summaryrefslogtreecommitdiff
path: root/arm9/asm/unk_0208898C.s
blob: 0599aedb59808af8ce76f1af13794f64c3379f7c (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
	.include "asm/macros.inc"
	.include "global.inc"

	.text

	thumb_func_start FUN_0208898C
FUN_0208898C: ; 0x0208898C
	push {r4, lr}
	add r4, r0, #0x0
	ldr r0, [r4, #0x0]
	cmp r0, #0x0
	beq _020889AC
	bl OverlayManager_Run
	cmp r0, #0x0
	beq _020889AC
	ldr r0, [r4, #0x0]
	bl OverlayManager_delete
	mov r0, #0x0
	str r0, [r4, #0x0]
	mov r0, #0x1
	pop {r4, pc}
_020889AC:
	mov r0, #0x0
	pop {r4, pc}

	thumb_func_start FUN_020889B0
FUN_020889B0: ; 0x020889B0
	push {r3-r5, lr}
	add r4, r0, #0x0
	bl OverlayManager_GetField18
	mov r2, #0x1
	add r5, r0, #0x0
	mov r0, #0x3
	mov r1, #0x37
	lsl r2, r2, #0xe
	bl CreateHeap
	add r0, r4, #0x0
	mov r1, #0x24
	mov r2, #0x37
	bl OverlayManager_CreateAndGetData
	mov r1, #0x0
	mov r2, #0x24
	add r4, r0, #0x0
	bl MI_CpuFill8
	mov r0, #0x37
	str r0, [r4, #0x0]
	str r5, [r4, #0x10]
	ldr r0, [r4, #0x0]
	bl FUN_0206F164
	str r0, [r4, #0xc]
	ldr r0, [r5, #0x4]
	cmp r0, #0x1
	bne _020889FA
	ldrh r1, [r4, #0x6]
	mov r0, #0xff
	bic r1, r0
	mov r0, #0x1
	orr r0, r1
	strh r0, [r4, #0x6]
_020889FA:
	mov r0, #0x1
	pop {r3-r5, pc}
	.balign 4

	thumb_func_start FUN_02088A00
FUN_02088A00: ; 0x02088A00
	push {r4-r6, lr}
	add r5, r0, #0x0
	add r4, r1, #0x0
	bl OverlayManager_GetData
	add r6, r0, #0x0
	add r0, r5, #0x0
	bl OverlayManager_GetField18
	ldr r5, [r4, #0x0]
	cmp r5, #0x4
	bhi _02088A6A
	add r0, r5, r5
	add r0, pc
	ldrh r0, [r0, #0x6]
	lsl r0, r0, #0x10
	asr r0, r0, #0x10
	add pc, r0
_02088A24: ; jump table (using 16-bit offset)
	.short _02088A2E - _02088A24 - 2; case 0
	.short _02088A3C - _02088A24 - 2; case 1
	.short _02088A4A - _02088A24 - 2; case 2
	.short _02088A58 - _02088A24 - 2; case 3
	.short _02088A66 - _02088A24 - 2; case 4
_02088A2E:
	add r1, r6, #0x0
	add r0, r6, #0x0
	add r1, #0x14
	bl FUN_02088AAC
	str r0, [r4, #0x0]
	b _02088A6A
_02088A3C:
	add r1, r6, #0x0
	add r0, r6, #0x0
	add r1, #0x14
	bl FUN_02088AFC
	str r0, [r4, #0x0]
	b _02088A6A
_02088A4A:
	add r1, r6, #0x0
	add r0, r6, #0x0
	add r1, #0x14
	bl FUN_02088B28
	str r0, [r4, #0x0]
	b _02088A6A
_02088A58:
	add r1, r6, #0x0
	add r0, r6, #0x0
	add r1, #0x14
	bl FUN_02088B48
	str r0, [r4, #0x0]
	b _02088A6A
_02088A66:
	mov r0, #0x1
	pop {r4-r6, pc}
_02088A6A:
	ldr r0, [r4, #0x0]
	cmp r5, r0
	beq _02088A74
	mov r0, #0x0
	str r0, [r6, #0x14]
_02088A74:
	mov r0, #0x0
	pop {r4-r6, pc}

	thumb_func_start FUN_02088A78
FUN_02088A78: ; 0x02088A78
	push {r4-r6, lr}
	add r5, r0, #0x0
	bl OverlayManager_GetData
	add r4, r0, #0x0
	add r0, r5, #0x0
	bl OverlayManager_GetField18
	ldr r0, [r4, #0xc]
	ldr r6, [r4, #0x0]
	bl FreeToHeap
	add r0, r4, #0x0
	mov r1, #0x0
	mov r2, #0x24
	bl MI_CpuFill8
	add r0, r5, #0x0
	bl OverlayManager_FreeData
	add r0, r6, #0x0
	bl DestroyHeap
	mov r0, #0x1
	pop {r4-r6, pc}
	.balign 4