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
|
.include "macros.inc"
.section .text, "ax" # 0x80006980 - 0x803E1E60
.global fclose
fclose:
/* 801C9BD0 001C5830 94 21 FF E0 */ stwu r1, -0x20(r1)
/* 801C9BD4 001C5834 7C 08 02 A6 */ mflr r0
/* 801C9BD8 001C5838 2C 03 00 00 */ cmpwi r3, 0
/* 801C9BDC 001C583C 90 01 00 24 */ stw r0, 0x24(r1)
/* 801C9BE0 001C5840 93 E1 00 1C */ stw r31, 0x1c(r1)
/* 801C9BE4 001C5844 93 C1 00 18 */ stw r30, 0x18(r1)
/* 801C9BE8 001C5848 93 A1 00 14 */ stw r29, 0x14(r1)
/* 801C9BEC 001C584C 7C 7D 1B 78 */ mr r29, r3
/* 801C9BF0 001C5850 40 82 00 0C */ bne lbl_801C9BFC
/* 801C9BF4 001C5854 38 60 FF FF */ li r3, -1
/* 801C9BF8 001C5858 48 00 00 78 */ b lbl_801C9C70
lbl_801C9BFC:
/* 801C9BFC 001C585C 80 03 00 04 */ lwz r0, 4(r3)
/* 801C9C00 001C5860 54 00 57 7F */ rlwinm. r0, r0, 0xa, 0x1d, 0x1f
/* 801C9C04 001C5864 40 82 00 0C */ bne lbl_801C9C10
/* 801C9C08 001C5868 38 60 00 00 */ li r3, 0
/* 801C9C0C 001C586C 48 00 00 64 */ b lbl_801C9C70
lbl_801C9C10:
/* 801C9C10 001C5870 48 00 00 7D */ bl fflush
/* 801C9C14 001C5874 81 9D 00 44 */ lwz r12, 0x44(r29)
/* 801C9C18 001C5878 7C 7E 1B 78 */ mr r30, r3
/* 801C9C1C 001C587C 80 7D 00 00 */ lwz r3, 0(r29)
/* 801C9C20 001C5880 7D 89 03 A6 */ mtctr r12
/* 801C9C24 001C5884 4E 80 04 21 */ bctrl
/* 801C9C28 001C5888 80 1D 00 08 */ lwz r0, 8(r29)
/* 801C9C2C 001C588C 38 A0 00 00 */ li r5, 0
/* 801C9C30 001C5890 80 9D 00 04 */ lwz r4, 4(r29)
/* 801C9C34 001C5894 7C 7F 1B 78 */ mr r31, r3
/* 801C9C38 001C5898 54 00 27 FF */ rlwinm. r0, r0, 4, 0x1f, 0x1f
/* 801C9C3C 001C589C 90 BD 00 00 */ stw r5, 0(r29)
/* 801C9C40 001C58A0 54 84 02 8C */ rlwinm r4, r4, 0, 0xa, 6
/* 801C9C44 001C58A4 90 9D 00 04 */ stw r4, 4(r29)
/* 801C9C48 001C58A8 41 82 00 0C */ beq lbl_801C9C54
/* 801C9C4C 001C58AC 80 7D 00 1C */ lwz r3, 0x1c(r29)
/* 801C9C50 001C58B0 4B E4 0B 75 */ bl free
lbl_801C9C54:
/* 801C9C54 001C58B4 2C 1E 00 00 */ cmpwi r30, 0
/* 801C9C58 001C58B8 38 00 00 00 */ li r0, 0
/* 801C9C5C 001C58BC 40 82 00 0C */ bne lbl_801C9C68
/* 801C9C60 001C58C0 2C 1F 00 00 */ cmpwi r31, 0
/* 801C9C64 001C58C4 41 82 00 08 */ beq lbl_801C9C6C
lbl_801C9C68:
/* 801C9C68 001C58C8 38 00 00 01 */ li r0, 1
lbl_801C9C6C:
/* 801C9C6C 001C58CC 7C 60 00 D0 */ neg r3, r0
lbl_801C9C70:
/* 801C9C70 001C58D0 80 01 00 24 */ lwz r0, 0x24(r1)
/* 801C9C74 001C58D4 83 E1 00 1C */ lwz r31, 0x1c(r1)
/* 801C9C78 001C58D8 83 C1 00 18 */ lwz r30, 0x18(r1)
/* 801C9C7C 001C58DC 83 A1 00 14 */ lwz r29, 0x14(r1)
/* 801C9C80 001C58E0 7C 08 03 A6 */ mtlr r0
/* 801C9C84 001C58E4 38 21 00 20 */ addi r1, r1, 0x20
/* 801C9C88 001C58E8 4E 80 00 20 */ blr
.global fflush
fflush:
/* 801C9C8C 001C58EC 94 21 FF F0 */ stwu r1, -0x10(r1)
/* 801C9C90 001C58F0 7C 08 02 A6 */ mflr r0
/* 801C9C94 001C58F4 2C 03 00 00 */ cmpwi r3, 0
/* 801C9C98 001C58F8 90 01 00 14 */ stw r0, 0x14(r1)
/* 801C9C9C 001C58FC 93 E1 00 0C */ stw r31, 0xc(r1)
/* 801C9CA0 001C5900 7C 7F 1B 78 */ mr r31, r3
/* 801C9CA4 001C5904 93 C1 00 08 */ stw r30, 8(r1)
/* 801C9CA8 001C5908 40 82 00 0C */ bne lbl_801C9CB4
/* 801C9CAC 001C590C 4B FF DD 11 */ bl __flush_all
/* 801C9CB0 001C5910 48 00 00 F8 */ b lbl_801C9DA8
lbl_801C9CB4:
/* 801C9CB4 001C5914 88 03 00 0A */ lbz r0, 0xa(r3)
/* 801C9CB8 001C5918 2C 00 00 00 */ cmpwi r0, 0
/* 801C9CBC 001C591C 40 82 00 10 */ bne lbl_801C9CCC
/* 801C9CC0 001C5920 80 83 00 04 */ lwz r4, 4(r3)
/* 801C9CC4 001C5924 54 80 57 7F */ rlwinm. r0, r4, 0xa, 0x1d, 0x1f
/* 801C9CC8 001C5928 40 82 00 0C */ bne lbl_801C9CD4
lbl_801C9CCC:
/* 801C9CCC 001C592C 38 60 FF FF */ li r3, -1
/* 801C9CD0 001C5930 48 00 00 D8 */ b lbl_801C9DA8
lbl_801C9CD4:
/* 801C9CD4 001C5934 54 80 2F 7E */ rlwinm r0, r4, 5, 0x1d, 0x1f
/* 801C9CD8 001C5938 28 00 00 01 */ cmplwi r0, 1
/* 801C9CDC 001C593C 40 82 00 0C */ bne lbl_801C9CE8
/* 801C9CE0 001C5940 38 60 00 00 */ li r3, 0
/* 801C9CE4 001C5944 48 00 00 C4 */ b lbl_801C9DA8
lbl_801C9CE8:
/* 801C9CE8 001C5948 80 83 00 08 */ lwz r4, 8(r3)
/* 801C9CEC 001C594C 54 80 1F 7E */ srwi r0, r4, 0x1d
/* 801C9CF0 001C5950 28 00 00 03 */ cmplwi r0, 3
/* 801C9CF4 001C5954 41 80 00 10 */ blt lbl_801C9D04
/* 801C9CF8 001C5958 38 00 00 02 */ li r0, 2
/* 801C9CFC 001C595C 50 04 E8 04 */ rlwimi r4, r0, 0x1d, 0, 2
/* 801C9D00 001C5960 90 83 00 08 */ stw r4, 8(r3)
lbl_801C9D04:
/* 801C9D04 001C5964 80 03 00 08 */ lwz r0, 8(r3)
/* 801C9D08 001C5968 54 00 1F 7E */ srwi r0, r0, 0x1d
/* 801C9D0C 001C596C 28 00 00 02 */ cmplwi r0, 2
/* 801C9D10 001C5970 40 82 00 0C */ bne lbl_801C9D1C
/* 801C9D14 001C5974 38 00 00 00 */ li r0, 0
/* 801C9D18 001C5978 90 03 00 28 */ stw r0, 0x28(r3)
lbl_801C9D1C:
/* 801C9D1C 001C597C 80 83 00 08 */ lwz r4, 8(r3)
/* 801C9D20 001C5980 54 80 1F 7E */ srwi r0, r4, 0x1d
/* 801C9D24 001C5984 28 00 00 01 */ cmplwi r0, 1
/* 801C9D28 001C5988 41 82 00 14 */ beq lbl_801C9D3C
/* 801C9D2C 001C598C 54 80 00 FE */ clrlwi r0, r4, 3
/* 801C9D30 001C5990 90 03 00 08 */ stw r0, 8(r3)
/* 801C9D34 001C5994 38 60 00 00 */ li r3, 0
/* 801C9D38 001C5998 48 00 00 70 */ b lbl_801C9DA8
lbl_801C9D3C:
/* 801C9D3C 001C599C 80 03 00 04 */ lwz r0, 4(r3)
/* 801C9D40 001C59A0 54 00 57 7E */ rlwinm r0, r0, 0xa, 0x1d, 0x1f
/* 801C9D44 001C59A4 28 00 00 01 */ cmplwi r0, 1
/* 801C9D48 001C59A8 41 82 00 0C */ beq lbl_801C9D54
/* 801C9D4C 001C59AC 3B C0 00 00 */ li r30, 0
/* 801C9D50 001C59B0 48 00 00 10 */ b lbl_801C9D60
lbl_801C9D54:
/* 801C9D54 001C59B4 7F E3 FB 78 */ mr r3, r31
/* 801C9D58 001C59B8 48 00 01 D1 */ bl ftell
/* 801C9D5C 001C59BC 7C 7E 1B 78 */ mr r30, r3
lbl_801C9D60:
/* 801C9D60 001C59C0 7F E3 FB 78 */ mr r3, r31
/* 801C9D64 001C59C4 38 80 00 00 */ li r4, 0
/* 801C9D68 001C59C8 4B FF F7 65 */ bl __flush_buffer
/* 801C9D6C 001C59CC 2C 03 00 00 */ cmpwi r3, 0
/* 801C9D70 001C59D0 41 82 00 1C */ beq lbl_801C9D8C
/* 801C9D74 001C59D4 38 60 00 01 */ li r3, 1
/* 801C9D78 001C59D8 38 00 00 00 */ li r0, 0
/* 801C9D7C 001C59DC 98 7F 00 0A */ stb r3, 0xa(r31)
/* 801C9D80 001C59E0 38 60 FF FF */ li r3, -1
/* 801C9D84 001C59E4 90 1F 00 28 */ stw r0, 0x28(r31)
/* 801C9D88 001C59E8 48 00 00 20 */ b lbl_801C9DA8
lbl_801C9D8C:
/* 801C9D8C 001C59EC 80 1F 00 08 */ lwz r0, 8(r31)
/* 801C9D90 001C59F0 38 80 00 00 */ li r4, 0
/* 801C9D94 001C59F4 93 DF 00 18 */ stw r30, 0x18(r31)
/* 801C9D98 001C59F8 38 60 00 00 */ li r3, 0
/* 801C9D9C 001C59FC 54 00 00 FE */ clrlwi r0, r0, 3
/* 801C9DA0 001C5A00 90 1F 00 08 */ stw r0, 8(r31)
/* 801C9DA4 001C5A04 90 9F 00 28 */ stw r4, 0x28(r31)
lbl_801C9DA8:
/* 801C9DA8 001C5A08 80 01 00 14 */ lwz r0, 0x14(r1)
/* 801C9DAC 001C5A0C 83 E1 00 0C */ lwz r31, 0xc(r1)
/* 801C9DB0 001C5A10 83 C1 00 08 */ lwz r30, 8(r1)
/* 801C9DB4 001C5A14 7C 08 03 A6 */ mtlr r0
/* 801C9DB8 001C5A18 38 21 00 10 */ addi r1, r1, 0x10
/* 801C9DBC 001C5A1C 4E 80 00 20 */ blr
.global __msl_strnicmp
__msl_strnicmp:
/* 801C9DC0 001C5A20 3C C0 80 42 */ lis r6, lbl_80422D48@ha
/* 801C9DC4 001C5A24 38 C6 2D 48 */ addi r6, r6, lbl_80422D48@l
/* 801C9DC8 001C5A28 80 C6 00 38 */ lwz r6, 0x38(r6)
/* 801C9DCC 001C5A2C 7C A9 03 A6 */ mtctr r5
/* 801C9DD0 001C5A30 2C 05 00 00 */ cmpwi r5, 0
/* 801C9DD4 001C5A34 40 81 00 A4 */ ble lbl_801C9E78
lbl_801C9DD8:
/* 801C9DD8 001C5A38 88 A3 00 00 */ lbz r5, 0(r3)
/* 801C9DDC 001C5A3C 38 00 00 00 */ li r0, 0
/* 801C9DE0 001C5A40 38 63 00 01 */ addi r3, r3, 1
/* 801C9DE4 001C5A44 7C A7 07 75 */ extsb. r7, r5
/* 801C9DE8 001C5A48 41 80 00 0C */ blt lbl_801C9DF4
/* 801C9DEC 001C5A4C 2C 07 01 00 */ cmpwi r7, 0x100
/* 801C9DF0 001C5A50 41 80 00 08 */ blt lbl_801C9DF8
lbl_801C9DF4:
/* 801C9DF4 001C5A54 38 00 00 01 */ li r0, 1
lbl_801C9DF8:
/* 801C9DF8 001C5A58 2C 00 00 00 */ cmpwi r0, 0
/* 801C9DFC 001C5A5C 41 82 00 08 */ beq lbl_801C9E04
/* 801C9E00 001C5A60 48 00 00 0C */ b lbl_801C9E0C
lbl_801C9E04:
/* 801C9E04 001C5A64 80 A6 00 10 */ lwz r5, 0x10(r6)
/* 801C9E08 001C5A68 7C E5 38 AE */ lbzx r7, r5, r7
lbl_801C9E0C:
/* 801C9E0C 001C5A6C 88 A4 00 00 */ lbz r5, 0(r4)
/* 801C9E10 001C5A70 7C E8 07 74 */ extsb r8, r7
/* 801C9E14 001C5A74 38 00 00 00 */ li r0, 0
/* 801C9E18 001C5A78 38 84 00 01 */ addi r4, r4, 1
/* 801C9E1C 001C5A7C 7C A7 07 75 */ extsb. r7, r5
/* 801C9E20 001C5A80 41 80 00 0C */ blt lbl_801C9E2C
/* 801C9E24 001C5A84 2C 07 01 00 */ cmpwi r7, 0x100
/* 801C9E28 001C5A88 41 80 00 08 */ blt lbl_801C9E30
lbl_801C9E2C:
/* 801C9E2C 001C5A8C 38 00 00 01 */ li r0, 1
lbl_801C9E30:
/* 801C9E30 001C5A90 2C 00 00 00 */ cmpwi r0, 0
/* 801C9E34 001C5A94 41 82 00 08 */ beq lbl_801C9E3C
/* 801C9E38 001C5A98 48 00 00 0C */ b lbl_801C9E44
lbl_801C9E3C:
/* 801C9E3C 001C5A9C 80 A6 00 10 */ lwz r5, 0x10(r6)
/* 801C9E40 001C5AA0 7C E5 38 AE */ lbzx r7, r5, r7
lbl_801C9E44:
/* 801C9E44 001C5AA4 7C E0 07 74 */ extsb r0, r7
/* 801C9E48 001C5AA8 7C 08 00 00 */ cmpw r8, r0
/* 801C9E4C 001C5AAC 40 80 00 0C */ bge lbl_801C9E58
/* 801C9E50 001C5AB0 38 60 FF FF */ li r3, -1
/* 801C9E54 001C5AB4 4E 80 00 20 */ blr
lbl_801C9E58:
/* 801C9E58 001C5AB8 40 81 00 0C */ ble lbl_801C9E64
/* 801C9E5C 001C5ABC 38 60 00 01 */ li r3, 1
/* 801C9E60 001C5AC0 4E 80 00 20 */ blr
lbl_801C9E64:
/* 801C9E64 001C5AC4 2C 08 00 00 */ cmpwi r8, 0
/* 801C9E68 001C5AC8 40 82 00 0C */ bne lbl_801C9E74
/* 801C9E6C 001C5ACC 38 60 00 00 */ li r3, 0
/* 801C9E70 001C5AD0 4E 80 00 20 */ blr
lbl_801C9E74:
/* 801C9E74 001C5AD4 42 00 FF 64 */ bdnz lbl_801C9DD8
lbl_801C9E78:
/* 801C9E78 001C5AD8 38 60 00 00 */ li r3, 0
/* 801C9E7C 001C5ADC 4E 80 00 20 */ blr
|