	.include "asm/macros.inc"
	.include "global.inc"

	.data

	.global printf_double2hex_0p0
printf_double2hex_0p0: ; 0x02106DA0
	.asciz "0x0p0"
	.size printf_double2hex_0p0,.-printf_double2hex_0p0

	.balign 4, 0
	.global printf_double2hex_neg_inf_upper
printf_double2hex_neg_inf_upper: ; 0x02106DA8
	.asciz "-INF"
	.size printf_double2hex_neg_inf_upper,.-printf_double2hex_neg_inf_upper

	.balign 4, 0
	.global printf_double2hex_neg_inf_lower
printf_double2hex_neg_inf_lower: ; 0x02106DB0
	.asciz "-inf"
	.size printf_double2hex_neg_inf_lower,.-printf_double2hex_neg_inf_lower

	.balign 4, 0
	.global printf_double2hex_inf_upper
printf_double2hex_inf_upper: ; 0x02106DB8
	.asciz "INF"
	.size printf_double2hex_inf_upper,.-printf_double2hex_inf_upper

	.balign 4, 0
	.global printf_double2hex_inf_lower
printf_double2hex_inf_lower: ; 0x02106DBC
	.asciz "inf"
	.size printf_double2hex_inf_lower,.-printf_double2hex_inf_lower

	.balign 4, 0
	.global printf_double2hex_neg_nan_upper
printf_double2hex_neg_nan_upper: ; 0x02106DC0
	.asciz "-NAN"
	.size printf_double2hex_neg_nan_upper,.-printf_double2hex_neg_nan_upper

	.balign 4, 0
	.global printf_double2hex_neg_nan_lower
printf_double2hex_neg_nan_lower: ; 0x02106DC8
	.asciz "-nan"
	.size printf_double2hex_neg_nan_lower,.-printf_double2hex_neg_nan_lower

	.balign 4, 0
	.global printf_double2hex_nan_upper
printf_double2hex_nan_upper: ; 0x02106DD0
	.asciz "NAN"
	.size printf_double2hex_nan_upper,.-printf_double2hex_nan_upper

	.balign 4, 0
	.global printf_double2hex_nan_lower
printf_double2hex_nan_lower: ; 0x02106DD4
	.asciz "nan"
	.size printf_double2hex_nan_lower,.-printf_double2hex_nan_lower

	.balign 4, 0
	.global __pformatter_empty_string_1
__pformatter_empty_string_1: ; 0x02106DD8
	.asciz ""
	.size __pformatter_empty_string_1,.-__pformatter_empty_string_1

	.balign 4, 0
	.global __pformatter_empty_string_2
__pformatter_empty_string_2: ; 0x02106DDC
	.asciz ""
	.size __pformatter_empty_string_2,.-__pformatter_empty_string_2

	.balign 4, 0
	.text

	arm_func_start parse_format
