.include "asm/macros.inc" .include "constants/constants.inc" .syntax unified .text thumb_func_start sub_08016DF8 sub_08016DF8: @ 0x08016DF8 push {r4, r5, r6, lr} sub sp, #4 ldr r1, _08016E20 @ =gUnk_03003DE0 ldrb r0, [r1] cmp r0, #0 beq _08016E70 ldr r4, _08016E24 @ =gUnk_03000C30 adds r6, r0, #0 movs r0, #0 strb r0, [r1] ldr r5, _08016E28 @ =0x040000D4 _08016E0E: ldrb r0, [r4] cmp r0, #1 beq _08016E44 cmp r0, #1 bgt _08016E2C cmp r0, #0 beq _08016E32 b _08016E68 .align 2, 0 _08016E20: .4byte gUnk_03003DE0 _08016E24: .4byte gUnk_03000C30 _08016E28: .4byte 0x040000D4 _08016E2C: cmp r0, #2 beq _08016E4E b _08016E68 _08016E32: ldr r0, [r4, #4] str r0, [r5] ldr r0, [r4, #8] str r0, [r5, #4] ldrh r0, [r4, #2] lsrs r0, r0, #2 movs r1, #0x84 lsls r1, r1, #0x18 b _08016E62 _08016E44: ldr r0, [r4, #4] ldr r1, [r4, #8] bl LZ77UnCompVram b _08016E68 _08016E4E: ldr r0, [r4, #4] str r0, [sp] mov r0, sp str r0, [r5] ldr r0, [r4, #8] str r0, [r5, #4] ldrh r0, [r4, #2] lsrs r0, r0, #2 movs r1, #0x85 lsls r1, r1, #0x18 _08016E62: orrs r0, r1 str r0, [r5, #8] ldr r0, [r5, #8] _08016E68: adds r4, #0xc subs r6, #1 cmp r6, #0 bgt _08016E0E _08016E70: add sp, #4 pop {r4, r5, r6} pop {r0} bx r0 thumb_func_start sub_08016E78 sub_08016E78: @ 0x08016E78 push {r4, lr} ldr r4, _08016F08 @ =gUnk_03001000 ldrb r0, [r4] movs r0, #0 strb r0, [r4] bl VBlankIntrWait ldrb r0, [r4] cmp r0, #0 bne _08016E94 adds r1, r4, #0 _08016E8E: ldrb r0, [r1] cmp r0, #0 beq _08016E8E _08016E94: bl sub_080ADD70 bl sub_0801C25C bl sub_08016C3C bl sub_08016DF8 ldr r1, _08016F0C @ =gUnk_02000070 ldrb r0, [r1] cmp r0, #0 beq _08016EFC movs r0, #0 strb r0, [r1] ldr r0, _08016F10 @ =gUnk_02025EB0 ldr r1, [r0] cmp r1, #0 beq _08016ED6 ldr r2, _08016F14 @ =0x040000D4 ldr r0, _08016F18 @ =gUnk_02021F30 str r0, [r2] ldrh r1, [r1] movs r0, #0xf8 lsls r0, r0, #5 ands r0, r1 lsls r0, r0, #3 movs r1, #0xc0 lsls r1, r1, #0x13 adds r0, r0, r1 str r0, [r2, #4] ldr r0, _08016F1C @ =0x84000170 str r0, [r2, #8] ldr r0, [r2, #8] _08016ED6: ldr r0, _08016F20 @ =gUnk_0200B650 ldr r1, [r0] cmp r1, #0 beq _08016EFC ldr r2, _08016F14 @ =0x040000D4 ldr r0, _08016F24 @ =gUnk_020344B0 str r0, [r2] ldrh r1, [r1] movs r0, #0xf8 lsls r0, r0, #5 ands r0, r1 lsls r0, r0, #3 movs r1, #0xc0 lsls r1, r1, #0x13 adds r0, r0, r1 str r0, [r2, #4] ldr r0, _08016F1C @ =0x84000170 str r0, [r2, #8] ldr r0, [r2, #8] _08016EFC: bl sub_0804FF98 pop {r4} pop {r0} bx r0 .align 2, 0 _08016F08: .4byte gUnk_03001000 _08016F0C: .4byte gUnk_02000070 _08016F10: .4byte gUnk_02025EB0 _08016F14: .4byte 0x040000D4 _08016F18: .4byte gUnk_02021F30 _08016F1C: .4byte 0x84000170 _08016F20: .4byte gUnk_0200B650 _08016F24: .4byte gUnk_020344B0 thumb_func_start sub_08016F28 sub_08016F28: @ 0x08016F28 push {r4, r5, lr} adds r4, r0, #0 ldr r0, _08016F44 @ =gUnk_02002A40 adds r0, #0xba ldrb r0, [r0] cmp r0, #0 beq _08016F4C ldr r0, _08016F48 @ =gLinkState ldr r1, [r0, #0x30] movs r2, #0x80 lsls r2, r2, #7 orrs r1, r2 b _08016F54 .align 2, 0 _08016F44: .4byte gUnk_02002A40 _08016F48: .4byte gLinkState _08016F4C: ldr r0, _08016F98 @ =gLinkState ldr r1, [r0, #0x30] ldr r2, _08016F9C @ =0xFFFFBFFF ands r1, r2 _08016F54: str r1, [r0, #0x30] adds r0, r4, #0 bl sub_0805E3B0 cmp r0, #0 bne _08016FDC ldr r5, _08016F98 @ =gLinkState ldr r0, [r5, #0x30] movs r1, #0x80 lsls r1, r1, #0xc ands r0, r1 cmp r0, #0 beq _08016FB4 bl sub_08077B20 ldr r1, [r5, #0x30] movs r0, #0x80 lsls r0, r0, #0xe ands r0, r1 cmp r0, #0 beq _08016FA4 movs r0, #0x18 strb r0, [r5, #0xc] ldr r0, _08016FA0 @ =0xFFF7FFFF ands r1, r0 str r1, [r5, #0x30] movs r0, #0xf0 strb r0, [r5, #0xf] ldrb r1, [r4, #0x10] movs r0, #0x80 orrs r0, r1 strb r0, [r4, #0x10] b _08016FB4 .align 2, 0 _08016F98: .4byte gLinkState _08016F9C: .4byte 0xFFFFBFFF _08016FA0: .4byte 0xFFF7FFFF _08016FA4: ldrb r1, [r4, #0x10] movs r0, #0x7f ands r0, r1 strb r0, [r4, #0x10] adds r1, r5, #0 adds r1, #0xa8 movs r0, #0xf strb r0, [r1] _08016FB4: adds r0, r4, #0 bl sub_08016FF4 adds r0, r4, #0 bl sub_08070680 ldr r0, [r4, #0x34] cmp r0, #0 bne _08016FD8 ldrb r0, [r4, #0xc] cmp r0, #1 beq _08016FD0 cmp r0, #9 bne _08016FD8 _08016FD0: adds r0, r4, #0 movs r1, #8 bl sub_08008790 _08016FD8: bl sub_080171F0 _08016FDC: adds r0, r4, #0 bl sub_08078FB0 adds r0, r4, #0 bl sub_0800404C bl sub_0807A050 pop {r4, r5} pop {r0} bx r0 .align 2, 0 thumb_func_start sub_08016FF4 sub_08016FF4: @ 0x08016FF4 push {r4, r5, lr} adds r5, r0, #0 ldr r0, _080170A0 @ =gUnk_0200AF00 adds r2, r0, #0 adds r2, #0x2f movs r1, #0 strb r1, [r2] subs r2, #2 strb r1, [r2] adds r0, #0x2e strb r1, [r0] ldr r2, _080170A4 @ =gLinkEntity adds r0, r2, #0 adds r0, #0x41 ldrb r1, [r0] movs r0, #0x80 ands r0, r1 cmp r0, #0 beq _0801702E adds r0, r2, #0 adds r0, #0x3d ldrb r0, [r0] lsls r0, r0, #0x18 asrs r0, r0, #0x18 cmp r0, #0 ble _0801702E movs r0, #0x86 bl PlaySFX _0801702E: ldr r4, _080170A8 @ =gLinkState ldr r0, [r4, #0x30] ldr r1, _080170AC @ =0xFDFFFDFF ands r0, r1 str r0, [r4, #0x30] movs r1, #0x80 lsls r1, r1, #3 ands r0, r1 cmp r0, #0 beq _08017046 bl ResetLink _08017046: ldr r0, [r4, #0x30] movs r1, #0x80 lsls r1, r1, #0xf ands r0, r1 cmp r0, #0 beq _08017060 adds r0, r4, #0 adds r0, #0xa0 ldrb r0, [r0] cmp r0, #0 bne _08017060 bl sub_0807A108 _08017060: bl sub_08079B24 cmp r0, #0 bne _0801706E adds r0, r5, #0 bl sub_08079708 _0801706E: ldr r0, _080170B0 @ =gUnk_03003DF0 movs r4, #0 strb r4, [r0] ldr r2, _080170A8 @ =gLinkState adds r1, r2, #0 adds r1, #0x27 ldrb r0, [r1] cmp r0, #0 beq _08017084 subs r0, #1 strb r0, [r1] _08017084: adds r1, r2, #0 adds r1, #0xa8 ldrb r0, [r1] adds r3, r2, #0 adds r3, #0xa9 strb r0, [r3] strb r4, [r1] subs r1, #0x1e ldrb r0, [r1] cmp r0, #0 beq _080170B4 subs r0, #1 strb r0, [r1] b _080171EA .align 2, 0 _080170A0: .4byte gUnk_0200AF00 _080170A4: .4byte gLinkEntity _080170A8: .4byte gLinkState _080170AC: .4byte 0xFDFFFDFF _080170B0: .4byte gUnk_03003DF0 _080170B4: adds r0, r2, #0 adds r0, #0x8b ldrb r0, [r0] cmp r0, #0 beq _080170C0 b _080171EA _080170C0: ldr r0, _08017124 @ =gTextBox ldrb r0, [r0] movs r1, #0x7f ands r1, r0 cmp r1, #0 beq _080170CE b _080171EA _080170CE: ldr r3, _08017128 @ =gRoomVars strb r1, [r3, #0xa] ldr r2, _0801712C @ =gUnk_02002A40 adds r0, r2, #0 adds r0, #0xab ldrb r0, [r0] lsrs r1, r0, #2 cmp r1, #0x18 bls _080170E2 movs r1, #0x18 _080170E2: cmp r1, #7 bhi _080170E8 movs r1, #8 _080170E8: adds r0, r2, #0 adds r0, #0xaa ldrb r0, [r0] cmp r0, r1 bhi _08017112 movs r0, #1 strb r0, [r3, #0xa] ldr r0, _08017130 @ =gUnk_0200AF00 ldrb r0, [r0, #1] cmp r0, #0 bne _08017112 ldr r0, _08017134 @ =gScreenTransition ldr r0, [r0] movs r1, #0x5a bl __modsi3 cmp r0, #0 bne _08017112 ldr r0, _08017138 @ =0x0000011F bl sub_08004488 _08017112: ldr r0, _0801712C @ =gUnk_02002A40 adds r2, r0, #0 adds r2, #0xb2 ldrb r1, [r2] cmp r1, #0 bne _0801713C adds r0, #0xc4 strh r1, [r0] b _0801715A .align 2, 0 _08017124: .4byte gTextBox _08017128: .4byte gRoomVars _0801712C: .4byte gUnk_02002A40 _08017130: .4byte gUnk_0200AF00 _08017134: .4byte gScreenTransition _08017138: .4byte 0x0000011F _0801713C: adds r1, r0, #0 adds r1, #0xc4 ldrh r0, [r1] cmp r0, #0 beq _08017150 subs r0, #1 strh r0, [r1] lsls r0, r0, #0x10 cmp r0, #0 bne _0801715A _08017150: movs r0, #0 strb r0, [r2] ldr r0, _0801716C @ =0x000001B3 bl PlaySFX _0801715A: ldr r0, _08017170 @ =gUnk_02002A40 adds r3, r0, #0 adds r3, #0xb3 ldrb r1, [r3] cmp r1, #0 bne _08017174 adds r0, #0xc6 strh r1, [r0] b _080171A4 .align 2, 0 _0801716C: .4byte 0x000001B3 _08017170: .4byte gUnk_02002A40 _08017174: adds r2, r0, #0 adds r2, #0xc6 ldrh r0, [r2] cmp r0, #0 beq _08017188 subs r1, r0, #1 strh r1, [r2] lsls r0, r1, #0x10 cmp r0, #0 bne _08017196 _08017188: movs r0, #0 strb r0, [r3] movs r0, #0xa0 lsls r0, r0, #1 bl PlaySFX b _080171A4 _08017196: movs r0, #0xf ands r1, r0 cmp r1, #0 bne _080171A4 adds r0, r5, #0 bl sub_080A2B80 _080171A4: ldr r0, _080171B8 @ =gUnk_02002A40 adds r3, r0, #0 adds r3, #0xba ldrb r1, [r3] cmp r1, #0 bne _080171BC adds r0, #0xc8 strh r1, [r0] b _080171EA .align 2, 0 _080171B8: .4byte gUnk_02002A40 _080171BC: adds r2, r0, #0 adds r2, #0xc8 ldrh r0, [r2] cmp r0, #0 beq _080171D0 subs r1, r0, #1 strh r1, [r2] lsls r0, r1, #0x10 cmp r0, #0 bne _080171D6 _080171D0: movs r0, #0 strb r0, [r3] b _080171EA _080171D6: movs r0, #0x3f ands r1, r0 cmp r1, #0 bne _080171EA ldrb r1, [r3] adds r1, #0x55 adds r0, r5, #0 movs r2, #0 bl CreateFx _080171EA: pop {r4, r5} pop {r0} bx r0 thumb_func_start sub_080171F0 sub_080171F0: @ 0x080171F0 push {r4, r5, r6, r7, lr} mov r7, r8 push {r7} ldr r4, _080172DC @ =gLinkState ldrb r0, [r4, #0x1a] cmp r0, #0 beq _08017202 bl ResetLink _08017202: ldrb r0, [r4, #0x14] cmp r0, #0 beq _0801720C subs r0, #1 strb r0, [r4, #0x14] _0801720C: ldr r6, _080172E0 @ =gLinkEntity adds r1, r6, #0 adds r1, #0x7a ldrh r0, [r1] cmp r0, #0 beq _0801721C subs r0, #1 strh r0, [r1] _0801721C: adds r2, r6, #0 adds r2, #0x41 ldrb r0, [r2] movs r5, #0x7f adds r1, r5, #0 ands r1, r0 movs r0, #0 mov r8, r0 strb r1, [r2] ldrb r0, [r6, #0xc] cmp r0, #0x14 beq _08017244 ldr r0, [r4, #0x30] ldr r1, _080172E4 @ =0xFFFEFFFF ands r1, r0 movs r2, #2 ands r0, r2 lsls r0, r0, #0xf orrs r1, r0 str r1, [r4, #0x30] _08017244: ldr r0, [r4, #0x30] movs r1, #3 rsbs r1, r1, #0 ands r0, r1 str r0, [r4, #0x30] adds r0, r6, #0 bl sub_080028E0 ldr r0, [r4, #0x30] movs r7, #0x80 lsls r7, r7, #0xf ands r0, r7 cmp r0, #0 beq _08017268 ldr r0, _080172E8 @ =gUnk_0200AF00 adds r0, #0x2f movs r1, #1 strb r1, [r0] _08017268: bl sub_08078180 ldrb r1, [r4, #7] adds r0, r5, #0 ands r0, r1 strb r0, [r4, #7] ldrb r1, [r4, #0xa] movs r0, #0xf ands r0, r1 strb r0, [r4, #0xa] ldrb r1, [r4, #0xb] adds r0, r5, #0 ands r0, r1 strb r0, [r4, #0xb] mov r1, r8 strb r1, [r4, #0x1a] adds r0, r4, #0 adds r0, #0x80 movs r5, #0 mov r1, r8 strh r1, [r0] adds r0, #0x2a strb r5, [r0] ldr r0, _080172EC @ =gUnk_03003BE0 movs r1, #0x8c bl _DmaZero adds r2, r4, #0 adds r2, #0x3f ldrb r0, [r2] adds r1, r6, #0 adds r1, #0x63 strb r0, [r1] strb r5, [r2] bl sub_0807B0C8 ldr r0, [r4, #0x30] ands r0, r7 cmp r0, #0 beq _080172CC ldr r0, _080172F0 @ =gUnk_03004040 ldr r2, [r0] ldr r1, [r0, #4] ldr r0, [r0, #8] adds r0, #0x63 strb r5, [r0] adds r1, #0x63 strb r5, [r1] adds r2, #0x63 strb r5, [r2] _080172CC: ldrb r0, [r6, #0xc] cmp r0, #0x1d bne _080172F4 ldr r0, [r4, #0x30] movs r1, #0x80 lsls r1, r1, #0x16 orrs r0, r1 b _080172FA .align 2, 0 _080172DC: .4byte gLinkState _080172E0: .4byte gLinkEntity _080172E4: .4byte 0xFFFEFFFF _080172E8: .4byte gUnk_0200AF00 _080172EC: .4byte gUnk_03003BE0 _080172F0: .4byte gUnk_03004040 _080172F4: ldr r0, [r4, #0x30] ldr r1, _0801732C @ =0xDFFFFFFF ands r0, r1 _080172FA: str r0, [r4, #0x30] ldr r4, _08017330 @ =gLinkEntity adds r0, r4, #0 bl sub_0807A8D8 ldr r0, _08017334 @ =gLinkState ldrb r1, [r0, #2] movs r0, #0xc0 ands r0, r1 cmp r0, #0 beq _08017318 adds r1, r4, #0 adds r1, #0x3d movs r0, #0xfe strb r0, [r1] _08017318: ldrb r0, [r4, #0xc] cmp r0, #0x17 beq _08017322 bl sub_08077FEC _08017322: pop {r3} mov r8, r3 pop {r4, r5, r6, r7} pop {r0} bx r0 .align 2, 0 _0801732C: .4byte 0xDFFFFFFF _08017330: .4byte gLinkEntity _08017334: .4byte gLinkState thumb_func_start sub_08017338 sub_08017338: @ 0x08017338 push {r4, lr} adds r4, r0, #0 ldrb r1, [r4, #0x10] movs r0, #1 ands r0, r1 cmp r0, #0 bne _08017352 ldrh r0, [r4, #0xc] cmp r0, #0 bne _08017352 adds r0, r4, #0 bl sub_080173A4 _08017352: adds r0, r4, #0 bl sub_0805E3B0 cmp r0, #0 bne _08017398 ldr r1, _08017390 @ =gPlayerItemFunctions ldrb r0, [r4, #9] lsls r0, r0, #2 adds r0, r0, r1 ldr r1, [r0] adds r0, r4, #0 bl _call_via_r1 adds r2, r4, #0 adds r2, #0x41 ldrb r1, [r2] movs r0, #0x7f ands r0, r1 strb r0, [r2] adds r1, r4, #0 adds r1, #0x3d ldrb r0, [r1] movs r2, #0 ldrsb r2, [r1, r2] cmp r2, #0 beq _08017398 cmp r2, #0 ble _08017394 subs r0, #1 b _08017396 .align 2, 0 _08017390: .4byte gPlayerItemFunctions _08017394: adds r0, #1 _08017396: strb r0, [r1] _08017398: adds r0, r4, #0 bl sub_0800404C pop {r4} pop {r0} bx r0 thumb_func_start sub_080173A4 sub_080173A4: @ 0x080173A4 push {r4, r5, lr} mov ip, r0 ldrb r0, [r0, #9] lsls r0, r0, #3 ldr r1, _08017410 @ =gUnk_08126DA8 adds r3, r0, r1 ldrb r0, [r3] cmp r0, #0xff bne _080173CE ldrb r2, [r3, #2] ldr r1, _08017414 @ =gUnk_08126ED8 ldrb r0, [r3, #1] lsls r0, r0, #2 adds r0, r0, r1 ldr r3, [r0] mov r0, ip adds r0, #0x68 ldrb r0, [r0] subs r0, r0, r2 lsls r0, r0, #3 adds r3, r3, r0 _080173CE: ldrb r0, [r3] movs r1, #0xf ands r1, r0 lsls r0, r0, #4 orrs r0, r1 mov r1, ip strb r0, [r1, #0x1a] ldrb r1, [r3, #1] mov r0, ip adds r0, #0x44 strb r1, [r0] ldrb r1, [r3, #3] subs r0, #4 strb r1, [r0] ldrb r0, [r3, #4] mov r1, ip adds r1, #0x3f strb r0, [r1] ldrb r0, [r3, #5] mov r2, ip strh r0, [r2, #0x12] ldrh r1, [r3, #6] cmp r1, #0 bne _0801741C ldr r2, _08017418 @ =gLinkEntity adds r0, r2, #0 adds r0, #0x60 ldrh r1, [r0] mov r0, ip adds r0, #0x60 strh r1, [r0] adds r5, r2, #0 b _08017428 .align 2, 0 _08017410: .4byte gUnk_08126DA8 _08017414: .4byte gUnk_08126ED8 _08017418: .4byte gLinkEntity _0801741C: ldr r0, _0801749C @ =0x000003FF ands r0, r1 mov r1, ip adds r1, #0x60 strh r0, [r1] ldr r5, _080174A0 @ =gLinkEntity _08017428: mov r3, ip ldrb r0, [r3, #0x14] cmp r0, #0 bne _08017438 ldrb r1, [r5, #0x14] movs r0, #6 ands r0, r1 strb r0, [r3, #0x14] _08017438: adds r0, r5, #0 adds r0, #0x38 ldrb r1, [r0] mov r0, ip adds r0, #0x38 strb r1, [r0] ldrb r1, [r5, #0x19] lsrs r1, r1, #6 lsls r1, r1, #6 mov r0, ip ldrb r3, [r0, #0x19] movs r2, #0x3f adds r0, r2, #0 ands r0, r3 orrs r0, r1 mov r1, ip strb r0, [r1, #0x19] adds r0, r5, #0 adds r0, #0x29 ldrb r1, [r0] lsls r1, r1, #0x1d mov r4, ip adds r4, #0x29 lsrs r1, r1, #0x1d ldrb r3, [r4] movs r0, #8 rsbs r0, r0, #0 ands r0, r3 orrs r0, r1 strb r0, [r4] ldrb r0, [r5, #0x1b] lsrs r0, r0, #6 lsls r0, r0, #6 mov r3, ip ldrb r1, [r3, #0x1b] ands r2, r1 orrs r2, r0 strb r2, [r3, #0x1b] mov r2, ip adds r2, #0x45 movs r1, #1 movs r0, #1 strb r0, [r2] ldrb r0, [r3, #0x10] orrs r1, r0 strb r1, [r3, #0x10] pop {r4, r5} pop {r0} bx r0 .align 2, 0 _0801749C: .4byte 0x000003FF _080174A0: .4byte gLinkEntity thumb_func_start sub_080174A4 sub_080174A4: @ 0x080174A4 push {r4, lr} adds r4, r0, #0 ldrb r1, [r4, #0x10] movs r0, #1 ands r0, r1 cmp r0, #0 bne _080174BE ldrb r0, [r4, #0xc] cmp r0, #0 bne _080174BE adds r0, r4, #0 bl sub_080A2838 _080174BE: adds r1, r4, #0 adds r1, #0x3d ldrb r2, [r1] movs r0, #0 ldrsb r0, [r1, r0] cmp r0, #0 beq _080174D0 adds r0, r2, #1 strb r0, [r1] _080174D0: adds r0, r4, #0 bl sub_0805E3B0 cmp r0, #0 bne _080174F6 ldr r1, _08017504 @ =gObjectFunctions ldrb r0, [r4, #9] lsls r0, r0, #2 adds r0, r0, r1 ldr r1, [r0] adds r0, r4, #0 bl _call_via_r1 adds r2, r4, #0 adds r2, #0x41 ldrb r1, [r2] movs r0, #0x7f ands r0, r1 strb r0, [r2] _080174F6: adds r0, r4, #0 bl sub_0800404C pop {r4} pop {r0} bx r0 .align 2, 0 _08017504: .4byte gObjectFunctions thumb_func_start sub_08017508 sub_08017508: @ 0x08017508 push {r4, lr} adds r4, r0, #0 bl sub_0805E3B0 cmp r0, #0 bne _08017524 ldr r0, _0801752C @ =gUnk_080B3054 ldrb r1, [r4, #9] lsls r1, r1, #2 adds r1, r1, r0 ldr r1, [r1] adds r0, r4, #0 bl _call_via_r1 _08017524: pop {r4} pop {r0} bx r0 .align 2, 0 _0801752C: .4byte gUnk_080B3054 thumb_func_start sub_08017530 sub_08017530: @ 0x08017530 push {r4, lr} adds r4, r0, #0 adds r0, #0x45 ldrb r1, [r0] movs r0, #0x7f ands r0, r1 cmp r0, #0 beq _08017550 ldr r0, _080175D8 @ =gUnk_020342F8 subs r1, #1 bl ReadBit cmp r0, #0 bne _08017550 bl DeleteThisEntity _08017550: ldrb r0, [r4, #0xc] cmp r0, #0 bne _08017566 ldrb r1, [r4, #0x10] movs r0, #1 ands r0, r1 cmp r0, #0 bne _08017566 adds r0, r4, #0 bl sub_0806EC78 _08017566: adds r0, r4, #0 bl sub_0805E3B0 cmp r0, #0 bne _08017584 ldr r2, _080175DC @ =gNPCFunctions ldrb r1, [r4, #9] lsls r0, r1, #1 adds r0, r0, r1 lsls r0, r0, #2 adds r0, r0, r2 ldr r1, [r0] adds r0, r4, #0 bl _call_via_r1 _08017584: ldr r0, [r4, #4] cmp r0, #0 beq _080175D2 ldr r2, _080175DC @ =gNPCFunctions ldrb r1, [r4, #9] lsls r0, r1, #1 adds r0, r0, r1 lsls r0, r0, #2 adds r2, #4 adds r0, r0, r2 ldr r1, [r0] cmp r1, #0 beq _080175A4 adds r0, r4, #0 bl _call_via_r1 _080175A4: adds r0, r4, #0 adds r0, #0x45 ldrb r1, [r0] movs r0, #0x7f ands r0, r1 cmp r0, #0 beq _080175CC ldr r2, _080175E0 @ =gUnk_02031EC0 lsls r0, r1, #4 subs r0, #0x10 adds r2, r0, r2 ldr r3, _080175E4 @ =gRoomControls ldrh r0, [r4, #0x2e] ldrh r1, [r3, #6] subs r0, r0, r1 strh r0, [r2, #4] ldrh r0, [r4, #0x32] ldrh r1, [r3, #8] subs r0, r0, r1 strh r0, [r2, #6] _080175CC: adds r0, r4, #0 bl sub_0800404C _080175D2: pop {r4} pop {r0} bx r0 .align 2, 0 _080175D8: .4byte gUnk_020342F8 _080175DC: .4byte gNPCFunctions _080175E0: .4byte gUnk_02031EC0 _080175E4: .4byte gRoomControls thumb_func_start sub_080175E8 sub_080175E8: @ 0x080175E8 ldr r1, _080175F0 @ =gUnk_03003DB8 movs r0, #0 strb r0, [r1] bx lr .align 2, 0 _080175F0: .4byte gUnk_03003DB8 thumb_func_start sub_080175F4 sub_080175F4: @ 0x080175F4 push {r4, r5, lr} ldr r1, _08017624 @ =gUnk_03003DC0 ldrb r0, [r1] ldrb r2, [r1, #1] cmp r0, r2 bhi _08017602 ldrb r0, [r1, #1] _08017602: cmp r0, #0 bne _08017638 ldr r1, _08017628 @ =gUnk_030059F0 ldr r0, _0801762C @ =gLinkState adds r0, #0x8b ldrb r0, [r0] cmp r0, #0 beq _08017634 ldr r4, _08017630 @ =gLinkEntity ldrb r5, [r4, #0x10] movs r0, #0x7f ands r0, r5 strb r0, [r4, #0x10] bl _call_via_r1 strb r5, [r4, #0x10] b _08017638 .align 2, 0 _08017624: .4byte gUnk_03003DC0 _08017628: .4byte gUnk_030059F0 _0801762C: .4byte gLinkState _08017630: .4byte gLinkEntity _08017634: bl _call_via_r1 _08017638: pop {r4, r5} pop {r0} bx r0 .align 2, 0 thumb_func_start sub_08017640 sub_08017640: @ 0x08017640 push {r4, lr} ldr r4, _08017660 @ =gUnk_03003C70 movs r1, #0x80 lsls r1, r1, #1 adds r0, r4, #0 bl _DmaZero ldr r0, _08017664 @ =gUnk_02018EA0 str r4, [r0] str r4, [r4] str r4, [r4, #4] ldr r0, _08017668 @ =gLinkEntity str r0, [r4, #8] pop {r4} pop {r0} bx r0 .align 2, 0 _08017660: .4byte gUnk_03003C70 _08017664: .4byte gUnk_02018EA0 _08017668: .4byte gLinkEntity thumb_func_start sub_0801766C sub_0801766C: @ 0x0801766C push {r4, lr} adds r4, r0, #0 adds r3, r4, #0 adds r3, #0x29 ldrb r1, [r3] movs r0, #0x40 ands r0, r1 cmp r0, #0 beq _08017682 _0801767E: movs r0, #1 b _080176DE _08017682: ldr r2, _080176C0 @ =gUnk_03003C70 movs r0, #0x80 lsls r0, r0, #1 adds r1, r2, r0 cmp r1, r2 bls _080176DC _0801768E: ldr r0, [r2, #8] cmp r0, #0 bne _080176D6 str r4, [r2, #8] strb r0, [r2, #0xc] ldrb r0, [r3] movs r1, #0x40 orrs r0, r1 strb r0, [r3] ldr r3, _080176C4 @ =gUnk_02018EA0 ldr r1, [r3] ldrb r0, [r1, #0xc] cmp r0, #0 beq _080176C8 _080176AA: ldr r1, [r1, #4] ldrb r0, [r1, #0xc] cmp r0, #0 bne _080176AA str r1, [r2, #4] ldr r0, [r1] str r0, [r2] str r2, [r0, #4] str r2, [r1] b _0801767E .align 2, 0 _080176C0: .4byte gUnk_03003C70 _080176C4: .4byte gUnk_02018EA0 _080176C8: str r1, [r2, #4] ldr r0, [r1] str r0, [r2] str r2, [r0, #4] str r2, [r1] str r2, [r3] b _0801767E _080176D6: adds r2, #0x10 cmp r1, r2 bhi _0801768E _080176DC: movs r0, #0 _080176DE: pop {r4} pop {r1} bx r1 thumb_func_start sub_080176E4 sub_080176E4: @ 0x080176E4 push {lr} adds r2, r0, #0 adds r0, #0x29 ldrb r1, [r0] movs r0, #0x40 ands r0, r1 cmp r0, #0 beq _08017720 movs r0, #1 b _0801773A _080176F8: str r2, [r3, #8] movs r0, #1 strb r0, [r3, #0xc] adds r2, #0x29 ldrb r0, [r2] movs r1, #0x40 orrs r0, r1 strb r0, [r2] ldr r2, _0801771C @ =gUnk_02018EA0 ldr r0, [r2] str r0, [r3, #4] ldr r1, [r0] str r1, [r3] str r3, [r1, #4] str r3, [r0] str r3, [r2] movs r0, #1 b _0801773A .align 2, 0 _0801771C: .4byte gUnk_02018EA0 _08017720: ldr r3, _08017740 @ =gUnk_03003C70 movs r0, #0x80 lsls r0, r0, #1 adds r1, r3, r0 cmp r1, r3 bls _08017738 _0801772C: ldr r0, [r3, #8] cmp r0, #0 beq _080176F8 adds r3, #0x10 cmp r1, r3 bhi _0801772C _08017738: movs r0, #0 _0801773A: pop {r1} bx r1 .align 2, 0 _08017740: .4byte gUnk_03003C70 thumb_func_start sub_08017744 sub_08017744: @ 0x08017744 push {r4, r5, r6, r7, lr} adds r4, r0, #0 ldr r2, _08017758 @ =gUnk_03003C70 movs r0, #0x80 lsls r0, r0, #1 adds r7, r2, r0 movs r5, #0x41 rsbs r5, r5, #0 ldr r6, _0801775C @ =gUnk_02018EA0 b _08017766 .align 2, 0 _08017758: .4byte gUnk_03003C70 _0801775C: .4byte gUnk_02018EA0 _08017760: adds r2, #0x10 cmp r7, r2 bls _0801779A _08017766: ldr r0, [r2, #8] cmp r4, r0 bne _08017760 adds r3, r4, #0 adds r3, #0x29 ldrb r1, [r3] movs r0, #0x40 ands r0, r1 cmp r0, #0 beq _08017760 adds r0, r5, #0 ands r0, r1 strb r0, [r3] movs r0, #0 str r0, [r2, #8] ldr r1, [r2] ldr r0, [r2, #4] str r0, [r1, #4] ldr r1, [r2, #4] ldr r0, [r2] str r0, [r1] ldr r0, [r6] cmp r2, r0 bne _0801779A ldr r0, [r2, #4] str r0, [r6] _0801779A: pop {r4, r5, r6, r7} pop {r0} bx r0 thumb_func_start sub_080177A0 sub_080177A0: @ 0x080177A0 push {r4, r5, r6, lr} mov ip, r0 adds r5, r1, #0 adds r0, #0x38 adds r1, #0x38 ldrb r2, [r0] ldrb r0, [r1] ands r0, r2 cmp r0, #0 beq _08017848 mov r0, ip ldr r3, [r0, #0x48] ldr r4, [r5, #0x48] ldrb r1, [r3, #6] ldrb r0, [r4, #6] adds r2, r1, r0 mov r1, ip movs r6, #0x2e ldrsh r0, [r1, r6] movs r6, #0x2e ldrsh r1, [r5, r6] subs r0, r0, r1 movs r1, #0 ldrsb r1, [r3, r1] adds r0, r0, r1 movs r1, #0 ldrsb r1, [r4, r1] subs r0, r0, r1 adds r0, r0, r2 lsls r1, r2, #1 cmp r0, r1 bhi _08017848 ldrb r1, [r3, #7] ldrb r0, [r4, #7] adds r2, r1, r0 mov r1, ip movs r6, #0x32 ldrsh r0, [r1, r6] movs r6, #0x32 ldrsh r1, [r5, r6] subs r0, r0, r1 movs r1, #1 ldrsb r1, [r3, r1] adds r0, r0, r1 movs r1, #1 ldrsb r1, [r4, r1] subs r0, r0, r1 adds r0, r0, r2 lsls r1, r2, #1 cmp r0, r1 bhi _08017848 mov r0, ip adds r0, #0x3c ldrb r1, [r0] movs r6, #0x10 adds r0, r6, #0 ands r0, r1 movs r2, #5 cmp r0, #0 beq _0801781A ldrb r2, [r3, #8] _0801781A: adds r0, r5, #0 adds r0, #0x3c ldrb r1, [r0] adds r0, r6, #0 ands r0, r1 cmp r0, #0 beq _0801782E ldrb r0, [r4, #8] adds r2, r2, r0 b _08017830 _0801782E: adds r2, #5 _08017830: mov r1, ip movs r3, #0x36 ldrsh r0, [r1, r3] movs r6, #0x36 ldrsh r1, [r5, r6] subs r0, r0, r1 adds r0, r0, r2 lsls r1, r2, #1 cmp r0, r1 bhi _08017848 movs r0, #1 b _0801784A _08017848: movs r0, #0 _0801784A: pop {r4, r5, r6} pop {r1} bx r1 thumb_func_start sub_08017850 sub_08017850: @ 0x08017850 push {r4, lr} adds r4, r0, #0 bl sub_08079F8C cmp r0, #0 bne _08017860 movs r0, #0 b _08017868 _08017860: ldr r1, _08017870 @ =gLinkEntity adds r0, r4, #0 bl sub_080177A0 _08017868: pop {r4} pop {r1} bx r1 .align 2, 0 _08017870: .4byte gLinkEntity thumb_func_start sub_08017874 sub_08017874: @ 0x08017874 push {r4, r5, lr} adds r4, r0, #0 adds r2, r1, #0 ldrb r0, [r4, #8] cmp r0, #1 bne _080178C6 adds r0, r2, #0 adds r0, #0x44 ldrb r1, [r0] ldr r0, _08017898 @ =gUnk_02002A40 adds r0, #0xb2 ldrb r0, [r0] cmp r0, #0x2f beq _0801789C cmp r0, #0x30 beq _080178A8 b _080178AE .align 2, 0 _08017898: .4byte gUnk_02002A40 _0801789C: adds r0, r1, #0 cmp r1, #0 bge _080178A4 adds r0, r1, #3 _080178A4: asrs r1, r0, #2 b _080178AE _080178A8: lsrs r0, r1, #0x1f adds r0, r1, r0 asrs r1, r0, #1 _080178AE: cmp r1, #0 bgt _080178B4 movs r1, #1 _080178B4: rsbs r0, r1, #0 bl ModHealth adds r5, r0, #0 adds r0, r4, #0 movs r1, #0x7a bl sub_0800449C b _08017928 _080178C6: adds r0, r2, #0 adds r0, #0x44 ldrb r1, [r0] ldrb r0, [r2, #8] cmp r0, #8 bne _080178F6 ldr r0, _080178E4 @ =gUnk_02002A40 adds r0, #0xb2 ldrb r0, [r0] cmp r0, #0x30 beq _080178E8 cmp r0, #0x31 beq _080178F4 b _080178F6 .align 2, 0 _080178E4: .4byte gUnk_02002A40 _080178E8: lsls r0, r1, #1 adds r0, r0, r1 lsrs r1, r0, #0x1f adds r0, r0, r1 asrs r1, r0, #1 b _080178F6 _080178F4: lsls r1, r1, #1 _080178F6: adds r0, r4, #0 adds r0, #0x45 ldrb r0, [r0] subs r5, r0, r1 ldrb r0, [r4, #8] cmp r0, #3 bne _08017928 adds r0, r4, #0 adds r0, #0x6d ldrb r1, [r0] movs r0, #1 ands r0, r1 cmp r0, #0 beq _08017920 ldr r1, _0801791C @ =0x00000127 adds r0, r4, #0 bl sub_0800449C b _08017928 .align 2, 0 _0801791C: .4byte 0x00000127 _08017920: adds r0, r4, #0 movs r1, #0xfe bl sub_0800449C _08017928: cmp r5, #0 ble _08017930 adds r0, r5, #0 b _0801793A _08017930: ldrb r1, [r4, #0x10] movs r0, #0x7f ands r0, r1 strb r0, [r4, #0x10] movs r0, #0 _0801793A: pop {r4, r5} pop {r1} bx r1 thumb_func_start sub_08017940 sub_08017940: @ 0x08017940 push {r4, r5, lr} adds r5, r0, #0 adds r4, r1, #0 adds r0, r4, #0 movs r1, #0x2c movs r2, #0 bl CreateFx adds r2, r0, #0 cmp r2, #0 beq _080179CC adds r3, r2, #0 adds r3, #0x29 ldrb r1, [r3] movs r0, #8 rsbs r0, r0, #0 ands r0, r1 movs r1, #2 orrs r0, r1 strb r0, [r3] movs r1, #0x2e ldrsh r0, [r5, r1] ldr r1, [r5, #0x48] ldrb r1, [r1] lsls r1, r1, #0x18 asrs r1, r1, #0x18 adds r0, r0, r1 movs r3, #0x2e ldrsh r1, [r4, r3] adds r0, r0, r1 ldr r1, [r4, #0x48] ldrb r1, [r1] lsls r1, r1, #0x18 asrs r1, r1, #0x18 adds r0, r0, r1 asrs r0, r0, #1 strh r0, [r2, #0x2e] movs r1, #0x32 ldrsh r0, [r5, r1] ldr r1, [r5, #0x48] ldrb r1, [r1, #1] lsls r1, r1, #0x18 asrs r1, r1, #0x18 adds r0, r0, r1 movs r3, #0x32 ldrsh r1, [r4, r3] adds r0, r0, r1 ldr r1, [r4, #0x48] ldrb r1, [r1, #1] lsls r1, r1, #0x18 asrs r1, r1, #0x18 adds r0, r0, r1 asrs r0, r0, #1 strh r0, [r2, #0x32] movs r1, #0x36 ldrsh r0, [r5, r1] movs r3, #0x36 ldrsh r1, [r4, r3] adds r0, r0, r1 asrs r0, r0, #1 strh r0, [r2, #0x36] adds r0, r5, #0 adds r0, #0x38 ldrb r1, [r0] adds r0, r2, #0 adds r0, #0x38 strb r1, [r0] adds r0, r2, #0 bl UpdateSpriteForCollisionLayer _080179CC: movs r1, #0 ldr r0, _080179E8 @ =gLinkEntity cmp r5, r0 beq _080179DA cmp r4, r0 bne _080179E0 adds r0, r4, #0 _080179DA: adds r0, #0x42 ldrb r0, [r0] lsrs r1, r0, #3 _080179E0: pop {r4, r5} pop {r0} bx r0 .align 2, 0 _080179E8: .4byte gLinkEntity thumb_func_start sub_080179EC sub_080179EC: @ 0x080179EC push {r4, r5, r6, lr} adds r6, r0, #0 adds r5, r1, #0 ldr r4, _08017A8C @ =gUnk_080B3740 bl Random movs r1, #3 ands r1, r0 adds r1, r1, r4 ldrb r1, [r1] adds r0, r5, #0 movs r2, #0 bl CreateFx adds r4, r0, #0 cmp r4, #0 beq _08017A84 ldr r0, [r5, #0x48] movs r2, #0 ldrsb r2, [r0, r2] lsls r2, r2, #0x10 movs r3, #1 ldrsb r3, [r0, r3] lsls r3, r3, #0x10 adds r0, r5, #0 adds r1, r4, #0 bl PositionRelative adds r2, r4, #0 adds r2, #0x29 ldrb r1, [r2] movs r0, #8 rsbs r0, r0, #0 ands r0, r1 movs r1, #2 orrs r0, r1 strb r0, [r2] movs r1, #0x2e ldrsh r0, [r6, r1] ldr r1, [r6, #0x48] ldrb r1, [r1] lsls r1, r1, #0x18 asrs r1, r1, #0x18 adds r0, r0, r1 movs r2, #0x2e ldrsh r1, [r5, r2] ldr r2, [r5, #0x48] ldrb r2, [r2] lsls r2, r2, #0x18 asrs r2, r2, #0x18 adds r1, r1, r2 subs r0, r0, r1 asrs r0, r0, #1 adds r1, r4, #0 adds r1, #0x62 strb r0, [r1] movs r1, #0x32 ldrsh r0, [r6, r1] ldr r1, [r6, #0x48] ldrb r1, [r1, #1] lsls r1, r1, #0x18 asrs r1, r1, #0x18 adds r0, r0, r1 movs r2, #0x32 ldrsh r1, [r5, r2] ldr r2, [r5, #0x48] ldrb r2, [r2, #1] lsls r2, r2, #0x18 asrs r2, r2, #0x18 adds r1, r1, r2 subs r0, r0, r1 asrs r0, r0, #1 adds r1, r4, #0 adds r1, #0x63 strb r0, [r1] str r5, [r4, #0x54] _08017A84: pop {r4, r5, r6} pop {r0} bx r0 .align 2, 0 _08017A8C: .4byte gUnk_080B3740 thumb_func_start sub_08017A90 sub_08017A90: @ 0x08017A90 push {r4, r5, lr} adds r4, r0, #0 adds r5, r1, #0 movs r0, #0x99 movs r1, #0 movs r2, #0 bl CreateObject adds r2, r0, #0 cmp r2, #0 bne _08017AAA movs r0, #0 b _08017AD0 _08017AAA: ldrb r0, [r4, #0x15] lsrs r0, r0, #3 movs r1, #3 ands r0, r1 strb r0, [r2, #0x14] ldrh r0, [r4, #0x2e] ldrh r1, [r5, #0x2e] subs r0, r0, r1 adds r1, r2, #0 adds r1, #0x62 strb r0, [r1] ldrh r0, [r4, #0x32] ldrh r1, [r5, #0x32] subs r0, r0, r1 adds r1, r2, #0 adds r1, #0x63 strb r0, [r1] str r5, [r2, #0x50] adds r0, r2, #0 _08017AD0: pop {r4, r5} pop {r1} bx r1 .align 2, 0 thumb_func_start sub_08017AD8 sub_08017AD8: @ 0x08017AD8 movs r0, #0 bx lr thumb_func_start sub_08017ADC sub_08017ADC: @ 0x08017ADC push {r4, lr} adds r4, r1, #0 ldrb r2, [r4, #0x10] movs r1, #0x7f ands r1, r2 strb r1, [r4, #0x10] adds r0, #0x40 ldrb r1, [r0] movs r0, #0x80 adds r2, r4, #0 adds r2, #0x41 orrs r0, r1 strb r0, [r2] ldrb r0, [r4, #0xa] subs r0, #0x5f lsls r0, r0, #0x18 lsrs r0, r0, #0x18 cmp r0, #1 bhi _08017B14 adds r0, r4, #0 bl sub_08081420 cmp r0, #0 beq _08017B14 adds r1, r4, #0 adds r1, #0x45 movs r0, #0 strb r0, [r1] _08017B14: movs r0, #2 pop {r4} pop {r1} bx r1 thumb_func_start sub_08017B1C sub_08017B1C: @ 0x08017B1C push {lr} adds r2, r0, #0 adds r3, r1, #0 ldr r0, _08017B38 @ =gLinkState ldrb r1, [r0, #0x1e] movs r0, #0x60 ands r0, r1 cmp r0, #0 beq _08017B3C ldrb r1, [r3, #0x10] movs r0, #0x7f ands r0, r1 strb r0, [r3, #0x10] b _08017B52 .align 2, 0 _08017B38: .4byte gLinkState _08017B3C: adds r1, r2, #0 adds r1, #0x42 movs r0, #0x10 strb r0, [r1] subs r1, #5 movs r0, #0xec strb r0, [r1] adds r1, #9 movs r0, #0xa0 lsls r0, r0, #2 strh r0, [r1] _08017B52: movs r0, #1 pop {r1} bx r1 thumb_func_start sub_08017B58 sub_08017B58: @ 0x08017B58 push {lr} adds r2, r1, #0 adds r3, r2, #0 adds r3, #0x3a ldrb r1, [r3] movs r0, #4 ands r0, r1 lsls r0, r0, #0x18 lsrs r0, r0, #0x18 cmp r0, #0 beq _08017B98 ldrb r1, [r2, #0x1d] cmp r1, #0 beq _08017BA2 ldr r0, _08017B94 @ =gLinkState ldrb r0, [r0, #0x1d] subs r0, r1, r0 movs r1, #0 strb r0, [r2, #0x1d] lsls r0, r0, #0x18 cmp r0, #0 bgt _08017BA2 strb r1, [r2, #0x1d] movs r0, #2 strb r0, [r2, #0xd] adds r0, r2, #0 adds r0, #0x46 strh r1, [r0] b _08017BA2 .align 2, 0 _08017B94: .4byte gLinkState _08017B98: strb r0, [r2, #0xd] ldrb r0, [r3] movs r1, #4 orrs r0, r1 strb r0, [r3] _08017BA2: adds r1, r2, #0 adds r1, #0x3d ldrb r2, [r1] movs r0, #0 ldrsb r0, [r1, r0] cmp r0, #0 bne _08017BB4 movs r0, #0xff strb r0, [r1] _08017BB4: movs r0, #1 pop {r1} bx r1 .align 2, 0 thumb_func_start sub_08017BBC sub_08017BBC: @ 0x08017BBC push {r4, r5, r6, r7, lr} adds r4, r0, #0 adds r6, r1, #0 adds r7, r2, #0 ldr r5, _08017C38 @ =gLinkState ldr r0, [r5, #0x30] ldr r1, _08017C3C @ =0x00001481 ands r0, r1 cmp r0, #0 bne _08017BF2 movs r0, #0x42 movs r1, #1 movs r2, #0 bl CreateObject cmp r0, #0 beq _08017BF2 str r4, [r0, #0x54] ldr r0, [r5, #0x30] movs r1, #0x80 lsls r1, r1, #3 orrs r0, r1 str r0, [r5, #0x30] movs r0, #0x10 eors r0, r7 lsrs r0, r0, #2 strb r0, [r4, #0x14] _08017BF2: adds r1, r6, #0 adds r1, #0x44 movs r0, #4 strb r0, [r1] adds r0, r4, #0 adds r1, r6, #0 bl sub_08017874 adds r1, r4, #0 adds r1, #0x45 strb r0, [r1] subs r1, #3 movs r0, #0xc strb r0, [r1] subs r1, #5 movs r0, #0x1e strb r0, [r1] adds r1, #9 movs r0, #0xc0 lsls r0, r0, #1 strh r0, [r1] adds r1, r6, #0 adds r1, #0x3d ldrb r2, [r1] movs r0, #0 ldrsb r0, [r1, r0] cmp r0, #0 bne _08017C2E movs r0, #0xff strb r0, [r1] _08017C2E: movs r0, #1 pop {r4, r5, r6, r7} pop {r1} bx r1 .align 2, 0 _08017C38: .4byte gLinkState _08017C3C: .4byte 0x00001481 thumb_func_start sub_08017C40 sub_08017C40: @ 0x08017C40 push {r4, r5, r6, lr} adds r4, r0, #0 adds r5, r1, #0 ldr r6, _08017CB4 @ =gLinkState ldr r0, [r6, #0x30] ldr r1, _08017CB8 @ =0x00001881 ands r0, r1 cmp r0, #0 bne _08017C82 ldrb r0, [r6, #0xc] cmp r0, #0 bne _08017C82 ldrb r0, [r4, #0xc] cmp r0, #1 beq _08017C62 cmp r0, #0x18 bne _08017C82 _08017C62: adds r1, r5, #0 adds r1, #0x44 movs r0, #4 strb r0, [r1] adds r0, r4, #0 adds r1, r5, #0 bl sub_08017874 adds r1, r4, #0 adds r1, #0x45 strb r0, [r1] movs r0, #0x80 lsls r0, r0, #4 str r0, [r6, #0x30] movs r0, #0xd strb r0, [r6, #0xc] _08017C82: adds r1, r4, #0 adds r1, #0x42 movs r0, #0xc strb r0, [r1] subs r1, #5 movs r0, #0x10 strb r0, [r1] adds r1, #9 movs r0, #0xa0 lsls r0, r0, #2 strh r0, [r1] adds r1, r5, #0 adds r1, #0x3d ldrb r2, [r1] movs r0, #0 ldrsb r0, [r1, r0] cmp r0, #0 bne _08017CAA movs r0, #0xff strb r0, [r1] _08017CAA: movs r0, #1 pop {r4, r5, r6} pop {r1} bx r1 .align 2, 0 _08017CB4: .4byte gLinkState _08017CB8: .4byte 0x00001881 thumb_func_start sub_08017CBC sub_08017CBC: @ 0x08017CBC push {r4, r5, lr} adds r4, r0, #0 adds r3, r1, #0 movs r5, #0x10 eors r2, r5 adds r0, r2, #0 subs r0, #0xc movs r2, #0x1f ands r0, r2 ldrb r1, [r3, #0x15] subs r1, r1, r0 ands r1, r2 cmp r1, #0x18 bhi _08017CF0 adds r1, r4, #0 adds r1, #0x3d movs r0, #0xf4 strb r0, [r1] adds r1, r3, #0 adds r1, #0x3d strb r0, [r1] adds r0, r4, #0 adds r1, r3, #0 bl sub_08017940 b _08017D1E _08017CF0: adds r1, r3, #0 adds r1, #0x42 movs r0, #0xc strb r0, [r1] adds r0, r3, #0 adds r0, #0x3d strb r5, [r0] adds r1, #1 movs r0, #0xf0 strb r0, [r1] adds r1, #3 movs r0, #0xc0 lsls r0, r0, #2 strh r0, [r1] adds r1, r4, #0 adds r1, #0x3d ldrb r2, [r1] movs r0, #0 ldrsb r0, [r1, r0] cmp r0, #0 bne _08017D1E movs r0, #0xff strb r0, [r1] _08017D1E: movs r0, #1 pop {r4, r5} pop {r1} bx r1 .align 2, 0 thumb_func_start sub_08017D28 sub_08017D28: @ 0x08017D28 push {lr} adds r3, r0, #0 ldr r2, _08017D68 @ =gLinkState movs r0, #1 strb r0, [r2, #0x1a] adds r2, r3, #0 adds r2, #0x7a movs r0, #0x96 lsls r0, r0, #2 strh r0, [r2] subs r2, #0x38 movs r0, #0xc strb r0, [r2] subs r2, #5 movs r0, #0x10 strb r0, [r2] adds r2, #9 movs r0, #0xa0 lsls r0, r0, #2 strh r0, [r2] adds r1, #0x3d ldrb r2, [r1] movs r0, #0 ldrsb r0, [r1, r0] cmp r0, #0 bne _08017D60 movs r0, #0xff strb r0, [r1] _08017D60: movs r0, #1 pop {r1} bx r1 .align 2, 0 _08017D68: .4byte gLinkState thumb_func_start sub_08017D6C sub_08017D6C: @ 0x08017D6C push {r4, r5, r6, lr} adds r5, r0, #0 adds r4, r1, #0 adds r6, r2, #0 movs r0, #0x10 eors r0, r6 subs r0, #5 movs r2, #0x1f ands r0, r2 ldrb r1, [r4, #0x14] lsls r1, r1, #3 subs r1, r1, r0 ands r1, r2 cmp r1, #0xa bls _08017D98 adds r0, r5, #0 adds r0, #0x40 ldrb r0, [r0] ldr r1, _08017D94 @ =0x00000AC2 b _08017DB0 .align 2, 0 _08017D94: .4byte 0x00000AC2 _08017D98: adds r1, r4, #0 adds r1, #0x41 movs r0, #0xcb strb r0, [r1] adds r1, r5, #0 adds r1, #0x40 ldrb r0, [r1] adds r2, r4, #0 adds r2, #0x79 strb r0, [r2] ldrb r0, [r1] ldr r1, _08017DCC @ =0x00000AE4 _08017DB0: adds r0, r0, r1 lsls r3, r0, #1 adds r3, r3, r0 lsls r3, r3, #2 ldr r0, _08017DD0 @ =gUnk_080B7B74 adds r3, r3, r0 adds r0, r5, #0 adds r1, r4, #0 adds r2, r6, #0 bl sub_08018308 pop {r4, r5, r6} pop {r1} bx r1 .align 2, 0 _08017DCC: .4byte 0x00000AE4 _08017DD0: .4byte gUnk_080B7B74 thumb_func_start sub_08017DD4 sub_08017DD4: @ 0x08017DD4 push {r4, r5, r6, r7, lr} mov r7, r8 push {r7} mov r8, r0 adds r5, r1, #0 adds r7, r2, #0 mov r1, r8 adds r1, #0x41 movs r0, #0 strb r0, [r1] adds r1, r5, #0 adds r1, #0x44 ldrb r2, [r1] movs r0, #0x80 ands r0, r2 cmp r0, #0 beq _08017DFC movs r0, #0x7f ands r0, r2 b _08017DFE _08017DFC: movs r0, #4 _08017DFE: strb r0, [r1] ldr r4, _08017E34 @ =gLinkEntity adds r0, r4, #0 adds r1, r5, #0 bl sub_08017874 adds r1, r4, #0 adds r1, #0x45 strb r0, [r1] adds r2, r5, #0 adds r2, #0x3d movs r0, #0xf4 strb r0, [r2] ldr r0, _08017E38 @ =gLinkState ldr r0, [r0, #0x30] movs r1, #0x80 ands r0, r1 adds r6, r2, #0 cmp r0, #0 bne _08017E3C bl sub_08079D84 mov r1, r8 adds r1, #0x3d movs r0, #0x5a strb r0, [r1] b _08017E6E .align 2, 0 _08017E34: .4byte gLinkEntity _08017E38: .4byte gLinkState _08017E3C: adds r0, r5, #0 adds r0, #0x40 ldrb r0, [r0] movs r1, #0x80 orrs r0, r1 adds r1, r4, #0 adds r1, #0x41 strb r0, [r1] subs r1, #4 movs r0, #0xc strb r0, [r1] adds r2, r4, #0 adds r2, #0x42 movs r1, #0x10 movs r0, #0x10 strb r0, [r2] eors r7, r1 adds r0, r4, #0 adds r0, #0x3e strb r7, [r0] adds r1, r4, #0 adds r1, #0x46 movs r0, #0xa0 lsls r0, r0, #2 strh r0, [r1] _08017E6E: ldrb r1, [r6] movs r0, #0 ldrsb r0, [r6, r0] cmp r0, #0 bne _08017E7C movs r0, #0xff strb r0, [r6] _08017E7C: movs r0, #1 pop {r3} mov r8, r3 pop {r4, r5, r6, r7} pop {r1} bx r1 thumb_func_start sub_08017E88 sub_08017E88: @ 0x08017E88 push {lr} adds r3, r0, #0 adds r3, #0x42 movs r2, #2 strb r2, [r3] adds r0, #0x46 movs r2, #0xa0 lsls r2, r2, #2 strh r2, [r0] adds r1, #0x3d ldrb r2, [r1] movs r0, #0 ldrsb r0, [r1, r0] cmp r0, #0 bne _08017EAA movs r0, #0xff strb r0, [r1] _08017EAA: movs r0, #1 pop {r1} bx r1 thumb_func_start sub_08017EB0 sub_08017EB0: @ 0x08017EB0 push {r4, r5, r6, r7, lr} adds r2, r0, #0 adds r7, r1, #0 adds r5, r7, #0 adds r5, #0x44 ldrb r0, [r5] cmp r0, #0 bne _08017EC4 movs r0, #0 b _08017F36 _08017EC4: ldr r6, _08017EF8 @ =gLinkEntity cmp r2, r6 bne _08017EFC ldrb r4, [r5] movs r0, #8 strb r0, [r5] adds r0, r6, #0 adds r1, r7, #0 bl sub_08017874 adds r1, r6, #0 adds r1, #0x45 strb r0, [r1] strb r4, [r5] subs r1, #3 movs r0, #0xc strb r0, [r1] subs r1, #5 movs r0, #0x10 strb r0, [r1] adds r1, #9 movs r0, #0xc0 lsls r0, r0, #1 strh r0, [r1] b _08017F22 .align 2, 0 _08017EF8: .4byte gLinkEntity _08017EFC: ldrh r1, [r2, #8] movs r0, #0xa1 lsls r0, r0, #3 cmp r1, r0 bne _08017F22 adds r1, r2, #0 adds r1, #0x42 movs r0, #8 strb r0, [r1] subs r1, #5 movs r0, #0xfa strb r0, [r1] adds r1, #9 adds r0, #0x86 strh r0, [r1] adds r1, r6, #0 adds r1, #0x3d movs r0, #0x80 strb r0, [r1] _08017F22: adds r1, r7, #0 adds r1, #0x3d ldrb r2, [r1] movs r0, #0 ldrsb r0, [r1, r0] cmp r0, #0 bne _08017F34 movs r0, #0xff strb r0, [r1] _08017F34: movs r0, #1 _08017F36: pop {r4, r5, r6, r7} pop {r1} bx r1 thumb_func_start sub_08017F3C sub_08017F3C: @ 0x08017F3C movs r0, #1 bx lr thumb_func_start sub_08017F40 sub_08017F40: @ 0x08017F40 push {r4, r5, r6, lr} adds r4, r0, #0 adds r5, r1, #0 adds r0, r5, #0 adds r0, #0x43 ldrb r6, [r0] cmp r6, #0 bne _0801800A ldr r0, _08017FAC @ =gLinkEntity cmp r4, r0 bne _08018002 bl sub_08079F8C cmp r0, #0 beq _0801801E ldr r2, _08017FB0 @ =gLinkState ldr r3, [r2, #0x30] movs r0, #0x80 ands r0, r3 cmp r0, #0 bne _0801801E adds r0, r2, #0 adds r0, #0x26 ldrb r0, [r0] cmp r0, #0 bne _0801801E ldrb r1, [r2, #0x1a] movs r0, #0x80 orrs r1, r0 strb r1, [r2, #0x1a] ldrb r1, [r2, #0xa] orrs r0, r1 strb r0, [r2, #0xa] movs r0, #0x10 orrs r3, r0 str r3, [r2, #0x30] strb r6, [r2, #2] ldrb r0, [r5, #8] cmp r0, #3 bne _08017FB4 ldrb r0, [r5, #9] cmp r0, #0x4e beq _08017F9A cmp r0, #0x50 bne _08017FB4 _08017F9A: strh r6, [r4, #0x36] movs r3, #0x80 lsls r3, r3, #9 adds r0, r4, #0 adds r1, r5, #0 movs r2, #0 bl PositionRelative b _08017FC2 .align 2, 0 _08017FAC: .4byte gLinkEntity _08017FB0: .4byte gLinkState _08017FB4: movs r3, #0x80 lsls r3, r3, #9 adds r0, r5, #0 adds r1, r4, #0 movs r2, #0 bl PositionRelative _08017FC2: ldrb r1, [r4, #0x10] movs r0, #0x7f ands r0, r1 strb r0, [r4, #0x10] ldrb r2, [r5, #0x19] lsrs r2, r2, #6 lsls r2, r2, #6 ldrb r3, [r4, #0x19] movs r1, #0x3f adds r0, r1, #0 ands r0, r3 orrs r0, r2 strb r0, [r4, #0x19] ldrb r0, [r5, #0x1b] lsrs r0, r0, #6 lsls r0, r0, #6 ldrb r2, [r4, #0x1b] ands r1, r2 orrs r1, r0 strb r1, [r4, #0x1b] adds r1, r4, #0 adds r1, #0x3d movs r0, #0xff strb r0, [r1] adds r1, r5, #0 adds r1, #0x3d movs r0, #0xf8 strb r0, [r1] bl ResetLink movs r0, #1 b _08018020 _08018002: adds r0, r4, #0 adds r0, #0x45 strb r6, [r0] b _0801801E _0801800A: ldrb r0, [r5, #8] cmp r0, #3 bne _0801801E ldr r0, _08018028 @ =gLinkEntity cmp r4, r0 bne _0801801E adds r0, r5, #0 adds r1, r4, #0 bl sub_08004484 _0801801E: movs r0, #0 _08018020: pop {r4, r5, r6} pop {r1} bx r1 .align 2, 0 _08018028: .4byte gLinkEntity thumb_func_start sub_0801802C sub_0801802C: @ 0x0801802C push {r4, r5, r6, lr} adds r4, r0, #0 adds r5, r1, #0 adds r6, r2, #0 ldrb r0, [r4, #8] cmp r0, #1 bne _08018058 bl sub_08079F8C cmp r0, #0 beq _08018090 movs r0, #0x10 eors r0, r6 ldrb r1, [r5, #0x14] lsls r1, r1, #2 subs r0, r0, r1 adds r0, #5 movs r1, #0x1f ands r0, r1 cmp r0, #0xa bhi _08018090 b _0801807A _08018058: cmp r0, #8 bne _08018086 ldrb r0, [r4, #0x15] movs r1, #0x10 eors r1, r0 ldrb r0, [r5, #0x14] lsls r0, r0, #2 subs r1, r1, r0 adds r1, #5 movs r0, #0x1f ands r1, r0 cmp r1, #0xa bgt _08018090 adds r1, r4, #0 adds r1, #0x45 movs r0, #0 strb r0, [r1] _0801807A: adds r0, r4, #0 adds r1, r5, #0 bl sub_080180BC movs r0, #1 b _080180AE _08018086: adds r1, r4, #0 adds r1, #0x45 movs r0, #0 strb r0, [r1] b _080180AE _08018090: adds r0, r4, #0 adds r0, #0x40 ldrb r0, [r0] ldr r1, _080180B4 @ =0x000011AA adds r0, r0, r1 lsls r3, r0, #1 adds r3, r3, r0 lsls r3, r3, #2 ldr r0, _080180B8 @ =gUnk_080B7B74 adds r3, r3, r0 adds r0, r4, #0 adds r1, r5, #0 adds r2, r6, #0 bl sub_08018308 _080180AE: pop {r4, r5, r6} pop {r1} bx r1 .align 2, 0 _080180B4: .4byte 0x000011AA _080180B8: .4byte gUnk_080B7B74 thumb_func_start sub_080180BC sub_080180BC: @ 0x080180BC push {lr} adds r2, r0, #0 adds r2, #0x3d movs r0, #0 ldrsb r0, [r2, r0] cmp r0, #0 bne _080180CE movs r0, #0xe2 strb r0, [r2] _080180CE: adds r2, r1, #0 adds r2, #0x3d ldrb r3, [r2] movs r0, #0 ldrsb r0, [r2, r0] cmp r0, #0 bne _080180E0 movs r0, #0xff strb r0, [r2] _080180E0: movs r0, #0xff strb r0, [r1, #0xd] pop {r0} bx r0 thumb_func_start sub_080180E8 sub_080180E8: @ 0x080180E8 push {r4, lr} mov ip, r0 adds r4, r1, #0 movs r0, #0x10 eors r0, r2 adds r2, r0, #0 subs r2, #0xc movs r1, #0x1f ands r2, r1 ldrb r0, [r4, #0x15] subs r0, r0, r2 ands r0, r1 cmp r0, #0x18 bls _0801812C mov r0, ip adds r0, #0x40 ldrb r0, [r0] ldr r1, _08018124 @ =0x00000352 adds r0, r0, r1 lsls r3, r0, #1 adds r3, r3, r0 lsls r3, r3, #2 ldr r0, _08018128 @ =gUnk_080B7B74 adds r3, r3, r0 mov r0, ip adds r1, r4, #0 bl sub_08018308 b _08018162 .align 2, 0 _08018124: .4byte 0x00000352 _08018128: .4byte gUnk_080B7B74 _0801812C: mov r0, ip adds r0, #0x42 movs r2, #0xc strb r2, [r0] subs r0, #5 movs r1, #0xf0 strb r1, [r0] mov r3, ip adds r3, #0x46 movs r0, #0xa0 lsls r0, r0, #2 strh r0, [r3] adds r0, r4, #0 adds r0, #0x42 strb r2, [r0] subs r0, #5 strb r1, [r0] adds r1, r4, #0 adds r1, #0x46 movs r0, #0xc0 lsls r0, r0, #2 strh r0, [r1] mov r0, ip adds r1, r4, #0 bl sub_08017940 movs r0, #1 _08018162: pop {r4} pop {r1} bx r1 thumb_func_start sub_08018168 sub_08018168: @ 0x08018168 push {r4, r5, r6, lr} adds r4, r0, #0 adds r6, r1, #0 adds r0, r6, #0 adds r0, #0x43 ldrb r5, [r0] cmp r5, #0 bne _08018208 ldr r0, _080181F4 @ =gLinkEntity cmp r4, r0 bne _08018200 bl sub_08079F8C cmp r0, #0 beq _0801821C ldr r2, _080181F8 @ =gLinkState ldr r3, [r2, #0x30] ldr r0, _080181FC @ =0x00040080 ands r0, r3 cmp r0, #0 bne _0801821C adds r0, r2, #0 adds r0, #0x26 ldrb r0, [r0] cmp r0, #0 bne _0801821C ldrb r1, [r2, #0x1a] movs r0, #0x80 orrs r1, r0 strb r1, [r2, #0x1a] ldrb r1, [r2, #0xa] orrs r0, r1 strb r0, [r2, #0xa] movs r0, #0x80 lsls r0, r0, #1 orrs r3, r0 str r3, [r2, #0x30] strb r5, [r2, #2] ldrb r1, [r4, #0x10] movs r0, #0x7f ands r0, r1 strb r0, [r4, #0x10] ldrb r2, [r6, #0x19] lsrs r2, r2, #6 lsls r2, r2, #6 ldrb r3, [r4, #0x19] movs r1, #0x3f adds r0, r1, #0 ands r0, r3 orrs r0, r2 strb r0, [r4, #0x19] ldrb r0, [r6, #0x1b] lsrs r0, r0, #6 lsls r0, r0, #6 ldrb r2, [r4, #0x1b] ands r1, r2 orrs r1, r0 strb r1, [r4, #0x1b] adds r1, r4, #0 adds r1, #0x3d movs r0, #0xff strb r0, [r1] adds r1, r6, #0 adds r1, #0x3d movs r0, #0xf8 strb r0, [r1] bl sub_08077B20 movs r0, #1 b _0801821E .align 2, 0 _080181F4: .4byte gLinkEntity _080181F8: .4byte gLinkState _080181FC: .4byte 0x00040080 _08018200: adds r0, r4, #0 adds r0, #0x45 strb r5, [r0] b _0801821C _08018208: ldrb r0, [r6, #8] cmp r0, #3 bne _0801821C ldr r0, _08018224 @ =gLinkEntity cmp r4, r0 bne _0801821C adds r0, r6, #0 adds r1, r4, #0 bl sub_08004484 _0801821C: movs r0, #0 _0801821E: pop {r4, r5, r6} pop {r1} bx r1 .align 2, 0 _08018224: .4byte gLinkEntity thumb_func_start sub_08018228 sub_08018228: @ 0x08018228 push {r4, r5, lr} adds r4, r0, #0 adds r5, r1, #0 ldr r0, _0801824C @ =gLinkEntity cmp r4, r0 bne _08018244 bl sub_08079F8C cmp r0, #0 beq _08018244 adds r0, r5, #0 adds r1, r4, #0 bl sub_08004484 _08018244: movs r0, #0 pop {r4, r5} pop {r1} bx r1 .align 2, 0 _0801824C: .4byte gLinkEntity thumb_func_start sub_08018250 sub_08018250: @ 0x08018250 push {r4, lr} adds r3, r0, #0 adds r2, r3, #0 adds r2, #0x3d movs r0, #1 rsbs r0, r0, #0 adds r4, r0, #0 movs r0, #0xff strb r0, [r2] ldrb r0, [r3, #0x15] cmp r0, #0 bne _08018278 adds r2, r1, #0 adds r2, #0x3d movs r0, #0x10 strb r0, [r2] adds r0, r3, #0 bl sub_08017A90 b _08018280 _08018278: adds r1, #0x3d ldrb r0, [r1] orrs r0, r4 strb r0, [r1] _08018280: movs r0, #1 pop {r4} pop {r1} bx r1 thumb_func_start sub_08018288 sub_08018288: @ 0x08018288 push {lr} adds r1, r0, #0 ldr r0, _08018298 @ =gLinkEntity cmp r1, r0 bne _0801829C bl sub_0807AFE8 b _080182A2 .align 2, 0 _08018298: .4byte gLinkEntity _0801829C: adds r1, #0x45 movs r0, #0 strb r0, [r1] _080182A2: movs r0, #1 pop {r1} bx r1 thumb_func_start sub_080182A8 sub_080182A8: @ 0x080182A8 push {r4, lr} adds r4, r0, #0 adds r0, r1, #0 adds r0, #0x43 ldrb r0, [r0] cmp r0, #0 bne _080182DA adds r2, r4, #0 adds r2, #0x3d ldrb r3, [r2] movs r0, #0 ldrsb r0, [r2, r0] cmp r0, #0 bne _080182C8 movs r0, #0xff strb r0, [r2] _080182C8: adds r1, #0x3d ldrb r2, [r1] movs r0, #0 ldrsb r0, [r1, r0] cmp r0, #0 bne _08018300 movs r0, #0xff strb r0, [r1] b _08018300 _080182DA: adds r0, r4, #0 adds r0, #0x40 ldrb r0, [r0] ldr r3, _080182F8 @ =0x0000092A adds r0, r0, r3 lsls r3, r0, #1 adds r3, r3, r0 lsls r3, r3, #2 ldr r0, _080182FC @ =gUnk_080B7B74 adds r3, r3, r0 adds r0, r4, #0 bl sub_08018308 b _08018302 .align 2, 0 _080182F8: .4byte 0x0000092A _080182FC: .4byte gUnk_080B7B74 _08018300: movs r0, #1 _08018302: pop {r4} pop {r1} bx r1 thumb_func_start sub_08018308 sub_08018308: @ 0x08018308 push {r4, r5, r6, r7, lr} mov r7, r8 push {r7} adds r6, r0, #0 adds r4, r1, #0 mov r8, r2 adds r5, r3, #0 movs r3, #0 adds r0, r4, #0 adds r0, #0x43 ldrb r0, [r0] cmp r0, #0 beq _08018338 ldrb r0, [r4, #8] cmp r0, #3 bne _08018338 ldr r0, _0801835C @ =gLinkEntity cmp r6, r0 bne _08018338 adds r0, r4, #0 adds r1, r6, #0 bl sub_08004484 movs r3, #1 _08018338: ldrh r1, [r6, #8] movs r0, #0xa1 lsls r0, r0, #3 cmp r1, r0 bne _08018360 ldr r0, _0801835C @ =gLinkEntity ldrb r2, [r0, #0x14] mov r0, r8 adds r0, #4 movs r1, #0x18 ands r0, r1 lsrs r0, r0, #2 movs r1, #4 eors r0, r1 cmp r2, r0 bne _08018360 movs r0, #0 b _080184F0 .align 2, 0 _0801835C: .4byte gLinkEntity _08018360: cmp r3, #0 bne _08018408 ldrb r0, [r5] lsls r0, r0, #4 adds r1, r6, #0 adds r1, #0x46 strh r0, [r1] ldrb r1, [r5, #1] adds r2, r6, #0 adds r2, #0x3d strb r1, [r2] lsls r0, r1, #0x18 cmp r0, #0 bne _08018382 movs r0, #0xff orrs r0, r1 strb r0, [r2] _08018382: ldrb r0, [r5, #2] adds r1, r6, #0 adds r1, #0x42 strb r0, [r1] ldrb r1, [r5, #3] adds r0, r4, #0 adds r0, #0x44 strb r1, [r0] movs r7, #0xff ldrb r0, [r5, #3] cmp r0, #0 beq _080183A8 adds r0, r6, #0 adds r1, r4, #0 bl sub_08017874 adds r1, r6, #0 adds r1, #0x45 strb r0, [r1] _080183A8: adds r1, r6, #0 adds r1, #0x43 ldrb r0, [r5, #4] ldrb r2, [r1] cmp r0, r2 bls _080183B6 strb r0, [r1] _080183B6: ldrb r0, [r5, #5] lsls r0, r0, #4 adds r1, r4, #0 adds r1, #0x46 strh r0, [r1] ldrb r1, [r5, #6] adds r2, r4, #0 adds r2, #0x3d strb r1, [r2] movs r0, #6 ldrsb r0, [r5, r0] cmp r0, #0 bne _080183D6 movs r0, #0xff orrs r0, r1 strb r0, [r2] _080183D6: ldrb r0, [r5, #7] adds r1, r4, #0 adds r1, #0x42 strb r0, [r1] ldrb r1, [r5, #8] adds r0, r6, #0 adds r0, #0x44 strb r1, [r0] ands r7, r1 cmp r7, #0 beq _080183FA adds r0, r4, #0 adds r1, r6, #0 bl sub_08017874 adds r1, r4, #0 adds r1, #0x45 strb r0, [r1] _080183FA: adds r1, r4, #0 adds r1, #0x43 ldrb r0, [r5, #9] ldrb r2, [r1] cmp r0, r2 bls _08018408 strb r0, [r1] _08018408: ldrb r1, [r5, #0xa] movs r0, #1 ands r0, r1 cmp r0, #0 beq _0801841A adds r0, r6, #0 adds r1, r4, #0 bl sub_08017940 _0801841A: ldrb r2, [r5, #0xa] movs r0, #2 ands r0, r2 cmp r0, #0 beq _0801842C adds r1, r6, #0 adds r1, #0x41 movs r0, #0xca strb r0, [r1] _0801842C: movs r0, #4 ands r0, r2 cmp r0, #0 beq _0801847E ldr r2, [r4, #0x50] cmp r2, #0 beq _0801847E adds r1, r2, #0 adds r1, #0x41 movs r0, #0xcc strb r0, [r1] adds r0, r4, #0 adds r0, #0x3d ldrb r0, [r0] subs r1, #4 strb r0, [r1] adds r0, r2, #0 adds r0, #0x3e mov r1, r8 strb r1, [r0] adds r0, r4, #0 adds r0, #0x42 ldrb r0, [r0] adds r1, r2, #0 adds r1, #0x42 strb r0, [r1] adds r1, #1 ldrb r0, [r1] cmp r0, #0 bne _08018470 adds r0, r4, #0 adds r0, #0x43 ldrb r0, [r0] strb r0, [r1] _08018470: adds r0, r4, #0 adds r0, #0x46 ldrh r0, [r0] adds r1, r2, #0 adds r1, #0x46 strh r0, [r1] str r6, [r2, #0x4c] _0801847E: ldrb r1, [r6, #8] cmp r1, #8 bne _080184DA ldrb r0, [r6, #9] cmp r0, #1 bne _0801849A ldrb r0, [r5, #8] cmp r0, #0 beq _080184DA adds r0, r6, #0 adds r1, r4, #0 bl sub_080179EC b _080184DA _0801849A: cmp r0, #4 bne _080184BA adds r0, r6, #0 adds r0, #0x44 ldrb r0, [r0] cmp r0, #0 bne _080184B0 ldrb r0, [r5, #0xa] ands r1, r0 cmp r1, #0 beq _080184DA _080184B0: adds r0, r6, #0 adds r1, r4, #0 bl sub_08017A90 b _080184DA _080184BA: cmp r0, #3 bne _080184CE ldrb r0, [r5, #9] cmp r0, #0 beq _080184DA adds r0, r4, #0 movs r1, #0xfe bl sub_0800449C b _080184DA _080184CE: cmp r0, #5 bne _080184DA ldr r0, _080184FC @ =gLinkEntity adds r0, #0x3d movs r1, #0x80 strb r1, [r0] _080184DA: ldrb r0, [r4, #8] cmp r0, #8 bne _080184EE ldrb r0, [r6, #9] cmp r0, #5 bne _080184EE ldr r0, _080184FC @ =gLinkEntity adds r0, #0x3d movs r1, #0x80 strb r1, [r0] _080184EE: movs r0, #1 _080184F0: pop {r3} mov r8, r3 pop {r4, r5, r6, r7} pop {r1} bx r1 .align 2, 0 _080184FC: .4byte gLinkEntity