.include "asm/macros.inc" .include "global.inc" .include "constants/species.h" .extern gGameLanguage .extern gGameVersion .section .rodata .global sItemOdds sItemOdds: ; 0x020F7ECC .short 0x002D, 0x005F .short 0x0014, 0x0050 .global sFriendshipModTable sFriendshipModTable: ; 0x020F7ED4 .byte 5, 3, 2 .byte 5, 3, 2 .byte 1, 1, 0 .byte 3, 2, 1 .byte 1, 1, 0 .byte 1, 1, 1 .byte -1, -1, -1 .byte -5, -5, -10 .byte -5, -5, -10 .byte 3, 2, 1 .global sLegendaryMonsList sLegendaryMonsList: ; 0x020F7EF2 .short SPECIES_MEWTWO .short SPECIES_MEW .short SPECIES_HO_OH .short SPECIES_LUGIA .short SPECIES_CELEBI .short SPECIES_KYOGRE .short SPECIES_GROUDON .short SPECIES_RAYQUAZA .short SPECIES_JIRACHI .short SPECIES_DEOXYS .short SPECIES_DIALGA .short SPECIES_PALKIA .short SPECIES_GIRATINA .short SPECIES_PHIONE .short SPECIES_MANAPHY .short SPECIES_DARKRAI .short SPECIES_SHAYMIN .short SPECIES_ARCEUS .global UNK_020F7F16 UNK_020F7F16: ; 0x020F7F16 .byte 0, 0, 0, 0, 0 .byte 1, 0, 0, 0, -1 .byte 1, 0, -1, 0, 0 .byte 1, -1, 0, 0, 0 .byte 1, 0, 0, -1, 0 .byte -1, 0, 0, 0, 1 .byte 0, 0, 0, 0, 0 .byte 0, 0, -1, 0, 1 .byte 0, -1, 0, 0, 1 .byte 0, 0, 0, -1, 1 .byte -1, 0, 1, 0, 0 .byte 0, 0, 1, 0, -1 .byte 0, 0, 0, 0, 0 .byte 0, -1, 1, 0, 0 .byte 0, 0, 1, -1, 0 .byte -1, 1, 0, 0, 0 .byte 0, 1, 0, 0, -1 .byte 0, 1, -1, 0, 0 .byte 0, 0, 0, 0, 0 .byte 0, 1, 0, -1, 0 .byte -1, 0, 0, 1, 0 .byte 0, 0, 0, 1, -1 .byte 0, 0, -1, 1, 0 .byte 0, -1, 0, 1, 0 .byte 0, 0, 0, 0, 0 .global sNatureStatMods sNatureStatMods: ; 0x020F7F93 .byte 0, 0, 0, 0, 0 .byte 1, -1, 0, 0, 0 .byte 1, 0, -1, 0, 0 .byte 1, 0, 0, -1, 0 .byte 1, 0, 0, 0, -1 .byte -1, 1, 0, 0, 0 .byte 0, 0, 0, 0, 0 .byte 0, 1, -1, 0, 0 .byte 0, 1, 0, -1, 0 .byte 0, 1, 0, 0, -1 .byte -1, 0, 1, 0, 0 .byte 0, -1, 1, 0, 0 .byte 0, 0, 0, 0, 0 .byte 0, 0, 1, -1, 0 .byte 0, 0, 1, 0, -1 .byte -1, 0, 0, 1, 0 .byte 0, -1, 0, 1, 0 .byte 0, 0, -1, 1, 0 .byte 0, 0, 0, 0, 0 .byte 0, 0, 0, 1, -1 .byte -1, 0, 0, 0, 1 .byte 0, -1, 0, 0, 1 .byte 0, 0, -1, 0, 1 .byte 0, 0, 0, -1, 1 .byte 0, 0, 0, 0, 0 .section .data .global __local_str_poketool_personal_pms_narc __local_str_poketool_personal_pms_narc: ; 0x02105FC8 .asciz "poketool/personal/pms.narc" .section .bss .global UNK_021C5AC0 UNK_021C5AC0: ; 0x021C5AC0 .space 0x194 .text thumb_func_start ZeroMonData ZeroMonData: ; 0x02066978 push {r4, lr} add r4, r0, #0x0 mov r0, #0x0 add r1, r4, #0x0 mov r2, #0xec bl MIi_CpuClearFast add r0, r4, #0x0 ldrh r2, [r4, #0x6] add r0, #0x8 mov r1, #0x80 bl MonEncryptSegment add r0, r4, #0x0 ldr r2, [r4, #0x0] add r0, #0x88 mov r1, #0x64 bl MonEncryptSegment pop {r4, pc} thumb_func_start WipeBoxMonDataAndEncrypt WipeBoxMonDataAndEncrypt: ; 0x020669A0 push {r4, lr} add r4, r0, #0x0 mov r0, #0x0 add r1, r4, #0x0 mov r2, #0x88 bl MIi_CpuClearFast add r0, r4, #0x0 ldrh r2, [r4, #0x6] add r0, #0x8 mov r1, #0x80 bl MonEncryptSegment pop {r4, pc} thumb_func_start SizeOfStructPokemon SizeOfStructPokemon: ; 0x020669BC mov r0, #0xec bx lr thumb_func_start AllocMonZeroed AllocMonZeroed: ; 0x020669C0 push {r4, lr} mov r1, #0xec bl AllocFromHeap add r4, r0, #0x0 bl ZeroMonData add r0, r4, #0x0 pop {r4, pc} .balign 4 thumb_func_start TryDecryptMon TryDecryptMon: ; 0x020669D4 push {r3-r5, lr} add r5, r0, #0x0 ldrh r0, [r5, #0x4] mov r4, #0x0 lsl r1, r0, #0x1f lsr r1, r1, #0x1f bne _02066A1A lsl r0, r0, #0x1e mov r4, #0x1 lsr r0, r0, #0x1f beq _020669EE bl ErrorHandling _020669EE: ldrh r1, [r5, #0x4] mov r0, #0x1 bic r1, r0 mov r0, #0x1 orr r0, r1 strh r0, [r5, #0x4] ldrh r1, [r5, #0x4] mov r0, #0x2 orr r0, r1 strh r0, [r5, #0x4] add r0, r5, #0x0 ldr r2, [r5, #0x0] add r0, #0x88 mov r1, #0x64 bl MonDecryptSegment add r0, r5, #0x0 ldrh r2, [r5, #0x6] add r0, #0x8 mov r1, #0x80 bl MonDecryptSegment _02066A1A: add r0, r4, #0x0 pop {r3-r5, pc} .balign 4 thumb_func_start TryEncryptMon TryEncryptMon: ; 0x02066A20 push {r3-r5, lr} add r5, r0, #0x0 ldrh r2, [r5, #0x4] mov r4, #0x0 lsl r0, r2, #0x1f lsr r0, r0, #0x1f cmp r0, #0x1 bne _02066A68 cmp r1, #0x1 bne _02066A68 mov r0, #0x1 bic r2, r0 strh r2, [r5, #0x4] ldrh r1, [r5, #0x4] mov r0, #0x2 mov r4, #0x1 bic r1, r0 strh r1, [r5, #0x4] add r0, r5, #0x0 ldr r2, [r5, #0x0] add r0, #0x88 mov r1, #0x64 bl MonEncryptSegment add r0, r5, #0x0 add r0, #0x8 mov r1, #0x80 bl CalcMonChecksum strh r0, [r5, #0x6] add r0, r5, #0x0 ldrh r2, [r5, #0x6] add r0, #0x8 mov r1, #0x80 bl MonEncryptSegment _02066A68: add r0, r4, #0x0 pop {r3-r5, pc} thumb_func_start TryDecryptBoxMon TryDecryptBoxMon: ; 0x02066A6C push {r4, lr} add r2, r0, #0x0 ldrh r1, [r2, #0x4] mov r4, #0x0 lsl r0, r1, #0x1e lsr r0, r0, #0x1f bne _02066A8E mov r0, #0x2 orr r0, r1 strh r0, [r2, #0x4] add r0, r2, #0x0 ldrh r2, [r2, #0x6] add r0, #0x8 mov r1, #0x80 mov r4, #0x1 bl MonDecryptSegment _02066A8E: add r0, r4, #0x0 pop {r4, pc} .balign 4 thumb_func_start TryEncryptBoxMon TryEncryptBoxMon: ; 0x02066A94 push {r3-r5, lr} add r5, r0, #0x0 ldrh r2, [r5, #0x4] mov r4, #0x0 lsl r0, r2, #0x1e lsr r0, r0, #0x1f cmp r0, #0x1 bne _02066AC8 cmp r1, #0x1 bne _02066AC8 mov r0, #0x2 bic r2, r0 add r0, r5, #0x0 strh r2, [r5, #0x4] add r0, #0x8 mov r1, #0x80 mov r4, #0x1 bl CalcMonChecksum strh r0, [r5, #0x6] add r0, r5, #0x0 ldrh r2, [r5, #0x6] add r0, #0x8 mov r1, #0x80 bl MonEncryptSegment _02066AC8: add r0, r4, #0x0 pop {r3-r5, pc} thumb_func_start CreateMon CreateMon: ; 0x02066ACC push {r0-r3} push {r3-r6, lr} sub sp, #0x2c add r5, r0, #0x0 add r4, r1, #0x0 add r6, r3, #0x0 bl ZeroMonData ldr r0, [sp, #0x50] add r1, r4, #0x0 str r0, [sp, #0x0] ldr r0, [sp, #0x54] add r3, r6, #0x0 str r0, [sp, #0x4] ldr r0, [sp, #0x58] str r0, [sp, #0x8] ldr r0, [sp, #0x5c] str r0, [sp, #0xc] ldr r2, [sp, #0x48] add r0, r5, #0x0 bl CreateBoxMon add r0, r5, #0x0 add r0, #0x88 mov r1, #0x64 mov r2, #0x0 bl MonEncryptSegment add r0, r5, #0x0 ldr r2, [r5, #0x0] add r0, #0x88 mov r1, #0x64 bl MonEncryptSegment add r0, r5, #0x0 mov r1, #0xa0 add r2, sp, #0x48 bl SetMonDataEncrypted mov r0, #0x0 bl FUN_020256BC add r4, r0, #0x0 add r0, r5, #0x0 mov r1, #0xa9 add r2, r4, #0x0 bl SetMonDataEncrypted add r0, r4, #0x0 bl FreeToHeap mov r0, #0x0 str r0, [sp, #0x10] add r0, r5, #0x0 mov r1, #0xa1 add r2, sp, #0x10 bl SetMonDataEncrypted mov r0, #0x0 add r1, sp, #0x14 mov r2, #0x18 bl MIi_CpuClearFast add r0, r5, #0x0 mov r1, #0xaa add r2, sp, #0x14 bl SetMonDataEncrypted add r0, r5, #0x0 bl UpdateMonLevelAndRecalcStats add sp, #0x2c pop {r3-r6} pop {r3} add sp, #0x10 bx r3 thumb_func_start CreateBoxMon CreateBoxMon: ; 0x02066B64 push {r0-r3} push {r4-r7, lr} sub sp, #0xc add r5, r0, #0x0 bl WipeBoxMonDataAndEncrypt add r0, r5, #0x0 bl TryDecryptBoxMon str r0, [sp, #0x0] ldr r0, [sp, #0x30] cmp r0, #0x0 bne _02066B8E bl rand_LC add r4, r0, #0x0 bl rand_LC lsl r0, r0, #0x10 orr r0, r4 str r0, [sp, #0x34] _02066B8E: add r0, r5, #0x0 mov r1, #0x0 add r2, sp, #0x34 bl SetBoxMonDataEncrypted ldr r0, [sp, #0x38] cmp r0, #0x2 bne _02066BD6 ldr r7, _02066D84 ; =0xFFFF0000 add r6, r7, #0x0 _02066BA2: bl rand_LC add r4, r0, #0x0 bl rand_LC ldr r1, [sp, #0x34] lsl r0, r0, #0x10 add r3, r4, #0x0 orr r3, r0 lsl r0, r1, #0x10 lsr r2, r0, #0x10 add r0, r1, #0x0 and r0, r7 lsr r1, r0, #0x10 add r0, r3, #0x0 str r3, [sp, #0x3c] and r0, r6 lsl r3, r3, #0x10 lsr r0, r0, #0x10 lsr r3, r3, #0x10 eor r0, r3 eor r0, r1 eor r0, r2 cmp r0, #0x8 blo _02066BA2 b _02066BDE _02066BD6: cmp r0, #0x1 beq _02066BDE mov r0, #0x0 str r0, [sp, #0x3c] _02066BDE: add r0, r5, #0x0 mov r1, #0x7 add r2, sp, #0x3c bl SetBoxMonDataEncrypted ldr r2, _02066D88 ; =gGameLanguage add r0, r5, #0x0 mov r1, #0xc bl SetBoxMonDataEncrypted add r0, r5, #0x0 mov r1, #0x5 add r2, sp, #0x24 bl SetBoxMonDataEncrypted add r0, r5, #0x0 mov r1, #0xb2 mov r2, #0x0 bl SetBoxMonDataEncrypted ldr r0, [sp, #0x24] ldr r1, [sp, #0x28] bl GetMonExpByLevel str r0, [sp, #0x8] add r0, r5, #0x0 mov r1, #0x8 add r2, sp, #0x8 bl SetBoxMonDataEncrypted ldr r0, [sp, #0x24] mov r1, #0x14 bl GetMonBaseStat str r0, [sp, #0x8] add r0, r5, #0x0 mov r1, #0x9 add r2, sp, #0x8 bl SetBoxMonDataEncrypted add r0, r5, #0x0 mov r1, #0x9b add r2, sp, #0x28 bl SetBoxMonDataEncrypted ldr r2, _02066D8C ; =gGameVersion add r0, r5, #0x0 mov r1, #0x79 bl SetBoxMonDataEncrypted mov r0, #0x4 str r0, [sp, #0x8] add r0, r5, #0x0 mov r1, #0x9a add r2, sp, #0x8 bl SetBoxMonDataEncrypted ldr r0, [sp, #0x2c] cmp r0, #0x20 bge _02066C94 add r0, r5, #0x0 mov r1, #0x46 add r2, sp, #0x2c bl SetBoxMonDataEncrypted add r0, r5, #0x0 mov r1, #0x47 add r2, sp, #0x2c bl SetBoxMonDataEncrypted add r0, r5, #0x0 mov r1, #0x48 add r2, sp, #0x2c bl SetBoxMonDataEncrypted add r0, r5, #0x0 mov r1, #0x49 add r2, sp, #0x2c bl SetBoxMonDataEncrypted add r0, r5, #0x0 mov r1, #0x4a add r2, sp, #0x2c bl SetBoxMonDataEncrypted add r0, r5, #0x0 mov r1, #0x4b add r2, sp, #0x2c bl SetBoxMonDataEncrypted b _02066D18 _02066C94: bl rand_LC mov r1, #0x1f str r0, [sp, #0x8] and r0, r1 str r0, [sp, #0x4] add r0, r5, #0x0 mov r1, #0x46 add r2, sp, #0x4 bl SetBoxMonDataEncrypted mov r0, #0x3e ldr r1, [sp, #0x8] lsl r0, r0, #0x4 and r0, r1 lsr r0, r0, #0x5 str r0, [sp, #0x4] add r0, r5, #0x0 mov r1, #0x47 add r2, sp, #0x4 bl SetBoxMonDataEncrypted mov r0, #0x1f ldr r1, [sp, #0x8] lsl r0, r0, #0xa and r0, r1 lsr r0, r0, #0xa str r0, [sp, #0x4] add r0, r5, #0x0 mov r1, #0x48 add r2, sp, #0x4 bl SetBoxMonDataEncrypted bl rand_LC mov r1, #0x1f str r0, [sp, #0x8] and r0, r1 str r0, [sp, #0x4] add r0, r5, #0x0 mov r1, #0x49 add r2, sp, #0x4 bl SetBoxMonDataEncrypted mov r0, #0x3e ldr r1, [sp, #0x8] lsl r0, r0, #0x4 and r0, r1 lsr r0, r0, #0x5 str r0, [sp, #0x4] add r0, r5, #0x0 mov r1, #0x4a add r2, sp, #0x4 bl SetBoxMonDataEncrypted mov r0, #0x1f ldr r1, [sp, #0x8] lsl r0, r0, #0xa and r0, r1 lsr r0, r0, #0xa str r0, [sp, #0x4] add r0, r5, #0x0 mov r1, #0x4b add r2, sp, #0x4 bl SetBoxMonDataEncrypted _02066D18: ldr r0, [sp, #0x24] mov r1, #0x18 bl GetMonBaseStat str r0, [sp, #0x8] ldr r0, [sp, #0x24] mov r1, #0x19 bl GetMonBaseStat str r0, [sp, #0x4] cmp r0, #0x0 beq _02066D50 ldr r1, [sp, #0x34] mov r0, #0x1 tst r0, r1 beq _02066D44 add r0, r5, #0x0 mov r1, #0xa add r2, sp, #0x4 bl SetBoxMonDataEncrypted b _02066D5A _02066D44: add r0, r5, #0x0 mov r1, #0xa add r2, sp, #0x8 bl SetBoxMonDataEncrypted b _02066D5A _02066D50: add r0, r5, #0x0 mov r1, #0xa add r2, sp, #0x8 bl SetBoxMonDataEncrypted _02066D5A: add r0, r5, #0x0 bl GetBoxMonGenderEncrypted str r0, [sp, #0x8] add r0, r5, #0x0 mov r1, #0x6f add r2, sp, #0x8 bl SetBoxMonDataEncrypted add r0, r5, #0x0 bl InitBoxMonMoveset ldr r1, [sp, #0x0] add r0, r5, #0x0 bl TryEncryptBoxMon add sp, #0xc pop {r4-r7} pop {r3} add sp, #0x10 bx r3 .balign 4 _02066D84: .word 0xFFFF0000 _02066D88: .word gGameLanguage _02066D8C: .word gGameVersion thumb_func_start CreateMonWithNature CreateMonWithNature: ; 0x02066D90 push {r3-r7, lr} sub sp, #0x18 str r2, [sp, #0x10] str r3, [sp, #0x14] ldr r4, [sp, #0x30] add r6, r0, #0x0 add r7, r1, #0x0 _02066D9E: bl rand_LC add r5, r0, #0x0 bl rand_LC lsl r0, r0, #0x10 orr r5, r0 add r0, r5, #0x0 bl GetNatureFromPersonality cmp r4, r0 bne _02066D9E mov r0, #0x1 str r0, [sp, #0x0] str r5, [sp, #0x4] mov r0, #0x0 str r0, [sp, #0x8] str r0, [sp, #0xc] ldr r2, [sp, #0x10] ldr r3, [sp, #0x14] add r0, r6, #0x0 add r1, r7, #0x0 bl CreateMon add sp, #0x18 pop {r3-r7, pc} .balign 4 thumb_func_start CreateMonWithNatureGenderLetter CreateMonWithNatureGenderLetter: ; 0x02066DD4 push {r4-r7, lr} sub sp, #0x24 str r1, [sp, #0x14] str r2, [sp, #0x18] str r3, [sp, #0x1c] str r0, [sp, #0x10] add r0, sp, #0x28 ldrb r0, [r0, #0x18] ldr r6, [sp, #0x38] ldr r7, [sp, #0x3c] cmp r0, #0x0 beq _02066E4C cmp r0, #0x1d bhs _02066E4C sub r0, r0, #0x1 str r0, [sp, #0x20] _02066DF4: bl rand_LC add r4, r0, #0x0 bl rand_LC lsl r0, r0, #0x10 orr r4, r0 mov r3, #0x3 lsl r3, r3, #0x10 and r3, r4 mov r0, #0x3 add r2, r4, #0x0 and r2, r0 lsl r0, r0, #0x8 and r0, r4 lsr r1, r0, #0x6 mov r0, #0x3 lsl r0, r0, #0x18 and r0, r4 lsr r0, r0, #0x12 lsr r3, r3, #0xc orr r0, r3 orr r0, r1 orr r0, r2 mov r1, #0x1c bl _u32_div_f lsl r0, r1, #0x10 lsr r5, r0, #0x10 add r0, r4, #0x0 bl GetNatureFromPersonality cmp r7, r0 bne _02066DF4 ldr r0, [sp, #0x14] add r1, r4, #0x0 bl GetGenderBySpeciesAndPersonality cmp r6, r0 bne _02066DF4 ldr r0, [sp, #0x20] cmp r5, r0 bne _02066DF4 b _02066E58 _02066E4C: ldr r0, [sp, #0x14] add r1, r6, #0x0 add r2, r7, #0x0 bl FUN_02066E74 add r4, r0, #0x0 _02066E58: mov r0, #0x1 str r0, [sp, #0x0] str r4, [sp, #0x4] mov r0, #0x0 str r0, [sp, #0x8] str r0, [sp, #0xc] ldr r0, [sp, #0x10] ldr r1, [sp, #0x14] ldr r2, [sp, #0x18] ldr r3, [sp, #0x1c] bl CreateMon add sp, #0x24 pop {r4-r7, pc} thumb_func_start FUN_02066E74 FUN_02066E74: ; 0x02066E74 push {r3-r5, lr} add r5, r1, #0x0 mov r1, #0x12 add r4, r2, #0x0 bl GetMonBaseStat lsl r0, r0, #0x18 lsr r0, r0, #0x18 beq _02066EA0 cmp r0, #0xfe beq _02066EA0 cmp r0, #0xff beq _02066EA0 cmp r5, #0x0 bne _02066EA0 mov r1, #0x19 bl _s32_div_f add r1, r0, #0x1 mov r0, #0x19 mul r0, r1 add r4, r0, r4 _02066EA0: add r0, r4, #0x0 pop {r3-r5, pc} thumb_func_start FUN_02066EA4 FUN_02066EA4: ; 0x02066EA4 push {r0-r3} push {r4, lr} sub sp, #0x10 mov r3, #0x1 str r3, [sp, #0x0] ldr r3, [sp, #0x28] add r4, r0, #0x0 str r3, [sp, #0x4] mov r3, #0x0 str r3, [sp, #0x8] str r3, [sp, #0xc] bl CreateMon add r0, r4, #0x0 mov r1, #0xae add r2, sp, #0x24 bl SetMonDataEncrypted add r0, r4, #0x0 bl UpdateMonLevelAndRecalcStats add sp, #0x10 pop {r4} pop {r3} add sp, #0x10 bx r3 thumb_func_start UpdateMonLevelAndRecalcStats UpdateMonLevelAndRecalcStats: ; 0x02066ED8 push {r3-r5, lr} add r5, r0, #0x0 bl TryDecryptMon add r4, r0, #0x0 add r0, r5, #0x0 bl CalcMonLevelEncrypted str r0, [sp, #0x0] add r0, r5, #0x0 mov r1, #0xa0 add r2, sp, #0x0 bl SetMonDataEncrypted add r0, r5, #0x0 bl CalcMonStatsMaybeEncrypted add r0, r5, #0x0 add r1, r4, #0x0 bl TryEncryptMon pop {r3-r5, pc} thumb_func_start CalcMonStatsMaybeEncrypted CalcMonStatsMaybeEncrypted: ; 0x02066F04 push {r3-r7, lr} sub sp, #0x58 add r5, r0, #0x0 bl TryDecryptMon str r0, [sp, #0x0] add r0, r5, #0x0 mov r1, #0xa0 mov r2, #0x0 bl GetMonDataEncrypted add r4, r0, #0x0 add r0, r5, #0x0 mov r1, #0xa3 mov r2, #0x0 bl GetMonDataEncrypted str r0, [sp, #0x2c] add r0, r5, #0x0 mov r1, #0xa2 mov r2, #0x0 bl GetMonDataEncrypted str r0, [sp, #0x54] add r0, r5, #0x0 mov r1, #0x46 mov r2, #0x0 bl GetMonDataEncrypted str r0, [sp, #0x30] add r0, r5, #0x0 mov r1, #0xd mov r2, #0x0 bl GetMonDataEncrypted str r0, [sp, #0x34] add r0, r5, #0x0 mov r1, #0x47 mov r2, #0x0 bl GetMonDataEncrypted str r0, [sp, #0x28] add r0, r5, #0x0 mov r1, #0xe mov r2, #0x0 bl GetMonDataEncrypted str r0, [sp, #0x14] add r0, r5, #0x0 mov r1, #0x48 mov r2, #0x0 bl GetMonDataEncrypted str r0, [sp, #0x24] add r0, r5, #0x0 mov r1, #0xf mov r2, #0x0 bl GetMonDataEncrypted str r0, [sp, #0x10] add r0, r5, #0x0 mov r1, #0x49 mov r2, #0x0 bl GetMonDataEncrypted str r0, [sp, #0x20] add r0, r5, #0x0 mov r1, #0x10 mov r2, #0x0 bl GetMonDataEncrypted str r0, [sp, #0xc] add r0, r5, #0x0 mov r1, #0x4a mov r2, #0x0 bl GetMonDataEncrypted str r0, [sp, #0x1c] add r0, r5, #0x0 mov r1, #0x11 mov r2, #0x0 bl GetMonDataEncrypted str r0, [sp, #0x8] add r0, r5, #0x0 mov r1, #0x4b mov r2, #0x0 bl GetMonDataEncrypted str r0, [sp, #0x18] add r0, r5, #0x0 mov r1, #0x12 mov r2, #0x0 bl GetMonDataEncrypted str r0, [sp, #0x4] add r0, r5, #0x0 mov r1, #0x70 mov r2, #0x0 bl GetMonDataEncrypted str r0, [sp, #0x38] add r0, r5, #0x0 mov r1, #0x5 mov r2, #0x0 bl GetMonDataEncrypted add r7, r0, #0x0 mov r0, #0x0 mov r1, #0x2c bl AllocFromHeap add r6, r0, #0x0 ldr r1, [sp, #0x38] add r0, r7, #0x0 add r2, r6, #0x0 bl LoadMonBaseStats_HandleAlternateForme mov r0, #0x49 lsl r0, r0, #0x2 cmp r7, r0 bne _02066FFC mov r0, #0x1 b _0206701E _02066FFC: ldr r0, [sp, #0x34] asr r0, r0, #0x1 lsr r1, r0, #0x1e ldr r0, [sp, #0x34] add r1, r0, r1 asr r0, r1, #0x2 ldrb r1, [r6, #0x0] lsl r2, r1, #0x1 ldr r1, [sp, #0x30] add r1, r1, r2 add r0, r0, r1 mul r0, r4 mov r1, #0x64 bl _s32_div_f add r0, r4, r0 add r0, #0xa _0206701E: str r0, [sp, #0x50] add r0, r5, #0x0 mov r1, #0xa3 add r2, sp, #0x50 bl SetMonDataEncrypted ldr r0, [sp, #0x14] asr r0, r0, #0x1 lsr r1, r0, #0x1e ldr r0, [sp, #0x14] add r1, r0, r1 asr r0, r1, #0x2 ldrb r1, [r6, #0x1] lsl r2, r1, #0x1 ldr r1, [sp, #0x28] add r1, r1, r2 add r0, r0, r1 mul r0, r4 mov r1, #0x64 bl _s32_div_f add r0, r0, #0x5 str r0, [sp, #0x4c] add r0, r5, #0x0 bl GetMonNatureEncrypted ldr r1, [sp, #0x4c] mov r2, #0x1 lsl r1, r1, #0x10 lsr r1, r1, #0x10 bl ApplyNatureModToStat str r0, [sp, #0x4c] add r0, r5, #0x0 mov r1, #0xa4 add r2, sp, #0x4c bl SetMonDataEncrypted ldr r0, [sp, #0x10] asr r0, r0, #0x1 lsr r1, r0, #0x1e ldr r0, [sp, #0x10] add r1, r0, r1 asr r0, r1, #0x2 ldrb r1, [r6, #0x2] lsl r2, r1, #0x1 ldr r1, [sp, #0x24] add r1, r1, r2 add r0, r0, r1 mul r0, r4 mov r1, #0x64 bl _s32_div_f add r0, r0, #0x5 str r0, [sp, #0x48] add r0, r5, #0x0 bl GetMonNatureEncrypted ldr r1, [sp, #0x48] mov r2, #0x2 lsl r1, r1, #0x10 lsr r1, r1, #0x10 bl ApplyNatureModToStat str r0, [sp, #0x48] add r0, r5, #0x0 mov r1, #0xa5 add r2, sp, #0x48 bl SetMonDataEncrypted ldr r0, [sp, #0xc] asr r0, r0, #0x1 lsr r1, r0, #0x1e ldr r0, [sp, #0xc] add r1, r0, r1 asr r0, r1, #0x2 ldrb r1, [r6, #0x3] lsl r2, r1, #0x1 ldr r1, [sp, #0x20] add r1, r1, r2 add r0, r0, r1 mul r0, r4 mov r1, #0x64 bl _s32_div_f add r0, r0, #0x5 str r0, [sp, #0x44] add r0, r5, #0x0 bl GetMonNatureEncrypted ldr r1, [sp, #0x44] mov r2, #0x3 lsl r1, r1, #0x10 lsr r1, r1, #0x10 bl ApplyNatureModToStat str r0, [sp, #0x44] add r0, r5, #0x0 mov r1, #0xa6 add r2, sp, #0x44 bl SetMonDataEncrypted ldr r0, [sp, #0x8] asr r0, r0, #0x1 lsr r1, r0, #0x1e ldr r0, [sp, #0x8] add r1, r0, r1 asr r0, r1, #0x2 ldrb r1, [r6, #0x4] lsl r2, r1, #0x1 ldr r1, [sp, #0x1c] add r1, r1, r2 add r0, r0, r1 mul r0, r4 mov r1, #0x64 bl _s32_div_f add r0, r0, #0x5 str r0, [sp, #0x40] add r0, r5, #0x0 bl GetMonNatureEncrypted ldr r1, [sp, #0x40] mov r2, #0x4 lsl r1, r1, #0x10 lsr r1, r1, #0x10 bl ApplyNatureModToStat str r0, [sp, #0x40] add r0, r5, #0x0 mov r1, #0xa7 add r2, sp, #0x40 bl SetMonDataEncrypted ldr r0, [sp, #0x4] asr r0, r0, #0x1 lsr r1, r0, #0x1e ldr r0, [sp, #0x4] add r1, r0, r1 asr r0, r1, #0x2 ldrb r1, [r6, #0x5] lsl r2, r1, #0x1 ldr r1, [sp, #0x18] add r1, r1, r2 add r0, r0, r1 mul r0, r4 mov r1, #0x64 bl _s32_div_f add r0, r0, #0x5 str r0, [sp, #0x3c] add r0, r5, #0x0 bl GetMonNatureEncrypted ldr r1, [sp, #0x3c] mov r2, #0x5 lsl r1, r1, #0x10 lsr r1, r1, #0x10 bl ApplyNatureModToStat str r0, [sp, #0x3c] add r0, r5, #0x0 mov r1, #0xa8 add r2, sp, #0x3c bl SetMonDataEncrypted add r0, r6, #0x0 bl FreeToHeap ldr r1, [sp, #0x54] cmp r1, #0x0 bne _0206717C ldr r0, [sp, #0x2c] cmp r0, #0x0 bne _020671A0 _0206717C: mov r0, #0x49 lsl r0, r0, #0x2 cmp r7, r0 bne _0206718A mov r0, #0x1 str r0, [sp, #0x54] b _020671A0 _0206718A: cmp r1, #0x0 bne _02067194 ldr r0, [sp, #0x50] str r0, [sp, #0x54] b _020671A0 _02067194: ldr r1, [sp, #0x50] ldr r0, [sp, #0x2c] ldr r2, [sp, #0x54] sub r0, r1, r0 add r0, r2, r0 str r0, [sp, #0x54] _020671A0: ldr r0, [sp, #0x54] cmp r0, #0x0 beq _020671B0 add r0, r5, #0x0 mov r1, #0xa2 add r2, sp, #0x54 bl SetMonDataEncrypted _020671B0: ldr r1, [sp, #0x0] add r0, r5, #0x0 bl TryEncryptMon add sp, #0x58 pop {r3-r7, pc} thumb_func_start GetMonDataEncrypted GetMonDataEncrypted: ; 0x020671BC push {r4-r6, lr} add r5, r0, #0x0 ldrh r0, [r5, #0x4] add r4, r1, #0x0 add r6, r2, #0x0 lsl r0, r0, #0x1f lsr r0, r0, #0x1f bne _02067204 add r0, r5, #0x0 ldr r2, [r5, #0x0] add r0, #0x88 mov r1, #0x64 bl MonDecryptSegment add r0, r5, #0x0 ldrh r2, [r5, #0x6] add r0, #0x8 mov r1, #0x80 bl MonDecryptSegment add r0, r5, #0x0 add r0, #0x8 mov r1, #0x80 bl CalcMonChecksum ldrh r1, [r5, #0x6] cmp r0, r1 beq _02067204 cmp r0, r1 beq _020671FC bl ErrorHandling _020671FC: ldrh r1, [r5, #0x4] mov r0, #0x4 orr r0, r1 strh r0, [r5, #0x4] _02067204: add r0, r5, #0x0 add r1, r4, #0x0 add r2, r6, #0x0 bl GetMonData add r4, r0, #0x0 ldrh r0, [r5, #0x4] lsl r0, r0, #0x1f lsr r0, r0, #0x1f bne _02067230 add r0, r5, #0x0 ldr r2, [r5, #0x0] add r0, #0x88 mov r1, #0x64 bl MonEncryptSegment add r0, r5, #0x0 ldrh r2, [r5, #0x6] add r0, #0x8 mov r1, #0x80 bl MonEncryptSegment _02067230: add r0, r4, #0x0 pop {r4-r6, pc} thumb_func_start GetMonData GetMonData: ; 0x02067234 push {r3, lr} add r3, r1, #0x0 sub r3, #0x9f cmp r3, #0xb bhi _020672B6 add r3, r3, r3 add r3, pc ldrh r3, [r3, #0x6] lsl r3, r3, #0x10 asr r3, r3, #0x10 add pc, r3 _0206724A: ; jump table (using 16-bit offset) .short _02067262 - _0206724A - 2; case 0 .short _02067268 - _0206724A - 2; case 1 .short _0206726E - _0206724A - 2; case 2 .short _02067274 - _0206724A - 2; case 3 .short _0206727A - _0206724A - 2; case 4 .short _02067280 - _0206724A - 2; case 5 .short _02067286 - _0206724A - 2; case 6 .short _0206728C - _0206724A - 2; case 7 .short _02067292 - _0206724A - 2; case 8 .short _02067298 - _0206724A - 2; case 9 .short _0206729E - _0206724A - 2; case 10 .short _020672AA - _0206724A - 2; case 11 _02067262: add r0, #0x88 ldr r0, [r0, #0x0] pop {r3, pc} _02067268: add r0, #0x8c ldrb r0, [r0, #0x0] pop {r3, pc} _0206726E: add r0, #0x8d ldrb r0, [r0, #0x0] pop {r3, pc} _02067274: add r0, #0x8e ldrh r0, [r0, #0x0] pop {r3, pc} _0206727A: add r0, #0x90 ldrh r0, [r0, #0x0] pop {r3, pc} _02067280: add r0, #0x92 ldrh r0, [r0, #0x0] pop {r3, pc} _02067286: add r0, #0x94 ldrh r0, [r0, #0x0] pop {r3, pc} _0206728C: add r0, #0x96 ldrh r0, [r0, #0x0] pop {r3, pc} _02067292: add r0, #0x98 ldrh r0, [r0, #0x0] pop {r3, pc} _02067298: add r0, #0x9a ldrh r0, [r0, #0x0] pop {r3, pc} _0206729E: add r0, #0x9c add r1, r2, #0x0 bl FUN_020256D0 mov r0, #0x1 pop {r3, pc} _020672AA: add r0, #0xd4 add r1, r2, #0x0 bl FUN_02029C74 mov r0, #0x1 pop {r3, pc} _020672B6: bl GetBoxMonData pop {r3, pc} thumb_func_start GetBoxMonDataEncrypted GetBoxMonDataEncrypted: ; 0x020672BC push {r4-r6, lr} add r5, r0, #0x0 ldrh r0, [r5, #0x4] add r4, r1, #0x0 add r6, r2, #0x0 lsl r0, r0, #0x1e lsr r0, r0, #0x1f bne _020672F8 ldrh r2, [r5, #0x6] add r0, r5, #0x0 add r0, #0x8 mov r1, #0x80 bl MonDecryptSegment add r0, r5, #0x0 add r0, #0x8 mov r1, #0x80 bl CalcMonChecksum ldrh r1, [r5, #0x6] cmp r0, r1 beq _020672F8 cmp r0, r1 beq _020672F0 bl ErrorHandling _020672F0: ldrh r1, [r5, #0x4] mov r0, #0x4 orr r0, r1 strh r0, [r5, #0x4] _020672F8: add r0, r5, #0x0 add r1, r4, #0x0 add r2, r6, #0x0 bl GetBoxMonData add r4, r0, #0x0 ldrh r0, [r5, #0x4] lsl r0, r0, #0x1e lsr r0, r0, #0x1f bne _02067318 ldrh r2, [r5, #0x6] add r0, r5, #0x0 add r0, #0x8 mov r1, #0x80 bl MonEncryptSegment _02067318: add r0, r4, #0x0 pop {r4-r6, pc} thumb_func_start GetBoxMonData GetBoxMonData: ; 0x0206731C push {r4-r7, lr} sub sp, #0xc str r1, [sp, #0x4] add r1, r0, #0x0 mov r4, #0x0 str r2, [sp, #0x8] ldr r1, [r1, #0x0] str r0, [sp, #0x0] add r2, r4, #0x0 bl GetSubstruct add r5, r0, #0x0 ldr r0, [sp, #0x0] mov r2, #0x1 add r1, r0, #0x0 ldr r1, [r1, #0x0] bl GetSubstruct add r6, r0, #0x0 ldr r0, [sp, #0x0] mov r2, #0x2 add r1, r0, #0x0 ldr r1, [r1, #0x0] bl GetSubstruct add r7, r0, #0x0 ldr r0, [sp, #0x0] mov r2, #0x3 add r1, r0, #0x0 ldr r1, [r1, #0x0] bl GetSubstruct add r1, r0, #0x0 ldr r0, [sp, #0x4] cmp r0, #0xb2 bls _02067366 b _020674D8 _02067366: add r0, r0, r0 add r0, pc ldrh r0, [r0, #0x6] lsl r0, r0, #0x10 asr r0, r0, #0x10 add pc, r0 _02067372: ; jump table (using 16-bit offset) .short _020674DC - _02067372 - 2; case 0 .short _020674E2 - _02067372 - 2; case 1 .short _020674EC - _02067372 - 2; case 2 .short _020674F6 - _02067372 - 2; case 3 .short _02067500 - _02067372 - 2; case 4 .short _0206754C - _02067372 - 2; case 5 .short _0206755E - _02067372 - 2; case 6 .short _02067562 - _02067372 - 2; case 7 .short _02067566 - _02067372 - 2; case 8 .short _0206756A - _02067372 - 2; case 9 .short _0206756E - _02067372 - 2; case 10 .short _02067572 - _02067372 - 2; case 11 .short _02067576 - _02067372 - 2; case 12 .short _0206757A - _02067372 - 2; case 13 .short _0206757E - _02067372 - 2; case 14 .short _02067582 - _02067372 - 2; case 15 .short _02067586 - _02067372 - 2; case 16 .short _0206758A - _02067372 - 2; case 17 .short _0206758E - _02067372 - 2; case 18 .short _02067592 - _02067372 - 2; case 19 .short _02067596 - _02067372 - 2; case 20 .short _0206759A - _02067372 - 2; case 21 .short _0206759E - _02067372 - 2; case 22 .short _020675A2 - _02067372 - 2; case 23 .short _020675A6 - _02067372 - 2; case 24 .short _020675AA - _02067372 - 2; case 25 .short _020675AA - _02067372 - 2; case 26 .short _020675AA - _02067372 - 2; case 27 .short _020675AA - _02067372 - 2; case 28 .short _020675AA - _02067372 - 2; case 29 .short _020675AA - _02067372 - 2; case 30 .short _020675AA - _02067372 - 2; case 31 .short _020675AA - _02067372 - 2; case 32 .short _020675AA - _02067372 - 2; case 33 .short _020675AA - _02067372 - 2; case 34 .short _020675AA - _02067372 - 2; case 35 .short _020675AA - _02067372 - 2; case 36 .short _020675AA - _02067372 - 2; case 37 .short _020675AA - _02067372 - 2; case 38 .short _020675AA - _02067372 - 2; case 39 .short _020675AA - _02067372 - 2; case 40 .short _020675AA - _02067372 - 2; case 41 .short _020675AA - _02067372 - 2; case 42 .short _020675AA - _02067372 - 2; case 43 .short _020675AA - _02067372 - 2; case 44 .short _020675AA - _02067372 - 2; case 45 .short _020675AA - _02067372 - 2; case 46 .short _020675AA - _02067372 - 2; case 47 .short _020675AA - _02067372 - 2; case 48 .short _020675AA - _02067372 - 2; case 49 .short _020675AA - _02067372 - 2; case 50 .short _020675AA - _02067372 - 2; case 51 .short _020675AA - _02067372 - 2; case 52 .short _020675AA - _02067372 - 2; case 53 .short _020675D0 - _02067372 - 2; case 54 .short _020675D0 - _02067372 - 2; case 55 .short _020675D0 - _02067372 - 2; case 56 .short _020675D0 - _02067372 - 2; case 57 .short _020675DC - _02067372 - 2; case 58 .short _020675DC - _02067372 - 2; case 59 .short _020675DC - _02067372 - 2; case 60 .short _020675DC - _02067372 - 2; case 61 .short _020675E8 - _02067372 - 2; case 62 .short _020675E8 - _02067372 - 2; case 63 .short _020675E8 - _02067372 - 2; case 64 .short _020675E8 - _02067372 - 2; case 65 .short _020675F4 - _02067372 - 2; case 66 .short _020675F4 - _02067372 - 2; case 67 .short _020675F4 - _02067372 - 2; case 68 .short _020675F4 - _02067372 - 2; case 69 .short _0206760C - _02067372 - 2; case 70 .short _02067614 - _02067372 - 2; case 71 .short _0206761C - _02067372 - 2; case 72 .short _02067624 - _02067372 - 2; case 73 .short _0206762C - _02067372 - 2; case 74 .short _02067634 - _02067372 - 2; case 75 .short _0206763C - _02067372 - 2; case 76 .short _0206764E - _02067372 - 2; case 77 .short _02067654 - _02067372 - 2; case 78 .short _02067654 - _02067372 - 2; case 79 .short _02067654 - _02067372 - 2; case 80 .short _02067654 - _02067372 - 2; case 81 .short _02067654 - _02067372 - 2; case 82 .short _02067654 - _02067372 - 2; case 83 .short _02067654 - _02067372 - 2; case 84 .short _02067654 - _02067372 - 2; case 85 .short _02067654 - _02067372 - 2; case 86 .short _02067654 - _02067372 - 2; case 87 .short _02067654 - _02067372 - 2; case 88 .short _02067654 - _02067372 - 2; case 89 .short _02067654 - _02067372 - 2; case 90 .short _02067654 - _02067372 - 2; case 91 .short _02067654 - _02067372 - 2; case 92 .short _02067654 - _02067372 - 2; case 93 .short _02067654 - _02067372 - 2; case 94 .short _02067654 - _02067372 - 2; case 95 .short _02067654 - _02067372 - 2; case 96 .short _02067654 - _02067372 - 2; case 97 .short _02067654 - _02067372 - 2; case 98 .short _02067654 - _02067372 - 2; case 99 .short _02067654 - _02067372 - 2; case 100 .short _02067654 - _02067372 - 2; case 101 .short _02067654 - _02067372 - 2; case 102 .short _02067654 - _02067372 - 2; case 103 .short _02067654 - _02067372 - 2; case 104 .short _02067654 - _02067372 - 2; case 105 .short _02067654 - _02067372 - 2; case 106 .short _02067654 - _02067372 - 2; case 107 .short _02067654 - _02067372 - 2; case 108 .short _02067654 - _02067372 - 2; case 109 .short _0206767C - _02067372 - 2; case 110 .short _02067684 - _02067372 - 2; case 111 .short _0206768C - _02067372 - 2; case 112 .short _02067694 - _02067372 - 2; case 113 .short _02067698 - _02067372 - 2; case 114 .short _020674D8 - _02067372 - 2; case 115 .short _0206769C - _02067372 - 2; case 116 .short _020674D8 - _02067372 - 2; case 117 .short _020676D0 - _02067372 - 2; case 118 .short _020676CC - _02067372 - 2; case 119 .short _020676FE - _02067372 - 2; case 120 .short _02067702 - _02067372 - 2; case 121 .short _02067706 - _02067372 - 2; case 122 .short _02067706 - _02067372 - 2; case 123 .short _02067706 - _02067372 - 2; case 124 .short _02067706 - _02067372 - 2; case 125 .short _02067706 - _02067372 - 2; case 126 .short _02067706 - _02067372 - 2; case 127 .short _02067706 - _02067372 - 2; case 128 .short _02067706 - _02067372 - 2; case 129 .short _02067706 - _02067372 - 2; case 130 .short _02067706 - _02067372 - 2; case 131 .short _02067706 - _02067372 - 2; case 132 .short _02067706 - _02067372 - 2; case 133 .short _02067706 - _02067372 - 2; case 134 .short _02067706 - _02067372 - 2; case 135 .short _02067706 - _02067372 - 2; case 136 .short _02067706 - _02067372 - 2; case 137 .short _02067706 - _02067372 - 2; case 138 .short _02067706 - _02067372 - 2; case 139 .short _02067706 - _02067372 - 2; case 140 .short _02067706 - _02067372 - 2; case 141 .short _02067706 - _02067372 - 2; case 142 .short _0206772C - _02067372 - 2; case 143 .short _02067746 - _02067372 - 2; case 144 .short _0206774E - _02067372 - 2; case 145 .short _02067752 - _02067372 - 2; case 146 .short _02067756 - _02067372 - 2; case 147 .short _0206775A - _02067372 - 2; case 148 .short _0206775E - _02067372 - 2; case 149 .short _02067762 - _02067372 - 2; case 150 .short _02067766 - _02067372 - 2; case 151 .short _0206776A - _02067372 - 2; case 152 .short _0206776E - _02067372 - 2; case 153 .short _02067772 - _02067372 - 2; case 154 .short _02067776 - _02067372 - 2; case 155 .short _0206777E - _02067372 - 2; case 156 .short _02067786 - _02067372 - 2; case 157 .short _0206778A - _02067372 - 2; case 158 .short _020674D8 - _02067372 - 2; case 159 .short _02067540 - _02067372 - 2; case 160 .short _020674D8 - _02067372 - 2; case 161 .short _020674D8 - _02067372 - 2; case 162 .short _020674D8 - _02067372 - 2; case 163 .short _020674D8 - _02067372 - 2; case 164 .short _020674D8 - _02067372 - 2; case 165 .short _020674D8 - _02067372 - 2; case 166 .short _020674D8 - _02067372 - 2; case 167 .short _020674D8 - _02067372 - 2; case 168 .short _020674D8 - _02067372 - 2; case 169 .short _020674D8 - _02067372 - 2; case 170 .short _02067506 - _02067372 - 2; case 171 .short _02067510 - _02067372 - 2; case 172 .short _02067522 - _02067372 - 2; case 173 .short _0206778E - _02067372 - 2; case 174 .short _020677C0 - _02067372 - 2; case 175 .short _020677D8 - _02067372 - 2; case 176 .short _020677D8 - _02067372 - 2; case 177 .short _02067810 - _02067372 - 2; case 178 _020674D8: mov r4, #0x0 b _0206781A _020674DC: ldr r0, [sp, #0x0] ldr r4, [r0, #0x0] b _0206781A _020674E2: ldr r0, [sp, #0x0] ldrh r0, [r0, #0x4] lsl r0, r0, #0x1f lsr r4, r0, #0x1f b _0206781A _020674EC: ldr r0, [sp, #0x0] ldrh r0, [r0, #0x4] lsl r0, r0, #0x1e lsr r4, r0, #0x1f b _0206781A _020674F6: ldr r0, [sp, #0x0] ldrh r0, [r0, #0x4] lsl r0, r0, #0x1d lsr r4, r0, #0x1f b _0206781A _02067500: ldr r0, [sp, #0x0] ldrh r4, [r0, #0x6] b _0206781A _02067506: ldrh r0, [r5, #0x0] cmp r0, #0x0 beq _0206753A mov r4, #0x1 b _0206781A _02067510: ldr r0, [sp, #0x0] ldrh r0, [r0, #0x4] lsl r0, r0, #0x1d lsr r4, r0, #0x1f bne _0206753A ldr r0, [r6, #0x10] lsl r0, r0, #0x1 lsr r4, r0, #0x1f b _0206781A _02067522: ldrh r4, [r5, #0x0] cmp r4, #0x0 beq _0206753A ldr r0, [r6, #0x10] lsl r0, r0, #0x1 lsr r0, r0, #0x1f bne _0206753C ldr r0, [sp, #0x0] ldrh r0, [r0, #0x4] lsl r0, r0, #0x1d lsr r0, r0, #0x1f bne _0206753C _0206753A: b _0206781A _0206753C: ldr r4, _02067820 ; =SPECIES_EGG b _0206781A _02067540: ldrh r0, [r5, #0x0] ldr r1, [r5, #0x8] bl CalcLevelBySpeciesAndExp add r4, r0, #0x0 b _0206781A _0206754C: ldr r0, [sp, #0x0] ldrh r0, [r0, #0x4] lsl r0, r0, #0x1d lsr r0, r0, #0x1f beq _0206755A ldr r4, _02067820 ; =SPECIES_EGG b _0206781A _0206755A: ldrh r4, [r5, #0x0] b _0206781A _0206755E: ldrh r4, [r5, #0x2] b _0206781A _02067562: ldr r4, [r5, #0x4] b _0206781A _02067566: ldr r4, [r5, #0x8] b _0206781A _0206756A: ldrb r4, [r5, #0xc] b _0206781A _0206756E: ldrb r4, [r5, #0xd] b _0206781A _02067572: ldrb r4, [r5, #0xe] b _0206781A _02067576: ldrb r4, [r5, #0xf] b _0206781A _0206757A: ldrb r4, [r5, #0x10] b _0206781A _0206757E: ldrb r4, [r5, #0x11] b _0206781A _02067582: ldrb r4, [r5, #0x12] b _0206781A _02067586: ldrb r4, [r5, #0x13] b _0206781A _0206758A: ldrb r4, [r5, #0x14] b _0206781A _0206758E: ldrb r4, [r5, #0x15] b _0206781A _02067592: ldrb r4, [r5, #0x16] b _0206781A _02067596: ldrb r4, [r5, #0x17] b _0206781A _0206759A: ldrb r4, [r5, #0x18] b _0206781A _0206759E: ldrb r4, [r5, #0x19] b _0206781A _020675A2: ldrb r4, [r5, #0x1a] b _0206781A _020675A6: ldrb r4, [r5, #0x1b] b _0206781A _020675AA: ldr r2, [sp, #0x4] mov r0, #0x1 sub r2, #0x19 add r1, r4, #0x0 str r2, [sp, #0x4] bl _ll_shl ldr r2, [r5, #0x1c] add r3, r4, #0x0 and r3, r1 and r2, r0 mov r1, #0x0 mov r0, #0x0 eor r1, r3 eor r0, r2 orr r0, r1 beq _02067676 mov r4, #0x1 b _0206781A _020675D0: ldr r0, [sp, #0x4] sub r0, #0x36 str r0, [sp, #0x4] lsl r0, r0, #0x1 ldrh r4, [r6, r0] b _0206781A _020675DC: ldr r0, [sp, #0x4] sub r0, #0x3a str r0, [sp, #0x4] add r0, r6, r0 ldrb r4, [r0, #0x8] b _0206781A _020675E8: ldr r0, [sp, #0x4] sub r0, #0x3e str r0, [sp, #0x4] add r0, r6, r0 ldrb r4, [r0, #0xc] b _0206781A _020675F4: ldr r0, [sp, #0x4] sub r0, #0x42 str r0, [sp, #0x4] ldr r1, [sp, #0x4] lsl r0, r0, #0x1 add r1, r6, r1 ldrh r0, [r6, r0] ldrb r1, [r1, #0xc] bl FUN_0206AB30 add r4, r0, #0x0 b _0206781A _0206760C: ldr r0, [r6, #0x10] lsl r0, r0, #0x1b lsr r4, r0, #0x1b b _0206781A _02067614: ldr r0, [r6, #0x10] lsl r0, r0, #0x16 lsr r4, r0, #0x1b b _0206781A _0206761C: ldr r0, [r6, #0x10] lsl r0, r0, #0x11 lsr r4, r0, #0x1b b _0206781A _02067624: ldr r0, [r6, #0x10] lsl r0, r0, #0xc lsr r4, r0, #0x1b b _0206781A _0206762C: ldr r0, [r6, #0x10] lsl r0, r0, #0x7 lsr r4, r0, #0x1b b _0206781A _02067634: ldr r0, [r6, #0x10] lsl r0, r0, #0x2 lsr r4, r0, #0x1b b _0206781A _0206763C: ldr r0, [sp, #0x0] ldrh r0, [r0, #0x4] lsl r0, r0, #0x1d lsr r4, r0, #0x1f bne _02067676 ldr r0, [r6, #0x10] lsl r0, r0, #0x1 lsr r4, r0, #0x1f b _0206781A _0206764E: ldr r0, [r6, #0x10] lsr r4, r0, #0x1f b _0206781A _02067654: ldr r2, [sp, #0x4] mov r0, #0x1 sub r2, #0x4e add r1, r4, #0x0 str r2, [sp, #0x4] bl _ll_shl ldr r2, [r6, #0x14] add r3, r4, #0x0 and r3, r1 and r2, r0 mov r1, #0x0 mov r0, #0x0 eor r1, r3 eor r0, r2 orr r0, r1 bne _02067678 _02067676: b _0206781A _02067678: mov r4, #0x1 b _0206781A _0206767C: ldrb r0, [r6, #0x18] lsl r0, r0, #0x1f lsr r4, r0, #0x1f b _0206781A _02067684: ldrb r0, [r6, #0x18] lsl r0, r0, #0x1d lsr r4, r0, #0x1e b _0206781A _0206768C: ldrb r0, [r6, #0x18] lsl r0, r0, #0x18 lsr r4, r0, #0x1b b _0206781A _02067694: ldrb r4, [r6, #0x19] b _0206781A _02067698: ldrh r4, [r6, #0x1a] b _0206781A _0206769C: ldr r0, [sp, #0x0] ldrh r0, [r0, #0x4] lsl r0, r0, #0x1d lsr r0, r0, #0x1f beq _020676B2 ldr r0, _02067824 ; =SPECIES_MANAPHY_EGG ldr r2, [sp, #0x8] add r1, r4, #0x0 bl GetSpeciesName b _0206781A _020676B2: ldr r1, [sp, #0x8] _020676B4: ldrh r0, [r7, #0x0] add r4, r4, #0x1 add r7, r7, #0x2 strh r0, [r1, #0x0] add r1, r1, #0x2 cmp r4, #0xa blo _020676B4 ldr r2, _02067828 ; =0x0000FFFF ldr r0, [sp, #0x8] lsl r1, r4, #0x1 strh r2, [r0, r1] b _0206781A _020676CC: ldr r0, [r6, #0x10] lsr r4, r0, #0x1f _020676D0: ldr r0, [sp, #0x0] ldrh r0, [r0, #0x4] lsl r0, r0, #0x1d lsr r0, r0, #0x1f beq _020676F4 ldr r0, _02067824 ; =SPECIES_MANAPHY_EGG mov r1, #0x0 bl FUN_0200AA50 add r5, r0, #0x0 ldr r0, [sp, #0x8] add r1, r5, #0x0 bl FUN_02021A74 add r0, r5, #0x0 bl FUN_02021A20 b _0206781A _020676F4: ldr r0, [sp, #0x8] add r1, r7, #0x0 bl FUN_02021E28 b _0206781A _020676FE: ldrb r4, [r7, #0x16] b _0206781A _02067702: ldrb r4, [r7, #0x17] b _0206781A _02067706: ldr r2, [sp, #0x4] mov r0, #0x1 sub r2, #0x7a add r1, r4, #0x0 str r2, [sp, #0x4] bl _ll_shl ldr r3, [r7, #0x18] ldr r2, [r7, #0x1c] and r3, r0 and r2, r1 mov r1, #0x0 mov r0, #0x0 eor r1, r2 eor r0, r3 orr r0, r1 beq _0206781A mov r4, #0x1 b _0206781A _0206772C: ldr r2, [sp, #0x8] _0206772E: ldrh r0, [r1, #0x0] add r4, r4, #0x1 add r1, r1, #0x2 strh r0, [r2, #0x0] add r2, r2, #0x2 cmp r4, #0x7 blo _0206772E ldr r2, _02067828 ; =0x0000FFFF ldr r0, [sp, #0x8] lsl r1, r4, #0x1 strh r2, [r0, r1] b _0206781A _02067746: ldr r0, [sp, #0x8] bl FUN_02021E28 b _0206781A _0206774E: ldrb r4, [r1, #0x10] b _0206781A _02067752: ldrb r4, [r1, #0x11] b _0206781A _02067756: ldrb r4, [r1, #0x12] b _0206781A _0206775A: ldrb r4, [r1, #0x13] b _0206781A _0206775E: ldrb r4, [r1, #0x14] b _0206781A _02067762: ldrb r4, [r1, #0x15] b _0206781A _02067766: ldrh r4, [r1, #0x16] b _0206781A _0206776A: ldrh r4, [r1, #0x18] b _0206781A _0206776E: ldrb r4, [r1, #0x1a] b _0206781A _02067772: ldrb r4, [r1, #0x1b] b _0206781A _02067776: ldrb r0, [r1, #0x1c] lsl r0, r0, #0x19 lsr r4, r0, #0x19 b _0206781A _0206777E: ldrb r0, [r1, #0x1c] lsl r0, r0, #0x18 lsr r4, r0, #0x1f b _0206781A _02067786: ldrb r4, [r1, #0x1d] b _0206781A _0206778A: ldrh r4, [r1, #0x1e] b _0206781A _0206778E: ldr r4, [r6, #0x10] lsl r0, r4, #0x2 lsr r0, r0, #0x1b lsl r5, r0, #0x19 lsl r0, r4, #0x7 lsr r0, r0, #0x1b lsl r3, r0, #0x14 lsl r0, r4, #0xc lsr r0, r0, #0x1b lsl r2, r0, #0xf lsl r0, r4, #0x11 lsr r0, r0, #0x1b lsl r1, r0, #0xa lsl r0, r4, #0x1b lsl r4, r4, #0x16 lsr r4, r4, #0x1b lsr r0, r0, #0x1b lsl r4, r4, #0x5 orr r0, r4 orr r0, r1 orr r0, r2 orr r0, r3 add r4, r5, #0x0 orr r4, r0 b _0206781A _020677C0: ldrh r0, [r5, #0x0] cmp r0, #0x1d beq _020677CA cmp r0, #0x20 bne _020677D4 _020677CA: ldr r0, [r6, #0x10] lsr r0, r0, #0x1f bne _020677D4 mov r4, #0x0 b _0206781A _020677D4: mov r4, #0x1 b _0206781A _020677D8: ldrh r0, [r5, #0x0] ldr r1, _0206782C ; =SPECIES_ARCEUS cmp r0, r1 bne _020677FC ldrb r1, [r5, #0xd] cmp r1, #0x79 bne _020677FC ldrh r0, [r5, #0x2] mov r1, #0x1 add r2, r4, #0x0 bl FUN_0206E7B8 lsl r0, r0, #0x10 lsr r0, r0, #0x10 bl GetArceusTypeByPlate add r4, r0, #0x0 b _0206781A _020677FC: ldrb r1, [r6, #0x18] ldr r2, [sp, #0x4] lsl r1, r1, #0x18 sub r2, #0xaa lsr r1, r1, #0x1b str r2, [sp, #0x4] bl GetMonBaseStat_HandleFormeConversion add r4, r0, #0x0 b _0206781A _02067810: ldrh r0, [r5, #0x0] ldr r2, [sp, #0x8] add r1, r4, #0x0 bl GetSpeciesName _0206781A: add r0, r4, #0x0 add sp, #0xc pop {r4-r7, pc} .balign 4 _02067820: .word SPECIES_EGG _02067824: .word SPECIES_MANAPHY_EGG _02067828: .word 0x0000FFFF _0206782C: .word SPECIES_ARCEUS thumb_func_start SetMonDataEncrypted SetMonDataEncrypted: ; 0x02067830 push {r4-r6, lr} add r5, r0, #0x0 ldrh r0, [r5, #0x4] add r4, r1, #0x0 add r6, r2, #0x0 lsl r0, r0, #0x1f lsr r0, r0, #0x1f bne _02067886 add r0, r5, #0x0 ldr r2, [r5, #0x0] add r0, #0x88 mov r1, #0x64 bl MonDecryptSegment add r0, r5, #0x0 ldrh r2, [r5, #0x6] add r0, #0x8 mov r1, #0x80 bl MonDecryptSegment add r0, r5, #0x0 add r0, #0x8 mov r1, #0x80 bl CalcMonChecksum ldrh r1, [r5, #0x6] cmp r0, r1 beq _02067886 cmp r0, r1 beq _02067870 bl ErrorHandling _02067870: ldrh r1, [r5, #0x4] mov r0, #0x4 orr r0, r1 strh r0, [r5, #0x4] ldrh r2, [r5, #0x6] add r0, r5, #0x0 add r0, #0x8 mov r1, #0x80 bl MonEncryptSegment pop {r4-r6, pc} _02067886: add r0, r5, #0x0 add r1, r4, #0x0 add r2, r6, #0x0 bl SetMonData ldrh r0, [r5, #0x4] lsl r0, r0, #0x1f lsr r0, r0, #0x1f bne _020678BC add r0, r5, #0x0 ldr r2, [r5, #0x0] add r0, #0x88 mov r1, #0x64 bl MonEncryptSegment add r0, r5, #0x0 add r0, #0x8 mov r1, #0x80 bl CalcMonChecksum strh r0, [r5, #0x6] add r0, r5, #0x0 ldrh r2, [r5, #0x6] add r0, #0x8 mov r1, #0x80 bl MonEncryptSegment _020678BC: pop {r4-r6, pc} .balign 4 thumb_func_start SetMonData SetMonData: ; 0x020678C0 push {r3, lr} add r3, r0, #0x0 add r0, r1, #0x0 sub r0, #0x9f cmp r0, #0xb bhi _02067958 add r0, r0, r0 add r0, pc ldrh r0, [r0, #0x6] lsl r0, r0, #0x10 asr r0, r0, #0x10 add pc, r0 _020678D8: ; jump table (using 16-bit offset) .short _020678F0 - _020678D8 - 2; case 0 .short _020678F8 - _020678D8 - 2; case 1 .short _02067900 - _020678D8 - 2; case 2 .short _02067908 - _020678D8 - 2; case 3 .short _02067910 - _020678D8 - 2; case 4 .short _02067918 - _020678D8 - 2; case 5 .short _02067920 - _020678D8 - 2; case 6 .short _02067928 - _020678D8 - 2; case 7 .short _02067930 - _020678D8 - 2; case 8 .short _02067938 - _020678D8 - 2; case 9 .short _02067940 - _020678D8 - 2; case 10 .short _0206794C - _020678D8 - 2; case 11 _020678F0: ldr r0, [r2, #0x0] add r3, #0x88 str r0, [r3, #0x0] pop {r3, pc} _020678F8: ldrb r0, [r2, #0x0] add r3, #0x8c strb r0, [r3, #0x0] pop {r3, pc} _02067900: ldrb r0, [r2, #0x0] add r3, #0x8d strb r0, [r3, #0x0] pop {r3, pc} _02067908: ldrh r0, [r2, #0x0] add r3, #0x8e strh r0, [r3, #0x0] pop {r3, pc} _02067910: ldrh r0, [r2, #0x0] add r3, #0x90 strh r0, [r3, #0x0] pop {r3, pc} _02067918: ldrh r0, [r2, #0x0] add r3, #0x92 strh r0, [r3, #0x0] pop {r3, pc} _02067920: ldrh r0, [r2, #0x0] add r3, #0x94 strh r0, [r3, #0x0] pop {r3, pc} _02067928: ldrh r0, [r2, #0x0] add r3, #0x96 strh r0, [r3, #0x0] pop {r3, pc} _02067930: ldrh r0, [r2, #0x0] add r3, #0x98 strh r0, [r3, #0x0] pop {r3, pc} _02067938: ldrh r0, [r2, #0x0] add r3, #0x9a strh r0, [r3, #0x0] pop {r3, pc} _02067940: add r3, #0x9c add r0, r2, #0x0 add r1, r3, #0x0 bl FUN_020256D0 pop {r3, pc} _0206794C: add r3, #0xd4 add r0, r2, #0x0 add r1, r3, #0x0 bl FUN_02029C74 pop {r3, pc} _02067958: add r0, r3, #0x0 bl SetBoxMonData pop {r3, pc} thumb_func_start SetBoxMonDataEncrypted SetBoxMonDataEncrypted: ; 0x02067960 push {r4-r6, lr} add r5, r0, #0x0 ldrh r0, [r5, #0x4] add r4, r1, #0x0 add r6, r2, #0x0 lsl r0, r0, #0x1e lsr r0, r0, #0x1f bne _020679AA ldrh r2, [r5, #0x6] add r0, r5, #0x0 add r0, #0x8 mov r1, #0x80 bl MonDecryptSegment add r0, r5, #0x0 add r0, #0x8 mov r1, #0x80 bl CalcMonChecksum ldrh r1, [r5, #0x6] cmp r0, r1 beq _020679AA cmp r0, r1 beq _02067994 bl ErrorHandling _02067994: ldrh r1, [r5, #0x4] mov r0, #0x4 orr r0, r1 strh r0, [r5, #0x4] ldrh r2, [r5, #0x6] add r0, r5, #0x0 add r0, #0x8 mov r1, #0x80 bl MonEncryptSegment pop {r4-r6, pc} _020679AA: add r0, r5, #0x0 add r1, r4, #0x0 add r2, r6, #0x0 bl SetBoxMonData ldrh r0, [r5, #0x4] lsl r0, r0, #0x1e lsr r0, r0, #0x1f bne _020679D4 add r0, r5, #0x0 add r0, #0x8 mov r1, #0x80 bl CalcMonChecksum strh r0, [r5, #0x6] add r0, r5, #0x0 ldrh r2, [r5, #0x6] add r0, #0x8 mov r1, #0x80 bl MonEncryptSegment _020679D4: pop {r4-r6, pc} .balign 4 thumb_func_start SetBoxMonData SetBoxMonData: ; 0x020679D8 push {r4-r7, lr} sub sp, #0x4c str r1, [sp, #0x4] add r1, r0, #0x0 add r4, r2, #0x0 ldr r1, [r1, #0x0] str r0, [sp, #0x0] mov r2, #0x0 bl GetSubstruct add r7, r0, #0x0 ldr r0, [sp, #0x0] mov r2, #0x1 add r1, r0, #0x0 ldr r1, [r1, #0x0] bl GetSubstruct add r5, r0, #0x0 ldr r0, [sp, #0x0] mov r2, #0x2 add r1, r0, #0x0 ldr r1, [r1, #0x0] bl GetSubstruct add r6, r0, #0x0 ldr r0, [sp, #0x0] mov r2, #0x3 add r1, r0, #0x0 ldr r1, [r1, #0x0] bl GetSubstruct add r1, r0, #0x0 ldr r0, [sp, #0x4] cmp r0, #0xb2 bls _02067A20 b _02067FF6 _02067A20: add r0, r0, r0 add r0, pc ldrh r0, [r0, #0x6] lsl r0, r0, #0x10 asr r0, r0, #0x10 add pc, r0 _02067A2C: ; jump table (using 16-bit offset) .short _02067B92 - _02067A2C - 2; case 0 .short _02067B9C - _02067A2C - 2; case 1 .short _02067BBA - _02067A2C - 2; case 2 .short _02067BD6 - _02067A2C - 2; case 3 .short _02067BEE - _02067A2C - 2; case 4 .short _02067BF8 - _02067A2C - 2; case 5 .short _02067C00 - _02067A2C - 2; case 6 .short _02067C08 - _02067A2C - 2; case 7 .short _02067C10 - _02067A2C - 2; case 8 .short _02067C18 - _02067A2C - 2; case 9 .short _02067C20 - _02067A2C - 2; case 10 .short _02067C28 - _02067A2C - 2; case 11 .short _02067C30 - _02067A2C - 2; case 12 .short _02067C38 - _02067A2C - 2; case 13 .short _02067C40 - _02067A2C - 2; case 14 .short _02067C48 - _02067A2C - 2; case 15 .short _02067C50 - _02067A2C - 2; case 16 .short _02067C58 - _02067A2C - 2; case 17 .short _02067C60 - _02067A2C - 2; case 18 .short _02067C68 - _02067A2C - 2; case 19 .short _02067C70 - _02067A2C - 2; case 20 .short _02067C78 - _02067A2C - 2; case 21 .short _02067C80 - _02067A2C - 2; case 22 .short _02067C88 - _02067A2C - 2; case 23 .short _02067C90 - _02067A2C - 2; case 24 .short _02067C98 - _02067A2C - 2; case 25 .short _02067C98 - _02067A2C - 2; case 26 .short _02067C98 - _02067A2C - 2; case 27 .short _02067C98 - _02067A2C - 2; case 28 .short _02067C98 - _02067A2C - 2; case 29 .short _02067C98 - _02067A2C - 2; case 30 .short _02067C98 - _02067A2C - 2; case 31 .short _02067C98 - _02067A2C - 2; case 32 .short _02067C98 - _02067A2C - 2; case 33 .short _02067C98 - _02067A2C - 2; case 34 .short _02067C98 - _02067A2C - 2; case 35 .short _02067C98 - _02067A2C - 2; case 36 .short _02067C98 - _02067A2C - 2; case 37 .short _02067C98 - _02067A2C - 2; case 38 .short _02067C98 - _02067A2C - 2; case 39 .short _02067C98 - _02067A2C - 2; case 40 .short _02067C98 - _02067A2C - 2; case 41 .short _02067C98 - _02067A2C - 2; case 42 .short _02067C98 - _02067A2C - 2; case 43 .short _02067C98 - _02067A2C - 2; case 44 .short _02067C98 - _02067A2C - 2; case 45 .short _02067C98 - _02067A2C - 2; case 46 .short _02067C98 - _02067A2C - 2; case 47 .short _02067C98 - _02067A2C - 2; case 48 .short _02067C98 - _02067A2C - 2; case 49 .short _02067C98 - _02067A2C - 2; case 50 .short _02067C98 - _02067A2C - 2; case 51 .short _02067C98 - _02067A2C - 2; case 52 .short _02067C98 - _02067A2C - 2; case 53 .short _02067CC6 - _02067A2C - 2; case 54 .short _02067CC6 - _02067A2C - 2; case 55 .short _02067CC6 - _02067A2C - 2; case 56 .short _02067CC6 - _02067A2C - 2; case 57 .short _02067CD6 - _02067A2C - 2; case 58 .short _02067CD6 - _02067A2C - 2; case 59 .short _02067CD6 - _02067A2C - 2; case 60 .short _02067CD6 - _02067A2C - 2; case 61 .short _02067CE6 - _02067A2C - 2; case 62 .short _02067CE6 - _02067A2C - 2; case 63 .short _02067CE6 - _02067A2C - 2; case 64 .short _02067CE6 - _02067A2C - 2; case 65 .short _02067FF6 - _02067A2C - 2; case 66 .short _02067FF6 - _02067A2C - 2; case 67 .short _02067FF6 - _02067A2C - 2; case 68 .short _02067FF6 - _02067A2C - 2; case 69 .short _02067CF6 - _02067A2C - 2; case 70 .short _02067D0A - _02067A2C - 2; case 71 .short _02067D1E - _02067A2C - 2; case 72 .short _02067D32 - _02067A2C - 2; case 73 .short _02067D46 - _02067A2C - 2; case 74 .short _02067D5A - _02067A2C - 2; case 75 .short _02067D6E - _02067A2C - 2; case 76 .short _02067D82 - _02067A2C - 2; case 77 .short _02067D94 - _02067A2C - 2; case 78 .short _02067D94 - _02067A2C - 2; case 79 .short _02067D94 - _02067A2C - 2; case 80 .short _02067D94 - _02067A2C - 2; case 81 .short _02067D94 - _02067A2C - 2; case 82 .short _02067D94 - _02067A2C - 2; case 83 .short _02067D94 - _02067A2C - 2; case 84 .short _02067D94 - _02067A2C - 2; case 85 .short _02067D94 - _02067A2C - 2; case 86 .short _02067D94 - _02067A2C - 2; case 87 .short _02067D94 - _02067A2C - 2; case 88 .short _02067D94 - _02067A2C - 2; case 89 .short _02067D94 - _02067A2C - 2; case 90 .short _02067D94 - _02067A2C - 2; case 91 .short _02067D94 - _02067A2C - 2; case 92 .short _02067D94 - _02067A2C - 2; case 93 .short _02067D94 - _02067A2C - 2; case 94 .short _02067D94 - _02067A2C - 2; case 95 .short _02067D94 - _02067A2C - 2; case 96 .short _02067D94 - _02067A2C - 2; case 97 .short _02067D94 - _02067A2C - 2; case 98 .short _02067D94 - _02067A2C - 2; case 99 .short _02067D94 - _02067A2C - 2; case 100 .short _02067D94 - _02067A2C - 2; case 101 .short _02067D94 - _02067A2C - 2; case 102 .short _02067D94 - _02067A2C - 2; case 103 .short _02067D94 - _02067A2C - 2; case 104 .short _02067D94 - _02067A2C - 2; case 105 .short _02067D94 - _02067A2C - 2; case 106 .short _02067D94 - _02067A2C - 2; case 107 .short _02067D94 - _02067A2C - 2; case 108 .short _02067D94 - _02067A2C - 2; case 109 .short _02067DC2 - _02067A2C - 2; case 110 .short _02067DD6 - _02067A2C - 2; case 111 .short _02067DEA - _02067A2C - 2; case 112 .short _02067DFE - _02067A2C - 2; case 113 .short _02067E06 - _02067A2C - 2; case 114 .short _02067FF6 - _02067A2C - 2; case 115 .short _02067E2C - _02067A2C - 2; case 116 .short _02067E0E - _02067A2C - 2; case 117 .short _02067E6C - _02067A2C - 2; case 118 .short _02067E40 - _02067A2C - 2; case 119 .short _02067E7A - _02067A2C - 2; case 120 .short _02067E82 - _02067A2C - 2; case 121 .short _02067E8A - _02067A2C - 2; case 122 .short _02067E8A - _02067A2C - 2; case 123 .short _02067E8A - _02067A2C - 2; case 124 .short _02067E8A - _02067A2C - 2; case 125 .short _02067E8A - _02067A2C - 2; case 126 .short _02067E8A - _02067A2C - 2; case 127 .short _02067E8A - _02067A2C - 2; case 128 .short _02067E8A - _02067A2C - 2; case 129 .short _02067E8A - _02067A2C - 2; case 130 .short _02067E8A - _02067A2C - 2; case 131 .short _02067E8A - _02067A2C - 2; case 132 .short _02067E8A - _02067A2C - 2; case 133 .short _02067E8A - _02067A2C - 2; case 134 .short _02067E8A - _02067A2C - 2; case 135 .short _02067E8A - _02067A2C - 2; case 136 .short _02067E8A - _02067A2C - 2; case 137 .short _02067E8A - _02067A2C - 2; case 138 .short _02067E8A - _02067A2C - 2; case 139 .short _02067E8A - _02067A2C - 2; case 140 .short _02067E8A - _02067A2C - 2; case 141 .short _02067E8A - _02067A2C - 2; case 142 .short _02067ECE - _02067A2C - 2; case 143 .short _02067EE2 - _02067A2C - 2; case 144 .short _02067EEE - _02067A2C - 2; case 145 .short _02067EF6 - _02067A2C - 2; case 146 .short _02067EFE - _02067A2C - 2; case 147 .short _02067F06 - _02067A2C - 2; case 148 .short _02067F0E - _02067A2C - 2; case 149 .short _02067F16 - _02067A2C - 2; case 150 .short _02067F1E - _02067A2C - 2; case 151 .short _02067F26 - _02067A2C - 2; case 152 .short _02067F2E - _02067A2C - 2; case 153 .short _02067F36 - _02067A2C - 2; case 154 .short _02067F3E - _02067A2C - 2; case 155 .short _02067F52 - _02067A2C - 2; case 156 .short _02067F66 - _02067A2C - 2; case 157 .short _02067F6E - _02067A2C - 2; case 158 .short _02067FF6 - _02067A2C - 2; case 159 .short _02067FF6 - _02067A2C - 2; case 160 .short _02067FF6 - _02067A2C - 2; case 161 .short _02067FF6 - _02067A2C - 2; case 162 .short _02067FF6 - _02067A2C - 2; case 163 .short _02067FF6 - _02067A2C - 2; case 164 .short _02067FF6 - _02067A2C - 2; case 165 .short _02067FF6 - _02067A2C - 2; case 166 .short _02067FF6 - _02067A2C - 2; case 167 .short _02067FF6 - _02067A2C - 2; case 168 .short _02067FF6 - _02067A2C - 2; case 169 .short _02067FF6 - _02067A2C - 2; case 170 .short _02067FF6 - _02067A2C - 2; case 171 .short _02067FF6 - _02067A2C - 2; case 172 .short _02067FF6 - _02067A2C - 2; case 173 .short _02067F76 - _02067A2C - 2; case 174 .short _02067FF6 - _02067A2C - 2; case 175 .short _02067FF6 - _02067A2C - 2; case 176 .short _02067FF6 - _02067A2C - 2; case 177 .short _02067FDE - _02067A2C - 2; case 178 _02067B92: ldr r0, [sp, #0x0] ldr r1, [r4, #0x0] add sp, #0x4c str r1, [r0, #0x0] pop {r4-r7, pc} _02067B9C: bl ErrorHandling ldr r0, [sp, #0x0] ldrb r1, [r4, #0x0] ldrh r2, [r0, #0x4] mov r0, #0x1 bic r2, r0 mov r0, #0x1 and r0, r1 add r1, r2, #0x0 orr r1, r0 ldr r0, [sp, #0x0] add sp, #0x4c strh r1, [r0, #0x4] pop {r4-r7, pc} _02067BBA: bl ErrorHandling ldr r0, [sp, #0x0] ldrh r1, [r0, #0x4] mov r0, #0x2 bic r1, r0 ldrb r0, [r4, #0x0] lsl r0, r0, #0x1f lsr r0, r0, #0x1e orr r1, r0 ldr r0, [sp, #0x0] add sp, #0x4c strh r1, [r0, #0x4] pop {r4-r7, pc} _02067BD6: ldr r0, [sp, #0x0] ldrh r1, [r0, #0x4] mov r0, #0x4 bic r1, r0 ldrb r0, [r4, #0x0] lsl r0, r0, #0x1f lsr r0, r0, #0x1d orr r1, r0 ldr r0, [sp, #0x0] add sp, #0x4c strh r1, [r0, #0x4] pop {r4-r7, pc} _02067BEE: ldrh r1, [r4, #0x0] ldr r0, [sp, #0x0] add sp, #0x4c strh r1, [r0, #0x6] pop {r4-r7, pc} _02067BF8: ldrh r0, [r4, #0x0] add sp, #0x4c strh r0, [r7, #0x0] pop {r4-r7, pc} _02067C00: ldrh r0, [r4, #0x0] add sp, #0x4c strh r0, [r7, #0x2] pop {r4-r7, pc} _02067C08: ldr r0, [r4, #0x0] add sp, #0x4c str r0, [r7, #0x4] pop {r4-r7, pc} _02067C10: ldr r0, [r4, #0x0] add sp, #0x4c str r0, [r7, #0x8] pop {r4-r7, pc} _02067C18: ldrb r0, [r4, #0x0] add sp, #0x4c strb r0, [r7, #0xc] pop {r4-r7, pc} _02067C20: ldrb r0, [r4, #0x0] add sp, #0x4c strb r0, [r7, #0xd] pop {r4-r7, pc} _02067C28: ldrb r0, [r4, #0x0] add sp, #0x4c strb r0, [r7, #0xe] pop {r4-r7, pc} _02067C30: ldrb r0, [r4, #0x0] add sp, #0x4c strb r0, [r7, #0xf] pop {r4-r7, pc} _02067C38: ldrb r0, [r4, #0x0] add sp, #0x4c strb r0, [r7, #0x10] pop {r4-r7, pc} _02067C40: ldrb r0, [r4, #0x0] add sp, #0x4c strb r0, [r7, #0x11] pop {r4-r7, pc} _02067C48: ldrb r0, [r4, #0x0] add sp, #0x4c strb r0, [r7, #0x12] pop {r4-r7, pc} _02067C50: ldrb r0, [r4, #0x0] add sp, #0x4c strb r0, [r7, #0x13] pop {r4-r7, pc} _02067C58: ldrb r0, [r4, #0x0] add sp, #0x4c strb r0, [r7, #0x14] pop {r4-r7, pc} _02067C60: ldrb r0, [r4, #0x0] add sp, #0x4c strb r0, [r7, #0x15] pop {r4-r7, pc} _02067C68: ldrb r0, [r4, #0x0] add sp, #0x4c strb r0, [r7, #0x16] pop {r4-r7, pc} _02067C70: ldrb r0, [r4, #0x0] add sp, #0x4c strb r0, [r7, #0x17] pop {r4-r7, pc} _02067C78: ldrb r0, [r4, #0x0] add sp, #0x4c strb r0, [r7, #0x18] pop {r4-r7, pc} _02067C80: ldrb r0, [r4, #0x0] add sp, #0x4c strb r0, [r7, #0x19] pop {r4-r7, pc} _02067C88: ldrb r0, [r4, #0x0] add sp, #0x4c strb r0, [r7, #0x1a] pop {r4-r7, pc} _02067C90: ldrb r0, [r4, #0x0] add sp, #0x4c strb r0, [r7, #0x1b] pop {r4-r7, pc} _02067C98: ldrb r4, [r4, #0x0] ldr r2, [sp, #0x4] mov r1, #0x0 sub r2, #0x19 add r0, r4, #0x0 str r2, [sp, #0x4] bl _ll_shl cmp r4, #0x0 beq _02067CB6 ldr r1, [r7, #0x1c] add sp, #0x4c orr r0, r1 str r0, [r7, #0x1c] pop {r4-r7, pc} _02067CB6: mov r1, #0x0 sub r1, r1, #0x1 ldr r2, [r7, #0x1c] eor r0, r1 and r0, r2 add sp, #0x4c str r0, [r7, #0x1c] pop {r4-r7, pc} _02067CC6: ldr r0, [sp, #0x4] ldrh r1, [r4, #0x0] sub r0, #0x36 str r0, [sp, #0x4] lsl r0, r0, #0x1 add sp, #0x4c strh r1, [r5, r0] pop {r4-r7, pc} _02067CD6: ldr r0, [sp, #0x4] ldrb r1, [r4, #0x0] sub r0, #0x3a str r0, [sp, #0x4] add r0, r5, r0 strb r1, [r0, #0x8] add sp, #0x4c pop {r4-r7, pc} _02067CE6: ldr r0, [sp, #0x4] ldrb r1, [r4, #0x0] sub r0, #0x3e str r0, [sp, #0x4] add r0, r5, r0 strb r1, [r0, #0xc] add sp, #0x4c pop {r4-r7, pc} _02067CF6: ldr r2, [r5, #0x10] mov r0, #0x1f bic r2, r0 ldrb r1, [r4, #0x0] mov r0, #0x1f add sp, #0x4c and r0, r1 orr r0, r2 str r0, [r5, #0x10] pop {r4-r7, pc} _02067D0A: ldr r1, [r5, #0x10] ldr r0, _02067FFC ; =0xFFFFFC1F add sp, #0x4c and r1, r0 ldrb r0, [r4, #0x0] lsl r0, r0, #0x1b lsr r0, r0, #0x16 orr r0, r1 str r0, [r5, #0x10] pop {r4-r7, pc} _02067D1E: ldr r1, [r5, #0x10] ldr r0, _02068000 ; =0xFFFF83FF add sp, #0x4c and r1, r0 ldrb r0, [r4, #0x0] lsl r0, r0, #0x1b lsr r0, r0, #0x11 orr r0, r1 str r0, [r5, #0x10] pop {r4-r7, pc} _02067D32: ldr r1, [r5, #0x10] ldr r0, _02068004 ; =0xFFF07FFF add sp, #0x4c and r1, r0 ldrb r0, [r4, #0x0] lsl r0, r0, #0x1b lsr r0, r0, #0xc orr r0, r1 str r0, [r5, #0x10] pop {r4-r7, pc} _02067D46: ldr r1, [r5, #0x10] ldr r0, _02068008 ; =0xFE0FFFFF add sp, #0x4c and r1, r0 ldrb r0, [r4, #0x0] lsl r0, r0, #0x1b lsr r0, r0, #0x7 orr r0, r1 str r0, [r5, #0x10] pop {r4-r7, pc} _02067D5A: ldr r1, [r5, #0x10] ldr r0, _0206800C ; =0xC1FFFFFF add sp, #0x4c and r1, r0 ldrb r0, [r4, #0x0] lsl r0, r0, #0x1b lsr r0, r0, #0x2 orr r0, r1 str r0, [r5, #0x10] pop {r4-r7, pc} _02067D6E: ldr r1, [r5, #0x10] ldr r0, _02068010 ; =0xBFFFFFFF add sp, #0x4c and r1, r0 ldrb r0, [r4, #0x0] lsl r0, r0, #0x1f lsr r0, r0, #0x1 orr r0, r1 str r0, [r5, #0x10] pop {r4-r7, pc} _02067D82: ldr r1, [r5, #0x10] ldr r0, _02068014 ; =0x7FFFFFFF add sp, #0x4c and r1, r0 ldrb r0, [r4, #0x0] lsl r0, r0, #0x1f orr r0, r1 str r0, [r5, #0x10] pop {r4-r7, pc} _02067D94: ldrb r4, [r4, #0x0] ldr r2, [sp, #0x4] mov r1, #0x0 sub r2, #0x4e add r0, r4, #0x0 str r2, [sp, #0x4] bl _ll_shl cmp r4, #0x0 beq _02067DB2 ldr r1, [r5, #0x14] add sp, #0x4c orr r0, r1 str r0, [r5, #0x14] pop {r4-r7, pc} _02067DB2: mov r1, #0x0 sub r1, r1, #0x1 ldr r2, [r5, #0x14] eor r0, r1 and r0, r2 add sp, #0x4c str r0, [r5, #0x14] pop {r4-r7, pc} _02067DC2: ldrb r2, [r5, #0x18] ldrb r1, [r4, #0x0] mov r0, #0x1 bic r2, r0 mov r0, #0x1 and r0, r1 orr r0, r2 add sp, #0x4c strb r0, [r5, #0x18] pop {r4-r7, pc} _02067DD6: ldrb r1, [r5, #0x18] mov r0, #0x6 add sp, #0x4c bic r1, r0 ldrb r0, [r4, #0x0] lsl r0, r0, #0x1e lsr r0, r0, #0x1d orr r0, r1 strb r0, [r5, #0x18] pop {r4-r7, pc} _02067DEA: ldrb r1, [r5, #0x18] mov r0, #0xf8 add sp, #0x4c bic r1, r0 ldrb r0, [r4, #0x0] lsl r0, r0, #0x1b lsr r0, r0, #0x18 orr r0, r1 strb r0, [r5, #0x18] pop {r4-r7, pc} _02067DFE: ldrb r0, [r4, #0x0] add sp, #0x4c strb r0, [r5, #0x19] pop {r4-r7, pc} _02067E06: ldrh r0, [r4, #0x0] add sp, #0x4c strh r0, [r5, #0x1a] pop {r4-r7, pc} _02067E0E: ldrh r0, [r7, #0x0] mov r1, #0x0 add r2, sp, #0x34 bl GetSpeciesName add r0, sp, #0x34 add r1, r4, #0x0 bl StringNotEqual ldr r2, [r5, #0x10] ldr r1, _02068014 ; =0x7FFFFFFF lsl r0, r0, #0x1f and r1, r2 orr r0, r1 str r0, [r5, #0x10] _02067E2C: mov r1, #0x0 _02067E2E: ldrh r0, [r4, #0x0] add r1, r1, #0x1 add r4, r4, #0x2 strh r0, [r6, #0x0] add r6, r6, #0x2 cmp r1, #0xb blo _02067E2E add sp, #0x4c pop {r4-r7, pc} _02067E40: ldrh r0, [r7, #0x0] add r2, sp, #0x1c mov r1, #0x0 add r2, #0x2 bl GetSpeciesName add r0, r4, #0x0 add r1, sp, #0x8 mov r2, #0xb bl FUN_02021EF0 add r0, sp, #0x1c add r0, #0x2 add r1, sp, #0x8 bl StringNotEqual ldr r2, [r5, #0x10] ldr r1, _02068014 ; =0x7FFFFFFF lsl r0, r0, #0x1f and r1, r2 orr r0, r1 str r0, [r5, #0x10] _02067E6C: add r0, r4, #0x0 add r1, r6, #0x0 mov r2, #0xb bl FUN_02021EF0 add sp, #0x4c pop {r4-r7, pc} _02067E7A: ldrb r0, [r4, #0x0] add sp, #0x4c strb r0, [r6, #0x16] pop {r4-r7, pc} _02067E82: ldrb r0, [r4, #0x0] add sp, #0x4c strb r0, [r6, #0x17] pop {r4-r7, pc} _02067E8A: ldrb r4, [r4, #0x0] ldr r2, [sp, #0x4] mov r1, #0x0 sub r2, #0x7a add r0, r4, #0x0 str r2, [sp, #0x4] bl _ll_shl cmp r4, #0x0 beq _02067EB2 add r4, r6, #0x0 add r4, #0x18 ldr r3, [r6, #0x18] ldr r2, [r4, #0x4] orr r0, r3 orr r1, r2 str r0, [r6, #0x18] add sp, #0x4c str r1, [r4, #0x4] pop {r4-r7, pc} _02067EB2: add r4, r6, #0x0 mov r5, #0x0 mvn r5, r5 add r4, #0x18 ldr r3, [r6, #0x18] eor r0, r5 ldr r2, [r4, #0x4] eor r1, r5 and r0, r3 and r1, r2 str r0, [r6, #0x18] add sp, #0x4c str r1, [r4, #0x4] pop {r4-r7, pc} _02067ECE: mov r2, #0x0 _02067ED0: ldrh r0, [r4, #0x0] add r2, r2, #0x1 add r4, r4, #0x2 strh r0, [r1, #0x0] add r1, r1, #0x2 cmp r2, #0x8 blo _02067ED0 add sp, #0x4c pop {r4-r7, pc} _02067EE2: add r0, r4, #0x0 mov r2, #0x8 bl FUN_02021EF0 add sp, #0x4c pop {r4-r7, pc} _02067EEE: ldrb r0, [r4, #0x0] add sp, #0x4c strb r0, [r1, #0x10] pop {r4-r7, pc} _02067EF6: ldrb r0, [r4, #0x0] add sp, #0x4c strb r0, [r1, #0x11] pop {r4-r7, pc} _02067EFE: ldrb r0, [r4, #0x0] add sp, #0x4c strb r0, [r1, #0x12] pop {r4-r7, pc} _02067F06: ldrb r0, [r4, #0x0] add sp, #0x4c strb r0, [r1, #0x13] pop {r4-r7, pc} _02067F0E: ldrb r0, [r4, #0x0] add sp, #0x4c strb r0, [r1, #0x14] pop {r4-r7, pc} _02067F16: ldrb r0, [r4, #0x0] add sp, #0x4c strb r0, [r1, #0x15] pop {r4-r7, pc} _02067F1E: ldrh r0, [r4, #0x0] add sp, #0x4c strh r0, [r1, #0x16] pop {r4-r7, pc} _02067F26: ldrh r0, [r4, #0x0] add sp, #0x4c strh r0, [r1, #0x18] pop {r4-r7, pc} _02067F2E: ldrb r0, [r4, #0x0] add sp, #0x4c strb r0, [r1, #0x1a] pop {r4-r7, pc} _02067F36: ldrb r0, [r4, #0x0] add sp, #0x4c strb r0, [r1, #0x1b] pop {r4-r7, pc} _02067F3E: ldrb r3, [r1, #0x1c] ldrb r2, [r4, #0x0] mov r0, #0x7f bic r3, r0 mov r0, #0x7f and r0, r2 orr r0, r3 strb r0, [r1, #0x1c] add sp, #0x4c pop {r4-r7, pc} _02067F52: ldrb r2, [r1, #0x1c] mov r0, #0x80 add sp, #0x4c bic r2, r0 ldrb r0, [r4, #0x0] lsl r0, r0, #0x1f lsr r0, r0, #0x18 orr r0, r2 strb r0, [r1, #0x1c] pop {r4-r7, pc} _02067F66: ldrb r0, [r4, #0x0] add sp, #0x4c strb r0, [r1, #0x1d] pop {r4-r7, pc} _02067F6E: ldrh r0, [r4, #0x0] add sp, #0x4c strh r0, [r1, #0x1e] pop {r4-r7, pc} _02067F76: ldr r2, [r5, #0x10] mov r0, #0x1f bic r2, r0 ldr r1, [r4, #0x0] mov r0, #0x1f and r1, r0 and r0, r1 add r1, r2, #0x0 orr r1, r0 ldr r0, _02067FFC ; =0xFFFFFC1F str r1, [r5, #0x10] and r1, r0 ldr r0, [r4, #0x0] add sp, #0x4c lsr r0, r0, #0x5 lsl r0, r0, #0x1b lsr r0, r0, #0x16 orr r1, r0 ldr r0, _02068000 ; =0xFFFF83FF str r1, [r5, #0x10] and r1, r0 ldr r0, [r4, #0x0] lsr r0, r0, #0xa lsl r0, r0, #0x1b lsr r0, r0, #0x11 orr r1, r0 ldr r0, _02068004 ; =0xFFF07FFF str r1, [r5, #0x10] and r1, r0 ldr r0, [r4, #0x0] lsr r0, r0, #0xf lsl r0, r0, #0x1b lsr r0, r0, #0xc orr r1, r0 ldr r0, _02068008 ; =0xFE0FFFFF str r1, [r5, #0x10] and r1, r0 ldr r0, [r4, #0x0] lsr r0, r0, #0x14 lsl r0, r0, #0x1b lsr r0, r0, #0x7 orr r1, r0 ldr r0, _0206800C ; =0xC1FFFFFF str r1, [r5, #0x10] and r1, r0 ldr r0, [r4, #0x0] lsr r0, r0, #0x19 lsl r0, r0, #0x1b lsr r0, r0, #0x2 orr r0, r1 str r0, [r5, #0x10] pop {r4-r7, pc} _02067FDE: ldrh r0, [r7, #0x0] mov r1, #0x0 bl FUN_0200AA50 add r4, r0, #0x0 add r1, r6, #0x0 mov r2, #0xb bl FUN_02021EF0 add r0, r4, #0x0 bl FUN_02021A20 _02067FF6: add sp, #0x4c pop {r4-r7, pc} nop _02067FFC: .word 0xFFFFFC1F _02068000: .word 0xFFFF83FF _02068004: .word 0xFFF07FFF _02068008: .word 0xFE0FFFFF _0206800C: .word 0xC1FFFFFF _02068010: .word 0xBFFFFFFF _02068014: .word 0x7FFFFFFF thumb_func_start AddMonPartyStatEncrypted AddMonPartyStatEncrypted: ; 0x02068018 push {r4-r6, lr} add r5, r0, #0x0 ldrh r0, [r5, #0x4] add r4, r1, #0x0 add r6, r2, #0x0 lsl r0, r0, #0x1f lsr r0, r0, #0x1f bne _02068066 add r0, r5, #0x0 ldr r2, [r5, #0x0] add r0, #0x88 mov r1, #0x64 bl MonDecryptSegment add r0, r5, #0x0 ldrh r2, [r5, #0x6] add r0, #0x8 mov r1, #0x80 bl MonDecryptSegment add r0, r5, #0x0 add r0, #0x8 mov r1, #0x80 bl CalcMonChecksum ldrh r1, [r5, #0x6] cmp r0, r1 beq _02068066 cmp r0, r1 beq _02068058 bl ErrorHandling _02068058: ldrh r2, [r5, #0x6] add r0, r5, #0x0 add r0, #0x8 mov r1, #0x80 bl MonEncryptSegment pop {r4-r6, pc} _02068066: add r0, r5, #0x0 add r1, r4, #0x0 add r2, r6, #0x0 bl AddMonPartyStat ldrh r0, [r5, #0x4] lsl r0, r0, #0x1f lsr r0, r0, #0x1f bne _0206809C add r0, r5, #0x0 ldr r2, [r5, #0x0] add r0, #0x88 mov r1, #0x64 bl MonEncryptSegment add r0, r5, #0x0 add r0, #0x8 mov r1, #0x80 bl CalcMonChecksum strh r0, [r5, #0x6] add r0, r5, #0x0 ldrh r2, [r5, #0x6] add r0, #0x8 mov r1, #0x80 bl MonEncryptSegment _0206809C: pop {r4-r6, pc} .balign 4 thumb_func_start AddMonPartyStat AddMonPartyStat: ; 0x020680A0 push {r3, lr} add r3, r1, #0x0 sub r3, #0x9f cmp r3, #0xa bhi _020680F8 add r3, r3, r3 add r3, pc ldrh r3, [r3, #0x6] lsl r3, r3, #0x10 asr r3, r3, #0x10 add pc, r3 _020680B6: ; jump table (using 16-bit offset) .short _020680F2 - _020680B6 - 2; case 0 .short _020680F2 - _020680B6 - 2; case 1 .short _020680F2 - _020680B6 - 2; case 2 .short _020680CC - _020680B6 - 2; case 3 .short _020680F2 - _020680B6 - 2; case 4 .short _020680F2 - _020680B6 - 2; case 5 .short _020680F2 - _020680B6 - 2; case 6 .short _020680F2 - _020680B6 - 2; case 7 .short _020680F2 - _020680B6 - 2; case 8 .short _020680F2 - _020680B6 - 2; case 9 .short _020680F2 - _020680B6 - 2; case 10 _020680CC: add r1, r0, #0x0 add r1, #0x90 ldrh r3, [r1, #0x0] add r1, r0, #0x0 add r1, #0x8e ldrh r1, [r1, #0x0] add r1, r1, r2 cmp r1, r3 ble _020680E4 add r0, #0x8e strh r3, [r0, #0x0] pop {r3, pc} _020680E4: add r1, r0, #0x0 add r1, #0x8e ldrh r1, [r1, #0x0] add r0, #0x8e add r1, r1, r2 strh r1, [r0, #0x0] pop {r3, pc} _020680F2: bl ErrorHandling pop {r3, pc} _020680F8: bl FUN_02068100 pop {r3, pc} .balign 4 thumb_func_start FUN_02068100 FUN_02068100: ; 0x02068100 push {r4-r7, lr} sub sp, #0xc add r7, r1, #0x0 add r1, r0, #0x0 add r6, r2, #0x0 ldr r1, [r1, #0x0] str r0, [sp, #0x0] mov r2, #0x0 bl GetSubstruct add r4, r0, #0x0 ldr r0, [sp, #0x0] mov r2, #0x1 add r1, r0, #0x0 ldr r1, [r1, #0x0] bl GetSubstruct add r5, r0, #0x0 ldr r0, [sp, #0x0] mov r2, #0x2 add r1, r0, #0x0 ldr r1, [r1, #0x0] bl GetSubstruct ldr r0, [sp, #0x0] mov r2, #0x3 add r1, r0, #0x0 ldr r1, [r1, #0x0] bl GetSubstruct cmp r7, #0xb2 bls _02068142 b _02068500 _02068142: add r0, r7, r7 add r0, pc ldrh r0, [r0, #0x6] lsl r0, r0, #0x10 asr r0, r0, #0x10 add pc, r0 _0206814E: ; jump table (using 16-bit offset) .short _02068500 - _0206814E - 2; case 0 .short _02068500 - _0206814E - 2; case 1 .short _02068500 - _0206814E - 2; case 2 .short _02068500 - _0206814E - 2; case 3 .short _02068500 - _0206814E - 2; case 4 .short _02068500 - _0206814E - 2; case 5 .short _02068500 - _0206814E - 2; case 6 .short _02068500 - _0206814E - 2; case 7 .short _020682B4 - _0206814E - 2; case 8 .short _020682D8 - _0206814E - 2; case 9 .short _02068500 - _0206814E - 2; case 10 .short _02068500 - _0206814E - 2; case 11 .short _02068500 - _0206814E - 2; case 12 .short _020682EE - _0206814E - 2; case 13 .short _020682F8 - _0206814E - 2; case 14 .short _02068302 - _0206814E - 2; case 15 .short _0206830C - _0206814E - 2; case 16 .short _02068316 - _0206814E - 2; case 17 .short _02068320 - _0206814E - 2; case 18 .short _0206832A - _0206814E - 2; case 19 .short _02068340 - _0206814E - 2; case 20 .short _02068356 - _0206814E - 2; case 21 .short _0206836C - _0206814E - 2; case 22 .short _02068382 - _0206814E - 2; case 23 .short _02068398 - _0206814E - 2; case 24 .short _02068500 - _0206814E - 2; case 25 .short _02068500 - _0206814E - 2; case 26 .short _02068500 - _0206814E - 2; case 27 .short _02068500 - _0206814E - 2; case 28 .short _02068500 - _0206814E - 2; case 29 .short _02068500 - _0206814E - 2; case 30 .short _02068500 - _0206814E - 2; case 31 .short _02068500 - _0206814E - 2; case 32 .short _02068500 - _0206814E - 2; case 33 .short _02068500 - _0206814E - 2; case 34 .short _02068500 - _0206814E - 2; case 35 .short _02068500 - _0206814E - 2; case 36 .short _02068500 - _0206814E - 2; case 37 .short _02068500 - _0206814E - 2; case 38 .short _02068500 - _0206814E - 2; case 39 .short _02068500 - _0206814E - 2; case 40 .short _02068500 - _0206814E - 2; case 41 .short _02068500 - _0206814E - 2; case 42 .short _02068500 - _0206814E - 2; case 43 .short _02068500 - _0206814E - 2; case 44 .short _02068500 - _0206814E - 2; case 45 .short _02068500 - _0206814E - 2; case 46 .short _02068500 - _0206814E - 2; case 47 .short _02068500 - _0206814E - 2; case 48 .short _02068500 - _0206814E - 2; case 49 .short _02068500 - _0206814E - 2; case 50 .short _02068500 - _0206814E - 2; case 51 .short _02068500 - _0206814E - 2; case 52 .short _02068500 - _0206814E - 2; case 53 .short _02068500 - _0206814E - 2; case 54 .short _02068500 - _0206814E - 2; case 55 .short _02068500 - _0206814E - 2; case 56 .short _02068500 - _0206814E - 2; case 57 .short _020683AE - _0206814E - 2; case 58 .short _020683AE - _0206814E - 2; case 59 .short _020683AE - _0206814E - 2; case 60 .short _020683AE - _0206814E - 2; case 61 .short _020683EA - _0206814E - 2; case 62 .short _020683EA - _0206814E - 2; case 63 .short _020683EA - _0206814E - 2; case 64 .short _020683EA - _0206814E - 2; case 65 .short _02068504 - _0206814E - 2; case 66 .short _02068504 - _0206814E - 2; case 67 .short _02068504 - _0206814E - 2; case 68 .short _02068504 - _0206814E - 2; case 69 .short _02068404 - _0206814E - 2; case 70 .short _0206842E - _0206814E - 2; case 71 .short _02068458 - _0206814E - 2; case 72 .short _02068482 - _0206814E - 2; case 73 .short _020684AC - _0206814E - 2; case 74 .short _020684D6 - _0206814E - 2; case 75 .short _02068500 - _0206814E - 2; case 76 .short _02068500 - _0206814E - 2; case 77 .short _02068500 - _0206814E - 2; case 78 .short _02068500 - _0206814E - 2; case 79 .short _02068500 - _0206814E - 2; case 80 .short _02068500 - _0206814E - 2; case 81 .short _02068500 - _0206814E - 2; case 82 .short _02068500 - _0206814E - 2; case 83 .short _02068500 - _0206814E - 2; case 84 .short _02068500 - _0206814E - 2; case 85 .short _02068500 - _0206814E - 2; case 86 .short _02068500 - _0206814E - 2; case 87 .short _02068500 - _0206814E - 2; case 88 .short _02068500 - _0206814E - 2; case 89 .short _02068500 - _0206814E - 2; case 90 .short _02068500 - _0206814E - 2; case 91 .short _02068500 - _0206814E - 2; case 92 .short _02068500 - _0206814E - 2; case 93 .short _02068500 - _0206814E - 2; case 94 .short _02068500 - _0206814E - 2; case 95 .short _02068500 - _0206814E - 2; case 96 .short _02068500 - _0206814E - 2; case 97 .short _02068500 - _0206814E - 2; case 98 .short _02068500 - _0206814E - 2; case 99 .short _02068500 - _0206814E - 2; case 100 .short _02068500 - _0206814E - 2; case 101 .short _02068500 - _0206814E - 2; case 102 .short _02068500 - _0206814E - 2; case 103 .short _02068500 - _0206814E - 2; case 104 .short _02068500 - _0206814E - 2; case 105 .short _02068500 - _0206814E - 2; case 106 .short _02068500 - _0206814E - 2; case 107 .short _02068500 - _0206814E - 2; case 108 .short _02068500 - _0206814E - 2; case 109 .short _02068500 - _0206814E - 2; case 110 .short _02068500 - _0206814E - 2; case 111 .short _02068500 - _0206814E - 2; case 112 .short _02068500 - _0206814E - 2; case 113 .short _02068500 - _0206814E - 2; case 114 .short _02068500 - _0206814E - 2; case 115 .short _02068500 - _0206814E - 2; case 116 .short _02068500 - _0206814E - 2; case 117 .short _02068500 - _0206814E - 2; case 118 .short _02068500 - _0206814E - 2; case 119 .short _02068500 - _0206814E - 2; case 120 .short _02068500 - _0206814E - 2; case 121 .short _02068500 - _0206814E - 2; case 122 .short _02068500 - _0206814E - 2; case 123 .short _02068500 - _0206814E - 2; case 124 .short _02068500 - _0206814E - 2; case 125 .short _02068500 - _0206814E - 2; case 126 .short _02068500 - _0206814E - 2; case 127 .short _02068500 - _0206814E - 2; case 128 .short _02068500 - _0206814E - 2; case 129 .short _02068500 - _0206814E - 2; case 130 .short _02068500 - _0206814E - 2; case 131 .short _02068500 - _0206814E - 2; case 132 .short _02068500 - _0206814E - 2; case 133 .short _02068500 - _0206814E - 2; case 134 .short _02068500 - _0206814E - 2; case 135 .short _02068500 - _0206814E - 2; case 136 .short _02068500 - _0206814E - 2; case 137 .short _02068500 - _0206814E - 2; case 138 .short _02068500 - _0206814E - 2; case 139 .short _02068500 - _0206814E - 2; case 140 .short _02068500 - _0206814E - 2; case 141 .short _02068500 - _0206814E - 2; case 142 .short _02068500 - _0206814E - 2; case 143 .short _02068500 - _0206814E - 2; case 144 .short _02068500 - _0206814E - 2; case 145 .short _02068500 - _0206814E - 2; case 146 .short _02068500 - _0206814E - 2; case 147 .short _02068500 - _0206814E - 2; case 148 .short _02068500 - _0206814E - 2; case 149 .short _02068500 - _0206814E - 2; case 150 .short _02068500 - _0206814E - 2; case 151 .short _02068500 - _0206814E - 2; case 152 .short _02068500 - _0206814E - 2; case 153 .short _02068500 - _0206814E - 2; case 154 .short _02068500 - _0206814E - 2; case 155 .short _02068500 - _0206814E - 2; case 156 .short _02068500 - _0206814E - 2; case 157 .short _02068500 - _0206814E - 2; case 158 .short _02068500 - _0206814E - 2; case 159 .short _02068500 - _0206814E - 2; case 160 .short _02068500 - _0206814E - 2; case 161 .short _02068500 - _0206814E - 2; case 162 .short _02068500 - _0206814E - 2; case 163 .short _02068500 - _0206814E - 2; case 164 .short _02068500 - _0206814E - 2; case 165 .short _02068500 - _0206814E - 2; case 166 .short _02068500 - _0206814E - 2; case 167 .short _02068500 - _0206814E - 2; case 168 .short _02068500 - _0206814E - 2; case 169 .short _02068500 - _0206814E - 2; case 170 .short _02068500 - _0206814E - 2; case 171 .short _02068500 - _0206814E - 2; case 172 .short _02068500 - _0206814E - 2; case 173 .short _02068500 - _0206814E - 2; case 174 .short _02068500 - _0206814E - 2; case 175 .short _02068500 - _0206814E - 2; case 176 .short _02068500 - _0206814E - 2; case 177 .short _02068500 - _0206814E - 2; case 178 _020682B4: ldrh r0, [r4, #0x0] mov r1, #0x64 bl GetMonExpByLevel ldr r1, [r4, #0x8] add r1, r1, r6 cmp r1, r0 bls _020682D2 ldrh r0, [r4, #0x0] mov r1, #0x64 bl GetMonExpByLevel add sp, #0xc str r0, [r4, #0x8] pop {r4-r7, pc} _020682D2: add sp, #0xc str r1, [r4, #0x8] pop {r4-r7, pc} _020682D8: ldrb r0, [r4, #0xc] add r0, r0, r6 cmp r0, #0xff ble _020682E8 mov r0, #0xff add sp, #0xc strb r0, [r4, #0xc] pop {r4-r7, pc} _020682E8: add sp, #0xc strb r0, [r4, #0xc] pop {r4-r7, pc} _020682EE: ldrb r0, [r4, #0x10] add sp, #0xc add r0, r0, r6 strb r0, [r4, #0x10] pop {r4-r7, pc} _020682F8: ldrb r0, [r4, #0x11] add sp, #0xc add r0, r0, r6 strb r0, [r4, #0x11] pop {r4-r7, pc} _02068302: ldrb r0, [r4, #0x12] add sp, #0xc add r0, r0, r6 strb r0, [r4, #0x12] pop {r4-r7, pc} _0206830C: ldrb r0, [r4, #0x13] add sp, #0xc add r0, r0, r6 strb r0, [r4, #0x13] pop {r4-r7, pc} _02068316: ldrb r0, [r4, #0x14] add sp, #0xc add r0, r0, r6 strb r0, [r4, #0x14] pop {r4-r7, pc} _02068320: ldrb r0, [r4, #0x15] add sp, #0xc add r0, r0, r6 strb r0, [r4, #0x15] pop {r4-r7, pc} _0206832A: ldrb r0, [r4, #0x16] add r0, r0, r6 cmp r0, #0xff ble _0206833A mov r0, #0xff add sp, #0xc strb r0, [r4, #0x16] pop {r4-r7, pc} _0206833A: add sp, #0xc strb r0, [r4, #0x16] pop {r4-r7, pc} _02068340: ldrb r0, [r4, #0x17] add r0, r0, r6 cmp r0, #0xff ble _02068350 mov r0, #0xff add sp, #0xc strb r0, [r4, #0x17] pop {r4-r7, pc} _02068350: add sp, #0xc strb r0, [r4, #0x17] pop {r4-r7, pc} _02068356: ldrb r0, [r4, #0x18] add r0, r0, r6 cmp r0, #0xff ble _02068366 mov r0, #0xff add sp, #0xc strb r0, [r4, #0x18] pop {r4-r7, pc} _02068366: add sp, #0xc strb r0, [r4, #0x18] pop {r4-r7, pc} _0206836C: ldrb r0, [r4, #0x19] add r0, r0, r6 cmp r0, #0xff ble _0206837C mov r0, #0xff add sp, #0xc strb r0, [r4, #0x19] pop {r4-r7, pc} _0206837C: add sp, #0xc strb r0, [r4, #0x19] pop {r4-r7, pc} _02068382: ldrb r0, [r4, #0x1a] add r0, r0, r6 cmp r0, #0xff ble _02068392 mov r0, #0xff add sp, #0xc strb r0, [r4, #0x1a] pop {r4-r7, pc} _02068392: add sp, #0xc strb r0, [r4, #0x1a] pop {r4-r7, pc} _02068398: ldrb r0, [r4, #0x1b] add r0, r0, r6 cmp r0, #0xff ble _020683A8 mov r0, #0xff add sp, #0xc strb r0, [r4, #0x1b] pop {r4-r7, pc} _020683A8: add sp, #0xc strb r0, [r4, #0x1b] pop {r4-r7, pc} _020683AE: add r0, r5, #0x0 str r0, [sp, #0x4] add r0, #0xc str r0, [sp, #0x4] sub r7, #0x3a ldr r1, [sp, #0x4] lsl r0, r7, #0x1 str r0, [sp, #0x8] add r4, r5, #0x0 ldrh r0, [r5, r0] ldrb r1, [r1, r7] add r4, #0x8 bl FUN_0206AB30 ldrb r1, [r4, r7] add r1, r6, r1 cmp r1, r0 ble _020683E4 ldr r0, [sp, #0x8] ldr r1, [sp, #0x4] ldrh r0, [r5, r0] ldrb r1, [r1, r7] bl FUN_0206AB30 add sp, #0xc strb r0, [r4, r7] pop {r4-r7, pc} _020683E4: add sp, #0xc strb r1, [r4, r7] pop {r4-r7, pc} _020683EA: add r5, #0xc sub r7, #0x3e ldrb r0, [r5, r7] add r0, r6, r0 cmp r0, #0x3 ble _020683FE mov r0, #0x3 add sp, #0xc strb r0, [r5, r7] pop {r4-r7, pc} _020683FE: add sp, #0xc strb r0, [r5, r7] pop {r4-r7, pc} _02068404: ldr r1, [r5, #0x10] lsl r0, r1, #0x1b lsr r0, r0, #0x1b add r2, r0, r6 cmp r2, #0x1f bls _0206841E mov r0, #0x1f bic r1, r0 mov r0, #0x1f orr r0, r1 add sp, #0xc str r0, [r5, #0x10] pop {r4-r7, pc} _0206841E: mov r0, #0x1f bic r1, r0 mov r0, #0x1f and r0, r2 orr r0, r1 add sp, #0xc str r0, [r5, #0x10] pop {r4-r7, pc} _0206842E: ldr r1, [r5, #0x10] lsl r0, r1, #0x16 lsr r0, r0, #0x1b add r2, r0, r6 cmp r2, #0x1f ldr r0, _02068508 ; =0xFFFFFC1F bls _0206844A and r1, r0 mov r0, #0x3e lsl r0, r0, #0x4 orr r0, r1 add sp, #0xc str r0, [r5, #0x10] pop {r4-r7, pc} _0206844A: and r1, r0 lsl r0, r2, #0x1b lsr r0, r0, #0x16 orr r0, r1 add sp, #0xc str r0, [r5, #0x10] pop {r4-r7, pc} _02068458: ldr r1, [r5, #0x10] lsl r0, r1, #0x11 lsr r0, r0, #0x1b add r2, r0, r6 cmp r2, #0x1f ldr r0, _0206850C ; =0xFFFF83FF bls _02068474 and r1, r0 mov r0, #0x1f lsl r0, r0, #0xa orr r0, r1 add sp, #0xc str r0, [r5, #0x10] pop {r4-r7, pc} _02068474: and r1, r0 lsl r0, r2, #0x1b lsr r0, r0, #0x11 orr r0, r1 add sp, #0xc str r0, [r5, #0x10] pop {r4-r7, pc} _02068482: ldr r1, [r5, #0x10] lsl r0, r1, #0xc lsr r0, r0, #0x1b add r2, r0, r6 cmp r2, #0x1f ldr r0, _02068510 ; =0xFFF07FFF bls _0206849E and r1, r0 mov r0, #0x3e lsl r0, r0, #0xe orr r0, r1 add sp, #0xc str r0, [r5, #0x10] pop {r4-r7, pc} _0206849E: and r1, r0 lsl r0, r2, #0x1b lsr r0, r0, #0xc orr r0, r1 add sp, #0xc str r0, [r5, #0x10] pop {r4-r7, pc} _020684AC: ldr r1, [r5, #0x10] lsl r0, r1, #0x7 lsr r0, r0, #0x1b add r2, r0, r6 cmp r2, #0x1f ldr r0, _02068514 ; =0xFE0FFFFF bls _020684C8 and r1, r0 mov r0, #0x1f lsl r0, r0, #0x14 orr r0, r1 add sp, #0xc str r0, [r5, #0x10] pop {r4-r7, pc} _020684C8: and r1, r0 lsl r0, r2, #0x1b lsr r0, r0, #0x7 orr r0, r1 add sp, #0xc str r0, [r5, #0x10] pop {r4-r7, pc} _020684D6: ldr r1, [r5, #0x10] lsl r0, r1, #0x2 lsr r0, r0, #0x1b add r2, r0, r6 cmp r2, #0x1f ldr r0, _02068518 ; =0xC1FFFFFF bls _020684F2 and r1, r0 mov r0, #0x3e lsl r0, r0, #0x18 orr r0, r1 add sp, #0xc str r0, [r5, #0x10] pop {r4-r7, pc} _020684F2: and r1, r0 lsl r0, r2, #0x1b lsr r0, r0, #0x2 orr r0, r1 add sp, #0xc str r0, [r5, #0x10] pop {r4-r7, pc} _02068500: bl ErrorHandling _02068504: add sp, #0xc pop {r4-r7, pc} .balign 4 _02068508: .word 0xFFFFFC1F _0206850C: .word 0xFFFF83FF _02068510: .word 0xFFF07FFF _02068514: .word 0xFE0FFFFF _02068518: .word 0xC1FFFFFF thumb_func_start AllocAndLoadMonPersonal AllocAndLoadMonPersonal: ; 0x0206851C push {r3-r5, lr} add r5, r0, #0x0 add r0, r1, #0x0 mov r1, #0x2c bl AllocFromHeap add r4, r0, #0x0 add r0, r5, #0x0 add r1, r4, #0x0 bl LoadMonPersonal add r0, r4, #0x0 pop {r3-r5, pc} .balign 4 thumb_func_start GetPersonalAttr GetPersonalAttr: ; 0x02068538 push {r4-r6, lr} add r4, r0, #0x0 add r6, r1, #0x0 cmp r4, #0x0 bne _02068546 bl ErrorHandling _02068546: cmp r6, #0x20 bhi _0206863A add r0, r6, r6 add r0, pc ldrh r0, [r0, #0x6] lsl r0, r0, #0x10 asr r0, r0, #0x10 add pc, r0 _02068556: ; jump table (using 16-bit offset) .short _02068598 - _02068556 - 2; case 0 .short _0206859C - _02068556 - 2; case 1 .short _020685A0 - _02068556 - 2; case 2 .short _020685A4 - _02068556 - 2; case 3 .short _020685A8 - _02068556 - 2; case 4 .short _020685AC - _02068556 - 2; case 5 .short _020685B0 - _02068556 - 2; case 6 .short _020685B4 - _02068556 - 2; case 7 .short _020685B8 - _02068556 - 2; case 8 .short _020685BC - _02068556 - 2; case 9 .short _020685C0 - _02068556 - 2; case 10 .short _020685C8 - _02068556 - 2; case 11 .short _020685D0 - _02068556 - 2; case 12 .short _020685D8 - _02068556 - 2; case 13 .short _020685E0 - _02068556 - 2; case 14 .short _020685E8 - _02068556 - 2; case 15 .short _020685F0 - _02068556 - 2; case 16 .short _020685F4 - _02068556 - 2; case 17 .short _020685F8 - _02068556 - 2; case 18 .short _020685FC - _02068556 - 2; case 19 .short _02068600 - _02068556 - 2; case 20 .short _02068604 - _02068556 - 2; case 21 .short _02068608 - _02068556 - 2; case 22 .short _0206860C - _02068556 - 2; case 23 .short _02068610 - _02068556 - 2; case 24 .short _02068614 - _02068556 - 2; case 25 .short _02068618 - _02068556 - 2; case 26 .short _0206861C - _02068556 - 2; case 27 .short _02068624 - _02068556 - 2; case 28 .short _0206862C - _02068556 - 2; case 29 .short _02068630 - _02068556 - 2; case 30 .short _02068634 - _02068556 - 2; case 31 .short _02068638 - _02068556 - 2; case 32 _02068598: ldrb r5, [r4, #0x0] b _0206863A _0206859C: ldrb r5, [r4, #0x1] b _0206863A _020685A0: ldrb r5, [r4, #0x2] b _0206863A _020685A4: ldrb r5, [r4, #0x3] b _0206863A _020685A8: ldrb r5, [r4, #0x4] b _0206863A _020685AC: ldrb r5, [r4, #0x5] b _0206863A _020685B0: ldrb r5, [r4, #0x6] b _0206863A _020685B4: ldrb r5, [r4, #0x7] b _0206863A _020685B8: ldrb r5, [r4, #0x8] b _0206863A _020685BC: ldrb r5, [r4, #0x9] b _0206863A _020685C0: ldrh r0, [r4, #0xa] lsl r0, r0, #0x1e lsr r5, r0, #0x1e b _0206863A _020685C8: ldrh r0, [r4, #0xa] lsl r0, r0, #0x1c lsr r5, r0, #0x1e b _0206863A _020685D0: ldrh r0, [r4, #0xa] lsl r0, r0, #0x1a lsr r5, r0, #0x1e b _0206863A _020685D8: ldrh r0, [r4, #0xa] lsl r0, r0, #0x18 lsr r5, r0, #0x1e b _0206863A _020685E0: ldrh r0, [r4, #0xa] lsl r0, r0, #0x16 lsr r5, r0, #0x1e b _0206863A _020685E8: ldrh r0, [r4, #0xa] lsl r0, r0, #0x14 lsr r5, r0, #0x1e b _0206863A _020685F0: ldrh r5, [r4, #0xc] b _0206863A _020685F4: ldrh r5, [r4, #0xe] b _0206863A _020685F8: ldrb r5, [r4, #0x10] b _0206863A _020685FC: ldrb r5, [r4, #0x11] b _0206863A _02068600: ldrb r5, [r4, #0x12] b _0206863A _02068604: ldrb r5, [r4, #0x13] b _0206863A _02068608: ldrb r5, [r4, #0x14] b _0206863A _0206860C: ldrb r5, [r4, #0x15] b _0206863A _02068610: ldrb r5, [r4, #0x16] b _0206863A _02068614: ldrb r5, [r4, #0x17] b _0206863A _02068618: ldrb r5, [r4, #0x18] b _0206863A _0206861C: ldrb r0, [r4, #0x19] lsl r0, r0, #0x19 lsr r5, r0, #0x19 b _0206863A _02068624: ldrb r0, [r4, #0x19] lsl r0, r0, #0x18 lsr r5, r0, #0x1f b _0206863A _0206862C: ldr r5, [r4, #0x1c] b _0206863A _02068630: ldr r5, [r4, #0x20] b _0206863A _02068634: ldr r5, [r4, #0x24] b _0206863A _02068638: ldr r5, [r4, #0x28] _0206863A: add r0, r5, #0x0 pop {r4-r6, pc} .balign 4 thumb_func_start FreeMonPersonal FreeMonPersonal: ; 0x02068640 push {r4, lr} add r4, r0, #0x0 bne _0206864A bl ErrorHandling _0206864A: add r0, r4, #0x0 bl FreeToHeap pop {r4, pc} .balign 4 thumb_func_start GetMonBaseStat_HandleFormeConversion GetMonBaseStat_HandleFormeConversion: ; 0x02068654 push {r3-r5, lr} add r4, r2, #0x0 bl ResolveMonForme mov r1, #0x0 bl AllocAndLoadMonPersonal add r5, r0, #0x0 add r1, r4, #0x0 bl GetPersonalAttr add r4, r0, #0x0 add r0, r5, #0x0 bl FreeMonPersonal add r0, r4, #0x0 pop {r3-r5, pc} .balign 4 thumb_func_start GetMonBaseStat GetMonBaseStat: ; 0x02068678 push {r3-r5, lr} add r4, r1, #0x0 mov r1, #0x0 bl AllocAndLoadMonPersonal add r5, r0, #0x0 add r1, r4, #0x0 bl GetPersonalAttr add r4, r0, #0x0 add r0, r5, #0x0 bl FreeMonPersonal add r0, r4, #0x0 pop {r3-r5, pc} .balign 4 thumb_func_start FUN_02068698 FUN_02068698: ; 0x02068698 push {r3-r7, lr} add r5, r0, #0x0 bl TryDecryptMon str r0, [sp, #0x0] add r0, r5, #0x0 mov r1, #0x5 mov r2, #0x0 bl GetMonDataEncrypted lsl r0, r0, #0x10 lsr r6, r0, #0x10 add r0, r5, #0x0 mov r1, #0xa0 mov r2, #0x0 bl GetMonDataEncrypted lsl r0, r0, #0x18 lsr r7, r0, #0x18 add r0, r6, #0x0 add r1, r7, #0x0 bl GetMonExpByLevel add r4, r0, #0x0 add r0, r6, #0x0 add r1, r7, #0x1 bl GetMonExpByLevel add r6, r0, #0x0 add r0, r5, #0x0 mov r1, #0x8 mov r2, #0x0 bl GetMonDataEncrypted add r7, r0, #0x0 ldr r1, [sp, #0x0] add r0, r5, #0x0 bl TryEncryptMon sub r1, r7, r4 mov r0, #0x64 mul r0, r1 sub r1, r6, r4 bl _u32_div_f lsl r0, r0, #0x18 lsr r0, r0, #0x18 pop {r3-r7, pc} thumb_func_start CalcMonExpToNextLevelEncrypted CalcMonExpToNextLevelEncrypted: ; 0x020686F8 ldr r3, _020686FC ; =CalcBoxMonExpToNextLevelEncrypted bx r3 .balign 4 _020686FC: .word CalcBoxMonExpToNextLevelEncrypted thumb_func_start CalcBoxMonExpToNextLevelEncrypted CalcBoxMonExpToNextLevelEncrypted: ; 0x02068700 push {r4-r6, lr} mov r1, #0x5 mov r2, #0x0 add r4, r0, #0x0 bl GetBoxMonDataEncrypted lsl r0, r0, #0x10 lsr r6, r0, #0x10 add r0, r4, #0x0 bl CalcBoxMonLevelEncrypted add r0, r0, #0x1 lsl r0, r0, #0x10 lsr r5, r0, #0x10 add r0, r4, #0x0 mov r1, #0x8 mov r2, #0x0 bl GetBoxMonDataEncrypted add r4, r0, #0x0 add r0, r6, #0x0 add r1, r5, #0x0 bl GetMonExpByLevel sub r0, r0, r4 pop {r4-r6, pc} thumb_func_start FUN_02068734 FUN_02068734: ; 0x02068734 push {r3-r5, lr} add r5, r0, #0x0 mov r1, #0x5 mov r2, #0x0 bl GetMonDataEncrypted add r4, r0, #0x0 add r0, r5, #0x0 mov r1, #0xa0 mov r2, #0x0 bl GetMonDataEncrypted add r1, r0, #0x0 add r0, r4, #0x0 bl GetMonExpByLevel pop {r3-r5, pc} .balign 4 thumb_func_start GetMonExpByLevel GetMonExpByLevel: ; 0x02068758 push {r4, lr} add r4, r1, #0x0 mov r1, #0x15 bl GetMonBaseStat add r1, r4, #0x0 bl GetExpByGrowthRateAndLevel pop {r4, pc} .balign 4 thumb_func_start LoadGrowthTable LoadGrowthTable: ; 0x0206876C push {r3-r5, lr} add r5, r0, #0x0 add r4, r1, #0x0 cmp r5, #0x8 blt _0206877A bl ErrorHandling _0206877A: add r0, r4, #0x0 mov r1, #0x3 ; NARC_POKETOOL_PERSONAL_GROWTBL add r2, r5, #0x0 bl ReadWholeNarcMemberByIdPair pop {r3-r5, pc} .balign 4 thumb_func_start GetExpByGrowthRateAndLevel GetExpByGrowthRateAndLevel: ; 0x02068788 push {r4-r6, lr} add r6, r0, #0x0 add r5, r1, #0x0 cmp r6, #0x8 blt _02068796 bl ErrorHandling _02068796: cmp r5, #0x65 ble _0206879E bl ErrorHandling _0206879E: mov r1, #0x65 mov r0, #0x0 lsl r1, r1, #0x2 bl AllocFromHeap add r4, r0, #0x0 add r0, r6, #0x0 add r1, r4, #0x0 bl LoadGrowthTable lsl r0, r5, #0x2 ldr r5, [r4, r0] add r0, r4, #0x0 bl FreeToHeap add r0, r5, #0x0 pop {r4-r6, pc} thumb_func_start CalcMonLevelEncrypted CalcMonLevelEncrypted: ; 0x020687C0 ldr r3, _020687C4 ; =CalcBoxMonLevelEncrypted bx r3 .balign 4 _020687C4: .word CalcBoxMonLevelEncrypted thumb_func_start CalcBoxMonLevelEncrypted CalcBoxMonLevelEncrypted: ; 0x020687C8 push {r3-r7, lr} add r5, r0, #0x0 bl TryDecryptBoxMon add r6, r0, #0x0 add r0, r5, #0x0 mov r1, #0x5 mov r2, #0x0 bl GetBoxMonDataEncrypted add r4, r0, #0x0 add r0, r5, #0x0 mov r1, #0x8 mov r2, #0x0 bl GetBoxMonDataEncrypted add r7, r0, #0x0 add r0, r5, #0x0 add r1, r6, #0x0 bl TryEncryptBoxMon lsl r0, r4, #0x10 lsr r0, r0, #0x10 add r1, r7, #0x0 bl CalcLevelBySpeciesAndExp pop {r3-r7, pc} .balign 4 thumb_func_start CalcLevelBySpeciesAndExp CalcLevelBySpeciesAndExp: ; 0x02068800 push {r4-r6, lr} add r4, r1, #0x0 add r5, r0, #0x0 mov r1, #0x0 bl AllocAndLoadMonPersonal add r6, r0, #0x0 add r1, r5, #0x0 add r2, r4, #0x0 bl CalcLevelBySpeciesAndExp_PreloadedPersonal add r4, r0, #0x0 add r0, r6, #0x0 bl FreeMonPersonal add r0, r4, #0x0 pop {r4-r6, pc} .balign 4 thumb_func_start CalcLevelBySpeciesAndExp_PreloadedPersonal CalcLevelBySpeciesAndExp_PreloadedPersonal: ; 0x02068824 push {r4, lr} mov r1, #0x15 add r4, r2, #0x0 bl GetPersonalAttr ldr r1, _0206884C ; =UNK_021C5AC0 bl LoadGrowthTable ldr r2, _02068850 ; =UNK_021C5AC0 + 4 mov r1, #0x1 _02068838: ldr r0, [r2, #0x0] cmp r0, r4 bhi _02068846 add r1, r1, #0x1 add r2, r2, #0x4 cmp r1, #0x65 blt _02068838 _02068846: sub r0, r1, #0x1 pop {r4, pc} nop _0206884C: .word UNK_021C5AC0 _02068850: .word UNK_021C5AC0 + 4 thumb_func_start GetMonNatureEncrypted GetMonNatureEncrypted: ; 0x02068854 ldr r3, _02068858 ; =GetBoxMonNatureEncrypted bx r3 .balign 4 _02068858: .word GetBoxMonNatureEncrypted thumb_func_start GetBoxMonNatureEncrypted GetBoxMonNatureEncrypted: ; 0x0206885C push {r4-r6, lr} add r5, r0, #0x0 bl TryDecryptBoxMon mov r1, #0x0 add r4, r0, #0x0 add r0, r5, #0x0 add r2, r1, #0x0 bl GetBoxMonDataEncrypted add r6, r0, #0x0 add r0, r5, #0x0 add r1, r4, #0x0 bl TryEncryptBoxMon add r0, r6, #0x0 bl GetNatureFromPersonality pop {r4-r6, pc} .balign 4 thumb_func_start GetNatureFromPersonality GetNatureFromPersonality: ; 0x02068884 push {r3, lr} mov r1, #0x19 bl _u32_div_f lsl r0, r1, #0x18 lsr r0, r0, #0x18 pop {r3, pc} .balign 4 thumb_func_start ApplyNatureModToStat ApplyNatureModToStat: ; 0x02068894 push {r3, lr} cmp r2, #0x1 blo _0206889E cmp r2, #0x5 bls _020688A2 _0206889E: add r0, r1, #0x0 pop {r3, pc} _020688A2: lsl r3, r0, #0x2 add r3, r0, r3 ldr r0, _020688E4 ; =sNatureStatMods sub r2, r2, #0x1 add r0, r0, r3 ldrsb r2, [r2, r0] mov r0, #0x0 mvn r0, r0 cmp r2, r0 beq _020688CE cmp r2, #0x1 bne _020688E0 mov r0, #110 mul r0, r1 lsl r0, r0, #0x10 lsr r0, r0, #0x10 mov r1, #100 bl _s32_div_f lsl r0, r0, #0x10 lsr r1, r0, #0x10 b _020688E0 _020688CE: mov r0, #90 mul r0, r1 lsl r0, r0, #0x10 lsr r0, r0, #0x10 mov r1, #100 bl _s32_div_f lsl r0, r0, #0x10 lsr r1, r0, #0x10 _020688E0: add r0, r1, #0x0 pop {r3, pc} .balign 4 _020688E4: .word sNatureStatMods thumb_func_start MonApplyFriendshipModEncrypted MonApplyFriendshipModEncrypted: ; 0x020688E8 push {r3-r7, lr} sub sp, #0x8 add r6, r1, #0x0 add r5, r0, #0x0 str r2, [sp, #0x0] cmp r6, #0x5 bne _02068900 bl rand_LC mov r1, #0x1 tst r0, r1 bne _020689D4 _02068900: add r0, r5, #0x0 mov r1, #0xad mov r2, #0x0 bl GetMonDataEncrypted lsl r0, r0, #0x10 lsr r1, r0, #0x10 beq _020689D4 ldr r0, _020689D8 ; =SPECIES_EGG cmp r1, r0 beq _020689D4 add r0, r5, #0x0 mov r1, #0x6 mov r2, #0x0 bl GetMonDataEncrypted lsl r0, r0, #0x10 lsr r0, r0, #0x10 mov r1, #0x1 mov r2, #0x0 bl FUN_0206E7B8 lsl r0, r0, #0x18 mov r4, #0x0 lsr r7, r0, #0x18 add r0, r5, #0x0 mov r1, #0x9 add r2, r4, #0x0 bl GetMonDataEncrypted add r1, sp, #0x4 strh r0, [r1, #0x0] add r0, r4, #0x0 ldrsh r1, [r1, r0] cmp r1, #0x64 blt _0206894E add r0, r4, #0x1 lsl r0, r0, #0x18 lsr r4, r0, #0x18 _0206894E: cmp r1, #0xc8 blt _02068958 add r0, r4, #0x1 lsl r0, r0, #0x18 lsr r4, r0, #0x18 _02068958: lsl r0, r6, #0x1 add r1, r6, r0 ldr r0, _020689DC ; =sFriendshipModTable add r0, r0, r1 ldrsb r4, [r4, r0] cmp r4, #0x0 ble _0206897A add r0, r5, #0x0 mov r1, #0x9a mov r2, #0x0 bl GetMonDataEncrypted cmp r0, #0xb bne _0206897A add r0, r4, #0x1 lsl r0, r0, #0x18 asr r4, r0, #0x18 _0206897A: cmp r4, #0x0 ble _02068994 add r0, r5, #0x0 mov r1, #0x97 mov r2, #0x0 bl GetMonDataEncrypted ldr r1, [sp, #0x0] cmp r1, r0 bne _02068994 add r0, r4, #0x1 lsl r0, r0, #0x18 asr r4, r0, #0x18 _02068994: cmp r4, #0x0 ble _020689AA cmp r7, #0x34 bne _020689AA mov r0, #0x96 mul r0, r4 mov r1, #0x64 bl _s32_div_f lsl r0, r0, #0x18 asr r4, r0, #0x18 _020689AA: add r0, sp, #0x4 mov r1, #0x0 ldrsh r2, [r0, r1] add r2, r2, r4 strh r2, [r0, #0x0] ldrsh r2, [r0, r1] cmp r2, #0x0 bge _020689BC strh r1, [r0, #0x0] _020689BC: add r1, sp, #0x4 mov r0, #0x0 ldrsh r0, [r1, r0] cmp r0, #0xff ble _020689CA mov r0, #0xff strh r0, [r1, #0x0] _020689CA: add r0, r5, #0x0 mov r1, #0x9 add r2, sp, #0x4 bl SetMonDataEncrypted _020689D4: add sp, #0x8 pop {r3-r7, pc} .balign 4 _020689D8: .word SPECIES_EGG _020689DC: .word sFriendshipModTable thumb_func_start GetMonGenderEncrypted GetMonGenderEncrypted: ; 0x020689E0 ldr r3, _020689E4 ; =GetBoxMonGenderEncrypted bx r3 .balign 4 _020689E4: .word GetBoxMonGenderEncrypted thumb_func_start GetBoxMonGenderEncrypted GetBoxMonGenderEncrypted: ; 0x020689E8 push {r3-r7, lr} add r5, r0, #0x0 bl TryDecryptBoxMon add r6, r0, #0x0 add r0, r5, #0x0 mov r1, #0x5 mov r2, #0x0 bl GetBoxMonDataEncrypted lsl r0, r0, #0x10 mov r1, #0x0 lsr r4, r0, #0x10 add r0, r5, #0x0 add r2, r1, #0x0 bl GetBoxMonDataEncrypted add r7, r0, #0x0 add r0, r5, #0x0 add r1, r6, #0x0 bl TryEncryptBoxMon add r0, r4, #0x0 add r1, r7, #0x0 bl GetGenderBySpeciesAndPersonality pop {r3-r7, pc} .balign 4 thumb_func_start GetGenderBySpeciesAndPersonality GetGenderBySpeciesAndPersonality: ; 0x02068A20 push {r4-r6, lr} add r4, r1, #0x0 add r5, r0, #0x0 mov r1, #0x0 bl AllocAndLoadMonPersonal add r6, r0, #0x0 add r1, r5, #0x0 add r2, r4, #0x0 bl GetGenderBySpeciesAndPersonality_PreloadedPersonal add r4, r0, #0x0 add r0, r6, #0x0 bl FreeMonPersonal add r0, r4, #0x0 pop {r4-r6, pc} .balign 4 thumb_func_start GetGenderBySpeciesAndPersonality_PreloadedPersonal GetGenderBySpeciesAndPersonality_PreloadedPersonal: ; 0x02068A44 push {r4, lr} mov r1, #0x12 add r4, r2, #0x0 bl GetPersonalAttr lsl r0, r0, #0x18 lsr r1, r0, #0x18 beq _02068A5E cmp r1, #0xfe beq _02068A62 cmp r1, #0xff beq _02068A66 b _02068A6A _02068A5E: mov r0, #0x0 pop {r4, pc} _02068A62: mov r0, #0x1 pop {r4, pc} _02068A66: mov r0, #0x2 pop {r4, pc} _02068A6A: lsl r0, r4, #0x18 lsr r0, r0, #0x18 cmp r1, r0 bls _02068A76 mov r0, #0x1 b _02068A78 _02068A76: mov r0, #0x0 _02068A78: lsl r0, r0, #0x18 lsr r0, r0, #0x18 pop {r4, pc} .balign 4 thumb_func_start FUN_02068A80 FUN_02068A80: ; 0x02068A80 ldr r3, _02068A84 ; =FUN_02068A88 bx r3 .balign 4 _02068A84: .word FUN_02068A88 thumb_func_start FUN_02068A88 FUN_02068A88: ; 0x02068A88 push {r3-r5, lr} mov r1, #0x7 mov r2, #0x0 add r5, r0, #0x0 bl GetBoxMonDataEncrypted mov r1, #0x0 add r4, r0, #0x0 add r0, r5, #0x0 add r2, r1, #0x0 bl GetBoxMonDataEncrypted add r1, r0, #0x0 add r0, r4, #0x0 bl FUN_02068AAC pop {r3-r5, pc} .balign 4 thumb_func_start FUN_02068AAC FUN_02068AAC: ; 0x02068AAC ldr r3, _02068AD4 ; =0xFFFF0000 lsl r2, r1, #0x10 and r1, r3 and r3, r0 lsl r0, r0, #0x10 lsr r3, r3, #0x10 lsr r0, r0, #0x10 lsr r1, r1, #0x10 eor r0, r3 lsr r2, r2, #0x10 eor r0, r1 eor r0, r2 cmp r0, #0x8 bhs _02068ACC mov r0, #0x1 b _02068ACE _02068ACC: mov r0, #0x0 _02068ACE: lsl r0, r0, #0x18 lsr r0, r0, #0x18 bx lr .balign 4 _02068AD4: .word 0xFFFF0000 thumb_func_start FUN_02068AD8 FUN_02068AD8: ; 0x02068AD8 push {r3-r7, lr} add r7, r0, #0x0 ldr r0, _02068B64 ; =0xFFFF0000 and r0, r7 lsr r1, r0, #0x10 lsl r0, r7, #0x10 lsr r0, r0, #0x10 eor r0, r1 lsr r7, r0, #0x3 bl rand_LC mov r1, #0x7 and r0, r1 lsl r0, r0, #0x10 lsr r6, r0, #0x10 bl rand_LC mov r1, #0x7 and r0, r1 lsl r0, r0, #0x10 lsr r5, r0, #0x10 mov r4, #0x0 _02068B04: add r0, r4, #0x0 bl MaskOfFlagNo tst r0, r7 beq _02068B34 bl rand_LC mov r1, #0x1 tst r0, r1 beq _02068B26 add r0, r4, #0x3 bl MaskOfFlagNo orr r0, r6 lsl r0, r0, #0x10 lsr r6, r0, #0x10 b _02068B56 _02068B26: add r0, r4, #0x3 bl MaskOfFlagNo orr r0, r5 lsl r0, r0, #0x10 lsr r5, r0, #0x10 b _02068B56 _02068B34: bl rand_LC mov r1, #0x1 tst r0, r1 beq _02068B56 add r0, r4, #0x3 bl MaskOfFlagNo orr r0, r6 lsl r0, r0, #0x10 lsr r6, r0, #0x10 add r0, r4, #0x3 bl MaskOfFlagNo orr r0, r5 lsl r0, r0, #0x10 lsr r5, r0, #0x10 _02068B56: add r4, r4, #0x1 cmp r4, #0xd blt _02068B04 lsl r0, r5, #0x10 orr r0, r6 pop {r3-r7, pc} nop _02068B64: .word 0xFFFF0000 thumb_func_start FUN_02068B68 FUN_02068B68: ; 0x02068B68 ldr r3, _02068B6C ; =FUN_02068B70 bx r3 .balign 4 _02068B6C: .word FUN_02068B70 thumb_func_start FUN_02068B70 FUN_02068B70: ; 0x02068B70 push {r4-r7, lr} sub sp, #0x1c add r5, r1, #0x0 str r0, [sp, #0xc] add r0, r5, #0x0 str r2, [sp, #0x10] bl TryDecryptBoxMon str r0, [sp, #0x18] add r0, r5, #0x0 mov r1, #0xad mov r2, #0x0 bl GetBoxMonDataEncrypted lsl r0, r0, #0x10 lsr r4, r0, #0x10 add r0, r5, #0x0 bl GetBoxMonGenderEncrypted str r0, [sp, #0x14] add r0, r5, #0x0 bl FUN_02068A88 mov r1, #0x0 add r7, r0, #0x0 add r0, r5, #0x0 add r2, r1, #0x0 bl GetBoxMonDataEncrypted add r6, r0, #0x0 ldr r0, _02068BF8 ; =SPECIES_EGG cmp r4, r0 bne _02068BCA add r0, r5, #0x0 mov r1, #0x5 mov r2, #0x0 bl GetBoxMonDataEncrypted ldr r1, _02068BFC ; =0x000001EA cmp r0, r1 bne _02068BC6 mov r0, #0x1 b _02068BD8 _02068BC6: mov r0, #0x0 b _02068BD8 _02068BCA: add r0, r5, #0x0 mov r1, #0x70 mov r2, #0x0 bl GetBoxMonDataEncrypted lsl r0, r0, #0x18 lsr r0, r0, #0x18 _02068BD8: str r7, [sp, #0x0] str r0, [sp, #0x4] str r6, [sp, #0x8] ldr r0, [sp, #0xc] ldr r2, [sp, #0x14] ldr r3, [sp, #0x10] add r1, r4, #0x0 bl FUN_02068C00 ldr r1, [sp, #0x18] add r0, r5, #0x0 bl TryEncryptBoxMon add sp, #0x1c pop {r4-r7, pc} nop _02068BF8: .word SPECIES_EGG _02068BFC: .word 0x000001EA thumb_func_start FUN_02068C00 FUN_02068C00: ; 0x02068C00 push {r4-r7} add r7, r2, #0x0 add r5, r3, #0x0 add r4, r0, #0x0 add r0, r1, #0x0 ldr r3, [sp, #0x10] ldr r2, [sp, #0x14] mov r1, #0x0 strh r1, [r4, #0x6] strb r1, [r4, #0x8] str r1, [r4, #0xc] ldr r1, _02068E0C ; =0x000001A5 cmp r0, r1 bgt _02068C68 bge _02068D1E add r6, r1, #0x0 sub r6, #0x46 cmp r0, r6 bgt _02068C36 sub r1, #0x46 cmp r0, r1 blt _02068C2E b _02068D58 _02068C2E: cmp r0, #0xc9 bne _02068C34 b _02068D90 _02068C34: b _02068DD4 _02068C36: add r6, r1, #0x0 sub r6, #0x23 cmp r0, r6 bgt _02068C48 sub r1, #0x23 cmp r0, r1 bne _02068C46 b _02068D76 _02068C46: b _02068DD4 _02068C48: add r6, r1, #0x0 sub r6, #0x8 cmp r0, r6 bgt _02068C66 add r6, r1, #0x0 sub r6, #0x9 cmp r0, r6 blt _02068C66 add r6, r1, #0x0 sub r6, #0x9 cmp r0, r6 beq _02068CAA sub r1, #0x8 cmp r0, r1 beq _02068CC8 _02068C66: b _02068DD4 _02068C68: add r6, r1, #0x0 add r6, #0x48 cmp r0, r6 bgt _02068C8E add r6, r1, #0x0 add r6, #0x48 cmp r0, r6 bge _02068D3A add r6, r1, #0x2 cmp r0, r6 bgt _02068C8C add r6, r1, #0x1 cmp r0, r6 blt _02068C8C beq _02068CE6 add r1, r1, #0x2 cmp r0, r1 beq _02068D02 _02068C8C: b _02068DD4 _02068C8E: add r6, r1, #0x0 add r6, #0x49 cmp r0, r6 bgt _02068CA0 add r1, #0x49 cmp r0, r1 bne _02068C9E b _02068DAC _02068C9E: b _02068DD4 _02068CA0: add r1, #0x4a cmp r0, r1 bne _02068CA8 b _02068DC4 _02068CA8: b _02068DD4 _02068CAA: cmp r2, #0x2 bls _02068CB0 mov r2, #0x0 _02068CB0: mov r0, #0x75 strh r0, [r4, #0x0] lsr r0, r5, #0x1 lsl r1, r2, #0x1 add r0, #0x48 add r0, r0, r1 add r3, #0x92 strh r0, [r4, #0x2] add r0, r3, r1 strh r0, [r4, #0x4] pop {r4-r7} bx lr _02068CC8: cmp r2, #0x2 bls _02068CCE mov r2, #0x0 _02068CCE: mov r0, #0x75 strh r0, [r4, #0x0] lsr r0, r5, #0x1 lsl r1, r2, #0x1 add r0, #0x4e add r0, r0, r1 add r3, #0x98 strh r0, [r4, #0x2] add r0, r3, r1 strh r0, [r4, #0x4] pop {r4-r7} bx lr _02068CE6: cmp r2, #0x1 bls _02068CEC mov r2, #0x0 _02068CEC: mov r0, #0x75 add r5, #0x54 strh r0, [r4, #0x0] add r0, r5, r2 strh r0, [r4, #0x2] add r3, #0x9e lsl r0, r2, #0x1 add r0, r3, r0 strh r0, [r4, #0x4] pop {r4-r7} bx lr _02068D02: cmp r2, #0x1 bls _02068D08 mov r2, #0x0 _02068D08: mov r0, #0x75 add r5, #0x58 strh r0, [r4, #0x0] add r0, r5, r2 strh r0, [r4, #0x2] add r3, #0xa2 lsl r0, r2, #0x1 add r0, r3, r0 strh r0, [r4, #0x4] pop {r4-r7} bx lr _02068D1E: cmp r2, #0x1 bls _02068D24 mov r2, #0x0 _02068D24: mov r0, #0x75 add r5, #0x5c strh r0, [r4, #0x0] add r0, r5, r2 strh r0, [r4, #0x2] lsl r0, r3, #0x1 add r0, #0xa6 add r0, r2, r0 strh r0, [r4, #0x4] pop {r4-r7} bx lr _02068D3A: cmp r2, #0x11 bls _02068D40 mov r2, #0x0 _02068D40: mov r0, #0x75 strh r0, [r4, #0x0] lsr r0, r5, #0x1 lsl r1, r2, #0x1 add r0, #0x60 add r0, r0, r1 add r3, #0xaa strh r0, [r4, #0x2] add r0, r3, r1 strh r0, [r4, #0x4] pop {r4-r7} bx lr _02068D58: cmp r2, #0x3 bls _02068D5E mov r2, #0x0 _02068D5E: mov r0, #0x75 strh r0, [r4, #0x0] lsl r0, r5, #0x1 add r0, #0x40 add r0, r2, r0 strh r0, [r4, #0x2] lsl r0, r3, #0x2 add r0, #0x8a add r0, r2, r0 strh r0, [r4, #0x4] pop {r4-r7} bx lr _02068D76: cmp r2, #0x3 bls _02068D7C mov r2, #0x0 _02068D7C: mov r0, #0x75 strh r0, [r4, #0x0] lsr r1, r5, #0x1 lsl r0, r2, #0x1 add r0, r1, r0 strh r0, [r4, #0x2] add r3, #0x86 strh r3, [r4, #0x4] pop {r4-r7} bx lr _02068D90: cmp r2, #0x1c blo _02068D96 mov r2, #0x0 _02068D96: mov r0, #0x75 lsr r1, r5, #0x1 strh r0, [r4, #0x0] add r1, #0x8 lsl r0, r2, #0x1 add r0, r1, r0 strh r0, [r4, #0x2] add r3, #0x88 strh r3, [r4, #0x4] pop {r4-r7} bx lr _02068DAC: cmp r2, #0x1 bls _02068DB2 mov r2, #0x0 _02068DB2: mov r0, #0x75 strh r0, [r4, #0x0] add r0, r2, #0x0 add r0, #0x84 strh r0, [r4, #0x2] add r2, #0xce strh r2, [r4, #0x4] pop {r4-r7} bx lr _02068DC4: mov r0, #0x75 strh r0, [r4, #0x0] mov r0, #0x84 strh r0, [r4, #0x2] mov r0, #0xce strh r0, [r4, #0x4] pop {r4-r7} bx lr _02068DD4: mov r1, #0x4 strh r1, [r4, #0x0] cmp r7, #0x1 beq _02068DE0 mov r2, #0x1 b _02068DE2 _02068DE0: mov r2, #0x0 _02068DE2: mov r1, #0x6 mul r1, r0 add r6, r5, r1 add r2, r6, r2 add r1, r1, #0x4 strh r2, [r4, #0x2] add r1, r3, r1 strh r1, [r4, #0x4] ldr r1, _02068E10 ; =0x00000147 cmp r0, r1 bne _02068E06 cmp r5, #0x2 bne _02068E06 strh r1, [r4, #0x6] mov r0, #0x0 strb r0, [r4, #0x8] ldr r0, [sp, #0x18] str r0, [r4, #0xc] _02068E06: pop {r4-r7} bx lr nop _02068E0C: .word 0x000001A5 _02068E10: .word 0x00000147 thumb_func_start FUN_02068E14 FUN_02068E14: ; 0x02068E14 ldr r3, _02068E18 ; =FUN_02068E1C bx r3 .balign 4 _02068E18: .word FUN_02068E1C thumb_func_start FUN_02068E1C FUN_02068E1C: ; 0x02068E1C push {r3-r7, lr} sub sp, #0x8 add r7, r1, #0x0 mov r1, #0xad mov r2, #0x0 add r5, r0, #0x0 bl GetBoxMonDataEncrypted lsl r0, r0, #0x10 lsr r4, r0, #0x10 add r0, r5, #0x0 bl GetBoxMonGenderEncrypted mov r1, #0x0 str r0, [sp, #0x4] add r0, r5, #0x0 add r2, r1, #0x0 bl GetBoxMonDataEncrypted add r6, r0, #0x0 ldr r0, _02068E80 ; =SPECIES_EGG cmp r4, r0 bne _02068E62 add r0, r5, #0x0 mov r1, #0x5 mov r2, #0x0 bl GetBoxMonDataEncrypted ldr r1, _02068E84 ; =0x000001EA cmp r0, r1 bne _02068E5E mov r3, #0x1 b _02068E70 _02068E5E: mov r3, #0x0 b _02068E70 _02068E62: add r0, r5, #0x0 mov r1, #0x70 mov r2, #0x0 bl GetBoxMonDataEncrypted lsl r0, r0, #0x18 lsr r3, r0, #0x18 _02068E70: str r6, [sp, #0x0] ldr r1, [sp, #0x4] add r0, r4, #0x0 add r2, r7, #0x0 bl FUN_02068E88 add sp, #0x8 pop {r3-r7, pc} .balign 4 _02068E80: .word SPECIES_EGG _02068E84: .word 0x000001EA thumb_func_start FUN_02068E88 FUN_02068E88: ; 0x02068E88 push {r3-r5, lr} ldr r4, _02068FDC ; =0x000001A5 cmp r0, r4 bgt _02068ED6 bge _02068F54 add r5, r4, #0x0 sub r5, #0x46 cmp r0, r5 bgt _02068EA6 sub r4, #0x46 cmp r0, r4 bge _02068F74 cmp r0, #0xc9 beq _02068F94 b _02068FB8 _02068EA6: add r5, r4, #0x0 sub r5, #0x23 cmp r0, r5 bgt _02068EB6 sub r4, #0x23 cmp r0, r4 beq _02068F84 b _02068FB8 _02068EB6: add r5, r4, #0x0 sub r5, #0x8 cmp r0, r5 bgt _02068FB8 add r5, r4, #0x0 sub r5, #0x9 cmp r0, r5 blt _02068FB8 add r5, r4, #0x0 sub r5, #0x9 cmp r0, r5 beq _02068F14 sub r4, #0x8 cmp r0, r4 beq _02068F26 b _02068FB8 _02068ED6: add r5, r4, #0x0 add r5, #0x48 cmp r0, r5 bgt _02068EFC add r5, r4, #0x0 add r5, #0x48 cmp r0, r5 bge _02068F62 add r5, r4, #0x2 cmp r0, r5 bgt _02068FB8 add r5, r4, #0x1 cmp r0, r5 blt _02068FB8 beq _02068F38 add r4, r4, #0x2 cmp r0, r4 beq _02068F46 b _02068FB8 _02068EFC: add r5, r4, #0x0 add r5, #0x49 cmp r0, r5 bgt _02068F0C add r4, #0x49 cmp r0, r4 beq _02068FA6 b _02068FB8 _02068F0C: add r4, #0x4a cmp r0, r4 beq _02068FB2 b _02068FB8 _02068F14: cmp r3, #0x2 bls _02068F1A mov r3, #0x0 _02068F1A: lsr r1, r2, #0x1 add r1, #0x48 lsl r0, r3, #0x1 mov r4, #0x79 ; NARC_POKETOOL_POKEGRA_HEIGHT_O add r3, r1, r0 b _02068FCA _02068F26: cmp r3, #0x2 bls _02068F2C mov r3, #0x0 _02068F2C: lsr r1, r2, #0x1 add r1, #0x4e lsl r0, r3, #0x1 mov r4, #0x79 ; NARC_POKETOOL_POKEGRA_HEIGHT_O add r3, r1, r0 b _02068FCA _02068F38: cmp r3, #0x1 bls _02068F3E mov r3, #0x0 _02068F3E: add r2, #0x54 mov r4, #0x79 ; NARC_POKETOOL_POKEGRA_HEIGHT_O add r3, r2, r3 b _02068FCA _02068F46: cmp r3, #0x1 bls _02068F4C mov r3, #0x0 _02068F4C: add r2, #0x58 mov r4, #0x79 ; NARC_POKETOOL_POKEGRA_HEIGHT_O add r3, r2, r3 b _02068FCA _02068F54: cmp r3, #0x1 bls _02068F5A mov r3, #0x0 _02068F5A: add r2, #0x5c mov r4, #0x79 ; NARC_POKETOOL_POKEGRA_HEIGHT_O add r3, r2, r3 b _02068FCA _02068F62: cmp r3, #0x11 bls _02068F68 mov r3, #0x0 _02068F68: lsr r1, r2, #0x1 add r1, #0x60 lsl r0, r3, #0x1 mov r4, #0x79 ; NARC_POKETOOL_POKEGRA_HEIGHT_O add r3, r1, r0 b _02068FCA _02068F74: cmp r3, #0x3 bls _02068F7A mov r3, #0x0 _02068F7A: lsl r0, r2, #0x1 add r0, #0x40 mov r4, #0x79 ; NARC_POKETOOL_POKEGRA_HEIGHT_O add r3, r3, r0 b _02068FCA _02068F84: cmp r3, #0x3 bls _02068F8A mov r3, #0x0 _02068F8A: lsr r1, r2, #0x1 lsl r0, r3, #0x1 mov r4, #0x79 ; NARC_POKETOOL_POKEGRA_HEIGHT_O add r3, r1, r0 b _02068FCA _02068F94: cmp r3, #0x1c blo _02068F9A mov r3, #0x0 _02068F9A: lsr r1, r2, #0x1 add r1, #0x8 lsl r0, r3, #0x1 mov r4, #0x79 ; NARC_POKETOOL_POKEGRA_HEIGHT_O add r3, r1, r0 b _02068FCA _02068FA6: cmp r3, #0x1 bls _02068FAC mov r3, #0x0 _02068FAC: mov r4, #0x79 ; NARC_POKETOOL_POKEGRA_HEIGHT_O add r3, #0x84 b _02068FCA _02068FB2: mov r4, #0x79 ; NARC_POKETOOL_POKEGRA_HEIGHT_O mov r3, #0x84 b _02068FCA _02068FB8: mov r4, #0x5 ; NARC_POKETOOL_POKEGRA_HEIGHT cmp r1, #0x1 beq _02068FC2 mov r1, #0x1 b _02068FC4 _02068FC2: mov r1, #0x0 _02068FC4: lsl r0, r0, #0x2 add r0, r2, r0 add r3, r0, r1 _02068FCA: add r0, sp, #0x0 add r1, r4, #0x0 add r2, r3, #0x0 bl ReadWholeNarcMemberByIdPair add r0, sp, #0x0 ldrb r0, [r0, #0x0] pop {r3-r5, pc} nop _02068FDC: .word 0x000001A5 thumb_func_start FUN_02068FE0 FUN_02068FE0: ; 0x02068FE0 push {r4, lr} add r4, r0, #0x0 cmp r2, #0x2 bne _02068FEE mov r0, #0x3c strh r0, [r4, #0x0] b _02068FFC _02068FEE: mov r0, #0x6 strh r0, [r4, #0x0] add r0, r1, #0x0 bl FUN_0206AA30 lsl r0, r0, #0x10 lsr r1, r0, #0x10 _02068FFC: lsl r0, r1, #0x1 strh r0, [r4, #0x2] add r0, r0, #0x1 strh r0, [r4, #0x4] mov r0, #0x0 strh r0, [r4, #0x6] strb r0, [r4, #0x8] str r0, [r4, #0xc] pop {r4, pc} .balign 4 thumb_func_start FUN_02069010 FUN_02069010: ; 0x02069010 push {r3-r5, lr} sub sp, #0x20 add r5, r1, #0x0 mov r3, #0x1c add r4, r0, #0x0 str r3, [sp, #0x0] add r0, sp, #0x4 mov r1, #0x72 ; NARC_POKETOOL_POKEANM_POKEANM mov r2, #0x0 mul r3, r5 bl ReadFromNarcMemberByIdPair add r0, sp, #0xc add r1, r4, #0x0 mov r2, #0x14 bl MI_CpuCopy8 add sp, #0x20 pop {r3-r5, pc} .balign 4 thumb_func_start FUN_02069038 FUN_02069038: ; 0x02069038 push {r3-r7, lr} sub sp, #0x28 add r4, r0, #0x0 add r6, r2, #0x0 add r5, r3, #0x0 mov r3, #0x1c add r0, sp, #0x8 add r7, r1, #0x0 str r3, [sp, #0x0] add r0, #0x2 mov r1, #0x72 ; NARC_POKETOOL_POKEANM_POKEANM mov r2, #0x0 mul r3, r6 bl ReadFromNarcMemberByIdPair cmp r5, #0x2 bne _0206906C add r1, sp, #0x4 mov r0, #0x6 ldrsb r0, [r1, r0] strh r0, [r1, #0x0] ldrb r0, [r1, #0x7] strh r0, [r1, #0x2] ldr r0, [sp, #0x44] strb r0, [r1, #0x4] b _02069096 _0206906C: ldr r0, [sp, #0x40] lsl r0, r0, #0x18 lsr r0, r0, #0x18 bl FUN_02014C3C add r5, r0, #0x0 cmp r5, #0x3 blt _02069080 bl ErrorHandling _02069080: lsl r2, r5, #0x1 add r0, sp, #0xc ldrsb r1, [r0, r2] add r0, sp, #0x4 strh r1, [r0, #0x0] add r1, sp, #0xc add r1, #0x1 ldrb r1, [r1, r2] strh r1, [r0, #0x2] ldr r1, [sp, #0x44] strb r1, [r0, #0x4] _02069096: ldr r3, [sp, #0x48] add r0, r4, #0x0 lsl r3, r3, #0x18 add r1, r7, #0x0 add r2, sp, #0x4 lsr r3, r3, #0x18 bl FUN_02014C54 add sp, #0x28 pop {r3-r7, pc} .balign 4 thumb_func_start FUN_020690AC FUN_020690AC: ; 0x020690AC mov r2, #0x3c strh r2, [r0, #0x0] lsl r1, r1, #0x1 strh r1, [r0, #0x2] add r1, r1, #0x1 strh r1, [r0, #0x4] mov r1, #0x0 strh r1, [r0, #0x6] strb r1, [r0, #0x8] str r1, [r0, #0xc] bx lr .balign 4 thumb_func_start FUN_020690C4 FUN_020690C4: ; 0x020690C4 mov r0, #0xec bx lr thumb_func_start FUN_020690C8 FUN_020690C8: ; 0x020690C8 mov r0, #0x88 bx lr thumb_func_start FUN_020690CC FUN_020690CC: ; 0x020690CC ldr r3, _020690D0 ; =FUN_020690D4 bx r3 .balign 4 _020690D0: .word FUN_020690D4 thumb_func_start FUN_020690D4 FUN_020690D4: ; 0x020690D4 push {r3, lr} mov r1, #0x70 mov r2, #0x0 bl GetBoxMonDataEncrypted lsl r0, r0, #0x18 lsr r0, r0, #0x18 pop {r3, pc} thumb_func_start FUN_020690E4 FUN_020690E4: ; 0x020690E4 bx lr .balign 4 thumb_func_start FUN_020690E8 FUN_020690E8: ; 0x020690E8 push {r3-r5, lr} sub sp, #0x8 mov r1, #0x5 mov r2, #0x0 add r4, r0, #0x0 bl GetMonDataEncrypted lsl r0, r0, #0x10 lsr r5, r0, #0x10 add r0, r4, #0x0 mov r1, #0xa0 mov r2, #0x0 bl GetMonDataEncrypted add r1, r0, #0x1 add r0, sp, #0x0 strb r1, [r0, #0x0] add r0, r4, #0x0 mov r1, #0x8 mov r2, #0x0 bl GetMonDataEncrypted str r0, [sp, #0x4] add r0, r5, #0x0 mov r1, #0x15 bl GetMonBaseStat mov r1, #0x64 add r5, r0, #0x0 bl GetExpByGrowthRateAndLevel ldr r1, [sp, #0x4] cmp r1, r0 bls _02069138 str r0, [sp, #0x4] add r0, r4, #0x0 mov r1, #0x8 add r2, sp, #0x4 bl SetMonDataEncrypted _02069138: add r0, sp, #0x0 ldrb r1, [r0, #0x0] cmp r1, #0x64 bls _02069146 add sp, #0x8 mov r0, #0x0 pop {r3-r5, pc} _02069146: add r0, r5, #0x0 bl GetExpByGrowthRateAndLevel ldr r1, [sp, #0x4] cmp r1, r0 blo _02069162 add r0, r4, #0x0 mov r1, #0xa0 add r2, sp, #0x0 bl SetMonDataEncrypted add sp, #0x8 mov r0, #0x1 pop {r3-r5, pc} _02069162: mov r0, #0x0 add sp, #0x8 pop {r3-r5, pc} thumb_func_start FUN_02069168 FUN_02069168: ; 0x02069168 push {r4-r7, lr} sub sp, #0x44 add r7, r1, #0x0 str r0, [sp, #0x0] mov r6, #0x0 add r4, r2, #0x0 add r0, r7, #0x0 mov r1, #0x5 add r2, r6, #0x0 str r3, [sp, #0x4] ldr r5, [sp, #0x58] bl GetMonDataEncrypted lsl r0, r0, #0x10 lsr r0, r0, #0x10 str r0, [sp, #0x2c] add r0, r7, #0x0 mov r1, #0x6 add r2, r6, #0x0 bl GetMonDataEncrypted lsl r0, r0, #0x10 lsr r0, r0, #0x10 add r1, r6, #0x0 str r0, [sp, #0x28] add r0, r7, #0x0 add r2, r1, #0x0 bl GetMonDataEncrypted str r0, [sp, #0x30] add r0, r7, #0x0 mov r1, #0x14 add r2, r6, #0x0 bl GetMonDataEncrypted lsl r0, r0, #0x18 lsr r0, r0, #0x18 str r0, [sp, #0x10] ldr r1, _020694A0 ; =0xFFFF0000 ldr r0, [sp, #0x30] add r2, r6, #0x0 and r0, r1 lsr r0, r0, #0x10 lsl r0, r0, #0x10 lsr r0, r0, #0x10 str r0, [sp, #0x1c] ldr r0, [sp, #0x28] mov r1, #0x1 bl FUN_0206E7B8 lsl r0, r0, #0x18 lsr r1, r0, #0x18 ldr r0, [sp, #0x2c] cmp r0, #0x40 beq _020691E4 cmp r1, #0x3f bne _020691E4 cmp r4, #0x3 beq _020691E4 add sp, #0x44 add r0, r6, #0x0 pop {r4-r7, pc} _020691E4: cmp r5, #0x0 bne _020691EA add r5, sp, #0x40 _020691EA: mov r0, #0x0 mov r1, #0x2a bl AllocFromHeap str r0, [sp, #0x18] ldr r0, [sp, #0x2c] ldr r1, [sp, #0x18] bl LoadMonEvolutionTable cmp r4, #0x3 bls _02069202 b _0206954A _02069202: add r0, r4, r4 add r0, pc ldrh r0, [r0, #0x6] lsl r0, r0, #0x10 asr r0, r0, #0x10 add pc, r0 _0206920E: ; jump table (using 16-bit offset) .short _02069216 - _0206920E - 2; case 0 .short _02069486 - _0206920E - 2; case 1 .short _020694BE - _0206920E - 2; case 2 .short _020694BE - _0206920E - 2; case 3 _02069216: add r0, r7, #0x0 mov r1, #0xa0 mov r2, #0x0 bl GetMonDataEncrypted lsl r0, r0, #0x18 lsr r0, r0, #0x18 str r0, [sp, #0x14] add r0, r7, #0x0 mov r1, #0x9 mov r2, #0x0 bl GetMonDataEncrypted lsl r0, r0, #0x10 lsr r0, r0, #0x10 str r0, [sp, #0x20] mov r0, #0x0 str r0, [sp, #0x24] ldr r0, [sp, #0x1c] mov r1, #0xa ldr r4, [sp, #0x18] bl _s32_div_f str r1, [sp, #0x8] _02069246: ldrh r0, [r4, #0x0] cmp r0, #0x1a bls _0206924E b _02069472 _0206924E: add r1, r0, r0 add r1, pc ldrh r1, [r1, #0x6] lsl r1, r1, #0x10 asr r1, r1, #0x10 add pc, r1 _0206925A: ; jump table (using 16-bit offset) .short _02069472 - _0206925A - 2; case 0 .short _02069290 - _0206925A - 2; case 1 .short _0206929E - _0206925A - 2; case 2 .short _020692B4 - _0206925A - 2; case 3 .short _020692CA - _0206925A - 2; case 4 .short _02069472 - _0206925A - 2; case 5 .short _02069472 - _0206925A - 2; case 6 .short _02069472 - _0206925A - 2; case 7 .short _020692DA - _0206925A - 2; case 8 .short _02069306 - _0206925A - 2; case 9 .short _02069332 - _0206925A - 2; case 10 .short _0206935E - _0206925A - 2; case 11 .short _02069376 - _0206925A - 2; case 12 .short _0206938C - _0206925A - 2; case 13 .short _0206939C - _0206925A - 2; case 14 .short _020693A2 - _0206925A - 2; case 15 .short _02069472 - _0206925A - 2; case 16 .short _02069472 - _0206925A - 2; case 17 .short _020693B2 - _0206925A - 2; case 18 .short _020693CA - _0206925A - 2; case 19 .short _020693E2 - _0206925A - 2; case 20 .short _020693F6 - _0206925A - 2; case 21 .short _0206940E - _0206925A - 2; case 22 .short _0206942C - _0206925A - 2; case 23 .short _0206944A - _0206925A - 2; case 24 .short _02069458 - _0206925A - 2; case 25 .short _02069466 - _0206925A - 2; case 26 _02069290: ldr r0, [sp, #0x20] cmp r0, #0xdc blo _0206936C ldrh r6, [r4, #0x4] mov r0, #0x1 str r0, [r5, #0x0] b _02069472 _0206929E: bl FUN_0201277C cmp r0, #0x0 bne _0206936C ldr r0, [sp, #0x20] cmp r0, #0xdc blo _0206936C ldrh r6, [r4, #0x4] mov r0, #0x2 str r0, [r5, #0x0] b _02069472 _020692B4: bl FUN_0201277C cmp r0, #0x1 bne _0206936C ldr r0, [sp, #0x20] cmp r0, #0xdc blo _0206936C ldrh r6, [r4, #0x4] mov r0, #0x3 str r0, [r5, #0x0] b _02069472 _020692CA: ldrh r1, [r4, #0x2] ldr r0, [sp, #0x14] cmp r1, r0 bgt _0206936C ldrh r6, [r4, #0x4] mov r0, #0x4 str r0, [r5, #0x0] b _02069472 _020692DA: ldrh r1, [r4, #0x2] ldr r0, [sp, #0x14] cmp r1, r0 bgt _0206936C add r0, r7, #0x0 mov r1, #0xa4 mov r2, #0x0 bl GetMonDataEncrypted str r0, [sp, #0x34] add r0, r7, #0x0 mov r1, #0xa5 mov r2, #0x0 bl GetMonDataEncrypted ldr r1, [sp, #0x34] cmp r1, r0 bls _0206936C ldrh r6, [r4, #0x4] mov r0, #0x8 str r0, [r5, #0x0] b _02069472 _02069306: ldrh r1, [r4, #0x2] ldr r0, [sp, #0x14] cmp r1, r0 bgt _0206936C add r0, r7, #0x0 mov r1, #0xa4 mov r2, #0x0 bl GetMonDataEncrypted str r0, [sp, #0x38] add r0, r7, #0x0 mov r1, #0xa5 mov r2, #0x0 bl GetMonDataEncrypted ldr r1, [sp, #0x38] cmp r1, r0 bne _0206936C ldrh r6, [r4, #0x4] mov r0, #0x9 str r0, [r5, #0x0] b _02069472 _02069332: ldrh r1, [r4, #0x2] ldr r0, [sp, #0x14] cmp r1, r0 bgt _0206936C add r0, r7, #0x0 mov r1, #0xa4 mov r2, #0x0 bl GetMonDataEncrypted str r0, [sp, #0x3c] add r0, r7, #0x0 mov r1, #0xa5 mov r2, #0x0 bl GetMonDataEncrypted ldr r1, [sp, #0x3c] cmp r1, r0 bhs _0206936C ldrh r6, [r4, #0x4] mov r0, #0xa str r0, [r5, #0x0] b _02069472 _0206935E: ldrh r1, [r4, #0x2] ldr r0, [sp, #0x14] cmp r1, r0 bgt _0206936C ldr r0, [sp, #0x8] cmp r0, #0x5 blt _0206936E _0206936C: b _02069472 _0206936E: ldrh r6, [r4, #0x4] mov r0, #0xb str r0, [r5, #0x0] b _02069472 _02069376: ldrh r1, [r4, #0x2] ldr r0, [sp, #0x14] cmp r1, r0 bgt _02069472 ldr r0, [sp, #0x8] cmp r0, #0x5 blt _02069472 ldrh r6, [r4, #0x4] mov r0, #0xc str r0, [r5, #0x0] b _02069472 _0206938C: ldrh r1, [r4, #0x2] ldr r0, [sp, #0x14] cmp r1, r0 bgt _02069472 ldrh r6, [r4, #0x4] mov r0, #0xd str r0, [r5, #0x0] b _02069472 _0206939C: mov r0, #0xe str r0, [r5, #0x0] b _02069472 _020693A2: ldrh r1, [r4, #0x2] ldr r0, [sp, #0x10] cmp r1, r0 bgt _02069472 ldrh r6, [r4, #0x4] mov r0, #0xf str r0, [r5, #0x0] b _02069472 _020693B2: bl FUN_0201277C cmp r0, #0x0 bne _02069472 ldrh r1, [r4, #0x2] ldr r0, [sp, #0x28] cmp r0, r1 bne _02069472 ldrh r6, [r4, #0x4] mov r0, #0x12 str r0, [r5, #0x0] b _02069472 _020693CA: bl FUN_0201277C cmp r0, #0x1 bne _02069472 ldrh r1, [r4, #0x2] ldr r0, [sp, #0x28] cmp r0, r1 bne _02069472 ldrh r6, [r4, #0x4] mov r0, #0x13 str r0, [r5, #0x0] b _02069472 _020693E2: ldrh r1, [r4, #0x2] add r0, r7, #0x0 bl FUN_02069A38 cmp r0, #0x1 bne _02069472 ldrh r6, [r4, #0x4] mov r0, #0x14 str r0, [r5, #0x0] b _02069472 _020693F6: ldr r0, [sp, #0x0] cmp r0, #0x0 beq _02069472 ldrh r1, [r4, #0x2] bl FUN_0206BAE4 cmp r0, #0x1 bne _02069472 ldrh r6, [r4, #0x4] mov r0, #0x15 str r0, [r5, #0x0] b _02069472 _0206940E: add r0, r7, #0x0 mov r1, #0x6f mov r2, #0x0 bl GetMonDataEncrypted cmp r0, #0x0 bne _02069472 ldrh r1, [r4, #0x2] ldr r0, [sp, #0x14] cmp r1, r0 bgt _02069472 ldrh r6, [r4, #0x4] mov r0, #0x16 str r0, [r5, #0x0] b _02069472 _0206942C: add r0, r7, #0x0 mov r1, #0x6f mov r2, #0x0 bl GetMonDataEncrypted cmp r0, #0x1 bne _02069472 ldrh r1, [r4, #0x2] ldr r0, [sp, #0x14] cmp r1, r0 bgt _02069472 ldrh r6, [r4, #0x4] mov r0, #0x17 str r0, [r5, #0x0] b _02069472 _0206944A: ldr r1, [sp, #0x4] cmp r1, r0 bne _02069472 ldrh r6, [r4, #0x4] mov r0, #0x18 str r0, [r5, #0x0] b _02069472 _02069458: ldr r1, [sp, #0x4] cmp r1, r0 bne _02069472 ldrh r6, [r4, #0x4] mov r0, #0x19 str r0, [r5, #0x0] b _02069472 _02069466: ldr r1, [sp, #0x4] cmp r1, r0 bne _02069472 ldrh r6, [r4, #0x4] mov r0, #0x1a str r0, [r5, #0x0] _02069472: cmp r6, #0x0 bne _0206954A ldr r0, [sp, #0x24] add r4, r4, #0x6 add r0, r0, #0x1 str r0, [sp, #0x24] cmp r0, #0x7 bge _02069484 b _02069246 _02069484: b _0206954A _02069486: ldr r3, [sp, #0x18] mov r4, #0x0 mov r7, #0x6 mov r2, #0x5 _0206948E: ldrh r0, [r3, #0x0] cmp r0, #0x5 beq _0206949A cmp r0, #0x6 beq _020694A4 b _020694B0 _0206949A: ldrh r6, [r3, #0x4] str r2, [r5, #0x0] b _020694B0 .balign 4 _020694A0: .word 0xFFFF0000 _020694A4: ldrh r1, [r3, #0x2] ldr r0, [sp, #0x28] cmp r0, r1 bne _020694B0 ldrh r6, [r3, #0x4] str r7, [r5, #0x0] _020694B0: cmp r6, #0x0 bne _0206954A add r4, r4, #0x1 add r3, r3, #0x6 cmp r4, #0x7 blt _0206948E b _0206954A _020694BE: mov r0, #0x0 ldr r4, [sp, #0x18] str r0, [sp, #0xc] _020694C4: ldrh r2, [r4, #0x0] cmp r2, #0x7 bne _020694E4 ldrh r1, [r4, #0x2] ldr r0, [sp, #0x4] cmp r0, r1 bne _020694E4 ldr r0, [sp, #0xc] mov r1, #0x6 mul r1, r0 ldr r0, [sp, #0x18] add r0, r0, r1 ldrh r6, [r0, #0x4] mov r0, #0x0 str r0, [r5, #0x0] b _0206954A _020694E4: cmp r2, #0x10 bne _02069510 add r0, r7, #0x0 mov r1, #0x6f mov r2, #0x0 bl GetMonDataEncrypted cmp r0, #0x0 bne _02069510 ldrh r1, [r4, #0x2] ldr r0, [sp, #0x4] cmp r0, r1 bne _02069510 ldr r0, [sp, #0xc] mov r1, #0x6 mul r1, r0 ldr r0, [sp, #0x18] add r0, r0, r1 ldrh r6, [r0, #0x4] mov r0, #0x0 str r0, [r5, #0x0] b _0206954A _02069510: ldrh r0, [r4, #0x0] cmp r0, #0x11 bne _0206953E add r0, r7, #0x0 mov r1, #0x6f mov r2, #0x0 bl GetMonDataEncrypted cmp r0, #0x1 bne _0206953E ldrh r1, [r4, #0x2] ldr r0, [sp, #0x4] cmp r0, r1 bne _0206953E ldr r0, [sp, #0xc] mov r1, #0x6 mul r1, r0 ldr r0, [sp, #0x18] add r0, r0, r1 ldrh r6, [r0, #0x4] mov r0, #0x0 str r0, [r5, #0x0] b _0206954A _0206953E: ldr r0, [sp, #0xc] add r4, r4, #0x6 add r0, r0, #0x1 str r0, [sp, #0xc] cmp r0, #0x7 blt _020694C4 _0206954A: ldr r0, [sp, #0x18] bl FreeToHeap add r0, r6, #0x0 add sp, #0x44 pop {r4-r7, pc} .balign 4 thumb_func_start ReadFromPersonalPmsNarc ReadFromPersonalPmsNarc: ; 0x02069558 push {r3-r4, lr} sub sp, #0x4c add r4, r0, #0x0 mov r1, #0x0 add r0, sp, #0x0 strh r1, [r0, #0x0] ldr r0, _020695A0 ; =SPECIES_EGG cmp r4, r0 blo _0206956E bl ErrorHandling _0206956E: add r0, sp, #0x4 bl FS_InitFile ldr r1, _020695A4 ; =__local_str_poketool_personal_pms_narc add r0, sp, #0x4 bl FS_OpenFile add r0, sp, #0x4 lsl r1, r4, #0x1 mov r2, #0x0 bl FS_SeekFile add r0, sp, #0x4 add r1, sp, #0x0 mov r2, #0x2 bl FS_ReadFile add r0, sp, #0x4 bl FS_CloseFile add r0, sp, #0x0 ldrh r0, [r0, #0x0] add sp, #0x4c pop {r3-r4, pc} nop _020695A0: .word SPECIES_EGG _020695A4: .word __local_str_poketool_personal_pms_narc thumb_func_start GetEggSpecies GetEggSpecies: ; 0x020695A8 push {r3, lr} cmp r0, #SPECIES_SUDOWOODO bgt _020695CC cmp r0, #SPECIES_MARILL blt _020695BA beq _020695EC cmp r0, #SPECIES_SUDOWOODO beq _020695EC b _020695E8 _020695BA: cmp r0, #SPECIES_MR_MIME bgt _020695C6 bge _020695EC cmp r0, #SPECIES_CHANSEY beq _020695EC b _020695E8 _020695C6: cmp r0, #SPECIES_SNORLAX beq _020695EC b _020695E8 _020695CC: cmp r0, #SPECIES_MANTINE bgt _020695D8 bge _020695EC cmp r0, #SPECIES_WOBBUFFET beq _020695EC b _020695E8 _020695D8: ldr r1, _020695F0 ; =SPECIES_ROSELIA cmp r0, r1 bgt _020695E2 beq _020695EC b _020695E8 _020695E2: add r1, #SPECIES_CHIMECHO-SPECIES_ROSELIA cmp r0, r1 beq _020695EC _020695E8: bl ReadFromPersonalPmsNarc _020695EC: pop {r3, pc} nop _020695F0: .word SPECIES_ROSELIA thumb_func_start InitBoxMonMoveset InitBoxMonMoveset: ; 0x020695F4 push {r3-r7, lr} sub sp, #0x8 add r5, r0, #0x0 mov r0, #0x0 mov r1, #0x2c bl AllocFromHeap str r0, [sp, #0x0] add r0, r5, #0x0 bl TryDecryptBoxMon str r0, [sp, #0x4] add r0, r5, #0x0 mov r1, #0x5 mov r2, #0x0 bl GetBoxMonDataEncrypted lsl r0, r0, #0x10 lsr r4, r0, #0x10 add r0, r5, #0x0 mov r1, #0x70 mov r2, #0x0 bl GetBoxMonDataEncrypted add r7, r0, #0x0 add r0, r5, #0x0 bl CalcBoxMonLevelEncrypted lsl r0, r0, #0x18 lsr r6, r0, #0x18 ldr r2, [sp, #0x0] add r0, r4, #0x0 add r1, r7, #0x0 bl LoadWotbl_HandleAlternateForme ldr r0, [sp, #0x0] ldrh r1, [r0, #0x0] ldr r0, _02069690 ; =0x0000FFFF cmp r1, r0 beq _0206967C ldr r4, [sp, #0x0] lsl r7, r6, #0x9 _02069648: ldrh r1, [r4, #0x0] mov r0, #0xfe lsl r0, r0, #0x8 and r0, r1 cmp r0, r7 bgt _0206967C ldr r0, _02069694 ; =0x000001FF and r0, r1 lsl r0, r0, #0x10 lsr r6, r0, #0x10 add r0, r5, #0x0 add r1, r6, #0x0 bl FUN_020696A8 ldr r1, _02069690 ; =0x0000FFFF cmp r0, r1 bne _02069672 add r0, r5, #0x0 add r1, r6, #0x0 bl FUN_02069718 _02069672: add r4, r4, #0x2 ldrh r1, [r4, #0x0] ldr r0, _02069690 ; =0x0000FFFF cmp r1, r0 bne _02069648 _0206967C: ldr r0, [sp, #0x0] bl FreeToHeap ldr r1, [sp, #0x4] add r0, r5, #0x0 bl TryEncryptBoxMon add sp, #0x8 pop {r3-r7, pc} nop _02069690: .word 0x0000FFFF _02069694: .word 0x000001FF thumb_func_start FUN_02069698 FUN_02069698: ; 0x02069698 push {r4, lr} add r4, r1, #0x0 bl FUN_020690E4 add r1, r4, #0x0 bl FUN_020696A8 pop {r4, pc} thumb_func_start FUN_020696A8 FUN_020696A8: ; 0x020696A8 push {r3-r7, lr} sub sp, #0x8 add r5, r1, #0x0 ldr r1, _02069700 ; =0x0000FFFF add r6, r0, #0x0 str r1, [sp, #0x4] bl TryDecryptBoxMon mov r4, #0x0 str r0, [sp, #0x0] add r7, r4, #0x0 _020696BE: add r1, r4, #0x0 add r0, r6, #0x0 add r1, #0x36 add r2, r7, #0x0 bl GetBoxMonDataEncrypted lsl r0, r0, #0x10 lsr r0, r0, #0x10 bne _020696E0 lsl r2, r4, #0x18 add r0, r6, #0x0 add r1, r5, #0x0 lsr r2, r2, #0x18 bl FUN_020697D4 str r5, [sp, #0x4] b _020696F0 _020696E0: cmp r0, r5 bne _020696EA ldr r0, _02069704 ; =0x0000FFFE str r0, [sp, #0x4] b _020696F0 _020696EA: add r4, r4, #0x1 cmp r4, #0x4 blt _020696BE _020696F0: ldr r1, [sp, #0x0] add r0, r6, #0x0 bl TryEncryptBoxMon ldr r0, [sp, #0x4] add sp, #0x8 pop {r3-r7, pc} nop _02069700: .word 0x0000FFFF _02069704: .word 0x0000FFFE thumb_func_start FUN_02069708 FUN_02069708: ; 0x02069708 push {r4, lr} add r4, r1, #0x0 bl FUN_020690E4 add r1, r4, #0x0 bl FUN_02069718 pop {r4, pc} thumb_func_start FUN_02069718 FUN_02069718: ; 0x02069718 push {r3-r7, lr} sub sp, #0x20 add r5, r0, #0x0 str r1, [sp, #0x0] bl TryDecryptBoxMon str r0, [sp, #0xc] add r0, sp, #0x18 mov r4, #0x0 str r0, [sp, #0x4] add r7, sp, #0x14 add r6, sp, #0x10 _02069730: add r1, r4, #0x0 add r0, r5, #0x0 add r1, #0x37 mov r2, #0x0 bl GetBoxMonDataEncrypted ldr r1, [sp, #0x4] mov r2, #0x0 strh r0, [r1, #0x0] add r1, r4, #0x0 add r0, r5, #0x0 add r1, #0x3b bl GetBoxMonDataEncrypted add r1, r4, #0x0 strb r0, [r7, #0x0] add r0, r5, #0x0 add r1, #0x3f mov r2, #0x0 bl GetBoxMonDataEncrypted strb r0, [r6, #0x0] ldr r0, [sp, #0x4] add r4, r4, #0x1 add r0, r0, #0x2 str r0, [sp, #0x4] add r7, r7, #0x1 add r6, r6, #0x1 cmp r4, #0x3 blt _02069730 ldr r0, [sp, #0x0] add r1, sp, #0x10 strh r0, [r1, #0xe] ldr r0, [sp, #0x0] mov r1, #0x5 bl FUN_0206AB18 add r1, sp, #0x10 strb r0, [r1, #0x7] mov r4, #0x0 add r0, sp, #0x18 strb r4, [r1, #0x3] str r0, [sp, #0x8] add r7, sp, #0x14 add r6, sp, #0x10 _0206978A: add r1, r4, #0x0 ldr r2, [sp, #0x8] add r0, r5, #0x0 add r1, #0x36 bl SetBoxMonDataEncrypted add r1, r4, #0x0 add r0, r5, #0x0 add r1, #0x3a add r2, r7, #0x0 bl SetBoxMonDataEncrypted add r1, r4, #0x0 add r0, r5, #0x0 add r1, #0x3e add r2, r6, #0x0 bl SetBoxMonDataEncrypted ldr r0, [sp, #0x8] add r4, r4, #0x1 add r0, r0, #0x2 str r0, [sp, #0x8] add r7, r7, #0x1 add r6, r6, #0x1 cmp r4, #0x4 blt _0206978A ldr r1, [sp, #0xc] add r0, r5, #0x0 bl TryEncryptBoxMon add sp, #0x20 pop {r3-r7, pc} .balign 4 thumb_func_start FUN_020697CC FUN_020697CC: ; 0x020697CC ldr r3, _020697D0 ; =FUN_020697D4 bx r3 .balign 4 _020697D0: .word FUN_020697D4 thumb_func_start FUN_020697D4 FUN_020697D4: ; 0x020697D4 push {r0-r3} push {r3-r5, lr} add r4, r2, #0x0 add r1, r4, #0x0 add r1, #0x36 add r2, sp, #0x14 add r5, r0, #0x0 bl SetBoxMonDataEncrypted add r1, r4, #0x0 add r0, r5, #0x0 add r1, #0x3e mov r2, #0x0 bl GetBoxMonDataEncrypted lsl r0, r0, #0x18 lsr r1, r0, #0x18 add r0, sp, #0x10 ldrh r0, [r0, #0x4] bl FUN_0206AB30 add r1, sp, #0x0 strb r0, [r1, #0x0] add r4, #0x3a add r0, r5, #0x0 add r1, r4, #0x0 add r2, sp, #0x0 bl SetBoxMonDataEncrypted pop {r3-r5} pop {r3} add sp, #0x10 bx r3 .balign 4 thumb_func_start FUN_02069818 FUN_02069818: ; 0x02069818 push {r3-r7, lr} sub sp, #0x10 add r7, r0, #0x0 add r5, r1, #0x0 mov r0, #0x0 mov r1, #0x2c str r2, [sp, #0x0] str r0, [sp, #0x8] bl AllocFromHeap add r4, r0, #0x0 add r0, r7, #0x0 mov r1, #0x5 mov r2, #0x0 bl GetMonDataEncrypted lsl r0, r0, #0x10 lsr r0, r0, #0x10 str r0, [sp, #0x4] add r0, r7, #0x0 mov r1, #0x70 mov r2, #0x0 bl GetMonDataEncrypted str r0, [sp, #0xc] add r0, r7, #0x0 mov r1, #0xa0 mov r2, #0x0 bl GetMonDataEncrypted lsl r0, r0, #0x18 lsr r6, r0, #0x18 ldr r0, [sp, #0x4] ldr r1, [sp, #0xc] add r2, r4, #0x0 bl LoadWotbl_HandleAlternateForme ldr r0, [r5, #0x0] lsl r0, r0, #0x1 ldrh r2, [r4, r0] ldr r0, _020698D8 ; =0x0000FFFF cmp r2, r0 bne _0206987A add r0, r4, #0x0 bl FreeToHeap add sp, #0x10 mov r0, #0x0 pop {r3-r7, pc} _0206987A: mov r0, #0xfe lsl r0, r0, #0x8 add r3, r2, #0x0 and r3, r0 lsl r6, r6, #0x9 cmp r6, r3 beq _020698AC ldr r1, _020698D8 ; =0x0000FFFF _0206988A: ldr r2, [r5, #0x0] add r2, r2, #0x1 str r2, [r5, #0x0] lsl r2, r2, #0x1 ldrh r2, [r4, r2] cmp r2, r1 bne _020698A4 add r0, r4, #0x0 bl FreeToHeap add sp, #0x10 mov r0, #0x0 pop {r3-r7, pc} _020698A4: add r3, r2, #0x0 and r3, r0 cmp r6, r3 bne _0206988A _020698AC: cmp r6, r3 bne _020698CC ldr r0, _020698DC ; =0x000001FF add r1, r2, #0x0 and r1, r0 ldr r0, [sp, #0x0] strh r1, [r0, #0x0] ldr r0, [r5, #0x0] ldr r1, [sp, #0x0] add r0, r0, #0x1 str r0, [r5, #0x0] ldrh r1, [r1, #0x0] add r0, r7, #0x0 bl FUN_02069698 str r0, [sp, #0x8] _020698CC: add r0, r4, #0x0 bl FreeToHeap ldr r0, [sp, #0x8] add sp, #0x10 pop {r3-r7, pc} .balign 4 _020698D8: .word 0x0000FFFF _020698DC: .word 0x000001FF thumb_func_start FUN_020698E0 FUN_020698E0: ; 0x020698E0 ldr r3, _020698E4 ; =FUN_020698E8 bx r3 .balign 4 _020698E4: .word FUN_020698E8 thumb_func_start FUN_020698E8 FUN_020698E8: ; 0x020698E8 push {r4-r6, lr} sub sp, #0x8 add r4, r1, #0x0 add r6, r2, #0x0 add r1, #0x36 mov r2, #0x0 add r5, r0, #0x0 bl GetBoxMonDataEncrypted add r1, sp, #0x0 strh r0, [r1, #0x4] add r1, r4, #0x0 add r0, r5, #0x0 add r1, #0x3a mov r2, #0x0 bl GetBoxMonDataEncrypted add r1, sp, #0x0 strb r0, [r1, #0x2] add r1, r4, #0x0 add r0, r5, #0x0 add r1, #0x3e mov r2, #0x0 bl GetBoxMonDataEncrypted add r1, sp, #0x0 strb r0, [r1, #0x0] add r1, r6, #0x0 add r0, r5, #0x0 add r1, #0x36 mov r2, #0x0 bl GetBoxMonDataEncrypted add r1, sp, #0x0 strh r0, [r1, #0x6] add r1, r6, #0x0 add r0, r5, #0x0 add r1, #0x3a mov r2, #0x0 bl GetBoxMonDataEncrypted add r1, sp, #0x0 strb r0, [r1, #0x3] add r1, r6, #0x0 add r0, r5, #0x0 add r1, #0x3e mov r2, #0x0 bl GetBoxMonDataEncrypted add r1, sp, #0x0 strb r0, [r1, #0x1] add r1, r4, #0x0 add r2, sp, #0x4 add r0, r5, #0x0 add r1, #0x36 add r2, #0x2 bl SetBoxMonDataEncrypted add r1, r4, #0x0 add r2, sp, #0x0 add r0, r5, #0x0 add r1, #0x3a add r2, #0x3 bl SetBoxMonDataEncrypted add r4, #0x3e add r2, sp, #0x0 add r0, r5, #0x0 add r1, r4, #0x0 add r2, #0x1 bl SetBoxMonDataEncrypted add r1, r6, #0x0 add r0, r5, #0x0 add r1, #0x36 add r2, sp, #0x4 bl SetBoxMonDataEncrypted add r1, r6, #0x0 add r2, sp, #0x0 add r0, r5, #0x0 add r1, #0x3a add r2, #0x2 bl SetBoxMonDataEncrypted add r6, #0x3e add r0, r5, #0x0 add r1, r6, #0x0 add r2, sp, #0x0 bl SetBoxMonDataEncrypted add sp, #0x8 pop {r4-r6, pc} .balign 4 thumb_func_start FUN_020699A4 FUN_020699A4: ; 0x020699A4 push {r3-r7, lr} add r4, r1, #0x0 add r5, r0, #0x0 cmp r4, #0x3 bhs _02069A0A mov r7, #0x0 add r6, sp, #0x0 _020699B2: add r1, r4, #0x0 add r0, r5, #0x0 add r1, #0x37 add r2, r7, #0x0 bl GetMonDataEncrypted add r1, r4, #0x0 strh r0, [r6, #0x2] add r0, r5, #0x0 add r1, #0x3b mov r2, #0x0 bl GetMonDataEncrypted add r1, r4, #0x0 strb r0, [r6, #0x1] add r0, r5, #0x0 add r1, #0x3f mov r2, #0x0 bl GetMonDataEncrypted add r1, r4, #0x0 add r2, sp, #0x0 strb r0, [r6, #0x0] add r0, r5, #0x0 add r1, #0x36 add r2, #0x2 bl SetMonDataEncrypted add r1, r4, #0x0 add r2, sp, #0x0 add r0, r5, #0x0 add r1, #0x3a add r2, #0x1 bl SetMonDataEncrypted add r1, r4, #0x0 add r0, r5, #0x0 add r1, #0x3e add r2, sp, #0x0 bl SetMonDataEncrypted add r4, r4, #0x1 cmp r4, #0x3 blo _020699B2 _02069A0A: mov r1, #0x0 add r0, sp, #0x0 strh r1, [r0, #0x2] strb r1, [r0, #0x1] strb r1, [r0, #0x0] add r2, sp, #0x0 add r0, r5, #0x0 mov r1, #0x39 add r2, #0x2 bl SetMonDataEncrypted add r2, sp, #0x0 add r0, r5, #0x0 mov r1, #0x3d add r2, #0x1 bl SetMonDataEncrypted add r0, r5, #0x0 mov r1, #0x41 add r2, sp, #0x0 bl SetMonDataEncrypted pop {r3-r7, pc} thumb_func_start FUN_02069A38 FUN_02069A38: ; 0x02069A38 push {r3-r7, lr} mov r4, #0x0 add r6, r0, #0x0 add r5, r1, #0x0 add r7, r4, #0x0 _02069A42: add r1, r4, #0x0 add r0, r6, #0x0 add r1, #0x36 add r2, r7, #0x0 bl GetMonDataEncrypted cmp r5, r0 beq _02069A58 add r4, r4, #0x1 cmp r4, #0x4 blt _02069A42 _02069A58: cmp r4, #0x4 beq _02069A60 mov r0, #0x1 pop {r3-r7, pc} _02069A60: mov r0, #0x0 pop {r3-r7, pc} thumb_func_start FUN_02069A64 FUN_02069A64: ; 0x02069A64 push {r4-r5, lr} sub sp, #0x1c add r5, r0, #0x0 add r4, r1, #0x0 mov r0, #0x0 str r0, [sp, #0x0] add r3, r4, #0x0 mov r2, #0x11 _02069A74: ldmia r5!, {r0-r1} stmia r3!, {r0-r1} sub r2, r2, #0x1 bne _02069A74 ldrh r1, [r4, #0x4] lsl r0, r1, #0x1e lsr r0, r0, #0x1f beq _02069A8E mov r0, #0x1 bic r1, r0 mov r0, #0x1 orr r0, r1 strh r0, [r4, #0x4] _02069A8E: add r0, r4, #0x0 mov r1, #0x9f add r2, sp, #0x0 bl SetMonDataEncrypted add r0, r4, #0x0 mov r1, #0xa2 add r2, sp, #0x0 bl SetMonDataEncrypted add r0, r4, #0x0 mov r1, #0xa3 add r2, sp, #0x0 bl SetMonDataEncrypted mov r0, #0x0 bl FUN_020256BC add r5, r0, #0x0 add r0, r4, #0x0 mov r1, #0xa9 add r2, r5, #0x0 bl SetMonDataEncrypted add r0, r5, #0x0 bl FreeToHeap add r0, r4, #0x0 mov r1, #0xa1 add r2, sp, #0x0 bl SetMonDataEncrypted mov r0, #0x0 add r1, sp, #0x4 mov r2, #0x18 bl MIi_CpuClearFast add r0, r4, #0x0 mov r1, #0xaa add r2, sp, #0x4 bl SetMonDataEncrypted add r0, r4, #0x0 bl UpdateMonLevelAndRecalcStats add sp, #0x1c pop {r4-r5, pc} thumb_func_start FUN_02069AEC FUN_02069AEC: ; 0x02069AEC push {r3-r7, lr} str r0, [sp, #0x0] bl FUN_0206B9AC add r7, r0, #0x0 mov r6, #0x1 mov r5, #0x0 cmp r7, #0x0 ble _02069B3C _02069AFE: ldr r0, [sp, #0x0] add r1, r5, #0x0 bl FUN_0206B9B0 mov r1, #0x5 mov r2, #0x0 add r4, r0, #0x0 bl GetMonDataEncrypted cmp r0, #0x0 beq _02069B36 add r0, r4, #0x0 mov r1, #0x4c mov r2, #0x0 bl GetMonDataEncrypted cmp r0, #0x0 bne _02069B36 add r0, r4, #0x0 mov r1, #0xa0 mov r2, #0x0 bl GetMonDataEncrypted lsl r0, r0, #0x18 lsr r0, r0, #0x18 cmp r0, r6 bls _02069B36 add r6, r0, #0x0 _02069B36: add r5, r5, #0x1 cmp r5, r7 blt _02069AFE _02069B3C: add r0, r6, #0x0 pop {r3-r7, pc} thumb_func_start FUN_02069B40 FUN_02069B40: ; 0x02069B40 push {r3, lr} sub sp, #0x8 add r3, r0, #0x0 mov r0, #0x2 str r0, [sp, #0x0] add r0, sp, #0x4 mov r1, #0x6d ; NARC_POKETOOL_POKEZUKAN mov r2, #0x0 lsl r3, r3, #0x1 bl ReadFromNarcMemberByIdPair add r0, sp, #0x4 ldrh r0, [r0, #0x0] add sp, #0x8 pop {r3, pc} .balign 4 thumb_func_start FUN_02069B60 FUN_02069B60: ; 0x02069B60 push {r3, lr} sub sp, #0x8 add r3, r0, #0x0 mov r2, #0x0 add r0, sp, #0x4 strh r2, [r0, #0x0] cmp r3, #0x97 bhi _02069B7E mov r0, #0x2 str r0, [sp, #0x0] add r0, sp, #0x4 mov r1, #0x91 ; NARC_POKETOOL_SHINZUKAN lsl r3, r3, #0x1 bl ReadFromNarcMemberByIdPair _02069B7E: add r0, sp, #0x4 ldrh r0, [r0, #0x0] add sp, #0x8 pop {r3, pc} .balign 4 thumb_func_start FUN_02069B88 FUN_02069B88: ; 0x02069B88 push {r3-r4} add r4, r0, #0x0 add r3, r1, #0x0 mov r2, #0x1d _02069B90: ldmia r4!, {r0-r1} stmia r3!, {r0-r1} sub r2, r2, #0x1 bne _02069B90 ldr r0, [r4, #0x0] str r0, [r3, #0x0] pop {r3-r4} bx lr thumb_func_start FUN_02069BA0 FUN_02069BA0: ; 0x02069BA0 push {r3-r4} add r4, r0, #0x0 add r3, r1, #0x0 mov r2, #0x11 _02069BA8: ldmia r4!, {r0-r1} stmia r3!, {r0-r1} sub r2, r2, #0x1 bne _02069BA8 pop {r3-r4} bx lr thumb_func_start FUN_02069BB4 FUN_02069BB4: ; 0x02069BB4 push {r3-r4} add r4, r0, #0x0 add r3, r1, #0x0 mov r2, #0x11 _02069BBC: ldmia r4!, {r0-r1} stmia r3!, {r0-r1} sub r2, r2, #0x1 bne _02069BBC pop {r3-r4} bx lr thumb_func_start FUN_02069BC8 FUN_02069BC8: ; 0x02069BC8 ldr r3, _02069BCC ; =FUN_02069BD0 bx r3 .balign 4 _02069BCC: .word FUN_02069BD0 thumb_func_start FUN_02069BD0 FUN_02069BD0: ; 0x02069BD0 push {r4, lr} add r4, r1, #0x0 mov r1, #0x0 add r2, r1, #0x0 bl GetBoxMonDataEncrypted add r1, r4, #0x0 bl FUN_02069BE4 pop {r4, pc} thumb_func_start FUN_02069BE4 FUN_02069BE4: ; 0x02069BE4 push {r4, lr} add r4, r1, #0x0 bl GetNatureFromPersonality lsl r1, r0, #0x2 add r1, r0, r1 ldr r0, _02069BF8 ; =UNK_020F7F16 add r0, r0, r1 ldrsb r0, [r4, r0] pop {r4, pc} .balign 4 _02069BF8: .word UNK_020F7F16 thumb_func_start FUN_02069BFC FUN_02069BFC: ; 0x02069BFC push {r3-r7, lr} add r4, r0, #0x0 add r7, r1, #0x0 mov r0, #0x0 mov r1, #0x2c add r5, r2, #0x0 bl AllocFromHeap add r6, r0, #0x0 add r0, r4, #0x0 add r1, r7, #0x0 add r2, r6, #0x0 bl LoadWotbl_HandleAlternateForme ldrh r1, [r6, #0x0] ldr r0, _02069C44 ; =0x0000FFFF mov r4, #0x0 cmp r1, r0 beq _02069C3A ldr r1, _02069C48 ; =0x000001FF ldr r2, _02069C44 ; =0x0000FFFF add r0, r6, #0x0 _02069C28: ldrh r3, [r0, #0x0] add r0, r0, #0x2 add r4, r4, #0x1 and r3, r1 strh r3, [r5, #0x0] ldrh r3, [r0, #0x0] add r5, r5, #0x2 cmp r3, r2 bne _02069C28 _02069C3A: add r0, r6, #0x0 bl FreeToHeap add r0, r4, #0x0 pop {r3-r7, pc} .balign 4 _02069C44: .word 0x0000FFFF _02069C48: .word 0x000001FF thumb_func_start FUN_02069C4C FUN_02069C4C: ; 0x02069C4C push {r3-r7, lr} add r5, r0, #0x0 bl FUN_0206B9AC add r6, r0, #0x0 bl rand_LC mov r1, #0x1 lsl r1, r1, #0xe cmp r0, r1 beq _02069C70 lsl r1, r1, #0x1 cmp r0, r1 beq _02069C70 mov r1, #0x3 lsl r1, r1, #0xe cmp r0, r1 bne _02069CF2 _02069C70: bl rand_LC add r1, r6, #0x0 bl _s32_div_f add r0, r5, #0x0 add r7, r1, #0x0 bl FUN_0206B9B0 mov r1, #0x5 mov r2, #0x0 add r4, r0, #0x0 bl GetMonDataEncrypted cmp r0, #0x0 beq _02069C70 add r0, r4, #0x0 mov r1, #0x4c mov r2, #0x0 bl GetMonDataEncrypted cmp r0, #0x0 bne _02069C70 add r0, r7, #0x0 bl MaskOfFlagNo add r1, r0, #0x0 lsl r1, r1, #0x18 add r0, r5, #0x0 lsr r1, r1, #0x18 bl FUN_02069CF4 cmp r0, #0x0 bne _02069CF2 add r5, sp, #0x0 mov r6, #0x7 _02069CB8: bl rand_LC strb r0, [r5, #0x0] ldrb r2, [r5, #0x0] add r1, r2, #0x0 and r1, r6 beq _02069CB8 mov r0, #0xf0 tst r0, r2 beq _02069CD0 add r0, sp, #0x0 strb r1, [r0, #0x0] _02069CD0: add r1, sp, #0x0 ldrb r2, [r1, #0x0] lsl r0, r2, #0x4 orr r0, r2 strb r0, [r1, #0x0] ldrb r2, [r1, #0x0] mov r0, #0xf3 and r0, r2 strb r0, [r1, #0x0] ldrb r0, [r1, #0x0] add r2, sp, #0x0 add r0, r0, #0x1 strb r0, [r1, #0x0] add r0, r4, #0x0 mov r1, #0x99 bl SetMonDataEncrypted _02069CF2: pop {r3-r7, pc} thumb_func_start FUN_02069CF4 FUN_02069CF4: ; 0x02069CF4 push {r3-r7, lr} mov r6, #0x0 add r5, r1, #0x0 str r0, [sp, #0x0] mov r4, #0x1 add r7, r6, #0x0 cmp r5, #0x0 beq _02069D32 _02069D04: mov r0, #0x1 tst r0, r5 beq _02069D26 ldr r0, [sp, #0x0] add r1, r6, #0x0 bl FUN_0206B9B0 mov r1, #0x99 mov r2, #0x0 bl GetMonDataEncrypted cmp r0, #0x0 beq _02069D26 add r0, r7, #0x0 orr r0, r4 lsl r0, r0, #0x18 lsr r7, r0, #0x18 _02069D26: lsl r0, r5, #0x17 add r6, r6, #0x1 lsl r4, r4, #0x1 lsr r5, r0, #0x18 bne _02069D04 b _02069D4A _02069D32: add r1, r6, #0x0 bl FUN_0206B9B0 mov r1, #0x99 add r2, r6, #0x0 bl GetMonDataEncrypted cmp r0, #0x0 beq _02069D4A add r0, r7, #0x1 lsl r0, r0, #0x18 lsr r7, r0, #0x18 _02069D4A: add r0, r7, #0x0 pop {r3-r7, pc} .balign 4 thumb_func_start FUN_02069D50 FUN_02069D50: ; 0x02069D50 push {r4-r7, lr} sub sp, #0xc str r0, [sp, #0x0] add r5, r1, #0x0 bl FUN_0206B9AC mov r6, #0x0 str r0, [sp, #0x4] cmp r0, #0x0 ble _02069DC2 add r4, sp, #0x8 _02069D66: ldr r0, [sp, #0x0] add r1, r6, #0x0 bl FUN_0206B9B0 mov r1, #0x5 mov r2, #0x0 add r7, r0, #0x0 bl GetMonDataEncrypted cmp r0, #0x0 beq _02069DBA add r0, r7, #0x0 mov r1, #0x99 mov r2, #0x0 bl GetMonDataEncrypted strb r0, [r4, #0x0] ldrb r1, [r4, #0x0] mov r0, #0xf and r0, r1 beq _02069DBA cmp r0, r5 blt _02069D98 cmp r5, #0x4 ble _02069DA2 _02069D98: ldrb r1, [r4, #0x0] mov r0, #0xf0 and r0, r1 strb r0, [r4, #0x0] b _02069DA6 _02069DA2: sub r0, r1, r5 strb r0, [r4, #0x0] _02069DA6: ldrb r0, [r4, #0x0] cmp r0, #0x0 bne _02069DB0 mov r0, #0x10 strb r0, [r4, #0x0] _02069DB0: add r0, r7, #0x0 mov r1, #0x99 add r2, sp, #0x8 bl SetMonDataEncrypted _02069DBA: ldr r0, [sp, #0x4] add r6, r6, #0x1 cmp r6, r0 blt _02069D66 _02069DC2: add sp, #0xc pop {r4-r7, pc} .balign 4 thumb_func_start FUN_02069DC8 FUN_02069DC8: ; 0x02069DC8 push {r3-r7, lr} sub sp, #0x8 add r5, r0, #0x0 bl FUN_0206B9AC add r7, r0, #0x0 bl rand_LC mov r1, #0x3 bl _s32_div_f cmp r1, #0x0 bne _02069E70 mov r4, #0x0 cmp r7, #0x0 ble _02069E70 sub r0, r7, #0x1 str r0, [sp, #0x0] _02069DEC: add r0, r5, #0x0 add r1, r4, #0x0 bl FUN_0206B9B0 mov r1, #0x5 mov r2, #0x0 add r6, r0, #0x0 bl GetMonDataEncrypted cmp r0, #0x0 beq _02069E6A add r0, r6, #0x0 mov r1, #0x99 mov r2, #0x0 bl GetMonDataEncrypted add r1, sp, #0x4 strb r0, [r1, #0x0] add r0, r1, #0x0 ldrb r1, [r0, #0x0] mov r0, #0xf tst r0, r1 beq _02069E6A cmp r4, #0x0 beq _02069E40 add r0, r5, #0x0 sub r1, r4, #0x1 bl FUN_0206B9B0 mov r1, #0x99 mov r2, #0x0 add r6, r0, #0x0 bl GetMonDataEncrypted mov r1, #0xf0 tst r0, r1 bne _02069E40 add r0, r6, #0x0 mov r1, #0x99 add r2, sp, #0x4 bl SetMonDataEncrypted _02069E40: ldr r0, [sp, #0x0] cmp r4, r0 bge _02069E6A add r0, r5, #0x0 add r1, r4, #0x1 bl FUN_0206B9B0 mov r1, #0x99 mov r2, #0x0 add r6, r0, #0x0 bl GetMonDataEncrypted mov r1, #0xf0 tst r0, r1 bne _02069E6A add r0, r6, #0x0 mov r1, #0x99 add r2, sp, #0x4 bl SetMonDataEncrypted add r4, r4, #0x1 _02069E6A: add r4, r4, #0x1 cmp r4, r7 blt _02069DEC _02069E70: add sp, #0x8 pop {r3-r7, pc} thumb_func_start FUN_02069E74 FUN_02069E74: ; 0x02069E74 ldr r3, _02069E78 ; =FUN_02069E7C bx r3 .balign 4 _02069E78: .word FUN_02069E7C thumb_func_start FUN_02069E7C FUN_02069E7C: ; 0x02069E7C push {r3, lr} mov r1, #0x99 mov r2, #0x0 bl GetBoxMonDataEncrypted mov r1, #0xf tst r0, r1 beq _02069E90 mov r0, #0x1 pop {r3, pc} _02069E90: mov r0, #0x0 pop {r3, pc} thumb_func_start FUN_02069E94 FUN_02069E94: ; 0x02069E94 ldr r3, _02069E98 ; =FUN_02069E9C bx r3 .balign 4 _02069E98: .word FUN_02069E9C thumb_func_start FUN_02069E9C FUN_02069E9C: ; 0x02069E9C push {r3, lr} mov r1, #0x99 mov r2, #0x0 bl GetBoxMonDataEncrypted lsl r0, r0, #0x18 lsr r1, r0, #0x18 mov r0, #0xf tst r0, r1 beq _02069EB4 mov r0, #0x0 pop {r3, pc} _02069EB4: mov r0, #0xf0 tst r0, r1 beq _02069EBE mov r0, #0x1 pop {r3, pc} _02069EBE: mov r0, #0x0 pop {r3, pc} .balign 4 thumb_func_start FUN_02069EC4 FUN_02069EC4: ; 0x02069EC4 ldr r3, _02069EC8 ; =FUN_02069ECC bx r3 .balign 4 _02069EC8: .word FUN_02069ECC thumb_func_start FUN_02069ECC FUN_02069ECC: ; 0x02069ECC push {r3-r6, lr} sub sp, #0x4 add r5, r0, #0x0 mov r1, #0x5 mov r2, #0x0 bl GetBoxMonDataEncrypted add r4, r0, #0x0 add r0, r5, #0x0 mov r1, #0xa mov r2, #0x0 bl GetBoxMonDataEncrypted add r6, r0, #0x0 add r0, r5, #0x0 mov r1, #0x6 mov r2, #0x0 bl GetBoxMonDataEncrypted ldr r1, _02069F20 ; =SPECIES_ARCEUS cmp r4, r1 bne _02069F1C cmp r6, #0x79 bne _02069F1C lsl r0, r0, #0x10 lsr r0, r0, #0x10 mov r1, #0x1 mov r2, #0x0 bl FUN_0206E7B8 lsl r0, r0, #0x10 lsr r0, r0, #0x10 bl GetArceusTypeByPlate str r0, [sp, #0x0] add r0, r5, #0x0 mov r1, #0x70 add r2, sp, #0x0 bl SetBoxMonDataEncrypted _02069F1C: add sp, #0x4 pop {r3-r6, pc} .balign 4 _02069F20: .word SPECIES_ARCEUS thumb_func_start GetArceusTypeByPlate GetArceusTypeByPlate: ; 0x02069F24 sub r0, #0x7d cmp r0, #0xf bhi _02069F96 add r0, r0, r0 add r0, pc ldrh r0, [r0, #0x6] lsl r0, r0, #0x10 asr r0, r0, #0x10 add pc, r0 _02069F36: ; jump table (using 16-bit offset) .short _02069F56 - _02069F36 - 2; case 0 .short _02069F5A - _02069F36 - 2; case 1 .short _02069F5E - _02069F36 - 2; case 2 .short _02069F62 - _02069F36 - 2; case 3 .short _02069F66 - _02069F36 - 2; case 4 .short _02069F6A - _02069F36 - 2; case 5 .short _02069F6E - _02069F36 - 2; case 6 .short _02069F72 - _02069F36 - 2; case 7 .short _02069F76 - _02069F36 - 2; case 8 .short _02069F7A - _02069F36 - 2; case 9 .short _02069F7E - _02069F36 - 2; case 10 .short _02069F82 - _02069F36 - 2; case 11 .short _02069F86 - _02069F36 - 2; case 12 .short _02069F8A - _02069F36 - 2; case 13 .short _02069F8E - _02069F36 - 2; case 14 .short _02069F92 - _02069F36 - 2; case 15 _02069F56: mov r0, #0xa bx lr _02069F5A: mov r0, #0xb bx lr _02069F5E: mov r0, #0xd bx lr _02069F62: mov r0, #0xc bx lr _02069F66: mov r0, #0xf bx lr _02069F6A: mov r0, #0x1 bx lr _02069F6E: mov r0, #0x3 bx lr _02069F72: mov r0, #0x4 bx lr _02069F76: mov r0, #0x2 bx lr _02069F7A: mov r0, #0xe bx lr _02069F7E: mov r0, #0x6 bx lr _02069F82: mov r0, #0x5 bx lr _02069F86: mov r0, #0x7 bx lr _02069F8A: mov r0, #0x10 bx lr _02069F8E: mov r0, #0x11 bx lr _02069F92: mov r0, #0x8 bx lr _02069F96: mov r0, #0x0 bx lr .balign 4 thumb_func_start LoadWotbl_HandleAlternateForme LoadWotbl_HandleAlternateForme: ; 0x02069F9C push {r4, lr} add r4, r2, #0x0 bl ResolveMonForme add r2, r0, #0x0 add r0, r4, #0x0 mov r1, #0x21 ; NARC_POKETOOL_PERSONAL_WOTBL bl ReadWholeNarcMemberByIdPair pop {r4, pc} thumb_func_start FUN_02069FB0 FUN_02069FB0: ; 0x02069FB0 push {r3-r7, lr} add r7, r0, #0x0 ldr r0, _0206A010 ; =0x000001B9 add r4, r2, #0x0 add r5, r1, #0x0 add r6, r3, #0x0 cmp r4, r0 bne _02069FFC add r0, r5, #0x0 bl FUN_02005F14 cmp r0, #0x0 bne _02069FE2 mov r0, #0x1 bl FUN_02005E80 ldr r0, [sp, #0x20] ldr r3, [sp, #0x18] str r0, [sp, #0x0] add r0, r5, #0x0 add r1, r4, #0x0 add r2, r6, #0x0 bl FUN_020056AC pop {r3-r7, pc} _02069FE2: ldr r0, [sp, #0x1c] cmp r0, #0x0 beq _02069FEE mov r0, #0x1 bl FUN_02005E80 _02069FEE: ldr r2, [sp, #0x18] add r0, r7, #0x0 mov r1, #0x0 add r3, r6, #0x0 bl FUN_02005E90 pop {r3-r7, pc} _02069FFC: ldr r0, [sp, #0x20] ldr r3, [sp, #0x18] str r0, [sp, #0x0] add r0, r5, #0x0 add r1, r4, #0x0 add r2, r6, #0x0 bl FUN_020056AC pop {r3-r7, pc} nop _0206A010: .word 0x000001B9 thumb_func_start FUN_0206A014 FUN_0206A014: ; 0x0206A014 push {r3-r6, lr} sub sp, #0xc ldr r6, [sp, #0x20] add r5, r0, #0x0 str r6, [sp, #0x0] ldr r6, [sp, #0x24] add r4, r2, #0x0 str r6, [sp, #0x4] bl FUN_0206A054 cmp r4, #0xe bne _0206A050 add r0, r5, #0x0 mov r1, #0xa3 mov r2, #0x0 bl GetMonDataEncrypted str r0, [sp, #0x8] add r0, r5, #0x0 mov r1, #0xa2 add r2, sp, #0x8 bl SetMonDataEncrypted mov r0, #0x0 str r0, [sp, #0x8] add r0, r5, #0x0 mov r1, #0x9f add r2, sp, #0x8 bl SetMonDataEncrypted _0206A050: add sp, #0xc pop {r3-r6, pc} thumb_func_start FUN_0206A054 FUN_0206A054: ; 0x0206A054 push {r0-r3} push {r3-r4, lr} sub sp, #0x4 ldr r2, [sp, #0x24] add r4, r0, #0x0 str r2, [sp, #0x0] mov r2, #0x0 bl FUN_020808AC ldr r2, _0206A090 ; =gGameVersion add r0, r4, #0x0 mov r1, #0x79 bl SetBoxMonDataEncrypted add r0, r4, #0x0 mov r1, #0x9a add r2, sp, #0x18 bl SetBoxMonDataEncrypted add r0, r4, #0x0 mov r1, #0x9d add r2, sp, #0x20 bl SetBoxMonDataEncrypted add sp, #0x4 pop {r3-r4} pop {r3} add sp, #0x10 bx r3 nop _0206A090: .word gGameVersion thumb_func_start FUN_0206A094 FUN_0206A094: ; 0x0206A094 push {r3-r7, lr} sub sp, #0x8 add r5, r0, #0x0 mov r0, #0x81 add r7, r2, #0x0 tst r0, r1 bne _0206A12E bl rand_LC mov r1, #0x64 bl _s32_div_f add r4, r1, #0x0 add r0, r5, #0x0 mov r1, #0x5 mov r2, #0x0 bl GetMonDataEncrypted lsl r0, r0, #0x10 lsr r6, r0, #0x10 add r0, r5, #0x0 mov r1, #0x70 mov r2, #0x0 bl GetMonDataEncrypted lsl r0, r0, #0x10 lsr r0, r0, #0x10 str r0, [sp, #0x0] ldr r1, [sp, #0x0] add r0, r6, #0x0 mov r2, #0x10 bl GetMonBaseStat_HandleFormeConversion add r1, sp, #0x4 strh r0, [r1, #0x2] ldr r1, [sp, #0x0] add r0, r6, #0x0 mov r2, #0x11 bl GetMonBaseStat_HandleFormeConversion add r1, sp, #0x4 strh r0, [r1, #0x0] ldrh r2, [r1, #0x2] ldrh r0, [r1, #0x0] cmp r2, r0 bne _0206A104 cmp r2, #0x0 beq _0206A104 add r2, sp, #0x4 add r0, r5, #0x0 mov r1, #0x6 add r2, #0x2 bl SetMonDataEncrypted add sp, #0x8 pop {r3-r7, pc} _0206A104: ldr r0, _0206A134 ; =sItemOdds lsl r1, r7, #0x2 ldrh r0, [r0, r1] cmp r4, r0 blo _0206A12E ldr r0, _0206A138 ; =sItemOdds + 2 ldrh r0, [r0, r1] cmp r4, r0 add r2, sp, #0x4 bhs _0206A126 add r0, r5, #0x0 mov r1, #0x6 add r2, #0x2 bl SetMonDataEncrypted add sp, #0x8 pop {r3-r7, pc} _0206A126: add r0, r5, #0x0 mov r1, #0x6 bl SetMonDataEncrypted _0206A12E: add sp, #0x8 pop {r3-r7, pc} nop _0206A134: .word sItemOdds _0206A138: .word sItemOdds + 2 thumb_func_start FUN_0206A13C FUN_0206A13C: ; 0x0206A13C ldr r3, _0206A140 ; =FUN_0206A144 bx r3 .balign 4 _0206A140: .word FUN_0206A144 thumb_func_start FUN_0206A144 FUN_0206A144: ; 0x0206A144 push {r4-r6, lr} add r6, r1, #0x0 mov r1, #0xad mov r2, #0x0 add r5, r0, #0x0 bl GetBoxMonDataEncrypted lsl r0, r0, #0x10 lsr r4, r0, #0x10 add r0, r5, #0x0 mov r1, #0x70 mov r2, #0x0 bl GetBoxMonDataEncrypted add r1, r0, #0x0 add r0, r4, #0x0 add r2, r6, #0x0 bl FUN_0206A16C pop {r4-r6, pc} thumb_func_start FUN_0206A16C FUN_0206A16C: ; 0x0206A16C push {r4, lr} ldr r3, _0206A1C0 ; =SPECIES_EGG cmp r0, r3 bne _0206A178 mov r0, #0x0 pop {r4, pc} _0206A178: cmp r2, #0x20 bhs _0206A186 mov r3, #0x1 add r4, r3, #0x0 lsl r4, r2 mov r2, #0x1d b _0206A1B0 _0206A186: cmp r2, #0x40 bhs _0206A196 mov r3, #0x1 sub r2, #0x20 add r4, r3, #0x0 lsl r4, r2 mov r2, #0x1e b _0206A1B0 _0206A196: cmp r2, #0x60 bhs _0206A1A6 mov r3, #0x1 sub r2, #0x40 add r4, r3, #0x0 lsl r4, r2 mov r2, #0x1f b _0206A1B0 _0206A1A6: mov r3, #0x1 sub r2, #0x60 add r4, r3, #0x0 lsl r4, r2 mov r2, #0x20 _0206A1B0: bl GetMonBaseStat_HandleFormeConversion tst r0, r4 beq _0206A1BC mov r0, #0x1 pop {r4, pc} _0206A1BC: mov r0, #0x0 pop {r4, pc} .balign 4 _0206A1C0: .word SPECIES_EGG thumb_func_start FUN_0206A1C4 FUN_0206A1C4: ; 0x0206A1C4 ldr r3, _0206A1C8 ; =FUN_0206A1CC bx r3 .balign 4 _0206A1C8: .word FUN_0206A1CC thumb_func_start FUN_0206A1CC FUN_0206A1CC: ; 0x0206A1CC push {r3-r7, lr} sub sp, #0x8 add r5, r0, #0x0 bl TryDecryptBoxMon add r7, r0, #0x0 add r0, r5, #0x0 mov r1, #0x5 mov r2, #0x0 bl GetBoxMonDataEncrypted mov r1, #0x0 add r4, r0, #0x0 add r0, r5, #0x0 add r2, r1, #0x0 bl GetBoxMonDataEncrypted add r6, r0, #0x0 add r0, r4, #0x0 mov r1, #0x18 bl GetMonBaseStat str r0, [sp, #0x4] add r0, r4, #0x0 mov r1, #0x19 bl GetMonBaseStat str r0, [sp, #0x0] cmp r0, #0x0 beq _0206A226 mov r0, #0x1 tst r0, r6 beq _0206A21A add r0, r5, #0x0 mov r1, #0xa add r2, sp, #0x0 bl SetBoxMonDataEncrypted b _0206A230 _0206A21A: add r0, r5, #0x0 mov r1, #0xa add r2, sp, #0x4 bl SetBoxMonDataEncrypted b _0206A230 _0206A226: add r0, r5, #0x0 mov r1, #0xa add r2, sp, #0x4 bl SetBoxMonDataEncrypted _0206A230: add r0, r5, #0x0 add r1, r7, #0x0 bl TryEncryptBoxMon add sp, #0x8 pop {r3-r7, pc} thumb_func_start FUN_0206A23C FUN_0206A23C: ; 0x0206A23C push {r4-r7, lr} sub sp, #0x1c add r5, r0, #0x0 mov r0, #0x0 str r1, [sp, #0x0] bl AllocMonZeroed str r0, [sp, #0x4] ldr r1, [sp, #0x4] add r0, r5, #0x0 bl FUN_02069B88 ldr r0, [sp, #0x4] ldr r1, [r5, #0x0] mov r2, #0x0 bl GetSubstruct add r4, r0, #0x0 ldr r0, [sp, #0x4] ldr r1, [r5, #0x0] mov r2, #0x1 bl GetSubstruct add r6, r0, #0x0 ldr r0, [sp, #0x4] ldr r1, [r5, #0x0] mov r2, #0x2 bl GetSubstruct add r7, r0, #0x0 ldr r0, [sp, #0x4] ldr r1, [r5, #0x0] mov r2, #0x3 bl GetSubstruct str r0, [sp, #0x8] ldr r1, [sp, #0x0] add r0, r5, #0x0 mov r2, #0x0 bl GetSubstruct str r0, [sp, #0xc] ldr r1, [sp, #0x0] add r0, r5, #0x0 mov r2, #0x1 bl GetSubstruct str r0, [sp, #0x10] ldr r1, [sp, #0x0] add r0, r5, #0x0 mov r2, #0x2 bl GetSubstruct str r0, [sp, #0x14] ldr r1, [sp, #0x0] add r0, r5, #0x0 mov r2, #0x3 bl GetSubstruct ldr r2, [sp, #0x4] str r0, [sp, #0x18] ldr r0, [sp, #0x4] ldrh r2, [r2, #0x6] add r0, #0x8 mov r1, #0x80 bl MonDecryptSegment add r0, r5, #0x0 ldr r2, [r5, #0x0] add r0, #0x88 mov r1, #0x64 bl MonDecryptSegment add r0, r5, #0x0 ldrh r2, [r5, #0x6] add r0, #0x8 mov r1, #0x80 bl MonDecryptSegment ldr r0, [sp, #0x0] str r0, [r5, #0x0] ldr r2, [sp, #0xc] ldmia r4!, {r0-r1} stmia r2!, {r0-r1} str r2, [sp, #0xc] ldmia r4!, {r0-r1} stmia r2!, {r0-r1} str r2, [sp, #0xc] ldmia r4!, {r0-r1} stmia r2!, {r0-r1} str r2, [sp, #0xc] ldmia r4!, {r0-r1} stmia r2!, {r0-r1} str r2, [sp, #0xc] ldr r2, [sp, #0x10] ldmia r6!, {r0-r1} stmia r2!, {r0-r1} str r2, [sp, #0x10] ldmia r6!, {r0-r1} stmia r2!, {r0-r1} str r2, [sp, #0x10] ldmia r6!, {r0-r1} stmia r2!, {r0-r1} str r2, [sp, #0x10] ldmia r6!, {r0-r1} stmia r2!, {r0-r1} str r2, [sp, #0x10] ldr r2, [sp, #0x14] ldmia r7!, {r0-r1} stmia r2!, {r0-r1} str r2, [sp, #0x14] ldmia r7!, {r0-r1} stmia r2!, {r0-r1} str r2, [sp, #0x14] ldmia r7!, {r0-r1} stmia r2!, {r0-r1} str r2, [sp, #0x14] ldmia r7!, {r0-r1} stmia r2!, {r0-r1} str r2, [sp, #0x14] mov r0, #0x10 _0206A32E: ldr r1, [sp, #0x8] ldrh r2, [r1, #0x0] add r1, r1, #0x2 str r1, [sp, #0x8] ldr r1, [sp, #0x18] strh r2, [r1, #0x0] add r1, r1, #0x2 str r1, [sp, #0x18] sub r0, r0, #0x1 bne _0206A32E add r0, r5, #0x0 add r0, #0x8 mov r1, #0x80 bl CalcMonChecksum strh r0, [r5, #0x6] add r0, r5, #0x0 ldrh r2, [r5, #0x6] add r0, #0x8 mov r1, #0x80 bl MonEncryptSegment add r0, r5, #0x0 ldr r2, [r5, #0x0] add r0, #0x88 mov r1, #0x64 bl MonEncryptSegment ldr r0, [sp, #0x4] bl FreeToHeap add sp, #0x1c pop {r4-r7, pc} thumb_func_start LoadMonPersonal LoadMonPersonal: ; 0x0206A370 ldr r3, _0206A37C ; =ReadWholeNarcMemberByIdPair add r2, r0, #0x0 add r0, r1, #0x0 mov r1, #0x2 ; NARC_POKETOOL_PERSONAL_PERSONAL bx r3 nop _0206A37C: .word ReadWholeNarcMemberByIdPair thumb_func_start LoadMonBaseStats_HandleAlternateForme LoadMonBaseStats_HandleAlternateForme: ; 0x0206A380 push {r4, lr} add r4, r2, #0x0 bl ResolveMonForme add r2, r0, #0x0 add r0, r4, #0x0 mov r1, #0x2 ; NARC_POKETOOL_PERSONAL_PERSONAL bl ReadWholeNarcMemberByIdPair pop {r4, pc} thumb_func_start LoadMonEvolutionTable LoadMonEvolutionTable: ; 0x0206A394 ldr r3, _0206A3A0 ; =ReadWholeNarcMemberByIdPair add r2, r0, #0x0 add r0, r1, #0x0 mov r1, #0x22 ; NARC_POKETOOL_PERSONAL_EVO bx r3 nop _0206A3A0: .word ReadWholeNarcMemberByIdPair thumb_func_start MonEncryptSegment MonEncryptSegment: ; 0x0206A3A4 push {r0-r3} push {r3-r7, lr} add r5, r0, #0x0 mov r4, #0x0 lsr r6, r1, #0x1 beq _0206A3C6 add r7, sp, #0x20 _0206A3B2: add r0, r7, #0x0 bl MonEncryptionLCRNG ldrh r1, [r5, #0x0] add r4, r4, #0x1 eor r0, r1 strh r0, [r5, #0x0] add r5, r5, #0x2 cmp r4, r6 blo _0206A3B2 _0206A3C6: pop {r3-r7} pop {r3} add sp, #0x10 bx r3 .balign 4 thumb_func_start MonDecryptSegment MonDecryptSegment: ; 0x0206A3D0 ldr r3, _0206A3D4 ; =MonEncryptSegment bx r3 .balign 4 _0206A3D4: .word MonEncryptSegment thumb_func_start MonEncryptionLCRNG MonEncryptionLCRNG: ; 0x0206A3D8 ldr r2, [r0, #0x0] ldr r1, _0206A3F0 ; =0x41C64E6D add r3, r2, #0x0 mul r3, r1 ldr r1, _0206A3F4 ; =0x00006073 add r1, r3, r1 str r1, [r0, #0x0] lsr r0, r1, #0x10 lsl r0, r0, #0x10 lsr r0, r0, #0x10 bx lr nop _0206A3F0: .word 0x41C64E6D _0206A3F4: .word 0x00006073 thumb_func_start CalcMonChecksum CalcMonChecksum: ; 0x0206A3F8 push {r3-r4} mov r3, #0x0 add r2, r3, #0x0 lsr r4, r1, #0x1 beq _0206A412 _0206A402: ldrh r1, [r0, #0x0] add r2, r2, #0x1 add r0, r0, #0x2 add r1, r3, r1 lsl r1, r1, #0x10 lsr r3, r1, #0x10 cmp r2, r4 blo _0206A402 _0206A412: add r0, r3, #0x0 pop {r3-r4} bx lr thumb_func_start GetSubstruct GetSubstruct: ; 0x0206A418 push {r3, lr} mov r3, #0x3e lsl r3, r3, #0xc and r3, r1 lsr r3, r3, #0xd cmp r3, #0x1f bhi _0206A478 add r3, r3, r3 add r3, pc ldrh r3, [r3, #0x6] lsl r3, r3, #0x10 asr r3, r3, #0x10 add pc, r3 _0206A432: ; jump table (using 16-bit offset) .short _0206A472 - _0206A432 - 2; case 0 .short _0206A4A4 - _0206A432 - 2; case 1 .short _0206A4D4 - _0206A432 - 2; case 2 .short _0206A504 - _0206A432 - 2; case 3 .short _0206A534 - _0206A432 - 2; case 4 .short _0206A564 - _0206A432 - 2; case 5 .short _0206A594 - _0206A432 - 2; case 6 .short _0206A5C6 - _0206A432 - 2; case 7 .short _0206A5F6 - _0206A432 - 2; case 8 .short _0206A626 - _0206A432 - 2; case 9 .short _0206A656 - _0206A432 - 2; case 10 .short _0206A686 - _0206A432 - 2; case 11 .short _0206A6B6 - _0206A432 - 2; case 12 .short _0206A6E8 - _0206A432 - 2; case 13 .short _0206A718 - _0206A432 - 2; case 14 .short _0206A748 - _0206A432 - 2; case 15 .short _0206A778 - _0206A432 - 2; case 16 .short _0206A7A8 - _0206A432 - 2; case 17 .short _0206A7D8 - _0206A432 - 2; case 18 .short _0206A80A - _0206A432 - 2; case 19 .short _0206A83A - _0206A432 - 2; case 20 .short _0206A86A - _0206A432 - 2; case 21 .short _0206A89A - _0206A432 - 2; case 22 .short _0206A8CA - _0206A432 - 2; case 23 .short _0206A472 - _0206A432 - 2; case 24 .short _0206A4A4 - _0206A432 - 2; case 25 .short _0206A4D4 - _0206A432 - 2; case 26 .short _0206A504 - _0206A432 - 2; case 27 .short _0206A534 - _0206A432 - 2; case 28 .short _0206A564 - _0206A432 - 2; case 29 .short _0206A594 - _0206A432 - 2; case 30 .short _0206A5C6 - _0206A432 - 2; case 31 _0206A472: add r0, #0x8 cmp r2, #0x3 bls _0206A47A _0206A478: b _0206A8F8 _0206A47A: add r2, r2, r2 add r2, pc ldrh r2, [r2, #0x6] lsl r2, r2, #0x10 asr r2, r2, #0x10 add pc, r2 _0206A486: ; jump table (using 16-bit offset) .short _0206A48E - _0206A486 - 2; case 0 .short _0206A492 - _0206A486 - 2; case 1 .short _0206A498 - _0206A486 - 2; case 2 .short _0206A49E - _0206A486 - 2; case 3 _0206A48E: add r1, r0, #0x0 b _0206A8F8 _0206A492: add r1, r0, #0x0 add r1, #0x20 b _0206A8F8 _0206A498: add r1, r0, #0x0 add r1, #0x40 b _0206A8F8 _0206A49E: add r1, r0, #0x0 add r1, #0x60 b _0206A8F8 _0206A4A4: add r0, #0x8 cmp r2, #0x3 bhi _0206A59A add r2, r2, r2 add r2, pc ldrh r2, [r2, #0x6] lsl r2, r2, #0x10 asr r2, r2, #0x10 add pc, r2 _0206A4B6: ; jump table (using 16-bit offset) .short _0206A4BE - _0206A4B6 - 2; case 0 .short _0206A4C2 - _0206A4B6 - 2; case 1 .short _0206A4C8 - _0206A4B6 - 2; case 2 .short _0206A4CE - _0206A4B6 - 2; case 3 _0206A4BE: add r1, r0, #0x0 b _0206A8F8 _0206A4C2: add r1, r0, #0x0 add r1, #0x20 b _0206A8F8 _0206A4C8: add r1, r0, #0x0 add r1, #0x60 b _0206A8F8 _0206A4CE: add r1, r0, #0x0 add r1, #0x40 b _0206A8F8 _0206A4D4: add r0, #0x8 cmp r2, #0x3 bhi _0206A59A add r2, r2, r2 add r2, pc ldrh r2, [r2, #0x6] lsl r2, r2, #0x10 asr r2, r2, #0x10 add pc, r2 _0206A4E6: ; jump table (using 16-bit offset) .short _0206A4EE - _0206A4E6 - 2; case 0 .short _0206A4F2 - _0206A4E6 - 2; case 1 .short _0206A4F8 - _0206A4E6 - 2; case 2 .short _0206A4FE - _0206A4E6 - 2; case 3 _0206A4EE: add r1, r0, #0x0 b _0206A8F8 _0206A4F2: add r1, r0, #0x0 add r1, #0x40 b _0206A8F8 _0206A4F8: add r1, r0, #0x0 add r1, #0x20 b _0206A8F8 _0206A4FE: add r1, r0, #0x0 add r1, #0x60 b _0206A8F8 _0206A504: add r0, #0x8 cmp r2, #0x3 bhi _0206A59A add r2, r2, r2 add r2, pc ldrh r2, [r2, #0x6] lsl r2, r2, #0x10 asr r2, r2, #0x10 add pc, r2 _0206A516: ; jump table (using 16-bit offset) .short _0206A51E - _0206A516 - 2; case 0 .short _0206A522 - _0206A516 - 2; case 1 .short _0206A528 - _0206A516 - 2; case 2 .short _0206A52E - _0206A516 - 2; case 3 _0206A51E: add r1, r0, #0x0 b _0206A8F8 _0206A522: add r1, r0, #0x0 add r1, #0x60 b _0206A8F8 _0206A528: add r1, r0, #0x0 add r1, #0x20 b _0206A8F8 _0206A52E: add r1, r0, #0x0 add r1, #0x40 b _0206A8F8 _0206A534: add r0, #0x8 cmp r2, #0x3 bhi _0206A59A add r2, r2, r2 add r2, pc ldrh r2, [r2, #0x6] lsl r2, r2, #0x10 asr r2, r2, #0x10 add pc, r2 _0206A546: ; jump table (using 16-bit offset) .short _0206A54E - _0206A546 - 2; case 0 .short _0206A552 - _0206A546 - 2; case 1 .short _0206A558 - _0206A546 - 2; case 2 .short _0206A55E - _0206A546 - 2; case 3 _0206A54E: add r1, r0, #0x0 b _0206A8F8 _0206A552: add r1, r0, #0x0 add r1, #0x40 b _0206A8F8 _0206A558: add r1, r0, #0x0 add r1, #0x60 b _0206A8F8 _0206A55E: add r1, r0, #0x0 add r1, #0x20 b _0206A8F8 _0206A564: add r0, #0x8 cmp r2, #0x3 bhi _0206A59A add r2, r2, r2 add r2, pc ldrh r2, [r2, #0x6] lsl r2, r2, #0x10 asr r2, r2, #0x10 add pc, r2 _0206A576: ; jump table (using 16-bit offset) .short _0206A57E - _0206A576 - 2; case 0 .short _0206A582 - _0206A576 - 2; case 1 .short _0206A588 - _0206A576 - 2; case 2 .short _0206A58E - _0206A576 - 2; case 3 _0206A57E: add r1, r0, #0x0 b _0206A8F8 _0206A582: add r1, r0, #0x0 add r1, #0x60 b _0206A8F8 _0206A588: add r1, r0, #0x0 add r1, #0x40 b _0206A8F8 _0206A58E: add r1, r0, #0x0 add r1, #0x20 b _0206A8F8 _0206A594: add r0, #0x8 cmp r2, #0x3 bls _0206A59C _0206A59A: b _0206A8F8 _0206A59C: add r2, r2, r2 add r2, pc ldrh r2, [r2, #0x6] lsl r2, r2, #0x10 asr r2, r2, #0x10 add pc, r2 _0206A5A8: ; jump table (using 16-bit offset) .short _0206A5B0 - _0206A5A8 - 2; case 0 .short _0206A5B6 - _0206A5A8 - 2; case 1 .short _0206A5BA - _0206A5A8 - 2; case 2 .short _0206A5C0 - _0206A5A8 - 2; case 3 _0206A5B0: add r1, r0, #0x0 add r1, #0x20 b _0206A8F8 _0206A5B6: add r1, r0, #0x0 b _0206A8F8 _0206A5BA: add r1, r0, #0x0 add r1, #0x40 b _0206A8F8 _0206A5C0: add r1, r0, #0x0 add r1, #0x60 b _0206A8F8 _0206A5C6: add r0, #0x8 cmp r2, #0x3 bhi _0206A6BC add r2, r2, r2 add r2, pc ldrh r2, [r2, #0x6] lsl r2, r2, #0x10 asr r2, r2, #0x10 add pc, r2 _0206A5D8: ; jump table (using 16-bit offset) .short _0206A5E0 - _0206A5D8 - 2; case 0 .short _0206A5E6 - _0206A5D8 - 2; case 1 .short _0206A5EA - _0206A5D8 - 2; case 2 .short _0206A5F0 - _0206A5D8 - 2; case 3 _0206A5E0: add r1, r0, #0x0 add r1, #0x20 b _0206A8F8 _0206A5E6: add r1, r0, #0x0 b _0206A8F8 _0206A5EA: add r1, r0, #0x0 add r1, #0x60 b _0206A8F8 _0206A5F0: add r1, r0, #0x0 add r1, #0x40 b _0206A8F8 _0206A5F6: add r0, #0x8 cmp r2, #0x3 bhi _0206A6BC add r2, r2, r2 add r2, pc ldrh r2, [r2, #0x6] lsl r2, r2, #0x10 asr r2, r2, #0x10 add pc, r2 _0206A608: ; jump table (using 16-bit offset) .short _0206A610 - _0206A608 - 2; case 0 .short _0206A616 - _0206A608 - 2; case 1 .short _0206A61A - _0206A608 - 2; case 2 .short _0206A620 - _0206A608 - 2; case 3 _0206A610: add r1, r0, #0x0 add r1, #0x40 b _0206A8F8 _0206A616: add r1, r0, #0x0 b _0206A8F8 _0206A61A: add r1, r0, #0x0 add r1, #0x20 b _0206A8F8 _0206A620: add r1, r0, #0x0 add r1, #0x60 b _0206A8F8 _0206A626: add r0, #0x8 cmp r2, #0x3 bhi _0206A6BC add r2, r2, r2 add r2, pc ldrh r2, [r2, #0x6] lsl r2, r2, #0x10 asr r2, r2, #0x10 add pc, r2 _0206A638: ; jump table (using 16-bit offset) .short _0206A640 - _0206A638 - 2; case 0 .short _0206A646 - _0206A638 - 2; case 1 .short _0206A64A - _0206A638 - 2; case 2 .short _0206A650 - _0206A638 - 2; case 3 _0206A640: add r1, r0, #0x0 add r1, #0x60 b _0206A8F8 _0206A646: add r1, r0, #0x0 b _0206A8F8 _0206A64A: add r1, r0, #0x0 add r1, #0x20 b _0206A8F8 _0206A650: add r1, r0, #0x0 add r1, #0x40 b _0206A8F8 _0206A656: add r0, #0x8 cmp r2, #0x3 bhi _0206A6BC add r2, r2, r2 add r2, pc ldrh r2, [r2, #0x6] lsl r2, r2, #0x10 asr r2, r2, #0x10 add pc, r2 _0206A668: ; jump table (using 16-bit offset) .short _0206A670 - _0206A668 - 2; case 0 .short _0206A676 - _0206A668 - 2; case 1 .short _0206A67A - _0206A668 - 2; case 2 .short _0206A680 - _0206A668 - 2; case 3 _0206A670: add r1, r0, #0x0 add r1, #0x40 b _0206A8F8 _0206A676: add r1, r0, #0x0 b _0206A8F8 _0206A67A: add r1, r0, #0x0 add r1, #0x60 b _0206A8F8 _0206A680: add r1, r0, #0x0 add r1, #0x20 b _0206A8F8 _0206A686: add r0, #0x8 cmp r2, #0x3 bhi _0206A6BC add r2, r2, r2 add r2, pc ldrh r2, [r2, #0x6] lsl r2, r2, #0x10 asr r2, r2, #0x10 add pc, r2 _0206A698: ; jump table (using 16-bit offset) .short _0206A6A0 - _0206A698 - 2; case 0 .short _0206A6A6 - _0206A698 - 2; case 1 .short _0206A6AA - _0206A698 - 2; case 2 .short _0206A6B0 - _0206A698 - 2; case 3 _0206A6A0: add r1, r0, #0x0 add r1, #0x60 b _0206A8F8 _0206A6A6: add r1, r0, #0x0 b _0206A8F8 _0206A6AA: add r1, r0, #0x0 add r1, #0x40 b _0206A8F8 _0206A6B0: add r1, r0, #0x0 add r1, #0x20 b _0206A8F8 _0206A6B6: add r0, #0x8 cmp r2, #0x3 bls _0206A6BE _0206A6BC: b _0206A8F8 _0206A6BE: add r2, r2, r2 add r2, pc ldrh r2, [r2, #0x6] lsl r2, r2, #0x10 asr r2, r2, #0x10 add pc, r2 _0206A6CA: ; jump table (using 16-bit offset) .short _0206A6D2 - _0206A6CA - 2; case 0 .short _0206A6D8 - _0206A6CA - 2; case 1 .short _0206A6DE - _0206A6CA - 2; case 2 .short _0206A6E2 - _0206A6CA - 2; case 3 _0206A6D2: add r1, r0, #0x0 add r1, #0x20 b _0206A8F8 _0206A6D8: add r1, r0, #0x0 add r1, #0x40 b _0206A8F8 _0206A6DE: add r1, r0, #0x0 b _0206A8F8 _0206A6E2: add r1, r0, #0x0 add r1, #0x60 b _0206A8F8 _0206A6E8: add r0, #0x8 cmp r2, #0x3 bhi _0206A7DE add r2, r2, r2 add r2, pc ldrh r2, [r2, #0x6] lsl r2, r2, #0x10 asr r2, r2, #0x10 add pc, r2 _0206A6FA: ; jump table (using 16-bit offset) .short _0206A702 - _0206A6FA - 2; case 0 .short _0206A708 - _0206A6FA - 2; case 1 .short _0206A70E - _0206A6FA - 2; case 2 .short _0206A712 - _0206A6FA - 2; case 3 _0206A702: add r1, r0, #0x0 add r1, #0x20 b _0206A8F8 _0206A708: add r1, r0, #0x0 add r1, #0x60 b _0206A8F8 _0206A70E: add r1, r0, #0x0 b _0206A8F8 _0206A712: add r1, r0, #0x0 add r1, #0x40 b _0206A8F8 _0206A718: add r0, #0x8 cmp r2, #0x3 bhi _0206A7DE add r2, r2, r2 add r2, pc ldrh r2, [r2, #0x6] lsl r2, r2, #0x10 asr r2, r2, #0x10 add pc, r2 _0206A72A: ; jump table (using 16-bit offset) .short _0206A732 - _0206A72A - 2; case 0 .short _0206A738 - _0206A72A - 2; case 1 .short _0206A73E - _0206A72A - 2; case 2 .short _0206A742 - _0206A72A - 2; case 3 _0206A732: add r1, r0, #0x0 add r1, #0x40 b _0206A8F8 _0206A738: add r1, r0, #0x0 add r1, #0x20 b _0206A8F8 _0206A73E: add r1, r0, #0x0 b _0206A8F8 _0206A742: add r1, r0, #0x0 add r1, #0x60 b _0206A8F8 _0206A748: add r0, #0x8 cmp r2, #0x3 bhi _0206A7DE add r2, r2, r2 add r2, pc ldrh r2, [r2, #0x6] lsl r2, r2, #0x10 asr r2, r2, #0x10 add pc, r2 _0206A75A: ; jump table (using 16-bit offset) .short _0206A762 - _0206A75A - 2; case 0 .short _0206A768 - _0206A75A - 2; case 1 .short _0206A76E - _0206A75A - 2; case 2 .short _0206A772 - _0206A75A - 2; case 3 _0206A762: add r1, r0, #0x0 add r1, #0x60 b _0206A8F8 _0206A768: add r1, r0, #0x0 add r1, #0x20 b _0206A8F8 _0206A76E: add r1, r0, #0x0 b _0206A8F8 _0206A772: add r1, r0, #0x0 add r1, #0x40 b _0206A8F8 _0206A778: add r0, #0x8 cmp r2, #0x3 bhi _0206A7DE add r2, r2, r2 add r2, pc ldrh r2, [r2, #0x6] lsl r2, r2, #0x10 asr r2, r2, #0x10 add pc, r2 _0206A78A: ; jump table (using 16-bit offset) .short _0206A792 - _0206A78A - 2; case 0 .short _0206A798 - _0206A78A - 2; case 1 .short _0206A79E - _0206A78A - 2; case 2 .short _0206A7A2 - _0206A78A - 2; case 3 _0206A792: add r1, r0, #0x0 add r1, #0x40 b _0206A8F8 _0206A798: add r1, r0, #0x0 add r1, #0x60 b _0206A8F8 _0206A79E: add r1, r0, #0x0 b _0206A8F8 _0206A7A2: add r1, r0, #0x0 add r1, #0x20 b _0206A8F8 _0206A7A8: add r0, #0x8 cmp r2, #0x3 bhi _0206A7DE add r2, r2, r2 add r2, pc ldrh r2, [r2, #0x6] lsl r2, r2, #0x10 asr r2, r2, #0x10 add pc, r2 _0206A7BA: ; jump table (using 16-bit offset) .short _0206A7C2 - _0206A7BA - 2; case 0 .short _0206A7C8 - _0206A7BA - 2; case 1 .short _0206A7CE - _0206A7BA - 2; case 2 .short _0206A7D2 - _0206A7BA - 2; case 3 _0206A7C2: add r1, r0, #0x0 add r1, #0x60 b _0206A8F8 _0206A7C8: add r1, r0, #0x0 add r1, #0x40 b _0206A8F8 _0206A7CE: add r1, r0, #0x0 b _0206A8F8 _0206A7D2: add r1, r0, #0x0 add r1, #0x20 b _0206A8F8 _0206A7D8: add r0, #0x8 cmp r2, #0x3 bls _0206A7E0 _0206A7DE: b _0206A8F8 _0206A7E0: add r2, r2, r2 add r2, pc ldrh r2, [r2, #0x6] lsl r2, r2, #0x10 asr r2, r2, #0x10 add pc, r2 _0206A7EC: ; jump table (using 16-bit offset) .short _0206A7F4 - _0206A7EC - 2; case 0 .short _0206A7FA - _0206A7EC - 2; case 1 .short _0206A800 - _0206A7EC - 2; case 2 .short _0206A806 - _0206A7EC - 2; case 3 _0206A7F4: add r1, r0, #0x0 add r1, #0x20 b _0206A8F8 _0206A7FA: add r1, r0, #0x0 add r1, #0x40 b _0206A8F8 _0206A800: add r1, r0, #0x0 add r1, #0x60 b _0206A8F8 _0206A806: add r1, r0, #0x0 b _0206A8F8 _0206A80A: add r0, #0x8 cmp r2, #0x3 bhi _0206A8F8 add r2, r2, r2 add r2, pc ldrh r2, [r2, #0x6] lsl r2, r2, #0x10 asr r2, r2, #0x10 add pc, r2 _0206A81C: ; jump table (using 16-bit offset) .short _0206A824 - _0206A81C - 2; case 0 .short _0206A82A - _0206A81C - 2; case 1 .short _0206A830 - _0206A81C - 2; case 2 .short _0206A836 - _0206A81C - 2; case 3 _0206A824: add r1, r0, #0x0 add r1, #0x20 b _0206A8F8 _0206A82A: add r1, r0, #0x0 add r1, #0x60 b _0206A8F8 _0206A830: add r1, r0, #0x0 add r1, #0x40 b _0206A8F8 _0206A836: add r1, r0, #0x0 b _0206A8F8 _0206A83A: add r0, #0x8 cmp r2, #0x3 bhi _0206A8F8 add r2, r2, r2 add r2, pc ldrh r2, [r2, #0x6] lsl r2, r2, #0x10 asr r2, r2, #0x10 add pc, r2 _0206A84C: ; jump table (using 16-bit offset) .short _0206A854 - _0206A84C - 2; case 0 .short _0206A85A - _0206A84C - 2; case 1 .short _0206A860 - _0206A84C - 2; case 2 .short _0206A866 - _0206A84C - 2; case 3 _0206A854: add r1, r0, #0x0 add r1, #0x40 b _0206A8F8 _0206A85A: add r1, r0, #0x0 add r1, #0x20 b _0206A8F8 _0206A860: add r1, r0, #0x0 add r1, #0x60 b _0206A8F8 _0206A866: add r1, r0, #0x0 b _0206A8F8 _0206A86A: add r0, #0x8 cmp r2, #0x3 bhi _0206A8F8 add r2, r2, r2 add r2, pc ldrh r2, [r2, #0x6] lsl r2, r2, #0x10 asr r2, r2, #0x10 add pc, r2 _0206A87C: ; jump table (using 16-bit offset) .short _0206A884 - _0206A87C - 2; case 0 .short _0206A88A - _0206A87C - 2; case 1 .short _0206A890 - _0206A87C - 2; case 2 .short _0206A896 - _0206A87C - 2; case 3 _0206A884: add r1, r0, #0x0 add r1, #0x60 b _0206A8F8 _0206A88A: add r1, r0, #0x0 add r1, #0x20 b _0206A8F8 _0206A890: add r1, r0, #0x0 add r1, #0x40 b _0206A8F8 _0206A896: add r1, r0, #0x0 b _0206A8F8 _0206A89A: add r0, #0x8 cmp r2, #0x3 bhi _0206A8F8 add r2, r2, r2 add r2, pc ldrh r2, [r2, #0x6] lsl r2, r2, #0x10 asr r2, r2, #0x10 add pc, r2 _0206A8AC: ; jump table (using 16-bit offset) .short _0206A8B4 - _0206A8AC - 2; case 0 .short _0206A8BA - _0206A8AC - 2; case 1 .short _0206A8C0 - _0206A8AC - 2; case 2 .short _0206A8C6 - _0206A8AC - 2; case 3 _0206A8B4: add r1, r0, #0x0 add r1, #0x40 b _0206A8F8 _0206A8BA: add r1, r0, #0x0 add r1, #0x60 b _0206A8F8 _0206A8C0: add r1, r0, #0x0 add r1, #0x20 b _0206A8F8 _0206A8C6: add r1, r0, #0x0 b _0206A8F8 _0206A8CA: add r0, #0x8 cmp r2, #0x3 bhi _0206A8F8 add r2, r2, r2 add r2, pc ldrh r2, [r2, #0x6] lsl r2, r2, #0x10 asr r2, r2, #0x10 add pc, r2 _0206A8DC: ; jump table (using 16-bit offset) .short _0206A8E4 - _0206A8DC - 2; case 0 .short _0206A8EA - _0206A8DC - 2; case 1 .short _0206A8F0 - _0206A8DC - 2; case 2 .short _0206A8F6 - _0206A8DC - 2; case 3 _0206A8E4: add r1, r0, #0x0 add r1, #0x60 b _0206A8F8 _0206A8EA: add r1, r0, #0x0 add r1, #0x40 b _0206A8F8 _0206A8F0: add r1, r0, #0x0 add r1, #0x20 b _0206A8F8 _0206A8F6: add r1, r0, #0x0 _0206A8F8: add r0, r1, #0x0 pop {r3, pc} thumb_func_start ResolveMonForme ResolveMonForme: ; 0x0206A8FC ldr r3, _0206A928 ; =SPECIES_DEOXYS cmp r0, r3 beq _0206A90C add r2, r3, #0x0 add r2, #SPECIES_WORMADAM-SPECIES_DEOXYS cmp r0, r2 beq _0206A91A bx lr _0206A90C: cmp r1, #0x0 beq _0206A926 cmp r1, #0x3 bgt _0206A926 add r3, #SPECIES_DEOXYS_ATK-SPECIES_DEOXYS-1 add r0, r1, r3 bx lr _0206A91A: cmp r1, #0x0 beq _0206A926 cmp r1, #0x2 bgt _0206A926 add r3, #SPECIES_WORMADAM_SANDY-SPECIES_DEOXYS-1 add r0, r1, r3 _0206A926: bx lr .balign 4 _0206A928: .word SPECIES_DEOXYS thumb_func_start MaskOfFlagNo MaskOfFlagNo: ; 0x0206A92C push {r3-r5, lr} add r5, r0, #0x0 mov r4, #0x1 cmp r5, #0x20 blt _0206A93A bl ErrorHandling _0206A93A: mov r0, #0x0 cmp r5, #0x0 ble _0206A948 _0206A940: add r0, r0, #0x1 lsl r4, r4, #0x1 cmp r0, r5 blt _0206A940 _0206A948: add r0, r4, #0x0 pop {r3-r5, pc} thumb_func_start LowestFlagNo LowestFlagNo: ; 0x0206A94C mov r3, #0x1 mov r2, #0x0 _0206A950: add r1, r0, #0x0 tst r1, r3 bne _0206A95E add r2, r2, #0x1 lsl r3, r3, #0x1 cmp r2, #0x20 blt _0206A950 _0206A95E: add r0, r2, #0x0 bx lr .balign 4 thumb_func_start IsPokemonLegendaryOrMythical IsPokemonLegendaryOrMythical: ; 0x0206A964 ldr r3, _0206A980 ; =sLegendaryMonsList mov r2, #0x0 _0206A968: ldrh r1, [r3, #0x0] cmp r0, r1 bne _0206A972 mov r0, #0x1 bx lr _0206A972: add r2, r2, #0x1 add r3, r3, #0x2 cmp r2, #0x12 blo _0206A968 mov r0, #0x0 bx lr nop _0206A980: .word sLegendaryMonsList thumb_func_start GetLegendaryMon GetLegendaryMon: ; 0x0206A984 cmp r0, #0x12 blo _0206A98A mov r0, #0x0 _0206A98A: lsl r1, r0, #0x1 ldr r0, _0206A994 ; =sLegendaryMonsList ldrh r0, [r0, r1] bx lr nop _0206A994: .word sLegendaryMonsList thumb_func_start FUN_0206A998 FUN_0206A998: ; 0x0206A998 push {r3, lr} mov r1, #0x5 mov r2, #0x0 bl GetMonDataEncrypted lsl r0, r0, #0x10 lsr r0, r0, #0x10 bl IsPokemonLegendaryOrMythical pop {r3, pc} thumb_func_start FUN_0206A9AC FUN_0206A9AC: ; 0x0206A9AC push {r3-r7, lr} sub sp, #0x10 add r4, r1, #0x0 add r5, r0, #0x0 add r0, r4, #0x0 add r6, r2, #0x0 bl FUN_020239BC str r0, [sp, #0x0] add r0, r5, #0x0 mov r1, #0x7 mov r2, #0x0 bl GetBoxMonDataEncrypted str r0, [sp, #0x4] add r0, r4, #0x0 bl FUN_020239CC str r0, [sp, #0x8] add r0, r5, #0x0 mov r1, #0x9c mov r2, #0x0 bl GetBoxMonDataEncrypted str r0, [sp, #0xc] add r0, r4, #0x0 add r1, r6, #0x0 bl FUN_020239A0 add r7, r0, #0x0 mov r0, #0x8 add r1, r6, #0x0 bl FUN_020219F4 add r6, r0, #0x0 add r0, r5, #0x0 mov r1, #0x90 add r2, r6, #0x0 mov r4, #0x0 bl GetBoxMonDataEncrypted ldr r1, [sp, #0x0] ldr r0, [sp, #0x4] cmp r1, r0 bne _0206AA1C ldr r1, [sp, #0x8] ldr r0, [sp, #0xc] cmp r1, r0 bne _0206AA1C add r0, r7, #0x0 add r1, r6, #0x0 bl FUN_02021CE0 cmp r0, #0x0 bne _0206AA1C mov r4, #0x1 _0206AA1C: add r0, r6, #0x0 bl FUN_02021A20 add r0, r7, #0x0 bl FUN_02021A20 add r0, r4, #0x0 add sp, #0x10 pop {r3-r7, pc} .balign 4 thumb_func_start FUN_0206AA30 FUN_0206AA30: ; 0x0206AA30 push {r3, lr} cmp r0, #0x3f bgt _0206AA48 bge _0206AA6C cmp r0, #0x1 bgt _0206AA74 cmp r0, #0x0 blt _0206AA74 beq _0206AA82 cmp r0, #0x1 beq _0206AA82 b _0206AA74 _0206AA48: cmp r0, #0x5a bgt _0206AA50 beq _0206AA70 b _0206AA74 _0206AA50: add r1, r0, #0x0 sub r1, #0x5b cmp r1, #0x3 bhi _0206AA74 add r1, r1, r1 add r1, pc ldrh r1, [r1, #0x6] lsl r1, r1, #0x10 asr r1, r1, #0x10 add pc, r1 _0206AA64: ; jump table (using 16-bit offset) .short _0206AA70 - _0206AA64 - 2; case 0 .short _0206AA70 - _0206AA64 - 2; case 1 .short _0206AA70 - _0206AA64 - 2; case 2 .short _0206AA70 - _0206AA64 - 2; case 3 _0206AA6C: mov r0, #0x2 pop {r3, pc} _0206AA70: sub r0, #0x57 pop {r3, pc} _0206AA74: bl FUN_0206AE00 cmp r0, #0x1 bne _0206AA80 mov r0, #0x1 pop {r3, pc} _0206AA80: mov r0, #0x0 _0206AA82: pop {r3, pc} thumb_func_start FUN_0206AA84 FUN_0206AA84: ; 0x0206AA84 push {r3-r4, lr} sub sp, #0x1c add r4, r0, #0x0 mov r0, #0x0 add r1, sp, #0x0 strb r0, [r1, #0x0] add r1, sp, #0x0 add r1, #0x1 mov r2, #0x18 bl MIi_CpuClearFast add r0, r4, #0x0 mov r1, #0xa1 add r2, sp, #0x0 bl SetMonDataEncrypted add r2, sp, #0x0 add r0, r4, #0x0 mov r1, #0xaa add r2, #0x1 bl SetMonDataEncrypted add sp, #0x1c pop {r3-r4, pc} thumb_func_start FUN_0206AAB4 FUN_0206AAB4: ; 0x0206AAB4 push {r3-r7, lr} sub sp, #0x8 add r5, r0, #0x0 bl TryDecryptBoxMon mov r4, #0x0 str r0, [sp, #0x0] add r7, r4, #0x0 add r6, sp, #0x4 _0206AAC6: add r1, r4, #0x0 add r0, r5, #0x0 add r1, #0x36 add r2, r7, #0x0 bl GetBoxMonDataEncrypted cmp r0, #0x0 beq _0206AAF0 add r1, r4, #0x0 add r0, r5, #0x0 add r1, #0x42 mov r2, #0x0 bl GetBoxMonDataEncrypted add r1, r4, #0x0 strb r0, [r6, #0x0] add r0, r5, #0x0 add r1, #0x3a add r2, sp, #0x4 bl SetBoxMonDataEncrypted _0206AAF0: add r4, r4, #0x1 cmp r4, #0x4 blt _0206AAC6 ldr r1, [sp, #0x0] add r0, r5, #0x0 bl TryEncryptBoxMon add sp, #0x8 pop {r3-r7, pc} .balign 4