Split libc.s, 3

This commit is contained in:
PikalaxALT
2021-06-01 18:04:43 -04:00
parent ba0d2b10f0
commit fc9bc957fa
16 changed files with 4352 additions and 4238 deletions

View File

@@ -563,6 +563,15 @@ Static arm9
Object MSL_mem.o
Object MSL_mem_funcs.o
Object MSL_printf.o
Object MSL_qsort.o
Object MSL_rand.o
Object MSL_scanf.o
Object MSL_signal.o
Object MSL_string.o
Object MSL_strtold.o
Object MSL_strtoul.o
Object MSL_wchar_io.o
Object MSL_wmem.o
Object libc.o
Object stdlibmwcc.o
}

View File

@@ -26,3 +26,23 @@ __upper_mapC: ; 0x0210428C
.byte 0x60, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4A, 0x4B, 0x4C, 0x4D, 0x4E, 0x4F
.byte 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, 0x5A, 0x7B, 0x7C, 0x7D, 0x7E, 0x7F
.size __upper_mapC,.-__upper_mapC
.global __msl_digit
__msl_digit: ; 0x0210430C
.short 0x0004, 0x0004, 0x0004, 0x0004, 0x0004, 0x0004, 0x0004, 0x0004
.short 0x0004, 0x0106, 0x0104, 0x0104, 0x0104, 0x0104, 0x0004, 0x0004
.short 0x0004, 0x0004, 0x0004, 0x0004, 0x0004, 0x0004, 0x0004, 0x0004
.short 0x0004, 0x0004, 0x0004, 0x0004, 0x0004, 0x0004, 0x0004, 0x0004
.short 0x0142, 0x00D0, 0x00D0, 0x00D0, 0x00D0, 0x00D0, 0x00D0, 0x00D0
.short 0x00D0, 0x00D0, 0x00D0, 0x00D0, 0x00D0, 0x00D0, 0x00D0, 0x00D0
.short 0x0458, 0x0458, 0x0458, 0x0458, 0x0458, 0x0458, 0x0458, 0x0458
.short 0x0458, 0x0458, 0x00D0, 0x00D0, 0x00D0, 0x00D0, 0x00D0, 0x00D0
.short 0x00D0, 0x0651, 0x0651, 0x0651, 0x0651, 0x0651, 0x0651, 0x0251
.short 0x0251, 0x0251, 0x0251, 0x0251, 0x0251, 0x0251, 0x0251, 0x0251
.short 0x0251, 0x0251, 0x0251, 0x0251, 0x0251, 0x0251, 0x0251, 0x0251
.short 0x0251, 0x0251, 0x0251, 0x00D0, 0x00D0, 0x00D0, 0x00D0, 0x00D0
.short 0x00D0, 0x0471, 0x0471, 0x0471, 0x0471, 0x0471, 0x0471, 0x0071
.short 0x0071, 0x0071, 0x0071, 0x0071, 0x0071, 0x0071, 0x0071, 0x0071
.short 0x0071, 0x0071, 0x0071, 0x0071, 0x0071, 0x0071, 0x0071, 0x0071
.short 0x0071, 0x0071, 0x0071, 0x00D0, 0x00D0, 0x00D0, 0x00D0, 0x0004
.size __msl_digit,.-__msl_digit

View File

