.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.