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
|