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
|
.include "macros.inc"
.section .text, "ax" # 0x80006980 - 0x803E1E60
.global _ftell
_ftell:
/* 801C9E80 001C5AE0 80 03 00 04 */ lwz r0, 4(r3)
/* 801C9E84 001C5AE4 38 C0 00 00 */ li r6, 0
/* 801C9E88 001C5AE8 54 04 57 7E */ rlwinm r4, r0, 0xa, 0x1d, 0x1f
/* 801C9E8C 001C5AEC 38 04 00 FF */ addi r0, r4, 0xff
/* 801C9E90 001C5AF0 54 00 06 3E */ clrlwi r0, r0, 0x18
/* 801C9E94 001C5AF4 28 00 00 01 */ cmplwi r0, 1
/* 801C9E98 001C5AF8 41 81 00 10 */ bgt lbl_801C9EA8
/* 801C9E9C 001C5AFC 88 03 00 0A */ lbz r0, 0xa(r3)
/* 801C9EA0 001C5B00 2C 00 00 00 */ cmpwi r0, 0
/* 801C9EA4 001C5B04 41 82 00 14 */ beq lbl_801C9EB8
lbl_801C9EA8:
/* 801C9EA8 001C5B08 38 00 00 28 */ li r0, 0x28
/* 801C9EAC 001C5B0C 38 60 FF FF */ li r3, -1
/* 801C9EB0 001C5B10 90 0D 9F C8 */ stw r0, lbl_8063F288-_SDA_BASE_(r13)
/* 801C9EB4 001C5B14 4E 80 00 20 */ blr
lbl_801C9EB8:
/* 801C9EB8 001C5B18 80 03 00 08 */ lwz r0, 8(r3)
/* 801C9EBC 001C5B1C 54 05 1F 7F */ rlwinm. r5, r0, 3, 0x1d, 0x1f
/* 801C9EC0 001C5B20 40 82 00 0C */ bne lbl_801C9ECC
/* 801C9EC4 001C5B24 80 63 00 18 */ lwz r3, 0x18(r3)
/* 801C9EC8 001C5B28 4E 80 00 20 */ blr
lbl_801C9ECC:
/* 801C9ECC 001C5B2C 81 03 00 1C */ lwz r8, 0x1c(r3)
/* 801C9ED0 001C5B30 28 05 00 03 */ cmplwi r5, 3
/* 801C9ED4 001C5B34 80 83 00 24 */ lwz r4, 0x24(r3)
/* 801C9ED8 001C5B38 80 03 00 34 */ lwz r0, 0x34(r3)
/* 801C9EDC 001C5B3C 7C 88 20 50 */ subf r4, r8, r4
/* 801C9EE0 001C5B40 7C E0 22 14 */ add r7, r0, r4
/* 801C9EE4 001C5B44 41 80 00 0C */ blt lbl_801C9EF0
/* 801C9EE8 001C5B48 38 C5 FF FE */ addi r6, r5, -2
/* 801C9EEC 001C5B4C 7C E6 38 50 */ subf r7, r6, r7
lbl_801C9EF0:
/* 801C9EF0 001C5B50 80 03 00 04 */ lwz r0, 4(r3)
/* 801C9EF4 001C5B54 54 00 6F FF */ rlwinm. r0, r0, 0xd, 0x1f, 0x1f
/* 801C9EF8 001C5B58 40 82 00 28 */ bne lbl_801C9F20
/* 801C9EFC 001C5B5C 7C 06 20 51 */ subf. r0, r6, r4
/* 801C9F00 001C5B60 7C 09 03 A6 */ mtctr r0
/* 801C9F04 001C5B64 41 82 00 1C */ beq lbl_801C9F20
lbl_801C9F08:
/* 801C9F08 001C5B68 88 08 00 00 */ lbz r0, 0(r8)
/* 801C9F0C 001C5B6C 39 08 00 01 */ addi r8, r8, 1
/* 801C9F10 001C5B70 28 00 00 0A */ cmplwi r0, 0xa
/* 801C9F14 001C5B74 40 82 00 08 */ bne lbl_801C9F1C
/* 801C9F18 001C5B78 38 E7 00 01 */ addi r7, r7, 1
lbl_801C9F1C:
/* 801C9F1C 001C5B7C 42 00 FF EC */ bdnz lbl_801C9F08
lbl_801C9F20:
/* 801C9F20 001C5B80 7C E3 3B 78 */ mr r3, r7
/* 801C9F24 001C5B84 4E 80 00 20 */ blr
.global ftell
ftell:
/* 801C9F28 001C5B88 4B FF FF 58 */ b _ftell
.global _fseek
_fseek:
/* 801C9F2C 001C5B8C 94 21 FF E0 */ stwu r1, -0x20(r1)
/* 801C9F30 001C5B90 7C 08 02 A6 */ mflr r0
/* 801C9F34 001C5B94 90 01 00 24 */ stw r0, 0x24(r1)
/* 801C9F38 001C5B98 93 E1 00 1C */ stw r31, 0x1c(r1)
/* 801C9F3C 001C5B9C 7C BF 2B 78 */ mr r31, r5
/* 801C9F40 001C5BA0 93 C1 00 18 */ stw r30, 0x18(r1)
/* 801C9F44 001C5BA4 7C 7E 1B 78 */ mr r30, r3
/* 801C9F48 001C5BA8 90 81 00 08 */ stw r4, 8(r1)
/* 801C9F4C 001C5BAC 80 03 00 04 */ lwz r0, 4(r3)
/* 801C9F50 001C5BB0 54 00 57 7E */ rlwinm r0, r0, 0xa, 0x1d, 0x1f
/* 801C9F54 001C5BB4 28 00 00 01 */ cmplwi r0, 1
/* 801C9F58 001C5BB8 40 82 00 10 */ bne lbl_801C9F68
/* 801C9F5C 001C5BBC 88 03 00 0A */ lbz r0, 0xa(r3)
/* 801C9F60 001C5BC0 2C 00 00 00 */ cmpwi r0, 0
/* 801C9F64 001C5BC4 41 82 00 14 */ beq lbl_801C9F78
lbl_801C9F68:
/* 801C9F68 001C5BC8 38 00 00 28 */ li r0, 0x28
/* 801C9F6C 001C5BCC 38 60 FF FF */ li r3, -1
/* 801C9F70 001C5BD0 90 0D 9F C8 */ stw r0, lbl_8063F288-_SDA_BASE_(r13)
/* 801C9F74 001C5BD4 48 00 01 64 */ b lbl_801CA0D8
lbl_801C9F78:
/* 801C9F78 001C5BD8 80 03 00 08 */ lwz r0, 8(r3)
/* 801C9F7C 001C5BDC 54 00 1F 7E */ srwi r0, r0, 0x1d
/* 801C9F80 001C5BE0 28 00 00 01 */ cmplwi r0, 1
/* 801C9F84 001C5BE4 40 82 00 34 */ bne lbl_801C9FB8
/* 801C9F88 001C5BE8 38 80 00 00 */ li r4, 0
/* 801C9F8C 001C5BEC 4B FF F5 41 */ bl __flush_buffer
/* 801C9F90 001C5BF0 2C 03 00 00 */ cmpwi r3, 0
/* 801C9F94 001C5BF4 41 82 00 24 */ beq lbl_801C9FB8
/* 801C9F98 001C5BF8 38 00 00 01 */ li r0, 1
/* 801C9F9C 001C5BFC 38 80 00 00 */ li r4, 0
/* 801C9FA0 001C5C00 98 1E 00 0A */ stb r0, 0xa(r30)
/* 801C9FA4 001C5C04 38 00 00 28 */ li r0, 0x28
/* 801C9FA8 001C5C08 38 60 FF FF */ li r3, -1
/* 801C9FAC 001C5C0C 90 9E 00 28 */ stw r4, 0x28(r30)
/* 801C9FB0 001C5C10 90 0D 9F C8 */ stw r0, lbl_8063F288-_SDA_BASE_(r13)
/* 801C9FB4 001C5C14 48 00 01 24 */ b lbl_801CA0D8
lbl_801C9FB8:
/* 801C9FB8 001C5C18 2C 1F 00 01 */ cmpwi r31, 1
/* 801C9FBC 001C5C1C 40 82 00 1C */ bne lbl_801C9FD8
/* 801C9FC0 001C5C20 7F C3 F3 78 */ mr r3, r30
/* 801C9FC4 001C5C24 3B E0 00 00 */ li r31, 0
/* 801C9FC8 001C5C28 4B FF FE B9 */ bl _ftell
/* 801C9FCC 001C5C2C 80 01 00 08 */ lwz r0, 8(r1)
/* 801C9FD0 001C5C30 7C 00 1A 14 */ add r0, r0, r3
/* 801C9FD4 001C5C34 90 01 00 08 */ stw r0, 8(r1)
lbl_801C9FD8:
/* 801C9FD8 001C5C38 2C 1F 00 02 */ cmpwi r31, 2
/* 801C9FDC 001C5C3C 41 82 00 80 */ beq lbl_801CA05C
/* 801C9FE0 001C5C40 80 1E 00 04 */ lwz r0, 4(r30)
/* 801C9FE4 001C5C44 54 00 2F 7E */ rlwinm r0, r0, 5, 0x1d, 0x1f
/* 801C9FE8 001C5C48 28 00 00 03 */ cmplwi r0, 3
/* 801C9FEC 001C5C4C 41 82 00 70 */ beq lbl_801CA05C
/* 801C9FF0 001C5C50 80 DE 00 08 */ lwz r6, 8(r30)
/* 801C9FF4 001C5C54 54 C3 1F 7E */ srwi r3, r6, 0x1d
/* 801C9FF8 001C5C58 38 03 FF FE */ addi r0, r3, -2
/* 801C9FFC 001C5C5C 28 00 00 01 */ cmplwi r0, 1
/* 801CA000 001C5C60 41 81 00 5C */ bgt lbl_801CA05C
/* 801CA004 001C5C64 80 61 00 08 */ lwz r3, 8(r1)
/* 801CA008 001C5C68 80 BE 00 18 */ lwz r5, 0x18(r30)
/* 801CA00C 001C5C6C 7C 03 28 40 */ cmplw r3, r5
/* 801CA010 001C5C70 40 80 00 10 */ bge lbl_801CA020
/* 801CA014 001C5C74 80 1E 00 34 */ lwz r0, 0x34(r30)
/* 801CA018 001C5C78 7C 03 00 40 */ cmplw r3, r0
/* 801CA01C 001C5C7C 40 80 00 14 */ bge lbl_801CA030
lbl_801CA020:
/* 801CA020 001C5C80 80 1E 00 08 */ lwz r0, 8(r30)
/* 801CA024 001C5C84 54 00 00 FE */ clrlwi r0, r0, 3
/* 801CA028 001C5C88 90 1E 00 08 */ stw r0, 8(r30)
/* 801CA02C 001C5C8C 48 00 00 3C */ b lbl_801CA068
lbl_801CA030:
/* 801CA030 001C5C90 80 9E 00 1C */ lwz r4, 0x1c(r30)
/* 801CA034 001C5C94 7C 60 18 50 */ subf r3, r0, r3
/* 801CA038 001C5C98 38 00 00 02 */ li r0, 2
/* 801CA03C 001C5C9C 7C 64 1A 14 */ add r3, r4, r3
/* 801CA040 001C5CA0 90 7E 00 24 */ stw r3, 0x24(r30)
/* 801CA044 001C5CA4 50 06 E8 04 */ rlwimi r6, r0, 0x1d, 0, 2
/* 801CA048 001C5CA8 80 01 00 08 */ lwz r0, 8(r1)
/* 801CA04C 001C5CAC 7C 00 28 50 */ subf r0, r0, r5
/* 801CA050 001C5CB0 90 DE 00 08 */ stw r6, 8(r30)
/* 801CA054 001C5CB4 90 1E 00 28 */ stw r0, 0x28(r30)
/* 801CA058 001C5CB8 48 00 00 10 */ b lbl_801CA068
lbl_801CA05C:
/* 801CA05C 001C5CBC 80 1E 00 08 */ lwz r0, 8(r30)
/* 801CA060 001C5CC0 54 00 00 FE */ clrlwi r0, r0, 3
/* 801CA064 001C5CC4 90 1E 00 08 */ stw r0, 8(r30)
lbl_801CA068:
/* 801CA068 001C5CC8 80 1E 00 08 */ lwz r0, 8(r30)
/* 801CA06C 001C5CCC 54 00 1F 7F */ rlwinm. r0, r0, 3, 0x1d, 0x1f
/* 801CA070 001C5CD0 40 82 00 64 */ bne lbl_801CA0D4
/* 801CA074 001C5CD4 81 9E 00 38 */ lwz r12, 0x38(r30)
/* 801CA078 001C5CD8 2C 0C 00 00 */ cmpwi r12, 0
/* 801CA07C 001C5CDC 41 82 00 44 */ beq lbl_801CA0C0
/* 801CA080 001C5CE0 7F E5 FB 78 */ mr r5, r31
/* 801CA084 001C5CE4 38 81 00 08 */ addi r4, r1, 8
/* 801CA088 001C5CE8 80 7E 00 00 */ lwz r3, 0(r30)
/* 801CA08C 001C5CEC 80 DE 00 48 */ lwz r6, 0x48(r30)
/* 801CA090 001C5CF0 7D 89 03 A6 */ mtctr r12
/* 801CA094 001C5CF4 4E 80 04 21 */ bctrl
/* 801CA098 001C5CF8 2C 03 00 00 */ cmpwi r3, 0
/* 801CA09C 001C5CFC 41 82 00 24 */ beq lbl_801CA0C0
/* 801CA0A0 001C5D00 38 00 00 01 */ li r0, 1
/* 801CA0A4 001C5D04 38 80 00 00 */ li r4, 0
/* 801CA0A8 001C5D08 98 1E 00 0A */ stb r0, 0xa(r30)
/* 801CA0AC 001C5D0C 38 00 00 28 */ li r0, 0x28
/* 801CA0B0 001C5D10 38 60 FF FF */ li r3, -1
/* 801CA0B4 001C5D14 90 9E 00 28 */ stw r4, 0x28(r30)
/* 801CA0B8 001C5D18 90 0D 9F C8 */ stw r0, lbl_8063F288-_SDA_BASE_(r13)
/* 801CA0BC 001C5D1C 48 00 00 1C */ b lbl_801CA0D8
lbl_801CA0C0:
/* 801CA0C0 001C5D20 38 60 00 00 */ li r3, 0
/* 801CA0C4 001C5D24 98 7E 00 09 */ stb r3, 9(r30)
/* 801CA0C8 001C5D28 80 01 00 08 */ lwz r0, 8(r1)
/* 801CA0CC 001C5D2C 90 1E 00 18 */ stw r0, 0x18(r30)
/* 801CA0D0 001C5D30 90 7E 00 28 */ stw r3, 0x28(r30)
lbl_801CA0D4:
/* 801CA0D4 001C5D34 38 60 00 00 */ li r3, 0
lbl_801CA0D8:
/* 801CA0D8 001C5D38 80 01 00 24 */ lwz r0, 0x24(r1)
/* 801CA0DC 001C5D3C 83 E1 00 1C */ lwz r31, 0x1c(r1)
/* 801CA0E0 001C5D40 83 C1 00 18 */ lwz r30, 0x18(r1)
/* 801CA0E4 001C5D44 7C 08 03 A6 */ mtlr r0
/* 801CA0E8 001C5D48 38 21 00 20 */ addi r1, r1, 0x20
/* 801CA0EC 001C5D4C 4E 80 00 20 */ blr
.global fseek
fseek:
/* 801CA0F0 001C5D50 4B FF FE 3C */ b _fseek
.global rewind
rewind:
/* 801CA0F4 001C5D54 94 21 FF F0 */ stwu r1, -0x10(r1)
/* 801CA0F8 001C5D58 7C 08 02 A6 */ mflr r0
/* 801CA0FC 001C5D5C 38 80 00 00 */ li r4, 0
/* 801CA100 001C5D60 38 A0 00 00 */ li r5, 0
/* 801CA104 001C5D64 90 01 00 14 */ stw r0, 0x14(r1)
/* 801CA108 001C5D68 93 E1 00 0C */ stw r31, 0xc(r1)
/* 801CA10C 001C5D6C 3B E0 00 00 */ li r31, 0
/* 801CA110 001C5D70 93 C1 00 08 */ stw r30, 8(r1)
/* 801CA114 001C5D74 7C 7E 1B 78 */ mr r30, r3
/* 801CA118 001C5D78 9B E3 00 0A */ stb r31, 0xa(r3)
/* 801CA11C 001C5D7C 4B FF FE 11 */ bl _fseek
/* 801CA120 001C5D80 9B FE 00 0A */ stb r31, 0xa(r30)
/* 801CA124 001C5D84 83 E1 00 0C */ lwz r31, 0xc(r1)
/* 801CA128 001C5D88 83 C1 00 08 */ lwz r30, 8(r1)
/* 801CA12C 001C5D8C 80 01 00 14 */ lwz r0, 0x14(r1)
/* 801CA130 001C5D90 7C 08 03 A6 */ mtlr r0
/* 801CA134 001C5D94 38 21 00 10 */ addi r1, r1, 0x10
/* 801CA138 001C5D98 4E 80 00 20 */ blr
|