diff options
author | Seth Barberee <seth.barberee@gmail.com> | 2021-06-18 17:56:20 -0500 |
---|---|---|
committer | Seth Barberee <seth.barberee@gmail.com> | 2021-06-18 17:56:20 -0500 |
commit | f1fdcc2b0ade13ad1a4cc7360eac70f27396d26a (patch) | |
tree | 3ac5b9f61650299f96095e3d3c09ad771793be08 | |
parent | e806b05526bfcc540cb2c1f3165a96e76f6c235d (diff) |
more splitting and labeling with some decomp
57 files changed, 6697 insertions, 7202 deletions
diff --git a/asm/code_801AFA4.s b/asm/code_801AFA4.s index c966a8c..f966cb0 100644 --- a/asm/code_801AFA4.s +++ b/asm/code_801AFA4.s @@ -277,7 +277,7 @@ sub_801B374: lsrs r0, 24 ldr r1, _0801B3A8 ldr r4, [r1] - bl sub_80913CC + bl GetItemMove lsls r0, 16 lsrs r6, r0, 16 movs r5, 0 @@ -313,2324 +313,4 @@ _0801B3BA: bx r1 thumb_func_end sub_801B374 - thumb_func_start sub_801B3C0 -sub_801B3C0: - push {r4,r5,lr} - adds r5, r0, 0 - movs r0, 0x1 - bl ResetSprites - ldr r4, _0801B40C - movs r0, 0x94 - movs r1, 0x8 - bl MemoryAlloc - str r0, [r4] - ldr r1, [r5] - str r1, [r0, 0x4] - adds r0, 0x88 - bl sub_801317C - ldr r0, [r4] - movs r1, 0 - str r1, [r0, 0x24] - adds r0, 0x28 - bl sub_80140B4 - bl ResetUnusedInputStruct - ldr r0, [r4] - adds r0, 0x28 - movs r1, 0x1 - movs r2, 0x1 - bl sub_800641C - movs r0, 0 - bl sub_801B46C - movs r0, 0x1 - pop {r4,r5} - pop {r1} - bx r1 - .align 2, 0 -_0801B40C: .4byte gUnknown_203B230 - thumb_func_end sub_801B3C0 - - thumb_func_start sub_801B410 -sub_801B410: - push {lr} - ldr r0, _0801B428 - ldr r0, [r0] - ldr r0, [r0] - cmp r0, 0x1 - beq _0801B43C - cmp r0, 0x1 - bgt _0801B42C - cmp r0, 0 - beq _0801B436 - b _0801B446 - .align 2, 0 -_0801B428: .4byte gUnknown_203B230 -_0801B42C: - cmp r0, 0x2 - beq _0801B446 - cmp r0, 0x3 - beq _0801B442 - b _0801B446 -_0801B436: - bl sub_801B51C - b _0801B44A -_0801B43C: - bl sub_801B590 - b _0801B44A -_0801B442: - movs r0, 0x3 - b _0801B44C -_0801B446: - movs r0, 0x2 - b _0801B44C -_0801B44A: - movs r0, 0 -_0801B44C: - pop {r1} - bx r1 - thumb_func_end sub_801B410 - - thumb_func_start sub_801B450 -sub_801B450: - push {r4,lr} - ldr r4, _0801B468 - ldr r0, [r4] - cmp r0, 0 - beq _0801B462 - bl MemoryFree - movs r0, 0 - str r0, [r4] -_0801B462: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0801B468: .4byte gUnknown_203B230 - thumb_func_end sub_801B450 - - thumb_func_start sub_801B46C -sub_801B46C: - push {lr} - ldr r1, _0801B47C - ldr r1, [r1] - str r0, [r1] - bl sub_801B480 - pop {r0} - bx r0 - .align 2, 0 -_0801B47C: .4byte gUnknown_203B230 - thumb_func_end sub_801B46C - - thumb_func_start sub_801B480 -sub_801B480: - push {r4,r5,lr} - sub sp, 0x4 - ldr r5, _0801B4B0 - ldr r0, [r5] - ldr r4, [r0] - cmp r4, 0x1 - beq _0801B4B4 - cmp r4, 0x1 - bgt _0801B50C - cmp r4, 0 - bne _0801B50C - ldr r0, [r0, 0x24] - bl sub_8008C54 - ldr r2, [r5] - adds r0, r2, 0x4 - ldr r1, [r2, 0x24] - adds r2, 0x10 - bl sub_80913E0 - ldr r1, [r5] - str r0, [r1, 0xC] - str r4, [r1, 0x20] - b _0801B50C - .align 2, 0 -_0801B4B0: .4byte gUnknown_203B230 -_0801B4B4: - ldr r0, [r0, 0x24] - bl sub_8008C54 - ldr r0, [r5] - ldr r0, [r0, 0x24] - bl sub_80073B8 - ldr r0, [r5] - ldr r1, [r0, 0x8] - lsls r1, 2 - adds r0, 0x10 - adds r0, r1 - ldr r1, [r0] - ldr r0, _0801B514 - ldr r1, [r1] - bl strcpy - ldr r2, _0801B518 - ldr r0, [r5] - ldr r3, [r0, 0x24] - movs r4, 0 - str r4, [sp] - movs r0, 0x10 - movs r1, 0 - bl sub_8014FF0 - ldr r3, [r5] - ldr r1, [r3, 0x8] - lsls r1, 2 - adds r0, r3, 0 - adds r0, 0x10 - adds r0, r1 - ldr r0, [r0] - ldr r2, [r0, 0x4] - ldr r3, [r3, 0x24] - str r4, [sp] - movs r0, 0x4 - movs r1, 0x10 - bl sub_8014FF0 - ldr r0, [r5] - ldr r0, [r0, 0x24] - bl sub_80073E0 -_0801B50C: - add sp, 0x4 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0801B514: .4byte gAvailablePokemonNames -_0801B518: .4byte gUnknown_80DBA4C - thumb_func_end sub_801B480 - - thumb_func_start sub_801B51C -sub_801B51C: - push {r4,lr} - ldr r0, _0801B558 - ldr r2, [r0] - ldr r1, [r2, 0xC] - adds r4, r0, 0 - cmp r1, 0 - beq _0801B540 - ldr r0, [r2, 0x20] - movs r1, 0x8 - ands r0, r1 - cmp r0, 0 - beq _0801B538 - bl sub_8013F84 -_0801B538: - ldr r1, [r4] - ldr r0, [r1, 0x20] - adds r0, 0x1 - str r0, [r1, 0x20] -_0801B540: - ldr r1, [r4] - adds r0, r1, 0 - adds r0, 0x88 - ldr r1, [r1, 0x24] - bl sub_8012A64 - cmp r0, 0x1 - beq _0801B55C - cmp r0, 0x2 - beq _0801B57E - b _0801B58A - .align 2, 0 -_0801B558: .4byte gUnknown_203B230 -_0801B55C: - movs r0, 0 - bl PlayMenuSoundEffect - ldr r1, [r4] - ldr r0, [r1, 0xC] - cmp r0, 0 - beq _0801B576 - movs r0, 0 - str r0, [r1, 0x8] - movs r0, 0x1 - bl sub_801B46C - b _0801B58A -_0801B576: - movs r0, 0x3 - bl sub_801B46C - b _0801B58A -_0801B57E: - movs r0, 0x1 - bl PlayMenuSoundEffect - movs r0, 0x2 - bl sub_801B46C -_0801B58A: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_801B51C - - thumb_func_start sub_801B590 -sub_801B590: - push {r4,lr} - ldr r0, _0801B5D0 - ldr r3, [r0] - ldr r1, [r3, 0xC] - subs r1, 0x1 - ldr r2, [r3, 0x8] - adds r4, r0, 0 - cmp r2, r1 - bge _0801B5B8 - ldr r0, [r3, 0x20] - movs r1, 0x8 - ands r0, r1 - cmp r0, 0 - beq _0801B5B0 - bl sub_8013F84 -_0801B5B0: - ldr r1, [r4] - ldr r0, [r1, 0x20] - adds r0, 0x1 - str r0, [r1, 0x20] -_0801B5B8: - ldr r1, [r4] - adds r0, r1, 0 - adds r0, 0x88 - ldr r1, [r1, 0x24] - bl sub_8012A64 - cmp r0, 0x1 - beq _0801B5D4 - cmp r0, 0x2 - beq _0801B5F8 - b _0801B604 - .align 2, 0 -_0801B5D0: .4byte gUnknown_203B230 -_0801B5D4: - movs r0, 0 - bl PlayMenuSoundEffect - ldr r0, [r4] - ldr r1, [r0, 0x8] - adds r1, 0x1 - str r1, [r0, 0x8] - ldr r0, [r0, 0xC] - cmp r1, r0 - bge _0801B5F0 - movs r0, 0x1 - bl sub_801B46C - b _0801B604 -_0801B5F0: - movs r0, 0 - bl sub_801B46C - b _0801B604 -_0801B5F8: - movs r0, 0x1 - bl PlayMenuSoundEffect - movs r0, 0x2 - bl sub_801B46C -_0801B604: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_801B590 - - thumb_func_start sub_801B60C -sub_801B60C: - push {r4-r7,lr} - adds r5, r0, 0 - adds r4, r1, 0 - lsls r4, 24 - lsrs r4, 24 - lsls r2, 24 - lsrs r7, r2, 24 - ldr r6, _0801B650 - movs r0, 0xAA - lsls r0, 1 - movs r1, 0x8 - bl MemoryAlloc - str r0, [r6] - adds r2, r0, 0 - adds r2, 0xC8 - movs r1, 0 - str r1, [r2] - str r5, [r0] - strb r4, [r0, 0x12] - ldr r0, [r6] - ldrb r0, [r0, 0x12] - bl sub_8090A60 - lsls r0, 24 - lsrs r1, r0, 24 - cmp r1, 0 - beq _0801B654 - ldr r0, [r6] - strb r7, [r0, 0x11] - ldr r0, [r6] - strb r7, [r0, 0xC] - b _0801B65E - .align 2, 0 -_0801B650: .4byte gUnknown_203B234 -_0801B654: - ldr r0, [r6] - strb r1, [r0, 0x11] - ldr r1, [r6] - movs r0, 0x1 - strb r0, [r1, 0xC] -_0801B65E: - ldr r5, _0801B6A0 - ldr r0, [r5] - movs r1, 0 - movs r2, 0x1 - strb r2, [r0, 0x10] - ldr r0, [r5] - str r1, [r0, 0x14] - strb r1, [r0, 0x18] - ldr r0, [r5] - strb r2, [r0, 0x1C] - ldr r4, _0801B6A4 - bl sub_808D33C - adds r1, r0, 0 - adds r0, r4, 0 - movs r2, 0x6 - bl sub_808D9AC - ldr r0, _0801B6A8 - ldr r2, [r5] - adds r1, r2, 0 - adds r1, 0x10 - adds r2, 0x14 - bl sub_8090E14 - movs r0, 0 - bl sub_801B748 - movs r0, 0x1 - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 -_0801B6A0: .4byte gUnknown_203B234 -_0801B6A4: .4byte gAvailablePokemonNames -_0801B6A8: .4byte gUnknown_202DE58 - thumb_func_end sub_801B60C - - thumb_func_start sub_801B6AC -sub_801B6AC: - push {lr} - ldr r0, _0801B6C4 - ldr r0, [r0] - ldr r0, [r0, 0x4] - subs r0, 0x6 - cmp r0, 0xA - bhi _0801B720 - lsls r0, 2 - ldr r1, _0801B6C8 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_0801B6C4: .4byte gUnknown_203B234 -_0801B6C8: .4byte _0801B6CC - .align 2, 0 -_0801B6CC: - .4byte _0801B6FC - .4byte _0801B702 - .4byte _0801B708 - .4byte _0801B708 - .4byte _0801B70E - .4byte _0801B714 - .4byte _0801B71A - .4byte _0801B720 - .4byte _0801B720 - .4byte _0801B720 - .4byte _0801B6F8 -_0801B6F8: - movs r0, 0x3 - b _0801B726 -_0801B6FC: - bl sub_801BC64 - b _0801B724 -_0801B702: - bl sub_801BC94 - b _0801B724 -_0801B708: - bl sub_801BCCC - b _0801B724 -_0801B70E: - bl sub_801BD80 - b _0801B724 -_0801B714: - bl sub_801BEAC - b _0801B724 -_0801B71A: - bl sub_801BE30 - b _0801B724 -_0801B720: - bl sub_801BEC8 -_0801B724: - movs r0, 0 -_0801B726: - pop {r1} - bx r1 - thumb_func_end sub_801B6AC - - thumb_func_start sub_801B72C -sub_801B72C: - push {r4,lr} - ldr r4, _0801B744 - ldr r0, [r4] - cmp r0, 0 - beq _0801B73E - bl MemoryFree - movs r0, 0 - str r0, [r4] -_0801B73E: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0801B744: .4byte gUnknown_203B234 - thumb_func_end sub_801B72C - - thumb_func_start sub_801B748 -sub_801B748: - push {lr} - ldr r1, _0801B75C - ldr r1, [r1] - str r0, [r1, 0x4] - bl sub_801B760 - bl sub_801B874 - pop {r0} - bx r0 - .align 2, 0 -_0801B75C: .4byte gUnknown_203B234 - thumb_func_end sub_801B748 - - thumb_func_start sub_801B760 -sub_801B760: - push {r4-r7,lr} - ldr r0, _0801B77C - ldr r1, [r0] - ldr r1, [r1, 0x4] - subs r1, 0x1 - adds r4, r0, 0 - cmp r1, 0xE - bls _0801B772 - b _0801B86A -_0801B772: - lsls r0, r1, 2 - ldr r1, _0801B780 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_0801B77C: .4byte gUnknown_203B234 -_0801B780: .4byte _0801B784 - .align 2, 0 -_0801B784: - .4byte _0801B7C0 - .4byte _0801B86A - .4byte _0801B86A - .4byte _0801B86A - .4byte _0801B86A - .4byte _0801B7C0 - .4byte _0801B7C0 - .4byte _0801B7C0 - .4byte _0801B7C0 - .4byte _0801B800 - .4byte _0801B7C0 - .4byte _0801B840 - .4byte _0801B7C0 - .4byte _0801B7C0 - .4byte _0801B7C0 -_0801B7C0: - ldr r4, _0801B7F8 - ldr r0, [r4] - adds r0, 0xF4 - bl sub_8006518 - mov r12, r4 - ldr r4, _0801B7FC - movs r3, 0 - movs r2, 0x3 -_0801B7D2: - mov r0, r12 - ldr r1, [r0] - adds r1, r3 - adds r1, 0xF4 - adds r0, r4, 0 - ldm r0!, {r5-r7} - stm r1!, {r5-r7} - ldm r0!, {r5-r7} - stm r1!, {r5-r7} - adds r3, 0x18 - subs r2, 0x1 - cmp r2, 0 - bge _0801B7D2 - bl ResetUnusedInputStruct - ldr r0, _0801B7F8 - ldr r0, [r0] - b _0801B82E - .align 2, 0 -_0801B7F8: .4byte gUnknown_203B234 -_0801B7FC: .4byte gUnknown_80DBA58 -_0801B800: - ldr r0, [r4] - adds r0, 0xF4 - bl sub_8006518 - bl sub_801BB5C - ldr r2, [r4] - movs r0, 0x92 - lsls r0, 1 - adds r2, r0 - ldr r1, _0801B83C - ldm r1!, {r3,r5,r6} - stm r2!, {r3,r5,r6} - ldm r1!, {r3,r5,r7} - stm r2!, {r3,r5,r7} - ldr r1, [r4] - adds r0, r1, r0 - adds r1, 0xCC - bl sub_8012CAC - bl ResetUnusedInputStruct - ldr r0, [r4] -_0801B82E: - adds r0, 0xF4 - movs r1, 0x1 - movs r2, 0x1 - bl sub_800641C - b _0801B86A - .align 2, 0 -_0801B83C: .4byte gUnknown_80DBA70 -_0801B840: - ldr r0, [r4] - adds r0, 0xF4 - bl sub_8006518 - ldr r1, [r4] - movs r6, 0x86 - lsls r6, 1 - adds r1, r6 - ldr r0, _0801B870 - ldm r0!, {r2,r3,r7} - stm r1!, {r2,r3,r7} - ldm r0!, {r5-r7} - stm r1!, {r5-r7} - bl ResetUnusedInputStruct - ldr r0, [r4] - adds r0, 0xF4 - movs r1, 0x1 - movs r2, 0x1 - bl sub_800641C -_0801B86A: - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0801B870: .4byte gUnknown_80DBA88 - thumb_func_end sub_801B760 - - thumb_func_start sub_801B874 -sub_801B874: - push {r4,lr} - sub sp, 0x14 - ldr r1, _0801B890 - ldr r0, [r1] - ldr r0, [r0, 0x4] - adds r4, r1, 0 - cmp r0, 0x10 - bls _0801B886 - b _0801BB0E -_0801B886: - lsls r0, 2 - ldr r1, _0801B894 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_0801B890: .4byte gUnknown_203B234 -_0801B894: .4byte _0801B898 - .align 2, 0 -_0801B898: - .4byte _0801B8DC - .4byte _0801B9BC - .4byte _0801B9D8 - .4byte _0801B9E0 - .4byte _0801B9F0 - .4byte _0801B9F8 - .4byte _0801BA08 - .4byte _0801BA34 - .4byte _0801BA60 - .4byte _0801BA6E - .4byte _0801BA76 - .4byte _0801BA94 - .4byte _0801BA9E - .4byte _0801BAD0 - .4byte _0801BAE0 - .4byte _0801BAFC - .4byte _0801BB0E -_0801B8DC: - ldr r1, [r4] - ldrb r0, [r1, 0x12] - cmp r0, 0xEA - bne _0801B8FE - movs r0, 0x10 - str r0, [r1, 0x8] - movs r0, 0 - movs r1, 0x47 - movs r2, 0x1 - bl sub_8001784 - cmp r0, 0 - bne _0801B914 - movs r0, 0 - movs r1, 0x47 - movs r2, 0x1 - b _0801B92A -_0801B8FE: - cmp r0, 0xEB - bne _0801B938 - movs r0, 0x10 - str r0, [r1, 0x8] - movs r0, 0 - movs r1, 0x47 - movs r2, 0 - bl sub_8001784 - cmp r0, 0 - beq _0801B924 -_0801B914: - movs r0, 0xFA - lsls r0, 2 - bl sub_80913A0 - movs r0, 0x4 - bl sub_801B748 - b _0801BB0E -_0801B924: - movs r0, 0 - movs r1, 0x47 - movs r2, 0 -_0801B92A: - movs r3, 0x1 - bl sub_800199C - movs r0, 0x3 - bl sub_801B748 - b _0801BB0E -_0801B938: - bl sub_8090A34 - cmp r0, 0x13 - ble _0801B986 - ldr r0, [r4] - ldrb r0, [r0, 0x12] - bl sub_8091524 - lsls r0, 24 - cmp r0, 0 - beq _0801B968 - ldr r0, _0801B970 - ldr r1, [r0] - ldr r2, [r4] - ldrb r0, [r2, 0x12] - lsls r0, 1 - adds r1, 0x50 - adds r3, r1, r0 - ldrh r1, [r3] - ldrb r0, [r2, 0xC] - adds r1, r0 - ldr r0, _0801B974 - cmp r1, r0 - ble _0801B978 -_0801B968: - ldr r1, [r4] - movs r0, 0x6 - b _0801B99C - .align 2, 0 -_0801B970: .4byte gUnknown_203B460 -_0801B974: .4byte 0x000003e7 -_0801B978: - strh r1, [r3] - movs r0, 0xCB - bl PlaySound - ldr r1, [r4] - movs r0, 0x5 - b _0801B99C -_0801B986: - ldr r0, [r4] - adds r0, 0x10 - bl sub_8091290 - bl sub_80910B4 - movs r0, 0xCB - bl PlaySound - ldr r1, [r4] - movs r0, 0x10 -_0801B99C: - str r0, [r1, 0x8] - ldr r0, _0801B9B0 - ldr r0, [r0] - ldr r0, [r0] - cmp r0, 0x1 - bne _0801B9B4 - movs r0, 0x2 - bl sub_801B748 - b _0801BB0E - .align 2, 0 -_0801B9B0: .4byte gUnknown_203B234 -_0801B9B4: - movs r0, 0x1 - bl sub_801B748 - b _0801BB0E -_0801B9BC: - movs r0, 0 - bl sub_808D544 - cmp r0, 0x1 - bgt _0801B9D0 - ldr r0, _0801B9CC - b _0801BAE8 - .align 2, 0 -_0801B9CC: .4byte gUnknown_80DBAA0 -_0801B9D0: - ldr r0, _0801B9D4 - b _0801BAE8 - .align 2, 0 -_0801B9D4: .4byte gUnknown_80DBAD0 -_0801B9D8: - ldr r0, _0801B9DC - b _0801BAE8 - .align 2, 0 -_0801B9DC: .4byte gUnknown_80DBB08 -_0801B9E0: - movs r0, 0xD4 - bl PlaySound - ldr r0, _0801B9EC - b _0801BAE8 - .align 2, 0 -_0801B9EC: .4byte gUnknown_80DBB38 -_0801B9F0: - ldr r0, _0801B9F4 - b _0801BAE8 - .align 2, 0 -_0801B9F4: .4byte gUnknown_80DBB9C -_0801B9F8: - ldr r1, [r4] - movs r0, 0x10 - str r0, [r1, 0x8] - ldr r0, _0801BA04 - b _0801BAE8 - .align 2, 0 -_0801BA04: .4byte gUnknown_80DBC28 -_0801BA08: - bl sub_801BB20 - ldr r0, _0801BA2C - ldr r1, _0801BA30 - ldr r3, [r1] - adds r3, 0xCC - movs r2, 0 - str r2, [sp] - movs r1, 0x4 - str r1, [sp, 0x4] - str r2, [sp, 0x8] - str r2, [sp, 0xC] - str r2, [sp, 0x10] - movs r1, 0 - movs r2, 0x4 - bl sub_8014248 - b _0801BB0E - .align 2, 0 -_0801BA2C: .4byte gUnknown_80DBC60 -_0801BA30: .4byte gUnknown_203B234 -_0801BA34: - bl sub_801BC24 - ldr r0, _0801BA58 - ldr r1, _0801BA5C - ldr r3, [r1] - adds r3, 0xCC - movs r2, 0 - str r2, [sp] - movs r1, 0x4 - str r1, [sp, 0x4] - str r2, [sp, 0x8] - str r2, [sp, 0xC] - str r2, [sp, 0x10] - movs r1, 0 - movs r2, 0x3 - bl sub_8014248 - b _0801BB0E - .align 2, 0 -_0801BA58: .4byte gUnknown_80DBC98 -_0801BA5C: .4byte gUnknown_203B234 -_0801BA60: - movs r0, 0x1 - movs r1, 0x3 - movs r2, 0 - movs r3, 0xA - bl sub_801A5D8 - b _0801BB0E -_0801BA6E: - movs r0, 0x1 - bl sub_801A8D0 - b _0801BB0E -_0801BA76: - bl sub_801A9E0 - ldr r0, _0801BA90 - ldr r2, [r0] - adds r0, r2, 0 - adds r0, 0x28 - adds r1, r2, 0 - adds r1, 0xCC - adds r2, 0xC8 - ldr r2, [r2] - str r2, [sp] - movs r2, 0x2 - b _0801BAC0 - .align 2, 0 -_0801BA90: .4byte gUnknown_203B234 -_0801BA94: - ldr r0, [r4] - adds r0, 0x20 - bl sub_801B3C0 - b _0801BB0E -_0801BA9E: - bl sub_801A9E0 - ldr r4, _0801BACC - ldr r0, [r4] - adds r0, 0x28 - movs r1, 0 - bl sub_8012EA4 - bl sub_801BC24 - ldr r1, [r4] - adds r0, r1, 0 - adds r0, 0x78 - adds r1, 0xCC - movs r2, 0x3 - str r2, [sp] - movs r2, 0x1 -_0801BAC0: - str r2, [sp, 0x4] - movs r2, 0 - movs r3, 0 - bl sub_8012D60 - b _0801BB0E - .align 2, 0 -_0801BACC: .4byte gUnknown_203B234 -_0801BAD0: - ldr r1, [r4] - movs r0, 0x10 - str r0, [r1, 0x8] - ldr r0, _0801BADC - b _0801BAE8 - .align 2, 0 -_0801BADC: .4byte gUnknown_80DBCC4 -_0801BAE0: - ldr r1, [r4] - movs r0, 0x10 - str r0, [r1, 0x8] - ldr r0, _0801BAF4 -_0801BAE8: - ldr r3, _0801BAF8 - movs r1, 0 - movs r2, 0 - bl sub_80141B4 - b _0801BB0E - .align 2, 0 -_0801BAF4: .4byte gUnknown_80DBCE8 -_0801BAF8: .4byte 0x00000101 -_0801BAFC: - ldr r1, [r4] - movs r0, 0x10 - str r0, [r1, 0x8] - ldr r0, _0801BB18 - ldr r3, _0801BB1C - movs r1, 0 - movs r2, 0 - bl sub_80141B4 -_0801BB0E: - add sp, 0x14 - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0801BB18: .4byte gUnknown_80DBD24 -_0801BB1C: .4byte 0x00000101 - thumb_func_end sub_801B874 - - thumb_func_start sub_801BB20 -sub_801BB20: - ldr r0, _0801BB50 - ldr r3, [r0] - movs r2, 0 - adds r1, r3, 0 - adds r1, 0xCC - ldr r0, _0801BB54 - str r0, [r1] - adds r1, 0x4 - movs r0, 0x4 - str r0, [r1] - adds r1, 0x4 - ldr r0, _0801BB58 - str r0, [r1] - adds r1, 0x4 - movs r0, 0x5 - str r0, [r1] - adds r0, r3, 0 - adds r0, 0xDC - str r2, [r0] - adds r1, 0x8 - movs r0, 0x1 - negs r0, r0 - str r0, [r1] - bx lr - .align 2, 0 -_0801BB50: .4byte gUnknown_203B234 -_0801BB54: .4byte gKangaskhanTrashToolboxItem -_0801BB58: .4byte gKangaskhanTrashReceivedItem - thumb_func_end sub_801BB20 - - thumb_func_start sub_801BB5C -sub_801BB5C: - push {r4-r7,lr} - ldr r4, _0801BBEC - ldr r2, [r4] - adds r1, r2, 0 - adds r1, 0xCC - ldr r0, _0801BBF0 - str r0, [r1] - adds r1, 0x4 - movs r0, 0x6 - str r0, [r1] - ldr r0, [r2, 0x24] - bl sub_801ADA0 - lsls r0, 24 - cmp r0, 0 - bne _0801BB86 - ldr r0, [r4] - adds r0, 0xD0 - movs r1, 0x1 - negs r1, r1 - str r1, [r0] -_0801BB86: - ldr r0, [r4] - mov r12, r0 - movs r3, 0x1 - movs r2, 0x8 - mov r1, r12 - adds r1, 0xD4 - ldr r0, _0801BBF4 - str r0, [r1] - adds r1, 0x4 - movs r0, 0x7 - str r0, [r1] - adds r1, 0x4 - ldr r0, _0801BBF8 - ldr r0, [r0] - str r0, [r1] - mov r0, r12 - adds r0, 0xE0 - str r2, [r0] - movs r5, 0x3 - adds r1, 0x8 - movs r0, 0 - str r0, [r1] - mov r0, r12 - adds r0, 0xE8 - str r3, [r0] - movs r3, 0 - adds r6, r4, 0 - movs r7, 0x1 - negs r7, r7 - mov r4, r12 - adds r4, 0xC8 - subs r1, 0x14 -_0801BBC6: - ldr r2, [r1] - cmp r2, r7 - beq _0801BBD2 - ldr r0, [r4] - cmp r2, r0 - beq _0801BC1C -_0801BBD2: - adds r1, 0x8 - adds r3, 0x1 - cmp r3, r5 - blt _0801BBC6 - movs r3, 0 - cmp r3, r5 - bge _0801BC1C - ldr r2, [r6] - adds r0, r2, 0 - adds r0, 0xD0 - ldr r1, [r0] - b _0801BC0E - .align 2, 0 -_0801BBEC: .4byte gUnknown_203B234 -_0801BBF0: .4byte gKangaskhanStorage -_0801BBF4: .4byte gKangaskhanTrash -_0801BBF8: .4byte gUnknown_80D4970 -_0801BBFC: - adds r3, 0x1 - cmp r3, r5 - bge _0801BC1C - ldr r2, [r6] - lsls r0, r3, 3 - adds r1, r2, 0 - adds r1, 0xD0 - adds r1, r0 - ldr r1, [r1] -_0801BC0E: - movs r0, 0x1 - negs r0, r0 - cmp r1, r0 - beq _0801BBFC - adds r0, r2, 0 - adds r0, 0xC8 - str r1, [r0] -_0801BC1C: - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_801BB5C - - thumb_func_start sub_801BC24 -sub_801BC24: - ldr r0, _0801BC58 - ldr r0, [r0] - mov r12, r0 - movs r3, 0 - mov r1, r12 - adds r1, 0xCC - ldr r0, _0801BC5C - ldr r0, [r0] - str r0, [r1] - adds r1, 0x4 - movs r0, 0x2 - str r0, [r1] - movs r2, 0x1 - adds r1, 0x4 - ldr r0, _0801BC60 - ldr r0, [r0] - str r0, [r1] - adds r1, 0x4 - movs r0, 0x3 - str r0, [r1] - mov r0, r12 - adds r0, 0xDC - str r3, [r0] - adds r0, 0x4 - str r2, [r0] - bx lr - .align 2, 0 -_0801BC58: .4byte gUnknown_203B234 -_0801BC5C: .4byte gUnknown_80D4920 -_0801BC60: .4byte gUnknown_80D4928 - thumb_func_end sub_801BC24 - - thumb_func_start sub_801BC64 -sub_801BC64: - push {lr} - sub sp, 0x4 - mov r0, sp - bl sub_80144A4 - cmp r0, 0 - bne _0801BC8C - ldr r0, [sp] - cmp r0, 0x4 - beq _0801BC7E - cmp r0, 0x5 - beq _0801BC86 - b _0801BC8C -_0801BC7E: - movs r0, 0x8 - bl sub_801B748 - b _0801BC8C -_0801BC86: - movs r0, 0x7 - bl sub_801B748 -_0801BC8C: - add sp, 0x4 - pop {r0} - bx r0 - thumb_func_end sub_801BC64 - - thumb_func_start sub_801BC94 -sub_801BC94: - push {lr} - sub sp, 0x4 - mov r0, sp - bl sub_80144A4 - cmp r0, 0 - bne _0801BCC6 - ldr r0, [sp] - cmp r0, 0x2 - beq _0801BCB8 - cmp r0, 0x2 - bgt _0801BCB2 - cmp r0, 0x1 - beq _0801BCC0 - b _0801BCC6 -_0801BCB2: - cmp r0, 0x3 - beq _0801BCC0 - b _0801BCC6 -_0801BCB8: - movs r0, 0xD - bl sub_801B748 - b _0801BCC6 -_0801BCC0: - movs r0, 0x6 - bl sub_801B748 -_0801BCC6: - add sp, 0x4 - pop {r0} - bx r0 - thumb_func_end sub_801BC94 - - thumb_func_start sub_801BCCC -sub_801BCCC: - push {lr} - movs r0, 0x1 - bl sub_801A6E8 - cmp r0, 0x4 - bhi _0801BD7A - lsls r0, 2 - ldr r1, _0801BCE4 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_0801BCE4: .4byte _0801BCE8 - .align 2, 0 -_0801BCE8: - .4byte _0801BD7A - .4byte _0801BD7A - .4byte _0801BD70 - .4byte _0801BCFC - .4byte _0801BD34 -_0801BCFC: - bl sub_801A8AC - ldr r1, _0801BD28 - ldr r2, [r1] - str r0, [r2, 0x24] - ldr r1, _0801BD2C - ldr r1, [r1] - lsls r0, 2 - adds r1, r0 - ldr r0, [r1] - str r0, [r2, 0x20] - ldr r0, _0801BD30 - adds r1, r2, 0 - adds r1, 0x20 - adds r2, 0x14 - bl sub_8090E14 - movs r0, 0xA - bl sub_801B748 - b _0801BD7A - .align 2, 0 -_0801BD28: .4byte gUnknown_203B234 -_0801BD2C: .4byte gUnknown_203B460 -_0801BD30: .4byte gUnknown_202DEA8 -_0801BD34: - bl sub_801A8AC - ldr r1, _0801BD64 - ldr r2, [r1] - str r0, [r2, 0x24] - ldr r1, _0801BD68 - ldr r1, [r1] - lsls r0, 2 - adds r1, r0 - ldr r0, [r1] - str r0, [r2, 0x20] - ldr r0, _0801BD6C - adds r1, r2, 0 - adds r1, 0x20 - adds r2, 0x14 - bl sub_8090E14 - movs r0, 0 - bl sub_8099690 - movs r0, 0xB - bl sub_801B748 - b _0801BD7A - .align 2, 0 -_0801BD64: .4byte gUnknown_203B234 -_0801BD68: .4byte gUnknown_203B460 -_0801BD6C: .4byte gUnknown_202DEA8 -_0801BD70: - bl sub_801A928 - movs r0, 0x6 - bl sub_801B748 -_0801BD7A: - pop {r0} - bx r0 - thumb_func_end sub_801BCCC - - thumb_func_start sub_801BD80 -sub_801BD80: - push {r4,lr} - sub sp, 0x4 - movs r0, 0 - str r0, [sp] - bl sub_801A6E8 - ldr r4, _0801BDC4 - ldr r0, [r4] - adds r0, 0x28 - bl sub_8012FD8 - lsls r0, 24 - cmp r0, 0 - bne _0801BDB2 - ldr r0, [r4] - adds r0, 0x28 - mov r1, sp - bl sub_8013114 - ldr r1, [sp] - cmp r1, 0x1 - beq _0801BDB2 - ldr r0, [r4] - adds r0, 0xC8 - str r1, [r0] -_0801BDB2: - ldr r0, [sp] - cmp r0, 0x6 - beq _0801BDD2 - cmp r0, 0x6 - bgt _0801BDC8 - cmp r0, 0x1 - beq _0801BE22 - b _0801BE28 - .align 2, 0 -_0801BDC4: .4byte gUnknown_203B234 -_0801BDC8: - cmp r0, 0x7 - beq _0801BE0C - cmp r0, 0x8 - beq _0801BE14 - b _0801BE28 -_0801BDD2: - ldr r4, _0801BE08 - ldr r0, [r4] - adds r0, 0x20 - bl sub_80917B8 - ldr r0, [r4] - ldr r0, [r0, 0x24] - bl sub_80911F8 - ldr r0, [r4] - adds r0, 0x10 - bl sub_8091290 - bl sub_80910B4 - movs r0, 0xCB - bl PlaySound - movs r0, 0 - bl sub_8099690 - bl sub_801A928 - movs r0, 0xE - bl sub_801B748 - b _0801BE28 - .align 2, 0 -_0801BE08: .4byte gUnknown_203B234 -_0801BE0C: - movs r0, 0xC - bl sub_801B748 - b _0801BE28 -_0801BE14: - movs r0, 0 - bl sub_8099690 - movs r0, 0xB - bl sub_801B748 - b _0801BE28 -_0801BE22: - movs r0, 0x9 - bl sub_801B748 -_0801BE28: - add sp, 0x4 - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_801BD80 - - thumb_func_start sub_801BE30 -sub_801BE30: - push {r4,lr} - sub sp, 0x4 - movs r0, 0 - str r0, [sp] - bl sub_801A6E8 - ldr r4, _0801BE70 - ldr r0, [r4] - adds r0, 0x28 - bl sub_8012FD8 - ldr r0, [r4] - adds r0, 0x78 - bl sub_8012FD8 - lsls r0, 24 - cmp r0, 0 - bne _0801BE5E - ldr r0, [r4] - adds r0, 0x78 - mov r1, sp - bl sub_8013114 -_0801BE5E: - ldr r0, [sp] - cmp r0, 0x2 - beq _0801BE80 - cmp r0, 0x2 - bgt _0801BE74 - cmp r0, 0x1 - beq _0801BE78 - b _0801BEA4 - .align 2, 0 -_0801BE70: .4byte gUnknown_203B234 -_0801BE74: - cmp r0, 0x3 - bne _0801BEA4 -_0801BE78: - movs r0, 0x9 - bl sub_801B748 - b _0801BEA4 -_0801BE80: - ldr r0, [r4] - ldr r0, [r0, 0x24] - bl sub_80911F8 - ldr r0, [r4] - adds r0, 0x10 - bl sub_8091290 - bl sub_80910B4 - movs r0, 0xCB - bl PlaySound - bl sub_801A928 - movs r0, 0xF - bl sub_801B748 -_0801BEA4: - add sp, 0x4 - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_801BE30 - - thumb_func_start sub_801BEAC -sub_801BEAC: - push {lr} - bl sub_801B410 - cmp r0, 0x1 - bls _0801BEC4 - cmp r0, 0x3 - bhi _0801BEC4 - bl sub_801B450 - movs r0, 0x9 - bl sub_801B748 -_0801BEC4: - pop {r0} - bx r0 - thumb_func_end sub_801BEAC - - thumb_func_start sub_801BEC8 -sub_801BEC8: - push {lr} - sub sp, 0x4 - mov r0, sp - bl sub_80144A4 - cmp r0, 0 - bne _0801BEE0 - ldr r0, _0801BEE8 - ldr r0, [r0] - ldr r0, [r0, 0x8] - bl sub_801B748 -_0801BEE0: - add sp, 0x4 - pop {r0} - bx r0 - .align 2, 0 -_0801BEE8: .4byte gUnknown_203B234 - thumb_func_end sub_801BEC8 - - thumb_func_start sub_801BEEC -sub_801BEEC: - push {r4-r6,lr} - lsls r0, 16 - asrs r5, r0, 16 - adds r0, r5, 0 - bl sub_801C5F0 - lsls r0, 24 - lsrs r6, r0, 24 - cmp r6, 0 - bne _0801BF40 - ldr r4, _0801BF38 - movs r0, 0x92 - lsls r0, 1 - movs r1, 0x8 - bl MemoryAlloc - str r0, [r4] - str r6, [r0, 0x30] - strh r5, [r0, 0x4] - ldr r3, _0801BF3C - movs r1, 0x58 - adds r2, r5, 0 - muls r2, r1 - ldr r1, [r3] - adds r1, r2 - str r1, [r0, 0x8] - adds r0, 0xC - movs r2, 0x14 - ldrsh r1, [r1, r2] - bl sub_808EBA8 - ldr r1, [r4] - str r0, [r1, 0x2C] - movs r0, 0 - bl sub_801BFB4 - movs r0, 0x1 - b _0801BF42 - .align 2, 0 -_0801BF38: .4byte gUnknown_203B238 -_0801BF3C: .4byte gRecruitedPokemonRef -_0801BF40: - movs r0, 0 -_0801BF42: - pop {r4-r6} - pop {r1} - bx r1 - thumb_func_end sub_801BEEC - - thumb_func_start sub_801BF48 -sub_801BF48: - push {lr} - ldr r0, _0801BF60 - ldr r0, [r0] - ldr r0, [r0] - cmp r0, 0x4 - bhi _0801BF90 - lsls r0, 2 - ldr r1, _0801BF64 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_0801BF60: .4byte gUnknown_203B238 -_0801BF64: .4byte _0801BF68 - .align 2, 0 -_0801BF68: - .4byte _0801BF80 - .4byte _0801BF80 - .4byte _0801BF86 - .4byte _0801BF8C - .4byte _0801BF7C -_0801BF7C: - movs r0, 0x3 - b _0801BF92 -_0801BF80: - bl sub_801C118 - b _0801BF90 -_0801BF86: - bl sub_801C1A0 - b _0801BF90 -_0801BF8C: - bl sub_801C228 -_0801BF90: - movs r0, 0 -_0801BF92: - pop {r1} - bx r1 - thumb_func_end sub_801BF48 - - thumb_func_start sub_801BF98 -sub_801BF98: - push {r4,lr} - ldr r4, _0801BFB0 - ldr r0, [r4] - cmp r0, 0 - beq _0801BFAA - bl MemoryFree - movs r0, 0 - str r0, [r4] -_0801BFAA: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0801BFB0: .4byte gUnknown_203B238 - thumb_func_end sub_801BF98 - - thumb_func_start sub_801BFB4 -sub_801BFB4: - push {lr} - ldr r1, _0801BFC8 - ldr r1, [r1] - str r0, [r1] - bl sub_801BFCC - bl sub_801C03C - pop {r0} - bx r0 - .align 2, 0 -_0801BFC8: .4byte gUnknown_203B238 - thumb_func_end sub_801BFB4 - - thumb_func_start sub_801BFCC -sub_801BFCC: - push {r4-r7,lr} - ldr r4, _0801BFF0 - ldr r0, [r4] - adds r0, 0xC4 - bl sub_8006518 - ldr r1, [r4] - ldr r0, [r1] - cmp r0, 0x2 - bne _0801BFF8 - adds r1, 0xF4 - ldr r0, _0801BFF4 - ldm r0!, {r2-r4} - stm r1!, {r2-r4} - ldm r0!, {r5-r7} - stm r1!, {r5-r7} - b _0801C01A - .align 2, 0 -_0801BFF0: .4byte gUnknown_203B238 -_0801BFF4: .4byte gUnknown_80DBDB0 -_0801BFF8: - mov r12, r4 - ldr r4, _0801C034 - movs r3, 0 - movs r2, 0x3 -_0801C000: - mov r0, r12 - ldr r1, [r0] - adds r1, r3 - adds r1, 0xC4 - adds r0, r4, 0 - ldm r0!, {r5-r7} - stm r1!, {r5-r7} - ldm r0!, {r5-r7} - stm r1!, {r5-r7} - adds r3, 0x18 - subs r2, 0x1 - cmp r2, 0 - bge _0801C000 -_0801C01A: - bl ResetUnusedInputStruct - ldr r0, _0801C038 - ldr r0, [r0] - adds r0, 0xC4 - movs r1, 0x1 - movs r2, 0x1 - bl sub_800641C - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0801C034: .4byte gUnknown_80DBD98 -_0801C038: .4byte gUnknown_203B238 - thumb_func_end sub_801BFCC - - thumb_func_start sub_801C03C -sub_801C03C: - push {lr} - sub sp, 0x8 - ldr r1, _0801C058 - ldr r0, [r1] - ldr r0, [r0] - adds r2, r1, 0 - cmp r0, 0x4 - bhi _0801C0C2 - lsls r0, 2 - ldr r1, _0801C05C - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_0801C058: .4byte gUnknown_203B238 -_0801C05C: .4byte _0801C060 - .align 2, 0 -_0801C060: - .4byte _0801C074 - .4byte _0801C084 - .4byte _0801C08C - .4byte _0801C0B8 - .4byte _0801C0C2 -_0801C074: - ldr r0, [r2] - movs r1, 0x4 - ldrsh r0, [r0, r1] - movs r1, 0 - movs r2, 0x8 - bl sub_801C244 - b _0801C0C2 -_0801C084: - movs r0, 0x1 - bl sub_801C3B0 - b _0801C0C2 -_0801C08C: - bl sub_801C4C8 - bl sub_801C0C8 - ldr r0, _0801C0B4 - ldr r2, [r0] - adds r0, r2, 0 - adds r0, 0x74 - adds r1, r2, 0 - adds r1, 0x34 - ldr r2, [r2, 0x30] - str r2, [sp] - movs r2, 0x2 - str r2, [sp, 0x4] - movs r2, 0 - movs r3, 0 - bl sub_8012D60 - b _0801C0C2 - .align 2, 0 -_0801C0B4: .4byte gUnknown_203B238 -_0801C0B8: - ldr r0, [r2] - adds r0, 0x28 - ldrb r0, [r0] - bl sub_801C620 -_0801C0C2: - add sp, 0x8 - pop {r0} - bx r0 - thumb_func_end sub_801C03C - - thumb_func_start sub_801C0C8 -sub_801C0C8: - push {r4,r5,lr} - ldr r3, _0801C10C - ldr r1, [r3] - movs r4, 0 - ldr r0, _0801C110 - str r0, [r1, 0x34] - movs r0, 0x2 - str r0, [r1, 0x38] - movs r2, 0x1 - ldr r0, _0801C114 - ldr r0, [r0] - str r0, [r1, 0x3C] - movs r0, 0x3 - str r0, [r1, 0x40] - movs r5, 0x2 - str r4, [r1, 0x44] - str r2, [r1, 0x48] - movs r2, 0 - ldr r4, [r1, 0x30] - adds r1, 0x38 -_0801C0F0: - ldr r0, [r1] - cmp r0, r4 - beq _0801C104 - adds r1, 0x8 - adds r2, 0x1 - cmp r2, r5 - blt _0801C0F0 - ldr r1, [r3] - movs r0, 0x2 - str r0, [r1, 0x30] -_0801C104: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0801C10C: .4byte gUnknown_203B238 -_0801C110: .4byte gUnknown_80DBDC8 -_0801C114: .4byte gUnknown_80D4970 - thumb_func_end sub_801C0C8 - - thumb_func_start sub_801C118 -sub_801C118: - push {lr} - movs r0, 0x1 - bl sub_801C308 - cmp r0, 0x4 - bhi _0801C19A - lsls r0, 2 - ldr r1, _0801C130 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_0801C130: .4byte _0801C134 - .align 2, 0 -_0801C134: - .4byte _0801C19A - .4byte _0801C19A - .4byte _0801C190 - .4byte _0801C148 - .4byte _0801C16C -_0801C148: - bl sub_801C390 - ldr r1, _0801C168 - ldr r2, [r1] - str r0, [r2, 0x24] - adds r1, r2, 0 - adds r1, 0xC - adds r1, r0 - ldrb r0, [r1] - adds r2, 0x28 - strb r0, [r2] - movs r0, 0x2 - bl sub_801BFB4 - b _0801C19A - .align 2, 0 -_0801C168: .4byte gUnknown_203B238 -_0801C16C: - bl sub_801C390 - ldr r1, _0801C18C - ldr r2, [r1] - str r0, [r2, 0x24] - adds r1, r2, 0 - adds r1, 0xC - adds r1, r0 - ldrb r0, [r1] - adds r2, 0x28 - strb r0, [r2] - movs r0, 0x3 - bl sub_801BFB4 - b _0801C19A - .align 2, 0 -_0801C18C: .4byte gUnknown_203B238 -_0801C190: - bl sub_801C3F8 - movs r0, 0x4 - bl sub_801BFB4 -_0801C19A: - pop {r0} - bx r0 - thumb_func_end sub_801C118 - - thumb_func_start sub_801C1A0 -sub_801C1A0: - push {r4,lr} - sub sp, 0x4 - movs r0, 0 - str r0, [sp] - bl sub_801C308 - ldr r4, _0801C1E0 - ldr r0, [r4] - adds r0, 0x74 - bl sub_8012FD8 - lsls r0, 24 - cmp r0, 0 - bne _0801C1D0 - ldr r0, [r4] - adds r0, 0x74 - mov r1, sp - bl sub_8013114 - ldr r1, [sp] - cmp r1, 0x1 - beq _0801C1D0 - ldr r0, [r4] - str r1, [r0, 0x30] -_0801C1D0: - ldr r0, [sp] - cmp r0, 0x2 - beq _0801C1EA - cmp r0, 0x2 - bgt _0801C1E4 - cmp r0, 0x1 - beq _0801C218 - b _0801C21E - .align 2, 0 -_0801C1E0: .4byte gUnknown_203B238 -_0801C1E4: - cmp r0, 0x3 - beq _0801C210 - b _0801C21E -_0801C1EA: - ldr r0, _0801C208 - bl PlaySound - ldr r0, _0801C20C - ldr r1, [r0] - ldr r0, [r1, 0x8] - adds r0, 0x20 - adds r1, 0x28 - ldrb r1, [r1] - bl sub_808EBF4 - movs r0, 0x1 - bl sub_801BFB4 - b _0801C21E - .align 2, 0 -_0801C208: .4byte 0x00000133 -_0801C20C: .4byte gUnknown_203B238 -_0801C210: - movs r0, 0x3 - bl sub_801BFB4 - b _0801C21E -_0801C218: - movs r0, 0x1 - bl sub_801BFB4 -_0801C21E: - add sp, 0x4 - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_801C1A0 - - thumb_func_start sub_801C228 -sub_801C228: - push {lr} - bl sub_801C674 - cmp r0, 0x1 - bls _0801C240 - cmp r0, 0x3 - bhi _0801C240 - bl sub_801C6B4 - movs r0, 0x1 - bl sub_801BFB4 -_0801C240: - pop {r0} - bx r0 - thumb_func_end sub_801C228 - - thumb_func_start sub_801C244 -sub_801C244: - push {r4-r7,lr} - adds r6, r1, 0 - adds r7, r2, 0 - lsls r0, 16 - asrs r0, 16 - adds r4, r0, 0 - bl sub_801C5F0 - lsls r0, 24 - cmp r0, 0 - beq _0801C25E - movs r0, 0 - b _0801C2F6 -_0801C25E: - ldr r5, _0801C2FC - ldr r0, [r5] - cmp r0, 0 - bne _0801C270 - movs r0, 0xC4 - movs r1, 0x8 - bl MemoryAlloc - str r0, [r5] -_0801C270: - ldr r0, [r5] - strh r4, [r0] - ldr r3, _0801C300 - movs r1, 0x58 - adds r2, r4, 0 - muls r2, r1 - ldr r1, [r3] - adds r1, r2 - str r1, [r0, 0x4] - adds r0, 0x8 - movs r2, 0x14 - ldrsh r1, [r1, r2] - bl sub_808EBA8 - adds r1, r0, 0 - ldr r0, [r5] - str r1, [r0, 0x20] - str r6, [r0, 0x58] - lsls r1, r6, 1 - adds r1, r6 - lsls r1, 3 - adds r1, 0x60 - adds r1, r0, r1 - str r1, [r0, 0x5C] - adds r0, 0x60 - bl sub_8006518 - ldr r1, [r5] - ldr r2, [r1, 0x58] - lsls r0, r2, 1 - adds r0, r2 - lsls r0, 3 - adds r1, r0 - adds r1, 0x60 - ldr r0, _0801C304 - ldm r0!, {r2-r4} - stm r1!, {r2-r4} - ldm r0!, {r2-r4} - stm r1!, {r2-r4} - ldr r1, [r5] - ldr r0, [r1, 0x5C] - adds r1, 0xC0 - str r1, [r0, 0x14] - adds r1, r7, 0 - bl sub_8012D08 - bl ResetUnusedInputStruct - ldr r0, [r5] - adds r0, 0x60 - movs r1, 0x1 - movs r2, 0x1 - bl sub_800641C - ldr r1, [r5] - adds r0, r1, 0 - adds r0, 0x24 - ldr r1, [r1, 0x20] - adds r2, r7, 0 - adds r3, r6, 0 - bl sub_8013818 - bl sub_801C440 - bl sub_801C4C8 - movs r0, 0x1 -_0801C2F6: - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 -_0801C2FC: .4byte gUnknown_203B23C -_0801C300: .4byte gRecruitedPokemonRef -_0801C304: .4byte gUnknown_80DBDF0 - thumb_func_end sub_801C244 - - thumb_func_start sub_801C308 -sub_801C308: - push {lr} - lsls r0, 24 - cmp r0, 0 - bne _0801C324 - ldr r0, _0801C320 - ldr r0, [r0] - adds r0, 0x24 - bl sub_8013660 - movs r0, 0 - b _0801C38A - .align 2, 0 -_0801C320: .4byte gUnknown_203B23C -_0801C324: - ldr r0, _0801C33C - ldr r0, [r0] - adds r0, 0x24 - bl GetKeyPress - cmp r0, 0x2 - beq _0801C346 - cmp r0, 0x2 - bgt _0801C340 - cmp r0, 0x1 - beq _0801C350 - b _0801C364 - .align 2, 0 -_0801C33C: .4byte gUnknown_203B23C -_0801C340: - cmp r0, 0x4 - beq _0801C35A - b _0801C364 -_0801C346: - movs r0, 0x1 - bl PlayMenuSoundEffect - movs r0, 0x2 - b _0801C38A -_0801C350: - movs r0, 0 - bl PlayMenuSoundEffect - movs r0, 0x3 - b _0801C38A -_0801C35A: - movs r0, 0x4 - bl PlayMenuSoundEffect - movs r0, 0x4 - b _0801C38A -_0801C364: - ldr r0, _0801C37C - ldr r0, [r0] - adds r0, 0x24 - movs r1, 0x1 - bl sub_80138B8 - lsls r0, 24 - cmp r0, 0 - bne _0801C380 - movs r0, 0 - b _0801C38A - .align 2, 0 -_0801C37C: .4byte gUnknown_203B23C -_0801C380: - bl sub_801C440 - bl sub_801C4C8 - movs r0, 0x1 -_0801C38A: - pop {r1} - bx r1 - thumb_func_end sub_801C308 - - thumb_func_start sub_801C390 -sub_801C390: - ldr r0, _0801C3AC - ldr r2, [r0] - adds r0, r2, 0 - adds r0, 0x42 - movs r3, 0 - ldrsh r1, [r0, r3] - subs r0, 0x2 - movs r3, 0 - ldrsh r0, [r0, r3] - muls r0, r1 - movs r3, 0x3C - ldrsh r1, [r2, r3] - adds r0, r1 - bx lr - .align 2, 0 -_0801C3AC: .4byte gUnknown_203B23C - thumb_func_end sub_801C390 - - thumb_func_start sub_801C3B0 -sub_801C3B0: - push {r4,r5,lr} - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - bl ResetUnusedInputStruct - ldr r5, _0801C3F4 - ldr r0, [r5] - adds r0, 0x60 - movs r1, 0 - movs r2, 0 - bl sub_800641C - ldr r0, [r5] - ldr r1, [r0, 0x20] - adds r2, r0, 0 - adds r2, 0x46 - strh r1, [r2] - adds r0, 0x24 - bl sub_8013984 - bl sub_801C440 - bl sub_801C4C8 - cmp r4, 0 - beq _0801C3EE - ldr r0, [r5] - adds r0, 0x24 - bl AddMenuCursorSprite -_0801C3EE: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0801C3F4: .4byte gUnknown_203B23C - thumb_func_end sub_801C3B0 - - thumb_func_start sub_801C3F8 -sub_801C3F8: - push {r4,r5,lr} - ldr r4, _0801C438 - ldr r2, [r4] - cmp r2, 0 - beq _0801C432 - ldr r0, [r2, 0x58] - lsls r1, r0, 1 - adds r1, r0 - lsls r1, 3 - adds r1, r2, r1 - adds r1, 0x60 - ldr r0, _0801C43C - ldm r0!, {r2,r3,r5} - stm r1!, {r2,r3,r5} - ldm r0!, {r2,r3,r5} - stm r1!, {r2,r3,r5} - bl ResetUnusedInputStruct - ldr r0, [r4] - adds r0, 0x60 - movs r1, 0x1 - movs r2, 0x1 - bl sub_800641C - ldr r0, [r4] - bl MemoryFree - movs r0, 0 - str r0, [r4] -_0801C432: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0801C438: .4byte gUnknown_203B23C -_0801C43C: .4byte gUnknown_80DBDD8 - thumb_func_end sub_801C3F8 - - thumb_func_start sub_801C440 -sub_801C440: - push {r4,lr} - ldr r4, _0801C4C4 - ldr r0, [r4] - adds r1, r0, 0 - adds r1, 0x44 - ldrh r1, [r1] - adds r0, 0xC0 - movs r2, 0 - strb r1, [r0] - ldr r0, [r4] - adds r1, r0, 0 - adds r1, 0x42 - ldrh r1, [r1] - adds r0, 0xC1 - strb r1, [r0] - ldr r0, [r4] - adds r0, 0xC2 - movs r1, 0xA - strb r1, [r0] - ldr r0, [r4] - adds r0, 0xC3 - strb r2, [r0] - bl ResetUnusedInputStruct - ldr r0, [r4] - adds r0, 0x60 - movs r1, 0x1 - movs r2, 0x1 - bl sub_800641C - ldr r0, [r4] - movs r1, 0x3E - ldrsh r0, [r0, r1] - movs r1, 0xC - bl sub_80095E4 - adds r0, 0x2 - ldr r2, [r4] - ldr r3, [r2, 0x58] - lsls r1, r3, 1 - adds r1, r3 - lsls r1, 3 - adds r1, r2, r1 - adds r1, 0x6E - lsls r0, 16 - lsrs r0, 16 - strh r0, [r1] - ldr r3, [r2, 0x58] - lsls r1, r3, 1 - adds r1, r3 - lsls r1, 3 - adds r2, r1 - adds r2, 0x70 - strh r0, [r2] - bl ResetUnusedInputStruct - ldr r0, [r4] - adds r0, 0x60 - movs r1, 0x1 - movs r2, 0x1 - bl sub_800641C - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0801C4C4: .4byte gUnknown_203B23C - thumb_func_end sub_801C440 - - thumb_func_start sub_801C4C8 -sub_801C4C8: - push {r4-r7,lr} - mov r7, r8 - push {r7} - sub sp, 0x8 - ldr r6, _0801C594 - ldr r0, [r6] - ldr r0, [r0, 0x58] - bl sub_8008C54 - ldr r0, [r6] - ldr r0, [r0, 0x58] - bl sub_80073B8 - ldr r0, [r6] - adds r1, r0, 0 - adds r1, 0x42 - movs r2, 0 - ldrsh r4, [r1, r2] - lsls r4, 3 - adds r5, r4, 0 - adds r5, 0xA - ldr r2, _0801C598 - ldr r3, [r0, 0x58] - movs r0, 0 - str r0, [sp] - adds r0, r5, 0 - movs r1, 0 - bl xxx_call_draw_string - adds r4, 0x4 - ldr r1, [r6] - adds r0, r1, 0 - adds r0, 0xC2 - ldrb r0, [r0] - lsls r0, 3 - adds r5, r4, r0 - adds r0, r1, 0 - adds r0, 0x42 - movs r3, 0 - ldrsh r2, [r0, r3] - adds r2, 0x1 - movs r0, 0x7 - str r0, [sp] - ldr r0, [r1, 0x58] - str r0, [sp, 0x4] - adds r0, r5, 0 - movs r1, 0 - movs r3, 0x1 - bl sub_8012BC4 - movs r5, 0 - ldr r0, [r6] - movs r1, 0x3E - ldrsh r0, [r0, r1] - cmp r5, r0 - bge _0801C5CC - ldr r2, _0801C59C - mov r8, r2 -_0801C53C: - ldr r2, [r6] - adds r0, r2, 0 - adds r0, 0x42 - movs r3, 0 - ldrsh r1, [r0, r3] - subs r0, 0x2 - movs r3, 0 - ldrsh r0, [r0, r3] - muls r1, r0 - adds r1, r5 - adds r0, r2, 0 - adds r0, 0x8 - adds r0, r1 - ldrb r4, [r0] - adds r0, r2, 0 - adds r0, 0x24 - adds r1, r5, 0 - bl sub_8013800 - adds r7, r0, 0 - adds r0, r4, 0 - bl GetIQSkillName - adds r1, r0, 0 - mov r0, r8 - movs r2, 0x50 - bl strncpy - ldr r0, [r6] - ldr r0, [r0, 0x4] - adds r0, 0x20 - movs r1, 0x1 - lsls r1, r4 - bl sub_808ECD0 - lsls r0, 24 - cmp r0, 0 - beq _0801C5A4 - mov r0, r8 - subs r0, 0x50 - ldr r1, _0801C5A0 - bl strcpy - b _0801C5AE - .align 2, 0 -_0801C594: .4byte gUnknown_203B23C -_0801C598: .4byte gUnknown_80DBE08 -_0801C59C: .4byte gUnknown_202DEA8 -_0801C5A0: .4byte gUnknown_80DBE14 -_0801C5A4: - mov r0, r8 - subs r0, 0x50 - ldr r1, _0801C5E4 - bl strcpy -_0801C5AE: - ldr r0, [r6] - ldr r3, [r0, 0x58] - movs r0, 0 - str r0, [sp] - movs r0, 0xC - adds r1, r7, 0 - ldr r2, _0801C5E8 - bl sub_8014FF0 - adds r5, 0x1 - ldr r0, [r6] - movs r1, 0x3E - ldrsh r0, [r0, r1] - cmp r5, r0 - blt _0801C53C -_0801C5CC: - ldr r0, _0801C5EC - ldr r0, [r0] - ldr r0, [r0, 0x58] - bl sub_80073E0 - add sp, 0x8 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0801C5E4: .4byte gUnknown_80DBE18 -_0801C5E8: .4byte gUnknown_80DBE1C -_0801C5EC: .4byte gUnknown_203B23C - thumb_func_end sub_801C4C8 - - thumb_func_start sub_801C5F0 -sub_801C5F0: - push {lr} - sub sp, 0x18 - lsls r0, 16 - asrs r0, 16 - ldr r2, _0801C614 - movs r1, 0x58 - muls r1, r0 - ldr r0, [r2] - adds r0, r1 - movs r2, 0x14 - ldrsh r1, [r0, r2] - mov r0, sp - bl sub_808EBA8 - cmp r0, 0 - beq _0801C618 - movs r0, 0 - b _0801C61A - .align 2, 0 -_0801C614: .4byte gRecruitedPokemonRef -_0801C618: - movs r0, 0x1 -_0801C61A: - add sp, 0x18 - pop {r1} - bx r1 - thumb_func_end sub_801C5F0 - .align 2,0 diff --git a/asm/code_801B3C0.s b/asm/code_801B3C0.s new file mode 100644 index 0000000..9d9fddc --- /dev/null +++ b/asm/code_801B3C0.s @@ -0,0 +1,2024 @@ + .include "constants/gba_constants.inc" + .include "asm/macros.inc" + + .syntax unified + + .text + + + thumb_func_start sub_801B60C +sub_801B60C: + push {r4-r7,lr} + adds r5, r0, 0 + adds r4, r1, 0 + lsls r4, 24 + lsrs r4, 24 + lsls r2, 24 + lsrs r7, r2, 24 + ldr r6, _0801B650 + movs r0, 0xAA + lsls r0, 1 + movs r1, 0x8 + bl MemoryAlloc + str r0, [r6] + adds r2, r0, 0 + adds r2, 0xC8 + movs r1, 0 + str r1, [r2] + str r5, [r0] + strb r4, [r0, 0x12] + ldr r0, [r6] + ldrb r0, [r0, 0x12] + bl sub_8090A60 + lsls r0, 24 + lsrs r1, r0, 24 + cmp r1, 0 + beq _0801B654 + ldr r0, [r6] + strb r7, [r0, 0x11] + ldr r0, [r6] + strb r7, [r0, 0xC] + b _0801B65E + .align 2, 0 +_0801B650: .4byte gUnknown_203B234 +_0801B654: + ldr r0, [r6] + strb r1, [r0, 0x11] + ldr r1, [r6] + movs r0, 0x1 + strb r0, [r1, 0xC] +_0801B65E: + ldr r5, _0801B6A0 + ldr r0, [r5] + movs r1, 0 + movs r2, 0x1 + strb r2, [r0, 0x10] + ldr r0, [r5] + str r1, [r0, 0x14] + strb r1, [r0, 0x18] + ldr r0, [r5] + strb r2, [r0, 0x1C] + ldr r4, _0801B6A4 + bl sub_808D33C + adds r1, r0, 0 + adds r0, r4, 0 + movs r2, 0x6 + bl sub_808D9AC + ldr r0, _0801B6A8 + ldr r2, [r5] + adds r1, r2, 0 + adds r1, 0x10 + adds r2, 0x14 + bl sub_8090E14 + movs r0, 0 + bl sub_801B748 + movs r0, 0x1 + pop {r4-r7} + pop {r1} + bx r1 + .align 2, 0 +_0801B6A0: .4byte gUnknown_203B234 +_0801B6A4: .4byte gAvailablePokemonNames +_0801B6A8: .4byte gUnknown_202DE58 + thumb_func_end sub_801B60C + + thumb_func_start sub_801B6AC +sub_801B6AC: + push {lr} + ldr r0, _0801B6C4 + ldr r0, [r0] + ldr r0, [r0, 0x4] + subs r0, 0x6 + cmp r0, 0xA + bhi _0801B720 + lsls r0, 2 + ldr r1, _0801B6C8 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0801B6C4: .4byte gUnknown_203B234 +_0801B6C8: .4byte _0801B6CC + .align 2, 0 +_0801B6CC: + .4byte _0801B6FC + .4byte _0801B702 + .4byte _0801B708 + .4byte _0801B708 + .4byte _0801B70E + .4byte _0801B714 + .4byte _0801B71A + .4byte _0801B720 + .4byte _0801B720 + .4byte _0801B720 + .4byte _0801B6F8 +_0801B6F8: + movs r0, 0x3 + b _0801B726 +_0801B6FC: + bl sub_801BC64 + b _0801B724 +_0801B702: + bl sub_801BC94 + b _0801B724 +_0801B708: + bl sub_801BCCC + b _0801B724 +_0801B70E: + bl sub_801BD80 + b _0801B724 +_0801B714: + bl sub_801BEAC + b _0801B724 +_0801B71A: + bl sub_801BE30 + b _0801B724 +_0801B720: + bl sub_801BEC8 +_0801B724: + movs r0, 0 +_0801B726: + pop {r1} + bx r1 + thumb_func_end sub_801B6AC + + thumb_func_start sub_801B72C +sub_801B72C: + push {r4,lr} + ldr r4, _0801B744 + ldr r0, [r4] + cmp r0, 0 + beq _0801B73E + bl MemoryFree + movs r0, 0 + str r0, [r4] +_0801B73E: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0801B744: .4byte gUnknown_203B234 + thumb_func_end sub_801B72C + + thumb_func_start sub_801B748 +sub_801B748: + push {lr} + ldr r1, _0801B75C + ldr r1, [r1] + str r0, [r1, 0x4] + bl sub_801B760 + bl sub_801B874 + pop {r0} + bx r0 + .align 2, 0 +_0801B75C: .4byte gUnknown_203B234 + thumb_func_end sub_801B748 + + thumb_func_start sub_801B760 +sub_801B760: + push {r4-r7,lr} + ldr r0, _0801B77C + ldr r1, [r0] + ldr r1, [r1, 0x4] + subs r1, 0x1 + adds r4, r0, 0 + cmp r1, 0xE + bls _0801B772 + b _0801B86A +_0801B772: + lsls r0, r1, 2 + ldr r1, _0801B780 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0801B77C: .4byte gUnknown_203B234 +_0801B780: .4byte _0801B784 + .align 2, 0 +_0801B784: + .4byte _0801B7C0 + .4byte _0801B86A + .4byte _0801B86A + .4byte _0801B86A + .4byte _0801B86A + .4byte _0801B7C0 + .4byte _0801B7C0 + .4byte _0801B7C0 + .4byte _0801B7C0 + .4byte _0801B800 + .4byte _0801B7C0 + .4byte _0801B840 + .4byte _0801B7C0 + .4byte _0801B7C0 + .4byte _0801B7C0 +_0801B7C0: + ldr r4, _0801B7F8 + ldr r0, [r4] + adds r0, 0xF4 + bl sub_8006518 + mov r12, r4 + ldr r4, _0801B7FC + movs r3, 0 + movs r2, 0x3 +_0801B7D2: + mov r0, r12 + ldr r1, [r0] + adds r1, r3 + adds r1, 0xF4 + adds r0, r4, 0 + ldm r0!, {r5-r7} + stm r1!, {r5-r7} + ldm r0!, {r5-r7} + stm r1!, {r5-r7} + adds r3, 0x18 + subs r2, 0x1 + cmp r2, 0 + bge _0801B7D2 + bl ResetUnusedInputStruct + ldr r0, _0801B7F8 + ldr r0, [r0] + b _0801B82E + .align 2, 0 +_0801B7F8: .4byte gUnknown_203B234 +_0801B7FC: .4byte gUnknown_80DBA58 +_0801B800: + ldr r0, [r4] + adds r0, 0xF4 + bl sub_8006518 + bl sub_801BB5C + ldr r2, [r4] + movs r0, 0x92 + lsls r0, 1 + adds r2, r0 + ldr r1, _0801B83C + ldm r1!, {r3,r5,r6} + stm r2!, {r3,r5,r6} + ldm r1!, {r3,r5,r7} + stm r2!, {r3,r5,r7} + ldr r1, [r4] + adds r0, r1, r0 + adds r1, 0xCC + bl sub_8012CAC + bl ResetUnusedInputStruct + ldr r0, [r4] +_0801B82E: + adds r0, 0xF4 + movs r1, 0x1 + movs r2, 0x1 + bl sub_800641C + b _0801B86A + .align 2, 0 +_0801B83C: .4byte gUnknown_80DBA70 +_0801B840: + ldr r0, [r4] + adds r0, 0xF4 + bl sub_8006518 + ldr r1, [r4] + movs r6, 0x86 + lsls r6, 1 + adds r1, r6 + ldr r0, _0801B870 + ldm r0!, {r2,r3,r7} + stm r1!, {r2,r3,r7} + ldm r0!, {r5-r7} + stm r1!, {r5-r7} + bl ResetUnusedInputStruct + ldr r0, [r4] + adds r0, 0xF4 + movs r1, 0x1 + movs r2, 0x1 + bl sub_800641C +_0801B86A: + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0801B870: .4byte gUnknown_80DBA88 + thumb_func_end sub_801B760 + + thumb_func_start sub_801B874 +sub_801B874: + push {r4,lr} + sub sp, 0x14 + ldr r1, _0801B890 + ldr r0, [r1] + ldr r0, [r0, 0x4] + adds r4, r1, 0 + cmp r0, 0x10 + bls _0801B886 + b _0801BB0E +_0801B886: + lsls r0, 2 + ldr r1, _0801B894 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0801B890: .4byte gUnknown_203B234 +_0801B894: .4byte _0801B898 + .align 2, 0 +_0801B898: + .4byte _0801B8DC + .4byte _0801B9BC + .4byte _0801B9D8 + .4byte _0801B9E0 + .4byte _0801B9F0 + .4byte _0801B9F8 + .4byte _0801BA08 + .4byte _0801BA34 + .4byte _0801BA60 + .4byte _0801BA6E + .4byte _0801BA76 + .4byte _0801BA94 + .4byte _0801BA9E + .4byte _0801BAD0 + .4byte _0801BAE0 + .4byte _0801BAFC + .4byte _0801BB0E +_0801B8DC: + ldr r1, [r4] + ldrb r0, [r1, 0x12] + cmp r0, 0xEA + bne _0801B8FE + movs r0, 0x10 + str r0, [r1, 0x8] + movs r0, 0 + movs r1, 0x47 + movs r2, 0x1 + bl sub_8001784 + cmp r0, 0 + bne _0801B914 + movs r0, 0 + movs r1, 0x47 + movs r2, 0x1 + b _0801B92A +_0801B8FE: + cmp r0, 0xEB + bne _0801B938 + movs r0, 0x10 + str r0, [r1, 0x8] + movs r0, 0 + movs r1, 0x47 + movs r2, 0 + bl sub_8001784 + cmp r0, 0 + beq _0801B924 +_0801B914: + movs r0, 0xFA + lsls r0, 2 + bl sub_80913A0 + movs r0, 0x4 + bl sub_801B748 + b _0801BB0E +_0801B924: + movs r0, 0 + movs r1, 0x47 + movs r2, 0 +_0801B92A: + movs r3, 0x1 + bl sub_800199C + movs r0, 0x3 + bl sub_801B748 + b _0801BB0E +_0801B938: + bl sub_8090A34 + cmp r0, 0x13 + ble _0801B986 + ldr r0, [r4] + ldrb r0, [r0, 0x12] + bl sub_8091524 + lsls r0, 24 + cmp r0, 0 + beq _0801B968 + ldr r0, _0801B970 + ldr r1, [r0] + ldr r2, [r4] + ldrb r0, [r2, 0x12] + lsls r0, 1 + adds r1, 0x50 + adds r3, r1, r0 + ldrh r1, [r3] + ldrb r0, [r2, 0xC] + adds r1, r0 + ldr r0, _0801B974 + cmp r1, r0 + ble _0801B978 +_0801B968: + ldr r1, [r4] + movs r0, 0x6 + b _0801B99C + .align 2, 0 +_0801B970: .4byte gUnknown_203B460 +_0801B974: .4byte 0x000003e7 +_0801B978: + strh r1, [r3] + movs r0, 0xCB + bl PlaySound + ldr r1, [r4] + movs r0, 0x5 + b _0801B99C +_0801B986: + ldr r0, [r4] + adds r0, 0x10 + bl sub_8091290 + bl sub_80910B4 + movs r0, 0xCB + bl PlaySound + ldr r1, [r4] + movs r0, 0x10 +_0801B99C: + str r0, [r1, 0x8] + ldr r0, _0801B9B0 + ldr r0, [r0] + ldr r0, [r0] + cmp r0, 0x1 + bne _0801B9B4 + movs r0, 0x2 + bl sub_801B748 + b _0801BB0E + .align 2, 0 +_0801B9B0: .4byte gUnknown_203B234 +_0801B9B4: + movs r0, 0x1 + bl sub_801B748 + b _0801BB0E +_0801B9BC: + movs r0, 0 + bl sub_808D544 + cmp r0, 0x1 + bgt _0801B9D0 + ldr r0, _0801B9CC + b _0801BAE8 + .align 2, 0 +_0801B9CC: .4byte gUnknown_80DBAA0 +_0801B9D0: + ldr r0, _0801B9D4 + b _0801BAE8 + .align 2, 0 +_0801B9D4: .4byte gUnknown_80DBAD0 +_0801B9D8: + ldr r0, _0801B9DC + b _0801BAE8 + .align 2, 0 +_0801B9DC: .4byte gUnknown_80DBB08 +_0801B9E0: + movs r0, 0xD4 + bl PlaySound + ldr r0, _0801B9EC + b _0801BAE8 + .align 2, 0 +_0801B9EC: .4byte gUnknown_80DBB38 +_0801B9F0: + ldr r0, _0801B9F4 + b _0801BAE8 + .align 2, 0 +_0801B9F4: .4byte gUnknown_80DBB9C +_0801B9F8: + ldr r1, [r4] + movs r0, 0x10 + str r0, [r1, 0x8] + ldr r0, _0801BA04 + b _0801BAE8 + .align 2, 0 +_0801BA04: .4byte gUnknown_80DBC28 +_0801BA08: + bl sub_801BB20 + ldr r0, _0801BA2C + ldr r1, _0801BA30 + ldr r3, [r1] + adds r3, 0xCC + movs r2, 0 + str r2, [sp] + movs r1, 0x4 + str r1, [sp, 0x4] + str r2, [sp, 0x8] + str r2, [sp, 0xC] + str r2, [sp, 0x10] + movs r1, 0 + movs r2, 0x4 + bl sub_8014248 + b _0801BB0E + .align 2, 0 +_0801BA2C: .4byte gUnknown_80DBC60 +_0801BA30: .4byte gUnknown_203B234 +_0801BA34: + bl sub_801BC24 + ldr r0, _0801BA58 + ldr r1, _0801BA5C + ldr r3, [r1] + adds r3, 0xCC + movs r2, 0 + str r2, [sp] + movs r1, 0x4 + str r1, [sp, 0x4] + str r2, [sp, 0x8] + str r2, [sp, 0xC] + str r2, [sp, 0x10] + movs r1, 0 + movs r2, 0x3 + bl sub_8014248 + b _0801BB0E + .align 2, 0 +_0801BA58: .4byte gUnknown_80DBC98 +_0801BA5C: .4byte gUnknown_203B234 +_0801BA60: + movs r0, 0x1 + movs r1, 0x3 + movs r2, 0 + movs r3, 0xA + bl sub_801A5D8 + b _0801BB0E +_0801BA6E: + movs r0, 0x1 + bl sub_801A8D0 + b _0801BB0E +_0801BA76: + bl sub_801A9E0 + ldr r0, _0801BA90 + ldr r2, [r0] + adds r0, r2, 0 + adds r0, 0x28 + adds r1, r2, 0 + adds r1, 0xCC + adds r2, 0xC8 + ldr r2, [r2] + str r2, [sp] + movs r2, 0x2 + b _0801BAC0 + .align 2, 0 +_0801BA90: .4byte gUnknown_203B234 +_0801BA94: + ldr r0, [r4] + adds r0, 0x20 + bl sub_801B3C0 + b _0801BB0E +_0801BA9E: + bl sub_801A9E0 + ldr r4, _0801BACC + ldr r0, [r4] + adds r0, 0x28 + movs r1, 0 + bl sub_8012EA4 + bl sub_801BC24 + ldr r1, [r4] + adds r0, r1, 0 + adds r0, 0x78 + adds r1, 0xCC + movs r2, 0x3 + str r2, [sp] + movs r2, 0x1 +_0801BAC0: + str r2, [sp, 0x4] + movs r2, 0 + movs r3, 0 + bl sub_8012D60 + b _0801BB0E + .align 2, 0 +_0801BACC: .4byte gUnknown_203B234 +_0801BAD0: + ldr r1, [r4] + movs r0, 0x10 + str r0, [r1, 0x8] + ldr r0, _0801BADC + b _0801BAE8 + .align 2, 0 +_0801BADC: .4byte gUnknown_80DBCC4 +_0801BAE0: + ldr r1, [r4] + movs r0, 0x10 + str r0, [r1, 0x8] + ldr r0, _0801BAF4 +_0801BAE8: + ldr r3, _0801BAF8 + movs r1, 0 + movs r2, 0 + bl sub_80141B4 + b _0801BB0E + .align 2, 0 +_0801BAF4: .4byte gUnknown_80DBCE8 +_0801BAF8: .4byte 0x00000101 +_0801BAFC: + ldr r1, [r4] + movs r0, 0x10 + str r0, [r1, 0x8] + ldr r0, _0801BB18 + ldr r3, _0801BB1C + movs r1, 0 + movs r2, 0 + bl sub_80141B4 +_0801BB0E: + add sp, 0x14 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0801BB18: .4byte gUnknown_80DBD24 +_0801BB1C: .4byte 0x00000101 + thumb_func_end sub_801B874 + + thumb_func_start sub_801BB20 +sub_801BB20: + ldr r0, _0801BB50 + ldr r3, [r0] + movs r2, 0 + adds r1, r3, 0 + adds r1, 0xCC + ldr r0, _0801BB54 + str r0, [r1] + adds r1, 0x4 + movs r0, 0x4 + str r0, [r1] + adds r1, 0x4 + ldr r0, _0801BB58 + str r0, [r1] + adds r1, 0x4 + movs r0, 0x5 + str r0, [r1] + adds r0, r3, 0 + adds r0, 0xDC + str r2, [r0] + adds r1, 0x8 + movs r0, 0x1 + negs r0, r0 + str r0, [r1] + bx lr + .align 2, 0 +_0801BB50: .4byte gUnknown_203B234 +_0801BB54: .4byte gKangaskhanTrashToolboxItem +_0801BB58: .4byte gKangaskhanTrashReceivedItem + thumb_func_end sub_801BB20 + + thumb_func_start sub_801BB5C +sub_801BB5C: + push {r4-r7,lr} + ldr r4, _0801BBEC + ldr r2, [r4] + adds r1, r2, 0 + adds r1, 0xCC + ldr r0, _0801BBF0 + str r0, [r1] + adds r1, 0x4 + movs r0, 0x6 + str r0, [r1] + ldr r0, [r2, 0x24] + bl sub_801ADA0 + lsls r0, 24 + cmp r0, 0 + bne _0801BB86 + ldr r0, [r4] + adds r0, 0xD0 + movs r1, 0x1 + negs r1, r1 + str r1, [r0] +_0801BB86: + ldr r0, [r4] + mov r12, r0 + movs r3, 0x1 + movs r2, 0x8 + mov r1, r12 + adds r1, 0xD4 + ldr r0, _0801BBF4 + str r0, [r1] + adds r1, 0x4 + movs r0, 0x7 + str r0, [r1] + adds r1, 0x4 + ldr r0, _0801BBF8 + ldr r0, [r0] + str r0, [r1] + mov r0, r12 + adds r0, 0xE0 + str r2, [r0] + movs r5, 0x3 + adds r1, 0x8 + movs r0, 0 + str r0, [r1] + mov r0, r12 + adds r0, 0xE8 + str r3, [r0] + movs r3, 0 + adds r6, r4, 0 + movs r7, 0x1 + negs r7, r7 + mov r4, r12 + adds r4, 0xC8 + subs r1, 0x14 +_0801BBC6: + ldr r2, [r1] + cmp r2, r7 + beq _0801BBD2 + ldr r0, [r4] + cmp r2, r0 + beq _0801BC1C +_0801BBD2: + adds r1, 0x8 + adds r3, 0x1 + cmp r3, r5 + blt _0801BBC6 + movs r3, 0 + cmp r3, r5 + bge _0801BC1C + ldr r2, [r6] + adds r0, r2, 0 + adds r0, 0xD0 + ldr r1, [r0] + b _0801BC0E + .align 2, 0 +_0801BBEC: .4byte gUnknown_203B234 +_0801BBF0: .4byte gKangaskhanStorage +_0801BBF4: .4byte gKangaskhanTrash +_0801BBF8: .4byte gUnknown_80D4970 +_0801BBFC: + adds r3, 0x1 + cmp r3, r5 + bge _0801BC1C + ldr r2, [r6] + lsls r0, r3, 3 + adds r1, r2, 0 + adds r1, 0xD0 + adds r1, r0 + ldr r1, [r1] +_0801BC0E: + movs r0, 0x1 + negs r0, r0 + cmp r1, r0 + beq _0801BBFC + adds r0, r2, 0 + adds r0, 0xC8 + str r1, [r0] +_0801BC1C: + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_801BB5C + + thumb_func_start sub_801BC24 +sub_801BC24: + ldr r0, _0801BC58 + ldr r0, [r0] + mov r12, r0 + movs r3, 0 + mov r1, r12 + adds r1, 0xCC + ldr r0, _0801BC5C + ldr r0, [r0] + str r0, [r1] + adds r1, 0x4 + movs r0, 0x2 + str r0, [r1] + movs r2, 0x1 + adds r1, 0x4 + ldr r0, _0801BC60 + ldr r0, [r0] + str r0, [r1] + adds r1, 0x4 + movs r0, 0x3 + str r0, [r1] + mov r0, r12 + adds r0, 0xDC + str r3, [r0] + adds r0, 0x4 + str r2, [r0] + bx lr + .align 2, 0 +_0801BC58: .4byte gUnknown_203B234 +_0801BC5C: .4byte gUnknown_80D4920 +_0801BC60: .4byte gUnknown_80D4928 + thumb_func_end sub_801BC24 + + thumb_func_start sub_801BC64 +sub_801BC64: + push {lr} + sub sp, 0x4 + mov r0, sp + bl sub_80144A4 + cmp r0, 0 + bne _0801BC8C + ldr r0, [sp] + cmp r0, 0x4 + beq _0801BC7E + cmp r0, 0x5 + beq _0801BC86 + b _0801BC8C +_0801BC7E: + movs r0, 0x8 + bl sub_801B748 + b _0801BC8C +_0801BC86: + movs r0, 0x7 + bl sub_801B748 +_0801BC8C: + add sp, 0x4 + pop {r0} + bx r0 + thumb_func_end sub_801BC64 + + thumb_func_start sub_801BC94 +sub_801BC94: + push {lr} + sub sp, 0x4 + mov r0, sp + bl sub_80144A4 + cmp r0, 0 + bne _0801BCC6 + ldr r0, [sp] + cmp r0, 0x2 + beq _0801BCB8 + cmp r0, 0x2 + bgt _0801BCB2 + cmp r0, 0x1 + beq _0801BCC0 + b _0801BCC6 +_0801BCB2: + cmp r0, 0x3 + beq _0801BCC0 + b _0801BCC6 +_0801BCB8: + movs r0, 0xD + bl sub_801B748 + b _0801BCC6 +_0801BCC0: + movs r0, 0x6 + bl sub_801B748 +_0801BCC6: + add sp, 0x4 + pop {r0} + bx r0 + thumb_func_end sub_801BC94 + + thumb_func_start sub_801BCCC +sub_801BCCC: + push {lr} + movs r0, 0x1 + bl sub_801A6E8 + cmp r0, 0x4 + bhi _0801BD7A + lsls r0, 2 + ldr r1, _0801BCE4 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0801BCE4: .4byte _0801BCE8 + .align 2, 0 +_0801BCE8: + .4byte _0801BD7A + .4byte _0801BD7A + .4byte _0801BD70 + .4byte _0801BCFC + .4byte _0801BD34 +_0801BCFC: + bl sub_801A8AC + ldr r1, _0801BD28 + ldr r2, [r1] + str r0, [r2, 0x24] + ldr r1, _0801BD2C + ldr r1, [r1] + lsls r0, 2 + adds r1, r0 + ldr r0, [r1] + str r0, [r2, 0x20] + ldr r0, _0801BD30 + adds r1, r2, 0 + adds r1, 0x20 + adds r2, 0x14 + bl sub_8090E14 + movs r0, 0xA + bl sub_801B748 + b _0801BD7A + .align 2, 0 +_0801BD28: .4byte gUnknown_203B234 +_0801BD2C: .4byte gUnknown_203B460 +_0801BD30: .4byte gUnknown_202DEA8 +_0801BD34: + bl sub_801A8AC + ldr r1, _0801BD64 + ldr r2, [r1] + str r0, [r2, 0x24] + ldr r1, _0801BD68 + ldr r1, [r1] + lsls r0, 2 + adds r1, r0 + ldr r0, [r1] + str r0, [r2, 0x20] + ldr r0, _0801BD6C + adds r1, r2, 0 + adds r1, 0x20 + adds r2, 0x14 + bl sub_8090E14 + movs r0, 0 + bl sub_8099690 + movs r0, 0xB + bl sub_801B748 + b _0801BD7A + .align 2, 0 +_0801BD64: .4byte gUnknown_203B234 +_0801BD68: .4byte gUnknown_203B460 +_0801BD6C: .4byte gUnknown_202DEA8 +_0801BD70: + bl sub_801A928 + movs r0, 0x6 + bl sub_801B748 +_0801BD7A: + pop {r0} + bx r0 + thumb_func_end sub_801BCCC + + thumb_func_start sub_801BD80 +sub_801BD80: + push {r4,lr} + sub sp, 0x4 + movs r0, 0 + str r0, [sp] + bl sub_801A6E8 + ldr r4, _0801BDC4 + ldr r0, [r4] + adds r0, 0x28 + bl sub_8012FD8 + lsls r0, 24 + cmp r0, 0 + bne _0801BDB2 + ldr r0, [r4] + adds r0, 0x28 + mov r1, sp + bl sub_8013114 + ldr r1, [sp] + cmp r1, 0x1 + beq _0801BDB2 + ldr r0, [r4] + adds r0, 0xC8 + str r1, [r0] +_0801BDB2: + ldr r0, [sp] + cmp r0, 0x6 + beq _0801BDD2 + cmp r0, 0x6 + bgt _0801BDC8 + cmp r0, 0x1 + beq _0801BE22 + b _0801BE28 + .align 2, 0 +_0801BDC4: .4byte gUnknown_203B234 +_0801BDC8: + cmp r0, 0x7 + beq _0801BE0C + cmp r0, 0x8 + beq _0801BE14 + b _0801BE28 +_0801BDD2: + ldr r4, _0801BE08 + ldr r0, [r4] + adds r0, 0x20 + bl sub_80917B8 + ldr r0, [r4] + ldr r0, [r0, 0x24] + bl sub_80911F8 + ldr r0, [r4] + adds r0, 0x10 + bl sub_8091290 + bl sub_80910B4 + movs r0, 0xCB + bl PlaySound + movs r0, 0 + bl sub_8099690 + bl sub_801A928 + movs r0, 0xE + bl sub_801B748 + b _0801BE28 + .align 2, 0 +_0801BE08: .4byte gUnknown_203B234 +_0801BE0C: + movs r0, 0xC + bl sub_801B748 + b _0801BE28 +_0801BE14: + movs r0, 0 + bl sub_8099690 + movs r0, 0xB + bl sub_801B748 + b _0801BE28 +_0801BE22: + movs r0, 0x9 + bl sub_801B748 +_0801BE28: + add sp, 0x4 + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_801BD80 + + thumb_func_start sub_801BE30 +sub_801BE30: + push {r4,lr} + sub sp, 0x4 + movs r0, 0 + str r0, [sp] + bl sub_801A6E8 + ldr r4, _0801BE70 + ldr r0, [r4] + adds r0, 0x28 + bl sub_8012FD8 + ldr r0, [r4] + adds r0, 0x78 + bl sub_8012FD8 + lsls r0, 24 + cmp r0, 0 + bne _0801BE5E + ldr r0, [r4] + adds r0, 0x78 + mov r1, sp + bl sub_8013114 +_0801BE5E: + ldr r0, [sp] + cmp r0, 0x2 + beq _0801BE80 + cmp r0, 0x2 + bgt _0801BE74 + cmp r0, 0x1 + beq _0801BE78 + b _0801BEA4 + .align 2, 0 +_0801BE70: .4byte gUnknown_203B234 +_0801BE74: + cmp r0, 0x3 + bne _0801BEA4 +_0801BE78: + movs r0, 0x9 + bl sub_801B748 + b _0801BEA4 +_0801BE80: + ldr r0, [r4] + ldr r0, [r0, 0x24] + bl sub_80911F8 + ldr r0, [r4] + adds r0, 0x10 + bl sub_8091290 + bl sub_80910B4 + movs r0, 0xCB + bl PlaySound + bl sub_801A928 + movs r0, 0xF + bl sub_801B748 +_0801BEA4: + add sp, 0x4 + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_801BE30 + + thumb_func_start sub_801BEAC +sub_801BEAC: + push {lr} + bl sub_801B410 + cmp r0, 0x1 + bls _0801BEC4 + cmp r0, 0x3 + bhi _0801BEC4 + bl sub_801B450 + movs r0, 0x9 + bl sub_801B748 +_0801BEC4: + pop {r0} + bx r0 + thumb_func_end sub_801BEAC + + thumb_func_start sub_801BEC8 +sub_801BEC8: + push {lr} + sub sp, 0x4 + mov r0, sp + bl sub_80144A4 + cmp r0, 0 + bne _0801BEE0 + ldr r0, _0801BEE8 + ldr r0, [r0] + ldr r0, [r0, 0x8] + bl sub_801B748 +_0801BEE0: + add sp, 0x4 + pop {r0} + bx r0 + .align 2, 0 +_0801BEE8: .4byte gUnknown_203B234 + thumb_func_end sub_801BEC8 + + thumb_func_start sub_801BEEC +sub_801BEEC: + push {r4-r6,lr} + lsls r0, 16 + asrs r5, r0, 16 + adds r0, r5, 0 + bl sub_801C5F0 + lsls r0, 24 + lsrs r6, r0, 24 + cmp r6, 0 + bne _0801BF40 + ldr r4, _0801BF38 + movs r0, 0x92 + lsls r0, 1 + movs r1, 0x8 + bl MemoryAlloc + str r0, [r4] + str r6, [r0, 0x30] + strh r5, [r0, 0x4] + ldr r3, _0801BF3C + movs r1, 0x58 + adds r2, r5, 0 + muls r2, r1 + ldr r1, [r3] + adds r1, r2 + str r1, [r0, 0x8] + adds r0, 0xC + movs r2, 0x14 + ldrsh r1, [r1, r2] + bl sub_808EBA8 + ldr r1, [r4] + str r0, [r1, 0x2C] + movs r0, 0 + bl sub_801BFB4 + movs r0, 0x1 + b _0801BF42 + .align 2, 0 +_0801BF38: .4byte gUnknown_203B238 +_0801BF3C: .4byte gRecruitedPokemonRef +_0801BF40: + movs r0, 0 +_0801BF42: + pop {r4-r6} + pop {r1} + bx r1 + thumb_func_end sub_801BEEC + + thumb_func_start sub_801BF48 +sub_801BF48: + push {lr} + ldr r0, _0801BF60 + ldr r0, [r0] + ldr r0, [r0] + cmp r0, 0x4 + bhi _0801BF90 + lsls r0, 2 + ldr r1, _0801BF64 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0801BF60: .4byte gUnknown_203B238 +_0801BF64: .4byte _0801BF68 + .align 2, 0 +_0801BF68: + .4byte _0801BF80 + .4byte _0801BF80 + .4byte _0801BF86 + .4byte _0801BF8C + .4byte _0801BF7C +_0801BF7C: + movs r0, 0x3 + b _0801BF92 +_0801BF80: + bl sub_801C118 + b _0801BF90 +_0801BF86: + bl sub_801C1A0 + b _0801BF90 +_0801BF8C: + bl sub_801C228 +_0801BF90: + movs r0, 0 +_0801BF92: + pop {r1} + bx r1 + thumb_func_end sub_801BF48 + + thumb_func_start sub_801BF98 +sub_801BF98: + push {r4,lr} + ldr r4, _0801BFB0 + ldr r0, [r4] + cmp r0, 0 + beq _0801BFAA + bl MemoryFree + movs r0, 0 + str r0, [r4] +_0801BFAA: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0801BFB0: .4byte gUnknown_203B238 + thumb_func_end sub_801BF98 + + thumb_func_start sub_801BFB4 +sub_801BFB4: + push {lr} + ldr r1, _0801BFC8 + ldr r1, [r1] + str r0, [r1] + bl sub_801BFCC + bl sub_801C03C + pop {r0} + bx r0 + .align 2, 0 +_0801BFC8: .4byte gUnknown_203B238 + thumb_func_end sub_801BFB4 + + thumb_func_start sub_801BFCC +sub_801BFCC: + push {r4-r7,lr} + ldr r4, _0801BFF0 + ldr r0, [r4] + adds r0, 0xC4 + bl sub_8006518 + ldr r1, [r4] + ldr r0, [r1] + cmp r0, 0x2 + bne _0801BFF8 + adds r1, 0xF4 + ldr r0, _0801BFF4 + ldm r0!, {r2-r4} + stm r1!, {r2-r4} + ldm r0!, {r5-r7} + stm r1!, {r5-r7} + b _0801C01A + .align 2, 0 +_0801BFF0: .4byte gUnknown_203B238 +_0801BFF4: .4byte gUnknown_80DBDB0 +_0801BFF8: + mov r12, r4 + ldr r4, _0801C034 + movs r3, 0 + movs r2, 0x3 +_0801C000: + mov r0, r12 + ldr r1, [r0] + adds r1, r3 + adds r1, 0xC4 + adds r0, r4, 0 + ldm r0!, {r5-r7} + stm r1!, {r5-r7} + ldm r0!, {r5-r7} + stm r1!, {r5-r7} + adds r3, 0x18 + subs r2, 0x1 + cmp r2, 0 + bge _0801C000 +_0801C01A: + bl ResetUnusedInputStruct + ldr r0, _0801C038 + ldr r0, [r0] + adds r0, 0xC4 + movs r1, 0x1 + movs r2, 0x1 + bl sub_800641C + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0801C034: .4byte gUnknown_80DBD98 +_0801C038: .4byte gUnknown_203B238 + thumb_func_end sub_801BFCC + + thumb_func_start sub_801C03C +sub_801C03C: + push {lr} + sub sp, 0x8 + ldr r1, _0801C058 + ldr r0, [r1] + ldr r0, [r0] + adds r2, r1, 0 + cmp r0, 0x4 + bhi _0801C0C2 + lsls r0, 2 + ldr r1, _0801C05C + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0801C058: .4byte gUnknown_203B238 +_0801C05C: .4byte _0801C060 + .align 2, 0 +_0801C060: + .4byte _0801C074 + .4byte _0801C084 + .4byte _0801C08C + .4byte _0801C0B8 + .4byte _0801C0C2 +_0801C074: + ldr r0, [r2] + movs r1, 0x4 + ldrsh r0, [r0, r1] + movs r1, 0 + movs r2, 0x8 + bl sub_801C244 + b _0801C0C2 +_0801C084: + movs r0, 0x1 + bl sub_801C3B0 + b _0801C0C2 +_0801C08C: + bl sub_801C4C8 + bl sub_801C0C8 + ldr r0, _0801C0B4 + ldr r2, [r0] + adds r0, r2, 0 + adds r0, 0x74 + adds r1, r2, 0 + adds r1, 0x34 + ldr r2, [r2, 0x30] + str r2, [sp] + movs r2, 0x2 + str r2, [sp, 0x4] + movs r2, 0 + movs r3, 0 + bl sub_8012D60 + b _0801C0C2 + .align 2, 0 +_0801C0B4: .4byte gUnknown_203B238 +_0801C0B8: + ldr r0, [r2] + adds r0, 0x28 + ldrb r0, [r0] + bl sub_801C620 +_0801C0C2: + add sp, 0x8 + pop {r0} + bx r0 + thumb_func_end sub_801C03C + + thumb_func_start sub_801C0C8 +sub_801C0C8: + push {r4,r5,lr} + ldr r3, _0801C10C + ldr r1, [r3] + movs r4, 0 + ldr r0, _0801C110 + str r0, [r1, 0x34] + movs r0, 0x2 + str r0, [r1, 0x38] + movs r2, 0x1 + ldr r0, _0801C114 + ldr r0, [r0] + str r0, [r1, 0x3C] + movs r0, 0x3 + str r0, [r1, 0x40] + movs r5, 0x2 + str r4, [r1, 0x44] + str r2, [r1, 0x48] + movs r2, 0 + ldr r4, [r1, 0x30] + adds r1, 0x38 +_0801C0F0: + ldr r0, [r1] + cmp r0, r4 + beq _0801C104 + adds r1, 0x8 + adds r2, 0x1 + cmp r2, r5 + blt _0801C0F0 + ldr r1, [r3] + movs r0, 0x2 + str r0, [r1, 0x30] +_0801C104: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_0801C10C: .4byte gUnknown_203B238 +_0801C110: .4byte gUnknown_80DBDC8 +_0801C114: .4byte gUnknown_80D4970 + thumb_func_end sub_801C0C8 + + thumb_func_start sub_801C118 +sub_801C118: + push {lr} + movs r0, 0x1 + bl sub_801C308 + cmp r0, 0x4 + bhi _0801C19A + lsls r0, 2 + ldr r1, _0801C130 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0801C130: .4byte _0801C134 + .align 2, 0 +_0801C134: + .4byte _0801C19A + .4byte _0801C19A + .4byte _0801C190 + .4byte _0801C148 + .4byte _0801C16C +_0801C148: + bl sub_801C390 + ldr r1, _0801C168 + ldr r2, [r1] + str r0, [r2, 0x24] + adds r1, r2, 0 + adds r1, 0xC + adds r1, r0 + ldrb r0, [r1] + adds r2, 0x28 + strb r0, [r2] + movs r0, 0x2 + bl sub_801BFB4 + b _0801C19A + .align 2, 0 +_0801C168: .4byte gUnknown_203B238 +_0801C16C: + bl sub_801C390 + ldr r1, _0801C18C + ldr r2, [r1] + str r0, [r2, 0x24] + adds r1, r2, 0 + adds r1, 0xC + adds r1, r0 + ldrb r0, [r1] + adds r2, 0x28 + strb r0, [r2] + movs r0, 0x3 + bl sub_801BFB4 + b _0801C19A + .align 2, 0 +_0801C18C: .4byte gUnknown_203B238 +_0801C190: + bl sub_801C3F8 + movs r0, 0x4 + bl sub_801BFB4 +_0801C19A: + pop {r0} + bx r0 + thumb_func_end sub_801C118 + + thumb_func_start sub_801C1A0 +sub_801C1A0: + push {r4,lr} + sub sp, 0x4 + movs r0, 0 + str r0, [sp] + bl sub_801C308 + ldr r4, _0801C1E0 + ldr r0, [r4] + adds r0, 0x74 + bl sub_8012FD8 + lsls r0, 24 + cmp r0, 0 + bne _0801C1D0 + ldr r0, [r4] + adds r0, 0x74 + mov r1, sp + bl sub_8013114 + ldr r1, [sp] + cmp r1, 0x1 + beq _0801C1D0 + ldr r0, [r4] + str r1, [r0, 0x30] +_0801C1D0: + ldr r0, [sp] + cmp r0, 0x2 + beq _0801C1EA + cmp r0, 0x2 + bgt _0801C1E4 + cmp r0, 0x1 + beq _0801C218 + b _0801C21E + .align 2, 0 +_0801C1E0: .4byte gUnknown_203B238 +_0801C1E4: + cmp r0, 0x3 + beq _0801C210 + b _0801C21E +_0801C1EA: + ldr r0, _0801C208 + bl PlaySound + ldr r0, _0801C20C + ldr r1, [r0] + ldr r0, [r1, 0x8] + adds r0, 0x20 + adds r1, 0x28 + ldrb r1, [r1] + bl sub_808EBF4 + movs r0, 0x1 + bl sub_801BFB4 + b _0801C21E + .align 2, 0 +_0801C208: .4byte 0x00000133 +_0801C20C: .4byte gUnknown_203B238 +_0801C210: + movs r0, 0x3 + bl sub_801BFB4 + b _0801C21E +_0801C218: + movs r0, 0x1 + bl sub_801BFB4 +_0801C21E: + add sp, 0x4 + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_801C1A0 + + thumb_func_start sub_801C228 +sub_801C228: + push {lr} + bl sub_801C674 + cmp r0, 0x1 + bls _0801C240 + cmp r0, 0x3 + bhi _0801C240 + bl sub_801C6B4 + movs r0, 0x1 + bl sub_801BFB4 +_0801C240: + pop {r0} + bx r0 + thumb_func_end sub_801C228 + + thumb_func_start sub_801C244 +sub_801C244: + push {r4-r7,lr} + adds r6, r1, 0 + adds r7, r2, 0 + lsls r0, 16 + asrs r0, 16 + adds r4, r0, 0 + bl sub_801C5F0 + lsls r0, 24 + cmp r0, 0 + beq _0801C25E + movs r0, 0 + b _0801C2F6 +_0801C25E: + ldr r5, _0801C2FC + ldr r0, [r5] + cmp r0, 0 + bne _0801C270 + movs r0, 0xC4 + movs r1, 0x8 + bl MemoryAlloc + str r0, [r5] +_0801C270: + ldr r0, [r5] + strh r4, [r0] + ldr r3, _0801C300 + movs r1, 0x58 + adds r2, r4, 0 + muls r2, r1 + ldr r1, [r3] + adds r1, r2 + str r1, [r0, 0x4] + adds r0, 0x8 + movs r2, 0x14 + ldrsh r1, [r1, r2] + bl sub_808EBA8 + adds r1, r0, 0 + ldr r0, [r5] + str r1, [r0, 0x20] + str r6, [r0, 0x58] + lsls r1, r6, 1 + adds r1, r6 + lsls r1, 3 + adds r1, 0x60 + adds r1, r0, r1 + str r1, [r0, 0x5C] + adds r0, 0x60 + bl sub_8006518 + ldr r1, [r5] + ldr r2, [r1, 0x58] + lsls r0, r2, 1 + adds r0, r2 + lsls r0, 3 + adds r1, r0 + adds r1, 0x60 + ldr r0, _0801C304 + ldm r0!, {r2-r4} + stm r1!, {r2-r4} + ldm r0!, {r2-r4} + stm r1!, {r2-r4} + ldr r1, [r5] + ldr r0, [r1, 0x5C] + adds r1, 0xC0 + str r1, [r0, 0x14] + adds r1, r7, 0 + bl sub_8012D08 + bl ResetUnusedInputStruct + ldr r0, [r5] + adds r0, 0x60 + movs r1, 0x1 + movs r2, 0x1 + bl sub_800641C + ldr r1, [r5] + adds r0, r1, 0 + adds r0, 0x24 + ldr r1, [r1, 0x20] + adds r2, r7, 0 + adds r3, r6, 0 + bl sub_8013818 + bl sub_801C440 + bl sub_801C4C8 + movs r0, 0x1 +_0801C2F6: + pop {r4-r7} + pop {r1} + bx r1 + .align 2, 0 +_0801C2FC: .4byte gUnknown_203B23C +_0801C300: .4byte gRecruitedPokemonRef +_0801C304: .4byte gUnknown_80DBDF0 + thumb_func_end sub_801C244 + + thumb_func_start sub_801C308 +sub_801C308: + push {lr} + lsls r0, 24 + cmp r0, 0 + bne _0801C324 + ldr r0, _0801C320 + ldr r0, [r0] + adds r0, 0x24 + bl sub_8013660 + movs r0, 0 + b _0801C38A + .align 2, 0 +_0801C320: .4byte gUnknown_203B23C +_0801C324: + ldr r0, _0801C33C + ldr r0, [r0] + adds r0, 0x24 + bl GetKeyPress + cmp r0, 0x2 + beq _0801C346 + cmp r0, 0x2 + bgt _0801C340 + cmp r0, 0x1 + beq _0801C350 + b _0801C364 + .align 2, 0 +_0801C33C: .4byte gUnknown_203B23C +_0801C340: + cmp r0, 0x4 + beq _0801C35A + b _0801C364 +_0801C346: + movs r0, 0x1 + bl PlayMenuSoundEffect + movs r0, 0x2 + b _0801C38A +_0801C350: + movs r0, 0 + bl PlayMenuSoundEffect + movs r0, 0x3 + b _0801C38A +_0801C35A: + movs r0, 0x4 + bl PlayMenuSoundEffect + movs r0, 0x4 + b _0801C38A +_0801C364: + ldr r0, _0801C37C + ldr r0, [r0] + adds r0, 0x24 + movs r1, 0x1 + bl sub_80138B8 + lsls r0, 24 + cmp r0, 0 + bne _0801C380 + movs r0, 0 + b _0801C38A + .align 2, 0 +_0801C37C: .4byte gUnknown_203B23C +_0801C380: + bl sub_801C440 + bl sub_801C4C8 + movs r0, 0x1 +_0801C38A: + pop {r1} + bx r1 + thumb_func_end sub_801C308 + + thumb_func_start sub_801C390 +sub_801C390: + ldr r0, _0801C3AC + ldr r2, [r0] + adds r0, r2, 0 + adds r0, 0x42 + movs r3, 0 + ldrsh r1, [r0, r3] + subs r0, 0x2 + movs r3, 0 + ldrsh r0, [r0, r3] + muls r0, r1 + movs r3, 0x3C + ldrsh r1, [r2, r3] + adds r0, r1 + bx lr + .align 2, 0 +_0801C3AC: .4byte gUnknown_203B23C + thumb_func_end sub_801C390 + + thumb_func_start sub_801C3B0 +sub_801C3B0: + push {r4,r5,lr} + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + bl ResetUnusedInputStruct + ldr r5, _0801C3F4 + ldr r0, [r5] + adds r0, 0x60 + movs r1, 0 + movs r2, 0 + bl sub_800641C + ldr r0, [r5] + ldr r1, [r0, 0x20] + adds r2, r0, 0 + adds r2, 0x46 + strh r1, [r2] + adds r0, 0x24 + bl sub_8013984 + bl sub_801C440 + bl sub_801C4C8 + cmp r4, 0 + beq _0801C3EE + ldr r0, [r5] + adds r0, 0x24 + bl AddMenuCursorSprite +_0801C3EE: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_0801C3F4: .4byte gUnknown_203B23C + thumb_func_end sub_801C3B0 + + thumb_func_start sub_801C3F8 +sub_801C3F8: + push {r4,r5,lr} + ldr r4, _0801C438 + ldr r2, [r4] + cmp r2, 0 + beq _0801C432 + ldr r0, [r2, 0x58] + lsls r1, r0, 1 + adds r1, r0 + lsls r1, 3 + adds r1, r2, r1 + adds r1, 0x60 + ldr r0, _0801C43C + ldm r0!, {r2,r3,r5} + stm r1!, {r2,r3,r5} + ldm r0!, {r2,r3,r5} + stm r1!, {r2,r3,r5} + bl ResetUnusedInputStruct + ldr r0, [r4] + adds r0, 0x60 + movs r1, 0x1 + movs r2, 0x1 + bl sub_800641C + ldr r0, [r4] + bl MemoryFree + movs r0, 0 + str r0, [r4] +_0801C432: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_0801C438: .4byte gUnknown_203B23C +_0801C43C: .4byte gUnknown_80DBDD8 + thumb_func_end sub_801C3F8 + + thumb_func_start sub_801C440 +sub_801C440: + push {r4,lr} + ldr r4, _0801C4C4 + ldr r0, [r4] + adds r1, r0, 0 + adds r1, 0x44 + ldrh r1, [r1] + adds r0, 0xC0 + movs r2, 0 + strb r1, [r0] + ldr r0, [r4] + adds r1, r0, 0 + adds r1, 0x42 + ldrh r1, [r1] + adds r0, 0xC1 + strb r1, [r0] + ldr r0, [r4] + adds r0, 0xC2 + movs r1, 0xA + strb r1, [r0] + ldr r0, [r4] + adds r0, 0xC3 + strb r2, [r0] + bl ResetUnusedInputStruct + ldr r0, [r4] + adds r0, 0x60 + movs r1, 0x1 + movs r2, 0x1 + bl sub_800641C + ldr r0, [r4] + movs r1, 0x3E + ldrsh r0, [r0, r1] + movs r1, 0xC + bl sub_80095E4 + adds r0, 0x2 + ldr r2, [r4] + ldr r3, [r2, 0x58] + lsls r1, r3, 1 + adds r1, r3 + lsls r1, 3 + adds r1, r2, r1 + adds r1, 0x6E + lsls r0, 16 + lsrs r0, 16 + strh r0, [r1] + ldr r3, [r2, 0x58] + lsls r1, r3, 1 + adds r1, r3 + lsls r1, 3 + adds r2, r1 + adds r2, 0x70 + strh r0, [r2] + bl ResetUnusedInputStruct + ldr r0, [r4] + adds r0, 0x60 + movs r1, 0x1 + movs r2, 0x1 + bl sub_800641C + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0801C4C4: .4byte gUnknown_203B23C + thumb_func_end sub_801C440 + + thumb_func_start sub_801C4C8 +sub_801C4C8: + push {r4-r7,lr} + mov r7, r8 + push {r7} + sub sp, 0x8 + ldr r6, _0801C594 + ldr r0, [r6] + ldr r0, [r0, 0x58] + bl sub_8008C54 + ldr r0, [r6] + ldr r0, [r0, 0x58] + bl sub_80073B8 + ldr r0, [r6] + adds r1, r0, 0 + adds r1, 0x42 + movs r2, 0 + ldrsh r4, [r1, r2] + lsls r4, 3 + adds r5, r4, 0 + adds r5, 0xA + ldr r2, _0801C598 + ldr r3, [r0, 0x58] + movs r0, 0 + str r0, [sp] + adds r0, r5, 0 + movs r1, 0 + bl xxx_call_draw_string + adds r4, 0x4 + ldr r1, [r6] + adds r0, r1, 0 + adds r0, 0xC2 + ldrb r0, [r0] + lsls r0, 3 + adds r5, r4, r0 + adds r0, r1, 0 + adds r0, 0x42 + movs r3, 0 + ldrsh r2, [r0, r3] + adds r2, 0x1 + movs r0, 0x7 + str r0, [sp] + ldr r0, [r1, 0x58] + str r0, [sp, 0x4] + adds r0, r5, 0 + movs r1, 0 + movs r3, 0x1 + bl sub_8012BC4 + movs r5, 0 + ldr r0, [r6] + movs r1, 0x3E + ldrsh r0, [r0, r1] + cmp r5, r0 + bge _0801C5CC + ldr r2, _0801C59C + mov r8, r2 +_0801C53C: + ldr r2, [r6] + adds r0, r2, 0 + adds r0, 0x42 + movs r3, 0 + ldrsh r1, [r0, r3] + subs r0, 0x2 + movs r3, 0 + ldrsh r0, [r0, r3] + muls r1, r0 + adds r1, r5 + adds r0, r2, 0 + adds r0, 0x8 + adds r0, r1 + ldrb r4, [r0] + adds r0, r2, 0 + adds r0, 0x24 + adds r1, r5, 0 + bl sub_8013800 + adds r7, r0, 0 + adds r0, r4, 0 + bl GetIQSkillName + adds r1, r0, 0 + mov r0, r8 + movs r2, 0x50 + bl strncpy + ldr r0, [r6] + ldr r0, [r0, 0x4] + adds r0, 0x20 + movs r1, 0x1 + lsls r1, r4 + bl sub_808ECD0 + lsls r0, 24 + cmp r0, 0 + beq _0801C5A4 + mov r0, r8 + subs r0, 0x50 + ldr r1, _0801C5A0 + bl strcpy + b _0801C5AE + .align 2, 0 +_0801C594: .4byte gUnknown_203B23C +_0801C598: .4byte gUnknown_80DBE08 +_0801C59C: .4byte gUnknown_202DEA8 +_0801C5A0: .4byte gUnknown_80DBE14 +_0801C5A4: + mov r0, r8 + subs r0, 0x50 + ldr r1, _0801C5E4 + bl strcpy +_0801C5AE: + ldr r0, [r6] + ldr r3, [r0, 0x58] + movs r0, 0 + str r0, [sp] + movs r0, 0xC + adds r1, r7, 0 + ldr r2, _0801C5E8 + bl sub_8014FF0 + adds r5, 0x1 + ldr r0, [r6] + movs r1, 0x3E + ldrsh r0, [r0, r1] + cmp r5, r0 + blt _0801C53C +_0801C5CC: + ldr r0, _0801C5EC + ldr r0, [r0] + ldr r0, [r0, 0x58] + bl sub_80073E0 + add sp, 0x8 + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0801C5E4: .4byte gUnknown_80DBE18 +_0801C5E8: .4byte gUnknown_80DBE1C +_0801C5EC: .4byte gUnknown_203B23C + thumb_func_end sub_801C4C8 + + thumb_func_start sub_801C5F0 +sub_801C5F0: + push {lr} + sub sp, 0x18 + lsls r0, 16 + asrs r0, 16 + ldr r2, _0801C614 + movs r1, 0x58 + muls r1, r0 + ldr r0, [r2] + adds r0, r1 + movs r2, 0x14 + ldrsh r1, [r0, r2] + mov r0, sp + bl sub_808EBA8 + cmp r0, 0 + beq _0801C618 + movs r0, 0 + b _0801C61A + .align 2, 0 +_0801C614: .4byte gRecruitedPokemonRef +_0801C618: + movs r0, 0x1 +_0801C61A: + add sp, 0x18 + pop {r1} + bx r1 + thumb_func_end sub_801C5F0 + + .align 2,0 diff --git a/asm/code_803D110.s b/asm/code_803D110.s index daa639c..6111ed1 100644 --- a/asm/code_803D110.s +++ b/asm/code_803D110.s @@ -314,8 +314,8 @@ _0803D32A: _0803D354: .4byte gUnknown_80F43F0 thumb_func_end sub_803D2C0 - thumb_func_start sub_803D358 -sub_803D358: + thumb_func_start DecodeWonderMailPassword +DecodeWonderMailPassword: push {r4-r7,lr} mov r7, r10 mov r6, r9 @@ -409,7 +409,7 @@ _0803D402: pop {r4-r7} pop {r1} bx r1 - thumb_func_end sub_803D358 + thumb_func_end DecodeWonderMailPassword thumb_func_start sub_803D414 sub_803D414: diff --git a/asm/code_80428A0.s b/asm/code_80428A0.s index 4af9445..c85bf60 100644 --- a/asm/code_80428A0.s +++ b/asm/code_80428A0.s @@ -8771,7 +8771,7 @@ sub_8046F00: cmp r0, 0x5 bne _08046F7C ldrb r0, [r4, 0x2] - bl sub_80913CC + bl GetItemMove lsls r0, 16 lsrs r7, r0, 16 ldrb r0, [r4, 0x2] diff --git a/asm/code_8048480.s b/asm/code_8048480.s index 300d379..c24da61 100644 --- a/asm/code_8048480.s +++ b/asm/code_8048480.s @@ -562,7 +562,7 @@ sub_8048950: mov r10, r0 mov r8, r1 ldrb r0, [r1, 0x2] - bl sub_80913CC + bl GetItemMove lsls r0, 16 lsrs r0, 16 mov r9, r0 diff --git a/asm/code_807001C.s b/asm/code_807001C.s index df6ba13..499f9ad 100644 --- a/asm/code_807001C.s +++ b/asm/code_807001C.s @@ -25994,7 +25994,7 @@ _0807CBAC: add r4, sp, 0x20 lsls r5, 8 lsrs r0, r5, 24 - bl sub_80913CC + bl GetItemMove adds r1, r0, 0 lsls r1, 16 lsrs r1, 16 diff --git a/asm/code_8095014.s b/asm/code_8095014.s index 9a119ae..3c4419b 100644 --- a/asm/code_8095014.s +++ b/asm/code_8095014.s @@ -935,3790 +935,5 @@ sub_80958E4: bx lr thumb_func_end sub_80958E4 - thumb_func_start sub_80958E8 -sub_80958E8: - ldr r1, _080958F0 - ldr r0, _080958F4 - str r0, [r1] - bx lr - .align 2, 0 -_080958F0: .4byte gUnknown_203B490 -_080958F4: .4byte gUnknown_2039448 - thumb_func_end sub_80958E8 - - thumb_func_start sub_80958F8 -sub_80958F8: - ldr r0, _080958FC - bx lr - .align 2, 0 -_080958FC: .4byte gUnknown_2039448 - thumb_func_end sub_80958F8 - - thumb_func_start sub_8095900 -sub_8095900: - push {r4-r7,lr} - movs r4, 0 -_08095904: - lsls r0, r4, 24 - lsrs r0, 24 - bl sub_8096040 - adds r4, 0x1 - cmp r4, 0x3 - ble _08095904 - movs r4, 0 -_08095914: - lsls r0, r4, 24 - lsrs r0, 24 - bl sub_80965B8 - adds r4, 0x1 - cmp r4, 0x7 - ble _08095914 - movs r4, 0 -_08095924: - lsls r0, r4, 24 - lsrs r0, 24 - bl sub_8096C3C - adds r4, 0x1 - cmp r4, 0x7 - ble _08095924 - movs r4, 0 - ldr r3, _080959B8 - movs r2, 0xBC - lsls r2, 2 - movs r1, 0 -_0809593C: - ldr r0, [r3] - adds r0, r2 - adds r0, r4 - strb r1, [r0] - adds r4, 0x1 - cmp r4, 0x37 - ble _0809593C - ldr r4, _080959B8 - ldr r0, [r4] - movs r1, 0xCA - lsls r1, 2 - adds r0, r1 - movs r1, 0 - strb r1, [r0] - ldr r0, [r4] - movs r7, 0xC8 - lsls r7, 1 - adds r0, r7 - movs r1, 0x28 - bl MemoryClear8 - ldr r0, [r4] - movs r1, 0xDC - lsls r1, 1 - adds r0, r1 - movs r1, 0x78 - bl MemoryClear8 - adds r3, r4, 0 - movs r5, 0 - movs r2, 0 - movs r6, 0x8C - lsls r6, 2 - movs r4, 0xF -_08095980: - ldr r0, [r3] - adds r0, r2 - adds r0, r6 - movs r1, 0x63 - strb r1, [r0] - ldr r0, [r3] - adds r0, r2 - ldr r7, _080959BC - adds r0, r7 - movs r1, 0x1 - strb r1, [r0] - ldr r1, [r3] - adds r7, 0x3 - adds r0, r1, r7 - adds r0, r2 - str r5, [r0] - adds r7, 0x4 - adds r0, r1, r7 - adds r0, r2 - str r5, [r0] - adds r2, 0xC - subs r4, 0x1 - cmp r4, 0 - bge _08095980 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080959B8: .4byte gUnknown_203B490 -_080959BC: .4byte 0x00000231 - thumb_func_end sub_8095900 - - thumb_func_start sub_80959C0 -sub_80959C0: - push {lr} - adds r1, r0, 0 - ldrb r0, [r1] - cmp r0, 0x5 - bne _080959D6 - adds r0, r1, 0 - bl sub_80959DC - lsls r0, 24 - lsrs r0, 24 - b _080959D8 -_080959D6: - movs r0, 0 -_080959D8: - pop {r1} - bx r1 - thumb_func_end sub_80959C0 - - thumb_func_start sub_80959DC -sub_80959DC: - push {r4-r6,lr} - adds r5, r0, 0 - ldrb r0, [r5, 0x1] - cmp r0, 0x4 - bls _080959E8 - b _08095B16 -_080959E8: - cmp r0, 0x4 - bne _080959F8 - ldrb r0, [r5, 0x4] - bl GetMaxItemCount - cmp r0, 0 - bne _080959F8 - b _08095B16 -_080959F8: - ldrb r0, [r5, 0x2] - cmp r0, 0x9 - bls _08095A00 - b _08095B16 -_08095A00: - ldrb r0, [r5, 0x4] - bl sub_809095C - lsls r0, 24 - cmp r0, 0 - beq _08095A0E - b _08095B16 -_08095A0E: - ldrb r4, [r5, 0x5] - ldrb r0, [r5, 0x4] - bl sub_8090298 - cmp r4, r0 - bge _08095B16 - adds r4, r5, 0x4 - adds r0, r4, 0 - bl sub_809017C - lsls r0, 24 - adds r6, r4, 0 - cmp r0, 0 - bne _08095B16 - movs r1, 0xC - ldrsh r0, [r5, r1] - cmp r0, 0 - beq _08095B16 - ldr r4, _08095B1C - cmp r0, r4 - bgt _08095B16 - movs r2, 0xC - ldrsh r0, [r5, r2] - bl sub_808E770 - movs r2, 0xC - ldrsh r1, [r5, r2] - lsls r0, 16 - asrs r0, 16 - cmp r1, r0 - bne _08095B16 - movs r1, 0xC - ldrsh r0, [r5, r1] - bl sub_803C0DC - lsls r0, 24 - cmp r0, 0 - beq _08095B16 - movs r2, 0xE - ldrsh r0, [r5, r2] - cmp r0, r4 - bgt _08095B16 - movs r1, 0xE - ldrsh r0, [r5, r1] - bl sub_808E770 - movs r2, 0xE - ldrsh r1, [r5, r2] - lsls r0, 16 - asrs r0, 16 - cmp r1, r0 - bne _08095B16 - movs r1, 0xE - ldrsh r0, [r5, r1] - bl sub_803C0DC - lsls r0, 24 - cmp r0, 0 - beq _08095B16 - ldrb r0, [r5, 0x1] - subs r0, 0x1 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bls _08095A9C - movs r2, 0xE - ldrsh r1, [r5, r2] - movs r2, 0xC - ldrsh r0, [r5, r2] - cmp r1, r0 - bne _08095B16 -_08095A9C: - ldrb r0, [r5, 0x10] - bl sub_8092040 - lsls r0, 24 - cmp r0, 0 - bne _08095B16 - ldrb r0, [r5, 0x10] - bl sub_8090A60 - lsls r0, 24 - cmp r0, 0 - bne _08095B16 - ldrb r0, [r5, 0x10] - bl sub_8091524 - lsls r0, 24 - cmp r0, 0 - beq _08095B16 - ldrb r0, [r5, 0x1] - cmp r0, 0x3 - bne _08095AD4 - ldrb r0, [r5, 0x4] - ldrb r1, [r5, 0x10] - bl sub_8091E60 - lsls r0, 24 - cmp r0, 0 - beq _08095B16 -_08095AD4: - ldrb r0, [r5, 0x11] - cmp r0, 0x4 - beq _08095B16 - cmp r0, 0xA - beq _08095B16 - cmp r0, 0xA - bhi _08095B16 - ldrb r0, [r5, 0x12] - bl sub_8092040 - lsls r0, 24 - cmp r0, 0 - bne _08095B16 - ldrb r0, [r5, 0x13] - cmp r0, 0x39 - bhi _08095B16 - ldrb r0, [r5, 0x11] - cmp r0, 0x9 - bne _08095B20 - ldrb r0, [r5, 0x13] - bl GetFriendAreaUnlockCondition - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x2 - bne _08095B16 - ldrb r1, [r5, 0x1] - adds r0, r6, 0 - bl sub_803C1D0 - lsls r0, 24 - cmp r0, 0 - bne _08095B20 -_08095B16: - movs r0, 0 - b _08095B22 - .align 2, 0 -_08095B1C: .4byte 0x000001a7 -_08095B20: - movs r0, 0x1 -_08095B22: - pop {r4-r6} - pop {r1} - bx r1 - thumb_func_end sub_80959DC - - thumb_func_start sub_8095B28 -sub_8095B28: - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - ldr r4, _08095B44 - add sp, r4 - adds r4, r0, 0 - bl sub_8095CE0 - lsls r0, 24 - cmp r0, 0 - bne _08095B48 - movs r0, 0 - b _08095CCC - .align 2, 0 -_08095B44: .4byte 0xfffffcb0 -_08095B48: - movs r0, 0x5 - strb r0, [r4] - movs r0, 0x8 - bl RandomCapped - ldr r1, _08095BC8 - adds r0, r1 - ldrb r0, [r0] - strb r0, [r4, 0x1] - cmp r0, 0x2 - bne _08095B6C - bl GetRescueTeamRank - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0 - bne _08095B6C - strb r0, [r4, 0x1] -_08095B6C: - movs r0, 0 - strb r0, [r4, 0x2] - bl Random - ldr r1, _08095BCC - ands r1, r0 - str r1, [r4, 0x8] - movs r7, 0 - movs r5, 0x1 - adds r0, r4, 0x4 - mov r8, r0 - movs r1, 0x12 - adds r1, r4 - mov r9, r1 - mov r6, sp -_08095B8A: - lsls r0, r5, 16 - asrs r0, 16 - bl sub_803C110 - lsls r0, 24 - cmp r0, 0 - beq _08095B9E - strh r5, [r6] - adds r6, 0x2 - adds r7, 0x1 -_08095B9E: - adds r5, 0x1 - ldr r0, _08095BD0 - cmp r5, r0 - ble _08095B8A - cmp r7, 0 - beq _08095BD4 - adds r0, r7, 0 - bl RandomCapped - lsls r0, 1 - add r0, sp - ldrh r0, [r0] - strh r0, [r4, 0xC] - adds r0, r7, 0 - bl RandomCapped - lsls r0, 1 - add r0, sp - ldrh r0, [r0] - b _08095BDC - .align 2, 0 -_08095BC8: .4byte gUnknown_8109984 -_08095BCC: .4byte 0x00ffffff -_08095BD0: .4byte 0x000001a7 -_08095BD4: - movs r0, 0x10 - strh r0, [r4, 0xC] - movs r0, 0x91 - lsls r0, 1 -_08095BDC: - strh r0, [r4, 0xE] - ldrb r0, [r4, 0x1] - subs r0, 0x1 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bls _08095BEE - ldrh r0, [r4, 0xC] - strh r0, [r4, 0xE] -_08095BEE: - ldrb r0, [r4, 0x4] - bl sub_8095F28 - strb r0, [r4, 0x10] - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0 - bne _08095C10 - strb r0, [r4, 0x1] - ldrh r0, [r4, 0xC] - strh r0, [r4, 0xE] - adds r2, r4, 0 - adds r2, 0x10 - mov r0, r8 - movs r1, 0 - bl sub_803C37C -_08095C10: - ldrb r0, [r4, 0x4] - bl GetMaxItemCount - adds r1, r0, 0 - cmp r1, 0 - bne _08095C28 - ldrb r0, [r4, 0x1] - cmp r0, 0x4 - bne _08095C28 - strb r1, [r4, 0x1] - ldrh r0, [r4, 0xC] - strh r0, [r4, 0xE] -_08095C28: - ldrb r1, [r4, 0x1] - mov r0, r8 - mov r2, r9 - bl sub_803C37C - ldrb r0, [r4, 0x10] - ldrb r1, [r4, 0x12] - cmp r0, r1 - beq _08095C28 - movs r0, 0 - strb r0, [r4, 0x13] - ldrb r0, [r4, 0x1] - cmp r0, 0x2 - beq _08095C90 - cmp r0, 0x2 - bgt _08095C4E - cmp r0, 0x1 - beq _08095C6C - b _08095CCA -_08095C4E: - cmp r0, 0x4 - bgt _08095CCA - bl Random - adds r1, r0, 0 - movs r0, 0xE0 - lsls r0, 3 - ands r1, r0 - movs r0, 0xC0 - lsls r0, 2 - cmp r1, r0 - beq _08095CC4 - cmp r1, r0 - bgt _08095CB4 - b _08095CAA -_08095C6C: - bl Random - adds r1, r0, 0 - movs r0, 0x70 - ands r1, r0 - cmp r1, 0x10 - beq _08095C80 - cmp r1, 0x30 - beq _08095C88 - b _08095CCA -_08095C80: - adds r0, r4, 0 - bl sub_803C3E0 - b _08095CCA -_08095C88: - adds r0, r4, 0 - bl sub_803C45C - b _08095CCA -_08095C90: - bl Random - movs r1, 0xC0 - lsls r1, 6 - ands r1, r0 - movs r0, 0x80 - lsls r0, 5 - cmp r1, r0 - bne _08095CCA - adds r0, r4, 0 - bl sub_803C4F0 - b _08095CCA -_08095CAA: - movs r0, 0x80 - lsls r0, 1 - cmp r1, r0 - beq _08095CBC - b _08095CCA -_08095CB4: - movs r0, 0xC0 - lsls r0, 3 - cmp r1, r0 - bne _08095CCA -_08095CBC: - adds r0, r4, 0 - bl sub_803C580 - b _08095CCA -_08095CC4: - adds r0, r4, 0 - bl sub_803C610 -_08095CCA: - movs r0, 0x1 -_08095CCC: - movs r3, 0xD4 - lsls r3, 2 - add sp, r3 - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end sub_8095B28 - - thumb_func_start sub_8095CE0 -sub_8095CE0: - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x60 - str r0, [sp, 0x44] - mov r0, sp - bl sub_80A29B0 - str r0, [sp, 0x4C] - cmp r0, 0 - bne _08095D0C - mov r0, sp - add r1, sp, 0x4C - ldrb r1, [r1] - strb r1, [r0] - mov r1, sp - movs r0, 0x1 - strb r0, [r1, 0x1] - movs r2, 0x2 - str r2, [sp, 0x4C] -_08095D0C: - ldr r0, [sp, 0x4C] - bl RandomCapped - mov r9, r0 - str r0, [sp, 0x48] - mov r1, sp - adds r1, 0x40 - str r1, [sp, 0x5C] -_08095D1C: - mov r0, sp - add r0, r9 - ldrb r7, [r0] - adds r0, r7, 0 - bl sub_8090298 - str r0, [sp, 0x58] - lsrs r0, 31 - ldr r2, [sp, 0x58] - adds r0, r2, r0 - asrs r0, 1 - str r0, [sp, 0x54] - adds r1, r2, 0 - bl RandomRange - adds r4, r0, 0 - str r4, [sp, 0x50] -_08095D3E: - movs r0, 0x1 - mov r8, r0 - ldr r1, _08095DF4 - ldr r0, [sp, 0x40] - ands r0, r1 - orrs r0, r7 - lsls r2, r4, 24 - lsrs r2, 16 - ldr r1, _08095DF8 - ands r0, r1 - orrs r0, r2 - str r0, [sp, 0x40] - ldr r0, [sp, 0x5C] - bl sub_809017C - lsls r0, 24 - cmp r0, 0 - beq _08095D66 - movs r1, 0 - mov r8, r1 -_08095D66: - ldr r2, _08095DFC - mov r10, r2 - movs r6, 0 - movs r5, 0x3 -_08095D6E: - mov r1, r10 - ldr r0, [r1] - adds r0, r6 - adds r1, r7, 0 - adds r2, r4, 0 - movs r3, 0x1 - bl sub_8095E38 - lsls r0, 24 - cmp r0, 0 - beq _08095D88 - movs r2, 0 - mov r8, r2 -_08095D88: - adds r6, 0x14 - subs r5, 0x1 - cmp r5, 0 - bge _08095D6E - ldr r0, _08095DFC - mov r10, r0 - movs r6, 0x50 - movs r5, 0x7 -_08095D98: - mov r1, r10 - ldr r0, [r1] - adds r0, r6 - adds r1, r7, 0 - adds r2, r4, 0 - movs r3, 0x1 - bl sub_8095E38 - lsls r0, 24 - cmp r0, 0 - beq _08095DB2 - movs r2, 0 - mov r8, r2 -_08095DB2: - adds r6, 0x14 - subs r5, 0x1 - cmp r5, 0 - bge _08095D98 - ldr r0, _08095DFC - mov r10, r0 - movs r6, 0xF0 - movs r5, 0x7 -_08095DC2: - mov r1, r10 - ldr r0, [r1] - adds r0, r6 - adds r1, r7, 0 - adds r2, r4, 0 - movs r3, 0x1 - bl sub_8095E38 - lsls r0, 24 - cmp r0, 0 - beq _08095DDC - movs r2, 0 - mov r8, r2 -_08095DDC: - adds r6, 0x14 - subs r5, 0x1 - cmp r5, 0 - bge _08095DC2 - mov r0, r8 - cmp r0, 0 - beq _08095E00 - ldr r1, [sp, 0x44] - strb r7, [r1, 0x4] - strb r4, [r1, 0x5] - movs r0, 0x1 - b _08095E28 - .align 2, 0 -_08095DF4: .4byte 0xffffff00 -_08095DF8: .4byte 0xffff00ff -_08095DFC: .4byte gUnknown_203B490 -_08095E00: - adds r4, 0x1 - ldr r2, [sp, 0x58] - cmp r4, r2 - blt _08095E0A - ldr r4, [sp, 0x54] -_08095E0A: - ldr r0, [sp, 0x50] - cmp r4, r0 - bne _08095D3E - movs r1, 0x1 - add r9, r1 - ldr r2, [sp, 0x4C] - cmp r9, r2 - bne _08095E1E - movs r0, 0 - mov r9, r0 -_08095E1E: - ldr r1, [sp, 0x48] - cmp r9, r1 - beq _08095E26 - b _08095D1C -_08095E26: - movs r0, 0 -_08095E28: - add sp, 0x60 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end sub_8095CE0 - - thumb_func_start sub_8095E38 -sub_8095E38: - push {r4,lr} - adds r4, r0, 0 - lsls r1, 24 - lsrs r1, 24 - lsls r3, 24 - lsrs r3, 24 - ldrb r0, [r4] - cmp r0, 0 - beq _08095E6E - ldrb r0, [r4, 0x1] - cmp r0, 0x2 - bne _08095E5E - cmp r3, 0x1 - bne _08095E5E - ldrb r0, [r4, 0x4] - cmp r0, r1 - bne _08095E6E - movs r0, 0x1 - b _08095E70 -_08095E5E: - ldrb r0, [r4, 0x4] - cmp r0, r1 - bne _08095E6E - ldrb r0, [r4, 0x5] - cmp r0, r2 - bne _08095E6E - movs r0, 0x1 - b _08095E70 -_08095E6E: - movs r0, 0 -_08095E70: - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_8095E38 - - thumb_func_start sub_8095E78 -sub_8095E78: - push {r4-r7,lr} - mov r7, r8 - push {r7} - sub sp, 0x3C - movs r6, 0 - movs r5, 0x1 -_08095E84: - ldr r0, _08095F04 - ldr r0, [r0] - adds r0, r5 - ldrb r0, [r0] - adds r1, r5, 0x1 - mov r8, r1 - cmp r0, 0 - bne _08095EF6 - lsls r0, r5, 24 - lsrs r0, 24 - bl GetFriendAreaUnlockCondition - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x2 - bne _08095EF6 - movs r4, 0 - ldr r0, _08095F08 - ldr r1, [r0] - movs r3, 0x3 -_08095EAC: - ldrb r0, [r1] - cmp r0, 0 - beq _08095EBA - ldrb r0, [r1, 0x11] - cmp r0, 0x9 - bne _08095EBA - movs r4, 0x1 -_08095EBA: - adds r1, 0x14 - subs r3, 0x1 - cmp r3, 0 - bge _08095EAC - ldr r0, _08095F08 - ldr r0, [r0] - adds r2, r0, 0 - adds r2, 0xF0 - adds r1, r0, 0 - movs r3, 0x7 -_08095ECE: - ldrb r0, [r2] - cmp r0, 0 - beq _08095EE0 - ldr r7, _08095F0C - adds r0, r1, r7 - ldrb r0, [r0] - cmp r0, 0x9 - bne _08095EE0 - movs r4, 0x1 -_08095EE0: - adds r2, 0x14 - adds r1, 0x14 - subs r3, 0x1 - cmp r3, 0 - bge _08095ECE - cmp r4, 0 - bne _08095EF6 - mov r1, sp - adds r0, r1, r6 - strb r5, [r0] - adds r6, 0x1 -_08095EF6: - mov r5, r8 - cmp r5, 0x39 - ble _08095E84 - cmp r6, 0 - bne _08095F10 - movs r0, 0 - b _08095F1A - .align 2, 0 -_08095F04: .4byte gFriendAreas -_08095F08: .4byte gUnknown_203B490 -_08095F0C: .4byte 0x00000101 -_08095F10: - adds r0, r6, 0 - bl RandomCapped - add r0, sp - ldrb r0, [r0] -_08095F1A: - add sp, 0x3C - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end sub_8095E78 - - thumb_func_start sub_8095F28 -sub_8095F28: - push {r4-r7,lr} - sub sp, 0xF0 - lsls r0, 24 - lsrs r7, r0, 24 - movs r6, 0 - movs r5, 0x1 -_08095F34: - lsls r4, r5, 24 - cmp r7, 0x63 - beq _08095F48 - lsrs r1, r4, 24 - adds r0, r7, 0 - bl sub_8091E60 - lsls r0, 24 - cmp r0, 0 - beq _08095F6A -_08095F48: - lsrs r4, 24 - adds r0, r4, 0 - bl sub_8090A60 - lsls r0, 24 - cmp r0, 0 - bne _08095F6A - adds r0, r4, 0 - bl sub_8091524 - lsls r0, 24 - cmp r0, 0 - beq _08095F6A - mov r1, sp - adds r0, r1, r6 - strb r5, [r0] - adds r6, 0x1 -_08095F6A: - adds r5, 0x1 - cmp r5, 0xEF - ble _08095F34 - cmp r6, 0 - beq _08095F80 - adds r0, r6, 0 - bl RandomCapped - add r0, sp - ldrb r0, [r0] - b _08095F82 -_08095F80: - movs r0, 0 -_08095F82: - add sp, 0xF0 - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end sub_8095F28 - - thumb_func_start sub_8095F8C -sub_8095F8C: - push {r4,r5,lr} - movs r5, 0 - movs r4, 0 -_08095F92: - lsls r0, r4, 24 - lsrs r0, 24 - bl sub_8096000 - lsls r0, 24 - cmp r0, 0 - bne _08095FA2 - adds r5, 0x1 -_08095FA2: - adds r4, 0x1 - cmp r4, 0x3 - ble _08095F92 - adds r0, r5, 0 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_8095F8C - - thumb_func_start sub_8095FB0 -sub_8095FB0: - push {r4,r5,lr} - adds r4, r0, 0 - movs r3, 0 - ldr r5, _08095FD4 - movs r2, 0 -_08095FBA: - ldr r0, [r5] - adds r1, r0, r2 - ldrb r0, [r1] - cmp r0, 0 - bne _08095FD8 - adds r0, r4, 0 - ldm r0!, {r2-r4} - stm r1!, {r2-r4} - ldm r0!, {r2,r3} - stm r1!, {r2,r3} - movs r0, 0 - b _08095FE2 - .align 2, 0 -_08095FD4: .4byte gUnknown_203B490 -_08095FD8: - adds r2, 0x14 - adds r3, 0x1 - cmp r3, 0x3 - ble _08095FBA - movs r0, 0x1 -_08095FE2: - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_8095FB0 - - thumb_func_start sub_8095FE8 -sub_8095FE8: - lsls r0, 24 - lsrs r0, 24 - ldr r2, _08095FFC - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 2 - ldr r0, [r2] - adds r0, r1 - bx lr - .align 2, 0 -_08095FFC: .4byte gUnknown_203B490 - thumb_func_end sub_8095FE8 - - thumb_func_start sub_8096000 -sub_8096000: - push {lr} - lsls r0, 24 - lsrs r0, 24 - ldr r1, _0809601C - ldr r2, [r1] - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 2 - adds r2, r1 - ldrb r0, [r2] - cmp r0, 0 - beq _08096020 - movs r0, 0 - b _08096022 - .align 2, 0 -_0809601C: .4byte gUnknown_203B490 -_08096020: - movs r0, 0x1 -_08096022: - pop {r1} - bx r1 - thumb_func_end sub_8096000 - - thumb_func_start sub_8096028 -sub_8096028: - push {r4,lr} - movs r4, 0 -_0809602C: - lsls r0, r4, 24 - lsrs r0, 24 - bl sub_8096040 - adds r4, 0x1 - cmp r4, 0x3 - ble _0809602C - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_8096028 - - thumb_func_start sub_8096040 -sub_8096040: - push {r4,lr} - lsls r0, 24 - lsrs r0, 24 - ldr r3, _08096074 - ldr r1, [r3] - lsls r2, r0, 2 - adds r2, r0 - lsls r2, 2 - adds r1, r2 - movs r4, 0 - strb r4, [r1] - ldr r0, [r3] - adds r0, r2 - movs r1, 0x63 - strb r1, [r0, 0x4] - ldr r0, [r3] - adds r0, r2 - strb r4, [r0, 0x5] - ldr r0, [r3] - adds r0, r2 - movs r1, 0x5 - strb r1, [r0, 0x11] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08096074: .4byte gUnknown_203B490 - thumb_func_end sub_8096040 - - thumb_func_start sub_8096078 -sub_8096078: - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - movs r2, 0 - movs r3, 0 - ldr r0, _08096090 - mov r12, r0 - mov r8, r3 - movs r4, 0 - mov r9, r4 - b _080960B6 - .align 2, 0 -_08096090: .4byte gUnknown_203B490 -_08096094: - cmp r2, r3 - ble _080960AA - mov r1, r12 - ldr r0, [r1] - mov r5, r8 - adds r1, r0, r5 - adds r0, r4 - ldm r0!, {r5-r7} - stm r1!, {r5-r7} - ldm r0!, {r6,r7} - stm r1!, {r6,r7} -_080960AA: - adds r4, 0x14 - movs r0, 0x14 - add r9, r0 - adds r2, 0x1 - add r8, r0 - adds r3, 0x1 -_080960B6: - cmp r2, 0x3 - bgt _080960E2 - mov r1, r12 - ldr r0, [r1] - adds r0, r4 - ldrb r0, [r0] - cmp r0, 0 - bne _080960E2 - ldr r6, _08096110 - mov r1, r9 -_080960CA: - adds r1, 0x14 - adds r4, 0x14 - movs r5, 0x14 - add r9, r5 - adds r2, 0x1 - cmp r2, 0x3 - bgt _080960E2 - ldr r0, [r6] - adds r0, r1 - ldrb r0, [r0] - cmp r0, 0 - beq _080960CA -_080960E2: - cmp r2, 0x4 - bne _08096094 - cmp r3, 0x3 - bgt _08096102 - ldr r4, _08096110 - movs r2, 0 - lsls r0, r3, 2 - adds r0, r3 - lsls r1, r0, 2 -_080960F4: - ldr r0, [r4] - adds r0, r1 - strb r2, [r0] - adds r1, 0x14 - adds r3, 0x1 - cmp r3, 0x3 - ble _080960F4 -_08096102: - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08096110: .4byte gUnknown_203B490 - thumb_func_end sub_8096078 - - thumb_func_start sub_8096114 -sub_8096114: - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x14 - movs r1, 0 -_08096122: - adds r0, r1, 0x1 - mov r10, r0 - mov r8, r10 - cmp r0, 0x3 - bgt _08096198 - ldr r2, _080961B0 - mov r9, r2 - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 2 - mov r12, r0 - mov r3, r10 - lsls r0, r3, 2 - add r0, r10 - lsls r4, r0, 2 -_08096140: - mov r5, r9 - ldr r1, [r5] - adds r3, r1, r4 - ldrb r0, [r3] - cmp r0, 0 - beq _0809618C - mov r6, r12 - adds r2, r1, r6 - ldrb r1, [r2, 0x4] - ldrb r0, [r3, 0x4] - cmp r1, r0 - bhi _08096164 - cmp r1, r0 - bne _0809618C - ldrb r0, [r2, 0x5] - ldrb r7, [r3, 0x5] - cmp r0, r7 - bls _0809618C -_08096164: - mov r1, sp - adds r0, r2, 0 - ldm r0!, {r5-r7} - stm r1!, {r5-r7} - ldm r0!, {r5,r6} - stm r1!, {r5,r6} - adds r1, r2, 0 - adds r0, r3, 0 - ldm r0!, {r2,r3,r7} - stm r1!, {r2,r3,r7} - ldm r0!, {r5,r6} - stm r1!, {r5,r6} - mov r7, r9 - ldr r1, [r7] - adds r1, r4 - mov r0, sp - ldm r0!, {r2,r3,r5} - stm r1!, {r2,r3,r5} - ldm r0!, {r6,r7} - stm r1!, {r6,r7} -_0809618C: - adds r4, 0x14 - movs r0, 0x1 - add r8, r0 - mov r1, r8 - cmp r1, 0x3 - ble _08096140 -_08096198: - mov r1, r10 - cmp r1, 0x2 - ble _08096122 - add sp, 0x14 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080961B0: .4byte gUnknown_203B490 - thumb_func_end sub_8096114 - - thumb_func_start sub_80961B4 -sub_80961B4: - push {lr} - bl sub_8096E2C - lsls r0, 24 - cmp r0, 0 - beq _080961CE - ldr r0, _080961D4 - ldr r0, [r0] - movs r1, 0xCA - lsls r1, 2 - adds r0, r1 - movs r1, 0x1 - strb r1, [r0] -_080961CE: - pop {r0} - bx r0 - .align 2, 0 -_080961D4: .4byte gUnknown_203B490 - thumb_func_end sub_80961B4 - - thumb_func_start sub_80961D8 -sub_80961D8: - push {r4-r7,lr} - mov r7, r8 - push {r7} - movs r7, 0 - bl sub_8095F8C - adds r6, r0, 0 - movs r1, 0x4 - bl RandomRange - mov r8, r0 - cmp r6, 0x3 - bgt _08096202 - ldr r4, _08096208 - ldr r0, [r4] - movs r2, 0xCA - lsls r2, 2 - adds r1, r0, r2 - ldrb r0, [r1] - cmp r0, 0 - bne _0809620C -_08096202: - movs r0, 0 - b _080963A8 - .align 2, 0 -_08096208: .4byte gUnknown_203B490 -_0809620C: - strb r7, [r1] - movs r5, 0x38 - movs r0, 0xA - movs r1, 0x31 - movs r2, 0x1 - bl sub_8001D08 - lsls r0, 24 - cmp r0, 0 - beq _0809623A - ldr r0, [r4] - ldr r1, _08096328 - adds r0, r1 - ldrb r0, [r0] - cmp r0, 0 - bne _0809623A - movs r0, 0x35 - bl sub_8096E80 - lsls r0, 24 - cmp r0, 0 - bne _0809623A - movs r5, 0x35 -_0809623A: - movs r0, 0xF - bl sub_80023E4 - lsls r0, 24 - cmp r0, 0 - beq _0809629C - ldr r0, _0809632C - ldr r0, [r0] - movs r2, 0xC9 - lsls r2, 2 - adds r0, r2 - ldrb r0, [r0] - cmp r0, 0 - bne _08096264 - movs r0, 0x34 - bl sub_8096E80 - lsls r0, 24 - cmp r0, 0 - bne _08096264 - movs r5, 0x34 -_08096264: - ldr r0, _0809632C - ldr r0, [r0] - ldr r1, _08096330 - adds r0, r1 - ldrb r0, [r0] - cmp r0, 0 - bne _08096280 - movs r0, 0x33 - bl sub_8096E80 - lsls r0, 24 - cmp r0, 0 - bne _08096280 - movs r5, 0x33 -_08096280: - ldr r0, _0809632C - ldr r0, [r0] - ldr r2, _08096334 - adds r0, r2 - ldrb r0, [r0] - cmp r0, 0 - bne _0809629C - movs r0, 0x32 - bl sub_8096E80 - lsls r0, 24 - cmp r0, 0 - bne _0809629C - movs r5, 0x32 -_0809629C: - bl GetRescueTeamRank - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x6 - bne _080962C4 - ldr r0, _0809632C - ldr r0, [r0] - ldr r1, _08096338 - adds r0, r1 - ldrb r0, [r0] - cmp r0, 0 - bne _080962C4 - movs r0, 0x36 - bl sub_8096E80 - lsls r0, 24 - cmp r0, 0 - bne _080962C4 - movs r5, 0x36 -_080962C4: - movs r0, 0x6 - bl sub_80023E4 - lsls r0, 24 - cmp r0, 0 - beq _080962EC - ldr r0, _0809632C - ldr r0, [r0] - ldr r2, _0809633C - adds r0, r2 - ldrb r0, [r0] - cmp r0, 0 - bne _080962EC - movs r0, 0x37 - bl sub_8096E80 - lsls r0, 24 - cmp r0, 0 - bne _080962EC - movs r5, 0x37 -_080962EC: - cmp r5, 0x38 - bne _08096310 - cmp r6, r8 - bgt _08096392 - bl sub_8096E2C - lsls r0, 24 - lsrs r5, r0, 24 - movs r0, 0xE - bl sub_80023E4 - lsls r0, 24 - cmp r0, 0 - bne _0809630C - cmp r5, 0x2 - bhi _0809638E -_0809630C: - cmp r5, 0x31 - bhi _0809638E -_08096310: - lsls r0, r6, 24 - lsrs r0, 24 - bl sub_8095FE8 - adds r4, r0, 0 - movs r0, 0x1 - strb r0, [r4] - movs r0, 0x62 - strb r0, [r4, 0x4] - strb r5, [r4, 0x5] - b _0809638A - .align 2, 0 -_08096328: .4byte 0x00000325 -_0809632C: .4byte gUnknown_203B490 -_08096330: .4byte 0x00000323 -_08096334: .4byte 0x00000322 -_08096338: .4byte 0x00000326 -_0809633C: .4byte 0x00000327 -_08096340: - lsls r0, r6, 24 - lsrs r0, 24 - bl sub_8095FE8 - adds r4, r0, 0 - bl sub_8095B28 - lsls r0, 24 - cmp r0, 0 - beq _08096392 - bl sub_8095E78 - lsls r0, 24 - lsrs r5, r0, 24 - adds r0, r4, 0x4 - ldrb r1, [r4, 0x1] - bl sub_803C1D0 - lsls r0, 24 - cmp r0, 0 - bne _0809636C - movs r5, 0 -_0809636C: - movs r0, 0x5 - movs r1, 0xA - bl RandomRange - strb r0, [r4, 0x11] - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x9 - bne _0809638A - cmp r5, 0 - bne _08096388 - movs r0, 0x5 - strb r0, [r4, 0x11] - b _0809638A -_08096388: - strb r5, [r4, 0x13] -_0809638A: - movs r7, 0x1 - adds r6, 0x1 -_0809638E: - cmp r6, r8 - ble _08096340 -_08096392: - bl sub_80963B4 - lsls r0, 24 - cmp r0, 0 - beq _0809639E - movs r7, 0x1 -_0809639E: - bl sub_8096078 - bl sub_8096114 - adds r0, r7, 0 -_080963A8: - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end sub_80961D8 - - thumb_func_start sub_80963B4 -sub_80963B4: - push {r4-r6,lr} - movs r6, 0 - bl sub_8096E2C - lsls r0, 24 - lsrs r5, r0, 24 - bl sub_8095F8C - adds r4, r0, 0 - cmp r4, 0x3 - ble _080963CE - movs r0, 0 - b _080963F4 -_080963CE: - movs r0, 0xE - bl sub_80023E4 - lsls r0, 24 - cmp r0, 0 - beq _080963F2 - cmp r5, 0x31 - bhi _080963F2 - lsls r0, r4, 24 - lsrs r0, 24 - bl sub_8095FE8 - movs r1, 0x1 - strb r1, [r0] - movs r1, 0x62 - strb r1, [r0, 0x4] - strb r5, [r0, 0x5] - movs r6, 0x1 -_080963F2: - adds r0, r6, 0 -_080963F4: - pop {r4-r6} - pop {r1} - bx r1 - thumb_func_end sub_80963B4 - - thumb_func_start sub_80963FC -sub_80963FC: - push {r4-r6,lr} - movs r6, 0 -_08096400: - lsls r0, r6, 24 - lsrs r4, r0, 24 - adds r0, r4, 0 - bl sub_8095FE8 - adds r5, r0, 0 - ldrb r0, [r5] - cmp r0, 0x1 - beq _08096418 - adds r0, r4, 0 - bl sub_8096040 -_08096418: - adds r6, 0x1 - cmp r6, 0x3 - ble _08096400 - bl sub_8096078 - bl sub_8095F8C - lsls r0, 24 - lsrs r0, 24 - bl sub_8095FE8 - adds r5, r0, 0 - movs r0, 0 - movs r4, 0x5 - strb r4, [r5] - strb r0, [r5, 0x1] - strb r0, [r5, 0x2] - movs r0, 0x2 - strb r0, [r5, 0x4] - movs r0, 0x3 - strb r0, [r5, 0x5] - bl Random - ldr r1, _08096484 - ands r1, r0 - str r1, [r5, 0x8] - movs r0, 0x10 - strh r0, [r5, 0xC] - strh r0, [r5, 0xE] - ldrb r0, [r5, 0x4] - bl sub_8095F28 - strb r0, [r5, 0x10] - strb r4, [r5, 0x11] -_0809645C: - ldrb r1, [r5, 0x1] - adds r0, r5, 0x4 - adds r2, r5, 0 - adds r2, 0x12 - bl sub_803C37C - ldrb r0, [r5, 0x10] - ldrb r1, [r5, 0x12] - cmp r0, r1 - beq _0809645C - movs r0, 0 - strb r0, [r5, 0x13] - bl sub_8096078 - bl sub_8096114 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_08096484: .4byte 0x00ffffff - thumb_func_end sub_80963FC - - thumb_func_start sub_8096488 -sub_8096488: - push {r4,lr} - movs r4, 0 -_0809648C: - lsls r0, r4, 24 - lsrs r0, 24 - bl sub_8096040 - adds r4, 0x1 - cmp r4, 0x3 - ble _0809648C - movs r0, 0 - bl sub_8095FE8 - movs r2, 0 - movs r1, 0x1 - strb r1, [r0] - movs r1, 0x62 - strb r1, [r0, 0x4] - strb r2, [r0, 0x5] - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_8096488 - - thumb_func_start sub_80964B4 -sub_80964B4: - push {lr} - ldr r0, _080964D4 - ldr r0, [r0] - ldr r1, _080964D8 - adds r0, r1 - ldrb r0, [r0] - cmp r0, 0 - bne _080964DC - movs r0, 0x35 - bl sub_8096E80 - lsls r0, 24 - cmp r0, 0 - bne _080964DC - movs r0, 0 - b _080964DE - .align 2, 0 -_080964D4: .4byte gUnknown_203B490 -_080964D8: .4byte 0x00000325 -_080964DC: - movs r0, 0x1 -_080964DE: - pop {r1} - bx r1 - thumb_func_end sub_80964B4 - - thumb_func_start sub_80964E4 -sub_80964E4: - push {lr} - ldr r0, _08096504 - ldr r0, [r0] - ldr r1, _08096508 - adds r0, r1 - ldrb r0, [r0] - cmp r0, 0 - bne _0809650C - movs r0, 0x36 - bl sub_8096E80 - lsls r0, 24 - cmp r0, 0 - bne _0809650C - movs r0, 0 - b _0809650E - .align 2, 0 -_08096504: .4byte gUnknown_203B490 -_08096508: .4byte 0x00000326 -_0809650C: - movs r0, 0x1 -_0809650E: - pop {r1} - bx r1 - thumb_func_end sub_80964E4 - - thumb_func_start sub_8096514 -sub_8096514: - push {r4,r5,lr} - movs r5, 0 - movs r4, 0 -_0809651A: - lsls r0, r4, 24 - lsrs r0, 24 - bl sub_809658C - lsls r0, 24 - cmp r0, 0 - bne _0809652A - adds r5, 0x1 -_0809652A: - adds r4, 0x1 - cmp r4, 0x7 - ble _0809651A - adds r0, r5, 0 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_8096514 - - thumb_func_start sub_8096538 -sub_8096538: - push {r4,r5,lr} - adds r4, r0, 0 - movs r3, 0 - ldr r5, _08096560 - movs r2, 0 -_08096542: - ldr r0, [r5] - adds r0, r2 - adds r1, r0, 0 - adds r1, 0x50 - ldrb r0, [r1] - cmp r0, 0 - bne _08096564 - adds r0, r4, 0 - ldm r0!, {r2-r4} - stm r1!, {r2-r4} - ldm r0!, {r2,r3} - stm r1!, {r2,r3} - movs r0, 0 - b _0809656E - .align 2, 0 -_08096560: .4byte gUnknown_203B490 -_08096564: - adds r2, 0x14 - adds r3, 0x1 - cmp r3, 0x7 - ble _08096542 - movs r0, 0x1 -_0809656E: - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_8096538 - - thumb_func_start sub_8096574 -sub_8096574: - lsls r0, 24 - lsrs r0, 24 - ldr r2, _08096588 - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 2 - adds r1, 0x50 - ldr r0, [r2] - adds r0, r1 - bx lr - .align 2, 0 -_08096588: .4byte gUnknown_203B490 - thumb_func_end sub_8096574 - - thumb_func_start sub_809658C -sub_809658C: - push {lr} - lsls r0, 24 - lsrs r0, 24 - ldr r1, _080965AC - ldr r2, [r1] - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 2 - adds r2, r1 - adds r2, 0x50 - ldrb r0, [r2] - cmp r0, 0 - beq _080965B0 - movs r0, 0 - b _080965B2 - .align 2, 0 -_080965AC: .4byte gUnknown_203B490 -_080965B0: - movs r0, 0x1 -_080965B2: - pop {r1} - bx r1 - thumb_func_end sub_809658C - - thumb_func_start sub_80965B8 -sub_80965B8: - push {r4,lr} - lsls r0, 24 - lsrs r0, 24 - ldr r4, _080965F0 - ldr r1, [r4] - lsls r2, r0, 2 - adds r2, r0 - lsls r2, 2 - adds r1, r2 - adds r1, 0x50 - movs r3, 0 - strb r3, [r1] - ldr r0, [r4] - adds r0, r2 - adds r0, 0x54 - movs r1, 0x63 - strb r1, [r0] - ldr r0, [r4] - adds r0, r2 - adds r0, 0x55 - strb r3, [r0] - ldr r0, [r4] - adds r0, r2 - adds r0, 0x61 - strb r3, [r0] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080965F0: .4byte gUnknown_203B490 - thumb_func_end sub_80965B8 - - thumb_func_start sub_80965F4 -sub_80965F4: - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - movs r2, 0 - movs r3, 0 - ldr r0, _0809660C - mov r12, r0 - mov r8, r3 - movs r4, 0 - mov r9, r4 - b _08096636 - .align 2, 0 -_0809660C: .4byte gUnknown_203B490 -_08096610: - cmp r2, r3 - ble _0809662A - mov r1, r12 - ldr r0, [r1] - mov r5, r8 - adds r1, r0, r5 - adds r0, r4 - adds r1, 0x50 - adds r0, 0x50 - ldm r0!, {r5-r7} - stm r1!, {r5-r7} - ldm r0!, {r6,r7} - stm r1!, {r6,r7} -_0809662A: - adds r4, 0x14 - movs r0, 0x14 - add r9, r0 - adds r2, 0x1 - add r8, r0 - adds r3, 0x1 -_08096636: - cmp r2, 0x7 - bgt _08096666 - mov r1, r12 - ldr r0, [r1] - adds r0, r4 - adds r0, 0x50 - ldrb r0, [r0] - cmp r0, 0 - bne _08096666 - ldr r6, _08096694 - mov r1, r9 -_0809664C: - adds r1, 0x14 - adds r4, 0x14 - movs r5, 0x14 - add r9, r5 - adds r2, 0x1 - cmp r2, 0x7 - bgt _08096666 - ldr r0, [r6] - adds r0, r1 - adds r0, 0x50 - ldrb r0, [r0] - cmp r0, 0 - beq _0809664C -_08096666: - cmp r2, 0x8 - bne _08096610 - cmp r3, 0x7 - bgt _08096688 - ldr r4, _08096694 - movs r2, 0 - lsls r0, r3, 2 - adds r0, r3 - lsls r1, r0, 2 -_08096678: - ldr r0, [r4] - adds r0, r1 - adds r0, 0x50 - strb r2, [r0] - adds r1, 0x14 - adds r3, 0x1 - cmp r3, 0x7 - ble _08096678 -_08096688: - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08096694: .4byte gUnknown_203B490 - thumb_func_end sub_80965F4 - - thumb_func_start sub_8096698 -sub_8096698: - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x14 - movs r1, 0 -_080966A6: - adds r6, r1, 0x1 - mov r10, r6 - cmp r6, 0x7 - bgt _08096730 - ldr r0, _08096748 - mov r8, r0 - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 2 - mov r9, r0 - lsls r0, r6, 2 - adds r0, r6 - lsls r4, r0, 2 -_080966C0: - mov r2, r8 - ldr r1, [r2] - adds r3, r1, r4 - adds r5, r3, 0 - adds r5, 0x50 - ldrb r0, [r5] - cmp r0, 0 - beq _08096724 - add r1, r9 - mov r12, r1 - mov r0, r12 - adds r0, 0x54 - adds r1, r3, 0 - adds r1, 0x54 - ldrb r2, [r0] - ldrb r0, [r1] - cmp r2, r0 - bhi _080966F6 - cmp r2, r0 - bne _08096724 - mov r0, r12 - adds r0, 0x55 - adds r1, 0x1 - ldrb r0, [r0] - ldrb r1, [r1] - cmp r0, r1 - bls _08096724 -_080966F6: - mov r1, sp - mov r0, r12 - adds r0, 0x50 - ldm r0!, {r2,r3,r7} - stm r1!, {r2,r3,r7} - ldm r0!, {r3,r7} - stm r1!, {r3,r7} - mov r1, r12 - adds r1, 0x50 - adds r0, r5, 0 - ldm r0!, {r2,r3,r5} - stm r1!, {r2,r3,r5} - ldm r0!, {r2,r7} - stm r1!, {r2,r7} - mov r3, r8 - ldr r1, [r3] - adds r1, r4 - adds r1, 0x50 - mov r0, sp - ldm r0!, {r2,r5,r7} - stm r1!, {r2,r5,r7} - ldm r0!, {r3,r5} - stm r1!, {r3,r5} -_08096724: - adds r4, 0x14 - movs r7, 0x1 - add r10, r7 - mov r0, r10 - cmp r0, 0x7 - ble _080966C0 -_08096730: - adds r1, r6, 0 - cmp r1, 0x6 - ble _080966A6 - add sp, 0x14 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08096748: .4byte gUnknown_203B490 - thumb_func_end sub_8096698 - - thumb_func_start sub_809674C -sub_809674C: - push {r4-r7,lr} - mov r7, r8 - push {r7} - movs r0, 0x4 - movs r1, 0x8 - bl RandomRange - mov r8, r0 - ldr r3, _08096864 - movs r2, 0 - movs r1, 0 - movs r7, 0x7 -_08096764: - ldr r0, [r3] - adds r0, r1 - adds r0, 0x50 - strb r2, [r0] - adds r1, 0x14 - subs r7, 0x1 - cmp r7, 0 - bge _08096764 - movs r7, 0 - movs r0, 0xE - bl sub_8097318 - lsls r0, 24 - cmp r0, 0 - beq _080967C0 - movs r0, 0 - bl sub_8096574 - adds r5, r0, 0 - movs r4, 0x2 - strb r4, [r5] - movs r0, 0x6 - strb r0, [r5, 0x1] - movs r0, 0x1 - strb r0, [r5, 0x2] - movs r0, 0x2A - strb r0, [r5, 0x4] - movs r0, 0xA - strb r0, [r5, 0x5] - bl Random - ldr r1, _08096868 - ands r1, r0 - str r1, [r5, 0x8] - movs r1, 0 - movs r0, 0xC2 - lsls r0, 1 - strh r0, [r5, 0xC] - movs r0, 0x38 - strh r0, [r5, 0xE] - strb r1, [r5, 0x10] - strb r4, [r5, 0x11] - movs r0, 0x3A - strb r0, [r5, 0x12] - strb r1, [r5, 0x13] - movs r7, 0x1 -_080967C0: - movs r0, 0xF - bl sub_8097318 - lsls r0, 24 - cmp r0, 0 - beq _0809680A - lsls r0, r7, 24 - lsrs r0, 24 - bl sub_8096574 - adds r5, r0, 0 - movs r0, 0x3 - strb r0, [r5] - movs r0, 0x6 - strb r0, [r5, 0x1] - movs r4, 0x2 - strb r4, [r5, 0x2] - movs r0, 0x35 - strb r0, [r5, 0x4] - movs r0, 0xF - strb r0, [r5, 0x5] - bl Random - ldr r1, _08096868 - ands r1, r0 - str r1, [r5, 0x8] - movs r1, 0 - movs r0, 0x82 - lsls r0, 1 - strh r0, [r5, 0xC] - strh r0, [r5, 0xE] - strb r1, [r5, 0x10] - strb r4, [r5, 0x11] - movs r0, 0x3A - strb r0, [r5, 0x12] - strb r1, [r5, 0x13] - adds r7, 0x1 -_0809680A: - movs r0, 0x1C - bl sub_8097318 - lsls r0, 24 - cmp r0, 0 - beq _08096854 - lsls r0, r7, 24 - lsrs r0, 24 - bl sub_8096574 - adds r5, r0, 0 - movs r0, 0x4 - strb r0, [r5] - movs r0, 0x6 - strb r0, [r5, 0x1] - movs r0, 0x3 - strb r0, [r5, 0x2] - movs r0, 0x1A - strb r0, [r5, 0x4] - movs r0, 0x14 - strb r0, [r5, 0x5] - bl Random - ldr r1, _08096868 - ands r1, r0 - str r1, [r5, 0x8] - movs r1, 0 - ldr r0, _0809686C - strh r0, [r5, 0xC] - strh r0, [r5, 0xE] - strb r1, [r5, 0x10] - movs r0, 0x2 - strb r0, [r5, 0x11] - movs r0, 0x3A - strb r0, [r5, 0x12] - strb r1, [r5, 0x13] - adds r7, 0x1 -_08096854: - lsls r0, r7, 2 - adds r0, r7 - lsls r0, 2 - adds r5, r0, 0 - adds r5, 0x50 - adds r4, r0, 0 - b _08096886 - .align 2, 0 -_08096864: .4byte gUnknown_203B490 -_08096868: .4byte 0x00ffffff -_0809686C: .4byte 0x0000014d -_08096870: - movs r0, 0 - movs r1, 0x4 - bl RandomRange - ldr r1, [r6] - adds r1, r4 - adds r1, 0x61 - strb r0, [r1] - adds r5, 0x14 - adds r4, 0x14 - adds r7, 0x1 -_08096886: - cmp r7, r8 - bgt _0809689A - ldr r6, _080968AC - ldr r0, [r6] - adds r0, r5 - bl sub_8095B28 - lsls r0, 24 - cmp r0, 0 - bne _08096870 -_0809689A: - bl sub_80965F4 - bl sub_8096698 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080968AC: .4byte gUnknown_203B490 - thumb_func_end sub_809674C - - thumb_func_start sub_80968B0 -sub_80968B0: - push {r4,r5,lr} - adds r3, r0, 0 - movs r4, 0 - ldr r0, _08096928 - ldr r0, [r0] - adds r2, r0, 0 - adds r2, 0xF0 -_080968BE: - ldrb r0, [r2] - cmp r0, 0 - beq _0809692C - ldrb r0, [r3, 0x1] - ldrb r1, [r2, 0x1] - cmp r0, r1 - bne _0809692C - ldrb r0, [r3, 0x2] - ldrb r5, [r2, 0x2] - cmp r0, r5 - bne _0809692C - ldrb r0, [r3, 0x4] - ldrb r1, [r2, 0x4] - cmp r0, r1 - bne _0809692C - ldrb r0, [r3, 0x5] - ldrb r5, [r2, 0x5] - cmp r0, r5 - bne _0809692C - ldr r1, [r3, 0x8] - ldr r0, [r2, 0x8] - cmp r1, r0 - bne _0809692C - movs r0, 0xC - ldrsh r1, [r3, r0] - movs r5, 0xC - ldrsh r0, [r2, r5] - cmp r1, r0 - bne _0809692C - movs r0, 0xE - ldrsh r1, [r3, r0] - movs r5, 0xE - ldrsh r0, [r2, r5] - cmp r1, r0 - bne _0809692C - ldrb r0, [r3, 0x10] - ldrb r1, [r2, 0x10] - cmp r0, r1 - bne _0809692C - ldrb r0, [r3, 0x11] - ldrb r5, [r2, 0x11] - cmp r0, r5 - bne _0809692C - ldrb r0, [r3, 0x12] - ldrb r1, [r2, 0x12] - cmp r0, r1 - bne _0809692C - ldrb r0, [r3, 0x13] - ldrb r5, [r2, 0x13] - cmp r0, r5 - bne _0809692C - movs r0, 0x1 - b _08096936 - .align 2, 0 -_08096928: .4byte gUnknown_203B490 -_0809692C: - adds r2, 0x14 - adds r4, 0x1 - cmp r4, 0x7 - ble _080968BE - movs r0, 0 -_08096936: - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_80968B0 - - thumb_func_start sub_809693C -sub_809693C: - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - adds r4, r0, 0 - ldrb r0, [r4, 0x4] - mov r9, r0 - ldrb r0, [r4, 0x5] - mov r8, r0 - movs r7, 0 - adds r0, r4, 0 - bl sub_80959C0 - lsls r0, 24 - cmp r0, 0 - bne _08096962 - b _0809699A -_0809695E: - movs r0, 0x1 - b _0809699C -_08096962: - ldrb r0, [r4, 0x1] - cmp r0, 0x2 - bne _0809696A - movs r7, 0x1 -_0809696A: - movs r6, 0 - movs r5, 0xF0 - movs r4, 0 -_08096970: - ldr r0, _080969A8 - ldr r1, [r0] - adds r0, r1, r4 - adds r0, 0xF0 - ldrb r0, [r0] - cmp r0, 0x6 - bne _08096990 - adds r0, r1, r5 - mov r1, r9 - mov r2, r8 - adds r3, r7, 0 - bl sub_8095E38 - lsls r0, 24 - cmp r0, 0 - bne _0809695E -_08096990: - adds r5, 0x14 - adds r4, 0x14 - adds r6, 0x1 - cmp r6, 0x7 - ble _08096970 -_0809699A: - movs r0, 0 -_0809699C: - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 -_080969A8: .4byte gUnknown_203B490 - thumb_func_end sub_809693C - - thumb_func_start sub_80969AC -sub_80969AC: - push {r4,r5,lr} - movs r5, 0 - movs r4, 0 -_080969B2: - lsls r0, r4, 24 - lsrs r0, 24 - bl sub_8096ACC - lsls r0, 24 - cmp r0, 0 - bne _080969C2 - adds r5, 0x1 -_080969C2: - adds r4, 0x1 - cmp r4, 0x7 - ble _080969B2 - adds r0, r5, 0 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_80969AC - - thumb_func_start sub_80969D0 -sub_80969D0: - push {r4-r6,lr} - lsls r0, 24 - lsrs r6, r0, 24 - movs r5, 0 - movs r4, 0 -_080969DA: - lsls r0, r4, 24 - lsrs r0, 24 - bl sub_8096AB4 - adds r1, r0, 0 - ldrb r0, [r1, 0x4] - cmp r0, r6 - bne _080969FA - ldrb r0, [r1] - cmp r0, 0x6 - beq _080969F8 - cmp r0, 0x8 - beq _080969F8 - cmp r0, 0x9 - bne _080969FA -_080969F8: - adds r5, 0x1 -_080969FA: - adds r4, 0x1 - cmp r4, 0x7 - ble _080969DA - adds r0, r5, 0 - pop {r4-r6} - pop {r1} - bx r1 - thumb_func_end sub_80969D0 - - thumb_func_start sub_8096A08 -sub_8096A08: - push {r4-r6,lr} - sub sp, 0xC - adds r6, r1, 0 - lsls r0, 24 - lsrs r5, r0, 24 - movs r4, 0 -_08096A14: - lsls r0, r4, 24 - lsrs r0, 24 - bl sub_8096AB4 - adds r2, r0, 0 - ldrb r0, [r2, 0x4] - cmp r0, r5 - bne _08096A68 - ldrb r0, [r2] - cmp r0, 0x6 - bne _08096A68 - ldrb r0, [r2, 0x1] - cmp r0, 0x2 - bne _08096A68 - ldr r1, _08096A60 - ldr r0, [sp, 0x8] - ands r0, r1 - movs r1, 0x4A - orrs r0, r1 - ldr r1, _08096A64 - ands r0, r1 - movs r1, 0x80 - lsls r1, 1 - orrs r0, r1 - str r0, [sp, 0x8] - movs r0, 0xC - ldrsh r1, [r2, r0] - add r0, sp, 0x8 - str r0, [sp] - movs r0, 0 - str r0, [sp, 0x4] - adds r0, r6, 0 - movs r2, 0 - movs r3, 0 - bl sub_808CFD0 - movs r0, 0x1 - b _08096A70 - .align 2, 0 -_08096A60: .4byte 0xffffff00 -_08096A64: .4byte 0xffff00ff -_08096A68: - adds r4, 0x1 - cmp r4, 0x7 - ble _08096A14 - movs r0, 0 -_08096A70: - add sp, 0xC - pop {r4-r6} - pop {r1} - bx r1 - thumb_func_end sub_8096A08 - - thumb_func_start sub_8096A78 -sub_8096A78: - push {r4,r5,lr} - adds r4, r0, 0 - movs r3, 0 - ldr r5, _08096AA0 - movs r2, 0 -_08096A82: - ldr r0, [r5] - adds r0, r2 - adds r1, r0, 0 - adds r1, 0xF0 - ldrb r0, [r1] - cmp r0, 0 - bne _08096AA4 - adds r0, r4, 0 - ldm r0!, {r2-r4} - stm r1!, {r2-r4} - ldm r0!, {r2,r3} - stm r1!, {r2,r3} - movs r0, 0 - b _08096AAE - .align 2, 0 -_08096AA0: .4byte gUnknown_203B490 -_08096AA4: - adds r2, 0x14 - adds r3, 0x1 - cmp r3, 0x7 - ble _08096A82 - movs r0, 0x1 -_08096AAE: - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_8096A78 - - thumb_func_start sub_8096AB4 -sub_8096AB4: - lsls r0, 24 - lsrs r0, 24 - ldr r2, _08096AC8 - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 2 - adds r1, 0xF0 - ldr r0, [r2] - adds r0, r1 - bx lr - .align 2, 0 -_08096AC8: .4byte gUnknown_203B490 - thumb_func_end sub_8096AB4 - - thumb_func_start sub_8096ACC -sub_8096ACC: - push {lr} - lsls r0, 24 - lsrs r0, 24 - ldr r1, _08096AEC - ldr r2, [r1] - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 2 - adds r2, r1 - adds r2, 0xF0 - ldrb r0, [r2] - cmp r0, 0 - beq _08096AF0 - movs r0, 0 - b _08096AF2 - .align 2, 0 -_08096AEC: .4byte gUnknown_203B490 -_08096AF0: - movs r0, 0x1 -_08096AF2: - pop {r1} - bx r1 - thumb_func_end sub_8096ACC - - thumb_func_start sub_8096AF8 -sub_8096AF8: - push {r4-r6,lr} - adds r5, r0, 0 - adds r0, r1, 0 - adds r4, r2, 0 - lsls r0, 24 - lsrs r0, 24 - lsls r4, 24 - lsrs r4, 24 - bl sub_8096AB4 - adds r3, r0, 0 - movs r1, 0 - strb r1, [r5] - ldrh r0, [r3, 0xC] - strh r0, [r5, 0x2] - strh r1, [r5, 0x4] - ldrb r0, [r3, 0x4] - cmp r0, r4 - bne _08096B92 - ldrb r0, [r3, 0x1] - cmp r0, 0x4 - bhi _08096B92 - lsls r0, 2 - ldr r1, _08096B30 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_08096B30: .4byte _08096B34 - .align 2, 0 -_08096B34: - .4byte _08096B78 - .4byte _08096B84 - .4byte _08096B84 - .4byte _08096B48 - .4byte _08096B78 -_08096B48: - ldrb r0, [r3] - cmp r0, 0x6 - bne _08096B92 - ldr r0, _08096B74 - movs r6, 0x1 - ldr r2, [r0] - movs r4, 0x13 -_08096B56: - ldrb r1, [r2] - adds r0, r6, 0 - ands r0, r1 - cmp r0, 0 - beq _08096B6A - ldrb r0, [r2, 0x2] - ldrb r1, [r3, 0x10] - cmp r0, r1 - bne _08096B6A - strb r6, [r5] -_08096B6A: - adds r2, 0x4 - subs r4, 0x1 - cmp r4, 0 - bge _08096B56 - b _08096B92 - .align 2, 0 -_08096B74: .4byte gUnknown_203B460 -_08096B78: - ldrb r0, [r3] - cmp r0, 0x9 - bne _08096B92 - movs r0, 0x1 - strb r0, [r5] - b _08096B92 -_08096B84: - ldrb r0, [r3] - cmp r0, 0x9 - bne _08096B92 - movs r0, 0x1 - strb r0, [r5] - ldrh r0, [r3, 0xE] - strh r0, [r5, 0x4] -_08096B92: - pop {r4-r6} - pop {r0} - bx r0 - thumb_func_end sub_8096AF8 - - thumb_func_start sub_8096B98 -sub_8096B98: - push {r4,r5,lr} - lsls r0, 24 - lsrs r5, r0, 24 - movs r4, 0 -_08096BA0: - lsls r0, r4, 24 - lsrs r0, 24 - bl sub_8096AB4 - adds r1, r0, 0 - ldrb r0, [r1] - cmp r0, 0x6 - bne _08096BC2 - ldrb r0, [r1, 0x1] - cmp r0, 0x2 - bne _08096BC2 - ldrb r0, [r1, 0x4] - cmp r0, r5 - bne _08096BC2 - movs r2, 0xE - ldrsh r0, [r1, r2] - b _08096BCA -_08096BC2: - adds r4, 0x1 - cmp r4, 0x7 - ble _08096BA0 - movs r0, 0 -_08096BCA: - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_8096B98 - - thumb_func_start sub_8096BD0 -sub_8096BD0: - push {r4,r5,lr} - ldr r0, _08096C04 - ldr r0, [r0] - adds r5, r0, 0 - adds r5, 0xF0 - movs r4, 0 -_08096BDC: - ldrb r0, [r5] - cmp r0, 0x9 - bgt _08096BEE - cmp r0, 0x7 - blt _08096BEE - lsls r0, r4, 24 - lsrs r0, 24 - bl sub_8096C3C -_08096BEE: - adds r5, 0x14 - adds r4, 0x1 - cmp r4, 0x7 - ble _08096BDC - bl sub_8096C80 - bl sub_8096D24 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_08096C04: .4byte gUnknown_203B490 - thumb_func_end sub_8096BD0 - - thumb_func_start sub_8096C08 -sub_8096C08: - push {lr} - adds r3, r0, 0 - ldr r0, _08096C28 - ldr r0, [r0] - adds r1, r0, 0 - adds r1, 0xF0 - movs r2, 0 -_08096C16: - ldrb r0, [r1] - cmp r0, 0x4 - bls _08096C2C - ldrb r0, [r1, 0x2] - cmp r0, 0x4 - bne _08096C2C - strb r2, [r3] - movs r0, 0x1 - b _08096C36 - .align 2, 0 -_08096C28: .4byte gUnknown_203B490 -_08096C2C: - adds r1, 0x14 - adds r2, 0x1 - cmp r2, 0x7 - ble _08096C16 - movs r0, 0 -_08096C36: - pop {r1} - bx r1 - thumb_func_end sub_8096C08 - - thumb_func_start sub_8096C3C -sub_8096C3C: - push {r4,lr} - lsls r0, 24 - lsrs r0, 24 - ldr r3, _08096C78 - ldr r1, [r3] - lsls r2, r0, 2 - adds r2, r0 - lsls r2, 2 - adds r1, r2 - adds r1, 0xF0 - movs r4, 0 - strb r4, [r1] - ldr r0, [r3] - adds r0, r2 - adds r0, 0xF4 - movs r1, 0x63 - strb r1, [r0] - ldr r0, [r3] - adds r0, r2 - adds r0, 0xF5 - strb r4, [r0] - ldr r0, [r3] - adds r0, r2 - ldr r2, _08096C7C - adds r1, r0, r2 - movs r0, 0x5 - strb r0, [r1] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08096C78: .4byte gUnknown_203B490 -_08096C7C: .4byte 0x00000101 - thumb_func_end sub_8096C3C - - thumb_func_start sub_8096C80 -sub_8096C80: - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - movs r2, 0 - movs r3, 0 - ldr r0, _08096C98 - mov r12, r0 - mov r8, r3 - movs r4, 0 - mov r9, r4 - b _08096CC2 - .align 2, 0 -_08096C98: .4byte gUnknown_203B490 -_08096C9C: - cmp r2, r3 - ble _08096CB6 - mov r1, r12 - ldr r0, [r1] - mov r5, r8 - adds r1, r0, r5 - adds r0, r4 - adds r1, 0xF0 - adds r0, 0xF0 - ldm r0!, {r5-r7} - stm r1!, {r5-r7} - ldm r0!, {r6,r7} - stm r1!, {r6,r7} -_08096CB6: - adds r4, 0x14 - movs r0, 0x14 - add r9, r0 - adds r2, 0x1 - add r8, r0 - adds r3, 0x1 -_08096CC2: - cmp r2, 0x7 - bgt _08096CF2 - mov r1, r12 - ldr r0, [r1] - adds r0, r4 - adds r0, 0xF0 - ldrb r0, [r0] - cmp r0, 0 - bne _08096CF2 - ldr r6, _08096D20 - mov r1, r9 -_08096CD8: - adds r1, 0x14 - adds r4, 0x14 - movs r5, 0x14 - add r9, r5 - adds r2, 0x1 - cmp r2, 0x7 - bgt _08096CF2 - ldr r0, [r6] - adds r0, r1 - adds r0, 0xF0 - ldrb r0, [r0] - cmp r0, 0 - beq _08096CD8 -_08096CF2: - cmp r2, 0x8 - bne _08096C9C - cmp r3, 0x7 - bgt _08096D14 - ldr r4, _08096D20 - movs r2, 0 - lsls r0, r3, 2 - adds r0, r3 - lsls r1, r0, 2 -_08096D04: - ldr r0, [r4] - adds r0, r1 - adds r0, 0xF0 - strb r2, [r0] - adds r1, 0x14 - adds r3, 0x1 - cmp r3, 0x7 - ble _08096D04 -_08096D14: - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08096D20: .4byte gUnknown_203B490 - thumb_func_end sub_8096C80 - - thumb_func_start sub_8096D24 -sub_8096D24: - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x18 - movs r1, 0 -_08096D32: - adds r6, r1, 0x1 - mov r10, r6 - cmp r6, 0x7 - bgt _08096DBC - ldr r0, _08096DD4 - mov r8, r0 - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 2 - mov r9, r0 - lsls r0, r6, 2 - adds r0, r6 - lsls r4, r0, 2 -_08096D4C: - mov r1, r8 - ldr r2, [r1] - adds r3, r2, r4 - adds r5, r3, 0 - adds r5, 0xF0 - str r5, [sp, 0x14] - ldrb r0, [r5] - cmp r0, 0 - beq _08096DB0 - add r2, r9 - mov r12, r2 - mov r0, r12 - adds r0, 0xF4 - adds r1, r3, 0 - adds r1, 0xF4 - ldrb r2, [r0] - ldrb r0, [r1] - cmp r2, r0 - bhi _08096D84 - cmp r2, r0 - bne _08096DB0 - mov r0, r12 - adds r0, 0xF5 - adds r1, 0x1 - ldrb r0, [r0] - ldrb r1, [r1] - cmp r0, r1 - bls _08096DB0 -_08096D84: - mov r2, r12 - adds r2, 0xF0 - mov r1, sp - adds r0, r2, 0 - ldm r0!, {r3,r5,r7} - stm r1!, {r3,r5,r7} - ldm r0!, {r3,r7} - stm r1!, {r3,r7} - ldr r0, [sp, 0x14] - ldm r0!, {r1,r5,r7} - stm r2!, {r1,r5,r7} - ldm r0!, {r3,r5} - stm r2!, {r3,r5} - mov r7, r8 - ldr r1, [r7] - adds r1, r4 - adds r1, 0xF0 - mov r0, sp - ldm r0!, {r2,r3,r5} - stm r1!, {r2,r3,r5} - ldm r0!, {r2,r7} - stm r1!, {r2,r7} -_08096DB0: - adds r4, 0x14 - movs r3, 0x1 - add r10, r3 - mov r5, r10 - cmp r5, 0x7 - ble _08096D4C -_08096DBC: - adds r1, r6, 0 - cmp r1, 0x6 - ble _08096D32 - add sp, 0x18 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08096DD4: .4byte gUnknown_203B490 - thumb_func_end sub_8096D24 - - thumb_func_start sub_8096DD8 -sub_8096DD8: - ldr r0, _08096DE4 - ldr r0, [r0] - movs r1, 0xC8 - lsls r1, 1 - adds r0, r1 - bx lr - .align 2, 0 -_08096DE4: .4byte gUnknown_203B490 - thumb_func_end sub_8096DD8 - - thumb_func_start sub_8096DE8 -sub_8096DE8: - ldr r0, _08096DF4 - ldr r0, [r0] - movs r1, 0xDC - lsls r1, 1 - adds r0, r1 - bx lr - .align 2, 0 -_08096DF4: .4byte gUnknown_203B490 - thumb_func_end sub_8096DE8 - - thumb_func_start sub_8096DF8 -sub_8096DF8: - lsls r0, 24 - lsrs r0, 24 - ldr r1, _08096E10 - ldr r1, [r1] - movs r2, 0xBC - lsls r2, 2 - adds r1, r2 - adds r1, r0 - movs r0, 0x1 - strb r0, [r1] - bx lr - .align 2, 0 -_08096E10: .4byte gUnknown_203B490 - thumb_func_end sub_8096DF8 - - thumb_func_start sub_8096E14 -sub_8096E14: - lsls r0, 24 - lsrs r0, 24 - ldr r1, _08096E28 - ldr r1, [r1] - movs r2, 0xBC - lsls r2, 2 - adds r1, r2 - adds r1, r0 - ldrb r0, [r1] - bx lr - .align 2, 0 -_08096E28: .4byte gUnknown_203B490 - thumb_func_end sub_8096E14 - - thumb_func_start sub_8096E2C -sub_8096E2C: - push {lr} - movs r3, 0 - ldr r0, _08096E70 - ldr r1, [r0] - movs r2, 0x3 -_08096E36: - ldrb r0, [r1] - cmp r0, 0x1 - bne _08096E48 - ldrb r0, [r1, 0x5] - cmp r3, r0 - bgt _08096E48 - cmp r0, 0x31 - bhi _08096E48 - adds r3, r0, 0x1 -_08096E48: - adds r1, 0x14 - subs r2, 0x1 - cmp r2, 0 - bge _08096E36 - adds r2, r3, 0 - cmp r2, 0x31 - bgt _08096E7A - ldr r0, _08096E70 - ldr r0, [r0] - movs r3, 0xBC - lsls r3, 2 - adds r1, r0, r3 -_08096E60: - adds r0, r1, r2 - ldrb r0, [r0] - cmp r0, 0 - bne _08096E74 - lsls r0, r2, 24 - lsrs r0, 24 - b _08096E7C - .align 2, 0 -_08096E70: .4byte gUnknown_203B490 -_08096E74: - adds r2, 0x1 - cmp r2, 0x31 - ble _08096E60 -_08096E7A: - movs r0, 0x38 -_08096E7C: - pop {r1} - bx r1 - thumb_func_end sub_8096E2C - - thumb_func_start sub_8096E80 -sub_8096E80: - push {lr} - lsls r0, 24 - lsrs r3, r0, 24 - movs r2, 0 - ldr r0, _08096E9C - ldr r1, [r0] -_08096E8C: - ldrb r0, [r1] - cmp r0, 0x1 - bne _08096EA0 - ldrb r0, [r1, 0x5] - cmp r3, r0 - bne _08096EA0 - movs r0, 0x1 - b _08096EAA - .align 2, 0 -_08096E9C: .4byte gUnknown_203B490 -_08096EA0: - adds r1, 0x14 - adds r2, 0x1 - cmp r2, 0x3 - ble _08096E8C - movs r0, 0 -_08096EAA: - pop {r1} - bx r1 - thumb_func_end sub_8096E80 - - thumb_func_start sub_8096EB0 -sub_8096EB0: - ldrb r1, [r0, 0x2] - ldrb r2, [r0, 0x1] - adds r1, r2 - ldrb r3, [r0, 0x4] - adds r2, r1, r3 - ldrb r1, [r0, 0x5] - adds r2, r1 - ldr r1, [r0, 0x8] - lsls r1, 8 - adds r2, r1 - movs r3, 0xC - ldrsh r1, [r0, r3] - lsls r1, 12 - adds r2, r1 - movs r3, 0xE - ldrsh r1, [r0, r3] - lsls r1, 16 - adds r2, r1 - ldrb r1, [r0, 0x10] - lsls r1, 24 - adds r1, r2, r1 - ldrb r3, [r0, 0x11] - adds r2, r1, r3 - ldrb r1, [r0, 0x12] - adds r1, r2, r1 - ldrb r0, [r0, 0x13] - adds r2, r1, r0 - adds r0, r2, 0 - bx lr - thumb_func_end sub_8096EB0 - - thumb_func_start sub_8096EEC -sub_8096EEC: - push {r4-r7,lr} - mov r7, r8 - push {r7} - mov r12, r0 - movs r3, 0xF - ldr r5, _08096F4C - mov r8, r5 - movs r4, 0x8C - lsls r4, 2 -_08096EFE: - mov r0, r8 - ldr r2, [r0] - lsls r1, r3, 1 - adds r1, r3 - lsls r1, 2 - adds r1, r2, r1 - subs r3, 0x1 - lsls r0, r3, 1 - adds r0, r3 - lsls r0, 2 - adds r2, r0 - adds r1, r4 - adds r2, r4 - ldm r2!, {r0,r6,r7} - stm r1!, {r0,r6,r7} - cmp r3, 0 - bgt _08096EFE - ldr r2, [r5] - movs r3, 0x8C - lsls r3, 2 - adds r2, r3 - mov r6, r12 - ldr r0, [r6, 0x4] - ldr r1, [r6, 0x8] - str r0, [r2] - str r1, [r2, 0x4] - mov r0, r12 - bl sub_8096EB0 - ldr r1, [r5] - movs r7, 0x8E - lsls r7, 2 - adds r1, r7 - str r0, [r1] - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08096F4C: .4byte gUnknown_203B490 - thumb_func_end sub_8096EEC - - thumb_func_start sub_8096F50 -sub_8096F50: - push {r4-r7,lr} - adds r4, r0, 0 - bl sub_8096EB0 - mov r12, r0 - movs r5, 0 - ldr r0, _08096F8C - ldr r7, [r0] - ldrb r6, [r4, 0x4] - movs r3, 0 -_08096F64: - movs r1, 0x8C - lsls r1, 2 - adds r0, r3, r1 - adds r2, r7, r0 - ldrb r0, [r2] - cmp r0, r6 - bne _08096F90 - ldrb r0, [r2, 0x1] - ldrb r1, [r4, 0x5] - cmp r0, r1 - bne _08096F90 - ldr r1, [r2, 0x4] - ldr r0, [r4, 0x8] - cmp r1, r0 - bne _08096F90 - ldr r0, [r2, 0x8] - cmp r0, r12 - bne _08096F90 - movs r0, 0x1 - b _08096F9A - .align 2, 0 -_08096F8C: .4byte gUnknown_203B490 -_08096F90: - adds r3, 0xC - adds r5, 0x1 - cmp r5, 0xF - ble _08096F64 - movs r0, 0 -_08096F9A: - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end sub_8096F50 - - thumb_func_start sub_8096FA0 -sub_8096FA0: - push {r4-r7,lr} - sub sp, 0x14 - adds r3, r0, 0 - adds r2, r1, 0 - mov r0, sp - adds r1, r3, 0 - bl sub_809485C - add r7, sp, 0x10 - ldr r6, _08097020 - movs r5, 0 - movs r4, 0x3 -_08096FB8: - ldr r1, [r6] - adds r1, r5 - mov r0, sp - bl sub_80971EC - adds r5, 0x14 - subs r4, 0x1 - cmp r4, 0 - bge _08096FB8 - ldr r6, _08097020 - movs r5, 0x50 - movs r4, 0x7 -_08096FD0: - ldr r1, [r6] - adds r1, r5 - mov r0, sp - bl sub_80971EC - adds r5, 0x14 - subs r4, 0x1 - cmp r4, 0 - bge _08096FD0 - ldr r6, _08097020 - movs r5, 0xF0 - movs r4, 0x7 -_08096FE8: - ldr r1, [r6] - adds r1, r5 - mov r0, sp - bl sub_80971EC - adds r5, 0x14 - subs r4, 0x1 - cmp r4, 0 - bge _08096FE8 - movs r4, 0 - movs r6, 0x1 - ldr r5, _08097020 -_08097000: - mov r0, sp - adds r1, r7, 0 - movs r2, 0x1 - bl sub_8094924 - ldr r1, [sp, 0x10] - ands r1, r6 - cmp r1, 0 - beq _08097024 - ldr r0, [r5] - movs r1, 0xBC - lsls r1, 2 - adds r0, r1 - adds r0, r4 - strb r6, [r0] - b _08097030 - .align 2, 0 -_08097020: .4byte gUnknown_203B490 -_08097024: - ldr r0, [r5] - movs r2, 0xBC - lsls r2, 2 - adds r0, r2 - adds r0, r4 - strb r1, [r0] -_08097030: - adds r4, 0x1 - cmp r4, 0x37 - ble _08097000 - mov r0, sp - adds r1, r7, 0 - movs r2, 0x1 - bl sub_8094924 - ldr r1, [sp, 0x10] - movs r2, 0x1 - ands r1, r2 - cmp r1, 0 - beq _0809705C - ldr r0, _08097058 - ldr r0, [r0] - movs r1, 0xCA - lsls r1, 2 - adds r0, r1 - strb r2, [r0] - b _08097068 - .align 2, 0 -_08097058: .4byte gUnknown_203B490 -_0809705C: - ldr r0, _080970D4 - ldr r0, [r0] - movs r2, 0xCA - lsls r2, 2 - adds r0, r2 - strb r1, [r0] -_08097068: - ldr r4, _080970D4 - ldr r1, [r4] - movs r0, 0xC8 - lsls r0, 1 - adds r1, r0 - movs r2, 0xA0 - lsls r2, 1 - mov r0, sp - bl sub_8094924 - ldr r1, [r4] - movs r2, 0xDC - lsls r2, 1 - adds r1, r2 - movs r2, 0xF0 - lsls r2, 2 - mov r0, sp - bl sub_8094924 - adds r6, r4, 0 - movs r5, 0x8C - lsls r5, 2 - movs r4, 0xF -_08097096: - ldr r1, [r6] - adds r1, r5 - adds r1, 0x8 - mov r0, sp - movs r2, 0x20 - bl sub_8094924 - ldr r1, [r6] - adds r1, r5 - adds r1, 0x4 - mov r0, sp - movs r2, 0x18 - bl sub_8094924 - ldr r1, [r6] - adds r1, r5 - mov r0, sp - bl sub_8090314 - adds r5, 0xC - subs r4, 0x1 - cmp r4, 0 - bge _08097096 - mov r0, sp - bl nullsub_102 - ldr r0, [sp, 0x8] - add sp, 0x14 - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 -_080970D4: .4byte gUnknown_203B490 - thumb_func_end sub_8096FA0 - - thumb_func_start sub_80970D8 -sub_80970D8: - push {r4-r7,lr} - sub sp, 0x14 - adds r3, r0, 0 - adds r2, r1, 0 - mov r0, sp - adds r1, r3, 0 - bl sub_809486C - add r7, sp, 0x10 - ldr r6, _080971E8 - movs r5, 0 - movs r4, 0x3 -_080970F0: - ldr r1, [r6] - adds r1, r5 - mov r0, sp - bl sub_8097270 - adds r5, 0x14 - subs r4, 0x1 - cmp r4, 0 - bge _080970F0 - ldr r6, _080971E8 - movs r5, 0x50 - movs r4, 0x7 -_08097108: - ldr r1, [r6] - adds r1, r5 - mov r0, sp - bl sub_8097270 - adds r5, 0x14 - subs r4, 0x1 - cmp r4, 0 - bge _08097108 - ldr r6, _080971E8 - movs r5, 0xF0 - movs r4, 0x7 -_08097120: - ldr r1, [r6] - adds r1, r5 - mov r0, sp - bl sub_8097270 - adds r5, 0x14 - subs r4, 0x1 - cmp r4, 0 - bge _08097120 - movs r4, 0 -_08097134: - ldr r0, _080971E8 - ldr r0, [r0] - movs r1, 0xBC - lsls r1, 2 - adds r0, r1 - adds r0, r4 - ldrb r0, [r0] - cmp r0, 0 - beq _0809714A - movs r0, 0x1 - negs r0, r0 -_0809714A: - str r0, [sp, 0x10] - mov r0, sp - adds r1, r7, 0 - movs r2, 0x1 - bl sub_809488C - adds r4, 0x1 - cmp r4, 0x37 - ble _08097134 - ldr r0, _080971E8 - ldr r0, [r0] - movs r1, 0xCA - lsls r1, 2 - adds r0, r1 - ldrb r0, [r0] - cmp r0, 0 - beq _08097170 - movs r0, 0x1 - negs r0, r0 -_08097170: - str r0, [sp, 0x10] - mov r0, sp - adds r1, r7, 0 - movs r2, 0x1 - bl sub_809488C - ldr r4, _080971E8 - ldr r1, [r4] - movs r0, 0xC8 - lsls r0, 1 - adds r1, r0 - movs r2, 0xA0 - lsls r2, 1 - mov r0, sp - bl sub_809488C - ldr r1, [r4] - movs r0, 0xDC - lsls r0, 1 - adds r1, r0 - movs r2, 0xF0 - lsls r2, 2 - mov r0, sp - bl sub_809488C - adds r6, r4, 0 - movs r5, 0x8C - lsls r5, 2 - movs r4, 0xF -_080971AA: - ldr r1, [r6] - adds r1, r5 - adds r1, 0x8 - mov r0, sp - movs r2, 0x20 - bl sub_809488C - ldr r1, [r6] - adds r1, r5 - adds r1, 0x4 - mov r0, sp - movs r2, 0x18 - bl sub_809488C - ldr r1, [r6] - adds r1, r5 - mov r0, sp - bl sub_80902F4 - adds r5, 0xC - subs r4, 0x1 - cmp r4, 0 - bge _080971AA - mov r0, sp - bl nullsub_102 - ldr r0, [sp, 0x8] - add sp, 0x14 - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 -_080971E8: .4byte gUnknown_203B490 - thumb_func_end sub_80970D8 - - thumb_func_start sub_80971EC -sub_80971EC: - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - movs r2, 0x4 - bl sub_8094924 - adds r1, r5, 0x1 - adds r0, r4, 0 - movs r2, 0x3 - bl sub_8094924 - adds r1, r5, 0x2 - adds r0, r4, 0 - movs r2, 0x4 - bl sub_8094924 - adds r1, r5, 0 - adds r1, 0xC - adds r0, r4, 0 - movs r2, 0x9 - bl sub_8094924 - adds r1, r5, 0 - adds r1, 0xE - adds r0, r4, 0 - movs r2, 0x9 - bl sub_8094924 - adds r1, r5, 0 - adds r1, 0x10 - adds r0, r4, 0 - movs r2, 0x8 - bl sub_8094924 - adds r1, r5, 0 - adds r1, 0x11 - adds r0, r4, 0 - movs r2, 0x4 - bl sub_8094924 - adds r1, r5, 0 - adds r1, 0x12 - adds r0, r4, 0 - movs r2, 0x8 - bl sub_8094924 - adds r1, r5, 0 - adds r1, 0x13 - adds r0, r4, 0 - movs r2, 0x6 - bl sub_8094924 - adds r1, r5, 0 - adds r1, 0x8 - adds r0, r4, 0 - movs r2, 0x18 - bl sub_8094924 - adds r1, r5, 0x4 - adds r0, r4, 0 - bl sub_8090314 - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end sub_80971EC - - thumb_func_start sub_8097270 -sub_8097270: - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - movs r2, 0x4 - bl sub_809488C - adds r1, r5, 0x1 - adds r0, r4, 0 - movs r2, 0x3 - bl sub_809488C - adds r1, r5, 0x2 - adds r0, r4, 0 - movs r2, 0x4 - bl sub_809488C - adds r1, r5, 0 - adds r1, 0xC - adds r0, r4, 0 - movs r2, 0x9 - bl sub_809488C - adds r1, r5, 0 - adds r1, 0xE - adds r0, r4, 0 - movs r2, 0x9 - bl sub_809488C - adds r1, r5, 0 - adds r1, 0x10 - adds r0, r4, 0 - movs r2, 0x8 - bl sub_809488C - adds r1, r5, 0 - adds r1, 0x11 - adds r0, r4, 0 - movs r2, 0x4 - bl sub_809488C - adds r1, r5, 0 - adds r1, 0x12 - adds r0, r4, 0 - movs r2, 0x8 - bl sub_809488C - adds r1, r5, 0 - adds r1, 0x13 - adds r0, r4, 0 - movs r2, 0x6 - bl sub_809488C - adds r1, r5, 0 - adds r1, 0x8 - adds r0, r4, 0 - movs r2, 0x18 - bl sub_809488C - adds r1, r5, 0x4 - adds r0, r4, 0 - bl sub_80902F4 - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end sub_8097270 - - thumb_func_start sub_80972F4 -sub_80972F4: - push {lr} - movs r0, 0 - movs r1, 0x2B - bl sub_80015C0 - movs r0, 0 - movs r1, 0x2C - bl sub_80015C0 - movs r0, 0 - movs r1, 0x2D - bl sub_80015C0 - pop {r0} - bx r0 - thumb_func_end sub_80972F4 - - thumb_func_start nullsub_128 -nullsub_128: - bx lr - thumb_func_end nullsub_128 - - thumb_func_start sub_8097318 -sub_8097318: - push {lr} - lsls r0, 16 - asrs r0, 16 - cmp r0, 0xD - bne _08097326 - movs r0, 0 - b _08097338 -_08097326: - lsls r2, r0, 16 - lsrs r2, 16 - movs r0, 0 - movs r1, 0x2B - bl sub_8001784 - cmp r0, 0 - beq _08097338 - movs r0, 0x1 -_08097338: - pop {r1} - bx r1 - thumb_func_end sub_8097318 - - thumb_func_start sub_809733C -sub_809733C: - push {r4-r6,lr} - lsls r0, 16 - asrs r4, r0, 16 - lsls r1, 24 - lsrs r6, r1, 24 - cmp r4, 0xD - beq _0809737C - lsls r0, r4, 16 - lsrs r5, r0, 16 - movs r0, 0 - movs r1, 0x2C - adds r2, r5, 0 - bl sub_8001784 - cmp r0, 0 - bne _0809737C - movs r0, 0 - movs r1, 0x2B - adds r2, r5, 0 - adds r3, r6, 0 - bl sub_800199C - cmp r6, 0 - beq _0809737C - cmp r4, 0xE - blt _0809737C - cmp r4, 0xF - ble _08097378 - cmp r4, 0x1C - bne _0809737C -_08097378: - bl sub_809674C -_0809737C: - pop {r4-r6} - pop {r0} - bx r0 - thumb_func_end sub_809733C - - thumb_func_start sub_8097384 -sub_8097384: - push {lr} - lsls r0, 16 - asrs r0, 16 - cmp r0, 0xD - bne _08097392 - movs r0, 0 - b _080973A4 -_08097392: - lsls r2, r0, 16 - lsrs r2, 16 - movs r0, 0 - movs r1, 0x2C - bl sub_8001784 - cmp r0, 0 - beq _080973A4 - movs r0, 0x1 -_080973A4: - pop {r1} - bx r1 - thumb_func_end sub_8097384 - - thumb_func_start sub_80973A8 -sub_80973A8: - push {r4-r6,lr} - lsls r0, 16 - asrs r0, 16 - lsls r1, 24 - lsrs r6, r1, 24 - cmp r0, 0xD - beq _080973EE - lsls r5, r0, 16 - cmp r6, 0 - beq _080973E2 - bl sub_80A26B8 - lsls r0, 16 - asrs r4, r0, 16 - lsrs r2, r5, 16 - movs r0, 0 - movs r1, 0x2B - movs r3, 0 - bl sub_800199C - movs r0, 0x1 - negs r0, r0 - cmp r4, r0 - beq _080973E2 - movs r0, 0 - movs r1, 0x12 - adds r2, r4, 0 - bl sub_80018D8 -_080973E2: - lsrs r2, r5, 16 - movs r0, 0 - movs r1, 0x2C - adds r3, r6, 0 - bl sub_800199C -_080973EE: - pop {r4-r6} - pop {r0} - bx r0 - thumb_func_end sub_80973A8 - - thumb_func_start sub_80973F4 -sub_80973F4: - push {lr} - lsls r0, 16 - asrs r0, 16 - cmp r0, 0xD - bne _08097402 - movs r0, 0 - b _08097414 -_08097402: - lsls r2, r0, 16 - lsrs r2, 16 - movs r0, 0 - movs r1, 0x2D - bl sub_8001784 - cmp r0, 0 - beq _08097414 - movs r0, 0x1 -_08097414: - pop {r1} - bx r1 - thumb_func_end sub_80973F4 - - thumb_func_start sub_8097418 -sub_8097418: - push {r4-r7,lr} - lsls r0, 16 - asrs r5, r0, 16 - lsls r1, 24 - lsrs r7, r1, 24 - cmp r5, 0xD - beq _08097470 - lsls r6, r5, 16 - cmp r7, 0 - beq _08097464 - lsrs r2, r6, 16 - movs r0, 0 - movs r1, 0x2C - movs r3, 0 - bl sub_800199C - cmp r5, 0x1E - bgt _08097464 - lsls r0, r5, 3 - ldr r1, _08097478 - adds r4, r0, r1 - ldrb r0, [r4, 0x4] - cmp r0, 0xFF - beq _0809744C - bl sub_8097FA8 -_0809744C: - ldrb r0, [r4, 0x5] - cmp r0, 0xFF - beq _08097456 - bl sub_8097FA8 -_08097456: - cmp r5, 0x9 - bne _08097460 - movs r0, 0x1F - bl sub_8097FA8 -_08097460: - bl sub_8097FF8 -_08097464: - lsrs r2, r6, 16 - movs r0, 0 - movs r1, 0x2D - adds r3, r7, 0 - bl sub_800199C -_08097470: - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08097478: .4byte gStoryMissionText - thumb_func_end sub_8097418 .align 2,0 diff --git a/asm/code_80958E8.s b/asm/code_80958E8.s new file mode 100644 index 0000000..896c0dd --- /dev/null +++ b/asm/code_80958E8.s @@ -0,0 +1,3495 @@ + .include "constants/gba_constants.inc" + .include "asm/macros.inc" + + .syntax unified + + .text + + thumb_func_start sub_8095B28 +sub_8095B28: + push {r4-r7,lr} + mov r7, r9 + mov r6, r8 + push {r6,r7} + ldr r4, _08095B44 + add sp, r4 + adds r4, r0, 0 + bl sub_8095CE0 + lsls r0, 24 + cmp r0, 0 + bne _08095B48 + movs r0, 0 + b _08095CCC + .align 2, 0 +_08095B44: .4byte 0xfffffcb0 +_08095B48: + movs r0, 0x5 + strb r0, [r4] + movs r0, 0x8 + bl RandomCapped + ldr r1, _08095BC8 + adds r0, r1 + ldrb r0, [r0] + strb r0, [r4, 0x1] + cmp r0, 0x2 + bne _08095B6C + bl GetRescueTeamRank + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0 + bne _08095B6C + strb r0, [r4, 0x1] +_08095B6C: + movs r0, 0 + strb r0, [r4, 0x2] + bl Random + ldr r1, _08095BCC + ands r1, r0 + str r1, [r4, 0x8] + movs r7, 0 + movs r5, 0x1 + adds r0, r4, 0x4 + mov r8, r0 + movs r1, 0x12 + adds r1, r4 + mov r9, r1 + mov r6, sp +_08095B8A: + lsls r0, r5, 16 + asrs r0, 16 + bl sub_803C110 + lsls r0, 24 + cmp r0, 0 + beq _08095B9E + strh r5, [r6] + adds r6, 0x2 + adds r7, 0x1 +_08095B9E: + adds r5, 0x1 + ldr r0, _08095BD0 + cmp r5, r0 + ble _08095B8A + cmp r7, 0 + beq _08095BD4 + adds r0, r7, 0 + bl RandomCapped + lsls r0, 1 + add r0, sp + ldrh r0, [r0] + strh r0, [r4, 0xC] + adds r0, r7, 0 + bl RandomCapped + lsls r0, 1 + add r0, sp + ldrh r0, [r0] + b _08095BDC + .align 2, 0 +_08095BC8: .4byte gUnknown_8109984 +_08095BCC: .4byte 0x00ffffff +_08095BD0: .4byte 0x000001a7 +_08095BD4: + movs r0, 0x10 + strh r0, [r4, 0xC] + movs r0, 0x91 + lsls r0, 1 +_08095BDC: + strh r0, [r4, 0xE] + ldrb r0, [r4, 0x1] + subs r0, 0x1 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bls _08095BEE + ldrh r0, [r4, 0xC] + strh r0, [r4, 0xE] +_08095BEE: + ldrb r0, [r4, 0x4] + bl sub_8095F28 + strb r0, [r4, 0x10] + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0 + bne _08095C10 + strb r0, [r4, 0x1] + ldrh r0, [r4, 0xC] + strh r0, [r4, 0xE] + adds r2, r4, 0 + adds r2, 0x10 + mov r0, r8 + movs r1, 0 + bl sub_803C37C +_08095C10: + ldrb r0, [r4, 0x4] + bl GetMaxItemCount + adds r1, r0, 0 + cmp r1, 0 + bne _08095C28 + ldrb r0, [r4, 0x1] + cmp r0, 0x4 + bne _08095C28 + strb r1, [r4, 0x1] + ldrh r0, [r4, 0xC] + strh r0, [r4, 0xE] +_08095C28: + ldrb r1, [r4, 0x1] + mov r0, r8 + mov r2, r9 + bl sub_803C37C + ldrb r0, [r4, 0x10] + ldrb r1, [r4, 0x12] + cmp r0, r1 + beq _08095C28 + movs r0, 0 + strb r0, [r4, 0x13] + ldrb r0, [r4, 0x1] + cmp r0, 0x2 + beq _08095C90 + cmp r0, 0x2 + bgt _08095C4E + cmp r0, 0x1 + beq _08095C6C + b _08095CCA +_08095C4E: + cmp r0, 0x4 + bgt _08095CCA + bl Random + adds r1, r0, 0 + movs r0, 0xE0 + lsls r0, 3 + ands r1, r0 + movs r0, 0xC0 + lsls r0, 2 + cmp r1, r0 + beq _08095CC4 + cmp r1, r0 + bgt _08095CB4 + b _08095CAA +_08095C6C: + bl Random + adds r1, r0, 0 + movs r0, 0x70 + ands r1, r0 + cmp r1, 0x10 + beq _08095C80 + cmp r1, 0x30 + beq _08095C88 + b _08095CCA +_08095C80: + adds r0, r4, 0 + bl sub_803C3E0 + b _08095CCA +_08095C88: + adds r0, r4, 0 + bl sub_803C45C + b _08095CCA +_08095C90: + bl Random + movs r1, 0xC0 + lsls r1, 6 + ands r1, r0 + movs r0, 0x80 + lsls r0, 5 + cmp r1, r0 + bne _08095CCA + adds r0, r4, 0 + bl sub_803C4F0 + b _08095CCA +_08095CAA: + movs r0, 0x80 + lsls r0, 1 + cmp r1, r0 + beq _08095CBC + b _08095CCA +_08095CB4: + movs r0, 0xC0 + lsls r0, 3 + cmp r1, r0 + bne _08095CCA +_08095CBC: + adds r0, r4, 0 + bl sub_803C580 + b _08095CCA +_08095CC4: + adds r0, r4, 0 + bl sub_803C610 +_08095CCA: + movs r0, 0x1 +_08095CCC: + movs r3, 0xD4 + lsls r3, 2 + add sp, r3 + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r7} + pop {r1} + bx r1 + thumb_func_end sub_8095B28 + + thumb_func_start sub_8095CE0 +sub_8095CE0: + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x60 + str r0, [sp, 0x44] + mov r0, sp + bl sub_80A29B0 + str r0, [sp, 0x4C] + cmp r0, 0 + bne _08095D0C + mov r0, sp + add r1, sp, 0x4C + ldrb r1, [r1] + strb r1, [r0] + mov r1, sp + movs r0, 0x1 + strb r0, [r1, 0x1] + movs r2, 0x2 + str r2, [sp, 0x4C] +_08095D0C: + ldr r0, [sp, 0x4C] + bl RandomCapped + mov r9, r0 + str r0, [sp, 0x48] + mov r1, sp + adds r1, 0x40 + str r1, [sp, 0x5C] +_08095D1C: + mov r0, sp + add r0, r9 + ldrb r7, [r0] + adds r0, r7, 0 + bl sub_8090298 + str r0, [sp, 0x58] + lsrs r0, 31 + ldr r2, [sp, 0x58] + adds r0, r2, r0 + asrs r0, 1 + str r0, [sp, 0x54] + adds r1, r2, 0 + bl RandomRange + adds r4, r0, 0 + str r4, [sp, 0x50] +_08095D3E: + movs r0, 0x1 + mov r8, r0 + ldr r1, _08095DF4 + ldr r0, [sp, 0x40] + ands r0, r1 + orrs r0, r7 + lsls r2, r4, 24 + lsrs r2, 16 + ldr r1, _08095DF8 + ands r0, r1 + orrs r0, r2 + str r0, [sp, 0x40] + ldr r0, [sp, 0x5C] + bl sub_809017C + lsls r0, 24 + cmp r0, 0 + beq _08095D66 + movs r1, 0 + mov r8, r1 +_08095D66: + ldr r2, _08095DFC + mov r10, r2 + movs r6, 0 + movs r5, 0x3 +_08095D6E: + mov r1, r10 + ldr r0, [r1] + adds r0, r6 + adds r1, r7, 0 + adds r2, r4, 0 + movs r3, 0x1 + bl sub_8095E38 + lsls r0, 24 + cmp r0, 0 + beq _08095D88 + movs r2, 0 + mov r8, r2 +_08095D88: + adds r6, 0x14 + subs r5, 0x1 + cmp r5, 0 + bge _08095D6E + ldr r0, _08095DFC + mov r10, r0 + movs r6, 0x50 + movs r5, 0x7 +_08095D98: + mov r1, r10 + ldr r0, [r1] + adds r0, r6 + adds r1, r7, 0 + adds r2, r4, 0 + movs r3, 0x1 + bl sub_8095E38 + lsls r0, 24 + cmp r0, 0 + beq _08095DB2 + movs r2, 0 + mov r8, r2 +_08095DB2: + adds r6, 0x14 + subs r5, 0x1 + cmp r5, 0 + bge _08095D98 + ldr r0, _08095DFC + mov r10, r0 + movs r6, 0xF0 + movs r5, 0x7 +_08095DC2: + mov r1, r10 + ldr r0, [r1] + adds r0, r6 + adds r1, r7, 0 + adds r2, r4, 0 + movs r3, 0x1 + bl sub_8095E38 + lsls r0, 24 + cmp r0, 0 + beq _08095DDC + movs r2, 0 + mov r8, r2 +_08095DDC: + adds r6, 0x14 + subs r5, 0x1 + cmp r5, 0 + bge _08095DC2 + mov r0, r8 + cmp r0, 0 + beq _08095E00 + ldr r1, [sp, 0x44] + strb r7, [r1, 0x4] + strb r4, [r1, 0x5] + movs r0, 0x1 + b _08095E28 + .align 2, 0 +_08095DF4: .4byte 0xffffff00 +_08095DF8: .4byte 0xffff00ff +_08095DFC: .4byte gUnknown_203B490 +_08095E00: + adds r4, 0x1 + ldr r2, [sp, 0x58] + cmp r4, r2 + blt _08095E0A + ldr r4, [sp, 0x54] +_08095E0A: + ldr r0, [sp, 0x50] + cmp r4, r0 + bne _08095D3E + movs r1, 0x1 + add r9, r1 + ldr r2, [sp, 0x4C] + cmp r9, r2 + bne _08095E1E + movs r0, 0 + mov r9, r0 +_08095E1E: + ldr r1, [sp, 0x48] + cmp r9, r1 + beq _08095E26 + b _08095D1C +_08095E26: + movs r0, 0 +_08095E28: + add sp, 0x60 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r1} + bx r1 + thumb_func_end sub_8095CE0 + + thumb_func_start sub_8095E38 +sub_8095E38: + push {r4,lr} + adds r4, r0, 0 + lsls r1, 24 + lsrs r1, 24 + lsls r3, 24 + lsrs r3, 24 + ldrb r0, [r4] + cmp r0, 0 + beq _08095E6E + ldrb r0, [r4, 0x1] + cmp r0, 0x2 + bne _08095E5E + cmp r3, 0x1 + bne _08095E5E + ldrb r0, [r4, 0x4] + cmp r0, r1 + bne _08095E6E + movs r0, 0x1 + b _08095E70 +_08095E5E: + ldrb r0, [r4, 0x4] + cmp r0, r1 + bne _08095E6E + ldrb r0, [r4, 0x5] + cmp r0, r2 + bne _08095E6E + movs r0, 0x1 + b _08095E70 +_08095E6E: + movs r0, 0 +_08095E70: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_8095E38 + + thumb_func_start sub_8095E78 +sub_8095E78: + push {r4-r7,lr} + mov r7, r8 + push {r7} + sub sp, 0x3C + movs r6, 0 + movs r5, 0x1 +_08095E84: + ldr r0, _08095F04 + ldr r0, [r0] + adds r0, r5 + ldrb r0, [r0] + adds r1, r5, 0x1 + mov r8, r1 + cmp r0, 0 + bne _08095EF6 + lsls r0, r5, 24 + lsrs r0, 24 + bl GetFriendAreaUnlockCondition + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x2 + bne _08095EF6 + movs r4, 0 + ldr r0, _08095F08 + ldr r1, [r0] + movs r3, 0x3 +_08095EAC: + ldrb r0, [r1] + cmp r0, 0 + beq _08095EBA + ldrb r0, [r1, 0x11] + cmp r0, 0x9 + bne _08095EBA + movs r4, 0x1 +_08095EBA: + adds r1, 0x14 + subs r3, 0x1 + cmp r3, 0 + bge _08095EAC + ldr r0, _08095F08 + ldr r0, [r0] + adds r2, r0, 0 + adds r2, 0xF0 + adds r1, r0, 0 + movs r3, 0x7 +_08095ECE: + ldrb r0, [r2] + cmp r0, 0 + beq _08095EE0 + ldr r7, _08095F0C + adds r0, r1, r7 + ldrb r0, [r0] + cmp r0, 0x9 + bne _08095EE0 + movs r4, 0x1 +_08095EE0: + adds r2, 0x14 + adds r1, 0x14 + subs r3, 0x1 + cmp r3, 0 + bge _08095ECE + cmp r4, 0 + bne _08095EF6 + mov r1, sp + adds r0, r1, r6 + strb r5, [r0] + adds r6, 0x1 +_08095EF6: + mov r5, r8 + cmp r5, 0x39 + ble _08095E84 + cmp r6, 0 + bne _08095F10 + movs r0, 0 + b _08095F1A + .align 2, 0 +_08095F04: .4byte gFriendAreas +_08095F08: .4byte gUnknown_203B490 +_08095F0C: .4byte 0x00000101 +_08095F10: + adds r0, r6, 0 + bl RandomCapped + add r0, sp + ldrb r0, [r0] +_08095F1A: + add sp, 0x3C + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r1} + bx r1 + thumb_func_end sub_8095E78 + + thumb_func_start sub_8095F28 +sub_8095F28: + push {r4-r7,lr} + sub sp, 0xF0 + lsls r0, 24 + lsrs r7, r0, 24 + movs r6, 0 + movs r5, 0x1 +_08095F34: + lsls r4, r5, 24 + cmp r7, 0x63 + beq _08095F48 + lsrs r1, r4, 24 + adds r0, r7, 0 + bl sub_8091E60 + lsls r0, 24 + cmp r0, 0 + beq _08095F6A +_08095F48: + lsrs r4, 24 + adds r0, r4, 0 + bl sub_8090A60 + lsls r0, 24 + cmp r0, 0 + bne _08095F6A + adds r0, r4, 0 + bl sub_8091524 + lsls r0, 24 + cmp r0, 0 + beq _08095F6A + mov r1, sp + adds r0, r1, r6 + strb r5, [r0] + adds r6, 0x1 +_08095F6A: + adds r5, 0x1 + cmp r5, 0xEF + ble _08095F34 + cmp r6, 0 + beq _08095F80 + adds r0, r6, 0 + bl RandomCapped + add r0, sp + ldrb r0, [r0] + b _08095F82 +_08095F80: + movs r0, 0 +_08095F82: + add sp, 0xF0 + pop {r4-r7} + pop {r1} + bx r1 + thumb_func_end sub_8095F28 + + thumb_func_start sub_8095F8C +sub_8095F8C: + push {r4,r5,lr} + movs r5, 0 + movs r4, 0 +_08095F92: + lsls r0, r4, 24 + lsrs r0, 24 + bl sub_8096000 + lsls r0, 24 + cmp r0, 0 + bne _08095FA2 + adds r5, 0x1 +_08095FA2: + adds r4, 0x1 + cmp r4, 0x3 + ble _08095F92 + adds r0, r5, 0 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8095F8C + + thumb_func_start sub_8095FB0 +sub_8095FB0: + push {r4,r5,lr} + adds r4, r0, 0 + movs r3, 0 + ldr r5, _08095FD4 + movs r2, 0 +_08095FBA: + ldr r0, [r5] + adds r1, r0, r2 + ldrb r0, [r1] + cmp r0, 0 + bne _08095FD8 + adds r0, r4, 0 + ldm r0!, {r2-r4} + stm r1!, {r2-r4} + ldm r0!, {r2,r3} + stm r1!, {r2,r3} + movs r0, 0 + b _08095FE2 + .align 2, 0 +_08095FD4: .4byte gUnknown_203B490 +_08095FD8: + adds r2, 0x14 + adds r3, 0x1 + cmp r3, 0x3 + ble _08095FBA + movs r0, 0x1 +_08095FE2: + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8095FB0 + + thumb_func_start sub_8095FE8 +sub_8095FE8: + lsls r0, 24 + lsrs r0, 24 + ldr r2, _08095FFC + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 2 + ldr r0, [r2] + adds r0, r1 + bx lr + .align 2, 0 +_08095FFC: .4byte gUnknown_203B490 + thumb_func_end sub_8095FE8 + + thumb_func_start sub_8096000 +sub_8096000: + push {lr} + lsls r0, 24 + lsrs r0, 24 + ldr r1, _0809601C + ldr r2, [r1] + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 2 + adds r2, r1 + ldrb r0, [r2] + cmp r0, 0 + beq _08096020 + movs r0, 0 + b _08096022 + .align 2, 0 +_0809601C: .4byte gUnknown_203B490 +_08096020: + movs r0, 0x1 +_08096022: + pop {r1} + bx r1 + thumb_func_end sub_8096000 + + thumb_func_start sub_8096028 +sub_8096028: + push {r4,lr} + movs r4, 0 +_0809602C: + lsls r0, r4, 24 + lsrs r0, 24 + bl sub_8096040 + adds r4, 0x1 + cmp r4, 0x3 + ble _0809602C + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_8096028 + + thumb_func_start sub_8096040 +sub_8096040: + push {r4,lr} + lsls r0, 24 + lsrs r0, 24 + ldr r3, _08096074 + ldr r1, [r3] + lsls r2, r0, 2 + adds r2, r0 + lsls r2, 2 + adds r1, r2 + movs r4, 0 + strb r4, [r1] + ldr r0, [r3] + adds r0, r2 + movs r1, 0x63 + strb r1, [r0, 0x4] + ldr r0, [r3] + adds r0, r2 + strb r4, [r0, 0x5] + ldr r0, [r3] + adds r0, r2 + movs r1, 0x5 + strb r1, [r0, 0x11] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08096074: .4byte gUnknown_203B490 + thumb_func_end sub_8096040 + + thumb_func_start sub_8096078 +sub_8096078: + push {r4-r7,lr} + mov r7, r9 + mov r6, r8 + push {r6,r7} + movs r2, 0 + movs r3, 0 + ldr r0, _08096090 + mov r12, r0 + mov r8, r3 + movs r4, 0 + mov r9, r4 + b _080960B6 + .align 2, 0 +_08096090: .4byte gUnknown_203B490 +_08096094: + cmp r2, r3 + ble _080960AA + mov r1, r12 + ldr r0, [r1] + mov r5, r8 + adds r1, r0, r5 + adds r0, r4 + ldm r0!, {r5-r7} + stm r1!, {r5-r7} + ldm r0!, {r6,r7} + stm r1!, {r6,r7} +_080960AA: + adds r4, 0x14 + movs r0, 0x14 + add r9, r0 + adds r2, 0x1 + add r8, r0 + adds r3, 0x1 +_080960B6: + cmp r2, 0x3 + bgt _080960E2 + mov r1, r12 + ldr r0, [r1] + adds r0, r4 + ldrb r0, [r0] + cmp r0, 0 + bne _080960E2 + ldr r6, _08096110 + mov r1, r9 +_080960CA: + adds r1, 0x14 + adds r4, 0x14 + movs r5, 0x14 + add r9, r5 + adds r2, 0x1 + cmp r2, 0x3 + bgt _080960E2 + ldr r0, [r6] + adds r0, r1 + ldrb r0, [r0] + cmp r0, 0 + beq _080960CA +_080960E2: + cmp r2, 0x4 + bne _08096094 + cmp r3, 0x3 + bgt _08096102 + ldr r4, _08096110 + movs r2, 0 + lsls r0, r3, 2 + adds r0, r3 + lsls r1, r0, 2 +_080960F4: + ldr r0, [r4] + adds r0, r1 + strb r2, [r0] + adds r1, 0x14 + adds r3, 0x1 + cmp r3, 0x3 + ble _080960F4 +_08096102: + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08096110: .4byte gUnknown_203B490 + thumb_func_end sub_8096078 + + thumb_func_start sub_8096114 +sub_8096114: + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x14 + movs r1, 0 +_08096122: + adds r0, r1, 0x1 + mov r10, r0 + mov r8, r10 + cmp r0, 0x3 + bgt _08096198 + ldr r2, _080961B0 + mov r9, r2 + lsls r0, r1, 2 + adds r0, r1 + lsls r0, 2 + mov r12, r0 + mov r3, r10 + lsls r0, r3, 2 + add r0, r10 + lsls r4, r0, 2 +_08096140: + mov r5, r9 + ldr r1, [r5] + adds r3, r1, r4 + ldrb r0, [r3] + cmp r0, 0 + beq _0809618C + mov r6, r12 + adds r2, r1, r6 + ldrb r1, [r2, 0x4] + ldrb r0, [r3, 0x4] + cmp r1, r0 + bhi _08096164 + cmp r1, r0 + bne _0809618C + ldrb r0, [r2, 0x5] + ldrb r7, [r3, 0x5] + cmp r0, r7 + bls _0809618C +_08096164: + mov r1, sp + adds r0, r2, 0 + ldm r0!, {r5-r7} + stm r1!, {r5-r7} + ldm r0!, {r5,r6} + stm r1!, {r5,r6} + adds r1, r2, 0 + adds r0, r3, 0 + ldm r0!, {r2,r3,r7} + stm r1!, {r2,r3,r7} + ldm r0!, {r5,r6} + stm r1!, {r5,r6} + mov r7, r9 + ldr r1, [r7] + adds r1, r4 + mov r0, sp + ldm r0!, {r2,r3,r5} + stm r1!, {r2,r3,r5} + ldm r0!, {r6,r7} + stm r1!, {r6,r7} +_0809618C: + adds r4, 0x14 + movs r0, 0x1 + add r8, r0 + mov r1, r8 + cmp r1, 0x3 + ble _08096140 +_08096198: + mov r1, r10 + cmp r1, 0x2 + ble _08096122 + add sp, 0x14 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080961B0: .4byte gUnknown_203B490 + thumb_func_end sub_8096114 + + thumb_func_start sub_80961B4 +sub_80961B4: + push {lr} + bl sub_8096E2C + lsls r0, 24 + cmp r0, 0 + beq _080961CE + ldr r0, _080961D4 + ldr r0, [r0] + movs r1, 0xCA + lsls r1, 2 + adds r0, r1 + movs r1, 0x1 + strb r1, [r0] +_080961CE: + pop {r0} + bx r0 + .align 2, 0 +_080961D4: .4byte gUnknown_203B490 + thumb_func_end sub_80961B4 + + thumb_func_start sub_80961D8 +sub_80961D8: + push {r4-r7,lr} + mov r7, r8 + push {r7} + movs r7, 0 + bl sub_8095F8C + adds r6, r0, 0 + movs r1, 0x4 + bl RandomRange + mov r8, r0 + cmp r6, 0x3 + bgt _08096202 + ldr r4, _08096208 + ldr r0, [r4] + movs r2, 0xCA + lsls r2, 2 + adds r1, r0, r2 + ldrb r0, [r1] + cmp r0, 0 + bne _0809620C +_08096202: + movs r0, 0 + b _080963A8 + .align 2, 0 +_08096208: .4byte gUnknown_203B490 +_0809620C: + strb r7, [r1] + movs r5, 0x38 + movs r0, 0xA + movs r1, 0x31 + movs r2, 0x1 + bl sub_8001D08 + lsls r0, 24 + cmp r0, 0 + beq _0809623A + ldr r0, [r4] + ldr r1, _08096328 + adds r0, r1 + ldrb r0, [r0] + cmp r0, 0 + bne _0809623A + movs r0, 0x35 + bl sub_8096E80 + lsls r0, 24 + cmp r0, 0 + bne _0809623A + movs r5, 0x35 +_0809623A: + movs r0, 0xF + bl sub_80023E4 + lsls r0, 24 + cmp r0, 0 + beq _0809629C + ldr r0, _0809632C + ldr r0, [r0] + movs r2, 0xC9 + lsls r2, 2 + adds r0, r2 + ldrb r0, [r0] + cmp r0, 0 + bne _08096264 + movs r0, 0x34 + bl sub_8096E80 + lsls r0, 24 + cmp r0, 0 + bne _08096264 + movs r5, 0x34 +_08096264: + ldr r0, _0809632C + ldr r0, [r0] + ldr r1, _08096330 + adds r0, r1 + ldrb r0, [r0] + cmp r0, 0 + bne _08096280 + movs r0, 0x33 + bl sub_8096E80 + lsls r0, 24 + cmp r0, 0 + bne _08096280 + movs r5, 0x33 +_08096280: + ldr r0, _0809632C + ldr r0, [r0] + ldr r2, _08096334 + adds r0, r2 + ldrb r0, [r0] + cmp r0, 0 + bne _0809629C + movs r0, 0x32 + bl sub_8096E80 + lsls r0, 24 + cmp r0, 0 + bne _0809629C + movs r5, 0x32 +_0809629C: + bl GetRescueTeamRank + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x6 + bne _080962C4 + ldr r0, _0809632C + ldr r0, [r0] + ldr r1, _08096338 + adds r0, r1 + ldrb r0, [r0] + cmp r0, 0 + bne _080962C4 + movs r0, 0x36 + bl sub_8096E80 + lsls r0, 24 + cmp r0, 0 + bne _080962C4 + movs r5, 0x36 +_080962C4: + movs r0, 0x6 + bl sub_80023E4 + lsls r0, 24 + cmp r0, 0 + beq _080962EC + ldr r0, _0809632C + ldr r0, [r0] + ldr r2, _0809633C + adds r0, r2 + ldrb r0, [r0] + cmp r0, 0 + bne _080962EC + movs r0, 0x37 + bl sub_8096E80 + lsls r0, 24 + cmp r0, 0 + bne _080962EC + movs r5, 0x37 +_080962EC: + cmp r5, 0x38 + bne _08096310 + cmp r6, r8 + bgt _08096392 + bl sub_8096E2C + lsls r0, 24 + lsrs r5, r0, 24 + movs r0, 0xE + bl sub_80023E4 + lsls r0, 24 + cmp r0, 0 + bne _0809630C + cmp r5, 0x2 + bhi _0809638E +_0809630C: + cmp r5, 0x31 + bhi _0809638E +_08096310: + lsls r0, r6, 24 + lsrs r0, 24 + bl sub_8095FE8 + adds r4, r0, 0 + movs r0, 0x1 + strb r0, [r4] + movs r0, 0x62 + strb r0, [r4, 0x4] + strb r5, [r4, 0x5] + b _0809638A + .align 2, 0 +_08096328: .4byte 0x00000325 +_0809632C: .4byte gUnknown_203B490 +_08096330: .4byte 0x00000323 +_08096334: .4byte 0x00000322 +_08096338: .4byte 0x00000326 +_0809633C: .4byte 0x00000327 +_08096340: + lsls r0, r6, 24 + lsrs r0, 24 + bl sub_8095FE8 + adds r4, r0, 0 + bl sub_8095B28 + lsls r0, 24 + cmp r0, 0 + beq _08096392 + bl sub_8095E78 + lsls r0, 24 + lsrs r5, r0, 24 + adds r0, r4, 0x4 + ldrb r1, [r4, 0x1] + bl sub_803C1D0 + lsls r0, 24 + cmp r0, 0 + bne _0809636C + movs r5, 0 +_0809636C: + movs r0, 0x5 + movs r1, 0xA + bl RandomRange + strb r0, [r4, 0x11] + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x9 + bne _0809638A + cmp r5, 0 + bne _08096388 + movs r0, 0x5 + strb r0, [r4, 0x11] + b _0809638A +_08096388: + strb r5, [r4, 0x13] +_0809638A: + movs r7, 0x1 + adds r6, 0x1 +_0809638E: + cmp r6, r8 + ble _08096340 +_08096392: + bl sub_80963B4 + lsls r0, 24 + cmp r0, 0 + beq _0809639E + movs r7, 0x1 +_0809639E: + bl sub_8096078 + bl sub_8096114 + adds r0, r7, 0 +_080963A8: + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r1} + bx r1 + thumb_func_end sub_80961D8 + + thumb_func_start sub_80963B4 +sub_80963B4: + push {r4-r6,lr} + movs r6, 0 + bl sub_8096E2C + lsls r0, 24 + lsrs r5, r0, 24 + bl sub_8095F8C + adds r4, r0, 0 + cmp r4, 0x3 + ble _080963CE + movs r0, 0 + b _080963F4 +_080963CE: + movs r0, 0xE + bl sub_80023E4 + lsls r0, 24 + cmp r0, 0 + beq _080963F2 + cmp r5, 0x31 + bhi _080963F2 + lsls r0, r4, 24 + lsrs r0, 24 + bl sub_8095FE8 + movs r1, 0x1 + strb r1, [r0] + movs r1, 0x62 + strb r1, [r0, 0x4] + strb r5, [r0, 0x5] + movs r6, 0x1 +_080963F2: + adds r0, r6, 0 +_080963F4: + pop {r4-r6} + pop {r1} + bx r1 + thumb_func_end sub_80963B4 + + thumb_func_start sub_80963FC +sub_80963FC: + push {r4-r6,lr} + movs r6, 0 +_08096400: + lsls r0, r6, 24 + lsrs r4, r0, 24 + adds r0, r4, 0 + bl sub_8095FE8 + adds r5, r0, 0 + ldrb r0, [r5] + cmp r0, 0x1 + beq _08096418 + adds r0, r4, 0 + bl sub_8096040 +_08096418: + adds r6, 0x1 + cmp r6, 0x3 + ble _08096400 + bl sub_8096078 + bl sub_8095F8C + lsls r0, 24 + lsrs r0, 24 + bl sub_8095FE8 + adds r5, r0, 0 + movs r0, 0 + movs r4, 0x5 + strb r4, [r5] + strb r0, [r5, 0x1] + strb r0, [r5, 0x2] + movs r0, 0x2 + strb r0, [r5, 0x4] + movs r0, 0x3 + strb r0, [r5, 0x5] + bl Random + ldr r1, _08096484 + ands r1, r0 + str r1, [r5, 0x8] + movs r0, 0x10 + strh r0, [r5, 0xC] + strh r0, [r5, 0xE] + ldrb r0, [r5, 0x4] + bl sub_8095F28 + strb r0, [r5, 0x10] + strb r4, [r5, 0x11] +_0809645C: + ldrb r1, [r5, 0x1] + adds r0, r5, 0x4 + adds r2, r5, 0 + adds r2, 0x12 + bl sub_803C37C + ldrb r0, [r5, 0x10] + ldrb r1, [r5, 0x12] + cmp r0, r1 + beq _0809645C + movs r0, 0 + strb r0, [r5, 0x13] + bl sub_8096078 + bl sub_8096114 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_08096484: .4byte 0x00ffffff + thumb_func_end sub_80963FC + + thumb_func_start sub_8096488 +sub_8096488: + push {r4,lr} + movs r4, 0 +_0809648C: + lsls r0, r4, 24 + lsrs r0, 24 + bl sub_8096040 + adds r4, 0x1 + cmp r4, 0x3 + ble _0809648C + movs r0, 0 + bl sub_8095FE8 + movs r2, 0 + movs r1, 0x1 + strb r1, [r0] + movs r1, 0x62 + strb r1, [r0, 0x4] + strb r2, [r0, 0x5] + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_8096488 + + thumb_func_start sub_80964B4 +sub_80964B4: + push {lr} + ldr r0, _080964D4 + ldr r0, [r0] + ldr r1, _080964D8 + adds r0, r1 + ldrb r0, [r0] + cmp r0, 0 + bne _080964DC + movs r0, 0x35 + bl sub_8096E80 + lsls r0, 24 + cmp r0, 0 + bne _080964DC + movs r0, 0 + b _080964DE + .align 2, 0 +_080964D4: .4byte gUnknown_203B490 +_080964D8: .4byte 0x00000325 +_080964DC: + movs r0, 0x1 +_080964DE: + pop {r1} + bx r1 + thumb_func_end sub_80964B4 + + thumb_func_start sub_80964E4 +sub_80964E4: + push {lr} + ldr r0, _08096504 + ldr r0, [r0] + ldr r1, _08096508 + adds r0, r1 + ldrb r0, [r0] + cmp r0, 0 + bne _0809650C + movs r0, 0x36 + bl sub_8096E80 + lsls r0, 24 + cmp r0, 0 + bne _0809650C + movs r0, 0 + b _0809650E + .align 2, 0 +_08096504: .4byte gUnknown_203B490 +_08096508: .4byte 0x00000326 +_0809650C: + movs r0, 0x1 +_0809650E: + pop {r1} + bx r1 + thumb_func_end sub_80964E4 + + thumb_func_start sub_8096514 +sub_8096514: + push {r4,r5,lr} + movs r5, 0 + movs r4, 0 +_0809651A: + lsls r0, r4, 24 + lsrs r0, 24 + bl sub_809658C + lsls r0, 24 + cmp r0, 0 + bne _0809652A + adds r5, 0x1 +_0809652A: + adds r4, 0x1 + cmp r4, 0x7 + ble _0809651A + adds r0, r5, 0 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8096514 + + thumb_func_start sub_8096538 +sub_8096538: + push {r4,r5,lr} + adds r4, r0, 0 + movs r3, 0 + ldr r5, _08096560 + movs r2, 0 +_08096542: + ldr r0, [r5] + adds r0, r2 + adds r1, r0, 0 + adds r1, 0x50 + ldrb r0, [r1] + cmp r0, 0 + bne _08096564 + adds r0, r4, 0 + ldm r0!, {r2-r4} + stm r1!, {r2-r4} + ldm r0!, {r2,r3} + stm r1!, {r2,r3} + movs r0, 0 + b _0809656E + .align 2, 0 +_08096560: .4byte gUnknown_203B490 +_08096564: + adds r2, 0x14 + adds r3, 0x1 + cmp r3, 0x7 + ble _08096542 + movs r0, 0x1 +_0809656E: + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8096538 + + thumb_func_start sub_8096574 +sub_8096574: + lsls r0, 24 + lsrs r0, 24 + ldr r2, _08096588 + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 2 + adds r1, 0x50 + ldr r0, [r2] + adds r0, r1 + bx lr + .align 2, 0 +_08096588: .4byte gUnknown_203B490 + thumb_func_end sub_8096574 + + thumb_func_start sub_809658C +sub_809658C: + push {lr} + lsls r0, 24 + lsrs r0, 24 + ldr r1, _080965AC + ldr r2, [r1] + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 2 + adds r2, r1 + adds r2, 0x50 + ldrb r0, [r2] + cmp r0, 0 + beq _080965B0 + movs r0, 0 + b _080965B2 + .align 2, 0 +_080965AC: .4byte gUnknown_203B490 +_080965B0: + movs r0, 0x1 +_080965B2: + pop {r1} + bx r1 + thumb_func_end sub_809658C + + thumb_func_start sub_80965B8 +sub_80965B8: + push {r4,lr} + lsls r0, 24 + lsrs r0, 24 + ldr r4, _080965F0 + ldr r1, [r4] + lsls r2, r0, 2 + adds r2, r0 + lsls r2, 2 + adds r1, r2 + adds r1, 0x50 + movs r3, 0 + strb r3, [r1] + ldr r0, [r4] + adds r0, r2 + adds r0, 0x54 + movs r1, 0x63 + strb r1, [r0] + ldr r0, [r4] + adds r0, r2 + adds r0, 0x55 + strb r3, [r0] + ldr r0, [r4] + adds r0, r2 + adds r0, 0x61 + strb r3, [r0] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080965F0: .4byte gUnknown_203B490 + thumb_func_end sub_80965B8 + + thumb_func_start sub_80965F4 +sub_80965F4: + push {r4-r7,lr} + mov r7, r9 + mov r6, r8 + push {r6,r7} + movs r2, 0 + movs r3, 0 + ldr r0, _0809660C + mov r12, r0 + mov r8, r3 + movs r4, 0 + mov r9, r4 + b _08096636 + .align 2, 0 +_0809660C: .4byte gUnknown_203B490 +_08096610: + cmp r2, r3 + ble _0809662A + mov r1, r12 + ldr r0, [r1] + mov r5, r8 + adds r1, r0, r5 + adds r0, r4 + adds r1, 0x50 + adds r0, 0x50 + ldm r0!, {r5-r7} + stm r1!, {r5-r7} + ldm r0!, {r6,r7} + stm r1!, {r6,r7} +_0809662A: + adds r4, 0x14 + movs r0, 0x14 + add r9, r0 + adds r2, 0x1 + add r8, r0 + adds r3, 0x1 +_08096636: + cmp r2, 0x7 + bgt _08096666 + mov r1, r12 + ldr r0, [r1] + adds r0, r4 + adds r0, 0x50 + ldrb r0, [r0] + cmp r0, 0 + bne _08096666 + ldr r6, _08096694 + mov r1, r9 +_0809664C: + adds r1, 0x14 + adds r4, 0x14 + movs r5, 0x14 + add r9, r5 + adds r2, 0x1 + cmp r2, 0x7 + bgt _08096666 + ldr r0, [r6] + adds r0, r1 + adds r0, 0x50 + ldrb r0, [r0] + cmp r0, 0 + beq _0809664C +_08096666: + cmp r2, 0x8 + bne _08096610 + cmp r3, 0x7 + bgt _08096688 + ldr r4, _08096694 + movs r2, 0 + lsls r0, r3, 2 + adds r0, r3 + lsls r1, r0, 2 +_08096678: + ldr r0, [r4] + adds r0, r1 + adds r0, 0x50 + strb r2, [r0] + adds r1, 0x14 + adds r3, 0x1 + cmp r3, 0x7 + ble _08096678 +_08096688: + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08096694: .4byte gUnknown_203B490 + thumb_func_end sub_80965F4 + + thumb_func_start sub_8096698 +sub_8096698: + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x14 + movs r1, 0 +_080966A6: + adds r6, r1, 0x1 + mov r10, r6 + cmp r6, 0x7 + bgt _08096730 + ldr r0, _08096748 + mov r8, r0 + lsls r0, r1, 2 + adds r0, r1 + lsls r0, 2 + mov r9, r0 + lsls r0, r6, 2 + adds r0, r6 + lsls r4, r0, 2 +_080966C0: + mov r2, r8 + ldr r1, [r2] + adds r3, r1, r4 + adds r5, r3, 0 + adds r5, 0x50 + ldrb r0, [r5] + cmp r0, 0 + beq _08096724 + add r1, r9 + mov r12, r1 + mov r0, r12 + adds r0, 0x54 + adds r1, r3, 0 + adds r1, 0x54 + ldrb r2, [r0] + ldrb r0, [r1] + cmp r2, r0 + bhi _080966F6 + cmp r2, r0 + bne _08096724 + mov r0, r12 + adds r0, 0x55 + adds r1, 0x1 + ldrb r0, [r0] + ldrb r1, [r1] + cmp r0, r1 + bls _08096724 +_080966F6: + mov r1, sp + mov r0, r12 + adds r0, 0x50 + ldm r0!, {r2,r3,r7} + stm r1!, {r2,r3,r7} + ldm r0!, {r3,r7} + stm r1!, {r3,r7} + mov r1, r12 + adds r1, 0x50 + adds r0, r5, 0 + ldm r0!, {r2,r3,r5} + stm r1!, {r2,r3,r5} + ldm r0!, {r2,r7} + stm r1!, {r2,r7} + mov r3, r8 + ldr r1, [r3] + adds r1, r4 + adds r1, 0x50 + mov r0, sp + ldm r0!, {r2,r5,r7} + stm r1!, {r2,r5,r7} + ldm r0!, {r3,r5} + stm r1!, {r3,r5} +_08096724: + adds r4, 0x14 + movs r7, 0x1 + add r10, r7 + mov r0, r10 + cmp r0, 0x7 + ble _080966C0 +_08096730: + adds r1, r6, 0 + cmp r1, 0x6 + ble _080966A6 + add sp, 0x14 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08096748: .4byte gUnknown_203B490 + thumb_func_end sub_8096698 + + thumb_func_start sub_809674C +sub_809674C: + push {r4-r7,lr} + mov r7, r8 + push {r7} + movs r0, 0x4 + movs r1, 0x8 + bl RandomRange + mov r8, r0 + ldr r3, _08096864 + movs r2, 0 + movs r1, 0 + movs r7, 0x7 +_08096764: + ldr r0, [r3] + adds r0, r1 + adds r0, 0x50 + strb r2, [r0] + adds r1, 0x14 + subs r7, 0x1 + cmp r7, 0 + bge _08096764 + movs r7, 0 + movs r0, 0xE + bl sub_8097318 + lsls r0, 24 + cmp r0, 0 + beq _080967C0 + movs r0, 0 + bl sub_8096574 + adds r5, r0, 0 + movs r4, 0x2 + strb r4, [r5] + movs r0, 0x6 + strb r0, [r5, 0x1] + movs r0, 0x1 + strb r0, [r5, 0x2] + movs r0, 0x2A + strb r0, [r5, 0x4] + movs r0, 0xA + strb r0, [r5, 0x5] + bl Random + ldr r1, _08096868 + ands r1, r0 + str r1, [r5, 0x8] + movs r1, 0 + movs r0, 0xC2 + lsls r0, 1 + strh r0, [r5, 0xC] + movs r0, 0x38 + strh r0, [r5, 0xE] + strb r1, [r5, 0x10] + strb r4, [r5, 0x11] + movs r0, 0x3A + strb r0, [r5, 0x12] + strb r1, [r5, 0x13] + movs r7, 0x1 +_080967C0: + movs r0, 0xF + bl sub_8097318 + lsls r0, 24 + cmp r0, 0 + beq _0809680A + lsls r0, r7, 24 + lsrs r0, 24 + bl sub_8096574 + adds r5, r0, 0 + movs r0, 0x3 + strb r0, [r5] + movs r0, 0x6 + strb r0, [r5, 0x1] + movs r4, 0x2 + strb r4, [r5, 0x2] + movs r0, 0x35 + strb r0, [r5, 0x4] + movs r0, 0xF + strb r0, [r5, 0x5] + bl Random + ldr r1, _08096868 + ands r1, r0 + str r1, [r5, 0x8] + movs r1, 0 + movs r0, 0x82 + lsls r0, 1 + strh r0, [r5, 0xC] + strh r0, [r5, 0xE] + strb r1, [r5, 0x10] + strb r4, [r5, 0x11] + movs r0, 0x3A + strb r0, [r5, 0x12] + strb r1, [r5, 0x13] + adds r7, 0x1 +_0809680A: + movs r0, 0x1C + bl sub_8097318 + lsls r0, 24 + cmp r0, 0 + beq _08096854 + lsls r0, r7, 24 + lsrs r0, 24 + bl sub_8096574 + adds r5, r0, 0 + movs r0, 0x4 + strb r0, [r5] + movs r0, 0x6 + strb r0, [r5, 0x1] + movs r0, 0x3 + strb r0, [r5, 0x2] + movs r0, 0x1A + strb r0, [r5, 0x4] + movs r0, 0x14 + strb r0, [r5, 0x5] + bl Random + ldr r1, _08096868 + ands r1, r0 + str r1, [r5, 0x8] + movs r1, 0 + ldr r0, _0809686C + strh r0, [r5, 0xC] + strh r0, [r5, 0xE] + strb r1, [r5, 0x10] + movs r0, 0x2 + strb r0, [r5, 0x11] + movs r0, 0x3A + strb r0, [r5, 0x12] + strb r1, [r5, 0x13] + adds r7, 0x1 +_08096854: + lsls r0, r7, 2 + adds r0, r7 + lsls r0, 2 + adds r5, r0, 0 + adds r5, 0x50 + adds r4, r0, 0 + b _08096886 + .align 2, 0 +_08096864: .4byte gUnknown_203B490 +_08096868: .4byte 0x00ffffff +_0809686C: .4byte 0x0000014d +_08096870: + movs r0, 0 + movs r1, 0x4 + bl RandomRange + ldr r1, [r6] + adds r1, r4 + adds r1, 0x61 + strb r0, [r1] + adds r5, 0x14 + adds r4, 0x14 + adds r7, 0x1 +_08096886: + cmp r7, r8 + bgt _0809689A + ldr r6, _080968AC + ldr r0, [r6] + adds r0, r5 + bl sub_8095B28 + lsls r0, 24 + cmp r0, 0 + bne _08096870 +_0809689A: + bl sub_80965F4 + bl sub_8096698 + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080968AC: .4byte gUnknown_203B490 + thumb_func_end sub_809674C + + thumb_func_start sub_80968B0 +sub_80968B0: + push {r4,r5,lr} + adds r3, r0, 0 + movs r4, 0 + ldr r0, _08096928 + ldr r0, [r0] + adds r2, r0, 0 + adds r2, 0xF0 +_080968BE: + ldrb r0, [r2] + cmp r0, 0 + beq _0809692C + ldrb r0, [r3, 0x1] + ldrb r1, [r2, 0x1] + cmp r0, r1 + bne _0809692C + ldrb r0, [r3, 0x2] + ldrb r5, [r2, 0x2] + cmp r0, r5 + bne _0809692C + ldrb r0, [r3, 0x4] + ldrb r1, [r2, 0x4] + cmp r0, r1 + bne _0809692C + ldrb r0, [r3, 0x5] + ldrb r5, [r2, 0x5] + cmp r0, r5 + bne _0809692C + ldr r1, [r3, 0x8] + ldr r0, [r2, 0x8] + cmp r1, r0 + bne _0809692C + movs r0, 0xC + ldrsh r1, [r3, r0] + movs r5, 0xC + ldrsh r0, [r2, r5] + cmp r1, r0 + bne _0809692C + movs r0, 0xE + ldrsh r1, [r3, r0] + movs r5, 0xE + ldrsh r0, [r2, r5] + cmp r1, r0 + bne _0809692C + ldrb r0, [r3, 0x10] + ldrb r1, [r2, 0x10] + cmp r0, r1 + bne _0809692C + ldrb r0, [r3, 0x11] + ldrb r5, [r2, 0x11] + cmp r0, r5 + bne _0809692C + ldrb r0, [r3, 0x12] + ldrb r1, [r2, 0x12] + cmp r0, r1 + bne _0809692C + ldrb r0, [r3, 0x13] + ldrb r5, [r2, 0x13] + cmp r0, r5 + bne _0809692C + movs r0, 0x1 + b _08096936 + .align 2, 0 +_08096928: .4byte gUnknown_203B490 +_0809692C: + adds r2, 0x14 + adds r4, 0x1 + cmp r4, 0x7 + ble _080968BE + movs r0, 0 +_08096936: + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_80968B0 + + thumb_func_start sub_809693C +sub_809693C: + push {r4-r7,lr} + mov r7, r9 + mov r6, r8 + push {r6,r7} + adds r4, r0, 0 + ldrb r0, [r4, 0x4] + mov r9, r0 + ldrb r0, [r4, 0x5] + mov r8, r0 + movs r7, 0 + adds r0, r4, 0 + bl IsValidWonderMail + lsls r0, 24 + cmp r0, 0 + bne _08096962 + b _0809699A +_0809695E: + movs r0, 0x1 + b _0809699C +_08096962: + ldrb r0, [r4, 0x1] + cmp r0, 0x2 + bne _0809696A + movs r7, 0x1 +_0809696A: + movs r6, 0 + movs r5, 0xF0 + movs r4, 0 +_08096970: + ldr r0, _080969A8 + ldr r1, [r0] + adds r0, r1, r4 + adds r0, 0xF0 + ldrb r0, [r0] + cmp r0, 0x6 + bne _08096990 + adds r0, r1, r5 + mov r1, r9 + mov r2, r8 + adds r3, r7, 0 + bl sub_8095E38 + lsls r0, 24 + cmp r0, 0 + bne _0809695E +_08096990: + adds r5, 0x14 + adds r4, 0x14 + adds r6, 0x1 + cmp r6, 0x7 + ble _08096970 +_0809699A: + movs r0, 0 +_0809699C: + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r7} + pop {r1} + bx r1 + .align 2, 0 +_080969A8: .4byte gUnknown_203B490 + thumb_func_end sub_809693C + + thumb_func_start sub_80969AC +sub_80969AC: + push {r4,r5,lr} + movs r5, 0 + movs r4, 0 +_080969B2: + lsls r0, r4, 24 + lsrs r0, 24 + bl sub_8096ACC + lsls r0, 24 + cmp r0, 0 + bne _080969C2 + adds r5, 0x1 +_080969C2: + adds r4, 0x1 + cmp r4, 0x7 + ble _080969B2 + adds r0, r5, 0 + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_80969AC + + thumb_func_start sub_80969D0 +sub_80969D0: + push {r4-r6,lr} + lsls r0, 24 + lsrs r6, r0, 24 + movs r5, 0 + movs r4, 0 +_080969DA: + lsls r0, r4, 24 + lsrs r0, 24 + bl sub_8096AB4 + adds r1, r0, 0 + ldrb r0, [r1, 0x4] + cmp r0, r6 + bne _080969FA + ldrb r0, [r1] + cmp r0, 0x6 + beq _080969F8 + cmp r0, 0x8 + beq _080969F8 + cmp r0, 0x9 + bne _080969FA +_080969F8: + adds r5, 0x1 +_080969FA: + adds r4, 0x1 + cmp r4, 0x7 + ble _080969DA + adds r0, r5, 0 + pop {r4-r6} + pop {r1} + bx r1 + thumb_func_end sub_80969D0 + + thumb_func_start sub_8096A08 +sub_8096A08: + push {r4-r6,lr} + sub sp, 0xC + adds r6, r1, 0 + lsls r0, 24 + lsrs r5, r0, 24 + movs r4, 0 +_08096A14: + lsls r0, r4, 24 + lsrs r0, 24 + bl sub_8096AB4 + adds r2, r0, 0 + ldrb r0, [r2, 0x4] + cmp r0, r5 + bne _08096A68 + ldrb r0, [r2] + cmp r0, 0x6 + bne _08096A68 + ldrb r0, [r2, 0x1] + cmp r0, 0x2 + bne _08096A68 + ldr r1, _08096A60 + ldr r0, [sp, 0x8] + ands r0, r1 + movs r1, 0x4A + orrs r0, r1 + ldr r1, _08096A64 + ands r0, r1 + movs r1, 0x80 + lsls r1, 1 + orrs r0, r1 + str r0, [sp, 0x8] + movs r0, 0xC + ldrsh r1, [r2, r0] + add r0, sp, 0x8 + str r0, [sp] + movs r0, 0 + str r0, [sp, 0x4] + adds r0, r6, 0 + movs r2, 0 + movs r3, 0 + bl sub_808CFD0 + movs r0, 0x1 + b _08096A70 + .align 2, 0 +_08096A60: .4byte 0xffffff00 +_08096A64: .4byte 0xffff00ff +_08096A68: + adds r4, 0x1 + cmp r4, 0x7 + ble _08096A14 + movs r0, 0 +_08096A70: + add sp, 0xC + pop {r4-r6} + pop {r1} + bx r1 + thumb_func_end sub_8096A08 + + thumb_func_start sub_8096A78 +sub_8096A78: + push {r4,r5,lr} + adds r4, r0, 0 + movs r3, 0 + ldr r5, _08096AA0 + movs r2, 0 +_08096A82: + ldr r0, [r5] + adds r0, r2 + adds r1, r0, 0 + adds r1, 0xF0 + ldrb r0, [r1] + cmp r0, 0 + bne _08096AA4 + adds r0, r4, 0 + ldm r0!, {r2-r4} + stm r1!, {r2-r4} + ldm r0!, {r2,r3} + stm r1!, {r2,r3} + movs r0, 0 + b _08096AAE + .align 2, 0 +_08096AA0: .4byte gUnknown_203B490 +_08096AA4: + adds r2, 0x14 + adds r3, 0x1 + cmp r3, 0x7 + ble _08096A82 + movs r0, 0x1 +_08096AAE: + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8096A78 + + thumb_func_start sub_8096AB4 +sub_8096AB4: + lsls r0, 24 + lsrs r0, 24 + ldr r2, _08096AC8 + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 2 + adds r1, 0xF0 + ldr r0, [r2] + adds r0, r1 + bx lr + .align 2, 0 +_08096AC8: .4byte gUnknown_203B490 + thumb_func_end sub_8096AB4 + + thumb_func_start sub_8096ACC +sub_8096ACC: + push {lr} + lsls r0, 24 + lsrs r0, 24 + ldr r1, _08096AEC + ldr r2, [r1] + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 2 + adds r2, r1 + adds r2, 0xF0 + ldrb r0, [r2] + cmp r0, 0 + beq _08096AF0 + movs r0, 0 + b _08096AF2 + .align 2, 0 +_08096AEC: .4byte gUnknown_203B490 +_08096AF0: + movs r0, 0x1 +_08096AF2: + pop {r1} + bx r1 + thumb_func_end sub_8096ACC + + thumb_func_start sub_8096AF8 +sub_8096AF8: + push {r4-r6,lr} + adds r5, r0, 0 + adds r0, r1, 0 + adds r4, r2, 0 + lsls r0, 24 + lsrs r0, 24 + lsls r4, 24 + lsrs r4, 24 + bl sub_8096AB4 + adds r3, r0, 0 + movs r1, 0 + strb r1, [r5] + ldrh r0, [r3, 0xC] + strh r0, [r5, 0x2] + strh r1, [r5, 0x4] + ldrb r0, [r3, 0x4] + cmp r0, r4 + bne _08096B92 + ldrb r0, [r3, 0x1] + cmp r0, 0x4 + bhi _08096B92 + lsls r0, 2 + ldr r1, _08096B30 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08096B30: .4byte _08096B34 + .align 2, 0 +_08096B34: + .4byte _08096B78 + .4byte _08096B84 + .4byte _08096B84 + .4byte _08096B48 + .4byte _08096B78 +_08096B48: + ldrb r0, [r3] + cmp r0, 0x6 + bne _08096B92 + ldr r0, _08096B74 + movs r6, 0x1 + ldr r2, [r0] + movs r4, 0x13 +_08096B56: + ldrb r1, [r2] + adds r0, r6, 0 + ands r0, r1 + cmp r0, 0 + beq _08096B6A + ldrb r0, [r2, 0x2] + ldrb r1, [r3, 0x10] + cmp r0, r1 + bne _08096B6A + strb r6, [r5] +_08096B6A: + adds r2, 0x4 + subs r4, 0x1 + cmp r4, 0 + bge _08096B56 + b _08096B92 + .align 2, 0 +_08096B74: .4byte gUnknown_203B460 +_08096B78: + ldrb r0, [r3] + cmp r0, 0x9 + bne _08096B92 + movs r0, 0x1 + strb r0, [r5] + b _08096B92 +_08096B84: + ldrb r0, [r3] + cmp r0, 0x9 + bne _08096B92 + movs r0, 0x1 + strb r0, [r5] + ldrh r0, [r3, 0xE] + strh r0, [r5, 0x4] +_08096B92: + pop {r4-r6} + pop {r0} + bx r0 + thumb_func_end sub_8096AF8 + + thumb_func_start sub_8096B98 +sub_8096B98: + push {r4,r5,lr} + lsls r0, 24 + lsrs r5, r0, 24 + movs r4, 0 +_08096BA0: + lsls r0, r4, 24 + lsrs r0, 24 + bl sub_8096AB4 + adds r1, r0, 0 + ldrb r0, [r1] + cmp r0, 0x6 + bne _08096BC2 + ldrb r0, [r1, 0x1] + cmp r0, 0x2 + bne _08096BC2 + ldrb r0, [r1, 0x4] + cmp r0, r5 + bne _08096BC2 + movs r2, 0xE + ldrsh r0, [r1, r2] + b _08096BCA +_08096BC2: + adds r4, 0x1 + cmp r4, 0x7 + ble _08096BA0 + movs r0, 0 +_08096BCA: + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_8096B98 + + thumb_func_start sub_8096BD0 +sub_8096BD0: + push {r4,r5,lr} + ldr r0, _08096C04 + ldr r0, [r0] + adds r5, r0, 0 + adds r5, 0xF0 + movs r4, 0 +_08096BDC: + ldrb r0, [r5] + cmp r0, 0x9 + bgt _08096BEE + cmp r0, 0x7 + blt _08096BEE + lsls r0, r4, 24 + lsrs r0, 24 + bl sub_8096C3C +_08096BEE: + adds r5, 0x14 + adds r4, 0x1 + cmp r4, 0x7 + ble _08096BDC + bl sub_8096C80 + bl sub_8096D24 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_08096C04: .4byte gUnknown_203B490 + thumb_func_end sub_8096BD0 + + thumb_func_start sub_8096C08 +sub_8096C08: + push {lr} + adds r3, r0, 0 + ldr r0, _08096C28 + ldr r0, [r0] + adds r1, r0, 0 + adds r1, 0xF0 + movs r2, 0 +_08096C16: + ldrb r0, [r1] + cmp r0, 0x4 + bls _08096C2C + ldrb r0, [r1, 0x2] + cmp r0, 0x4 + bne _08096C2C + strb r2, [r3] + movs r0, 0x1 + b _08096C36 + .align 2, 0 +_08096C28: .4byte gUnknown_203B490 +_08096C2C: + adds r1, 0x14 + adds r2, 0x1 + cmp r2, 0x7 + ble _08096C16 + movs r0, 0 +_08096C36: + pop {r1} + bx r1 + thumb_func_end sub_8096C08 + + thumb_func_start sub_8096C3C +sub_8096C3C: + push {r4,lr} + lsls r0, 24 + lsrs r0, 24 + ldr r3, _08096C78 + ldr r1, [r3] + lsls r2, r0, 2 + adds r2, r0 + lsls r2, 2 + adds r1, r2 + adds r1, 0xF0 + movs r4, 0 + strb r4, [r1] + ldr r0, [r3] + adds r0, r2 + adds r0, 0xF4 + movs r1, 0x63 + strb r1, [r0] + ldr r0, [r3] + adds r0, r2 + adds r0, 0xF5 + strb r4, [r0] + ldr r0, [r3] + adds r0, r2 + ldr r2, _08096C7C + adds r1, r0, r2 + movs r0, 0x5 + strb r0, [r1] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08096C78: .4byte gUnknown_203B490 +_08096C7C: .4byte 0x00000101 + thumb_func_end sub_8096C3C + + thumb_func_start sub_8096C80 +sub_8096C80: + push {r4-r7,lr} + mov r7, r9 + mov r6, r8 + push {r6,r7} + movs r2, 0 + movs r3, 0 + ldr r0, _08096C98 + mov r12, r0 + mov r8, r3 + movs r4, 0 + mov r9, r4 + b _08096CC2 + .align 2, 0 +_08096C98: .4byte gUnknown_203B490 +_08096C9C: + cmp r2, r3 + ble _08096CB6 + mov r1, r12 + ldr r0, [r1] + mov r5, r8 + adds r1, r0, r5 + adds r0, r4 + adds r1, 0xF0 + adds r0, 0xF0 + ldm r0!, {r5-r7} + stm r1!, {r5-r7} + ldm r0!, {r6,r7} + stm r1!, {r6,r7} +_08096CB6: + adds r4, 0x14 + movs r0, 0x14 + add r9, r0 + adds r2, 0x1 + add r8, r0 + adds r3, 0x1 +_08096CC2: + cmp r2, 0x7 + bgt _08096CF2 + mov r1, r12 + ldr r0, [r1] + adds r0, r4 + adds r0, 0xF0 + ldrb r0, [r0] + cmp r0, 0 + bne _08096CF2 + ldr r6, _08096D20 + mov r1, r9 +_08096CD8: + adds r1, 0x14 + adds r4, 0x14 + movs r5, 0x14 + add r9, r5 + adds r2, 0x1 + cmp r2, 0x7 + bgt _08096CF2 + ldr r0, [r6] + adds r0, r1 + adds r0, 0xF0 + ldrb r0, [r0] + cmp r0, 0 + beq _08096CD8 +_08096CF2: + cmp r2, 0x8 + bne _08096C9C + cmp r3, 0x7 + bgt _08096D14 + ldr r4, _08096D20 + movs r2, 0 + lsls r0, r3, 2 + adds r0, r3 + lsls r1, r0, 2 +_08096D04: + ldr r0, [r4] + adds r0, r1 + adds r0, 0xF0 + strb r2, [r0] + adds r1, 0x14 + adds r3, 0x1 + cmp r3, 0x7 + ble _08096D04 +_08096D14: + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08096D20: .4byte gUnknown_203B490 + thumb_func_end sub_8096C80 + + thumb_func_start sub_8096D24 +sub_8096D24: + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x18 + movs r1, 0 +_08096D32: + adds r6, r1, 0x1 + mov r10, r6 + cmp r6, 0x7 + bgt _08096DBC + ldr r0, _08096DD4 + mov r8, r0 + lsls r0, r1, 2 + adds r0, r1 + lsls r0, 2 + mov r9, r0 + lsls r0, r6, 2 + adds r0, r6 + lsls r4, r0, 2 +_08096D4C: + mov r1, r8 + ldr r2, [r1] + adds r3, r2, r4 + adds r5, r3, 0 + adds r5, 0xF0 + str r5, [sp, 0x14] + ldrb r0, [r5] + cmp r0, 0 + beq _08096DB0 + add r2, r9 + mov r12, r2 + mov r0, r12 + adds r0, 0xF4 + adds r1, r3, 0 + adds r1, 0xF4 + ldrb r2, [r0] + ldrb r0, [r1] + cmp r2, r0 + bhi _08096D84 + cmp r2, r0 + bne _08096DB0 + mov r0, r12 + adds r0, 0xF5 + adds r1, 0x1 + ldrb r0, [r0] + ldrb r1, [r1] + cmp r0, r1 + bls _08096DB0 +_08096D84: + mov r2, r12 + adds r2, 0xF0 + mov r1, sp + adds r0, r2, 0 + ldm r0!, {r3,r5,r7} + stm r1!, {r3,r5,r7} + ldm r0!, {r3,r7} + stm r1!, {r3,r7} + ldr r0, [sp, 0x14] + ldm r0!, {r1,r5,r7} + stm r2!, {r1,r5,r7} + ldm r0!, {r3,r5} + stm r2!, {r3,r5} + mov r7, r8 + ldr r1, [r7] + adds r1, r4 + adds r1, 0xF0 + mov r0, sp + ldm r0!, {r2,r3,r5} + stm r1!, {r2,r3,r5} + ldm r0!, {r2,r7} + stm r1!, {r2,r7} +_08096DB0: + adds r4, 0x14 + movs r3, 0x1 + add r10, r3 + mov r5, r10 + cmp r5, 0x7 + ble _08096D4C +_08096DBC: + adds r1, r6, 0 + cmp r1, 0x6 + ble _08096D32 + add sp, 0x18 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08096DD4: .4byte gUnknown_203B490 + thumb_func_end sub_8096D24 + + thumb_func_start sub_8096DD8 +sub_8096DD8: + ldr r0, _08096DE4 + ldr r0, [r0] + movs r1, 0xC8 + lsls r1, 1 + adds r0, r1 + bx lr + .align 2, 0 +_08096DE4: .4byte gUnknown_203B490 + thumb_func_end sub_8096DD8 + + thumb_func_start sub_8096DE8 +sub_8096DE8: + ldr r0, _08096DF4 + ldr r0, [r0] + movs r1, 0xDC + lsls r1, 1 + adds r0, r1 + bx lr + .align 2, 0 +_08096DF4: .4byte gUnknown_203B490 + thumb_func_end sub_8096DE8 + + thumb_func_start sub_8096DF8 +sub_8096DF8: + lsls r0, 24 + lsrs r0, 24 + ldr r1, _08096E10 + ldr r1, [r1] + movs r2, 0xBC + lsls r2, 2 + adds r1, r2 + adds r1, r0 + movs r0, 0x1 + strb r0, [r1] + bx lr + .align 2, 0 +_08096E10: .4byte gUnknown_203B490 + thumb_func_end sub_8096DF8 + + thumb_func_start sub_8096E14 +sub_8096E14: + lsls r0, 24 + lsrs r0, 24 + ldr r1, _08096E28 + ldr r1, [r1] + movs r2, 0xBC + lsls r2, 2 + adds r1, r2 + adds r1, r0 + ldrb r0, [r1] + bx lr + .align 2, 0 +_08096E28: .4byte gUnknown_203B490 + thumb_func_end sub_8096E14 + + thumb_func_start sub_8096E2C +sub_8096E2C: + push {lr} + movs r3, 0 + ldr r0, _08096E70 + ldr r1, [r0] + movs r2, 0x3 +_08096E36: + ldrb r0, [r1] + cmp r0, 0x1 + bne _08096E48 + ldrb r0, [r1, 0x5] + cmp r3, r0 + bgt _08096E48 + cmp r0, 0x31 + bhi _08096E48 + adds r3, r0, 0x1 +_08096E48: + adds r1, 0x14 + subs r2, 0x1 + cmp r2, 0 + bge _08096E36 + adds r2, r3, 0 + cmp r2, 0x31 + bgt _08096E7A + ldr r0, _08096E70 + ldr r0, [r0] + movs r3, 0xBC + lsls r3, 2 + adds r1, r0, r3 +_08096E60: + adds r0, r1, r2 + ldrb r0, [r0] + cmp r0, 0 + bne _08096E74 + lsls r0, r2, 24 + lsrs r0, 24 + b _08096E7C + .align 2, 0 +_08096E70: .4byte gUnknown_203B490 +_08096E74: + adds r2, 0x1 + cmp r2, 0x31 + ble _08096E60 +_08096E7A: + movs r0, 0x38 +_08096E7C: + pop {r1} + bx r1 + thumb_func_end sub_8096E2C + + thumb_func_start sub_8096E80 +sub_8096E80: + push {lr} + lsls r0, 24 + lsrs r3, r0, 24 + movs r2, 0 + ldr r0, _08096E9C + ldr r1, [r0] +_08096E8C: + ldrb r0, [r1] + cmp r0, 0x1 + bne _08096EA0 + ldrb r0, [r1, 0x5] + cmp r3, r0 + bne _08096EA0 + movs r0, 0x1 + b _08096EAA + .align 2, 0 +_08096E9C: .4byte gUnknown_203B490 +_08096EA0: + adds r1, 0x14 + adds r2, 0x1 + cmp r2, 0x3 + ble _08096E8C + movs r0, 0 +_08096EAA: + pop {r1} + bx r1 + thumb_func_end sub_8096E80 + + thumb_func_start sub_8096EB0 +sub_8096EB0: + ldrb r1, [r0, 0x2] + ldrb r2, [r0, 0x1] + adds r1, r2 + ldrb r3, [r0, 0x4] + adds r2, r1, r3 + ldrb r1, [r0, 0x5] + adds r2, r1 + ldr r1, [r0, 0x8] + lsls r1, 8 + adds r2, r1 + movs r3, 0xC + ldrsh r1, [r0, r3] + lsls r1, 12 + adds r2, r1 + movs r3, 0xE + ldrsh r1, [r0, r3] + lsls r1, 16 + adds r2, r1 + ldrb r1, [r0, 0x10] + lsls r1, 24 + adds r1, r2, r1 + ldrb r3, [r0, 0x11] + adds r2, r1, r3 + ldrb r1, [r0, 0x12] + adds r1, r2, r1 + ldrb r0, [r0, 0x13] + adds r2, r1, r0 + adds r0, r2, 0 + bx lr + thumb_func_end sub_8096EB0 + + thumb_func_start sub_8096EEC +sub_8096EEC: + push {r4-r7,lr} + mov r7, r8 + push {r7} + mov r12, r0 + movs r3, 0xF + ldr r5, _08096F4C + mov r8, r5 + movs r4, 0x8C + lsls r4, 2 +_08096EFE: + mov r0, r8 + ldr r2, [r0] + lsls r1, r3, 1 + adds r1, r3 + lsls r1, 2 + adds r1, r2, r1 + subs r3, 0x1 + lsls r0, r3, 1 + adds r0, r3 + lsls r0, 2 + adds r2, r0 + adds r1, r4 + adds r2, r4 + ldm r2!, {r0,r6,r7} + stm r1!, {r0,r6,r7} + cmp r3, 0 + bgt _08096EFE + ldr r2, [r5] + movs r3, 0x8C + lsls r3, 2 + adds r2, r3 + mov r6, r12 + ldr r0, [r6, 0x4] + ldr r1, [r6, 0x8] + str r0, [r2] + str r1, [r2, 0x4] + mov r0, r12 + bl sub_8096EB0 + ldr r1, [r5] + movs r7, 0x8E + lsls r7, 2 + adds r1, r7 + str r0, [r1] + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08096F4C: .4byte gUnknown_203B490 + thumb_func_end sub_8096EEC + + thumb_func_start sub_8096F50 +sub_8096F50: + push {r4-r7,lr} + adds r4, r0, 0 + bl sub_8096EB0 + mov r12, r0 + movs r5, 0 + ldr r0, _08096F8C + ldr r7, [r0] + ldrb r6, [r4, 0x4] + movs r3, 0 +_08096F64: + movs r1, 0x8C + lsls r1, 2 + adds r0, r3, r1 + adds r2, r7, r0 + ldrb r0, [r2] + cmp r0, r6 + bne _08096F90 + ldrb r0, [r2, 0x1] + ldrb r1, [r4, 0x5] + cmp r0, r1 + bne _08096F90 + ldr r1, [r2, 0x4] + ldr r0, [r4, 0x8] + cmp r1, r0 + bne _08096F90 + ldr r0, [r2, 0x8] + cmp r0, r12 + bne _08096F90 + movs r0, 0x1 + b _08096F9A + .align 2, 0 +_08096F8C: .4byte gUnknown_203B490 +_08096F90: + adds r3, 0xC + adds r5, 0x1 + cmp r5, 0xF + ble _08096F64 + movs r0, 0 +_08096F9A: + pop {r4-r7} + pop {r1} + bx r1 + thumb_func_end sub_8096F50 + + thumb_func_start sub_8096FA0 +sub_8096FA0: + push {r4-r7,lr} + sub sp, 0x14 + adds r3, r0, 0 + adds r2, r1, 0 + mov r0, sp + adds r1, r3, 0 + bl sub_809485C + add r7, sp, 0x10 + ldr r6, _08097020 + movs r5, 0 + movs r4, 0x3 +_08096FB8: + ldr r1, [r6] + adds r1, r5 + mov r0, sp + bl sub_80971EC + adds r5, 0x14 + subs r4, 0x1 + cmp r4, 0 + bge _08096FB8 + ldr r6, _08097020 + movs r5, 0x50 + movs r4, 0x7 +_08096FD0: + ldr r1, [r6] + adds r1, r5 + mov r0, sp + bl sub_80971EC + adds r5, 0x14 + subs r4, 0x1 + cmp r4, 0 + bge _08096FD0 + ldr r6, _08097020 + movs r5, 0xF0 + movs r4, 0x7 +_08096FE8: + ldr r1, [r6] + adds r1, r5 + mov r0, sp + bl sub_80971EC + adds r5, 0x14 + subs r4, 0x1 + cmp r4, 0 + bge _08096FE8 + movs r4, 0 + movs r6, 0x1 + ldr r5, _08097020 +_08097000: + mov r0, sp + adds r1, r7, 0 + movs r2, 0x1 + bl sub_8094924 + ldr r1, [sp, 0x10] + ands r1, r6 + cmp r1, 0 + beq _08097024 + ldr r0, [r5] + movs r1, 0xBC + lsls r1, 2 + adds r0, r1 + adds r0, r4 + strb r6, [r0] + b _08097030 + .align 2, 0 +_08097020: .4byte gUnknown_203B490 +_08097024: + ldr r0, [r5] + movs r2, 0xBC + lsls r2, 2 + adds r0, r2 + adds r0, r4 + strb r1, [r0] +_08097030: + adds r4, 0x1 + cmp r4, 0x37 + ble _08097000 + mov r0, sp + adds r1, r7, 0 + movs r2, 0x1 + bl sub_8094924 + ldr r1, [sp, 0x10] + movs r2, 0x1 + ands r1, r2 + cmp r1, 0 + beq _0809705C + ldr r0, _08097058 + ldr r0, [r0] + movs r1, 0xCA + lsls r1, 2 + adds r0, r1 + strb r2, [r0] + b _08097068 + .align 2, 0 +_08097058: .4byte gUnknown_203B490 +_0809705C: + ldr r0, _080970D4 + ldr r0, [r0] + movs r2, 0xCA + lsls r2, 2 + adds r0, r2 + strb r1, [r0] +_08097068: + ldr r4, _080970D4 + ldr r1, [r4] + movs r0, 0xC8 + lsls r0, 1 + adds r1, r0 + movs r2, 0xA0 + lsls r2, 1 + mov r0, sp + bl sub_8094924 + ldr r1, [r4] + movs r2, 0xDC + lsls r2, 1 + adds r1, r2 + movs r2, 0xF0 + lsls r2, 2 + mov r0, sp + bl sub_8094924 + adds r6, r4, 0 + movs r5, 0x8C + lsls r5, 2 + movs r4, 0xF +_08097096: + ldr r1, [r6] + adds r1, r5 + adds r1, 0x8 + mov r0, sp + movs r2, 0x20 + bl sub_8094924 + ldr r1, [r6] + adds r1, r5 + adds r1, 0x4 + mov r0, sp + movs r2, 0x18 + bl sub_8094924 + ldr r1, [r6] + adds r1, r5 + mov r0, sp + bl sub_8090314 + adds r5, 0xC + subs r4, 0x1 + cmp r4, 0 + bge _08097096 + mov r0, sp + bl nullsub_102 + ldr r0, [sp, 0x8] + add sp, 0x14 + pop {r4-r7} + pop {r1} + bx r1 + .align 2, 0 +_080970D4: .4byte gUnknown_203B490 + thumb_func_end sub_8096FA0 + + thumb_func_start sub_80970D8 +sub_80970D8: + push {r4-r7,lr} + sub sp, 0x14 + adds r3, r0, 0 + adds r2, r1, 0 + mov r0, sp + adds r1, r3, 0 + bl sub_809486C + add r7, sp, 0x10 + ldr r6, _080971E8 + movs r5, 0 + movs r4, 0x3 +_080970F0: + ldr r1, [r6] + adds r1, r5 + mov r0, sp + bl sub_8097270 + adds r5, 0x14 + subs r4, 0x1 + cmp r4, 0 + bge _080970F0 + ldr r6, _080971E8 + movs r5, 0x50 + movs r4, 0x7 +_08097108: + ldr r1, [r6] + adds r1, r5 + mov r0, sp + bl sub_8097270 + adds r5, 0x14 + subs r4, 0x1 + cmp r4, 0 + bge _08097108 + ldr r6, _080971E8 + movs r5, 0xF0 + movs r4, 0x7 +_08097120: + ldr r1, [r6] + adds r1, r5 + mov r0, sp + bl sub_8097270 + adds r5, 0x14 + subs r4, 0x1 + cmp r4, 0 + bge _08097120 + movs r4, 0 +_08097134: + ldr r0, _080971E8 + ldr r0, [r0] + movs r1, 0xBC + lsls r1, 2 + adds r0, r1 + adds r0, r4 + ldrb r0, [r0] + cmp r0, 0 + beq _0809714A + movs r0, 0x1 + negs r0, r0 +_0809714A: + str r0, [sp, 0x10] + mov r0, sp + adds r1, r7, 0 + movs r2, 0x1 + bl sub_809488C + adds r4, 0x1 + cmp r4, 0x37 + ble _08097134 + ldr r0, _080971E8 + ldr r0, [r0] + movs r1, 0xCA + lsls r1, 2 + adds r0, r1 + ldrb r0, [r0] + cmp r0, 0 + beq _08097170 + movs r0, 0x1 + negs r0, r0 +_08097170: + str r0, [sp, 0x10] + mov r0, sp + adds r1, r7, 0 + movs r2, 0x1 + bl sub_809488C + ldr r4, _080971E8 + ldr r1, [r4] + movs r0, 0xC8 + lsls r0, 1 + adds r1, r0 + movs r2, 0xA0 + lsls r2, 1 + mov r0, sp + bl sub_809488C + ldr r1, [r4] + movs r0, 0xDC + lsls r0, 1 + adds r1, r0 + movs r2, 0xF0 + lsls r2, 2 + mov r0, sp + bl sub_809488C + adds r6, r4, 0 + movs r5, 0x8C + lsls r5, 2 + movs r4, 0xF +_080971AA: + ldr r1, [r6] + adds r1, r5 + adds r1, 0x8 + mov r0, sp + movs r2, 0x20 + bl sub_809488C + ldr r1, [r6] + adds r1, r5 + adds r1, 0x4 + mov r0, sp + movs r2, 0x18 + bl sub_809488C + ldr r1, [r6] + adds r1, r5 + mov r0, sp + bl sub_80902F4 + adds r5, 0xC + subs r4, 0x1 + cmp r4, 0 + bge _080971AA + mov r0, sp + bl nullsub_102 + ldr r0, [sp, 0x8] + add sp, 0x14 + pop {r4-r7} + pop {r1} + bx r1 + .align 2, 0 +_080971E8: .4byte gUnknown_203B490 + thumb_func_end sub_80970D8 + + thumb_func_start sub_80971EC +sub_80971EC: + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + movs r2, 0x4 + bl sub_8094924 + adds r1, r5, 0x1 + adds r0, r4, 0 + movs r2, 0x3 + bl sub_8094924 + adds r1, r5, 0x2 + adds r0, r4, 0 + movs r2, 0x4 + bl sub_8094924 + adds r1, r5, 0 + adds r1, 0xC + adds r0, r4, 0 + movs r2, 0x9 + bl sub_8094924 + adds r1, r5, 0 + adds r1, 0xE + adds r0, r4, 0 + movs r2, 0x9 + bl sub_8094924 + adds r1, r5, 0 + adds r1, 0x10 + adds r0, r4, 0 + movs r2, 0x8 + bl sub_8094924 + adds r1, r5, 0 + adds r1, 0x11 + adds r0, r4, 0 + movs r2, 0x4 + bl sub_8094924 + adds r1, r5, 0 + adds r1, 0x12 + adds r0, r4, 0 + movs r2, 0x8 + bl sub_8094924 + adds r1, r5, 0 + adds r1, 0x13 + adds r0, r4, 0 + movs r2, 0x6 + bl sub_8094924 + adds r1, r5, 0 + adds r1, 0x8 + adds r0, r4, 0 + movs r2, 0x18 + bl sub_8094924 + adds r1, r5, 0x4 + adds r0, r4, 0 + bl sub_8090314 + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end sub_80971EC + + thumb_func_start sub_8097270 +sub_8097270: + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + movs r2, 0x4 + bl sub_809488C + adds r1, r5, 0x1 + adds r0, r4, 0 + movs r2, 0x3 + bl sub_809488C + adds r1, r5, 0x2 + adds r0, r4, 0 + movs r2, 0x4 + bl sub_809488C + adds r1, r5, 0 + adds r1, 0xC + adds r0, r4, 0 + movs r2, 0x9 + bl sub_809488C + adds r1, r5, 0 + adds r1, 0xE + adds r0, r4, 0 + movs r2, 0x9 + bl sub_809488C + adds r1, r5, 0 + adds r1, 0x10 + adds r0, r4, 0 + movs r2, 0x8 + bl sub_809488C + adds r1, r5, 0 + adds r1, 0x11 + adds r0, r4, 0 + movs r2, 0x4 + bl sub_809488C + adds r1, r5, 0 + adds r1, 0x12 + adds r0, r4, 0 + movs r2, 0x8 + bl sub_809488C + adds r1, r5, 0 + adds r1, 0x13 + adds r0, r4, 0 + movs r2, 0x6 + bl sub_809488C + adds r1, r5, 0 + adds r1, 0x8 + adds r0, r4, 0 + movs r2, 0x18 + bl sub_809488C + adds r1, r5, 0x4 + adds r0, r4, 0 + bl sub_80902F4 + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end sub_8097270 + + thumb_func_start sub_80972F4 +sub_80972F4: + push {lr} + movs r0, 0 + movs r1, 0x2B + bl sub_80015C0 + movs r0, 0 + movs r1, 0x2C + bl sub_80015C0 + movs r0, 0 + movs r1, 0x2D + bl sub_80015C0 + pop {r0} + bx r0 + thumb_func_end sub_80972F4 + + thumb_func_start nullsub_128 +nullsub_128: + bx lr + thumb_func_end nullsub_128 + + thumb_func_start sub_8097318 +sub_8097318: + push {lr} + lsls r0, 16 + asrs r0, 16 + cmp r0, 0xD + bne _08097326 + movs r0, 0 + b _08097338 +_08097326: + lsls r2, r0, 16 + lsrs r2, 16 + movs r0, 0 + movs r1, 0x2B + bl sub_8001784 + cmp r0, 0 + beq _08097338 + movs r0, 0x1 +_08097338: + pop {r1} + bx r1 + thumb_func_end sub_8097318 + + thumb_func_start sub_809733C +sub_809733C: + push {r4-r6,lr} + lsls r0, 16 + asrs r4, r0, 16 + lsls r1, 24 + lsrs r6, r1, 24 + cmp r4, 0xD + beq _0809737C + lsls r0, r4, 16 + lsrs r5, r0, 16 + movs r0, 0 + movs r1, 0x2C + adds r2, r5, 0 + bl sub_8001784 + cmp r0, 0 + bne _0809737C + movs r0, 0 + movs r1, 0x2B + adds r2, r5, 0 + adds r3, r6, 0 + bl sub_800199C + cmp r6, 0 + beq _0809737C + cmp r4, 0xE + blt _0809737C + cmp r4, 0xF + ble _08097378 + cmp r4, 0x1C + bne _0809737C +_08097378: + bl sub_809674C +_0809737C: + pop {r4-r6} + pop {r0} + bx r0 + thumb_func_end sub_809733C + + thumb_func_start sub_8097384 +sub_8097384: + push {lr} + lsls r0, 16 + asrs r0, 16 + cmp r0, 0xD + bne _08097392 + movs r0, 0 + b _080973A4 +_08097392: + lsls r2, r0, 16 + lsrs r2, 16 + movs r0, 0 + movs r1, 0x2C + bl sub_8001784 + cmp r0, 0 + beq _080973A4 + movs r0, 0x1 +_080973A4: + pop {r1} + bx r1 + thumb_func_end sub_8097384 + + thumb_func_start sub_80973A8 +sub_80973A8: + push {r4-r6,lr} + lsls r0, 16 + asrs r0, 16 + lsls r1, 24 + lsrs r6, r1, 24 + cmp r0, 0xD + beq _080973EE + lsls r5, r0, 16 + cmp r6, 0 + beq _080973E2 + bl sub_80A26B8 + lsls r0, 16 + asrs r4, r0, 16 + lsrs r2, r5, 16 + movs r0, 0 + movs r1, 0x2B + movs r3, 0 + bl sub_800199C + movs r0, 0x1 + negs r0, r0 + cmp r4, r0 + beq _080973E2 + movs r0, 0 + movs r1, 0x12 + adds r2, r4, 0 + bl sub_80018D8 +_080973E2: + lsrs r2, r5, 16 + movs r0, 0 + movs r1, 0x2C + adds r3, r6, 0 + bl sub_800199C +_080973EE: + pop {r4-r6} + pop {r0} + bx r0 + thumb_func_end sub_80973A8 + + thumb_func_start sub_80973F4 +sub_80973F4: + push {lr} + lsls r0, 16 + asrs r0, 16 + cmp r0, 0xD + bne _08097402 + movs r0, 0 + b _08097414 +_08097402: + lsls r2, r0, 16 + lsrs r2, 16 + movs r0, 0 + movs r1, 0x2D + bl sub_8001784 + cmp r0, 0 + beq _08097414 + movs r0, 0x1 +_08097414: + pop {r1} + bx r1 + thumb_func_end sub_80973F4 + + thumb_func_start sub_8097418 +sub_8097418: + push {r4-r7,lr} + lsls r0, 16 + asrs r5, r0, 16 + lsls r1, 24 + lsrs r7, r1, 24 + cmp r5, 0xD + beq _08097470 + lsls r6, r5, 16 + cmp r7, 0 + beq _08097464 + lsrs r2, r6, 16 + movs r0, 0 + movs r1, 0x2C + movs r3, 0 + bl sub_800199C + cmp r5, 0x1E + bgt _08097464 + lsls r0, r5, 3 + ldr r1, _08097478 + adds r4, r0, r1 + ldrb r0, [r4, 0x4] + cmp r0, 0xFF + beq _0809744C + bl sub_8097FA8 +_0809744C: + ldrb r0, [r4, 0x5] + cmp r0, 0xFF + beq _08097456 + bl sub_8097FA8 +_08097456: + cmp r5, 0x9 + bne _08097460 + movs r0, 0x1F + bl sub_8097FA8 +_08097460: + bl sub_8097FF8 +_08097464: + lsrs r2, r6, 16 + movs r0, 0 + movs r1, 0x2D + adds r3, r7, 0 + bl sub_800199C +_08097470: + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08097478: .4byte gStoryMissionText + thumb_func_end sub_8097418 + + .align 2,0 diff --git a/asm/items.s b/asm/items.s index 87c7dc7..639ee66 100644 --- a/asm/items.s +++ b/asm/items.s @@ -797,8 +797,8 @@ _080913C4: .4byte gUnknown_203B460 _080913C8: .4byte 0x0001869f thumb_func_end sub_80913A0 - thumb_func_start sub_80913CC -sub_80913CC: + thumb_func_start GetItemMove +GetItemMove: lsls r0, 24 ldr r1, _080913DC ldr r1, [r1] @@ -808,7 +808,7 @@ sub_80913CC: bx lr .align 2, 0 _080913DC: .4byte gItemParametersData - thumb_func_end sub_80913CC + thumb_func_end GetItemMove thumb_func_start sub_80913E0 sub_80913E0: @@ -861,7 +861,7 @@ _08091414: bne _080914B6 add r4, sp, 0x54 ldrb r0, [r6, 0x2] - bl sub_80913CC + bl GetItemMove adds r1, r0, 0 lsls r1, 16 lsrs r1, 16 diff --git a/asm/kecleon_items.s b/asm/kecleon_items.s index e703eba..72a16f2 100644 --- a/asm/kecleon_items.s +++ b/asm/kecleon_items.s @@ -5,8 +5,8 @@ .text - thumb_func_start sub_8018E88 -sub_8018E88: + thumb_func_start UpdateKecleonStoreDialogue +UpdateKecleonStoreDialogue: push {r4,lr} sub sp, 0x14 ldr r1, _08018EA4 @@ -753,7 +753,7 @@ _080194E8: .align 2, 0 _080194F0: .4byte gKecleonShopDialogue _080194F4: .4byte 0x0000010d - thumb_func_end sub_8018E88 + thumb_func_end UpdateKecleonStoreDialogue thumb_func_start sub_80194F8 sub_80194F8: diff --git a/asm/code_808EAB0.s b/asm/pokemon_3.s index a008794..a008794 100644 --- a/asm/code_808EAB0.s +++ b/asm/pokemon_3.s diff --git a/asm/wonder_mail_1.s b/asm/wonder_mail_1.s index 6c9d8e6..133b481 100644 --- a/asm/wonder_mail_1.s +++ b/asm/wonder_mail_1.s @@ -5,626 +5,6 @@ .text - thumb_func_start sub_802A75C -sub_802A75C: - push {lr} - sub sp, 0x4 - mov r0, sp - bl sub_80144A4 - cmp r0, 0 - bne _0802A792 - ldr r0, [sp] - cmp r0, 0 - beq _0802A78C - cmp r0, 0x7 - bne _0802A792 - ldr r0, _0802A788 - ldr r0, [r0] - movs r1, 0xA7 - lsls r1, 3 - adds r0, r1 - ldr r0, [r0] - movs r0, 0x16 - bl sub_802B2BC - b _0802A792 - .align 2, 0 -_0802A788: .4byte gUnknown_203B2C4 -_0802A78C: - movs r0, 0x1 - bl sub_802B2BC -_0802A792: - add sp, 0x4 - pop {r0} - bx r0 - thumb_func_end sub_802A75C - - thumb_func_start sub_802A798 -sub_802A798: - push {r4,r5,lr} - sub sp, 0x4 - mov r0, sp - bl sub_80144A4 - cmp r0, 0 - bne _0802A81E - ldr r0, [sp] - cmp r0, 0x7 - beq _0802A7BC - cmp r0, 0x7 - bgt _0802A7B6 - cmp r0, 0 - beq _0802A818 - b _0802A81E -_0802A7B6: - cmp r0, 0x8 - beq _0802A810 - b _0802A81E -_0802A7BC: - ldr r4, _0802A800 - ldr r0, [r4] - movs r1, 0x86 - lsls r1, 2 - adds r0, r1 - ldrb r0, [r0] - bl sub_8095228 - adds r2, r0, 0 - ldr r1, [r4] - ldr r3, _0802A804 - adds r0, r1, r3 - ldrb r0, [r0] - cmp r0, 0 - beq _0802A7E2 - ldr r5, _0802A808 - adds r0, r1, r5 - ldr r0, [r0] - str r0, [r2, 0x20] -_0802A7E2: - ldr r0, _0802A80C - ldr r1, [r0] - ldr r0, [r4] - adds r0, r3 - ldrb r0, [r0] - lsls r0, 1 - adds r1, 0x50 - adds r1, r0 - ldrh r0, [r1] - subs r0, 0x1 - strh r0, [r1] - movs r0, 0x29 - bl sub_802B2BC - b _0802A81E - .align 2, 0 -_0802A800: .4byte gUnknown_203B2C4 -_0802A804: .4byte 0x0000041e -_0802A808: .4byte 0x0000041c -_0802A80C: .4byte gUnknown_203B460 -_0802A810: - movs r0, 0xB - bl sub_802B2BC - b _0802A81E -_0802A818: - movs r0, 0x1 - bl sub_802B2BC -_0802A81E: - add sp, 0x4 - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end sub_802A798 - - thumb_func_start sub_802A828 -sub_802A828: - push {lr} - sub sp, 0x4 - mov r0, sp - bl sub_80144A4 - cmp r0, 0 - bne _0802A848 - movs r0, 0x2A - bl sub_802B2BC - movs r0, 0x1 - bl sub_8011C28 - movs r0, 0 - bl PrepareSavePakWrite -_0802A848: - add sp, 0x4 - pop {r0} - bx r0 - thumb_func_end sub_802A828 - - thumb_func_start sub_802A850 -sub_802A850: - push {lr} - sub sp, 0x4 - mov r0, sp - bl sub_80144A4 - cmp r0, 0 - bne _0802A89A - bl WriteSavePak - lsls r0, 24 - cmp r0, 0 - bne _0802A89A - bl FinishWriteSavePak - ldr r0, _0802A884 - ldr r0, [r0] - ldr r1, _0802A888 - adds r0, r1 - ldr r0, [r0] - cmp r0, 0x3 - blt _0802A89A - cmp r0, 0x4 - ble _0802A88C - cmp r0, 0x5 - beq _0802A894 - b _0802A89A - .align 2, 0 -_0802A884: .4byte gUnknown_203B2C4 -_0802A888: .4byte 0x00000534 -_0802A88C: - movs r0, 0x1D - bl sub_802B2BC - b _0802A89A -_0802A894: - movs r0, 0x19 - bl sub_802B2BC -_0802A89A: - add sp, 0x4 - pop {r0} - bx r0 - thumb_func_end sub_802A850 - - thumb_func_start sub_802A8A0 -sub_802A8A0: - push {lr} - sub sp, 0x4 - mov r0, sp - bl sub_80144A4 - cmp r0, 0 - bne _0802A8B4 - movs r0, 0x13 - bl sub_802B2BC -_0802A8B4: - add sp, 0x4 - pop {r0} - bx r0 - thumb_func_end sub_802A8A0 - - thumb_func_start sub_802A8BC -sub_802A8BC: - push {lr} - sub sp, 0x4 - mov r0, sp - bl sub_80144A4 - cmp r0, 0 - bne _0802A90A - ldr r0, [sp] - cmp r0, 0 - beq _0802A904 - cmp r0, 0xA - bne _0802A90A - ldr r0, _0802A8EC - ldr r0, [r0] - ldr r1, _0802A8F0 - adds r0, r1 - ldr r0, [r0] - cmp r0, 0x3 - blt _0802A90A - cmp r0, 0x4 - ble _0802A8F4 - cmp r0, 0x5 - beq _0802A8FC - b _0802A90A - .align 2, 0 -_0802A8EC: .4byte gUnknown_203B2C4 -_0802A8F0: .4byte 0x00000534 -_0802A8F4: - movs r0, 0x1D - bl sub_802B2BC - b _0802A90A -_0802A8FC: - movs r0, 0x19 - bl sub_802B2BC - b _0802A90A -_0802A904: - movs r0, 0x1 - bl sub_802B2BC -_0802A90A: - add sp, 0x4 - pop {r0} - bx r0 - thumb_func_end sub_802A8BC - - thumb_func_start sub_802A910 -sub_802A910: - push {lr} - sub sp, 0x4 - mov r0, sp - bl sub_80144A4 - cmp r0, 0 - bne _0802A986 - ldr r0, [sp] - cmp r0, 0x9 - beq _0802A934 - cmp r0, 0x9 - bgt _0802A92E - cmp r0, 0 - beq _0802A980 - b _0802A986 -_0802A92E: - cmp r0, 0xA - beq _0802A950 - b _0802A986 -_0802A934: - movs r0, 0 - bl sub_801CF14 - lsls r0, 24 - cmp r0, 0 - beq _0802A948 - movs r0, 0xA - bl sub_802B2BC - b _0802A986 -_0802A948: - movs r0, 0xB - bl sub_802B2BC - b _0802A986 -_0802A950: - ldr r0, _0802A968 - ldr r0, [r0] - ldr r1, _0802A96C - adds r0, r1 - ldr r0, [r0] - cmp r0, 0x3 - blt _0802A986 - cmp r0, 0x4 - ble _0802A970 - cmp r0, 0x5 - beq _0802A978 - b _0802A986 - .align 2, 0 -_0802A968: .4byte gUnknown_203B2C4 -_0802A96C: .4byte 0x00000534 -_0802A970: - movs r0, 0x1D - bl sub_802B2BC - b _0802A986 -_0802A978: - movs r0, 0x19 - bl sub_802B2BC - b _0802A986 -_0802A980: - movs r0, 0x1 - bl sub_802B2BC -_0802A986: - add sp, 0x4 - pop {r0} - bx r0 - thumb_func_end sub_802A910 - - thumb_func_start sub_802A98C -sub_802A98C: - push {lr} - sub sp, 0x4 - mov r0, sp - bl sub_80144A4 - cmp r0, 0 - bne _0802A9A0 - movs r0, 0x8 - bl sub_802B2BC -_0802A9A0: - add sp, 0x4 - pop {r0} - bx r0 - thumb_func_end sub_802A98C - - thumb_func_start sub_802A9A8 -sub_802A9A8: - push {lr} - sub sp, 0x4 - mov r0, sp - bl sub_80144A4 - cmp r0, 0 - bne _0802A9F6 - ldr r0, [sp] - cmp r0, 0 - beq _0802A9F0 - cmp r0, 0x7 - bne _0802A9F6 - ldr r0, _0802A9D8 - ldr r0, [r0] - ldr r1, _0802A9DC - adds r0, r1 - ldr r0, [r0] - cmp r0, 0x3 - blt _0802A9F6 - cmp r0, 0x4 - ble _0802A9E0 - cmp r0, 0x5 - beq _0802A9E8 - b _0802A9F6 - .align 2, 0 -_0802A9D8: .4byte gUnknown_203B2C4 -_0802A9DC: .4byte 0x00000534 -_0802A9E0: - movs r0, 0x1D - bl sub_802B2BC - b _0802A9F6 -_0802A9E8: - movs r0, 0x19 - bl sub_802B2BC - b _0802A9F6 -_0802A9F0: - movs r0, 0x1 - bl sub_802B2BC -_0802A9F6: - add sp, 0x4 - pop {r0} - bx r0 - thumb_func_end sub_802A9A8 - - thumb_func_start sub_802A9FC -sub_802A9FC: - push {lr} - sub sp, 0x4 - mov r0, sp - bl sub_80144A4 - cmp r0, 0 - bne _0802AA22 - ldr r0, [sp] - cmp r0, 0 - beq _0802AA1C - cmp r0, 0x7 - bne _0802AA22 - movs r0, 0x26 - bl sub_802B2BC - b _0802AA22 -_0802AA1C: - movs r0, 0x1 - bl sub_802B2BC -_0802AA22: - add sp, 0x4 - pop {r0} - bx r0 - thumb_func_end sub_802A9FC - - thumb_func_start sub_802AA28 -sub_802AA28: - push {lr} - sub sp, 0x4 - mov r0, sp - bl sub_80144A4 - cmp r0, 0 - bne _0802AAA6 - ldr r2, [sp] - cmp r2, 0 - beq _0802AAA0 - cmp r2, 0 - blt _0802AAA6 - cmp r2, 0x5 - bgt _0802AAA6 - cmp r2, 0x3 - blt _0802AAA6 - ldr r0, _0802AA7C - ldr r0, [r0] - ldr r3, _0802AA80 - adds r1, r0, r3 - str r2, [r1] - movs r1, 0xA7 - lsls r1, 3 - adds r0, r1 - ldr r0, [r0] - cmp r0, 0x1 - bne _0802AA8C - movs r0, 0x5 - bl sub_80953D4 - lsls r0, 24 - lsrs r0, 24 - bl sub_8095228 - adds r0, 0x22 - ldrb r0, [r0] - cmp r0, 0 - beq _0802AA84 - movs r0, 0x7 - bl sub_802B2BC - b _0802AAA6 - .align 2, 0 -_0802AA7C: .4byte gUnknown_203B2C4 -_0802AA80: .4byte 0x00000534 -_0802AA84: - movs r0, 0x9 - bl sub_802B2BC - b _0802AAA6 -_0802AA8C: - cmp r2, 0x5 - bne _0802AA98 - movs r0, 0x26 - bl sub_802B2BC - b _0802AAA6 -_0802AA98: - movs r0, 0x1D - bl sub_802B2BC - b _0802AAA6 -_0802AAA0: - movs r0, 0x1 - bl sub_802B2BC -_0802AAA6: - add sp, 0x4 - pop {r0} - bx r0 - thumb_func_end sub_802AA28 - - thumb_func_start sub_802AAAC -sub_802AAAC: - push {lr} - sub sp, 0x4 - mov r0, sp - bl sub_80144A4 - cmp r0, 0 - bne _0802AAC0 - movs r0, 0x1 - bl sub_802B2BC -_0802AAC0: - add sp, 0x4 - pop {r0} - bx r0 - thumb_func_end sub_802AAAC - - thumb_func_start sub_802AAC8 -sub_802AAC8: - push {lr} - sub sp, 0x4 - mov r0, sp - bl sub_80144A4 - cmp r0, 0 - bne _0802AADC - movs r0, 0x3 - bl sub_802B2BC -_0802AADC: - add sp, 0x4 - pop {r0} - bx r0 - thumb_func_end sub_802AAC8 - - thumb_func_start sub_802AAE4 -sub_802AAE4: - push {lr} - sub sp, 0x4 - mov r0, sp - bl sub_80144A4 - cmp r0, 0 - bne _0802AB5A - ldr r2, [sp] - cmp r2, 0x1 - beq _0802AB08 - cmp r2, 0x1 - bgt _0802AB02 - cmp r2, 0 - beq _0802AB54 - b _0802AB5A -_0802AB02: - cmp r2, 0x2 - beq _0802AB38 - b _0802AB5A -_0802AB08: - ldr r0, _0802AB2C - ldr r0, [r0] - movs r1, 0x6 - str r1, [r0, 0x40] - movs r1, 0xA7 - lsls r1, 3 - adds r0, r1 - str r2, [r0] - movs r0, 0x5 - bl sub_8095324 - cmp r0, 0 - bne _0802AB30 - movs r0, 0x4 - bl sub_802B2BC - b _0802AB5A - .align 2, 0 -_0802AB2C: .4byte gUnknown_203B2C4 -_0802AB30: - movs r0, 0xF - bl sub_802B2BC - b _0802AB5A -_0802AB38: - ldr r0, _0802AB50 - ldr r0, [r0] - movs r1, 0x7 - str r1, [r0, 0x40] - movs r1, 0xA7 - lsls r1, 3 - adds r0, r1 - str r2, [r0] - movs r0, 0x6 - bl sub_802B2BC - b _0802AB5A - .align 2, 0 -_0802AB50: .4byte gUnknown_203B2C4 -_0802AB54: - movs r0, 0x2 - bl sub_802B2BC -_0802AB5A: - add sp, 0x4 - pop {r0} - bx r0 - thumb_func_end sub_802AAE4 - - thumb_func_start sub_802AB60 -sub_802AB60: - push {lr} - sub sp, 0x4 - mov r0, sp - bl sub_80144A4 - cmp r0, 0 - bne _0802AB74 - movs r0, 0x22 - bl sub_802B2BC -_0802AB74: - add sp, 0x4 - pop {r0} - bx r0 - thumb_func_end sub_802AB60 - - thumb_func_start sub_802AB7C -sub_802AB7C: - push {lr} - sub sp, 0x4 - mov r0, sp - bl sub_80144A4 - cmp r0, 0 - bne _0802AB90 - movs r0, 0x22 - bl sub_802B2BC -_0802AB90: - add sp, 0x4 - pop {r0} - bx r0 - thumb_func_end sub_802AB7C - - thumb_func_start sub_802AB98 -sub_802AB98: - push {r4,lr} - bl sub_802F298 - cmp r0, 0x3 - bne _0802ABE0 - bl sub_802F2C0 - ldr r0, _0802ABE8 - movs r4, 0x98 - lsls r4, 1 - adds r1, r4, 0 - bl CopyYellowSpeciesNametoBuffer - adds r0, r4, 0 - bl GetMonSpecies - adds r1, r0, 0 - ldr r0, _0802ABEC - bl strcpy - ldr r0, _0802ABF0 - ldr r0, [r0] - movs r1, 0x86 - lsls r1, 3 - adds r0, r1 - ldr r1, [r0] - movs r0, 0x6 - bl sub_809539C - lsls r0, 24 - lsrs r0, 24 - bl sub_8095240 - movs r0, 0x24 - bl sub_802B2BC -_0802ABE0: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0802ABE8: .4byte gUnknown_202E5D8 -_0802ABEC: .4byte gAvailablePokemonNames -_0802ABF0: .4byte gUnknown_203B2C4 - thumb_func_end sub_802AB98 - - thumb_func_start nullsub_131 -nullsub_131: - bx lr - thumb_func_end nullsub_131 - thumb_func_start sub_802ABF8 sub_802ABF8: push {r4-r6,lr} @@ -1423,18 +803,4 @@ _0802B2B4: .4byte gUnknown_80DF9A4 _0802B2B8: .4byte gUnknown_80DEE08 thumb_func_end sub_802ABF8 - thumb_func_start sub_802B2BC -sub_802B2BC: - push {lr} - ldr r1, _0802B2D0 - ldr r1, [r1] - strb r0, [r1] - bl nullsub_131 - bl sub_802ABF8 - pop {r0} - bx r0 - .align 2, 0 -_0802B2D0: .4byte gUnknown_203B2C4 - thumb_func_end sub_802B2BC - .align 2,0 diff --git a/asm/wonder_mail_3.s b/asm/wonder_mail_3.s index 718d084..df1ab03 100644 --- a/asm/wonder_mail_3.s +++ b/asm/wonder_mail_3.s @@ -5,125 +5,6 @@ .text - thumb_func_start sub_802D1B8 -sub_802D1B8: - push {r4-r7,lr} - mov r7, r8 - push {r7} - ldr r4, _0802D1E0 - ldr r0, [r4] - movs r1, 0xD4 - lsls r1, 1 - adds r0, r1 - bl sub_8006518 - ldr r0, [r4] - ldr r0, [r0] - cmp r0, 0xD - beq _0802D1EA - cmp r0, 0xD - bgt _0802D1E4 - cmp r0, 0x2 - beq _0802D27E - b _0802D254 - .align 2, 0 -_0802D1E0: .4byte gUnknown_203B2F8 -_0802D1E4: - cmp r0, 0xE - beq _0802D21C - b _0802D254 -_0802D1EA: - bl sub_802D5A4 - ldr r2, [r4] - movs r0, 0xEC - lsls r0, 1 - adds r2, r0 - ldr r1, _0802D218 - ldm r1!, {r3,r5,r6} - stm r2!, {r3,r5,r6} - ldm r1!, {r3,r5,r7} - stm r2!, {r3,r5,r7} - ldr r1, [r4] - adds r0, r1, r0 - movs r6, 0x8C - lsls r6, 1 - adds r1, r6 - bl sub_8012CAC - ldr r0, [r4] - movs r7, 0xF2 - lsls r7, 1 - b _0802D246 - .align 2, 0 -_0802D218: .4byte gUnknown_80DFE04 -_0802D21C: - bl sub_802D63C - ldr r2, [r4] - movs r0, 0xF8 - lsls r0, 1 - adds r2, r0 - ldr r1, _0802D250 - ldm r1!, {r3,r5,r6} - stm r2!, {r3,r5,r6} - ldm r1!, {r3,r5,r7} - stm r2!, {r3,r5,r7} - ldr r1, [r4] - adds r0, r1, r0 - movs r6, 0xAC - lsls r6, 1 - adds r1, r6 - bl sub_8012CAC - ldr r0, [r4] - movs r7, 0xFE - lsls r7, 1 -_0802D246: - adds r0, r7 - movs r1, 0x6 - strh r1, [r0] - b _0802D27E - .align 2, 0 -_0802D250: .4byte gUnknown_80DFE1C -_0802D254: - ldr r0, _0802D2A0 - mov r12, r0 - movs r1, 0xD4 - lsls r1, 1 - mov r8, r1 - ldr r4, _0802D2A4 - movs r3, 0 - movs r2, 0x3 -_0802D264: - mov r5, r12 - ldr r1, [r5] - adds r1, r3 - add r1, r8 - adds r0, r4, 0 - ldm r0!, {r5-r7} - stm r1!, {r5-r7} - ldm r0!, {r5-r7} - stm r1!, {r5-r7} - adds r3, 0x18 - subs r2, 0x1 - cmp r2, 0 - bge _0802D264 -_0802D27E: - bl ResetUnusedInputStruct - ldr r0, _0802D2A0 - ldr r0, [r0] - movs r6, 0xD4 - lsls r6, 1 - adds r0, r6 - movs r1, 0x1 - movs r2, 0x1 - bl sub_800641C - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0802D2A0: .4byte gUnknown_203B2F8 -_0802D2A4: .4byte gUnknown_80DFDD4 - thumb_func_end sub_802D1B8 - thumb_func_start sub_802D2A8 sub_802D2A8: push {r4,lr} diff --git a/data/data_80E2068.s b/data/data_80E2068.s index be653e5..094f272 100644 --- a/data/data_80E2068.s +++ b/data/data_80E2068.s @@ -1412,7 +1412,19 @@ gUnknown_80E6DDC: @ 80E6DDC gUnknown_80E6DF4: @ 80E6DF4 .incbin "baserom.gba", 0xE6DF4, 0x5C - .include "data/text/chunsoft.inc" + .global gUnknown_80E6E50 +gUnknown_80E6E50:: @ 80E6E50 + .string "CHUNSOFT\0" + .align 2,0 + + .string "pksdir0\0" + + .string "pksdir0\0" + + .string "pksdir0\0" + + .string "pksdir0\0" + .global gUnknown_80E6E7C gUnknown_80E6E7C: @ 80E6E7C diff --git a/data/data_80F4278.s b/data/data_80F4278.s index f1d78e9..9203841 100644 --- a/data/data_80F4278.s +++ b/data/data_80F4278.s @@ -8224,7 +8224,7 @@ gUnknown_810A350: @ 810A350 .byte 0x18, 0x19, 0x1e, 0x27, 0x31, 0x32, 0x33, 0x36, 0x37, 0x3d, 0x3f .global gUnknown_810A35B -gUnknown_810A35B: @ 810A35B +gUnknown_810A35B: @ 810A35B (item related) @ replacing .incbin "baserom.gba", 0x0010a35b, 0x10 .byte 0xed, 0xee, 0xef, 0xb1, 0xe9, 0x24, 0xd8, 0xd2, 0xb0, 0xdc, 0x32, 0x33, 0x34, 0xc2, 0xec, 0xf0 @@ -8248,18 +8248,18 @@ gUnknown_810A36B: @ 810A36B .global gUnknown_810A378 gUnknown_810A378: @ 810A378 @ replacing .incbin "baserom.gba", 0x0010a378, 0x18 - .byte 0x01, 0x00 - .byte 0x19, 0x00 - .byte 0x01, 0x00 - .byte 0x01, 0x00 - .byte 0xe7, 0x03 - .byte 0xe7, 0x03 - .byte 0x23, 0x00 - .byte 0x28, 0x00 - .byte 0x14, 0x00 - .byte 0x0f, 0x00 - .byte 0x0a, 0x00 - .byte 0xe7, 0x03 + .2byte 0x01 + .2byte 0x19 + .2byte 0x01 + .2byte 0x01 + .2byte 0x3e7 + .2byte 0x3e7 + .2byte 0x23 + .2byte 0x28 + .2byte 0x14 + .2byte 0x0f + .2byte 0x0a + .2byte 0x3e7 .global gUnknown_810A390 gUnknown_810A390: @ 810A390 diff --git a/data/data_810AE24.s b/data/data_810AE24.s index a699873..5e8528f 100644 --- a/data/data_810AE24.s +++ b/data/data_810AE24.s @@ -888,7 +888,7 @@ gUnknown_8116258: @ 8116258 .byte 0x01, 0x00, 0x00, 0x00 .byte 0x00, 0x00, 0x00, 0x00 .4byte CleanHelperPelipper - .4byte sub_8031540 + .4byte HelperPelliperCallback .global gUnknown_8116268 gUnknown_8116268: @ 8116268 diff --git a/data/text/chunsoft.inc b/data/text/chunsoft.inc deleted file mode 100644 index 19c7513..0000000 --- a/data/text/chunsoft.inc +++ /dev/null @@ -1,11 +0,0 @@ -gUnknown_80E6E50:: @ 80E6E50 - .string "CHUNSOFT\0" - .align 2,0 - - .string "pksdir0\0" - - .string "pksdir0\0" - - .string "pksdir0\0" - - .string "pksdir0\0" diff --git a/include/constants/wonder_mail.h b/include/constants/wonder_mail.h new file mode 100644 index 0000000..ab5a9ee --- /dev/null +++ b/include/constants/wonder_mail.h @@ -0,0 +1,28 @@ +#ifndef GUARD_CONSTANTS_WONDER_MAIL_H +#define GUARD_CONSTANTS_WONDER_MAIL_H + +enum MissionType +{ + HELP_POKE, + FIND_POKE, + ESCORT, + FIND_ITEM, + DELIVER_ITEM +}; + +enum RewardType +{ + MONEY, + MONEY_EXTRA, + ITEM, + ITEM_EXTRA, + BLANK_4, + MONEY1, + MONEY1_EXTRA, + ITEM1, + ITEM1_EXTRA, + FRIEND_AREA, + END_REWARDS +}; + +#endif //GUARD_CONSTANTS_WONDER_MAIL_H diff --git a/include/felicity_bank.h b/include/felicity_bank.h index d09843b..5b68d65 100644 --- a/include/felicity_bank.h +++ b/include/felicity_bank.h @@ -3,6 +3,7 @@ #include "file_system.h" #include "text.h" +#include "menu.h" struct unkStruct_203B204 { @@ -12,7 +13,9 @@ struct unkStruct_203B204 u32 unk8; u32 chosenAmount; u32 unk10; - u8 fill14[0x64 - 0x14]; + struct MenuItem unk14[5]; + u8 fill3C[0x54 - 0x3C]; + u16 unk54[8]; u32 unk64; u8 fill68[0x78 - 0x68]; u32 unk78; diff --git a/include/gUnknown_203B460.h b/include/gUnknown_203B460.h index bab85d8..7418bc1 100644 --- a/include/gUnknown_203B460.h +++ b/include/gUnknown_203B460.h @@ -17,8 +17,7 @@ struct subStruct_203B460 struct unkStruct_203B460 { struct ItemStruct_203B460 fill0[20]; - u16 unk50[0x10]; - u8 fill70[0x230 - 0x70]; + u16 unk50[0xF0]; struct subStruct_203B460 unk230[8]; struct subStruct_203B460 unk250[4]; // TODO: idk if this is identical struct or not.. Ghidra says sizes are same /* 0x260 */ s32 teamMoney; diff --git a/include/global.h b/include/global.h index b991d34..cc56a5e 100644 --- a/include/global.h +++ b/include/global.h @@ -5,6 +5,8 @@ #include "config.h" // We need to define config before gba headers as print stuff needs the functions nulled before defines. #include "gba/gba.h" +#include "constants/species.h" + // IDE support #if defined(__APPLE__) || defined(__CYGWIN__) #define _(x) x diff --git a/include/kangaskhan_storage.h b/include/kangaskhan_storage.h index 93f319c..3f1292a 100644 --- a/include/kangaskhan_storage.h +++ b/include/kangaskhan_storage.h @@ -2,6 +2,7 @@ #define KANGASKHAN_STORAGE_H #include "text.h" +#include "menu.h" struct unkStruct_203B208 { @@ -17,7 +18,7 @@ struct unkStruct_203B208 u32 unk18; u32 unk1C; u32 unk20; - u8 fill24[0x4C - 0x24]; + struct MenuItem unk24[5]; u16 unk4C[5]; u32 unk58; u8 unk5C[0xA8 - 0x5C]; diff --git a/include/kecleon_items.h b/include/kecleon_items.h index 321fcc3..5716ea3 100644 --- a/include/kecleon_items.h +++ b/include/kecleon_items.h @@ -3,25 +3,31 @@ #include "gUnknown_203B460.h" #include "text.h" +#include "menu.h" struct unkStruct_203B210 { // size: 0x148 u32 unk0; - u8 unk4; + bool8 unk4; u8 fill5[3]; u32 currState; u32 unkC; - s32 unk10; + s32 itemSellPrice; u32 unk14; u32 unk18; struct ItemStruct_203B460 unk1C; - u32 unk20; + u8 unk20; + u8 unk21; + u8 unk22; + u8 unk23; u32 unk24; u32 unk28; u32 unk2C; u32 unk30; - u8 fill34[0x84 - 0x34]; + struct MenuItem unk34[3]; + u8 fill4C[0x74 - 0x4C]; + u16 unk74[8]; u32 unk84; u8 fill88[0xD4 - 0x88]; struct OpenedFile *faceFile; diff --git a/include/wonder_mail.h b/include/wonder_mail.h index 0d58a20..1f9af3e 100644 --- a/include/wonder_mail.h +++ b/include/wonder_mail.h @@ -4,7 +4,24 @@ #include "file_system.h" #include "text.h" -#define PASSWORD_BUFFER_SIZE 0x36 +#define PASSWORD_BUFFER_SIZE 54 + +struct WonderMail +{ + /* 0x0 */ u8 mailType; // mail type + /* 0x1 */ u8 missionType; // mission type + /* 0x2 */ u8 unk2; + /* 0x3 */ u8 unk3; + /* 0x4 */ u8 dungeon; // dungeon + /* 0x5 */ u8 floor; // floor + /* 0x8 */ u32 unk8; + /* 0xC */ s16 clientPoke; // client pokemon + /* 0xE */ s16 targetPoke; // target + /* 0x10 */ u8 targetItem; // item to find/deliver + /* 0x11 */ u8 rewardType; // reward type + /* 0x12 */ u8 itemReward; // item reward + /* 0x13 */ u8 friendAreaReward; // friend area +}; struct WonderMailStruct_203B2C0 diff --git a/ld_script.txt b/ld_script.txt index 53a20ae..e920b4a 100755 --- a/ld_script.txt +++ b/ld_script.txt @@ -104,6 +104,8 @@ SECTIONS { asm/pokemon_square.o(.text); src/code_801AFA4.o(.text); asm/code_801AFA4.o(.text); + src/code_801B3C0.o(.text); + asm/code_801B3C0.o(.text); src/code_801C620.o(.text); asm/code_801C620.o(.text); src/code_801D760.o(.text); @@ -188,8 +190,8 @@ SECTIONS { asm/pokemon_1.o(.text); src/pokemon_1.o(.text); asm/pokemon_2.o(.text); - src/code_808EAB0.o(.text); - asm/code_808EAB0.o(.text); + src/pokemon_3.o(.text); + asm/pokemon_3.o(.text); src/dungeon.o(.text); asm/code_809017C.o(.text); src/items.o(.text); @@ -205,6 +207,8 @@ SECTIONS { src/play_time.o(.text); src/code_8094F88.o(.text); asm/code_8095014.o(.text); + src/code_80958E8.o(.text); + asm/code_80958E8.o(.text); src/code_809747C.o(.text); asm/code_809747C.o(.text); src/code_809747C_1.o(.text); diff --git a/src/code_801AFA4.c b/src/code_801AFA4.c index 78c1764..47db0a0 100644 --- a/src/code_801AFA4.c +++ b/src/code_801AFA4.c @@ -5,7 +5,7 @@ extern struct unkStruct_203B460 *gUnknown_203B460; -extern u16 sub_80913CC(u8); +extern u16 GetItemMove(u8); extern void sub_8092C84(u8 *, u16); extern void sub_8099690(u32); extern u32 sub_801B2F4(void); @@ -60,7 +60,7 @@ u32 sub_801AFA4(u32 r0) gUnknown_203B22C = MemoryAlloc(0xA4, 8); gUnknown_203B22C->unk4 = r0; gUnknown_203B22C->unk8 = gUnknown_203B460->fill0[r0].itemIndex; - gUnknown_203B22C->unkA = sub_80913CC(gUnknown_203B22C->unk8); + gUnknown_203B22C->unkA = GetItemMove(gUnknown_203B22C->unk8); sub_8092C84(gUnknown_202E1C8, gUnknown_203B22C->unkA); sub_8099690(0); if(sub_801B2F4() == 0) diff --git a/src/code_801B3C0.c b/src/code_801B3C0.c new file mode 100644 index 0000000..3d24376 --- /dev/null +++ b/src/code_801B3C0.c @@ -0,0 +1,189 @@ +#include "global.h" +#include "text.h" +#include "input.h" +#include "memory.h" + +struct subStruct_203B240 +{ + char * unk0; + char * unk4; +}; + +struct unkStruct_41C +{ + u8 unk41C; + u8 unk41D; + u8 unk41E; + u8 unk41F; +}; + +// based off of 203B240.. +struct unkStruct_203B230 +{ + // size: 0x94 + s32 state; + struct unkStruct_41C unk4; + s32 unk8; + s32 unkC; + struct subStruct_203B240 *unk10[2]; + u8 fill14[0x20 - 0x18]; + u32 unk20; + u32 unk24; + struct UnkTextStruct2 unk28[4]; + u32 unk88; + u32 unk8C; + u32 unk90; +}; +extern struct unkStruct_203B230 *gUnknown_203B230; + +extern u8 gAvailablePokemonNames[0x58]; +extern u8 gUnknown_80DBA4C[]; + +extern void sub_8008C54(u32); +extern void sub_80073E0(u32); +extern void sub_80073B8(u32); +extern void sub_8014FF0(u32, u32, u8 *, u32, u32); +extern void PlayMenuSoundEffect(u32); +extern void sub_8013F84(void); +extern u32 sub_8012A64(u32 *, u32); +extern s32 sub_80913E0(struct unkStruct_41C *, u32, struct subStruct_203B240 **); + +extern void sub_801317C(u32 *); +extern void sub_80140B4(struct UnkTextStruct2 *); +extern void sub_801B46C(u32); +extern void ResetSprites(u32); + +void sub_801B51C(); +void sub_801B590(); +void sub_801B480(); + + +u32 sub_801B3C0(struct unkStruct_41C *param_1) +{ + ResetSprites(1); + gUnknown_203B230 = MemoryAlloc(sizeof(struct unkStruct_203B230),8); + gUnknown_203B230->unk4 = *param_1; + sub_801317C(&gUnknown_203B230->unk88); + gUnknown_203B230->unk24 = 0; + sub_80140B4(gUnknown_203B230->unk28); + ResetUnusedInputStruct(); + sub_800641C(gUnknown_203B230->unk28,1,1); + sub_801B46C(0); + return 1; +} + +u32 sub_801B410(void) +{ + switch(gUnknown_203B230->state) + { + case 0: + sub_801B51C(); + break; + case 1: + sub_801B590(); + break; + case 3: + return 3; + case 2: + default: + return 2; + } + return 0; +} + +void sub_801B450(void) +{ + if(gUnknown_203B230 != NULL) + { + MemoryFree(gUnknown_203B230); + gUnknown_203B230 = NULL; + } +} + +void sub_801B46C(u32 newState) +{ + gUnknown_203B230->state = newState; + sub_801B480(); +} + +void sub_801B480(void) +{ + struct subStruct_203B240 *preload; + switch(gUnknown_203B230->state) + { + case 0: + sub_8008C54(gUnknown_203B230->unk24); + gUnknown_203B230->unkC = sub_80913E0(&gUnknown_203B230->unk4, gUnknown_203B230->unk24, gUnknown_203B230->unk10); + gUnknown_203B230->unk20 = 0; + break; + case 1: + sub_8008C54(gUnknown_203B230->unk24); + sub_80073B8(gUnknown_203B230->unk24); + preload = gUnknown_203B230->unk10[gUnknown_203B230->unk8]; + strcpy(gAvailablePokemonNames, preload->unk0); + sub_8014FF0(16, 0, gUnknown_80DBA4C, gUnknown_203B230->unk24, 0); // $m0 + sub_8014FF0(4, 16, gUnknown_203B230->unk10[gUnknown_203B230->unk8]->unk4, gUnknown_203B230->unk24, 0); + sub_80073E0(gUnknown_203B230->unk24); + break; + case 2: + default: + break; + } +} + +void sub_801B51C(void) +{ + if(gUnknown_203B230->unkC != 0) + { + if(gUnknown_203B230->unk20 & 8) + sub_8013F84(); + gUnknown_203B230->unk20++; + } + switch(sub_8012A64(&gUnknown_203B230->unk88, gUnknown_203B230->unk24)) + { + case 1: + PlayMenuSoundEffect(0); + if(gUnknown_203B230->unkC != 0) + { + gUnknown_203B230->unk8 = 0; + sub_801B46C(1); + } + else + sub_801B46C(3); + break; + case 2: + PlayMenuSoundEffect(1); + sub_801B46C(2); + break; + default: + break; + } +} + +void sub_801B590(void) +{ + + if (gUnknown_203B230->unk8 < (gUnknown_203B230->unkC - 1)) { + if ((gUnknown_203B230->unk20 & 8)) { + sub_8013F84(); + } + gUnknown_203B230->unk20++; + } + switch(sub_8012A64(&gUnknown_203B230->unk88,gUnknown_203B230->unk24)) + { + case 1: + PlayMenuSoundEffect(0); + gUnknown_203B230->unk8++; + if (gUnknown_203B230->unk8 < gUnknown_203B230->unkC) { + sub_801B46C(1); + } + else { + sub_801B46C(0); + } + break; + case 2: + PlayMenuSoundEffect(1); + sub_801B46C(2); + break; + } +} diff --git a/src/code_801C620.c b/src/code_801C620.c index c2c2c44..8272340 100644 --- a/src/code_801C620.c +++ b/src/code_801C620.c @@ -12,7 +12,7 @@ struct subStruct_203B240 struct unkStruct_203B240 { // size: 0x94 - s32 unk0; + s32 state; u8 unk4; u8 fill5[3]; s32 unk8; @@ -72,7 +72,7 @@ u32 sub_801C620(u8 param_1) u32 sub_801C674(void) { - switch(gUnknown_203B240->unk0) + switch(gUnknown_203B240->state) { case 0: sub_801C7D4(); @@ -98,9 +98,9 @@ void sub_801C6B4(void) } } -void sub_801C6D0(s32 unk0) +void sub_801C6D0(s32 newState) { - gUnknown_203B240->unk0 = unk0; + gUnknown_203B240->state = newState; sub_801C6E4(); } @@ -109,7 +109,7 @@ void sub_801C6E4(void) char *skillName; struct subStruct_203B240 *preload; - switch(gUnknown_203B240->unk0) + switch(gUnknown_203B240->state) { case 0: sub_8008C54(gUnknown_203B240->unk24); @@ -139,9 +139,8 @@ void sub_801C6E4(void) void sub_801C7D4(void) { - if (gUnknown_203B240->unkC != 0) { - if ((gUnknown_203B240->unk20 & 8) != 0) { + if ((gUnknown_203B240->unk20 & 8)) { sub_8013F84(); } gUnknown_203B240->unk20++; @@ -169,7 +168,7 @@ void sub_801C848(void) { if (gUnknown_203B240->unk8 < (gUnknown_203B240->unkC - 1)) { - if ((gUnknown_203B240->unk20 & 8) != 0) { + if ((gUnknown_203B240->unk20 & 8)) { sub_8013F84(); } gUnknown_203B240->unk20++; diff --git a/src/code_801D760.c b/src/code_801D760.c index 3b07d05..db034a7 100644 --- a/src/code_801D760.c +++ b/src/code_801D760.c @@ -1,10 +1,12 @@ #include "global.h" +#include "friend_area.h" #include "constants/friend_area.h" #include "file_system.h" #include "gUnknown_203B460.h" #include "memory.h" #include "input.h" #include "text.h" +#include "rescue_team_info.h" struct unkStruct_203B258 { @@ -57,10 +59,6 @@ extern const char *sub_8098FB4(); extern void xxx_format_string(const char *, u8 *, u32 **, u32); extern s32 sub_8008ED0(u8 *); extern void xxx_call_draw_string(s32 size, u32, u8 *, u32, u32); -extern const char *GetFriendAreaName(u8); -extern u8 GetRescueTeamRank(); -extern const char *GetTeamRankString(u8); -extern s32 GetTeamRankPts(); extern void sub_8008C54(u32); extern void sub_80073B8(u32); extern void sub_80073E0(u32); diff --git a/src/code_80521D0_1.c b/src/code_80521D0_1.c index 2abbf88..bb0d928 100644 --- a/src/code_80521D0_1.c +++ b/src/code_80521D0_1.c @@ -1,5 +1,4 @@ #include "global.h" -#include "constants/species.h" #include "gUnknown_203B418.h" #include "code_8041D5C.h" #include "friend_area.h" diff --git a/src/code_8057824_1.c b/src/code_8057824_1.c index 4138da4..0337dce 100644 --- a/src/code_8057824_1.c +++ b/src/code_8057824_1.c @@ -1,7 +1,6 @@ #include "global.h" #include "gUnknown_203B418.h" #include "code_8041D5C.h" -#include "constants/species.h" #include "pokemon.h" extern struct unkStruct_203B418 *gUnknown_203B418; diff --git a/src/code_80958E8.c b/src/code_80958E8.c new file mode 100644 index 0000000..462b408 --- /dev/null +++ b/src/code_80958E8.c @@ -0,0 +1,178 @@ +#include "global.h" +#include "memory.h" +#include "friend_area.h" +#include "constants/friend_area.h" +#include "wonder_mail.h" +#include "constants/wonder_mail.h" + +struct subStruct_203B490 +{ + // size: 0xC + u8 unk0; + u8 unk1; + u8 fill2[2]; + u32 unk4; + u32 unk8; +}; + + +struct unkStruct_203B490 +{ + // size: 0x330? + + u8 fill0[0x190]; + u8 unk190[0x28]; + u8 unk1B8[0x78]; + struct subStruct_203B490 unk230[16]; + u8 unk2F0[0x38]; + u8 unk328; +}; + + +extern u8 sub_809095C(u8); +extern s32 sub_8090298(u8); +extern u8 sub_809017C(u8 *); +extern s16 sub_808E770(s16); +extern u8 sub_8092040(u8); +extern u8 sub_803C1D0(u8 *, u8); +extern u8 sub_8090A60(u8); +extern u8 sub_8091524(u8); +extern u8 sub_8091E60(u8 ,u8 ); +extern u32 GetMaxItemCount(u8); +extern u8 sub_803C0DC(s16); +extern void sub_8096040(u8); +extern void sub_80965B8(u8); +extern void sub_8096C3C(u8); +extern bool8 ValidateWonderMail(struct WonderMail *); + +extern struct unkStruct_203B490 *gUnknown_203B490; +extern struct unkStruct_203B490 gUnknown_2039448; + +void sub_80958E8() +{ + gUnknown_203B490 = &gUnknown_2039448; +} + +struct unkStruct_203B490 *sub_80958F8(void) +{ + return &gUnknown_2039448; +} + +void sub_8095900(void) +{ + s32 iVar2; + for(iVar2 = 0; iVar2 < 4; iVar2++) + { + sub_8096040(iVar2); + } + for(iVar2 = 0; iVar2 < 8; iVar2++) + { + sub_80965B8(iVar2); + } + for(iVar2 = 0; iVar2 < 8; iVar2++) + { + sub_8096C3C(iVar2); + } + for(iVar2 = 0; iVar2 < 0x38; iVar2++) + { + gUnknown_203B490->unk2F0[iVar2] = 0; + } + gUnknown_203B490->unk328 = 0; + MemoryClear8(gUnknown_203B490->unk190, sizeof(gUnknown_203B490->unk190)); + MemoryClear8(gUnknown_203B490->unk1B8, sizeof(gUnknown_203B490->unk1B8)); + for(iVar2 = 0; iVar2 < 16; iVar2++) + { + gUnknown_203B490->unk230[iVar2].unk0 = 0x63; + gUnknown_203B490->unk230[iVar2].unk1 = 1; + gUnknown_203B490->unk230[iVar2].unk4 = 0; + gUnknown_203B490->unk230[iVar2].unk8 = 0; + } +} + +bool8 IsValidWonderMail(struct WonderMail *WonderMailData) +{ + // Has to equal 5 for Wonder Mail + // https://web.archive.org/web/20080913124416/http://www.upokecenter.com/games/dungeon/guides/passwords.html + // + if(WonderMailData->mailType != 5) + { + return FALSE; + } + else + { + return ValidateWonderMail(WonderMailData); + } +} + +bool8 ValidateWonderMail(struct WonderMail *data) +{ + + if(data->missionType > DELIVER_ITEM) + return FALSE; + else + { + if(data->missionType == DELIVER_ITEM && GetMaxItemCount(data->dungeon) == 0) + return FALSE; + + if(data->unk2 > 9) + return FALSE; + + if(sub_809095C(data->dungeon) != 0) + return FALSE; + if(data->floor >= sub_8090298(data->dungeon)) + return FALSE; + if(sub_809017C(&(data->dungeon)) != 0) + return FALSE; + + if(data->clientPoke == SPECIES_NONE) + return FALSE; + if(data->clientPoke > SPECIES_RAYQUAZA_CUTSCENE) + return FALSE; + if(data->clientPoke != sub_808E770(data->clientPoke)) + return FALSE; + if(sub_803C0DC(data->clientPoke) == 0) + return FALSE; + + if(data->targetPoke > SPECIES_RAYQUAZA_CUTSCENE) + return FALSE; + if(data->targetPoke != sub_808E770(data->targetPoke)) + return FALSE; + if(sub_803C0DC(data->targetPoke) == 0) + return FALSE; + + // Item Delivery/Finding + if((u8)(data->missionType - 1) > FIND_POKE) + if(data->targetPoke != data->clientPoke) + return FALSE; + + if(sub_8092040(data->targetItem) != 0) + return FALSE; + if(sub_8090A60(data->targetItem) != 0) + return FALSE; + if(sub_8091524(data->targetItem) == 0) + return FALSE; + + // Item finding + if(data->missionType == FIND_ITEM && sub_8091E60(data->dungeon, data->targetItem) == 0) + return FALSE; + + if(data->rewardType == BLANK_4 || data->rewardType == END_REWARDS || data->rewardType > END_REWARDS) + return FALSE; + + if(sub_8092040(data->itemReward) != 0) + return FALSE; + + // Friend Area Reward + if(data->friendAreaReward > FINAL_ISLAND) + return FALSE; + + if(data->rewardType == FRIEND_AREA) + { + if(GetFriendAreaUnlockCondition(data->friendAreaReward) != UNLOCK_WONDER_MAIL) + return FALSE; + if(sub_803C1D0(&(data->dungeon), data->missionType) == 0) + return FALSE; + } + return TRUE; + } +} diff --git a/src/ds_menus.c b/src/ds_menus.c index 29100b6..7d7bc27 100644 --- a/src/ds_menus.c +++ b/src/ds_menus.c @@ -6,7 +6,7 @@ extern u8 *gUnknown_203B3E8; extern void nullsub_54(); extern void sub_8039E18(); -void sub_803A1C0(u8 r0) +void SetWonderMailMainMenuState(u8 r0) { *gUnknown_203B3E8 = r0; nullsub_54(); diff --git a/src/event_flag.c b/src/event_flag.c index 97a01d0..41552b3 100644 --- a/src/event_flag.c +++ b/src/event_flag.c @@ -9,6 +9,7 @@ extern u8 sub_8002658(s16); struct unkEventStruct { + // size: 0x4 s16 unk0; u8 unk2; // Seems like friend area number }; diff --git a/src/exclusive_pokemon.c b/src/exclusive_pokemon.c index 903b189..1e1effc 100644 --- a/src/exclusive_pokemon.c +++ b/src/exclusive_pokemon.c @@ -1,5 +1,4 @@ #include "global.h" -#include "constants/species.h" #include "exclusive_pokemon.h" const struct ExclusivePokemon gExclusivePokemon[NUM_EXCLUSIVE_POKEMON] = { diff --git a/src/felicity_bank.c b/src/felicity_bank.c index 28550dd..727c957 100644 --- a/src/felicity_bank.c +++ b/src/felicity_bank.c @@ -2,7 +2,6 @@ #include "pokemon.h" #include "file_system.h" #include "input.h" -#include "constants/species.h" #include "felicity_bank.h" #include "memory.h" diff --git a/src/friend_rescue.c b/src/friend_rescue.c index ef1d729..73e937e 100644 --- a/src/friend_rescue.c +++ b/src/friend_rescue.c @@ -1,7 +1,6 @@ #include "global.h" #include "friend_rescue.h" #include "pokemon.h" -#include "constants/species.h" #include "memory.h" #include "text.h" diff --git a/src/friend_rescue_1.c b/src/friend_rescue_1.c index 94baab3..7c0509a 100644 --- a/src/friend_rescue_1.c +++ b/src/friend_rescue_1.c @@ -1,7 +1,6 @@ #include "global.h" #include "friend_rescue.h" #include "pokemon.h" -#include "constants/species.h" extern void sub_80338C4(u32); extern s32 sub_80144A4(s32 *); diff --git a/src/gulpin_shop.c b/src/gulpin_shop.c index 810a191..43dc94b 100644 --- a/src/gulpin_shop.c +++ b/src/gulpin_shop.c @@ -2,7 +2,6 @@ #include "file_system.h" #include "pokemon.h" #include "memory.h" -#include "constants/species.h" #include "text.h" #include "input.h" diff --git a/src/items.c b/src/items.c index d6128f5..2c7dd90 100644 --- a/src/items.c +++ b/src/items.c @@ -16,7 +16,7 @@ extern void sub_8091840(u8); extern u8 GetItemType(u8); extern u32 GetItemUnkThrow(u8, u32); extern s32 sub_80915D4(struct ItemStruct_203B460 *); -extern u8 sub_80914E4(u8); +extern bool8 sub_80914E4(u8); extern void sub_8090F58(u32, u8 *, struct ItemStruct_203B460 *, u32); void LoadItemParameters(void) @@ -230,7 +230,7 @@ s32 sub_8090C30(struct ItemStruct_203B460 *param_1) s32 sub_8090C7C(struct ItemStruct_203B460 *param_1) { - if (sub_80914E4(param_1->itemIndex) == 0) { + if (!sub_80914E4(param_1->itemIndex)) { return 0; } else { @@ -245,7 +245,7 @@ s32 sub_8090C7C(struct ItemStruct_203B460 *param_1) s32 sub_8090CCC(struct ItemStruct_203B460 *param_1) { - if (sub_80914E4(param_1->itemIndex) == 0) { + if (!sub_80914E4(param_1->itemIndex)) { return 0; } else { diff --git a/src/kangaskhan_storage.c b/src/kangaskhan_storage.c index f77d129..e23fe89 100644 --- a/src/kangaskhan_storage.c +++ b/src/kangaskhan_storage.c @@ -2,7 +2,6 @@ #include "file_system.h" #include "pokemon.h" #include "input.h" -#include "constants/species.h" #include "kangaskhan_storage.h" #include "memory.h" diff --git a/src/kangaskhan_storage_1.c b/src/kangaskhan_storage_1.c index 25cc2a6..61bcf08 100644 --- a/src/kangaskhan_storage_1.c +++ b/src/kangaskhan_storage_1.c @@ -2,7 +2,6 @@ #include "file_system.h" #include "pokemon.h" #include "input.h" -#include "constants/species.h" #include "kangaskhan_storage.h" extern struct unkStruct_203B208 *gUnknown_203B208; diff --git a/src/kecleon_items.c b/src/kecleon_items.c index f1f2806..da049a2 100644 --- a/src/kecleon_items.c +++ b/src/kecleon_items.c @@ -1,7 +1,6 @@ #include "global.h" #include "file_system.h" #include "pokemon.h" -#include "constants/species.h" #include "input.h" #include "kecleon_items.h" #include "memory.h" @@ -28,7 +27,7 @@ extern void sub_8019D30(); extern void sub_8019D4C(); extern void sub_8019D68(); extern void sub_8018D30(); -extern void sub_8018E88(); +extern void UpdateKecleonStoreDialogue(); u32 DisplayKeckleonDialogueSprite(u32 param_1) { @@ -43,7 +42,7 @@ u32 DisplayKeckleonDialogueSprite(u32 param_1) switch(param_1) { case 0: - gUnknown_203B210->unk4 = 1; + gUnknown_203B210->unk4 = TRUE; gUnknown_203B210->unkE4 = &gUnknown_203B210->faceFile; CopyYellowSpeciesNametoBuffer(gUnknown_202E5D8, SPECIES_KECLEON); CopyYellowSpeciesNametoBuffer(gUnknown_202E1C8, SPECIES_KECLEON); @@ -51,15 +50,15 @@ u32 DisplayKeckleonDialogueSprite(u32 param_1) strcpy(gUnknown_202E1C8 - 0x50, monName); break; case 1: - gUnknown_203B210->unk4 = 1; - gUnknown_203B210->unkE4 = 0; + gUnknown_203B210->unk4 = TRUE; + gUnknown_203B210->unkE4 = NULL; CopyYellowSpeciesNametoBuffer(gUnknown_202E5D8, SPECIES_KECLEON); CopyYellowSpeciesNametoBuffer(gUnknown_202E1C8, SPECIES_KECLEON); monName = GetMonSpecies( SPECIES_KECLEON); strcpy(gUnknown_202E1C8 - 0x50, monName); break; case 2: - gUnknown_203B210->unk4 = 0; + gUnknown_203B210->unk4 = FALSE; gUnknown_203B210->unkE4 = &gUnknown_203B210->faceFile; CopyYellowSpeciesNametoBuffer(gUnknown_202E5D8, SPECIES_KECLEON); CopyYellowSpeciesNametoBuffer(gUnknown_202E1C8, SPECIES_KECLEON); @@ -67,8 +66,8 @@ u32 DisplayKeckleonDialogueSprite(u32 param_1) strcpy(gUnknown_202E1C8 - 0x50, monName); break; case 3: - gUnknown_203B210->unk4 = 0; - gUnknown_203B210->unkE4 = 0; + gUnknown_203B210->unk4 = FALSE; + gUnknown_203B210->unkE4 = NULL; CopyYellowSpeciesNametoBuffer(gUnknown_202E5D8, SPECIES_KECLEON); CopyYellowSpeciesNametoBuffer(gUnknown_202E1C8, SPECIES_KECLEON); monName = GetMonSpecies( SPECIES_KECLEON); @@ -148,7 +147,7 @@ void UpdateKecleonStoreState(u32 newState) { gUnknown_203B210->currState = newState; sub_8018D30(); - sub_8018E88(); + UpdateKecleonStoreDialogue(); } void sub_8018D30(void) diff --git a/src/kecleon_items_1.c b/src/kecleon_items_1.c index 0db9bb3..0746f3b 100644 --- a/src/kecleon_items_1.c +++ b/src/kecleon_items_1.c @@ -1,7 +1,6 @@ #include "global.h" #include "file_system.h" #include "pokemon.h" -#include "constants/species.h" #include "input.h" #include "kecleon_items.h" #include "gUnknown_203B460.h" @@ -10,7 +9,7 @@ extern struct unkStruct_203B210 *gUnknown_203B210; extern struct unkStruct_203B460 *gUnknown_203B460; extern u32 sub_8090CCC(struct ItemStruct_203B460 *); -extern u8 sub_80914E4(u8); +extern bool8 sub_80914E4(u8); extern u32 sub_8091814(void); extern u32 sub_8091A48(void); extern s32 sub_80144A4(s32 *); @@ -37,13 +36,13 @@ void sub_8019B08(void) case 3: gUnknown_203B210->unk24 = sub_801A8AC(); gUnknown_203B210->unk1C = gUnknown_203B460->fill0[gUnknown_203B210->unk24]; - gUnknown_203B210->unk10 = sub_8090CCC(&gUnknown_203B210->unk1C); + gUnknown_203B210->itemSellPrice = sub_8090CCC(&gUnknown_203B210->unk1C); UpdateKecleonStoreState(0x1c); break; case 4: gUnknown_203B210->unk24 = sub_801A8AC(); gUnknown_203B210->unk1C = gUnknown_203B460->fill0[gUnknown_203B210->unk24]; - gUnknown_203B210->unk10 = sub_8090CCC(&gUnknown_203B210->unk1C); + gUnknown_203B210->itemSellPrice = sub_8090CCC(&gUnknown_203B210->unk1C); sub_8099690(0); UpdateKecleonStoreState(0x1d); break; @@ -63,7 +62,7 @@ void sub_8019BBC(void) int menuAction; menuAction = 0; - if (gUnknown_203B210->unk4 != 0) { + if (gUnknown_203B210->unk4) { sub_8019EDC(0); } else { @@ -77,13 +76,11 @@ void sub_8019BBC(void) if (gUnknown_203B460->teamMoney == 0) { UpdateKecleonStoreState(0x6); } + else if (gUnknown_203B210->itemSellPrice > gUnknown_203B460->teamMoney) { + UpdateKecleonStoreState(0xC); + } else { - if (gUnknown_203B210->unk10 > gUnknown_203B460->teamMoney) { - UpdateKecleonStoreState(0xC); - } - else { - UpdateKecleonStoreState(0x16); - } + UpdateKecleonStoreState(0x16); } break; case 7: @@ -107,17 +104,14 @@ void sub_8019C78(void) switch(menuAction){ case 3: sub_8099690(0); - if (sub_80914E4(gUnknown_203B210->unk1C.itemIndex) == '\0') { + if (!sub_80914E4(gUnknown_203B210->unk1C.itemIndex)) { UpdateKecleonStoreState(0xd); } + else if (gUnknown_203B210->itemSellPrice + gUnknown_203B460->teamMoney > 99999) { + UpdateKecleonStoreState(0xe); + } else { - if (gUnknown_203B210->unk10 + gUnknown_203B460->teamMoney > 99999) { - UpdateKecleonStoreState(0xe); - - } - else { - UpdateKecleonStoreState(0x1e); - } + UpdateKecleonStoreState(0x1e); } break; case 7: @@ -172,7 +166,7 @@ void sub_8019D68(void) u32 sub_8019D8C(void) { - if(gUnknown_203B210->unk4 != 0) + if(gUnknown_203B210->unk4) { return sub_8091814(); } @@ -190,22 +184,20 @@ void sub_8019DAC(void) gUnknown_203B210->unk14 = 0; gUnknown_203B210->unk18 = 0; - iVar5 = 0; - do { + for(iVar5 = 0; iVar5 < 0x14; iVar5++){ pbVar4 = &gUnknown_203B460->fill0[iVar5]; - if (((pbVar4->unk0 & 1) != 0) && (sub_80914E4(pbVar4->itemIndex) != 0)) { + if (((pbVar4->unk0 & 1) != 0) && (sub_80914E4(pbVar4->itemIndex))) { iVar3 = sub_8090CCC(pbVar4); gUnknown_203B210->unk18 += iVar3; gUnknown_203B210->unk14++; } - iVar5 = iVar5 + 1; - } while (iVar5 < 0x14); + } } void sub_8019E04(int param_1) { - if (gUnknown_203B210->unk4 != 0) { + if (gUnknown_203B210->unk4) { if (param_1 == 1) gUnknown_203B210->unkE0 = 1; else diff --git a/src/makuhita_dojo.c b/src/makuhita_dojo.c index b01e1a6..1e061da 100644 --- a/src/makuhita_dojo.c +++ b/src/makuhita_dojo.c @@ -2,7 +2,6 @@ #include "file_system.h" #include "pokemon.h" #include "input.h" -#include "constants/species.h" #include "memory.h" #include "text.h" diff --git a/src/personality_test.c b/src/personality_test.c index 1ec55e2..5272c88 100644 --- a/src/personality_test.c +++ b/src/personality_test.c @@ -1,7 +1,6 @@ #include "global.h" #include "personality_test.h" #include "constants/emotions.h" -#include "constants/species.h" #include "random.h" #include "file_system.h" #include "pokemon.h" diff --git a/src/pokemon.c b/src/pokemon.c index 2499e11..263e482 100644 --- a/src/pokemon.c +++ b/src/pokemon.c @@ -1,7 +1,6 @@ #include "global.h" #include "pokemon.h" #include "file_system.h" -#include "constants/species.h" extern struct FileArchive gSystemFileArchive; extern const char gUnknown_81075F4; diff --git a/src/code_808EAB0.c b/src/pokemon_3.c index fd03834..fd03834 100644 --- a/src/code_808EAB0.c +++ b/src/pokemon_3.c diff --git a/src/pokemon_mid.c b/src/pokemon_mid.c index 9653217..d5ae74a 100644 --- a/src/pokemon_mid.c +++ b/src/pokemon_mid.c @@ -1,6 +1,5 @@ #include "global.h" #include "pokemon.h" -#include "constants/species.h" extern struct gPokemon *gMonsterParameters; extern const char gUnknown_8107600[]; diff --git a/src/post_office_guide.c b/src/post_office_guide.c index 2c0f1d6..8fbfe56 100644 --- a/src/post_office_guide.c +++ b/src/post_office_guide.c @@ -2,7 +2,6 @@ #include "pokemon.h" #include "file_system.h" #include "input.h" -#include "constants/species.h" #include "menu.h" #include "memory.h" #include "text.h" @@ -62,14 +61,51 @@ extern const char Delivery_Text[]; extern const char BulletinBoard_Text[]; extern const char PostOffice_Text[]; +enum PostOfficeStates +{ + EXIT_POST_OFFICE_MENU, + IM_GUIDE_START_MENU, + ANYTHING_ELSE_START_MENU, + RETURN_TO_START_MENU, + DISPLAY_FRIEND_RESCUE_MENU, + RETURN_TO_FRIEND_RESCUE, + DISPLAY_GO_RESCUE_MENU, + RETURN_TO_GO_RESCUE, + DISPLAY_GET_HELP_MENU, + RETURN_TO_GET_HELP, +}; + +enum PostOfficeMenuActions +{ + POST_OFFICE, + BULLETIN_BOARD, + DELIVERY, + FRIEND_RESCUE, + CANCEL, + EXIT, + FRIEND_RESCUE_INFO, + GO_RESCUE, + GET_HELP_MENU, + DELETING_MAIL, + RESCUE_PROCEDURES, + RECEIVE_SOS_MAIL, + LEAVE_FOR_RESCUE, + SEND_AOK_MAIL, + GET_THANK_YOU_MAIL, + GETTING_HELP, + SEND_SOS_MAIL, + RECEIVE_AOK_MAIL, + SEND_THANK_YOU_MAIL +}; + const struct MenuItem gPostOfficeHelpStartMenu[] = { - {PostOffice_Text, 0x0}, - {BulletinBoard_Text, 0x1}, - {Delivery_Text, 0x2}, - {FriendRescue_80E0A80,0x3}, - {Cancel_80E0A78,0x4}, - {NULL,0x5} + {PostOffice_Text, POST_OFFICE}, + {BulletinBoard_Text, BULLETIN_BOARD}, + {Delivery_Text, DELIVERY}, + {FriendRescue_80E0A80, FRIEND_RESCUE}, + {Cancel_80E0A78, CANCEL}, + {NULL, EXIT} }; ALIGNED(4) const char Cancel_80E0A78[] = _("Cancel"); @@ -80,12 +116,12 @@ ALIGNED(4) const char PostOffice_Text[] = _("Post Office"); const struct MenuItem gPostOfficeHelpFriendRescueMenu[] = { - {FriendRescueInfo_Text, 0x6}, - {GoRescue_Text, 0x7}, - {GetHelp_Text, 0x8}, - {DeletingMailInfo_Text,0x9}, - {Exit_80EA0EC,0x5}, - {NULL,0x5} + {FriendRescueInfo_Text, FRIEND_RESCUE_INFO}, + {GoRescue_Text, GO_RESCUE}, + {GetHelp_Text, GET_HELP_MENU}, + {DeletingMailInfo_Text, DELETING_MAIL}, + {Exit_80EA0EC, EXIT}, + {NULL, EXIT} }; ALIGNED(4) const char Exit_80EA0EC[] = _("Exit"); @@ -97,13 +133,13 @@ ALIGNED(4) const char FriendRescueInfo_Text[] = _("Friend Rescue Info"); const struct MenuItem gPostOfficeHelpGoRescueMenu[] = { - {RescueProcedures_Text, 0xA}, - {ReceiveSOSMail_Text, 0xB}, - {LeaveForRescue_Text, 0xC}, - {SendAOKMail_Text, 0xD}, - {GetThankYouMail_Text,0xE}, - {Exit_80EA0EC,0x5}, - {NULL,0x5} + {RescueProcedures_Text, RESCUE_PROCEDURES}, + {ReceiveSOSMail_Text, RECEIVE_SOS_MAIL}, + {LeaveForRescue_Text, LEAVE_FOR_RESCUE}, + {SendAOKMail_Text, SEND_AOK_MAIL}, + {GetThankYouMail_Text, GET_THANK_YOU_MAIL}, + {Exit_80EA0EC, EXIT}, + {NULL, EXIT} }; ALIGNED(4) const char GetThankYouMail_Text[] = _("Get Thank-You Mail"); @@ -115,12 +151,12 @@ ALIGNED(4) const char RescueProcedures_Text[] = _("Rescue Procedures"); const struct MenuItem gPostOfficeHelpGetHelpMenu[] = { - {GettingHelp_Text, 0xF}, - {SendSOSMail_Text, 0x10}, - {ReceiveAOKMail_Text, 0x11}, - {SendThankYouMail_Text,0x12}, - {Exit_80EA0EC,0x5}, - {NULL,0x5} + {GettingHelp_Text, GETTING_HELP}, + {SendSOSMail_Text, SEND_SOS_MAIL}, + {ReceiveAOKMail_Text, RECEIVE_AOK_MAIL}, + {SendThankYouMail_Text, SEND_THANK_YOU_MAIL}, + {Exit_80EA0EC, EXIT}, + {NULL, EXIT} }; ALIGNED(4) const char SendThankYouMail_Text[] = _("Send Thank-You Mail"); @@ -168,13 +204,13 @@ extern void sub_801317C(void *); void UpdateHelperPelipperState(u8); void HandlePostOfficeHelpStartMenuSelection(); -void sub_8031848(); +void ReturnToPostOfficeStartMenu(); extern void HandlePostOfficeHelpFriendRescueMenuSelection(); -extern void sub_80318D0(); +extern void ReturnToFriendRescueMenu(); extern void HandlePostOfficeHelpGoRescueMenuSelection(); -extern void sub_803192C(); +extern void ReturntoGoRescueMenu(); extern void HandlePostOfficeHelpGetHelpMenuSelection(); -extern void sub_8031988(); +extern void ReturnToGetHelpMenu(); extern s32 sub_80144A4(s32 *); extern s32 sub_80969D0(u8); extern void sub_8012D08(struct UnkTextStruct2 *, s32); @@ -208,40 +244,40 @@ u32 CreateHelperPelipperMenu(s16 speciesID) } } gPostOfficeHelper->currMenuChoice = 0; - UpdateHelperPelipperState(1); + UpdateHelperPelipperState(IM_GUIDE_START_MENU); return 1; } -u32 sub_8031540(void) +u32 HelperPelliperCallback(void) { switch(gPostOfficeHelper->state) { - case 1: - case 2: + case IM_GUIDE_START_MENU: + case ANYTHING_ELSE_START_MENU: HandlePostOfficeHelpStartMenuSelection(); break; - case 3: - sub_8031848(); + case RETURN_TO_START_MENU: + ReturnToPostOfficeStartMenu(); break; - case 4: + case DISPLAY_FRIEND_RESCUE_MENU: HandlePostOfficeHelpFriendRescueMenuSelection(); break; - case 5: - sub_80318D0(); + case RETURN_TO_FRIEND_RESCUE: + ReturnToFriendRescueMenu(); break; - case 6: + case DISPLAY_GO_RESCUE_MENU: HandlePostOfficeHelpGoRescueMenuSelection(); break; - case 7: - sub_803192C(); + case RETURN_TO_GO_RESCUE: + ReturntoGoRescueMenu(); break; - case 0: + case EXIT_POST_OFFICE_MENU: return 3; - case 8: + case DISPLAY_GET_HELP_MENU: HandlePostOfficeHelpGetHelpMenuSelection(); break; - case 9: - sub_8031988(); + case RETURN_TO_GET_HELP: + ReturnToGetHelpMenu(); break; } return 0; @@ -271,85 +307,85 @@ void UpdateHelperPelipperText(void) switch(gPostOfficeHelper->state) { - case 8: + case DISPLAY_GET_HELP_MENU: sub_8014248(gWhatdYouWantToKnow, 0, gPostOfficeHelper->currMenuChoice, gPostOfficeHelpGetHelpMenu, 0, 4, 0, faceFile, 0xC); break; - case 9: + case RETURN_TO_GET_HELP: switch(gPostOfficeHelper->currMenuChoice) { - case 15: + case GETTING_HELP: sub_80141B4(gGettingHelpExplaination, 0, faceFile, 0x10d); break; - case 16: + case SEND_SOS_MAIL: sub_80141B4(gSendSOSMailExplaination, 0, faceFile, 0x10d); break; - case 17: + case RECEIVE_AOK_MAIL: sub_80141B4(gReceiveAOKMailExplaination, 0, faceFile, 0x10d); break; - case 18: + case SEND_THANK_YOU_MAIL: sub_80141B4(gSendThankYouMailExplaination, 0, faceFile, 0x10d); break; default: break; } break; - case 6: + case DISPLAY_GO_RESCUE_MENU: sub_8014248(gWhatdYouWantToKnow, 0, gPostOfficeHelper->currMenuChoice, gPostOfficeHelpGoRescueMenu, 0, 4, 0, faceFile, 0xC); break; - case 7: + case RETURN_TO_GO_RESCUE: switch(gPostOfficeHelper->currMenuChoice) { - case 10: + case RESCUE_PROCEDURES: sub_80141B4(gRescueProceduresExplaination, 0, faceFile, 0x10d); break; - case 11: + case RECEIVE_SOS_MAIL: sub_80141B4(gReceiveSOSMailExplaination, 0, faceFile, 0x10d); break; - case 13: + case SEND_AOK_MAIL: sub_80141B4(gSendAOKMailExplaination, 0, faceFile, 0x10d); break; - case 12: + case LEAVE_FOR_RESCUE: sub_80141B4(gLeaveForRescueExplaination, 0, faceFile, 0x10d); break; - case 14: + case GET_THANK_YOU_MAIL: sub_80141B4(gGetThankYouMailExplaination, 0, faceFile, 0x10d); break; default: break; } break; - case 1: + case IM_GUIDE_START_MENU: sub_8014248(gImYourGuide, 0, gPostOfficeHelper->currMenuChoice, gPostOfficeHelpStartMenu, 0, 4, 0, faceFile, 0xC); break; - case 2: + case ANYTHING_ELSE_START_MENU: sub_8014248(gAnythingElse, 0, gPostOfficeHelper->currMenuChoice, gPostOfficeHelpStartMenu, 0, 4, 0, faceFile, 0xC); break; - case 3: + case RETURN_TO_START_MENU: switch(gPostOfficeHelper->currMenuChoice) { - case 0: + case POST_OFFICE: sub_80141B4(gPostOfficeExplaination, 0, faceFile, 0x10d); break; - case 1: + case BULLETIN_BOARD: sub_80141B4(gBulletinBoardExplaination, 0, faceFile, 0x10d); break; - case 2: + case DELIVERY: sub_80141B4(gDeliveryExplaination, 0, faceFile, 0x10d); break; default: break; } break; - case 4: + case DISPLAY_FRIEND_RESCUE_MENU: sub_8014248(gWhatdYouWantToKnow, 0, gPostOfficeHelper->currMenuChoice, gPostOfficeHelpFriendRescueMenu, 0, 4, 0, faceFile, 0xC); break; - case 5: + case RETURN_TO_FRIEND_RESCUE: switch(gPostOfficeHelper->currMenuChoice) { - case 6: + case FRIEND_RESCUE_INFO: sub_80141B4(gFriendRescueExplaination, 0, faceFile, 0x10d); break; - case 9: + case DELETING_MAIL: sub_80141B4(gDeletingMailExplaination, 0, faceFile, 0x10d); break; default: @@ -375,30 +411,30 @@ void HandlePostOfficeHelpStartMenuSelection(void) { switch(chosenAction) { - case 4: - case 5: - UpdateHelperPelipperState(0); + case CANCEL: + case EXIT: + UpdateHelperPelipperState(EXIT_POST_OFFICE_MENU); break; - case 3: + case FRIEND_RESCUE: gPostOfficeHelper->currMenuChoice = chosenAction; - UpdateHelperPelipperState(4); + UpdateHelperPelipperState(DISPLAY_FRIEND_RESCUE_MENU); break; - case 0: - case 1: - case 2: + case POST_OFFICE: + case BULLETIN_BOARD: + case DELIVERY: gPostOfficeHelper->currMenuChoice = chosenAction; - UpdateHelperPelipperState(3); + UpdateHelperPelipperState(RETURN_TO_START_MENU); break; } } } -void sub_8031848(void) +void ReturnToPostOfficeStartMenu(void) { s32 temp; if(sub_80144A4(&temp) == 0) { - UpdateHelperPelipperState(2); + UpdateHelperPelipperState(ANYTHING_ELSE_START_MENU); } } @@ -409,30 +445,30 @@ void HandlePostOfficeHelpFriendRescueMenuSelection(void) { switch(chosenAction) { - case 5: - UpdateHelperPelipperState(2); + case EXIT: + UpdateHelperPelipperState(ANYTHING_ELSE_START_MENU); break; - case 7: - UpdateHelperPelipperState(6); + case GO_RESCUE: + UpdateHelperPelipperState(DISPLAY_GO_RESCUE_MENU); break; - case 8: - UpdateHelperPelipperState(8); + case GET_HELP_MENU: + UpdateHelperPelipperState(DISPLAY_GET_HELP_MENU); break; - case 6: - case 9: + case FRIEND_RESCUE_INFO: + case DELETING_MAIL: gPostOfficeHelper->currMenuChoice = chosenAction; - UpdateHelperPelipperState(5); + UpdateHelperPelipperState(RETURN_TO_FRIEND_RESCUE); break; } } } -void sub_80318D0(void) +void ReturnToFriendRescueMenu(void) { s32 temp; if(sub_80144A4(&temp) == 0) { - UpdateHelperPelipperState(4); + UpdateHelperPelipperState(DISPLAY_FRIEND_RESCUE_MENU); } } @@ -443,27 +479,27 @@ void HandlePostOfficeHelpGoRescueMenuSelection(void) { switch(chosenAction) { - case 5: - UpdateHelperPelipperState(4); + case EXIT: + UpdateHelperPelipperState(DISPLAY_FRIEND_RESCUE_MENU); break; - case 10: - case 11: - case 12: - case 13: - case 14: + case RESCUE_PROCEDURES: + case RECEIVE_SOS_MAIL: + case LEAVE_FOR_RESCUE: + case SEND_AOK_MAIL: + case GET_THANK_YOU_MAIL: gPostOfficeHelper->currMenuChoice = chosenAction; - UpdateHelperPelipperState(7); + UpdateHelperPelipperState(RETURN_TO_GO_RESCUE); break; } } } -void sub_803192C(void) +void ReturntoGoRescueMenu(void) { s32 temp; if(sub_80144A4(&temp) == 0) { - UpdateHelperPelipperState(6); + UpdateHelperPelipperState(DISPLAY_GO_RESCUE_MENU); } } @@ -474,26 +510,26 @@ void HandlePostOfficeHelpGetHelpMenuSelection(void) { switch(chosenAction) { - case 5: - UpdateHelperPelipperState(4); + case EXIT: + UpdateHelperPelipperState(DISPLAY_FRIEND_RESCUE_MENU); break; - case 15: - case 16: - case 17: - case 18: + case GETTING_HELP: + case SEND_SOS_MAIL: + case RECEIVE_AOK_MAIL: + case SEND_THANK_YOU_MAIL: gPostOfficeHelper->currMenuChoice = chosenAction; - UpdateHelperPelipperState(9); + UpdateHelperPelipperState(RETURN_TO_GET_HELP); break; } } } -void sub_8031988(void) +void ReturnToGetHelpMenu(void) { s32 temp; if(sub_80144A4(&temp) == 0) { - UpdateHelperPelipperState(8); + UpdateHelperPelipperState(DISPLAY_GET_HELP_MENU); } } @@ -503,7 +539,7 @@ u32 sub_80319A4(u8 param_1,u8 param_2,int param_3) gUnknown_203B330 = MemoryAlloc(0x78,8); gUnknown_203B330->unkC = param_1; gUnknown_203B330->unkD = param_2; - sub_801317C(gUnknown_203B330); + sub_801317C(&gUnknown_203B330->unk0); gUnknown_203B330->unk10 = param_3; gUnknown_203B330->unk14 = &gUnknown_203B330->unk18[param_3]; sub_8031A2C(); @@ -731,7 +731,7 @@ void PrepareSavePakWrite(s16 PokemonID) gSavePakWrite->pokeID = id_s32; gSavePakWrite->faceFile = NULL; gSavePakWrite->faceData = NULL; - if (PokemonID != 0) { + if (PokemonID != SPECIES_NONE) { file = GetDialogueSpriteDataPtr(PokemonID); gSavePakWrite->faceFile = file; gSavePakWrite->faceData = file->data; diff --git a/src/trade_items_menu.c b/src/trade_items_menu.c index d9cdc33..0e1d171 100644 --- a/src/trade_items_menu.c +++ b/src/trade_items_menu.c @@ -357,7 +357,7 @@ void TradeItem_SendItemConfirm(void) load -= gTradeItemsMenu->numItemsToSend; gUnknown_203B460->unk50[gTradeItemsMenu->chosenItem] = load; SetTradeItemMenu(TRADE_ITEMS_PREPARE_TRADE_SAVING); - PrepareSavePakWrite(0); + PrepareSavePakWrite(SPECIES_NONE); break; case 6: case 0: @@ -399,7 +399,7 @@ void sub_80368D4(void) { TradeItem_AddItem(); SetTradeItemMenu(0x11); - PrepareSavePakWrite(0); + PrepareSavePakWrite(SPECIES_NONE); } break; } @@ -438,7 +438,7 @@ void sub_8036950(void) // Link Failure TradeItem_AddItem(); // Add back the item SetTradeItemMenu(0xb); - PrepareSavePakWrite(0); + PrepareSavePakWrite(SPECIES_NONE); } else { PrintTradeItemsLinkError(gTradeItemsMenu->linkStatus); @@ -482,7 +482,7 @@ void sub_8036A34(void) if(sub_80144A4(&temp) == 0) { SetTradeItemMenu(0x10); - PrepareSavePakWrite(0); + PrepareSavePakWrite(SPECIES_NONE); } } diff --git a/src/wonder_mail.c b/src/wonder_mail.c index 05d3d03..770a1ff 100644 --- a/src/wonder_mail.c +++ b/src/wonder_mail.c @@ -2,13 +2,14 @@ #include "save.h" #include "pokemon.h" #include "file_system.h" -#include "constants/species.h" #include "wonder_mail.h" #include "memory.h" #include "text.h" +#include "gUnknown_203B460.h" extern struct WonderMailStruct_203B2C0 *gUnknown_203B2C0; extern struct WonderMailStruct_203B2C4 *gUnknown_203B2C4; +extern struct unkStruct_203B460 *gUnknown_203B460; struct unkStruct_8095228 { @@ -36,6 +37,8 @@ extern u8 sub_8030C20(u32); extern u32 sub_8031050(); extern void sub_80310B4(); extern u32 sub_8095350(); +extern u8 sub_801CF14(u32); +extern u32 sub_802F298(); extern struct unkStruct_8095228 *sub_8095228(u8); extern u8 sub_80A2824(u32); @@ -478,7 +481,7 @@ void sub_8028E84() } sub_8028B04(24); sub_8011C28(1); - PrepareSavePakWrite(0); + PrepareSavePakWrite(SPECIES_NONE); } void sub_8028EAC() @@ -522,15 +525,14 @@ void sub_8028F04() s32 temp; s32 counter; - if(sub_80144A4(&temp) != 0) - { - return; - } - for(counter = 0; counter <= 31; counter++) + if(sub_80144A4(&temp) == 0) { - sub_8095240(counter); + for(counter = 0; counter <= 31; counter++) + { + sub_8095240(counter); + } + sub_8028B04(21); } - sub_8028B04(21); } void sub_8028F30() @@ -543,7 +545,7 @@ void sub_8028F30() } sub_8028B04(22); sub_8011C28(1); - PrepareSavePakWrite(0); + PrepareSavePakWrite(SPECIES_NONE); } void sub_8028F58() @@ -839,7 +841,7 @@ void sub_8029374(void) } sub_8028B04(0x24); sub_8011C28(1); - PrepareSavePakWrite(0); + PrepareSavePakWrite(SPECIES_NONE); } void sub_802939C(void) @@ -1288,7 +1290,7 @@ void sub_8029AB0(void) } sub_8028B04(0x38); sub_8011C28(1); - PrepareSavePakWrite(0); + PrepareSavePakWrite(SPECIES_NONE); } void sub_8029AD8(void) @@ -1873,7 +1875,7 @@ void sub_802A4AC(void) { sub_802B2BC(0x18); sub_8011C28(1); - PrepareSavePakWrite(0); + PrepareSavePakWrite(SPECIES_NONE); } } @@ -1994,7 +1996,7 @@ void sub_802A6F0(void) if (sub_80144A4(&temp) == 0) { sub_802B2BC(0x18); sub_8011C28(1); - PrepareSavePakWrite(0); + PrepareSavePakWrite(SPECIES_NONE); } } @@ -2005,7 +2007,7 @@ void sub_802A718(void) if (sub_80144A4(&temp) == 0) { sub_802B2BC(0x25); sub_8011C28(1); - PrepareSavePakWrite(0); + PrepareSavePakWrite(SPECIES_NONE); } } @@ -2017,3 +2019,341 @@ void sub_802A740(void) sub_802B2BC(0x1e); } } + +void sub_802A75C(void) +{ + s32 temp; + if(sub_80144A4(&temp) == 0) + { + switch(temp) + { + case 7: + // NOTE: if statement is needed to match + if(gUnknown_203B2C4->unk538) + sub_802B2BC(0x16); + else + sub_802B2BC(0x16); + break; + case 0: + sub_802B2BC(1); + break; + } + } +} + +void sub_802A798(void) +{ + s32 temp; + struct unkStruct_8095228 *return_var; + if(sub_80144A4(&temp) == 0) + { + switch(temp) + { + case 7: + return_var = sub_8095228(gUnknown_203B2C4->unk218); + if(gUnknown_203B2C4->unk41C.unk41E != 0) + { + return_var->unk20 = gUnknown_203B2C4->unk41C; + } + gUnknown_203B460->unk50[gUnknown_203B2C4->unk41C.unk41E]--; + sub_802B2BC(0x29); + break; + case 8: + sub_802B2BC(0xB); + break; + case 0: + sub_802B2BC(1); + break; + } + } +} + +void sub_802A828(void) +{ + s32 temp; + if(sub_80144A4(&temp) == 0) + { + sub_802B2BC(0x2A); + sub_8011C28(1); + PrepareSavePakWrite(SPECIES_NONE); + } +} + +void sub_802A850(void) +{ + s32 temp; + if(sub_80144A4(&temp) == 0) + { + if(!WriteSavePak()) + { + FinishWriteSavePak(); + switch(gUnknown_203B2C4->unk534) + { + case 3: + case 4: + sub_802B2BC(0x1D); + break; + case 5: + sub_802B2BC(0x19); + break; + } + } + } +} + +void sub_802A8A0(void) +{ + s32 temp; + + if (sub_80144A4(&temp) == 0) { + sub_802B2BC(0x13); + } +} + +void sub_802A8BC(void) +{ + s32 temp; + if(sub_80144A4(&temp) == 0) + { + switch(temp) + { + case 0xA: + switch(gUnknown_203B2C4->unk534) + { + case 3: + case 4: + sub_802B2BC(0x1D); + break; + case 5: + sub_802B2BC(0x19); + break; + } + break; + case 0: + sub_802B2BC(1); + break; + } + } +} + +void sub_802A910(void) +{ + s32 temp; + if(sub_80144A4(&temp) == 0) + { + switch(temp) + { + case 9: + if(sub_801CF14(0) != 0) + { + sub_802B2BC(0xA); + } + else + { + sub_802B2BC(0xB); + } + break; + case 0xA: + switch(gUnknown_203B2C4->unk534) + { + case 3: + case 4: + sub_802B2BC(0x1D); + break; + case 5: + sub_802B2BC(0x19); + break; + } + break; + case 0: + sub_802B2BC(1); + break; + } + } +} + +void sub_802A98C(void) +{ + s32 temp; + + if (sub_80144A4(&temp) == 0) { + sub_802B2BC(0x8); + } +} + +void sub_802A9A8(void) +{ + s32 temp; + if(sub_80144A4(&temp) == 0) + { + switch(temp) + { + case 0x7: + switch(gUnknown_203B2C4->unk534) + { + case 3: + case 4: + sub_802B2BC(0x1D); + break; + case 5: + sub_802B2BC(0x19); + break; + } + break; + case 0: + sub_802B2BC(1); + break; + } + } +} + +void sub_802A9FC(void) +{ + s32 temp; + if(sub_80144A4(&temp) == 0) + { + switch(temp) + { + case 0x7: + sub_802B2BC(0x26); + break; + case 0: + sub_802B2BC(1); + break; + } + } +} + +void sub_802AA28(void) +{ + s32 temp; + struct unkStruct_8095228 *return_var; + if(sub_80144A4(&temp) == 0) + { + switch(temp) + { + case 3: + case 4: + case 5: + gUnknown_203B2C4->unk534 = temp; + switch(gUnknown_203B2C4->unk538) + { + case 1: + return_var = sub_8095228(sub_80953D4(5)); + if(return_var->unk20.unk41E != 0) + { + sub_802B2BC(7); + } + else + { + sub_802B2BC(9); + } + break; + default: + if(gUnknown_203B2C4->unk534 == 5) + { + sub_802B2BC(0x26); + } + else + { + sub_802B2BC(0x1D); + } + break; + } + break; + case 0: + sub_802B2BC(1); + break; + } + } +} + +void sub_802AAAC(void) +{ + s32 temp; + if(sub_80144A4(&temp) == 0) + { + sub_802B2BC(1); + } +} + +void sub_802AAC8(void) +{ + s32 temp; + if(sub_80144A4(&temp) == 0) + { + sub_802B2BC(3); + } +} + +void sub_802AAE4(void) +{ + s32 temp; + if(sub_80144A4(&temp) == 0) + { + switch(temp) + { + case 1: + gUnknown_203B2C4->unk40 = 6; + gUnknown_203B2C4->unk538 = 1; + if(sub_8095324(5) == 0) + { + sub_802B2BC(4); + } + else + { + sub_802B2BC(0xF); + } + break; + case 2: + gUnknown_203B2C4->unk40 = 7; + gUnknown_203B2C4->unk538 = 2; + sub_802B2BC(6); + break; + case 0: + sub_802B2BC(2); + break; + } + } +} + +void sub_802AB60(void) +{ + s32 temp; + if(sub_80144A4(&temp) == 0) + { + sub_802B2BC(0x22); + } +} + +void sub_802AB7C(void) +{ + s32 temp; + if(sub_80144A4(&temp) == 0) + { + sub_802B2BC(0x22); + } +} + + +void sub_802AB98(void) +{ + const char *monName; + switch(sub_802F298()) + { + case 3: + sub_802F2C0(); + CopyYellowSpeciesNametoBuffer(gUnknown_202E5D8, SPECIES_PELIPPER); + monName = GetMonSpecies(SPECIES_PELIPPER); + strcpy(gAvailablePokemonNames, monName); + sub_8095240(sub_809539C(6, gUnknown_203B2C4->unk430)); + sub_802B2BC(0x24); + break; + default: + break; + } +} + +void nullsub_131(void) +{ +} diff --git a/src/wonder_mail_2.c b/src/wonder_mail_2.c index 2791d0c..62e4b00 100644 --- a/src/wonder_mail_2.c +++ b/src/wonder_mail_2.c @@ -2,10 +2,12 @@ #include "file_system.h" #include "input.h" #include "pokemon.h" -#include "constants/species.h" #include "memory.h" #include "text.h" #include "save.h" +#include "wonder_mail.h" + +extern struct WonderMailStruct_203B2C4 *gUnknown_203B2C4; struct unkStruct_203B2C8 { @@ -41,15 +43,6 @@ struct unkStruct_203B2C8 extern struct unkStruct_203B2C8 *gUnknown_203B2C8; -struct unkStruct_41C -{ - u8 unk41C; - u8 unk41D; - u8 unk41E; - u8 unk41F; -}; - - struct unkStruct_8095228 { u8 unk0; @@ -95,6 +88,16 @@ extern const char gUnknown_80DF9F0[]; extern const char gUnknown_80DF9F8[]; extern u8 sub_80023E4(u32); +extern void nullsub_131(void); +extern void sub_802ABF8(void); + +void sub_802B2BC(u32 newState) +{ + gUnknown_203B2C4->state = newState; + nullsub_131(); + sub_802ABF8(); +} + u32 sub_802B2D4(void) { s32 iVar1; @@ -255,7 +258,7 @@ void sub_802B5B8(void) puVar3->unk28 = uVar2; sub_802B548(3); sub_8011C28(1); - PrepareSavePakWrite(0); + PrepareSavePakWrite(SPECIES_NONE); } } diff --git a/src/wonder_mail_3.c b/src/wonder_mail_3.c index 80552f6..88fa520 100644 --- a/src/wonder_mail_3.c +++ b/src/wonder_mail_3.c @@ -1,10 +1,12 @@ #include "global.h" #include "memory.h" +#include "text.h" +#include "input.h" struct unkStruct_203B2F8 { // size: 0x208 - u32 state; // state + s32 state; // state u32 unk4; u8 unk8; u8 unk9; @@ -15,8 +17,22 @@ struct unkStruct_203B2F8 u32 unk6C; u32 unk70; u32 unk74; + u8 fill78[0x118 - 0x78]; + u32 unk118; + u8 fill11C[0x158 - 0x11C]; + u32 unk158; + u8 fill15C[0x198 - 0x15C]; + u16 unk198[8]; + struct UnkTextStruct2 unk1A8[4]; + u32 unk1E4; }; extern struct unkStruct_203B2F8 *gUnknown_203B2F8; +extern struct UnkTextStruct2 gUnknown_80DFE04; +extern struct UnkTextStruct2 gUnknown_80DFE1C; +extern struct UnkTextStruct2 gUnknown_80DFDD4; +extern void sub_8012CAC(struct UnkTextStruct2 *, u32 *); +extern void sub_802D63C(void); +extern void sub_802D5A4(void); extern u8 sub_8099328(u8 *); extern u32 sub_8011C1C(); @@ -103,3 +119,34 @@ void sub_802D1A0(u32 newState) sub_802D1B8(); sub_802D2A8(); } + +void sub_802D1B8(void) +{ + s32 iVar2; + sub_8006518(gUnknown_203B2F8->unk1A8); + switch(gUnknown_203B2F8->state) + { + case 0xD: + sub_802D5A4(); + gUnknown_203B2F8->unk1A8[2] = gUnknown_80DFE04; + sub_8012CAC(&gUnknown_203B2F8->unk1A8[2], &gUnknown_203B2F8->unk118); + gUnknown_203B2F8->unk1A8[2].unk0c = 6; + break; + case 0xE: + sub_802D63C(); + gUnknown_203B2F8->unk1A8[3] = gUnknown_80DFE1C; + sub_8012CAC(&gUnknown_203B2F8->unk1A8[3], &gUnknown_203B2F8->unk158); + gUnknown_203B2F8->unk1A8[3].unk0c = 6; + break; + default: + for(iVar2 = 0; iVar2 < 4; iVar2++) + { + gUnknown_203B2F8->unk1A8[iVar2] = gUnknown_80DFDD4; + } + break; + case 2: + break; + } + ResetUnusedInputStruct(); + sub_800641C(gUnknown_203B2F8->unk1A8, 1, 1); +} diff --git a/src/wonder_mail_main_menu.c b/src/wonder_mail_main_menu.c index 2b475a8..d6d6c2d 100644 --- a/src/wonder_mail_main_menu.c +++ b/src/wonder_mail_main_menu.c @@ -3,30 +3,35 @@ #include "memory.h" #include "text.h" #include "input.h" +#include "wonder_mail.h" +#define WONDER_MAIL_MAIN_SCREEN 4 #define EXIT_TO_MAIN_MENU 5 +#define COMMUNICATION_ERROR 10 #define PASSWORD_SUCCESS 13 +#define PREPARE_SAVE 14 +#define SAVE_ADVENTURE 15 +#define WONDER_MAIL_ADDED 16 +#define PROMPT_PASSWORD_ENTRY 17 #define PASSWORD_INVALID 19 #define PASSWORD_ENTRY_SCREEN 18 -struct unkWonderMailData -{ - u8 unk0[20]; -}; - struct unkStruct_203B3E8 { // size: 0x49C - u8 unk0; // state variable? - u8 PasswordEntryBuffer[0x36]; // Wonder Mail Buffer... - struct unkWonderMailData unk38; // 0x30 - 0x14 - u8 unk38_1[0x30 - 20]; // TODO: split for the ldm/stm stuff (fix dumb hack) + u8 state; // state variable? + u8 PasswordEntryBuffer[PASSWORD_BUFFER_SIZE]; // Wonder Mail Buffer... + union UNK38 + { + struct WonderMail decodedMail; // 0x14 + u8 unk38_u8[0x30]; // idk why it fills to 0x30 instead... + } UNK38; u8 fill68[0x1EC - 0x68]; struct UnkTextStruct2 unk1EC[4]; u32 unk24C; u32 wonderMailStatus; u8 fill254[0x3C0 - 0x254]; - struct unkWonderMailData unk3C0; // 0x3C0 + 0x14 + struct WonderMail unk3C0; u8 fill3D0[0x490 - 0x3D4]; u32 unk490; u32 unk494; @@ -40,7 +45,7 @@ extern u32 sub_8095324(u32); extern u32 sub_80144A4(s32 *); extern u32 sub_8011C1C(void); extern struct unkStruct_203B3E8 *gUnknown_203B3E8; -extern void sub_803A1C0(u8); +extern void SetWonderMailMainMenuState(u8); extern void sub_8030DE4(void); extern void sub_801B450(void); extern void sub_803084C(void); @@ -53,25 +58,25 @@ extern u8 sub_802D178(); extern void sub_802D184(); extern s32 sub_80154F0(); -extern bool8 sub_803D358(u8 *, void *); -extern bool8 sub_80959C0(void *); +extern bool8 DecodeWonderMailPassword(u8 *, struct WonderMail *); +extern bool8 IsValidWonderMail(struct WonderMail *WonderMailData); extern void sub_80141B4(u32 *r0, u32, u32 *r1, u32); void sub_8039BAC(u32); -void sub_8039A18(void); +void HandleWonderMailMainScreen(void); void sub_8039AA8(void); void sub_8039B14(void); void sub_8039B20(void); void sub_8039B58(void); void sub_8039D88(void); -void sub_8039D28(void); -void sub_8039D68(void); -void sub_8039DA4(void); -void sub_8039DCC(void); +void HandlePasswordSuccess(void); +void HandlePrepareSaveScreen(void); +void HandleSaveAdventureScreen(void); +void HandleWonderMailAddedScreen(void); void sub_8039B3C(void); void sub_8039D0C(void); -void sub_8039C60(void); -void sub_8039DE8(void); +void HandlePasswordEntryScreen(void); +void HandleInvalidPasswordMenu(void); extern u32 gUnknown_80E7914; @@ -95,7 +100,7 @@ bool8 CreateWonderMailMenu(void) gUnknown_203B3E8 = MemoryAlloc(sizeof(struct unkStruct_203B3E8), 8); MemoryFill8((u8 *)gUnknown_203B3E8, 0, sizeof(struct unkStruct_203B3E8)); - for(iVar2 = 0; iVar2 < 0x36; iVar2++){ + for(iVar2 = 0; iVar2 < PASSWORD_BUFFER_SIZE; iVar2++){ gUnknown_203B3E8->PasswordEntryBuffer[iVar2] = 0; } @@ -103,15 +108,15 @@ bool8 CreateWonderMailMenu(void) gUnknown_203B3E8->unk494 = 2; gUnknown_203B3E8->unk498 = 1; gUnknown_203B3E8->unk490 = 5; // ??? Why? - sub_803A1C0(0x11); // 0x11 -> Display "Enter Wonder Mail Password" + SetWonderMailMainMenuState(PROMPT_PASSWORD_ENTRY); // -> Display "Enter Wonder Mail Password" return 1; } u8 UpdateWonderMailMenu(void) { - switch(gUnknown_203B3E8->unk0) { - case 4: - sub_8039A18(); + switch(gUnknown_203B3E8->state) { + case WONDER_MAIL_MAIN_SCREEN: + HandleWonderMailMainScreen(); break; case EXIT_TO_MAIN_MENU: // When you exit out of the menu return 3; @@ -133,28 +138,28 @@ u8 UpdateWonderMailMenu(void) sub_8039D88(); break; case PASSWORD_SUCCESS: - sub_8039D28(); + HandlePasswordSuccess(); break; - case 14: - sub_8039D68(); + case PREPARE_SAVE: + HandlePrepareSaveScreen(); break; - case 15: // Saving adventure - sub_8039DA4(); + case SAVE_ADVENTURE: // Saving adventure + HandleSaveAdventureScreen(); break; - case 16: // Display "Recieved Wonder Mail was added" and go back to main menu - sub_8039DCC(); + case WONDER_MAIL_ADDED: // Display "Recieved Wonder Mail was added" and go back to main menu + HandleWonderMailAddedScreen(); break; - case 10: + case COMMUNICATION_ERROR: sub_8039B3C(); break; - case 17: // "Please enter the Wonder Mail Password" Screen + case PROMPT_PASSWORD_ENTRY: // "Please enter the Wonder Mail Password" Screen sub_8039D0C(); break; case PASSWORD_ENTRY_SCREEN: // Password Entry - sub_8039C60(); + HandlePasswordEntryScreen(); break; case PASSWORD_INVALID: - sub_8039DE8(); + HandleInvalidPasswordMenu(); } return 0; } @@ -173,25 +178,25 @@ void CleanWonderMailMenu(void) } } -void sub_8039A18(void) +void HandleWonderMailMainScreen(void) { - s32 local_8; + s32 menuAction; - if (sub_80144A4(&local_8) == 0) { + if (sub_80144A4(&menuAction) == 0) { gUnknown_203B3E8->unk24C = 10; - switch(local_8) { + switch(menuAction) { case 3: case 4: gUnknown_203B3E8->unk490 = 3; - sub_803A1C0(8); + SetWonderMailMainMenuState(8); break; case 5: gUnknown_203B3E8->unk490 = 5; - sub_803A1C0(17); + SetWonderMailMainMenuState(PROMPT_PASSWORD_ENTRY); break; case 0: case 8: - sub_803A1C0(EXIT_TO_MAIN_MENU); + SetWonderMailMainMenuState(EXIT_TO_MAIN_MENU); break; } } @@ -199,24 +204,24 @@ void sub_8039A18(void) void sub_8039AA8(void) { - s32 local_8; + s32 menuAction; - if (sub_80144A4(&local_8) == 0) { - switch(local_8){ + if (sub_80144A4(&menuAction) == 0) { + switch(menuAction){ case 6: if (gUnknown_203B3E8->unk494 == 1) { - sub_803A1C0(2); + SetWonderMailMainMenuState(2); } else { - sub_803A1C0(12); + SetWonderMailMainMenuState(12); } break; case 0: if (gUnknown_203B3E8->unk494 == 1) { - sub_803A1C0(1); + SetWonderMailMainMenuState(1); } else { - sub_803A1C0(4); + SetWonderMailMainMenuState(WONDER_MAIL_MAIN_SCREEN); } break; } @@ -225,7 +230,7 @@ void sub_8039AA8(void) void sub_8039B14(void) { - sub_803A1C0(6); + SetWonderMailMainMenuState(6); } void sub_8039B20(void) @@ -233,7 +238,7 @@ void sub_8039B20(void) s32 local_8; if (sub_80144A4(&local_8) == 0) { - sub_803A1C0(9); + SetWonderMailMainMenuState(9); } } @@ -242,7 +247,7 @@ void sub_8039B3C(void) s32 local_8; if (sub_80144A4(&local_8) == 0) { - sub_803A1C0(4); + SetWonderMailMainMenuState(WONDER_MAIL_MAIN_SCREEN); } } @@ -254,16 +259,16 @@ void sub_8039B58(void) if (gUnknown_203B3E8->wonderMailStatus == 0) { switch(gUnknown_203B3E8->unk24C){ case 9: - sub_803A1C0(7); + SetWonderMailMainMenuState(7); break; case 10: - sub_803A1C0(PASSWORD_SUCCESS); + SetWonderMailMainMenuState(PASSWORD_SUCCESS); break; } } else { sub_8039BAC(gUnknown_203B3E8->wonderMailStatus); - sub_803A1C0(10); + SetWonderMailMainMenuState(COMMUNICATION_ERROR); } } } @@ -305,7 +310,7 @@ void sub_8039BAC(u32 arg) case 7: case 8: case 9: - case 10: + case COMMUNICATION_ERROR: case 11: case 12: case PASSWORD_SUCCESS: @@ -317,36 +322,36 @@ void sub_8039BAC(u32 arg) } } -void sub_8039C60(void) +void HandlePasswordEntryScreen(void) { int iVar2; iVar2 = sub_80154F0(); - MemoryFill8((u8 *)&gUnknown_203B3E8->unk38, 0, 0x30); + MemoryFill8(gUnknown_203B3E8->UNK38.unk38_u8, 0, sizeof(gUnknown_203B3E8->UNK38)); switch(iVar2){ case 3: sub_80155F0(); ResetUnusedInputStruct(); sub_800641C(gUnknown_203B3E8->unk1EC,1,1); - if ( !sub_803D358(gUnknown_203B3E8->PasswordEntryBuffer, &gUnknown_203B3E8->unk38) || !sub_80959C0(&gUnknown_203B3E8->unk38) ) + if ( !DecodeWonderMailPassword(gUnknown_203B3E8->PasswordEntryBuffer, &gUnknown_203B3E8->UNK38.decodedMail) || !IsValidWonderMail(&gUnknown_203B3E8->UNK38.decodedMail) ) { // Invalid password - sub_803A1C0(PASSWORD_INVALID); + SetWonderMailMainMenuState(PASSWORD_INVALID); } else { // Successful password // Copy the decoded data to another buffer? - gUnknown_203B3E8->unk3C0 = gUnknown_203B3E8->unk38; + gUnknown_203B3E8->unk3C0 = gUnknown_203B3E8->UNK38.decodedMail; gUnknown_203B3E8->unk498 = 1; - sub_803A1C0(PASSWORD_SUCCESS); + SetWonderMailMainMenuState(PASSWORD_SUCCESS); } - break; + break; case 2: sub_80155F0(); ResetUnusedInputStruct(); sub_800641C(gUnknown_203B3E8->unk1EC,1,1); - sub_803A1C0(EXIT_TO_MAIN_MENU); + SetWonderMailMainMenuState(EXIT_TO_MAIN_MENU); break; } } @@ -356,31 +361,31 @@ void sub_8039D0C(void) int iVar2; if(sub_80144A4(&iVar2) == 0) { - sub_803A1C0(PASSWORD_ENTRY_SCREEN); + SetWonderMailMainMenuState(PASSWORD_ENTRY_SCREEN); } } -void sub_8039D28(void) +void HandlePasswordSuccess(void) { if (sub_802D0E0() == 3) { gUnknown_203B3E8->unk498 = sub_802D178(); sub_802D184(); if (gUnknown_203B3E8->unk498 != 0) { - sub_803A1C0(0xe); + SetWonderMailMainMenuState(PREPARE_SAVE); } else { - sub_803A1C0(0x10); + SetWonderMailMainMenuState(WONDER_MAIL_ADDED); } } } -void sub_8039D68(void) +void HandlePrepareSaveScreen(void) { int iVar2; if(sub_80144A4(&iVar2) == 0) { - sub_803A1C0(0xF); - PrepareSavePakWrite(0); // "Saving Adventure.." + SetWonderMailMainMenuState(SAVE_ADVENTURE); + PrepareSavePakWrite(SPECIES_NONE); // "Saving Adventure.." } } @@ -389,11 +394,11 @@ void sub_8039D88(void) int iVar2; if(sub_80144A4(&iVar2) == 0) { - sub_803A1C0(8); + SetWonderMailMainMenuState(8); } } -void sub_8039DA4(void) +void HandleSaveAdventureScreen(void) { int iVar2; if(sub_80144A4(&iVar2) == 0) @@ -401,34 +406,34 @@ void sub_8039DA4(void) if(!WriteSavePak()) { FinishWriteSavePak(); - sub_803A1C0(0x10); + SetWonderMailMainMenuState(WONDER_MAIL_ADDED); } } } -void sub_8039DCC(void) +void HandleWonderMailAddedScreen(void) { int iVar2; if(sub_80144A4(&iVar2) == 0) { - sub_803A1C0(EXIT_TO_MAIN_MENU); + SetWonderMailMainMenuState(EXIT_TO_MAIN_MENU); } } -void sub_8039DE8(void) +void HandleInvalidPasswordMenu(void) { - int iVar2; + s32 menuAction; // Prompt to re-enter password - if(sub_80144A4(&iVar2) == 0) + if(sub_80144A4(&menuAction) == 0) { - switch(iVar2) + switch(menuAction) { case 6: // Yes - sub_803A1C0(0x11); + SetWonderMailMainMenuState(PROMPT_PASSWORD_ENTRY); break; case 0: // No - sub_803A1C0(EXIT_TO_MAIN_MENU); + SetWonderMailMainMenuState(EXIT_TO_MAIN_MENU); break; } } diff --git a/src/wonder_mail_pre.c b/src/wonder_mail_pre.c index 4cf76c8..9e2e5cc 100644 --- a/src/wonder_mail_pre.c +++ b/src/wonder_mail_pre.c @@ -2,7 +2,6 @@ #include "file_system.h" #include "input.h" #include "pokemon.h" -#include "constants/species.h" #include "wonder_mail.h" #include "memory.h" |