mirror of
https://github.com/pret/pokeheartgold.git
synced 2026-05-09 04:02:46 -05:00
split MSL_Common_strtoul.s
This commit is contained in:
parent
b44fba0656
commit
cb87c94469
742
lib/MSL_C/asm/MSL_Common_strtoul.s
Normal file
742
lib/MSL_C/asm/MSL_Common_strtoul.s
Normal file
|
|
@ -0,0 +1,742 @@
|
|||
.include "asm/macros.inc"
|
||||
.include "MSL_Common_strtoul.inc"
|
||||
.include "global.inc"
|
||||
|
||||
.text
|
||||
|
||||
arm_func_start __strtoul
|
||||
__strtoul: ; 0x020EAE78
|
||||
stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr}
|
||||
sub sp, sp, #0xc
|
||||
ldr r4, [sp, #0x38]
|
||||
movs sb, r0
|
||||
ldr r0, [sp, #0x34]
|
||||
str r4, [sp, #0x38]
|
||||
mov r4, #0
|
||||
str r0, [sp, #0x34]
|
||||
ldr r0, [sp, #0x38]
|
||||
str r1, [sp]
|
||||
str r4, [r0]
|
||||
mov r0, r4
|
||||
str r0, [sp, #4]
|
||||
ldr r0, [sp, #0x34]
|
||||
mov r1, r4
|
||||
str r1, [r0]
|
||||
ldr r0, [sp, #0x30]
|
||||
str r4, [sp, #8]
|
||||
mov r8, r2
|
||||
mov r7, r3
|
||||
mov r5, r4
|
||||
mov sl, r4
|
||||
str r0, [sp, #0x30]
|
||||
mov r4, #1
|
||||
bmi _020EAEF8
|
||||
cmp sb, #1
|
||||
beq _020EAEF8
|
||||
cmp sb, #0x24
|
||||
bgt _020EAEF8
|
||||
ldr r0, [sp]
|
||||
cmp r0, #1
|
||||
bge _020EAF00
|
||||
_020EAEF8:
|
||||
mov r4, #0x40
|
||||
b _020EAF1C
|
||||
_020EAF00:
|
||||
ldr r1, [sp, #8]
|
||||
mov r0, r7
|
||||
mov r3, r1
|
||||
mov r2, r1
|
||||
add r5, r3, #1
|
||||
blx r8
|
||||
mov r6, r0
|
||||
_020EAF1C:
|
||||
cmp sb, #0
|
||||
beq _020EAF34
|
||||
mov r1, sb
|
||||
mvn r0, #0
|
||||
bl _u32_div_f
|
||||
str r0, [sp, #4]
|
||||
_020EAF34:
|
||||
mvn fp, #0
|
||||
b _020EB1F4
|
||||
_020EAF3C:
|
||||
cmp r4, #8
|
||||
bgt _020EAF74
|
||||
cmp r4, #0
|
||||
addge pc, pc, r4, lsl #2
|
||||
b _020EB1F4
|
||||
_020EAF50: ; jump table
|
||||
b _020EB1F4 ; case 0
|
||||
b _020EAF80 ; case 1
|
||||
b _020EB02C ; case 2
|
||||
b _020EB1F4 ; case 3
|
||||
b _020EB068 ; case 4
|
||||
b _020EB1F4 ; case 5
|
||||
b _020EB1F4 ; case 6
|
||||
b _020EB1F4 ; case 7
|
||||
b _020EB0A8 ; case 8
|
||||
_020EAF74:
|
||||
cmp r4, #0x10
|
||||
beq _020EB0A8
|
||||
b _020EB1F4
|
||||
_020EAF80:
|
||||
cmp r6, #0
|
||||
blt _020EAF90
|
||||
cmp r6, #0x80
|
||||
blt _020EAF98
|
||||
_020EAF90:
|
||||
mov r0, #0
|
||||
b _020EAFA8
|
||||
_020EAF98:
|
||||
ldr r0, _020EB258 ; =__msl_digit
|
||||
mov r1, r6, lsl #1
|
||||
ldrh r0, [r0, r1]
|
||||
and r0, r0, #0x100
|
||||
_020EAFA8:
|
||||
cmp r0, #0
|
||||
beq _020EAFD4
|
||||
mov r1, #0
|
||||
mov r0, r7
|
||||
mov r2, r1
|
||||
blx r8
|
||||
mov r6, r0
|
||||
ldr r0, [sp, #8]
|
||||
add r0, r0, #1
|
||||
str r0, [sp, #8]
|
||||
b _020EB1F4
|
||||
_020EAFD4:
|
||||
cmp r6, #0x2b
|
||||
bne _020EAFF8
|
||||
mov r1, #0
|
||||
mov r0, r7
|
||||
mov r2, r1
|
||||
add r5, r5, #1
|
||||
blx r8
|
||||
mov r6, r0
|
||||
b _020EB024
|
||||
_020EAFF8:
|
||||
cmp r6, #0x2d
|
||||
bne _020EB024
|
||||
mov r1, #0
|
||||
mov r0, r7
|
||||
mov r2, r1
|
||||
add r5, r5, #1
|
||||
blx r8
|
||||
mov r6, r0
|
||||
ldr r0, [sp, #0x34]
|
||||
mov r1, #1
|
||||
str r1, [r0]
|
||||
_020EB024:
|
||||
mov r4, #2
|
||||
b _020EB1F4
|
||||
_020EB02C:
|
||||
cmp sb, #0
|
||||
cmpne sb, #0x10
|
||||
bne _020EB060
|
||||
cmp r6, #0x30
|
||||
bne _020EB060
|
||||
mov r1, #0
|
||||
mov r0, r7
|
||||
mov r2, r1
|
||||
mov r4, #4
|
||||
add r5, r5, #1
|
||||
blx r8
|
||||
mov r6, r0
|
||||
b _020EB1F4
|
||||
_020EB060:
|
||||
mov r4, #8
|
||||
b _020EB1F4
|
||||
_020EB068:
|
||||
cmp r6, #0x58
|
||||
cmpne r6, #0x78
|
||||
bne _020EB098
|
||||
mov r1, #0
|
||||
mov r0, r7
|
||||
mov r2, r1
|
||||
mov sb, #0x10
|
||||
mov r4, #8
|
||||
add r5, r5, #1
|
||||
blx r8
|
||||
mov r6, r0
|
||||
b _020EB1F4
|
||||
_020EB098:
|
||||
cmp sb, #0
|
||||
moveq sb, #8
|
||||
mov r4, #0x10
|
||||
b _020EB1F4
|
||||
_020EB0A8:
|
||||
ldr r0, [sp, #4]
|
||||
cmp sb, #0
|
||||
moveq sb, #0xa
|
||||
cmp r0, #0
|
||||
bne _020EB0CC
|
||||
mov r0, fp
|
||||
mov r1, sb
|
||||
bl _u32_div_f
|
||||
str r0, [sp, #4]
|
||||
_020EB0CC:
|
||||
cmp r6, #0
|
||||
blt _020EB0DC
|
||||
cmp r6, #0x80
|
||||
blt _020EB0E4
|
||||
_020EB0DC:
|
||||
mov r0, #0
|
||||
b _020EB0F4
|
||||
_020EB0E4:
|
||||
ldr r0, _020EB258 ; =__msl_digit
|
||||
mov r1, r6, lsl #1
|
||||
ldrh r0, [r0, r1]
|
||||
and r0, r0, #8
|
||||
_020EB0F4:
|
||||
cmp r0, #0
|
||||
beq _020EB11C
|
||||
sub r6, r6, #0x30
|
||||
cmp r6, sb
|
||||
blt _020EB1A4
|
||||
cmp r4, #0x10
|
||||
moveq r4, #0x20
|
||||
movne r4, #0x40
|
||||
add r6, r6, #0x30
|
||||
b _020EB1F4
|
||||
_020EB11C:
|
||||
cmp r6, #0
|
||||
blt _020EB12C
|
||||
cmp r6, #0x80
|
||||
blt _020EB134
|
||||
_020EB12C:
|
||||
mov r0, #0
|
||||
b _020EB144
|
||||
_020EB134:
|
||||
ldr r0, _020EB258 ; =__msl_digit
|
||||
mov r1, r6, lsl #1
|
||||
ldrh r0, [r0, r1]
|
||||
and r0, r0, #1
|
||||
_020EB144:
|
||||
cmp r0, #0
|
||||
beq _020EB178
|
||||
cmp r6, #0
|
||||
blt _020EB15C
|
||||
cmp r6, #0x80
|
||||
blt _020EB164
|
||||
_020EB15C:
|
||||
mov r0, r6
|
||||
b _020EB16C
|
||||
_020EB164:
|
||||
ldr r0, _020EB25C ; =__upper_mapC
|
||||
ldrb r0, [r0, r6]
|
||||
_020EB16C:
|
||||
sub r0, r0, #0x37
|
||||
cmp r0, sb
|
||||
blt _020EB188
|
||||
_020EB178:
|
||||
cmp r4, #0x10
|
||||
moveq r4, #0x20
|
||||
movne r4, #0x40
|
||||
b _020EB1F4
|
||||
_020EB188:
|
||||
cmp r6, #0
|
||||
blt _020EB1A0
|
||||
cmp r6, #0x80
|
||||
bge _020EB1A0
|
||||
ldr r0, _020EB25C ; =__upper_mapC
|
||||
ldrb r6, [r0, r6]
|
||||
_020EB1A0:
|
||||
sub r6, r6, #0x37
|
||||
_020EB1A4:
|
||||
ldr r0, [sp, #4]
|
||||
mov r4, #0x10
|
||||
cmp sl, r0
|
||||
ldrhi r0, [sp, #0x38]
|
||||
movhi r1, #1
|
||||
strhi r1, [r0]
|
||||
mul r0, sl, sb
|
||||
mov sl, r0
|
||||
sub r0, fp, r0
|
||||
cmp r6, r0
|
||||
ldrhi r0, [sp, #0x38]
|
||||
movhi r1, #1
|
||||
strhi r1, [r0]
|
||||
mov r1, #0
|
||||
mov r0, r7
|
||||
mov r2, r1
|
||||
add sl, sl, r6
|
||||
add r5, r5, #1
|
||||
blx r8
|
||||
mov r6, r0
|
||||
_020EB1F4:
|
||||
ldr r0, [sp]
|
||||
cmp r5, r0
|
||||
bgt _020EB210
|
||||
cmp r6, fp
|
||||
beq _020EB210
|
||||
tst r4, #0x60
|
||||
beq _020EAF3C
|
||||
_020EB210:
|
||||
tst r4, #0x34
|
||||
bne _020EB228
|
||||
ldr r0, [sp, #0x30]
|
||||
mov sl, #0
|
||||
str sl, [r0]
|
||||
b _020EB23C
|
||||
_020EB228:
|
||||
ldr r0, [sp, #8]
|
||||
sub r1, r5, #1
|
||||
add r1, r1, r0
|
||||
ldr r0, [sp, #0x30]
|
||||
str r1, [r0]
|
||||
_020EB23C:
|
||||
mov r0, r7
|
||||
mov r1, r6
|
||||
mov r2, #1
|
||||
blx r8
|
||||
mov r0, sl
|
||||
add sp, sp, #0xc
|
||||
ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
|
||||
.align 2, 0
|
||||
_020EB258: .word __msl_digit
|
||||
_020EB25C: .word __upper_mapC
|
||||
arm_func_end __strtoul
|
||||
|
||||
arm_func_start __strtoull
|
||||
__strtoull: ; 0x020EB260
|
||||
stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr}
|
||||
sub sp, sp, #0x20
|
||||
ldr r4, [sp, #0x48]
|
||||
movs sb, r0
|
||||
ldr r0, [sp, #0x44]
|
||||
str r4, [sp, #0x48]
|
||||
mov r4, #0
|
||||
str r0, [sp, #0x44]
|
||||
ldr r0, [sp, #0x48]
|
||||
str r1, [sp]
|
||||
str r4, [r0]
|
||||
mov r0, r4
|
||||
str r0, [sp, #0x10]
|
||||
str r0, [sp, #0x14]
|
||||
str r0, [sp, #0xc]
|
||||
ldr r0, [sp, #0x44]
|
||||
mov r1, r4
|
||||
str r1, [r0]
|
||||
ldr r0, [sp, #0x40]
|
||||
str r4, [sp, #0x18]
|
||||
mov sl, r2
|
||||
str r3, [sp, #4]
|
||||
mov r6, r4
|
||||
mov r7, r4
|
||||
str r0, [sp, #0x40]
|
||||
mov r5, #1
|
||||
bmi _020EB2E8
|
||||
cmp sb, #1
|
||||
beq _020EB2E8
|
||||
cmp sb, #0x24
|
||||
bgt _020EB2E8
|
||||
ldr r0, [sp]
|
||||
cmp r0, #1
|
||||
bge _020EB2F0
|
||||
_020EB2E8:
|
||||
mov r5, #0x40
|
||||
b _020EB304
|
||||
_020EB2F0:
|
||||
mov r0, r3
|
||||
mov r2, r4
|
||||
add r6, r1, #1
|
||||
blx sl
|
||||
mov r8, r0
|
||||
_020EB304:
|
||||
cmp sb, #0
|
||||
beq _020EB328
|
||||
mvn r0, #0
|
||||
mov r1, r0
|
||||
mov r3, sb, asr #0x1f
|
||||
mov r2, sb
|
||||
bl _ll_udiv
|
||||
mov r7, r0
|
||||
str r1, [sp, #0xc]
|
||||
_020EB328:
|
||||
mvn r0, #0
|
||||
str r0, [sp, #0x1c]
|
||||
mov r4, #0
|
||||
b _020EB650
|
||||
_020EB338:
|
||||
cmp r5, #8
|
||||
bgt _020EB370
|
||||
cmp r5, #0
|
||||
addge pc, pc, r5, lsl #2
|
||||
b _020EB650
|
||||
_020EB34C: ; jump table
|
||||
b _020EB650 ; case 0
|
||||
b _020EB37C ; case 1
|
||||
b _020EB428 ; case 2
|
||||
b _020EB650 ; case 3
|
||||
b _020EB464 ; case 4
|
||||
b _020EB650 ; case 5
|
||||
b _020EB650 ; case 6
|
||||
b _020EB650 ; case 7
|
||||
b _020EB4A4 ; case 8
|
||||
_020EB370:
|
||||
cmp r5, #0x10
|
||||
beq _020EB4A4
|
||||
b _020EB650
|
||||
_020EB37C:
|
||||
cmp r8, #0
|
||||
blt _020EB38C
|
||||
cmp r8, #0x80
|
||||
blt _020EB394
|
||||
_020EB38C:
|
||||
mov r0, #0
|
||||
b _020EB3A4
|
||||
_020EB394:
|
||||
ldr r0, _020EB6C4 ; =__msl_digit
|
||||
mov r1, r8, lsl #1
|
||||
ldrh r0, [r0, r1]
|
||||
and r0, r0, #0x100
|
||||
_020EB3A4:
|
||||
cmp r0, #0
|
||||
beq _020EB3D0
|
||||
mov r1, #0
|
||||
ldr r0, [sp, #4]
|
||||
mov r2, r1
|
||||
blx sl
|
||||
mov r8, r0
|
||||
ldr r0, [sp, #0x18]
|
||||
add r0, r0, #1
|
||||
str r0, [sp, #0x18]
|
||||
b _020EB650
|
||||
_020EB3D0:
|
||||
cmp r8, #0x2b
|
||||
bne _020EB3F4
|
||||
mov r1, #0
|
||||
ldr r0, [sp, #4]
|
||||
mov r2, r1
|
||||
add r6, r6, #1
|
||||
blx sl
|
||||
mov r8, r0
|
||||
b _020EB420
|
||||
_020EB3F4:
|
||||
cmp r8, #0x2d
|
||||
bne _020EB420
|
||||
mov r1, #0
|
||||
ldr r0, [sp, #4]
|
||||
mov r2, r1
|
||||
add r6, r6, #1
|
||||
blx sl
|
||||
mov r8, r0
|
||||
ldr r0, [sp, #0x44]
|
||||
mov r1, #1
|
||||
str r1, [r0]
|
||||
_020EB420:
|
||||
mov r5, #2
|
||||
b _020EB650
|
||||
_020EB428:
|
||||
cmp sb, #0
|
||||
cmpne sb, #0x10
|
||||
bne _020EB45C
|
||||
cmp r8, #0x30
|
||||
bne _020EB45C
|
||||
mov r1, #0
|
||||
ldr r0, [sp, #4]
|
||||
mov r2, r1
|
||||
mov r5, #4
|
||||
add r6, r6, #1
|
||||
blx sl
|
||||
mov r8, r0
|
||||
b _020EB650
|
||||
_020EB45C:
|
||||
mov r5, #8
|
||||
b _020EB650
|
||||
_020EB464:
|
||||
cmp r8, #0x58
|
||||
cmpne r8, #0x78
|
||||
bne _020EB494
|
||||
mov r1, #0
|
||||
ldr r0, [sp, #4]
|
||||
mov r2, r1
|
||||
mov sb, #0x10
|
||||
mov r5, #8
|
||||
add r6, r6, #1
|
||||
blx sl
|
||||
mov r8, r0
|
||||
b _020EB650
|
||||
_020EB494:
|
||||
cmp sb, #0
|
||||
moveq sb, #8
|
||||
mov r5, #0x10
|
||||
b _020EB650
|
||||
_020EB4A4:
|
||||
ldr r1, [sp, #0xc]
|
||||
mov r0, #0
|
||||
cmp sb, #0
|
||||
moveq sb, #0xa
|
||||
cmp r1, r0
|
||||
cmpeq r7, r4
|
||||
bne _020EB4DC
|
||||
ldr r0, [sp, #0x1c]
|
||||
mov r3, sb, asr #0x1f
|
||||
mov r1, r0
|
||||
mov r2, sb
|
||||
bl _ll_udiv
|
||||
mov r7, r0
|
||||
str r1, [sp, #0xc]
|
||||
_020EB4DC:
|
||||
cmp r8, #0
|
||||
blt _020EB4EC
|
||||
cmp r8, #0x80
|
||||
blt _020EB4F4
|
||||
_020EB4EC:
|
||||
mov r0, #0
|
||||
b _020EB504
|
||||
_020EB4F4:
|
||||
ldr r0, _020EB6C4 ; =__msl_digit
|
||||
mov r1, r8, lsl #1
|
||||
ldrh r0, [r0, r1]
|
||||
and r0, r0, #8
|
||||
_020EB504:
|
||||
cmp r0, #0
|
||||
beq _020EB52C
|
||||
sub r8, r8, #0x30
|
||||
cmp r8, sb
|
||||
blt _020EB5B4
|
||||
cmp r5, #0x10
|
||||
moveq r5, #0x20
|
||||
movne r5, #0x40
|
||||
add r8, r8, #0x30
|
||||
b _020EB650
|
||||
_020EB52C:
|
||||
cmp r8, #0
|
||||
blt _020EB53C
|
||||
cmp r8, #0x80
|
||||
blt _020EB544
|
||||
_020EB53C:
|
||||
mov r0, #0
|
||||
b _020EB554
|
||||
_020EB544:
|
||||
ldr r0, _020EB6C4 ; =__msl_digit
|
||||
mov r1, r8, lsl #1
|
||||
ldrh r0, [r0, r1]
|
||||
and r0, r0, #1
|
||||
_020EB554:
|
||||
cmp r0, #0
|
||||
beq _020EB588
|
||||
cmp r8, #0
|
||||
blt _020EB56C
|
||||
cmp r8, #0x80
|
||||
blt _020EB574
|
||||
_020EB56C:
|
||||
mov r0, r8
|
||||
b _020EB57C
|
||||
_020EB574:
|
||||
ldr r0, _020EB6C8 ; =__upper_mapC
|
||||
ldrb r0, [r0, r8]
|
||||
_020EB57C:
|
||||
sub r0, r0, #0x37
|
||||
cmp r0, sb
|
||||
blt _020EB598
|
||||
_020EB588:
|
||||
cmp r5, #0x10
|
||||
moveq r5, #0x20
|
||||
movne r5, #0x40
|
||||
b _020EB650
|
||||
_020EB598:
|
||||
cmp r8, #0
|
||||
blt _020EB5B0
|
||||
cmp r8, #0x80
|
||||
bge _020EB5B0
|
||||
ldr r0, _020EB6C8 ; =__upper_mapC
|
||||
ldrb r8, [r0, r8]
|
||||
_020EB5B0:
|
||||
sub r8, r8, #0x37
|
||||
_020EB5B4:
|
||||
ldr r1, [sp, #0x14]
|
||||
ldr r0, [sp, #0xc]
|
||||
ldr r3, [sp, #0x10]
|
||||
cmp r1, r0
|
||||
ldr r0, [sp, #0x10]
|
||||
mov r5, sb, asr #0x1f
|
||||
cmpeq r0, r7
|
||||
ldrhi r0, [sp, #0x48]
|
||||
movhi r1, #1
|
||||
strhi r1, [r0]
|
||||
umull r0, r1, r3, sb
|
||||
mla r1, r3, r5, r1
|
||||
ldr r3, [sp, #0x14]
|
||||
str r0, [sp, #0x10]
|
||||
mla r1, r3, sb, r1
|
||||
ldr r3, [sp, #0x1c]
|
||||
mov r2, r8, asr #0x1f
|
||||
subs r3, r3, r0
|
||||
ldr r0, [sp, #0x1c]
|
||||
str r1, [sp, #0x14]
|
||||
sbc r0, r0, r1
|
||||
cmp r2, r0
|
||||
cmpeq r8, r3
|
||||
ldrhi r0, [sp, #0x48]
|
||||
movhi r1, #1
|
||||
strhi r1, [r0]
|
||||
ldr r0, [sp, #0x10]
|
||||
mov r1, #0
|
||||
adds r0, r0, r8
|
||||
str r0, [sp, #0x10]
|
||||
ldr r0, [sp, #0x14]
|
||||
mov r5, #0x10
|
||||
adc r0, r0, r2
|
||||
str r0, [sp, #0x14]
|
||||
ldr r0, [sp, #4]
|
||||
mov r2, r1
|
||||
add r6, r6, #1
|
||||
blx sl
|
||||
mov r8, r0
|
||||
_020EB650:
|
||||
ldr r0, [sp]
|
||||
cmp r6, r0
|
||||
bgt _020EB670
|
||||
ldr r0, [sp, #0x1c]
|
||||
cmp r8, r0
|
||||
beq _020EB670
|
||||
tst r5, #0x60
|
||||
beq _020EB338
|
||||
_020EB670:
|
||||
tst r5, #0x34
|
||||
bne _020EB690
|
||||
mov r0, #0
|
||||
str r0, [sp, #0x10]
|
||||
str r0, [sp, #0x14]
|
||||
mov r1, r0
|
||||
ldr r0, [sp, #0x40]
|
||||
b _020EB6A0
|
||||
_020EB690:
|
||||
ldr r0, [sp, #0x18]
|
||||
sub r1, r6, #1
|
||||
add r1, r1, r0
|
||||
ldr r0, [sp, #0x40]
|
||||
_020EB6A0:
|
||||
str r1, [r0]
|
||||
ldr r0, [sp, #4]
|
||||
mov r1, r8
|
||||
mov r2, #1
|
||||
blx sl
|
||||
ldr r0, [sp, #0x10]
|
||||
ldr r1, [sp, #0x14]
|
||||
add sp, sp, #0x20
|
||||
ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc}
|
||||
.align 2, 0
|
||||
_020EB6C4: .word __msl_digit
|
||||
_020EB6C8: .word __upper_mapC
|
||||
arm_func_end __strtoull
|
||||
|
||||
arm_func_start strtoul
|
||||
strtoul: ; 0x020EB6CC
|
||||
stmdb sp!, {r3, r4, r5, lr}
|
||||
sub sp, sp, #0x20
|
||||
mov r5, r0
|
||||
mov lr, #0
|
||||
mov r0, r2
|
||||
mov r4, r1
|
||||
add r2, sp, #0x1c
|
||||
str r5, [sp, #0xc]
|
||||
str lr, [sp, #0x10]
|
||||
str r2, [sp]
|
||||
add r1, sp, #0x18
|
||||
str r1, [sp, #4]
|
||||
add ip, sp, #0x14
|
||||
ldr r2, _020EB75C ; =__StringRead
|
||||
add r3, sp, #0xc
|
||||
sub r1, lr, #0x80000001
|
||||
str ip, [sp, #8]
|
||||
bl __strtoul
|
||||
cmp r4, #0
|
||||
ldrne r1, [sp, #0x1c]
|
||||
addne r1, r5, r1
|
||||
strne r1, [r4]
|
||||
ldr r1, [sp, #0x14]
|
||||
cmp r1, #0
|
||||
beq _020EB748
|
||||
ldr r0, _020EB760 ; =errno
|
||||
mov r1, #0x22
|
||||
str r1, [r0]
|
||||
add sp, sp, #0x20
|
||||
mvn r0, #0
|
||||
ldmia sp!, {r3, r4, r5, pc}
|
||||
_020EB748:
|
||||
ldr r1, [sp, #0x18]
|
||||
cmp r1, #0
|
||||
rsbne r0, r0, #0
|
||||
add sp, sp, #0x20
|
||||
ldmia sp!, {r3, r4, r5, pc}
|
||||
.align 2, 0
|
||||
_020EB75C: .word __StringRead
|
||||
_020EB760: .word errno
|
||||
arm_func_end strtoul
|
||||
|
||||
arm_func_start strtol
|
||||
strtol: ; 0x020EB764
|
||||
stmdb sp!, {r3, r4, r5, lr}
|
||||
sub sp, sp, #0x20
|
||||
mov r5, r0
|
||||
mov lr, #0
|
||||
mov r0, r2
|
||||
mov r4, r1
|
||||
add r2, sp, #0x1c
|
||||
str r5, [sp, #0xc]
|
||||
str lr, [sp, #0x10]
|
||||
str r2, [sp]
|
||||
add r1, sp, #0x18
|
||||
str r1, [sp, #4]
|
||||
add ip, sp, #0x14
|
||||
ldr r2, _020EB824 ; =__StringRead
|
||||
add r3, sp, #0xc
|
||||
sub r1, lr, #0x80000001
|
||||
str ip, [sp, #8]
|
||||
bl __strtoul
|
||||
cmp r4, #0
|
||||
ldrne r1, [sp, #0x1c]
|
||||
addne r1, r5, r1
|
||||
strne r1, [r4]
|
||||
ldr r1, [sp, #0x14]
|
||||
cmp r1, #0
|
||||
bne _020EB7F0
|
||||
ldr r2, [sp, #0x18]
|
||||
cmp r2, #0
|
||||
bne _020EB7E0
|
||||
mvn r1, #0x80000000
|
||||
cmp r0, r1
|
||||
bhi _020EB7F0
|
||||
_020EB7E0:
|
||||
cmp r2, #0
|
||||
beq _020EB814
|
||||
cmp r0, #0x80000000
|
||||
bls _020EB814
|
||||
_020EB7F0:
|
||||
ldr r0, [sp, #0x18]
|
||||
ldr r1, _020EB828 ; =errno
|
||||
mov r2, #0x22
|
||||
cmp r0, #0
|
||||
movne r0, #0x80000000
|
||||
str r2, [r1]
|
||||
add sp, sp, #0x20
|
||||
mvneq r0, #0x80000000
|
||||
ldmia sp!, {r3, r4, r5, pc}
|
||||
_020EB814:
|
||||
cmp r2, #0
|
||||
rsbne r0, r0, #0
|
||||
add sp, sp, #0x20
|
||||
ldmia sp!, {r3, r4, r5, pc}
|
||||
.align 2, 0
|
||||
_020EB824: .word __StringRead
|
||||
_020EB828: .word errno
|
||||
arm_func_end strtol
|
||||
|
||||
arm_func_start atol
|
||||
atol: ; 0x020EB82C
|
||||
ldr ip, _020EB83C ; =strtol
|
||||
mov r1, #0
|
||||
mov r2, #0xa
|
||||
bx ip
|
||||
.align 2, 0
|
||||
_020EB83C: .word strtol
|
||||
arm_func_end atol
|
||||
|
||||
exception __strtoul, 0x03E9, 0x0060FF00
|
||||
exception __strtoull, 0x046D, 0x00807F00
|
||||
exception strtoul, 0x0099, 0x00600300
|
||||
exception strtol, 0x00C9, 0x00600300
|
||||
exception atol, 0x0015, 0x00000000
|
||||
8
lib/MSL_C/asm/include/MSL_Common_strtoul.inc
Normal file
8
lib/MSL_C/asm/include/MSL_Common_strtoul.inc
Normal file
|
|
@ -0,0 +1,8 @@
|
|||
#include <nitro/fs/overlay.h>
|
||||
#pragma once
|
||||
.public _u32_div_f
|
||||
.public __msl_digit
|
||||
.public __upper_mapC
|
||||
.public _ll_udiv
|
||||
.public __StringRead
|
||||
.public errno
|
||||
|
|
@ -144,7 +144,7 @@
|
|||
.public atod
|
||||
.public strtoul
|
||||
.public strtol
|
||||
.public atoi
|
||||
.public atol
|
||||
.public wcslen
|
||||
.public strnicmp
|
||||
.public _dadd
|
||||
|
|
|
|||
|
|
@ -189,7 +189,7 @@
|
|||
.public memcmp
|
||||
.public strlen
|
||||
.public strncpy
|
||||
.public atoi
|
||||
.public atol
|
||||
.public swprintf
|
||||
.public _ll_udiv
|
||||
.public _ull_mod
|
||||
|
|
|
|||
|
|
@ -48,7 +48,7 @@
|
|||
.public strchr
|
||||
.public strspn
|
||||
.public strstr
|
||||
.public atoi
|
||||
.public atol
|
||||
.public _ll_udiv
|
||||
.public _u32_div_f
|
||||
.public __msl_digit
|
||||
|
|
|
|||
|
|
@ -32,7 +32,7 @@
|
|||
.public strstr
|
||||
.public strtoul
|
||||
.public strtol
|
||||
.public atoi
|
||||
.public atol
|
||||
.public strnicmp
|
||||
.public _s32_div_f
|
||||
.public _u32_div_f
|
||||
|
|
|
|||
|
|
@ -728,7 +728,7 @@ _021E8508:
|
|||
ldr r0, [r0, #0x314]
|
||||
ldr r1, _021E8778 ; =ov00_022164C8
|
||||
bl ov00_021EA1CC
|
||||
bl atoi
|
||||
bl atol
|
||||
ldr r1, _021E8774 ; =errno
|
||||
ldr r1, [r1]
|
||||
cmp r1, #0x22
|
||||
|
|
@ -1766,7 +1766,7 @@ ov00_021E9350: ; 0x021E9350
|
|||
strb r1, [r6]
|
||||
bl OS_LockMutex
|
||||
add r0, r8, r7
|
||||
bl atoi
|
||||
bl atol
|
||||
add r1, r5, #0x1000
|
||||
add r2, r5, #0x218
|
||||
str r0, [r1, #0xa30]
|
||||
|
|
@ -2460,7 +2460,7 @@ _021E9D5C:
|
|||
cmp r4, #0
|
||||
beq _021E9DC0
|
||||
mov r0, r4
|
||||
bl atoi
|
||||
bl atol
|
||||
add r1, r5, #0x1100
|
||||
strh r0, [r1, #0x34]
|
||||
_021E9DC0:
|
||||
|
|
@ -3217,7 +3217,7 @@ _021EA7FC:
|
|||
ldr r0, [r5, #0x14]
|
||||
ldr r1, _021EB4F8 ; =ov00_022169F0
|
||||
bl ov00_021EA1CC
|
||||
bl atoi
|
||||
bl atol
|
||||
mov r6, r0
|
||||
ldr r0, _021EB4FC ; =errno
|
||||
ldr r0, [r0]
|
||||
|
|
@ -3709,7 +3709,7 @@ _021EAF10:
|
|||
ldr r0, [r5, #0x14]
|
||||
ldr r1, _021EB4F8 ; =ov00_022169F0
|
||||
bl ov00_021EA1CC
|
||||
bl atoi
|
||||
bl atol
|
||||
mov r6, r0
|
||||
ldr r0, _021EB4FC ; =errno
|
||||
ldr r0, [r0]
|
||||
|
|
@ -3760,7 +3760,7 @@ _021EAFA0:
|
|||
b _021EB490
|
||||
_021EAFD4:
|
||||
add r0, sp, #0x2c
|
||||
bl atoi
|
||||
bl atol
|
||||
ldr r1, _021EB4FC ; =errno
|
||||
ldr r1, [r1]
|
||||
cmp r1, #0x22
|
||||
|
|
@ -3925,7 +3925,7 @@ _021EB234:
|
|||
mov r1, #0
|
||||
strb r1, [sl, r0]
|
||||
mov r0, sl
|
||||
bl atoi
|
||||
bl atol
|
||||
ldr r1, _021EB4FC ; =errno
|
||||
ldr r1, [r1]
|
||||
cmp r1, #0x22
|
||||
|
|
@ -4218,7 +4218,7 @@ ov00_021EB5B0: ; 0x021EB5B0
|
|||
strb r2, [sp, #0x16]
|
||||
strb r2, [sp, #0x19]
|
||||
str r2, [r1]
|
||||
bl atoi
|
||||
bl atol
|
||||
ldr r1, _021EB7C0 ; =errno
|
||||
str r0, [sp, #0x2c]
|
||||
ldr r1, [r1]
|
||||
|
|
@ -4250,7 +4250,7 @@ _021EB6CC:
|
|||
mov r2, #0
|
||||
add r0, sp, #5
|
||||
str r2, [r1]
|
||||
bl atoi
|
||||
bl atol
|
||||
ldr r1, _021EB7C0 ; =errno
|
||||
str r0, [sp, #0x34]
|
||||
ldr r0, [r1]
|
||||
|
|
@ -4259,7 +4259,7 @@ _021EB6CC:
|
|||
mov r2, #0
|
||||
add r0, sp, #0x11
|
||||
str r2, [r1]
|
||||
bl atoi
|
||||
bl atol
|
||||
ldr r1, _021EB7C0 ; =errno
|
||||
str r0, [sp, #0x20]
|
||||
ldr r0, [r1]
|
||||
|
|
@ -4268,7 +4268,7 @@ _021EB6CC:
|
|||
mov r2, #0
|
||||
add r0, sp, #0x14
|
||||
str r2, [r1]
|
||||
bl atoi
|
||||
bl atol
|
||||
ldr r1, _021EB7C0 ; =errno
|
||||
str r0, [sp, #0x24]
|
||||
ldr r0, [r1]
|
||||
|
|
@ -4277,7 +4277,7 @@ _021EB6CC:
|
|||
mov r2, #0
|
||||
add r0, sp, #0x17
|
||||
str r2, [r1]
|
||||
bl atoi
|
||||
bl atol
|
||||
ldr r1, _021EB7C0 ; =errno
|
||||
str r0, [sp, #0x28]
|
||||
ldr r0, [r1]
|
||||
|
|
@ -4645,7 +4645,7 @@ _021EBC40:
|
|||
mov r0, #0
|
||||
ldmia sp!, {r3, r4, pc}
|
||||
_021EBC6C:
|
||||
bl atoi
|
||||
bl atol
|
||||
ldr r1, _021EBDEC ; =errno
|
||||
mov r2, r0
|
||||
ldr r0, [r1]
|
||||
|
|
@ -4683,7 +4683,7 @@ _021EBCC0:
|
|||
ldmia sp!, {r3, r4, pc}
|
||||
_021EBCF4:
|
||||
add r0, sp, #0
|
||||
bl atoi
|
||||
bl atol
|
||||
ldr r1, _021EBDEC ; =errno
|
||||
mov r2, r0
|
||||
ldr r0, [r1]
|
||||
|
|
@ -29886,7 +29886,7 @@ _02200D10:
|
|||
cmp r0, #0
|
||||
beq _02200DB8
|
||||
add r0, r0, #4
|
||||
bl atoi
|
||||
bl atol
|
||||
mov r5, r0
|
||||
mov r0, r4
|
||||
mov r1, fp
|
||||
|
|
@ -30193,7 +30193,7 @@ ov00_02201134: ; 0x02201134
|
|||
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc}
|
||||
_02201198:
|
||||
add r0, sp, #0x138
|
||||
bl atoi
|
||||
bl atol
|
||||
mov r4, r0
|
||||
ldr r1, _02201AB0 ; =ov00_022182A0
|
||||
add r2, sp, #0x138
|
||||
|
|
@ -30216,7 +30216,7 @@ _02201198:
|
|||
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc}
|
||||
_022011F0:
|
||||
add r0, sp, #0x138
|
||||
bl atoi
|
||||
bl atol
|
||||
mov r6, r0
|
||||
ldr r1, _02201AB4 ; =ov00_022182A4
|
||||
add r2, sp, #0x138
|
||||
|
|
@ -30226,7 +30226,7 @@ _022011F0:
|
|||
cmp r0, #0
|
||||
beq _02201224
|
||||
add r0, sp, #0x138
|
||||
bl atoi
|
||||
bl atol
|
||||
b _0220122C
|
||||
_02201224:
|
||||
mov r0, #0
|
||||
|
|
@ -30530,7 +30530,7 @@ _0220163C:
|
|||
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc}
|
||||
_02201688:
|
||||
add r0, sp, #0x28
|
||||
bl atoi
|
||||
bl atol
|
||||
str r0, [r7, #4]
|
||||
ldr r0, [r7, #8]
|
||||
bl ov00_021EC3D8
|
||||
|
|
@ -30591,16 +30591,16 @@ _02201754:
|
|||
moveq r0, #0
|
||||
beq _022017CC
|
||||
add r0, sp, #0x28
|
||||
bl atoi
|
||||
bl atol
|
||||
mov r5, r0
|
||||
add r0, sp, #0x28
|
||||
bl atoi
|
||||
bl atol
|
||||
mov fp, r0
|
||||
add r0, sp, #0x28
|
||||
bl atoi
|
||||
bl atol
|
||||
mov r4, r0
|
||||
add r0, sp, #0x28
|
||||
bl atoi
|
||||
bl atol
|
||||
mov r1, r4, lsr #0x18
|
||||
mov r0, r0, lsr #8
|
||||
mov r2, fp, lsl #8
|
||||
|
|
@ -30623,7 +30623,7 @@ _022017CC:
|
|||
moveq r0, #0
|
||||
beq _0220181C
|
||||
add r0, sp, #0x28
|
||||
bl atoi
|
||||
bl atol
|
||||
mov r0, r0, lsl #0x10
|
||||
mov r0, r0, lsr #0x10
|
||||
mov r1, r0, asr #8
|
||||
|
|
@ -30726,7 +30726,7 @@ _02201938:
|
|||
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc}
|
||||
_02201974:
|
||||
add r0, r0, #3
|
||||
bl atoi
|
||||
bl atol
|
||||
mov r4, r0
|
||||
ldr r1, _02201AE0 ; =ov00_022182F0
|
||||
add r0, sp, #0x138
|
||||
|
|
@ -31816,7 +31816,7 @@ ov00_022027FC: ; 0x022027FC
|
|||
moveq r0, #3
|
||||
ldmeqia sp!, {r3, r4, r5, r6, r7, pc}
|
||||
add r0, sp, #0
|
||||
bl atoi
|
||||
bl atol
|
||||
str r0, [r7]
|
||||
ldr r0, [r6]
|
||||
ldr r1, _02202934 ; =ov00_022185AC
|
||||
|
|
@ -31828,7 +31828,7 @@ ov00_022027FC: ; 0x022027FC
|
|||
moveq r0, #3
|
||||
ldmeqia sp!, {r3, r4, r5, r6, r7, pc}
|
||||
add r0, sp, #0
|
||||
bl atoi
|
||||
bl atol
|
||||
ldr r2, [r6]
|
||||
add r1, r0, #1
|
||||
sub r2, r4, r2
|
||||
|
|
@ -33110,7 +33110,7 @@ _02203AB8:
|
|||
cmp r0, #0
|
||||
beq _02203AEC
|
||||
add r0, sp, #0xa0
|
||||
bl atoi
|
||||
bl atol
|
||||
str r0, [r5, #0x1a0]
|
||||
_02203AEC:
|
||||
ldr r1, _022040D4 ; =ov00_02218A08
|
||||
|
|
@ -33246,7 +33246,7 @@ _02203C90:
|
|||
ldmia sp!, {r4, r5, r6, r7, r8, pc}
|
||||
_02203CD8:
|
||||
add r0, sp, #0xa0
|
||||
bl atoi
|
||||
bl atol
|
||||
str r0, [r5, #0x19c]
|
||||
ldr r1, _022040F0 ; =ov00_02218964
|
||||
add r2, sp, #0xa0
|
||||
|
|
@ -33268,7 +33268,7 @@ _02203CD8:
|
|||
ldmia sp!, {r4, r5, r6, r7, r8, pc}
|
||||
_02203D2C:
|
||||
add r0, sp, #0xa0
|
||||
bl atoi
|
||||
bl atol
|
||||
str r0, [r5, #0x1a0]
|
||||
mov r0, r8
|
||||
mov r1, r4
|
||||
|
|
@ -33318,7 +33318,7 @@ _02203DA0:
|
|||
ldmia sp!, {r4, r5, r6, r7, r8, pc}
|
||||
_02203DE8:
|
||||
add r0, sp, #0xa0
|
||||
bl atoi
|
||||
bl atol
|
||||
str r0, [r5, #0x198]
|
||||
ldr r1, _022040E8 ; =ov00_02218958
|
||||
add r2, sp, #0xa0
|
||||
|
|
@ -33340,7 +33340,7 @@ _02203DE8:
|
|||
ldmia sp!, {r4, r5, r6, r7, r8, pc}
|
||||
_02203E3C:
|
||||
add r0, sp, #0xa0
|
||||
bl atoi
|
||||
bl atol
|
||||
str r0, [r5, #0x19c]
|
||||
ldr r1, _022040F0 ; =ov00_02218964
|
||||
add r2, sp, #0xa0
|
||||
|
|
@ -33362,7 +33362,7 @@ _02203E3C:
|
|||
ldmia sp!, {r4, r5, r6, r7, r8, pc}
|
||||
_02203E90:
|
||||
add r0, sp, #0xa0
|
||||
bl atoi
|
||||
bl atol
|
||||
str r0, [r5, #0x1a0]
|
||||
ldr r1, _022040FC ; =ov00_0221893C
|
||||
add r2, sp, #0x18
|
||||
|
|
@ -34110,7 +34110,7 @@ _022048C4:
|
|||
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc}
|
||||
_0220490C:
|
||||
add r0, sp, #0xec
|
||||
bl atoi
|
||||
bl atol
|
||||
mov sb, r0
|
||||
cmp sb, #0
|
||||
bgt _02204934
|
||||
|
|
@ -34204,7 +34204,7 @@ _0220495C:
|
|||
streq r0, [sp, #0x190]
|
||||
beq _02204A88
|
||||
add r0, sp, #0xec
|
||||
bl atoi
|
||||
bl atol
|
||||
str r0, [sp, #0x190]
|
||||
_02204A88:
|
||||
ldr r2, [sp, #0x18c]
|
||||
|
|
@ -34283,7 +34283,7 @@ _02204B58:
|
|||
b _02204BD8
|
||||
_02204BA8:
|
||||
add r0, sp, #0xec
|
||||
bl atoi
|
||||
bl atol
|
||||
add r5, sp, #0x234
|
||||
mov r1, r0
|
||||
add r2, sp, #0x22c
|
||||
|
|
@ -34325,7 +34325,7 @@ _02204C24:
|
|||
streq r0, [sp, #0x23c]
|
||||
beq _02204C54
|
||||
add r0, sp, #0xec
|
||||
bl atoi
|
||||
bl atol
|
||||
str r0, [sp, #0x23c]
|
||||
_02204C54:
|
||||
ldr r2, [sp, #0x240]
|
||||
|
|
@ -34347,7 +34347,7 @@ _02204C54:
|
|||
streq r0, [sp, #0x244]
|
||||
beq _02204CA8
|
||||
add r0, sp, #0xec
|
||||
bl atoi
|
||||
bl atol
|
||||
str r0, [sp, #0x244]
|
||||
_02204CA8:
|
||||
ldr r1, _0220503C ; =ov00_02218C78
|
||||
|
|
@ -34360,7 +34360,7 @@ _02204CA8:
|
|||
streq r0, [sp, #0x248]
|
||||
beq _02204CD8
|
||||
add r0, sp, #0xec
|
||||
bl atoi
|
||||
bl atol
|
||||
str r0, [sp, #0x248]
|
||||
_02204CD8:
|
||||
ldr r1, _02205040 ; =ov00_02218C80
|
||||
|
|
@ -34373,7 +34373,7 @@ _02204CD8:
|
|||
streq r0, [sp, #0x24c]
|
||||
beq _02204D08
|
||||
add r0, sp, #0xec
|
||||
bl atoi
|
||||
bl atol
|
||||
str r0, [sp, #0x24c]
|
||||
_02204D08:
|
||||
ldr r1, _02205044 ; =ov00_02218C88
|
||||
|
|
@ -34386,7 +34386,7 @@ _02204D08:
|
|||
streq r0, [sp, #0x250]
|
||||
beq _02204D38
|
||||
add r0, sp, #0xec
|
||||
bl atoi
|
||||
bl atol
|
||||
str r0, [sp, #0x250]
|
||||
_02204D38:
|
||||
ldr r1, _02205048 ; =ov00_02218C90
|
||||
|
|
@ -34399,7 +34399,7 @@ _02204D38:
|
|||
streq r0, [sp, #0x254]
|
||||
beq _02204D68
|
||||
add r0, sp, #0xec
|
||||
bl atoi
|
||||
bl atol
|
||||
str r0, [sp, #0x254]
|
||||
_02204D68:
|
||||
ldr r1, _0220504C ; =ov00_02218C98
|
||||
|
|
@ -34412,7 +34412,7 @@ _02204D68:
|
|||
streq r0, [sp, #0x258]
|
||||
beq _02204D98
|
||||
add r0, sp, #0xec
|
||||
bl atoi
|
||||
bl atol
|
||||
str r0, [sp, #0x258]
|
||||
_02204D98:
|
||||
ldr r1, _02205050 ; =ov00_02218CA0
|
||||
|
|
@ -34425,7 +34425,7 @@ _02204D98:
|
|||
streq r0, [sp, #0x25c]
|
||||
beq _02204DC8
|
||||
add r0, sp, #0xec
|
||||
bl atoi
|
||||
bl atol
|
||||
str r0, [sp, #0x25c]
|
||||
_02204DC8:
|
||||
ldr r1, _02205054 ; =ov00_02218CA8
|
||||
|
|
@ -34438,7 +34438,7 @@ _02204DC8:
|
|||
streq r0, [sp, #0x260]
|
||||
beq _02204DF8
|
||||
add r0, sp, #0xec
|
||||
bl atoi
|
||||
bl atol
|
||||
str r0, [sp, #0x260]
|
||||
_02204DF8:
|
||||
ldr r1, _02205058 ; =ov00_02218CB0
|
||||
|
|
@ -34451,7 +34451,7 @@ _02204DF8:
|
|||
streq r0, [sp, #0x264]
|
||||
beq _02204E28
|
||||
add r0, sp, #0xec
|
||||
bl atoi
|
||||
bl atol
|
||||
str r0, [sp, #0x264]
|
||||
_02204E28:
|
||||
ldr r1, _0220505C ; =ov00_02218CB8
|
||||
|
|
@ -35338,7 +35338,7 @@ _02205A74:
|
|||
ldmia sp!, {r4, r5, r6, pc}
|
||||
_02205AA4:
|
||||
mov r0, r5
|
||||
bl atoi
|
||||
bl atol
|
||||
mov r2, r0
|
||||
ldr r1, _02205E0C ; =0x0000070D
|
||||
mov r0, r6
|
||||
|
|
@ -35349,7 +35349,7 @@ _02205AA4:
|
|||
ldmia sp!, {r4, r5, r6, pc}
|
||||
_02205ACC:
|
||||
mov r0, r5
|
||||
bl atoi
|
||||
bl atol
|
||||
mov r2, r0
|
||||
ldr r1, _02205E10 ; =0x0000070E
|
||||
mov r0, r6
|
||||
|
|
@ -35373,7 +35373,7 @@ _02205AF4:
|
|||
ldmia sp!, {r4, r5, r6, pc}
|
||||
_02205B24:
|
||||
mov r0, r5
|
||||
bl atoi
|
||||
bl atol
|
||||
mov r2, r0
|
||||
mov r0, r6
|
||||
mov r1, #0x710
|
||||
|
|
@ -35397,7 +35397,7 @@ _02205B4C:
|
|||
ldmia sp!, {r4, r5, r6, pc}
|
||||
_02205B7C:
|
||||
mov r0, r5
|
||||
bl atoi
|
||||
bl atol
|
||||
mov r2, r0
|
||||
ldr r1, _02205E1C ; =0x00000712
|
||||
mov r0, r6
|
||||
|
|
@ -35408,7 +35408,7 @@ _02205B7C:
|
|||
ldmia sp!, {r4, r5, r6, pc}
|
||||
_02205BA4:
|
||||
mov r0, r5
|
||||
bl atoi
|
||||
bl atol
|
||||
mov r2, r0
|
||||
ldr r1, _02205E20 ; =0x00000714
|
||||
mov r0, r6
|
||||
|
|
@ -35419,7 +35419,7 @@ _02205BA4:
|
|||
ldmia sp!, {r4, r5, r6, pc}
|
||||
_02205BCC:
|
||||
mov r0, r5
|
||||
bl atoi
|
||||
bl atol
|
||||
mov r2, r0
|
||||
ldr r1, _02205E24 ; =0x00000715
|
||||
mov r0, r6
|
||||
|
|
@ -36625,7 +36625,7 @@ _02206C2C:
|
|||
ldmia sp!, {r4, r5, r6, r7, pc}
|
||||
_02206C94:
|
||||
add r0, sp, #0x71
|
||||
bl atoi
|
||||
bl atol
|
||||
mov r7, r0
|
||||
ldr r0, [r5, #0x18]
|
||||
ldr r1, _02206DF0 ; =ov00_02219034
|
||||
|
|
@ -37776,7 +37776,7 @@ _02207C00:
|
|||
ldmia sp!, {r4, r5, r6, pc}
|
||||
_02207C48:
|
||||
add r0, sp, #0x10
|
||||
bl atoi
|
||||
bl atol
|
||||
ldr r2, [r4, #0xc]
|
||||
ldr r1, [r4, #0x10]
|
||||
mov r6, r0
|
||||
|
|
@ -39013,7 +39013,7 @@ _02208D8C:
|
|||
mov r2, #0xac
|
||||
bl memset
|
||||
mov r0, r5
|
||||
bl atoi
|
||||
bl atol
|
||||
str r0, [r7, r8]
|
||||
mov r8, #0
|
||||
_02208DC0:
|
||||
|
|
@ -39562,7 +39562,7 @@ _0220959C:
|
|||
mov r0, #1
|
||||
str r0, [r7, #0x24]
|
||||
mov r0, r5
|
||||
bl atoi
|
||||
bl atol
|
||||
str r0, [r8, sb]
|
||||
mov r8, #0
|
||||
_022095D8:
|
||||
|
|
@ -39603,7 +39603,7 @@ _0220964C:
|
|||
cmp r0, #0
|
||||
bne _02209670
|
||||
mov r0, r5
|
||||
bl atoi
|
||||
bl atol
|
||||
str r0, [r7, #0x24]
|
||||
b _022096A0
|
||||
_02209670:
|
||||
|
|
@ -39691,7 +39691,7 @@ _02209718:
|
|||
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc}
|
||||
_022097A4:
|
||||
add r0, sp, #0x90
|
||||
bl atoi
|
||||
bl atol
|
||||
movs r4, r0
|
||||
beq _022097C4
|
||||
ldr r0, [sp, #0x28]
|
||||
|
|
@ -39719,7 +39719,7 @@ _022097C4:
|
|||
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc}
|
||||
_0220980C:
|
||||
add r0, sp, #0x90
|
||||
bl atoi
|
||||
bl atol
|
||||
mov r5, r0
|
||||
_02209818:
|
||||
mov r0, #8
|
||||
|
|
@ -39784,7 +39784,7 @@ _02209874:
|
|||
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc}
|
||||
_02209900:
|
||||
add r0, sp, #0x90
|
||||
bl atoi
|
||||
bl atol
|
||||
movs r4, r0
|
||||
ldrne r0, [sp, #0x28]
|
||||
ldr r1, _02209F9C ; =ov00_02219648
|
||||
|
|
@ -39813,7 +39813,7 @@ _02209964:
|
|||
b _02209978
|
||||
_0220996C:
|
||||
add r0, sp, #0x90
|
||||
bl atoi
|
||||
bl atol
|
||||
mov r5, r0
|
||||
_02209978:
|
||||
mov r0, #8
|
||||
|
|
@ -39947,7 +39947,7 @@ _02209B34:
|
|||
mov r0, r5
|
||||
add r1, r1, #1
|
||||
str r1, [fp, #4]
|
||||
bl atoi
|
||||
bl atol
|
||||
str r0, [r8, sb]
|
||||
mov r8, #0
|
||||
_02209B78:
|
||||
|
|
@ -40116,7 +40116,7 @@ _02209D60:
|
|||
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc}
|
||||
_02209DD8:
|
||||
add r0, sp, #0x90
|
||||
bl atoi
|
||||
bl atol
|
||||
str r0, [r8, #4]
|
||||
mov r0, r0, lsl #2
|
||||
bl ov00_021EC3A8
|
||||
|
|
@ -40576,7 +40576,7 @@ ov00_0220A3C8: ; 0x0220A3C8
|
|||
cmp r0, #0
|
||||
beq _0220A420
|
||||
add r0, sp, #0
|
||||
bl atoi
|
||||
bl atol
|
||||
str r0, [r4, #0x418]
|
||||
_0220A420:
|
||||
ldr r1, _0220A498 ; =ov00_022197A4
|
||||
|
|
@ -41689,12 +41689,12 @@ ov00_0220B26C: ; 0x0220B26C
|
|||
ldr r1, _0220B30C ; =ov00_0221994C
|
||||
mov r6, r0
|
||||
bl ov00_0220B15C
|
||||
bl atoi
|
||||
bl atol
|
||||
mov r5, r0
|
||||
ldr r1, _0220B310 ; =ov00_02219954
|
||||
mov r0, r6
|
||||
bl ov00_0220B15C
|
||||
bl atoi
|
||||
bl atol
|
||||
mov r4, r0
|
||||
ldr r1, _0220B314 ; =ov00_02219958
|
||||
mov r0, r6
|
||||
|
|
@ -41737,12 +41737,12 @@ ov00_0220B31C: ; 0x0220B31C
|
|||
ldr r1, _0220B39C ; =ov00_02219960
|
||||
mov r5, r0
|
||||
bl ov00_0220B15C
|
||||
bl atoi
|
||||
bl atol
|
||||
mov r4, r0
|
||||
ldr r1, _0220B3A0 ; =ov00_02219954
|
||||
mov r0, r5
|
||||
bl ov00_0220B15C
|
||||
bl atoi
|
||||
bl atol
|
||||
mov r1, r0
|
||||
mov r0, #3
|
||||
mov r2, #0
|
||||
|
|
@ -41778,22 +41778,22 @@ ov00_0220B3A8: ; 0x0220B3A8
|
|||
ldr r1, _0220B470 ; =ov00_02219968
|
||||
mov r4, r0
|
||||
bl ov00_0220B15C
|
||||
bl atoi
|
||||
bl atol
|
||||
mov r7, r0
|
||||
ldr r1, _0220B474 ; =ov00_02219954
|
||||
mov r0, r4
|
||||
bl ov00_0220B15C
|
||||
bl atoi
|
||||
bl atol
|
||||
mov r6, r0
|
||||
ldr r1, _0220B478 ; =ov00_02219970
|
||||
mov r0, r4
|
||||
bl ov00_0220B15C
|
||||
bl atoi
|
||||
bl atol
|
||||
mov r5, r0
|
||||
ldr r1, _0220B47C ; =ov00_02219974
|
||||
mov r0, r4
|
||||
bl ov00_0220B15C
|
||||
bl atoi
|
||||
bl atol
|
||||
mov r8, r0
|
||||
mov r1, r6
|
||||
mov r2, r5
|
||||
|
|
@ -41807,7 +41807,7 @@ ov00_0220B3A8: ; 0x0220B3A8
|
|||
ldr r1, _0220B480 ; =ov00_02219978
|
||||
mov r0, r4
|
||||
bl ov00_0220B15C
|
||||
bl atoi
|
||||
bl atol
|
||||
mov r6, r0
|
||||
ldr r1, _0220B484 ; =ov00_02219980
|
||||
mov r0, r4
|
||||
|
|
@ -41839,22 +41839,22 @@ ov00_0220B48C: ; 0x0220B48C
|
|||
ldr r1, _0220B514 ; =ov00_02219988
|
||||
mov r7, r0
|
||||
bl ov00_0220B15C
|
||||
bl atoi
|
||||
bl atol
|
||||
mov r6, r0
|
||||
ldr r1, _0220B518 ; =ov00_02219970
|
||||
mov r0, r7
|
||||
bl ov00_0220B15C
|
||||
bl atoi
|
||||
bl atol
|
||||
mov r5, r0
|
||||
ldr r1, _0220B51C ; =ov00_02219954
|
||||
mov r0, r7
|
||||
bl ov00_0220B15C
|
||||
bl atoi
|
||||
bl atol
|
||||
mov r4, r0
|
||||
ldr r1, _0220B520 ; =ov00_02219974
|
||||
mov r0, r7
|
||||
bl ov00_0220B15C
|
||||
bl atoi
|
||||
bl atol
|
||||
mov r1, r4
|
||||
mov r4, r0
|
||||
mov r2, r5
|
||||
|
|
@ -46997,7 +46997,7 @@ _0220F898:
|
|||
bne _0220F874
|
||||
_0220F8B4:
|
||||
add r0, r5, #1
|
||||
bl atoi
|
||||
bl atol
|
||||
cmp r0, #0
|
||||
blt _0220F8D0
|
||||
ldr r1, _0220F954 ; =0x0000FFFF
|
||||
|
|
@ -51006,7 +51006,7 @@ _02212E2C:
|
|||
mov r0, r4
|
||||
ldmia sp!, {r4, r5, r6, pc}
|
||||
_02212E34:
|
||||
bl atoi
|
||||
bl atol
|
||||
ldmia sp!, {r4, r5, r6, pc}
|
||||
.balign 4, 0
|
||||
_02212E3C: .word ov00_0221A514
|
||||
|
|
|
|||
|
|
@ -13804,7 +13804,7 @@ _022321C0:
|
|||
blt _022321C0
|
||||
_022321DC:
|
||||
add r0, sp, #0
|
||||
bl atoi
|
||||
bl atol
|
||||
cmp r0, r4
|
||||
movge r0, #1
|
||||
movlt r0, #0
|
||||
|
|
@ -24470,7 +24470,7 @@ _0223AAA4:
|
|||
blt _0223AAA4
|
||||
_0223AAC0:
|
||||
mov r0, r6
|
||||
bl atoi
|
||||
bl atol
|
||||
strb r0, [sb, r7]
|
||||
add r7, r7, #1
|
||||
cmp r7, #4
|
||||
|
|
|
|||
|
|
@ -3179,7 +3179,7 @@ _0221EA9C:
|
|||
bne _0221EB18
|
||||
add r4, r4, #1
|
||||
mov r0, r4
|
||||
bl atoi
|
||||
bl atol
|
||||
strh r0, [r5, #0x20]
|
||||
ldrh r0, [r5, #0x20]
|
||||
cmp r0, #0
|
||||
|
|
@ -4542,7 +4542,7 @@ _0221FD84:
|
|||
b _0221FE74
|
||||
_0221FDB4:
|
||||
mov r0, r8
|
||||
bl atoi
|
||||
bl atol
|
||||
str r0, [sl, #0x104]
|
||||
_0221FDC0:
|
||||
ldr r1, _0221FEA4 ; =ov38_02225D04
|
||||
|
|
|
|||
|
|
@ -16053,7 +16053,7 @@ _0223EEF8:
|
|||
movs r0, r0, lsr #0x1f
|
||||
addeq r0, r1, #1
|
||||
ldrne r0, [r1, #8]
|
||||
bl atoi
|
||||
bl atol
|
||||
movs r4, r0
|
||||
bne _0223EF40
|
||||
add r0, sp, #0x6c
|
||||
|
|
@ -20396,7 +20396,7 @@ _02242A80:
|
|||
movs r0, r0, lsr #0x1f
|
||||
addeq r0, r1, #0xd
|
||||
ldrne r0, [r1, #0x14]
|
||||
bl atoi
|
||||
bl atol
|
||||
movs r4, r0
|
||||
add r0, sp, #0xc
|
||||
bne _02242AB8
|
||||
|
|
@ -30191,7 +30191,7 @@ _0224B05C:
|
|||
cmpne r0, #0
|
||||
streq r7, [sb, #0x1c]
|
||||
beq _0224B0DC
|
||||
bl atoi
|
||||
bl atol
|
||||
str r0, [sb, #0x1c]
|
||||
b _0224B0DC
|
||||
_0224B080:
|
||||
|
|
@ -33616,7 +33616,7 @@ _0224E05C:
|
|||
bl memcpy
|
||||
ldr r0, [sb, #0x20]
|
||||
ldr r0, [r0, #8]
|
||||
bl atoi
|
||||
bl atol
|
||||
ldr r1, [sb, #0x20]
|
||||
mov r5, r0
|
||||
ldr r0, [r1, #0xc]
|
||||
|
|
@ -34447,7 +34447,7 @@ _0224EC44:
|
|||
ldmneia sp!, {r3, r4, r5, r6, pc}
|
||||
ldr r0, [r5, #0x20]
|
||||
ldr r0, [r0, #4]
|
||||
bl atoi
|
||||
bl atol
|
||||
ldr r1, [r5, #0x20]
|
||||
mov r5, r0
|
||||
ldr r6, [r1, #8]
|
||||
|
|
@ -34504,11 +34504,11 @@ _0224ED10:
|
|||
ldmltia sp!, {r3, r4, r5, pc}
|
||||
ldr r0, [r4, #0x20]
|
||||
ldr r0, [r0, #4]
|
||||
bl atoi
|
||||
bl atol
|
||||
str r0, [r5, #0x8ac]
|
||||
ldr r0, [r4, #0x20]
|
||||
ldr r0, [r0, #8]
|
||||
bl atoi
|
||||
bl atol
|
||||
str r0, [r5, #0x8b0]
|
||||
ldr r0, [r5, #0x10]
|
||||
cmp r0, #0
|
||||
|
|
@ -35081,7 +35081,7 @@ _0224F4D4:
|
|||
ldmneia sp!, {r3, r4, r5, r6, r7, r8, sb, pc}
|
||||
ldr r0, [r5, #0x20]
|
||||
ldr r0, [r0, #4]
|
||||
bl atoi
|
||||
bl atol
|
||||
ldr r2, [r5, #0x20]
|
||||
ldr r1, [r4, #4]
|
||||
ldr r5, [r2, #8]
|
||||
|
|
|
|||
|
|
@ -42,7 +42,7 @@
|
|||
.public atod
|
||||
.public strtoul
|
||||
.public strtol
|
||||
.public atoi
|
||||
.public atol
|
||||
.public swprintf
|
||||
.public wcslen
|
||||
.public pow
|
||||
|
|
|
|||
736
lib/asm/msl.s
736
lib/asm/msl.s
|
|
@ -24,737 +24,6 @@ __global_destructor_chain: ; 0x021E58E8
|
|||
|
||||
; MSL_C_NITRO_Ai_LE.a
|
||||
|
||||
arm_func_start __strtoul
|
||||
__strtoul: ; 0x020EAE78
|
||||
stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr}
|
||||
sub sp, sp, #0xc
|
||||
ldr r4, [sp, #0x38]
|
||||
movs sb, r0
|
||||
ldr r0, [sp, #0x34]
|
||||
str r4, [sp, #0x38]
|
||||
mov r4, #0
|
||||
str r0, [sp, #0x34]
|
||||
ldr r0, [sp, #0x38]
|
||||
str r1, [sp]
|
||||
str r4, [r0]
|
||||
mov r0, r4
|
||||
str r0, [sp, #4]
|
||||
ldr r0, [sp, #0x34]
|
||||
mov r1, r4
|
||||
str r1, [r0]
|
||||
ldr r0, [sp, #0x30]
|
||||
str r4, [sp, #8]
|
||||
mov r8, r2
|
||||
mov r7, r3
|
||||
mov r5, r4
|
||||
mov sl, r4
|
||||
str r0, [sp, #0x30]
|
||||
mov r4, #1
|
||||
bmi _020EAEF8
|
||||
cmp sb, #1
|
||||
beq _020EAEF8
|
||||
cmp sb, #0x24
|
||||
bgt _020EAEF8
|
||||
ldr r0, [sp]
|
||||
cmp r0, #1
|
||||
bge _020EAF00
|
||||
_020EAEF8:
|
||||
mov r4, #0x40
|
||||
b _020EAF1C
|
||||
_020EAF00:
|
||||
ldr r1, [sp, #8]
|
||||
mov r0, r7
|
||||
mov r3, r1
|
||||
mov r2, r1
|
||||
add r5, r3, #1
|
||||
blx r8
|
||||
mov r6, r0
|
||||
_020EAF1C:
|
||||
cmp sb, #0
|
||||
beq _020EAF34
|
||||
mov r1, sb
|
||||
mvn r0, #0
|
||||
bl _u32_div_f
|
||||
str r0, [sp, #4]
|
||||
_020EAF34:
|
||||
mvn fp, #0
|
||||
b _020EB1F4
|
||||
_020EAF3C:
|
||||
cmp r4, #8
|
||||
bgt _020EAF74
|
||||
cmp r4, #0
|
||||
addge pc, pc, r4, lsl #2
|
||||
b _020EB1F4
|
||||
_020EAF50: ; jump table
|
||||
b _020EB1F4 ; case 0
|
||||
b _020EAF80 ; case 1
|
||||
b _020EB02C ; case 2
|
||||
b _020EB1F4 ; case 3
|
||||
b _020EB068 ; case 4
|
||||
b _020EB1F4 ; case 5
|
||||
b _020EB1F4 ; case 6
|
||||
b _020EB1F4 ; case 7
|
||||
b _020EB0A8 ; case 8
|
||||
_020EAF74:
|
||||
cmp r4, #0x10
|
||||
beq _020EB0A8
|
||||
b _020EB1F4
|
||||
_020EAF80:
|
||||
cmp r6, #0
|
||||
blt _020EAF90
|
||||
cmp r6, #0x80
|
||||
blt _020EAF98
|
||||
_020EAF90:
|
||||
mov r0, #0
|
||||
b _020EAFA8
|
||||
_020EAF98:
|
||||
ldr r0, _020EB258 ; =__msl_digit
|
||||
mov r1, r6, lsl #1
|
||||
ldrh r0, [r0, r1]
|
||||
and r0, r0, #0x100
|
||||
_020EAFA8:
|
||||
cmp r0, #0
|
||||
beq _020EAFD4
|
||||
mov r1, #0
|
||||
mov r0, r7
|
||||
mov r2, r1
|
||||
blx r8
|
||||
mov r6, r0
|
||||
ldr r0, [sp, #8]
|
||||
add r0, r0, #1
|
||||
str r0, [sp, #8]
|
||||
b _020EB1F4
|
||||
_020EAFD4:
|
||||
cmp r6, #0x2b
|
||||
bne _020EAFF8
|
||||
mov r1, #0
|
||||
mov r0, r7
|
||||
mov r2, r1
|
||||
add r5, r5, #1
|
||||
blx r8
|
||||
mov r6, r0
|
||||
b _020EB024
|
||||
_020EAFF8:
|
||||
cmp r6, #0x2d
|
||||
bne _020EB024
|
||||
mov r1, #0
|
||||
mov r0, r7
|
||||
mov r2, r1
|
||||
add r5, r5, #1
|
||||
blx r8
|
||||
mov r6, r0
|
||||
ldr r0, [sp, #0x34]
|
||||
mov r1, #1
|
||||
str r1, [r0]
|
||||
_020EB024:
|
||||
mov r4, #2
|
||||
b _020EB1F4
|
||||
_020EB02C:
|
||||
cmp sb, #0
|
||||
cmpne sb, #0x10
|
||||
bne _020EB060
|
||||
cmp r6, #0x30
|
||||
bne _020EB060
|
||||
mov r1, #0
|
||||
mov r0, r7
|
||||
mov r2, r1
|
||||
mov r4, #4
|
||||
add r5, r5, #1
|
||||
blx r8
|
||||
mov r6, r0
|
||||
b _020EB1F4
|
||||
_020EB060:
|
||||
mov r4, #8
|
||||
b _020EB1F4
|
||||
_020EB068:
|
||||
cmp r6, #0x58
|
||||
cmpne r6, #0x78
|
||||
bne _020EB098
|
||||
mov r1, #0
|
||||
mov r0, r7
|
||||
mov r2, r1
|
||||
mov sb, #0x10
|
||||
mov r4, #8
|
||||
add r5, r5, #1
|
||||
blx r8
|
||||
mov r6, r0
|
||||
b _020EB1F4
|
||||
_020EB098:
|
||||
cmp sb, #0
|
||||
moveq sb, #8
|
||||
mov r4, #0x10
|
||||
b _020EB1F4
|
||||
_020EB0A8:
|
||||
ldr r0, [sp, #4]
|
||||
cmp sb, #0
|
||||
moveq sb, #0xa
|
||||
cmp r0, #0
|
||||
bne _020EB0CC
|
||||
mov r0, fp
|
||||
mov r1, sb
|
||||
bl _u32_div_f
|
||||
str r0, [sp, #4]
|
||||
_020EB0CC:
|
||||
cmp r6, #0
|
||||
blt _020EB0DC
|
||||
cmp r6, #0x80
|
||||
blt _020EB0E4
|
||||
_020EB0DC:
|
||||
mov r0, #0
|
||||
b _020EB0F4
|
||||
_020EB0E4:
|
||||
ldr r0, _020EB258 ; =__msl_digit
|
||||
mov r1, r6, lsl #1
|
||||
ldrh r0, [r0, r1]
|
||||
and r0, r0, #8
|
||||
_020EB0F4:
|
||||
cmp r0, #0
|
||||
beq _020EB11C
|
||||
sub r6, r6, #0x30
|
||||
cmp r6, sb
|
||||
blt _020EB1A4
|
||||
cmp r4, #0x10
|
||||
moveq r4, #0x20
|
||||
movne r4, #0x40
|
||||
add r6, r6, #0x30
|
||||
b _020EB1F4
|
||||
_020EB11C:
|
||||
cmp r6, #0
|
||||
blt _020EB12C
|
||||
cmp r6, #0x80
|
||||
blt _020EB134
|
||||
_020EB12C:
|
||||
mov r0, #0
|
||||
b _020EB144
|
||||
_020EB134:
|
||||
ldr r0, _020EB258 ; =__msl_digit
|
||||
mov r1, r6, lsl #1
|
||||
ldrh r0, [r0, r1]
|
||||
and r0, r0, #1
|
||||
_020EB144:
|
||||
cmp r0, #0
|
||||
beq _020EB178
|
||||
cmp r6, #0
|
||||
blt _020EB15C
|
||||
cmp r6, #0x80
|
||||
blt _020EB164
|
||||
_020EB15C:
|
||||
mov r0, r6
|
||||
b _020EB16C
|
||||
_020EB164:
|
||||
ldr r0, _020EB25C ; =__upper_mapC
|
||||
ldrb r0, [r0, r6]
|
||||
_020EB16C:
|
||||
sub r0, r0, #0x37
|
||||
cmp r0, sb
|
||||
blt _020EB188
|
||||
_020EB178:
|
||||
cmp r4, #0x10
|
||||
moveq r4, #0x20
|
||||
movne r4, #0x40
|
||||
b _020EB1F4
|
||||
_020EB188:
|
||||
cmp r6, #0
|
||||
blt _020EB1A0
|
||||
cmp r6, #0x80
|
||||
bge _020EB1A0
|
||||
ldr r0, _020EB25C ; =__upper_mapC
|
||||
ldrb r6, [r0, r6]
|
||||
_020EB1A0:
|
||||
sub r6, r6, #0x37
|
||||
_020EB1A4:
|
||||
ldr r0, [sp, #4]
|
||||
mov r4, #0x10
|
||||
cmp sl, r0
|
||||
ldrhi r0, [sp, #0x38]
|
||||
movhi r1, #1
|
||||
strhi r1, [r0]
|
||||
mul r0, sl, sb
|
||||
mov sl, r0
|
||||
sub r0, fp, r0
|
||||
cmp r6, r0
|
||||
ldrhi r0, [sp, #0x38]
|
||||
movhi r1, #1
|
||||
strhi r1, [r0]
|
||||
mov r1, #0
|
||||
mov r0, r7
|
||||
mov r2, r1
|
||||
add sl, sl, r6
|
||||
add r5, r5, #1
|
||||
blx r8
|
||||
mov r6, r0
|
||||
_020EB1F4:
|
||||
ldr r0, [sp]
|
||||
cmp r5, r0
|
||||
bgt _020EB210
|
||||
cmp r6, fp
|
||||
beq _020EB210
|
||||
tst r4, #0x60
|
||||
beq _020EAF3C
|
||||
_020EB210:
|
||||
tst r4, #0x34
|
||||
bne _020EB228
|
||||
ldr r0, [sp, #0x30]
|
||||
mov sl, #0
|
||||
str sl, [r0]
|
||||
b _020EB23C
|
||||
_020EB228:
|
||||
ldr r0, [sp, #8]
|
||||
sub r1, r5, #1
|
||||
add r1, r1, r0
|
||||
ldr r0, [sp, #0x30]
|
||||
str r1, [r0]
|
||||
_020EB23C:
|
||||
mov r0, r7
|
||||
mov r1, r6
|
||||
mov r2, #1
|
||||
blx r8
|
||||
mov r0, sl
|
||||
add sp, sp, #0xc
|
||||
ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
|
||||
.align 2, 0
|
||||
_020EB258: .word __msl_digit
|
||||
_020EB25C: .word __upper_mapC
|
||||
arm_func_end __strtoul
|
||||
|
||||
arm_func_start __strtoull
|
||||
__strtoull: ; 0x020EB260
|
||||
stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr}
|
||||
sub sp, sp, #0x20
|
||||
ldr r4, [sp, #0x48]
|
||||
movs sb, r0
|
||||
ldr r0, [sp, #0x44]
|
||||
str r4, [sp, #0x48]
|
||||
mov r4, #0
|
||||
str r0, [sp, #0x44]
|
||||
ldr r0, [sp, #0x48]
|
||||
str r1, [sp]
|
||||
str r4, [r0]
|
||||
mov r0, r4
|
||||
str r0, [sp, #0x10]
|
||||
str r0, [sp, #0x14]
|
||||
str r0, [sp, #0xc]
|
||||
ldr r0, [sp, #0x44]
|
||||
mov r1, r4
|
||||
str r1, [r0]
|
||||
ldr r0, [sp, #0x40]
|
||||
str r4, [sp, #0x18]
|
||||
mov sl, r2
|
||||
str r3, [sp, #4]
|
||||
mov r6, r4
|
||||
mov r7, r4
|
||||
str r0, [sp, #0x40]
|
||||
mov r5, #1
|
||||
bmi _020EB2E8
|
||||
cmp sb, #1
|
||||
beq _020EB2E8
|
||||
cmp sb, #0x24
|
||||
bgt _020EB2E8
|
||||
ldr r0, [sp]
|
||||
cmp r0, #1
|
||||
bge _020EB2F0
|
||||
_020EB2E8:
|
||||
mov r5, #0x40
|
||||
b _020EB304
|
||||
_020EB2F0:
|
||||
mov r0, r3
|
||||
mov r2, r4
|
||||
add r6, r1, #1
|
||||
blx sl
|
||||
mov r8, r0
|
||||
_020EB304:
|
||||
cmp sb, #0
|
||||
beq _020EB328
|
||||
mvn r0, #0
|
||||
mov r1, r0
|
||||
mov r3, sb, asr #0x1f
|
||||
mov r2, sb
|
||||
bl _ll_udiv
|
||||
mov r7, r0
|
||||
str r1, [sp, #0xc]
|
||||
_020EB328:
|
||||
mvn r0, #0
|
||||
str r0, [sp, #0x1c]
|
||||
mov r4, #0
|
||||
b _020EB650
|
||||
_020EB338:
|
||||
cmp r5, #8
|
||||
bgt _020EB370
|
||||
cmp r5, #0
|
||||
addge pc, pc, r5, lsl #2
|
||||
b _020EB650
|
||||
_020EB34C: ; jump table
|
||||
b _020EB650 ; case 0
|
||||
b _020EB37C ; case 1
|
||||
b _020EB428 ; case 2
|
||||
b _020EB650 ; case 3
|
||||
b _020EB464 ; case 4
|
||||
b _020EB650 ; case 5
|
||||
b _020EB650 ; case 6
|
||||
b _020EB650 ; case 7
|
||||
b _020EB4A4 ; case 8
|
||||
_020EB370:
|
||||
cmp r5, #0x10
|
||||
beq _020EB4A4
|
||||
b _020EB650
|
||||
_020EB37C:
|
||||
cmp r8, #0
|
||||
blt _020EB38C
|
||||
cmp r8, #0x80
|
||||
blt _020EB394
|
||||
_020EB38C:
|
||||
mov r0, #0
|
||||
b _020EB3A4
|
||||
_020EB394:
|
||||
ldr r0, _020EB6C4 ; =__msl_digit
|
||||
mov r1, r8, lsl #1
|
||||
ldrh r0, [r0, r1]
|
||||
and r0, r0, #0x100
|
||||
_020EB3A4:
|
||||
cmp r0, #0
|
||||
beq _020EB3D0
|
||||
mov r1, #0
|
||||
ldr r0, [sp, #4]
|
||||
mov r2, r1
|
||||
blx sl
|
||||
mov r8, r0
|
||||
ldr r0, [sp, #0x18]
|
||||
add r0, r0, #1
|
||||
str r0, [sp, #0x18]
|
||||
b _020EB650
|
||||
_020EB3D0:
|
||||
cmp r8, #0x2b
|
||||
bne _020EB3F4
|
||||
mov r1, #0
|
||||
ldr r0, [sp, #4]
|
||||
mov r2, r1
|
||||
add r6, r6, #1
|
||||
blx sl
|
||||
mov r8, r0
|
||||
b _020EB420
|
||||
_020EB3F4:
|
||||
cmp r8, #0x2d
|
||||
bne _020EB420
|
||||
mov r1, #0
|
||||
ldr r0, [sp, #4]
|
||||
mov r2, r1
|
||||
add r6, r6, #1
|
||||
blx sl
|
||||
mov r8, r0
|
||||
ldr r0, [sp, #0x44]
|
||||
mov r1, #1
|
||||
str r1, [r0]
|
||||
_020EB420:
|
||||
mov r5, #2
|
||||
b _020EB650
|
||||
_020EB428:
|
||||
cmp sb, #0
|
||||
cmpne sb, #0x10
|
||||
bne _020EB45C
|
||||
cmp r8, #0x30
|
||||
bne _020EB45C
|
||||
mov r1, #0
|
||||
ldr r0, [sp, #4]
|
||||
mov r2, r1
|
||||
mov r5, #4
|
||||
add r6, r6, #1
|
||||
blx sl
|
||||
mov r8, r0
|
||||
b _020EB650
|
||||
_020EB45C:
|
||||
mov r5, #8
|
||||
b _020EB650
|
||||
_020EB464:
|
||||
cmp r8, #0x58
|
||||
cmpne r8, #0x78
|
||||
bne _020EB494
|
||||
mov r1, #0
|
||||
ldr r0, [sp, #4]
|
||||
mov r2, r1
|
||||
mov sb, #0x10
|
||||
mov r5, #8
|
||||
add r6, r6, #1
|
||||
blx sl
|
||||
mov r8, r0
|
||||
b _020EB650
|
||||
_020EB494:
|
||||
cmp sb, #0
|
||||
moveq sb, #8
|
||||
mov r5, #0x10
|
||||
b _020EB650
|
||||
_020EB4A4:
|
||||
ldr r1, [sp, #0xc]
|
||||
mov r0, #0
|
||||
cmp sb, #0
|
||||
moveq sb, #0xa
|
||||
cmp r1, r0
|
||||
cmpeq r7, r4
|
||||
bne _020EB4DC
|
||||
ldr r0, [sp, #0x1c]
|
||||
mov r3, sb, asr #0x1f
|
||||
mov r1, r0
|
||||
mov r2, sb
|
||||
bl _ll_udiv
|
||||
mov r7, r0
|
||||
str r1, [sp, #0xc]
|
||||
_020EB4DC:
|
||||
cmp r8, #0
|
||||
blt _020EB4EC
|
||||
cmp r8, #0x80
|
||||
blt _020EB4F4
|
||||
_020EB4EC:
|
||||
mov r0, #0
|
||||
b _020EB504
|
||||
_020EB4F4:
|
||||
ldr r0, _020EB6C4 ; =__msl_digit
|
||||
mov r1, r8, lsl #1
|
||||
ldrh r0, [r0, r1]
|
||||
and r0, r0, #8
|
||||
_020EB504:
|
||||
cmp r0, #0
|
||||
beq _020EB52C
|
||||
sub r8, r8, #0x30
|
||||
cmp r8, sb
|
||||
blt _020EB5B4
|
||||
cmp r5, #0x10
|
||||
moveq r5, #0x20
|
||||
movne r5, #0x40
|
||||
add r8, r8, #0x30
|
||||
b _020EB650
|
||||
_020EB52C:
|
||||
cmp r8, #0
|
||||
blt _020EB53C
|
||||
cmp r8, #0x80
|
||||
blt _020EB544
|
||||
_020EB53C:
|
||||
mov r0, #0
|
||||
b _020EB554
|
||||
_020EB544:
|
||||
ldr r0, _020EB6C4 ; =__msl_digit
|
||||
mov r1, r8, lsl #1
|
||||
ldrh r0, [r0, r1]
|
||||
and r0, r0, #1
|
||||
_020EB554:
|
||||
cmp r0, #0
|
||||
beq _020EB588
|
||||
cmp r8, #0
|
||||
blt _020EB56C
|
||||
cmp r8, #0x80
|
||||
blt _020EB574
|
||||
_020EB56C:
|
||||
mov r0, r8
|
||||
b _020EB57C
|
||||
_020EB574:
|
||||
ldr r0, _020EB6C8 ; =__upper_mapC
|
||||
ldrb r0, [r0, r8]
|
||||
_020EB57C:
|
||||
sub r0, r0, #0x37
|
||||
cmp r0, sb
|
||||
blt _020EB598
|
||||
_020EB588:
|
||||
cmp r5, #0x10
|
||||
moveq r5, #0x20
|
||||
movne r5, #0x40
|
||||
b _020EB650
|
||||
_020EB598:
|
||||
cmp r8, #0
|
||||
blt _020EB5B0
|
||||
cmp r8, #0x80
|
||||
bge _020EB5B0
|
||||
ldr r0, _020EB6C8 ; =__upper_mapC
|
||||
ldrb r8, [r0, r8]
|
||||
_020EB5B0:
|
||||
sub r8, r8, #0x37
|
||||
_020EB5B4:
|
||||
ldr r1, [sp, #0x14]
|
||||
ldr r0, [sp, #0xc]
|
||||
ldr r3, [sp, #0x10]
|
||||
cmp r1, r0
|
||||
ldr r0, [sp, #0x10]
|
||||
mov r5, sb, asr #0x1f
|
||||
cmpeq r0, r7
|
||||
ldrhi r0, [sp, #0x48]
|
||||
movhi r1, #1
|
||||
strhi r1, [r0]
|
||||
umull r0, r1, r3, sb
|
||||
mla r1, r3, r5, r1
|
||||
ldr r3, [sp, #0x14]
|
||||
str r0, [sp, #0x10]
|
||||
mla r1, r3, sb, r1
|
||||
ldr r3, [sp, #0x1c]
|
||||
mov r2, r8, asr #0x1f
|
||||
subs r3, r3, r0
|
||||
ldr r0, [sp, #0x1c]
|
||||
str r1, [sp, #0x14]
|
||||
sbc r0, r0, r1
|
||||
cmp r2, r0
|
||||
cmpeq r8, r3
|
||||
ldrhi r0, [sp, #0x48]
|
||||
movhi r1, #1
|
||||
strhi r1, [r0]
|
||||
ldr r0, [sp, #0x10]
|
||||
mov r1, #0
|
||||
adds r0, r0, r8
|
||||
str r0, [sp, #0x10]
|
||||
ldr r0, [sp, #0x14]
|
||||
mov r5, #0x10
|
||||
adc r0, r0, r2
|
||||
str r0, [sp, #0x14]
|
||||
ldr r0, [sp, #4]
|
||||
mov r2, r1
|
||||
add r6, r6, #1
|
||||
blx sl
|
||||
mov r8, r0
|
||||
_020EB650:
|
||||
ldr r0, [sp]
|
||||
cmp r6, r0
|
||||
bgt _020EB670
|
||||
ldr r0, [sp, #0x1c]
|
||||
cmp r8, r0
|
||||
beq _020EB670
|
||||
tst r5, #0x60
|
||||
beq _020EB338
|
||||
_020EB670:
|
||||
tst r5, #0x34
|
||||
bne _020EB690
|
||||
mov r0, #0
|
||||
str r0, [sp, #0x10]
|
||||
str r0, [sp, #0x14]
|
||||
mov r1, r0
|
||||
ldr r0, [sp, #0x40]
|
||||
b _020EB6A0
|
||||
_020EB690:
|
||||
ldr r0, [sp, #0x18]
|
||||
sub r1, r6, #1
|
||||
add r1, r1, r0
|
||||
ldr r0, [sp, #0x40]
|
||||
_020EB6A0:
|
||||
str r1, [r0]
|
||||
ldr r0, [sp, #4]
|
||||
mov r1, r8
|
||||
mov r2, #1
|
||||
blx sl
|
||||
ldr r0, [sp, #0x10]
|
||||
ldr r1, [sp, #0x14]
|
||||
add sp, sp, #0x20
|
||||
ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc}
|
||||
.align 2, 0
|
||||
_020EB6C4: .word __msl_digit
|
||||
_020EB6C8: .word __upper_mapC
|
||||
arm_func_end __strtoull
|
||||
|
||||
arm_func_start strtoul
|
||||
strtoul: ; 0x020EB6CC
|
||||
stmdb sp!, {r3, r4, r5, lr}
|
||||
sub sp, sp, #0x20
|
||||
mov r5, r0
|
||||
mov lr, #0
|
||||
mov r0, r2
|
||||
mov r4, r1
|
||||
add r2, sp, #0x1c
|
||||
str r5, [sp, #0xc]
|
||||
str lr, [sp, #0x10]
|
||||
str r2, [sp]
|
||||
add r1, sp, #0x18
|
||||
str r1, [sp, #4]
|
||||
add ip, sp, #0x14
|
||||
ldr r2, _020EB75C ; =__StringRead
|
||||
add r3, sp, #0xc
|
||||
sub r1, lr, #0x80000001
|
||||
str ip, [sp, #8]
|
||||
bl __strtoul
|
||||
cmp r4, #0
|
||||
ldrne r1, [sp, #0x1c]
|
||||
addne r1, r5, r1
|
||||
strne r1, [r4]
|
||||
ldr r1, [sp, #0x14]
|
||||
cmp r1, #0
|
||||
beq _020EB748
|
||||
ldr r0, _020EB760 ; =errno
|
||||
mov r1, #0x22
|
||||
str r1, [r0]
|
||||
add sp, sp, #0x20
|
||||
mvn r0, #0
|
||||
ldmia sp!, {r3, r4, r5, pc}
|
||||
_020EB748:
|
||||
ldr r1, [sp, #0x18]
|
||||
cmp r1, #0
|
||||
rsbne r0, r0, #0
|
||||
add sp, sp, #0x20
|
||||
ldmia sp!, {r3, r4, r5, pc}
|
||||
.align 2, 0
|
||||
_020EB75C: .word __StringRead
|
||||
_020EB760: .word errno
|
||||
arm_func_end strtoul
|
||||
|
||||
arm_func_start strtol
|
||||
strtol: ; 0x020EB764
|
||||
stmdb sp!, {r3, r4, r5, lr}
|
||||
sub sp, sp, #0x20
|
||||
mov r5, r0
|
||||
mov lr, #0
|
||||
mov r0, r2
|
||||
mov r4, r1
|
||||
add r2, sp, #0x1c
|
||||
str r5, [sp, #0xc]
|
||||
str lr, [sp, #0x10]
|
||||
str r2, [sp]
|
||||
add r1, sp, #0x18
|
||||
str r1, [sp, #4]
|
||||
add ip, sp, #0x14
|
||||
ldr r2, _020EB824 ; =__StringRead
|
||||
add r3, sp, #0xc
|
||||
sub r1, lr, #0x80000001
|
||||
str ip, [sp, #8]
|
||||
bl __strtoul
|
||||
cmp r4, #0
|
||||
ldrne r1, [sp, #0x1c]
|
||||
addne r1, r5, r1
|
||||
strne r1, [r4]
|
||||
ldr r1, [sp, #0x14]
|
||||
cmp r1, #0
|
||||
bne _020EB7F0
|
||||
ldr r2, [sp, #0x18]
|
||||
cmp r2, #0
|
||||
bne _020EB7E0
|
||||
mvn r1, #0x80000000
|
||||
cmp r0, r1
|
||||
bhi _020EB7F0
|
||||
_020EB7E0:
|
||||
cmp r2, #0
|
||||
beq _020EB814
|
||||
cmp r0, #0x80000000
|
||||
bls _020EB814
|
||||
_020EB7F0:
|
||||
ldr r0, [sp, #0x18]
|
||||
ldr r1, _020EB828 ; =errno
|
||||
mov r2, #0x22
|
||||
cmp r0, #0
|
||||
movne r0, #0x80000000
|
||||
str r2, [r1]
|
||||
add sp, sp, #0x20
|
||||
mvneq r0, #0x80000000
|
||||
ldmia sp!, {r3, r4, r5, pc}
|
||||
_020EB814:
|
||||
cmp r2, #0
|
||||
rsbne r0, r0, #0
|
||||
add sp, sp, #0x20
|
||||
ldmia sp!, {r3, r4, r5, pc}
|
||||
.align 2, 0
|
||||
_020EB824: .word __StringRead
|
||||
_020EB828: .word errno
|
||||
arm_func_end strtol
|
||||
|
||||
arm_func_start atoi
|
||||
atoi: ; 0x020EB82C
|
||||
ldr ip, _020EB83C ; =strtol
|
||||
mov r1, #0
|
||||
mov r2, #0xa
|
||||
bx ip
|
||||
.align 2, 0
|
||||
_020EB83C: .word strtol
|
||||
arm_func_end atoi
|
||||
|
||||
arm_func_start fwide
|
||||
fwide: ; 0x020EB840
|
||||
cmp r0, #0
|
||||
|
|
@ -12330,11 +11599,6 @@ _02111848:
|
|||
.word _ZSt9dthandlerv
|
||||
.word _ZSt9duhandlerv
|
||||
|
||||
exception __strtoul, 0x03E9, 0x0060FF00
|
||||
exception __strtoull, 0x046D, 0x00807F00
|
||||
exception strtoul, 0x0099, 0x00600300
|
||||
exception strtol, 0x00C9, 0x00600300
|
||||
exception atoi, 0x0015, 0x00000000
|
||||
exception wmemcpy, 0x0011, 0x00000000
|
||||
exception long2str__wprintf, 0x0251, 0x0090FF20
|
||||
exception longlong2str__wprintf, 0x0301, 0x00A0FF20
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user