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
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
|
.include "macros.inc"
.section .text, "ax"
.global GDSetCurrentMtx
GDSetCurrentMtx:
mflr r0
slwi r11, r4, 6
stw r0, 4(r1)
slwi r9, r9, 6
slwi r6, r6, 0x12
stwu r1, -0x50(r1)
slwi r7, r7, 0x18
stmw r23, 0x2c(r1)
lwz r23, 0x58(r1)
lwz r12, __GDCurrentDL@sda21(r13)
lwz r4, 8(r12)
lwz r0, 0xc(r12)
slwi r12, r5, 0xc
or r5, r3, r11
addi r3, r4, 1
cmplw r3, r0
or r4, r12, r5
or r5, r6, r4
slwi r3, r10, 0xc
or r0, r8, r9
slwi r4, r23, 0x12
or r0, r3, r0
or r24, r7, r5
or r23, r4, r0
ble lbl_800B28D4
bl GDOverflowed
lbl_800B28D4:
lwz r4, __GDCurrentDL@sda21(r13)
li r5, 8
lwz r3, 8(r4)
addi r0, r3, 1
stw r0, 8(r4)
stb r5, 0(r3)
lwz r4, __GDCurrentDL@sda21(r13)
lwz r3, 8(r4)
lwz r0, 0xc(r4)
addi r3, r3, 1
cmplw r3, r0
ble lbl_800B2908
bl GDOverflowed
lbl_800B2908:
lwz r4, __GDCurrentDL@sda21(r13)
li r5, 0x30
lwz r3, 8(r4)
addi r0, r3, 1
stw r0, 8(r4)
stb r5, 0(r3)
lwz r4, __GDCurrentDL@sda21(r13)
lwz r3, 8(r4)
lwz r0, 0xc(r4)
addi r3, r3, 4
cmplw r3, r0
ble lbl_800B293C
bl GDOverflowed
lbl_800B293C:
lwz r4, __GDCurrentDL@sda21(r13)
srwi r31, r24, 0x18
rlwinm r30, r24, 0x10, 0x18, 0x1f
lwz r3, 8(r4)
rlwinm r29, r24, 0x18, 0x18, 0x1f
clrlwi r28, r24, 0x18
addi r0, r3, 1
stw r0, 8(r4)
stb r31, 0(r3)
lwz r4, __GDCurrentDL@sda21(r13)
lwz r3, 8(r4)
addi r0, r3, 1
stw r0, 8(r4)
stb r30, 0(r3)
lwz r4, __GDCurrentDL@sda21(r13)
lwz r3, 8(r4)
addi r0, r3, 1
stw r0, 8(r4)
stb r29, 0(r3)
lwz r4, __GDCurrentDL@sda21(r13)
lwz r3, 8(r4)
addi r0, r3, 1
stw r0, 8(r4)
stb r24, 0(r3)
lwz r4, __GDCurrentDL@sda21(r13)
lwz r3, 8(r4)
lwz r0, 0xc(r4)
addi r3, r3, 1
cmplw r3, r0
ble lbl_800B29B8
bl GDOverflowed
lbl_800B29B8:
lwz r4, __GDCurrentDL@sda21(r13)
li r5, 8
lwz r3, 8(r4)
addi r0, r3, 1
stw r0, 8(r4)
stb r5, 0(r3)
lwz r4, __GDCurrentDL@sda21(r13)
lwz r3, 8(r4)
lwz r0, 0xc(r4)
addi r3, r3, 1
cmplw r3, r0
ble lbl_800B29EC
bl GDOverflowed
lbl_800B29EC:
lwz r4, __GDCurrentDL@sda21(r13)
li r5, 0x40
lwz r3, 8(r4)
addi r0, r3, 1
stw r0, 8(r4)
stb r5, 0(r3)
lwz r4, __GDCurrentDL@sda21(r13)
lwz r3, 8(r4)
lwz r0, 0xc(r4)
addi r3, r3, 4
cmplw r3, r0
ble lbl_800B2A20
bl GDOverflowed
lbl_800B2A20:
lwz r4, __GDCurrentDL@sda21(r13)
srwi r27, r23, 0x18
rlwinm r26, r23, 0x10, 0x18, 0x1f
lwz r3, 8(r4)
rlwinm r25, r23, 0x18, 0x18, 0x1f
clrlwi r24, r23, 0x18
addi r0, r3, 1
stw r0, 8(r4)
stb r27, 0(r3)
lwz r4, __GDCurrentDL@sda21(r13)
lwz r3, 8(r4)
addi r0, r3, 1
stw r0, 8(r4)
stb r26, 0(r3)
lwz r4, __GDCurrentDL@sda21(r13)
lwz r3, 8(r4)
addi r0, r3, 1
stw r0, 8(r4)
stb r25, 0(r3)
lwz r4, __GDCurrentDL@sda21(r13)
lwz r3, 8(r4)
addi r0, r3, 1
stw r0, 8(r4)
stb r23, 0(r3)
lwz r4, __GDCurrentDL@sda21(r13)
lwz r3, 8(r4)
lwz r0, 0xc(r4)
addi r3, r3, 1
cmplw r3, r0
ble lbl_800B2A9C
bl GDOverflowed
lbl_800B2A9C:
lwz r4, __GDCurrentDL@sda21(r13)
li r5, 0x10
lwz r3, 8(r4)
addi r0, r3, 1
stw r0, 8(r4)
stb r5, 0(r3)
lwz r4, __GDCurrentDL@sda21(r13)
lwz r3, 8(r4)
lwz r0, 0xc(r4)
addi r3, r3, 2
cmplw r3, r0
ble lbl_800B2AD0
bl GDOverflowed
lbl_800B2AD0:
lwz r4, __GDCurrentDL@sda21(r13)
li r6, 0
li r5, 1
lwz r3, 8(r4)
addi r0, r3, 1
stw r0, 8(r4)
stb r6, 0(r3)
lwz r4, __GDCurrentDL@sda21(r13)
lwz r3, 8(r4)
addi r0, r3, 1
stw r0, 8(r4)
stb r5, 0(r3)
lwz r4, __GDCurrentDL@sda21(r13)
lwz r3, 8(r4)
lwz r0, 0xc(r4)
addi r3, r3, 2
cmplw r3, r0
ble lbl_800B2B1C
bl GDOverflowed
lbl_800B2B1C:
lwz r4, __GDCurrentDL@sda21(r13)
li r6, 0x10
li r5, 0x18
lwz r3, 8(r4)
addi r0, r3, 1
stw r0, 8(r4)
stb r6, 0(r3)
lwz r4, __GDCurrentDL@sda21(r13)
lwz r3, 8(r4)
addi r0, r3, 1
stw r0, 8(r4)
stb r5, 0(r3)
lwz r4, __GDCurrentDL@sda21(r13)
lwz r3, 8(r4)
lwz r0, 0xc(r4)
addi r3, r3, 4
cmplw r3, r0
ble lbl_800B2B68
bl GDOverflowed
lbl_800B2B68:
lwz r4, __GDCurrentDL@sda21(r13)
lwz r3, 8(r4)
addi r0, r3, 1
stw r0, 8(r4)
stb r31, 0(r3)
lwz r4, __GDCurrentDL@sda21(r13)
lwz r3, 8(r4)
addi r0, r3, 1
stw r0, 8(r4)
stb r30, 0(r3)
lwz r4, __GDCurrentDL@sda21(r13)
lwz r3, 8(r4)
addi r0, r3, 1
stw r0, 8(r4)
stb r29, 0(r3)
lwz r4, __GDCurrentDL@sda21(r13)
lwz r3, 8(r4)
addi r0, r3, 1
stw r0, 8(r4)
stb r28, 0(r3)
lwz r4, __GDCurrentDL@sda21(r13)
lwz r3, 8(r4)
lwz r0, 0xc(r4)
addi r3, r3, 4
cmplw r3, r0
ble lbl_800B2BD4
bl GDOverflowed
lbl_800B2BD4:
lwz r4, __GDCurrentDL@sda21(r13)
lwz r3, 8(r4)
addi r0, r3, 1
stw r0, 8(r4)
stb r27, 0(r3)
lwz r4, __GDCurrentDL@sda21(r13)
lwz r3, 8(r4)
addi r0, r3, 1
stw r0, 8(r4)
stb r26, 0(r3)
lwz r4, __GDCurrentDL@sda21(r13)
lwz r3, 8(r4)
addi r0, r3, 1
stw r0, 8(r4)
stb r25, 0(r3)
lwz r4, __GDCurrentDL@sda21(r13)
lwz r3, 8(r4)
addi r0, r3, 1
stw r0, 8(r4)
stb r24, 0(r3)
lwz r0, 0x54(r1)
lmw r23, 0x2c(r1)
addi r1, r1, 0x50
mtlr r0
blr
|