summaryrefslogtreecommitdiff
path: root/asm/SDK/VF/pf_clib.s
diff options
context:
space:
mode:
Diffstat (limited to 'asm/SDK/VF/pf_clib.s')
-rw-r--r--asm/SDK/VF/pf_clib.s246
1 files changed, 246 insertions, 0 deletions
diff --git a/asm/SDK/VF/pf_clib.s b/asm/SDK/VF/pf_clib.s
new file mode 100644
index 0000000..91f5f74
--- /dev/null
+++ b/asm/SDK/VF/pf_clib.s
@@ -0,0 +1,246 @@
+.include "macros.inc"
+
+.section .text, "ax" # 0x80006980 - 0x803E1E60
+
+.global VFipf_toupper
+VFipf_toupper:
+/* 80304E94 00300AF4 2C 03 00 61 */ cmpwi r3, 0x61
+/* 80304E98 00300AF8 4D 80 00 20 */ bltlr
+/* 80304E9C 00300AFC 2C 03 00 7A */ cmpwi r3, 0x7a
+/* 80304EA0 00300B00 4D 81 00 20 */ bgtlr
+/* 80304EA4 00300B04 38 63 FF E0 */ addi r3, r3, -32
+/* 80304EA8 00300B08 4E 80 00 20 */ blr
+
+.global VFipf_memcpy
+VFipf_memcpy:
+/* 80304EAC 00300B0C 54 60 07 BF */ clrlwi. r0, r3, 0x1e
+/* 80304EB0 00300B10 7C 68 1B 78 */ mr r8, r3
+/* 80304EB4 00300B14 40 82 00 9C */ bne lbl_80304F50
+/* 80304EB8 00300B18 54 80 07 BF */ clrlwi. r0, r4, 0x1e
+/* 80304EBC 00300B1C 40 82 00 94 */ bne lbl_80304F50
+/* 80304EC0 00300B20 28 05 00 03 */ cmplwi r5, 3
+/* 80304EC4 00300B24 54 A7 F0 BE */ srwi r7, r5, 2
+/* 80304EC8 00300B28 40 81 00 88 */ ble lbl_80304F50
+/* 80304ECC 00300B2C 54 E6 E8 FF */ rlwinm. r6, r7, 0x1d, 3, 0x1f
+/* 80304ED0 00300B30 54 E0 10 3A */ slwi r0, r7, 2
+/* 80304ED4 00300B34 7C 00 00 D0 */ neg r0, r0
+/* 80304ED8 00300B38 7C C9 03 A6 */ mtctr r6
+/* 80304EDC 00300B3C 41 82 00 58 */ beq lbl_80304F34
+lbl_80304EE0:
+/* 80304EE0 00300B40 80 C4 00 00 */ lwz r6, 0(r4)
+/* 80304EE4 00300B44 90 C8 00 00 */ stw r6, 0(r8)
+/* 80304EE8 00300B48 80 C4 00 04 */ lwz r6, 4(r4)
+/* 80304EEC 00300B4C 90 C8 00 04 */ stw r6, 4(r8)
+/* 80304EF0 00300B50 80 C4 00 08 */ lwz r6, 8(r4)
+/* 80304EF4 00300B54 90 C8 00 08 */ stw r6, 8(r8)
+/* 80304EF8 00300B58 80 C4 00 0C */ lwz r6, 0xc(r4)
+/* 80304EFC 00300B5C 90 C8 00 0C */ stw r6, 0xc(r8)
+/* 80304F00 00300B60 80 C4 00 10 */ lwz r6, 0x10(r4)
+/* 80304F04 00300B64 90 C8 00 10 */ stw r6, 0x10(r8)
+/* 80304F08 00300B68 80 C4 00 14 */ lwz r6, 0x14(r4)
+/* 80304F0C 00300B6C 90 C8 00 14 */ stw r6, 0x14(r8)
+/* 80304F10 00300B70 80 C4 00 18 */ lwz r6, 0x18(r4)
+/* 80304F14 00300B74 90 C8 00 18 */ stw r6, 0x18(r8)
+/* 80304F18 00300B78 80 C4 00 1C */ lwz r6, 0x1c(r4)
+/* 80304F1C 00300B7C 38 84 00 20 */ addi r4, r4, 0x20
+/* 80304F20 00300B80 90 C8 00 1C */ stw r6, 0x1c(r8)
+/* 80304F24 00300B84 39 08 00 20 */ addi r8, r8, 0x20
+/* 80304F28 00300B88 42 00 FF B8 */ bdnz lbl_80304EE0
+/* 80304F2C 00300B8C 70 E7 00 07 */ andi. r7, r7, 7
+/* 80304F30 00300B90 41 82 00 1C */ beq lbl_80304F4C
+lbl_80304F34:
+/* 80304F34 00300B94 7C E9 03 A6 */ mtctr r7
+lbl_80304F38:
+/* 80304F38 00300B98 80 C4 00 00 */ lwz r6, 0(r4)
+/* 80304F3C 00300B9C 38 84 00 04 */ addi r4, r4, 4
+/* 80304F40 00300BA0 90 C8 00 00 */ stw r6, 0(r8)
+/* 80304F44 00300BA4 39 08 00 04 */ addi r8, r8, 4
+/* 80304F48 00300BA8 42 00 FF F0 */ bdnz lbl_80304F38
+lbl_80304F4C:
+/* 80304F4C 00300BAC 7C A5 02 14 */ add r5, r5, r0
+lbl_80304F50:
+/* 80304F50 00300BB0 2C 05 00 00 */ cmpwi r5, 0
+/* 80304F54 00300BB4 4D 82 00 20 */ beqlr
+/* 80304F58 00300BB8 54 A0 E8 FF */ rlwinm. r0, r5, 0x1d, 3, 0x1f
+/* 80304F5C 00300BBC 7C 09 03 A6 */ mtctr r0
+/* 80304F60 00300BC0 41 82 00 58 */ beq lbl_80304FB8
+lbl_80304F64:
+/* 80304F64 00300BC4 88 04 00 00 */ lbz r0, 0(r4)
+/* 80304F68 00300BC8 98 08 00 00 */ stb r0, 0(r8)
+/* 80304F6C 00300BCC 88 04 00 01 */ lbz r0, 1(r4)
+/* 80304F70 00300BD0 98 08 00 01 */ stb r0, 1(r8)
+/* 80304F74 00300BD4 88 04 00 02 */ lbz r0, 2(r4)
+/* 80304F78 00300BD8 98 08 00 02 */ stb r0, 2(r8)
+/* 80304F7C 00300BDC 88 04 00 03 */ lbz r0, 3(r4)
+/* 80304F80 00300BE0 98 08 00 03 */ stb r0, 3(r8)
+/* 80304F84 00300BE4 88 04 00 04 */ lbz r0, 4(r4)
+/* 80304F88 00300BE8 98 08 00 04 */ stb r0, 4(r8)
+/* 80304F8C 00300BEC 88 04 00 05 */ lbz r0, 5(r4)
+/* 80304F90 00300BF0 98 08 00 05 */ stb r0, 5(r8)
+/* 80304F94 00300BF4 88 04 00 06 */ lbz r0, 6(r4)
+/* 80304F98 00300BF8 98 08 00 06 */ stb r0, 6(r8)
+/* 80304F9C 00300BFC 88 04 00 07 */ lbz r0, 7(r4)
+/* 80304FA0 00300C00 38 84 00 08 */ addi r4, r4, 8
+/* 80304FA4 00300C04 98 08 00 07 */ stb r0, 7(r8)
+/* 80304FA8 00300C08 39 08 00 08 */ addi r8, r8, 8
+/* 80304FAC 00300C0C 42 00 FF B8 */ bdnz lbl_80304F64
+/* 80304FB0 00300C10 70 A5 00 07 */ andi. r5, r5, 7
+/* 80304FB4 00300C14 4D 82 00 20 */ beqlr
+lbl_80304FB8:
+/* 80304FB8 00300C18 7C A9 03 A6 */ mtctr r5
+lbl_80304FBC:
+/* 80304FBC 00300C1C 88 04 00 00 */ lbz r0, 0(r4)
+/* 80304FC0 00300C20 38 84 00 01 */ addi r4, r4, 1
+/* 80304FC4 00300C24 98 08 00 00 */ stb r0, 0(r8)
+/* 80304FC8 00300C28 39 08 00 01 */ addi r8, r8, 1
+/* 80304FCC 00300C2C 42 00 FF F0 */ bdnz lbl_80304FBC
+/* 80304FD0 00300C30 4E 80 00 20 */ blr
+
+.global VFipf_memset
+VFipf_memset:
+/* 80304FD4 00300C34 7C 69 1B 78 */ mr r9, r3
+/* 80304FD8 00300C38 48 00 00 10 */ b lbl_80304FE8
+lbl_80304FDC:
+/* 80304FDC 00300C3C 98 89 00 00 */ stb r4, 0(r9)
+/* 80304FE0 00300C40 39 29 00 01 */ addi r9, r9, 1
+/* 80304FE4 00300C44 38 A5 FF FF */ addi r5, r5, -1
+lbl_80304FE8:
+/* 80304FE8 00300C48 55 20 07 BF */ clrlwi. r0, r9, 0x1e
+/* 80304FEC 00300C4C 41 82 00 0C */ beq lbl_80304FF8
+/* 80304FF0 00300C50 2C 05 00 00 */ cmpwi r5, 0
+/* 80304FF4 00300C54 40 82 FF E8 */ bne lbl_80304FDC
+lbl_80304FF8:
+/* 80304FF8 00300C58 54 87 40 2E */ slwi r7, r4, 8
+/* 80304FFC 00300C5C 28 05 00 03 */ cmplwi r5, 3
+/* 80305000 00300C60 7C 88 3B 78 */ or r8, r4, r7
+/* 80305004 00300C64 54 86 C0 0E */ slwi r6, r4, 0x18
+/* 80305008 00300C68 54 80 80 1E */ slwi r0, r4, 0x10
+/* 8030500C 00300C6C 54 A7 F0 BE */ srwi r7, r5, 2
+/* 80305010 00300C70 7C C0 03 78 */ or r0, r6, r0
+/* 80305014 00300C74 7D 08 03 78 */ or r8, r8, r0
+/* 80305018 00300C78 40 81 00 5C */ ble lbl_80305074
+/* 8030501C 00300C7C 54 E6 E8 FF */ rlwinm. r6, r7, 0x1d, 3, 0x1f
+/* 80305020 00300C80 54 E0 10 3A */ slwi r0, r7, 2
+/* 80305024 00300C84 7C 00 00 D0 */ neg r0, r0
+/* 80305028 00300C88 7C C9 03 A6 */ mtctr r6
+/* 8030502C 00300C8C 41 82 00 34 */ beq lbl_80305060
+lbl_80305030:
+/* 80305030 00300C90 91 09 00 00 */ stw r8, 0(r9)
+/* 80305034 00300C94 91 09 00 04 */ stw r8, 4(r9)
+/* 80305038 00300C98 91 09 00 08 */ stw r8, 8(r9)
+/* 8030503C 00300C9C 91 09 00 0C */ stw r8, 0xc(r9)
+/* 80305040 00300CA0 91 09 00 10 */ stw r8, 0x10(r9)
+/* 80305044 00300CA4 91 09 00 14 */ stw r8, 0x14(r9)
+/* 80305048 00300CA8 91 09 00 18 */ stw r8, 0x18(r9)
+/* 8030504C 00300CAC 91 09 00 1C */ stw r8, 0x1c(r9)
+/* 80305050 00300CB0 39 29 00 20 */ addi r9, r9, 0x20
+/* 80305054 00300CB4 42 00 FF DC */ bdnz lbl_80305030
+/* 80305058 00300CB8 70 E7 00 07 */ andi. r7, r7, 7
+/* 8030505C 00300CBC 41 82 00 14 */ beq lbl_80305070
+lbl_80305060:
+/* 80305060 00300CC0 7C E9 03 A6 */ mtctr r7
+lbl_80305064:
+/* 80305064 00300CC4 91 09 00 00 */ stw r8, 0(r9)
+/* 80305068 00300CC8 39 29 00 04 */ addi r9, r9, 4
+/* 8030506C 00300CCC 42 00 FF F8 */ bdnz lbl_80305064
+lbl_80305070:
+/* 80305070 00300CD0 7C A5 02 14 */ add r5, r5, r0
+lbl_80305074:
+/* 80305074 00300CD4 2C 05 00 00 */ cmpwi r5, 0
+/* 80305078 00300CD8 4D 82 00 20 */ beqlr
+/* 8030507C 00300CDC 54 A0 E8 FF */ rlwinm. r0, r5, 0x1d, 3, 0x1f
+/* 80305080 00300CE0 7C 09 03 A6 */ mtctr r0
+/* 80305084 00300CE4 41 82 00 34 */ beq lbl_803050B8
+lbl_80305088:
+/* 80305088 00300CE8 98 89 00 00 */ stb r4, 0(r9)
+/* 8030508C 00300CEC 98 89 00 01 */ stb r4, 1(r9)
+/* 80305090 00300CF0 98 89 00 02 */ stb r4, 2(r9)
+/* 80305094 00300CF4 98 89 00 03 */ stb r4, 3(r9)
+/* 80305098 00300CF8 98 89 00 04 */ stb r4, 4(r9)
+/* 8030509C 00300CFC 98 89 00 05 */ stb r4, 5(r9)
+/* 803050A0 00300D00 98 89 00 06 */ stb r4, 6(r9)
+/* 803050A4 00300D04 98 89 00 07 */ stb r4, 7(r9)
+/* 803050A8 00300D08 39 29 00 08 */ addi r9, r9, 8
+/* 803050AC 00300D0C 42 00 FF DC */ bdnz lbl_80305088
+/* 803050B0 00300D10 70 A5 00 07 */ andi. r5, r5, 7
+/* 803050B4 00300D14 4D 82 00 20 */ beqlr
+lbl_803050B8:
+/* 803050B8 00300D18 7C A9 03 A6 */ mtctr r5
+lbl_803050BC:
+/* 803050BC 00300D1C 98 89 00 00 */ stb r4, 0(r9)
+/* 803050C0 00300D20 39 29 00 01 */ addi r9, r9, 1
+/* 803050C4 00300D24 42 00 FF F8 */ bdnz lbl_803050BC
+/* 803050C8 00300D28 4E 80 00 20 */ blr
+
+.global VFipf_strlen
+VFipf_strlen:
+/* 803050CC 00300D2C 7C 64 1B 78 */ mr r4, r3
+/* 803050D0 00300D30 48 00 00 08 */ b lbl_803050D8
+lbl_803050D4:
+/* 803050D4 00300D34 38 84 00 01 */ addi r4, r4, 1
+lbl_803050D8:
+/* 803050D8 00300D38 88 04 00 00 */ lbz r0, 0(r4)
+/* 803050DC 00300D3C 7C 00 07 75 */ extsb. r0, r0
+/* 803050E0 00300D40 40 82 FF F4 */ bne lbl_803050D4
+/* 803050E4 00300D44 7C 63 20 50 */ subf r3, r3, r4
+/* 803050E8 00300D48 4E 80 00 20 */ blr
+
+.global VFipf_strcpy
+VFipf_strcpy:
+/* 803050EC 00300D4C 7C 66 1B 78 */ mr r6, r3
+/* 803050F0 00300D50 48 00 00 0C */ b lbl_803050FC
+lbl_803050F4:
+/* 803050F4 00300D54 38 84 00 01 */ addi r4, r4, 1
+/* 803050F8 00300D58 38 C6 00 01 */ addi r6, r6, 1
+lbl_803050FC:
+/* 803050FC 00300D5C 88 A4 00 00 */ lbz r5, 0(r4)
+/* 80305100 00300D60 7C A0 07 75 */ extsb. r0, r5
+/* 80305104 00300D64 98 A6 00 00 */ stb r5, 0(r6)
+/* 80305108 00300D68 40 82 FF EC */ bne lbl_803050F4
+/* 8030510C 00300D6C 4E 80 00 20 */ blr
+
+.global VFipf_strcmp
+VFipf_strcmp:
+/* 80305110 00300D70 48 00 00 0C */ b lbl_8030511C
+lbl_80305114:
+/* 80305114 00300D74 38 63 00 01 */ addi r3, r3, 1
+/* 80305118 00300D78 38 84 00 01 */ addi r4, r4, 1
+lbl_8030511C:
+/* 8030511C 00300D7C 88 A3 00 00 */ lbz r5, 0(r3)
+/* 80305120 00300D80 2C 05 00 00 */ cmpwi r5, 0
+/* 80305124 00300D84 41 82 00 18 */ beq lbl_8030513C
+/* 80305128 00300D88 88 04 00 00 */ lbz r0, 0(r4)
+/* 8030512C 00300D8C 2C 00 00 00 */ cmpwi r0, 0
+/* 80305130 00300D90 41 82 00 0C */ beq lbl_8030513C
+/* 80305134 00300D94 7C 05 00 40 */ cmplw r5, r0
+/* 80305138 00300D98 41 82 FF DC */ beq lbl_80305114
+lbl_8030513C:
+/* 8030513C 00300D9C 88 04 00 00 */ lbz r0, 0(r4)
+/* 80305140 00300DA0 7C 60 28 50 */ subf r3, r0, r5
+/* 80305144 00300DA4 4E 80 00 20 */ blr
+
+.global VFipf_strncmp
+VFipf_strncmp:
+/* 80305148 00300DA8 7C A9 03 A6 */ mtctr r5
+/* 8030514C 00300DAC 2C 05 00 00 */ cmpwi r5, 0
+/* 80305150 00300DB0 41 82 00 3C */ beq lbl_8030518C
+lbl_80305154:
+/* 80305154 00300DB4 88 A3 00 00 */ lbz r5, 0(r3)
+/* 80305158 00300DB8 2C 05 00 00 */ cmpwi r5, 0
+/* 8030515C 00300DBC 41 82 00 18 */ beq lbl_80305174
+/* 80305160 00300DC0 88 04 00 00 */ lbz r0, 0(r4)
+/* 80305164 00300DC4 2C 00 00 00 */ cmpwi r0, 0
+/* 80305168 00300DC8 41 82 00 0C */ beq lbl_80305174
+/* 8030516C 00300DCC 7C 05 00 40 */ cmplw r5, r0
+/* 80305170 00300DD0 41 82 00 10 */ beq lbl_80305180
+lbl_80305174:
+/* 80305174 00300DD4 88 04 00 00 */ lbz r0, 0(r4)
+/* 80305178 00300DD8 7C 60 28 50 */ subf r3, r0, r5
+/* 8030517C 00300DDC 4E 80 00 20 */ blr
+lbl_80305180:
+/* 80305180 00300DE0 38 63 00 01 */ addi r3, r3, 1
+/* 80305184 00300DE4 38 84 00 01 */ addi r4, r4, 1
+/* 80305188 00300DE8 42 00 FF CC */ bdnz lbl_80305154
+lbl_8030518C:
+/* 8030518C 00300DEC 38 60 00 00 */ li r3, 0
+/* 80305190 00300DF0 4E 80 00 20 */ blr