@@ -51,132 +51,3 @@ _02058CB0:
5151 . align 2 , 0
5252_02058CD4: .word TACTICS_UNLOCK_LEVEL_TABLE
5353 arm_func_end GetUnlockedTacticFlags
54-
55- arm_func_start CanLearnIqSkill
56- CanLearnIqSkill: ; 0x02058CD8
57- cmp r1 , # 0
58- moveq r0 , # 0
59- bxeq lr
60- ldr r2 , _02058D00 ; =IQ_SKILLS
61- ldr r1 , [ r2 , r1 , lsl # 2 ]
62- cmp r1 , r0
63- movle r0 , # 1
64- movgt r0 , # 0
65- and r0 , r0 , # 0xff
66- bx lr
67- . align 2 , 0
68- _02058D00: .word IQ_SKILLS
69- arm_func_end CanLearnIqSkill
70-
71- arm_func_start GetLearnableIqSkills
72- GetLearnableIqSkills: ; 0x02058D04
73- stmdb sp ! , {r3 , r4 , r5 , r6 , r7 , r8 , sb , sl , fp , lr}
74- mov r6 , # 0
75- mov sl , r0
76- mov sb , r1
77- mov r8 , r2
78- mov r5 , r6
79- ldr r4 , _02058DA0 ; =IQ_GROUP_SKILLS
80- mov fp , # 0x19
81- b _02058D74
82- _02058D28:
83- mov r0 , sb
84- bl GetIqGroup
85- mla r1 , r0 , fp , r4
86- and r0 , r5 , # 0xff
87- ldrb r7 , [ r0 , r1 ]
88- cmp r7 , # 0xff
89- beq _02058D7C
90- cmp r7 , # 0x18
91- bne _02058D58
92- mov r0 , # 3
93- bl GetPerformanceFlagWithChecks
94- b _02058D64
95- _02058D58:
96- mov r0 , r8
97- mov r1 , r7
98- bl CanLearnIqSkill
99- _02058D64:
100- cmp r0 , # 0
101- strneb r7 , [ sl , r6 ]
102- addne r6 , r6 , # 1
103- add r5 , r5 , # 1
104- _02058D74:
105- cmp r5 , # 0x19
106- blt _02058D28
107- _02058D7C:
108- mov r1 , r6
109- mov r0 , # 0
110- b _02058D90
111- _02058D88:
112- strb r0 , [ sl , r1 ]
113- add r1 , r1 , # 1
114- _02058D90:
115- cmp r1 , # 0x45
116- blt _02058D88
117- mov r0 , r6
118- ldmia sp ! , {r3 , r4 , r5 , r6 , r7 , r8 , sb , sl , fp , pc}
119- . align 2 , 0
120- _02058DA0: .word IQ_GROUP_SKILLS
121- arm_func_end GetLearnableIqSkills
122-
123- arm_func_start DisableIqSkill
124- DisableIqSkill: ; 0x02058DA4
125- stmdb sp ! , {r3 , r4 , r5 , lr}
126- mov r4 , r0
127- mov r5 , r1
128- bl IqSkillFlagTest
129- cmp r0 , # 0
130- beq _02058DE4
131- mov r0 , r5 , asr # 4
132- add r0 , r5 , r0 , lsr # 27
133- mov r2 , r0 , asr # 5
134- sub r0 , r5 , r2 , lsl # 5
135- mov r1 , # 1
136- mvn r0 , r1 , lsl r0
137- ldr r1 , [ r4 , r2 , lsl # 2 ]
138- and r0 , r1 , r0
139- str r0 , [ r4 , r2 , lsl # 2 ]
140- ldmia sp ! , {r3 , r4 , r5 , pc}
141- _02058DE4:
142- mov r0 , r4
143- mov r1 , r5
144- bl EnableIqSkill
145- ldmia sp ! , {r3 , r4 , r5 , pc}
146- arm_func_end DisableIqSkill
147-
148- arm_func_start EnableIqSkill
149- EnableIqSkill: ; 0x02058DF4
150- stmdb sp ! , {r4 , r5 , r6 , lr}
151- ldr r2 , _02058E64 ; =IQ_SKILL_RESTRICTIONS
152- mov r3 , r1 , lsl # 1
153- ldrsh ip , [ r2 , r3 ]
154- mov r3 , # 0
155- mov r4 , # 1
156- _02058E0C:
157- mov r5 , r3 , lsl # 1
158- ldrsh r5 , [ r2 , r5 ]
159- cmp ip , r5
160- bne _02058E3C
161- mov lr , r3 , asr # 4
162- add lr , r3 , lr , lsr # 27
163- mov r6 , lr , asr # 5
164- sub lr , r3 , r6 , lsl # 5
165- mvn lr , r4 , lsl lr
166- ldr r5 , [ r0 , r6 , lsl # 2 ]
167- and r5 , r5 , lr
168- str r5 , [ r0 , r6 , lsl # 2 ]
169- _02058E3C:
170- add r3 , r3 , # 1
171- cmp r3 , # 0x45
172- blt _02058E0C
173- mov ip , r1 , lsr # 5
174- ldr r3 , [ r0 , ip , lsl # 2 ]
175- sub r1 , r1 , ip , lsl # 5
176- mov r2 , # 1
177- orr r1 , r3 , r2 , lsl r1
178- str r1 , [ r0 , ip , lsl # 2 ]
179- ldmia sp ! , {r4 , r5 , r6 , pc}
180- . align 2 , 0
181- _02058E64: .word IQ_SKILL_RESTRICTIONS
182- arm_func_end EnableIqSkill
0 commit comments