@@ -8,86 +8,76 @@
.extern memchr
.extern fwide
.extern fabs
.rodata
.global UNK_0210430C
UNK_0210430C: ; 0x0210430C
.byte 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00
.byte 0x04, 0x00, 0x06, 0x01, 0x04, 0x01, 0x04, 0x01, 0x04, 0x01, 0x04, 0x01, 0x04, 0x00, 0x04, 0x00
.byte 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00
.byte 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00
.byte 0x42, 0x01, 0xD0, 0x00, 0xD0, 0x00, 0xD0, 0x00, 0xD0, 0x00, 0xD0, 0x00, 0xD0, 0x00, 0xD0, 0x00
.byte 0xD0, 0x00, 0xD0, 0x00, 0xD0, 0x00, 0xD0, 0x00, 0xD0, 0x00, 0xD0, 0x00, 0xD0, 0x00, 0xD0, 0x00
.byte 0x58, 0x04, 0x58, 0x04, 0x58, 0x04, 0x58, 0x04, 0x58, 0x04, 0x58, 0x04, 0x58, 0x04, 0x58, 0x04
.byte 0x58, 0x04, 0x58, 0x04, 0xD0, 0x00, 0xD0, 0x00, 0xD0, 0x00, 0xD0, 0x00, 0xD0, 0x00, 0xD0, 0x00
.byte 0xD0, 0x00, 0x51, 0x06, 0x51, 0x06, 0x51, 0x06, 0x51, 0x06, 0x51, 0x06, 0x51, 0x06, 0x51, 0x02
.byte 0x51, 0x02, 0x51, 0x02, 0x51, 0x02, 0x51, 0x02, 0x51, 0x02, 0x51, 0x02, 0x51, 0x02, 0x51, 0x02
.byte 0x51, 0x02, 0x51, 0x02, 0x51, 0x02, 0x51, 0x02, 0x51, 0x02, 0x51, 0x02, 0x51, 0x02, 0x51, 0x02
.byte 0x51, 0x02, 0x51, 0x02, 0x51, 0x02, 0xD0, 0x00, 0xD0, 0x00, 0xD0, 0x00, 0xD0, 0x00, 0xD0, 0x00
.byte 0xD0, 0x00, 0x71, 0x04, 0x71, 0x04, 0x71, 0x04, 0x71, 0x04, 0x71, 0x04, 0x71, 0x04, 0x71, 0x00
.byte 0x71, 0x00, 0x71, 0x00, 0x71, 0x00, 0x71, 0x00, 0x71, 0x00, 0x71, 0x00, 0x71, 0x00, 0x71, 0x00
.byte 0x71, 0x00, 0x71, 0x00, 0x71, 0x00, 0x71, 0x00, 0x71, 0x00, 0x71, 0x00, 0x71, 0x00, 0x71, 0x00
.byte 0x71, 0x00, 0x71, 0x00, 0x71, 0x00, 0xD0, 0x00, 0xD0, 0x00, 0xD0, 0x00, 0xD0, 0x00, 0x04, 0x00
.size UNK_0210430C,.-UNK_0210430C
.extern __msl_digit
.data
.global UNK_02106DA0
UNK_02106DA0: ; 0x02106DA0
.byte 0x30, 0x78, 0x30, 0x70, 0x30, 0x00, 0x00, 0x00
.size UNK_02106DA0,.-UNK_02106DA0
.global UNK_02106DA8
UNK_02106DA8: ; 0x02106DA8
.asciz "-INF"
.size UNK_02106DA8,.-UNK_02106DA8
.balign 4, 0
.global UNK_02106DB0
UNK_02106DB0: ; 0x02106DB0
.asciz "-inf"
.size UNK_02106DB0,.-UNK_02106DB0
.balign 4, 0
.global UNK_02106DB8
UNK_02106DB8: ; 0x02106DB8
.asciz "INF"
.size UNK_02106DB8,.-UNK_02106DB8
.balign 4, 0
.global UNK_02106DBC
UNK_02106DBC: ; 0x02106DBC
.asciz "inf"
.size UNK_02106DBC,.-UNK_02106DBC
.balign 4, 0
.global UNK_02106DC0
UNK_02106DC0: ; 0x02106DC0
.asciz "-NAN"
.size UNK_02106DC0,.-UNK_02106DC0
.balign 4, 0
.global UNK_02106DC8
UNK_02106DC8: ; 0x02106DC8
.asciz "-nan"
.size UNK_02106DC8,.-UNK_02106DC8
.balign 4, 0
.global UNK_02106DD0
UNK_02106DD0: ; 0x02106DD0
.asciz "NAN"
.size UNK_02106DD0,.-UNK_02106DD0
.balign 4, 0
.global UNK_02106DD4
UNK_02106DD4: ; 0x02106DD4
.asciz "nan"
.size UNK_02106DD4,.-UNK_02106DD4
.balign 4, 0
.global UNK_02106DD8
UNK_02106DD8: ; 0x02106DD8
.byte 0x00, 0x00, 0x00, 0x00
.size UNK_02106DD8,.-UNK_02106DD8
.global UNK_02106DDC
UNK_02106DDC: ; 0x02106DDC
.byte 0x00, 0x00, 0x00, 0x00
.size UNK_02106DDC,.-UNK_02106DDC
.text
arm_func_start parse_format_printf
parse_format_printf: ; 0x020DF600
local_arm_func_start parse_format
parse_format: ; 0x020DF600
stmdb sp!, {r4-r8,lr}
sub sp, sp, #0x10
ldrsb r3, [r0, #0x1]
@@ -181,7 +171,7 @@ _020DF73C:
ldrsb r3, [r12, #0x1]!
b _020DF794
_020DF744:
ldr r4, _020DFB88 ; =UNK_0210430C
ldr r4, _020DFB88 ; =__msl_digit
mov r5, #0x0
mov r0, #0xa
b _020DF768
@@ -238,7 +228,7 @@ _020DF7C4:
strltb r0, [sp, #0x2]
b _020DF858
_020DF808:
ldr r2, _020DFB88 ; =UNK_0210430C
ldr r2, _020DFB88 ; =__msl_digit
mov r4, #0x0
mov r0, #0xa
b _020DF82C
@@ -494,9 +484,9 @@ _020DFB70:
add sp, sp, #0x10
ldmia sp!, {r4-r8,pc}
.balign 4
_020DFB88: .word UNK_0210430C
_020DFB88: .word __msl_digit
_020DFB8C: .word 0x000001FD
arm_func_end parse_format_printf
arm_func_end parse_format
arm_func_start long2str
long2str: ; 0x020DFB90
@@ -1368,7 +1358,7 @@ _020E07BC:
mov r1, #0x0
b _020E07D4
_020E07C4:
ldr r1, _020E0DF8 ; =UNK_0210430C
ldr r1, _020E0DF8 ; =__msl_digit
mov r2, r6, lsl #0x1
ldrh r1, [r1, r2]
and r1, r1, #0x200
@@ -1416,7 +1406,7 @@ _020E0868:
mov r1, #0x0
b _020E0880
_020E0870:
ldr r1, _020E0DF8 ; =UNK_0210430C
ldr r1, _020E0DF8 ; =__msl_digit
mov r2, r6, lsl #0x1
ldrh r1, [r1, r2]
and r1, r1, #0x200
@@ -1463,7 +1453,7 @@ _020E0910:
mov r1, #0x0
b _020E0928
_020E0918:
ldr r1, _020E0DF8 ; =UNK_0210430C
ldr r1, _020E0DF8 ; =__msl_digit
mov r2, r6, lsl #0x1
ldrh r1, [r1, r2]
and r1, r1, #0x200
@@ -1511,7 +1501,7 @@ _020E09BC:
mov r1, #0x0
b _020E09D4
_020E09C4:
ldr r1, _020E0DF8 ; =UNK_0210430C
ldr r1, _020E0DF8 ; =__msl_digit
mov r2, r6, lsl #0x1
ldrh r1, [r1, r2]
and r1, r1, #0x200
@@ -1812,7 +1802,7 @@ _020E0DE0:
bx lr
.balign 4
_020E0DF4: .word 0x000001FD
_020E0DF8: .word UNK_0210430C
_020E0DF8: .word __msl_digit
_020E0DFC: .word UNK_02106DA8
_020E0E00: .word UNK_02106DB0
_020E0E04: .word UNK_02106DB8
@@ -1877,7 +1867,7 @@ _020E0ED4:
ldr r0, [sp, #0xc]
add r1, sp, #0x25c
add r2, sp, #0x1c
bl parse_format_printf
bl parse_format
ldrb r1, [sp, #0x21]
mov r11, r0
cmp r1, #0x61

106
arm9/asm/MSL_qsort.s Normal file
View File

@@ -0,0 +1,106 @@
.include "asm/macros.inc"
.include "global.inc"
.text
arm_func_start qsort
qsort: ; 0x020E1888
stmdb sp!, {r3-r11,lr}
sub sp, sp, #0x10
mov r9, r1
cmp r9, #0x2
mov r10, r0
mov r8, r2
mov r7, r3
addcc sp, sp, #0x10
ldmccia sp!, {r3-r11,pc}
mov r0, r9, lsr #0x1
add r11, r0, #0x1
sub r0, r11, #0x1
mla r0, r8, r0, r10
sub r2, r9, #0x1
str r0, [sp, #0xc]
mla r0, r8, r2, r10
str r0, [sp, #0x8]
mul r0, r11, r8
mvn r1, #0x0
str r0, [sp, #0x4]
mul r0, r8, r1
str r0, [sp, #0x0]
_020E18E0:
cmp r11, #0x1
bls _020E1908
ldr r0, [sp, #0x4]
sub r11, r11, #0x1
sub r0, r0, r8
str r0, [sp, #0x4]
ldr r0, [sp, #0xc]
sub r0, r0, r8
str r0, [sp, #0xc]
b _020E1950
_020E1908:
mov r2, r8
ldr r4, [sp, #0x8]
ldr r3, [sp, #0xc]
cmp r8, #0x0
beq _020E1934
_020E191C:
ldrsb r0, [r4, #0x0]
ldrsb r1, [r3, #0x0]
subs r2, r2, #0x1
strb r0, [r3], #0x1
strb r1, [r4], #0x1
bne _020E191C
_020E1934:
sub r9, r9, #0x1
cmp r9, #0x1
addeq sp, sp, #0x10
ldmeqia sp!, {r3-r11,pc}
ldr r0, [sp, #0x8]
sub r0, r0, r8
str r0, [sp, #0x8]
_020E1950:
ldr r1, [sp, #0x4]
ldr r0, [sp, #0x0]
mov r4, r11
add r0, r1, r0
cmp r9, r11, lsl #0x1
add r5, r10, r0
blo _020E18E0
_020E196C:
mov r4, r4, lsl #0x1
sub r0, r4, #0x1
mov r6, r5
mla r5, r8, r0, r10
cmp r9, r4
bls _020E199C
mov r0, r5
add r1, r5, r8
blx r7
cmp r0, #0x0
addlt r4, r4, #0x1
addlt r5, r5, r8
_020E199C:
mov r0, r6
mov r1, r5
blx r7
cmp r0, #0x0
bge _020E18E0
mov r2, r8
mov r3, r5
cmp r8, #0x0
beq _020E19D8
_020E19C0:
ldrsb r1, [r6, #0x0]
ldrsb r0, [r3, #0x0]
subs r2, r2, #0x1
strb r0, [r6], #0x1
strb r1, [r3], #0x1
bne _020E19C0
_020E19D8:
cmp r9, r4, lsl #0x1
bhs _020E196C
b _020E18E0
add sp, sp, #0x10
ldmia sp!, {r3-r11,pc}
arm_func_end qsort

38
arm9/asm/MSL_rand.s Normal file
View File

@@ -0,0 +1,38 @@
.include "asm/macros.inc"
.include "global.inc"
.data
.global random_next
random_next: ; 0x02106DE0
.word 0x00000001
.size random_next,.-random_next
.text
arm_func_start rand
rand: ; 0x020E19EC
ldr r2, _020E1A14 ; =random_next
ldr r0, _020E1A18 ; =0x41C64E6D
ldr r3, [r2, #0x0]
ldr r1, _020E1A1C ; =0x00007FFF
mul r0, r3, r0
add r0, r0, #0x39
add r0, r0, #0x3000
str r0, [r2, #0x0]
and r0, r1, r0, lsr #0x10
bx lr
.balign 4
_020E1A14: .word random_next
_020E1A18: .word 0x41C64E6D
_020E1A1C: .word 0x00007FFF
arm_func_end rand
arm_func_start srand
srand: ; 0x020E1A20
ldr r1, _020E1A2C ; =random_next
str r0, [r1, #0x0]
bx lr
.balign 4
_020E1A2C: .word random_next
arm_func_end srand

1450
arm9/asm/MSL_scanf.s Normal file

File diff suppressed because it is too large Load Diff

105
arm9/asm/MSL_signal.s Normal file
View File

@@ -0,0 +1,105 @@
.include "asm/macros.inc"
.include "global.inc"
.extern OSi_ThreadInfo
.extern __cs_id
.extern __cs_ref
.extern __cs
.bss
.global signal_funcs
signal_funcs: ; 0x021D74AC
.space 0x1c
.size signal_funcs,.-signal_funcs
.text
arm_func_start raise
raise: ; 0x020E2D7C
stmdb sp!, {r3-r5,lr}
mov r5, r0
cmp r5, #0x1
blt _020E2D94
cmp r5, #0x7
ble _020E2D9C
_020E2D94:
mvn r0, #0x0
ldmia sp!, {r3-r5,pc}
_020E2D9C:
ldr r0, _020E2E98 ; =__cs + 0xA8
bl OS_TryLockMutex
cmp r0, #0x0
bne _020E2DD0
ldr r0, _020E2E9C ; =OSi_ThreadInfo
ldr r1, _020E2EA0 ; =__cs_id
ldr r2, [r0, #0x4]
ldr r0, _020E2EA4 ; =__cs_ref
ldr r3, [r2, #0x6c]
mov r2, #0x1
str r3, [r1, #0x1c]
str r2, [r0, #0x1c]
b _020E2E28
_020E2DD0:
ldr r0, _020E2E9C ; =OSi_ThreadInfo
ldr r1, _020E2EA0 ; =__cs_id
ldr r0, [r0, #0x4]
ldr r1, [r1, #0x1c]
ldr r0, [r0, #0x6c]
cmp r1, r0
bne _020E2E00
ldr r0, _020E2EA4 ; =__cs_ref
ldr r1, [r0, #0x1c]
add r1, r1, #0x1
str r1, [r0, #0x1c]
b _020E2E28
_020E2E00:
ldr r0, _020E2E98 ; =__cs + 0xA8
bl OS_LockMutex
ldr r0, _020E2E9C ; =OSi_ThreadInfo
ldr r1, _020E2EA0 ; =__cs_id
ldr r2, [r0, #0x4]
ldr r0, _020E2EA4 ; =__cs_ref
ldr r3, [r2, #0x6c]
mov r2, #0x1
str r3, [r1, #0x1c]
str r2, [r0, #0x1c]
_020E2E28:
ldr r1, _020E2EA8 ; =signal_funcs
sub r2, r5, #0x1
ldr r4, [r1, r2, lsl #0x2]
cmp r4, #0x1
movne r0, #0x0
strne r0, [r1, r2, lsl #0x2]
ldr r0, _020E2EA4 ; =__cs_ref
ldr r1, [r0, #0x1c]
subs r1, r1, #0x1
str r1, [r0, #0x1c]
bne _020E2E5C
ldr r0, _020E2E98 ; =__cs + 0xA8
bl OS_UnlockMutex
_020E2E5C:
cmp r4, #0x1
beq _020E2E70
cmp r4, #0x0
cmpeq r5, #0x1
bne _020E2E78
_020E2E70:
mov r0, #0x0
ldmia sp!, {r3-r5,pc}
_020E2E78:
cmp r4, #0x0
bne _020E2E88
mov r0, #0x0
bl exit
_020E2E88:
mov r0, r5
blx r4
mov r0, #0x0
ldmia sp!, {r3-r5,pc}
.balign 4
_020E2E98: .word __cs + 0xA8
_020E2E9C: .word OSi_ThreadInfo
_020E2EA0: .word __cs_id
_020E2EA4: .word __cs_ref
_020E2EA8: .word signal_funcs
arm_func_end raise

364
arm9/asm/MSL_string.s Normal file
View File

@@ -0,0 +1,364 @@
.include "asm/macros.inc"
.include "global.inc"
.text
arm_func_start strlen
strlen: ; 0x020E2EAC
mvn r2, #0x0
_020E2EB0:
ldrsb r1, [r0], #0x1
add r2, r2, #0x1
cmp r1, #0x0
bne _020E2EB0
mov r0, r2
bx lr
arm_func_end strlen
arm_func_start strcpy
strcpy: ; 0x020E2EC8
stmdb sp!, {r3-r5,lr}
and r4, r1, #0x3
and r3, r0, #0x3
mov r2, r0
cmp r3, r4
bne _020E2F64
cmp r4, #0x0
beq _020E2F20
ldrb r3, [r1, #0x0]
strb r3, [r0, #0x0]
cmp r3, #0x0
ldmeqia sp!, {r3-r5,pc}
rsbs r4, r4, #0x3
beq _020E2F18
_020E2F00:
ldrb r3, [r1, #0x1]!
cmp r3, #0x0
strb r3, [r2, #0x1]!
ldmeqia sp!, {r3-r5,pc}
subs r4, r4, #0x1
bne _020E2F00
_020E2F18:
add r2, r2, #0x1
add r1, r1, #0x1
_020E2F20:
ldr r5, [r1, #0x0]
ldr r3, _020E2F88 ; =0xFEFEFEFF
mvn r4, r5
add lr, r5, r3
ldr ip, _020E2F8C ; =0x80808080
and r4, lr, r4
tst r4, r12
bne _020E2F64
sub r2, r2, #0x4
_020E2F44:
str r5, [r2, #0x4]!
ldr r5, [r1, #0x4]!
add r4, r5, r3
mvn lr, r5
and lr, r4, lr
tst lr, r12
beq _020E2F44
add r2, r2, #0x4
_020E2F64:
ldrb r3, [r1, #0x0]
strb r3, [r2, #0x0]
cmp r3, #0x0
ldmeqia sp!, {r3-r5,pc}
_020E2F74:
ldrb r3, [r1, #0x1]!
cmp r3, #0x0
strb r3, [r2, #0x1]!
bne _020E2F74
ldmia sp!, {r3-r5,pc}
.balign 4
_020E2F88: .word 0xFEFEFEFF
_020E2F8C: .word 0x80808080
arm_func_end strcpy
arm_func_start strncpy
strncpy: ; 0x020E2F90
stmdb sp!, {r3,lr}
mov lr, r0
cmp r2, #0x0
ldmeqia sp!, {r3,pc}
_020E2FA0:
ldrsb r3, [r1], #0x1
mov r12, lr
strb r3, [lr], #0x1
ldrsb r3, [r12, #0x0]
cmp r3, #0x0
bne _020E2FD4
subs r2, r2, #0x1
ldmeqia sp!, {r3,pc}
mov r1, #0x0
_020E2FC4:
strb r1, [lr], #0x1
subs r2, r2, #0x1
bne _020E2FC4
ldmia sp!, {r3,pc}
_020E2FD4:
subs r2, r2, #0x1
bne _020E2FA0
ldmia sp!, {r3,pc}
arm_func_end strncpy
arm_func_start strcat
strcat: ; 0x020E2FE0
mov r3, r0
_020E2FE4:
ldrsb r2, [r3], #0x1
cmp r2, #0x0
bne _020E2FE4
sub r3, r3, #0x1
_020E2FF4:
ldrsb r2, [r1], #0x1
mov r12, r3
strb r2, [r3], #0x1
ldrsb r2, [r12, #0x0]
cmp r2, #0x0
bne _020E2FF4
bx lr
arm_func_end strcat
arm_func_start strncat
strncat: ; 0x020E3010
stmdb sp!, {r3,lr}
mov r12, r0
_020E3018:
ldrsb r3, [r12], #0x1
cmp r3, #0x0
bne _020E3018
cmp r2, #0x0
sub r12, r12, #0x1
beq _020E3054
_020E3030:
ldrsb r3, [r1], #0x1
mov lr, r12
strb r3, [r12], #0x1
ldrsb r3, [lr, #0x0]
cmp r3, #0x0
subeq r12, r12, #0x1
beq _020E3054
subs r2, r2, #0x1
bne _020E3030
_020E3054:
mov r1, #0x0
strb r1, [r12, #0x0]
ldmia sp!, {r3,pc}
arm_func_end strncat
arm_func_start strcmp
strcmp: ; 0x020E3060
stmdb sp!, {r4,lr}
ldrb r2, [r0, #0x0]
ldrb r3, [r1, #0x0]
subs r3, r2, r3
movne r0, r3
ldmneia sp!, {r4,pc}
and r4, r0, #0x3
and r3, r1, #0x3
cmp r3, r4
bne _020E313C
cmp r4, #0x0
beq _020E30D4
cmp r2, #0x0
moveq r0, #0x0
ldmeqia sp!, {r4,pc}
rsbs r4, r4, #0x3
beq _020E30CC
_020E30A4:
ldrb r3, [r0, #0x1]!
ldrb r2, [r1, #0x1]!
subs r2, r3, r2
movne r0, r2
ldmneia sp!, {r4,pc}
cmp r3, #0x0
moveq r0, #0x0
ldmeqia sp!, {r4,pc}
subs r4, r4, #0x1
bne _020E30A4
_020E30CC:
add r0, r0, #0x1
add r1, r1, #0x1
_020E30D4:
ldr r2, [r0, #0x0]
ldr r3, _020E316C ; =0xFEFEFEFF
mvn r4, r2
add lr, r2, r3
ldr ip, _020E3170 ; =0x80808080
and r4, lr, r4
tst r4, r12
ldr r4, [r1, #0x0]
bne _020E3128
cmp r2, r4
bne _020E311C
_020E3100:
ldr r2, [r0, #0x4]!
ldr r4, [r1, #0x4]!
add lr, r2, r3
tst lr, r12
bne _020E3128
cmp r2, r4
beq _020E3100
_020E311C:
sub r0, r0, #0x1
sub r1, r1, #0x1
b _020E313C
_020E3128:
ldrb r2, [r0, #0x0]
ldrb r3, [r1, #0x0]
subs r3, r2, r3
movne r0, r3
ldmneia sp!, {r4,pc}
_020E313C:
cmp r2, #0x0
moveq r0, #0x0
ldmeqia sp!, {r4,pc}
_020E3148:
ldrb r3, [r0, #0x1]!
ldrb r2, [r1, #0x1]!
subs r2, r3, r2
movne r0, r2
ldmneia sp!, {r4,pc}
cmp r3, #0x0
bne _020E3148
mov r0, #0x0
ldmia sp!, {r4,pc}
.balign 4
_020E316C: .word 0xFEFEFEFF
_020E3170: .word 0x80808080
arm_func_end strcmp
arm_func_start strncmp
strncmp: ; 0x020E3174
cmp r2, #0x0
beq _020E31A0
_020E317C:
ldrb r12, [r1], #0x1
ldrb r3, [r0], #0x1
cmp r3, r12
subne r0, r3, r12
bxne lr
cmp r3, #0x0
beq _020E31A0
subs r2, r2, #0x1
bne _020E317C
_020E31A0:
mov r0, #0x0
bx lr
arm_func_end strncmp
arm_func_start strchr
strchr: ; 0x020E31A8
ldrsb r2, [r0], #0x1
mov r1, r1, lsl #0x18
mov r1, r1, asr #0x18
cmp r2, #0x0
beq _020E31D4
_020E31BC:
cmp r2, r1
subeq r0, r0, #0x1
bxeq lr
ldrsb r2, [r0], #0x1
cmp r2, #0x0
bne _020E31BC
_020E31D4:
cmp r1, #0x0
movne r0, #0x0
subeq r0, r0, #0x1
bx lr
arm_func_end strchr
arm_func_start strspn
strspn: ; 0x020E31E4
stmdb sp!, {r4,lr}
sub sp, sp, #0x20
add r12, sp, #0x0
mov r3, #0x8
mov r2, #0x0
_020E31F8:
strb r2, [r12, #0x0]
strb r2, [r12, #0x1]
strb r2, [r12, #0x2]
strb r2, [r12, #0x3]
add r12, r12, #0x4
subs r3, r3, #0x1
bne _020E31F8
ldrb r3, [r1, #0x0]
add r4, r1, #0x1
cmp r3, #0x0
beq _020E3254
add lr, sp, #0x0
mov r2, #0x1
_020E322C:
and r12, r3, #0xff
and r1, r3, #0x7
mov r1, r2, lsl r1
ldrb r3, [lr, r12, asr #0x3]
and r1, r1, #0xff
orr r1, r3, r1
strb r1, [lr, r12, asr #0x3]
ldrb r3, [r4], #0x1
cmp r3, #0x0
bne _020E322C
_020E3254:
ldrb r1, [r0, #0x0]
add r4, r0, #0x1
cmp r1, #0x0
beq _020E3294
add r12, sp, #0x0
mov r2, #0x1
_020E326C:
and r3, r1, #0xff
and r1, r1, #0x7
mov r1, r2, lsl r1
ldrb r3, [r12, r3, asr #0x3]
and r1, r1, #0xff
tst r3, r1
bne _020E3294
ldrb r1, [r4], #0x1
cmp r1, #0x0
bne _020E326C
_020E3294:
sub r0, r4, r0
sub r0, r0, #0x1
add sp, sp, #0x20
ldmia sp!, {r4,pc}
arm_func_end strspn
arm_func_start strstr
strstr: ; 0x020E32A4
stmdb sp!, {r4,lr}
cmp r1, #0x0
ldrneb r2, [r1, #0x0]
cmpne r2, #0x0
ldmeqia sp!, {r4,pc}
ldrb r3, [r0, #0x0]
add r4, r0, #0x1
cmp r3, #0x0
beq _020E3308
_020E32C8:
cmp r3, r2
bne _020E32FC
mov lr, r4
add r12, r1, #0x1
_020E32D8:
ldrb r3, [r12], #0x1
ldrb r0, [lr], #0x1
cmp r0, r3
bne _020E32F0
cmp r0, #0x0
bne _020E32D8
_020E32F0:
cmp r3, #0x0
subeq r0, r4, #0x1
ldmeqia sp!, {r4,pc}
_020E32FC:
ldrb r3, [r4], #0x1
cmp r3, #0x0
bne _020E32C8
_020E3308:
mov r0, #0x0
ldmia sp!, {r4,pc}
arm_func_end strstr

1422
arm9/asm/MSL_strtold.s Normal file

File diff suppressed because it is too large Load Diff

726
arm9/asm/MSL_strtoul.s Normal file
View File

@@ -0,0 +1,726 @@
.include "asm/macros.inc"
.include "global.inc"
.extern __StringRead
.text
arm_func_start __strtoul
__strtoul:
stmdb sp!, {r4-r11,lr}
sub sp, sp, #0xc
ldr r4, [sp, #0x38]
movs r9, r0
ldr r0, [sp, #0x34]
str r4, [sp, #0x38]
mov r4, #0x0
str r0, [sp, #0x34]
ldr r0, [sp, #0x38]
str r1, [sp, #0x0]
str r4, [r0, #0x0]
mov r0, r4
str r0, [sp, #0x4]
ldr r0, [sp, #0x34]
mov r1, r4
str r1, [r0, #0x0]
ldr r0, [sp, #0x30]
str r4, [sp, #0x8]
mov r8, r2
mov r7, r3
mov r5, r4
mov r10, r4
str r0, [sp, #0x30]
mov r4, #0x1
bmi _020E46CC
cmp r9, #0x1
beq _020E46CC
cmp r9, #0x24
bgt _020E46CC
ldr r0, [sp, #0x0]
cmp r0, #0x1
bge _020E46D4
_020E46CC:
mov r4, #0x40
b _020E46F0
_020E46D4:
ldr r1, [sp, #0x8]
mov r0, r7
mov r3, r1
mov r2, r1
add r5, r3, #0x1
blx r8
mov r6, r0
_020E46F0:
cmp r9, #0x0
beq _020E4708
mov r1, r9
mvn r0, #0x0
bl _u32_div_f
str r0, [sp, #0x4]
_020E4708:
mvn r11, #0x0
b _020E49C8
_020E4710:
cmp r4, #0x8
bgt _020E4748
cmp r4, #0x0
addge pc, pc, r4, lsl #0x2
b _020E49C8
b _020E49C8
b _020E4754
b _020E4800
b _020E49C8
b _020E483C
b _020E49C8
b _020E49C8
b _020E49C8
b _020E487C
_020E4748:
cmp r4, #0x10
beq _020E487C
b _020E49C8
_020E4754:
cmp r6, #0x0
blt _020E4764
cmp r6, #0x80
blt _020E476C
_020E4764:
mov r0, #0x0
b _020E477C
_020E476C:
ldr r0, _020E4A2C ; =__msl_digit
mov r1, r6, lsl #0x1
ldrh r0, [r0, r1]
and r0, r0, #0x100
_020E477C:
cmp r0, #0x0
beq _020E47A8
mov r1, #0x0
mov r0, r7
mov r2, r1
blx r8
mov r6, r0
ldr r0, [sp, #0x8]
add r0, r0, #0x1
str r0, [sp, #0x8]
b _020E49C8
_020E47A8:
cmp r6, #0x2b
bne _020E47CC
mov r1, #0x0
mov r0, r7
mov r2, r1
add r5, r5, #0x1
blx r8
mov r6, r0
b _020E47F8
_020E47CC:
cmp r6, #0x2d
bne _020E47F8
mov r1, #0x0
mov r0, r7
mov r2, r1
add r5, r5, #0x1
blx r8
mov r6, r0
ldr r0, [sp, #0x34]
mov r1, #0x1
str r1, [r0, #0x0]
_020E47F8:
mov r4, #0x2
b _020E49C8
_020E4800:
cmp r9, #0x0
cmpne r9, #0x10
bne _020E4834
cmp r6, #0x30
bne _020E4834
mov r1, #0x0
mov r0, r7
mov r2, r1
mov r4, #0x4
add r5, r5, #0x1
blx r8
mov r6, r0
b _020E49C8
_020E4834:
mov r4, #0x8
b _020E49C8
_020E483C:
cmp r6, #0x58
cmpne r6, #0x78
bne _020E486C
mov r1, #0x0
mov r0, r7
mov r2, r1
mov r9, #0x10
mov r4, #0x8
add r5, r5, #0x1
blx r8
mov r6, r0
b _020E49C8
_020E486C:
cmp r9, #0x0
moveq r9, #0x8
mov r4, #0x10
b _020E49C8
_020E487C:
ldr r0, [sp, #0x4]
cmp r9, #0x0
moveq r9, #0xa
cmp r0, #0x0
bne _020E48A0
mov r0, r11
mov r1, r9
bl _u32_div_f
str r0, [sp, #0x4]
_020E48A0:
cmp r6, #0x0
blt _020E48B0
cmp r6, #0x80
blt _020E48B8
_020E48B0:
mov r0, #0x0
b _020E48C8
_020E48B8:
ldr r0, _020E4A2C ; =__msl_digit
mov r1, r6, lsl #0x1
ldrh r0, [r0, r1]
and r0, r0, #0x8
_020E48C8:
cmp r0, #0x0
beq _020E48F0
sub r6, r6, #0x30
cmp r6, r9
blt _020E4978
cmp r4, #0x10
moveq r4, #0x20
movne r4, #0x40
add r6, r6, #0x30
b _020E49C8
_020E48F0:
cmp r6, #0x0
blt _020E4900
cmp r6, #0x80
blt _020E4908
_020E4900:
mov r0, #0x0
b _020E4918
_020E4908:
ldr r0, _020E4A2C ; =__msl_digit
mov r1, r6, lsl #0x1
ldrh r0, [r0, r1]
and r0, r0, #0x1
_020E4918:
cmp r0, #0x0
beq _020E494C
cmp r6, #0x0
blt _020E4930
cmp r6, #0x80
blt _020E4938
_020E4930:
mov r0, r6
b _020E4940
_020E4938:
ldr r0, _020E4A30 ; =__upper_mapC
ldrb r0, [r0, r6]
_020E4940:
sub r0, r0, #0x37
cmp r0, r9
blt _020E495C
_020E494C:
cmp r4, #0x10
moveq r4, #0x20
movne r4, #0x40
b _020E49C8
_020E495C:
cmp r6, #0x0
blt _020E4974
cmp r6, #0x80
bge _020E4974
ldr r0, _020E4A30 ; =__upper_mapC
ldrb r6, [r0, r6]
_020E4974:
sub r6, r6, #0x37
_020E4978:
ldr r0, [sp, #0x4]
mov r4, #0x10
cmp r10, r0
ldrhi r0, [sp, #0x38]
movhi r1, #0x1
strhi r1, [r0, #0x0]
mul r0, r10, r9
mov r10, r0
sub r0, r11, r0
cmp r6, r0
ldrhi r0, [sp, #0x38]
movhi r1, #0x1
strhi r1, [r0, #0x0]
mov r1, #0x0
mov r0, r7
mov r2, r1
add r10, r10, r6
add r5, r5, #0x1
blx r8
mov r6, r0
_020E49C8:
ldr r0, [sp, #0x0]
cmp r5, r0
bgt _020E49E4
cmp r6, r11
beq _020E49E4
tst r4, #0x60
beq _020E4710
_020E49E4:
tst r4, #0x34
bne _020E49FC
ldr r0, [sp, #0x30]
mov r10, #0x0
str r10, [r0, #0x0]
b _020E4A10
_020E49FC:
ldr r0, [sp, #0x8]
sub r1, r5, #0x1
add r1, r1, r0
ldr r0, [sp, #0x30]
str r1, [r0, #0x0]
_020E4A10:
mov r0, r7
mov r1, r6
mov r2, #0x1
blx r8
mov r0, r10
add sp, sp, #0xc
ldmia sp!, {r4-r11,pc}
.balign 4
_020E4A2C: .word __msl_digit
_020E4A30: .word __upper_mapC
arm_func_end __strtoul
arm_func_start __strtoull
__strtoull: ; 0x020E4A34
stmdb sp!, {r4-r11,lr}
sub sp, sp, #0x1c
ldr r4, [sp, #0x48]
movs r9, r0
ldr r0, [sp, #0x44]
str r4, [sp, #0x48]
mov r4, #0x0
str r0, [sp, #0x44]
ldr r0, [sp, #0x48]
str r1, [sp, #0x0]
str r4, [r0, #0x0]
mov r0, r4
str r0, [sp, #0xc]
str r0, [sp, #0x8]
ldr r0, [sp, #0x44]
mov r1, r4
str r1, [r0, #0x0]
ldr r0, [sp, #0x40]
str r4, [sp, #0x14]
mov r8, r2
mov r7, r3
mov r5, r4
mov r10, r4
mov r11, r4
str r0, [sp, #0x40]
mov r4, #0x1
bmi _020E4ABC
cmp r9, #0x1
beq _020E4ABC
cmp r9, #0x24
bgt _020E4ABC
ldr r0, [sp, #0x0]
cmp r0, #0x1
bge _020E4AC4
_020E4ABC:
mov r4, #0x40
b _020E4ADC
_020E4AC4:
ldr r1, [sp, #0x14]
mov r0, r7
mov r2, r1
add r5, r1, #0x1
blx r8
mov r6, r0
_020E4ADC:
cmp r9, #0x0
beq _020E4B00
mvn r0, #0x0
mov r1, r0
mov r3, r9, asr #0x1f
mov r2, r9
bl _ll_udiv
str r0, [sp, #0xc]
str r1, [sp, #0x8]
_020E4B00:
mvn r0, #0x0
str r0, [sp, #0x18]
b _020E4E08
_020E4B0C:
cmp r4, #0x8
bgt _020E4B44
cmp r4, #0x0
addge pc, pc, r4, lsl #0x2
b _020E4E08
b _020E4E08
b _020E4B50
b _020E4BFC
b _020E4E08
b _020E4C38
b _020E4E08
b _020E4E08
b _020E4E08
b _020E4C78
_020E4B44:
cmp r4, #0x10
beq _020E4C78
b _020E4E08
_020E4B50:
cmp r6, #0x0
blt _020E4B60
cmp r6, #0x80
blt _020E4B68
_020E4B60:
mov r0, #0x0
b _020E4B78
_020E4B68:
ldr r0, _020E4E78 ; =__msl_digit
mov r1, r6, lsl #0x1
ldrh r0, [r0, r1]
and r0, r0, #0x100
_020E4B78:
cmp r0, #0x0
beq _020E4BA4
mov r1, #0x0
mov r0, r7
mov r2, r1
blx r8
mov r6, r0
ldr r0, [sp, #0x14]
add r0, r0, #0x1
str r0, [sp, #0x14]
b _020E4E08
_020E4BA4:
cmp r6, #0x2b
bne _020E4BC8
mov r1, #0x0
mov r0, r7
mov r2, r1
add r5, r5, #0x1
blx r8
mov r6, r0
b _020E4BF4
_020E4BC8:
cmp r6, #0x2d
bne _020E4BF4
mov r1, #0x0
mov r0, r7
mov r2, r1
add r5, r5, #0x1
blx r8
mov r6, r0
ldr r0, [sp, #0x44]
mov r1, #0x1
str r1, [r0, #0x0]
_020E4BF4:
mov r4, #0x2
b _020E4E08
_020E4BFC:
cmp r9, #0x0
cmpne r9, #0x10
bne _020E4C30
cmp r6, #0x30
bne _020E4C30
mov r1, #0x0
mov r0, r7
mov r2, r1
mov r4, #0x4
add r5, r5, #0x1
blx r8
mov r6, r0
b _020E4E08
_020E4C30:
mov r4, #0x8
b _020E4E08
_020E4C38:
cmp r6, #0x58
cmpne r6, #0x78
bne _020E4C68
mov r1, #0x0
mov r0, r7
mov r2, r1
mov r9, #0x10
mov r4, #0x8
add r5, r5, #0x1
blx r8
mov r6, r0
b _020E4E08
_020E4C68:
cmp r9, #0x0
moveq r9, #0x8
mov r4, #0x10
b _020E4E08
_020E4C78:
ldr r1, [sp, #0x8]
mov r0, #0x0
cmp r9, #0x0
moveq r9, #0xa
cmp r1, r0
ldr r1, [sp, #0xc]
cmpeq r1, r0
bne _020E4CB4
ldr r0, [sp, #0x18]
mov r3, r9, asr #0x1f
mov r1, r0
mov r2, r9
bl _ll_udiv
str r0, [sp, #0xc]
str r1, [sp, #0x8]
_020E4CB4:
cmp r6, #0x0
blt _020E4CC4
cmp r6, #0x80
blt _020E4CCC
_020E4CC4:
mov r0, #0x0
b _020E4CDC
_020E4CCC:
ldr r0, _020E4E78 ; =__msl_digit
mov r1, r6, lsl #0x1
ldrh r0, [r0, r1]
and r0, r0, #0x8
_020E4CDC:
cmp r0, #0x0
beq _020E4D04
sub r6, r6, #0x30
cmp r6, r9
blt _020E4D8C
cmp r4, #0x10
moveq r4, #0x20
movne r4, #0x40
add r6, r6, #0x30
b _020E4E08
_020E4D04:
cmp r6, #0x0
blt _020E4D14
cmp r6, #0x80
blt _020E4D1C
_020E4D14:
mov r0, #0x0
b _020E4D2C
_020E4D1C:
ldr r0, _020E4E78 ; =__msl_digit
mov r1, r6, lsl #0x1
ldrh r0, [r0, r1]
and r0, r0, #0x1
_020E4D2C:
cmp r0, #0x0
beq _020E4D60
cmp r6, #0x0
blt _020E4D44
cmp r6, #0x80
blt _020E4D4C
_020E4D44:
mov r0, r6
b _020E4D54
_020E4D4C:
ldr r0, _020E4E7C ; =__upper_mapC
ldrb r0, [r0, r6]
_020E4D54:
sub r0, r0, #0x37
cmp r0, r9
blt _020E4D70
_020E4D60:
cmp r4, #0x10
moveq r4, #0x20
movne r4, #0x40
b _020E4E08
_020E4D70:
cmp r6, #0x0
blt _020E4D88
cmp r6, #0x80
bge _020E4D88
ldr r0, _020E4E7C ; =__upper_mapC
ldrb r6, [r0, r6]
_020E4D88:
sub r6, r6, #0x37
_020E4D8C:
ldr r0, [sp, #0x8]
umull r2, r3, r10, r9
cmp r11, r0
ldr r0, [sp, #0xc]
mov r4, #0x10
cmpeq r10, r0
ldrhi r0, [sp, #0x48]
movhi r1, #0x1
strhi r1, [r0, #0x0]
mov r1, r9, asr #0x1f
mla r3, r10, r1, r3
mla r3, r11, r9, r3
ldr r1, [sp, #0x18]
mov r10, r2
subs r2, r1, r2
mov r0, r6, asr #0x1f
sbc r1, r1, r3
cmp r0, r1
cmpeq r6, r2
ldrhi r1, [sp, #0x48]
movhi r2, #0x1
strhi r2, [r1, #0x0]
mov r1, #0x0
mov r11, r3
adds r10, r10, r6
adc r11, r11, r0
mov r0, r7
mov r2, r1
add r5, r5, #0x1
blx r8
mov r6, r0
_020E4E08:
ldr r0, [sp, #0x0]
cmp r5, r0
bgt _020E4E28
ldr r0, [sp, #0x18]
cmp r6, r0
beq _020E4E28
tst r4, #0x60
beq _020E4B0C
_020E4E28:
tst r4, #0x34
bne _020E4E44
ldr r0, [sp, #0x40]
mov r10, #0x0
mov r11, r10
str r10, [r0, #0x0]
b _020E4E58
_020E4E44:
ldr r0, [sp, #0x14]
sub r1, r5, #0x1
add r1, r1, r0
ldr r0, [sp, #0x40]
str r1, [r0, #0x0]
_020E4E58:
mov r0, r7
mov r1, r6
mov r2, #0x1
blx r8
mov r0, r10
mov r1, r11
add sp, sp, #0x1c
ldmia sp!, {r4-r11,pc}
.balign 4
_020E4E78: .word __msl_digit
_020E4E7C: .word __upper_mapC
arm_func_end __strtoull
arm_func_start strtoul
strtoul: ; 0x020E4E80
stmdb sp!, {r3-r5,lr}
sub sp, sp, #0x20
mov r5, r0
mov lr, #0x0
mov r0, r2
mov r4, r1
add r2, sp, #0x1c
str r5, [sp, #0xc]
str lr, [sp, #0x10]
str r2, [sp, #0x0]
add r1, sp, #0x18
str r1, [sp, #0x4]
add r12, sp, #0x14
ldr r2, _020E4F10 ; =__StringRead
add r3, sp, #0xc
sub r1, lr, #0x80000001
str r12, [sp, #0x8]
bl __strtoul
cmp r4, #0x0
ldrne r1, [sp, #0x1c]
addne r1, r5, r1
strne r1, [r4, #0x0]
ldr r1, [sp, #0x14]
cmp r1, #0x0
beq _020E4EFC
ldr r0, _020E4F14 ; =errno
mov r1, #0x22
str r1, [r0, #0x0]
add sp, sp, #0x20
mvn r0, #0x0
ldmia sp!, {r3-r5,pc}
_020E4EFC:
ldr r1, [sp, #0x18]
cmp r1, #0x0
rsbne r0, r0, #0x0
add sp, sp, #0x20
ldmia sp!, {r3-r5,pc}
.balign 4
_020E4F10: .word __StringRead
_020E4F14: .word errno
arm_func_end strtoul
arm_func_start strtol
strtol: ; 0x020E4F18
stmdb sp!, {r3-r5,lr}
sub sp, sp, #0x20
mov r5, r0
mov lr, #0x0
mov r0, r2
mov r4, r1
add r2, sp, #0x1c
str r5, [sp, #0xc]
str lr, [sp, #0x10]
str r2, [sp, #0x0]
add r1, sp, #0x18
str r1, [sp, #0x4]
add r12, sp, #0x14
ldr r2, _020E4FD8 ; =__StringRead
add r3, sp, #0xc
sub r1, lr, #0x80000001
str r12, [sp, #0x8]
bl __strtoul
cmp r4, #0x0
ldrne r1, [sp, #0x1c]
addne r1, r5, r1
strne r1, [r4, #0x0]
ldr r1, [sp, #0x14]
cmp r1, #0x0
bne _020E4FA4
ldr r2, [sp, #0x18]
cmp r2, #0x0
bne _020E4F94
mvn r1, #0x80000000
cmp r0, r1
bhi _020E4FA4
_020E4F94:
cmp r2, #0x0
beq _020E4FC8
cmp r0, #0x80000000
bls _020E4FC8
_020E4FA4:
ldr r0, [sp, #0x18]
ldr r1, _020E4FDC ; =errno
mov r2, #0x22
cmp r0, #0x0
movne r0, #0x80000000
str r2, [r1, #0x0]
add sp, sp, #0x20
mvneq r0, #0x80000000
ldmia sp!, {r3-r5,pc}
_020E4FC8:
cmp r2, #0x0
rsbne r0, r0, #0x0
add sp, sp, #0x20
ldmia sp!, {r3-r5,pc}
.balign 4
_020E4FD8: .word __StringRead
_020E4FDC: .word errno
arm_func_end strtol
arm_func_start atol
atol: ; 0x020E4FE0
ldr ip, _020E4FF0 ; =strtol
mov r1, #0x0
mov r2, #0xa
bx r12
.balign 4
_020E4FF0: .word strtol
arm_func_end atol

43
arm9/asm/MSL_wchar_io.s Normal file
View File

@@ -0,0 +1,43 @@
.include "asm/macros.inc"
.include "global.inc"
.text
arm_func_start fwide
fwide:
cmp r0, #0x0
beq _020E500C
ldr r3, [r0, #0x4]
mov r2, r3, lsl #0x16
movs r2, r2, lsr #0x1d
bne _020E5014
_020E500C:
mov r0, #0x0
bx lr
_020E5014:
mov r2, r3, lsl #0x14
movs r2, r2, lsr #0x1e
beq _020E5034
cmp r2, #0x1
beq _020E505C
cmp r2, #0x2
moveq r1, #0x1
b _020E5060
_020E5034:
cmp r1, #0x0
ble _020E504C
bic r2, r3, #0xc00
orr r2, r2, #0x800
str r2, [r0, #0x4]
b _020E5060
_020E504C:
biclt r2, r3, #0xc00
orrlt r2, r2, #0x400
strlt r2, [r0, #0x4]
b _020E5060
_020E505C:
mvn r1, #0x0
_020E5060:
mov r0, r1
bx lr
arm_func_end fwide

29
arm9/asm/MSL_wmem.s Normal file
View File

@@ -0,0 +1,29 @@
.include "asm/macros.inc"
.include "global.inc"
.text
arm_func_start wmemcpy
wmemcpy: ; 0x020E5068
ldr ip, _020E5074 ; =memcpy
mov r2, r2, lsl #0x1
bx r12
.balign 4
_020E5074: .word memcpy
arm_func_end wmemcpy
arm_func_start wmemchr
wmemchr:
cmp r2, #0x0
beq _020E5098
_020E5080:
ldrh r3, [r0, #0x0]
cmp r3, r1
bxeq lr
add r0, r0, #0x2
subs r2, r2, #0x1
bne _020E5080
_020E5098:
mov r0, #0x0
bx lr
arm_func_end wmemchr

File diff suppressed because it is too large Load Diff

View File

@@ -8229,7 +8229,7 @@
.extern Unk_0210683C
.extern __lower_mapC
.extern __upper_mapC
.extern UNK_0210430C
.extern __msl_digit
.extern Unk_02106840
.extern Unk_02106900
.extern Unk_02106A00
@@ -8455,7 +8455,7 @@
.extern strspn
.extern strstr
.extern strtold
.extern strtold2
.extern strtol
.extern strtoul
.extern swprintf
.extern sys_exit

View File

@@ -220,7 +220,7 @@ _021D9014:
add r1, sp, #0
add r0, r2, r0
mov r2, #0xa
bl strtold2
bl strtol
ldr r2, _021D91BC ; =UNK04_02210468
ldr r1, _021D91D4 ; =0x0000100C
ldr r5, [r2]
@@ -45849,7 +45849,7 @@ _021FFDB8:
add r3, r4, #1
cmp r0, #0
beq _021FFE10
ldr r1, _021FFEA8 ; =UNK_0210430C
ldr r1, _021FFEA8 ; =__msl_digit
mov r2, #0
_021FFDD0:
cmp r0, #0
@@ -45915,7 +45915,7 @@ _021FFE84:
.align 2, 0
_021FFEA0: .word UNK04_0220EFD8
_021FFEA4: .word UNK04_0220EFF8
_021FFEA8: .word UNK_0210430C
_021FFEA8: .word __msl_digit
_021FFEAC: .word 0x0000FFFF
arm_func_end MOD04_021FFD28
@@ -50366,7 +50366,7 @@ _022039A8:
mov r1, #0
b _022039C0
_022039B0:
ldr r1, _022039DC ; =UNK_0210430C
ldr r1, _022039DC ; =__msl_digit
mov r2, r2, lsl #1
ldrh r1, [r1, r2]
and r1, r1, #8
@@ -50381,7 +50381,7 @@ _022039D0:
ldmia sp!, {r4, r5, r6, pc}
.align 2, 0
_022039D8: .word UNK04_0220F7E0
_022039DC: .word UNK_0210430C
_022039DC: .word __msl_digit
arm_func_end MOD04_0220394C
arm_func_start MOD04_022039E0

View File

@@ -3438,7 +3438,7 @@ _022152DC:
cmp r0, #0
beq _02215448
add r4, r0, #9
ldr r1, _0221562C ; =UNK_0210430C
ldr r1, _0221562C ; =__msl_digit
mov r2, #0
b _02215330
_0221532C:
@@ -3460,7 +3460,7 @@ _02215358:
cmp r0, #0
bne _0221532C
mov r3, r4
ldr r1, _0221562C ; =UNK_0210430C
ldr r1, _0221562C ; =__msl_digit
mov r2, #0
b _02215374
_02215370:
@@ -3655,7 +3655,7 @@ _0221561C: .word MOD79_02216F64
_02215620: .word MOD79_02216F6C
_02215624: .word 0x51EB851F
_02215628: .word MOD79_02216F70
_0221562C: .word UNK_0210430C
_0221562C: .word __msl_digit
_02215630: .word MOD79_02216F7C
_02215634: .word MOD79_02216F8C
_02215638: .word MOD79_0221673C
@@ -4101,7 +4101,7 @@ _02215C1C:
bl sscanf
mov r3, #0
mov ip, #1
ldr r2, _02215D24 ; =UNK_0210430C
ldr r2, _02215D24 ; =__msl_digit
b _02215C5C
_02215C50:
ldr r1, [sp, #0x14]
@@ -4163,7 +4163,7 @@ _02215D14: .word 0x0000024E
_02215D18: .word MOD79_02217000
_02215D1C: .word 0x0000024F
_02215D20: .word MOD79_02217020
_02215D24: .word UNK_0210430C
_02215D24: .word __msl_digit
arm_func_end MOD79_02215BD8
arm_func_start MOD79_02215D28