mirror of
https://github.com/pret/pokefirered.git
synced 2026-05-23 14:16:13 -05:00
3903 lines
60 KiB
ArmAsm
3903 lines
60 KiB
ArmAsm
.include "asm/macros.inc"
|
|
.include "constants/constants.inc"
|
|
|
|
.syntax unified
|
|
|
|
.text
|
|
|
|
thumb_func_start sub_803F5B4
|
|
sub_803F5B4: @ 803F5B4
|
|
push {r4-r6,lr}
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
adds r1, r0, 0
|
|
movs r6, 0
|
|
cmp r0, 0x1
|
|
beq _0803F608
|
|
cmp r0, 0x1
|
|
bgt _0803F5CC
|
|
cmp r0, 0
|
|
beq _0803F5D2
|
|
b _0803F68A
|
|
_0803F5CC:
|
|
cmp r1, 0x2
|
|
beq _0803F650
|
|
b _0803F68A
|
|
_0803F5D2:
|
|
movs r5, 0
|
|
ldr r0, _0803F5FC @ =gActiveBattler
|
|
ldrb r3, [r0]
|
|
ldr r4, _0803F600 @ =gAbsentBattlerFlags
|
|
ldr r2, _0803F604 @ =gBitTable
|
|
_0803F5DC:
|
|
cmp r5, r3
|
|
beq _0803F5F0
|
|
ldrb r0, [r4]
|
|
ldr r1, [r2]
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
bne _0803F5F0
|
|
adds r0, r6, 0x1
|
|
lsls r0, 24
|
|
lsrs r6, r0, 24
|
|
_0803F5F0:
|
|
adds r2, 0x4
|
|
adds r5, 0x1
|
|
cmp r5, 0x3
|
|
ble _0803F5DC
|
|
b _0803F68A
|
|
.align 2, 0
|
|
_0803F5FC: .4byte gActiveBattler
|
|
_0803F600: .4byte gAbsentBattlerFlags
|
|
_0803F604: .4byte gBitTable
|
|
_0803F608:
|
|
movs r5, 0
|
|
_0803F60A:
|
|
lsls r0, r5, 24
|
|
lsrs r0, 24
|
|
bl GetBankSide
|
|
adds r4, r0, 0
|
|
ldr r0, _0803F644 @ =sBattler_AI
|
|
ldrb r0, [r0]
|
|
bl GetBankSide
|
|
lsls r4, 24
|
|
lsls r0, 24
|
|
cmp r4, r0
|
|
bne _0803F63C
|
|
ldr r0, _0803F648 @ =gAbsentBattlerFlags
|
|
ldrb r1, [r0]
|
|
ldr r2, _0803F64C @ =gBitTable
|
|
lsls r0, r5, 2
|
|
adds r0, r2
|
|
ldr r0, [r0]
|
|
ands r1, r0
|
|
cmp r1, 0
|
|
bne _0803F63C
|
|
adds r0, r6, 0x1
|
|
lsls r0, 24
|
|
lsrs r6, r0, 24
|
|
_0803F63C:
|
|
adds r5, 0x1
|
|
cmp r5, 0x3
|
|
ble _0803F60A
|
|
b _0803F68A
|
|
.align 2, 0
|
|
_0803F644: .4byte sBattler_AI
|
|
_0803F648: .4byte gAbsentBattlerFlags
|
|
_0803F64C: .4byte gBitTable
|
|
_0803F650:
|
|
movs r5, 0
|
|
_0803F652:
|
|
lsls r0, r5, 24
|
|
lsrs r0, 24
|
|
bl GetBankSide
|
|
adds r4, r0, 0
|
|
ldr r0, _0803F694 @ =gBattlerTarget
|
|
ldrb r0, [r0]
|
|
bl GetBankSide
|
|
lsls r4, 24
|
|
lsls r0, 24
|
|
cmp r4, r0
|
|
bne _0803F684
|
|
ldr r0, _0803F698 @ =gAbsentBattlerFlags
|
|
ldrb r1, [r0]
|
|
ldr r2, _0803F69C @ =gBitTable
|
|
lsls r0, r5, 2
|
|
adds r0, r2
|
|
ldr r0, [r0]
|
|
ands r1, r0
|
|
cmp r1, 0
|
|
bne _0803F684
|
|
adds r0, r6, 0x1
|
|
lsls r0, 24
|
|
lsrs r6, r0, 24
|
|
_0803F684:
|
|
adds r5, 0x1
|
|
cmp r5, 0x3
|
|
ble _0803F652
|
|
_0803F68A:
|
|
adds r0, r6, 0
|
|
pop {r4-r6}
|
|
pop {r1}
|
|
bx r1
|
|
.align 2, 0
|
|
_0803F694: .4byte gBattlerTarget
|
|
_0803F698: .4byte gAbsentBattlerFlags
|
|
_0803F69C: .4byte gBitTable
|
|
thumb_func_end sub_803F5B4
|
|
|
|
thumb_func_start GetDefaultMoveTarget
|
|
GetDefaultMoveTarget: @ 803F6A0
|
|
push {r4-r6,lr}
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
bl GetBankIdentity
|
|
movs r1, 0x1
|
|
movs r6, 0x1
|
|
adds r4, r6, 0
|
|
ands r4, r0
|
|
eors r4, r1
|
|
adds r5, r4, 0
|
|
ldr r0, _0803F6C4 @ =gBattleTypeFlags
|
|
ldr r0, [r0]
|
|
ands r0, r6
|
|
cmp r0, 0
|
|
bne _0803F6C8
|
|
adds r0, r4, 0
|
|
b _0803F712
|
|
.align 2, 0
|
|
_0803F6C4: .4byte gBattleTypeFlags
|
|
_0803F6C8:
|
|
movs r0, 0
|
|
bl sub_803F5B4
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
cmp r0, 0x1
|
|
bls _0803F6EC
|
|
bl Random
|
|
adds r1, r6, 0
|
|
ands r1, r0
|
|
cmp r1, 0
|
|
bne _0803F6E8
|
|
movs r0, 0x2
|
|
eors r0, r4
|
|
b _0803F712
|
|
_0803F6E8:
|
|
adds r0, r4, 0
|
|
b _0803F712
|
|
_0803F6EC:
|
|
ldr r0, _0803F704 @ =gAbsentBattlerFlags
|
|
ldrb r1, [r0]
|
|
ldr r2, _0803F708 @ =gBitTable
|
|
lsls r0, r4, 2
|
|
adds r0, r2
|
|
ldr r0, [r0]
|
|
ands r1, r0
|
|
cmp r1, 0
|
|
bne _0803F70C
|
|
adds r0, r4, 0
|
|
b _0803F712
|
|
.align 2, 0
|
|
_0803F704: .4byte gAbsentBattlerFlags
|
|
_0803F708: .4byte gBitTable
|
|
_0803F70C:
|
|
movs r0, 0x2
|
|
eors r5, r0
|
|
adds r0, r5, 0
|
|
_0803F712:
|
|
bl GetBankByIdentity
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
pop {r4-r6}
|
|
pop {r1}
|
|
bx r1
|
|
thumb_func_end GetDefaultMoveTarget
|
|
|
|
thumb_func_start GetMonGender
|
|
GetMonGender: @ 803F720
|
|
push {lr}
|
|
bl GetBoxMonGender
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
pop {r1}
|
|
bx r1
|
|
thumb_func_end GetMonGender
|
|
|
|
thumb_func_start GetBoxMonGender
|
|
GetBoxMonGender: @ 803F730
|
|
push {r4,r5,lr}
|
|
adds r4, r0, 0
|
|
movs r1, 0xB
|
|
movs r2, 0
|
|
bl GetBoxMonData
|
|
lsls r0, 16
|
|
lsrs r5, r0, 16
|
|
adds r0, r4, 0
|
|
movs r1, 0
|
|
movs r2, 0
|
|
bl GetBoxMonData
|
|
adds r2, r0, 0
|
|
ldr r1, _0803F780 @ =gBaseStats
|
|
lsls r0, r5, 3
|
|
subs r0, r5
|
|
lsls r0, 2
|
|
adds r0, r1
|
|
ldrb r0, [r0, 0x10]
|
|
cmp r0, 0
|
|
beq _0803F786
|
|
cmp r0, 0
|
|
blt _0803F768
|
|
cmp r0, 0xFF
|
|
bgt _0803F768
|
|
cmp r0, 0xFE
|
|
bge _0803F786
|
|
_0803F768:
|
|
ldr r1, _0803F780 @ =gBaseStats
|
|
lsls r0, r5, 3
|
|
subs r0, r5
|
|
lsls r0, 2
|
|
adds r0, r1
|
|
ldrb r1, [r0, 0x10]
|
|
movs r0, 0xFF
|
|
ands r0, r2
|
|
cmp r1, r0
|
|
bhi _0803F784
|
|
movs r0, 0
|
|
b _0803F786
|
|
.align 2, 0
|
|
_0803F780: .4byte gBaseStats
|
|
_0803F784:
|
|
movs r0, 0xFE
|
|
_0803F786:
|
|
pop {r4,r5}
|
|
pop {r1}
|
|
bx r1
|
|
thumb_func_end GetBoxMonGender
|
|
|
|
thumb_func_start GetGenderFromSpeciesAndPersonality
|
|
GetGenderFromSpeciesAndPersonality: @ 803F78C
|
|
push {lr}
|
|
adds r3, r1, 0
|
|
lsls r0, 16
|
|
lsrs r2, r0, 16
|
|
ldr r1, _0803F7C8 @ =gBaseStats
|
|
lsls r0, r2, 3
|
|
subs r0, r2
|
|
lsls r0, 2
|
|
adds r0, r1
|
|
ldrb r0, [r0, 0x10]
|
|
cmp r0, 0
|
|
beq _0803F7CE
|
|
cmp r0, 0
|
|
blt _0803F7B0
|
|
cmp r0, 0xFF
|
|
bgt _0803F7B0
|
|
cmp r0, 0xFE
|
|
bge _0803F7CE
|
|
_0803F7B0:
|
|
lsls r0, r2, 3
|
|
subs r0, r2
|
|
lsls r0, 2
|
|
adds r0, r1
|
|
ldrb r1, [r0, 0x10]
|
|
movs r0, 0xFF
|
|
ands r0, r3
|
|
cmp r1, r0
|
|
bhi _0803F7CC
|
|
movs r0, 0
|
|
b _0803F7CE
|
|
.align 2, 0
|
|
_0803F7C8: .4byte gBaseStats
|
|
_0803F7CC:
|
|
movs r0, 0xFE
|
|
_0803F7CE:
|
|
pop {r1}
|
|
bx r1
|
|
thumb_func_end GetGenderFromSpeciesAndPersonality
|
|
|
|
thumb_func_start sub_803F7D4
|
|
sub_803F7D4: @ 803F7D4
|
|
push {r4-r6,lr}
|
|
lsls r0, 16
|
|
lsrs r5, r0, 16
|
|
lsls r1, 24
|
|
lsrs r4, r1, 24
|
|
ldr r0, _0803F808 @ =gUnknown_202401C
|
|
ldr r2, [r0]
|
|
cmp r2, 0
|
|
beq _0803F810
|
|
cmp r4, 0x3
|
|
bls _0803F7EC
|
|
movs r4, 0
|
|
_0803F7EC:
|
|
ldr r0, _0803F80C @ =gUnknown_20244DC
|
|
lsls r1, r4, 1
|
|
adds r1, r4
|
|
lsls r1, 3
|
|
adds r1, r2, r1
|
|
adds r2, r0, 0
|
|
adds r1, 0x14
|
|
ldm r1!, {r3,r4,r6}
|
|
stm r2!, {r3,r4,r6}
|
|
ldm r1!, {r3,r4,r6}
|
|
stm r2!, {r3,r4,r6}
|
|
adds r3, r0, 0
|
|
b _0803F84C
|
|
.align 2, 0
|
|
_0803F808: .4byte gUnknown_202401C
|
|
_0803F80C: .4byte gUnknown_20244DC
|
|
_0803F810:
|
|
ldr r0, _0803F828 @ =gUnknown_20244F4
|
|
ldr r1, [r0]
|
|
cmp r1, 0
|
|
beq _0803F830
|
|
ldrb r0, [r1]
|
|
lsrs r0, 4
|
|
cmp r4, r0
|
|
blt _0803F822
|
|
movs r4, 0
|
|
_0803F822:
|
|
ldr r3, _0803F82C @ =gUnknown_20244DC
|
|
ldr r2, [r1, 0x10]
|
|
b _0803F83A
|
|
.align 2, 0
|
|
_0803F828: .4byte gUnknown_20244F4
|
|
_0803F82C: .4byte gUnknown_20244DC
|
|
_0803F830:
|
|
cmp r4, 0x3
|
|
bls _0803F836
|
|
movs r4, 0
|
|
_0803F836:
|
|
ldr r3, _0803F858 @ =gUnknown_20244DC
|
|
ldr r2, _0803F85C @ =gUnknown_825DEF0
|
|
_0803F83A:
|
|
lsls r0, r4, 1
|
|
adds r0, r4
|
|
lsls r0, 3
|
|
adds r1, r3, 0
|
|
adds r0, r2
|
|
ldm r0!, {r2,r4,r6}
|
|
stm r1!, {r2,r4,r6}
|
|
ldm r0!, {r2,r4,r6}
|
|
stm r1!, {r2,r4,r6}
|
|
_0803F84C:
|
|
strh r5, [r3, 0x2]
|
|
ldr r0, _0803F860 @ =gUnknown_82349BC
|
|
str r0, [r3, 0x8]
|
|
pop {r4-r6}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_0803F858: .4byte gUnknown_20244DC
|
|
_0803F85C: .4byte gUnknown_825DEF0
|
|
_0803F860: .4byte gUnknown_82349BC
|
|
thumb_func_end sub_803F7D4
|
|
|
|
thumb_func_start sub_803F864
|
|
sub_803F864: @ 803F864
|
|
push {r4-r6,lr}
|
|
lsls r0, 16
|
|
lsrs r4, r0, 16
|
|
lsls r1, 24
|
|
lsrs r3, r1, 24
|
|
ldr r0, _0803F89C @ =gUnknown_20244DC
|
|
strh r4, [r0, 0x2]
|
|
adds r5, r0, 0
|
|
cmp r3, 0
|
|
beq _0803F87C
|
|
cmp r3, 0x2
|
|
bne _0803F8A8
|
|
_0803F87C:
|
|
ldr r2, _0803F8A0 @ =gUnknown_825DF50
|
|
lsls r0, r4, 1
|
|
adds r0, r4
|
|
lsls r0, 3
|
|
adds r1, r5, 0
|
|
adds r0, r2
|
|
ldm r0!, {r2,r3,r6}
|
|
stm r1!, {r2,r3,r6}
|
|
ldm r0!, {r2,r3,r6}
|
|
stm r1!, {r2,r3,r6}
|
|
ldr r1, _0803F8A4 @ =gUnknown_8239F74
|
|
lsls r0, r4, 2
|
|
adds r0, r1
|
|
ldr r0, [r0]
|
|
b _0803F8E8
|
|
.align 2, 0
|
|
_0803F89C: .4byte gUnknown_20244DC
|
|
_0803F8A0: .4byte gUnknown_825DF50
|
|
_0803F8A4: .4byte gUnknown_8239F74
|
|
_0803F8A8:
|
|
ldr r0, _0803F8C8 @ =gUnknown_202401C
|
|
ldr r1, [r0]
|
|
cmp r1, 0
|
|
beq _0803F8CC
|
|
lsls r0, r3, 1
|
|
adds r0, r3
|
|
lsls r0, 3
|
|
adds r0, r1, r0
|
|
adds r1, r5, 0
|
|
adds r0, 0x14
|
|
ldm r0!, {r2,r3,r6}
|
|
stm r1!, {r2,r3,r6}
|
|
ldm r0!, {r2,r3,r6}
|
|
stm r1!, {r2,r3,r6}
|
|
b _0803F8E0
|
|
.align 2, 0
|
|
_0803F8C8: .4byte gUnknown_202401C
|
|
_0803F8CC:
|
|
ldr r0, _0803F8F0 @ =gUnknown_825DEF0
|
|
lsls r1, r3, 1
|
|
adds r1, r3
|
|
lsls r1, 3
|
|
adds r2, r5, 0
|
|
adds r1, r0
|
|
ldm r1!, {r0,r3,r6}
|
|
stm r2!, {r0,r3,r6}
|
|
ldm r1!, {r0,r3,r6}
|
|
stm r2!, {r0,r3,r6}
|
|
_0803F8E0:
|
|
ldr r0, _0803F8F4 @ =gUnknown_82390DC
|
|
lsls r1, r4, 2
|
|
adds r1, r0
|
|
ldr r0, [r1]
|
|
_0803F8E8:
|
|
str r0, [r5, 0x8]
|
|
pop {r4-r6}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_0803F8F0: .4byte gUnknown_825DEF0
|
|
_0803F8F4: .4byte gUnknown_82390DC
|
|
thumb_func_end sub_803F864
|
|
|
|
thumb_func_start EncryptBoxMon
|
|
EncryptBoxMon: @ 803F8F8
|
|
push {r4,lr}
|
|
adds r3, r0, 0
|
|
movs r4, 0
|
|
adds r2, r3, 0
|
|
adds r2, 0x20
|
|
_0803F902:
|
|
ldr r0, [r2]
|
|
ldr r1, [r3]
|
|
eors r0, r1
|
|
str r0, [r2]
|
|
ldr r1, [r3, 0x4]
|
|
eors r0, r1
|
|
stm r2!, {r0}
|
|
adds r4, 0x1
|
|
cmp r4, 0xB
|
|
bls _0803F902
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end EncryptBoxMon
|
|
|
|
thumb_func_start DecryptBoxMon
|
|
DecryptBoxMon: @ 803F91C
|
|
push {r4,lr}
|
|
adds r3, r0, 0
|
|
movs r4, 0
|
|
adds r2, r3, 0
|
|
adds r2, 0x20
|
|
_0803F926:
|
|
ldr r0, [r2]
|
|
ldr r1, [r3, 0x4]
|
|
eors r0, r1
|
|
str r0, [r2]
|
|
ldr r1, [r3]
|
|
eors r0, r1
|
|
stm r2!, {r0}
|
|
adds r4, 0x1
|
|
cmp r4, 0xB
|
|
bls _0803F926
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end DecryptBoxMon
|
|
|
|
thumb_func_start GetSubstruct
|
|
GetSubstruct: @ 803F940
|
|
push {r4-r6,lr}
|
|
adds r5, r0, 0
|
|
adds r0, r1, 0
|
|
lsls r2, 24
|
|
lsrs r4, r2, 24
|
|
movs r6, 0
|
|
movs r1, 0x18
|
|
bl __umodsi3
|
|
cmp r0, 0x17
|
|
bls _0803F958
|
|
b _0803FBE0
|
|
_0803F958:
|
|
lsls r0, 2
|
|
ldr r1, _0803F964 @ =_0803F968
|
|
adds r0, r1
|
|
ldr r0, [r0]
|
|
mov pc, r0
|
|
.align 2, 0
|
|
_0803F964: .4byte _0803F968
|
|
.align 2, 0
|
|
_0803F968:
|
|
.4byte _0803F9C8
|
|
.4byte _0803F9EC
|
|
.4byte _0803FA08
|
|
.4byte _0803FA1E
|
|
.4byte _0803FA34
|
|
.4byte _0803FA50
|
|
.4byte _0803FA66
|
|
.4byte _0803FA7C
|
|
.4byte _0803FA8C
|
|
.4byte _0803FAAA
|
|
.4byte _0803FAC2
|
|
.4byte _0803FAD2
|
|
.4byte _0803FAE6
|
|
.4byte _0803FAF8
|
|
.4byte _0803FB0A
|
|
.4byte _0803FB1C
|
|
.4byte _0803FB2E
|
|
.4byte _0803FB40
|
|
.4byte _0803FB52
|
|
.4byte _0803FB68
|
|
.4byte _0803FB7C
|
|
.4byte _0803FB8A
|
|
.4byte _0803FB9C
|
|
.4byte _0803FBB0
|
|
_0803F9C8:
|
|
adds r0, r5, 0
|
|
adds r0, 0x20
|
|
cmp r4, 0x1
|
|
bne _0803F9D2
|
|
b _0803FBD8
|
|
_0803F9D2:
|
|
cmp r4, 0x1
|
|
bgt _0803F9DE
|
|
_0803F9D6:
|
|
cmp r4, 0
|
|
bne _0803F9DC
|
|
b _0803FBDE
|
|
_0803F9DC:
|
|
b _0803FBE0
|
|
_0803F9DE:
|
|
cmp r4, 0x2
|
|
bne _0803F9E4
|
|
b _0803FBD2
|
|
_0803F9E4:
|
|
cmp r4, 0x3
|
|
beq _0803F9EA
|
|
b _0803FBE0
|
|
_0803F9EA:
|
|
b _0803FBCC
|
|
_0803F9EC:
|
|
adds r0, r5, 0
|
|
adds r0, 0x20
|
|
cmp r4, 0x1
|
|
bne _0803F9F6
|
|
b _0803FBD8
|
|
_0803F9F6:
|
|
cmp r4, 0x1
|
|
ble _0803F9D6
|
|
_0803F9FA:
|
|
cmp r4, 0x2
|
|
bne _0803FA00
|
|
b _0803FBCC
|
|
_0803FA00:
|
|
cmp r4, 0x3
|
|
beq _0803FA06
|
|
b _0803FBE0
|
|
_0803FA06:
|
|
b _0803FBD2
|
|
_0803FA08:
|
|
adds r0, r5, 0
|
|
adds r0, 0x20
|
|
cmp r4, 0x1
|
|
bne _0803FA12
|
|
b _0803FBD2
|
|
_0803FA12:
|
|
cmp r4, 0x1
|
|
ble _0803F9D6
|
|
cmp r4, 0x2
|
|
bne _0803FA1C
|
|
b _0803FBD8
|
|
_0803FA1C:
|
|
b _0803F9E4
|
|
_0803FA1E:
|
|
adds r0, r5, 0
|
|
adds r0, 0x20
|
|
cmp r4, 0x1
|
|
bne _0803FA28
|
|
b _0803FBCC
|
|
_0803FA28:
|
|
cmp r4, 0x1
|
|
ble _0803F9D6
|
|
cmp r4, 0x2
|
|
bne _0803FA32
|
|
b _0803FBD8
|
|
_0803FA32:
|
|
b _0803FA00
|
|
_0803FA34:
|
|
adds r0, r5, 0
|
|
adds r0, 0x20
|
|
cmp r4, 0x1
|
|
bne _0803FA3E
|
|
b _0803FBD2
|
|
_0803FA3E:
|
|
cmp r4, 0x1
|
|
ble _0803F9D6
|
|
_0803FA42:
|
|
cmp r4, 0x2
|
|
bne _0803FA48
|
|
b _0803FBCC
|
|
_0803FA48:
|
|
cmp r4, 0x3
|
|
beq _0803FA4E
|
|
b _0803FBE0
|
|
_0803FA4E:
|
|
b _0803FBD8
|
|
_0803FA50:
|
|
adds r0, r5, 0
|
|
adds r0, 0x20
|
|
cmp r4, 0x1
|
|
bne _0803FA5A
|
|
b _0803FBCC
|
|
_0803FA5A:
|
|
cmp r4, 0x1
|
|
ble _0803F9D6
|
|
cmp r4, 0x2
|
|
bne _0803FA64
|
|
b _0803FBD2
|
|
_0803FA64:
|
|
b _0803FA48
|
|
_0803FA66:
|
|
adds r0, r5, 0
|
|
adds r0, 0x20
|
|
cmp r4, 0x1
|
|
bne _0803FA70
|
|
b _0803FBDE
|
|
_0803FA70:
|
|
cmp r4, 0x1
|
|
bgt _0803F9DE
|
|
_0803FA74:
|
|
cmp r4, 0
|
|
bne _0803FA7A
|
|
b _0803FBD8
|
|
_0803FA7A:
|
|
b _0803FBE0
|
|
_0803FA7C:
|
|
adds r0, r5, 0
|
|
adds r0, 0x20
|
|
cmp r4, 0x1
|
|
bne _0803FA86
|
|
b _0803FBDE
|
|
_0803FA86:
|
|
cmp r4, 0x1
|
|
ble _0803FA74
|
|
b _0803F9FA
|
|
_0803FA8C:
|
|
adds r0, r5, 0
|
|
adds r0, 0x20
|
|
cmp r4, 0x1
|
|
bne _0803FA96
|
|
b _0803FBDE
|
|
_0803FA96:
|
|
cmp r4, 0x1
|
|
bgt _0803FAA2
|
|
_0803FA9A:
|
|
cmp r4, 0
|
|
bne _0803FAA0
|
|
b _0803FBD2
|
|
_0803FAA0:
|
|
b _0803FBE0
|
|
_0803FAA2:
|
|
cmp r4, 0x2
|
|
bne _0803FAA8
|
|
b _0803FBD8
|
|
_0803FAA8:
|
|
b _0803F9E4
|
|
_0803FAAA:
|
|
adds r0, r5, 0
|
|
adds r0, 0x20
|
|
cmp r4, 0x1
|
|
bne _0803FAB4
|
|
b _0803FBDE
|
|
_0803FAB4:
|
|
cmp r4, 0x1
|
|
bgt _0803FABA
|
|
b _0803FBBC
|
|
_0803FABA:
|
|
cmp r4, 0x2
|
|
bne _0803FAC0
|
|
b _0803FBD8
|
|
_0803FAC0:
|
|
b _0803FA00
|
|
_0803FAC2:
|
|
adds r0, r5, 0
|
|
adds r0, 0x20
|
|
cmp r4, 0x1
|
|
bne _0803FACC
|
|
b _0803FBDE
|
|
_0803FACC:
|
|
cmp r4, 0x1
|
|
ble _0803FA9A
|
|
b _0803FA42
|
|
_0803FAD2:
|
|
adds r0, r5, 0
|
|
adds r0, 0x20
|
|
cmp r4, 0x1
|
|
bne _0803FADC
|
|
b _0803FBDE
|
|
_0803FADC:
|
|
cmp r4, 0x1
|
|
ble _0803FBBC
|
|
cmp r4, 0x2
|
|
beq _0803FBD2
|
|
b _0803FA48
|
|
_0803FAE6:
|
|
adds r0, r5, 0
|
|
adds r0, 0x20
|
|
cmp r4, 0x1
|
|
beq _0803FBD2
|
|
cmp r4, 0x1
|
|
ble _0803FA74
|
|
cmp r4, 0x2
|
|
beq _0803FBDE
|
|
b _0803F9E4
|
|
_0803FAF8:
|
|
adds r0, r5, 0
|
|
adds r0, 0x20
|
|
cmp r4, 0x1
|
|
beq _0803FBCC
|
|
cmp r4, 0x1
|
|
ble _0803FA74
|
|
cmp r4, 0x2
|
|
beq _0803FBDE
|
|
b _0803FA00
|
|
_0803FB0A:
|
|
adds r0, r5, 0
|
|
adds r0, 0x20
|
|
cmp r4, 0x1
|
|
beq _0803FBD8
|
|
cmp r4, 0x1
|
|
ble _0803FA9A
|
|
cmp r4, 0x2
|
|
beq _0803FBDE
|
|
b _0803F9E4
|
|
_0803FB1C:
|
|
adds r0, r5, 0
|
|
adds r0, 0x20
|
|
cmp r4, 0x1
|
|
beq _0803FBD8
|
|
cmp r4, 0x1
|
|
ble _0803FBBC
|
|
cmp r4, 0x2
|
|
beq _0803FBDE
|
|
b _0803FA00
|
|
_0803FB2E:
|
|
adds r0, r5, 0
|
|
adds r0, 0x20
|
|
cmp r4, 0x1
|
|
beq _0803FBCC
|
|
cmp r4, 0x1
|
|
ble _0803FA9A
|
|
cmp r4, 0x2
|
|
beq _0803FBDE
|
|
b _0803FA48
|
|
_0803FB40:
|
|
adds r0, r5, 0
|
|
adds r0, 0x20
|
|
cmp r4, 0x1
|
|
beq _0803FBD2
|
|
cmp r4, 0x1
|
|
ble _0803FBBC
|
|
cmp r4, 0x2
|
|
beq _0803FBDE
|
|
b _0803FA48
|
|
_0803FB52:
|
|
adds r0, r5, 0
|
|
adds r0, 0x20
|
|
cmp r4, 0x1
|
|
beq _0803FBD2
|
|
cmp r4, 0x1
|
|
ble _0803FA74
|
|
_0803FB5E:
|
|
cmp r4, 0x2
|
|
beq _0803FBCC
|
|
_0803FB62:
|
|
cmp r4, 0x3
|
|
bne _0803FBE0
|
|
b _0803FBDE
|
|
_0803FB68:
|
|
adds r0, r5, 0
|
|
adds r0, 0x20
|
|
cmp r4, 0x1
|
|
beq _0803FBCC
|
|
cmp r4, 0x1
|
|
bgt _0803FB76
|
|
b _0803FA74
|
|
_0803FB76:
|
|
cmp r4, 0x2
|
|
beq _0803FBD2
|
|
b _0803FB62
|
|
_0803FB7C:
|
|
adds r0, r5, 0
|
|
adds r0, 0x20
|
|
cmp r4, 0x1
|
|
beq _0803FBD8
|
|
cmp r4, 0x1
|
|
ble _0803FA9A
|
|
b _0803FB5E
|
|
_0803FB8A:
|
|
adds r0, r5, 0
|
|
adds r0, 0x20
|
|
cmp r4, 0x1
|
|
beq _0803FBD8
|
|
cmp r4, 0x1
|
|
ble _0803FBBC
|
|
cmp r4, 0x2
|
|
beq _0803FBD2
|
|
b _0803FB62
|
|
_0803FB9C:
|
|
adds r0, r5, 0
|
|
adds r0, 0x20
|
|
cmp r4, 0x1
|
|
beq _0803FBCC
|
|
cmp r4, 0x1
|
|
bgt _0803FBAA
|
|
b _0803FA9A
|
|
_0803FBAA:
|
|
cmp r4, 0x2
|
|
beq _0803FBD8
|
|
b _0803FB62
|
|
_0803FBB0:
|
|
adds r0, r5, 0
|
|
adds r0, 0x20
|
|
cmp r4, 0x1
|
|
beq _0803FBD2
|
|
cmp r4, 0x1
|
|
bgt _0803FBC2
|
|
_0803FBBC:
|
|
cmp r4, 0
|
|
beq _0803FBCC
|
|
b _0803FBE0
|
|
_0803FBC2:
|
|
cmp r4, 0x2
|
|
beq _0803FBD8
|
|
cmp r4, 0x3
|
|
beq _0803FBDE
|
|
b _0803FBE0
|
|
_0803FBCC:
|
|
adds r6, r5, 0
|
|
adds r6, 0x44
|
|
b _0803FBE0
|
|
_0803FBD2:
|
|
adds r6, r5, 0
|
|
adds r6, 0x38
|
|
b _0803FBE0
|
|
_0803FBD8:
|
|
adds r6, r5, 0
|
|
adds r6, 0x2C
|
|
b _0803FBE0
|
|
_0803FBDE:
|
|
adds r6, r0, 0
|
|
_0803FBE0:
|
|
adds r0, r6, 0
|
|
pop {r4-r6}
|
|
pop {r1}
|
|
bx r1
|
|
thumb_func_end GetSubstruct
|
|
|
|
thumb_func_start GetMonData
|
|
GetMonData: @ 803FBE8
|
|
push {r4,lr}
|
|
adds r4, r0, 0
|
|
adds r3, r1, 0
|
|
adds r0, r3, 0
|
|
subs r0, 0x37
|
|
cmp r0, 0x21
|
|
bls _0803FBF8
|
|
b _0803FD36
|
|
_0803FBF8:
|
|
lsls r0, 2
|
|
ldr r1, _0803FC04 @ =_0803FC08
|
|
adds r0, r1
|
|
ldr r0, [r0]
|
|
mov pc, r0
|
|
.align 2, 0
|
|
_0803FC04: .4byte _0803FC08
|
|
.align 2, 0
|
|
_0803FC08:
|
|
.4byte _0803FC90
|
|
.4byte _0803FC94
|
|
.4byte _0803FC9C
|
|
.4byte _0803FCA4
|
|
.4byte _0803FCAC
|
|
.4byte _0803FCBE
|
|
.4byte _0803FCD0
|
|
.4byte _0803FCE2
|
|
.4byte _0803FCF4
|
|
.4byte _0803FD2E
|
|
.4byte _0803FD36
|
|
.4byte _0803FD36
|
|
.4byte _0803FD36
|
|
.4byte _0803FD36
|
|
.4byte _0803FD36
|
|
.4byte _0803FD36
|
|
.4byte _0803FD36
|
|
.4byte _0803FD36
|
|
.4byte _0803FD36
|
|
.4byte _0803FD36
|
|
.4byte _0803FD36
|
|
.4byte _0803FD36
|
|
.4byte _0803FD36
|
|
.4byte _0803FD36
|
|
.4byte _0803FD36
|
|
.4byte _0803FD36
|
|
.4byte _0803FD36
|
|
.4byte _0803FD36
|
|
.4byte _0803FD36
|
|
.4byte _0803FD06
|
|
.4byte _0803FD0E
|
|
.4byte _0803FD16
|
|
.4byte _0803FD1E
|
|
.4byte _0803FD26
|
|
_0803FC90:
|
|
ldr r0, [r4, 0x50]
|
|
b _0803FD3E
|
|
_0803FC94:
|
|
adds r0, r4, 0
|
|
adds r0, 0x54
|
|
ldrb r0, [r0]
|
|
b _0803FD3E
|
|
_0803FC9C:
|
|
adds r0, r4, 0
|
|
adds r0, 0x56
|
|
ldrh r0, [r0]
|
|
b _0803FD3E
|
|
_0803FCA4:
|
|
adds r0, r4, 0
|
|
adds r0, 0x58
|
|
ldrh r0, [r0]
|
|
b _0803FD3E
|
|
_0803FCAC:
|
|
adds r0, r4, 0
|
|
movs r1, 0x1
|
|
bl GetDeoxysStat
|
|
lsls r0, 16
|
|
lsrs r0, 16
|
|
cmp r0, 0
|
|
bne _0803FD3E
|
|
b _0803FD06
|
|
_0803FCBE:
|
|
adds r0, r4, 0
|
|
movs r1, 0x2
|
|
bl GetDeoxysStat
|
|
lsls r0, 16
|
|
lsrs r0, 16
|
|
cmp r0, 0
|
|
bne _0803FD3E
|
|
b _0803FD0E
|
|
_0803FCD0:
|
|
adds r0, r4, 0
|
|
movs r1, 0x3
|
|
bl GetDeoxysStat
|
|
lsls r0, 16
|
|
lsrs r0, 16
|
|
cmp r0, 0
|
|
bne _0803FD3E
|
|
b _0803FD16
|
|
_0803FCE2:
|
|
adds r0, r4, 0
|
|
movs r1, 0x4
|
|
bl GetDeoxysStat
|
|
lsls r0, 16
|
|
lsrs r0, 16
|
|
cmp r0, 0
|
|
bne _0803FD3E
|
|
b _0803FD1E
|
|
_0803FCF4:
|
|
adds r0, r4, 0
|
|
movs r1, 0x5
|
|
bl GetDeoxysStat
|
|
lsls r0, 16
|
|
lsrs r0, 16
|
|
cmp r0, 0
|
|
bne _0803FD3E
|
|
b _0803FD26
|
|
_0803FD06:
|
|
adds r0, r4, 0
|
|
adds r0, 0x5A
|
|
ldrh r0, [r0]
|
|
b _0803FD3E
|
|
_0803FD0E:
|
|
adds r0, r4, 0
|
|
adds r0, 0x5C
|
|
ldrh r0, [r0]
|
|
b _0803FD3E
|
|
_0803FD16:
|
|
adds r0, r4, 0
|
|
adds r0, 0x5E
|
|
ldrh r0, [r0]
|
|
b _0803FD3E
|
|
_0803FD1E:
|
|
adds r0, r4, 0
|
|
adds r0, 0x60
|
|
ldrh r0, [r0]
|
|
b _0803FD3E
|
|
_0803FD26:
|
|
adds r0, r4, 0
|
|
adds r0, 0x62
|
|
ldrh r0, [r0]
|
|
b _0803FD3E
|
|
_0803FD2E:
|
|
adds r0, r4, 0
|
|
adds r0, 0x55
|
|
ldrb r0, [r0]
|
|
b _0803FD3E
|
|
_0803FD36:
|
|
adds r0, r4, 0
|
|
adds r1, r3, 0
|
|
bl GetBoxMonData
|
|
_0803FD3E:
|
|
pop {r4}
|
|
pop {r1}
|
|
bx r1
|
|
thumb_func_end GetMonData
|
|
|
|
thumb_func_start GetBoxMonData
|
|
GetBoxMonData: @ 803FD44
|
|
push {r4-r7,lr}
|
|
mov r7, r10
|
|
mov r6, r9
|
|
mov r5, r8
|
|
push {r5-r7}
|
|
sub sp, 0x4
|
|
mov r8, r0
|
|
str r1, [sp]
|
|
adds r6, r2, 0
|
|
movs r4, 0
|
|
mov r9, r4
|
|
mov r10, r4
|
|
movs r7, 0
|
|
movs r5, 0
|
|
cmp r1, 0xA
|
|
ble _0803FDC2
|
|
ldr r1, [r0]
|
|
movs r2, 0
|
|
bl GetSubstruct
|
|
mov r9, r0
|
|
mov r0, r8
|
|
ldr r1, [r0]
|
|
movs r2, 0x1
|
|
bl GetSubstruct
|
|
mov r10, r0
|
|
mov r2, r8
|
|
ldr r1, [r2]
|
|
mov r0, r8
|
|
movs r2, 0x2
|
|
bl GetSubstruct
|
|
adds r7, r0, 0
|
|
mov r0, r8
|
|
ldr r1, [r0]
|
|
movs r2, 0x3
|
|
bl GetSubstruct
|
|
adds r5, r0, 0
|
|
mov r0, r8
|
|
bl DecryptBoxMon
|
|
mov r0, r8
|
|
bl CalculateBoxMonChecksum
|
|
lsls r0, 16
|
|
lsrs r0, 16
|
|
mov r1, r8
|
|
ldrh r1, [r1, 0x1C]
|
|
cmp r0, r1
|
|
beq _0803FDC2
|
|
mov r2, r8
|
|
ldrb r0, [r2, 0x13]
|
|
movs r1, 0x1
|
|
orrs r0, r1
|
|
movs r1, 0x4
|
|
orrs r0, r1
|
|
strb r0, [r2, 0x13]
|
|
ldrb r0, [r5, 0x7]
|
|
movs r1, 0x40
|
|
orrs r0, r1
|
|
strb r0, [r5, 0x7]
|
|
_0803FDC2:
|
|
ldr r0, [sp]
|
|
cmp r0, 0x53
|
|
bls _0803FDCA
|
|
b _0804035C
|
|
_0803FDCA:
|
|
lsls r0, 2
|
|
ldr r1, _0803FDD4 @ =_0803FDD8
|
|
adds r0, r1
|
|
ldr r0, [r0]
|
|
mov pc, r0
|
|
.align 2, 0
|
|
_0803FDD4: .4byte _0803FDD8
|
|
.align 2, 0
|
|
_0803FDD8:
|
|
.4byte _0803FF28
|
|
.4byte _0803FF2E
|
|
.4byte _0803FF34
|
|
.4byte _0803FFE8
|
|
.4byte _0803FFEE
|
|
.4byte _0803FFF4
|
|
.4byte _0803FFFA
|
|
.4byte _08040000
|
|
.4byte _0804001C
|
|
.4byte _08040022
|
|
.4byte _08040028
|
|
.4byte _0804002E
|
|
.4byte _08040046
|
|
.4byte _0804005E
|
|
.4byte _0804005E
|
|
.4byte _0804005E
|
|
.4byte _0804005E
|
|
.4byte _0804006A
|
|
.4byte _0804006A
|
|
.4byte _0804006A
|
|
.4byte _0804006A
|
|
.4byte _08040052
|
|
.4byte _0804008C
|
|
.4byte _08040090
|
|
.4byte _08040094
|
|
.4byte _0804004C
|
|
.4byte _08040074
|
|
.4byte _08040078
|
|
.4byte _0804007C
|
|
.4byte _08040080
|
|
.4byte _08040084
|
|
.4byte _08040088
|
|
.4byte _08040058
|
|
.4byte _08040098
|
|
.4byte _080400A4
|
|
.4byte _080400A8
|
|
.4byte _080400AC
|
|
.4byte _080400B4
|
|
.4byte _080400BC
|
|
.4byte _080400C6
|
|
.4byte _080400CE
|
|
.4byte _080400D6
|
|
.4byte _080400DE
|
|
.4byte _080400E6
|
|
.4byte _080400EE
|
|
.4byte _080400F6
|
|
.4byte _080400FA
|
|
.4byte _0804009C
|
|
.4byte _080400A0
|
|
.4byte _080400C0
|
|
.4byte _08040100
|
|
.4byte _08040108
|
|
.4byte _08040110
|
|
.4byte _08040118
|
|
.4byte _08040120
|
|
.4byte _0804035C
|
|
.4byte _0804035C
|
|
.4byte _0804035C
|
|
.4byte _0804035C
|
|
.4byte _0804035C
|
|
.4byte _0804035C
|
|
.4byte _0804035C
|
|
.4byte _0804035C
|
|
.4byte _0804035C
|
|
.4byte _0804035C
|
|
.4byte _08040186
|
|
.4byte _080401AC
|
|
.4byte _08040128
|
|
.4byte _0804012E
|
|
.4byte _08040132
|
|
.4byte _08040136
|
|
.4byte _0804013A
|
|
.4byte _08040142
|
|
.4byte _0804014A
|
|
.4byte _08040152
|
|
.4byte _0804015A
|
|
.4byte _08040160
|
|
.4byte _08040168
|
|
.4byte _08040170
|
|
.4byte _08040178
|
|
.4byte _08040180
|
|
.4byte _080401E6
|
|
.4byte _08040240
|
|
.4byte _080402C2
|
|
_0803FF28:
|
|
mov r1, r8
|
|
ldr r4, [r1]
|
|
b _0804035C
|
|
_0803FF2E:
|
|
mov r2, r8
|
|
ldr r4, [r2, 0x4]
|
|
b _0804035C
|
|
_0803FF34:
|
|
mov r0, r8
|
|
ldrb r1, [r0, 0x13]
|
|
movs r0, 0x1
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _0803FF6C
|
|
movs r4, 0
|
|
ldr r0, _0803FF68 @ =gUnknown_83FE868
|
|
ldrb r1, [r0]
|
|
adds r2, r0, 0
|
|
cmp r1, 0xFF
|
|
beq _08040014
|
|
adds r3, r2, 0
|
|
_0803FF4E:
|
|
adds r0, r6, r4
|
|
adds r1, r4, r3
|
|
ldrb r1, [r1]
|
|
strb r1, [r0]
|
|
adds r4, 0x1
|
|
cmp r4, 0x9
|
|
bhi _08040014
|
|
adds r0, r4, r2
|
|
ldrb r0, [r0]
|
|
cmp r0, 0xFF
|
|
bne _0803FF4E
|
|
b _08040014
|
|
.align 2, 0
|
|
_0803FF68: .4byte gUnknown_83FE868
|
|
_0803FF6C:
|
|
movs r0, 0x4
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _0803FF8C
|
|
ldr r1, _0803FF88 @ =gUnknown_8415A62
|
|
adds r0, r6, 0
|
|
bl StringCopy
|
|
adds r0, r6, 0
|
|
bl StringLength
|
|
lsls r0, 16
|
|
lsrs r4, r0, 16
|
|
b _0804035C
|
|
.align 2, 0
|
|
_0803FF88: .4byte gUnknown_8415A62
|
|
_0803FF8C:
|
|
mov r1, r8
|
|
ldrb r0, [r1, 0x12]
|
|
cmp r0, 0x1
|
|
bne _0803FFD2
|
|
movs r0, 0xFC
|
|
strb r0, [r6]
|
|
movs r0, 0x15
|
|
strb r0, [r6, 0x1]
|
|
movs r4, 0x2
|
|
movs r3, 0
|
|
ldrb r0, [r1, 0x8]
|
|
cmp r0, 0xFF
|
|
beq _0803FFC0
|
|
mov r2, r8
|
|
adds r2, 0x8
|
|
_0803FFAA:
|
|
adds r1, r6, r4
|
|
ldrb r0, [r2]
|
|
strb r0, [r1]
|
|
adds r4, 0x1
|
|
adds r2, 0x1
|
|
adds r3, 0x1
|
|
cmp r3, 0x5
|
|
bgt _0803FFC0
|
|
ldrb r0, [r2]
|
|
cmp r0, 0xFF
|
|
bne _0803FFAA
|
|
_0803FFC0:
|
|
adds r1, r6, r4
|
|
movs r0, 0xFC
|
|
strb r0, [r1]
|
|
adds r4, 0x1
|
|
adds r1, r6, r4
|
|
movs r0, 0x16
|
|
strb r0, [r1]
|
|
adds r4, 0x1
|
|
b _08040014
|
|
_0803FFD2:
|
|
movs r4, 0
|
|
mov r2, r8
|
|
adds r2, 0x8
|
|
_0803FFD8:
|
|
adds r0, r6, r4
|
|
adds r1, r2, r4
|
|
ldrb r1, [r1]
|
|
strb r1, [r0]
|
|
adds r4, 0x1
|
|
cmp r4, 0x9
|
|
bls _0803FFD8
|
|
b _08040014
|
|
_0803FFE8:
|
|
mov r2, r8
|
|
ldrb r4, [r2, 0x12]
|
|
b _0804035C
|
|
_0803FFEE:
|
|
mov r6, r8
|
|
ldrb r0, [r6, 0x13]
|
|
b _08040162
|
|
_0803FFF4:
|
|
mov r1, r8
|
|
ldrb r0, [r1, 0x13]
|
|
b _0804016A
|
|
_0803FFFA:
|
|
mov r2, r8
|
|
ldrb r0, [r2, 0x13]
|
|
b _08040172
|
|
_08040000:
|
|
movs r4, 0
|
|
mov r2, r8
|
|
adds r2, 0x14
|
|
_08040006:
|
|
adds r0, r6, r4
|
|
adds r1, r2, r4
|
|
ldrb r1, [r1]
|
|
strb r1, [r0]
|
|
adds r4, 0x1
|
|
cmp r4, 0x6
|
|
bls _08040006
|
|
_08040014:
|
|
adds r1, r6, r4
|
|
movs r0, 0xFF
|
|
strb r0, [r1]
|
|
b _0804035C
|
|
_0804001C:
|
|
mov r6, r8
|
|
ldrb r4, [r6, 0x1B]
|
|
b _0804035C
|
|
_08040022:
|
|
mov r0, r8
|
|
ldrh r4, [r0, 0x1C]
|
|
b _0804035C
|
|
_08040028:
|
|
mov r1, r8
|
|
ldrh r4, [r1, 0x1E]
|
|
b _0804035C
|
|
_0804002E:
|
|
mov r2, r8
|
|
ldrb r1, [r2, 0x13]
|
|
movs r0, 0x1
|
|
ands r0, r1
|
|
movs r4, 0xCE
|
|
lsls r4, 1
|
|
cmp r0, 0
|
|
beq _08040040
|
|
b _0804035C
|
|
_08040040:
|
|
mov r6, r9
|
|
ldrh r4, [r6]
|
|
b _0804035C
|
|
_08040046:
|
|
mov r0, r9
|
|
ldrh r4, [r0, 0x2]
|
|
b _0804035C
|
|
_0804004C:
|
|
mov r1, r9
|
|
ldr r4, [r1, 0x4]
|
|
b _0804035C
|
|
_08040052:
|
|
mov r2, r9
|
|
ldrb r4, [r2, 0x8]
|
|
b _0804035C
|
|
_08040058:
|
|
mov r6, r9
|
|
ldrb r4, [r6, 0x9]
|
|
b _0804035C
|
|
_0804005E:
|
|
ldr r0, [sp]
|
|
subs r0, 0xD
|
|
lsls r0, 1
|
|
add r0, r10
|
|
ldrh r4, [r0]
|
|
b _0804035C
|
|
_0804006A:
|
|
ldr r0, [sp]
|
|
add r0, r10
|
|
subs r0, 0x9
|
|
ldrb r4, [r0]
|
|
b _0804035C
|
|
_08040074:
|
|
ldrb r4, [r7]
|
|
b _0804035C
|
|
_08040078:
|
|
ldrb r4, [r7, 0x1]
|
|
b _0804035C
|
|
_0804007C:
|
|
ldrb r4, [r7, 0x2]
|
|
b _0804035C
|
|
_08040080:
|
|
ldrb r4, [r7, 0x3]
|
|
b _0804035C
|
|
_08040084:
|
|
ldrb r4, [r7, 0x4]
|
|
b _0804035C
|
|
_08040088:
|
|
ldrb r4, [r7, 0x5]
|
|
b _0804035C
|
|
_0804008C:
|
|
ldrb r4, [r7, 0x6]
|
|
b _0804035C
|
|
_08040090:
|
|
ldrb r4, [r7, 0x7]
|
|
b _0804035C
|
|
_08040094:
|
|
ldrb r4, [r7, 0x8]
|
|
b _0804035C
|
|
_08040098:
|
|
ldrb r4, [r7, 0x9]
|
|
b _0804035C
|
|
_0804009C:
|
|
ldrb r4, [r7, 0xA]
|
|
b _0804035C
|
|
_080400A0:
|
|
ldrb r4, [r7, 0xB]
|
|
b _0804035C
|
|
_080400A4:
|
|
ldrb r4, [r5]
|
|
b _0804035C
|
|
_080400A8:
|
|
ldrb r4, [r5, 0x1]
|
|
b _0804035C
|
|
_080400AC:
|
|
ldrb r0, [r5, 0x2]
|
|
lsls r0, 25
|
|
lsrs r4, r0, 25
|
|
b _0804035C
|
|
_080400B4:
|
|
ldrh r0, [r5, 0x2]
|
|
lsls r0, 21
|
|
lsrs r4, r0, 28
|
|
b _0804035C
|
|
_080400BC:
|
|
ldrb r0, [r5, 0x3]
|
|
b _0804017A
|
|
_080400C0:
|
|
ldrb r0, [r5, 0x3]
|
|
lsrs r4, r0, 7
|
|
b _0804035C
|
|
_080400C6:
|
|
ldrb r0, [r5, 0x4]
|
|
lsls r0, 27
|
|
lsrs r4, r0, 27
|
|
b _0804035C
|
|
_080400CE:
|
|
ldrh r0, [r5, 0x4]
|
|
lsls r0, 22
|
|
lsrs r4, r0, 27
|
|
b _0804035C
|
|
_080400D6:
|
|
ldrb r0, [r5, 0x5]
|
|
lsls r0, 25
|
|
lsrs r4, r0, 27
|
|
b _0804035C
|
|
_080400DE:
|
|
ldr r0, [r5, 0x4]
|
|
lsls r0, 12
|
|
lsrs r4, r0, 27
|
|
b _0804035C
|
|
_080400E6:
|
|
ldrh r0, [r5, 0x6]
|
|
lsls r0, 23
|
|
lsrs r4, r0, 27
|
|
b _0804035C
|
|
_080400EE:
|
|
ldrb r0, [r5, 0x7]
|
|
lsls r0, 26
|
|
lsrs r4, r0, 27
|
|
b _0804035C
|
|
_080400F6:
|
|
ldrb r0, [r5, 0x7]
|
|
b _08040154
|
|
_080400FA:
|
|
ldrb r0, [r5, 0x7]
|
|
lsrs r4, r0, 7
|
|
b _0804035C
|
|
_08040100:
|
|
ldrb r0, [r5, 0x8]
|
|
lsls r0, 29
|
|
lsrs r4, r0, 29
|
|
b _0804035C
|
|
_08040108:
|
|
ldrb r0, [r5, 0x8]
|
|
lsls r0, 26
|
|
lsrs r4, r0, 29
|
|
b _0804035C
|
|
_08040110:
|
|
ldrh r0, [r5, 0x8]
|
|
lsls r0, 23
|
|
lsrs r4, r0, 29
|
|
b _0804035C
|
|
_08040118:
|
|
ldrb r0, [r5, 0x9]
|
|
lsls r0, 28
|
|
lsrs r4, r0, 29
|
|
b _0804035C
|
|
_08040120:
|
|
ldrb r0, [r5, 0x9]
|
|
lsls r0, 25
|
|
lsrs r4, r0, 29
|
|
b _0804035C
|
|
_08040128:
|
|
ldrb r0, [r5, 0x9]
|
|
lsrs r4, r0, 7
|
|
b _0804035C
|
|
_0804012E:
|
|
ldrb r0, [r5, 0xA]
|
|
b _08040162
|
|
_08040132:
|
|
ldrb r0, [r5, 0xA]
|
|
b _0804016A
|
|
_08040136:
|
|
ldrb r0, [r5, 0xA]
|
|
b _08040172
|
|
_0804013A:
|
|
ldrb r0, [r5, 0xA]
|
|
lsls r0, 28
|
|
lsrs r4, r0, 31
|
|
b _0804035C
|
|
_08040142:
|
|
ldrb r0, [r5, 0xA]
|
|
lsls r0, 27
|
|
lsrs r4, r0, 31
|
|
b _0804035C
|
|
_0804014A:
|
|
ldrb r0, [r5, 0xA]
|
|
lsls r0, 26
|
|
lsrs r4, r0, 31
|
|
b _0804035C
|
|
_08040152:
|
|
ldrb r0, [r5, 0xA]
|
|
_08040154:
|
|
lsls r0, 25
|
|
lsrs r4, r0, 31
|
|
b _0804035C
|
|
_0804015A:
|
|
ldrb r0, [r5, 0xA]
|
|
lsrs r4, r0, 7
|
|
b _0804035C
|
|
_08040160:
|
|
ldrb r0, [r5, 0xB]
|
|
_08040162:
|
|
lsls r0, 31
|
|
lsrs r4, r0, 31
|
|
b _0804035C
|
|
_08040168:
|
|
ldrb r0, [r5, 0xB]
|
|
_0804016A:
|
|
lsls r0, 30
|
|
lsrs r4, r0, 31
|
|
b _0804035C
|
|
_08040170:
|
|
ldrb r0, [r5, 0xB]
|
|
_08040172:
|
|
lsls r0, 29
|
|
lsrs r4, r0, 31
|
|
b _0804035C
|
|
_08040178:
|
|
ldrb r0, [r5, 0xB]
|
|
_0804017A:
|
|
lsls r0, 25
|
|
lsrs r4, r0, 28
|
|
b _0804035C
|
|
_08040180:
|
|
ldrb r0, [r5, 0xB]
|
|
lsrs r4, r0, 7
|
|
b _0804035C
|
|
_08040186:
|
|
mov r0, r9
|
|
ldrh r4, [r0]
|
|
cmp r4, 0
|
|
bne _08040190
|
|
b _0804035C
|
|
_08040190:
|
|
ldrb r0, [r5, 0x7]
|
|
lsls r0, 25
|
|
cmp r0, 0
|
|
blt _080401A6
|
|
mov r2, r8
|
|
ldrb r1, [r2, 0x13]
|
|
movs r0, 0x1
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
bne _080401A6
|
|
b _0804035C
|
|
_080401A6:
|
|
movs r4, 0xCE
|
|
lsls r4, 1
|
|
b _0804035C
|
|
_080401AC:
|
|
ldrb r0, [r5, 0x4]
|
|
lsls r0, 27
|
|
lsrs r4, r0, 27
|
|
ldrh r1, [r5, 0x4]
|
|
movs r0, 0xF8
|
|
lsls r0, 2
|
|
ands r0, r1
|
|
orrs r4, r0
|
|
ldrb r0, [r5, 0x5]
|
|
lsls r0, 25
|
|
lsrs r0, 27
|
|
lsls r0, 10
|
|
orrs r4, r0
|
|
ldr r0, [r5, 0x4]
|
|
movs r1, 0xF8
|
|
lsls r1, 12
|
|
ands r0, r1
|
|
orrs r4, r0
|
|
ldrh r0, [r5, 0x6]
|
|
lsls r0, 23
|
|
lsrs r0, 27
|
|
lsls r0, 20
|
|
orrs r4, r0
|
|
ldrb r0, [r5, 0x7]
|
|
lsls r0, 26
|
|
lsrs r0, 27
|
|
lsls r0, 25
|
|
orrs r4, r0
|
|
b _0804035C
|
|
_080401E6:
|
|
mov r1, r9
|
|
ldrh r0, [r1]
|
|
cmp r0, 0
|
|
bne _080401F0
|
|
b _0804035C
|
|
_080401F0:
|
|
ldrb r0, [r5, 0x7]
|
|
lsls r0, 25
|
|
cmp r0, 0
|
|
bge _080401FA
|
|
b _0804035C
|
|
_080401FA:
|
|
ldrh r0, [r6]
|
|
ldr r1, _08040238 @ =0x00000163
|
|
cmp r0, r1
|
|
bne _08040204
|
|
b _0804035C
|
|
_08040204:
|
|
mov r2, r10
|
|
ldrh r5, [r2]
|
|
adds r7, r1, 0
|
|
adds r2, r6, 0
|
|
ldr r1, _0804023C @ =gBitTable
|
|
_0804020E:
|
|
ldrh r3, [r2]
|
|
cmp r5, r3
|
|
beq _08040228
|
|
mov r6, r10
|
|
ldrh r0, [r6, 0x2]
|
|
cmp r0, r3
|
|
beq _08040228
|
|
ldrh r0, [r6, 0x4]
|
|
cmp r0, r3
|
|
beq _08040228
|
|
ldrh r0, [r6, 0x6]
|
|
cmp r0, r3
|
|
bne _0804022C
|
|
_08040228:
|
|
ldr r0, [r1]
|
|
orrs r4, r0
|
|
_0804022C:
|
|
adds r2, 0x2
|
|
adds r1, 0x4
|
|
ldrh r0, [r2]
|
|
cmp r0, r7
|
|
bne _0804020E
|
|
b _0804035C
|
|
.align 2, 0
|
|
_08040238: .4byte 0x00000163
|
|
_0804023C: .4byte gBitTable
|
|
_08040240:
|
|
movs r4, 0
|
|
mov r1, r9
|
|
ldrh r0, [r1]
|
|
cmp r0, 0
|
|
bne _0804024C
|
|
b _0804035C
|
|
_0804024C:
|
|
ldrb r0, [r5, 0x7]
|
|
lsls r0, 25
|
|
cmp r0, 0
|
|
bge _08040256
|
|
b _0804035C
|
|
_08040256:
|
|
ldrb r0, [r5, 0x8]
|
|
lsls r1, r0, 29
|
|
lsrs r4, r1, 29
|
|
lsls r0, 26
|
|
lsrs r0, 29
|
|
adds r4, r0
|
|
ldrh r0, [r5, 0x8]
|
|
lsls r0, 23
|
|
lsrs r0, 29
|
|
adds r4, r0
|
|
ldrb r1, [r5, 0x9]
|
|
lsls r0, r1, 28
|
|
lsrs r0, 29
|
|
adds r4, r0
|
|
lsls r0, r1, 25
|
|
lsrs r0, 29
|
|
adds r4, r0
|
|
lsrs r1, 7
|
|
adds r4, r1
|
|
ldrb r1, [r5, 0xA]
|
|
lsls r0, r1, 31
|
|
lsrs r0, 31
|
|
adds r4, r0
|
|
lsls r0, r1, 30
|
|
lsrs r0, 31
|
|
adds r4, r0
|
|
lsls r0, r1, 29
|
|
lsrs r0, 31
|
|
adds r4, r0
|
|
lsls r0, r1, 28
|
|
lsrs r0, 31
|
|
adds r4, r0
|
|
lsls r0, r1, 27
|
|
lsrs r0, 31
|
|
adds r4, r0
|
|
lsls r0, r1, 26
|
|
lsrs r0, 31
|
|
adds r4, r0
|
|
lsls r0, r1, 25
|
|
lsrs r0, 31
|
|
adds r4, r0
|
|
lsrs r1, 7
|
|
adds r4, r1
|
|
ldrb r1, [r5, 0xB]
|
|
lsls r0, r1, 31
|
|
lsrs r0, 31
|
|
adds r4, r0
|
|
lsls r0, r1, 30
|
|
lsrs r0, 31
|
|
adds r4, r0
|
|
lsls r1, 29
|
|
lsrs r1, 31
|
|
adds r4, r1
|
|
b _0804035C
|
|
_080402C2:
|
|
movs r4, 0
|
|
mov r2, r9
|
|
ldrh r0, [r2]
|
|
cmp r0, 0
|
|
beq _0804035C
|
|
ldrb r0, [r5, 0x7]
|
|
lsls r0, 25
|
|
cmp r0, 0
|
|
blt _0804035C
|
|
ldrb r2, [r5, 0x9]
|
|
lsrs r4, r2, 7
|
|
ldrb r1, [r5, 0x8]
|
|
lsls r0, r1, 29
|
|
lsrs r0, 28
|
|
orrs r4, r0
|
|
lsls r1, 26
|
|
lsrs r1, 29
|
|
lsls r1, 4
|
|
orrs r4, r1
|
|
ldrh r0, [r5, 0x8]
|
|
lsls r0, 23
|
|
lsrs r0, 29
|
|
lsls r0, 7
|
|
orrs r4, r0
|
|
lsls r0, r2, 28
|
|
lsrs r0, 29
|
|
lsls r0, 10
|
|
orrs r4, r0
|
|
lsls r2, 25
|
|
lsrs r2, 29
|
|
lsls r2, 13
|
|
orrs r4, r2
|
|
ldrb r1, [r5, 0xA]
|
|
lsls r0, r1, 31
|
|
lsrs r0, 31
|
|
lsls r0, 16
|
|
orrs r4, r0
|
|
lsls r0, r1, 30
|
|
lsrs r0, 31
|
|
lsls r0, 17
|
|
orrs r4, r0
|
|
lsls r0, r1, 29
|
|
lsrs r0, 31
|
|
lsls r0, 18
|
|
orrs r4, r0
|
|
lsls r0, r1, 28
|
|
lsrs r0, 31
|
|
lsls r0, 19
|
|
orrs r4, r0
|
|
lsls r0, r1, 27
|
|
lsrs r0, 31
|
|
lsls r0, 20
|
|
orrs r4, r0
|
|
lsls r0, r1, 26
|
|
lsrs r0, 31
|
|
lsls r0, 21
|
|
orrs r4, r0
|
|
lsls r0, r1, 25
|
|
lsrs r0, 31
|
|
lsls r0, 22
|
|
orrs r4, r0
|
|
lsrs r1, 7
|
|
lsls r1, 23
|
|
orrs r4, r1
|
|
ldrb r1, [r5, 0xB]
|
|
lsls r0, r1, 31
|
|
lsrs r0, 31
|
|
lsls r0, 24
|
|
orrs r4, r0
|
|
lsls r0, r1, 30
|
|
lsrs r0, 31
|
|
lsls r0, 25
|
|
orrs r4, r0
|
|
lsls r1, 29
|
|
lsrs r1, 31
|
|
lsls r1, 26
|
|
orrs r4, r1
|
|
_0804035C:
|
|
ldr r6, [sp]
|
|
cmp r6, 0xA
|
|
ble _08040368
|
|
mov r0, r8
|
|
bl EncryptBoxMon
|
|
_08040368:
|
|
adds r0, r4, 0
|
|
add sp, 0x4
|
|
pop {r3-r5}
|
|
mov r8, r3
|
|
mov r9, r4
|
|
mov r10, r5
|
|
pop {r4-r7}
|
|
pop {r1}
|
|
bx r1
|
|
thumb_func_end GetBoxMonData
|
|
|
|
thumb_func_start sub_804037C
|
|
sub_804037C: @ 804037C
|
|
push {r4,lr}
|
|
adds r3, r0, 0
|
|
adds r4, r1, 0
|
|
adds r0, r4, 0
|
|
subs r0, 0x37
|
|
cmp r0, 0x21
|
|
bls _0804038C
|
|
b _080404C0
|
|
_0804038C:
|
|
lsls r0, 2
|
|
ldr r1, _08040398 @ =_0804039C
|
|
adds r0, r1
|
|
ldr r0, [r0]
|
|
mov pc, r0
|
|
.align 2, 0
|
|
_08040398: .4byte _0804039C
|
|
.align 2, 0
|
|
_0804039C:
|
|
.4byte _08040424
|
|
.4byte _0804043C
|
|
.4byte _08040446
|
|
.4byte _08040456
|
|
.4byte _08040466
|
|
.4byte _08040476
|
|
.4byte _08040486
|
|
.4byte _08040496
|
|
.4byte _080404A6
|
|
.4byte _080404B6
|
|
.4byte _080404C8
|
|
.4byte _080404C0
|
|
.4byte _080404C0
|
|
.4byte _080404C0
|
|
.4byte _080404C0
|
|
.4byte _080404C0
|
|
.4byte _080404C0
|
|
.4byte _080404C0
|
|
.4byte _080404C0
|
|
.4byte _080404C0
|
|
.4byte _080404C0
|
|
.4byte _080404C0
|
|
.4byte _080404C0
|
|
.4byte _080404C0
|
|
.4byte _080404C0
|
|
.4byte _080404C0
|
|
.4byte _080404C0
|
|
.4byte _080404C0
|
|
.4byte _080404C0
|
|
.4byte _08040466
|
|
.4byte _08040476
|
|
.4byte _08040486
|
|
.4byte _08040496
|
|
.4byte _080404A6
|
|
_08040424:
|
|
ldrb r1, [r2]
|
|
ldrb r0, [r2, 0x1]
|
|
lsls r0, 8
|
|
adds r1, r0
|
|
ldrb r0, [r2, 0x2]
|
|
lsls r0, 16
|
|
adds r1, r0
|
|
ldrb r0, [r2, 0x3]
|
|
lsls r0, 24
|
|
adds r1, r0
|
|
str r1, [r3, 0x50]
|
|
b _080404C8
|
|
_0804043C:
|
|
ldrb r1, [r2]
|
|
adds r0, r3, 0
|
|
adds r0, 0x54
|
|
strb r1, [r0]
|
|
b _080404C8
|
|
_08040446:
|
|
ldrb r0, [r2]
|
|
ldrb r1, [r2, 0x1]
|
|
lsls r1, 8
|
|
adds r0, r1
|
|
adds r1, r3, 0
|
|
adds r1, 0x56
|
|
strh r0, [r1]
|
|
b _080404C8
|
|
_08040456:
|
|
ldrb r0, [r2]
|
|
ldrb r1, [r2, 0x1]
|
|
lsls r1, 8
|
|
adds r0, r1
|
|
adds r1, r3, 0
|
|
adds r1, 0x58
|
|
strh r0, [r1]
|
|
b _080404C8
|
|
_08040466:
|
|
ldrb r0, [r2]
|
|
ldrb r1, [r2, 0x1]
|
|
lsls r1, 8
|
|
adds r0, r1
|
|
adds r1, r3, 0
|
|
adds r1, 0x5A
|
|
strh r0, [r1]
|
|
b _080404C8
|
|
_08040476:
|
|
ldrb r0, [r2]
|
|
ldrb r1, [r2, 0x1]
|
|
lsls r1, 8
|
|
adds r0, r1
|
|
adds r1, r3, 0
|
|
adds r1, 0x5C
|
|
strh r0, [r1]
|
|
b _080404C8
|
|
_08040486:
|
|
ldrb r0, [r2]
|
|
ldrb r1, [r2, 0x1]
|
|
lsls r1, 8
|
|
adds r0, r1
|
|
adds r1, r3, 0
|
|
adds r1, 0x5E
|
|
strh r0, [r1]
|
|
b _080404C8
|
|
_08040496:
|
|
ldrb r0, [r2]
|
|
ldrb r1, [r2, 0x1]
|
|
lsls r1, 8
|
|
adds r0, r1
|
|
adds r1, r3, 0
|
|
adds r1, 0x60
|
|
strh r0, [r1]
|
|
b _080404C8
|
|
_080404A6:
|
|
ldrb r0, [r2]
|
|
ldrb r1, [r2, 0x1]
|
|
lsls r1, 8
|
|
adds r0, r1
|
|
adds r1, r3, 0
|
|
adds r1, 0x62
|
|
strh r0, [r1]
|
|
b _080404C8
|
|
_080404B6:
|
|
ldrb r1, [r2]
|
|
adds r0, r3, 0
|
|
adds r0, 0x55
|
|
strb r1, [r0]
|
|
b _080404C8
|
|
_080404C0:
|
|
adds r0, r3, 0
|
|
adds r1, r4, 0
|
|
bl sub_80404D0
|
|
_080404C8:
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end sub_804037C
|
|
|
|
thumb_func_start sub_80404D0
|
|
sub_80404D0: @ 80404D0
|
|
push {r4-r7,lr}
|
|
mov r7, r10
|
|
mov r6, r9
|
|
mov r5, r8
|
|
push {r5-r7}
|
|
adds r7, r0, 0
|
|
mov r10, r1
|
|
adds r4, r2, 0
|
|
movs r0, 0
|
|
mov r8, r0
|
|
mov r9, r0
|
|
movs r6, 0
|
|
movs r5, 0
|
|
cmp r1, 0xA
|
|
ble _08040550
|
|
ldr r1, [r7]
|
|
adds r0, r7, 0
|
|
movs r2, 0
|
|
bl GetSubstruct
|
|
mov r8, r0
|
|
ldr r1, [r7]
|
|
adds r0, r7, 0
|
|
movs r2, 0x1
|
|
bl GetSubstruct
|
|
mov r9, r0
|
|
ldr r1, [r7]
|
|
adds r0, r7, 0
|
|
movs r2, 0x2
|
|
bl GetSubstruct
|
|
adds r6, r0, 0
|
|
ldr r1, [r7]
|
|
adds r0, r7, 0
|
|
movs r2, 0x3
|
|
bl GetSubstruct
|
|
adds r5, r0, 0
|
|
adds r0, r7, 0
|
|
bl DecryptBoxMon
|
|
adds r0, r7, 0
|
|
bl CalculateBoxMonChecksum
|
|
lsls r0, 16
|
|
lsrs r0, 16
|
|
ldrh r1, [r7, 0x1C]
|
|
cmp r0, r1
|
|
beq _08040550
|
|
ldrb r0, [r7, 0x13]
|
|
movs r1, 0x1
|
|
orrs r0, r1
|
|
movs r1, 0x4
|
|
orrs r0, r1
|
|
strb r0, [r7, 0x13]
|
|
ldrb r0, [r5, 0x7]
|
|
movs r1, 0x40
|
|
orrs r0, r1
|
|
strb r0, [r5, 0x7]
|
|
adds r0, r7, 0
|
|
bl EncryptBoxMon
|
|
b _08040AEE
|
|
_08040550:
|
|
mov r0, r10
|
|
cmp r0, 0x50
|
|
bls _08040558
|
|
b _08040ADA
|
|
_08040558:
|
|
lsls r0, 2
|
|
ldr r1, _08040564 @ =_08040568
|
|
adds r0, r1
|
|
ldr r0, [r0]
|
|
mov pc, r0
|
|
.align 2, 0
|
|
_08040564: .4byte _08040568
|
|
.align 2, 0
|
|
_08040568:
|
|
.4byte _080406AC
|
|
.4byte _080406C4
|
|
.4byte _080406DC
|
|
.4byte _080406F2
|
|
.4byte _080406F8
|
|
.4byte _08040708
|
|
.4byte _0804071A
|
|
.4byte _0804072C
|
|
.4byte _08040742
|
|
.4byte _08040748
|
|
.4byte _08040754
|
|
.4byte _08040760
|
|
.4byte _08040780
|
|
.4byte _080407B8
|
|
.4byte _080407B8
|
|
.4byte _080407B8
|
|
.4byte _080407B8
|
|
.4byte _080407CC
|
|
.4byte _080407CC
|
|
.4byte _080407CC
|
|
.4byte _080407CC
|
|
.4byte _080407A8
|
|
.4byte _080407FC
|
|
.4byte _08040802
|
|
.4byte _08040808
|
|
.4byte _0804078E
|
|
.4byte _080407D8
|
|
.4byte _080407DE
|
|
.4byte _080407E4
|
|
.4byte _080407EA
|
|
.4byte _080407F0
|
|
.4byte _080407F6
|
|
.4byte _080407B0
|
|
.4byte _0804080E
|
|
.4byte _08040820
|
|
.4byte _08040826
|
|
.4byte _0804082C
|
|
.4byte _08040840
|
|
.4byte _08040858
|
|
.4byte _0804087E
|
|
.4byte _08040892
|
|
.4byte _080408AC
|
|
.4byte _080408C2
|
|
.4byte _080408DC
|
|
.4byte _080408F4
|
|
.4byte _08040908
|
|
.4byte _08040938
|
|
.4byte _08040814
|
|
.4byte _0804081A
|
|
.4byte _0804086E
|
|
.4byte _08040948
|
|
.4byte _08040956
|
|
.4byte _0804096C
|
|
.4byte _08040984
|
|
.4byte _08040994
|
|
.4byte _08040ADA
|
|
.4byte _08040ADA
|
|
.4byte _08040ADA
|
|
.4byte _08040ADA
|
|
.4byte _08040ADA
|
|
.4byte _08040ADA
|
|
.4byte _08040ADA
|
|
.4byte _08040ADA
|
|
.4byte _08040ADA
|
|
.4byte _08040ADA
|
|
.4byte _08040ADA
|
|
.4byte _08040A92
|
|
.4byte _080409AA
|
|
.4byte _080409BA
|
|
.4byte _080409C8
|
|
.4byte _080409D8
|
|
.4byte _080409E8
|
|
.4byte _080409F8
|
|
.4byte _08040A08
|
|
.4byte _08040A18
|
|
.4byte _08040A2E
|
|
.4byte _08040A3E
|
|
.4byte _08040A4C
|
|
.4byte _08040A5C
|
|
.4byte _08040A6C
|
|
.4byte _08040A82
|
|
_080406AC:
|
|
ldrb r1, [r4]
|
|
ldrb r0, [r4, 0x1]
|
|
lsls r0, 8
|
|
adds r1, r0
|
|
ldrb r0, [r4, 0x2]
|
|
lsls r0, 16
|
|
adds r1, r0
|
|
ldrb r0, [r4, 0x3]
|
|
lsls r0, 24
|
|
adds r1, r0
|
|
str r1, [r7]
|
|
b _08040ADA
|
|
_080406C4:
|
|
ldrb r1, [r4]
|
|
ldrb r0, [r4, 0x1]
|
|
lsls r0, 8
|
|
adds r1, r0
|
|
ldrb r0, [r4, 0x2]
|
|
lsls r0, 16
|
|
adds r1, r0
|
|
ldrb r0, [r4, 0x3]
|
|
lsls r0, 24
|
|
adds r1, r0
|
|
str r1, [r7, 0x4]
|
|
b _08040ADA
|
|
_080406DC:
|
|
movs r2, 0
|
|
adds r3, r7, 0
|
|
adds r3, 0x8
|
|
_080406E2:
|
|
adds r0, r3, r2
|
|
adds r1, r4, r2
|
|
ldrb r1, [r1]
|
|
strb r1, [r0]
|
|
adds r2, 0x1
|
|
cmp r2, 0x9
|
|
ble _080406E2
|
|
b _08040ADA
|
|
_080406F2:
|
|
ldrb r0, [r4]
|
|
strb r0, [r7, 0x12]
|
|
b _08040ADA
|
|
_080406F8:
|
|
ldrb r0, [r4]
|
|
movs r1, 0x1
|
|
ands r1, r0
|
|
ldrb r2, [r7, 0x13]
|
|
movs r0, 0x2
|
|
negs r0, r0
|
|
ands r0, r2
|
|
b _08040926
|
|
_08040708:
|
|
ldrb r0, [r4]
|
|
movs r1, 0x1
|
|
ands r1, r0
|
|
lsls r1, 1
|
|
ldrb r2, [r7, 0x13]
|
|
movs r0, 0x3
|
|
negs r0, r0
|
|
ands r0, r2
|
|
b _08040926
|
|
_0804071A:
|
|
ldrb r0, [r4]
|
|
movs r1, 0x1
|
|
ands r1, r0
|
|
lsls r1, 2
|
|
ldrb r2, [r7, 0x13]
|
|
movs r0, 0x5
|
|
negs r0, r0
|
|
ands r0, r2
|
|
b _08040926
|
|
_0804072C:
|
|
movs r2, 0
|
|
adds r3, r7, 0
|
|
adds r3, 0x14
|
|
_08040732:
|
|
adds r0, r3, r2
|
|
adds r1, r4, r2
|
|
ldrb r1, [r1]
|
|
strb r1, [r0]
|
|
adds r2, 0x1
|
|
cmp r2, 0x6
|
|
ble _08040732
|
|
b _08040ADA
|
|
_08040742:
|
|
ldrb r0, [r4]
|
|
strb r0, [r7, 0x1B]
|
|
b _08040ADA
|
|
_08040748:
|
|
ldrb r1, [r4]
|
|
ldrb r0, [r4, 0x1]
|
|
lsls r0, 8
|
|
adds r1, r0
|
|
strh r1, [r7, 0x1C]
|
|
b _08040ADA
|
|
_08040754:
|
|
ldrb r1, [r4]
|
|
ldrb r0, [r4, 0x1]
|
|
lsls r0, 8
|
|
adds r1, r0
|
|
strh r1, [r7, 0x1E]
|
|
b _08040ADA
|
|
_08040760:
|
|
ldrb r1, [r4]
|
|
ldrb r0, [r4, 0x1]
|
|
lsls r0, 8
|
|
adds r1, r0
|
|
mov r0, r8
|
|
strh r1, [r0]
|
|
lsls r1, 16
|
|
cmp r1, 0
|
|
beq _08040778
|
|
ldrb r0, [r7, 0x13]
|
|
movs r1, 0x2
|
|
b _08040926
|
|
_08040778:
|
|
ldrb r1, [r7, 0x13]
|
|
movs r0, 0x3
|
|
negs r0, r0
|
|
b _08040932
|
|
_08040780:
|
|
ldrb r1, [r4]
|
|
ldrb r0, [r4, 0x1]
|
|
lsls r0, 8
|
|
adds r1, r0
|
|
mov r0, r8
|
|
strh r1, [r0, 0x2]
|
|
b _08040ADA
|
|
_0804078E:
|
|
ldrb r1, [r4]
|
|
ldrb r0, [r4, 0x1]
|
|
lsls r0, 8
|
|
adds r1, r0
|
|
ldrb r0, [r4, 0x2]
|
|
lsls r0, 16
|
|
adds r1, r0
|
|
ldrb r0, [r4, 0x3]
|
|
lsls r0, 24
|
|
adds r1, r0
|
|
mov r0, r8
|
|
str r1, [r0, 0x4]
|
|
b _08040ADA
|
|
_080407A8:
|
|
ldrb r0, [r4]
|
|
mov r1, r8
|
|
strb r0, [r1, 0x8]
|
|
b _08040ADA
|
|
_080407B0:
|
|
ldrb r0, [r4]
|
|
mov r1, r8
|
|
strb r0, [r1, 0x9]
|
|
b _08040ADA
|
|
_080407B8:
|
|
mov r2, r10
|
|
subs r2, 0xD
|
|
lsls r2, 1
|
|
add r2, r9
|
|
ldrb r1, [r4]
|
|
ldrb r0, [r4, 0x1]
|
|
lsls r0, 8
|
|
adds r1, r0
|
|
strh r1, [r2]
|
|
b _08040ADA
|
|
_080407CC:
|
|
mov r0, r9
|
|
add r0, r10
|
|
subs r0, 0x9
|
|
ldrb r1, [r4]
|
|
strb r1, [r0]
|
|
b _08040ADA
|
|
_080407D8:
|
|
ldrb r0, [r4]
|
|
strb r0, [r6]
|
|
b _08040ADA
|
|
_080407DE:
|
|
ldrb r0, [r4]
|
|
strb r0, [r6, 0x1]
|
|
b _08040ADA
|
|
_080407E4:
|
|
ldrb r0, [r4]
|
|
strb r0, [r6, 0x2]
|
|
b _08040ADA
|
|
_080407EA:
|
|
ldrb r0, [r4]
|
|
strb r0, [r6, 0x3]
|
|
b _08040ADA
|
|
_080407F0:
|
|
ldrb r0, [r4]
|
|
strb r0, [r6, 0x4]
|
|
b _08040ADA
|
|
_080407F6:
|
|
ldrb r0, [r4]
|
|
strb r0, [r6, 0x5]
|
|
b _08040ADA
|
|
_080407FC:
|
|
ldrb r0, [r4]
|
|
strb r0, [r6, 0x6]
|
|
b _08040ADA
|
|
_08040802:
|
|
ldrb r0, [r4]
|
|
strb r0, [r6, 0x7]
|
|
b _08040ADA
|
|
_08040808:
|
|
ldrb r0, [r4]
|
|
strb r0, [r6, 0x8]
|
|
b _08040ADA
|
|
_0804080E:
|
|
ldrb r0, [r4]
|
|
strb r0, [r6, 0x9]
|
|
b _08040ADA
|
|
_08040814:
|
|
ldrb r0, [r4]
|
|
strb r0, [r6, 0xA]
|
|
b _08040ADA
|
|
_0804081A:
|
|
ldrb r0, [r4]
|
|
strb r0, [r6, 0xB]
|
|
b _08040ADA
|
|
_08040820:
|
|
ldrb r0, [r4]
|
|
strb r0, [r5]
|
|
b _08040ADA
|
|
_08040826:
|
|
ldrb r0, [r4]
|
|
strb r0, [r5, 0x1]
|
|
b _08040ADA
|
|
_0804082C:
|
|
ldrb r1, [r4]
|
|
movs r0, 0x7F
|
|
ands r1, r0
|
|
ldrb r2, [r5, 0x2]
|
|
movs r0, 0x80
|
|
negs r0, r0
|
|
ands r0, r2
|
|
orrs r0, r1
|
|
strb r0, [r5, 0x2]
|
|
b _08040ADA
|
|
_08040840:
|
|
ldrb r1, [r4]
|
|
movs r0, 0xF
|
|
ands r1, r0
|
|
lsls r1, 7
|
|
ldrh r2, [r5, 0x2]
|
|
ldr r0, _08040854 @ =0xfffff87f
|
|
ands r0, r2
|
|
orrs r0, r1
|
|
strh r0, [r5, 0x2]
|
|
b _08040ADA
|
|
.align 2, 0
|
|
_08040854: .4byte 0xfffff87f
|
|
_08040858:
|
|
ldrb r1, [r4]
|
|
movs r0, 0xF
|
|
ands r1, r0
|
|
lsls r1, 3
|
|
ldrb r2, [r5, 0x3]
|
|
movs r0, 0x79
|
|
negs r0, r0
|
|
ands r0, r2
|
|
orrs r0, r1
|
|
strb r0, [r5, 0x3]
|
|
b _08040ADA
|
|
_0804086E:
|
|
ldrb r0, [r4]
|
|
lsls r0, 7
|
|
ldrb r2, [r5, 0x3]
|
|
movs r1, 0x7F
|
|
ands r1, r2
|
|
orrs r1, r0
|
|
strb r1, [r5, 0x3]
|
|
b _08040ADA
|
|
_0804087E:
|
|
ldrb r1, [r4]
|
|
movs r0, 0x1F
|
|
ands r1, r0
|
|
ldrb r2, [r5, 0x4]
|
|
movs r0, 0x20
|
|
negs r0, r0
|
|
ands r0, r2
|
|
orrs r0, r1
|
|
strb r0, [r5, 0x4]
|
|
b _08040ADA
|
|
_08040892:
|
|
ldrb r1, [r4]
|
|
movs r0, 0x1F
|
|
ands r1, r0
|
|
lsls r1, 5
|
|
ldrh r2, [r5, 0x4]
|
|
ldr r0, _080408A8 @ =0xfffffc1f
|
|
ands r0, r2
|
|
orrs r0, r1
|
|
strh r0, [r5, 0x4]
|
|
b _08040ADA
|
|
.align 2, 0
|
|
_080408A8: .4byte 0xfffffc1f
|
|
_080408AC:
|
|
ldrb r1, [r4]
|
|
movs r0, 0x1F
|
|
ands r1, r0
|
|
lsls r1, 2
|
|
ldrb r2, [r5, 0x5]
|
|
movs r0, 0x7D
|
|
negs r0, r0
|
|
ands r0, r2
|
|
orrs r0, r1
|
|
strb r0, [r5, 0x5]
|
|
b _08040ADA
|
|
_080408C2:
|
|
ldrb r2, [r4]
|
|
movs r0, 0x1F
|
|
ands r2, r0
|
|
lsls r2, 15
|
|
ldr r0, [r5, 0x4]
|
|
ldr r1, _080408D8 @ =0xfff07fff
|
|
ands r0, r1
|
|
orrs r0, r2
|
|
str r0, [r5, 0x4]
|
|
b _08040ADA
|
|
.align 2, 0
|
|
_080408D8: .4byte 0xfff07fff
|
|
_080408DC:
|
|
ldrb r1, [r4]
|
|
movs r0, 0x1F
|
|
ands r1, r0
|
|
lsls r1, 4
|
|
ldrh r2, [r5, 0x6]
|
|
ldr r0, _080408F0 @ =0xfffffe0f
|
|
ands r0, r2
|
|
orrs r0, r1
|
|
strh r0, [r5, 0x6]
|
|
b _08040ADA
|
|
.align 2, 0
|
|
_080408F0: .4byte 0xfffffe0f
|
|
_080408F4:
|
|
ldrb r1, [r4]
|
|
movs r0, 0x1F
|
|
ands r1, r0
|
|
lsls r1, 1
|
|
ldrb r2, [r5, 0x7]
|
|
movs r0, 0x3F
|
|
negs r0, r0
|
|
ands r0, r2
|
|
orrs r0, r1
|
|
b _08040AD8
|
|
_08040908:
|
|
ldrb r1, [r4]
|
|
movs r0, 0x1
|
|
ands r1, r0
|
|
lsls r1, 6
|
|
ldrb r2, [r5, 0x7]
|
|
movs r0, 0x41
|
|
negs r0, r0
|
|
ands r0, r2
|
|
orrs r0, r1
|
|
strb r0, [r5, 0x7]
|
|
lsls r0, 25
|
|
cmp r0, 0
|
|
bge _0804092C
|
|
ldrb r0, [r7, 0x13]
|
|
movs r1, 0x4
|
|
_08040926:
|
|
orrs r0, r1
|
|
strb r0, [r7, 0x13]
|
|
b _08040ADA
|
|
_0804092C:
|
|
ldrb r1, [r7, 0x13]
|
|
movs r0, 0x5
|
|
negs r0, r0
|
|
_08040932:
|
|
ands r0, r1
|
|
strb r0, [r7, 0x13]
|
|
b _08040ADA
|
|
_08040938:
|
|
ldrb r0, [r4]
|
|
lsls r0, 7
|
|
ldrb r2, [r5, 0x7]
|
|
movs r1, 0x7F
|
|
ands r1, r2
|
|
orrs r1, r0
|
|
strb r1, [r5, 0x7]
|
|
b _08040ADA
|
|
_08040948:
|
|
ldrb r1, [r4]
|
|
movs r0, 0x7
|
|
ands r1, r0
|
|
ldrb r2, [r5, 0x8]
|
|
movs r0, 0x8
|
|
negs r0, r0
|
|
b _08040964
|
|
_08040956:
|
|
ldrb r1, [r4]
|
|
movs r0, 0x7
|
|
ands r1, r0
|
|
lsls r1, 3
|
|
ldrb r2, [r5, 0x8]
|
|
movs r0, 0x39
|
|
negs r0, r0
|
|
_08040964:
|
|
ands r0, r2
|
|
orrs r0, r1
|
|
strb r0, [r5, 0x8]
|
|
b _08040ADA
|
|
_0804096C:
|
|
ldrb r1, [r4]
|
|
movs r0, 0x7
|
|
ands r1, r0
|
|
lsls r1, 6
|
|
ldrh r2, [r5, 0x8]
|
|
ldr r0, _08040980 @ =0xfffffe3f
|
|
ands r0, r2
|
|
orrs r0, r1
|
|
strh r0, [r5, 0x8]
|
|
b _08040ADA
|
|
.align 2, 0
|
|
_08040980: .4byte 0xfffffe3f
|
|
_08040984:
|
|
ldrb r1, [r4]
|
|
movs r0, 0x7
|
|
ands r1, r0
|
|
lsls r1, 1
|
|
ldrb r2, [r5, 0x9]
|
|
movs r0, 0xF
|
|
negs r0, r0
|
|
b _080409A2
|
|
_08040994:
|
|
ldrb r1, [r4]
|
|
movs r0, 0x7
|
|
ands r1, r0
|
|
lsls r1, 4
|
|
ldrb r2, [r5, 0x9]
|
|
movs r0, 0x71
|
|
negs r0, r0
|
|
_080409A2:
|
|
ands r0, r2
|
|
orrs r0, r1
|
|
strb r0, [r5, 0x9]
|
|
b _08040ADA
|
|
_080409AA:
|
|
ldrb r0, [r4]
|
|
lsls r0, 7
|
|
ldrb r2, [r5, 0x9]
|
|
movs r1, 0x7F
|
|
ands r1, r2
|
|
orrs r1, r0
|
|
strb r1, [r5, 0x9]
|
|
b _08040ADA
|
|
_080409BA:
|
|
ldrb r1, [r4]
|
|
movs r0, 0x1
|
|
ands r1, r0
|
|
ldrb r2, [r5, 0xA]
|
|
movs r0, 0x2
|
|
negs r0, r0
|
|
b _08040A26
|
|
_080409C8:
|
|
ldrb r1, [r4]
|
|
movs r0, 0x1
|
|
ands r1, r0
|
|
lsls r1, 1
|
|
ldrb r2, [r5, 0xA]
|
|
movs r0, 0x3
|
|
negs r0, r0
|
|
b _08040A26
|
|
_080409D8:
|
|
ldrb r1, [r4]
|
|
movs r0, 0x1
|
|
ands r1, r0
|
|
lsls r1, 2
|
|
ldrb r2, [r5, 0xA]
|
|
movs r0, 0x5
|
|
negs r0, r0
|
|
b _08040A26
|
|
_080409E8:
|
|
ldrb r1, [r4]
|
|
movs r0, 0x1
|
|
ands r1, r0
|
|
lsls r1, 3
|
|
ldrb r2, [r5, 0xA]
|
|
movs r0, 0x9
|
|
negs r0, r0
|
|
b _08040A26
|
|
_080409F8:
|
|
ldrb r1, [r4]
|
|
movs r0, 0x1
|
|
ands r1, r0
|
|
lsls r1, 4
|
|
ldrb r2, [r5, 0xA]
|
|
movs r0, 0x11
|
|
negs r0, r0
|
|
b _08040A26
|
|
_08040A08:
|
|
ldrb r1, [r4]
|
|
movs r0, 0x1
|
|
ands r1, r0
|
|
lsls r1, 5
|
|
ldrb r2, [r5, 0xA]
|
|
movs r0, 0x21
|
|
negs r0, r0
|
|
b _08040A26
|
|
_08040A18:
|
|
ldrb r1, [r4]
|
|
movs r0, 0x1
|
|
ands r1, r0
|
|
lsls r1, 6
|
|
ldrb r2, [r5, 0xA]
|
|
movs r0, 0x41
|
|
negs r0, r0
|
|
_08040A26:
|
|
ands r0, r2
|
|
orrs r0, r1
|
|
strb r0, [r5, 0xA]
|
|
b _08040ADA
|
|
_08040A2E:
|
|
ldrb r0, [r4]
|
|
lsls r0, 7
|
|
ldrb r2, [r5, 0xA]
|
|
movs r1, 0x7F
|
|
ands r1, r2
|
|
orrs r1, r0
|
|
strb r1, [r5, 0xA]
|
|
b _08040ADA
|
|
_08040A3E:
|
|
ldrb r1, [r4]
|
|
movs r0, 0x1
|
|
ands r1, r0
|
|
ldrb r2, [r5, 0xB]
|
|
movs r0, 0x2
|
|
negs r0, r0
|
|
b _08040A7A
|
|
_08040A4C:
|
|
ldrb r1, [r4]
|
|
movs r0, 0x1
|
|
ands r1, r0
|
|
lsls r1, 1
|
|
ldrb r2, [r5, 0xB]
|
|
movs r0, 0x3
|
|
negs r0, r0
|
|
b _08040A7A
|
|
_08040A5C:
|
|
ldrb r1, [r4]
|
|
movs r0, 0x1
|
|
ands r1, r0
|
|
lsls r1, 2
|
|
ldrb r2, [r5, 0xB]
|
|
movs r0, 0x5
|
|
negs r0, r0
|
|
b _08040A7A
|
|
_08040A6C:
|
|
ldrb r1, [r4]
|
|
movs r0, 0xF
|
|
ands r1, r0
|
|
lsls r1, 3
|
|
ldrb r2, [r5, 0xB]
|
|
movs r0, 0x79
|
|
negs r0, r0
|
|
_08040A7A:
|
|
ands r0, r2
|
|
orrs r0, r1
|
|
strb r0, [r5, 0xB]
|
|
b _08040ADA
|
|
_08040A82:
|
|
ldrb r0, [r4]
|
|
lsls r0, 7
|
|
ldrb r2, [r5, 0xB]
|
|
movs r1, 0x7F
|
|
ands r1, r2
|
|
orrs r1, r0
|
|
strb r1, [r5, 0xB]
|
|
b _08040ADA
|
|
_08040A92:
|
|
ldrb r1, [r4]
|
|
movs r4, 0x1F
|
|
adds r2, r1, 0
|
|
ands r2, r4
|
|
ldrb r3, [r5, 0x4]
|
|
movs r0, 0x20
|
|
negs r0, r0
|
|
ands r0, r3
|
|
orrs r0, r2
|
|
strb r0, [r5, 0x4]
|
|
lsrs r1, 5
|
|
ands r1, r4
|
|
lsls r1, 5
|
|
ldrh r2, [r5, 0x4]
|
|
ldr r0, _08040AFC @ =0xfffffc1f
|
|
ands r0, r2
|
|
orrs r0, r1
|
|
strh r0, [r5, 0x4]
|
|
ldrb r1, [r5, 0x5]
|
|
movs r0, 0x7D
|
|
negs r0, r0
|
|
ands r0, r1
|
|
strb r0, [r5, 0x5]
|
|
ldr r0, [r5, 0x4]
|
|
ldr r1, _08040B00 @ =0xfff07fff
|
|
ands r0, r1
|
|
str r0, [r5, 0x4]
|
|
ldrh r1, [r5, 0x6]
|
|
ldr r0, _08040B04 @ =0xfffffe0f
|
|
ands r0, r1
|
|
strh r0, [r5, 0x6]
|
|
ldrb r1, [r5, 0x7]
|
|
movs r0, 0x3F
|
|
negs r0, r0
|
|
ands r0, r1
|
|
_08040AD8:
|
|
strb r0, [r5, 0x7]
|
|
_08040ADA:
|
|
mov r0, r10
|
|
cmp r0, 0xA
|
|
ble _08040AEE
|
|
adds r0, r7, 0
|
|
bl CalculateBoxMonChecksum
|
|
strh r0, [r7, 0x1C]
|
|
adds r0, r7, 0
|
|
bl EncryptBoxMon
|
|
_08040AEE:
|
|
pop {r3-r5}
|
|
mov r8, r3
|
|
mov r9, r4
|
|
mov r10, r5
|
|
pop {r4-r7}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_08040AFC: .4byte 0xfffffc1f
|
|
_08040B00: .4byte 0xfff07fff
|
|
_08040B04: .4byte 0xfffffe0f
|
|
thumb_func_end sub_80404D0
|
|
|
|
thumb_func_start CopyMon
|
|
CopyMon: @ 8040B08
|
|
push {lr}
|
|
bl memcpy
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end CopyMon
|
|
|
|
thumb_func_start GiveMonToPlayer
|
|
GiveMonToPlayer: @ 8040B14
|
|
push {r4-r6,lr}
|
|
adds r6, r0, 0
|
|
ldr r4, _08040B40 @ =gSaveBlock2Ptr
|
|
ldr r2, [r4]
|
|
movs r1, 0x7
|
|
bl sub_804037C
|
|
ldr r2, [r4]
|
|
adds r2, 0x8
|
|
adds r0, r6, 0
|
|
movs r1, 0x31
|
|
bl sub_804037C
|
|
ldr r2, [r4]
|
|
adds r2, 0xA
|
|
adds r0, r6, 0
|
|
movs r1, 0x1
|
|
bl sub_804037C
|
|
movs r5, 0
|
|
b _08040B46
|
|
.align 2, 0
|
|
_08040B40: .4byte gSaveBlock2Ptr
|
|
_08040B44:
|
|
adds r5, 0x1
|
|
_08040B46:
|
|
cmp r5, 0x5
|
|
bgt _08040B80
|
|
movs r0, 0x64
|
|
adds r1, r5, 0
|
|
muls r1, r0
|
|
ldr r0, _08040B78 @ =gPlayerParty
|
|
adds r4, r1, r0
|
|
adds r0, r4, 0
|
|
movs r1, 0xB
|
|
movs r2, 0
|
|
bl GetMonData
|
|
cmp r0, 0
|
|
bne _08040B44
|
|
adds r0, r4, 0
|
|
adds r1, r6, 0
|
|
movs r2, 0x64
|
|
bl CopyMon
|
|
ldr r1, _08040B7C @ =gUnknown_2024029
|
|
adds r0, r5, 0x1
|
|
strb r0, [r1]
|
|
movs r0, 0
|
|
b _08040B8A
|
|
.align 2, 0
|
|
_08040B78: .4byte gPlayerParty
|
|
_08040B7C: .4byte gUnknown_2024029
|
|
_08040B80:
|
|
adds r0, r6, 0
|
|
bl SendMonToPC
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
_08040B8A:
|
|
pop {r4-r6}
|
|
pop {r1}
|
|
bx r1
|
|
thumb_func_end GiveMonToPlayer
|
|
|
|
thumb_func_start SendMonToPC
|
|
SendMonToPC: @ 8040B90
|
|
push {r4-r7,lr}
|
|
mov r7, r8
|
|
push {r7}
|
|
mov r8, r0
|
|
ldr r0, _08040C04 @ =0x00004037
|
|
bl VarGet
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
bl set_unknown_box_id
|
|
bl StorageGetCurrentBox
|
|
lsls r0, 24
|
|
lsrs r5, r0, 24
|
|
_08040BAE:
|
|
movs r6, 0
|
|
lsls r7, r5, 24
|
|
_08040BB2:
|
|
lsls r1, r6, 24
|
|
lsrs r1, 24
|
|
lsrs r0, r7, 24
|
|
bl GetBoxedMonPtr
|
|
adds r4, r0, 0
|
|
movs r1, 0xB
|
|
movs r2, 0
|
|
bl GetBoxMonData
|
|
cmp r0, 0
|
|
bne _08040C14
|
|
mov r0, r8
|
|
bl MonRestorePP
|
|
adds r0, r4, 0
|
|
mov r1, r8
|
|
movs r2, 0x50
|
|
bl CopyMon
|
|
ldr r0, _08040C08 @ =gUnknown_20370D6
|
|
strh r5, [r0]
|
|
ldr r0, _08040C0C @ =gUnknown_20370D8
|
|
strh r6, [r0]
|
|
bl get_unknown_box_id
|
|
lsls r0, 16
|
|
lsrs r0, 16
|
|
cmp r0, r5
|
|
beq _08040BF4
|
|
ldr r0, _08040C10 @ =0x00000843
|
|
bl FlagClear
|
|
_08040BF4:
|
|
lsls r1, r5, 16
|
|
ldr r0, _08040C04 @ =0x00004037
|
|
lsrs r1, 16
|
|
bl VarSet
|
|
movs r0, 0x1
|
|
b _08040C30
|
|
.align 2, 0
|
|
_08040C04: .4byte 0x00004037
|
|
_08040C08: .4byte gUnknown_20370D6
|
|
_08040C0C: .4byte gUnknown_20370D8
|
|
_08040C10: .4byte 0x00000843
|
|
_08040C14:
|
|
adds r6, 0x1
|
|
cmp r6, 0x1D
|
|
ble _08040BB2
|
|
adds r5, 0x1
|
|
cmp r5, 0xE
|
|
bne _08040C22
|
|
movs r5, 0
|
|
_08040C22:
|
|
bl StorageGetCurrentBox
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
cmp r5, r0
|
|
bne _08040BAE
|
|
movs r0, 0x2
|
|
_08040C30:
|
|
pop {r3}
|
|
mov r8, r3
|
|
pop {r4-r7}
|
|
pop {r1}
|
|
bx r1
|
|
thumb_func_end SendMonToPC
|
|
|
|
thumb_func_start CalculatePlayerPartyCount
|
|
CalculatePlayerPartyCount: @ 8040C3C
|
|
push {r4,lr}
|
|
ldr r0, _08040C48 @ =gUnknown_2024029
|
|
movs r1, 0
|
|
strb r1, [r0]
|
|
b _08040C54
|
|
.align 2, 0
|
|
_08040C48: .4byte gUnknown_2024029
|
|
_08040C4C:
|
|
ldrb r0, [r4]
|
|
adds r0, 0x1
|
|
strb r0, [r4]
|
|
adds r0, r4, 0
|
|
_08040C54:
|
|
adds r4, r0, 0
|
|
ldrb r0, [r4]
|
|
cmp r0, 0x5
|
|
bhi _08040C72
|
|
adds r1, r0, 0
|
|
movs r0, 0x64
|
|
muls r0, r1
|
|
ldr r1, _08040C7C @ =gPlayerParty
|
|
adds r0, r1
|
|
movs r1, 0xB
|
|
movs r2, 0
|
|
bl GetMonData
|
|
cmp r0, 0
|
|
bne _08040C4C
|
|
_08040C72:
|
|
ldrb r0, [r4]
|
|
pop {r4}
|
|
pop {r1}
|
|
bx r1
|
|
.align 2, 0
|
|
_08040C7C: .4byte gPlayerParty
|
|
thumb_func_end CalculatePlayerPartyCount
|
|
|
|
thumb_func_start CalculateEnemyPartyCount
|
|
CalculateEnemyPartyCount: @ 8040C80
|
|
push {r4,lr}
|
|
ldr r0, _08040C8C @ =gUnknown_202402A
|
|
movs r1, 0
|
|
strb r1, [r0]
|
|
b _08040C98
|
|
.align 2, 0
|
|
_08040C8C: .4byte gUnknown_202402A
|
|
_08040C90:
|
|
ldrb r0, [r4]
|
|
adds r0, 0x1
|
|
strb r0, [r4]
|
|
adds r0, r4, 0
|
|
_08040C98:
|
|
adds r4, r0, 0
|
|
ldrb r0, [r4]
|
|
cmp r0, 0x5
|
|
bhi _08040CB6
|
|
adds r1, r0, 0
|
|
movs r0, 0x64
|
|
muls r0, r1
|
|
ldr r1, _08040CC0 @ =gEnemyParty
|
|
adds r0, r1
|
|
movs r1, 0xB
|
|
movs r2, 0
|
|
bl GetMonData
|
|
cmp r0, 0
|
|
bne _08040C90
|
|
_08040CB6:
|
|
ldrb r0, [r4]
|
|
pop {r4}
|
|
pop {r1}
|
|
bx r1
|
|
.align 2, 0
|
|
_08040CC0: .4byte gEnemyParty
|
|
thumb_func_end CalculateEnemyPartyCount
|
|
|
|
thumb_func_start GetMonsStateToDoubles
|
|
GetMonsStateToDoubles: @ 8040CC4
|
|
push {r4-r6,lr}
|
|
movs r6, 0
|
|
bl CalculatePlayerPartyCount
|
|
ldr r1, _08040D30 @ =gUnknown_2024029
|
|
ldrb r0, [r1]
|
|
cmp r0, 0x1
|
|
beq _08040D28
|
|
movs r5, 0
|
|
ldrb r1, [r1]
|
|
cmp r6, r1
|
|
bge _08040D20
|
|
_08040CDC:
|
|
movs r0, 0x64
|
|
adds r1, r5, 0
|
|
muls r1, r0
|
|
ldr r0, _08040D34 @ =gPlayerParty
|
|
adds r4, r1, r0
|
|
adds r0, r4, 0
|
|
movs r1, 0x39
|
|
movs r2, 0
|
|
bl GetMonData
|
|
cmp r0, 0
|
|
beq _08040D16
|
|
adds r0, r4, 0
|
|
movs r1, 0x41
|
|
movs r2, 0
|
|
bl GetMonData
|
|
cmp r0, 0
|
|
beq _08040D16
|
|
adds r0, r4, 0
|
|
movs r1, 0x41
|
|
movs r2, 0
|
|
bl GetMonData
|
|
movs r1, 0xCE
|
|
lsls r1, 1
|
|
cmp r0, r1
|
|
beq _08040D16
|
|
adds r6, 0x1
|
|
_08040D16:
|
|
adds r5, 0x1
|
|
ldr r0, _08040D30 @ =gUnknown_2024029
|
|
ldrb r0, [r0]
|
|
cmp r5, r0
|
|
blt _08040CDC
|
|
_08040D20:
|
|
movs r0, 0
|
|
cmp r6, 0x1
|
|
bgt _08040D28
|
|
movs r0, 0x2
|
|
_08040D28:
|
|
pop {r4-r6}
|
|
pop {r1}
|
|
bx r1
|
|
.align 2, 0
|
|
_08040D30: .4byte gUnknown_2024029
|
|
_08040D34: .4byte gPlayerParty
|
|
thumb_func_end GetMonsStateToDoubles
|
|
|
|
thumb_func_start GetAbilityBySpecies
|
|
GetAbilityBySpecies: @ 8040D38
|
|
push {lr}
|
|
lsls r0, 16
|
|
lsrs r3, r0, 16
|
|
lsls r1, 24
|
|
cmp r1, 0
|
|
beq _08040D5C
|
|
ldr r2, _08040D54 @ =gUnknown_2023D6A
|
|
ldr r1, _08040D58 @ =gBaseStats
|
|
lsls r0, r3, 3
|
|
subs r0, r3
|
|
lsls r0, 2
|
|
adds r0, r1
|
|
ldrb r0, [r0, 0x17]
|
|
b _08040D6A
|
|
.align 2, 0
|
|
_08040D54: .4byte gUnknown_2023D6A
|
|
_08040D58: .4byte gBaseStats
|
|
_08040D5C:
|
|
ldr r2, _08040D74 @ =gUnknown_2023D6A
|
|
ldr r1, _08040D78 @ =gBaseStats
|
|
lsls r0, r3, 3
|
|
subs r0, r3
|
|
lsls r0, 2
|
|
adds r0, r1
|
|
ldrb r0, [r0, 0x16]
|
|
_08040D6A:
|
|
strb r0, [r2]
|
|
ldrb r0, [r2]
|
|
pop {r1}
|
|
bx r1
|
|
.align 2, 0
|
|
_08040D74: .4byte gUnknown_2023D6A
|
|
_08040D78: .4byte gBaseStats
|
|
thumb_func_end GetAbilityBySpecies
|
|
|
|
thumb_func_start GetMonAbility
|
|
GetMonAbility: @ 8040D7C
|
|
push {r4,r5,lr}
|
|
adds r5, r0, 0
|
|
movs r1, 0xB
|
|
movs r2, 0
|
|
bl GetMonData
|
|
adds r4, r0, 0
|
|
lsls r4, 16
|
|
lsrs r4, 16
|
|
adds r0, r5, 0
|
|
movs r1, 0x2E
|
|
movs r2, 0
|
|
bl GetMonData
|
|
adds r1, r0, 0
|
|
lsls r1, 24
|
|
lsrs r1, 24
|
|
adds r0, r4, 0
|
|
bl GetAbilityBySpecies
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
pop {r4,r5}
|
|
pop {r1}
|
|
bx r1
|
|
thumb_func_end GetMonAbility
|
|
|
|
thumb_func_start CreateSecretBaseEnemyParty
|
|
CreateSecretBaseEnemyParty: @ 8040DB0
|
|
push {r4-r7,lr}
|
|
mov r7, r10
|
|
mov r6, r9
|
|
mov r5, r8
|
|
push {r5-r7}
|
|
sub sp, 0x14
|
|
adds r5, r0, 0
|
|
bl ZeroEnemyPartyMons
|
|
ldr r4, _08040ED8 @ =gBattleResources
|
|
ldr r0, [r4]
|
|
ldr r0, [r0]
|
|
adds r1, r5, 0
|
|
movs r2, 0xA0
|
|
bl memcpy
|
|
movs r0, 0
|
|
mov r9, r0
|
|
_08040DD4:
|
|
ldr r1, _08040ED8 @ =gBattleResources
|
|
ldr r3, [r1]
|
|
ldr r2, [r3]
|
|
mov r4, r9
|
|
lsls r7, r4, 1
|
|
adds r0, r2, 0
|
|
adds r0, 0x7C
|
|
adds r1, r0, r7
|
|
ldrh r0, [r1]
|
|
adds r4, 0x1
|
|
str r4, [sp, 0x10]
|
|
cmp r0, 0
|
|
beq _08040EAE
|
|
movs r0, 0x64
|
|
mov r6, r9
|
|
muls r6, r0
|
|
ldr r4, _08040EDC @ =gEnemyParty
|
|
mov r8, r4
|
|
adds r5, r6, r4
|
|
ldrh r1, [r1]
|
|
adds r0, r2, 0
|
|
adds r0, 0x94
|
|
add r0, r9
|
|
ldrb r2, [r0]
|
|
movs r0, 0x1
|
|
str r0, [sp]
|
|
ldr r0, [r3]
|
|
mov r3, r9
|
|
lsls r4, r3, 2
|
|
adds r0, 0x34
|
|
adds r0, r4
|
|
ldr r0, [r0]
|
|
str r0, [sp, 0x4]
|
|
movs r0, 0x2
|
|
str r0, [sp, 0x8]
|
|
movs r0, 0
|
|
str r0, [sp, 0xC]
|
|
adds r0, r5, 0
|
|
movs r3, 0xF
|
|
bl CreateMon
|
|
ldr r1, _08040ED8 @ =gBattleResources
|
|
ldr r0, [r1]
|
|
adds r1, r7, 0
|
|
adds r1, 0x88
|
|
ldr r2, [r0]
|
|
adds r2, r1
|
|
adds r0, r5, 0
|
|
movs r1, 0xC
|
|
bl sub_804037C
|
|
movs r5, 0
|
|
mov r10, r4
|
|
mov r7, r9
|
|
adds r7, 0x9A
|
|
mov r4, r8
|
|
_08040E44:
|
|
adds r1, r5, 0
|
|
adds r1, 0x1A
|
|
ldr r2, _08040ED8 @ =gBattleResources
|
|
ldr r0, [r2]
|
|
ldr r2, [r0]
|
|
adds r2, r7
|
|
adds r0, r6, r4
|
|
bl sub_804037C
|
|
adds r5, 0x1
|
|
cmp r5, 0x5
|
|
ble _08040E44
|
|
movs r5, 0
|
|
movs r3, 0x64
|
|
mov r0, r9
|
|
muls r0, r3
|
|
ldr r1, _08040EDC @ =gEnemyParty
|
|
adds r7, r0, r1
|
|
mov r4, r10
|
|
lsls r0, r4, 1
|
|
adds r6, r0, 0
|
|
adds r6, 0x4C
|
|
adds r4, r0, 0
|
|
_08040E72:
|
|
adds r1, r5, 0
|
|
adds r1, 0xD
|
|
ldr r2, _08040ED8 @ =gBattleResources
|
|
ldr r0, [r2]
|
|
ldr r2, [r0]
|
|
adds r2, r6
|
|
adds r0, r7, 0
|
|
bl sub_804037C
|
|
adds r1, r5, 0
|
|
adds r1, 0x11
|
|
ldr r3, _08040ED8 @ =gBattleResources
|
|
ldr r0, [r3]
|
|
ldr r0, [r0]
|
|
adds r0, 0x4C
|
|
adds r0, r4
|
|
ldrh r0, [r0]
|
|
lsls r2, r0, 1
|
|
adds r2, r0
|
|
lsls r2, 2
|
|
ldr r0, _08040EE0 @ =gUnknown_8250C08
|
|
adds r2, r0
|
|
adds r0, r7, 0
|
|
bl sub_804037C
|
|
adds r6, 0x2
|
|
adds r4, 0x2
|
|
adds r5, 0x1
|
|
cmp r5, 0x3
|
|
ble _08040E72
|
|
_08040EAE:
|
|
ldr r4, [sp, 0x10]
|
|
mov r9, r4
|
|
cmp r4, 0x5
|
|
ble _08040DD4
|
|
ldr r1, _08040EE4 @ =gBattleTypeFlags
|
|
movs r0, 0x8
|
|
str r0, [r1]
|
|
ldr r1, _08040EE8 @ =gTrainerBattleOpponent_A
|
|
movs r2, 0x80
|
|
lsls r2, 3
|
|
adds r0, r2, 0
|
|
strh r0, [r1]
|
|
add sp, 0x14
|
|
pop {r3-r5}
|
|
mov r8, r3
|
|
mov r9, r4
|
|
mov r10, r5
|
|
pop {r4-r7}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_08040ED8: .4byte gBattleResources
|
|
_08040EDC: .4byte gEnemyParty
|
|
_08040EE0: .4byte gUnknown_8250C08
|
|
_08040EE4: .4byte gBattleTypeFlags
|
|
_08040EE8: .4byte gTrainerBattleOpponent_A
|
|
thumb_func_end CreateSecretBaseEnemyParty
|
|
|
|
thumb_func_start GetSecretBaseTrainerPicIndex
|
|
GetSecretBaseTrainerPicIndex: @ 8040EEC
|
|
push {r4,r5,lr}
|
|
ldr r5, _08040F20 @ =gUnknown_825DFE0
|
|
ldr r0, _08040F24 @ =gBattleResources
|
|
ldr r0, [r0]
|
|
ldr r4, [r0]
|
|
ldrb r0, [r4, 0x9]
|
|
movs r1, 0x5
|
|
bl __umodsi3
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
ldrb r2, [r4, 0x1]
|
|
lsls r2, 27
|
|
lsrs r2, 31
|
|
lsls r1, r2, 2
|
|
adds r1, r2
|
|
adds r0, r1
|
|
adds r0, r5
|
|
ldrb r0, [r0]
|
|
ldr r1, _08040F28 @ =gUnknown_82538A8
|
|
adds r0, r1
|
|
ldrb r0, [r0]
|
|
pop {r4,r5}
|
|
pop {r1}
|
|
bx r1
|
|
.align 2, 0
|
|
_08040F20: .4byte gUnknown_825DFE0
|
|
_08040F24: .4byte gBattleResources
|
|
_08040F28: .4byte gUnknown_82538A8
|
|
thumb_func_end GetSecretBaseTrainerPicIndex
|
|
|
|
thumb_func_start GetSecretBaseTrainerNameIndex
|
|
GetSecretBaseTrainerNameIndex: @ 8040F2C
|
|
push {r4,r5,lr}
|
|
ldr r5, _08040F60 @ =gUnknown_825DFE0
|
|
ldr r0, _08040F64 @ =gBattleResources
|
|
ldr r0, [r0]
|
|
ldr r4, [r0]
|
|
ldrb r0, [r4, 0x9]
|
|
movs r1, 0x5
|
|
bl __umodsi3
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
ldrb r2, [r4, 0x1]
|
|
lsls r2, 27
|
|
lsrs r2, 31
|
|
lsls r1, r2, 2
|
|
adds r1, r2
|
|
adds r0, r1
|
|
adds r0, r5
|
|
ldrb r0, [r0]
|
|
ldr r1, _08040F68 @ =gUnknown_825393E
|
|
adds r0, r1
|
|
ldrb r0, [r0]
|
|
pop {r4,r5}
|
|
pop {r1}
|
|
bx r1
|
|
.align 2, 0
|
|
_08040F60: .4byte gUnknown_825DFE0
|
|
_08040F64: .4byte gBattleResources
|
|
_08040F68: .4byte gUnknown_825393E
|
|
thumb_func_end GetSecretBaseTrainerNameIndex
|
|
|
|
thumb_func_start IsPlayerPartyAndPokemonStorageFull
|
|
IsPlayerPartyAndPokemonStorageFull: @ 8040F6C
|
|
push {r4,lr}
|
|
movs r4, 0
|
|
_08040F70:
|
|
movs r0, 0x64
|
|
muls r0, r4
|
|
ldr r1, _08040F88 @ =gPlayerParty
|
|
adds r0, r1
|
|
movs r1, 0xB
|
|
movs r2, 0
|
|
bl GetMonData
|
|
cmp r0, 0
|
|
bne _08040F8C
|
|
movs r0, 0
|
|
b _08040F9A
|
|
.align 2, 0
|
|
_08040F88: .4byte gPlayerParty
|
|
_08040F8C:
|
|
adds r4, 0x1
|
|
cmp r4, 0x5
|
|
ble _08040F70
|
|
bl IsPokemonStorageFull
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
_08040F9A:
|
|
pop {r4}
|
|
pop {r1}
|
|
bx r1
|
|
thumb_func_end IsPlayerPartyAndPokemonStorageFull
|
|
|
|
thumb_func_start IsPokemonStorageFull
|
|
IsPokemonStorageFull: @ 8040FA0
|
|
push {r4-r6,lr}
|
|
movs r6, 0
|
|
_08040FA4:
|
|
movs r4, 0
|
|
lsls r5, r6, 24
|
|
_08040FA8:
|
|
lsls r1, r4, 24
|
|
lsrs r1, 24
|
|
lsrs r0, r5, 24
|
|
movs r2, 0xB
|
|
bl GetBoxMonDataFromAnyBox
|
|
cmp r0, 0
|
|
bne _08040FBC
|
|
movs r0, 0
|
|
b _08040FCA
|
|
_08040FBC:
|
|
adds r4, 0x1
|
|
cmp r4, 0x1D
|
|
ble _08040FA8
|
|
adds r6, 0x1
|
|
cmp r6, 0xD
|
|
ble _08040FA4
|
|
movs r0, 0x1
|
|
_08040FCA:
|
|
pop {r4-r6}
|
|
pop {r1}
|
|
bx r1
|
|
thumb_func_end IsPokemonStorageFull
|
|
|
|
thumb_func_start GetSpeciesName
|
|
GetSpeciesName: @ 8040FD0
|
|
push {r4-r7,lr}
|
|
adds r6, r0, 0
|
|
lsls r1, 16
|
|
lsrs r5, r1, 16
|
|
movs r1, 0
|
|
movs r0, 0xCE
|
|
lsls r0, 1
|
|
mov r12, r0
|
|
ldr r7, _08040FEC @ =gUnknown_8245EE0
|
|
movs r0, 0xB
|
|
muls r0, r5
|
|
adds r3, r0, r7
|
|
adds r2, r6, 0
|
|
b _08040FF6
|
|
.align 2, 0
|
|
_08040FEC: .4byte gUnknown_8245EE0
|
|
_08040FF0:
|
|
adds r3, 0x1
|
|
adds r2, 0x1
|
|
adds r1, 0x1
|
|
_08040FF6:
|
|
adds r4, r6, r1
|
|
cmp r1, 0x9
|
|
bgt _08041010
|
|
cmp r5, r12
|
|
bls _08041006
|
|
adds r0, r1, r7
|
|
ldrb r0, [r0]
|
|
b _08041008
|
|
_08041006:
|
|
ldrb r0, [r3]
|
|
_08041008:
|
|
strb r0, [r2]
|
|
ldrb r0, [r4]
|
|
cmp r0, 0xFF
|
|
bne _08040FF0
|
|
_08041010:
|
|
movs r0, 0xFF
|
|
strb r0, [r4]
|
|
pop {r4-r7}
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end GetSpeciesName
|
|
|
|
thumb_func_start CalculatePPWithBonus
|
|
CalculatePPWithBonus: @ 804101C
|
|
push {r4,lr}
|
|
lsls r0, 16
|
|
lsrs r0, 16
|
|
lsls r2, 24
|
|
lsrs r2, 24
|
|
ldr r4, _0804105C @ =gBattleMoves
|
|
lsls r3, r0, 1
|
|
adds r3, r0
|
|
lsls r3, 2
|
|
adds r3, r4
|
|
ldrb r4, [r3, 0x4]
|
|
ldr r0, _08041060 @ =gUnknown_825DEA1
|
|
adds r0, r2, r0
|
|
ldrb r3, [r0]
|
|
ands r3, r1
|
|
lsls r2, 1
|
|
asrs r3, r2
|
|
lsls r0, r3, 2
|
|
adds r0, r3
|
|
lsls r0, 2
|
|
muls r0, r4
|
|
movs r1, 0x64
|
|
bl __divsi3
|
|
adds r4, r0
|
|
lsls r4, 24
|
|
lsrs r4, 24
|
|
adds r0, r4, 0
|
|
pop {r4}
|
|
pop {r1}
|
|
bx r1
|
|
.align 2, 0
|
|
_0804105C: .4byte gBattleMoves
|
|
_08041060: .4byte gUnknown_825DEA1
|
|
thumb_func_end CalculatePPWithBonus
|
|
|
|
thumb_func_start RemoveMonPPBonus
|
|
RemoveMonPPBonus: @ 8041064
|
|
push {r4,r5,lr}
|
|
sub sp, 0x4
|
|
adds r5, r0, 0
|
|
lsls r4, r1, 24
|
|
lsrs r4, 24
|
|
movs r1, 0x15
|
|
movs r2, 0
|
|
bl GetMonData
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
mov r1, sp
|
|
strb r0, [r1]
|
|
ldr r1, _0804109C @ =gUnknown_825DEA5
|
|
adds r4, r1
|
|
ldrb r1, [r4]
|
|
ands r1, r0
|
|
mov r0, sp
|
|
strb r1, [r0]
|
|
adds r0, r5, 0
|
|
movs r1, 0x15
|
|
mov r2, sp
|
|
bl sub_804037C
|
|
add sp, 0x4
|
|
pop {r4,r5}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_0804109C: .4byte gUnknown_825DEA5
|
|
thumb_func_end RemoveMonPPBonus
|
|
|
|
thumb_func_start RemoveBattleMonPPBonus
|
|
RemoveBattleMonPPBonus: @ 80410A0
|
|
lsls r1, 24
|
|
lsrs r1, 24
|
|
adds r0, 0x3B
|
|
ldr r2, _080410B4 @ =gUnknown_825DEA5
|
|
adds r1, r2
|
|
ldrb r2, [r0]
|
|
ldrb r1, [r1]
|
|
ands r1, r2
|
|
strb r1, [r0]
|
|
bx lr
|
|
.align 2, 0
|
|
_080410B4: .4byte gUnknown_825DEA5
|
|
thumb_func_end RemoveBattleMonPPBonus
|
|
|
|
thumb_func_start CopyPlayerPartyMonToBattleData
|
|
CopyPlayerPartyMonToBattleData: @ 80410B8
|
|
push {r4-r7,lr}
|
|
mov r7, r10
|
|
mov r6, r9
|
|
mov r5, r8
|
|
push {r5-r7}
|
|
sub sp, 0x18
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
str r0, [sp, 0x14]
|
|
lsls r1, 24
|
|
lsrs r1, 24
|
|
mov r9, r1
|
|
movs r0, 0x64
|
|
mov r5, r9
|
|
muls r5, r0
|
|
ldr r0, _080413A4 @ =gPlayerParty
|
|
adds r5, r0
|
|
adds r0, r5, 0
|
|
movs r1, 0xB
|
|
movs r2, 0
|
|
bl GetMonData
|
|
ldr r1, _080413A8 @ =gBattleMons
|
|
mov r8, r1
|
|
movs r1, 0x58
|
|
ldr r2, [sp, 0x14]
|
|
adds r4, r2, 0
|
|
muls r4, r1
|
|
mov r3, r8
|
|
adds r6, r4, r3
|
|
strh r0, [r6]
|
|
adds r0, r5, 0
|
|
movs r1, 0xC
|
|
movs r2, 0
|
|
bl GetMonData
|
|
strh r0, [r6, 0x2E]
|
|
movs r6, 0
|
|
mov r0, r8
|
|
adds r0, 0x24
|
|
adds r7, r4, r0
|
|
_0804110A:
|
|
adds r1, r6, 0
|
|
adds r1, 0xD
|
|
adds r0, r5, 0
|
|
movs r2, 0
|
|
bl GetMonData
|
|
movs r1, 0xC
|
|
add r1, r8
|
|
mov r10, r1
|
|
adds r1, r4, r1
|
|
strh r0, [r1]
|
|
adds r1, r6, 0
|
|
adds r1, 0x11
|
|
adds r0, r5, 0
|
|
movs r2, 0
|
|
bl GetMonData
|
|
strb r0, [r7]
|
|
adds r7, 0x1
|
|
adds r4, 0x2
|
|
adds r6, 0x1
|
|
cmp r6, 0x3
|
|
ble _0804110A
|
|
movs r0, 0x64
|
|
mov r4, r9
|
|
muls r4, r0
|
|
ldr r0, _080413A4 @ =gPlayerParty
|
|
adds r4, r0
|
|
adds r0, r4, 0
|
|
movs r1, 0x15
|
|
movs r2, 0
|
|
bl GetMonData
|
|
movs r2, 0xC
|
|
negs r2, r2
|
|
add r2, r10
|
|
mov r9, r2
|
|
movs r1, 0x58
|
|
ldr r3, [sp, 0x14]
|
|
adds r5, r3, 0
|
|
muls r5, r1
|
|
adds r7, r5, r2
|
|
adds r1, r7, 0
|
|
adds r1, 0x3B
|
|
strb r0, [r1]
|
|
adds r0, r4, 0
|
|
movs r1, 0x20
|
|
movs r2, 0
|
|
bl GetMonData
|
|
adds r1, r7, 0
|
|
adds r1, 0x2B
|
|
strb r0, [r1]
|
|
adds r0, r4, 0
|
|
movs r1, 0x19
|
|
movs r2, 0
|
|
bl GetMonData
|
|
mov r1, r10
|
|
adds r1, 0x38
|
|
adds r1, r5, r1
|
|
str r0, [r1]
|
|
adds r0, r4, 0
|
|
movs r1, 0x27
|
|
movs r2, 0
|
|
bl GetMonData
|
|
movs r6, 0x1F
|
|
ands r0, r6
|
|
ldrb r2, [r7, 0x14]
|
|
movs r1, 0x20
|
|
negs r1, r1
|
|
ands r1, r2
|
|
orrs r1, r0
|
|
strb r1, [r7, 0x14]
|
|
adds r0, r4, 0
|
|
movs r1, 0x28
|
|
movs r2, 0
|
|
bl GetMonData
|
|
movs r1, 0x1F
|
|
mov r8, r1
|
|
mov r2, r8
|
|
ands r0, r2
|
|
lsls r0, 5
|
|
ldrh r2, [r7, 0x14]
|
|
ldr r1, _080413AC @ =0xfffffc1f
|
|
ands r1, r2
|
|
orrs r1, r0
|
|
strh r1, [r7, 0x14]
|
|
adds r0, r4, 0
|
|
movs r1, 0x29
|
|
movs r2, 0
|
|
bl GetMonData
|
|
ands r0, r6
|
|
lsls r0, 2
|
|
ldrb r2, [r7, 0x15]
|
|
movs r1, 0x7D
|
|
negs r1, r1
|
|
ands r1, r2
|
|
orrs r1, r0
|
|
strb r1, [r7, 0x15]
|
|
adds r0, r4, 0
|
|
movs r1, 0x2A
|
|
movs r2, 0
|
|
bl GetMonData
|
|
movs r1, 0x1F
|
|
ands r1, r0
|
|
lsls r1, 15
|
|
ldr r0, [r7, 0x14]
|
|
ldr r2, _080413B0 @ =0xfff07fff
|
|
ands r0, r2
|
|
orrs r0, r1
|
|
str r0, [r7, 0x14]
|
|
adds r0, r4, 0
|
|
movs r1, 0x2B
|
|
movs r2, 0
|
|
bl GetMonData
|
|
mov r3, r8
|
|
ands r0, r3
|
|
lsls r0, 4
|
|
ldrh r2, [r7, 0x16]
|
|
ldr r1, _080413B4 @ =0xfffffe0f
|
|
ands r1, r2
|
|
orrs r1, r0
|
|
strh r1, [r7, 0x16]
|
|
adds r0, r4, 0
|
|
movs r1, 0x2C
|
|
movs r2, 0
|
|
bl GetMonData
|
|
ands r0, r6
|
|
lsls r0, 1
|
|
ldrb r2, [r7, 0x17]
|
|
movs r1, 0x3F
|
|
negs r1, r1
|
|
ands r1, r2
|
|
orrs r1, r0
|
|
strb r1, [r7, 0x17]
|
|
adds r0, r4, 0
|
|
movs r1, 0
|
|
movs r2, 0
|
|
bl GetMonData
|
|
mov r1, r10
|
|
adds r1, 0x3C
|
|
adds r1, r5, r1
|
|
str r0, [r1]
|
|
adds r0, r4, 0
|
|
movs r1, 0x37
|
|
movs r2, 0
|
|
bl GetMonData
|
|
mov r1, r10
|
|
adds r1, 0x40
|
|
adds r1, r5, r1
|
|
str r0, [r1]
|
|
adds r0, r4, 0
|
|
movs r1, 0x38
|
|
movs r2, 0
|
|
bl GetMonData
|
|
adds r1, r7, 0
|
|
adds r1, 0x2A
|
|
strb r0, [r1]
|
|
adds r0, r4, 0
|
|
movs r1, 0x39
|
|
movs r2, 0
|
|
bl GetMonData
|
|
strh r0, [r7, 0x28]
|
|
adds r0, r4, 0
|
|
movs r1, 0x3A
|
|
movs r2, 0
|
|
bl GetMonData
|
|
strh r0, [r7, 0x2C]
|
|
adds r0, r4, 0
|
|
movs r1, 0x3B
|
|
movs r2, 0
|
|
bl GetMonData
|
|
strh r0, [r7, 0x2]
|
|
adds r0, r4, 0
|
|
movs r1, 0x3C
|
|
movs r2, 0
|
|
bl GetMonData
|
|
strh r0, [r7, 0x4]
|
|
adds r0, r4, 0
|
|
movs r1, 0x3D
|
|
movs r2, 0
|
|
bl GetMonData
|
|
strh r0, [r7, 0x6]
|
|
adds r0, r4, 0
|
|
movs r1, 0x3E
|
|
movs r2, 0
|
|
bl GetMonData
|
|
strh r0, [r7, 0x8]
|
|
adds r0, r4, 0
|
|
movs r1, 0x3F
|
|
movs r2, 0
|
|
bl GetMonData
|
|
strh r0, [r7, 0xA]
|
|
adds r0, r4, 0
|
|
movs r1, 0x2D
|
|
movs r2, 0
|
|
bl GetMonData
|
|
movs r1, 0x1
|
|
ands r0, r1
|
|
lsls r0, 6
|
|
ldrb r2, [r7, 0x17]
|
|
movs r1, 0x41
|
|
negs r1, r1
|
|
ands r1, r2
|
|
orrs r1, r0
|
|
strb r1, [r7, 0x17]
|
|
adds r0, r4, 0
|
|
movs r1, 0x2E
|
|
movs r2, 0
|
|
bl GetMonData
|
|
lsls r0, 7
|
|
ldrb r2, [r7, 0x17]
|
|
movs r1, 0x7F
|
|
ands r1, r2
|
|
orrs r1, r0
|
|
strb r1, [r7, 0x17]
|
|
adds r0, r4, 0
|
|
movs r1, 0x1
|
|
movs r2, 0
|
|
bl GetMonData
|
|
mov r1, r10
|
|
adds r1, 0x48
|
|
adds r1, r5, r1
|
|
str r0, [r1]
|
|
ldr r2, _080413B8 @ =gBaseStats
|
|
ldrh r1, [r7]
|
|
lsls r0, r1, 3
|
|
subs r0, r1
|
|
lsls r0, 2
|
|
adds r0, r2
|
|
ldrb r0, [r0, 0x6]
|
|
adds r1, r7, 0
|
|
adds r1, 0x21
|
|
strb r0, [r1]
|
|
ldrh r1, [r7]
|
|
lsls r0, r1, 3
|
|
subs r0, r1
|
|
lsls r0, 2
|
|
adds r0, r2
|
|
ldrb r0, [r0, 0x7]
|
|
adds r1, r7, 0
|
|
adds r1, 0x22
|
|
strb r0, [r1]
|
|
ldrh r0, [r7]
|
|
ldrb r1, [r7, 0x17]
|
|
lsrs r1, 7
|
|
bl GetAbilityBySpecies
|
|
adds r1, r7, 0
|
|
adds r1, 0x20
|
|
strb r0, [r1]
|
|
adds r0, r4, 0
|
|
movs r1, 0x2
|
|
mov r2, sp
|
|
bl GetMonData
|
|
mov r0, r10
|
|
adds r0, 0x24
|
|
adds r0, r5, r0
|
|
mov r1, sp
|
|
bl StringCopy10
|
|
mov r2, r10
|
|
adds r2, 0x30
|
|
adds r2, r5, r2
|
|
adds r0, r4, 0
|
|
movs r1, 0x7
|
|
bl GetMonData
|
|
ldr r0, [sp, 0x14]
|
|
bl GetBankSide
|
|
ldr r1, _080413BC @ =gBattleStruct
|
|
lsls r0, 24
|
|
lsrs r0, 23
|
|
adds r0, 0xA8
|
|
ldr r1, [r1]
|
|
adds r1, r0
|
|
ldrh r0, [r7, 0x28]
|
|
strh r0, [r1]
|
|
movs r2, 0x6
|
|
mov r1, r9
|
|
movs r6, 0x7
|
|
add r5, r10
|
|
adds r0, r5, 0
|
|
adds r0, 0x13
|
|
_0804136E:
|
|
strb r2, [r0]
|
|
subs r0, 0x1
|
|
subs r6, 0x1
|
|
cmp r6, 0
|
|
bge _0804136E
|
|
movs r2, 0
|
|
movs r0, 0x58
|
|
ldr r3, [sp, 0x14]
|
|
muls r0, r3
|
|
adds r1, 0x50
|
|
adds r0, r1
|
|
str r2, [r0]
|
|
ldr r0, [sp, 0x14]
|
|
bl sub_80174B8
|
|
ldr r0, [sp, 0x14]
|
|
movs r1, 0
|
|
bl ClearTemporarySpeciesSpriteData
|
|
add sp, 0x18
|
|
pop {r3-r5}
|
|
mov r8, r3
|
|
mov r9, r4
|
|
mov r10, r5
|
|
pop {r4-r7}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080413A4: .4byte gPlayerParty
|
|
_080413A8: .4byte gBattleMons
|
|
_080413AC: .4byte 0xfffffc1f
|
|
_080413B0: .4byte 0xfff07fff
|
|
_080413B4: .4byte 0xfffffe0f
|
|
_080413B8: .4byte gBaseStats
|
|
_080413BC: .4byte gBattleStruct
|
|
thumb_func_end CopyPlayerPartyMonToBattleData
|
|
|
|
.align 2, 0 @ Don't pad with nop.
|