parse_format: ; 0x020DF600
	stmdb sp!, {r4-r8,lr}
	sub sp, sp, #0x10
	ldrsb r3, [r0, #0x1]
	mov r4, #0x0
	mov r5, #0x1
	mov lr, r2
	strb r5, [sp, #0x0]
	strb r4, [sp, #0x1]
	strb r4, [sp, #0x2]
	strb r4, [sp, #0x3]
	strb r4, [sp, #0x4]
	str r4, [sp, #0x8]
	str r4, [sp, #0xc]
	cmp r3, #0x25
	add r12, r0, #0x1
	bne _020DF65C
	add r0, sp, #0x0
	strb r3, [sp, #0x5]
	ldmia r0, {r0-r3}
	stmia lr, {r0-r3}
	add sp, sp, #0x10
	add r0, r12, #0x1
	ldmia sp!, {r4-r8,pc}
_020DF65C:
	mov r2, #0x2
	mov r0, r4
	mov r5, r2
	mov r6, r4
	mov r7, #0x1
_020DF670:
	mov r8, r7
	cmp r3, #0x2b
	bgt _020DF6A0
	bge _020DF6C8
	cmp r3, #0x23
	bgt _020DF6F8
	cmp r3, #0x20
	blt _020DF6F8
	beq _020DF6D0
	cmp r3, #0x23
	beq _020DF6E0
	b _020DF6F8
_020DF6A0:
	cmp r3, #0x30
	bgt _020DF6F8
	cmp r3, #0x2d
	blt _020DF6F8
	beq _020DF6C0
	cmp r3, #0x30
	beq _020DF6E8
	b _020DF6F8
_020DF6C0:
	strb r6, [sp, #0x0]
	b _020DF6FC
_020DF6C8:
	strb r7, [sp, #0x1]
	b _020DF6FC
_020DF6D0:
	ldrb r4, [sp, #0x1]
	cmp r4, #0x1
	strneb r5, [sp, #0x1]
	b _020DF6FC
_020DF6E0:
	strb r7, [sp, #0x3]
	b _020DF6FC
_020DF6E8:
	ldrb r4, [sp, #0x0]
	cmp r4, #0x0
	strneb r2, [sp, #0x0]
	b _020DF6FC
_020DF6F8:
	mov r8, r0
_020DF6FC:
	cmp r8, #0x0
	ldrnesb r3, [r12, #0x1]!
	bne _020DF670
	cmp r3, #0x2a
	bne _020DF744
	ldr r0, [r1, #0x0]
	add r0, r0, #0x4
	str r0, [r1, #0x0]
	ldr r0, [r0, #-0x4]
	str r0, [sp, #0x8]
	cmp r0, #0x0
	bge _020DF73C
	rsb r0, r0, #0x0
	mov r2, #0x0
	strb r2, [sp, #0x0]
	str r0, [sp, #0x8]
_020DF73C:
	ldrsb r3, [r12, #0x1]!
	b _020DF794
_020DF744:
	ldr r4, _020DFB88 ; =__msl_digit
	mov r5, #0x0
	mov r0, #0xa
	b _020DF768
_020DF754:
	ldr r2, [sp, #0x8]
	sub r3, r3, #0x30
	mla r6, r2, r0, r3
	ldrsb r3, [r12, #0x1]!
	str r6, [sp, #0x8]
_020DF768:
	cmp r3, #0x0
	blt _020DF778
	cmp r3, #0x80
	blt _020DF780
_020DF778:
	mov r2, r5
	b _020DF78C
_020DF780:
	mov r2, r3, lsl #0x1
	ldrh r2, [r4, r2]
	and r2, r2, #0x8
_020DF78C:
	cmp r2, #0x0
	bne _020DF754
_020DF794:
	ldr r2, [sp, #0x8]
	ldr r0, _020DFB8C ; =0x000001FD
	cmp r2, r0
	ble _020DF7C4
	mov r1, #0xff
	add r0, sp, #0x0
	strb r1, [sp, #0x5]
	ldmia r0, {r0-r3}
	stmia lr, {r0-r3}
	add sp, sp, #0x10
	add r0, r12, #0x1
	ldmia sp!, {r4-r8,pc}
_020DF7C4:
	cmp r3, #0x2e
	bne _020DF858
	ldrsb r3, [r12, #0x1]!
	mov r0, #0x1
	strb r0, [sp, #0x2]
	cmp r3, #0x2a
	bne _020DF808
	ldr r0, [r1, #0x0]
	add r0, r0, #0x4
	str r0, [r1, #0x0]
	ldr r0, [r0, #-0x4]
	ldrsb r3, [r12, #0x1]!
	str r0, [sp, #0xc]
	cmp r0, #0x0
	movlt r0, #0x0
	strltb r0, [sp, #0x2]
	b _020DF858
_020DF808:
	ldr r2, _020DFB88 ; =__msl_digit
	mov r4, #0x0
	mov r0, #0xa
	b _020DF82C
_020DF818:
	ldr r1, [sp, #0xc]
	sub r3, r3, #0x30
	mla r5, r1, r0, r3
	ldrsb r3, [r12, #0x1]!
	str r5, [sp, #0xc]
_020DF82C:
	cmp r3, #0x0
	blt _020DF83C
	cmp r3, #0x80
	blt _020DF844
_020DF83C:
	mov r1, r4
	b _020DF850
_020DF844:
	mov r1, r3, lsl #0x1
	ldrh r1, [r2, r1]
	and r1, r1, #0x8
_020DF850:
	cmp r1, #0x0
	bne _020DF818
_020DF858:
	cmp r3, #0x6c
	mov r0, #0x1
	bgt _020DF890
	cmp r3, #0x68
	blt _020DF884
	beq _020DF8AC
	cmp r3, #0x6a
	beq _020DF8F8
	cmp r3, #0x6c
	beq _020DF8C8
	b _020DF91C
_020DF884:
	cmp r3, #0x4c
	beq _020DF8EC
	b _020DF91C
_020DF890:
	cmp r3, #0x74
	bgt _020DF8A0
	beq _020DF904
	b _020DF91C
_020DF8A0:
	cmp r3, #0x7a
	beq _020DF910
	b _020DF91C
_020DF8AC:
	ldrsb r1, [r12, #0x1]
	mov r2, #0x2
	strb r2, [sp, #0x4]
	cmp r1, #0x68
	streqb r0, [sp, #0x4]
	ldreqsb r3, [r12, #0x1]!
	b _020DF920
_020DF8C8:
	ldrsb r1, [r12, #0x1]
	mov r2, #0x3
	strb r2, [sp, #0x4]
	cmp r1, #0x6c
	bne _020DF920
	mov r1, #0x4
	strb r1, [sp, #0x4]
	ldrsb r3, [r12, #0x1]!
	b _020DF920
_020DF8EC:
	mov r1, #0x9
	strb r1, [sp, #0x4]
	b _020DF920
_020DF8F8:
	mov r1, #0x6
	strb r1, [sp, #0x4]
	b _020DF920
_020DF904:
	mov r1, #0x8
	strb r1, [sp, #0x4]
	b _020DF920
_020DF910:
	mov r1, #0x7
	strb r1, [sp, #0x4]
	b _020DF920
_020DF91C:
	mov r0, #0x0
_020DF920:
	cmp r0, #0x0
	ldrnesb r3, [r12, #0x1]!
	strb r3, [sp, #0x5]
	cmp r3, #0x61
	bgt _020DF974
	bge _020DFA5C
	cmp r3, #0x47
	bgt _020DF968
	subs r0, r3, #0x41
	addpl pc, pc, r0, lsl #0x2
	b _020DFB68
	b _020DFA5C ; case 65
	b _020DFB68 ; case 66
	b _020DFB68 ; case 67
	b _020DFB68 ; case 68
	b _020DFAA4 ; case 69
	b _020DFA24 ; case 70
	b _020DFA94 ; case 71
_020DF968:
	cmp r3, #0x58
	beq _020DF9E8
	b _020DFB68
_020DF974:
	cmp r3, #0x63
	bgt _020DF984
	beq _020DFB04
	b _020DFB68
_020DF984:
	sub r0, r3, #0x64
	cmp r0, #0x14
	addls pc, pc, r0, lsl #0x2
	b _020DFB68
	b _020DF9E8 ; case 100
	b _020DFAA4 ; case 101
	b _020DFA24 ; case 102
	b _020DFA94 ; case 103
	b _020DFB68 ; case 104
	b _020DF9E8 ; case 105
	b _020DFB68 ; case 106
	b _020DFB68 ; case 107
	b _020DFB68 ; case 108
	b _020DFB68 ; case 109
	b _020DFB54 ; case 110
	b _020DF9E8 ; case 111
	b _020DFAE0 ; case 112
	b _020DFB68 ; case 113
	b _020DFB68 ; case 114
	b _020DFB30 ; case 115
	b _020DFB68 ; case 116
	b _020DF9E8 ; case 117
	b _020DFB68 ; case 118
	b _020DFB68 ; case 119
	b _020DF9E8 ; case 120
_020DF9E8:
	ldrb r0, [sp, #0x4]
	cmp r0, #0x9
	moveq r0, #0xff
	streqb r0, [sp, #0x5]
	beq _020DFB70
	ldrb r0, [sp, #0x2]
	cmp r0, #0x0
	moveq r0, #0x1
	streq r0, [sp, #0xc]
	beq _020DFB70
	ldrb r0, [sp, #0x0]
	cmp r0, #0x2
	moveq r0, #0x1
	streqb r0, [sp, #0x0]
	b _020DFB70
_020DFA24:
	ldrb r0, [sp, #0x4]
	cmp r0, #0x2
	cmpne r0, #0x6
	cmpne r0, #0x7
	cmpne r0, #0x8
	cmpne r0, #0x4
	moveq r0, #0xff
	streqb r0, [sp, #0x5]
	beq _020DFB70
	ldrb r0, [sp, #0x2]
	cmp r0, #0x0
	moveq r0, #0x6
	streq r0, [sp, #0xc]
	b _020DFB70
_020DFA5C:
	ldrb r0, [sp, #0x2]
	cmp r0, #0x0
	moveq r0, #0xd
	streq r0, [sp, #0xc]
	ldrb r0, [sp, #0x4]
	cmp r0, #0x2
	cmpne r0, #0x6
	cmpne r0, #0x7
	cmpne r0, #0x8
	cmpne r0, #0x4
	cmpne r0, #0x1
	moveq r0, #0xff
	streqb r0, [sp, #0x5]
	b _020DFB70
_020DFA94:
	ldr r0, [sp, #0xc]
	cmp r0, #0x0
	moveq r0, #0x1
	streq r0, [sp, #0xc]
_020DFAA4:
	ldrb r0, [sp, #0x4]
	cmp r0, #0x2
	cmpne r0, #0x6
	cmpne r0, #0x7
	cmpne r0, #0x8
	cmpne r0, #0x4
	cmpne r0, #0x1
	moveq r0, #0xff
	streqb r0, [sp, #0x5]
	beq _020DFB70
	ldrb r0, [sp, #0x2]
	cmp r0, #0x0
	moveq r0, #0x6
	streq r0, [sp, #0xc]
	b _020DFB70
_020DFAE0:
	mov r3, #0x78
	mov r2, #0x1
	mov r1, #0x3
	mov r0, #0x8
	strb r3, [sp, #0x5]
	strb r2, [sp, #0x3]
	strb r1, [sp, #0x4]
	str r0, [sp, #0xc]
	b _020DFB70
_020DFB04:
	ldrb r1, [sp, #0x4]
	cmp r1, #0x3
	moveq r0, #0x5
	streqb r0, [sp, #0x4]
	beq _020DFB70
	ldrb r0, [sp, #0x2]
	cmp r0, #0x0
	cmpeq r1, #0x0
	movne r0, #0xff
	strneb r0, [sp, #0x5]
	b _020DFB70
_020DFB30:
	ldrb r0, [sp, #0x4]
	cmp r0, #0x3
	moveq r0, #0x5
	streqb r0, [sp, #0x4]
	beq _020DFB70
	cmp r0, #0x0
	movne r0, #0xff
	strneb r0, [sp, #0x5]
	b _020DFB70
_020DFB54:
	ldrb r0, [sp, #0x4]
	cmp r0, #0x9
	moveq r0, #0xff
	streqb r0, [sp, #0x5]
	b _020DFB70
_020DFB68:
	mov r0, #0xff
	strb r0, [sp, #0x5]
_020DFB70:
	add r0, sp, #0x0
	ldmia r0, {r0-r3}
	stmia lr, {r0-r3}
	add r0, r12, #0x1
	add sp, sp, #0x10
	ldmia sp!, {r4-r8,pc}
	.balign 4
_020DFB88: .word __msl_digit
_020DFB8C: .word 0x000001FD
	arm_func_end parse_format

	arm_func_start long2str
long2str: ; 0x020DFB90
	stmdb sp!, {r0-r3}
	stmdb sp!, {r3-r11,lr}
	sub sp, sp, #0x10
	movs r10, r0
	mov r0, #0x0
	mov r5, r1
	str r0, [sp, #0xc]
	ldr r7, [sp, #0x4c]
	mov r6, r0
	strb r0, [r5, #-0x1]!
	ldrb r0, [sp, #0x43]
	str r1, [sp, #0x0]
	ldrb r8, [sp, #0x45]
	str r0, [sp, #0x4]
	ldr r0, [sp, #0x48]
	ldrb r11, [sp, #0x41]
	str r0, [sp, #0x8]
	cmpeq r7, #0x0
	bne _020DFC04
	ldr r0, [sp, #0x4]
	cmp r0, #0x0
	beq _020DFBF0
	cmp r8, #0x6f
	beq _020DFC04
_020DFBF0:
	add sp, sp, #0x10
	mov r0, r5
	ldmia sp!, {r3-r11,lr}
	add sp, sp, #0x10
	bx lr
_020DFC04:
	cmp r8, #0x69
	bgt _020DFC2C
	bge _020DFC60
	cmp r8, #0x58
	bgt _020DFC20
	beq _020DFC8C
	b _020DFC94
_020DFC20:
	cmp r8, #0x64
	beq _020DFC60
	b _020DFC94
_020DFC2C:
	cmp r8, #0x6f
	bgt _020DFC40
	moveq r4, #0x8
	moveq r11, #0x0
	b _020DFC94
_020DFC40:
	cmp r8, #0x78
	bgt _020DFC94
	cmp r8, #0x75
	blt _020DFC94
	beq _020DFC80
	cmp r8, #0x78
	beq _020DFC8C
	b _020DFC94
_020DFC60:
	cmp r10, #0x0
	mov r4, #0xa
	bge _020DFC94
	mov r0, #0x1
	cmp r10, #0x80000000
	rsbne r10, r10, #0x0
	str r0, [sp, #0xc]
	b _020DFC94
_020DFC80:
	mov r4, #0xa
	mov r11, #0x0
	b _020DFC94
_020DFC8C:
	mov r4, #0x10
	mov r11, #0x0
_020DFC94:
	mov r0, r10
	mov r1, r4
	bl _u32_div_f
	mov r9, r1
	mov r0, r10
	mov r1, r4
	bl _u32_div_f
	cmp r9, #0xa
	mov r10, r0
	addlt r9, r9, #0x30
	blt _020DFCCC
	cmp r8, #0x78
	addeq r9, r9, #0x57
	addne r9, r9, #0x37
_020DFCCC:
	cmp r10, #0x0
	strb r9, [r5, #-0x1]!
	add r6, r6, #0x1
	bne _020DFC94
	cmp r4, #0x8
	bne _020DFD00
	ldr r0, [sp, #0x4]
	cmp r0, #0x0
	ldrnesb r0, [r5, #0x0]
	cmpne r0, #0x30
	movne r0, #0x30
	strneb r0, [r5, #-0x1]!
	addne r6, r6, #0x1
_020DFD00:
	ldrb r0, [sp, #0x40]
	cmp r0, #0x2
	bne _020DFD34
	ldr r0, [sp, #0xc]
	ldr r7, [sp, #0x8]
	cmp r0, #0x0
	cmpeq r11, #0x0
	subne r7, r7, #0x1
	cmp r4, #0x10
	bne _020DFD34
	ldr r0, [sp, #0x4]
	cmp r0, #0x0
	subne r7, r7, #0x2
_020DFD34:
	ldr r0, [sp, #0x0]
	sub r1, r0, r5
	ldr r0, _020DFDD8 ; =0x000001FD
	add r1, r7, r1
	cmp r1, r0
	addgt sp, sp, #0x10
	movgt r0, #0x0
	ldmgtia sp!, {r3-r11,lr}
	addgt sp, sp, #0x10
	bxgt lr
	cmp r6, r7
	bge _020DFD78
	mov r0, #0x30
_020DFD68:
	add r6, r6, #0x1
	cmp r6, r7
	strb r0, [r5, #-0x1]!
	blt _020DFD68
_020DFD78:
	cmp r4, #0x10
	bne _020DFD94
	ldr r0, [sp, #0x4]
	cmp r0, #0x0
	movne r0, #0x30
	strneb r8, [r5, #-0x1]
	strneb r0, [r5, #-0x2]!
_020DFD94:
	ldr r0, [sp, #0xc]
	cmp r0, #0x0
	movne r0, #0x2d
	strneb r0, [r5, #-0x1]!
	bne _020DFDC4
	cmp r11, #0x1
	moveq r0, #0x2b
	streqb r0, [r5, #-0x1]!
	beq _020DFDC4
	cmp r11, #0x2
	moveq r0, #0x20
	streqb r0, [r5, #-0x1]!
_020DFDC4:
	mov r0, r5
	add sp, sp, #0x10
	ldmia sp!, {r3-r11,lr}
	add sp, sp, #0x10
	bx lr
	.balign 4
_020DFDD8: .word 0x000001FD
	arm_func_end long2str

	arm_func_start longlong2str
longlong2str: ; 0x020DFDDC
	stmdb sp!, {r0-r3}
	stmdb sp!, {r3-r11,lr}
	sub sp, sp, #0x18
	mov r9, r1
	mov r1, #0x0
	mov r10, r0
	mov r6, r2
	mov r0, r1
	strb r0, [r6, #-0x1]!
	ldr r0, [sp, #0x58]
	cmp r9, #0x0
	str r0, [sp, #0x10]
	ldrb r0, [sp, #0x4f]
	cmpeq r10, #0x0
	str r2, [sp, #0x0]
	str r0, [sp, #0x4]
	ldr r0, [sp, #0x54]
	str r1, [sp, #0x14]
	str r0, [sp, #0x8]
	ldrb r0, [sp, #0x4d]
	mov r7, r1
	ldrb r8, [sp, #0x51]
	str r0, [sp, #0xc]
	ldreq r0, [sp, #0x10]
	cmpeq r0, #0x0
	bne _020DFE6C
	ldr r0, [sp, #0x4]
	cmp r0, #0x0
	beq _020DFE58
	cmp r8, #0x6f
	beq _020DFE6C
_020DFE58:
	add sp, sp, #0x18
	mov r0, r6
	ldmia sp!, {r3-r11,lr}
	add sp, sp, #0x10
	bx lr
_020DFE6C:
	cmp r8, #0x69
	bgt _020DFE94
	bge _020DFEC4
	cmp r8, #0x58
	bgt _020DFE88
	beq _020DFF18
	b _020DFF24
_020DFE88:
	cmp r8, #0x64
	beq _020DFEC4
	b _020DFF24
_020DFE94:
	cmp r8, #0x6f
	bgt _020DFEA4
	beq _020DFEF8
	b _020DFF24
_020DFEA4:
	cmp r8, #0x78
	bgt _020DFF24
	cmp r8, #0x75
	blt _020DFF24
	beq _020DFF08
	cmp r8, #0x78
	beq _020DFF18
	b _020DFF24
_020DFEC4:
	subs r0, r10, #0x0
	sbcs r0, r9, #0x0
	mov r11, #0xa
	mov r5, #0x0
	bge _020DFF24
	cmp r9, #0x80000000
	cmpeq r10, r5
	beq _020DFEEC
	rsbs r10, r10, #0x0
	rsc r9, r9, #0x0
_020DFEEC:
	mov r0, #0x1
	str r0, [sp, #0x14]
	b _020DFF24
_020DFEF8:
	mov r5, #0x0
	str r5, [sp, #0xc]
	mov r11, #0x8
	b _020DFF24
_020DFF08:
	mov r5, #0x0
	str r5, [sp, #0xc]
	mov r11, #0xa
	b _020DFF24
_020DFF18:
	mov r5, #0x0
	str r5, [sp, #0xc]
	mov r11, #0x10
_020DFF24:
	mov r0, r10
	mov r1, r9
	mov r2, r11
	mov r3, r5
	bl _ull_mod
	mov r4, r0
	mov r0, r10
	mov r1, r9
	mov r2, r11
	mov r3, r5
	bl _ll_udiv
	mov r10, r0
	cmp r4, #0xa
	mov r9, r1
	addlt r0, r4, #0x30
	blt _020DFF70
	cmp r8, #0x78
	addeq r0, r4, #0x57
	addne r0, r4, #0x37
_020DFF70:
	strb r0, [r6, #-0x1]!
	mov r0, #0x0
	cmp r9, r0
	cmpeq r10, r0
	add r7, r7, #0x1
	bne _020DFF24
	cmp r5, #0x0
	cmpeq r11, #0x8
	bne _020DFFB0
	ldr r0, [sp, #0x4]
	cmp r0, #0x0
	ldrnesb r0, [r6, #0x0]
	cmpne r0, #0x30
	movne r0, #0x30
	strneb r0, [r6, #-0x1]!
	addne r7, r7, #0x1
_020DFFB0:
	ldrb r0, [sp, #0x4c]
	cmp r0, #0x2
	bne _020E0000
	ldr r0, [sp, #0x8]
	str r0, [sp, #0x10]
	ldr r0, [sp, #0x14]
	cmp r0, #0x0
	ldreq r0, [sp, #0xc]
	cmpeq r0, #0x0
	ldrne r0, [sp, #0x10]
	subne r0, r0, #0x1
	strne r0, [sp, #0x10]
	cmp r5, #0x0
	cmpeq r11, #0x10
	bne _020E0000
	ldr r0, [sp, #0x4]
	cmp r0, #0x0
	ldrne r0, [sp, #0x10]
	subne r0, r0, #0x2
	strne r0, [sp, #0x10]
_020E0000:
	ldr r0, [sp, #0x0]
	ldr r1, _020E00B8 ; =0x000001FD
	sub r2, r0, r6
	ldr r0, [sp, #0x10]
	add r0, r0, r2
	cmp r0, r1
	addgt sp, sp, #0x18
	movgt r0, #0x0
	ldmgtia sp!, {r3-r11,lr}
	addgt sp, sp, #0x10
	bxgt lr
	ldr r0, [sp, #0x10]
	cmp r7, r0
	bge _020E0050
	mov r1, #0x30
_020E003C:
	ldr r0, [sp, #0x10]
	add r7, r7, #0x1
	cmp r7, r0
	strb r1, [r6, #-0x1]!
	blt _020E003C
_020E0050:
	cmp r5, #0x0
	cmpeq r11, #0x10
	bne _020E0070
	ldr r0, [sp, #0x4]
	cmp r0, #0x0
	movne r0, #0x30
	strneb r8, [r6, #-0x1]
	strneb r0, [r6, #-0x2]!
_020E0070:
	ldr r0, [sp, #0x14]
	cmp r0, #0x0
	movne r0, #0x2d
	strneb r0, [r6, #-0x1]!
	bne _020E00A4
	ldr r0, [sp, #0xc]
	cmp r0, #0x1
	moveq r0, #0x2b
	streqb r0, [r6, #-0x1]!
	beq _020E00A4
	cmp r0, #0x2
	moveq r0, #0x20
	streqb r0, [r6, #-0x1]!
_020E00A4:
	mov r0, r6
	add sp, sp, #0x18
	ldmia sp!, {r3-r11,lr}
	add sp, sp, #0x10
	bx lr
	.balign 4
_020E00B8: .word 0x000001FD
	arm_func_end longlong2str

	arm_func_start double2hex
double2hex: ; 0x020E00BC
	stmdb sp!, {r0-r3}
	stmdb sp!, {r3-r10,lr}
	sub sp, sp, #0x44
	ldr r7, [sp, #0x80]
	ldr r0, _020E056C ; =0x000001FD
	mov r8, r2
	cmp r7, r0
	ldrb r6, [sp, #0x79]
	ldrb r5, [sp, #0x77]
	ldrb r4, [sp, #0x75]
	ldr r1, [sp, #0x68]
	ldr r2, [sp, #0x6c]
	addgt sp, sp, #0x44
	movgt r0, #0x0
	ldmgtia sp!, {r3-r10,lr}
	addgt sp, sp, #0x10
	bxgt lr
	mov r10, #0x0
	mov r9, #0x20
	add r0, sp, #0x8
	add r3, sp, #0xc
	strb r10, [sp, #0x8]
	strh r9, [sp, #0xa]
	bl __num2dec_internal2
	ldr r0, [sp, #0x68]
	ldr r1, [sp, #0x6c]
	bl fabs
	mov r2, r0
	mov r0, r10
	mov r3, r1
	mov r1, r0
	bl _deq
	bne _020E0188
	ldr r3, _020E0570 ; =printf_double2hex_0p0
	sub r0, r8, #0x6
	ldrb r2, [r3, #0x0]
	ldrb r1, [r3, #0x1]
	add sp, sp, #0x44
	strb r2, [r8, #-0x6]
	strb r1, [r0, #0x1]
	ldrb r2, [r3, #0x2]
	ldrb r1, [r3, #0x3]
	strb r2, [r0, #0x2]
	strb r1, [r0, #0x3]
	ldrb r2, [r3, #0x4]
	ldrb r1, [r3, #0x5]
	strb r2, [r0, #0x4]
	strb r1, [r0, #0x5]
	ldmia sp!, {r3-r10,lr}
	add sp, sp, #0x10
	bx lr
_020E0188:
	ldrb r0, [sp, #0x11]
	cmp r0, #0x49
	bne _020E0298
	ldrsb r0, [sp, #0xc]
	cmp r0, #0x0
	beq _020E0224
	cmp r6, #0x41
	sub r0, r8, #0x5
	bne _020E01E8
	ldr r3, _020E0574 ; =printf_double2hex_neg_inf_upper
	add sp, sp, #0x44
	ldrb r2, [r3, #0x0]
	ldrb r1, [r3, #0x1]
	strb r2, [r0, #0x0]
	strb r1, [r0, #0x1]
	ldrb r2, [r3, #0x2]
	ldrb r1, [r3, #0x3]
	strb r2, [r0, #0x2]
	strb r1, [r0, #0x3]
	ldrb r1, [r3, #0x4]
	strb r1, [r0, #0x4]
	ldmia sp!, {r3-r10,lr}
	add sp, sp, #0x10
	bx lr
_020E01E8:
	ldr r3, _020E0578 ; =printf_double2hex_neg_inf_lower
	add sp, sp, #0x44
	ldrb r2, [r3, #0x0]
	ldrb r1, [r3, #0x1]
	strb r2, [r0, #0x0]
	strb r1, [r0, #0x1]
	ldrb r2, [r3, #0x2]
	ldrb r1, [r3, #0x3]
	strb r2, [r0, #0x2]
	strb r1, [r0, #0x3]
	ldrb r1, [r3, #0x4]
	strb r1, [r0, #0x4]
	ldmia sp!, {r3-r10,lr}
	add sp, sp, #0x10
	bx lr
_020E0224:
	cmp r6, #0x41
	sub r0, r8, #0x4
	bne _020E0264
	ldr r3, _020E057C ; =printf_double2hex_inf_upper
	add sp, sp, #0x44
	ldrb r2, [r3, #0x0]
	ldrb r1, [r3, #0x1]
	strb r2, [r0, #0x0]
	strb r1, [r0, #0x1]
	ldrb r2, [r3, #0x2]
	ldrb r1, [r3, #0x3]
	strb r2, [r0, #0x2]
	strb r1, [r0, #0x3]
	ldmia sp!, {r3-r10,lr}
	add sp, sp, #0x10
	bx lr
_020E0264:
	ldr r3, _020E0580 ; =printf_double2hex_inf_lower
	add sp, sp, #0x44
	ldrb r2, [r3, #0x0]
	ldrb r1, [r3, #0x1]
	strb r2, [r0, #0x0]
	strb r1, [r0, #0x1]
	ldrb r2, [r3, #0x2]
	ldrb r1, [r3, #0x3]
	strb r2, [r0, #0x2]
	strb r1, [r0, #0x3]
	ldmia sp!, {r3-r10,lr}
	add sp, sp, #0x10
	bx lr
_020E0298:
	cmp r0, #0x4e
	bne _020E03A4
	ldrsb r0, [sp, #0xc]
	cmp r0, #0x0
	beq _020E0330
	cmp r6, #0x41
	sub r0, r8, #0x5
	bne _020E02F4
	ldr r3, _020E0584 ; =printf_double2hex_neg_nan_upper
	add sp, sp, #0x44
	ldrb r2, [r3, #0x0]
	ldrb r1, [r3, #0x1]
	strb r2, [r0, #0x0]
	strb r1, [r0, #0x1]
	ldrb r2, [r3, #0x2]
	ldrb r1, [r3, #0x3]
	strb r2, [r0, #0x2]
	strb r1, [r0, #0x3]
	ldrb r1, [r3, #0x4]
	strb r1, [r0, #0x4]
	ldmia sp!, {r3-r10,lr}
	add sp, sp, #0x10
	bx lr
_020E02F4:
	ldr r3, _020E0588 ; =printf_double2hex_neg_nan_lower
	add sp, sp, #0x44
	ldrb r2, [r3, #0x0]
	ldrb r1, [r3, #0x1]
	strb r2, [r0, #0x0]
	strb r1, [r0, #0x1]
	ldrb r2, [r3, #0x2]
	ldrb r1, [r3, #0x3]
	strb r2, [r0, #0x2]
	strb r1, [r0, #0x3]
	ldrb r1, [r3, #0x4]
	strb r1, [r0, #0x4]
	ldmia sp!, {r3-r10,lr}
	add sp, sp, #0x10
	bx lr
_020E0330:
	cmp r6, #0x41
	sub r0, r8, #0x4
	bne _020E0370
	ldr r3, _020E058C ; =printf_double2hex_nan_upper
	add sp, sp, #0x44
	ldrb r2, [r3, #0x0]
	ldrb r1, [r3, #0x1]
	strb r2, [r0, #0x0]
	strb r1, [r0, #0x1]
	ldrb r2, [r3, #0x2]
	ldrb r1, [r3, #0x3]
	strb r2, [r0, #0x2]
	strb r1, [r0, #0x3]
	ldmia sp!, {r3-r10,lr}
	add sp, sp, #0x10
	bx lr
_020E0370:
	ldr r3, _020E0590 ; =printf_double2hex_nan_lower
	add sp, sp, #0x44
	ldrb r2, [r3, #0x0]
	ldrb r1, [r3, #0x1]
	strb r2, [r0, #0x0]
	strb r1, [r0, #0x1]
	ldrb r2, [r3, #0x2]
	ldrb r1, [r3, #0x3]
	strb r2, [r0, #0x2]
	strb r1, [r0, #0x3]
	ldmia sp!, {r3-r10,lr}
	add sp, sp, #0x10
	bx lr
_020E03A4:
	mov r3, r10
	mov r1, #0x1
	mov r0, #0x64
	add r9, sp, #0x68
	strb r1, [sp, #0x34]
	strb r1, [sp, #0x35]
	strb r3, [sp, #0x36]
	strb r3, [sp, #0x37]
	strb r3, [sp, #0x38]
	str r3, [sp, #0x3c]
	str r1, [sp, #0x40]
	strb r0, [sp, #0x39]
_020E03D4:
	rsb r1, r3, #0x7
	ldrsb r2, [r9, r3]
	ldrsb r0, [r9, r1]
	strb r0, [r9, r3]
	add r3, r3, #0x1
	strb r2, [r9, r1]
	cmp r3, #0x4
	blt _020E03D4
	ldrb r0, [sp, #0x69]
	ldrb r1, [sp, #0x68]
	ldr sb, _020E0594 ; =0x000007FF
	mov r0, r0, lsl #0x11
	orr r1, r0, r1, lsl #0x19
	add r0, sp, #0x34
	and lr, r9, r1, lsr #0x15
	sub r12, sp, #0x8
	ldmia r0, {r0-r3}
	stmia r12, {r0-r3}
	rsb r0, r9, #0x400
	mov r1, r8
	add r0, lr, r0
	ldmia r12, {r2-r3}
	bl long2str
	cmp r6, #0x61
	moveq r1, #0x70
	movne r1, #0x50
	strb r1, [r0, #-0x1]!
	mov r1, r7, lsl #0x2
	mov lr, r7
	cmp r7, #0x1
	add r8, r1, #0xb
	add r12, sp, #0x68
	blt _020E04E4
	mov r9, #0x30
_020E045C:
	cmp r8, #0x40
	bge _020E04CC
	ldrb r1, [r12, r8, asr #0x3]
	and r2, r8, #0x7
	rsb r3, r2, #0x7
	mov r2, r1, asr r3
	sub r10, r8, #0x4
	bic r1, r8, #0x7
	bic r10, r10, #0x7
	cmp r1, r10
	add r10, r12, r8, asr #0x3
	and r1, r2, #0xff
	beq _020E04A0
	ldrb r2, [r10, #-0x1]
	mov r2, r2, lsl #0x8
	orr r1, r1, r2, asr r3
	and r1, r1, #0xff
_020E04A0:
	and r1, r1, #0xf
	cmp r1, #0xa
	addcc r1, r1, #0x30
	andcc r1, r1, #0xff
	blo _020E04D0
	cmp r6, #0x61
	addeq r1, r1, #0x57
	andeq r1, r1, #0xff
	addne r1, r1, #0x37
	andne r1, r1, #0xff
	b _020E04D0
_020E04CC:
	mov r1, r9
_020E04D0:
	sub lr, lr, #0x1
	cmp lr, #0x1
	strb r1, [r0, #-0x1]!
	sub r8, r8, #0x4
	bge _020E045C
_020E04E4:
	cmp r7, #0x0
	cmpeq r5, #0x0
	movne r1, #0x2e
	strneb r1, [r0, #-0x1]!
	mov r1, #0x31
	strb r1, [r0, #-0x1]
	cmp r6, #0x61
	moveq r1, #0x78
	movne r1, #0x58
	strb r1, [r0, #-0x2]!
	mov r1, #0x30
	strb r1, [r0, #-0x1]!
	ldrsb r1, [sp, #0xc]
	cmp r1, #0x0
	movne r1, #0x2d
	strneb r1, [r0, #-0x1]!
	addne sp, sp, #0x44
	ldmneia sp!, {r3-r10,lr}
	addne sp, sp, #0x10
	bxne lr
	cmp r4, #0x1
	moveq r1, #0x2b
	streqb r1, [r0, #-0x1]!
	addeq sp, sp, #0x44
	ldmeqia sp!, {r3-r10,lr}
	addeq sp, sp, #0x10
	bxeq lr
	cmp r4, #0x2
	moveq r1, #0x20
	streqb r1, [r0, #-0x1]!
	add sp, sp, #0x44
	ldmia sp!, {r3-r10,lr}
	add sp, sp, #0x10
	bx lr
	.balign 4
_020E056C: .word 0x000001FD
_020E0570: .word printf_double2hex_0p0
_020E0574: .word printf_double2hex_neg_inf_upper
_020E0578: .word printf_double2hex_neg_inf_lower
_020E057C: .word printf_double2hex_inf_upper
_020E0580: .word printf_double2hex_inf_lower
_020E0584: .word printf_double2hex_neg_nan_upper
_020E0588: .word printf_double2hex_neg_nan_lower
_020E058C: .word printf_double2hex_nan_upper
_020E0590: .word printf_double2hex_nan_lower
_020E0594: .word 0x000007FF
	arm_func_end double2hex

	arm_func_start round_decimal
round_decimal: ; 0x020E0598
	stmdb sp!, {r4,lr}
	cmp r1, #0x0
	bge _020E05C0
_020E05A4:
	mov r1, #0x0
	strh r1, [r0, #0x2]
	mov r1, #0x1
	strb r1, [r0, #0x4]
	mov r1, #0x30
	strb r1, [r0, #0x5]
	ldmia sp!, {r4,pc}
_020E05C0:
	ldrb lr, [r0, #0x4]
	cmp r1, lr
	ldmgeia sp!, {r4,pc}
	add r12, r0, #0x5
	add r2, r12, r1
	add r2, r2, #0x1
	ldrsb r3, [r2, #-0x1]!
	sub r3, r3, #0x30
	mov r3, r3, lsl #0x18
	mov r3, r3, asr #0x18
	cmp r3, #0x5
	bne _020E0620
	add r12, r12, lr
_020E05F4:
	sub r12, r12, #0x1
	cmp r12, r2
	bls _020E060C
	ldrsb r3, [r12, #0x0]
	cmp r3, #0x30
	beq _020E05F4
_020E060C:
	cmp r12, r2
	ldreqsb r3, [r2, #-0x1]
	andeq r4, r3, #0x1
	movne r4, #0x1
	b _020E0628
_020E0620:
	movgt r4, #0x1
	movle r4, #0x0
_020E0628:
	cmp r1, #0x0
	beq _020E0684
	mov r12, #0x0
	mov lr, #0x1
_020E0638:
	ldrsb r3, [r2, #-0x1]!
	sub r3, r3, #0x30
	add r3, r3, r4
	mov r3, r3, lsl #0x18
	mov r3, r3, asr #0x18
	cmp r3, #0x9
	movgt r4, lr
	movle r4, r12
	cmp r4, #0x0
	bne _020E0668
	cmp r3, #0x0
	bne _020E0670
_020E0668:
	sub r1, r1, #0x1
	b _020E067C
_020E0670:
	add r3, r3, #0x30
	strb r3, [r2, #0x0]
	b _020E0684
_020E067C:
	cmp r1, #0x0
	bne _020E0638
_020E0684:
	cmp r4, #0x0
	beq _020E06AC
	ldrsh r3, [r0, #0x2]
	mov r2, #0x1
	mov r1, #0x31
	add r3, r3, #0x1
	strh r3, [r0, #0x2]
	strb r2, [r0, #0x4]
	strb r1, [r0, #0x5]
	ldmia sp!, {r4,pc}
_020E06AC:
	cmp r1, #0x0
	beq _020E05A4
	strb r1, [r0, #0x4]
	ldmia sp!, {r4,pc}
	arm_func_end round_decimal

	arm_func_start float2str
float2str: ; 0x020E06BC
	stmdb sp!, {r0-r3}
	stmdb sp!, {r4-r11,lr}
	sub sp, sp, #0x2c
	ldr r7, [sp, #0x68]
	ldr r3, _020E0DF4 ; =0x000001FD
	ldrb r6, [sp, #0x61]
	ldrb r5, [sp, #0x5f]
	ldrb r4, [sp, #0x5d]
	cmp r7, r3
	mov r10, r0
	mov r8, r1
	mov r9, r2
	addgt sp, sp, #0x2c
	movgt r0, #0x0
	ldmgtia sp!, {r4-r11,lr}
	addgt sp, sp, #0x10
	bxgt lr
	mov r12, #0x0
	mov r11, #0x20
	add r0, sp, #0x0
	add r3, sp, #0x4
	mov r1, r10
	mov r2, r8
	strb r12, [sp, #0x0]
	strh r11, [sp, #0x2]
	bl __num2dec_internal2
	ldrb r0, [sp, #0x8]
	add r1, sp, #0x9
	add r0, r1, r0
	b _020E074C
_020E0734:
	ldrb r2, [sp, #0x8]
	ldrsh r1, [sp, #0x6]
	sub r2, r2, #0x1
	add r1, r1, #0x1
	strb r2, [sp, #0x8]
	strh r1, [sp, #0x6]
_020E074C:
	ldrb r1, [sp, #0x8]
	cmp r1, #0x1
	bls _020E0764
	ldrsb r1, [r0, #-0x1]!
	cmp r1, #0x30
	beq _020E0734
_020E0764:
	ldrb r0, [sp, #0x9]
	cmp r0, #0x30
	beq _020E0784
	cmp r0, #0x49
	beq _020E0790
	cmp r0, #0x4e
	beq _020E08F0
	b _020E0A44
_020E0784:
	mov r0, #0x0
	strh r0, [sp, #0x6]
	b _020E0A44
_020E0790:
	mov r2, #0x0
	mov r0, r10
	mov r1, r8
	mov r3, r2
	bl _dls
	bhs _020E0854
	cmp r6, #0x0
	sub r0, r9, #0x5
	blt _020E07BC
	cmp r6, #0x80
	blt _020E07C4
_020E07BC:
	mov r1, #0x0
	b _020E07D4
_020E07C4:
	ldr r1, _020E0DF8 ; =__msl_digit
	mov r2, r6, lsl #0x1
	ldrh r1, [r1, r2]
	and r1, r1, #0x200
_020E07D4:
	cmp r1, #0x0
	beq _020E0818
	ldr r3, _020E0DFC ; =printf_double2hex_neg_inf_upper
	add sp, sp, #0x2c
	ldrb r2, [r3, #0x0]
	ldrb r1, [r3, #0x1]
	strb r2, [r0, #0x0]
	strb r1, [r0, #0x1]
	ldrb r2, [r3, #0x2]
	ldrb r1, [r3, #0x3]
	strb r2, [r0, #0x2]
	strb r1, [r0, #0x3]
	ldrb r1, [r3, #0x4]
	strb r1, [r0, #0x4]
	ldmia sp!, {r4-r11,lr}
	add sp, sp, #0x10
	bx lr
_020E0818:
	ldr r3, _020E0E00 ; =printf_double2hex_neg_inf_lower
	add sp, sp, #0x2c
	ldrb r2, [r3, #0x0]
	ldrb r1, [r3, #0x1]
	strb r2, [r0, #0x0]
	strb r1, [r0, #0x1]
	ldrb r2, [r3, #0x2]
	ldrb r1, [r3, #0x3]
	strb r2, [r0, #0x2]
	strb r1, [r0, #0x3]
	ldrb r1, [r3, #0x4]
	strb r1, [r0, #0x4]
	ldmia sp!, {r4-r11,lr}
	add sp, sp, #0x10
	bx lr
_020E0854:
	cmp r6, #0x0
	sub r0, r9, #0x4
	blt _020E0868
	cmp r6, #0x80
	blt _020E0870
_020E0868:
	mov r1, #0x0
	b _020E0880
_020E0870:
	ldr r1, _020E0DF8 ; =__msl_digit
	mov r2, r6, lsl #0x1
	ldrh r1, [r1, r2]
	and r1, r1, #0x200
_020E0880:
	cmp r1, #0x0
	beq _020E08BC
	ldr r3, _020E0E04 ; =printf_double2hex_inf_upper
	add sp, sp, #0x2c
	ldrb r2, [r3, #0x0]
	ldrb r1, [r3, #0x1]
	strb r2, [r0, #0x0]
	strb r1, [r0, #0x1]
	ldrb r2, [r3, #0x2]
	ldrb r1, [r3, #0x3]
	strb r2, [r0, #0x2]
	strb r1, [r0, #0x3]
	ldmia sp!, {r4-r11,lr}
	add sp, sp, #0x10
	bx lr
_020E08BC:
	ldr r3, _020E0E08 ; =printf_double2hex_inf_lower
	add sp, sp, #0x2c
	ldrb r2, [r3, #0x0]
	ldrb r1, [r3, #0x1]
	strb r2, [r0, #0x0]
	strb r1, [r0, #0x1]
	ldrb r2, [r3, #0x2]
	ldrb r1, [r3, #0x3]
	strb r2, [r0, #0x2]
	strb r1, [r0, #0x3]
	ldmia sp!, {r4-r11,lr}
	add sp, sp, #0x10
	bx lr
_020E08F0:
	ldrsb r0, [sp, #0x4]
	cmp r0, #0x0
	beq _020E09A8
	cmp r6, #0x0
	sub r0, r9, #0x5
	blt _020E0910
	cmp r6, #0x80
	blt _020E0918
_020E0910:
	mov r1, #0x0
	b _020E0928
_020E0918:
	ldr r1, _020E0DF8 ; =__msl_digit
	mov r2, r6, lsl #0x1
	ldrh r1, [r1, r2]
	and r1, r1, #0x200
_020E0928:
	cmp r1, #0x0
	beq _020E096C
	ldr r3, _020E0E0C ; =printf_double2hex_neg_nan_upper
	add sp, sp, #0x2c
	ldrb r2, [r3, #0x0]
	ldrb r1, [r3, #0x1]
	strb r2, [r0, #0x0]
	strb r1, [r0, #0x1]
	ldrb r2, [r3, #0x2]
	ldrb r1, [r3, #0x3]
	strb r2, [r0, #0x2]
	strb r1, [r0, #0x3]
	ldrb r1, [r3, #0x4]
	strb r1, [r0, #0x4]
	ldmia sp!, {r4-r11,lr}
	add sp, sp, #0x10
	bx lr
_020E096C:
	ldr r3, _020E0E10 ; =printf_double2hex_neg_nan_lower
	add sp, sp, #0x2c
	ldrb r2, [r3, #0x0]
	ldrb r1, [r3, #0x1]
	strb r2, [r0, #0x0]
	strb r1, [r0, #0x1]
	ldrb r2, [r3, #0x2]
	ldrb r1, [r3, #0x3]
	strb r2, [r0, #0x2]
	strb r1, [r0, #0x3]
	ldrb r1, [r3, #0x4]
	strb r1, [r0, #0x4]
	ldmia sp!, {r4-r11,lr}
	add sp, sp, #0x10
	bx lr
_020E09A8:
	cmp r6, #0x0
	sub r0, r9, #0x4
	blt _020E09BC
	cmp r6, #0x80
	blt _020E09C4
_020E09BC:
	mov r1, #0x0
	b _020E09D4
_020E09C4:
	ldr r1, _020E0DF8 ; =__msl_digit
	mov r2, r6, lsl #0x1
	ldrh r1, [r1, r2]
	and r1, r1, #0x200
_020E09D4:
	cmp r1, #0x0
	beq _020E0A10
	ldr r3, _020E0E14 ; =printf_double2hex_nan_upper
	add sp, sp, #0x2c
	ldrb r2, [r3, #0x0]
	ldrb r1, [r3, #0x1]
	strb r2, [r0, #0x0]
	strb r1, [r0, #0x1]
	ldrb r2, [r3, #0x2]
	ldrb r1, [r3, #0x3]
	strb r2, [r0, #0x2]
	strb r1, [r0, #0x3]
	ldmia sp!, {r4-r11,lr}
	add sp, sp, #0x10
	bx lr
_020E0A10:
	ldr r3, _020E0E18 ; =printf_double2hex_nan_lower
	add sp, sp, #0x2c
	ldrb r2, [r3, #0x0]
	ldrb r1, [r3, #0x1]
	strb r2, [r0, #0x0]
	strb r1, [r0, #0x1]
	ldrb r2, [r3, #0x2]
	ldrb r1, [r3, #0x3]
	strb r2, [r0, #0x2]
	strb r1, [r0, #0x3]
	ldmia sp!, {r4-r11,lr}
	add sp, sp, #0x10
	bx lr
_020E0A44:
	ldrb r0, [sp, #0x8]
	ldrsh r1, [sp, #0x6]
	sub r8, r9, #0x1
	sub r0, r0, #0x1
	add r0, r1, r0
	strh r0, [sp, #0x6]
	mov r0, #0x0
	strb r0, [r8, #0x0]
	cmp r6, #0x65
	bgt _020E0A98
	bge _020E0B24
	cmp r6, #0x47
	bgt _020E0DE0
	cmp r6, #0x45
	blt _020E0DE0
	beq _020E0B24
	cmp r6, #0x46
	beq _020E0C6C
	cmp r6, #0x47
	beq _020E0AB0
	b _020E0DE0
_020E0A98:
	cmp r6, #0x66
	bgt _020E0AA8
	beq _020E0C6C
	b _020E0DE0
_020E0AA8:
	cmp r6, #0x67
	bne _020E0DE0
_020E0AB0:
	ldrb r0, [sp, #0x8]
	cmp r0, r7
	ble _020E0AC8
	add r0, sp, #0x4
	mov r1, r7
	bl round_decimal
_020E0AC8:
	ldrsh r2, [sp, #0x6]
	mvn r0, #0x3
	cmp r2, r0
	blt _020E0AE0
	cmp r2, r7
	blt _020E0B00
_020E0AE0:
	cmp r5, #0x0
	ldreqb r0, [sp, #0x8]
	subne r7, r7, #0x1
	subeq r7, r0, #0x1
	cmp r6, #0x67
	moveq r6, #0x65
	movne r6, #0x45
	b _020E0B24
_020E0B00:
	cmp r5, #0x0
	addne r0, r2, #0x1
	subne r7, r7, r0
	bne _020E0C6C
	ldrb r1, [sp, #0x8]
	add r0, r2, #0x1
	subs r7, r1, r0
	movmi r7, #0x0
	b _020E0C6C
_020E0B24:
	ldrb r0, [sp, #0x8]
	add r1, r7, #0x1
	cmp r0, r1
	ble _020E0B3C
	add r0, sp, #0x4
	bl round_decimal
_020E0B3C:
	ldrsh lr, [sp, #0x6]
	mov r11, #0x2b
	mov r10, #0x0
	cmp lr, #0x0
	rsblt lr, lr, #0x0
	movlt r11, #0x2d
	ldr r3, _020E0E1C ; =0x66666667
	mov r0, #0xa
	b _020E0B90
_020E0B60:
	mov r1, lr, lsr #0x1f
	smull r2, r12, r3, lr
	add r12, r1, r12, asr #0x2
	smull r1, r2, r0, r12
	sub r12, lr, r1
	add r1, r12, #0x30
	strb r1, [r8, #-0x1]!
	mov r2, lr
	smull r1, lr, r3, r2
	mov r1, r2, lsr #0x1f
	add lr, r1, lr, asr #0x2
	add r10, r10, #0x1
_020E0B90:
	cmp lr, #0x0
	bne _020E0B60
	cmp r10, #0x2
	blt _020E0B60
	strb r11, [r8, #-0x1]
	strb r6, [r8, #-0x2]!
	sub r1, r9, r8
	ldr r0, _020E0DF4 ; =0x000001FD
	add r1, r7, r1
	cmp r1, r0
	addgt sp, sp, #0x2c
	movgt r0, #0x0
	ldmgtia sp!, {r4-r11,lr}
	addgt sp, sp, #0x10
	bxgt lr
	ldrb r1, [sp, #0x8]
	add r0, r7, #0x1
	cmp r1, r0
	bge _020E0BFC
	add r0, r7, #0x2
	sub r0, r0, r1
	subs r1, r0, #0x1
	beq _020E0BFC
	mov r0, #0x30
_020E0BF0:
	strb r0, [r8, #-0x1]!
	subs r1, r1, #0x1
	bne _020E0BF0
_020E0BFC:
	ldrb r1, [sp, #0x8]
	add r0, sp, #0x9
	add r2, r0, r1
	subs r1, r1, #0x1
	beq _020E0C20
_020E0C10:
	ldrsb r0, [r2, #-0x1]!
	subs r1, r1, #0x1
	strb r0, [r8, #-0x1]!
	bne _020E0C10
_020E0C20:
	cmp r7, #0x0
	cmpeq r5, #0x0
	movne r0, #0x2e
	strneb r0, [r8, #-0x1]!
	ldrb r0, [sp, #0x9]
	strb r0, [r8, #-0x1]!
	ldrsb r0, [sp, #0x4]
	cmp r0, #0x0
	movne r0, #0x2d
	strneb r0, [r8, #-0x1]!
	bne _020E0DE0
	cmp r4, #0x1
	moveq r0, #0x2b
	streqb r0, [r8, #-0x1]!
	beq _020E0DE0
	cmp r4, #0x2
	moveq r0, #0x20
	streqb r0, [r8, #-0x1]!
	b _020E0DE0
_020E0C6C:
	ldrsh r3, [sp, #0x6]
	ldrb r2, [sp, #0x8]
	sub r0, r2, r3
	subs r1, r0, #0x1
	movmi r1, #0x0
	cmp r1, r7
	ble _020E0CAC
	sub r1, r1, r7
	add r0, sp, #0x4
	sub r1, r2, r1
	bl round_decimal
	ldrsh r3, [sp, #0x6]
	ldrb r2, [sp, #0x8]
	sub r0, r2, r3
	subs r1, r0, #0x1
	movmi r1, #0x0
_020E0CAC:
	adds r0, r3, #0x1
	movmi r0, #0x0
	ldr r3, _020E0DF4 ; =0x000001FD
	add r6, r0, r1
	cmp r6, r3
	addgt sp, sp, #0x2c
	movgt r0, #0x0
	ldmgtia sp!, {r4-r11,lr}
	addgt sp, sp, #0x10
	bxgt lr
	add r3, sp, #0x9
	sub r6, r7, r1
	cmp r6, #0x0
	add r2, r3, r2
	mov r9, #0x0
	ble _020E0D00
	mov r3, #0x30
_020E0CF0:
	add r9, r9, #0x1
	cmp r9, r6
	strb r3, [r8, #-0x1]!
	blt _020E0CF0
_020E0D00:
	mov r6, #0x0
	b _020E0D14
_020E0D08:
	ldrsb r3, [r2, #-0x1]!
	add r6, r6, #0x1
	strb r3, [r8, #-0x1]!
_020E0D14:
	cmp r6, r1
	ldrltb r3, [sp, #0x8]
	cmplt r6, r3
	blt _020E0D08
	cmp r6, r1
	bge _020E0D40
	mov r3, #0x30
_020E0D30:
	add r6, r6, #0x1
	cmp r6, r1
	strb r3, [r8, #-0x1]!
	blt _020E0D30
_020E0D40:
	cmp r7, #0x0
	cmpeq r5, #0x0
	movne r1, #0x2e
	strneb r1, [r8, #-0x1]!
	cmp r0, #0x0
	beq _020E0DA8
	ldrb r1, [sp, #0x8]
	mov r5, #0x0
	sub r1, r0, r1
	cmp r1, #0x0
	ble _020E0D88
	mov r3, #0x30
_020E0D70:
	strb r3, [r8, #-0x1]!
	ldrb r1, [sp, #0x8]
	add r5, r5, #0x1
	sub r1, r0, r1
	cmp r5, r1
	blt _020E0D70
_020E0D88:
	cmp r5, r0
	bge _020E0DB0
_020E0D90:
	ldrsb r1, [r2, #-0x1]!
	add r5, r5, #0x1
	cmp r5, r0
	strb r1, [r8, #-0x1]!
	blt _020E0D90
	b _020E0DB0
_020E0DA8:
	mov r0, #0x30
	strb r0, [r8, #-0x1]!
_020E0DB0:
	ldrsb r0, [sp, #0x4]
	cmp r0, #0x0
	movne r0, #0x2d
	strneb r0, [r8, #-0x1]!
	bne _020E0DE0
	cmp r4, #0x1
	moveq r0, #0x2b
	streqb r0, [r8, #-0x1]!
	beq _020E0DE0
	cmp r4, #0x2
	moveq r0, #0x20
	streqb r0, [r8, #-0x1]!
_020E0DE0:
	mov r0, r8
	add sp, sp, #0x2c
	ldmia sp!, {r4-r11,lr}
	add sp, sp, #0x10
	bx lr
	.balign 4
_020E0DF4: .word 0x000001FD
_020E0DF8: .word __msl_digit
_020E0DFC: .word printf_double2hex_neg_inf_upper
_020E0E00: .word printf_double2hex_neg_inf_lower
_020E0E04: .word printf_double2hex_inf_upper
_020E0E08: .word printf_double2hex_inf_lower
_020E0E0C: .word printf_double2hex_neg_nan_upper
_020E0E10: .word printf_double2hex_neg_nan_lower
_020E0E14: .word printf_double2hex_nan_upper
_020E0E18: .word printf_double2hex_nan_lower
_020E0E1C: .word 0x66666667
	arm_func_end float2str

	arm_func_start __pformatter
__pformatter:
	stmdb sp!, {r0-r3}
	stmdb sp!, {r4-r11,lr}
	sub sp, sp, #0x22c
	mov r3, #0x20
	mov r11, r2
	strb r3, [sp, #0x19]
	ldrsb r2, [r11, #0x0]
	mov r9, r0
	mov r8, r1
	cmp r2, #0x0
	mov r10, #0x0
	beq _020E1628
_020E0E50:
	mov r0, r11
	mov r1, #0x25
	bl strchr
	str r0, [sp, #0xc]
	cmp r0, #0x0
	bne _020E0EA4
	mov r0, r11
	bl strlen
	movs r2, r0
	add r10, r10, r2
	beq _020E1628
	mov r0, r8
	mov r1, r11
	blx r9
	cmp r0, #0x0
	bne _020E1628
	add sp, sp, #0x22c
	mvn r0, #0x0
	ldmia sp!, {r4-r11,lr}
	add sp, sp, #0x10
	bx lr
_020E0EA4:
	subs r2, r0, r11
	add r10, r10, r2
	beq _020E0ED4
	mov r0, r8
	mov r1, r11
	blx r9
	cmp r0, #0x0
	addeq sp, sp, #0x22c
	mvneq r0, #0x0
	ldmeqia sp!, {r4-r11,lr}
	addeq sp, sp, #0x10
	bxeq lr
_020E0ED4:
	ldr r0, [sp, #0xc]
	add r1, sp, #0x25c
	add r2, sp, #0x1c
	bl parse_format
	ldrb r1, [sp, #0x21]
	mov r11, r0
	cmp r1, #0x61
	bgt _020E0F40
	bge _020E12A4
	cmp r1, #0x47
	bgt _020E0F34
	subs r0, r1, #0x41
	addpl pc, pc, r0, lsl #0x2
	b _020E0F28
	b _020E12A4 ; case 65
	b _020E148C ; case 66
	b _020E148C ; case 67
	b _020E148C ; case 68
	b _020E123C ; case 69
	b _020E123C ; case 70
	b _020E123C ; case 71
_020E0F28:
	cmp r1, #0x25
	beq _020E1478
	b _020E148C
_020E0F34:
	cmp r1, #0x58
	beq _020E1100
	b _020E148C
_020E0F40:
	cmp r1, #0x75
	bgt _020E0FA8
	subs r0, r1, #0x64
	addpl pc, pc, r0, lsl #0x2
	b _020E0F9C
	b _020E0FC0 ; case 100
	b _020E123C ; case 101
	b _020E123C ; case 102
	b _020E123C ; case 103
	b _020E148C ; case 104
	b _020E0FC0 ; case 105
	b _020E148C ; case 106
	b _020E148C ; case 107
	b _020E148C ; case 108
	b _020E148C ; case 109
	b _020E13CC ; case 110
	b _020E1100 ; case 111
	b _020E148C ; case 112
	b _020E148C ; case 113
	b _020E148C ; case 114
	b _020E130C ; case 115
	b _020E148C ; case 116
	b _020E1100 ; case 117
_020E0F9C:
	cmp r1, #0x63
	beq _020E1458
	b _020E148C
_020E0FA8:
	cmp r1, #0x78
	bgt _020E0FB8
	beq _020E1100
	b _020E148C
_020E0FB8:
	cmp r1, #0xff
	b _020E148C
_020E0FC0:
	ldrb r0, [sp, #0x20]
	cmp r0, #0x3
	bne _020E0FE0
	ldr r1, [sp, #0x25c]
	add r1, r1, #0x4
	str r1, [sp, #0x25c]
	ldr r5, [r1, #-0x4]
	b _020E1078
_020E0FE0:
	cmp r0, #0x4
	bne _020E1008
	ldr r1, [sp, #0x25c]
	add r2, r1, #0x8
	str r2, [sp, #0x25c]
	ldr r1, [r2, #-0x8]
	str r1, [sp, #0x10]
	ldr r1, [r2, #-0x4]
	str r1, [sp, #0x14]
	b _020E1078
_020E1008:
	cmp r0, #0x6
	bne _020E1030
	ldr r1, [sp, #0x25c]
	add r2, r1, #0x8
	str r2, [sp, #0x25c]
	ldr r1, [r2, #-0x8]
	str r1, [sp, #0x10]
	ldr r1, [r2, #-0x4]
	str r1, [sp, #0x14]
	b _020E1078
_020E1030:
	cmp r0, #0x7
	bne _020E104C
	ldr r1, [sp, #0x25c]
	add r1, r1, #0x4
	str r1, [sp, #0x25c]
	ldr r5, [r1, #-0x4]
	b _020E1078
_020E104C:
	cmp r0, #0x8
	bne _020E1068
	ldr r1, [sp, #0x25c]
	add r1, r1, #0x4
	str r1, [sp, #0x25c]
	ldr r5, [r1, #-0x4]
	b _020E1078
_020E1068:
	ldr r1, [sp, #0x25c]
	add r1, r1, #0x4
	str r1, [sp, #0x25c]
	ldr r5, [r1, #-0x4]
_020E1078:
	cmp r0, #0x2
	moveq r1, r5, lsl #0x10
	moveq r5, r1, asr #0x10
	cmp r0, #0x1
	moveq r1, r5, lsl #0x18
	moveq r5, r1, asr #0x18
	cmp r0, #0x4
	cmpne r0, #0x6
	add r0, sp, #0x1c
	bne _020E10CC
	sub r4, sp, #0x4
	ldmia r0, {r0-r3}
	stmia r4, {r0-r3}
	ldr r3, [r4, #0x0]
	ldr r0, [sp, #0x10]
	ldr r1, [sp, #0x14]
	add r2, sp, #0x22c
	bl longlong2str
	movs r7, r0
	beq _020E148C
	b _020E10F0
_020E10CC:
	sub r4, sp, #0x8
	ldmia r0, {r0-r3}
	stmia r4, {r0-r3}
	add r1, sp, #0x22c
	mov r0, r5
	ldmia r4, {r2-r3}
	bl long2str
	movs r7, r0
	beq _020E148C
_020E10F0:
	add r0, sp, #0x200
	add r0, r0, #0x2b
	sub r6, r0, r7
	b _020E14D8
_020E1100:
	ldrb r0, [sp, #0x20]
	cmp r0, #0x3
	bne _020E1120
	ldr r1, [sp, #0x25c]
	add r1, r1, #0x4
	str r1, [sp, #0x25c]
	ldr r5, [r1, #-0x4]
	b _020E11B8
_020E1120:
	cmp r0, #0x4
	bne _020E1148
	ldr r1, [sp, #0x25c]
	add r2, r1, #0x8
	str r2, [sp, #0x25c]
	ldr r1, [r2, #-0x8]
	str r1, [sp, #0x10]
	ldr r1, [r2, #-0x4]
	str r1, [sp, #0x14]
	b _020E11B8
_020E1148:
	cmp r0, #0x6
	bne _020E1170
	ldr r1, [sp, #0x25c]
	add r2, r1, #0x8
	str r2, [sp, #0x25c]
	ldr r1, [r2, #-0x8]
	str r1, [sp, #0x10]
	ldr r1, [r2, #-0x4]
	str r1, [sp, #0x14]
	b _020E11B8
_020E1170:
	cmp r0, #0x7
	bne _020E118C
	ldr r1, [sp, #0x25c]
	add r1, r1, #0x4
	str r1, [sp, #0x25c]
	ldr r5, [r1, #-0x4]
	b _020E11B8
_020E118C:
	cmp r0, #0x8
	bne _020E11A8
	ldr r1, [sp, #0x25c]
	add r1, r1, #0x4
	str r1, [sp, #0x25c]
	ldr r5, [r1, #-0x4]
	b _020E11B8
_020E11A8:
	ldr r1, [sp, #0x25c]
	add r1, r1, #0x4
	str r1, [sp, #0x25c]
	ldr r5, [r1, #-0x4]
_020E11B8:
	cmp r0, #0x2
	moveq r1, r5, lsl #0x10
	moveq r5, r1, lsr #0x10
	cmp r0, #0x1
	andeq r5, r5, #0xff
	cmp r0, #0x4
	cmpne r0, #0x6
	add r0, sp, #0x1c
	bne _020E1208
	sub r4, sp, #0x4
	ldmia r0, {r0-r3}
	stmia r4, {r0-r3}
	ldr r3, [r4, #0x0]
	ldr r0, [sp, #0x10]
	ldr r1, [sp, #0x14]
	add r2, sp, #0x22c
	bl longlong2str
	movs r7, r0
	beq _020E148C
	b _020E122C
_020E1208:
	sub r4, sp, #0x8
	ldmia r0, {r0-r3}
	stmia r4, {r0-r3}
	add r1, sp, #0x22c
	mov r0, r5
	ldmia r4, {r2-r3}
	bl long2str
	movs r7, r0
	beq _020E148C
_020E122C:
	add r0, sp, #0x200
	add r0, r0, #0x2b
	sub r6, r0, r7
	b _020E14D8
_020E123C:
	ldrb r0, [sp, #0x20]
	cmp r0, #0x9
	ldrne r0, [sp, #0x25c]
	addne r0, r0, #0x8
	strne r0, [sp, #0x25c]
	bne _020E1260
	ldr r0, [sp, #0x25c]
	add r0, r0, #0x8
	str r0, [sp, #0x25c]
_020E1260:
	ldr r7, [r0, #-0x8]
	ldr r6, [r0, #-0x4]
	add r0, sp, #0x1c
	sub r4, sp, #0x4
	ldmia r0, {r0-r3}
	stmia r4, {r0-r3}
	ldr r3, [r4, #0x0]
	mov r0, r7
	mov r1, r6
	add r2, sp, #0x22c
	bl float2str
	movs r7, r0
	beq _020E148C
	add r0, sp, #0x200
	add r0, r0, #0x2b
	sub r6, r0, r7
	b _020E14D8
_020E12A4:
	ldrb r0, [sp, #0x20]
	cmp r0, #0x9
	ldrne r0, [sp, #0x25c]
	addne r0, r0, #0x8
	strne r0, [sp, #0x25c]
	bne _020E12C8
	ldr r0, [sp, #0x25c]
	add r0, r0, #0x8
	str r0, [sp, #0x25c]
_020E12C8:
	ldr r7, [r0, #-0x8]
	ldr r6, [r0, #-0x4]
	add r0, sp, #0x1c
	sub r4, sp, #0x4
	ldmia r0, {r0-r3}
	stmia r4, {r0-r3}
	ldr r3, [r4, #0x0]
	mov r0, r7
	mov r1, r6
	add r2, sp, #0x22c
	bl double2hex
	movs r7, r0
	beq _020E148C
	add r0, sp, #0x200
	add r0, r0, #0x2b
	sub r6, r0, r7
	b _020E14D8
_020E130C:
	ldrb r0, [sp, #0x20]
	cmp r0, #0x5
	bne _020E134C
	ldr r0, [sp, #0x25c]
	mov r2, #0x200
	add r0, r0, #0x4
	str r0, [sp, #0x25c]
	ldr r1, [r0, #-0x4]
	add r0, sp, #0x2c
	cmp r1, #0x0
	ldreq r1, _020E163C ; =__pformatter_empty_string_1
	bl wcstombs
	cmp r0, #0x0
	blt _020E148C
	add r7, sp, #0x2c
	b _020E135C
_020E134C:
	ldr r0, [sp, #0x25c]
	add r0, r0, #0x4
	str r0, [sp, #0x25c]
	ldr r7, [r0, #-0x4]
_020E135C:
	ldrb r0, [sp, #0x1f]
	cmp r7, #0x0
	ldreq r7, _020E1640 ; =__pformatter_empty_string_2
	cmp r0, #0x0
	beq _020E1390
	ldrb r0, [sp, #0x1e]
	ldrb r6, [r7], #0x1
	cmp r0, #0x0
	beq _020E14D8
	ldr r0, [sp, #0x28]
	cmp r6, r0
	movgt r6, r0
	b _020E14D8
_020E1390:
	ldrb r0, [sp, #0x1e]
	cmp r0, #0x0
	beq _020E13BC
	ldr r6, [sp, #0x28]
	mov r0, r7
	mov r2, r6
	mov r1, #0x0
	bl memchr
	cmp r0, #0x0
	subne r6, r0, r7
	b _020E14D8
_020E13BC:
	mov r0, r7
	bl strlen
	mov r6, r0
	b _020E14D8
_020E13CC:
	ldr r1, [sp, #0x25c]
	ldrb r0, [sp, #0x20]
	add r1, r1, #0x4
	str r1, [sp, #0x25c]
	ldr r1, [r1, #-0x4]
	cmp r0, #0x8
	addls pc, pc, r0, lsl #0x2
	b _020E161C
	b _020E1410 ; case 0
	b _020E161C ; case 1
	b _020E1418 ; case 2
	b _020E1420 ; case 3
	b _020E1448 ; case 4
	b _020E161C ; case 5
	b _020E1428 ; case 6
	b _020E1438 ; case 7
	b _020E1440 ; case 8
_020E1410:
	str r10, [r1, #0x0]
	b _020E161C
_020E1418:
	strh r10, [r1, #0x0]
	b _020E161C
_020E1420:
	str r10, [r1, #0x0]
	b _020E161C
_020E1428:
	str r10, [r1, #0x0]
	mov r0, r10, asr #0x1f
	str r0, [r1, #0x4]
	b _020E161C
_020E1438:
	str r10, [r1, #0x0]
	b _020E161C
_020E1440:
	str r10, [r1, #0x0]
	b _020E161C
_020E1448:
	str r10, [r1, #0x0]
	mov r0, r10, asr #0x1f
	str r0, [r1, #0x4]
	b _020E161C
_020E1458:
	ldr r0, [sp, #0x25c]
	add r7, sp, #0x2c
	add r0, r0, #0x4
	str r0, [sp, #0x25c]
	ldr r0, [r0, #-0x4]
	mov r6, #0x1
	strb r0, [sp, #0x2c]
	b _020E14D8
_020E1478:
	mov r0, #0x25
	strb r0, [sp, #0x2c]
	add r7, sp, #0x2c
	mov r6, #0x1
	b _020E14D8
_020E148C:
	ldr r0, [sp, #0xc]
	bl strlen
	movs r4, r0
	beq _020E14C4
	ldr r1, [sp, #0xc]
	mov r0, r8
	mov r2, r4
	blx r9
	cmp r0, #0x0
	addeq sp, sp, #0x22c
	mvneq r0, #0x0
	ldmeqia sp!, {r4-r11,lr}
	addeq sp, sp, #0x10
	bxeq lr
_020E14C4:
	add sp, sp, #0x22c
	add r0, r10, r4
	ldmia sp!, {r4-r11,lr}
	add sp, sp, #0x10
	bx lr
_020E14D8:
	ldrb r0, [sp, #0x1c]
	mov r4, r6
	cmp r0, #0x0
	beq _020E158C
	cmp r0, #0x2
	moveq r0, #0x30
	movne r0, #0x20
	strb r0, [sp, #0x19]
	ldrsb r0, [r7, #0x0]
	cmp r0, #0x2b
	cmpne r0, #0x2d
	cmpne r0, #0x20
	bne _020E1548
	ldrsb r0, [sp, #0x19]
	cmp r0, #0x30
	bne _020E1548
	mov r0, r8
	mov r1, r7
	mov r2, #0x1
	blx r9
	cmp r0, #0x0
	addeq sp, sp, #0x22c
	mvneq r0, #0x0
	ldmeqia sp!, {r4-r11,lr}
	addeq sp, sp, #0x10
	bxeq lr
	add r7, r7, #0x1
	sub r6, r6, #0x1
_020E1548:
	ldr r0, [sp, #0x24]
	cmp r4, r0
	bge _020E158C
_020E1554:
	mov r0, r8
	add r1, sp, #0x19
	mov r2, #0x1
	blx r9
	cmp r0, #0x0
	addeq sp, sp, #0x22c
	mvneq r0, #0x0
	ldmeqia sp!, {r4-r11,lr}
	addeq sp, sp, #0x10
	bxeq lr
	ldr r0, [sp, #0x24]
	add r4, r4, #0x1
	cmp r4, r0
	blt _020E1554
_020E158C:
	cmp r6, #0x0
	beq _020E15BC
	mov r0, r8
	mov r1, r7
	mov r2, r6
	blx r9
	cmp r0, #0x0
	addeq sp, sp, #0x22c
	mvneq r0, #0x0
	ldmeqia sp!, {r4-r11,lr}
	addeq sp, sp, #0x10
	bxeq lr
_020E15BC:
	ldrb r0, [sp, #0x1c]
	cmp r0, #0x0
	bne _020E1618
	ldr r0, [sp, #0x24]
	cmp r4, r0
	bge _020E1618
	mov r6, #0x20
	add r7, sp, #0x18
_020E15DC:
	mov r0, r8
	mov r1, r7
	mov r2, #0x1
	strb r6, [sp, #0x18]
	blx r9
	cmp r0, #0x0
	addeq sp, sp, #0x22c
	mvneq r0, #0x0
	ldmeqia sp!, {r4-r11,lr}
	addeq sp, sp, #0x10
	bxeq lr
	ldr r0, [sp, #0x24]
	add r4, r4, #0x1
	cmp r4, r0
	blt _020E15DC
_020E1618:
	add r10, r10, r4
_020E161C:
	ldrsb r0, [r11, #0x0]
	cmp r0, #0x0
	bne _020E0E50
_020E1628:
	mov r0, r10
	add sp, sp, #0x22c
	ldmia sp!, {r4-r11,lr}
	add sp, sp, #0x10
	bx lr
	.balign 4
_020E163C: .word __pformatter_empty_string_1
_020E1640: .word __pformatter_empty_string_2
	arm_func_end __pformatter

	arm_func_start __FileWrite
__FileWrite: ; 0x020E1644
	stmdb sp!, {r3-r5,lr}
	mov r5, r0
	mov r0, r1
	mov r3, r5
	mov r1, #0x1
	mov r4, r2
	bl __fwrite
	cmp r4, r0
	movne r5, #0x0
	mov r0, r5
	ldmia sp!, {r3-r5,pc}
	arm_func_end __FileWrite

	arm_func_start __StringWrite
__StringWrite: ; 0x020E1670
	stmdb sp!, {r3-r5,lr}
	mov r4, r0
	ldr r3, [r4, #0x8]
	mov r5, r2
	ldr r2, [r4, #0x4]
	add r0, r3, r5
	cmp r0, r2
	ldr r0, [r4, #0x0]
	subhi r5, r2, r3
	mov r2, r5
	add r0, r0, r3
	bl memcpy
	ldr r1, [r4, #0x8]
	mov r0, #0x1
	add r1, r1, r5
	str r1, [r4, #0x8]
	ldmia sp!, {r3-r5,pc}
	arm_func_end __StringWrite

	arm_func_start printf
printf: ; 0x020E16B4
	stmdb sp!, {r0-r3}
	stmdb sp!, {r4,lr}
	ldr r0, _020E17B4 ; =__files + 0x4C
	mvn r1, #0x0
	bl fwide
	cmp r0, #0x0
	mvnge r0, #0x0
	ldmgeia sp!, {r4,lr}
	addge sp, sp, #0x10
	bxge lr
	ldr r0, _020E17B8 ; =__cs + 0x48
	bl OS_TryLockMutex
	cmp r0, #0x0
	bne _020E1710
	ldr r0, _020E17BC ; =OSi_ThreadInfo
	ldr r1, _020E17C0 ; =__cs_id
	ldr r2, [r0, #0x4]
	ldr r0, _020E17C4 ; =__cs_ref
	ldr r3, [r2, #0x6c]
	mov r2, #0x1
	str r3, [r1, #0xc]
	str r2, [r0, #0xc]
	b _020E1768
_020E1710:
	ldr r0, _020E17BC ; =OSi_ThreadInfo
	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 ; =__cs_ref
	ldr r1, [r0, #0xc]
	add r1, r1, #0x1
	str r1, [r0, #0xc]
	b _020E1768
_020E1740:
	ldr r0, _020E17B8 ; =__cs + 0x48
	bl OS_LockMutex
	ldr r0, _020E17BC ; =OSi_ThreadInfo
	ldr r1, _020E17C0 ; =__cs_id
	ldr r2, [r0, #0x4]
	ldr r0, _020E17C4 ; =__cs_ref
	ldr r3, [r2, #0x6c]
	mov r2, #0x1
	str r3, [r1, #0xc]
	str r2, [r0, #0xc]
_020E1768:
	add r0, sp, #0x8
	bic r3, r0, #0x3
	ldr r2, [sp, #0x8]
	ldr r0, _020E17C8 ; =__FileWrite
	ldr r1, _020E17B4 ; =__files + 0x4C
	add r3, r3, #0x4
	bl __pformatter
	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 ; =__cs + 0x48
	bl OS_UnlockMutex
_020E17A4:
	mov r0, r4
	ldmia sp!, {r4,lr}
	add sp, sp, #0x10
	bx lr
	.balign 4
_020E17B4: .word __files + 0x4C
_020E17B8: .word __cs + 0x48
_020E17BC: .word OSi_ThreadInfo
_020E17C0: .word __cs_id
_020E17C4: .word __cs_ref
_020E17C8: .word __FileWrite
	arm_func_end printf

	arm_func_start vsnprintf
vsnprintf: ; 0x020E17CC
	stmdb sp!, {r4-r5,lr}
	sub sp, sp, #0xc
	mov r5, r0
	mov r4, r1
	mov r12, #0x0
	ldr r0, _020E1830 ; =__StringWrite
	add r1, sp, #0x0
	str r5, [sp, #0x0]
	str r4, [sp, #0x4]
	str r12, [sp, #0x8]
	bl __pformatter
	cmp r5, #0x0
	addeq sp, sp, #0xc
	ldmeqia sp!, {r4-r5,pc}
	cmp r0, r4
	movcc r1, #0x0
	addcc sp, sp, #0xc
	strccb r1, [r5, r0]
	ldmccia sp!, {r4-r5,pc}
	cmp r4, #0x0
	addne r1, r5, r4
	movne r2, #0x0
	strneb r2, [r1, #-0x1]
	add sp, sp, #0xc
	ldmia sp!, {r4-r5,pc}
	.balign 4
_020E1830: .word __StringWrite
	arm_func_end vsnprintf

	arm_func_start snprintf
snprintf: ; 0x020E1834
	stmdb sp!, {r0-r3}
	stmdb sp!, {r3,lr}
	add r3, sp, #0x10
	bic r3, r3, #0x3
	ldr r2, [sp, #0x10]
	add r3, r3, #0x4
	bl vsnprintf
	ldmia sp!, {r3,lr}
	add sp, sp, #0x10
	bx lr
	arm_func_end snprintf

	arm_func_start sprintf
sprintf: ; 0x020E185C
	stmdb sp!, {r0-r3}
	stmdb sp!, {r3,lr}
	add r1, sp, #0xc
	bic r1, r1, #0x3
	add r3, r1, #0x4
	ldr r2, [sp, #0xc]
	mvn r1, #0x0
	bl vsnprintf
	ldmia sp!, {r3,lr}
	add sp, sp, #0x10
	bx lr
	arm_func_end sprintf

	exception long2str, 589, 0x0090FF20
	exception longlong2str, 737, 0x00A0FF20
	exception double2hex, 1245, 0x00F07F20
	exception float2str, 1893, 0x00C0FF20
	exception __pformatter, 2084, __pformatter_exception
	exception __FileWrite, 45, 0x00200300
	exception __StringWrite, 69, 0x00200300
	exception printf, 281, 0x00300120
	exception vsnprintf, 105, 0x00300300
	exception snprintf, 41, 0x00300020
	exception sprintf, 45, 0x00300020

	.section .exception,8

__pformatter_exception: ; 0x020EC710
	.byte 0x20, 0xFF, 0x09, 0x60
	.balign 8
