summaryrefslogtreecommitdiff
path: root/arm9
diff options
context:
space:
mode:
Diffstat (limited to 'arm9')
-rw-r--r--arm9/arm9.lsf9
-rw-r--r--arm9/asm/CTRDG_task.s6
-rw-r--r--arm9/asm/MSL_abort_exit.s172
-rw-r--r--arm9/asm/MSL_ansi_files.s142
-rw-r--r--arm9/asm/MSL_arith.s11
-rw-r--r--arm9/asm/MSL_assert.s31
-rw-r--r--arm9/asm/MSL_buffer_io.s110
-rw-r--r--arm9/asm/MSL_direct_io.s506
-rw-r--r--arm9/asm/MSL_file_io.s106
-rw-r--r--arm9/asm/MSL_math.s16
-rw-r--r--arm9/asm/libc.s1195
11 files changed, 1203 insertions, 1101 deletions
diff --git a/arm9/arm9.lsf b/arm9/arm9.lsf
index 124467f0..1513e9c1 100644
--- a/arm9/arm9.lsf
+++ b/arm9/arm9.lsf
@@ -545,6 +545,15 @@ Static arm9
Object MATH_crc.o
Object STD_string.o
### Standard libraries ###
+ ### Bundled with CodeWarrior, so probably compiled with 2.0sp1 ###
+ Object MSL_abort_exit.o
+ Object MSL_math.o
+ Object MSL_ansi_files.o
+ Object MSL_arith.o
+ Object MSL_assert.o
+ Object MSL_buffer_io.o
+ Object MSL_direct_io.o
+ Object MSL_file_io.o
Object libc.o
Object stdlibmwcc.o
}
diff --git a/arm9/asm/CTRDG_task.s b/arm9/asm/CTRDG_task.s
index c0feb88e..95c9ddb4 100644
--- a/arm9/asm/CTRDG_task.s
+++ b/arm9/asm/CTRDG_task.s
@@ -1,7 +1,7 @@
.include "asm/macros.inc"
.include "global.inc"
- .extern UNK_021D6F78
+ .extern __console_exit
.section .bss
@@ -177,7 +177,7 @@ _020DDC04: ; 0x020DDC04
str r0, [r5, #0xc0]
mov r2, #0x400
ldr r1, _020DDC54 ; =CTRDGi_TaskThread
- ldr r3, _020DDC58 ; =UNK_021D6F78
+ ldr r3, _020DDC58 ; =__console_exit
mov r0, r5
str r2, [sp, #0x0]
mov r2, #0x14
@@ -196,4 +196,4 @@ _020DDC38:
_020DDC4C: .word UNK_021D6B50
_020DDC50: .word UNK_021D6B54
_020DDC54: .word CTRDGi_TaskThread
-_020DDC58: .word UNK_021D6F78
+_020DDC58: .word __console_exit
diff --git a/arm9/asm/MSL_abort_exit.s b/arm9/asm/MSL_abort_exit.s
new file mode 100644
index 00000000..1be74118
--- /dev/null
+++ b/arm9/asm/MSL_abort_exit.s
@@ -0,0 +1,172 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+ .extern OSi_ThreadInfo
+
+ .bss
+
+ .global __console_exit
+__console_exit: ; 0x021D6F78
+ .space 0x4
+ .size __console_exit,.-__console_exit
+
+ .global __stdio_exit
+__stdio_exit: ; 0x021D6F7C
+ .space 0x4
+ .size __stdio_exit,.-__stdio_exit
+
+ .global __atexit_curr_func
+__atexit_curr_func: ; 0x021D6F80
+ .space 0x4
+ .size __atexit_curr_func,.-__atexit_curr_func
+
+ .global __aborting
+__aborting: ; 0x021D6F84
+ .space 0x4
+ .size __aborting,.-__aborting
+
+ .global __atexit_funcs
+__atexit_funcs: ; 0x021D6F88
+ .space 0x100
+ .size __atexit_funcs,.-__atexit_funcs
+
+ .global __cs_id
+__cs_id: ; 0x021D7088
+ .space 0x24
+ .size __cs_id,.-__cs_id
+
+ .global __cs_ref
+__cs_ref: ; 0x021D70AC
+ .space 0x24
+ .size __cs_ref,.-__cs_ref
+
+ .global __cs
+__cs: ; 0x021D70D0
+ .space 0xD8
+ .size __cs,.-__cs
+
+ .text
+
+ arm_func_start abort
+abort: ; 0x020DE14C
+ stmdb sp!, {r3,lr}
+ mov r0, #0x1
+ bl raise
+ ldr r1, _020DE16C ; =__aborting - 0xC
+ mov r0, #0x1
+ str r0, [r1, #0xc]
+ bl exit
+ ldmia sp!, {r3,pc}
+ .balign 4
+_020DE16C: .word __aborting - 0xC
+ arm_func_end abort
+
+ arm_func_start exit
+exit: ; 0x020DE170
+ stmdb sp!, {r4,lr}
+ ldr r1, _020DE1B8 ; =__aborting - 0xC
+ mov r4, r0
+ ldr r0, [r1, #0xc]
+ cmp r0, #0x0
+ bne _020DE1AC
+ bl __destroy_global_chain
+ ldr r0, _020DE1B8 ; =__stdio_exit - 0x4
+ ldr r0, [r0, #0x4]
+ cmp r0, #0x0
+ beq _020DE1AC
+ blx r0
+ ldr r0, _020DE1B8 ; =__stdio_exit - 0x4
+ mov r1, #0x0
+ str r1, [r0, #0x4]
+_020DE1AC:
+ mov r0, r4
+ bl __exit
+ ldmia sp!, {r4,pc}
+ .balign 4
+_020DE1B8: .word __console_exit
+ arm_func_end exit
+
+ arm_func_start __exit
+__exit: ; 0x020DE1BC
+ stmdb sp!, {r3-r5,lr}
+ ldr r0, _020DE2CC ; =__cs
+ bl OS_TryLockMutex
+ cmp r0, #0x0
+ bne _020DE1F4
+ ldr r0, _020DE2D0 ; =OSi_ThreadInfo
+ ldr r1, _020DE2D4 ; =__cs_id
+ ldr r2, [r0, #0x4]
+ ldr r0, _020DE2D8 ; =__cs_ref
+ ldr r3, [r2, #0x6c]
+ mov r2, #0x1
+ str r3, [r1, #0x0]
+ str r2, [r0, #0x0]
+ b _020DE24C
+_020DE1F4:
+ ldr r0, _020DE2D0 ; =OSi_ThreadInfo
+ ldr r1, _020DE2D4 ; =__cs_id
+ ldr r0, [r0, #0x4]
+ ldr r1, [r1, #0x0]
+ ldr r0, [r0, #0x6c]
+ cmp r1, r0
+ bne _020DE224
+ ldr r0, _020DE2D8 ; =__cs_ref
+ ldr r1, [r0, #0x0]
+ add r1, r1, #0x1
+ str r1, [r0, #0x0]
+ b _020DE24C
+_020DE224:
+ ldr r0, _020DE2CC ; =__cs
+ bl OS_LockMutex
+ ldr r0, _020DE2D0 ; =OSi_ThreadInfo
+ ldr r1, _020DE2D4 ; =__cs_id
+ ldr r2, [r0, #0x4]
+ ldr r0, _020DE2D8 ; =__cs_ref
+ ldr r3, [r2, #0x6c]
+ mov r2, #0x1
+ str r3, [r1, #0x0]
+ str r2, [r0, #0x0]
+_020DE24C:
+ ldr r4, _020DE2DC ; =__console_exit
+ ldr r0, [r4, #0x8]
+ cmp r0, #0x0
+ ble _020DE280
+ ldr r5, _020DE2E0 ; =__atexit_funcs
+_020DE260:
+ ldr r0, [r4, #0x8]
+ sub r1, r0, #0x1
+ ldr r0, [r5, r1, lsl #0x2]
+ str r1, [r4, #0x8]
+ blx r0
+ ldr r0, [r4, #0x8]
+ cmp r0, #0x0
+ bgt _020DE260
+_020DE280:
+ ldr r0, _020DE2D8 ; =__cs_ref
+ ldr r1, [r0, #0x0]
+ subs r1, r1, #0x1
+ str r1, [r0, #0x0]
+ bne _020DE29C
+ ldr r0, _020DE2CC ; =__cs
+ bl OS_UnlockMutex
+_020DE29C:
+ ldr r0, _020DE2DC ; =__console_exit
+ ldr r0, [r0, #0x0]
+ cmp r0, #0x0
+ beq _020DE2BC
+ blx r0
+ ldr r0, _020DE2DC ; =__console_exit
+ mov r1, #0x0
+ str r1, [r0, #0x0]
+_020DE2BC:
+ mov r0, #0x0
+ bl fflush
+ bl _ExitProcess
+ ldmia sp!, {r3-r5,pc}
+ .balign 4
+_020DE2CC: .word __cs
+_020DE2D0: .word OSi_ThreadInfo
+_020DE2D4: .word __cs_id
+_020DE2D8: .word __cs_ref
+_020DE2DC: .word __console_exit
+_020DE2E0: .word __atexit_funcs
+ arm_func_end __exit
diff --git a/arm9/asm/MSL_ansi_files.s b/arm9/asm/MSL_ansi_files.s
new file mode 100644
index 00000000..236868e3
--- /dev/null
+++ b/arm9/asm/MSL_ansi_files.s
@@ -0,0 +1,142 @@
+ .include "global.inc"
+ .include "asm/macros.inc"
+
+ .data
+
+ .global __files
+__files: ; 0x02106A58
+ ; stdin
+ .byte 0x00, 0x00, 0x00, 0x00, 0x24, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+ .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+ .word stdin_buff
+ .byte 0x00, 0x01, 0x00, 0x00
+ .word stdin_buff
+ .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+ .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+ .word __read_console
+ .word __write_console
+ .word __close_console
+ .byte 0x00, 0x00, 0x00, 0x00
+
+ ; stdout
+ .byte 0x01, 0x00, 0x00, 0x00, 0x28, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+ .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+ .word stdout_buff
+ .byte 0x00, 0x01, 0x00, 0x00
+ .word stdout_buff
+ .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+ .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+ .word __read_console
+ .word __write_console
+ .word __close_console
+ .byte 0x00, 0x00, 0x00, 0x00
+
+ ; stderr
+ .byte 0x02, 0x00, 0x00, 0x00, 0x08, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+ .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+ .word stderr_buff
+ .byte 0x00, 0x01, 0x00, 0x00
+ .word stderr_buff
+ .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+ .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+ .word __read_console
+ .word __write_console
+ .word __close_console
+ .byte 0x00, 0x00, 0x00, 0x00
+ .size __files,.-__files
+
+ .bss
+
+ .global stderr_buff
+stderr_buff: ; 0x021D71A8
+ .space 0x100
+ .size stderr_buff,.-stderr_buff
+
+ .global stdout_buff
+stdout_buff: ; 0x021D72A8
+ .space 0x100
+ .size stdout_buff,.-stdout_buff
+
+ .global stdin_buff
+stdin_buff: ; 0x021D73A8
+ .space 0x100
+ .size stdin_buff,.-stdin_buff
+
+ .text
+
+ arm_func_start __flush_line_buffered_output_files
+__flush_line_buffered_output_files:
+ stmdb sp!, {r3-r9,lr}
+ ldr r0, _020DE384 ; =__files
+ mov r4, #0x0
+ mov r5, #0x1
+ mov r8, r0
+ mvn r9, #0x0
+ mov r7, r4
+ mov r6, #0x4c
+_020DE31C:
+ ldr r1, [r0, #0x4]
+ mov r2, r1, lsl #0x16
+ movs r2, r2, lsr #0x1d
+ beq _020DE35C
+ mov r1, r1, lsl #0x19
+ mov r1, r1, lsr #0x1e
+ tst r1, #0x1
+ beq _020DE35C
+ ldr r1, [r0, #0x8]
+ mov r1, r1, lsl #0x1d
+ mov r1, r1, lsr #0x1d
+ cmp r1, #0x1
+ bne _020DE35C
+ bl fflush
+ cmp r0, #0x0
+ movne r4, r9
+_020DE35C:
+ cmp r5, #0x3
+ movge r0, r7
+ bge _020DE374
+ mul r0, r5, r6
+ add r5, r5, #0x1
+ add r0, r8, r0
+_020DE374:
+ cmp r0, #0x0
+ bne _020DE31C
+ mov r0, r4
+ ldmia sp!, {r3-r9,pc}
+ .balign 4
+_020DE384: .word __files
+ arm_func_end __flush_line_buffered_output_files
+
+ arm_func_start __flush_all
+__flush_all: ; 0x020DE388
+ stmdb sp!, {r3-r9,lr}
+ ldr r0, _020DE3EC ; =__files
+ mov r4, #0x0
+ mov r5, #0x1
+ mov r8, r0
+ mvn r9, #0x0
+ mov r7, r4
+ mov r6, #0x4c
+_020DE3A8:
+ ldr r1, [r0, #0x4]
+ mov r1, r1, lsl #0x16
+ movs r1, r1, lsr #0x1d
+ beq _020DE3C4
+ bl fflush
+ cmp r0, #0x0
+ movne r4, r9
+_020DE3C4:
+ cmp r5, #0x3
+ movge r0, r7
+ bge _020DE3DC
+ mul r0, r5, r6
+ add r5, r5, #0x1
+ add r0, r8, r0
+_020DE3DC:
+ cmp r0, #0x0
+ bne _020DE3A8
+ mov r0, r4
+ ldmia sp!, {r3-r9,pc}
+ .balign 4
+_020DE3EC: .word __files
+ arm_func_end __flush_all
diff --git a/arm9/asm/MSL_arith.s b/arm9/asm/MSL_arith.s
new file mode 100644
index 00000000..ff25ce37
--- /dev/null
+++ b/arm9/asm/MSL_arith.s
@@ -0,0 +1,11 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+
+ .text
+
+ arm_func_start abs
+abs: ; 0x020DE3F0
+ cmp r0, #0x0
+ rsblt r0, r0, #0x0
+ bx lr
+ arm_func_end abs
diff --git a/arm9/asm/MSL_assert.s b/arm9/asm/MSL_assert.s
new file mode 100644
index 00000000..140a07f1
--- /dev/null
+++ b/arm9/asm/MSL_assert.s
@@ -0,0 +1,31 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+
+ .data
+
+__local_str__msl_assertion_failed: ; 0x02106B3C
+ .asciz "Assertion (%s) failed in \"%s\", function \"%s\", line %d\n"
+ .size __local_str__msl_assertion_failed,.-__local_str__msl_assertion_failed
+ .balign 4, 0
+
+ .text
+
+ arm_func_start __msl_assertion_failed
+__msl_assertion_failed: ; 0x020DE3FC
+ stmdb sp!, {r3-r4,lr}
+ sub sp, sp, #0x4
+ mov r4, r0
+ mov lr, r1
+ mov r12, r2
+ str r3, [sp, #0x0]
+ ldr r0, _020DE434 ; =__local_str__msl_assertion_failed
+ mov r1, r4
+ mov r2, lr
+ mov r3, r12
+ bl printf
+ bl abort
+ add sp, sp, #0x4
+ ldmia sp!, {r3-r4,pc}
+ .balign 4
+_020DE434: .word __local_str__msl_assertion_failed
+ arm_func_end __msl_assertion_failed
diff --git a/arm9/asm/MSL_buffer_io.s b/arm9/asm/MSL_buffer_io.s
new file mode 100644
index 00000000..5fd10b64
--- /dev/null
+++ b/arm9/asm/MSL_buffer_io.s
@@ -0,0 +1,110 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+
+ .text
+
+ arm_func_start __convert_from_newlines
+__convert_from_newlines:
+ bx lr
+ arm_func_end __convert_from_newlines
+
+ arm_func_start __convert_to_newlines
+__convert_to_newlines:
+ bx lr
+ arm_func_end __convert_to_newlines
+
+ arm_func_start __prep_buffer
+__prep_buffer:
+ ldr r1, [r0, #0x1c]
+ str r1, [r0, #0x24]
+ ldr r3, [r0, #0x20]
+ str r3, [r0, #0x28]
+ ldr r2, [r0, #0x18]
+ ldr r1, [r0, #0x2c]
+ and r1, r2, r1
+ sub r1, r3, r1
+ str r1, [r0, #0x28]
+ ldr r1, [r0, #0x18]
+ str r1, [r0, #0x34]
+ bx lr
+ arm_func_end __prep_buffer
+
+ arm_func_start __load_buffer
+__load_buffer:
+ stmdb sp!, {r4-r6,lr}
+ mov r5, r2
+ mov r4, r0
+ mov r6, r1
+ bl __prep_buffer
+ cmp r5, #0x1
+ ldreq r0, [r4, #0x20]
+ add r2, r4, #0x28
+ streq r0, [r4, #0x28]
+ ldr r0, [r4, #0x0]
+ ldr r1, [r4, #0x1c]
+ ldr r3, [r4, #0x48]
+ ldr r12, [r4, #0x3c]
+ blx r12
+ cmp r0, #0x2
+ moveq r1, #0x0
+ streq r1, [r4, #0x28]
+ cmp r6, #0x0
+ ldrne r1, [r4, #0x28]
+ strne r1, [r6, #0x0]
+ cmp r0, #0x0
+ ldmneia sp!, {r4-r6,pc}
+ ldr r1, [r4, #0x18]
+ ldr r0, [r4, #0x28]
+ add r0, r1, r0
+ str r0, [r4, #0x18]
+ ldr r0, [r4, #0x4]
+ mov r0, r0, lsl #0x13
+ movs r0, r0, lsr #0x1f
+ bne _020DE4F4
+ ldr r0, [r4, #0x1c]
+ add r1, r4, #0x28
+ bl __convert_to_newlines
+_020DE4F4:
+ mov r0, #0x0
+ ldmia sp!, {r4-r6,pc}
+ arm_func_end __load_buffer
+
+ arm_func_start __flush_buffer
+__flush_buffer:
+ stmdb sp!, {r3-r5,lr}
+ mov r5, r0
+ ldr r2, [r5, #0x24]
+ ldr r0, [r5, #0x1c]
+ mov r4, r1
+ subs r0, r2, r0
+ beq _020DE574
+ str r0, [r5, #0x28]
+ ldr r0, [r5, #0x4]
+ mov r0, r0, lsl #0x13
+ movs r0, r0, lsr #0x1f
+ bne _020DE538
+ ldr r0, [r5, #0x1c]
+ add r1, r5, #0x28
+ bl __convert_from_newlines
+_020DE538:
+ ldr r0, [r5, #0x0]
+ ldr r1, [r5, #0x1c]
+ ldr r3, [r5, #0x48]
+ ldr r12, [r5, #0x40]
+ add r2, r5, #0x28
+ blx r12
+ cmp r4, #0x0
+ ldrne r1, [r5, #0x28]
+ strne r1, [r4, #0x0]
+ cmp r0, #0x0
+ ldmneia sp!, {r3-r5,pc}
+ ldr r1, [r5, #0x18]
+ ldr r0, [r5, #0x28]
+ add r0, r1, r0
+ str r0, [r5, #0x18]
+_020DE574:
+ mov r0, r5
+ bl __prep_buffer
+ mov r0, #0x0
+ ldmia sp!, {r3-r5,pc}
+ arm_func_end __flush_buffer
diff --git a/arm9/asm/MSL_direct_io.s b/arm9/asm/MSL_direct_io.s
new file mode 100644
index 00000000..dde2da02
--- /dev/null
+++ b/arm9/asm/MSL_direct_io.s
@@ -0,0 +1,506 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+ .extern __files
+ .extern OSi_ThreadInfo
+ .extern __cs
+ .extern __cs_id
+ .extern __cs_ref
+ .extern __prep_buffer
+ .extern __memrchr
+ .extern fwide
+
+ .text
+
+ arm_func_start fread
+fread: ; 0x020DE584
+ stmdb sp!, {r4-r10,lr}
+ ldr r4, _020DE67C ; =__files
+ mov r7, r3
+ cmp r7, r4
+ moveq r6, #0x2
+ mov r10, r0
+ movne r6, #0x5
+ mov r0, #0x18
+ mul r4, r6, r0
+ ldr r5, _020DE680 ; =__cs
+ mov r9, r1
+ add r0, r5, r4
+ mov r8, r2
+ bl OS_TryLockMutex
+ cmp r0, #0x0
+ bne _020DE5E8
+ ldr r0, _020DE684 ; =OSi_ThreadInfo
+ ldr r2, _020DE688 ; =__cs_id
+ ldr r1, [r0, #0x4]
+ ldr r0, _020DE68C ; =__cs_ref
+ ldr r3, [r1, #0x6c]
+ mov r1, #0x1
+ str r3, [r2, r6, lsl #0x2]
+ str r1, [r0, r6, lsl #0x2]
+ b _020DE640
+_020DE5E8:
+ ldr r0, _020DE684 ; =OSi_ThreadInfo
+ ldr r1, _020DE688 ; =__cs_id
+ ldr r0, [r0, #0x4]
+ ldr r1, [r1, r6, lsl #0x2]
+ ldr r0, [r0, #0x6c]
+ cmp r1, r0
+ bne _020DE618
+ ldr r1, _020DE68C ; =__cs_ref
+ ldr r0, [r1, r6, lsl #0x2]
+ add r0, r0, #0x1
+ str r0, [r1, r6, lsl #0x2]
+ b _020DE640
+_020DE618:
+ add r0, r5, r4
+ bl OS_LockMutex
+ ldr r0, _020DE684 ; =OSi_ThreadInfo
+ ldr r2, _020DE688 ; =__cs_id
+ ldr r1, [r0, #0x4]
+ ldr r0, _020DE68C ; =__cs_ref
+ ldr r3, [r1, #0x6c]
+ mov r1, #0x1
+ str r3, [r2, r6, lsl #0x2]
+ str r1, [r0, r6, lsl #0x2]
+_020DE640:
+ mov r0, r10
+ mov r1, r9
+ mov r2, r8
+ mov r3, r7
+ bl __fread
+ ldr r1, _020DE68C ; =__cs_ref
+ mov r7, r0
+ ldr r0, [r1, r6, lsl #0x2]
+ subs r0, r0, #0x1
+ str r0, [r1, r6, lsl #0x2]
+ bne _020DE674
+ add r0, r5, r4
+ bl OS_UnlockMutex
+_020DE674:
+ mov r0, r7
+ ldmia sp!, {r4-r10,pc}
+ .balign 4
+_020DE67C: .word __files
+_020DE680: .word __cs
+_020DE684: .word OSi_ThreadInfo
+_020DE688: .word __cs_id
+_020DE68C: .word __cs_ref
+
+ arm_func_start __fread
+__fread: ; 0x020DE690
+ stmdb sp!, {r3-r10,lr}
+ sub sp, sp, #0x4
+ mov r7, r3
+ mov r9, r0
+ mov r8, r1
+ mov r0, r7
+ mov r1, #0x0
+ mov r4, r2
+ bl fwide
+ cmp r0, #0x0
+ bne _020DE6C8
+ mov r0, r7
+ mvn r1, #0x0
+ bl fwide
+_020DE6C8:
+ muls r4, r8, r4
+ beq _020DE6EC
+ ldrb r0, [r7, #0xd]
+ cmp r0, #0x0
+ bne _020DE6EC
+ ldr r1, [r7, #0x4]
+ mov r0, r1, lsl #0x16
+ movs r0, r0, lsr #0x1d
+ bne _020DE6F8
+_020DE6EC:
+ add sp, sp, #0x4
+ mov r0, #0x0
+ ldmia sp!, {r3-r10,pc}
+_020DE6F8:
+ mov r0, r1, lsl #0x13
+ movs r0, r0, lsr #0x1f
+ movne r0, r1, lsl #0x19
+ movne r0, r0, lsr #0x1e
+ ldr r1, [r7, #0x8]
+ cmpne r0, #0x2
+ mov r6, #0x1
+ mov r0, r1, lsl #0x1d
+ movne r6, #0x0
+ movs r0, r0, lsr #0x1d
+ bne _020DE74C
+ ldr r0, [r7, #0x4]
+ mov r0, r0, lsl #0x1b
+ mov r0, r0, lsr #0x1d
+ tst r0, #0x1
+ beq _020DE74C
+ bic r0, r1, #0x7
+ orr r0, r0, #0x2
+ str r0, [r7, #0x8]
+ mov r0, #0x0
+ str r0, [r7, #0x28]
+_020DE74C:
+ ldr r0, [r7, #0x8]
+ mov r0, r0, lsl #0x1d
+ mov r0, r0, lsr #0x1d
+ cmp r0, #0x2
+ bhs _020DE778
+ mov r0, #0x1
+ strb r0, [r7, #0xd]
+ mov r0, #0x0
+ add sp, sp, #0x4
+ str r0, [r7, #0x28]
+ ldmia sp!, {r3-r10,pc}
+_020DE778:
+ ldr r0, [r7, #0x4]
+ mov r0, r0, lsl #0x19
+ mov r0, r0, lsr #0x1e
+ tst r0, #0x1
+ beq _020DE7B0
+ bl __flush_line_buffered_output_files
+ cmp r0, #0x0
+ beq _020DE7B0
+ mov r0, #0x1
+ strb r0, [r7, #0xd]
+ mov r0, #0x0
+ add sp, sp, #0x4
+ str r0, [r7, #0x28]
+ ldmia sp!, {r3-r10,pc}
+_020DE7B0:
+ cmp r4, #0x0
+ mov r5, #0x0
+ beq _020DE874
+ ldr r0, [r7, #0x8]
+ mov r0, r0, lsl #0x1d
+ mov r0, r0, lsr #0x1d
+ cmp r0, #0x3
+ blo _020DE874
+ mov r10, r5
+_020DE7D4:
+ mov r0, r7
+ mov r1, r10
+ bl fwide
+ cmp r0, #0x1
+ ldr r0, [r7, #0x8]
+ bne _020DE808
+ mov r0, r0, lsl #0x1d
+ add r0, r7, r0, lsr #0x1c
+ ldrh r0, [r0, #0xe]
+ add r5, r5, #0x2
+ sub r4, r4, #0x2
+ strh r0, [r9], #0x2
+ b _020DE820
+_020DE808:
+ mov r0, r0, lsl #0x1d
+ add r0, r7, r0, lsr #0x1d
+ ldrb r0, [r0, #0xf]
+ add r5, r5, #0x1
+ sub r4, r4, #0x1
+ strb r0, [r9], #0x1
+_020DE820:
+ ldr r1, [r7, #0x8]
+ cmp r4, #0x0
+ mov r0, r1, lsl #0x1d
+ mov r0, r0, lsr #0x1d
+ sub r0, r0, #0x1
+ bic r1, r1, #0x7
+ and r0, r0, #0x7
+ orr r0, r1, r0
+ str r0, [r7, #0x8]
+ beq _020DE85C
+ ldr r0, [r7, #0x8]
+ mov r0, r0, lsl #0x1d
+ mov r0, r0, lsr #0x1d
+ cmp r0, #0x3
+ bhs _020DE7D4
+_020DE85C:
+ ldr r0, [r7, #0x8]
+ mov r0, r0, lsl #0x1d
+ mov r0, r0, lsr #0x1d
+ cmp r0, #0x2
+ ldreq r0, [r7, #0x30]
+ streq r0, [r7, #0x28]
+_020DE874:
+ cmp r4, #0x0
+ beq _020DE938
+ ldr r0, [r7, #0x28]
+ cmp r0, #0x0
+ cmpeq r6, #0x0
+ beq _020DE938
+ mov r10, #0x0
+_020DE890:
+ ldr r0, [r7, #0x28]
+ cmp r0, #0x0
+ bne _020DE8E4
+ mov r0, r7
+ mov r1, r10
+ mov r2, r10
+ bl __load_buffer
+ cmp r0, #0x0
+ beq _020DE8E4
+ cmp r0, #0x1
+ mov r0, #0x1
+ streqb r0, [r7, #0xd]
+ beq _020DE8D4
+ ldr r1, [r7, #0x8]
+ bic r1, r1, #0x7
+ str r1, [r7, #0x8]
+ strb r0, [r7, #0xc]
+_020DE8D4:
+ mov r0, #0x0
+ str r0, [r7, #0x28]
+ mov r4, #0x0
+ b _020DE938
+_020DE8E4:
+ ldr r0, [r7, #0x28]
+ str r0, [sp, #0x0]
+ cmp r0, r4
+ strhi r4, [sp, #0x0]
+ ldr r1, [r7, #0x24]
+ ldr r2, [sp, #0x0]
+ mov r0, r9
+ bl memcpy
+ ldr r2, [sp, #0x0]
+ ldr r0, [r7, #0x24]
+ subs r4, r4, r2
+ add r0, r0, r2
+ str r0, [r7, #0x24]
+ ldr r1, [r7, #0x28]
+ ldr r0, [sp, #0x0]
+ add r9, r9, r2
+ sub r0, r1, r0
+ add r5, r5, r2
+ str r0, [r7, #0x28]
+ cmpne r6, #0x0
+ bne _020DE890
+_020DE938:
+ cmp r4, #0x0
+ beq _020DE9C4
+ cmp r6, #0x0
+ bne _020DE9C4
+ ldr r6, [r7, #0x1c]
+ ldr r10, [r7, #0x20]
+ add r1, sp, #0x0
+ str r9, [r7, #0x1c]
+ mov r0, r7
+ mov r2, #0x1
+ str r4, [r7, #0x20]
+ bl __load_buffer
+ cmp r0, #0x0
+ beq _020DE9A4
+ cmp r0, #0x1
+ mov r0, #0x1
+ bne _020DE98C
+ strb r0, [r7, #0xd]
+ mov r0, #0x0
+ str r0, [r7, #0x28]
+ b _020DE9A4
+_020DE98C:
+ ldr r1, [r7, #0x8]
+ bic r1, r1, #0x7
+ str r1, [r7, #0x8]
+ strb r0, [r7, #0xc]
+ mov r0, #0x0
+ str r0, [r7, #0x28]
+_020DE9A4:
+ ldr r1, [sp, #0x0]
+ mov r0, r7
+ str r6, [r7, #0x1c]
+ str r10, [r7, #0x20]
+ add r5, r5, r1
+ bl __prep_buffer
+ mov r0, #0x0
+ str r0, [r7, #0x28]
+_020DE9C4:
+ mov r0, r5
+ mov r1, r8
+ bl _u32_div_f
+ add sp, sp, #0x4
+ ldmia sp!, {r3-r10,pc}
+
+ arm_func_start __fwrite
+__fwrite:
+ stmdb sp!, {r3-r11,lr}
+ sub sp, sp, #0x8
+ mov r9, r3
+ mov r10, r0
+ str r1, [sp, #0x0]
+ mov r0, r9
+ mov r1, #0x0
+ mov r4, r2
+ bl fwide
+ cmp r0, #0x0
+ bne _020DEA10
+ mov r0, r9
+ mvn r1, #0x0
+ bl fwide
+_020DEA10:
+ ldr r0, [sp, #0x0]
+ muls r5, r0, r4
+ beq _020DEA38
+ ldrb r0, [r9, #0xd]
+ cmp r0, #0x0
+ bne _020DEA38
+ ldr r1, [r9, #0x4]
+ mov r0, r1, lsl #0x16
+ movs r0, r0, lsr #0x1d
+ bne _020DEA44
+_020DEA38:
+ add sp, sp, #0x8
+ mov r0, #0x0
+ ldmia sp!, {r3-r11,pc}
+_020DEA44:
+ mov r0, r1, lsl #0x13
+ movs r0, r0, lsr #0x1f
+ movne r0, r1, lsl #0x19
+ movne r0, r0, lsr #0x1e
+ cmpne r0, #0x2
+ ldr r1, [r9, #0x8]
+ cmpne r0, #0x1
+ mov r8, #0x1
+ mov r0, r1, lsl #0x1d
+ movne r8, #0x0
+ movs r0, r0, lsr #0x1d
+ bne _020DEA9C
+ ldr r0, [r9, #0x4]
+ mov r0, r0, lsl #0x1b
+ mov r0, r0, lsr #0x1d
+ tst r0, #0x2
+ beq _020DEA9C
+ bic r0, r1, #0x7
+ orr r1, r0, #0x1
+ mov r0, r9
+ str r1, [r9, #0x8]
+ bl __prep_buffer
+_020DEA9C:
+ ldr r0, [r9, #0x8]
+ mov r0, r0, lsl #0x1d
+ mov r0, r0, lsr #0x1d
+ cmp r0, #0x1
+ beq _020DEAC8
+ mov r0, #0x1
+ strb r0, [r9, #0xd]
+ mov r0, #0x0
+ add sp, sp, #0x8
+ str r0, [r9, #0x28]
+ ldmia sp!, {r3-r11,pc}
+_020DEAC8:
+ cmp r5, #0x0
+ mov r6, #0x0
+ beq _020DEBF0
+ ldr r0, [r9, #0x1c]
+ ldr r2, [r9, #0x24]
+ cmp r2, r0
+ cmpeq r8, #0x0
+ beq _020DEBF0
+ ldr r1, [r9, #0x20]
+ sub r0, r2, r0
+ sub r0, r1, r0
+ str r0, [r9, #0x28]
+ mov r11, #0xa
+ mov r4, #0x0
+_020DEB00:
+ ldr r0, [r9, #0x28]
+ mov r7, r4
+ str r0, [sp, #0x4]
+ cmp r0, r5
+ strhi r5, [sp, #0x4]
+ ldr r0, [r9, #0x4]
+ mov r0, r0, lsl #0x19
+ mov r0, r0, lsr #0x1e
+ cmp r0, #0x1
+ bne _020DEB50
+ ldr r2, [sp, #0x4]
+ cmp r2, #0x0
+ beq _020DEB50
+ mov r0, r10
+ mov r1, r11
+ bl __memrchr
+ movs r7, r0
+ addne r0, r7, #0x1
+ subne r0, r0, r10
+ strne r0, [sp, #0x4]
+_020DEB50:
+ ldr r2, [sp, #0x4]
+ cmp r2, #0x0
+ beq _020DEB90
+ ldr r0, [r9, #0x24]
+ mov r1, r10
+ bl memcpy
+ ldr r2, [sp, #0x4]
+ ldr r0, [r9, #0x24]
+ add r10, r10, r2
+ add r0, r0, r2
+ str r0, [r9, #0x24]
+ ldr r1, [r9, #0x28]
+ ldr r0, [sp, #0x4]
+ sub r5, r5, r2
+ sub r0, r1, r0
+ str r0, [r9, #0x28]
+_020DEB90:
+ ldr r0, [r9, #0x28]
+ cmp r0, #0x0
+ beq _020DEBB4
+ cmp r7, #0x0
+ bne _020DEBB4
+ ldr r0, [r9, #0x4]
+ mov r0, r0, lsl #0x19
+ movs r0, r0, lsr #0x1e
+ bne _020DEBDC
+_020DEBB4:
+ mov r0, r9
+ mov r1, #0x0
+ bl __flush_buffer
+ cmp r0, #0x0
+ beq _020DEBDC
+ mov r0, #0x1
+ strb r0, [r9, #0xd]
+ mov r5, #0x0
+ str r5, [r9, #0x28]
+ b _020DEBF0
+_020DEBDC:
+ ldr r0, [sp, #0x4]
+ cmp r5, #0x0
+ add r6, r6, r0
+ cmpne r8, #0x0
+ bne _020DEB00
+_020DEBF0:
+ cmp r5, #0x0
+ beq _020DEC5C
+ cmp r8, #0x0
+ bne _020DEC5C
+ ldr r4, [r9, #0x1c]
+ ldr r7, [r9, #0x20]
+ add r2, r10, r5
+ str r10, [r9, #0x1c]
+ str r5, [r9, #0x20]
+ add r1, sp, #0x4
+ mov r0, r9
+ str r2, [r9, #0x24]
+ bl __flush_buffer
+ cmp r0, #0x0
+ ldreq r0, [sp, #0x4]
+ addeq r6, r6, r0
+ beq _020DEC44
+ mov r0, #0x1
+ strb r0, [r9, #0xd]
+ mov r0, #0x0
+ str r0, [r9, #0x28]
+_020DEC44:
+ str r4, [r9, #0x1c]
+ mov r0, r9
+ str r7, [r9, #0x20]
+ bl __prep_buffer
+ mov r0, #0x0
+ str r0, [r9, #0x28]
+_020DEC5C:
+ ldr r0, [r9, #0x4]
+ ldr r1, [sp, #0x0]
+ mov r0, r0, lsl #0x19
+ mov r0, r0, lsr #0x1e
+ cmp r0, #0x2
+ movne r0, #0x0
+ strne r0, [r9, #0x28]
+ mov r0, r6
+ bl _u32_div_f
+ add sp, sp, #0x8
+ ldmia sp!, {r3-r11,pc}
diff --git a/arm9/asm/MSL_file_io.s b/arm9/asm/MSL_file_io.s
new file mode 100644
index 00000000..d722367f
--- /dev/null
+++ b/arm9/asm/MSL_file_io.s
@@ -0,0 +1,106 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+ .extern __flush_all
+ .extern __flush_buffer
+
+ .text
+
+ arm_func_start fclose
+fclose: ; 0x020DEC88
+ stmdb sp!, {r3-r5,lr}
+ movs r5, r0
+ mvneq r0, #0x0
+ ldmeqia sp!, {r3-r5,pc}
+ ldr r1, [r5, #0x4]
+ mov r1, r1, lsl #0x16
+ movs r1, r1, lsr #0x1d
+ moveq r0, #0x0
+ ldmeqia sp!, {r3-r5,pc}
+ bl fflush
+ mov r4, r0
+ ldr r0, [r5, #0x0]
+ ldr r1, [r5, #0x44]
+ blx r1
+ ldr r1, [r5, #0x4]
+ mov r2, #0x0
+ bic r1, r1, #0x380
+ str r1, [r5, #0x4]
+ str r2, [r5, #0x0]
+ ldr r1, [r5, #0x8]
+ mov r1, r1, lsl #0x1c
+ movs r1, r1, lsr #0x1f
+ subne r0, r2, #0x1
+ ldmneia sp!, {r3-r5,pc}
+ cmp r4, #0x0
+ cmpeq r0, #0x0
+ movne r2, #0x1
+ rsb r0, r2, #0x0
+ ldmia sp!, {r3-r5,pc}
+ arm_func_end fclose
+
+ arm_func_start fflush
+fflush:
+ stmdb sp!, {r4,lr}
+ movs r4, r0
+ bne _020DED10
+ bl __flush_all
+ ldmia sp!, {r4,pc}
+_020DED10:
+ ldrb r0, [r4, #0xd]
+ cmp r0, #0x0
+ bne _020DED2C
+ ldr r0, [r4, #0x4]
+ mov r1, r0, lsl #0x16
+ movs r1, r1, lsr #0x1d
+ bne _020DED34
+_020DED2C:
+ mvn r0, #0x0
+ ldmia sp!, {r4,pc}
+_020DED34:
+ mov r0, r0, lsl #0x1b
+ mov r0, r0, lsr #0x1d
+ cmp r0, #0x1
+ moveq r0, #0x0
+ ldmeqia sp!, {r4,pc}
+ ldr r0, [r4, #0x8]
+ mov r1, r0, lsl #0x1d
+ mov r1, r1, lsr #0x1d
+ cmp r1, #0x3
+ biccs r0, r0, #0x7
+ orrcs r0, r0, #0x2
+ strcs r0, [r4, #0x8]
+ ldr r0, [r4, #0x8]
+ mov r0, r0, lsl #0x1d
+ mov r0, r0, lsr #0x1d
+ cmp r0, #0x2
+ moveq r0, #0x0
+ streq r0, [r4, #0x28]
+ ldr r0, [r4, #0x8]
+ mov r1, r0, lsl #0x1d
+ mov r1, r1, lsr #0x1d
+ cmp r1, #0x1
+ beq _020DEDA0
+ bic r0, r0, #0x7
+ str r0, [r4, #0x8]
+ mov r0, #0x0
+ ldmia sp!, {r4,pc}
+_020DEDA0:
+ mov r0, r4
+ mov r1, #0x0
+ bl __flush_buffer
+ cmp r0, #0x0
+ mov r0, #0x0
+ beq _020DEDCC
+ mov r1, #0x1
+ strb r1, [r4, #0xd]
+ str r0, [r4, #0x28]
+ sub r0, r0, #0x1
+ ldmia sp!, {r4,pc}
+_020DEDCC:
+ ldr r1, [r4, #0x8]
+ bic r1, r1, #0x7
+ str r1, [r4, #0x8]
+ str r0, [r4, #0x18]
+ str r0, [r4, #0x28]
+ ldmia sp!, {r4,pc}
+ arm_func_end fflush
diff --git a/arm9/asm/MSL_math.s b/arm9/asm/MSL_math.s
new file mode 100644
index 00000000..aaa97c48
--- /dev/null
+++ b/arm9/asm/MSL_math.s
@@ -0,0 +1,16 @@
+ .include "global.inc"
+ .include "asm/macros.inc"
+ .extern __float_nan
+
+ .text
+
+ arm_func_start nan
+nan: ; 0x020DE2E4
+ ldr r0, _020DE2F4 ; =__float_nan
+ ldr ip, _020DE2F8 ; =_f2d
+ ldr r0, [r0, #0x0]
+ bx r12
+ .balign 4
+_020DE2F4: .word __float_nan
+_020DE2F8: .word _f2d
+ arm_func_end nan
diff --git a/arm9/asm/libc.s b/arm9/asm/libc.s
index 39c2decb..aaebf38f 100644
--- a/arm9/asm/libc.s
+++ b/arm9/asm/libc.s
@@ -1,6 +1,13 @@
.include "asm/macros.inc"
.include "global.inc"
.extern OSi_ThreadInfo
+ .extern __console_exit
+ .extern __stdio_exit
+ .extern __cs_id
+ .extern __cs_ref
+ .extern __cs
+ .extern __files
+ .extern __prep_buffer
.section .rodata
@@ -125,73 +132,30 @@ UNK_02104764: ; 0x02104764
.section .data
- .global UNK_02106A58
-UNK_02106A58: ; 0x02106A58
- .byte 0x00, 0x00, 0x00, 0x00, 0x24, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
- .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
- .word UNK_021D73A8
- .byte 0x00, 0x01, 0x00, 0x00
- .word UNK_021D73A8
- .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
- .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
- .word __read_console
- .word __write_console
- .word __close_console
- .byte 0x00, 0x00, 0x00, 0x00
-
- .global UNK_02106AA4
-UNK_02106AA4: ; 0x02106AA4
- .byte 0x01, 0x00, 0x00, 0x00, 0x28, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
- .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
- .word UNK_021D72A8
- .byte 0x00, 0x01, 0x00, 0x00
- .word UNK_021D72A8
- .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
- .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
- .word __read_console
- .word __write_console
- .word __close_console
- .byte 0x00, 0x00, 0x00, 0x00
-
- .global UNK_02106AF0
-UNK_02106AF0: ; 0x02106AF0
- .byte 0x02, 0x00, 0x00, 0x00, 0x08, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
- .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
- .word UNK_021D71A8
- .byte 0x00, 0x01, 0x00, 0x00
- .word UNK_021D71A8
- .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
- .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
- .word __read_console
- .word __write_console
- .word __close_console
- .byte 0x00, 0x00, 0x00, 0x00
-
- .global UNK_02106B3C
-UNK_02106B3C: ; 0x02106B3C
- .asciz "Assertion (%s) failed in \"%s\", function \"%s\", line %d\n"
-
.balign 4, 0
- .global UNK_02106B74
-UNK_02106B74: ; 0x02106B74
+ .global __float_huge
+__float_huge: ; 0x02106B74
.word 0x7F800000 ; inf
- .global UNK_02106B78
-UNK_02106B78: ; 0x02106B78
+ .global __float_nan
+__float_nan: ; 0x02106B78
.word 0x7FFFFFFF ; nan
- .global UNK_02106B7C
-UNK_02106B7C: ; 0x02106B7C
- .word 0x00000000, 0x7FF00000 ; 1.06047983e-314
+ .global __double_huge
+__double_huge: ; 0x02106B7C
+ .word 0x00000000, 0x7FF00000 ; inf
+ .balign 4
.global UNK_02106B84
UNK_02106B84: ; 0x02106B84
- .byte 0x00, 0x00, 0x00, 0x00
+ .asciz ""
+ .balign 4
.global UNK_02106B88
UNK_02106B88: ; 0x02106B88
- .byte 0x25, 0x54, 0x00, 0x00
+ .asciz "%T"
+ .balign 4
.global UNK_02106B8C
UNK_02106B8C: ; 0x02106B8C
.asciz "AM|PM"
@@ -482,46 +446,6 @@ UNK_02106F5C: ; 0x02106F5C
.section .bss
- .global UNK_021D6F78
-UNK_021D6F78: ; 0x021D6F78
- .space 0x10
-
- .global UNK_021D6F88
-UNK_021D6F88: ; 0x021D6F88
- .space 0x100
-
- .global UNK_021D7088
-UNK_021D7088: ; 0x021D7088
- .space 0x24
-
- .global UNK_021D70AC
-UNK_021D70AC: ; 0x021D70AC
- .space 0x24
-
- .global UNK_021D70D0
-UNK_021D70D0: ; 0x021D70D0
- .space 0x48
-
- .global UNK_021D7118
-UNK_021D7118: ; 0x021D7118
- .space 0x60
-
- .global UNK_021D7178
-UNK_021D7178: ; 0x021D7178
- .space 0x30
-
- .global UNK_021D71A8
-UNK_021D71A8: ; 0x021D71A8
- .space 0x100
-
- .global UNK_021D72A8
-UNK_021D72A8: ; 0x021D72A8
- .space 0x100
-
- .global UNK_021D73A8
-UNK_021D73A8: ; 0x021D73A8
- .space 0x100
-
.global UNK_021D74A8
UNK_021D74A8: ; 0x021D74A8
.space 0x4
@@ -533,931 +457,6 @@ UNK_021D74AC: ; 0x021D74AC
.section .text
.balign 4, 0
- arm_func_start abort
-abort: ; 0x020DE14C
- stmdb sp!, {r3,lr}
- mov r0, #0x1
- bl raise
- ldr r1, _020DE16C ; =UNK_021D6F78
- mov r0, #0x1
- str r0, [r1, #0xc]
- bl exit
- ldmia sp!, {r3,pc}
- .balign 4
-_020DE16C: .word UNK_021D6F78
-
- arm_func_start exit
-exit: ; 0x020DE170
- stmdb sp!, {r4,lr}
- ldr r1, _020DE1B8 ; =UNK_021D6F78
- mov r4, r0
- ldr r0, [r1, #0xc]
- cmp r0, #0x0
- bne _020DE1AC
- bl __destroy_global_chain
- ldr r0, _020DE1B8 ; =UNK_021D6F78
- ldr r0, [r0, #0x4]
- cmp r0, #0x0
- beq _020DE1AC
- blx r0
- ldr r0, _020DE1B8 ; =UNK_021D6F78
- mov r1, #0x0
- str r1, [r0, #0x4]
-_020DE1AC:
- mov r0, r4
- bl __exit
- ldmia sp!, {r4,pc}
- .balign 4
-_020DE1B8: .word UNK_021D6F78
-
- arm_func_start __exit
-__exit: ; 0x020DE1BC
- stmdb sp!, {r3-r5,lr}
- ldr r0, _020DE2CC ; =UNK_021D70D0
- bl OS_TryLockMutex
- cmp r0, #0x0
- bne _020DE1F4
- ldr r0, _020DE2D0 ; =OSi_ThreadInfo
- ldr r1, _020DE2D4 ; =UNK_021D7088
- ldr r2, [r0, #0x4]
- ldr r0, _020DE2D8 ; =UNK_021D70AC
- ldr r3, [r2, #0x6c]
- mov r2, #0x1
- str r3, [r1, #0x0]
- str r2, [r0, #0x0]
- b _020DE24C
-_020DE1F4:
- ldr r0, _020DE2D0 ; =OSi_ThreadInfo
- ldr r1, _020DE2D4 ; =UNK_021D7088
- ldr r0, [r0, #0x4]
- ldr r1, [r1, #0x0]
- ldr r0, [r0, #0x6c]
- cmp r1, r0
- bne _020DE224
- ldr r0, _020DE2D8 ; =UNK_021D70AC
- ldr r1, [r0, #0x0]
- add r1, r1, #0x1
- str r1, [r0, #0x0]
- b _020DE24C
-_020DE224:
- ldr r0, _020DE2CC ; =UNK_021D70D0
- bl OS_LockMutex
- ldr r0, _020DE2D0 ; =OSi_ThreadInfo
- ldr r1, _020DE2D4 ; =UNK_021D7088
- ldr r2, [r0, #0x4]
- ldr r0, _020DE2D8 ; =UNK_021D70AC
- ldr r3, [r2, #0x6c]
- mov r2, #0x1
- str r3, [r1, #0x0]
- str r2, [r0, #0x0]
-_020DE24C:
- ldr r4, _020DE2DC ; =UNK_021D6F78
- ldr r0, [r4, #0x8]
- cmp r0, #0x0
- ble _020DE280
- ldr r5, _020DE2E0 ; =UNK_021D6F88
-_020DE260:
- ldr r0, [r4, #0x8]
- sub r1, r0, #0x1
- ldr r0, [r5, r1, lsl #0x2]
- str r1, [r4, #0x8]
- blx r0
- ldr r0, [r4, #0x8]
- cmp r0, #0x0
- bgt _020DE260
-_020DE280:
- ldr r0, _020DE2D8 ; =UNK_021D70AC
- ldr r1, [r0, #0x0]
- subs r1, r1, #0x1
- str r1, [r0, #0x0]
- bne _020DE29C
- ldr r0, _020DE2CC ; =UNK_021D70D0
- bl OS_UnlockMutex
-_020DE29C:
- ldr r0, _020DE2DC ; =UNK_021D6F78
- ldr r0, [r0, #0x0]
- cmp r0, #0x0
- beq _020DE2BC
- blx r0
- ldr r0, _020DE2DC ; =UNK_021D6F78
- mov r1, #0x0
- str r1, [r0, #0x0]
-_020DE2BC:
- mov r0, #0x0
- bl fflush
- bl _ExitProcess
- ldmia sp!, {r3-r5,pc}
- .balign 4
-_020DE2CC: .word UNK_021D70D0
-_020DE2D0: .word OSi_ThreadInfo
-_020DE2D4: .word UNK_021D7088
-_020DE2D8: .word UNK_021D70AC
-_020DE2DC: .word UNK_021D6F78
-_020DE2E0: .word UNK_021D6F88
-
- arm_func_start nan
-nan: ; 0x020DE2E4
- ldr r0, _020DE2F4 ; =UNK_02106B78
- ldr ip, _020DE2F8 ; =_f2d
- ldr r0, [r0, #0x0]
- bx r12
- .balign 4
-_020DE2F4: .word UNK_02106B78
-_020DE2F8: .word _f2d
-
- arm_func_start __flush_line_buffered_output_files
-__flush_line_buffered_output_files:
- stmdb sp!, {r3-r9,lr}
- ldr r0, _020DE384 ; =UNK_02106A58
- mov r4, #0x0
- mov r5, #0x1
- mov r8, r0
- mvn r9, #0x0
- mov r7, r4
- mov r6, #0x4c
-_020DE31C:
- ldr r1, [r0, #0x4]
- mov r2, r1, lsl #0x16
- movs r2, r2, lsr #0x1d
- beq _020DE35C
- mov r1, r1, lsl #0x19
- mov r1, r1, lsr #0x1e
- tst r1, #0x1
- beq _020DE35C
- ldr r1, [r0, #0x8]
- mov r1, r1, lsl #0x1d
- mov r1, r1, lsr #0x1d
- cmp r1, #0x1
- bne _020DE35C
- bl fflush
- cmp r0, #0x0
- movne r4, r9
-_020DE35C:
- cmp r5, #0x3
- movge r0, r7
- bge _020DE374
- mul r0, r5, r6
- add r5, r5, #0x1
- add r0, r8, r0
-_020DE374:
- cmp r0, #0x0
- bne _020DE31C
- mov r0, r4
- ldmia sp!, {r3-r9,pc}
- .balign 4
-_020DE384: .word UNK_02106A58
-
- arm_func_start __flush_all
-__flush_all: ; 0x020DE388
- stmdb sp!, {r3-r9,lr}
- ldr r0, _020DE3EC ; =UNK_02106A58
- mov r4, #0x0
- mov r5, #0x1
- mov r8, r0
- mvn r9, #0x0
- mov r7, r4
- mov r6, #0x4c
-_020DE3A8:
- ldr r1, [r0, #0x4]
- mov r1, r1, lsl #0x16
- movs r1, r1, lsr #0x1d
- beq _020DE3C4
- bl fflush
- cmp r0, #0x0
- movne r4, r9
-_020DE3C4:
- cmp r5, #0x3
- movge r0, r7
- bge _020DE3DC
- mul r0, r5, r6
- add r5, r5, #0x1
- add r0, r8, r0
-_020DE3DC:
- cmp r0, #0x0
- bne _020DE3A8
- mov r0, r4
- ldmia sp!, {r3-r9,pc}
- .balign 4
-_020DE3EC: .word UNK_02106A58
-
- arm_func_start abs
-abs: ; 0x020DE3F0
- cmp r0, #0x0
- rsblt r0, r0, #0x0
- bx lr
-
- arm_func_start __msl_assertion_failed
-__msl_assertion_failed: ; 0x020DE3FC
- stmdb sp!, {r3-r4,lr}
- sub sp, sp, #0x4
- mov r4, r0
- mov lr, r1
- mov r12, r2
- str r3, [sp, #0x0]
- ldr r0, _020DE434 ; =UNK_02106B3C
- mov r1, r4
- mov r2, lr
- mov r3, r12
- bl printf
- bl abort
- add sp, sp, #0x4
- ldmia sp!, {r3-r4,pc}
- .balign 4
-_020DE434: .word UNK_02106B3C
-
- arm_func_start __convert_from_newlines
-__convert_from_newlines:
- bx lr
-
- arm_func_start __convert_to_newlines
-__convert_to_newlines:
- bx lr
-
- arm_func_start __prep_buffer
-__prep_buffer:
- ldr r1, [r0, #0x1c]
- str r1, [r0, #0x24]
- ldr r3, [r0, #0x20]
- str r3, [r0, #0x28]
- ldr r2, [r0, #0x18]
- ldr r1, [r0, #0x2c]
- and r1, r2, r1
- sub r1, r3, r1
- str r1, [r0, #0x28]
- ldr r1, [r0, #0x18]
- str r1, [r0, #0x34]
- bx lr
-
- arm_func_start __load_buffer
-__load_buffer:
- stmdb sp!, {r4-r6,lr}
- mov r5, r2
- mov r4, r0
- mov r6, r1
- bl __prep_buffer
- cmp r5, #0x1
- ldreq r0, [r4, #0x20]
- add r2, r4, #0x28
- streq r0, [r4, #0x28]
- ldr r0, [r4, #0x0]
- ldr r1, [r4, #0x1c]
- ldr r3, [r4, #0x48]
- ldr r12, [r4, #0x3c]
- blx r12
- cmp r0, #0x2
- moveq r1, #0x0
- streq r1, [r4, #0x28]
- cmp r6, #0x0
- ldrne r1, [r4, #0x28]
- strne r1, [r6, #0x0]
- cmp r0, #0x0
- ldmneia sp!, {r4-r6,pc}
- ldr r1, [r4, #0x18]
- ldr r0, [r4, #0x28]
- add r0, r1, r0
- str r0, [r4, #0x18]
- ldr r0, [r4, #0x4]
- mov r0, r0, lsl #0x13
- movs r0, r0, lsr #0x1f
- bne _020DE4F4
- ldr r0, [r4, #0x1c]
- add r1, r4, #0x28
- bl __convert_to_newlines
-_020DE4F4:
- mov r0, #0x0
- ldmia sp!, {r4-r6,pc}
-
- arm_func_start __flush_buffer
-__flush_buffer:
- stmdb sp!, {r3-r5,lr}
- mov r5, r0
- ldr r2, [r5, #0x24]
- ldr r0, [r5, #0x1c]
- mov r4, r1
- subs r0, r2, r0
- beq _020DE574
- str r0, [r5, #0x28]
- ldr r0, [r5, #0x4]
- mov r0, r0, lsl #0x13
- movs r0, r0, lsr #0x1f
- bne _020DE538
- ldr r0, [r5, #0x1c]
- add r1, r5, #0x28
- bl __convert_from_newlines
-_020DE538:
- ldr r0, [r5, #0x0]
- ldr r1, [r5, #0x1c]
- ldr r3, [r5, #0x48]
- ldr r12, [r5, #0x40]
- add r2, r5, #0x28
- blx r12
- cmp r4, #0x0
- ldrne r1, [r5, #0x28]
- strne r1, [r4, #0x0]
- cmp r0, #0x0
- ldmneia sp!, {r3-r5,pc}
- ldr r1, [r5, #0x18]
- ldr r0, [r5, #0x28]
- add r0, r1, r0
- str r0, [r5, #0x18]
-_020DE574:
- mov r0, r5
- bl __prep_buffer
- mov r0, #0x0
- ldmia sp!, {r3-r5,pc}
-
- arm_func_start fread
-fread: ; 0x020DE584
- stmdb sp!, {r4-r10,lr}
- ldr r4, _020DE67C ; =UNK_02106A58
- mov r7, r3
- cmp r7, r4
- moveq r6, #0x2
- mov r10, r0
- movne r6, #0x5
- mov r0, #0x18
- mul r4, r6, r0
- ldr r5, _020DE680 ; =UNK_021D70D0
- mov r9, r1
- add r0, r5, r4
- mov r8, r2
- bl OS_TryLockMutex
- cmp r0, #0x0
- bne _020DE5E8
- ldr r0, _020DE684 ; =OSi_ThreadInfo
- ldr r2, _020DE688 ; =UNK_021D7088
- ldr r1, [r0, #0x4]
- ldr r0, _020DE68C ; =UNK_021D70AC
- ldr r3, [r1, #0x6c]
- mov r1, #0x1
- str r3, [r2, r6, lsl #0x2]
- str r1, [r0, r6, lsl #0x2]
- b _020DE640
-_020DE5E8:
- ldr r0, _020DE684 ; =OSi_ThreadInfo
- ldr r1, _020DE688 ; =UNK_021D7088
- ldr r0, [r0, #0x4]
- ldr r1, [r1, r6, lsl #0x2]
- ldr r0, [r0, #0x6c]
- cmp r1, r0
- bne _020DE618
- ldr r1, _020DE68C ; =UNK_021D70AC
- ldr r0, [r1, r6, lsl #0x2]
- add r0, r0, #0x1
- str r0, [r1, r6, lsl #0x2]
- b _020DE640
-_020DE618:
- add r0, r5, r4
- bl OS_LockMutex
- ldr r0, _020DE684 ; =OSi_ThreadInfo
- ldr r2, _020DE688 ; =UNK_021D7088
- ldr r1, [r0, #0x4]
- ldr r0, _020DE68C ; =UNK_021D70AC
- ldr r3, [r1, #0x6c]
- mov r1, #0x1
- str r3, [r2, r6, lsl #0x2]
- str r1, [r0, r6, lsl #0x2]
-_020DE640:
- mov r0, r10
- mov r1, r9
- mov r2, r8
- mov r3, r7
- bl __fread
- ldr r1, _020DE68C ; =UNK_021D70AC
- mov r7, r0
- ldr r0, [r1, r6, lsl #0x2]
- subs r0, r0, #0x1
- str r0, [r1, r6, lsl #0x2]
- bne _020DE674
- add r0, r5, r4
- bl OS_UnlockMutex
-_020DE674:
- mov r0, r7
- ldmia sp!, {r4-r10,pc}
- .balign 4
-_020DE67C: .word UNK_02106A58
-_020DE680: .word UNK_021D70D0
-_020DE684: .word OSi_ThreadInfo
-_020DE688: .word UNK_021D7088
-_020DE68C: .word UNK_021D70AC
-
- arm_func_start __fread
-__fread: ; 0x020DE690
- stmdb sp!, {r3-r10,lr}
- sub sp, sp, #0x4
- mov r7, r3
- mov r9, r0
- mov r8, r1
- mov r0, r7
- mov r1, #0x0
- mov r4, r2
- bl fwide
- cmp r0, #0x0
- bne _020DE6C8
- mov r0, r7
- mvn r1, #0x0
- bl fwide
-_020DE6C8:
- muls r4, r8, r4
- beq _020DE6EC
- ldrb r0, [r7, #0xd]
- cmp r0, #0x0
- bne _020DE6EC
- ldr r1, [r7, #0x4]
- mov r0, r1, lsl #0x16
- movs r0, r0, lsr #0x1d
- bne _020DE6F8
-_020DE6EC:
- add sp, sp, #0x4
- mov r0, #0x0
- ldmia sp!, {r3-r10,pc}
-_020DE6F8:
- mov r0, r1, lsl #0x13
- movs r0, r0, lsr #0x1f
- movne r0, r1, lsl #0x19
- movne r0, r0, lsr #0x1e
- ldr r1, [r7, #0x8]
- cmpne r0, #0x2
- mov r6, #0x1
- mov r0, r1, lsl #0x1d
- movne r6, #0x0
- movs r0, r0, lsr #0x1d
- bne _020DE74C
- ldr r0, [r7, #0x4]
- mov r0, r0, lsl #0x1b
- mov r0, r0, lsr #0x1d
- tst r0, #0x1
- beq _020DE74C
- bic r0, r1, #0x7
- orr r0, r0, #0x2
- str r0, [r7, #0x8]
- mov r0, #0x0
- str r0, [r7, #0x28]
-_020DE74C:
- ldr r0, [r7, #0x8]
- mov r0, r0, lsl #0x1d
- mov r0, r0, lsr #0x1d
- cmp r0, #0x2
- bhs _020DE778
- mov r0, #0x1
- strb r0, [r7, #0xd]
- mov r0, #0x0
- add sp, sp, #0x4
- str r0, [r7, #0x28]
- ldmia sp!, {r3-r10,pc}
-_020DE778:
- ldr r0, [r7, #0x4]
- mov r0, r0, lsl #0x19
- mov r0, r0, lsr #0x1e
- tst r0, #0x1
- beq _020DE7B0
- bl __flush_line_buffered_output_files
- cmp r0, #0x0
- beq _020DE7B0
- mov r0, #0x1
- strb r0, [r7, #0xd]
- mov r0, #0x0
- add sp, sp, #0x4
- str r0, [r7, #0x28]
- ldmia sp!, {r3-r10,pc}
-_020DE7B0:
- cmp r4, #0x0
- mov r5, #0x0
- beq _020DE874
- ldr r0, [r7, #0x8]
- mov r0, r0, lsl #0x1d
- mov r0, r0, lsr #0x1d
- cmp r0, #0x3
- blo _020DE874
- mov r10, r5
-_020DE7D4:
- mov r0, r7
- mov r1, r10
- bl fwide
- cmp r0, #0x1
- ldr r0, [r7, #0x8]
- bne _020DE808
- mov r0, r0, lsl #0x1d
- add r0, r7, r0, lsr #0x1c
- ldrh r0, [r0, #0xe]
- add r5, r5, #0x2
- sub r4, r4, #0x2
- strh r0, [r9], #0x2
- b _020DE820
-_020DE808:
- mov r0, r0, lsl #0x1d
- add r0, r7, r0, lsr #0x1d
- ldrb r0, [r0, #0xf]
- add r5, r5, #0x1
- sub r4, r4, #0x1
- strb r0, [r9], #0x1
-_020DE820:
- ldr r1, [r7, #0x8]
- cmp r4, #0x0
- mov r0, r1, lsl #0x1d
- mov r0, r0, lsr #0x1d
- sub r0, r0, #0x1
- bic r1, r1, #0x7
- and r0, r0, #0x7
- orr r0, r1, r0
- str r0, [r7, #0x8]
- beq _020DE85C
- ldr r0, [r7, #0x8]
- mov r0, r0, lsl #0x1d
- mov r0, r0, lsr #0x1d
- cmp r0, #0x3
- bhs _020DE7D4
-_020DE85C:
- ldr r0, [r7, #0x8]
- mov r0, r0, lsl #0x1d
- mov r0, r0, lsr #0x1d
- cmp r0, #0x2
- ldreq r0, [r7, #0x30]
- streq r0, [r7, #0x28]
-_020DE874:
- cmp r4, #0x0
- beq _020DE938
- ldr r0, [r7, #0x28]
- cmp r0, #0x0
- cmpeq r6, #0x0
- beq _020DE938
- mov r10, #0x0
-_020DE890:
- ldr r0, [r7, #0x28]
- cmp r0, #0x0
- bne _020DE8E4
- mov r0, r7
- mov r1, r10
- mov r2, r10
- bl __load_buffer
- cmp r0, #0x0
- beq _020DE8E4
- cmp r0, #0x1
- mov r0, #0x1
- streqb r0, [r7, #0xd]
- beq _020DE8D4
- ldr r1, [r7, #0x8]
- bic r1, r1, #0x7
- str r1, [r7, #0x8]
- strb r0, [r7, #0xc]
-_020DE8D4:
- mov r0, #0x0
- str r0, [r7, #0x28]
- mov r4, #0x0
- b _020DE938
-_020DE8E4:
- ldr r0, [r7, #0x28]
- str r0, [sp, #0x0]
- cmp r0, r4
- strhi r4, [sp, #0x0]
- ldr r1, [r7, #0x24]
- ldr r2, [sp, #0x0]
- mov r0, r9
- bl memcpy
- ldr r2, [sp, #0x0]
- ldr r0, [r7, #0x24]
- subs r4, r4, r2
- add r0, r0, r2
- str r0, [r7, #0x24]
- ldr r1, [r7, #0x28]
- ldr r0, [sp, #0x0]
- add r9, r9, r2
- sub r0, r1, r0
- add r5, r5, r2
- str r0, [r7, #0x28]
- cmpne r6, #0x0
- bne _020DE890
-_020DE938:
- cmp r4, #0x0
- beq _020DE9C4
- cmp r6, #0x0
- bne _020DE9C4
- ldr r6, [r7, #0x1c]
- ldr r10, [r7, #0x20]
- add r1, sp, #0x0
- str r9, [r7, #0x1c]
- mov r0, r7
- mov r2, #0x1
- str r4, [r7, #0x20]
- bl __load_buffer
- cmp r0, #0x0
- beq _020DE9A4
- cmp r0, #0x1
- mov r0, #0x1
- bne _020DE98C
- strb r0, [r7, #0xd]
- mov r0, #0x0
- str r0, [r7, #0x28]
- b _020DE9A4
-_020DE98C:
- ldr r1, [r7, #0x8]
- bic r1, r1, #0x7
- str r1, [r7, #0x8]
- strb r0, [r7, #0xc]
- mov r0, #0x0
- str r0, [r7, #0x28]
-_020DE9A4:
- ldr r1, [sp, #0x0]
- mov r0, r7
- str r6, [r7, #0x1c]
- str r10, [r7, #0x20]
- add r5, r5, r1
- bl __prep_buffer
- mov r0, #0x0
- str r0, [r7, #0x28]
-_020DE9C4:
- mov r0, r5
- mov r1, r8
- bl _u32_div_f
- add sp, sp, #0x4
- ldmia sp!, {r3-r10,pc}
-
- arm_func_start __fwrite
-__fwrite:
- stmdb sp!, {r3-r11,lr}
- sub sp, sp, #0x8
- mov r9, r3
- mov r10, r0
- str r1, [sp, #0x0]
- mov r0, r9
- mov r1, #0x0
- mov r4, r2
- bl fwide
- cmp r0, #0x0
- bne _020DEA10
- mov r0, r9
- mvn r1, #0x0
- bl fwide
-_020DEA10:
- ldr r0, [sp, #0x0]
- muls r5, r0, r4
- beq _020DEA38
- ldrb r0, [r9, #0xd]
- cmp r0, #0x0
- bne _020DEA38
- ldr r1, [r9, #0x4]
- mov r0, r1, lsl #0x16
- movs r0, r0, lsr #0x1d
- bne _020DEA44
-_020DEA38:
- add sp, sp, #0x8
- mov r0, #0x0
- ldmia sp!, {r3-r11,pc}
-_020DEA44:
- mov r0, r1, lsl #0x13
- movs r0, r0, lsr #0x1f
- movne r0, r1, lsl #0x19
- movne r0, r0, lsr #0x1e
- cmpne r0, #0x2
- ldr r1, [r9, #0x8]
- cmpne r0, #0x1
- mov r8, #0x1
- mov r0, r1, lsl #0x1d
- movne r8, #0x0
- movs r0, r0, lsr #0x1d
- bne _020DEA9C
- ldr r0, [r9, #0x4]
- mov r0, r0, lsl #0x1b
- mov r0, r0, lsr #0x1d
- tst r0, #0x2
- beq _020DEA9C
- bic r0, r1, #0x7
- orr r1, r0, #0x1
- mov r0, r9
- str r1, [r9, #0x8]
- bl __prep_buffer
-_020DEA9C:
- ldr r0, [r9, #0x8]
- mov r0, r0, lsl #0x1d
- mov r0, r0, lsr #0x1d
- cmp r0, #0x1
- beq _020DEAC8
- mov r0, #0x1
- strb r0, [r9, #0xd]
- mov r0, #0x0
- add sp, sp, #0x8
- str r0, [r9, #0x28]
- ldmia sp!, {r3-r11,pc}
-_020DEAC8:
- cmp r5, #0x0
- mov r6, #0x0
- beq _020DEBF0
- ldr r0, [r9, #0x1c]
- ldr r2, [r9, #0x24]
- cmp r2, r0
- cmpeq r8, #0x0
- beq _020DEBF0
- ldr r1, [r9, #0x20]
- sub r0, r2, r0
- sub r0, r1, r0
- str r0, [r9, #0x28]
- mov r11, #0xa
- mov r4, #0x0
-_020DEB00:
- ldr r0, [r9, #0x28]
- mov r7, r4
- str r0, [sp, #0x4]
- cmp r0, r5
- strhi r5, [sp, #0x4]
- ldr r0, [r9, #0x4]
- mov r0, r0, lsl #0x19
- mov r0, r0, lsr #0x1e
- cmp r0, #0x1
- bne _020DEB50
- ldr r2, [sp, #0x4]
- cmp r2, #0x0
- beq _020DEB50
- mov r0, r10
- mov r1, r11
- bl __memrchr
- movs r7, r0
- addne r0, r7, #0x1
- subne r0, r0, r10
- strne r0, [sp, #0x4]
-_020DEB50:
- ldr r2, [sp, #0x4]
- cmp r2, #0x0
- beq _020DEB90
- ldr r0, [r9, #0x24]
- mov r1, r10
- bl memcpy
- ldr r2, [sp, #0x4]
- ldr r0, [r9, #0x24]
- add r10, r10, r2
- add r0, r0, r2
- str r0, [r9, #0x24]
- ldr r1, [r9, #0x28]
- ldr r0, [sp, #0x4]
- sub r5, r5, r2
- sub r0, r1, r0
- str r0, [r9, #0x28]
-_020DEB90:
- ldr r0, [r9, #0x28]
- cmp r0, #0x0
- beq _020DEBB4
- cmp r7, #0x0
- bne _020DEBB4
- ldr r0, [r9, #0x4]
- mov r0, r0, lsl #0x19
- movs r0, r0, lsr #0x1e
- bne _020DEBDC
-_020DEBB4:
- mov r0, r9
- mov r1, #0x0
- bl __flush_buffer
- cmp r0, #0x0
- beq _020DEBDC
- mov r0, #0x1
- strb r0, [r9, #0xd]
- mov r5, #0x0
- str r5, [r9, #0x28]
- b _020DEBF0
-_020DEBDC:
- ldr r0, [sp, #0x4]
- cmp r5, #0x0
- add r6, r6, r0
- cmpne r8, #0x0
- bne _020DEB00
-_020DEBF0:
- cmp r5, #0x0
- beq _020DEC5C
- cmp r8, #0x0
- bne _020DEC5C
- ldr r4, [r9, #0x1c]
- ldr r7, [r9, #0x20]
- add r2, r10, r5
- str r10, [r9, #0x1c]
- str r5, [r9, #0x20]
- add r1, sp, #0x4
- mov r0, r9
- str r2, [r9, #0x24]
- bl __flush_buffer
- cmp r0, #0x0
- ldreq r0, [sp, #0x4]
- addeq r6, r6, r0
- beq _020DEC44
- mov r0, #0x1
- strb r0, [r9, #0xd]
- mov r0, #0x0
- str r0, [r9, #0x28]
-_020DEC44:
- str r4, [r9, #0x1c]
- mov r0, r9
- str r7, [r9, #0x20]
- bl __prep_buffer
- mov r0, #0x0
- str r0, [r9, #0x28]
-_020DEC5C:
- ldr r0, [r9, #0x4]
- ldr r1, [sp, #0x0]
- mov r0, r0, lsl #0x19
- mov r0, r0, lsr #0x1e
- cmp r0, #0x2
- movne r0, #0x0
- strne r0, [r9, #0x28]
- mov r0, r6
- bl _u32_div_f
- add sp, sp, #0x8
- ldmia sp!, {r3-r11,pc}
-
- arm_func_start fclose
-fclose: ; 0x020DEC88
- stmdb sp!, {r3-r5,lr}
- movs r5, r0
- mvneq r0, #0x0
- ldmeqia sp!, {r3-r5,pc}
- ldr r1, [r5, #0x4]
- mov r1, r1, lsl #0x16
- movs r1, r1, lsr #0x1d
- moveq r0, #0x0
- ldmeqia sp!, {r3-r5,pc}
- bl fflush
- mov r4, r0
- ldr r0, [r5, #0x0]
- ldr r1, [r5, #0x44]
- blx r1
- ldr r1, [r5, #0x4]
- mov r2, #0x0
- bic r1, r1, #0x380
- str r1, [r5, #0x4]
- str r2, [r5, #0x0]
- ldr r1, [r5, #0x8]
- mov r1, r1, lsl #0x1c
- movs r1, r1, lsr #0x1f
- subne r0, r2, #0x1
- ldmneia sp!, {r3-r5,pc}
- cmp r4, #0x0
- cmpeq r0, #0x0
- movne r2, #0x1
- rsb r0, r2, #0x0
- ldmia sp!, {r3-r5,pc}
-
- arm_func_start fflush
-fflush:
- stmdb sp!, {r4,lr}
- movs r4, r0
- bne _020DED10
- bl __flush_all
- ldmia sp!, {r4,pc}
-_020DED10:
- ldrb r0, [r4, #0xd]
- cmp r0, #0x0
- bne _020DED2C
- ldr r0, [r4, #0x4]
- mov r1, r0, lsl #0x16
- movs r1, r1, lsr #0x1d
- bne _020DED34
-_020DED2C:
- mvn r0, #0x0
- ldmia sp!, {r4,pc}
-_020DED34:
- mov r0, r0, lsl #0x1b
- mov r0, r0, lsr #0x1d
- cmp r0, #0x1
- moveq r0, #0x0
- ldmeqia sp!, {r4,pc}
- ldr r0, [r4, #0x8]
- mov r1, r0, lsl #0x1d
- mov r1, r1, lsr #0x1d
- cmp r1, #0x3
- biccs r0, r0, #0x7
- orrcs r0, r0, #0x2
- strcs r0, [r4, #0x8]
- ldr r0, [r4, #0x8]
- mov r0, r0, lsl #0x1d
- mov r0, r0, lsr #0x1d
- cmp r0, #0x2
- moveq r0, #0x0
- streq r0, [r4, #0x28]
- ldr r0, [r4, #0x8]
- mov r1, r0, lsl #0x1d
- mov r1, r1, lsr #0x1d
- cmp r1, #0x1
- beq _020DEDA0
- bic r0, r0, #0x7
- str r0, [r4, #0x8]
- mov r0, #0x0
- ldmia sp!, {r4,pc}
-_020DEDA0:
- mov r0, r4
- mov r1, #0x0
- bl __flush_buffer
- cmp r0, #0x0
- mov r0, #0x0
- beq _020DEDCC
- mov r1, #0x1
- strb r1, [r4, #0xd]
- str r0, [r4, #0x28]
- sub r0, r0, #0x1
- ldmia sp!, {r4,pc}
-_020DEDCC:
- ldr r1, [r4, #0x8]
- bic r1, r1, #0x7
- str r1, [r4, #0x8]
- str r0, [r4, #0x18]
- str r0, [r4, #0x28]
- ldmia sp!, {r4,pc}
-
arm_func_start _ftell
_ftell: ; 0x020DEDE4
ldr r1, [r0, #0x4]
@@ -1498,31 +497,31 @@ _020DEE5C: .word UNK_021D74A8
arm_func_start ftell
ftell: ; 0x020DEE60
stmdb sp!, {r3-r7,lr}
- ldr r1, _020DEF60 ; =UNK_02106A58
+ ldr r1, _020DEF60 ; =__files
mov r7, r0
cmp r7, r1
moveq r6, #0x2
beq _020DEE98
- ldr r0, _020DEF64 ; =UNK_02106AA4
+ ldr r0, _020DEF64 ; =__files + 0x4C
cmp r7, r0
moveq r6, #0x3
beq _020DEE98
- ldr r0, _020DEF68 ; =UNK_02106AF0
+ ldr r0, _020DEF68 ; =__files + 0x98
cmp r7, r0
moveq r6, #0x4
movne r6, #0x5
_020DEE98:
mov r0, #0x18
mul r4, r6, r0
- ldr r5, _020DEF6C ; =UNK_021D70D0
+ ldr r5, _020DEF6C ; =__cs
add r0, r5, r4
bl OS_TryLockMutex
cmp r0, #0x0
bne _020DEED8
ldr r0, _020DEF70 ; =OSi_ThreadInfo
- ldr r2, _020DEF74 ; =UNK_021D7088
+ ldr r2, _020DEF74 ; =__cs_id
ldr r1, [r0, #0x4]
- ldr r0, _020DEF78 ; =UNK_021D70AC
+ ldr r0, _020DEF78 ; =__cs_ref
ldr r3, [r1, #0x6c]
mov r1, #0x1
str r3, [r2, r6, lsl #0x2]
@@ -1530,13 +529,13 @@ _020DEE98:
b _020DEF30
_020DEED8:
ldr r0, _020DEF70 ; =OSi_ThreadInfo
- ldr r1, _020DEF74 ; =UNK_021D7088
+ ldr r1, _020DEF74 ; =__cs_id
ldr r0, [r0, #0x4]
ldr r1, [r1, r6, lsl #0x2]
ldr r0, [r0, #0x6c]
cmp r1, r0
bne _020DEF08
- ldr r1, _020DEF78 ; =UNK_021D70AC
+ ldr r1, _020DEF78 ; =__cs_ref
ldr r0, [r1, r6, lsl #0x2]
add r0, r0, #0x1
str r0, [r1, r6, lsl #0x2]
@@ -1545,9 +544,9 @@ _020DEF08:
add r0, r5, r4
bl OS_LockMutex
ldr r0, _020DEF70 ; =OSi_ThreadInfo
- ldr r2, _020DEF74 ; =UNK_021D7088
+ ldr r2, _020DEF74 ; =__cs_id
ldr r1, [r0, #0x4]
- ldr r0, _020DEF78 ; =UNK_021D70AC
+ ldr r0, _020DEF78 ; =__cs_ref
ldr r3, [r1, #0x6c]
mov r1, #0x1
str r3, [r2, r6, lsl #0x2]
@@ -1555,7 +554,7 @@ _020DEF08:
_020DEF30:
mov r0, r7
bl _ftell
- ldr r1, _020DEF78 ; =UNK_021D70AC
+ ldr r1, _020DEF78 ; =__cs_ref
mov r7, r0
ldr r0, [r1, r6, lsl #0x2]
subs r0, r0, #0x1
@@ -1567,13 +566,13 @@ _020DEF58:
mov r0, r7
ldmia sp!, {r3-r7,pc}
.balign 4
-_020DEF60: .word UNK_02106A58
-_020DEF64: .word UNK_02106AA4
-_020DEF68: .word UNK_02106AF0
-_020DEF6C: .word UNK_021D70D0
+_020DEF60: .word __files
+_020DEF64: .word __files + 0x4C
+_020DEF68: .word __files + 0x98
+_020DEF6C: .word __cs
_020DEF70: .word OSi_ThreadInfo
-_020DEF74: .word UNK_021D7088
-_020DEF78: .word UNK_021D70AC
+_020DEF74: .word __cs_id
+_020DEF78: .word __cs_ref
arm_func_start _fseek
_fseek: ; 0x020DEF7C
@@ -1713,33 +712,33 @@ _020DF160: .word UNK_021D74A8
arm_func_start fseek
fseek:
stmdb sp!, {r3-r9,lr}
- ldr r3, _020DF274 ; =UNK_02106A58
+ ldr r3, _020DF274 ; =__files
mov r9, r0
cmp r9, r3
mov r8, r1
mov r7, r2
moveq r6, #0x2
beq _020DF1A4
- ldr r0, _020DF278 ; =UNK_02106AA4
+ ldr r0, _020DF278 ; =__files + 0x4C
cmp r9, r0
moveq r6, #0x3
beq _020DF1A4
- ldr r0, _020DF27C ; =UNK_02106AF0
+ ldr r0, _020DF27C ; =__files + 0x98
cmp r9, r0
moveq r6, #0x4
movne r6, #0x5
_020DF1A4:
mov r0, #0x18
mul r4, r6, r0
- ldr r5, _020DF280 ; =UNK_021D70D0
+ ldr r5, _020DF280 ; =__cs
add r0, r5, r4
bl OS_TryLockMutex
cmp r0, #0x0
bne _020DF1E4
ldr r0, _020DF284 ; =OSi_ThreadInfo
- ldr r2, _020DF288 ; =UNK_021D7088
+ ldr r2, _020DF288 ; =__cs_id
ldr r1, [r0, #0x4]
- ldr r0, _020DF28C ; =UNK_021D70AC
+ ldr r0, _020DF28C ; =__cs_ref
ldr r3, [r1, #0x6c]
mov r1, #0x1
str r3, [r2, r6, lsl #0x2]
@@ -1747,13 +746,13 @@ _020DF1A4:
b _020DF23C
_020DF1E4:
ldr r0, _020DF284 ; =OSi_ThreadInfo
- ldr r1, _020DF288 ; =UNK_021D7088
+ ldr r1, _020DF288 ; =__cs_id
ldr r0, [r0, #0x4]
ldr r1, [r1, r6, lsl #0x2]
ldr r0, [r0, #0x6c]
cmp r1, r0
bne _020DF214
- ldr r1, _020DF28C ; =UNK_021D70AC
+ ldr r1, _020DF28C ; =__cs_ref
ldr r0, [r1, r6, lsl #0x2]
add r0, r0, #0x1
str r0, [r1, r6, lsl #0x2]
@@ -1762,9 +761,9 @@ _020DF214:
add r0, r5, r4
bl OS_LockMutex
ldr r0, _020DF284 ; =OSi_ThreadInfo
- ldr r2, _020DF288 ; =UNK_021D7088
+ ldr r2, _020DF288 ; =__cs_id
ldr r1, [r0, #0x4]
- ldr r0, _020DF28C ; =UNK_021D70AC
+ ldr r0, _020DF28C ; =__cs_ref
ldr r3, [r1, #0x6c]
mov r1, #0x1
str r3, [r2, r6, lsl #0x2]
@@ -1774,7 +773,7 @@ _020DF23C:
mov r1, r8
mov r2, r7
bl _fseek
- ldr r1, _020DF28C ; =UNK_021D70AC
+ ldr r1, _020DF28C ; =__cs_ref
mov r7, r0
ldr r0, [r1, r6, lsl #0x2]
subs r0, r0, #0x1
@@ -1786,13 +785,13 @@ _020DF26C:
mov r0, r7
ldmia sp!, {r3-r9,pc}
.balign 4
-_020DF274: .word UNK_02106A58
-_020DF278: .word UNK_02106AA4
-_020DF27C: .word UNK_02106AF0
-_020DF280: .word UNK_021D70D0
+_020DF274: .word __files
+_020DF278: .word __files + 0x4C
+_020DF27C: .word __files + 0x98
+_020DF280: .word __cs
_020DF284: .word OSi_ThreadInfo
-_020DF288: .word UNK_021D7088
-_020DF28C: .word UNK_021D70AC
+_020DF288: .word __cs_id
+_020DF28C: .word __cs_ref
arm_func_start rewind
rewind: ; 0x020DF290
@@ -4466,7 +3465,7 @@ __StringWrite: ; 0x020E1670
printf: ; 0x020E16B4
stmdb sp!, {r0-r3}
stmdb sp!, {r4,lr}
- ldr r0, _020E17B4 ; =UNK_02106AA4
+ ldr r0, _020E17B4 ; =__files + 0x4C
mvn r1, #0x0
bl fwide
cmp r0, #0x0
@@ -4474,14 +3473,14 @@ printf: ; 0x020E16B4
ldmgeia sp!, {r4,lr}
addge sp, sp, #0x10
bxge lr
- ldr r0, _020E17B8 ; =UNK_021D7118
+ ldr r0, _020E17B8 ; =__cs + 0x48
bl OS_TryLockMutex
cmp r0, #0x0
bne _020E1710
ldr r0, _020E17BC ; =OSi_ThreadInfo
- ldr r1, _020E17C0 ; =UNK_021D7088
+ ldr r1, _020E17C0 ; =__cs_id
ldr r2, [r0, #0x4]
- ldr r0, _020E17C4 ; =UNK_021D70AC
+ ldr r0, _020E17C4 ; =__cs_ref
ldr r3, [r2, #0x6c]
mov r2, #0x1
str r3, [r1, #0xc]
@@ -4489,24 +3488,24 @@ printf: ; 0x020E16B4
b _020E1768
_020E1710:
ldr r0, _020E17BC ; =OSi_ThreadInfo
- ldr r1, _020E17C0 ; =UNK_021D7088
+ ldr r1, _020E17C0 ; =__cs_id
ldr r0, [r0, #0x4]
ldr r1, [r1, #0xc]
ldr r0, [r0, #0x6c]
cmp r1, r0
bne _020E1740
- ldr r0, _020E17C4 ; =UNK_021D70AC
+ ldr r0, _020E17C4 ; =__cs_ref
ldr r1, [r0, #0xc]
add r1, r1, #0x1
str r1, [r0, #0xc]
b _020E1768
_020E1740:
- ldr r0, _020E17B8 ; =UNK_021D7118
+ ldr r0, _020E17B8 ; =__cs + 0x48
bl OS_LockMutex
ldr r0, _020E17BC ; =OSi_ThreadInfo
- ldr r1, _020E17C0 ; =UNK_021D7088
+ ldr r1, _020E17C0 ; =__cs_id
ldr r2, [r0, #0x4]
- ldr r0, _020E17C4 ; =UNK_021D70AC
+ ldr r0, _020E17C4 ; =__cs_ref
ldr r3, [r2, #0x6c]
mov r2, #0x1
str r3, [r1, #0xc]
@@ -4516,16 +3515,16 @@ _020E1768:
bic r3, r0, #0x3
ldr r2, [sp, #0x8]
ldr r0, _020E17C8 ; =__FileWrite
- ldr r1, _020E17B4 ; =UNK_02106AA4
+ ldr r1, _020E17B4 ; =__files + 0x4C
add r3, r3, #0x4
bl __pformatter
- ldr r1, _020E17C4 ; =UNK_021D70AC
+ ldr r1, _020E17C4 ; =__cs_ref
mov r4, r0
ldr r0, [r1, #0xc]
subs r0, r0, #0x1
str r0, [r1, #0xc]
bne _020E17A4
- ldr r0, _020E17B8 ; =UNK_021D7118
+ ldr r0, _020E17B8 ; =__cs + 0x48
bl OS_UnlockMutex
_020E17A4:
mov r0, r4
@@ -4533,11 +3532,11 @@ _020E17A4:
add sp, sp, #0x10
bx lr
.balign 4
-_020E17B4: .word UNK_02106AA4
-_020E17B8: .word UNK_021D7118
+_020E17B4: .word __files + 0x4C
+_020E17B8: .word __cs + 0x48
_020E17BC: .word OSi_ThreadInfo
-_020E17C0: .word UNK_021D7088
-_020E17C4: .word UNK_021D70AC
+_020E17C0: .word __cs_id
+_020E17C4: .word __cs_ref
_020E17C8: .word __FileWrite
arm_func_start vsnprintf
@@ -5630,7 +4629,7 @@ _020E2600:
ldr r0, [sp, #0x30]
cmp r0, #0x0
beq _020E261C
- ldr r0, _020E2C78 ; =UNK_02106B78
+ ldr r0, _020E2C78 ; =__float_nan
ldr r0, [r0, #0x0]
bl _f2d
b _020E2668
@@ -5649,7 +4648,7 @@ _020E261C:
beq _020E2C3C
mov r0, #0x1
str r0, [sp, #0x30]
- ldr r0, _020E2C78 ; =UNK_02106B78
+ ldr r0, _020E2C78 ; =__float_nan
ldr r0, [r0, #0x0]
bl _f2d
b _020E2668
@@ -6111,7 +5110,7 @@ _020E2C68:
ldmia sp!, {r3-r11,pc}
.balign 4
_020E2C74: .word UNK_0210430C
-_020E2C78: .word UNK_02106B78
+_020E2C78: .word __float_nan
arm_func_start __StringRead
__StringRead: ; 0x020E2C7C
@@ -6205,14 +5204,14 @@ _020E2D94:
mvn r0, #0x0
ldmia sp!, {r3-r5,pc}
_020E2D9C:
- ldr r0, _020E2E98 ; =UNK_021D7178
+ ldr r0, _020E2E98 ; =__cs + 0xA8
bl OS_TryLockMutex
cmp r0, #0x0
bne _020E2DD0
ldr r0, _020E2E9C ; =OSi_ThreadInfo
- ldr r1, _020E2EA0 ; =UNK_021D7088
+ ldr r1, _020E2EA0 ; =__cs_id
ldr r2, [r0, #0x4]
- ldr r0, _020E2EA4 ; =UNK_021D70AC
+ ldr r0, _020E2EA4 ; =__cs_ref
ldr r3, [r2, #0x6c]
mov r2, #0x1
str r3, [r1, #0x1c]
@@ -6220,24 +5219,24 @@ _020E2D9C:
b _020E2E28
_020E2DD0:
ldr r0, _020E2E9C ; =OSi_ThreadInfo
- ldr r1, _020E2EA0 ; =UNK_021D7088
+ 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 ; =UNK_021D70AC
+ ldr r0, _020E2EA4 ; =__cs_ref
ldr r1, [r0, #0x1c]
add r1, r1, #0x1
str r1, [r0, #0x1c]
b _020E2E28
_020E2E00:
- ldr r0, _020E2E98 ; =UNK_021D7178
+ ldr r0, _020E2E98 ; =__cs + 0xA8
bl OS_LockMutex
ldr r0, _020E2E9C ; =OSi_ThreadInfo
- ldr r1, _020E2EA0 ; =UNK_021D7088
+ ldr r1, _020E2EA0 ; =__cs_id
ldr r2, [r0, #0x4]
- ldr r0, _020E2EA4 ; =UNK_021D70AC
+ ldr r0, _020E2EA4 ; =__cs_ref
ldr r3, [r2, #0x6c]
mov r2, #0x1
str r3, [r1, #0x1c]
@@ -6249,12 +5248,12 @@ _020E2E28:
cmp r4, #0x1
movne r0, #0x0
strne r0, [r1, r2, lsl #0x2]
- ldr r0, _020E2EA4 ; =UNK_021D70AC
+ ldr r0, _020E2EA4 ; =__cs_ref
ldr r1, [r0, #0x1c]
subs r1, r1, #0x1
str r1, [r0, #0x1c]
bne _020E2E5C
- ldr r0, _020E2E98 ; =UNK_021D7178
+ ldr r0, _020E2E98 ; =__cs + 0xA8
bl OS_UnlockMutex
_020E2E5C:
cmp r4, #0x1
@@ -6276,10 +5275,10 @@ _020E2E88:
mov r0, #0x0
ldmia sp!, {r3-r5,pc}
.balign 4
-_020E2E98: .word UNK_021D7178
+_020E2E98: .word __cs + 0xA8
_020E2E9C: .word OSi_ThreadInfo
-_020E2EA0: .word UNK_021D7088
-_020E2EA4: .word UNK_021D70AC
+_020E2EA0: .word __cs_id
+_020E2EA4: .word __cs_ref
_020E2EA8: .word UNK_021D74AC
arm_func_start strlen
@@ -6894,14 +5893,14 @@ _020E3688:
ldr r0, [sp, #0x28]
cmp r0, #0x0
beq _020E36B8
- ldr r1, _020E4300 ; =UNK_02106B74
+ ldr r1, _020E4300 ; =__float_huge
mov r0, #0x0
ldr r1, [r1, #0x0]
bl _fsub
bl _f2d
b _020E36C4
_020E36B8:
- ldr r0, _020E4300 ; =UNK_02106B74
+ ldr r0, _020E4300 ; =__float_huge
ldr r0, [r0, #0x0]
bl _f2d
_020E36C4:
@@ -7760,11 +6759,11 @@ _020E423C:
ldmneia sp!, {r3-r11,pc}
ldr r0, [sp, #0x28]
cmp r0, #0x0
- ldreq r1, _020E4310 ; =UNK_02106B7C
+ ldreq r1, _020E4310 ; =__double_huge
addeq sp, sp, #0xa8
ldmeqia r1, {r0-r1}
ldmeqia sp!, {r3-r11,pc}
- ldr r1, _020E4310 ; =UNK_02106B7C
+ ldr r1, _020E4310 ; =__double_huge
mov r0, #0x0
ldmia r1, {r2-r3}
mov r1, r0
@@ -7799,11 +6798,11 @@ _020E42F0: .word UNK_02104439
_020E42F4: .word UNK_02104434
_020E42F8: .word UNK_0210430C
_020E42FC: .word UNK_0210428C
-_020E4300: .word UNK_02106B74
+_020E4300: .word __float_huge
_020E4304: .word 0x00007FFF
_020E4308: .word 0x00000E2C
_020E430C: .word 0x0000018E
-_020E4310: .word UNK_02106B7C
+_020E4310: .word __double_huge
_020E4314: .word 0x7FEFFFFF
_020E4318:
ldr r3, _020E4314 ; =0x7FEFFFFF
@@ -7814,7 +6813,7 @@ _020E4318:
bls _020E4344
ldr r0, [sp, #0xd0]
mov r2, #0x1
- ldr r1, _020E4310 ; =UNK_02106B7C
+ ldr r1, _020E4310 ; =__double_huge
str r2, [r0, #0x0]
ldmia r1, {r4,r6}
_020E4344:
@@ -11387,7 +10386,7 @@ _020E73E8:
add r7, r0, #0x1
orrs r0, r7, r5
bne _020E7420
- ldr r0, _020E764C ; =UNK_02106B78
+ ldr r0, _020E764C ; =__float_nan
ldr r1, _020E7650 ; =UNK_021D74A8
ldr r0, [r0, #0x0]
mov r2, #0x21
@@ -11542,7 +10541,7 @@ _020E763C: .word 0x7FF00000
_020E7640: .word 0x43400000
_020E7644: .word 0xFFFFFC01
_020E7648: .word 0x3FE00000
-_020E764C: .word UNK_02106B78
+_020E764C: .word __float_nan
_020E7650: .word UNK_021D74A8
_020E7654: .word 0x41E00000
_020E7658: .word 0x3FEFFFFF
@@ -13661,7 +12660,7 @@ _020E93F0:
mov r5, #0x0
cmp r0, #0x0
ldreq r4, _020E996C ; =0x3FF00000
- ldr r0, _020E9974 ; =UNK_02106B74
+ ldr r0, _020E9974 ; =__float_huge
ldrne r4, _020E9970 ; =0xBFF00000
ldr r0, [r0, #0x0]
bl _f2d
@@ -13736,7 +12735,7 @@ _020E94C8:
mov r5, #0x0
cmp r0, #0x0
ldreq r4, _020E996C ; =0x3FF00000
- ldr r0, _020E9974 ; =UNK_02106B74
+ ldr r0, _020E9974 ; =__float_huge
ldrne r4, _020E9970 ; =0xBFF00000
ldr r0, [r0, #0x0]
bl _f2d
@@ -14039,7 +13038,7 @@ _020E995C:
.balign 4
_020E996C: .word 0x3FF00000
_020E9970: .word 0xBFF00000
-_020E9974: .word UNK_02106B74
+_020E9974: .word __float_huge
_020E9978: .word 0x7FF00000
_020E997C: .word UNK_02106F5C
_020E9980: .word UNK_02106E48