mirror of
https://github.com/encounter/ogws.git
synced 2026-03-30 11:33:37 -07:00
287 lines
12 KiB
ArmAsm
287 lines
12 KiB
ArmAsm
.include "macros.inc"
|
|
|
|
.section .text, "ax"
|
|
.global strcpy
|
|
strcpy:
|
|
/* 800B8C34 000B3B34 54 60 07 BE */ clrlwi r0, r3, 0x1e
|
|
/* 800B8C38 000B3B38 54 85 07 BE */ clrlwi r5, r4, 0x1e
|
|
/* 800B8C3C 000B3B3C 7C 00 28 40 */ cmplw r0, r5
|
|
/* 800B8C40 000B3B40 7C 67 1B 78 */ mr r7, r3
|
|
/* 800B8C44 000B3B44 40 82 00 8C */ bne lbl_800B8CD0
|
|
/* 800B8C48 000B3B48 2C 05 00 00 */ cmpwi r5, 0
|
|
/* 800B8C4C 000B3B4C 41 82 00 40 */ beq lbl_800B8C8C
|
|
/* 800B8C50 000B3B50 88 04 00 00 */ lbz r0, 0(r4)
|
|
/* 800B8C54 000B3B54 2C 00 00 00 */ cmpwi r0, 0
|
|
/* 800B8C58 000B3B58 98 03 00 00 */ stb r0, 0(r3)
|
|
/* 800B8C5C 000B3B5C 4D 82 00 20 */ beqlr
|
|
/* 800B8C60 000B3B60 20 05 00 03 */ subfic r0, r5, 3
|
|
/* 800B8C64 000B3B64 7C 09 03 A6 */ mtctr r0
|
|
/* 800B8C68 000B3B68 2C 00 00 00 */ cmpwi r0, 0
|
|
/* 800B8C6C 000B3B6C 41 82 00 18 */ beq lbl_800B8C84
|
|
lbl_800B8C70:
|
|
/* 800B8C70 000B3B70 8C 04 00 01 */ lbzu r0, 1(r4)
|
|
/* 800B8C74 000B3B74 2C 00 00 00 */ cmpwi r0, 0
|
|
/* 800B8C78 000B3B78 9C 07 00 01 */ stbu r0, 1(r7)
|
|
/* 800B8C7C 000B3B7C 4D 82 00 20 */ beqlr
|
|
/* 800B8C80 000B3B80 42 00 FF F0 */ bdnz lbl_800B8C70
|
|
lbl_800B8C84:
|
|
/* 800B8C84 000B3B84 38 E7 00 01 */ addi r7, r7, 1
|
|
/* 800B8C88 000B3B88 38 84 00 01 */ addi r4, r4, 1
|
|
lbl_800B8C8C:
|
|
/* 800B8C8C 000B3B8C 81 04 00 00 */ lwz r8, 0(r4)
|
|
/* 800B8C90 000B3B90 3C A0 80 81 */ lis r5, 0x80808080@ha
|
|
/* 800B8C94 000B3B94 38 A5 80 80 */ addi r5, r5, 0x80808080@l
|
|
/* 800B8C98 000B3B98 3C C8 FE FF */ addis r6, r8, 0xfeff
|
|
/* 800B8C9C 000B3B9C 38 C6 FE FF */ addi r6, r6, -257
|
|
/* 800B8CA0 000B3BA0 7C C6 40 78 */ andc r6, r6, r8
|
|
/* 800B8CA4 000B3BA4 7C C0 28 39 */ and. r0, r6, r5
|
|
/* 800B8CA8 000B3BA8 40 82 00 28 */ bne lbl_800B8CD0
|
|
/* 800B8CAC 000B3BAC 38 E7 FF FC */ addi r7, r7, -4
|
|
lbl_800B8CB0:
|
|
/* 800B8CB0 000B3BB0 95 07 00 04 */ stwu r8, 4(r7)
|
|
/* 800B8CB4 000B3BB4 85 04 00 04 */ lwzu r8, 4(r4)
|
|
/* 800B8CB8 000B3BB8 3C C8 FE FF */ addis r6, r8, 0xfeff
|
|
/* 800B8CBC 000B3BBC 38 C6 FE FF */ addi r6, r6, -257
|
|
/* 800B8CC0 000B3BC0 7C C6 40 78 */ andc r6, r6, r8
|
|
/* 800B8CC4 000B3BC4 7C C0 28 39 */ and. r0, r6, r5
|
|
/* 800B8CC8 000B3BC8 41 82 FF E8 */ beq lbl_800B8CB0
|
|
/* 800B8CCC 000B3BCC 38 E7 00 04 */ addi r7, r7, 4
|
|
lbl_800B8CD0:
|
|
/* 800B8CD0 000B3BD0 88 04 00 00 */ lbz r0, 0(r4)
|
|
/* 800B8CD4 000B3BD4 2C 00 00 00 */ cmpwi r0, 0
|
|
/* 800B8CD8 000B3BD8 98 07 00 00 */ stb r0, 0(r7)
|
|
/* 800B8CDC 000B3BDC 4D 82 00 20 */ beqlr
|
|
lbl_800B8CE0:
|
|
/* 800B8CE0 000B3BE0 8C 04 00 01 */ lbzu r0, 1(r4)
|
|
/* 800B8CE4 000B3BE4 2C 00 00 00 */ cmpwi r0, 0
|
|
/* 800B8CE8 000B3BE8 9C 07 00 01 */ stbu r0, 1(r7)
|
|
/* 800B8CEC 000B3BEC 40 82 FF F4 */ bne lbl_800B8CE0
|
|
/* 800B8CF0 000B3BF0 4E 80 00 20 */ blr
|
|
|
|
.global strncpy
|
|
strncpy:
|
|
/* 800B8CF4 000B3BF4 38 84 FF FF */ addi r4, r4, -1
|
|
/* 800B8CF8 000B3BF8 38 C3 FF FF */ addi r6, r3, -1
|
|
/* 800B8CFC 000B3BFC 38 A5 00 01 */ addi r5, r5, 1
|
|
/* 800B8D00 000B3C00 48 00 00 2C */ b lbl_800B8D2C
|
|
lbl_800B8D04:
|
|
/* 800B8D04 000B3C04 8C 04 00 01 */ lbzu r0, 1(r4)
|
|
/* 800B8D08 000B3C08 2C 00 00 00 */ cmpwi r0, 0
|
|
/* 800B8D0C 000B3C0C 9C 06 00 01 */ stbu r0, 1(r6)
|
|
/* 800B8D10 000B3C10 40 82 00 1C */ bne lbl_800B8D2C
|
|
/* 800B8D14 000B3C14 38 00 00 00 */ li r0, 0
|
|
/* 800B8D18 000B3C18 48 00 00 08 */ b lbl_800B8D20
|
|
lbl_800B8D1C:
|
|
/* 800B8D1C 000B3C1C 9C 06 00 01 */ stbu r0, 1(r6)
|
|
lbl_800B8D20:
|
|
/* 800B8D20 000B3C20 34 A5 FF FF */ addic. r5, r5, -1
|
|
/* 800B8D24 000B3C24 40 82 FF F8 */ bne lbl_800B8D1C
|
|
/* 800B8D28 000B3C28 4E 80 00 20 */ blr
|
|
lbl_800B8D2C:
|
|
/* 800B8D2C 000B3C2C 34 A5 FF FF */ addic. r5, r5, -1
|
|
/* 800B8D30 000B3C30 40 82 FF D4 */ bne lbl_800B8D04
|
|
/* 800B8D34 000B3C34 4E 80 00 20 */ blr
|
|
|
|
.global strcat
|
|
strcat:
|
|
/* 800B8D38 000B3C38 38 84 FF FF */ addi r4, r4, -1
|
|
/* 800B8D3C 000B3C3C 38 A3 FF FF */ addi r5, r3, -1
|
|
lbl_800B8D40:
|
|
/* 800B8D40 000B3C40 8C 05 00 01 */ lbzu r0, 1(r5)
|
|
/* 800B8D44 000B3C44 2C 00 00 00 */ cmpwi r0, 0
|
|
/* 800B8D48 000B3C48 40 82 FF F8 */ bne lbl_800B8D40
|
|
/* 800B8D4C 000B3C4C 38 A5 FF FF */ addi r5, r5, -1
|
|
lbl_800B8D50:
|
|
/* 800B8D50 000B3C50 8C 04 00 01 */ lbzu r0, 1(r4)
|
|
/* 800B8D54 000B3C54 2C 00 00 00 */ cmpwi r0, 0
|
|
/* 800B8D58 000B3C58 9C 05 00 01 */ stbu r0, 1(r5)
|
|
/* 800B8D5C 000B3C5C 40 82 FF F4 */ bne lbl_800B8D50
|
|
/* 800B8D60 000B3C60 4E 80 00 20 */ blr
|
|
|
|
.global strncat
|
|
strncat:
|
|
/* 800B8D64 000B3C64 38 84 FF FF */ addi r4, r4, -1
|
|
/* 800B8D68 000B3C68 38 C3 FF FF */ addi r6, r3, -1
|
|
lbl_800B8D6C:
|
|
/* 800B8D6C 000B3C6C 8C 06 00 01 */ lbzu r0, 1(r6)
|
|
/* 800B8D70 000B3C70 2C 00 00 00 */ cmpwi r0, 0
|
|
/* 800B8D74 000B3C74 40 82 FF F8 */ bne lbl_800B8D6C
|
|
/* 800B8D78 000B3C78 38 C6 FF FF */ addi r6, r6, -1
|
|
/* 800B8D7C 000B3C7C 38 A5 00 01 */ addi r5, r5, 1
|
|
/* 800B8D80 000B3C80 48 00 00 1C */ b lbl_800B8D9C
|
|
lbl_800B8D84:
|
|
/* 800B8D84 000B3C84 8C 04 00 01 */ lbzu r0, 1(r4)
|
|
/* 800B8D88 000B3C88 2C 00 00 00 */ cmpwi r0, 0
|
|
/* 800B8D8C 000B3C8C 9C 06 00 01 */ stbu r0, 1(r6)
|
|
/* 800B8D90 000B3C90 40 82 00 0C */ bne lbl_800B8D9C
|
|
/* 800B8D94 000B3C94 38 C6 FF FF */ addi r6, r6, -1
|
|
/* 800B8D98 000B3C98 48 00 00 0C */ b lbl_800B8DA4
|
|
lbl_800B8D9C:
|
|
/* 800B8D9C 000B3C9C 34 A5 FF FF */ addic. r5, r5, -1
|
|
/* 800B8DA0 000B3CA0 40 82 FF E4 */ bne lbl_800B8D84
|
|
lbl_800B8DA4:
|
|
/* 800B8DA4 000B3CA4 38 00 00 00 */ li r0, 0
|
|
/* 800B8DA8 000B3CA8 98 06 00 01 */ stb r0, 1(r6)
|
|
/* 800B8DAC 000B3CAC 4E 80 00 20 */ blr
|
|
|
|
.global strcmp
|
|
strcmp:
|
|
/* 800B8DB0 000B3CB0 88 A3 00 00 */ lbz r5, 0(r3)
|
|
/* 800B8DB4 000B3CB4 88 04 00 00 */ lbz r0, 0(r4)
|
|
/* 800B8DB8 000B3CB8 7C 00 28 51 */ subf. r0, r0, r5
|
|
/* 800B8DBC 000B3CBC 41 82 00 0C */ beq lbl_800B8DC8
|
|
/* 800B8DC0 000B3CC0 7C 03 03 78 */ mr r3, r0
|
|
/* 800B8DC4 000B3CC4 4E 80 00 20 */ blr
|
|
lbl_800B8DC8:
|
|
/* 800B8DC8 000B3CC8 54 80 07 BE */ clrlwi r0, r4, 0x1e
|
|
/* 800B8DCC 000B3CCC 54 66 07 BE */ clrlwi r6, r3, 0x1e
|
|
/* 800B8DD0 000B3CD0 7C 00 30 40 */ cmplw r0, r6
|
|
/* 800B8DD4 000B3CD4 40 82 00 C0 */ bne lbl_800B8E94
|
|
/* 800B8DD8 000B3CD8 2C 06 00 00 */ cmpwi r6, 0
|
|
/* 800B8DDC 000B3CDC 41 82 00 58 */ beq lbl_800B8E34
|
|
/* 800B8DE0 000B3CE0 2C 05 00 00 */ cmpwi r5, 0
|
|
/* 800B8DE4 000B3CE4 40 82 00 0C */ bne lbl_800B8DF0
|
|
/* 800B8DE8 000B3CE8 38 60 00 00 */ li r3, 0
|
|
/* 800B8DEC 000B3CEC 4E 80 00 20 */ blr
|
|
lbl_800B8DF0:
|
|
/* 800B8DF0 000B3CF0 20 06 00 03 */ subfic r0, r6, 3
|
|
/* 800B8DF4 000B3CF4 7C 09 03 A6 */ mtctr r0
|
|
/* 800B8DF8 000B3CF8 2C 00 00 00 */ cmpwi r0, 0
|
|
/* 800B8DFC 000B3CFC 41 82 00 30 */ beq lbl_800B8E2C
|
|
lbl_800B8E00:
|
|
/* 800B8E00 000B3D00 8C A3 00 01 */ lbzu r5, 1(r3)
|
|
/* 800B8E04 000B3D04 8C 04 00 01 */ lbzu r0, 1(r4)
|
|
/* 800B8E08 000B3D08 7C 00 28 51 */ subf. r0, r0, r5
|
|
/* 800B8E0C 000B3D0C 41 82 00 0C */ beq lbl_800B8E18
|
|
/* 800B8E10 000B3D10 7C 03 03 78 */ mr r3, r0
|
|
/* 800B8E14 000B3D14 4E 80 00 20 */ blr
|
|
lbl_800B8E18:
|
|
/* 800B8E18 000B3D18 2C 05 00 00 */ cmpwi r5, 0
|
|
/* 800B8E1C 000B3D1C 40 82 00 0C */ bne lbl_800B8E28
|
|
/* 800B8E20 000B3D20 38 60 00 00 */ li r3, 0
|
|
/* 800B8E24 000B3D24 4E 80 00 20 */ blr
|
|
lbl_800B8E28:
|
|
/* 800B8E28 000B3D28 42 00 FF D8 */ bdnz lbl_800B8E00
|
|
lbl_800B8E2C:
|
|
/* 800B8E2C 000B3D2C 38 63 00 01 */ addi r3, r3, 1
|
|
/* 800B8E30 000B3D30 38 84 00 01 */ addi r4, r4, 1
|
|
lbl_800B8E34:
|
|
/* 800B8E34 000B3D34 80 E3 00 00 */ lwz r7, 0(r3)
|
|
/* 800B8E38 000B3D38 3C A0 80 81 */ lis r5, 0x80808080@ha
|
|
/* 800B8E3C 000B3D3C 38 C5 80 80 */ addi r6, r5, 0x80808080@l
|
|
/* 800B8E40 000B3D40 81 04 00 00 */ lwz r8, 0(r4)
|
|
/* 800B8E44 000B3D44 3C A7 FE FF */ addis r5, r7, 0xfeff
|
|
/* 800B8E48 000B3D48 38 A5 FE FF */ addi r5, r5, -257
|
|
/* 800B8E4C 000B3D4C 7C A5 38 78 */ andc r5, r5, r7
|
|
/* 800B8E50 000B3D50 7C A0 30 39 */ and. r0, r5, r6
|
|
/* 800B8E54 000B3D54 40 82 00 28 */ bne lbl_800B8E7C
|
|
/* 800B8E58 000B3D58 48 00 00 1C */ b lbl_800B8E74
|
|
lbl_800B8E5C:
|
|
/* 800B8E5C 000B3D5C 84 E3 00 04 */ lwzu r7, 4(r3)
|
|
/* 800B8E60 000B3D60 85 04 00 04 */ lwzu r8, 4(r4)
|
|
/* 800B8E64 000B3D64 3C A7 FE FF */ addis r5, r7, 0xfeff
|
|
/* 800B8E68 000B3D68 38 05 FE FF */ addi r0, r5, -257
|
|
/* 800B8E6C 000B3D6C 7C 00 30 39 */ and. r0, r0, r6
|
|
/* 800B8E70 000B3D70 40 82 00 0C */ bne lbl_800B8E7C
|
|
lbl_800B8E74:
|
|
/* 800B8E74 000B3D74 7C 07 40 40 */ cmplw r7, r8
|
|
/* 800B8E78 000B3D78 41 82 FF E4 */ beq lbl_800B8E5C
|
|
lbl_800B8E7C:
|
|
/* 800B8E7C 000B3D7C 88 A3 00 00 */ lbz r5, 0(r3)
|
|
/* 800B8E80 000B3D80 88 04 00 00 */ lbz r0, 0(r4)
|
|
/* 800B8E84 000B3D84 7C 00 28 51 */ subf. r0, r0, r5
|
|
/* 800B8E88 000B3D88 41 82 00 0C */ beq lbl_800B8E94
|
|
/* 800B8E8C 000B3D8C 7C 03 03 78 */ mr r3, r0
|
|
/* 800B8E90 000B3D90 4E 80 00 20 */ blr
|
|
lbl_800B8E94:
|
|
/* 800B8E94 000B3D94 2C 05 00 00 */ cmpwi r5, 0
|
|
/* 800B8E98 000B3D98 40 82 00 0C */ bne lbl_800B8EA4
|
|
/* 800B8E9C 000B3D9C 38 60 00 00 */ li r3, 0
|
|
/* 800B8EA0 000B3DA0 4E 80 00 20 */ blr
|
|
lbl_800B8EA4:
|
|
/* 800B8EA4 000B3DA4 8C A3 00 01 */ lbzu r5, 1(r3)
|
|
/* 800B8EA8 000B3DA8 8C 04 00 01 */ lbzu r0, 1(r4)
|
|
/* 800B8EAC 000B3DAC 7C 00 28 51 */ subf. r0, r0, r5
|
|
/* 800B8EB0 000B3DB0 41 82 00 0C */ beq lbl_800B8EBC
|
|
/* 800B8EB4 000B3DB4 7C 03 03 78 */ mr r3, r0
|
|
/* 800B8EB8 000B3DB8 4E 80 00 20 */ blr
|
|
lbl_800B8EBC:
|
|
/* 800B8EBC 000B3DBC 2C 05 00 00 */ cmpwi r5, 0
|
|
/* 800B8EC0 000B3DC0 40 82 FF E4 */ bne lbl_800B8EA4
|
|
/* 800B8EC4 000B3DC4 38 60 00 00 */ li r3, 0
|
|
/* 800B8EC8 000B3DC8 4E 80 00 20 */ blr
|
|
|
|
.global strncmp
|
|
strncmp:
|
|
/* 800B8ECC 000B3DCC 38 63 FF FF */ addi r3, r3, -1
|
|
/* 800B8ED0 000B3DD0 38 84 FF FF */ addi r4, r4, -1
|
|
/* 800B8ED4 000B3DD4 38 C5 00 01 */ addi r6, r5, 1
|
|
/* 800B8ED8 000B3DD8 48 00 00 24 */ b lbl_800B8EFC
|
|
lbl_800B8EDC:
|
|
/* 800B8EDC 000B3DDC 8C 03 00 01 */ lbzu r0, 1(r3)
|
|
/* 800B8EE0 000B3DE0 8C A4 00 01 */ lbzu r5, 1(r4)
|
|
/* 800B8EE4 000B3DE4 7C 00 28 40 */ cmplw r0, r5
|
|
/* 800B8EE8 000B3DE8 41 82 00 0C */ beq lbl_800B8EF4
|
|
/* 800B8EEC 000B3DEC 7C 65 00 50 */ subf r3, r5, r0
|
|
/* 800B8EF0 000B3DF0 4E 80 00 20 */ blr
|
|
lbl_800B8EF4:
|
|
/* 800B8EF4 000B3DF4 2C 00 00 00 */ cmpwi r0, 0
|
|
/* 800B8EF8 000B3DF8 41 82 00 0C */ beq lbl_800B8F04
|
|
lbl_800B8EFC:
|
|
/* 800B8EFC 000B3DFC 34 C6 FF FF */ addic. r6, r6, -1
|
|
/* 800B8F00 000B3E00 40 82 FF DC */ bne lbl_800B8EDC
|
|
lbl_800B8F04:
|
|
/* 800B8F04 000B3E04 38 60 00 00 */ li r3, 0
|
|
/* 800B8F08 000B3E08 4E 80 00 20 */ blr
|
|
|
|
.global strchr
|
|
strchr:
|
|
/* 800B8F0C 000B3E0C 38 63 FF FF */ addi r3, r3, -1
|
|
/* 800B8F10 000B3E10 54 80 06 3E */ clrlwi r0, r4, 0x18
|
|
/* 800B8F14 000B3E14 48 00 00 0C */ b lbl_800B8F20
|
|
lbl_800B8F18:
|
|
/* 800B8F18 000B3E18 7C 04 00 40 */ cmplw r4, r0
|
|
/* 800B8F1C 000B3E1C 4D 82 00 20 */ beqlr
|
|
lbl_800B8F20:
|
|
/* 800B8F20 000B3E20 8C 83 00 01 */ lbzu r4, 1(r3)
|
|
/* 800B8F24 000B3E24 2C 04 00 00 */ cmpwi r4, 0
|
|
/* 800B8F28 000B3E28 40 82 FF F0 */ bne lbl_800B8F18
|
|
/* 800B8F2C 000B3E2C 2C 00 00 00 */ cmpwi r0, 0
|
|
/* 800B8F30 000B3E30 4D 82 00 20 */ beqlr
|
|
/* 800B8F34 000B3E34 38 60 00 00 */ li r3, 0
|
|
/* 800B8F38 000B3E38 4E 80 00 20 */ blr
|
|
|
|
.global strstr
|
|
strstr:
|
|
/* 800B8F3C 000B3E3C 2C 04 00 00 */ cmpwi r4, 0
|
|
/* 800B8F40 000B3E40 38 A3 FF FF */ addi r5, r3, -1
|
|
/* 800B8F44 000B3E44 4D 82 00 20 */ beqlr
|
|
/* 800B8F48 000B3E48 88 C4 00 00 */ lbz r6, 0(r4)
|
|
/* 800B8F4C 000B3E4C 2C 06 00 00 */ cmpwi r6, 0
|
|
/* 800B8F50 000B3E50 40 82 00 44 */ bne lbl_800B8F94
|
|
/* 800B8F54 000B3E54 4E 80 00 20 */ blr
|
|
/* 800B8F58 000B3E58 48 00 00 3C */ b lbl_800B8F94
|
|
lbl_800B8F5C:
|
|
/* 800B8F5C 000B3E5C 7C 00 30 40 */ cmplw r0, r6
|
|
/* 800B8F60 000B3E60 40 82 00 34 */ bne lbl_800B8F94
|
|
/* 800B8F64 000B3E64 38 E5 FF FF */ addi r7, r5, -1
|
|
/* 800B8F68 000B3E68 39 04 FF FF */ addi r8, r4, -1
|
|
lbl_800B8F6C:
|
|
/* 800B8F6C 000B3E6C 8C 07 00 01 */ lbzu r0, 1(r7)
|
|
/* 800B8F70 000B3E70 8C 68 00 01 */ lbzu r3, 1(r8)
|
|
/* 800B8F74 000B3E74 7C 00 18 40 */ cmplw r0, r3
|
|
/* 800B8F78 000B3E78 40 82 00 0C */ bne lbl_800B8F84
|
|
/* 800B8F7C 000B3E7C 2C 00 00 00 */ cmpwi r0, 0
|
|
/* 800B8F80 000B3E80 40 82 FF EC */ bne lbl_800B8F6C
|
|
lbl_800B8F84:
|
|
/* 800B8F84 000B3E84 2C 03 00 00 */ cmpwi r3, 0
|
|
/* 800B8F88 000B3E88 40 82 00 0C */ bne lbl_800B8F94
|
|
/* 800B8F8C 000B3E8C 7C A3 2B 78 */ mr r3, r5
|
|
/* 800B8F90 000B3E90 4E 80 00 20 */ blr
|
|
lbl_800B8F94:
|
|
/* 800B8F94 000B3E94 8C 05 00 01 */ lbzu r0, 1(r5)
|
|
/* 800B8F98 000B3E98 2C 00 00 00 */ cmpwi r0, 0
|
|
/* 800B8F9C 000B3E9C 40 82 FF C0 */ bne lbl_800B8F5C
|
|
/* 800B8FA0 000B3EA0 38 60 00 00 */ li r3, 0
|
|
/* 800B8FA4 000B3EA4 4E 80 00 20 */ blr
|