summaryrefslogtreecommitdiff
path: root/asm/SDK/VF/pf_cp932.s
blob: 2dcc524472824f15e3aa9e6ab989be94409ecd57 (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
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
.include "macros.inc"

.section .text, "ax"  # 0x80006980 - 0x803E1E60

.global VFiPFCODE_CP932_OEM2Unicode
VFiPFCODE_CP932_OEM2Unicode:
/* 80319C00 00315860  88 A3 00 00 */	lbz r5, 0(r3)
/* 80319C04 00315864  88 63 00 01 */	lbz r3, 1(r3)
/* 80319C08 00315868  28 05 00 80 */	cmplwi r5, 0x80
/* 80319C0C 0031586C  40 80 00 14 */	bge lbl_80319C20
/* 80319C10 00315870  B0 A4 00 00 */	sth r5, 0(r4)
/* 80319C14 00315874  38 60 00 01 */	li r3, 1
/* 80319C18 00315878  38 80 00 02 */	li r4, 2
/* 80319C1C 0031587C  4B FE B5 78 */	b VFiPFCODE_Combine_Width
lbl_80319C20:
/* 80319C20 00315880  28 05 00 A1 */	cmplwi r5, 0xa1
/* 80319C24 00315884  41 80 00 24 */	blt lbl_80319C48
/* 80319C28 00315888  28 05 00 DF */	cmplwi r5, 0xdf
/* 80319C2C 0031588C  41 81 00 1C */	bgt lbl_80319C48
/* 80319C30 00315890  3C 65 00 01 */	addis r3, r5, 1
/* 80319C34 00315894  38 03 FE C0 */	addi r0, r3, -320
/* 80319C38 00315898  B0 04 00 00 */	sth r0, 0(r4)
/* 80319C3C 0031589C  38 60 00 01 */	li r3, 1
/* 80319C40 003158A0  38 80 00 02 */	li r4, 2
/* 80319C44 003158A4  4B FE B5 50 */	b VFiPFCODE_Combine_Width
lbl_80319C48:
/* 80319C48 003158A8  28 05 00 80 */	cmplwi r5, 0x80
/* 80319C4C 003158AC  41 82 00 4C */	beq lbl_80319C98
/* 80319C50 003158B0  28 05 00 85 */	cmplwi r5, 0x85
/* 80319C54 003158B4  41 82 00 44 */	beq lbl_80319C98
/* 80319C58 003158B8  28 05 00 86 */	cmplwi r5, 0x86
/* 80319C5C 003158BC  41 82 00 3C */	beq lbl_80319C98
/* 80319C60 003158C0  28 05 00 A0 */	cmplwi r5, 0xa0
/* 80319C64 003158C4  41 82 00 34 */	beq lbl_80319C98
/* 80319C68 003158C8  28 05 00 EB */	cmplwi r5, 0xeb
/* 80319C6C 003158CC  41 82 00 2C */	beq lbl_80319C98
/* 80319C70 003158D0  28 05 00 EC */	cmplwi r5, 0xec
/* 80319C74 003158D4  41 82 00 24 */	beq lbl_80319C98
/* 80319C78 003158D8  28 05 00 EF */	cmplwi r5, 0xef
/* 80319C7C 003158DC  41 80 00 0C */	blt lbl_80319C88
/* 80319C80 003158E0  28 05 00 F9 */	cmplwi r5, 0xf9
/* 80319C84 003158E4  40 81 00 14 */	ble lbl_80319C98
lbl_80319C88:
/* 80319C88 003158E8  28 05 00 FD */	cmplwi r5, 0xfd
/* 80319C8C 003158EC  41 80 00 20 */	blt lbl_80319CAC
/* 80319C90 003158F0  28 05 00 FF */	cmplwi r5, 0xff
/* 80319C94 003158F4  40 82 00 18 */	bne lbl_80319CAC
lbl_80319C98:
/* 80319C98 003158F8  38 00 00 5F */	li r0, 0x5f
/* 80319C9C 003158FC  38 60 00 01 */	li r3, 1
/* 80319CA0 00315900  B0 04 00 00 */	sth r0, 0(r4)
/* 80319CA4 00315904  38 80 00 02 */	li r4, 2
/* 80319CA8 00315908  4B FE B4 EC */	b VFiPFCODE_Combine_Width
lbl_80319CAC:
/* 80319CAC 0031590C  28 03 00 FD */	cmplwi r3, 0xfd
/* 80319CB0 00315910  41 80 00 18 */	blt lbl_80319CC8
/* 80319CB4 00315914  38 00 00 5F */	li r0, 0x5f
/* 80319CB8 00315918  38 60 00 01 */	li r3, 1
/* 80319CBC 0031591C  B0 04 00 00 */	sth r0, 0(r4)
/* 80319CC0 00315920  38 80 00 02 */	li r4, 2
/* 80319CC4 00315924  4B FE B4 D0 */	b VFiPFCODE_Combine_Width
lbl_80319CC8:
/* 80319CC8 00315928  28 05 00 81 */	cmplwi r5, 0x81
/* 80319CCC 0031592C  41 80 00 14 */	blt lbl_80319CE0
/* 80319CD0 00315930  28 05 00 84 */	cmplwi r5, 0x84
/* 80319CD4 00315934  41 81 00 0C */	bgt lbl_80319CE0
/* 80319CD8 00315938  38 05 FF 7F */	addi r0, r5, -129
/* 80319CDC 0031593C  48 00 00 78 */	b lbl_80319D54
lbl_80319CE0:
/* 80319CE0 00315940  28 05 00 87 */	cmplwi r5, 0x87
/* 80319CE4 00315944  41 80 00 14 */	blt lbl_80319CF8
/* 80319CE8 00315948  28 05 00 9F */	cmplwi r5, 0x9f
/* 80319CEC 0031594C  41 81 00 0C */	bgt lbl_80319CF8
/* 80319CF0 00315950  38 05 FF 7D */	addi r0, r5, -131
/* 80319CF4 00315954  48 00 00 60 */	b lbl_80319D54
lbl_80319CF8:
/* 80319CF8 00315958  28 05 00 E0 */	cmplwi r5, 0xe0
/* 80319CFC 0031595C  41 80 00 14 */	blt lbl_80319D10
/* 80319D00 00315960  28 05 00 EA */	cmplwi r5, 0xea
/* 80319D04 00315964  41 81 00 0C */	bgt lbl_80319D10
/* 80319D08 00315968  38 05 FF 3D */	addi r0, r5, -195
/* 80319D0C 0031596C  48 00 00 48 */	b lbl_80319D54
lbl_80319D10:
/* 80319D10 00315970  28 05 00 ED */	cmplwi r5, 0xed
/* 80319D14 00315974  41 80 00 14 */	blt lbl_80319D28
/* 80319D18 00315978  28 05 00 EE */	cmplwi r5, 0xee
/* 80319D1C 0031597C  41 81 00 0C */	bgt lbl_80319D28
/* 80319D20 00315980  38 05 FF 3B */	addi r0, r5, -197
/* 80319D24 00315984  48 00 00 30 */	b lbl_80319D54
lbl_80319D28:
/* 80319D28 00315988  28 05 00 FA */	cmplwi r5, 0xfa
/* 80319D2C 0031598C  41 80 00 14 */	blt lbl_80319D40
/* 80319D30 00315990  28 05 00 FC */	cmplwi r5, 0xfc
/* 80319D34 00315994  41 81 00 0C */	bgt lbl_80319D40
/* 80319D38 00315998  38 05 FF 30 */	addi r0, r5, -208
/* 80319D3C 0031599C  48 00 00 18 */	b lbl_80319D54
lbl_80319D40:
/* 80319D40 003159A0  38 00 00 5F */	li r0, 0x5f
/* 80319D44 003159A4  38 60 00 01 */	li r3, 1
/* 80319D48 003159A8  B0 04 00 00 */	sth r0, 0(r4)
/* 80319D4C 003159AC  38 80 00 02 */	li r4, 2
/* 80319D50 003159B0  4B FE B4 44 */	b VFiPFCODE_Combine_Width
lbl_80319D54:
/* 80319D54 003159B4  34 63 FF C0 */	addic. r3, r3, -64
/* 80319D58 003159B8  41 80 00 0C */	blt lbl_80319D64
/* 80319D5C 003159BC  2C 03 00 BD */	cmpwi r3, 0xbd
/* 80319D60 003159C0  41 80 00 18 */	blt lbl_80319D78
lbl_80319D64:
/* 80319D64 003159C4  38 00 00 5F */	li r0, 0x5f
/* 80319D68 003159C8  38 60 00 01 */	li r3, 1
/* 80319D6C 003159CC  B0 04 00 00 */	sth r0, 0(r4)
/* 80319D70 003159D0  38 80 00 02 */	li r4, 2
/* 80319D74 003159D4  4B FE B4 20 */	b VFiPFCODE_Combine_Width
lbl_80319D78:
/* 80319D78 003159D8  1C 00 01 7A */	mulli r0, r0, 0x17a
/* 80319D7C 003159DC  3C A0 80 40 */	lis r5, lbl_803FE2C0@ha
/* 80319D80 003159E0  54 63 08 3C */	slwi r3, r3, 1
/* 80319D84 003159E4  38 A5 E2 C0 */	addi r5, r5, lbl_803FE2C0@l
/* 80319D88 003159E8  7C 05 02 14 */	add r0, r5, r0
/* 80319D8C 003159EC  7C 03 02 2E */	lhzx r0, r3, r0
/* 80319D90 003159F0  2C 00 00 00 */	cmpwi r0, 0
/* 80319D94 003159F4  B0 04 00 00 */	sth r0, 0(r4)
/* 80319D98 003159F8  40 82 00 18 */	bne lbl_80319DB0
/* 80319D9C 003159FC  38 00 00 5F */	li r0, 0x5f
/* 80319DA0 00315A00  38 60 00 01 */	li r3, 1
/* 80319DA4 00315A04  B0 04 00 00 */	sth r0, 0(r4)
/* 80319DA8 00315A08  38 80 00 02 */	li r4, 2
/* 80319DAC 00315A0C  4B FE B3 E8 */	b VFiPFCODE_Combine_Width
lbl_80319DB0:
/* 80319DB0 00315A10  38 60 00 02 */	li r3, 2
/* 80319DB4 00315A14  38 80 00 02 */	li r4, 2
/* 80319DB8 00315A18  4B FE B3 DC */	b VFiPFCODE_Combine_Width

.global VFiPFCODE_CP932_Unicode2OEM
VFiPFCODE_CP932_Unicode2OEM:
/* 80319DBC 00315A1C  A0 03 00 00 */	lhz r0, 0(r3)
/* 80319DC0 00315A20  54 05 06 3E */	clrlwi r5, r0, 0x18
/* 80319DC4 00315A24  7C 03 46 70 */	srawi r3, r0, 8
/* 80319DC8 00315A28  28 05 00 80 */	cmplwi r5, 0x80
/* 80319DCC 00315A2C  40 80 00 24 */	bge lbl_80319DF0
/* 80319DD0 00315A30  54 60 06 3F */	clrlwi. r0, r3, 0x18
/* 80319DD4 00315A34  40 82 00 1C */	bne lbl_80319DF0
/* 80319DD8 00315A38  38 00 00 00 */	li r0, 0
/* 80319DDC 00315A3C  98 A4 00 00 */	stb r5, 0(r4)
/* 80319DE0 00315A40  38 60 00 01 */	li r3, 1
/* 80319DE4 00315A44  98 04 00 01 */	stb r0, 1(r4)
/* 80319DE8 00315A48  38 80 00 02 */	li r4, 2
/* 80319DEC 00315A4C  4B FE B3 A8 */	b VFiPFCODE_Combine_Width
lbl_80319DF0:
/* 80319DF0 00315A50  54 60 44 2E */	rlwinm r0, r3, 8, 0x10, 0x17
/* 80319DF4 00315A54  7C 00 2A 14 */	add r0, r0, r5
/* 80319DF8 00315A58  54 09 04 3E */	clrlwi r9, r0, 0x10
/* 80319DFC 00315A5C  28 09 FF 61 */	cmplwi r9, 0xff61
/* 80319E00 00315A60  41 80 00 2C */	blt lbl_80319E2C
/* 80319E04 00315A64  28 09 FF 9F */	cmplwi r9, 0xff9f
/* 80319E08 00315A68  41 81 00 24 */	bgt lbl_80319E2C
/* 80319E0C 00315A6C  3C 69 FF FF */	addis r3, r9, 0xffff
/* 80319E10 00315A70  38 00 00 00 */	li r0, 0
/* 80319E14 00315A74  38 63 01 40 */	addi r3, r3, 0x140
/* 80319E18 00315A78  98 04 00 01 */	stb r0, 1(r4)
/* 80319E1C 00315A7C  98 64 00 00 */	stb r3, 0(r4)
/* 80319E20 00315A80  38 60 00 01 */	li r3, 1
/* 80319E24 00315A84  38 80 00 02 */	li r4, 2
/* 80319E28 00315A88  4B FE B3 6C */	b VFiPFCODE_Combine_Width
lbl_80319E2C:
/* 80319E2C 00315A8C  28 09 00 5F */	cmplwi r9, 0x5f
/* 80319E30 00315A90  40 82 00 18 */	bne lbl_80319E48
/* 80319E34 00315A94  38 00 00 5F */	li r0, 0x5f
/* 80319E38 00315A98  38 60 00 01 */	li r3, 1
/* 80319E3C 00315A9C  98 04 00 00 */	stb r0, 0(r4)
/* 80319E40 00315AA0  38 80 00 02 */	li r4, 2
/* 80319E44 00315AA4  4B FE B3 50 */	b VFiPFCODE_Combine_Width
lbl_80319E48:
/* 80319E48 00315AA8  3C A0 80 40 */	lis r5, lbl_803FE2C0@ha
/* 80319E4C 00315AAC  38 C0 00 00 */	li r6, 0
/* 80319E50 00315AB0  38 A5 E2 C0 */	addi r5, r5, lbl_803FE2C0@l
/* 80319E54 00315AB4  38 00 00 15 */	li r0, 0x15
lbl_80319E58:
/* 80319E58 00315AB8  7C A8 2B 78 */	mr r8, r5
/* 80319E5C 00315ABC  38 E0 00 00 */	li r7, 0
/* 80319E60 00315AC0  7C 09 03 A6 */	mtctr r0
lbl_80319E64:
/* 80319E64 00315AC4  A0 68 00 00 */	lhz r3, 0(r8)
/* 80319E68 00315AC8  7C 03 48 40 */	cmplw r3, r9
/* 80319E6C 00315ACC  41 82 00 90 */	beq lbl_80319EFC
/* 80319E70 00315AD0  A0 68 00 02 */	lhz r3, 2(r8)
/* 80319E74 00315AD4  38 E7 00 01 */	addi r7, r7, 1
/* 80319E78 00315AD8  7C 03 48 40 */	cmplw r3, r9
/* 80319E7C 00315ADC  41 82 00 80 */	beq lbl_80319EFC
/* 80319E80 00315AE0  A0 68 00 04 */	lhz r3, 4(r8)
/* 80319E84 00315AE4  38 E7 00 01 */	addi r7, r7, 1
/* 80319E88 00315AE8  7C 03 48 40 */	cmplw r3, r9
/* 80319E8C 00315AEC  41 82 00 70 */	beq lbl_80319EFC
/* 80319E90 00315AF0  A0 68 00 06 */	lhz r3, 6(r8)
/* 80319E94 00315AF4  38 E7 00 01 */	addi r7, r7, 1
/* 80319E98 00315AF8  7C 03 48 40 */	cmplw r3, r9
/* 80319E9C 00315AFC  41 82 00 60 */	beq lbl_80319EFC
/* 80319EA0 00315B00  A0 68 00 08 */	lhz r3, 8(r8)
/* 80319EA4 00315B04  38 E7 00 01 */	addi r7, r7, 1
/* 80319EA8 00315B08  7C 03 48 40 */	cmplw r3, r9
/* 80319EAC 00315B0C  41 82 00 50 */	beq lbl_80319EFC
/* 80319EB0 00315B10  A0 68 00 0A */	lhz r3, 0xa(r8)
/* 80319EB4 00315B14  38 E7 00 01 */	addi r7, r7, 1
/* 80319EB8 00315B18  7C 03 48 40 */	cmplw r3, r9
/* 80319EBC 00315B1C  41 82 00 40 */	beq lbl_80319EFC
/* 80319EC0 00315B20  A0 68 00 0C */	lhz r3, 0xc(r8)
/* 80319EC4 00315B24  38 E7 00 01 */	addi r7, r7, 1
/* 80319EC8 00315B28  7C 03 48 40 */	cmplw r3, r9
/* 80319ECC 00315B2C  41 82 00 30 */	beq lbl_80319EFC
/* 80319ED0 00315B30  A0 68 00 0E */	lhz r3, 0xe(r8)
/* 80319ED4 00315B34  38 E7 00 01 */	addi r7, r7, 1
/* 80319ED8 00315B38  7C 03 48 40 */	cmplw r3, r9
/* 80319EDC 00315B3C  41 82 00 20 */	beq lbl_80319EFC
/* 80319EE0 00315B40  A0 68 00 10 */	lhz r3, 0x10(r8)
/* 80319EE4 00315B44  38 E7 00 01 */	addi r7, r7, 1
/* 80319EE8 00315B48  7C 03 48 40 */	cmplw r3, r9
/* 80319EEC 00315B4C  41 82 00 10 */	beq lbl_80319EFC
/* 80319EF0 00315B50  38 E7 00 01 */	addi r7, r7, 1
/* 80319EF4 00315B54  39 08 00 12 */	addi r8, r8, 0x12
/* 80319EF8 00315B58  42 00 FF 6C */	bdnz lbl_80319E64
lbl_80319EFC:
/* 80319EFC 00315B5C  2C 07 00 BD */	cmpwi r7, 0xbd
/* 80319F00 00315B60  41 80 00 14 */	blt lbl_80319F14
/* 80319F04 00315B64  38 C6 00 01 */	addi r6, r6, 1
/* 80319F08 00315B68  38 A5 01 7A */	addi r5, r5, 0x17a
/* 80319F0C 00315B6C  2C 06 00 2D */	cmpwi r6, 0x2d
/* 80319F10 00315B70  41 80 FF 48 */	blt lbl_80319E58
lbl_80319F14:
/* 80319F14 00315B74  2C 07 00 BD */	cmpwi r7, 0xbd
/* 80319F18 00315B78  40 82 00 18 */	bne lbl_80319F30
/* 80319F1C 00315B7C  38 00 00 5F */	li r0, 0x5f
/* 80319F20 00315B80  38 60 00 01 */	li r3, 1
/* 80319F24 00315B84  98 04 00 00 */	stb r0, 0(r4)
/* 80319F28 00315B88  38 80 00 02 */	li r4, 2
/* 80319F2C 00315B8C  4B FE B2 68 */	b VFiPFCODE_Combine_Width
lbl_80319F30:
/* 80319F30 00315B90  2C 06 00 00 */	cmpwi r6, 0
/* 80319F34 00315B94  41 80 00 24 */	blt lbl_80319F58
/* 80319F38 00315B98  2C 06 00 03 */	cmpwi r6, 3
/* 80319F3C 00315B9C  41 81 00 1C */	bgt lbl_80319F58
/* 80319F40 00315BA0  38 66 00 81 */	addi r3, r6, 0x81
/* 80319F44 00315BA4  38 07 00 40 */	addi r0, r7, 0x40
/* 80319F48 00315BA8  54 63 40 2E */	slwi r3, r3, 8
/* 80319F4C 00315BAC  7C 60 03 78 */	or r0, r3, r0
/* 80319F50 00315BB0  54 03 04 3E */	clrlwi r3, r0, 0x10
/* 80319F54 00315BB4  48 00 00 B8 */	b lbl_8031A00C
lbl_80319F58:
/* 80319F58 00315BB8  2C 06 00 04 */	cmpwi r6, 4
/* 80319F5C 00315BBC  41 80 00 24 */	blt lbl_80319F80
/* 80319F60 00315BC0  2C 06 00 1C */	cmpwi r6, 0x1c
/* 80319F64 00315BC4  41 81 00 1C */	bgt lbl_80319F80
/* 80319F68 00315BC8  38 66 00 83 */	addi r3, r6, 0x83
/* 80319F6C 00315BCC  38 07 00 40 */	addi r0, r7, 0x40
/* 80319F70 00315BD0  54 63 40 2E */	slwi r3, r3, 8
/* 80319F74 00315BD4  7C 60 03 78 */	or r0, r3, r0
/* 80319F78 00315BD8  54 03 04 3E */	clrlwi r3, r0, 0x10
/* 80319F7C 00315BDC  48 00 00 90 */	b lbl_8031A00C
lbl_80319F80:
/* 80319F80 00315BE0  2C 06 00 1D */	cmpwi r6, 0x1d
/* 80319F84 00315BE4  41 80 00 24 */	blt lbl_80319FA8
/* 80319F88 00315BE8  2C 06 00 27 */	cmpwi r6, 0x27
/* 80319F8C 00315BEC  41 81 00 1C */	bgt lbl_80319FA8
/* 80319F90 00315BF0  38 66 00 C3 */	addi r3, r6, 0xc3
/* 80319F94 00315BF4  38 07 00 40 */	addi r0, r7, 0x40
/* 80319F98 00315BF8  54 63 40 2E */	slwi r3, r3, 8
/* 80319F9C 00315BFC  7C 60 03 78 */	or r0, r3, r0
/* 80319FA0 00315C00  54 03 04 3E */	clrlwi r3, r0, 0x10
/* 80319FA4 00315C04  48 00 00 68 */	b lbl_8031A00C
lbl_80319FA8:
/* 80319FA8 00315C08  2C 06 00 28 */	cmpwi r6, 0x28
/* 80319FAC 00315C0C  41 80 00 24 */	blt lbl_80319FD0
/* 80319FB0 00315C10  2C 06 00 29 */	cmpwi r6, 0x29
/* 80319FB4 00315C14  41 81 00 1C */	bgt lbl_80319FD0
/* 80319FB8 00315C18  38 66 00 C5 */	addi r3, r6, 0xc5
/* 80319FBC 00315C1C  38 07 00 40 */	addi r0, r7, 0x40
/* 80319FC0 00315C20  54 63 40 2E */	slwi r3, r3, 8
/* 80319FC4 00315C24  7C 60 03 78 */	or r0, r3, r0
/* 80319FC8 00315C28  54 03 04 3E */	clrlwi r3, r0, 0x10
/* 80319FCC 00315C2C  48 00 00 40 */	b lbl_8031A00C
lbl_80319FD0:
/* 80319FD0 00315C30  2C 06 00 2A */	cmpwi r6, 0x2a
/* 80319FD4 00315C34  41 80 00 24 */	blt lbl_80319FF8
/* 80319FD8 00315C38  2C 06 00 2C */	cmpwi r6, 0x2c
/* 80319FDC 00315C3C  41 81 00 1C */	bgt lbl_80319FF8
/* 80319FE0 00315C40  38 66 00 D0 */	addi r3, r6, 0xd0
/* 80319FE4 00315C44  38 07 00 40 */	addi r0, r7, 0x40
/* 80319FE8 00315C48  54 63 40 2E */	slwi r3, r3, 8
/* 80319FEC 00315C4C  7C 60 03 78 */	or r0, r3, r0
/* 80319FF0 00315C50  54 03 04 3E */	clrlwi r3, r0, 0x10
/* 80319FF4 00315C54  48 00 00 18 */	b lbl_8031A00C
lbl_80319FF8:
/* 80319FF8 00315C58  38 00 00 5F */	li r0, 0x5f
/* 80319FFC 00315C5C  38 60 00 01 */	li r3, 1
/* 8031A000 00315C60  98 04 00 00 */	stb r0, 0(r4)
/* 8031A004 00315C64  38 80 00 02 */	li r4, 2
/* 8031A008 00315C68  4B FE B1 8C */	b VFiPFCODE_Combine_Width
lbl_8031A00C:
/* 8031A00C 00315C6C  54 60 C6 3E */	rlwinm r0, r3, 0x18, 0x18, 0x1f
/* 8031A010 00315C70  98 64 00 01 */	stb r3, 1(r4)
/* 8031A014 00315C74  38 60 00 02 */	li r3, 2
/* 8031A018 00315C78  98 04 00 00 */	stb r0, 0(r4)
/* 8031A01C 00315C7C  38 80 00 02 */	li r4, 2
/* 8031A020 00315C80  4B FE B1 74 */	b VFiPFCODE_Combine_Width

.global VFiPFCODE_CP932_OEMCharWidth
VFiPFCODE_CP932_OEMCharWidth:
/* 8031A024 00315C84  94 21 FF F0 */	stwu r1, -0x10(r1)
/* 8031A028 00315C88  7C 08 02 A6 */	mflr r0
/* 8031A02C 00315C8C  90 01 00 14 */	stw r0, 0x14(r1)
/* 8031A030 00315C90  38 81 00 0C */	addi r4, r1, 0xc
/* 8031A034 00315C94  4B FF FB CD */	bl VFiPFCODE_CP932_OEM2Unicode
/* 8031A038 00315C98  38 81 00 0A */	addi r4, r1, 0xa
/* 8031A03C 00315C9C  38 A1 00 08 */	addi r5, r1, 8
/* 8031A040 00315CA0  4B FE B1 61 */	bl VFiPFCODE_Divide_Width
/* 8031A044 00315CA4  80 01 00 14 */	lwz r0, 0x14(r1)
/* 8031A048 00315CA8  A8 61 00 0A */	lha r3, 0xa(r1)
/* 8031A04C 00315CAC  7C 08 03 A6 */	mtlr r0
/* 8031A050 00315CB0  38 21 00 10 */	addi r1, r1, 0x10
/* 8031A054 00315CB4  4E 80 00 20 */	blr

.global VFiPFCODE_CP932_isOEMMBchar
VFiPFCODE_CP932_isOEMMBchar:
/* 8031A058 00315CB8  2C 04 00 02 */	cmpwi r4, 2
/* 8031A05C 00315CBC  54 60 06 3E */	clrlwi r0, r3, 0x18
/* 8031A060 00315CC0  41 82 00 40 */	beq lbl_8031A0A0
/* 8031A064 00315CC4  40 80 00 68 */	bge lbl_8031A0CC
/* 8031A068 00315CC8  2C 04 00 01 */	cmpwi r4, 1
/* 8031A06C 00315CCC  40 80 00 08 */	bge lbl_8031A074
/* 8031A070 00315CD0  48 00 00 5C */	b lbl_8031A0CC
lbl_8031A074:
/* 8031A074 00315CD4  28 00 00 81 */	cmplwi r0, 0x81
/* 8031A078 00315CD8  38 60 00 00 */	li r3, 0
/* 8031A07C 00315CDC  41 80 00 0C */	blt lbl_8031A088
/* 8031A080 00315CE0  28 00 00 9F */	cmplwi r0, 0x9f
/* 8031A084 00315CE4  40 81 00 14 */	ble lbl_8031A098
lbl_8031A088:
/* 8031A088 00315CE8  28 00 00 E0 */	cmplwi r0, 0xe0
/* 8031A08C 00315CEC  4D 80 00 20 */	bltlr
/* 8031A090 00315CF0  28 00 00 FC */	cmplwi r0, 0xfc
/* 8031A094 00315CF4  4D 81 00 20 */	bgtlr
lbl_8031A098:
/* 8031A098 00315CF8  38 60 00 01 */	li r3, 1
/* 8031A09C 00315CFC  4E 80 00 20 */	blr
lbl_8031A0A0:
/* 8031A0A0 00315D00  28 00 00 40 */	cmplwi r0, 0x40
/* 8031A0A4 00315D04  38 60 00 00 */	li r3, 0
/* 8031A0A8 00315D08  41 80 00 0C */	blt lbl_8031A0B4
/* 8031A0AC 00315D0C  28 00 00 7E */	cmplwi r0, 0x7e
/* 8031A0B0 00315D10  40 81 00 14 */	ble lbl_8031A0C4
lbl_8031A0B4:
/* 8031A0B4 00315D14  28 00 00 80 */	cmplwi r0, 0x80
/* 8031A0B8 00315D18  4D 80 00 20 */	bltlr
/* 8031A0BC 00315D1C  28 00 00 FC */	cmplwi r0, 0xfc
/* 8031A0C0 00315D20  4D 81 00 20 */	bgtlr
lbl_8031A0C4:
/* 8031A0C4 00315D24  38 60 00 01 */	li r3, 1
/* 8031A0C8 00315D28  4E 80 00 20 */	blr
lbl_8031A0CC:
/* 8031A0CC 00315D2C  38 60 00 00 */	li r3, 0
/* 8031A0D0 00315D30  4E 80 00 20 */	blr

.global VFiPFCODE_CP932_UnicodeCharWidth
VFiPFCODE_CP932_UnicodeCharWidth:
/* 8031A0D4 00315D34  94 21 FF F0 */	stwu r1, -0x10(r1)
/* 8031A0D8 00315D38  7C 08 02 A6 */	mflr r0
/* 8031A0DC 00315D3C  90 01 00 14 */	stw r0, 0x14(r1)
/* 8031A0E0 00315D40  38 81 00 0C */	addi r4, r1, 0xc
/* 8031A0E4 00315D44  4B FF FC D9 */	bl VFiPFCODE_CP932_Unicode2OEM
/* 8031A0E8 00315D48  38 81 00 0A */	addi r4, r1, 0xa
/* 8031A0EC 00315D4C  38 A1 00 08 */	addi r5, r1, 8
/* 8031A0F0 00315D50  4B FE B0 B1 */	bl VFiPFCODE_Divide_Width
/* 8031A0F4 00315D54  80 01 00 14 */	lwz r0, 0x14(r1)
/* 8031A0F8 00315D58  A8 61 00 08 */	lha r3, 8(r1)
/* 8031A0FC 00315D5C  7C 08 03 A6 */	mtlr r0
/* 8031A100 00315D60  38 21 00 10 */	addi r1, r1, 0x10
/* 8031A104 00315D64  4E 80 00 20 */	blr

.global VFiPFCODE_CP932_isUnicodeMBchar
VFiPFCODE_CP932_isUnicodeMBchar:
/* 8031A108 00315D68  38 60 00 00 */	li r3, 0
/* 8031A10C 00315D6C  4E 80 00 20 */	blr