mirror of https://github.com/zeldaret/tmc.git
				
				
				
			
		
			
				
	
	
		
			968 lines
		
	
	
		
			17 KiB
		
	
	
	
		
			ArmAsm
		
	
	
	
			
		
		
	
	
			968 lines
		
	
	
		
			17 KiB
		
	
	
	
		
			ArmAsm
		
	
	
	
| 	.include "asm/macros.inc"
 | |
| 
 | |
| 	.include "constants/constants.inc"
 | |
| 
 | |
| 	.syntax unified
 | |
| 
 | |
| 	.text
 | |
| 
 | |
| 	thumb_func_start sub_08077FEC
 | |
| sub_08077FEC: @ 0x08077FEC
 | |
| 	push {lr}
 | |
| 	ldr r0, _08078000 @ =gUnk_03004020
 | |
| 	ldr r2, _08078004 @ =gUnk_0811BFE8
 | |
| 	ldrb r1, [r0]
 | |
| 	lsls r1, r1, #2
 | |
| 	adds r1, r1, r2
 | |
| 	ldr r1, [r1]
 | |
| 	bl _call_via_r1
 | |
| 	pop {pc}
 | |
| 	.align 2, 0
 | |
| _08078000: .4byte gUnk_03004020
 | |
| _08078004: .4byte gUnk_0811BFE8
 | |
| 
 | |
| 	thumb_func_start sub_08078008
 | |
| sub_08078008: @ 0x08078008
 | |
| 	push {r4, r5, r6, lr}
 | |
| 	adds r4, r0, #0
 | |
| 	ldr r6, _08078060 @ =gSave
 | |
| 	adds r5, r6, #0
 | |
| 	adds r5, #0xb4
 | |
| 	ldrb r0, [r5]
 | |
| 	bl ItemIsSword
 | |
| 	cmp r0, #0
 | |
| 	bne _0807802C
 | |
| 	adds r5, r6, #0
 | |
| 	adds r5, #0xb5
 | |
| 	ldrb r0, [r5]
 | |
| 	bl ItemIsSword
 | |
| 	movs r2, #0
 | |
| 	cmp r0, #0
 | |
| 	beq _0807802E
 | |
| _0807802C:
 | |
| 	ldrb r2, [r5]
 | |
| _0807802E:
 | |
| 	subs r0, r2, #1
 | |
| 	cmp r0, #1
 | |
| 	bhi _08078036
 | |
| 	movs r2, #0
 | |
| _08078036:
 | |
| 	cmp r2, #0
 | |
| 	beq _08078068
 | |
| 	ldr r0, _08078064 @ =gPlayerState
 | |
