nonmatching sub_80E7B60

This commit is contained in:
PikalaxALT 2017-11-06 23:03:11 -05:00
parent 8d05aeccec
commit 0a17fc98f6
3 changed files with 772 additions and 651 deletions

View File

@ -5,639 +5,6 @@
.text
thumb_func_start sub_80E7A9C
sub_80E7A9C: @ 80E7A9C
ldrh r0, [r0, 0x20]
lsls r0, 24
lsrs r0, 24
bx lr
thumb_func_end sub_80E7A9C
thumb_func_start sub_80E7AA4
sub_80E7AA4: @ 80E7AA4
push {r4-r6,lr}
mov r6, r10
mov r5, r9
mov r4, r8
push {r4-r6}
sub sp, 0x38
mov r8, r0
mov r10, r1
mov r9, r2
adds r4, r3, 0
ldr r5, [sp, 0x54]
lsls r4, 24
lsls r5, 24
lsrs r5, 24
lsrs r4, 23
add r4, r9
ldrb r0, [r4]
mov r6, r10
muls r6, r0
add r6, r8
ldrb r0, [r4, 0x1]
lsls r1, r0, 3
subs r1, r0
lsls r1, 3
adds r1, r6, r1
mov r0, sp
movs r2, 0x38
bl memcpy
lsls r5, 1
add r5, r9
ldrb r0, [r5]
mov r1, r10
muls r1, r0
adds r0, r1, 0
add r8, r0
ldrb r1, [r4, 0x1]
lsls r0, r1, 3
subs r0, r1
lsls r0, 3
adds r6, r0
ldrb r0, [r5, 0x1]
lsls r1, r0, 3
subs r1, r0
lsls r1, 3
add r1, r8
adds r0, r6, 0
movs r2, 0x38
bl memcpy
ldrb r1, [r5, 0x1]
lsls r0, r1, 3
subs r0, r1
lsls r0, 3
add r8, r0
mov r0, r8
mov r1, sp
movs r2, 0x38
bl memcpy
add sp, 0x38
pop {r3-r5}
mov r8, r3
mov r9, r4
mov r10, r5
pop {r4-r6}
pop {r0}
bx r0
thumb_func_end sub_80E7AA4
thumb_func_start sub_80E7B2C
sub_80E7B2C: @ 80E7B2C
push {r4,lr}
adds r3, r0, 0
movs r2, 0
movs r1, 0
ldr r4, =gUnknown_03001160
_080E7B36:
adds r0, r3, r1
ldrb r0, [r0]
adds r0, r2, r0
lsls r0, 24
lsrs r2, r0, 24
adds r1, 0x1
cmp r1, 0xFF
ble _080E7B36
strb r2, [r4]
pop {r4}
pop {r0}
bx r0
.pool
thumb_func_end sub_80E7B2C
thumb_func_start sub_80E7B54
sub_80E7B54: @ 80E7B54
ldr r0, =gUnknown_03001160
ldrb r0, [r0]
bx lr
.pool
thumb_func_end sub_80E7B54
thumb_func_start sub_80E7B60
sub_80E7B60: @ 80E7B60
push {r4-r7,lr}
mov r7, r10
mov r6, r9
mov r5, r8
push {r5-r7}
sub sp, 0x58
str r0, [sp, 0x2C]
str r1, [sp, 0x30]
lsls r2, 24
lsrs r2, 24
mov r9, r2
bl Random2
lsls r0, 16
lsrs r0, 16
str r0, [sp, 0x38]
ldr r0, =gLinkPlayers
ldrh r0, [r0, 0x4]
bl SeedRng2
bl GetLinkPlayerCount
lsls r0, 24
lsrs r4, r0, 24
movs r0, 0
mov r8, r0
mov r1, sp
adds r1, 0x1C
str r1, [sp, 0x4C]
mov r2, sp
adds r2, 0x1D
str r2, [sp, 0x50]
mov r3, sp
adds r3, 0xC
str r3, [sp, 0x48]
movs r7, 0xFF
add r3, sp, 0x8
movs r2, 0
adds r6, r1, 0
ldr r5, [sp, 0x50]
_080E7BB0:
mov r1, sp
add r1, r8
adds r1, 0x4
ldrb r0, [r1]
orrs r0, r7
strb r0, [r1]
mov r1, r8
adds r0, r3, r1
strb r2, [r0]
lsls r1, 1
adds r0, r6, r1
strb r2, [r0]
adds r1, r5, r1
strb r2, [r1]
mov r0, r8
adds r0, 0x1
lsls r0, 16
lsrs r0, 16
mov r8, r0
cmp r0, 0x3
bls _080E7BB0
bl Link_AnyPartnersPlayingRubyOrSapphire
str r0, [sp, 0x3C]
movs r2, 0
mov r8, r2
lsls r4, 16
str r4, [sp, 0x54]
ldr r0, [sp, 0x30]
mov r3, r9
muls r3, r0
str r3, [sp, 0x44]
b _080E7D04
.pool
_080E7BF8:
ldr r1, [sp, 0x30]
mov r0, r8
muls r0, r1
ldr r2, [sp, 0x2C]
adds r7, r2, r0
ldr r1, =gLinkPlayers
mov r3, r8
lsls r0, r3, 3
subs r0, r3
lsls r0, 2
adds r0, r1
ldrh r1, [r0, 0x1A]
mov r9, r1
ldrb r0, [r0]
str r0, [sp, 0x40]
movs r6, 0
ldr r0, [r7, 0x70]
cmp r6, r0
bcs _080E7CFA
movs r2, 0x10
negs r2, r2
mov r10, r2
_080E7C24:
lsls r0, r6, 3
subs r0, r6
lsls r0, 3
adds r5, r7, r0
ldrh r0, [r5, 0x20]
cmp r0, 0
beq _080E7CEE
ldr r3, [sp, 0x3C]
cmp r3, 0
beq _080E7C9A
adds r4, r5, 0
adds r4, 0x24
adds r0, r4, 0
bl StringLength
lsls r0, 16
lsrs r0, 16
cmp r0, 0x5
bhi _080E7C54
movs r4, 0x1
b _080E7C5C
.pool
_080E7C54:
adds r0, r4, 0
bl StripExtCtrlCodes
mov r4, r9
_080E7C5C:
ldrh r1, [r5, 0x2C]
ldr r0, =0x000015fc
cmp r1, r0
bne _080E7C74
adds r0, r5, 0
adds r0, 0x2C
bl StripExtCtrlCodes
movs r1, 0x1
b _080E7C76
.pool
_080E7C74:
mov r1, r9
_080E7C76:
ldr r0, [sp, 0x40]
subs r0, 0x1
cmp r0, 0x1
bhi _080E7CEE
adds r2, r5, 0
adds r2, 0x37
movs r0, 0xF
ands r4, r0
ldrb r0, [r2]
mov r3, r10
ands r0, r3
orrs r0, r4
lsls r1, 4
movs r3, 0xF
ands r0, r3
orrs r0, r1
strb r0, [r2]
b _080E7CEE
_080E7C9A:
mov r0, r9
cmp r0, 0x1
bne _080E7CEE
adds r0, r5, 0
adds r0, 0x24
bl IsStringJapanese
cmp r0, 0
beq _080E7CBA
adds r0, r5, 0
adds r0, 0x37
ldrb r1, [r0]
mov r2, r10
ands r1, r2
movs r2, 0x1
b _080E7CC6
_080E7CBA:
adds r0, r5, 0
adds r0, 0x37
ldrb r1, [r0]
mov r3, r10
ands r1, r3
movs r2, 0x2
_080E7CC6:
orrs r1, r2
strb r1, [r0]
adds r4, r0, 0
adds r0, r5, 0
adds r0, 0x2C
bl IsStringJapanese
cmp r0, 0
beq _080E7CE2
ldrb r0, [r4]
movs r1, 0xF
ands r1, r0
movs r0, 0x10
b _080E7CEA
_080E7CE2:
ldrb r0, [r4]
movs r1, 0xF
ands r1, r0
movs r0, 0x20
_080E7CEA:
orrs r1, r0
strb r1, [r4]
_080E7CEE:
adds r0, r6, 0x1
lsls r0, 16
lsrs r6, r0, 16
ldr r0, [r7, 0x70]
cmp r6, r0
bcc _080E7C24
_080E7CFA:
mov r0, r8
adds r0, 0x1
lsls r0, 16
lsrs r0, 16
mov r8, r0
_080E7D04:
bl GetLinkPlayerCount
lsls r0, 24
lsrs r0, 24
cmp r8, r0
bcs _080E7D12
b _080E7BF8
_080E7D12:
movs r0, 0
str r0, [sp, 0x34]
mov r8, r0
ldr r1, [sp, 0x54]
lsrs r0, r1, 16
ldr r2, [sp, 0x34]
cmp r2, r0
bcs _080E7D70
adds r5, r0, 0
_080E7D24:
ldr r3, [sp, 0x30]
mov r0, r8
muls r0, r3
ldr r1, [sp, 0x2C]
adds r7, r1, r0
ldr r0, [r7, 0x70]
cmp r0, 0
beq _080E7D62
movs r6, 0
cmp r6, r0
bcs _080E7D62
adds r3, r7, 0
adds r3, 0x74
ldr r2, [sp, 0x4C]
mov r0, r8
lsls r1, r0, 1
movs r4, 0x1
_080E7D46:
lsls r0, r6, 1
adds r0, r3, r0
ldrh r0, [r0]
cmp r0, 0
bne _080E7D56
adds r0, r6, r1
adds r0, r2, r0
strb r4, [r0]
_080E7D56:
adds r0, r6, 0x1
lsls r0, 16
lsrs r6, r0, 16
ldr r0, [r7, 0x70]
cmp r6, r0
bcc _080E7D46
_080E7D62:
mov r0, r8
adds r0, 0x1
lsls r0, 16
lsrs r0, 16
mov r8, r0
cmp r8, r5
bcc _080E7D24
_080E7D70:
movs r6, 0
mov r8, r6
ldr r1, [sp, 0x54]
cmp r1, 0
beq _080E7E64
add r2, sp, 0x24
mov r10, r2
movs r3, 0x25
add r3, sp
mov r9, r3
_080E7D84:
ldr r1, [sp, 0x30]
mov r0, r8
muls r0, r1
ldr r2, [sp, 0x2C]
adds r7, r2, r0
mov r3, r8
lsls r1, r3, 1
ldr r2, [sp, 0x4C]
adds r0, r2, r1
ldrb r0, [r0]
cmp r0, 0x1
beq _080E7DA6
ldr r3, [sp, 0x50]
adds r0, r3, r1
ldrb r0, [r0]
cmp r0, 0x1
bne _080E7DB0
_080E7DA6:
ldr r0, [sp, 0x34]
adds r0, 0x1
lsls r0, 24
lsrs r0, 24
str r0, [sp, 0x34]
_080E7DB0:
ldr r2, [sp, 0x4C]
adds r0, r2, r1
ldrb r0, [r0]
cmp r0, 0x1
bne _080E7DD4
ldr r3, [sp, 0x50]
adds r0, r3, r1
ldrb r2, [r0]
cmp r2, 0
bne _080E7DD4
_080E7DC4:
lsls r1, r6, 1
mov r3, r10
adds r0, r3, r1
mov r3, r8
strb r3, [r0]
add r1, r9
strb r2, [r1]
b _080E7E4E
_080E7DD4:
ldr r2, [sp, 0x4C]
adds r0, r2, r1
ldrb r0, [r0]
cmp r0, 0
bne _080E7DE8
ldr r3, [sp, 0x50]
adds r0, r3, r1
ldrb r2, [r0]
cmp r2, 0x1
beq _080E7DC4
_080E7DE8:
ldr r2, [sp, 0x4C]
adds r0, r2, r1
ldrb r0, [r0]
cmp r0, 0x1
bne _080E7E54
ldr r3, [sp, 0x50]
adds r0, r3, r1
ldrb r0, [r0]
cmp r0, 0x1
bne _080E7E54
lsls r5, r6, 1
mov r1, r10
adds r0, r1, r5
mov r2, r8
strb r2, [r0]
adds r0, r7, 0
bl sub_80E7A9C
adds r4, r0, 0
lsls r4, 24
lsrs r4, 24
adds r0, r7, 0
adds r0, 0x38
bl sub_80E7A9C
lsls r0, 24
lsrs r1, r0, 24
cmp r4, 0
bne _080E7E30
cmp r1, 0
beq _080E7E34
mov r3, r9
adds r1, r3, r5
movs r0, 0x1
strb r0, [r1]
b _080E7E4E
_080E7E30:
cmp r1, 0
beq _080E7E48
_080E7E34:
bl Random2
mov r1, r9
adds r2, r1, r5
lsls r0, 16
lsrs r0, 16
movs r1, 0x1
ands r0, r1
strb r0, [r2]
b _080E7E4E
_080E7E48:
mov r2, r9
adds r0, r2, r5
strb r1, [r0]
_080E7E4E:
adds r0, r6, 0x1
lsls r0, 16
lsrs r6, r0, 16
_080E7E54:
mov r0, r8
adds r0, 0x1
lsls r0, 16
lsrs r3, r0, 16
mov r8, r3
ldr r1, [sp, 0x54]
cmp r0, r1
bcc _080E7D84
_080E7E64:
movs r2, 0
mov r8, r2
ldr r3, [sp, 0x44]
lsls r0, r3, 4
subs r0, r3
lsls r0, 3
ldr r1, [sp, 0x2C]
adds r7, r1, r0
ldr r1, [sp, 0x48]
_080E7E76:
mov r2, r8
lsls r0, r2, 2
adds r0, r1, r0
str r7, [r0]
mov r0, r8
adds r0, 0x1
lsls r0, 16
lsrs r0, 16
mov r8, r0
cmp r0, 0x3
bls _080E7E76
bl sub_80E7B54
lsls r0, 24
lsrs r0, 24
movs r1, 0x3
bl __umodsi3
lsls r0, 24
lsrs r1, r0, 24
ldr r3, [sp, 0x34]
cmp r3, 0x3
beq _080E7EC8
cmp r3, 0x3
bgt _080E7EAE
cmp r3, 0x2
beq _080E7EB6
b _080E7F1C
_080E7EAE:
ldr r0, [sp, 0x34]
cmp r0, 0x4
beq _080E7EE8
b _080E7F1C
_080E7EB6:
add r2, sp, 0x24
movs r0, 0x1
str r0, [sp]
ldr r0, [sp, 0x2C]
ldr r1, [sp, 0x30]
movs r3, 0
bl sub_80E7AA4
b _080E7F1C
_080E7EC8:
ldr r0, =gUnknown_0858CFB8
lsls r1, 1
adds r2, r1, r0
ldrb r3, [r2]
adds r0, 0x1
adds r1, r0
ldrb r0, [r1]
add r2, sp, 0x24
str r0, [sp]
ldr r0, [sp, 0x2C]
ldr r1, [sp, 0x30]
bl sub_80E7AA4
b _080E7F1C
.pool
_080E7EE8:
add r6, sp, 0x24
ldr r4, =gUnknown_0858CFBE
lsls r5, r1, 2
adds r0, r5, r4
ldrb r3, [r0]
adds r0, r4, 0x1
adds r0, r5, r0
ldrb r0, [r0]
str r0, [sp]
ldr r0, [sp, 0x2C]
ldr r1, [sp, 0x30]
adds r2, r6, 0
bl sub_80E7AA4
adds r0, r4, 0x2
adds r0, r5, r0
ldrb r3, [r0]
adds r4, 0x3
adds r5, r4
ldrb r0, [r5]
str r0, [sp]
ldr r0, [sp, 0x2C]
ldr r1, [sp, 0x30]
adds r2, r6, 0
bl sub_80E7AA4
_080E7F1C:
ldr r1, [sp, 0x2C]
ldr r2, [sp, 0x44]
adds r7, r1, r2
ldr r4, =gSaveBlock1Ptr
ldr r0, [r4]
movs r3, 0xC2
lsls r3, 6
adds r0, r3
adds r1, r7, 0
movs r2, 0x38
bl memcpy
ldr r0, [r4]
ldr r1, =0x0000310c
adds r0, r1
adds r1, r7, 0
adds r1, 0x38
movs r2, 0x38
bl memcpy
ldr r0, [sp, 0x38]
bl SeedRng
add sp, 0x58
pop {r3-r5}
mov r8, r3
mov r9, r4
mov r10, r5
pop {r4-r7}
pop {r0}
bx r0
.pool
thumb_func_end sub_80E7B60
thumb_func_start sub_80E7F68
sub_80E7F68: @ 80E7F68
push {r4,lr}

