pokeemerald-jp/asm/apprentice.s
2019-09-27 01:42:56 -04:00

3952 lines
64 KiB
ArmAsm

.include "asm/macros.inc"
.include "constants/constants.inc"
.text
.syntax unified
thumb_func_start CopyFriendsApprenticeChallengeText
CopyFriendsApprenticeChallengeText: @ 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 StringCopy7
ldr r0, _0819F91C
ldr r1, [r7]
adds r1, r1, r4
adds r1, #0xde
ldrb r1, [r1]
movs r2, #1
adds r3, r6, #0
bl ConvertIntToDecimalStringN
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 StringExpandPlaceholders
pop {r3}
mov r8, r3
pop {r4, r5, r6, r7}
pop {r0}
bx r0
.align 2, 0
_0819F914: .4byte 0x03005AF0
_0819F918: .4byte 0x02021C40
_0819F91C: .4byte 0x02021C54
_0819F920: .4byte 0x085DC95C
_0819F924: .4byte 0x02021C7C
thumb_func_end CopyFriendsApprenticeChallengeText
thumb_func_start Apprentice_EnableBothScriptContexts
Apprentice_EnableBothScriptContexts: @ 0x0819F928
push {lr}
bl EnableBothScriptContexts
pop {r0}
bx r0
.align 2, 0
thumb_func_end Apprentice_EnableBothScriptContexts
thumb_func_start ResetApprenticeStruct
ResetApprenticeStruct: @ 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 ResetApprenticeStruct
thumb_func_start ResetAllApprenticeData
ResetAllApprenticeData: @ 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 Script_ResetPlayerApprentice
pop {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 0x03005AF0
_0819FA7C: .4byte 0x0000FFFF
_0819FA80: .4byte 0x0829BDA5
_0819FA84: .4byte 0x0000011B
thumb_func_end ResetAllApprenticeData
thumb_func_start IsPlayersApprenticeActive
IsPlayersApprenticeActive: @ 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 0x03005AF0
thumb_func_end IsPlayersApprenticeActive
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 Random
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 0x03005AF0
_0819FAE4: .4byte 0x085DCB74
_0819FAE8:
adds r4, r2, #0
_0819FAEA:
bl Random
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 SetPlayersApprenticeLvlMode
SetPlayersApprenticeLvlMode: @ 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 0x03005AF0
thumb_func_end SetPlayersApprenticeLvlMode
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 Random
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 Random
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 0x03005AF0
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 Random
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 0x0300602C
_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 Random
lsls r0, r0, #0x10
lsrs r0, r0, #0x10
movs r1, #3
bl __umodsi3
lsls r0, r0, #0x18
lsrs r4, r0, #0x18
bl Random
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 Random
lsls r0, r0, #0x10
lsrs r0, r0, #0x10
movs r1, #0xa
bl __umodsi3
lsls r0, r0, #0x18
lsrs r4, r0, #0x18
bl Random
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 AllocZeroed
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 Random
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 Free
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 0x085DCAFF
_0819FE68: .4byte 0x0300602C
_0819FE6C: .4byte 0x03005AF0
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 0x03005AF0
_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 Random
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 Random
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 CanSpeciesLearnTMHM
adds r2, r0, #0
cmp r2, #0
beq _0819FF48
ldr r3, _0819FF94
adds r0, r4, r3
bl ItemIdToBattleMoveId
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 0x03005AF0
_0819FF84: .4byte 0x085DC21C
_0819FF88: .4byte 0x082F9D04
_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 Random
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 0x085DC99C
_081A006C: .4byte 0x0300602C
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 0x0300602C
_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 GetLatestLearnedMoves
GetLatestLearnedMoves: @ 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 0x03005AF0
_081A0154: .4byte 0x082F9D04
_081A0158: .4byte 0x0000FFFF
_081A015C: .4byte 0x000001FF
thumb_func_end GetLatestLearnedMoves
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 0x03005AF0
_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 GetLatestLearnedMoves
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 0x085DC21C
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 GetLatestLearnedMoves
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 0x03005AF0
_081A0384: .4byte 0x085DC228
_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 CreateMenuWithAnswers
CreateMenuWithAnswers: @ 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 0x081A03EC
_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 0x085CAB0D
_081A0420: .4byte 0x085CAB13
_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 0x082EA31C
_081A0498: .4byte 0x03005AF0
_081A049C: .4byte 0x085DC228
_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 0x03005AF0
_081A04E0: .4byte 0x03006030
_081A04E4: .4byte 0x082EA31C
_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 0x03006030
_081A0510: .4byte 0x082EACC4
_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 0x085CC47F
_081A052C: .4byte 0x085CC486
_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 0x085CAAD8
_081A0548: .4byte 0x085CAADB
_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 CreateAndShowWindow
lsls r0, r0, #0x18
lsrs r5, r0, #0x18
adds r0, r5, #0
movs r1, #0
bl SetStandardWindowBorderStyle
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 AddTextPrinterParameterized
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 CreateChooseAnswerTask
_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 CreateMenuWithAnswers
thumb_func_start Task_ChooseAnswer
Task_ChooseAnswer: @ 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 Menu_ProcessInputNoWrap
b _081A05FC
.align 2, 0
_081A05F4: .4byte 0x03005B68
_081A05F8:
bl Menu_ProcessInput
_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 PlaySE
ldr r1, _081A0628
movs r0, #0x7f
strh r0, [r1]
b _081A0630
.align 2, 0
_081A0628: .4byte 0x02037290
_081A062C:
ldr r0, _081A0648
strh r1, [r0]
_081A0630:
ldrb r0, [r4, #0xc]
bl RemoveAndHideWindow
adds r0, r5, #0
bl DestroyTask
bl EnableBothScriptContexts
_081A0640:
pop {r4, r5}
pop {r0}
bx r0
.align 2, 0
_081A0648: .4byte 0x02037290
thumb_func_end Task_ChooseAnswer
thumb_func_start CreateAndShowWindow
CreateAndShowWindow: @ 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 CreateWindowTemplate
ldr r0, [sp, #0x10]
ldr r1, [sp, #0x14]
str r0, [sp, #0x18]
str r1, [sp, #0x1c]
add r0, sp, #0x18
bl AddWindow
adds r4, r0, #0
lsls r4, r4, #0x18
lsrs r4, r4, #0x18
adds r0, r4, #0
bl PutWindowTilemap
adds r0, r4, #0
movs r1, #3
bl CopyWindowToVram
adds r0, r4, #0
add sp, #0x20
pop {r4, r5}
pop {r1}
bx r1
thumb_func_end CreateAndShowWindow
thumb_func_start RemoveAndHideWindow
RemoveAndHideWindow: @ 0x081A06B0
push {r4, lr}
adds r4, r0, #0
lsls r4, r4, #0x18
lsrs r4, r4, #0x18
adds r0, r4, #0
movs r1, #1
bl ClearStdWindowAndFrameToTransparent
adds r0, r4, #0
bl RemoveWindow
pop {r4}
pop {r0}
bx r0
thumb_func_end RemoveAndHideWindow
thumb_func_start CreateChooseAnswerTask
CreateChooseAnswerTask: @ 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 CreateTask
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 0x081A05D5
_081A0704: .4byte 0x03005B60
_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 0x03005B60
thumb_func_end CreateChooseAnswerTask
thumb_func_start CallApprenticeFunction
CallApprenticeFunction: @ 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 CallApprenticeFunction
thumb_func_start sub_081A0738
sub_081A0738: @ 0x081A0738
bx r0
.align 2, 0
_081A073C: .4byte 0x085DCB0C
_081A0740: .4byte 0x02037280
thumb_func_end sub_081A0738
thumb_func_start Script_ResetPlayerApprentice
Script_ResetPlayerApprentice: @ 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 0x03005AF0
thumb_func_end Script_ResetPlayerApprentice
thumb_func_start Script_IsPlayersApprenticeActive
Script_IsPlayersApprenticeActive: @ 0x081A0804
push {lr}
bl IsPlayersApprenticeActive
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 0x02037290
_081A081C:
ldr r1, _081A0828
movs r0, #1
strh r0, [r1]
_081A0822:
pop {r0}
bx r0
.align 2, 0
_081A0828: .4byte 0x02037290
thumb_func_end Script_IsPlayersApprenticeActive
thumb_func_start Script_CreateApprenticeMenu
Script_CreateApprenticeMenu: @ 0x081A082C
push {lr}
ldr r0, _081A083C
ldrb r0, [r0]
bl SetPlayersApprenticeLvlMode
pop {r0}
bx r0
.align 2, 0
_081A083C: .4byte 0x02037282
thumb_func_end Script_CreateApprenticeMenu
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 0x03005AF0
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 0x02037290
_081A0894: .4byte 0x03005AF0
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 0x03005AF0
_081A08B8: .4byte 0x02037290
_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 0x02037290
_081A08E0:
movs r0, #0
_081A08E2:
strh r0, [r2]
_081A08E4:
pop {r0}
bx r0
thumb_func_end sub_081A0898
thumb_func_start Script_SetPlayersApprenticeLvlMode
Script_SetPlayersApprenticeLvlMode: @ 0x081A08E8
push {lr}
ldr r0, _081A08F8
ldrb r0, [r0]
bl CreateMenuWithAnswers
pop {r0}
bx r0
.align 2, 0
_081A08F8: .4byte 0x02037282
thumb_func_end Script_SetPlayersApprenticeLvlMode
thumb_func_start Task_WaitForPrintingMessage
Task_WaitForPrintingMessage: @ 0x081A08FC
push {r4, lr}
lsls r0, r0, #0x18
lsrs r4, r0, #0x18
bl RunTextPrintersAndIsPrinter0Active
lsls r0, r0, #0x10
cmp r0, #0
bne _081A0930
adds r0, r4, #0
bl DestroyTask
ldr r0, _081A0924
ldrh r0, [r0]
cmp r0, #0
beq _081A092C
ldr r0, _081A0928
bl ExecuteFuncAfterButtonPress
b _081A0930
.align 2, 0
_081A0924: .4byte 0x02037282
_081A0928: .4byte 0x080988C5
_081A092C:
bl EnableBothScriptContexts
_081A0930:
pop {r4}
pop {r0}
bx r0
.align 2, 0
thumb_func_end Task_WaitForPrintingMessage
thumb_func_start PrintMessage
PrintMessage: @ 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 0x02037284
_081A0954: .4byte 0x085DC61C
_081A0958: .4byte 0x03005AF0
_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 0x085DC61C
_081A0974: .4byte 0x03005AF0
_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 0x085DC7DC
_081A0990: .4byte 0x03005AF0
_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 0x085DC7DC
_081A09AC: .4byte 0x03005AF0
_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 0x085DC85C
_081A09C8: .4byte 0x03005AF0
_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 0x085DC85C
_081A09E4: .4byte 0x03005AF0
_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 0x085DC69C
_081A0A04: .4byte 0x03005AF0
_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 0x085DC8DC
_081A0A20: .4byte 0x03005AF0
_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 0x085DC69C
_081A0A40: .4byte 0x03005AF0
_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 0x085DC69C
_081A0A60: .4byte 0x03005AF0
_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 0x085DC69C
_081A0A84: .4byte 0x03005AF0
_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 0x085DC69C
_081A0AA8: .4byte 0x03005AF0
_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 0x085DC8DC
_081A0AC4: .4byte 0x03005AF0
_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 0x085DC51C
_081A0AE0: .4byte 0x03005AF0
_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 0x085DC51C
_081A0AFC: .4byte 0x03005AF0
_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 0x085DC51C
_081A0B18: .4byte 0x03005AF0
_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 0x085DC51C
_081A0B38: .4byte 0x03005AF0
_081A0B3C:
bl EnableBothScriptContexts
b _081A0B56
_081A0B42:
ldr r0, _081A0B5C
bl StringExpandPlaceholders
movs r0, #1
bl AddTextPrinterForMessage
ldr r0, _081A0B60
movs r1, #1
bl CreateTask
_081A0B56:
pop {r0}
bx r0
.align 2, 0
_081A0B5C: .4byte 0x02021C7C
_081A0B60: .4byte 0x081A08FD
thumb_func_end PrintMessage
thumb_func_start Script_PrintMessage
Script_PrintMessage: @ 0x081A0B64
push {lr}
bl ScriptContext2_Enable
bl FreezeEventObjects
bl sub_0808B1C8
bl sub_0808B658
movs r0, #0
movs r1, #1
bl ClearDialogWindowAndFrame
bl PrintMessage
pop {r0}
bx r0
.align 2, 0
thumb_func_end Script_PrintMessage
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 0x03005AF0
_081A0BA8: .4byte 0x02037290
_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 0x02037290
_081A0BE0:
ldr r1, _081A0BE8
movs r0, #3
b _081A0BFC
.align 2, 0
_081A0BE8: .4byte 0x02037290
_081A0BEC:
ldr r1, _081A0BF4
movs r0, #1
b _081A0BFC
.align 2, 0
_081A0BF4: .4byte 0x02037290
_081A0BF8:
ldr r1, _081A0C04
movs r0, #5
_081A0BFC:
strh r0, [r1]
pop {r0}
bx r0
.align 2, 0
_081A0C04: .4byte 0x02037290
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 0x02037282
_081A0C40: .4byte 0x02037284
_081A0C44: .4byte 0x03005AF0
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 0x03005AF0
_081A0C84: .4byte 0x02037282
_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 AllocZeroed
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 0x03005AF0
_081A0D50: .4byte 0x03006030
_081A0D54: .4byte 0x02037282
_081A0D58: .4byte 0x085DC21C
_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 0x03005AF0
_081A0E28: .4byte 0x085DC21C
_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 0x03005AF0
_081A0EB8: .4byte 0x085DC21C
thumb_func_end sub_081A0C9C
thumb_func_start sub_081A0EBC
sub_081A0EBC: @ 0x081A0EBC
push {r4, lr}
ldr r4, _081A0ED0
ldr r0, [r4]
bl Free
movs r0, #0
str r0, [r4]
pop {r4}
pop {r0}
bx r0
.align 2, 0
_081A0ED0: .4byte 0x03006030
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 0x02037282
_081A0EF0:
cmp r0, #2
beq _081A0F08
b _081A10F2
_081A0EF6:
ldr r5, _081A0EFC
b _081A0F0A
.align 2, 0
_081A0EFC: .4byte 0x02021C40
_081A0F00:
ldr r5, _081A0F04
b _081A0F0A
.align 2, 0
_081A0F04: .4byte 0x02021C54
_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 0x02021C68
_081A0F24: .4byte 0x02037284
_081A0F28: .4byte 0x081A0F2C
_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 0x03006030
_081A0F6C: .4byte 0x082EA31C
_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 0x03006030
_081A0F88: .4byte 0x082EA31C
_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 0x03006030
_081A0FA4: .4byte 0x082EA31C
_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 0x03006030
_081A0FBC: .4byte 0x082EACC4
_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 0x03006030
_081A0FD4: .4byte 0x082EACC4
_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 ItemId_GetName
adds r1, r0, #0
b _081A107C
.align 2, 0
_081A0FF8: .4byte 0x03005AF0
_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 StringCopy
b _081A10F2
.align 2, 0
_081A1040: .4byte 0x03005AF0
_081A1044: .4byte 0x085DC21C
_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 0x03005AF0
_081A1060: .4byte 0x085CAB0D
_081A1064:
ldr r1, _081A1068
b _081A107C
.align 2, 0
_081A1068: .4byte 0x085CAB13
_081A106C:
ldr r0, _081A1084
ldr r0, [r0]
movs r1, #0x82
lsls r1, r1, #1
adds r0, r0, r1
bl FrontierSpeechToString
ldr r1, _081A1088
_081A107C:
adds r0, r5, #0
bl StringCopy
b _081A10F2
.align 2, 0
_081A1084: .4byte 0x03005AF0
_081A1088: .4byte 0x02021C7C
_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 0x03005AF0
_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 StringCopy
_081A10F2:
add sp, #0x10
pop {r4, r5, r6, r7}
pop {r0}
bx r0
.align 2, 0
_081A10FC: .4byte 0x085DC21C
_081A1100: .4byte 0x082EA31C
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 0x03005AF0
_081A1120: .4byte 0x02037282
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 0x03005AF0
_081A120C: .4byte 0x02037282
_081A1210: .4byte 0x02037290
_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 0x03005AF0
_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 GetTrainerId
adds r4, r0, #0
ldr r0, [r7]
adds r0, #0xa
bl GetTrainerId
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 0x03005AF0
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 0x03005AF0
_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 StringCopy
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 CalcApprenticeChecksum
pop {r4, r5}
pop {r0}
bx r0
.align 2, 0
_081A140C: .4byte 0x03005AF0
_081A1410: .4byte 0x0829BDA5
_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 VarSet
b _081A14A0
.align 2, 0
_081A1460: .4byte 0x085DC21C
_081A1464: .4byte 0x03005AF0
_081A1468: .4byte 0x085BBE20
_081A146C: .4byte 0x085BBE52
_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 VarSet
_081A14A0:
pop {r0}
bx r0
.align 2, 0
_081A14A4: .4byte 0x085BBE3E
_081A14A8: .4byte 0x085BBE70
_081A14AC: .4byte 0x00004010
thumb_func_end sub_081A1418
thumb_func_start Script_SetPlayerApprenticeTrainerGfxId
Script_SetPlayerApprenticeTrainerGfxId: @ 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 VarSet
b _081A1534
.align 2, 0
_081A14F4: .4byte 0x085DC21C
_081A14F8: .4byte 0x03005AF0
_081A14FC: .4byte 0x085BBE20
_081A1500: .4byte 0x085BBE52
_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 VarSet
_081A1534:
pop {r0}
bx r0
.align 2, 0
_081A1538: .4byte 0x085BBE3E
_081A153C: .4byte 0x085BBE70
_081A1540: .4byte 0x00004010
thumb_func_end Script_SetPlayerApprenticeTrainerGfxId
thumb_func_start sub_081A1544
sub_081A1544: @ 0x081A1544
ldr r1, _081A154C
movs r0, #1
strh r0, [r1]
bx lr
.align 2, 0
_081A154C: .4byte 0x02037280
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 0x02037280
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 SwitchTaskToFollowupFunc
_081A157C:
pop {r0}
bx r0
.align 2, 0
_081A1580: .4byte 0x03002360
thumb_func_end sub_081A155C
thumb_func_start Task_ExecuteFuncAfterButtonPress
Task_ExecuteFuncAfterButtonPress: @ 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 DestroyTask
_081A15C0:
pop {r4}
pop {r0}
bx r0
.align 2, 0
_081A15C8: .4byte 0x03002360
_081A15CC: .4byte 0x03006034
_081A15D0: .4byte 0x03005B60
thumb_func_end Task_ExecuteFuncAfterButtonPress
thumb_func_start ExecuteFuncAfterButtonPress
ExecuteFuncAfterButtonPress: @ 0x081A15D4
push {r4, lr}
adds r4, r0, #0
ldr r0, _081A15FC
movs r1, #1
bl CreateTask
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 0x081A1585
_081A1600: .4byte 0x03005B60
thumb_func_end ExecuteFuncAfterButtonPress
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 CreateTask
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
adds r1, r4, #0
adds r2, r5, #0
bl SetTaskFuncWithFollowupFunc
pop {r4, r5}
pop {r0}
bx r0
.align 2, 0
_081A1624: .4byte 0x081A155D
thumb_func_end sub_081A1604