| 	ldrb r1, [r0, #0x1b]
 | |
| 	movs r0, #0x20
 | |
| 	ands r0, r1
 | |
| 	cmp r0, #0
 | |
| 	beq _08078068
 | |
| 	ldrb r0, [r4, #1]
 | |
| 	adds r0, #1
 | |
| 	strb r0, [r4, #1]
 | |
| 	lsls r0, r0, #0x18
 | |
| 	asrs r0, r0, #0x18
 | |
| 	cmp r0, #0x14
 | |
| 	ble _0807806C
 | |
| 	movs r0, #0xa
 | |
| 	strb r0, [r4, #1]
 | |
| 	movs r0, #3
 | |
| 	strb r0, [r4]
 | |
| 	strb r2, [r4, #2]
 | |
| 	b _0807806C
 | |
| 	.align 2, 0
 | |
| _08078060: .4byte gSave
 | |
| _08078064: .4byte gPlayerState
 | |
| _08078068:
 | |
| 	movs r0, #0
 | |
| 	strb r0, [r4, #1]
 | |
| _0807806C:
 | |
| 	movs r0, #0
 | |
| 	pop {r4, r5, r6, pc}
 | |
| 
 | |
| 	thumb_func_start sub_08078070
 | |
| sub_08078070: @ 0x08078070
 | |
| 	push {lr}
 | |
| 	adds r2, r0, #0
 | |
| 	ldr r3, _08078098 @ =gPlayerState
 | |
| 	ldrb r1, [r3, #0x1b]
 | |
| 	movs r0, #0x20
 | |
| 	ands r0, r1
 | |
| 	cmp r0, #0
 | |
| 	beq _080780D6
 | |
| 	adds r0, r3, #0
 | |
| 	adds r0, #0xac
 | |
| 	ldrh r1, [r0]
 | |
| 	movs r0, #0x80
 | |
| 	lsls r0, r0, #3
 | |
| 	ands r0, r1
 | |
| 	cmp r0, #0
 | |
| 	beq _0807809C
 | |
| 	ldrh r0, [r2, #4]
 | |
| 	adds r0, #0xc
 | |
| 	b _080780A0
 | |
| 	.align 2, 0
 | |
| _08078098: .4byte gPlayerState
 | |
| _0807809C:
 | |
| 	ldrh r0, [r2, #4]
 | |
| 	adds r0, #6
 | |
| _080780A0:
 | |
| 	strh r0, [r2, #4]
 | |
| 	movs r0, #4
 | |
| 	ldrsh r1, [r2, r0]
 | |
| 	ldr r0, _080780BC @ =0x0000031F
 | |
| 	cmp r1, r0
 | |
| 	ble _080780C0
 | |
| 	adds r0, #1
 | |
| 	strh r0, [r2, #4]
 | |
| 	movs r0, #4
 | |
| 	strb r0, [r2]
 | |
| 	movs r0, #0xd8
 | |
| 	bl SoundReq
 | |
| 	b _080780DA
 | |
| 	.align 2, 0
 | |
| _080780BC: .4byte 0x0000031F
 | |
| _080780C0:
 | |
| 	movs r1, #4
 | |
| 	ldrsh r0, [r2, r1]
 | |
| 	movs r1, #0x14
 | |
| 	bl Mod
 | |
| 	cmp r0, #0
 | |
| 	bne _080780DA
 | |
| 	movs r0, #0xd7
 | |
| 	bl SoundReq
 | |
| 	b _080780DA
 | |
| _080780D6:
 | |
| 	movs r0, #1
 | |
| 	strb r0, [r2]
 | |
| _080780DA:
 | |
| 	movs r0, #1
 | |
| 	pop {pc}
 | |
| 	.align 2, 0
 | |
| 
 | |
| 	thumb_func_start sub_080780E0
 | |
| sub_080780E0: @ 0x080780E0
 | |
| 	push {lr}
 | |
| 	adds r2, r0, #0
 | |
| 	ldr r0, _080780F4 @ =gPlayerState
 | |
| 	ldrb r1, [r0, #0x1b]
 | |
| 	movs r0, #0x40
 | |
| 	ands r0, r1
 | |
| 	cmp r0, #0
 | |
| 	beq _080780F8
 | |
| 	movs r0, #5
 | |
| 	b _08078102
 | |
| 	.align 2, 0
 | |
| _080780F4: .4byte gPlayerState
 | |
| _080780F8:
 | |
| 	movs r0, #0x20
 | |
| 	ands r0, r1
 | |
| 	cmp r0, #0
 | |
| 	bne _08078104
 | |
| 	movs r0, #1
 | |
| _08078102:
 | |
| 	strb r0, [r2]
 | |
| _08078104:
 | |
| 	movs r0, #1
 | |
| 	pop {pc}
 | |
| 
 | |
| 	thumb_func_start sub_08078108
 | |
| sub_08078108: @ 0x08078108
 | |
| 	push {lr}
 | |
| 	adds r1, r0, #0
 | |
| 	ldrh r0, [r1, #4]
 | |
| 	subs r0, #1
 | |
| 	strh r0, [r1, #4]
 | |
| 	lsls r0, r0, #0x10
 | |
| 	cmp r0, #0
 | |
| 	bge _08078120
 | |
| 	movs r0, #0
 | |
| 	strh r0, [r1, #4]
 | |
| 	movs r0, #2
 | |
| 	strb r0, [r1]
 | |
| _08078120:
 | |
| 	movs r0, #1
 | |
| 	pop {pc}
 | |
| 
 | |
| 	thumb_func_start sub_08078124
 | |
| sub_08078124: @ 0x08078124
 | |
| 	push {lr}
 | |
| 	adds r1, r0, #0
 | |
| 	ldrh r0, [r1, #4]
 | |
| 	subs r0, #0x10
 | |
| 	strh r0, [r1, #4]
 | |
| 	lsls r0, r0, #0x10
 | |
| 	cmp r0, #0
 | |
| 	bge _0807813C
 | |
| 	movs r0, #0
 | |
| 	strh r0, [r1, #4]
 | |
| 	movs r0, #2
 | |
| 	strb r0, [r1]
 | |
| _0807813C:
 | |
| 	movs r0, #1
 | |
| 	pop {pc}
 | |
| 
 | |
| 	thumb_func_start sub_08078140
 | |
| sub_08078140: @ 0x08078140
 | |
| 	push {lr}
 | |
| 	adds r1, r0, #0
 | |
| 	ldrb r0, [r1, #1]
 | |
| 	subs r0, #1
 | |
| 	movs r2, #0
 | |
| 	strb r0, [r1, #1]
 | |
| 	lsls r0, r0, #0x18
 | |
| 	cmp r0, #0
 | |
| 	blt _08078156
 | |
| 	movs r0, #0
 | |
| 	b _0807815C
 | |
| _08078156:
 | |
| 	strb r2, [r1, #1]
 | |
| 	strb r2, [r1]
 | |
| 	movs r0, #1
 | |
| _0807815C:
 | |
| 	pop {pc}
 | |
| 	.align 2, 0
 | |
| 
 | |
| 	thumb_func_start sub_08078160
 | |
| sub_08078160: @ 0x08078160
 | |
| 	push {lr}
 | |
| 	ldr r1, _08078178 @ =gPlayerState
 | |
| 	adds r1, #0xa8
 | |
| 	strb r0, [r1]
 | |
| 	ldr r2, _0807817C @ =gPlayerEntity
 | |
| 	ldrb r1, [r2, #0x10]
 | |
| 	movs r0, #0x7f
 | |
| 	ands r0, r1
 | |
| 	strb r0, [r2, #0x10]
 | |
| 	bl sub_08078B48
 | |
| 	pop {pc}
 | |
| 	.align 2, 0
 | |
| _08078178: .4byte gPlayerState
 | |
| _0807817C: .4byte gPlayerEntity
 | |
| 
 | |
| 	thumb_func_start sub_08078180
 | |
| sub_08078180: @ 0x08078180
 | |
| 	push {r4, r5, r6, lr}
 | |
| 	ldr r0, _080781C8 @ =gUnk_0200AF00
 | |
| 	adds r1, r0, #0
 | |
| 	adds r1, #0x2f
 | |
| 	ldrb r1, [r1]
 | |
| 	adds r6, r0, #0
 | |
| 	cmp r1, #0
 | |
| 	beq _08078192
 | |
| 	b _080782BC
 | |
| _08078192:
 | |
| 	movs r4, #0
 | |
| 	ldr r5, _080781CC @ =gPlayerState
 | |
| 	ldrb r0, [r5, #2]
 | |
| 	cmp r0, #0
 | |
| 	beq _0807819E
 | |
| 	b _080782B6
 | |
| _0807819E:
 | |
| 	ldr r0, [r5, #0x30]
 | |
| 	ldr r1, _080781D0 @ =0x00104D00
 | |
| 	ands r0, r1
 | |
| 	cmp r0, #0
 | |
| 	beq _080781AA
 | |
| 	b _080782B6
 | |
| _080781AA:
 | |
| 	ldrb r0, [r5, #5]
 | |
| 	subs r0, #1
 | |
| 	lsls r0, r0, #0x18
 | |
| 	lsrs r0, r0, #0x18
 | |
| 	cmp r0, #3
 | |
| 	bhi _080781D4
 | |
| 	adds r1, r6, #0
 | |
| 	adds r1, #0x2e
 | |
| 	ldrb r0, [r1]
 | |
| 	movs r4, #3
 | |
| 	cmp r0, #0
 | |
| 	bne _080781C4
 | |
| 	b _080782B6
 | |
| _080781C4:
 | |
| 	adds r4, r0, #0
 | |
| 	b _080782B6
 | |
| 	.align 2, 0
 | |
| _080781C8: .4byte gUnk_0200AF00
 | |
| _080781CC: .4byte gPlayerState
 | |
| _080781D0: .4byte 0x00104D00
 | |
| _080781D4:
 | |
| 	adds r1, r6, #0
 | |
| 	adds r1, #0x2d
 | |
| 	ldrb r0, [r1]
 | |
| 	cmp r0, #0
 | |
| 	bne _080781C4
 | |
| 	bl sub_080784E4
 | |
| 	adds r1, r0, #0
 | |
| 	ldr r0, [r1, #8]
 | |
| 	adds r0, #0x39
 | |
| 	ldrb r0, [r0]
 | |
| 	lsls r0, r0, #0x18
 | |
| 	asrs r0, r0, #0x18
 | |
| 	cmp r0, #0
 | |
| 	bne _08078278
 | |
| 	ldrb r0, [r1, #1]
 | |
| 	subs r0, #1
 | |
| 	cmp r0, #9
 | |
| 	bhi _080782B6
 | |
| 	lsls r0, r0, #2
 | |
| 	ldr r1, _08078204 @ =_08078208
 | |
| 	adds r0, r0, r1
 | |
| 	ldr r0, [r0]
 | |
| 	mov pc, r0
 | |
| 	.align 2, 0
 | |
| _08078204: .4byte _08078208
 | |
| _08078208: @ jump table
 | |
| 	.4byte _08078230 @ case 0
 | |
| 	.4byte _080782B6 @ case 1
 | |
| 	.4byte _08078254 @ case 2
 | |
| 	.4byte _080782B6 @ case 3
 | |
| 	.4byte _08078254 @ case 4
 | |
| 	.4byte _08078254 @ case 5
 | |
| 	.4byte _08078230 @ case 6
 | |
| 	.4byte _0807823C @ case 7
 | |
| 	.4byte _08078260 @ case 8
 | |
| 	.4byte _0807826C @ case 9
 | |
| _08078230:
 | |
| 	movs r4, #7
 | |
| 	ldr r6, _08078238 @ =gUnk_0200AF00
 | |
| 	b _080782B6
 | |
| 	.align 2, 0
 | |
| _08078238: .4byte gUnk_0200AF00
 | |
| _0807823C:
 | |
| 	ldr r0, _0807824C @ =gRoomVars
 | |
| 	ldrb r0, [r0, #6]
 | |
| 	ldr r6, _08078250 @ =gUnk_0200AF00
 | |
| 	cmp r0, #0
 | |
| 	bne _080782B6
 | |
| 	movs r4, #9
 | |
| 	b _080782B6
 | |
| 	.align 2, 0
 | |
| _0807824C: .4byte gRoomVars
 | |
| _08078250: .4byte gUnk_0200AF00
 | |
| _08078254:
 | |
| 	movs r4, #6
 | |
| 	ldr r6, _0807825C @ =gUnk_0200AF00
 | |
| 	b _080782B6
 | |
| 	.align 2, 0
 | |
| _0807825C: .4byte gUnk_0200AF00
 | |
| _08078260:
 | |
| 	movs r4, #5
 | |
| 	ldr r6, _08078268 @ =gUnk_0200AF00
 | |
| 	b _080782B6
 | |
| 	.align 2, 0
 | |
| _08078268: .4byte gUnk_0200AF00
 | |
| _0807826C:
 | |
| 	movs r4, #2
 | |
| 	ldr r6, _08078274 @ =gUnk_0200AF00
 | |
| 	b _080782B6
 | |
| 	.align 2, 0
 | |
| _08078274: .4byte gUnk_0200AF00
 | |
| _08078278:
 | |
| 	bl sub_080789A8
 | |
| 	cmp r0, #0
 | |
| 	beq _080782A4
 | |
| 	adds r0, r5, #0
 | |
| 	adds r0, #0xa8
 | |
| 	ldrb r0, [r0]
 | |
| 	cmp r0, #0xe
 | |
| 	beq _080782BC
 | |
| 	ldr r1, _080782A0 @ =gUnk_03003BE0
 | |
| 	ldrb r0, [r1, #1]
 | |
| 	movs r4, #9
 | |
| 	cmp r0, #2
 | |
| 	bne _080782B6
 | |
| 	ldr r0, [r1, #8]
 | |
| 	ldrb r0, [r0, #0x16]
 | |
| 	cmp r0, #1
 | |
| 	bne _080782B6
 | |
| 	movs r4, #8
 | |
| 	b _080782B6
 | |
| 	.align 2, 0
 | |
| _080782A0: .4byte gUnk_03003BE0
 | |
| _080782A4:
 | |
| 	adds r0, r5, #0
 | |
| 	adds r0, #0xa8
 | |
| 	ldrb r0, [r0]
 | |
| 	cmp r0, #1
 | |
| 	bne _080782B6
 | |
| 	ldrb r0, [r5, #0x1a]
 | |
| 	cmp r0, #0
 | |
| 	bne _080782B6
 | |
| 	movs r4, #0xc
 | |
| _080782B6:
 | |
| 	adds r0, r6, #0
 | |
| 	adds r0, #0x2c
 | |
| 	strb r4, [r0]
 | |
| _080782BC:
 | |
| 	pop {r4, r5, r6, pc}
 | |
| 	.align 2, 0
 | |
| 
 | |
| 	thumb_func_start sub_080782C0
 | |
| sub_080782C0: @ 0x080782C0
 | |
| 	push {r4, r5, r6, lr}
 | |
| 	ldr r1, _080782D8 @ =gPlayerState
 | |
| 	adds r2, r1, #0
 | |
| 	adds r2, #0xa8
 | |
| 	ldrb r0, [r2]
 | |
| 	adds r4, r1, #0
 | |
| 	cmp r0, #0
 | |
| 	bne _080782DC
 | |
| 	adds r0, r4, #0
 | |
| 	adds r0, #0xa9
 | |
| 	ldrb r0, [r0]
 | |
| 	b _080782DE
 | |
| 	.align 2, 0
 | |
| _080782D8: .4byte gPlayerState
 | |
| _080782DC:
 | |
| 	ldrb r0, [r2]
 | |
| _080782DE:
 | |
| 	subs r0, #2
 | |
| 	cmp r0, #0x14
 | |
| 	bhi _08078348
 | |
| 	lsls r0, r0, #2
 | |
| 	ldr r1, _080782F0 @ =_080782F4
 | |
| 	adds r0, r0, r1
 | |
| 	ldr r0, [r0]
 | |
| 	mov pc, r0
 | |
| 	.align 2, 0
 | |
| _080782F0: .4byte _080782F4
 | |
| _080782F4: @ jump table
 | |
| 	.4byte _080784AC @ case 0
 | |
| 	.4byte _080784AC @ case 1
 | |
| 	.4byte _08078348 @ case 2
 | |
| 	.4byte _08078348 @ case 3
 | |
| 	.4byte _08078348 @ case 4
 | |
| 	.4byte _08078348 @ case 5
 | |
| 	.4byte _08078348 @ case 6
 | |
| 	.4byte _08078348 @ case 7
 | |
| 	.4byte _08078348 @ case 8
 | |
| 	.4byte _08078348 @ case 9
 | |
| 	.4byte _080784AC @ case 10
 | |
| 	.4byte _08078348 @ case 11
 | |
| 	.4byte _08078348 @ case 12
 | |
| 	.4byte _08078348 @ case 13
 | |
| 	.4byte _08078348 @ case 14
 | |
| 	.4byte _08078348 @ case 15
 | |
| 	.4byte _080784AC @ case 16
 | |
| 	.4byte _08078348 @ case 17
 | |
| 	.4byte _08078348 @ case 18
 | |
| 	.4byte _080784AC @ case 19
 | |
| 	.4byte _080784AC @ case 20
 | |
| _08078348:
 | |
| 	adds r0, r4, #0
 | |
| 	adds r0, #0x27
 | |
| 	adds r2, r4, #0
 | |
| 	adds r2, #0x26
 | |
| 	ldrb r1, [r0]
 | |
| 	ldrb r0, [r2]
 | |
| 	orrs r0, r1
 | |
| 	cmp r0, #0
 | |
| 	beq _0807835C
 | |
| 	b _080784AC
 | |
| _0807835C:
 | |
| 	ldrb r0, [r4, #0x12]
 | |
| 	cmp r0, #1
 | |
| 	bne _08078376
 | |
| 	ldrb r0, [r4, #0x14]
 | |
| 	cmp r0, #0
 | |
| 	bne _0807836A
 | |
| 	b _080784AC
 | |
| _0807836A:
 | |
| 	bl sub_08052B24
 | |
| 	cmp r0, #0
 | |
| 	beq _08078374
 | |
| 	b _080784C4
 | |
| _08078374:
 | |
| 	b _080784AC
 | |
| _08078376:
 | |
| 	ldr r0, [r4, #0x30]
 | |
| 	movs r1, #0x80
 | |
| 	lsls r1, r1, #7
 | |
| 	ands r0, r1
 | |
| 	cmp r0, #0
 | |
| 	beq _08078384
 | |
| 	b _080784AC
 | |
| _08078384:
 | |
| 	bl sub_08052B24
 | |
| 	cmp r0, #0
 | |
| 	beq _0807838E
 | |
| 	b _080784C4
 | |
| _0807838E:
 | |
| 	bl sub_080784E4
 | |
| 	ldr r6, [r0, #8]
 | |
| 	cmp r6, #0
 | |
| 	bne _0807839A
 | |
| 	b _080784AC
 | |
| _0807839A:
 | |
| 	ldrb r0, [r4, #5]
 | |
| 	cmp r0, #0
 | |
| 	beq _080783B6
 | |
| 	cmp r0, #4
 | |
| 	beq _080783A6
 | |
| 	b _080784AC
 | |
| _080783A6:
 | |
| 	ldr r0, _08078400 @ =gPlayerEntity
 | |
| 	ldr r0, [r0, #0x74]
 | |
| 	ldr r0, [r0, #0x54]
 | |
| 	ldrh r1, [r0, #8]
 | |
| 	ldr r0, _08078404 @ =0x00000206
 | |
| 	cmp r1, r0
 | |
| 	beq _080783B6
 | |
| 	b _080784AC
 | |
| _080783B6:
 | |
| 	ldr r2, _08078408 @ =gPlayerState
 | |
| 	adds r0, r2, #0
 | |
| 	adds r0, #0x92
 | |
| 	ldrh r1, [r0]
 | |
| 	movs r0, #0x80
 | |
| 	lsls r0, r0, #5
 | |
| 	ands r0, r1
 | |
| 	adds r4, r2, #0
 | |
| 	cmp r0, #0
 | |
| 	beq _0807842C
 | |
| 	ldr r5, _0807840C @ =gUnk_03003DF0
 | |
| 	ldr r0, [r5, #4]
 | |
| 	ldrb r0, [r0, #3]
 | |
| 	subs r0, #1
 | |
| 	lsls r0, r0, #0x18
 | |
| 	lsrs r0, r0, #0x18
 | |
| 	cmp r0, #0x63
 | |
| 	bhi _0807842C
 | |
| 	movs r0, #0
 | |
| 	bl sub_0801E738
 | |
| 	ldr r0, _08078410 @ =gSave
 | |
| 	ldr r1, _08078414 @ =0x0000012B
 | |
| 	adds r0, r0, r1
 | |
| 	ldrb r0, [r0]
 | |
| 	cmp r0, #0
 | |
| 	beq _08078418
 | |
| 	ldr r1, [r5, #4]
 | |
| 	ldrb r0, [r1, #3]
 | |
| 	strb r0, [r5, #2]
 | |
| 	ldr r0, [r1, #8]
 | |
| 	adds r0, #0x39
 | |
| 	movs r1, #2
 | |
| 	strb r1, [r0]
 | |
| 	movs r0, #7
 | |
| 	strb r0, [r4, #0xc]
 | |
| 	b _08078420
 | |
| 	.align 2, 0
 | |
| _08078400: .4byte gPlayerEntity
 | |
| _08078404: .4byte 0x00000206
 | |
| _08078408: .4byte gPlayerState
 | |
| _0807840C: .4byte gUnk_03003DF0
 | |
| _08078410: .4byte gSave
 | |
| _08078414: .4byte 0x0000012B
 | |
| _08078418:
 | |
| 	ldr r0, _08078428 @ =0x00000B65
 | |
| 	movs r1, #0
 | |
| 	bl CreateEzloHint
 | |
| _08078420:
 | |
| 	movs r0, #0x13
 | |
| 	bl sub_08078160
 | |
| 	b _080784C4
 | |
| 	.align 2, 0
 | |
| _08078428: .4byte 0x00000B65
 | |
| _0807842C:
 | |
| 	adds r0, r4, #0
 | |
| 	adds r0, #0x92
 | |
| 	ldrh r1, [r0]
 | |
| 	movs r0, #0x88
 | |
| 	ands r0, r1
 | |
| 	cmp r0, #0
 | |
| 	beq _080784AC
 | |
| 	ldr r0, _08078450 @ =gUnk_03003DF0
 | |
| 	ldr r0, [r0, #4]
 | |
| 	ldrb r0, [r0, #1]
 | |
| 	cmp r0, #0xa
 | |
| 	bhi _080784C4
 | |
| 	lsls r0, r0, #2
 | |
| 	ldr r1, _08078454 @ =_08078458
 | |
| 	adds r0, r0, r1
 | |
| 	ldr r0, [r0]
 | |
| 	mov pc, r0
 | |
| 	.align 2, 0
 | |
| _08078450: .4byte gUnk_03003DF0
 | |
| _08078454: .4byte _08078458
 | |
| _08078458: @ jump table
 | |
| 	.4byte _080784C4 @ case 0
 | |
| 	.4byte _08078484 @ case 1
 | |
| 	.4byte _080784C4 @ case 2
 | |
| 	.4byte _0807848E @ case 3
 | |
| 	.4byte _080784C4 @ case 4
 | |
| 	.4byte _0807848E @ case 5
 | |
| 	.4byte _08078484 @ case 6
 | |
| 	.4byte _0807848E @ case 7
 | |
| 	.4byte _080784A4 @ case 8
 | |
| 	.4byte _08078484 @ case 9
 | |
| 	.4byte _08078484 @ case 10
 | |
| _08078484:
 | |
| 	movs r0, #7
 | |
| 	strb r0, [r4, #0xc]
 | |
| 	movs r0, #0x13
 | |
| 	bl sub_08078160
 | |
| _0807848E:
 | |
| 	adds r1, r6, #0
 | |
| 	adds r1, #0x39
 | |
| 	movs r2, #0
 | |
| 	movs r0, #1
 | |
| 	strb r0, [r1]
 | |
| 	ldr r0, _080784A0 @ =gUnk_03003DF0
 | |
| 	strb r2, [r0, #2]
 | |
| 	b _080784C4
 | |
| 	.align 2, 0
 | |
| _080784A0: .4byte gUnk_03003DF0
 | |
| _080784A4:
 | |
| 	ldr r2, _080784B0 @ =gRoomVars
 | |
| 	ldrb r0, [r2, #6]
 | |
| 	cmp r0, #0
 | |
| 	beq _080784B4
 | |
| _080784AC:
 | |
| 	movs r0, #0
 | |
| 	b _080784C6
 | |
| 	.align 2, 0
 | |
| _080784B0: .4byte gRoomVars
 | |
| _080784B4:
 | |
| 	adds r1, r6, #0
 | |
| 	adds r1, #0x39
 | |
| 	movs r0, #1
 | |
| 	strb r0, [r1]
 | |
| 	ldrb r0, [r6, #0xa]
 | |
| 	strb r0, [r2, #6]
 | |
| 	ldrb r0, [r6, #0xb]
 | |
| 	strb r0, [r2, #7]
 | |
| _080784C4:
 | |
| 	movs r0, #1
 | |
| _080784C6:
 | |
| 	pop {r4, r5, r6, pc}
 | |
| 
 | |
| 	thumb_func_start sub_080784C8
 | |
| sub_080784C8: @ 0x080784C8
 | |
| 	push {r4, lr}
 | |
| 	ldr r4, _080784DC @ =gUnk_03003DF0
 | |
| 	movs r1, #0xc4
 | |
| 	lsls r1, r1, #1
 | |
| 	adds r0, r4, #0
 | |
| 	bl MemClear
 | |
| 	ldr r0, _080784E0 @ =gUnk_0811C000
 | |
| 	str r0, [r4, #4]
 | |
| 	pop {r4, pc}
 | |
| 	.align 2, 0
 | |
| _080784DC: .4byte gUnk_03003DF0
 | |
| _080784E0: .4byte gUnk_0811C000
 | |
| 
 | |
| 	thumb_func_start sub_080784E4
 | |
| sub_080784E4: @ 0x080784E4
 | |
| 	push {r4, r5, r6, r7, lr}
 | |
| 	mov r7, sl
 | |
| 	mov r6, sb
 | |
| 	mov r5, r8
 | |
| 	push {r5, r6, r7}
 | |
| 	ldr r0, _080784FC @ =gUnk_03003DF0
 | |
| 	ldrb r1, [r0]
 | |
| 	mov r8, r0
 | |
| 	cmp r1, #0
 | |
| 	beq _08078500
 | |
| 	ldr r0, [r0, #4]
 | |
| 	b _0807876A
 | |
| 	.align 2, 0
 | |
| _080784FC: .4byte gUnk_03003DF0
 | |
| _08078500:
 | |
| 	ldr r2, _08078528 @ =gPlayerState
 | |
| 	adds r0, r2, #0
 | |
| 	adds r0, #0x27
 | |
| 	adds r3, r2, #0
 | |
| 	adds r3, #0x26
 | |
| 	ldrb r1, [r0]
 | |
| 	ldrb r0, [r3]
 | |
| 	orrs r0, r1
 | |
| 	cmp r0, #0
 | |
| 	bne _08078598
 | |
| 	adds r1, r2, #0
 | |
| 	adds r1, #0xa8
 | |
| 	ldrb r0, [r1]
 | |
| 	cmp r0, #0
 | |
| 	bne _0807852C
 | |
| 	adds r0, r2, #0
 | |
| 	adds r0, #0xa9
 | |
| 	ldrb r0, [r0]
 | |
| 	b _0807852E
 | |
| 	.align 2, 0
 | |
| _08078528: .4byte gPlayerState
 | |
| _0807852C:
 | |
| 	ldrb r0, [r1]
 | |
| _0807852E:
 | |
| 	subs r0, #2
 | |
| 	cmp r0, #0x14
 | |
| 	bhi _080785B0
 | |
| 	lsls r0, r0, #2
 | |
| 	ldr r1, _08078540 @ =_08078544
 | |
| 	adds r0, r0, r1
 | |
| 	ldr r0, [r0]
 | |
| 	mov pc, r0
 | |
| 	.align 2, 0
 | |
| _08078540: .4byte _08078544
 | |
| _08078544: @ jump table
 | |
| 	.4byte _08078598 @ case 0
 | |
| 	.4byte _08078598 @ case 1
 | |
| 	.4byte _080785B0 @ case 2
 | |
| 	.4byte _080785B0 @ case 3
 | |
| 	.4byte _080785B0 @ case 4
 | |
| 	.4byte _080785B0 @ case 5
 | |
| 	.4byte _080785B0 @ case 6
 | |
| 	.4byte _080785B0 @ case 7
 | |
| 	.4byte _080785B0 @ case 8
 | |
| 	.4byte _080785B0 @ case 9
 | |
| 	.4byte _080785B0 @ case 10
 | |
| 	.4byte _080785B0 @ case 11
 | |
| 	.4byte _080785B0 @ case 12
 | |
| 	.4byte _080785B0 @ case 13
 | |
| 	.4byte _080785B0 @ case 14
 | |
| 	.4byte _080785B0 @ case 15
 | |
| 	.4byte _08078598 @ case 16
 | |
| 	.4byte _080785B0 @ case 17
 | |
| 	.4byte _080785B0 @ case 18
 | |
| 	.4byte _08078598 @ case 19
 | |
| 	.4byte _08078598 @ case 20
 | |
| _08078598:
 | |
| 	movs r0, #0xff
 | |
| 	mov r1, r8
 | |
| 	strb r0, [r1, #3]
 | |
| 	ldr r0, _080785AC @ =gUnk_0811C000
 | |
| 	str r0, [r1, #4]
 | |
| 	movs r1, #1
 | |
| 	mov r2, r8
 | |
| 	strb r1, [r2]
 | |
| 	b _0807876A
 | |
| 	.align 2, 0
 | |
| _080785AC: .4byte gUnk_0811C000
 | |
| _080785B0:
 | |
| 	ldr r0, [r2, #0x30]
 | |
| 	movs r1, #0x80
 | |
| 	ands r0, r1
 | |
| 	cmp r0, #0
 | |
| 	bne _080785F0
 | |
| 	bl HasDungeonMap
 | |
| 	cmp r0, #0
 | |
| 	beq _080785C4
 | |
| 	movs r0, #1
 | |
| _080785C4:
 | |
| 	adds r7, r0, #0
 | |
| 	bl HasDungeonCompass
 | |
| 	cmp r0, #0
 | |
| 	beq _080785D2
 | |
| 	movs r0, #2
 | |
| 	orrs r7, r0
 | |
| _080785D2:
 | |
| 	ldr r3, _080785E4 @ =gPlayerEntity
 | |
| 	ldrb r0, [r3, #0x14]
 | |
| 	movs r1, #6
 | |
| 	ands r1, r0
 | |
| 	ldr r0, _080785E8 @ =gUnk_0811C00C
 | |
| 	adds r2, r1, r0
 | |
| 	ldr r5, _080785EC @ =gUnk_03003DF0
 | |
| 	mov r8, r5
 | |
| 	b _080785FE
 | |
| 	.align 2, 0
 | |
| _080785E4: .4byte gPlayerEntity
 | |
| _080785E8: .4byte gUnk_0811C00C
 | |
| _080785EC: .4byte gUnk_03003DF0
 | |
| _080785F0:
 | |
| 	ldr r3, _08078624 @ =gPlayerEntity
 | |
| 	ldrb r0, [r3, #0x14]
 | |
| 	movs r1, #6
 | |
| 	ands r1, r0
 | |
| 	ldr r0, _08078628 @ =gUnk_0811C014
 | |
| 	adds r2, r1, r0
 | |
| 	movs r7, #0
 | |
| _080785FE:
 | |
| 	mov ip, r3
 | |
| 	mov r0, ip
 | |
| 	movs r3, #0x2e
 | |
| 	ldrsh r1, [r0, r3]
 | |
| 	movs r0, #0
 | |
| 	ldrsb r0, [r2, r0]
 | |
| 	adds r1, r1, r0
 | |
| 	mov sl, r1
 | |
| 	mov r5, ip
 | |
| 	movs r0, #0x32
 | |
| 	ldrsh r1, [r5, r0]
 | |
| 	movs r0, #1
 | |
| 	ldrsb r0, [r2, r0]
 | |
| 	adds r1, r1, r0
 | |
| 	mov sb, r1
 | |
| 	movs r6, #0
 | |
| 	ldr r5, _0807862C @ =gUnk_03003DF8
 | |
| 	b _08078724
 | |
| 	.align 2, 0
 | |
| _08078624: .4byte gPlayerEntity
 | |
| _08078628: .4byte gUnk_0811C014
 | |
| _0807862C: .4byte gUnk_03003DF8
 | |
| _08078630:
 | |
| 	ldrb r1, [r5]
 | |
| 	movs r3, #1
 | |
| 	adds r0, r3, #0
 | |
| 	ands r0, r1
 | |
| 	cmp r0, #0
 | |
| 	bne _0807864E
 | |
| 	mov r0, ip
 | |
| 	adds r0, #0x38
 | |
| 	adds r1, r2, #0
 | |
| 	adds r1, #0x38
 | |
| 	ldrb r2, [r0]
 | |
| 	ldrb r0, [r1]
 | |
| 	ands r0, r2
 | |
| 	cmp r0, #0
 | |
| 	beq _08078714
 | |
| _0807864E:
 | |
| 	ldrb r1, [r5, #2]
 | |
| 	mov r2, ip
 | |
| 	ldrb r0, [r2, #0x14]
 | |
| 	lsrs r0, r0, #1
 | |
| 	asrs r1, r0
 | |
| 	ands r1, r3
 | |
| 	cmp r1, #0
 | |
| 	bne _08078714
 | |
| 	ldrb r0, [r5, #1]
 | |
| 	cmp r0, #0xa
 | |
| 	bhi _080786D4
 | |
| 	lsls r0, r0, #2
 | |
| 	ldr r1, _08078670 @ =_08078674
 | |
| 	adds r0, r0, r1
 | |
| 	ldr r0, [r0]
 | |
| 	mov pc, r0
 | |
| 	.align 2, 0
 | |
| _08078670: .4byte _08078674
 | |
| _08078674: @ jump table
 | |
| 	.4byte _08078714 @ case 0
 | |
| 	.4byte _080786A0 @ case 1
 | |
| 	.4byte _080786C4 @ case 2
 | |
| 	.4byte _080786A0 @ case 3
 | |
| 	.4byte _080786A0 @ case 4
 | |
| 	.4byte _080786C8 @ case 5
 | |
| 	.4byte _080786CC @ case 6
 | |
| 	.4byte _080786B4 @ case 7
 | |
| 	.4byte _080786A0 @ case 8
 | |
| 	.4byte _080786A0 @ case 9
 | |
| 	.4byte _080786D4 @ case 10
 | |
| _080786A0:
 | |
| 	ldr r0, _080786B0 @ =gPlayerState
 | |
| 	ldr r0, [r0, #0x30]
 | |
| 	movs r1, #0x80
 | |
| 	ands r0, r1
 | |
| 	cmp r0, #0
 | |
| 	bne _08078714
 | |
| 	b _080786D4
 | |
| 	.align 2, 0
 | |
| _080786B0: .4byte gPlayerState
 | |
| _080786B4:
 | |
| 	ldr r0, _080786C0 @ =gPlayerState
 | |
| 	ldr r0, [r0, #0x30]
 | |
| 	movs r1, #0x80
 | |
| 	ands r0, r1
 | |
| 	b _080786D0
 | |
| 	.align 2, 0
 | |
| _080786C0: .4byte gPlayerState
 | |
| _080786C4:
 | |
| 	ldrb r0, [r5, #3]
 | |
| 	b _080786D0
 | |
| _080786C8:
 | |
| 	movs r0, #1
 | |
| 	b _080786CE
 | |
| _080786CC:
 | |
| 	movs r0, #2
 | |
| _080786CE:
 | |
| 	ands r0, r7
 | |
| _080786D0:
 | |
| 	cmp r0, #0
 | |
| 	beq _08078714
 | |
| _080786D4:
 | |
| 	ldr r0, [r5, #8]
 | |
| 	movs r1, #0x2e
 | |
| 	ldrsh r3, [r0, r1]
 | |
| 	movs r2, #0x32
 | |
| 	ldrsh r4, [r0, r2]
 | |
| 	ldr r1, [r5, #4]
 | |
| 	cmp r1, #0
 | |
| 	beq _080786F4
 | |
| 	movs r0, #0
 | |
| 	ldrsb r0, [r1, r0]
 | |
| 	adds r3, r3, r0
 | |
| 	movs r0, #1
 | |
| 	ldrsb r0, [r1, r0]
 | |
| 	adds r4, r4, r0
 | |
| 	adds r2, r1, #2
 | |
| 	b _080786F8
 | |
| _080786F4:
 | |
| 	ldr r0, [r0, #0x48]
 | |
| 	adds r2, r0, #6
 | |
| _080786F8:
 | |
| 	ldrb r1, [r2]
 | |
| 	mov r5, sl
 | |
| 	adds r0, r1, r5
 | |
| 	subs r0, r0, r3
 | |
| 	lsls r1, r1, #1
 | |
| 	cmp r0, r1
 | |
| 	bhs _08078714
 | |
| 	ldrb r1, [r2, #1]
 | |
| 	mov r2, sb
 | |
| 	adds r0, r1, r2
 | |
| 	subs r0, r0, r4
 | |
| 	lsls r1, r1, #1
 | |
| 	cmp r0, r1
 | |
| 	blo _0807873A
 | |
| _08078714:
 | |
| 	adds r6, #1
 | |
| 	cmp r6, #0x1f
 | |
| 	bhi _08078758
 | |
| 	lsls r0, r6, #1
 | |
| 	adds r0, r0, r6
 | |
| 	lsls r0, r0, #2
 | |
| 	ldr r3, _08078754 @ =gUnk_03003DF8
 | |
| 	adds r5, r0, r3
 | |
| _08078724:
 | |
| 	ldr r2, [r5, #8]
 | |
| 	cmp r2, #0
 | |
| 	beq _08078714
 | |
| 	adds r0, r2, #0
 | |
| 	adds r0, #0x39
 | |
| 	ldrb r0, [r0]
 | |
| 	lsls r0, r0, #0x18
 | |
| 	asrs r0, r0, #0x18
 | |
| 	cmp r0, #0
 | |
| 	blt _0807873A
 | |
| 	b _08078630
 | |
| _0807873A:
 | |
| 	cmp r6, #0x1f
 | |
| 	bhi _08078758
 | |
| 	mov r5, r8
 | |
| 	strb r6, [r5, #3]
 | |
| 	lsls r0, r6, #1
 | |
| 	adds r0, r0, r6
 | |
| 	lsls r0, r0, #2
 | |
| 	mov r1, r8
 | |
| 	adds r1, #8
 | |
| 	adds r0, r0, r1
 | |
| 	str r0, [r5, #4]
 | |
| 	b _08078762
 | |
| 	.align 2, 0
 | |
| _08078754: .4byte gUnk_03003DF8
 | |
| _08078758:
 | |
| 	movs r0, #0xff
 | |
| 	mov r1, r8
 | |
| 	strb r0, [r1, #3]
 | |
| 	ldr r0, _08078774 @ =gUnk_0811C000
 | |
| 	str r0, [r1, #4]
 | |
| _08078762:
 | |
| 	movs r0, #1
 | |
| 	mov r2, r8
 | |
| 	strb r0, [r2]
 | |
| 	ldr r0, [r2, #4]
 | |
| _0807876A:
 | |
| 	pop {r3, r4, r5}
 | |
| 	mov r8, r3
 | |
| 	mov sb, r4
 | |
| 	mov sl, r5
 | |
| 	pop {r4, r5, r6, r7, pc}
 | |
| 	.align 2, 0
 | |
| _08078774: .4byte gUnk_0811C000
 |