View File

@ -7,11 +7,16 @@ struct DayCareMailRecordMixing {
struct MailStruct mail;
u8 OT_name[OT_NAME_LENGTH + 1];
u8 monName[11];
u8 language_maybe : 4;
u8 unknown : 4;
u32 stepsTaken;
u8 language_maybe:4;
u8 unknown:4;
};
struct UnkStruct_80E7B60 {
struct DayCareMailRecordMixing unk_00[2];
u32 unk_70;
u16 unk_74[2];
}; // size = 0x78
// Exported RAM declarations
// Exported ROM declarations

View File

@ -2,6 +2,10 @@
// Includes
#include "global.h"
#include "malloc.h"
#include "rng.h"
#include "items.h"
#include "text.h"
#include "task.h"
#include "species.h"
#include "pokemon.h"
@ -34,7 +38,7 @@ struct PlayerRecords {
/* 0x1004 */ PokeNews pokeNews[16];
/* 0x1044 */ OldMan oldMan;
/* 0x1084 */ struct EasyChatPair easyChatPair[5];
/* 0x10ac */ u8 unk_10ac[0x78];
/* 0x10ac */ struct UnkStruct_80E7B60 unk_10ac;
/* 0x1124 */ union BattleTowerRecord battleTowerRecord;
/* 0x1210 */ u16 unk_1210;
/* 0x1214 */ LilycoveLady lilycoveLady;
@ -50,16 +54,17 @@ IWRAM_DATA TVShow *gUnknown_03001138;
IWRAM_DATA PokeNews *gUnknown_0300113C;
IWRAM_DATA OldMan *gUnknown_03001140;
IWRAM_DATA struct EasyChatPair *gUnknown_03001144;
IWRAM_DATA struct DayCareMailRecordMixing *gUnknown_03001148;
IWRAM_DATA struct UnkStruct_80E7B60 *gUnknown_03001148;
IWRAM_DATA void *gUnknown_0300114C; // gSaveBlock2Ptr->field_64C
IWRAM_DATA LilycoveLady *gUnknown_03001150;
IWRAM_DATA void *gUnknown_03001154; // gSaveBlock2Ptr->field_0DC;
IWRAM_DATA void *gUnknown_03001158; // gSaveBlock2Ptr->field_64C
IWRAM_DATA u32 gUnknown_0300115C;
IWRAM_DATA u8 gUnknown_03001160[8];
IWRAM_DATA u8 gUnknown_03001160;
IWRAM_DATA u32 filler_03001164;
IWRAM_DATA u32 gUnknown_03001168[3];
EWRAM_DATA struct DayCareMailRecordMixing gUnknown_02039F9C[2] = {};
EWRAM_DATA struct UnkStruct_80E7B60 gUnknown_02039F9C = {};
EWRAM_DATA struct PlayerRecords *gUnknown_0203A014 = NULL;
EWRAM_DATA struct PlayerRecords *gUnknown_0203A018 = NULL;
@ -77,8 +82,8 @@ static void *sub_80E7820(u8);
static void sub_80E78C4(OldMan *, size_t, u8);
static void sub_80E7948(union BattleTowerRecord *, size_t, u8);
static void sub_80E7A14(LilycoveLady *, size_t, u8);
void sub_80E7B2C(TVShow *);
void sub_80E7B60(void *, size_t, u8, TVShow *);
static void sub_80E7B2C(const u8 *);
static void sub_80E7B60(struct UnkStruct_80E7B60 *, size_t, u8, TVShow *);
void sub_80E7F68(void *, u8);
void sub_80E7FF8(u8 taskId);
void sub_80E8110(void *, void *);
@ -99,6 +104,9 @@ extern const u8 gUnknown_0858CF8C[];
extern const u8 gUnknown_0858CF8E[][3];
extern const u8 gUnknown_0858CF94[][4];
extern const u8 gUnknown_0858CFB8[3][2];
extern const u8 gUnknown_0858CFBE[3][4];
// .text
void sub_80E6BE8(void)
@ -113,7 +121,7 @@ void sub_80E6BF8(void)
gUnknown_0300113C = gSaveBlock1Ptr->pokeNews;
gUnknown_03001140 = &gSaveBlock1Ptr->oldMan;
gUnknown_03001144 = gSaveBlock1Ptr->easyChatPairs;
gUnknown_03001148 = gUnknown_02039F9C;
gUnknown_03001148 = &gUnknown_02039F9C;
gUnknown_0300114C = gSaveBlock2Ptr->field_64C;
gUnknown_03001150 = &gSaveBlock1Ptr->lilycoveLady;
gUnknown_03001154 = gSaveBlock2Ptr->field_0DC;
@ -128,7 +136,7 @@ void sub_80E6CA0(struct PlayerRecords *dest)
memcpy(dest->pokeNews, gUnknown_0300113C, sizeof(PokeNews) * 16);
memcpy(&dest->oldMan, gUnknown_03001140, sizeof(OldMan));
memcpy(dest->easyChatPair, gUnknown_03001144, sizeof(struct EasyChatPair) * 5);
sub_80E89F8(dest->unk_10ac);
sub_80E89F8(&dest->unk_10ac);
sub_81659DC(gUnknown_0300114C, &dest->battleTowerRecord);
if (GetMultiplayerId() == 0)
{
@ -146,8 +154,8 @@ void sub_80E6D54(struct PlayerRecords *dest)
memcpy(&dest->oldMan, gUnknown_03001140, sizeof(OldMan));
sub_8120B70(&dest->oldMan);
memcpy(dest->easyChatPair, gUnknown_03001144, sizeof(struct EasyChatPair) * 5);
sub_80E89F8(dest->unk_10ac);
sub_80E8A54(dest->unk_10ac);
sub_80E89F8(&dest->unk_10ac);
sub_80E8A54(&dest->unk_10ac);
sub_81659DC(gUnknown_0300114C, &dest->battleTowerRecord);
TaskDummy4(&dest->battleTowerRecord);
if (GetMultiplayerId() == 0)
@ -180,7 +188,7 @@ void sub_80E6E24(void)
memcpy(&gUnknown_0203A018->oldMan, gUnknown_03001140, sizeof(OldMan));
memcpy(&gUnknown_0203A018->lilycoveLady, gUnknown_03001150, sizeof(LilycoveLady));
memcpy(gUnknown_0203A018->easyChatPair, gUnknown_03001144, sizeof(struct EasyChatPair) * 5);
sub_80E89F8(gUnknown_0203A018->unk_10ac);
sub_80E89F8(&gUnknown_0203A018->unk_10ac);
memcpy(&gUnknown_0203A018->battleTowerRecord, gUnknown_0300114C, 0xec);
sub_80E8AC0(&gUnknown_0203A018->battleTowerRecord);
if (GetMultiplayerId() == 0)
@ -197,9 +205,9 @@ void sub_80E6F60(u32 a0)
if (Link_AnyPartnersPlayingRubyOrSapphire())
{
// Ruby/Sapphire
sub_80E7B2C(gUnknown_0203A014[0].tvShows);
sub_80E7B2C((void *)gUnknown_0203A014[0].tvShows);
sub_80EAF80(gUnknown_0203A014[0].secretBases, 0x1230, a0);
sub_80E7B60(gUnknown_0203A014[0].unk_10ac, 0x1230, a0, gUnknown_0203A014[0].tvShows);
sub_80E7B60(&gUnknown_0203A014[0].unk_10ac, 0x1230, a0, gUnknown_0203A014[0].tvShows);
sub_80E7948(&gUnknown_0203A014[0].battleTowerRecord, 0x1230, a0);
sub_80F01E8(gUnknown_0203A014[0].tvShows, 0x1230, a0);
sub_80F0C7C(gUnknown_0203A014[0].pokeNews, 0x1230, a0);
@ -210,13 +218,13 @@ void sub_80E6F60(u32 a0)
else
{
// Emerald
sub_80E7B2C(gUnknown_0203A014[0].tvShows);
sub_80E7B2C((void *)gUnknown_0203A014[0].tvShows);
sub_80EAF80(gUnknown_0203A014[0].secretBases, 0x1444, a0);
sub_80F01E8(gUnknown_0203A014[0].tvShows, 0x1444, a0);
sub_80F0C7C(gUnknown_0203A014[0].pokeNews, 0x1444, a0);
sub_80E78C4(&gUnknown_0203A014[0].oldMan, 0x1444, a0);
sub_812287C(gUnknown_0203A014[0].easyChatPair, 0x1444, a0);
sub_80E7B60(gUnknown_0203A014[0].unk_10ac, 0x1444, a0, gUnknown_0203A014[0].tvShows);
sub_80E7B60(&gUnknown_0203A014[0].unk_10ac, 0x1444, a0, gUnknown_0203A014[0].tvShows);
sub_80E7948(&gUnknown_0203A014[0].battleTowerRecord, 0x1444, a0);
sub_80E7F68(&gUnknown_0203A014[0].unk_1210, a0);
sub_80E7A14(&gUnknown_0203A014[0].lilycoveLady, 0x1444, a0);
@ -662,3 +670,744 @@ static void sub_80E7A14(LilycoveLady *lilycoveLady, size_t recordSize, u8 which)
free(dest);
}
}
static u8 sub_80E7A9C(struct DayCareMailRecordMixing *rmMail)
{
return rmMail->mail.itemId;
}
static void sub_80E7AA4(struct UnkStruct_80E7B60 *src, size_t recordSize, u8 (*idxs)[2], u8 which0, u8 which1)
{
struct DayCareMailRecordMixing buffer;
struct UnkStruct_80E7B60 *_src1;
struct UnkStruct_80E7B60 *_src2;
_src1 = (void *)src + recordSize * idxs[which0][0];
memcpy(&buffer, &_src1->unk_00[idxs[which0][1]], sizeof(struct DayCareMailRecordMixing));
_src2 = (void *)src + recordSize * idxs[which1][0];
memcpy(&_src1->unk_00[idxs[which0][1]], &_src2->unk_00[idxs[which1][1]], sizeof(struct DayCareMailRecordMixing));
memcpy(&_src2->unk_00[idxs[which1][1]], &buffer, sizeof(struct DayCareMailRecordMixing));
}
static void sub_80E7B2C(const u8 *src)
{
u8 sum;
int i;
sum = 0;
for (i = 0; i < 256; i ++)
{
sum += src[i];
}
gUnknown_03001160 = sum;
}
static u8 sub_80E7B54(void)
{
return gUnknown_03001160;
}
#ifdef NONMATCHING
static void sub_80E7B60(struct UnkStruct_80E7B60 *src, size_t recordSize, u8 which, TVShow *shows)
{
// r9 = which
u16 i;
u16 j;
u8 linkPlayerCount;
u16 language;
u16 otNameLanguage;
u16 nicknameLanguage;
u32 version;
u8 dcMail1;
u8 dcMail2;
u8 r1_80e7b54;
struct DayCareMailRecordMixing *recordMixingMail;
struct UnkStruct_80E7B60 *_src;
u8 sp04[4];
u8 sp08[4];
struct UnkStruct_80E7B60 *sp0c[4]; // -> sp+48
u8 sp1c[4][2]; // [][0] -> sp+4c, [][1] -> sp+50
u8 sp24[4][2];
// sp+2c = src
// sp+30 = recordSize
u8 sp34;
u16 oldSeed;
bool32 anyRS; // sp+3c
oldSeed = Random2();
SeedRng2(gLinkPlayers[0].trainerId);
linkPlayerCount = GetLinkPlayerCount();
for (i = 0; i < 4; i ++)
{
sp04[i] = 0xFF;
sp08[i] = 0;
sp1c[i][0] = 0;
sp1c[i][1] = 0;
}
anyRS = Link_AnyPartnersPlayingRubyOrSapphire();
for (i = 0; i < GetLinkPlayerCount(); i ++) // r8 = i
{
// sp+54 = linkPlayerCount << 16
// sp+44 = which * recordSize
_src = (void *)src + i * recordSize; // r7
language = gLinkPlayers[i].language; // r9
version = (u8)gLinkPlayers[i].version; // sp+40
for (j = 0; j < _src->unk_70; j ++)
{
// r10 = ~0x10
recordMixingMail = &_src->unk_00[j];
if (recordMixingMail->mail.itemId != ITEM_NONE)
{
if (anyRS)
{
if (StringLength(recordMixingMail->OT_name) <= 5)
{
otNameLanguage = LANGUAGE_JAPANESE;
}
else
{
StripExtCtrlCodes(recordMixingMail->OT_name);
otNameLanguage = language;
}
if (recordMixingMail->monName[0] == EXT_CTRL_CODE_BEGIN && recordMixingMail->monName[1] == EXT_CTRL_CODE_JPN)
{
StripExtCtrlCodes(recordMixingMail->monName);
nicknameLanguage = LANGUAGE_JAPANESE;
}
else
{
nicknameLanguage = language;
}
if (version == VERSION_RUBY || version == VERSION_SAPPHIRE)
{
recordMixingMail->language_maybe = otNameLanguage;
recordMixingMail->unknown = nicknameLanguage;
}
}
else if (language == LANGUAGE_JAPANESE)
{
if (IsStringJapanese(recordMixingMail->OT_name))
{
recordMixingMail->language_maybe = LANGUAGE_JAPANESE;
}
else
{
recordMixingMail->language_maybe = GAME_LANGUAGE;
}
if (IsStringJapanese(recordMixingMail->monName))
{
recordMixingMail->unknown = LANGUAGE_JAPANESE;
}
else
{
recordMixingMail->unknown = GAME_LANGUAGE;
}
}
}
}
}
sp34 = 0;
for (i = 0; i < linkPlayerCount; i ++)
{
_src = (void *)src + i * recordSize; // r7
if (_src->unk_70 != 0)
{
for (j = 0; j < _src->unk_70; j ++)
{
if (_src->unk_74[j] == 0)
{
sp1c[i][j] = 1;
}
}
}
}
i = 0;
for (j = 0; j < linkPlayerCount; j ++)
{
_src = (void *)src + j * recordSize;
if (sp1c[j][0] == TRUE || sp1c[j][1] == TRUE)
{
sp34 ++;
}
if (sp1c[j][0] == TRUE && sp1c[j][1] == FALSE)
{
sp24[i][0] = j;
sp24[i][1] = 0;
i ++;
}
else if (sp1c[j][0] == FALSE && sp1c[j][1] == TRUE)
{
sp24[i][0] = j;
sp24[i][1] = 0;
i ++;
}
else if (sp1c[j][0] == TRUE && sp1c[j][1] == TRUE)
{
sp24[i][0] = j;
dcMail1 = sub_80E7A9C(&_src->unk_00[0]);
dcMail2 = sub_80E7A9C(&_src->unk_00[1]);
if (!dcMail1 && dcMail2)
{
sp24[i][1] = 1;
}
else if ((dcMail1 && dcMail2) || (!dcMail1 && !dcMail2))
{
sp24[i][1] = Random2() % 2;
}
else
{
sp24[i][1] = 0;
}
i ++;
}
}
for (i = 0; i < 4; i ++)
{
_src = &src[which * recordSize];
sp0c[i] = _src;
}
r1_80e7b54 = sub_80E7B54() % 3;
switch (sp34)
{
case 2:
sub_80E7AA4(src, recordSize, sp24, 0, 1);
break;
case 3:
sub_80E7AA4(src, recordSize, sp24, gUnknown_0858CFB8[r1_80e7b54][0], gUnknown_0858CFB8[r1_80e7b54][1]);
break;
case 4:
sub_80E7AA4(src, recordSize, sp24, gUnknown_0858CFBE[r1_80e7b54][0], gUnknown_0858CFBE[r1_80e7b54][1]);
sub_80E7AA4(src, recordSize, sp24, gUnknown_0858CFBE[r1_80e7b54][2], gUnknown_0858CFBE[r1_80e7b54][3]);
break;
}
_src = (void *)src + which * recordSize;
memcpy(&gSaveBlock1Ptr->daycare.mons[0].mail, &_src->unk_00[0], sizeof(struct DayCareMailRecordMixing));
memcpy(&gSaveBlock1Ptr->daycare.mons[1].mail, &_src->unk_00[1], sizeof(struct DayCareMailRecordMixing));
SeedRng(oldSeed);
}
#else
__attribute__((naked)) static void sub_80E7B60(struct UnkStruct_80E7B60 *src, size_t recordSize, u8 which, TVShow *shows)
{
asm_unified("\tpush {r4-r7,lr}\n"
"\tmov r7, r10\n"
"\tmov r6, r9\n"
"\tmov r5, r8\n"
"\tpush {r5-r7}\n"
"\tsub sp, 0x58\n"
"\tstr r0, [sp, 0x2C]\n"
"\tstr r1, [sp, 0x30]\n"
"\tlsls r2, 24\n"
"\tlsrs r2, 24\n"
"\tmov r9, r2\n"
"\tbl Random2\n"
"\tlsls r0, 16\n"
"\tlsrs r0, 16\n"
"\tstr r0, [sp, 0x38]\n"
"\tldr r0, =gLinkPlayers\n"
"\tldrh r0, [r0, 0x4]\n"
"\tbl SeedRng2\n"
"\tbl GetLinkPlayerCount\n"
"\tlsls r0, 24\n"
"\tlsrs r4, r0, 24\n"
"\tmovs r0, 0\n"
"\tmov r8, r0\n"
"\tmov r1, sp\n"
"\tadds r1, 0x1C\n"
"\tstr r1, [sp, 0x4C]\n"
"\tmov r2, sp\n"
"\tadds r2, 0x1D\n"
"\tstr r2, [sp, 0x50]\n"
"\tmov r3, sp\n"
"\tadds r3, 0xC\n"
"\tstr r3, [sp, 0x48]\n"
"\tmovs r7, 0xFF\n"
"\tadd r3, sp, 0x8\n"
"\tmovs r2, 0\n"
"\tadds r6, r1, 0\n"
"\tldr r5, [sp, 0x50]\n"
"_080E7BB0:\n"
"\tmov r1, sp\n"
"\tadd r1, r8\n"
"\tadds r1, 0x4\n"
"\tldrb r0, [r1]\n"
"\torrs r0, r7\n"
"\tstrb r0, [r1]\n"
"\tmov r1, r8\n"
"\tadds r0, r3, r1\n"
"\tstrb r2, [r0]\n"
"\tlsls r1, 1\n"
"\tadds r0, r6, r1\n"
"\tstrb r2, [r0]\n"
"\tadds r1, r5, r1\n"
"\tstrb r2, [r1]\n"
"\tmov r0, r8\n"
"\tadds r0, 0x1\n"
"\tlsls r0, 16\n"
"\tlsrs r0, 16\n"
"\tmov r8, r0\n"
"\tcmp r0, 0x3\n"
"\tbls _080E7BB0\n"
"\tbl Link_AnyPartnersPlayingRubyOrSapphire\n"
"\tstr r0, [sp, 0x3C]\n"
"\tmovs r2, 0\n"
"\tmov r8, r2\n"
"\tlsls r4, 16\n"
"\tstr r4, [sp, 0x54]\n"
"\tldr r0, [sp, 0x30]\n"
"\tmov r3, r9\n"
"\tmuls r3, r0\n"
"\tstr r3, [sp, 0x44]\n"
"\tb _080E7D04\n"
"\t.pool\n"
"_080E7BF8:\n"
"\tldr r1, [sp, 0x30]\n"
"\tmov r0, r8\n"
"\tmuls r0, r1\n"
"\tldr r2, [sp, 0x2C]\n"
"\tadds r7, r2, r0\n"
"\tldr r1, =gLinkPlayers\n"
"\tmov r3, r8\n"
"\tlsls r0, r3, 3\n"
"\tsubs r0, r3\n"
"\tlsls r0, 2\n"
"\tadds r0, r1\n"
"\tldrh r1, [r0, 0x1A]\n"
"\tmov r9, r1\n"
"\tldrb r0, [r0]\n"
"\tstr r0, [sp, 0x40]\n"
"\tmovs r6, 0\n"
"\tldr r0, [r7, 0x70]\n"
"\tcmp r6, r0\n"
"\tbcs _080E7CFA\n"
"\tmovs r2, 0x10\n"
"\tnegs r2, r2\n"
"\tmov r10, r2\n"
"_080E7C24:\n"
"\tlsls r0, r6, 3\n"
"\tsubs r0, r6\n"
"\tlsls r0, 3\n"
"\tadds r5, r7, r0\n"
"\tldrh r0, [r5, 0x20]\n"
"\tcmp r0, 0\n"
"\tbeq _080E7CEE\n"
"\tldr r3, [sp, 0x3C]\n"
"\tcmp r3, 0\n"
"\tbeq _080E7C9A\n"
"\tadds r4, r5, 0\n"
"\tadds r4, 0x24\n"
"\tadds r0, r4, 0\n"
"\tbl StringLength\n"
"\tlsls r0, 16\n"
"\tlsrs r0, 16\n"
"\tcmp r0, 0x5\n"
"\tbhi _080E7C54\n"
"\tmovs r4, 0x1\n"
"\tb _080E7C5C\n"
"\t.pool\n"
"_080E7C54:\n"
"\tadds r0, r4, 0\n"
"\tbl StripExtCtrlCodes\n"
"\tmov r4, r9\n"
"_080E7C5C:\n"
"\tldrh r1, [r5, 0x2C]\n"
"\tldr r0, =0x000015fc\n"
"\tcmp r1, r0\n"
"\tbne _080E7C74\n"
"\tadds r0, r5, 0\n"
"\tadds r0, 0x2C\n"
"\tbl StripExtCtrlCodes\n"
"\tmovs r1, 0x1\n"
"\tb _080E7C76\n"
"\t.pool\n"
"_080E7C74:\n"
"\tmov r1, r9\n"
"_080E7C76:\n"
"\tldr r0, [sp, 0x40]\n"
"\tsubs r0, 0x1\n"
"\tcmp r0, 0x1\n"
"\tbhi _080E7CEE\n"
"\tadds r2, r5, 0\n"
"\tadds r2, 0x37\n"
"\tmovs r0, 0xF\n"
"\tands r4, r0\n"
"\tldrb r0, [r2]\n"
"\tmov r3, r10\n"
"\tands r0, r3\n"
"\torrs r0, r4\n"
"\tlsls r1, 4\n"
"\tmovs r3, 0xF\n"
"\tands r0, r3\n"
"\torrs r0, r1\n"
"\tstrb r0, [r2]\n"
"\tb _080E7CEE\n"
"_080E7C9A:\n"
"\tmov r0, r9\n"
"\tcmp r0, 0x1\n"
"\tbne _080E7CEE\n"
"\tadds r0, r5, 0\n"
"\tadds r0, 0x24\n"
"\tbl IsStringJapanese\n"
"\tcmp r0, 0\n"
"\tbeq _080E7CBA\n"
"\tadds r0, r5, 0\n"
"\tadds r0, 0x37\n"
"\tldrb r1, [r0]\n"
"\tmov r2, r10\n"
"\tands r1, r2\n"
"\tmovs r2, 0x1\n"
"\tb _080E7CC6\n"
"_080E7CBA:\n"
"\tadds r0, r5, 0\n"
"\tadds r0, 0x37\n"
"\tldrb r1, [r0]\n"
"\tmov r3, r10\n"
"\tands r1, r3\n"
"\tmovs r2, 0x2\n"
"_080E7CC6:\n"
"\torrs r1, r2\n"
"\tstrb r1, [r0]\n"
"\tadds r4, r0, 0\n"
"\tadds r0, r5, 0\n"
"\tadds r0, 0x2C\n"
"\tbl IsStringJapanese\n"
"\tcmp r0, 0\n"
"\tbeq _080E7CE2\n"
"\tldrb r0, [r4]\n"
"\tmovs r1, 0xF\n"
"\tands r1, r0\n"
"\tmovs r0, 0x10\n"
"\tb _080E7CEA\n"
"_080E7CE2:\n"
"\tldrb r0, [r4]\n"
"\tmovs r1, 0xF\n"
"\tands r1, r0\n"
"\tmovs r0, 0x20\n"
"_080E7CEA:\n"
"\torrs r1, r0\n"
"\tstrb r1, [r4]\n"
"_080E7CEE:\n"
"\tadds r0, r6, 0x1\n"
"\tlsls r0, 16\n"
"\tlsrs r6, r0, 16\n"
"\tldr r0, [r7, 0x70]\n"
"\tcmp r6, r0\n"
"\tbcc _080E7C24\n"
"_080E7CFA:\n"
"\tmov r0, r8\n"
"\tadds r0, 0x1\n"
"\tlsls r0, 16\n"
"\tlsrs r0, 16\n"
"\tmov r8, r0\n"
"_080E7D04:\n"
"\tbl GetLinkPlayerCount\n"
"\tlsls r0, 24\n"
"\tlsrs r0, 24\n"
"\tcmp r8, r0\n"
"\tbcs _080E7D12\n"
"\tb _080E7BF8\n"
"_080E7D12:\n"
"\tmovs r0, 0\n"
"\tstr r0, [sp, 0x34]\n"
"\tmov r8, r0\n"
"\tldr r1, [sp, 0x54]\n"
"\tlsrs r0, r1, 16\n"
"\tldr r2, [sp, 0x34]\n"
"\tcmp r2, r0\n"
"\tbcs _080E7D70\n"
"\tadds r5, r0, 0\n"
"_080E7D24:\n"
"\tldr r3, [sp, 0x30]\n"
"\tmov r0, r8\n"
"\tmuls r0, r3\n"
"\tldr r1, [sp, 0x2C]\n"
"\tadds r7, r1, r0\n"
"\tldr r0, [r7, 0x70]\n"
"\tcmp r0, 0\n"
"\tbeq _080E7D62\n"
"\tmovs r6, 0\n"
"\tcmp r6, r0\n"
"\tbcs _080E7D62\n"
"\tadds r3, r7, 0\n"
"\tadds r3, 0x74\n"
"\tldr r2, [sp, 0x4C]\n"
"\tmov r0, r8\n"
"\tlsls r1, r0, 1\n"
"\tmovs r4, 0x1\n"
"_080E7D46:\n"
"\tlsls r0, r6, 1\n"
"\tadds r0, r3, r0\n"
"\tldrh r0, [r0]\n"
"\tcmp r0, 0\n"
"\tbne _080E7D56\n"
"\tadds r0, r6, r1\n"
"\tadds r0, r2, r0\n"
"\tstrb r4, [r0]\n"
"_080E7D56:\n"
"\tadds r0, r6, 0x1\n"
"\tlsls r0, 16\n"
"\tlsrs r6, r0, 16\n"
"\tldr r0, [r7, 0x70]\n"
"\tcmp r6, r0\n"
"\tbcc _080E7D46\n"
"_080E7D62:\n"
"\tmov r0, r8\n"
"\tadds r0, 0x1\n"
"\tlsls r0, 16\n"
"\tlsrs r0, 16\n"
"\tmov r8, r0\n"
"\tcmp r8, r5\n"
"\tbcc _080E7D24\n"
"_080E7D70:\n"
"\tmovs r6, 0\n"
"\tmov r8, r6\n"
"\tldr r1, [sp, 0x54]\n"
"\tcmp r1, 0\n"
"\tbeq _080E7E64\n"
"\tadd r2, sp, 0x24\n"
"\tmov r10, r2\n"
"\tmovs r3, 0x25\n"
"\tadd r3, sp\n"
"\tmov r9, r3\n"
"_080E7D84:\n"
"\tldr r1, [sp, 0x30]\n"
"\tmov r0, r8\n"
"\tmuls r0, r1\n"
"\tldr r2, [sp, 0x2C]\n"
"\tadds r7, r2, r0\n"
"\tmov r3, r8\n"
"\tlsls r1, r3, 1\n"
"\tldr r2, [sp, 0x4C]\n"
"\tadds r0, r2, r1\n"
"\tldrb r0, [r0]\n"
"\tcmp r0, 0x1\n"
"\tbeq _080E7DA6\n"
"\tldr r3, [sp, 0x50]\n"
"\tadds r0, r3, r1\n"
"\tldrb r0, [r0]\n"
"\tcmp r0, 0x1\n"
"\tbne _080E7DB0\n"
"_080E7DA6:\n"
"\tldr r0, [sp, 0x34]\n"
"\tadds r0, 0x1\n"
"\tlsls r0, 24\n"
"\tlsrs r0, 24\n"
"\tstr r0, [sp, 0x34]\n"
"_080E7DB0:\n"
"\tldr r2, [sp, 0x4C]\n"
"\tadds r0, r2, r1\n"
"\tldrb r0, [r0]\n"
"\tcmp r0, 0x1\n"
"\tbne _080E7DD4\n"
"\tldr r3, [sp, 0x50]\n"
"\tadds r0, r3, r1\n"
"\tldrb r2, [r0]\n"
"\tcmp r2, 0\n"
"\tbne _080E7DD4\n"
"_080E7DC4:\n"
"\tlsls r1, r6, 1\n"
"\tmov r3, r10\n"
"\tadds r0, r3, r1\n"
"\tmov r3, r8\n"
"\tstrb r3, [r0]\n"
"\tadd r1, r9\n"
"\tstrb r2, [r1]\n"
"\tb _080E7E4E\n"
"_080E7DD4:\n"
"\tldr r2, [sp, 0x4C]\n"
"\tadds r0, r2, r1\n"
"\tldrb r0, [r0]\n"
"\tcmp r0, 0\n"
"\tbne _080E7DE8\n"
"\tldr r3, [sp, 0x50]\n"
"\tadds r0, r3, r1\n"
"\tldrb r2, [r0]\n"
"\tcmp r2, 0x1\n"
"\tbeq _080E7DC4\n"
"_080E7DE8:\n"
"\tldr r2, [sp, 0x4C]\n"
"\tadds r0, r2, r1\n"
"\tldrb r0, [r0]\n"
"\tcmp r0, 0x1\n"
"\tbne _080E7E54\n"
"\tldr r3, [sp, 0x50]\n"
"\tadds r0, r3, r1\n"
"\tldrb r0, [r0]\n"
"\tcmp r0, 0x1\n"
"\tbne _080E7E54\n"
"\tlsls r5, r6, 1\n"
"\tmov r1, r10\n"
"\tadds r0, r1, r5\n"
"\tmov r2, r8\n"
"\tstrb r2, [r0]\n"
"\tadds r0, r7, 0\n"
"\tbl sub_80E7A9C\n"
"\tadds r4, r0, 0\n"
"\tlsls r4, 24\n"
"\tlsrs r4, 24\n"
"\tadds r0, r7, 0\n"
"\tadds r0, 0x38\n"
"\tbl sub_80E7A9C\n"
"\tlsls r0, 24\n"
"\tlsrs r1, r0, 24\n"
"\tcmp r4, 0\n"
"\tbne _080E7E30\n"
"\tcmp r1, 0\n"
"\tbeq _080E7E34\n"
"\tmov r3, r9\n"
"\tadds r1, r3, r5\n"
"\tmovs r0, 0x1\n"
"\tstrb r0, [r1]\n"
"\tb _080E7E4E\n"
"_080E7E30:\n"
"\tcmp r1, 0\n"
"\tbeq _080E7E48\n"
"_080E7E34:\n"
"\tbl Random2\n"
"\tmov r1, r9\n"
"\tadds r2, r1, r5\n"
"\tlsls r0, 16\n"
"\tlsrs r0, 16\n"
"\tmovs r1, 0x1\n"
"\tands r0, r1\n"
"\tstrb r0, [r2]\n"
"\tb _080E7E4E\n"
"_080E7E48:\n"
"\tmov r2, r9\n"
"\tadds r0, r2, r5\n"
"\tstrb r1, [r0]\n"
"_080E7E4E:\n"
"\tadds r0, r6, 0x1\n"
"\tlsls r0, 16\n"
"\tlsrs r6, r0, 16\n"
"_080E7E54:\n"
"\tmov r0, r8\n"
"\tadds r0, 0x1\n"
"\tlsls r0, 16\n"
"\tlsrs r3, r0, 16\n"
"\tmov r8, r3\n"
"\tldr r1, [sp, 0x54]\n"
"\tcmp r0, r1\n"
"\tbcc _080E7D84\n"
"_080E7E64:\n"
"\tmovs r2, 0\n"
"\tmov r8, r2\n"
"\tldr r3, [sp, 0x44]\n"
"\tlsls r0, r3, 4\n"
"\tsubs r0, r3\n"
"\tlsls r0, 3\n"
"\tldr r1, [sp, 0x2C]\n"
"\tadds r7, r1, r0\n"
"\tldr r1, [sp, 0x48]\n"
"_080E7E76:\n"
"\tmov r2, r8\n"
"\tlsls r0, r2, 2\n"
"\tadds r0, r1, r0\n"
"\tstr r7, [r0]\n"
"\tmov r0, r8\n"
"\tadds r0, 0x1\n"
"\tlsls r0, 16\n"
"\tlsrs r0, 16\n"
"\tmov r8, r0\n"
"\tcmp r0, 0x3\n"
"\tbls _080E7E76\n"
"\tbl sub_80E7B54\n"
"\tlsls r0, 24\n"
"\tlsrs r0, 24\n"
"\tmovs r1, 0x3\n"
"\tbl __umodsi3\n"
"\tlsls r0, 24\n"
"\tlsrs r1, r0, 24\n"
"\tldr r3, [sp, 0x34]\n"
"\tcmp r3, 0x3\n"
"\tbeq _080E7EC8\n"
"\tcmp r3, 0x3\n"
"\tbgt _080E7EAE\n"
"\tcmp r3, 0x2\n"
"\tbeq _080E7EB6\n"
"\tb _080E7F1C\n"
"_080E7EAE:\n"
"\tldr r0, [sp, 0x34]\n"
"\tcmp r0, 0x4\n"
"\tbeq _080E7EE8\n"
"\tb _080E7F1C\n"
"_080E7EB6:\n"
"\tadd r2, sp, 0x24\n"
"\tmovs r0, 0x1\n"
"\tstr r0, [sp]\n"
"\tldr r0, [sp, 0x2C]\n"
"\tldr r1, [sp, 0x30]\n"
"\tmovs r3, 0\n"
"\tbl sub_80E7AA4\n"
"\tb _080E7F1C\n"
"_080E7EC8:\n"
"\tldr r0, =gUnknown_0858CFB8\n"
"\tlsls r1, 1\n"
"\tadds r2, r1, r0\n"
"\tldrb r3, [r2]\n"
"\tadds r0, 0x1\n"
"\tadds r1, r0\n"
"\tldrb r0, [r1]\n"
"\tadd r2, sp, 0x24\n"
"\tstr r0, [sp]\n"
"\tldr r0, [sp, 0x2C]\n"
"\tldr r1, [sp, 0x30]\n"
"\tbl sub_80E7AA4\n"
"\tb _080E7F1C\n"
"\t.pool\n"
"_080E7EE8:\n"
"\tadd r6, sp, 0x24\n"
"\tldr r4, =gUnknown_0858CFBE\n"
"\tlsls r5, r1, 2\n"
"\tadds r0, r5, r4\n"
"\tldrb r3, [r0]\n"
"\tadds r0, r4, 0x1\n"
"\tadds r0, r5, r0\n"
"\tldrb r0, [r0]\n"
"\tstr r0, [sp]\n"
"\tldr r0, [sp, 0x2C]\n"
"\tldr r1, [sp, 0x30]\n"
"\tadds r2, r6, 0\n"
"\tbl sub_80E7AA4\n"
"\tadds r0, r4, 0x2\n"
"\tadds r0, r5, r0\n"
"\tldrb r3, [r0]\n"
"\tadds r4, 0x3\n"
"\tadds r5, r4\n"
"\tldrb r0, [r5]\n"
"\tstr r0, [sp]\n"
"\tldr r0, [sp, 0x2C]\n"
"\tldr r1, [sp, 0x30]\n"
"\tadds r2, r6, 0\n"
"\tbl sub_80E7AA4\n"
"_080E7F1C:\n"
"\tldr r1, [sp, 0x2C]\n"
"\tldr r2, [sp, 0x44]\n"
"\tadds r7, r1, r2\n"
"\tldr r4, =gSaveBlock1Ptr\n"
"\tldr r0, [r4]\n"
"\tmovs r3, 0xC2\n"
"\tlsls r3, 6\n"
"\tadds r0, r3\n"
"\tadds r1, r7, 0\n"
"\tmovs r2, 0x38\n"
"\tbl memcpy\n"
"\tldr r0, [r4]\n"
"\tldr r1, =0x0000310c\n"
"\tadds r0, r1\n"
"\tadds r1, r7, 0\n"
"\tadds r1, 0x38\n"
"\tmovs r2, 0x38\n"
"\tbl memcpy\n"
"\tldr r0, [sp, 0x38]\n"
"\tbl SeedRng\n"
"\tadd sp, 0x58\n"
"\tpop {r3-r5}\n"
"\tmov r8, r3\n"
"\tmov r9, r4\n"
"\tmov r10, r5\n"
"\tpop {r4-r7}\n"
"\tpop {r0}\n"
"\tbx r0\n"
"\t.pool");
}
#endif // NONMATCHING