Files
PokemonEmeraldSafariFrontier/asm/record_mixing.s
2018-05-22 21:54:57 +02:00

879 lines
13 KiB
ArmAsm

.include "asm/macros.inc"
.include "constants/constants.inc"
.syntax unified
.text
thumb_func_start sub_80E8468
sub_80E8468: @ 80E8468
push {r4-r7,lr}
mov r7, r8
push {r7}
sub sp, 0x14
adds r6, r0, 0
adds r5, r1, 0
adds r4, r2, 0
mov r0, sp
bl sub_80E7830
lsls r4, 2
mov r1, sp
adds r0, r1, r4
ldr r0, [r0]
muls r0, r5
adds r3, r6, r0
movs r7, 0
movs r2, 0
mov r8, r2
movs r5, 0
adds r6, r3, 0
adds r6, 0x38
adds r4, r3, 0
_080E8496:
ldrb r0, [r6]
cmp r0, 0xFF
beq _080E84B4
ldr r0, =gSaveBlock2Ptr
ldr r1, [r0]
adds r1, 0xDC
adds r0, r4, 0
str r3, [sp, 0x10]
bl sub_80E841C
ldr r3, [sp, 0x10]
cmp r0, 0
bne _080E84B4
adds r7, 0x1
mov r8, r5
_080E84B4:
adds r6, 0x44
adds r4, 0x44
adds r5, 0x1
cmp r5, 0x1
ble _080E8496
cmp r7, 0x1
beq _080E84CC
cmp r7, 0x2
beq _080E8508
b _080E8566
.pool
_080E84CC:
ldr r4, =gSaveBlock2Ptr
ldr r0, [r4]
adds r1, r0, 0
adds r1, 0xB2
ldrb r1, [r1]
lsls r1, 27
lsrs r1, 30
adds r2, r1, 0x1
lsls r1, r2, 4
adds r1, r2
lsls r1, 2
adds r0, r1
adds r0, 0xDC
mov r2, r8
lsls r1, r2, 4
add r1, r8
lsls r1, 2
adds r1, r3
movs r2, 0x44
bl memcpy
ldr r4, [r4]
adds r4, 0xB2
ldrb r5, [r4]
lsls r0, r5, 27
lsrs r0, 30
adds r0, 0x1
b _080E8550
.pool
_080E8508:
movs r5, 0
adds r6, r3, 0
_080E850C:
movs r0, 0x1
eors r0, r5
ldr r7, =gSaveBlock2Ptr
ldr r4, [r7]
adds r1, r4, 0
adds r1, 0xB2
ldrb r1, [r1]
lsls r1, 27
lsrs r1, 30
adds r0, r1
movs r1, 0x3
bl __modsi3
adds r2, r0, 0x1
lsls r0, r2, 4
adds r0, r2
lsls r0, 2
adds r4, r0
adds r4, 0xDC
adds r0, r4, 0
adds r1, r6, 0
movs r2, 0x44
bl memcpy
adds r6, 0x44
adds r5, 0x1
cmp r5, 0x1
ble _080E850C
ldr r4, [r7]
adds r4, 0xB2
ldrb r5, [r4]
lsls r0, r5, 27
lsrs r0, 30
adds r0, 0x2
_080E8550:
movs r1, 0x3
bl __modsi3
movs r1, 0x3
ands r0, r1
lsls r0, 3
movs r1, 0x19
negs r1, r1
ands r1, r5
orrs r1, r0
strb r1, [r4]
_080E8566:
add sp, 0x14
pop {r3}
mov r8, r3
pop {r4-r7}
pop {r0}
bx r0
.pool
thumb_func_end sub_80E8468
thumb_func_start sub_80E8578
sub_80E8578: @ 80E8578
push {r4-r7,lr}
mov r7, r10
mov r6, r9
mov r5, r8
push {r5-r7}
sub sp, 0x54
str r0, [sp]
ldr r0, [sp, 0x74]
movs r4, 0
mov r8, r4
movs r5, 0
str r5, [sp, 0x4]
ldr r4, =gUnknown_03001168
b _080E85A0
.pool
_080E8598:
adds r1, r2
ldr r6, [sp, 0x4]
adds r6, 0x1
str r6, [sp, 0x4]
_080E85A0:
ldr r5, [sp, 0x4]
cmp r5, r0
bge _080E85B6
cmp r5, r3
beq _080E85B0
stm r4!, {r1}
movs r6, 0x1
add r8, r6
_080E85B0:
mov r5, r8
cmp r5, 0x3
bne _080E8598
_080E85B6:
movs r6, 0
str r6, [sp, 0x4]
subs r0, 0x1
str r0, [sp, 0x24]
_080E85BE:
movs r0, 0
str r0, [sp, 0x8]
ldr r1, [sp, 0x4]
adds r1, 0x1
str r1, [sp, 0x28]
ldr r2, [sp, 0x4]
lsls r2, 1
str r2, [sp, 0x34]
ldr r3, [sp, 0x4]
adds r3, r2, r3
str r3, [sp, 0x10]
movs r4, 0
str r4, [sp, 0x44]
movs r5, 0
str r5, [sp, 0x48]
_080E85DC:
movs r6, 0
mov r8, r6
ldr r0, =gSaveBlock2Ptr
ldr r1, [r0]
ldr r2, [sp, 0x10]
lsls r0, r2, 5
ldr r3, [sp, 0x48]
adds r0, r3, r0
adds r3, r0, r1
lsls r0, r2, 6
ldr r4, [sp, 0x44]
adds r0, r4, r0
ldr r5, [sp]
adds r2, r0, r5
_080E85F8:
adds r0, r2, 0
movs r6, 0x87
lsls r6, 2
adds r1, r3, r6
ldm r1!, {r4-r6}
stm r0!, {r4-r6}
ldr r1, [r1]
str r1, [r0]
adds r3, 0x10
adds r2, 0x10
movs r0, 0x1
add r8, r0
mov r1, r8
cmp r1, 0x2
ble _080E85F8
movs r2, 0
mov r8, r2
ldr r3, [sp, 0x24]
cmp r8, r3
bge _080E86DC
ldr r4, [sp, 0x4]
lsls r4, 5
mov r9, r4
ldr r5, [sp, 0x8]
lsls r7, r5, 4
ldr r6, [sp, 0x34]
ldr r1, [sp, 0x4]
adds r0, r6, r1
lsls r0, 6
str r0, [sp, 0x14]
ldr r2, [sp]
adds r0, r2, r0
ldr r3, [sp, 0x44]
str r3, [sp, 0x18]
adds r0, r3
str r0, [sp, 0x1C]
ldr r4, [sp, 0x14]
adds r0, r3, r4
adds r0, r2
adds r0, 0x30
mov r10, r0
_080E864A:
movs r5, 0
str r5, [sp, 0xC]
movs r3, 0
mov r6, r8
lsls r6, 2
str r6, [sp, 0x38]
ldr r1, [sp, 0x18]
ldr r2, [sp, 0x14]
adds r0, r1, r2
ldr r4, [sp]
adds r5, r0, r4
ldr r0, =gUnknown_03001168
adds r0, r6, r0
str r0, [sp, 0x50]
_080E8666:
lsls r0, r3, 4
ldr r6, [sp, 0x1C]
adds r0, r6, r0
str r3, [sp, 0x4C]
bl ReadUnalignedWord
adds r4, r0, 0
ldr r1, [sp, 0x50]
ldr r0, [r1]
add r0, r9
adds r0, r7
bl ReadUnalignedWord
ldr r3, [sp, 0x4C]
cmp r4, r0
bne _080E86A8
ldr r2, [sp, 0xC]
adds r2, 0x1
str r2, [sp, 0xC]
ldr r4, [sp, 0x50]
ldr r0, [r4]
mov r6, r9
adds r1, r7, r6
adds r1, r0, r1
ldrh r0, [r5, 0x4]
ldrh r2, [r1, 0x4]
cmp r0, r2
bcs _080E86A8
adds r0, r5, 0
ldm r1!, {r2,r4,r6}
stm r0!, {r2,r4,r6}
ldr r1, [r1]
str r1, [r0]
_080E86A8:
adds r5, 0x10
adds r3, 0x1
cmp r3, 0x2
ble _080E8666
ldr r3, [sp, 0xC]
cmp r3, 0
bne _080E86CE
ldr r0, =gUnknown_03001168
ldr r4, [sp, 0x38]
adds r0, r4, r0
ldr r0, [r0]
mov r5, r9
adds r2, r7, r5
mov r1, r10
adds r0, r2
ldm r0!, {r2,r3,r6}
stm r1!, {r2,r3,r6}
ldr r0, [r0]
str r0, [r1]
_080E86CE:
movs r4, 0x10
add r10, r4
movs r5, 0x1
add r8, r5
ldr r6, [sp, 0x24]
cmp r8, r6
blt _080E864A
_080E86DC:
ldr r0, [sp, 0x44]
adds r0, 0x60
str r0, [sp, 0x44]
ldr r1, [sp, 0x48]
adds r1, 0x30
str r1, [sp, 0x48]
ldr r2, [sp, 0x8]
adds r2, 0x1
str r2, [sp, 0x8]
cmp r2, 0x1
bgt _080E86F4
b _080E85DC
_080E86F4:
ldr r3, [sp, 0x28]
str r3, [sp, 0x4]
cmp r3, 0x8
bgt _080E86FE
b _080E85BE
_080E86FE:
movs r4, 0
str r4, [sp, 0x8]
_080E8702:
ldr r5, [sp, 0x8]
adds r5, 0x1
str r5, [sp, 0x2C]
ldr r0, =gSaveBlock2Ptr
ldr r1, [r0]
movs r0, 0x54
ldr r6, [sp, 0x8]
muls r0, r6
adds r3, r0, r1
movs r0, 0xA8
muls r0, r6
ldr r1, [sp]
adds r2, r0, r1
movs r4, 0x2
mov r8, r4
_080E8720:
movs r5, 0xD8
lsls r5, 3
adds r0, r2, r5
ldr r6, =0x0000057c
adds r1, r3, r6
ldm r1!, {r4-r6}
stm r0!, {r4-r6}
ldm r1!, {r4-r6}
stm r0!, {r4-r6}
ldr r1, [r1]
str r1, [r0]
adds r3, 0x1C
adds r2, 0x1C
movs r0, 0x1
negs r0, r0
add r8, r0
mov r1, r8
cmp r1, 0
bge _080E8720
movs r2, 0
mov r8, r2
ldr r3, [sp, 0x24]
cmp r8, r3
blt _080E8752
b _080E885A
_080E8752:
ldr r4, [sp, 0x8]
lsls r1, r4, 3
movs r0, 0xA8
adds r5, r4, 0
muls r5, r0
str r5, [sp, 0x20]
str r5, [sp, 0x3C]
subs r1, r4
lsls r1, 2
mov r10, r1
_080E8766:
movs r6, 0
str r6, [sp, 0xC]
mov r0, r8
lsls r0, 2
str r0, [sp, 0x38]
mov r1, r8
adds r1, 0x1
str r1, [sp, 0x30]
ldr r0, =gUnknown_03001168
ldr r2, [sp, 0x38]
adds r2, r0
mov r9, r2
ldr r3, [sp]
movs r4, 0xD8
lsls r4, 3
adds r0, r3, r4
ldr r5, [sp, 0x3C]
adds r7, r5, r0
str r6, [sp, 0x40]
movs r3, 0x2
_080E878E:
ldr r1, [sp, 0x20]
movs r2, 0xD8
lsls r2, 3
adds r0, r1, r2
ldr r4, [sp]
adds r0, r4, r0
ldr r6, [sp, 0x40]
adds r5, r0, r6
adds r0, r5, 0
str r3, [sp, 0x4C]
bl ReadUnalignedWord
adds r4, r0, 0
movs r6, 0x90
lsls r6, 1
add r6, r10
mov r1, r9
ldr r0, [r1]
adds r0, r6
bl ReadUnalignedWord
ldr r3, [sp, 0x4C]
cmp r4, r0
bne _080E8808
adds r0, r5, 0x4
bl ReadUnalignedWord
adds r4, r0, 0
mov r2, r9
ldr r0, [r2]
adds r0, r6
adds r0, 0x4
bl ReadUnalignedWord
ldr r3, [sp, 0x4C]
cmp r4, r0
bne _080E8808
ldr r4, [sp, 0xC]
adds r4, 0x1
str r4, [sp, 0xC]
mov r5, r9
ldr r0, [r5]
mov r6, r10
adds r2, r0, r6
movs r0, 0x94
lsls r0, 1
adds r1, r2, r0
ldrh r0, [r7, 0x8]
ldrh r1, [r1]
cmp r0, r1
bcs _080E8808
adds r0, r7, 0
movs r4, 0x90
lsls r4, 1
adds r1, r2, r4
ldm r1!, {r2,r5,r6}
stm r0!, {r2,r5,r6}
ldm r1!, {r4-r6}
stm r0!, {r4-r6}
ldr r1, [r1]
str r1, [r0]
_080E8808:
adds r7, 0x1C
ldr r0, [sp, 0x40]
adds r0, 0x1C
str r0, [sp, 0x40]
subs r3, 0x1
cmp r3, 0
bge _080E878E
ldr r1, [sp, 0xC]
cmp r1, 0
bne _080E8850
mov r0, r8
adds r0, 0x3
lsls r1, r0, 3
subs r1, r0
lsls r1, 2
ldr r2, [sp, 0x20]
adds r1, r2
ldr r3, [sp]
adds r1, r3, r1
ldr r0, =gUnknown_03001168
ldr r4, [sp, 0x38]
adds r0, r4, r0
ldr r0, [r0]
add r0, r10
movs r5, 0xD8
lsls r5, 3
adds r1, r5
movs r6, 0x90
lsls r6, 1
adds r0, r6
ldm r0!, {r2-r4}
stm r1!, {r2-r4}
ldm r0!, {r2,r5,r6}
stm r1!, {r2,r5,r6}
ldr r0, [r0]
str r0, [r1]
_080E8850:
ldr r3, [sp, 0x30]
mov r8, r3
ldr r4, [sp, 0x24]
cmp r8, r4
blt _080E8766
_080E885A:
ldr r5, [sp, 0x2C]
str r5, [sp, 0x8]
cmp r5, 0x1
bgt _080E8864
b _080E8702
_080E8864:
add sp, 0x54
pop {r3-r5}
mov r8, r3
mov r9, r4
mov r10, r5
pop {r4-r7}
pop {r0}
bx r0
.pool
thumb_func_end sub_80E8578
thumb_func_start sub_80E8880
sub_80E8880: @ 80E8880
push {r4-r7,lr}
mov r12, r0
adds r7, r1, 0
movs r5, 0
_080E8888:
movs r2, 0
movs r4, 0x1
negs r4, r4
movs r1, 0
adds r6, r5, 0x1
adds r3, r7, 0
_080E8894:
ldrh r0, [r3, 0x4]
cmp r0, r2
ble _080E889E
adds r4, r1, 0
adds r2, r0, 0
_080E889E:
adds r3, 0x10
adds r1, 0x1
cmp r1, 0x5
ble _080E8894
cmp r4, 0
blt _080E88C0
lsls r1, r5, 4
lsls r2, r4, 4
adds r2, r7
add r1, r12
adds r0, r2, 0
ldm r0!, {r3-r5}
stm r1!, {r3-r5}
ldr r0, [r0]
str r0, [r1]
movs r0, 0
strh r0, [r2, 0x4]
_080E88C0:
adds r5, r6, 0
cmp r5, 0x2
ble _080E8888
pop {r4-r7}
pop {r0}
bx r0
thumb_func_end sub_80E8880
thumb_func_start sub_80E88CC
sub_80E88CC: @ 80E88CC
push {r4-r7,lr}
mov r12, r0
adds r6, r1, 0
movs r5, 0
_080E88D4:
movs r3, 0
movs r4, 0x1
negs r4, r4
movs r2, 0
adds r7, r5, 0x1
adds r1, r6, 0
_080E88E0:
ldrh r0, [r1, 0x8]
cmp r0, r3
ble _080E88EA
adds r4, r2, 0
adds r3, r0, 0
_080E88EA:
adds r1, 0x1C
adds r2, 0x1
cmp r2, 0x5
ble _080E88E0
cmp r4, 0
blt _080E8918
lsls r1, r5, 3
subs r1, r5
lsls r1, 2
lsls r2, r4, 3
subs r2, r4
lsls r2, 2
adds r2, r6
add r1, r12
adds r0, r2, 0
ldm r0!, {r3-r5}
stm r1!, {r3-r5}
ldm r0!, {r3-r5}
stm r1!, {r3-r5}
ldr r0, [r0]
str r0, [r1]
movs r0, 0
strh r0, [r2, 0x8]
_080E8918:
adds r5, r7, 0
cmp r5, 0x2
ble _080E88D4
pop {r4-r7}
pop {r0}
bx r0
thumb_func_end sub_80E88CC
thumb_func_start sub_80E8924
sub_80E8924: @ 80E8924
push {r4-r7,lr}
mov r7, r10
mov r6, r9
mov r5, r8
push {r5-r7}
mov r9, r0
movs r0, 0
ldr r1, =gSaveBlock2Ptr
mov r10, r1
_080E8936:
lsls r1, r0, 1
adds r2, r0, 0x1
mov r8, r2
adds r1, r0
lsls r0, r1, 5
movs r2, 0x87
lsls r2, 2
adds r7, r0, r2
lsls r1, 6
mov r0, r9
adds r4, r0, r1
movs r6, 0
movs r5, 0x1
_080E8950:
mov r1, r10
ldr r0, [r1]
adds r0, r7
adds r0, r6
adds r1, r4, 0
bl sub_80E8880
adds r4, 0x60
adds r6, 0x30
subs r5, 0x1
cmp r5, 0
bge _080E8950
mov r0, r8
cmp r0, 0x8
ble _080E8936
movs r5, 0
ldr r4, =gSaveBlock2Ptr
_080E8972:
movs r0, 0x54
adds r1, r5, 0
muls r1, r0
ldr r2, =0x0000057c
adds r1, r2
ldr r0, [r4]
adds r0, r1
movs r1, 0xA8
muls r1, r5
movs r2, 0xD8
lsls r2, 3
adds r1, r2
add r1, r9
bl sub_80E88CC
adds r5, 0x1
cmp r5, 0x1
ble _080E8972
pop {r3-r5}
mov r8, r3
mov r9, r4
mov r10, r5
pop {r4-r7}
pop {r0}
bx r0
.pool
thumb_func_end sub_80E8924
thumb_func_start sub_80E89AC
sub_80E89AC: @ 80E89AC
push {r4-r6,lr}
mov r6, r9
mov r5, r8
push {r5,r6}
sub sp, 0x4
adds r6, r0, 0
mov r8, r1
mov r9, r2
bl GetLinkPlayerCount
adds r4, r0, 0
lsls r4, 24
lsrs r4, 24
movs r0, 0x81
lsls r0, 4
bl AllocZeroed
adds r5, r0, 0
str r4, [sp]
adds r1, r6, 0
mov r2, r8
mov r3, r9
bl sub_80E8578
adds r0, r5, 0
bl sub_80E8924
adds r0, r5, 0
bl Free
add sp, 0x4
pop {r3,r4}
mov r8, r3
mov r9, r4
pop {r4-r6}
pop {r0}
bx r0
thumb_func_end sub_80E89AC
thumb_func_start sub_80E89F8
sub_80E89F8: @ 80E89F8
push {r4-r6,lr}
adds r6, r0, 0
ldr r5, =gUnknown_02039F9C
ldr r4, =gSaveBlock1Ptr
ldr r1, [r4]
movs r0, 0xC2
lsls r0, 6
adds r1, r0
adds r0, r5, 0
movs r2, 0x38
bl memcpy
ldr r1, [r4]
ldr r0, =0x0000310c
adds r1, r0
adds r0, r5, 0
adds r0, 0x38
movs r2, 0x38
bl memcpy
ldr r0, [r4]
ldr r1, =0x00003030
adds r0, r1
adds r1, r5, 0
bl InitDaycareMailRecordMixing
ldr r0, =gUnknown_03001148
ldr r1, [r0]
adds r0, r6, 0
movs r2, 0x78
bl memcpy
pop {r4-r6}
pop {r0}
bx r0
.pool
thumb_func_end sub_80E89F8
thumb_func_start sub_80E8A54
sub_80E8A54: @ 80E8A54
push {r4-r7,lr}
mov r7, r9
mov r6, r8
push {r6,r7}
adds r5, r0, 0
movs r0, 0
mov r9, r0
ldr r0, [r5, 0x70]
cmp r9, r0
bcs _080E8AAE
adds r4, r5, 0
adds r4, 0x2C
movs r0, 0x24
adds r0, r5
mov r8, r0
adds r7, r5, 0
adds r7, 0x37
adds r6, r5, 0
_080E8A78:
ldrh r0, [r6, 0x20]
cmp r0, 0
beq _080E8A9A
ldrb r1, [r4, 0xB]
movs r0, 0xF
ands r0, r1
cmp r0, 0x1
beq _080E8A90
mov r0, r8
movs r1, 0xFC
bl PadNameString
_080E8A90:
ldrb r1, [r7]
lsrs r1, 4
adds r0, r4, 0
bl ConvertInternationalString
_080E8A9A:
adds r4, 0x38
movs r0, 0x38
add r8, r0
adds r7, 0x38
adds r6, 0x38
movs r0, 0x1
add r9, r0
ldr r0, [r5, 0x70]
cmp r9, r0
bcc _080E8A78
_080E8AAE:
pop {r3,r4}
mov r8, r3
mov r9, r4
pop {r4-r7}
pop {r0}
bx r0
thumb_func_end sub_80E8A54
thumb_func_start TaskDummy4
TaskDummy4: @ 80E8ABC
bx lr
thumb_func_end TaskDummy4
thumb_func_start sub_80E8AC0
sub_80E8AC0: @ 80E8AC0
push {r4,r5,lr}
adds r5, r0, 0
movs r4, 0
_080E8AC6:
movs r0, 0x2C
muls r0, r4
adds r0, 0x34
adds r1, r5, r0
ldrh r0, [r1]
cmp r0, 0
beq _080E8ADC
adds r0, r1, 0
adds r0, 0x20
bl StripExtCtrlCodes
_080E8ADC:
adds r4, 0x1
cmp r4, 0x3
ble _080E8AC6
adds r0, r5, 0
bl sub_8164F70
pop {r4,r5}
pop {r0}
bx r0
thumb_func_end sub_80E8AC0
.align 2, 0 @ Don't pad with nop.