forked from jeffman/Mother2GbaTranslation
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathm2-subC87D0.txt
519 lines (509 loc) · 17.8 KB
/
m2-subC87D0.txt
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
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
m2_drawwindow:
// r0: window pointer
080C87D0 (T) push {r4-r7,r14}
080C87D2 (T) mov r7,r10
080C87D4 (T) mov r6,r9
080C87D6 (T) mov r5,r8
080C87D8 (T) push {r5-r7}
080C87DA (T) mov r6,r0
// Compute tilemap pointer
080C87DC (T) ldr r4,=#0x3005270
080C87DE (T) mov r1,#0x24
080C87E0 (T) ldsh r0,[r6,r1] // r0 = window_y
080C87E2 (T) lsl r0,r0,#0x6
080C87E4 (T) ldr r1,[r4] // r1 = tilemap pointer
080C87E6 (T) add r1,r1,r0
080C87E8 (T) mov r2,#0x22
080C87EA (T) ldsh r0,[r6,r2] // r0 = window_x
080C87EC (T) lsl r0,r0,#0x1
080C87EE (T) add r5,r1,r0 // r5 = tilemap + (window_y * 64) + (window_x * 2)
// Prepare tile 0x1FF: r0 = r8 = 0xE000 | (0x1FF + 0x100) = 0xE2FF
080C87F0 (T) mov r3,#0x0
080C87F2 (T) mov r12,r3
080C87F4 (T) mov r9,r3
080C87F6 (T) ldr r3,=#0x30051EC
080C87F8 (T) ldr r1,=#0x1FF
080C87FA (T) mov r0,r1
080C87FC (T) ldrh r2,[r3]
080C87FE (T) add r0,r0,r2
080C8800 (T) ldr r2,=#0x3005228
080C8802 (T) ldrh r1,[r2]
080C8804 (T) orr r0,r1
080C8806 (T) lsl r0,r0,#0x10
080C8808 (T) lsr r0,r0,#0x10
080C880A (T) mov r8,r0
int current_x = 0;
int current_y = 0;
int tilemap = ldr[0x3005270];
u16 *ptr = tilemap + (window_y * 64) + (window_x * 2);
for (int current_area = 0; current_area < window_area; current_area++)
{
if (current_x >= window_width || window_x + current_x > 0x1F)
{
if (current_y >= window_height || window_y + current_y > 0x1F)
break;
// 80C884A
current_x = 0;
current_y++;
int y = current_y + window_y;
*ptr = tilemap + (y * 64) + (window_x * 2);
}
*ptr = 0xE2FF;
current_x++;
ptr += 2;
}
080C880C (T) mov r7,#0x0
080C880E (T) mov r1,#0x20
080C8810 (T) ldsh r0,[r6,r1] // window area
080C8812 (T) mov r10,r4 // 0x3005270
080C8814 (T) cmp r7,r0
080C8816 (T) bge #0x80C888C
080C8818 (T) mov r2,r10
080C881A (T) mov r3,r12 // x counter
080C881C (T) lsl r0,r3,#0x10
080C881E (T) asr r1,r0,#0x10
080C8820 (T) mov r4,#0x26
080C8822 (T) ldsh r0,[r6,r4] // window width
080C8824 (T) cmp r1,r0
080C8826 (T) bge #0x80C8832
080C8828 (T) mov r3,#0x22
080C882A (T) ldsh r0,[r6,r3] // window x
080C882C (T) add r0,r0,r1
080C882E (T) cmp r0,#0x1F
080C8830 (T) ble #0x80C8868
080C8832 (T) mov r4,r9 // y counter
080C8834 (T) lsl r0,r4,#0x10
080C8836 (T) asr r1,r0,#0x10
080C8838 (T) mov r5,#0x28
080C883A (T) ldsh r0,[r6,r5] // window height
080C883C (T) cmp r1,r0
080C883E (T) bge #0x80C888C
080C8840 (T) mov r0,#0x24
080C8842 (T) ldsh r5,[r6,r0] // window y
080C8844 (T) add r0,r5,r1
080C8846 (T) cmp r0,#0x1F
080C8848 (T) bgt #0x80C888C
080C884A (T) mov r3,#0x0
080C884C (T) mov r12,r3
080C884E (T) add r0,r1,1
080C8850 (T) lsl r0,r0,#0x10
080C8852 (T) lsr r4,r0,#0x10
080C8854 (T) mov r9,r4
080C8856 (T) asr r0,r0,#0x10
080C8858 (T) add r0,r5,r0
080C885A (T) lsl r0,r0,#0x6
080C885C (T) ldr r1,[r2] // 0x3005270
080C885E (T) add r1,r1,r0
080C8860 (T) mov r5,#0x22
080C8862 (T) ldsh r0,[r6,r5] // window x
080C8864 (T) lsl r0,r0,#0x1
080C8866 (T) add r5,r1,r0
080C8868 (T) mov r0,r8
080C886A (T) strh r0,[r5]
080C886C (T) mov r1,r12
080C886E (T) lsl r0,r1,#0x10
080C8870 (T) mov r3,#0x80
080C8872 (T) lsl r3,r3,#0x9
080C8874 (T) add r0,r0,r3
080C8876 (T) lsr r0,r0,#0x10
080C8878 (T) mov r12,r0
080C887A (T) lsl r1,r7,#0x10
080C887C (T) add r1,r1,r3
080C887E (T) add r5,#0x2
080C8880 (T) lsr r7,r1,#0x10
080C8882 (T) asr r1,r1,#0x10
080C8884 (T) mov r4,#0x20
080C8886 (T) ldsh r0,[r6,r4]
080C8888 (T) cmp r1,r0
080C888A (T) blt #0x80C881A
080C888C (T) mov r0,#0x0
080C888E (T) strh r0,[r6,#0x32] // ?
// It seems the remaining code draws the window borders
080C8890 (T) ldr r5,=#0x30051EC
080C8892 (T) ldrh r5,[r5] // tile offset
080C8894 (T) mov r12,r5
080C8896 (T) ldr r0,=#0x1DF
080C8898 (T) add r0,r12
080C889A (T) ldr r1,=#0x3005228
080C889C (T) ldrh r4,[r1]
080C889E (T) orr r0,r4
080C88A0 (T) lsl r0,r0,#0x10
080C88A2 (T) lsr r0,r0,#0x10
080C88A4 (T) mov r8,r0
080C88A6 (T) mov r2,#0x22
080C88A8 (T) ldsh r3,[r6,r2]
080C88AA (T) sub r0,r3,1
080C88AC (T) cmp r0,#0x0
080C88AE (T) blt #0x80C88CE
080C88B0 (T) mov r5,#0x26
080C88B2 (T) ldsh r0,[r6,r5]
080C88B4 (T) add r0,r3,r0
080C88B6 (T) cmp r0,#0x1F
080C88B8 (T) bgt #0x80C88CE
080C88BA (T) mov r0,#0x24
080C88BC (T) ldsh r5,[r6,r0]
080C88BE (T) sub r1,r5,1
080C88C0 (T) cmp r1,#0x0
080C88C2 (T) blt #0x80C88CE
080C88C4 (T) mov r2,#0x28
080C88C6 (T) ldsh r0,[r6,r2]
080C88C8 (T) add r0,r5,r0
080C88CA (T) cmp r0,#0x1F
080C88CC (T) ble #0x80C88E8
080C88CE (T) mov r0,#0x1
080C88D0 (T) neg r0,r0
080C88D2 (T) b #0x80C8B8A
080C88D4 (T) strh r0,[r6,r1]
080C88D6 (T) lsl r0,r0,#0xC
080C88D8 (T) str r4,[r5,r7]
080C88DA (T) lsl r0,r0,#0xC
080C88DC (T) lsl r7,r7,#0x7
080C88DE (T) lsl r0,r0,#0x0
080C88E0 (T) strh r0,[r5,r0]
080C88E2 (T) lsl r0,r0,#0xC
080C88E4 (T) lsl r7,r3,#0x7
080C88E6 (T) lsl r0,r0,#0x0
080C88E8 (T) mov r2,r12
080C88EA (T) add r2,#0x93
080C88EC (T) orr r2,r4
080C88EE (T) mov r5,#0xC0
080C88F0 (T) lsl r5,r5,#0x4
080C88F2 (T) mov r9,r5
080C88F4 (T) mov r0,r9
080C88F6 (T) orr r2,r0
080C88F8 (T) lsl r0,r2,#0x10
080C88FA (T) lsr r7,r0,#0x10
080C88FC (T) lsl r1,r1,#0x6
080C88FE (T) mov r5,r10
080C8900 (T) ldr r0,[r5]
080C8902 (T) add r0,r0,r1
080C8904 (T) lsl r1,r3,#0x1
080C8906 (T) add r0,r0,r1
080C8908 (T) sub r5,r0,2
080C890A (T) ldrh r0,[r5]
080C890C (T) cmp r0,r8
080C890E (T) beq #0x80C8914
080C8910 (T) cmp r0,r7
080C8912 (T) bne #0x80C8918
080C8914 (T) strh r2,[r5]
080C8916 (T) b #0x80C8924
080C8918 (T) mov r0,r12
080C891A (T) add r0,#0x94
080C891C (T) orr r0,r4
080C891E (T) mov r1,r9
080C8920 (T) orr r0,r1
080C8922 (T) strh r0,[r5]
080C8924 (T) ldr r2,=#0x30051EC
080C8926 (T) ldrh r4,[r2]
080C8928 (T) mov r2,r4
080C892A (T) add r2,#0x93
080C892C (T) ldr r5,=#0x3005228
080C892E (T) ldrh r3,[r5]
080C8930 (T) orr r2,r3
080C8932 (T) mov r0,#0x80
080C8934 (T) lsl r0,r0,#0x4
080C8936 (T) mov r9,r0
080C8938 (T) mov r1,r9
080C893A (T) orr r2,r1
080C893C (T) lsl r0,r2,#0x10
080C893E (T) lsr r7,r0,#0x10
080C8940 (T) mov r5,#0x24
080C8942 (T) ldsh r0,[r6,r5]
080C8944 (T) sub r0,#0x1
080C8946 (T) lsl r0,r0,#0x6
080C8948 (T) mov r5,r10
080C894A (T) ldr r1,[r5]
080C894C (T) add r1,r1,r0
080C894E (T) mov r5,#0x22
080C8950 (T) ldsh r0,[r6,r5]
080C8952 (T) lsl r0,r0,#0x1
080C8954 (T) add r1,r1,r0
080C8956 (T) mov r5,#0x26
080C8958 (T) ldsh r0,[r6,r5]
080C895A (T) lsl r0,r0,#0x1
080C895C (T) add r5,r1,r0
080C895E (T) ldrh r0,[r5]
080C8960 (T) cmp r0,r8
080C8962 (T) beq #0x80C8968
080C8964 (T) cmp r0,r7
080C8966 (T) bne #0x80C8974
080C8968 (T) strh r2,[r5]
080C896A (T) b #0x80C8980
080C896C (T) str r4,[r5,r7]
080C896E (T) lsl r0,r0,#0xC
080C8970 (T) strh r0,[r5,r0]
080C8972 (T) lsl r0,r0,#0xC
080C8974 (T) mov r0,r4
080C8976 (T) add r0,#0x94
080C8978 (T) orr r0,r3
080C897A (T) mov r1,r9
080C897C (T) orr r0,r1
080C897E (T) strh r0,[r5]
080C8980 (T) ldr r2,=#0x30051EC
080C8982 (T) ldrh r4,[r2]
080C8984 (T) mov r2,r4
080C8986 (T) add r2,#0x93
080C8988 (T) ldr r5,=#0x3005228
080C898A (T) ldrh r3,[r5]
080C898C (T) orr r2,r3
080C898E (T) mov r0,#0x80
080C8990 (T) lsl r0,r0,#0x3
080C8992 (T) mov r9,r0
080C8994 (T) mov r1,r9
080C8996 (T) orr r2,r1
080C8998 (T) lsl r0,r2,#0x10
080C899A (T) lsr r7,r0,#0x10
080C899C (T) mov r5,#0x24
080C899E (T) ldsh r0,[r6,r5]
080C89A0 (T) mov r5,#0x28
080C89A2 (T) ldsh r1,[r6,r5]
080C89A4 (T) add r0,r0,r1
080C89A6 (T) lsl r0,r0,#0x6
080C89A8 (T) mov r5,r10
080C89AA (T) ldr r1,[r5]
080C89AC (T) add r1,r1,r0
080C89AE (T) mov r5,#0x22
080C89B0 (T) ldsh r0,[r6,r5]
080C89B2 (T) lsl r0,r0,#0x1
080C89B4 (T) add r1,r1,r0
080C89B6 (T) sub r5,r1,2
080C89B8 (T) ldrh r0,[r5]
080C89BA (T) cmp r0,r8
080C89BC (T) beq #0x80C89C2
080C89BE (T) cmp r0,r7
080C89C0 (T) bne #0x80C89D0
080C89C2 (T) strh r2,[r5]
080C89C4 (T) b #0x80C89DC
080C89C6 (T) lsl r0,r0,#0x0
080C89C8 (T) str r4,[r5,r7]
080C89CA (T) lsl r0,r0,#0xC
080C89CC (T) strh r0,[r5,r0]
080C89CE (T) lsl r0,r0,#0xC
080C89D0 (T) mov r0,r4
080C89D2 (T) add r0,#0x94
080C89D4 (T) orr r0,r3
080C89D6 (T) mov r1,r9
080C89D8 (T) orr r0,r1
080C89DA (T) strh r0,[r5]
080C89DC (T) ldr r2,=#0x30051EC
080C89DE (T) ldrh r4,[r2]
080C89E0 (T) mov r2,r4
080C89E2 (T) add r2,#0x93
080C89E4 (T) ldr r5,=#0x3005228
080C89E6 (T) ldrh r3,[r5]
080C89E8 (T) orr r2,r3
080C89EA (T) lsl r0,r2,#0x10
080C89EC (T) lsr r7,r0,#0x10
080C89EE (T) mov r1,#0x24
080C89F0 (T) ldsh r0,[r6,r1]
080C89F2 (T) mov r5,#0x28
080C89F4 (T) ldsh r1,[r6,r5]
080C89F6 (T) add r0,r0,r1
080C89F8 (T) lsl r0,r0,#0x6
080C89FA (T) mov r5,r10
080C89FC (T) ldr r1,[r5]
080C89FE (T) add r1,r1,r0
080C8A00 (T) mov r5,#0x22
080C8A02 (T) ldsh r0,[r6,r5]
080C8A04 (T) lsl r0,r0,#0x1
080C8A06 (T) add r1,r1,r0
080C8A08 (T) mov r5,#0x26
080C8A0A (T) ldsh r0,[r6,r5]
080C8A0C (T) lsl r0,r0,#0x1
080C8A0E (T) add r5,r1,r0
080C8A10 (T) ldrh r0,[r5]
080C8A12 (T) cmp r0,r8
080C8A14 (T) beq #0x80C8A1A
080C8A16 (T) cmp r0,r7
080C8A18 (T) bne #0x80C8A28
080C8A1A (T) strh r2,[r5]
080C8A1C (T) b #0x80C8A30
080C8A1E (T) lsl r0,r0,#0x0
080C8A20 (T) str r4,[r5,r7]
080C8A22 (T) lsl r0,r0,#0xC
080C8A24 (T) strh r0,[r5,r0]
080C8A26 (T) lsl r0,r0,#0xC
080C8A28 (T) mov r0,r4
080C8A2A (T) add r0,#0x94
080C8A2C (T) orr r0,r3
080C8A2E (T) strh r0,[r5]
080C8A30 (T) mov r1,#0x24
080C8A32 (T) ldsh r0,[r6,r1]
080C8A34 (T) sub r0,#0x1
080C8A36 (T) lsl r0,r0,#0x6
080C8A38 (T) mov r2,r10
080C8A3A (T) ldr r1,[r2]
080C8A3C (T) add r1,r1,r0
080C8A3E (T) mov r3,#0x22
080C8A40 (T) ldsh r0,[r6,r3]
080C8A42 (T) lsl r0,r0,#0x1
080C8A44 (T) add r5,r1,r0
080C8A46 (T) mov r7,#0x0
080C8A48 (T) mov r4,#0x26
080C8A4A (T) ldsh r0,[r6,r4]
080C8A4C (T) ldr r2,[r6]
080C8A4E (T) ldr r1,=#0x3000A0E
080C8A50 (T) mov r9,r1
080C8A52 (T) cmp r7,r0
080C8A54 (T) bge #0x80C8A8A
080C8A56 (T) ldr r3,=#0x30051EC
080C8A58 (T) mov r8,r3
080C8A5A (T) ldr r4,=#0x3005228
080C8A5C (T) mov r12,r4
080C8A5E (T) mov r0,#0x80
080C8A60 (T) lsl r0,r0,#0x4
080C8A62 (T) mov r3,r0
080C8A64 (T) mov r1,r8
080C8A66 (T) ldrh r0,[r1]
080C8A68 (T) add r0,#0x96
080C8A6A (T) mov r4,r12
080C8A6C (T) ldrh r1,[r4]
080C8A6E (T) orr r0,r1
080C8A70 (T) orr r0,r3
080C8A72 (T) strh r0,[r5]
080C8A74 (T) lsl r1,r7,#0x10
080C8A76 (T) mov r0,#0x80
080C8A78 (T) lsl r0,r0,#0x9
080C8A7A (T) add r1,r1,r0
080C8A7C (T) add r5,#0x2
080C8A7E (T) lsr r7,r1,#0x10
080C8A80 (T) asr r1,r1,#0x10
080C8A82 (T) mov r4,#0x26
080C8A84 (T) ldsh r0,[r6,r4]
080C8A86 (T) cmp r1,r0
080C8A88 (T) blt #0x80C8A64
080C8A8A (T) mov r5,#0x24
080C8A8C (T) ldsh r0,[r6,r5]
080C8A8E (T) mov r3,#0x28
080C8A90 (T) ldsh r1,[r6,r3]
080C8A92 (T) add r0,r0,r1
080C8A94 (T) lsl r0,r0,#0x6
080C8A96 (T) mov r4,r10
080C8A98 (T) ldr r1,[r4]
080C8A9A (T) add r1,r1,r0
080C8A9C (T) mov r5,#0x22
080C8A9E (T) ldsh r0,[r6,r5]
080C8AA0 (T) lsl r0,r0,#0x1
080C8AA2 (T) add r5,r1,r0
080C8AA4 (T) mov r7,#0x0
080C8AA6 (T) mov r1,#0x26
080C8AA8 (T) ldsh r0,[r6,r1]
080C8AAA (T) cmp r7,r0
080C8AAC (T) bge #0x80C8AD6
080C8AAE (T) ldr r3,=#0x30051EC
080C8AB0 (T) mov r8,r3
080C8AB2 (T) ldr r3,=#0x3005228
080C8AB4 (T) mov r4,r8
080C8AB6 (T) ldrh r0,[r4]
080C8AB8 (T) add r0,#0x96
080C8ABA (T) ldrh r1,[r3]
080C8ABC (T) orr r0,r1
080C8ABE (T) strh r0,[r5]
080C8AC0 (T) lsl r1,r7,#0x10
080C8AC2 (T) mov r0,#0x80
080C8AC4 (T) lsl r0,r0,#0x9
080C8AC6 (T) add r1,r1,r0
080C8AC8 (T) add r5,#0x2
080C8ACA (T) lsr r7,r1,#0x10
080C8ACC (T) asr r1,r1,#0x10
080C8ACE (T) mov r4,#0x26
080C8AD0 (T) ldsh r0,[r6,r4]
080C8AD2 (T) cmp r1,r0
080C8AD4 (T) blt #0x80C8AB4
080C8AD6 (T) mov r5,#0x24
080C8AD8 (T) ldsh r0,[r6,r5]
080C8ADA (T) lsl r0,r0,#0x6
080C8ADC (T) mov r3,r10
080C8ADE (T) ldr r1,[r3]
080C8AE0 (T) add r1,r1,r0
080C8AE2 (T) mov r4,#0x22
080C8AE4 (T) ldsh r0,[r6,r4]
080C8AE6 (T) lsl r0,r0,#0x1
080C8AE8 (T) add r1,r1,r0
080C8AEA (T) sub r5,r1,2
080C8AEC (T) mov r7,#0x0
080C8AEE (T) mov r1,#0x28
080C8AF0 (T) ldsh r0,[r6,r1]
080C8AF2 (T) cmp r7,r0
080C8AF4 (T) bge #0x80C8B2A
080C8AF6 (T) ldr r3,=#0x30051EC
080C8AF8 (T) mov r8,r3
080C8AFA (T) ldr r4,=#0x3005228
080C8AFC (T) mov r12,r4
080C8AFE (T) mov r0,#0x80
080C8B00 (T) lsl r0,r0,#0x3
080C8B02 (T) mov r3,r0
080C8B04 (T) mov r1,r8
080C8B06 (T) ldrh r0,[r1]
080C8B08 (T) add r0,#0x95
080C8B0A (T) mov r4,r12
080C8B0C (T) ldrh r1,[r4]
080C8B0E (T) orr r0,r1
080C8B10 (T) orr r0,r3
080C8B12 (T) strh r0,[r5]
080C8B14 (T) lsl r1,r7,#0x10
080C8B16 (T) mov r0,#0x80
080C8B18 (T) lsl r0,r0,#0x9
080C8B1A (T) add r1,r1,r0
080C8B1C (T) add r5,#0x40
080C8B1E (T) lsr r7,r1,#0x10
080C8B20 (T) asr r1,r1,#0x10
080C8B22 (T) mov r4,#0x28
080C8B24 (T) ldsh r0,[r6,r4]
080C8B26 (T) cmp r1,r0
080C8B28 (T) blt #0x80C8B04
080C8B2A (T) mov r5,#0x24
080C8B2C (T) ldsh r0,[r6,r5]
080C8B2E (T) lsl r0,r0,#0x6
080C8B30 (T) mov r3,r10
080C8B32 (T) ldr r1,[r3]
080C8B34 (T) add r1,r1,r0
080C8B36 (T) mov r4,#0x22
080C8B38 (T) ldsh r0,[r6,r4]
080C8B3A (T) lsl r0,r0,#0x1
080C8B3C (T) add r1,r1,r0
080C8B3E (T) mov r5,#0x26
080C8B40 (T) ldsh r0,[r6,r5]
080C8B42 (T) lsl r0,r0,#0x1
080C8B44 (T) add r5,r1,r0
080C8B46 (T) mov r7,#0x0
080C8B48 (T) mov r1,#0x28
080C8B4A (T) ldsh r0,[r6,r1]
080C8B4C (T) cmp r7,r0
080C8B4E (T) bge #0x80C8B78
080C8B50 (T) ldr r3,=#0x30051EC
080C8B52 (T) mov r8,r3
080C8B54 (T) ldr r3,=#0x3005228
080C8B56 (T) mov r4,r8
080C8B58 (T) ldrh r0,[r4]
080C8B5A (T) add r0,#0x95
080C8B5C (T) ldrh r1,[r3]
080C8B5E (T) orr r0,r1
080C8B60 (T) strh r0,[r5]
080C8B62 (T) lsl r1,r7,#0x10
080C8B64 (T) mov r0,#0x80
080C8B66 (T) lsl r0,r0,#0x9
080C8B68 (T) add r1,r1,r0
080C8B6A (T) add r5,#0x40
080C8B6C (T) lsr r7,r1,#0x10
080C8B6E (T) asr r1,r1,#0x10
080C8B70 (T) mov r4,#0x28
080C8B72 (T) ldsh r0,[r6,r4]
080C8B74 (T) cmp r1,r0
080C8B76 (T) blt #0x80C8B56
080C8B78 (T) mov r0,#0x21
080C8B7A (T) neg r0,r0
080C8B7C (T) and r2,r0
080C8B7E (T) mov r0,#0x1
080C8B80 (T) orr r2,r0
080C8B82 (T) str r2,[r6]
080C8B84 (T) mov r5,r9
080C8B86 (T) strh r0,[r5]
080C8B88 (T) mov r0,#0x0
080C8B8A (T) pop {r3-r5}
080C8B8C (T) mov r8,r3
080C8B8E (T) mov r9,r4
080C8B90 (T) mov r10,r5
080C8B92 (T) pop {r4-r7}
080C8B94 (T) pop {r1}
080C8B96 (T) bx r1