pokepinballrs/asm/field_select.s
2019-08-04 10:34:11 -05:00

971 lines
17 KiB
ArmAsm
Executable File

.include "asm/macros.inc"
.syntax unified
.text
thumb_func_start FieldSelectMain
FieldSelectMain: @ 0x08008AD4
push {lr}
ldr r1, _08008AEC @ =gUnknown_080792C0
ldr r0, _08008AF0 @ =gMain
ldrb r0, [r0, #3]
lsls r0, r0, #2
adds r0, r0, r1
ldr r0, [r0]
bl _call_via_r0
pop {r0}
bx r0
.align 2, 0
_08008AEC: .4byte gUnknown_080792C0
_08008AF0: .4byte gMain
thumb_func_start LoadFieldSelectGraphics
LoadFieldSelectGraphics: @ 0x08008AF4
push {r4, lr}
bl sub_438
movs r2, #0x80
lsls r2, r2, #0x13
movs r1, #0x84
lsls r1, r1, #5
adds r0, r1, #0
strh r0, [r2]
ldr r1, _08008BD4 @ =0x04000008
movs r0, #4
strh r0, [r1]
ldrh r0, [r2]
movs r3, #0x80
lsls r3, r3, #1
adds r1, r3, #0
orrs r0, r1
strh r0, [r2]
ldr r1, _08008BD8 @ =0x0400000A
adds r3, #5
adds r0, r3, #0
strh r0, [r1]
ldrh r0, [r2]
adds r3, #0xfb
adds r1, r3, #0
orrs r0, r1
strh r0, [r2]
ldr r1, _08008BDC @ =0x0400000C
adds r3, #0xa
adds r0, r3, #0
strh r0, [r1]
ldrh r0, [r2]
movs r3, #0x80
lsls r3, r3, #3
adds r1, r3, #0
orrs r0, r1
strh r0, [r2]
ldr r4, _08008BE0 @ =gMain
ldrh r0, [r2]
strh r0, [r4, #0x16]
ldr r0, _08008BE4 @ =0x040000D4
ldr r1, _08008BE8 @ =gFieldSelectBGPals
str r1, [r0]
movs r1, #0xa0
lsls r1, r1, #0x13
str r1, [r0, #4]
ldr r3, _08008BEC @ =0x80000100
str r3, [r0, #8]
ldr r1, [r0, #8]
ldr r1, _08008BF0 @ =gFieldSelectWindow_Gfx
str r1, [r0]
ldr r1, _08008BF4 @ =0x06004000
str r1, [r0, #4]
ldr r1, _08008BF8 @ =0x80000A00
str r1, [r0, #8]
ldr r1, [r0, #8]
ldr r1, _08008BFC @ =gFieldSelectMiniFields_Gfx
str r1, [r0]
ldr r1, _08008C00 @ =0x06008000
str r1, [r0, #4]
ldr r1, _08008C04 @ =0x80001C00
str r1, [r0, #8]
ldr r1, [r0, #8]
ldr r1, _08008C08 @ =gUnknown_080A2400
str r1, [r0]
movs r1, #0xc0
lsls r1, r1, #0x13
str r1, [r0, #4]
ldr r2, _08008C0C @ =0x80000400
str r2, [r0, #8]
ldr r1, [r0, #8]
ldr r1, _08008C10 @ =gFieldSelectFrameShadowTilemap
str r1, [r0]
ldr r1, _08008C14 @ =0x06000800
str r1, [r0, #4]
str r2, [r0, #8]
ldr r1, [r0, #8]
ldr r1, _08008C18 @ =gFieldSelectWindowTilemap
str r1, [r0]
ldr r1, _08008C1C @ =0x06001000
str r1, [r0, #4]
str r2, [r0, #8]
ldr r1, [r0, #8]
ldr r1, _08008C20 @ =gFieldSelectSpritePals
str r1, [r0]
ldr r1, _08008C24 @ =0x05000200
str r1, [r0, #4]
str r3, [r0, #8]
ldr r1, [r0, #8]
ldr r1, _08008C28 @ =gFieldSelectSpriteGfx
str r1, [r0]
ldr r1, _08008C2C @ =0x06010000
str r1, [r0, #4]
ldr r1, _08008C30 @ =0x80002010
str r1, [r0, #8]
ldr r0, [r0, #8]
bl sub_CBC
bl sub_8C38
ldr r0, _08008C34 @ =sub_8F94 + 1
bl sub_FD5C
ldrb r0, [r4, #3]
adds r0, #1
strb r0, [r4, #3]
movs r0, #3
bl m4aSongNumStart
pop {r4}
pop {r0}
bx r0
.align 2, 0
_08008BD4: .4byte 0x04000008
_08008BD8: .4byte 0x0400000A
_08008BDC: .4byte 0x0400000C
_08008BE0: .4byte gMain
_08008BE4: .4byte 0x040000D4
_08008BE8: .4byte gFieldSelectBGPals
_08008BEC: .4byte 0x80000100
_08008BF0: .4byte gFieldSelectWindow_Gfx
_08008BF4: .4byte 0x06004000
_08008BF8: .4byte 0x80000A00
_08008BFC: .4byte gFieldSelectMiniFields_Gfx
_08008C00: .4byte 0x06008000
_08008C04: .4byte 0x80001C00
_08008C08: .4byte gUnknown_080A2400
_08008C0C: .4byte 0x80000400
_08008C10: .4byte gFieldSelectFrameShadowTilemap
_08008C14: .4byte 0x06000800
_08008C18: .4byte gFieldSelectWindowTilemap
_08008C1C: .4byte 0x06001000
_08008C20: .4byte gFieldSelectSpritePals
_08008C24: .4byte 0x05000200
_08008C28: .4byte gFieldSelectSpriteGfx
_08008C2C: .4byte 0x06010000
_08008C30: .4byte 0x80002010
_08008C34: .4byte sub_8F94 + 1
thumb_func_start sub_8C38
sub_8C38: @ 0x08008C38
ldr r2, _08008C70 @ =0x02002838
movs r3, #0
movs r1, #0
movs r0, #2
strh r0, [r2]
movs r0, #3
strh r0, [r2, #2]
strh r1, [r2, #4]
movs r0, #1
strh r0, [r2, #6]
strh r1, [r2, #8]
strh r1, [r2, #0xa]
strh r1, [r2, #0xc]
strh r1, [r2, #0xe]
strh r1, [r2, #0x16]
strh r1, [r2, #0x12]
strb r3, [r2, #0x14]
ldr r0, _08008C74 @ =0x0200B134
adds r1, r0, #0
adds r1, #0xce
ldrb r1, [r1]
strb r1, [r2, #0x10]
subs r0, #0x74
strb r3, [r0, #4]
ldr r0, _08008C78 @ =0x02002850
strb r3, [r0]
bx lr
.align 2, 0
_08008C70: .4byte 0x02002838
_08008C74: .4byte 0x0200B134
_08008C78: .4byte 0x02002850
thumb_func_start sub_8C7C
sub_8C7C: @ 0x08008C7C
push {r4, r5, r6, r7, lr}
bl sub_8F94
ldr r7, _08008CC4 @ =gMain
ldrh r1, [r7, #0x1c]
movs r0, #0xf
ands r0, r1
cmp r0, #0xf
bne _08008CA0
ldr r1, _08008CC8 @ =0x02002850
movs r0, #1
strb r0, [r1]
ldr r1, _08008CCC @ =0x02002838
movs r0, #0
strh r0, [r1, #0x16]
ldrb r0, [r7, #3]
adds r0, #1
strb r0, [r7, #3]
_08008CA0:
ldr r0, _08008CC8 @ =0x02002850
movs r6, #0
ldrsb r6, [r0, r6]
cmp r6, #0
beq _08008CAC
b _08008F56
_08008CAC:
ldr r5, _08008CCC @ =0x02002838
ldrh r4, [r5, #0xa]
adds r3, r5, #0
cmp r4, #1
bne _08008CB8
b _08008E2E
_08008CB8:
cmp r4, #1
bgt _08008CD0
cmp r4, #0
beq _08008CDC
b _08008F4C
.align 2, 0
_08008CC4: .4byte gMain
_08008CC8: .4byte 0x02002850
_08008CCC: .4byte 0x02002838
_08008CD0:
cmp r4, #2
beq _08008DC2
cmp r4, #3
bne _08008CDA
b _08008F08
_08008CDA:
b _08008F4C
_08008CDC:
ldrh r1, [r7, #0x18]
movs r0, #0x20
ands r0, r1
cmp r0, #0
beq _08008CFC
ldrh r4, [r5, #8]
cmp r4, #1
bne _08008D1A
movs r0, #0x6d
bl m4aSongNumStart
strh r6, [r5, #8]
strh r6, [r5, #4]
strh r4, [r5, #6]
strh r4, [r5, #0xa]
b _08008D1A
_08008CFC:
movs r0, #0x10
ands r0, r1
cmp r0, #0
beq _08008D1A
ldrh r0, [r5, #8]
cmp r0, #0
bne _08008D1A
movs r0, #0x6d
bl m4aSongNumStart
movs r0, #1
strh r0, [r5, #8]
strh r0, [r5, #4]
strh r6, [r5, #6]
strh r0, [r5, #0xa]
_08008D1A:
ldr r2, _08008D50 @ =gMain
ldrh r1, [r2, #0x18]
movs r4, #1
adds r0, r4, #0
ands r0, r1
adds r5, r2, #0
cmp r0, #0
beq _08008D66
movs r0, #0x65
bl m4aSongNumStart
ldr r1, _08008D54 @ =0x02002838
movs r2, #0
movs r3, #2
strh r3, [r1, #0xa]
movs r0, #1
strb r0, [r1, #0x14]
strh r2, [r1, #0xe]
ldrh r0, [r1, #8]
cmp r0, #0
bne _08008D58
strh r2, [r1, #4]
strh r4, [r1, #6]
strh r3, [r1]
movs r0, #3
b _08008D62
.align 2, 0
_08008D50: .4byte gMain
_08008D54: .4byte 0x02002838
_08008D58:
strh r4, [r1, #4]
strh r2, [r1, #6]
movs r0, #7
strh r0, [r1]
movs r0, #0xb
_08008D62:
strh r0, [r1, #2]
strh r2, [r1, #0xc]
_08008D66:
ldrh r1, [r5, #0x18]
movs r4, #2
adds r0, r4, #0
ands r0, r1
cmp r0, #0
beq _08008DAA
movs r0, #0x66
bl m4aSongNumStart
ldrb r0, [r5, #3]
adds r0, #1
movs r3, #0
strb r0, [r5, #3]
ldr r1, _08008D98 @ =0x02002838
movs r2, #1
strh r2, [r1, #0x16]
ldrh r0, [r1, #8]
cmp r0, #0
bne _08008D9C
strh r3, [r1, #4]
strh r2, [r1, #6]
strh r4, [r1]
movs r0, #3
b _08008DA6
.align 2, 0
_08008D98: .4byte 0x02002838
_08008D9C:
strh r2, [r1, #4]
strh r3, [r1, #6]
movs r0, #7
strh r0, [r1]
movs r0, #0xb
_08008DA6:
strh r0, [r1, #2]
strh r3, [r1, #0xc]
_08008DAA:
ldr r1, _08008DB8 @ =gMain
ldrb r0, [r1, #4]
cmp r0, #1
bhi _08008DBC
movs r0, #0
strb r0, [r1, #6]
b _08008F4C
.align 2, 0
_08008DB8: .4byte gMain
_08008DBC:
movs r0, #1
strb r0, [r1, #6]
b _08008F4C
_08008DC2:
ldrh r1, [r7, #0x18]
movs r0, #0x30
ands r0, r1
cmp r0, #0
beq _08008DDA
movs r0, #0x67
bl m4aSongNumStart
ldrb r1, [r5, #0x10]
movs r0, #1
subs r0, r0, r1
strb r0, [r5, #0x10]
_08008DDA:
ldrh r1, [r7, #0x18]
movs r0, #1
ands r0, r1
cmp r0, #0
beq _08008E00
movs r0, #0x65
bl m4aSongNumStart
strh r6, [r5, #0xe]
strh r6, [r5, #0xc]
ldrb r0, [r5, #0x10]
movs r2, #0xa1
lsls r2, r2, #1
adds r1, r7, r2
strb r0, [r1]
bl sub_52B30
movs r0, #3
strh r0, [r5, #0xa]
_08008E00:
ldrh r0, [r7, #0x18]
ands r4, r0
cmp r4, #0
beq _08008E12
movs r0, #0x66
bl m4aSongNumStart
strb r6, [r5, #0x14]
strh r6, [r5, #0xa]
_08008E12:
ldrh r0, [r5, #0xe]
adds r0, #1
strh r0, [r5, #0xe]
lsls r0, r0, #0x10
asrs r0, r0, #0x10
cmp r0, #4
bgt _08008E22
b _08008F4C
_08008E22:
strh r6, [r5, #0xe]
ldrh r1, [r5, #0x12]
movs r0, #1
subs r0, r0, r1
strh r0, [r5, #0x12]
b _08008F4C
_08008E2E:
ldrh r0, [r5, #8]
cmp r0, #0
bne _08008E5C
ldr r2, _08008E58 @ =gUnknown_086A6B14
movs r4, #0xc
ldrsh r0, [r5, r4]
movs r1, #4
subs r0, r1, r0
lsls r0, r0, #1
adds r0, r0, r2
ldrh r0, [r0]
strh r0, [r5]
movs r4, #0xc
ldrsh r0, [r5, r4]
subs r1, r1, r0
lsls r1, r1, #1
adds r2, #0xa
adds r1, r1, r2
ldrh r0, [r1]
b _08008E76
.align 2, 0
_08008E58: .4byte gUnknown_086A6B14
_08008E5C:
ldr r1, _08008E94 @ =gUnknown_086A6B14
movs r2, #0xc
ldrsh r0, [r5, r2]
lsls r0, r0, #1
adds r0, r0, r1
ldrh r0, [r0]
strh r0, [r5]
movs r4, #0xc
ldrsh r0, [r5, r4]
lsls r0, r0, #1
adds r1, #0xa
adds r0, r0, r1
ldrh r0, [r0]
_08008E76:
strh r0, [r5, #2]
ldr r0, _08008E98 @ =gMain
ldr r1, [r0, #0x4c]
movs r0, #1
ands r1, r0
cmp r1, #0
bne _08008EA0
ldrh r2, [r3, #0xc]
movs r4, #0xc
ldrsh r0, [r3, r4]
cmp r0, #3
bgt _08008E9C
adds r0, r2, #1
strh r0, [r3, #0xc]
b _08008EA0
.align 2, 0
_08008E94: .4byte gUnknown_086A6B14
_08008E98: .4byte gMain
_08008E9C:
strh r1, [r3, #0xc]
strh r1, [r3, #0xa]
_08008EA0:
ldr r0, _08008ED0 @ =gMain
ldrh r1, [r0, #0x18]
movs r0, #0x20
ands r0, r1
cmp r0, #0
beq _08008ED8
ldr r4, _08008ED4 @ =0x02002838
ldrh r5, [r4, #8]
cmp r5, #1
bne _08008F4C
movs r0, #0x6d
bl m4aSongNumStart
movs r0, #0
strh r0, [r4, #8]
strh r0, [r4, #4]
strh r5, [r4, #6]
movs r1, #2
strh r1, [r4]
movs r1, #3
strh r1, [r4, #2]
strh r0, [r4, #0xc]
strh r0, [r4, #0xa]
b _08008F4C
.align 2, 0
_08008ED0: .4byte gMain
_08008ED4: .4byte 0x02002838
_08008ED8:
movs r0, #0x10
ands r0, r1
cmp r0, #0
beq _08008F4C
ldr r4, _08008F04 @ =0x02002838
ldrh r5, [r4, #8]
cmp r5, #0
bne _08008F4C
movs r0, #0x6d
bl m4aSongNumStart
movs r0, #1
strh r0, [r4, #8]
strh r0, [r4, #4]
strh r5, [r4, #6]
movs r0, #7
strh r0, [r4]
movs r0, #0xb
strh r0, [r4, #2]
strh r5, [r4, #0xc]
strh r5, [r4, #0xa]
b _08008F4C
.align 2, 0
_08008F04: .4byte 0x02002838
_08008F08:
ldrh r0, [r5, #0xe]
adds r0, #1
strh r0, [r5, #0xe]
lsls r0, r0, #0x10
asrs r0, r0, #0x10
cmp r0, #3
ble _08008F4C
strh r6, [r5, #0xe]
ldrh r0, [r5, #8]
cmp r0, #0
bne _08008F28
ldrh r1, [r5, #4]
movs r0, #1
subs r0, r0, r1
strh r0, [r5, #4]
b _08008F30
_08008F28:
ldrh r1, [r5, #6]
movs r0, #1
subs r0, r0, r1
strh r0, [r5, #6]
_08008F30:
ldr r1, _08008F5C @ =0x02002838
ldrh r0, [r1, #0xc]
adds r0, #1
strh r0, [r1, #0xc]
lsls r0, r0, #0x10
asrs r0, r0, #0x10
cmp r0, #5
ble _08008F4C
movs r0, #2
strh r0, [r1, #0x16]
ldr r1, _08008F60 @ =gMain
ldrb r0, [r1, #3]
adds r0, #1
strb r0, [r1, #3]
_08008F4C:
ldr r0, _08008F60 @ =gMain
ldr r1, _08008F5C @ =0x02002838
ldrh r1, [r1, #8]
strb r1, [r0, #4]
strb r1, [r0, #5]
_08008F56:
pop {r4, r5, r6, r7}
pop {r0}
bx r0
.align 2, 0
_08008F5C: .4byte 0x02002838
_08008F60: .4byte gMain
thumb_func_start sub_8F64
sub_8F64: @ 0x08008F64
push {lr}
ldr r0, _08008F88 @ =sub_8F94 + 1
bl sub_FE04
bl m4aMPlayAllStop
bl sub_D10
ldr r1, _08008F8C @ =gAutoDisplayTitlescreenMenu
movs r0, #1
strb r0, [r1]
ldr r0, _08008F90 @ =0x02002838
ldrh r0, [r0, #0x16]
bl SetMainGameState
pop {r0}
bx r0
.align 2, 0
_08008F88: .4byte sub_8F94 + 1
_08008F8C: .4byte gAutoDisplayTitlescreenMenu
_08008F90: .4byte 0x02002838
thumb_func_start sub_8F94
sub_8F94: @ 0x08008F94
push {r4, r5, r6, r7, lr}
mov r7, sl
mov r6, sb
mov r5, r8
push {r5, r6, r7}
sub sp, #4
ldr r5, _08009254 @ =gMain
ldrh r0, [r5, #0x38]
ldr r0, _08009258 @ =0x00000642
strh r0, [r5, #0x38]
ldrh r0, [r5, #0x3a]
ldr r0, _0800925C @ =0x00000808
strh r0, [r5, #0x3a]
ldr r1, _08009260 @ =0x04000050
ldrh r0, [r5, #0x38]
strh r0, [r1]
adds r1, #2
ldrh r0, [r5, #0x3a]
strh r0, [r1]
movs r0, #0xbe
lsls r0, r0, #2
adds r6, r5, r0
movs r1, #0xec
lsls r1, r1, #2
adds r1, r1, r5
mov sb, r1
ldr r4, _08009264 @ =0x02002838
ldrh r0, [r4]
movs r2, #0xb8
muls r0, r2, r0
adds r0, r0, r6
str r0, [sp]
ldrh r0, [r4, #2]
muls r0, r2, r0
adds r0, r0, r6
mov sl, r0
ldrb r1, [r4, #0x10]
lsls r1, r1, #1
movs r3, #0x12
ldrsh r0, [r4, r3]
adds r0, #0xc
adds r1, r1, r0
adds r0, r1, #0
muls r0, r2, r0
adds r0, r0, r6
mov r8, r0
ldrh r0, [r4, #4]
strh r0, [r6]
ldrh r0, [r4, #6]
mov r7, sb
strh r0, [r7]
movs r0, #1
ldr r1, [sp]
strh r0, [r1]
mov r2, sl
strh r0, [r2]
movs r0, #0x14
ldrsb r0, [r4, r0]
mov r3, r8
strh r0, [r3]
ldr r0, _08009268 @ =gUnknown_086A6AD4
movs r1, #0x10
adds r2, r6, #0
bl LoadSpriteSets
ldrh r0, [r4, #4]
cmp r0, #1
bne _08009066
movs r0, #0x25
strh r0, [r6, #2]
movs r0, #0x18
strh r0, [r6, #4]
ldr r7, _0800926C @ =gOamBuffer
movs r0, #0xc0
lsls r0, r0, #2
adds r4, r5, r0
ldr r1, _08009270 @ =0x000001FF
mov ip, r1
movs r5, #1
_08009032:
ldrh r3, [r4]
lsls r3, r3, #3
adds r3, r3, r7
movs r2, #2
ldrsh r1, [r4, r2]
movs r2, #2
ldrsh r0, [r6, r2]
adds r1, r1, r0
mov r0, ip
ands r1, r0
ldrh r2, [r3, #2]
ldr r0, _08009274 @ =0xFFFFFE00
ands r0, r2
orrs r0, r1
strh r0, [r3, #2]
ldrh r1, [r4]
lsls r1, r1, #3
adds r1, r1, r7
ldrb r0, [r6, #4]
ldrb r2, [r4, #4]
adds r0, r0, r2
strb r0, [r1]
adds r4, #8
subs r5, #1
cmp r5, #0
bge _08009032
_08009066:
ldr r0, _08009264 @ =0x02002838
ldrh r1, [r0, #6]
cmp r1, #1
bne _080090BC
movs r0, #0x8d
mov r3, sb
strh r0, [r3, #2]
movs r0, #0x18
strh r0, [r3, #4]
ldr r6, _0800926C @ =gOamBuffer
ldr r7, _08009274 @ =0xFFFFFE00
mov ip, r7
mov r4, sb
adds r4, #8
movs r5, #1
_08009084:
ldrh r3, [r4]
lsls r3, r3, #3
adds r3, r3, r6
movs r0, #2
ldrsh r1, [r4, r0]
mov r2, sb
movs r7, #2
ldrsh r0, [r2, r7]
adds r1, r1, r0
ldr r0, _08009270 @ =0x000001FF
ands r1, r0
ldrh r2, [r3, #2]
mov r0, ip
ands r0, r2
orrs r0, r1
strh r0, [r3, #2]
ldrh r1, [r4]
lsls r1, r1, #3
adds r1, r1, r6
mov r2, sb
ldrb r0, [r2, #4]
ldrb r3, [r4, #4]
adds r0, r0, r3
strb r0, [r1]
adds r4, #8
subs r5, #1
cmp r5, #0
bge _08009084
_080090BC:
movs r0, #0x20
ldr r7, [sp]
strh r0, [r7, #2]
strh r0, [r7, #4]
ldr r1, _08009264 @ =0x02002838
ldrh r0, [r1]
lsls r0, r0, #2
ldr r2, _08009268 @ =gUnknown_086A6AD4
adds r0, r0, r2
ldr r6, [r0]
movs r5, #0
ldrh r3, [r6]
cmp r5, r3
bge _0800913A
movs r7, #0xd
rsbs r7, r7, #0
mov ip, r7
ldr r0, _08009274 @ =0xFFFFFE00
mov sb, r0
ldr r4, [sp]
adds r4, #8
_080090E6:
ldrh r2, [r4]
lsls r2, r2, #3
ldr r1, _0800926C @ =gOamBuffer
adds r2, r2, r1
ldrb r1, [r2, #1]
mov r0, ip
ands r0, r1
movs r1, #4
orrs r0, r1
strb r0, [r2, #1]
ldrh r3, [r4]
lsls r3, r3, #3
ldr r2, _0800926C @ =gOamBuffer
adds r3, r3, r2
movs r7, #2
ldrsh r1, [r4, r7]
ldr r2, [sp]
movs r7, #2
ldrsh r0, [r2, r7]
adds r1, r1, r0
ldr r2, _08009270 @ =0x000001FF
adds r0, r2, #0
ands r1, r0
ldrh r2, [r3, #2]
mov r0, sb
ands r0, r2
orrs r0, r1
strh r0, [r3, #2]
ldrh r1, [r4]
lsls r1, r1, #3
ldr r3, _0800926C @ =gOamBuffer
adds r1, r1, r3
ldr r7, [sp]
ldrb r0, [r7, #4]
ldrb r2, [r4, #4]
adds r0, r0, r2
strb r0, [r1]
adds r4, #8
adds r5, #1
ldrh r3, [r6]
cmp r5, r3
blt _080090E6
_0800913A:
movs r0, #0x88
mov r7, sl
strh r0, [r7, #2]
movs r0, #0x20
strh r0, [r7, #4]
ldr r1, _08009264 @ =0x02002838
ldrh r0, [r1, #2]
lsls r0, r0, #2
ldr r2, _08009268 @ =gUnknown_086A6AD4
adds r0, r0, r2
ldr r6, [r0]
movs r5, #0
ldrh r3, [r6]
cmp r5, r3
bge _080091BA
movs r7, #0xd
rsbs r7, r7, #0
mov ip, r7
ldr r0, _08009274 @ =0xFFFFFE00
mov sb, r0
mov r4, sl
adds r4, #8
_08009166:
ldrh r2, [r4]
lsls r2, r2, #3
ldr r1, _0800926C @ =gOamBuffer
adds r2, r2, r1
ldrb r1, [r2, #1]
mov r0, ip
ands r0, r1
movs r1, #4
orrs r0, r1
strb r0, [r2, #1]
ldrh r3, [r4]
lsls r3, r3, #3
ldr r2, _0800926C @ =gOamBuffer
adds r3, r3, r2
movs r7, #2
ldrsh r1, [r4, r7]
mov r2, sl
movs r7, #2
ldrsh r0, [r2, r7]
adds r1, r1, r0
ldr r2, _08009270 @ =0x000001FF
adds r0, r2, #0
ands r1, r0
ldrh r2, [r3, #2]
mov r0, sb
ands r0, r2
orrs r0, r1
strh r0, [r3, #2]
ldrh r1, [r4]
lsls r1, r1, #3
ldr r3, _0800926C @ =gOamBuffer
adds r1, r1, r3
mov r7, sl
ldrb r0, [r7, #4]
ldrb r2, [r4, #4]
adds r0, r0, r2
strb r0, [r1]
adds r4, #8
adds r5, #1
ldrh r3, [r6]
cmp r5, r3
blt _08009166
_080091BA:
mov r7, r8
ldrh r0, [r7]
cmp r0, #1
bne _08009234
ldr r1, _08009278 @ =gUnknown_086A6B28
ldr r2, _08009264 @ =0x02002838
ldrh r0, [r2, #8]
lsls r0, r0, #2
adds r0, r0, r1
ldrh r0, [r0]
strh r0, [r7, #2]
ldrh r0, [r2, #8]
lsls r0, r0, #2
adds r0, r0, r1
ldrh r0, [r0, #2]
strh r0, [r7, #4]
ldr r6, _0800926C @ =gOamBuffer
movs r3, #0xd
rsbs r3, r3, #0
mov sb, r3
ldr r7, _08009274 @ =0xFFFFFE00
mov ip, r7
mov r4, r8
adds r4, #8
movs r5, #4
_080091EC:
ldrh r1, [r4]
lsls r1, r1, #3
adds r1, r1, r6
ldrb r2, [r1, #1]
mov r0, sb
ands r0, r2
strb r0, [r1, #1]
ldrh r3, [r4]
lsls r3, r3, #3
adds r3, r3, r6
movs r0, #2
ldrsh r1, [r4, r0]
mov r2, r8
movs r7, #2
ldrsh r0, [r2, r7]
adds r1, r1, r0
ldr r2, _08009270 @ =0x000001FF
adds r0, r2, #0
ands r1, r0
ldrh r2, [r3, #2]
mov r0, ip
ands r0, r2
orrs r0, r1
strh r0, [r3, #2]
ldrh r1, [r4]
lsls r1, r1, #3
adds r1, r1, r6
mov r3, r8
ldrb r0, [r3, #4]
ldrb r7, [r4, #4]
adds r0, r0, r7
strb r0, [r1]
adds r4, #8
subs r5, #1
cmp r5, #0
bge _080091EC
_08009234:
movs r0, #0
ldr r1, [sp]
strh r0, [r1]
mov r2, sl
strh r0, [r2]
mov r3, r8
strh r0, [r3]
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
_08009254: .4byte gMain
_08009258: .4byte 0x00000642
_0800925C: .4byte 0x00000808
_08009260: .4byte 0x04000050
_08009264: .4byte 0x02002838
_08009268: .4byte gUnknown_086A6AD4
_0800926C: .4byte gOamBuffer
_08009270: .4byte 0x000001FF
_08009274: .4byte 0xFFFFFE00
_08009278: .4byte gUnknown_086A6B28