.include "asm/macros.inc" .include "constants/constants.inc" .syntax unified .text thumb_func_start sub_0801EE18 sub_0801EE18: @ 0x0801EE18 push {r4, r5, lr} adds r5, r0, #0 bl sub_080012DC adds r4, r0, #0 cmp r4, #0 beq _0801EE9E cmp r4, #2 beq _0801EE40 ldr r0, _0801EE3C @ =gUnk_080012C8 lsls r1, r4, #2 adds r1, r1, r0 ldr r1, [r1] adds r0, r5, #0 bl _call_via_r1 b _0801EEE0 .align 2, 0 _0801EE3C: .4byte gUnk_080012C8 _0801EE40: adds r2, r5, #0 adds r2, #0x3a ldrb r1, [r2] movs r0, #0xfe ands r0, r1 strb r0, [r2] adds r0, r5, #0 adds r0, #0x81 ldrb r0, [r0] cmp r4, r0 beq _0801EE9E ldrb r0, [r5, #0xa] cmp r0, #1 beq _0801EE9E cmp r0, #1 bgt _0801EE66 cmp r0, #0 beq _0801EE6C b _0801EE9E _0801EE66: cmp r0, #2 beq _0801EE96 b _0801EE9E _0801EE6C: ldrb r1, [r5, #0x10] movs r0, #0x80 ands r0, r1 cmp r0, #0 beq _0801EE9E movs r0, #6 strb r0, [r5, #0xc] movs r0, #0x7f ands r0, r1 strb r0, [r5, #0x10] movs r0, #0x20 strh r0, [r5, #0x24] adds r1, r5, #0 adds r1, #0x3f movs r0, #0x5c strb r0, [r1] adds r0, r5, #0 movs r1, #5 bl UpdateSprite b _0801EE9E _0801EE96: adds r0, r5, #0 bl sub_080043A8 b _0801EEE0 _0801EE9E: adds r0, r5, #0 adds r0, #0x81 strb r4, [r0] ldr r4, _0801EED0 @ =gUnk_080CA21C adds r0, r5, #0 bl sub_0800279C lsls r0, r0, #2 adds r0, r0, r4 ldr r1, [r0] adds r0, r5, #0 bl _call_via_r1 ldr r0, [r5, #0x68] ldrb r0, [r0, #0xa] cmp r0, #0x1c bne _0801EED4 movs r3, #0x10 rsbs r3, r3, #0 adds r0, r5, #0 movs r1, #0 movs r2, #1 bl sub_0804A9AC b _0801EEE0 .align 2, 0 _0801EED0: .4byte gUnk_080CA21C _0801EED4: ldrb r0, [r5, #0xa] cmp r0, #2 bne _0801EEE0 adds r0, r5, #0 bl sub_0801FB34 _0801EEE0: pop {r4, r5, pc} .align 2, 0 thumb_func_start sub_0801EEE4 sub_0801EEE4: @ 0x0801EEE4 push {r4, lr} adds r4, r0, #0 ldrb r0, [r4, #0xa] cmp r0, #1 beq _0801EF0C cmp r0, #1 bgt _0801EEF8 cmp r0, #0 beq _0801EEFE b _0801EF38 _0801EEF8: cmp r0, #2 beq _0801EF28 b _0801EF38 _0801EEFE: adds r0, r4, #0 bl sub_0801F3AC ldr r0, _0801EF08 @ =gUnk_080CA234 b _0801EF14 .align 2, 0 _0801EF08: .4byte gUnk_080CA234 _0801EF0C: adds r0, r4, #0 bl sub_0801F764 ldr r0, _0801EF24 @ =gUnk_080CA25C _0801EF14: ldrb r1, [r4, #0xc] lsls r1, r1, #2 adds r1, r1, r0 ldr r1, [r1] adds r0, r4, #0 bl _call_via_r1 b _0801EF38 .align 2, 0 _0801EF24: .4byte gUnk_080CA25C _0801EF28: ldr r0, _0801EF3C @ =gUnk_080CA288 ldrb r1, [r4, #0xc] lsls r1, r1, #2 adds r1, r1, r0 ldr r1, [r1] adds r0, r4, #0 bl _call_via_r1 _0801EF38: pop {r4, pc} .align 2, 0 _0801EF3C: .4byte gUnk_080CA288 thumb_func_start sub_0801EF40 sub_0801EF40: @ 0x0801EF40 push {r4, r5, r6, r7, lr} adds r4, r0, #0 ldrb r0, [r4, #0xa] cmp r0, #2 bne _0801EF68 adds r0, r4, #0 adds r0, #0x41 ldrb r0, [r0] cmp r0, #0x8e beq _0801EF58 cmp r0, #0x95 bne _0801EF68 _0801EF58: ldrb r0, [r4, #0x10] movs r1, #0x7f ands r1, r0 movs r0, #0 strb r1, [r4, #0x10] adds r1, r4, #0 adds r1, #0x45 strb r0, [r1] _0801EF68: adds r0, r4, #0 adds r0, #0x45 ldrb r6, [r0] adds r7, r0, #0 cmp r6, #0 beq _0801EFB0 subs r0, #4 ldrb r0, [r0] cmp r0, #0x94 bne _0801EF94 adds r0, r4, #0 bl sub_0801FB68 adds r0, r4, #0 movs r1, #0x1c bl sub_0804A9FC adds r0, r4, #0 movs r1, #6 bl UpdateSprite b _0801EFC0 _0801EF94: adds r0, r4, #0 adds r0, #0x80 ldrb r1, [r0] adds r5, r0, #0 cmp r1, r6 beq _0801EFC4 adds r0, r4, #0 bl sub_0801FB68 adds r0, r4, #0 movs r1, #6 bl UpdateSprite b _0801EFC4 _0801EFB0: adds r0, r4, #0 bl sub_0804AA1C str r6, [r4, #0x20] adds r0, r4, #0 movs r1, #9 bl UpdateSprite _0801EFC0: adds r5, r4, #0 adds r5, #0x80 _0801EFC4: ldrb r0, [r7] strb r0, [r5] ldr r1, _0801EFD4 @ =gUnk_080CA21C adds r0, r4, #0 bl sub_0804AA30 pop {r4, r5, r6, r7, pc} .align 2, 0 _0801EFD4: .4byte gUnk_080CA21C thumb_func_start sub_0801EFD8 sub_0801EFD8: @ 0x0801EFD8 push {r4, lr} adds r4, r0, #0 bl sub_0806F520 cmp r0, #0 bne _0801F000 adds r0, r4, #0 adds r0, #0x43 ldrb r0, [r0] cmp r0, #0 beq _0801F000 adds r0, r4, #0 movs r1, #0x1c bl sub_0804A9FC adds r0, r4, #0 movs r1, #6 bl UpdateSprite b _0801F028 _0801F000: adds r0, r4, #0 adds r0, #0x58 ldrb r0, [r0] cmp r0, #8 beq _0801F018 adds r0, r4, #0 bl sub_0801FB68 adds r0, r4, #0 movs r1, #8 bl UpdateSprite _0801F018: movs r1, #0xc0 lsls r1, r1, #5 adds r0, r4, #0 bl sub_08003FC4 adds r0, r4, #0 bl sub_08004274 _0801F028: pop {r4, pc} .align 2, 0 thumb_func_start sub_0801F02C sub_0801F02C: @ 0x0801F02C push {r4, lr} adds r4, r0, #0 adds r0, #0x58 ldrb r0, [r0] cmp r0, #6 bne _0801F03E adds r0, r4, #0 bl sub_08004274 _0801F03E: adds r0, r4, #0 bl sub_08001318 pop {r4, pc} .align 2, 0 thumb_func_start sub_0801F048 sub_0801F048: @ 0x0801F048 push {r4, lr} adds r4, r0, #0 movs r1, #0xc0 lsls r1, r1, #5 bl sub_08003FC4 adds r0, r4, #0 bl sub_08004274 ldrb r0, [r4, #0xa] cmp r0, #0 bne _0801F068 adds r0, r4, #0 bl sub_0804A7D4 b _0801F082 _0801F068: cmp r0, #1 bne _0801F078 adds r0, r4, #0 movs r1, #0xf2 movs r2, #0 bl CreateDeathFx b _0801F082 _0801F078: adds r0, r4, #0 movs r1, #0xf1 movs r2, #0 bl CreateDeathFx _0801F082: pop {r4, pc} thumb_func_start sub_0801F084 sub_0801F084: @ 0x0801F084 push {r4, lr} adds r4, r0, #0 adds r0, #0x5a ldrb r1, [r0] movs r0, #0x80 ands r0, r1 cmp r0, #0 bne _0801F09A adds r0, r4, #0 bl sub_08004274 _0801F09A: adds r0, r4, #0 bl sub_08001242 pop {r4, pc} .align 2, 0 thumb_func_start sub_0801F0A4 sub_0801F0A4: @ 0x0801F0A4 push {r4, lr} adds r4, r0, #0 bl sub_0804A720 movs r2, #0 movs r0, #1 strb r0, [r4, #0xc] adds r0, r4, #0 adds r0, #0x45 ldrb r1, [r0] adds r0, #0x3b strb r1, [r0] adds r4, #0x82 strb r2, [r4] pop {r4, pc} .align 2, 0 thumb_func_start nullsub_4 nullsub_4: @ 0x0801F0C4 bx lr .align 2, 0 thumb_func_start sub_0801F0C8 sub_0801F0C8: @ 0x0801F0C8 push {r4, r5, lr} adds r5, r0, #0 bl sub_08004274 adds r0, r5, #0 adds r0, #0x5a ldrb r1, [r0] movs r0, #0x80 ands r0, r1 cmp r0, #0 beq _0801F12A movs r4, #3 movs r0, #3 strb r0, [r5, #0xc] bl Random ands r0, r4 adds r0, #0xc strb r0, [r5, #0xe] bl Random strb r0, [r5, #0xf] adds r0, r5, #0 movs r1, #1 bl sub_08049F84 strb r0, [r5, #0x15] ldrb r1, [r5, #0x10] movs r0, #0x80 orrs r0, r1 strb r0, [r5, #0x10] adds r2, r5, #0 adds r2, #0x29 ldrb r1, [r2] movs r0, #8 rsbs r0, r0, #0 ands r0, r1 movs r1, #4 orrs r0, r1 movs r1, #0x39 rsbs r1, r1, #0 ands r0, r1 movs r1, #0x18 orrs r0, r1 strb r0, [r2] adds r0, r5, #0 movs r1, #2 bl UpdateSprite _0801F12A: pop {r4, r5, pc} thumb_func_start sub_0801F12C sub_0801F12C: @ 0x0801F12C push {r4, lr} adds r4, r0, #0 bl sub_0801FBD0 cmp r0, #0 beq _0801F140 adds r0, r4, #0 bl sub_0801F328 b _0801F1AC _0801F140: ldrb r1, [r4, #0xf] adds r0, r1, #1 strb r0, [r4, #0xf] movs r0, #7 ands r0, r1 cmp r0, #0 bne _0801F158 adds r0, r4, #0 movs r1, #1 bl sub_08049F84 strb r0, [r4, #0x15] _0801F158: adds r0, r4, #0 bl sub_080AEF88 adds r0, r4, #0 bl sub_08004274 ldrb r0, [r4, #0xe] subs r0, #1 strb r0, [r4, #0xe] lsls r0, r0, #0x18 cmp r0, #0 bne _0801F1AC adds r0, r4, #0 movs r1, #1 movs r2, #0x38 bl sub_08049F64 cmp r0, #0 beq _0801F18A movs r0, #4 strb r0, [r4, #0xc] adds r0, r4, #0 bl sub_0801FBE4 b _0801F1AC _0801F18A: adds r0, r4, #0 movs r1, #1 movs r2, #0x48 bl sub_08049F64 cmp r0, #0 beq _0801F1A6 bl Random movs r1, #3 ands r0, r1 adds r0, #0xc strb r0, [r4, #0xe] b _0801F1AC _0801F1A6: adds r0, r4, #0 bl sub_0801F328 _0801F1AC: pop {r4, pc} .align 2, 0 thumb_func_start sub_0801F1B0 sub_0801F1B0: @ 0x0801F1B0 push {r4, lr} adds r4, r0, #0 adds r2, r4, #0 adds r2, #0x5a ldrb r1, [r2] movs r0, #0x10 ands r0, r1 cmp r0, #0 beq _0801F1FA movs r0, #1 ands r0, r1 cmp r0, #0 beq _0801F1DE movs r0, #1 eors r0, r1 strb r0, [r2] adds r1, r4, #0 adds r1, #0x3f movs r0, #0x5a strb r0, [r1] adds r0, #0xd1 bl sub_08004488 _0801F1DE: adds r0, r4, #0 bl sub_080AEFE0 movs r1, #0x80 lsls r1, r1, #7 adds r0, r4, #0 bl sub_08003FC4 cmp r0, #0 bne _0801F200 adds r0, r4, #0 bl sub_08004274 b _0801F200 _0801F1FA: adds r0, r4, #0 bl sub_08004274 _0801F200: adds r0, r4, #0 adds r0, #0x5a ldrb r1, [r0] movs r0, #0x80 ands r0, r1 cmp r0, #0 beq _0801F226 adds r0, r4, #0 bl sub_0801FBD0 cmp r0, #0 beq _0801F220 adds r0, r4, #0 bl sub_0801F328 b _0801F226 _0801F220: adds r0, r4, #0 bl sub_0801F340 _0801F226: pop {r4, pc} thumb_func_start sub_0801F228 sub_0801F228: @ 0x0801F228 push {r4, lr} adds r4, r0, #0 ldrb r0, [r4, #0xe] subs r0, #1 strb r0, [r4, #0xe] lsls r0, r0, #0x18 cmp r0, #0 bne _0801F246 movs r0, #3 strb r0, [r4, #0xc] adds r0, r4, #0 movs r1, #1 bl sub_08049F84 strb r0, [r4, #0x15] _0801F246: adds r0, r4, #0 bl sub_08004274 pop {r4, pc} .align 2, 0 thumb_func_start sub_0801F250 sub_0801F250: @ 0x0801F250 push {r4, lr} adds r4, r0, #0 bl sub_08004274 adds r0, r4, #0 adds r0, #0x5a ldrb r1, [r0] movs r0, #0x80 ands r0, r1 cmp r0, #0 beq _0801F26C adds r0, r4, #0 bl sub_0801F360 _0801F26C: pop {r4, pc} .align 2, 0 thumb_func_start sub_0801F270 sub_0801F270: @ 0x0801F270 push {r4, lr} adds r4, r0, #0 ldrb r1, [r4, #0xf] adds r0, r1, #1 strb r0, [r4, #0xf] movs r0, #7 ands r0, r1 cmp r0, #0 bne _0801F28C adds r0, r4, #0 movs r1, #1 bl sub_08049F84 strb r0, [r4, #0x15] _0801F28C: adds r0, r4, #0 bl sub_080AF160 adds r0, r4, #0 bl sub_08004274 adds r0, r4, #0 bl sub_0801FBD0 cmp r0, #0 bne _0801F2CA ldrb r0, [r4, #0xe] subs r0, #1 strb r0, [r4, #0xe] lsls r0, r0, #0x18 cmp r0, #0 bne _0801F2CA adds r0, r4, #0 adds r0, #0x81 ldrb r0, [r0] cmp r0, #0 bne _0801F2C6 movs r0, #2 strb r0, [r4, #0xc] adds r0, r4, #0 movs r1, #4 bl UpdateSprite b _0801F2CA _0801F2C6: movs r0, #8 strb r0, [r4, #0xe] _0801F2CA: pop {r4, pc} thumb_func_start sub_0801F2CC sub_0801F2CC: @ 0x0801F2CC push {r4, lr} adds r4, r0, #0 bl sub_08004274 adds r0, r4, #0 adds r0, #0x5a ldrb r1, [r0] movs r0, #0x80 ands r0, r1 cmp r0, #0 beq _0801F2F6 movs r0, #1 strb r0, [r4, #0xc] ldrb r1, [r4, #0x18] subs r0, #5 ands r0, r1 strb r0, [r4, #0x18] adds r0, r4, #0 movs r1, #4 bl UpdateSprite _0801F2F6: pop {r4, pc} thumb_func_start sub_0801F2F8 sub_0801F2F8: @ 0x0801F2F8 push {r4, lr} adds r4, r0, #0 movs r1, #0xc0 lsls r1, r1, #5 bl sub_08003FC4 adds r0, r4, #0 bl sub_08004274 adds r0, r4, #0 adds r0, #0x5a ldrb r1, [r0] movs r0, #0x80 ands r0, r1 cmp r0, #0 beq _0801F324 adds r0, r4, #0 bl sub_0801F340 adds r0, r4, #0 bl sub_0804AA1C _0801F324: pop {r4, pc} .align 2, 0 thumb_func_start sub_0801F328 sub_0801F328: @ 0x0801F328 push {lr} movs r1, #6 strb r1, [r0, #0xc] ldrb r2, [r0, #0x10] movs r1, #0x7f ands r1, r2 strb r1, [r0, #0x10] movs r1, #5 bl UpdateSprite pop {pc} .align 2, 0 thumb_func_start sub_0801F340 sub_0801F340: @ 0x0801F340 push {lr} movs r1, #5 strb r1, [r0, #0xc] movs r1, #0x3c strb r1, [r0, #0xe] movs r1, #0x20 strh r1, [r0, #0x24] adds r2, r0, #0 adds r2, #0x3f movs r1, #0x5c strb r1, [r2] movs r1, #2 bl UpdateSprite pop {pc} .align 2, 0 thumb_func_start sub_0801F360 sub_0801F360: @ 0x0801F360 push {r4, lr} adds r4, r0, #0 movs r0, #7 strb r0, [r4, #0xc] bl Random movs r1, #0x38 ands r0, r1 adds r0, #0xb4 strb r0, [r4, #0xe] bl Random strb r0, [r4, #0xf] adds r0, r4, #0 movs r1, #1 bl sub_08049F84 strb r0, [r4, #0x15] adds r2, r4, #0 adds r2, #0x29 ldrb r1, [r2] movs r0, #0x39 rsbs r0, r0, #0 ands r0, r1 movs r1, #0x10 orrs r0, r1 movs r1, #8 rsbs r1, r1, #0 ands r0, r1 movs r1, #6 orrs r0, r1 strb r0, [r2] adds r0, r4, #0 movs r1, #1 bl UpdateSprite pop {r4, pc} .align 2, 0 thumb_func_start sub_0801F3AC sub_0801F3AC: @ 0x0801F3AC push {r4, r5, lr} adds r4, r0, #0 ldrb r0, [r4, #0xc] cmp r0, #9 beq _0801F426 cmp r0, #0 beq _0801F426 adds r0, r4, #0 movs r1, #1 bl sub_08049FDC cmp r0, #0 beq _0801F408 adds r5, r4, #0 adds r5, #0x82 ldrb r0, [r5] cmp r0, #0 bne _0801F3DE adds r0, r4, #0 movs r1, #1 movs r2, #0x48 bl sub_08049F64 cmp r0, #0 beq _0801F400 _0801F3DE: ldrb r2, [r4, #0xc] cmp r2, #1 bne _0801F426 movs r0, #2 strb r0, [r4, #0xc] ldrb r1, [r4, #0x18] subs r0, #6 ands r0, r1 movs r1, #1 orrs r0, r1 strb r0, [r4, #0x18] strb r2, [r5] adds r0, r4, #0 movs r1, #0 bl UpdateSprite b _0801F426 _0801F400: ldrb r0, [r4, #0xc] cmp r0, #3 bne _0801F426 b _0801F40E _0801F408: ldrb r0, [r4, #0xc] cmp r0, #3 bne _0801F416 _0801F40E: adds r0, r4, #0 bl sub_0801F328 b _0801F426 _0801F416: cmp r0, #7 bne _0801F426 movs r0, #8 strb r0, [r4, #0xc] adds r0, r4, #0 movs r1, #7 bl UpdateSprite _0801F426: pop {r4, r5, pc} thumb_func_start sub_0801F428 sub_0801F428: @ 0x0801F428 push {r4, r5, lr} adds r5, r0, #0 bl sub_0804A720 movs r4, #0 movs r0, #1 strb r0, [r5, #0xc] bl Random strb r0, [r5, #0xe] adds r0, r5, #0 adds r0, #0x45 ldrb r1, [r0] adds r0, #0x3b strb r1, [r0] adds r0, #2 strb r4, [r0] ldrb r0, [r5, #0xb] cmp r0, #0 beq _0801F488 movs r0, #3 strb r0, [r5, #0xc] movs r0, #0x1e strb r0, [r5, #0xf] ldrb r0, [r5, #0x10] movs r1, #0x80 orrs r0, r1 strb r0, [r5, #0x10] adds r2, r5, #0 adds r2, #0x29 ldrb r1, [r2] movs r0, #0x39 rsbs r0, r0, #0 ands r0, r1 movs r1, #0x18 orrs r0, r1 strb r0, [r2] ldrb r1, [r5, #0x18] movs r0, #4 rsbs r0, r0, #0 ands r0, r1 movs r1, #1 orrs r0, r1 strb r0, [r5, #0x18] adds r0, r5, #0 movs r1, #2 bl UpdateSprite _0801F488: pop {r4, r5, pc} .align 2, 0 thumb_func_start sub_0801F48C sub_0801F48C: @ 0x0801F48C push {lr} bl sub_08004274 pop {pc} thumb_func_start sub_0801F494 sub_0801F494: @ 0x0801F494 push {r4, lr} adds r4, r0, #0 bl sub_08004274 adds r0, r4, #0 adds r0, #0x5a ldrb r1, [r0] movs r0, #0x80 ands r0, r1 cmp r0, #0 beq _0801F4E8 movs r0, #3 strb r0, [r4, #0xc] movs r0, #0x1e strb r0, [r4, #0xf] adds r0, r4, #0 movs r1, #1 bl sub_08049F84 strb r0, [r4, #0x15] ldrb r1, [r4, #0x10] movs r0, #0x80 orrs r0, r1 strb r0, [r4, #0x10] adds r2, r4, #0 adds r2, #0x29 ldrb r1, [r2] movs r0, #8 rsbs r0, r0, #0 ands r0, r1 movs r1, #4 orrs r0, r1 movs r1, #0x39 rsbs r1, r1, #0 ands r0, r1 movs r1, #0x18 orrs r0, r1 strb r0, [r2] adds r0, r4, #0 movs r1, #2 bl UpdateSprite _0801F4E8: pop {r4, pc} .align 2, 0 thumb_func_start sub_0801F4EC sub_0801F4EC: @ 0x0801F4EC push {r4, lr} adds r4, r0, #0 bl sub_08004274 ldrb r0, [r4, #0xf] subs r0, #1 strb r0, [r4, #0xf] lsls r0, r0, #0x18 cmp r0, #0 bne _0801F504 movs r0, #4 strb r0, [r4, #0xc] _0801F504: pop {r4, pc} .align 2, 0 thumb_func_start sub_0801F508 sub_0801F508: @ 0x0801F508 push {r4, r5, lr} adds r4, r0, #0 bl sub_0801FBD0 cmp r0, #0 beq _0801F51C adds r1, r4, #0 adds r1, #0x83 movs r0, #0 b _0801F55C _0801F51C: ldrb r0, [r4, #0xe] adds r0, #1 strb r0, [r4, #0xe] movs r1, #0xff adds r5, r0, #0 ands r5, r1 movs r0, #7 ands r5, r0 cmp r5, #0 bne _0801F566 adds r0, r4, #0 movs r1, #1 movs r2, #0x38 bl sub_08049F64 cmp r0, #0 beq _0801F566 bl Random movs r1, #1 ands r1, r0 cmp r1, #0 beq _0801F556 movs r0, #5 strb r0, [r4, #0xc] adds r0, r4, #0 bl sub_0801FBE4 b _0801F580 _0801F556: adds r1, r4, #0 adds r1, #0x83 movs r0, #0x78 _0801F55C: strb r0, [r1] adds r0, r4, #0 bl sub_0801F730 b _0801F580 _0801F566: cmp r5, #4 bne _0801F574 adds r0, r4, #0 movs r1, #1 bl sub_08049F84 strb r0, [r4, #0x15] _0801F574: adds r0, r4, #0 bl sub_080AEF88 adds r0, r4, #0 bl sub_08004274 _0801F580: pop {r4, r5, pc} .align 2, 0 thumb_func_start sub_0801F584 sub_0801F584: @ 0x0801F584 push {r4, lr} adds r4, r0, #0 adds r2, r4, #0 adds r2, #0x5a ldrb r1, [r2] movs r0, #0x10 ands r0, r1 cmp r0, #0 beq _0801F5CE movs r0, #1 ands r0, r1 cmp r0, #0 beq _0801F5B2 movs r0, #1 eors r0, r1 strb r0, [r2] adds r1, r4, #0 adds r1, #0x3f movs r0, #0x5b strb r0, [r1] adds r0, #0xd0 bl sub_08004488 _0801F5B2: adds r0, r4, #0 bl sub_080AEFE0 movs r1, #0x80 lsls r1, r1, #7 adds r0, r4, #0 bl sub_08003FC4 cmp r0, #0 bne _0801F5D4 adds r0, r4, #0 bl sub_08004274 b _0801F5D4 _0801F5CE: adds r0, r4, #0 bl sub_08004274 _0801F5D4: adds r0, r4, #0 adds r0, #0x5a ldrb r1, [r0] movs r0, #0x80 ands r0, r1 cmp r0, #0 beq _0801F618 adds r0, r4, #0 bl sub_0801FBD0 cmp r0, #0 beq _0801F5FC adds r1, r4, #0 adds r1, #0x83 movs r0, #0 strb r0, [r1] adds r0, r4, #0 bl sub_0801F730 b _0801F618 _0801F5FC: movs r0, #6 strb r0, [r4, #0xc] movs r0, #0x3c strb r0, [r4, #0xf] movs r0, #0x20 strh r0, [r4, #0x24] adds r1, r4, #0 adds r1, #0x3f movs r0, #0x5c strb r0, [r1] adds r0, r4, #0 movs r1, #2 bl UpdateSprite _0801F618: pop {r4, pc} .align 2, 0 thumb_func_start sub_0801F61C sub_0801F61C: @ 0x0801F61C push {lr} adds r1, r0, #0 ldrb r0, [r1, #0xf] subs r0, #1 strb r0, [r1, #0xf] lsls r0, r0, #0x18 cmp r0, #0 bne _0801F630 movs r0, #4 strb r0, [r1, #0xc] _0801F630: adds r0, r1, #0 bl sub_08004274 pop {pc} thumb_func_start sub_0801F638 sub_0801F638: @ 0x0801F638 push {r4, lr} adds r4, r0, #0 bl sub_08004274 adds r0, r4, #0 adds r0, #0x5a ldrb r1, [r0] movs r0, #0x80 ands r0, r1 cmp r0, #0 beq _0801F684 movs r0, #8 strb r0, [r4, #0xc] movs r0, #0x1e strb r0, [r4, #0xf] adds r0, r4, #0 movs r1, #1 bl sub_08049F84 strb r0, [r4, #0x15] adds r2, r4, #0 adds r2, #0x29 ldrb r1, [r2] movs r0, #0x39 rsbs r0, r0, #0 ands r0, r1 movs r1, #0x10 orrs r0, r1 movs r1, #8 rsbs r1, r1, #0 ands r0, r1 movs r1, #6 orrs r0, r1 strb r0, [r2] adds r0, r4, #0 movs r1, #1 bl UpdateSprite _0801F684: pop {r4, pc} .align 2, 0 thumb_func_start sub_0801F688 sub_0801F688: @ 0x0801F688 push {r4, r5, lr} adds r4, r0, #0 adds r5, r4, #0 adds r5, #0x83 ldrb r0, [r5] cmp r0, #0 beq _0801F69A subs r0, #1 strb r0, [r5] _0801F69A: adds r0, r4, #0 bl sub_0801FBD0 cmp r0, #0 bne _0801F6AA ldrb r0, [r5] cmp r0, #0 beq _0801F6C2 _0801F6AA: adds r0, r4, #0 movs r1, #1 bl sub_08049F84 strb r0, [r4, #0x15] adds r0, r4, #0 bl sub_080AF160 adds r0, r4, #0 bl sub_08004274 b _0801F6C8 _0801F6C2: adds r0, r4, #0 bl sub_0801F748 _0801F6C8: pop {r4, r5, pc} .align 2, 0 thumb_func_start sub_0801F6CC sub_0801F6CC: @ 0x0801F6CC push {r4, lr} adds r4, r0, #0 bl sub_08004274 adds r0, r4, #0 adds r0, #0x5a ldrb r1, [r0] movs r0, #0x80 ands r0, r1 cmp r0, #0 beq _0801F6F6 movs r0, #1 strb r0, [r4, #0xc] ldrb r1, [r4, #0x18] subs r0, #5 ands r0, r1 strb r0, [r4, #0x18] adds r0, r4, #0 movs r1, #4 bl UpdateSprite _0801F6F6: pop {r4, pc} thumb_func_start sub_0801F6F8 sub_0801F6F8: @ 0x0801F6F8 push {r4, lr} adds r4, r0, #0 movs r1, #0xc0 lsls r1, r1, #5 bl sub_08003FC4 adds r0, r4, #0 bl sub_08004274 adds r0, r4, #0 adds r0, #0x5a ldrb r1, [r0] movs r0, #0x80 ands r0, r1 cmp r0, #0 beq _0801F72E movs r0, #4 strb r0, [r4, #0xc] movs r0, #0x20 strh r0, [r4, #0x24] adds r0, r4, #0 bl sub_0804AA1C adds r0, r4, #0 movs r1, #2 bl UpdateSprite _0801F72E: pop {r4, pc} thumb_func_start sub_0801F730 sub_0801F730: @ 0x0801F730 push {lr} movs r1, #7 strb r1, [r0, #0xc] ldrb r2, [r0, #0x10] movs r1, #0x7f ands r1, r2 strb r1, [r0, #0x10] movs r1, #5 bl UpdateSprite pop {pc} .align 2, 0 thumb_func_start sub_0801F748 sub_0801F748: @ 0x0801F748 push {lr} movs r1, #2 strb r1, [r0, #0xc] ldrb r2, [r0, #0x18] subs r1, #6 ands r1, r2 movs r2, #1 orrs r1, r2 strb r1, [r0, #0x18] movs r1, #4 bl UpdateSprite pop {pc} .align 2, 0 thumb_func_start sub_0801F764 sub_0801F764: @ 0x0801F764 push {r4, r5, r6, lr} adds r4, r0, #0 ldrb r0, [r4, #0xc] cmp r0, #0xa beq _0801F7D6 cmp r0, #0 beq _0801F7D6 adds r0, r4, #0 movs r1, #1 bl sub_08049FDC cmp r0, #0 beq _0801F7B8 ldrb r6, [r4, #0xc] cmp r6, #1 bne _0801F7D6 adds r5, r4, #0 adds r5, #0x82 ldrb r0, [r5] cmp r0, #0 bne _0801F79C adds r0, r4, #0 movs r1, #1 movs r2, #0x48 bl sub_08049F64 cmp r0, #0 beq _0801F7D6 _0801F79C: movs r0, #2 strb r0, [r4, #0xc] ldrb r1, [r4, #0x18] subs r0, #6 ands r0, r1 movs r1, #1 orrs r0, r1 strb r0, [r4, #0x18] strb r6, [r5] adds r0, r4, #0 movs r1, #0 bl UpdateSprite b _0801F7D6 _0801F7B8: ldrb r0, [r4, #0xc] cmp r0, #4 bne _0801F7C6 adds r0, r4, #0 bl sub_0801F730 b _0801F7D6 _0801F7C6: cmp r0, #8 bne _0801F7D6 movs r0, #9 strb r0, [r4, #0xc] adds r0, r4, #0 movs r1, #7 bl UpdateSprite _0801F7D6: pop {r4, r5, r6, pc} thumb_func_start sub_0801F7D8 sub_0801F7D8: @ 0x0801F7D8 push {r4, r5, lr} adds r4, r0, #0 bl sub_0804A720 movs r5, #0 movs r0, #1 strb r0, [r4, #0xc] bl Random strb r0, [r4, #0xe] adds r0, r4, #0 adds r0, #0x45 ldrb r1, [r0] adds r0, #0x3b strb r1, [r0] adds r4, #0x82 strb r5, [r4] pop {r4, r5, pc} thumb_func_start sub_0801F7FC sub_0801F7FC: @ 0x0801F7FC push {r4, r5, lr} adds r4, r0, #0 movs r1, #1 bl sub_08049FDC cmp r0, #0 beq _0801F83E adds r5, r4, #0 adds r5, #0x82 ldrb r0, [r5] cmp r0, #0 bne _0801F822 adds r0, r4, #0 movs r1, #1 movs r2, #0x48 bl sub_08049F64 cmp r0, #0 beq _0801F83E _0801F822: movs r0, #2 strb r0, [r4, #0xc] ldrb r1, [r4, #0x18] subs r0, #6 ands r0, r1 movs r1, #1 orrs r0, r1 strb r0, [r4, #0x18] movs r0, #1 strb r0, [r5] adds r0, r4, #0 movs r1, #0 bl UpdateSprite _0801F83E: pop {r4, r5, pc} thumb_func_start sub_0801F840 sub_0801F840: @ 0x0801F840 push {r4, lr} adds r4, r0, #0 bl sub_08004274 adds r0, r4, #0 adds r0, #0x5a ldrb r1, [r0] movs r0, #0x80 ands r0, r1 cmp r0, #0 beq _0801F880 adds r0, r4, #0 bl sub_0801FB14 ldrb r1, [r4, #0x10] movs r0, #0x80 orrs r0, r1 strb r0, [r4, #0x10] adds r2, r4, #0 adds r2, #0x29 ldrb r1, [r2] movs r0, #8 rsbs r0, r0, #0 ands r0, r1 movs r1, #4 orrs r0, r1 movs r1, #0x39 rsbs r1, r1, #0 ands r0, r1 movs r1, #0x18 orrs r0, r1 strb r0, [r2] _0801F880: pop {r4, pc} .align 2, 0 thumb_func_start sub_0801F884 sub_0801F884: @ 0x0801F884 push {r4, lr} adds r4, r0, #0 bl sub_08004274 ldrb r0, [r4, #0xf] cmp r0, #0 beq _0801F898 subs r0, #1 strb r0, [r4, #0xf] b _0801F8BC _0801F898: adds r0, r4, #0 movs r1, #0x1b bl sub_0804A9FC adds r1, r0, #0 cmp r1, #0 beq _0801F8BC movs r0, #0x40 strb r0, [r1, #0xb] movs r0, #4 strb r0, [r4, #0xc] adds r1, r4, #0 adds r1, #0x3f movs r0, #0xa5 strb r0, [r1] adds r0, #0xee bl sub_08004488 _0801F8BC: pop {r4, pc} .align 2, 0 thumb_func_start sub_0801F8C0 sub_0801F8C0: @ 0x0801F8C0 push {r4, r5, lr} adds r4, r0, #0 bl sub_0801FBD0 cmp r0, #0 beq _0801F8D4 adds r0, r4, #0 bl sub_0801FAE0 b _0801F938 _0801F8D4: adds r0, r4, #0 movs r1, #1 bl sub_08049FDC cmp r0, #0 bne _0801F8E8 adds r0, r4, #0 bl sub_0801F730 b _0801F938 _0801F8E8: ldrb r0, [r4, #0xe] adds r0, #1 strb r0, [r4, #0xe] movs r1, #0xff adds r5, r0, #0 ands r5, r1 movs r0, #7 ands r5, r0 cmp r5, #0 bne _0801F91C ldr r0, _0801F918 @ =gUnk_020000B0 ldr r1, [r0] adds r0, r4, #0 movs r2, #0x38 bl sub_08049F1C cmp r0, #0 beq _0801F91C movs r0, #5 strb r0, [r4, #0xc] adds r0, r4, #0 bl sub_0801FBE4 b _0801F938 .align 2, 0 _0801F918: .4byte gUnk_020000B0 _0801F91C: cmp r5, #4 bne _0801F92C ldr r0, _0801F93C @ =gUnk_020000B0 ldr r1, [r0] adds r0, r4, #0 bl sub_080045C4 strb r0, [r4, #0x15] _0801F92C: adds r0, r4, #0 bl sub_080AEF88 adds r0, r4, #0 bl sub_08004274 _0801F938: pop {r4, r5, pc} .align 2, 0 _0801F93C: .4byte gUnk_020000B0 thumb_func_start sub_0801F940 sub_0801F940: @ 0x0801F940 push {r4, lr} adds r4, r0, #0 adds r2, r4, #0 adds r2, #0x5a ldrb r1, [r2] movs r0, #0x10 ands r0, r1 cmp r0, #0 beq _0801F988 movs r0, #1 ands r0, r1 cmp r0, #0 beq _0801F966 movs r0, #1 eors r0, r1 strb r0, [r2] ldr r0, _0801F984 @ =0x0000012B bl sub_08004488 _0801F966: adds r0, r4, #0 bl sub_080AEFE0 movs r1, #0x80 lsls r1, r1, #7 adds r0, r4, #0 bl sub_08003FC4 cmp r0, #0 bne _0801F98E adds r0, r4, #0 bl sub_08004274 b _0801F98E .align 2, 0 _0801F984: .4byte 0x0000012B _0801F988: adds r0, r4, #0 bl sub_08004274 _0801F98E: adds r0, r4, #0 adds r0, #0x5a ldrb r1, [r0] movs r0, #0x80 ands r0, r1 cmp r0, #0 beq _0801F9C2 adds r0, r4, #0 bl sub_0801FBD0 cmp r0, #0 beq _0801F9AE adds r0, r4, #0 bl sub_0801FAE0 b _0801F9C2 _0801F9AE: movs r0, #6 strb r0, [r4, #0xc] movs r0, #0x3c strb r0, [r4, #0xf] movs r0, #0x20 strh r0, [r4, #0x24] adds r0, r4, #0 movs r1, #2 bl UpdateSprite _0801F9C2: pop {r4, pc} thumb_func_start sub_0801F9C4 sub_0801F9C4: @ 0x0801F9C4 push {lr} adds r1, r0, #0 ldrb r0, [r1, #0xf] subs r0, #1 strb r0, [r1, #0xf] lsls r0, r0, #0x18 cmp r0, #0 bne _0801F9D8 movs r0, #4 strb r0, [r1, #0xc] _0801F9D8: adds r0, r1, #0 bl sub_08004274 pop {pc} thumb_func_start sub_0801F9E0 sub_0801F9E0: @ 0x0801F9E0 push {r4, lr} adds r4, r0, #0 bl sub_08004274 adds r0, r4, #0 adds r0, #0x5a ldrb r1, [r0] movs r0, #0x80 ands r0, r1 cmp r0, #0 beq _0801FA2C movs r0, #8 strb r0, [r4, #0xc] movs r0, #0x1e strb r0, [r4, #0xf] adds r0, r4, #0 movs r1, #1 bl sub_08049F84 strb r0, [r4, #0x15] adds r2, r4, #0 adds r2, #0x29 ldrb r1, [r2] movs r0, #0x39 rsbs r0, r0, #0 ands r0, r1 movs r1, #0x10 orrs r0, r1 movs r1, #8 rsbs r1, r1, #0 ands r0, r1 movs r1, #6 orrs r0, r1 strb r0, [r2] adds r0, r4, #0 movs r1, #1 bl UpdateSprite _0801FA2C: pop {r4, pc} .align 2, 0 thumb_func_start sub_0801FA30 sub_0801FA30: @ 0x0801FA30 push {r4, lr} adds r4, r0, #0 bl sub_0801FBD0 cmp r0, #0 beq _0801FA54 adds r0, r4, #0 movs r1, #1 bl sub_08049F84 strb r0, [r4, #0x15] adds r0, r4, #0 bl sub_080AF160 adds r0, r4, #0 bl sub_08004274 b _0801FA74 _0801FA54: adds r0, r4, #0 movs r1, #1 bl sub_08049FDC cmp r0, #0 bne _0801FA6E movs r0, #9 strb r0, [r4, #0xc] adds r0, r4, #0 movs r1, #7 bl UpdateSprite b _0801FA74 _0801FA6E: adds r0, r4, #0 bl sub_0801FAF8 _0801FA74: pop {r4, pc} .align 2, 0 thumb_func_start sub_0801FA78 sub_0801FA78: @ 0x0801FA78 push {r4, lr} adds r4, r0, #0 bl sub_08004274 adds r0, r4, #0 adds r0, #0x5a ldrb r1, [r0] movs r0, #0x80 ands r0, r1 cmp r0, #0 beq _0801FAA8 movs r0, #1 strb r0, [r4, #0xc] ldrb r1, [r4, #0x18] subs r0, #5 ands r0, r1 strb r0, [r4, #0x18] adds r0, r4, #0 movs r1, #4 bl UpdateSprite adds r0, r4, #0 bl sub_0804AA1C _0801FAA8: pop {r4, pc} .align 2, 0 thumb_func_start sub_0801FAAC sub_0801FAAC: @ 0x0801FAAC push {r4, lr} adds r4, r0, #0 movs r1, #0xc0 lsls r1, r1, #5 bl sub_08003FC4 adds r0, r4, #0 bl sub_08004274 adds r0, r4, #0 adds r0, #0x5a ldrb r1, [r0] movs r0, #0x80 ands r0, r1 cmp r0, #0 beq _0801FADC adds r0, r4, #0 bl sub_0801FB14 movs r0, #0x20 strh r0, [r4, #0x24] adds r0, r4, #0 bl sub_0804AA1C _0801FADC: pop {r4, pc} .align 2, 0 thumb_func_start sub_0801FAE0 sub_0801FAE0: @ 0x0801FAE0 push {lr} movs r1, #7 strb r1, [r0, #0xc] ldrb r2, [r0, #0x10] movs r1, #0x7f ands r1, r2 strb r1, [r0, #0x10] movs r1, #5 bl UpdateSprite pop {pc} .align 2, 0 thumb_func_start sub_0801FAF8 sub_0801FAF8: @ 0x0801FAF8 push {lr} movs r1, #2 strb r1, [r0, #0xc] ldrb r2, [r0, #0x18] subs r1, #6 ands r1, r2 movs r2, #1 orrs r1, r2 strb r1, [r0, #0x18] movs r1, #4 bl UpdateSprite pop {pc} .align 2, 0 thumb_func_start sub_0801FB14 sub_0801FB14: @ 0x0801FB14 push {r4, lr} adds r4, r0, #0 movs r0, #3 strb r0, [r4, #0xc] movs r0, #0x1e strb r0, [r4, #0xf] adds r0, r4, #0 movs r1, #1 bl sub_08049F84 strb r0, [r4, #0x15] adds r0, r4, #0 movs r1, #2 bl UpdateSprite pop {r4, pc} thumb_func_start sub_0801FB34 sub_0801FB34: @ 0x0801FB34 push {r4, lr} adds r4, r0, #0 ldr r3, [r4, #0x68] cmp r3, #0 beq _0801FB62 ldr r2, _0801FB64 @ =gUnk_080CA2B4 adds r0, #0x5a ldrb r1, [r0] movs r0, #0xf ands r0, r1 adds r0, r0, r2 movs r2, #0 ldrsb r2, [r0, r2] adds r0, r4, #0 adds r1, r3, #0 movs r3, #1 bl sub_0806FA90 ldr r1, [r4, #0x68] adds r1, #0x63 ldrb r0, [r1] subs r0, #1 strb r0, [r1] _0801FB62: pop {r4, pc} .align 2, 0 _0801FB64: .4byte gUnk_080CA2B4 thumb_func_start sub_0801FB68 sub_0801FB68: @ 0x0801FB68 push {r4, lr} adds r4, r0, #0 ldrb r0, [r4, #0xa] cmp r0, #1 beq _0801FB88 cmp r0, #1 bgt _0801FB7C cmp r0, #0 beq _0801FB82 b _0801FBC8 _0801FB7C: cmp r0, #2 beq _0801FBB6 b _0801FBC8 _0801FB82: movs r0, #9 strb r0, [r4, #0xc] b _0801FBC8 _0801FB88: movs r0, #0xa strb r0, [r4, #0xc] ldrb r1, [r4, #0x10] movs r0, #0x80 orrs r0, r1 strb r0, [r4, #0x10] ldrb r1, [r4, #0x18] movs r0, #4 rsbs r0, r0, #0 ands r0, r1 movs r1, #1 orrs r0, r1 strb r0, [r4, #0x18] adds r2, r4, #0 adds r2, #0x29 ldrb r1, [r2] movs r0, #0x39 rsbs r0, r0, #0 ands r0, r1 movs r1, #0x18 orrs r0, r1 strb r0, [r2] b _0801FBC8 _0801FBB6: movs r0, #0xa strb r0, [r4, #0xc] adds r1, r4, #0 adds r1, #0x3f movs r0, #0x5c strb r0, [r1] adds r0, r4, #0 bl sub_0804AA1C _0801FBC8: movs r0, #0 str r0, [r4, #0x20] pop {r4, pc} .align 2, 0 thumb_func_start sub_0801FBD0 sub_0801FBD0: @ 0x0801FBD0 push {lr} bl sub_080002B8 cmp r0, #0x10 beq _0801FBDE movs r0, #0 b _0801FBE0 _0801FBDE: movs r0, #1 _0801FBE0: pop {pc} .align 2, 0 thumb_func_start sub_0801FBE4 sub_0801FBE4: @ 0x0801FBE4 push {r4, lr} adds r4, r0, #0 movs r0, #0xc0 lsls r0, r0, #1 strh r0, [r4, #0x24] movs r0, #0x80 lsls r0, r0, #0xa str r0, [r4, #0x20] adds r0, r4, #0 movs r1, #1 bl sub_08049F84 strb r0, [r4, #0x15] adds r0, r4, #0 movs r1, #3 bl UpdateSprite pop {r4, pc} thumb_func_start sub_0801FC08 sub_0801FC08: @ 0x0801FC08 push {r4, lr} adds r4, r0, #0 ldr r1, _0801FC24 @ =gUnk_080CA49C bl sub_0800129E movs r3, #0x10 rsbs r3, r3, #0 adds r0, r4, #0 movs r1, #0 movs r2, #1 bl sub_0804A9AC pop {r4, pc} .align 2, 0 _0801FC24: .4byte gUnk_080CA49C thumb_func_start sub_0801FC28 sub_0801FC28: @ 0x0801FC28 push {lr} ldr r2, _0801FC3C @ =gUnk_080CA4B4 ldrb r1, [r0, #0xc] lsls r1, r1, #2 adds r1, r1, r2 ldr r1, [r1] bl _call_via_r1 pop {pc} .align 2, 0 _0801FC3C: .4byte gUnk_080CA4B4 thumb_func_start sub_0801FC40 sub_0801FC40: @ 0x0801FC40 push {r4, lr} adds r4, r0, #0 adds r0, #0x41 ldrb r0, [r0] cmp r0, #0x80 bne _0801FC5C ldrb r0, [r4, #0xc] cmp r0, #3 bne _0801FC6E adds r1, r4, #0 adds r1, #0x74 movs r0, #1 strh r0, [r1] b _0801FC6E _0801FC5C: adds r0, r4, #0 adds r0, #0x43 ldrb r0, [r0] cmp r0, #0 beq _0801FC6E adds r0, r4, #0 movs r1, #0x1c bl sub_0804A9FC _0801FC6E: ldr r1, _0801FC78 @ =gUnk_080CA49C adds r0, r4, #0 bl sub_0804AA30 pop {r4, pc} .align 2, 0 _0801FC78: .4byte gUnk_080CA49C thumb_func_start sub_0801FC7C sub_0801FC7C: @ 0x0801FC7C push {lr} adds r1, r0, #0 ldrb r0, [r1, #0xa] cmp r0, #0 bne _0801FC8E adds r0, r1, #0 bl sub_0804A7D4 b _0801FC98 _0801FC8E: adds r0, r1, #0 movs r1, #0xf1 movs r2, #0 bl CreateDeathFx _0801FC98: pop {pc} .align 2, 0 thumb_func_start sub_0801FC9C sub_0801FC9C: @ 0x0801FC9C push {r4, lr} adds r4, r0, #0 bl sub_0804A720 movs r0, #1 strb r0, [r4, #0xc] bl Random strb r0, [r4, #0xe] pop {r4, pc} thumb_func_start sub_0801FCB0 sub_0801FCB0: @ 0x0801FCB0 push {r4, r5, lr} adds r5, r0, #0 ldrb r0, [r5, #0xe] subs r0, #1 strb r0, [r5, #0xe] lsls r0, r0, #0x18 cmp r0, #0 bne _0801FD28 bl Random movs r1, #0x1f ands r1, r0 adds r0, r5, #0 bl sub_0801FE68 cmp r0, #0 beq _0801FD1C movs r0, #2 strb r0, [r5, #0xc] ldrb r1, [r5, #0x18] subs r0, #6 ands r0, r1 movs r1, #1 orrs r0, r1 strb r0, [r5, #0x18] ldr r0, _0801FD14 @ =gUnk_020000B0 ldr r1, [r0] adds r0, r5, #0 bl sub_080045C4 adds r4, r0, #0 bl Random ldr r2, _0801FD18 @ =gUnk_080CA4C8 movs r1, #1 ands r1, r0 adds r1, r1, r2 ldrb r0, [r1] adds r0, r0, r4 movs r1, #0x1f ands r0, r1 strb r0, [r5, #0x15] adds r0, r5, #0 movs r1, #0 bl UpdateSprite adds r0, r5, #0 bl UpdateSpriteOrderAndFlip b _0801FD28 .align 2, 0 _0801FD14: .4byte gUnk_020000B0 _0801FD18: .4byte gUnk_080CA4C8 _0801FD1C: bl Random movs r1, #0x18 ands r0, r1 adds r0, #8 strb r0, [r5, #0xe] _0801FD28: pop {r4, r5, pc} .align 2, 0 thumb_func_start sub_0801FD2C sub_0801FD2C: @ 0x0801FD2C push {r4, lr} adds r4, r0, #0 bl sub_08004274 adds r2, r4, #0 adds r2, #0x5a ldrb r1, [r2] movs r0, #0x80 ands r0, r1 cmp r0, #0 beq _0801FD66 movs r0, #3 strb r0, [r4, #0xc] ldrb r0, [r4, #0xa] cmp r0, #0 bne _0801FD54 adds r1, r4, #0 adds r1, #0x74 movs r0, #0xb4 b _0801FD5A _0801FD54: adds r1, r4, #0 adds r1, #0x74 movs r0, #0x6e _0801FD5A: strh r0, [r1] adds r0, r4, #0 movs r1, #2 bl UpdateSprite b _0801FD7C _0801FD66: movs r0, #1 ands r0, r1 cmp r0, #0 beq _0801FD7C movs r0, #0xfe ands r0, r1 strb r0, [r2] ldrb r0, [r4, #0x10] movs r1, #0x80 orrs r0, r1 strb r0, [r4, #0x10] _0801FD7C: pop {r4, pc} .align 2, 0 thumb_func_start sub_0801FD80 sub_0801FD80: @ 0x0801FD80 push {r4, lr} adds r4, r0, #0 bl sub_0801FED4 adds r0, r4, #0 bl sub_08004274 adds r1, r4, #0 adds r1, #0x74 ldrh r0, [r1] subs r0, #1 strh r0, [r1] lsls r0, r0, #0x10 cmp r0, #0 bne _0801FDB2 movs r0, #4 strb r0, [r4, #0xc] ldrb r1, [r4, #0x10] movs r0, #0x7f ands r0, r1 strb r0, [r4, #0x10] adds r0, r4, #0 movs r1, #1 bl UpdateSprite _0801FDB2: pop {r4, pc} thumb_func_start sub_0801FDB4 sub_0801FDB4: @ 0x0801FDB4 push {r4, lr} adds r4, r0, #0 bl sub_0801FED4 adds r0, r4, #0 bl sub_08004274 adds r0, r4, #0 adds r0, #0x5a ldrb r1, [r0] movs r0, #0x80 ands r0, r1 cmp r0, #0 beq _0801FDE0 movs r0, #1 strb r0, [r4, #0xc] movs r0, #0xf0 strb r0, [r4, #0xe] ldrb r1, [r4, #0x18] subs r0, #0xf4 ands r0, r1 strb r0, [r4, #0x18] _0801FDE0: pop {r4, pc} .align 2, 0 thumb_func_start sub_0801FDE4 sub_0801FDE4: @ 0x0801FDE4 push {r4, r5, r6, r7, lr} adds r6, r0, #0 adds r4, r1, #0 adds r5, r2, #0 ldr r7, _0801FE04 @ =gUnk_020000B0 ldr r0, [r7] adds r0, #0x38 ldrb r2, [r0] adds r0, r4, #0 adds r1, r5, #0 bl sub_080002D4 cmp r0, #0 beq _0801FE34 b _0801FE5C .align 2, 0 _0801FE04: .4byte gUnk_020000B0 _0801FE08: movs r0, #0x10 rsbs r0, r0, #0 adds r1, r0, #0 ands r4, r1 adds r0, r4, #0 adds r0, #8 strh r0, [r6, #0x2e] ands r5, r1 adds r0, r5, #0 adds r0, #8 strh r0, [r6, #0x32] ldr r0, _0801FE30 @ =gUnk_020000B0 ldr r0, [r0] adds r0, #0x38 ldrb r1, [r0] adds r0, r6, #0 adds r0, #0x38 strb r1, [r0] movs r0, #1 b _0801FE5E .align 2, 0 _0801FE30: .4byte gUnk_020000B0 _0801FE34: ldr r0, [r7] adds r0, #0x38 ldrb r2, [r0] adds r0, r4, #0 adds r1, r5, #0 bl sub_080002BC adds r3, r0, #0 ldr r1, _0801FE60 @ =gUnk_080CA4CA ldrh r0, [r1] ldr r2, _0801FE64 @ =0x0000FFFF cmp r0, r2 beq _0801FE5C _0801FE4E: ldrh r0, [r1] adds r1, #2 cmp r0, r3 beq _0801FE08 ldrh r0, [r1] cmp r0, r2 bne _0801FE4E _0801FE5C: movs r0, #0 _0801FE5E: pop {r4, r5, r6, r7, pc} .align 2, 0 _0801FE60: .4byte gUnk_080CA4CA _0801FE64: .4byte 0x0000FFFF thumb_func_start sub_0801FE68 sub_0801FE68: @ 0x0801FE68 push {r4, r5, r6, r7, lr} mov r7, sb mov r6, r8 push {r6, r7} adds r7, r0, #0 adds r6, r1, #0 movs r1, #1 bl sub_08049FDC cmp r0, #0 bne _0801FE82 _0801FE7E: movs r0, #0 b _0801FEC4 _0801FE82: ldr r0, _0801FECC @ =gUnk_020000B0 ldr r0, [r0] ldr r5, [r0, #0x2c] ldr r4, [r0, #0x30] ldr r1, _0801FED0 @ =gUnk_080C9160 lsls r0, r6, #4 adds r0, r0, r1 movs r2, #0 ldrsh r0, [r0, r2] lsls r0, r0, #0xb mov sb, r0 lsls r0, r6, #4 adds r0, #0x80 adds r0, r0, r1 movs r1, #0 ldrsh r0, [r0, r1] lsls r0, r0, #0xb mov r8, r0 movs r6, #0 _0801FEA8: add r5, sb mov r2, r8 subs r4, r4, r2 asrs r1, r5, #0x10 asrs r2, r4, #0x10 adds r0, r7, #0 bl sub_0801FDE4 cmp r0, #0 beq _0801FE7E adds r6, #1 cmp r6, #7 bls _0801FEA8 movs r0, #1 _0801FEC4: pop {r3, r4} mov r8, r3 mov sb, r4 pop {r4, r5, r6, r7, pc} .align 2, 0 _0801FECC: .4byte gUnk_020000B0 _0801FED0: .4byte gUnk_080C9160 thumb_func_start sub_0801FED4 sub_0801FED4: @ 0x0801FED4 push {r4, lr} adds r4, r0, #0 movs r1, #1 bl sub_08049FDC cmp r0, #0 bne _0801FEEA adds r1, r4, #0 adds r1, #0x74 movs r0, #1 strh r0, [r1] _0801FEEA: adds r0, r4, #0 adds r0, #0x5a ldrb r0, [r0] movs r2, #0xf adds r1, r2, #0 ands r1, r0 lsls r1, r1, #5 strh r1, [r4, #0x24] ldrb r0, [r4, #0xa] cmp r0, #0 bne _0801FF28 ldrb r1, [r4, #0xf] adds r0, r1, #1 strb r0, [r4, #0xf] adds r0, r2, #0 ands r0, r1 cmp r0, #0 bne _0801FF4E ldr r0, _0801FF24 @ =gUnk_020000B0 ldr r1, [r0] adds r0, r4, #0 bl sub_0800132C adds r1, r0, #0 adds r0, r4, #0 bl sub_08004596 b _0801FF4E .align 2, 0 _0801FF24: .4byte gUnk_020000B0 _0801FF28: adds r0, r1, #0 adds r0, #0x40 strh r0, [r4, #0x24] ldrb r1, [r4, #0xf] adds r0, r1, #1 strb r0, [r4, #0xf] movs r0, #7 ands r0, r1 cmp r0, #0 bne _0801FF4E ldr r0, _0801FF58 @ =gUnk_020000B0 ldr r1, [r0] adds r0, r4, #0 bl sub_0800132C adds r1, r0, #0 adds r0, r4, #0 bl sub_08004596 _0801FF4E: adds r0, r4, #0 bl sub_080AEF88 pop {r4, pc} .align 2, 0 _0801FF58: .4byte gUnk_020000B0 thumb_func_start sub_0801FF5C sub_0801FF5C: @ 0x0801FF5C push {r4, lr} adds r4, r0, #0 ldrb r0, [r4, #0xa] cmp r0, #0 bne _0801FF84 ldr r1, _0801FF80 @ =gUnk_080CA570 adds r0, r4, #0 bl sub_0800129E movs r3, #0x10 rsbs r3, r3, #0 adds r0, r4, #0 movs r1, #0 movs r2, #1 bl sub_0804A9AC b _0801FF94 .align 2, 0 _0801FF80: .4byte gUnk_080CA570 _0801FF84: ldr r0, _0801FF98 @ =gUnk_080CA588 ldrb r1, [r4, #0xc] lsls r1, r1, #2 adds r1, r1, r0 ldr r1, [r1] adds r0, r4, #0 bl _call_via_r1 _0801FF94: pop {r4, pc} .align 2, 0 _0801FF98: .4byte gUnk_080CA588 thumb_func_start sub_0801FF9C sub_0801FF9C: @ 0x0801FF9C push {r4, lr} adds r4, r0, #0 ldr r1, _0801FFD4 @ =gUnk_080CA590 ldrb r0, [r4, #0xc] lsls r0, r0, #2 adds r0, r0, r1 ldr r1, [r0] adds r0, r4, #0 bl _call_via_r1 adds r0, r4, #0 adds r0, #0x81 ldrb r0, [r0] cmp r0, #0 beq _0801FFD2 ldr r2, _0801FFD8 @ =gUnk_080CA5B8 ldrb r1, [r4, #0xf] adds r0, r1, #1 strb r0, [r4, #0xf] movs r0, #0x30 ands r0, r1 lsrs r0, r0, #4 adds r0, r0, r2 ldrb r0, [r0] lsls r0, r0, #0x18 asrs r0, r0, #0x18 strh r0, [r4, #0x36] _0801FFD2: pop {r4, pc} .align 2, 0 _0801FFD4: .4byte gUnk_080CA590 _0801FFD8: .4byte gUnk_080CA5B8 thumb_func_start sub_0801FFDC sub_0801FFDC: @ 0x0801FFDC push {r4, r5, r6, lr} adds r4, r0, #0 adds r6, r4, #0 adds r6, #0x82 ldrb r0, [r6] cmp r0, #0 beq _08020068 adds r0, r4, #0 adds r0, #0x41 ldrb r1, [r0] cmp r1, #0x94 bne _08020018 movs r0, #3 movs r1, #1 bl CreateEnemy adds r5, r0, #0 cmp r5, #0 beq _08020010 adds r0, r4, #0 adds r1, r5, #0 bl CopyPosition ldrh r0, [r5, #0x36] subs r0, #8 strh r0, [r5, #0x36] _08020010: movs r0, #0 strb r0, [r6] movs r0, #2 b _0802001E _08020018: cmp r1, #0x9b bne _08020042 movs r0, #1 _0802001E: strb r0, [r4, #0x14] movs r0, #5 strb r0, [r4, #0xc] movs r1, #0 movs r0, #0x80 strh r0, [r4, #0x24] adds r2, r4, #0 adds r2, #0x3d movs r0, #0xe2 strb r0, [r2] adds r0, r4, #0 adds r0, #0x81 strb r1, [r0] ldrb r1, [r4, #0x14] adds r0, r4, #0 bl UpdateSprite b _08020068 _08020042: cmp r1, #0x80 bne _08020068 ldrb r0, [r4, #0x14] cmp r0, #0 bne _08020068 movs r0, #1 strb r0, [r4, #0xc] movs r0, #0x1e strb r0, [r4, #0xe] strh r1, [r4, #0x24] movs r0, #0xff strb r0, [r4, #0x15] adds r1, r4, #0 adds r1, #0x83 movs r0, #0x78 strb r0, [r1] adds r0, r4, #0 bl sub_08004274 _08020068: adds r0, r4, #0 adds r0, #0x43 ldrb r0, [r0] cmp r0, #0 beq _0802007A adds r0, r4, #0 movs r1, #0x1c bl sub_0804A9FC _0802007A: ldr r1, _08020084 @ =gUnk_080CA570 adds r0, r4, #0 bl sub_0804AA30 pop {r4, r5, r6, pc} .align 2, 0 _08020084: .4byte gUnk_080CA570 thumb_func_start sub_08020088 sub_08020088: @ 0x08020088 push {r4, lr} adds r4, r0, #0 ldrb r0, [r4, #0xd] cmp r0, #2 bhi _0802009C adds r0, r4, #0 bl sub_0806F520 cmp r0, #0 beq _080200AC _0802009C: ldr r0, _080200B0 @ =gUnk_080CA5BC ldrb r1, [r4, #0xd] lsls r1, r1, #2 adds r1, r1, r0 ldr r1, [r1] adds r0, r4, #0 bl _call_via_r1 _080200AC: pop {r4, pc} .align 2, 0 _080200B0: .4byte gUnk_080CA5BC thumb_func_start sub_080200B4 sub_080200B4: @ 0x080200B4 push {lr} adds r2, r0, #0 movs r1, #1 strb r1, [r2, #0xd] movs r0, #0x3c strb r0, [r2, #0x1d] ldrb r3, [r2, #0x14] cmp r3, #0 bne _080200E2 strb r1, [r2, #0x14] movs r0, #5 strb r0, [r2, #0xc] adds r1, r2, #0 adds r1, #0x3f movs r0, #0x71 strb r0, [r1] adds r0, r2, #0 adds r0, #0x81 strb r3, [r0] ldrb r1, [r2, #0x14] adds r0, r2, #0 bl UpdateSprite _080200E2: pop {pc} thumb_func_start sub_080200E4 sub_080200E4: @ 0x080200E4 push {lr} bl sub_0806F4E8 pop {pc} thumb_func_start sub_080200EC sub_080200EC: @ 0x080200EC push {lr} bl sub_0806F3E4 pop {pc} thumb_func_start sub_080200F4 sub_080200F4: @ 0x080200F4 ldrb r2, [r0, #0x10] movs r1, #0x7f ands r1, r2 strb r1, [r0, #0x10] bx lr .align 2, 0 thumb_func_start nullsub_5 nullsub_5: @ 0x08020100 bx lr .align 2, 0 thumb_func_start sub_08020104 sub_08020104: @ 0x08020104 push {lr} adds r2, r0, #0 ldrb r3, [r2, #0x10] movs r0, #0x80 ands r0, r3 lsls r0, r0, #0x18 lsrs r1, r0, #0x18 cmp r1, #0 beq _08020128 movs r0, #0x80 orrs r0, r3 strb r0, [r2, #0x10] adds r2, #0x3a ldrb r1, [r2] movs r0, #0xfb ands r0, r1 strb r0, [r2] b _0802012E _08020128: adds r0, r2, #0 adds r0, #0x45 strb r1, [r0] _0802012E: pop {pc} thumb_func_start sub_08020130 sub_08020130: @ 0x08020130 push {r4, r5, lr} adds r4, r0, #0 bl sub_0804A720 movs r5, #1 strb r5, [r4, #0xc] movs r0, #0x10 strb r0, [r4, #0xe] bl Random strb r0, [r4, #0xf] bl Random movs r1, #0x1f ands r0, r1 strb r0, [r4, #0x15] movs r0, #0x12 strb r0, [r4, #0x1c] bl Random ands r0, r5 movs r1, #0xfe cmp r0, #0 beq _08020162 movs r1, #2 _08020162: adds r0, r4, #0 adds r0, #0x80 strb r1, [r0] adds r0, #1 strb r5, [r0] adds r0, #1 strb r5, [r0] movs r0, #0 strb r0, [r4, #0x14] adds r0, r4, #0 movs r1, #0 bl UpdateSprite pop {r4, r5, pc} .align 2, 0 thumb_func_start sub_08020180 sub_08020180: @ 0x08020180 push {r4, r5, lr} adds r4, r0, #0 adds r5, r4, #0 adds r5, #0x83 ldrb r0, [r5] cmp r0, #0 beq _08020192 subs r0, #1 strb r0, [r5] _08020192: adds r0, r4, #0 movs r1, #1 bl sub_08049FDC cmp r0, #0 beq _080201D4 ldrb r0, [r5] cmp r0, #0 bne _080201D4 ldrb r1, [r4, #0xf] movs r0, #0xf ands r0, r1 cmp r0, #0 bne _080201D4 ldr r0, _0802021C @ =gUnk_020000B0 ldr r1, [r0] adds r0, r4, #0 movs r2, #0x30 bl sub_08049F1C cmp r0, #0 beq _080201D4 movs r0, #2 strb r0, [r4, #0xc] bl Random movs r1, #3 ands r0, r1 strb r0, [r4, #0xd] movs r0, #0x3c strb r0, [r4, #0xe] movs r0, #0xa0 strh r0, [r4, #0x24] _080201D4: ldrb r0, [r4, #0xe] subs r0, #1 strb r0, [r4, #0xe] lsls r0, r0, #0x18 cmp r0, #0 bne _0802020C movs r0, #0x10 strb r0, [r4, #0xe] adds r0, r4, #0 bl sub_08020604 bl Random movs r1, #3 ands r1, r0 cmp r1, #0 bne _0802020C bl Random movs r1, #1 ands r1, r0 movs r2, #0xfe cmp r1, #0 beq _08020206 movs r2, #2 _08020206: adds r0, r4, #0 adds r0, #0x80 strb r2, [r0] _0802020C: adds r0, r4, #0 bl sub_080AEFE0 adds r0, r4, #0 bl sub_08004274 pop {r4, r5, pc} .align 2, 0 _0802021C: .4byte gUnk_020000B0 thumb_func_start sub_08020220 sub_08020220: @ 0x08020220 push {r4, r5, lr} adds r5, r0, #0 movs r1, #1 bl sub_08049FDC cmp r0, #0 beq _08020284 ldrb r0, [r5, #0xe] subs r1, r0, #1 strb r1, [r5, #0xe] lsls r0, r1, #0x18 cmp r0, #0 beq _0802024C lsrs r0, r0, #0x1c movs r1, #3 ands r0, r1 movs r1, #4 subs r1, r1, r0 adds r0, r5, #0 bl UpdateSpriteAnimation b _08020292 _0802024C: movs r0, #3 strb r0, [r5, #0xc] movs r0, #0x78 strb r0, [r5, #0xe] movs r0, #0xc0 strh r0, [r5, #0x24] ldr r0, _0802027C @ =gUnk_020000B0 ldr r1, [r0] adds r0, r5, #0 bl sub_080045C4 adds r4, r0, #0 bl Random ldr r2, _08020280 @ =gUnk_080CA5D4 movs r1, #1 ands r1, r0 adds r1, r1, r2 ldrb r0, [r1] adds r0, r0, r4 movs r1, #0x1f ands r0, r1 strb r0, [r5, #0x15] b _0802028A .align 2, 0 _0802027C: .4byte gUnk_020000B0 _08020280: .4byte gUnk_080CA5D4 _08020284: adds r0, r5, #0 bl sub_080205F8 _0802028A: adds r0, r5, #0 movs r1, #4 bl UpdateSpriteAnimation _08020292: pop {r4, r5, pc} thumb_func_start sub_08020294 sub_08020294: @ 0x08020294 push {r4, lr} adds r4, r0, #0 movs r1, #1 bl sub_08049FDC cmp r0, #0 beq _080202F8 ldrb r0, [r4, #0xe] subs r0, #1 strb r0, [r4, #0xe] lsls r0, r0, #0x18 cmp r0, #0 bne _080202B4 adds r0, r4, #0 bl sub_080205F8 _080202B4: ldrb r1, [r4, #0xe] cmp r1, #0x3c bls _080202E6 movs r0, #1 ands r0, r1 cmp r0, #0 beq _080202C8 ldrh r0, [r4, #0x24] adds r0, #4 strh r0, [r4, #0x24] _080202C8: ldr r0, _080202F0 @ =gUnk_030010A0 ldr r0, [r0] movs r1, #3 ands r0, r1 cmp r0, #0 bne _080202E6 ldr r0, _080202F4 @ =gUnk_020000B0 ldr r1, [r0] adds r0, r4, #0 bl sub_080045C4 adds r1, r0, #0 adds r0, r4, #0 bl sub_08004596 _080202E6: adds r0, r4, #0 bl sub_080AEFE0 b _080202FE .align 2, 0 _080202F0: .4byte gUnk_030010A0 _080202F4: .4byte gUnk_020000B0 _080202F8: adds r0, r4, #0 bl sub_080205F8 _080202FE: adds r0, r4, #0 movs r1, #4 bl UpdateSpriteAnimation pop {r4, pc} thumb_func_start sub_08020308 sub_08020308: @ 0x08020308 push {r4, lr} adds r4, r0, #0 ldrb r0, [r4, #0xe] subs r1, r0, #1 strb r1, [r4, #0xe] lsls r0, r1, #0x18 cmp r0, #0 bne _08020332 movs r0, #1 strb r0, [r4, #0xc] strb r0, [r4, #0xe] movs r0, #0x80 strh r0, [r4, #0x24] adds r1, r4, #0 adds r1, #0x83 movs r0, #0x78 strb r0, [r1] adds r0, r4, #0 bl sub_08004274 b _0802034E _08020332: movs r0, #1 ands r1, r0 cmp r1, #0 beq _08020340 ldrh r0, [r4, #0x24] subs r0, #8 strh r0, [r4, #0x24] _08020340: adds r0, r4, #0 bl sub_080AEFE0 adds r0, r4, #0 movs r1, #4 bl UpdateSpriteAnimation _0802034E: pop {r4, pc} thumb_func_start sub_08020350 sub_08020350: @ 0x08020350 push {r4, lr} adds r4, r0, #0 ldrb r0, [r4, #0x14] cmp r0, #2 beq _08020398 movs r1, #0xc0 lsls r1, r1, #5 adds r0, r4, #0 bl sub_080044EC cmp r0, #0 bne _0802037C movs r0, #6 strb r0, [r4, #0xc] movs r0, #0xf0 strb r0, [r4, #0xe] movs r0, #0xa strb r0, [r4, #0xf] adds r1, r4, #0 adds r1, #0x3f movs r0, #0x71 strb r0, [r1] _0802037C: ldrb r0, [r4, #0x15] cmp r0, #0xff bne _0802038A adds r0, r4, #0 adds r0, #0x3e ldrb r0, [r0] strb r0, [r4, #0x15] _0802038A: adds r0, r4, #0 bl sub_080AEF88 adds r0, r4, #0 bl sub_08004274 b _080203BE _08020398: movs r1, #0xe0 lsls r1, r1, #5 adds r0, r4, #0 bl sub_08003FC4 movs r1, #0x36 ldrsh r0, [r4, r1] cmp r0, #0 bne _080203BE movs r0, #7 strb r0, [r4, #0xc] movs r0, #0x96 strb r0, [r4, #0xe] movs r0, #0xa strb r0, [r4, #0xf] adds r1, r4, #0 adds r1, #0x3f movs r0, #0x71 strb r0, [r1] _080203BE: pop {r4, pc} thumb_func_start sub_080203C0 sub_080203C0: @ 0x080203C0 push {r4, lr} adds r4, r0, #0 ldrb r0, [r4, #0xf] cmp r0, #0 beq _080203DC subs r0, #1 strb r0, [r4, #0xf] lsls r0, r0, #0x18 cmp r0, #0 bne _080203DC adds r0, r4, #0 movs r1, #0x1c bl sub_0804A9FC _080203DC: adds r0, r4, #0 bl sub_0800442E cmp r0, #0 bne _080203F2 ldrb r0, [r4, #0xe] subs r0, #1 strb r0, [r4, #0xe] lsls r0, r0, #0x18 cmp r0, #0 bne _08020418 _080203F2: movs r0, #9 strb r0, [r4, #0xc] movs r0, #0xc0 lsls r0, r0, #9 str r0, [r4, #0x20] bl Random movs r1, #0x1f ands r0, r1 strb r0, [r4, #0x15] adds r0, r4, #0 bl sub_0804AA1C movs r0, #5 strb r0, [r4, #0x14] adds r0, r4, #0 movs r1, #5 bl UpdateSprite _08020418: pop {r4, pc} .align 2, 0 thumb_func_start sub_0802041C sub_0802041C: @ 0x0802041C push {r4, lr} adds r4, r0, #0 ldrb r0, [r4, #0xf] cmp r0, #0 beq _08020438 subs r0, #1 strb r0, [r4, #0xf] lsls r0, r0, #0x18 cmp r0, #0 bne _08020438 adds r0, r4, #0 movs r1, #0x1c bl sub_0804A9FC _08020438: adds r0, r4, #0 bl sub_0800442E cmp r0, #0 bne _0802044E ldrb r0, [r4, #0xe] subs r0, #1 strb r0, [r4, #0xe] lsls r0, r0, #0x18 cmp r0, #0 bne _08020466 _0802044E: movs r0, #8 strb r0, [r4, #0xc] movs r0, #0xf0 strb r0, [r4, #0xe] bl Random movs r1, #0x1f ands r0, r1 strb r0, [r4, #0x15] adds r0, r4, #0 bl sub_0804AA1C _08020466: pop {r4, pc} thumb_func_start sub_08020468 sub_08020468: @ 0x08020468 push {r4, r5, lr} adds r4, r0, #0 bl sub_08004274 ldrb r0, [r4, #0xe] subs r0, #1 strb r0, [r4, #0xe] lsls r0, r0, #0x18 cmp r0, #0 bne _080204A6 adds r0, r4, #0 adds r0, #0x5a ldrb r1, [r0] movs r0, #0x80 ands r0, r1 cmp r0, #0 beq _080204A2 movs r0, #9 strb r0, [r4, #0xc] movs r0, #0xc0 lsls r0, r0, #9 str r0, [r4, #0x20] movs r0, #4 strb r0, [r4, #0x14] adds r0, r4, #0 movs r1, #4 bl UpdateSprite b _080204A6 _080204A2: movs r0, #1 strb r0, [r4, #0xe] _080204A6: adds r5, r4, #0 adds r5, #0x5a ldrb r1, [r5] movs r0, #2 ands r0, r1 cmp r0, #0 beq _080204C4 movs r0, #0xfd ands r0, r1 strb r0, [r5] bl Random movs r1, #0x1f ands r0, r1 strb r0, [r4, #0x15] _080204C4: ldrb r1, [r5] movs r0, #1 ands r0, r1 cmp r0, #0 beq _080204D6 adds r0, r4, #0 bl sub_0800442E b _080204DC _080204D6: adds r0, r4, #0 bl sub_080AEF88 _080204DC: pop {r4, r5, pc} .align 2, 0 thumb_func_start sub_080204E0 sub_080204E0: @ 0x080204E0 push {r4, lr} adds r4, r0, #0 bl sub_08004274 adds r0, r4, #0 adds r0, #0x5a ldrb r1, [r0] movs r0, #0x80 ands r0, r1 cmp r0, #0 beq _0802051A movs r2, #0 movs r1, #1 strb r1, [r4, #0xc] adds r3, r4, #0 adds r3, #0x3f movs r0, #0x70 strb r0, [r3] adds r0, r4, #0 adds r0, #0x82 strb r1, [r0] subs r0, #1 strb r1, [r0] strb r2, [r4, #0x14] adds r0, r4, #0 movs r1, #0 bl UpdateSprite b _0802053A _0802051A: movs r0, #1 ands r0, r1 cmp r0, #0 beq _0802052A adds r0, r4, #0 bl sub_0800442E b _0802053A _0802052A: movs r1, #0xe0 lsls r1, r1, #5 adds r0, r4, #0 bl sub_08003FC4 adds r0, r4, #0 bl sub_080AEF88 _0802053A: pop {r4, pc} thumb_func_start sub_0802053C sub_0802053C: @ 0x0802053C push {r4, lr} adds r4, r0, #0 movs r1, #1 movs r0, #1 strb r0, [r4, #0xc] movs r0, #0xf0 strb r0, [r4, #0xe] movs r0, #0x28 strb r0, [r4, #0xf] ldrb r0, [r4, #0x18] movs r2, #4 rsbs r2, r2, #0 ands r2, r0 orrs r2, r1 ldrb r3, [r4, #0x19] movs r1, #0x3f adds r0, r1, #0 ands r0, r3 movs r3, #0x40 orrs r0, r3 strb r0, [r4, #0x19] ldrb r0, [r4, #0x1b] ands r1, r0 orrs r1, r3 strb r1, [r4, #0x1b] movs r0, #0x31 rsbs r0, r0, #0 ands r2, r0 strb r2, [r4, #0x18] movs r0, #0x20 strh r0, [r4, #0x24] bl Random movs r1, #0x10 ands r0, r1 adds r0, #8 strb r0, [r4, #0x15] adds r0, r4, #0 movs r1, #3 bl UpdateSprite pop {r4, pc} thumb_func_start sub_08020590 sub_08020590: @ 0x08020590 push {r4, r5, lr} adds r4, r0, #0 bl sub_08004274 ldrb r0, [r4, #0xe] subs r1, r0, #1 strb r1, [r4, #0xe] movs r5, #0xff lsls r0, r1, #0x18 cmp r0, #0 bne _080205AE adds r0, r4, #0 bl sub_0805E7BC b _080205F2 _080205AE: lsls r0, r1, #0x18 lsrs r0, r0, #0x18 cmp r0, #0x3b bhi _080205C8 ldrb r2, [r4, #0x18] lsls r1, r2, #0x1e lsrs r1, r1, #0x1e movs r0, #1 eors r1, r0 subs r0, #5 ands r0, r2 orrs r0, r1 strb r0, [r4, #0x18] _080205C8: ldr r0, [r4, #0x34] ldr r1, _080205F4 @ =0xFFFF4000 adds r0, r0, r1 str r0, [r4, #0x34] adds r0, r4, #0 bl sub_0806F69C ldrb r0, [r4, #0xf] subs r0, #1 strb r0, [r4, #0xf] ands r0, r5 cmp r0, #0 bne _080205F2 movs r0, #0x28 strb r0, [r4, #0xf] bl Random movs r1, #0x10 ands r0, r1 adds r0, #8 strb r0, [r4, #0x15] _080205F2: pop {r4, r5, pc} .align 2, 0 _080205F4: .4byte 0xFFFF4000 thumb_func_start sub_080205F8 sub_080205F8: @ 0x080205F8 movs r1, #4 strb r1, [r0, #0xc] movs r1, #0x3c strb r1, [r0, #0xe] bx lr .align 2, 0 thumb_func_start sub_08020604 sub_08020604: @ 0x08020604 push {r4, lr} adds r4, r0, #0 bl sub_08049FA0 cmp r0, #0 bne _08020624 bl Random movs r1, #3 ands r1, r0 cmp r1, #0 beq _08020624 adds r0, r4, #0 bl sub_08049EE4 b _08020632 _08020624: adds r0, r4, #0 adds r0, #0x80 ldrb r0, [r0] ldrb r1, [r4, #0x15] adds r0, r0, r1 movs r1, #0x1f ands r0, r1 _08020632: strb r0, [r4, #0x15] pop {r4, pc} .align 2, 0 thumb_func_start sub_08020638 sub_08020638: @ 0x08020638 push {lr} ldr r1, _08020644 @ =gUnk_080CA66C bl sub_0800129E pop {pc} .align 2, 0 _08020644: .4byte gUnk_080CA66C thumb_func_start sub_08020648 sub_08020648: @ 0x08020648 push {r4, lr} adds r4, r0, #0 bl sub_08020AD0 ldr r1, _08020664 @ =gUnk_080CA684 ldrb r0, [r4, #0xc] lsls r0, r0, #2 adds r0, r0, r1 ldr r1, [r0] adds r0, r4, #0 bl _call_via_r1 pop {r4, pc} .align 2, 0 _08020664: .4byte gUnk_080CA684 thumb_func_start sub_08020668 sub_08020668: @ 0x08020668 push {r4, r5, lr} adds r4, r0, #0 adds r2, r4, #0 adds r2, #0x3f ldrb r0, [r2] cmp r0, #0x22 bne _080206A2 adds r1, r4, #0 adds r1, #0x45 ldrb r0, [r1] cmp r0, #0xff beq _080206A2 movs r0, #4 strb r0, [r4, #0xc] movs r0, #0x80 lsls r0, r0, #0xa str r0, [r4, #0x20] movs r0, #0xff strb r0, [r4, #0x15] movs r0, #1 rsbs r0, r0, #0 strb r0, [r1] movs r0, #0x23 strb r0, [r2] ldrb r1, [r4, #0x14] adds r1, #8 adds r0, r4, #0 bl UpdateSprite _080206A2: adds r0, r4, #0 adds r0, #0x41 ldrb r1, [r0] adds r5, r0, #0 cmp r1, #0x80 beq _080206D0 ldrb r0, [r4, #0xc] subs r0, #4 lsls r0, r0, #0x18 lsrs r0, r0, #0x18 cmp r0, #1 bhi _080206D0 movs r0, #4 strb r0, [r4, #0xc] movs r0, #0xb4 strb r0, [r4, #0xe] movs r0, #0xff strb r0, [r4, #0x15] ldrb r1, [r4, #0x14] adds r1, #0x10 adds r0, r4, #0 bl UpdateSprite _080206D0: ldrb r0, [r5] cmp r0, #0x93 bne _080206DC adds r0, r4, #0 bl sub_08020648 _080206DC: pop {r4, r5, pc} .align 2, 0 thumb_func_start sub_080206E0 sub_080206E0: @ 0x080206E0 push {r4, r5, lr} adds r4, r0, #0 bl sub_08020AD0 cmp r0, #0 beq _080206F6 adds r1, r4, #0 adds r1, #0x42 movs r0, #0 strb r0, [r1] b _08020730 _080206F6: adds r0, r4, #0 bl sub_08020B6C cmp r0, #0 beq _0802072A adds r1, r4, #0 adds r1, #0x42 ldrb r0, [r1] subs r0, #1 strb r0, [r1] adds r5, r4, #0 adds r5, #0x3e ldrb r1, [r5] adds r0, r4, #0 movs r2, #0xa bl sub_080AE58C adds r0, r4, #0 adds r0, #0x46 ldrh r1, [r0] ldrb r2, [r5] adds r0, r4, #0 movs r3, #0xa bl sub_080AE7E8 b _08020730 _0802072A: adds r0, r4, #0 bl sub_08001324 _08020730: pop {r4, r5, pc} .align 2, 0 thumb_func_start sub_08020734 sub_08020734: @ 0x08020734 push {r4, lr} adds r4, r0, #0 ldrb r0, [r4, #0xd] cmp r0, #2 bhi _08020764 adds r0, r4, #0 bl sub_0806F520 cmp r0, #0 bne _08020764 movs r0, #4 strb r0, [r4, #0xc] ldrb r1, [r4, #0x10] movs r0, #0x80 orrs r0, r1 strb r0, [r4, #0x10] movs r0, #0xff strb r0, [r4, #0x15] ldrb r1, [r4, #0x14] adds r1, #0x10 adds r0, r4, #0 bl UpdateSprite b _08020774 _08020764: ldr r0, _08020778 @ =gUnk_080CA6A4 ldrb r1, [r4, #0xd] lsls r1, r1, #2 adds r1, r1, r0 ldr r1, [r1] adds r0, r4, #0 bl _call_via_r1 _08020774: pop {r4, pc} .align 2, 0 _08020778: .4byte gUnk_080CA6A4 thumb_func_start sub_0802077C sub_0802077C: @ 0x0802077C movs r1, #1 strb r1, [r0, #0xd] movs r1, #0x3c strb r1, [r0, #0x1d] bx lr .align 2, 0 thumb_func_start sub_08020788 sub_08020788: @ 0x08020788 push {lr} bl sub_0806F4E8 pop {pc} thumb_func_start sub_08020790 sub_08020790: @ 0x08020790 push {lr} bl sub_0806F3E4 pop {pc} thumb_func_start sub_08020798 sub_08020798: @ 0x08020798 ldrb r2, [r0, #0x10] movs r1, #0x7f ands r1, r2 strb r1, [r0, #0x10] bx lr .align 2, 0 thumb_func_start nullsub_6 nullsub_6: @ 0x080207A4 bx lr .align 2, 0 thumb_func_start sub_080207A8 sub_080207A8: @ 0x080207A8 push {lr} movs r3, #4 movs r1, #4 strb r1, [r0, #0xc] ldrb r2, [r0, #0x10] movs r1, #0x80 orrs r1, r2 strb r1, [r0, #0x10] movs r1, #0x29 adds r1, r1, r0 mov ip, r1 ldrb r2, [r1] movs r1, #8 rsbs r1, r1, #0 ands r1, r2 orrs r1, r3 mov r2, ip strb r1, [r2] adds r3, r0, #0 adds r3, #0x3a ldrb r2, [r3] movs r1, #0xfb ands r1, r2 strb r1, [r3] ldrb r1, [r0, #0x15] movs r2, #0x10 eors r1, r2 strb r1, [r0, #0x15] movs r1, #0xc0 lsls r1, r1, #9 str r1, [r0, #0x20] movs r1, #0x80 strh r1, [r0, #0x24] ldrb r1, [r0, #0x14] adds r1, #0x10 bl UpdateSprite pop {pc} thumb_func_start sub_080207F4 sub_080207F4: @ 0x080207F4 push {r4, lr} adds r4, r0, #0 bl sub_0804A720 movs r1, #0 movs r0, #0x30 strb r0, [r4, #0x16] movs r0, #0x12 strb r0, [r4, #0x1c] adds r0, r4, #0 adds r0, #0x84 strb r1, [r0] bl Random movs r1, #0x18 ands r0, r1 strb r0, [r4, #0x15] adds r0, r4, #0 bl sub_08020A30 pop {r4, pc} .align 2, 0 thumb_func_start sub_08020820 sub_08020820: @ 0x08020820 push {r4, r5, lr} adds r4, r0, #0 bl sub_08004274 adds r2, r4, #0 adds r2, #0x5a ldrb r1, [r2] movs r5, #1 adds r0, r5, #0 ands r0, r1 cmp r0, #0 beq _0802084A movs r0, #0xfe ands r0, r1 strb r0, [r2] adds r0, r4, #0 bl sub_080AEF88 cmp r0, #0 bne _0802084A strb r5, [r4, #0xe] _0802084A: adds r2, r4, #0 adds r2, #0x5a ldrb r1, [r2] movs r0, #0x10 ands r0, r1 cmp r0, #0 beq _08020872 movs r0, #0xef ands r0, r1 strb r0, [r2] ldrb r0, [r4, #0xe] subs r0, #1 strb r0, [r4, #0xe] lsls r0, r0, #0x18 cmp r0, #0 bne _08020872 movs r0, #3 strb r0, [r4, #0xc] movs r0, #0x3c strb r0, [r4, #0xe] _08020872: pop {r4, r5, pc} thumb_func_start sub_08020874 sub_08020874: @ 0x08020874 push {lr} ldr r2, _08020888 @ =gUnk_080CA6BC ldrb r1, [r0, #0xd] lsls r1, r1, #2 adds r1, r1, r2 ldr r1, [r1] bl _call_via_r1 pop {pc} .align 2, 0 _08020888: .4byte gUnk_080CA6BC thumb_func_start sub_0802088C sub_0802088C: @ 0x0802088C movs r1, #1 strb r1, [r0, #0xd] ldrb r2, [r0, #0x10] movs r1, #0x7f ands r1, r2 strb r1, [r0, #0x10] ldr r1, _080208B0 @ =gLinkEntity ldrb r1, [r1, #0x14] adds r2, r0, #0 adds r2, #0x85 strb r1, [r2] adds r0, #0x29 ldrb r2, [r0] movs r1, #0x39 rsbs r1, r1, #0 ands r1, r2 strb r1, [r0] bx lr .align 2, 0 _080208B0: .4byte gLinkEntity thumb_func_start sub_080208B4 sub_080208B4: @ 0x080208B4 push {r4, r5, lr} adds r2, r0, #0 adds r4, r2, #0 adds r4, #0x85 ldrb r0, [r4] ldr r5, _080208EC @ =gLinkEntity ldrb r1, [r5, #0x14] subs r0, r0, r1 lsrs r1, r0, #0x1f adds r0, r0, r1 asrs r0, r0, #1 lsls r0, r0, #0x18 lsrs r1, r0, #0x18 cmp r0, #0 beq _080208E6 ldrb r0, [r2, #0x14] adds r0, r0, r1 movs r1, #3 ands r0, r1 strb r0, [r2, #0x14] ldrb r1, [r2, #0x14] adds r1, #0x10 adds r0, r2, #0 bl UpdateSprite _080208E6: ldrb r0, [r5, #0x14] strb r0, [r4] pop {r4, r5, pc} .align 2, 0 _080208EC: .4byte gLinkEntity thumb_func_start sub_080208F0 sub_080208F0: @ 0x080208F0 adds r0, #0x29 ldrb r2, [r0] movs r1, #0x39 rsbs r1, r1, #0 ands r1, r2 movs r2, #0x18 orrs r1, r2 strb r1, [r0] bx lr .align 2, 0 thumb_func_start sub_08020904 sub_08020904: @ 0x08020904 push {lr} movs r1, #4 strb r1, [r0, #0xc] ldrb r2, [r0, #0x10] movs r1, #0x80 orrs r1, r2 strb r1, [r0, #0x10] movs r1, #0xff strb r1, [r0, #0x15] ldrb r1, [r0, #0x14] adds r1, #0x10 bl UpdateSprite pop {pc} thumb_func_start sub_08020920 sub_08020920: @ 0x08020920 push {lr} adds r1, r0, #0 ldrb r0, [r1, #0xe] subs r0, #1 strb r0, [r1, #0xe] lsls r0, r0, #0x18 cmp r0, #0 bne _08020936 adds r0, r1, #0 bl sub_08020A30 _08020936: pop {pc} thumb_func_start sub_08020938 sub_08020938: @ 0x08020938 push {r4, r5, lr} adds r4, r0, #0 adds r0, #0x5a ldrb r1, [r0] movs r5, #0x80 adds r0, r5, #0 ands r0, r1 cmp r0, #0 bne _08020950 adds r0, r4, #0 bl sub_08004274 _08020950: movs r1, #0xa0 lsls r1, r1, #6 adds r0, r4, #0 bl sub_080044EC cmp r0, #0 bne _08020980 ldrb r0, [r4, #0xe] subs r0, #1 strb r0, [r4, #0xe] lsls r0, r0, #0x18 cmp r0, #0 bne _08020978 movs r0, #5 strb r0, [r4, #0xc] ldrb r1, [r4, #0x14] adds r1, #0xc adds r0, r4, #0 bl UpdateSprite _08020978: adds r0, r4, #0 bl sub_08078930 b _0802099C _08020980: cmp r0, #1 bne _0802098C movs r0, #0x82 lsls r0, r0, #1 bl sub_08004488 _0802098C: ldrb r1, [r4, #0x15] adds r0, r5, #0 ands r0, r1 cmp r0, #0 bne _0802099C adds r0, r4, #0 bl sub_080AEFE0 _0802099C: pop {r4, r5, pc} .align 2, 0 thumb_func_start sub_080209A0 sub_080209A0: @ 0x080209A0 push {r4, lr} adds r4, r0, #0 bl sub_08004274 adds r0, r4, #0 adds r0, #0x5a ldrb r1, [r0] movs r0, #0x80 ands r0, r1 cmp r0, #0 beq _080209E2 ldrb r1, [r4, #0x10] movs r0, #0x80 orrs r0, r1 strb r0, [r4, #0x10] movs r0, #0x80 lsls r0, r0, #1 strh r0, [r4, #0x24] adds r1, r4, #0 adds r1, #0x3f movs r0, #0x22 strb r0, [r1] adds r0, r4, #0 bl sub_08020A30 ldrb r0, [r4, #0x14] lsls r0, r0, #3 strb r0, [r4, #0x15] ldrb r1, [r4, #0x14] adds r0, r4, #0 bl UpdateSprite b _080209F0 _080209E2: movs r0, #1 ands r0, r1 cmp r0, #0 bne _080209F0 adds r0, r4, #0 bl sub_08078930 _080209F0: pop {r4, pc} .align 2, 0 thumb_func_start sub_080209F4 sub_080209F4: @ 0x080209F4 push {r4, lr} adds r4, r0, #0 movs r1, #0xe0 lsls r1, r1, #5 bl sub_08003FC4 cmp r0, #0 bne _08020A14 movs r1, #7 movs r0, #7 strb r0, [r4, #0xc] adds r2, r4, #0 adds r2, #0x29 ldrb r0, [r2] orrs r0, r1 strb r0, [r2] _08020A14: adds r0, r4, #0 adds r0, #0x5a ldrb r0, [r0] cmp r0, #0 bne _08020A24 adds r0, r4, #0 bl sub_08004274 _08020A24: pop {r4, pc} .align 2, 0 thumb_func_start sub_08020A28 sub_08020A28: @ 0x08020A28 push {lr} bl sub_08004274 pop {pc} thumb_func_start sub_08020A30 sub_08020A30: @ 0x08020A30 push {r4, r5, lr} adds r4, r0, #0 adds r5, r4, #0 adds r5, #0x84 ldrb r0, [r5] cmp r0, #1 bhi _08020A68 bl Random ldr r2, _08020A64 @ =gUnk_080CA6CC movs r1, #7 ands r1, r0 adds r1, r1, r2 ldrb r0, [r1] strb r0, [r4, #0xe] cmp r0, #0 bne _08020A68 movs r0, #3 strb r0, [r4, #0xc] movs r0, #0x3c strb r0, [r4, #0xe] ldrb r0, [r5] adds r0, #1 strb r0, [r5] b _08020A7A .align 2, 0 _08020A64: .4byte gUnk_080CA6CC _08020A68: movs r0, #0 movs r1, #1 strb r1, [r4, #0xc] adds r1, r4, #0 adds r1, #0x84 strb r0, [r1] adds r0, r4, #0 bl sub_08020A7C _08020A7A: pop {r4, r5, pc} thumb_func_start sub_08020A7C sub_08020A7C: @ 0x08020A7C push {r4, r5, r6, lr} adds r6, r0, #0 bl Random ldrb r5, [r6, #0x15] ldr r4, _08020ACC @ =gUnk_080CA6D4 movs r1, #3 bl __modsi3 adds r0, r0, r4 ldrb r0, [r0] lsls r0, r0, #0x18 asrs r0, r0, #0x18 adds r5, r5, r0 movs r4, #0x18 ands r5, r4 adds r0, r6, #0 bl sub_08049FA0 cmp r0, #0 bne _08020ABA adds r0, r6, #0 bl sub_08049EE4 adds r0, #4 ands r0, r4 movs r1, #0x10 eors r1, r5 cmp r1, r0 bne _08020ABA adds r5, r1, #0 _08020ABA: strb r5, [r6, #0x15] lsrs r0, r5, #3 strb r0, [r6, #0x14] ldrb r1, [r6, #0x14] adds r0, r6, #0 bl UpdateSprite pop {r4, r5, r6, pc} .align 2, 0 _08020ACC: .4byte gUnk_080CA6D4 thumb_func_start sub_08020AD0 sub_08020AD0: @ 0x08020AD0 push {r4, r5, r6, lr} adds r4, r0, #0 bl sub_08020B6C cmp r0, #0 beq _08020B68 movs r1, #0x36 ldrsh r0, [r4, r1] cmp r0, #0 bne _08020B68 movs r1, #0x2e ldrsh r0, [r4, r1] ldr r3, _08020B5C @ =gRoomControls ldrh r1, [r3, #6] subs r0, r0, r1 asrs r5, r0, #4 movs r2, #0x3f ands r5, r2 movs r1, #0x32 ldrsh r0, [r4, r1] ldrh r1, [r3, #8] subs r0, r0, r1 asrs r0, r0, #4 ands r0, r2 lsls r0, r0, #6 orrs r5, r0 adds r6, r4, #0 adds r6, #0x38 ldrb r1, [r6] adds r0, r5, #0 bl sub_080002B0 lsls r0, r0, #0x10 ldr r1, _08020B60 @ =0xFF8F0000 adds r0, r0, r1 lsrs r0, r0, #0x10 cmp r0, #1 bhi _08020B68 movs r0, #6 strb r0, [r4, #0xc] ldrb r1, [r4, #0x10] movs r0, #0x7f ands r0, r1 strb r0, [r4, #0x10] ldrh r2, [r4, #0x2e] movs r1, #0x10 rsbs r1, r1, #0 adds r0, r1, #0 ands r0, r2 adds r0, #8 strh r0, [r4, #0x2e] ldrh r0, [r4, #0x32] ands r1, r0 adds r1, #0xd strh r1, [r4, #0x32] movs r0, #0x80 lsls r0, r0, #0xa str r0, [r4, #0x20] ldrb r1, [r4, #0x14] adds r1, #0x14 adds r0, r4, #0 bl UpdateSprite ldr r0, _08020B64 @ =0x00004034 ldrb r2, [r6] adds r1, r5, #0 bl UpdateCollisionLayer movs r0, #1 b _08020B6A .align 2, 0 _08020B5C: .4byte gRoomControls _08020B60: .4byte 0xFF8F0000 _08020B64: .4byte 0x00004034 _08020B68: movs r0, #0 _08020B6A: pop {r4, r5, r6, pc} thumb_func_start sub_08020B6C sub_08020B6C: @ 0x08020B6C push {lr} adds r0, #0x58 ldrb r0, [r0] subs r0, #0x10 cmp r0, #3 bls _08020B7C movs r0, #0 b _08020B7E _08020B7C: movs r0, #1 _08020B7E: pop {pc} thumb_func_start sub_08020B80 sub_08020B80: @ 0x08020B80 push {r4, lr} adds r4, r0, #0 ldr r1, _08020B9C @ =gUnk_080CAA98 bl sub_0800129E movs r3, #0x16 rsbs r3, r3, #0 adds r0, r4, #0 movs r1, #0 movs r2, #1 bl sub_0804A9AC pop {r4, pc} .align 2, 0 _08020B9C: .4byte gUnk_080CAA98 thumb_func_start sub_08020BA0 sub_08020BA0: @ 0x08020BA0 push {lr} ldr r2, _08020BB4 @ =gUnk_080CAAB0 ldrb r1, [r0, #0xc] lsls r1, r1, #2 adds r1, r1, r2 ldr r1, [r1] bl _call_via_r1 pop {pc} .align 2, 0 _08020BB4: .4byte gUnk_080CAAB0 thumb_func_start sub_08020BB8 sub_08020BB8: @ 0x08020BB8 push {r4, r5, r6, lr} adds r4, r0, #0 adds r0, #0x41 ldrb r0, [r0] movs r2, #0x7f adds r1, r2, #0 ands r1, r0 cmp r1, #0x1c beq _08020BE0 cmp r1, #0x1c bgt _08020BD4 cmp r1, #0x16 beq _08020C24 b _08020D32 _08020BD4: cmp r1, #0x4b beq _08020C68 cmp r1, #0x4c bne _08020BDE b _08020CF0 _08020BDE: b _08020D32 _08020BE0: movs r0, #0xb strb r0, [r4, #0xc] ldr r1, _08020C20 @ =gUnk_080CAB0C ldrb r0, [r4, #0xa] adds r0, r0, r1 ldrb r0, [r0] strb r0, [r4, #0xe] adds r1, r4, #0 adds r1, #0x3f movs r0, #0x51 strb r0, [r1] adds r0, r4, #0 adds r0, #0x3e ldrb r0, [r0] movs r2, #0x10 eors r2, r0 adds r2, #4 movs r0, #0x18 ands r2, r0 asrs r2, r2, #3 adds r0, r4, #0 movs r1, #8 bl sub_08021218 adds r0, r4, #0 bl sub_08021588 adds r0, r4, #0 movs r1, #0x1c bl sub_0804A9FC b _08020CE2 .align 2, 0 _08020C20: .4byte gUnk_080CAB0C _08020C24: movs r0, #0xb strb r0, [r4, #0xc] ldr r1, _08020C64 @ =gUnk_080CAB10 ldrb r0, [r4, #0xa] adds r0, r0, r1 ldrb r0, [r0] strb r0, [r4, #0xe] adds r1, r4, #0 adds r1, #0x3f movs r0, #0x51 strb r0, [r1] adds r0, r4, #0 adds r0, #0x3e ldrb r0, [r0] movs r2, #0x10 eors r2, r0 adds r2, #4 movs r0, #0x18 ands r2, r0 asrs r2, r2, #3 adds r0, r4, #0 movs r1, #8 bl sub_08021218 adds r0, r4, #0 bl sub_08021588 adds r0, r4, #0 movs r1, #0x1c bl sub_0804A9FC b _08020CE2 .align 2, 0 _08020C64: .4byte gUnk_080CAB10 _08020C68: ldrb r0, [r4, #0xc] adds r6, r4, #0 adds r6, #0x45 adds r5, r4, #0 adds r5, #0x78 cmp r0, #0xd beq _08020D58 cmp r0, #0xf beq _08020D58 cmp r0, #0x13 beq _08020D58 cmp r0, #0x12 beq _08020D58 adds r0, r4, #0 adds r0, #0x79 ldrb r0, [r0] cmp r0, #4 blt _08020CC0 cmp r0, #6 ble _08020CAC cmp r0, #0xc bgt _08020CC0 cmp r0, #8 blt _08020CC0 ldr r0, _08020CA8 @ =gUnk_080CAB04 ldrb r1, [r4, #0xa] adds r1, r1, r0 ldrb r0, [r1] adds r1, r4, #0 adds r1, #0x7a b _08020CC6 .align 2, 0 _08020CA8: .4byte gUnk_080CAB04 _08020CAC: ldr r0, _08020CBC @ =gUnk_080CAB00 ldrb r1, [r4, #0xa] adds r1, r1, r0 ldrb r0, [r1] adds r1, r4, #0 adds r1, #0x7a b _08020CC6 .align 2, 0 _08020CBC: .4byte gUnk_080CAB00 _08020CC0: adds r1, r4, #0 adds r1, #0x7a movs r0, #0 _08020CC6: strb r0, [r1] movs r0, #0xa strb r0, [r4, #0xc] ldrb r2, [r4, #0x14] adds r0, r4, #0 movs r1, #0xb bl sub_08021218 ldr r0, _08020CEC @ =0x0000015D bl sub_08004488 adds r0, r4, #0 bl sub_08021588 _08020CE2: adds r6, r4, #0 adds r6, #0x45 adds r5, r4, #0 adds r5, #0x78 b _08020D58 .align 2, 0 _08020CEC: .4byte 0x0000015D _08020CF0: ldrb r0, [r4, #0xc] adds r6, r4, #0 adds r6, #0x45 adds r5, r4, #0 adds r5, #0x78 cmp r0, #0xf bne _08020D58 movs r1, #0xff ldr r0, [r4, #0x54] cmp r0, #0 beq _08020D0E adds r0, #0x41 ldrb r0, [r0] adds r1, r2, #0 ands r1, r0 _08020D0E: cmp r1, #2 bne _08020D28 ldr r0, _08020D24 @ =gUnk_080CAB08 ldrb r1, [r4, #0xa] adds r1, r1, r0 ldrb r1, [r1] adds r0, r4, #0 bl sub_080213D0 b _08020D58 .align 2, 0 _08020D24: .4byte gUnk_080CAB08 _08020D28: adds r0, r4, #0 movs r1, #0 bl sub_080213D0 b _08020D58 _08020D32: adds r2, r4, #0 adds r2, #0x45 adds r0, r4, #0 adds r0, #0x78 ldrb r1, [r2] adds r6, r2, #0 adds r5, r0, #0 ldrb r0, [r5] cmp r1, r0 beq _08020D58 adds r0, r4, #0 bl sub_08021588 adds r0, r4, #0 bl sub_08021390 adds r0, r4, #0 bl sub_0804AA1C _08020D58: ldrb r0, [r6] strb r0, [r5] ldr r1, _08020D68 @ =gUnk_080CAA98 adds r0, r4, #0 bl sub_0804AA30 pop {r4, r5, r6, pc} .align 2, 0 _08020D68: .4byte gUnk_080CAA98 thumb_func_start nullsub_129 nullsub_129: @ 0x08020D6C bx lr .align 2, 0 thumb_func_start sub_08020D70 sub_08020D70: @ 0x08020D70 push {r4, lr} adds r4, r0, #0 bl sub_0804A720 movs r1, #0 movs r0, #1 strb r0, [r4, #0xc] adds r0, r4, #0 adds r0, #0x75 strb r1, [r0] subs r0, #0x30 ldrb r1, [r0] adds r0, #0x33 strb r1, [r0] movs r0, #0xff strb r0, [r4, #0x14] adds r0, r4, #0 movs r1, #0 movs r2, #2 bl sub_08021218 pop {r4, pc} thumb_func_start sub_08020D9C sub_08020D9C: @ 0x08020D9C push {r4, lr} adds r4, r0, #0 movs r1, #1 bl sub_08049FDC cmp r0, #0 beq _08020DB0 adds r0, r4, #0 bl sub_080213F0 _08020DB0: pop {r4, pc} .align 2, 0 thumb_func_start sub_08020DB4 sub_08020DB4: @ 0x08020DB4 push {r4, lr} adds r4, r0, #0 bl sub_080042B8 adds r0, r4, #0 adds r0, #0x5a ldrb r1, [r0] movs r0, #0x80 ands r0, r1 cmp r0, #0 beq _08020DD0 adds r0, r4, #0 bl sub_08021390 _08020DD0: pop {r4, pc} .align 2, 0 thumb_func_start sub_08020DD4 sub_08020DD4: @ 0x08020DD4 push {r4, lr} adds r4, r0, #0 bl sub_080214FC cmp r0, #0 beq _08020DE8 adds r0, r4, #0 bl sub_080213F0 b _08020E26 _08020DE8: adds r1, r4, #0 adds r1, #0x76 ldrh r0, [r1] subs r0, #1 strh r0, [r1] lsls r0, r0, #0x10 cmp r0, #0 bne _08020E08 movs r0, #5 strb r0, [r4, #0xc] ldrb r2, [r4, #0x14] adds r0, r4, #0 movs r1, #5 bl sub_08021218 b _08020E26 _08020E08: ldrb r0, [r4, #0xe] subs r0, #1 strb r0, [r4, #0xe] lsls r0, r0, #0x18 cmp r0, #0 bne _08020E1A adds r0, r4, #0 bl sub_08021540 _08020E1A: adds r0, r4, #0 bl sub_080AEF88 adds r0, r4, #0 bl sub_080042B8 _08020E26: pop {r4, pc} thumb_func_start sub_08020E28 sub_08020E28: @ 0x08020E28 push {r4, lr} adds r4, r0, #0 bl sub_080042B8 adds r0, r4, #0 adds r0, #0x5a ldrb r1, [r0] movs r0, #0x80 ands r0, r1 cmp r0, #0 beq _08020E44 adds r0, r4, #0 bl sub_080213B0 _08020E44: pop {r4, pc} .align 2, 0 thumb_func_start sub_08020E48 sub_08020E48: @ 0x08020E48 push {r4, lr} adds r4, r0, #0 bl sub_080214FC cmp r0, #0 beq _08020E5C adds r0, r4, #0 bl sub_080213F0 b _08020E76 _08020E5C: adds r0, r4, #0 bl sub_080042B8 adds r0, r4, #0 adds r0, #0x5a ldrb r1, [r0] movs r0, #0x80 ands r0, r1 cmp r0, #0 beq _08020E76 adds r0, r4, #0 bl sub_080213B0 _08020E76: pop {r4, pc} thumb_func_start sub_08020E78 sub_08020E78: @ 0x08020E78 push {r4, lr} adds r4, r0, #0 bl sub_080042B8 adds r0, r4, #0 adds r0, #0x5a ldrb r1, [r0] movs r0, #0x80 ands r0, r1 cmp r0, #0 beq _08020E94 adds r0, r4, #0 bl sub_08021390 _08020E94: pop {r4, pc} .align 2, 0 thumb_func_start sub_08020E98 sub_08020E98: @ 0x08020E98 push {r4, r5, lr} adds r4, r0, #0 movs r1, #1 movs r2, #0x38 bl sub_08049F64 cmp r0, #0 beq _08020EF6 ldr r5, _08020EDC @ =gUnk_020000B0 ldr r1, [r5] adds r0, r4, #0 bl sub_0802169C cmp r0, #0 bne _08020ECA ldr r0, [r5] adds r1, r4, #0 bl sub_080045C4 strb r0, [r4, #0x15] adds r0, r4, #0 bl sub_080AEF88 cmp r0, #0 bne _08020EE0 _08020ECA: movs r0, #8 strb r0, [r4, #0xc] ldrb r2, [r4, #0x14] adds r0, r4, #0 movs r1, #7 bl sub_08021218 b _08020F26 .align 2, 0 _08020EDC: .4byte gUnk_020000B0 _08020EE0: ldrb r0, [r4, #0x15] movs r1, #0x10 eors r0, r1 strb r0, [r4, #0x15] adds r0, r4, #0 bl sub_0802124C adds r0, r4, #0 bl sub_08021644 b _08020F26 _08020EF6: ldr r0, _08020F08 @ =gUnk_020000B0 ldr r1, [r0] cmp r1, #0 bne _08020F0C adds r0, r4, #0 bl sub_08021414 b _08020F26 .align 2, 0 _08020F08: .4byte gUnk_020000B0 _08020F0C: adds r0, r4, #0 bl sub_080045C4 strb r0, [r4, #0x15] adds r0, r4, #0 bl sub_080AEF88 adds r0, r4, #0 bl sub_0802124C adds r0, r4, #0 bl sub_08021644 _08020F26: pop {r4, r5, pc} thumb_func_start sub_08020F28 sub_08020F28: @ 0x08020F28 push {r4, lr} adds r4, r0, #0 bl sub_080042B8 adds r0, r4, #0 adds r0, #0x5a ldrb r1, [r0] movs r0, #0x80 ands r0, r1 cmp r0, #0 beq _08020F44 adds r0, r4, #0 bl sub_08021400 _08020F44: pop {r4, pc} .align 2, 0 thumb_func_start sub_08020F48 sub_08020F48: @ 0x08020F48 push {r4, r5, lr} adds r4, r0, #0 movs r1, #1 movs r2, #0x48 bl sub_08049F64 cmp r0, #0 beq _08020FA4 ldr r5, _08020F98 @ =gUnk_020000B0 ldr r1, [r5] adds r0, r4, #0 bl sub_08021664 cmp r0, #0 beq _08020F9C ldr r1, [r5] adds r0, r4, #0 movs r2, #9 bl sub_0804A044 adds r2, r0, #0 cmp r2, #0xff beq _08020F9C movs r0, #0xe strb r0, [r4, #0xc] lsrs r2, r2, #3 adds r0, r4, #0 movs r1, #0xd bl sub_08021218 adds r0, r4, #0 movs r1, #0 movs r2, #1 bl sub_0804A98C cmp r0, #0 beq _08020FAA str r4, [r0, #0x50] str r0, [r4, #0x54] b _08020FAA .align 2, 0 _08020F98: .4byte gUnk_020000B0 _08020F9C: adds r0, r4, #0 bl sub_08021424 b _08020FAA _08020FA4: adds r0, r4, #0 bl sub_08021390 _08020FAA: pop {r4, r5, pc} thumb_func_start sub_08020FAC sub_08020FAC: @ 0x08020FAC push {lr} adds r2, r0, #0 adds r0, #0x5a ldrb r1, [r0] movs r0, #0x80 ands r0, r1 cmp r0, #0 beq _08020FDC adds r1, r2, #0 adds r1, #0x7a ldrb r0, [r1] cmp r0, #0 beq _08020FCC subs r0, #1 strb r0, [r1] b _08020FE2 _08020FCC: adds r1, r2, #0 adds r1, #0x3d movs r0, #0xf8 strb r0, [r1] adds r0, r2, #0 bl sub_08021390 b _08020FE2 _08020FDC: adds r0, r2, #0 bl sub_080042B8 _08020FE2: pop {pc} thumb_func_start sub_08020FE4 sub_08020FE4: @ 0x08020FE4 push {r4, lr} adds r4, r0, #0 bl sub_080042B8 ldrb r0, [r4, #0xe] subs r0, #1 strb r0, [r4, #0xe] lsls r0, r0, #0x18 cmp r0, #0 bne _0802100C movs r0, #0xc strb r0, [r4, #0xc] ldrb r2, [r4, #0x14] adds r0, r4, #0 movs r1, #9 bl sub_08021218 adds r0, r4, #0 bl sub_0804AA1C _0802100C: pop {r4, pc} .align 2, 0 thumb_func_start sub_08021010 sub_08021010: @ 0x08021010 push {r4, lr} adds r4, r0, #0 bl sub_080042B8 adds r0, r4, #0 adds r0, #0x5a ldrb r1, [r0] movs r0, #0x80 ands r0, r1 cmp r0, #0 beq _08021034 adds r1, r4, #0 adds r1, #0x3f movs r0, #0x56 strb r0, [r1] adds r0, r4, #0 bl sub_080213F0 _08021034: pop {r4, pc} .align 2, 0 thumb_func_start sub_08021038 sub_08021038: @ 0x08021038 push {r4, r5, lr} adds r4, r0, #0 ldr r0, [r4, #0x54] cmp r0, #0 bne _08021066 adds r0, r4, #0 adds r0, #0x5a ldrb r0, [r0] cmp r0, #0 beq _08021066 adds r0, r4, #0 movs r1, #0 movs r2, #0 bl sub_0804A98C cmp r0, #0 beq _0802105E str r4, [r0, #0x50] str r0, [r4, #0x54] _0802105E: movs r0, #0x87 lsls r0, r0, #1 bl sub_08004488 _08021066: adds r5, r4, #0 adds r5, #0x5a ldrb r1, [r5] movs r0, #0x80 ands r0, r1 cmp r0, #0 beq _08021090 adds r0, r4, #0 bl sub_08021588 adds r1, r4, #0 adds r1, #0x7c ldrb r0, [r1] cmp r0, #0 beq _08021088 subs r0, #1 b _080210A2 _08021088: adds r0, r4, #0 bl sub_08021390 b _080210A4 _08021090: adds r0, r4, #0 bl sub_080042B8 ldrb r0, [r5] cmp r0, #4 bne _080210A4 adds r1, r4, #0 adds r1, #0x3f movs r0, #0x51 _080210A2: strb r0, [r1] _080210A4: pop {r4, r5, pc} .align 2, 0 thumb_func_start sub_080210A8 sub_080210A8: @ 0x080210A8 push {r4, lr} adds r4, r0, #0 bl sub_080042B8 adds r2, r4, #0 adds r2, #0x5a ldrb r1, [r2] movs r0, #1 ands r0, r1 cmp r0, #0 beq _080210D4 movs r0, #0 strb r0, [r2] adds r0, r4, #0 bl sub_08021588 ldr r0, _080210D0 @ =0x0000015D bl sub_08004488 b _080210E2 .align 2, 0 _080210D0: .4byte 0x0000015D _080210D4: movs r0, #0x80 ands r0, r1 cmp r0, #0 beq _080210E2 adds r0, r4, #0 bl sub_08021390 _080210E2: pop {r4, pc} thumb_func_start sub_080210E4 sub_080210E4: @ 0x080210E4 push {r4, lr} adds r4, r0, #0 bl sub_080042B8 adds r2, r4, #0 adds r2, #0x5a ldrb r1, [r2] movs r0, #1 ands r0, r1 cmp r0, #0 beq _0802111A movs r0, #0xfe ands r0, r1 strb r0, [r2] adds r0, r4, #0 movs r1, #0 movs r2, #2 bl sub_0804A98C cmp r0, #0 beq _08021112 str r4, [r0, #0x50] str r0, [r4, #0x54] _08021112: movs r0, #0x87 lsls r0, r0, #1 bl sub_08004488 _0802111A: adds r0, r4, #0 bl sub_08021644 adds r0, r4, #0 adds r0, #0x5a ldrb r1, [r0] movs r0, #0x10 ands r0, r1 cmp r0, #0 beq _08021154 adds r0, r4, #0 bl sub_080AEF88 cmp r0, #0 beq _0802114A ldr r0, [r4, #0x54] cmp r0, #0 beq _08021154 adds r0, #0x41 ldrb r1, [r0] movs r0, #0x80 ands r0, r1 cmp r0, #0 beq _08021154 _0802114A: adds r0, r4, #0 movs r1, #0 bl sub_080213D0 b _0802116C _08021154: adds r1, r4, #0 adds r1, #0x76 ldrh r0, [r1] subs r0, #1 strh r0, [r1] lsls r0, r0, #0x10 cmp r0, #0 bne _0802116C adds r0, r4, #0 movs r1, #0 bl sub_080213D0 _0802116C: pop {r4, pc} .align 2, 0 thumb_func_start sub_08021170 sub_08021170: @ 0x08021170 push {lr} adds r2, r0, #0 adds r0, #0x5a ldrb r1, [r0] movs r0, #0x80 ands r0, r1 cmp r0, #0 beq _08021198 adds r1, r2, #0 adds r1, #0x7b ldrb r0, [r1] cmp r0, #0 beq _08021190 subs r0, #1 strb r0, [r1] b _0802119E _08021190: adds r0, r2, #0 bl sub_08021390 b _0802119E _08021198: adds r0, r2, #0 bl sub_080042B8 _0802119E: pop {pc} thumb_func_start sub_080211A0 sub_080211A0: @ 0x080211A0 push {r4, lr} adds r4, r0, #0 bl sub_080214FC cmp r0, #0 beq _080211B4 adds r0, r4, #0 bl sub_08021390 b _080211CE _080211B4: adds r0, r4, #0 bl sub_080042B8 adds r0, r4, #0 adds r0, #0x5a ldrb r1, [r0] movs r0, #0x80 ands r0, r1 cmp r0, #0 beq _080211CE adds r0, r4, #0 bl sub_080213B0 _080211CE: pop {r4, pc} thumb_func_start sub_080211D0 sub_080211D0: @ 0x080211D0 push {r4, lr} adds r4, r0, #0 bl sub_080042B8 adds r0, r4, #0 bl sub_0802159C adds r0, r4, #0 adds r0, #0x5a ldrb r1, [r0] movs r0, #0x80 ands r0, r1 cmp r0, #0 beq _080211F2 adds r0, r4, #0 bl sub_08021390 _080211F2: pop {r4, pc} thumb_func_start sub_080211F4 sub_080211F4: @ 0x080211F4 push {r4, lr} adds r4, r0, #0 bl sub_080042B8 adds r0, r4, #0 bl sub_08021600 adds r0, r4, #0 adds r0, #0x5a ldrb r1, [r0] movs r0, #0x80 ands r0, r1 cmp r0, #0 beq _08021216 adds r0, r4, #0 bl sub_08021390 _08021216: pop {r4, pc} thumb_func_start sub_08021218 sub_08021218: @ 0x08021218 push {r4, lr} adds r3, r0, #0 adds r4, r3, #0 adds r4, #0x74 ldrb r0, [r4] cmp r0, r1 bne _0802122C ldrb r0, [r3, #0x14] cmp r0, r2 beq _08021244 _0802122C: strb r2, [r3, #0x14] strb r1, [r4] lsls r0, r1, #1 ldr r1, _08021248 @ =gUnk_080CAB14 adds r0, r0, r1 ldrb r1, [r0, #1] strh r1, [r3, #0x12] ldrb r1, [r0] adds r1, r1, r2 adds r0, r3, #0 bl LoadAnimation _08021244: pop {r4, pc} .align 2, 0 _08021248: .4byte gUnk_080CAB14 thumb_func_start sub_0802124C sub_0802124C: @ 0x0802124C push {r4, lr} adds r4, r0, #0 ldrb r0, [r4, #0x14] ldrb r1, [r4, #0x15] bl sub_08021274 adds r2, r0, #0 cmp r2, #0xff beq _0802126C adds r0, r4, #0 adds r0, #0x74 ldrb r1, [r0] adds r0, r4, #0 bl sub_08021218 b _08021272 _0802126C: adds r0, r4, #0 bl sub_080042B8 _08021272: pop {r4, pc} thumb_func_start sub_08021274 sub_08021274: @ 0x08021274 push {lr} adds r2, r0, #0 movs r0, #7 ands r0, r1 subs r0, #3 cmp r0, #2 bhi _0802129A movs r3, #0x18 adds r0, r1, #0 ands r0, r3 lsrs r0, r0, #3 cmp r0, r2 beq _080212AA adds r0, r1, #0 adds r0, #8 ands r0, r3 lsrs r0, r0, #3 cmp r0, r2 beq _080212AA _0802129A: adds r0, r1, #4 movs r1, #0x18 ands r0, r1 lsrs r1, r0, #3 cmp r2, r1 beq _080212AA adds r0, r1, #0 b _080212AC _080212AA: movs r0, #0xff _080212AC: pop {pc} .align 2, 0 thumb_func_start sub_080212B0 sub_080212B0: @ 0x080212B0 push {r4, r5, lr} adds r5, r0, #0 adds r1, r5, #0 adds r1, #0x75 ldrb r0, [r1] cmp r0, #1 beq _080212D0 cmp r0, #2 beq _080212DC movs r0, #1 strb r0, [r1] ldr r4, _080212CC @ =gUnk_080CAB3A b _080212E2 .align 2, 0 _080212CC: .4byte gUnk_080CAB3A _080212D0: movs r0, #2 strb r0, [r1] ldr r4, _080212D8 @ =gUnk_080CAB42 b _080212E2 .align 2, 0 _080212D8: .4byte gUnk_080CAB42 _080212DC: movs r0, #0 strb r0, [r1] ldr r4, _0802131C @ =gUnk_080CAB4A _080212E2: bl Random movs r1, #7 ands r1, r0 adds r1, r1, r4 ldrb r2, [r1] ldrb r0, [r5, #0xa] cmp r0, #1 bhi _08021306 cmp r2, #2 bne _08021306 ldr r4, _08021320 @ =gUnk_080CAB52 bl Random movs r1, #3 ands r1, r0 adds r1, r1, r4 ldrb r2, [r1] _08021306: movs r0, #0 str r0, [r5, #0x54] ldr r1, _08021324 @ =gUnk_080CAB58 lsls r0, r2, #2 adds r0, r0, r1 ldr r1, [r0] adds r0, r5, #0 bl _call_via_r1 pop {r4, r5, pc} .align 2, 0 _0802131C: .4byte gUnk_080CAB4A _08021320: .4byte gUnk_080CAB52 _08021324: .4byte gUnk_080CAB58 thumb_func_start sub_08021328 sub_08021328: @ 0x08021328 push {lr} movs r1, #0xd strb r1, [r0, #0xc] ldr r2, _08021348 @ =gUnk_080CAB68 ldrb r1, [r0, #0xa] adds r1, r1, r2 ldrb r2, [r1] adds r1, r0, #0 adds r1, #0x7c strb r2, [r1] ldrb r2, [r0, #0x14] movs r1, #0xc bl sub_08021218 pop {pc} .align 2, 0 _08021348: .4byte gUnk_080CAB68 thumb_func_start sub_0802134C sub_0802134C: @ 0x0802134C push {lr} movs r1, #0xf strb r1, [r0, #0xc] ldrb r1, [r0, #0x14] lsls r1, r1, #3 strb r1, [r0, #0x15] movs r1, #0x80 lsls r1, r1, #2 strh r1, [r0, #0x24] adds r2, r0, #0 adds r2, #0x76 movs r1, #0x78 strh r1, [r2] ldrb r2, [r0, #0x14] movs r1, #0xe bl sub_08021218 pop {pc} thumb_func_start sub_08021370 sub_08021370: @ 0x08021370 push {lr} movs r1, #0x12 strb r1, [r0, #0xc] ldrb r2, [r0, #0x14] movs r1, #0x10 bl sub_08021218 pop {pc} thumb_func_start sub_08021380 sub_08021380: @ 0x08021380 push {lr} movs r1, #0x13 strb r1, [r0, #0xc] ldrb r2, [r0, #0x14] movs r1, #0x11 bl sub_08021218 pop {pc} thumb_func_start sub_08021390 sub_08021390: @ 0x08021390 push {lr} movs r1, #7 strb r1, [r0, #0xc] movs r1, #0x80 lsls r1, r1, #2 strh r1, [r0, #0x24] adds r2, r0, #0 adds r2, #0x3f movs r1, #0x56 strb r1, [r2] ldrb r2, [r0, #0x14] movs r1, #6 bl sub_08021218 pop {pc} .align 2, 0 thumb_func_start sub_080213B0 sub_080213B0: @ 0x080213B0 push {lr} movs r1, #3 strb r1, [r0, #0xc] movs r1, #1 strb r1, [r0, #0xe] movs r1, #0xc0 strh r1, [r0, #0x24] adds r2, r0, #0 adds r2, #0x76 movs r1, #0xf0 strh r1, [r2] ldrb r2, [r0, #0x14] movs r1, #3 bl sub_08021218 pop {pc} thumb_func_start sub_080213D0 sub_080213D0: @ 0x080213D0 push {r4, lr} adds r4, r0, #0 movs r0, #0x10 strb r0, [r4, #0xc] adds r0, r4, #0 adds r0, #0x7b strb r1, [r0] ldrb r2, [r4, #0x14] adds r0, r4, #0 movs r1, #0xf bl sub_08021218 adds r0, r4, #0 bl sub_08021588 pop {r4, pc} thumb_func_start sub_080213F0 sub_080213F0: @ 0x080213F0 push {lr} movs r1, #6 strb r1, [r0, #0xc] ldrb r2, [r0, #0x14] movs r1, #1 bl sub_08021218 pop {pc} thumb_func_start sub_08021400 sub_08021400: @ 0x08021400 push {lr} movs r1, #9 strb r1, [r0, #0xc] movs r1, #0x60 strh r1, [r0, #0x24] ldrb r2, [r0, #0x14] movs r1, #0xa bl sub_08021218 pop {pc} thumb_func_start sub_08021414 sub_08021414: @ 0x08021414 push {lr} movs r1, #0x11 strb r1, [r0, #0xc] ldrb r2, [r0, #0x14] movs r1, #5 bl sub_08021218 pop {pc} thumb_func_start sub_08021424 sub_08021424: @ 0x08021424 push {r4, r5, lr} adds r5, r0, #0 ldr r0, _08021450 @ =gUnk_020000B0 ldr r1, [r0] adds r0, r5, #0 bl sub_080045C4 adds r1, r0, #0 ldrb r0, [r5, #0x14] bl sub_08021274 adds r4, r0, #0 cmp r4, #0xff beq _08021454 adds r0, r5, #0 adds r0, #0x74 ldrb r1, [r0] adds r0, r5, #0 adds r2, r4, #0 bl sub_08021218 b _08021456 .align 2, 0 _08021450: .4byte gUnk_020000B0 _08021454: ldrb r4, [r5, #0x14] _08021456: cmp r4, #1 beq _08021490 cmp r4, #1 blo _08021478 cmp r4, #2 beq _080214A8 ldr r0, _08021474 @ =gUnk_020000B0 ldr r1, [r0] movs r2, #0x2e ldrsh r0, [r1, r2] adds r2, r0, #0 adds r2, #0x24 movs r4, #0x32 ldrsh r3, [r1, r4] b _080214B8 .align 2, 0 _08021474: .4byte gUnk_020000B0 _08021478: ldr r0, _0802148C @ =gUnk_020000B0 ldr r0, [r0] movs r1, #0x2e ldrsh r2, [r0, r1] movs r4, #0x32 ldrsh r0, [r0, r4] adds r3, r0, #0 adds r3, #0x2c b _080214B8 .align 2, 0 _0802148C: .4byte gUnk_020000B0 _08021490: ldr r0, _080214A4 @ =gUnk_020000B0 ldr r1, [r0] movs r2, #0x2e ldrsh r0, [r1, r2] adds r2, r0, #0 subs r2, #0x24 movs r4, #0x32 ldrsh r3, [r1, r4] b _080214B8 .align 2, 0 _080214A4: .4byte gUnk_020000B0 _080214A8: ldr r0, _080214F0 @ =gUnk_020000B0 ldr r0, [r0] movs r1, #0x2e ldrsh r2, [r0, r1] movs r4, #0x32 ldrsh r0, [r0, r4] adds r3, r0, #0 subs r3, #0x1d _080214B8: movs r1, #0x2e ldrsh r0, [r5, r1] subs r0, r2, r0 adds r0, #3 cmp r0, #6 bhi _080214D0 movs r4, #0x32 ldrsh r0, [r5, r4] subs r0, r3, r0 adds r0, #2 cmp r0, #4 bls _080214E8 _080214D0: movs r1, #0x2e ldrsh r0, [r5, r1] movs r4, #0x32 ldrsh r1, [r5, r4] bl sub_080045D4 strb r0, [r5, #0x15] adds r0, r5, #0 bl sub_080AEF88 cmp r0, #0 bne _080214F4 _080214E8: adds r0, r5, #0 bl sub_080212B0 b _080214FA .align 2, 0 _080214F0: .4byte gUnk_020000B0 _080214F4: adds r0, r5, #0 bl sub_080042B8 _080214FA: pop {r4, r5, pc} thumb_func_start sub_080214FC sub_080214FC: @ 0x080214FC push {r4, lr} adds r4, r0, #0 movs r1, #1 bl sub_08049FDC cmp r0, #0 beq _0802153C ldr r0, _08021538 @ =gUnk_020000B0 ldr r1, [r0] adds r0, r4, #0 bl sub_080045C4 adds r2, r0, #0 adds r0, r4, #0 adds r0, #0x5a ldrb r1, [r0] movs r0, #0x1f ands r0, r1 subs r0, r2, r0 subs r0, #2 cmp r0, #4 bhi _0802153C adds r0, r2, #4 movs r1, #0x18 ands r0, r1 lsrs r0, r0, #3 strb r0, [r4, #0x14] movs r0, #1 b _0802153E .align 2, 0 _08021538: .4byte gUnk_020000B0 _0802153C: movs r0, #0 _0802153E: pop {r4, pc} thumb_func_start sub_08021540 sub_08021540: @ 0x08021540 push {r4, r5, lr} adds r4, r0, #0 bl Random adds r5, r0, #0 adds r0, r4, #0 bl sub_08049FA0 cmp r0, #0 bne _08021566 movs r0, #1 ands r0, r5 cmp r0, #0 beq _08021566 adds r0, r4, #0 bl sub_08049EE4 adds r1, r0, #4 b _08021568 _08021566: lsrs r1, r5, #0x10 _08021568: movs r0, #0x18 ands r1, r0 strb r1, [r4, #0x15] ldrb r0, [r4, #0x14] bl sub_08021274 adds r2, r0, #0 cmp r2, #0xff beq _08021582 adds r0, r4, #0 movs r1, #3 bl sub_08021218 _08021582: movs r0, #0x1e strb r0, [r4, #0xe] pop {r4, r5, pc} thumb_func_start sub_08021588 sub_08021588: @ 0x08021588 push {lr} adds r2, r0, #0 ldr r1, [r2, #0x54] cmp r1, #0 beq _08021598 movs r0, #0 str r0, [r1, #0x50] str r0, [r2, #0x54] _08021598: pop {pc} .align 2, 0 thumb_func_start sub_0802159C sub_0802159C: @ 0x0802159C push {r4, lr} adds r4, r0, #0 adds r2, r4, #0 adds r2, #0x5a ldrb r1, [r2] adds r0, r1, #0 cmp r0, #1 bne _080215D4 movs r0, #0 strb r0, [r2] adds r1, r4, #0 adds r1, #0x3f movs r0, #0x51 strb r0, [r1] adds r0, r4, #0 movs r1, #0 movs r2, #3 bl sub_0804A98C cmp r0, #0 beq _080215CA str r4, [r0, #0x50] str r0, [r4, #0x54] _080215CA: movs r0, #0x8b lsls r0, r0, #1 bl sub_08004488 b _080215F8 _080215D4: cmp r0, #2 bne _080215E4 movs r0, #0 strb r0, [r2] adds r0, r4, #0 bl sub_08021588 b _080215F8 _080215E4: movs r0, #0x20 ands r0, r1 cmp r0, #0 beq _080215F8 movs r0, #0xdf ands r0, r1 strb r0, [r2] ldr r0, _080215FC @ =0x00000115 bl sub_08004488 _080215F8: pop {r4, pc} .align 2, 0 _080215FC: .4byte 0x00000115 thumb_func_start sub_08021600 sub_08021600: @ 0x08021600 push {r4, lr} adds r4, r0, #0 adds r1, r4, #0 adds r1, #0x5a ldrb r0, [r1] cmp r0, #1 bne _08021634 movs r0, #0 strb r0, [r1] subs r1, #0x1b movs r0, #0x51 strb r0, [r1] adds r0, r4, #0 movs r1, #0 movs r2, #4 bl sub_0804A98C cmp r0, #0 beq _0802162A str r4, [r0, #0x50] str r0, [r4, #0x54] _0802162A: movs r0, #0x87 lsls r0, r0, #1 bl sub_08004488 b _08021642 _08021634: cmp r0, #2 bne _08021642 movs r0, #0 strb r0, [r1] adds r0, r4, #0 bl sub_08021588 _08021642: pop {r4, pc} thumb_func_start sub_08021644 sub_08021644: @ 0x08021644 push {lr} adds r2, r0, #0 adds r2, #0x5a ldrb r1, [r2] movs r0, #0x20 ands r0, r1 cmp r0, #0 beq _08021660 movs r0, #0xdf ands r0, r1 strb r0, [r2] movs r0, #0x7d bl sub_08004488 _08021660: pop {pc} .align 2, 0 thumb_func_start sub_08021664 sub_08021664: @ 0x08021664 push {lr} ldrb r2, [r0, #0x14] cmp r2, #1 beq _08021690 cmp r2, #1 bgt _08021676 cmp r2, #0 beq _08021680 b _08021698 _08021676: cmp r2, #2 beq _08021688 cmp r2, #3 beq _08021690 b _08021698 _08021680: movs r2, #0x22 bl sub_08049F1C b _0802169A _08021688: movs r2, #0x13 bl sub_08049F1C b _0802169A _08021690: movs r2, #0x1a bl sub_08049F1C b _0802169A _08021698: movs r0, #0 _0802169A: pop {pc} thumb_func_start sub_0802169C sub_0802169C: @ 0x0802169C push {lr} ldrb r2, [r0, #0x14] cmp r2, #1 beq _080216C0 cmp r2, #1 bgt _080216AE cmp r2, #0 beq _080216B8 b _080216CE _080216AE: cmp r2, #2 beq _080216BC cmp r2, #3 beq _080216C0 b _080216CE _080216B8: movs r2, #0x2c b _080216C2 _080216BC: movs r2, #0x1d b _080216C2 _080216C0: movs r2, #0x24 _080216C2: bl sub_08049F1C cmp r0, #0 bne _080216CE movs r0, #1 b _080216D0 _080216CE: movs r0, #0 _080216D0: pop {pc} .align 2, 0 thumb_func_start sub_080216D4 sub_080216D4: @ 0x080216D4 push {lr} ldr r1, _080216E0 @ =gUnk_080CB570 bl sub_0800129E pop {pc} .align 2, 0 _080216E0: .4byte gUnk_080CB570 thumb_func_start sub_080216E4 sub_080216E4: @ 0x080216E4 push {lr} ldr r2, _080216F8 @ =gUnk_080CB588 ldrb r1, [r0, #0xc] lsls r1, r1, #2 adds r1, r1, r2 ldr r1, [r1] bl _call_via_r1 pop {pc} .align 2, 0 _080216F8: .4byte gUnk_080CB588 thumb_func_start sub_080216FC sub_080216FC: @ 0x080216FC push {lr} adds r2, r0, #0 adds r0, #0x41 ldrb r1, [r0] movs r0, #0x80 ands r0, r1 cmp r0, #0 beq _0802171A adds r0, r2, #0 movs r1, #3 movs r2, #0x80 bl CreateFx bl sub_0805E780 _0802171A: pop {pc} thumb_func_start nullsub_7 nullsub_7: @ 0x0802171C bx lr .align 2, 0 thumb_func_start sub_08021720 sub_08021720: @ 0x08021720 movs r3, #1 movs r1, #1 strb r1, [r0, #0xc] ldrb r2, [r0, #0x18] subs r1, #5 ands r1, r2 orrs r1, r3 strb r1, [r0, #0x18] ldrb r1, [r0, #0xa] strb r1, [r0, #0x1e] ldrb r2, [r0, #0x19] movs r1, #0x3f ands r1, r2 movs r2, #0x40 orrs r1, r2 strb r1, [r0, #0x19] adds r0, #0x29 ldrb r2, [r0] movs r1, #8 rsbs r1, r1, #0 ands r1, r2 movs r2, #3 orrs r1, r2 strb r1, [r0] bx lr .align 2, 0 thumb_func_start nullsub_08 nullsub_08: @ 0x08021754 bx lr .align 2, 0 thumb_func_start sub_08021758 sub_08021758: @ 0x08021758 push {lr} ldr r1, _08021764 @ =gUnk_080CB590 bl sub_0800129E pop {pc} .align 2, 0 _08021764: .4byte gUnk_080CB590 thumb_func_start sub_08021768 sub_08021768: @ 0x08021768 push {lr} ldr r2, _0802177C @ =gUnk_080CB5A8 ldrb r1, [r0, #0xc] lsls r1, r1, #2 adds r1, r1, r2 ldr r1, [r1] bl _call_via_r1 pop {pc} .align 2, 0 _0802177C: .4byte gUnk_080CB5A8 thumb_func_start sub_08021780 sub_08021780: @ 0x08021780 push {r4, lr} adds r4, r0, #0 adds r0, #0x41 ldrb r0, [r0] cmp r0, #0x80 beq _08021792 cmp r0, #0x93 beq _080217F4 b _080217FA _08021792: ldr r0, _080217A4 @ =gLinkState adds r0, #0xa8 ldrb r0, [r0] cmp r0, #0x18 bne _080217A8 adds r0, r4, #0 bl sub_08021768 b _080217FA .align 2, 0 _080217A4: .4byte gLinkState _080217A8: movs r1, #0 movs r0, #5 strb r0, [r4, #0xc] movs r0, #0xb4 strb r0, [r4, #0xe] strb r1, [r4, #0xf] ldrb r1, [r4, #0x10] movs r0, #0x7f ands r0, r1 strb r0, [r4, #0x10] adds r2, r4, #0 adds r2, #0x29 ldrb r1, [r2] movs r0, #8 rsbs r0, r0, #0 ands r0, r1 movs r1, #3 orrs r0, r1 strb r0, [r2] ldr r0, _080217EC @ =gLinkEntity adds r1, r4, #0 bl sub_0806FA6C ldr r0, _080217F0 @ =0x0000FFFF strh r0, [r4, #0x36] adds r1, r4, #0 adds r1, #0x87 movs r0, #1 strb r0, [r1] adds r0, r4, #0 movs r1, #6 bl UpdateSprite b _080217FA .align 2, 0 _080217EC: .4byte gLinkEntity _080217F0: .4byte 0x0000FFFF _080217F4: adds r0, r4, #0 bl sub_08021768 _080217FA: adds r0, r4, #0 adds r0, #0x45 ldrb r1, [r0] cmp r1, #0 bne _08021808 subs r0, #3 strb r1, [r0] _08021808: ldr r1, _08021814 @ =gUnk_080CB590 adds r0, r4, #0 bl sub_0804AA30 pop {r4, pc} .align 2, 0 _08021814: .4byte gUnk_080CB590 thumb_func_start sub_08021818 sub_08021818: @ 0x08021818 push {lr} adds r3, r0, #0 ldrb r0, [r3, #0xa] cmp r0, #0 bne _0802182A adds r0, r3, #0 bl sub_0804A7D4 b _08021844 _0802182A: ldr r2, [r3, #0x50] cmp r2, #0 beq _0802183A ldrb r0, [r2, #0xf] subs r0, #1 movs r1, #0 strb r0, [r2, #0xf] str r1, [r3, #0x50] _0802183A: adds r0, r3, #0 movs r1, #0xf0 movs r2, #0 bl CreateDeathFx _08021844: pop {pc} .align 2, 0 thumb_func_start sub_08021848 sub_08021848: @ 0x08021848 push {r4, lr} adds r4, r0, #0 bl sub_0806F520 adds r1, r0, #0 cmp r1, #0 beq _0802186C ldr r0, _08021868 @ =gUnk_080CB5C8 ldrb r1, [r4, #0xd] lsls r1, r1, #2 adds r1, r1, r0 ldr r1, [r1] adds r0, r4, #0 bl _call_via_r1 b _0802187A .align 2, 0 _08021868: .4byte gUnk_080CB5C8 _0802186C: movs r0, #3 strb r0, [r4, #0xc] strh r1, [r4, #0x36] adds r0, r4, #0 movs r1, #2 bl UpdateSprite _0802187A: pop {r4, pc} thumb_func_start sub_0802187C sub_0802187C: @ 0x0802187C movs r1, #2 strb r1, [r0, #0xd] bx lr .align 2, 0 thumb_func_start nullsub_130 nullsub_130: @ 0x08021884 bx lr .align 2, 0 thumb_func_start sub_08021888 sub_08021888: @ 0x08021888 push {r4, lr} adds r4, r0, #0 bl sub_0806F3E4 cmp r0, #0 beq _0802189A adds r0, r4, #0 bl sub_08021818 _0802189A: pop {r4, pc} thumb_func_start sub_0802189C sub_0802189C: @ 0x0802189C push {r4, lr} adds r4, r0, #0 bl sub_0804A720 movs r0, #1 strb r0, [r4, #0xc] strb r0, [r4, #0x1c] adds r0, r4, #0 movs r1, #3 bl UpdateSprite pop {r4, pc} thumb_func_start sub_080218B4 sub_080218B4: @ 0x080218B4 push {lr} ldr r2, _080218C8 @ =gUnk_080CB5D4 ldrb r1, [r0, #0xb] lsls r1, r1, #2 adds r1, r1, r2 ldr r1, [r1] bl _call_via_r1 pop {pc} .align 2, 0 _080218C8: .4byte gUnk_080CB5D4 thumb_func_start sub_080218CC sub_080218CC: @ 0x080218CC push {r4, r5, r6, lr} adds r5, r0, #0 ldrb r0, [r5, #0xd] cmp r0, #0 bne _08021916 movs r2, #1 movs r0, #1 strb r0, [r5, #0xd] ldrb r1, [r5, #0x18] subs r0, #5 ands r0, r1 orrs r0, r2 strb r0, [r5, #0x18] adds r0, r5, #0 movs r1, #1 bl sub_08049F84 adds r4, r0, #0 bl Random movs r1, #0x10 eors r4, r1 ldr r2, _08021980 @ =gUnk_080CB5DC movs r1, #7 ands r1, r0 adds r1, r1, r2 ldrb r0, [r1] adds r0, r0, r4 movs r1, #0x1f ands r0, r1 strb r0, [r5, #0x15] movs r0, #0x80 lsls r0, r0, #1 strh r0, [r5, #0x24] movs r0, #0x90 lsls r0, r0, #9 str r0, [r5, #0x20] _08021916: adds r0, r5, #0 bl sub_08004274 adds r2, r5, #0 adds r2, #0x5a ldrb r1, [r2] movs r6, #1 adds r0, r6, #0 ands r0, r1 adds r4, r2, #0 cmp r0, #0 beq _08021948 adds r0, r5, #0 bl sub_080AEFE0 movs r1, #0xe0 lsls r1, r1, #5 adds r0, r5, #0 bl sub_080044EC cmp r0, #0 bne _08021948 adds r0, r5, #0 adds r0, #0x59 strb r6, [r0] _08021948: ldrb r1, [r4] movs r0, #0x80 ands r0, r1 cmp r0, #0 beq _0802197C movs r0, #2 strb r0, [r5, #0xc] bl Random movs r1, #0x38 ands r0, r1 adds r0, #8 strb r0, [r5, #0xe] movs r0, #1 strb r0, [r5, #0xf] ldrb r1, [r5, #0x10] movs r0, #0x80 orrs r0, r1 strb r0, [r5, #0x10] movs r0, #0xc0 lsls r0, r0, #1 strh r0, [r5, #0x24] adds r0, r5, #0 movs r1, #0 bl UpdateSprite _0802197C: pop {r4, r5, r6, pc} .align 2, 0 _08021980: .4byte gUnk_080CB5DC thumb_func_start sub_08021984 sub_08021984: @ 0x08021984 push {r4, lr} adds r4, r0, #0 ldrb r0, [r4, #0xd] cmp r0, #0 bne _080219C2 movs r0, #1 strb r0, [r4, #0xd] ldrb r1, [r4, #0x10] movs r0, #0x80 orrs r0, r1 strb r0, [r4, #0x10] ldrb r0, [r4, #0x18] movs r1, #3 orrs r0, r1 strb r0, [r4, #0x18] ldr r0, _08021A08 @ =0x0000FF80 strh r0, [r4, #0x36] ldrb r2, [r4, #0x19] movs r1, #0x3f adds r0, r1, #0 ands r0, r2 movs r2, #0x40 orrs r0, r2 strb r0, [r4, #0x19] ldrb r0, [r4, #0x1b] ands r1, r0 orrs r1, r2 strb r1, [r4, #0x1b] ldr r0, _08021A0C @ =0x0000012D bl sub_08004488 _080219C2: movs r1, #0xc0 lsls r1, r1, #5 adds r0, r4, #0 bl sub_08003FC4 cmp r0, #0 bne _08021A04 movs r0, #2 strb r0, [r4, #0xc] movs r0, #0x10 strb r0, [r4, #0xe] movs r2, #1 movs r0, #1 strb r0, [r4, #0xf] ldrb r1, [r4, #0x18] subs r0, #5 ands r0, r1 orrs r0, r2 strb r0, [r4, #0x18] movs r0, #0xc0 lsls r0, r0, #1 strh r0, [r4, #0x24] adds r1, r4, #0 adds r1, #0x86 movs r0, #0x3c strb r0, [r1] adds r0, r4, #0 movs r1, #0 bl UpdateSprite adds r0, r4, #0 bl UpdateSpriteOrderAndFlip _08021A04: pop {r4, pc} .align 2, 0 _08021A08: .4byte 0x0000FF80 _08021A0C: .4byte 0x0000012D thumb_func_start sub_08021A10 sub_08021A10: @ 0x08021A10 push {r4, lr} adds r4, r0, #0 bl sub_08004274 ldr r1, _08021A60 @ =gLinkEntity adds r0, r4, #0 movs r2, #0x78 movs r3, #0x50 bl sub_080041A0 cmp r0, #0 beq _08021A5E adds r0, r4, #0 bl sub_08021D00 cmp r0, #0 bne _08021A5E ldrb r0, [r4, #0xe] subs r0, #1 strb r0, [r4, #0xe] lsls r0, r0, #0x18 cmp r0, #0 bne _08021A5E movs r0, #3 strb r0, [r4, #0xc] bl Random movs r1, #0x3f ands r0, r1 adds r0, #0x1e strb r0, [r4, #0xe] ldrb r1, [r4, #0x15] adds r0, r4, #0 bl sub_08021D44 adds r0, r4, #0 movs r1, #2 bl UpdateSprite _08021A5E: pop {r4, pc} .align 2, 0 _08021A60: .4byte gLinkEntity thumb_func_start sub_08021A64 sub_08021A64: @ 0x08021A64 push {r4, r5, lr} adds r4, r0, #0 bl sub_08021D00 cmp r0, #0 bne _08021AD4 ldrb r0, [r4, #0xe] subs r0, #1 strb r0, [r4, #0xe] movs r5, #0xff lsls r0, r0, #0x18 cmp r0, #0 bne _08021A96 movs r0, #2 strb r0, [r4, #0xc] bl Random movs r1, #0x1f ands r0, r1 adds r0, #0x1e strb r0, [r4, #0xe] adds r0, r4, #0 movs r1, #0 bl UpdateSprite _08021A96: ldrb r0, [r4, #0xf] subs r0, #1 strb r0, [r4, #0xf] ands r0, r5 cmp r0, #0 bne _08021AC8 movs r0, #8 strb r0, [r4, #0xf] adds r0, r4, #0 movs r1, #1 bl sub_08049F84 adds r1, r0, #0 cmp r1, #0xff bne _08021AC2 movs r0, #7 strb r0, [r4, #0xc] adds r0, r4, #0 movs r1, #1 bl UpdateSprite b _08021AD4 _08021AC2: adds r0, r4, #0 bl sub_08021D44 _08021AC8: adds r0, r4, #0 bl sub_080AEF88 adds r0, r4, #0 bl sub_08004274 _08021AD4: pop {r4, r5, pc} .align 2, 0 thumb_func_start sub_08021AD8 sub_08021AD8: @ 0x08021AD8 push {r4, lr} adds r4, r0, #0 bl sub_08004274 adds r0, r4, #0 adds r0, #0x5a ldrb r1, [r0] movs r0, #1 ands r0, r1 cmp r0, #0 beq _08021B3A ldrb r0, [r4, #0xe] cmp r0, #0 beq _08021B1E movs r0, #0 strb r0, [r4, #0xe] adds r0, r4, #0 movs r1, #1 bl sub_08049F84 cmp r0, #0xff bne _08021B16 movs r0, #2 strb r0, [r4, #0xc] movs r0, #8 strb r0, [r4, #0xe] adds r0, r4, #0 movs r1, #0 bl UpdateSprite b _08021B60 _08021B16: strb r0, [r4, #0x15] movs r0, #0x7c bl sub_08004488 _08021B1E: adds r0, r4, #0 bl sub_080AEFE0 movs r1, #0xc0 lsls r1, r1, #5 adds r0, r4, #0 bl sub_08003FC4 cmp r0, #0 bne _08021B3A adds r1, r4, #0 adds r1, #0x59 movs r0, #1 strb r0, [r1] _08021B3A: adds r0, r4, #0 adds r0, #0x5a ldrb r1, [r0] movs r0, #0x80 ands r0, r1 cmp r0, #0 beq _08021B60 movs r0, #2 strb r0, [r4, #0xc] movs r0, #0x14 strb r0, [r4, #0xe] adds r1, r4, #0 adds r1, #0x86 movs r0, #0x3c strb r0, [r1] adds r0, r4, #0 movs r1, #0 bl UpdateSprite _08021B60: pop {r4, pc} .align 2, 0 thumb_func_start sub_08021B64 sub_08021B64: @ 0x08021B64 push {r4, r5, r6, lr} adds r4, r0, #0 ldr r0, _08021B88 @ =gLinkState ldr r1, [r0, #0x30] movs r2, #4 ands r1, r2 adds r6, r0, #0 cmp r1, #0 beq _08021B8C movs r1, #0 movs r0, #3 strb r0, [r4, #0xc] str r1, [r4, #0x34] adds r0, r4, #0 movs r1, #2 bl UpdateSprite b _08021C4E .align 2, 0 _08021B88: .4byte gLinkState _08021B8C: movs r5, #1 adds r0, r6, #0 adds r0, #0xa8 ldrb r0, [r0] cmp r0, #0xb beq _08021BBA cmp r0, #0x14 beq _08021BBA bl sub_0807953C cmp r0, #0 beq _08021BAE ldrb r1, [r4, #0xa] lsls r0, r1, #1 adds r0, r0, r1 adds r5, r0, #0 adds r5, #8 _08021BAE: ldrb r0, [r4, #0xe] subs r5, r0, r5 cmp r5, #0 bge _08021BB8 movs r5, #0 _08021BB8: strb r5, [r4, #0xe] _08021BBA: ldr r0, [r6, #0x30] movs r1, #0x88 lsls r1, r1, #1 ands r0, r1 cmp r0, #0 beq _08021BC8 movs r5, #0 _08021BC8: cmp r5, #0 bne _08021C04 movs r0, #6 strb r0, [r4, #0xc] movs r0, #0x80 lsls r0, r0, #9 str r0, [r4, #0x20] adds r0, r4, #0 adds r0, #0x87 strb r5, [r0] ldr r2, _08021BEC @ =gLinkEntity ldrb r1, [r2, #0x15] adds r0, r1, #0 cmp r0, #0xff beq _08021BF0 movs r0, #0x10 b _08021BF6 .align 2, 0 _08021BEC: .4byte gLinkEntity _08021BF0: ldrb r0, [r2, #0x14] lsls r0, r0, #2 movs r1, #0x10 _08021BF6: eors r0, r1 strb r0, [r4, #0x15] adds r0, r4, #0 movs r1, #5 bl UpdateSprite b _08021C4E _08021C04: ldrb r1, [r6, #0x1a] movs r0, #0x80 orrs r0, r1 strb r0, [r6, #0x1a] adds r1, r6, #0 adds r1, #0x80 ldrh r0, [r1] subs r0, #0x50 strh r0, [r1] adds r1, #0x2a ldrb r0, [r1] adds r0, #1 strb r0, [r1] ldr r0, _08021C50 @ =gLinkEntity adds r1, r4, #0 bl sub_0806FA6C ldr r2, _08021C54 @ =gUnk_080CB5E4 ldrb r1, [r4, #0xf] adds r0, r1, #1 strb r0, [r4, #0xf] movs r0, #0xe ands r0, r1 lsrs r0, r0, #1 adds r0, r0, r2 ldrb r0, [r0] lsls r0, r0, #0x18 asrs r0, r0, #0x18 ldrh r1, [r4, #0x2e] adds r0, r0, r1 strh r0, [r4, #0x2e] ldrh r0, [r4, #0x36] subs r0, #1 strh r0, [r4, #0x36] adds r0, r4, #0 bl sub_08004274 _08021C4E: pop {r4, r5, r6, pc} .align 2, 0 _08021C50: .4byte gLinkEntity _08021C54: .4byte gUnk_080CB5E4 thumb_func_start sub_08021C58 sub_08021C58: @ 0x08021C58 push {r4, r5, lr} adds r4, r0, #0 bl sub_08004274 adds r0, r4, #0 adds r0, #0x5a ldrb r1, [r0] movs r5, #1 adds r0, r5, #0 ands r0, r1 cmp r0, #0 beq _08021C8A adds r0, r4, #0 bl sub_080AEFE0 movs r1, #0xc0 lsls r1, r1, #5 adds r0, r4, #0 bl sub_08003FC4 cmp r0, #0 bne _08021C8A adds r0, r4, #0 adds r0, #0x59 strb r5, [r0] _08021C8A: adds r0, r4, #0 adds r0, #0x5a ldrb r1, [r0] movs r0, #0x80 ands r0, r1 cmp r0, #0 beq _08021CCC movs r0, #2 strb r0, [r4, #0xc] movs r2, #0x3c strb r2, [r4, #0xe] movs r0, #1 strb r0, [r4, #0xf] ldrb r1, [r4, #0x10] movs r0, #0x80 orrs r0, r1 strb r0, [r4, #0x10] adds r3, r4, #0 adds r3, #0x29 ldrb r1, [r3] movs r0, #8 rsbs r0, r0, #0 ands r0, r1 movs r1, #4 orrs r0, r1 strb r0, [r3] adds r0, r4, #0 adds r0, #0x86 strb r2, [r0] adds r0, r4, #0 movs r1, #0 bl UpdateSprite _08021CCC: pop {r4, r5, pc} .align 2, 0 thumb_func_start sub_08021CD0 sub_08021CD0: @ 0x08021CD0 push {r4, lr} adds r4, r0, #0 adds r0, #0x5a ldrb r1, [r0] movs r0, #0x80 ands r0, r1 cmp r0, #0 bne _08021CE6 adds r0, r4, #0 bl sub_08004274 _08021CE6: adds r0, r4, #0 movs r1, #1 bl sub_08049F84 cmp r0, #0xff beq _08021CFE movs r0, #3 strb r0, [r4, #0xc] adds r0, r4, #0 movs r1, #2 bl UpdateSprite _08021CFE: pop {r4, pc} thumb_func_start sub_08021D00 sub_08021D00: @ 0x08021D00 push {r4, lr} adds r4, r0, #0 adds r1, r4, #0 adds r1, #0x86 ldrb r0, [r1] cmp r0, #0 beq _08021D16 subs r0, #1 strb r0, [r1] movs r0, #0 b _08021D40 _08021D16: adds r0, r4, #0 movs r1, #1 movs r2, #0x10 bl sub_08049F64 cmp r0, #0 bne _08021D28 movs r0, #0 b _08021D40 _08021D28: movs r0, #4 strb r0, [r4, #0xc] movs r0, #1 strb r0, [r4, #0xe] movs r0, #0xc0 lsls r0, r0, #9 str r0, [r4, #0x20] adds r0, r4, #0 movs r1, #4 bl UpdateSprite movs r0, #1 _08021D40: pop {r4, pc} .align 2, 0 thumb_func_start sub_08021D44 sub_08021D44: @ 0x08021D44 push {lr} adds r2, r0, #0 adds r1, #4 movs r0, #0x18 ands r1, r0 strb r1, [r2, #0x15] movs r0, #8 ands r1, r0 cmp r1, #0 beq _08021D5E movs r0, #0xc0 lsls r0, r0, #1 b _08021D60 _08021D5E: movs r0, #0xc0 _08021D60: strh r0, [r2, #0x24] pop {pc} thumb_func_start sub_08021D64 sub_08021D64: @ 0x08021D64 push {r4, r5, lr} adds r5, r0, #0 ldr r4, _08021D7C @ =gUnk_080CB69C bl sub_0800279C lsls r0, r0, #2 adds r0, r0, r4 ldr r1, [r0] adds r0, r5, #0 bl _call_via_r1 pop {r4, r5, pc} .align 2, 0 _08021D7C: .4byte gUnk_080CB69C thumb_func_start sub_08021D80 sub_08021D80: @ 0x08021D80 push {lr} ldr r2, _08021D94 @ =gUnk_080CB6B4 ldrb r1, [r0, #0xc] lsls r1, r1, #2 adds r1, r1, r2 ldr r1, [r1] bl _call_via_r1 pop {pc} .align 2, 0 _08021D94: .4byte gUnk_080CB6B4 thumb_func_start sub_08021D98 sub_08021D98: @ 0x08021D98 push {lr} ldr r1, _08021DA4 @ =gUnk_080CB69C bl sub_0804AA30 pop {pc} .align 2, 0 _08021DA4: .4byte gUnk_080CB69C thumb_func_start sub_08021DA8 sub_08021DA8: @ 0x08021DA8 push {r4, lr} adds r4, r0, #0 bl sub_0806F520 cmp r0, #0 beq _08021DC4 ldr r0, _08021DC8 @ =gUnk_080CB6C4 ldrb r1, [r4, #0xd] lsls r1, r1, #2 adds r1, r1, r0 ldr r1, [r1] adds r0, r4, #0 bl _call_via_r1 _08021DC4: pop {r4, pc} .align 2, 0 _08021DC8: .4byte gUnk_080CB6C4 thumb_func_start sub_08021DCC sub_08021DCC: @ 0x08021DCC movs r1, #2 strb r1, [r0, #0xd] bx lr .align 2, 0 thumb_func_start sub_08021DD4 sub_08021DD4: @ 0x08021DD4 push {lr} bl sub_0806F4E8 pop {pc} thumb_func_start sub_08021DDC sub_08021DDC: @ 0x08021DDC push {r4, lr} adds r4, r0, #0 bl sub_0806F3E4 cmp r0, #0 beq _08021DEE adds r0, r4, #0 bl sub_0804A7D4 _08021DEE: pop {r4, pc} thumb_func_start sub_08021DF0 sub_08021DF0: @ 0x08021DF0 push {r4, lr} adds r4, r0, #0 bl sub_0804A720 ldrb r0, [r4, #0xa] cmp r0, #0 beq _08021E14 adds r2, r4, #0 adds r2, #0x29 ldrb r1, [r2] movs r0, #0x39 rsbs r0, r0, #0 ands r0, r1 movs r1, #8 orrs r0, r1 strb r0, [r2] ldr r0, _08021E48 @ =0x0000FFF0 strh r0, [r4, #0x36] _08021E14: bl Random movs r1, #0x1f ands r0, r1 strb r0, [r4, #0x15] movs r0, #1 strb r0, [r4, #0x1c] adds r2, r4, #0 adds r2, #0x29 ldrb r1, [r2] subs r0, #9 ands r0, r1 movs r1, #3 orrs r0, r1 strb r0, [r2] adds r1, r4, #0 adds r1, #0x38 movs r0, #3 strb r0, [r1] adds r0, r4, #0 bl UpdateSpriteOrderAndFlip adds r0, r4, #0 bl sub_08021EF0 pop {r4, pc} .align 2, 0 _08021E48: .4byte 0x0000FFF0 thumb_func_start sub_08021E4C sub_08021E4C: @ 0x08021E4C push {r4, r5, lr} adds r4, r0, #0 adds r1, r4, #0 adds r1, #0x78 ldrh r0, [r1] cmp r0, #0 beq _08021E5E subs r0, #1 strh r0, [r1] _08021E5E: adds r1, r4, #0 adds r1, #0x7a ldrh r0, [r1] cmp r0, #0 beq _08021E6C subs r0, #1 strh r0, [r1] _08021E6C: adds r0, r4, #0 bl sub_08004274 adds r2, r4, #0 adds r2, #0x5a ldrb r1, [r2] movs r0, #0x80 ands r0, r1 adds r5, r2, #0 cmp r0, #0 beq _08021E8A adds r0, r4, #0 bl sub_08021F24 b _08021E90 _08021E8A: adds r0, r4, #0 bl sub_080AEFB4 _08021E90: ldr r1, _08021EA0 @ =gUnk_080CB6D0 ldrb r0, [r5] adds r0, r0, r1 ldrb r1, [r0] adds r0, r4, #0 adds r0, #0x63 strb r1, [r0] pop {r4, r5, pc} .align 2, 0 _08021EA0: .4byte gUnk_080CB6D0 thumb_func_start sub_08021EA4 sub_08021EA4: @ 0x08021EA4 push {lr} adds r1, r0, #0 ldrb r0, [r1, #0xe] subs r0, #1 strb r0, [r1, #0xe] lsls r0, r0, #0x18 cmp r0, #0 bne _08021EBA adds r0, r1, #0 bl sub_08021EF0 _08021EBA: pop {pc} thumb_func_start sub_08021EBC sub_08021EBC: @ 0x08021EBC push {r4, lr} adds r4, r0, #0 ldrb r0, [r4, #0xe] cmp r0, #0 beq _08021ECC subs r0, #1 strb r0, [r4, #0xe] b _08021EE8 _08021ECC: ldr r0, _08021EEC @ =gLinkEntity movs r2, #0x2e ldrsh r1, [r0, r2] movs r3, #0x32 ldrsh r2, [r0, r3] adds r0, r4, #0 movs r3, #0x70 bl sub_0806FCB8 cmp r0, #0 beq _08021EE8 adds r0, r4, #0 bl sub_08021EF0 _08021EE8: pop {r4, pc} .align 2, 0 _08021EEC: .4byte gLinkEntity thumb_func_start sub_08021EF0 sub_08021EF0: @ 0x08021EF0 push {r4, lr} adds r4, r0, #0 movs r0, #1 strb r0, [r4, #0xc] bl Random ldr r2, _08021F20 @ =gUnk_080CB6D6 movs r1, #0xf ands r1, r0 lsls r1, r1, #1 adds r1, r1, r2 ldrh r1, [r1] adds r0, r4, #0 adds r0, #0x78 strh r1, [r0] adds r1, r4, #0 adds r1, #0x7a movs r0, #0x3c strh r0, [r1] adds r0, r4, #0 movs r1, #0 bl UpdateSprite pop {r4, pc} .align 2, 0 _08021F20: .4byte gUnk_080CB6D6 thumb_func_start sub_08021F24 sub_08021F24: @ 0x08021F24 push {r4, lr} adds r4, r0, #0 adds r0, #0x78 ldrh r0, [r0] cmp r0, #0 bne _08021F48 movs r0, #2 strb r0, [r4, #0xc] bl Random ldr r2, _08021F44 @ =gUnk_080CB6F6 movs r1, #0xf ands r1, r0 adds r1, r1, r2 ldrb r0, [r1] b _08021F6E .align 2, 0 _08021F44: .4byte gUnk_080CB6F6 _08021F48: adds r0, r4, #0 adds r0, #0x7a ldrh r0, [r0] cmp r0, #0 bne _08021F80 ldr r0, _08021F7C @ =gLinkEntity movs r2, #0x2e ldrsh r1, [r0, r2] movs r3, #0x32 ldrsh r2, [r0, r3] adds r0, r4, #0 movs r3, #0x70 bl sub_0806FCB8 cmp r0, #0 bne _08021F80 movs r0, #3 strb r0, [r4, #0xc] movs r0, #0x1e _08021F6E: strb r0, [r4, #0xe] adds r0, r4, #0 movs r1, #1 bl UpdateSprite b _08021FA4 .align 2, 0 _08021F7C: .4byte gLinkEntity _08021F80: adds r0, r4, #0 bl sub_08049FA0 cmp r0, #0 beq _08021F94 bl Random movs r1, #0x1f ands r0, r1 b _08021F9A _08021F94: adds r0, r4, #0 bl sub_08049EE4 _08021F9A: strb r0, [r4, #0x15] adds r0, r4, #0 movs r1, #0 bl UpdateSprite _08021FA4: pop {r4, pc} .align 2, 0 thumb_func_start sub_08021FA8 sub_08021FA8: @ 0x08021FA8 push {r4, r5, lr} adds r4, r0, #0 ldr r5, _08021FD4 @ =gUnk_080CB734 bl sub_0800279C lsls r0, r0, #2 adds r0, r0, r5 ldr r1, [r0] adds r0, r4, #0 bl _call_via_r1 ldr r1, _08021FD8 @ =gUnk_080CB8A4 ldrb r0, [r4, #0xb] lsls r0, r0, #2 adds r0, r0, r1 ldrb r1, [r4, #0x1e] ldr r0, [r0] lsls r1, r1, #2 adds r1, r1, r0 ldr r0, [r1] str r0, [r4, #0x48] pop {r4, r5, pc} .align 2, 0 _08021FD4: .4byte gUnk_080CB734 _08021FD8: .4byte gUnk_080CB8A4 thumb_func_start sub_08021FDC sub_08021FDC: @ 0x08021FDC push {lr} ldr r2, _08021FF0 @ =gUnk_080CB74C ldrb r1, [r0, #0xc] lsls r1, r1, #2 adds r1, r1, r2 ldr r1, [r1] bl _call_via_r1 pop {pc} .align 2, 0 _08021FF0: .4byte gUnk_080CB74C thumb_func_start sub_08021FF4 sub_08021FF4: @ 0x08021FF4 push {lr} ldr r1, _08022000 @ =gUnk_080CB734 bl sub_0804AA30 pop {pc} .align 2, 0 _08022000: .4byte gUnk_080CB734 thumb_func_start sub_08022004 sub_08022004: @ 0x08022004 push {r4, lr} adds r4, r0, #0 adds r0, #0x7c ldrh r0, [r0] adds r1, r4, #0 adds r1, #0x7e ldrh r1, [r1] adds r2, r4, #0 adds r2, #0x38 ldrb r2, [r2] bl UpdateCollisionLayer adds r0, r4, #0 movs r1, #5 movs r2, #0 bl CreateFx adds r0, r4, #0 bl sub_08049CF4 bl sub_0805E780 pop {r4, pc} .align 2, 0 thumb_func_start sub_08022034 sub_08022034: @ 0x08022034 push {r4, lr} adds r4, r0, #0 movs r0, #1 strb r0, [r4, #0xc] ldrb r1, [r4, #0xa] movs r0, #3 ands r0, r1 strb r0, [r4, #0xb] adds r2, r4, #0 adds r2, #0x29 ldrb r1, [r2] movs r0, #8 rsbs r0, r0, #0 ands r0, r1 movs r1, #5 orrs r0, r1 strb r0, [r2] ldr r2, _08022098 @ =gUnk_080CB764 ldrb r0, [r4, #0xb] lsls r0, r0, #1 adds r0, r0, r2 ldrb r0, [r0] lsls r0, r0, #0x18 asrs r0, r0, #0x18 ldrh r1, [r4, #0x2e] adds r0, r0, r1 adds r1, r4, #0 adds r1, #0x78 strh r0, [r1] ldrb r0, [r4, #0xb] lsls r0, r0, #1 adds r0, #1 adds r0, r0, r2 ldrb r0, [r0] lsls r0, r0, #0x18 asrs r0, r0, #0x18 ldrh r1, [r4, #0x32] adds r0, r0, r1 adds r1, r4, #0 adds r1, #0x7a strh r0, [r1] ldrb r1, [r4, #0xb] adds r0, r4, #0 bl UpdateSprite adds r0, r4, #0 bl sub_080221C0 pop {r4, pc} .align 2, 0 _08022098: .4byte gUnk_080CB764 thumb_func_start sub_0802209C sub_0802209C: @ 0x0802209C push {r4, lr} adds r4, r0, #0 ldrb r0, [r4, #0xe] cmp r0, #0 bne _080220D2 adds r0, r4, #0 adds r0, #0x78 ldrh r0, [r0] adds r1, r4, #0 adds r1, #0x7a ldrh r1, [r1] movs r2, #0x10 movs r3, #0x10 bl sub_0806FBFC cmp r0, #0 beq _080220D6 movs r0, #2 strb r0, [r4, #0xc] movs r0, #0x12 strb r0, [r4, #0xe] ldrb r1, [r4, #0xb] adds r1, #4 adds r0, r4, #0 bl UpdateSprite b _080220D6 _080220D2: subs r0, #1 strb r0, [r4, #0xe] _080220D6: pop {r4, pc} thumb_func_start sub_080220D8 sub_080220D8: @ 0x080220D8 push {lr} adds r1, r0, #0 ldrb r0, [r1, #0xe] subs r0, #1 strb r0, [r1, #0xe] lsls r0, r0, #0x18 cmp r0, #0 bne _080220EC movs r0, #3 strb r0, [r1, #0xc] _080220EC: pop {pc} .align 2, 0 thumb_func_start sub_080220F0 sub_080220F0: @ 0x080220F0 push {r4, r5, r6, lr} adds r5, r0, #0 bl sub_08004274 adds r0, r5, #0 adds r0, #0x5a ldrb r1, [r0] movs r0, #0x80 ands r0, r1 cmp r0, #0 beq _08022160 movs r1, #0 movs r0, #4 strb r0, [r5, #0xc] movs r0, #0x78 strb r0, [r5, #0xe] adds r0, r5, #0 adds r0, #0x44 strb r1, [r0] ldrb r1, [r5, #0xb] lsls r0, r1, #1 adds r0, r0, r1 lsls r0, r0, #2 ldr r1, _0802215C @ =gUnk_080CB76C adds r4, r0, r1 movs r6, #0 _08022124: adds r0, r5, #0 movs r1, #0x11 movs r2, #0 bl CreateFx adds r1, r0, #0 cmp r1, #0 beq _08022148 movs r0, #0 ldrsb r0, [r4, r0] ldrh r2, [r1, #0x2e] adds r0, r0, r2 strh r0, [r1, #0x2e] movs r0, #1 ldrsb r0, [r4, r0] ldrh r2, [r1, #0x32] adds r0, r0, r2 strh r0, [r1, #0x32] _08022148: adds r6, #1 adds r4, #2 cmp r6, #5 bls _08022124 movs r0, #0x82 lsls r0, r0, #1 bl sub_08004488 b _08022170 .align 2, 0 _0802215C: .4byte gUnk_080CB76C _08022160: movs r0, #1 ands r0, r1 cmp r0, #0 beq _08022170 adds r1, r5, #0 adds r1, #0x44 movs r0, #4 strb r0, [r1] _08022170: pop {r4, r5, r6, pc} .align 2, 0 thumb_func_start sub_08022174 sub_08022174: @ 0x08022174 push {r4, lr} adds r4, r0, #0 bl sub_0800445C ldrb r0, [r4, #0xe] subs r0, #1 strb r0, [r4, #0xe] lsls r0, r0, #0x18 cmp r0, #0 bne _08022196 movs r0, #5 strb r0, [r4, #0xc] ldrb r1, [r4, #0xb] adds r1, #8 adds r0, r4, #0 bl UpdateSprite _08022196: pop {r4, pc} thumb_func_start sub_08022198 sub_08022198: @ 0x08022198 push {r4, lr} adds r4, r0, #0 bl sub_0800445C adds r0, r4, #0 bl sub_08004274 adds r0, r4, #0 adds r0, #0x5a ldrb r1, [r0] movs r0, #0x80 ands r0, r1 cmp r0, #0 beq _080221BC movs r0, #1 strb r0, [r4, #0xc] movs r0, #0x5a strb r0, [r4, #0xe] _080221BC: pop {r4, pc} .align 2, 0 thumb_func_start sub_080221C0 sub_080221C0: @ 0x080221C0 push {r4, r5, r6, lr} adds r6, r0, #0 movs r0, #0x2e ldrsh r4, [r6, r0] ldr r1, _08022220 @ =gRoomControls ldrh r0, [r1, #6] subs r4, r4, r0 asrs r4, r4, #4 movs r2, #0x3f ands r4, r2 movs r3, #0x32 ldrsh r0, [r6, r3] ldrh r1, [r1, #8] subs r0, r0, r1 asrs r0, r0, #4 ands r0, r2 lsls r0, r0, #6 orrs r4, r0 ldr r1, _08022224 @ =gUnk_080B4488 ldrb r0, [r6, #0xb] lsls r0, r0, #1 adds r0, r0, r1 movs r1, #0 ldrsh r0, [r0, r1] adds r4, r4, r0 adds r0, r6, #0 adds r0, #0x7e strh r4, [r0] adds r5, r6, #0 adds r5, #0x38 ldrb r1, [r5] adds r0, r4, #0 bl sub_080001DA adds r1, r6, #0 adds r1, #0x7c strh r0, [r1] ldr r1, _08022228 @ =gUnk_080CB79C ldrb r0, [r6, #0xb] lsls r0, r0, #1 adds r0, r0, r1 ldrh r0, [r0] ldrb r2, [r5] adds r1, r4, #0 bl UpdateCollisionLayer pop {r4, r5, r6, pc} .align 2, 0 _08022220: .4byte gRoomControls _08022224: .4byte gUnk_080B4488 _08022228: .4byte gUnk_080CB79C thumb_func_start sub_0802222C sub_0802222C: @ 0x0802222C push {lr} ldr r1, _08022238 @ =gUnk_080CB948 bl sub_0800129E pop {pc} .align 2, 0 _08022238: .4byte gUnk_080CB948 thumb_func_start sub_0802223C sub_0802223C: @ 0x0802223C push {lr} ldr r2, _08022250 @ =gUnk_080CB960 ldrb r1, [r0, #0xc] lsls r1, r1, #2 adds r1, r1, r2 ldr r1, [r1] bl _call_via_r1 pop {pc} .align 2, 0 _08022250: .4byte gUnk_080CB960 thumb_func_start sub_08022254 sub_08022254: @ 0x08022254 push {r4, r5, lr} adds r4, r0, #0 adds r0, #0x45 ldrb r0, [r0] cmp r0, #0 beq _08022344 adds r0, r4, #0 adds r0, #0x41 ldrb r1, [r0] movs r0, #0x7f ands r0, r1 subs r0, #4 cmp r0, #0x18 bhi _08022356 lsls r0, r0, #2 ldr r1, _0802227C @ =_08022280 adds r0, r0, r1 ldr r0, [r0] mov pc, r0 .align 2, 0 _0802227C: .4byte _08022280 _08022280: @ jump table .4byte _080222E4 @ case 0 .4byte _080222E4 @ case 1 .4byte _080222E4 @ case 2 .4byte _08022356 @ case 3 .4byte _080222E4 @ case 4 .4byte _080222E4 @ case 5 .4byte _080222E4 @ case 6 .4byte _080222E4 @ case 7 .4byte _080222E4 @ case 8 .4byte _080222E4 @ case 9 .4byte _08022356 @ case 10 .4byte _08022356 @ case 11 .4byte _080222E4 @ case 12 .4byte _080222E4 @ case 13 .4byte _080222E4 @ case 14 .4byte _08022356 @ case 15 .4byte _08022356 @ case 16 .4byte _08022356 @ case 17 .4byte _080222F2 @ case 18 .4byte _08022356 @ case 19 .4byte _080222E4 @ case 20 .4byte _080222E4 @ case 21 .4byte _080222E4 @ case 22 .4byte _08022356 @ case 23 .4byte _080222F2 @ case 24 _080222E4: ldr r0, _08022340 @ =gLinkState adds r0, #0xac ldrh r1, [r0] movs r0, #8 ands r0, r1 cmp r0, #0 beq _08022356 _080222F2: adds r0, r4, #0 movs r1, #4 movs r2, #0 bl CreateFx movs r0, #1 movs r1, #1 bl CreateEnemy adds r5, r0, #0 cmp r5, #0 beq _08022356 movs r0, #1 strb r0, [r5, #0xb] adds r1, r5, #0 adds r1, #0x3d movs r0, #0xf8 strb r0, [r1] adds r0, r4, #0 adds r1, r5, #0 bl sub_0804A4E4 movs r0, #2 strb r0, [r4, #0xc] ldrb r1, [r4, #0x10] movs r0, #0x7f ands r0, r1 strb r0, [r4, #0x10] ldrb r1, [r4, #0x18] movs r0, #4 rsbs r0, r0, #0 ands r0, r1 strb r0, [r4, #0x18] adds r0, r4, #0 adds r0, #0x3e ldrb r0, [r0] strb r0, [r4, #0x15] str r5, [r4, #0x54] b _08022356 .align 2, 0 _08022340: .4byte gLinkState _08022344: adds r0, r4, #0 adds r0, #0x3f ldrb r0, [r0] cmp r0, #0x94 beq _08022356 adds r0, r4, #0 movs r1, #2 bl UpdateSprite _08022356: ldr r1, _08022360 @ =gUnk_080CB948 adds r0, r4, #0 bl sub_0804AA30 pop {r4, r5, pc} .align 2, 0 _08022360: .4byte gUnk_080CB948 thumb_func_start nullsub_131 nullsub_131: @ 0x08022364 bx lr .align 2, 0 thumb_func_start sub_08022368 sub_08022368: @ 0x08022368 push {r4, lr} adds r4, r0, #0 bl sub_0804A720 movs r0, #1 strb r0, [r4, #0xc] bl Random strb r0, [r4, #0xe] adds r0, r4, #0 movs r1, #1 bl sub_08049F84 strb r0, [r4, #0x15] adds r0, r4, #0 movs r1, #0 bl UpdateSprite pop {r4, pc} .align 2, 0 thumb_func_start sub_08022390 sub_08022390: @ 0x08022390 push {r4, lr} adds r4, r0, #0 movs r1, #1 bl sub_08049FDC cmp r0, #0 beq _080223D4 ldrb r1, [r4, #0xe] adds r0, r1, #1 strb r0, [r4, #0xe] movs r0, #0xf ands r0, r1 cmp r0, #0 bne _080223C0 adds r0, r4, #0 movs r1, #1 bl sub_08049F84 strb r0, [r4, #0x15] bl Random movs r1, #4 ands r0, r1 strb r0, [r4, #0xf] _080223C0: ldrb r0, [r4, #0xf] cmp r0, #0 bne _080223CE adds r0, r4, #0 bl sub_080AEF88 b _080223DA _080223CE: subs r0, #1 strb r0, [r4, #0xf] b _080223DA _080223D4: bl Random strb r0, [r4, #0xe] _080223DA: adds r0, r4, #0 bl sub_08004274 pop {r4, pc} .align 2, 0 thumb_func_start sub_080223E4 sub_080223E4: @ 0x080223E4 push {lr} adds r3, r0, #0 ldr r2, [r3, #0x54] cmp r2, #0 beq _0802240A adds r1, r2, #0 adds r1, #0x41 movs r0, #0x94 strb r0, [r1] subs r1, #4 movs r0, #0x10 strb r0, [r1] adds r1, #5 movs r0, #0xc strb r0, [r1] ldrb r1, [r3, #0x15] adds r0, r2, #0 adds r0, #0x3e strb r1, [r0] _0802240A: adds r0, r3, #0 bl sub_0805E7BC pop {pc} .align 2, 0 thumb_func_start sub_08022414 sub_08022414: @ 0x08022414 push {r4, lr} adds r4, r0, #0 ldr r1, _08022430 @ =gUnk_080CBA28 bl sub_0800129E movs r3, #0x10 rsbs r3, r3, #0 adds r0, r4, #0 movs r1, #0 movs r2, #1 bl sub_0804A9AC pop {r4, pc} .align 2, 0 _08022430: .4byte gUnk_080CBA28 thumb_func_start sub_08022434 sub_08022434: @ 0x08022434 push {lr} ldr r2, _08022448 @ =gUnk_080CBA40 ldrb r1, [r0, #0xc] lsls r1, r1, #2 adds r1, r1, r2 ldr r1, [r1] bl _call_via_r1 pop {pc} .align 2, 0 _08022448: .4byte gUnk_080CBA40 thumb_func_start sub_0802244C sub_0802244C: @ 0x0802244C push {r4, r5, r6, r7, lr} adds r4, r0, #0 adds r5, r4, #0 adds r5, #0x45 ldrb r0, [r5] cmp r0, #0 bne _0802245C b _08022582 _0802245C: adds r0, r4, #0 adds r0, #0x3f ldrb r1, [r0] adds r6, r0, #0 cmp r1, #0x65 bne _08022522 adds r0, #2 ldrb r1, [r0] movs r0, #0x7f ands r0, r1 subs r0, #2 cmp r0, #0x18 bhi _08022540 lsls r0, r0, #2 ldr r1, _08022480 @ =_08022484 adds r0, r0, r1 ldr r0, [r0] mov pc, r0 .align 2, 0 _08022480: .4byte _08022484 _08022484: @ jump table .4byte _080224E8 @ case 0 .4byte _080224E8 @ case 1 .4byte _08022540 @ case 2 .4byte _08022540 @ case 3 .4byte _08022540 @ case 4 .4byte _08022540 @ case 5 .4byte _08022508 @ case 6 .4byte _08022508 @ case 7 .4byte _08022508 @ case 8 .4byte _08022508 @ case 9 .4byte _08022508 @ case 10 .4byte _08022540 @ case 11 .4byte _08022540 @ case 12 .4byte _08022540 @ case 13 .4byte _08022540 @ case 14 .4byte _08022540 @ case 15 .4byte _08022540 @ case 16 .4byte _08022540 @ case 17 .4byte _08022540 @ case 18 .4byte _08022540 @ case 19 .4byte _08022508 @ case 20 .4byte _08022540 @ case 21 .4byte _08022508 @ case 22 .4byte _08022508 @ case 23 .4byte _08022508 @ case 24 _080224E8: movs r0, #2 strb r0, [r4, #0xc] movs r0, #0x3c strb r0, [r4, #0xf] movs r0, #0x5c strb r0, [r6] ldr r0, _08022504 @ =gUnk_080FD468 str r0, [r4, #0x48] adds r0, r4, #0 movs r1, #0 bl UpdateSprite b _08022540 .align 2, 0 _08022504: .4byte gUnk_080FD468 _08022508: adds r0, r4, #0 movs r1, #0x1c bl sub_0804A9FC movs r0, #5 strb r0, [r4, #0xc] movs r0, #0x5c strb r0, [r6] adds r0, r4, #0 movs r1, #1 bl UpdateSprite b _08022540 _08022522: adds r0, r4, #0 adds r0, #0x41 ldrb r0, [r0] cmp r0, #0x94 bne _08022540 adds r0, r4, #0 movs r1, #0x1c bl sub_0804A9FC movs r0, #5 strb r0, [r4, #0xc] adds r0, r4, #0 movs r1, #1 bl UpdateSprite _08022540: adds r0, r4, #0 adds r0, #0x80 adds r1, r4, #0 adds r1, #0x45 ldrb r2, [r0] adds r5, r1, #0 adds r7, r0, #0 ldrb r0, [r5] cmp r2, r0 beq _08022566 movs r0, #5 strb r0, [r4, #0xc] movs r0, #0x5c strb r0, [r6] adds r0, r4, #0 movs r1, #1 bl UpdateSprite b _0802258E _08022566: ldrb r0, [r4, #0xc] cmp r0, #3 bne _0802258E movs r0, #4 strb r0, [r4, #0xc] adds r0, r4, #0 movs r1, #3 bl UpdateSprite movs r0, #0xca lsls r0, r0, #1 bl sub_08004488 b _0802258E _08022582: adds r0, r4, #0 movs r1, #1 bl UpdateSprite adds r7, r4, #0 adds r7, #0x80 _0802258E: ldrb r0, [r5] strb r0, [r7] ldr r1, _0802259C @ =gUnk_080CBA28 adds r0, r4, #0 bl sub_0804AA30 pop {r4, r5, r6, r7, pc} .align 2, 0 _0802259C: .4byte gUnk_080CBA28 thumb_func_start sub_080225A0 sub_080225A0: @ 0x080225A0 push {r4, lr} adds r4, r0, #0 adds r0, #0x58 ldrb r0, [r0] cmp r0, #1 bne _080225B2 adds r0, r4, #0 bl sub_08004274 _080225B2: adds r0, r4, #0 bl sub_08001318 pop {r4, pc} .align 2, 0 thumb_func_start sub_080225BC sub_080225BC: @ 0x080225BC push {r4, lr} adds r4, r0, #0 movs r1, #0xc0 lsls r1, r1, #5 bl sub_08003FC4 adds r0, r4, #0 adds r0, #0x5a ldrb r1, [r0] movs r0, #1 ands r0, r1 cmp r0, #0 beq _080225DE adds r0, r4, #0 bl sub_0804A7D4 b _080225E4 _080225DE: adds r0, r4, #0 bl sub_08004274 _080225E4: pop {r4, pc} .align 2, 0 thumb_func_start nullsub_9 nullsub_9: @ 0x080225E8 bx lr .align 2, 0 thumb_func_start sub_080225EC sub_080225EC: @ 0x080225EC push {r4, lr} adds r4, r0, #0 bl sub_0804A720 adds r0, r4, #0 adds r0, #0x45 ldrb r1, [r0] adds r0, #0x3b strb r1, [r0] adds r1, r4, #0 adds r1, #0x81 movs r0, #0x5a strb r0, [r1] ldrb r0, [r4, #0xe] cmp r0, #0 bne _0802261A movs r0, #2 strb r0, [r4, #0xc] adds r0, r4, #0 movs r1, #0 bl UpdateSprite b _0802264C _0802261A: movs r0, #1 strb r0, [r4, #0xc] movs r0, #0x3c strb r0, [r4, #0xf] ldrb r0, [r4, #0x18] movs r1, #3 orrs r0, r1 strb r0, [r4, #0x18] ldrb r2, [r4, #0x19] movs r1, #0x3f adds r0, r1, #0 ands r0, r2 movs r2, #0x40 orrs r0, r2 strb r0, [r4, #0x19] ldrb r0, [r4, #0x1b] ands r1, r0 orrs r1, r2 strb r1, [r4, #0x1b] ldr r0, _08022650 @ =0x0000FF80 strh r0, [r4, #0x36] adds r0, r4, #0 movs r1, #6 bl UpdateSprite _0802264C: pop {r4, pc} .align 2, 0 _08022650: .4byte 0x0000FF80 thumb_func_start sub_08022654 sub_08022654: @ 0x08022654 push {r4, lr} adds r4, r0, #0 ldrb r0, [r4, #0xd] cmp r0, #1 beq _0802268C cmp r0, #1 bgt _08022668 cmp r0, #0 beq _0802266E b _080226E4 _08022668: cmp r0, #2 beq _080226BE b _080226E4 _0802266E: ldrb r0, [r4, #0xf] subs r0, #1 strb r0, [r4, #0xf] lsls r0, r0, #0x18 cmp r0, #0 bne _080226E4 movs r0, #1 strb r0, [r4, #0xd] ldr r0, _080226E8 @ =0x0000012D bl PlaySFX adds r0, r4, #0 movs r1, #0 bl UpdateSprite _0802268C: movs r1, #0xc0 lsls r1, r1, #5 adds r0, r4, #0 bl sub_08003FC4 cmp r0, #0 bne _080226E4 movs r0, #2 strb r0, [r4, #0xd] ldrb r1, [r4, #0x18] subs r0, #6 ands r0, r1 movs r1, #1 orrs r0, r1 strb r0, [r4, #0x18] adds r0, r4, #0 movs r1, #5 bl UpdateSprite movs r0, #0x7d bl sub_08004488 adds r0, r4, #0 bl UpdateSpriteOrderAndFlip _080226BE: adds r0, r4, #0 bl sub_08004274 ldrb r0, [r4, #0xe] subs r0, #1 strb r0, [r4, #0xe] lsls r0, r0, #0x18 cmp r0, #0 bne _080226E4 movs r0, #3 strb r0, [r4, #0xc] adds r1, r4, #0 adds r1, #0x3f movs r0, #0x65 strb r0, [r1] adds r0, r4, #0 movs r1, #2 bl UpdateSprite _080226E4: pop {r4, pc} .align 2, 0 _080226E8: .4byte 0x0000012D thumb_func_start sub_080226EC sub_080226EC: @ 0x080226EC push {r4, lr} adds r4, r0, #0 movs r1, #1 bl sub_08049FDC cmp r0, #0 beq _08022776 adds r0, r4, #0 bl sub_080228CC cmp r0, #0 beq _0802271A movs r0, #3 strb r0, [r4, #0xc] adds r1, r4, #0 adds r1, #0x3f movs r0, #0x65 strb r0, [r1] adds r0, r4, #0 movs r1, #2 bl UpdateSprite b _0802277C _0802271A: adds r0, r4, #0 bl sub_080228F0 cmp r0, #0 beq _08022758 movs r0, #6 strb r0, [r4, #0xc] movs r0, #0x90 lsls r0, r0, #9 str r0, [r4, #0x20] movs r0, #0xa0 lsls r0, r0, #1 strh r0, [r4, #0x24] ldr r0, _08022754 @ =gUnk_020000B0 ldr r1, [r0] adds r0, r4, #0 bl sub_080045C4 strb r0, [r4, #0x15] adds r1, r4, #0 adds r1, #0x3f movs r0, #0x5a strb r0, [r1] adds r0, r4, #0 movs r1, #4 bl UpdateSprite b _0802277C .align 2, 0 _08022754: .4byte gUnk_020000B0 _08022758: ldrb r1, [r4, #0xe] adds r0, r1, #1 strb r0, [r4, #0xe] movs r0, #7 ands r0, r1 cmp r0, #0 bne _08022770 adds r0, r4, #0 movs r1, #1 bl sub_08049F84 strb r0, [r4, #0x15] _08022770: adds r0, r4, #0 bl sub_080AEF88 _08022776: adds r0, r4, #0 bl sub_08004274 _0802277C: pop {r4, pc} .align 2, 0 thumb_func_start sub_08022780 sub_08022780: @ 0x08022780 push {r4, lr} adds r4, r0, #0 bl sub_08004274 adds r0, r4, #0 adds r0, #0x5a ldrb r1, [r0] movs r0, #0x80 ands r0, r1 cmp r0, #0 beq _080227AA movs r0, #4 strb r0, [r4, #0xc] adds r0, r4, #0 movs r1, #3 bl UpdateSprite movs r0, #0xca lsls r0, r0, #1 bl sub_08004488 _080227AA: pop {r4, pc} thumb_func_start sub_080227AC sub_080227AC: @ 0x080227AC push {r4, lr} adds r4, r0, #0 bl sub_08004274 adds r0, r4, #0 adds r0, #0x5a ldrb r1, [r0] movs r0, #1 ands r0, r1 cmp r0, #0 beq _080227CC ldr r0, _080227C8 @ =gUnk_080FD470 b _080227CE .align 2, 0 _080227C8: .4byte gUnk_080FD470 _080227CC: ldr r0, _08022814 @ =gUnk_080FD468 _080227CE: str r0, [r4, #0x48] adds r2, r4, #0 adds r2, #0x5a ldrb r1, [r2] movs r3, #2 adds r0, r3, #0 ands r0, r1 cmp r0, #0 beq _080227EE movs r0, #0xfd ands r0, r1 strb r0, [r2] adds r1, r4, #0 adds r1, #0x3f movs r0, #0x5c strb r0, [r1] _080227EE: ldrb r1, [r2] movs r0, #0x80 ands r0, r1 cmp r0, #0 beq _08022812 strb r3, [r4, #0xc] bl Random ldr r2, _08022818 @ =gUnk_080CBA60 movs r1, #3 ands r1, r0 adds r1, r1, r2 ldrb r0, [r1] strb r0, [r4, #0xf] adds r0, r4, #0 movs r1, #0 bl UpdateSprite _08022812: pop {r4, pc} .align 2, 0 _08022814: .4byte gUnk_080FD468 _08022818: .4byte gUnk_080CBA60 thumb_func_start sub_0802281C sub_0802281C: @ 0x0802281C push {r4, lr} adds r4, r0, #0 movs r1, #0xc0 lsls r1, r1, #5 bl sub_08003FC4 adds r0, r4, #0 bl sub_08004274 adds r0, r4, #0 adds r0, #0x5a ldrb r1, [r0] movs r0, #0x80 ands r0, r1 cmp r0, #0 beq _08022852 movs r0, #2 strb r0, [r4, #0xc] movs r0, #0x20 strh r0, [r4, #0x24] adds r0, r4, #0 movs r1, #0 bl UpdateSprite adds r0, r4, #0 bl sub_0804AA1C _08022852: pop {r4, pc} thumb_func_start sub_08022854 sub_08022854: @ 0x08022854 push {r4, lr} adds r4, r0, #0 bl sub_08004274 adds r0, r4, #0 adds r0, #0x5a ldrb r1, [r0] movs r0, #1 ands r0, r1 cmp r0, #0 beq _08022898 adds r0, r4, #0 bl sub_080AEFE0 movs r1, #0xc0 lsls r1, r1, #5 adds r0, r4, #0 bl sub_08003FC4 cmp r0, #0 bne _08022898 movs r0, #7 strb r0, [r4, #0xc] adds r1, r4, #0 adds r1, #0x3f movs r0, #0x5c strb r0, [r1] adds r0, r4, #0 movs r1, #5 bl UpdateSprite movs r0, #0x7d bl sub_08004488 _08022898: pop {r4, pc} .align 2, 0 thumb_func_start sub_0802289C sub_0802289C: @ 0x0802289C push {r4, lr} adds r4, r0, #0 bl sub_08004274 adds r0, r4, #0 adds r0, #0x5a ldrb r1, [r0] movs r0, #0x80 ands r0, r1 cmp r0, #0 beq _080228CA movs r0, #2 strb r0, [r4, #0xc] movs r0, #0x20 strh r0, [r4, #0x24] adds r1, r4, #0 adds r1, #0x81 movs r0, #0x78 strb r0, [r1] adds r0, r4, #0 movs r1, #0 bl UpdateSprite _080228CA: pop {r4, pc} thumb_func_start sub_080228CC sub_080228CC: @ 0x080228CC push {lr} adds r1, r0, #0 ldrb r0, [r1, #0xf] cmp r0, #0 bne _080228E8 adds r0, r1, #0 movs r1, #1 movs r2, #0x28 bl sub_08049F64 cmp r0, #0 beq _080228EC movs r0, #1 b _080228EE _080228E8: subs r0, #1 strb r0, [r1, #0xf] _080228EC: movs r0, #0 _080228EE: pop {pc} thumb_func_start sub_080228F0 sub_080228F0: @ 0x080228F0 push {lr} adds r1, r0, #0 adds r2, r1, #0 adds r2, #0x81 ldrb r0, [r2] cmp r0, #0 bne _08022910 adds r0, r1, #0 movs r1, #1 movs r2, #0x40 bl sub_08049F64 cmp r0, #0 beq _08022914 movs r0, #1 b _08022916 _08022910: subs r0, #1 strb r0, [r2] _08022914: movs r0, #0 _08022916: pop {pc} thumb_func_start sub_08022918 sub_08022918: @ 0x08022918 push {r4, r5, lr} adds r5, r0, #0 ldr r4, _08022930 @ =gUnk_080CBB64 bl sub_0800279C lsls r0, r0, #2 adds r0, r0, r4 ldr r1, [r0] adds r0, r5, #0 bl _call_via_r1 pop {r4, r5, pc} .align 2, 0 _08022930: .4byte gUnk_080CBB64 thumb_func_start sub_08022934 sub_08022934: @ 0x08022934 push {lr} ldr r2, _08022948 @ =gUnk_080CBB7C ldrb r1, [r0, #0xc] lsls r1, r1, #2 adds r1, r1, r2 ldr r1, [r1] bl _call_via_r1 pop {pc} .align 2, 0 _08022948: .4byte gUnk_080CBB7C thumb_func_start sub_0802294C sub_0802294C: @ 0x0802294C push {lr} ldr r1, _08022958 @ =gUnk_080CBB64 bl sub_0804AA30 pop {pc} .align 2, 0 _08022958: .4byte gUnk_080CBB64 thumb_func_start nullsub_132 nullsub_132: @ 0x0802295C bx lr .align 2, 0 thumb_func_start sub_08022960 sub_08022960: @ 0x08022960 push {r4, lr} adds r4, r0, #0 bl sub_0804A720 adds r0, r4, #0 bl sub_08022A88 pop {r4, pc} thumb_func_start sub_08022970 sub_08022970: @ 0x08022970 push {lr} adds r1, r0, #0 ldrb r0, [r1, #0xe] subs r0, #1 strb r0, [r1, #0xe] lsls r0, r0, #0x18 cmp r0, #0 bne _08022986 adds r0, r1, #0 bl sub_08022AA4 _08022986: pop {pc} thumb_func_start sub_08022988 sub_08022988: @ 0x08022988 push {r4, lr} adds r4, r0, #0 movs r1, #0x36 ldrsh r0, [r4, r1] cmp r0, #0 bne _080229A6 adds r0, r4, #0 bl sub_08022B20 cmp r0, #0 beq _080229A6 adds r0, r4, #0 bl sub_08022B0C b _080229F6 _080229A6: ldrb r0, [r4, #0xf] cmp r0, #0 beq _080229C6 subs r0, #1 strb r0, [r4, #0xf] lsls r0, r0, #0x18 cmp r0, #0 bne _080229F6 movs r0, #1 strb r0, [r4, #0x1e] movs r0, #0x80 lsls r0, r0, #9 str r0, [r4, #0x20] movs r0, #0xd6 bl sub_08004488 _080229C6: adds r0, r4, #0 bl sub_080AEF88 movs r1, #0x80 lsls r1, r1, #6 adds r0, r4, #0 bl sub_08003FC4 adds r1, r0, #0 cmp r1, #0 bne _080229F6 ldrb r0, [r4, #0xe] subs r0, #1 strb r0, [r4, #0xe] lsls r0, r0, #0x18 cmp r0, #0 bne _080229F0 adds r0, r4, #0 bl sub_08022A88 b _080229F6 _080229F0: movs r0, #4 strb r0, [r4, #0xf] strb r1, [r4, #0x1e] _080229F6: pop {r4, pc} thumb_func_start sub_080229F8 sub_080229F8: @ 0x080229F8 push {r4, lr} adds r4, r0, #0 movs r1, #0xa0 lsls r1, r1, #6 bl sub_08003FC4 cmp r0, #0 bne _08022A3C ldrb r0, [r4, #0xe] subs r0, #1 strb r0, [r4, #0xe] lsls r0, r0, #0x18 lsrs r1, r0, #0x18 cmp r1, #0 bne _08022A30 movs r0, #4 strb r0, [r4, #0xc] movs r0, #6 strb r0, [r4, #0xe] movs r0, #8 strb r0, [r4, #0xf] strb r1, [r4, #0x1e] movs r0, #0xc0 strh r0, [r4, #0x24] adds r0, r4, #0 bl sub_08022B44 b _08022A3C _08022A30: movs r0, #0x80 lsls r0, r0, #9 str r0, [r4, #0x20] movs r0, #0xd6 bl sub_08004488 _08022A3C: pop {r4, pc} .align 2, 0 thumb_func_start sub_08022A40 sub_08022A40: @ 0x08022A40 push {r4, lr} adds r4, r0, #0 ldrb r0, [r4, #0xf] cmp r0, #0 beq _08022A58 subs r0, #1 strb r0, [r4, #0xf] lsls r0, r0, #0x18 cmp r0, #0 bne _08022A86 movs r0, #1 strb r0, [r4, #0x1e] _08022A58: adds r0, r4, #0 bl sub_080AEF88 movs r1, #0x80 lsls r1, r1, #6 adds r0, r4, #0 bl sub_08003FC4 cmp r0, #0 bne _08022A86 ldrb r0, [r4, #0xe] subs r0, #1 strb r0, [r4, #0xe] lsls r0, r0, #0x18 cmp r0, #0 bne _08022A80 adds r0, r4, #0 bl sub_08022A88 b _08022A86 _08022A80: adds r0, r4, #0 bl sub_08022B44 _08022A86: pop {r4, pc} thumb_func_start sub_08022A88 sub_08022A88: @ 0x08022A88 push {r4, r5, lr} adds r4, r0, #0 movs r5, #0 movs r0, #1 strb r0, [r4, #0xc] bl Random movs r1, #0xf ands r0, r1 adds r0, #8 strb r0, [r4, #0xe] strb r5, [r4, #0x1e] pop {r4, r5, pc} .align 2, 0 thumb_func_start sub_08022AA4 sub_08022AA4: @ 0x08022AA4 push {r4, r5, lr} adds r4, r0, #0 bl Random adds r5, r0, #0 movs r0, #2 strb r0, [r4, #0xc] movs r1, #3 adds r0, r5, #0 ands r0, r1 adds r0, #1 strb r0, [r4, #0xe] movs r0, #1 strb r0, [r4, #0xf] movs r0, #0x80 strh r0, [r4, #0x24] adds r0, r4, #0 bl sub_08049FA0 cmp r0, #0 bne _08022AE0 lsrs r0, r5, #8 movs r1, #3 ands r0, r1 cmp r0, #0 beq _08022AE0 adds r0, r4, #0 bl sub_08049EE4 b _08022AE6 _08022AE0: lsrs r0, r5, #0x10 movs r1, #0x1f ands r0, r1 _08022AE6: strb r0, [r4, #0x15] ldrb r1, [r4, #0x15] movs r0, #0xf ands r0, r1 cmp r0, #0 beq _08022B08 lsrs r1, r1, #4 movs r0, #1 eors r1, r0 ands r1, r0 lsls r1, r1, #6 ldrb r2, [r4, #0x18] movs r0, #0x41 rsbs r0, r0, #0 ands r0, r2 orrs r0, r1 strb r0, [r4, #0x18] _08022B08: pop {r4, r5, pc} .align 2, 0 thumb_func_start sub_08022B0C sub_08022B0C: @ 0x08022B0C push {lr} movs r1, #3 strb r1, [r0, #0xc] strb r1, [r0, #0xe] movs r1, #8 strb r1, [r0, #0xf] bl sub_08022B44 pop {pc} .align 2, 0 thumb_func_start sub_08022B20 sub_08022B20: @ 0x08022B20 push {r4, lr} adds r4, r0, #0 movs r0, #2 bl sub_08049DF4 cmp r0, #0 beq _08022B40 ldr r1, _08022B3C @ =gLinkEntity adds r0, r4, #0 movs r2, #0x24 movs r3, #0x24 bl sub_080041A0 b _08022B42 .align 2, 0 _08022B3C: .4byte gLinkEntity _08022B40: movs r0, #0 _08022B42: pop {r4, pc} thumb_func_start sub_08022B44 sub_08022B44: @ 0x08022B44 push {r4, lr} adds r4, r0, #0 movs r0, #0xc0 lsls r0, r0, #8 str r0, [r4, #0x20] ldr r1, _08022B84 @ =gLinkEntity adds r0, r4, #0 bl sub_080045C4 adds r1, r0, #0 strb r1, [r4, #0x15] movs r0, #0xf ands r0, r1 cmp r0, #0 beq _08022B7A lsls r1, r1, #0x18 lsrs r1, r1, #0x1c movs r0, #1 eors r1, r0 ands r1, r0 lsls r1, r1, #6 ldrb r2, [r4, #0x18] movs r0, #0x41 rsbs r0, r0, #0 ands r0, r2 orrs r0, r1 strb r0, [r4, #0x18] _08022B7A: movs r0, #0xd6 bl sub_08004488 pop {r4, pc} .align 2, 0 _08022B84: .4byte gLinkEntity thumb_func_start sub_08022B88 sub_08022B88: @ 0x08022B88 push {lr} ldr r2, _08022B9C @ =gUnk_080CBB90 ldrb r1, [r0, #0xa] lsls r1, r1, #2 adds r1, r1, r2 ldr r1, [r1] bl _call_via_r1 pop {pc} .align 2, 0 _08022B9C: .4byte gUnk_080CBB90 thumb_func_start sub_08022BA0 sub_08022BA0: @ 0x08022BA0 push {r4, lr} adds r4, r0, #0 adds r1, r4, #0 adds r1, #0x79 ldrb r0, [r1] adds r0, #1 strb r0, [r1] ldrh r1, [r4, #0x2e] adds r0, r4, #0 adds r0, #0x74 strh r1, [r0] ldrh r0, [r4, #0x32] adds r1, r4, #0 adds r1, #0x76 strh r0, [r1] ldr r1, _08022BD0 @ =gUnk_080CBBA0 adds r0, r4, #0 bl sub_0800129E adds r0, r4, #0 bl sub_08022EAC pop {r4, pc} .align 2, 0 _08022BD0: .4byte gUnk_080CBBA0 thumb_func_start sub_08022BD4 sub_08022BD4: @ 0x08022BD4 push {lr} ldr r2, _08022BE8 @ =gUnk_080CBBB4 ldrb r1, [r0, #0xc] lsls r1, r1, #2 adds r1, r1, r2 ldr r1, [r1] bl _call_via_r1 pop {pc} .align 2, 0 _08022BE8: .4byte gUnk_080CBBB4 thumb_func_start sub_08022BEC sub_08022BEC: @ 0x08022BEC push {lr} adds r2, r0, #0 movs r0, #0x7a adds r0, r0, r2 mov ip, r0 adds r3, r2, #0 adds r3, #0x45 ldrb r0, [r0] ldrb r1, [r3] cmp r0, r1 beq _08022C0A adds r1, r2, #0 adds r1, #0x7b movs r0, #0x1e strb r0, [r1] _08022C0A: ldrb r0, [r3] mov r1, ip strb r0, [r1] movs r0, #1 strb r0, [r2, #0xe] adds r0, r2, #0 adds r0, #0x3e ldrb r0, [r0] strb r0, [r2, #0x15] ldrb r0, [r2, #0x15] adds r0, #2 movs r1, #0x1c ands r0, r1 asrs r0, r0, #2 strb r0, [r2, #0x14] strb r0, [r2, #0x1e] ldr r0, [r2, #0x54] adds r3, r2, #0 adds r3, #0x3d ldrb r1, [r3] adds r0, #0x3d strb r1, [r0] ldr r0, [r2, #0x7c] ldrb r1, [r3] adds r0, #0x3d strb r1, [r0] adds r0, r2, #0 adds r0, #0x80 ldr r0, [r0] ldrb r1, [r3] adds r0, #0x3d strb r1, [r0] ldr r1, _08022C54 @ =gUnk_080CBBA0 adds r0, r2, #0 bl sub_0804AA30 pop {pc} .align 2, 0 _08022C54: .4byte gUnk_080CBBA0 thumb_func_start sub_08022C58 sub_08022C58: @ 0x08022C58 push {r4, r5, r6, r7, lr} mov r7, sb mov r6, r8 push {r6, r7} adds r7, r0, #0 ldrb r1, [r7, #0x10] movs r0, #0x7f ands r0, r1 strb r0, [r7, #0x10] ldr r0, _08022D3C @ =gUnk_03003DBC ldrb r0, [r0] cmp r0, #0x44 bhi _08022D34 movs r0, #0xd movs r1, #1 bl CreateEnemy mov sb, r0 str r0, [r7, #0x54] mov r2, sb adds r2, #0x29 ldrb r1, [r2] movs r4, #8 rsbs r4, r4, #0 adds r0, r4, #0 ands r0, r1 movs r1, #5 mov r8, r1 mov r1, r8 orrs r0, r1 strb r0, [r2] mov r0, sb str r7, [r0, #0x50] adds r0, r7, #0 mov r1, sb bl CopyPosition movs r0, #0xd movs r1, #2 bl CreateEnemy adds r6, r0, #0 mov r1, sb str r6, [r1, #0x54] adds r2, r6, #0 adds r2, #0x29 ldrb r1, [r2] adds r0, r4, #0 ands r0, r1 mov r1, r8 orrs r0, r1 strb r0, [r2] str r7, [r6, #0x50] adds r0, r7, #0 adds r1, r6, #0 bl CopyPosition movs r0, #0xd movs r1, #3 bl CreateEnemy adds r5, r0, #0 str r5, [r6, #0x54] adds r1, r5, #0 adds r1, #0x29 ldrb r0, [r1] ands r4, r0 mov r0, r8 orrs r4, r0 strb r4, [r1] str r7, [r5, #0x50] adds r0, r7, #0 adds r1, r5, #0 bl CopyPosition adds r0, r7, #0 bl sub_0804A720 movs r0, #1 strb r0, [r7, #0xc] strb r0, [r7, #0xe] strb r0, [r7, #0xf] ldrb r0, [r7, #0x10] movs r1, #0x80 orrs r0, r1 strb r0, [r7, #0x10] str r7, [r7, #0x50] mov r1, sb str r1, [r7, #0x54] str r6, [r7, #0x7c] adds r0, r7, #0 adds r0, #0x80 str r5, [r0] bl Random movs r1, #0x1f ands r0, r1 strb r0, [r7, #0x15] ldrb r0, [r7, #0x15] adds r0, #2 movs r1, #0x1c ands r0, r1 asrs r0, r0, #2 strb r0, [r7, #0x14] strb r0, [r7, #0x1e] adds r0, r7, #0 adds r0, #0x45 ldrb r1, [r0] adds r0, #0x35 strb r1, [r0] _08022D34: pop {r3, r4} mov r8, r3 mov sb, r4 pop {r4, r5, r6, r7, pc} .align 2, 0 _08022D3C: .4byte gUnk_03003DBC thumb_func_start sub_08022D40 sub_08022D40: @ 0x08022D40 push {r4, lr} adds r4, r0, #0 adds r2, r4, #0 adds r2, #0x7b ldrb r1, [r2] cmp r1, #0 beq _08022D66 adds r0, r1, #0 adds r0, #0xff strb r0, [r2] movs r0, #1 ands r0, r1 cmp r0, #0 beq _08022D8E ldrb r0, [r4, #0x14] adds r0, #1 movs r1, #7 ands r0, r1 b _08022D8A _08022D66: adds r0, r4, #0 bl sub_08022F14 adds r0, r4, #0 bl sub_080AEF88 ldrh r0, [r4, #0x2a] cmp r0, #0 beq _08022D8E adds r1, r0, #0 adds r0, r4, #0 bl sub_0800417E ldrb r0, [r4, #0x15] adds r0, #2 movs r1, #0x1c ands r0, r1 asrs r0, r0, #2 _08022D8A: strb r0, [r4, #0x14] strb r0, [r4, #0x1e] _08022D8E: pop {r4, pc} thumb_func_start sub_08022D90 sub_08022D90: @ 0x08022D90 push {r4, r5, lr} adds r5, r0, #0 ldr r0, [r5, #0x50] ldr r0, [r0, #4] cmp r0, #0 beq _08022DE0 ldr r1, _08022DDC @ =gUnk_080CBBBC ldrb r0, [r5, #0xc] lsls r0, r0, #2 adds r0, r0, r1 ldr r1, [r0] adds r0, r5, #0 bl _call_via_r1 ldr r4, [r5, #0x50] ldrb r2, [r4, #0x1b] lsrs r2, r2, #6 lsls r2, r2, #6 ldrb r3, [r5, #0x1b] movs r1, #0x3f adds r0, r1, #0 ands r0, r3 orrs r0, r2 strb r0, [r5, #0x1b] ldrb r0, [r4, #0x19] lsrs r0, r0, #6 lsls r0, r0, #6 ldrb r2, [r5, #0x19] ands r1, r2 orrs r1, r0 strb r1, [r5, #0x19] adds r4, #0x38 ldrb r1, [r4] adds r0, r5, #0 adds r0, #0x38 strb r1, [r0] b _08022DE6 .align 2, 0 _08022DDC: .4byte gUnk_080CBBBC _08022DE0: adds r0, r5, #0 bl sub_0805E7BC _08022DE6: pop {r4, r5, pc} thumb_func_start sub_08022DE8 sub_08022DE8: @ 0x08022DE8 push {lr} adds r3, r0, #0 movs r0, #1 strb r0, [r3, #0xc] adds r0, r3, #0 adds r0, #0x7c movs r1, #0x88 strb r1, [r0] adds r0, #1 strb r1, [r0] adds r0, #1 strb r1, [r0] adds r0, #1 strb r1, [r0] adds r0, #1 strb r1, [r0] adds r0, #1 strb r1, [r0] adds r0, #1 strb r1, [r0] adds r0, #1 strb r1, [r0] ldr r0, [r3, #0x50] ldrb r0, [r0, #0x14] strb r0, [r3, #0x14] adds r2, r3, #0 adds r2, #0x84 ldrb r1, [r3, #0x14] lsls r0, r1, #4 adds r0, r0, r1 lsls r1, r0, #8 adds r0, r0, r1 lsls r1, r0, #0x10 adds r0, r0, r1 str r0, [r2] ldrb r0, [r3, #0xa] cmp r0, #3 beq _08022E38 adds r0, #7 b _08022E3C _08022E38: ldrb r0, [r3, #0x14] adds r0, #0xa _08022E3C: strb r0, [r3, #0x1e] pop {pc} thumb_func_start sub_08022E40 sub_08022E40: @ 0x08022E40 push {r4, r5, lr} adds r4, r0, #0 ldrh r1, [r4, #0x2e] adds r0, #0x74 strh r1, [r0] ldrh r0, [r4, #0x32] adds r1, r4, #0 adds r1, #0x76 strh r0, [r1] ldr r2, [r4, #0x50] adds r2, #0x79 ldrb r0, [r2] adds r0, #1 movs r3, #7 ands r0, r3 adds r0, #0x7c adds r0, r4, r0 ldrb r1, [r0] movs r0, #0xf ands r0, r1 subs r0, #8 lsrs r1, r1, #4 lsls r0, r0, #0x18 asrs r0, r0, #0x18 ldrh r5, [r4, #0x2e] adds r0, r0, r5 strh r0, [r4, #0x2e] subs r1, #8 ldrh r0, [r4, #0x32] adds r1, r1, r0 strh r1, [r4, #0x32] adds r1, r4, #0 adds r1, #0x84 ldrb r0, [r2] adds r0, #1 ands r0, r3 lsls r0, r0, #2 ldr r1, [r1] lsrs r1, r0 movs r0, #7 ands r1, r0 strb r1, [r4, #0x14] ldrb r0, [r4, #0xa] cmp r0, #3 bne _08022EA2 adds r0, r1, #0 adds r0, #0xa strb r0, [r4, #0x1e] b _08022EA8 _08022EA2: adds r0, r4, #0 bl sub_08022EAC _08022EA8: pop {r4, r5, pc} .align 2, 0 thumb_func_start sub_08022EAC sub_08022EAC: @ 0x08022EAC push {r4, r5, lr} mov ip, r0 ldr r1, [r0, #0x54] cmp r1, #0 beq _08022F12 ldr r0, [r0, #0x50] adds r0, #0x79 ldrb r0, [r0] movs r4, #7 adds r3, r4, #0 ands r3, r0 adds r3, r3, r1 adds r3, #0x7c mov r0, ip ldrh r1, [r0, #0x2e] adds r0, #0x74 ldrb r0, [r0] subs r1, r1, r0 adds r1, #8 movs r5, #0xf ands r1, r5 mov r2, ip ldrh r0, [r2, #0x32] adds r2, #0x76 ldrb r2, [r2] subs r0, r0, r2 adds r0, #8 ands r0, r5 lsls r0, r0, #4 adds r1, r1, r0 strb r1, [r3] mov r1, ip ldr r0, [r1, #0x50] adds r0, #0x79 ldrb r1, [r0] adds r0, r4, #0 ands r0, r1 lsls r0, r0, #2 mov r2, ip ldrb r1, [r2, #0x14] ands r4, r1 lsls r4, r0 movs r2, #0xf lsls r2, r0 mov r0, ip ldr r1, [r0, #0x54] adds r1, #0x84 ldr r0, [r1] bics r0, r2 orrs r4, r0 str r4, [r1] _08022F12: pop {r4, r5, pc} thumb_func_start sub_08022F14 sub_08022F14: @ 0x08022F14 push {r4, r5, lr} adds r4, r0, #0 bl sub_08049FA0 cmp r0, #0 bne _08022F4E adds r0, r4, #0 bl sub_08049EE4 ldrb r1, [r4, #0x15] subs r2, r0, r1 movs r1, #0x1f ands r2, r1 adds r0, r2, #4 ands r0, r1 cmp r0, #8 bls _08022F4E movs r0, #8 strb r0, [r4, #0xf] cmp r2, #0xf bhi _08022F46 adds r1, r4, #0 adds r1, #0x78 movs r0, #1 b _08022F4C _08022F46: adds r1, r4, #0 adds r1, #0x78 movs r0, #0xff _08022F4C: strb r0, [r1] _08022F4E: ldrb r0, [r4, #0xe] subs r0, #1 strb r0, [r4, #0xe] movs r1, #0xff lsls r0, r0, #0x18 cmp r0, #0 bne _08022F9E movs r0, #4 strb r0, [r4, #0xe] ldrb r0, [r4, #0xf] subs r0, #1 strb r0, [r4, #0xf] ands r0, r1 adds r5, r4, #0 adds r5, #0x78 cmp r0, #0 bne _08022F84 movs r0, #8 strb r0, [r4, #0xf] bl Random ldr r2, _08022FA0 @ =gUnk_080CBBC4 movs r1, #1 ands r1, r0 adds r1, r1, r2 ldrb r0, [r1] strb r0, [r5] _08022F84: ldrb r0, [r5] ldrb r1, [r4, #0x15] adds r0, r0, r1 movs r1, #0x1f ands r0, r1 strb r0, [r4, #0x15] ldrb r0, [r4, #0x15] adds r0, #2 movs r1, #0x1c ands r0, r1 asrs r0, r0, #2 strb r0, [r4, #0x14] strb r0, [r4, #0x1e] _08022F9E: pop {r4, r5, pc} .align 2, 0 _08022FA0: .4byte gUnk_080CBBC4 thumb_func_start sub_08022FA4 sub_08022FA4: @ 0x08022FA4 push {lr} ldr r1, _08022FB0 @ =gUnk_080CBBC8 bl sub_0800129E pop {pc} .align 2, 0 _08022FB0: .4byte gUnk_080CBBC8 thumb_func_start sub_08022FB4 sub_08022FB4: @ 0x08022FB4 push {lr} ldr r2, _08022FC8 @ =gUnk_080CBBDC ldrb r1, [r0, #0xc] lsls r1, r1, #2 adds r1, r1, r2 ldr r1, [r1] bl _call_via_r1 pop {pc} .align 2, 0 _08022FC8: .4byte gUnk_080CBBDC thumb_func_start nullsub_133 nullsub_133: @ 0x08022FCC bx lr .align 2, 0 thumb_func_start sub_08022FD0 sub_08022FD0: @ 0x08022FD0 push {lr} movs r3, #1 movs r1, #1 strb r1, [r0, #0xc] ldrb r2, [r0, #0x18] subs r1, #5 ands r1, r2 orrs r1, r3 strb r1, [r0, #0x18] movs r1, #0 bl sub_08023000 pop {pc} .align 2, 0 thumb_func_start sub_08022FEC sub_08022FEC: @ 0x08022FEC push {lr} movs r1, #0x80 bl sub_08023000 pop {pc} .align 2, 0 thumb_func_start sub_08022FF8 sub_08022FF8: @ 0x08022FF8 bx lr .align 2, 0 thumb_func_start sub_08022FFC sub_08022FFC: @ 0x08022FFC bx lr .align 2, 0 thumb_func_start sub_08023000 sub_08023000: @ 0x08023000 push {r4, lr} adds r4, r0, #0 cmp r1, #0x80 bne _0802300E bl sub_080042B8 b _08023014 _0802300E: adds r0, r4, #0 bl LoadAnimation _08023014: movs r2, #0x80 adds r0, r4, #0 adds r0, #0x5b ldrb r0, [r0] cmp r0, #0x40 bne _08023022 rsbs r2, r2, #0 _08023022: ldrb r0, [r4, #0x19] movs r1, #3 orrs r0, r1 strb r0, [r4, #0x19] adds r0, r4, #0 adds r1, r2, #0 movs r2, #0x80 movs r3, #0 bl sub_0805EC9C pop {r4, pc} thumb_func_start sub_08023038 sub_08023038: @ 0x08023038 push {r4, r5, r6, lr} adds r4, r0, #0 ldrh r5, [r4, #0x2e] ldrh r6, [r4, #0x32] ldrb r1, [r4, #0xa] cmp r1, #0 bne _0802306C ldrb r0, [r4, #0xc] cmp r0, #0 beq _08023052 adds r0, r4, #0 bl sub_0802390C _08023052: adds r0, r4, #0 adds r0, #0x7c ldrb r0, [r0] adds r1, r4, #0 adds r1, #0x7d strb r0, [r1] ldr r1, _08023068 @ =gUnk_080CBC38 adds r0, r4, #0 bl sub_0800129E b _08023090 .align 2, 0 _08023068: .4byte gUnk_080CBC38 _0802306C: ldr r0, [r4, #0x50] ldr r0, [r0, #4] cmp r0, #0 beq _08023088 cmp r1, #8 beq _08023080 adds r0, r4, #0 bl sub_080235BC b _08023090 _08023080: adds r0, r4, #0 bl sub_08023730 b _08023090 _08023088: adds r0, r4, #0 bl sub_0805E7BC b _080230CA _08023090: ldr r0, [r4, #0x50] adds r2, r0, #0 adds r2, #0x7c adds r0, #0x7d ldrb r1, [r2] ldrb r0, [r0] cmp r1, r0 beq _080230CA ldr r1, [r4, #0x54] cmp r1, #0 beq _080230CA ldrb r2, [r2] subs r2, #1 movs r0, #0xf ands r2, r0 adds r2, #0x78 adds r2, r1, r2 ldrh r1, [r4, #0x2e] subs r1, r1, r5 adds r1, #8 movs r3, #0xf ands r1, r3 lsls r1, r1, #4 ldrh r0, [r4, #0x32] subs r0, r0, r6 adds r0, #8 ands r0, r3 orrs r1, r0 strb r1, [r2] _080230CA: pop {r4, r5, r6, pc} thumb_func_start sub_080230CC sub_080230CC: @ 0x080230CC push {lr} ldr r2, _080230E0 @ =gUnk_080CBC50 ldrb r1, [r0, #0xc] lsls r1, r1, #2 adds r1, r1, r2 ldr r1, [r1] bl _call_via_r1 pop {pc} .align 2, 0 _080230E0: .4byte gUnk_080CBC50 thumb_func_start sub_080230E4 sub_080230E4: @ 0x080230E4 push {r4, r5, lr} adds r5, r0, #0 ldrb r0, [r5, #0xd] cmp r0, #0xff bne _08023132 movs r2, #0 movs r0, #7 strb r0, [r5, #0xc] movs r3, #1 strb r3, [r5, #0xe] strb r2, [r5, #0xd] adds r1, r5, #0 adds r1, #0x3f movs r0, #0x85 strb r0, [r1] subs r1, #2 movs r0, #0xf8 strb r0, [r1] adds r0, r5, #0 adds r0, #0x7f strb r2, [r0] subs r0, #4 strb r2, [r0] subs r0, #0x3a ldrb r0, [r0] cmp r0, #0x80 beq _0802311E cmp r0, #0x9e bne _08023128 _0802311E: strb r2, [r5, #0xb] adds r1, r5, #0 adds r1, #0x80 movs r0, #0x14 b _08023130 _08023128: strb r3, [r5, #0xb] adds r1, r5, #0 adds r1, #0x80 movs r0, #8 _08023130: strb r0, [r1] _08023132: adds r0, r5, #0 adds r0, #0x45 ldrb r0, [r0] cmp r0, #0 bne _0802318A adds r0, r5, #0 adds r0, #0x7f ldrb r0, [r0] cmp r0, #0 bne _0802318A ldrb r0, [r5, #0xc] cmp r0, #7 bne _0802318A ldr r4, _08023194 @ =gLinkEntity adds r0, r5, #0 adds r1, r4, #0 bl CopyPosition ldrb r1, [r4, #0x10] movs r0, #0x80 orrs r0, r1 strb r0, [r4, #0x10] ldrb r1, [r4, #0x18] movs r0, #4 rsbs r0, r0, #0 ands r0, r1 movs r1, #1 orrs r0, r1 strb r0, [r4, #0x18] movs r0, #0xc0 lsls r0, r0, #9 str r0, [r4, #0x20] movs r0, #0xff strb r0, [r4, #0x15] adds r4, #0x3d movs r0, #0xec strb r0, [r4] ldr r2, _08023198 @ =gLinkState movs r0, #0x41 strb r0, [r2, #2] ldr r0, [r2, #0x30] ldr r1, _0802319C @ =0xFFF7FFFF ands r0, r1 str r0, [r2, #0x30] _0802318A: ldr r1, _080231A0 @ =gUnk_080CBC38 adds r0, r5, #0 bl sub_0804AA30 pop {r4, r5, pc} .align 2, 0 _08023194: .4byte gLinkEntity _08023198: .4byte gLinkState _0802319C: .4byte 0xFFF7FFFF _080231A0: .4byte gUnk_080CBC38 thumb_func_start sub_080231A4 sub_080231A4: @ 0x080231A4 push {lr} adds r2, r0, #0 adds r2, #0x7c ldrb r1, [r2] adds r1, #1 strb r1, [r2] bl sub_08001324 thumb_func_start nullsub_134 nullsub_134: @ 0x080231B4 pop {pc} .align 2, 0 thumb_func_start nullsub_135 nullsub_135: @ 0x080231B8 bx lr .align 2, 0 thumb_func_start sub_080231BC sub_080231BC: @ 0x080231BC push {r4, r5, r6, lr} adds r6, r0, #0 ldr r0, _08023280 @ =gUnk_03003DBC ldrb r0, [r0] cmp r0, #0x3f bhi _0802327E movs r0, #0xf movs r1, #1 bl CreateEnemy adds r4, r0, #0 str r4, [r6, #0x54] str r6, [r4, #0x50] movs r0, #0xf movs r1, #2 bl CreateEnemy adds r5, r0, #0 str r5, [r4, #0x54] str r6, [r5, #0x50] movs r0, #0xf movs r1, #3 bl CreateEnemy adds r4, r0, #0 str r4, [r5, #0x54] str r6, [r4, #0x50] movs r0, #0xf movs r1, #4 bl CreateEnemy adds r5, r0, #0 str r5, [r4, #0x54] str r6, [r5, #0x50] movs r0, #0xf movs r1, #5 bl CreateEnemy adds r4, r0, #0 str r4, [r5, #0x54] str r6, [r4, #0x50] movs r0, #0xf movs r1, #6 bl CreateEnemy adds r5, r0, #0 str r5, [r4, #0x54] str r6, [r5, #0x50] movs r0, #0xf movs r1, #7 bl CreateEnemy adds r4, r0, #0 str r4, [r5, #0x54] str r6, [r4, #0x50] movs r0, #0xf movs r1, #8 bl CreateEnemy str r0, [r4, #0x54] str r4, [r0, #0x74] str r6, [r0, #0x50] movs r1, #0 str r1, [r0, #0x54] adds r0, r6, #0 bl sub_0804A720 movs r0, #6 strb r0, [r6, #0xc] movs r1, #0x1e strb r1, [r6, #0xe] str r6, [r6, #0x50] adds r0, r6, #0 adds r0, #0x78 strh r1, [r0] ldrb r1, [r6, #0x1a] movs r0, #0x10 rsbs r0, r0, #0 ands r0, r1 movs r1, #5 orrs r0, r1 strb r0, [r6, #0x1a] bl Random movs r1, #0x1f ands r0, r1 strb r0, [r6, #0x15] ldrb r0, [r6, #0x15] adds r0, #2 movs r1, #0x1c ands r0, r1 asrs r0, r0, #2 strb r0, [r6, #0x14] ldrb r1, [r6, #0x14] adds r0, r6, #0 bl UpdateSprite _0802327E: pop {r4, r5, r6, pc} .align 2, 0 _08023280: .4byte gUnk_03003DBC thumb_func_start nullsub_136 nullsub_136: @ 0x08023284 bx lr .align 2, 0 thumb_func_start sub_08023288 sub_08023288: @ 0x08023288 push {r4, r5, r6, r7, lr} mov r7, sl mov r6, sb mov r5, r8 push {r5, r6, r7} adds r7, r0, #0 movs r1, #1 bl sub_08049FDC cmp r0, #0 beq _08023324 ldrb r1, [r7, #0xe] adds r0, r1, #1 strb r0, [r7, #0xe] movs r0, #0xf ands r0, r1 cmp r0, #0 bne _08023324 bl Random adds r4, r0, #0 movs r0, #0x1e ands r4, r0 movs r0, #0 mov r8, r0 ldr r2, _08023308 @ =gLinkEntity mov sb, r2 ldr r0, _0802330C @ =gUnk_080CBC70 mov sl, r0 _080232C2: mov r2, sb movs r0, #0x2e ldrsh r1, [r2, r0] mov r2, sl adds r0, r4, r2 ldrb r0, [r0] lsls r0, r0, #0x18 asrs r0, r0, #0x18 adds r6, r1, r0 mov r0, sb movs r2, #0x32 ldrsh r1, [r0, r2] adds r0, r4, #1 add r0, sl ldrb r0, [r0] lsls r0, r0, #0x18 asrs r0, r0, #0x18 adds r5, r1, r0 ldr r0, _08023310 @ =gUnk_03001198 ldrb r2, [r0] adds r0, r6, #0 adds r1, r5, #0 bl sub_080002A4 bl sub_08023A38 cmp r0, #0 beq _08023314 adds r0, r7, #0 adds r1, r6, #0 adds r2, r5, #0 bl sub_08023990 b _08023324 .align 2, 0 _08023308: .4byte gLinkEntity _0802330C: .4byte gUnk_080CBC70 _08023310: .4byte gUnk_03001198 _08023314: adds r4, #2 movs r0, #0x1e ands r4, r0 movs r2, #1 add r8, r2 mov r0, r8 cmp r0, #0xf bls _080232C2 _08023324: pop {r3, r4, r5} mov r8, r3 mov sb, r4 mov sl, r5 pop {r4, r5, r6, r7, pc} .align 2, 0 thumb_func_start sub_08023330 sub_08023330: @ 0x08023330 push {r4, r5, lr} adds r5, r0, #0 bl sub_08004274 adds r0, r5, #0 adds r0, #0x5a ldrb r1, [r0] movs r0, #0x80 ands r0, r1 cmp r0, #0 beq _08023394 movs r0, #4 strb r0, [r5, #0xc] movs r0, #0x19 strb r0, [r5, #0xe] ldrb r1, [r5, #0x10] movs r0, #0x80 orrs r0, r1 strb r0, [r5, #0x10] adds r1, r5, #0 adds r1, #0x78 movs r4, #0 movs r0, #0x96 lsls r0, r0, #2 strh r0, [r1] bl Random movs r1, #0x1c ands r0, r1 strb r0, [r5, #0x15] lsrs r0, r0, #2 strb r0, [r5, #0x14] adds r0, r5, #0 adds r0, #0x7b strb r4, [r0] adds r0, #4 strb r4, [r0] ldrb r1, [r5, #0x14] adds r0, r5, #0 bl sub_08023A88 ldr r1, [r5, #0x54] adds r0, r5, #0 bl CopyPosition adds r0, r5, #0 movs r1, #4 movs r2, #0 bl CreateFx _08023394: pop {r4, r5, pc} .align 2, 0 thumb_func_start sub_08023398 sub_08023398: @ 0x08023398 push {r4, r5, r6, lr} adds r5, r0, #0 adds r0, #0x7c ldrb r1, [r0] adds r1, #1 strb r1, [r0] adds r0, #3 ldrb r0, [r0] cmp r0, #0 beq _080233C0 adds r0, r5, #0 movs r1, #1 bl sub_08049FDC cmp r0, #0 bne _080233C0 adds r1, r5, #0 adds r1, #0x78 movs r0, #1 strh r0, [r1] _080233C0: adds r4, r5, #0 adds r4, #0x78 ldrh r0, [r4] subs r0, #1 strh r0, [r4] lsls r0, r0, #0x10 cmp r0, #0 bne _08023416 adds r0, r5, #0 bl sub_080002A0 bl sub_08023A38 cmp r0, #0 beq _08023412 movs r0, #5 strb r0, [r5, #0xc] adds r1, r5, #0 adds r1, #0x7f movs r0, #0 strb r0, [r1] ldrb r1, [r5, #0x10] movs r0, #0x7f ands r0, r1 strb r0, [r5, #0x10] adds r1, r5, #0 adds r1, #0x3f movs r0, #0x85 strb r0, [r1] ldr r1, [r5, #0x54] movs r0, #1 strb r0, [r1, #0xe] adds r0, r5, #0 bl sub_08023A68 adds r0, r5, #0 movs r1, #4 movs r2, #0 bl CreateFx b _0802349C _08023412: movs r0, #0x28 strh r0, [r4] _08023416: adds r0, r5, #0 adds r0, #0x7f ldrb r0, [r0] cmp r0, #0 beq _08023426 adds r0, r5, #0 bl sub_08023AB0 _08023426: ldrb r0, [r5, #0xe] subs r1, r0, #1 strb r1, [r5, #0xe] lsls r0, r1, #0x18 lsrs r0, r0, #0x18 cmp r0, #2 bhi _08023440 lsls r0, r1, #0x18 cmp r0, #0 bne _0802349C movs r0, #0x19 strb r0, [r5, #0xe] b _0802349C _08023440: ldr r4, [r5, #0x2c] ldr r6, [r5, #0x30] adds r0, r5, #0 bl sub_080AEF88 ldr r0, [r5, #0x2c] cmp r0, r4 bne _08023460 ldr r0, [r5, #0x30] cmp r0, r6 bne _08023460 adds r1, r5, #0 adds r1, #0x7c ldrb r0, [r1] subs r0, #1 strb r0, [r1] _08023460: ldr r0, _080234A0 @ =gUnk_030010A0 ldr r0, [r0] movs r1, #7 ands r0, r1 cmp r0, #0 bne _0802349C adds r0, r5, #0 movs r1, #1 bl sub_08049F84 adds r1, r0, #0 adds r0, r5, #0 bl sub_08004596 ldrb r0, [r5, #0x15] adds r0, #2 movs r1, #0x1c ands r0, r1 asrs r0, r0, #2 ldrb r1, [r5, #0x14] cmp r0, r1 beq _0802349C strb r0, [r5, #0x14] adds r1, r5, #0 adds r1, #0x7b ldrb r1, [r1] adds r1, r0, r1 adds r0, r5, #0 bl UpdateSprite _0802349C: pop {r4, r5, r6, pc} .align 2, 0 _080234A0: .4byte gUnk_030010A0 thumb_func_start sub_080234A4 sub_080234A4: @ 0x080234A4 push {r4, lr} adds r4, r0, #0 adds r0, #0x7c ldrb r1, [r0] adds r1, #1 strb r1, [r0] adds r0, r4, #0 bl sub_08004274 adds r0, r4, #0 adds r0, #0x7f ldrb r0, [r0] cmp r0, #0 beq _080234D6 movs r0, #6 strb r0, [r4, #0xc] ldrb r1, [r4, #0x18] subs r0, #0xa ands r0, r1 strb r0, [r4, #0x18] adds r1, r4, #0 adds r1, #0x78 movs r0, #0x96 lsls r0, r0, #1 strh r0, [r1] _080234D6: pop {r4, pc} thumb_func_start sub_080234D8 sub_080234D8: @ 0x080234D8 push {r4, lr} adds r4, r0, #0 adds r1, r4, #0 adds r1, #0x78 ldrh r0, [r1] subs r0, #1 strh r0, [r1] lsls r0, r0, #0x10 cmp r0, #0 bne _0802351A movs r0, #2 strb r0, [r4, #0xc] ldrb r1, [r4, #0x1a] subs r0, #0x12 ands r0, r1 movs r1, #5 orrs r0, r1 strb r0, [r4, #0x1a] bl Random movs r1, #0x1f ands r0, r1 strb r0, [r4, #0x15] ldrb r0, [r4, #0x15] adds r0, #2 movs r1, #0x1c ands r0, r1 asrs r0, r0, #2 strb r0, [r4, #0x14] ldrb r1, [r4, #0x14] adds r0, r4, #0 bl sub_08023A88 _0802351A: pop {r4, pc} thumb_func_start sub_0802351C sub_0802351C: @ 0x0802351C push {r4, r5, r6, r7, lr} adds r7, r0, #0 ldrb r0, [r7, #0xe] cmp r0, #0 beq _0802355A ldrb r0, [r7, #0xb] cmp r0, #1 beq _08023534 ldr r0, _080235A8 @ =gLinkEntity ldrb r0, [r0, #0x1e] cmp r0, #0xff bne _0802355A _08023534: movs r0, #0 strb r0, [r7, #0xe] ldr r1, [r7, #0x54] movs r0, #3 strb r0, [r1, #0xc] ldr r1, [r7, #0x54] adds r0, r7, #0 adds r0, #0x80 ldrb r0, [r0] strb r0, [r1, #0xf] ldr r0, [r7, #0x54] ldrb r1, [r0, #0x14] adds r1, #1 bl UpdateSprite ldrb r1, [r7, #0x14] adds r0, r7, #0 bl UpdateSprite _0802355A: adds r0, r7, #0 adds r0, #0x7f ldrb r0, [r0] cmp r0, #0 bne _080235B4 ldrb r0, [r7, #0xb] cmp r0, #0 bne _080235B8 ldr r5, _080235A8 @ =gLinkEntity ldrb r0, [r7, #0x14] movs r4, #7 adds r2, r4, #0 ands r2, r0 strb r2, [r5, #0x14] ldr r3, _080235AC @ =gLinkState ldr r0, [r3, #0x30] movs r1, #0x80 lsls r1, r1, #0xc orrs r0, r1 str r0, [r3, #0x30] ldr r6, _080235B0 @ =gUnk_080CBC90 adds r2, r2, r6 movs r3, #0 ldrsb r3, [r2, r3] lsls r3, r3, #0x10 adds r0, r7, #0 adds r1, r5, #0 movs r2, #0 bl PositionRelative ldrb r0, [r7, #0x14] ands r4, r0 adds r4, r4, r6 ldrb r0, [r4] rsbs r0, r0, #0 adds r5, #0x63 strb r0, [r5] b _080235B8 .align 2, 0 _080235A8: .4byte gLinkEntity _080235AC: .4byte gLinkState _080235B0: .4byte gUnk_080CBC90 _080235B4: movs r0, #4 strb r0, [r7, #0xc] _080235B8: pop {r4, r5, r6, r7, pc} .align 2, 0 thumb_func_start sub_080235BC sub_080235BC: @ 0x080235BC push {lr} ldr r2, _080235D0 @ =gUnk_080CBC98 ldrb r1, [r0, #0xc] lsls r1, r1, #2 adds r1, r1, r2 ldr r1, [r1] bl _call_via_r1 pop {pc} .align 2, 0 _080235D0: .4byte gUnk_080CBC98 thumb_func_start sub_080235D4 sub_080235D4: @ 0x080235D4 push {r4, lr} adds r4, r0, #0 movs r0, #1 strb r0, [r4, #0xc] ldr r1, [r4, #0x50] ldrh r0, [r1, #0x2e] strh r0, [r4, #0x2e] ldrh r0, [r1, #0x32] strh r0, [r4, #0x32] adds r0, r4, #0 bl sub_080239F0 ldrb r0, [r4, #0xa] cmp r0, #1 bne _080235F6 movs r0, #0x10 b _080235F8 _080235F6: movs r0, #0x12 _080235F8: strb r0, [r4, #0x14] ldrb r1, [r4, #0x14] adds r0, r4, #0 bl UpdateSprite pop {r4, pc} thumb_func_start sub_08023604 sub_08023604: @ 0x08023604 push {lr} adds r2, r0, #0 ldr r0, [r2, #0x50] adds r0, #0x7c ldrb r1, [r0] movs r0, #0xf ands r0, r1 adds r0, r0, r2 adds r0, #0x78 ldrb r0, [r0] cmp r0, #0x88 beq _08023640 movs r1, #0 movs r0, #2 strb r0, [r2, #0xc] strb r1, [r2, #0xe] ldrb r1, [r2, #0x10] movs r0, #0x80 orrs r0, r1 strb r0, [r2, #0x10] ldrb r1, [r2, #0x18] movs r0, #4 rsbs r0, r0, #0 ands r0, r1 movs r1, #1 orrs r0, r1 strb r0, [r2, #0x18] adds r0, r2, #0 bl sub_08023644 _08023640: pop {pc} .align 2, 0 thumb_func_start sub_08023644 sub_08023644: @ 0x08023644 push {r4, r5, r6, lr} adds r4, r0, #0 ldr r5, [r4, #0x50] adds r0, r5, #0 adds r0, #0x58 ldrb r0, [r0] cmp r0, #0x17 bne _08023692 ldrb r0, [r4, #0xe] cmp r0, #0 beq _08023692 movs r0, #0x2e ldrsh r1, [r4, r0] movs r2, #0x2e ldrsh r0, [r5, r2] cmp r1, r0 bne _08023692 movs r6, #0x32 ldrsh r1, [r4, r6] movs r2, #0x32 ldrsh r0, [r5, r2] cmp r1, r0 bne _08023692 movs r2, #1 strb r2, [r4, #0xc] ldrb r1, [r4, #0x10] movs r0, #0x7f ands r0, r1 strb r0, [r4, #0x10] ldrb r1, [r4, #0x18] movs r0, #4 rsbs r0, r0, #0 ands r0, r1 strb r0, [r4, #0x18] ldr r0, [r4, #0x54] strb r2, [r0, #0xe] adds r0, r4, #0 bl sub_080239F0 _08023692: adds r0, r5, #0 adds r0, #0x7c adds r1, r5, #0 adds r1, #0x7d ldrb r0, [r0] ldrb r1, [r1] cmp r0, r1 beq _080236F2 movs r2, #0xf adds r1, r2, #0 ands r1, r0 adds r1, #0x78 adds r1, r4, r1 ldrb r0, [r1] lsrs r0, r0, #4 ldr r3, _080236F4 @ =0x0000FFF8 adds r0, r0, r3 ldrh r6, [r4, #0x2e] adds r0, r0, r6 strh r0, [r4, #0x2e] ldrb r0, [r1] ands r2, r0 adds r2, r2, r3 ldrh r0, [r4, #0x32] adds r2, r2, r0 strh r2, [r4, #0x32] ldrb r2, [r5, #0x1b] lsrs r2, r2, #6 lsls r2, r2, #6 ldrb r3, [r4, #0x1b] movs r1, #0x3f adds r0, r1, #0 ands r0, r3 orrs r0, r2 strb r0, [r4, #0x1b] ldrb r0, [r5, #0x19] lsrs r0, r0, #6 lsls r0, r0, #6 ldrb r2, [r4, #0x19] ands r1, r2 orrs r1, r0 strb r1, [r4, #0x19] adds r0, r5, #0 adds r0, #0x38 ldrb r1, [r0] adds r0, r4, #0 adds r0, #0x38 strb r1, [r0] _080236F2: pop {r4, r5, r6, pc} .align 2, 0 _080236F4: .4byte 0x0000FFF8 thumb_func_start sub_080236F8 sub_080236F8: @ 0x080236F8 push {r4, lr} adds r4, r0, #0 ldrb r0, [r4, #0xf] subs r0, #1 strb r0, [r4, #0xf] lsls r0, r0, #0x18 cmp r0, #0 bne _0802372E movs r0, #2 strb r0, [r4, #0xc] ldr r1, [r4, #0x54] movs r0, #3 strb r0, [r1, #0xc] ldr r1, [r4, #0x54] ldr r0, [r4, #0x50] adds r0, #0x80 ldrb r0, [r0] strb r0, [r1, #0xf] ldr r0, [r4, #0x54] ldrb r1, [r0, #0x14] adds r1, #1 bl UpdateSprite ldrb r1, [r4, #0x14] adds r0, r4, #0 bl UpdateSprite _0802372E: pop {r4, pc} thumb_func_start sub_08023730 sub_08023730: @ 0x08023730 push {lr} ldr r2, _08023744 @ =gUnk_080CBCA8 ldrb r1, [r0, #0xc] lsls r1, r1, #2 adds r1, r1, r2 ldr r1, [r1] bl _call_via_r1 pop {pc} .align 2, 0 _08023744: .4byte gUnk_080CBCA8 thumb_func_start sub_08023748 sub_08023748: @ 0x08023748 push {r4, lr} adds r4, r0, #0 movs r0, #1 strb r0, [r4, #0xc] movs r0, #0x14 strb r0, [r4, #0x14] ldr r1, [r4, #0x50] ldrh r0, [r1, #0x2e] strh r0, [r4, #0x2e] ldrh r0, [r1, #0x32] strh r0, [r4, #0x32] adds r0, r4, #0 bl sub_080239F0 adds r0, r4, #0 bl sub_08023A68 pop {r4, pc} thumb_func_start sub_0802376C sub_0802376C: @ 0x0802376C push {r4, r5, lr} adds r4, r0, #0 ldr r5, [r4, #0x50] ldrb r0, [r5, #0x18] lsls r0, r0, #0x1e lsrs r0, r0, #0x1e cmp r0, #1 bne _0802379A adds r0, r5, #0 adds r0, #0x58 ldrb r0, [r0] cmp r0, #0xf bhi _0802379A ldrb r0, [r4, #0x18] movs r1, #4 rsbs r1, r1, #0 ands r1, r0 movs r0, #1 orrs r1, r0 strb r1, [r4, #0x18] adds r0, r4, #0 bl sub_08004274 _0802379A: adds r0, r5, #0 adds r0, #0x7c ldrb r1, [r0] movs r0, #0xf ands r0, r1 adds r0, r0, r4 adds r0, #0x78 ldrb r0, [r0] cmp r0, #0x88 beq _080237D4 movs r1, #0 movs r0, #2 strb r0, [r4, #0xc] strb r1, [r4, #0xe] ldrb r1, [r4, #0x10] movs r0, #0x80 orrs r0, r1 strb r0, [r4, #0x10] ldr r0, [r4, #0x50] adds r0, #0x7f movs r1, #1 strb r1, [r0] adds r0, r4, #0 movs r1, #0x14 bl sub_08023A88 adds r0, r4, #0 bl sub_080237D8 _080237D4: pop {r4, r5, pc} .align 2, 0 thumb_func_start sub_080237D8 sub_080237D8: @ 0x080237D8 push {r4, r5, r6, lr} adds r4, r0, #0 ldr r5, [r4, #0x50] adds r0, r5, #0 adds r0, #0x58 ldrb r0, [r0] cmp r0, #0x17 bne _0802382E ldrb r0, [r4, #0xe] cmp r0, #0 beq _0802382E movs r0, #0x2e ldrsh r1, [r4, r0] movs r2, #0x2e ldrsh r0, [r5, r2] cmp r1, r0 bne _0802382E movs r6, #0x32 ldrsh r1, [r4, r6] movs r2, #0x32 ldrsh r0, [r5, r2] cmp r1, r0 bne _0802382E movs r2, #1 strb r2, [r4, #0xc] ldrb r1, [r4, #0x10] movs r0, #0x7f ands r0, r1 strb r0, [r4, #0x10] ldrb r1, [r4, #0x18] movs r0, #4 rsbs r0, r0, #0 ands r0, r1 strb r0, [r4, #0x18] adds r0, r5, #0 adds r0, #0x7f strb r2, [r0] adds r0, r4, #0 bl sub_080239F0 adds r0, r4, #0 bl sub_08023A68 _0802382E: adds r0, r5, #0 adds r0, #0x7c adds r1, r5, #0 adds r1, #0x7d ldrb r0, [r0] ldrb r1, [r1] cmp r0, r1 beq _0802388E movs r2, #0xf adds r1, r2, #0 ands r1, r0 adds r1, #0x78 adds r1, r4, r1 ldrb r0, [r1] lsrs r0, r0, #4 ldr r3, _08023890 @ =0x0000FFF8 adds r0, r0, r3 ldrh r6, [r4, #0x2e] adds r0, r0, r6 strh r0, [r4, #0x2e] ldrb r0, [r1] ands r2, r0 adds r2, r2, r3 ldrh r0, [r4, #0x32] adds r2, r2, r0 strh r2, [r4, #0x32] ldrb r2, [r5, #0x1b] lsrs r2, r2, #6 lsls r2, r2, #6 ldrb r3, [r4, #0x1b] movs r1, #0x3f adds r0, r1, #0 ands r0, r3 orrs r0, r2 strb r0, [r4, #0x1b] ldrb r0, [r5, #0x19] lsrs r0, r0, #6 lsls r0, r0, #6 ldrb r2, [r4, #0x19] ands r1, r2 orrs r1, r0 strb r1, [r4, #0x19] adds r0, r5, #0 adds r0, #0x38 ldrb r1, [r0] adds r0, r4, #0 adds r0, #0x38 strb r1, [r0] _0802388E: pop {r4, r5, r6, pc} .align 2, 0 _08023890: .4byte 0x0000FFF8 thumb_func_start sub_08023894 sub_08023894: @ 0x08023894 push {r4, r5, lr} adds r5, r0, #0 ldrb r0, [r5, #0xf] subs r0, #1 strb r0, [r5, #0xf] lsls r0, r0, #0x18 cmp r0, #0 bne _08023900 movs r0, #2 strb r0, [r5, #0xc] ldr r0, [r5, #0x50] adds r0, #0x7f movs r1, #1 strb r1, [r0] ldrb r1, [r5, #0x14] adds r0, r5, #0 bl UpdateSprite ldr r0, [r5, #0x50] ldrb r0, [r0, #0xb] cmp r0, #0 bne _08023900 ldr r2, _08023904 @ =gLinkState ldr r0, [r2, #0x30] movs r1, #0x80 lsls r1, r1, #0xe orrs r0, r1 str r0, [r2, #0x30] ldr r4, _08023908 @ =gLinkEntity ldrh r0, [r5, #0x2e] strh r0, [r4, #0x2e] ldrh r0, [r5, #0x32] strh r0, [r4, #0x32] ldr r0, [r5, #0x74] adds r1, r5, #0 bl sub_080045C4 adds r0, #4 movs r1, #0x18 ands r0, r1 strb r0, [r4, #0x15] lsrs r0, r0, #2 strb r0, [r4, #0x14] adds r1, r4, #0 adds r1, #0x3d movs r0, #0xc strb r0, [r1] subs r0, #0x1c bl ModHealth adds r0, r4, #0 movs r1, #0x7a bl sub_0800449C _08023900: pop {r4, r5, pc} .align 2, 0 _08023904: .4byte gLinkState _08023908: .4byte gLinkEntity thumb_func_start sub_0802390C sub_0802390C: @ 0x0802390C push {r4, r5, lr} adds r5, r0, #0 adds r0, #0x41 ldrb r1, [r0] movs r0, #0x80 ands r0, r1 cmp r0, #0 beq _08023932 ldr r2, [r5, #0x54] adds r3, r5, #0 adds r3, #0x3d _08023922: ldrb r0, [r3] adds r1, r2, #0 adds r1, #0x3d strb r0, [r1] ldr r2, [r2, #0x54] cmp r2, #0 bne _08023922 b _0802398C _08023932: ldr r2, [r5, #0x54] b _0802393C _08023936: ldr r2, [r2, #0x54] cmp r2, #0 beq _0802398C _0802393C: adds r0, r2, #0 adds r0, #0x41 ldrb r1, [r0] movs r0, #0x80 ands r0, r1 cmp r0, #0 beq _08023936 movs r0, #0x45 adds r0, r0, r2 mov ip, r0 ldrb r1, [r0] movs r4, #0xff subs r0, r4, r1 lsls r0, r0, #0x18 lsrs r3, r0, #0x18 cmp r3, #0 beq _08023936 adds r0, r1, #0 orrs r0, r4 mov r1, ip strb r0, [r1] adds r0, r2, #0 adds r0, #0x3d ldrb r4, [r0] adds r1, r5, #0 adds r1, #0x45 ldrb r0, [r1] cmp r0, r3 blo _0802397A subs r0, r0, r3 b _0802397C _0802397A: movs r0, #0 _0802397C: strb r0, [r1] adds r2, r5, #0 _08023980: adds r0, r2, #0 adds r0, #0x3d strb r4, [r0] ldr r2, [r2, #0x54] cmp r2, #0 bne _08023980 _0802398C: pop {r4, r5, pc} .align 2, 0 thumb_func_start sub_08023990 sub_08023990: @ 0x08023990 push {r4, r5, lr} adds r5, r0, #0 movs r0, #3 strb r0, [r5, #0xc] ldrb r3, [r5, #0x18] subs r0, #7 ands r0, r3 movs r3, #1 orrs r0, r3 strb r0, [r5, #0x18] movs r0, #0x55 strb r0, [r5, #0x1a] adds r4, r5, #0 adds r4, #0x29 ldrb r0, [r4] movs r3, #7 orrs r0, r3 strb r0, [r4] strh r1, [r5, #0x2e] strh r2, [r5, #0x32] ldr r0, _080239EC @ =gLinkEntity adds r0, #0x38 ldrb r1, [r0] adds r0, r5, #0 adds r0, #0x38 strb r1, [r0] adds r0, r5, #0 bl UpdateSpriteOrderAndFlip adds r0, r5, #0 movs r1, #0x16 bl UpdateSprite ldr r4, [r5, #0x54] _080239D4: adds r0, r4, #0 bl sub_080239F0 adds r0, r5, #0 adds r1, r4, #0 bl CopyPosition ldr r4, [r4, #0x54] cmp r4, #0 bne _080239D4 pop {r4, r5, pc} .align 2, 0 _080239EC: .4byte gLinkEntity thumb_func_start sub_080239F0 sub_080239F0: @ 0x080239F0 adds r2, r0, #0 adds r1, r2, #0 adds r1, #0x78 movs r0, #0x88 strb r0, [r1] adds r1, #1 strb r0, [r1] adds r1, #1 strb r0, [r1] adds r1, #1 strb r0, [r1] adds r1, #1 strb r0, [r1] adds r1, #1 strb r0, [r1] adds r1, #1 strb r0, [r1] adds r1, #1 strb r0, [r1] adds r1, #1 strb r0, [r1] adds r1, #1 strb r0, [r1] adds r1, #1 strb r0, [r1] adds r1, #1 strb r0, [r1] adds r1, #1 strb r0, [r1] adds r1, #1 strb r0, [r1] adds r1, #1 strb r0, [r1] adds r1, #1 strb r0, [r1] bx lr thumb_func_start sub_08023A38 sub_08023A38: @ 0x08023A38 push {lr} adds r1, r0, #0 cmp r1, #0x1a beq _08023A5A cmp r1, #0x29 beq _08023A5A ldr r0, _08023A60 @ =gUnk_080B37A0 adds r0, r1, r0 ldrb r1, [r0] cmp r1, #9 beq _08023A5A cmp r1, #0xb beq _08023A5A cmp r1, #0xa beq _08023A5A cmp r1, #0xc bne _08023A64 _08023A5A: movs r0, #1 b _08023A66 .align 2, 0 _08023A60: .4byte gUnk_080B37A0 _08023A64: movs r0, #0 _08023A66: pop {pc} thumb_func_start sub_08023A68 sub_08023A68: @ 0x08023A68 push {r4, lr} adds r4, r0, #0 movs r1, #5 bl sub_0801D2B4 adds r2, r4, #0 adds r2, #0x29 ldrb r0, [r2] movs r1, #7 orrs r0, r1 strb r0, [r2] adds r0, r4, #0 movs r1, #0x17 bl UpdateSprite pop {r4, pc} thumb_func_start sub_08023A88 sub_08023A88: @ 0x08023A88 push {r4, r5, lr} adds r4, r0, #0 adds r5, r1, #0 movs r1, #0x22 bl sub_0801D2B4 adds r2, r4, #0 adds r2, #0x29 ldrb r1, [r2] movs r0, #8 rsbs r0, r0, #0 ands r0, r1 movs r1, #4 orrs r0, r1 strb r0, [r2] adds r0, r4, #0 adds r1, r5, #0 bl UpdateSprite pop {r4, r5, pc} thumb_func_start sub_08023AB0 sub_08023AB0: @ 0x08023AB0 push {r4, r5, r6, r7, lr} adds r4, r0, #0 adds r7, r4, #0 adds r7, #0x7b ldrb r0, [r7] cmp r0, #8 bne _08023AF6 adds r5, r4, #0 adds r5, #0x7e ldrb r0, [r5] adds r6, r0, #0 cmp r6, #0 bne _08023B00 adds r0, r4, #0 bl sub_08023B38 cmp r0, #0 beq _08023ADE adds r0, r4, #0 adds r0, #0x78 ldrh r0, [r0] cmp r0, #0x1d bhi _08023B34 _08023ADE: adds r1, r4, #0 adds r1, #0x3f movs r0, #0x85 strb r0, [r1] strb r6, [r7] movs r0, #0x1e strb r0, [r5] ldrb r1, [r4, #0x14] adds r0, r4, #0 bl UpdateSprite b _08023B34 _08023AF6: adds r5, r4, #0 adds r5, #0x7e ldrb r0, [r5] cmp r0, #0 beq _08023B06 _08023B00: subs r0, #1 strb r0, [r5] b _08023B34 _08023B06: adds r0, r4, #0 adds r0, #0x78 ldrh r0, [r0] cmp r0, #0x59 bls _08023B34 adds r0, r4, #0 bl sub_08023B38 cmp r0, #0 beq _08023B34 adds r1, r4, #0 adds r1, #0x3f movs r0, #0x87 strb r0, [r1] movs r0, #8 strb r0, [r7] movs r0, #0xa strb r0, [r5] ldrb r1, [r4, #0x14] adds r1, #8 adds r0, r4, #0 bl UpdateSprite _08023B34: pop {r4, r5, r6, r7, pc} .align 2, 0 thumb_func_start sub_08023B38 sub_08023B38: @ 0x08023B38 push {r4, r5, r6, lr} adds r4, r0, #0 movs r0, #1 bl sub_08049DF4 adds r5, r0, #0 cmp r5, #0 bne _08023B4C movs r0, #0 b _08023B8E _08023B4C: movs r0, #0x2e ldrsh r2, [r4, r0] ldr r3, _08023B90 @ =gUnk_080CBCB8 ldrb r0, [r4, #0x14] lsls r0, r0, #1 adds r1, r0, r3 ldrb r1, [r1] lsls r1, r1, #0x18 asrs r1, r1, #0x18 adds r2, r2, r1 movs r6, #0x32 ldrsh r1, [r4, r6] adds r0, #1 adds r0, r0, r3 ldrb r0, [r0] lsls r0, r0, #0x18 asrs r0, r0, #0x18 adds r1, r1, r0 movs r3, #0 movs r4, #0x2e ldrsh r0, [r5, r4] subs r0, r0, r2 adds r0, #0x14 cmp r0, #0x28 bhi _08023B8C movs r6, #0x32 ldrsh r0, [r5, r6] subs r0, r0, r1 adds r0, #0x14 cmp r0, #0x28 bhi _08023B8C movs r3, #1 _08023B8C: adds r0, r3, #0 _08023B8E: pop {r4, r5, r6, pc} .align 2, 0 _08023B90: .4byte gUnk_080CBCB8 thumb_func_start sub_08023B94 sub_08023B94: @ 0x08023B94 push {r4, r5, lr} adds r5, r0, #0 ldrb r0, [r5, #0xa] cmp r0, #1 bne _08023BAC ldr r1, _08023BA8 @ =gUnk_080CBDBC adds r0, r5, #0 bl sub_0800129E b _08023BEC .align 2, 0 _08023BA8: .4byte gUnk_080CBDBC _08023BAC: cmp r0, #0 bne _08023C00 movs r1, #0x36 ldrsh r0, [r5, r1] cmp r0, #0 bne _08023BD8 adds r0, r5, #0 bl sub_080012DC adds r1, r0, #0 cmp r1, #0 beq _08023BD8 ldr r0, _08023BD4 @ =gUnk_080012C8 lsls r1, r1, #2 adds r1, r1, r0 ldr r1, [r1] adds r0, r5, #0 bl _call_via_r1 b _08023C06 .align 2, 0 _08023BD4: .4byte gUnk_080012C8 _08023BD8: ldr r4, _08023BFC @ =gUnk_080CBDD4 adds r0, r5, #0 bl sub_0800279C lsls r0, r0, #2 adds r0, r0, r4 ldr r1, [r0] adds r0, r5, #0 bl _call_via_r1 _08023BEC: movs r3, #0x10 rsbs r3, r3, #0 adds r0, r5, #0 movs r1, #0 movs r2, #1 bl sub_0804A9AC b _08023C06 .align 2, 0 _08023BFC: .4byte gUnk_080CBDD4 _08023C00: adds r0, r5, #0 bl sub_08023E10 _08023C06: pop {r4, r5, pc} thumb_func_start sub_08023C08 sub_08023C08: @ 0x08023C08 push {lr} ldr r2, _08023C1C @ =gUnk_080CBDEC ldrb r1, [r0, #0xc] lsls r1, r1, #2 adds r1, r1, r2 ldr r1, [r1] bl _call_via_r1 pop {pc} .align 2, 0 _08023C1C: .4byte gUnk_080CBDEC thumb_func_start sub_08023C20 sub_08023C20: @ 0x08023C20 push {r4, lr} adds r4, r0, #0 adds r0, #0x43 ldrb r0, [r0] cmp r0, #0 beq _08023C34 adds r0, r4, #0 movs r1, #0x1c bl sub_0804A9FC _08023C34: ldrb r0, [r4, #0xa] cmp r0, #1 bne _08023C48 ldr r1, _08023C44 @ =gUnk_080CBDBC adds r0, r4, #0 bl sub_0804AA30 b _08023C50 .align 2, 0 _08023C44: .4byte gUnk_080CBDBC _08023C48: ldr r1, _08023C54 @ =gUnk_080CBDD4 adds r0, r4, #0 bl sub_0804AA30 _08023C50: pop {r4, pc} .align 2, 0 _08023C54: .4byte gUnk_080CBDD4 thumb_func_start nullsub_137 nullsub_137: @ 0x08023C58 bx lr .align 2, 0 thumb_func_start sub_08023C5C sub_08023C5C: @ 0x08023C5C push {r4, lr} adds r4, r0, #0 bl sub_0804A720 movs r0, #1 strb r0, [r4, #0xc] bl Random movs r1, #0x30 ands r0, r1 adds r0, #0xb4 strb r0, [r4, #0xe] bl Random movs r1, #0x18 ands r0, r1 strb r0, [r4, #0x15] lsrs r0, r0, #3 strb r0, [r4, #0x14] ldrb r1, [r4, #0x14] adds r0, r4, #0 bl UpdateSprite pop {r4, pc} thumb_func_start sub_08023C8C sub_08023C8C: @ 0x08023C8C push {r4, lr} adds r4, r0, #0 bl sub_080AEF88 adds r0, r4, #0 bl sub_08004274 adds r0, r4, #0 bl sub_08023E54 ldrb r0, [r4, #0xe] subs r0, #1 strb r0, [r4, #0xe] lsls r0, r0, #0x18 cmp r0, #0 bne _08023CDC adds r0, r4, #0 adds r0, #0x5a ldrb r0, [r0] cmp r0, #1 beq _08023CBC movs r0, #8 strb r0, [r4, #0xe] b _08023CDC _08023CBC: bl Random movs r1, #0x30 ands r0, r1 adds r0, #0xb4 strb r0, [r4, #0xe] adds r0, r4, #0 bl sub_08023E9C ldrb r0, [r4, #0x15] lsrs r0, r0, #3 strb r0, [r4, #0x14] ldrb r1, [r4, #0x14] adds r0, r4, #0 bl UpdateSprite _08023CDC: pop {r4, pc} .align 2, 0