tmc/asm/code_0801D79C.s

2580 lines
43 KiB
ArmAsm

.include "asm/macros.inc"
.include "constants/constants.inc"
.syntax unified
.text
thumb_func_start sub_0801D898
sub_0801D898: @ 0x0801D898
push {r4, r5, r6, r7, lr}
adds r5, r0, #0
adds r4, r1, #0
adds r6, r2, #0
movs r0, #0x80
lsls r0, r0, #8
ands r0, r3
movs r1, #0x20
mov ip, r1
cmp r0, #0
beq _0801D8B2
movs r0, #0x40
mov ip, r0
_0801D8B2:
ldr r0, _0801D8D8 @ =0x00007FFF
ands r3, r0
ldr r1, _0801D8DC @ =0x040000D4
movs r2, #0x80
lsls r2, r2, #0x18
orrs r2, r6
lsls r7, r6, #1
mov r0, ip
lsls r6, r0, #1
_0801D8C4:
str r4, [r1]
str r5, [r1, #4]
str r2, [r1, #8]
ldr r0, [r1, #8]
adds r4, r4, r7
adds r5, r5, r6
subs r3, #1
cmp r3, #0
bne _0801D8C4
pop {r4, r5, r6, r7, pc}
.align 2, 0
_0801D8D8: .4byte 0x00007FFF
_0801D8DC: .4byte 0x040000D4
thumb_func_start zMalloc
zMalloc: @ 0x0801D8E0
push {r4, r5, r6, r7, lr}
mov r7, sl
mov r6, sb
mov r5, r8
push {r5, r6, r7}
mov ip, r0
movs r0, #3
add ip, r0
subs r0, #7
mov r1, ip
ands r1, r0
mov ip, r1
ldr r6, _0801D90C @ =gzHeap
mov sb, r6
ldrh r7, [r6]
movs r5, #1
movs r3, #0x80
lsls r3, r3, #5
add r3, sb
subs r4, r3, r1
movs r2, #0
b _0801D926
.align 2, 0
_0801D90C: .4byte gzHeap
_0801D910:
cmp r1, r4
bhi _0801D918
cmp r3, r0
bls _0801D952
_0801D918:
cmp r4, r1
bhi _0801D920
cmp r0, r3
bls _0801D952
_0801D920:
adds r0, r2, #1
lsls r0, r0, #0x10
lsrs r2, r0, #0x10
_0801D926:
cmp r2, r7
bhs _0801D94A
lsls r0, r2, #2
add r0, sb
ldrh r1, [r0, #2]
ldr r6, _0801D95C @ =gzHeap
adds r1, r1, r6
ldrh r0, [r0, #4]
adds r0, r0, r6
cmp r1, r4
bhi _0801D940
cmp r4, r0
bls _0801D952
_0801D940:
cmp r1, r3
bhi _0801D910
cmp r3, r0
bhi _0801D910
movs r5, #0
_0801D94A:
lsls r0, r7, #2
mov sl, r0
cmp r5, #0
bne _0801D9D8
_0801D952:
movs r1, #0
mov r8, r1
lsls r6, r7, #2
mov sl, r6
b _0801D970
.align 2, 0
_0801D95C: .4byte gzHeap
_0801D960:
movs r5, #0
_0801D962:
mov r0, r8
adds r0, #1
lsls r0, r0, #0x10
lsrs r0, r0, #0x10
mov r8, r0
cmp r8, r7
bhs _0801D9D4
_0801D970:
mov r1, r8
lsls r0, r1, #2
add r0, sb
ldrh r0, [r0, #2]
ldr r6, _0801D994 @ =gzHeap
adds r3, r0, r6
mov r0, ip
subs r4, r3, r0
movs r5, #0
mov r0, sl
adds r0, #2
add r0, sb
adds r0, #4
cmp r4, r0
blo _0801D962
movs r5, #1
movs r2, #0
b _0801D9AE
.align 2, 0
_0801D994: .4byte gzHeap
_0801D998:
cmp r1, r4
bhi _0801D9A0
cmp r3, r0
bls _0801D960
_0801D9A0:
cmp r4, r1
bhi _0801D9A8
cmp r0, r3
bls _0801D960
_0801D9A8:
adds r0, r2, #1
lsls r0, r0, #0x10
lsrs r2, r0, #0x10
_0801D9AE:
cmp r2, r7
bhs _0801D9D0
lsls r0, r2, #2
add r0, sb
ldrh r1, [r0, #2]
adds r1, r1, r6
ldrh r0, [r0, #4]
adds r0, r0, r6
cmp r1, r4
bhi _0801D9C6
cmp r4, r0
blo _0801D960
_0801D9C6:
cmp r1, r3
bhs _0801D998
cmp r3, r0
bhi _0801D998
movs r5, #0
_0801D9D0:
cmp r5, #0
beq _0801D962
_0801D9D4:
cmp r5, #0
beq _0801DA00
_0801D9D8:
ldr r0, _0801D9FC @ =gUnk_02035542
mov r1, sl
adds r2, r1, r0
subs r3, r0, #2
subs r1, r4, r3
strh r1, [r2]
adds r0, #2
add r0, sl
add r1, ip
strh r1, [r0]
adds r0, r7, #1
strh r0, [r3]
adds r0, r4, #0
mov r1, ip
bl MemClear
adds r0, r4, #0
b _0801DA02
.align 2, 0
_0801D9FC: .4byte gUnk_02035542
_0801DA00:
movs r0, #0
_0801DA02:
pop {r3, r4, r5}
mov r8, r3
mov sb, r4
mov sl, r5
pop {r4, r5, r6, r7, pc}
thumb_func_start zFree
zFree: @ 0x0801DA0C
push {r4, r5, lr}
ldr r3, _0801DA44 @ =gzHeap
subs r1, r0, r3
ldr r0, _0801DA48 @ =0x00000FFF
cmp r1, r0
bhi _0801DA74
adds r4, r3, #0
ldrh r5, [r4]
adds r4, #2
movs r2, #0
cmp r2, r5
bhs _0801DA74
ldrh r0, [r4]
cmp r0, r1
bne _0801DA4C
lsls r0, r5, #2
subs r1, r3, #2
adds r0, r0, r1
ldrh r1, [r0]
strh r1, [r4]
strh r2, [r0]
adds r0, #2
ldrh r1, [r0]
strh r1, [r4, #2]
strh r2, [r0]
subs r0, r5, #1
strh r0, [r3]
b _0801DA74
.align 2, 0
_0801DA44: .4byte gzHeap
_0801DA48: .4byte 0x00000FFF
_0801DA4C:
adds r4, #4
adds r2, #1
cmp r2, r5
bhs _0801DA74
ldrh r0, [r4]
cmp r0, r1
bne _0801DA4C
lsls r1, r5, #2
ldr r3, _0801DA78 @ =gUnk_0203553E
adds r1, r1, r3
ldrh r0, [r1]
strh r0, [r4]
movs r2, #0
strh r2, [r1]
adds r1, #2
ldrh r0, [r1]
strh r0, [r4, #2]
strh r2, [r1]
subs r0, r5, #1
strh r0, [r3, #2]
_0801DA74:
pop {r4, r5, pc}
.align 2, 0
_0801DA78: .4byte gUnk_0203553E
thumb_func_start zMallocInit
zMallocInit: @ 0x0801DA7C
push {lr}
ldr r0, _0801DA8C @ =gzHeap
movs r1, #0x80
lsls r1, r1, #5
bl MemClear
pop {pc}
.align 2, 0
_0801DA8C: .4byte gzHeap
thumb_func_start DispReset
DispReset: @ 0x0801DA90
push {r4, r5, lr}
adds r4, r0, #0
ldr r1, _0801DAEC @ =gMain
ldrb r0, [r1]
movs r3, #0
movs r0, #1
strb r0, [r1]
ldr r0, _0801DAF0 @ =gUnk_03003DE0
strb r3, [r0]
ldr r0, _0801DAF4 @ =gFadeControl
strb r3, [r0]
ldr r5, _0801DAF8 @ =gScreen
adds r0, r5, #0
adds r0, #0x6d
strb r3, [r0]
subs r0, #1
strb r3, [r0]
ldr r1, _0801DAFC @ =0x040000B0
ldrh r2, [r1, #0xa]
ldr r0, _0801DB00 @ =0x0000C5FF
ands r0, r2
strh r0, [r1, #0xa]
ldrh r2, [r1, #0xa]
ldr r0, _0801DB04 @ =0x00007FFF
ands r0, r2
strh r0, [r1, #0xa]
ldrh r0, [r1, #0xa]
movs r0, #0x80
lsls r0, r0, #0x13
strh r3, [r0]
bl ClearOAM
bl sub_0801DB34
ldr r0, _0801DB08 @ =0x0600C000
movs r1, #0x20
bl MemClear
ldr r0, _0801DB0C @ =gBG0Buffer
movs r1, #0x80
lsls r1, r1, #4
bl MemClear
strh r4, [r5, #0xe]
pop {r4, r5, pc}
.align 2, 0
_0801DAEC: .4byte gMain
_0801DAF0: .4byte gUnk_03003DE0
_0801DAF4: .4byte gFadeControl
_0801DAF8: .4byte gScreen
_0801DAFC: .4byte 0x040000B0
_0801DB00: .4byte 0x0000C5FF
_0801DB04: .4byte 0x00007FFF
_0801DB08: .4byte 0x0600C000
_0801DB0C: .4byte gBG0Buffer
thumb_func_start ClearOAM
ClearOAM: @ 0x0801DB10
push {r4, lr}
ldr r3, _0801DB30 @ =gUnk_03000020
movs r1, #0xe0
lsls r1, r1, #0x13
movs r0, #0x80
movs r4, #0xa8
lsls r4, r4, #2
adds r2, r4, #0
_0801DB20:
strh r2, [r3]
adds r3, #8
strh r2, [r1]
adds r1, #8
subs r0, #1
cmp r0, #0
bne _0801DB20
pop {r4, pc}
.align 2, 0
_0801DB30: .4byte gUnk_03000020
thumb_func_start sub_0801DB34
sub_0801DB34: @ 0x0801DB34
push {r4, lr}
ldr r4, _0801DB6C @ =gScreen
adds r0, r4, #0
movs r1, #0x7c
bl MemClear
ldr r0, _0801DB70 @ =gBG0Buffer
str r0, [r4, #0x10]
ldr r0, _0801DB74 @ =0x00001F0C
strh r0, [r4, #8]
ldr r0, _0801DB78 @ =gBG1Buffer
str r0, [r4, #0x1c]
ldr r0, _0801DB7C @ =0x00001C01
strh r0, [r4, #0x14]
ldr r0, _0801DB80 @ =gBG2Buffer
str r0, [r4, #0x28]
ldr r0, _0801DB84 @ =0x00001D02
strh r0, [r4, #0x20]
ldr r0, _0801DB88 @ =gBG3Buffer
str r0, [r4, #0x34]
ldr r0, _0801DB8C @ =0x00001E03
strh r0, [r4, #0x2c]
movs r0, #0xa0
lsls r0, r0, #1
strh r0, [r4]
ldr r0, _0801DB90 @ =0x0000FFFF
strh r0, [r4, #6]
pop {r4, pc}
.align 2, 0
_0801DB6C: .4byte gScreen
_0801DB70: .4byte gBG0Buffer
_0801DB74: .4byte 0x00001F0C
_0801DB78: .4byte gBG1Buffer
_0801DB7C: .4byte 0x00001C01
_0801DB80: .4byte gBG2Buffer
_0801DB84: .4byte 0x00001D02
_0801DB88: .4byte gBG3Buffer
_0801DB8C: .4byte 0x00001E03
_0801DB90: .4byte 0x0000FFFF
thumb_func_start sub_0801DB94
sub_0801DB94: @ 0x0801DB94
ldr r0, _0801DB9C @ =gScreenTransition
ldrh r0, [r0, #0x1e]
lsrs r0, r0, #0xb
bx lr
.align 2, 0
_0801DB9C: .4byte gScreenTransition
thumb_func_start sub_0801DBA0
sub_0801DBA0: @ 0x0801DBA0
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
adds r1, r2, #0
adds r0, r5, #0
bl MemClear
movs r0, #1
strb r0, [r5]
ldr r2, _0801DBE4 @ =gScreenTransition
ldrh r0, [r2, #0x1c]
lsrs r0, r0, #4
movs r1, #0x7f
ands r0, r1
strb r0, [r5, #1]
ldrh r0, [r2, #0x1e]
lsrs r0, r0, #4
ands r0, r1
strb r0, [r5, #2]
adds r5, #3
ldr r1, _0801DBE8 @ =gUnk_080C9C50
ldr r0, _0801DBEC @ =gArea
ldrb r0, [r0, #3]
lsls r0, r0, #2
adds r0, r0, r1
ldr r0, [r0]
lsls r4, r4, #2
adds r4, r4, r0
ldr r6, [r4]
b _0801DD3A
.align 2, 0
_0801DBE4: .4byte gScreenTransition
_0801DBE8: .4byte gUnk_080C9C50
_0801DBEC: .4byte gArea
_0801DBF0:
ldrb r0, [r6]
ldrb r1, [r6, #1]
movs r2, #3
bl GetRoomProperty
adds r4, r0, #0
cmp r4, #0
bne _0801DC04
adds r6, #8
b _0801DD3A
_0801DC04:
adds r0, r6, #0
bl sub_0801DF10
mov r8, r0
bl sub_0805279C
movs r1, #8
adds r1, r1, r6
mov sb, r1
cmp r0, #0
beq _0801DCAE
ldrb r0, [r4]
cmp r0, #0
beq _0801DCAE
movs r3, #0xfc
lsls r3, r3, #2
ldr r7, _0801DC84 @ =0x000007FF
_0801DC26:
ldrb r0, [r4]
cmp r0, #3
bgt _0801DCA6
cmp r0, #2
blt _0801DCA6
ldrb r1, [r4, #1]
mov r0, r8
str r3, [sp]
bl CheckLocalFlagByOffset
ldr r3, [sp]
cmp r0, #0
bne _0801DCA6
ldr r0, _0801DC88 @ =gAreaRoomHeaders
ldrb r2, [r6]
lsls r2, r2, #2
adds r2, r2, r0
ldrb r1, [r6, #1]
lsls r0, r1, #2
adds r0, r0, r1
lsls r0, r0, #1
ldr r1, [r2]
adds r2, r1, r0
movs r0, #2
strb r0, [r5]
ldrb r0, [r4]
cmp r0, #2
bne _0801DC8C
ldrh r0, [r4, #4]
lsls r0, r0, #4
ands r0, r3
movs r1, #8
orrs r0, r1
ldrh r1, [r2]
ands r1, r7
adds r0, r0, r1
asrs r0, r0, #4
strb r0, [r5, #1]
ldrh r0, [r4, #4]
lsrs r0, r0, #2
ands r0, r3
movs r1, #8
orrs r0, r1
ldrh r1, [r2, #2]
ands r1, r7
b _0801DC9E
.align 2, 0
_0801DC84: .4byte 0x000007FF
_0801DC88: .4byte gAreaRoomHeaders
_0801DC8C:
ldrh r0, [r2]
ands r0, r7
ldrh r1, [r4, #4]
adds r0, r0, r1
asrs r0, r0, #4
strb r0, [r5, #1]
ldrh r0, [r2, #2]
ands r0, r7
ldrh r1, [r4, #6]
_0801DC9E:
adds r0, r0, r1
asrs r0, r0, #4
strb r0, [r5, #2]
adds r5, #3
_0801DCA6:
adds r4, #8
ldrb r0, [r4]
cmp r0, #0
bne _0801DC26
_0801DCAE:
bl sub_0805279C
cmp r0, #0
beq _0801DD16
ldrb r1, [r6, #2]
movs r0, #2
ands r0, r1
cmp r0, #0
beq _0801DD16
ldr r0, _0801DD4C @ =gArea
ldrb r0, [r0, #3]
adds r0, #1
bl CheckGlobalFlag
cmp r0, #0
bne _0801DD16
ldr r0, _0801DD50 @ =gAreaRoomHeaders
ldrb r2, [r6]
lsls r2, r2, #2
adds r2, r2, r0
ldrb r1, [r6, #1]
lsls r0, r1, #2
adds r0, r0, r1
lsls r0, r0, #1
ldr r1, [r2]
adds r2, r1, r0
movs r0, #4
strb r0, [r5]
ldrh r0, [r2, #4]
lsrs r0, r0, #1
ldrh r1, [r2]
adds r0, r0, r1
asrs r1, r0, #4
adds r0, r1, #0
cmp r1, #0
bge _0801DCF8
adds r0, #0x7f
_0801DCF8:
asrs r0, r0, #7
lsls r0, r0, #7
subs r0, r1, r0
strb r0, [r5, #1]
ldrh r0, [r2, #6]
lsrs r0, r0, #1
ldrh r2, [r2, #2]
adds r0, r0, r2
asrs r1, r0, #4
adds r0, r1, #0
asrs r0, r0, #7
lsls r0, r0, #7
subs r0, r1, r0
strb r0, [r5, #2]
adds r5, #3
_0801DD16:
ldr r2, _0801DD54 @ =gScreenTransition
ldrh r0, [r6]
ldrh r1, [r2, #0x16]
cmp r0, r1
bne _0801DD38
movs r0, #3
strb r0, [r5]
ldrh r0, [r2, #0x18]
lsrs r0, r0, #4
movs r1, #0x7f
ands r0, r1
strb r0, [r5, #1]
ldrh r0, [r2, #0x1a]
lsrs r0, r0, #4
ands r0, r1
strb r0, [r5, #2]
adds r5, #3
_0801DD38:
mov r6, sb
_0801DD3A:
ldrb r0, [r6]
cmp r0, #0
beq _0801DD42
b _0801DBF0
_0801DD42:
add sp, #4
pop {r3, r4}
mov r8, r3
mov sb, r4
pop {r4, r5, r6, r7, pc}
.align 2, 0
_0801DD4C: .4byte gArea
_0801DD50: .4byte gAreaRoomHeaders
_0801DD54: .4byte gScreenTransition
thumb_func_start sub_0801DD58
sub_0801DD58: @ 0x0801DD58
ldr r2, _0801DD7C @ =gAreaRoomHeaders
lsls r0, r0, #2
adds r0, r0, r2
lsls r2, r1, #2
adds r2, r2, r1
lsls r2, r2, #1
ldr r3, [r0]
adds r3, r3, r2
ldr r0, _0801DD80 @ =gArea
ldr r1, _0801DD84 @ =0x0000085C
adds r0, r0, r1
ldr r2, [r0]
ldrh r1, [r3]
strh r1, [r2, #4]
ldr r1, [r0]
ldrh r0, [r3, #2]
strh r0, [r1, #6]
bx lr
.align 2, 0
_0801DD7C: .4byte gAreaRoomHeaders
_0801DD80: .4byte gArea
_0801DD84: .4byte 0x0000085C
thumb_func_start LoadDungeonMap
LoadDungeonMap: @ 0x0801DD88
push {lr}
ldr r0, _0801DD98 @ =gUnk_0201AEE0
ldr r1, _0801DD9C @ =0x06006000
movs r2, #0x80
lsls r2, r2, #6
bl LoadResourceAsync
pop {pc}
.align 2, 0
_0801DD98: .4byte gUnk_0201AEE0
_0801DD9C: .4byte 0x06006000
thumb_func_start sub_0801DDA0
sub_0801DDA0: @ 0x0801DDA0
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
bl sub_08052690
cmp r0, #0
bne _0801DDB8
b _0801DEEA
_0801DDB8:
ldr r1, _0801DDD8 @ =gUnk_080C9C50
ldr r0, _0801DDDC @ =gArea
ldrb r0, [r0, #3]
lsls r0, r0, #2
adds r0, r0, r1
ldr r1, [r0]
lsls r0, r4, #2
adds r0, r0, r1
ldr r4, [r0]
ldr r0, _0801DDE0 @ =gUnk_02019EE0
movs r1, #0x80
lsls r1, r1, #8
bl MemClear
b _0801DEE2
.align 2, 0
_0801DDD8: .4byte gUnk_080C9C50
_0801DDDC: .4byte gArea
_0801DDE0: .4byte gUnk_02019EE0
_0801DDE4:
ldrb r0, [r4]
ldrb r1, [r4, #1]
movs r2, #3
bl GetRoomProperty
adds r6, r0, #0
adds r0, r4, #0
bl sub_0801DF10
adds r5, r0, #0
movs r0, #0
str r0, [sp, #0xc]
ldrh r2, [r4]
ldr r0, _0801DE14 @ =gUnk_02032EC0
ldrh r3, [r0, #0x20]
ldr r1, _0801DE18 @ =0x0000FFFF
ands r1, r2
ldr r0, _0801DE18 @ =0x0000FFFF
ands r0, r3
cmp r1, r0
bne _0801DE1C
movs r3, #8
b _0801DE36
.align 2, 0
_0801DE14: .4byte gUnk_02032EC0
_0801DE18: .4byte 0x0000FFFF
_0801DE1C:
bl sub_080527CC
cmp r0, #0
beq _0801DE28
movs r0, #2
str r0, [sp, #0xc]
_0801DE28:
adds r0, r6, #0
adds r1, r5, #0
bl sub_0801DF90
cmp r0, #0
beq _0801DE38
movs r3, #3
_0801DE36:
str r3, [sp, #0xc]
_0801DE38:
ldrb r1, [r4, #2]
movs r0, #1
ands r0, r1
cmp r0, #0
beq _0801DE46
movs r0, #0
str r0, [sp, #0xc]
_0801DE46:
adds r3, r4, #0
adds r3, #8
str r3, [sp, #0x10]
ldr r0, [sp, #0xc]
cmp r0, #0
beq _0801DEE0
ldr r2, _0801DEF8 @ =0x040000D4
ldr r0, [r4, #4]
ldr r1, _0801DEFC @ =gUnk_08324AE4
adds r0, r0, r1
str r0, [r2]
ldr r0, _0801DF00 @ =gUnk_02019EE0
str r0, [r2, #4]
ldr r0, _0801DF04 @ =0x84000100
str r0, [r2, #8]
ldr r0, [r2, #8]
ldr r0, _0801DF08 @ =gAreaRoomHeaders
ldrb r2, [r4]
lsls r2, r2, #2
adds r2, r2, r0
ldrb r1, [r4, #1]
lsls r0, r1, #2
adds r0, r0, r1
lsls r0, r0, #1
ldr r2, [r2]
adds r2, r2, r0
ldrh r0, [r2]
lsrs r0, r0, #4
str r0, [sp]
ldrh r0, [r2, #2]
ldr r1, _0801DF0C @ =0x000007FF
ands r0, r1
lsrs r0, r0, #4
str r0, [sp, #4]
ldrh r0, [r2, #4]
lsrs r7, r0, #4
ldrh r0, [r2, #6]
lsrs r0, r0, #4
mov sl, r0
adds r0, r7, #3
lsrs r0, r0, #2
str r0, [sp, #8]
movs r6, #0
cmp r6, sl
bhs _0801DEE0
_0801DEA0:
ldr r3, [sp, #8]
adds r1, r6, #0
muls r1, r3, r1
ldr r0, _0801DF00 @ =gUnk_02019EE0
adds r1, r1, r0
mov r8, r1
movs r5, #0
adds r0, r6, #1
mov sb, r0
cmp r5, r7
bhs _0801DEDA
_0801DEB6:
ldr r3, [sp]
adds r4, r3, r5
adds r0, r5, #0
mov r1, r8
bl sub_0801DF60
ldr r1, [sp, #0xc]
bl sub_0801DF78
adds r2, r0, #0
adds r0, r4, #0
ldr r3, [sp, #4]
adds r1, r3, r6
bl sub_0801DF28
adds r5, #1
cmp r5, r7
blo _0801DEB6
_0801DEDA:
mov r6, sb
cmp r6, sl
blo _0801DEA0
_0801DEE0:
ldr r4, [sp, #0x10]
_0801DEE2:
ldrb r0, [r4]
cmp r0, #0
beq _0801DEEA
b _0801DDE4
_0801DEEA:
add sp, #0x14
pop {r3, r4, r5}
mov r8, r3
mov sb, r4
mov sl, r5
pop {r4, r5, r6, r7, pc}
.align 2, 0
_0801DEF8: .4byte 0x040000D4
_0801DEFC: .4byte gUnk_08324AE4
_0801DF00: .4byte gUnk_02019EE0
_0801DF04: .4byte 0x84000100
_0801DF08: .4byte gAreaRoomHeaders
_0801DF0C: .4byte 0x000007FF
thumb_func_start sub_0801DF10
sub_0801DF10: @ 0x0801DF10
push {lr}
adds r1, r0, #0
ldrb r0, [r1, #3]
cmp r0, #1
bne _0801DF20
movs r0, #0xc0
lsls r0, r0, #2
b _0801DF26
_0801DF20:
ldrb r0, [r1]
bl sub_08052D58
_0801DF26:
pop {pc}
thumb_func_start sub_0801DF28
sub_0801DF28: @ 0x0801DF28
push {r4, lr}
lsrs r4, r1, #3
lsls r4, r4, #4
lsrs r3, r0, #3
adds r4, r4, r3
lsls r4, r4, #5
ldr r3, _0801DF58 @ =gUnk_0201AEE0
adds r4, r4, r3
movs r3, #7
ands r1, r3
lsls r1, r1, #2
adds r4, r4, r1
ands r0, r3
lsls r0, r0, #2
lsls r2, r0
ldr r1, _0801DF5C @ =gUnk_080C9460
adds r0, r0, r1
ldr r1, [r4]
ldr r0, [r0]
ands r1, r0
orrs r1, r2
str r1, [r4]
pop {r4, pc}
.align 2, 0
_0801DF58: .4byte gUnk_0201AEE0
_0801DF5C: .4byte gUnk_080C9460
thumb_func_start sub_0801DF60
sub_0801DF60: @ 0x0801DF60
adds r3, r0, #0
lsrs r0, r3, #2
adds r0, r0, r1
ldrb r0, [r0]
movs r2, #3
adds r1, r2, #0
bics r1, r3
lsls r1, r1, #1
asrs r0, r1
ands r0, r2
bx lr
.align 2, 0
thumb_func_start sub_0801DF78
sub_0801DF78: @ 0x0801DF78
push {lr}
cmp r0, #2
beq _0801DF88
cmp r0, #2
blo _0801DF8E
cmp r0, #3
beq _0801DF8C
b _0801DF8E
_0801DF88:
adds r0, r1, #0
b _0801DF8E
_0801DF8C:
movs r0, #7
_0801DF8E:
pop {pc}
thumb_func_start sub_0801DF90
sub_0801DF90: @ 0x0801DF90
push {lr}
adds r2, r1, #0
cmp r0, #0
bne _0801DFAA
b _0801DFB0
_0801DF9A:
ldrb r1, [r0, #1]
adds r0, r2, #0
bl CheckLocalFlagByOffset
b _0801DFB2
_0801DFA4:
cmp r1, #1
beq _0801DF9A
adds r0, #8
_0801DFAA:
ldrb r1, [r0]
cmp r1, #0
bne _0801DFA4
_0801DFB0:
movs r0, #0
_0801DFB2:
pop {pc}
thumb_func_start sub_0801DFB4
sub_0801DFB4: @ 0x0801DFB4
push {r4, r5, r6, r7, lr}
mov r7, r8
push {r7}
mov r8, r0
adds r4, r1, #0
adds r5, r2, #0
adds r6, r3, #0
ldr r7, _0801E004 @ =gUnk_02022740
adds r0, r7, #0
movs r1, #0x10
bl MemClear
strh r4, [r7, #6]
strh r5, [r7, #8]
strh r6, [r7, #0xa]
mov r0, r8
str r0, [r7, #0xc]
ldr r0, _0801E008 @ =gUnk_03003DF0
ldrb r0, [r0, #2]
strb r0, [r7, #3]
mov r1, r8
cmp r1, #0
beq _0801DFF8
ldrb r1, [r1, #0x11]
lsls r0, r1, #0x1c
lsrs r0, r0, #0x1c
strb r0, [r7, #4]
movs r0, #0x10
rsbs r0, r0, #0
ands r0, r1
movs r1, #2
orrs r0, r1
mov r1, r8
strb r0, [r1, #0x11]
_0801DFF8:
movs r0, #0
strb r0, [r7]
pop {r3}
mov r8, r3
pop {r4, r5, r6, r7, pc}
.align 2, 0
_0801E004: .4byte gUnk_02022740
_0801E008: .4byte gUnk_03003DF0
thumb_func_start sub_0801E00C
sub_0801E00C: @ 0x0801E00C
push {r4, lr}
ldr r1, _0801E024 @ =gUnk_080C9CAC
ldr r4, _0801E028 @ =gUnk_02022740
ldrb r0, [r4, #1]
lsls r0, r0, #2
adds r0, r0, r1
ldr r0, [r0]
bl _call_via_r0
ldrb r0, [r4]
pop {r4, pc}
.align 2, 0
_0801E024: .4byte gUnk_080C9CAC
_0801E028: .4byte gUnk_02022740
thumb_func_start sub_0801E02C
sub_0801E02C: @ 0x0801E02C
push {r4, lr}
ldr r4, _0801E040 @ =gUnk_02022740
ldrh r0, [r4, #6]
bl sub_0801E0E0
movs r0, #3
strb r0, [r4]
movs r0, #1
strb r0, [r4, #1]
pop {r4, pc}
.align 2, 0
_0801E040: .4byte gUnk_02022740
thumb_func_start sub_0801E044
sub_0801E044: @ 0x0801E044
push {lr}
ldr r0, _0801E06C @ =gTextBox
ldrb r1, [r0]
movs r0, #0x7f
ands r0, r1
cmp r0, #0
bne _0801E06A
movs r0, #4
movs r1, #0
bl MenuFadeIn
ldr r0, _0801E070 @ =gUnk_02022740
movs r1, #4
strb r1, [r0]
movs r1, #2
strb r1, [r0, #1]
movs r0, #0x6b
bl SoundReq
_0801E06A:
pop {pc}
.align 2, 0
_0801E06C: .4byte gTextBox
_0801E070: .4byte gUnk_02022740
thumb_func_start sub_0801E074
sub_0801E074: @ 0x0801E074
push {lr}
ldr r0, _0801E084 @ =gUnk_02022740
ldrb r1, [r0]
cmp r1, #5
beq _0801E088
cmp r1, #6
beq _0801E08C
b _0801E098
.align 2, 0
_0801E084: .4byte gUnk_02022740
_0801E088:
ldrh r0, [r0, #8]
b _0801E08E
_0801E08C:
ldrh r0, [r0, #0xa]
_0801E08E:
bl sub_0801E0E0
ldr r1, _0801E09C @ =gUnk_02022740
movs r0, #3
strb r0, [r1, #1]
_0801E098:
pop {pc}
.align 2, 0
_0801E09C: .4byte gUnk_02022740
thumb_func_start sub_0801E0A0
sub_0801E0A0: @ 0x0801E0A0
push {r4, lr}
ldr r0, _0801E0D8 @ =gTextBox
ldrb r1, [r0]
movs r0, #0x7f
ands r0, r1
cmp r0, #0
bne _0801E0D4
ldr r4, _0801E0DC @ =gUnk_02022740
ldr r3, [r4, #0xc]
cmp r3, #0
beq _0801E0C8
ldrb r0, [r4, #4]
movs r1, #0xf
ands r1, r0
ldrb r2, [r3, #0x11]
movs r0, #0x10
rsbs r0, r0, #0
ands r0, r2
orrs r0, r1
strb r0, [r3, #0x11]
_0801E0C8:
ldrb r0, [r4]
movs r1, #1
cmp r0, #6
bne _0801E0D2
movs r1, #2
_0801E0D2:
strb r1, [r4]
_0801E0D4:
pop {r4, pc}
.align 2, 0
_0801E0D8: .4byte gTextBox
_0801E0DC: .4byte gUnk_02022740
thumb_func_start sub_0801E0E0
sub_0801E0E0: @ 0x0801E0E0
push {lr}
adds r2, r0, #0
cmp r2, #0
beq _0801E102
ldr r0, _0801E0F8 @ =gUnk_02022740
ldr r1, [r0, #0xc]
cmp r1, #0
beq _0801E0FC
adds r0, r2, #0
bl TextboxNoOverlap
b _0801E102
.align 2, 0
_0801E0F8: .4byte gUnk_02022740
_0801E0FC:
adds r0, r2, #0
bl TextboxNoOverlapFollow
_0801E102:
pop {pc}
thumb_func_start sub_0801E104
sub_0801E104: @ 0x0801E104
ldr r1, _0801E118 @ =gScreen
ldrh r2, [r1]
ldr r0, _0801E11C @ =0x00009FFF
ands r0, r2
movs r2, #0
strh r0, [r1]
adds r1, #0x6c
strb r2, [r1]
bx lr
.align 2, 0
_0801E118: .4byte gScreen
_0801E11C: .4byte 0x00009FFF
thumb_func_start sub_0801E120
sub_0801E120: @ 0x0801E120
ldr r3, _0801E14C @ =gScreen
ldrh r1, [r3]
movs r2, #0x80
lsls r2, r2, #6
adds r0, r2, #0
movs r2, #0
orrs r0, r1
strh r0, [r3]
adds r1, r3, #0
adds r1, #0x60
ldr r0, _0801E150 @ =0x00003F37
strh r0, [r1]
adds r1, #2
movs r0, #0x3f
strh r0, [r1]
adds r0, r3, #0
adds r0, #0x58
strh r2, [r0]
subs r1, #6
movs r0, #0xa0
strh r0, [r1]
bx lr
.align 2, 0
_0801E14C: .4byte gScreen
_0801E150: .4byte 0x00003F37
thumb_func_start sub_0801E154
sub_0801E154: @ 0x0801E154
push {lr}
movs r1, #0
bl sub_0801E24C
pop {pc}
.align 2, 0
thumb_func_start sub_0801E160
sub_0801E160: @ 0x0801E160
push {r4, r5, r6, lr}
mov r6, sb
mov r5, r8
push {r5, r6}
adds r6, r0, #0
mov r8, r1
mov sb, r2
ldr r5, _0801E1A8 @ =gUnk_03003DE4
ldrb r1, [r5]
lsls r0, r1, #2
adds r0, r0, r1
lsls r0, r0, #9
ldr r4, _0801E1AC @ =gUnk_02017AA0
adds r0, r0, r4
movs r1, #0xa0
lsls r1, r1, #4
bl MemClear
adds r0, r6, #0
mov r1, r8
mov r2, sb
bl sub_0801E290
ldrb r1, [r5]
lsls r0, r1, #2
adds r0, r0, r1
lsls r0, r0, #9
adds r0, r0, r4
ldr r1, _0801E1B0 @ =0x04000040
ldr r2, _0801E1B4 @ =0xA2600001
bl sub_0805622C
pop {r3, r4}
mov r8, r3
mov sb, r4
pop {r4, r5, r6, pc}
.align 2, 0
_0801E1A8: .4byte gUnk_03003DE4
_0801E1AC: .4byte gUnk_02017AA0
_0801E1B0: .4byte 0x04000040
_0801E1B4: .4byte 0xA2600001
thumb_func_start sub_0801E1B8
sub_0801E1B8: @ 0x0801E1B8
push {r4, lr}
ldr r2, _0801E1E8 @ =gScreen
mov ip, r2
ldrh r3, [r2]
movs r4, #0x80
lsls r4, r4, #6
adds r2, r4, #0
movs r4, #0
orrs r2, r3
mov r3, ip
strh r2, [r3]
mov r2, ip
adds r2, #0x60
strh r0, [r2]
mov r0, ip
adds r0, #0x62
strh r1, [r0]
subs r0, #0xa
strh r4, [r0]
mov r1, ip
adds r1, #0x5c
movs r0, #0xa0
strh r0, [r1]
pop {r4, pc}
.align 2, 0
_0801E1E8: .4byte gScreen
thumb_func_start sub_0801E1EC
sub_0801E1EC: @ 0x0801E1EC
push {r4, r5, r6, lr}
mov r6, sb
mov r5, r8
push {r5, r6}
mov r8, r0
mov sb, r1
adds r4, r2, #0
ldr r6, _0801E23C @ =gUnk_03003DE4
ldrb r1, [r6]
lsls r0, r1, #2
adds r0, r0, r1
lsls r0, r0, #9
ldr r5, _0801E240 @ =gUnk_02017AA0
adds r0, r0, r5
movs r1, #0xa0
lsls r1, r1, #4
bl MemClear
adds r0, r4, #0
movs r1, #0
bl sub_0801E24C
mov r0, r8
mov r1, sb
adds r2, r4, #0
bl sub_0801E290
ldrb r1, [r6]
lsls r0, r1, #2
adds r0, r0, r1
lsls r0, r0, #9
adds r0, r0, r5
ldr r1, _0801E244 @ =0x04000040
ldr r2, _0801E248 @ =0xA2600001
bl sub_0805622C
pop {r3, r4}
mov r8, r3
mov sb, r4
pop {r4, r5, r6, pc}
.align 2, 0
_0801E23C: .4byte gUnk_03003DE4
_0801E240: .4byte gUnk_02017AA0
_0801E244: .4byte 0x04000040
_0801E248: .4byte 0xA2600001
thumb_func_start sub_0801E24C
sub_0801E24C: @ 0x0801E24C
push {r4, r5, lr}
lsls r1, r1, #1
ldr r2, _0801E278 @ =gUnk_02018EE0
adds r5, r1, r2
movs r3, #0
adds r2, r0, #0
lsls r4, r2, #1
movs r0, #3
subs r1, r0, r4
cmp r3, r2
bgt _0801E28E
adds r4, r4, r5
_0801E264:
lsls r0, r3, #1
adds r0, r0, r5
strh r2, [r0]
strh r3, [r4]
cmp r1, #0
bge _0801E27C
adds r1, #6
lsls r0, r3, #2
adds r1, r1, r0
b _0801E288
.align 2, 0
_0801E278: .4byte gUnk_02018EE0
_0801E27C:
adds r1, #0xa
subs r0, r3, r2
lsls r0, r0, #2
adds r1, r1, r0
subs r4, #2
subs r2, #1
_0801E288:
adds r3, #1
cmp r3, r2
ble _0801E264
_0801E28E:
pop {r4, r5, pc}
thumb_func_start sub_0801E290
sub_0801E290: @ 0x0801E290
push {r4, r5, r6, r7, lr}
mov r7, sb
mov r6, r8
push {r6, r7}
mov ip, r0
adds r6, r2, #0
ldr r0, _0801E2BC @ =gUnk_03003DE4
ldrb r0, [r0]
lsls r2, r0, #2
adds r2, r2, r0
lsls r2, r2, #9
lsls r0, r1, #1
ldr r3, _0801E2C0 @ =gUnk_02017AA0
adds r0, r0, r3
adds r2, r2, r0
adds r4, r2, #0
adds r5, r1, #0
mov sb, r5
ldr r0, _0801E2C4 @ =gUnk_02018EE0
mov r8, r0
b _0801E30A
.align 2, 0
_0801E2BC: .4byte gUnk_03003DE4
_0801E2C0: .4byte gUnk_02017AA0
_0801E2C4: .4byte gUnk_02018EE0
_0801E2C8:
mov r1, r8
movs r3, #0
ldrsh r0, [r1, r3]
movs r7, #2
add r8, r7
mov r3, ip
subs r1, r3, r0
adds r3, r3, r0
cmp r1, #0
bge _0801E2DE
movs r1, #0
_0801E2DE:
cmp r3, #0xef
ble _0801E2E4
movs r3, #0xf0
_0801E2E4:
mov r7, sb
lsls r0, r7, #0x10
lsrs r0, r0, #0x10
cmp r0, #0x9f
bhi _0801E2F2
strb r3, [r4]
strb r1, [r4, #1]
_0801E2F2:
lsls r0, r5, #0x10
lsrs r0, r0, #0x10
cmp r0, #0x9f
bhi _0801E2FE
strb r3, [r2]
strb r1, [r2, #1]
_0801E2FE:
subs r4, #2
adds r2, #2
movs r0, #1
rsbs r0, r0, #0
add sb, r0
adds r5, #1
_0801E30A:
adds r0, r6, #0
subs r6, #1
cmp r0, #0
bne _0801E2C8
pop {r3, r4}
mov r8, r3
mov sb, r4
pop {r4, r5, r6, r7, pc}
.align 2, 0
thumb_func_start sub_0801E31C
sub_0801E31C: @ 0x0801E31C
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]
str r1, [sp, #4]
mov sl, r2
mov sb, r3
ldr r0, _0801E3AC @ =gUnk_03003DE4
ldrb r1, [r0]
lsls r0, r1, #2
adds r0, r0, r1
lsls r0, r0, #9
ldr r1, _0801E3B0 @ =gUnk_02017AA0
adds r0, r0, r1
movs r1, #0xa0
lsls r1, r1, #4
bl MemClear
cmp sl, sb
bge _0801E3DC
movs r6, #0
mov r8, sl
mov r7, r8
mov r0, r8
lsls r1, r0, #1
movs r0, #3
subs r5, r0, r1
cmp r6, r8
ble _0801E35E
b _0801E45E
_0801E35E:
mov r1, r8
lsls r0, r1, #2
ldr r4, _0801E3B4 @ =gUnk_02018EE0
adds r0, r0, r4
str r0, [sp, #0x10]
mov r1, sb
mov r0, r8
muls r0, r1, r0
str r0, [sp, #0x14]
movs r3, #0
_0801E372:
adds r0, r3, #0
mov r1, sl
str r3, [sp, #0x18]
bl Div
adds r4, r0, #0
lsls r4, r4, #0x10
lsrs r4, r4, #0x10
str r4, [sp, #0x1c]
ldr r0, [sp, #0x14]
mov r1, sl
bl Div
lsls r0, r0, #0x10
lsrs r0, r0, #0x10
lsls r2, r6, #2
ldr r4, _0801E3B4 @ =gUnk_02018EE0
adds r1, r2, r4
str r0, [r1]
ldr r0, [sp, #0x1c]
ldr r1, [sp, #0x10]
str r0, [r1]
ldr r3, [sp, #0x18]
cmp r5, #0
bge _0801E3B8
adds r0, r5, #6
adds r5, r0, r2
b _0801E3D2
.align 2, 0
_0801E3AC: .4byte gUnk_03003DE4
_0801E3B0: .4byte gUnk_02017AA0
_0801E3B4: .4byte gUnk_02018EE0
_0801E3B8:
adds r1, r5, #0
adds r1, #0xa
subs r0, r6, r7
lsls r0, r0, #2
adds r5, r1, r0
ldr r4, [sp, #0x10]
subs r4, #4
str r4, [sp, #0x10]
ldr r0, [sp, #0x14]
mov r1, sb
subs r0, r0, r1
str r0, [sp, #0x14]
subs r7, #1
_0801E3D2:
add r3, sb
adds r6, #1
cmp r6, r7
ble _0801E372
b _0801E45E
_0801E3DC:
movs r6, #0
mov r8, sb
mov r7, r8
mov r4, r8
lsls r1, r4, #1
movs r0, #3
subs r5, r0, r1
cmp r6, r8
bgt _0801E45E
lsls r0, r4, #2
ldr r1, _0801E438 @ =gUnk_02018EE0
adds r0, r0, r1
str r0, [sp, #8]
mov r0, sl
mov r4, r8
muls r4, r0, r4
str r4, [sp, #0xc]
movs r3, #0
_0801E400:
adds r0, r3, #0
mov r1, sb
str r3, [sp, #0x18]
bl Div
adds r4, r0, #0
lsls r4, r4, #0x10
lsrs r4, r4, #0x10
str r4, [sp, #0x1c]
ldr r0, [sp, #0xc]
mov r1, sb
bl Div
lsls r0, r0, #0x10
lsrs r0, r0, #0x10
lsls r2, r6, #2
ldr r4, _0801E438 @ =gUnk_02018EE0
adds r1, r2, r4
str r0, [r1]
ldr r0, [sp, #0x1c]
ldr r1, [sp, #8]
str r0, [r1]
ldr r3, [sp, #0x18]
cmp r5, #0
bge _0801E43C
adds r0, r5, #6
adds r5, r0, r2
b _0801E456
.align 2, 0
_0801E438: .4byte gUnk_02018EE0
_0801E43C:
adds r1, r5, #0
adds r1, #0xa
subs r0, r6, r7
lsls r0, r0, #2
adds r5, r1, r0
ldr r4, [sp, #8]
subs r4, #4
str r4, [sp, #8]
ldr r0, [sp, #0xc]
mov r1, sl
subs r0, r0, r1
str r0, [sp, #0xc]
subs r7, #1
_0801E456:
add r3, sl
adds r6, #1
cmp r6, r7
ble _0801E400
_0801E45E:
ldr r0, [sp]
ldr r1, [sp, #4]
mov r2, r8
bl sub_0801E290
ldr r0, _0801E48C @ =gUnk_03003DE4
ldrb r1, [r0]
lsls r0, r1, #2
adds r0, r0, r1
lsls r0, r0, #9
ldr r1, _0801E490 @ =gUnk_02017AA0
adds r0, r0, r1
ldr r1, _0801E494 @ =0x04000040
ldr r2, _0801E498 @ =0xA2600001
bl sub_0805622C
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
_0801E48C: .4byte gUnk_03003DE4
_0801E490: .4byte gUnk_02017AA0
_0801E494: .4byte 0x04000040
_0801E498: .4byte 0xA2600001
thumb_func_start sub_0801E49C
sub_0801E49C: @ 0x0801E49C
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, #4]
mov sb, r2
adds r5, r3, #0
ldr r0, _0801E5E4 @ =0x0000FFFF
movs r2, #0xf0
lsls r2, r2, #3
ldr r1, _0801E5E8 @ =gUnk_02018EE0
bl MemFill16
adds r3, r5, #0
subs r3, #0x40
movs r2, #0xff
ands r3, r2
ldr r1, _0801E5EC @ =gSineTable
adds r0, r3, #0
adds r0, #0x40
lsls r0, r0, #1
adds r0, r0, r1
movs r4, #0
ldrsh r0, [r0, r4]
mov r4, sb
muls r4, r0, r4
adds r0, r4, #0
asrs r0, r0, #8
mov r4, r8
adds r7, r4, r0
lsls r0, r3, #1
adds r0, r0, r1
movs r3, #0
ldrsh r0, [r0, r3]
mov r4, sb
muls r4, r0, r4
adds r0, r4, #0
asrs r0, r0, #8
ldr r3, [sp, #4]
adds r3, r3, r0
mov sl, r3
adds r3, r5, #0
adds r3, #0x68
ands r3, r2
adds r0, r3, #0
adds r0, #0x40
lsls r0, r0, #1
adds r0, r0, r1
movs r4, #0
ldrsh r0, [r0, r4]
mov r4, sb
muls r4, r0, r4
adds r0, r4, #0
asrs r0, r0, #8
mov r4, r8
adds r6, r4, r0
lsls r0, r3, #1
adds r0, r0, r1
movs r3, #0
ldrsh r0, [r0, r3]
mov r4, sb
muls r4, r0, r4
adds r0, r4, #0
asrs r0, r0, #8
ldr r3, [sp, #4]
adds r4, r3, r0
adds r3, r5, #0
subs r3, #0xe8
ands r3, r2
adds r0, r3, #0
adds r0, #0x40
lsls r0, r0, #1
adds r0, r0, r1
movs r2, #0
ldrsh r0, [r0, r2]
mov r2, sb
muls r2, r0, r2
adds r0, r2, #0
asrs r0, r0, #8
mov r2, r8
adds r5, r2, r0
lsls r0, r3, #1
adds r0, r0, r1
movs r3, #0
ldrsh r0, [r0, r3]
mov r1, sb
muls r1, r0, r1
adds r0, r1, #0
asrs r0, r0, #8
ldr r2, [sp, #4]
adds r2, r2, r0
mov r8, r2
movs r0, #0
str r0, [sp]
adds r0, r7, #0
mov r1, sl
adds r2, r6, #0
adds r3, r4, #0
bl sub_0801E64C
movs r0, #1
str r0, [sp]
adds r0, r7, #0
mov r1, sl
adds r2, r5, #0
mov r3, r8
bl sub_0801E64C
movs r0, #2
str r0, [sp]
adds r0, r6, #0
adds r1, r4, #0
adds r2, r5, #0
mov r3, r8
bl sub_0801E64C
ldr r5, _0801E5F0 @ =gUnk_03003DE4
ldrb r1, [r5]
lsls r0, r1, #2
adds r0, r0, r1
lsls r0, r0, #9
ldr r6, _0801E5F4 @ =gUnk_02017AA0
adds r0, r0, r6
movs r1, #0xa0
lsls r1, r1, #4
bl MemClear
ldr r2, _0801E5E8 @ =gUnk_02018EE0
ldrb r1, [r5]
lsls r0, r1, #2
adds r0, r0, r1
lsls r0, r0, #9
adds r1, r0, r6
movs r3, #0xa0
mov sl, r3
_0801E5B0:
ldr r7, [r2]
ldr r6, [r2, #4]
ldr r5, [r2, #8]
adds r2, #0xc
cmp r7, r6
ble _0801E5C2
adds r4, r7, #0
adds r7, r6, #0
adds r6, r4, #0
_0801E5C2:
cmp r7, r5
ble _0801E5CC
adds r4, r7, #0
adds r7, r5, #0
adds r5, r4, #0
_0801E5CC:
cmp r6, r5
ble _0801E5D6
adds r4, r6, #0
adds r6, r5, #0
adds r5, r4, #0
_0801E5D6:
movs r0, #1
rsbs r0, r0, #0
cmp r7, r0
beq _0801E5F8
strb r5, [r1]
strb r7, [r1, #1]
b _0801E60A
.align 2, 0
_0801E5E4: .4byte 0x0000FFFF
_0801E5E8: .4byte gUnk_02018EE0
_0801E5EC: .4byte gSineTable
_0801E5F0: .4byte gUnk_03003DE4
_0801E5F4: .4byte gUnk_02017AA0
_0801E5F8:
cmp r6, r7
beq _0801E602
strb r5, [r1]
strb r6, [r1, #1]
b _0801E60A
_0801E602:
cmp r5, r7
beq _0801E60A
strb r7, [r1, #1]
strb r7, [r1]
_0801E60A:
movs r4, #1
rsbs r4, r4, #0
add sl, r4
adds r1, #2
mov r0, sl
cmp r0, #0
bgt _0801E5B0
ldr r0, _0801E63C @ =gUnk_03003DE4
ldrb r1, [r0]
lsls r0, r1, #2
adds r0, r0, r1
lsls r0, r0, #9
ldr r1, _0801E640 @ =gUnk_02017AA0
adds r0, r0, r1
ldr r1, _0801E644 @ =0x04000040
ldr r2, _0801E648 @ =0xA2600001
bl sub_0805622C
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
_0801E63C: .4byte gUnk_03003DE4
_0801E640: .4byte gUnk_02017AA0
_0801E644: .4byte 0x04000040
_0801E648: .4byte 0xA2600001
thumb_func_start sub_0801E64C
sub_0801E64C: @ 0x0801E64C
push {r4, r5, r6, r7, lr}
adds r5, r0, #0
adds r4, r1, #0
adds r6, r3, #0
ldr r7, _0801E6C4 @ =gUnk_02018EE0
cmp r4, #0
bge _0801E65E
cmp r6, #0
blt _0801E6C2
_0801E65E:
cmp r4, #0x9f
ble _0801E666
cmp r6, #0x9f
bgt _0801E6C2
_0801E666:
cmp r4, r6
ble _0801E676
adds r1, r4, #0
adds r4, r6, #0
adds r6, r1, #0
adds r1, r5, #0
adds r5, r2, #0
adds r2, r1, #0
_0801E676:
cmp r4, r6
beq _0801E6C2
subs r0, r2, r5
lsls r0, r0, #0x10
subs r1, r6, r4
bl Div
adds r3, r0, #0
cmp r4, #0
bge _0801E694
rsbs r0, r4, #0
muls r0, r3, r0
asrs r0, r0, #0x10
adds r5, r5, r0
movs r4, #0
_0801E694:
cmp r6, #0x9f
ble _0801E69A
movs r6, #0x9f
_0801E69A:
lsls r2, r5, #0x10
lsls r0, r4, #1
adds r0, r0, r4
ldr r1, [sp, #0x14]
adds r0, r0, r1
lsls r0, r0, #2
adds r7, r0, r7
_0801E6A8:
cmp r5, #0
bge _0801E6AE
movs r5, #0
_0801E6AE:
cmp r5, #0xf0
ble _0801E6B4
movs r5, #0xf0
_0801E6B4:
str r5, [r7]
adds r2, r2, r3
asrs r5, r2, #0x10
adds r4, #1
adds r7, #0xc
cmp r4, r6
ble _0801E6A8
_0801E6C2:
pop {r4, r5, r6, r7, pc}
.align 2, 0
_0801E6C4: .4byte gUnk_02018EE0
thumb_func_start sub_0801E6C8
sub_0801E6C8: @ 0x0801E6C8
push {r4, r5, r6, lr}
adds r4, r0, #0
subs r0, r4, #1
cmp r0, #0x63
bhi _0801E722
movs r1, #0
ldr r5, _0801E724 @ =gUnk_02022740
ldr r3, _0801E728 @ =gUnk_02002C01
movs r2, #0xf1
_0801E6DA:
adds r0, r1, r3
ldrb r6, [r0]
cmp r4, r6
bne _0801E6E4
strb r2, [r0]
_0801E6E4:
adds r1, #1
cmp r1, #0x7f
bls _0801E6DA
ldr r0, [r5, #0xc]
bl sub_08002632
adds r1, r0, #0
subs r0, r1, #1
cmp r0, #0x7e
bhi _0801E70A
ldr r0, _0801E72C @ =gSave
ldr r2, _0801E730 @ =0x000001C1
adds r0, r0, r2
adds r1, r1, r0
ldrb r0, [r1]
cmp r0, #0xf1
bne _0801E70A
movs r0, #0xf2
strb r0, [r1]
_0801E70A:
movs r1, #0
ldr r0, _0801E734 @ =gUnk_03003DF0
movs r2, #0xf1
adds r0, #0xb
_0801E712:
ldrb r3, [r0]
cmp r4, r3
bne _0801E71A
strb r2, [r0]
_0801E71A:
adds r0, #0xc
adds r1, #1
cmp r1, #0x1f
bls _0801E712
_0801E722:
pop {r4, r5, r6, pc}
.align 2, 0
_0801E724: .4byte gUnk_02022740
_0801E728: .4byte gUnk_02002C01
_0801E72C: .4byte gSave
_0801E730: .4byte 0x000001C1
_0801E734: .4byte gUnk_03003DF0
thumb_func_start sub_0801E738
sub_0801E738: @ 0x0801E738
push {r4, lr}
adds r4, r0, #0
bl sub_0801E82C
adds r0, r4, #0
subs r0, #0x65
cmp r0, #0x10
bhi _0801E790
adds r0, r4, #0
bl sub_0801E8B0
adds r1, r0, #0
cmp r1, #0
bge _0801E76E
movs r1, #0
ldr r0, _0801E794 @ =gSave
movs r3, #0x8c
lsls r3, r3, #1
adds r2, r0, r3
ldrb r0, [r2]
cmp r0, #0
beq _0801E76E
_0801E764:
adds r1, #1
adds r0, r1, r2
ldrb r0, [r0]
cmp r0, #0
bne _0801E764
_0801E76E:
cmp r1, #0x11
bhi _0801E790
ldr r2, _0801E794 @ =gSave
movs r3, #0x8c
lsls r3, r3, #1
adds r0, r2, r3
adds r0, r1, r0
strb r4, [r0]
adds r3, #0x13
adds r0, r2, r3
adds r1, r1, r0
ldrb r0, [r1]
adds r0, #1
cmp r0, #0x63
ble _0801E78E
movs r0, #0x63
_0801E78E:
strb r0, [r1]
_0801E790:
pop {r4, pc}
.align 2, 0
_0801E794: .4byte gSave
thumb_func_start sub_0801E798
sub_0801E798: @ 0x0801E798
push {r4, lr}
bl sub_0801E8B0
adds r1, r0, #0
cmp r1, #0
blt _0801E7C4
ldr r2, _0801E7C8 @ =gSave
ldr r3, _0801E7CC @ =0x0000012B
adds r0, r2, r3
adds r3, r1, r0
ldrb r0, [r3]
subs r0, #1
cmp r0, #0
bgt _0801E7C2
movs r4, #0x8c
lsls r4, r4, #1
adds r0, r2, r4
adds r0, r1, r0
movs r1, #0
strb r1, [r0]
movs r0, #0
_0801E7C2:
strb r0, [r3]
_0801E7C4:
pop {r4, pc}
.align 2, 0
_0801E7C8: .4byte gSave
_0801E7CC: .4byte 0x0000012B
thumb_func_start sub_0801E7D0
sub_0801E7D0: @ 0x0801E7D0
push {lr}
bl sub_0801E8B0
adds r1, r0, #0
cmp r1, #0
blt _0801E7F0
ldr r0, _0801E7E8 @ =gSave
ldr r2, _0801E7EC @ =0x0000012B
adds r0, r0, r2
adds r0, r1, r0
ldrb r0, [r0]
b _0801E7F2
.align 2, 0
_0801E7E8: .4byte gSave
_0801E7EC: .4byte 0x0000012B
_0801E7F0:
movs r0, #0
_0801E7F2:
pop {pc}
thumb_func_start CheckKinstoneFused
CheckKinstoneFused: @ 0x0801E7F4
push {lr}
adds r1, r0, #0
subs r0, r1, #1
cmp r0, #0x63
bhi _0801E80C
ldr r0, _0801E808 @ =gUnk_02002C81
bl ReadBit
b _0801E80E
.align 2, 0
_0801E808: .4byte gUnk_02002C81
_0801E80C:
movs r0, #0
_0801E80E:
pop {pc}
thumb_func_start sub_0801E810
sub_0801E810: @ 0x0801E810
push {lr}
adds r1, r0, #0
subs r0, r1, #1
cmp r0, #0x63
bhi _0801E828
ldr r0, _0801E824 @ =gUnk_02002C8E
bl ReadBit
b _0801E82A
.align 2, 0
_0801E824: .4byte gUnk_02002C8E
_0801E828:
movs r0, #0
_0801E82A:
pop {pc}
thumb_func_start sub_0801E82C
sub_0801E82C: @ 0x0801E82C
push {r4, r5, r6, r7, lr}
mov r7, sl
mov r6, sb
mov r5, r8
push {r5, r6, r7}
ldr r1, _0801E8AC @ =gUnk_02002B54
movs r5, #0
adds r2, r1, #4
_0801E83C:
ldrb r0, [r2, #0x13]
adds r3, r1, #4
mov sl, r3
cmp r0, #0
bne _0801E848
strb r0, [r2]
_0801E848:
adds r2, #1
adds r5, #1
cmp r5, #0x12
bls _0801E83C
movs r0, #0
strb r0, [r1, #0x16]
adds r2, r1, #0
adds r2, #0x29
strb r0, [r2]
movs r5, #0
movs r0, #0x17
adds r0, r0, r1
mov sb, r0
movs r3, #0x18
adds r3, r3, r1
mov r8, r3
adds r7, r1, #4
adds r6, r1, #5
_0801E86C:
mov r1, sl
adds r0, r1, r5
ldrb r0, [r0]
subs r0, #0x65
cmp r0, #0x10
bls _0801E890
movs r4, #0x12
subs r4, r4, r5
adds r0, r6, #0
adds r1, r7, #0
adds r2, r4, #0
bl MemCopy
mov r0, r8
mov r1, sb
adds r2, r4, #0
bl MemCopy
_0801E890:
movs r3, #1
add sb, r3
add r8, r3
adds r7, #1
adds r6, #1
adds r5, #1
cmp r5, #0x11
bls _0801E86C
pop {r3, r4, r5}
mov r8, r3
mov sb, r4
mov sl, r5
pop {r4, r5, r6, r7, pc}
.align 2, 0
_0801E8AC: .4byte gUnk_02002B54
thumb_func_start sub_0801E8B0
sub_0801E8B0: @ 0x0801E8B0
push {lr}
adds r2, r0, #0
movs r1, #0
ldr r3, _0801E8C4 @ =gUnk_02002B58
_0801E8B8:
adds r0, r1, r3
ldrb r0, [r0]
cmp r2, r0
bne _0801E8C8
adds r0, r1, #0
b _0801E8D2
.align 2, 0
_0801E8C4: .4byte gUnk_02002B58
_0801E8C8:
adds r1, #1
cmp r1, #0x11
bls _0801E8B8
movs r0, #1
rsbs r0, r0, #0
_0801E8D2:
pop {pc}
thumb_func_start sub_0801E8D4
sub_0801E8D4: @ 0x0801E8D4
.ifdef JP
push {r4, r5, lr}
movs r4, #0xa
_0801E8BC:
adds r0, r4, #0
bl CheckKinstoneFused
cmp r0, #0
beq _0801E93A
adds r0, r4, #0
bl sub_0801E810
cmp r0, #0
bne _0801E93A
ldr r1, _0801E8F4 @ =gUnk_080FC3E4
lsls r0, r4, #3
adds r0, r0, r1
ldrb r1, [r0, #4]
lsls r0, r1, #2
adds r0, r0, r1
lsls r0, r0, #2
ldr r1, _0801E8F8 @ =gUnk_080FE320
adds r2, r0, r1
ldrb r0, [r2, #0x10]
cmp r0, #4
bhi _0801E926
lsls r0, r0, #2
ldr r1, _0801E8FC @ =_0801E900
adds r0, r0, r1
ldr r0, [r0]
mov pc, r0
.align 2, 0
_0801E8F4: .4byte gUnk_080C9CBC
_0801E8F8: .4byte gUnk_080FE320
_0801E8FC: .4byte _0801E900
_0801E900: @ jump table
.4byte _0801E914 @ case 0
.4byte _0801E918 @ case 1
.4byte _0801E91C @ case 2
.4byte _0801E920 @ case 3
.4byte _0801E924 @ case 4
_0801E914:
movs r5, #0
b _0801E926
_0801E918:
ldrb r5, [r2, #0x11]
b _0801E926
_0801E91C:
movs r5, #0xf
b _0801E926
_0801E920:
movs r5, #0x10
b _0801E926
_0801E924:
movs r5, #0x11
_0801E926:
ldrh r1, [r2, #0x12]
adds r0, r5, #0
bl sub_0807CB24
cmp r0, #0
beq _0801E93A
ldr r0, _0801E944 @ =0x02002C8E
adds r1, r4, #0
bl WriteBit
_0801E93A:
adds r4, #1
cmp r4, #0x64
bls _0801E8BC
pop {r4, r5, pc}
.align 2, 0
_0801E944: .4byte 0x02002C8E
.else
.ifdef EU
push {r4, r5, lr}
movs r4, #0xa
_0801E910:
adds r0, r4, #0
bl CheckKinstoneFused
cmp r0, #0
beq _0801E98E
adds r0, r4, #0
bl sub_0801E810
cmp r0, #0
bne _0801E98E
ldr r1, _0801E948 @ =gUnk_080C9CBC
lsls r0, r4, #3
adds r0, r0, r1
ldrb r1, [r0, #4]
lsls r0, r1, #2
adds r0, r0, r1
lsls r0, r0, #2
ldr r1, _0801E94C @ =gUnk_080FE320
adds r2, r0, r1
ldrb r0, [r2, #0x10]
cmp r0, #4
bhi _0801E97A
lsls r0, r0, #2
ldr r1, _0801E950 @ =_0801E954
adds r0, r0, r1
ldr r0, [r0]
mov pc, r0
.align 2, 0
_0801E948: .4byte gUnk_080C9CBC
_0801E94C: .4byte gUnk_080FE320
_0801E950: .4byte _0801E954
_0801E954: @ jump table
.4byte _0801E968 @ case 0
.4byte _0801E96C @ case 1
.4byte _0801E970 @ case 2
.4byte _0801E974 @ case 3
.4byte _0801E978 @ case 4
_0801E968:
movs r5, #0
b _0801E97A
_0801E96C:
ldrb r5, [r2, #0x11]
b _0801E97A
_0801E970:
movs r5, #0xf
b _0801E97A
_0801E974:
movs r5, #0x10
b _0801E97A
_0801E978:
movs r5, #0x11
_0801E97A:
ldrh r1, [r2, #0x12]
adds r0, r5, #0
bl sub_0807CB24
cmp r0, #0
beq _0801E98E
ldr r0, _0801E998 @ =gUnk_02002C8E
adds r1, r4, #0
bl WriteBit
_0801E98E:
adds r4, #1
cmp r4, #0x64
bls _0801E910
pop {r4, r5, pc}
.align 2, 0
_0801E998: .4byte gUnk_02002C8E
.else
push {r4, r5, lr}
movs r5, #0xa
_0801E8D8:
adds r0, r5, #0
bl CheckKinstoneFused
cmp r0, #0
beq _0801E990
adds r0, r5, #0
bl sub_0801E810
cmp r0, #0
bne _0801E990
ldr r1, _0801E910 @ =gUnk_080C9CBC
lsls r0, r5, #3
adds r0, r0, r1
ldrb r1, [r0, #4]
lsls r0, r1, #2
adds r0, r0, r1
lsls r0, r0, #2
ldr r1, _0801E914 @ =gUnk_080FE320
adds r2, r0, r1
ldrh r3, [r2, #0x12]
ldrb r0, [r2, #0x10]
cmp r0, #0xa
bhi _0801E97C
lsls r0, r0, #2
ldr r1, _0801E918 @ =_0801E91C
adds r0, r0, r1
ldr r0, [r0]
mov pc, r0
.align 2, 0
_0801E910: .4byte gUnk_080C9CBC
_0801E914: .4byte gUnk_080FE320
_0801E918: .4byte _0801E91C
_0801E91C: @ jump table
.4byte _0801E948 @ case 0
.4byte _0801E94C @ case 1
.4byte _0801E950 @ case 2
.4byte _0801E954 @ case 3
.4byte _0801E958 @ case 4
.4byte _0801E95C @ case 5
.4byte _0801E962 @ case 6
.4byte _0801E968 @ case 7
.4byte _0801E96E @ case 8
.4byte _0801E972 @ case 9
.4byte _0801E978 @ case 10
_0801E948:
movs r4, #0
b _0801E97C
_0801E94C:
ldrb r4, [r2, #0x11]
b _0801E97C
_0801E950:
movs r4, #0xf
b _0801E97C
_0801E954:
movs r4, #0x10
b _0801E97C
_0801E958:
movs r4, #0x11
b _0801E97C
_0801E95C:
movs r4, #4
movs r3, #0x83
b _0801E97C
_0801E962:
movs r4, #4
movs r3, #0x84
b _0801E97C
_0801E968:
movs r4, #4
movs r3, #0x87
b _0801E97C
_0801E96E:
movs r4, #4
b _0801E97A
_0801E972:
movs r4, #4
movs r3, #0x8b
b _0801E97C
_0801E978:
movs r4, #5
_0801E97A:
movs r3, #0x88
_0801E97C:
adds r0, r4, #0
adds r1, r3, #0
bl sub_0807CB24
cmp r0, #0
beq _0801E990
ldr r0, _0801E998 @ =gUnk_02002C8E
adds r1, r5, #0
bl WriteBit
_0801E990:
adds r5, #1
cmp r5, #0x64
bls _0801E8D8
pop {r4, r5, pc}
.align 2, 0
_0801E998: .4byte gUnk_02002C8E
.endif
.endif
thumb_func_start sub_0801E99C
sub_0801E99C: @ 0x0801E99C
push {r4, r5, r6, r7, lr}
mov r7, r8
push {r7}
bl sub_08002632
mov r8, r0
ldr r1, _0801E9E4 @ =gUnk_08001DCC
lsls r0, r0, #2
adds r0, r0, r1
ldr r7, [r0]
movs r0, #0x67
bl GetInventoryValue
cmp r0, #0
beq _0801EA56
ldr r1, _0801E9E8 @ =gSave
ldrb r0, [r7]
ldrb r2, [r1, #8]
cmp r0, r2
bhi _0801EA56
ldr r2, _0801E9EC @ =0x000001C1
adds r0, r1, r2
add r0, r8
ldrb r5, [r0]
subs r2, #0x80
adds r0, r1, r2
add r0, r8
ldrb r6, [r0]
adds r4, r6, r7
_0801E9D6:
cmp r5, #0xf1
beq _0801E9F6
cmp r5, #0xf1
bhi _0801E9F0
cmp r5, #0
beq _0801E9F6
b _0801EA10
.align 2, 0
_0801E9E4: .4byte gUnk_08001DCC
_0801E9E8: .4byte gSave
_0801E9EC: .4byte 0x000001C1
_0801E9F0:
cmp r5, #0xf2
beq _0801EA0A
b _0801EA10
_0801E9F6:
ldrb r5, [r4, #5]
cmp r5, #0
beq _0801EA10
cmp r5, #0xff
beq _0801EA14
adds r0, r5, #0
bl CheckKinstoneFused
cmp r0, #0
beq _0801EA10
_0801EA0A:
adds r4, #1
adds r6, #1
ldrb r5, [r4, #5]
_0801EA10:
cmp r5, #0xff
bne _0801EA1C
_0801EA14:
adds r0, r7, #0
bl sub_0801EA74
adds r5, r0, #0
_0801EA1C:
cmp r5, #0
beq _0801EA32
cmp r5, #0xf2
beq _0801E9D6
adds r0, r5, #0
bl CheckKinstoneFused
cmp r0, #0
beq _0801EA34
movs r5, #0xf1
b _0801E9D6
_0801EA32:
movs r5, #0xf3
_0801EA34:
ldr r1, _0801EA5C @ =gSave
ldr r2, _0801EA60 @ =0x000001C1
adds r0, r1, r2
add r0, r8
strb r5, [r0]
subs r2, #0x80
adds r0, r1, r2
add r0, r8
strb r6, [r0]
bl Random
ldrb r4, [r7, #1]
movs r1, #0x64
bl __modsi3
cmp r4, r0
bhi _0801EA64
_0801EA56:
movs r0, #0
b _0801EA6E
.align 2, 0
_0801EA5C: .4byte gSave
_0801EA60: .4byte 0x000001C1
_0801EA64:
subs r0, r5, #1
cmp r0, #0x63
bls _0801EA6C
movs r5, #0
_0801EA6C:
adds r0, r5, #0
_0801EA6E:
pop {r3}
mov r8, r3
pop {r4, r5, r6, r7, pc}
thumb_func_start sub_0801EA74
sub_0801EA74: @ 0x0801EA74
push {r4, r5, r6, lr}
bl Random
movs r1, #0x12
bl __modsi3
adds r5, r0, #0
movs r6, #0
_0801EA84:
ldr r0, _0801EA98 @ =gUnk_080CA11C
adds r0, r5, r0
ldrb r4, [r0]
adds r0, r4, #0
bl CheckKinstoneFused
cmp r0, #0
bne _0801EA9C
adds r0, r4, #0
b _0801EAAE
.align 2, 0
_0801EA98: .4byte gUnk_080CA11C
_0801EA9C:
adds r0, r5, #1
movs r1, #0x12
bl __modsi3
adds r5, r0, #0
adds r6, #1
cmp r6, #0x11
bls _0801EA84
movs r0, #0xf2
_0801EAAE:
pop {r4, r5, r6, pc}