summaryrefslogtreecommitdiff
path: root/build/user
diff options
context:
space:
mode:
authorRichard Qin <richard.qin.x@gmail.com>2026-01-04 18:06:31 +0800
committerRichard Qin <richard.qin.x@gmail.com>2026-01-04 18:06:31 +0800
commit3886749b1c8d79d4701bf6b8e66249c4e1491648 (patch)
tree142e6d9ada3d511663c6c0540196d270c69c0227 /build/user
parenta64d25c07b31d57f8706073e11cd774d0880d6dd (diff)
downloadlume-3886749b1c8d79d4701bf6b8e66249c4e1491648.tar.gz
lume-3886749b1c8d79d4701bf6b8e66249c4e1491648.tar.xz
dev(shell): implement basic shell tools
fixed(file-system): fixed read and write bugs
Diffstat (limited to 'build/user')
-rwxr-xr-xbuild/user/echobin168112 -> 0 bytes
-rw-r--r--build/user/echo.asm10641
-rw-r--r--build/user/echo.sym189
-rw-r--r--build/user/entry.obin3184 -> 0 bytes
-rwxr-xr-xbuild/user/initbin168904 -> 0 bytes
-rw-r--r--build/user/init.asm10687
-rw-r--r--build/user/init.obin17560 -> 0 bytes
-rw-r--r--build/user/init.sym189
-rwxr-xr-xbuild/user/initcodebin30536 -> 0 bytes
-rw-r--r--build/user/initcode.asm10687
-rwxr-xr-xbuild/user/initcode.outbin168904 -> 0 bytes
-rwxr-xr-xbuild/user/lsbin170752 -> 0 bytes
-rw-r--r--build/user/ls.asm10822
-rw-r--r--build/user/ls.sym191
-rwxr-xr-xbuild/user/mkdirbin168216 -> 0 bytes
-rw-r--r--build/user/mkdir.asm10640
-rw-r--r--build/user/mkdir.sym189
-rwxr-xr-xbuild/user/shbin204840 -> 0 bytes
-rw-r--r--build/user/sh.asm12619
-rw-r--r--build/user/sh.obin287920 -> 0 bytes
-rw-r--r--build/user/sh.sym223
-rw-r--r--build/user/usys.obin5512 -> 0 bytes
22 files changed, 0 insertions, 67077 deletions
diff --git a/build/user/echo b/build/user/echo
deleted file mode 100755
index e070770..0000000
--- a/build/user/echo
+++ /dev/null
Binary files differ
diff --git a/build/user/echo.asm b/build/user/echo.asm
deleted file mode 100644
index b2210f2..0000000
--- a/build/user/echo.asm
+++ /dev/null
@@ -1,10641 +0,0 @@
-
-build/user/echo: file format elf64-littleriscv
-
-
-Disassembly of section .text:
-
-0000000000000000 <main>:
-#include "user/user.h"
-#include "ulib/stdio.h"
-#include "ulib/string.h"
-
-int main(int argc, char* argv[])
-{
- 0: 7179 addi sp,sp,-48
- 2: f406 sd ra,40(sp)
- int i;
-
- for (i = 1; i < argc; i++)
- 4: 4785 li a5,1
- 6: 06a7d463 bge a5,a0,6e <main+0x6e>
- a: e84a sd s2,16(sp)
- c: ffe5091b addiw s2,a0,-2
- 10: 02091793 slli a5,s2,0x20
- 14: 01d7d913 srli s2,a5,0x1d
- 18: 01058793 addi a5,a1,16
- 1c: f022 sd s0,32(sp)
- 1e: e44e sd s3,8(sp)
- 20: ec26 sd s1,24(sp)
- 22: 00858413 addi s0,a1,8
- 26: 993e add s2,s2,a5
- {
- write(1, argv[i], strlen(argv[i]));
- if (i + 1 < argc)
- {
- write(1, " ", 1);
- 28: 00005997 auipc s3,0x5
- 2c: fb898993 addi s3,s3,-72 # 4fe0 <_GLOBAL__sub_I__ZSt3cin+0x32>
- 30: a019 j 36 <main+0x36>
- 32: 07c000ef jal ae <write>
- write(1, argv[i], strlen(argv[i]));
- 36: 6004 ld s1,0(s0)
- if (i + 1 < argc)
- 38: 0421 addi s0,s0,8
- write(1, argv[i], strlen(argv[i]));
- 3a: 8526 mv a0,s1
- 3c: 2f3040ef jal 4b2e <strlen>
- 40: 0005061b sext.w a2,a0
- 44: 85a6 mv a1,s1
- 46: 4505 li a0,1
- 48: 066000ef jal ae <write>
- write(1, " ", 1);
- 4c: 4605 li a2,1
- 4e: 85ce mv a1,s3
- 50: 4505 li a0,1
- if (i + 1 < argc)
- 52: ff2410e3 bne s0,s2,32 <main+0x32>
- }
- else
- {
- write(1, "\n", 1);
- 56: 4605 li a2,1
- 58: 00005597 auipc a1,0x5
- 5c: f9058593 addi a1,a1,-112 # 4fe8 <_GLOBAL__sub_I__ZSt3cin+0x3a>
- 60: 4505 li a0,1
- 62: 04c000ef jal ae <write>
- 66: 7402 ld s0,32(sp)
- 68: 64e2 ld s1,24(sp)
- 6a: 6942 ld s2,16(sp)
- 6c: 69a2 ld s3,8(sp)
- }
- }
- exit(0);
- 6e: 4501 li a0,0
- 70: 35c040ef jal 43cc <exit>
- 74: 70a2 ld ra,40(sp)
- 76: 4501 li a0,0
- 78: 6145 addi sp,sp,48
- 7a: 8082 ret
-
-000000000000007c <_start>:
-.global _start
-
-_start:
-
-
- call main
- 7c: f85ff0ef jal 0 <main>
-
- call exit
- 80: 34c040ef jal 43cc <exit>
-
- 84: a001 j 84 <_start+0x8>
-
-0000000000000086 <sys_exit>:
- name: \
- li a7, SYS_ ## sysname; \
- ecall; \
- ret
-
-SYSCALL_NAME(sys_exit, exit)
- 86: 488d li a7,3
- 88: 00000073 ecall
- 8c: 8082 ret
-
-000000000000008e <fork>:
-
-SYSCALL(fork)
- 8e: 4889 li a7,2
- 90: 00000073 ecall
- 94: 8082 ret
-
-0000000000000096 <wait>:
-SYSCALL(wait)
- 96: 4891 li a7,4
- 98: 00000073 ecall
- 9c: 8082 ret
-
-000000000000009e <pipe>:
-SYSCALL(pipe)
- 9e: 4895 li a7,5
- a0: 00000073 ecall
- a4: 8082 ret
-
-00000000000000a6 <read>:
-SYSCALL(read)
- a6: 4899 li a7,6
- a8: 00000073 ecall
- ac: 8082 ret
-
-00000000000000ae <write>:
-SYSCALL(write)
- ae: 48c5 li a7,17
- b0: 00000073 ecall
- b4: 8082 ret
-
-00000000000000b6 <close>:
-SYSCALL(close)
- b6: 48d9 li a7,22
- b8: 00000073 ecall
- bc: 8082 ret
-
-00000000000000be <kill>:
-SYSCALL(kill)
- be: 489d li a7,7
- c0: 00000073 ecall
- c4: 8082 ret
-
-00000000000000c6 <exec>:
-SYSCALL(exec)
- c6: 48a1 li a7,8
- c8: 00000073 ecall
- cc: 8082 ret
-
-00000000000000ce <open>:
-SYSCALL(open)
- ce: 48c1 li a7,16
- d0: 00000073 ecall
- d4: 8082 ret
-
-00000000000000d6 <mknod>:
-SYSCALL(mknod)
- d6: 48c9 li a7,18
- d8: 00000073 ecall
- dc: 8082 ret
-
-00000000000000de <unlink>:
-SYSCALL(unlink)
- de: 48cd li a7,19
- e0: 00000073 ecall
- e4: 8082 ret
-
-00000000000000e6 <fstat>:
-SYSCALL(fstat)
- e6: 48a5 li a7,9
- e8: 00000073 ecall
- ec: 8082 ret
-
-00000000000000ee <link>:
-SYSCALL(link)
- ee: 48d1 li a7,20
- f0: 00000073 ecall
- f4: 8082 ret
-
-00000000000000f6 <mkdir>:
-SYSCALL(mkdir)
- f6: 48d5 li a7,21
- f8: 00000073 ecall
- fc: 8082 ret
-
-00000000000000fe <chdir>:
-SYSCALL(chdir)
- fe: 48a9 li a7,10
- 100: 00000073 ecall
- 104: 8082 ret
-
-0000000000000106 <dup>:
-SYSCALL(dup)
- 106: 48ad li a7,11
- 108: 00000073 ecall
- 10c: 8082 ret
-
-000000000000010e <getpid>:
-SYSCALL(getpid)
- 10e: 48b1 li a7,12
- 110: 00000073 ecall
- 114: 8082 ret
-
-0000000000000116 <sbrk>:
-SYSCALL(sbrk)
- 116: 48b5 li a7,13
- 118: 00000073 ecall
- 11c: 8082 ret
-
-000000000000011e <sleep>:
-SYSCALL(sleep)
- 11e: 48b9 li a7,14
- 120: 00000073 ecall
- 124: 8082 ret
-
-0000000000000126 <uptime>:
-SYSCALL(uptime)
- 126: 48bd li a7,15
- 128: 00000073 ecall
- 12c: 8082 ret
-
-000000000000012e <putc>:
-SYSCALL(putc)
- 12e: 4885 li a7,1
- 130: 00000073 ecall
- 134: 8082 ret
-
-0000000000000136 <disk_test>:
-SYSCALL(disk_test)
- 136: 48dd li a7,23
- 138: 00000073 ecall
- 13c: 8082 ret
-
-000000000000013e <lseek>:
-SYSCALL(lseek)
- 13e: 48e1 li a7,24
- 140: 00000073 ecall
- 144: 8082 ret
-
-0000000000000146 <shutdown>:
- 146: 48e5 li a7,25
- 148: 00000073 ecall
- 14c: 8082 ret
-
-000000000000014e <stbsp__clamp_callback>:
- 14e: 45dc lw a5,12(a1)
- 150: 4598 lw a4,8(a1)
- 152: 9fb1 addw a5,a5,a2
- 154: c5dc sw a5,12(a1)
- 156: 0007069b sext.w a3,a4
- 15a: 00e65463 bge a2,a4,162 <stbsp__clamp_callback+0x14>
- 15e: 0006069b sext.w a3,a2
- 162: c685 beqz a3,18a <stbsp__clamp_callback+0x3c>
- 164: 619c ld a5,0(a1)
- 166: 00a78e63 beq a5,a0,182 <stbsp__clamp_callback+0x34>
- 16a: 00d50633 add a2,a0,a3
- 16e: 00054703 lbu a4,0(a0)
- 172: 0505 addi a0,a0,1
- 174: 0785 addi a5,a5,1
- 176: fee78fa3 sb a4,-1(a5)
- 17a: fec56ae3 bltu a0,a2,16e <stbsp__clamp_callback+0x20>
- 17e: 6188 ld a0,0(a1)
- 180: 4598 lw a4,8(a1)
- 182: 9f15 subw a4,a4,a3
- 184: 9536 add a0,a0,a3
- 186: e188 sd a0,0(a1)
- 188: c598 sw a4,8(a1)
- 18a: 1ff00793 li a5,511
- 18e: 00e7d463 bge a5,a4,196 <stbsp__clamp_callback+0x48>
- 192: 6188 ld a0,0(a1)
- 194: 8082 ret
- 196: 01058513 addi a0,a1,16
- 19a: 8082 ret
-
-000000000000019c <stbsp__count_clamp_callback>:
- 19c: 45dc lw a5,12(a1)
- 19e: 01058513 addi a0,a1,16
- 1a2: 9fb1 addw a5,a5,a2
- 1a4: c5dc sw a5,12(a1)
- 1a6: 8082 ret
-
-00000000000001a8 <stbsp__real_to_str>:
- 1a8: e20508d3 fmv.x.d a7,fa0
- 1ac: 82aa mv t0,a0
- 1ae: 4348d813 srai a6,a7,0x34
- 1b2: 8ec6 mv t4,a7
- 1b4: 7ff87813 andi a6,a6,2047
- 1b8: 8346 mv t1,a7
- 1ba: 03f8d513 srli a0,a7,0x3f
- 1be: 0008d663 bgez a7,1ca <stbsp__real_to_str+0x22>
- 1c2: 22a517d3 fneg.d fa5,fa0
- 1c6: e20788d3 fmv.x.d a7,fa5
- 1ca: 7ff00e13 li t3,2047
- 1ce: 35c80663 beq a6,t3,51a <stbsp__real_to_str+0x372>
- 1d2: 1101 addi sp,sp,-32
- 1d4: 14080363 beqz a6,31a <stbsp__real_to_str+0x172>
- 1d8: c018081b addiw a6,a6,-1023
- 1dc: ec22 sd s0,24(sp)
- 1de: 02081313 slli t1,a6,0x20
- 1e2: 66034d63 bltz t1,85c <stbsp__real_to_str+0x6b4>
- 1e6: 4d100313 li t1,1233
- 1ea: 0303033b mulw t1,t1,a6
- 1ee: 4849 li a6,18
- 1f0: 40c3531b sraiw t1,t1,0xc
- 1f4: 0013039b addiw t2,t1,1
- 1f8: 4078083b subw a6,a6,t2
- 1fc: 4359 li t1,22
- 1fe: 17036163 bltu t1,a6,360 <stbsp__real_to_str+0x1b8>
- 202: 00005317 auipc t1,0x5
- 206: 12630313 addi t1,t1,294 # 5328 <stbsp__bot>
- 20a: 080e slli a6,a6,0x3
- 20c: 981a add a6,a6,t1
- 20e: 00083e03 ld t3,0(a6)
- 212: 00083607 fld fa2,0(a6)
- 216: f20887d3 fmv.d.x fa5,a7
- 21a: f8000837 lui a6,0xf8000
- 21e: 01187333 and t1,a6,a7
- 222: 01c87833 and a6,a6,t3
- 226: 12f676d3 fmul.d fa3,fa2,fa5
- 22a: f20807d3 fmv.d.x fa5,a6
- 22e: f2030753 fmv.d.x fa4,t1
- 232: f20305d3 fmv.d.x fa1,t1
- 236: 0af67653 fsub.d fa2,fa2,fa5
- 23a: f20887d3 fmv.d.x fa5,a7
- 23e: 0ae7f753 fsub.d fa4,fa5,fa4
- 242: f20807d3 fmv.d.x fa5,a6
- 246: 6ab7f7c7 fmsub.d fa5,fa5,fa1,fa3
- 24a: 7ab677c3 fmadd.d fa5,fa2,fa1,fa5
- 24e: f20805d3 fmv.d.x fa1,a6
- 252: 7ab777c3 fmadd.d fa5,fa4,fa1,fa5
- 256: 7ac77743 fmadd.d fa4,fa4,fa2,fa5
- 25a: 02d777d3 fadd.d fa5,fa4,fa3
- 25e: 3782e837 lui a6,0x3782e
- 262: acf80813 addi a6,a6,-1329 # 3782dacf <_ZSt4cerr+0x37826317>
- 266: 0832 slli a6,a6,0xc
- 268: 9d980813 addi a6,a6,-1575
- 26c: 084a slli a6,a6,0x12
- 26e: 187d addi a6,a6,-1
- 270: c22798d3 fcvt.l.d a7,fa5,rtz
- 274: 0ad7f6d3 fsub.d fa3,fa5,fa3
- 278: 00070e1b sext.w t3,a4
- 27c: d228f653 fcvt.d.l fa2,a7
- 280: 0ac7f5d3 fsub.d fa1,fa5,fa2
- 284: 0ad77753 fsub.d fa4,fa4,fa3
- 288: 0af5f6d3 fsub.d fa3,fa1,fa5
- 28c: 0ad5f553 fsub.d fa0,fa1,fa3
- 290: 02d67653 fadd.d fa2,fa2,fa3
- 294: 0aa7f7d3 fsub.d fa5,fa5,fa0
- 298: 0ac7f7d3 fsub.d fa5,fa5,fa2
- 29c: 02b7f7d3 fadd.d fa5,fa5,fa1
- 2a0: 02e7f7d3 fadd.d fa5,fa5,fa4
- 2a4: c2279fd3 fcvt.l.d t6,fa5,rtz
- 2a8: 9fc6 add t6,t6,a7
- 2aa: 19f87063 bgeu a6,t6,42a <stbsp__real_to_str+0x282>
- 2ae: 2385 addiw t2,t2,1
- 2b0: 300e4363 bltz t3,5b6 <stbsp__real_to_str+0x40e>
- 2b4: 00e3833b addw t1,t2,a4
- 2b8: 475d li a4,23
- 2ba: 30677663 bgeu a4,t1,5c6 <stbsp__real_to_str+0x41e>
- 2be: 577d li a4,-1
- 2c0: 9301 srli a4,a4,0x20
- 2c2: 43f75863 bge a4,t6,6f2 <stbsp__real_to_str+0x54a>
- 2c6: 07d00313 li t1,125
- 2ca: 877e mv a4,t6
- 2cc: 4e01 li t3,0
- 2ce: 3e800813 li a6,1000
- 2d2: 130e slli t1,t1,0x23
- 2d4: a039 j 2e2 <stbsp__real_to_str+0x13a>
- 2d6: 030747b3 div a5,a4,a6
- 2da: 4e05 li t3,1
- 2dc: 40674c63 blt a4,t1,6f4 <stbsp__real_to_str+0x54c>
- 2e0: 873e mv a4,a5
- 2e2: 030768b3 rem a7,a4,a6
- 2e6: fe0888e3 beqz a7,2d6 <stbsp__real_to_str+0x12e>
- 2ea: 400e0163 beqz t3,6ec <stbsp__real_to_str+0x544>
- 2ee: 8fbe mv t6,a5
- 2f0: 05f5e7b7 lui a5,0x5f5e
- 2f4: 0ff78793 addi a5,a5,255 # 5f5e0ff <_ZSt4cerr+0x5f56947>
- 2f8: 04060413 addi s0,a2,64
- 2fc: 03860613 addi a2,a2,56
- 300: 15f7c863 blt a5,t6,450 <stbsp__real_to_str+0x2a8>
- 304: 000f871b sext.w a4,t6
- 308: 20070463 beqz a4,510 <stbsp__real_to_str+0x368>
- 30c: 4f01 li t5,0
- 30e: 4f81 li t6,0
- 310: 00006e97 auipc t4,0x6
- 314: 5b0e8e93 addi t4,t4,1456 # 68c0 <stbsp__digitpair>
- 318: aaa9 j 472 <stbsp__real_to_str+0x2ca>
- 31a: 0306 slli t1,t1,0x1
- 31c: 3e030e63 beqz t1,718 <stbsp__real_to_str+0x570>
- 320: 4305 li t1,1
- 322: ec22 sd s0,24(sp)
- 324: 00ce9e13 slli t3,t4,0xc
- 328: 134e slli t1,t1,0x33
- 32a: 520e4063 bltz t3,84a <stbsp__real_to_str+0x6a2>
- 32e: 40135313 srai t1,t1,0x1
- 332: 01d37e33 and t3,t1,t4
- 336: 8f42 mv t5,a6
- 338: 387d addiw a6,a6,-1
- 33a: fe0e0ae3 beqz t3,32e <stbsp__real_to_str+0x186>
- 33e: 26900313 li t1,617
- 342: c00f081b addiw a6,t5,-1024
- 346: 0268083b mulw a6,a6,t1
- 34a: 41f8531b sraiw t1,a6,0x1f
- 34e: 0153531b srliw t1,t1,0x15
- 352: 0103033b addw t1,t1,a6
- 356: 40b3539b sraiw t2,t1,0xb
- 35a: 4849 li a6,18
- 35c: 4078083b subw a6,a6,t2
- 360: 41f8531b sraiw t1,a6,0x1f
- 364: 00684eb3 xor t4,a6,t1
- 368: 406e8f3b subw t5,t4,t1
- 36c: 2c900313 li t1,713
- 370: 03e3033b mulw t1,t1,t5
- 374: 4e35 li t3,13
- 376: 8efa mv t4,t5
- 378: 40e35f9b sraiw t6,t1,0xe
- 37c: 837e mv t1,t6
- 37e: 23fe4363 blt t3,t6,5a4 <stbsp__real_to_str+0x3fc>
- 382: 5e25 li t3,-23
- 384: 026e0e3b mulw t3,t3,t1
- 388: 01de0ebb addw t4,t3,t4
- 38c: 22084f63 bltz a6,5ca <stbsp__real_to_str+0x422>
- 390: f2000753 fmv.d.x fa4,zero
- 394: 00005e17 auipc t3,0x5
- 398: f94e0e13 addi t3,t3,-108 # 5328 <stbsp__bot>
- 39c: 380e9e63 bnez t4,738 <stbsp__real_to_str+0x590>
- 3a0: f20887d3 fmv.d.x fa5,a7
- 3a4: fff30f1b addiw t5,t1,-1
- 3a8: 0f0e slli t5,t5,0x3
- 3aa: 02f777d3 fadd.d fa5,fa4,fa5
- 3ae: 030e slli t1,t1,0x3
- 3b0: 9f72 add t5,t5,t3
- 3b2: 9e1a add t3,t3,t1
- 3b4: 2e0e3e03 ld t3,736(t3)
- 3b8: 2e8f3587 fld fa1,744(t5)
- 3bc: f8000837 lui a6,0xf8000
- 3c0: e2078ed3 fmv.x.d t4,fa5
- 3c4: 12b7f6d3 fmul.d fa3,fa5,fa1
- 3c8: f2088653 fmv.d.x fa2,a7
- 3cc: 01d87333 and t1,a6,t4
- 3d0: 01c87833 and a6,a6,t3
- 3d4: f20807d3 fmv.d.x fa5,a6
- 3d8: f2030053 fmv.d.x ft0,t1
- 3dc: 0af5f553 fsub.d fa0,fa1,fa5
- 3e0: f20e87d3 fmv.d.x fa5,t4
- 3e4: 0ac7f0d3 fsub.d ft1,fa5,fa2
- 3e8: f20807d3 fmv.d.x fa5,a6
- 3ec: f2030653 fmv.d.x fa2,t1
- 3f0: 6ac7f647 fmsub.d fa2,fa5,fa2,fa3
- 3f4: f20e87d3 fmv.d.x fa5,t4
- 3f8: 0a177753 fsub.d fa4,fa4,ft1
- 3fc: f20300d3 fmv.d.x ft1,t1
- 400: 0a07f7d3 fsub.d fa5,fa5,ft0
- 404: 350f3007 fld ft0,848(t5)
- 408: 62157643 fmadd.d fa2,fa0,ft1,fa2
- 40c: 12b77753 fmul.d fa4,fa4,fa1
- 410: f20805d3 fmv.d.x fa1,a6
- 414: 62b7f643 fmadd.d fa2,fa5,fa1,fa2
- 418: f20e85d3 fmv.d.x fa1,t4
- 41c: 7205f743 fmadd.d fa4,fa1,ft0,fa4
- 420: 62a7f7c3 fmadd.d fa5,fa5,fa0,fa2
- 424: 02e7f753 fadd.d fa4,fa5,fa4
- 428: bd0d j 25a <stbsp__real_to_str+0xb2>
- 42a: 00e3833b addw t1,t2,a4
- 42e: 2a0e4663 bltz t3,6da <stbsp__real_to_str+0x532>
- 432: 475d li a4,23
- 434: 10677663 bgeu a4,t1,540 <stbsp__real_to_str+0x398>
- 438: e80f93e3 bnez t6,2be <stbsp__real_to_str+0x116>
- 43c: 05f5e7b7 lui a5,0x5f5e
- 440: 0ff78793 addi a5,a5,255 # 5f5e0ff <_ZSt4cerr+0x5f56947>
- 444: 04060413 addi s0,a2,64
- 448: 03860613 addi a2,a2,56
- 44c: ebf7dce3 bge a5,t6,304 <stbsp__real_to_str+0x15c>
- 450: 4f01 li t5,0
- 452: 00006e97 auipc t4,0x6
- 456: 46ee8e93 addi t4,t4,1134 # 68c0 <stbsp__digitpair>
- 45a: 05f5e7b7 lui a5,0x5f5e
- 45e: 10078793 addi a5,a5,256 # 5f5e100 <_ZSt4cerr+0x5f56948>
- 462: 02ffe833 rem a6,t6,a5
- 466: 02ffcfb3 div t6,t6,a5
- 46a: 0008071b sext.w a4,a6
- 46e: 0a080463 beqz a6,516 <stbsp__real_to_str+0x36e>
- 472: 8822 mv a6,s0
- 474: 06400893 li a7,100
- 478: 06300e13 li t3,99
- 47c: 1879 addi a6,a6,-2 # fffffffff7fffffe <_ZSt4cerr+0xfffffffff7ff8846>
- 47e: 0007031b sext.w t1,a4
- 482: 031777bb remuw a5,a4,a7
- 486: 2785 addiw a5,a5,1
- 488: 0017979b slliw a5,a5,0x1
- 48c: 1782 slli a5,a5,0x20
- 48e: 9381 srli a5,a5,0x20
- 490: 97f6 add a5,a5,t4
- 492: 0007d783 lhu a5,0(a5)
- 496: 0317573b divuw a4,a4,a7
- 49a: 00f81023 sh a5,0(a6)
- 49e: fc6e6fe3 bltu t3,t1,47c <stbsp__real_to_str+0x2d4>
- 4a2: 008f0f3b addw t5,t5,s0
- 4a6: 410f0f3b subw t5,t5,a6
- 4aa: 020f8f63 beqz t6,4e8 <stbsp__real_to_str+0x340>
- 4ae: 87c2 mv a5,a6
- 4b0: 03000713 li a4,48
- 4b4: 04c80c63 beq a6,a2,50c <stbsp__real_to_str+0x364>
- 4b8: 17fd addi a5,a5,-1
- 4ba: 00e78023 sb a4,0(a5)
- 4be: fec79de3 bne a5,a2,4b8 <stbsp__real_to_str+0x310>
- 4c2: 408807b3 sub a5,a6,s0
- 4c6: 00ff07bb addw a5,t5,a5
- 4ca: 1461 addi s0,s0,-8
- 4cc: 00878f1b addiw t5,a5,8
- 4d0: 05f5e7b7 lui a5,0x5f5e
- 4d4: 0ff78793 addi a5,a5,255 # 5f5e0ff <_ZSt4cerr+0x5f56947>
- 4d8: ff840613 addi a2,s0,-8
- 4dc: f7f7cfe3 blt a5,t6,45a <stbsp__real_to_str+0x2b2>
- 4e0: 000f871b sext.w a4,t6
- 4e4: 4f81 li t6,0
- 4e6: b771 j 472 <stbsp__real_to_str+0x2ca>
- 4e8: 020f0563 beqz t5,512 <stbsp__real_to_str+0x36a>
- 4ec: 00084703 lbu a4,0(a6)
- 4f0: 03000793 li a5,48
- 4f4: 22f70f63 beq a4,a5,732 <stbsp__real_to_str+0x58a>
- 4f8: 2f01 sext.w t5,t5
- 4fa: 0076a023 sw t2,0(a3)
- 4fe: 6462 ld s0,24(sp)
- 500: 0102b023 sd a6,0(t0)
- 504: 01e5a023 sw t5,0(a1)
- 508: 6105 addi sp,sp,32
- 50a: 8082 ret
- 50c: 8442 mv s0,a6
- 50e: b7c9 j 4d0 <stbsp__real_to_str+0x328>
- 510: 8822 mv a6,s0
- 512: 4f01 li t5,0
- 514: b7dd j 4fa <stbsp__real_to_str+0x352>
- 516: 8822 mv a6,s0
- 518: bf59 j 4ae <stbsp__real_to_str+0x306>
- 51a: 0eb2 slli t4,t4,0xc
- 51c: 00005797 auipc a5,0x5
- 520: adc78793 addi a5,a5,-1316 # 4ff8 <_GLOBAL__sub_I__ZSt3cin+0x4a>
- 524: 000e8663 beqz t4,530 <stbsp__real_to_str+0x388>
- 528: 00005797 auipc a5,0x5
- 52c: ac878793 addi a5,a5,-1336 # 4ff0 <_GLOBAL__sub_I__ZSt3cin+0x42>
- 530: 00f2b023 sd a5,0(t0)
- 534: 679d lui a5,0x7
- 536: c29c sw a5,0(a3)
- 538: 4f0d li t5,3
- 53a: 01e5a023 sw t5,0(a1)
- 53e: 8082 ret
- 540: 3b9ad737 lui a4,0x3b9ad
- 544: 9ff70713 addi a4,a4,-1537 # 3b9ac9ff <_ZSt4cerr+0x3b9a5247>
- 548: 07f76f63 bltu a4,t6,5c6 <stbsp__real_to_str+0x41e>
- 54c: 4805 li a6,1
- 54e: 02081713 slli a4,a6,0x20
- 552: 01d75893 srli a7,a4,0x1d
- 556: 00005717 auipc a4,0x5
- 55a: 18a70713 addi a4,a4,394 # 56e0 <stbsp__powten>
- 55e: 9746 add a4,a4,a7
- 560: 4e51 li t3,20
- 562: a021 j 56a <stbsp__real_to_str+0x3c2>
- 564: 2805 addiw a6,a6,1
- 566: edc809e3 beq a6,t3,438 <stbsp__real_to_str+0x290>
- 56a: 00073883 ld a7,0(a4)
- 56e: 0721 addi a4,a4,8
- 570: ff1ffae3 bgeu t6,a7,564 <stbsp__real_to_str+0x3bc>
- 574: ed0372e3 bgeu t1,a6,438 <stbsp__real_to_str+0x290>
- 578: 4068083b subw a6,a6,t1
- 57c: 475d li a4,23
- 57e: eb076de3 bltu a4,a6,438 <stbsp__real_to_str+0x290>
- 582: 080e slli a6,a6,0x3
- 584: 00005717 auipc a4,0x5
- 588: da470713 addi a4,a4,-604 # 5328 <stbsp__bot>
- 58c: 9742 add a4,a4,a6
- 58e: 3b873803 ld a6,952(a4)
- 592: 00185713 srli a4,a6,0x1
- 596: 977e add a4,a4,t6
- 598: 01176363 bltu a4,a7,59e <stbsp__real_to_str+0x3f6>
- 59c: 2385 addiw t2,t2,1
- 59e: 03075fb3 divu t6,a4,a6
- 5a2: bd59 j 438 <stbsp__real_to_str+0x290>
- 5a4: 4335 li t1,13
- 5a6: 5e25 li t3,-23
- 5a8: 026e0e3b mulw t3,t3,t1
- 5ac: 01de0ebb addw t4,t3,t4
- 5b0: de0850e3 bgez a6,390 <stbsp__real_to_str+0x1e8>
- 5b4: a819 j 5ca <stbsp__real_to_str+0x422>
- 5b6: 02571313 slli t1,a4,0x25
- 5ba: 02535313 srli t1,t1,0x25
- 5be: 0305 addi t1,t1,1
- 5c0: 475d li a4,23
- 5c2: ce676ee3 bltu a4,t1,2be <stbsp__real_to_str+0x116>
- 5c6: 4829 li a6,10
- 5c8: b759 j 54e <stbsp__real_to_str+0x3a6>
- 5ca: 260e8663 beqz t4,836 <stbsp__real_to_str+0x68e>
- 5ce: 00231e13 slli t3,t1,0x2
- 5d2: 41c30e33 sub t3,t1,t3
- 5d6: 0e0e slli t3,t3,0x3
- 5d8: 9e1a add t3,t3,t1
- 5da: fffe881b addiw a6,t4,-1
- 5de: 9e7a add t3,t3,t5
- 5e0: 00005e97 auipc t4,0x5
- 5e4: d48e8e93 addi t4,t4,-696 # 5328 <stbsp__bot>
- 5e8: 0e0e slli t3,t3,0x3
- 5ea: 080e slli a6,a6,0x3
- 5ec: 9876 add a6,a6,t4
- 5ee: 9ef2 add t4,t4,t3
- 5f0: 0b883607 fld fa2,184(a6)
- 5f4: f20887d3 fmv.d.x fa5,a7
- 5f8: 0b0ebf03 ld t5,176(t4)
- 5fc: f8000e37 lui t3,0xf8000
- 600: 011e7eb3 and t4,t3,a7
- 604: 12f676d3 fmul.d fa3,fa2,fa5
- 608: 01ee7e33 and t3,t3,t5
- 60c: f20e07d3 fmv.d.x fa5,t3
- 610: f20e0753 fmv.d.x fa4,t3
- 614: f20e8553 fmv.d.x fa0,t4
- 618: 0af67653 fsub.d fa2,fa2,fa5
- 61c: f20e87d3 fmv.d.x fa5,t4
- 620: f20e85d3 fmv.d.x fa1,t4
- 624: 6ae7f7c7 fmsub.d fa5,fa5,fa4,fa3
- 628: f2088753 fmv.d.x fa4,a7
- 62c: 0ab775d3 fsub.d fa1,fa4,fa1
- 630: 16883707 fld fa4,360(a6)
- 634: 7aa677c3 fmadd.d fa5,fa2,fa0,fa5
- 638: f20e0553 fmv.d.x fa0,t3
- 63c: 7aa5f7c3 fmadd.d fa5,fa1,fa0,fa5
- 640: 7ac5f5c3 fmadd.d fa1,fa1,fa2,fa5
- 644: f20887d3 fmv.d.x fa5,a7
- 648: 5af77743 fmadd.d fa4,fa4,fa5,fa1
- 64c: c00f87e3 beqz t6,25a <stbsp__real_to_str+0xb2>
- 650: 02d777d3 fadd.d fa5,fa4,fa3
- 654: fff3089b addiw a7,t1,-1
- 658: 00005817 auipc a6,0x5
- 65c: cd080813 addi a6,a6,-816 # 5328 <stbsp__bot>
- 660: 030e slli t1,t1,0x3
- 662: 088e slli a7,a7,0x3
- 664: 98c2 add a7,a7,a6
- 666: 981a add a6,a6,t1
- 668: e2078e53 fmv.x.d t3,fa5
- 66c: 21083e83 ld t4,528(a6)
- 670: f8000837 lui a6,0xf8000
- 674: 2188b507 fld fa0,536(a7)
- 678: 01c87333 and t1,a6,t3
- 67c: 01d87833 and a6,a6,t4
- 680: f2080653 fmv.d.x fa2,a6
- 684: 12f577d3 fmul.d fa5,fa0,fa5
- 688: 2808b587 fld fa1,640(a7)
- 68c: 0ac57053 fsub.d ft0,fa0,fa2
- 690: f20e0653 fmv.d.x fa2,t3
- 694: 0ad67153 fsub.d ft2,fa2,fa3
- 698: f20806d3 fmv.d.x fa3,a6
- 69c: f2030653 fmv.d.x fa2,t1
- 6a0: 7ac6f0c7 fmsub.d ft1,fa3,fa2,fa5
- 6a4: f20e06d3 fmv.d.x fa3,t3
- 6a8: 0ac6f653 fsub.d fa2,fa3,fa2
- 6ac: 22f786d3 fmv.d fa3,fa5
- 6b0: 0a2777d3 fsub.d fa5,fa4,ft2
- 6b4: f2030753 fmv.d.x fa4,t1
- 6b8: 0ae07743 fmadd.d fa4,ft0,fa4,ft1
- 6bc: 12a7f7d3 fmul.d fa5,fa5,fa0
- 6c0: f2080553 fmv.d.x fa0,a6
- 6c4: 72a67743 fmadd.d fa4,fa2,fa0,fa4
- 6c8: f20e0553 fmv.d.x fa0,t3
- 6cc: 7aa5f7c3 fmadd.d fa5,fa1,fa0,fa5
- 6d0: 72067643 fmadd.d fa2,fa2,ft0,fa4
- 6d4: 02f67753 fadd.d fa4,fa2,fa5
- 6d8: b649 j 25a <stbsp__real_to_str+0xb2>
- 6da: 02571313 slli t1,a4,0x25
- 6de: 02535313 srli t1,t1,0x25
- 6e2: 0305 addi t1,t1,1
- 6e4: 475d li a4,23
- 6e6: d46769e3 bltu a4,t1,438 <stbsp__real_to_str+0x290>
- 6ea: bd99 j 540 <stbsp__real_to_str+0x398>
- 6ec: 87fe mv a5,t6
- 6ee: 8fbe mv t6,a5
- 6f0: b101 j 2f0 <stbsp__real_to_str+0x148>
- 6f2: 87fe mv a5,t6
- 6f4: 3e800713 li a4,1000
- 6f8: 02e7f73b remuw a4,a5,a4
- 6fc: 2781 sext.w a5,a5
- 6fe: eb01 bnez a4,70e <stbsp__real_to_str+0x566>
- 700: 3e800813 li a6,1000
- 704: 0307d7bb divuw a5,a5,a6
- 708: 0307f73b remuw a4,a5,a6
- 70c: df65 beqz a4,704 <stbsp__real_to_str+0x55c>
- 70e: 02079f93 slli t6,a5,0x20
- 712: 020fdf93 srli t6,t6,0x20
- 716: b31d j 43c <stbsp__real_to_str+0x294>
- 718: 4785 li a5,1
- 71a: c29c sw a5,0(a3)
- 71c: 00c2b023 sd a2,0(t0)
- 720: 03000793 li a5,48
- 724: 00f60023 sb a5,0(a2)
- 728: 4f05 li t5,1
- 72a: 01e5a023 sw t5,0(a1)
- 72e: 6105 addi sp,sp,32
- 730: 8082 ret
- 732: 0805 addi a6,a6,1 # fffffffff8000001 <_ZSt4cerr+0xfffffffff7ff8849>
- 734: 3f7d addiw t5,t5,-1
- 736: b3d1 j 4fa <stbsp__real_to_str+0x352>
- 738: e826 sd s1,16(sp)
- 73a: e44a sd s2,8(sp)
- 73c: 4859 li a6,22
- 73e: 8976 mv s2,t4
- 740: 11d84363 blt a6,t4,846 <stbsp__real_to_str+0x69e>
- 744: 0009049b sext.w s1,s2
- 748: 00005e17 auipc t3,0x5
- 74c: be0e0e13 addi t3,t3,-1056 # 5328 <stbsp__bot>
- 750: 00349813 slli a6,s1,0x3
- 754: 9872 add a6,a6,t3
- 756: 00083687 fld fa3,0(a6)
- 75a: 00083803 ld a6,0(a6)
- 75e: f20887d3 fmv.d.x fa5,a7
- 762: f8000fb7 lui t6,0xf8000
- 766: 010ff833 and a6,t6,a6
- 76a: 12f6f553 fmul.d fa0,fa3,fa5
- 76e: f20807d3 fmv.d.x fa5,a6
- 772: 011ff433 and s0,t6,a7
- 776: f2040753 fmv.d.x fa4,s0
- 77a: 0af6f6d3 fsub.d fa3,fa3,fa5
- 77e: f20887d3 fmv.d.x fa5,a7
- 782: f2080653 fmv.d.x fa2,a6
- 786: 412e8ebb subw t4,t4,s2
- 78a: 0ae7f753 fsub.d fa4,fa5,fa4
- 78e: f20407d3 fmv.d.x fa5,s0
- 792: e20508d3 fmv.x.d a7,fa0
- 796: 52c7f7c7 fmsub.d fa5,fa5,fa2,fa0
- 79a: f2040653 fmv.d.x fa2,s0
- 79e: 7ac6f7c3 fmadd.d fa5,fa3,fa2,fa5
- 7a2: f2080653 fmv.d.x fa2,a6
- 7a6: 7ac777c3 fmadd.d fa5,fa4,fa2,fa5
- 7aa: 7ad77743 fmadd.d fa4,fa4,fa3,fa5
- 7ae: 080e8963 beqz t4,840 <stbsp__real_to_str+0x698>
- 7b2: 02e577d3 fadd.d fa5,fa0,fa4
- 7b6: 0e8e slli t4,t4,0x3
- 7b8: 01de0833 add a6,t3,t4
- 7bc: 00083587 fld fa1,0(a6)
- 7c0: 00231893 slli a7,t1,0x2
- 7c4: 411308b3 sub a7,t1,a7
- 7c8: 00389813 slli a6,a7,0x3
- 7cc: e2078453 fmv.x.d s0,fa5
- 7d0: 12f5f7d3 fmul.d fa5,fa1,fa5
- 7d4: 981a add a6,a6,t1
- 7d6: 987a add a6,a6,t5
- 7d8: 40980833 sub a6,a6,s1
- 7dc: 080e slli a6,a6,0x3
- 7de: 9872 add a6,a6,t3
- 7e0: 00083e83 ld t4,0(a6)
- 7e4: 008ff833 and a6,t6,s0
- 7e8: e20788d3 fmv.x.d a7,fa5
- 7ec: f20806d3 fmv.d.x fa3,a6
- 7f0: f20407d3 fmv.d.x fa5,s0
- 7f4: 01dfffb3 and t6,t6,t4
- 7f8: f20880d3 fmv.d.x ft1,a7
- 7fc: 0ad7f653 fsub.d fa2,fa5,fa3
- 800: f20f87d3 fmv.d.x fa5,t6
- 804: 64c2 ld s1,16(sp)
- 806: 6922 ld s2,8(sp)
- 808: 0af5f053 fsub.d ft0,fa1,fa5
- 80c: 0ad7f6c7 fmsub.d fa3,fa5,fa3,ft1
- 810: f20407d3 fmv.d.x fa5,s0
- 814: 0aa7f7d3 fsub.d fa5,fa5,fa0
- 818: f2080553 fmv.d.x fa0,a6
- 81c: 6aa076c3 fmadd.d fa3,ft0,fa0,fa3
- 820: 0af77753 fsub.d fa4,fa4,fa5
- 824: f20f87d3 fmv.d.x fa5,t6
- 828: 6af677c3 fmadd.d fa5,fa2,fa5,fa3
- 82c: 7a067643 fmadd.d fa2,fa2,ft0,fa5
- 830: 62e5f743 fmadd.d fa4,fa1,fa4,fa2
- 834: b6b5 j 3a0 <stbsp__real_to_str+0x1f8>
- 836: f20886d3 fmv.d.x fa3,a7
- 83a: f2000753 fmv.d.x fa4,zero
- 83e: b539 j 64c <stbsp__real_to_str+0x4a4>
- 840: 64c2 ld s1,16(sp)
- 842: 6922 ld s2,8(sp)
- 844: beb1 j 3a0 <stbsp__real_to_str+0x1f8>
- 846: 4959 li s2,22
- 848: bdf5 j 744 <stbsp__real_to_str+0x59c>
- 84a: e826 sd s1,16(sp)
- 84c: e44a sd s2,8(sp)
- 84e: ecc00393 li t2,-308
- 852: 4eed li t4,27
- 854: 4335 li t1,13
- 856: 14600f13 li t5,326
- 85a: b5cd j 73c <stbsp__real_to_str+0x594>
- 85c: 26900313 li t1,617
- 860: 0303083b mulw a6,t1,a6
- 864: 41f8531b sraiw t1,a6,0x1f
- 868: 0153531b srliw t1,t1,0x15
- 86c: 0103033b addw t1,t1,a6
- 870: 40b3539b sraiw t2,t1,0xb
- 874: 4849 li a6,18
- 876: 4078083b subw a6,a6,t2
- 87a: b249 j 1fc <stbsp__real_to_str+0x54>
-
-000000000000087c <_in_char.part.0>:
-static int _in_char(_InContext *ctx)
- 87c: 87aa mv a5,a0
- if (ctx->fd == -1)
- 87e: 4508 lw a0,8(a0)
- 880: 577d li a4,-1
- 882: 00e51d63 bne a0,a4,89c <_in_char.part.0+0x20>
- if (ctx->buf[ctx->pos] == '\0')
- 886: 6b94 ld a3,16(a5)
- 888: 6398 ld a4,0(a5)
- 88a: 9736 add a4,a4,a3
- 88c: 00074603 lbu a2,0(a4)
- 890: c60d beqz a2,8ba <_in_char.part.0+0x3e>
- return (unsigned char)ctx->buf[ctx->pos++];
- 892: 0685 addi a3,a3,1
- 894: eb94 sd a3,16(a5)
- 896: 00074503 lbu a0,0(a4)
- 89a: 8082 ret
-static int _in_char(_InContext *ctx)
- 89c: 1101 addi sp,sp,-32
- if (read(ctx->fd, &c, 1) == 1)
- 89e: 4605 li a2,1
- 8a0: 00f10593 addi a1,sp,15
-static int _in_char(_InContext *ctx)
- 8a4: ec06 sd ra,24(sp)
- if (read(ctx->fd, &c, 1) == 1)
- 8a6: 801ff0ef jal a6 <read>
- 8aa: 4785 li a5,1
- 8ac: 00f51963 bne a0,a5,8be <_in_char.part.0+0x42>
- return (unsigned char)c;
- 8b0: 00f14503 lbu a0,15(sp)
-}
- 8b4: 60e2 ld ra,24(sp)
- 8b6: 6105 addi sp,sp,32
- 8b8: 8082 ret
- return -1;
- 8ba: 557d li a0,-1
-}
- 8bc: 8082 ret
- return -1;
- 8be: 557d li a0,-1
- 8c0: bfd5 j 8b4 <_in_char.part.0+0x38>
-
-00000000000008c2 <_skip_space>:
-{
- 8c2: 7139 addi sp,sp,-64
- 8c4: f822 sd s0,48(sp)
- 8c6: f426 sd s1,40(sp)
- 8c8: f04a sd s2,32(sp)
- 8ca: ec4e sd s3,24(sp)
- 8cc: e852 sd s4,16(sp)
- 8ce: fc06 sd ra,56(sp)
- 8d0: 842a mv s0,a0
- ctx->ungotten = -1;
- 8d2: 54fd li s1,-1
- if (read(ctx->fd, &c, 1) == 1)
- 8d4: 00f10a13 addi s4,sp,15
- return c == ' ' || c == '\t' || c == '\n' || c == '\v' || c == '\f' || c == '\r';
- 8d8: 02000913 li s2,32
- 8dc: 4991 li s3,4
- if (ctx->ungotten >= 0)
- 8de: 4c1c lw a5,24(s0)
- 8e0: 0407d163 bgez a5,922 <_skip_space+0x60>
- if (ctx->fd == -1)
- 8e4: 4408 lw a0,8(s0)
- if (read(ctx->fd, &c, 1) == 1)
- 8e6: 4605 li a2,1
- 8e8: 85d2 mv a1,s4
- if (ctx->fd == -1)
- 8ea: 02951e63 bne a0,s1,926 <_skip_space+0x64>
- if (ctx->buf[ctx->pos] == '\0')
- 8ee: 6818 ld a4,16(s0)
- 8f0: 601c ld a5,0(s0)
- return (unsigned char)ctx->buf[ctx->pos++];
- 8f2: 00170693 addi a3,a4,1
- if (ctx->buf[ctx->pos] == '\0')
- 8f6: 97ba add a5,a5,a4
- 8f8: 0007c703 lbu a4,0(a5) # 7000 <_stdout+0x220>
- 8fc: cb19 beqz a4,912 <_skip_space+0x50>
- return (unsigned char)ctx->buf[ctx->pos++];
- 8fe: e814 sd a3,16(s0)
- 900: 0007c783 lbu a5,0(a5)
- return c == ' ' || c == '\t' || c == '\n' || c == '\v' || c == '\f' || c == '\r';
- 904: ff77871b addiw a4,a5,-9
- 908: fd278be3 beq a5,s2,8de <_skip_space+0x1c>
- 90c: fce9f9e3 bgeu s3,a4,8de <_skip_space+0x1c>
- ctx->ungotten = c;
- 910: cc1c sw a5,24(s0)
-}
- 912: 70e2 ld ra,56(sp)
- 914: 7442 ld s0,48(sp)
- 916: 74a2 ld s1,40(sp)
- 918: 7902 ld s2,32(sp)
- 91a: 69e2 ld s3,24(sp)
- 91c: 6a42 ld s4,16(sp)
- 91e: 6121 addi sp,sp,64
- 920: 8082 ret
- ctx->ungotten = -1;
- 922: cc04 sw s1,24(s0)
- return c;
- 924: b7c5 j 904 <_skip_space+0x42>
- if (read(ctx->fd, &c, 1) == 1)
- 926: f80ff0ef jal a6 <read>
- 92a: 4785 li a5,1
- 92c: fef513e3 bne a0,a5,912 <_skip_space+0x50>
- return (unsigned char)c;
- 930: 00f14783 lbu a5,15(sp)
- 934: bfc1 j 904 <_skip_space+0x42>
-
-0000000000000936 <_vscanf_core.constprop.0>:
-static int _vscanf_core(_InContext *ctx, const char *format, va_list ap)
- 936: 7155 addi sp,sp,-208
- 938: e586 sd ra,200(sp)
- 93a: e95a sd s6,144(sp)
- while (*p)
- 93c: 0005c783 lbu a5,0(a1)
-static int _vscanf_core(_InContext *ctx, const char *format, va_list ap)
- 940: e432 sd a2,8(sp)
- while (*p)
- 942: 68078b63 beqz a5,fd8 <_vscanf_core.constprop.0+0x6a2>
- 946: e1a2 sd s0,192(sp)
- 948: fd26 sd s1,184(sp)
- 94a: f152 sd s4,160(sp)
- 94c: ed56 sd s5,152(sp)
- 94e: f4ee sd s11,104(sp)
- 950: 842e mv s0,a1
- 952: 8daa mv s11,a0
- int assigned = 0;
- 954: 4b01 li s6,0
- return c == ' ' || c == '\t' || c == '\n' || c == '\v' || c == '\f' || c == '\r';
- 956: 02000493 li s1,32
- 95a: 4a91 li s5,4
- if (*p != '%')
- 95c: 02500a13 li s4,37
- return c == ' ' || c == '\t' || c == '\n' || c == '\v' || c == '\f' || c == '\r';
- 960: 04978763 beq a5,s1,9ae <_vscanf_core.constprop.0+0x78>
- 964: ff77869b addiw a3,a5,-9
- 968: 0ff6f693 zext.b a3,a3
- 96c: 04daf163 bgeu s5,a3,9ae <_vscanf_core.constprop.0+0x78>
- if (*p != '%')
- 970: 07478d63 beq a5,s4,9ea <_vscanf_core.constprop.0+0xb4>
- _skip_space(ctx);
- 974: 856e mv a0,s11
- 976: f4dff0ef jal 8c2 <_skip_space>
- if (ctx->ungotten >= 0)
- 97a: 018da503 lw a0,24(s11)
- 97e: 04055a63 bgez a0,9d2 <_vscanf_core.constprop.0+0x9c>
- 982: 856e mv a0,s11
- 984: ef9ff0ef jal 87c <_in_char.part.0>
- if (c != *p)
- 988: 00044783 lbu a5,0(s0)
- 98c: 04a78a63 beq a5,a0,9e0 <_vscanf_core.constprop.0+0xaa>
- if (c != -1)
- 990: 57fd li a5,-1
- 992: 00f50463 beq a0,a5,99a <_vscanf_core.constprop.0+0x64>
- ctx->ungotten = c;
- 996: 00adac23 sw a0,24(s11)
- 99a: 640e ld s0,192(sp)
- 99c: 74ea ld s1,184(sp)
- 99e: 7a0a ld s4,160(sp)
- 9a0: 6aea ld s5,152(sp)
- 9a2: 7da6 ld s11,104(sp)
-}
- 9a4: 60ae ld ra,200(sp)
- 9a6: 855a mv a0,s6
- 9a8: 6b4a ld s6,144(sp)
- 9aa: 6169 addi sp,sp,208
- 9ac: 8082 ret
- _skip_space(ctx);
- 9ae: 856e mv a0,s11
- 9b0: f13ff0ef jal 8c2 <_skip_space>
- while (isspace(*p))
- 9b4: 00044783 lbu a5,0(s0)
- return c == ' ' || c == '\t' || c == '\n' || c == '\v' || c == '\f' || c == '\r';
- 9b8: 4611 li a2,4
- 9ba: ff77869b addiw a3,a5,-9
- 9be: 0ff6f693 zext.b a3,a3
- 9c2: 00978663 beq a5,s1,9ce <_vscanf_core.constprop.0+0x98>
- 9c6: 00d67463 bgeu a2,a3,9ce <_vscanf_core.constprop.0+0x98>
- while (*p)
- 9ca: fbd9 bnez a5,960 <_vscanf_core.constprop.0+0x2a>
- 9cc: b7f9 j 99a <_vscanf_core.constprop.0+0x64>
- p++;
- 9ce: 0405 addi s0,s0,1
- 9d0: b7d5 j 9b4 <_vscanf_core.constprop.0+0x7e>
- ctx->ungotten = -1;
- 9d2: 57fd li a5,-1
- 9d4: 00fdac23 sw a5,24(s11)
- if (c != *p)
- 9d8: 00044783 lbu a5,0(s0)
- 9dc: faa79ae3 bne a5,a0,990 <_vscanf_core.constprop.0+0x5a>
- while (*p)
- 9e0: 00144783 lbu a5,1(s0)
- p++;
- 9e4: 0405 addi s0,s0,1
- while (*p)
- 9e6: ffad bnez a5,960 <_vscanf_core.constprop.0+0x2a>
- 9e8: bf4d j 99a <_vscanf_core.constprop.0+0x64>
- 9ea: f94a sd s2,176(sp)
- 9ec: f54e sd s3,168(sp)
- 9ee: e55e sd s7,136(sp)
- 9f0: e162 sd s8,128(sp)
- if (*p == '*')
- 9f2: 00144583 lbu a1,1(s0)
- 9f6: 02a00793 li a5,42
- 9fa: 22f58d63 beq a1,a5,c34 <_vscanf_core.constprop.0+0x2fe>
- p++;
- 9fe: 0405 addi s0,s0,1
- int suppress = 0;
- a00: 4981 li s3,0
- while (*p >= '0' && *p <= '9')
- a02: fd05861b addiw a2,a1,-48
- a06: 0ff67693 zext.b a3,a2
- a0a: 47a5 li a5,9
- a0c: 36d7e763 bltu a5,a3,d7a <_vscanf_core.constprop.0+0x444>
- a10: 4781 li a5,0
- a12: 4825 li a6,9
- a14: a019 j a1a <_vscanf_core.constprop.0+0xe4>
- width = width * 10 + (*p - '0');
- a16: 0016979b slliw a5,a3,0x1
- while (*p >= '0' && *p <= '9')
- a1a: 00144583 lbu a1,1(s0)
- width = width * 10 + (*p - '0');
- a1e: 00f6093b addw s2,a2,a5
- a22: 0029169b slliw a3,s2,0x2
- while (*p >= '0' && *p <= '9')
- a26: fd05861b addiw a2,a1,-48
- a2a: 0ff67513 zext.b a0,a2
- width = width * 10 + (*p - '0');
- a2e: 012686bb addw a3,a3,s2
- p++;
- a32: 0405 addi s0,s0,1
- while (*p >= '0' && *p <= '9')
- a34: fea871e3 bgeu a6,a0,a16 <_vscanf_core.constprop.0+0xe0>
- if (*p == 'l')
- a38: 06c00693 li a3,108
- p++;
- a3c: 00140b93 addi s7,s0,1
- if (*p == 'l')
- a40: 1ed58f63 beq a1,a3,c3e <_vscanf_core.constprop.0+0x308>
- else if (*p == 'h')
- a44: 06800693 li a3,104
- a48: 2ad58863 beq a1,a3,cf8 <_vscanf_core.constprop.0+0x3c2>
- char spec = *p++;
- a4c: 00044c03 lbu s8,0(s0)
- a50: 8ba2 mv s7,s0
- int len_mod = 0;
- a52: ec02 sd zero,24(sp)
- char spec = *p++;
- a54: 06300693 li a3,99
- a58: 001b8413 addi s0,s7,1
- if (!spec)
- a5c: 2adc0863 beq s8,a3,d0c <_vscanf_core.constprop.0+0x3d6>
- a60: 1f86fc63 bgeu a3,s8,c58 <_vscanf_core.constprop.0+0x322>
- a64: f9cc069b addiw a3,s8,-100
- a68: 0ff6f693 zext.b a3,a3
- a6c: 4651 li a2,20
- a6e: 0cd66e63 bltu a2,a3,b4a <_vscanf_core.constprop.0+0x214>
- a72: 00120637 lui a2,0x120
- a76: 4585 li a1,1
- a78: 00d595b3 sll a1,a1,a3
- a7c: 02160613 addi a2,a2,33 # 120021 <_ZSt4cerr+0x118869>
- a80: 8e6d and a2,a2,a1
- a82: ee69 bnez a2,b5c <_vscanf_core.constprop.0+0x226>
- a84: 89b9 andi a1,a1,14
- a86: 1e059263 bnez a1,c6a <_vscanf_core.constprop.0+0x334>
- a8a: 463d li a2,15
- a8c: 0ac69f63 bne a3,a2,b4a <_vscanf_core.constprop.0+0x214>
- _skip_space(ctx);
- a90: 856e mv a0,s11
- a92: e31ff0ef jal 8c2 <_skip_space>
- char *buf = suppress ? NULL : va_arg(ap, char *);
- a96: ec02 sd zero,24(sp)
- a98: 00099763 bnez s3,aa6 <_vscanf_core.constprop.0+0x170>
- a9c: 67a2 ld a5,8(sp)
- a9e: 6398 ld a4,0(a5)
- aa0: 07a1 addi a5,a5,8
- aa2: e43e sd a5,8(sp)
- aa4: ec3a sd a4,24(sp)
- if (ctx->ungotten >= 0)
- aa6: 018da503 lw a0,24(s11)
- aaa: 2e055b63 bgez a0,da0 <_vscanf_core.constprop.0+0x46a>
- aae: 856e mv a0,s11
- ab0: dcdff0ef jal 87c <_in_char.part.0>
- while (c != -1 && !isspace(c))
- ab4: 56fd li a3,-1
- ab6: 6ad50363 beq a0,a3,115c <_vscanf_core.constprop.0+0x826>
- return c == ' ' || c == '\t' || c == '\n' || c == '\v' || c == '\f' || c == '\r';
- aba: 02000693 li a3,32
- abe: 3ed50963 beq a0,a3,eb0 <_vscanf_core.constprop.0+0x57a>
- ac2: 46a5 li a3,9
- ac4: 3ed50663 beq a0,a3,eb0 <_vscanf_core.constprop.0+0x57a>
- ac8: 46a9 li a3,10
- aca: 3ed50363 beq a0,a3,eb0 <_vscanf_core.constprop.0+0x57a>
- ace: 46ad li a3,11
- ad0: 3ed50063 beq a0,a3,eb0 <_vscanf_core.constprop.0+0x57a>
- ad4: 46b1 li a3,12
- ad6: 3cd50d63 beq a0,a3,eb0 <_vscanf_core.constprop.0+0x57a>
- ada: 46b5 li a3,13
- adc: 3cd50a63 beq a0,a3,eb0 <_vscanf_core.constprop.0+0x57a>
- ae0: 67e2 ld a5,24(sp)
- ae2: fce6 sd s9,120(sp)
- ae4: f8ea sd s10,112(sp)
- ae6: e83e sd a5,16(sp)
- ae8: 4d01 li s10,0
- while (c != -1 && !isspace(c))
- aea: 5c7d li s8,-1
- return c == ' ' || c == '\t' || c == '\n' || c == '\v' || c == '\f' || c == '\r';
- aec: 02000c93 li s9,32
- if (width > 0 && i >= width)
- af0: 01205463 blez s2,af8 <_vscanf_core.constprop.0+0x1c2>
- af4: 052d5563 bge s10,s2,b3e <_vscanf_core.constprop.0+0x208>
- if (!suppress)
- af8: 00099563 bnez s3,b02 <_vscanf_core.constprop.0+0x1cc>
- buf[i] = (char)c;
- afc: 67c2 ld a5,16(sp)
- afe: 00a78023 sb a0,0(a5)
- if (ctx->ungotten >= 0)
- b02: 018da503 lw a0,24(s11)
- i++;
- b06: 2d05 addiw s10,s10,1
- if (ctx->ungotten >= 0)
- b08: 30055963 bgez a0,e1a <_vscanf_core.constprop.0+0x4e4>
- b0c: 856e mv a0,s11
- b0e: d6fff0ef jal 87c <_in_char.part.0>
- while (c != -1 && !isspace(c))
- b12: 27850663 beq a0,s8,d7e <_vscanf_core.constprop.0+0x448>
- return c == ' ' || c == '\t' || c == '\n' || c == '\v' || c == '\f' || c == '\r';
- b16: 03950463 beq a0,s9,b3e <_vscanf_core.constprop.0+0x208>
- b1a: 47a5 li a5,9
- b1c: 02f50163 beq a0,a5,b3e <_vscanf_core.constprop.0+0x208>
- b20: 47a9 li a5,10
- b22: 00f50e63 beq a0,a5,b3e <_vscanf_core.constprop.0+0x208>
- b26: 47ad li a5,11
- b28: 00f50b63 beq a0,a5,b3e <_vscanf_core.constprop.0+0x208>
- b2c: 47b1 li a5,12
- b2e: 00f50863 beq a0,a5,b3e <_vscanf_core.constprop.0+0x208>
- b32: 67c2 ld a5,16(sp)
- b34: 0785 addi a5,a5,1
- b36: e83e sd a5,16(sp)
- b38: 47b5 li a5,13
- b3a: faf51be3 bne a0,a5,af0 <_vscanf_core.constprop.0+0x1ba>
- if (!suppress)
- b3e: 64098a63 beqz s3,1192 <_vscanf_core.constprop.0+0x85c>
- b42: 7ce6 ld s9,120(sp)
- b44: 7d46 ld s10,112(sp)
- ctx->ungotten = c;
- b46: 00adac23 sw a0,24(s11)
- while (*p)
- b4a: 001bc783 lbu a5,1(s7)
- b4e: 794a ld s2,176(sp)
- b50: 79aa ld s3,168(sp)
- b52: 6baa ld s7,136(sp)
- b54: 6c0a ld s8,128(sp)
- b56: e00795e3 bnez a5,960 <_vscanf_core.constprop.0+0x2a>
- b5a: b581 j 99a <_vscanf_core.constprop.0+0x64>
- _skip_space(ctx);
- b5c: 856e mv a0,s11
- b5e: f8ea sd s10,112(sp)
- b60: d63ff0ef jal 8c2 <_skip_space>
- if (ctx->ungotten >= 0)
- b64: 018da503 lw a0,24(s11)
- b68: 24055063 bgez a0,da8 <_vscanf_core.constprop.0+0x472>
- b6c: 856e mv a0,s11
- b6e: d0fff0ef jal 87c <_in_char.part.0>
- if (c == '-' || c == '+')
- b72: fd55069b addiw a3,a0,-43
- b76: 9af5 andi a3,a3,-3
- b78: 2681 sext.w a3,a3
- int i = 0, c = _in_char(ctx);
- b7a: 4d01 li s10,0
- if (c == '-' || c == '+')
- b7c: 3e068863 beqz a3,f6c <_vscanf_core.constprop.0+0x636>
- int base = (spec == 'x') ? 16 : (spec == 'i' ? 0 : 10);
- b80: 07800693 li a3,120
- b84: 4641 li a2,16
- b86: 00dc0863 beq s8,a3,b96 <_vscanf_core.constprop.0+0x260>
- b8a: 06900693 li a3,105
- b8e: 4629 li a2,10
- b90: 00dc1363 bne s8,a3,b96 <_vscanf_core.constprop.0+0x260>
- b94: 4601 li a2,0
- while (c != -1 && i < 63)
- b96: 56fd li a3,-1
- b98: 5cd50863 beq a0,a3,1168 <_vscanf_core.constprop.0+0x832>
- b9c: fce6 sd s9,120(sp)
- b9e: 02010893 addi a7,sp,32
- ba2: 01a88c33 add s8,a7,s10
- int hex = (base == 16 || base == 0) && ((c >= 'a' && c <= 'f') || (c >= 'A' && c <= 'F'));
- ba6: 4cc1 li s9,16
- int digit = (c >= '0' && c <= '9');
- ba8: fd05069b addiw a3,a0,-48
- bac: 0005031b sext.w t1,a0
- bb0: 00a6b593 sltiu a1,a3,10
- int hex = (base == 16 || base == 0) && ((c >= 'a' && c <= 'f') || (c >= 'A' && c <= 'F'));
- bb4: 27960a63 beq a2,s9,e28 <_vscanf_core.constprop.0+0x4f2>
- bb8: 2a060d63 beqz a2,e72 <_vscanf_core.constprop.0+0x53c>
- int x = (c == 'x' || c == 'X');
- bbc: 07800793 li a5,120
- bc0: 2ef50363 beq a0,a5,ea6 <_vscanf_core.constprop.0+0x570>
- bc4: fa850693 addi a3,a0,-88
- bc8: 0016b693 seqz a3,a3
- bcc: 4301 li t1,0
- if (width > 0 && i >= width)
- bce: 01205463 blez s2,bd6 <_vscanf_core.constprop.0+0x2a0>
- bd2: 032d5a63 bge s10,s2,c06 <_vscanf_core.constprop.0+0x2d0>
- if (digit || hex || x)
- bd6: 0066e6b3 or a3,a3,t1
- bda: 8ecd or a3,a3,a1
- bdc: c68d beqz a3,c06 <_vscanf_core.constprop.0+0x2d0>
- num_buf[i++] = (char)c;
- bde: 00ac0023 sb a0,0(s8)
- if (ctx->ungotten >= 0)
- be2: 018da503 lw a0,24(s11)
- num_buf[i++] = (char)c;
- be6: 2d05 addiw s10,s10,1
- if (ctx->ungotten >= 0)
- be8: 22055c63 bgez a0,e20 <_vscanf_core.constprop.0+0x4ea>
- bec: 856e mv a0,s11
- bee: e832 sd a2,16(sp)
- bf0: c8dff0ef jal 87c <_in_char.part.0>
- while (c != -1 && i < 63)
- bf4: 57fd li a5,-1
- bf6: 6642 ld a2,16(sp)
- bf8: 3cf50263 beq a0,a5,fbc <_vscanf_core.constprop.0+0x686>
- bfc: 03f00693 li a3,63
- c00: 0c05 addi s8,s8,1
- c02: fadd13e3 bne s10,a3,ba8 <_vscanf_core.constprop.0+0x272>
- num_buf[i] = '\0';
- c06: 040d0793 addi a5,s10,64
- c0a: 1018 addi a4,sp,32
- c0c: 97ba add a5,a5,a4
- c0e: fc078023 sb zero,-64(a5)
- ctx->ungotten = c;
- c12: 00adac23 sw a0,24(s11)
- c16: 7ce6 ld s9,120(sp)
- if (i == 0)
- c18: 1e0d0663 beqz s10,e04 <_vscanf_core.constprop.0+0x4ce>
- if (!suppress)
- c1c: 36098363 beqz s3,f82 <_vscanf_core.constprop.0+0x64c>
- while (*p)
- c20: 001bc783 lbu a5,1(s7)
- {
- c24: 794a ld s2,176(sp)
- c26: 79aa ld s3,168(sp)
- c28: 6baa ld s7,136(sp)
- c2a: 6c0a ld s8,128(sp)
- c2c: 7d46 ld s10,112(sp)
- while (*p)
- c2e: d20799e3 bnez a5,960 <_vscanf_core.constprop.0+0x2a>
- c32: b3a5 j 99a <_vscanf_core.constprop.0+0x64>
- while (*p >= '0' && *p <= '9')
- c34: 00244583 lbu a1,2(s0)
- suppress = 1;
- c38: 4985 li s3,1
- p++;
- c3a: 0409 addi s0,s0,2
- c3c: b3d9 j a02 <_vscanf_core.constprop.0+0xcc>
- if (*p == 'l')
- c3e: 00144c03 lbu s8,1(s0)
- len_mod = 1;
- c42: 4785 li a5,1
- c44: ec3e sd a5,24(sp)
- if (*p == 'l')
- c46: e0bc17e3 bne s8,a1,a54 <_vscanf_core.constprop.0+0x11e>
- len_mod = 2;
- c4a: 4789 li a5,2
- char spec = *p++;
- c4c: 00244c03 lbu s8,2(s0)
- p++;
- c50: 00240b93 addi s7,s0,2
- len_mod = 2;
- c54: ec3e sd a5,24(sp)
- c56: bbfd j a54 <_vscanf_core.constprop.0+0x11e>
- c58: 100c0763 beqz s8,d66 <_vscanf_core.constprop.0+0x430>
- c5c: fbbc079b addiw a5,s8,-69
- c60: 0ff7f793 zext.b a5,a5
- c64: 4689 li a3,2
- c66: eef6e2e3 bltu a3,a5,b4a <_vscanf_core.constprop.0+0x214>
- _skip_space(ctx);
- c6a: 856e mv a0,s11
- c6c: f8ea sd s10,112(sp)
- c6e: c55ff0ef jal 8c2 <_skip_space>
- if (ctx->ungotten >= 0)
- c72: 018da783 lw a5,24(s11)
- c76: 1207dd63 bgez a5,db0 <_vscanf_core.constprop.0+0x47a>
- c7a: 856e mv a0,s11
- c7c: c01ff0ef jal 87c <_in_char.part.0>
- if (c == '-' || c == '+')
- c80: fd55069b addiw a3,a0,-43
- c84: ffd6f613 andi a2,a3,-3
- c88: 2601 sext.w a2,a2
- c8a: 87aa mv a5,a0
- c8c: 12060c63 beqz a2,dc4 <_vscanf_core.constprop.0+0x48e>
- while (c != -1 && i < 63)
- c90: 567d li a2,-1
- c92: 16c50963 beq a0,a2,e04 <_vscanf_core.constprop.0+0x4ce>
- c96: fce6 sd s9,120(sp)
- int i = 0, c = _in_char(ctx);
- c98: 4d01 li s10,0
- c9a: 80000937 lui s2,0x80000
- c9e: 197d addi s2,s2,-1 # ffffffff7fffffff <_ZSt4cerr+0xffffffff7fff8847>
- ca0: 0932 slli s2,s2,0xc
- ca2: 80194913 xori s2,s2,-2047
- ca6: 093e slli s2,s2,0xf
- ca8: 02010813 addi a6,sp,32
- cac: 01a80cb3 add s9,a6,s10
- cb0: 03a00c13 li s8,58
- cb4: 1935 addi s2,s2,-19
- cb6: a831 j cd2 <_vscanf_core.constprop.0+0x39c>
- cb8: bc5ff0ef jal 87c <_in_char.part.0>
- while (c != -1 && i < 63)
- cbc: 577d li a4,-1
- cbe: 87aa mv a5,a0
- cc0: 2ee50563 beq a0,a4,faa <_vscanf_core.constprop.0+0x674>
- cc4: 03f00713 li a4,63
- cc8: 0c85 addi s9,s9,1
- cca: 1eed0e63 beq s10,a4,ec6 <_vscanf_core.constprop.0+0x590>
- cce: fd57869b addiw a3,a5,-43
- int c = ctx->ungotten;
- cd2: 00d95633 srl a2,s2,a3
- cd6: 856e mv a0,s11
- cd8: 8a05 andi a2,a2,1
- cda: 1edc6663 bltu s8,a3,ec6 <_vscanf_core.constprop.0+0x590>
- cde: 1e060463 beqz a2,ec6 <_vscanf_core.constprop.0+0x590>
- num_buf[i++] = (char)c;
- ce2: 00fc8023 sb a5,0(s9)
- if (ctx->ungotten >= 0)
- ce6: 018da783 lw a5,24(s11)
- num_buf[i++] = (char)c;
- cea: 2d05 addiw s10,s10,1
- if (ctx->ungotten >= 0)
- cec: fc07c6e3 bltz a5,cb8 <_vscanf_core.constprop.0+0x382>
- ctx->ungotten = -1;
- cf0: 577d li a4,-1
- cf2: 00edac23 sw a4,24(s11)
- while (c != -1 && i < 63)
- cf6: b7f9 j cc4 <_vscanf_core.constprop.0+0x38e>
- if (*p == 'h')
- cf8: 00144c03 lbu s8,1(s0)
- int len_mod = 0;
- cfc: ec02 sd zero,24(sp)
- if (*p == 'h')
- cfe: d4bc1be3 bne s8,a1,a54 <_vscanf_core.constprop.0+0x11e>
- char spec = *p++;
- d02: 00244c03 lbu s8,2(s0)
- p++;
- d06: 00240b93 addi s7,s0,2
- d0a: b3a9 j a54 <_vscanf_core.constprop.0+0x11e>
- d0c: fce6 sd s9,120(sp)
- d0e: f8ea sd s10,112(sp)
- int count = (width > 0) ? width : 1;
- d10: 00090c1b sext.w s8,s2
- d14: 0d205a63 blez s2,de8 <_vscanf_core.constprop.0+0x4b2>
- char *buf = suppress ? NULL : va_arg(ap, char *);
- d18: 4d01 li s10,0
- d1a: 06098d63 beqz s3,d94 <_vscanf_core.constprop.0+0x45e>
- for (int i = 0; i < count; i++)
- d1e: 9c6a add s8,s8,s10
- if (c == -1)
- d20: 5cfd li s9,-1
- if (ctx->ungotten >= 0)
- d22: 018da783 lw a5,24(s11)
- ctx->ungotten = -1;
- d26: 856e mv a0,s11
- if (ctx->ungotten >= 0)
- d28: 0207dc63 bgez a5,d60 <_vscanf_core.constprop.0+0x42a>
- d2c: b51ff0ef jal 87c <_in_char.part.0>
- d30: 87aa mv a5,a0
- if (c == -1)
- d32: 0b950d63 beq a0,s9,dec <_vscanf_core.constprop.0+0x4b6>
- if (!suppress)
- d36: 00099463 bnez s3,d3e <_vscanf_core.constprop.0+0x408>
- buf[i] = (char)c;
- d3a: 00fd0023 sb a5,0(s10)
- for (int i = 0; i < count; i++)
- d3e: 0d05 addi s10,s10,1
- d40: ffac11e3 bne s8,s10,d22 <_vscanf_core.constprop.0+0x3ec>
- while (*p)
- d44: 001bc783 lbu a5,1(s7)
- if (!suppress)
- d48: 00099363 bnez s3,d4e <_vscanf_core.constprop.0+0x418>
- assigned++;
- d4c: 2b05 addiw s6,s6,1
- d4e: 794a ld s2,176(sp)
- d50: 79aa ld s3,168(sp)
- d52: 6baa ld s7,136(sp)
- d54: 6c0a ld s8,128(sp)
- d56: 7ce6 ld s9,120(sp)
- d58: 7d46 ld s10,112(sp)
- while (*p)
- d5a: c00793e3 bnez a5,960 <_vscanf_core.constprop.0+0x2a>
- d5e: b935 j 99a <_vscanf_core.constprop.0+0x64>
- ctx->ungotten = -1;
- d60: 019dac23 sw s9,24(s11)
- if (c == -1)
- d64: bfc9 j d36 <_vscanf_core.constprop.0+0x400>
- d66: 640e ld s0,192(sp)
- d68: 74ea ld s1,184(sp)
- d6a: 794a ld s2,176(sp)
- d6c: 79aa ld s3,168(sp)
- d6e: 7a0a ld s4,160(sp)
- d70: 6aea ld s5,152(sp)
- d72: 6baa ld s7,136(sp)
- d74: 6c0a ld s8,128(sp)
- d76: 7da6 ld s11,104(sp)
- d78: b135 j 9a4 <_vscanf_core.constprop.0+0x6e>
- int width = -1;
- d7a: 597d li s2,-1
- d7c: b975 j a38 <_vscanf_core.constprop.0+0x102>
- if (!suppress)
- d7e: 3c099c63 bnez s3,1156 <_vscanf_core.constprop.0+0x820>
- buf[i] = '\0';
- d82: 67e2 ld a5,24(sp)
- d84: 01a786b3 add a3,a5,s10
- d88: 00068023 sb zero,0(a3)
- while (*p)
- d8c: 001bc783 lbu a5,1(s7)
- assigned++;
- d90: 2b05 addiw s6,s6,1
- d92: bf75 j d4e <_vscanf_core.constprop.0+0x418>
- char *buf = suppress ? NULL : va_arg(ap, char *);
- d94: 67a2 ld a5,8(sp)
- d96: 0007bd03 ld s10,0(a5)
- d9a: 07a1 addi a5,a5,8
- d9c: e43e sd a5,8(sp)
- d9e: b741 j d1e <_vscanf_core.constprop.0+0x3e8>
- ctx->ungotten = -1;
- da0: 56fd li a3,-1
- da2: 00ddac23 sw a3,24(s11)
- while (c != -1 && !isspace(c))
- da6: bb11 j aba <_vscanf_core.constprop.0+0x184>
- ctx->ungotten = -1;
- da8: 56fd li a3,-1
- daa: 00ddac23 sw a3,24(s11)
- return c;
- dae: b3d1 j b72 <_vscanf_core.constprop.0+0x23c>
- if (c == '-' || c == '+')
- db0: fd57869b addiw a3,a5,-43
- db4: ffd6f613 andi a2,a3,-3
- ctx->ungotten = -1;
- db8: 55fd li a1,-1
- dba: 00bdac23 sw a1,24(s11)
- if (c == '-' || c == '+')
- dbe: 2601 sext.w a2,a2
- dc0: ec061be3 bnez a2,c96 <_vscanf_core.constprop.0+0x360>
- num_buf[i++] = (char)c;
- dc4: 02f10023 sb a5,32(sp)
- if (ctx->ungotten >= 0)
- dc8: 018da783 lw a5,24(s11)
- dcc: 2207da63 bgez a5,1000 <_vscanf_core.constprop.0+0x6ca>
- dd0: 856e mv a0,s11
- dd2: aabff0ef jal 87c <_in_char.part.0>
- while (c != -1 && i < 63)
- dd6: 567d li a2,-1
- dd8: 87aa mv a5,a0
- num_buf[i++] = (char)c;
- dda: 4d05 li s10,1
- ddc: fd55069b addiw a3,a0,-43
- while (c != -1 && i < 63)
- de0: 3ac50163 beq a0,a2,1182 <_vscanf_core.constprop.0+0x84c>
- de4: fce6 sd s9,120(sp)
- de6: bd55 j c9a <_vscanf_core.constprop.0+0x364>
- int count = (width > 0) ? width : 1;
- de8: 4c05 li s8,1
- dea: b73d j d18 <_vscanf_core.constprop.0+0x3e2>
- dec: 640e ld s0,192(sp)
- dee: 74ea ld s1,184(sp)
- df0: 794a ld s2,176(sp)
- df2: 79aa ld s3,168(sp)
- df4: 7a0a ld s4,160(sp)
- df6: 6aea ld s5,152(sp)
- df8: 6baa ld s7,136(sp)
- dfa: 6c0a ld s8,128(sp)
- dfc: 7ce6 ld s9,120(sp)
- dfe: 7d46 ld s10,112(sp)
- e00: 7da6 ld s11,104(sp)
- e02: b64d j 9a4 <_vscanf_core.constprop.0+0x6e>
- e04: 640e ld s0,192(sp)
- e06: 74ea ld s1,184(sp)
- e08: 794a ld s2,176(sp)
- e0a: 79aa ld s3,168(sp)
- e0c: 7a0a ld s4,160(sp)
- e0e: 6aea ld s5,152(sp)
- e10: 6baa ld s7,136(sp)
- e12: 6c0a ld s8,128(sp)
- e14: 7d46 ld s10,112(sp)
- e16: 7da6 ld s11,104(sp)
- e18: b671 j 9a4 <_vscanf_core.constprop.0+0x6e>
- ctx->ungotten = -1;
- e1a: 018dac23 sw s8,24(s11)
- while (c != -1 && !isspace(c))
- e1e: b9e5 j b16 <_vscanf_core.constprop.0+0x1e0>
- ctx->ungotten = -1;
- e20: 57fd li a5,-1
- e22: 00fdac23 sw a5,24(s11)
- while (c != -1 && i < 63)
- e26: bbd9 j bfc <_vscanf_core.constprop.0+0x2c6>
- int hex = (base == 16 || base == 0) && ((c >= 'a' && c <= 'f') || (c >= 'A' && c <= 'F'));
- e28: f9f3069b addiw a3,t1,-97
- e2c: 4795 li a5,5
- e2e: 06d7f263 bgeu a5,a3,e92 <_vscanf_core.constprop.0+0x55c>
- e32: fbf3031b addiw t1,t1,-65
- e36: 4795 li a5,5
- e38: 0467fd63 bgeu a5,t1,e92 <_vscanf_core.constprop.0+0x55c>
- int x = (c == 'x' || c == 'X');
- e3c: 07800693 li a3,120
- e40: 18d50763 beq a0,a3,fce <_vscanf_core.constprop.0+0x698>
- e44: fa850693 addi a3,a0,-88
- e48: 0016b693 seqz a3,a3
- if (base == 0 && i == 1 && num_buf[0] == '0' && x)
- e4c: 4301 li t1,0
- e4e: 32061663 bnez a2,117a <_vscanf_core.constprop.0+0x844>
- e52: 4785 li a5,1
- e54: 4601 li a2,0
- e56: d6fd1ce3 bne s10,a5,bce <_vscanf_core.constprop.0+0x298>
- e5a: 02014e03 lbu t3,32(sp)
- e5e: 03000793 li a5,48
- e62: d6fe16e3 bne t3,a5,bce <_vscanf_core.constprop.0+0x298>
- e66: d60684e3 beqz a3,bce <_vscanf_core.constprop.0+0x298>
- base = 16;
- e6a: 4641 li a2,16
- if (width > 0 && i >= width)
- e6c: d7a919e3 bne s2,s10,bde <_vscanf_core.constprop.0+0x2a8>
- e70: bb59 j c06 <_vscanf_core.constprop.0+0x2d0>
- int hex = (base == 16 || base == 0) && ((c >= 'a' && c <= 'f') || (c >= 'A' && c <= 'F'));
- e72: f9f3069b addiw a3,t1,-97
- e76: 4795 li a5,5
- e78: 02d7f263 bgeu a5,a3,e9c <_vscanf_core.constprop.0+0x566>
- e7c: fbf3031b addiw t1,t1,-65
- e80: 0467f063 bgeu a5,t1,ec0 <_vscanf_core.constprop.0+0x58a>
- int x = (c == 'x' || c == 'X');
- e84: 07800693 li a3,120
- e88: fad51ee3 bne a0,a3,e44 <_vscanf_core.constprop.0+0x50e>
- e8c: 4301 li t1,0
- e8e: 4685 li a3,1
- e90: b7c9 j e52 <_vscanf_core.constprop.0+0x51c>
- int hex = (base == 16 || base == 0) && ((c >= 'a' && c <= 'f') || (c >= 'A' && c <= 'F'));
- e92: 4305 li t1,1
- int x = (c == 'x' || c == 'X');
- e94: 4681 li a3,0
- if (width > 0 && i >= width)
- e96: d3204ee3 bgtz s2,bd2 <_vscanf_core.constprop.0+0x29c>
- e9a: bb35 j bd6 <_vscanf_core.constprop.0+0x2a0>
- int x = (c == 'x' || c == 'X');
- e9c: 4681 li a3,0
- int hex = (base == 16 || base == 0) && ((c >= 'a' && c <= 'f') || (c >= 'A' && c <= 'F'));
- e9e: 4305 li t1,1
- if (width > 0 && i >= width)
- ea0: d32049e3 bgtz s2,bd2 <_vscanf_core.constprop.0+0x29c>
- ea4: bb0d j bd6 <_vscanf_core.constprop.0+0x2a0>
- ea6: 4301 li t1,0
- int x = (c == 'x' || c == 'X');
- ea8: 4685 li a3,1
- if (width > 0 && i >= width)
- eaa: d32044e3 bgtz s2,bd2 <_vscanf_core.constprop.0+0x29c>
- eae: bb05 j bde <_vscanf_core.constprop.0+0x2a8>
- if (!suppress)
- eb0: c8099be3 bnez s3,b46 <_vscanf_core.constprop.0+0x210>
- buf[i] = '\0';
- eb4: 67e2 ld a5,24(sp)
- eb6: 00078023 sb zero,0(a5)
- ctx->ungotten = c;
- eba: 00adac23 sw a0,24(s11)
- if (i > 0 && !suppress)
- ebe: b171 j b4a <_vscanf_core.constprop.0+0x214>
- int x = (c == 'x' || c == 'X');
- ec0: 4681 li a3,0
- int hex = (base == 16 || base == 0) && ((c >= 'a' && c <= 'f') || (c >= 'A' && c <= 'F'));
- ec2: 4305 li t1,1
- ec4: b779 j e52 <_vscanf_core.constprop.0+0x51c>
- num_buf[i] = '\0';
- ec6: 040d0713 addi a4,s10,64
- eca: 1014 addi a3,sp,32
- ecc: 96ba add a3,a3,a4
- ece: fc068023 sb zero,-64(a3)
- ctx->ungotten = c;
- ed2: 00fdac23 sw a5,24(s11)
- if (i == 0)
- ed6: f00d0be3 beqz s10,dec <_vscanf_core.constprop.0+0x4b6>
- eda: 7ce6 ld s9,120(sp)
- if (!suppress)
- edc: d40992e3 bnez s3,c20 <_vscanf_core.constprop.0+0x2ea>
- if (*str == '-')
- ee0: 02014603 lbu a2,32(sp)
- ee4: 02d00793 li a5,45
- ee8: 1af60963 beq a2,a5,109a <_vscanf_core.constprop.0+0x764>
- else if (*str == '+')
- eec: 02b00793 li a5,43
- ef0: 20f60a63 beq a2,a5,1104 <_vscanf_core.constprop.0+0x7ce>
- ef4: 00005797 auipc a5,0x5
- ef8: 8a47b587 fld fa1,-1884(a5) # 5798 <STDIN_FD+0x10>
- efc: 101c addi a5,sp,32
- while (*str >= '0' && *str <= '9')
- efe: fd06069b addiw a3,a2,-48
- f02: 0ff6f513 zext.b a0,a3
- f06: 45a5 li a1,9
- f08: f20007d3 fmv.d.x fa5,zero
- f0c: 02a5e463 bltu a1,a0,f34 <_vscanf_core.constprop.0+0x5fe>
- f10: 00005717 auipc a4,0x5
- f14: 89073707 fld fa4,-1904(a4) # 57a0 <STDIN_FD+0x18>
- f18: 4525 li a0,9
- f1a: 0017c603 lbu a2,1(a5)
- val = val * 10.0 + (*str - '0');
- f1e: d20686d3 fcvt.d.w fa3,a3
- str++;
- f22: 0785 addi a5,a5,1
- while (*str >= '0' && *str <= '9')
- f24: fd06069b addiw a3,a2,-48
- f28: 0ff6f593 zext.b a1,a3
- val = val * 10.0 + (*str - '0');
- f2c: 6ae7f7c3 fmadd.d fa5,fa5,fa4,fa3
- while (*str >= '0' && *str <= '9')
- f30: feb575e3 bgeu a0,a1,f1a <_vscanf_core.constprop.0+0x5e4>
- if (*str == '.')
- f34: 02e00693 li a3,46
- f38: 16d60a63 beq a2,a3,10ac <_vscanf_core.constprop.0+0x776>
- if (*str == 'e' || *str == 'E')
- f3c: 0007c683 lbu a3,0(a5)
- f40: 0df6f693 andi a3,a3,223
- f44: 04500613 li a2,69
- f48: 0cc68463 beq a3,a2,1010 <_vscanf_core.constprop.0+0x6da>
- *va_arg(ap, double *) = val;
- f4c: 6722 ld a4,8(sp)
- if (len_mod == 1)
- f4e: 4685 li a3,1
- return sign * val;
- f50: 12b7f7d3 fmul.d fa5,fa5,fa1
- *va_arg(ap, double *) = val;
- f54: 631c ld a5,0(a4)
- *va_arg(ap, int64 *) = val;
- f56: 0721 addi a4,a4,8
- f58: e43a sd a4,8(sp)
- if (len_mod == 1)
- f5a: 6762 ld a4,24(sp)
- f5c: 18d70b63 beq a4,a3,10f2 <_vscanf_core.constprop.0+0x7bc>
- *va_arg(ap, float *) = (float)val;
- f60: 4017f7d3 fcvt.s.d fa5,fa5
- assigned++;
- f64: 2b05 addiw s6,s6,1
- *va_arg(ap, float *) = (float)val;
- f66: 00f7a027 fsw fa5,0(a5)
- f6a: b95d j c20 <_vscanf_core.constprop.0+0x2ea>
- num_buf[i++] = (char)c;
- f6c: 02a10023 sb a0,32(sp)
- if (ctx->ungotten >= 0)
- f70: 018da503 lw a0,24(s11)
- f74: 06055463 bgez a0,fdc <_vscanf_core.constprop.0+0x6a6>
- f78: 856e mv a0,s11
- f7a: 903ff0ef jal 87c <_in_char.part.0>
- num_buf[i++] = (char)c;
- f7e: 4d05 li s10,1
- f80: b101 j b80 <_vscanf_core.constprop.0+0x24a>
- int64 val = strtoll(num_buf, NULL, base);
- f82: 4581 li a1,0
- f84: 1008 addi a0,sp,32
- f86: 696030ef jal 461c <strtoll>
- *va_arg(ap, int64 *) = val;
- f8a: 67a2 ld a5,8(sp)
- if (len_mod == 2)
- f8c: 6762 ld a4,24(sp)
- f8e: 4689 li a3,2
- *va_arg(ap, int64 *) = val;
- f90: 07a1 addi a5,a5,8
- if (len_mod == 2)
- f92: 16d70363 beq a4,a3,10f8 <_vscanf_core.constprop.0+0x7c2>
- *va_arg(ap, int64 *) = val;
- f96: 6722 ld a4,8(sp)
- else if (len_mod == 1)
- f98: 4605 li a2,1
- *va_arg(ap, int64 *) = val;
- f9a: 6314 ld a3,0(a4)
- else if (len_mod == 1)
- f9c: 6762 ld a4,24(sp)
- f9e: 16c70163 beq a4,a2,1100 <_vscanf_core.constprop.0+0x7ca>
- *va_arg(ap, int *) = (int)val;
- fa2: c288 sw a0,0(a3)
- assigned++;
- fa4: 2b05 addiw s6,s6,1
- fa6: e43e sd a5,8(sp)
- fa8: b9a5 j c20 <_vscanf_core.constprop.0+0x2ea>
- num_buf[i] = '\0';
- faa: 040d0793 addi a5,s10,64
- fae: 1018 addi a4,sp,32
- fb0: 00e785b3 add a1,a5,a4
- fb4: fc058023 sb zero,-64(a1)
- if (i == 0)
- fb8: 7ce6 ld s9,120(sp)
- fba: b70d j edc <_vscanf_core.constprop.0+0x5a6>
- num_buf[i] = '\0';
- fbc: 040d0793 addi a5,s10,64
- fc0: 1018 addi a4,sp,32
- fc2: 00e78833 add a6,a5,a4
- fc6: fc080023 sb zero,-64(a6)
- if (i == 0)
- fca: 7ce6 ld s9,120(sp)
- fcc: b981 j c1c <_vscanf_core.constprop.0+0x2e6>
- int x = (c == 'x' || c == 'X');
- fce: 4301 li t1,0
- fd0: 4685 li a3,1
- if (width > 0 && i >= width)
- fd2: c12040e3 bgtz s2,bd2 <_vscanf_core.constprop.0+0x29c>
- fd6: b101 j bd6 <_vscanf_core.constprop.0+0x2a0>
- int assigned = 0;
- fd8: 4b01 li s6,0
- fda: b2e9 j 9a4 <_vscanf_core.constprop.0+0x6e>
- ctx->ungotten = -1;
- fdc: 56fd li a3,-1
- fde: fce6 sd s9,120(sp)
- fe0: 00ddac23 sw a3,24(s11)
- int base = (spec == 'x') ? 16 : (spec == 'i' ? 0 : 10);
- fe4: 07800693 li a3,120
- fe8: 4641 li a2,16
- num_buf[i++] = (char)c;
- fea: 4d05 li s10,1
- int base = (spec == 'x') ? 16 : (spec == 'i' ? 0 : 10);
- fec: badc09e3 beq s8,a3,b9e <_vscanf_core.constprop.0+0x268>
- ff0: 06900693 li a3,105
- ff4: 4629 li a2,10
- num_buf[i++] = (char)c;
- ff6: 4d05 li s10,1
- int base = (spec == 'x') ? 16 : (spec == 'i' ? 0 : 10);
- ff8: badc13e3 bne s8,a3,b9e <_vscanf_core.constprop.0+0x268>
- ffc: 4601 li a2,0
- ffe: b645 j b9e <_vscanf_core.constprop.0+0x268>
- ctx->ungotten = -1;
- 1000: 56fd li a3,-1
- 1002: fce6 sd s9,120(sp)
- 1004: 00ddac23 sw a3,24(s11)
- num_buf[i++] = (char)c;
- 1008: 4d05 li s10,1
- 100a: fd57869b addiw a3,a5,-43
- 100e: b171 j c9a <_vscanf_core.constprop.0+0x364>
- if (*str == '-')
- 1010: 0017c583 lbu a1,1(a5)
- 1014: 02d00693 li a3,45
- 1018: 0ed58f63 beq a1,a3,1116 <_vscanf_core.constprop.0+0x7e0>
- else if (*str == '+')
- 101c: 02b00693 li a3,43
- 1020: 10d58e63 beq a1,a3,113c <_vscanf_core.constprop.0+0x806>
- while (*str >= '0' && *str <= '9')
- 1024: fd05861b addiw a2,a1,-48
- 1028: 0ff67513 zext.b a0,a2
- 102c: 45a5 li a1,9
- str++;
- 102e: 00178693 addi a3,a5,1
- int esign = 1;
- 1032: 4805 li a6,1
- while (*str >= '0' && *str <= '9')
- 1034: 04a5ec63 bltu a1,a0,108c <_vscanf_core.constprop.0+0x756>
- 1038: 4525 li a0,9
- 103a: 0016c583 lbu a1,1(a3)
- eval = eval * 10 + (*str - '0');
- 103e: 0029979b slliw a5,s3,0x2
- 1042: 013787bb addw a5,a5,s3
- 1046: 0017979b slliw a5,a5,0x1
- 104a: 00f609bb addw s3,a2,a5
- while (*str >= '0' && *str <= '9')
- 104e: fd05861b addiw a2,a1,-48
- 1052: 0ff67593 zext.b a1,a2
- str++;
- 1056: 0685 addi a3,a3,1
- while (*str >= '0' && *str <= '9')
- 1058: feb571e3 bgeu a0,a1,103a <_vscanf_core.constprop.0+0x704>
- while (eval--)
- 105c: fff9879b addiw a5,s3,-1
- 1060: 12098463 beqz s3,1188 <_vscanf_core.constprop.0+0x852>
- double p = 1.0;
- 1064: 00004717 auipc a4,0x4
- 1068: 73473687 fld fa3,1844(a4) # 5798 <STDIN_FD+0x10>
- 106c: 00004717 auipc a4,0x4
- 1070: 73473707 fld fa4,1844(a4) # 57a0 <STDIN_FD+0x18>
- while (eval--)
- 1074: 56fd li a3,-1
- 1076: 37fd addiw a5,a5,-1
- p *= 10.0;
- 1078: 12e6f6d3 fmul.d fa3,fa3,fa4
- while (eval--)
- 107c: fed79de3 bne a5,a3,1076 <_vscanf_core.constprop.0+0x740>
- if (esign == 1)
- 1080: 4785 li a5,1
- 1082: 00f80963 beq a6,a5,1094 <_vscanf_core.constprop.0+0x75e>
- val /= p;
- 1086: 1ad7f7d3 fdiv.d fa5,fa5,fa3
- 108a: b5c9 j f4c <_vscanf_core.constprop.0+0x616>
- double p = 1.0;
- 108c: 00004797 auipc a5,0x4
- 1090: 70c7b687 fld fa3,1804(a5) # 5798 <STDIN_FD+0x10>
- val *= p;
- 1094: 12d7f7d3 fmul.d fa5,fa5,fa3
- 1098: bd55 j f4c <_vscanf_core.constprop.0+0x616>
- while (*str >= '0' && *str <= '9')
- 109a: 00004797 auipc a5,0x4
- 109e: 6f67b587 fld fa1,1782(a5) # 5790 <STDIN_FD+0x8>
- 10a2: 02114603 lbu a2,33(sp)
- str++;
- 10a6: 02110793 addi a5,sp,33
- 10aa: bd91 j efe <_vscanf_core.constprop.0+0x5c8>
- while (*str >= '0' && *str <= '9')
- 10ac: 0017c683 lbu a3,1(a5)
- 10b0: 45a5 li a1,9
- str++;
- 10b2: 0785 addi a5,a5,1
- while (*str >= '0' && *str <= '9')
- 10b4: fd06861b addiw a2,a3,-48
- 10b8: 0ff67513 zext.b a0,a2
- 10bc: e8a5e2e3 bltu a1,a0,f40 <_vscanf_core.constprop.0+0x60a>
- double div = 10.0;
- 10c0: 00004717 auipc a4,0x4
- 10c4: 6e073707 fld fa4,1760(a4) # 57a0 <STDIN_FD+0x18>
- 10c8: 22e70653 fmv.d fa2,fa4
- while (*str >= '0' && *str <= '9')
- 10cc: 4525 li a0,9
- val += (*str - '0') / div;
- 10ce: d20606d3 fcvt.d.w fa3,a2
- while (*str >= '0' && *str <= '9')
- 10d2: 0017c683 lbu a3,1(a5)
- str++;
- 10d6: 0785 addi a5,a5,1
- val += (*str - '0') / div;
- 10d8: 1ac6f6d3 fdiv.d fa3,fa3,fa2
- while (*str >= '0' && *str <= '9')
- 10dc: fd06861b addiw a2,a3,-48
- 10e0: 0ff67593 zext.b a1,a2
- div *= 10.0;
- 10e4: 12e67653 fmul.d fa2,fa2,fa4
- val += (*str - '0') / div;
- 10e8: 02d7f7d3 fadd.d fa5,fa5,fa3
- while (*str >= '0' && *str <= '9')
- 10ec: feb571e3 bgeu a0,a1,10ce <_vscanf_core.constprop.0+0x798>
- 10f0: bd81 j f40 <_vscanf_core.constprop.0+0x60a>
- *va_arg(ap, double *) = val;
- 10f2: a39c fsd fa5,0(a5)
- assigned++;
- 10f4: 2b05 addiw s6,s6,1
- 10f6: b62d j c20 <_vscanf_core.constprop.0+0x2ea>
- *va_arg(ap, int64 *) = val;
- 10f8: 6722 ld a4,8(sp)
- 10fa: 6314 ld a3,0(a4)
- 10fc: e288 sd a0,0(a3)
- 10fe: b55d j fa4 <_vscanf_core.constprop.0+0x66e>
- *va_arg(ap, long *) = (long)val;
- 1100: e288 sd a0,0(a3)
- 1102: b54d j fa4 <_vscanf_core.constprop.0+0x66e>
- while (*str >= '0' && *str <= '9')
- 1104: 00004797 auipc a5,0x4
- 1108: 6947b587 fld fa1,1684(a5) # 5798 <STDIN_FD+0x10>
- 110c: 02114603 lbu a2,33(sp)
- str++;
- 1110: 02110793 addi a5,sp,33
- 1114: b3ed j efe <_vscanf_core.constprop.0+0x5c8>
- while (*str >= '0' && *str <= '9')
- 1116: 0027c583 lbu a1,2(a5)
- str++;
- 111a: 00278693 addi a3,a5,2
- while (*str >= '0' && *str <= '9')
- 111e: 4525 li a0,9
- 1120: fd05861b addiw a2,a1,-48
- 1124: 0ff67793 zext.b a5,a2
- esign = -1;
- 1128: 587d li a6,-1
- while (*str >= '0' && *str <= '9')
- 112a: f0f577e3 bgeu a0,a5,1038 <_vscanf_core.constprop.0+0x702>
- double p = 1.0;
- 112e: 00004797 auipc a5,0x4
- 1132: 66a7b687 fld fa3,1642(a5) # 5798 <STDIN_FD+0x10>
- val /= p;
- 1136: 1ad7f7d3 fdiv.d fa5,fa5,fa3
- 113a: bd09 j f4c <_vscanf_core.constprop.0+0x616>
- while (*str >= '0' && *str <= '9')
- 113c: 0027c583 lbu a1,2(a5)
- str++;
- 1140: 00278693 addi a3,a5,2
- while (*str >= '0' && *str <= '9')
- 1144: 4525 li a0,9
- 1146: fd05861b addiw a2,a1,-48
- 114a: 0ff67793 zext.b a5,a2
- 114e: f2f56fe3 bltu a0,a5,108c <_vscanf_core.constprop.0+0x756>
- int esign = 1;
- 1152: 4805 li a6,1
- 1154: b5d5 j 1038 <_vscanf_core.constprop.0+0x702>
- while (*p)
- 1156: 001bc783 lbu a5,1(s7)
- 115a: bed5 j d4e <_vscanf_core.constprop.0+0x418>
- if (!suppress)
- 115c: 9e0997e3 bnez s3,b4a <_vscanf_core.constprop.0+0x214>
- buf[i] = '\0';
- 1160: 67e2 ld a5,24(sp)
- 1162: 00078023 sb zero,0(a5)
- 1166: b2d5 j b4a <_vscanf_core.constprop.0+0x214>
- num_buf[i] = '\0';
- 1168: 040d0793 addi a5,s10,64
- 116c: 1018 addi a4,sp,32
- 116e: 97ba add a5,a5,a4
- 1170: fc078023 sb zero,-64(a5)
- if (i == 0)
- 1174: aa0d14e3 bnez s10,c1c <_vscanf_core.constprop.0+0x2e6>
- 1178: b171 j e04 <_vscanf_core.constprop.0+0x4ce>
- 117a: 4641 li a2,16
- if (width > 0 && i >= width)
- 117c: a5204be3 bgtz s2,bd2 <_vscanf_core.constprop.0+0x29c>
- 1180: bc99 j bd6 <_vscanf_core.constprop.0+0x2a0>
- num_buf[i] = '\0';
- 1182: 020100a3 sb zero,33(sp)
- if (i == 0)
- 1186: bb99 j edc <_vscanf_core.constprop.0+0x5a6>
- double p = 1.0;
- 1188: 00004797 auipc a5,0x4
- 118c: 6107b687 fld fa3,1552(a5) # 5798 <STDIN_FD+0x10>
- 1190: bdc5 j 1080 <_vscanf_core.constprop.0+0x74a>
- buf[i] = '\0';
- 1192: 67e2 ld a5,24(sp)
- 1194: 01a786b3 add a3,a5,s10
- 1198: 00068023 sb zero,0(a3)
- ctx->ungotten = c;
- 119c: 00adac23 sw a0,24(s11)
- while (*p)
- 11a0: 001bc783 lbu a5,1(s7)
- 11a4: b6f5 j d90 <_vscanf_core.constprop.0+0x45a>
-
-00000000000011a6 <_out_char>:
-{
- 11a6: 7179 addi sp,sp,-48
- 11a8: ec26 sd s1,24(sp)
- if (ctx->stream)
- 11aa: 6d04 ld s1,24(a0)
-{
- 11ac: f022 sd s0,32(sp)
- 11ae: f406 sd ra,40(sp)
- 11b0: 842a mv s0,a0
- 11b2: 872e mv a4,a1
- if (ctx->stream)
- 11b4: c0a1 beqz s1,11f4 <_out_char+0x4e>
- 11b6: e84a sd s2,16(sp)
- if (stream->buf_mode == 2)
- 11b8: 41c4a903 lw s2,1052(s1)
- 11bc: 4789 li a5,2
- 11be: 04f90d63 beq s2,a5,1218 <_out_char+0x72>
- stream->buffer[stream->buf_write_pos++] = (char)c;
- 11c2: 4104a783 lw a5,1040(s1)
- if (stream->buf_write_pos >= BUFSIZ)
- 11c6: 3ff00693 li a3,1023
- stream->buffer[stream->buf_write_pos++] = (char)c;
- 11ca: 0017861b addiw a2,a5,1
- 11ce: 40c4a823 sw a2,1040(s1)
- 11d2: 97a6 add a5,a5,s1
- 11d4: 00b78823 sb a1,16(a5)
- if (stream->buf_write_pos >= BUFSIZ)
- 11d8: 08c6c063 blt a3,a2,1258 <_out_char+0xb2>
- else if (stream->buf_mode == 1 && c == '\n')
- 11dc: 4785 li a5,1
- 11de: 04f90a63 beq s2,a5,1232 <_out_char+0x8c>
- ctx->written++;
- 11e2: 681c ld a5,16(s0)
- 11e4: 6942 ld s2,16(sp)
-}
- 11e6: 70a2 ld ra,40(sp)
- ctx->written++;
- 11e8: 0785 addi a5,a5,1
- 11ea: e81c sd a5,16(s0)
-}
- 11ec: 7402 ld s0,32(sp)
- 11ee: 64e2 ld s1,24(sp)
- 11f0: 6145 addi sp,sp,48
- 11f2: 8082 ret
- if (ctx->limit > 0 && ctx->written < ctx->limit - 1)
- 11f4: 6514 ld a3,8(a0)
- 11f6: 691c ld a5,16(a0)
- 11f8: ca89 beqz a3,120a <_out_char+0x64>
- 11fa: 16fd addi a3,a3,-1
- 11fc: 00d7f763 bgeu a5,a3,120a <_out_char+0x64>
- ctx->buf[ctx->written] = c;
- 1200: 6114 ld a3,0(a0)
- 1202: 97b6 add a5,a5,a3
- 1204: 00b78023 sb a1,0(a5)
- ctx->written++;
- 1208: 691c ld a5,16(a0)
- 120a: 0785 addi a5,a5,1
-}
- 120c: 70a2 ld ra,40(sp)
- ctx->written++;
- 120e: e81c sd a5,16(s0)
-}
- 1210: 7402 ld s0,32(sp)
- 1212: 64e2 ld s1,24(sp)
- 1214: 6145 addi sp,sp,48
- 1216: 8082 ret
- if (write(stream->fd, &ch, 1) != 1)
- 1218: 4088 lw a0,0(s1)
- 121a: 4605 li a2,1
- 121c: 00f10593 addi a1,sp,15
- char ch = (char)c;
- 1220: 00e107a3 sb a4,15(sp)
- if (write(stream->fd, &ch, 1) != 1)
- 1224: e8bfe0ef jal ae <write>
- 1228: 4785 li a5,1
- 122a: faf50ce3 beq a0,a5,11e2 <_out_char+0x3c>
- stream->error = 1;
- 122e: c49c sw a5,8(s1)
- return EOF;
- 1230: bf4d j 11e2 <_out_char+0x3c>
- else if (stream->buf_mode == 1 && c == '\n')
- 1232: 47a9 li a5,10
- 1234: faf597e3 bne a1,a5,11e2 <_out_char+0x3c>
- if (stream->buf_write_pos > 0)
- 1238: fac055e3 blez a2,11e2 <_out_char+0x3c>
- int64 ret = write(stream->fd, stream->buffer, stream->buf_write_pos);
- 123c: 4088 lw a0,0(s1)
- 123e: 01048593 addi a1,s1,16
- 1242: e6dfe0ef jal ae <write>
- if (ret < stream->buf_write_pos)
- 1246: 4104a783 lw a5,1040(s1)
- 124a: 02f55063 bge a0,a5,126a <_out_char+0xc4>
- stream->error = 1;
- 124e: 0124a423 sw s2,8(s1)
- stream->buf_write_pos = 0;
- 1252: 4004a823 sw zero,1040(s1)
- return EOF;
- 1256: b771 j 11e2 <_out_char+0x3c>
- int64 ret = write(stream->fd, stream->buffer, stream->buf_write_pos);
- 1258: 4088 lw a0,0(s1)
- 125a: 01048593 addi a1,s1,16
- 125e: e51fe0ef jal ae <write>
- if (ret < stream->buf_write_pos)
- 1262: 4104a783 lw a5,1040(s1)
- 1266: 00f54563 blt a0,a5,1270 <_out_char+0xca>
- stream->buf_write_pos = 0;
- 126a: 4004a823 sw zero,1040(s1)
- 126e: bf95 j 11e2 <_out_char+0x3c>
- stream->error = 1;
- 1270: 4785 li a5,1
- 1272: c49c sw a5,8(s1)
- stream->buf_write_pos = 0;
- 1274: 4004a823 sw zero,1040(s1)
- return EOF;
- 1278: b7ad j 11e2 <_out_char+0x3c>
-
-000000000000127a <stbsp_set_separators>:
- "75767778798081828384858687888990919293949596979899"
-};
-
-STBSP__PUBLICDEF void STB_SPRINTF_DECORATE(set_separators)(char pcomma, char pperiod)
-{
- stbsp__period = pperiod;
- 127a: 00005797 auipc a5,0x5
- 127e: 64678793 addi a5,a5,1606 # 68c0 <stbsp__digitpair>
- 1282: 0cb78623 sb a1,204(a5)
- stbsp__comma = pcomma;
- 1286: 0ca786a3 sb a0,205(a5)
-}
- 128a: 8082 ret
-
-000000000000128c <stbsp_vsprintfcb>:
-
- return (stbsp__uint32)(sn - s);
-}
-
-STBSP__PUBLICDEF int STB_SPRINTF_DECORATE(vsprintfcb)(STBSP_SPRINTFCB *callback, void *user, char *buf, char const *fmt, va_list va)
-{
- 128c: d1010113 addi sp,sp,-752
- // Check if the next 4 bytes contain %(0x25) or end of string.
- // Using the 'hasless' trick:
- // https://graphics.stanford.edu/~seander/bithacks.html#HasLessInWord
- stbsp__uint32 v, c;
- v = *(stbsp__uint32 *)f;
- c = (~v) & 0x80808080;
- 1290: 808087b7 lui a5,0x80808
- if (((v ^ 0x25252525) - 0x01010101) & c)
- 1294: 252523b7 lui t2,0x25252
- 1298: 52538393 addi t2,t2,1317 # 25252525 <_ZSt4cerr+0x2524ad6d>
-{
- 129c: 29913c23 sd s9,664(sp)
- 12a0: 29b13423 sd s11,648(sp)
- int tlen = 0;
- 12a4: 4c81 li s9,0
- if (((v ^ 0x25252525) - 0x01010101) & c)
- 12a6: feff0db7 lui s11,0xfeff0
- c = (~v) & 0x80808080;
- 12aa: 08078793 addi a5,a5,128 # ffffffff80808080 <_ZSt4cerr+0xffffffff808008c8>
-{
- 12ae: 2e813023 sd s0,736(sp)
- 12b2: 2c913c23 sd s1,728(sp)
- 12b6: 2d213823 sd s2,720(sp)
- 12ba: 2d313423 sd s3,712(sp)
- 12be: 2b713423 sd s7,680(sp)
- 12c2: 2b813023 sd s8,672(sp)
- 12c6: 29a13823 sd s10,656(sp)
- 12ca: 2e113423 sd ra,744(sp)
- 12ce: 8d66 mv s10,s9
- 12d0: 8432 mv s0,a2
- 12d2: 8c9e mv s9,t2
- 12d4: 89aa mv s3,a0
- 12d6: e42e sd a1,8(sp)
- 12d8: 84b6 mv s1,a3
- 12da: 8bba mv s7,a4
- 12dc: fc02 sd zero,56(sp)
- for (;;) {
- 12de: 8932 mv s2,a2
- if (((v ^ 0x25252525) - 0x01010101) & c)
- 12e0: effd8d9b addiw s11,s11,-257 # fffffffffefefeff <_ZSt4cerr+0xfffffffffefe8747>
- goto schk1;
- if ((v - 0x01010101) & c)
- goto schk2;
- if (callback)
- if ((STB_SPRINTF_MIN - (int)(bf - buf)) < 4)
- 12e4: 20000c13 li s8,512
- 12e8: 83be mv t2,a5
- while (((stbsp__uintptr)f) & 3) {
- 12ea: 0034f793 andi a5,s1,3
- 12ee: c7a9 beqz a5,1338 <stbsp_vsprintfcb+0xac>
- if (f[0] == '%')
- 12f0: 0004c783 lbu a5,0(s1)
- 12f4: 02500713 li a4,37
- 12f8: 0ee78263 beq a5,a4,13dc <stbsp_vsprintfcb+0x150>
- if (f[0] == 0)
- 12fc: cbd9 beqz a5,1392 <stbsp_vsprintfcb+0x106>
- stbsp__chk_cb_buf(1);
- 12fe: 02098663 beqz s3,132a <stbsp_vsprintfcb+0x9e>
- 1302: 4124063b subw a2,s0,s2
- 1306: 1fe00713 li a4,510
- 130a: 02c75063 bge a4,a2,132a <stbsp_vsprintfcb+0x9e>
- 130e: 65a2 ld a1,8(sp)
- 1310: 854a mv a0,s2
- 1312: e81e sd t2,16(sp)
- 1314: 00cd0d3b addw s10,s10,a2
- 1318: 9982 jalr s3
- 131a: 892a mv s2,a0
- 131c: e119 bnez a0,1322 <stbsp_vsprintfcb+0x96>
- 131e: 0200106f j 233e <stbsp_vsprintfcb+0x10b2>
- *bf++ = f[0];
- 1322: 0004c783 lbu a5,0(s1)
- stbsp__chk_cb_buf(1);
- 1326: 63c2 ld t2,16(sp)
- 1328: 842a mv s0,a0
- ++f;
- 132a: 0485 addi s1,s1,1
- *bf++ = f[0];
- 132c: 00f40023 sb a5,0(s0)
- while (((stbsp__uintptr)f) & 3) {
- 1330: 0034f793 andi a5,s1,3
- *bf++ = f[0];
- 1334: 0405 addi s0,s0,1
- while (((stbsp__uintptr)f) & 3) {
- 1336: ffcd bnez a5,12f0 <stbsp_vsprintfcb+0x64>
- v = *(stbsp__uint32 *)f;
- 1338: 4094 lw a3,0(s1)
- c = (~v) & 0x80808080;
- 133a: fff6c793 not a5,a3
- if (((v ^ 0x25252525) - 0x01010101) & c)
- 133e: 0196c733 xor a4,a3,s9
- c = (~v) & 0x80808080;
- 1342: 0077f7b3 and a5,a5,t2
- if (((v ^ 0x25252525) - 0x01010101) & c)
- 1346: 01b7073b addw a4,a4,s11
- 134a: 8f7d and a4,a4,a5
- 134c: 2701 sext.w a4,a4
- 134e: f34d bnez a4,12f0 <stbsp_vsprintfcb+0x64>
- if ((STB_SPRINTF_MIN - (int)(bf - buf)) < 4)
- 1350: 460d li a2,3
- 1352: a805 j 1382 <stbsp_vsprintfcb+0xf6>
- if (callback)
- 1354: 00098863 beqz s3,1364 <stbsp_vsprintfcb+0xd8>
- if ((STB_SPRINTF_MIN - (int)(bf - buf)) < 4)
- 1358: 412407b3 sub a5,s0,s2
- 135c: 40fc07bb subw a5,s8,a5
- 1360: f8f658e3 bge a2,a5,12f0 <stbsp_vsprintfcb+0x64>
- bf[2] = f[2];
- bf[3] = f[3];
- } else
- #endif
- {
- *(stbsp__uint32 *)bf = v;
- 1364: c014 sw a3,0(s0)
- v = *(stbsp__uint32 *)f;
- 1366: 40d4 lw a3,4(s1)
- }
- bf += 4;
- 1368: 0411 addi s0,s0,4
- f += 4;
- 136a: 0491 addi s1,s1,4
- c = (~v) & 0x80808080;
- 136c: fff6c793 not a5,a3
- if (((v ^ 0x25252525) - 0x01010101) & c)
- 1370: 0196c733 xor a4,a3,s9
- c = (~v) & 0x80808080;
- 1374: 0077f7b3 and a5,a5,t2
- if (((v ^ 0x25252525) - 0x01010101) & c)
- 1378: 01b7073b addw a4,a4,s11
- 137c: 8f7d and a4,a4,a5
- 137e: 2701 sext.w a4,a4
- 1380: fb25 bnez a4,12f0 <stbsp_vsprintfcb+0x64>
- if ((v - 0x01010101) & c)
- 1382: 01b6873b addw a4,a3,s11
- 1386: 8ff9 and a5,a5,a4
- 1388: 2781 sext.w a5,a5
- 138a: d7e9 beqz a5,1354 <stbsp_vsprintfcb+0xc8>
- if (f[0] == 0)
- 138c: 0004c783 lbu a5,0(s1)
- 1390: f7bd bnez a5,12fe <stbsp_vsprintfcb+0x72>
-endfmt:
-
- if (!callback)
- *bf = 0;
- else
- stbsp__flush_cb();
- 1392: 8cea mv s9,s10
- 1394: 412404bb subw s1,s0,s2
- if (!callback)
- 1398: 70098563 beqz s3,1aa2 <stbsp_vsprintfcb+0x816>
- stbsp__flush_cb();
- 139c: 00905663 blez s1,13a8 <stbsp_vsprintfcb+0x11c>
- 13a0: 65a2 ld a1,8(sp)
- 13a2: 8626 mv a2,s1
- 13a4: 854a mv a0,s2
- 13a6: 9982 jalr s3
- 13a8: 009c8cbb addw s9,s9,s1
-
-done:
- return tlen + (int)(bf - buf);
-}
- 13ac: 2e813083 ld ra,744(sp)
- 13b0: 2e013403 ld s0,736(sp)
- 13b4: 2d813483 ld s1,728(sp)
- 13b8: 2d013903 ld s2,720(sp)
- 13bc: 2c813983 ld s3,712(sp)
- 13c0: 2a813b83 ld s7,680(sp)
- 13c4: 2a013c03 ld s8,672(sp)
- 13c8: 29013d03 ld s10,656(sp)
- 13cc: 28813d83 ld s11,648(sp)
- 13d0: 8566 mv a0,s9
- 13d2: 29813c83 ld s9,664(sp)
- 13d6: 2f010113 addi sp,sp,752
- 13da: 8082 ret
- 13dc: 2d413023 sd s4,704(sp)
- 13e0: 2b513c23 sd s5,696(sp)
- 13e4: 2b613823 sd s6,688(sp)
- tz = 0;
- 13e8: 00248693 addi a3,s1,2
- fl = 0;
- 13ec: 4e01 li t3,0
- switch (f[0]) {
- 13ee: 03f00593 li a1,63
- 13f2: 00004617 auipc a2,0x4
- 13f6: cc660613 addi a2,a2,-826 # 50b8 <_GLOBAL__sub_I__ZSt3cin+0x10a>
- 13fa: fff6c783 lbu a5,-1(a3)
- 13fe: fff68493 addi s1,a3,-1
- 1402: fe07871b addiw a4,a5,-32
- 1406: 0ff77713 zext.b a4,a4
- 140a: 00e5ec63 bltu a1,a4,1422 <stbsp_vsprintfcb+0x196>
- 140e: 070a slli a4,a4,0x2
- 1410: 9732 add a4,a4,a2
- 1412: 4318 lw a4,0(a4)
- 1414: 9732 add a4,a4,a2
- 1416: 8702 jr a4
- if (f[0] == '*') {
- 1418: 0014c783 lbu a5,1(s1)
- fl |= STBSP__LEADINGZERO;
- 141c: 010e6e13 ori t3,t3,16
- ++f;
- 1420: 0485 addi s1,s1,1
- if (f[0] == '*') {
- 1422: 02a00713 li a4,42
- 1426: 0ce79163 bne a5,a4,14e8 <stbsp_vsprintfcb+0x25c>
- fw = va_arg(va, stbsp__uint32);
- 142a: 000bab03 lw s6,0(s7)
- while ((f[0] >= '0') && (f[0] <= '9')) {
- 142e: 0014c783 lbu a5,1(s1)
- fw = va_arg(va, stbsp__uint32);
- 1432: 0ba1 addi s7,s7,8
- ++f;
- 1434: 0485 addi s1,s1,1
- if (f[0] == '.') {
- 1436: 02e00713 li a4,46
- pr = -1;
- 143a: 58fd li a7,-1
- if (f[0] == '.') {
- 143c: 0ee78663 beq a5,a4,1528 <stbsp_vsprintfcb+0x29c>
- switch (f[0]) {
- 1440: 04900713 li a4,73
- 1444: 10e78263 beq a5,a4,1548 <stbsp_vsprintfcb+0x2bc>
- 1448: f987871b addiw a4,a5,-104
- 144c: 0ff77713 zext.b a4,a4
- 1450: 46c9 li a3,18
- 1452: 02e6e063 bltu a3,a4,1472 <stbsp_vsprintfcb+0x1e6>
- 1456: 00004697 auipc a3,0x4
- 145a: d6268693 addi a3,a3,-670 # 51b8 <_GLOBAL__sub_I__ZSt3cin+0x20a>
- 145e: 070a slli a4,a4,0x2
- 1460: 9736 add a4,a4,a3
- 1462: 4318 lw a4,0(a4)
- 1464: 9736 add a4,a4,a3
- 1466: 8702 jr a4
- if (f[0] == 'h')
- 1468: 0014c783 lbu a5,1(s1)
- fl |= (sizeof(ptrdiff_t) == 8) ? STBSP__INTMAX : 0;
- 146c: 020e6e13 ori t3,t3,32
- ++f;
- 1470: 0485 addi s1,s1,1
- switch (f[0]) {
- 1472: fbf7871b addiw a4,a5,-65
- 1476: 0ff77713 zext.b a4,a4
- 147a: 03700693 li a3,55
- 147e: 0ee6ea63 bltu a3,a4,1572 <stbsp_vsprintfcb+0x2e6>
- 1482: 00004697 auipc a3,0x4
- 1486: d8268693 addi a3,a3,-638 # 5204 <_GLOBAL__sub_I__ZSt3cin+0x256>
- 148a: 070a slli a4,a4,0x2
- 148c: 9736 add a4,a4,a3
- 148e: 4318 lw a4,0(a4)
- 1490: 9736 add a4,a4,a3
- 1492: 8702 jr a4
- fl |= STBSP__METRIC_NOSPACE;
- 1494: 400e6e13 ori t3,t3,1024
- continue;
- 1498: 0685 addi a3,a3,1
- 149a: b785 j 13fa <stbsp_vsprintfcb+0x16e>
- fl |= STBSP__LEFTJUST;
- 149c: 001e6e13 ori t3,t3,1
- continue;
- 14a0: 0685 addi a3,a3,1
- 14a2: bfa1 j 13fa <stbsp_vsprintfcb+0x16e>
- fl |= STBSP__LEADINGPLUS;
- 14a4: 002e6e13 ori t3,t3,2
- continue;
- 14a8: 0685 addi a3,a3,1
- 14aa: bf81 j 13fa <stbsp_vsprintfcb+0x16e>
- fl |= STBSP__TRIPLET_COMMA;
- 14ac: 040e6e13 ori t3,t3,64
- continue;
- 14b0: 0685 addi a3,a3,1
- 14b2: b7a1 j 13fa <stbsp_vsprintfcb+0x16e>
- if (fl & STBSP__METRIC_SUFFIX) {
- 14b4: 100e7793 andi a5,t3,256
- 14b8: 8772 mv a4,t3
- 14ba: 56078363 beqz a5,1a20 <stbsp_vsprintfcb+0x794>
- if (fl & STBSP__METRIC_1024) {
- 14be: 6785 lui a5,0x1
- 14c0: 034e1513 slli a0,t3,0x34
- 14c4: 80078793 addi a5,a5,-2048 # 800 <stbsp__real_to_str+0x658>
- 14c8: 5c055863 bgez a0,1a98 <stbsp_vsprintfcb+0x80c>
- fl |= STBSP__METRIC_JEDEC;
- 14cc: 6785 lui a5,0x1
- 14ce: 8f5d or a4,a4,a5
- 14d0: 00070e1b sext.w t3,a4
- 14d4: 0685 addi a3,a3,1
- 14d6: b715 j 13fa <stbsp_vsprintfcb+0x16e>
- fl |= STBSP__LEADING_0X;
- 14d8: 008e6e13 ori t3,t3,8
- continue;
- 14dc: 0685 addi a3,a3,1
- 14de: bf31 j 13fa <stbsp_vsprintfcb+0x16e>
- fl |= STBSP__LEADINGSPACE;
- 14e0: 004e6e13 ori t3,t3,4
- continue;
- 14e4: 0685 addi a3,a3,1
- 14e6: bf11 j 13fa <stbsp_vsprintfcb+0x16e>
- while ((f[0] >= '0') && (f[0] <= '9')) {
- 14e8: fd07871b addiw a4,a5,-48 # fd0 <_vscanf_core.constprop.0+0x69a>
- 14ec: 0ff77713 zext.b a4,a4
- 14f0: 4625 li a2,9
- fw = 0;
- 14f2: 4b01 li s6,0
- while ((f[0] >= '0') && (f[0] <= '9')) {
- 14f4: 46a5 li a3,9
- 14f6: f4e660e3 bltu a2,a4,1436 <stbsp_vsprintfcb+0x1aa>
- fw = fw * 10 + f[0] - '0';
- 14fa: 002b171b slliw a4,s6,0x2
- 14fe: 0167073b addw a4,a4,s6
- 1502: 0017171b slliw a4,a4,0x1
- f++;
- 1506: 0485 addi s1,s1,1
- fw = fw * 10 + f[0] - '0';
- 1508: 9f3d addw a4,a4,a5
- while ((f[0] >= '0') && (f[0] <= '9')) {
- 150a: 0004c783 lbu a5,0(s1)
- fw = fw * 10 + f[0] - '0';
- 150e: fd070b1b addiw s6,a4,-48
- while ((f[0] >= '0') && (f[0] <= '9')) {
- 1512: fd07871b addiw a4,a5,-48
- 1516: 0ff77713 zext.b a4,a4
- 151a: fee6f0e3 bgeu a3,a4,14fa <stbsp_vsprintfcb+0x26e>
- if (f[0] == '.') {
- 151e: 02e00713 li a4,46
- pr = -1;
- 1522: 58fd li a7,-1
- if (f[0] == '.') {
- 1524: f0e79ee3 bne a5,a4,1440 <stbsp_vsprintfcb+0x1b4>
- if (f[0] == '*') {
- 1528: 0014c783 lbu a5,1(s1)
- 152c: 02a00713 li a4,42
- 1530: 52e79763 bne a5,a4,1a5e <stbsp_vsprintfcb+0x7d2>
- while ((f[0] >= '0') && (f[0] <= '9')) {
- 1534: 0024c783 lbu a5,2(s1)
- switch (f[0]) {
- 1538: 04900713 li a4,73
- pr = va_arg(va, stbsp__uint32);
- 153c: 000ba883 lw a7,0(s7)
- ++f;
- 1540: 0489 addi s1,s1,2
- pr = va_arg(va, stbsp__uint32);
- 1542: 0ba1 addi s7,s7,8
- switch (f[0]) {
- 1544: f0e792e3 bne a5,a4,1448 <stbsp_vsprintfcb+0x1bc>
- if ((f[1] == '6') && (f[2] == '4')) {
- 1548: 0014c783 lbu a5,1(s1)
- 154c: 03600713 li a4,54
- 1550: 00e79463 bne a5,a4,1558 <stbsp_vsprintfcb+0x2cc>
- 1554: 1e60106f j 273a <stbsp_vsprintfcb+0x14ae>
- } else if ((f[1] == '3') && (f[2] == '2')) {
- 1558: 03300713 li a4,51
- 155c: 6ae796e3 bne a5,a4,2408 <stbsp_vsprintfcb+0x117c>
- 1560: 0024c683 lbu a3,2(s1)
- 1564: 03200713 li a4,50
- 1568: 00e69463 bne a3,a4,1570 <stbsp_vsprintfcb+0x2e4>
- 156c: 0ae0106f j 261a <stbsp_vsprintfcb+0x138e>
- ++f;
- 1570: 0485 addi s1,s1,1
- *s = f[0];
- 1572: 26f10fa3 sb a5,639(sp)
- l = 1;
- 1576: 4785 li a5,1
- 1578: d0be sw a5,96(sp)
- lead[0] = 0;
- 157a: 06010423 sb zero,104(sp)
- tail[0] = 0;
- 157e: 06010823 sb zero,112(sp)
- dp = 0;
- 1582: d282 sw zero,100(sp)
- 1584: e0de sd s7,64(sp)
- 1586: 4701 li a4,0
- 1588: 4301 li t1,0
- 158a: 4f81 li t6,0
- 158c: 4685 li a3,1
- 158e: 4a01 li s4,0
- cs = 0;
- 1590: 4281 li t0,0
- s = num + STBSP__NUMSZ - 1;
- 1592: 27f10a93 addi s5,sp,639
- fw = fl = 0;
- 1596: 4e01 li t3,0
- tz = 0;
- 1598: 4881 li a7,0
- if (fl & STBSP__LEADINGZERO) // if leading zeros, everything is in pr
- 159a: 010e7793 andi a5,t3,16
- 159e: 40078ee3 beqz a5,21ba <stbsp_vsprintfcb+0xf2e>
- pr = (fw > pr) ? fw : pr;
- 15a2: 87ba mv a5,a4
- 15a4: 00675363 bge a4,t1,15aa <stbsp_vsprintfcb+0x31e>
- 15a8: 879a mv a5,t1
- 15aa: 0007871b sext.w a4,a5
- fw = 0;
- 15ae: 4301 li t1,0
- if (fw + pr) {
- 15b0: 62070563 beqz a4,1bda <stbsp_vsprintfcb+0x94e>
- sn = lead + 1;
- 15b4: 06910793 addi a5,sp,105
- 15b8: fcbe sd a5,120(sp)
- while (lead[0]) {
- 15ba: 0a0a0863 beqz s4,166a <stbsp_vsprintfcb+0x3de>
- stbsp__cb_buf_clamp(i, lead[0]);
- 15be: f026 sd s1,32(sp)
- 15c0: f436 sd a3,40(sp)
- 15c2: 854a mv a0,s2
- 15c4: 86d2 mv a3,s4
- 15c6: 84ce mv s1,s3
- stbsp__chk_cb_buf(1);
- 15c8: 1fe00b93 li s7,510
- stbsp__cb_buf_clamp(i, lead[0]);
- 15cc: 89be mv s3,a5
- 15ce: 20000b13 li s6,512
- 15d2: 87a2 mv a5,s0
- 15d4: e846 sd a7,16(sp)
- 15d6: 846a mv s0,s10
- 15d8: ec7e sd t6,24(sp)
- 15da: 8d6e mv s10,s11
- 15dc: f872 sd t3,48(sp)
- 15de: 8de6 mv s11,s9
- 15e0: 8a3a mv s4,a4
- 15e2: e496 sd t0,72(sp)
- 15e4: 891a mv s2,t1
- 15e6: 8c9e mv s9,t2
- 15e8: 0006871b sext.w a4,a3
- 15ec: 2e0482e3 beqz s1,20d0 <stbsp_vsprintfcb+0xe44>
- 15f0: 40a7863b subw a2,a5,a0
- 15f4: 40cb083b subw a6,s6,a2
- 15f8: 85c2 mv a1,a6
- 15fa: 01075363 bge a4,a6,1600 <stbsp_vsprintfcb+0x374>
- 15fe: 85ba mv a1,a4
- lead[0] -= (char)i;
- 1600: 9e8d subw a3,a3,a1
- stbsp__cb_buf_clamp(i, lead[0]);
- 1602: 0005871b sext.w a4,a1
- lead[0] -= (char)i;
- 1606: 06d10423 sb a3,104(sp)
- while (i) {
- 160a: c70d beqz a4,1634 <stbsp_vsprintfcb+0x3a8>
- 160c: 7866 ld a6,120(sp)
- 160e: 02071593 slli a1,a4,0x20
- 1612: 9181 srli a1,a1,0x20
- 1614: 00b78633 add a2,a5,a1
- 1618: 8742 mv a4,a6
- *bf++ = *sn++;
- 161a: 00074683 lbu a3,0(a4)
- 161e: 0785 addi a5,a5,1
- while (i) {
- 1620: 0705 addi a4,a4,1
- *bf++ = *sn++;
- 1622: fed78fa3 sb a3,-1(a5)
- while (i) {
- 1626: fec79ae3 bne a5,a2,161a <stbsp_vsprintfcb+0x38e>
- 162a: 982e add a6,a6,a1
- 162c: fcc2 sd a6,120(sp)
- stbsp__chk_cb_buf(1);
- 162e: c899 beqz s1,1644 <stbsp_vsprintfcb+0x3b8>
- 1630: 40a7863b subw a2,a5,a0
- 1634: 00cbd863 bge s7,a2,1644 <stbsp_vsprintfcb+0x3b8>
- 1638: 65a2 ld a1,8(sp)
- 163a: 9c31 addw s0,s0,a2
- 163c: 9482 jalr s1
- 163e: 34050ee3 beqz a0,219a <stbsp_vsprintfcb+0xf0e>
- 1642: 87aa mv a5,a0
- while (lead[0]) {
- 1644: 06814683 lbu a3,104(sp)
- 1648: f2c5 bnez a3,15e8 <stbsp_vsprintfcb+0x35c>
- 164a: 83e6 mv t2,s9
- 164c: 68c2 ld a7,16(sp)
- 164e: 8cee mv s9,s11
- 1650: 6fe2 ld t6,24(sp)
- 1652: 8dea mv s11,s10
- 1654: 76a2 ld a3,40(sp)
- 1656: 8d22 mv s10,s0
- 1658: 7e42 ld t3,48(sp)
- 165a: 843e mv s0,a5
- 165c: 62a6 ld t0,72(sp)
- 165e: 87ce mv a5,s3
- 1660: 89a6 mv s3,s1
- 1662: 7482 ld s1,32(sp)
- 1664: 834a mv t1,s2
- 1666: 8752 mv a4,s4
- 1668: 892a mv s2,a0
- cs = (fl & STBSP__TRIPLET_COMMA) ? ((stbsp__uint32)(c - ((pr + cs) % (c + 1)))) : 0;
- 166a: 040e7b13 andi s6,t3,64
- c = cs >> 24;
- 166e: 0182d61b srliw a2,t0,0x18
- 1672: 0182db9b srliw s7,t0,0x18
- cs = (fl & STBSP__TRIPLET_COMMA) ? ((stbsp__uint32)(c - ((pr + cs) % (c + 1)))) : 0;
- 1676: 4a01 li s4,0
- 1678: 000b0e63 beqz s6,1694 <stbsp_vsprintfcb+0x408>
- cs &= 0xffffff;
- 167c: 02829a13 slli s4,t0,0x28
- 1680: 028a5a13 srli s4,s4,0x28
- cs = (fl & STBSP__TRIPLET_COMMA) ? ((stbsp__uint32)(c - ((pr + cs) % (c + 1)))) : 0;
- 1684: 00ea0a3b addw s4,s4,a4
- 1688: 0016059b addiw a1,a2,1
- 168c: 02ba7a3b remuw s4,s4,a1
- 1690: 41460a3b subw s4,a2,s4
- while (pr > 0) {
- 1694: 0ce05763 blez a4,1762 <stbsp_vsprintfcb+0x4d6>
- *(stbsp__uint32 *)bf = 0x30303030;
- 1698: 30303837 lui a6,0x30303
- 169c: 03080813 addi a6,a6,48 # 30303030 <_ZSt4cerr+0x302fb878>
- 16a0: f026 sd s1,32(sp)
- 16a2: 854a mv a0,s2
- 16a4: 84da mv s1,s6
- 16a6: 895e mv s2,s7
- 16a8: e4d6 sd s5,72(sp)
- 16aa: 8b4e mv s6,s3
- 16ac: 8aea mv s5,s10
- stbsp__chk_cb_buf(1);
- 16ae: 1fe00293 li t0,510
- 16b2: 8d6e mv s10,s11
- *bf++ = stbsp__comma;
- 16b4: 00005f17 auipc t5,0x5
- 16b8: 20cf0f13 addi t5,t5,524 # 68c0 <stbsp__digitpair>
- 16bc: 8de6 mv s11,s9
- *bf++ = '0';
- 16be: 03000e93 li t4,48
- 16c2: e846 sd a7,16(sp)
- 16c4: ec7e sd t6,24(sp)
- 16c6: f436 sd a3,40(sp)
- 16c8: f872 sd t3,48(sp)
- 16ca: e89a sd t1,80(sp)
- 16cc: 89ba mv s3,a4
- 16ce: ecbe sd a5,88(sp)
- 16d0: 8bc2 mv s7,a6
- 16d2: 8c9e mv s9,t2
- stbsp__cb_buf_clamp(i, pr);
- 16d4: 240b0ee3 beqz s6,2130 <stbsp_vsprintfcb+0xea4>
- 16d8: 40a407b3 sub a5,s0,a0
- 16dc: 40fc063b subw a2,s8,a5
- 16e0: 87b2 mv a5,a2
- 16e2: 00c9d363 bge s3,a2,16e8 <stbsp_vsprintfcb+0x45c>
- 16e6: 87ce mv a5,s3
- 16e8: 0007859b sext.w a1,a5
- pr -= i;
- 16ec: 40f989bb subw s3,s3,a5
- if ((fl & STBSP__TRIPLET_COMMA) == 0) {
- 16f0: 32048c63 beqz s1,1a28 <stbsp_vsprintfcb+0x79c>
- while (i) {
- 16f4: 34058a63 beqz a1,1a48 <stbsp_vsprintfcb+0x7bc>
- 16f8: 1582 slli a1,a1,0x20
- *bf++ = stbsp__comma;
- 16fa: 0cdf4603 lbu a2,205(t5)
- 16fe: 9181 srli a1,a1,0x20
- 1700: 95a2 add a1,a1,s0
- 1702: 0405 addi s0,s0,1
- if ((fl & STBSP__TRIPLET_COMMA) && (cs++ == c)) {
- 1704: c481 beqz s1,170c <stbsp_vsprintfcb+0x480>
- 1706: 1d4901e3 beq s2,s4,20c8 <stbsp_vsprintfcb+0xe3c>
- 170a: 2a05 addiw s4,s4,1
- *bf++ = '0';
- 170c: 03000793 li a5,48
- 1710: fef40fa3 sb a5,-1(s0)
- while (i) {
- 1714: fe8597e3 bne a1,s0,1702 <stbsp_vsprintfcb+0x476>
- stbsp__chk_cb_buf(1);
- 1718: 320b0b63 beqz s6,1a4e <stbsp_vsprintfcb+0x7c2>
- 171c: 40a5863b subw a2,a1,a0
- 1720: 32c2d763 bge t0,a2,1a4e <stbsp_vsprintfcb+0x7c2>
- 1724: 65a2 ld a1,8(sp)
- 1726: 01560abb addw s5,a2,s5
- 172a: 9b02 jalr s6
- 172c: 3a050ce3 beqz a0,22e4 <stbsp_vsprintfcb+0x1058>
- 1730: 842a mv s0,a0
- 1732: 1fe00293 li t0,510
- 1736: 00005f17 auipc t5,0x5
- 173a: 18af0f13 addi t5,t5,394 # 68c0 <stbsp__digitpair>
- 173e: 03000e93 li t4,48
- while (pr > 0) {
- 1742: f93049e3 bgtz s3,16d4 <stbsp_vsprintfcb+0x448>
- while (lead[0]) {
- 1746: 83e6 mv t2,s9
- 1748: 68c2 ld a7,16(sp)
- 174a: 8cee mv s9,s11
- 174c: 6fe2 ld t6,24(sp)
- 174e: 8dea mv s11,s10
- 1750: 7482 ld s1,32(sp)
- 1752: 8d56 mv s10,s5
- 1754: 76a2 ld a3,40(sp)
- 1756: 7e42 ld t3,48(sp)
- 1758: 6346 ld t1,80(sp)
- 175a: 67e6 ld a5,88(sp)
- 175c: 6aa6 ld s5,72(sp)
- 175e: 892a mv s2,a0
- 1760: 89da mv s3,s6
- 1762: 06814a03 lbu s4,104(sp)
- sn = lead + 1;
- 1766: fcbe sd a5,120(sp)
- while (lead[0]) {
- 1768: 0a0a0263 beqz s4,180c <stbsp_vsprintfcb+0x580>
- stbsp__cb_buf_clamp(i, lead[0]);
- 176c: ec26 sd s1,24(sp)
- 176e: f036 sd a3,32(sp)
- 1770: 854a mv a0,s2
- 1772: 86d2 mv a3,s4
- 1774: 84ce mv s1,s3
- 1776: 87a2 mv a5,s0
- stbsp__chk_cb_buf(1);
- 1778: 1fe00b93 li s7,510
- stbsp__cb_buf_clamp(i, lead[0]);
- 177c: 846a mv s0,s10
- 177e: 20000b13 li s6,512
- 1782: 8d6e mv s10,s11
- 1784: e846 sd a7,16(sp)
- 1786: 8de6 mv s11,s9
- 1788: 8a7e mv s4,t6
- 178a: 8972 mv s2,t3
- 178c: 899a mv s3,t1
- 178e: 8c9e mv s9,t2
- 1790: 0006871b sext.w a4,a3
- 1794: 140482e3 beqz s1,20d8 <stbsp_vsprintfcb+0xe4c>
- 1798: 40a7863b subw a2,a5,a0
- 179c: 40cb083b subw a6,s6,a2
- 17a0: 85c2 mv a1,a6
- 17a2: 01075363 bge a4,a6,17a8 <stbsp_vsprintfcb+0x51c>
- 17a6: 85ba mv a1,a4
- lead[0] -= (char)i;
- 17a8: 9e8d subw a3,a3,a1
- stbsp__cb_buf_clamp(i, lead[0]);
- 17aa: 0005871b sext.w a4,a1
- lead[0] -= (char)i;
- 17ae: 06d10423 sb a3,104(sp)
- while (i) {
- 17b2: c70d beqz a4,17dc <stbsp_vsprintfcb+0x550>
- 17b4: 7866 ld a6,120(sp)
- 17b6: 02071593 slli a1,a4,0x20
- 17ba: 9181 srli a1,a1,0x20
- 17bc: 00b78633 add a2,a5,a1
- 17c0: 8742 mv a4,a6
- *bf++ = *sn++;
- 17c2: 00074683 lbu a3,0(a4)
- 17c6: 0785 addi a5,a5,1
- while (i) {
- 17c8: 0705 addi a4,a4,1
- *bf++ = *sn++;
- 17ca: fed78fa3 sb a3,-1(a5)
- while (i) {
- 17ce: fec79ae3 bne a5,a2,17c2 <stbsp_vsprintfcb+0x536>
- 17d2: 982e add a6,a6,a1
- 17d4: fcc2 sd a6,120(sp)
- stbsp__chk_cb_buf(1);
- 17d6: c899 beqz s1,17ec <stbsp_vsprintfcb+0x560>
- 17d8: 40a7863b subw a2,a5,a0
- 17dc: 00cbd863 bge s7,a2,17ec <stbsp_vsprintfcb+0x560>
- 17e0: 65a2 ld a1,8(sp)
- 17e2: 9c31 addw s0,s0,a2
- 17e4: 9482 jalr s1
- 17e6: 1a050ae3 beqz a0,219a <stbsp_vsprintfcb+0xf0e>
- 17ea: 87aa mv a5,a0
- while (lead[0]) {
- 17ec: 06814683 lbu a3,104(sp)
- 17f0: f2c5 bnez a3,1790 <stbsp_vsprintfcb+0x504>
- 17f2: 834e mv t1,s3
- 17f4: 68c2 ld a7,16(sp)
- 17f6: 89a6 mv s3,s1
- 17f8: 7682 ld a3,32(sp)
- 17fa: 64e2 ld s1,24(sp)
- 17fc: 8e4a mv t3,s2
- 17fe: 83e6 mv t2,s9
- 1800: 8fd2 mv t6,s4
- 1802: 8cee mv s9,s11
- 1804: 892a mv s2,a0
- 1806: 8dea mv s11,s10
- 1808: 8d22 mv s10,s0
- 180a: 843e mv s0,a5
- while (n) {
- 180c: c6f9 beqz a3,18da <stbsp_vsprintfcb+0x64e>
- STBSP__UNALIGNED(while (i >= 4) {
- 180e: ec26 sd s1,24(sp)
- 1810: 854a mv a0,s2
- 1812: 84d6 mv s1,s5
- 1814: 896a mv s2,s10
- 1816: 87a2 mv a5,s0
- 1818: 8d6e mv s10,s11
- stbsp__chk_cb_buf(1);
- 181a: 1fe00b93 li s7,510
- STBSP__UNALIGNED(while (i >= 4) {
- 181e: 8de6 mv s11,s9
- stbsp__cb_buf_clamp(i, n);
- 1820: 20000b13 li s6,512
- STBSP__UNALIGNED(while (i >= 4) {
- 1824: 4a0d li s4,3
- 1826: e87e sd t6,16(sp)
- 1828: f072 sd t3,32(sp)
- 182a: 8ac6 mv s5,a7
- 182c: f41a sd t1,40(sp)
- 182e: 8436 mv s0,a3
- 1830: 8c9e mv s9,t2
- stbsp__cb_buf_clamp(i, n);
- 1832: 0004071b sext.w a4,s0
- 1836: 100982e3 beqz s3,213a <stbsp_vsprintfcb+0xeae>
- 183a: 40a78633 sub a2,a5,a0
- 183e: 40cb05bb subw a1,s6,a2
- 1842: 862e mv a2,a1
- 1844: 00b75363 bge a4,a1,184a <stbsp_vsprintfcb+0x5be>
- 1848: 863a mv a2,a4
- 184a: 0006071b sext.w a4,a2
- n -= i;
- 184e: 9c11 subw s0,s0,a2
- STBSP__UNALIGNED(while (i >= 4) {
- 1850: 14ea50e3 bge s4,a4,2190 <stbsp_vsprintfcb+0xf04>
- 1854: ffc70f1b addiw t5,a4,-4
- 1858: 002f5e9b srliw t4,t5,0x2
- 185c: 001e8e1b addiw t3,t4,1
- 1860: 0e0a slli t3,t3,0x2
- 1862: 01c785b3 add a1,a5,t3
- 1866: 8626 mv a2,s1
- 1868: 4218 lw a4,0(a2)
- 186a: 0791 addi a5,a5,4
- 186c: 0611 addi a2,a2,4
- 186e: 2701 sext.w a4,a4
- 1870: fee7ae23 sw a4,-4(a5)
- 1874: feb79ae3 bne a5,a1,1868 <stbsp_vsprintfcb+0x5dc>
- 1878: 002e9e9b slliw t4,t4,0x2
- 187c: 41df073b subw a4,t5,t4
- while (i) {
- 1880: 94f2 add s1,s1,t3
- 1882: c31d beqz a4,18a8 <stbsp_vsprintfcb+0x61c>
- 1884: 8626 mv a2,s1
- 1886: 87ae mv a5,a1
- 1888: 00e58f3b addw t5,a1,a4
- *bf++ = *s++;
- 188c: 00064e83 lbu t4,0(a2)
- 1890: 0785 addi a5,a5,1
- while (i) {
- 1892: 00078e1b sext.w t3,a5
- *bf++ = *s++;
- 1896: ffd78fa3 sb t4,-1(a5)
- 189a: 0605 addi a2,a2,1
- while (i) {
- 189c: ffcf18e3 bne t5,t3,188c <stbsp_vsprintfcb+0x600>
- 18a0: 1702 slli a4,a4,0x20
- 18a2: 9301 srli a4,a4,0x20
- 18a4: 95ba add a1,a1,a4
- 18a6: 94ba add s1,s1,a4
- stbsp__chk_cb_buf(1);
- 18a8: 1a098763 beqz s3,1a56 <stbsp_vsprintfcb+0x7ca>
- 18ac: 40a5863b subw a2,a1,a0
- 18b0: 1acbd363 bge s7,a2,1a56 <stbsp_vsprintfcb+0x7ca>
- 18b4: 65a2 ld a1,8(sp)
- 18b6: 0126093b addw s2,a2,s2
- 18ba: 9982 jalr s3
- 18bc: 20050be3 beqz a0,22d2 <stbsp_vsprintfcb+0x1046>
- 18c0: 87aa mv a5,a0
- while (n) {
- 18c2: f825 bnez s0,1832 <stbsp_vsprintfcb+0x5a6>
- 18c4: 6fc2 ld t6,16(sp)
- 18c6: 64e2 ld s1,24(sp)
- 18c8: 7e02 ld t3,32(sp)
- 18ca: 7322 ld t1,40(sp)
- 18cc: 83e6 mv t2,s9
- 18ce: 88d6 mv a7,s5
- 18d0: 8cee mv s9,s11
- 18d2: 843e mv s0,a5
- 18d4: 8dea mv s11,s10
- 18d6: 8d4a mv s10,s2
- 18d8: 892a mv s2,a0
- while (tz) {
- 18da: 08088863 beqz a7,196a <stbsp_vsprintfcb+0x6de>
- *(stbsp__uint32 *)bf = 0x30303030;
- 18de: 30303b37 lui s6,0x30303
- *bf++ = '0';
- 18e2: 03000a13 li s4,48
- while (i >= 4) {
- 18e6: 4a8d li s5,3
- stbsp__chk_cb_buf(1);
- 18e8: 1fe00693 li a3,510
- *(stbsp__uint32 *)bf = 0x30303030;
- 18ec: 030b0b13 addi s6,s6,48 # 30303030 <_ZSt4cerr+0x302fb878>
- stbsp__cb_buf_clamp(i, tz);
- 18f0: 20000b93 li s7,512
- 18f4: 040989e3 beqz s3,2146 <stbsp_vsprintfcb+0xeba>
- 18f8: 41240633 sub a2,s0,s2
- 18fc: 40cb87bb subw a5,s7,a2
- 1900: 873e mv a4,a5
- 1902: 00f8d363 bge a7,a5,1908 <stbsp_vsprintfcb+0x67c>
- 1906: 8746 mv a4,a7
- 1908: 0007079b sext.w a5,a4
- tz -= i;
- 190c: 40e888bb subw a7,a7,a4
- while (i) {
- 1910: 08078ee3 beqz a5,21ac <stbsp_vsprintfcb+0xf20>
- if ((((stbsp__uintptr)bf) & 3) == 0)
- 1914: 00347713 andi a4,s0,3
- 1918: e719 bnez a4,1926 <stbsp_vsprintfcb+0x69a>
- 191a: 0390006f j 2152 <stbsp_vsprintfcb+0xec6>
- 191e: 00347713 andi a4,s0,3
- 1922: 7a070f63 beqz a4,20e0 <stbsp_vsprintfcb+0xe54>
- *bf++ = '0';
- 1926: 01440023 sb s4,0(s0)
- --i;
- 192a: 37fd addiw a5,a5,-1
- *bf++ = '0';
- 192c: 0405 addi s0,s0,1
- while (i) {
- 192e: fbe5 bnez a5,191e <stbsp_vsprintfcb+0x692>
- stbsp__chk_cb_buf(1);
- 1930: 02098b63 beqz s3,1966 <stbsp_vsprintfcb+0x6da>
- 1934: 4124063b subw a2,s0,s2
- 1938: 02c6d763 bge a3,a2,1966 <stbsp_vsprintfcb+0x6da>
- 193c: 65a2 ld a1,8(sp)
- 193e: 854a mv a0,s2
- 1940: f81e sd t2,48(sp)
- 1942: f41a sd t1,40(sp)
- 1944: f072 sd t3,32(sp)
- 1946: ec7e sd t6,24(sp)
- 1948: e846 sd a7,16(sp)
- 194a: 00cd0d3b addw s10,s10,a2
- 194e: 9982 jalr s3
- 1950: 892a mv s2,a0
- 1952: 1a0502e3 beqz a0,22f6 <stbsp_vsprintfcb+0x106a>
- 1956: 73c2 ld t2,48(sp)
- 1958: 7322 ld t1,40(sp)
- 195a: 7e02 ld t3,32(sp)
- 195c: 6fe2 ld t6,24(sp)
- 195e: 68c2 ld a7,16(sp)
- 1960: 842a mv s0,a0
- 1962: 1fe00693 li a3,510
- while (tz) {
- 1966: f80897e3 bnez a7,18f4 <stbsp_vsprintfcb+0x668>
- sn = tail + 1;
- 196a: 07110793 addi a5,sp,113
- 196e: fcbe sd a5,120(sp)
- while (tail[0]) {
- 1970: 080f8763 beqz t6,19fe <stbsp_vsprintfcb+0x772>
- stbsp__cb_buf_clamp(i, tail[0]);
- 1974: 854a mv a0,s2
- 1976: 8b6a mv s6,s10
- stbsp__chk_cb_buf(1);
- 1978: 1fe00a93 li s5,510
- stbsp__cb_buf_clamp(i, tail[0]);
- 197c: 8d4e mv s10,s3
- 197e: 20000a13 li s4,512
- 1982: 8bf2 mv s7,t3
- 1984: 891a mv s2,t1
- 1986: 899e mv s3,t2
- 1988: 000f879b sext.w a5,t6
- 198c: 7c0d0863 beqz s10,215c <stbsp_vsprintfcb+0xed0>
- 1990: 40a4063b subw a2,s0,a0
- 1994: 40ca06bb subw a3,s4,a2
- 1998: 8736 mv a4,a3
- 199a: 00d7d363 bge a5,a3,19a0 <stbsp_vsprintfcb+0x714>
- 199e: 873e mv a4,a5
- tail[0] -= (char)i;
- 19a0: 40ef8fbb subw t6,t6,a4
- stbsp__cb_buf_clamp(i, tail[0]);
- 19a4: 0007079b sext.w a5,a4
- tail[0] -= (char)i;
- 19a8: 07f10823 sb t6,112(sp)
- while (i) {
- 19ac: c795 beqz a5,19d8 <stbsp_vsprintfcb+0x74c>
- 19ae: 75e6 ld a1,120(sp)
- 19b0: 02079613 slli a2,a5,0x20
- 19b4: 9201 srli a2,a2,0x20
- 19b6: 00c406b3 add a3,s0,a2
- 19ba: 87ae mv a5,a1
- *bf++ = *sn++;
- 19bc: 0007c703 lbu a4,0(a5)
- 19c0: 0405 addi s0,s0,1
- while (i) {
- 19c2: 0785 addi a5,a5,1
- *bf++ = *sn++;
- 19c4: fee40fa3 sb a4,-1(s0)
- while (i) {
- 19c8: fed41ae3 bne s0,a3,19bc <stbsp_vsprintfcb+0x730>
- 19cc: 95b2 add a1,a1,a2
- 19ce: fcae sd a1,120(sp)
- stbsp__chk_cb_buf(1);
- 19d0: 000d0d63 beqz s10,19ea <stbsp_vsprintfcb+0x75e>
- 19d4: 40a4063b subw a2,s0,a0
- 19d8: 00cad963 bge s5,a2,19ea <stbsp_vsprintfcb+0x75e>
- 19dc: 65a2 ld a1,8(sp)
- 19de: 00cb0b3b addw s6,s6,a2
- 19e2: 9d02 jalr s10
- 19e4: 200509e3 beqz a0,23f6 <stbsp_vsprintfcb+0x116a>
- 19e8: 842a mv s0,a0
- while (tail[0]) {
- 19ea: 07014f83 lbu t6,112(sp)
- 19ee: f80f9de3 bnez t6,1988 <stbsp_vsprintfcb+0x6fc>
- 19f2: 834a mv t1,s2
- 19f4: 83ce mv t2,s3
- 19f6: 8e5e mv t3,s7
- 19f8: 89ea mv s3,s10
- 19fa: 892a mv s2,a0
- 19fc: 8d5a mv s10,s6
- if (fl & STBSP__LEFTJUST)
- 19fe: 001e7e13 andi t3,t3,1
- 1a02: 000e0663 beqz t3,1a0e <stbsp_vsprintfcb+0x782>
- if (fw > 0) {
- 1a06: 00605463 blez t1,1a0e <stbsp_vsprintfcb+0x782>
- 1a0a: 0300106f j 2a3a <stbsp_vsprintfcb+0x17ae>
- for (;;) {
- 1a0e: 6b86 ld s7,64(sp)
- 1a10: 2c013a03 ld s4,704(sp)
- 1a14: 2b813a83 ld s5,696(sp)
- 1a18: 2b013b03 ld s6,688(sp)
- ++f;
- 1a1c: 0485 addi s1,s1,1
- for (;;) {
- 1a1e: b0f1 j 12ea <stbsp_vsprintfcb+0x5e>
- fl |= STBSP__METRIC_SUFFIX;
- 1a20: 100e6e13 ori t3,t3,256
- continue;
- 1a24: 0685 addi a3,a3,1
- 1a26: bad1 j 13fa <stbsp_vsprintfcb+0x16e>
- while (i) {
- 1a28: 0e0580e3 beqz a1,2308 <stbsp_vsprintfcb+0x107c>
- if ((((stbsp__uintptr)bf) & 3) == 0)
- 1a2c: 00347793 andi a5,s0,3
- 1a30: e799 bnez a5,1a3e <stbsp_vsprintfcb+0x7b2>
- 1a32: 0dd0006f j 230e <stbsp_vsprintfcb+0x1082>
- 1a36: 00347793 andi a5,s0,3
- 1a3a: 72078463 beqz a5,2162 <stbsp_vsprintfcb+0xed6>
- *bf++ = '0';
- 1a3e: 01d40023 sb t4,0(s0)
- --i;
- 1a42: 35fd addiw a1,a1,-1
- *bf++ = '0';
- 1a44: 0405 addi s0,s0,1
- while (i) {
- 1a46: f9e5 bnez a1,1a36 <stbsp_vsprintfcb+0x7aa>
- while (i) {
- 1a48: 85a2 mv a1,s0
- stbsp__chk_cb_buf(1);
- 1a4a: cc0b19e3 bnez s6,171c <stbsp_vsprintfcb+0x490>
- 1a4e: 842e mv s0,a1
- while (pr > 0) {
- 1a50: c93042e3 bgtz s3,16d4 <stbsp_vsprintfcb+0x448>
- 1a54: b9cd j 1746 <stbsp_vsprintfcb+0x4ba>
- while (i) {
- 1a56: 87ae mv a5,a1
- while (n) {
- 1a58: dc041de3 bnez s0,1832 <stbsp_vsprintfcb+0x5a6>
- 1a5c: b5a5 j 18c4 <stbsp_vsprintfcb+0x638>
- while ((f[0] >= '0') && (f[0] <= '9')) {
- 1a5e: fd07871b addiw a4,a5,-48
- 1a62: 0ff77713 zext.b a4,a4
- 1a66: 4625 li a2,9
- ++f;
- 1a68: 0485 addi s1,s1,1
- pr = 0;
- 1a6a: 4881 li a7,0
- while ((f[0] >= '0') && (f[0] <= '9')) {
- 1a6c: 46a5 li a3,9
- 1a6e: 9ce669e3 bltu a2,a4,1440 <stbsp_vsprintfcb+0x1b4>
- pr = pr * 10 + f[0] - '0';
- 1a72: 0028971b slliw a4,a7,0x2
- 1a76: 0117073b addw a4,a4,a7
- 1a7a: 0017171b slliw a4,a4,0x1
- f++;
- 1a7e: 0485 addi s1,s1,1
- pr = pr * 10 + f[0] - '0';
- 1a80: 9f3d addw a4,a4,a5
- while ((f[0] >= '0') && (f[0] <= '9')) {
- 1a82: 0004c783 lbu a5,0(s1)
- pr = pr * 10 + f[0] - '0';
- 1a86: fd07089b addiw a7,a4,-48
- while ((f[0] >= '0') && (f[0] <= '9')) {
- 1a8a: fd07871b addiw a4,a5,-48
- 1a8e: 0ff77713 zext.b a4,a4
- 1a92: fee6f0e3 bgeu a3,a4,1a72 <stbsp_vsprintfcb+0x7e6>
- 1a96: b26d j 1440 <stbsp_vsprintfcb+0x1b4>
- fl |= STBSP__METRIC_1024;
- 1a98: 8f5d or a4,a4,a5
- 1a9a: 00070e1b sext.w t3,a4
- 1a9e: 0685 addi a3,a3,1
- 1aa0: baa9 j 13fa <stbsp_vsprintfcb+0x16e>
- *bf = 0;
- 1aa2: 00040023 sb zero,0(s0)
- 1aa6: b209 j 13a8 <stbsp_vsprintfcb+0x11c>
- if (f[0] == 'l') {
- 1aa8: 0014c783 lbu a5,1(s1)
- 1aac: 06c00713 li a4,108
- fl |= ((sizeof(long) == 8) ? STBSP__INTMAX : 0);
- 1ab0: 020e6e13 ori t3,t3,32
- if (f[0] == 'l') {
- 1ab4: 00e78c63 beq a5,a4,1acc <stbsp_vsprintfcb+0x840>
- ++f;
- 1ab8: 0485 addi s1,s1,1
- 1aba: ba65 j 1472 <stbsp_vsprintfcb+0x1e6>
- if (f[0] == 'h')
- 1abc: 0014c783 lbu a5,1(s1)
- 1ac0: 06800713 li a4,104
- fl |= STBSP__HALFWIDTH;
- 1ac4: 200e6e13 ori t3,t3,512
- if (f[0] == 'h')
- 1ac8: fee798e3 bne a5,a4,1ab8 <stbsp_vsprintfcb+0x82c>
- if ((f[1] == '6') && (f[2] == '4')) {
- 1acc: 0024c783 lbu a5,2(s1)
- ++f;
- 1ad0: 0489 addi s1,s1,2
- 1ad2: b245 j 1472 <stbsp_vsprintfcb+0x1e6>
- s = va_arg(va, char *);
- 1ad4: 008b8713 addi a4,s7,8
- 1ad8: e0ba sd a4,64(sp)
- if (fl & STBSP__INTMAX) {
- 1ada: 020e7693 andi a3,t3,32
- 1ade: 8772 mv a4,t3
- 1ae0: 24069ee3 bnez a3,253c <stbsp_vsprintfcb+0x12b0>
- stbsp__int32 i = va_arg(va, stbsp__int32);
- 1ae4: 000ba683 lw a3,0(s7)
- if ((f[0] != 'u') && (i < 0)) {
- 1ae8: 07500613 li a2,117
- n64 = (stbsp__uint32)i;
- 1aec: 02069f13 slli t5,a3,0x20
- 1af0: 020f5f13 srli t5,t5,0x20
- if ((f[0] != 'u') && (i < 0)) {
- 1af4: 00c78a63 beq a5,a2,1b08 <stbsp_vsprintfcb+0x87c>
- 1af8: 0006d863 bgez a3,1b08 <stbsp_vsprintfcb+0x87c>
- fl |= STBSP__NEGATIVE;
- 1afc: 08076713 ori a4,a4,128
- n64 = (stbsp__uint32)-i;
- 1b00: 40d00f3b negw t5,a3
- fl |= STBSP__NEGATIVE;
- 1b04: 00070e1b sext.w t3,a4
- if (fl & STBSP__METRIC_SUFFIX) {
- 1b08: 100e7693 andi a3,t3,256
- 1b0c: 5c0683e3 beqz a3,28d2 <stbsp_vsprintfcb+0x1646>
- if (n64 < 1024)
- 1b10: 3ff00793 li a5,1023
- 1b14: 01e7e463 bltu a5,t5,1b1c <stbsp_vsprintfcb+0x890>
- 1b18: 0ea0106f j 2c02 <stbsp_vsprintfcb+0x1976>
- else if (pr == -1)
- 1b1c: 57fd li a5,-1
- 1b1e: 30f887e3 beq a7,a5,262c <stbsp_vsprintfcb+0x13a0>
- fv = (double)(stbsp__int64)n64;
- 1b22: d22f7553 fcvt.d.l fa0,t5
- if (fl & STBSP__METRIC_1024)
- 1b26: 034e1793 slli a5,t3,0x34
- 1b2a: 0007c463 bltz a5,1b32 <stbsp_vsprintfcb+0x8a6>
- 1b2e: 2300106f j 2d5e <stbsp_vsprintfcb+0x1ad2>
- divisor = 1024.0;
- 1b32: 00004797 auipc a5,0x4
- 1b36: c767b787 fld fa5,-906(a5) # 57a8 <STDIN_FD+0x20>
- if ((fv < divisor) && (fv > -divisor))
- 1b3a: 22f79753 fneg.d fa4,fa5
- fl += 0x1000000;
- 1b3e: 010006b7 lui a3,0x1000
- while (fl < 0x4000000) {
- 1b42: 04000737 lui a4,0x4000
- if ((fv < divisor) && (fv > -divisor))
- 1b46: a2f517d3 flt.d a5,fa0,fa5
- 1b4a: c789 beqz a5,1b54 <stbsp_vsprintfcb+0x8c8>
- 1b4c: a2a717d3 flt.d a5,fa4,fa0
- 1b50: 3e079863 bnez a5,1f40 <stbsp_vsprintfcb+0xcb4>
- fl += 0x1000000;
- 1b54: 01c68e3b addw t3,a3,t3
- fv /= divisor;
- 1b58: 1af57553 fdiv.d fa0,fa0,fa5
- while (fl < 0x4000000) {
- 1b5c: feee65e3 bltu t3,a4,1b46 <stbsp_vsprintfcb+0x8ba>
- 1b60: a6c5 j 1f40 <stbsp_vsprintfcb+0xcb4>
- h = (f[0] == 'X') ? hexu : hex;
- 1b62: 05800693 li a3,88
- if (fl & STBSP__INTMAX) {
- 1b66: 020e7713 andi a4,t3,32
- h = (f[0] == 'X') ? hexu : hex;
- 1b6a: 00005817 auipc a6,0x5
- 1b6e: e3e80813 addi a6,a6,-450 # 69a8 <hex.0>
- 1b72: 00d79663 bne a5,a3,1b7e <stbsp_vsprintfcb+0x8f2>
- 1b76: 00005817 auipc a6,0x5
- 1b7a: e1a80813 addi a6,a6,-486 # 6990 <hexu.1>
- l = (4 << 4) | (4 << 8);
- 1b7e: 44000793 li a5,1088
- 1b82: d0be sw a5,96(sp)
- if (fl & STBSP__LEADING_0X) {
- 1b84: 008e7793 andi a5,t3,8
- 1b88: 7a079263 bnez a5,232c <stbsp_vsprintfcb+0x10a0>
- lead[0] = 0;
- 1b8c: 06010423 sb zero,104(sp)
- s = va_arg(va, char *);
- 1b90: 008b8793 addi a5,s7,8
- 1b94: e0be sd a5,64(sp)
- if (fl & STBSP__INTMAX)
- 1b96: 72070b63 beqz a4,22cc <stbsp_vsprintfcb+0x1040>
- n64 = va_arg(va, stbsp__uint64);
- 1b9a: 000bb683 ld a3,0(s7)
- dp = 0;
- 1b9e: d282 sw zero,100(sp)
- tail[0] = 0;
- 1ba0: 06010823 sb zero,112(sp)
- if ((fl & STBSP__LEFTJUST) == 0) {
- 1ba4: 001e7513 andi a0,t3,1
- if (n64 == 0) {
- 1ba8: 380694e3 bnez a3,2730 <stbsp_vsprintfcb+0x14a4>
- lead[0] = 0;
- 1bac: 06010423 sb zero,104(sp)
- if (pr == 0) {
- 1bb0: 78089a63 bnez a7,2344 <stbsp_vsprintfcb+0x10b8>
- if (fw < (stbsp__int32)n)
- 1bb4: fffb4313 not t1,s6
- 1bb8: 43f35313 srai t1,t1,0x3f
- l = 0;
- 1bbc: d082 sw zero,96(sp)
- if (fw < (stbsp__int32)n)
- 1bbe: 01637333 and t1,t1,s6
- goto scopy;
- 1bc2: 4701 li a4,0
- 1bc4: 4f81 li t6,0
- 1bc6: 4a01 li s4,0
- cs = 0;
- 1bc8: 4281 li t0,0
- s = num + STBSP__NUMSZ;
- 1bca: 28010a93 addi s5,sp,640
- if ((fl & STBSP__LEFTJUST) == 0) {
- 1bce: 9c0506e3 beqz a0,159a <stbsp_vsprintfcb+0x30e>
- if (fw + pr) {
- 1bd2: 00e307bb addw a5,t1,a4
- 1bd6: 9c079fe3 bnez a5,15b4 <stbsp_vsprintfcb+0x328>
- 1bda: 06910793 addi a5,sp,105
- 1bde: b661 j 1766 <stbsp_vsprintfcb+0x4da>
- h = (f[0] == 'E') ? hexu : hex;
- 1be0: 04500713 li a4,69
- 1be4: 00005317 auipc t1,0x5
- 1be8: dc430313 addi t1,t1,-572 # 69a8 <hex.0>
- 1bec: 1ce78ae3 beq a5,a4,25c0 <stbsp_vsprintfcb+0x1334>
- fv = va_arg(va, double);
- 1bf0: 008b8713 addi a4,s7,8
- if (pr == -1)
- 1bf4: 57fd li a5,-1
- fv = va_arg(va, double);
- 1bf6: e0ba sd a4,64(sp)
- 1bf8: 000bb507 fld fa0,0(s7)
- if (pr == -1)
- 1bfc: 1af88ce3 beq a7,a5,25b4 <stbsp_vsprintfcb+0x1328>
- if (stbsp__real_to_str(&sn, &l, num, &dp, fv, pr | 0x80000000))
- 1c00: 80000737 lui a4,0x80000
- 1c04: 00e8e733 or a4,a7,a4
- 1c08: 2701 sext.w a4,a4
- 1c0a: 10d4 addi a3,sp,100
- 1c0c: 0110 addi a2,sp,128
- 1c0e: 108c addi a1,sp,96
- 1c10: 18a8 addi a0,sp,120
- 1c12: f41e sd t2,40(sp)
- 1c14: f01a sd t1,32(sp)
- 1c16: ec72 sd t3,24(sp)
- 1c18: e846 sd a7,16(sp)
- 1c1a: d8efe0ef jal 1a8 <stbsp__real_to_str>
- 1c1e: 68c2 ld a7,16(sp)
- 1c20: 6e62 ld t3,24(sp)
- 1c22: 7302 ld t1,32(sp)
- 1c24: 73a2 ld t2,40(sp)
- if (dp == STBSP__SPECIAL) {
- 1c26: 5796 lw a5,100(sp)
- s = (char *)sn;
- 1c28: 7ae6 ld s5,120(sp)
- if ((l - 1) > (stbsp__uint32)pr)
- 1c2a: 5686 lw a3,96(sp)
- if (stbsp__real_to_str(&sn, &l, num, &dp, fv, pr | 0x80000000))
- 1c2c: 3c0511e3 bnez a0,27ee <stbsp_vsprintfcb+0x1562>
- tail[0] = 0;
- 1c30: 06010823 sb zero,112(sp)
- sign[0] = 0;
- 1c34: 06010423 sb zero,104(sp)
- } else if (fl & STBSP__LEADINGSPACE) {
- 1c38: 004e7713 andi a4,t3,4
- 1c3c: 6a070ee3 beqz a4,2af8 <stbsp_vsprintfcb+0x186c>
- sign[0] = 1;
- 1c40: 6709 lui a4,0x2
- 1c42: 0705 addi a4,a4,1 # 2001 <stbsp_vsprintfcb+0xd75>
- 1c44: 06e11423 sh a4,104(sp)
- if (dp == STBSP__SPECIAL) {
- 1c48: 671d lui a4,0x7
- 1c4a: 1ee794e3 bne a5,a4,2632 <stbsp_vsprintfcb+0x13a6>
- if (pr < (stbsp__int32)l)
- 1c4e: 0006879b sext.w a5,a3
- n = pr + lead[0] + tail[0] + tz;
- 1c52: 06814a03 lbu s4,104(sp)
- if (pr < (stbsp__int32)l)
- 1c56: fff7c793 not a5,a5
- n = pr + lead[0] + tail[0] + tz;
- 1c5a: 07014f83 lbu t6,112(sp)
- if (pr < (stbsp__int32)l)
- 1c5e: 97fd srai a5,a5,0x3f
- 1c60: 8ff5 and a5,a5,a3
- n = pr + lead[0] + tail[0] + tz;
- 1c62: 00fa073b addw a4,s4,a5
- 1c66: 01f7063b addw a2,a4,t6
- 1c6a: 8732 mv a4,a2
- if ((fl & STBSP__LEFTJUST) == 0) {
- 1c6c: 001e7513 andi a0,t3,1
- if (pr < (stbsp__int32)l)
- 1c70: 2781 sext.w a5,a5
- if (fw < (stbsp__int32)n)
- 1c72: 835a mv t1,s6
- 1c74: 00cb5363 bge s6,a2,1c7a <stbsp_vsprintfcb+0x9ee>
- 1c78: 8332 mv t1,a2
- fw -= n;
- 1c7a: 40e3033b subw t1,t1,a4
- cs = 0;
- 1c7e: 4281 li t0,0
- pr -= l;
- 1c80: 40d7873b subw a4,a5,a3
- tz = 0;
- 1c84: 4881 li a7,0
- goto scopy;
- 1c86: b7a1 j 1bce <stbsp_vsprintfcb+0x942>
- h = (f[0] == 'G') ? hexu : hex;
- 1c88: 04700713 li a4,71
- 1c8c: 00005317 auipc t1,0x5
- 1c90: d1c30313 addi t1,t1,-740 # 69a8 <hex.0>
- 1c94: 14e783e3 beq a5,a4,25da <stbsp_vsprintfcb+0x134e>
- fv = va_arg(va, double);
- 1c98: 008b8713 addi a4,s7,8
- if (pr == -1)
- 1c9c: 57fd li a5,-1
- fv = va_arg(va, double);
- 1c9e: e0ba sd a4,64(sp)
- 1ca0: 000bb507 fld fa0,0(s7)
- if (pr == -1)
- 1ca4: 12f884e3 beq a7,a5,25cc <stbsp_vsprintfcb+0x1340>
- else if (pr == 0)
- 1ca8: 6e0887e3 beqz a7,2b96 <stbsp_vsprintfcb+0x190a>
- if (stbsp__real_to_str(&sn, &l, num, &dp, fv, (pr - 1) | 0x80000000))
- 1cac: fff8871b addiw a4,a7,-1
- 1cb0: 800007b7 lui a5,0x80000
- 1cb4: 8f5d or a4,a4,a5
- 1cb6: 2701 sext.w a4,a4
- l = stbsp__strlen_limited(s, (pr >= 0) ? pr : ~0u);
- 1cb8: 00088a9b sext.w s5,a7
- 1cbc: 8a46 mv s4,a7
- if (stbsp__real_to_str(&sn, &l, num, &dp, fv, (pr - 1) | 0x80000000))
- 1cbe: 10d4 addi a3,sp,100
- 1cc0: 0110 addi a2,sp,128
- 1cc2: 108c addi a1,sp,96
- 1cc4: 18a8 addi a0,sp,120
- 1cc6: f01e sd t2,32(sp)
- 1cc8: ec1a sd t1,24(sp)
- 1cca: e872 sd t3,16(sp)
- 1ccc: cdcfe0ef jal 1a8 <stbsp__real_to_str>
- 1cd0: 6e42 ld t3,16(sp)
- 1cd2: 6362 ld t1,24(sp)
- 1cd4: 7382 ld t2,32(sp)
- 1cd6: 4281 li t0,0
- 1cd8: c509 beqz a0,1ce2 <stbsp_vsprintfcb+0xa56>
- fl |= STBSP__NEGATIVE;
- 1cda: 080e6e13 ori t3,t3,128
- 1cde: 08000293 li t0,128
- if (l > (stbsp__uint32)pr)
- 1ce2: 5806 lw a6,96(sp)
- 1ce4: 010af463 bgeu s5,a6,1cec <stbsp_vsprintfcb+0xa60>
- l = pr;
- 1ce8: d0d6 sw s5,96(sp)
- 1cea: 8856 mv a6,s5
- while ((l > 1) && (pr) && (sn[l - 1] == '0')) {
- 1cec: 4705 li a4,1
- if ((dp <= -4) || (dp > (stbsp__int32)n)) {
- 1cee: 5796 lw a5,100(sp)
- while ((l > 1) && (pr) && (sn[l - 1] == '0')) {
- 1cf0: 01076463 bltu a4,a6,1cf8 <stbsp_vsprintfcb+0xa6c>
- 1cf4: 1800106f j 2e74 <stbsp_vsprintfcb+0x1be8>
- 1cf8: 7be6 ld s7,120(sp)
- 1cfa: fff8071b addiw a4,a6,-1
- 1cfe: 1702 slli a4,a4,0x20
- 1d00: 9301 srli a4,a4,0x20
- 1d02: 001a0e9b addiw t4,s4,1
- 1d06: 75e2 ld a1,56(sp)
- 1d08: 8ade mv s5,s7
- 1d0a: 975e add a4,a4,s7
- 1d0c: 410e8ebb subw t4,t4,a6
- 1d10: 88d2 mv a7,s4
- 1d12: 86c2 mv a3,a6
- 1d14: 4f01 li t5,0
- 1d16: 03000f93 li t6,48
- 1d1a: e842 sd a6,16(sp)
- 1d1c: a809 j 1d2e <stbsp_vsprintfcb+0xaa2>
- --pr;
- 1d1e: 38fd addiw a7,a7,-1
- while ((l > 1) && (pr) && (sn[l - 1] == '0')) {
- 1d20: 211e80e3 beq t4,a7,2720 <stbsp_vsprintfcb+0x1494>
- 1d24: 177d addi a4,a4,-1 # 6fff <_stdout+0x21f>
- 1d26: 4f05 li t5,1
- 1d28: 1e088ce3 beqz a7,2720 <stbsp_vsprintfcb+0x1494>
- --l;
- 1d2c: 85b6 mv a1,a3
- while ((l > 1) && (pr) && (sn[l - 1] == '0')) {
- 1d2e: 00074803 lbu a6,0(a4)
- 1d32: fff6861b addiw a2,a3,-1 # ffffff <_ZSt4cerr+0xff8847>
- 1d36: 0006851b sext.w a0,a3
- 1d3a: 2581 sext.w a1,a1
- 1d3c: 0006069b sext.w a3,a2
- 1d40: fdf80fe3 beq a6,t6,1d1e <stbsp_vsprintfcb+0xa92>
- 1d44: 6842 ld a6,16(sp)
- 1d46: fc2e sd a1,56(sp)
- 1d48: 86c2 mv a3,a6
- 1d4a: 000f0463 beqz t5,1d52 <stbsp_vsprintfcb+0xac6>
- 1d4e: d0ae sw a1,96(sp)
- 1d50: 86ae mv a3,a1
- if ((dp <= -4) || (dp > (stbsp__int32)n)) {
- 1d52: 5775 li a4,-3
- 1d54: 08e7cee3 blt a5,a4,25f0 <stbsp_vsprintfcb+0x1364>
- 1d58: 08fa4be3 blt s4,a5,25ee <stbsp_vsprintfcb+0x1362>
- pr = (dp < (stbsp__int32)l) ? l - dp : 0;
- 1d5c: 0005071b sext.w a4,a0
- if (dp > 0) {
- 1d60: 7ef057e3 blez a5,2d4e <stbsp_vsprintfcb+0x1ac2>
- pr = (dp < (stbsp__int32)l) ? l - dp : 0;
- 1d64: 4881 li a7,0
- 1d66: 00e7d463 bge a5,a4,1d6e <stbsp_vsprintfcb+0xae2>
- 1d6a: 40f508bb subw a7,a0,a5
- tail[0] = 0;
- 1d6e: 06010823 sb zero,112(sp)
- if (fl & STBSP__NEGATIVE) {
- 1d72: 20029463 bnez t0,1f7a <stbsp_vsprintfcb+0xcee>
- } else if (fl & STBSP__LEADINGSPACE) {
- 1d76: 004e7713 andi a4,t3,4
- 1d7a: 000715e3 bnez a4,2584 <stbsp_vsprintfcb+0x12f8>
- } else if (fl & STBSP__LEADINGPLUS) {
- 1d7e: 002e7713 andi a4,t3,2
- 1d82: 660719e3 bnez a4,2bf4 <stbsp_vsprintfcb+0x1968>
- sign[0] = 0;
- 1d86: 06010423 sb zero,104(sp)
- 1d8a: aaed j 1f84 <stbsp_vsprintfcb+0xcf8>
- h = (f[0] == 'A') ? hexu : hex;
- 1d8c: 04100713 li a4,65
- 1d90: 00005597 auipc a1,0x5
- 1d94: c1858593 addi a1,a1,-1000 # 69a8 <hex.0>
- 1d98: 00e783e3 beq a5,a4,259e <stbsp_vsprintfcb+0x1312>
- fv = va_arg(va, double);
- 1d9c: 008b8693 addi a3,s7,8
- if (pr == -1)
- 1da0: 577d li a4,-1
- fv = va_arg(va, double);
- 1da2: e0b6 sd a3,64(sp)
- 1da4: 000bb783 ld a5,0(s7)
- if (pr == -1)
- 1da8: 7ee88963 beq a7,a4,259a <stbsp_vsprintfcb+0x130e>
- d = value;
-
- STBSP__COPYFP(b, d);
-
- *bits = b & ((((stbsp__uint64)1) << 52) - 1);
- *expo = (stbsp__int32)(((b >> 52) & 2047) - 1023);
- 1dac: 4347d613 srai a2,a5,0x34
- *bits = b & ((((stbsp__uint64)1) << 52) - 1);
- 1db0: 00c79513 slli a0,a5,0xc
- *expo = (stbsp__int32)(((b >> 52) & 2047) - 1023);
- 1db4: 7ff67613 andi a2,a2,2047
- *bits = b & ((((stbsp__uint64)1) << 52) - 1);
- 1db8: 8131 srli a0,a0,0xc
- *expo = (stbsp__int32)(((b >> 52) & 2047) - 1023);
- 1dba: c016061b addiw a2,a2,-1023
- if (stbsp__real_to_parts((stbsp__int64 *)&n64, &dp, fv))
- 1dbe: 7a07c863 bltz a5,256e <stbsp_vsprintfcb+0x12e2>
- } else if (fl & STBSP__LEADINGSPACE) {
- 1dc2: 004e7793 andi a5,t3,4
- 1dc6: 60078ee3 beqz a5,2be2 <stbsp_vsprintfcb+0x1956>
- 1dca: 6789 lui a5,0x2
- 1dcc: 2785 addiw a5,a5,1 # 2001 <stbsp_vsprintfcb+0xd75>
- sign[0] = 1;
- 1dce: 06f11423 sh a5,104(sp)
- 1dd2: 468d li a3,3
- 1dd4: 4a0d li s4,3
- 1dd6: 4809 li a6,2
- n64 |= (((stbsp__uint64)1) << 52);
- 1dd8: 4705 li a4,1
- 1dda: 1752 slli a4,a4,0x34
- if (dp == -1023)
- 1ddc: c0100793 li a5,-1023
- n64 |= (((stbsp__uint64)1) << 52);
- 1de0: 8f49 or a4,a4,a0
- if (dp == -1023)
- 1de2: 5cf600e3 beq a2,a5,2ba2 <stbsp_vsprintfcb+0x1916>
- if (pr < 15)
- 1de6: 4539 li a0,14
- n64 <<= (64 - 56);
- 1de8: 00871793 slli a5,a4,0x8
- if (pr < 15)
- 1dec: 251546e3 blt a0,a7,2838 <stbsp_vsprintfcb+0x15ac>
- n64 += ((((stbsp__uint64)8) << 56) >> (pr * 4));
- 1df0: 4705 li a4,1
- 1df2: 0028951b slliw a0,a7,0x2
- 1df6: 176e slli a4,a4,0x3b
- 1df8: 00a75733 srl a4,a4,a0
- 1dfc: 973e add a4,a4,a5
- *s++ = h[(n64 >> 60) & 15];
- 1dfe: 03c75793 srli a5,a4,0x3c
- 1e02: 97ae add a5,a5,a1
- 1e04: 0007c503 lbu a0,0(a5)
- lead[1 + lead[0]] = '0';
- 1e08: 22080793 addi a5,a6,544
- 1e0c: 06010813 addi a6,sp,96
- 1e10: 97c2 add a5,a5,a6
- 1e12: 03000813 li a6,48
- 1e16: df078423 sb a6,-536(a5)
- lead[2 + lead[0]] = 'x';
- 1e1a: 22068793 addi a5,a3,544
- 1e1e: 1094 addi a3,sp,96
- 1e20: 96be add a3,a3,a5
- 1e22: 07800793 li a5,120
- 1e26: def68423 sb a5,-536(a3)
- lead[0] += 2;
- 1e2a: 07410423 sb s4,104(sp)
- *s++ = h[(n64 >> 60) & 15];
- 1e2e: 0ca10023 sb a0,192(sp)
- if (pr)
- 1e32: 740893e3 bnez a7,2d78 <stbsp_vsprintfcb+0x1aec>
- sn = s;
- 1e36: 0c110793 addi a5,sp,193
- 1e3a: fcbe sd a5,120(sp)
- 1e3c: 4701 li a4,0
- 1e3e: 4501 li a0,0
- 1e40: 4305 li t1,1
- 1e42: 4685 li a3,1
- tail[1] = h[17];
- 1e44: 0115c583 lbu a1,17(a1)
- tail[2] = '+';
- 1e48: 02b00793 li a5,43
- tail[1] = h[17];
- 1e4c: 06b108a3 sb a1,113(sp)
- if (dp < 0) {
- 1e50: 00065663 bgez a2,1e5c <stbsp_vsprintfcb+0xbd0>
- dp = -dp;
- 1e54: 40c0063b negw a2,a2
- tail[2] = '-';
- 1e58: 02d00793 li a5,45
- tail[n] = '0' + dp % 10;
- 1e5c: 4829 li a6,10
- 1e5e: 030665bb remw a1,a2,a6
- 1e62: 06f10923 sb a5,114(sp)
- n = (dp >= 1000) ? 6 : ((dp >= 100) ? 5 : ((dp >= 10) ? 4 : 3));
- 1e66: 3e700e93 li t4,999
- tail[n] = '0' + dp % 10;
- 1e6a: 0305859b addiw a1,a1,48
- 1e6e: 0ff5f593 zext.b a1,a1
- n = (dp >= 1000) ? 6 : ((dp >= 100) ? 5 : ((dp >= 10) ? 4 : 3));
- 1e72: 18cec3e3 blt t4,a2,27f8 <stbsp_vsprintfcb+0x156c>
- 1e76: 06300e93 li t4,99
- 1e7a: 54cec1e3 blt t4,a2,2bbc <stbsp_vsprintfcb+0x1930>
- 1e7e: 4ea5 li t4,9
- 1e80: 72ced6e3 bge t4,a2,2dac <stbsp_vsprintfcb+0x1b20>
- dp /= 10;
- 1e84: 030647bb divw a5,a2,a6
- tail[0] = (char)n;
- 1e88: 4611 li a2,4
- 1e8a: 06c10823 sb a2,112(sp)
- tail[n] = '0' + dp % 10;
- 1e8e: 06b10a23 sb a1,116(sp)
- 1e92: 4811 li a6,4
- 1e94: 4f91 li t6,4
- 1e96: 0307879b addiw a5,a5,48
- 1e9a: 06f109a3 sb a5,115(sp)
- n = pr + lead[0] + tail[0] + tz;
- 1e9e: 006a07bb addw a5,s4,t1
- 1ea2: 010787bb addw a5,a5,a6
- 1ea6: 0117863b addw a2,a5,a7
- dp = (int)(s - sn);
- 1eaa: d2aa sw a0,100(sp)
- l = (int)(s - (num + 64));
- 1eac: d0b6 sw a3,96(sp)
- n = pr + lead[0] + tail[0] + tz;
- 1eae: 87b2 mv a5,a2
- if ((fl & STBSP__LEFTJUST) == 0) {
- 1eb0: 001e7513 andi a0,t3,1
- if (fw < (stbsp__int32)n)
- 1eb4: 835a mv t1,s6
- 1eb6: 00cb5363 bge s6,a2,1ebc <stbsp_vsprintfcb+0xc30>
- 1eba: 8332 mv t1,a2
- cs = 1 + (3 << 24);
- 1ebc: 030002b7 lui t0,0x3000
- fw -= n;
- 1ec0: 40f3033b subw t1,t1,a5
- cs = 1 + (3 << 24);
- 1ec4: 0285 addi t0,t0,1 # 3000001 <_ZSt4cerr+0x2ff8849>
- s = num + 64;
- 1ec6: 0c010a93 addi s5,sp,192
- goto scopy;
- 1eca: b311 j 1bce <stbsp_vsprintfcb+0x942>
- h = (f[0] == 'B') ? hexu : hex;
- 1ecc: 04200713 li a4,66
- 1ed0: 00005817 auipc a6,0x5
- 1ed4: ad880813 addi a6,a6,-1320 # 69a8 <hex.0>
- 1ed8: 6ce78963 beq a5,a4,25aa <stbsp_vsprintfcb+0x131e>
- if (fl & STBSP__LEADING_0X) {
- 1edc: 008e7793 andi a5,t3,8
- 1ee0: 66079e63 bnez a5,255c <stbsp_vsprintfcb+0x12d0>
- lead[0] = 0;
- 1ee4: 06010423 sb zero,104(sp)
- l = (8 << 4) | (1 << 8);
- 1ee8: 18000793 li a5,384
- 1eec: d0be sw a5,96(sp)
- if (fl & STBSP__INTMAX) {
- 1eee: 020e7713 andi a4,t3,32
- goto radixnum;
- 1ef2: b979 j 1b90 <stbsp_vsprintfcb+0x904>
- *s = (char)va_arg(va, int);
- 1ef4: 000ba783 lw a5,0(s7)
- l = 1;
- 1ef8: 4705 li a4,1
- 1efa: d0ba sw a4,96(sp)
- *s = (char)va_arg(va, int);
- 1efc: 26f10fa3 sb a5,639(sp)
- 1f00: 008b8793 addi a5,s7,8
- lead[0] = 0;
- 1f04: 06010423 sb zero,104(sp)
- tail[0] = 0;
- 1f08: 06010823 sb zero,112(sp)
- dp = 0;
- 1f0c: d282 sw zero,100(sp)
- *s = (char)va_arg(va, int);
- 1f0e: e0be sd a5,64(sp)
- if ((fl & STBSP__LEFTJUST) == 0) {
- 1f10: 001e7513 andi a0,t3,1
- if (fw < (stbsp__int32)n)
- 1f14: 835a mv t1,s6
- 1f16: 69605063 blez s6,2596 <stbsp_vsprintfcb+0x130a>
- fw -= n;
- 1f1a: 337d addiw t1,t1,-1
- goto scopy;
- 1f1c: 4701 li a4,0
- 1f1e: 4f81 li t6,0
- 1f20: 4685 li a3,1
- 1f22: 4a01 li s4,0
- cs = 0;
- 1f24: 4281 li t0,0
- s = num + STBSP__NUMSZ - 1;
- 1f26: 27f10a93 addi s5,sp,639
- tz = 0;
- 1f2a: 4881 li a7,0
- goto scopy;
- 1f2c: b14d j 1bce <stbsp_vsprintfcb+0x942>
- fv = va_arg(va, double);
- 1f2e: 008b8713 addi a4,s7,8
- if (fl & STBSP__METRIC_SUFFIX) {
- 1f32: 100e7793 andi a5,t3,256
- fv = va_arg(va, double);
- 1f36: e0ba sd a4,64(sp)
- 1f38: 000bb507 fld fa0,0(s7)
- if (fl & STBSP__METRIC_SUFFIX) {
- 1f3c: be0795e3 bnez a5,1b26 <stbsp_vsprintfcb+0x89a>
- if (pr == -1)
- 1f40: 57fd li a5,-1
- if (stbsp__real_to_str(&sn, &l, num, &dp, fv, pr))
- 1f42: 0008871b sext.w a4,a7
- if (pr == -1)
- 1f46: 00f89463 bne a7,a5,1f4e <stbsp_vsprintfcb+0xcc2>
- 1f4a: 4719 li a4,6
- pr = 6; // default is 6
- 1f4c: 4899 li a7,6
- if (stbsp__real_to_str(&sn, &l, num, &dp, fv, pr))
- 1f4e: 10d4 addi a3,sp,100
- 1f50: 0110 addi a2,sp,128
- 1f52: 108c addi a1,sp,96
- 1f54: 18a8 addi a0,sp,120
- 1f56: f01e sd t2,32(sp)
- 1f58: ec72 sd t3,24(sp)
- 1f5a: e846 sd a7,16(sp)
- 1f5c: a4cfe0ef jal 1a8 <stbsp__real_to_str>
- 1f60: 6e62 ld t3,24(sp)
- 1f62: 68c2 ld a7,16(sp)
- 1f64: 7382 ld t2,32(sp)
- if (dp == STBSP__SPECIAL) {
- 1f66: 5796 lw a5,100(sp)
- if ((stbsp__int32)(l + n) > pr)
- 1f68: 5686 lw a3,96(sp)
- if (fl & STBSP__NEGATIVE) {
- 1f6a: 080e7293 andi t0,t3,128
- if (stbsp__real_to_str(&sn, &l, num, &dp, fv, pr))
- 1f6e: e00500e3 beqz a0,1d6e <stbsp_vsprintfcb+0xae2>
- fl |= STBSP__NEGATIVE;
- 1f72: 080e6e13 ori t3,t3,128
- tail[0] = 0;
- 1f76: 06010823 sb zero,112(sp)
- sign[0] = 1;
- 1f7a: 670d lui a4,0x3
- 1f7c: d0170713 addi a4,a4,-767 # 2d01 <stbsp_vsprintfcb+0x1a75>
- 1f80: 06e11423 sh a4,104(sp)
- if (dp == STBSP__SPECIAL) {
- 1f84: 671d lui a4,0x7
- 1f86: 7ce78963 beq a5,a4,2758 <stbsp_vsprintfcb+0x14cc>
- if (dp <= 0) {
- 1f8a: 46f05fe3 blez a5,2c08 <stbsp_vsprintfcb+0x197c>
- cs = (fl & STBSP__TRIPLET_COMMA) ? ((600 - (stbsp__uint32)dp) % 3) : 0;
- 1f8e: 040e7313 andi t1,t3,64
- 1f92: 00078e9b sext.w t4,a5
- 1f96: 4581 li a1,0
- 1f98: 00030963 beqz t1,1faa <stbsp_vsprintfcb+0xd1e>
- 1f9c: 25800593 li a1,600
- 1fa0: 41d585bb subw a1,a1,t4
- 1fa4: 470d li a4,3
- 1fa6: 02e5f5bb remuw a1,a1,a4
- *s++ = stbsp__comma;
- 1faa: 00005a17 auipc s4,0x5
- 1fae: 916a0a13 addi s4,s4,-1770 # 68c0 <stbsp__digitpair>
- s = (char *)sn;
- 1fb2: 7f66 ld t5,120(sp)
- *s++ = stbsp__comma;
- 1fb4: 0cda4283 lbu t0,205(s4)
- s = num + 64;
- 1fb8: 0c010a93 addi s5,sp,192
- if ((stbsp__uint32)dp >= l) {
- 1fbc: 44defb63 bgeu t4,a3,2412 <stbsp_vsprintfcb+0x1186>
- n = 0;
- 1fc0: 4501 li a0,0
- s = num + 64;
- 1fc2: 8756 mv a4,s5
- if ((fl & STBSP__TRIPLET_COMMA) && (++cs == 4)) {
- 1fc4: 4b91 li s7,4
- 1fc6: a015 j 1fea <stbsp_vsprintfcb+0xd5e>
- 1fc8: 8642 mv a2,a6
- 1fca: 883a mv a6,a4
- 1fcc: 8732 mv a4,a2
- *s++ = sn[n];
- 1fce: 02051613 slli a2,a0,0x20
- 1fd2: 9201 srli a2,a2,0x20
- 1fd4: 967a add a2,a2,t5
- 1fd6: 00064f83 lbu t6,0(a2)
- ++n;
- 1fda: 0015061b addiw a2,a0,1
- 1fde: 0006051b sext.w a0,a2
- *s++ = sn[n];
- 1fe2: fff70fa3 sb t6,-1(a4) # 6fff <_stdout+0x21f>
- if (n >= (stbsp__uint32)dp)
- 1fe6: 7bd57563 bgeu a0,t4,2790 <stbsp_vsprintfcb+0x1504>
- *s++ = stbsp__comma;
- 1fea: 00170813 addi a6,a4,1
- if ((fl & STBSP__TRIPLET_COMMA) && (++cs == 4)) {
- 1fee: fc030de3 beqz t1,1fc8 <stbsp_vsprintfcb+0xd3c>
- 1ff2: 2585 addiw a1,a1,1
- 1ff4: fd759ae3 bne a1,s7,1fc8 <stbsp_vsprintfcb+0xd3c>
- *s++ = stbsp__comma;
- 1ff8: fe580fa3 sb t0,-1(a6)
- 1ffc: 0709 addi a4,a4,2
- if ((fl & STBSP__TRIPLET_COMMA) && (++cs == 4)) {
- 1ffe: 4585 li a1,1
- 2000: b7f9 j 1fce <stbsp_vsprintfcb+0xd42>
- *d = tlen + (int)(bf - buf);
- 2002: 000bb703 ld a4,0(s7)
- 2006: 412407b3 sub a5,s0,s2
- 200a: 01a787bb addw a5,a5,s10
- int *d = va_arg(va, int *);
- 200e: 008b8693 addi a3,s7,8
- 2012: e0b6 sd a3,64(sp)
- *d = tlen + (int)(bf - buf);
- 2014: c31c sw a5,0(a4)
- } break;
- 2016: bae5 j 1a0e <stbsp_vsprintfcb+0x782>
- if (fl & STBSP__LEADING_0X) {
- 2018: 008e7793 andi a5,t3,8
- 201c: 50079b63 bnez a5,2532 <stbsp_vsprintfcb+0x12a6>
- lead[0] = 0;
- 2020: 06010423 sb zero,104(sp)
- l = (3 << 4) | (3 << 8);
- 2024: 33000793 li a5,816
- 2028: d0be sw a5,96(sp)
- if (fl & STBSP__INTMAX) {
- 202a: 020e7713 andi a4,t3,32
- h = hexu;
- 202e: 00005817 auipc a6,0x5
- 2032: 96280813 addi a6,a6,-1694 # 6990 <hexu.1>
- goto radixnum;
- 2036: bea9 j 1b90 <stbsp_vsprintfcb+0x904>
- fl &= ~STBSP__LEADINGZERO; // 'p' only prints the pointer with zeros
- 2038: fefe7e13 andi t3,t3,-17
- 203c: 020e6e13 ori t3,t3,32
- 2040: 02000713 li a4,32
- pr = sizeof(void *) * 2;
- 2044: 48c1 li a7,16
- h = (f[0] == 'X') ? hexu : hex;
- 2046: 00005817 auipc a6,0x5
- 204a: 96280813 addi a6,a6,-1694 # 69a8 <hex.0>
- 204e: be05 j 1b7e <stbsp_vsprintfcb+0x8f2>
- s = va_arg(va, char *);
- 2050: 000bba83 ld s5,0(s7)
- 2054: 008b8793 addi a5,s7,8
- 2058: e0be sd a5,64(sp)
- if (s == 0)
- 205a: 360a8ee3 beqz s5,2bd6 <stbsp_vsprintfcb+0x194a>
- if (((stbsp__uintptr)sn & 3) == 0)
- 205e: 003af793 andi a5,s5,3
- l = stbsp__strlen_limited(s, (pr >= 0) ? pr : ~0u);
- 2062: 5208c663 bltz a7,258e <stbsp_vsprintfcb+0x1302>
- 2066: 0008869b sext.w a3,a7
- if (((stbsp__uintptr)sn & 3) == 0)
- 206a: 2a0782e3 beqz a5,2b0e <stbsp_vsprintfcb+0x1882>
- if (!limit || *sn == 0)
- 206e: 5a068b63 beqz a3,2624 <stbsp_vsprintfcb+0x1398>
- if (((stbsp__uintptr)sn & 3) == 0)
- 2072: 87d6 mv a5,s5
- 2074: a801 j 2084 <stbsp_vsprintfcb+0xdf8>
- ++sn;
- 2076: 0785 addi a5,a5,1
- if (((stbsp__uintptr)sn & 3) == 0)
- 2078: 0037f713 andi a4,a5,3
- --limit;
- 207c: 36fd addiw a3,a3,-1
- if (((stbsp__uintptr)sn & 3) == 0)
- 207e: 280709e3 beqz a4,2b10 <stbsp_vsprintfcb+0x1884>
- if (!limit || *sn == 0)
- 2082: c681 beqz a3,208a <stbsp_vsprintfcb+0xdfe>
- 2084: 0007c703 lbu a4,0(a5)
- 2088: f77d bnez a4,2076 <stbsp_vsprintfcb+0xdea>
- return (stbsp__uint32)(sn - s);
- 208a: 415787b3 sub a5,a5,s5
- 208e: 0007869b sext.w a3,a5
- if (pr < (stbsp__int32)l)
- 2092: fff6c713 not a4,a3
- 2096: 977d srai a4,a4,0x3f
- 2098: 8f7d and a4,a4,a5
- 209a: 0007079b sext.w a5,a4
- n = pr + lead[0] + tail[0] + tz;
- 209e: 863e mv a2,a5
- pr -= l;
- 20a0: 9f15 subw a4,a4,a3
- l = stbsp__strlen_limited(s, (pr >= 0) ? pr : ~0u);
- 20a2: d0b6 sw a3,96(sp)
- lead[0] = 0;
- 20a4: 06010423 sb zero,104(sp)
- tail[0] = 0;
- 20a8: 06010823 sb zero,112(sp)
- dp = 0;
- 20ac: d282 sw zero,100(sp)
- if ((fl & STBSP__LEFTJUST) == 0) {
- 20ae: 001e7513 andi a0,t3,1
- if (fw < (stbsp__int32)n)
- 20b2: 835a mv t1,s6
- 20b4: 00fb5363 bge s6,a5,20ba <stbsp_vsprintfcb+0xe2e>
- 20b8: 833e mv t1,a5
- fw -= n;
- 20ba: 40c3033b subw t1,t1,a2
- goto scopy;
- 20be: 4f81 li t6,0
- 20c0: 4a01 li s4,0
- cs = 0;
- 20c2: 4281 li t0,0
- tz = 0;
- 20c4: 4881 li a7,0
- goto scopy;
- 20c6: b621 j 1bce <stbsp_vsprintfcb+0x942>
- *bf++ = stbsp__comma;
- 20c8: 87b2 mv a5,a2
- cs = 0;
- 20ca: 4a01 li s4,0
- 20cc: e44ff06f j 1710 <stbsp_vsprintfcb+0x484>
- lead[0] -= (char)i;
- 20d0: 06010423 sb zero,104(sp)
- while (i) {
- 20d4: d38ff06f j 160c <stbsp_vsprintfcb+0x380>
- lead[0] -= (char)i;
- 20d8: 06010423 sb zero,104(sp)
- while (i) {
- 20dc: ed8ff06f j 17b4 <stbsp_vsprintfcb+0x528>
- while (i >= 4) {
- 20e0: 06fadc63 bge s5,a5,2158 <stbsp_vsprintfcb+0xecc>
- tz -= i;
- 20e4: 8722 mv a4,s0
- 20e6: 0007851b sext.w a0,a5
- while (i >= 4) {
- 20ea: 008785bb addw a1,a5,s0
- *(stbsp__uint32 *)bf = 0x30303030;
- 20ee: 01672023 sw s6,0(a4)
- bf += 4;
- 20f2: 0711 addi a4,a4,4
- while (i >= 4) {
- 20f4: 40e5863b subw a2,a1,a4
- 20f8: fecacbe3 blt s5,a2,20ee <stbsp_vsprintfcb+0xe62>
- 20fc: ffc5061b addiw a2,a0,-4
- 2100: 0026561b srliw a2,a2,0x2
- 2104: 0016071b addiw a4,a2,1
- 2108: 37f1 addiw a5,a5,-4
- 210a: 0026161b slliw a2,a2,0x2
- 210e: 070a slli a4,a4,0x2
- 2110: 9722 add a4,a4,s0
- 2112: 9f91 subw a5,a5,a2
- while (i) {
- 2114: 843a mv s0,a4
- 2116: 80078de3 beqz a5,1930 <stbsp_vsprintfcb+0x6a4>
- 211a: 1782 slli a5,a5,0x20
- 211c: 9381 srli a5,a5,0x20
- 211e: 00f70433 add s0,a4,a5
- *bf++ = '0';
- 2122: 0705 addi a4,a4,1
- 2124: ff470fa3 sb s4,-1(a4)
- while (i) {
- 2128: fe871de3 bne a4,s0,2122 <stbsp_vsprintfcb+0xe96>
- 212c: 805ff06f j 1930 <stbsp_vsprintfcb+0x6a4>
- stbsp__cb_buf_clamp(i, pr);
- 2130: 85ce mv a1,s3
- if ((fl & STBSP__TRIPLET_COMMA) == 0) {
- 2132: 4981 li s3,0
- 2134: dc049263 bnez s1,16f8 <stbsp_vsprintfcb+0x46c>
- 2138: b8d5 j 1a2c <stbsp_vsprintfcb+0x7a0>
- STBSP__UNALIGNED(while (i >= 4) {
- 213a: 4401 li s0,0
- 213c: 85be mv a1,a5
- 213e: f0ea4b63 blt s4,a4,1854 <stbsp_vsprintfcb+0x5c8>
- 2142: f42ff06f j 1884 <stbsp_vsprintfcb+0x5f8>
- if ((((stbsp__uintptr)bf) & 3) == 0)
- 2146: 00347713 andi a4,s0,3
- stbsp__cb_buf_clamp(i, tz);
- 214a: 87c6 mv a5,a7
- tz -= i;
- 214c: 4881 li a7,0
- if ((((stbsp__uintptr)bf) & 3) == 0)
- 214e: fc071c63 bnez a4,1926 <stbsp_vsprintfcb+0x69a>
- while (i >= 4) {
- 2152: 470d li a4,3
- 2154: f8f748e3 blt a4,a5,20e4 <stbsp_vsprintfcb+0xe58>
- 2158: 8722 mv a4,s0
- 215a: b7c1 j 211a <stbsp_vsprintfcb+0xe8e>
- tail[0] -= (char)i;
- 215c: 06010823 sb zero,112(sp)
- while (i) {
- 2160: b0b9 j 19ae <stbsp_vsprintfcb+0x722>
- while (i >= 4) {
- 2162: 478d li a5,3
- 2164: 8622 mv a2,s0
- 2166: d8b7d963 bge a5,a1,16f8 <stbsp_vsprintfcb+0x46c>
- 216a: ffc5839b addiw t2,a1,-4
- 216e: 0023d79b srliw a5,t2,0x2
- 2172: 0017859b addiw a1,a5,1
- 2176: 058a slli a1,a1,0x2
- 2178: 942e add s0,s0,a1
- *(stbsp__uint32 *)bf = 0x30303030;
- 217a: 01762023 sw s7,0(a2)
- bf += 4;
- 217e: 0611 addi a2,a2,4
- while (i >= 4) {
- 2180: fe861de3 bne a2,s0,217a <stbsp_vsprintfcb+0xeee>
- 2184: 0027979b slliw a5,a5,0x2
- 2188: 40f385bb subw a1,t2,a5
- 218c: d68ff06f j 16f4 <stbsp_vsprintfcb+0x468>
- while (i) {
- 2190: 85be mv a1,a5
- 2192: ee071963 bnez a4,1884 <stbsp_vsprintfcb+0x5f8>
- 2196: f16ff06f j 18ac <stbsp_vsprintfcb+0x620>
- 219a: 2c013a03 ld s4,704(sp)
- 219e: 2b813a83 ld s5,696(sp)
- 21a2: 2b013b03 ld s6,688(sp)
- 21a6: 8ca2 mv s9,s0
- 21a8: a04ff06f j 13ac <stbsp_vsprintfcb+0x120>
- stbsp__chk_cb_buf(1);
- 21ac: 2601 sext.w a2,a2
- 21ae: 1fe00793 li a5,510
- 21b2: f8c7c563 blt a5,a2,193c <stbsp_vsprintfcb+0x6b0>
- 21b6: f3eff06f j 18f4 <stbsp_vsprintfcb+0x668>
- fl &= ~STBSP__TRIPLET_COMMA; // if no leading zeros, then no commas
- 21ba: fbfe7e13 andi t3,t3,-65
- if (fw + pr) {
- 21be: 006707bb addw a5,a4,t1
- fl &= ~STBSP__TRIPLET_COMMA; // if no leading zeros, then no commas
- 21c2: 2e01 sext.w t3,t3
- if (fw + pr) {
- 21c4: a0078be3 beqz a5,1bda <stbsp_vsprintfcb+0x94e>
- while (fw > 0) {
- 21c8: be605663 blez t1,15b4 <stbsp_vsprintfcb+0x328>
- *(stbsp__uint32 *)bf = 0x20202020;
- 21cc: 20202837 lui a6,0x20202
- stbsp__cb_buf_clamp(i, fw);
- 21d0: 854a mv a0,s2
- 21d2: 894e mv s2,s3
- 21d4: 69a2 ld s3,8(sp)
- *(stbsp__uint32 *)bf = 0x20202020;
- 21d6: 02080813 addi a6,a6,32 # 20202020 <_ZSt4cerr+0x201fa868>
- stbsp__cb_buf_clamp(i, fw);
- 21da: ec52 sd s4,24(sp)
- 21dc: f426 sd s1,40(sp)
- 21de: 87a2 mv a5,s0
- 21e0: 84ea mv s1,s10
- stbsp__chk_cb_buf(1);
- 21e2: 1fe00f13 li t5,510
- stbsp__cb_buf_clamp(i, fw);
- 21e6: 8d6e mv s10,s11
- *bf++ = ' ';
- 21e8: 02000b13 li s6,32
- stbsp__cb_buf_clamp(i, fw);
- 21ec: 8de6 mv s11,s9
- while (i >= 4) {
- 21ee: 4b8d li s7,3
- stbsp__cb_buf_clamp(i, fw);
- 21f0: 20000e93 li t4,512
- 21f4: e846 sd a7,16(sp)
- 21f6: f07e sd t6,32(sp)
- 21f8: f836 sd a3,48(sp)
- 21fa: e4f2 sd t3,72(sp)
- 21fc: e8ba sd a4,80(sp)
- 21fe: ec96 sd t0,88(sp)
- 2200: 841a mv s0,t1
- 2202: 8a42 mv s4,a6
- 2204: 8c9e mv s9,t2
- 2206: 0c090063 beqz s2,22c6 <stbsp_vsprintfcb+0x103a>
- 220a: 40a78633 sub a2,a5,a0
- 220e: 40ce873b subw a4,t4,a2
- 2212: 86ba mv a3,a4
- 2214: 00e45363 bge s0,a4,221a <stbsp_vsprintfcb+0xf8e>
- 2218: 86a2 mv a3,s0
- 221a: 0006871b sext.w a4,a3
- fw -= i;
- 221e: 9c15 subw s0,s0,a3
- while (i) {
- 2220: e719 bnez a4,222e <stbsp_vsprintfcb+0xfa2>
- 2222: a095 j 2286 <stbsp_vsprintfcb+0xffa>
- *bf++ = ' ';
- 2224: 01678023 sb s6,0(a5)
- --i;
- 2228: 377d addiw a4,a4,-1
- *bf++ = ' ';
- 222a: 0785 addi a5,a5,1
- while (i) {
- 222c: cb29 beqz a4,227e <stbsp_vsprintfcb+0xff2>
- if ((((stbsp__uintptr)bf) & 3) == 0)
- 222e: 0037f693 andi a3,a5,3
- 2232: faed bnez a3,2224 <stbsp_vsprintfcb+0xf98>
- while (i >= 4) {
- 2234: 86be mv a3,a5
- 2236: 00070f9b sext.w t6,a4
- 223a: 00f705bb addw a1,a4,a5
- 223e: 02ebd763 bge s7,a4,226c <stbsp_vsprintfcb+0xfe0>
- *(stbsp__uint32 *)bf = 0x20202020;
- 2242: 0146a023 sw s4,0(a3)
- bf += 4;
- 2246: 0691 addi a3,a3,4
- while (i >= 4) {
- 2248: 40d5863b subw a2,a1,a3
- 224c: fecbcbe3 blt s7,a2,2242 <stbsp_vsprintfcb+0xfb6>
- 2250: ffcf861b addiw a2,t6,-4 # fffffffff7fffffc <_ZSt4cerr+0xfffffffff7ff8844>
- 2254: 0026561b srliw a2,a2,0x2
- 2258: 0016069b addiw a3,a2,1
- 225c: 3771 addiw a4,a4,-4
- 225e: 0026161b slliw a2,a2,0x2
- 2262: 068a slli a3,a3,0x2
- 2264: 96be add a3,a3,a5
- 2266: 9f11 subw a4,a4,a2
- while (i) {
- 2268: 87b6 mv a5,a3
- 226a: cb11 beqz a4,227e <stbsp_vsprintfcb+0xff2>
- 226c: 1702 slli a4,a4,0x20
- 226e: 9301 srli a4,a4,0x20
- 2270: 00e687b3 add a5,a3,a4
- *bf++ = ' ';
- 2274: 0685 addi a3,a3,1
- 2276: ff668fa3 sb s6,-1(a3)
- while (i) {
- 227a: fef69de3 bne a3,a5,2274 <stbsp_vsprintfcb+0xfe8>
- stbsp__chk_cb_buf(1);
- 227e: 40a78633 sub a2,a5,a0
- 2282: 00090e63 beqz s2,229e <stbsp_vsprintfcb+0x1012>
- 2286: 2601 sext.w a2,a2
- 2288: 00cf5b63 bge t5,a2,229e <stbsp_vsprintfcb+0x1012>
- 228c: 85ce mv a1,s3
- 228e: 9cb1 addw s1,s1,a2
- 2290: 9902 jalr s2
- 2292: c541 beqz a0,231a <stbsp_vsprintfcb+0x108e>
- 2294: 87aa mv a5,a0
- 2296: 20000e93 li t4,512
- 229a: 1fe00f13 li t5,510
- while (fw > 0) {
- 229e: f68044e3 bgtz s0,2206 <stbsp_vsprintfcb+0xf7a>
- 22a2: 8322 mv t1,s0
- 22a4: 89ca mv s3,s2
- 22a6: 83e6 mv t2,s9
- 22a8: 68c2 ld a7,16(sp)
- 22aa: 8cee mv s9,s11
- 22ac: 6a62 ld s4,24(sp)
- 22ae: 8dea mv s11,s10
- 22b0: 7f82 ld t6,32(sp)
- 22b2: 8d26 mv s10,s1
- 22b4: 76c2 ld a3,48(sp)
- 22b6: 6e26 ld t3,72(sp)
- 22b8: 6746 ld a4,80(sp)
- 22ba: 62e6 ld t0,88(sp)
- 22bc: 74a2 ld s1,40(sp)
- 22be: 892a mv s2,a0
- 22c0: 843e mv s0,a5
- 22c2: af2ff06f j 15b4 <stbsp_vsprintfcb+0x328>
- stbsp__cb_buf_clamp(i, fw);
- 22c6: 8722 mv a4,s0
- 22c8: 4401 li s0,0
- if ((((stbsp__uintptr)bf) & 3) == 0)
- 22ca: b795 j 222e <stbsp_vsprintfcb+0xfa2>
- n64 = va_arg(va, stbsp__uint32);
- 22cc: 000be683 lwu a3,0(s7)
- 22d0: b0f9 j 1b9e <stbsp_vsprintfcb+0x912>
- 22d2: 2c013a03 ld s4,704(sp)
- 22d6: 2b813a83 ld s5,696(sp)
- 22da: 2b013b03 ld s6,688(sp)
- 22de: 8cca mv s9,s2
- 22e0: 8ccff06f j 13ac <stbsp_vsprintfcb+0x120>
- 22e4: 8cd6 mv s9,s5
- 22e6: 2c013a03 ld s4,704(sp)
- 22ea: 2b813a83 ld s5,696(sp)
- 22ee: 2b013b03 ld s6,688(sp)
- 22f2: 8baff06f j 13ac <stbsp_vsprintfcb+0x120>
- 22f6: 2c013a03 ld s4,704(sp)
- 22fa: 2b813a83 ld s5,696(sp)
- 22fe: 2b013b03 ld s6,688(sp)
- 2302: 8cea mv s9,s10
- 2304: 8a8ff06f j 13ac <stbsp_vsprintfcb+0x120>
- while (i) {
- 2308: 85a2 mv a1,s0
- 230a: c12ff06f j 171c <stbsp_vsprintfcb+0x490>
- while (i >= 4) {
- 230e: 478d li a5,3
- 2310: 8622 mv a2,s0
- 2312: e4b7cce3 blt a5,a1,216a <stbsp_vsprintfcb+0xede>
- 2316: be2ff06f j 16f8 <stbsp_vsprintfcb+0x46c>
- 231a: 2c013a03 ld s4,704(sp)
- 231e: 2b813a83 ld s5,696(sp)
- 2322: 2b013b03 ld s6,688(sp)
- 2326: 8ca6 mv s9,s1
- 2328: 884ff06f j 13ac <stbsp_vsprintfcb+0x120>
- lead[2] = h[16];
- 232c: 01084683 lbu a3,16(a6)
- lead[0] = 2;
- 2330: 678d lui a5,0x3
- 2332: 0789 addi a5,a5,2 # 3002 <sprintf+0x3e>
- 2334: 06f11423 sh a5,104(sp)
- lead[2] = h[16];
- 2338: 06d10523 sb a3,106(sp)
- 233c: b891 j 1b90 <stbsp_vsprintfcb+0x904>
- 233e: 8cea mv s9,s10
- 2340: 86cff06f j 13ac <stbsp_vsprintfcb+0x120>
- 2344: 4f81 li t6,0
- 2346: 4a01 li s4,0
- 2348: 5586 lw a1,96(sp)
- *--s = stbsp__comma;
- 234a: 00004f17 auipc t5,0x4
- 234e: 643f4f03 lbu t5,1603(t5) # 698d <stbsp__comma>
- 2352: 0510 addi a2,sp,640
- 2354: 0085d71b srliw a4,a1,0x8
- *--s = h[n64 & ((1 << (l >> 8)) - 1)];
- 2358: 4305 li t1,1
- if (fl & STBSP__TRIPLET_COMMA) {
- 235a: 040e7e93 andi t4,t3,64
- *--s = h[n64 & ((1 << (l >> 8)) - 1)];
- 235e: 0007029b sext.w t0,a4
- 2362: 005317bb sllw a5,t1,t0
- 2366: 37fd addiw a5,a5,-1
- 2368: 8ff5 and a5,a5,a3
- 236a: 97c2 add a5,a5,a6
- 236c: 0007c783 lbu a5,0(a5)
- n64 >>= (l >> 8);
- 2370: 0056d6b3 srl a3,a3,t0
- *--s = h[n64 & ((1 << (l >> 8)) - 1)];
- 2374: fff60a93 addi s5,a2,-1
- 2378: fef60fa3 sb a5,-1(a2)
- if (!((n64) || ((stbsp__int32)((num + STBSP__NUMSZ) - s) < pr)))
- 237c: e691 bnez a3,2388 <stbsp_vsprintfcb+0x10fc>
- 237e: 051c addi a5,sp,640
- 2380: 415787bb subw a5,a5,s5
- 2384: 0317dd63 bge a5,a7,23be <stbsp_vsprintfcb+0x1132>
- if (fl & STBSP__TRIPLET_COMMA) {
- 2388: 020e8963 beqz t4,23ba <stbsp_vsprintfcb+0x112e>
- ++l;
- 238c: 0015879b addiw a5,a1,1
- if ((l & 15) == ((l >> 4) & 15)) {
- 2390: 0047d29b srliw t0,a5,0x4
- 2394: 00f2c2b3 xor t0,t0,a5
- 2398: 00f2f293 andi t0,t0,15
- ++l;
- 239c: 0007859b sext.w a1,a5
- if ((l & 15) == ((l >> 4) & 15)) {
- 23a0: 0087d71b srliw a4,a5,0x8
- 23a4: 00029b63 bnez t0,23ba <stbsp_vsprintfcb+0x112e>
- l &= ~15;
- 23a8: 9bc1 andi a5,a5,-16
- 23aa: 0007859b sext.w a1,a5
- *--s = stbsp__comma;
- 23ae: ffe60a93 addi s5,a2,-2
- 23b2: ffe60f23 sb t5,-2(a2)
- 23b6: 0087d71b srliw a4,a5,0x8
- 23ba: 8656 mv a2,s5
- 23bc: b74d j 235e <stbsp_vsprintfcb+0x10d2>
- cs = (stbsp__uint32)((num + STBSP__NUMSZ) - s) + ((((l >> 4) & 15)) << 24);
- 23be: 0045d29b srliw t0,a1,0x4
- 23c2: 0f0006b7 lui a3,0xf000
- if (pr < (stbsp__int32)l)
- 23c6: 0007871b sext.w a4,a5
- cs = (stbsp__uint32)((num + STBSP__NUMSZ) - s) + ((((l >> 4) & 15)) << 24);
- 23ca: 0182929b slliw t0,t0,0x18
- 23ce: 00d2f2b3 and t0,t0,a3
- n = pr + lead[0] + tail[0] + tz;
- 23d2: 00ef863b addw a2,t6,a4
- l = (stbsp__uint32)((num + STBSP__NUMSZ) - s);
- 23d6: d0be sw a5,96(sp)
- n = pr + lead[0] + tail[0] + tz;
- 23d8: 8fb2 mv t6,a2
- cs = (stbsp__uint32)((num + STBSP__NUMSZ) - s) + ((((l >> 4) & 15)) << 24);
- 23da: 86be mv a3,a5
- 23dc: 00f282bb addw t0,t0,a5
- if (fw < (stbsp__int32)n)
- 23e0: 835a mv t1,s6
- 23e2: 00cb5363 bge s6,a2,23e8 <stbsp_vsprintfcb+0x115c>
- 23e6: 8332 mv t1,a2
- fw -= n;
- 23e8: 41f3033b subw t1,t1,t6
- pr -= l;
- 23ec: 9f1d subw a4,a4,a5
- goto scopy;
- 23ee: 4f81 li t6,0
- tz = 0;
- 23f0: 4881 li a7,0
- goto scopy;
- 23f2: fdcff06f j 1bce <stbsp_vsprintfcb+0x942>
- 23f6: 8cda mv s9,s6
- 23f8: 2c013a03 ld s4,704(sp)
- 23fc: 2b813a83 ld s5,696(sp)
- 2400: 2b013b03 ld s6,688(sp)
- 2404: fa9fe06f j 13ac <stbsp_vsprintfcb+0x120>
- fl |= ((sizeof(void *) == 8) ? STBSP__INTMAX : 0);
- 2408: 020e6e13 ori t3,t3,32
- ++f;
- 240c: 0485 addi s1,s1,1
- 240e: 864ff06f j 1472 <stbsp_vsprintfcb+0x1e6>
- n = 0;
- 2412: 4601 li a2,0
- s = num + 64;
- 2414: 8756 mv a4,s5
- if ((fl & STBSP__TRIPLET_COMMA) && (++cs == 4)) {
- 2416: 4511 li a0,4
- *s++ = stbsp__comma;
- 2418: 00170793 addi a5,a4,1
- if ((fl & STBSP__TRIPLET_COMMA) && (++cs == 4)) {
- 241c: 00030563 beqz t1,2426 <stbsp_vsprintfcb+0x119a>
- 2420: 2585 addiw a1,a1,1
- 2422: 10a58363 beq a1,a0,2528 <stbsp_vsprintfcb+0x129c>
- 2426: 873e mv a4,a5
- *s++ = sn[n];
- 2428: 02061793 slli a5,a2,0x20
- 242c: 9381 srli a5,a5,0x20
- 242e: 97fa add a5,a5,t5
- 2430: 0007c803 lbu a6,0(a5)
- ++n;
- 2434: 2605 addiw a2,a2,1
- *s++ = sn[n];
- 2436: ff070fa3 sb a6,-1(a4)
- if (n >= l)
- 243a: fcd66fe3 bltu a2,a3,2418 <stbsp_vsprintfcb+0x118c>
- if (n < (stbsp__uint32)dp) {
- 243e: 0bd663e3 bltu a2,t4,2ce4 <stbsp_vsprintfcb+0x1a58>
- cs = (int)(s - (num + 64)) + (3 << 24); // cs is how many tens
- 2442: 415707b3 sub a5,a4,s5
- 2446: 030002b7 lui t0,0x3000
- 244a: 00f282bb addw t0,t0,a5
- if (pr) {
- 244e: 00088a63 beqz a7,2462 <stbsp_vsprintfcb+0x11d6>
- *s++ = stbsp__period;
- 2452: 0cca4683 lbu a3,204(s4)
- 2456: 00170793 addi a5,a4,1
- l = (stbsp__uint32)(s - (num + 64));
- 245a: 415787b3 sub a5,a5,s5
- *s++ = stbsp__period;
- 245e: 00d70023 sb a3,0(a4)
- if (fl & STBSP__METRIC_SUFFIX) {
- 2462: 100e7713 andi a4,t3,256
- 2466: 86f2 mv a3,t3
- 2468: 2c070163 beqz a4,272a <stbsp_vsprintfcb+0x149e>
- if (fl & STBSP__METRIC_NOSPACE)
- 246c: 40ae5f9b sraiw t6,t3,0xa
- 2470: 001fcf93 xori t6,t6,1
- 2474: 001fff93 andi t6,t6,1
- tail[1] = ' ';
- 2478: 02000713 li a4,32
- 247c: 06e108a3 sb a4,113(sp)
- tail[0] = idx;
- 2480: 07f10823 sb t6,112(sp)
- if (fl >> 24) { // SI kilo is 'k', JEDEC and SI kibits are 'K'.
- 2484: 018e561b srliw a2,t3,0x18
- 2488: 018e571b srliw a4,t3,0x18
- n = pr + lead[0] + tail[0] + tz;
- 248c: 000f859b sext.w a1,t6
- if (fl >> 24) { // SI kilo is 'k', JEDEC and SI kibits are 'K'.
- 2490: c225 beqz a2,24f0 <stbsp_vsprintfcb+0x1264>
- if (fl & STBSP__METRIC_1024)
- 2492: 001f859b addiw a1,t6,1
- 2496: 0ff5f613 zext.b a2,a1
- tail[idx + 1] = "_KMGT"[fl >> 24];
- 249a: 1702 slli a4,a4,0x20
- if (fl & STBSP__METRIC_1024)
- 249c: 03469513 slli a0,a3,0x34
- tail[idx + 1] = "_KMGT"[fl >> 24];
- 24a0: 85b2 mv a1,a2
- 24a2: 9301 srli a4,a4,0x20
- if (fl & STBSP__METRIC_1024)
- 24a4: 06055ee3 bgez a0,2d20 <stbsp_vsprintfcb+0x1a94>
- tail[idx + 1] = "_KMGT"[fl >> 24];
- 24a8: 00003517 auipc a0,0x3
- 24ac: b6050513 addi a0,a0,-1184 # 5008 <_GLOBAL__sub_I__ZSt3cin+0x5a>
- 24b0: 972a add a4,a4,a0
- 24b2: 00074503 lbu a0,0(a4)
- if (fl & STBSP__METRIC_1024 && !(fl & STBSP__METRIC_JEDEC)) {
- 24b6: 6709 lui a4,0x2
- 24b8: 80070713 addi a4,a4,-2048 # 1800 <stbsp_vsprintfcb+0x574>
- 24bc: 8f75 and a4,a4,a3
- tail[idx + 1] = "_KMGT"[fl >> 24];
- 24be: 06010813 addi a6,sp,96
- 24c2: 22060693 addi a3,a2,544
- 24c6: 96c2 add a3,a3,a6
- 24c8: dea68823 sb a0,-528(a3) # efffdf0 <_ZSt4cerr+0xeff8638>
- if (fl & STBSP__METRIC_1024 && !(fl & STBSP__METRIC_JEDEC)) {
- 24cc: 8007071b addiw a4,a4,-2048
- 24d0: 060715e3 bnez a4,2d3a <stbsp_vsprintfcb+0x1aae>
- tail[idx + 1] = 'i';
- 24d4: 2f89 addiw t6,t6,2
- 24d6: 0ffff593 zext.b a1,t6
- 24da: 1094 addi a3,sp,96
- 24dc: 22058713 addi a4,a1,544
- 24e0: 9736 add a4,a4,a3
- 24e2: 06900693 li a3,105
- 24e6: 8fae mv t6,a1
- 24e8: ded70823 sb a3,-528(a4)
- tail[0] = idx;
- 24ec: 07f10823 sb t6,112(sp)
- l = (stbsp__uint32)(s - (num + 64));
- 24f0: 0007869b sext.w a3,a5
- n = pr + lead[0] + tail[0] + tz;
- 24f4: 06814a03 lbu s4,104(sp)
- if (pr < (stbsp__int32)l)
- 24f8: fff6c713 not a4,a3
- 24fc: 977d srai a4,a4,0x3f
- 24fe: 8ff9 and a5,a5,a4
- n = pr + lead[0] + tail[0] + tz;
- 2500: 00fa073b addw a4,s4,a5
- 2504: 9f2d addw a4,a4,a1
- 2506: 0117063b addw a2,a4,a7
- l = (stbsp__uint32)(s - (num + 64));
- 250a: d0b6 sw a3,96(sp)
- n = pr + lead[0] + tail[0] + tz;
- 250c: 8732 mv a4,a2
- if (pr < (stbsp__int32)l)
- 250e: 2781 sext.w a5,a5
- if ((fl & STBSP__LEFTJUST) == 0) {
- 2510: 001e7513 andi a0,t3,1
- if (fw < (stbsp__int32)n)
- 2514: 835a mv t1,s6
- 2516: 00cb5363 bge s6,a2,251c <stbsp_vsprintfcb+0x1290>
- 251a: 8332 mv t1,a2
- fw -= n;
- 251c: 40e3033b subw t1,t1,a4
- pr -= l;
- 2520: 40d7873b subw a4,a5,a3
- goto scopy;
- 2524: eaaff06f j 1bce <stbsp_vsprintfcb+0x942>
- *s++ = stbsp__comma;
- 2528: fe578fa3 sb t0,-1(a5)
- 252c: 0709 addi a4,a4,2
- if ((fl & STBSP__TRIPLET_COMMA) && (++cs == 4)) {
- 252e: 4585 li a1,1
- 2530: bde5 j 2428 <stbsp_vsprintfcb+0x119c>
- lead[0] = 1;
- 2532: 678d lui a5,0x3
- 2534: 0785 addi a5,a5,1 # 3001 <sprintf+0x3d>
- 2536: 06f11423 sh a5,104(sp)
- 253a: b4ed j 2024 <stbsp_vsprintfcb+0xd98>
- if ((f[0] != 'u') && (i64 < 0)) {
- 253c: 07500693 li a3,117
- stbsp__int64 i64 = va_arg(va, stbsp__int64);
- 2540: 000bbf03 ld t5,0(s7)
- if ((f[0] != 'u') && (i64 < 0)) {
- 2544: dcd78263 beq a5,a3,1b08 <stbsp_vsprintfcb+0x87c>
- 2548: dc0f5063 bgez t5,1b08 <stbsp_vsprintfcb+0x87c>
- fl |= STBSP__NEGATIVE;
- 254c: 08076713 ori a4,a4,128
- n64 = (stbsp__uint64)-i64;
- 2550: 41e00f33 neg t5,t5
- fl |= STBSP__NEGATIVE;
- 2554: 00070e1b sext.w t3,a4
- 2558: db0ff06f j 1b08 <stbsp_vsprintfcb+0x87c>
- lead[2] = h[0xb];
- 255c: 00b84703 lbu a4,11(a6)
- lead[0] = 2;
- 2560: 678d lui a5,0x3
- 2562: 0789 addi a5,a5,2 # 3002 <sprintf+0x3e>
- 2564: 06f11423 sh a5,104(sp)
- lead[2] = h[0xb];
- 2568: 06e10523 sb a4,106(sp)
- 256c: bab5 j 1ee8 <stbsp_vsprintfcb+0xc5c>
- sign[0] = 1;
- 256e: 678d lui a5,0x3
- 2570: d0178793 addi a5,a5,-767 # 2d01 <stbsp_vsprintfcb+0x1a75>
- fl |= STBSP__NEGATIVE;
- 2574: 080e6e13 ori t3,t3,128
- sign[0] = 1;
- 2578: 06f11423 sh a5,104(sp)
- 257c: 468d li a3,3
- 257e: 4a0d li s4,3
- 2580: 4809 li a6,2
- 2582: b899 j 1dd8 <stbsp_vsprintfcb+0xb4c>
- sign[0] = 1;
- 2584: 6709 lui a4,0x2
- 2586: 0705 addi a4,a4,1 # 2001 <stbsp_vsprintfcb+0xd75>
- 2588: 06e11423 sh a4,104(sp)
- 258c: bae5 j 1f84 <stbsp_vsprintfcb+0xcf8>
- if (((stbsp__uintptr)sn & 3) == 0)
- 258e: 0e0780e3 beqz a5,2e6e <stbsp_vsprintfcb+0x1be2>
- l = stbsp__strlen_limited(s, (pr >= 0) ? pr : ~0u);
- 2592: 56fd li a3,-1
- 2594: bcf9 j 2072 <stbsp_vsprintfcb+0xde6>
- if (fw < (stbsp__int32)n)
- 2596: 4305 li t1,1
- 2598: b249 j 1f1a <stbsp_vsprintfcb+0xc8e>
- pr = 6; // default is 6
- 259a: 4899 li a7,6
- 259c: b801 j 1dac <stbsp_vsprintfcb+0xb20>
- h = (f[0] == 'A') ? hexu : hex;
- 259e: 00004597 auipc a1,0x4
- 25a2: 3f258593 addi a1,a1,1010 # 6990 <hexu.1>
- 25a6: ff6ff06f j 1d9c <stbsp_vsprintfcb+0xb10>
- h = (f[0] == 'B') ? hexu : hex;
- 25aa: 00004817 auipc a6,0x4
- 25ae: 3e680813 addi a6,a6,998 # 6990 <hexu.1>
- 25b2: b22d j 1edc <stbsp_vsprintfcb+0xc50>
- 25b4: 80000737 lui a4,0x80000
- 25b8: 0719 addi a4,a4,6 # ffffffff80000006 <_ZSt4cerr+0xffffffff7fff884e>
- pr = 6; // default is 6
- 25ba: 4899 li a7,6
- 25bc: e4eff06f j 1c0a <stbsp_vsprintfcb+0x97e>
- h = (f[0] == 'E') ? hexu : hex;
- 25c0: 00004317 auipc t1,0x4
- 25c4: 3d030313 addi t1,t1,976 # 6990 <hexu.1>
- 25c8: e28ff06f j 1bf0 <stbsp_vsprintfcb+0x964>
- 25cc: 80000737 lui a4,0x80000
- 25d0: 4a99 li s5,6
- 25d2: 0715 addi a4,a4,5 # ffffffff80000005 <_ZSt4cerr+0xffffffff7fff884d>
- pr = 6;
- 25d4: 4a19 li s4,6
- 25d6: ee8ff06f j 1cbe <stbsp_vsprintfcb+0xa32>
- h = (f[0] == 'G') ? hexu : hex;
- 25da: 00004317 auipc t1,0x4
- 25de: 3b630313 addi t1,t1,950 # 6990 <hexu.1>
- 25e2: eb6ff06f j 1c98 <stbsp_vsprintfcb+0xa0c>
- 25e6: 7be6 ld s7,120(sp)
- if ((dp <= -4) || (dp > (stbsp__int32)n)) {
- 25e8: 86c2 mv a3,a6
- while ((l > 1) && (pr) && (sn[l - 1] == '0')) {
- 25ea: 8542 mv a0,a6
- if ((dp <= -4) || (dp > (stbsp__int32)n)) {
- 25ec: 88d2 mv a7,s4
- while ((l > 1) && (pr) && (sn[l - 1] == '0')) {
- 25ee: 8ade mv s5,s7
- if (pr > (stbsp__int32)l)
- 25f0: 0005071b sext.w a4,a0
- 25f4: 01175f63 bge a4,a7,2612 <stbsp_vsprintfcb+0x1386>
- pr = l - 1;
- 25f8: fff5089b addiw a7,a0,-1
- tail[0] = 0;
- 25fc: 06010823 sb zero,112(sp)
- if (fl & STBSP__NEGATIVE) {
- 2600: 70028c63 beqz t0,2d18 <stbsp_vsprintfcb+0x1a8c>
- sign[0] = 1;
- 2604: 670d lui a4,0x3
- 2606: d0170713 addi a4,a4,-767 # 2d01 <stbsp_vsprintfcb+0x1a75>
- 260a: 06e11423 sh a4,104(sp)
- 260e: e3aff06f j 1c48 <stbsp_vsprintfcb+0x9bc>
- else if (pr)
- 2612: fe0885e3 beqz a7,25fc <stbsp_vsprintfcb+0x1370>
- --pr; // when using %e, there is one digit before the decimal
- 2616: 38fd addiw a7,a7,-1
- 2618: b7d5 j 25fc <stbsp_vsprintfcb+0x1370>
- switch (f[0]) {
- 261a: 0034c783 lbu a5,3(s1)
- f += 3;
- 261e: 048d addi s1,s1,3
- 2620: e53fe06f j 1472 <stbsp_vsprintfcb+0x1e6>
- if (!limit || *sn == 0)
- 2624: 4601 li a2,0
- 2626: 4701 li a4,0
- 2628: 4781 li a5,0
- return (stbsp__uint32)(sn - s);
- 262a: bca5 j 20a2 <stbsp_vsprintfcb+0xe16>
- pr = 1;
- 262c: 4885 li a7,1
- 262e: cf4ff06f j 1b22 <stbsp_vsprintfcb+0x896>
- *s++ = sn[0];
- 2632: 000ac703 lbu a4,0(s5)
- 2636: 0ce10023 sb a4,192(sp)
- if (pr)
- 263a: 54088563 beqz a7,2b84 <stbsp_vsprintfcb+0x18f8>
- *s++ = stbsp__period;
- 263e: 00004617 auipc a2,0x4
- 2642: 34e64603 lbu a2,846(a2) # 698c <stbsp__period>
- if ((l - 1) > (stbsp__uint32)pr)
- 2646: fff6871b addiw a4,a3,-1
- *s++ = stbsp__period;
- 264a: 0cc100a3 sb a2,193(sp)
- if ((l - 1) > (stbsp__uint32)pr)
- 264e: 0008851b sext.w a0,a7
- 2652: 0007061b sext.w a2,a4
- 2656: 52c57163 bgeu a0,a2,2b78 <stbsp_vsprintfcb+0x18ec>
- l = pr + 1;
- 265a: 0018869b addiw a3,a7,1
- for (n = 1; n < l; n++)
- 265e: 8746 mv a4,a7
- 2660: 02071613 slli a2,a4,0x20
- 2664: 9201 srli a2,a2,0x20
- 2666: 0c210713 addi a4,sp,194
- 266a: 0a85 addi s5,s5,1
- 266c: 963a add a2,a2,a4
- *s++ = sn[n];
- 266e: 000ac583 lbu a1,0(s5)
- 2672: 0705 addi a4,a4,1
- for (n = 1; n < l; n++)
- 2674: 0a85 addi s5,s5,1
- *s++ = sn[n];
- 2676: feb70fa3 sb a1,-1(a4)
- for (n = 1; n < l; n++)
- 267a: fec71ae3 bne a4,a2,266e <stbsp_vsprintfcb+0x13e2>
- tail[1] = h[0xe];
- 267e: 00e34803 lbu a6,14(t1)
- dp -= 1;
- 2682: fff7871b addiw a4,a5,-1
- tail[2] = '+';
- 2686: 02b00593 li a1,43
- tail[1] = h[0xe];
- 268a: 070108a3 sb a6,113(sp)
- if (dp < 0) {
- 268e: 00075663 bgez a4,269a <stbsp_vsprintfcb+0x140e>
- dp = -dp;
- 2692: 4705 li a4,1
- 2694: 9f1d subw a4,a4,a5
- tail[2] = '-';
- 2696: 02d00593 li a1,45
- 269a: 06b10923 sb a1,114(sp)
- n = (dp >= 100) ? 5 : 4;
- 269e: 06300793 li a5,99
- 26a2: 4ee7d663 bge a5,a4,2b8e <stbsp_vsprintfcb+0x1902>
- 26a6: 4595 li a1,5
- 26a8: 4f95 li t6,5
- 26aa: 4e95 li t4,5
- tail[n] = '0' + dp % 10;
- 26ac: 47a9 li a5,10
- dp /= 10;
- 26ae: 02f7433b divw t1,a4,a5
- --n;
- 26b2: fffe8f1b addiw t5,t4,-1
- tail[n] = '0' + dp % 10;
- 26b6: 020f1293 slli t0,t5,0x20
- 26ba: 220e8813 addi a6,t4,544
- 26be: 06010893 addi a7,sp,96
- 26c2: 0202d293 srli t0,t0,0x20
- 26c6: 01180eb3 add t4,a6,a7
- 26ca: 22028813 addi a6,t0,544 # 3000220 <_ZSt4cerr+0x2ff8a68>
- 26ce: 011802b3 add t0,a6,a7
- tail[0] = (char)n;
- 26d2: 07f10823 sb t6,112(sp)
- if (n <= 3)
- 26d6: 4a0d li s4,3
- tail[n] = '0' + dp % 10;
- 26d8: 02f7673b remw a4,a4,a5
- dp /= 10;
- 26dc: 0003081b sext.w a6,t1
- tail[n] = '0' + dp % 10;
- 26e0: 02f36abb remw s5,t1,a5
- 26e4: 0307071b addiw a4,a4,48
- 26e8: deee8823 sb a4,-528(t4)
- 26ec: 030a871b addiw a4,s5,48
- 26f0: dee28823 sb a4,-528(t0)
- if (n <= 3)
- 26f4: 014f0a63 beq t5,s4,2708 <stbsp_vsprintfcb+0x147c>
- dp /= 10;
- 26f8: 02f3483b divw a6,t1,a5
- tail[n] = '0' + dp % 10;
- 26fc: 02f867bb remw a5,a6,a5
- 2700: 0307879b addiw a5,a5,48
- 2704: 06f109a3 sb a5,115(sp)
- tz = pr - (l - 1);
- 2708: 2505 addiw a0,a0,1
- l = (stbsp__uint32)(s - (num + 64));
- 270a: 0c010a93 addi s5,sp,192
- cs = 1 + (3 << 24); // how many tens
- 270e: 030002b7 lui t0,0x3000
- tz = pr - (l - 1);
- 2712: 40d508bb subw a7,a0,a3
- 2716: d2c2 sw a6,100(sp)
- l = (stbsp__uint32)(s - (num + 64));
- 2718: 415607b3 sub a5,a2,s5
- cs = 1 + (3 << 24); // how many tens
- 271c: 0285 addi t0,t0,1 # 3000001 <_ZSt4cerr+0x2ff8849>
- 271e: bbc9 j 24f0 <stbsp_vsprintfcb+0x1264>
- 2720: fc2e sd a1,56(sp)
- 2722: d0b2 sw a2,96(sp)
- while ((l > 1) && (pr) && (sn[l - 1] == '0')) {
- 2724: 8536 mv a0,a3
- 2726: e2cff06f j 1d52 <stbsp_vsprintfcb+0xac6>
- flt_lead:
- 272a: 4581 li a1,0
- 272c: 4f81 li t6,0
- 272e: b3c9 j 24f0 <stbsp_vsprintfcb+0x1264>
- n = pr + lead[0] + tail[0] + tz;
- 2730: 06814a03 lbu s4,104(sp)
- 2734: 000a0f9b sext.w t6,s4
- 2738: b901 j 2348 <stbsp_vsprintfcb+0x10bc>
- if ((f[1] == '6') && (f[2] == '4')) {
- 273a: 0024c683 lbu a3,2(s1)
- 273e: 03400713 li a4,52
- 2742: 00e68463 beq a3,a4,274a <stbsp_vsprintfcb+0x14be>
- 2746: e2bfe06f j 1570 <stbsp_vsprintfcb+0x2e4>
- switch (f[0]) {
- 274a: 0034c783 lbu a5,3(s1)
- fl |= ((sizeof(long) == 8) ? STBSP__INTMAX : 0);
- 274e: 020e6e13 ori t3,t3,32
- f += 3;
- 2752: 048d addi s1,s1,3
- 2754: d1ffe06f j 1472 <stbsp_vsprintfcb+0x1e6>
- if (pr < (stbsp__int32)l)
- 2758: 0006879b sext.w a5,a3
- n = pr + lead[0] + tail[0] + tz;
- 275c: 06814a03 lbu s4,104(sp)
- if (pr < (stbsp__int32)l)
- 2760: fff7c793 not a5,a5
- 2764: 97fd srai a5,a5,0x3f
- 2766: 8ff5 and a5,a5,a3
- n = pr + lead[0] + tail[0] + tz;
- 2768: 00fa063b addw a2,s4,a5
- s = (char *)sn;
- 276c: 7ae6 ld s5,120(sp)
- n = pr + lead[0] + tail[0] + tz;
- 276e: 8732 mv a4,a2
- if ((fl & STBSP__LEFTJUST) == 0) {
- 2770: 001e7513 andi a0,t3,1
- if (pr < (stbsp__int32)l)
- 2774: 2781 sext.w a5,a5
- if (fw < (stbsp__int32)n)
- 2776: 835a mv t1,s6
- 2778: 00cb5363 bge s6,a2,277e <stbsp_vsprintfcb+0x14f2>
- 277c: 8332 mv t1,a2
- fw -= n;
- 277e: 40e3033b subw t1,t1,a4
- goto scopy;
- 2782: 4f81 li t6,0
- pr -= l;
- 2784: 40d7873b subw a4,a5,a3
- cs = 0;
- 2788: 4281 li t0,0
- tz = 0;
- 278a: 4881 li a7,0
- goto scopy;
- 278c: c42ff06f j 1bce <stbsp_vsprintfcb+0x942>
- cs = (int)(s - (num + 64)) + (3 << 24); // cs is how many tens
- 2790: 415705b3 sub a1,a4,s5
- 2794: 030002b7 lui t0,0x3000
- 2798: 00b282bb addw t0,t0,a1
- l = pr - n;
- 279c: 0008859b sext.w a1,a7
- if (pr)
- 27a0: 42088763 beqz a7,2bce <stbsp_vsprintfcb+0x1942>
- *s++ = stbsp__period;
- 27a4: 0cca4f83 lbu t6,204(s4)
- if ((l - dp) > (stbsp__uint32)pr)
- 27a8: 41d6833b subw t1,a3,t4
- *s++ = stbsp__period;
- 27ac: 00280713 addi a4,a6,2
- 27b0: 01f800a3 sb t6,1(a6)
- if ((l - dp) > (stbsp__uint32)pr)
- 27b4: 4065ed63 bltu a1,t1,2bce <stbsp_vsprintfcb+0x1942>
- while (n < l) {
- 27b8: 5ed57863 bgeu a0,a3,2da8 <stbsp_vsprintfcb+0x1b1c>
- 27bc: 40c687bb subw a5,a3,a2
- 27c0: 37fd addiw a5,a5,-1
- 27c2: 1782 slli a5,a5,0x20
- 27c4: 9381 srli a5,a5,0x20
- 27c6: 1602 slli a2,a2,0x20
- 27c8: 9201 srli a2,a2,0x20
- 27ca: 0785 addi a5,a5,1
- 27cc: 967a add a2,a2,t5
- 27ce: 97ba add a5,a5,a4
- *s++ = sn[n];
- 27d0: 00064503 lbu a0,0(a2)
- 27d4: 0705 addi a4,a4,1
- while (n < l) {
- 27d6: 0605 addi a2,a2,1
- *s++ = sn[n];
- 27d8: fea70fa3 sb a0,-1(a4)
- while (n < l) {
- 27dc: fef71ae3 bne a4,a5,27d0 <stbsp_vsprintfcb+0x1544>
- tz = pr - (l - dp);
- 27e0: 01d585bb addw a1,a1,t4
- 27e4: 40d588bb subw a7,a1,a3
- l = (stbsp__uint32)(s - (num + 64));
- 27e8: 415787b3 sub a5,a5,s5
- 27ec: b99d j 2462 <stbsp_vsprintfcb+0x11d6>
- fl |= STBSP__NEGATIVE;
- 27ee: 080e6e13 ori t3,t3,128
- tail[0] = 0;
- 27f2: 06010823 sb zero,112(sp)
- if (fl & STBSP__NEGATIVE) {
- 27f6: b539 j 2604 <stbsp_vsprintfcb+0x1378>
- tail[0] = (char)n;
- 27f8: 4799 li a5,6
- tail[n] = '0' + dp % 10;
- 27fa: 06b10b23 sb a1,118(sp)
- tail[0] = (char)n;
- 27fe: 06f10823 sb a5,112(sp)
- tail[n] = '0' + dp % 10;
- 2802: 4819 li a6,6
- 2804: 4f99 li t6,6
- n = (dp >= 1000) ? 6 : ((dp >= 100) ? 5 : ((dp >= 10) ? 4 : 3));
- 2806: 4599 li a1,6
- dp /= 10;
- 2808: 4f29 li t5,10
- if (n <= 3)
- 280a: 428d li t0,3
- 280c: 87b2 mv a5,a2
- dp /= 10;
- 280e: 03e7c7bb divw a5,a5,t5
- --n;
- 2812: 35fd addiw a1,a1,-1
- tail[n] = '0' + dp % 10;
- 2814: 02059613 slli a2,a1,0x20
- 2818: 9201 srli a2,a2,0x20
- 281a: 06010e93 addi t4,sp,96
- 281e: 22060613 addi a2,a2,544
- 2822: 9676 add a2,a2,t4
- 2824: 03e7eebb remw t4,a5,t5
- 2828: 030e8e9b addiw t4,t4,48
- 282c: dfd60823 sb t4,-528(a2)
- if (n <= 3)
- 2830: fc559fe3 bne a1,t0,280e <stbsp_vsprintfcb+0x1582>
- 2834: e6aff06f j 1e9e <stbsp_vsprintfcb+0xc12>
- *s++ = h[(n64 >> 60) & 15];
- 2838: 93f1 srli a5,a5,0x3c
- 283a: 97ae add a5,a5,a1
- 283c: 0007c303 lbu t1,0(a5)
- lead[1 + lead[0]] = '0';
- 2840: 1088 addi a0,sp,96
- 2842: 22080793 addi a5,a6,544
- 2846: 97aa add a5,a5,a0
- 2848: 03000513 li a0,48
- 284c: dea78423 sb a0,-536(a5)
- lead[2 + lead[0]] = 'x';
- 2850: 22068793 addi a5,a3,544
- 2854: 1094 addi a3,sp,96
- 2856: 96be add a3,a3,a5
- *s++ = stbsp__period;
- 2858: 00004517 auipc a0,0x4
- 285c: 13454503 lbu a0,308(a0) # 698c <stbsp__period>
- lead[2 + lead[0]] = 'x';
- 2860: 07800813 li a6,120
- sn = s;
- 2864: 0c210793 addi a5,sp,194
- lead[2 + lead[0]] = 'x';
- 2868: df068423 sb a6,-536(a3)
- *s++ = stbsp__period;
- 286c: 0ca100a3 sb a0,193(sp)
- lead[0] += 2;
- 2870: 07410423 sb s4,104(sp)
- *s++ = h[(n64 >> 60) & 15];
- 2874: 0c610023 sb t1,192(sp)
- n64 <<= 4;
- 2878: 0732 slli a4,a4,0xc
- sn = s;
- 287a: fcbe sd a5,120(sp)
- n = pr;
- 287c: 0008869b sext.w a3,a7
- while (n--) {
- 2880: 4831 li a6,12
- if (n > 13)
- 2882: 4535 li a0,13
- tz = pr - n;
- 2884: 40a688bb subw a7,a3,a0
- while (n--) {
- 2888: 02081313 slli t1,a6,0x20
- 288c: 02035313 srli t1,t1,0x20
- 2890: 22030693 addi a3,t1,544
- 2894: 1088 addi a0,sp,96
- 2896: 9536 add a0,a0,a3
- 2898: e4350513 addi a0,a0,-445
- *s++ = h[(n64 >> 60) & 15];
- 289c: 03c75693 srli a3,a4,0x3c
- 28a0: 96ae add a3,a3,a1
- 28a2: 0006c683 lbu a3,0(a3)
- 28a6: 0785 addi a5,a5,1
- n64 <<= 4;
- 28a8: 0712 slli a4,a4,0x4
- *s++ = h[(n64 >> 60) & 15];
- 28aa: fed78fa3 sb a3,-1(a5)
- while (n--) {
- 28ae: fea797e3 bne a5,a0,289c <stbsp_vsprintfcb+0x1610>
- l = (int)(s - (num + 64));
- 28b2: 280d addiw a6,a6,3
- 28b4: 0008069b sext.w a3,a6
- if (pr < (stbsp__int32)l)
- 28b8: fff6c713 not a4,a3
- 28bc: 977d srai a4,a4,0x3f
- 28be: 00e87733 and a4,a6,a4
- dp = (int)(s - sn);
- 28c2: 0013051b addiw a0,t1,1
- if (pr < (stbsp__int32)l)
- 28c6: 0007031b sext.w t1,a4
- pr -= l;
- 28ca: 4107073b subw a4,a4,a6
- 28ce: d76ff06f j 1e44 <stbsp_vsprintfcb+0xbb8>
- *--s = stbsp__comma;
- 28d2: 00004a17 auipc s4,0x4
- 28d6: feea0a13 addi s4,s4,-18 # 68c0 <stbsp__digitpair>
- if (n64 >= 100000000) {
- 28da: 05f5e7b7 lui a5,0x5f5e
- 28de: 0ff78793 addi a5,a5,255 # 5f5e0ff <_ZSt4cerr+0x5f56947>
- n = (stbsp__uint32)(n64 % 100000000);
- 28e2: 05f5e637 lui a2,0x5f5e
- *--s = stbsp__comma;
- 28e6: 0cda4b83 lbu s7,205(s4)
- if (n64 >= 100000000) {
- 28ea: e83e sd a5,16(sp)
- n = (stbsp__uint32)(n64 % 100000000);
- 28ec: 10060793 addi a5,a2,256 # 5f5e100 <_ZSt4cerr+0x5f56948>
- l = 0;
- 28f0: d082 sw zero,96(sp)
- if ((fl & STBSP__TRIPLET_COMMA) == 0) {
- 28f2: 040e7813 andi a6,t3,64
- 28f6: 4701 li a4,0
- 28f8: 4281 li t0,0
- s = num + STBSP__NUMSZ;
- 28fa: 28010a93 addi s5,sp,640
- n = (stbsp__uint32)(n64 % 100000000);
- 28fe: ec3e sd a5,24(sp)
- if ((fl & STBSP__TRIPLET_COMMA) && (l++ == 3)) {
- 2900: 430d li t1,3
- n /= 10;
- 2902: 45a9 li a1,10
- while (n) {
- 2904: 4ea5 li t4,9
- *(stbsp__uint16 *)s = *(stbsp__uint16 *)&stbsp__digitpair.pair[(n % 100) * 2];
- 2906: 06400f93 li t6,100
- if (n64 >= 100000000) {
- 290a: 67c2 ld a5,16(sp)
- char *o = s - 8;
- 290c: ff8a8513 addi a0,s5,-8
- if (n64 >= 100000000) {
- 2910: 0fe7f763 bgeu a5,t5,29fe <stbsp_vsprintfcb+0x1772>
- n = (stbsp__uint32)(n64 % 100000000);
- 2914: 6662 ld a2,24(sp)
- 2916: 02cf77b3 remu a5,t5,a2
- n64 /= 100000000;
- 291a: 02cf5f33 divu t5,t5,a2
- if ((fl & STBSP__TRIPLET_COMMA) == 0) {
- 291e: 0e080463 beqz a6,2a06 <stbsp_vsprintfcb+0x177a>
- while (n) {
- 2922: cb85 beqz a5,2952 <stbsp_vsprintfcb+0x16c6>
- *--s = stbsp__comma;
- 2924: 1afd addi s5,s5,-1
- if ((fl & STBSP__TRIPLET_COMMA) && (l++ == 3)) {
- 2926: 00671763 bne a4,t1,2934 <stbsp_vsprintfcb+0x16a8>
- --o;
- 292a: 017a8023 sb s7,0(s5)
- 292e: 157d addi a0,a0,-1
- *--s = stbsp__comma;
- 2930: 1afd addi s5,s5,-1
- l = 0;
- 2932: 4701 li a4,0
- if ((fl & STBSP__TRIPLET_COMMA) && (l++ == 3)) {
- 2934: 2705 addiw a4,a4,1
- *--s = (char)(n % 10) + '0';
- 2936: 02b7f63b remuw a2,a5,a1
- 293a: 0306061b addiw a2,a2,48
- 293e: 00ca8023 sb a2,0(s5)
- n /= 10;
- 2942: 02b7d63b divuw a2,a5,a1
- while (n) {
- 2946: 00fef563 bgeu t4,a5,2950 <stbsp_vsprintfcb+0x16c4>
- *--s = stbsp__comma;
- 294a: 1afd addi s5,s5,-1
- 294c: 87b2 mv a5,a2
- 294e: bfe1 j 2926 <stbsp_vsprintfcb+0x169a>
- while (n) {
- 2950: 4285 li t0,1
- if (n64 == 0) {
- 2952: 020f0063 beqz t5,2972 <stbsp_vsprintfcb+0x16e6>
- while (s != o)
- 2956: fb550ae3 beq a0,s5,290a <stbsp_vsprintfcb+0x167e>
- *--s = stbsp__comma;
- 295a: 1afd addi s5,s5,-1
- if ((fl & STBSP__TRIPLET_COMMA) && (l++ == 3)) {
- 295c: 00080663 beqz a6,2968 <stbsp_vsprintfcb+0x16dc>
- 2960: 08670863 beq a4,t1,29f0 <stbsp_vsprintfcb+0x1764>
- 2964: 2705 addiw a4,a4,1
- 2966: 4285 li t0,1
- *--s = '0';
- 2968: 03000793 li a5,48
- 296c: 00fa8023 sb a5,0(s5)
- 2970: b7dd j 2956 <stbsp_vsprintfcb+0x16ca>
- 2972: 00028363 beqz t0,2978 <stbsp_vsprintfcb+0x16ec>
- 2976: d0ba sw a4,96(sp)
- if ((s[0] == '0') && (s != (num + STBSP__NUMSZ)))
- 2978: 000ac703 lbu a4,0(s5)
- 297c: 03000793 li a5,48
- 2980: 34f70b63 beq a4,a5,2cd6 <stbsp_vsprintfcb+0x1a4a>
- l = (stbsp__uint32)((num + STBSP__NUMSZ) - s);
- 2984: 051c addi a5,sp,640
- 2986: 415786bb subw a3,a5,s5
- tail[0] = 0;
- 298a: 06010823 sb zero,112(sp)
- if (fl & STBSP__NEGATIVE) {
- 298e: 080e7713 andi a4,t3,128
- 2992: 87f2 mv a5,t3
- 2994: 32070863 beqz a4,2cc4 <stbsp_vsprintfcb+0x1a38>
- 2998: 678d lui a5,0x3
- 299a: d017879b addiw a5,a5,-767 # 2d01 <stbsp_vsprintfcb+0x1a75>
- sign[0] = 1;
- 299e: 06f11423 sh a5,104(sp)
- 29a2: 4705 li a4,1
- 29a4: 4a05 li s4,1
- l = (stbsp__uint32)((num + STBSP__NUMSZ) - s);
- 29a6: d0b6 sw a3,96(sp)
- if (l == 0) {
- 29a8: 30068163 beqz a3,2caa <stbsp_vsprintfcb+0x1a1e>
- cs = l + (3 << 24);
- 29ac: 030002b7 lui t0,0x3000
- 29b0: 00d282bb addw t0,t0,a3
- if (pr < (stbsp__int32)l)
- 29b4: 0006861b sext.w a2,a3
- if (pr < 0)
- 29b8: fff8c793 not a5,a7
- 29bc: 97fd srai a5,a5,0x3f
- if (pr < (stbsp__int32)l)
- 29be: 00f8f7b3 and a5,a7,a5
- 29c2: 0007859b sext.w a1,a5
- 29c6: 00c5d363 bge a1,a2,29cc <stbsp_vsprintfcb+0x1740>
- 29ca: 87b2 mv a5,a2
- n = pr + lead[0] + tail[0] + tz;
- 29cc: 00f7063b addw a2,a4,a5
- 29d0: 8732 mv a4,a2
- if (pr < (stbsp__int32)l)
- 29d2: 2781 sext.w a5,a5
- if ((fl & STBSP__LEFTJUST) == 0) {
- 29d4: 001e7513 andi a0,t3,1
- if (fw < (stbsp__int32)n)
- 29d8: 835a mv t1,s6
- 29da: 00cb5363 bge s6,a2,29e0 <stbsp_vsprintfcb+0x1754>
- 29de: 8332 mv t1,a2
- fw -= n;
- 29e0: 40e3033b subw t1,t1,a4
- scopy:
- 29e4: 4f81 li t6,0
- pr -= l;
- 29e6: 40d7873b subw a4,a5,a3
- tz = 0;
- 29ea: 4881 li a7,0
- scopy:
- 29ec: 9e2ff06f j 1bce <stbsp_vsprintfcb+0x942>
- *--s = stbsp__comma;
- 29f0: 87de mv a5,s7
- --o;
- 29f2: 157d addi a0,a0,-1
- l = 0;
- 29f4: 4701 li a4,0
- --o;
- 29f6: 4285 li t0,1
- 29f8: 00fa8023 sb a5,0(s5)
- 29fc: bfa9 j 2956 <stbsp_vsprintfcb+0x16ca>
- n = (stbsp__uint32)n64;
- 29fe: 000f079b sext.w a5,t5
- n64 = 0;
- 2a02: 4f01 li t5,0
- 2a04: bf29 j 291e <stbsp_vsprintfcb+0x1692>
- 2a06: f046 sd a7,32(sp)
- *(stbsp__uint16 *)s = *(stbsp__uint16 *)&stbsp__digitpair.pair[(n % 100) * 2];
- 2a08: 03f7f63b remuw a2,a5,t6
- s -= 2;
- 2a0c: 1af9 addi s5,s5,-2
- *(stbsp__uint16 *)s = *(stbsp__uint16 *)&stbsp__digitpair.pair[(n % 100) * 2];
- 2a0e: 0007889b sext.w a7,a5
- 2a12: 2605 addiw a2,a2,1
- 2a14: 0016161b slliw a2,a2,0x1
- 2a18: 1602 slli a2,a2,0x20
- 2a1a: 9201 srli a2,a2,0x20
- 2a1c: 9652 add a2,a2,s4
- 2a1e: 00065603 lhu a2,0(a2)
- n /= 100;
- 2a22: 03f7d7bb divuw a5,a5,t6
- *(stbsp__uint16 *)s = *(stbsp__uint16 *)&stbsp__digitpair.pair[(n % 100) * 2];
- 2a26: 00ca9023 sh a2,0(s5)
- } while (n);
- 2a2a: 06300613 li a2,99
- 2a2e: fd166de3 bltu a2,a7,2a08 <stbsp_vsprintfcb+0x177c>
- 2a32: 7882 ld a7,32(sp)
- if (n64 == 0) {
- 2a34: f20f11e3 bnez t5,2956 <stbsp_vsprintfcb+0x16ca>
- 2a38: bf2d j 2972 <stbsp_vsprintfcb+0x16e6>
- *(stbsp__uint32 *)bf = 0x20202020;
- 2a3a: 20202b37 lui s6,0x20202
- stbsp__cb_buf_clamp(i, fw);
- 2a3e: 854a mv a0,s2
- *bf++ = ' ';
- 2a40: 02000a93 li s5,32
- *(stbsp__uint32 *)bf = 0x20202020;
- 2a44: 020b0b13 addi s6,s6,32 # 20202020 <_ZSt4cerr+0x201fa868>
- stbsp__chk_cb_buf(1);
- 2a48: 1fe00a13 li s4,510
- stbsp__cb_buf_clamp(i, fw);
- 2a4c: 20000b93 li s7,512
- 2a50: 891a mv s2,t1
- 2a52: 0a098063 beqz s3,2af2 <stbsp_vsprintfcb+0x1866>
- 2a56: 40a40633 sub a2,s0,a0
- 2a5a: 40cb87bb subw a5,s7,a2
- 2a5e: 873e mv a4,a5
- 2a60: 00f95363 bge s2,a5,2a66 <stbsp_vsprintfcb+0x17da>
- 2a64: 874a mv a4,s2
- 2a66: 0007079b sext.w a5,a4
- fw -= i;
- 2a6a: 40e9093b subw s2,s2,a4
- while (i) {
- 2a6e: e799 bnez a5,2a7c <stbsp_vsprintfcb+0x17f0>
- 2a70: a281 j 2bb0 <stbsp_vsprintfcb+0x1924>
- *bf++ = ' ';
- 2a72: 01540023 sb s5,0(s0)
- --i;
- 2a76: 37fd addiw a5,a5,-1
- *bf++ = ' ';
- 2a78: 0405 addi s0,s0,1
- while (i) {
- 2a7a: cba1 beqz a5,2aca <stbsp_vsprintfcb+0x183e>
- if ((((stbsp__uintptr)bf) & 3) == 0)
- 2a7c: 00347713 andi a4,s0,3
- 2a80: fb6d bnez a4,2a72 <stbsp_vsprintfcb+0x17e6>
- while (i >= 4) {
- 2a82: 470d li a4,3
- 2a84: 40f75363 bge a4,a5,2e8a <stbsp_vsprintfcb+0x1bfe>
- 2a88: ffc7869b addiw a3,a5,-4
- 2a8c: 0026d79b srliw a5,a3,0x2
- 2a90: 0017871b addiw a4,a5,1
- 2a94: 070a slli a4,a4,0x2
- 2a96: 9722 add a4,a4,s0
- *(stbsp__uint32 *)bf = 0x20202020;
- 2a98: 01642023 sw s6,0(s0)
- bf += 4;
- 2a9c: 0411 addi s0,s0,4
- while (i >= 4) {
- 2a9e: fee41de3 bne s0,a4,2a98 <stbsp_vsprintfcb+0x180c>
- 2aa2: 0027979b slliw a5,a5,0x2
- 2aa6: 40f687bb subw a5,a3,a5
- while (i--)
- 2aaa: fff7869b addiw a3,a5,-1
- 2aae: cf91 beqz a5,2aca <stbsp_vsprintfcb+0x183e>
- 2ab0: 9fa1 addw a5,a5,s0
- *bf++ = ' ';
- 2ab2: 0705 addi a4,a4,1
- while (i--)
- 2ab4: 0007061b sext.w a2,a4
- *bf++ = ' ';
- 2ab8: ff570fa3 sb s5,-1(a4)
- while (i--)
- 2abc: fec79be3 bne a5,a2,2ab2 <stbsp_vsprintfcb+0x1826>
- 2ac0: 2685 addiw a3,a3,1
- 2ac2: 02069793 slli a5,a3,0x20
- 2ac6: 9381 srli a5,a5,0x20
- 2ac8: 943e add s0,s0,a5
- stbsp__chk_cb_buf(1);
- 2aca: 00098f63 beqz s3,2ae8 <stbsp_vsprintfcb+0x185c>
- 2ace: 40a4063b subw a2,s0,a0
- 2ad2: 00ca5b63 bge s4,a2,2ae8 <stbsp_vsprintfcb+0x185c>
- 2ad6: 65a2 ld a1,8(sp)
- 2ad8: e81e sd t2,16(sp)
- 2ada: 00cd0d3b addw s10,s10,a2
- 2ade: 9982 jalr s3
- 2ae0: 80050be3 beqz a0,22f6 <stbsp_vsprintfcb+0x106a>
- 2ae4: 63c2 ld t2,16(sp)
- 2ae6: 842a mv s0,a0
- while (fw) {
- 2ae8: f60915e3 bnez s2,2a52 <stbsp_vsprintfcb+0x17c6>
- 2aec: 892a mv s2,a0
- 2aee: f21fe06f j 1a0e <stbsp_vsprintfcb+0x782>
- stbsp__cb_buf_clamp(i, fw);
- 2af2: 87ca mv a5,s2
- fw -= i;
- 2af4: 4901 li s2,0
- if ((((stbsp__uintptr)bf) & 3) == 0)
- 2af6: b759 j 2a7c <stbsp_vsprintfcb+0x17f0>
- } else if (fl & STBSP__LEADINGPLUS) {
- 2af8: 002e7713 andi a4,t3,2
- 2afc: 94070663 beqz a4,1c48 <stbsp_vsprintfcb+0x9bc>
- sign[0] = 1;
- 2b00: 670d lui a4,0x3
- 2b02: b0170713 addi a4,a4,-1279 # 2b01 <stbsp_vsprintfcb+0x1875>
- 2b06: 06e11423 sh a4,104(sp)
- 2b0a: 93eff06f j 1c48 <stbsp_vsprintfcb+0x9bc>
- if (((stbsp__uintptr)sn & 3) == 0)
- 2b0e: 87d6 mv a5,s5
- while (limit >= 4) {
- 2b10: 470d li a4,3
- 2b12: 22d77763 bgeu a4,a3,2d40 <stbsp_vsprintfcb+0x1ab4>
- if ((v - 0x01010101) & (~v) & 0x80808080UL)
- 2b16: feff05b7 lui a1,0xfeff0
- 2b1a: 80808637 lui a2,0x80808
- 2b1e: eff5859b addiw a1,a1,-257 # fffffffffefefeff <_ZSt4cerr+0xfffffffffefe8747>
- 2b22: 08060613 addi a2,a2,128 # ffffffff80808080 <_ZSt4cerr+0xffffffff808008c8>
- while (limit >= 4) {
- 2b26: 480d li a6,3
- 2b28: a029 j 2b32 <stbsp_vsprintfcb+0x18a6>
- limit -= 4;
- 2b2a: 36f1 addiw a3,a3,-4
- sn += 4;
- 2b2c: 0791 addi a5,a5,4
- while (limit >= 4) {
- 2b2e: 20d87963 bgeu a6,a3,2d40 <stbsp_vsprintfcb+0x1ab4>
- stbsp__uint32 v = *(stbsp__uint32 *)sn;
- 2b32: 4398 lw a4,0(a5)
- if ((v - 0x01010101) & (~v) & 0x80808080UL)
- 2b34: 00b7053b addw a0,a4,a1
- 2b38: fff74713 not a4,a4
- 2b3c: 8f69 and a4,a4,a0
- 2b3e: 8f71 and a4,a4,a2
- 2b40: 2701 sext.w a4,a4
- 2b42: d765 beqz a4,2b2a <stbsp_vsprintfcb+0x189e>
- 2b44: 02069713 slli a4,a3,0x20
- 2b48: 9301 srli a4,a4,0x20
- 2b4a: 973e add a4,a4,a5
- 2b4c: a021 j 2b54 <stbsp_vsprintfcb+0x18c8>
- ++sn;
- 2b4e: 0785 addi a5,a5,1
- while (limit && *sn) {
- 2b50: 00e78663 beq a5,a4,2b5c <stbsp_vsprintfcb+0x18d0>
- 2b54: 0007c683 lbu a3,0(a5)
- 2b58: fafd bnez a3,2b4e <stbsp_vsprintfcb+0x18c2>
- 2b5a: 873e mv a4,a5
- return (stbsp__uint32)(sn - s);
- 2b5c: 41570733 sub a4,a4,s5
- 2b60: 0007069b sext.w a3,a4
- if (pr < (stbsp__int32)l)
- 2b64: fff6c793 not a5,a3
- 2b68: 97fd srai a5,a5,0x3f
- 2b6a: 8f7d and a4,a4,a5
- 2b6c: 0007079b sext.w a5,a4
- n = pr + lead[0] + tail[0] + tz;
- 2b70: 863e mv a2,a5
- pr -= l;
- 2b72: 9f15 subw a4,a4,a3
- return (stbsp__uint32)(sn - s);
- 2b74: d2eff06f j 20a2 <stbsp_vsprintfcb+0xe16>
- for (n = 1; n < l; n++)
- 2b78: 4605 li a2,1
- 2b7a: aed663e3 bltu a2,a3,2660 <stbsp_vsprintfcb+0x13d4>
- 2b7e: 0c210613 addi a2,sp,194
- 2b82: bcf5 j 267e <stbsp_vsprintfcb+0x13f2>
- l = pr + 1;
- 2b84: 4685 li a3,1
- if ((l - 1) > (stbsp__uint32)pr)
- 2b86: 4501 li a0,0
- *s++ = sn[0];
- 2b88: 0c110613 addi a2,sp,193
- 2b8c: bccd j 267e <stbsp_vsprintfcb+0x13f2>
- 2b8e: 4591 li a1,4
- 2b90: 4f91 li t6,4
- n = (dp >= 100) ? 5 : 4;
- 2b92: 4e91 li t4,4
- 2b94: be21 j 26ac <stbsp_vsprintfcb+0x1420>
- 2b96: 4a85 li s5,1
- 2b98: 80000737 lui a4,0x80000
- pr = 1; // default is 6
- 2b9c: 4a05 li s4,1
- 2b9e: 920ff06f j 1cbe <stbsp_vsprintfcb+0xa32>
- dp = (n64) ? -1022 : 0;
- 2ba2: 4601 li a2,0
- 2ba4: c119 beqz a0,2baa <stbsp_vsprintfcb+0x191e>
- 2ba6: c0200613 li a2,-1022
- *bits = b & ((((stbsp__uint64)1) << 52) - 1);
- 2baa: 872a mv a4,a0
- 2bac: a3aff06f j 1de6 <stbsp_vsprintfcb+0xb5a>
- stbsp__chk_cb_buf(1);
- 2bb0: 2601 sext.w a2,a2
- 2bb2: 1fe00793 li a5,510
- 2bb6: f2c7c0e3 blt a5,a2,2ad6 <stbsp_vsprintfcb+0x184a>
- 2bba: bd61 j 2a52 <stbsp_vsprintfcb+0x17c6>
- tail[0] = (char)n;
- 2bbc: 4795 li a5,5
- tail[n] = '0' + dp % 10;
- 2bbe: 06b10aa3 sb a1,117(sp)
- tail[0] = (char)n;
- 2bc2: 06f10823 sb a5,112(sp)
- tail[n] = '0' + dp % 10;
- 2bc6: 4815 li a6,5
- 2bc8: 4f95 li t6,5
- n = (dp >= 1000) ? 6 : ((dp >= 100) ? 5 : ((dp >= 10) ? 4 : 3));
- 2bca: 4595 li a1,5
- 2bcc: b935 j 2808 <stbsp_vsprintfcb+0x157c>
- l = pr + dp;
- 2bce: 011786bb addw a3,a5,a7
- 2bd2: d0b6 sw a3,96(sp)
- 2bd4: b6d5 j 27b8 <stbsp_vsprintfcb+0x152c>
- s = (char *)"null";
- 2bd6: 00002a97 auipc s5,0x2
- 2bda: 42aa8a93 addi s5,s5,1066 # 5000 <_GLOBAL__sub_I__ZSt3cin+0x52>
- 2bde: c80ff06f j 205e <stbsp_vsprintfcb+0xdd2>
- } else if (fl & STBSP__LEADINGPLUS) {
- 2be2: 002e7793 andi a5,t3,2
- 2be6: 1c079c63 bnez a5,2dbe <stbsp_vsprintfcb+0x1b32>
- sign[0] = 0;
- 2bea: 4689 li a3,2
- 2bec: 4a09 li s4,2
- 2bee: 4805 li a6,1
- 2bf0: 9e8ff06f j 1dd8 <stbsp_vsprintfcb+0xb4c>
- sign[0] = 1;
- 2bf4: 670d lui a4,0x3
- 2bf6: b0170713 addi a4,a4,-1279 # 2b01 <stbsp_vsprintfcb+0x1875>
- 2bfa: 06e11423 sh a4,104(sp)
- 2bfe: b86ff06f j 1f84 <stbsp_vsprintfcb+0xcf8>
- pr = 0;
- 2c02: 4881 li a7,0
- 2c04: f1ffe06f j 1b22 <stbsp_vsprintfcb+0x896>
- *s++ = '0';
- 2c08: 03000713 li a4,48
- 2c0c: 0ce10023 sb a4,192(sp)
- if (pr)
- 2c10: 1a088c63 beqz a7,2dc8 <stbsp_vsprintfcb+0x1b3c>
- *s++ = stbsp__period;
- 2c14: 00004717 auipc a4,0x4
- 2c18: d7874703 lbu a4,-648(a4) # 698c <stbsp__period>
- n = -dp;
- 2c1c: 40f007bb negw a5,a5
- *s++ = stbsp__period;
- 2c20: 0ce100a3 sb a4,193(sp)
- if ((stbsp__int32)n > pr)
- 2c24: 0007871b sext.w a4,a5
- 2c28: 00e8d363 bge a7,a4,2c2e <stbsp_vsprintfcb+0x19a2>
- 2c2c: 87c6 mv a5,a7
- 2c2e: 0007871b sext.w a4,a5
- if ((stbsp__int32)(l + n) > pr)
- 2c32: 00d7833b addw t1,a5,a3
- 2c36: 883a mv a6,a4
- while (i) {
- 2c38: 0c210793 addi a5,sp,194
- *s++ = '0';
- 2c3c: 03000513 li a0,48
- while (i) {
- 2c40: e711 bnez a4,2c4c <stbsp_vsprintfcb+0x19c0>
- 2c42: a271 j 2dce <stbsp_vsprintfcb+0x1b42>
- if ((((stbsp__uintptr)s) & 3) == 0)
- 2c44: 0037f613 andi a2,a5,3
- 2c48: 18060563 beqz a2,2dd2 <stbsp_vsprintfcb+0x1b46>
- *s++ = '0';
- 2c4c: 85ba mv a1,a4
- 2c4e: 00a78023 sb a0,0(a5)
- --i;
- 2c52: 377d addiw a4,a4,-1
- *s++ = '0';
- 2c54: 0785 addi a5,a5,1
- while (i) {
- 2c56: f77d bnez a4,2c44 <stbsp_vsprintfcb+0x19b8>
- if ((stbsp__int32)(l + n) > pr)
- 2c58: 0003071b sext.w a4,t1
- 2c5c: 4108863b subw a2,a7,a6
- 2c60: 00e8d563 bge a7,a4,2c6a <stbsp_vsprintfcb+0x19de>
- l = pr - n;
- 2c64: 0006069b sext.w a3,a2
- 2c68: d0b2 sw a2,96(sp)
- while (i) {
- 2c6a: c68d beqz a3,2c94 <stbsp_vsprintfcb+0x1a08>
- 2c6c: 7566 ld a0,120(sp)
- 2c6e: 02069813 slli a6,a3,0x20
- 2c72: 02085813 srli a6,a6,0x20
- 2c76: 01078eb3 add t4,a5,a6
- 2c7a: 85aa mv a1,a0
- 2c7c: 873e mv a4,a5
- *s++ = *sn++;
- 2c7e: 0005c883 lbu a7,0(a1)
- 2c82: 0705 addi a4,a4,1
- while (i) {
- 2c84: 0585 addi a1,a1,1
- *s++ = *sn++;
- 2c86: ff170fa3 sb a7,-1(a4)
- while (i) {
- 2c8a: ffd71ae3 bne a4,t4,2c7e <stbsp_vsprintfcb+0x19f2>
- 2c8e: 9542 add a0,a0,a6
- 2c90: 97c2 add a5,a5,a6
- 2c92: fcaa sd a0,120(sp)
- l = (stbsp__uint32)(s - (num + 64));
- 2c94: 0c010a93 addi s5,sp,192
- cs = 1 + (3 << 24); // how many tens did we write (for commas below)
- 2c98: 030002b7 lui t0,0x3000
- tz = pr - (n + l);
- 2c9c: 40d608bb subw a7,a2,a3
- l = (stbsp__uint32)(s - (num + 64));
- 2ca0: 415787b3 sub a5,a5,s5
- cs = 1 + (3 << 24); // how many tens did we write (for commas below)
- 2ca4: 0285 addi t0,t0,1 # 3000001 <_ZSt4cerr+0x2ff8849>
- 2ca6: fbcff06f j 2462 <stbsp_vsprintfcb+0x11d6>
- *--s = '0';
- 2caa: 03000793 li a5,48
- 2cae: fefa8fa3 sb a5,-1(s5)
- l = 1;
- 2cb2: 030002b7 lui t0,0x3000
- 2cb6: 4785 li a5,1
- 2cb8: d0be sw a5,96(sp)
- *--s = '0';
- 2cba: 1afd addi s5,s5,-1
- l = 1;
- 2cbc: 4605 li a2,1
- 2cbe: 0285 addi t0,t0,1 # 3000001 <_ZSt4cerr+0x2ff8849>
- 2cc0: 4685 li a3,1
- 2cc2: b9dd j 29b8 <stbsp_vsprintfcb+0x172c>
- } else if (fl & STBSP__LEADINGSPACE) {
- 2cc4: 004e7713 andi a4,t3,4
- 2cc8: e74d bnez a4,2d72 <stbsp_vsprintfcb+0x1ae6>
- } else if (fl & STBSP__LEADINGPLUS) {
- 2cca: 8b89 andi a5,a5,2
- 2ccc: efd9 bnez a5,2d6a <stbsp_vsprintfcb+0x1ade>
- sign[0] = 0;
- 2cce: 06010423 sb zero,104(sp)
- 2cd2: 4a01 li s4,0
- 2cd4: b9c9 j 29a6 <stbsp_vsprintfcb+0x171a>
- if ((s[0] == '0') && (s != (num + STBSP__NUMSZ)))
- 2cd6: 051c addi a5,sp,640
- 2cd8: cafa89e3 beq s5,a5,298a <stbsp_vsprintfcb+0x16fe>
- ++s;
- 2cdc: 0a85 addi s5,s5,1
- l = (stbsp__uint32)((num + STBSP__NUMSZ) - s);
- 2cde: 415786bb subw a3,a5,s5
- 2ce2: b165 j 298a <stbsp_vsprintfcb+0x16fe>
- n = dp - n;
- 2ce4: 40ce87bb subw a5,t4,a2
- if ((fl & STBSP__TRIPLET_COMMA) == 0) {
- 2ce8: 12030e63 beqz t1,2e24 <stbsp_vsprintfcb+0x1b98>
- if ((fl & STBSP__TRIPLET_COMMA) && (++cs == 4)) {
- 2cec: 4511 li a0,4
- 2cee: 03000613 li a2,48
- *s++ = stbsp__comma;
- 2cf2: 00170693 addi a3,a4,1
- if ((fl & STBSP__TRIPLET_COMMA) && (++cs == 4)) {
- 2cf6: 00030563 beqz t1,2d00 <stbsp_vsprintfcb+0x1a74>
- 2cfa: 2585 addiw a1,a1,1
- 2cfc: 00a58963 beq a1,a0,2d0e <stbsp_vsprintfcb+0x1a82>
- 2d00: 8736 mv a4,a3
- --n;
- 2d02: 37fd addiw a5,a5,-1
- 2d04: fec70fa3 sb a2,-1(a4)
- while (n) {
- 2d08: f7ed bnez a5,2cf2 <stbsp_vsprintfcb+0x1a66>
- 2d0a: f38ff06f j 2442 <stbsp_vsprintfcb+0x11b6>
- 2d0e: fe568fa3 sb t0,-1(a3)
- *s++ = stbsp__comma;
- 2d12: 0709 addi a4,a4,2
- if ((fl & STBSP__TRIPLET_COMMA) && (++cs == 4)) {
- 2d14: 4585 li a1,1
- 2d16: b7f5 j 2d02 <stbsp_vsprintfcb+0x1a76>
- sign[0] = 0;
- 2d18: 06010423 sb zero,104(sp)
- 2d1c: f1dfe06f j 1c38 <stbsp_vsprintfcb+0x9ac>
- tail[idx + 1] = "_kMGT"[fl >> 24];
- 2d20: 00002697 auipc a3,0x2
- 2d24: 2f068693 addi a3,a3,752 # 5010 <_GLOBAL__sub_I__ZSt3cin+0x62>
- 2d28: 9736 add a4,a4,a3
- 2d2a: 00074683 lbu a3,0(a4)
- 2d2e: 1088 addi a0,sp,96
- 2d30: 22060713 addi a4,a2,544
- 2d34: 972a add a4,a4,a0
- 2d36: ded70823 sb a3,-528(a4)
- idx++;
- 2d3a: 8fb2 mv t6,a2
- 2d3c: fb0ff06f j 24ec <stbsp_vsprintfcb+0x1260>
- while (limit && *sn) {
- 2d40: e00692e3 bnez a3,2b44 <stbsp_vsprintfcb+0x18b8>
- 2d44: bd19 j 2b5a <stbsp_vsprintfcb+0x18ce>
- pr = (dp < (stbsp__int32)l) ? l - dp : 0;
- 2d46: 0008071b sext.w a4,a6
- 2d4a: 86c2 mv a3,a6
- 2d4c: 88d2 mv a7,s4
- pr = -dp + ((pr > (stbsp__int32)l) ? (stbsp__int32) l : pr);
- 2d4e: 863a mv a2,a4
- 2d50: 00e8d363 bge a7,a4,2d56 <stbsp_vsprintfcb+0x1aca>
- 2d54: 8646 mv a2,a7
- 2d56: 40f608bb subw a7,a2,a5
- 2d5a: 814ff06f j 1d6e <stbsp_vsprintfcb+0xae2>
- divisor = 1000.0f;
- 2d5e: 00003797 auipc a5,0x3
- 2d62: a527b787 fld fa5,-1454(a5) # 57b0 <STDIN_FD+0x28>
- 2d66: dd5fe06f j 1b3a <stbsp_vsprintfcb+0x8ae>
- 2d6a: 678d lui a5,0x3
- 2d6c: b017879b addiw a5,a5,-1279 # 2b01 <stbsp_vsprintfcb+0x1875>
- 2d70: b13d j 299e <stbsp_vsprintfcb+0x1712>
- 2d72: 6789 lui a5,0x2
- 2d74: 2785 addiw a5,a5,1 # 2001 <stbsp_vsprintfcb+0xd75>
- 2d76: b125 j 299e <stbsp_vsprintfcb+0x1712>
- *s++ = stbsp__period;
- 2d78: 00004517 auipc a0,0x4
- 2d7c: c1454503 lbu a0,-1004(a0) # 698c <stbsp__period>
- sn = s;
- 2d80: 0c210793 addi a5,sp,194
- n = pr;
- 2d84: 0008869b sext.w a3,a7
- *s++ = stbsp__period;
- 2d88: 0ca100a3 sb a0,193(sp)
- sn = s;
- 2d8c: fcbe sd a5,120(sp)
- if (n > 13)
- 2d8e: 4535 li a0,13
- n64 <<= 4;
- 2d90: 0712 slli a4,a4,0x4
- if (n > 13)
- 2d92: 8836 mv a6,a3
- 2d94: 00d57363 bgeu a0,a3,2d9a <stbsp_vsprintfcb+0x1b0e>
- 2d98: 4835 li a6,13
- 2d9a: 0008051b sext.w a0,a6
- while (n--) {
- 2d9e: 387d addiw a6,a6,-1
- if (pr > (stbsp__int32)n)
- 2da0: af1542e3 blt a0,a7,2884 <stbsp_vsprintfcb+0x15f8>
- tz = 0;
- 2da4: 4881 li a7,0
- 2da6: b4cd j 2888 <stbsp_vsprintfcb+0x15fc>
- while (n < l) {
- 2da8: 87ba mv a5,a4
- 2daa: bc1d j 27e0 <stbsp_vsprintfcb+0x1554>
- tail[0] = (char)n;
- 2dac: 478d li a5,3
- 2dae: 06f10823 sb a5,112(sp)
- tail[n] = '0' + dp % 10;
- 2db2: 06b109a3 sb a1,115(sp)
- 2db6: 480d li a6,3
- 2db8: 4f8d li t6,3
- 2dba: 8e4ff06f j 1e9e <stbsp_vsprintfcb+0xc12>
- 2dbe: 678d lui a5,0x3
- 2dc0: b017879b addiw a5,a5,-1279 # 2b01 <stbsp_vsprintfcb+0x1875>
- 2dc4: 80aff06f j 1dce <stbsp_vsprintfcb+0xb42>
- if (pr)
- 2dc8: 8336 mv t1,a3
- *s++ = '0';
- 2dca: 0c110793 addi a5,sp,193
- while (i) {
- 2dce: 4801 li a6,0
- 2dd0: b561 j 2c58 <stbsp_vsprintfcb+0x19cc>
- while (i >= 4) {
- 2dd2: 460d li a2,3
- 2dd4: 04e65663 bge a2,a4,2e20 <stbsp_vsprintfcb+0x1b94>
- 2dd8: ffb5871b addiw a4,a1,-5
- 2ddc: 0027559b srliw a1,a4,0x2
- 2de0: 0015861b addiw a2,a1,1
- 2de4: 060a slli a2,a2,0x2
- *(stbsp__uint32 *)s = 0x30303030;
- 2de6: 30303537 lui a0,0x30303
- 2dea: 963e add a2,a2,a5
- 2dec: 03050513 addi a0,a0,48 # 30303030 <_ZSt4cerr+0x302fb878>
- 2df0: c388 sw a0,0(a5)
- s += 4;
- 2df2: 0791 addi a5,a5,4
- while (i >= 4) {
- 2df4: fef61ee3 bne a2,a5,2df0 <stbsp_vsprintfcb+0x1b64>
- 2df8: 0025959b slliw a1,a1,0x2
- 2dfc: 9f0d subw a4,a4,a1
- while (i) {
- 2dfe: e4070de3 beqz a4,2c58 <stbsp_vsprintfcb+0x19cc>
- *s++ = '0';
- 2e02: 03000513 li a0,48
- while (i) {
- 2e06: 00f705bb addw a1,a4,a5
- *s++ = '0';
- 2e0a: 0605 addi a2,a2,1
- while (i) {
- 2e0c: 00060e9b sext.w t4,a2
- *s++ = '0';
- 2e10: fea60fa3 sb a0,-1(a2)
- while (i) {
- 2e14: ffd59be3 bne a1,t4,2e0a <stbsp_vsprintfcb+0x1b7e>
- 2e18: 1702 slli a4,a4,0x20
- 2e1a: 9301 srli a4,a4,0x20
- 2e1c: 97ba add a5,a5,a4
- 2e1e: bd2d j 2c58 <stbsp_vsprintfcb+0x19cc>
- while (i >= 4) {
- 2e20: 863e mv a2,a5
- 2e22: b7c5 j 2e02 <stbsp_vsprintfcb+0x1b76>
- if ((((stbsp__uintptr)s) & 3) == 0)
- 2e24: 00377693 andi a3,a4,3
- 2e28: ce81 beqz a3,2e40 <stbsp_vsprintfcb+0x1bb4>
- *s++ = '0';
- 2e2a: 03000693 li a3,48
- 2e2e: 00d70023 sb a3,0(a4)
- --n;
- 2e32: 37fd addiw a5,a5,-1
- *s++ = '0';
- 2e34: 0705 addi a4,a4,1
- while (n) {
- 2e36: e0078663 beqz a5,2442 <stbsp_vsprintfcb+0x11b6>
- if ((((stbsp__uintptr)s) & 3) == 0)
- 2e3a: 00377613 andi a2,a4,3
- 2e3e: fa65 bnez a2,2e2e <stbsp_vsprintfcb+0x1ba2>
- while (n >= 4) {
- 2e40: 468d li a3,3
- 2e42: eaf6f5e3 bgeu a3,a5,2cec <stbsp_vsprintfcb+0x1a60>
- 2e46: ffc7869b addiw a3,a5,-4
- 2e4a: 0026d69b srliw a3,a3,0x2
- 2e4e: 2685 addiw a3,a3,1
- 2e50: 068a slli a3,a3,0x2
- *(stbsp__uint32 *)s = 0x30303030;
- 2e52: 30303637 lui a2,0x30303
- 2e56: 96ba add a3,a3,a4
- 2e58: 03060613 addi a2,a2,48 # 30303030 <_ZSt4cerr+0x302fb878>
- 2e5c: c310 sw a2,0(a4)
- s += 4;
- 2e5e: 0711 addi a4,a4,4
- while (n >= 4) {
- 2e60: fed71ee3 bne a4,a3,2e5c <stbsp_vsprintfcb+0x1bd0>
- 2e64: 8b8d andi a5,a5,3
- while (n) {
- 2e66: e80793e3 bnez a5,2cec <stbsp_vsprintfcb+0x1a60>
- 2e6a: dd8ff06f j 2442 <stbsp_vsprintfcb+0x11b6>
- if (((stbsp__uintptr)sn & 3) == 0)
- 2e6e: 87d6 mv a5,s5
- l = stbsp__strlen_limited(s, (pr >= 0) ? pr : ~0u);
- 2e70: 56fd li a3,-1
- 2e72: b155 j 2b16 <stbsp_vsprintfcb+0x188a>
- if ((dp <= -4) || (dp > (stbsp__int32)n)) {
- 2e74: 5775 li a4,-3
- 2e76: 00e7ce63 blt a5,a4,2e92 <stbsp_vsprintfcb+0x1c06>
- 2e7a: f6fa4663 blt s4,a5,25e6 <stbsp_vsprintfcb+0x135a>
- if (dp > 0) {
- 2e7e: ecf054e3 blez a5,2d46 <stbsp_vsprintfcb+0x1aba>
- 2e82: 86c2 mv a3,a6
- pr = (dp < (stbsp__int32)l) ? l - dp : 0;
- 2e84: 4881 li a7,0
- 2e86: ee9fe06f j 1d6e <stbsp_vsprintfcb+0xae2>
- while (i--)
- 2e8a: fff7869b addiw a3,a5,-1
- 2e8e: 8722 mv a4,s0
- 2e90: b105 j 2ab0 <stbsp_vsprintfcb+0x1824>
- if (pr > (stbsp__int32)l)
- 2e92: 0008071b sext.w a4,a6
- while ((l > 1) && (pr) && (sn[l - 1] == '0')) {
- 2e96: 7ae6 ld s5,120(sp)
- if (pr > (stbsp__int32)l)
- 2e98: 86c2 mv a3,a6
- 2e9a: 88d2 mv a7,s4
- 2e9c: f7475d63 bge a4,s4,2616 <stbsp_vsprintfcb+0x138a>
- while ((l > 1) && (pr) && (sn[l - 1] == '0')) {
- 2ea0: 8542 mv a0,a6
- 2ea2: f56ff06f j 25f8 <stbsp_vsprintfcb+0x136c>
-
-0000000000002ea6 <stbsp_sprintf>:
-{
- 2ea6: 715d addi sp,sp,-80
- va_start(va, fmt);
- 2ea8: 02010313 addi t1,sp,32
-{
- 2eac: f032 sd a2,32(sp)
- 2eae: f436 sd a3,40(sp)
- 2eb0: f83a sd a4,48(sp)
- result = STB_SPRINTF_DECORATE(vsprintfcb)(0, 0, buf, fmt, va);
- 2eb2: 86ae mv a3,a1
- 2eb4: 862a mv a2,a0
- 2eb6: 871a mv a4,t1
- 2eb8: 4581 li a1,0
- 2eba: 4501 li a0,0
-{
- 2ebc: ec06 sd ra,24(sp)
- 2ebe: fc3e sd a5,56(sp)
- 2ec0: e0c2 sd a6,64(sp)
- 2ec2: e4c6 sd a7,72(sp)
- va_start(va, fmt);
- 2ec4: e41a sd t1,8(sp)
- result = STB_SPRINTF_DECORATE(vsprintfcb)(0, 0, buf, fmt, va);
- 2ec6: bc6fe0ef jal 128c <stbsp_vsprintfcb>
-}
- 2eca: 60e2 ld ra,24(sp)
- 2ecc: 6161 addi sp,sp,80
- 2ece: 8082 ret
-
-0000000000002ed0 <stbsp_vsnprintf>:
-{
- 2ed0: dd010113 addi sp,sp,-560
- 2ed4: 22813023 sd s0,544(sp)
- 2ed8: 20913c23 sd s1,536(sp)
- 2edc: 22113423 sd ra,552(sp)
- 2ee0: 84ae mv s1,a1
- 2ee2: 842a mv s0,a0
- 2ee4: 88b2 mv a7,a2
- 2ee6: 8736 mv a4,a3
- if ( (count == 0) && !buf )
- 2ee8: e591 bnez a1,2ef4 <stbsp_vsnprintf+0x24>
- 2eea: c141 beqz a0,2f6a <stbsp_vsnprintf+0x9a>
- c.buf = buf;
- 2eec: e02a sd a0,0(sp)
- c.count = count;
- 2eee: e402 sd zero,8(sp)
- return (c->count >= STB_SPRINTF_MIN) ? c->buf : c->tmp; // go direct into buffer if you can
- 2ef0: 0810 addi a2,sp,16
- 2ef2: a089 j 2f34 <stbsp_vsnprintf+0x64>
- if (len > c->count)
- 2ef4: 0015a593 slti a1,a1,1
- 2ef8: 40b005bb negw a1,a1
- 2efc: 8de5 and a1,a1,s1
- c.buf = buf;
- 2efe: e02a sd a0,0(sp)
- c.count = count;
- 2f00: c426 sw s1,8(sp)
- c.length = 0;
- 2f02: c602 sw zero,12(sp)
- if (len > c->count)
- 2f04: 2581 sext.w a1,a1
- if (len) {
- 2f06: 0804d663 bgez s1,2f92 <stbsp_vsnprintf+0xc2>
- s = buf;
- 2f0a: 4781 li a5,0
- if (buf != c->buf) {
- 2f0c: c911 beqz a0,2f20 <stbsp_vsnprintf+0x50>
- *d++ = *s++;
- 2f0e: 0007c803 lbu a6,0(a5)
- 2f12: 0785 addi a5,a5,1
- 2f14: 00f40533 add a0,s0,a5
- 2f18: ff050fa3 sb a6,-1(a0)
- } while (s < se);
- 2f1c: feb7e9e3 bltu a5,a1,2f0e <stbsp_vsnprintf+0x3e>
- c->count -= len;
- 2f20: 40b486bb subw a3,s1,a1
- c->buf += len;
- 2f24: 95a2 add a1,a1,s0
- 2f26: e02e sd a1,0(sp)
- c->count -= len;
- 2f28: c436 sw a3,8(sp)
- return (c->count >= STB_SPRINTF_MIN) ? c->buf : c->tmp; // go direct into buffer if you can
- 2f2a: 1ff00793 li a5,511
- 2f2e: fcd7d1e3 bge a5,a3,2ef0 <stbsp_vsnprintf+0x20>
- 2f32: 6602 ld a2,0(sp)
- STB_SPRINTF_DECORATE( vsprintfcb )( stbsp__clamp_callback, &c, stbsp__clamp_callback(0,&c,0), fmt, va );
- 2f34: 86c6 mv a3,a7
- 2f36: 858a mv a1,sp
- 2f38: ffffd517 auipc a0,0xffffd
- 2f3c: 21650513 addi a0,a0,534 # 14e <stbsp__clamp_callback>
- 2f40: b4cfe0ef jal 128c <stbsp_vsprintfcb>
- l = (int)( c.buf - buf );
- 2f44: 6782 ld a5,0(sp)
- 2f46: 9f81 subw a5,a5,s0
- if ( l >= count ) // should never be greater, only equal (or less) than count
- 2f48: 0097c463 blt a5,s1,2f50 <stbsp_vsnprintf+0x80>
- l = count - 1;
- 2f4c: fff4879b addiw a5,s1,-1
- buf[l] = 0;
- 2f50: 943e add s0,s0,a5
- 2f52: 00040023 sb zero,0(s0)
-}
- 2f56: 22813083 ld ra,552(sp)
- 2f5a: 22013403 ld s0,544(sp)
- 2f5e: 4532 lw a0,12(sp)
- 2f60: 21813483 ld s1,536(sp)
- 2f64: 23010113 addi sp,sp,560
- 2f68: 8082 ret
- STB_SPRINTF_DECORATE( vsprintfcb )( stbsp__count_clamp_callback, &c, c.tmp, fmt, va );
- 2f6a: 86b2 mv a3,a2
- 2f6c: 858a mv a1,sp
- 2f6e: 0810 addi a2,sp,16
- 2f70: ffffd517 auipc a0,0xffffd
- 2f74: 22c50513 addi a0,a0,556 # 19c <stbsp__count_clamp_callback>
- c.length = 0;
- 2f78: c602 sw zero,12(sp)
- STB_SPRINTF_DECORATE( vsprintfcb )( stbsp__count_clamp_callback, &c, c.tmp, fmt, va );
- 2f7a: b12fe0ef jal 128c <stbsp_vsprintfcb>
-}
- 2f7e: 22813083 ld ra,552(sp)
- 2f82: 22013403 ld s0,544(sp)
- 2f86: 4532 lw a0,12(sp)
- 2f88: 21813483 ld s1,536(sp)
- 2f8c: 23010113 addi sp,sp,560
- 2f90: 8082 ret
- 2f92: 86a6 mv a3,s1
- 2f94: bf59 j 2f2a <stbsp_vsnprintf+0x5a>
-
-0000000000002f96 <stbsp_snprintf>:
-{
- 2f96: 715d addi sp,sp,-80
- va_start(va, fmt);
- 2f98: 02810313 addi t1,sp,40
-{
- 2f9c: f436 sd a3,40(sp)
- result = STB_SPRINTF_DECORATE(vsnprintf)(buf, count, fmt, va);
- 2f9e: 869a mv a3,t1
-{
- 2fa0: ec06 sd ra,24(sp)
- 2fa2: f83a sd a4,48(sp)
- 2fa4: fc3e sd a5,56(sp)
- 2fa6: e0c2 sd a6,64(sp)
- 2fa8: e4c6 sd a7,72(sp)
- va_start(va, fmt);
- 2faa: e41a sd t1,8(sp)
- result = STB_SPRINTF_DECORATE(vsnprintf)(buf, count, fmt, va);
- 2fac: f25ff0ef jal 2ed0 <stbsp_vsnprintf>
-}
- 2fb0: 60e2 ld ra,24(sp)
- 2fb2: 6161 addi sp,sp,80
- 2fb4: 8082 ret
-
-0000000000002fb6 <stbsp_vsprintf>:
-{
- 2fb6: 86ae mv a3,a1
- 2fb8: 8732 mv a4,a2
- return STB_SPRINTF_DECORATE(vsprintfcb)(0, 0, buf, fmt, va);
- 2fba: 4581 li a1,0
- 2fbc: 862a mv a2,a0
- 2fbe: 4501 li a0,0
- 2fc0: accfe06f j 128c <stbsp_vsprintfcb>
-
-0000000000002fc4 <sprintf>:
-{
- 2fc4: 7119 addi sp,sp,-128
- va_start(ap, format);
- 2fc6: 05010313 addi t1,sp,80
-{
- 2fca: e0a2 sd s0,64(sp)
- 2fcc: fc26 sd s1,56(sp)
- 2fce: 842a mv s0,a0
- 2fd0: e8b2 sd a2,80(sp)
- _vprintf_core(&ctx, format, ap);
- 2fd2: 0808 addi a0,sp,16
- ctx.limit = size;
- 2fd4: 54fd li s1,-1
- _vprintf_core(&ctx, format, ap);
- 2fd6: 861a mv a2,t1
-{
- 2fd8: e486 sd ra,72(sp)
- 2fda: ecb6 sd a3,88(sp)
- 2fdc: f0ba sd a4,96(sp)
- 2fde: f4be sd a5,104(sp)
- 2fe0: f8c2 sd a6,112(sp)
- 2fe2: fcc6 sd a7,120(sp)
- va_start(ap, format);
- 2fe4: e41a sd t1,8(sp)
- ctx.buf = str;
- 2fe6: e822 sd s0,16(sp)
- ctx.limit = size;
- 2fe8: ec26 sd s1,24(sp)
- ctx.written = 0;
- 2fea: f002 sd zero,32(sp)
- ctx.stream = NULL;
- 2fec: f402 sd zero,40(sp)
- _vprintf_core(&ctx, format, ap);
- 2fee: 02c000ef jal 301a <_vprintf_core.constprop.0.isra.0>
- if (ctx.written < size)
- 2ff2: 7502 ld a0,32(sp)
- 2ff4: 00950b63 beq a0,s1,300a <sprintf+0x46>
- str[ctx.written] = '\0';
- 2ff8: 942a add s0,s0,a0
- 2ffa: 00040023 sb zero,0(s0)
-}
- 2ffe: 60a6 ld ra,72(sp)
- 3000: 6406 ld s0,64(sp)
- 3002: 74e2 ld s1,56(sp)
- 3004: 2501 sext.w a0,a0
- 3006: 6109 addi sp,sp,128
- 3008: 8082 ret
- str[size - 1] = '\0';
- 300a: fe040f23 sb zero,-2(s0)
-}
- 300e: 60a6 ld ra,72(sp)
- 3010: 6406 ld s0,64(sp)
- 3012: 74e2 ld s1,56(sp)
- 3014: 2501 sext.w a0,a0
- 3016: 6109 addi sp,sp,128
- 3018: 8082 ret
-
-000000000000301a <_vprintf_core.constprop.0.isra.0>:
-static int _vprintf_core(_OutContext *ctx, const char *format, va_list ap)
- 301a: 7129 addi sp,sp,-320
- 301c: edee sd s11,216(sp)
- 301e: fe06 sd ra,312(sp)
- 3020: 8dae mv s11,a1
- while (*p)
- 3022: 0005c583 lbu a1,0(a1)
- 3026: cde9 beqz a1,3100 <_vprintf_core.constprop.0.isra.0+0xe6>
- 3028: f626 sd s1,296(sp)
- 302a: f24a sd s2,288(sp)
- 302c: ee4e sd s3,280(sp)
- 302e: e656 sd s5,264(sp)
- 3030: f9e2 sd s8,240(sp)
- 3032: fa22 sd s0,304(sp)
- 3034: ea52 sd s4,272(sp)
- 3036: e25a sd s6,256(sp)
- 3038: fdde sd s7,248(sp)
- 303a: f5e6 sd s9,232(sp)
- 303c: f1ea sd s10,224(sp)
- 303e: 84aa mv s1,a0
- 3040: 8c32 mv s8,a2
- if (*p != '%')
- 3042: 02500a93 li s5,37
- 3046: 49c1 li s3,16
- 3048: 00002917 auipc s2,0x2
- 304c: 29c90913 addi s2,s2,668 # 52e4 <_GLOBAL__sub_I__ZSt3cin+0x336>
- 3050: a039 j 305e <_vprintf_core.constprop.0.isra.0+0x44>
- _out_char(ctx, spec);
- 3052: 8526 mv a0,s1
- 3054: 952fe0ef jal 11a6 <_out_char>
- while (*p)
- 3058: 000dc583 lbu a1,0(s11)
- 305c: c5d9 beqz a1,30ea <_vprintf_core.constprop.0.isra.0+0xd0>
- _out_char(ctx, *p++);
- 305e: 0d85 addi s11,s11,1
- if (*p != '%')
- 3060: ff5599e3 bne a1,s5,3052 <_vprintf_core.constprop.0.isra.0+0x38>
- int flag_left = 0, flag_zero = 0, flag_plus = 0, flag_space = 0, flag_hash = 0;
- 3064: 4501 li a0,0
- 3066: 4881 li a7,0
- 3068: 4581 li a1,0
- 306a: 4b01 li s6,0
- 306c: 4a01 li s4,0
- if (*p == '-')
- 306e: 000dcc83 lbu s9,0(s11)
- 3072: fe0c871b addiw a4,s9,-32
- 3076: 0ff77713 zext.b a4,a4
- 307a: 00e9e763 bltu s3,a4,3088 <_vprintf_core.constprop.0.isra.0+0x6e>
- 307e: 070a slli a4,a4,0x2
- 3080: 974a add a4,a4,s2
- 3082: 4318 lw a4,0(a4)
- 3084: 974a add a4,a4,s2
- 3086: 8702 jr a4
- if (*p == '*')
- 3088: 02a00793 li a5,42
- 308c: 16fc9c63 bne s9,a5,3204 <_vprintf_core.constprop.0.isra.0+0x1ea>
- width = va_arg(ap, int);
- 3090: 000c2403 lw s0,0(s8)
- 3094: 0c21 addi s8,s8,8
- if (width < 0)
- 3096: 00045563 bgez s0,30a0 <_vprintf_core.constprop.0.isra.0+0x86>
- width = -width;
- 309a: 4080043b negw s0,s0
- flag_left = 1;
- 309e: 4a05 li s4,1
- while (*p >= '0' && *p <= '9')
- 30a0: 001dcc83 lbu s9,1(s11)
- p++;
- 30a4: 0d85 addi s11,s11,1
- if (*p == '.')
- 30a6: 02e00793 li a5,46
- int precision = -1;
- 30aa: 5bfd li s7,-1
- if (*p == '.')
- 30ac: 18fc8a63 beq s9,a5,3240 <_vprintf_core.constprop.0.isra.0+0x226>
- if (*p == 'l')
- 30b0: 06c00693 li a3,108
- 30b4: 8666 mv a2,s9
- 30b6: 1adc8663 beq s9,a3,3262 <_vprintf_core.constprop.0.isra.0+0x248>
- else if (*p == 'z')
- 30ba: 07a00693 li a3,122
- p++;
- 30be: 0d85 addi s11,s11,1
- else if (*p == 'z')
- 30c0: 24dc8163 beq s9,a3,3302 <_vprintf_core.constprop.0.isra.0+0x2e8>
- if (!spec)
- 30c4: 06400693 li a3,100
- 30c8: 4adc8163 beq s9,a3,356a <_vprintf_core.constprop.0.isra.0+0x550>
- 30cc: 06400693 li a3,100
- int len_mod = 0;
- 30d0: 4e81 li t4,0
- 30d2: 1b96e663 bltu a3,s9,327e <_vprintf_core.constprop.0.isra.0+0x264>
- 30d6: 04700693 li a3,71
- 30da: 2796e463 bltu a3,s9,3342 <_vprintf_core.constprop.0.isra.0+0x328>
- 30de: 04400693 li a3,68
- 30e2: 0596e363 bltu a3,s9,3128 <_vprintf_core.constprop.0.isra.0+0x10e>
- 30e6: 240c9363 bnez s9,332c <_vprintf_core.constprop.0.isra.0+0x312>
- 30ea: 7452 ld s0,304(sp)
- 30ec: 74b2 ld s1,296(sp)
- 30ee: 7912 ld s2,288(sp)
- 30f0: 69f2 ld s3,280(sp)
- 30f2: 6a52 ld s4,272(sp)
- 30f4: 6ab2 ld s5,264(sp)
- 30f6: 6b12 ld s6,256(sp)
- 30f8: 7bee ld s7,248(sp)
- 30fa: 7c4e ld s8,240(sp)
- 30fc: 7cae ld s9,232(sp)
- 30fe: 7d0e ld s10,224(sp)
-}
- 3100: 70f2 ld ra,312(sp)
- 3102: 6dee ld s11,216(sp)
- 3104: 6131 addi sp,sp,320
- 3106: 8082 ret
- if (*p == '-')
- 3108: 4585 li a1,1
- p++;
- 310a: 0d85 addi s11,s11,1
- if (*p == '-')
- 310c: b78d j 306e <_vprintf_core.constprop.0.isra.0+0x54>
- 310e: 4505 li a0,1
- p++;
- 3110: 0d85 addi s11,s11,1
- while (1)
- 3112: bfb1 j 306e <_vprintf_core.constprop.0.isra.0+0x54>
- if (*p == '-')
- 3114: 4885 li a7,1
- p++;
- 3116: 0d85 addi s11,s11,1
- while (1)
- 3118: bf99 j 306e <_vprintf_core.constprop.0.isra.0+0x54>
- if (*p == '-')
- 311a: 4b05 li s6,1
- p++;
- 311c: 0d85 addi s11,s11,1
- while (1)
- 311e: bf81 j 306e <_vprintf_core.constprop.0.isra.0+0x54>
- if (*p == '-')
- 3120: 4a05 li s4,1
- p++;
- 3122: 0d85 addi s11,s11,1
- while (1)
- 3124: b7a9 j 306e <_vprintf_core.constprop.0.isra.0+0x54>
- char spec = *p++;
- 3126: 8dbe mv s11,a5
- fmt_tmp[f_idx++] = '%';
- 3128: 02500693 li a3,37
- 312c: 02d10823 sb a3,48(sp)
- 3130: 4d05 li s10,1
- if (flag_left)
- 3132: 000a0763 beqz s4,3140 <_vprintf_core.constprop.0.isra.0+0x126>
- fmt_tmp[f_idx++] = '-';
- 3136: 02d00693 li a3,45
- 313a: 02d108a3 sb a3,49(sp)
- 313e: 4d09 li s10,2
- if (flag_zero)
- 3140: 000b0c63 beqz s6,3158 <_vprintf_core.constprop.0.isra.0+0x13e>
- fmt_tmp[f_idx++] = '0';
- 3144: 0c0d0793 addi a5,s10,192
- 3148: 0818 addi a4,sp,16
- 314a: 00e786b3 add a3,a5,a4
- 314e: 03000613 li a2,48
- 3152: f6c68023 sb a2,-160(a3)
- 3156: 2d05 addiw s10,s10,1
- if (flag_plus)
- 3158: c999 beqz a1,316e <_vprintf_core.constprop.0.isra.0+0x154>
- fmt_tmp[f_idx++] = '+';
- 315a: 0c0d0793 addi a5,s10,192
- 315e: 0818 addi a4,sp,16
- 3160: 00e786b3 add a3,a5,a4
- 3164: 02b00613 li a2,43
- 3168: f6c68023 sb a2,-160(a3)
- 316c: 2d05 addiw s10,s10,1
- if (flag_space)
- 316e: 00088c63 beqz a7,3186 <_vprintf_core.constprop.0.isra.0+0x16c>
- fmt_tmp[f_idx++] = ' ';
- 3172: 0c0d0793 addi a5,s10,192
- 3176: 0818 addi a4,sp,16
- 3178: 00e786b3 add a3,a5,a4
- 317c: 02000613 li a2,32
- 3180: f6c68023 sb a2,-160(a3)
- 3184: 2d05 addiw s10,s10,1
- if (flag_hash)
- 3186: c919 beqz a0,319c <_vprintf_core.constprop.0.isra.0+0x182>
- fmt_tmp[f_idx++] = '#';
- 3188: 0c0d0793 addi a5,s10,192
- 318c: 0818 addi a4,sp,16
- 318e: 00e786b3 add a3,a5,a4
- 3192: 02300613 li a2,35
- 3196: f6c68023 sb a2,-160(a3)
- 319a: 2d05 addiw s10,s10,1
- if (width > 0)
- 319c: 03010a13 addi s4,sp,48
- 31a0: 28804563 bgtz s0,342a <_vprintf_core.constprop.0.isra.0+0x410>
- if (precision >= 0)
- 31a4: 260bd763 bgez s7,3412 <_vprintf_core.constprop.0.isra.0+0x3f8>
- fmt_tmp[f_idx++] = spec;
- 31a8: 0c0d0793 addi a5,s10,192
- 31ac: 0818 addi a4,sp,16
- 31ae: 00e78633 add a2,a5,a4
- stbsp_snprintf(f_buf, sizeof(f_buf), fmt_tmp, f_val);
- 31b2: 000c3683 ld a3,0(s8)
- fmt_tmp[f_idx] = '\0';
- 31b6: 001d071b addiw a4,s10,1
- 31ba: 0c070793 addi a5,a4,192
- 31be: 0818 addi a4,sp,16
- fmt_tmp[f_idx++] = spec;
- 31c0: f7960023 sb s9,-160(a2)
- fmt_tmp[f_idx] = '\0';
- 31c4: 973e add a4,a4,a5
- stbsp_snprintf(f_buf, sizeof(f_buf), fmt_tmp, f_val);
- 31c6: 08000593 li a1,128
- 31ca: 8652 mv a2,s4
- 31cc: 0888 addi a0,sp,80
- fmt_tmp[f_idx] = '\0';
- 31ce: f6070023 sb zero,-160(a4)
- stbsp_snprintf(f_buf, sizeof(f_buf), fmt_tmp, f_val);
- 31d2: dc5ff0ef jal 2f96 <stbsp_snprintf>
- for (int i = 0; f_buf[i] != '\0'; i++)
- 31d6: 05014583 lbu a1,80(sp)
- double f_val = va_arg(ap, double);
- 31da: 0c21 addi s8,s8,8
- for (int i = 0; f_buf[i] != '\0'; i++)
- 31dc: 05110413 addi s0,sp,81
- 31e0: e6058ce3 beqz a1,3058 <_vprintf_core.constprop.0.isra.0+0x3e>
- _out_char(ctx, f_buf[i]);
- 31e4: 8526 mv a0,s1
- 31e6: fc1fd0ef jal 11a6 <_out_char>
- for (int i = 0; f_buf[i] != '\0'; i++)
- 31ea: 00044583 lbu a1,0(s0)
- 31ee: 0405 addi s0,s0,1
- 31f0: e60584e3 beqz a1,3058 <_vprintf_core.constprop.0.isra.0+0x3e>
- _out_char(ctx, f_buf[i]);
- 31f4: 8526 mv a0,s1
- 31f6: fb1fd0ef jal 11a6 <_out_char>
- for (int i = 0; f_buf[i] != '\0'; i++)
- 31fa: 00044583 lbu a1,0(s0)
- 31fe: 0405 addi s0,s0,1
- 3200: f1f5 bnez a1,31e4 <_vprintf_core.constprop.0.isra.0+0x1ca>
- 3202: bd99 j 3058 <_vprintf_core.constprop.0.isra.0+0x3e>
- while (*p >= '0' && *p <= '9')
- 3204: fd0c869b addiw a3,s9,-48
- 3208: 0ff6f313 zext.b t1,a3
- 320c: 4725 li a4,9
- int width = 0;
- 320e: 4401 li s0,0
- while (*p >= '0' && *p <= '9')
- 3210: 4625 li a2,9
- 3212: e8676ae3 bltu a4,t1,30a6 <_vprintf_core.constprop.0.isra.0+0x8c>
- 3216: 001dcc83 lbu s9,1(s11)
- width = width * 10 + (*p - '0');
- 321a: 0024171b slliw a4,s0,0x2
- 321e: 9f21 addw a4,a4,s0
- 3220: 0017171b slliw a4,a4,0x1
- 3224: 00e6843b addw s0,a3,a4
- while (*p >= '0' && *p <= '9')
- 3228: fd0c869b addiw a3,s9,-48
- 322c: 0ff6f713 zext.b a4,a3
- p++;
- 3230: 0d85 addi s11,s11,1
- while (*p >= '0' && *p <= '9')
- 3232: fee672e3 bgeu a2,a4,3216 <_vprintf_core.constprop.0.isra.0+0x1fc>
- if (*p == '.')
- 3236: 02e00793 li a5,46
- int precision = -1;
- 323a: 5bfd li s7,-1
- if (*p == '.')
- 323c: e6fc9ae3 bne s9,a5,30b0 <_vprintf_core.constprop.0.isra.0+0x96>
- if (*p == '*')
- 3240: 001dcc83 lbu s9,1(s11)
- 3244: 02a00793 li a5,42
- 3248: 16fc9f63 bne s9,a5,33c6 <_vprintf_core.constprop.0.isra.0+0x3ac>
- while (*p >= '0' && *p <= '9')
- 324c: 002dcc83 lbu s9,2(s11)
- if (*p == 'l')
- 3250: 06c00693 li a3,108
- precision = va_arg(ap, int);
- 3254: 000c2b83 lw s7,0(s8)
- p++;
- 3258: 0d89 addi s11,s11,2
- precision = va_arg(ap, int);
- 325a: 0c21 addi s8,s8,8
- if (*p == 'l')
- 325c: 8666 mv a2,s9
- 325e: e4dc9ee3 bne s9,a3,30ba <_vprintf_core.constprop.0.isra.0+0xa0>
- if (*p == 'l')
- 3262: 001dcc83 lbu s9,1(s11)
- 3266: 08cc8d63 beq s9,a2,3300 <_vprintf_core.constprop.0.isra.0+0x2e6>
- char spec = *p++;
- 326a: 06400693 li a3,100
- 326e: 0d89 addi s11,s11,2
- if (!spec)
- 3270: 4cdc8c63 beq s9,a3,3748 <_vprintf_core.constprop.0.isra.0+0x72e>
- 3274: 06400693 li a3,100
- len_mod = 1;
- 3278: 4e85 li t4,1
- 327a: e596fee3 bgeu a3,s9,30d6 <_vprintf_core.constprop.0.isra.0+0xbc>
- 327e: f9bc869b addiw a3,s9,-101
- 3282: 0ff6f693 zext.b a3,a3
- 3286: 464d li a2,19
- 3288: 12d66863 bltu a2,a3,33b8 <_vprintf_core.constprop.0.isra.0+0x39e>
- 328c: 4e05 li t3,1
- 328e: 00091637 lui a2,0x91
- 3292: 00de1333 sll t1,t3,a3
- 3296: 81060613 addi a2,a2,-2032 # 90810 <_ZSt4cerr+0x89058>
- 329a: 00c37633 and a2,t1,a2
- 329e: 1a061463 bnez a2,3446 <_vprintf_core.constprop.0.isra.0+0x42c>
- 32a2: 00737313 andi t1,t1,7
- 32a6: e80311e3 bnez t1,3128 <_vprintf_core.constprop.0.isra.0+0x10e>
- 32aa: 4639 li a2,14
- 32ac: 10c69663 bne a3,a2,33b8 <_vprintf_core.constprop.0.isra.0+0x39e>
- const char *s = va_arg(ap, char *);
- 32b0: 000c3c83 ld s9,0(s8)
- if (!s)
- 32b4: 420c8863 beqz s9,36e4 <_vprintf_core.constprop.0.isra.0+0x6ca>
- while (*tmp && (precision < 0 || len < precision))
- 32b8: 000cc683 lbu a3,0(s9)
- 32bc: 38068863 beqz a3,364c <_vprintf_core.constprop.0.isra.0+0x632>
- const char *tmp = s;
- 32c0: 8666 mv a2,s9
- int len = 0;
- 32c2: 4681 li a3,0
- while (*tmp && (precision < 0 || len < precision))
- 32c4: 00db8863 beq s7,a3,32d4 <_vprintf_core.constprop.0.isra.0+0x2ba>
- 32c8: 00164583 lbu a1,1(a2)
- len++;
- 32cc: 2685 addiw a3,a3,1
- tmp++;
- 32ce: 0605 addi a2,a2,1
- while (*tmp && (precision < 0 || len < precision))
- 32d0: f9f5 bnez a1,32c4 <_vprintf_core.constprop.0.isra.0+0x2aa>
- 32d2: 8bb6 mv s7,a3
- int padding = (width > len) ? width - len : 0;
- 32d4: 268bc563 blt s7,s0,353e <_vprintf_core.constprop.0.isra.0+0x524>
- for (int i = 0; i < len; i++)
- 32d8: 4401 li s0,0
- 32da: 020b8163 beqz s7,32fc <_vprintf_core.constprop.0.isra.0+0x2e2>
- 32de: 4d01 li s10,0
- _out_char(ctx, s[i]);
- 32e0: 01ac86b3 add a3,s9,s10
- 32e4: 0006c583 lbu a1,0(a3)
- 32e8: 8526 mv a0,s1
- for (int i = 0; i < len; i++)
- 32ea: 0d05 addi s10,s10,1
- _out_char(ctx, s[i]);
- 32ec: ebbfd0ef jal 11a6 <_out_char>
- for (int i = 0; i < len; i++)
- 32f0: 000d069b sext.w a3,s10
- 32f4: ff76c6e3 blt a3,s7,32e0 <_vprintf_core.constprop.0.isra.0+0x2c6>
- if (flag_left)
- 32f8: 260a1463 bnez s4,3560 <_vprintf_core.constprop.0.isra.0+0x546>
- const char *s = va_arg(ap, char *);
- 32fc: 0c21 addi s8,s8,8
- 32fe: bba9 j 3058 <_vprintf_core.constprop.0.isra.0+0x3e>
- p++;
- 3300: 0d89 addi s11,s11,2
- char spec = *p++;
- 3302: 000dcc83 lbu s9,0(s11)
- 3306: 06400693 li a3,100
- 330a: 001d8793 addi a5,s11,1
- if (!spec)
- 330e: 3edc8063 beq s9,a3,36ee <_vprintf_core.constprop.0.isra.0+0x6d4>
- 3312: 0796ea63 bltu a3,s9,3386 <_vprintf_core.constprop.0.isra.0+0x36c>
- 3316: 04700693 li a3,71
- 331a: 0f96e263 bltu a3,s9,33fe <_vprintf_core.constprop.0.isra.0+0x3e4>
- 331e: 04400693 li a3,68
- 3322: e196e2e3 bltu a3,s9,3126 <_vprintf_core.constprop.0.isra.0+0x10c>
- 3326: dc0c82e3 beqz s9,30ea <_vprintf_core.constprop.0.isra.0+0xd0>
- char spec = *p++;
- 332a: 8dbe mv s11,a5
- _out_char(ctx, '%');
- 332c: 02500593 li a1,37
- 3330: 8526 mv a0,s1
- 3332: e75fd0ef jal 11a6 <_out_char>
- if (spec != '%')
- 3336: 02500713 li a4,37
- 333a: d0ec8fe3 beq s9,a4,3058 <_vprintf_core.constprop.0.isra.0+0x3e>
- _out_char(ctx, spec);
- 333e: 85e6 mv a1,s9
- 3340: bb09 j 3052 <_vprintf_core.constprop.0.isra.0+0x38>
- 3342: 05800693 li a3,88
- 3346: 2edc8263 beq s9,a3,362a <_vprintf_core.constprop.0.isra.0+0x610>
- 334a: 06300713 li a4,99
- 334e: 06ec9563 bne s9,a4,33b8 <_vprintf_core.constprop.0.isra.0+0x39e>
- char c = (char)va_arg(ap, int);
- 3352: 000c4c83 lbu s9,0(s8)
- int padding = (width > 1) ? width - 1 : 0;
- 3356: 8722 mv a4,s0
- 3358: 00804363 bgtz s0,335e <_vprintf_core.constprop.0.isra.0+0x344>
- 335c: 4705 li a4,1
- 335e: fff7041b addiw s0,a4,-1
- if (!flag_left)
- 3362: 3c0a0463 beqz s4,372a <_vprintf_core.constprop.0.isra.0+0x710>
- _out_char(ctx, c);
- 3366: 85e6 mv a1,s9
- 3368: 8526 mv a0,s1
- 336a: e3dfd0ef jal 11a6 <_out_char>
- for (int i = 0; i < padding; i++)
- 336e: 4a01 li s4,0
- 3370: d451 beqz s0,32fc <_vprintf_core.constprop.0.isra.0+0x2e2>
- _out_char(ctx, ' ');
- 3372: 02000593 li a1,32
- 3376: 8526 mv a0,s1
- for (int i = 0; i < padding; i++)
- 3378: 2a05 addiw s4,s4,1
- _out_char(ctx, ' ');
- 337a: e2dfd0ef jal 11a6 <_out_char>
- for (int i = 0; i < padding; i++)
- 337e: ff441ae3 bne s0,s4,3372 <_vprintf_core.constprop.0.isra.0+0x358>
- const char *s = va_arg(ap, char *);
- 3382: 0c21 addi s8,s8,8
- 3384: b9d1 j 3058 <_vprintf_core.constprop.0.isra.0+0x3e>
- 3386: f9bc861b addiw a2,s9,-101
- 338a: 0ff67613 zext.b a2,a2
- 338e: 46cd li a3,19
- 3390: 40c6e963 bltu a3,a2,37a2 <_vprintf_core.constprop.0.isra.0+0x788>
- 3394: 00091337 lui t1,0x91
- 3398: 4685 li a3,1
- 339a: 00c696b3 sll a3,a3,a2
- 339e: 81030313 addi t1,t1,-2032 # 90810 <_ZSt4cerr+0x89058>
- 33a2: 0066f333 and t1,a3,t1
- 33a6: 34031c63 bnez t1,36fe <_vprintf_core.constprop.0.isra.0+0x6e4>
- 33aa: 8a9d andi a3,a3,7
- 33ac: d6069de3 bnez a3,3126 <_vprintf_core.constprop.0.isra.0+0x10c>
- 33b0: 46b9 li a3,14
- char spec = *p++;
- 33b2: 8dbe mv s11,a5
- 33b4: eed60ee3 beq a2,a3,32b0 <_vprintf_core.constprop.0.isra.0+0x296>
- _out_char(ctx, '%');
- 33b8: 02500593 li a1,37
- 33bc: 8526 mv a0,s1
- 33be: de9fd0ef jal 11a6 <_out_char>
- _out_char(ctx, spec);
- 33c2: 85e6 mv a1,s9
- 33c4: b179 j 3052 <_vprintf_core.constprop.0.isra.0+0x38>
- while (*p >= '0' && *p <= '9')
- 33c6: fd0c869b addiw a3,s9,-48
- 33ca: 0ff6fe13 zext.b t3,a3
- 33ce: 4625 li a2,9
- p++;
- 33d0: 0d85 addi s11,s11,1
- precision = 0;
- 33d2: 4b81 li s7,0
- while (*p >= '0' && *p <= '9')
- 33d4: 4325 li t1,9
- 33d6: cdc66de3 bltu a2,t3,30b0 <_vprintf_core.constprop.0.isra.0+0x96>
- precision = precision * 10 + (*p - '0');
- 33da: 002b961b slliw a2,s7,0x2
- while (*p >= '0' && *p <= '9')
- 33de: 001dcc83 lbu s9,1(s11)
- precision = precision * 10 + (*p - '0');
- 33e2: 0176073b addw a4,a2,s7
- 33e6: 0017171b slliw a4,a4,0x1
- 33ea: 00e68bbb addw s7,a3,a4
- while (*p >= '0' && *p <= '9')
- 33ee: fd0c869b addiw a3,s9,-48
- 33f2: 0ff6f613 zext.b a2,a3
- p++;
- 33f6: 0d85 addi s11,s11,1
- while (*p >= '0' && *p <= '9')
- 33f8: fec371e3 bgeu t1,a2,33da <_vprintf_core.constprop.0.isra.0+0x3c0>
- 33fc: b955 j 30b0 <_vprintf_core.constprop.0.isra.0+0x96>
- 33fe: 05800693 li a3,88
- 3402: 3cdc8d63 beq s9,a3,37dc <_vprintf_core.constprop.0.isra.0+0x7c2>
- 3406: 06300713 li a4,99
- char spec = *p++;
- 340a: 8dbe mv s11,a5
- 340c: f4ec83e3 beq s9,a4,3352 <_vprintf_core.constprop.0.isra.0+0x338>
- 3410: b765 j 33b8 <_vprintf_core.constprop.0.isra.0+0x39e>
- f_idx += sprintf(&fmt_tmp[f_idx], ".%d", precision);
- 3412: 01aa0533 add a0,s4,s10
- 3416: 865e mv a2,s7
- 3418: 00002597 auipc a1,0x2
- 341c: c5058593 addi a1,a1,-944 # 5068 <_GLOBAL__sub_I__ZSt3cin+0xba>
- 3420: ba5ff0ef jal 2fc4 <sprintf>
- 3424: 00ad0d3b addw s10,s10,a0
- 3428: b341 j 31a8 <_vprintf_core.constprop.0.isra.0+0x18e>
- f_idx += sprintf(&fmt_tmp[f_idx], "%d", width);
- 342a: 01aa0533 add a0,s4,s10
- 342e: 8622 mv a2,s0
- 3430: 00002597 auipc a1,0x2
- 3434: c3058593 addi a1,a1,-976 # 5060 <_GLOBAL__sub_I__ZSt3cin+0xb2>
- 3438: b8dff0ef jal 2fc4 <sprintf>
- 343c: 00ad0d3b addw s10,s10,a0
- if (precision >= 0)
- 3440: d60bc4e3 bltz s7,31a8 <_vprintf_core.constprop.0.isra.0+0x18e>
- 3444: b7f9 j 3412 <_vprintf_core.constprop.0.isra.0+0x3f8>
- int is_signed = (spec == 'd' || spec == 'i');
- 3446: 06900693 li a3,105
- 344a: 10dc8e63 beq s9,a3,3566 <_vprintf_core.constprop.0.isra.0+0x54c>
- val = (uint64)va_arg(ap, void *);
- 344e: 008c0793 addi a5,s8,8
- int base = (spec == 'x' || spec == 'X' || spec == 'p') ? 16 : 10;
- 3452: 07800693 li a3,120
- val = (uint64)va_arg(ap, void *);
- 3456: e43e sd a5,8(sp)
- int base = (spec == 'x' || spec == 'X' || spec == 'p') ? 16 : 10;
- 3458: 38dc9d63 bne s9,a3,37f2 <_vprintf_core.constprop.0.isra.0+0x7d8>
- else if (len_mod == 1)
- 345c: 33ce8963 beq t4,t3,378e <_vprintf_core.constprop.0.isra.0+0x774>
- val = is_signed ? (uint64)((int64)va_arg(ap, int)) : (uint64)va_arg(ap, uint32);
- 3460: 000c6e03 lwu t3,0(s8)
- 3464: 85f6 mv a1,t4
- 3466: e002 sd zero,0(sp)
- int base = (spec == 'x' || spec == 'X' || spec == 'p') ? 16 : 10;
- 3468: 4341 li t1,16
- const char *digits = uppercase ? "0123456789ABCDEF" : "0123456789abcdef";
- 346a: 00002f97 auipc t6,0x2
- 346e: bc6f8f93 addi t6,t6,-1082 # 5030 <_GLOBAL__sub_I__ZSt3cin+0x82>
- if (val == 0)
- 3472: 120e0363 beqz t3,3598 <_vprintf_core.constprop.0.isra.0+0x57e>
- 3476: 01010293 addi t0,sp,16
- sign_char = '-';
- 347a: 8616 mv a2,t0
- 347c: 86f2 mv a3,t3
- buf[i++] = digits[val % base];
- 347e: 0266f8b3 remu a7,a3,t1
- 3482: 8f32 mv t5,a2
- while (val != 0)
- 3484: 0605 addi a2,a2,1
- 3486: 8eb6 mv t4,a3
- buf[i++] = digits[val % base];
- 3488: 98fe add a7,a7,t6
- 348a: 0008c883 lbu a7,0(a7)
- val /= base;
- 348e: 0266d6b3 divu a3,a3,t1
- buf[i++] = digits[val % base];
- 3492: ff160fa3 sb a7,-1(a2)
- while (val != 0)
- 3496: fe6ef4e3 bgeu t4,t1,347e <_vprintf_core.constprop.0.isra.0+0x464>
- buf[i++] = digits[val % base];
- 349a: 405f0f3b subw t5,t5,t0
- 349e: 2f05 addiw t5,t5,1
- if (precision >= 0)
- 34a0: 100bc363 bltz s7,35a6 <_vprintf_core.constprop.0.isra.0+0x58c>
- int prec_zeros = (precision > digit_len) ? precision - digit_len : 0;
- 34a4: 1d7f4d63 blt t5,s7,367e <_vprintf_core.constprop.0.isra.0+0x664>
- if (precision == 0 && val == 0)
- 34a8: 340b9163 bnez s7,37ea <_vprintf_core.constprop.0.isra.0+0x7d0>
- 34ac: 200e0763 beqz t3,36ba <_vprintf_core.constprop.0.isra.0+0x6a0>
- for (int i = digit_len - 1; i >= 0; i--)
- 34b0: ffff0c1b addiw s8,t5,-1
- if (spec == 'p' || (flag_hash && val != 0 && (spec == 'x' || spec == 'X')))
- 34b4: 07000693 li a3,112
- for (int i = digit_len - 1; i >= 0; i--)
- 34b8: 8662 mv a2,s8
- if (spec == 'p' || (flag_hash && val != 0 && (spec == 'x' || spec == 'X')))
- 34ba: 28dc8e63 beq s9,a3,3756 <_vprintf_core.constprop.0.isra.0+0x73c>
- 34be: 2a051663 bnez a0,376a <_vprintf_core.constprop.0.isra.0+0x750>
- int padding = (width > prefix_len + prec_zeros + digit_len) ? width - (prefix_len + prec_zeros + digit_len) : 0;
- 34c2: 00bf05bb addw a1,t5,a1
- 34c6: 8d52 mv s10,s4
- 34c8: 4b01 li s6,0
- char *prefix_str = NULL;
- 34ca: 4c81 li s9,0
- int padding = (width > prefix_len + prec_zeros + digit_len) ? width - (prefix_len + prec_zeros + digit_len) : 0;
- 34cc: 1085d263 bge a1,s0,35d0 <_vprintf_core.constprop.0.isra.0+0x5b6>
- 34d0: 9c0d subw s0,s0,a1
- if (!flag_left && !flag_zero)
- 34d2: 100d0a63 beqz s10,35e6 <_vprintf_core.constprop.0.isra.0+0x5cc>
- if (sign_char)
- 34d6: 6782 ld a5,0(sp)
- 34d8: 10079263 bnez a5,35dc <_vprintf_core.constprop.0.isra.0+0x5c2>
- if (prefix_str)
- 34dc: 000c8c63 beqz s9,34f4 <_vprintf_core.constprop.0.isra.0+0x4da>
- _out_char(ctx, prefix_str[0]);
- 34e0: 000cc583 lbu a1,0(s9)
- 34e4: 8526 mv a0,s1
- 34e6: cc1fd0ef jal 11a6 <_out_char>
- _out_char(ctx, prefix_str[1]);
- 34ea: 001cc583 lbu a1,1(s9)
- 34ee: 8526 mv a0,s1
- 34f0: cb7fd0ef jal 11a6 <_out_char>
- int total_zeros = prec_zeros + ((flag_zero && !flag_left) ? padding : 0);
- 34f4: 180b0263 beqz s6,3678 <_vprintf_core.constprop.0.isra.0+0x65e>
- 34f8: 100a1863 bnez s4,3608 <_vprintf_core.constprop.0.isra.0+0x5ee>
- 34fc: 008b8bbb addw s7,s7,s0
- for (int i = 0; i < total_zeros; i++)
- 3500: 2a0b8363 beqz s7,37a6 <_vprintf_core.constprop.0.isra.0+0x78c>
- 3504: 4c81 li s9,0
- _out_char(ctx, '0');
- 3506: 03000593 li a1,48
- 350a: 8526 mv a0,s1
- for (int i = 0; i < total_zeros; i++)
- 350c: 2c85 addiw s9,s9,1
- _out_char(ctx, '0');
- 350e: c99fd0ef jal 11a6 <_out_char>
- for (int i = 0; i < total_zeros; i++)
- 3512: ff7c9ae3 bne s9,s7,3506 <_vprintf_core.constprop.0.isra.0+0x4ec>
- for (int i = digit_len - 1; i >= 0; i--)
- 3516: 57fd li a5,-1
- 3518: 00fc0f63 beq s8,a5,3536 <_vprintf_core.constprop.0.isra.0+0x51c>
- 351c: 01010c93 addi s9,sp,16
- 3520: 9ce2 add s9,s9,s8
- 3522: 00f10c13 addi s8,sp,15
- _out_char(ctx, num_buf[i]);
- 3526: 000cc583 lbu a1,0(s9)
- 352a: 8526 mv a0,s1
- for (int i = digit_len - 1; i >= 0; i--)
- 352c: 1cfd addi s9,s9,-1
- _out_char(ctx, num_buf[i]);
- 352e: c79fd0ef jal 11a6 <_out_char>
- for (int i = digit_len - 1; i >= 0; i--)
- 3532: ff9c1ae3 bne s8,s9,3526 <_vprintf_core.constprop.0.isra.0+0x50c>
- if (flag_left)
- 3536: 0c0a1e63 bnez s4,3612 <_vprintf_core.constprop.0.isra.0+0x5f8>
- char spec = *p++;
- 353a: 6c22 ld s8,8(sp)
- 353c: be31 j 3058 <_vprintf_core.constprop.0.isra.0+0x3e>
- int padding = (width > len) ? width - len : 0;
- 353e: 4174043b subw s0,s0,s7
- if (!flag_left)
- 3542: 100a0a63 beqz s4,3656 <_vprintf_core.constprop.0.isra.0+0x63c>
- for (int i = 0; i < len; i++)
- 3546: d80b9ce3 bnez s7,32de <_vprintf_core.constprop.0.isra.0+0x2c4>
- for (int i = 0; i < padding; i++)
- 354a: 4a01 li s4,0
- _out_char(ctx, ' ');
- 354c: 02000593 li a1,32
- 3550: 8526 mv a0,s1
- for (int i = 0; i < padding; i++)
- 3552: 2a05 addiw s4,s4,1
- _out_char(ctx, ' ');
- 3554: c53fd0ef jal 11a6 <_out_char>
- for (int i = 0; i < padding; i++)
- 3558: ff441ae3 bne s0,s4,354c <_vprintf_core.constprop.0.isra.0+0x532>
- const char *s = va_arg(ap, char *);
- 355c: 0c21 addi s8,s8,8
- 355e: bced j 3058 <_vprintf_core.constprop.0.isra.0+0x3e>
- for (int i = 0; i < padding; i++)
- 3560: f46d bnez s0,354a <_vprintf_core.constprop.0.isra.0+0x530>
- const char *s = va_arg(ap, char *);
- 3562: 0c21 addi s8,s8,8
- 3564: bcd5 j 3058 <_vprintf_core.constprop.0.isra.0+0x3e>
- else if (len_mod == 1)
- 3566: 1fce8163 beq t4,t3,3748 <_vprintf_core.constprop.0.isra.0+0x72e>
- val = is_signed ? (uint64)((int64)va_arg(ap, int)) : (uint64)va_arg(ap, uint32);
- 356a: 000c2e03 lw t3,0(s8)
- 356e: 008c0793 addi a5,s8,8
- 3572: e43e sd a5,8(sp)
- int64 sval = (int64)val;
- 3574: 86f2 mv a3,t3
- if (sval < 0)
- 3576: 1406cb63 bltz a3,36cc <_vprintf_core.constprop.0.isra.0+0x6b2>
- sign_char = '+';
- 357a: 02b00793 li a5,43
- 357e: e03e sd a5,0(sp)
- else if (flag_plus)
- 3580: e589 bnez a1,358a <_vprintf_core.constprop.0.isra.0+0x570>
- else if (flag_space)
- 3582: 00589793 slli a5,a7,0x5
- 3586: e03e sd a5,0(sp)
- 3588: 85c6 mv a1,a7
- const char *digits = uppercase ? "0123456789ABCDEF" : "0123456789abcdef";
- 358a: 4329 li t1,10
- 358c: 00002f97 auipc t6,0x2
- 3590: aa4f8f93 addi t6,t6,-1372 # 5030 <_GLOBAL__sub_I__ZSt3cin+0x82>
- if (val == 0)
- 3594: ee0e11e3 bnez t3,3476 <_vprintf_core.constprop.0.isra.0+0x45c>
- buf[i++] = '0';
- 3598: 03000693 li a3,48
- 359c: 00d10823 sb a3,16(sp)
- return i;
- 35a0: 4f05 li t5,1
- if (precision >= 0)
- 35a2: f00bd1e3 bgez s7,34a4 <_vprintf_core.constprop.0.isra.0+0x48a>
- for (int i = digit_len - 1; i >= 0; i--)
- 35a6: ffff0c1b addiw s8,t5,-1
- if (spec == 'p' || (flag_hash && val != 0 && (spec == 'x' || spec == 'X')))
- 35aa: 07000893 li a7,112
- if (!flag_left && !flag_zero)
- 35ae: 016a6d33 or s10,s4,s6
- int prec_zeros = (precision > digit_len) ? precision - digit_len : 0;
- 35b2: 4b81 li s7,0
- for (int i = digit_len - 1; i >= 0; i--)
- 35b4: 8662 mv a2,s8
- if (spec == 'p' || (flag_hash && val != 0 && (spec == 'x' || spec == 'X')))
- 35b6: 0d1c9f63 bne s9,a7,3694 <_vprintf_core.constprop.0.isra.0+0x67a>
- prefix_str = (spec == 'X') ? "0X" : "0x";
- 35ba: 00002c97 auipc s9,0x2
- 35be: a8ec8c93 addi s9,s9,-1394 # 5048 <_GLOBAL__sub_I__ZSt3cin+0x9a>
- prefix_len += 2;
- 35c2: 2589 addiw a1,a1,2
- int padding = (width > prefix_len + prec_zeros + digit_len) ? width - (prefix_len + prec_zeros + digit_len) : 0;
- 35c4: 017585bb addw a1,a1,s7
- 35c8: 01e585bb addw a1,a1,t5
- 35cc: f085c2e3 blt a1,s0,34d0 <_vprintf_core.constprop.0.isra.0+0x4b6>
- if (!flag_left && !flag_zero)
- 35d0: 080d0f63 beqz s10,366e <_vprintf_core.constprop.0.isra.0+0x654>
- if (sign_char)
- 35d4: 6782 ld a5,0(sp)
- int padding = (width > prefix_len + prec_zeros + digit_len) ? width - (prefix_len + prec_zeros + digit_len) : 0;
- 35d6: 4401 li s0,0
- if (sign_char)
- 35d8: f00782e3 beqz a5,34dc <_vprintf_core.constprop.0.isra.0+0x4c2>
- _out_char(ctx, sign_char);
- 35dc: 6582 ld a1,0(sp)
- 35de: 8526 mv a0,s1
- 35e0: bc7fd0ef jal 11a6 <_out_char>
- 35e4: bde5 j 34dc <_vprintf_core.constprop.0.isra.0+0x4c2>
- _out_char(ctx, ' ');
- 35e6: 02000593 li a1,32
- 35ea: 8526 mv a0,s1
- for (int i = 0; i < padding; i++)
- 35ec: 2d05 addiw s10,s10,1
- _out_char(ctx, ' ');
- 35ee: bb9fd0ef jal 11a6 <_out_char>
- for (int i = 0; i < padding; i++)
- 35f2: efa402e3 beq s0,s10,34d6 <_vprintf_core.constprop.0.isra.0+0x4bc>
- _out_char(ctx, ' ');
- 35f6: 02000593 li a1,32
- 35fa: 8526 mv a0,s1
- for (int i = 0; i < padding; i++)
- 35fc: 2d05 addiw s10,s10,1
- _out_char(ctx, ' ');
- 35fe: ba9fd0ef jal 11a6 <_out_char>
- for (int i = 0; i < padding; i++)
- 3602: ffa412e3 bne s0,s10,35e6 <_vprintf_core.constprop.0.isra.0+0x5cc>
- 3606: bdc1 j 34d6 <_vprintf_core.constprop.0.isra.0+0x4bc>
- for (int i = 0; i < total_zeros; i++)
- 3608: ee0b9ee3 bnez s7,3504 <_vprintf_core.constprop.0.isra.0+0x4ea>
- for (int i = digit_len - 1; i >= 0; i--)
- 360c: 577d li a4,-1
- 360e: f0ec17e3 bne s8,a4,351c <_vprintf_core.constprop.0.isra.0+0x502>
- for (int i = 0; i < padding; i++)
- 3612: d405 beqz s0,353a <_vprintf_core.constprop.0.isra.0+0x520>
- 3614: 4a01 li s4,0
- _out_char(ctx, ' ');
- 3616: 02000593 li a1,32
- 361a: 8526 mv a0,s1
- for (int i = 0; i < padding; i++)
- 361c: 2a05 addiw s4,s4,1
- _out_char(ctx, ' ');
- 361e: b89fd0ef jal 11a6 <_out_char>
- for (int i = 0; i < padding; i++)
- 3622: fe8a1ae3 bne s4,s0,3616 <_vprintf_core.constprop.0.isra.0+0x5fc>
- char spec = *p++;
- 3626: 6c22 ld s8,8(sp)
- 3628: bc05 j 3058 <_vprintf_core.constprop.0.isra.0+0x3e>
- val = (uint64)va_arg(ap, void *);
- 362a: 008c0793 addi a5,s8,8
- 362e: e43e sd a5,8(sp)
- else if (len_mod == 1)
- 3630: 180e9163 bnez t4,37b2 <_vprintf_core.constprop.0.isra.0+0x798>
- val = is_signed ? (uint64)((int64)va_arg(ap, int)) : (uint64)va_arg(ap, uint32);
- 3634: 000c6e03 lwu t3,0(s8)
- val = is_signed ? (uint64)va_arg(ap, int64) : va_arg(ap, uint64);
- 3638: 4581 li a1,0
- 363a: 05800c93 li s9,88
- 363e: e002 sd zero,0(sp)
- 3640: 4341 li t1,16
- const char *digits = uppercase ? "0123456789ABCDEF" : "0123456789abcdef";
- 3642: 00002f97 auipc t6,0x2
- 3646: 9d6f8f93 addi t6,t6,-1578 # 5018 <_GLOBAL__sub_I__ZSt3cin+0x6a>
- 364a: b525 j 3472 <_vprintf_core.constprop.0.isra.0+0x458>
- int padding = (width > len) ? width - len : 0;
- 364c: ca8058e3 blez s0,32fc <_vprintf_core.constprop.0.isra.0+0x2e2>
- if (!flag_left)
- 3650: ee0a1de3 bnez s4,354a <_vprintf_core.constprop.0.isra.0+0x530>
- int len = 0;
- 3654: 4b81 li s7,0
- for (int i = 0; i < padding; i++)
- 3656: 4d01 li s10,0
- _out_char(ctx, ' ');
- 3658: 02000593 li a1,32
- 365c: 8526 mv a0,s1
- for (int i = 0; i < padding; i++)
- 365e: 2d05 addiw s10,s10,1
- _out_char(ctx, ' ');
- 3660: b47fd0ef jal 11a6 <_out_char>
- for (int i = 0; i < padding; i++)
- 3664: fe8d1ae3 bne s10,s0,3658 <_vprintf_core.constprop.0.isra.0+0x63e>
- for (int i = 0; i < len; i++)
- 3668: c60b9be3 bnez s7,32de <_vprintf_core.constprop.0.isra.0+0x2c4>
- 366c: b941 j 32fc <_vprintf_core.constprop.0.isra.0+0x2e2>
- if (sign_char)
- 366e: 6782 ld a5,0(sp)
- 3670: 4401 li s0,0
- 3672: f7ad bnez a5,35dc <_vprintf_core.constprop.0.isra.0+0x5c2>
- if (prefix_str)
- 3674: e60c96e3 bnez s9,34e0 <_vprintf_core.constprop.0.isra.0+0x4c6>
- for (int i = 0; i < total_zeros; i++)
- 3678: e80b96e3 bnez s7,3504 <_vprintf_core.constprop.0.isra.0+0x4ea>
- 367c: bd69 j 3516 <_vprintf_core.constprop.0.isra.0+0x4fc>
- int prec_zeros = (precision > digit_len) ? precision - digit_len : 0;
- 367e: 41eb8bbb subw s7,s7,t5
- 3682: 8d52 mv s10,s4
- 3684: 4b01 li s6,0
- for (int i = digit_len - 1; i >= 0; i--)
- 3686: ffff0c1b addiw s8,t5,-1
- if (spec == 'p' || (flag_hash && val != 0 && (spec == 'x' || spec == 'X')))
- 368a: 07000893 li a7,112
- for (int i = digit_len - 1; i >= 0; i--)
- 368e: 8662 mv a2,s8
- if (spec == 'p' || (flag_hash && val != 0 && (spec == 'x' || spec == 'X')))
- 3690: f31c85e3 beq s9,a7,35ba <_vprintf_core.constprop.0.isra.0+0x5a0>
- 3694: cd09 beqz a0,36ae <_vprintf_core.constprop.0.isra.0+0x694>
- 3696: 000e0c63 beqz t3,36ae <_vprintf_core.constprop.0.isra.0+0x694>
- 369a: 07800513 li a0,120
- for (int i = digit_len - 1; i >= 0; i--)
- 369e: 00060c1b sext.w s8,a2
- if (spec == 'p' || (flag_hash && val != 0 && (spec == 'x' || spec == 'X')))
- 36a2: f0ac8ce3 beq s9,a0,35ba <_vprintf_core.constprop.0.isra.0+0x5a0>
- 36a6: 05800613 li a2,88
- 36aa: 12cc8463 beq s9,a2,37d2 <_vprintf_core.constprop.0.isra.0+0x7b8>
- int padding = (width > prefix_len + prec_zeros + digit_len) ? width - (prefix_len + prec_zeros + digit_len) : 0;
- 36ae: 00bb85bb addw a1,s7,a1
- 36b2: 01e585bb addw a1,a1,t5
- char *prefix_str = NULL;
- 36b6: 4c81 li s9,0
- 36b8: bd11 j 34cc <_vprintf_core.constprop.0.isra.0+0x4b2>
- if (spec == 'p' || (flag_hash && val != 0 && (spec == 'x' || spec == 'X')))
- 36ba: 07000693 li a3,112
- 36be: 8d52 mv s10,s4
- 36c0: 4b01 li s6,0
- 36c2: 08dc8d63 beq s9,a3,375c <_vprintf_core.constprop.0.isra.0+0x742>
- 36c6: 5c7d li s8,-1
- char *prefix_str = NULL;
- 36c8: 4c81 li s9,0
- 36ca: b509 j 34cc <_vprintf_core.constprop.0.isra.0+0x4b2>
- sign_char = '-';
- 36cc: 02d00793 li a5,45
- val = (uint64)(-sval);
- 36d0: 40d00e33 neg t3,a3
- 36d4: 4585 li a1,1
- 36d6: 4329 li t1,10
- const char *digits = uppercase ? "0123456789ABCDEF" : "0123456789abcdef";
- 36d8: 00002f97 auipc t6,0x2
- 36dc: 958f8f93 addi t6,t6,-1704 # 5030 <_GLOBAL__sub_I__ZSt3cin+0x82>
- sign_char = '-';
- 36e0: e03e sd a5,0(sp)
- 36e2: bb51 j 3476 <_vprintf_core.constprop.0.isra.0+0x45c>
- s = "(null)";
- 36e4: 00002c97 auipc s9,0x2
- 36e8: 974c8c93 addi s9,s9,-1676 # 5058 <_GLOBAL__sub_I__ZSt3cin+0xaa>
- 36ec: bed1 j 32c0 <_vprintf_core.constprop.0.isra.0+0x2a6>
- val = is_signed ? (uint64)va_arg(ap, int64) : va_arg(ap, uint64);
- 36ee: 000c3683 ld a3,0(s8)
- 36f2: 008c0713 addi a4,s8,8
- 36f6: e43a sd a4,8(sp)
- 36f8: 8dbe mv s11,a5
- 36fa: 8e36 mv t3,a3
- if (is_signed)
- 36fc: bdad j 3576 <_vprintf_core.constprop.0.isra.0+0x55c>
- int is_signed = (spec == 'd' || spec == 'i');
- 36fe: 06900693 li a3,105
- 3702: fedc86e3 beq s9,a3,36ee <_vprintf_core.constprop.0.isra.0+0x6d4>
- val = (uint64)va_arg(ap, void *);
- 3706: 008c0713 addi a4,s8,8
- int base = (spec == 'x' || spec == 'X' || spec == 'p') ? 16 : 10;
- 370a: 07800693 li a3,120
- val = (uint64)va_arg(ap, void *);
- 370e: e43a sd a4,8(sp)
- int base = (spec == 'x' || spec == 'X' || spec == 'p') ? 16 : 10;
- 3710: 06dc9063 bne s9,a3,3770 <_vprintf_core.constprop.0.isra.0+0x756>
- val = is_signed ? (uint64)va_arg(ap, int64) : va_arg(ap, uint64);
- 3714: 000c3e03 ld t3,0(s8)
- 3718: 8dbe mv s11,a5
- 371a: 4581 li a1,0
- 371c: e002 sd zero,0(sp)
- int base = (spec == 'x' || spec == 'X' || spec == 'p') ? 16 : 10;
- 371e: 4341 li t1,16
- const char *digits = uppercase ? "0123456789ABCDEF" : "0123456789abcdef";
- 3720: 00002f97 auipc t6,0x2
- 3724: 910f8f93 addi t6,t6,-1776 # 5030 <_GLOBAL__sub_I__ZSt3cin+0x82>
- 3728: b3a9 j 3472 <_vprintf_core.constprop.0.isra.0+0x458>
- for (int i = 0; i < padding; i++)
- 372a: c809 beqz s0,373c <_vprintf_core.constprop.0.isra.0+0x722>
- _out_char(ctx, ' ');
- 372c: 02000593 li a1,32
- 3730: 8526 mv a0,s1
- for (int i = 0; i < padding; i++)
- 3732: 2a05 addiw s4,s4,1
- _out_char(ctx, ' ');
- 3734: a73fd0ef jal 11a6 <_out_char>
- for (int i = 0; i < padding; i++)
- 3738: ff441ae3 bne s0,s4,372c <_vprintf_core.constprop.0.isra.0+0x712>
- _out_char(ctx, c);
- 373c: 85e6 mv a1,s9
- 373e: 8526 mv a0,s1
- 3740: a67fd0ef jal 11a6 <_out_char>
- const char *s = va_arg(ap, char *);
- 3744: 0c21 addi s8,s8,8
- 3746: ba09 j 3058 <_vprintf_core.constprop.0.isra.0+0x3e>
- val = is_signed ? (uint64)va_arg(ap, long) : (uint64)va_arg(ap, unsigned long);
- 3748: 000c3683 ld a3,0(s8)
- 374c: 008c0793 addi a5,s8,8
- 3750: e43e sd a5,8(sp)
- 3752: 8e36 mv t3,a3
- if (is_signed)
- 3754: b50d j 3576 <_vprintf_core.constprop.0.isra.0+0x55c>
- if (spec == 'p' || (flag_hash && val != 0 && (spec == 'x' || spec == 'X')))
- 3756: 8d52 mv s10,s4
- 3758: 4b01 li s6,0
- 375a: b585 j 35ba <_vprintf_core.constprop.0.isra.0+0x5a0>
- digit_len = 0;
- 375c: 4f01 li t5,0
- if (spec == 'p' || (flag_hash && val != 0 && (spec == 'x' || spec == 'X')))
- 375e: 5c7d li s8,-1
- prefix_str = (spec == 'X') ? "0X" : "0x";
- 3760: 00002c97 auipc s9,0x2
- 3764: 8e8c8c93 addi s9,s9,-1816 # 5048 <_GLOBAL__sub_I__ZSt3cin+0x9a>
- 3768: bda9 j 35c2 <_vprintf_core.constprop.0.isra.0+0x5a8>
- if (spec == 'p' || (flag_hash && val != 0 && (spec == 'x' || spec == 'X')))
- 376a: 8d52 mv s10,s4
- 376c: 4b01 li s6,0
- 376e: b735 j 369a <_vprintf_core.constprop.0.isra.0+0x680>
- int base = (spec == 'x' || spec == 'X' || spec == 'p') ? 16 : 10;
- 3770: 07000693 li a3,112
- 3774: 04dc8263 beq s9,a3,37b8 <_vprintf_core.constprop.0.isra.0+0x79e>
- val = is_signed ? (uint64)va_arg(ap, int64) : va_arg(ap, uint64);
- 3778: 000c3e03 ld t3,0(s8)
- 377c: 8dbe mv s11,a5
- 377e: 4581 li a1,0
- 3780: e002 sd zero,0(sp)
- int base = (spec == 'x' || spec == 'X' || spec == 'p') ? 16 : 10;
- 3782: 4329 li t1,10
- const char *digits = uppercase ? "0123456789ABCDEF" : "0123456789abcdef";
- 3784: 00002f97 auipc t6,0x2
- 3788: 8acf8f93 addi t6,t6,-1876 # 5030 <_GLOBAL__sub_I__ZSt3cin+0x82>
- 378c: b1dd j 3472 <_vprintf_core.constprop.0.isra.0+0x458>
- val = is_signed ? (uint64)va_arg(ap, long) : (uint64)va_arg(ap, unsigned long);
- 378e: 000c3e03 ld t3,0(s8)
- 3792: 4581 li a1,0
- 3794: e002 sd zero,0(sp)
- int base = (spec == 'x' || spec == 'X' || spec == 'p') ? 16 : 10;
- 3796: 4341 li t1,16
- const char *digits = uppercase ? "0123456789ABCDEF" : "0123456789abcdef";
- 3798: 00002f97 auipc t6,0x2
- 379c: 898f8f93 addi t6,t6,-1896 # 5030 <_GLOBAL__sub_I__ZSt3cin+0x82>
- 37a0: b9c9 j 3472 <_vprintf_core.constprop.0.isra.0+0x458>
- char spec = *p++;
- 37a2: 8dbe mv s11,a5
- 37a4: b911 j 33b8 <_vprintf_core.constprop.0.isra.0+0x39e>
- for (int i = digit_len - 1; i >= 0; i--)
- 37a6: 577d li a4,-1
- 37a8: 4401 li s0,0
- 37aa: d6ec19e3 bne s8,a4,351c <_vprintf_core.constprop.0.isra.0+0x502>
- char spec = *p++;
- 37ae: 6c22 ld s8,8(sp)
- 37b0: b065 j 3058 <_vprintf_core.constprop.0.isra.0+0x3e>
- val = is_signed ? (uint64)va_arg(ap, long) : (uint64)va_arg(ap, unsigned long);
- 37b2: 000c3e03 ld t3,0(s8)
- const char *digits = uppercase ? "0123456789ABCDEF" : "0123456789abcdef";
- 37b6: b549 j 3638 <_vprintf_core.constprop.0.isra.0+0x61e>
- int base = (spec == 'x' || spec == 'X' || spec == 'p') ? 16 : 10;
- 37b8: 8dbe mv s11,a5
- val = (uint64)va_arg(ap, void *);
- 37ba: 000c3e03 ld t3,0(s8)
- 37be: 4581 li a1,0
- 37c0: 07000c93 li s9,112
- 37c4: e002 sd zero,0(sp)
- 37c6: 4341 li t1,16
- const char *digits = uppercase ? "0123456789ABCDEF" : "0123456789abcdef";
- 37c8: 00002f97 auipc t6,0x2
- 37cc: 868f8f93 addi t6,t6,-1944 # 5030 <_GLOBAL__sub_I__ZSt3cin+0x82>
- 37d0: b14d j 3472 <_vprintf_core.constprop.0.isra.0+0x458>
- prefix_str = (spec == 'X') ? "0X" : "0x";
- 37d2: 00002c97 auipc s9,0x2
- 37d6: 87ec8c93 addi s9,s9,-1922 # 5050 <_GLOBAL__sub_I__ZSt3cin+0xa2>
- 37da: b3e5 j 35c2 <_vprintf_core.constprop.0.isra.0+0x5a8>
- val = (uint64)va_arg(ap, void *);
- 37dc: 008c0713 addi a4,s8,8
- val = is_signed ? (uint64)va_arg(ap, int64) : va_arg(ap, uint64);
- 37e0: 000c3e03 ld t3,0(s8)
- val = (uint64)va_arg(ap, void *);
- 37e4: e43a sd a4,8(sp)
- val = is_signed ? (uint64)va_arg(ap, int64) : va_arg(ap, uint64);
- 37e6: 8dbe mv s11,a5
- 37e8: bd81 j 3638 <_vprintf_core.constprop.0.isra.0+0x61e>
- 37ea: 8d52 mv s10,s4
- 37ec: 4b01 li s6,0
- 37ee: 4b81 li s7,0
- 37f0: bd59 j 3686 <_vprintf_core.constprop.0.isra.0+0x66c>
- int base = (spec == 'x' || spec == 'X' || spec == 'p') ? 16 : 10;
- 37f2: 07000693 li a3,112
- 37f6: fcdc82e3 beq s9,a3,37ba <_vprintf_core.constprop.0.isra.0+0x7a0>
- else if (len_mod == 1)
- 37fa: 01ce8c63 beq t4,t3,3812 <_vprintf_core.constprop.0.isra.0+0x7f8>
- val = is_signed ? (uint64)((int64)va_arg(ap, int)) : (uint64)va_arg(ap, uint32);
- 37fe: 000c6e03 lwu t3,0(s8)
- const char *digits = uppercase ? "0123456789ABCDEF" : "0123456789abcdef";
- 3802: 4581 li a1,0
- 3804: e002 sd zero,0(sp)
- 3806: 4329 li t1,10
- 3808: 00002f97 auipc t6,0x2
- 380c: 828f8f93 addi t6,t6,-2008 # 5030 <_GLOBAL__sub_I__ZSt3cin+0x82>
- 3810: b18d j 3472 <_vprintf_core.constprop.0.isra.0+0x458>
- val = is_signed ? (uint64)va_arg(ap, long) : (uint64)va_arg(ap, unsigned long);
- 3812: 000c3e03 ld t3,0(s8)
- if (is_signed)
- 3816: b7f5 j 3802 <_vprintf_core.constprop.0.isra.0+0x7e8>
-
-0000000000003818 <vsnprintf>:
-{
- 3818: 7139 addi sp,sp,-64
- 381a: f822 sd s0,48(sp)
- 381c: f426 sd s1,40(sp)
- 381e: 842e mv s0,a1
- 3820: 84aa mv s1,a0
- 3822: 85b2 mv a1,a2
- _vprintf_core(&ctx, format, ap);
- 3824: 850a mv a0,sp
- 3826: 8636 mv a2,a3
-{
- 3828: fc06 sd ra,56(sp)
- ctx.buf = str;
- 382a: e026 sd s1,0(sp)
- ctx.limit = size;
- 382c: e422 sd s0,8(sp)
- ctx.written = 0;
- 382e: e802 sd zero,16(sp)
- ctx.stream = NULL;
- 3830: ec02 sd zero,24(sp)
- _vprintf_core(&ctx, format, ap);
- 3832: fe8ff0ef jal 301a <_vprintf_core.constprop.0.isra.0>
- if (ctx.written < size)
- 3836: 6542 ld a0,16(sp)
- if (size > 0)
- 3838: c411 beqz s0,3844 <vsnprintf+0x2c>
- if (ctx.written < size)
- 383a: 00857b63 bgeu a0,s0,3850 <vsnprintf+0x38>
- str[ctx.written] = '\0';
- 383e: 94aa add s1,s1,a0
- 3840: 00048023 sb zero,0(s1)
-}
- 3844: 70e2 ld ra,56(sp)
- 3846: 7442 ld s0,48(sp)
- 3848: 74a2 ld s1,40(sp)
- 384a: 2501 sext.w a0,a0
- 384c: 6121 addi sp,sp,64
- 384e: 8082 ret
- str[size - 1] = '\0';
- 3850: 94a2 add s1,s1,s0
- 3852: fe048fa3 sb zero,-1(s1)
-}
- 3856: 70e2 ld ra,56(sp)
- 3858: 7442 ld s0,48(sp)
- 385a: 74a2 ld s1,40(sp)
- 385c: 2501 sext.w a0,a0
- 385e: 6121 addi sp,sp,64
- 3860: 8082 ret
-
-0000000000003862 <snprintf>:
-{
- 3862: 7119 addi sp,sp,-128
- 3864: e0a2 sd s0,64(sp)
- 3866: fc26 sd s1,56(sp)
- 3868: 842e mv s0,a1
- 386a: 84aa mv s1,a0
- 386c: 85b2 mv a1,a2
- _vprintf_core(&ctx, format, ap);
- 386e: 0808 addi a0,sp,16
- va_start(ap, format);
- 3870: 08b0 addi a2,sp,88
-{
- 3872: e486 sd ra,72(sp)
- 3874: ecb6 sd a3,88(sp)
- 3876: f0ba sd a4,96(sp)
- 3878: f4be sd a5,104(sp)
- 387a: f8c2 sd a6,112(sp)
- 387c: fcc6 sd a7,120(sp)
- va_start(ap, format);
- 387e: e432 sd a2,8(sp)
- ctx.buf = str;
- 3880: e826 sd s1,16(sp)
- ctx.limit = size;
- 3882: ec22 sd s0,24(sp)
- ctx.written = 0;
- 3884: f002 sd zero,32(sp)
- ctx.stream = NULL;
- 3886: f402 sd zero,40(sp)
- _vprintf_core(&ctx, format, ap);
- 3888: f92ff0ef jal 301a <_vprintf_core.constprop.0.isra.0>
- if (ctx.written < size)
- 388c: 7502 ld a0,32(sp)
- if (size > 0)
- 388e: c411 beqz s0,389a <snprintf+0x38>
- if (ctx.written < size)
- 3890: 00857b63 bgeu a0,s0,38a6 <snprintf+0x44>
- str[ctx.written] = '\0';
- 3894: 94aa add s1,s1,a0
- 3896: 00048023 sb zero,0(s1)
-}
- 389a: 60a6 ld ra,72(sp)
- 389c: 6406 ld s0,64(sp)
- 389e: 74e2 ld s1,56(sp)
- 38a0: 2501 sext.w a0,a0
- 38a2: 6109 addi sp,sp,128
- 38a4: 8082 ret
- str[size - 1] = '\0';
- 38a6: 94a2 add s1,s1,s0
- 38a8: fe048fa3 sb zero,-1(s1)
-}
- 38ac: 60a6 ld ra,72(sp)
- 38ae: 6406 ld s0,64(sp)
- 38b0: 74e2 ld s1,56(sp)
- 38b2: 2501 sext.w a0,a0
- 38b4: 6109 addi sp,sp,128
- 38b6: 8082 ret
-
-00000000000038b8 <printf>:
-{
- 38b8: 7119 addi sp,sp,-128
- va_start(ap, format);
- 38ba: 04810313 addi t1,sp,72
-{
- 38be: e4ae sd a1,72(sp)
- 38c0: e8b2 sd a2,80(sp)
- 38c2: f4be sd a5,104(sp)
- _vprintf_core(&ctx, format, ap);
- 38c4: 85aa mv a1,a0
- ctx.stream = stdout;
- 38c6: 00004797 auipc a5,0x4
- 38ca: d5a7b783 ld a5,-678(a5) # 7620 <stdout>
- _vprintf_core(&ctx, format, ap);
- 38ce: 0808 addi a0,sp,16
- 38d0: 861a mv a2,t1
-{
- 38d2: fc06 sd ra,56(sp)
- 38d4: ecb6 sd a3,88(sp)
- 38d6: f0ba sd a4,96(sp)
- 38d8: f8c2 sd a6,112(sp)
- 38da: fcc6 sd a7,120(sp)
- va_start(ap, format);
- 38dc: e41a sd t1,8(sp)
- ctx.buf = NULL;
- 38de: e802 sd zero,16(sp)
- ctx.limit = 0;
- 38e0: ec02 sd zero,24(sp)
- ctx.written = 0;
- 38e2: f002 sd zero,32(sp)
- ctx.stream = stdout;
- 38e4: f43e sd a5,40(sp)
- _vprintf_core(&ctx, format, ap);
- 38e6: f34ff0ef jal 301a <_vprintf_core.constprop.0.isra.0>
-}
- 38ea: 70e2 ld ra,56(sp)
- 38ec: 5502 lw a0,32(sp)
- 38ee: 6109 addi sp,sp,128
- 38f0: 8082 ret
-
-00000000000038f2 <sscanf>:
-{
- 38f2: 7159 addi sp,sp,-112
- va_start(ap, format);
- 38f4: 04010e13 addi t3,sp,64
-{
- 38f8: 8eaa mv t4,a0
- ctx.fd = -1;
- 38fa: 537d li t1,-1
-{
- 38fc: e0b2 sd a2,64(sp)
- int ret = _vscanf_core(&ctx, format, ap);
- 38fe: 0808 addi a0,sp,16
- 3900: 8672 mv a2,t3
-{
- 3902: fc06 sd ra,56(sp)
- 3904: e4b6 sd a3,72(sp)
- 3906: e8ba sd a4,80(sp)
- 3908: ecbe sd a5,88(sp)
- 390a: f0c2 sd a6,96(sp)
- 390c: f4c6 sd a7,104(sp)
- va_start(ap, format);
- 390e: e472 sd t3,8(sp)
- ctx.buf = str;
- 3910: e876 sd t4,16(sp)
- ctx.fd = -1;
- 3912: cc1a sw t1,24(sp)
- ctx.pos = 0;
- 3914: f002 sd zero,32(sp)
- ctx.ungotten = -1;
- 3916: d41a sw t1,40(sp)
- int ret = _vscanf_core(&ctx, format, ap);
- 3918: 81efd0ef jal 936 <_vscanf_core.constprop.0>
-}
- 391c: 70e2 ld ra,56(sp)
- 391e: 6165 addi sp,sp,112
- 3920: 8082 ret
-
-0000000000003922 <scanf>:
-{
- 3922: 7119 addi sp,sp,-128
- va_start(ap, format);
- 3924: 04810313 addi t1,sp,72
-{
- 3928: e4ae sd a1,72(sp)
- 392a: e8b2 sd a2,80(sp)
- 392c: f4be sd a5,104(sp)
- int ret = _vscanf_core(&ctx, format, ap);
- 392e: 85aa mv a1,a0
- ctx.ungotten = -1;
- 3930: 57fd li a5,-1
- int ret = _vscanf_core(&ctx, format, ap);
- 3932: 0808 addi a0,sp,16
- 3934: 861a mv a2,t1
-{
- 3936: fc06 sd ra,56(sp)
- 3938: ecb6 sd a3,88(sp)
- 393a: f0ba sd a4,96(sp)
- 393c: f8c2 sd a6,112(sp)
- 393e: fcc6 sd a7,120(sp)
- va_start(ap, format);
- 3940: e41a sd t1,8(sp)
- ctx.buf = NULL;
- 3942: e802 sd zero,16(sp)
- ctx.fd = STDIN_FD;
- 3944: cc02 sw zero,24(sp)
- ctx.pos = 0;
- 3946: f002 sd zero,32(sp)
- ctx.ungotten = -1;
- 3948: d43e sw a5,40(sp)
- int ret = _vscanf_core(&ctx, format, ap);
- 394a: fedfc0ef jal 936 <_vscanf_core.constprop.0>
-}
- 394e: 70e2 ld ra,56(sp)
- 3950: 6109 addi sp,sp,128
- 3952: 8082 ret
-
-0000000000003954 <fopen>:
-{
- 3954: 1101 addi sp,sp,-32
- 3956: e426 sd s1,8(sp)
- 3958: 84ae mv s1,a1
- 395a: e04a sd s2,0(sp)
- if (strcmp(mode, "r") == 0)
- 395c: 00001597 auipc a1,0x1
- 3960: 71458593 addi a1,a1,1812 # 5070 <_GLOBAL__sub_I__ZSt3cin+0xc2>
-{
- 3964: 892a mv s2,a0
- if (strcmp(mode, "r") == 0)
- 3966: 8526 mv a0,s1
-{
- 3968: e822 sd s0,16(sp)
- 396a: ec06 sd ra,24(sp)
- if (strcmp(mode, "r") == 0)
- 396c: 298010ef jal 4c04 <strcmp>
- 3970: 842a mv s0,a0
- 3972: c919 beqz a0,3988 <fopen+0x34>
- else if (strcmp(mode, "w") == 0)
- 3974: 00001597 auipc a1,0x1
- 3978: 70458593 addi a1,a1,1796 # 5078 <_GLOBAL__sub_I__ZSt3cin+0xca>
- 397c: 8526 mv a0,s1
- 397e: 286010ef jal 4c04 <strcmp>
- flags = O_WRONLY | O_CREAT | O_TRUNC;
- 3982: 24100413 li s0,577
- else if (strcmp(mode, "w") == 0)
- 3986: ed39 bnez a0,39e4 <fopen+0x90>
- int64 fd = open(filename, flags);
- 3988: 85a2 mv a1,s0
- 398a: 854a mv a0,s2
- 398c: f42fc0ef jal ce <open>
- 3990: 84aa mv s1,a0
- if (fd < 0)
- 3992: 06054c63 bltz a0,3a0a <fopen+0xb6>
- FILE *f = (FILE *)malloc(sizeof(FILE));
- 3996: 42000513 li a0,1056
- 399a: 2f3000ef jal 448c <malloc>
- 399e: 892a mv s2,a0
- if (!f)
- 39a0: c53d beqz a0,3a0e <fopen+0xba>
- memset(f, 0, sizeof(FILE));
- 39a2: 42000613 li a2,1056
- 39a6: 4581 li a1,0
- 39a8: 0ee010ef jal 4a96 <memset>
- if (fd == 1)
- 39ac: 4785 li a5,1
- f->fd = (int)fd;
- 39ae: 00992023 sw s1,0(s2)
- f->flags = flags;
- 39b2: 00892223 sw s0,4(s2)
- if (fd == 1)
- 39b6: 00f48e63 beq s1,a5,39d2 <fopen+0x7e>
- else if (fd == 2)
- 39ba: 4789 li a5,2
- 39bc: 00f48b63 beq s1,a5,39d2 <fopen+0x7e>
- f->buf_mode = 0;
- 39c0: 40092e23 sw zero,1052(s2)
-}
- 39c4: 60e2 ld ra,24(sp)
- 39c6: 6442 ld s0,16(sp)
- 39c8: 64a2 ld s1,8(sp)
- 39ca: 854a mv a0,s2
- 39cc: 6902 ld s2,0(sp)
- 39ce: 6105 addi sp,sp,32
- 39d0: 8082 ret
- 39d2: 60e2 ld ra,24(sp)
- 39d4: 6442 ld s0,16(sp)
- f->buf_mode = 2;
- 39d6: 40992e23 sw s1,1052(s2)
-}
- 39da: 854a mv a0,s2
- 39dc: 64a2 ld s1,8(sp)
- 39de: 6902 ld s2,0(sp)
- 39e0: 6105 addi sp,sp,32
- 39e2: 8082 ret
- else if (strcmp(mode, "a") == 0)
- 39e4: 00001597 auipc a1,0x1
- 39e8: 69c58593 addi a1,a1,1692 # 5080 <_GLOBAL__sub_I__ZSt3cin+0xd2>
- 39ec: 8526 mv a0,s1
- 39ee: 216010ef jal 4c04 <strcmp>
- flags = O_WRONLY | O_CREAT | O_APPEND;
- 39f2: 44100413 li s0,1089
- else if (strcmp(mode, "a") == 0)
- 39f6: d949 beqz a0,3988 <fopen+0x34>
- else if (strcmp(mode, "r+") == 0)
- 39f8: 00001597 auipc a1,0x1
- 39fc: 69058593 addi a1,a1,1680 # 5088 <_GLOBAL__sub_I__ZSt3cin+0xda>
- 3a00: 8526 mv a0,s1
- 3a02: 202010ef jal 4c04 <strcmp>
- flags = O_RDWR;
- 3a06: 4409 li s0,2
- else if (strcmp(mode, "r+") == 0)
- 3a08: d141 beqz a0,3988 <fopen+0x34>
- return NULL;
- 3a0a: 4901 li s2,0
- 3a0c: bf65 j 39c4 <fopen+0x70>
- close(fd);
- 3a0e: 8526 mv a0,s1
- 3a10: ea6fc0ef jal b6 <close>
- return NULL;
- 3a14: 4901 li s2,0
- 3a16: b77d j 39c4 <fopen+0x70>
-
-0000000000003a18 <fclose>:
- if (!stream)
- 3a18: cd29 beqz a0,3a72 <fclose+0x5a>
- if (stream->buf_write_pos > 0)
- 3a1a: 41052603 lw a2,1040(a0)
-{
- 3a1e: 1141 addi sp,sp,-16
- 3a20: e022 sd s0,0(sp)
- 3a22: e406 sd ra,8(sp)
- 3a24: 842a mv s0,a0
- if (stream->buf_write_pos > 0)
- 3a26: 02c04a63 bgtz a2,3a5a <fclose+0x42>
- if (stream != stdin && stream != stdout && stream != stderr)
- 3a2a: 00004797 auipc a5,0x4
- 3a2e: bf678793 addi a5,a5,-1034 # 7620 <stdout>
- 3a32: 6798 ld a4,8(a5)
- 3a34: 00870e63 beq a4,s0,3a50 <fclose+0x38>
- 3a38: 6398 ld a4,0(a5)
- 3a3a: 00870b63 beq a4,s0,3a50 <fclose+0x38>
- 3a3e: 6b9c ld a5,16(a5)
- 3a40: 00878863 beq a5,s0,3a50 <fclose+0x38>
- close(stream->fd);
- 3a44: 4008 lw a0,0(s0)
- 3a46: e70fc0ef jal b6 <close>
- free(stream);
- 3a4a: 8522 mv a0,s0
- 3a4c: 1cb000ef jal 4416 <free>
-}
- 3a50: 60a2 ld ra,8(sp)
- 3a52: 6402 ld s0,0(sp)
- return 0;
- 3a54: 4501 li a0,0
-}
- 3a56: 0141 addi sp,sp,16
- 3a58: 8082 ret
- int64 ret = write(stream->fd, stream->buffer, stream->buf_write_pos);
- 3a5a: 4108 lw a0,0(a0)
- 3a5c: 01040593 addi a1,s0,16
- 3a60: e4efc0ef jal ae <write>
- if (ret < stream->buf_write_pos)
- 3a64: 41042783 lw a5,1040(s0)
- 3a68: 00f54763 blt a0,a5,3a76 <fclose+0x5e>
- stream->buf_write_pos = 0;
- 3a6c: 40042823 sw zero,1040(s0)
- 3a70: bf6d j 3a2a <fclose+0x12>
- return -1;
- 3a72: 557d li a0,-1
-}
- 3a74: 8082 ret
- stream->error = 1;
- 3a76: 4785 li a5,1
- 3a78: c41c sw a5,8(s0)
- stream->buf_write_pos = 0;
- 3a7a: 40042823 sw zero,1040(s0)
- return EOF;
- 3a7e: b775 j 3a2a <fclose+0x12>
-
-0000000000003a80 <fflush>:
- if (!stream)
- 3a80: c121 beqz a0,3ac0 <fflush+0x40>
- if (stream->buf_write_pos > 0)
- 3a82: 41052603 lw a2,1040(a0)
-{
- 3a86: 1141 addi sp,sp,-16
- 3a88: e022 sd s0,0(sp)
- 3a8a: e406 sd ra,8(sp)
- 3a8c: 842a mv s0,a0
- if (stream->buf_write_pos > 0)
- 3a8e: 00c04763 bgtz a2,3a9c <fflush+0x1c>
- return 0;
- 3a92: 4501 li a0,0
-}
- 3a94: 60a2 ld ra,8(sp)
- 3a96: 6402 ld s0,0(sp)
- 3a98: 0141 addi sp,sp,16
- 3a9a: 8082 ret
- int64 ret = write(stream->fd, stream->buffer, stream->buf_write_pos);
- 3a9c: 4108 lw a0,0(a0)
- 3a9e: 01040593 addi a1,s0,16
- 3aa2: e0cfc0ef jal ae <write>
- if (ret < stream->buf_write_pos)
- 3aa6: 41042783 lw a5,1040(s0)
- 3aaa: 00f54563 blt a0,a5,3ab4 <fflush+0x34>
- stream->buf_write_pos = 0;
- 3aae: 40042823 sw zero,1040(s0)
- 3ab2: b7c5 j 3a92 <fflush+0x12>
- stream->error = 1;
- 3ab4: 4785 li a5,1
- 3ab6: c41c sw a5,8(s0)
- stream->buf_write_pos = 0;
- 3ab8: 40042823 sw zero,1040(s0)
- return EOF;
- 3abc: 557d li a0,-1
- 3abe: bfd9 j 3a94 <fflush+0x14>
- 3ac0: 557d li a0,-1
-}
- 3ac2: 8082 ret
-
-0000000000003ac4 <fprintf>:
-{
- 3ac4: 7159 addi sp,sp,-112
- 3ac6: fc06 sd ra,56(sp)
- 3ac8: e0b2 sd a2,64(sp)
- 3aca: e4b6 sd a3,72(sp)
- 3acc: e8ba sd a4,80(sp)
- 3ace: ecbe sd a5,88(sp)
- 3ad0: f0c2 sd a6,96(sp)
- 3ad2: f4c6 sd a7,104(sp)
- if (!stream)
- 3ad4: cd19 beqz a0,3af2 <fprintf+0x2e>
- va_start(ap, format);
- 3ad6: 832a mv t1,a0
- 3ad8: 0090 addi a2,sp,64
- _vprintf_core(&ctx, format, ap);
- 3ada: 0808 addi a0,sp,16
- va_start(ap, format);
- 3adc: e432 sd a2,8(sp)
- ctx.buf = NULL;
- 3ade: e802 sd zero,16(sp)
- ctx.limit = 0;
- 3ae0: ec02 sd zero,24(sp)
- ctx.written = 0;
- 3ae2: f002 sd zero,32(sp)
- ctx.stream = stream;
- 3ae4: f41a sd t1,40(sp)
- _vprintf_core(&ctx, format, ap);
- 3ae6: d34ff0ef jal 301a <_vprintf_core.constprop.0.isra.0>
- return (int)ctx.written;
- 3aea: 5502 lw a0,32(sp)
-}
- 3aec: 70e2 ld ra,56(sp)
- 3aee: 6165 addi sp,sp,112
- 3af0: 8082 ret
- return -1;
- 3af2: 557d li a0,-1
- 3af4: bfe5 j 3aec <fprintf+0x28>
-
-0000000000003af6 <fscanf>:
-{
- 3af6: 7159 addi sp,sp,-112
- 3af8: fc06 sd ra,56(sp)
- 3afa: e0b2 sd a2,64(sp)
- 3afc: e4b6 sd a3,72(sp)
- 3afe: e8ba sd a4,80(sp)
- 3b00: ecbe sd a5,88(sp)
- 3b02: f0c2 sd a6,96(sp)
- 3b04: f4c6 sd a7,104(sp)
- if (!stream)
- 3b06: cd19 beqz a0,3b24 <fscanf+0x2e>
- ctx.fd = stream->fd;
- 3b08: 411c lw a5,0(a0)
- va_start(ap, format);
- 3b0a: 0090 addi a2,sp,64
- int ret = _vscanf_core(&ctx, format, ap);
- 3b0c: 0808 addi a0,sp,16
- ctx.fd = stream->fd;
- 3b0e: cc3e sw a5,24(sp)
- ctx.ungotten = -1;
- 3b10: 57fd li a5,-1
- va_start(ap, format);
- 3b12: e432 sd a2,8(sp)
- ctx.buf = NULL;
- 3b14: e802 sd zero,16(sp)
- ctx.pos = 0;
- 3b16: f002 sd zero,32(sp)
- ctx.ungotten = -1;
- 3b18: d43e sw a5,40(sp)
- int ret = _vscanf_core(&ctx, format, ap);
- 3b1a: e1dfc0ef jal 936 <_vscanf_core.constprop.0>
-}
- 3b1e: 70e2 ld ra,56(sp)
- 3b20: 6165 addi sp,sp,112
- 3b22: 8082 ret
- return -1;
- 3b24: 557d li a0,-1
- 3b26: bfe5 j 3b1e <fscanf+0x28>
-
-0000000000003b28 <fputc>:
- if (!stream)
- 3b28: c1e1 beqz a1,3be8 <fputc+0xc0>
-{
- 3b2a: 7179 addi sp,sp,-48
- 3b2c: e84a sd s2,16(sp)
- if (stream->buf_mode == 2)
- 3b2e: 41c5a903 lw s2,1052(a1)
-{
- 3b32: f022 sd s0,32(sp)
- 3b34: ec26 sd s1,24(sp)
- 3b36: f406 sd ra,40(sp)
- if (stream->buf_mode == 2)
- 3b38: 4789 li a5,2
- 3b3a: 842e mv s0,a1
- 3b3c: 84aa mv s1,a0
- char ch = (char)c;
- 3b3e: 0ff57713 zext.b a4,a0
- if (stream->buf_mode == 2)
- 3b42: 02f90963 beq s2,a5,3b74 <fputc+0x4c>
- stream->buffer[stream->buf_write_pos++] = (char)c;
- 3b46: 4105a783 lw a5,1040(a1)
- if (stream->buf_write_pos >= BUFSIZ)
- 3b4a: 3ff00693 li a3,1023
- stream->buffer[stream->buf_write_pos++] = (char)c;
- 3b4e: 0017861b addiw a2,a5,1
- 3b52: 40c5a823 sw a2,1040(a1)
- 3b56: 97ae add a5,a5,a1
- 3b58: 00e78823 sb a4,16(a5)
- if (stream->buf_write_pos >= BUFSIZ)
- 3b5c: 06c6c463 blt a3,a2,3bc4 <fputc+0x9c>
- else if (stream->buf_mode == 1 && c == '\n')
- 3b60: 4785 li a5,1
- 3b62: 02f90e63 beq s2,a5,3b9e <fputc+0x76>
- return c;
- 3b66: 8526 mv a0,s1
-}
- 3b68: 70a2 ld ra,40(sp)
- 3b6a: 7402 ld s0,32(sp)
- 3b6c: 64e2 ld s1,24(sp)
- 3b6e: 6942 ld s2,16(sp)
- 3b70: 6145 addi sp,sp,48
- 3b72: 8082 ret
- if (write(stream->fd, &ch, 1) != 1)
- 3b74: 4188 lw a0,0(a1)
- 3b76: 4605 li a2,1
- 3b78: 00f10593 addi a1,sp,15
- char ch = (char)c;
- 3b7c: 00e107a3 sb a4,15(sp)
- if (write(stream->fd, &ch, 1) != 1)
- 3b80: d2efc0ef jal ae <write>
- 3b84: 872a mv a4,a0
- 3b86: 4785 li a5,1
- return c;
- 3b88: 8526 mv a0,s1
- if (write(stream->fd, &ch, 1) != 1)
- 3b8a: fcf70fe3 beq a4,a5,3b68 <fputc+0x40>
-}
- 3b8e: 70a2 ld ra,40(sp)
- stream->error = 1;
- 3b90: c41c sw a5,8(s0)
-}
- 3b92: 7402 ld s0,32(sp)
- 3b94: 64e2 ld s1,24(sp)
- 3b96: 6942 ld s2,16(sp)
- return EOF;
- 3b98: 557d li a0,-1
-}
- 3b9a: 6145 addi sp,sp,48
- 3b9c: 8082 ret
- else if (stream->buf_mode == 1 && c == '\n')
- 3b9e: 47a9 li a5,10
- 3ba0: fcf513e3 bne a0,a5,3b66 <fputc+0x3e>
- if (stream->buf_write_pos > 0)
- 3ba4: fcc051e3 blez a2,3b66 <fputc+0x3e>
- int64 ret = write(stream->fd, stream->buffer, stream->buf_write_pos);
- 3ba8: 4188 lw a0,0(a1)
- 3baa: 05c1 addi a1,a1,16
- 3bac: d02fc0ef jal ae <write>
- if (ret < stream->buf_write_pos)
- 3bb0: 41042783 lw a5,1040(s0)
- 3bb4: 02f55063 bge a0,a5,3bd4 <fputc+0xac>
- stream->error = 1;
- 3bb8: 01242423 sw s2,8(s0)
- stream->buf_write_pos = 0;
- 3bbc: 40042823 sw zero,1040(s0)
- return c;
- 3bc0: 8526 mv a0,s1
- 3bc2: b75d j 3b68 <fputc+0x40>
- int64 ret = write(stream->fd, stream->buffer, stream->buf_write_pos);
- 3bc4: 4188 lw a0,0(a1)
- 3bc6: 05c1 addi a1,a1,16
- 3bc8: ce6fc0ef jal ae <write>
- if (ret < stream->buf_write_pos)
- 3bcc: 41042783 lw a5,1040(s0)
- 3bd0: 00f54663 blt a0,a5,3bdc <fputc+0xb4>
- stream->buf_write_pos = 0;
- 3bd4: 40042823 sw zero,1040(s0)
- return c;
- 3bd8: 8526 mv a0,s1
- 3bda: b779 j 3b68 <fputc+0x40>
- stream->error = 1;
- 3bdc: 4785 li a5,1
- 3bde: c41c sw a5,8(s0)
- stream->buf_write_pos = 0;
- 3be0: 40042823 sw zero,1040(s0)
- return c;
- 3be4: 8526 mv a0,s1
- 3be6: b749 j 3b68 <fputc+0x40>
- return EOF;
- 3be8: 557d li a0,-1
-}
- 3bea: 8082 ret
-
-0000000000003bec <fputs>:
- if (!stream)
- 3bec: c1ed beqz a1,3cce <fputs+0xe2>
-{
- 3bee: 711d addi sp,sp,-96
- 3bf0: e4a6 sd s1,72(sp)
- 3bf2: ec86 sd ra,88(sp)
- while (*s)
- 3bf4: 00054703 lbu a4,0(a0)
- 3bf8: 84aa mv s1,a0
- 3bfa: cf25 beqz a4,3c72 <fputs+0x86>
- 3bfc: e8a2 sd s0,80(sp)
- 3bfe: e0ca sd s2,64(sp)
- 3c00: fc4e sd s3,56(sp)
- 3c02: f852 sd s4,48(sp)
- 3c04: f456 sd s5,40(sp)
- 3c06: f05a sd s6,32(sp)
- 3c08: ec5e sd s7,24(sp)
- 3c0a: 842e mv s0,a1
- if (stream->buf_mode == 2)
- 3c0c: 4909 li s2,2
- if (stream->buf_write_pos >= BUFSIZ)
- 3c0e: 3ff00b13 li s6,1023
- else if (stream->buf_mode == 1 && c == '\n')
- 3c12: 4985 li s3,1
- 3c14: 4a29 li s4,10
- int64 ret = write(stream->fd, stream->buffer, stream->buf_write_pos);
- 3c16: 01058a93 addi s5,a1,16
- if (write(stream->fd, &ch, 1) != 1)
- 3c1a: 00f10b93 addi s7,sp,15
- 3c1e: a031 j 3c2a <fputs+0x3e>
- else if (stream->buf_mode == 1 && c == '\n')
- 3c20: 09368563 beq a3,s3,3caa <fputs+0xbe>
- while (*s)
- 3c24: 0004c703 lbu a4,0(s1)
- 3c28: cf15 beqz a4,3c64 <fputs+0x78>
- if (stream->buf_mode == 2)
- 3c2a: 41c42683 lw a3,1052(s0)
- if (fputc(*s++, stream) == EOF)
- 3c2e: 0485 addi s1,s1,1
- if (stream->buf_mode == 2)
- 3c30: 05268663 beq a3,s2,3c7c <fputs+0x90>
- stream->buffer[stream->buf_write_pos++] = (char)c;
- 3c34: 41042783 lw a5,1040(s0)
- 3c38: 0017861b addiw a2,a5,1
- 3c3c: 40c42823 sw a2,1040(s0)
- 3c40: 97a2 add a5,a5,s0
- 3c42: 00e78823 sb a4,16(a5)
- if (stream->buf_write_pos >= BUFSIZ)
- 3c46: fccb5de3 bge s6,a2,3c20 <fputs+0x34>
- int64 ret = write(stream->fd, stream->buffer, stream->buf_write_pos);
- 3c4a: 4008 lw a0,0(s0)
- 3c4c: 85d6 mv a1,s5
- 3c4e: c60fc0ef jal ae <write>
- if (ret < stream->buf_write_pos)
- 3c52: 41042783 lw a5,1040(s0)
- 3c56: 06f54763 blt a0,a5,3cc4 <fputs+0xd8>
- stream->buf_write_pos = 0;
- 3c5a: 40042823 sw zero,1040(s0)
- while (*s)
- 3c5e: 0004c703 lbu a4,0(s1)
- 3c62: f761 bnez a4,3c2a <fputs+0x3e>
- 3c64: 6446 ld s0,80(sp)
- 3c66: 6906 ld s2,64(sp)
- 3c68: 79e2 ld s3,56(sp)
- 3c6a: 7a42 ld s4,48(sp)
- 3c6c: 7aa2 ld s5,40(sp)
- 3c6e: 7b02 ld s6,32(sp)
- 3c70: 6be2 ld s7,24(sp)
-}
- 3c72: 60e6 ld ra,88(sp)
- 3c74: 64a6 ld s1,72(sp)
- return 0;
- 3c76: 4501 li a0,0
-}
- 3c78: 6125 addi sp,sp,96
- 3c7a: 8082 ret
- if (write(stream->fd, &ch, 1) != 1)
- 3c7c: 4008 lw a0,0(s0)
- 3c7e: 4605 li a2,1
- 3c80: 85de mv a1,s7
- char ch = (char)c;
- 3c82: 00e107a3 sb a4,15(sp)
- if (write(stream->fd, &ch, 1) != 1)
- 3c86: c28fc0ef jal ae <write>
- 3c8a: f9350de3 beq a0,s3,3c24 <fputs+0x38>
- stream->error = 1;
- 3c8e: 01342423 sw s3,8(s0)
-}
- 3c92: 60e6 ld ra,88(sp)
- 3c94: 6446 ld s0,80(sp)
- 3c96: 6906 ld s2,64(sp)
- 3c98: 79e2 ld s3,56(sp)
- 3c9a: 7a42 ld s4,48(sp)
- 3c9c: 7aa2 ld s5,40(sp)
- 3c9e: 7b02 ld s6,32(sp)
- 3ca0: 6be2 ld s7,24(sp)
- 3ca2: 64a6 ld s1,72(sp)
- return -1;
- 3ca4: 557d li a0,-1
-}
- 3ca6: 6125 addi sp,sp,96
- 3ca8: 8082 ret
- else if (stream->buf_mode == 1 && c == '\n')
- 3caa: f7471de3 bne a4,s4,3c24 <fputs+0x38>
- if (stream->buf_write_pos > 0)
- 3cae: f6c05be3 blez a2,3c24 <fputs+0x38>
- int64 ret = write(stream->fd, stream->buffer, stream->buf_write_pos);
- 3cb2: 4008 lw a0,0(s0)
- 3cb4: 01040593 addi a1,s0,16
- 3cb8: bf6fc0ef jal ae <write>
- if (ret < stream->buf_write_pos)
- 3cbc: 41042783 lw a5,1040(s0)
- 3cc0: f8f55de3 bge a0,a5,3c5a <fputs+0x6e>
- stream->error = 1;
- 3cc4: 4785 li a5,1
- 3cc6: c41c sw a5,8(s0)
- stream->buf_write_pos = 0;
- 3cc8: 40042823 sw zero,1040(s0)
- return EOF;
- 3ccc: bfa1 j 3c24 <fputs+0x38>
- return -1;
- 3cce: 557d li a0,-1
-}
- 3cd0: 8082 ret
-
-0000000000003cd2 <fgetc>:
- if (!stream)
- 3cd2: c949 beqz a0,3d64 <fgetc+0x92>
- if (stream->buf_write_pos > 0)
- 3cd4: 41052603 lw a2,1040(a0)
-{
- 3cd8: 1141 addi sp,sp,-16
- 3cda: e022 sd s0,0(sp)
- 3cdc: e406 sd ra,8(sp)
- 3cde: 842a mv s0,a0
- if (stream->buf_write_pos > 0)
- 3ce0: 04c04863 bgtz a2,3d30 <fgetc+0x5e>
- if (stream->buf_read_pos < stream->buf_read_cnt)
- 3ce4: 41442783 lw a5,1044(s0)
- 3ce8: 41842703 lw a4,1048(s0)
- 3cec: 00e7dd63 bge a5,a4,3d06 <fgetc+0x34>
- return (unsigned char)stream->buffer[stream->buf_read_pos++];
- 3cf0: 0017871b addiw a4,a5,1
- 3cf4: 40e42a23 sw a4,1044(s0)
- 3cf8: 943e add s0,s0,a5
- 3cfa: 01044503 lbu a0,16(s0)
-}
- 3cfe: 60a2 ld ra,8(sp)
- 3d00: 6402 ld s0,0(sp)
- 3d02: 0141 addi sp,sp,16
- 3d04: 8082 ret
- int64 ret = read(stream->fd, stream->buffer, BUFSIZ);
- 3d06: 4008 lw a0,0(s0)
- 3d08: 40000613 li a2,1024
- 3d0c: 01040593 addi a1,s0,16
- 3d10: b96fc0ef jal a6 <read>
- 3d14: 87aa mv a5,a0
- if (ret <= 0)
- 3d16: 02a05e63 blez a0,3d52 <fgetc+0x80>
- stream->buf_read_cnt = (int)ret;
- 3d1a: 40f42c23 sw a5,1048(s0)
- return (unsigned char)stream->buffer[stream->buf_read_pos++];
- 3d1e: 4785 li a5,1
- 3d20: 01044503 lbu a0,16(s0)
-}
- 3d24: 60a2 ld ra,8(sp)
- return (unsigned char)stream->buffer[stream->buf_read_pos++];
- 3d26: 40f42a23 sw a5,1044(s0)
-}
- 3d2a: 6402 ld s0,0(sp)
- 3d2c: 0141 addi sp,sp,16
- 3d2e: 8082 ret
- int64 ret = write(stream->fd, stream->buffer, stream->buf_write_pos);
- 3d30: 4108 lw a0,0(a0)
- 3d32: 01040593 addi a1,s0,16
- 3d36: b78fc0ef jal ae <write>
- if (ret < stream->buf_write_pos)
- 3d3a: 41042783 lw a5,1040(s0)
- 3d3e: 00f54563 blt a0,a5,3d48 <fgetc+0x76>
- stream->buf_write_pos = 0;
- 3d42: 40042823 sw zero,1040(s0)
- 3d46: bf79 j 3ce4 <fgetc+0x12>
- stream->error = 1;
- 3d48: 4785 li a5,1
- 3d4a: c41c sw a5,8(s0)
- stream->buf_write_pos = 0;
- 3d4c: 40042823 sw zero,1040(s0)
- return EOF;
- 3d50: bf51 j 3ce4 <fgetc+0x12>
- if (ret == 0)
- 3d52: e509 bnez a0,3d5c <fgetc+0x8a>
- stream->eof = 1;
- 3d54: 4785 li a5,1
- 3d56: c45c sw a5,12(s0)
- return EOF;
- 3d58: 557d li a0,-1
- 3d5a: b755 j 3cfe <fgetc+0x2c>
- stream->error = 1;
- 3d5c: 4785 li a5,1
- 3d5e: c41c sw a5,8(s0)
- return EOF;
- 3d60: 557d li a0,-1
- 3d62: bf71 j 3cfe <fgetc+0x2c>
- 3d64: 557d li a0,-1
-}
- 3d66: 8082 ret
-
-0000000000003d68 <fgets>:
- if (!stream || n <= 0)
- 3d68: ce5d beqz a2,3e26 <fgets+0xbe>
- 3d6a: 0ab05e63 blez a1,3e26 <fgets+0xbe>
-{
- 3d6e: 715d addi sp,sp,-80
- 3d70: e0a2 sd s0,64(sp)
- 3d72: fc26 sd s1,56(sp)
- 3d74: f84a sd s2,48(sp)
- 3d76: f44e sd s3,40(sp)
- 3d78: f052 sd s4,32(sp)
- 3d7a: ec56 sd s5,24(sp)
- 3d7c: e85a sd s6,16(sp)
- 3d7e: e45e sd s7,8(sp)
- 3d80: e486 sd ra,72(sp)
- 3d82: 8432 mv s0,a2
- 3d84: 8aaa mv s5,a0
- 3d86: 892a mv s2,a0
- 3d88: fff58b9b addiw s7,a1,-1
- int i = 0, c;
- 3d8c: 4481 li s1,0
- int64 ret = write(stream->fd, stream->buffer, stream->buf_write_pos);
- 3d8e: 01060993 addi s3,a2,16
- return (unsigned char)stream->buffer[stream->buf_read_pos++];
- 3d92: 4b05 li s6,1
- if (c == '\n')
- 3d94: 4a29 li s4,10
- while (i < n - 1)
- 3d96: 05748163 beq s1,s7,3dd8 <fgets+0x70>
- if (stream->buf_write_pos > 0)
- 3d9a: 41042603 lw a2,1040(s0)
- int64 ret = write(stream->fd, stream->buffer, stream->buf_write_pos);
- 3d9e: 85ce mv a1,s3
- if (stream->buf_write_pos > 0)
- 3da0: 06c04963 bgtz a2,3e12 <fgets+0xaa>
- if (stream->buf_read_pos < stream->buf_read_cnt)
- 3da4: 41442783 lw a5,1044(s0)
- 3da8: 41842703 lw a4,1048(s0)
- int64 ret = read(stream->fd, stream->buffer, BUFSIZ);
- 3dac: 40000613 li a2,1024
- return (unsigned char)stream->buffer[stream->buf_read_pos++];
- 3db0: 0017851b addiw a0,a5,1
- 3db4: 00f406b3 add a3,s0,a5
- int64 ret = read(stream->fd, stream->buffer, BUFSIZ);
- 3db8: 85ce mv a1,s3
- if (stream->buf_read_pos < stream->buf_read_cnt)
- 3dba: 02e7de63 bge a5,a4,3df6 <fgets+0x8e>
- return (unsigned char)stream->buffer[stream->buf_read_pos++];
- 3dbe: 40a42a23 sw a0,1044(s0)
- 3dc2: 0106c783 lbu a5,16(a3)
- 3dc6: 0007871b sext.w a4,a5
- str[i++] = (char)c;
- 3dca: 00f90023 sb a5,0(s2)
- 3dce: 2485 addiw s1,s1,1
- if (c == '\n')
- 3dd0: 0905 addi s2,s2,1
- 3dd2: fd4712e3 bne a4,s4,3d96 <fgets+0x2e>
- str[i++] = (char)c;
- 3dd6: 8ba6 mv s7,s1
- str[i] = '\0';
- 3dd8: 9bd6 add s7,s7,s5
- 3dda: 000b8023 sb zero,0(s7)
- return str;
- 3dde: 8556 mv a0,s5
-}
- 3de0: 60a6 ld ra,72(sp)
- 3de2: 6406 ld s0,64(sp)
- 3de4: 74e2 ld s1,56(sp)
- 3de6: 7942 ld s2,48(sp)
- 3de8: 79a2 ld s3,40(sp)
- 3dea: 7a02 ld s4,32(sp)
- 3dec: 6ae2 ld s5,24(sp)
- 3dee: 6b42 ld s6,16(sp)
- 3df0: 6ba2 ld s7,8(sp)
- 3df2: 6161 addi sp,sp,80
- 3df4: 8082 ret
- int64 ret = read(stream->fd, stream->buffer, BUFSIZ);
- 3df6: 4008 lw a0,0(s0)
- 3df8: aaefc0ef jal a6 <read>
- if (ret <= 0)
- 3dfc: 02a05c63 blez a0,3e34 <fgets+0xcc>
- return (unsigned char)stream->buffer[stream->buf_read_pos++];
- 3e00: 01044783 lbu a5,16(s0)
- stream->buf_read_cnt = (int)ret;
- 3e04: 40a42c23 sw a0,1048(s0)
- return (unsigned char)stream->buffer[stream->buf_read_pos++];
- 3e08: 41642a23 sw s6,1044(s0)
- 3e0c: 0007871b sext.w a4,a5
- if (c == -1)
- 3e10: bf6d j 3dca <fgets+0x62>
- int64 ret = write(stream->fd, stream->buffer, stream->buf_write_pos);
- 3e12: 4008 lw a0,0(s0)
- 3e14: a9afc0ef jal ae <write>
- if (ret < stream->buf_write_pos)
- 3e18: 41042783 lw a5,1040(s0)
- 3e1c: 00f54763 blt a0,a5,3e2a <fgets+0xc2>
- stream->buf_write_pos = 0;
- 3e20: 40042823 sw zero,1040(s0)
- 3e24: b741 j 3da4 <fgets+0x3c>
- return NULL;
- 3e26: 4501 li a0,0
-}
- 3e28: 8082 ret
- stream->error = 1;
- 3e2a: 4785 li a5,1
- 3e2c: c41c sw a5,8(s0)
- stream->buf_write_pos = 0;
- 3e2e: 40042823 sw zero,1040(s0)
- return EOF;
- 3e32: bf8d j 3da4 <fgets+0x3c>
- stream->eof = 1;
- 3e34: 4785 li a5,1
- if (ret == 0)
- 3e36: e509 bnez a0,3e40 <fgets+0xd8>
- stream->eof = 1;
- 3e38: c45c sw a5,12(s0)
- if (i == 0)
- 3e3a: fcd1 bnez s1,3dd6 <fgets+0x6e>
- return NULL;
- 3e3c: 4501 li a0,0
- 3e3e: b74d j 3de0 <fgets+0x78>
- stream->error = 1;
- 3e40: c41c sw a5,8(s0)
- if (c == -1)
- 3e42: bfe5 j 3e3a <fgets+0xd2>
-
-0000000000003e44 <fread>:
-{
- 3e44: 715d addi sp,sp,-80
- 3e46: e486 sd ra,72(sp)
- 3e48: f44e sd s3,40(sp)
- if (!stream || size == 0 || nmemb == 0)
- 3e4a: 0e068963 beqz a3,3f3c <fread+0xf8>
- 3e4e: ec56 sd s5,24(sp)
- return 0;
- 3e50: 4981 li s3,0
- 3e52: 8aae mv s5,a1
- if (!stream || size == 0 || nmemb == 0)
- 3e54: c9bd beqz a1,3eca <fread+0x86>
- 3e56: ca35 beqz a2,3eca <fread+0x86>
- if (stream->buf_write_pos > 0)
- 3e58: 4106a783 lw a5,1040(a3)
- 3e5c: e0a2 sd s0,64(sp)
- 3e5e: f052 sd s4,32(sp)
- uint64 total_bytes = size * nmemb;
- 3e60: 02c589b3 mul s3,a1,a2
- 3e64: 8436 mv s0,a3
- 3e66: 8a2a mv s4,a0
- if (stream->buf_write_pos > 0)
- 3e68: 0af04d63 bgtz a5,3f22 <fread+0xde>
- while (bytes_read < total_bytes)
- 3e6c: 04098d63 beqz s3,3ec6 <fread+0x82>
- 3e70: fc26 sd s1,56(sp)
- 3e72: e85a sd s6,16(sp)
- 3e74: e45e sd s7,8(sp)
- 3e76: f84a sd s2,48(sp)
- 3e78: 4481 li s1,0
- if (remaining >= BUFSIZ)
- 3e7a: 3ff00b13 li s6,1023
- int64 ret = read(stream->fd, stream->buffer, BUFSIZ);
- 3e7e: 01040b93 addi s7,s0,16
- if (stream->buf_read_pos < stream->buf_read_cnt)
- 3e82: 41442703 lw a4,1044(s0)
- 3e86: 41842783 lw a5,1048(s0)
- uint64 remaining = total_bytes - bytes_read;
- 3e8a: 40998633 sub a2,s3,s1
- if (stream->buf_read_pos < stream->buf_read_cnt)
- 3e8e: 06f74463 blt a4,a5,3ef6 <fread+0xb2>
- int64 ret = read(stream->fd, dst + bytes_read, remaining);
- 3e92: 4008 lw a0,0(s0)
- 3e94: 009a05b3 add a1,s4,s1
- if (remaining >= BUFSIZ)
- 3e98: 02cb7f63 bgeu s6,a2,3ed6 <fread+0x92>
- int64 ret = read(stream->fd, dst + bytes_read, remaining);
- 3e9c: a0afc0ef jal a6 <read>
- if (ret <= 0)
- 3ea0: 0aa05463 blez a0,3f48 <fread+0x104>
- bytes_read += ret;
- 3ea4: 94aa add s1,s1,a0
- while (bytes_read < total_bytes)
- 3ea6: fd34eee3 bltu s1,s3,3e82 <fread+0x3e>
- return bytes_read / size;
- 3eaa: 0354d9b3 divu s3,s1,s5
- 3eae: 6406 ld s0,64(sp)
-}
- 3eb0: 60a6 ld ra,72(sp)
- return bytes_read / size;
- 3eb2: 74e2 ld s1,56(sp)
- 3eb4: 7942 ld s2,48(sp)
- 3eb6: 7a02 ld s4,32(sp)
- 3eb8: 6ae2 ld s5,24(sp)
- 3eba: 6b42 ld s6,16(sp)
- 3ebc: 6ba2 ld s7,8(sp)
-}
- 3ebe: 854e mv a0,s3
- 3ec0: 79a2 ld s3,40(sp)
- 3ec2: 6161 addi sp,sp,80
- 3ec4: 8082 ret
- 3ec6: 6406 ld s0,64(sp)
- 3ec8: 7a02 ld s4,32(sp)
- 3eca: 60a6 ld ra,72(sp)
- 3ecc: 6ae2 ld s5,24(sp)
- 3ece: 854e mv a0,s3
- 3ed0: 79a2 ld s3,40(sp)
- 3ed2: 6161 addi sp,sp,80
- 3ed4: 8082 ret
- stream->buf_read_pos = 0;
- 3ed6: 40042a23 sw zero,1044(s0)
- stream->buf_read_cnt = 0;
- 3eda: 40042c23 sw zero,1048(s0)
- int64 ret = read(stream->fd, stream->buffer, BUFSIZ);
- 3ede: 40000613 li a2,1024
- 3ee2: 85de mv a1,s7
- 3ee4: 9c2fc0ef jal a6 <read>
- if (ret <= 0)
- 3ee8: 06a05063 blez a0,3f48 <fread+0x104>
- stream->buf_read_cnt = (int)ret;
- 3eec: 40a42c23 sw a0,1048(s0)
- while (bytes_read < total_bytes)
- 3ef0: f934e9e3 bltu s1,s3,3e82 <fread+0x3e>
- 3ef4: bf5d j 3eaa <fread+0x66>
- uint64 available = stream->buf_read_cnt - stream->buf_read_pos;
- 3ef6: 40e7893b subw s2,a5,a4
- memcpy(dst + bytes_read, stream->buffer + stream->buf_read_pos, to_copy);
- 3efa: 00eb85b3 add a1,s7,a4
- 3efe: 009a0533 add a0,s4,s1
- uint64 to_copy = (available < remaining) ? available : remaining;
- 3f02: 01267363 bgeu a2,s2,3f08 <fread+0xc4>
- 3f06: 8932 mv s2,a2
- memcpy(dst + bytes_read, stream->buffer + stream->buf_read_pos, to_copy);
- 3f08: 864a mv a2,s2
- 3f0a: 3e1000ef jal 4aea <memcpy>
- stream->buf_read_pos += to_copy;
- 3f0e: 41442783 lw a5,1044(s0)
- bytes_read += to_copy;
- 3f12: 94ca add s1,s1,s2
- stream->buf_read_pos += to_copy;
- 3f14: 012787bb addw a5,a5,s2
- 3f18: 40f42a23 sw a5,1044(s0)
- while (bytes_read < total_bytes)
- 3f1c: f734e3e3 bltu s1,s3,3e82 <fread+0x3e>
- 3f20: b769 j 3eaa <fread+0x66>
- int64 ret = write(stream->fd, stream->buffer, stream->buf_write_pos);
- 3f22: 4288 lw a0,0(a3)
- 3f24: 863e mv a2,a5
- 3f26: 01068593 addi a1,a3,16
- 3f2a: 984fc0ef jal ae <write>
- if (ret < stream->buf_write_pos)
- 3f2e: 41042783 lw a5,1040(s0)
- 3f32: 02f54163 blt a0,a5,3f54 <fread+0x110>
- stream->buf_write_pos = 0;
- 3f36: 40042823 sw zero,1040(s0)
- 3f3a: bf0d j 3e6c <fread+0x28>
-}
- 3f3c: 60a6 ld ra,72(sp)
- return 0;
- 3f3e: 4981 li s3,0
-}
- 3f40: 854e mv a0,s3
- 3f42: 79a2 ld s3,40(sp)
- 3f44: 6161 addi sp,sp,80
- 3f46: 8082 ret
- stream->eof = 1;
- 3f48: 4785 li a5,1
- if (ret == 0)
- 3f4a: e119 bnez a0,3f50 <fread+0x10c>
- stream->eof = 1;
- 3f4c: c45c sw a5,12(s0)
- 3f4e: bfb1 j 3eaa <fread+0x66>
- stream->error = 1;
- 3f50: c41c sw a5,8(s0)
- return bytes_read / size;
- 3f52: bfa1 j 3eaa <fread+0x66>
- stream->error = 1;
- 3f54: 4785 li a5,1
- 3f56: c41c sw a5,8(s0)
- stream->buf_write_pos = 0;
- 3f58: 40042823 sw zero,1040(s0)
- return EOF;
- 3f5c: bf01 j 3e6c <fread+0x28>
-
-0000000000003f5e <fwrite>:
-{
- 3f5e: 711d addi sp,sp,-96
- 3f60: ec86 sd ra,88(sp)
- 3f62: e0ca sd s2,64(sp)
- if (!stream || !ptr || size == 0 || nmemb == 0)
- 3f64: 10068063 beqz a3,4064 <fwrite+0x106>
- 3f68: f456 sd s5,40(sp)
- 3f6a: 8aaa mv s5,a0
- 3f6c: 10050263 beqz a0,4070 <fwrite+0x112>
- 3f70: f05a sd s6,32(sp)
- return 0;
- 3f72: 4901 li s2,0
- 3f74: 8b2e mv s6,a1
- if (!stream || !ptr || size == 0 || nmemb == 0)
- 3f76: c1d9 beqz a1,3ffc <fwrite+0x9e>
- 3f78: c251 beqz a2,3ffc <fwrite+0x9e>
- if (stream->buf_mode == 2)
- 3f7a: 41c6a703 lw a4,1052(a3)
- 3f7e: e8a2 sd s0,80(sp)
- 3f80: 4789 li a5,2
- uint64 total_bytes = size * nmemb;
- 3f82: 02c58933 mul s2,a1,a2
- if (stream->buf_mode == 2)
- 3f86: 8436 mv s0,a3
- 3f88: 0ef70b63 beq a4,a5,407e <fwrite+0x120>
- 3f8c: fc4e sd s3,56(sp)
- 3f8e: ec5e sd s7,24(sp)
- 3f90: e862 sd s8,16(sp)
- uint64 bytes_written = 0;
- 3f92: 4981 li s3,0
- 3f94: 01068b93 addi s7,a3,16
- uint64 space_left = BUFSIZ - stream->buf_write_pos;
- 3f98: 40000c13 li s8,1024
- while (bytes_written < total_bytes)
- 3f9c: 12090263 beqz s2,40c0 <fwrite+0x162>
- 3fa0: e4a6 sd s1,72(sp)
- 3fa2: f852 sd s4,48(sp)
- 3fa4: e466 sd s9,8(sp)
- uint64 space_left = BUFSIZ - stream->buf_write_pos;
- 3fa6: 41042783 lw a5,1040(s0)
- uint64 remaining = total_bytes - bytes_written;
- 3faa: 41390cb3 sub s9,s2,s3
- memcpy(stream->buffer + stream->buf_write_pos, src + bytes_written, remaining);
- 3fae: 013a85b3 add a1,s5,s3
- uint64 space_left = BUFSIZ - stream->buf_write_pos;
- 3fb2: 40fc0a3b subw s4,s8,a5
- memcpy(stream->buffer + stream->buf_write_pos, src + bytes_written, space_left);
- 3fb6: 00fb8533 add a0,s7,a5
- 3fba: 8652 mv a2,s4
- if (remaining <= space_left)
- 3fbc: 059a6763 bltu s4,s9,400a <fwrite+0xac>
- memcpy(stream->buffer + stream->buf_write_pos, src + bytes_written, remaining);
- 3fc0: 8666 mv a2,s9
- 3fc2: 329000ef jal 4aea <memcpy>
- stream->buf_write_pos += remaining;
- 3fc6: 41042783 lw a5,1040(s0)
- if (stream->buf_write_pos == BUFSIZ)
- 3fca: 40000713 li a4,1024
- stream->buf_write_pos += remaining;
- 3fce: 019786bb addw a3,a5,s9
- 3fd2: 40d42823 sw a3,1040(s0)
- if (stream->buf_write_pos == BUFSIZ)
- 3fd6: 06e68a63 beq a3,a4,404a <fwrite+0xec>
- return bytes_written / size;
- 3fda: 03695933 divu s2,s2,s6
- 3fde: 6446 ld s0,80(sp)
- 3fe0: 64a6 ld s1,72(sp)
- 3fe2: 79e2 ld s3,56(sp)
- 3fe4: 7a42 ld s4,48(sp)
- 3fe6: 7aa2 ld s5,40(sp)
- 3fe8: 7b02 ld s6,32(sp)
- 3fea: 6be2 ld s7,24(sp)
- 3fec: 6c42 ld s8,16(sp)
- 3fee: 6ca2 ld s9,8(sp)
-}
- 3ff0: 60e6 ld ra,88(sp)
- 3ff2: 854a mv a0,s2
- 3ff4: 6906 ld s2,64(sp)
- 3ff6: 6125 addi sp,sp,96
- 3ff8: 8082 ret
- 3ffa: 6446 ld s0,80(sp)
- 3ffc: 60e6 ld ra,88(sp)
- 3ffe: 7aa2 ld s5,40(sp)
- 4000: 7b02 ld s6,32(sp)
- 4002: 854a mv a0,s2
- 4004: 6906 ld s2,64(sp)
- 4006: 6125 addi sp,sp,96
- 4008: 8082 ret
- memcpy(stream->buffer + stream->buf_write_pos, src + bytes_written, space_left);
- 400a: 2e1000ef jal 4aea <memcpy>
- stream->buf_write_pos += space_left;
- 400e: 41042783 lw a5,1040(s0)
- int64 ret = write(stream->fd, stream->buffer, stream->buf_write_pos);
- 4012: 85de mv a1,s7
- bytes_written += space_left;
- 4014: 99d2 add s3,s3,s4
- stream->buf_write_pos += space_left;
- 4016: 00fa04bb addw s1,s4,a5
- int64 ret = write(stream->fd, stream->buffer, stream->buf_write_pos);
- 401a: 02049613 slli a2,s1,0x20
- stream->buf_write_pos += space_left;
- 401e: 40942823 sw s1,1040(s0)
- int64 ret = write(stream->fd, stream->buffer, stream->buf_write_pos);
- 4022: 9201 srli a2,a2,0x20
- if (stream->buf_write_pos > 0)
- 4024: 00904763 bgtz s1,4032 <fwrite+0xd4>
- while (bytes_written < total_bytes)
- 4028: f729efe3 bltu s3,s2,3fa6 <fwrite+0x48>
- return bytes_written / size;
- 402c: 0369d933 divu s2,s3,s6
- 4030: b77d j 3fde <fwrite+0x80>
- int64 ret = write(stream->fd, stream->buffer, stream->buf_write_pos);
- 4032: 4008 lw a0,0(s0)
- 4034: 87afc0ef jal ae <write>
- if (ret < stream->buf_write_pos)
- 4038: 41042783 lw a5,1040(s0)
- 403c: 08f54963 blt a0,a5,40ce <fwrite+0x170>
- stream->buf_write_pos = 0;
- 4040: 40042823 sw zero,1040(s0)
- while (bytes_written < total_bytes)
- 4044: f729e1e3 bltu s3,s2,3fa6 <fwrite+0x48>
- 4048: b7d5 j 402c <fwrite+0xce>
- int64 ret = write(stream->fd, stream->buffer, stream->buf_write_pos);
- 404a: 4008 lw a0,0(s0)
- 404c: 40000613 li a2,1024
- 4050: 85de mv a1,s7
- 4052: 85cfc0ef jal ae <write>
- if (ret < stream->buf_write_pos)
- 4056: 41042783 lw a5,1040(s0)
- 405a: 08f54163 blt a0,a5,40dc <fwrite+0x17e>
- stream->buf_write_pos = 0;
- 405e: 40042823 sw zero,1040(s0)
- 4062: bfa5 j 3fda <fwrite+0x7c>
-}
- 4064: 60e6 ld ra,88(sp)
- return 0;
- 4066: 4901 li s2,0
-}
- 4068: 854a mv a0,s2
- 406a: 6906 ld s2,64(sp)
- 406c: 6125 addi sp,sp,96
- 406e: 8082 ret
- 4070: 60e6 ld ra,88(sp)
- return 0;
- 4072: 4901 li s2,0
- 4074: 7aa2 ld s5,40(sp)
-}
- 4076: 854a mv a0,s2
- 4078: 6906 ld s2,64(sp)
- 407a: 6125 addi sp,sp,96
- 407c: 8082 ret
- while (bytes_written < total_bytes)
- 407e: f6090ee3 beqz s2,3ffa <fwrite+0x9c>
- 4082: e4a6 sd s1,72(sp)
- uint64 bytes_written = 0;
- 4084: 4481 li s1,0
- 4086: a021 j 408e <fwrite+0x130>
- bytes_written += ret;
- 4088: 94aa add s1,s1,a0
- while (bytes_written < total_bytes)
- 408a: 0324f463 bgeu s1,s2,40b2 <fwrite+0x154>
- int64 ret = write(stream->fd, src + bytes_written, total_bytes - bytes_written);
- 408e: 4008 lw a0,0(s0)
- 4090: 40990633 sub a2,s2,s1
- 4094: 009a85b3 add a1,s5,s1
- 4098: 816fc0ef jal ae <write>
- if (ret <= 0)
- 409c: fea046e3 bgtz a0,4088 <fwrite+0x12a>
- stream->error = 1;
- 40a0: 4785 li a5,1
- return bytes_written / size;
- 40a2: 0364d933 divu s2,s1,s6
- stream->error = 1;
- 40a6: c41c sw a5,8(s0)
- break;
- 40a8: 64a6 ld s1,72(sp)
- 40aa: 6446 ld s0,80(sp)
- 40ac: 7aa2 ld s5,40(sp)
- 40ae: 7b02 ld s6,32(sp)
- 40b0: b781 j 3ff0 <fwrite+0x92>
- return bytes_written / size;
- 40b2: 0364d933 divu s2,s1,s6
- 40b6: 6446 ld s0,80(sp)
- 40b8: 64a6 ld s1,72(sp)
- 40ba: 7aa2 ld s5,40(sp)
- 40bc: 7b02 ld s6,32(sp)
- 40be: bf0d j 3ff0 <fwrite+0x92>
- 40c0: 6446 ld s0,80(sp)
- 40c2: 79e2 ld s3,56(sp)
- 40c4: 7aa2 ld s5,40(sp)
- 40c6: 7b02 ld s6,32(sp)
- 40c8: 6be2 ld s7,24(sp)
- 40ca: 6c42 ld s8,16(sp)
- 40cc: b715 j 3ff0 <fwrite+0x92>
- stream->error = 1;
- 40ce: 4785 li a5,1
- 40d0: c41c sw a5,8(s0)
- stream->buf_write_pos = 0;
- 40d2: 40042823 sw zero,1040(s0)
- while (bytes_written < total_bytes)
- 40d6: ed29e8e3 bltu s3,s2,3fa6 <fwrite+0x48>
- 40da: bf89 j 402c <fwrite+0xce>
- stream->error = 1;
- 40dc: 4785 li a5,1
- 40de: c41c sw a5,8(s0)
- stream->buf_write_pos = 0;
- 40e0: 40042823 sw zero,1040(s0)
- return EOF;
- 40e4: bddd j 3fda <fwrite+0x7c>
-
-00000000000040e6 <fseek>:
- if (!stream)
- 40e6: c925 beqz a0,4156 <fseek+0x70>
-{
- 40e8: 1101 addi sp,sp,-32
- 40ea: e04a sd s2,0(sp)
- 40ec: 8932 mv s2,a2
- if (stream->buf_write_pos > 0)
- 40ee: 41052603 lw a2,1040(a0)
-{
- 40f2: e822 sd s0,16(sp)
- 40f4: e426 sd s1,8(sp)
- 40f6: ec06 sd ra,24(sp)
- 40f8: 842a mv s0,a0
- 40fa: 84ae mv s1,a1
- if (stream->buf_write_pos > 0)
- 40fc: 02c04863 bgtz a2,412c <fseek+0x46>
- if (lseek(stream->fd, offset, whence) < 0)
- 4100: 4008 lw a0,0(s0)
- stream->buf_read_pos = 0;
- 4102: 40042a23 sw zero,1044(s0)
- stream->buf_read_cnt = 0;
- 4106: 40042c23 sw zero,1048(s0)
- stream->eof = 0;
- 410a: 00042623 sw zero,12(s0)
- if (lseek(stream->fd, offset, whence) < 0)
- 410e: 864a mv a2,s2
- 4110: 0004859b sext.w a1,s1
- 4114: 82afc0ef jal 13e <lseek>
- 4118: 87aa mv a5,a0
- return 0;
- 411a: 4501 li a0,0
- if (lseek(stream->fd, offset, whence) < 0)
- 411c: 0207c463 bltz a5,4144 <fseek+0x5e>
-}
- 4120: 60e2 ld ra,24(sp)
- 4122: 6442 ld s0,16(sp)
- 4124: 64a2 ld s1,8(sp)
- 4126: 6902 ld s2,0(sp)
- 4128: 6105 addi sp,sp,32
- 412a: 8082 ret
- int64 ret = write(stream->fd, stream->buffer, stream->buf_write_pos);
- 412c: 4108 lw a0,0(a0)
- 412e: 01040593 addi a1,s0,16
- 4132: f7dfb0ef jal ae <write>
- if (ret < stream->buf_write_pos)
- 4136: 41042783 lw a5,1040(s0)
- 413a: 00f54963 blt a0,a5,414c <fseek+0x66>
- stream->buf_write_pos = 0;
- 413e: 40042823 sw zero,1040(s0)
- 4142: bf7d j 4100 <fseek+0x1a>
- stream->error = 1;
- 4144: 4785 li a5,1
- 4146: c41c sw a5,8(s0)
- return -1;
- 4148: 557d li a0,-1
- 414a: bfd9 j 4120 <fseek+0x3a>
- stream->error = 1;
- 414c: 4785 li a5,1
- 414e: c41c sw a5,8(s0)
- stream->buf_write_pos = 0;
- 4150: 40042823 sw zero,1040(s0)
- return EOF;
- 4154: b775 j 4100 <fseek+0x1a>
- return -1;
- 4156: 557d li a0,-1
-}
- 4158: 8082 ret
-
-000000000000415a <ftell>:
- if (!stream)
- 415a: c505 beqz a0,4182 <ftell+0x28>
-{
- 415c: 1141 addi sp,sp,-16
- 415e: e022 sd s0,0(sp)
- 4160: 842a mv s0,a0
- int64 ret = lseek(stream->fd, 0, SEEK_CUR);
- 4162: 4108 lw a0,0(a0)
- 4164: 4605 li a2,1
- 4166: 4581 li a1,0
-{
- 4168: e406 sd ra,8(sp)
- int64 ret = lseek(stream->fd, 0, SEEK_CUR);
- 416a: fd5fb0ef jal 13e <lseek>
- if (ret < 0)
- 416e: 00054663 bltz a0,417a <ftell+0x20>
-}
- 4172: 60a2 ld ra,8(sp)
- 4174: 6402 ld s0,0(sp)
- 4176: 0141 addi sp,sp,16
- 4178: 8082 ret
- stream->error = 1;
- 417a: 4785 li a5,1
- 417c: c41c sw a5,8(s0)
- return -1L;
- 417e: 557d li a0,-1
- 4180: bfcd j 4172 <ftell+0x18>
- 4182: 557d li a0,-1
-}
- 4184: 8082 ret
-
-0000000000004186 <rewind>:
- if (stream)
- 4186: c915 beqz a0,41ba <rewind+0x34>
- if (stream->buf_write_pos > 0)
- 4188: 41052603 lw a2,1040(a0)
-{
- 418c: 1141 addi sp,sp,-16
- 418e: e022 sd s0,0(sp)
- 4190: e406 sd ra,8(sp)
- 4192: 842a mv s0,a0
- if (stream->buf_write_pos > 0)
- 4194: 02c04463 bgtz a2,41bc <rewind+0x36>
- if (lseek(stream->fd, offset, whence) < 0)
- 4198: 4008 lw a0,0(s0)
- stream->buf_read_pos = 0;
- 419a: 40042a23 sw zero,1044(s0)
- stream->buf_read_cnt = 0;
- 419e: 40042c23 sw zero,1048(s0)
- stream->eof = 0;
- 41a2: 00042623 sw zero,12(s0)
- if (lseek(stream->fd, offset, whence) < 0)
- 41a6: 4601 li a2,0
- 41a8: 4581 li a1,0
- 41aa: f95fb0ef jal 13e <lseek>
-}
- 41ae: 60a2 ld ra,8(sp)
- stream->error = 0;
- 41b0: 00042423 sw zero,8(s0)
-}
- 41b4: 6402 ld s0,0(sp)
- 41b6: 0141 addi sp,sp,16
- 41b8: 8082 ret
- 41ba: 8082 ret
- int64 ret = write(stream->fd, stream->buffer, stream->buf_write_pos);
- 41bc: 4108 lw a0,0(a0)
- 41be: 01040593 addi a1,s0,16
- 41c2: eedfb0ef jal ae <write>
- if (ret < stream->buf_write_pos)
- 41c6: 41042783 lw a5,1040(s0)
- 41ca: 00f54563 blt a0,a5,41d4 <rewind+0x4e>
- stream->buf_write_pos = 0;
- 41ce: 40042823 sw zero,1040(s0)
- 41d2: b7d9 j 4198 <rewind+0x12>
- stream->error = 1;
- 41d4: 4785 li a5,1
- 41d6: c41c sw a5,8(s0)
- stream->buf_write_pos = 0;
- 41d8: 40042823 sw zero,1040(s0)
- return EOF;
- 41dc: bf75 j 4198 <rewind+0x12>
-
-00000000000041de <feof>:
- return (stream) ? stream->eof : 1;
- 41de: c119 beqz a0,41e4 <feof+0x6>
- 41e0: 4548 lw a0,12(a0)
- 41e2: 8082 ret
- 41e4: 4505 li a0,1
-}
- 41e6: 8082 ret
-
-00000000000041e8 <ferror>:
- return (stream) ? stream->error : 1;
- 41e8: c119 beqz a0,41ee <ferror+0x6>
- 41ea: 4508 lw a0,8(a0)
- 41ec: 8082 ret
- 41ee: 4505 li a0,1
-}
- 41f0: 8082 ret
-
-00000000000041f2 <clearerr>:
- if (stream)
- 41f2: c509 beqz a0,41fc <clearerr+0xa>
- stream->error = 0;
- 41f4: 00052423 sw zero,8(a0)
- stream->eof = 0;
- 41f8: 00052623 sw zero,12(a0)
-}
- 41fc: 8082 ret
-
-00000000000041fe <ungetc>:
- if (!stream || c == EOF)
- 41fe: c19d beqz a1,4224 <ungetc+0x26>
- 4200: 57fd li a5,-1
- 4202: 02f50163 beq a0,a5,4224 <ungetc+0x26>
- if (stream->buf_read_pos > 0)
- 4206: 4145a783 lw a5,1044(a1)
- 420a: 00f05d63 blez a5,4224 <ungetc+0x26>
- stream->buf_read_pos--;
- 420e: fff7871b addiw a4,a5,-1
- 4212: 40e5aa23 sw a4,1044(a1)
- stream->buffer[stream->buf_read_pos] = (char)c;
- 4216: 00e587b3 add a5,a1,a4
- 421a: 00a78823 sb a0,16(a5)
- stream->eof = 0;
- 421e: 0005a623 sw zero,12(a1)
- return c;
- 4222: 8082 ret
- return EOF;
- 4224: 557d li a0,-1
- 4226: 8082 ret
-
-0000000000004228 <strtoull.part.0>:
- return new_ptr;
-}
-
-/* String Conversion*/
-
-unsigned long long strtoull(const char *nptr, char **endptr, int base)
- 4228: 1141 addi sp,sp,-16
- 422a: e422 sd s0,8(sp)
- 422c: 8eaa mv t4,a0
-{
- const char *s = nptr;
- 422e: 88aa mv a7,a0
- static inline int isdigit(int c) { return c >= '0' && c <= '9'; }
- static inline int islower(int c) { return c >= 'a' && c <= 'z'; }
- static inline int isupper(int c) { return c >= 'A' && c <= 'Z'; }
- static inline int isalpha(int c) { return islower(c) || isupper(c); }
- static inline int isalnum(int c) { return isalpha(c) || isdigit(c); }
- static inline int isspace(int c) { return c == ' ' || c == '\t' || c == '\n' || c == '\v' || c == '\f' || c == '\r'; }
- 4230: 02000313 li t1,32
- 4234: 4e11 li t3,4
- return 0;
- }
-
- do
- {
- c = *s++;
- 4236: 0008c783 lbu a5,0(a7)
- 423a: 00188813 addi a6,a7,1
- 423e: ff77871b addiw a4,a5,-9
- 4242: 0ff77693 zext.b a3,a4
- 4246: 0007871b sext.w a4,a5
- 424a: 04678363 beq a5,t1,4290 <strtoull.part.0+0x68>
- 424e: 04de7163 bgeu t3,a3,4290 <strtoull.part.0+0x68>
- } while (isspace(c));
-
- if (c == '-')
- 4252: 02d00793 li a5,45
- 4256: 0ef70863 beq a4,a5,4346 <strtoull.part.0+0x11e>
- {
- neg = 1;
- c = *s++;
- }
- else if (c == '+')
- 425a: 02b00793 li a5,43
- int neg = 0, any, cutlim;
- 425e: 4381 li t2,0
- else if (c == '+')
- 4260: 08f70c63 beq a4,a5,42f8 <strtoull.part.0+0xd0>
- {
- c = *s++;
- }
-
- if ((base == 0 || base == 16) && c == '0' && (*s == 'x' || *s == 'X'))
- 4264: ea05 bnez a2,4294 <strtoull.part.0+0x6c>
- 4266: 03000793 li a5,48
- 426a: 0ef70463 beq a4,a5,4352 <strtoull.part.0+0x12a>
- 426e: 00ccd8b7 lui a7,0xccd
- 4272: ccd88893 addi a7,a7,-819 # cccccd <_ZSt4cerr+0xcc5515>
- 4276: 08b2 slli a7,a7,0xc
- 4278: ccd88893 addi a7,a7,-819
- 427c: 08b2 slli a7,a7,0xc
- 427e: ccd88893 addi a7,a7,-819
- 4282: 08b6 slli a7,a7,0xd
- 4284: 4415 li s0,5
- 4286: 99988893 addi a7,a7,-1639
- 428a: 42a9 li t0,10
- c = s[1];
- s += 2;
- base = 16;
- }
- if (base == 0)
- base = (c == '0' ? 8 : 10);
- 428c: 4629 li a2,10
- 428e: a829 j 42a8 <strtoull.part.0+0x80>
-unsigned long long strtoull(const char *nptr, char **endptr, int base)
- 4290: 88c2 mv a7,a6
- 4292: b755 j 4236 <strtoull.part.0+0xe>
- if ((base == 0 || base == 16) && c == '0' && (*s == 'x' || *s == 'X'))
- 4294: 47c1 li a5,16
- 4296: 0cf60d63 beq a2,a5,4370 <strtoull.part.0+0x148>
-
- cutoff = ULLONG_MAX / (unsigned long long)base;
- 429a: 58fd li a7,-1
- cutlim = ULLONG_MAX % (unsigned long long)base;
- 429c: 02c8f433 remu s0,a7,a2
- cutoff = ULLONG_MAX / (unsigned long long)base;
- 42a0: 82b2 mv t0,a2
- 42a2: 02c8d8b3 divu a7,a7,a2
- cutlim = ULLONG_MAX % (unsigned long long)base;
- 42a6: 2401 sext.w s0,s0
-
- for (acc = 0, any = 0;; c = *s++)
- 42a8: 4301 li t1,0
- 42aa: 4501 li a0,0
- {
- if (isdigit(c))
- 42ac: 4e25 li t3,9
- static inline int isalpha(int c) { return islower(c) || isupper(c); }
- 42ae: 4fe5 li t6,25
- break;
-
- if (c >= base)
- break;
-
- if (any < 0 || acc > cutoff || (acc == cutoff && c > cutlim))
- 42b0: 5f7d li t5,-1
- if (isdigit(c))
- 42b2: fd07079b addiw a5,a4,-48
- static inline int isdigit(int c) { return c >= '0' && c <= '9'; }
- 42b6: 0007069b sext.w a3,a4
- 42ba: 00fe7e63 bgeu t3,a5,42d6 <strtoull.part.0+0xae>
- static inline int isalpha(int c) { return islower(c) || isupper(c); }
- 42be: f9f6879b addiw a5,a3,-97
- 42c2: 04fff063 bgeu t6,a5,4302 <strtoull.part.0+0xda>
- 42c6: fbf6869b addiw a3,a3,-65
- 42ca: 04dfe163 bltu t6,a3,430c <strtoull.part.0+0xe4>
- c -= isupper(c) ? 'A' - 10 : 'a' - 10;
- 42ce: 03700793 li a5,55
- 42d2: 40f707bb subw a5,a4,a5
- if (c >= base)
- 42d6: 02c7db63 bge a5,a2,430c <strtoull.part.0+0xe4>
- if (any < 0 || acc > cutoff || (acc == cutoff && c > cutlim))
- 42da: 01e30b63 beq t1,t5,42f0 <strtoull.part.0+0xc8>
- any = -1;
- 42de: 537d li t1,-1
- if (any < 0 || acc > cutoff || (acc == cutoff && c > cutlim))
- 42e0: 00a8e863 bltu a7,a0,42f0 <strtoull.part.0+0xc8>
- 42e4: 05150e63 beq a0,a7,4340 <strtoull.part.0+0x118>
- else
- {
- any = 1;
- 42e8: 4305 li t1,1
- acc *= base;
- 42ea: 02550533 mul a0,a0,t0
- acc += c;
- 42ee: 953e add a0,a0,a5
- for (acc = 0, any = 0;; c = *s++)
- 42f0: 0805 addi a6,a6,1
- 42f2: fff84703 lbu a4,-1(a6)
- if (isdigit(c))
- 42f6: bf75 j 42b2 <strtoull.part.0+0x8a>
- c = *s++;
- 42f8: 00084703 lbu a4,0(a6)
- 42fc: 00288813 addi a6,a7,2
- 4300: b795 j 4264 <strtoull.part.0+0x3c>
- c -= isupper(c) ? 'A' - 10 : 'a' - 10;
- 4302: 05700793 li a5,87
- 4306: 40f707bb subw a5,a4,a5
- 430a: b7f1 j 42d6 <strtoull.part.0+0xae>
- }
- }
-
- if (any < 0)
- 430c: 57fd li a5,-1
- 430e: 00f30e63 beq t1,a5,432a <strtoull.part.0+0x102>
- {
- acc = ULLONG_MAX;
- errno = ERANGE;
- }
- else if (neg)
- 4312: 00038463 beqz t2,431a <strtoull.part.0+0xf2>
- acc = -acc;
- 4316: 40a00533 neg a0,a0
-
- if (endptr != 0)
- 431a: c589 beqz a1,4324 <strtoull.part.0+0xfc>
- *endptr = (char *)(any ? s - 1 : nptr);
- 431c: 00031f63 bnez t1,433a <strtoull.part.0+0x112>
- 4320: 01d5b023 sd t4,0(a1)
-
- return acc;
-}
- 4324: 6422 ld s0,8(sp)
- 4326: 0141 addi sp,sp,16
- 4328: 8082 ret
- errno = ERANGE;
- 432a: 02200793 li a5,34
- 432e: 00003717 auipc a4,0x3
- 4332: 34f72923 sw a5,850(a4) # 7680 <errno>
- acc = ULLONG_MAX;
- 4336: 557d li a0,-1
- if (endptr != 0)
- 4338: d5f5 beqz a1,4324 <strtoull.part.0+0xfc>
- *endptr = (char *)(any ? s - 1 : nptr);
- 433a: fff80e93 addi t4,a6,-1
- 433e: b7cd j 4320 <strtoull.part.0+0xf8>
- if (any < 0 || acc > cutoff || (acc == cutoff && c > cutlim))
- 4340: faf448e3 blt s0,a5,42f0 <strtoull.part.0+0xc8>
- 4344: b755 j 42e8 <strtoull.part.0+0xc0>
- c = *s++;
- 4346: 00084703 lbu a4,0(a6)
- neg = 1;
- 434a: 4385 li t2,1
- c = *s++;
- 434c: 00288813 addi a6,a7,2
- 4350: bf11 j 4264 <strtoull.part.0+0x3c>
- if ((base == 0 || base == 16) && c == '0' && (*s == 'x' || *s == 'X'))
- 4352: 00084783 lbu a5,0(a6)
- 4356: 05800693 li a3,88
- 435a: 0df7f793 andi a5,a5,223
- 435e: 02d78b63 beq a5,a3,4394 <strtoull.part.0+0x16c>
- 4362: 58fd li a7,-1
- 4364: 441d li s0,7
- 4366: 0038d893 srli a7,a7,0x3
- 436a: 42a1 li t0,8
- base = (c == '0' ? 8 : 10);
- 436c: 4621 li a2,8
- 436e: bf2d j 42a8 <strtoull.part.0+0x80>
- if ((base == 0 || base == 16) && c == '0' && (*s == 'x' || *s == 'X'))
- 4370: 03000793 li a5,48
- 4374: 00f70863 beq a4,a5,4384 <strtoull.part.0+0x15c>
- 4378: 58fd li a7,-1
- 437a: 443d li s0,15
- 437c: 0048d893 srli a7,a7,0x4
- 4380: 42c1 li t0,16
- 4382: b71d j 42a8 <strtoull.part.0+0x80>
- 4384: 00084783 lbu a5,0(a6)
- 4388: 05800693 li a3,88
- 438c: 0df7f793 andi a5,a5,223
- 4390: fed794e3 bne a5,a3,4378 <strtoull.part.0+0x150>
- s += 2;
- 4394: 58fd li a7,-1
- c = s[1];
- 4396: 00184703 lbu a4,1(a6)
- s += 2;
- 439a: 443d li s0,15
- 439c: 0809 addi a6,a6,2
- 439e: 0048d893 srli a7,a7,0x4
- 43a2: 42c1 li t0,16
- base = 16;
- 43a4: 4641 li a2,16
- 43a6: b709 j 42a8 <strtoull.part.0+0x80>
-
-00000000000043a8 <atexit>:
- if (__atexit_func_count >= ATEXIT_MAX)
- 43a8: 00003717 auipc a4,0x3
- 43ac: 2d870713 addi a4,a4,728 # 7680 <errno>
- 43b0: 435c lw a5,4(a4)
- 43b2: 46fd li a3,31
- 43b4: 00f6ca63 blt a3,a5,43c8 <atexit+0x20>
- __atexit_funcs[__atexit_func_count++] = function;
- 43b8: 00379693 slli a3,a5,0x3
- 43bc: 96ba add a3,a3,a4
- 43be: 2785 addiw a5,a5,1
- 43c0: e688 sd a0,8(a3)
- 43c2: c35c sw a5,4(a4)
- return 0;
- 43c4: 4501 li a0,0
- 43c6: 8082 ret
- return -1;
- 43c8: 557d li a0,-1
-}
- 43ca: 8082 ret
-
-00000000000043cc <exit>:
-{
- 43cc: 1101 addi sp,sp,-32
- 43ce: e822 sd s0,16(sp)
- while (__atexit_func_count > 0)
- 43d0: 00003417 auipc s0,0x3
- 43d4: 2b040413 addi s0,s0,688 # 7680 <errno>
- 43d8: 405c lw a5,4(s0)
-{
- 43da: e426 sd s1,8(sp)
- 43dc: ec06 sd ra,24(sp)
- 43de: 84aa mv s1,a0
- while (__atexit_func_count > 0)
- 43e0: 00f05d63 blez a5,43fa <exit+0x2e>
- (__atexit_funcs[--__atexit_func_count])();
- 43e4: fff7871b addiw a4,a5,-1
- 43e8: 87ba mv a5,a4
- 43ea: 070e slli a4,a4,0x3
- 43ec: 9722 add a4,a4,s0
- 43ee: 6718 ld a4,8(a4)
- 43f0: c05c sw a5,4(s0)
- 43f2: 9702 jalr a4
- while (__atexit_func_count > 0)
- 43f4: 405c lw a5,4(s0)
- 43f6: fef047e3 bgtz a5,43e4 <exit+0x18>
- sys_exit(status);
- 43fa: 8526 mv a0,s1
- 43fc: c8bfb0ef jal 86 <sys_exit>
- while (1)
- 4400: a001 j 4400 <exit+0x34>
-
-0000000000004402 <abort>:
-{
- 4402: 1141 addi sp,sp,-16
- exit(127);
- 4404: 07f00513 li a0,127
-{
- 4408: e406 sd ra,8(sp)
- exit(127);
- 440a: fc3ff0ef jal 43cc <exit>
-
-000000000000440e <getenv>:
-}
- 440e: 4501 li a0,0
- 4410: 8082 ret
-
-0000000000004412 <system>:
-}
- 4412: 557d li a0,-1
- 4414: 8082 ret
-
-0000000000004416 <free>:
- if (!ptr)
- 4416: c121 beqz a0,4456 <free+0x40>
- for (p = freep; !(bp > p && bp < p->next); p = p->next)
- 4418: 00003617 auipc a2,0x3
- 441c: 26860613 addi a2,a2,616 # 7680 <errno>
- 4420: 10863783 ld a5,264(a2)
- bp = (header_t *)ptr - 1;
- 4424: ff050693 addi a3,a0,-16
- if (p >= p->next && (bp > p || bp < p->next))
- 4428: 6798 ld a4,8(a5)
- for (p = freep; !(bp > p && bp < p->next); p = p->next)
- 442a: 02d7f763 bgeu a5,a3,4458 <free+0x42>
- 442e: 00e6e463 bltu a3,a4,4436 <free+0x20>
- if (p >= p->next && (bp > p || bp < p->next))
- 4432: 02e7e763 bltu a5,a4,4460 <free+0x4a>
- if ((char *)bp + bp->size == (char *)p->next)
- 4436: ff053583 ld a1,-16(a0)
- 443a: 00b68833 add a6,a3,a1
- 443e: 03070363 beq a4,a6,4464 <free+0x4e>
- if ((char *)p + p->size == (char *)bp)
- 4442: 638c ld a1,0(a5)
- 4444: fee53c23 sd a4,-8(a0)
- 4448: 00b78833 add a6,a5,a1
- 444c: 03068963 beq a3,a6,447e <free+0x68>
- 4450: e794 sd a3,8(a5)
- freep = p;
- 4452: 10f63423 sd a5,264(a2)
-}
- 4456: 8082 ret
- if (p >= p->next && (bp > p || bp < p->next))
- 4458: 00e7e463 bltu a5,a4,4460 <free+0x4a>
- 445c: fce6ede3 bltu a3,a4,4436 <free+0x20>
-{
- 4460: 87ba mv a5,a4
- 4462: b7d9 j 4428 <free+0x12>
- bp->size += p->next->size;
- 4464: 00073803 ld a6,0(a4)
- bp->next = p->next->next;
- 4468: 6718 ld a4,8(a4)
- bp->size += p->next->size;
- 446a: 95c2 add a1,a1,a6
- 446c: feb53823 sd a1,-16(a0)
- if ((char *)p + p->size == (char *)bp)
- 4470: 638c ld a1,0(a5)
- 4472: fee53c23 sd a4,-8(a0)
- 4476: 00b78833 add a6,a5,a1
- 447a: fd069be3 bne a3,a6,4450 <free+0x3a>
- p->size += bp->size;
- 447e: ff053503 ld a0,-16(a0)
- p->next = bp->next;
- 4482: 86ba mv a3,a4
- p->size += bp->size;
- 4484: 00b50733 add a4,a0,a1
- 4488: e398 sd a4,0(a5)
- p->next = bp->next;
- 448a: b7d9 j 4450 <free+0x3a>
-
-000000000000448c <malloc>:
- if (size == 0)
- 448c: c169 beqz a0,454e <malloc+0xc2>
-{
- 448e: 7179 addi sp,sp,-48
- 4490: ec26 sd s1,24(sp)
- if ((prevp = freep) == NULL)
- 4492: 00003497 auipc s1,0x3
- 4496: 1ee48493 addi s1,s1,494 # 7680 <errno>
- 449a: 1084b783 ld a5,264(s1)
-{
- 449e: f022 sd s0,32(sp)
- size = ALIGN(size + sizeof(header_t));
- 44a0: 057d addi a0,a0,31
-{
- 44a2: f406 sd ra,40(sp)
- size = ALIGN(size + sizeof(header_t));
- 44a4: ff057413 andi s0,a0,-16
- if ((prevp = freep) == NULL)
- 44a8: c3d1 beqz a5,452c <malloc+0xa0>
- for (p = prevp->next;; prevp = p, p = p->next)
- 44aa: 6788 ld a0,8(a5)
- if (p->size >= size)
- 44ac: 6118 ld a4,0(a0)
- 44ae: 06877163 bgeu a4,s0,4510 <malloc+0x84>
- 44b2: e44e sd s3,8(sp)
- 44b4: e052 sd s4,0(sp)
- 44b6: e84a sd s2,16(sp)
- if (nu < 4096)
- 44b8: 6a05 lui s4,0x1
- if (cp == (void *)-1)
- 44ba: 59fd li s3,-1
- 44bc: a029 j 44c6 <malloc+0x3a>
- for (p = prevp->next;; prevp = p, p = p->next)
- 44be: 6788 ld a0,8(a5)
- if (p->size >= size)
- 44c0: 6118 ld a4,0(a0)
- 44c2: 04877463 bgeu a4,s0,450a <malloc+0x7e>
- if (p == freep)
- 44c6: 1084b703 ld a4,264(s1)
- 44ca: 87aa mv a5,a0
- 44cc: fee519e3 bne a0,a4,44be <malloc+0x32>
- if (nu < 4096)
- 44d0: 8922 mv s2,s0
- 44d2: 01447363 bgeu s0,s4,44d8 <malloc+0x4c>
- 44d6: 6905 lui s2,0x1
- cp = (char *)sbrk(nu);
- 44d8: 854a mv a0,s2
- 44da: c3dfb0ef jal 116 <sbrk>
- 44de: 87aa mv a5,a0
- free((void *)(up + 1));
- 44e0: 0541 addi a0,a0,16
- if (cp == (void *)-1)
- 44e2: 01378963 beq a5,s3,44f4 <malloc+0x68>
- up->size = nu;
- 44e6: 0127b023 sd s2,0(a5)
- free((void *)(up + 1));
- 44ea: f2dff0ef jal 4416 <free>
- return freep;
- 44ee: 1084b783 ld a5,264(s1)
- if ((p = morecore(size)) == NULL)
- 44f2: f7f1 bnez a5,44be <malloc+0x32>
-}
- 44f4: 70a2 ld ra,40(sp)
- 44f6: 7402 ld s0,32(sp)
- errno = ENOMEM;
- 44f8: 47b1 li a5,12
- 44fa: c09c sw a5,0(s1)
- return NULL;
- 44fc: 6942 ld s2,16(sp)
- 44fe: 69a2 ld s3,8(sp)
- 4500: 6a02 ld s4,0(sp)
-}
- 4502: 64e2 ld s1,24(sp)
- return NULL;
- 4504: 4501 li a0,0
-}
- 4506: 6145 addi sp,sp,48
- 4508: 8082 ret
- 450a: 6942 ld s2,16(sp)
- 450c: 69a2 ld s3,8(sp)
- 450e: 6a02 ld s4,0(sp)
- if (p->size == size)
- 4510: 02e40c63 beq s0,a4,4548 <malloc+0xbc>
- p->size -= size;
- 4514: 8f01 sub a4,a4,s0
- 4516: e118 sd a4,0(a0)
- p = (header_t *)((char *)p + p->size);
- 4518: 953a add a0,a0,a4
- p->size = size;
- 451a: e100 sd s0,0(a0)
-}
- 451c: 70a2 ld ra,40(sp)
- 451e: 7402 ld s0,32(sp)
- freep = prevp;
- 4520: 10f4b423 sd a5,264(s1)
- return (void *)(p + 1);
- 4524: 0541 addi a0,a0,16
-}
- 4526: 64e2 ld s1,24(sp)
- 4528: 6145 addi sp,sp,48
- 452a: 8082 ret
- base.next = freep = prevp = &base;
- 452c: 00003517 auipc a0,0x3
- 4530: 26450513 addi a0,a0,612 # 7790 <base>
- 4534: 10a4b423 sd a0,264(s1)
- 4538: 10a4bc23 sd a0,280(s1)
- base.size = 0;
- 453c: 00003797 auipc a5,0x3
- 4540: 2407ba23 sd zero,596(a5) # 7790 <base>
- if (p->size >= size)
- 4544: f43d bnez s0,44b2 <malloc+0x26>
- base.next = freep = prevp = &base;
- 4546: 87aa mv a5,a0
- prevp->next = p->next;
- 4548: 6518 ld a4,8(a0)
- 454a: e798 sd a4,8(a5)
- 454c: bfc1 j 451c <malloc+0x90>
- return NULL;
- 454e: 4501 li a0,0
-}
- 4550: 8082 ret
-
-0000000000004552 <calloc>:
- if (__builtin_mul_overflow(nmemb, size, &total))
- 4552: 02b537b3 mulhu a5,a0,a1
-{
- 4556: 1101 addi sp,sp,-32
- 4558: e822 sd s0,16(sp)
- 455a: ec06 sd ra,24(sp)
- 455c: e426 sd s1,8(sp)
- if (__builtin_mul_overflow(nmemb, size, &total))
- 455e: 02b50433 mul s0,a0,a1
- 4562: e385 bnez a5,4582 <calloc+0x30>
- void *p = malloc(total);
- 4564: 8522 mv a0,s0
- 4566: f27ff0ef jal 448c <malloc>
- 456a: 84aa mv s1,a0
- if (p)
- 456c: c509 beqz a0,4576 <calloc+0x24>
- memset(p, 0, total);
- 456e: 8622 mv a2,s0
- 4570: 4581 li a1,0
- 4572: 524000ef jal 4a96 <memset>
-}
- 4576: 60e2 ld ra,24(sp)
- 4578: 6442 ld s0,16(sp)
- 457a: 8526 mv a0,s1
- 457c: 64a2 ld s1,8(sp)
- 457e: 6105 addi sp,sp,32
- 4580: 8082 ret
- 4582: 60e2 ld ra,24(sp)
- 4584: 6442 ld s0,16(sp)
- errno = ENOMEM;
- 4586: 47b1 li a5,12
- return NULL;
- 4588: 4481 li s1,0
- errno = ENOMEM;
- 458a: 00003717 auipc a4,0x3
- 458e: 0ef72b23 sw a5,246(a4) # 7680 <errno>
-}
- 4592: 8526 mv a0,s1
- 4594: 64a2 ld s1,8(sp)
- 4596: 6105 addi sp,sp,32
- 4598: 8082 ret
-
-000000000000459a <realloc>:
- if (!ptr)
- 459a: c929 beqz a0,45ec <realloc+0x52>
-{
- 459c: 1101 addi sp,sp,-32
- 459e: ec06 sd ra,24(sp)
- 45a0: e426 sd s1,8(sp)
- if (size == 0)
- 45a2: c5b9 beqz a1,45f0 <realloc+0x56>
- if (bp->size >= new_size)
- 45a4: ff053703 ld a4,-16(a0)
- size_t new_size = ALIGN(size + sizeof(header_t));
- 45a8: 01f58793 addi a5,a1,31
- 45ac: e822 sd s0,16(sp)
- 45ae: 9bc1 andi a5,a5,-16
- 45b0: 842a mv s0,a0
- return ptr;
- 45b2: 84aa mv s1,a0
- if (bp->size >= new_size)
- 45b4: 00f76863 bltu a4,a5,45c4 <realloc+0x2a>
- 45b8: 6442 ld s0,16(sp)
-}
- 45ba: 60e2 ld ra,24(sp)
- 45bc: 8526 mv a0,s1
- 45be: 64a2 ld s1,8(sp)
- 45c0: 6105 addi sp,sp,32
- 45c2: 8082 ret
- void *new_ptr = malloc(size);
- 45c4: 852e mv a0,a1
- 45c6: ec7ff0ef jal 448c <malloc>
- 45ca: 84aa mv s1,a0
- if (!new_ptr)
- 45cc: d575 beqz a0,45b8 <realloc+0x1e>
- memcpy(new_ptr, ptr, bp->size - sizeof(header_t));
- 45ce: ff043603 ld a2,-16(s0)
- 45d2: 85a2 mv a1,s0
- 45d4: 1641 addi a2,a2,-16
- 45d6: 514000ef jal 4aea <memcpy>
- free(ptr);
- 45da: 8522 mv a0,s0
- 45dc: e3bff0ef jal 4416 <free>
-}
- 45e0: 60e2 ld ra,24(sp)
- free(ptr);
- 45e2: 6442 ld s0,16(sp)
-}
- 45e4: 8526 mv a0,s1
- 45e6: 64a2 ld s1,8(sp)
- 45e8: 6105 addi sp,sp,32
- 45ea: 8082 ret
- return malloc(size);
- 45ec: 852e mv a0,a1
- 45ee: bd79 j 448c <malloc>
- free(ptr);
- 45f0: e27ff0ef jal 4416 <free>
- return NULL;
- 45f4: 4481 li s1,0
- 45f6: b7d1 j 45ba <realloc+0x20>
-
-00000000000045f8 <strtoull>:
- if (base < 0 || base == 1 || base > 36)
- 45f8: 02400813 li a6,36
-{
- 45fc: 86aa mv a3,a0
- 45fe: 872e mv a4,a1
- if (base < 0 || base == 1 || base > 36)
- 4600: 00c86663 bltu a6,a2,460c <strtoull+0x14>
- 4604: 4805 li a6,1
- 4606: 01060363 beq a2,a6,460c <strtoull+0x14>
- 460a: b939 j 4228 <strtoull.part.0>
- if (endptr)
- 460c: c311 beqz a4,4610 <strtoull+0x18>
- *endptr = (char *)nptr;
- 460e: e314 sd a3,0(a4)
- errno = 0; /* EINVAL */
- 4610: 00003797 auipc a5,0x3
- 4614: 0607a823 sw zero,112(a5) # 7680 <errno>
-}
- 4618: 4501 li a0,0
- 461a: 8082 ret
-
-000000000000461c <strtoll>:
-
-long long strtoll(const char *nptr, char **endptr, int base)
-{
- 461c: 1141 addi sp,sp,-16
- 461e: e406 sd ra,8(sp)
- 4620: e022 sd s0,0(sp)
- const char *s = nptr;
- 4622: 86aa mv a3,a0
- static inline int isspace(int c) { return c == ' ' || c == '\t' || c == '\n' || c == '\v' || c == '\f' || c == '\r'; }
- 4624: 02000813 li a6,32
- 4628: 4891 li a7,4
- unsigned long long acc;
- int c, neg = 0;
-
- do
- {
- c = *s++;
- 462a: 0006c783 lbu a5,0(a3)
- 462e: 0685 addi a3,a3,1
- 4630: ff77871b addiw a4,a5,-9
- 4634: 0ff77713 zext.b a4,a4
- 4638: 0007841b sext.w s0,a5
- 463c: ff0787e3 beq a5,a6,462a <strtoll+0xe>
- 4640: fee8f5e3 bgeu a7,a4,462a <strtoll+0xe>
- if (base < 0 || base == 1 || base > 36)
- 4644: 02400793 li a5,36
- 4648: 02c7ec63 bltu a5,a2,4680 <strtoll+0x64>
- 464c: 4785 li a5,1
- 464e: 02f60963 beq a2,a5,4680 <strtoll+0x64>
- 4652: bd7ff0ef jal 4228 <strtoull.part.0>
- if (c == '-')
- neg = 1;
-
- acc = strtoull(nptr, endptr, base);
-
- if (errno == ERANGE && acc == ULLONG_MAX)
- 4656: 00003797 auipc a5,0x3
- 465a: 02a78793 addi a5,a5,42 # 7680 <errno>
- 465e: 4394 lw a3,0(a5)
- 4660: 02200713 li a4,34
- 4664: 04e68363 beq a3,a4,46aa <strtoll+0x8e>
- return neg ? LLONG_MIN : LLONG_MAX;
-
- if (!neg && acc > (unsigned long long)LLONG_MAX)
- 4668: 02d00713 li a4,45
- 466c: 02e40563 beq s0,a4,4696 <strtoll+0x7a>
- 4670: 00055f63 bgez a0,468e <strtoll+0x72>
- {
- errno = ERANGE;
- 4674: 02200713 li a4,34
- 4678: c398 sw a4,0(a5)
- return neg ? LLONG_MIN : LLONG_MAX;
- 467a: 557d li a0,-1
- 467c: 8105 srli a0,a0,0x1
- 467e: a801 j 468e <strtoll+0x72>
- if (endptr)
- 4680: c191 beqz a1,4684 <strtoll+0x68>
- *endptr = (char *)nptr;
- 4682: e188 sd a0,0(a1)
- errno = 0; /* EINVAL */
- 4684: 00003797 auipc a5,0x3
- 4688: fe07ae23 sw zero,-4(a5) # 7680 <errno>
- {
- errno = ERANGE;
- return LLONG_MIN;
- }
-
- return neg ? -(long long)acc : (long long)acc;
- 468c: 4501 li a0,0
-}
- 468e: 60a2 ld ra,8(sp)
- 4690: 6402 ld s0,0(sp)
- 4692: 0141 addi sp,sp,16
- 4694: 8082 ret
- if (neg && acc > (unsigned long long)LLONG_MAX + 1)
- 4696: 577d li a4,-1
- 4698: 177e slli a4,a4,0x3f
- 469a: 02a76263 bltu a4,a0,46be <strtoll+0xa2>
-}
- 469e: 60a2 ld ra,8(sp)
- 46a0: 6402 ld s0,0(sp)
- return neg ? -(long long)acc : (long long)acc;
- 46a2: 40a00533 neg a0,a0
-}
- 46a6: 0141 addi sp,sp,16
- 46a8: 8082 ret
- if (errno == ERANGE && acc == ULLONG_MAX)
- 46aa: 577d li a4,-1
- 46ac: fae51ee3 bne a0,a4,4668 <strtoll+0x4c>
- return neg ? LLONG_MIN : LLONG_MAX;
- 46b0: 02d00793 li a5,45
- 46b4: fcf413e3 bne s0,a5,467a <strtoll+0x5e>
- return LLONG_MIN;
- 46b8: 557d li a0,-1
- 46ba: 157e slli a0,a0,0x3f
- 46bc: bfc9 j 468e <strtoll+0x72>
- errno = ERANGE;
- 46be: 02200713 li a4,34
- 46c2: c398 sw a4,0(a5)
- return LLONG_MIN;
- 46c4: bfd5 j 46b8 <strtoll+0x9c>
-
-00000000000046c6 <strtoul>:
- if (base < 0 || base == 1 || base > 36)
- 46c6: 02400813 li a6,36
-
-unsigned long strtoul(const char *nptr, char **endptr, int base)
-{
- 46ca: 86aa mv a3,a0
- 46cc: 872e mv a4,a1
- if (base < 0 || base == 1 || base > 36)
- 46ce: 00c86663 bltu a6,a2,46da <strtoul+0x14>
- 46d2: 4805 li a6,1
- 46d4: 01060363 beq a2,a6,46da <strtoul+0x14>
- 46d8: be81 j 4228 <strtoull.part.0>
- if (endptr)
- 46da: c311 beqz a4,46de <strtoul+0x18>
- *endptr = (char *)nptr;
- 46dc: e314 sd a3,0(a4)
- errno = 0; /* EINVAL */
- 46de: 00003797 auipc a5,0x3
- 46e2: fa07a123 sw zero,-94(a5) # 7680 <errno>
- {
- errno = ERANGE;
- return ULONG_MAX;
- }
- return (unsigned long)ret;
-}
- 46e6: 4501 li a0,0
- 46e8: 8082 ret
-
-00000000000046ea <strtol>:
-
-long strtol(const char *nptr, char **endptr, int base)
-{
- long long ret = strtoll(nptr, endptr, base);
- 46ea: bf0d j 461c <strtoll>
-
-00000000000046ec <atoi>:
- return LONG_MIN;
- }
- return (long)ret;
-}
-
-int atoi(const char *nptr) { return (int)strtol(nptr, NULL, 10); }
- 46ec: 1141 addi sp,sp,-16
- long long ret = strtoll(nptr, endptr, base);
- 46ee: 4629 li a2,10
- 46f0: 4581 li a1,0
-int atoi(const char *nptr) { return (int)strtol(nptr, NULL, 10); }
- 46f2: e406 sd ra,8(sp)
- long long ret = strtoll(nptr, endptr, base);
- 46f4: f29ff0ef jal 461c <strtoll>
-int atoi(const char *nptr) { return (int)strtol(nptr, NULL, 10); }
- 46f8: 60a2 ld ra,8(sp)
- 46fa: 2501 sext.w a0,a0
- 46fc: 0141 addi sp,sp,16
- 46fe: 8082 ret
-
-0000000000004700 <atol>:
- long long ret = strtoll(nptr, endptr, base);
- 4700: 4629 li a2,10
- 4702: 4581 li a1,0
- 4704: bf21 j 461c <strtoll>
-
-0000000000004706 <atoll>:
-long atol(const char *nptr) { return strtol(nptr, NULL, 10); }
-long long atoll(const char *nptr) { return strtoll(nptr, NULL, 10); }
- 4706: 4629 li a2,10
- 4708: 4581 li a1,0
- 470a: bf09 j 461c <strtoll>
-
-000000000000470c <strtod>:
- 470c: 02000693 li a3,32
- 4710: 4611 li a2,4
-{
- double val = 0.0;
- int sign = 1;
- const char *s = nptr;
-
- while (isspace(*s))
- 4712: 00054783 lbu a5,0(a0)
- 4716: ff77871b addiw a4,a5,-9
- 471a: 0ff77713 zext.b a4,a4
- 471e: 06d78263 beq a5,a3,4782 <strtod+0x76>
- 4722: 06e67063 bgeu a2,a4,4782 <strtod+0x76>
- s++;
- if (*s == '-')
- 4726: 02d00713 li a4,45
- 472a: 08e78e63 beq a5,a4,47c6 <strtod+0xba>
- {
- sign = -1;
- s++;
- }
- else if (*s == '+')
- 472e: 02b00713 li a4,43
- 4732: 0ae78263 beq a5,a4,47d6 <strtod+0xca>
- 4736: 00001717 auipc a4,0x1
- 473a: 06273507 fld fa0,98(a4) # 5798 <STDIN_FD+0x10>
- static inline int isdigit(int c) { return c >= '0' && c <= '9'; }
- 473e: fd07861b addiw a2,a5,-48
- s++;
-
- while (isdigit(*s))
- 4742: 46a5 li a3,9
- 4744: f20007d3 fmv.d.x fa5,zero
- 4748: 8732 mv a4,a2
- 474a: 02c6e363 bltu a3,a2,4770 <strtod+0x64>
- 474e: 00001797 auipc a5,0x1
- 4752: 0527b687 fld fa3,82(a5) # 57a0 <STDIN_FD+0x18>
- 4756: 4625 li a2,9
- 4758: 00154783 lbu a5,1(a0)
- {
- val = val * 10.0 + (*s - '0');
- 475c: d2070753 fcvt.d.w fa4,a4
- s++;
- 4760: 0505 addi a0,a0,1
- 4762: fd07869b addiw a3,a5,-48
- val = val * 10.0 + (*s - '0');
- 4766: 72d7f7c3 fmadd.d fa5,fa5,fa3,fa4
- 476a: 8736 mv a4,a3
- while (isdigit(*s))
- 476c: fed676e3 bgeu a2,a3,4758 <strtod+0x4c>
- }
- if (*s == '.')
- 4770: 02e00713 li a4,46
- 4774: 00e78963 beq a5,a4,4786 <strtod+0x7a>
- val += (*s - '0') * factor;
- s++;
- }
- }
-
- if (endptr)
- 4778: c191 beqz a1,477c <strtod+0x70>
- *endptr = (char *)s;
- 477a: e188 sd a0,0(a1)
- return val * sign;
-}
- 477c: 12a7f553 fmul.d fa0,fa5,fa0
- 4780: 8082 ret
- s++;
- 4782: 0505 addi a0,a0,1
- 4784: b779 j 4712 <strtod+0x6>
- while (isdigit(*s))
- 4786: 00154703 lbu a4,1(a0)
- 478a: 46a5 li a3,9
- s++;
- 478c: 0505 addi a0,a0,1
- 478e: fd07071b addiw a4,a4,-48
- 4792: 87ba mv a5,a4
- while (isdigit(*s))
- 4794: fee6e2e3 bltu a3,a4,4778 <strtod+0x6c>
- double factor = 1.0;
- 4798: 00001717 auipc a4,0x1
- 479c: 00073707 fld fa4,0(a4) # 5798 <STDIN_FD+0x10>
- 47a0: 00001717 auipc a4,0x1
- 47a4: 01873607 fld fa2,24(a4) # 57b8 <STDIN_FD+0x30>
- factor *= 0.1;
- 47a8: 12c77753 fmul.d fa4,fa4,fa2
- while (isdigit(*s))
- 47ac: 00154703 lbu a4,1(a0)
- val += (*s - '0') * factor;
- 47b0: d20786d3 fcvt.d.w fa3,a5
- s++;
- 47b4: 0505 addi a0,a0,1
- 47b6: fd07071b addiw a4,a4,-48
- 47ba: 87ba mv a5,a4
- val += (*s - '0') * factor;
- 47bc: 7ae6f7c3 fmadd.d fa5,fa3,fa4,fa5
- while (isdigit(*s))
- 47c0: fee6f4e3 bgeu a3,a4,47a8 <strtod+0x9c>
- 47c4: bf55 j 4778 <strtod+0x6c>
- while (isdigit(*s))
- 47c6: 00154783 lbu a5,1(a0)
- 47ca: 00001717 auipc a4,0x1
- 47ce: fc673507 fld fa0,-58(a4) # 5790 <STDIN_FD+0x8>
- s++;
- 47d2: 0505 addi a0,a0,1
- 47d4: b7ad j 473e <strtod+0x32>
- while (isdigit(*s))
- 47d6: 00154783 lbu a5,1(a0)
- 47da: 00001717 auipc a4,0x1
- 47de: fbe73507 fld fa0,-66(a4) # 5798 <STDIN_FD+0x10>
- s++;
- 47e2: 0505 addi a0,a0,1
- 47e4: bfa9 j 473e <strtod+0x32>
-
-00000000000047e6 <atof>:
-
-double atof(const char *nptr) { return strtod(nptr, NULL); }
- 47e6: 4581 li a1,0
- 47e8: b715 j 470c <strtod>
-
-00000000000047ea <strtof>:
-float strtof(const char *nptr, char **endptr) { return (float)strtod(nptr, endptr); }
- 47ea: 1141 addi sp,sp,-16
- 47ec: e406 sd ra,8(sp)
- 47ee: f1fff0ef jal 470c <strtod>
- 47f2: 60a2 ld ra,8(sp)
- 47f4: 40157553 fcvt.s.d fa0,fa0
- 47f8: 0141 addi sp,sp,16
- 47fa: 8082 ret
-
-00000000000047fc <qsort>:
- }
-}
-
-void qsort(void *base, size_t nmemb, size_t size, int (*compar)(const void *, const void *))
-{
- if (nmemb < 2 || size == 0)
- 47fc: 4785 li a5,1
- 47fe: 0cb7fd63 bgeu a5,a1,48d8 <qsort+0xdc>
-{
- 4802: 715d addi sp,sp,-80
- 4804: f44e sd s3,40(sp)
- 4806: e486 sd ra,72(sp)
- 4808: 89b2 mv s3,a2
- if (nmemb < 2 || size == 0)
- 480a: c279 beqz a2,48d0 <qsort+0xd4>
- 480c: e85a sd s6,16(sp)
- 480e: 8b2e mv s6,a1
- return;
-
- char *base_ptr = (char *)base;
- char *pivot = base_ptr + (nmemb - 1) * size;
- 4810: 1b7d addi s6,s6,-1
- 4812: fc26 sd s1,56(sp)
- 4814: 033b04b3 mul s1,s6,s3
- 4818: ec56 sd s5,24(sp)
- 481a: 8aaa mv s5,a0
- 481c: f052 sd s4,32(sp)
- 481e: e45e sd s7,8(sp)
- 4820: e0a2 sd s0,64(sp)
- 4822: f84a sd s2,48(sp)
- 4824: 8a36 mv s4,a3
- if (nmemb < 2 || size == 0)
- 4826: 4b85 li s7,1
- char *pivot = base_ptr + (nmemb - 1) * size;
- 4828: 94d6 add s1,s1,s5
- char *i = base_ptr;
- char *j = base_ptr;
-
- /* Partition */
- for (; j < pivot; j += size)
- 482a: 069af763 bgeu s5,s1,4898 <qsort+0x9c>
- char *j = base_ptr;
- 482e: 8956 mv s2,s5
- char *i = base_ptr;
- 4830: 8456 mv s0,s5
- 4832: a021 j 483a <qsort+0x3e>
- for (; j < pivot; j += size)
- 4834: 994e add s2,s2,s3
- 4836: 00997f63 bgeu s2,s1,4854 <qsort+0x58>
- {
- if (compar(j, pivot) < 0)
- 483a: 85a6 mv a1,s1
- 483c: 854a mv a0,s2
- 483e: 9a02 jalr s4
- 4840: fe055ae3 bgez a0,4834 <qsort+0x38>
- {
- if (i != j)
- 4844: 05241d63 bne s0,s2,489e <qsort+0xa2>
- 4848: 01390633 add a2,s2,s3
- swap_bytes(i, j, size);
- i += size;
- 484c: 8432 mv s0,a2
- for (; j < pivot; j += size)
- 484e: 994e add s2,s2,s3
- 4850: fe9965e3 bltu s2,s1,483a <qsort+0x3e>
- }
- }
- swap_bytes(i, pivot, size);
-
- /* Recurse */
- size_t left_count = (i - base_ptr) / size;
- 4854: 415405b3 sub a1,s0,s5
- 4858: 0335d5b3 divu a1,a1,s3
- qsort(base, left_count, size, compar);
- qsort(i + size, nmemb - left_count - 1, size, compar);
- 485c: 40bb0b33 sub s6,s6,a1
- while (size--)
- 4860: 013406b3 add a3,s0,s3
- *a++ = *b;
- 4864: 0004c703 lbu a4,0(s1)
- temp = *a;
- 4868: 00044783 lbu a5,0(s0)
- *b++ = temp;
- 486c: 0485 addi s1,s1,1
- *a++ = *b;
- 486e: 0405 addi s0,s0,1
- 4870: fee40fa3 sb a4,-1(s0)
- *b++ = temp;
- 4874: fef48fa3 sb a5,-1(s1)
- while (size--)
- 4878: fed416e3 bne s0,a3,4864 <qsort+0x68>
- qsort(base, left_count, size, compar);
- 487c: 86d2 mv a3,s4
- 487e: 864e mv a2,s3
- 4880: 8556 mv a0,s5
- 4882: f7bff0ef jal 47fc <qsort>
- if (nmemb < 2 || size == 0)
- 4886: 036bfe63 bgeu s7,s6,48c2 <qsort+0xc6>
- char *pivot = base_ptr + (nmemb - 1) * size;
- 488a: 1b7d addi s6,s6,-1
- 488c: 033b04b3 mul s1,s6,s3
- 4890: 8aa2 mv s5,s0
- 4892: 94d6 add s1,s1,s5
- for (; j < pivot; j += size)
- 4894: f89aede3 bltu s5,s1,482e <qsort+0x32>
- char *i = base_ptr;
- 4898: 8456 mv s0,s5
- for (; j < pivot; j += size)
- 489a: 4581 li a1,0
- 489c: b7d1 j 4860 <qsort+0x64>
- 489e: 01340633 add a2,s0,s3
- if (i != j)
- 48a2: 874a mv a4,s2
- 48a4: 87a2 mv a5,s0
- *a++ = *b;
- 48a6: 00074683 lbu a3,0(a4)
- temp = *a;
- 48aa: 0007c803 lbu a6,0(a5)
- *b++ = temp;
- 48ae: 0705 addi a4,a4,1
- *a++ = *b;
- 48b0: 0785 addi a5,a5,1
- 48b2: fed78fa3 sb a3,-1(a5)
- *b++ = temp;
- 48b6: ff070fa3 sb a6,-1(a4)
- while (size--)
- 48ba: fec796e3 bne a5,a2,48a6 <qsort+0xaa>
- i += size;
- 48be: 8432 mv s0,a2
- 48c0: b779 j 484e <qsort+0x52>
- 48c2: 6406 ld s0,64(sp)
- 48c4: 74e2 ld s1,56(sp)
- 48c6: 7942 ld s2,48(sp)
- 48c8: 7a02 ld s4,32(sp)
- 48ca: 6ae2 ld s5,24(sp)
- 48cc: 6b42 ld s6,16(sp)
- 48ce: 6ba2 ld s7,8(sp)
-}
- 48d0: 60a6 ld ra,72(sp)
- 48d2: 79a2 ld s3,40(sp)
- 48d4: 6161 addi sp,sp,80
- 48d6: 8082 ret
- 48d8: 8082 ret
-
-00000000000048da <bsearch>:
-
-void *bsearch(const void *key, const void *base, size_t nmemb, size_t size, int (*compar)(const void *, const void *))
-{
- 48da: 715d addi sp,sp,-80
- 48dc: e486 sd ra,72(sp)
- 48de: fc26 sd s1,56(sp)
- size_t l = 0, u = nmemb;
- while (l < u)
- 48e0: c629 beqz a2,492a <bsearch+0x50>
- 48e2: f84a sd s2,48(sp)
- 48e4: f44e sd s3,40(sp)
- 48e6: f052 sd s4,32(sp)
- 48e8: ec56 sd s5,24(sp)
- 48ea: e85a sd s6,16(sp)
- 48ec: e45e sd s7,8(sp)
- 48ee: e0a2 sd s0,64(sp)
- 48f0: 8932 mv s2,a2
- 48f2: 8a2a mv s4,a0
- 48f4: 8aae mv s5,a1
- 48f6: 8b36 mv s6,a3
- 48f8: 8bba mv s7,a4
- size_t l = 0, u = nmemb;
- 48fa: 4981 li s3,0
- {
- size_t idx = (l + u) / 2;
- 48fc: 01298433 add s0,s3,s2
- 4900: 8005 srli s0,s0,0x1
- const void *p = (void *)((const char *)base + (idx * size));
- 4902: 036404b3 mul s1,s0,s6
- int cmp = compar(key, p);
- 4906: 8552 mv a0,s4
- const void *p = (void *)((const char *)base + (idx * size));
- 4908: 94d6 add s1,s1,s5
- int cmp = compar(key, p);
- 490a: 85a6 mv a1,s1
- 490c: 9b82 jalr s7
- if (cmp < 0)
- 490e: 02054463 bltz a0,4936 <bsearch+0x5c>
- u = idx;
- else if (cmp > 0)
- 4912: c515 beqz a0,493e <bsearch+0x64>
- l = idx + 1;
- 4914: 00140993 addi s3,s0,1
- while (l < u)
- 4918: ff29e2e3 bltu s3,s2,48fc <bsearch+0x22>
- 491c: 6406 ld s0,64(sp)
- 491e: 7942 ld s2,48(sp)
- 4920: 79a2 ld s3,40(sp)
- 4922: 7a02 ld s4,32(sp)
- 4924: 6ae2 ld s5,24(sp)
- 4926: 6b42 ld s6,16(sp)
- 4928: 6ba2 ld s7,8(sp)
- else
- return (void *)p;
- }
- return NULL;
-}
- 492a: 60a6 ld ra,72(sp)
- return NULL;
- 492c: 4481 li s1,0
-}
- 492e: 8526 mv a0,s1
- 4930: 74e2 ld s1,56(sp)
- 4932: 6161 addi sp,sp,80
- 4934: 8082 ret
- u = idx;
- 4936: 8922 mv s2,s0
- while (l < u)
- 4938: fd29e2e3 bltu s3,s2,48fc <bsearch+0x22>
- 493c: b7c5 j 491c <bsearch+0x42>
- 493e: 6406 ld s0,64(sp)
-}
- 4940: 60a6 ld ra,72(sp)
- 4942: 7942 ld s2,48(sp)
- 4944: 79a2 ld s3,40(sp)
- 4946: 7a02 ld s4,32(sp)
- 4948: 6ae2 ld s5,24(sp)
- 494a: 6b42 ld s6,16(sp)
- 494c: 6ba2 ld s7,8(sp)
- 494e: 8526 mv a0,s1
- 4950: 74e2 ld s1,56(sp)
- 4952: 6161 addi sp,sp,80
- 4954: 8082 ret
-
-0000000000004956 <abs>:
-
-/* Math & Mics */
-
-int abs(int j) { return (j < 0) ? -j : j; }
- 4956: 41f5579b sraiw a5,a0,0x1f
- 495a: 8d3d xor a0,a0,a5
- 495c: 9d1d subw a0,a0,a5
- 495e: 8082 ret
-
-0000000000004960 <labs>:
-long labs(long j) { return (j < 0) ? -j : j; }
- 4960: 43f55793 srai a5,a0,0x3f
- 4964: 8d3d xor a0,a0,a5
- 4966: 8d1d sub a0,a0,a5
- 4968: 8082 ret
-
-000000000000496a <llabs>:
-long long llabs(long long j) { return (j < 0) ? -j : j; }
- 496a: 43f55793 srai a5,a0,0x3f
- 496e: 8d3d xor a0,a0,a5
- 4970: 8d1d sub a0,a0,a5
- 4972: 8082 ret
-
-0000000000004974 <div>:
-
-div_t div(int numer, int denom)
-{
- div_t res = {numer / denom, numer % denom};
- 4974: 02b547bb divw a5,a0,a1
-{
- 4978: 1141 addi sp,sp,-16
- return res;
-}
- 497a: 0141 addi sp,sp,16
- div_t res = {numer / denom, numer % denom};
- 497c: 02b5653b remw a0,a0,a1
- return res;
- 4980: 1782 slli a5,a5,0x20
- 4982: 9381 srli a5,a5,0x20
- 4984: 1502 slli a0,a0,0x20
-}
- 4986: 8d5d or a0,a0,a5
- 4988: 8082 ret
-
-000000000000498a <ldiv>:
-ldiv_t ldiv(long numer, long denom)
-{
- 498a: 1141 addi sp,sp,-16
- 498c: 87aa mv a5,a0
- ldiv_t res = {numer / denom, numer % denom};
- return res;
-}
- 498e: 02b54533 div a0,a0,a1
- 4992: 0141 addi sp,sp,16
- 4994: 02b7e5b3 rem a1,a5,a1
- 4998: 8082 ret
-
-000000000000499a <lldiv>:
-lldiv_t lldiv(long long numer, long long denom)
-{
- 499a: 1141 addi sp,sp,-16
- 499c: 87aa mv a5,a0
- lldiv_t res = {numer / denom, numer % denom};
- return res;
-}
- 499e: 02b54533 div a0,a0,a1
- 49a2: 0141 addi sp,sp,16
- 49a4: 02b7e5b3 rem a1,a5,a1
- 49a8: 8082 ret
-
-00000000000049aa <rand>:
-
-static unsigned long next = 1;
-int rand(void)
-{
- next = next * 1103515245 + 12345;
- 49aa: 00003697 auipc a3,0x3
- 49ae: c8e68693 addi a3,a3,-882 # 7638 <next>
- 49b2: 629c ld a5,0(a3)
- 49b4: 41c65737 lui a4,0x41c65
- 49b8: e6d70713 addi a4,a4,-403 # 41c64e6d <_ZSt4cerr+0x41c5d6b5>
- 49bc: 02e787b3 mul a5,a5,a4
- 49c0: 670d lui a4,0x3
- 49c2: 03970713 addi a4,a4,57 # 3039 <_vprintf_core.constprop.0.isra.0+0x1f>
- 49c6: 97ba add a5,a5,a4
- return (unsigned int)(next / 65536) % 32768;
- 49c8: 02179513 slli a0,a5,0x21
- next = next * 1103515245 + 12345;
- 49cc: e29c sd a5,0(a3)
-}
- 49ce: 9145 srli a0,a0,0x31
- 49d0: 8082 ret
-
-00000000000049d2 <srand>:
-void srand(unsigned int seed) { next = seed; }
- 49d2: 1502 slli a0,a0,0x20
- 49d4: 9101 srli a0,a0,0x20
- 49d6: 00003797 auipc a5,0x3
- 49da: c6a7b123 sd a0,-926(a5) # 7638 <next>
- 49de: 8082 ret
-
-00000000000049e0 <mblen>:
-
-/* Stub */
-int mblen(const char *s, size_t n) { return (s && *s && n) ? 1 : 0; }
- 49e0: c901 beqz a0,49f0 <mblen+0x10>
- 49e2: 00054783 lbu a5,0(a0)
- 49e6: 4501 li a0,0
- 49e8: c789 beqz a5,49f2 <mblen+0x12>
- 49ea: 00b03533 snez a0,a1
- 49ee: 8082 ret
- 49f0: 4501 li a0,0
- 49f2: 8082 ret
-
-00000000000049f4 <mbtowc>:
-int mbtowc(wchar_t *pwc, const char *s, size_t n)
-{
- 49f4: 87aa mv a5,a0
- if (!s)
- 49f6: cd81 beqz a1,4a0e <mbtowc+0x1a>
- return 0;
- if (n == 0)
- return -1;
- 49f8: 557d li a0,-1
- if (n == 0)
- 49fa: ca19 beqz a2,4a10 <mbtowc+0x1c>
- if (pwc)
- 49fc: c781 beqz a5,4a04 <mbtowc+0x10>
- *pwc = (wchar_t)*s;
- 49fe: 0005c703 lbu a4,0(a1)
- 4a02: c398 sw a4,0(a5)
- return (*s != 0);
- 4a04: 0005c503 lbu a0,0(a1)
- 4a08: 00a03533 snez a0,a0
- 4a0c: 8082 ret
- return 0;
- 4a0e: 4501 li a0,0
-}
- 4a10: 8082 ret
-
-0000000000004a12 <wctomb>:
-int wctomb(char *s, wchar_t wchar)
-{
- if (!s)
- 4a12: c509 beqz a0,4a1c <wctomb+0xa>
- return 0;
- *s = (char)wchar;
- 4a14: 00b50023 sb a1,0(a0)
- return 1;
- 4a18: 4505 li a0,1
- 4a1a: 8082 ret
- return 0;
- 4a1c: 4501 li a0,0
-}
- 4a1e: 8082 ret
-
-0000000000004a20 <mbstowcs>:
-size_t mbstowcs(wchar_t *dest, const char *src, size_t n)
-{
- size_t i = 0;
- while (src[i] && i < n)
- 4a20: 0005c703 lbu a4,0(a1)
- 4a24: cb0d beqz a4,4a56 <mbstowcs+0x36>
- 4a26: ca15 beqz a2,4a5a <mbstowcs+0x3a>
- 4a28: 86aa mv a3,a0
- size_t i = 0;
- 4a2a: 4781 li a5,0
- 4a2c: a019 j 4a32 <mbstowcs+0x12>
- while (src[i] && i < n)
- 4a2e: 02f60263 beq a2,a5,4a52 <mbstowcs+0x32>
- {
- dest[i] = (wchar_t)src[i];
- i++;
- 4a32: 0785 addi a5,a5,1
- dest[i] = (wchar_t)src[i];
- 4a34: c298 sw a4,0(a3)
- while (src[i] && i < n)
- 4a36: 00f58733 add a4,a1,a5
- 4a3a: 00074703 lbu a4,0(a4)
- 4a3e: 0691 addi a3,a3,4
- 4a40: f77d bnez a4,4a2e <mbstowcs+0xe>
- }
- if (i < n)
- 4a42: 00c7f763 bgeu a5,a2,4a50 <mbstowcs+0x30>
- dest[i] = 0;
- 4a46: 00279713 slli a4,a5,0x2
- 4a4a: 953a add a0,a0,a4
- 4a4c: 00052023 sw zero,0(a0)
- size_t i = 0;
- 4a50: 863e mv a2,a5
- 4a52: 8532 mv a0,a2
- 4a54: 8082 ret
- 4a56: 4781 li a5,0
- 4a58: b7ed j 4a42 <mbstowcs+0x22>
- 4a5a: 4501 li a0,0
- return i;
-}
- 4a5c: 8082 ret
-
-0000000000004a5e <wcstombs>:
-size_t wcstombs(char *dest, const wchar_t *src, size_t n)
-{
- size_t i = 0;
- while (src[i] && i < n)
- 4a5e: 4198 lw a4,0(a1)
- 4a60: c71d beqz a4,4a8e <wcstombs+0x30>
- 4a62: ca05 beqz a2,4a92 <wcstombs+0x34>
- 4a64: 0591 addi a1,a1,4
- size_t i = 0;
- 4a66: 4781 li a5,0
- 4a68: a019 j 4a6e <wcstombs+0x10>
- while (src[i] && i < n)
- 4a6a: 02f60063 beq a2,a5,4a8a <wcstombs+0x2c>
- {
- dest[i] = (char)src[i];
- 4a6e: 00f506b3 add a3,a0,a5
- 4a72: 00e68023 sb a4,0(a3)
- while (src[i] && i < n)
- 4a76: 4198 lw a4,0(a1)
- i++;
- 4a78: 0785 addi a5,a5,1
- while (src[i] && i < n)
- 4a7a: 0591 addi a1,a1,4
- 4a7c: f77d bnez a4,4a6a <wcstombs+0xc>
- }
- if (i < n)
- 4a7e: 00c7f563 bgeu a5,a2,4a88 <wcstombs+0x2a>
- dest[i] = 0;
- 4a82: 953e add a0,a0,a5
- 4a84: 00050023 sb zero,0(a0)
- size_t i = 0;
- 4a88: 863e mv a2,a5
- 4a8a: 8532 mv a0,a2
- 4a8c: 8082 ret
- 4a8e: 4781 li a5,0
- 4a90: b7fd j 4a7e <wcstombs+0x20>
- 4a92: 4501 li a0,0
- return i;
- 4a94: 8082 ret
-
-0000000000004a96 <memset>:
-
-void *memset(void *dst, int c, size_t n)
-{
- char *cdst = (char *)dst;
- for (size_t i = 0; i < n; i++)
- cdst[i] = (char)c;
- 4a96: 0ff5f593 zext.b a1,a1
- 4a9a: 87aa mv a5,a0
- 4a9c: 00a60733 add a4,a2,a0
- for (size_t i = 0; i < n; i++)
- 4aa0: c611 beqz a2,4aac <memset+0x16>
- cdst[i] = (char)c;
- 4aa2: 00b78023 sb a1,0(a5)
- for (size_t i = 0; i < n; i++)
- 4aa6: 0785 addi a5,a5,1
- 4aa8: fee79de3 bne a5,a4,4aa2 <memset+0xc>
- return dst;
-}
- 4aac: 8082 ret
-
-0000000000004aae <memmove>:
-
-void *memmove(void *vdst, const void *vsrc, size_t n)
-{
- char *dst = (char *)vdst;
- const char *src = (const char *)vsrc;
- if (dst == src)
- 4aae: 02b50d63 beq a0,a1,4ae8 <memmove+0x3a>
- return vdst;
-
- if (src > dst)
- 4ab2: 00b57e63 bgeu a0,a1,4ace <memmove+0x20>
- {
- while (n--)
- 4ab6: ca0d beqz a2,4ae8 <memmove+0x3a>
- 4ab8: 962a add a2,a2,a0
- char *dst = (char *)vdst;
- 4aba: 87aa mv a5,a0
- *dst++ = *src++;
- 4abc: 0005c703 lbu a4,0(a1)
- 4ac0: 0785 addi a5,a5,1
- 4ac2: 0585 addi a1,a1,1
- 4ac4: fee78fa3 sb a4,-1(a5)
- while (n--)
- 4ac8: fec79ae3 bne a5,a2,4abc <memmove+0xe>
- 4acc: 8082 ret
- }
- else
- {
- dst += n;
- 4ace: 00c50733 add a4,a0,a2
- src += n;
- 4ad2: 00c587b3 add a5,a1,a2
- while (n-- > 0)
- 4ad6: ca09 beqz a2,4ae8 <memmove+0x3a>
- *--dst = *--src;
- 4ad8: fff7c683 lbu a3,-1(a5)
- 4adc: 17fd addi a5,a5,-1
- 4ade: 177d addi a4,a4,-1
- 4ae0: 00d70023 sb a3,0(a4)
- while (n-- > 0)
- 4ae4: fef59ae3 bne a1,a5,4ad8 <memmove+0x2a>
- }
- return vdst;
-}
- 4ae8: 8082 ret
-
-0000000000004aea <memcpy>:
-
-void *memcpy(void *vdst, const void *vsrc, size_t n)
-{
- return memmove(vdst, vsrc, n);
- 4aea: b7d1 j 4aae <memmove>
-
-0000000000004aec <memcmp>:
-
-int memcmp(const void *s1, const void *s2, size_t n)
-{
- const unsigned char *p1 = (const unsigned char *)s1;
- const unsigned char *p2 = (const unsigned char *)s2;
- while (n--)
- 4aec: c205 beqz a2,4b0c <memcmp+0x20>
- 4aee: 962a add a2,a2,a0
- 4af0: a019 j 4af6 <memcmp+0xa>
- 4af2: 00c50d63 beq a0,a2,4b0c <memcmp+0x20>
- {
- if (*p1 != *p2)
- 4af6: 00054783 lbu a5,0(a0)
- 4afa: 0005c703 lbu a4,0(a1)
- return *p1 - *p2;
- p1++;
- 4afe: 0505 addi a0,a0,1
- p2++;
- 4b00: 0585 addi a1,a1,1
- if (*p1 != *p2)
- 4b02: fee788e3 beq a5,a4,4af2 <memcmp+0x6>
- return *p1 - *p2;
- 4b06: 40e7853b subw a0,a5,a4
- 4b0a: 8082 ret
- }
- return 0;
- 4b0c: 4501 li a0,0
-}
- 4b0e: 8082 ret
-
-0000000000004b10 <memchr>:
-
-void *memchr(const void *s, int c, size_t n)
-{
- const unsigned char *p = (const unsigned char *)s;
- while (n--)
- 4b10: ce09 beqz a2,4b2a <memchr+0x1a>
- {
- if (*p == (unsigned char)c)
- 4b12: 0ff5f593 zext.b a1,a1
- 4b16: 962a add a2,a2,a0
- 4b18: a021 j 4b20 <memchr+0x10>
- return (void *)p;
- p++;
- 4b1a: 0505 addi a0,a0,1
- while (n--)
- 4b1c: 00a60763 beq a2,a0,4b2a <memchr+0x1a>
- if (*p == (unsigned char)c)
- 4b20: 00054783 lbu a5,0(a0)
- 4b24: feb79be3 bne a5,a1,4b1a <memchr+0xa>
- }
- return NULL;
-}
- 4b28: 8082 ret
- return NULL;
- 4b2a: 4501 li a0,0
-}
- 4b2c: 8082 ret
-
-0000000000004b2e <strlen>:
-/* String Manipulation Functions */
-
-size_t strlen(const char *s)
-{
- const char *p = s;
- while (*p)
- 4b2e: 00054783 lbu a5,0(a0)
- 4b32: cb89 beqz a5,4b44 <strlen+0x16>
- const char *p = s;
- 4b34: 87aa mv a5,a0
- while (*p)
- 4b36: 0017c703 lbu a4,1(a5)
- p++;
- 4b3a: 0785 addi a5,a5,1
- while (*p)
- 4b3c: ff6d bnez a4,4b36 <strlen+0x8>
- return (size_t)(p - s);
- 4b3e: 40a78533 sub a0,a5,a0
- 4b42: 8082 ret
- while (*p)
- 4b44: 4501 li a0,0
-}
- 4b46: 8082 ret
-
-0000000000004b48 <strcpy>:
-
-char *strcpy(char *dst, const char *src)
-{
- char *os = dst;
- while ((*dst++ = *src++) != 0)
- 4b48: 87aa mv a5,a0
- 4b4a: 0005c703 lbu a4,0(a1)
- 4b4e: 0785 addi a5,a5,1
- 4b50: 0585 addi a1,a1,1
- 4b52: fee78fa3 sb a4,-1(a5)
- 4b56: fb75 bnez a4,4b4a <strcpy+0x2>
- ;
- return os;
-}
- 4b58: 8082 ret
-
-0000000000004b5a <strncpy>:
-char *strncpy(char *dst, const char *src, size_t n)
-{
- char *os = dst;
- size_t i;
-
- for (i = 0; i < n && src[i] != '\0'; i++)
- 4b5a: 4781 li a5,0
- 4b5c: e619 bnez a2,4b6a <strncpy+0x10>
- 4b5e: 8082 ret
- dst[i] = src[i];
- 4b60: 00e68023 sb a4,0(a3)
- for (i = 0; i < n && src[i] != '\0'; i++)
- 4b64: 0785 addi a5,a5,1
- 4b66: 02f60263 beq a2,a5,4b8a <strncpy+0x30>
- 4b6a: 00f58733 add a4,a1,a5
- 4b6e: 00074703 lbu a4,0(a4)
- dst[i] = src[i];
- 4b72: 00f506b3 add a3,a0,a5
- for (i = 0; i < n && src[i] != '\0'; i++)
- 4b76: f76d bnez a4,4b60 <strncpy+0x6>
-
- for (; i < n; i++)
- 4b78: 00c7f963 bgeu a5,a2,4b8a <strncpy+0x30>
- 4b7c: 87b6 mv a5,a3
- 4b7e: 962a add a2,a2,a0
- dst[i] = '\0';
- 4b80: 00078023 sb zero,0(a5)
- for (; i < n; i++)
- 4b84: 0785 addi a5,a5,1
- 4b86: fec79de3 bne a5,a2,4b80 <strncpy+0x26>
-
- return os;
-}
- 4b8a: 8082 ret
-
-0000000000004b8c <strcat>:
-
-char *strcat(char *dst, const char *src)
-{
- char *os = dst;
- while (*dst)
- 4b8c: 00054783 lbu a5,0(a0)
- 4b90: cf91 beqz a5,4bac <strcat+0x20>
- 4b92: 87aa mv a5,a0
- 4b94: 0017c703 lbu a4,1(a5)
- dst++;
- 4b98: 0785 addi a5,a5,1
- while (*dst)
- 4b9a: ff6d bnez a4,4b94 <strcat+0x8>
- while ((*dst++ = *src++) != 0)
- 4b9c: 0005c703 lbu a4,0(a1)
- 4ba0: 0785 addi a5,a5,1
- 4ba2: 0585 addi a1,a1,1
- 4ba4: fee78fa3 sb a4,-1(a5)
- 4ba8: fb75 bnez a4,4b9c <strcat+0x10>
- ;
- return os;
-}
- 4baa: 8082 ret
- while ((*dst++ = *src++) != 0)
- 4bac: 0005c703 lbu a4,0(a1)
- while (*dst)
- 4bb0: 87aa mv a5,a0
- while ((*dst++ = *src++) != 0)
- 4bb2: 0785 addi a5,a5,1
- 4bb4: fee78fa3 sb a4,-1(a5)
- 4bb8: 0585 addi a1,a1,1
- 4bba: f36d bnez a4,4b9c <strcat+0x10>
- 4bbc: 8082 ret
-
-0000000000004bbe <strncat>:
- while (*p)
- 4bbe: 00054783 lbu a5,0(a0)
- const char *p = s;
- 4bc2: 872a mv a4,a0
- while (*p)
- 4bc4: c789 beqz a5,4bce <strncat+0x10>
- 4bc6: 00174783 lbu a5,1(a4)
- p++;
- 4bca: 0705 addi a4,a4,1
- while (*p)
- 4bcc: ffed bnez a5,4bc6 <strncat+0x8>
- size_t dest_len = strlen(dst);
- size_t i;
-
- dst += dest_len;
-
- for (i = 0; i < n && src[i] != '\0'; i++)
- 4bce: 86ba mv a3,a4
- 4bd0: 4781 li a5,0
- 4bd2: 88ba mv a7,a4
- 4bd4: ea01 bnez a2,4be4 <strncat+0x26>
- 4bd6: a839 j 4bf4 <strncat+0x36>
- dst[i] = src[i];
- 4bd8: 01068023 sb a6,0(a3)
- for (i = 0; i < n && src[i] != '\0'; i++)
- 4bdc: 00188693 addi a3,a7,1
- 4be0: 00f60d63 beq a2,a5,4bfa <strncat+0x3c>
- 4be4: 00f58833 add a6,a1,a5
- 4be8: 00084803 lbu a6,0(a6)
- 4bec: 0785 addi a5,a5,1
- dst[i] = src[i];
- 4bee: 88b6 mv a7,a3
- for (i = 0; i < n && src[i] != '\0'; i++)
- 4bf0: fe0814e3 bnez a6,4bd8 <strncat+0x1a>
-
- dst[i] = '\0';
- 4bf4: 00088023 sb zero,0(a7)
-
- return os;
-}
- 4bf8: 8082 ret
- dst[i] = '\0';
- 4bfa: 00c708b3 add a7,a4,a2
- 4bfe: 00088023 sb zero,0(a7)
-}
- 4c02: 8082 ret
-
-0000000000004c04 <strcmp>:
-
-int strcmp(const char *p, const char *q)
-{
- while (*p && *p == *q)
- 4c04: 00054783 lbu a5,0(a0)
- 4c08: e791 bnez a5,4c14 <strcmp+0x10>
- 4c0a: a02d j 4c34 <strcmp+0x30>
- 4c0c: 00054783 lbu a5,0(a0)
- 4c10: cf89 beqz a5,4c2a <strcmp+0x26>
- 4c12: 85b6 mv a1,a3
- 4c14: 0005c703 lbu a4,0(a1)
- {
- p++;
- 4c18: 0505 addi a0,a0,1
- q++;
- 4c1a: 00158693 addi a3,a1,1
- while (*p && *p == *q)
- 4c1e: fef707e3 beq a4,a5,4c0c <strcmp+0x8>
- }
- return (int)((unsigned char)*p - (unsigned char)*q);
- 4c22: 0007851b sext.w a0,a5
-}
- 4c26: 9d19 subw a0,a0,a4
- 4c28: 8082 ret
- return (int)((unsigned char)*p - (unsigned char)*q);
- 4c2a: 0015c703 lbu a4,1(a1)
- 4c2e: 4501 li a0,0
-}
- 4c30: 9d19 subw a0,a0,a4
- 4c32: 8082 ret
- return (int)((unsigned char)*p - (unsigned char)*q);
- 4c34: 0005c703 lbu a4,0(a1)
- 4c38: 4501 li a0,0
- 4c3a: b7f5 j 4c26 <strcmp+0x22>
-
-0000000000004c3c <strncmp>:
-
-int strncmp(const char *s1, const char *s2, size_t n)
-{
- if (n == 0)
- 4c3c: ca0d beqz a2,4c6e <strncmp+0x32>
- return 0;
-
- while (n-- > 0 && *s1 && *s1 == *s2)
- 4c3e: 00054783 lbu a5,0(a0)
- 4c42: 167d addi a2,a2,-1
- 4c44: 00c506b3 add a3,a0,a2
- 4c48: eb89 bnez a5,4c5a <strncmp+0x1e>
- 4c4a: a80d j 4c7c <strncmp+0x40>
- {
- if (n == 0 || *s1 == '\0')
- 4c4c: 00d50d63 beq a0,a3,4c66 <strncmp+0x2a>
- while (n-- > 0 && *s1 && *s1 == *s2)
- 4c50: 00154783 lbu a5,1(a0)
- break;
- s1++;
- 4c54: 0505 addi a0,a0,1
- while (n-- > 0 && *s1 && *s1 == *s2)
- 4c56: cf91 beqz a5,4c72 <strncmp+0x36>
- 4c58: 85b2 mv a1,a2
- 4c5a: 0005c703 lbu a4,0(a1)
- s2++;
- 4c5e: 00158613 addi a2,a1,1
- while (n-- > 0 && *s1 && *s1 == *s2)
- 4c62: fef705e3 beq a4,a5,4c4c <strncmp+0x10>
- }
- return (int)((unsigned char)*s1 - (unsigned char)*s2);
- 4c66: 0007851b sext.w a0,a5
- 4c6a: 9d19 subw a0,a0,a4
- 4c6c: 8082 ret
- return 0;
- 4c6e: 4501 li a0,0
-}
- 4c70: 8082 ret
- return (int)((unsigned char)*s1 - (unsigned char)*s2);
- 4c72: 0015c703 lbu a4,1(a1)
- 4c76: 4501 li a0,0
- 4c78: 9d19 subw a0,a0,a4
- 4c7a: 8082 ret
- 4c7c: 0005c703 lbu a4,0(a1)
- 4c80: 4501 li a0,0
- 4c82: b7e5 j 4c6a <strncmp+0x2e>
-
-0000000000004c84 <strchr>:
-
-char *strchr(const char *s, int c)
-{
- while (*s != (char)c)
- 4c84: 0ff5f593 zext.b a1,a1
- 4c88: a019 j 4c8e <strchr+0xa>
- {
- if (!*s++)
- 4c8a: 0505 addi a0,a0,1
- 4c8c: c791 beqz a5,4c98 <strchr+0x14>
- while (*s != (char)c)
- 4c8e: 00054783 lbu a5,0(a0)
- 4c92: feb79ce3 bne a5,a1,4c8a <strchr+0x6>
- 4c96: 8082 ret
- return NULL;
- 4c98: 4501 li a0,0
- }
- return (char *)s;
-}
- 4c9a: 8082 ret
-
-0000000000004c9c <strrchr>:
-
-char *strrchr(const char *s, int c)
-{
- 4c9c: 87aa mv a5,a0
- const char *last = NULL;
- do
- {
- if (*s == (char)c)
- 4c9e: 0ff5f593 zext.b a1,a1
- const char *last = NULL;
- 4ca2: 4501 li a0,0
- if (*s == (char)c)
- 4ca4: 0007c703 lbu a4,0(a5)
- 4ca8: 00e59363 bne a1,a4,4cae <strrchr+0x12>
- last = s;
- 4cac: 853e mv a0,a5
- } while (*s++);
- 4cae: 0785 addi a5,a5,1
- 4cb0: fb75 bnez a4,4ca4 <strrchr+0x8>
-
- return (char *)last;
-}
- 4cb2: 8082 ret
-
-0000000000004cb4 <strstr>:
- while (*p)
- 4cb4: 0005c883 lbu a7,0(a1)
- 4cb8: 04088a63 beqz a7,4d0c <strstr+0x58>
- const char *p = s;
- 4cbc: 87ae mv a5,a1
- while (*p)
- 4cbe: 0017c703 lbu a4,1(a5)
- p++;
- 4cc2: 0785 addi a5,a5,1
- while (*p)
- 4cc4: ff6d bnez a4,4cbe <strstr+0xa>
- return (size_t)(p - s);
- 4cc6: 40b78833 sub a6,a5,a1
-
-
-char *strstr(const char *haystack, const char *needle)
-{
- size_t n_len = strlen(needle);
- if (n_len == 0)
- 4cca: 04b78163 beq a5,a1,4d0c <strstr+0x58>
- return (char *)haystack;
-
- for (; *haystack; haystack++)
- 4cce: 00054783 lbu a5,0(a0)
- 4cd2: cf85 beqz a5,4d0a <strstr+0x56>
- 4cd4: 187d addi a6,a6,-1
- 4cd6: 982a add a6,a6,a0
- {
- if (*haystack != *needle)
- 4cd8: 02f89463 bne a7,a5,4d00 <strstr+0x4c>
- while (n-- > 0 && *s1 && *s1 == *s2)
- 4cdc: 00054703 lbu a4,0(a0)
- 4ce0: 8646 mv a2,a7
- 4ce2: 86ae mv a3,a1
- 4ce4: 87aa mv a5,a0
- 4ce6: eb11 bnez a4,4cfa <strstr+0x46>
- 4ce8: a821 j 4d00 <strstr+0x4c>
- if (n == 0 || *s1 == '\0')
- 4cea: 03078163 beq a5,a6,4d0c <strstr+0x58>
- while (n-- > 0 && *s1 && *s1 == *s2)
- 4cee: 0017c703 lbu a4,1(a5)
- return (int)((unsigned char)*s1 - (unsigned char)*s2);
- 4cf2: 0006c603 lbu a2,0(a3)
- s1++;
- 4cf6: 0785 addi a5,a5,1
- while (n-- > 0 && *s1 && *s1 == *s2)
- 4cf8: cb19 beqz a4,4d0e <strstr+0x5a>
- s2++;
- 4cfa: 0685 addi a3,a3,1
- while (n-- > 0 && *s1 && *s1 == *s2)
- 4cfc: fee607e3 beq a2,a4,4cea <strstr+0x36>
- for (; *haystack; haystack++)
- 4d00: 00154783 lbu a5,1(a0)
- 4d04: 0805 addi a6,a6,1
- 4d06: 0505 addi a0,a0,1
- 4d08: fbe1 bnez a5,4cd8 <strstr+0x24>
- continue;
-
- if (strncmp(haystack, needle, n_len) == 0)
- return (char *)haystack;
- }
- return NULL;
- 4d0a: 4501 li a0,0
-}
- 4d0c: 8082 ret
- if (strncmp(haystack, needle, n_len) == 0)
- 4d0e: de7d beqz a2,4d0c <strstr+0x58>
- for (; *haystack; haystack++)
- 4d10: 00154783 lbu a5,1(a0)
- 4d14: 0805 addi a6,a6,1
- 4d16: 0505 addi a0,a0,1
- 4d18: f3e1 bnez a5,4cd8 <strstr+0x24>
- 4d1a: bfc5 j 4d0a <strstr+0x56>
-
-0000000000004d1c <strdup>:
-
-char *strdup(const char *s)
-{
- 4d1c: 1101 addi sp,sp,-32
- 4d1e: e426 sd s1,8(sp)
- 4d20: ec06 sd ra,24(sp)
- 4d22: e822 sd s0,16(sp)
- while (*p)
- 4d24: 00054783 lbu a5,0(a0)
-{
- 4d28: 84aa mv s1,a0
- while (*p)
- 4d2a: cb8d beqz a5,4d5c <strdup+0x40>
- const char *p = s;
- 4d2c: 862a mv a2,a0
- while (*p)
- 4d2e: 00164783 lbu a5,1(a2)
- p++;
- 4d32: 0605 addi a2,a2,1
- while (*p)
- 4d34: ffed bnez a5,4d2e <strdup+0x12>
- return (size_t)(p - s);
- 4d36: 8e05 sub a2,a2,s1
- size_t len = strlen(s) + 1;
- 4d38: 00160413 addi s0,a2,1
- char *new_str = (char *)malloc(len);
- 4d3c: 8522 mv a0,s0
- 4d3e: f4eff0ef jal 448c <malloc>
- if (new_str == NULL)
- 4d42: c901 beqz a0,4d52 <strdup+0x36>
- return memmove(vdst, vsrc, n);
- 4d44: 8622 mv a2,s0
- return NULL;
-
- return (char *)memcpy(new_str, s, len);
-}
- 4d46: 6442 ld s0,16(sp)
- 4d48: 60e2 ld ra,24(sp)
- return memmove(vdst, vsrc, n);
- 4d4a: 85a6 mv a1,s1
-}
- 4d4c: 64a2 ld s1,8(sp)
- 4d4e: 6105 addi sp,sp,32
- return memmove(vdst, vsrc, n);
- 4d50: bbb9 j 4aae <memmove>
-}
- 4d52: 60e2 ld ra,24(sp)
- 4d54: 6442 ld s0,16(sp)
- 4d56: 64a2 ld s1,8(sp)
- 4d58: 6105 addi sp,sp,32
- 4d5a: 8082 ret
- while (*p)
- 4d5c: 4405 li s0,1
- 4d5e: bff9 j 4d3c <strdup+0x20>
-
-0000000000004d60 <strlcpy>:
- 4d60: 0005c783 lbu a5,0(a1)
-
-size_t strlcpy(char *dst, const char *src, size_t size)
-{
- 4d64: 1101 addi sp,sp,-32
- 4d66: ec06 sd ra,24(sp)
- 4d68: e822 sd s0,16(sp)
- 4d6a: 86b2 mv a3,a2
- while (*p)
- 4d6c: cf8d beqz a5,4da6 <strlcpy+0x46>
- const char *p = s;
- 4d6e: 87ae mv a5,a1
- while (*p)
- 4d70: 0017c703 lbu a4,1(a5)
- p++;
- 4d74: 0785 addi a5,a5,1
- while (*p)
- 4d76: ff6d bnez a4,4d70 <strlcpy+0x10>
- return (size_t)(p - s);
- 4d78: 40b78433 sub s0,a5,a1
- size_t src_len = strlen(src);
-
- if (size > 0)
- 4d7c: c285 beqz a3,4d9c <strlcpy+0x3c>
- 4d7e: e426 sd s1,8(sp)
- {
- size_t copy_len = (src_len >= size) ? size - 1 : src_len;
- 4d80: fff68613 addi a2,a3,-1
- memcpy(dst, src, copy_len);
- dst[copy_len] = '\0';
- 4d84: 00c504b3 add s1,a0,a2
- size_t copy_len = (src_len >= size) ? size - 1 : src_len;
- 4d88: 00d47563 bgeu s0,a3,4d92 <strlcpy+0x32>
- dst[copy_len] = '\0';
- 4d8c: 008504b3 add s1,a0,s0
- size_t copy_len = (src_len >= size) ? size - 1 : src_len;
- 4d90: 8622 mv a2,s0
- return memmove(vdst, vsrc, n);
- 4d92: d1dff0ef jal 4aae <memmove>
- dst[copy_len] = '\0';
- 4d96: 00048023 sb zero,0(s1)
- }
-
- return src_len;
- 4d9a: 64a2 ld s1,8(sp)
-}
- 4d9c: 60e2 ld ra,24(sp)
- 4d9e: 8522 mv a0,s0
- 4da0: 6442 ld s0,16(sp)
- 4da2: 6105 addi sp,sp,32
- 4da4: 8082 ret
- if (size > 0)
- 4da6: e219 bnez a2,4dac <strlcpy+0x4c>
- return (size_t)(p - s);
- 4da8: 4401 li s0,0
- 4daa: bfcd j 4d9c <strlcpy+0x3c>
- 4dac: e426 sd s1,8(sp)
- 4dae: 4401 li s0,0
- if (size > 0)
- 4db0: 84aa mv s1,a0
- size_t copy_len = (src_len >= size) ? size - 1 : src_len;
- 4db2: 4601 li a2,0
- 4db4: bff9 j 4d92 <strlcpy+0x32>
-
-0000000000004db6 <strlcat>:
- while (*p)
- 4db6: 0005c783 lbu a5,0(a1)
-
-size_t strlcat(char *dst, const char *src, size_t size)
-{
- 4dba: 7179 addi sp,sp,-48
- 4dbc: e84a sd s2,16(sp)
- 4dbe: f406 sd ra,40(sp)
- 4dc0: f022 sd s0,32(sp)
- 4dc2: ec26 sd s1,24(sp)
- 4dc4: 892a mv s2,a0
- while (*p)
- 4dc6: c7b5 beqz a5,4e32 <strlcat+0x7c>
- const char *p = s;
- 4dc8: 87ae mv a5,a1
- while (*p)
- 4dca: 0017c703 lbu a4,1(a5)
- p++;
- 4dce: 0785 addi a5,a5,1
- while (*p)
- 4dd0: ff6d bnez a4,4dca <strlcat+0x14>
- return (size_t)(p - s);
- 4dd2: 40b784b3 sub s1,a5,a1
- size_t dst_len = 0;
- 4dd6: 4401 li s0,0
- size_t src_len = strlen(src);
-
- while (dst_len < size && dst[dst_len] != '\0')
- 4dd8: e609 bnez a2,4de2 <strlcat+0x2c>
- 4dda: a0a1 j 4e22 <strlcat+0x6c>
- dst_len++;
- 4ddc: 0405 addi s0,s0,1
- while (dst_len < size && dst[dst_len] != '\0')
- 4dde: 04860263 beq a2,s0,4e22 <strlcat+0x6c>
- 4de2: 00890533 add a0,s2,s0
- 4de6: 00054783 lbu a5,0(a0)
- 4dea: fbed bnez a5,4ddc <strlcat+0x26>
-
- if (dst_len == size)
- 4dec: 02860b63 beq a2,s0,4e22 <strlcat+0x6c>
- 4df0: e44e sd s3,8(sp)
- return size + src_len;
-
- size_t space_left = size - dst_len;
- 4df2: 408607b3 sub a5,a2,s0
- size_t copy_len = (src_len >= space_left) ? space_left - 1 : src_len;
- 4df6: 89a6 mv s3,s1
- 4df8: 02f4f263 bgeu s1,a5,4e1c <strlcat+0x66>
-
- memcpy(dst + dst_len, src, copy_len);
- dst[dst_len + copy_len] = '\0';
- 4dfc: 994e add s2,s2,s3
- 4dfe: 9922 add s2,s2,s0
- return memmove(vdst, vsrc, n);
- 4e00: 864e mv a2,s3
- 4e02: cadff0ef jal 4aae <memmove>
- dst[dst_len + copy_len] = '\0';
- 4e06: 00090023 sb zero,0(s2) # 1000 <_vscanf_core.constprop.0+0x6ca>
-
- return dst_len + src_len;
- 4e0a: 00940533 add a0,s0,s1
-}
- 4e0e: 70a2 ld ra,40(sp)
- 4e10: 7402 ld s0,32(sp)
- return dst_len + src_len;
- 4e12: 69a2 ld s3,8(sp)
-}
- 4e14: 64e2 ld s1,24(sp)
- 4e16: 6942 ld s2,16(sp)
- 4e18: 6145 addi sp,sp,48
- 4e1a: 8082 ret
- size_t copy_len = (src_len >= space_left) ? space_left - 1 : src_len;
- 4e1c: fff78993 addi s3,a5,-1
- 4e20: bff1 j 4dfc <strlcat+0x46>
-}
- 4e22: 70a2 ld ra,40(sp)
- 4e24: 7402 ld s0,32(sp)
- 4e26: 6942 ld s2,16(sp)
- return size + src_len;
- 4e28: 00960533 add a0,a2,s1
-}
- 4e2c: 64e2 ld s1,24(sp)
- 4e2e: 6145 addi sp,sp,48
- 4e30: 8082 ret
- while (*p)
- 4e32: 4481 li s1,0
- 4e34: b74d j 4dd6 <strlcat+0x20>
-
-0000000000004e36 <strspn>:
-size_t strspn(const char *s, const char *accept)
-{
- const char *p = s;
- const char *a;
-
- while (*p)
- 4e36: 00054683 lbu a3,0(a0)
- 4e3a: c695 beqz a3,4e66 <strspn+0x30>
- {
- for (a = accept; *a; a++)
- 4e3c: 0005c803 lbu a6,0(a1)
- 4e40: 862a mv a2,a0
- 4e42: 00080f63 beqz a6,4e60 <strspn+0x2a>
- 4e46: 87ae mv a5,a1
- 4e48: 8742 mv a4,a6
- 4e4a: a021 j 4e52 <strspn+0x1c>
- 4e4c: 0007c703 lbu a4,0(a5)
- 4e50: cb01 beqz a4,4e60 <strspn+0x2a>
- 4e52: 0785 addi a5,a5,1
- {
- if (*p == *a)
- 4e54: fee69ce3 bne a3,a4,4e4c <strspn+0x16>
- while (*p)
- 4e58: 00164683 lbu a3,1(a2)
- break;
- }
- if (*a == '\0')
- return (size_t)(p - s);
- p++;
- 4e5c: 0605 addi a2,a2,1
- while (*p)
- 4e5e: f6e5 bnez a3,4e46 <strspn+0x10>
- }
- return (size_t)(p - s);
- 4e60: 40a60533 sub a0,a2,a0
- 4e64: 8082 ret
- while (*p)
- 4e66: 4501 li a0,0
-}
- 4e68: 8082 ret
-
-0000000000004e6a <strcspn>:
-size_t strcspn(const char *s, const char *reject)
-{
- const char *p = s;
- const char *r;
-
- while (*p)
- 4e6a: 00054683 lbu a3,0(a0)
- 4e6e: ce85 beqz a3,4ea6 <strcspn+0x3c>
- {
- for (r = reject; *r; r++)
- 4e70: 0005c803 lbu a6,0(a1)
- const char *p = s;
- 4e74: 862a mv a2,a0
- for (r = reject; *r; r++)
- 4e76: 02080363 beqz a6,4e9c <strcspn+0x32>
- 4e7a: 87ae mv a5,a1
- 4e7c: 8742 mv a4,a6
- 4e7e: a021 j 4e86 <strcspn+0x1c>
- 4e80: 0007c703 lbu a4,0(a5)
- 4e84: c719 beqz a4,4e92 <strcspn+0x28>
- 4e86: 0785 addi a5,a5,1
- {
- if (*p == *r)
- 4e88: fed71ce3 bne a4,a3,4e80 <strcspn+0x16>
- return (size_t)(p - s);
- }
- p++;
- }
- return (size_t)(p - s);
- 4e8c: 40a60533 sub a0,a2,a0
- 4e90: 8082 ret
- while (*p)
- 4e92: 00164683 lbu a3,1(a2)
- p++;
- 4e96: 0605 addi a2,a2,1
- while (*p)
- 4e98: f2ed bnez a3,4e7a <strcspn+0x10>
- 4e9a: bfcd j 4e8c <strcspn+0x22>
- 4e9c: 00164683 lbu a3,1(a2)
- p++;
- 4ea0: 0605 addi a2,a2,1
- while (*p)
- 4ea2: feed bnez a3,4e9c <strcspn+0x32>
- 4ea4: b7e5 j 4e8c <strcspn+0x22>
- 4ea6: 4501 li a0,0
-}
- 4ea8: 8082 ret
-
-0000000000004eaa <strpbrk>:
-
-char *strpbrk(const char *s, const char *accept)
-{
- const char *a;
- while (*s)
- 4eaa: 00054683 lbu a3,0(a0)
- 4eae: c295 beqz a3,4ed2 <strpbrk+0x28>
- {
- for (a = accept; *a; a++)
- 4eb0: 0005c603 lbu a2,0(a1)
- 4eb4: c20d beqz a2,4ed6 <strpbrk+0x2c>
- 4eb6: 87ae mv a5,a1
- 4eb8: 8732 mv a4,a2
- 4eba: a021 j 4ec2 <strpbrk+0x18>
- 4ebc: 0007c703 lbu a4,0(a5)
- 4ec0: c709 beqz a4,4eca <strpbrk+0x20>
- 4ec2: 0785 addi a5,a5,1
- {
- if (*s == *a)
- 4ec4: fed71ce3 bne a4,a3,4ebc <strpbrk+0x12>
- return (char *)s;
- }
- s++;
- }
- return NULL;
-}
- 4ec8: 8082 ret
- while (*s)
- 4eca: 00154683 lbu a3,1(a0)
- s++;
- 4ece: 0505 addi a0,a0,1
- while (*s)
- 4ed0: f2fd bnez a3,4eb6 <strpbrk+0xc>
- return NULL;
- 4ed2: 4501 li a0,0
-}
- 4ed4: 8082 ret
- while (*s)
- 4ed6: 00154683 lbu a3,1(a0)
- s++;
- 4eda: 0505 addi a0,a0,1
- while (*s)
- 4edc: feed bnez a3,4ed6 <strpbrk+0x2c>
- 4ede: bfd5 j 4ed2 <strpbrk+0x28>
-
-0000000000004ee0 <strtok>:
-char *strtok(char *str, const char *delim)
-{
- static char *olds;
- char *token;
-
- if (str == NULL)
- 4ee0: 00003897 auipc a7,0x3
- 4ee4: 8c088893 addi a7,a7,-1856 # 77a0 <olds.0>
- 4ee8: cd25 beqz a0,4f60 <strtok+0x80>
- while (*p)
- 4eea: 00054683 lbu a3,0(a0)
- 4eee: c295 beqz a3,4f12 <strtok+0x32>
- for (a = accept; *a; a++)
- 4ef0: 0005c803 lbu a6,0(a1)
- 4ef4: 02080463 beqz a6,4f1c <strtok+0x3c>
- 4ef8: 87ae mv a5,a1
- 4efa: 8742 mv a4,a6
- 4efc: a021 j 4f04 <strtok+0x24>
- 4efe: 0007c703 lbu a4,0(a5)
- 4f02: cf09 beqz a4,4f1c <strtok+0x3c>
- 4f04: 0785 addi a5,a5,1
- if (*p == *a)
- 4f06: fee69ce3 bne a3,a4,4efe <strtok+0x1e>
- while (*p)
- 4f0a: 00154683 lbu a3,1(a0)
- p++;
- 4f0e: 0505 addi a0,a0,1
- while (*p)
- 4f10: f6e5 bnez a3,4ef8 <strtok+0x18>
- 4f12: 87aa mv a5,a0
- str = olds;
-
- str += strspn(str, delim);
- if (*str == '\0')
- {
- olds = str;
- 4f14: 00f8b023 sd a5,0(a7)
- return NULL;
- 4f18: 4501 li a0,0
- *str = '\0';
- olds = str + 1;
- }
-
- return token;
-}
- 4f1a: 8082 ret
- if (*str == '\0')
- 4f1c: 00054603 lbu a2,0(a0)
- 4f20: da6d beqz a2,4f12 <strtok+0x32>
- 4f22: 86aa mv a3,a0
- for (a = accept; *a; a++)
- 4f24: 04080163 beqz a6,4f66 <strtok+0x86>
- 4f28: 8742 mv a4,a6
- 4f2a: 87ae mv a5,a1
- 4f2c: a021 j 4f34 <strtok+0x54>
- 4f2e: 0007c703 lbu a4,0(a5)
- 4f32: cb19 beqz a4,4f48 <strtok+0x68>
- 4f34: 0785 addi a5,a5,1
- if (*s == *a)
- 4f36: fee61ce3 bne a2,a4,4f2e <strtok+0x4e>
- olds = str + 1;
- 4f3a: 00168793 addi a5,a3,1
- *str = '\0';
- 4f3e: 00068023 sb zero,0(a3)
- olds = str;
- 4f42: 00f8b023 sd a5,0(a7)
-}
- 4f46: 8082 ret
- while (*s)
- 4f48: 0016c603 lbu a2,1(a3)
- s++;
- 4f4c: 0685 addi a3,a3,1
- while (*s)
- 4f4e: fe69 bnez a2,4f28 <strtok+0x48>
- 4f50: 87aa mv a5,a0
- while (*s != (char)c)
- 4f52: 0017c703 lbu a4,1(a5)
- if (!*s++)
- 4f56: 0785 addi a5,a5,1
- while (*s != (char)c)
- 4f58: ff6d bnez a4,4f52 <strtok+0x72>
- olds = str;
- 4f5a: 00f8b023 sd a5,0(a7)
-}
- 4f5e: 8082 ret
- str = olds;
- 4f60: 0008b503 ld a0,0(a7)
- 4f64: b759 j 4eea <strtok+0xa>
- while (*s)
- 4f66: 0016c603 lbu a2,1(a3)
- s++;
- 4f6a: 0685 addi a3,a3,1
- while (*s)
- 4f6c: fe6d bnez a2,4f66 <strtok+0x86>
- 4f6e: b7cd j 4f50 <strtok+0x70>
-
-0000000000004f70 <strerror>:
-
-char *strerror(int errnum)
-{
- 4f70: 87aa mv a5,a0
-
- switch (errnum)
- 4f72: cd09 beqz a0,4f8c <strerror+0x1c>
- 4f74: 4731 li a4,12
- 4f76: 00000517 auipc a0,0x0
- 4f7a: 12250513 addi a0,a0,290 # 5098 <_GLOBAL__sub_I__ZSt3cin+0xea>
- 4f7e: 00e78b63 beq a5,a4,4f94 <strerror+0x24>
- return "Success";
- // case EINVAL: return "Invalid argument";
- case ENOMEM: return "Out of memory";
-
- default:
- return "Unknown error";
- 4f82: 00000517 auipc a0,0x0
- 4f86: 12650513 addi a0,a0,294 # 50a8 <_GLOBAL__sub_I__ZSt3cin+0xfa>
- 4f8a: 8082 ret
- return "Success";
- 4f8c: 00000517 auipc a0,0x0
- 4f90: 10450513 addi a0,a0,260 # 5090 <_GLOBAL__sub_I__ZSt3cin+0xe2>
- }
- 4f94: 8082 ret
-
-0000000000004f96 <_Znwm>:
-#include "ulib/stdlib.h"
-
-void *operator new(unsigned long n)
-{
- return malloc(n);
- 4f96: cf6ff06f j 448c <malloc>
-
-0000000000004f9a <_Znam>:
-}
-
-void *operator new[](unsigned long n)
- 4f9a: cf2ff06f j 448c <malloc>
-
-0000000000004f9e <_ZdlPv>:
- return malloc(n);
-}
-
-void operator delete(void *p)
-{
- free(p);
- 4f9e: c78ff06f j 4416 <free>
-
-0000000000004fa2 <_ZdaPv>:
-}
-
-void operator delete[](void *p)
- 4fa2: c74ff06f j 4416 <free>
-
-0000000000004fa6 <_ZdlPvm>:
- free(p);
-}
-
-void operator delete(void *p, unsigned long)
-{
- free(p);
- 4fa6: c70ff06f j 4416 <free>
-
-0000000000004faa <_ZdaPvm>:
-}
-
-void operator delete[](void *p, unsigned long)
- 4faa: c6cff06f j 4416 <free>
-
-0000000000004fae <_GLOBAL__sub_I__ZSt3cin>:
-#include "ulib/iostream"
-
-namespace std
-{
- istream cin(stdin);
- 4fae: 00002797 auipc a5,0x2
- 4fb2: 6a27b783 ld a5,1698(a5) # 7650 <_GLOBAL_OFFSET_TABLE_+0x10>
- 4fb6: 6390 ld a2,0(a5)
- ostream cout(stdout);
- 4fb8: 00002797 auipc a5,0x2
- 4fbc: 6907b783 ld a5,1680(a5) # 7648 <_GLOBAL_OFFSET_TABLE_+0x8>
- 4fc0: 6394 ld a3,0(a5)
- ostream cerr(stderr);
- 4fc2: 00002797 auipc a5,0x2
- 4fc6: 6967b783 ld a5,1686(a5) # 7658 <_GLOBAL_OFFSET_TABLE_+0x18>
- 4fca: 6398 ld a4,0(a5)
-
- class istream{
- private:
- FILE* _stream;
- public:
- istream(FILE *f) : _stream(f) {}
- 4fcc: 00002797 auipc a5,0x2
- 4fd0: 7dc78793 addi a5,a5,2012 # 77a8 <_ZSt3cin>
- 4fd4: e390 sd a2,0(a5)
- ostream(FILE* f) : _stream(f) {}
- 4fd6: e794 sd a3,8(a5)
- 4fd8: eb98 sd a4,16(a5)
-} // namespace std
- 4fda: 8082 ret
diff --git a/build/user/echo.sym b/build/user/echo.sym
deleted file mode 100644
index 005bc74..0000000
--- a/build/user/echo.sym
+++ /dev/null
@@ -1,189 +0,0 @@
-0000000000000000 .text
-0000000000004fe0 .rodata
-00000000000057c0 .eh_frame
-00000000000068c0 .data
-0000000000007640 .got
-0000000000007660 .got.plt
-0000000000007670 .init_array
-0000000000007678 .bss
-0000000000000000 .debug_info
-0000000000000000 .debug_abbrev
-0000000000000000 .debug_loclists
-0000000000000000 .debug_aranges
-0000000000000000 .debug_rnglists
-0000000000000000 .debug_line
-0000000000000000 .debug_str
-0000000000000000 .debug_line_str
-0000000000000000 .comment
-0000000000000000 .riscv.attributes
-0000000000000000 echo.cc
-0000000000000000 entry.o
-0000000000000000 usys.o
-0000000000000000 stdio.c
-000000000000014e stbsp__clamp_callback
-000000000000019c stbsp__count_clamp_callback
-00000000000001a8 stbsp__real_to_str
-000000000000087c _in_char.part.0
-00000000000008c2 _skip_space
-0000000000000936 _vscanf_core.constprop.0
-00000000000011a6 _out_char
-000000000000301a _vprintf_core.constprop.0.isra.0
-00000000000068c0 stbsp__digitpair
-000000000000698c stbsp__period
-000000000000698d stbsp__comma
-0000000000006990 hexu.1
-00000000000069a8 hex.0
-00000000000069c0 _stderr
-0000000000006de0 _stdout
-0000000000007200 _stdin
-0000000000005328 stbsp__bot
-00000000000053e0 stbsp__negbot
-0000000000005490 stbsp__negboterr
-0000000000005540 stbsp__negtop
-00000000000055a8 stbsp__negtoperr
-0000000000005610 stbsp__top
-0000000000005678 stbsp__toperr
-00000000000056e0 stbsp__powten
-0000000000000000 stdlib.c
-0000000000004228 strtoull.part.0
-0000000000007638 next
-0000000000007684 __atexit_func_count
-0000000000007688 __atexit_funcs
-0000000000007788 freep
-0000000000007790 base
-0000000000000000 string.c
-00000000000077a0 olds.0
-0000000000000000 cxx.cc
-0000000000000000 iostream.cpp
-0000000000004fae _GLOBAL__sub_I__ZSt3cin
-0000000000007640 _GLOBAL_OFFSET_TABLE_
-0000000000004b48 strcpy
-00000000000038b8 printf
-0000000000007620 stdout
-0000000000005784 STDOUT_FD
-00000000000041fe ungetc
-0000000000004f70 strerror
-0000000000004aae memmove
-0000000000003862 snprintf
-00000000000000d6 mknod
-0000000000004700 atol
-000000000000440e getenv
-0000000000004f96 _Znwm
-0000000000007680 errno
-0000000000004960 labs
-00000000000048da bsearch
-000000000000010e getpid
-00000000000047fc qsort
-0000000000003af6 fscanf
-0000000000003d68 fgets
-00000000000077b8 _ZSt4cerr
-0000000000004aea memcpy
-0000000000004412 system
-00000000000041de feof
-000000000000448c malloc
-000000000000011e sleep
-0000000000003818 vsnprintf
-000000000000461c strtoll
-00000000000046c6 strtoul
-0000000000004a12 wctomb
-0000000000004a5e wcstombs
-0000000000003a80 fflush
-0000000000004a20 mbstowcs
-000000000000013e lseek
-0000000000004f9e _ZdlPv
-0000000000004402 abort
-00000000000046ea strtol
-000000000000009e pipe
-00000000000049e0 mblen
-0000000000004c9c strrchr
-0000000000004552 calloc
-000000000000470c strtod
-0000000000000136 disk_test
-00000000000000ae write
-00000000000047e6 atof
-00000000000000e6 fstat
-0000000000003ac4 fprintf
-00000000000000be kill
-0000000000004b8c strcat
-00000000000000fe chdir
-00000000000040e6 fseek
-0000000000002fb6 stbsp_vsprintf
-00000000000000c6 exec
-0000000000004b10 memchr
-0000000000007628 stdin
-0000000000000096 wait
-0000000000002ed0 stbsp_vsnprintf
-000000000000007c _start
-00000000000041e8 ferror
-0000000000004cb4 strstr
-00000000000049aa rand
-00000000000000a6 read
-0000000000004d60 strlcpy
-0000000000004c3c strncmp
-000000000000127a stbsp_set_separators
-0000000000004fa6 _ZdlPvm
-0000000000004b5a strncpy
-00000000000000de unlink
-000000000000459a realloc
-0000000000004ee0 strtok
-0000000000004aec memcmp
-000000000000008e fork
-00000000000038f2 sscanf
-0000000000004bbe strncat
-0000000000003e44 fread
-0000000000000116 sbrk
-0000000000004d1c strdup
-0000000000000126 uptime
-00000000000045f8 strtoull
-0000000000002ea6 stbsp_sprintf
-0000000000003954 fopen
-0000000000004a96 memset
-0000000000000000 main
-000000000000415a ftell
-00000000000049d2 srand
-0000000000004db6 strlcat
-00000000000041f2 clearerr
-0000000000004fa2 _ZdaPv
-0000000000003a18 fclose
-000000000000012e putc
-0000000000004c04 strcmp
-0000000000000146 shutdown
-0000000000000106 dup
-0000000000003cd2 fgetc
-0000000000002fc4 sprintf
-00000000000047ea strtof
-00000000000043a8 atexit
-0000000000004e6a strcspn
-0000000000002f96 stbsp_snprintf
-00000000000077a8 _ZSt3cin
-0000000000003922 scanf
-0000000000007630 stderr
-000000000000498a ldiv
-0000000000003b28 fputc
-0000000000004f9a _Znam
-000000000000499a lldiv
-0000000000003f5e fwrite
-0000000000004186 rewind
-00000000000077b0 _ZSt4cout
-00000000000000ee link
-00000000000043cc exit
-0000000000000086 sys_exit
-000000000000496a llabs
-00000000000046ec atoi
-0000000000005780 STDERR_FD
-0000000000004e36 strspn
-0000000000004b2e strlen
-000000000000128c stbsp_vsprintfcb
-00000000000000ce open
-0000000000005788 STDIN_FD
-0000000000004706 atoll
-0000000000004974 div
-0000000000004956 abs
-0000000000004c84 strchr
-0000000000003bec fputs
-0000000000004faa _ZdaPvm
-00000000000000f6 mkdir
-00000000000000b6 close
-00000000000049f4 mbtowc
-0000000000004eaa strpbrk
-0000000000004416 free
diff --git a/build/user/entry.o b/build/user/entry.o
deleted file mode 100644
index c20f0e6..0000000
--- a/build/user/entry.o
+++ /dev/null
Binary files differ
diff --git a/build/user/init b/build/user/init
deleted file mode 100755
index 9b46ae7..0000000
--- a/build/user/init
+++ /dev/null
Binary files differ
diff --git a/build/user/init.asm b/build/user/init.asm
deleted file mode 100644
index 0ded66c..0000000
--- a/build/user/init.asm
+++ /dev/null
@@ -1,10687 +0,0 @@
-
-build/user/init: file format elf64-littleriscv
-
-
-Disassembly of section .text:
-
-0000000000000000 <main>:
-#include "ulib/string.h"
-#include "user/user.h"
-#include "drivers/uart_color.h"
-
-int main()
-{
- 0: 715d addi sp,sp,-80
- char *argv[] = {(char *)"sh", 0};
- 2: 00005797 auipc a5,0x5
- 6: 01e78793 addi a5,a5,30 # 5020 <_GLOBAL__sub_I__ZSt3cin+0x30>
-
- printf(ANSI_BLUE"\n[Init] Starting Lume OS Shell..."ANSI_RESET);
- a: 00005517 auipc a0,0x5
- e: 01e50513 addi a0,a0,30 # 5028 <_GLOBAL__sub_I__ZSt3cin+0x38>
-{
- 12: e486 sd ra,72(sp)
- 14: fc26 sd s1,56(sp)
- 16: f84a sd s2,48(sp)
- 18: f44e sd s3,40(sp)
- 1a: f052 sd s4,32(sp)
- char *argv[] = {(char *)"sh", 0};
- 1c: e83e sd a5,16(sp)
-{
- 1e: e0a2 sd s0,64(sp)
- char *argv[] = {(char *)"sh", 0};
- 20: ec02 sd zero,24(sp)
- printf(ANSI_BLUE"\n[Init] Starting Lume OS Shell..."ANSI_RESET);
- 22: 0d9030ef jal 38fa <printf>
- printf("\n");
- 26: 00005517 auipc a0,0x5
- 2a: 03250513 addi a0,a0,50 # 5058 <_GLOBAL__sub_I__ZSt3cin+0x68>
- 2e: 0cd030ef jal 38fa <printf>
- 32: 0024 addi s1,sp,8
- int pid = fork();
- // printf("fork suceess, pid=%i\n", pid);
-
- if (pid < 0)
- {
- printf("[Init] fork failed!\n");
- 34: 00005a17 auipc s4,0x5
- 38: 02ca0a13 addi s4,s4,44 # 5060 <_GLOBAL__sub_I__ZSt3cin+0x70>
- printf("Shell Exit");
- break;
- }
- if (wpid < 0)
- {
- printf("[Init] wait error or no child\n");
- 3c: 00005997 auipc s3,0x5
- 40: 06498993 addi s3,s3,100 # 50a0 <_GLOBAL__sub_I__ZSt3cin+0xb0>
- printf("Shell Exit");
- 44: 00005917 auipc s2,0x5
- 48: 04c90913 addi s2,s2,76 # 5090 <_GLOBAL__sub_I__ZSt3cin+0xa0>
- int pid = fork();
- 4c: 084000ef jal d0 <fork>
- 50: 842a mv s0,a0
- if (pid < 0)
- 52: 02054363 bltz a0,78 <main+0x78>
- if (pid == 0)
- 56: e501 bnez a0,5e <main+0x5e>
- 58: a81d j 8e <main+0x8e>
- if (wpid < 0)
- 5a: 02054663 bltz a0,86 <main+0x86>
- wpid = wait((uint64)&status);
- 5e: 8526 mv a0,s1
- 60: 078000ef jal d8 <wait>
- if (wpid == pid)
- 64: fea41be3 bne s0,a0,5a <main+0x5a>
- printf("Shell Exit");
- 68: 854a mv a0,s2
- 6a: 091030ef jal 38fa <printf>
- int pid = fork();
- 6e: 062000ef jal d0 <fork>
- 72: 842a mv s0,a0
- if (pid < 0)
- 74: fe0551e3 bgez a0,56 <main+0x56>
- printf("[Init] fork failed!\n");
- 78: 8552 mv a0,s4
- 7a: 081030ef jal 38fa <printf>
- exit(1);
- 7e: 4505 li a0,1
- 80: 38e040ef jal 440e <exit>
- if (pid == 0)
- 84: bfe9 j 5e <main+0x5e>
- printf("[Init] wait error or no child\n");
- 86: 854e mv a0,s3
- 88: 073030ef jal 38fa <printf>
-
- break;
- }
- }
- }
- }
- 8c: b7c1 j 4c <main+0x4c>
- char sh_path[] = "/sh";
- 8e: 006877b7 lui a5,0x687
- 92: 32f78793 addi a5,a5,815 # 68732f <_ZSt4cerr+0x67faa7>
- exec(sh_path, argv);
- 96: 080c addi a1,sp,16
- 98: 8526 mv a0,s1
- char sh_path[] = "/sh";
- 9a: c43e sw a5,8(sp)
- exec(sh_path, argv);
- 9c: 06c000ef jal 108 <exec>
- printf("[Init] exec sh failed\n");
- a0: 00005517 auipc a0,0x5
- a4: fd850513 addi a0,a0,-40 # 5078 <_GLOBAL__sub_I__ZSt3cin+0x88>
- a8: 053030ef jal 38fa <printf>
- return 0;
- ac: 60a6 ld ra,72(sp)
- ae: 6406 ld s0,64(sp)
- b0: 74e2 ld s1,56(sp)
- b2: 7942 ld s2,48(sp)
- b4: 79a2 ld s3,40(sp)
- b6: 7a02 ld s4,32(sp)
- b8: 4501 li a0,0
- ba: 6161 addi sp,sp,80
- bc: 8082 ret
-
-00000000000000be <_start>:
-.global _start
-
-_start:
-
-
- call main
- be: f43ff0ef jal 0 <main>
-
- call exit
- c2: 34c040ef jal 440e <exit>
-
- c6: a001 j c6 <_start+0x8>
-
-00000000000000c8 <sys_exit>:
- name: \
- li a7, SYS_ ## sysname; \
- ecall; \
- ret
-
-SYSCALL_NAME(sys_exit, exit)
- c8: 488d li a7,3
- ca: 00000073 ecall
- ce: 8082 ret
-
-00000000000000d0 <fork>:
-
-SYSCALL(fork)
- d0: 4889 li a7,2
- d2: 00000073 ecall
- d6: 8082 ret
-
-00000000000000d8 <wait>:
-SYSCALL(wait)
- d8: 4891 li a7,4
- da: 00000073 ecall
- de: 8082 ret
-
-00000000000000e0 <pipe>:
-SYSCALL(pipe)
- e0: 4895 li a7,5
- e2: 00000073 ecall
- e6: 8082 ret
-
-00000000000000e8 <read>:
-SYSCALL(read)
- e8: 4899 li a7,6
- ea: 00000073 ecall
- ee: 8082 ret
-
-00000000000000f0 <write>:
-SYSCALL(write)
- f0: 48c5 li a7,17
- f2: 00000073 ecall
- f6: 8082 ret
-
-00000000000000f8 <close>:
-SYSCALL(close)
- f8: 48d9 li a7,22
- fa: 00000073 ecall
- fe: 8082 ret
-
-0000000000000100 <kill>:
-SYSCALL(kill)
- 100: 489d li a7,7
- 102: 00000073 ecall
- 106: 8082 ret
-
-0000000000000108 <exec>:
-SYSCALL(exec)
- 108: 48a1 li a7,8
- 10a: 00000073 ecall
- 10e: 8082 ret
-
-0000000000000110 <open>:
-SYSCALL(open)
- 110: 48c1 li a7,16
- 112: 00000073 ecall
- 116: 8082 ret
-
-0000000000000118 <mknod>:
-SYSCALL(mknod)
- 118: 48c9 li a7,18
- 11a: 00000073 ecall
- 11e: 8082 ret
-
-0000000000000120 <unlink>:
-SYSCALL(unlink)
- 120: 48cd li a7,19
- 122: 00000073 ecall
- 126: 8082 ret
-
-0000000000000128 <fstat>:
-SYSCALL(fstat)
- 128: 48a5 li a7,9
- 12a: 00000073 ecall
- 12e: 8082 ret
-
-0000000000000130 <link>:
-SYSCALL(link)
- 130: 48d1 li a7,20
- 132: 00000073 ecall
- 136: 8082 ret
-
-0000000000000138 <mkdir>:
-SYSCALL(mkdir)
- 138: 48d5 li a7,21
- 13a: 00000073 ecall
- 13e: 8082 ret
-
-0000000000000140 <chdir>:
-SYSCALL(chdir)
- 140: 48a9 li a7,10
- 142: 00000073 ecall
- 146: 8082 ret
-
-0000000000000148 <dup>:
-SYSCALL(dup)
- 148: 48ad li a7,11
- 14a: 00000073 ecall
- 14e: 8082 ret
-
-0000000000000150 <getpid>:
-SYSCALL(getpid)
- 150: 48b1 li a7,12
- 152: 00000073 ecall
- 156: 8082 ret
-
-0000000000000158 <sbrk>:
-SYSCALL(sbrk)
- 158: 48b5 li a7,13
- 15a: 00000073 ecall
- 15e: 8082 ret
-
-0000000000000160 <sleep>:
-SYSCALL(sleep)
- 160: 48b9 li a7,14
- 162: 00000073 ecall
- 166: 8082 ret
-
-0000000000000168 <uptime>:
-SYSCALL(uptime)
- 168: 48bd li a7,15
- 16a: 00000073 ecall
- 16e: 8082 ret
-
-0000000000000170 <putc>:
-SYSCALL(putc)
- 170: 4885 li a7,1
- 172: 00000073 ecall
- 176: 8082 ret
-
-0000000000000178 <disk_test>:
-SYSCALL(disk_test)
- 178: 48dd li a7,23
- 17a: 00000073 ecall
- 17e: 8082 ret
-
-0000000000000180 <lseek>:
-SYSCALL(lseek)
- 180: 48e1 li a7,24
- 182: 00000073 ecall
- 186: 8082 ret
-
-0000000000000188 <shutdown>:
- 188: 48e5 li a7,25
- 18a: 00000073 ecall
- 18e: 8082 ret
-
-0000000000000190 <stbsp__clamp_callback>:
- 190: 45dc lw a5,12(a1)
- 192: 4598 lw a4,8(a1)
- 194: 9fb1 addw a5,a5,a2
- 196: c5dc sw a5,12(a1)
- 198: 0007069b sext.w a3,a4
- 19c: 00e65463 bge a2,a4,1a4 <stbsp__clamp_callback+0x14>
- 1a0: 0006069b sext.w a3,a2
- 1a4: c685 beqz a3,1cc <stbsp__clamp_callback+0x3c>
- 1a6: 619c ld a5,0(a1)
- 1a8: 00a78e63 beq a5,a0,1c4 <stbsp__clamp_callback+0x34>
- 1ac: 00d50633 add a2,a0,a3
- 1b0: 00054703 lbu a4,0(a0)
- 1b4: 0505 addi a0,a0,1
- 1b6: 0785 addi a5,a5,1
- 1b8: fee78fa3 sb a4,-1(a5)
- 1bc: fec56ae3 bltu a0,a2,1b0 <stbsp__clamp_callback+0x20>
- 1c0: 6188 ld a0,0(a1)
- 1c2: 4598 lw a4,8(a1)
- 1c4: 9f15 subw a4,a4,a3
- 1c6: 9536 add a0,a0,a3
- 1c8: e188 sd a0,0(a1)
- 1ca: c598 sw a4,8(a1)
- 1cc: 1ff00793 li a5,511
- 1d0: 00e7d463 bge a5,a4,1d8 <stbsp__clamp_callback+0x48>
- 1d4: 6188 ld a0,0(a1)
- 1d6: 8082 ret
- 1d8: 01058513 addi a0,a1,16
- 1dc: 8082 ret
-
-00000000000001de <stbsp__count_clamp_callback>:
- 1de: 45dc lw a5,12(a1)
- 1e0: 01058513 addi a0,a1,16
- 1e4: 9fb1 addw a5,a5,a2
- 1e6: c5dc sw a5,12(a1)
- 1e8: 8082 ret
-
-00000000000001ea <stbsp__real_to_str>:
- 1ea: e20508d3 fmv.x.d a7,fa0
- 1ee: 82aa mv t0,a0
- 1f0: 4348d813 srai a6,a7,0x34
- 1f4: 8ec6 mv t4,a7
- 1f6: 7ff87813 andi a6,a6,2047
- 1fa: 8346 mv t1,a7
- 1fc: 03f8d513 srli a0,a7,0x3f
- 200: 0008d663 bgez a7,20c <stbsp__real_to_str+0x22>
- 204: 22a517d3 fneg.d fa5,fa0
- 208: e20788d3 fmv.x.d a7,fa5
- 20c: 7ff00e13 li t3,2047
- 210: 35c80663 beq a6,t3,55c <stbsp__real_to_str+0x372>
- 214: 1101 addi sp,sp,-32
- 216: 14080363 beqz a6,35c <stbsp__real_to_str+0x172>
- 21a: c018081b addiw a6,a6,-1023
- 21e: ec22 sd s0,24(sp)
- 220: 02081313 slli t1,a6,0x20
- 224: 66034d63 bltz t1,89e <stbsp__real_to_str+0x6b4>
- 228: 4d100313 li t1,1233
- 22c: 0303033b mulw t1,t1,a6
- 230: 4849 li a6,18
- 232: 40c3531b sraiw t1,t1,0xc
- 236: 0013039b addiw t2,t1,1
- 23a: 4078083b subw a6,a6,t2
- 23e: 4359 li t1,22
- 240: 17036163 bltu t1,a6,3a2 <stbsp__real_to_str+0x1b8>
- 244: 00005317 auipc t1,0x5
- 248: 1b430313 addi t1,t1,436 # 53f8 <stbsp__bot>
- 24c: 080e slli a6,a6,0x3
- 24e: 981a add a6,a6,t1
- 250: 00083e03 ld t3,0(a6)
- 254: 00083607 fld fa2,0(a6)
- 258: f20887d3 fmv.d.x fa5,a7
- 25c: f8000837 lui a6,0xf8000
- 260: 01187333 and t1,a6,a7
- 264: 01c87833 and a6,a6,t3
- 268: 12f676d3 fmul.d fa3,fa2,fa5
- 26c: f20807d3 fmv.d.x fa5,a6
- 270: f2030753 fmv.d.x fa4,t1
- 274: f20305d3 fmv.d.x fa1,t1
- 278: 0af67653 fsub.d fa2,fa2,fa5
- 27c: f20887d3 fmv.d.x fa5,a7
- 280: 0ae7f753 fsub.d fa4,fa5,fa4
- 284: f20807d3 fmv.d.x fa5,a6
- 288: 6ab7f7c7 fmsub.d fa5,fa5,fa1,fa3
- 28c: 7ab677c3 fmadd.d fa5,fa2,fa1,fa5
- 290: f20805d3 fmv.d.x fa1,a6
- 294: 7ab777c3 fmadd.d fa5,fa4,fa1,fa5
- 298: 7ac77743 fmadd.d fa4,fa4,fa2,fa5
- 29c: 02d777d3 fadd.d fa5,fa4,fa3
- 2a0: 3782e837 lui a6,0x3782e
- 2a4: acf80813 addi a6,a6,-1329 # 3782dacf <_ZSt4cerr+0x37826247>
- 2a8: 0832 slli a6,a6,0xc
- 2aa: 9d980813 addi a6,a6,-1575
- 2ae: 084a slli a6,a6,0x12
- 2b0: 187d addi a6,a6,-1
- 2b2: c22798d3 fcvt.l.d a7,fa5,rtz
- 2b6: 0ad7f6d3 fsub.d fa3,fa5,fa3
- 2ba: 00070e1b sext.w t3,a4
- 2be: d228f653 fcvt.d.l fa2,a7
- 2c2: 0ac7f5d3 fsub.d fa1,fa5,fa2
- 2c6: 0ad77753 fsub.d fa4,fa4,fa3
- 2ca: 0af5f6d3 fsub.d fa3,fa1,fa5
- 2ce: 0ad5f553 fsub.d fa0,fa1,fa3
- 2d2: 02d67653 fadd.d fa2,fa2,fa3
- 2d6: 0aa7f7d3 fsub.d fa5,fa5,fa0
- 2da: 0ac7f7d3 fsub.d fa5,fa5,fa2
- 2de: 02b7f7d3 fadd.d fa5,fa5,fa1
- 2e2: 02e7f7d3 fadd.d fa5,fa5,fa4
- 2e6: c2279fd3 fcvt.l.d t6,fa5,rtz
- 2ea: 9fc6 add t6,t6,a7
- 2ec: 19f87063 bgeu a6,t6,46c <stbsp__real_to_str+0x282>
- 2f0: 2385 addiw t2,t2,1
- 2f2: 300e4363 bltz t3,5f8 <stbsp__real_to_str+0x40e>
- 2f6: 00e3833b addw t1,t2,a4
- 2fa: 475d li a4,23
- 2fc: 30677663 bgeu a4,t1,608 <stbsp__real_to_str+0x41e>
- 300: 577d li a4,-1
- 302: 9301 srli a4,a4,0x20
- 304: 43f75863 bge a4,t6,734 <stbsp__real_to_str+0x54a>
- 308: 07d00313 li t1,125
- 30c: 877e mv a4,t6
- 30e: 4e01 li t3,0
- 310: 3e800813 li a6,1000
- 314: 130e slli t1,t1,0x23
- 316: a039 j 324 <stbsp__real_to_str+0x13a>
- 318: 030747b3 div a5,a4,a6
- 31c: 4e05 li t3,1
- 31e: 40674c63 blt a4,t1,736 <stbsp__real_to_str+0x54c>
- 322: 873e mv a4,a5
- 324: 030768b3 rem a7,a4,a6
- 328: fe0888e3 beqz a7,318 <stbsp__real_to_str+0x12e>
- 32c: 400e0163 beqz t3,72e <stbsp__real_to_str+0x544>
- 330: 8fbe mv t6,a5
- 332: 05f5e7b7 lui a5,0x5f5e
- 336: 0ff78793 addi a5,a5,255 # 5f5e0ff <_ZSt4cerr+0x5f56877>
- 33a: 04060413 addi s0,a2,64
- 33e: 03860613 addi a2,a2,56
- 342: 15f7c863 blt a5,t6,492 <stbsp__real_to_str+0x2a8>
- 346: 000f871b sext.w a4,t6
- 34a: 20070463 beqz a4,552 <stbsp__real_to_str+0x368>
- 34e: 4f01 li t5,0
- 350: 4f81 li t6,0
- 352: 00006e97 auipc t4,0x6
- 356: 63ee8e93 addi t4,t4,1598 # 6990 <stbsp__digitpair>
- 35a: aaa9 j 4b4 <stbsp__real_to_str+0x2ca>
- 35c: 0306 slli t1,t1,0x1
- 35e: 3e030e63 beqz t1,75a <stbsp__real_to_str+0x570>
- 362: 4305 li t1,1
- 364: ec22 sd s0,24(sp)
- 366: 00ce9e13 slli t3,t4,0xc
- 36a: 134e slli t1,t1,0x33
- 36c: 520e4063 bltz t3,88c <stbsp__real_to_str+0x6a2>
- 370: 40135313 srai t1,t1,0x1
- 374: 01d37e33 and t3,t1,t4
- 378: 8f42 mv t5,a6
- 37a: 387d addiw a6,a6,-1
- 37c: fe0e0ae3 beqz t3,370 <stbsp__real_to_str+0x186>
- 380: 26900313 li t1,617
- 384: c00f081b addiw a6,t5,-1024
- 388: 0268083b mulw a6,a6,t1
- 38c: 41f8531b sraiw t1,a6,0x1f
- 390: 0153531b srliw t1,t1,0x15
- 394: 0103033b addw t1,t1,a6
- 398: 40b3539b sraiw t2,t1,0xb
- 39c: 4849 li a6,18
- 39e: 4078083b subw a6,a6,t2
- 3a2: 41f8531b sraiw t1,a6,0x1f
- 3a6: 00684eb3 xor t4,a6,t1
- 3aa: 406e8f3b subw t5,t4,t1
- 3ae: 2c900313 li t1,713
- 3b2: 03e3033b mulw t1,t1,t5
- 3b6: 4e35 li t3,13
- 3b8: 8efa mv t4,t5
- 3ba: 40e35f9b sraiw t6,t1,0xe
- 3be: 837e mv t1,t6
- 3c0: 23fe4363 blt t3,t6,5e6 <stbsp__real_to_str+0x3fc>
- 3c4: 5e25 li t3,-23
- 3c6: 026e0e3b mulw t3,t3,t1
- 3ca: 01de0ebb addw t4,t3,t4
- 3ce: 22084f63 bltz a6,60c <stbsp__real_to_str+0x422>
- 3d2: f2000753 fmv.d.x fa4,zero
- 3d6: 00005e17 auipc t3,0x5
- 3da: 022e0e13 addi t3,t3,34 # 53f8 <stbsp__bot>
- 3de: 380e9e63 bnez t4,77a <stbsp__real_to_str+0x590>
- 3e2: f20887d3 fmv.d.x fa5,a7
- 3e6: fff30f1b addiw t5,t1,-1
- 3ea: 0f0e slli t5,t5,0x3
- 3ec: 02f777d3 fadd.d fa5,fa4,fa5
- 3f0: 030e slli t1,t1,0x3
- 3f2: 9f72 add t5,t5,t3
- 3f4: 9e1a add t3,t3,t1
- 3f6: 2e0e3e03 ld t3,736(t3)
- 3fa: 2e8f3587 fld fa1,744(t5)
- 3fe: f8000837 lui a6,0xf8000
- 402: e2078ed3 fmv.x.d t4,fa5
- 406: 12b7f6d3 fmul.d fa3,fa5,fa1
- 40a: f2088653 fmv.d.x fa2,a7
- 40e: 01d87333 and t1,a6,t4
- 412: 01c87833 and a6,a6,t3
- 416: f20807d3 fmv.d.x fa5,a6
- 41a: f2030053 fmv.d.x ft0,t1
- 41e: 0af5f553 fsub.d fa0,fa1,fa5
- 422: f20e87d3 fmv.d.x fa5,t4
- 426: 0ac7f0d3 fsub.d ft1,fa5,fa2
- 42a: f20807d3 fmv.d.x fa5,a6
- 42e: f2030653 fmv.d.x fa2,t1
- 432: 6ac7f647 fmsub.d fa2,fa5,fa2,fa3
- 436: f20e87d3 fmv.d.x fa5,t4
- 43a: 0a177753 fsub.d fa4,fa4,ft1
- 43e: f20300d3 fmv.d.x ft1,t1
- 442: 0a07f7d3 fsub.d fa5,fa5,ft0
- 446: 350f3007 fld ft0,848(t5)
- 44a: 62157643 fmadd.d fa2,fa0,ft1,fa2
- 44e: 12b77753 fmul.d fa4,fa4,fa1
- 452: f20805d3 fmv.d.x fa1,a6
- 456: 62b7f643 fmadd.d fa2,fa5,fa1,fa2
- 45a: f20e85d3 fmv.d.x fa1,t4
- 45e: 7205f743 fmadd.d fa4,fa1,ft0,fa4
- 462: 62a7f7c3 fmadd.d fa5,fa5,fa0,fa2
- 466: 02e7f753 fadd.d fa4,fa5,fa4
- 46a: bd0d j 29c <stbsp__real_to_str+0xb2>
- 46c: 00e3833b addw t1,t2,a4
- 470: 2a0e4663 bltz t3,71c <stbsp__real_to_str+0x532>
- 474: 475d li a4,23
- 476: 10677663 bgeu a4,t1,582 <stbsp__real_to_str+0x398>
- 47a: e80f93e3 bnez t6,300 <stbsp__real_to_str+0x116>
- 47e: 05f5e7b7 lui a5,0x5f5e
- 482: 0ff78793 addi a5,a5,255 # 5f5e0ff <_ZSt4cerr+0x5f56877>
- 486: 04060413 addi s0,a2,64
- 48a: 03860613 addi a2,a2,56
- 48e: ebf7dce3 bge a5,t6,346 <stbsp__real_to_str+0x15c>
- 492: 4f01 li t5,0
- 494: 00006e97 auipc t4,0x6
- 498: 4fce8e93 addi t4,t4,1276 # 6990 <stbsp__digitpair>
- 49c: 05f5e7b7 lui a5,0x5f5e
- 4a0: 10078793 addi a5,a5,256 # 5f5e100 <_ZSt4cerr+0x5f56878>
- 4a4: 02ffe833 rem a6,t6,a5
- 4a8: 02ffcfb3 div t6,t6,a5
- 4ac: 0008071b sext.w a4,a6
- 4b0: 0a080463 beqz a6,558 <stbsp__real_to_str+0x36e>
- 4b4: 8822 mv a6,s0
- 4b6: 06400893 li a7,100
- 4ba: 06300e13 li t3,99
- 4be: 1879 addi a6,a6,-2 # fffffffff7fffffe <_ZSt4cerr+0xfffffffff7ff8776>
- 4c0: 0007031b sext.w t1,a4
- 4c4: 031777bb remuw a5,a4,a7
- 4c8: 2785 addiw a5,a5,1
- 4ca: 0017979b slliw a5,a5,0x1
- 4ce: 1782 slli a5,a5,0x20
- 4d0: 9381 srli a5,a5,0x20
- 4d2: 97f6 add a5,a5,t4
- 4d4: 0007d783 lhu a5,0(a5)
- 4d8: 0317573b divuw a4,a4,a7
- 4dc: 00f81023 sh a5,0(a6)
- 4e0: fc6e6fe3 bltu t3,t1,4be <stbsp__real_to_str+0x2d4>
- 4e4: 008f0f3b addw t5,t5,s0
- 4e8: 410f0f3b subw t5,t5,a6
- 4ec: 020f8f63 beqz t6,52a <stbsp__real_to_str+0x340>
- 4f0: 87c2 mv a5,a6
- 4f2: 03000713 li a4,48
- 4f6: 04c80c63 beq a6,a2,54e <stbsp__real_to_str+0x364>
- 4fa: 17fd addi a5,a5,-1
- 4fc: 00e78023 sb a4,0(a5)
- 500: fec79de3 bne a5,a2,4fa <stbsp__real_to_str+0x310>
- 504: 408807b3 sub a5,a6,s0
- 508: 00ff07bb addw a5,t5,a5
- 50c: 1461 addi s0,s0,-8
- 50e: 00878f1b addiw t5,a5,8
- 512: 05f5e7b7 lui a5,0x5f5e
- 516: 0ff78793 addi a5,a5,255 # 5f5e0ff <_ZSt4cerr+0x5f56877>
- 51a: ff840613 addi a2,s0,-8
- 51e: f7f7cfe3 blt a5,t6,49c <stbsp__real_to_str+0x2b2>
- 522: 000f871b sext.w a4,t6
- 526: 4f81 li t6,0
- 528: b771 j 4b4 <stbsp__real_to_str+0x2ca>
- 52a: 020f0563 beqz t5,554 <stbsp__real_to_str+0x36a>
- 52e: 00084703 lbu a4,0(a6)
- 532: 03000793 li a5,48
- 536: 22f70f63 beq a4,a5,774 <stbsp__real_to_str+0x58a>
- 53a: 2f01 sext.w t5,t5
- 53c: 0076a023 sw t2,0(a3)
- 540: 6462 ld s0,24(sp)
- 542: 0102b023 sd a6,0(t0)
- 546: 01e5a023 sw t5,0(a1)
- 54a: 6105 addi sp,sp,32
- 54c: 8082 ret
- 54e: 8442 mv s0,a6
- 550: b7c9 j 512 <stbsp__real_to_str+0x328>
- 552: 8822 mv a6,s0
- 554: 4f01 li t5,0
- 556: b7dd j 53c <stbsp__real_to_str+0x352>
- 558: 8822 mv a6,s0
- 55a: bf59 j 4f0 <stbsp__real_to_str+0x306>
- 55c: 0eb2 slli t4,t4,0xc
- 55e: 00005797 auipc a5,0x5
- 562: b6a78793 addi a5,a5,-1174 # 50c8 <_GLOBAL__sub_I__ZSt3cin+0xd8>
- 566: 000e8663 beqz t4,572 <stbsp__real_to_str+0x388>
- 56a: 00005797 auipc a5,0x5
- 56e: b5678793 addi a5,a5,-1194 # 50c0 <_GLOBAL__sub_I__ZSt3cin+0xd0>
- 572: 00f2b023 sd a5,0(t0)
- 576: 679d lui a5,0x7
- 578: c29c sw a5,0(a3)
- 57a: 4f0d li t5,3
- 57c: 01e5a023 sw t5,0(a1)
- 580: 8082 ret
- 582: 3b9ad737 lui a4,0x3b9ad
- 586: 9ff70713 addi a4,a4,-1537 # 3b9ac9ff <_ZSt4cerr+0x3b9a5177>
- 58a: 07f76f63 bltu a4,t6,608 <stbsp__real_to_str+0x41e>
- 58e: 4805 li a6,1
- 590: 02081713 slli a4,a6,0x20
- 594: 01d75893 srli a7,a4,0x1d
- 598: 00005717 auipc a4,0x5
- 59c: 21870713 addi a4,a4,536 # 57b0 <stbsp__powten>
- 5a0: 9746 add a4,a4,a7
- 5a2: 4e51 li t3,20
- 5a4: a021 j 5ac <stbsp__real_to_str+0x3c2>
- 5a6: 2805 addiw a6,a6,1
- 5a8: edc809e3 beq a6,t3,47a <stbsp__real_to_str+0x290>
- 5ac: 00073883 ld a7,0(a4)
- 5b0: 0721 addi a4,a4,8
- 5b2: ff1ffae3 bgeu t6,a7,5a6 <stbsp__real_to_str+0x3bc>
- 5b6: ed0372e3 bgeu t1,a6,47a <stbsp__real_to_str+0x290>
- 5ba: 4068083b subw a6,a6,t1
- 5be: 475d li a4,23
- 5c0: eb076de3 bltu a4,a6,47a <stbsp__real_to_str+0x290>
- 5c4: 080e slli a6,a6,0x3
- 5c6: 00005717 auipc a4,0x5
- 5ca: e3270713 addi a4,a4,-462 # 53f8 <stbsp__bot>
- 5ce: 9742 add a4,a4,a6
- 5d0: 3b873803 ld a6,952(a4)
- 5d4: 00185713 srli a4,a6,0x1
- 5d8: 977e add a4,a4,t6
- 5da: 01176363 bltu a4,a7,5e0 <stbsp__real_to_str+0x3f6>
- 5de: 2385 addiw t2,t2,1
- 5e0: 03075fb3 divu t6,a4,a6
- 5e4: bd59 j 47a <stbsp__real_to_str+0x290>
- 5e6: 4335 li t1,13
- 5e8: 5e25 li t3,-23
- 5ea: 026e0e3b mulw t3,t3,t1
- 5ee: 01de0ebb addw t4,t3,t4
- 5f2: de0850e3 bgez a6,3d2 <stbsp__real_to_str+0x1e8>
- 5f6: a819 j 60c <stbsp__real_to_str+0x422>
- 5f8: 02571313 slli t1,a4,0x25
- 5fc: 02535313 srli t1,t1,0x25
- 600: 0305 addi t1,t1,1
- 602: 475d li a4,23
- 604: ce676ee3 bltu a4,t1,300 <stbsp__real_to_str+0x116>
- 608: 4829 li a6,10
- 60a: b759 j 590 <stbsp__real_to_str+0x3a6>
- 60c: 260e8663 beqz t4,878 <stbsp__real_to_str+0x68e>
- 610: 00231e13 slli t3,t1,0x2
- 614: 41c30e33 sub t3,t1,t3
- 618: 0e0e slli t3,t3,0x3
- 61a: 9e1a add t3,t3,t1
- 61c: fffe881b addiw a6,t4,-1
- 620: 9e7a add t3,t3,t5
- 622: 00005e97 auipc t4,0x5
- 626: dd6e8e93 addi t4,t4,-554 # 53f8 <stbsp__bot>
- 62a: 0e0e slli t3,t3,0x3
- 62c: 080e slli a6,a6,0x3
- 62e: 9876 add a6,a6,t4
- 630: 9ef2 add t4,t4,t3
- 632: 0b883607 fld fa2,184(a6)
- 636: f20887d3 fmv.d.x fa5,a7
- 63a: 0b0ebf03 ld t5,176(t4)
- 63e: f8000e37 lui t3,0xf8000
- 642: 011e7eb3 and t4,t3,a7
- 646: 12f676d3 fmul.d fa3,fa2,fa5
- 64a: 01ee7e33 and t3,t3,t5
- 64e: f20e07d3 fmv.d.x fa5,t3
- 652: f20e0753 fmv.d.x fa4,t3
- 656: f20e8553 fmv.d.x fa0,t4
- 65a: 0af67653 fsub.d fa2,fa2,fa5
- 65e: f20e87d3 fmv.d.x fa5,t4
- 662: f20e85d3 fmv.d.x fa1,t4
- 666: 6ae7f7c7 fmsub.d fa5,fa5,fa4,fa3
- 66a: f2088753 fmv.d.x fa4,a7
- 66e: 0ab775d3 fsub.d fa1,fa4,fa1
- 672: 16883707 fld fa4,360(a6)
- 676: 7aa677c3 fmadd.d fa5,fa2,fa0,fa5
- 67a: f20e0553 fmv.d.x fa0,t3
- 67e: 7aa5f7c3 fmadd.d fa5,fa1,fa0,fa5
- 682: 7ac5f5c3 fmadd.d fa1,fa1,fa2,fa5
- 686: f20887d3 fmv.d.x fa5,a7
- 68a: 5af77743 fmadd.d fa4,fa4,fa5,fa1
- 68e: c00f87e3 beqz t6,29c <stbsp__real_to_str+0xb2>
- 692: 02d777d3 fadd.d fa5,fa4,fa3
- 696: fff3089b addiw a7,t1,-1
- 69a: 00005817 auipc a6,0x5
- 69e: d5e80813 addi a6,a6,-674 # 53f8 <stbsp__bot>
- 6a2: 030e slli t1,t1,0x3
- 6a4: 088e slli a7,a7,0x3
- 6a6: 98c2 add a7,a7,a6
- 6a8: 981a add a6,a6,t1
- 6aa: e2078e53 fmv.x.d t3,fa5
- 6ae: 21083e83 ld t4,528(a6)
- 6b2: f8000837 lui a6,0xf8000
- 6b6: 2188b507 fld fa0,536(a7)
- 6ba: 01c87333 and t1,a6,t3
- 6be: 01d87833 and a6,a6,t4
- 6c2: f2080653 fmv.d.x fa2,a6
- 6c6: 12f577d3 fmul.d fa5,fa0,fa5
- 6ca: 2808b587 fld fa1,640(a7)
- 6ce: 0ac57053 fsub.d ft0,fa0,fa2
- 6d2: f20e0653 fmv.d.x fa2,t3
- 6d6: 0ad67153 fsub.d ft2,fa2,fa3
- 6da: f20806d3 fmv.d.x fa3,a6
- 6de: f2030653 fmv.d.x fa2,t1
- 6e2: 7ac6f0c7 fmsub.d ft1,fa3,fa2,fa5
- 6e6: f20e06d3 fmv.d.x fa3,t3
- 6ea: 0ac6f653 fsub.d fa2,fa3,fa2
- 6ee: 22f786d3 fmv.d fa3,fa5
- 6f2: 0a2777d3 fsub.d fa5,fa4,ft2
- 6f6: f2030753 fmv.d.x fa4,t1
- 6fa: 0ae07743 fmadd.d fa4,ft0,fa4,ft1
- 6fe: 12a7f7d3 fmul.d fa5,fa5,fa0
- 702: f2080553 fmv.d.x fa0,a6
- 706: 72a67743 fmadd.d fa4,fa2,fa0,fa4
- 70a: f20e0553 fmv.d.x fa0,t3
- 70e: 7aa5f7c3 fmadd.d fa5,fa1,fa0,fa5
- 712: 72067643 fmadd.d fa2,fa2,ft0,fa4
- 716: 02f67753 fadd.d fa4,fa2,fa5
- 71a: b649 j 29c <stbsp__real_to_str+0xb2>
- 71c: 02571313 slli t1,a4,0x25
- 720: 02535313 srli t1,t1,0x25
- 724: 0305 addi t1,t1,1
- 726: 475d li a4,23
- 728: d46769e3 bltu a4,t1,47a <stbsp__real_to_str+0x290>
- 72c: bd99 j 582 <stbsp__real_to_str+0x398>
- 72e: 87fe mv a5,t6
- 730: 8fbe mv t6,a5
- 732: b101 j 332 <stbsp__real_to_str+0x148>
- 734: 87fe mv a5,t6
- 736: 3e800713 li a4,1000
- 73a: 02e7f73b remuw a4,a5,a4
- 73e: 2781 sext.w a5,a5
- 740: eb01 bnez a4,750 <stbsp__real_to_str+0x566>
- 742: 3e800813 li a6,1000
- 746: 0307d7bb divuw a5,a5,a6
- 74a: 0307f73b remuw a4,a5,a6
- 74e: df65 beqz a4,746 <stbsp__real_to_str+0x55c>
- 750: 02079f93 slli t6,a5,0x20
- 754: 020fdf93 srli t6,t6,0x20
- 758: b31d j 47e <stbsp__real_to_str+0x294>
- 75a: 4785 li a5,1
- 75c: c29c sw a5,0(a3)
- 75e: 00c2b023 sd a2,0(t0)
- 762: 03000793 li a5,48
- 766: 00f60023 sb a5,0(a2)
- 76a: 4f05 li t5,1
- 76c: 01e5a023 sw t5,0(a1)
- 770: 6105 addi sp,sp,32
- 772: 8082 ret
- 774: 0805 addi a6,a6,1 # fffffffff8000001 <_ZSt4cerr+0xfffffffff7ff8779>
- 776: 3f7d addiw t5,t5,-1
- 778: b3d1 j 53c <stbsp__real_to_str+0x352>
- 77a: e826 sd s1,16(sp)
- 77c: e44a sd s2,8(sp)
- 77e: 4859 li a6,22
- 780: 8976 mv s2,t4
- 782: 11d84363 blt a6,t4,888 <stbsp__real_to_str+0x69e>
- 786: 0009049b sext.w s1,s2
- 78a: 00005e17 auipc t3,0x5
- 78e: c6ee0e13 addi t3,t3,-914 # 53f8 <stbsp__bot>
- 792: 00349813 slli a6,s1,0x3
- 796: 9872 add a6,a6,t3
- 798: 00083687 fld fa3,0(a6)
- 79c: 00083803 ld a6,0(a6)
- 7a0: f20887d3 fmv.d.x fa5,a7
- 7a4: f8000fb7 lui t6,0xf8000
- 7a8: 010ff833 and a6,t6,a6
- 7ac: 12f6f553 fmul.d fa0,fa3,fa5
- 7b0: f20807d3 fmv.d.x fa5,a6
- 7b4: 011ff433 and s0,t6,a7
- 7b8: f2040753 fmv.d.x fa4,s0
- 7bc: 0af6f6d3 fsub.d fa3,fa3,fa5
- 7c0: f20887d3 fmv.d.x fa5,a7
- 7c4: f2080653 fmv.d.x fa2,a6
- 7c8: 412e8ebb subw t4,t4,s2
- 7cc: 0ae7f753 fsub.d fa4,fa5,fa4
- 7d0: f20407d3 fmv.d.x fa5,s0
- 7d4: e20508d3 fmv.x.d a7,fa0
- 7d8: 52c7f7c7 fmsub.d fa5,fa5,fa2,fa0
- 7dc: f2040653 fmv.d.x fa2,s0
- 7e0: 7ac6f7c3 fmadd.d fa5,fa3,fa2,fa5
- 7e4: f2080653 fmv.d.x fa2,a6
- 7e8: 7ac777c3 fmadd.d fa5,fa4,fa2,fa5
- 7ec: 7ad77743 fmadd.d fa4,fa4,fa3,fa5
- 7f0: 080e8963 beqz t4,882 <stbsp__real_to_str+0x698>
- 7f4: 02e577d3 fadd.d fa5,fa0,fa4
- 7f8: 0e8e slli t4,t4,0x3
- 7fa: 01de0833 add a6,t3,t4
- 7fe: 00083587 fld fa1,0(a6)
- 802: 00231893 slli a7,t1,0x2
- 806: 411308b3 sub a7,t1,a7
- 80a: 00389813 slli a6,a7,0x3
- 80e: e2078453 fmv.x.d s0,fa5
- 812: 12f5f7d3 fmul.d fa5,fa1,fa5
- 816: 981a add a6,a6,t1
- 818: 987a add a6,a6,t5
- 81a: 40980833 sub a6,a6,s1
- 81e: 080e slli a6,a6,0x3
- 820: 9872 add a6,a6,t3
- 822: 00083e83 ld t4,0(a6)
- 826: 008ff833 and a6,t6,s0
- 82a: e20788d3 fmv.x.d a7,fa5
- 82e: f20806d3 fmv.d.x fa3,a6
- 832: f20407d3 fmv.d.x fa5,s0
- 836: 01dfffb3 and t6,t6,t4
- 83a: f20880d3 fmv.d.x ft1,a7
- 83e: 0ad7f653 fsub.d fa2,fa5,fa3
- 842: f20f87d3 fmv.d.x fa5,t6
- 846: 64c2 ld s1,16(sp)
- 848: 6922 ld s2,8(sp)
- 84a: 0af5f053 fsub.d ft0,fa1,fa5
- 84e: 0ad7f6c7 fmsub.d fa3,fa5,fa3,ft1
- 852: f20407d3 fmv.d.x fa5,s0
- 856: 0aa7f7d3 fsub.d fa5,fa5,fa0
- 85a: f2080553 fmv.d.x fa0,a6
- 85e: 6aa076c3 fmadd.d fa3,ft0,fa0,fa3
- 862: 0af77753 fsub.d fa4,fa4,fa5
- 866: f20f87d3 fmv.d.x fa5,t6
- 86a: 6af677c3 fmadd.d fa5,fa2,fa5,fa3
- 86e: 7a067643 fmadd.d fa2,fa2,ft0,fa5
- 872: 62e5f743 fmadd.d fa4,fa1,fa4,fa2
- 876: b6b5 j 3e2 <stbsp__real_to_str+0x1f8>
- 878: f20886d3 fmv.d.x fa3,a7
- 87c: f2000753 fmv.d.x fa4,zero
- 880: b539 j 68e <stbsp__real_to_str+0x4a4>
- 882: 64c2 ld s1,16(sp)
- 884: 6922 ld s2,8(sp)
- 886: beb1 j 3e2 <stbsp__real_to_str+0x1f8>
- 888: 4959 li s2,22
- 88a: bdf5 j 786 <stbsp__real_to_str+0x59c>
- 88c: e826 sd s1,16(sp)
- 88e: e44a sd s2,8(sp)
- 890: ecc00393 li t2,-308
- 894: 4eed li t4,27
- 896: 4335 li t1,13
- 898: 14600f13 li t5,326
- 89c: b5cd j 77e <stbsp__real_to_str+0x594>
- 89e: 26900313 li t1,617
- 8a2: 0303083b mulw a6,t1,a6
- 8a6: 41f8531b sraiw t1,a6,0x1f
- 8aa: 0153531b srliw t1,t1,0x15
- 8ae: 0103033b addw t1,t1,a6
- 8b2: 40b3539b sraiw t2,t1,0xb
- 8b6: 4849 li a6,18
- 8b8: 4078083b subw a6,a6,t2
- 8bc: b249 j 23e <stbsp__real_to_str+0x54>
-
-00000000000008be <_in_char.part.0>:
-static int _in_char(_InContext *ctx)
- 8be: 87aa mv a5,a0
- if (ctx->fd == -1)
- 8c0: 4508 lw a0,8(a0)
- 8c2: 577d li a4,-1
- 8c4: 00e51d63 bne a0,a4,8de <_in_char.part.0+0x20>
- if (ctx->buf[ctx->pos] == '\0')
- 8c8: 6b94 ld a3,16(a5)
- 8ca: 6398 ld a4,0(a5)
- 8cc: 9736 add a4,a4,a3
- 8ce: 00074603 lbu a2,0(a4)
- 8d2: c60d beqz a2,8fc <_in_char.part.0+0x3e>
- return (unsigned char)ctx->buf[ctx->pos++];
- 8d4: 0685 addi a3,a3,1
- 8d6: eb94 sd a3,16(a5)
- 8d8: 00074503 lbu a0,0(a4)
- 8dc: 8082 ret
-static int _in_char(_InContext *ctx)
- 8de: 1101 addi sp,sp,-32
- if (read(ctx->fd, &c, 1) == 1)
- 8e0: 4605 li a2,1
- 8e2: 00f10593 addi a1,sp,15
-static int _in_char(_InContext *ctx)
- 8e6: ec06 sd ra,24(sp)
- if (read(ctx->fd, &c, 1) == 1)
- 8e8: 801ff0ef jal e8 <read>
- 8ec: 4785 li a5,1
- 8ee: 00f51963 bne a0,a5,900 <_in_char.part.0+0x42>
- return (unsigned char)c;
- 8f2: 00f14503 lbu a0,15(sp)
-}
- 8f6: 60e2 ld ra,24(sp)
- 8f8: 6105 addi sp,sp,32
- 8fa: 8082 ret
- return -1;
- 8fc: 557d li a0,-1
-}
- 8fe: 8082 ret
- return -1;
- 900: 557d li a0,-1
- 902: bfd5 j 8f6 <_in_char.part.0+0x38>
-
-0000000000000904 <_skip_space>:
-{
- 904: 7139 addi sp,sp,-64
- 906: f822 sd s0,48(sp)
- 908: f426 sd s1,40(sp)
- 90a: f04a sd s2,32(sp)
- 90c: ec4e sd s3,24(sp)
- 90e: e852 sd s4,16(sp)
- 910: fc06 sd ra,56(sp)
- 912: 842a mv s0,a0
- ctx->ungotten = -1;
- 914: 54fd li s1,-1
- if (read(ctx->fd, &c, 1) == 1)
- 916: 00f10a13 addi s4,sp,15
- return c == ' ' || c == '\t' || c == '\n' || c == '\v' || c == '\f' || c == '\r';
- 91a: 02000913 li s2,32
- 91e: 4991 li s3,4
- if (ctx->ungotten >= 0)
- 920: 4c1c lw a5,24(s0)
- 922: 0407d163 bgez a5,964 <_skip_space+0x60>
- if (ctx->fd == -1)
- 926: 4408 lw a0,8(s0)
- if (read(ctx->fd, &c, 1) == 1)
- 928: 4605 li a2,1
- 92a: 85d2 mv a1,s4
- if (ctx->fd == -1)
- 92c: 02951e63 bne a0,s1,968 <_skip_space+0x64>
- if (ctx->buf[ctx->pos] == '\0')
- 930: 6818 ld a4,16(s0)
- 932: 601c ld a5,0(s0)
- return (unsigned char)ctx->buf[ctx->pos++];
- 934: 00170693 addi a3,a4,1
- if (ctx->buf[ctx->pos] == '\0')
- 938: 97ba add a5,a5,a4
- 93a: 0007c703 lbu a4,0(a5) # 7000 <_stdout+0x150>
- 93e: cb19 beqz a4,954 <_skip_space+0x50>
- return (unsigned char)ctx->buf[ctx->pos++];
- 940: e814 sd a3,16(s0)
- 942: 0007c783 lbu a5,0(a5)
- return c == ' ' || c == '\t' || c == '\n' || c == '\v' || c == '\f' || c == '\r';
- 946: ff77871b addiw a4,a5,-9
- 94a: fd278be3 beq a5,s2,920 <_skip_space+0x1c>
- 94e: fce9f9e3 bgeu s3,a4,920 <_skip_space+0x1c>
- ctx->ungotten = c;
- 952: cc1c sw a5,24(s0)
-}
- 954: 70e2 ld ra,56(sp)
- 956: 7442 ld s0,48(sp)
- 958: 74a2 ld s1,40(sp)
- 95a: 7902 ld s2,32(sp)
- 95c: 69e2 ld s3,24(sp)
- 95e: 6a42 ld s4,16(sp)
- 960: 6121 addi sp,sp,64
- 962: 8082 ret
- ctx->ungotten = -1;
- 964: cc04 sw s1,24(s0)
- return c;
- 966: b7c5 j 946 <_skip_space+0x42>
- if (read(ctx->fd, &c, 1) == 1)
- 968: f80ff0ef jal e8 <read>
- 96c: 4785 li a5,1
- 96e: fef513e3 bne a0,a5,954 <_skip_space+0x50>
- return (unsigned char)c;
- 972: 00f14783 lbu a5,15(sp)
- 976: bfc1 j 946 <_skip_space+0x42>
-
-0000000000000978 <_vscanf_core.constprop.0>:
-static int _vscanf_core(_InContext *ctx, const char *format, va_list ap)
- 978: 7155 addi sp,sp,-208
- 97a: e586 sd ra,200(sp)
- 97c: e95a sd s6,144(sp)
- while (*p)
- 97e: 0005c783 lbu a5,0(a1)
-static int _vscanf_core(_InContext *ctx, const char *format, va_list ap)
- 982: e432 sd a2,8(sp)
- while (*p)
- 984: 68078b63 beqz a5,101a <_vscanf_core.constprop.0+0x6a2>
- 988: e1a2 sd s0,192(sp)
- 98a: fd26 sd s1,184(sp)
- 98c: f152 sd s4,160(sp)
- 98e: ed56 sd s5,152(sp)
- 990: f4ee sd s11,104(sp)
- 992: 842e mv s0,a1
- 994: 8daa mv s11,a0
- int assigned = 0;
- 996: 4b01 li s6,0
- return c == ' ' || c == '\t' || c == '\n' || c == '\v' || c == '\f' || c == '\r';
- 998: 02000493 li s1,32
- 99c: 4a91 li s5,4
- if (*p != '%')
- 99e: 02500a13 li s4,37
- return c == ' ' || c == '\t' || c == '\n' || c == '\v' || c == '\f' || c == '\r';
- 9a2: 04978763 beq a5,s1,9f0 <_vscanf_core.constprop.0+0x78>
- 9a6: ff77869b addiw a3,a5,-9
- 9aa: 0ff6f693 zext.b a3,a3
- 9ae: 04daf163 bgeu s5,a3,9f0 <_vscanf_core.constprop.0+0x78>
- if (*p != '%')
- 9b2: 07478d63 beq a5,s4,a2c <_vscanf_core.constprop.0+0xb4>
- _skip_space(ctx);
- 9b6: 856e mv a0,s11
- 9b8: f4dff0ef jal 904 <_skip_space>
- if (ctx->ungotten >= 0)
- 9bc: 018da503 lw a0,24(s11)
- 9c0: 04055a63 bgez a0,a14 <_vscanf_core.constprop.0+0x9c>
- 9c4: 856e mv a0,s11
- 9c6: ef9ff0ef jal 8be <_in_char.part.0>
- if (c != *p)
- 9ca: 00044783 lbu a5,0(s0)
- 9ce: 04a78a63 beq a5,a0,a22 <_vscanf_core.constprop.0+0xaa>
- if (c != -1)
- 9d2: 57fd li a5,-1
- 9d4: 00f50463 beq a0,a5,9dc <_vscanf_core.constprop.0+0x64>
- ctx->ungotten = c;
- 9d8: 00adac23 sw a0,24(s11)
- 9dc: 640e ld s0,192(sp)
- 9de: 74ea ld s1,184(sp)
- 9e0: 7a0a ld s4,160(sp)
- 9e2: 6aea ld s5,152(sp)
- 9e4: 7da6 ld s11,104(sp)
-}
- 9e6: 60ae ld ra,200(sp)
- 9e8: 855a mv a0,s6
- 9ea: 6b4a ld s6,144(sp)
- 9ec: 6169 addi sp,sp,208
- 9ee: 8082 ret
- _skip_space(ctx);
- 9f0: 856e mv a0,s11
- 9f2: f13ff0ef jal 904 <_skip_space>
- while (isspace(*p))
- 9f6: 00044783 lbu a5,0(s0)
- return c == ' ' || c == '\t' || c == '\n' || c == '\v' || c == '\f' || c == '\r';
- 9fa: 4611 li a2,4
- 9fc: ff77869b addiw a3,a5,-9
- a00: 0ff6f693 zext.b a3,a3
- a04: 00978663 beq a5,s1,a10 <_vscanf_core.constprop.0+0x98>
- a08: 00d67463 bgeu a2,a3,a10 <_vscanf_core.constprop.0+0x98>
- while (*p)
- a0c: fbd9 bnez a5,9a2 <_vscanf_core.constprop.0+0x2a>
- a0e: b7f9 j 9dc <_vscanf_core.constprop.0+0x64>
- p++;
- a10: 0405 addi s0,s0,1
- a12: b7d5 j 9f6 <_vscanf_core.constprop.0+0x7e>
- ctx->ungotten = -1;
- a14: 57fd li a5,-1
- a16: 00fdac23 sw a5,24(s11)
- if (c != *p)
- a1a: 00044783 lbu a5,0(s0)
- a1e: faa79ae3 bne a5,a0,9d2 <_vscanf_core.constprop.0+0x5a>
- while (*p)
- a22: 00144783 lbu a5,1(s0)
- p++;
- a26: 0405 addi s0,s0,1
- while (*p)
- a28: ffad bnez a5,9a2 <_vscanf_core.constprop.0+0x2a>
- a2a: bf4d j 9dc <_vscanf_core.constprop.0+0x64>
- a2c: f94a sd s2,176(sp)
- a2e: f54e sd s3,168(sp)
- a30: e55e sd s7,136(sp)
- a32: e162 sd s8,128(sp)
- if (*p == '*')
- a34: 00144583 lbu a1,1(s0)
- a38: 02a00793 li a5,42
- a3c: 22f58d63 beq a1,a5,c76 <_vscanf_core.constprop.0+0x2fe>
- p++;
- a40: 0405 addi s0,s0,1
- int suppress = 0;
- a42: 4981 li s3,0
- while (*p >= '0' && *p <= '9')
- a44: fd05861b addiw a2,a1,-48
- a48: 0ff67693 zext.b a3,a2
- a4c: 47a5 li a5,9
- a4e: 36d7e763 bltu a5,a3,dbc <_vscanf_core.constprop.0+0x444>
- a52: 4781 li a5,0
- a54: 4825 li a6,9
- a56: a019 j a5c <_vscanf_core.constprop.0+0xe4>
- width = width * 10 + (*p - '0');
- a58: 0016979b slliw a5,a3,0x1
- while (*p >= '0' && *p <= '9')
- a5c: 00144583 lbu a1,1(s0)
- width = width * 10 + (*p - '0');
- a60: 00f6093b addw s2,a2,a5
- a64: 0029169b slliw a3,s2,0x2
- while (*p >= '0' && *p <= '9')
- a68: fd05861b addiw a2,a1,-48
- a6c: 0ff67513 zext.b a0,a2
- width = width * 10 + (*p - '0');
- a70: 012686bb addw a3,a3,s2
- p++;
- a74: 0405 addi s0,s0,1
- while (*p >= '0' && *p <= '9')
- a76: fea871e3 bgeu a6,a0,a58 <_vscanf_core.constprop.0+0xe0>
- if (*p == 'l')
- a7a: 06c00693 li a3,108
- p++;
- a7e: 00140b93 addi s7,s0,1
- if (*p == 'l')
- a82: 1ed58f63 beq a1,a3,c80 <_vscanf_core.constprop.0+0x308>
- else if (*p == 'h')
- a86: 06800693 li a3,104
- a8a: 2ad58863 beq a1,a3,d3a <_vscanf_core.constprop.0+0x3c2>
- char spec = *p++;
- a8e: 00044c03 lbu s8,0(s0)
- a92: 8ba2 mv s7,s0
- int len_mod = 0;
- a94: ec02 sd zero,24(sp)
- char spec = *p++;
- a96: 06300693 li a3,99
- a9a: 001b8413 addi s0,s7,1
- if (!spec)
- a9e: 2adc0863 beq s8,a3,d4e <_vscanf_core.constprop.0+0x3d6>
- aa2: 1f86fc63 bgeu a3,s8,c9a <_vscanf_core.constprop.0+0x322>
- aa6: f9cc069b addiw a3,s8,-100
- aaa: 0ff6f693 zext.b a3,a3
- aae: 4651 li a2,20
- ab0: 0cd66e63 bltu a2,a3,b8c <_vscanf_core.constprop.0+0x214>
- ab4: 00120637 lui a2,0x120
- ab8: 4585 li a1,1
- aba: 00d595b3 sll a1,a1,a3
- abe: 02160613 addi a2,a2,33 # 120021 <_ZSt4cerr+0x118799>
- ac2: 8e6d and a2,a2,a1
- ac4: ee69 bnez a2,b9e <_vscanf_core.constprop.0+0x226>
- ac6: 89b9 andi a1,a1,14
- ac8: 1e059263 bnez a1,cac <_vscanf_core.constprop.0+0x334>
- acc: 463d li a2,15
- ace: 0ac69f63 bne a3,a2,b8c <_vscanf_core.constprop.0+0x214>
- _skip_space(ctx);
- ad2: 856e mv a0,s11
- ad4: e31ff0ef jal 904 <_skip_space>
- char *buf = suppress ? NULL : va_arg(ap, char *);
- ad8: ec02 sd zero,24(sp)
- ada: 00099763 bnez s3,ae8 <_vscanf_core.constprop.0+0x170>
- ade: 67a2 ld a5,8(sp)
- ae0: 6398 ld a4,0(a5)
- ae2: 07a1 addi a5,a5,8
- ae4: e43e sd a5,8(sp)
- ae6: ec3a sd a4,24(sp)
- if (ctx->ungotten >= 0)
- ae8: 018da503 lw a0,24(s11)
- aec: 2e055b63 bgez a0,de2 <_vscanf_core.constprop.0+0x46a>
- af0: 856e mv a0,s11
- af2: dcdff0ef jal 8be <_in_char.part.0>
- while (c != -1 && !isspace(c))
- af6: 56fd li a3,-1
- af8: 6ad50363 beq a0,a3,119e <_vscanf_core.constprop.0+0x826>
- return c == ' ' || c == '\t' || c == '\n' || c == '\v' || c == '\f' || c == '\r';
- afc: 02000693 li a3,32
- b00: 3ed50963 beq a0,a3,ef2 <_vscanf_core.constprop.0+0x57a>
- b04: 46a5 li a3,9
- b06: 3ed50663 beq a0,a3,ef2 <_vscanf_core.constprop.0+0x57a>
- b0a: 46a9 li a3,10
- b0c: 3ed50363 beq a0,a3,ef2 <_vscanf_core.constprop.0+0x57a>
- b10: 46ad li a3,11
- b12: 3ed50063 beq a0,a3,ef2 <_vscanf_core.constprop.0+0x57a>
- b16: 46b1 li a3,12
- b18: 3cd50d63 beq a0,a3,ef2 <_vscanf_core.constprop.0+0x57a>
- b1c: 46b5 li a3,13
- b1e: 3cd50a63 beq a0,a3,ef2 <_vscanf_core.constprop.0+0x57a>
- b22: 67e2 ld a5,24(sp)
- b24: fce6 sd s9,120(sp)
- b26: f8ea sd s10,112(sp)
- b28: e83e sd a5,16(sp)
- b2a: 4d01 li s10,0
- while (c != -1 && !isspace(c))
- b2c: 5c7d li s8,-1
- return c == ' ' || c == '\t' || c == '\n' || c == '\v' || c == '\f' || c == '\r';
- b2e: 02000c93 li s9,32
- if (width > 0 && i >= width)
- b32: 01205463 blez s2,b3a <_vscanf_core.constprop.0+0x1c2>
- b36: 052d5563 bge s10,s2,b80 <_vscanf_core.constprop.0+0x208>
- if (!suppress)
- b3a: 00099563 bnez s3,b44 <_vscanf_core.constprop.0+0x1cc>
- buf[i] = (char)c;
- b3e: 67c2 ld a5,16(sp)
- b40: 00a78023 sb a0,0(a5)
- if (ctx->ungotten >= 0)
- b44: 018da503 lw a0,24(s11)
- i++;
- b48: 2d05 addiw s10,s10,1
- if (ctx->ungotten >= 0)
- b4a: 30055963 bgez a0,e5c <_vscanf_core.constprop.0+0x4e4>
- b4e: 856e mv a0,s11
- b50: d6fff0ef jal 8be <_in_char.part.0>
- while (c != -1 && !isspace(c))
- b54: 27850663 beq a0,s8,dc0 <_vscanf_core.constprop.0+0x448>
- return c == ' ' || c == '\t' || c == '\n' || c == '\v' || c == '\f' || c == '\r';
- b58: 03950463 beq a0,s9,b80 <_vscanf_core.constprop.0+0x208>
- b5c: 47a5 li a5,9
- b5e: 02f50163 beq a0,a5,b80 <_vscanf_core.constprop.0+0x208>
- b62: 47a9 li a5,10
- b64: 00f50e63 beq a0,a5,b80 <_vscanf_core.constprop.0+0x208>
- b68: 47ad li a5,11
- b6a: 00f50b63 beq a0,a5,b80 <_vscanf_core.constprop.0+0x208>
- b6e: 47b1 li a5,12
- b70: 00f50863 beq a0,a5,b80 <_vscanf_core.constprop.0+0x208>
- b74: 67c2 ld a5,16(sp)
- b76: 0785 addi a5,a5,1
- b78: e83e sd a5,16(sp)
- b7a: 47b5 li a5,13
- b7c: faf51be3 bne a0,a5,b32 <_vscanf_core.constprop.0+0x1ba>
- if (!suppress)
- b80: 64098a63 beqz s3,11d4 <_vscanf_core.constprop.0+0x85c>
- b84: 7ce6 ld s9,120(sp)
- b86: 7d46 ld s10,112(sp)
- ctx->ungotten = c;
- b88: 00adac23 sw a0,24(s11)
- while (*p)
- b8c: 001bc783 lbu a5,1(s7)
- b90: 794a ld s2,176(sp)
- b92: 79aa ld s3,168(sp)
- b94: 6baa ld s7,136(sp)
- b96: 6c0a ld s8,128(sp)
- b98: e00795e3 bnez a5,9a2 <_vscanf_core.constprop.0+0x2a>
- b9c: b581 j 9dc <_vscanf_core.constprop.0+0x64>
- _skip_space(ctx);
- b9e: 856e mv a0,s11
- ba0: f8ea sd s10,112(sp)
- ba2: d63ff0ef jal 904 <_skip_space>
- if (ctx->ungotten >= 0)
- ba6: 018da503 lw a0,24(s11)
- baa: 24055063 bgez a0,dea <_vscanf_core.constprop.0+0x472>
- bae: 856e mv a0,s11
- bb0: d0fff0ef jal 8be <_in_char.part.0>
- if (c == '-' || c == '+')
- bb4: fd55069b addiw a3,a0,-43
- bb8: 9af5 andi a3,a3,-3
- bba: 2681 sext.w a3,a3
- int i = 0, c = _in_char(ctx);
- bbc: 4d01 li s10,0
- if (c == '-' || c == '+')
- bbe: 3e068863 beqz a3,fae <_vscanf_core.constprop.0+0x636>
- int base = (spec == 'x') ? 16 : (spec == 'i' ? 0 : 10);
- bc2: 07800693 li a3,120
- bc6: 4641 li a2,16
- bc8: 00dc0863 beq s8,a3,bd8 <_vscanf_core.constprop.0+0x260>
- bcc: 06900693 li a3,105
- bd0: 4629 li a2,10
- bd2: 00dc1363 bne s8,a3,bd8 <_vscanf_core.constprop.0+0x260>
- bd6: 4601 li a2,0
- while (c != -1 && i < 63)
- bd8: 56fd li a3,-1
- bda: 5cd50863 beq a0,a3,11aa <_vscanf_core.constprop.0+0x832>
- bde: fce6 sd s9,120(sp)
- be0: 02010893 addi a7,sp,32
- be4: 01a88c33 add s8,a7,s10
- int hex = (base == 16 || base == 0) && ((c >= 'a' && c <= 'f') || (c >= 'A' && c <= 'F'));
- be8: 4cc1 li s9,16
- int digit = (c >= '0' && c <= '9');
- bea: fd05069b addiw a3,a0,-48
- bee: 0005031b sext.w t1,a0
- bf2: 00a6b593 sltiu a1,a3,10
- int hex = (base == 16 || base == 0) && ((c >= 'a' && c <= 'f') || (c >= 'A' && c <= 'F'));
- bf6: 27960a63 beq a2,s9,e6a <_vscanf_core.constprop.0+0x4f2>
- bfa: 2a060d63 beqz a2,eb4 <_vscanf_core.constprop.0+0x53c>
- int x = (c == 'x' || c == 'X');
- bfe: 07800793 li a5,120
- c02: 2ef50363 beq a0,a5,ee8 <_vscanf_core.constprop.0+0x570>
- c06: fa850693 addi a3,a0,-88
- c0a: 0016b693 seqz a3,a3
- c0e: 4301 li t1,0
- if (width > 0 && i >= width)
- c10: 01205463 blez s2,c18 <_vscanf_core.constprop.0+0x2a0>
- c14: 032d5a63 bge s10,s2,c48 <_vscanf_core.constprop.0+0x2d0>
- if (digit || hex || x)
- c18: 0066e6b3 or a3,a3,t1
- c1c: 8ecd or a3,a3,a1
- c1e: c68d beqz a3,c48 <_vscanf_core.constprop.0+0x2d0>
- num_buf[i++] = (char)c;
- c20: 00ac0023 sb a0,0(s8)
- if (ctx->ungotten >= 0)
- c24: 018da503 lw a0,24(s11)
- num_buf[i++] = (char)c;
- c28: 2d05 addiw s10,s10,1
- if (ctx->ungotten >= 0)
- c2a: 22055c63 bgez a0,e62 <_vscanf_core.constprop.0+0x4ea>
- c2e: 856e mv a0,s11
- c30: e832 sd a2,16(sp)
- c32: c8dff0ef jal 8be <_in_char.part.0>
- while (c != -1 && i < 63)
- c36: 57fd li a5,-1
- c38: 6642 ld a2,16(sp)
- c3a: 3cf50263 beq a0,a5,ffe <_vscanf_core.constprop.0+0x686>
- c3e: 03f00693 li a3,63
- c42: 0c05 addi s8,s8,1
- c44: fadd13e3 bne s10,a3,bea <_vscanf_core.constprop.0+0x272>
- num_buf[i] = '\0';
- c48: 040d0793 addi a5,s10,64
- c4c: 1018 addi a4,sp,32
- c4e: 97ba add a5,a5,a4
- c50: fc078023 sb zero,-64(a5)
- ctx->ungotten = c;
- c54: 00adac23 sw a0,24(s11)
- c58: 7ce6 ld s9,120(sp)
- if (i == 0)
- c5a: 1e0d0663 beqz s10,e46 <_vscanf_core.constprop.0+0x4ce>
- if (!suppress)
- c5e: 36098363 beqz s3,fc4 <_vscanf_core.constprop.0+0x64c>
- while (*p)
- c62: 001bc783 lbu a5,1(s7)
- {
- c66: 794a ld s2,176(sp)
- c68: 79aa ld s3,168(sp)
- c6a: 6baa ld s7,136(sp)
- c6c: 6c0a ld s8,128(sp)
- c6e: 7d46 ld s10,112(sp)
- while (*p)
- c70: d20799e3 bnez a5,9a2 <_vscanf_core.constprop.0+0x2a>
- c74: b3a5 j 9dc <_vscanf_core.constprop.0+0x64>
- while (*p >= '0' && *p <= '9')
- c76: 00244583 lbu a1,2(s0)
- suppress = 1;
- c7a: 4985 li s3,1
- p++;
- c7c: 0409 addi s0,s0,2
- c7e: b3d9 j a44 <_vscanf_core.constprop.0+0xcc>
- if (*p == 'l')
- c80: 00144c03 lbu s8,1(s0)
- len_mod = 1;
- c84: 4785 li a5,1
- c86: ec3e sd a5,24(sp)
- if (*p == 'l')
- c88: e0bc17e3 bne s8,a1,a96 <_vscanf_core.constprop.0+0x11e>
- len_mod = 2;
- c8c: 4789 li a5,2
- char spec = *p++;
- c8e: 00244c03 lbu s8,2(s0)
- p++;
- c92: 00240b93 addi s7,s0,2
- len_mod = 2;
- c96: ec3e sd a5,24(sp)
- c98: bbfd j a96 <_vscanf_core.constprop.0+0x11e>
- c9a: 100c0763 beqz s8,da8 <_vscanf_core.constprop.0+0x430>
- c9e: fbbc079b addiw a5,s8,-69
- ca2: 0ff7f793 zext.b a5,a5
- ca6: 4689 li a3,2
- ca8: eef6e2e3 bltu a3,a5,b8c <_vscanf_core.constprop.0+0x214>
- _skip_space(ctx);
- cac: 856e mv a0,s11
- cae: f8ea sd s10,112(sp)
- cb0: c55ff0ef jal 904 <_skip_space>
- if (ctx->ungotten >= 0)
- cb4: 018da783 lw a5,24(s11)
- cb8: 1207dd63 bgez a5,df2 <_vscanf_core.constprop.0+0x47a>
- cbc: 856e mv a0,s11
- cbe: c01ff0ef jal 8be <_in_char.part.0>
- if (c == '-' || c == '+')
- cc2: fd55069b addiw a3,a0,-43
- cc6: ffd6f613 andi a2,a3,-3
- cca: 2601 sext.w a2,a2
- ccc: 87aa mv a5,a0
- cce: 12060c63 beqz a2,e06 <_vscanf_core.constprop.0+0x48e>
- while (c != -1 && i < 63)
- cd2: 567d li a2,-1
- cd4: 16c50963 beq a0,a2,e46 <_vscanf_core.constprop.0+0x4ce>
- cd8: fce6 sd s9,120(sp)
- int i = 0, c = _in_char(ctx);
- cda: 4d01 li s10,0
- cdc: 80000937 lui s2,0x80000
- ce0: 197d addi s2,s2,-1 # ffffffff7fffffff <_ZSt4cerr+0xffffffff7fff8777>
- ce2: 0932 slli s2,s2,0xc
- ce4: 80194913 xori s2,s2,-2047
- ce8: 093e slli s2,s2,0xf
- cea: 02010813 addi a6,sp,32
- cee: 01a80cb3 add s9,a6,s10
- cf2: 03a00c13 li s8,58
- cf6: 1935 addi s2,s2,-19
- cf8: a831 j d14 <_vscanf_core.constprop.0+0x39c>
- cfa: bc5ff0ef jal 8be <_in_char.part.0>
- while (c != -1 && i < 63)
- cfe: 577d li a4,-1
- d00: 87aa mv a5,a0
- d02: 2ee50563 beq a0,a4,fec <_vscanf_core.constprop.0+0x674>
- d06: 03f00713 li a4,63
- d0a: 0c85 addi s9,s9,1
- d0c: 1eed0e63 beq s10,a4,f08 <_vscanf_core.constprop.0+0x590>
- d10: fd57869b addiw a3,a5,-43
- int c = ctx->ungotten;
- d14: 00d95633 srl a2,s2,a3
- d18: 856e mv a0,s11
- d1a: 8a05 andi a2,a2,1
- d1c: 1edc6663 bltu s8,a3,f08 <_vscanf_core.constprop.0+0x590>
- d20: 1e060463 beqz a2,f08 <_vscanf_core.constprop.0+0x590>
- num_buf[i++] = (char)c;
- d24: 00fc8023 sb a5,0(s9)
- if (ctx->ungotten >= 0)
- d28: 018da783 lw a5,24(s11)
- num_buf[i++] = (char)c;
- d2c: 2d05 addiw s10,s10,1
- if (ctx->ungotten >= 0)
- d2e: fc07c6e3 bltz a5,cfa <_vscanf_core.constprop.0+0x382>
- ctx->ungotten = -1;
- d32: 577d li a4,-1
- d34: 00edac23 sw a4,24(s11)
- while (c != -1 && i < 63)
- d38: b7f9 j d06 <_vscanf_core.constprop.0+0x38e>
- if (*p == 'h')
- d3a: 00144c03 lbu s8,1(s0)
- int len_mod = 0;
- d3e: ec02 sd zero,24(sp)
- if (*p == 'h')
- d40: d4bc1be3 bne s8,a1,a96 <_vscanf_core.constprop.0+0x11e>
- char spec = *p++;
- d44: 00244c03 lbu s8,2(s0)
- p++;
- d48: 00240b93 addi s7,s0,2
- d4c: b3a9 j a96 <_vscanf_core.constprop.0+0x11e>
- d4e: fce6 sd s9,120(sp)
- d50: f8ea sd s10,112(sp)
- int count = (width > 0) ? width : 1;
- d52: 00090c1b sext.w s8,s2
- d56: 0d205a63 blez s2,e2a <_vscanf_core.constprop.0+0x4b2>
- char *buf = suppress ? NULL : va_arg(ap, char *);
- d5a: 4d01 li s10,0
- d5c: 06098d63 beqz s3,dd6 <_vscanf_core.constprop.0+0x45e>
- for (int i = 0; i < count; i++)
- d60: 9c6a add s8,s8,s10
- if (c == -1)
- d62: 5cfd li s9,-1
- if (ctx->ungotten >= 0)
- d64: 018da783 lw a5,24(s11)
- ctx->ungotten = -1;
- d68: 856e mv a0,s11
- if (ctx->ungotten >= 0)
- d6a: 0207dc63 bgez a5,da2 <_vscanf_core.constprop.0+0x42a>
- d6e: b51ff0ef jal 8be <_in_char.part.0>
- d72: 87aa mv a5,a0
- if (c == -1)
- d74: 0b950d63 beq a0,s9,e2e <_vscanf_core.constprop.0+0x4b6>
- if (!suppress)
- d78: 00099463 bnez s3,d80 <_vscanf_core.constprop.0+0x408>
- buf[i] = (char)c;
- d7c: 00fd0023 sb a5,0(s10)
- for (int i = 0; i < count; i++)
- d80: 0d05 addi s10,s10,1
- d82: ffac11e3 bne s8,s10,d64 <_vscanf_core.constprop.0+0x3ec>
- while (*p)
- d86: 001bc783 lbu a5,1(s7)
- if (!suppress)
- d8a: 00099363 bnez s3,d90 <_vscanf_core.constprop.0+0x418>
- assigned++;
- d8e: 2b05 addiw s6,s6,1
- d90: 794a ld s2,176(sp)
- d92: 79aa ld s3,168(sp)
- d94: 6baa ld s7,136(sp)
- d96: 6c0a ld s8,128(sp)
- d98: 7ce6 ld s9,120(sp)
- d9a: 7d46 ld s10,112(sp)
- while (*p)
- d9c: c00793e3 bnez a5,9a2 <_vscanf_core.constprop.0+0x2a>
- da0: b935 j 9dc <_vscanf_core.constprop.0+0x64>
- ctx->ungotten = -1;
- da2: 019dac23 sw s9,24(s11)
- if (c == -1)
- da6: bfc9 j d78 <_vscanf_core.constprop.0+0x400>
- da8: 640e ld s0,192(sp)
- daa: 74ea ld s1,184(sp)
- dac: 794a ld s2,176(sp)
- dae: 79aa ld s3,168(sp)
- db0: 7a0a ld s4,160(sp)
- db2: 6aea ld s5,152(sp)
- db4: 6baa ld s7,136(sp)
- db6: 6c0a ld s8,128(sp)
- db8: 7da6 ld s11,104(sp)
- dba: b135 j 9e6 <_vscanf_core.constprop.0+0x6e>
- int width = -1;
- dbc: 597d li s2,-1
- dbe: b975 j a7a <_vscanf_core.constprop.0+0x102>
- if (!suppress)
- dc0: 3c099c63 bnez s3,1198 <_vscanf_core.constprop.0+0x820>
- buf[i] = '\0';
- dc4: 67e2 ld a5,24(sp)
- dc6: 01a786b3 add a3,a5,s10
- dca: 00068023 sb zero,0(a3)
- while (*p)
- dce: 001bc783 lbu a5,1(s7)
- assigned++;
- dd2: 2b05 addiw s6,s6,1
- dd4: bf75 j d90 <_vscanf_core.constprop.0+0x418>
- char *buf = suppress ? NULL : va_arg(ap, char *);
- dd6: 67a2 ld a5,8(sp)
- dd8: 0007bd03 ld s10,0(a5)
- ddc: 07a1 addi a5,a5,8
- dde: e43e sd a5,8(sp)
- de0: b741 j d60 <_vscanf_core.constprop.0+0x3e8>
- ctx->ungotten = -1;
- de2: 56fd li a3,-1
- de4: 00ddac23 sw a3,24(s11)
- while (c != -1 && !isspace(c))
- de8: bb11 j afc <_vscanf_core.constprop.0+0x184>
- ctx->ungotten = -1;
- dea: 56fd li a3,-1
- dec: 00ddac23 sw a3,24(s11)
- return c;
- df0: b3d1 j bb4 <_vscanf_core.constprop.0+0x23c>
- if (c == '-' || c == '+')
- df2: fd57869b addiw a3,a5,-43
- df6: ffd6f613 andi a2,a3,-3
- ctx->ungotten = -1;
- dfa: 55fd li a1,-1
- dfc: 00bdac23 sw a1,24(s11)
- if (c == '-' || c == '+')
- e00: 2601 sext.w a2,a2
- e02: ec061be3 bnez a2,cd8 <_vscanf_core.constprop.0+0x360>
- num_buf[i++] = (char)c;
- e06: 02f10023 sb a5,32(sp)
- if (ctx->ungotten >= 0)
- e0a: 018da783 lw a5,24(s11)
- e0e: 2207da63 bgez a5,1042 <_vscanf_core.constprop.0+0x6ca>
- e12: 856e mv a0,s11
- e14: aabff0ef jal 8be <_in_char.part.0>
- while (c != -1 && i < 63)
- e18: 567d li a2,-1
- e1a: 87aa mv a5,a0
- num_buf[i++] = (char)c;
- e1c: 4d05 li s10,1
- e1e: fd55069b addiw a3,a0,-43
- while (c != -1 && i < 63)
- e22: 3ac50163 beq a0,a2,11c4 <_vscanf_core.constprop.0+0x84c>
- e26: fce6 sd s9,120(sp)
- e28: bd55 j cdc <_vscanf_core.constprop.0+0x364>
- int count = (width > 0) ? width : 1;
- e2a: 4c05 li s8,1
- e2c: b73d j d5a <_vscanf_core.constprop.0+0x3e2>
- e2e: 640e ld s0,192(sp)
- e30: 74ea ld s1,184(sp)
- e32: 794a ld s2,176(sp)
- e34: 79aa ld s3,168(sp)
- e36: 7a0a ld s4,160(sp)
- e38: 6aea ld s5,152(sp)
- e3a: 6baa ld s7,136(sp)
- e3c: 6c0a ld s8,128(sp)
- e3e: 7ce6 ld s9,120(sp)
- e40: 7d46 ld s10,112(sp)
- e42: 7da6 ld s11,104(sp)
- e44: b64d j 9e6 <_vscanf_core.constprop.0+0x6e>
- e46: 640e ld s0,192(sp)
- e48: 74ea ld s1,184(sp)
- e4a: 794a ld s2,176(sp)
- e4c: 79aa ld s3,168(sp)
- e4e: 7a0a ld s4,160(sp)
- e50: 6aea ld s5,152(sp)
- e52: 6baa ld s7,136(sp)
- e54: 6c0a ld s8,128(sp)
- e56: 7d46 ld s10,112(sp)
- e58: 7da6 ld s11,104(sp)
- e5a: b671 j 9e6 <_vscanf_core.constprop.0+0x6e>
- ctx->ungotten = -1;
- e5c: 018dac23 sw s8,24(s11)
- while (c != -1 && !isspace(c))
- e60: b9e5 j b58 <_vscanf_core.constprop.0+0x1e0>
- ctx->ungotten = -1;
- e62: 57fd li a5,-1
- e64: 00fdac23 sw a5,24(s11)
- while (c != -1 && i < 63)
- e68: bbd9 j c3e <_vscanf_core.constprop.0+0x2c6>
- int hex = (base == 16 || base == 0) && ((c >= 'a' && c <= 'f') || (c >= 'A' && c <= 'F'));
- e6a: f9f3069b addiw a3,t1,-97
- e6e: 4795 li a5,5
- e70: 06d7f263 bgeu a5,a3,ed4 <_vscanf_core.constprop.0+0x55c>
- e74: fbf3031b addiw t1,t1,-65
- e78: 4795 li a5,5
- e7a: 0467fd63 bgeu a5,t1,ed4 <_vscanf_core.constprop.0+0x55c>
- int x = (c == 'x' || c == 'X');
- e7e: 07800693 li a3,120
- e82: 18d50763 beq a0,a3,1010 <_vscanf_core.constprop.0+0x698>
- e86: fa850693 addi a3,a0,-88
- e8a: 0016b693 seqz a3,a3
- if (base == 0 && i == 1 && num_buf[0] == '0' && x)
- e8e: 4301 li t1,0
- e90: 32061663 bnez a2,11bc <_vscanf_core.constprop.0+0x844>
- e94: 4785 li a5,1
- e96: 4601 li a2,0
- e98: d6fd1ce3 bne s10,a5,c10 <_vscanf_core.constprop.0+0x298>
- e9c: 02014e03 lbu t3,32(sp)
- ea0: 03000793 li a5,48
- ea4: d6fe16e3 bne t3,a5,c10 <_vscanf_core.constprop.0+0x298>
- ea8: d60684e3 beqz a3,c10 <_vscanf_core.constprop.0+0x298>
- base = 16;
- eac: 4641 li a2,16
- if (width > 0 && i >= width)
- eae: d7a919e3 bne s2,s10,c20 <_vscanf_core.constprop.0+0x2a8>
- eb2: bb59 j c48 <_vscanf_core.constprop.0+0x2d0>
- int hex = (base == 16 || base == 0) && ((c >= 'a' && c <= 'f') || (c >= 'A' && c <= 'F'));
- eb4: f9f3069b addiw a3,t1,-97
- eb8: 4795 li a5,5
- eba: 02d7f263 bgeu a5,a3,ede <_vscanf_core.constprop.0+0x566>
- ebe: fbf3031b addiw t1,t1,-65
- ec2: 0467f063 bgeu a5,t1,f02 <_vscanf_core.constprop.0+0x58a>
- int x = (c == 'x' || c == 'X');
- ec6: 07800693 li a3,120
- eca: fad51ee3 bne a0,a3,e86 <_vscanf_core.constprop.0+0x50e>
- ece: 4301 li t1,0
- ed0: 4685 li a3,1
- ed2: b7c9 j e94 <_vscanf_core.constprop.0+0x51c>
- int hex = (base == 16 || base == 0) && ((c >= 'a' && c <= 'f') || (c >= 'A' && c <= 'F'));
- ed4: 4305 li t1,1
- int x = (c == 'x' || c == 'X');
- ed6: 4681 li a3,0
- if (width > 0 && i >= width)
- ed8: d3204ee3 bgtz s2,c14 <_vscanf_core.constprop.0+0x29c>
- edc: bb35 j c18 <_vscanf_core.constprop.0+0x2a0>
- int x = (c == 'x' || c == 'X');
- ede: 4681 li a3,0
- int hex = (base == 16 || base == 0) && ((c >= 'a' && c <= 'f') || (c >= 'A' && c <= 'F'));
- ee0: 4305 li t1,1
- if (width > 0 && i >= width)
- ee2: d32049e3 bgtz s2,c14 <_vscanf_core.constprop.0+0x29c>
- ee6: bb0d j c18 <_vscanf_core.constprop.0+0x2a0>
- ee8: 4301 li t1,0
- int x = (c == 'x' || c == 'X');
- eea: 4685 li a3,1
- if (width > 0 && i >= width)
- eec: d32044e3 bgtz s2,c14 <_vscanf_core.constprop.0+0x29c>
- ef0: bb05 j c20 <_vscanf_core.constprop.0+0x2a8>
- if (!suppress)
- ef2: c8099be3 bnez s3,b88 <_vscanf_core.constprop.0+0x210>
- buf[i] = '\0';
- ef6: 67e2 ld a5,24(sp)
- ef8: 00078023 sb zero,0(a5)
- ctx->ungotten = c;
- efc: 00adac23 sw a0,24(s11)
- if (i > 0 && !suppress)
- f00: b171 j b8c <_vscanf_core.constprop.0+0x214>
- int x = (c == 'x' || c == 'X');
- f02: 4681 li a3,0
- int hex = (base == 16 || base == 0) && ((c >= 'a' && c <= 'f') || (c >= 'A' && c <= 'F'));
- f04: 4305 li t1,1
- f06: b779 j e94 <_vscanf_core.constprop.0+0x51c>
- num_buf[i] = '\0';
- f08: 040d0713 addi a4,s10,64
- f0c: 1014 addi a3,sp,32
- f0e: 96ba add a3,a3,a4
- f10: fc068023 sb zero,-64(a3)
- ctx->ungotten = c;
- f14: 00fdac23 sw a5,24(s11)
- if (i == 0)
- f18: f00d0be3 beqz s10,e2e <_vscanf_core.constprop.0+0x4b6>
- f1c: 7ce6 ld s9,120(sp)
- if (!suppress)
- f1e: d40992e3 bnez s3,c62 <_vscanf_core.constprop.0+0x2ea>
- if (*str == '-')
- f22: 02014603 lbu a2,32(sp)
- f26: 02d00793 li a5,45
- f2a: 1af60963 beq a2,a5,10dc <_vscanf_core.constprop.0+0x764>
- else if (*str == '+')
- f2e: 02b00793 li a5,43
- f32: 20f60a63 beq a2,a5,1146 <_vscanf_core.constprop.0+0x7ce>
- f36: 00005797 auipc a5,0x5
- f3a: 9327b587 fld fa1,-1742(a5) # 5868 <STDIN_FD+0x10>
- f3e: 101c addi a5,sp,32
- while (*str >= '0' && *str <= '9')
- f40: fd06069b addiw a3,a2,-48
- f44: 0ff6f513 zext.b a0,a3
- f48: 45a5 li a1,9
- f4a: f20007d3 fmv.d.x fa5,zero
- f4e: 02a5e463 bltu a1,a0,f76 <_vscanf_core.constprop.0+0x5fe>
- f52: 00005717 auipc a4,0x5
- f56: 91e73707 fld fa4,-1762(a4) # 5870 <STDIN_FD+0x18>
- f5a: 4525 li a0,9
- f5c: 0017c603 lbu a2,1(a5)
- val = val * 10.0 + (*str - '0');
- f60: d20686d3 fcvt.d.w fa3,a3
- str++;
- f64: 0785 addi a5,a5,1
- while (*str >= '0' && *str <= '9')
- f66: fd06069b addiw a3,a2,-48
- f6a: 0ff6f593 zext.b a1,a3
- val = val * 10.0 + (*str - '0');
- f6e: 6ae7f7c3 fmadd.d fa5,fa5,fa4,fa3
- while (*str >= '0' && *str <= '9')
- f72: feb575e3 bgeu a0,a1,f5c <_vscanf_core.constprop.0+0x5e4>
- if (*str == '.')
- f76: 02e00693 li a3,46
- f7a: 16d60a63 beq a2,a3,10ee <_vscanf_core.constprop.0+0x776>
- if (*str == 'e' || *str == 'E')
- f7e: 0007c683 lbu a3,0(a5)
- f82: 0df6f693 andi a3,a3,223
- f86: 04500613 li a2,69
- f8a: 0cc68463 beq a3,a2,1052 <_vscanf_core.constprop.0+0x6da>
- *va_arg(ap, double *) = val;
- f8e: 6722 ld a4,8(sp)
- if (len_mod == 1)
- f90: 4685 li a3,1
- return sign * val;
- f92: 12b7f7d3 fmul.d fa5,fa5,fa1
- *va_arg(ap, double *) = val;
- f96: 631c ld a5,0(a4)
- *va_arg(ap, int64 *) = val;
- f98: 0721 addi a4,a4,8
- f9a: e43a sd a4,8(sp)
- if (len_mod == 1)
- f9c: 6762 ld a4,24(sp)
- f9e: 18d70b63 beq a4,a3,1134 <_vscanf_core.constprop.0+0x7bc>
- *va_arg(ap, float *) = (float)val;
- fa2: 4017f7d3 fcvt.s.d fa5,fa5
- assigned++;
- fa6: 2b05 addiw s6,s6,1
- *va_arg(ap, float *) = (float)val;
- fa8: 00f7a027 fsw fa5,0(a5)
- fac: b95d j c62 <_vscanf_core.constprop.0+0x2ea>
- num_buf[i++] = (char)c;
- fae: 02a10023 sb a0,32(sp)
- if (ctx->ungotten >= 0)
- fb2: 018da503 lw a0,24(s11)
- fb6: 06055463 bgez a0,101e <_vscanf_core.constprop.0+0x6a6>
- fba: 856e mv a0,s11
- fbc: 903ff0ef jal 8be <_in_char.part.0>
- num_buf[i++] = (char)c;
- fc0: 4d05 li s10,1
- fc2: b101 j bc2 <_vscanf_core.constprop.0+0x24a>
- int64 val = strtoll(num_buf, NULL, base);
- fc4: 4581 li a1,0
- fc6: 1008 addi a0,sp,32
- fc8: 696030ef jal 465e <strtoll>
- *va_arg(ap, int64 *) = val;
- fcc: 67a2 ld a5,8(sp)
- if (len_mod == 2)
- fce: 6762 ld a4,24(sp)
- fd0: 4689 li a3,2
- *va_arg(ap, int64 *) = val;
- fd2: 07a1 addi a5,a5,8
- if (len_mod == 2)
- fd4: 16d70363 beq a4,a3,113a <_vscanf_core.constprop.0+0x7c2>
- *va_arg(ap, int64 *) = val;
- fd8: 6722 ld a4,8(sp)
- else if (len_mod == 1)
- fda: 4605 li a2,1
- *va_arg(ap, int64 *) = val;
- fdc: 6314 ld a3,0(a4)
- else if (len_mod == 1)
- fde: 6762 ld a4,24(sp)
- fe0: 16c70163 beq a4,a2,1142 <_vscanf_core.constprop.0+0x7ca>
- *va_arg(ap, int *) = (int)val;
- fe4: c288 sw a0,0(a3)
- assigned++;
- fe6: 2b05 addiw s6,s6,1
- fe8: e43e sd a5,8(sp)
- fea: b9a5 j c62 <_vscanf_core.constprop.0+0x2ea>
- num_buf[i] = '\0';
- fec: 040d0793 addi a5,s10,64
- ff0: 1018 addi a4,sp,32
- ff2: 00e785b3 add a1,a5,a4
- ff6: fc058023 sb zero,-64(a1)
- if (i == 0)
- ffa: 7ce6 ld s9,120(sp)
- ffc: b70d j f1e <_vscanf_core.constprop.0+0x5a6>
- num_buf[i] = '\0';
- ffe: 040d0793 addi a5,s10,64
- 1002: 1018 addi a4,sp,32
- 1004: 00e78833 add a6,a5,a4
- 1008: fc080023 sb zero,-64(a6)
- if (i == 0)
- 100c: 7ce6 ld s9,120(sp)
- 100e: b981 j c5e <_vscanf_core.constprop.0+0x2e6>
- int x = (c == 'x' || c == 'X');
- 1010: 4301 li t1,0
- 1012: 4685 li a3,1
- if (width > 0 && i >= width)
- 1014: c12040e3 bgtz s2,c14 <_vscanf_core.constprop.0+0x29c>
- 1018: b101 j c18 <_vscanf_core.constprop.0+0x2a0>
- int assigned = 0;
- 101a: 4b01 li s6,0
- 101c: b2e9 j 9e6 <_vscanf_core.constprop.0+0x6e>
- ctx->ungotten = -1;
- 101e: 56fd li a3,-1
- 1020: fce6 sd s9,120(sp)
- 1022: 00ddac23 sw a3,24(s11)
- int base = (spec == 'x') ? 16 : (spec == 'i' ? 0 : 10);
- 1026: 07800693 li a3,120
- 102a: 4641 li a2,16
- num_buf[i++] = (char)c;
- 102c: 4d05 li s10,1
- int base = (spec == 'x') ? 16 : (spec == 'i' ? 0 : 10);
- 102e: badc09e3 beq s8,a3,be0 <_vscanf_core.constprop.0+0x268>
- 1032: 06900693 li a3,105
- 1036: 4629 li a2,10
- num_buf[i++] = (char)c;
- 1038: 4d05 li s10,1
- int base = (spec == 'x') ? 16 : (spec == 'i' ? 0 : 10);
- 103a: badc13e3 bne s8,a3,be0 <_vscanf_core.constprop.0+0x268>
- 103e: 4601 li a2,0
- 1040: b645 j be0 <_vscanf_core.constprop.0+0x268>
- ctx->ungotten = -1;
- 1042: 56fd li a3,-1
- 1044: fce6 sd s9,120(sp)
- 1046: 00ddac23 sw a3,24(s11)
- num_buf[i++] = (char)c;
- 104a: 4d05 li s10,1
- 104c: fd57869b addiw a3,a5,-43
- 1050: b171 j cdc <_vscanf_core.constprop.0+0x364>
- if (*str == '-')
- 1052: 0017c583 lbu a1,1(a5)
- 1056: 02d00693 li a3,45
- 105a: 0ed58f63 beq a1,a3,1158 <_vscanf_core.constprop.0+0x7e0>
- else if (*str == '+')
- 105e: 02b00693 li a3,43
- 1062: 10d58e63 beq a1,a3,117e <_vscanf_core.constprop.0+0x806>
- while (*str >= '0' && *str <= '9')
- 1066: fd05861b addiw a2,a1,-48
- 106a: 0ff67513 zext.b a0,a2
- 106e: 45a5 li a1,9
- str++;
- 1070: 00178693 addi a3,a5,1
- int esign = 1;
- 1074: 4805 li a6,1
- while (*str >= '0' && *str <= '9')
- 1076: 04a5ec63 bltu a1,a0,10ce <_vscanf_core.constprop.0+0x756>
- 107a: 4525 li a0,9
- 107c: 0016c583 lbu a1,1(a3)
- eval = eval * 10 + (*str - '0');
- 1080: 0029979b slliw a5,s3,0x2
- 1084: 013787bb addw a5,a5,s3
- 1088: 0017979b slliw a5,a5,0x1
- 108c: 00f609bb addw s3,a2,a5
- while (*str >= '0' && *str <= '9')
- 1090: fd05861b addiw a2,a1,-48
- 1094: 0ff67593 zext.b a1,a2
- str++;
- 1098: 0685 addi a3,a3,1
- while (*str >= '0' && *str <= '9')
- 109a: feb571e3 bgeu a0,a1,107c <_vscanf_core.constprop.0+0x704>
- while (eval--)
- 109e: fff9879b addiw a5,s3,-1
- 10a2: 12098463 beqz s3,11ca <_vscanf_core.constprop.0+0x852>
- double p = 1.0;
- 10a6: 00004717 auipc a4,0x4
- 10aa: 7c273687 fld fa3,1986(a4) # 5868 <STDIN_FD+0x10>
- 10ae: 00004717 auipc a4,0x4
- 10b2: 7c273707 fld fa4,1986(a4) # 5870 <STDIN_FD+0x18>
- while (eval--)
- 10b6: 56fd li a3,-1
- 10b8: 37fd addiw a5,a5,-1
- p *= 10.0;
- 10ba: 12e6f6d3 fmul.d fa3,fa3,fa4
- while (eval--)
- 10be: fed79de3 bne a5,a3,10b8 <_vscanf_core.constprop.0+0x740>
- if (esign == 1)
- 10c2: 4785 li a5,1
- 10c4: 00f80963 beq a6,a5,10d6 <_vscanf_core.constprop.0+0x75e>
- val /= p;
- 10c8: 1ad7f7d3 fdiv.d fa5,fa5,fa3
- 10cc: b5c9 j f8e <_vscanf_core.constprop.0+0x616>
- double p = 1.0;
- 10ce: 00004797 auipc a5,0x4
- 10d2: 79a7b687 fld fa3,1946(a5) # 5868 <STDIN_FD+0x10>
- val *= p;
- 10d6: 12d7f7d3 fmul.d fa5,fa5,fa3
- 10da: bd55 j f8e <_vscanf_core.constprop.0+0x616>
- while (*str >= '0' && *str <= '9')
- 10dc: 00004797 auipc a5,0x4
- 10e0: 7847b587 fld fa1,1924(a5) # 5860 <STDIN_FD+0x8>
- 10e4: 02114603 lbu a2,33(sp)
- str++;
- 10e8: 02110793 addi a5,sp,33
- 10ec: bd91 j f40 <_vscanf_core.constprop.0+0x5c8>
- while (*str >= '0' && *str <= '9')
- 10ee: 0017c683 lbu a3,1(a5)
- 10f2: 45a5 li a1,9
- str++;
- 10f4: 0785 addi a5,a5,1
- while (*str >= '0' && *str <= '9')
- 10f6: fd06861b addiw a2,a3,-48
- 10fa: 0ff67513 zext.b a0,a2
- 10fe: e8a5e2e3 bltu a1,a0,f82 <_vscanf_core.constprop.0+0x60a>
- double div = 10.0;
- 1102: 00004717 auipc a4,0x4
- 1106: 76e73707 fld fa4,1902(a4) # 5870 <STDIN_FD+0x18>
- 110a: 22e70653 fmv.d fa2,fa4
- while (*str >= '0' && *str <= '9')
- 110e: 4525 li a0,9
- val += (*str - '0') / div;
- 1110: d20606d3 fcvt.d.w fa3,a2
- while (*str >= '0' && *str <= '9')
- 1114: 0017c683 lbu a3,1(a5)
- str++;
- 1118: 0785 addi a5,a5,1
- val += (*str - '0') / div;
- 111a: 1ac6f6d3 fdiv.d fa3,fa3,fa2
- while (*str >= '0' && *str <= '9')
- 111e: fd06861b addiw a2,a3,-48
- 1122: 0ff67593 zext.b a1,a2
- div *= 10.0;
- 1126: 12e67653 fmul.d fa2,fa2,fa4
- val += (*str - '0') / div;
- 112a: 02d7f7d3 fadd.d fa5,fa5,fa3
- while (*str >= '0' && *str <= '9')
- 112e: feb571e3 bgeu a0,a1,1110 <_vscanf_core.constprop.0+0x798>
- 1132: bd81 j f82 <_vscanf_core.constprop.0+0x60a>
- *va_arg(ap, double *) = val;
- 1134: a39c fsd fa5,0(a5)
- assigned++;
- 1136: 2b05 addiw s6,s6,1
- 1138: b62d j c62 <_vscanf_core.constprop.0+0x2ea>
- *va_arg(ap, int64 *) = val;
- 113a: 6722 ld a4,8(sp)
- 113c: 6314 ld a3,0(a4)
- 113e: e288 sd a0,0(a3)
- 1140: b55d j fe6 <_vscanf_core.constprop.0+0x66e>
- *va_arg(ap, long *) = (long)val;
- 1142: e288 sd a0,0(a3)
- 1144: b54d j fe6 <_vscanf_core.constprop.0+0x66e>
- while (*str >= '0' && *str <= '9')
- 1146: 00004797 auipc a5,0x4
- 114a: 7227b587 fld fa1,1826(a5) # 5868 <STDIN_FD+0x10>
- 114e: 02114603 lbu a2,33(sp)
- str++;
- 1152: 02110793 addi a5,sp,33
- 1156: b3ed j f40 <_vscanf_core.constprop.0+0x5c8>
- while (*str >= '0' && *str <= '9')
- 1158: 0027c583 lbu a1,2(a5)
- str++;
- 115c: 00278693 addi a3,a5,2
- while (*str >= '0' && *str <= '9')
- 1160: 4525 li a0,9
- 1162: fd05861b addiw a2,a1,-48
- 1166: 0ff67793 zext.b a5,a2
- esign = -1;
- 116a: 587d li a6,-1
- while (*str >= '0' && *str <= '9')
- 116c: f0f577e3 bgeu a0,a5,107a <_vscanf_core.constprop.0+0x702>
- double p = 1.0;
- 1170: 00004797 auipc a5,0x4
- 1174: 6f87b687 fld fa3,1784(a5) # 5868 <STDIN_FD+0x10>
- val /= p;
- 1178: 1ad7f7d3 fdiv.d fa5,fa5,fa3
- 117c: bd09 j f8e <_vscanf_core.constprop.0+0x616>
- while (*str >= '0' && *str <= '9')
- 117e: 0027c583 lbu a1,2(a5)
- str++;
- 1182: 00278693 addi a3,a5,2
- while (*str >= '0' && *str <= '9')
- 1186: 4525 li a0,9
- 1188: fd05861b addiw a2,a1,-48
- 118c: 0ff67793 zext.b a5,a2
- 1190: f2f56fe3 bltu a0,a5,10ce <_vscanf_core.constprop.0+0x756>
- int esign = 1;
- 1194: 4805 li a6,1
- 1196: b5d5 j 107a <_vscanf_core.constprop.0+0x702>
- while (*p)
- 1198: 001bc783 lbu a5,1(s7)
- 119c: bed5 j d90 <_vscanf_core.constprop.0+0x418>
- if (!suppress)
- 119e: 9e0997e3 bnez s3,b8c <_vscanf_core.constprop.0+0x214>
- buf[i] = '\0';
- 11a2: 67e2 ld a5,24(sp)
- 11a4: 00078023 sb zero,0(a5)
- 11a8: b2d5 j b8c <_vscanf_core.constprop.0+0x214>
- num_buf[i] = '\0';
- 11aa: 040d0793 addi a5,s10,64
- 11ae: 1018 addi a4,sp,32
- 11b0: 97ba add a5,a5,a4
- 11b2: fc078023 sb zero,-64(a5)
- if (i == 0)
- 11b6: aa0d14e3 bnez s10,c5e <_vscanf_core.constprop.0+0x2e6>
- 11ba: b171 j e46 <_vscanf_core.constprop.0+0x4ce>
- 11bc: 4641 li a2,16
- if (width > 0 && i >= width)
- 11be: a5204be3 bgtz s2,c14 <_vscanf_core.constprop.0+0x29c>
- 11c2: bc99 j c18 <_vscanf_core.constprop.0+0x2a0>
- num_buf[i] = '\0';
- 11c4: 020100a3 sb zero,33(sp)
- if (i == 0)
- 11c8: bb99 j f1e <_vscanf_core.constprop.0+0x5a6>
- double p = 1.0;
- 11ca: 00004797 auipc a5,0x4
- 11ce: 69e7b687 fld fa3,1694(a5) # 5868 <STDIN_FD+0x10>
- 11d2: bdc5 j 10c2 <_vscanf_core.constprop.0+0x74a>
- buf[i] = '\0';
- 11d4: 67e2 ld a5,24(sp)
- 11d6: 01a786b3 add a3,a5,s10
- 11da: 00068023 sb zero,0(a3)
- ctx->ungotten = c;
- 11de: 00adac23 sw a0,24(s11)
- while (*p)
- 11e2: 001bc783 lbu a5,1(s7)
- 11e6: b6f5 j dd2 <_vscanf_core.constprop.0+0x45a>
-
-00000000000011e8 <_out_char>:
-{
- 11e8: 7179 addi sp,sp,-48
- 11ea: ec26 sd s1,24(sp)
- if (ctx->stream)
- 11ec: 6d04 ld s1,24(a0)
-{
- 11ee: f022 sd s0,32(sp)
- 11f0: f406 sd ra,40(sp)
- 11f2: 842a mv s0,a0
- 11f4: 872e mv a4,a1
- if (ctx->stream)
- 11f6: c0a1 beqz s1,1236 <_out_char+0x4e>
- 11f8: e84a sd s2,16(sp)
- if (stream->buf_mode == 2)
- 11fa: 41c4a903 lw s2,1052(s1)
- 11fe: 4789 li a5,2
- 1200: 04f90d63 beq s2,a5,125a <_out_char+0x72>
- stream->buffer[stream->buf_write_pos++] = (char)c;
- 1204: 4104a783 lw a5,1040(s1)
- if (stream->buf_write_pos >= BUFSIZ)
- 1208: 3ff00693 li a3,1023
- stream->buffer[stream->buf_write_pos++] = (char)c;
- 120c: 0017861b addiw a2,a5,1
- 1210: 40c4a823 sw a2,1040(s1)
- 1214: 97a6 add a5,a5,s1
- 1216: 00b78823 sb a1,16(a5)
- if (stream->buf_write_pos >= BUFSIZ)
- 121a: 08c6c063 blt a3,a2,129a <_out_char+0xb2>
- else if (stream->buf_mode == 1 && c == '\n')
- 121e: 4785 li a5,1
- 1220: 04f90a63 beq s2,a5,1274 <_out_char+0x8c>
- ctx->written++;
- 1224: 681c ld a5,16(s0)
- 1226: 6942 ld s2,16(sp)
-}
- 1228: 70a2 ld ra,40(sp)
- ctx->written++;
- 122a: 0785 addi a5,a5,1
- 122c: e81c sd a5,16(s0)
-}
- 122e: 7402 ld s0,32(sp)
- 1230: 64e2 ld s1,24(sp)
- 1232: 6145 addi sp,sp,48
- 1234: 8082 ret
- if (ctx->limit > 0 && ctx->written < ctx->limit - 1)
- 1236: 6514 ld a3,8(a0)
- 1238: 691c ld a5,16(a0)
- 123a: ca89 beqz a3,124c <_out_char+0x64>
- 123c: 16fd addi a3,a3,-1
- 123e: 00d7f763 bgeu a5,a3,124c <_out_char+0x64>
- ctx->buf[ctx->written] = c;
- 1242: 6114 ld a3,0(a0)
- 1244: 97b6 add a5,a5,a3
- 1246: 00b78023 sb a1,0(a5)
- ctx->written++;
- 124a: 691c ld a5,16(a0)
- 124c: 0785 addi a5,a5,1
-}
- 124e: 70a2 ld ra,40(sp)
- ctx->written++;
- 1250: e81c sd a5,16(s0)
-}
- 1252: 7402 ld s0,32(sp)
- 1254: 64e2 ld s1,24(sp)
- 1256: 6145 addi sp,sp,48
- 1258: 8082 ret
- if (write(stream->fd, &ch, 1) != 1)
- 125a: 4088 lw a0,0(s1)
- 125c: 4605 li a2,1
- 125e: 00f10593 addi a1,sp,15
- char ch = (char)c;
- 1262: 00e107a3 sb a4,15(sp)
- if (write(stream->fd, &ch, 1) != 1)
- 1266: e8bfe0ef jal f0 <write>
- 126a: 4785 li a5,1
- 126c: faf50ce3 beq a0,a5,1224 <_out_char+0x3c>
- stream->error = 1;
- 1270: c49c sw a5,8(s1)
- return EOF;
- 1272: bf4d j 1224 <_out_char+0x3c>
- else if (stream->buf_mode == 1 && c == '\n')
- 1274: 47a9 li a5,10
- 1276: faf597e3 bne a1,a5,1224 <_out_char+0x3c>
- if (stream->buf_write_pos > 0)
- 127a: fac055e3 blez a2,1224 <_out_char+0x3c>
- int64 ret = write(stream->fd, stream->buffer, stream->buf_write_pos);
- 127e: 4088 lw a0,0(s1)
- 1280: 01048593 addi a1,s1,16
- 1284: e6dfe0ef jal f0 <write>
- if (ret < stream->buf_write_pos)
- 1288: 4104a783 lw a5,1040(s1)
- 128c: 02f55063 bge a0,a5,12ac <_out_char+0xc4>
- stream->error = 1;
- 1290: 0124a423 sw s2,8(s1)
- stream->buf_write_pos = 0;
- 1294: 4004a823 sw zero,1040(s1)
- return EOF;
- 1298: b771 j 1224 <_out_char+0x3c>
- int64 ret = write(stream->fd, stream->buffer, stream->buf_write_pos);
- 129a: 4088 lw a0,0(s1)
- 129c: 01048593 addi a1,s1,16
- 12a0: e51fe0ef jal f0 <write>
- if (ret < stream->buf_write_pos)
- 12a4: 4104a783 lw a5,1040(s1)
- 12a8: 00f54563 blt a0,a5,12b2 <_out_char+0xca>
- stream->buf_write_pos = 0;
- 12ac: 4004a823 sw zero,1040(s1)
- 12b0: bf95 j 1224 <_out_char+0x3c>
- stream->error = 1;
- 12b2: 4785 li a5,1
- 12b4: c49c sw a5,8(s1)
- stream->buf_write_pos = 0;
- 12b6: 4004a823 sw zero,1040(s1)
- return EOF;
- 12ba: b7ad j 1224 <_out_char+0x3c>
-
-00000000000012bc <stbsp_set_separators>:
- "75767778798081828384858687888990919293949596979899"
-};
-
-STBSP__PUBLICDEF void STB_SPRINTF_DECORATE(set_separators)(char pcomma, char pperiod)
-{
- stbsp__period = pperiod;
- 12bc: 00005797 auipc a5,0x5
- 12c0: 6d478793 addi a5,a5,1748 # 6990 <stbsp__digitpair>
- 12c4: 0cb78623 sb a1,204(a5)
- stbsp__comma = pcomma;
- 12c8: 0ca786a3 sb a0,205(a5)
-}
- 12cc: 8082 ret
-
-00000000000012ce <stbsp_vsprintfcb>:
-
- return (stbsp__uint32)(sn - s);
-}
-
-STBSP__PUBLICDEF int STB_SPRINTF_DECORATE(vsprintfcb)(STBSP_SPRINTFCB *callback, void *user, char *buf, char const *fmt, va_list va)
-{
- 12ce: d1010113 addi sp,sp,-752
- // Check if the next 4 bytes contain %(0x25) or end of string.
- // Using the 'hasless' trick:
- // https://graphics.stanford.edu/~seander/bithacks.html#HasLessInWord
- stbsp__uint32 v, c;
- v = *(stbsp__uint32 *)f;
- c = (~v) & 0x80808080;
- 12d2: 808087b7 lui a5,0x80808
- if (((v ^ 0x25252525) - 0x01010101) & c)
- 12d6: 252523b7 lui t2,0x25252
- 12da: 52538393 addi t2,t2,1317 # 25252525 <_ZSt4cerr+0x2524ac9d>
-{
- 12de: 29913c23 sd s9,664(sp)
- 12e2: 29b13423 sd s11,648(sp)
- int tlen = 0;
- 12e6: 4c81 li s9,0
- if (((v ^ 0x25252525) - 0x01010101) & c)
- 12e8: feff0db7 lui s11,0xfeff0
- c = (~v) & 0x80808080;
- 12ec: 08078793 addi a5,a5,128 # ffffffff80808080 <_ZSt4cerr+0xffffffff808007f8>
-{
- 12f0: 2e813023 sd s0,736(sp)
- 12f4: 2c913c23 sd s1,728(sp)
- 12f8: 2d213823 sd s2,720(sp)
- 12fc: 2d313423 sd s3,712(sp)
- 1300: 2b713423 sd s7,680(sp)
- 1304: 2b813023 sd s8,672(sp)
- 1308: 29a13823 sd s10,656(sp)
- 130c: 2e113423 sd ra,744(sp)
- 1310: 8d66 mv s10,s9
- 1312: 8432 mv s0,a2
- 1314: 8c9e mv s9,t2
- 1316: 89aa mv s3,a0
- 1318: e42e sd a1,8(sp)
- 131a: 84b6 mv s1,a3
- 131c: 8bba mv s7,a4
- 131e: fc02 sd zero,56(sp)
- for (;;) {
- 1320: 8932 mv s2,a2
- if (((v ^ 0x25252525) - 0x01010101) & c)
- 1322: effd8d9b addiw s11,s11,-257 # fffffffffefefeff <_ZSt4cerr+0xfffffffffefe8677>
- goto schk1;
- if ((v - 0x01010101) & c)
- goto schk2;
- if (callback)
- if ((STB_SPRINTF_MIN - (int)(bf - buf)) < 4)
- 1326: 20000c13 li s8,512
- 132a: 83be mv t2,a5
- while (((stbsp__uintptr)f) & 3) {
- 132c: 0034f793 andi a5,s1,3
- 1330: c7a9 beqz a5,137a <stbsp_vsprintfcb+0xac>
- if (f[0] == '%')
- 1332: 0004c783 lbu a5,0(s1)
- 1336: 02500713 li a4,37
- 133a: 0ee78263 beq a5,a4,141e <stbsp_vsprintfcb+0x150>
- if (f[0] == 0)
- 133e: cbd9 beqz a5,13d4 <stbsp_vsprintfcb+0x106>
- stbsp__chk_cb_buf(1);
- 1340: 02098663 beqz s3,136c <stbsp_vsprintfcb+0x9e>
- 1344: 4124063b subw a2,s0,s2
- 1348: 1fe00713 li a4,510
- 134c: 02c75063 bge a4,a2,136c <stbsp_vsprintfcb+0x9e>
- 1350: 65a2 ld a1,8(sp)
- 1352: 854a mv a0,s2
- 1354: e81e sd t2,16(sp)
- 1356: 00cd0d3b addw s10,s10,a2
- 135a: 9982 jalr s3
- 135c: 892a mv s2,a0
- 135e: e119 bnez a0,1364 <stbsp_vsprintfcb+0x96>
- 1360: 0200106f j 2380 <stbsp_vsprintfcb+0x10b2>
- *bf++ = f[0];
- 1364: 0004c783 lbu a5,0(s1)
- stbsp__chk_cb_buf(1);
- 1368: 63c2 ld t2,16(sp)
- 136a: 842a mv s0,a0
- ++f;
- 136c: 0485 addi s1,s1,1
- *bf++ = f[0];
- 136e: 00f40023 sb a5,0(s0)
- while (((stbsp__uintptr)f) & 3) {
- 1372: 0034f793 andi a5,s1,3
- *bf++ = f[0];
- 1376: 0405 addi s0,s0,1
- while (((stbsp__uintptr)f) & 3) {
- 1378: ffcd bnez a5,1332 <stbsp_vsprintfcb+0x64>
- v = *(stbsp__uint32 *)f;
- 137a: 4094 lw a3,0(s1)
- c = (~v) & 0x80808080;
- 137c: fff6c793 not a5,a3
- if (((v ^ 0x25252525) - 0x01010101) & c)
- 1380: 0196c733 xor a4,a3,s9
- c = (~v) & 0x80808080;
- 1384: 0077f7b3 and a5,a5,t2
- if (((v ^ 0x25252525) - 0x01010101) & c)
- 1388: 01b7073b addw a4,a4,s11
- 138c: 8f7d and a4,a4,a5
- 138e: 2701 sext.w a4,a4
- 1390: f34d bnez a4,1332 <stbsp_vsprintfcb+0x64>
- if ((STB_SPRINTF_MIN - (int)(bf - buf)) < 4)
- 1392: 460d li a2,3
- 1394: a805 j 13c4 <stbsp_vsprintfcb+0xf6>
- if (callback)
- 1396: 00098863 beqz s3,13a6 <stbsp_vsprintfcb+0xd8>
- if ((STB_SPRINTF_MIN - (int)(bf - buf)) < 4)
- 139a: 412407b3 sub a5,s0,s2
- 139e: 40fc07bb subw a5,s8,a5
- 13a2: f8f658e3 bge a2,a5,1332 <stbsp_vsprintfcb+0x64>
- bf[2] = f[2];
- bf[3] = f[3];
- } else
- #endif
- {
- *(stbsp__uint32 *)bf = v;
- 13a6: c014 sw a3,0(s0)
- v = *(stbsp__uint32 *)f;
- 13a8: 40d4 lw a3,4(s1)
- }
- bf += 4;
- 13aa: 0411 addi s0,s0,4
- f += 4;
- 13ac: 0491 addi s1,s1,4
- c = (~v) & 0x80808080;
- 13ae: fff6c793 not a5,a3
- if (((v ^ 0x25252525) - 0x01010101) & c)
- 13b2: 0196c733 xor a4,a3,s9
- c = (~v) & 0x80808080;
- 13b6: 0077f7b3 and a5,a5,t2
- if (((v ^ 0x25252525) - 0x01010101) & c)
- 13ba: 01b7073b addw a4,a4,s11
- 13be: 8f7d and a4,a4,a5
- 13c0: 2701 sext.w a4,a4
- 13c2: fb25 bnez a4,1332 <stbsp_vsprintfcb+0x64>
- if ((v - 0x01010101) & c)
- 13c4: 01b6873b addw a4,a3,s11
- 13c8: 8ff9 and a5,a5,a4
- 13ca: 2781 sext.w a5,a5
- 13cc: d7e9 beqz a5,1396 <stbsp_vsprintfcb+0xc8>
- if (f[0] == 0)
- 13ce: 0004c783 lbu a5,0(s1)
- 13d2: f7bd bnez a5,1340 <stbsp_vsprintfcb+0x72>
-endfmt:
-
- if (!callback)
- *bf = 0;
- else
- stbsp__flush_cb();
- 13d4: 8cea mv s9,s10
- 13d6: 412404bb subw s1,s0,s2
- if (!callback)
- 13da: 70098563 beqz s3,1ae4 <stbsp_vsprintfcb+0x816>
- stbsp__flush_cb();
- 13de: 00905663 blez s1,13ea <stbsp_vsprintfcb+0x11c>
- 13e2: 65a2 ld a1,8(sp)
- 13e4: 8626 mv a2,s1
- 13e6: 854a mv a0,s2
- 13e8: 9982 jalr s3
- 13ea: 009c8cbb addw s9,s9,s1
-
-done:
- return tlen + (int)(bf - buf);
-}
- 13ee: 2e813083 ld ra,744(sp)
- 13f2: 2e013403 ld s0,736(sp)
- 13f6: 2d813483 ld s1,728(sp)
- 13fa: 2d013903 ld s2,720(sp)
- 13fe: 2c813983 ld s3,712(sp)
- 1402: 2a813b83 ld s7,680(sp)
- 1406: 2a013c03 ld s8,672(sp)
- 140a: 29013d03 ld s10,656(sp)
- 140e: 28813d83 ld s11,648(sp)
- 1412: 8566 mv a0,s9
- 1414: 29813c83 ld s9,664(sp)
- 1418: 2f010113 addi sp,sp,752
- 141c: 8082 ret
- 141e: 2d413023 sd s4,704(sp)
- 1422: 2b513c23 sd s5,696(sp)
- 1426: 2b613823 sd s6,688(sp)
- tz = 0;
- 142a: 00248693 addi a3,s1,2
- fl = 0;
- 142e: 4e01 li t3,0
- switch (f[0]) {
- 1430: 03f00593 li a1,63
- 1434: 00004617 auipc a2,0x4
- 1438: d5460613 addi a2,a2,-684 # 5188 <_GLOBAL__sub_I__ZSt3cin+0x198>
- 143c: fff6c783 lbu a5,-1(a3)
- 1440: fff68493 addi s1,a3,-1
- 1444: fe07871b addiw a4,a5,-32
- 1448: 0ff77713 zext.b a4,a4
- 144c: 00e5ec63 bltu a1,a4,1464 <stbsp_vsprintfcb+0x196>
- 1450: 070a slli a4,a4,0x2
- 1452: 9732 add a4,a4,a2
- 1454: 4318 lw a4,0(a4)
- 1456: 9732 add a4,a4,a2
- 1458: 8702 jr a4
- if (f[0] == '*') {
- 145a: 0014c783 lbu a5,1(s1)
- fl |= STBSP__LEADINGZERO;
- 145e: 010e6e13 ori t3,t3,16
- ++f;
- 1462: 0485 addi s1,s1,1
- if (f[0] == '*') {
- 1464: 02a00713 li a4,42
- 1468: 0ce79163 bne a5,a4,152a <stbsp_vsprintfcb+0x25c>
- fw = va_arg(va, stbsp__uint32);
- 146c: 000bab03 lw s6,0(s7)
- while ((f[0] >= '0') && (f[0] <= '9')) {
- 1470: 0014c783 lbu a5,1(s1)
- fw = va_arg(va, stbsp__uint32);
- 1474: 0ba1 addi s7,s7,8
- ++f;
- 1476: 0485 addi s1,s1,1
- if (f[0] == '.') {
- 1478: 02e00713 li a4,46
- pr = -1;
- 147c: 58fd li a7,-1
- if (f[0] == '.') {
- 147e: 0ee78663 beq a5,a4,156a <stbsp_vsprintfcb+0x29c>
- switch (f[0]) {
- 1482: 04900713 li a4,73
- 1486: 10e78263 beq a5,a4,158a <stbsp_vsprintfcb+0x2bc>
- 148a: f987871b addiw a4,a5,-104
- 148e: 0ff77713 zext.b a4,a4
- 1492: 46c9 li a3,18
- 1494: 02e6e063 bltu a3,a4,14b4 <stbsp_vsprintfcb+0x1e6>
- 1498: 00004697 auipc a3,0x4
- 149c: df068693 addi a3,a3,-528 # 5288 <_GLOBAL__sub_I__ZSt3cin+0x298>
- 14a0: 070a slli a4,a4,0x2
- 14a2: 9736 add a4,a4,a3
- 14a4: 4318 lw a4,0(a4)
- 14a6: 9736 add a4,a4,a3
- 14a8: 8702 jr a4
- if (f[0] == 'h')
- 14aa: 0014c783 lbu a5,1(s1)
- fl |= (sizeof(ptrdiff_t) == 8) ? STBSP__INTMAX : 0;
- 14ae: 020e6e13 ori t3,t3,32
- ++f;
- 14b2: 0485 addi s1,s1,1
- switch (f[0]) {
- 14b4: fbf7871b addiw a4,a5,-65
- 14b8: 0ff77713 zext.b a4,a4
- 14bc: 03700693 li a3,55
- 14c0: 0ee6ea63 bltu a3,a4,15b4 <stbsp_vsprintfcb+0x2e6>
- 14c4: 00004697 auipc a3,0x4
- 14c8: e1068693 addi a3,a3,-496 # 52d4 <_GLOBAL__sub_I__ZSt3cin+0x2e4>
- 14cc: 070a slli a4,a4,0x2
- 14ce: 9736 add a4,a4,a3
- 14d0: 4318 lw a4,0(a4)
- 14d2: 9736 add a4,a4,a3
- 14d4: 8702 jr a4
- fl |= STBSP__METRIC_NOSPACE;
- 14d6: 400e6e13 ori t3,t3,1024
- continue;
- 14da: 0685 addi a3,a3,1
- 14dc: b785 j 143c <stbsp_vsprintfcb+0x16e>
- fl |= STBSP__LEFTJUST;
- 14de: 001e6e13 ori t3,t3,1
- continue;
- 14e2: 0685 addi a3,a3,1
- 14e4: bfa1 j 143c <stbsp_vsprintfcb+0x16e>
- fl |= STBSP__LEADINGPLUS;
- 14e6: 002e6e13 ori t3,t3,2
- continue;
- 14ea: 0685 addi a3,a3,1
- 14ec: bf81 j 143c <stbsp_vsprintfcb+0x16e>
- fl |= STBSP__TRIPLET_COMMA;
- 14ee: 040e6e13 ori t3,t3,64
- continue;
- 14f2: 0685 addi a3,a3,1
- 14f4: b7a1 j 143c <stbsp_vsprintfcb+0x16e>
- if (fl & STBSP__METRIC_SUFFIX) {
- 14f6: 100e7793 andi a5,t3,256
- 14fa: 8772 mv a4,t3
- 14fc: 56078363 beqz a5,1a62 <stbsp_vsprintfcb+0x794>
- if (fl & STBSP__METRIC_1024) {
- 1500: 6785 lui a5,0x1
- 1502: 034e1513 slli a0,t3,0x34
- 1506: 80078793 addi a5,a5,-2048 # 800 <stbsp__real_to_str+0x616>
- 150a: 5c055863 bgez a0,1ada <stbsp_vsprintfcb+0x80c>
- fl |= STBSP__METRIC_JEDEC;
- 150e: 6785 lui a5,0x1
- 1510: 8f5d or a4,a4,a5
- 1512: 00070e1b sext.w t3,a4
- 1516: 0685 addi a3,a3,1
- 1518: b715 j 143c <stbsp_vsprintfcb+0x16e>
- fl |= STBSP__LEADING_0X;
- 151a: 008e6e13 ori t3,t3,8
- continue;
- 151e: 0685 addi a3,a3,1
- 1520: bf31 j 143c <stbsp_vsprintfcb+0x16e>
- fl |= STBSP__LEADINGSPACE;
- 1522: 004e6e13 ori t3,t3,4
- continue;
- 1526: 0685 addi a3,a3,1
- 1528: bf11 j 143c <stbsp_vsprintfcb+0x16e>
- while ((f[0] >= '0') && (f[0] <= '9')) {
- 152a: fd07871b addiw a4,a5,-48 # fd0 <_vscanf_core.constprop.0+0x658>
- 152e: 0ff77713 zext.b a4,a4
- 1532: 4625 li a2,9
- fw = 0;
- 1534: 4b01 li s6,0
- while ((f[0] >= '0') && (f[0] <= '9')) {
- 1536: 46a5 li a3,9
- 1538: f4e660e3 bltu a2,a4,1478 <stbsp_vsprintfcb+0x1aa>
- fw = fw * 10 + f[0] - '0';
- 153c: 002b171b slliw a4,s6,0x2
- 1540: 0167073b addw a4,a4,s6
- 1544: 0017171b slliw a4,a4,0x1
- f++;
- 1548: 0485 addi s1,s1,1
- fw = fw * 10 + f[0] - '0';
- 154a: 9f3d addw a4,a4,a5
- while ((f[0] >= '0') && (f[0] <= '9')) {
- 154c: 0004c783 lbu a5,0(s1)
- fw = fw * 10 + f[0] - '0';
- 1550: fd070b1b addiw s6,a4,-48
- while ((f[0] >= '0') && (f[0] <= '9')) {
- 1554: fd07871b addiw a4,a5,-48
- 1558: 0ff77713 zext.b a4,a4
- 155c: fee6f0e3 bgeu a3,a4,153c <stbsp_vsprintfcb+0x26e>
- if (f[0] == '.') {
- 1560: 02e00713 li a4,46
- pr = -1;
- 1564: 58fd li a7,-1
- if (f[0] == '.') {
- 1566: f0e79ee3 bne a5,a4,1482 <stbsp_vsprintfcb+0x1b4>
- if (f[0] == '*') {
- 156a: 0014c783 lbu a5,1(s1)
- 156e: 02a00713 li a4,42
- 1572: 52e79763 bne a5,a4,1aa0 <stbsp_vsprintfcb+0x7d2>
- while ((f[0] >= '0') && (f[0] <= '9')) {
- 1576: 0024c783 lbu a5,2(s1)
- switch (f[0]) {
- 157a: 04900713 li a4,73
- pr = va_arg(va, stbsp__uint32);
- 157e: 000ba883 lw a7,0(s7)
- ++f;
- 1582: 0489 addi s1,s1,2
- pr = va_arg(va, stbsp__uint32);
- 1584: 0ba1 addi s7,s7,8
- switch (f[0]) {
- 1586: f0e792e3 bne a5,a4,148a <stbsp_vsprintfcb+0x1bc>
- if ((f[1] == '6') && (f[2] == '4')) {
- 158a: 0014c783 lbu a5,1(s1)
- 158e: 03600713 li a4,54
- 1592: 00e79463 bne a5,a4,159a <stbsp_vsprintfcb+0x2cc>
- 1596: 1e60106f j 277c <stbsp_vsprintfcb+0x14ae>
- } else if ((f[1] == '3') && (f[2] == '2')) {
- 159a: 03300713 li a4,51
- 159e: 6ae796e3 bne a5,a4,244a <stbsp_vsprintfcb+0x117c>
- 15a2: 0024c683 lbu a3,2(s1)
- 15a6: 03200713 li a4,50
- 15aa: 00e69463 bne a3,a4,15b2 <stbsp_vsprintfcb+0x2e4>
- 15ae: 0ae0106f j 265c <stbsp_vsprintfcb+0x138e>
- ++f;
- 15b2: 0485 addi s1,s1,1
- *s = f[0];
- 15b4: 26f10fa3 sb a5,639(sp)
- l = 1;
- 15b8: 4785 li a5,1
- 15ba: d0be sw a5,96(sp)
- lead[0] = 0;
- 15bc: 06010423 sb zero,104(sp)
- tail[0] = 0;
- 15c0: 06010823 sb zero,112(sp)
- dp = 0;
- 15c4: d282 sw zero,100(sp)
- 15c6: e0de sd s7,64(sp)
- 15c8: 4701 li a4,0
- 15ca: 4301 li t1,0
- 15cc: 4f81 li t6,0
- 15ce: 4685 li a3,1
- 15d0: 4a01 li s4,0
- cs = 0;
- 15d2: 4281 li t0,0
- s = num + STBSP__NUMSZ - 1;
- 15d4: 27f10a93 addi s5,sp,639
- fw = fl = 0;
- 15d8: 4e01 li t3,0
- tz = 0;
- 15da: 4881 li a7,0
- if (fl & STBSP__LEADINGZERO) // if leading zeros, everything is in pr
- 15dc: 010e7793 andi a5,t3,16
- 15e0: 40078ee3 beqz a5,21fc <stbsp_vsprintfcb+0xf2e>
- pr = (fw > pr) ? fw : pr;
- 15e4: 87ba mv a5,a4
- 15e6: 00675363 bge a4,t1,15ec <stbsp_vsprintfcb+0x31e>
- 15ea: 879a mv a5,t1
- 15ec: 0007871b sext.w a4,a5
- fw = 0;
- 15f0: 4301 li t1,0
- if (fw + pr) {
- 15f2: 62070563 beqz a4,1c1c <stbsp_vsprintfcb+0x94e>
- sn = lead + 1;
- 15f6: 06910793 addi a5,sp,105
- 15fa: fcbe sd a5,120(sp)
- while (lead[0]) {
- 15fc: 0a0a0863 beqz s4,16ac <stbsp_vsprintfcb+0x3de>
- stbsp__cb_buf_clamp(i, lead[0]);
- 1600: f026 sd s1,32(sp)
- 1602: f436 sd a3,40(sp)
- 1604: 854a mv a0,s2
- 1606: 86d2 mv a3,s4
- 1608: 84ce mv s1,s3
- stbsp__chk_cb_buf(1);
- 160a: 1fe00b93 li s7,510
- stbsp__cb_buf_clamp(i, lead[0]);
- 160e: 89be mv s3,a5
- 1610: 20000b13 li s6,512
- 1614: 87a2 mv a5,s0
- 1616: e846 sd a7,16(sp)
- 1618: 846a mv s0,s10
- 161a: ec7e sd t6,24(sp)
- 161c: 8d6e mv s10,s11
- 161e: f872 sd t3,48(sp)
- 1620: 8de6 mv s11,s9
- 1622: 8a3a mv s4,a4
- 1624: e496 sd t0,72(sp)
- 1626: 891a mv s2,t1
- 1628: 8c9e mv s9,t2
- 162a: 0006871b sext.w a4,a3
- 162e: 2e0482e3 beqz s1,2112 <stbsp_vsprintfcb+0xe44>
- 1632: 40a7863b subw a2,a5,a0
- 1636: 40cb083b subw a6,s6,a2
- 163a: 85c2 mv a1,a6
- 163c: 01075363 bge a4,a6,1642 <stbsp_vsprintfcb+0x374>
- 1640: 85ba mv a1,a4
- lead[0] -= (char)i;
- 1642: 9e8d subw a3,a3,a1
- stbsp__cb_buf_clamp(i, lead[0]);
- 1644: 0005871b sext.w a4,a1
- lead[0] -= (char)i;
- 1648: 06d10423 sb a3,104(sp)
- while (i) {
- 164c: c70d beqz a4,1676 <stbsp_vsprintfcb+0x3a8>
- 164e: 7866 ld a6,120(sp)
- 1650: 02071593 slli a1,a4,0x20
- 1654: 9181 srli a1,a1,0x20
- 1656: 00b78633 add a2,a5,a1
- 165a: 8742 mv a4,a6
- *bf++ = *sn++;
- 165c: 00074683 lbu a3,0(a4)
- 1660: 0785 addi a5,a5,1
- while (i) {
- 1662: 0705 addi a4,a4,1
- *bf++ = *sn++;
- 1664: fed78fa3 sb a3,-1(a5)
- while (i) {
- 1668: fec79ae3 bne a5,a2,165c <stbsp_vsprintfcb+0x38e>
- 166c: 982e add a6,a6,a1
- 166e: fcc2 sd a6,120(sp)
- stbsp__chk_cb_buf(1);
- 1670: c899 beqz s1,1686 <stbsp_vsprintfcb+0x3b8>
- 1672: 40a7863b subw a2,a5,a0
- 1676: 00cbd863 bge s7,a2,1686 <stbsp_vsprintfcb+0x3b8>
- 167a: 65a2 ld a1,8(sp)
- 167c: 9c31 addw s0,s0,a2
- 167e: 9482 jalr s1
- 1680: 34050ee3 beqz a0,21dc <stbsp_vsprintfcb+0xf0e>
- 1684: 87aa mv a5,a0
- while (lead[0]) {
- 1686: 06814683 lbu a3,104(sp)
- 168a: f2c5 bnez a3,162a <stbsp_vsprintfcb+0x35c>
- 168c: 83e6 mv t2,s9
- 168e: 68c2 ld a7,16(sp)
- 1690: 8cee mv s9,s11
- 1692: 6fe2 ld t6,24(sp)
- 1694: 8dea mv s11,s10
- 1696: 76a2 ld a3,40(sp)
- 1698: 8d22 mv s10,s0
- 169a: 7e42 ld t3,48(sp)
- 169c: 843e mv s0,a5
- 169e: 62a6 ld t0,72(sp)
- 16a0: 87ce mv a5,s3
- 16a2: 89a6 mv s3,s1
- 16a4: 7482 ld s1,32(sp)
- 16a6: 834a mv t1,s2
- 16a8: 8752 mv a4,s4
- 16aa: 892a mv s2,a0
- cs = (fl & STBSP__TRIPLET_COMMA) ? ((stbsp__uint32)(c - ((pr + cs) % (c + 1)))) : 0;
- 16ac: 040e7b13 andi s6,t3,64
- c = cs >> 24;
- 16b0: 0182d61b srliw a2,t0,0x18
- 16b4: 0182db9b srliw s7,t0,0x18
- cs = (fl & STBSP__TRIPLET_COMMA) ? ((stbsp__uint32)(c - ((pr + cs) % (c + 1)))) : 0;
- 16b8: 4a01 li s4,0
- 16ba: 000b0e63 beqz s6,16d6 <stbsp_vsprintfcb+0x408>
- cs &= 0xffffff;
- 16be: 02829a13 slli s4,t0,0x28
- 16c2: 028a5a13 srli s4,s4,0x28
- cs = (fl & STBSP__TRIPLET_COMMA) ? ((stbsp__uint32)(c - ((pr + cs) % (c + 1)))) : 0;
- 16c6: 00ea0a3b addw s4,s4,a4
- 16ca: 0016059b addiw a1,a2,1
- 16ce: 02ba7a3b remuw s4,s4,a1
- 16d2: 41460a3b subw s4,a2,s4
- while (pr > 0) {
- 16d6: 0ce05763 blez a4,17a4 <stbsp_vsprintfcb+0x4d6>
- *(stbsp__uint32 *)bf = 0x30303030;
- 16da: 30303837 lui a6,0x30303
- 16de: 03080813 addi a6,a6,48 # 30303030 <_ZSt4cerr+0x302fb7a8>
- 16e2: f026 sd s1,32(sp)
- 16e4: 854a mv a0,s2
- 16e6: 84da mv s1,s6
- 16e8: 895e mv s2,s7
- 16ea: e4d6 sd s5,72(sp)
- 16ec: 8b4e mv s6,s3
- 16ee: 8aea mv s5,s10
- stbsp__chk_cb_buf(1);
- 16f0: 1fe00293 li t0,510
- 16f4: 8d6e mv s10,s11
- *bf++ = stbsp__comma;
- 16f6: 00005f17 auipc t5,0x5
- 16fa: 29af0f13 addi t5,t5,666 # 6990 <stbsp__digitpair>
- 16fe: 8de6 mv s11,s9
- *bf++ = '0';
- 1700: 03000e93 li t4,48
- 1704: e846 sd a7,16(sp)
- 1706: ec7e sd t6,24(sp)
- 1708: f436 sd a3,40(sp)
- 170a: f872 sd t3,48(sp)
- 170c: e89a sd t1,80(sp)
- 170e: 89ba mv s3,a4
- 1710: ecbe sd a5,88(sp)
- 1712: 8bc2 mv s7,a6
- 1714: 8c9e mv s9,t2
- stbsp__cb_buf_clamp(i, pr);
- 1716: 240b0ee3 beqz s6,2172 <stbsp_vsprintfcb+0xea4>
- 171a: 40a407b3 sub a5,s0,a0
- 171e: 40fc063b subw a2,s8,a5
- 1722: 87b2 mv a5,a2
- 1724: 00c9d363 bge s3,a2,172a <stbsp_vsprintfcb+0x45c>
- 1728: 87ce mv a5,s3
- 172a: 0007859b sext.w a1,a5
- pr -= i;
- 172e: 40f989bb subw s3,s3,a5
- if ((fl & STBSP__TRIPLET_COMMA) == 0) {
- 1732: 32048c63 beqz s1,1a6a <stbsp_vsprintfcb+0x79c>
- while (i) {
- 1736: 34058a63 beqz a1,1a8a <stbsp_vsprintfcb+0x7bc>
- 173a: 1582 slli a1,a1,0x20
- *bf++ = stbsp__comma;
- 173c: 0cdf4603 lbu a2,205(t5)
- 1740: 9181 srli a1,a1,0x20
- 1742: 95a2 add a1,a1,s0
- 1744: 0405 addi s0,s0,1
- if ((fl & STBSP__TRIPLET_COMMA) && (cs++ == c)) {
- 1746: c481 beqz s1,174e <stbsp_vsprintfcb+0x480>
- 1748: 1d4901e3 beq s2,s4,210a <stbsp_vsprintfcb+0xe3c>
- 174c: 2a05 addiw s4,s4,1
- *bf++ = '0';
- 174e: 03000793 li a5,48
- 1752: fef40fa3 sb a5,-1(s0)
- while (i) {
- 1756: fe8597e3 bne a1,s0,1744 <stbsp_vsprintfcb+0x476>
- stbsp__chk_cb_buf(1);
- 175a: 320b0b63 beqz s6,1a90 <stbsp_vsprintfcb+0x7c2>
- 175e: 40a5863b subw a2,a1,a0
- 1762: 32c2d763 bge t0,a2,1a90 <stbsp_vsprintfcb+0x7c2>
- 1766: 65a2 ld a1,8(sp)
- 1768: 01560abb addw s5,a2,s5
- 176c: 9b02 jalr s6
- 176e: 3a050ce3 beqz a0,2326 <stbsp_vsprintfcb+0x1058>
- 1772: 842a mv s0,a0
- 1774: 1fe00293 li t0,510
- 1778: 00005f17 auipc t5,0x5
- 177c: 218f0f13 addi t5,t5,536 # 6990 <stbsp__digitpair>
- 1780: 03000e93 li t4,48
- while (pr > 0) {
- 1784: f93049e3 bgtz s3,1716 <stbsp_vsprintfcb+0x448>
- while (lead[0]) {
- 1788: 83e6 mv t2,s9
- 178a: 68c2 ld a7,16(sp)
- 178c: 8cee mv s9,s11
- 178e: 6fe2 ld t6,24(sp)
- 1790: 8dea mv s11,s10
- 1792: 7482 ld s1,32(sp)
- 1794: 8d56 mv s10,s5
- 1796: 76a2 ld a3,40(sp)
- 1798: 7e42 ld t3,48(sp)
- 179a: 6346 ld t1,80(sp)
- 179c: 67e6 ld a5,88(sp)
- 179e: 6aa6 ld s5,72(sp)
- 17a0: 892a mv s2,a0
- 17a2: 89da mv s3,s6
- 17a4: 06814a03 lbu s4,104(sp)
- sn = lead + 1;
- 17a8: fcbe sd a5,120(sp)
- while (lead[0]) {
- 17aa: 0a0a0263 beqz s4,184e <stbsp_vsprintfcb+0x580>
- stbsp__cb_buf_clamp(i, lead[0]);
- 17ae: ec26 sd s1,24(sp)
- 17b0: f036 sd a3,32(sp)
- 17b2: 854a mv a0,s2
- 17b4: 86d2 mv a3,s4
- 17b6: 84ce mv s1,s3
- 17b8: 87a2 mv a5,s0
- stbsp__chk_cb_buf(1);
- 17ba: 1fe00b93 li s7,510
- stbsp__cb_buf_clamp(i, lead[0]);
- 17be: 846a mv s0,s10
- 17c0: 20000b13 li s6,512
- 17c4: 8d6e mv s10,s11
- 17c6: e846 sd a7,16(sp)
- 17c8: 8de6 mv s11,s9
- 17ca: 8a7e mv s4,t6
- 17cc: 8972 mv s2,t3
- 17ce: 899a mv s3,t1
- 17d0: 8c9e mv s9,t2
- 17d2: 0006871b sext.w a4,a3
- 17d6: 140482e3 beqz s1,211a <stbsp_vsprintfcb+0xe4c>
- 17da: 40a7863b subw a2,a5,a0
- 17de: 40cb083b subw a6,s6,a2
- 17e2: 85c2 mv a1,a6
- 17e4: 01075363 bge a4,a6,17ea <stbsp_vsprintfcb+0x51c>
- 17e8: 85ba mv a1,a4
- lead[0] -= (char)i;
- 17ea: 9e8d subw a3,a3,a1
- stbsp__cb_buf_clamp(i, lead[0]);
- 17ec: 0005871b sext.w a4,a1
- lead[0] -= (char)i;
- 17f0: 06d10423 sb a3,104(sp)
- while (i) {
- 17f4: c70d beqz a4,181e <stbsp_vsprintfcb+0x550>
- 17f6: 7866 ld a6,120(sp)
- 17f8: 02071593 slli a1,a4,0x20
- 17fc: 9181 srli a1,a1,0x20
- 17fe: 00b78633 add a2,a5,a1
- 1802: 8742 mv a4,a6
- *bf++ = *sn++;
- 1804: 00074683 lbu a3,0(a4)
- 1808: 0785 addi a5,a5,1
- while (i) {
- 180a: 0705 addi a4,a4,1
- *bf++ = *sn++;
- 180c: fed78fa3 sb a3,-1(a5)
- while (i) {
- 1810: fec79ae3 bne a5,a2,1804 <stbsp_vsprintfcb+0x536>
- 1814: 982e add a6,a6,a1
- 1816: fcc2 sd a6,120(sp)
- stbsp__chk_cb_buf(1);
- 1818: c899 beqz s1,182e <stbsp_vsprintfcb+0x560>
- 181a: 40a7863b subw a2,a5,a0
- 181e: 00cbd863 bge s7,a2,182e <stbsp_vsprintfcb+0x560>
- 1822: 65a2 ld a1,8(sp)
- 1824: 9c31 addw s0,s0,a2
- 1826: 9482 jalr s1
- 1828: 1a050ae3 beqz a0,21dc <stbsp_vsprintfcb+0xf0e>
- 182c: 87aa mv a5,a0
- while (lead[0]) {
- 182e: 06814683 lbu a3,104(sp)
- 1832: f2c5 bnez a3,17d2 <stbsp_vsprintfcb+0x504>
- 1834: 834e mv t1,s3
- 1836: 68c2 ld a7,16(sp)
- 1838: 89a6 mv s3,s1
- 183a: 7682 ld a3,32(sp)
- 183c: 64e2 ld s1,24(sp)
- 183e: 8e4a mv t3,s2
- 1840: 83e6 mv t2,s9
- 1842: 8fd2 mv t6,s4
- 1844: 8cee mv s9,s11
- 1846: 892a mv s2,a0
- 1848: 8dea mv s11,s10
- 184a: 8d22 mv s10,s0
- 184c: 843e mv s0,a5
- while (n) {
- 184e: c6f9 beqz a3,191c <stbsp_vsprintfcb+0x64e>
- STBSP__UNALIGNED(while (i >= 4) {
- 1850: ec26 sd s1,24(sp)
- 1852: 854a mv a0,s2
- 1854: 84d6 mv s1,s5
- 1856: 896a mv s2,s10
- 1858: 87a2 mv a5,s0
- 185a: 8d6e mv s10,s11
- stbsp__chk_cb_buf(1);
- 185c: 1fe00b93 li s7,510
- STBSP__UNALIGNED(while (i >= 4) {
- 1860: 8de6 mv s11,s9
- stbsp__cb_buf_clamp(i, n);
- 1862: 20000b13 li s6,512
- STBSP__UNALIGNED(while (i >= 4) {
- 1866: 4a0d li s4,3
- 1868: e87e sd t6,16(sp)
- 186a: f072 sd t3,32(sp)
- 186c: 8ac6 mv s5,a7
- 186e: f41a sd t1,40(sp)
- 1870: 8436 mv s0,a3
- 1872: 8c9e mv s9,t2
- stbsp__cb_buf_clamp(i, n);
- 1874: 0004071b sext.w a4,s0
- 1878: 100982e3 beqz s3,217c <stbsp_vsprintfcb+0xeae>
- 187c: 40a78633 sub a2,a5,a0
- 1880: 40cb05bb subw a1,s6,a2
- 1884: 862e mv a2,a1
- 1886: 00b75363 bge a4,a1,188c <stbsp_vsprintfcb+0x5be>
- 188a: 863a mv a2,a4
- 188c: 0006071b sext.w a4,a2
- n -= i;
- 1890: 9c11 subw s0,s0,a2
- STBSP__UNALIGNED(while (i >= 4) {
- 1892: 14ea50e3 bge s4,a4,21d2 <stbsp_vsprintfcb+0xf04>
- 1896: ffc70f1b addiw t5,a4,-4
- 189a: 002f5e9b srliw t4,t5,0x2
- 189e: 001e8e1b addiw t3,t4,1
- 18a2: 0e0a slli t3,t3,0x2
- 18a4: 01c785b3 add a1,a5,t3
- 18a8: 8626 mv a2,s1
- 18aa: 4218 lw a4,0(a2)
- 18ac: 0791 addi a5,a5,4
- 18ae: 0611 addi a2,a2,4
- 18b0: 2701 sext.w a4,a4
- 18b2: fee7ae23 sw a4,-4(a5)
- 18b6: feb79ae3 bne a5,a1,18aa <stbsp_vsprintfcb+0x5dc>
- 18ba: 002e9e9b slliw t4,t4,0x2
- 18be: 41df073b subw a4,t5,t4
- while (i) {
- 18c2: 94f2 add s1,s1,t3
- 18c4: c31d beqz a4,18ea <stbsp_vsprintfcb+0x61c>
- 18c6: 8626 mv a2,s1
- 18c8: 87ae mv a5,a1
- 18ca: 00e58f3b addw t5,a1,a4
- *bf++ = *s++;
- 18ce: 00064e83 lbu t4,0(a2)
- 18d2: 0785 addi a5,a5,1
- while (i) {
- 18d4: 00078e1b sext.w t3,a5
- *bf++ = *s++;
- 18d8: ffd78fa3 sb t4,-1(a5)
- 18dc: 0605 addi a2,a2,1
- while (i) {
- 18de: ffcf18e3 bne t5,t3,18ce <stbsp_vsprintfcb+0x600>
- 18e2: 1702 slli a4,a4,0x20
- 18e4: 9301 srli a4,a4,0x20
- 18e6: 95ba add a1,a1,a4
- 18e8: 94ba add s1,s1,a4
- stbsp__chk_cb_buf(1);
- 18ea: 1a098763 beqz s3,1a98 <stbsp_vsprintfcb+0x7ca>
- 18ee: 40a5863b subw a2,a1,a0
- 18f2: 1acbd363 bge s7,a2,1a98 <stbsp_vsprintfcb+0x7ca>
- 18f6: 65a2 ld a1,8(sp)
- 18f8: 0126093b addw s2,a2,s2
- 18fc: 9982 jalr s3
- 18fe: 20050be3 beqz a0,2314 <stbsp_vsprintfcb+0x1046>
- 1902: 87aa mv a5,a0
- while (n) {
- 1904: f825 bnez s0,1874 <stbsp_vsprintfcb+0x5a6>
- 1906: 6fc2 ld t6,16(sp)
- 1908: 64e2 ld s1,24(sp)
- 190a: 7e02 ld t3,32(sp)
- 190c: 7322 ld t1,40(sp)
- 190e: 83e6 mv t2,s9
- 1910: 88d6 mv a7,s5
- 1912: 8cee mv s9,s11
- 1914: 843e mv s0,a5
- 1916: 8dea mv s11,s10
- 1918: 8d4a mv s10,s2
- 191a: 892a mv s2,a0
- while (tz) {
- 191c: 08088863 beqz a7,19ac <stbsp_vsprintfcb+0x6de>
- *(stbsp__uint32 *)bf = 0x30303030;
- 1920: 30303b37 lui s6,0x30303
- *bf++ = '0';
- 1924: 03000a13 li s4,48
- while (i >= 4) {
- 1928: 4a8d li s5,3
- stbsp__chk_cb_buf(1);
- 192a: 1fe00693 li a3,510
- *(stbsp__uint32 *)bf = 0x30303030;
- 192e: 030b0b13 addi s6,s6,48 # 30303030 <_ZSt4cerr+0x302fb7a8>
- stbsp__cb_buf_clamp(i, tz);
- 1932: 20000b93 li s7,512
- 1936: 040989e3 beqz s3,2188 <stbsp_vsprintfcb+0xeba>
- 193a: 41240633 sub a2,s0,s2
- 193e: 40cb87bb subw a5,s7,a2
- 1942: 873e mv a4,a5
- 1944: 00f8d363 bge a7,a5,194a <stbsp_vsprintfcb+0x67c>
- 1948: 8746 mv a4,a7
- 194a: 0007079b sext.w a5,a4
- tz -= i;
- 194e: 40e888bb subw a7,a7,a4
- while (i) {
- 1952: 08078ee3 beqz a5,21ee <stbsp_vsprintfcb+0xf20>
- if ((((stbsp__uintptr)bf) & 3) == 0)
- 1956: 00347713 andi a4,s0,3
- 195a: e719 bnez a4,1968 <stbsp_vsprintfcb+0x69a>
- 195c: 0390006f j 2194 <stbsp_vsprintfcb+0xec6>
- 1960: 00347713 andi a4,s0,3
- 1964: 7a070f63 beqz a4,2122 <stbsp_vsprintfcb+0xe54>
- *bf++ = '0';
- 1968: 01440023 sb s4,0(s0)
- --i;
- 196c: 37fd addiw a5,a5,-1
- *bf++ = '0';
- 196e: 0405 addi s0,s0,1
- while (i) {
- 1970: fbe5 bnez a5,1960 <stbsp_vsprintfcb+0x692>
- stbsp__chk_cb_buf(1);
- 1972: 02098b63 beqz s3,19a8 <stbsp_vsprintfcb+0x6da>
- 1976: 4124063b subw a2,s0,s2
- 197a: 02c6d763 bge a3,a2,19a8 <stbsp_vsprintfcb+0x6da>
- 197e: 65a2 ld a1,8(sp)
- 1980: 854a mv a0,s2
- 1982: f81e sd t2,48(sp)
- 1984: f41a sd t1,40(sp)
- 1986: f072 sd t3,32(sp)
- 1988: ec7e sd t6,24(sp)
- 198a: e846 sd a7,16(sp)
- 198c: 00cd0d3b addw s10,s10,a2
- 1990: 9982 jalr s3
- 1992: 892a mv s2,a0
- 1994: 1a0502e3 beqz a0,2338 <stbsp_vsprintfcb+0x106a>
- 1998: 73c2 ld t2,48(sp)
- 199a: 7322 ld t1,40(sp)
- 199c: 7e02 ld t3,32(sp)
- 199e: 6fe2 ld t6,24(sp)
- 19a0: 68c2 ld a7,16(sp)
- 19a2: 842a mv s0,a0
- 19a4: 1fe00693 li a3,510
- while (tz) {
- 19a8: f80897e3 bnez a7,1936 <stbsp_vsprintfcb+0x668>
- sn = tail + 1;
- 19ac: 07110793 addi a5,sp,113
- 19b0: fcbe sd a5,120(sp)
- while (tail[0]) {
- 19b2: 080f8763 beqz t6,1a40 <stbsp_vsprintfcb+0x772>
- stbsp__cb_buf_clamp(i, tail[0]);
- 19b6: 854a mv a0,s2
- 19b8: 8b6a mv s6,s10
- stbsp__chk_cb_buf(1);
- 19ba: 1fe00a93 li s5,510
- stbsp__cb_buf_clamp(i, tail[0]);
- 19be: 8d4e mv s10,s3
- 19c0: 20000a13 li s4,512
- 19c4: 8bf2 mv s7,t3
- 19c6: 891a mv s2,t1
- 19c8: 899e mv s3,t2
- 19ca: 000f879b sext.w a5,t6
- 19ce: 7c0d0863 beqz s10,219e <stbsp_vsprintfcb+0xed0>
- 19d2: 40a4063b subw a2,s0,a0
- 19d6: 40ca06bb subw a3,s4,a2
- 19da: 8736 mv a4,a3
- 19dc: 00d7d363 bge a5,a3,19e2 <stbsp_vsprintfcb+0x714>
- 19e0: 873e mv a4,a5
- tail[0] -= (char)i;
- 19e2: 40ef8fbb subw t6,t6,a4
- stbsp__cb_buf_clamp(i, tail[0]);
- 19e6: 0007079b sext.w a5,a4
- tail[0] -= (char)i;
- 19ea: 07f10823 sb t6,112(sp)
- while (i) {
- 19ee: c795 beqz a5,1a1a <stbsp_vsprintfcb+0x74c>
- 19f0: 75e6 ld a1,120(sp)
- 19f2: 02079613 slli a2,a5,0x20
- 19f6: 9201 srli a2,a2,0x20
- 19f8: 00c406b3 add a3,s0,a2
- 19fc: 87ae mv a5,a1
- *bf++ = *sn++;
- 19fe: 0007c703 lbu a4,0(a5)
- 1a02: 0405 addi s0,s0,1
- while (i) {
- 1a04: 0785 addi a5,a5,1
- *bf++ = *sn++;
- 1a06: fee40fa3 sb a4,-1(s0)
- while (i) {
- 1a0a: fed41ae3 bne s0,a3,19fe <stbsp_vsprintfcb+0x730>
- 1a0e: 95b2 add a1,a1,a2
- 1a10: fcae sd a1,120(sp)
- stbsp__chk_cb_buf(1);
- 1a12: 000d0d63 beqz s10,1a2c <stbsp_vsprintfcb+0x75e>
- 1a16: 40a4063b subw a2,s0,a0
- 1a1a: 00cad963 bge s5,a2,1a2c <stbsp_vsprintfcb+0x75e>
- 1a1e: 65a2 ld a1,8(sp)
- 1a20: 00cb0b3b addw s6,s6,a2
- 1a24: 9d02 jalr s10
- 1a26: 200509e3 beqz a0,2438 <stbsp_vsprintfcb+0x116a>
- 1a2a: 842a mv s0,a0
- while (tail[0]) {
- 1a2c: 07014f83 lbu t6,112(sp)
- 1a30: f80f9de3 bnez t6,19ca <stbsp_vsprintfcb+0x6fc>
- 1a34: 834a mv t1,s2
- 1a36: 83ce mv t2,s3
- 1a38: 8e5e mv t3,s7
- 1a3a: 89ea mv s3,s10
- 1a3c: 892a mv s2,a0
- 1a3e: 8d5a mv s10,s6
- if (fl & STBSP__LEFTJUST)
- 1a40: 001e7e13 andi t3,t3,1
- 1a44: 000e0663 beqz t3,1a50 <stbsp_vsprintfcb+0x782>
- if (fw > 0) {
- 1a48: 00605463 blez t1,1a50 <stbsp_vsprintfcb+0x782>
- 1a4c: 0300106f j 2a7c <stbsp_vsprintfcb+0x17ae>
- for (;;) {
- 1a50: 6b86 ld s7,64(sp)
- 1a52: 2c013a03 ld s4,704(sp)
- 1a56: 2b813a83 ld s5,696(sp)
- 1a5a: 2b013b03 ld s6,688(sp)
- ++f;
- 1a5e: 0485 addi s1,s1,1
- for (;;) {
- 1a60: b0f1 j 132c <stbsp_vsprintfcb+0x5e>
- fl |= STBSP__METRIC_SUFFIX;
- 1a62: 100e6e13 ori t3,t3,256
- continue;
- 1a66: 0685 addi a3,a3,1
- 1a68: bad1 j 143c <stbsp_vsprintfcb+0x16e>
- while (i) {
- 1a6a: 0e0580e3 beqz a1,234a <stbsp_vsprintfcb+0x107c>
- if ((((stbsp__uintptr)bf) & 3) == 0)
- 1a6e: 00347793 andi a5,s0,3
- 1a72: e799 bnez a5,1a80 <stbsp_vsprintfcb+0x7b2>
- 1a74: 0dd0006f j 2350 <stbsp_vsprintfcb+0x1082>
- 1a78: 00347793 andi a5,s0,3
- 1a7c: 72078463 beqz a5,21a4 <stbsp_vsprintfcb+0xed6>
- *bf++ = '0';
- 1a80: 01d40023 sb t4,0(s0)
- --i;
- 1a84: 35fd addiw a1,a1,-1
- *bf++ = '0';
- 1a86: 0405 addi s0,s0,1
- while (i) {
- 1a88: f9e5 bnez a1,1a78 <stbsp_vsprintfcb+0x7aa>
- while (i) {
- 1a8a: 85a2 mv a1,s0
- stbsp__chk_cb_buf(1);
- 1a8c: cc0b19e3 bnez s6,175e <stbsp_vsprintfcb+0x490>
- 1a90: 842e mv s0,a1
- while (pr > 0) {
- 1a92: c93042e3 bgtz s3,1716 <stbsp_vsprintfcb+0x448>
- 1a96: b9cd j 1788 <stbsp_vsprintfcb+0x4ba>
- while (i) {
- 1a98: 87ae mv a5,a1
- while (n) {
- 1a9a: dc041de3 bnez s0,1874 <stbsp_vsprintfcb+0x5a6>
- 1a9e: b5a5 j 1906 <stbsp_vsprintfcb+0x638>
- while ((f[0] >= '0') && (f[0] <= '9')) {
- 1aa0: fd07871b addiw a4,a5,-48
- 1aa4: 0ff77713 zext.b a4,a4
- 1aa8: 4625 li a2,9
- ++f;
- 1aaa: 0485 addi s1,s1,1
- pr = 0;
- 1aac: 4881 li a7,0
- while ((f[0] >= '0') && (f[0] <= '9')) {
- 1aae: 46a5 li a3,9
- 1ab0: 9ce669e3 bltu a2,a4,1482 <stbsp_vsprintfcb+0x1b4>
- pr = pr * 10 + f[0] - '0';
- 1ab4: 0028971b slliw a4,a7,0x2
- 1ab8: 0117073b addw a4,a4,a7
- 1abc: 0017171b slliw a4,a4,0x1
- f++;
- 1ac0: 0485 addi s1,s1,1
- pr = pr * 10 + f[0] - '0';
- 1ac2: 9f3d addw a4,a4,a5
- while ((f[0] >= '0') && (f[0] <= '9')) {
- 1ac4: 0004c783 lbu a5,0(s1)
- pr = pr * 10 + f[0] - '0';
- 1ac8: fd07089b addiw a7,a4,-48
- while ((f[0] >= '0') && (f[0] <= '9')) {
- 1acc: fd07871b addiw a4,a5,-48
- 1ad0: 0ff77713 zext.b a4,a4
- 1ad4: fee6f0e3 bgeu a3,a4,1ab4 <stbsp_vsprintfcb+0x7e6>
- 1ad8: b26d j 1482 <stbsp_vsprintfcb+0x1b4>
- fl |= STBSP__METRIC_1024;
- 1ada: 8f5d or a4,a4,a5
- 1adc: 00070e1b sext.w t3,a4
- 1ae0: 0685 addi a3,a3,1
- 1ae2: baa9 j 143c <stbsp_vsprintfcb+0x16e>
- *bf = 0;
- 1ae4: 00040023 sb zero,0(s0)
- 1ae8: b209 j 13ea <stbsp_vsprintfcb+0x11c>
- if (f[0] == 'l') {
- 1aea: 0014c783 lbu a5,1(s1)
- 1aee: 06c00713 li a4,108
- fl |= ((sizeof(long) == 8) ? STBSP__INTMAX : 0);
- 1af2: 020e6e13 ori t3,t3,32
- if (f[0] == 'l') {
- 1af6: 00e78c63 beq a5,a4,1b0e <stbsp_vsprintfcb+0x840>
- ++f;
- 1afa: 0485 addi s1,s1,1
- 1afc: ba65 j 14b4 <stbsp_vsprintfcb+0x1e6>
- if (f[0] == 'h')
- 1afe: 0014c783 lbu a5,1(s1)
- 1b02: 06800713 li a4,104
- fl |= STBSP__HALFWIDTH;
- 1b06: 200e6e13 ori t3,t3,512
- if (f[0] == 'h')
- 1b0a: fee798e3 bne a5,a4,1afa <stbsp_vsprintfcb+0x82c>
- if ((f[1] == '6') && (f[2] == '4')) {
- 1b0e: 0024c783 lbu a5,2(s1)
- ++f;
- 1b12: 0489 addi s1,s1,2
- 1b14: b245 j 14b4 <stbsp_vsprintfcb+0x1e6>
- s = va_arg(va, char *);
- 1b16: 008b8713 addi a4,s7,8
- 1b1a: e0ba sd a4,64(sp)
- if (fl & STBSP__INTMAX) {
- 1b1c: 020e7693 andi a3,t3,32
- 1b20: 8772 mv a4,t3
- 1b22: 24069ee3 bnez a3,257e <stbsp_vsprintfcb+0x12b0>
- stbsp__int32 i = va_arg(va, stbsp__int32);
- 1b26: 000ba683 lw a3,0(s7)
- if ((f[0] != 'u') && (i < 0)) {
- 1b2a: 07500613 li a2,117
- n64 = (stbsp__uint32)i;
- 1b2e: 02069f13 slli t5,a3,0x20
- 1b32: 020f5f13 srli t5,t5,0x20
- if ((f[0] != 'u') && (i < 0)) {
- 1b36: 00c78a63 beq a5,a2,1b4a <stbsp_vsprintfcb+0x87c>
- 1b3a: 0006d863 bgez a3,1b4a <stbsp_vsprintfcb+0x87c>
- fl |= STBSP__NEGATIVE;
- 1b3e: 08076713 ori a4,a4,128
- n64 = (stbsp__uint32)-i;
- 1b42: 40d00f3b negw t5,a3
- fl |= STBSP__NEGATIVE;
- 1b46: 00070e1b sext.w t3,a4
- if (fl & STBSP__METRIC_SUFFIX) {
- 1b4a: 100e7693 andi a3,t3,256
- 1b4e: 5c0683e3 beqz a3,2914 <stbsp_vsprintfcb+0x1646>
- if (n64 < 1024)
- 1b52: 3ff00793 li a5,1023
- 1b56: 01e7e463 bltu a5,t5,1b5e <stbsp_vsprintfcb+0x890>
- 1b5a: 0ea0106f j 2c44 <stbsp_vsprintfcb+0x1976>
- else if (pr == -1)
- 1b5e: 57fd li a5,-1
- 1b60: 30f887e3 beq a7,a5,266e <stbsp_vsprintfcb+0x13a0>
- fv = (double)(stbsp__int64)n64;
- 1b64: d22f7553 fcvt.d.l fa0,t5
- if (fl & STBSP__METRIC_1024)
- 1b68: 034e1793 slli a5,t3,0x34
- 1b6c: 0007c463 bltz a5,1b74 <stbsp_vsprintfcb+0x8a6>
- 1b70: 2300106f j 2da0 <stbsp_vsprintfcb+0x1ad2>
- divisor = 1024.0;
- 1b74: 00004797 auipc a5,0x4
- 1b78: d047b787 fld fa5,-764(a5) # 5878 <STDIN_FD+0x20>
- if ((fv < divisor) && (fv > -divisor))
- 1b7c: 22f79753 fneg.d fa4,fa5
- fl += 0x1000000;
- 1b80: 010006b7 lui a3,0x1000
- while (fl < 0x4000000) {
- 1b84: 04000737 lui a4,0x4000
- if ((fv < divisor) && (fv > -divisor))
- 1b88: a2f517d3 flt.d a5,fa0,fa5
- 1b8c: c789 beqz a5,1b96 <stbsp_vsprintfcb+0x8c8>
- 1b8e: a2a717d3 flt.d a5,fa4,fa0
- 1b92: 3e079863 bnez a5,1f82 <stbsp_vsprintfcb+0xcb4>
- fl += 0x1000000;
- 1b96: 01c68e3b addw t3,a3,t3
- fv /= divisor;
- 1b9a: 1af57553 fdiv.d fa0,fa0,fa5
- while (fl < 0x4000000) {
- 1b9e: feee65e3 bltu t3,a4,1b88 <stbsp_vsprintfcb+0x8ba>
- 1ba2: a6c5 j 1f82 <stbsp_vsprintfcb+0xcb4>
- h = (f[0] == 'X') ? hexu : hex;
- 1ba4: 05800693 li a3,88
- if (fl & STBSP__INTMAX) {
- 1ba8: 020e7713 andi a4,t3,32
- h = (f[0] == 'X') ? hexu : hex;
- 1bac: 00005817 auipc a6,0x5
- 1bb0: ecc80813 addi a6,a6,-308 # 6a78 <hex.0>
- 1bb4: 00d79663 bne a5,a3,1bc0 <stbsp_vsprintfcb+0x8f2>
- 1bb8: 00005817 auipc a6,0x5
- 1bbc: ea880813 addi a6,a6,-344 # 6a60 <hexu.1>
- l = (4 << 4) | (4 << 8);
- 1bc0: 44000793 li a5,1088
- 1bc4: d0be sw a5,96(sp)
- if (fl & STBSP__LEADING_0X) {
- 1bc6: 008e7793 andi a5,t3,8
- 1bca: 7a079263 bnez a5,236e <stbsp_vsprintfcb+0x10a0>
- lead[0] = 0;
- 1bce: 06010423 sb zero,104(sp)
- s = va_arg(va, char *);
- 1bd2: 008b8793 addi a5,s7,8
- 1bd6: e0be sd a5,64(sp)
- if (fl & STBSP__INTMAX)
- 1bd8: 72070b63 beqz a4,230e <stbsp_vsprintfcb+0x1040>
- n64 = va_arg(va, stbsp__uint64);
- 1bdc: 000bb683 ld a3,0(s7)
- dp = 0;
- 1be0: d282 sw zero,100(sp)
- tail[0] = 0;
- 1be2: 06010823 sb zero,112(sp)
- if ((fl & STBSP__LEFTJUST) == 0) {
- 1be6: 001e7513 andi a0,t3,1
- if (n64 == 0) {
- 1bea: 380694e3 bnez a3,2772 <stbsp_vsprintfcb+0x14a4>
- lead[0] = 0;
- 1bee: 06010423 sb zero,104(sp)
- if (pr == 0) {
- 1bf2: 78089a63 bnez a7,2386 <stbsp_vsprintfcb+0x10b8>
- if (fw < (stbsp__int32)n)
- 1bf6: fffb4313 not t1,s6
- 1bfa: 43f35313 srai t1,t1,0x3f
- l = 0;
- 1bfe: d082 sw zero,96(sp)
- if (fw < (stbsp__int32)n)
- 1c00: 01637333 and t1,t1,s6
- goto scopy;
- 1c04: 4701 li a4,0
- 1c06: 4f81 li t6,0
- 1c08: 4a01 li s4,0
- cs = 0;
- 1c0a: 4281 li t0,0
- s = num + STBSP__NUMSZ;
- 1c0c: 28010a93 addi s5,sp,640
- if ((fl & STBSP__LEFTJUST) == 0) {
- 1c10: 9c0506e3 beqz a0,15dc <stbsp_vsprintfcb+0x30e>
- if (fw + pr) {
- 1c14: 00e307bb addw a5,t1,a4
- 1c18: 9c079fe3 bnez a5,15f6 <stbsp_vsprintfcb+0x328>
- 1c1c: 06910793 addi a5,sp,105
- 1c20: b661 j 17a8 <stbsp_vsprintfcb+0x4da>
- h = (f[0] == 'E') ? hexu : hex;
- 1c22: 04500713 li a4,69
- 1c26: 00005317 auipc t1,0x5
- 1c2a: e5230313 addi t1,t1,-430 # 6a78 <hex.0>
- 1c2e: 1ce78ae3 beq a5,a4,2602 <stbsp_vsprintfcb+0x1334>
- fv = va_arg(va, double);
- 1c32: 008b8713 addi a4,s7,8
- if (pr == -1)
- 1c36: 57fd li a5,-1
- fv = va_arg(va, double);
- 1c38: e0ba sd a4,64(sp)
- 1c3a: 000bb507 fld fa0,0(s7)
- if (pr == -1)
- 1c3e: 1af88ce3 beq a7,a5,25f6 <stbsp_vsprintfcb+0x1328>
- if (stbsp__real_to_str(&sn, &l, num, &dp, fv, pr | 0x80000000))
- 1c42: 80000737 lui a4,0x80000
- 1c46: 00e8e733 or a4,a7,a4
- 1c4a: 2701 sext.w a4,a4
- 1c4c: 10d4 addi a3,sp,100
- 1c4e: 0110 addi a2,sp,128
- 1c50: 108c addi a1,sp,96
- 1c52: 18a8 addi a0,sp,120
- 1c54: f41e sd t2,40(sp)
- 1c56: f01a sd t1,32(sp)
- 1c58: ec72 sd t3,24(sp)
- 1c5a: e846 sd a7,16(sp)
- 1c5c: d8efe0ef jal 1ea <stbsp__real_to_str>
- 1c60: 68c2 ld a7,16(sp)
- 1c62: 6e62 ld t3,24(sp)
- 1c64: 7302 ld t1,32(sp)
- 1c66: 73a2 ld t2,40(sp)
- if (dp == STBSP__SPECIAL) {
- 1c68: 5796 lw a5,100(sp)
- s = (char *)sn;
- 1c6a: 7ae6 ld s5,120(sp)
- if ((l - 1) > (stbsp__uint32)pr)
- 1c6c: 5686 lw a3,96(sp)
- if (stbsp__real_to_str(&sn, &l, num, &dp, fv, pr | 0x80000000))
- 1c6e: 3c0511e3 bnez a0,2830 <stbsp_vsprintfcb+0x1562>
- tail[0] = 0;
- 1c72: 06010823 sb zero,112(sp)
- sign[0] = 0;
- 1c76: 06010423 sb zero,104(sp)
- } else if (fl & STBSP__LEADINGSPACE) {
- 1c7a: 004e7713 andi a4,t3,4
- 1c7e: 6a070ee3 beqz a4,2b3a <stbsp_vsprintfcb+0x186c>
- sign[0] = 1;
- 1c82: 6709 lui a4,0x2
- 1c84: 0705 addi a4,a4,1 # 2001 <stbsp_vsprintfcb+0xd33>
- 1c86: 06e11423 sh a4,104(sp)
- if (dp == STBSP__SPECIAL) {
- 1c8a: 671d lui a4,0x7
- 1c8c: 1ee794e3 bne a5,a4,2674 <stbsp_vsprintfcb+0x13a6>
- if (pr < (stbsp__int32)l)
- 1c90: 0006879b sext.w a5,a3
- n = pr + lead[0] + tail[0] + tz;
- 1c94: 06814a03 lbu s4,104(sp)
- if (pr < (stbsp__int32)l)
- 1c98: fff7c793 not a5,a5
- n = pr + lead[0] + tail[0] + tz;
- 1c9c: 07014f83 lbu t6,112(sp)
- if (pr < (stbsp__int32)l)
- 1ca0: 97fd srai a5,a5,0x3f
- 1ca2: 8ff5 and a5,a5,a3
- n = pr + lead[0] + tail[0] + tz;
- 1ca4: 00fa073b addw a4,s4,a5
- 1ca8: 01f7063b addw a2,a4,t6
- 1cac: 8732 mv a4,a2
- if ((fl & STBSP__LEFTJUST) == 0) {
- 1cae: 001e7513 andi a0,t3,1
- if (pr < (stbsp__int32)l)
- 1cb2: 2781 sext.w a5,a5
- if (fw < (stbsp__int32)n)
- 1cb4: 835a mv t1,s6
- 1cb6: 00cb5363 bge s6,a2,1cbc <stbsp_vsprintfcb+0x9ee>
- 1cba: 8332 mv t1,a2
- fw -= n;
- 1cbc: 40e3033b subw t1,t1,a4
- cs = 0;
- 1cc0: 4281 li t0,0
- pr -= l;
- 1cc2: 40d7873b subw a4,a5,a3
- tz = 0;
- 1cc6: 4881 li a7,0
- goto scopy;
- 1cc8: b7a1 j 1c10 <stbsp_vsprintfcb+0x942>
- h = (f[0] == 'G') ? hexu : hex;
- 1cca: 04700713 li a4,71
- 1cce: 00005317 auipc t1,0x5
- 1cd2: daa30313 addi t1,t1,-598 # 6a78 <hex.0>
- 1cd6: 14e783e3 beq a5,a4,261c <stbsp_vsprintfcb+0x134e>
- fv = va_arg(va, double);
- 1cda: 008b8713 addi a4,s7,8
- if (pr == -1)
- 1cde: 57fd li a5,-1
- fv = va_arg(va, double);
- 1ce0: e0ba sd a4,64(sp)
- 1ce2: 000bb507 fld fa0,0(s7)
- if (pr == -1)
- 1ce6: 12f884e3 beq a7,a5,260e <stbsp_vsprintfcb+0x1340>
- else if (pr == 0)
- 1cea: 6e0887e3 beqz a7,2bd8 <stbsp_vsprintfcb+0x190a>
- if (stbsp__real_to_str(&sn, &l, num, &dp, fv, (pr - 1) | 0x80000000))
- 1cee: fff8871b addiw a4,a7,-1
- 1cf2: 800007b7 lui a5,0x80000
- 1cf6: 8f5d or a4,a4,a5
- 1cf8: 2701 sext.w a4,a4
- l = stbsp__strlen_limited(s, (pr >= 0) ? pr : ~0u);
- 1cfa: 00088a9b sext.w s5,a7
- 1cfe: 8a46 mv s4,a7
- if (stbsp__real_to_str(&sn, &l, num, &dp, fv, (pr - 1) | 0x80000000))
- 1d00: 10d4 addi a3,sp,100
- 1d02: 0110 addi a2,sp,128
- 1d04: 108c addi a1,sp,96
- 1d06: 18a8 addi a0,sp,120
- 1d08: f01e sd t2,32(sp)
- 1d0a: ec1a sd t1,24(sp)
- 1d0c: e872 sd t3,16(sp)
- 1d0e: cdcfe0ef jal 1ea <stbsp__real_to_str>
- 1d12: 6e42 ld t3,16(sp)
- 1d14: 6362 ld t1,24(sp)
- 1d16: 7382 ld t2,32(sp)
- 1d18: 4281 li t0,0
- 1d1a: c509 beqz a0,1d24 <stbsp_vsprintfcb+0xa56>
- fl |= STBSP__NEGATIVE;
- 1d1c: 080e6e13 ori t3,t3,128
- 1d20: 08000293 li t0,128
- if (l > (stbsp__uint32)pr)
- 1d24: 5806 lw a6,96(sp)
- 1d26: 010af463 bgeu s5,a6,1d2e <stbsp_vsprintfcb+0xa60>
- l = pr;
- 1d2a: d0d6 sw s5,96(sp)
- 1d2c: 8856 mv a6,s5
- while ((l > 1) && (pr) && (sn[l - 1] == '0')) {
- 1d2e: 4705 li a4,1
- if ((dp <= -4) || (dp > (stbsp__int32)n)) {
- 1d30: 5796 lw a5,100(sp)
- while ((l > 1) && (pr) && (sn[l - 1] == '0')) {
- 1d32: 01076463 bltu a4,a6,1d3a <stbsp_vsprintfcb+0xa6c>
- 1d36: 1800106f j 2eb6 <stbsp_vsprintfcb+0x1be8>
- 1d3a: 7be6 ld s7,120(sp)
- 1d3c: fff8071b addiw a4,a6,-1
- 1d40: 1702 slli a4,a4,0x20
- 1d42: 9301 srli a4,a4,0x20
- 1d44: 001a0e9b addiw t4,s4,1
- 1d48: 75e2 ld a1,56(sp)
- 1d4a: 8ade mv s5,s7
- 1d4c: 975e add a4,a4,s7
- 1d4e: 410e8ebb subw t4,t4,a6
- 1d52: 88d2 mv a7,s4
- 1d54: 86c2 mv a3,a6
- 1d56: 4f01 li t5,0
- 1d58: 03000f93 li t6,48
- 1d5c: e842 sd a6,16(sp)
- 1d5e: a809 j 1d70 <stbsp_vsprintfcb+0xaa2>
- --pr;
- 1d60: 38fd addiw a7,a7,-1
- while ((l > 1) && (pr) && (sn[l - 1] == '0')) {
- 1d62: 211e80e3 beq t4,a7,2762 <stbsp_vsprintfcb+0x1494>
- 1d66: 177d addi a4,a4,-1 # 6fff <_stdout+0x14f>
- 1d68: 4f05 li t5,1
- 1d6a: 1e088ce3 beqz a7,2762 <stbsp_vsprintfcb+0x1494>
- --l;
- 1d6e: 85b6 mv a1,a3
- while ((l > 1) && (pr) && (sn[l - 1] == '0')) {
- 1d70: 00074803 lbu a6,0(a4)
- 1d74: fff6861b addiw a2,a3,-1 # ffffff <_ZSt4cerr+0xff8777>
- 1d78: 0006851b sext.w a0,a3
- 1d7c: 2581 sext.w a1,a1
- 1d7e: 0006069b sext.w a3,a2
- 1d82: fdf80fe3 beq a6,t6,1d60 <stbsp_vsprintfcb+0xa92>
- 1d86: 6842 ld a6,16(sp)
- 1d88: fc2e sd a1,56(sp)
- 1d8a: 86c2 mv a3,a6
- 1d8c: 000f0463 beqz t5,1d94 <stbsp_vsprintfcb+0xac6>
- 1d90: d0ae sw a1,96(sp)
- 1d92: 86ae mv a3,a1
- if ((dp <= -4) || (dp > (stbsp__int32)n)) {
- 1d94: 5775 li a4,-3
- 1d96: 08e7cee3 blt a5,a4,2632 <stbsp_vsprintfcb+0x1364>
- 1d9a: 08fa4be3 blt s4,a5,2630 <stbsp_vsprintfcb+0x1362>
- pr = (dp < (stbsp__int32)l) ? l - dp : 0;
- 1d9e: 0005071b sext.w a4,a0
- if (dp > 0) {
- 1da2: 7ef057e3 blez a5,2d90 <stbsp_vsprintfcb+0x1ac2>
- pr = (dp < (stbsp__int32)l) ? l - dp : 0;
- 1da6: 4881 li a7,0
- 1da8: 00e7d463 bge a5,a4,1db0 <stbsp_vsprintfcb+0xae2>
- 1dac: 40f508bb subw a7,a0,a5
- tail[0] = 0;
- 1db0: 06010823 sb zero,112(sp)
- if (fl & STBSP__NEGATIVE) {
- 1db4: 20029463 bnez t0,1fbc <stbsp_vsprintfcb+0xcee>
- } else if (fl & STBSP__LEADINGSPACE) {
- 1db8: 004e7713 andi a4,t3,4
- 1dbc: 000715e3 bnez a4,25c6 <stbsp_vsprintfcb+0x12f8>
- } else if (fl & STBSP__LEADINGPLUS) {
- 1dc0: 002e7713 andi a4,t3,2
- 1dc4: 660719e3 bnez a4,2c36 <stbsp_vsprintfcb+0x1968>
- sign[0] = 0;
- 1dc8: 06010423 sb zero,104(sp)
- 1dcc: aaed j 1fc6 <stbsp_vsprintfcb+0xcf8>
- h = (f[0] == 'A') ? hexu : hex;
- 1dce: 04100713 li a4,65
- 1dd2: 00005597 auipc a1,0x5
- 1dd6: ca658593 addi a1,a1,-858 # 6a78 <hex.0>
- 1dda: 00e783e3 beq a5,a4,25e0 <stbsp_vsprintfcb+0x1312>
- fv = va_arg(va, double);
- 1dde: 008b8693 addi a3,s7,8
- if (pr == -1)
- 1de2: 577d li a4,-1
- fv = va_arg(va, double);
- 1de4: e0b6 sd a3,64(sp)
- 1de6: 000bb783 ld a5,0(s7)
- if (pr == -1)
- 1dea: 7ee88963 beq a7,a4,25dc <stbsp_vsprintfcb+0x130e>
- d = value;
-
- STBSP__COPYFP(b, d);
-
- *bits = b & ((((stbsp__uint64)1) << 52) - 1);
- *expo = (stbsp__int32)(((b >> 52) & 2047) - 1023);
- 1dee: 4347d613 srai a2,a5,0x34
- *bits = b & ((((stbsp__uint64)1) << 52) - 1);
- 1df2: 00c79513 slli a0,a5,0xc
- *expo = (stbsp__int32)(((b >> 52) & 2047) - 1023);
- 1df6: 7ff67613 andi a2,a2,2047
- *bits = b & ((((stbsp__uint64)1) << 52) - 1);
- 1dfa: 8131 srli a0,a0,0xc
- *expo = (stbsp__int32)(((b >> 52) & 2047) - 1023);
- 1dfc: c016061b addiw a2,a2,-1023
- if (stbsp__real_to_parts((stbsp__int64 *)&n64, &dp, fv))
- 1e00: 7a07c863 bltz a5,25b0 <stbsp_vsprintfcb+0x12e2>
- } else if (fl & STBSP__LEADINGSPACE) {
- 1e04: 004e7793 andi a5,t3,4
- 1e08: 60078ee3 beqz a5,2c24 <stbsp_vsprintfcb+0x1956>
- 1e0c: 6789 lui a5,0x2
- 1e0e: 2785 addiw a5,a5,1 # 2001 <stbsp_vsprintfcb+0xd33>
- sign[0] = 1;
- 1e10: 06f11423 sh a5,104(sp)
- 1e14: 468d li a3,3
- 1e16: 4a0d li s4,3
- 1e18: 4809 li a6,2
- n64 |= (((stbsp__uint64)1) << 52);
- 1e1a: 4705 li a4,1
- 1e1c: 1752 slli a4,a4,0x34
- if (dp == -1023)
- 1e1e: c0100793 li a5,-1023
- n64 |= (((stbsp__uint64)1) << 52);
- 1e22: 8f49 or a4,a4,a0
- if (dp == -1023)
- 1e24: 5cf600e3 beq a2,a5,2be4 <stbsp_vsprintfcb+0x1916>
- if (pr < 15)
- 1e28: 4539 li a0,14
- n64 <<= (64 - 56);
- 1e2a: 00871793 slli a5,a4,0x8
- if (pr < 15)
- 1e2e: 251546e3 blt a0,a7,287a <stbsp_vsprintfcb+0x15ac>
- n64 += ((((stbsp__uint64)8) << 56) >> (pr * 4));
- 1e32: 4705 li a4,1
- 1e34: 0028951b slliw a0,a7,0x2
- 1e38: 176e slli a4,a4,0x3b
- 1e3a: 00a75733 srl a4,a4,a0
- 1e3e: 973e add a4,a4,a5
- *s++ = h[(n64 >> 60) & 15];
- 1e40: 03c75793 srli a5,a4,0x3c
- 1e44: 97ae add a5,a5,a1
- 1e46: 0007c503 lbu a0,0(a5)
- lead[1 + lead[0]] = '0';
- 1e4a: 22080793 addi a5,a6,544
- 1e4e: 06010813 addi a6,sp,96
- 1e52: 97c2 add a5,a5,a6
- 1e54: 03000813 li a6,48
- 1e58: df078423 sb a6,-536(a5)
- lead[2 + lead[0]] = 'x';
- 1e5c: 22068793 addi a5,a3,544
- 1e60: 1094 addi a3,sp,96
- 1e62: 96be add a3,a3,a5
- 1e64: 07800793 li a5,120
- 1e68: def68423 sb a5,-536(a3)
- lead[0] += 2;
- 1e6c: 07410423 sb s4,104(sp)
- *s++ = h[(n64 >> 60) & 15];
- 1e70: 0ca10023 sb a0,192(sp)
- if (pr)
- 1e74: 740893e3 bnez a7,2dba <stbsp_vsprintfcb+0x1aec>
- sn = s;
- 1e78: 0c110793 addi a5,sp,193
- 1e7c: fcbe sd a5,120(sp)
- 1e7e: 4701 li a4,0
- 1e80: 4501 li a0,0
- 1e82: 4305 li t1,1
- 1e84: 4685 li a3,1
- tail[1] = h[17];
- 1e86: 0115c583 lbu a1,17(a1)
- tail[2] = '+';
- 1e8a: 02b00793 li a5,43
- tail[1] = h[17];
- 1e8e: 06b108a3 sb a1,113(sp)
- if (dp < 0) {
- 1e92: 00065663 bgez a2,1e9e <stbsp_vsprintfcb+0xbd0>
- dp = -dp;
- 1e96: 40c0063b negw a2,a2
- tail[2] = '-';
- 1e9a: 02d00793 li a5,45
- tail[n] = '0' + dp % 10;
- 1e9e: 4829 li a6,10
- 1ea0: 030665bb remw a1,a2,a6
- 1ea4: 06f10923 sb a5,114(sp)
- n = (dp >= 1000) ? 6 : ((dp >= 100) ? 5 : ((dp >= 10) ? 4 : 3));
- 1ea8: 3e700e93 li t4,999
- tail[n] = '0' + dp % 10;
- 1eac: 0305859b addiw a1,a1,48
- 1eb0: 0ff5f593 zext.b a1,a1
- n = (dp >= 1000) ? 6 : ((dp >= 100) ? 5 : ((dp >= 10) ? 4 : 3));
- 1eb4: 18cec3e3 blt t4,a2,283a <stbsp_vsprintfcb+0x156c>
- 1eb8: 06300e93 li t4,99
- 1ebc: 54cec1e3 blt t4,a2,2bfe <stbsp_vsprintfcb+0x1930>
- 1ec0: 4ea5 li t4,9
- 1ec2: 72ced6e3 bge t4,a2,2dee <stbsp_vsprintfcb+0x1b20>
- dp /= 10;
- 1ec6: 030647bb divw a5,a2,a6
- tail[0] = (char)n;
- 1eca: 4611 li a2,4
- 1ecc: 06c10823 sb a2,112(sp)
- tail[n] = '0' + dp % 10;
- 1ed0: 06b10a23 sb a1,116(sp)
- 1ed4: 4811 li a6,4
- 1ed6: 4f91 li t6,4
- 1ed8: 0307879b addiw a5,a5,48
- 1edc: 06f109a3 sb a5,115(sp)
- n = pr + lead[0] + tail[0] + tz;
- 1ee0: 006a07bb addw a5,s4,t1
- 1ee4: 010787bb addw a5,a5,a6
- 1ee8: 0117863b addw a2,a5,a7
- dp = (int)(s - sn);
- 1eec: d2aa sw a0,100(sp)
- l = (int)(s - (num + 64));
- 1eee: d0b6 sw a3,96(sp)
- n = pr + lead[0] + tail[0] + tz;
- 1ef0: 87b2 mv a5,a2
- if ((fl & STBSP__LEFTJUST) == 0) {
- 1ef2: 001e7513 andi a0,t3,1
- if (fw < (stbsp__int32)n)
- 1ef6: 835a mv t1,s6
- 1ef8: 00cb5363 bge s6,a2,1efe <stbsp_vsprintfcb+0xc30>
- 1efc: 8332 mv t1,a2
- cs = 1 + (3 << 24);
- 1efe: 030002b7 lui t0,0x3000
- fw -= n;
- 1f02: 40f3033b subw t1,t1,a5
- cs = 1 + (3 << 24);
- 1f06: 0285 addi t0,t0,1 # 3000001 <_ZSt4cerr+0x2ff8779>
- s = num + 64;
- 1f08: 0c010a93 addi s5,sp,192
- goto scopy;
- 1f0c: b311 j 1c10 <stbsp_vsprintfcb+0x942>
- h = (f[0] == 'B') ? hexu : hex;
- 1f0e: 04200713 li a4,66
- 1f12: 00005817 auipc a6,0x5
- 1f16: b6680813 addi a6,a6,-1178 # 6a78 <hex.0>
- 1f1a: 6ce78963 beq a5,a4,25ec <stbsp_vsprintfcb+0x131e>
- if (fl & STBSP__LEADING_0X) {
- 1f1e: 008e7793 andi a5,t3,8
- 1f22: 66079e63 bnez a5,259e <stbsp_vsprintfcb+0x12d0>
- lead[0] = 0;
- 1f26: 06010423 sb zero,104(sp)
- l = (8 << 4) | (1 << 8);
- 1f2a: 18000793 li a5,384
- 1f2e: d0be sw a5,96(sp)
- if (fl & STBSP__INTMAX) {
- 1f30: 020e7713 andi a4,t3,32
- goto radixnum;
- 1f34: b979 j 1bd2 <stbsp_vsprintfcb+0x904>
- *s = (char)va_arg(va, int);
- 1f36: 000ba783 lw a5,0(s7)
- l = 1;
- 1f3a: 4705 li a4,1
- 1f3c: d0ba sw a4,96(sp)
- *s = (char)va_arg(va, int);
- 1f3e: 26f10fa3 sb a5,639(sp)
- 1f42: 008b8793 addi a5,s7,8
- lead[0] = 0;
- 1f46: 06010423 sb zero,104(sp)
- tail[0] = 0;
- 1f4a: 06010823 sb zero,112(sp)
- dp = 0;
- 1f4e: d282 sw zero,100(sp)
- *s = (char)va_arg(va, int);
- 1f50: e0be sd a5,64(sp)
- if ((fl & STBSP__LEFTJUST) == 0) {
- 1f52: 001e7513 andi a0,t3,1
- if (fw < (stbsp__int32)n)
- 1f56: 835a mv t1,s6
- 1f58: 69605063 blez s6,25d8 <stbsp_vsprintfcb+0x130a>
- fw -= n;
- 1f5c: 337d addiw t1,t1,-1
- goto scopy;
- 1f5e: 4701 li a4,0
- 1f60: 4f81 li t6,0
- 1f62: 4685 li a3,1
- 1f64: 4a01 li s4,0
- cs = 0;
- 1f66: 4281 li t0,0
- s = num + STBSP__NUMSZ - 1;
- 1f68: 27f10a93 addi s5,sp,639
- tz = 0;
- 1f6c: 4881 li a7,0
- goto scopy;
- 1f6e: b14d j 1c10 <stbsp_vsprintfcb+0x942>
- fv = va_arg(va, double);
- 1f70: 008b8713 addi a4,s7,8
- if (fl & STBSP__METRIC_SUFFIX) {
- 1f74: 100e7793 andi a5,t3,256
- fv = va_arg(va, double);
- 1f78: e0ba sd a4,64(sp)
- 1f7a: 000bb507 fld fa0,0(s7)
- if (fl & STBSP__METRIC_SUFFIX) {
- 1f7e: be0795e3 bnez a5,1b68 <stbsp_vsprintfcb+0x89a>
- if (pr == -1)
- 1f82: 57fd li a5,-1
- if (stbsp__real_to_str(&sn, &l, num, &dp, fv, pr))
- 1f84: 0008871b sext.w a4,a7
- if (pr == -1)
- 1f88: 00f89463 bne a7,a5,1f90 <stbsp_vsprintfcb+0xcc2>
- 1f8c: 4719 li a4,6
- pr = 6; // default is 6
- 1f8e: 4899 li a7,6
- if (stbsp__real_to_str(&sn, &l, num, &dp, fv, pr))
- 1f90: 10d4 addi a3,sp,100
- 1f92: 0110 addi a2,sp,128
- 1f94: 108c addi a1,sp,96
- 1f96: 18a8 addi a0,sp,120
- 1f98: f01e sd t2,32(sp)
- 1f9a: ec72 sd t3,24(sp)
- 1f9c: e846 sd a7,16(sp)
- 1f9e: a4cfe0ef jal 1ea <stbsp__real_to_str>
- 1fa2: 6e62 ld t3,24(sp)
- 1fa4: 68c2 ld a7,16(sp)
- 1fa6: 7382 ld t2,32(sp)
- if (dp == STBSP__SPECIAL) {
- 1fa8: 5796 lw a5,100(sp)
- if ((stbsp__int32)(l + n) > pr)
- 1faa: 5686 lw a3,96(sp)
- if (fl & STBSP__NEGATIVE) {
- 1fac: 080e7293 andi t0,t3,128
- if (stbsp__real_to_str(&sn, &l, num, &dp, fv, pr))
- 1fb0: e00500e3 beqz a0,1db0 <stbsp_vsprintfcb+0xae2>
- fl |= STBSP__NEGATIVE;
- 1fb4: 080e6e13 ori t3,t3,128
- tail[0] = 0;
- 1fb8: 06010823 sb zero,112(sp)
- sign[0] = 1;
- 1fbc: 670d lui a4,0x3
- 1fbe: d0170713 addi a4,a4,-767 # 2d01 <stbsp_vsprintfcb+0x1a33>
- 1fc2: 06e11423 sh a4,104(sp)
- if (dp == STBSP__SPECIAL) {
- 1fc6: 671d lui a4,0x7
- 1fc8: 7ce78963 beq a5,a4,279a <stbsp_vsprintfcb+0x14cc>
- if (dp <= 0) {
- 1fcc: 46f05fe3 blez a5,2c4a <stbsp_vsprintfcb+0x197c>
- cs = (fl & STBSP__TRIPLET_COMMA) ? ((600 - (stbsp__uint32)dp) % 3) : 0;
- 1fd0: 040e7313 andi t1,t3,64
- 1fd4: 00078e9b sext.w t4,a5
- 1fd8: 4581 li a1,0
- 1fda: 00030963 beqz t1,1fec <stbsp_vsprintfcb+0xd1e>
- 1fde: 25800593 li a1,600
- 1fe2: 41d585bb subw a1,a1,t4
- 1fe6: 470d li a4,3
- 1fe8: 02e5f5bb remuw a1,a1,a4
- *s++ = stbsp__comma;
- 1fec: 00005a17 auipc s4,0x5
- 1ff0: 9a4a0a13 addi s4,s4,-1628 # 6990 <stbsp__digitpair>
- s = (char *)sn;
- 1ff4: 7f66 ld t5,120(sp)
- *s++ = stbsp__comma;
- 1ff6: 0cda4283 lbu t0,205(s4)
- s = num + 64;
- 1ffa: 0c010a93 addi s5,sp,192
- if ((stbsp__uint32)dp >= l) {
- 1ffe: 44defb63 bgeu t4,a3,2454 <stbsp_vsprintfcb+0x1186>
- n = 0;
- 2002: 4501 li a0,0
- s = num + 64;
- 2004: 8756 mv a4,s5
- if ((fl & STBSP__TRIPLET_COMMA) && (++cs == 4)) {
- 2006: 4b91 li s7,4
- 2008: a015 j 202c <stbsp_vsprintfcb+0xd5e>
- 200a: 8642 mv a2,a6
- 200c: 883a mv a6,a4
- 200e: 8732 mv a4,a2
- *s++ = sn[n];
- 2010: 02051613 slli a2,a0,0x20
- 2014: 9201 srli a2,a2,0x20
- 2016: 967a add a2,a2,t5
- 2018: 00064f83 lbu t6,0(a2)
- ++n;
- 201c: 0015061b addiw a2,a0,1
- 2020: 0006051b sext.w a0,a2
- *s++ = sn[n];
- 2024: fff70fa3 sb t6,-1(a4) # 6fff <_stdout+0x14f>
- if (n >= (stbsp__uint32)dp)
- 2028: 7bd57563 bgeu a0,t4,27d2 <stbsp_vsprintfcb+0x1504>
- *s++ = stbsp__comma;
- 202c: 00170813 addi a6,a4,1
- if ((fl & STBSP__TRIPLET_COMMA) && (++cs == 4)) {
- 2030: fc030de3 beqz t1,200a <stbsp_vsprintfcb+0xd3c>
- 2034: 2585 addiw a1,a1,1
- 2036: fd759ae3 bne a1,s7,200a <stbsp_vsprintfcb+0xd3c>
- *s++ = stbsp__comma;
- 203a: fe580fa3 sb t0,-1(a6)
- 203e: 0709 addi a4,a4,2
- if ((fl & STBSP__TRIPLET_COMMA) && (++cs == 4)) {
- 2040: 4585 li a1,1
- 2042: b7f9 j 2010 <stbsp_vsprintfcb+0xd42>
- *d = tlen + (int)(bf - buf);
- 2044: 000bb703 ld a4,0(s7)
- 2048: 412407b3 sub a5,s0,s2
- 204c: 01a787bb addw a5,a5,s10
- int *d = va_arg(va, int *);
- 2050: 008b8693 addi a3,s7,8
- 2054: e0b6 sd a3,64(sp)
- *d = tlen + (int)(bf - buf);
- 2056: c31c sw a5,0(a4)
- } break;
- 2058: bae5 j 1a50 <stbsp_vsprintfcb+0x782>
- if (fl & STBSP__LEADING_0X) {
- 205a: 008e7793 andi a5,t3,8
- 205e: 50079b63 bnez a5,2574 <stbsp_vsprintfcb+0x12a6>
- lead[0] = 0;
- 2062: 06010423 sb zero,104(sp)
- l = (3 << 4) | (3 << 8);
- 2066: 33000793 li a5,816
- 206a: d0be sw a5,96(sp)
- if (fl & STBSP__INTMAX) {
- 206c: 020e7713 andi a4,t3,32
- h = hexu;
- 2070: 00005817 auipc a6,0x5
- 2074: 9f080813 addi a6,a6,-1552 # 6a60 <hexu.1>
- goto radixnum;
- 2078: bea9 j 1bd2 <stbsp_vsprintfcb+0x904>
- fl &= ~STBSP__LEADINGZERO; // 'p' only prints the pointer with zeros
- 207a: fefe7e13 andi t3,t3,-17
- 207e: 020e6e13 ori t3,t3,32
- 2082: 02000713 li a4,32
- pr = sizeof(void *) * 2;
- 2086: 48c1 li a7,16
- h = (f[0] == 'X') ? hexu : hex;
- 2088: 00005817 auipc a6,0x5
- 208c: 9f080813 addi a6,a6,-1552 # 6a78 <hex.0>
- 2090: be05 j 1bc0 <stbsp_vsprintfcb+0x8f2>
- s = va_arg(va, char *);
- 2092: 000bba83 ld s5,0(s7)
- 2096: 008b8793 addi a5,s7,8
- 209a: e0be sd a5,64(sp)
- if (s == 0)
- 209c: 360a8ee3 beqz s5,2c18 <stbsp_vsprintfcb+0x194a>
- if (((stbsp__uintptr)sn & 3) == 0)
- 20a0: 003af793 andi a5,s5,3
- l = stbsp__strlen_limited(s, (pr >= 0) ? pr : ~0u);
- 20a4: 5208c663 bltz a7,25d0 <stbsp_vsprintfcb+0x1302>
- 20a8: 0008869b sext.w a3,a7
- if (((stbsp__uintptr)sn & 3) == 0)
- 20ac: 2a0782e3 beqz a5,2b50 <stbsp_vsprintfcb+0x1882>
- if (!limit || *sn == 0)
- 20b0: 5a068b63 beqz a3,2666 <stbsp_vsprintfcb+0x1398>
- if (((stbsp__uintptr)sn & 3) == 0)
- 20b4: 87d6 mv a5,s5
- 20b6: a801 j 20c6 <stbsp_vsprintfcb+0xdf8>
- ++sn;
- 20b8: 0785 addi a5,a5,1
- if (((stbsp__uintptr)sn & 3) == 0)
- 20ba: 0037f713 andi a4,a5,3
- --limit;
- 20be: 36fd addiw a3,a3,-1
- if (((stbsp__uintptr)sn & 3) == 0)
- 20c0: 280709e3 beqz a4,2b52 <stbsp_vsprintfcb+0x1884>
- if (!limit || *sn == 0)
- 20c4: c681 beqz a3,20cc <stbsp_vsprintfcb+0xdfe>
- 20c6: 0007c703 lbu a4,0(a5)
- 20ca: f77d bnez a4,20b8 <stbsp_vsprintfcb+0xdea>
- return (stbsp__uint32)(sn - s);
- 20cc: 415787b3 sub a5,a5,s5
- 20d0: 0007869b sext.w a3,a5
- if (pr < (stbsp__int32)l)
- 20d4: fff6c713 not a4,a3
- 20d8: 977d srai a4,a4,0x3f
- 20da: 8f7d and a4,a4,a5
- 20dc: 0007079b sext.w a5,a4
- n = pr + lead[0] + tail[0] + tz;
- 20e0: 863e mv a2,a5
- pr -= l;
- 20e2: 9f15 subw a4,a4,a3
- l = stbsp__strlen_limited(s, (pr >= 0) ? pr : ~0u);
- 20e4: d0b6 sw a3,96(sp)
- lead[0] = 0;
- 20e6: 06010423 sb zero,104(sp)
- tail[0] = 0;
- 20ea: 06010823 sb zero,112(sp)
- dp = 0;
- 20ee: d282 sw zero,100(sp)
- if ((fl & STBSP__LEFTJUST) == 0) {
- 20f0: 001e7513 andi a0,t3,1
- if (fw < (stbsp__int32)n)
- 20f4: 835a mv t1,s6
- 20f6: 00fb5363 bge s6,a5,20fc <stbsp_vsprintfcb+0xe2e>
- 20fa: 833e mv t1,a5
- fw -= n;
- 20fc: 40c3033b subw t1,t1,a2
- goto scopy;
- 2100: 4f81 li t6,0
- 2102: 4a01 li s4,0
- cs = 0;
- 2104: 4281 li t0,0
- tz = 0;
- 2106: 4881 li a7,0
- goto scopy;
- 2108: b621 j 1c10 <stbsp_vsprintfcb+0x942>
- *bf++ = stbsp__comma;
- 210a: 87b2 mv a5,a2
- cs = 0;
- 210c: 4a01 li s4,0
- 210e: e44ff06f j 1752 <stbsp_vsprintfcb+0x484>
- lead[0] -= (char)i;
- 2112: 06010423 sb zero,104(sp)
- while (i) {
- 2116: d38ff06f j 164e <stbsp_vsprintfcb+0x380>
- lead[0] -= (char)i;
- 211a: 06010423 sb zero,104(sp)
- while (i) {
- 211e: ed8ff06f j 17f6 <stbsp_vsprintfcb+0x528>
- while (i >= 4) {
- 2122: 06fadc63 bge s5,a5,219a <stbsp_vsprintfcb+0xecc>
- tz -= i;
- 2126: 8722 mv a4,s0
- 2128: 0007851b sext.w a0,a5
- while (i >= 4) {
- 212c: 008785bb addw a1,a5,s0
- *(stbsp__uint32 *)bf = 0x30303030;
- 2130: 01672023 sw s6,0(a4)
- bf += 4;
- 2134: 0711 addi a4,a4,4
- while (i >= 4) {
- 2136: 40e5863b subw a2,a1,a4
- 213a: fecacbe3 blt s5,a2,2130 <stbsp_vsprintfcb+0xe62>
- 213e: ffc5061b addiw a2,a0,-4
- 2142: 0026561b srliw a2,a2,0x2
- 2146: 0016071b addiw a4,a2,1
- 214a: 37f1 addiw a5,a5,-4
- 214c: 0026161b slliw a2,a2,0x2
- 2150: 070a slli a4,a4,0x2
- 2152: 9722 add a4,a4,s0
- 2154: 9f91 subw a5,a5,a2
- while (i) {
- 2156: 843a mv s0,a4
- 2158: 80078de3 beqz a5,1972 <stbsp_vsprintfcb+0x6a4>
- 215c: 1782 slli a5,a5,0x20
- 215e: 9381 srli a5,a5,0x20
- 2160: 00f70433 add s0,a4,a5
- *bf++ = '0';
- 2164: 0705 addi a4,a4,1
- 2166: ff470fa3 sb s4,-1(a4)
- while (i) {
- 216a: fe871de3 bne a4,s0,2164 <stbsp_vsprintfcb+0xe96>
- 216e: 805ff06f j 1972 <stbsp_vsprintfcb+0x6a4>
- stbsp__cb_buf_clamp(i, pr);
- 2172: 85ce mv a1,s3
- if ((fl & STBSP__TRIPLET_COMMA) == 0) {
- 2174: 4981 li s3,0
- 2176: dc049263 bnez s1,173a <stbsp_vsprintfcb+0x46c>
- 217a: b8d5 j 1a6e <stbsp_vsprintfcb+0x7a0>
- STBSP__UNALIGNED(while (i >= 4) {
- 217c: 4401 li s0,0
- 217e: 85be mv a1,a5
- 2180: f0ea4b63 blt s4,a4,1896 <stbsp_vsprintfcb+0x5c8>
- 2184: f42ff06f j 18c6 <stbsp_vsprintfcb+0x5f8>
- if ((((stbsp__uintptr)bf) & 3) == 0)
- 2188: 00347713 andi a4,s0,3
- stbsp__cb_buf_clamp(i, tz);
- 218c: 87c6 mv a5,a7
- tz -= i;
- 218e: 4881 li a7,0
- if ((((stbsp__uintptr)bf) & 3) == 0)
- 2190: fc071c63 bnez a4,1968 <stbsp_vsprintfcb+0x69a>
- while (i >= 4) {
- 2194: 470d li a4,3
- 2196: f8f748e3 blt a4,a5,2126 <stbsp_vsprintfcb+0xe58>
- 219a: 8722 mv a4,s0
- 219c: b7c1 j 215c <stbsp_vsprintfcb+0xe8e>
- tail[0] -= (char)i;
- 219e: 06010823 sb zero,112(sp)
- while (i) {
- 21a2: b0b9 j 19f0 <stbsp_vsprintfcb+0x722>
- while (i >= 4) {
- 21a4: 478d li a5,3
- 21a6: 8622 mv a2,s0
- 21a8: d8b7d963 bge a5,a1,173a <stbsp_vsprintfcb+0x46c>
- 21ac: ffc5839b addiw t2,a1,-4
- 21b0: 0023d79b srliw a5,t2,0x2
- 21b4: 0017859b addiw a1,a5,1
- 21b8: 058a slli a1,a1,0x2
- 21ba: 942e add s0,s0,a1
- *(stbsp__uint32 *)bf = 0x30303030;
- 21bc: 01762023 sw s7,0(a2)
- bf += 4;
- 21c0: 0611 addi a2,a2,4
- while (i >= 4) {
- 21c2: fe861de3 bne a2,s0,21bc <stbsp_vsprintfcb+0xeee>
- 21c6: 0027979b slliw a5,a5,0x2
- 21ca: 40f385bb subw a1,t2,a5
- 21ce: d68ff06f j 1736 <stbsp_vsprintfcb+0x468>
- while (i) {
- 21d2: 85be mv a1,a5
- 21d4: ee071963 bnez a4,18c6 <stbsp_vsprintfcb+0x5f8>
- 21d8: f16ff06f j 18ee <stbsp_vsprintfcb+0x620>
- 21dc: 2c013a03 ld s4,704(sp)
- 21e0: 2b813a83 ld s5,696(sp)
- 21e4: 2b013b03 ld s6,688(sp)
- 21e8: 8ca2 mv s9,s0
- 21ea: a04ff06f j 13ee <stbsp_vsprintfcb+0x120>
- stbsp__chk_cb_buf(1);
- 21ee: 2601 sext.w a2,a2
- 21f0: 1fe00793 li a5,510
- 21f4: f8c7c563 blt a5,a2,197e <stbsp_vsprintfcb+0x6b0>
- 21f8: f3eff06f j 1936 <stbsp_vsprintfcb+0x668>
- fl &= ~STBSP__TRIPLET_COMMA; // if no leading zeros, then no commas
- 21fc: fbfe7e13 andi t3,t3,-65
- if (fw + pr) {
- 2200: 006707bb addw a5,a4,t1
- fl &= ~STBSP__TRIPLET_COMMA; // if no leading zeros, then no commas
- 2204: 2e01 sext.w t3,t3
- if (fw + pr) {
- 2206: a0078be3 beqz a5,1c1c <stbsp_vsprintfcb+0x94e>
- while (fw > 0) {
- 220a: be605663 blez t1,15f6 <stbsp_vsprintfcb+0x328>
- *(stbsp__uint32 *)bf = 0x20202020;
- 220e: 20202837 lui a6,0x20202
- stbsp__cb_buf_clamp(i, fw);
- 2212: 854a mv a0,s2
- 2214: 894e mv s2,s3
- 2216: 69a2 ld s3,8(sp)
- *(stbsp__uint32 *)bf = 0x20202020;
- 2218: 02080813 addi a6,a6,32 # 20202020 <_ZSt4cerr+0x201fa798>
- stbsp__cb_buf_clamp(i, fw);
- 221c: ec52 sd s4,24(sp)
- 221e: f426 sd s1,40(sp)
- 2220: 87a2 mv a5,s0
- 2222: 84ea mv s1,s10
- stbsp__chk_cb_buf(1);
- 2224: 1fe00f13 li t5,510
- stbsp__cb_buf_clamp(i, fw);
- 2228: 8d6e mv s10,s11
- *bf++ = ' ';
- 222a: 02000b13 li s6,32
- stbsp__cb_buf_clamp(i, fw);
- 222e: 8de6 mv s11,s9
- while (i >= 4) {
- 2230: 4b8d li s7,3
- stbsp__cb_buf_clamp(i, fw);
- 2232: 20000e93 li t4,512
- 2236: e846 sd a7,16(sp)
- 2238: f07e sd t6,32(sp)
- 223a: f836 sd a3,48(sp)
- 223c: e4f2 sd t3,72(sp)
- 223e: e8ba sd a4,80(sp)
- 2240: ec96 sd t0,88(sp)
- 2242: 841a mv s0,t1
- 2244: 8a42 mv s4,a6
- 2246: 8c9e mv s9,t2
- 2248: 0c090063 beqz s2,2308 <stbsp_vsprintfcb+0x103a>
- 224c: 40a78633 sub a2,a5,a0
- 2250: 40ce873b subw a4,t4,a2
- 2254: 86ba mv a3,a4
- 2256: 00e45363 bge s0,a4,225c <stbsp_vsprintfcb+0xf8e>
- 225a: 86a2 mv a3,s0
- 225c: 0006871b sext.w a4,a3
- fw -= i;
- 2260: 9c15 subw s0,s0,a3
- while (i) {
- 2262: e719 bnez a4,2270 <stbsp_vsprintfcb+0xfa2>
- 2264: a095 j 22c8 <stbsp_vsprintfcb+0xffa>
- *bf++ = ' ';
- 2266: 01678023 sb s6,0(a5)
- --i;
- 226a: 377d addiw a4,a4,-1
- *bf++ = ' ';
- 226c: 0785 addi a5,a5,1
- while (i) {
- 226e: cb29 beqz a4,22c0 <stbsp_vsprintfcb+0xff2>
- if ((((stbsp__uintptr)bf) & 3) == 0)
- 2270: 0037f693 andi a3,a5,3
- 2274: faed bnez a3,2266 <stbsp_vsprintfcb+0xf98>
- while (i >= 4) {
- 2276: 86be mv a3,a5
- 2278: 00070f9b sext.w t6,a4
- 227c: 00f705bb addw a1,a4,a5
- 2280: 02ebd763 bge s7,a4,22ae <stbsp_vsprintfcb+0xfe0>
- *(stbsp__uint32 *)bf = 0x20202020;
- 2284: 0146a023 sw s4,0(a3)
- bf += 4;
- 2288: 0691 addi a3,a3,4
- while (i >= 4) {
- 228a: 40d5863b subw a2,a1,a3
- 228e: fecbcbe3 blt s7,a2,2284 <stbsp_vsprintfcb+0xfb6>
- 2292: ffcf861b addiw a2,t6,-4 # fffffffff7fffffc <_ZSt4cerr+0xfffffffff7ff8774>
- 2296: 0026561b srliw a2,a2,0x2
- 229a: 0016069b addiw a3,a2,1
- 229e: 3771 addiw a4,a4,-4
- 22a0: 0026161b slliw a2,a2,0x2
- 22a4: 068a slli a3,a3,0x2
- 22a6: 96be add a3,a3,a5
- 22a8: 9f11 subw a4,a4,a2
- while (i) {
- 22aa: 87b6 mv a5,a3
- 22ac: cb11 beqz a4,22c0 <stbsp_vsprintfcb+0xff2>
- 22ae: 1702 slli a4,a4,0x20
- 22b0: 9301 srli a4,a4,0x20
- 22b2: 00e687b3 add a5,a3,a4
- *bf++ = ' ';
- 22b6: 0685 addi a3,a3,1
- 22b8: ff668fa3 sb s6,-1(a3)
- while (i) {
- 22bc: fef69de3 bne a3,a5,22b6 <stbsp_vsprintfcb+0xfe8>
- stbsp__chk_cb_buf(1);
- 22c0: 40a78633 sub a2,a5,a0
- 22c4: 00090e63 beqz s2,22e0 <stbsp_vsprintfcb+0x1012>
- 22c8: 2601 sext.w a2,a2
- 22ca: 00cf5b63 bge t5,a2,22e0 <stbsp_vsprintfcb+0x1012>
- 22ce: 85ce mv a1,s3
- 22d0: 9cb1 addw s1,s1,a2
- 22d2: 9902 jalr s2
- 22d4: c541 beqz a0,235c <stbsp_vsprintfcb+0x108e>
- 22d6: 87aa mv a5,a0
- 22d8: 20000e93 li t4,512
- 22dc: 1fe00f13 li t5,510
- while (fw > 0) {
- 22e0: f68044e3 bgtz s0,2248 <stbsp_vsprintfcb+0xf7a>
- 22e4: 8322 mv t1,s0
- 22e6: 89ca mv s3,s2
- 22e8: 83e6 mv t2,s9
- 22ea: 68c2 ld a7,16(sp)
- 22ec: 8cee mv s9,s11
- 22ee: 6a62 ld s4,24(sp)
- 22f0: 8dea mv s11,s10
- 22f2: 7f82 ld t6,32(sp)
- 22f4: 8d26 mv s10,s1
- 22f6: 76c2 ld a3,48(sp)
- 22f8: 6e26 ld t3,72(sp)
- 22fa: 6746 ld a4,80(sp)
- 22fc: 62e6 ld t0,88(sp)
- 22fe: 74a2 ld s1,40(sp)
- 2300: 892a mv s2,a0
- 2302: 843e mv s0,a5
- 2304: af2ff06f j 15f6 <stbsp_vsprintfcb+0x328>
- stbsp__cb_buf_clamp(i, fw);
- 2308: 8722 mv a4,s0
- 230a: 4401 li s0,0
- if ((((stbsp__uintptr)bf) & 3) == 0)
- 230c: b795 j 2270 <stbsp_vsprintfcb+0xfa2>
- n64 = va_arg(va, stbsp__uint32);
- 230e: 000be683 lwu a3,0(s7)
- 2312: b0f9 j 1be0 <stbsp_vsprintfcb+0x912>
- 2314: 2c013a03 ld s4,704(sp)
- 2318: 2b813a83 ld s5,696(sp)
- 231c: 2b013b03 ld s6,688(sp)
- 2320: 8cca mv s9,s2
- 2322: 8ccff06f j 13ee <stbsp_vsprintfcb+0x120>
- 2326: 8cd6 mv s9,s5
- 2328: 2c013a03 ld s4,704(sp)
- 232c: 2b813a83 ld s5,696(sp)
- 2330: 2b013b03 ld s6,688(sp)
- 2334: 8baff06f j 13ee <stbsp_vsprintfcb+0x120>
- 2338: 2c013a03 ld s4,704(sp)
- 233c: 2b813a83 ld s5,696(sp)
- 2340: 2b013b03 ld s6,688(sp)
- 2344: 8cea mv s9,s10
- 2346: 8a8ff06f j 13ee <stbsp_vsprintfcb+0x120>
- while (i) {
- 234a: 85a2 mv a1,s0
- 234c: c12ff06f j 175e <stbsp_vsprintfcb+0x490>
- while (i >= 4) {
- 2350: 478d li a5,3
- 2352: 8622 mv a2,s0
- 2354: e4b7cce3 blt a5,a1,21ac <stbsp_vsprintfcb+0xede>
- 2358: be2ff06f j 173a <stbsp_vsprintfcb+0x46c>
- 235c: 2c013a03 ld s4,704(sp)
- 2360: 2b813a83 ld s5,696(sp)
- 2364: 2b013b03 ld s6,688(sp)
- 2368: 8ca6 mv s9,s1
- 236a: 884ff06f j 13ee <stbsp_vsprintfcb+0x120>
- lead[2] = h[16];
- 236e: 01084683 lbu a3,16(a6)
- lead[0] = 2;
- 2372: 678d lui a5,0x3
- 2374: 0789 addi a5,a5,2 # 3002 <stbsp_vsprintf+0xa>
- 2376: 06f11423 sh a5,104(sp)
- lead[2] = h[16];
- 237a: 06d10523 sb a3,106(sp)
- 237e: b891 j 1bd2 <stbsp_vsprintfcb+0x904>
- 2380: 8cea mv s9,s10
- 2382: 86cff06f j 13ee <stbsp_vsprintfcb+0x120>
- 2386: 4f81 li t6,0
- 2388: 4a01 li s4,0
- 238a: 5586 lw a1,96(sp)
- *--s = stbsp__comma;
- 238c: 00004f17 auipc t5,0x4
- 2390: 6d1f4f03 lbu t5,1745(t5) # 6a5d <stbsp__comma>
- 2394: 0510 addi a2,sp,640
- 2396: 0085d71b srliw a4,a1,0x8
- *--s = h[n64 & ((1 << (l >> 8)) - 1)];
- 239a: 4305 li t1,1
- if (fl & STBSP__TRIPLET_COMMA) {
- 239c: 040e7e93 andi t4,t3,64
- *--s = h[n64 & ((1 << (l >> 8)) - 1)];
- 23a0: 0007029b sext.w t0,a4
- 23a4: 005317bb sllw a5,t1,t0
- 23a8: 37fd addiw a5,a5,-1
- 23aa: 8ff5 and a5,a5,a3
- 23ac: 97c2 add a5,a5,a6
- 23ae: 0007c783 lbu a5,0(a5)
- n64 >>= (l >> 8);
- 23b2: 0056d6b3 srl a3,a3,t0
- *--s = h[n64 & ((1 << (l >> 8)) - 1)];
- 23b6: fff60a93 addi s5,a2,-1
- 23ba: fef60fa3 sb a5,-1(a2)
- if (!((n64) || ((stbsp__int32)((num + STBSP__NUMSZ) - s) < pr)))
- 23be: e691 bnez a3,23ca <stbsp_vsprintfcb+0x10fc>
- 23c0: 051c addi a5,sp,640
- 23c2: 415787bb subw a5,a5,s5
- 23c6: 0317dd63 bge a5,a7,2400 <stbsp_vsprintfcb+0x1132>
- if (fl & STBSP__TRIPLET_COMMA) {
- 23ca: 020e8963 beqz t4,23fc <stbsp_vsprintfcb+0x112e>
- ++l;
- 23ce: 0015879b addiw a5,a1,1
- if ((l & 15) == ((l >> 4) & 15)) {
- 23d2: 0047d29b srliw t0,a5,0x4
- 23d6: 00f2c2b3 xor t0,t0,a5
- 23da: 00f2f293 andi t0,t0,15
- ++l;
- 23de: 0007859b sext.w a1,a5
- if ((l & 15) == ((l >> 4) & 15)) {
- 23e2: 0087d71b srliw a4,a5,0x8
- 23e6: 00029b63 bnez t0,23fc <stbsp_vsprintfcb+0x112e>
- l &= ~15;
- 23ea: 9bc1 andi a5,a5,-16
- 23ec: 0007859b sext.w a1,a5
- *--s = stbsp__comma;
- 23f0: ffe60a93 addi s5,a2,-2
- 23f4: ffe60f23 sb t5,-2(a2)
- 23f8: 0087d71b srliw a4,a5,0x8
- 23fc: 8656 mv a2,s5
- 23fe: b74d j 23a0 <stbsp_vsprintfcb+0x10d2>
- cs = (stbsp__uint32)((num + STBSP__NUMSZ) - s) + ((((l >> 4) & 15)) << 24);
- 2400: 0045d29b srliw t0,a1,0x4
- 2404: 0f0006b7 lui a3,0xf000
- if (pr < (stbsp__int32)l)
- 2408: 0007871b sext.w a4,a5
- cs = (stbsp__uint32)((num + STBSP__NUMSZ) - s) + ((((l >> 4) & 15)) << 24);
- 240c: 0182929b slliw t0,t0,0x18
- 2410: 00d2f2b3 and t0,t0,a3
- n = pr + lead[0] + tail[0] + tz;
- 2414: 00ef863b addw a2,t6,a4
- l = (stbsp__uint32)((num + STBSP__NUMSZ) - s);
- 2418: d0be sw a5,96(sp)
- n = pr + lead[0] + tail[0] + tz;
- 241a: 8fb2 mv t6,a2
- cs = (stbsp__uint32)((num + STBSP__NUMSZ) - s) + ((((l >> 4) & 15)) << 24);
- 241c: 86be mv a3,a5
- 241e: 00f282bb addw t0,t0,a5
- if (fw < (stbsp__int32)n)
- 2422: 835a mv t1,s6
- 2424: 00cb5363 bge s6,a2,242a <stbsp_vsprintfcb+0x115c>
- 2428: 8332 mv t1,a2
- fw -= n;
- 242a: 41f3033b subw t1,t1,t6
- pr -= l;
- 242e: 9f1d subw a4,a4,a5
- goto scopy;
- 2430: 4f81 li t6,0
- tz = 0;
- 2432: 4881 li a7,0
- goto scopy;
- 2434: fdcff06f j 1c10 <stbsp_vsprintfcb+0x942>
- 2438: 8cda mv s9,s6
- 243a: 2c013a03 ld s4,704(sp)
- 243e: 2b813a83 ld s5,696(sp)
- 2442: 2b013b03 ld s6,688(sp)
- 2446: fa9fe06f j 13ee <stbsp_vsprintfcb+0x120>
- fl |= ((sizeof(void *) == 8) ? STBSP__INTMAX : 0);
- 244a: 020e6e13 ori t3,t3,32
- ++f;
- 244e: 0485 addi s1,s1,1
- 2450: 864ff06f j 14b4 <stbsp_vsprintfcb+0x1e6>
- n = 0;
- 2454: 4601 li a2,0
- s = num + 64;
- 2456: 8756 mv a4,s5
- if ((fl & STBSP__TRIPLET_COMMA) && (++cs == 4)) {
- 2458: 4511 li a0,4
- *s++ = stbsp__comma;
- 245a: 00170793 addi a5,a4,1
- if ((fl & STBSP__TRIPLET_COMMA) && (++cs == 4)) {
- 245e: 00030563 beqz t1,2468 <stbsp_vsprintfcb+0x119a>
- 2462: 2585 addiw a1,a1,1
- 2464: 10a58363 beq a1,a0,256a <stbsp_vsprintfcb+0x129c>
- 2468: 873e mv a4,a5
- *s++ = sn[n];
- 246a: 02061793 slli a5,a2,0x20
- 246e: 9381 srli a5,a5,0x20
- 2470: 97fa add a5,a5,t5
- 2472: 0007c803 lbu a6,0(a5)
- ++n;
- 2476: 2605 addiw a2,a2,1
- *s++ = sn[n];
- 2478: ff070fa3 sb a6,-1(a4)
- if (n >= l)
- 247c: fcd66fe3 bltu a2,a3,245a <stbsp_vsprintfcb+0x118c>
- if (n < (stbsp__uint32)dp) {
- 2480: 0bd663e3 bltu a2,t4,2d26 <stbsp_vsprintfcb+0x1a58>
- cs = (int)(s - (num + 64)) + (3 << 24); // cs is how many tens
- 2484: 415707b3 sub a5,a4,s5
- 2488: 030002b7 lui t0,0x3000
- 248c: 00f282bb addw t0,t0,a5
- if (pr) {
- 2490: 00088a63 beqz a7,24a4 <stbsp_vsprintfcb+0x11d6>
- *s++ = stbsp__period;
- 2494: 0cca4683 lbu a3,204(s4)
- 2498: 00170793 addi a5,a4,1
- l = (stbsp__uint32)(s - (num + 64));
- 249c: 415787b3 sub a5,a5,s5
- *s++ = stbsp__period;
- 24a0: 00d70023 sb a3,0(a4)
- if (fl & STBSP__METRIC_SUFFIX) {
- 24a4: 100e7713 andi a4,t3,256
- 24a8: 86f2 mv a3,t3
- 24aa: 2c070163 beqz a4,276c <stbsp_vsprintfcb+0x149e>
- if (fl & STBSP__METRIC_NOSPACE)
- 24ae: 40ae5f9b sraiw t6,t3,0xa
- 24b2: 001fcf93 xori t6,t6,1
- 24b6: 001fff93 andi t6,t6,1
- tail[1] = ' ';
- 24ba: 02000713 li a4,32
- 24be: 06e108a3 sb a4,113(sp)
- tail[0] = idx;
- 24c2: 07f10823 sb t6,112(sp)
- if (fl >> 24) { // SI kilo is 'k', JEDEC and SI kibits are 'K'.
- 24c6: 018e561b srliw a2,t3,0x18
- 24ca: 018e571b srliw a4,t3,0x18
- n = pr + lead[0] + tail[0] + tz;
- 24ce: 000f859b sext.w a1,t6
- if (fl >> 24) { // SI kilo is 'k', JEDEC and SI kibits are 'K'.
- 24d2: c225 beqz a2,2532 <stbsp_vsprintfcb+0x1264>
- if (fl & STBSP__METRIC_1024)
- 24d4: 001f859b addiw a1,t6,1
- 24d8: 0ff5f613 zext.b a2,a1
- tail[idx + 1] = "_KMGT"[fl >> 24];
- 24dc: 1702 slli a4,a4,0x20
- if (fl & STBSP__METRIC_1024)
- 24de: 03469513 slli a0,a3,0x34
- tail[idx + 1] = "_KMGT"[fl >> 24];
- 24e2: 85b2 mv a1,a2
- 24e4: 9301 srli a4,a4,0x20
- if (fl & STBSP__METRIC_1024)
- 24e6: 06055ee3 bgez a0,2d62 <stbsp_vsprintfcb+0x1a94>
- tail[idx + 1] = "_KMGT"[fl >> 24];
- 24ea: 00003517 auipc a0,0x3
- 24ee: bee50513 addi a0,a0,-1042 # 50d8 <_GLOBAL__sub_I__ZSt3cin+0xe8>
- 24f2: 972a add a4,a4,a0
- 24f4: 00074503 lbu a0,0(a4)
- if (fl & STBSP__METRIC_1024 && !(fl & STBSP__METRIC_JEDEC)) {
- 24f8: 6709 lui a4,0x2
- 24fa: 80070713 addi a4,a4,-2048 # 1800 <stbsp_vsprintfcb+0x532>
- 24fe: 8f75 and a4,a4,a3
- tail[idx + 1] = "_KMGT"[fl >> 24];
- 2500: 06010813 addi a6,sp,96
- 2504: 22060693 addi a3,a2,544
- 2508: 96c2 add a3,a3,a6
- 250a: dea68823 sb a0,-528(a3) # efffdf0 <_ZSt4cerr+0xeff8568>
- if (fl & STBSP__METRIC_1024 && !(fl & STBSP__METRIC_JEDEC)) {
- 250e: 8007071b addiw a4,a4,-2048
- 2512: 060715e3 bnez a4,2d7c <stbsp_vsprintfcb+0x1aae>
- tail[idx + 1] = 'i';
- 2516: 2f89 addiw t6,t6,2
- 2518: 0ffff593 zext.b a1,t6
- 251c: 1094 addi a3,sp,96
- 251e: 22058713 addi a4,a1,544
- 2522: 9736 add a4,a4,a3
- 2524: 06900693 li a3,105
- 2528: 8fae mv t6,a1
- 252a: ded70823 sb a3,-528(a4)
- tail[0] = idx;
- 252e: 07f10823 sb t6,112(sp)
- l = (stbsp__uint32)(s - (num + 64));
- 2532: 0007869b sext.w a3,a5
- n = pr + lead[0] + tail[0] + tz;
- 2536: 06814a03 lbu s4,104(sp)
- if (pr < (stbsp__int32)l)
- 253a: fff6c713 not a4,a3
- 253e: 977d srai a4,a4,0x3f
- 2540: 8ff9 and a5,a5,a4
- n = pr + lead[0] + tail[0] + tz;
- 2542: 00fa073b addw a4,s4,a5
- 2546: 9f2d addw a4,a4,a1
- 2548: 0117063b addw a2,a4,a7
- l = (stbsp__uint32)(s - (num + 64));
- 254c: d0b6 sw a3,96(sp)
- n = pr + lead[0] + tail[0] + tz;
- 254e: 8732 mv a4,a2
- if (pr < (stbsp__int32)l)
- 2550: 2781 sext.w a5,a5
- if ((fl & STBSP__LEFTJUST) == 0) {
- 2552: 001e7513 andi a0,t3,1
- if (fw < (stbsp__int32)n)
- 2556: 835a mv t1,s6
- 2558: 00cb5363 bge s6,a2,255e <stbsp_vsprintfcb+0x1290>
- 255c: 8332 mv t1,a2
- fw -= n;
- 255e: 40e3033b subw t1,t1,a4
- pr -= l;
- 2562: 40d7873b subw a4,a5,a3
- goto scopy;
- 2566: eaaff06f j 1c10 <stbsp_vsprintfcb+0x942>
- *s++ = stbsp__comma;
- 256a: fe578fa3 sb t0,-1(a5)
- 256e: 0709 addi a4,a4,2
- if ((fl & STBSP__TRIPLET_COMMA) && (++cs == 4)) {
- 2570: 4585 li a1,1
- 2572: bde5 j 246a <stbsp_vsprintfcb+0x119c>
- lead[0] = 1;
- 2574: 678d lui a5,0x3
- 2576: 0785 addi a5,a5,1 # 3001 <stbsp_vsprintf+0x9>
- 2578: 06f11423 sh a5,104(sp)
- 257c: b4ed j 2066 <stbsp_vsprintfcb+0xd98>
- if ((f[0] != 'u') && (i64 < 0)) {
- 257e: 07500693 li a3,117
- stbsp__int64 i64 = va_arg(va, stbsp__int64);
- 2582: 000bbf03 ld t5,0(s7)
- if ((f[0] != 'u') && (i64 < 0)) {
- 2586: dcd78263 beq a5,a3,1b4a <stbsp_vsprintfcb+0x87c>
- 258a: dc0f5063 bgez t5,1b4a <stbsp_vsprintfcb+0x87c>
- fl |= STBSP__NEGATIVE;
- 258e: 08076713 ori a4,a4,128
- n64 = (stbsp__uint64)-i64;
- 2592: 41e00f33 neg t5,t5
- fl |= STBSP__NEGATIVE;
- 2596: 00070e1b sext.w t3,a4
- 259a: db0ff06f j 1b4a <stbsp_vsprintfcb+0x87c>
- lead[2] = h[0xb];
- 259e: 00b84703 lbu a4,11(a6)
- lead[0] = 2;
- 25a2: 678d lui a5,0x3
- 25a4: 0789 addi a5,a5,2 # 3002 <stbsp_vsprintf+0xa>
- 25a6: 06f11423 sh a5,104(sp)
- lead[2] = h[0xb];
- 25aa: 06e10523 sb a4,106(sp)
- 25ae: bab5 j 1f2a <stbsp_vsprintfcb+0xc5c>
- sign[0] = 1;
- 25b0: 678d lui a5,0x3
- 25b2: d0178793 addi a5,a5,-767 # 2d01 <stbsp_vsprintfcb+0x1a33>
- fl |= STBSP__NEGATIVE;
- 25b6: 080e6e13 ori t3,t3,128
- sign[0] = 1;
- 25ba: 06f11423 sh a5,104(sp)
- 25be: 468d li a3,3
- 25c0: 4a0d li s4,3
- 25c2: 4809 li a6,2
- 25c4: b899 j 1e1a <stbsp_vsprintfcb+0xb4c>
- sign[0] = 1;
- 25c6: 6709 lui a4,0x2
- 25c8: 0705 addi a4,a4,1 # 2001 <stbsp_vsprintfcb+0xd33>
- 25ca: 06e11423 sh a4,104(sp)
- 25ce: bae5 j 1fc6 <stbsp_vsprintfcb+0xcf8>
- if (((stbsp__uintptr)sn & 3) == 0)
- 25d0: 0e0780e3 beqz a5,2eb0 <stbsp_vsprintfcb+0x1be2>
- l = stbsp__strlen_limited(s, (pr >= 0) ? pr : ~0u);
- 25d4: 56fd li a3,-1
- 25d6: bcf9 j 20b4 <stbsp_vsprintfcb+0xde6>
- if (fw < (stbsp__int32)n)
- 25d8: 4305 li t1,1
- 25da: b249 j 1f5c <stbsp_vsprintfcb+0xc8e>
- pr = 6; // default is 6
- 25dc: 4899 li a7,6
- 25de: b801 j 1dee <stbsp_vsprintfcb+0xb20>
- h = (f[0] == 'A') ? hexu : hex;
- 25e0: 00004597 auipc a1,0x4
- 25e4: 48058593 addi a1,a1,1152 # 6a60 <hexu.1>
- 25e8: ff6ff06f j 1dde <stbsp_vsprintfcb+0xb10>
- h = (f[0] == 'B') ? hexu : hex;
- 25ec: 00004817 auipc a6,0x4
- 25f0: 47480813 addi a6,a6,1140 # 6a60 <hexu.1>
- 25f4: b22d j 1f1e <stbsp_vsprintfcb+0xc50>
- 25f6: 80000737 lui a4,0x80000
- 25fa: 0719 addi a4,a4,6 # ffffffff80000006 <_ZSt4cerr+0xffffffff7fff877e>
- pr = 6; // default is 6
- 25fc: 4899 li a7,6
- 25fe: e4eff06f j 1c4c <stbsp_vsprintfcb+0x97e>
- h = (f[0] == 'E') ? hexu : hex;
- 2602: 00004317 auipc t1,0x4
- 2606: 45e30313 addi t1,t1,1118 # 6a60 <hexu.1>
- 260a: e28ff06f j 1c32 <stbsp_vsprintfcb+0x964>
- 260e: 80000737 lui a4,0x80000
- 2612: 4a99 li s5,6
- 2614: 0715 addi a4,a4,5 # ffffffff80000005 <_ZSt4cerr+0xffffffff7fff877d>
- pr = 6;
- 2616: 4a19 li s4,6
- 2618: ee8ff06f j 1d00 <stbsp_vsprintfcb+0xa32>
- h = (f[0] == 'G') ? hexu : hex;
- 261c: 00004317 auipc t1,0x4
- 2620: 44430313 addi t1,t1,1092 # 6a60 <hexu.1>
- 2624: eb6ff06f j 1cda <stbsp_vsprintfcb+0xa0c>
- 2628: 7be6 ld s7,120(sp)
- if ((dp <= -4) || (dp > (stbsp__int32)n)) {
- 262a: 86c2 mv a3,a6
- while ((l > 1) && (pr) && (sn[l - 1] == '0')) {
- 262c: 8542 mv a0,a6
- if ((dp <= -4) || (dp > (stbsp__int32)n)) {
- 262e: 88d2 mv a7,s4
- while ((l > 1) && (pr) && (sn[l - 1] == '0')) {
- 2630: 8ade mv s5,s7
- if (pr > (stbsp__int32)l)
- 2632: 0005071b sext.w a4,a0
- 2636: 01175f63 bge a4,a7,2654 <stbsp_vsprintfcb+0x1386>
- pr = l - 1;
- 263a: fff5089b addiw a7,a0,-1
- tail[0] = 0;
- 263e: 06010823 sb zero,112(sp)
- if (fl & STBSP__NEGATIVE) {
- 2642: 70028c63 beqz t0,2d5a <stbsp_vsprintfcb+0x1a8c>
- sign[0] = 1;
- 2646: 670d lui a4,0x3
- 2648: d0170713 addi a4,a4,-767 # 2d01 <stbsp_vsprintfcb+0x1a33>
- 264c: 06e11423 sh a4,104(sp)
- 2650: e3aff06f j 1c8a <stbsp_vsprintfcb+0x9bc>
- else if (pr)
- 2654: fe0885e3 beqz a7,263e <stbsp_vsprintfcb+0x1370>
- --pr; // when using %e, there is one digit before the decimal
- 2658: 38fd addiw a7,a7,-1
- 265a: b7d5 j 263e <stbsp_vsprintfcb+0x1370>
- switch (f[0]) {
- 265c: 0034c783 lbu a5,3(s1)
- f += 3;
- 2660: 048d addi s1,s1,3
- 2662: e53fe06f j 14b4 <stbsp_vsprintfcb+0x1e6>
- if (!limit || *sn == 0)
- 2666: 4601 li a2,0
- 2668: 4701 li a4,0
- 266a: 4781 li a5,0
- return (stbsp__uint32)(sn - s);
- 266c: bca5 j 20e4 <stbsp_vsprintfcb+0xe16>
- pr = 1;
- 266e: 4885 li a7,1
- 2670: cf4ff06f j 1b64 <stbsp_vsprintfcb+0x896>
- *s++ = sn[0];
- 2674: 000ac703 lbu a4,0(s5)
- 2678: 0ce10023 sb a4,192(sp)
- if (pr)
- 267c: 54088563 beqz a7,2bc6 <stbsp_vsprintfcb+0x18f8>
- *s++ = stbsp__period;
- 2680: 00004617 auipc a2,0x4
- 2684: 3dc64603 lbu a2,988(a2) # 6a5c <stbsp__period>
- if ((l - 1) > (stbsp__uint32)pr)
- 2688: fff6871b addiw a4,a3,-1
- *s++ = stbsp__period;
- 268c: 0cc100a3 sb a2,193(sp)
- if ((l - 1) > (stbsp__uint32)pr)
- 2690: 0008851b sext.w a0,a7
- 2694: 0007061b sext.w a2,a4
- 2698: 52c57163 bgeu a0,a2,2bba <stbsp_vsprintfcb+0x18ec>
- l = pr + 1;
- 269c: 0018869b addiw a3,a7,1
- for (n = 1; n < l; n++)
- 26a0: 8746 mv a4,a7
- 26a2: 02071613 slli a2,a4,0x20
- 26a6: 9201 srli a2,a2,0x20
- 26a8: 0c210713 addi a4,sp,194
- 26ac: 0a85 addi s5,s5,1
- 26ae: 963a add a2,a2,a4
- *s++ = sn[n];
- 26b0: 000ac583 lbu a1,0(s5)
- 26b4: 0705 addi a4,a4,1
- for (n = 1; n < l; n++)
- 26b6: 0a85 addi s5,s5,1
- *s++ = sn[n];
- 26b8: feb70fa3 sb a1,-1(a4)
- for (n = 1; n < l; n++)
- 26bc: fec71ae3 bne a4,a2,26b0 <stbsp_vsprintfcb+0x13e2>
- tail[1] = h[0xe];
- 26c0: 00e34803 lbu a6,14(t1)
- dp -= 1;
- 26c4: fff7871b addiw a4,a5,-1
- tail[2] = '+';
- 26c8: 02b00593 li a1,43
- tail[1] = h[0xe];
- 26cc: 070108a3 sb a6,113(sp)
- if (dp < 0) {
- 26d0: 00075663 bgez a4,26dc <stbsp_vsprintfcb+0x140e>
- dp = -dp;
- 26d4: 4705 li a4,1
- 26d6: 9f1d subw a4,a4,a5
- tail[2] = '-';
- 26d8: 02d00593 li a1,45
- 26dc: 06b10923 sb a1,114(sp)
- n = (dp >= 100) ? 5 : 4;
- 26e0: 06300793 li a5,99
- 26e4: 4ee7d663 bge a5,a4,2bd0 <stbsp_vsprintfcb+0x1902>
- 26e8: 4595 li a1,5
- 26ea: 4f95 li t6,5
- 26ec: 4e95 li t4,5
- tail[n] = '0' + dp % 10;
- 26ee: 47a9 li a5,10
- dp /= 10;
- 26f0: 02f7433b divw t1,a4,a5
- --n;
- 26f4: fffe8f1b addiw t5,t4,-1
- tail[n] = '0' + dp % 10;
- 26f8: 020f1293 slli t0,t5,0x20
- 26fc: 220e8813 addi a6,t4,544
- 2700: 06010893 addi a7,sp,96
- 2704: 0202d293 srli t0,t0,0x20
- 2708: 01180eb3 add t4,a6,a7
- 270c: 22028813 addi a6,t0,544 # 3000220 <_ZSt4cerr+0x2ff8998>
- 2710: 011802b3 add t0,a6,a7
- tail[0] = (char)n;
- 2714: 07f10823 sb t6,112(sp)
- if (n <= 3)
- 2718: 4a0d li s4,3
- tail[n] = '0' + dp % 10;
- 271a: 02f7673b remw a4,a4,a5
- dp /= 10;
- 271e: 0003081b sext.w a6,t1
- tail[n] = '0' + dp % 10;
- 2722: 02f36abb remw s5,t1,a5
- 2726: 0307071b addiw a4,a4,48
- 272a: deee8823 sb a4,-528(t4)
- 272e: 030a871b addiw a4,s5,48
- 2732: dee28823 sb a4,-528(t0)
- if (n <= 3)
- 2736: 014f0a63 beq t5,s4,274a <stbsp_vsprintfcb+0x147c>
- dp /= 10;
- 273a: 02f3483b divw a6,t1,a5
- tail[n] = '0' + dp % 10;
- 273e: 02f867bb remw a5,a6,a5
- 2742: 0307879b addiw a5,a5,48
- 2746: 06f109a3 sb a5,115(sp)
- tz = pr - (l - 1);
- 274a: 2505 addiw a0,a0,1
- l = (stbsp__uint32)(s - (num + 64));
- 274c: 0c010a93 addi s5,sp,192
- cs = 1 + (3 << 24); // how many tens
- 2750: 030002b7 lui t0,0x3000
- tz = pr - (l - 1);
- 2754: 40d508bb subw a7,a0,a3
- 2758: d2c2 sw a6,100(sp)
- l = (stbsp__uint32)(s - (num + 64));
- 275a: 415607b3 sub a5,a2,s5
- cs = 1 + (3 << 24); // how many tens
- 275e: 0285 addi t0,t0,1 # 3000001 <_ZSt4cerr+0x2ff8779>
- 2760: bbc9 j 2532 <stbsp_vsprintfcb+0x1264>
- 2762: fc2e sd a1,56(sp)
- 2764: d0b2 sw a2,96(sp)
- while ((l > 1) && (pr) && (sn[l - 1] == '0')) {
- 2766: 8536 mv a0,a3
- 2768: e2cff06f j 1d94 <stbsp_vsprintfcb+0xac6>
- flt_lead:
- 276c: 4581 li a1,0
- 276e: 4f81 li t6,0
- 2770: b3c9 j 2532 <stbsp_vsprintfcb+0x1264>
- n = pr + lead[0] + tail[0] + tz;
- 2772: 06814a03 lbu s4,104(sp)
- 2776: 000a0f9b sext.w t6,s4
- 277a: b901 j 238a <stbsp_vsprintfcb+0x10bc>
- if ((f[1] == '6') && (f[2] == '4')) {
- 277c: 0024c683 lbu a3,2(s1)
- 2780: 03400713 li a4,52
- 2784: 00e68463 beq a3,a4,278c <stbsp_vsprintfcb+0x14be>
- 2788: e2bfe06f j 15b2 <stbsp_vsprintfcb+0x2e4>
- switch (f[0]) {
- 278c: 0034c783 lbu a5,3(s1)
- fl |= ((sizeof(long) == 8) ? STBSP__INTMAX : 0);
- 2790: 020e6e13 ori t3,t3,32
- f += 3;
- 2794: 048d addi s1,s1,3
- 2796: d1ffe06f j 14b4 <stbsp_vsprintfcb+0x1e6>
- if (pr < (stbsp__int32)l)
- 279a: 0006879b sext.w a5,a3
- n = pr + lead[0] + tail[0] + tz;
- 279e: 06814a03 lbu s4,104(sp)
- if (pr < (stbsp__int32)l)
- 27a2: fff7c793 not a5,a5
- 27a6: 97fd srai a5,a5,0x3f
- 27a8: 8ff5 and a5,a5,a3
- n = pr + lead[0] + tail[0] + tz;
- 27aa: 00fa063b addw a2,s4,a5
- s = (char *)sn;
- 27ae: 7ae6 ld s5,120(sp)
- n = pr + lead[0] + tail[0] + tz;
- 27b0: 8732 mv a4,a2
- if ((fl & STBSP__LEFTJUST) == 0) {
- 27b2: 001e7513 andi a0,t3,1
- if (pr < (stbsp__int32)l)
- 27b6: 2781 sext.w a5,a5
- if (fw < (stbsp__int32)n)
- 27b8: 835a mv t1,s6
- 27ba: 00cb5363 bge s6,a2,27c0 <stbsp_vsprintfcb+0x14f2>
- 27be: 8332 mv t1,a2
- fw -= n;
- 27c0: 40e3033b subw t1,t1,a4
- goto scopy;
- 27c4: 4f81 li t6,0
- pr -= l;
- 27c6: 40d7873b subw a4,a5,a3
- cs = 0;
- 27ca: 4281 li t0,0
- tz = 0;
- 27cc: 4881 li a7,0
- goto scopy;
- 27ce: c42ff06f j 1c10 <stbsp_vsprintfcb+0x942>
- cs = (int)(s - (num + 64)) + (3 << 24); // cs is how many tens
- 27d2: 415705b3 sub a1,a4,s5
- 27d6: 030002b7 lui t0,0x3000
- 27da: 00b282bb addw t0,t0,a1
- l = pr - n;
- 27de: 0008859b sext.w a1,a7
- if (pr)
- 27e2: 42088763 beqz a7,2c10 <stbsp_vsprintfcb+0x1942>
- *s++ = stbsp__period;
- 27e6: 0cca4f83 lbu t6,204(s4)
- if ((l - dp) > (stbsp__uint32)pr)
- 27ea: 41d6833b subw t1,a3,t4
- *s++ = stbsp__period;
- 27ee: 00280713 addi a4,a6,2
- 27f2: 01f800a3 sb t6,1(a6)
- if ((l - dp) > (stbsp__uint32)pr)
- 27f6: 4065ed63 bltu a1,t1,2c10 <stbsp_vsprintfcb+0x1942>
- while (n < l) {
- 27fa: 5ed57863 bgeu a0,a3,2dea <stbsp_vsprintfcb+0x1b1c>
- 27fe: 40c687bb subw a5,a3,a2
- 2802: 37fd addiw a5,a5,-1
- 2804: 1782 slli a5,a5,0x20
- 2806: 9381 srli a5,a5,0x20
- 2808: 1602 slli a2,a2,0x20
- 280a: 9201 srli a2,a2,0x20
- 280c: 0785 addi a5,a5,1
- 280e: 967a add a2,a2,t5
- 2810: 97ba add a5,a5,a4
- *s++ = sn[n];
- 2812: 00064503 lbu a0,0(a2)
- 2816: 0705 addi a4,a4,1
- while (n < l) {
- 2818: 0605 addi a2,a2,1
- *s++ = sn[n];
- 281a: fea70fa3 sb a0,-1(a4)
- while (n < l) {
- 281e: fef71ae3 bne a4,a5,2812 <stbsp_vsprintfcb+0x1544>
- tz = pr - (l - dp);
- 2822: 01d585bb addw a1,a1,t4
- 2826: 40d588bb subw a7,a1,a3
- l = (stbsp__uint32)(s - (num + 64));
- 282a: 415787b3 sub a5,a5,s5
- 282e: b99d j 24a4 <stbsp_vsprintfcb+0x11d6>
- fl |= STBSP__NEGATIVE;
- 2830: 080e6e13 ori t3,t3,128
- tail[0] = 0;
- 2834: 06010823 sb zero,112(sp)
- if (fl & STBSP__NEGATIVE) {
- 2838: b539 j 2646 <stbsp_vsprintfcb+0x1378>
- tail[0] = (char)n;
- 283a: 4799 li a5,6
- tail[n] = '0' + dp % 10;
- 283c: 06b10b23 sb a1,118(sp)
- tail[0] = (char)n;
- 2840: 06f10823 sb a5,112(sp)
- tail[n] = '0' + dp % 10;
- 2844: 4819 li a6,6
- 2846: 4f99 li t6,6
- n = (dp >= 1000) ? 6 : ((dp >= 100) ? 5 : ((dp >= 10) ? 4 : 3));
- 2848: 4599 li a1,6
- dp /= 10;
- 284a: 4f29 li t5,10
- if (n <= 3)
- 284c: 428d li t0,3
- 284e: 87b2 mv a5,a2
- dp /= 10;
- 2850: 03e7c7bb divw a5,a5,t5
- --n;
- 2854: 35fd addiw a1,a1,-1
- tail[n] = '0' + dp % 10;
- 2856: 02059613 slli a2,a1,0x20
- 285a: 9201 srli a2,a2,0x20
- 285c: 06010e93 addi t4,sp,96
- 2860: 22060613 addi a2,a2,544
- 2864: 9676 add a2,a2,t4
- 2866: 03e7eebb remw t4,a5,t5
- 286a: 030e8e9b addiw t4,t4,48
- 286e: dfd60823 sb t4,-528(a2)
- if (n <= 3)
- 2872: fc559fe3 bne a1,t0,2850 <stbsp_vsprintfcb+0x1582>
- 2876: e6aff06f j 1ee0 <stbsp_vsprintfcb+0xc12>
- *s++ = h[(n64 >> 60) & 15];
- 287a: 93f1 srli a5,a5,0x3c
- 287c: 97ae add a5,a5,a1
- 287e: 0007c303 lbu t1,0(a5)
- lead[1 + lead[0]] = '0';
- 2882: 1088 addi a0,sp,96
- 2884: 22080793 addi a5,a6,544
- 2888: 97aa add a5,a5,a0
- 288a: 03000513 li a0,48
- 288e: dea78423 sb a0,-536(a5)
- lead[2 + lead[0]] = 'x';
- 2892: 22068793 addi a5,a3,544
- 2896: 1094 addi a3,sp,96
- 2898: 96be add a3,a3,a5
- *s++ = stbsp__period;
- 289a: 00004517 auipc a0,0x4
- 289e: 1c254503 lbu a0,450(a0) # 6a5c <stbsp__period>
- lead[2 + lead[0]] = 'x';
- 28a2: 07800813 li a6,120
- sn = s;
- 28a6: 0c210793 addi a5,sp,194
- lead[2 + lead[0]] = 'x';
- 28aa: df068423 sb a6,-536(a3)
- *s++ = stbsp__period;
- 28ae: 0ca100a3 sb a0,193(sp)
- lead[0] += 2;
- 28b2: 07410423 sb s4,104(sp)
- *s++ = h[(n64 >> 60) & 15];
- 28b6: 0c610023 sb t1,192(sp)
- n64 <<= 4;
- 28ba: 0732 slli a4,a4,0xc
- sn = s;
- 28bc: fcbe sd a5,120(sp)
- n = pr;
- 28be: 0008869b sext.w a3,a7
- while (n--) {
- 28c2: 4831 li a6,12
- if (n > 13)
- 28c4: 4535 li a0,13
- tz = pr - n;
- 28c6: 40a688bb subw a7,a3,a0
- while (n--) {
- 28ca: 02081313 slli t1,a6,0x20
- 28ce: 02035313 srli t1,t1,0x20
- 28d2: 22030693 addi a3,t1,544
- 28d6: 1088 addi a0,sp,96
- 28d8: 9536 add a0,a0,a3
- 28da: e4350513 addi a0,a0,-445
- *s++ = h[(n64 >> 60) & 15];
- 28de: 03c75693 srli a3,a4,0x3c
- 28e2: 96ae add a3,a3,a1
- 28e4: 0006c683 lbu a3,0(a3)
- 28e8: 0785 addi a5,a5,1
- n64 <<= 4;
- 28ea: 0712 slli a4,a4,0x4
- *s++ = h[(n64 >> 60) & 15];
- 28ec: fed78fa3 sb a3,-1(a5)
- while (n--) {
- 28f0: fea797e3 bne a5,a0,28de <stbsp_vsprintfcb+0x1610>
- l = (int)(s - (num + 64));
- 28f4: 280d addiw a6,a6,3
- 28f6: 0008069b sext.w a3,a6
- if (pr < (stbsp__int32)l)
- 28fa: fff6c713 not a4,a3
- 28fe: 977d srai a4,a4,0x3f
- 2900: 00e87733 and a4,a6,a4
- dp = (int)(s - sn);
- 2904: 0013051b addiw a0,t1,1
- if (pr < (stbsp__int32)l)
- 2908: 0007031b sext.w t1,a4
- pr -= l;
- 290c: 4107073b subw a4,a4,a6
- 2910: d76ff06f j 1e86 <stbsp_vsprintfcb+0xbb8>
- *--s = stbsp__comma;
- 2914: 00004a17 auipc s4,0x4
- 2918: 07ca0a13 addi s4,s4,124 # 6990 <stbsp__digitpair>
- if (n64 >= 100000000) {
- 291c: 05f5e7b7 lui a5,0x5f5e
- 2920: 0ff78793 addi a5,a5,255 # 5f5e0ff <_ZSt4cerr+0x5f56877>
- n = (stbsp__uint32)(n64 % 100000000);
- 2924: 05f5e637 lui a2,0x5f5e
- *--s = stbsp__comma;
- 2928: 0cda4b83 lbu s7,205(s4)
- if (n64 >= 100000000) {
- 292c: e83e sd a5,16(sp)
- n = (stbsp__uint32)(n64 % 100000000);
- 292e: 10060793 addi a5,a2,256 # 5f5e100 <_ZSt4cerr+0x5f56878>
- l = 0;
- 2932: d082 sw zero,96(sp)
- if ((fl & STBSP__TRIPLET_COMMA) == 0) {
- 2934: 040e7813 andi a6,t3,64
- 2938: 4701 li a4,0
- 293a: 4281 li t0,0
- s = num + STBSP__NUMSZ;
- 293c: 28010a93 addi s5,sp,640
- n = (stbsp__uint32)(n64 % 100000000);
- 2940: ec3e sd a5,24(sp)
- if ((fl & STBSP__TRIPLET_COMMA) && (l++ == 3)) {
- 2942: 430d li t1,3
- n /= 10;
- 2944: 45a9 li a1,10
- while (n) {
- 2946: 4ea5 li t4,9
- *(stbsp__uint16 *)s = *(stbsp__uint16 *)&stbsp__digitpair.pair[(n % 100) * 2];
- 2948: 06400f93 li t6,100
- if (n64 >= 100000000) {
- 294c: 67c2 ld a5,16(sp)
- char *o = s - 8;
- 294e: ff8a8513 addi a0,s5,-8
- if (n64 >= 100000000) {
- 2952: 0fe7f763 bgeu a5,t5,2a40 <stbsp_vsprintfcb+0x1772>
- n = (stbsp__uint32)(n64 % 100000000);
- 2956: 6662 ld a2,24(sp)
- 2958: 02cf77b3 remu a5,t5,a2
- n64 /= 100000000;
- 295c: 02cf5f33 divu t5,t5,a2
- if ((fl & STBSP__TRIPLET_COMMA) == 0) {
- 2960: 0e080463 beqz a6,2a48 <stbsp_vsprintfcb+0x177a>
- while (n) {
- 2964: cb85 beqz a5,2994 <stbsp_vsprintfcb+0x16c6>
- *--s = stbsp__comma;
- 2966: 1afd addi s5,s5,-1
- if ((fl & STBSP__TRIPLET_COMMA) && (l++ == 3)) {
- 2968: 00671763 bne a4,t1,2976 <stbsp_vsprintfcb+0x16a8>
- --o;
- 296c: 017a8023 sb s7,0(s5)
- 2970: 157d addi a0,a0,-1
- *--s = stbsp__comma;
- 2972: 1afd addi s5,s5,-1
- l = 0;
- 2974: 4701 li a4,0
- if ((fl & STBSP__TRIPLET_COMMA) && (l++ == 3)) {
- 2976: 2705 addiw a4,a4,1
- *--s = (char)(n % 10) + '0';
- 2978: 02b7f63b remuw a2,a5,a1
- 297c: 0306061b addiw a2,a2,48
- 2980: 00ca8023 sb a2,0(s5)
- n /= 10;
- 2984: 02b7d63b divuw a2,a5,a1
- while (n) {
- 2988: 00fef563 bgeu t4,a5,2992 <stbsp_vsprintfcb+0x16c4>
- *--s = stbsp__comma;
- 298c: 1afd addi s5,s5,-1
- 298e: 87b2 mv a5,a2
- 2990: bfe1 j 2968 <stbsp_vsprintfcb+0x169a>
- while (n) {
- 2992: 4285 li t0,1
- if (n64 == 0) {
- 2994: 020f0063 beqz t5,29b4 <stbsp_vsprintfcb+0x16e6>
- while (s != o)
- 2998: fb550ae3 beq a0,s5,294c <stbsp_vsprintfcb+0x167e>
- *--s = stbsp__comma;
- 299c: 1afd addi s5,s5,-1
- if ((fl & STBSP__TRIPLET_COMMA) && (l++ == 3)) {
- 299e: 00080663 beqz a6,29aa <stbsp_vsprintfcb+0x16dc>
- 29a2: 08670863 beq a4,t1,2a32 <stbsp_vsprintfcb+0x1764>
- 29a6: 2705 addiw a4,a4,1
- 29a8: 4285 li t0,1
- *--s = '0';
- 29aa: 03000793 li a5,48
- 29ae: 00fa8023 sb a5,0(s5)
- 29b2: b7dd j 2998 <stbsp_vsprintfcb+0x16ca>
- 29b4: 00028363 beqz t0,29ba <stbsp_vsprintfcb+0x16ec>
- 29b8: d0ba sw a4,96(sp)
- if ((s[0] == '0') && (s != (num + STBSP__NUMSZ)))
- 29ba: 000ac703 lbu a4,0(s5)
- 29be: 03000793 li a5,48
- 29c2: 34f70b63 beq a4,a5,2d18 <stbsp_vsprintfcb+0x1a4a>
- l = (stbsp__uint32)((num + STBSP__NUMSZ) - s);
- 29c6: 051c addi a5,sp,640
- 29c8: 415786bb subw a3,a5,s5
- tail[0] = 0;
- 29cc: 06010823 sb zero,112(sp)
- if (fl & STBSP__NEGATIVE) {
- 29d0: 080e7713 andi a4,t3,128
- 29d4: 87f2 mv a5,t3
- 29d6: 32070863 beqz a4,2d06 <stbsp_vsprintfcb+0x1a38>
- 29da: 678d lui a5,0x3
- 29dc: d017879b addiw a5,a5,-767 # 2d01 <stbsp_vsprintfcb+0x1a33>
- sign[0] = 1;
- 29e0: 06f11423 sh a5,104(sp)
- 29e4: 4705 li a4,1
- 29e6: 4a05 li s4,1
- l = (stbsp__uint32)((num + STBSP__NUMSZ) - s);
- 29e8: d0b6 sw a3,96(sp)
- if (l == 0) {
- 29ea: 30068163 beqz a3,2cec <stbsp_vsprintfcb+0x1a1e>
- cs = l + (3 << 24);
- 29ee: 030002b7 lui t0,0x3000
- 29f2: 00d282bb addw t0,t0,a3
- if (pr < (stbsp__int32)l)
- 29f6: 0006861b sext.w a2,a3
- if (pr < 0)
- 29fa: fff8c793 not a5,a7
- 29fe: 97fd srai a5,a5,0x3f
- if (pr < (stbsp__int32)l)
- 2a00: 00f8f7b3 and a5,a7,a5
- 2a04: 0007859b sext.w a1,a5
- 2a08: 00c5d363 bge a1,a2,2a0e <stbsp_vsprintfcb+0x1740>
- 2a0c: 87b2 mv a5,a2
- n = pr + lead[0] + tail[0] + tz;
- 2a0e: 00f7063b addw a2,a4,a5
- 2a12: 8732 mv a4,a2
- if (pr < (stbsp__int32)l)
- 2a14: 2781 sext.w a5,a5
- if ((fl & STBSP__LEFTJUST) == 0) {
- 2a16: 001e7513 andi a0,t3,1
- if (fw < (stbsp__int32)n)
- 2a1a: 835a mv t1,s6
- 2a1c: 00cb5363 bge s6,a2,2a22 <stbsp_vsprintfcb+0x1754>
- 2a20: 8332 mv t1,a2
- fw -= n;
- 2a22: 40e3033b subw t1,t1,a4
- scopy:
- 2a26: 4f81 li t6,0
- pr -= l;
- 2a28: 40d7873b subw a4,a5,a3
- tz = 0;
- 2a2c: 4881 li a7,0
- scopy:
- 2a2e: 9e2ff06f j 1c10 <stbsp_vsprintfcb+0x942>
- *--s = stbsp__comma;
- 2a32: 87de mv a5,s7
- --o;
- 2a34: 157d addi a0,a0,-1
- l = 0;
- 2a36: 4701 li a4,0
- --o;
- 2a38: 4285 li t0,1
- 2a3a: 00fa8023 sb a5,0(s5)
- 2a3e: bfa9 j 2998 <stbsp_vsprintfcb+0x16ca>
- n = (stbsp__uint32)n64;
- 2a40: 000f079b sext.w a5,t5
- n64 = 0;
- 2a44: 4f01 li t5,0
- 2a46: bf29 j 2960 <stbsp_vsprintfcb+0x1692>
- 2a48: f046 sd a7,32(sp)
- *(stbsp__uint16 *)s = *(stbsp__uint16 *)&stbsp__digitpair.pair[(n % 100) * 2];
- 2a4a: 03f7f63b remuw a2,a5,t6
- s -= 2;
- 2a4e: 1af9 addi s5,s5,-2
- *(stbsp__uint16 *)s = *(stbsp__uint16 *)&stbsp__digitpair.pair[(n % 100) * 2];
- 2a50: 0007889b sext.w a7,a5
- 2a54: 2605 addiw a2,a2,1
- 2a56: 0016161b slliw a2,a2,0x1
- 2a5a: 1602 slli a2,a2,0x20
- 2a5c: 9201 srli a2,a2,0x20
- 2a5e: 9652 add a2,a2,s4
- 2a60: 00065603 lhu a2,0(a2)
- n /= 100;
- 2a64: 03f7d7bb divuw a5,a5,t6
- *(stbsp__uint16 *)s = *(stbsp__uint16 *)&stbsp__digitpair.pair[(n % 100) * 2];
- 2a68: 00ca9023 sh a2,0(s5)
- } while (n);
- 2a6c: 06300613 li a2,99
- 2a70: fd166de3 bltu a2,a7,2a4a <stbsp_vsprintfcb+0x177c>
- 2a74: 7882 ld a7,32(sp)
- if (n64 == 0) {
- 2a76: f20f11e3 bnez t5,2998 <stbsp_vsprintfcb+0x16ca>
- 2a7a: bf2d j 29b4 <stbsp_vsprintfcb+0x16e6>
- *(stbsp__uint32 *)bf = 0x20202020;
- 2a7c: 20202b37 lui s6,0x20202
- stbsp__cb_buf_clamp(i, fw);
- 2a80: 854a mv a0,s2
- *bf++ = ' ';
- 2a82: 02000a93 li s5,32
- *(stbsp__uint32 *)bf = 0x20202020;
- 2a86: 020b0b13 addi s6,s6,32 # 20202020 <_ZSt4cerr+0x201fa798>
- stbsp__chk_cb_buf(1);
- 2a8a: 1fe00a13 li s4,510
- stbsp__cb_buf_clamp(i, fw);
- 2a8e: 20000b93 li s7,512
- 2a92: 891a mv s2,t1
- 2a94: 0a098063 beqz s3,2b34 <stbsp_vsprintfcb+0x1866>
- 2a98: 40a40633 sub a2,s0,a0
- 2a9c: 40cb87bb subw a5,s7,a2
- 2aa0: 873e mv a4,a5
- 2aa2: 00f95363 bge s2,a5,2aa8 <stbsp_vsprintfcb+0x17da>
- 2aa6: 874a mv a4,s2
- 2aa8: 0007079b sext.w a5,a4
- fw -= i;
- 2aac: 40e9093b subw s2,s2,a4
- while (i) {
- 2ab0: e799 bnez a5,2abe <stbsp_vsprintfcb+0x17f0>
- 2ab2: a281 j 2bf2 <stbsp_vsprintfcb+0x1924>
- *bf++ = ' ';
- 2ab4: 01540023 sb s5,0(s0)
- --i;
- 2ab8: 37fd addiw a5,a5,-1
- *bf++ = ' ';
- 2aba: 0405 addi s0,s0,1
- while (i) {
- 2abc: cba1 beqz a5,2b0c <stbsp_vsprintfcb+0x183e>
- if ((((stbsp__uintptr)bf) & 3) == 0)
- 2abe: 00347713 andi a4,s0,3
- 2ac2: fb6d bnez a4,2ab4 <stbsp_vsprintfcb+0x17e6>
- while (i >= 4) {
- 2ac4: 470d li a4,3
- 2ac6: 40f75363 bge a4,a5,2ecc <stbsp_vsprintfcb+0x1bfe>
- 2aca: ffc7869b addiw a3,a5,-4
- 2ace: 0026d79b srliw a5,a3,0x2
- 2ad2: 0017871b addiw a4,a5,1
- 2ad6: 070a slli a4,a4,0x2
- 2ad8: 9722 add a4,a4,s0
- *(stbsp__uint32 *)bf = 0x20202020;
- 2ada: 01642023 sw s6,0(s0)
- bf += 4;
- 2ade: 0411 addi s0,s0,4
- while (i >= 4) {
- 2ae0: fee41de3 bne s0,a4,2ada <stbsp_vsprintfcb+0x180c>
- 2ae4: 0027979b slliw a5,a5,0x2
- 2ae8: 40f687bb subw a5,a3,a5
- while (i--)
- 2aec: fff7869b addiw a3,a5,-1
- 2af0: cf91 beqz a5,2b0c <stbsp_vsprintfcb+0x183e>
- 2af2: 9fa1 addw a5,a5,s0
- *bf++ = ' ';
- 2af4: 0705 addi a4,a4,1
- while (i--)
- 2af6: 0007061b sext.w a2,a4
- *bf++ = ' ';
- 2afa: ff570fa3 sb s5,-1(a4)
- while (i--)
- 2afe: fec79be3 bne a5,a2,2af4 <stbsp_vsprintfcb+0x1826>
- 2b02: 2685 addiw a3,a3,1
- 2b04: 02069793 slli a5,a3,0x20
- 2b08: 9381 srli a5,a5,0x20
- 2b0a: 943e add s0,s0,a5
- stbsp__chk_cb_buf(1);
- 2b0c: 00098f63 beqz s3,2b2a <stbsp_vsprintfcb+0x185c>
- 2b10: 40a4063b subw a2,s0,a0
- 2b14: 00ca5b63 bge s4,a2,2b2a <stbsp_vsprintfcb+0x185c>
- 2b18: 65a2 ld a1,8(sp)
- 2b1a: e81e sd t2,16(sp)
- 2b1c: 00cd0d3b addw s10,s10,a2
- 2b20: 9982 jalr s3
- 2b22: 80050be3 beqz a0,2338 <stbsp_vsprintfcb+0x106a>
- 2b26: 63c2 ld t2,16(sp)
- 2b28: 842a mv s0,a0
- while (fw) {
- 2b2a: f60915e3 bnez s2,2a94 <stbsp_vsprintfcb+0x17c6>
- 2b2e: 892a mv s2,a0
- 2b30: f21fe06f j 1a50 <stbsp_vsprintfcb+0x782>
- stbsp__cb_buf_clamp(i, fw);
- 2b34: 87ca mv a5,s2
- fw -= i;
- 2b36: 4901 li s2,0
- if ((((stbsp__uintptr)bf) & 3) == 0)
- 2b38: b759 j 2abe <stbsp_vsprintfcb+0x17f0>
- } else if (fl & STBSP__LEADINGPLUS) {
- 2b3a: 002e7713 andi a4,t3,2
- 2b3e: 94070663 beqz a4,1c8a <stbsp_vsprintfcb+0x9bc>
- sign[0] = 1;
- 2b42: 670d lui a4,0x3
- 2b44: b0170713 addi a4,a4,-1279 # 2b01 <stbsp_vsprintfcb+0x1833>
- 2b48: 06e11423 sh a4,104(sp)
- 2b4c: 93eff06f j 1c8a <stbsp_vsprintfcb+0x9bc>
- if (((stbsp__uintptr)sn & 3) == 0)
- 2b50: 87d6 mv a5,s5
- while (limit >= 4) {
- 2b52: 470d li a4,3
- 2b54: 22d77763 bgeu a4,a3,2d82 <stbsp_vsprintfcb+0x1ab4>
- if ((v - 0x01010101) & (~v) & 0x80808080UL)
- 2b58: feff05b7 lui a1,0xfeff0
- 2b5c: 80808637 lui a2,0x80808
- 2b60: eff5859b addiw a1,a1,-257 # fffffffffefefeff <_ZSt4cerr+0xfffffffffefe8677>
- 2b64: 08060613 addi a2,a2,128 # ffffffff80808080 <_ZSt4cerr+0xffffffff808007f8>
- while (limit >= 4) {
- 2b68: 480d li a6,3
- 2b6a: a029 j 2b74 <stbsp_vsprintfcb+0x18a6>
- limit -= 4;
- 2b6c: 36f1 addiw a3,a3,-4
- sn += 4;
- 2b6e: 0791 addi a5,a5,4
- while (limit >= 4) {
- 2b70: 20d87963 bgeu a6,a3,2d82 <stbsp_vsprintfcb+0x1ab4>
- stbsp__uint32 v = *(stbsp__uint32 *)sn;
- 2b74: 4398 lw a4,0(a5)
- if ((v - 0x01010101) & (~v) & 0x80808080UL)
- 2b76: 00b7053b addw a0,a4,a1
- 2b7a: fff74713 not a4,a4
- 2b7e: 8f69 and a4,a4,a0
- 2b80: 8f71 and a4,a4,a2
- 2b82: 2701 sext.w a4,a4
- 2b84: d765 beqz a4,2b6c <stbsp_vsprintfcb+0x189e>
- 2b86: 02069713 slli a4,a3,0x20
- 2b8a: 9301 srli a4,a4,0x20
- 2b8c: 973e add a4,a4,a5
- 2b8e: a021 j 2b96 <stbsp_vsprintfcb+0x18c8>
- ++sn;
- 2b90: 0785 addi a5,a5,1
- while (limit && *sn) {
- 2b92: 00e78663 beq a5,a4,2b9e <stbsp_vsprintfcb+0x18d0>
- 2b96: 0007c683 lbu a3,0(a5)
- 2b9a: fafd bnez a3,2b90 <stbsp_vsprintfcb+0x18c2>
- 2b9c: 873e mv a4,a5
- return (stbsp__uint32)(sn - s);
- 2b9e: 41570733 sub a4,a4,s5
- 2ba2: 0007069b sext.w a3,a4
- if (pr < (stbsp__int32)l)
- 2ba6: fff6c793 not a5,a3
- 2baa: 97fd srai a5,a5,0x3f
- 2bac: 8f7d and a4,a4,a5
- 2bae: 0007079b sext.w a5,a4
- n = pr + lead[0] + tail[0] + tz;
- 2bb2: 863e mv a2,a5
- pr -= l;
- 2bb4: 9f15 subw a4,a4,a3
- return (stbsp__uint32)(sn - s);
- 2bb6: d2eff06f j 20e4 <stbsp_vsprintfcb+0xe16>
- for (n = 1; n < l; n++)
- 2bba: 4605 li a2,1
- 2bbc: aed663e3 bltu a2,a3,26a2 <stbsp_vsprintfcb+0x13d4>
- 2bc0: 0c210613 addi a2,sp,194
- 2bc4: bcf5 j 26c0 <stbsp_vsprintfcb+0x13f2>
- l = pr + 1;
- 2bc6: 4685 li a3,1
- if ((l - 1) > (stbsp__uint32)pr)
- 2bc8: 4501 li a0,0
- *s++ = sn[0];
- 2bca: 0c110613 addi a2,sp,193
- 2bce: bccd j 26c0 <stbsp_vsprintfcb+0x13f2>
- 2bd0: 4591 li a1,4
- 2bd2: 4f91 li t6,4
- n = (dp >= 100) ? 5 : 4;
- 2bd4: 4e91 li t4,4
- 2bd6: be21 j 26ee <stbsp_vsprintfcb+0x1420>
- 2bd8: 4a85 li s5,1
- 2bda: 80000737 lui a4,0x80000
- pr = 1; // default is 6
- 2bde: 4a05 li s4,1
- 2be0: 920ff06f j 1d00 <stbsp_vsprintfcb+0xa32>
- dp = (n64) ? -1022 : 0;
- 2be4: 4601 li a2,0
- 2be6: c119 beqz a0,2bec <stbsp_vsprintfcb+0x191e>
- 2be8: c0200613 li a2,-1022
- *bits = b & ((((stbsp__uint64)1) << 52) - 1);
- 2bec: 872a mv a4,a0
- 2bee: a3aff06f j 1e28 <stbsp_vsprintfcb+0xb5a>
- stbsp__chk_cb_buf(1);
- 2bf2: 2601 sext.w a2,a2
- 2bf4: 1fe00793 li a5,510
- 2bf8: f2c7c0e3 blt a5,a2,2b18 <stbsp_vsprintfcb+0x184a>
- 2bfc: bd61 j 2a94 <stbsp_vsprintfcb+0x17c6>
- tail[0] = (char)n;
- 2bfe: 4795 li a5,5
- tail[n] = '0' + dp % 10;
- 2c00: 06b10aa3 sb a1,117(sp)
- tail[0] = (char)n;
- 2c04: 06f10823 sb a5,112(sp)
- tail[n] = '0' + dp % 10;
- 2c08: 4815 li a6,5
- 2c0a: 4f95 li t6,5
- n = (dp >= 1000) ? 6 : ((dp >= 100) ? 5 : ((dp >= 10) ? 4 : 3));
- 2c0c: 4595 li a1,5
- 2c0e: b935 j 284a <stbsp_vsprintfcb+0x157c>
- l = pr + dp;
- 2c10: 011786bb addw a3,a5,a7
- 2c14: d0b6 sw a3,96(sp)
- 2c16: b6d5 j 27fa <stbsp_vsprintfcb+0x152c>
- s = (char *)"null";
- 2c18: 00002a97 auipc s5,0x2
- 2c1c: 4b8a8a93 addi s5,s5,1208 # 50d0 <_GLOBAL__sub_I__ZSt3cin+0xe0>
- 2c20: c80ff06f j 20a0 <stbsp_vsprintfcb+0xdd2>
- } else if (fl & STBSP__LEADINGPLUS) {
- 2c24: 002e7793 andi a5,t3,2
- 2c28: 1c079c63 bnez a5,2e00 <stbsp_vsprintfcb+0x1b32>
- sign[0] = 0;
- 2c2c: 4689 li a3,2
- 2c2e: 4a09 li s4,2
- 2c30: 4805 li a6,1
- 2c32: 9e8ff06f j 1e1a <stbsp_vsprintfcb+0xb4c>
- sign[0] = 1;
- 2c36: 670d lui a4,0x3
- 2c38: b0170713 addi a4,a4,-1279 # 2b01 <stbsp_vsprintfcb+0x1833>
- 2c3c: 06e11423 sh a4,104(sp)
- 2c40: b86ff06f j 1fc6 <stbsp_vsprintfcb+0xcf8>
- pr = 0;
- 2c44: 4881 li a7,0
- 2c46: f1ffe06f j 1b64 <stbsp_vsprintfcb+0x896>
- *s++ = '0';
- 2c4a: 03000713 li a4,48
- 2c4e: 0ce10023 sb a4,192(sp)
- if (pr)
- 2c52: 1a088c63 beqz a7,2e0a <stbsp_vsprintfcb+0x1b3c>
- *s++ = stbsp__period;
- 2c56: 00004717 auipc a4,0x4
- 2c5a: e0674703 lbu a4,-506(a4) # 6a5c <stbsp__period>
- n = -dp;
- 2c5e: 40f007bb negw a5,a5
- *s++ = stbsp__period;
- 2c62: 0ce100a3 sb a4,193(sp)
- if ((stbsp__int32)n > pr)
- 2c66: 0007871b sext.w a4,a5
- 2c6a: 00e8d363 bge a7,a4,2c70 <stbsp_vsprintfcb+0x19a2>
- 2c6e: 87c6 mv a5,a7
- 2c70: 0007871b sext.w a4,a5
- if ((stbsp__int32)(l + n) > pr)
- 2c74: 00d7833b addw t1,a5,a3
- 2c78: 883a mv a6,a4
- while (i) {
- 2c7a: 0c210793 addi a5,sp,194
- *s++ = '0';
- 2c7e: 03000513 li a0,48
- while (i) {
- 2c82: e711 bnez a4,2c8e <stbsp_vsprintfcb+0x19c0>
- 2c84: a271 j 2e10 <stbsp_vsprintfcb+0x1b42>
- if ((((stbsp__uintptr)s) & 3) == 0)
- 2c86: 0037f613 andi a2,a5,3
- 2c8a: 18060563 beqz a2,2e14 <stbsp_vsprintfcb+0x1b46>
- *s++ = '0';
- 2c8e: 85ba mv a1,a4
- 2c90: 00a78023 sb a0,0(a5)
- --i;
- 2c94: 377d addiw a4,a4,-1
- *s++ = '0';
- 2c96: 0785 addi a5,a5,1
- while (i) {
- 2c98: f77d bnez a4,2c86 <stbsp_vsprintfcb+0x19b8>
- if ((stbsp__int32)(l + n) > pr)
- 2c9a: 0003071b sext.w a4,t1
- 2c9e: 4108863b subw a2,a7,a6
- 2ca2: 00e8d563 bge a7,a4,2cac <stbsp_vsprintfcb+0x19de>
- l = pr - n;
- 2ca6: 0006069b sext.w a3,a2
- 2caa: d0b2 sw a2,96(sp)
- while (i) {
- 2cac: c68d beqz a3,2cd6 <stbsp_vsprintfcb+0x1a08>
- 2cae: 7566 ld a0,120(sp)
- 2cb0: 02069813 slli a6,a3,0x20
- 2cb4: 02085813 srli a6,a6,0x20
- 2cb8: 01078eb3 add t4,a5,a6
- 2cbc: 85aa mv a1,a0
- 2cbe: 873e mv a4,a5
- *s++ = *sn++;
- 2cc0: 0005c883 lbu a7,0(a1)
- 2cc4: 0705 addi a4,a4,1
- while (i) {
- 2cc6: 0585 addi a1,a1,1
- *s++ = *sn++;
- 2cc8: ff170fa3 sb a7,-1(a4)
- while (i) {
- 2ccc: ffd71ae3 bne a4,t4,2cc0 <stbsp_vsprintfcb+0x19f2>
- 2cd0: 9542 add a0,a0,a6
- 2cd2: 97c2 add a5,a5,a6
- 2cd4: fcaa sd a0,120(sp)
- l = (stbsp__uint32)(s - (num + 64));
- 2cd6: 0c010a93 addi s5,sp,192
- cs = 1 + (3 << 24); // how many tens did we write (for commas below)
- 2cda: 030002b7 lui t0,0x3000
- tz = pr - (n + l);
- 2cde: 40d608bb subw a7,a2,a3
- l = (stbsp__uint32)(s - (num + 64));
- 2ce2: 415787b3 sub a5,a5,s5
- cs = 1 + (3 << 24); // how many tens did we write (for commas below)
- 2ce6: 0285 addi t0,t0,1 # 3000001 <_ZSt4cerr+0x2ff8779>
- 2ce8: fbcff06f j 24a4 <stbsp_vsprintfcb+0x11d6>
- *--s = '0';
- 2cec: 03000793 li a5,48
- 2cf0: fefa8fa3 sb a5,-1(s5)
- l = 1;
- 2cf4: 030002b7 lui t0,0x3000
- 2cf8: 4785 li a5,1
- 2cfa: d0be sw a5,96(sp)
- *--s = '0';
- 2cfc: 1afd addi s5,s5,-1
- l = 1;
- 2cfe: 4605 li a2,1
- 2d00: 0285 addi t0,t0,1 # 3000001 <_ZSt4cerr+0x2ff8779>
- 2d02: 4685 li a3,1
- 2d04: b9dd j 29fa <stbsp_vsprintfcb+0x172c>
- } else if (fl & STBSP__LEADINGSPACE) {
- 2d06: 004e7713 andi a4,t3,4
- 2d0a: e74d bnez a4,2db4 <stbsp_vsprintfcb+0x1ae6>
- } else if (fl & STBSP__LEADINGPLUS) {
- 2d0c: 8b89 andi a5,a5,2
- 2d0e: efd9 bnez a5,2dac <stbsp_vsprintfcb+0x1ade>
- sign[0] = 0;
- 2d10: 06010423 sb zero,104(sp)
- 2d14: 4a01 li s4,0
- 2d16: b9c9 j 29e8 <stbsp_vsprintfcb+0x171a>
- if ((s[0] == '0') && (s != (num + STBSP__NUMSZ)))
- 2d18: 051c addi a5,sp,640
- 2d1a: cafa89e3 beq s5,a5,29cc <stbsp_vsprintfcb+0x16fe>
- ++s;
- 2d1e: 0a85 addi s5,s5,1
- l = (stbsp__uint32)((num + STBSP__NUMSZ) - s);
- 2d20: 415786bb subw a3,a5,s5
- 2d24: b165 j 29cc <stbsp_vsprintfcb+0x16fe>
- n = dp - n;
- 2d26: 40ce87bb subw a5,t4,a2
- if ((fl & STBSP__TRIPLET_COMMA) == 0) {
- 2d2a: 12030e63 beqz t1,2e66 <stbsp_vsprintfcb+0x1b98>
- if ((fl & STBSP__TRIPLET_COMMA) && (++cs == 4)) {
- 2d2e: 4511 li a0,4
- 2d30: 03000613 li a2,48
- *s++ = stbsp__comma;
- 2d34: 00170693 addi a3,a4,1
- if ((fl & STBSP__TRIPLET_COMMA) && (++cs == 4)) {
- 2d38: 00030563 beqz t1,2d42 <stbsp_vsprintfcb+0x1a74>
- 2d3c: 2585 addiw a1,a1,1
- 2d3e: 00a58963 beq a1,a0,2d50 <stbsp_vsprintfcb+0x1a82>
- 2d42: 8736 mv a4,a3
- --n;
- 2d44: 37fd addiw a5,a5,-1
- 2d46: fec70fa3 sb a2,-1(a4)
- while (n) {
- 2d4a: f7ed bnez a5,2d34 <stbsp_vsprintfcb+0x1a66>
- 2d4c: f38ff06f j 2484 <stbsp_vsprintfcb+0x11b6>
- 2d50: fe568fa3 sb t0,-1(a3)
- *s++ = stbsp__comma;
- 2d54: 0709 addi a4,a4,2
- if ((fl & STBSP__TRIPLET_COMMA) && (++cs == 4)) {
- 2d56: 4585 li a1,1
- 2d58: b7f5 j 2d44 <stbsp_vsprintfcb+0x1a76>
- sign[0] = 0;
- 2d5a: 06010423 sb zero,104(sp)
- 2d5e: f1dfe06f j 1c7a <stbsp_vsprintfcb+0x9ac>
- tail[idx + 1] = "_kMGT"[fl >> 24];
- 2d62: 00002697 auipc a3,0x2
- 2d66: 37e68693 addi a3,a3,894 # 50e0 <_GLOBAL__sub_I__ZSt3cin+0xf0>
- 2d6a: 9736 add a4,a4,a3
- 2d6c: 00074683 lbu a3,0(a4)
- 2d70: 1088 addi a0,sp,96
- 2d72: 22060713 addi a4,a2,544
- 2d76: 972a add a4,a4,a0
- 2d78: ded70823 sb a3,-528(a4)
- idx++;
- 2d7c: 8fb2 mv t6,a2
- 2d7e: fb0ff06f j 252e <stbsp_vsprintfcb+0x1260>
- while (limit && *sn) {
- 2d82: e00692e3 bnez a3,2b86 <stbsp_vsprintfcb+0x18b8>
- 2d86: bd19 j 2b9c <stbsp_vsprintfcb+0x18ce>
- pr = (dp < (stbsp__int32)l) ? l - dp : 0;
- 2d88: 0008071b sext.w a4,a6
- 2d8c: 86c2 mv a3,a6
- 2d8e: 88d2 mv a7,s4
- pr = -dp + ((pr > (stbsp__int32)l) ? (stbsp__int32) l : pr);
- 2d90: 863a mv a2,a4
- 2d92: 00e8d363 bge a7,a4,2d98 <stbsp_vsprintfcb+0x1aca>
- 2d96: 8646 mv a2,a7
- 2d98: 40f608bb subw a7,a2,a5
- 2d9c: 814ff06f j 1db0 <stbsp_vsprintfcb+0xae2>
- divisor = 1000.0f;
- 2da0: 00003797 auipc a5,0x3
- 2da4: ae07b787 fld fa5,-1312(a5) # 5880 <STDIN_FD+0x28>
- 2da8: dd5fe06f j 1b7c <stbsp_vsprintfcb+0x8ae>
- 2dac: 678d lui a5,0x3
- 2dae: b017879b addiw a5,a5,-1279 # 2b01 <stbsp_vsprintfcb+0x1833>
- 2db2: b13d j 29e0 <stbsp_vsprintfcb+0x1712>
- 2db4: 6789 lui a5,0x2
- 2db6: 2785 addiw a5,a5,1 # 2001 <stbsp_vsprintfcb+0xd33>
- 2db8: b125 j 29e0 <stbsp_vsprintfcb+0x1712>
- *s++ = stbsp__period;
- 2dba: 00004517 auipc a0,0x4
- 2dbe: ca254503 lbu a0,-862(a0) # 6a5c <stbsp__period>
- sn = s;
- 2dc2: 0c210793 addi a5,sp,194
- n = pr;
- 2dc6: 0008869b sext.w a3,a7
- *s++ = stbsp__period;
- 2dca: 0ca100a3 sb a0,193(sp)
- sn = s;
- 2dce: fcbe sd a5,120(sp)
- if (n > 13)
- 2dd0: 4535 li a0,13
- n64 <<= 4;
- 2dd2: 0712 slli a4,a4,0x4
- if (n > 13)
- 2dd4: 8836 mv a6,a3
- 2dd6: 00d57363 bgeu a0,a3,2ddc <stbsp_vsprintfcb+0x1b0e>
- 2dda: 4835 li a6,13
- 2ddc: 0008051b sext.w a0,a6
- while (n--) {
- 2de0: 387d addiw a6,a6,-1
- if (pr > (stbsp__int32)n)
- 2de2: af1542e3 blt a0,a7,28c6 <stbsp_vsprintfcb+0x15f8>
- tz = 0;
- 2de6: 4881 li a7,0
- 2de8: b4cd j 28ca <stbsp_vsprintfcb+0x15fc>
- while (n < l) {
- 2dea: 87ba mv a5,a4
- 2dec: bc1d j 2822 <stbsp_vsprintfcb+0x1554>
- tail[0] = (char)n;
- 2dee: 478d li a5,3
- 2df0: 06f10823 sb a5,112(sp)
- tail[n] = '0' + dp % 10;
- 2df4: 06b109a3 sb a1,115(sp)
- 2df8: 480d li a6,3
- 2dfa: 4f8d li t6,3
- 2dfc: 8e4ff06f j 1ee0 <stbsp_vsprintfcb+0xc12>
- 2e00: 678d lui a5,0x3
- 2e02: b017879b addiw a5,a5,-1279 # 2b01 <stbsp_vsprintfcb+0x1833>
- 2e06: 80aff06f j 1e10 <stbsp_vsprintfcb+0xb42>
- if (pr)
- 2e0a: 8336 mv t1,a3
- *s++ = '0';
- 2e0c: 0c110793 addi a5,sp,193
- while (i) {
- 2e10: 4801 li a6,0
- 2e12: b561 j 2c9a <stbsp_vsprintfcb+0x19cc>
- while (i >= 4) {
- 2e14: 460d li a2,3
- 2e16: 04e65663 bge a2,a4,2e62 <stbsp_vsprintfcb+0x1b94>
- 2e1a: ffb5871b addiw a4,a1,-5
- 2e1e: 0027559b srliw a1,a4,0x2
- 2e22: 0015861b addiw a2,a1,1
- 2e26: 060a slli a2,a2,0x2
- *(stbsp__uint32 *)s = 0x30303030;
- 2e28: 30303537 lui a0,0x30303
- 2e2c: 963e add a2,a2,a5
- 2e2e: 03050513 addi a0,a0,48 # 30303030 <_ZSt4cerr+0x302fb7a8>
- 2e32: c388 sw a0,0(a5)
- s += 4;
- 2e34: 0791 addi a5,a5,4
- while (i >= 4) {
- 2e36: fef61ee3 bne a2,a5,2e32 <stbsp_vsprintfcb+0x1b64>
- 2e3a: 0025959b slliw a1,a1,0x2
- 2e3e: 9f0d subw a4,a4,a1
- while (i) {
- 2e40: e4070de3 beqz a4,2c9a <stbsp_vsprintfcb+0x19cc>
- *s++ = '0';
- 2e44: 03000513 li a0,48
- while (i) {
- 2e48: 00f705bb addw a1,a4,a5
- *s++ = '0';
- 2e4c: 0605 addi a2,a2,1
- while (i) {
- 2e4e: 00060e9b sext.w t4,a2
- *s++ = '0';
- 2e52: fea60fa3 sb a0,-1(a2)
- while (i) {
- 2e56: ffd59be3 bne a1,t4,2e4c <stbsp_vsprintfcb+0x1b7e>
- 2e5a: 1702 slli a4,a4,0x20
- 2e5c: 9301 srli a4,a4,0x20
- 2e5e: 97ba add a5,a5,a4
- 2e60: bd2d j 2c9a <stbsp_vsprintfcb+0x19cc>
- while (i >= 4) {
- 2e62: 863e mv a2,a5
- 2e64: b7c5 j 2e44 <stbsp_vsprintfcb+0x1b76>
- if ((((stbsp__uintptr)s) & 3) == 0)
- 2e66: 00377693 andi a3,a4,3
- 2e6a: ce81 beqz a3,2e82 <stbsp_vsprintfcb+0x1bb4>
- *s++ = '0';
- 2e6c: 03000693 li a3,48
- 2e70: 00d70023 sb a3,0(a4)
- --n;
- 2e74: 37fd addiw a5,a5,-1
- *s++ = '0';
- 2e76: 0705 addi a4,a4,1
- while (n) {
- 2e78: e0078663 beqz a5,2484 <stbsp_vsprintfcb+0x11b6>
- if ((((stbsp__uintptr)s) & 3) == 0)
- 2e7c: 00377613 andi a2,a4,3
- 2e80: fa65 bnez a2,2e70 <stbsp_vsprintfcb+0x1ba2>
- while (n >= 4) {
- 2e82: 468d li a3,3
- 2e84: eaf6f5e3 bgeu a3,a5,2d2e <stbsp_vsprintfcb+0x1a60>
- 2e88: ffc7869b addiw a3,a5,-4
- 2e8c: 0026d69b srliw a3,a3,0x2
- 2e90: 2685 addiw a3,a3,1
- 2e92: 068a slli a3,a3,0x2
- *(stbsp__uint32 *)s = 0x30303030;
- 2e94: 30303637 lui a2,0x30303
- 2e98: 96ba add a3,a3,a4
- 2e9a: 03060613 addi a2,a2,48 # 30303030 <_ZSt4cerr+0x302fb7a8>
- 2e9e: c310 sw a2,0(a4)
- s += 4;
- 2ea0: 0711 addi a4,a4,4
- while (n >= 4) {
- 2ea2: fed71ee3 bne a4,a3,2e9e <stbsp_vsprintfcb+0x1bd0>
- 2ea6: 8b8d andi a5,a5,3
- while (n) {
- 2ea8: e80793e3 bnez a5,2d2e <stbsp_vsprintfcb+0x1a60>
- 2eac: dd8ff06f j 2484 <stbsp_vsprintfcb+0x11b6>
- if (((stbsp__uintptr)sn & 3) == 0)
- 2eb0: 87d6 mv a5,s5
- l = stbsp__strlen_limited(s, (pr >= 0) ? pr : ~0u);
- 2eb2: 56fd li a3,-1
- 2eb4: b155 j 2b58 <stbsp_vsprintfcb+0x188a>
- if ((dp <= -4) || (dp > (stbsp__int32)n)) {
- 2eb6: 5775 li a4,-3
- 2eb8: 00e7ce63 blt a5,a4,2ed4 <stbsp_vsprintfcb+0x1c06>
- 2ebc: f6fa4663 blt s4,a5,2628 <stbsp_vsprintfcb+0x135a>
- if (dp > 0) {
- 2ec0: ecf054e3 blez a5,2d88 <stbsp_vsprintfcb+0x1aba>
- 2ec4: 86c2 mv a3,a6
- pr = (dp < (stbsp__int32)l) ? l - dp : 0;
- 2ec6: 4881 li a7,0
- 2ec8: ee9fe06f j 1db0 <stbsp_vsprintfcb+0xae2>
- while (i--)
- 2ecc: fff7869b addiw a3,a5,-1
- 2ed0: 8722 mv a4,s0
- 2ed2: b105 j 2af2 <stbsp_vsprintfcb+0x1824>
- if (pr > (stbsp__int32)l)
- 2ed4: 0008071b sext.w a4,a6
- while ((l > 1) && (pr) && (sn[l - 1] == '0')) {
- 2ed8: 7ae6 ld s5,120(sp)
- if (pr > (stbsp__int32)l)
- 2eda: 86c2 mv a3,a6
- 2edc: 88d2 mv a7,s4
- 2ede: f7475d63 bge a4,s4,2658 <stbsp_vsprintfcb+0x138a>
- while ((l > 1) && (pr) && (sn[l - 1] == '0')) {
- 2ee2: 8542 mv a0,a6
- 2ee4: f56ff06f j 263a <stbsp_vsprintfcb+0x136c>
-
-0000000000002ee8 <stbsp_sprintf>:
-{
- 2ee8: 715d addi sp,sp,-80
- va_start(va, fmt);
- 2eea: 02010313 addi t1,sp,32
-{
- 2eee: f032 sd a2,32(sp)
- 2ef0: f436 sd a3,40(sp)
- 2ef2: f83a sd a4,48(sp)
- result = STB_SPRINTF_DECORATE(vsprintfcb)(0, 0, buf, fmt, va);
- 2ef4: 86ae mv a3,a1
- 2ef6: 862a mv a2,a0
- 2ef8: 871a mv a4,t1
- 2efa: 4581 li a1,0
- 2efc: 4501 li a0,0
-{
- 2efe: ec06 sd ra,24(sp)
- 2f00: fc3e sd a5,56(sp)
- 2f02: e0c2 sd a6,64(sp)
- 2f04: e4c6 sd a7,72(sp)
- va_start(va, fmt);
- 2f06: e41a sd t1,8(sp)
- result = STB_SPRINTF_DECORATE(vsprintfcb)(0, 0, buf, fmt, va);
- 2f08: bc6fe0ef jal 12ce <stbsp_vsprintfcb>
-}
- 2f0c: 60e2 ld ra,24(sp)
- 2f0e: 6161 addi sp,sp,80
- 2f10: 8082 ret
-
-0000000000002f12 <stbsp_vsnprintf>:
-{
- 2f12: dd010113 addi sp,sp,-560
- 2f16: 22813023 sd s0,544(sp)
- 2f1a: 20913c23 sd s1,536(sp)
- 2f1e: 22113423 sd ra,552(sp)
- 2f22: 84ae mv s1,a1
- 2f24: 842a mv s0,a0
- 2f26: 88b2 mv a7,a2
- 2f28: 8736 mv a4,a3
- if ( (count == 0) && !buf )
- 2f2a: e591 bnez a1,2f36 <stbsp_vsnprintf+0x24>
- 2f2c: c141 beqz a0,2fac <stbsp_vsnprintf+0x9a>
- c.buf = buf;
- 2f2e: e02a sd a0,0(sp)
- c.count = count;
- 2f30: e402 sd zero,8(sp)
- return (c->count >= STB_SPRINTF_MIN) ? c->buf : c->tmp; // go direct into buffer if you can
- 2f32: 0810 addi a2,sp,16
- 2f34: a089 j 2f76 <stbsp_vsnprintf+0x64>
- if (len > c->count)
- 2f36: 0015a593 slti a1,a1,1
- 2f3a: 40b005bb negw a1,a1
- 2f3e: 8de5 and a1,a1,s1
- c.buf = buf;
- 2f40: e02a sd a0,0(sp)
- c.count = count;
- 2f42: c426 sw s1,8(sp)
- c.length = 0;
- 2f44: c602 sw zero,12(sp)
- if (len > c->count)
- 2f46: 2581 sext.w a1,a1
- if (len) {
- 2f48: 0804d663 bgez s1,2fd4 <stbsp_vsnprintf+0xc2>
- s = buf;
- 2f4c: 4781 li a5,0
- if (buf != c->buf) {
- 2f4e: c911 beqz a0,2f62 <stbsp_vsnprintf+0x50>
- *d++ = *s++;
- 2f50: 0007c803 lbu a6,0(a5)
- 2f54: 0785 addi a5,a5,1
- 2f56: 00f40533 add a0,s0,a5
- 2f5a: ff050fa3 sb a6,-1(a0)
- } while (s < se);
- 2f5e: feb7e9e3 bltu a5,a1,2f50 <stbsp_vsnprintf+0x3e>
- c->count -= len;
- 2f62: 40b486bb subw a3,s1,a1
- c->buf += len;
- 2f66: 95a2 add a1,a1,s0
- 2f68: e02e sd a1,0(sp)
- c->count -= len;
- 2f6a: c436 sw a3,8(sp)
- return (c->count >= STB_SPRINTF_MIN) ? c->buf : c->tmp; // go direct into buffer if you can
- 2f6c: 1ff00793 li a5,511
- 2f70: fcd7d1e3 bge a5,a3,2f32 <stbsp_vsnprintf+0x20>
- 2f74: 6602 ld a2,0(sp)
- STB_SPRINTF_DECORATE( vsprintfcb )( stbsp__clamp_callback, &c, stbsp__clamp_callback(0,&c,0), fmt, va );
- 2f76: 86c6 mv a3,a7
- 2f78: 858a mv a1,sp
- 2f7a: ffffd517 auipc a0,0xffffd
- 2f7e: 21650513 addi a0,a0,534 # 190 <stbsp__clamp_callback>
- 2f82: b4cfe0ef jal 12ce <stbsp_vsprintfcb>
- l = (int)( c.buf - buf );
- 2f86: 6782 ld a5,0(sp)
- 2f88: 9f81 subw a5,a5,s0
- if ( l >= count ) // should never be greater, only equal (or less) than count
- 2f8a: 0097c463 blt a5,s1,2f92 <stbsp_vsnprintf+0x80>
- l = count - 1;
- 2f8e: fff4879b addiw a5,s1,-1
- buf[l] = 0;
- 2f92: 943e add s0,s0,a5
- 2f94: 00040023 sb zero,0(s0)
-}
- 2f98: 22813083 ld ra,552(sp)
- 2f9c: 22013403 ld s0,544(sp)
- 2fa0: 4532 lw a0,12(sp)
- 2fa2: 21813483 ld s1,536(sp)
- 2fa6: 23010113 addi sp,sp,560
- 2faa: 8082 ret
- STB_SPRINTF_DECORATE( vsprintfcb )( stbsp__count_clamp_callback, &c, c.tmp, fmt, va );
- 2fac: 86b2 mv a3,a2
- 2fae: 858a mv a1,sp
- 2fb0: 0810 addi a2,sp,16
- 2fb2: ffffd517 auipc a0,0xffffd
- 2fb6: 22c50513 addi a0,a0,556 # 1de <stbsp__count_clamp_callback>
- c.length = 0;
- 2fba: c602 sw zero,12(sp)
- STB_SPRINTF_DECORATE( vsprintfcb )( stbsp__count_clamp_callback, &c, c.tmp, fmt, va );
- 2fbc: b12fe0ef jal 12ce <stbsp_vsprintfcb>
-}
- 2fc0: 22813083 ld ra,552(sp)
- 2fc4: 22013403 ld s0,544(sp)
- 2fc8: 4532 lw a0,12(sp)
- 2fca: 21813483 ld s1,536(sp)
- 2fce: 23010113 addi sp,sp,560
- 2fd2: 8082 ret
- 2fd4: 86a6 mv a3,s1
- 2fd6: bf59 j 2f6c <stbsp_vsnprintf+0x5a>
-
-0000000000002fd8 <stbsp_snprintf>:
-{
- 2fd8: 715d addi sp,sp,-80
- va_start(va, fmt);
- 2fda: 02810313 addi t1,sp,40
-{
- 2fde: f436 sd a3,40(sp)
- result = STB_SPRINTF_DECORATE(vsnprintf)(buf, count, fmt, va);
- 2fe0: 869a mv a3,t1
-{
- 2fe2: ec06 sd ra,24(sp)
- 2fe4: f83a sd a4,48(sp)
- 2fe6: fc3e sd a5,56(sp)
- 2fe8: e0c2 sd a6,64(sp)
- 2fea: e4c6 sd a7,72(sp)
- va_start(va, fmt);
- 2fec: e41a sd t1,8(sp)
- result = STB_SPRINTF_DECORATE(vsnprintf)(buf, count, fmt, va);
- 2fee: f25ff0ef jal 2f12 <stbsp_vsnprintf>
-}
- 2ff2: 60e2 ld ra,24(sp)
- 2ff4: 6161 addi sp,sp,80
- 2ff6: 8082 ret
-
-0000000000002ff8 <stbsp_vsprintf>:
-{
- 2ff8: 86ae mv a3,a1
- 2ffa: 8732 mv a4,a2
- return STB_SPRINTF_DECORATE(vsprintfcb)(0, 0, buf, fmt, va);
- 2ffc: 4581 li a1,0
- 2ffe: 862a mv a2,a0
- 3000: 4501 li a0,0
- 3002: accfe06f j 12ce <stbsp_vsprintfcb>
-
-0000000000003006 <sprintf>:
-{
- 3006: 7119 addi sp,sp,-128
- va_start(ap, format);
- 3008: 05010313 addi t1,sp,80
-{
- 300c: e0a2 sd s0,64(sp)
- 300e: fc26 sd s1,56(sp)
- 3010: 842a mv s0,a0
- 3012: e8b2 sd a2,80(sp)
- _vprintf_core(&ctx, format, ap);
- 3014: 0808 addi a0,sp,16
- ctx.limit = size;
- 3016: 54fd li s1,-1
- _vprintf_core(&ctx, format, ap);
- 3018: 861a mv a2,t1
-{
- 301a: e486 sd ra,72(sp)
- 301c: ecb6 sd a3,88(sp)
- 301e: f0ba sd a4,96(sp)
- 3020: f4be sd a5,104(sp)
- 3022: f8c2 sd a6,112(sp)
- 3024: fcc6 sd a7,120(sp)
- va_start(ap, format);
- 3026: e41a sd t1,8(sp)
- ctx.buf = str;
- 3028: e822 sd s0,16(sp)
- ctx.limit = size;
- 302a: ec26 sd s1,24(sp)
- ctx.written = 0;
- 302c: f002 sd zero,32(sp)
- ctx.stream = NULL;
- 302e: f402 sd zero,40(sp)
- _vprintf_core(&ctx, format, ap);
- 3030: 02c000ef jal 305c <_vprintf_core.constprop.0.isra.0>
- if (ctx.written < size)
- 3034: 7502 ld a0,32(sp)
- 3036: 00950b63 beq a0,s1,304c <sprintf+0x46>
- str[ctx.written] = '\0';
- 303a: 942a add s0,s0,a0
- 303c: 00040023 sb zero,0(s0)
-}
- 3040: 60a6 ld ra,72(sp)
- 3042: 6406 ld s0,64(sp)
- 3044: 74e2 ld s1,56(sp)
- 3046: 2501 sext.w a0,a0
- 3048: 6109 addi sp,sp,128
- 304a: 8082 ret
- str[size - 1] = '\0';
- 304c: fe040f23 sb zero,-2(s0)
-}
- 3050: 60a6 ld ra,72(sp)
- 3052: 6406 ld s0,64(sp)
- 3054: 74e2 ld s1,56(sp)
- 3056: 2501 sext.w a0,a0
- 3058: 6109 addi sp,sp,128
- 305a: 8082 ret
-
-000000000000305c <_vprintf_core.constprop.0.isra.0>:
-static int _vprintf_core(_OutContext *ctx, const char *format, va_list ap)
- 305c: 7129 addi sp,sp,-320
- 305e: edee sd s11,216(sp)
- 3060: fe06 sd ra,312(sp)
- 3062: 8dae mv s11,a1
- while (*p)
- 3064: 0005c583 lbu a1,0(a1)
- 3068: cde9 beqz a1,3142 <_vprintf_core.constprop.0.isra.0+0xe6>
- 306a: f626 sd s1,296(sp)
- 306c: f24a sd s2,288(sp)
- 306e: ee4e sd s3,280(sp)
- 3070: e656 sd s5,264(sp)
- 3072: f9e2 sd s8,240(sp)
- 3074: fa22 sd s0,304(sp)
- 3076: ea52 sd s4,272(sp)
- 3078: e25a sd s6,256(sp)
- 307a: fdde sd s7,248(sp)
- 307c: f5e6 sd s9,232(sp)
- 307e: f1ea sd s10,224(sp)
- 3080: 84aa mv s1,a0
- 3082: 8c32 mv s8,a2
- if (*p != '%')
- 3084: 02500a93 li s5,37
- 3088: 49c1 li s3,16
- 308a: 00002917 auipc s2,0x2
- 308e: 32a90913 addi s2,s2,810 # 53b4 <_GLOBAL__sub_I__ZSt3cin+0x3c4>
- 3092: a039 j 30a0 <_vprintf_core.constprop.0.isra.0+0x44>
- _out_char(ctx, spec);
- 3094: 8526 mv a0,s1
- 3096: 952fe0ef jal 11e8 <_out_char>
- while (*p)
- 309a: 000dc583 lbu a1,0(s11)
- 309e: c5d9 beqz a1,312c <_vprintf_core.constprop.0.isra.0+0xd0>
- _out_char(ctx, *p++);
- 30a0: 0d85 addi s11,s11,1
- if (*p != '%')
- 30a2: ff5599e3 bne a1,s5,3094 <_vprintf_core.constprop.0.isra.0+0x38>
- int flag_left = 0, flag_zero = 0, flag_plus = 0, flag_space = 0, flag_hash = 0;
- 30a6: 4501 li a0,0
- 30a8: 4881 li a7,0
- 30aa: 4581 li a1,0
- 30ac: 4b01 li s6,0
- 30ae: 4a01 li s4,0
- if (*p == '-')
- 30b0: 000dcc83 lbu s9,0(s11)
- 30b4: fe0c871b addiw a4,s9,-32
- 30b8: 0ff77713 zext.b a4,a4
- 30bc: 00e9e763 bltu s3,a4,30ca <_vprintf_core.constprop.0.isra.0+0x6e>
- 30c0: 070a slli a4,a4,0x2
- 30c2: 974a add a4,a4,s2
- 30c4: 4318 lw a4,0(a4)
- 30c6: 974a add a4,a4,s2
- 30c8: 8702 jr a4
- if (*p == '*')
- 30ca: 02a00793 li a5,42
- 30ce: 16fc9c63 bne s9,a5,3246 <_vprintf_core.constprop.0.isra.0+0x1ea>
- width = va_arg(ap, int);
- 30d2: 000c2403 lw s0,0(s8)
- 30d6: 0c21 addi s8,s8,8
- if (width < 0)
- 30d8: 00045563 bgez s0,30e2 <_vprintf_core.constprop.0.isra.0+0x86>
- width = -width;
- 30dc: 4080043b negw s0,s0
- flag_left = 1;
- 30e0: 4a05 li s4,1
- while (*p >= '0' && *p <= '9')
- 30e2: 001dcc83 lbu s9,1(s11)
- p++;
- 30e6: 0d85 addi s11,s11,1
- if (*p == '.')
- 30e8: 02e00793 li a5,46
- int precision = -1;
- 30ec: 5bfd li s7,-1
- if (*p == '.')
- 30ee: 18fc8a63 beq s9,a5,3282 <_vprintf_core.constprop.0.isra.0+0x226>
- if (*p == 'l')
- 30f2: 06c00693 li a3,108
- 30f6: 8666 mv a2,s9
- 30f8: 1adc8663 beq s9,a3,32a4 <_vprintf_core.constprop.0.isra.0+0x248>
- else if (*p == 'z')
- 30fc: 07a00693 li a3,122
- p++;
- 3100: 0d85 addi s11,s11,1
- else if (*p == 'z')
- 3102: 24dc8163 beq s9,a3,3344 <_vprintf_core.constprop.0.isra.0+0x2e8>
- if (!spec)
- 3106: 06400693 li a3,100
- 310a: 4adc8163 beq s9,a3,35ac <_vprintf_core.constprop.0.isra.0+0x550>
- 310e: 06400693 li a3,100
- int len_mod = 0;
- 3112: 4e81 li t4,0
- 3114: 1b96e663 bltu a3,s9,32c0 <_vprintf_core.constprop.0.isra.0+0x264>
- 3118: 04700693 li a3,71
- 311c: 2796e463 bltu a3,s9,3384 <_vprintf_core.constprop.0.isra.0+0x328>
- 3120: 04400693 li a3,68
- 3124: 0596e363 bltu a3,s9,316a <_vprintf_core.constprop.0.isra.0+0x10e>
- 3128: 240c9363 bnez s9,336e <_vprintf_core.constprop.0.isra.0+0x312>
- 312c: 7452 ld s0,304(sp)
- 312e: 74b2 ld s1,296(sp)
- 3130: 7912 ld s2,288(sp)
- 3132: 69f2 ld s3,280(sp)
- 3134: 6a52 ld s4,272(sp)
- 3136: 6ab2 ld s5,264(sp)
- 3138: 6b12 ld s6,256(sp)
- 313a: 7bee ld s7,248(sp)
- 313c: 7c4e ld s8,240(sp)
- 313e: 7cae ld s9,232(sp)
- 3140: 7d0e ld s10,224(sp)
-}
- 3142: 70f2 ld ra,312(sp)
- 3144: 6dee ld s11,216(sp)
- 3146: 6131 addi sp,sp,320
- 3148: 8082 ret
- if (*p == '-')
- 314a: 4585 li a1,1
- p++;
- 314c: 0d85 addi s11,s11,1
- if (*p == '-')
- 314e: b78d j 30b0 <_vprintf_core.constprop.0.isra.0+0x54>
- 3150: 4505 li a0,1
- p++;
- 3152: 0d85 addi s11,s11,1
- while (1)
- 3154: bfb1 j 30b0 <_vprintf_core.constprop.0.isra.0+0x54>
- if (*p == '-')
- 3156: 4885 li a7,1
- p++;
- 3158: 0d85 addi s11,s11,1
- while (1)
- 315a: bf99 j 30b0 <_vprintf_core.constprop.0.isra.0+0x54>
- if (*p == '-')
- 315c: 4b05 li s6,1
- p++;
- 315e: 0d85 addi s11,s11,1
- while (1)
- 3160: bf81 j 30b0 <_vprintf_core.constprop.0.isra.0+0x54>
- if (*p == '-')
- 3162: 4a05 li s4,1
- p++;
- 3164: 0d85 addi s11,s11,1
- while (1)
- 3166: b7a9 j 30b0 <_vprintf_core.constprop.0.isra.0+0x54>
- char spec = *p++;
- 3168: 8dbe mv s11,a5
- fmt_tmp[f_idx++] = '%';
- 316a: 02500693 li a3,37
- 316e: 02d10823 sb a3,48(sp)
- 3172: 4d05 li s10,1
- if (flag_left)
- 3174: 000a0763 beqz s4,3182 <_vprintf_core.constprop.0.isra.0+0x126>
- fmt_tmp[f_idx++] = '-';
- 3178: 02d00693 li a3,45
- 317c: 02d108a3 sb a3,49(sp)
- 3180: 4d09 li s10,2
- if (flag_zero)
- 3182: 000b0c63 beqz s6,319a <_vprintf_core.constprop.0.isra.0+0x13e>
- fmt_tmp[f_idx++] = '0';
- 3186: 0c0d0793 addi a5,s10,192
- 318a: 0818 addi a4,sp,16
- 318c: 00e786b3 add a3,a5,a4
- 3190: 03000613 li a2,48
- 3194: f6c68023 sb a2,-160(a3)
- 3198: 2d05 addiw s10,s10,1
- if (flag_plus)
- 319a: c999 beqz a1,31b0 <_vprintf_core.constprop.0.isra.0+0x154>
- fmt_tmp[f_idx++] = '+';
- 319c: 0c0d0793 addi a5,s10,192
- 31a0: 0818 addi a4,sp,16
- 31a2: 00e786b3 add a3,a5,a4
- 31a6: 02b00613 li a2,43
- 31aa: f6c68023 sb a2,-160(a3)
- 31ae: 2d05 addiw s10,s10,1
- if (flag_space)
- 31b0: 00088c63 beqz a7,31c8 <_vprintf_core.constprop.0.isra.0+0x16c>
- fmt_tmp[f_idx++] = ' ';
- 31b4: 0c0d0793 addi a5,s10,192
- 31b8: 0818 addi a4,sp,16
- 31ba: 00e786b3 add a3,a5,a4
- 31be: 02000613 li a2,32
- 31c2: f6c68023 sb a2,-160(a3)
- 31c6: 2d05 addiw s10,s10,1
- if (flag_hash)
- 31c8: c919 beqz a0,31de <_vprintf_core.constprop.0.isra.0+0x182>
- fmt_tmp[f_idx++] = '#';
- 31ca: 0c0d0793 addi a5,s10,192
- 31ce: 0818 addi a4,sp,16
- 31d0: 00e786b3 add a3,a5,a4
- 31d4: 02300613 li a2,35
- 31d8: f6c68023 sb a2,-160(a3)
- 31dc: 2d05 addiw s10,s10,1
- if (width > 0)
- 31de: 03010a13 addi s4,sp,48
- 31e2: 28804563 bgtz s0,346c <_vprintf_core.constprop.0.isra.0+0x410>
- if (precision >= 0)
- 31e6: 260bd763 bgez s7,3454 <_vprintf_core.constprop.0.isra.0+0x3f8>
- fmt_tmp[f_idx++] = spec;
- 31ea: 0c0d0793 addi a5,s10,192
- 31ee: 0818 addi a4,sp,16
- 31f0: 00e78633 add a2,a5,a4
- stbsp_snprintf(f_buf, sizeof(f_buf), fmt_tmp, f_val);
- 31f4: 000c3683 ld a3,0(s8)
- fmt_tmp[f_idx] = '\0';
- 31f8: 001d071b addiw a4,s10,1
- 31fc: 0c070793 addi a5,a4,192
- 3200: 0818 addi a4,sp,16
- fmt_tmp[f_idx++] = spec;
- 3202: f7960023 sb s9,-160(a2)
- fmt_tmp[f_idx] = '\0';
- 3206: 973e add a4,a4,a5
- stbsp_snprintf(f_buf, sizeof(f_buf), fmt_tmp, f_val);
- 3208: 08000593 li a1,128
- 320c: 8652 mv a2,s4
- 320e: 0888 addi a0,sp,80
- fmt_tmp[f_idx] = '\0';
- 3210: f6070023 sb zero,-160(a4)
- stbsp_snprintf(f_buf, sizeof(f_buf), fmt_tmp, f_val);
- 3214: dc5ff0ef jal 2fd8 <stbsp_snprintf>
- for (int i = 0; f_buf[i] != '\0'; i++)
- 3218: 05014583 lbu a1,80(sp)
- double f_val = va_arg(ap, double);
- 321c: 0c21 addi s8,s8,8
- for (int i = 0; f_buf[i] != '\0'; i++)
- 321e: 05110413 addi s0,sp,81
- 3222: e6058ce3 beqz a1,309a <_vprintf_core.constprop.0.isra.0+0x3e>
- _out_char(ctx, f_buf[i]);
- 3226: 8526 mv a0,s1
- 3228: fc1fd0ef jal 11e8 <_out_char>
- for (int i = 0; f_buf[i] != '\0'; i++)
- 322c: 00044583 lbu a1,0(s0)
- 3230: 0405 addi s0,s0,1
- 3232: e60584e3 beqz a1,309a <_vprintf_core.constprop.0.isra.0+0x3e>
- _out_char(ctx, f_buf[i]);
- 3236: 8526 mv a0,s1
- 3238: fb1fd0ef jal 11e8 <_out_char>
- for (int i = 0; f_buf[i] != '\0'; i++)
- 323c: 00044583 lbu a1,0(s0)
- 3240: 0405 addi s0,s0,1
- 3242: f1f5 bnez a1,3226 <_vprintf_core.constprop.0.isra.0+0x1ca>
- 3244: bd99 j 309a <_vprintf_core.constprop.0.isra.0+0x3e>
- while (*p >= '0' && *p <= '9')
- 3246: fd0c869b addiw a3,s9,-48
- 324a: 0ff6f313 zext.b t1,a3
- 324e: 4725 li a4,9
- int width = 0;
- 3250: 4401 li s0,0
- while (*p >= '0' && *p <= '9')
- 3252: 4625 li a2,9
- 3254: e8676ae3 bltu a4,t1,30e8 <_vprintf_core.constprop.0.isra.0+0x8c>
- 3258: 001dcc83 lbu s9,1(s11)
- width = width * 10 + (*p - '0');
- 325c: 0024171b slliw a4,s0,0x2
- 3260: 9f21 addw a4,a4,s0
- 3262: 0017171b slliw a4,a4,0x1
- 3266: 00e6843b addw s0,a3,a4
- while (*p >= '0' && *p <= '9')
- 326a: fd0c869b addiw a3,s9,-48
- 326e: 0ff6f713 zext.b a4,a3
- p++;
- 3272: 0d85 addi s11,s11,1
- while (*p >= '0' && *p <= '9')
- 3274: fee672e3 bgeu a2,a4,3258 <_vprintf_core.constprop.0.isra.0+0x1fc>
- if (*p == '.')
- 3278: 02e00793 li a5,46
- int precision = -1;
- 327c: 5bfd li s7,-1
- if (*p == '.')
- 327e: e6fc9ae3 bne s9,a5,30f2 <_vprintf_core.constprop.0.isra.0+0x96>
- if (*p == '*')
- 3282: 001dcc83 lbu s9,1(s11)
- 3286: 02a00793 li a5,42
- 328a: 16fc9f63 bne s9,a5,3408 <_vprintf_core.constprop.0.isra.0+0x3ac>
- while (*p >= '0' && *p <= '9')
- 328e: 002dcc83 lbu s9,2(s11)
- if (*p == 'l')
- 3292: 06c00693 li a3,108
- precision = va_arg(ap, int);
- 3296: 000c2b83 lw s7,0(s8)
- p++;
- 329a: 0d89 addi s11,s11,2
- precision = va_arg(ap, int);
- 329c: 0c21 addi s8,s8,8
- if (*p == 'l')
- 329e: 8666 mv a2,s9
- 32a0: e4dc9ee3 bne s9,a3,30fc <_vprintf_core.constprop.0.isra.0+0xa0>
- if (*p == 'l')
- 32a4: 001dcc83 lbu s9,1(s11)
- 32a8: 08cc8d63 beq s9,a2,3342 <_vprintf_core.constprop.0.isra.0+0x2e6>
- char spec = *p++;
- 32ac: 06400693 li a3,100
- 32b0: 0d89 addi s11,s11,2
- if (!spec)
- 32b2: 4cdc8c63 beq s9,a3,378a <_vprintf_core.constprop.0.isra.0+0x72e>
- 32b6: 06400693 li a3,100
- len_mod = 1;
- 32ba: 4e85 li t4,1
- 32bc: e596fee3 bgeu a3,s9,3118 <_vprintf_core.constprop.0.isra.0+0xbc>
- 32c0: f9bc869b addiw a3,s9,-101
- 32c4: 0ff6f693 zext.b a3,a3
- 32c8: 464d li a2,19
- 32ca: 12d66863 bltu a2,a3,33fa <_vprintf_core.constprop.0.isra.0+0x39e>
- 32ce: 4e05 li t3,1
- 32d0: 00091637 lui a2,0x91
- 32d4: 00de1333 sll t1,t3,a3
- 32d8: 81060613 addi a2,a2,-2032 # 90810 <_ZSt4cerr+0x88f88>
- 32dc: 00c37633 and a2,t1,a2
- 32e0: 1a061463 bnez a2,3488 <_vprintf_core.constprop.0.isra.0+0x42c>
- 32e4: 00737313 andi t1,t1,7
- 32e8: e80311e3 bnez t1,316a <_vprintf_core.constprop.0.isra.0+0x10e>
- 32ec: 4639 li a2,14
- 32ee: 10c69663 bne a3,a2,33fa <_vprintf_core.constprop.0.isra.0+0x39e>
- const char *s = va_arg(ap, char *);
- 32f2: 000c3c83 ld s9,0(s8)
- if (!s)
- 32f6: 420c8863 beqz s9,3726 <_vprintf_core.constprop.0.isra.0+0x6ca>
- while (*tmp && (precision < 0 || len < precision))
- 32fa: 000cc683 lbu a3,0(s9)
- 32fe: 38068863 beqz a3,368e <_vprintf_core.constprop.0.isra.0+0x632>
- const char *tmp = s;
- 3302: 8666 mv a2,s9
- int len = 0;
- 3304: 4681 li a3,0
- while (*tmp && (precision < 0 || len < precision))
- 3306: 00db8863 beq s7,a3,3316 <_vprintf_core.constprop.0.isra.0+0x2ba>
- 330a: 00164583 lbu a1,1(a2)
- len++;
- 330e: 2685 addiw a3,a3,1
- tmp++;
- 3310: 0605 addi a2,a2,1
- while (*tmp && (precision < 0 || len < precision))
- 3312: f9f5 bnez a1,3306 <_vprintf_core.constprop.0.isra.0+0x2aa>
- 3314: 8bb6 mv s7,a3
- int padding = (width > len) ? width - len : 0;
- 3316: 268bc563 blt s7,s0,3580 <_vprintf_core.constprop.0.isra.0+0x524>
- for (int i = 0; i < len; i++)
- 331a: 4401 li s0,0
- 331c: 020b8163 beqz s7,333e <_vprintf_core.constprop.0.isra.0+0x2e2>
- 3320: 4d01 li s10,0
- _out_char(ctx, s[i]);
- 3322: 01ac86b3 add a3,s9,s10
- 3326: 0006c583 lbu a1,0(a3)
- 332a: 8526 mv a0,s1
- for (int i = 0; i < len; i++)
- 332c: 0d05 addi s10,s10,1
- _out_char(ctx, s[i]);
- 332e: ebbfd0ef jal 11e8 <_out_char>
- for (int i = 0; i < len; i++)
- 3332: 000d069b sext.w a3,s10
- 3336: ff76c6e3 blt a3,s7,3322 <_vprintf_core.constprop.0.isra.0+0x2c6>
- if (flag_left)
- 333a: 260a1463 bnez s4,35a2 <_vprintf_core.constprop.0.isra.0+0x546>
- const char *s = va_arg(ap, char *);
- 333e: 0c21 addi s8,s8,8
- 3340: bba9 j 309a <_vprintf_core.constprop.0.isra.0+0x3e>
- p++;
- 3342: 0d89 addi s11,s11,2
- char spec = *p++;
- 3344: 000dcc83 lbu s9,0(s11)
- 3348: 06400693 li a3,100
- 334c: 001d8793 addi a5,s11,1
- if (!spec)
- 3350: 3edc8063 beq s9,a3,3730 <_vprintf_core.constprop.0.isra.0+0x6d4>
- 3354: 0796ea63 bltu a3,s9,33c8 <_vprintf_core.constprop.0.isra.0+0x36c>
- 3358: 04700693 li a3,71
- 335c: 0f96e263 bltu a3,s9,3440 <_vprintf_core.constprop.0.isra.0+0x3e4>
- 3360: 04400693 li a3,68
- 3364: e196e2e3 bltu a3,s9,3168 <_vprintf_core.constprop.0.isra.0+0x10c>
- 3368: dc0c82e3 beqz s9,312c <_vprintf_core.constprop.0.isra.0+0xd0>
- char spec = *p++;
- 336c: 8dbe mv s11,a5
- _out_char(ctx, '%');
- 336e: 02500593 li a1,37
- 3372: 8526 mv a0,s1
- 3374: e75fd0ef jal 11e8 <_out_char>
- if (spec != '%')
- 3378: 02500713 li a4,37
- 337c: d0ec8fe3 beq s9,a4,309a <_vprintf_core.constprop.0.isra.0+0x3e>
- _out_char(ctx, spec);
- 3380: 85e6 mv a1,s9
- 3382: bb09 j 3094 <_vprintf_core.constprop.0.isra.0+0x38>
- 3384: 05800693 li a3,88
- 3388: 2edc8263 beq s9,a3,366c <_vprintf_core.constprop.0.isra.0+0x610>
- 338c: 06300713 li a4,99
- 3390: 06ec9563 bne s9,a4,33fa <_vprintf_core.constprop.0.isra.0+0x39e>
- char c = (char)va_arg(ap, int);
- 3394: 000c4c83 lbu s9,0(s8)
- int padding = (width > 1) ? width - 1 : 0;
- 3398: 8722 mv a4,s0
- 339a: 00804363 bgtz s0,33a0 <_vprintf_core.constprop.0.isra.0+0x344>
- 339e: 4705 li a4,1
- 33a0: fff7041b addiw s0,a4,-1
- if (!flag_left)
- 33a4: 3c0a0463 beqz s4,376c <_vprintf_core.constprop.0.isra.0+0x710>
- _out_char(ctx, c);
- 33a8: 85e6 mv a1,s9
- 33aa: 8526 mv a0,s1
- 33ac: e3dfd0ef jal 11e8 <_out_char>
- for (int i = 0; i < padding; i++)
- 33b0: 4a01 li s4,0
- 33b2: d451 beqz s0,333e <_vprintf_core.constprop.0.isra.0+0x2e2>
- _out_char(ctx, ' ');
- 33b4: 02000593 li a1,32
- 33b8: 8526 mv a0,s1
- for (int i = 0; i < padding; i++)
- 33ba: 2a05 addiw s4,s4,1
- _out_char(ctx, ' ');
- 33bc: e2dfd0ef jal 11e8 <_out_char>
- for (int i = 0; i < padding; i++)
- 33c0: ff441ae3 bne s0,s4,33b4 <_vprintf_core.constprop.0.isra.0+0x358>
- const char *s = va_arg(ap, char *);
- 33c4: 0c21 addi s8,s8,8
- 33c6: b9d1 j 309a <_vprintf_core.constprop.0.isra.0+0x3e>
- 33c8: f9bc861b addiw a2,s9,-101
- 33cc: 0ff67613 zext.b a2,a2
- 33d0: 46cd li a3,19
- 33d2: 40c6e963 bltu a3,a2,37e4 <_vprintf_core.constprop.0.isra.0+0x788>
- 33d6: 00091337 lui t1,0x91
- 33da: 4685 li a3,1
- 33dc: 00c696b3 sll a3,a3,a2
- 33e0: 81030313 addi t1,t1,-2032 # 90810 <_ZSt4cerr+0x88f88>
- 33e4: 0066f333 and t1,a3,t1
- 33e8: 34031c63 bnez t1,3740 <_vprintf_core.constprop.0.isra.0+0x6e4>
- 33ec: 8a9d andi a3,a3,7
- 33ee: d6069de3 bnez a3,3168 <_vprintf_core.constprop.0.isra.0+0x10c>
- 33f2: 46b9 li a3,14
- char spec = *p++;
- 33f4: 8dbe mv s11,a5
- 33f6: eed60ee3 beq a2,a3,32f2 <_vprintf_core.constprop.0.isra.0+0x296>
- _out_char(ctx, '%');
- 33fa: 02500593 li a1,37
- 33fe: 8526 mv a0,s1
- 3400: de9fd0ef jal 11e8 <_out_char>
- _out_char(ctx, spec);
- 3404: 85e6 mv a1,s9
- 3406: b179 j 3094 <_vprintf_core.constprop.0.isra.0+0x38>
- while (*p >= '0' && *p <= '9')
- 3408: fd0c869b addiw a3,s9,-48
- 340c: 0ff6fe13 zext.b t3,a3
- 3410: 4625 li a2,9
- p++;
- 3412: 0d85 addi s11,s11,1
- precision = 0;
- 3414: 4b81 li s7,0
- while (*p >= '0' && *p <= '9')
- 3416: 4325 li t1,9
- 3418: cdc66de3 bltu a2,t3,30f2 <_vprintf_core.constprop.0.isra.0+0x96>
- precision = precision * 10 + (*p - '0');
- 341c: 002b961b slliw a2,s7,0x2
- while (*p >= '0' && *p <= '9')
- 3420: 001dcc83 lbu s9,1(s11)
- precision = precision * 10 + (*p - '0');
- 3424: 0176073b addw a4,a2,s7
- 3428: 0017171b slliw a4,a4,0x1
- 342c: 00e68bbb addw s7,a3,a4
- while (*p >= '0' && *p <= '9')
- 3430: fd0c869b addiw a3,s9,-48
- 3434: 0ff6f613 zext.b a2,a3
- p++;
- 3438: 0d85 addi s11,s11,1
- while (*p >= '0' && *p <= '9')
- 343a: fec371e3 bgeu t1,a2,341c <_vprintf_core.constprop.0.isra.0+0x3c0>
- 343e: b955 j 30f2 <_vprintf_core.constprop.0.isra.0+0x96>
- 3440: 05800693 li a3,88
- 3444: 3cdc8d63 beq s9,a3,381e <_vprintf_core.constprop.0.isra.0+0x7c2>
- 3448: 06300713 li a4,99
- char spec = *p++;
- 344c: 8dbe mv s11,a5
- 344e: f4ec83e3 beq s9,a4,3394 <_vprintf_core.constprop.0.isra.0+0x338>
- 3452: b765 j 33fa <_vprintf_core.constprop.0.isra.0+0x39e>
- f_idx += sprintf(&fmt_tmp[f_idx], ".%d", precision);
- 3454: 01aa0533 add a0,s4,s10
- 3458: 865e mv a2,s7
- 345a: 00002597 auipc a1,0x2
- 345e: cde58593 addi a1,a1,-802 # 5138 <_GLOBAL__sub_I__ZSt3cin+0x148>
- 3462: ba5ff0ef jal 3006 <sprintf>
- 3466: 00ad0d3b addw s10,s10,a0
- 346a: b341 j 31ea <_vprintf_core.constprop.0.isra.0+0x18e>
- f_idx += sprintf(&fmt_tmp[f_idx], "%d", width);
- 346c: 01aa0533 add a0,s4,s10
- 3470: 8622 mv a2,s0
- 3472: 00002597 auipc a1,0x2
- 3476: cbe58593 addi a1,a1,-834 # 5130 <_GLOBAL__sub_I__ZSt3cin+0x140>
- 347a: b8dff0ef jal 3006 <sprintf>
- 347e: 00ad0d3b addw s10,s10,a0
- if (precision >= 0)
- 3482: d60bc4e3 bltz s7,31ea <_vprintf_core.constprop.0.isra.0+0x18e>
- 3486: b7f9 j 3454 <_vprintf_core.constprop.0.isra.0+0x3f8>
- int is_signed = (spec == 'd' || spec == 'i');
- 3488: 06900693 li a3,105
- 348c: 10dc8e63 beq s9,a3,35a8 <_vprintf_core.constprop.0.isra.0+0x54c>
- val = (uint64)va_arg(ap, void *);
- 3490: 008c0793 addi a5,s8,8
- int base = (spec == 'x' || spec == 'X' || spec == 'p') ? 16 : 10;
- 3494: 07800693 li a3,120
- val = (uint64)va_arg(ap, void *);
- 3498: e43e sd a5,8(sp)
- int base = (spec == 'x' || spec == 'X' || spec == 'p') ? 16 : 10;
- 349a: 38dc9d63 bne s9,a3,3834 <_vprintf_core.constprop.0.isra.0+0x7d8>
- else if (len_mod == 1)
- 349e: 33ce8963 beq t4,t3,37d0 <_vprintf_core.constprop.0.isra.0+0x774>
- val = is_signed ? (uint64)((int64)va_arg(ap, int)) : (uint64)va_arg(ap, uint32);
- 34a2: 000c6e03 lwu t3,0(s8)
- 34a6: 85f6 mv a1,t4
- 34a8: e002 sd zero,0(sp)
- int base = (spec == 'x' || spec == 'X' || spec == 'p') ? 16 : 10;
- 34aa: 4341 li t1,16
- const char *digits = uppercase ? "0123456789ABCDEF" : "0123456789abcdef";
- 34ac: 00002f97 auipc t6,0x2
- 34b0: c54f8f93 addi t6,t6,-940 # 5100 <_GLOBAL__sub_I__ZSt3cin+0x110>
- if (val == 0)
- 34b4: 120e0363 beqz t3,35da <_vprintf_core.constprop.0.isra.0+0x57e>
- 34b8: 01010293 addi t0,sp,16
- sign_char = '-';
- 34bc: 8616 mv a2,t0
- 34be: 86f2 mv a3,t3
- buf[i++] = digits[val % base];
- 34c0: 0266f8b3 remu a7,a3,t1
- 34c4: 8f32 mv t5,a2
- while (val != 0)
- 34c6: 0605 addi a2,a2,1
- 34c8: 8eb6 mv t4,a3
- buf[i++] = digits[val % base];
- 34ca: 98fe add a7,a7,t6
- 34cc: 0008c883 lbu a7,0(a7)
- val /= base;
- 34d0: 0266d6b3 divu a3,a3,t1
- buf[i++] = digits[val % base];
- 34d4: ff160fa3 sb a7,-1(a2)
- while (val != 0)
- 34d8: fe6ef4e3 bgeu t4,t1,34c0 <_vprintf_core.constprop.0.isra.0+0x464>
- buf[i++] = digits[val % base];
- 34dc: 405f0f3b subw t5,t5,t0
- 34e0: 2f05 addiw t5,t5,1
- if (precision >= 0)
- 34e2: 100bc363 bltz s7,35e8 <_vprintf_core.constprop.0.isra.0+0x58c>
- int prec_zeros = (precision > digit_len) ? precision - digit_len : 0;
- 34e6: 1d7f4d63 blt t5,s7,36c0 <_vprintf_core.constprop.0.isra.0+0x664>
- if (precision == 0 && val == 0)
- 34ea: 340b9163 bnez s7,382c <_vprintf_core.constprop.0.isra.0+0x7d0>
- 34ee: 200e0763 beqz t3,36fc <_vprintf_core.constprop.0.isra.0+0x6a0>
- for (int i = digit_len - 1; i >= 0; i--)
- 34f2: ffff0c1b addiw s8,t5,-1
- if (spec == 'p' || (flag_hash && val != 0 && (spec == 'x' || spec == 'X')))
- 34f6: 07000693 li a3,112
- for (int i = digit_len - 1; i >= 0; i--)
- 34fa: 8662 mv a2,s8
- if (spec == 'p' || (flag_hash && val != 0 && (spec == 'x' || spec == 'X')))
- 34fc: 28dc8e63 beq s9,a3,3798 <_vprintf_core.constprop.0.isra.0+0x73c>
- 3500: 2a051663 bnez a0,37ac <_vprintf_core.constprop.0.isra.0+0x750>
- int padding = (width > prefix_len + prec_zeros + digit_len) ? width - (prefix_len + prec_zeros + digit_len) : 0;
- 3504: 00bf05bb addw a1,t5,a1
- 3508: 8d52 mv s10,s4
- 350a: 4b01 li s6,0
- char *prefix_str = NULL;
- 350c: 4c81 li s9,0
- int padding = (width > prefix_len + prec_zeros + digit_len) ? width - (prefix_len + prec_zeros + digit_len) : 0;
- 350e: 1085d263 bge a1,s0,3612 <_vprintf_core.constprop.0.isra.0+0x5b6>
- 3512: 9c0d subw s0,s0,a1
- if (!flag_left && !flag_zero)
- 3514: 100d0a63 beqz s10,3628 <_vprintf_core.constprop.0.isra.0+0x5cc>
- if (sign_char)
- 3518: 6782 ld a5,0(sp)
- 351a: 10079263 bnez a5,361e <_vprintf_core.constprop.0.isra.0+0x5c2>
- if (prefix_str)
- 351e: 000c8c63 beqz s9,3536 <_vprintf_core.constprop.0.isra.0+0x4da>
- _out_char(ctx, prefix_str[0]);
- 3522: 000cc583 lbu a1,0(s9)
- 3526: 8526 mv a0,s1
- 3528: cc1fd0ef jal 11e8 <_out_char>
- _out_char(ctx, prefix_str[1]);
- 352c: 001cc583 lbu a1,1(s9)
- 3530: 8526 mv a0,s1
- 3532: cb7fd0ef jal 11e8 <_out_char>
- int total_zeros = prec_zeros + ((flag_zero && !flag_left) ? padding : 0);
- 3536: 180b0263 beqz s6,36ba <_vprintf_core.constprop.0.isra.0+0x65e>
- 353a: 100a1863 bnez s4,364a <_vprintf_core.constprop.0.isra.0+0x5ee>
- 353e: 008b8bbb addw s7,s7,s0
- for (int i = 0; i < total_zeros; i++)
- 3542: 2a0b8363 beqz s7,37e8 <_vprintf_core.constprop.0.isra.0+0x78c>
- 3546: 4c81 li s9,0
- _out_char(ctx, '0');
- 3548: 03000593 li a1,48
- 354c: 8526 mv a0,s1
- for (int i = 0; i < total_zeros; i++)
- 354e: 2c85 addiw s9,s9,1
- _out_char(ctx, '0');
- 3550: c99fd0ef jal 11e8 <_out_char>
- for (int i = 0; i < total_zeros; i++)
- 3554: ff7c9ae3 bne s9,s7,3548 <_vprintf_core.constprop.0.isra.0+0x4ec>
- for (int i = digit_len - 1; i >= 0; i--)
- 3558: 57fd li a5,-1
- 355a: 00fc0f63 beq s8,a5,3578 <_vprintf_core.constprop.0.isra.0+0x51c>
- 355e: 01010c93 addi s9,sp,16
- 3562: 9ce2 add s9,s9,s8
- 3564: 00f10c13 addi s8,sp,15
- _out_char(ctx, num_buf[i]);
- 3568: 000cc583 lbu a1,0(s9)
- 356c: 8526 mv a0,s1
- for (int i = digit_len - 1; i >= 0; i--)
- 356e: 1cfd addi s9,s9,-1
- _out_char(ctx, num_buf[i]);
- 3570: c79fd0ef jal 11e8 <_out_char>
- for (int i = digit_len - 1; i >= 0; i--)
- 3574: ff9c1ae3 bne s8,s9,3568 <_vprintf_core.constprop.0.isra.0+0x50c>
- if (flag_left)
- 3578: 0c0a1e63 bnez s4,3654 <_vprintf_core.constprop.0.isra.0+0x5f8>
- char spec = *p++;
- 357c: 6c22 ld s8,8(sp)
- 357e: be31 j 309a <_vprintf_core.constprop.0.isra.0+0x3e>
- int padding = (width > len) ? width - len : 0;
- 3580: 4174043b subw s0,s0,s7
- if (!flag_left)
- 3584: 100a0a63 beqz s4,3698 <_vprintf_core.constprop.0.isra.0+0x63c>
- for (int i = 0; i < len; i++)
- 3588: d80b9ce3 bnez s7,3320 <_vprintf_core.constprop.0.isra.0+0x2c4>
- for (int i = 0; i < padding; i++)
- 358c: 4a01 li s4,0
- _out_char(ctx, ' ');
- 358e: 02000593 li a1,32
- 3592: 8526 mv a0,s1
- for (int i = 0; i < padding; i++)
- 3594: 2a05 addiw s4,s4,1
- _out_char(ctx, ' ');
- 3596: c53fd0ef jal 11e8 <_out_char>
- for (int i = 0; i < padding; i++)
- 359a: ff441ae3 bne s0,s4,358e <_vprintf_core.constprop.0.isra.0+0x532>
- const char *s = va_arg(ap, char *);
- 359e: 0c21 addi s8,s8,8
- 35a0: bced j 309a <_vprintf_core.constprop.0.isra.0+0x3e>
- for (int i = 0; i < padding; i++)
- 35a2: f46d bnez s0,358c <_vprintf_core.constprop.0.isra.0+0x530>
- const char *s = va_arg(ap, char *);
- 35a4: 0c21 addi s8,s8,8
- 35a6: bcd5 j 309a <_vprintf_core.constprop.0.isra.0+0x3e>
- else if (len_mod == 1)
- 35a8: 1fce8163 beq t4,t3,378a <_vprintf_core.constprop.0.isra.0+0x72e>
- val = is_signed ? (uint64)((int64)va_arg(ap, int)) : (uint64)va_arg(ap, uint32);
- 35ac: 000c2e03 lw t3,0(s8)
- 35b0: 008c0793 addi a5,s8,8
- 35b4: e43e sd a5,8(sp)
- int64 sval = (int64)val;
- 35b6: 86f2 mv a3,t3
- if (sval < 0)
- 35b8: 1406cb63 bltz a3,370e <_vprintf_core.constprop.0.isra.0+0x6b2>
- sign_char = '+';
- 35bc: 02b00793 li a5,43
- 35c0: e03e sd a5,0(sp)
- else if (flag_plus)
- 35c2: e589 bnez a1,35cc <_vprintf_core.constprop.0.isra.0+0x570>
- else if (flag_space)
- 35c4: 00589793 slli a5,a7,0x5
- 35c8: e03e sd a5,0(sp)
- 35ca: 85c6 mv a1,a7
- const char *digits = uppercase ? "0123456789ABCDEF" : "0123456789abcdef";
- 35cc: 4329 li t1,10
- 35ce: 00002f97 auipc t6,0x2
- 35d2: b32f8f93 addi t6,t6,-1230 # 5100 <_GLOBAL__sub_I__ZSt3cin+0x110>
- if (val == 0)
- 35d6: ee0e11e3 bnez t3,34b8 <_vprintf_core.constprop.0.isra.0+0x45c>
- buf[i++] = '0';
- 35da: 03000693 li a3,48
- 35de: 00d10823 sb a3,16(sp)
- return i;
- 35e2: 4f05 li t5,1
- if (precision >= 0)
- 35e4: f00bd1e3 bgez s7,34e6 <_vprintf_core.constprop.0.isra.0+0x48a>
- for (int i = digit_len - 1; i >= 0; i--)
- 35e8: ffff0c1b addiw s8,t5,-1
- if (spec == 'p' || (flag_hash && val != 0 && (spec == 'x' || spec == 'X')))
- 35ec: 07000893 li a7,112
- if (!flag_left && !flag_zero)
- 35f0: 016a6d33 or s10,s4,s6
- int prec_zeros = (precision > digit_len) ? precision - digit_len : 0;
- 35f4: 4b81 li s7,0
- for (int i = digit_len - 1; i >= 0; i--)
- 35f6: 8662 mv a2,s8
- if (spec == 'p' || (flag_hash && val != 0 && (spec == 'x' || spec == 'X')))
- 35f8: 0d1c9f63 bne s9,a7,36d6 <_vprintf_core.constprop.0.isra.0+0x67a>
- prefix_str = (spec == 'X') ? "0X" : "0x";
- 35fc: 00002c97 auipc s9,0x2
- 3600: b1cc8c93 addi s9,s9,-1252 # 5118 <_GLOBAL__sub_I__ZSt3cin+0x128>
- prefix_len += 2;
- 3604: 2589 addiw a1,a1,2
- int padding = (width > prefix_len + prec_zeros + digit_len) ? width - (prefix_len + prec_zeros + digit_len) : 0;
- 3606: 017585bb addw a1,a1,s7
- 360a: 01e585bb addw a1,a1,t5
- 360e: f085c2e3 blt a1,s0,3512 <_vprintf_core.constprop.0.isra.0+0x4b6>
- if (!flag_left && !flag_zero)
- 3612: 080d0f63 beqz s10,36b0 <_vprintf_core.constprop.0.isra.0+0x654>
- if (sign_char)
- 3616: 6782 ld a5,0(sp)
- int padding = (width > prefix_len + prec_zeros + digit_len) ? width - (prefix_len + prec_zeros + digit_len) : 0;
- 3618: 4401 li s0,0
- if (sign_char)
- 361a: f00782e3 beqz a5,351e <_vprintf_core.constprop.0.isra.0+0x4c2>
- _out_char(ctx, sign_char);
- 361e: 6582 ld a1,0(sp)
- 3620: 8526 mv a0,s1
- 3622: bc7fd0ef jal 11e8 <_out_char>
- 3626: bde5 j 351e <_vprintf_core.constprop.0.isra.0+0x4c2>
- _out_char(ctx, ' ');
- 3628: 02000593 li a1,32
- 362c: 8526 mv a0,s1
- for (int i = 0; i < padding; i++)
- 362e: 2d05 addiw s10,s10,1
- _out_char(ctx, ' ');
- 3630: bb9fd0ef jal 11e8 <_out_char>
- for (int i = 0; i < padding; i++)
- 3634: efa402e3 beq s0,s10,3518 <_vprintf_core.constprop.0.isra.0+0x4bc>
- _out_char(ctx, ' ');
- 3638: 02000593 li a1,32
- 363c: 8526 mv a0,s1
- for (int i = 0; i < padding; i++)
- 363e: 2d05 addiw s10,s10,1
- _out_char(ctx, ' ');
- 3640: ba9fd0ef jal 11e8 <_out_char>
- for (int i = 0; i < padding; i++)
- 3644: ffa412e3 bne s0,s10,3628 <_vprintf_core.constprop.0.isra.0+0x5cc>
- 3648: bdc1 j 3518 <_vprintf_core.constprop.0.isra.0+0x4bc>
- for (int i = 0; i < total_zeros; i++)
- 364a: ee0b9ee3 bnez s7,3546 <_vprintf_core.constprop.0.isra.0+0x4ea>
- for (int i = digit_len - 1; i >= 0; i--)
- 364e: 577d li a4,-1
- 3650: f0ec17e3 bne s8,a4,355e <_vprintf_core.constprop.0.isra.0+0x502>
- for (int i = 0; i < padding; i++)
- 3654: d405 beqz s0,357c <_vprintf_core.constprop.0.isra.0+0x520>
- 3656: 4a01 li s4,0
- _out_char(ctx, ' ');
- 3658: 02000593 li a1,32
- 365c: 8526 mv a0,s1
- for (int i = 0; i < padding; i++)
- 365e: 2a05 addiw s4,s4,1
- _out_char(ctx, ' ');
- 3660: b89fd0ef jal 11e8 <_out_char>
- for (int i = 0; i < padding; i++)
- 3664: fe8a1ae3 bne s4,s0,3658 <_vprintf_core.constprop.0.isra.0+0x5fc>
- char spec = *p++;
- 3668: 6c22 ld s8,8(sp)
- 366a: bc05 j 309a <_vprintf_core.constprop.0.isra.0+0x3e>
- val = (uint64)va_arg(ap, void *);
- 366c: 008c0793 addi a5,s8,8
- 3670: e43e sd a5,8(sp)
- else if (len_mod == 1)
- 3672: 180e9163 bnez t4,37f4 <_vprintf_core.constprop.0.isra.0+0x798>
- val = is_signed ? (uint64)((int64)va_arg(ap, int)) : (uint64)va_arg(ap, uint32);
- 3676: 000c6e03 lwu t3,0(s8)
- val = is_signed ? (uint64)va_arg(ap, int64) : va_arg(ap, uint64);
- 367a: 4581 li a1,0
- 367c: 05800c93 li s9,88
- 3680: e002 sd zero,0(sp)
- 3682: 4341 li t1,16
- const char *digits = uppercase ? "0123456789ABCDEF" : "0123456789abcdef";
- 3684: 00002f97 auipc t6,0x2
- 3688: a64f8f93 addi t6,t6,-1436 # 50e8 <_GLOBAL__sub_I__ZSt3cin+0xf8>
- 368c: b525 j 34b4 <_vprintf_core.constprop.0.isra.0+0x458>
- int padding = (width > len) ? width - len : 0;
- 368e: ca8058e3 blez s0,333e <_vprintf_core.constprop.0.isra.0+0x2e2>
- if (!flag_left)
- 3692: ee0a1de3 bnez s4,358c <_vprintf_core.constprop.0.isra.0+0x530>
- int len = 0;
- 3696: 4b81 li s7,0
- for (int i = 0; i < padding; i++)
- 3698: 4d01 li s10,0
- _out_char(ctx, ' ');
- 369a: 02000593 li a1,32
- 369e: 8526 mv a0,s1
- for (int i = 0; i < padding; i++)
- 36a0: 2d05 addiw s10,s10,1
- _out_char(ctx, ' ');
- 36a2: b47fd0ef jal 11e8 <_out_char>
- for (int i = 0; i < padding; i++)
- 36a6: fe8d1ae3 bne s10,s0,369a <_vprintf_core.constprop.0.isra.0+0x63e>
- for (int i = 0; i < len; i++)
- 36aa: c60b9be3 bnez s7,3320 <_vprintf_core.constprop.0.isra.0+0x2c4>
- 36ae: b941 j 333e <_vprintf_core.constprop.0.isra.0+0x2e2>
- if (sign_char)
- 36b0: 6782 ld a5,0(sp)
- 36b2: 4401 li s0,0
- 36b4: f7ad bnez a5,361e <_vprintf_core.constprop.0.isra.0+0x5c2>
- if (prefix_str)
- 36b6: e60c96e3 bnez s9,3522 <_vprintf_core.constprop.0.isra.0+0x4c6>
- for (int i = 0; i < total_zeros; i++)
- 36ba: e80b96e3 bnez s7,3546 <_vprintf_core.constprop.0.isra.0+0x4ea>
- 36be: bd69 j 3558 <_vprintf_core.constprop.0.isra.0+0x4fc>
- int prec_zeros = (precision > digit_len) ? precision - digit_len : 0;
- 36c0: 41eb8bbb subw s7,s7,t5
- 36c4: 8d52 mv s10,s4
- 36c6: 4b01 li s6,0
- for (int i = digit_len - 1; i >= 0; i--)
- 36c8: ffff0c1b addiw s8,t5,-1
- if (spec == 'p' || (flag_hash && val != 0 && (spec == 'x' || spec == 'X')))
- 36cc: 07000893 li a7,112
- for (int i = digit_len - 1; i >= 0; i--)
- 36d0: 8662 mv a2,s8
- if (spec == 'p' || (flag_hash && val != 0 && (spec == 'x' || spec == 'X')))
- 36d2: f31c85e3 beq s9,a7,35fc <_vprintf_core.constprop.0.isra.0+0x5a0>
- 36d6: cd09 beqz a0,36f0 <_vprintf_core.constprop.0.isra.0+0x694>
- 36d8: 000e0c63 beqz t3,36f0 <_vprintf_core.constprop.0.isra.0+0x694>
- 36dc: 07800513 li a0,120
- for (int i = digit_len - 1; i >= 0; i--)
- 36e0: 00060c1b sext.w s8,a2
- if (spec == 'p' || (flag_hash && val != 0 && (spec == 'x' || spec == 'X')))
- 36e4: f0ac8ce3 beq s9,a0,35fc <_vprintf_core.constprop.0.isra.0+0x5a0>
- 36e8: 05800613 li a2,88
- 36ec: 12cc8463 beq s9,a2,3814 <_vprintf_core.constprop.0.isra.0+0x7b8>
- int padding = (width > prefix_len + prec_zeros + digit_len) ? width - (prefix_len + prec_zeros + digit_len) : 0;
- 36f0: 00bb85bb addw a1,s7,a1
- 36f4: 01e585bb addw a1,a1,t5
- char *prefix_str = NULL;
- 36f8: 4c81 li s9,0
- 36fa: bd11 j 350e <_vprintf_core.constprop.0.isra.0+0x4b2>
- if (spec == 'p' || (flag_hash && val != 0 && (spec == 'x' || spec == 'X')))
- 36fc: 07000693 li a3,112
- 3700: 8d52 mv s10,s4
- 3702: 4b01 li s6,0
- 3704: 08dc8d63 beq s9,a3,379e <_vprintf_core.constprop.0.isra.0+0x742>
- 3708: 5c7d li s8,-1
- char *prefix_str = NULL;
- 370a: 4c81 li s9,0
- 370c: b509 j 350e <_vprintf_core.constprop.0.isra.0+0x4b2>
- sign_char = '-';
- 370e: 02d00793 li a5,45
- val = (uint64)(-sval);
- 3712: 40d00e33 neg t3,a3
- 3716: 4585 li a1,1
- 3718: 4329 li t1,10
- const char *digits = uppercase ? "0123456789ABCDEF" : "0123456789abcdef";
- 371a: 00002f97 auipc t6,0x2
- 371e: 9e6f8f93 addi t6,t6,-1562 # 5100 <_GLOBAL__sub_I__ZSt3cin+0x110>
- sign_char = '-';
- 3722: e03e sd a5,0(sp)
- 3724: bb51 j 34b8 <_vprintf_core.constprop.0.isra.0+0x45c>
- s = "(null)";
- 3726: 00002c97 auipc s9,0x2
- 372a: a02c8c93 addi s9,s9,-1534 # 5128 <_GLOBAL__sub_I__ZSt3cin+0x138>
- 372e: bed1 j 3302 <_vprintf_core.constprop.0.isra.0+0x2a6>
- val = is_signed ? (uint64)va_arg(ap, int64) : va_arg(ap, uint64);
- 3730: 000c3683 ld a3,0(s8)
- 3734: 008c0713 addi a4,s8,8
- 3738: e43a sd a4,8(sp)
- 373a: 8dbe mv s11,a5
- 373c: 8e36 mv t3,a3
- if (is_signed)
- 373e: bdad j 35b8 <_vprintf_core.constprop.0.isra.0+0x55c>
- int is_signed = (spec == 'd' || spec == 'i');
- 3740: 06900693 li a3,105
- 3744: fedc86e3 beq s9,a3,3730 <_vprintf_core.constprop.0.isra.0+0x6d4>
- val = (uint64)va_arg(ap, void *);
- 3748: 008c0713 addi a4,s8,8
- int base = (spec == 'x' || spec == 'X' || spec == 'p') ? 16 : 10;
- 374c: 07800693 li a3,120
- val = (uint64)va_arg(ap, void *);
- 3750: e43a sd a4,8(sp)
- int base = (spec == 'x' || spec == 'X' || spec == 'p') ? 16 : 10;
- 3752: 06dc9063 bne s9,a3,37b2 <_vprintf_core.constprop.0.isra.0+0x756>
- val = is_signed ? (uint64)va_arg(ap, int64) : va_arg(ap, uint64);
- 3756: 000c3e03 ld t3,0(s8)
- 375a: 8dbe mv s11,a5
- 375c: 4581 li a1,0
- 375e: e002 sd zero,0(sp)
- int base = (spec == 'x' || spec == 'X' || spec == 'p') ? 16 : 10;
- 3760: 4341 li t1,16
- const char *digits = uppercase ? "0123456789ABCDEF" : "0123456789abcdef";
- 3762: 00002f97 auipc t6,0x2
- 3766: 99ef8f93 addi t6,t6,-1634 # 5100 <_GLOBAL__sub_I__ZSt3cin+0x110>
- 376a: b3a9 j 34b4 <_vprintf_core.constprop.0.isra.0+0x458>
- for (int i = 0; i < padding; i++)
- 376c: c809 beqz s0,377e <_vprintf_core.constprop.0.isra.0+0x722>
- _out_char(ctx, ' ');
- 376e: 02000593 li a1,32
- 3772: 8526 mv a0,s1
- for (int i = 0; i < padding; i++)
- 3774: 2a05 addiw s4,s4,1
- _out_char(ctx, ' ');
- 3776: a73fd0ef jal 11e8 <_out_char>
- for (int i = 0; i < padding; i++)
- 377a: ff441ae3 bne s0,s4,376e <_vprintf_core.constprop.0.isra.0+0x712>
- _out_char(ctx, c);
- 377e: 85e6 mv a1,s9
- 3780: 8526 mv a0,s1
- 3782: a67fd0ef jal 11e8 <_out_char>
- const char *s = va_arg(ap, char *);
- 3786: 0c21 addi s8,s8,8
- 3788: ba09 j 309a <_vprintf_core.constprop.0.isra.0+0x3e>
- val = is_signed ? (uint64)va_arg(ap, long) : (uint64)va_arg(ap, unsigned long);
- 378a: 000c3683 ld a3,0(s8)
- 378e: 008c0793 addi a5,s8,8
- 3792: e43e sd a5,8(sp)
- 3794: 8e36 mv t3,a3
- if (is_signed)
- 3796: b50d j 35b8 <_vprintf_core.constprop.0.isra.0+0x55c>
- if (spec == 'p' || (flag_hash && val != 0 && (spec == 'x' || spec == 'X')))
- 3798: 8d52 mv s10,s4
- 379a: 4b01 li s6,0
- 379c: b585 j 35fc <_vprintf_core.constprop.0.isra.0+0x5a0>
- digit_len = 0;
- 379e: 4f01 li t5,0
- if (spec == 'p' || (flag_hash && val != 0 && (spec == 'x' || spec == 'X')))
- 37a0: 5c7d li s8,-1
- prefix_str = (spec == 'X') ? "0X" : "0x";
- 37a2: 00002c97 auipc s9,0x2
- 37a6: 976c8c93 addi s9,s9,-1674 # 5118 <_GLOBAL__sub_I__ZSt3cin+0x128>
- 37aa: bda9 j 3604 <_vprintf_core.constprop.0.isra.0+0x5a8>
- if (spec == 'p' || (flag_hash && val != 0 && (spec == 'x' || spec == 'X')))
- 37ac: 8d52 mv s10,s4
- 37ae: 4b01 li s6,0
- 37b0: b735 j 36dc <_vprintf_core.constprop.0.isra.0+0x680>
- int base = (spec == 'x' || spec == 'X' || spec == 'p') ? 16 : 10;
- 37b2: 07000693 li a3,112
- 37b6: 04dc8263 beq s9,a3,37fa <_vprintf_core.constprop.0.isra.0+0x79e>
- val = is_signed ? (uint64)va_arg(ap, int64) : va_arg(ap, uint64);
- 37ba: 000c3e03 ld t3,0(s8)
- 37be: 8dbe mv s11,a5
- 37c0: 4581 li a1,0
- 37c2: e002 sd zero,0(sp)
- int base = (spec == 'x' || spec == 'X' || spec == 'p') ? 16 : 10;
- 37c4: 4329 li t1,10
- const char *digits = uppercase ? "0123456789ABCDEF" : "0123456789abcdef";
- 37c6: 00002f97 auipc t6,0x2
- 37ca: 93af8f93 addi t6,t6,-1734 # 5100 <_GLOBAL__sub_I__ZSt3cin+0x110>
- 37ce: b1dd j 34b4 <_vprintf_core.constprop.0.isra.0+0x458>
- val = is_signed ? (uint64)va_arg(ap, long) : (uint64)va_arg(ap, unsigned long);
- 37d0: 000c3e03 ld t3,0(s8)
- 37d4: 4581 li a1,0
- 37d6: e002 sd zero,0(sp)
- int base = (spec == 'x' || spec == 'X' || spec == 'p') ? 16 : 10;
- 37d8: 4341 li t1,16
- const char *digits = uppercase ? "0123456789ABCDEF" : "0123456789abcdef";
- 37da: 00002f97 auipc t6,0x2
- 37de: 926f8f93 addi t6,t6,-1754 # 5100 <_GLOBAL__sub_I__ZSt3cin+0x110>
- 37e2: b9c9 j 34b4 <_vprintf_core.constprop.0.isra.0+0x458>
- char spec = *p++;
- 37e4: 8dbe mv s11,a5
- 37e6: b911 j 33fa <_vprintf_core.constprop.0.isra.0+0x39e>
- for (int i = digit_len - 1; i >= 0; i--)
- 37e8: 577d li a4,-1
- 37ea: 4401 li s0,0
- 37ec: d6ec19e3 bne s8,a4,355e <_vprintf_core.constprop.0.isra.0+0x502>
- char spec = *p++;
- 37f0: 6c22 ld s8,8(sp)
- 37f2: b065 j 309a <_vprintf_core.constprop.0.isra.0+0x3e>
- val = is_signed ? (uint64)va_arg(ap, long) : (uint64)va_arg(ap, unsigned long);
- 37f4: 000c3e03 ld t3,0(s8)
- const char *digits = uppercase ? "0123456789ABCDEF" : "0123456789abcdef";
- 37f8: b549 j 367a <_vprintf_core.constprop.0.isra.0+0x61e>
- int base = (spec == 'x' || spec == 'X' || spec == 'p') ? 16 : 10;
- 37fa: 8dbe mv s11,a5
- val = (uint64)va_arg(ap, void *);
- 37fc: 000c3e03 ld t3,0(s8)
- 3800: 4581 li a1,0
- 3802: 07000c93 li s9,112
- 3806: e002 sd zero,0(sp)
- 3808: 4341 li t1,16
- const char *digits = uppercase ? "0123456789ABCDEF" : "0123456789abcdef";
- 380a: 00002f97 auipc t6,0x2
- 380e: 8f6f8f93 addi t6,t6,-1802 # 5100 <_GLOBAL__sub_I__ZSt3cin+0x110>
- 3812: b14d j 34b4 <_vprintf_core.constprop.0.isra.0+0x458>
- prefix_str = (spec == 'X') ? "0X" : "0x";
- 3814: 00002c97 auipc s9,0x2
- 3818: 90cc8c93 addi s9,s9,-1780 # 5120 <_GLOBAL__sub_I__ZSt3cin+0x130>
- 381c: b3e5 j 3604 <_vprintf_core.constprop.0.isra.0+0x5a8>
- val = (uint64)va_arg(ap, void *);
- 381e: 008c0713 addi a4,s8,8
- val = is_signed ? (uint64)va_arg(ap, int64) : va_arg(ap, uint64);
- 3822: 000c3e03 ld t3,0(s8)
- val = (uint64)va_arg(ap, void *);
- 3826: e43a sd a4,8(sp)
- val = is_signed ? (uint64)va_arg(ap, int64) : va_arg(ap, uint64);
- 3828: 8dbe mv s11,a5
- 382a: bd81 j 367a <_vprintf_core.constprop.0.isra.0+0x61e>
- 382c: 8d52 mv s10,s4
- 382e: 4b01 li s6,0
- 3830: 4b81 li s7,0
- 3832: bd59 j 36c8 <_vprintf_core.constprop.0.isra.0+0x66c>
- int base = (spec == 'x' || spec == 'X' || spec == 'p') ? 16 : 10;
- 3834: 07000693 li a3,112
- 3838: fcdc82e3 beq s9,a3,37fc <_vprintf_core.constprop.0.isra.0+0x7a0>
- else if (len_mod == 1)
- 383c: 01ce8c63 beq t4,t3,3854 <_vprintf_core.constprop.0.isra.0+0x7f8>
- val = is_signed ? (uint64)((int64)va_arg(ap, int)) : (uint64)va_arg(ap, uint32);
- 3840: 000c6e03 lwu t3,0(s8)
- const char *digits = uppercase ? "0123456789ABCDEF" : "0123456789abcdef";
- 3844: 4581 li a1,0
- 3846: e002 sd zero,0(sp)
- 3848: 4329 li t1,10
- 384a: 00002f97 auipc t6,0x2
- 384e: 8b6f8f93 addi t6,t6,-1866 # 5100 <_GLOBAL__sub_I__ZSt3cin+0x110>
- 3852: b18d j 34b4 <_vprintf_core.constprop.0.isra.0+0x458>
- val = is_signed ? (uint64)va_arg(ap, long) : (uint64)va_arg(ap, unsigned long);
- 3854: 000c3e03 ld t3,0(s8)
- if (is_signed)
- 3858: b7f5 j 3844 <_vprintf_core.constprop.0.isra.0+0x7e8>
-
-000000000000385a <vsnprintf>:
-{
- 385a: 7139 addi sp,sp,-64
- 385c: f822 sd s0,48(sp)
- 385e: f426 sd s1,40(sp)
- 3860: 842e mv s0,a1
- 3862: 84aa mv s1,a0
- 3864: 85b2 mv a1,a2
- _vprintf_core(&ctx, format, ap);
- 3866: 850a mv a0,sp
- 3868: 8636 mv a2,a3
-{
- 386a: fc06 sd ra,56(sp)
- ctx.buf = str;
- 386c: e026 sd s1,0(sp)
- ctx.limit = size;
- 386e: e422 sd s0,8(sp)
- ctx.written = 0;
- 3870: e802 sd zero,16(sp)
- ctx.stream = NULL;
- 3872: ec02 sd zero,24(sp)
- _vprintf_core(&ctx, format, ap);
- 3874: fe8ff0ef jal 305c <_vprintf_core.constprop.0.isra.0>
- if (ctx.written < size)
- 3878: 6542 ld a0,16(sp)
- if (size > 0)
- 387a: c411 beqz s0,3886 <vsnprintf+0x2c>
- if (ctx.written < size)
- 387c: 00857b63 bgeu a0,s0,3892 <vsnprintf+0x38>
- str[ctx.written] = '\0';
- 3880: 94aa add s1,s1,a0
- 3882: 00048023 sb zero,0(s1)
-}
- 3886: 70e2 ld ra,56(sp)
- 3888: 7442 ld s0,48(sp)
- 388a: 74a2 ld s1,40(sp)
- 388c: 2501 sext.w a0,a0
- 388e: 6121 addi sp,sp,64
- 3890: 8082 ret
- str[size - 1] = '\0';
- 3892: 94a2 add s1,s1,s0
- 3894: fe048fa3 sb zero,-1(s1)
-}
- 3898: 70e2 ld ra,56(sp)
- 389a: 7442 ld s0,48(sp)
- 389c: 74a2 ld s1,40(sp)
- 389e: 2501 sext.w a0,a0
- 38a0: 6121 addi sp,sp,64
- 38a2: 8082 ret
-
-00000000000038a4 <snprintf>:
-{
- 38a4: 7119 addi sp,sp,-128
- 38a6: e0a2 sd s0,64(sp)
- 38a8: fc26 sd s1,56(sp)
- 38aa: 842e mv s0,a1
- 38ac: 84aa mv s1,a0
- 38ae: 85b2 mv a1,a2
- _vprintf_core(&ctx, format, ap);
- 38b0: 0808 addi a0,sp,16
- va_start(ap, format);
- 38b2: 08b0 addi a2,sp,88
-{
- 38b4: e486 sd ra,72(sp)
- 38b6: ecb6 sd a3,88(sp)
- 38b8: f0ba sd a4,96(sp)
- 38ba: f4be sd a5,104(sp)
- 38bc: f8c2 sd a6,112(sp)
- 38be: fcc6 sd a7,120(sp)
- va_start(ap, format);
- 38c0: e432 sd a2,8(sp)
- ctx.buf = str;
- 38c2: e826 sd s1,16(sp)
- ctx.limit = size;
- 38c4: ec22 sd s0,24(sp)
- ctx.written = 0;
- 38c6: f002 sd zero,32(sp)
- ctx.stream = NULL;
- 38c8: f402 sd zero,40(sp)
- _vprintf_core(&ctx, format, ap);
- 38ca: f92ff0ef jal 305c <_vprintf_core.constprop.0.isra.0>
- if (ctx.written < size)
- 38ce: 7502 ld a0,32(sp)
- if (size > 0)
- 38d0: c411 beqz s0,38dc <snprintf+0x38>
- if (ctx.written < size)
- 38d2: 00857b63 bgeu a0,s0,38e8 <snprintf+0x44>
- str[ctx.written] = '\0';
- 38d6: 94aa add s1,s1,a0
- 38d8: 00048023 sb zero,0(s1)
-}
- 38dc: 60a6 ld ra,72(sp)
- 38de: 6406 ld s0,64(sp)
- 38e0: 74e2 ld s1,56(sp)
- 38e2: 2501 sext.w a0,a0
- 38e4: 6109 addi sp,sp,128
- 38e6: 8082 ret
- str[size - 1] = '\0';
- 38e8: 94a2 add s1,s1,s0
- 38ea: fe048fa3 sb zero,-1(s1)
-}
- 38ee: 60a6 ld ra,72(sp)
- 38f0: 6406 ld s0,64(sp)
- 38f2: 74e2 ld s1,56(sp)
- 38f4: 2501 sext.w a0,a0
- 38f6: 6109 addi sp,sp,128
- 38f8: 8082 ret
-
-00000000000038fa <printf>:
-{
- 38fa: 7119 addi sp,sp,-128
- va_start(ap, format);
- 38fc: 04810313 addi t1,sp,72
-{
- 3900: e4ae sd a1,72(sp)
- 3902: e8b2 sd a2,80(sp)
- 3904: f4be sd a5,104(sp)
- _vprintf_core(&ctx, format, ap);
- 3906: 85aa mv a1,a0
- ctx.stream = stdout;
- 3908: 00004797 auipc a5,0x4
- 390c: de87b783 ld a5,-536(a5) # 76f0 <stdout>
- _vprintf_core(&ctx, format, ap);
- 3910: 0808 addi a0,sp,16
- 3912: 861a mv a2,t1
-{
- 3914: fc06 sd ra,56(sp)
- 3916: ecb6 sd a3,88(sp)
- 3918: f0ba sd a4,96(sp)
- 391a: f8c2 sd a6,112(sp)
- 391c: fcc6 sd a7,120(sp)
- va_start(ap, format);
- 391e: e41a sd t1,8(sp)
- ctx.buf = NULL;
- 3920: e802 sd zero,16(sp)
- ctx.limit = 0;
- 3922: ec02 sd zero,24(sp)
- ctx.written = 0;
- 3924: f002 sd zero,32(sp)
- ctx.stream = stdout;
- 3926: f43e sd a5,40(sp)
- _vprintf_core(&ctx, format, ap);
- 3928: f34ff0ef jal 305c <_vprintf_core.constprop.0.isra.0>
-}
- 392c: 70e2 ld ra,56(sp)
- 392e: 5502 lw a0,32(sp)
- 3930: 6109 addi sp,sp,128
- 3932: 8082 ret
-
-0000000000003934 <sscanf>:
-{
- 3934: 7159 addi sp,sp,-112
- va_start(ap, format);
- 3936: 04010e13 addi t3,sp,64
-{
- 393a: 8eaa mv t4,a0
- ctx.fd = -1;
- 393c: 537d li t1,-1
-{
- 393e: e0b2 sd a2,64(sp)
- int ret = _vscanf_core(&ctx, format, ap);
- 3940: 0808 addi a0,sp,16
- 3942: 8672 mv a2,t3
-{
- 3944: fc06 sd ra,56(sp)
- 3946: e4b6 sd a3,72(sp)
- 3948: e8ba sd a4,80(sp)
- 394a: ecbe sd a5,88(sp)
- 394c: f0c2 sd a6,96(sp)
- 394e: f4c6 sd a7,104(sp)
- va_start(ap, format);
- 3950: e472 sd t3,8(sp)
- ctx.buf = str;
- 3952: e876 sd t4,16(sp)
- ctx.fd = -1;
- 3954: cc1a sw t1,24(sp)
- ctx.pos = 0;
- 3956: f002 sd zero,32(sp)
- ctx.ungotten = -1;
- 3958: d41a sw t1,40(sp)
- int ret = _vscanf_core(&ctx, format, ap);
- 395a: 81efd0ef jal 978 <_vscanf_core.constprop.0>
-}
- 395e: 70e2 ld ra,56(sp)
- 3960: 6165 addi sp,sp,112
- 3962: 8082 ret
-
-0000000000003964 <scanf>:
-{
- 3964: 7119 addi sp,sp,-128
- va_start(ap, format);
- 3966: 04810313 addi t1,sp,72
-{
- 396a: e4ae sd a1,72(sp)
- 396c: e8b2 sd a2,80(sp)
- 396e: f4be sd a5,104(sp)
- int ret = _vscanf_core(&ctx, format, ap);
- 3970: 85aa mv a1,a0
- ctx.ungotten = -1;
- 3972: 57fd li a5,-1
- int ret = _vscanf_core(&ctx, format, ap);
- 3974: 0808 addi a0,sp,16
- 3976: 861a mv a2,t1
-{
- 3978: fc06 sd ra,56(sp)
- 397a: ecb6 sd a3,88(sp)
- 397c: f0ba sd a4,96(sp)
- 397e: f8c2 sd a6,112(sp)
- 3980: fcc6 sd a7,120(sp)
- va_start(ap, format);
- 3982: e41a sd t1,8(sp)
- ctx.buf = NULL;
- 3984: e802 sd zero,16(sp)
- ctx.fd = STDIN_FD;
- 3986: cc02 sw zero,24(sp)
- ctx.pos = 0;
- 3988: f002 sd zero,32(sp)
- ctx.ungotten = -1;
- 398a: d43e sw a5,40(sp)
- int ret = _vscanf_core(&ctx, format, ap);
- 398c: fedfc0ef jal 978 <_vscanf_core.constprop.0>
-}
- 3990: 70e2 ld ra,56(sp)
- 3992: 6109 addi sp,sp,128
- 3994: 8082 ret
-
-0000000000003996 <fopen>:
-{
- 3996: 1101 addi sp,sp,-32
- 3998: e426 sd s1,8(sp)
- 399a: 84ae mv s1,a1
- 399c: e04a sd s2,0(sp)
- if (strcmp(mode, "r") == 0)
- 399e: 00001597 auipc a1,0x1
- 39a2: 7a258593 addi a1,a1,1954 # 5140 <_GLOBAL__sub_I__ZSt3cin+0x150>
-{
- 39a6: 892a mv s2,a0
- if (strcmp(mode, "r") == 0)
- 39a8: 8526 mv a0,s1
-{
- 39aa: e822 sd s0,16(sp)
- 39ac: ec06 sd ra,24(sp)
- if (strcmp(mode, "r") == 0)
- 39ae: 298010ef jal 4c46 <strcmp>
- 39b2: 842a mv s0,a0
- 39b4: c919 beqz a0,39ca <fopen+0x34>
- else if (strcmp(mode, "w") == 0)
- 39b6: 00001597 auipc a1,0x1
- 39ba: 79258593 addi a1,a1,1938 # 5148 <_GLOBAL__sub_I__ZSt3cin+0x158>
- 39be: 8526 mv a0,s1
- 39c0: 286010ef jal 4c46 <strcmp>
- flags = O_WRONLY | O_CREAT | O_TRUNC;
- 39c4: 24100413 li s0,577
- else if (strcmp(mode, "w") == 0)
- 39c8: ed39 bnez a0,3a26 <fopen+0x90>
- int64 fd = open(filename, flags);
- 39ca: 85a2 mv a1,s0
- 39cc: 854a mv a0,s2
- 39ce: f42fc0ef jal 110 <open>
- 39d2: 84aa mv s1,a0
- if (fd < 0)
- 39d4: 06054c63 bltz a0,3a4c <fopen+0xb6>
- FILE *f = (FILE *)malloc(sizeof(FILE));
- 39d8: 42000513 li a0,1056
- 39dc: 2f3000ef jal 44ce <malloc>
- 39e0: 892a mv s2,a0
- if (!f)
- 39e2: c53d beqz a0,3a50 <fopen+0xba>
- memset(f, 0, sizeof(FILE));
- 39e4: 42000613 li a2,1056
- 39e8: 4581 li a1,0
- 39ea: 0ee010ef jal 4ad8 <memset>
- if (fd == 1)
- 39ee: 4785 li a5,1
- f->fd = (int)fd;
- 39f0: 00992023 sw s1,0(s2)
- f->flags = flags;
- 39f4: 00892223 sw s0,4(s2)
- if (fd == 1)
- 39f8: 00f48e63 beq s1,a5,3a14 <fopen+0x7e>
- else if (fd == 2)
- 39fc: 4789 li a5,2
- 39fe: 00f48b63 beq s1,a5,3a14 <fopen+0x7e>
- f->buf_mode = 0;
- 3a02: 40092e23 sw zero,1052(s2)
-}
- 3a06: 60e2 ld ra,24(sp)
- 3a08: 6442 ld s0,16(sp)
- 3a0a: 64a2 ld s1,8(sp)
- 3a0c: 854a mv a0,s2
- 3a0e: 6902 ld s2,0(sp)
- 3a10: 6105 addi sp,sp,32
- 3a12: 8082 ret
- 3a14: 60e2 ld ra,24(sp)
- 3a16: 6442 ld s0,16(sp)
- f->buf_mode = 2;
- 3a18: 40992e23 sw s1,1052(s2)
-}
- 3a1c: 854a mv a0,s2
- 3a1e: 64a2 ld s1,8(sp)
- 3a20: 6902 ld s2,0(sp)
- 3a22: 6105 addi sp,sp,32
- 3a24: 8082 ret
- else if (strcmp(mode, "a") == 0)
- 3a26: 00001597 auipc a1,0x1
- 3a2a: 72a58593 addi a1,a1,1834 # 5150 <_GLOBAL__sub_I__ZSt3cin+0x160>
- 3a2e: 8526 mv a0,s1
- 3a30: 216010ef jal 4c46 <strcmp>
- flags = O_WRONLY | O_CREAT | O_APPEND;
- 3a34: 44100413 li s0,1089
- else if (strcmp(mode, "a") == 0)
- 3a38: d949 beqz a0,39ca <fopen+0x34>
- else if (strcmp(mode, "r+") == 0)
- 3a3a: 00001597 auipc a1,0x1
- 3a3e: 71e58593 addi a1,a1,1822 # 5158 <_GLOBAL__sub_I__ZSt3cin+0x168>
- 3a42: 8526 mv a0,s1
- 3a44: 202010ef jal 4c46 <strcmp>
- flags = O_RDWR;
- 3a48: 4409 li s0,2
- else if (strcmp(mode, "r+") == 0)
- 3a4a: d141 beqz a0,39ca <fopen+0x34>
- return NULL;
- 3a4c: 4901 li s2,0
- 3a4e: bf65 j 3a06 <fopen+0x70>
- close(fd);
- 3a50: 8526 mv a0,s1
- 3a52: ea6fc0ef jal f8 <close>
- return NULL;
- 3a56: 4901 li s2,0
- 3a58: b77d j 3a06 <fopen+0x70>
-
-0000000000003a5a <fclose>:
- if (!stream)
- 3a5a: cd29 beqz a0,3ab4 <fclose+0x5a>
- if (stream->buf_write_pos > 0)
- 3a5c: 41052603 lw a2,1040(a0)
-{
- 3a60: 1141 addi sp,sp,-16
- 3a62: e022 sd s0,0(sp)
- 3a64: e406 sd ra,8(sp)
- 3a66: 842a mv s0,a0
- if (stream->buf_write_pos > 0)
- 3a68: 02c04a63 bgtz a2,3a9c <fclose+0x42>
- if (stream != stdin && stream != stdout && stream != stderr)
- 3a6c: 00004797 auipc a5,0x4
- 3a70: c8478793 addi a5,a5,-892 # 76f0 <stdout>
- 3a74: 6798 ld a4,8(a5)
- 3a76: 00870e63 beq a4,s0,3a92 <fclose+0x38>
- 3a7a: 6398 ld a4,0(a5)
- 3a7c: 00870b63 beq a4,s0,3a92 <fclose+0x38>
- 3a80: 6b9c ld a5,16(a5)
- 3a82: 00878863 beq a5,s0,3a92 <fclose+0x38>
- close(stream->fd);
- 3a86: 4008 lw a0,0(s0)
- 3a88: e70fc0ef jal f8 <close>
- free(stream);
- 3a8c: 8522 mv a0,s0
- 3a8e: 1cb000ef jal 4458 <free>
-}
- 3a92: 60a2 ld ra,8(sp)
- 3a94: 6402 ld s0,0(sp)
- return 0;
- 3a96: 4501 li a0,0
-}
- 3a98: 0141 addi sp,sp,16
- 3a9a: 8082 ret
- int64 ret = write(stream->fd, stream->buffer, stream->buf_write_pos);
- 3a9c: 4108 lw a0,0(a0)
- 3a9e: 01040593 addi a1,s0,16
- 3aa2: e4efc0ef jal f0 <write>
- if (ret < stream->buf_write_pos)
- 3aa6: 41042783 lw a5,1040(s0)
- 3aaa: 00f54763 blt a0,a5,3ab8 <fclose+0x5e>
- stream->buf_write_pos = 0;
- 3aae: 40042823 sw zero,1040(s0)
- 3ab2: bf6d j 3a6c <fclose+0x12>
- return -1;
- 3ab4: 557d li a0,-1
-}
- 3ab6: 8082 ret
- stream->error = 1;
- 3ab8: 4785 li a5,1
- 3aba: c41c sw a5,8(s0)
- stream->buf_write_pos = 0;
- 3abc: 40042823 sw zero,1040(s0)
- return EOF;
- 3ac0: b775 j 3a6c <fclose+0x12>
-
-0000000000003ac2 <fflush>:
- if (!stream)
- 3ac2: c121 beqz a0,3b02 <fflush+0x40>
- if (stream->buf_write_pos > 0)
- 3ac4: 41052603 lw a2,1040(a0)
-{
- 3ac8: 1141 addi sp,sp,-16
- 3aca: e022 sd s0,0(sp)
- 3acc: e406 sd ra,8(sp)
- 3ace: 842a mv s0,a0
- if (stream->buf_write_pos > 0)
- 3ad0: 00c04763 bgtz a2,3ade <fflush+0x1c>
- return 0;
- 3ad4: 4501 li a0,0
-}
- 3ad6: 60a2 ld ra,8(sp)
- 3ad8: 6402 ld s0,0(sp)
- 3ada: 0141 addi sp,sp,16
- 3adc: 8082 ret
- int64 ret = write(stream->fd, stream->buffer, stream->buf_write_pos);
- 3ade: 4108 lw a0,0(a0)
- 3ae0: 01040593 addi a1,s0,16
- 3ae4: e0cfc0ef jal f0 <write>
- if (ret < stream->buf_write_pos)
- 3ae8: 41042783 lw a5,1040(s0)
- 3aec: 00f54563 blt a0,a5,3af6 <fflush+0x34>
- stream->buf_write_pos = 0;
- 3af0: 40042823 sw zero,1040(s0)
- 3af4: b7c5 j 3ad4 <fflush+0x12>
- stream->error = 1;
- 3af6: 4785 li a5,1
- 3af8: c41c sw a5,8(s0)
- stream->buf_write_pos = 0;
- 3afa: 40042823 sw zero,1040(s0)
- return EOF;
- 3afe: 557d li a0,-1
- 3b00: bfd9 j 3ad6 <fflush+0x14>
- 3b02: 557d li a0,-1
-}
- 3b04: 8082 ret
-
-0000000000003b06 <fprintf>:
-{
- 3b06: 7159 addi sp,sp,-112
- 3b08: fc06 sd ra,56(sp)
- 3b0a: e0b2 sd a2,64(sp)
- 3b0c: e4b6 sd a3,72(sp)
- 3b0e: e8ba sd a4,80(sp)
- 3b10: ecbe sd a5,88(sp)
- 3b12: f0c2 sd a6,96(sp)
- 3b14: f4c6 sd a7,104(sp)
- if (!stream)
- 3b16: cd19 beqz a0,3b34 <fprintf+0x2e>
- va_start(ap, format);
- 3b18: 832a mv t1,a0
- 3b1a: 0090 addi a2,sp,64
- _vprintf_core(&ctx, format, ap);
- 3b1c: 0808 addi a0,sp,16
- va_start(ap, format);
- 3b1e: e432 sd a2,8(sp)
- ctx.buf = NULL;
- 3b20: e802 sd zero,16(sp)
- ctx.limit = 0;
- 3b22: ec02 sd zero,24(sp)
- ctx.written = 0;
- 3b24: f002 sd zero,32(sp)
- ctx.stream = stream;
- 3b26: f41a sd t1,40(sp)
- _vprintf_core(&ctx, format, ap);
- 3b28: d34ff0ef jal 305c <_vprintf_core.constprop.0.isra.0>
- return (int)ctx.written;
- 3b2c: 5502 lw a0,32(sp)
-}
- 3b2e: 70e2 ld ra,56(sp)
- 3b30: 6165 addi sp,sp,112
- 3b32: 8082 ret
- return -1;
- 3b34: 557d li a0,-1
- 3b36: bfe5 j 3b2e <fprintf+0x28>
-
-0000000000003b38 <fscanf>:
-{
- 3b38: 7159 addi sp,sp,-112
- 3b3a: fc06 sd ra,56(sp)
- 3b3c: e0b2 sd a2,64(sp)
- 3b3e: e4b6 sd a3,72(sp)
- 3b40: e8ba sd a4,80(sp)
- 3b42: ecbe sd a5,88(sp)
- 3b44: f0c2 sd a6,96(sp)
- 3b46: f4c6 sd a7,104(sp)
- if (!stream)
- 3b48: cd19 beqz a0,3b66 <fscanf+0x2e>
- ctx.fd = stream->fd;
- 3b4a: 411c lw a5,0(a0)
- va_start(ap, format);
- 3b4c: 0090 addi a2,sp,64
- int ret = _vscanf_core(&ctx, format, ap);
- 3b4e: 0808 addi a0,sp,16
- ctx.fd = stream->fd;
- 3b50: cc3e sw a5,24(sp)
- ctx.ungotten = -1;
- 3b52: 57fd li a5,-1
- va_start(ap, format);
- 3b54: e432 sd a2,8(sp)
- ctx.buf = NULL;
- 3b56: e802 sd zero,16(sp)
- ctx.pos = 0;
- 3b58: f002 sd zero,32(sp)
- ctx.ungotten = -1;
- 3b5a: d43e sw a5,40(sp)
- int ret = _vscanf_core(&ctx, format, ap);
- 3b5c: e1dfc0ef jal 978 <_vscanf_core.constprop.0>
-}
- 3b60: 70e2 ld ra,56(sp)
- 3b62: 6165 addi sp,sp,112
- 3b64: 8082 ret
- return -1;
- 3b66: 557d li a0,-1
- 3b68: bfe5 j 3b60 <fscanf+0x28>
-
-0000000000003b6a <fputc>:
- if (!stream)
- 3b6a: c1e1 beqz a1,3c2a <fputc+0xc0>
-{
- 3b6c: 7179 addi sp,sp,-48
- 3b6e: e84a sd s2,16(sp)
- if (stream->buf_mode == 2)
- 3b70: 41c5a903 lw s2,1052(a1)
-{
- 3b74: f022 sd s0,32(sp)
- 3b76: ec26 sd s1,24(sp)
- 3b78: f406 sd ra,40(sp)
- if (stream->buf_mode == 2)
- 3b7a: 4789 li a5,2
- 3b7c: 842e mv s0,a1
- 3b7e: 84aa mv s1,a0
- char ch = (char)c;
- 3b80: 0ff57713 zext.b a4,a0
- if (stream->buf_mode == 2)
- 3b84: 02f90963 beq s2,a5,3bb6 <fputc+0x4c>
- stream->buffer[stream->buf_write_pos++] = (char)c;
- 3b88: 4105a783 lw a5,1040(a1)
- if (stream->buf_write_pos >= BUFSIZ)
- 3b8c: 3ff00693 li a3,1023
- stream->buffer[stream->buf_write_pos++] = (char)c;
- 3b90: 0017861b addiw a2,a5,1
- 3b94: 40c5a823 sw a2,1040(a1)
- 3b98: 97ae add a5,a5,a1
- 3b9a: 00e78823 sb a4,16(a5)
- if (stream->buf_write_pos >= BUFSIZ)
- 3b9e: 06c6c463 blt a3,a2,3c06 <fputc+0x9c>
- else if (stream->buf_mode == 1 && c == '\n')
- 3ba2: 4785 li a5,1
- 3ba4: 02f90e63 beq s2,a5,3be0 <fputc+0x76>
- return c;
- 3ba8: 8526 mv a0,s1
-}
- 3baa: 70a2 ld ra,40(sp)
- 3bac: 7402 ld s0,32(sp)
- 3bae: 64e2 ld s1,24(sp)
- 3bb0: 6942 ld s2,16(sp)
- 3bb2: 6145 addi sp,sp,48
- 3bb4: 8082 ret
- if (write(stream->fd, &ch, 1) != 1)
- 3bb6: 4188 lw a0,0(a1)
- 3bb8: 4605 li a2,1
- 3bba: 00f10593 addi a1,sp,15
- char ch = (char)c;
- 3bbe: 00e107a3 sb a4,15(sp)
- if (write(stream->fd, &ch, 1) != 1)
- 3bc2: d2efc0ef jal f0 <write>
- 3bc6: 872a mv a4,a0
- 3bc8: 4785 li a5,1
- return c;
- 3bca: 8526 mv a0,s1
- if (write(stream->fd, &ch, 1) != 1)
- 3bcc: fcf70fe3 beq a4,a5,3baa <fputc+0x40>
-}
- 3bd0: 70a2 ld ra,40(sp)
- stream->error = 1;
- 3bd2: c41c sw a5,8(s0)
-}
- 3bd4: 7402 ld s0,32(sp)
- 3bd6: 64e2 ld s1,24(sp)
- 3bd8: 6942 ld s2,16(sp)
- return EOF;
- 3bda: 557d li a0,-1
-}
- 3bdc: 6145 addi sp,sp,48
- 3bde: 8082 ret
- else if (stream->buf_mode == 1 && c == '\n')
- 3be0: 47a9 li a5,10
- 3be2: fcf513e3 bne a0,a5,3ba8 <fputc+0x3e>
- if (stream->buf_write_pos > 0)
- 3be6: fcc051e3 blez a2,3ba8 <fputc+0x3e>
- int64 ret = write(stream->fd, stream->buffer, stream->buf_write_pos);
- 3bea: 4188 lw a0,0(a1)
- 3bec: 05c1 addi a1,a1,16
- 3bee: d02fc0ef jal f0 <write>
- if (ret < stream->buf_write_pos)
- 3bf2: 41042783 lw a5,1040(s0)
- 3bf6: 02f55063 bge a0,a5,3c16 <fputc+0xac>
- stream->error = 1;
- 3bfa: 01242423 sw s2,8(s0)
- stream->buf_write_pos = 0;
- 3bfe: 40042823 sw zero,1040(s0)
- return c;
- 3c02: 8526 mv a0,s1
- 3c04: b75d j 3baa <fputc+0x40>
- int64 ret = write(stream->fd, stream->buffer, stream->buf_write_pos);
- 3c06: 4188 lw a0,0(a1)
- 3c08: 05c1 addi a1,a1,16
- 3c0a: ce6fc0ef jal f0 <write>
- if (ret < stream->buf_write_pos)
- 3c0e: 41042783 lw a5,1040(s0)
- 3c12: 00f54663 blt a0,a5,3c1e <fputc+0xb4>
- stream->buf_write_pos = 0;
- 3c16: 40042823 sw zero,1040(s0)
- return c;
- 3c1a: 8526 mv a0,s1
- 3c1c: b779 j 3baa <fputc+0x40>
- stream->error = 1;
- 3c1e: 4785 li a5,1
- 3c20: c41c sw a5,8(s0)
- stream->buf_write_pos = 0;
- 3c22: 40042823 sw zero,1040(s0)
- return c;
- 3c26: 8526 mv a0,s1
- 3c28: b749 j 3baa <fputc+0x40>
- return EOF;
- 3c2a: 557d li a0,-1
-}
- 3c2c: 8082 ret
-
-0000000000003c2e <fputs>:
- if (!stream)
- 3c2e: c1ed beqz a1,3d10 <fputs+0xe2>
-{
- 3c30: 711d addi sp,sp,-96
- 3c32: e4a6 sd s1,72(sp)
- 3c34: ec86 sd ra,88(sp)
- while (*s)
- 3c36: 00054703 lbu a4,0(a0)
- 3c3a: 84aa mv s1,a0
- 3c3c: cf25 beqz a4,3cb4 <fputs+0x86>
- 3c3e: e8a2 sd s0,80(sp)
- 3c40: e0ca sd s2,64(sp)
- 3c42: fc4e sd s3,56(sp)
- 3c44: f852 sd s4,48(sp)
- 3c46: f456 sd s5,40(sp)
- 3c48: f05a sd s6,32(sp)
- 3c4a: ec5e sd s7,24(sp)
- 3c4c: 842e mv s0,a1
- if (stream->buf_mode == 2)
- 3c4e: 4909 li s2,2
- if (stream->buf_write_pos >= BUFSIZ)
- 3c50: 3ff00b13 li s6,1023
- else if (stream->buf_mode == 1 && c == '\n')
- 3c54: 4985 li s3,1
- 3c56: 4a29 li s4,10
- int64 ret = write(stream->fd, stream->buffer, stream->buf_write_pos);
- 3c58: 01058a93 addi s5,a1,16
- if (write(stream->fd, &ch, 1) != 1)
- 3c5c: 00f10b93 addi s7,sp,15
- 3c60: a031 j 3c6c <fputs+0x3e>
- else if (stream->buf_mode == 1 && c == '\n')
- 3c62: 09368563 beq a3,s3,3cec <fputs+0xbe>
- while (*s)
- 3c66: 0004c703 lbu a4,0(s1)
- 3c6a: cf15 beqz a4,3ca6 <fputs+0x78>
- if (stream->buf_mode == 2)
- 3c6c: 41c42683 lw a3,1052(s0)
- if (fputc(*s++, stream) == EOF)
- 3c70: 0485 addi s1,s1,1
- if (stream->buf_mode == 2)
- 3c72: 05268663 beq a3,s2,3cbe <fputs+0x90>
- stream->buffer[stream->buf_write_pos++] = (char)c;
- 3c76: 41042783 lw a5,1040(s0)
- 3c7a: 0017861b addiw a2,a5,1
- 3c7e: 40c42823 sw a2,1040(s0)
- 3c82: 97a2 add a5,a5,s0
- 3c84: 00e78823 sb a4,16(a5)
- if (stream->buf_write_pos >= BUFSIZ)
- 3c88: fccb5de3 bge s6,a2,3c62 <fputs+0x34>
- int64 ret = write(stream->fd, stream->buffer, stream->buf_write_pos);
- 3c8c: 4008 lw a0,0(s0)
- 3c8e: 85d6 mv a1,s5
- 3c90: c60fc0ef jal f0 <write>
- if (ret < stream->buf_write_pos)
- 3c94: 41042783 lw a5,1040(s0)
- 3c98: 06f54763 blt a0,a5,3d06 <fputs+0xd8>
- stream->buf_write_pos = 0;
- 3c9c: 40042823 sw zero,1040(s0)
- while (*s)
- 3ca0: 0004c703 lbu a4,0(s1)
- 3ca4: f761 bnez a4,3c6c <fputs+0x3e>
- 3ca6: 6446 ld s0,80(sp)
- 3ca8: 6906 ld s2,64(sp)
- 3caa: 79e2 ld s3,56(sp)
- 3cac: 7a42 ld s4,48(sp)
- 3cae: 7aa2 ld s5,40(sp)
- 3cb0: 7b02 ld s6,32(sp)
- 3cb2: 6be2 ld s7,24(sp)
-}
- 3cb4: 60e6 ld ra,88(sp)
- 3cb6: 64a6 ld s1,72(sp)
- return 0;
- 3cb8: 4501 li a0,0
-}
- 3cba: 6125 addi sp,sp,96
- 3cbc: 8082 ret
- if (write(stream->fd, &ch, 1) != 1)
- 3cbe: 4008 lw a0,0(s0)
- 3cc0: 4605 li a2,1
- 3cc2: 85de mv a1,s7
- char ch = (char)c;
- 3cc4: 00e107a3 sb a4,15(sp)
- if (write(stream->fd, &ch, 1) != 1)
- 3cc8: c28fc0ef jal f0 <write>
- 3ccc: f9350de3 beq a0,s3,3c66 <fputs+0x38>
- stream->error = 1;
- 3cd0: 01342423 sw s3,8(s0)
-}
- 3cd4: 60e6 ld ra,88(sp)
- 3cd6: 6446 ld s0,80(sp)
- 3cd8: 6906 ld s2,64(sp)
- 3cda: 79e2 ld s3,56(sp)
- 3cdc: 7a42 ld s4,48(sp)
- 3cde: 7aa2 ld s5,40(sp)
- 3ce0: 7b02 ld s6,32(sp)
- 3ce2: 6be2 ld s7,24(sp)
- 3ce4: 64a6 ld s1,72(sp)
- return -1;
- 3ce6: 557d li a0,-1
-}
- 3ce8: 6125 addi sp,sp,96
- 3cea: 8082 ret
- else if (stream->buf_mode == 1 && c == '\n')
- 3cec: f7471de3 bne a4,s4,3c66 <fputs+0x38>
- if (stream->buf_write_pos > 0)
- 3cf0: f6c05be3 blez a2,3c66 <fputs+0x38>
- int64 ret = write(stream->fd, stream->buffer, stream->buf_write_pos);
- 3cf4: 4008 lw a0,0(s0)
- 3cf6: 01040593 addi a1,s0,16
- 3cfa: bf6fc0ef jal f0 <write>
- if (ret < stream->buf_write_pos)
- 3cfe: 41042783 lw a5,1040(s0)
- 3d02: f8f55de3 bge a0,a5,3c9c <fputs+0x6e>
- stream->error = 1;
- 3d06: 4785 li a5,1
- 3d08: c41c sw a5,8(s0)
- stream->buf_write_pos = 0;
- 3d0a: 40042823 sw zero,1040(s0)
- return EOF;
- 3d0e: bfa1 j 3c66 <fputs+0x38>
- return -1;
- 3d10: 557d li a0,-1
-}
- 3d12: 8082 ret
-
-0000000000003d14 <fgetc>:
- if (!stream)
- 3d14: c949 beqz a0,3da6 <fgetc+0x92>
- if (stream->buf_write_pos > 0)
- 3d16: 41052603 lw a2,1040(a0)
-{
- 3d1a: 1141 addi sp,sp,-16
- 3d1c: e022 sd s0,0(sp)
- 3d1e: e406 sd ra,8(sp)
- 3d20: 842a mv s0,a0
- if (stream->buf_write_pos > 0)
- 3d22: 04c04863 bgtz a2,3d72 <fgetc+0x5e>
- if (stream->buf_read_pos < stream->buf_read_cnt)
- 3d26: 41442783 lw a5,1044(s0)
- 3d2a: 41842703 lw a4,1048(s0)
- 3d2e: 00e7dd63 bge a5,a4,3d48 <fgetc+0x34>
- return (unsigned char)stream->buffer[stream->buf_read_pos++];
- 3d32: 0017871b addiw a4,a5,1
- 3d36: 40e42a23 sw a4,1044(s0)
- 3d3a: 943e add s0,s0,a5
- 3d3c: 01044503 lbu a0,16(s0)
-}
- 3d40: 60a2 ld ra,8(sp)
- 3d42: 6402 ld s0,0(sp)
- 3d44: 0141 addi sp,sp,16
- 3d46: 8082 ret
- int64 ret = read(stream->fd, stream->buffer, BUFSIZ);
- 3d48: 4008 lw a0,0(s0)
- 3d4a: 40000613 li a2,1024
- 3d4e: 01040593 addi a1,s0,16
- 3d52: b96fc0ef jal e8 <read>
- 3d56: 87aa mv a5,a0
- if (ret <= 0)
- 3d58: 02a05e63 blez a0,3d94 <fgetc+0x80>
- stream->buf_read_cnt = (int)ret;
- 3d5c: 40f42c23 sw a5,1048(s0)
- return (unsigned char)stream->buffer[stream->buf_read_pos++];
- 3d60: 4785 li a5,1
- 3d62: 01044503 lbu a0,16(s0)
-}
- 3d66: 60a2 ld ra,8(sp)
- return (unsigned char)stream->buffer[stream->buf_read_pos++];
- 3d68: 40f42a23 sw a5,1044(s0)
-}
- 3d6c: 6402 ld s0,0(sp)
- 3d6e: 0141 addi sp,sp,16
- 3d70: 8082 ret
- int64 ret = write(stream->fd, stream->buffer, stream->buf_write_pos);
- 3d72: 4108 lw a0,0(a0)
- 3d74: 01040593 addi a1,s0,16
- 3d78: b78fc0ef jal f0 <write>
- if (ret < stream->buf_write_pos)
- 3d7c: 41042783 lw a5,1040(s0)
- 3d80: 00f54563 blt a0,a5,3d8a <fgetc+0x76>
- stream->buf_write_pos = 0;
- 3d84: 40042823 sw zero,1040(s0)
- 3d88: bf79 j 3d26 <fgetc+0x12>
- stream->error = 1;
- 3d8a: 4785 li a5,1
- 3d8c: c41c sw a5,8(s0)
- stream->buf_write_pos = 0;
- 3d8e: 40042823 sw zero,1040(s0)
- return EOF;
- 3d92: bf51 j 3d26 <fgetc+0x12>
- if (ret == 0)
- 3d94: e509 bnez a0,3d9e <fgetc+0x8a>
- stream->eof = 1;
- 3d96: 4785 li a5,1
- 3d98: c45c sw a5,12(s0)
- return EOF;
- 3d9a: 557d li a0,-1
- 3d9c: b755 j 3d40 <fgetc+0x2c>
- stream->error = 1;
- 3d9e: 4785 li a5,1
- 3da0: c41c sw a5,8(s0)
- return EOF;
- 3da2: 557d li a0,-1
- 3da4: bf71 j 3d40 <fgetc+0x2c>
- 3da6: 557d li a0,-1
-}
- 3da8: 8082 ret
-
-0000000000003daa <fgets>:
- if (!stream || n <= 0)
- 3daa: ce5d beqz a2,3e68 <fgets+0xbe>
- 3dac: 0ab05e63 blez a1,3e68 <fgets+0xbe>
-{
- 3db0: 715d addi sp,sp,-80
- 3db2: e0a2 sd s0,64(sp)
- 3db4: fc26 sd s1,56(sp)
- 3db6: f84a sd s2,48(sp)
- 3db8: f44e sd s3,40(sp)
- 3dba: f052 sd s4,32(sp)
- 3dbc: ec56 sd s5,24(sp)
- 3dbe: e85a sd s6,16(sp)
- 3dc0: e45e sd s7,8(sp)
- 3dc2: e486 sd ra,72(sp)
- 3dc4: 8432 mv s0,a2
- 3dc6: 8aaa mv s5,a0
- 3dc8: 892a mv s2,a0
- 3dca: fff58b9b addiw s7,a1,-1
- int i = 0, c;
- 3dce: 4481 li s1,0
- int64 ret = write(stream->fd, stream->buffer, stream->buf_write_pos);
- 3dd0: 01060993 addi s3,a2,16
- return (unsigned char)stream->buffer[stream->buf_read_pos++];
- 3dd4: 4b05 li s6,1
- if (c == '\n')
- 3dd6: 4a29 li s4,10
- while (i < n - 1)
- 3dd8: 05748163 beq s1,s7,3e1a <fgets+0x70>
- if (stream->buf_write_pos > 0)
- 3ddc: 41042603 lw a2,1040(s0)
- int64 ret = write(stream->fd, stream->buffer, stream->buf_write_pos);
- 3de0: 85ce mv a1,s3
- if (stream->buf_write_pos > 0)
- 3de2: 06c04963 bgtz a2,3e54 <fgets+0xaa>
- if (stream->buf_read_pos < stream->buf_read_cnt)
- 3de6: 41442783 lw a5,1044(s0)
- 3dea: 41842703 lw a4,1048(s0)
- int64 ret = read(stream->fd, stream->buffer, BUFSIZ);
- 3dee: 40000613 li a2,1024
- return (unsigned char)stream->buffer[stream->buf_read_pos++];
- 3df2: 0017851b addiw a0,a5,1
- 3df6: 00f406b3 add a3,s0,a5
- int64 ret = read(stream->fd, stream->buffer, BUFSIZ);
- 3dfa: 85ce mv a1,s3
- if (stream->buf_read_pos < stream->buf_read_cnt)
- 3dfc: 02e7de63 bge a5,a4,3e38 <fgets+0x8e>
- return (unsigned char)stream->buffer[stream->buf_read_pos++];
- 3e00: 40a42a23 sw a0,1044(s0)
- 3e04: 0106c783 lbu a5,16(a3)
- 3e08: 0007871b sext.w a4,a5
- str[i++] = (char)c;
- 3e0c: 00f90023 sb a5,0(s2)
- 3e10: 2485 addiw s1,s1,1
- if (c == '\n')
- 3e12: 0905 addi s2,s2,1
- 3e14: fd4712e3 bne a4,s4,3dd8 <fgets+0x2e>
- str[i++] = (char)c;
- 3e18: 8ba6 mv s7,s1
- str[i] = '\0';
- 3e1a: 9bd6 add s7,s7,s5
- 3e1c: 000b8023 sb zero,0(s7)
- return str;
- 3e20: 8556 mv a0,s5
-}
- 3e22: 60a6 ld ra,72(sp)
- 3e24: 6406 ld s0,64(sp)
- 3e26: 74e2 ld s1,56(sp)
- 3e28: 7942 ld s2,48(sp)
- 3e2a: 79a2 ld s3,40(sp)
- 3e2c: 7a02 ld s4,32(sp)
- 3e2e: 6ae2 ld s5,24(sp)
- 3e30: 6b42 ld s6,16(sp)
- 3e32: 6ba2 ld s7,8(sp)
- 3e34: 6161 addi sp,sp,80
- 3e36: 8082 ret
- int64 ret = read(stream->fd, stream->buffer, BUFSIZ);
- 3e38: 4008 lw a0,0(s0)
- 3e3a: aaefc0ef jal e8 <read>
- if (ret <= 0)
- 3e3e: 02a05c63 blez a0,3e76 <fgets+0xcc>
- return (unsigned char)stream->buffer[stream->buf_read_pos++];
- 3e42: 01044783 lbu a5,16(s0)
- stream->buf_read_cnt = (int)ret;
- 3e46: 40a42c23 sw a0,1048(s0)
- return (unsigned char)stream->buffer[stream->buf_read_pos++];
- 3e4a: 41642a23 sw s6,1044(s0)
- 3e4e: 0007871b sext.w a4,a5
- if (c == -1)
- 3e52: bf6d j 3e0c <fgets+0x62>
- int64 ret = write(stream->fd, stream->buffer, stream->buf_write_pos);
- 3e54: 4008 lw a0,0(s0)
- 3e56: a9afc0ef jal f0 <write>
- if (ret < stream->buf_write_pos)
- 3e5a: 41042783 lw a5,1040(s0)
- 3e5e: 00f54763 blt a0,a5,3e6c <fgets+0xc2>
- stream->buf_write_pos = 0;
- 3e62: 40042823 sw zero,1040(s0)
- 3e66: b741 j 3de6 <fgets+0x3c>
- return NULL;
- 3e68: 4501 li a0,0
-}
- 3e6a: 8082 ret
- stream->error = 1;
- 3e6c: 4785 li a5,1
- 3e6e: c41c sw a5,8(s0)
- stream->buf_write_pos = 0;
- 3e70: 40042823 sw zero,1040(s0)
- return EOF;
- 3e74: bf8d j 3de6 <fgets+0x3c>
- stream->eof = 1;
- 3e76: 4785 li a5,1
- if (ret == 0)
- 3e78: e509 bnez a0,3e82 <fgets+0xd8>
- stream->eof = 1;
- 3e7a: c45c sw a5,12(s0)
- if (i == 0)
- 3e7c: fcd1 bnez s1,3e18 <fgets+0x6e>
- return NULL;
- 3e7e: 4501 li a0,0
- 3e80: b74d j 3e22 <fgets+0x78>
- stream->error = 1;
- 3e82: c41c sw a5,8(s0)
- if (c == -1)
- 3e84: bfe5 j 3e7c <fgets+0xd2>
-
-0000000000003e86 <fread>:
-{
- 3e86: 715d addi sp,sp,-80
- 3e88: e486 sd ra,72(sp)
- 3e8a: f44e sd s3,40(sp)
- if (!stream || size == 0 || nmemb == 0)
- 3e8c: 0e068963 beqz a3,3f7e <fread+0xf8>
- 3e90: ec56 sd s5,24(sp)
- return 0;
- 3e92: 4981 li s3,0
- 3e94: 8aae mv s5,a1
- if (!stream || size == 0 || nmemb == 0)
- 3e96: c9bd beqz a1,3f0c <fread+0x86>
- 3e98: ca35 beqz a2,3f0c <fread+0x86>
- if (stream->buf_write_pos > 0)
- 3e9a: 4106a783 lw a5,1040(a3)
- 3e9e: e0a2 sd s0,64(sp)
- 3ea0: f052 sd s4,32(sp)
- uint64 total_bytes = size * nmemb;
- 3ea2: 02c589b3 mul s3,a1,a2
- 3ea6: 8436 mv s0,a3
- 3ea8: 8a2a mv s4,a0
- if (stream->buf_write_pos > 0)
- 3eaa: 0af04d63 bgtz a5,3f64 <fread+0xde>
- while (bytes_read < total_bytes)
- 3eae: 04098d63 beqz s3,3f08 <fread+0x82>
- 3eb2: fc26 sd s1,56(sp)
- 3eb4: e85a sd s6,16(sp)
- 3eb6: e45e sd s7,8(sp)
- 3eb8: f84a sd s2,48(sp)
- 3eba: 4481 li s1,0
- if (remaining >= BUFSIZ)
- 3ebc: 3ff00b13 li s6,1023
- int64 ret = read(stream->fd, stream->buffer, BUFSIZ);
- 3ec0: 01040b93 addi s7,s0,16
- if (stream->buf_read_pos < stream->buf_read_cnt)
- 3ec4: 41442703 lw a4,1044(s0)
- 3ec8: 41842783 lw a5,1048(s0)
- uint64 remaining = total_bytes - bytes_read;
- 3ecc: 40998633 sub a2,s3,s1
- if (stream->buf_read_pos < stream->buf_read_cnt)
- 3ed0: 06f74463 blt a4,a5,3f38 <fread+0xb2>
- int64 ret = read(stream->fd, dst + bytes_read, remaining);
- 3ed4: 4008 lw a0,0(s0)
- 3ed6: 009a05b3 add a1,s4,s1
- if (remaining >= BUFSIZ)
- 3eda: 02cb7f63 bgeu s6,a2,3f18 <fread+0x92>
- int64 ret = read(stream->fd, dst + bytes_read, remaining);
- 3ede: a0afc0ef jal e8 <read>
- if (ret <= 0)
- 3ee2: 0aa05463 blez a0,3f8a <fread+0x104>
- bytes_read += ret;
- 3ee6: 94aa add s1,s1,a0
- while (bytes_read < total_bytes)
- 3ee8: fd34eee3 bltu s1,s3,3ec4 <fread+0x3e>
- return bytes_read / size;
- 3eec: 0354d9b3 divu s3,s1,s5
- 3ef0: 6406 ld s0,64(sp)
-}
- 3ef2: 60a6 ld ra,72(sp)
- return bytes_read / size;
- 3ef4: 74e2 ld s1,56(sp)
- 3ef6: 7942 ld s2,48(sp)
- 3ef8: 7a02 ld s4,32(sp)
- 3efa: 6ae2 ld s5,24(sp)
- 3efc: 6b42 ld s6,16(sp)
- 3efe: 6ba2 ld s7,8(sp)
-}
- 3f00: 854e mv a0,s3
- 3f02: 79a2 ld s3,40(sp)
- 3f04: 6161 addi sp,sp,80
- 3f06: 8082 ret
- 3f08: 6406 ld s0,64(sp)
- 3f0a: 7a02 ld s4,32(sp)
- 3f0c: 60a6 ld ra,72(sp)
- 3f0e: 6ae2 ld s5,24(sp)
- 3f10: 854e mv a0,s3
- 3f12: 79a2 ld s3,40(sp)
- 3f14: 6161 addi sp,sp,80
- 3f16: 8082 ret
- stream->buf_read_pos = 0;
- 3f18: 40042a23 sw zero,1044(s0)
- stream->buf_read_cnt = 0;
- 3f1c: 40042c23 sw zero,1048(s0)
- int64 ret = read(stream->fd, stream->buffer, BUFSIZ);
- 3f20: 40000613 li a2,1024
- 3f24: 85de mv a1,s7
- 3f26: 9c2fc0ef jal e8 <read>
- if (ret <= 0)
- 3f2a: 06a05063 blez a0,3f8a <fread+0x104>
- stream->buf_read_cnt = (int)ret;
- 3f2e: 40a42c23 sw a0,1048(s0)
- while (bytes_read < total_bytes)
- 3f32: f934e9e3 bltu s1,s3,3ec4 <fread+0x3e>
- 3f36: bf5d j 3eec <fread+0x66>
- uint64 available = stream->buf_read_cnt - stream->buf_read_pos;
- 3f38: 40e7893b subw s2,a5,a4
- memcpy(dst + bytes_read, stream->buffer + stream->buf_read_pos, to_copy);
- 3f3c: 00eb85b3 add a1,s7,a4
- 3f40: 009a0533 add a0,s4,s1
- uint64 to_copy = (available < remaining) ? available : remaining;
- 3f44: 01267363 bgeu a2,s2,3f4a <fread+0xc4>
- 3f48: 8932 mv s2,a2
- memcpy(dst + bytes_read, stream->buffer + stream->buf_read_pos, to_copy);
- 3f4a: 864a mv a2,s2
- 3f4c: 3e1000ef jal 4b2c <memcpy>
- stream->buf_read_pos += to_copy;
- 3f50: 41442783 lw a5,1044(s0)
- bytes_read += to_copy;
- 3f54: 94ca add s1,s1,s2
- stream->buf_read_pos += to_copy;
- 3f56: 012787bb addw a5,a5,s2
- 3f5a: 40f42a23 sw a5,1044(s0)
- while (bytes_read < total_bytes)
- 3f5e: f734e3e3 bltu s1,s3,3ec4 <fread+0x3e>
- 3f62: b769 j 3eec <fread+0x66>
- int64 ret = write(stream->fd, stream->buffer, stream->buf_write_pos);
- 3f64: 4288 lw a0,0(a3)
- 3f66: 863e mv a2,a5
- 3f68: 01068593 addi a1,a3,16
- 3f6c: 984fc0ef jal f0 <write>
- if (ret < stream->buf_write_pos)
- 3f70: 41042783 lw a5,1040(s0)
- 3f74: 02f54163 blt a0,a5,3f96 <fread+0x110>
- stream->buf_write_pos = 0;
- 3f78: 40042823 sw zero,1040(s0)
- 3f7c: bf0d j 3eae <fread+0x28>
-}
- 3f7e: 60a6 ld ra,72(sp)
- return 0;
- 3f80: 4981 li s3,0
-}
- 3f82: 854e mv a0,s3
- 3f84: 79a2 ld s3,40(sp)
- 3f86: 6161 addi sp,sp,80
- 3f88: 8082 ret
- stream->eof = 1;
- 3f8a: 4785 li a5,1
- if (ret == 0)
- 3f8c: e119 bnez a0,3f92 <fread+0x10c>
- stream->eof = 1;
- 3f8e: c45c sw a5,12(s0)
- 3f90: bfb1 j 3eec <fread+0x66>
- stream->error = 1;
- 3f92: c41c sw a5,8(s0)
- return bytes_read / size;
- 3f94: bfa1 j 3eec <fread+0x66>
- stream->error = 1;
- 3f96: 4785 li a5,1
- 3f98: c41c sw a5,8(s0)
- stream->buf_write_pos = 0;
- 3f9a: 40042823 sw zero,1040(s0)
- return EOF;
- 3f9e: bf01 j 3eae <fread+0x28>
-
-0000000000003fa0 <fwrite>:
-{
- 3fa0: 711d addi sp,sp,-96
- 3fa2: ec86 sd ra,88(sp)
- 3fa4: e0ca sd s2,64(sp)
- if (!stream || !ptr || size == 0 || nmemb == 0)
- 3fa6: 10068063 beqz a3,40a6 <fwrite+0x106>
- 3faa: f456 sd s5,40(sp)
- 3fac: 8aaa mv s5,a0
- 3fae: 10050263 beqz a0,40b2 <fwrite+0x112>
- 3fb2: f05a sd s6,32(sp)
- return 0;
- 3fb4: 4901 li s2,0
- 3fb6: 8b2e mv s6,a1
- if (!stream || !ptr || size == 0 || nmemb == 0)
- 3fb8: c1d9 beqz a1,403e <fwrite+0x9e>
- 3fba: c251 beqz a2,403e <fwrite+0x9e>
- if (stream->buf_mode == 2)
- 3fbc: 41c6a703 lw a4,1052(a3)
- 3fc0: e8a2 sd s0,80(sp)
- 3fc2: 4789 li a5,2
- uint64 total_bytes = size * nmemb;
- 3fc4: 02c58933 mul s2,a1,a2
- if (stream->buf_mode == 2)
- 3fc8: 8436 mv s0,a3
- 3fca: 0ef70b63 beq a4,a5,40c0 <fwrite+0x120>
- 3fce: fc4e sd s3,56(sp)
- 3fd0: ec5e sd s7,24(sp)
- 3fd2: e862 sd s8,16(sp)
- uint64 bytes_written = 0;
- 3fd4: 4981 li s3,0
- 3fd6: 01068b93 addi s7,a3,16
- uint64 space_left = BUFSIZ - stream->buf_write_pos;
- 3fda: 40000c13 li s8,1024
- while (bytes_written < total_bytes)
- 3fde: 12090263 beqz s2,4102 <fwrite+0x162>
- 3fe2: e4a6 sd s1,72(sp)
- 3fe4: f852 sd s4,48(sp)
- 3fe6: e466 sd s9,8(sp)
- uint64 space_left = BUFSIZ - stream->buf_write_pos;
- 3fe8: 41042783 lw a5,1040(s0)
- uint64 remaining = total_bytes - bytes_written;
- 3fec: 41390cb3 sub s9,s2,s3
- memcpy(stream->buffer + stream->buf_write_pos, src + bytes_written, remaining);
- 3ff0: 013a85b3 add a1,s5,s3
- uint64 space_left = BUFSIZ - stream->buf_write_pos;
- 3ff4: 40fc0a3b subw s4,s8,a5
- memcpy(stream->buffer + stream->buf_write_pos, src + bytes_written, space_left);
- 3ff8: 00fb8533 add a0,s7,a5
- 3ffc: 8652 mv a2,s4
- if (remaining <= space_left)
- 3ffe: 059a6763 bltu s4,s9,404c <fwrite+0xac>
- memcpy(stream->buffer + stream->buf_write_pos, src + bytes_written, remaining);
- 4002: 8666 mv a2,s9
- 4004: 329000ef jal 4b2c <memcpy>
- stream->buf_write_pos += remaining;
- 4008: 41042783 lw a5,1040(s0)
- if (stream->buf_write_pos == BUFSIZ)
- 400c: 40000713 li a4,1024
- stream->buf_write_pos += remaining;
- 4010: 019786bb addw a3,a5,s9
- 4014: 40d42823 sw a3,1040(s0)
- if (stream->buf_write_pos == BUFSIZ)
- 4018: 06e68a63 beq a3,a4,408c <fwrite+0xec>
- return bytes_written / size;
- 401c: 03695933 divu s2,s2,s6
- 4020: 6446 ld s0,80(sp)
- 4022: 64a6 ld s1,72(sp)
- 4024: 79e2 ld s3,56(sp)
- 4026: 7a42 ld s4,48(sp)
- 4028: 7aa2 ld s5,40(sp)
- 402a: 7b02 ld s6,32(sp)
- 402c: 6be2 ld s7,24(sp)
- 402e: 6c42 ld s8,16(sp)
- 4030: 6ca2 ld s9,8(sp)
-}
- 4032: 60e6 ld ra,88(sp)
- 4034: 854a mv a0,s2
- 4036: 6906 ld s2,64(sp)
- 4038: 6125 addi sp,sp,96
- 403a: 8082 ret
- 403c: 6446 ld s0,80(sp)
- 403e: 60e6 ld ra,88(sp)
- 4040: 7aa2 ld s5,40(sp)
- 4042: 7b02 ld s6,32(sp)
- 4044: 854a mv a0,s2
- 4046: 6906 ld s2,64(sp)
- 4048: 6125 addi sp,sp,96
- 404a: 8082 ret
- memcpy(stream->buffer + stream->buf_write_pos, src + bytes_written, space_left);
- 404c: 2e1000ef jal 4b2c <memcpy>
- stream->buf_write_pos += space_left;
- 4050: 41042783 lw a5,1040(s0)
- int64 ret = write(stream->fd, stream->buffer, stream->buf_write_pos);
- 4054: 85de mv a1,s7
- bytes_written += space_left;
- 4056: 99d2 add s3,s3,s4
- stream->buf_write_pos += space_left;
- 4058: 00fa04bb addw s1,s4,a5
- int64 ret = write(stream->fd, stream->buffer, stream->buf_write_pos);
- 405c: 02049613 slli a2,s1,0x20
- stream->buf_write_pos += space_left;
- 4060: 40942823 sw s1,1040(s0)
- int64 ret = write(stream->fd, stream->buffer, stream->buf_write_pos);
- 4064: 9201 srli a2,a2,0x20
- if (stream->buf_write_pos > 0)
- 4066: 00904763 bgtz s1,4074 <fwrite+0xd4>
- while (bytes_written < total_bytes)
- 406a: f729efe3 bltu s3,s2,3fe8 <fwrite+0x48>
- return bytes_written / size;
- 406e: 0369d933 divu s2,s3,s6
- 4072: b77d j 4020 <fwrite+0x80>
- int64 ret = write(stream->fd, stream->buffer, stream->buf_write_pos);
- 4074: 4008 lw a0,0(s0)
- 4076: 87afc0ef jal f0 <write>
- if (ret < stream->buf_write_pos)
- 407a: 41042783 lw a5,1040(s0)
- 407e: 08f54963 blt a0,a5,4110 <fwrite+0x170>
- stream->buf_write_pos = 0;
- 4082: 40042823 sw zero,1040(s0)
- while (bytes_written < total_bytes)
- 4086: f729e1e3 bltu s3,s2,3fe8 <fwrite+0x48>
- 408a: b7d5 j 406e <fwrite+0xce>
- int64 ret = write(stream->fd, stream->buffer, stream->buf_write_pos);
- 408c: 4008 lw a0,0(s0)
- 408e: 40000613 li a2,1024
- 4092: 85de mv a1,s7
- 4094: 85cfc0ef jal f0 <write>
- if (ret < stream->buf_write_pos)
- 4098: 41042783 lw a5,1040(s0)
- 409c: 08f54163 blt a0,a5,411e <fwrite+0x17e>
- stream->buf_write_pos = 0;
- 40a0: 40042823 sw zero,1040(s0)
- 40a4: bfa5 j 401c <fwrite+0x7c>
-}
- 40a6: 60e6 ld ra,88(sp)
- return 0;
- 40a8: 4901 li s2,0
-}
- 40aa: 854a mv a0,s2
- 40ac: 6906 ld s2,64(sp)
- 40ae: 6125 addi sp,sp,96
- 40b0: 8082 ret
- 40b2: 60e6 ld ra,88(sp)
- return 0;
- 40b4: 4901 li s2,0
- 40b6: 7aa2 ld s5,40(sp)
-}
- 40b8: 854a mv a0,s2
- 40ba: 6906 ld s2,64(sp)
- 40bc: 6125 addi sp,sp,96
- 40be: 8082 ret
- while (bytes_written < total_bytes)
- 40c0: f6090ee3 beqz s2,403c <fwrite+0x9c>
- 40c4: e4a6 sd s1,72(sp)
- uint64 bytes_written = 0;
- 40c6: 4481 li s1,0
- 40c8: a021 j 40d0 <fwrite+0x130>
- bytes_written += ret;
- 40ca: 94aa add s1,s1,a0
- while (bytes_written < total_bytes)
- 40cc: 0324f463 bgeu s1,s2,40f4 <fwrite+0x154>
- int64 ret = write(stream->fd, src + bytes_written, total_bytes - bytes_written);
- 40d0: 4008 lw a0,0(s0)
- 40d2: 40990633 sub a2,s2,s1
- 40d6: 009a85b3 add a1,s5,s1
- 40da: 816fc0ef jal f0 <write>
- if (ret <= 0)
- 40de: fea046e3 bgtz a0,40ca <fwrite+0x12a>
- stream->error = 1;
- 40e2: 4785 li a5,1
- return bytes_written / size;
- 40e4: 0364d933 divu s2,s1,s6
- stream->error = 1;
- 40e8: c41c sw a5,8(s0)
- break;
- 40ea: 64a6 ld s1,72(sp)
- 40ec: 6446 ld s0,80(sp)
- 40ee: 7aa2 ld s5,40(sp)
- 40f0: 7b02 ld s6,32(sp)
- 40f2: b781 j 4032 <fwrite+0x92>
- return bytes_written / size;
- 40f4: 0364d933 divu s2,s1,s6
- 40f8: 6446 ld s0,80(sp)
- 40fa: 64a6 ld s1,72(sp)
- 40fc: 7aa2 ld s5,40(sp)
- 40fe: 7b02 ld s6,32(sp)
- 4100: bf0d j 4032 <fwrite+0x92>
- 4102: 6446 ld s0,80(sp)
- 4104: 79e2 ld s3,56(sp)
- 4106: 7aa2 ld s5,40(sp)
- 4108: 7b02 ld s6,32(sp)
- 410a: 6be2 ld s7,24(sp)
- 410c: 6c42 ld s8,16(sp)
- 410e: b715 j 4032 <fwrite+0x92>
- stream->error = 1;
- 4110: 4785 li a5,1
- 4112: c41c sw a5,8(s0)
- stream->buf_write_pos = 0;
- 4114: 40042823 sw zero,1040(s0)
- while (bytes_written < total_bytes)
- 4118: ed29e8e3 bltu s3,s2,3fe8 <fwrite+0x48>
- 411c: bf89 j 406e <fwrite+0xce>
- stream->error = 1;
- 411e: 4785 li a5,1
- 4120: c41c sw a5,8(s0)
- stream->buf_write_pos = 0;
- 4122: 40042823 sw zero,1040(s0)
- return EOF;
- 4126: bddd j 401c <fwrite+0x7c>
-
-0000000000004128 <fseek>:
- if (!stream)
- 4128: c925 beqz a0,4198 <fseek+0x70>
-{
- 412a: 1101 addi sp,sp,-32
- 412c: e04a sd s2,0(sp)
- 412e: 8932 mv s2,a2
- if (stream->buf_write_pos > 0)
- 4130: 41052603 lw a2,1040(a0)
-{
- 4134: e822 sd s0,16(sp)
- 4136: e426 sd s1,8(sp)
- 4138: ec06 sd ra,24(sp)
- 413a: 842a mv s0,a0
- 413c: 84ae mv s1,a1
- if (stream->buf_write_pos > 0)
- 413e: 02c04863 bgtz a2,416e <fseek+0x46>
- if (lseek(stream->fd, offset, whence) < 0)
- 4142: 4008 lw a0,0(s0)
- stream->buf_read_pos = 0;
- 4144: 40042a23 sw zero,1044(s0)
- stream->buf_read_cnt = 0;
- 4148: 40042c23 sw zero,1048(s0)
- stream->eof = 0;
- 414c: 00042623 sw zero,12(s0)
- if (lseek(stream->fd, offset, whence) < 0)
- 4150: 864a mv a2,s2
- 4152: 0004859b sext.w a1,s1
- 4156: 82afc0ef jal 180 <lseek>
- 415a: 87aa mv a5,a0
- return 0;
- 415c: 4501 li a0,0
- if (lseek(stream->fd, offset, whence) < 0)
- 415e: 0207c463 bltz a5,4186 <fseek+0x5e>
-}
- 4162: 60e2 ld ra,24(sp)
- 4164: 6442 ld s0,16(sp)
- 4166: 64a2 ld s1,8(sp)
- 4168: 6902 ld s2,0(sp)
- 416a: 6105 addi sp,sp,32
- 416c: 8082 ret
- int64 ret = write(stream->fd, stream->buffer, stream->buf_write_pos);
- 416e: 4108 lw a0,0(a0)
- 4170: 01040593 addi a1,s0,16
- 4174: f7dfb0ef jal f0 <write>
- if (ret < stream->buf_write_pos)
- 4178: 41042783 lw a5,1040(s0)
- 417c: 00f54963 blt a0,a5,418e <fseek+0x66>
- stream->buf_write_pos = 0;
- 4180: 40042823 sw zero,1040(s0)
- 4184: bf7d j 4142 <fseek+0x1a>
- stream->error = 1;
- 4186: 4785 li a5,1
- 4188: c41c sw a5,8(s0)
- return -1;
- 418a: 557d li a0,-1
- 418c: bfd9 j 4162 <fseek+0x3a>
- stream->error = 1;
- 418e: 4785 li a5,1
- 4190: c41c sw a5,8(s0)
- stream->buf_write_pos = 0;
- 4192: 40042823 sw zero,1040(s0)
- return EOF;
- 4196: b775 j 4142 <fseek+0x1a>
- return -1;
- 4198: 557d li a0,-1
-}
- 419a: 8082 ret
-
-000000000000419c <ftell>:
- if (!stream)
- 419c: c505 beqz a0,41c4 <ftell+0x28>
-{
- 419e: 1141 addi sp,sp,-16
- 41a0: e022 sd s0,0(sp)
- 41a2: 842a mv s0,a0
- int64 ret = lseek(stream->fd, 0, SEEK_CUR);
- 41a4: 4108 lw a0,0(a0)
- 41a6: 4605 li a2,1
- 41a8: 4581 li a1,0
-{
- 41aa: e406 sd ra,8(sp)
- int64 ret = lseek(stream->fd, 0, SEEK_CUR);
- 41ac: fd5fb0ef jal 180 <lseek>
- if (ret < 0)
- 41b0: 00054663 bltz a0,41bc <ftell+0x20>
-}
- 41b4: 60a2 ld ra,8(sp)
- 41b6: 6402 ld s0,0(sp)
- 41b8: 0141 addi sp,sp,16
- 41ba: 8082 ret
- stream->error = 1;
- 41bc: 4785 li a5,1
- 41be: c41c sw a5,8(s0)
- return -1L;
- 41c0: 557d li a0,-1
- 41c2: bfcd j 41b4 <ftell+0x18>
- 41c4: 557d li a0,-1
-}
- 41c6: 8082 ret
-
-00000000000041c8 <rewind>:
- if (stream)
- 41c8: c915 beqz a0,41fc <rewind+0x34>
- if (stream->buf_write_pos > 0)
- 41ca: 41052603 lw a2,1040(a0)
-{
- 41ce: 1141 addi sp,sp,-16
- 41d0: e022 sd s0,0(sp)
- 41d2: e406 sd ra,8(sp)
- 41d4: 842a mv s0,a0
- if (stream->buf_write_pos > 0)
- 41d6: 02c04463 bgtz a2,41fe <rewind+0x36>
- if (lseek(stream->fd, offset, whence) < 0)
- 41da: 4008 lw a0,0(s0)
- stream->buf_read_pos = 0;
- 41dc: 40042a23 sw zero,1044(s0)
- stream->buf_read_cnt = 0;
- 41e0: 40042c23 sw zero,1048(s0)
- stream->eof = 0;
- 41e4: 00042623 sw zero,12(s0)
- if (lseek(stream->fd, offset, whence) < 0)
- 41e8: 4601 li a2,0
- 41ea: 4581 li a1,0
- 41ec: f95fb0ef jal 180 <lseek>
-}
- 41f0: 60a2 ld ra,8(sp)
- stream->error = 0;
- 41f2: 00042423 sw zero,8(s0)
-}
- 41f6: 6402 ld s0,0(sp)
- 41f8: 0141 addi sp,sp,16
- 41fa: 8082 ret
- 41fc: 8082 ret
- int64 ret = write(stream->fd, stream->buffer, stream->buf_write_pos);
- 41fe: 4108 lw a0,0(a0)
- 4200: 01040593 addi a1,s0,16
- 4204: eedfb0ef jal f0 <write>
- if (ret < stream->buf_write_pos)
- 4208: 41042783 lw a5,1040(s0)
- 420c: 00f54563 blt a0,a5,4216 <rewind+0x4e>
- stream->buf_write_pos = 0;
- 4210: 40042823 sw zero,1040(s0)
- 4214: b7d9 j 41da <rewind+0x12>
- stream->error = 1;
- 4216: 4785 li a5,1
- 4218: c41c sw a5,8(s0)
- stream->buf_write_pos = 0;
- 421a: 40042823 sw zero,1040(s0)
- return EOF;
- 421e: bf75 j 41da <rewind+0x12>
-
-0000000000004220 <feof>:
- return (stream) ? stream->eof : 1;
- 4220: c119 beqz a0,4226 <feof+0x6>
- 4222: 4548 lw a0,12(a0)
- 4224: 8082 ret
- 4226: 4505 li a0,1
-}
- 4228: 8082 ret
-
-000000000000422a <ferror>:
- return (stream) ? stream->error : 1;
- 422a: c119 beqz a0,4230 <ferror+0x6>
- 422c: 4508 lw a0,8(a0)
- 422e: 8082 ret
- 4230: 4505 li a0,1
-}
- 4232: 8082 ret
-
-0000000000004234 <clearerr>:
- if (stream)
- 4234: c509 beqz a0,423e <clearerr+0xa>
- stream->error = 0;
- 4236: 00052423 sw zero,8(a0)
- stream->eof = 0;
- 423a: 00052623 sw zero,12(a0)
-}
- 423e: 8082 ret
-
-0000000000004240 <ungetc>:
- if (!stream || c == EOF)
- 4240: c19d beqz a1,4266 <ungetc+0x26>
- 4242: 57fd li a5,-1
- 4244: 02f50163 beq a0,a5,4266 <ungetc+0x26>
- if (stream->buf_read_pos > 0)
- 4248: 4145a783 lw a5,1044(a1)
- 424c: 00f05d63 blez a5,4266 <ungetc+0x26>
- stream->buf_read_pos--;
- 4250: fff7871b addiw a4,a5,-1
- 4254: 40e5aa23 sw a4,1044(a1)
- stream->buffer[stream->buf_read_pos] = (char)c;
- 4258: 00e587b3 add a5,a1,a4
- 425c: 00a78823 sb a0,16(a5)
- stream->eof = 0;
- 4260: 0005a623 sw zero,12(a1)
- return c;
- 4264: 8082 ret
- return EOF;
- 4266: 557d li a0,-1
- 4268: 8082 ret
-
-000000000000426a <strtoull.part.0>:
- return new_ptr;
-}
-
-/* String Conversion*/
-
-unsigned long long strtoull(const char *nptr, char **endptr, int base)
- 426a: 1141 addi sp,sp,-16
- 426c: e422 sd s0,8(sp)
- 426e: 8eaa mv t4,a0
-{
- const char *s = nptr;
- 4270: 88aa mv a7,a0
- static inline int isdigit(int c) { return c >= '0' && c <= '9'; }
- static inline int islower(int c) { return c >= 'a' && c <= 'z'; }
- static inline int isupper(int c) { return c >= 'A' && c <= 'Z'; }
- static inline int isalpha(int c) { return islower(c) || isupper(c); }
- static inline int isalnum(int c) { return isalpha(c) || isdigit(c); }
- static inline int isspace(int c) { return c == ' ' || c == '\t' || c == '\n' || c == '\v' || c == '\f' || c == '\r'; }
- 4272: 02000313 li t1,32
- 4276: 4e11 li t3,4
- return 0;
- }
-
- do
- {
- c = *s++;
- 4278: 0008c783 lbu a5,0(a7)
- 427c: 00188813 addi a6,a7,1
- 4280: ff77871b addiw a4,a5,-9
- 4284: 0ff77693 zext.b a3,a4
- 4288: 0007871b sext.w a4,a5
- 428c: 04678363 beq a5,t1,42d2 <strtoull.part.0+0x68>
- 4290: 04de7163 bgeu t3,a3,42d2 <strtoull.part.0+0x68>
- } while (isspace(c));
-
- if (c == '-')
- 4294: 02d00793 li a5,45
- 4298: 0ef70863 beq a4,a5,4388 <strtoull.part.0+0x11e>
- {
- neg = 1;
- c = *s++;
- }
- else if (c == '+')
- 429c: 02b00793 li a5,43
- int neg = 0, any, cutlim;
- 42a0: 4381 li t2,0
- else if (c == '+')
- 42a2: 08f70c63 beq a4,a5,433a <strtoull.part.0+0xd0>
- {
- c = *s++;
- }
-
- if ((base == 0 || base == 16) && c == '0' && (*s == 'x' || *s == 'X'))
- 42a6: ea05 bnez a2,42d6 <strtoull.part.0+0x6c>
- 42a8: 03000793 li a5,48
- 42ac: 0ef70463 beq a4,a5,4394 <strtoull.part.0+0x12a>
- 42b0: 00ccd8b7 lui a7,0xccd
- 42b4: ccd88893 addi a7,a7,-819 # cccccd <_ZSt4cerr+0xcc5445>
- 42b8: 08b2 slli a7,a7,0xc
- 42ba: ccd88893 addi a7,a7,-819
- 42be: 08b2 slli a7,a7,0xc
- 42c0: ccd88893 addi a7,a7,-819
- 42c4: 08b6 slli a7,a7,0xd
- 42c6: 4415 li s0,5
- 42c8: 99988893 addi a7,a7,-1639
- 42cc: 42a9 li t0,10
- c = s[1];
- s += 2;
- base = 16;
- }
- if (base == 0)
- base = (c == '0' ? 8 : 10);
- 42ce: 4629 li a2,10
- 42d0: a829 j 42ea <strtoull.part.0+0x80>
-unsigned long long strtoull(const char *nptr, char **endptr, int base)
- 42d2: 88c2 mv a7,a6
- 42d4: b755 j 4278 <strtoull.part.0+0xe>
- if ((base == 0 || base == 16) && c == '0' && (*s == 'x' || *s == 'X'))
- 42d6: 47c1 li a5,16
- 42d8: 0cf60d63 beq a2,a5,43b2 <strtoull.part.0+0x148>
-
- cutoff = ULLONG_MAX / (unsigned long long)base;
- 42dc: 58fd li a7,-1
- cutlim = ULLONG_MAX % (unsigned long long)base;
- 42de: 02c8f433 remu s0,a7,a2
- cutoff = ULLONG_MAX / (unsigned long long)base;
- 42e2: 82b2 mv t0,a2
- 42e4: 02c8d8b3 divu a7,a7,a2
- cutlim = ULLONG_MAX % (unsigned long long)base;
- 42e8: 2401 sext.w s0,s0
-
- for (acc = 0, any = 0;; c = *s++)
- 42ea: 4301 li t1,0
- 42ec: 4501 li a0,0
- {
- if (isdigit(c))
- 42ee: 4e25 li t3,9
- static inline int isalpha(int c) { return islower(c) || isupper(c); }
- 42f0: 4fe5 li t6,25
- break;
-
- if (c >= base)
- break;
-
- if (any < 0 || acc > cutoff || (acc == cutoff && c > cutlim))
- 42f2: 5f7d li t5,-1
- if (isdigit(c))
- 42f4: fd07079b addiw a5,a4,-48
- static inline int isdigit(int c) { return c >= '0' && c <= '9'; }
- 42f8: 0007069b sext.w a3,a4
- 42fc: 00fe7e63 bgeu t3,a5,4318 <strtoull.part.0+0xae>
- static inline int isalpha(int c) { return islower(c) || isupper(c); }
- 4300: f9f6879b addiw a5,a3,-97
- 4304: 04fff063 bgeu t6,a5,4344 <strtoull.part.0+0xda>
- 4308: fbf6869b addiw a3,a3,-65
- 430c: 04dfe163 bltu t6,a3,434e <strtoull.part.0+0xe4>
- c -= isupper(c) ? 'A' - 10 : 'a' - 10;
- 4310: 03700793 li a5,55
- 4314: 40f707bb subw a5,a4,a5
- if (c >= base)
- 4318: 02c7db63 bge a5,a2,434e <strtoull.part.0+0xe4>
- if (any < 0 || acc > cutoff || (acc == cutoff && c > cutlim))
- 431c: 01e30b63 beq t1,t5,4332 <strtoull.part.0+0xc8>
- any = -1;
- 4320: 537d li t1,-1
- if (any < 0 || acc > cutoff || (acc == cutoff && c > cutlim))
- 4322: 00a8e863 bltu a7,a0,4332 <strtoull.part.0+0xc8>
- 4326: 05150e63 beq a0,a7,4382 <strtoull.part.0+0x118>
- else
- {
- any = 1;
- 432a: 4305 li t1,1
- acc *= base;
- 432c: 02550533 mul a0,a0,t0
- acc += c;
- 4330: 953e add a0,a0,a5
- for (acc = 0, any = 0;; c = *s++)
- 4332: 0805 addi a6,a6,1
- 4334: fff84703 lbu a4,-1(a6)
- if (isdigit(c))
- 4338: bf75 j 42f4 <strtoull.part.0+0x8a>
- c = *s++;
- 433a: 00084703 lbu a4,0(a6)
- 433e: 00288813 addi a6,a7,2
- 4342: b795 j 42a6 <strtoull.part.0+0x3c>
- c -= isupper(c) ? 'A' - 10 : 'a' - 10;
- 4344: 05700793 li a5,87
- 4348: 40f707bb subw a5,a4,a5
- 434c: b7f1 j 4318 <strtoull.part.0+0xae>
- }
- }
-
- if (any < 0)
- 434e: 57fd li a5,-1
- 4350: 00f30e63 beq t1,a5,436c <strtoull.part.0+0x102>
- {
- acc = ULLONG_MAX;
- errno = ERANGE;
- }
- else if (neg)
- 4354: 00038463 beqz t2,435c <strtoull.part.0+0xf2>
- acc = -acc;
- 4358: 40a00533 neg a0,a0
-
- if (endptr != 0)
- 435c: c589 beqz a1,4366 <strtoull.part.0+0xfc>
- *endptr = (char *)(any ? s - 1 : nptr);
- 435e: 00031f63 bnez t1,437c <strtoull.part.0+0x112>
- 4362: 01d5b023 sd t4,0(a1)
-
- return acc;
-}
- 4366: 6422 ld s0,8(sp)
- 4368: 0141 addi sp,sp,16
- 436a: 8082 ret
- errno = ERANGE;
- 436c: 02200793 li a5,34
- 4370: 00003717 auipc a4,0x3
- 4374: 3ef72023 sw a5,992(a4) # 7750 <errno>
- acc = ULLONG_MAX;
- 4378: 557d li a0,-1
- if (endptr != 0)
- 437a: d5f5 beqz a1,4366 <strtoull.part.0+0xfc>
- *endptr = (char *)(any ? s - 1 : nptr);
- 437c: fff80e93 addi t4,a6,-1
- 4380: b7cd j 4362 <strtoull.part.0+0xf8>
- if (any < 0 || acc > cutoff || (acc == cutoff && c > cutlim))
- 4382: faf448e3 blt s0,a5,4332 <strtoull.part.0+0xc8>
- 4386: b755 j 432a <strtoull.part.0+0xc0>
- c = *s++;
- 4388: 00084703 lbu a4,0(a6)
- neg = 1;
- 438c: 4385 li t2,1
- c = *s++;
- 438e: 00288813 addi a6,a7,2
- 4392: bf11 j 42a6 <strtoull.part.0+0x3c>
- if ((base == 0 || base == 16) && c == '0' && (*s == 'x' || *s == 'X'))
- 4394: 00084783 lbu a5,0(a6)
- 4398: 05800693 li a3,88
- 439c: 0df7f793 andi a5,a5,223
- 43a0: 02d78b63 beq a5,a3,43d6 <strtoull.part.0+0x16c>
- 43a4: 58fd li a7,-1
- 43a6: 441d li s0,7
- 43a8: 0038d893 srli a7,a7,0x3
- 43ac: 42a1 li t0,8
- base = (c == '0' ? 8 : 10);
- 43ae: 4621 li a2,8
- 43b0: bf2d j 42ea <strtoull.part.0+0x80>
- if ((base == 0 || base == 16) && c == '0' && (*s == 'x' || *s == 'X'))
- 43b2: 03000793 li a5,48
- 43b6: 00f70863 beq a4,a5,43c6 <strtoull.part.0+0x15c>
- 43ba: 58fd li a7,-1
- 43bc: 443d li s0,15
- 43be: 0048d893 srli a7,a7,0x4
- 43c2: 42c1 li t0,16
- 43c4: b71d j 42ea <strtoull.part.0+0x80>
- 43c6: 00084783 lbu a5,0(a6)
- 43ca: 05800693 li a3,88
- 43ce: 0df7f793 andi a5,a5,223
- 43d2: fed794e3 bne a5,a3,43ba <strtoull.part.0+0x150>
- s += 2;
- 43d6: 58fd li a7,-1
- c = s[1];
- 43d8: 00184703 lbu a4,1(a6)
- s += 2;
- 43dc: 443d li s0,15
- 43de: 0809 addi a6,a6,2
- 43e0: 0048d893 srli a7,a7,0x4
- 43e4: 42c1 li t0,16
- base = 16;
- 43e6: 4641 li a2,16
- 43e8: b709 j 42ea <strtoull.part.0+0x80>
-
-00000000000043ea <atexit>:
- if (__atexit_func_count >= ATEXIT_MAX)
- 43ea: 00003717 auipc a4,0x3
- 43ee: 36670713 addi a4,a4,870 # 7750 <errno>
- 43f2: 435c lw a5,4(a4)
- 43f4: 46fd li a3,31
- 43f6: 00f6ca63 blt a3,a5,440a <atexit+0x20>
- __atexit_funcs[__atexit_func_count++] = function;
- 43fa: 00379693 slli a3,a5,0x3
- 43fe: 96ba add a3,a3,a4
- 4400: 2785 addiw a5,a5,1
- 4402: e688 sd a0,8(a3)
- 4404: c35c sw a5,4(a4)
- return 0;
- 4406: 4501 li a0,0
- 4408: 8082 ret
- return -1;
- 440a: 557d li a0,-1
-}
- 440c: 8082 ret
-
-000000000000440e <exit>:
-{
- 440e: 1101 addi sp,sp,-32
- 4410: e822 sd s0,16(sp)
- while (__atexit_func_count > 0)
- 4412: 00003417 auipc s0,0x3
- 4416: 33e40413 addi s0,s0,830 # 7750 <errno>
- 441a: 405c lw a5,4(s0)
-{
- 441c: e426 sd s1,8(sp)
- 441e: ec06 sd ra,24(sp)
- 4420: 84aa mv s1,a0
- while (__atexit_func_count > 0)
- 4422: 00f05d63 blez a5,443c <exit+0x2e>
- (__atexit_funcs[--__atexit_func_count])();
- 4426: fff7871b addiw a4,a5,-1
- 442a: 87ba mv a5,a4
- 442c: 070e slli a4,a4,0x3
- 442e: 9722 add a4,a4,s0
- 4430: 6718 ld a4,8(a4)
- 4432: c05c sw a5,4(s0)
- 4434: 9702 jalr a4
- while (__atexit_func_count > 0)
- 4436: 405c lw a5,4(s0)
- 4438: fef047e3 bgtz a5,4426 <exit+0x18>
- sys_exit(status);
- 443c: 8526 mv a0,s1
- 443e: c8bfb0ef jal c8 <sys_exit>
- while (1)
- 4442: a001 j 4442 <exit+0x34>
-
-0000000000004444 <abort>:
-{
- 4444: 1141 addi sp,sp,-16
- exit(127);
- 4446: 07f00513 li a0,127
-{
- 444a: e406 sd ra,8(sp)
- exit(127);
- 444c: fc3ff0ef jal 440e <exit>
-
-0000000000004450 <getenv>:
-}
- 4450: 4501 li a0,0
- 4452: 8082 ret
-
-0000000000004454 <system>:
-}
- 4454: 557d li a0,-1
- 4456: 8082 ret
-
-0000000000004458 <free>:
- if (!ptr)
- 4458: c121 beqz a0,4498 <free+0x40>
- for (p = freep; !(bp > p && bp < p->next); p = p->next)
- 445a: 00003617 auipc a2,0x3
- 445e: 2f660613 addi a2,a2,758 # 7750 <errno>
- 4462: 10863783 ld a5,264(a2)
- bp = (header_t *)ptr - 1;
- 4466: ff050693 addi a3,a0,-16
- if (p >= p->next && (bp > p || bp < p->next))
- 446a: 6798 ld a4,8(a5)
- for (p = freep; !(bp > p && bp < p->next); p = p->next)
- 446c: 02d7f763 bgeu a5,a3,449a <free+0x42>
- 4470: 00e6e463 bltu a3,a4,4478 <free+0x20>
- if (p >= p->next && (bp > p || bp < p->next))
- 4474: 02e7e763 bltu a5,a4,44a2 <free+0x4a>
- if ((char *)bp + bp->size == (char *)p->next)
- 4478: ff053583 ld a1,-16(a0)
- 447c: 00b68833 add a6,a3,a1
- 4480: 03070363 beq a4,a6,44a6 <free+0x4e>
- if ((char *)p + p->size == (char *)bp)
- 4484: 638c ld a1,0(a5)
- 4486: fee53c23 sd a4,-8(a0)
- 448a: 00b78833 add a6,a5,a1
- 448e: 03068963 beq a3,a6,44c0 <free+0x68>
- 4492: e794 sd a3,8(a5)
- freep = p;
- 4494: 10f63423 sd a5,264(a2)
-}
- 4498: 8082 ret
- if (p >= p->next && (bp > p || bp < p->next))
- 449a: 00e7e463 bltu a5,a4,44a2 <free+0x4a>
- 449e: fce6ede3 bltu a3,a4,4478 <free+0x20>
-{
- 44a2: 87ba mv a5,a4
- 44a4: b7d9 j 446a <free+0x12>
- bp->size += p->next->size;
- 44a6: 00073803 ld a6,0(a4)
- bp->next = p->next->next;
- 44aa: 6718 ld a4,8(a4)
- bp->size += p->next->size;
- 44ac: 95c2 add a1,a1,a6
- 44ae: feb53823 sd a1,-16(a0)
- if ((char *)p + p->size == (char *)bp)
- 44b2: 638c ld a1,0(a5)
- 44b4: fee53c23 sd a4,-8(a0)
- 44b8: 00b78833 add a6,a5,a1
- 44bc: fd069be3 bne a3,a6,4492 <free+0x3a>
- p->size += bp->size;
- 44c0: ff053503 ld a0,-16(a0)
- p->next = bp->next;
- 44c4: 86ba mv a3,a4
- p->size += bp->size;
- 44c6: 00b50733 add a4,a0,a1
- 44ca: e398 sd a4,0(a5)
- p->next = bp->next;
- 44cc: b7d9 j 4492 <free+0x3a>
-
-00000000000044ce <malloc>:
- if (size == 0)
- 44ce: c169 beqz a0,4590 <malloc+0xc2>
-{
- 44d0: 7179 addi sp,sp,-48
- 44d2: ec26 sd s1,24(sp)
- if ((prevp = freep) == NULL)
- 44d4: 00003497 auipc s1,0x3
- 44d8: 27c48493 addi s1,s1,636 # 7750 <errno>
- 44dc: 1084b783 ld a5,264(s1)
-{
- 44e0: f022 sd s0,32(sp)
- size = ALIGN(size + sizeof(header_t));
- 44e2: 057d addi a0,a0,31
-{
- 44e4: f406 sd ra,40(sp)
- size = ALIGN(size + sizeof(header_t));
- 44e6: ff057413 andi s0,a0,-16
- if ((prevp = freep) == NULL)
- 44ea: c3d1 beqz a5,456e <malloc+0xa0>
- for (p = prevp->next;; prevp = p, p = p->next)
- 44ec: 6788 ld a0,8(a5)
- if (p->size >= size)
- 44ee: 6118 ld a4,0(a0)
- 44f0: 06877163 bgeu a4,s0,4552 <malloc+0x84>
- 44f4: e44e sd s3,8(sp)
- 44f6: e052 sd s4,0(sp)
- 44f8: e84a sd s2,16(sp)
- if (nu < 4096)
- 44fa: 6a05 lui s4,0x1
- if (cp == (void *)-1)
- 44fc: 59fd li s3,-1
- 44fe: a029 j 4508 <malloc+0x3a>
- for (p = prevp->next;; prevp = p, p = p->next)
- 4500: 6788 ld a0,8(a5)
- if (p->size >= size)
- 4502: 6118 ld a4,0(a0)
- 4504: 04877463 bgeu a4,s0,454c <malloc+0x7e>
- if (p == freep)
- 4508: 1084b703 ld a4,264(s1)
- 450c: 87aa mv a5,a0
- 450e: fee519e3 bne a0,a4,4500 <malloc+0x32>
- if (nu < 4096)
- 4512: 8922 mv s2,s0
- 4514: 01447363 bgeu s0,s4,451a <malloc+0x4c>
- 4518: 6905 lui s2,0x1
- cp = (char *)sbrk(nu);
- 451a: 854a mv a0,s2
- 451c: c3dfb0ef jal 158 <sbrk>
- 4520: 87aa mv a5,a0
- free((void *)(up + 1));
- 4522: 0541 addi a0,a0,16
- if (cp == (void *)-1)
- 4524: 01378963 beq a5,s3,4536 <malloc+0x68>
- up->size = nu;
- 4528: 0127b023 sd s2,0(a5)
- free((void *)(up + 1));
- 452c: f2dff0ef jal 4458 <free>
- return freep;
- 4530: 1084b783 ld a5,264(s1)
- if ((p = morecore(size)) == NULL)
- 4534: f7f1 bnez a5,4500 <malloc+0x32>
-}
- 4536: 70a2 ld ra,40(sp)
- 4538: 7402 ld s0,32(sp)
- errno = ENOMEM;
- 453a: 47b1 li a5,12
- 453c: c09c sw a5,0(s1)
- return NULL;
- 453e: 6942 ld s2,16(sp)
- 4540: 69a2 ld s3,8(sp)
- 4542: 6a02 ld s4,0(sp)
-}
- 4544: 64e2 ld s1,24(sp)
- return NULL;
- 4546: 4501 li a0,0
-}
- 4548: 6145 addi sp,sp,48
- 454a: 8082 ret
- 454c: 6942 ld s2,16(sp)
- 454e: 69a2 ld s3,8(sp)
- 4550: 6a02 ld s4,0(sp)
- if (p->size == size)
- 4552: 02e40c63 beq s0,a4,458a <malloc+0xbc>
- p->size -= size;
- 4556: 8f01 sub a4,a4,s0
- 4558: e118 sd a4,0(a0)
- p = (header_t *)((char *)p + p->size);
- 455a: 953a add a0,a0,a4
- p->size = size;
- 455c: e100 sd s0,0(a0)
-}
- 455e: 70a2 ld ra,40(sp)
- 4560: 7402 ld s0,32(sp)
- freep = prevp;
- 4562: 10f4b423 sd a5,264(s1)
- return (void *)(p + 1);
- 4566: 0541 addi a0,a0,16
-}
- 4568: 64e2 ld s1,24(sp)
- 456a: 6145 addi sp,sp,48
- 456c: 8082 ret
- base.next = freep = prevp = &base;
- 456e: 00003517 auipc a0,0x3
- 4572: 2f250513 addi a0,a0,754 # 7860 <base>
- 4576: 10a4b423 sd a0,264(s1)
- 457a: 10a4bc23 sd a0,280(s1)
- base.size = 0;
- 457e: 00003797 auipc a5,0x3
- 4582: 2e07b123 sd zero,738(a5) # 7860 <base>
- if (p->size >= size)
- 4586: f43d bnez s0,44f4 <malloc+0x26>
- base.next = freep = prevp = &base;
- 4588: 87aa mv a5,a0
- prevp->next = p->next;
- 458a: 6518 ld a4,8(a0)
- 458c: e798 sd a4,8(a5)
- 458e: bfc1 j 455e <malloc+0x90>
- return NULL;
- 4590: 4501 li a0,0
-}
- 4592: 8082 ret
-
-0000000000004594 <calloc>:
- if (__builtin_mul_overflow(nmemb, size, &total))
- 4594: 02b537b3 mulhu a5,a0,a1
-{
- 4598: 1101 addi sp,sp,-32
- 459a: e822 sd s0,16(sp)
- 459c: ec06 sd ra,24(sp)
- 459e: e426 sd s1,8(sp)
- if (__builtin_mul_overflow(nmemb, size, &total))
- 45a0: 02b50433 mul s0,a0,a1
- 45a4: e385 bnez a5,45c4 <calloc+0x30>
- void *p = malloc(total);
- 45a6: 8522 mv a0,s0
- 45a8: f27ff0ef jal 44ce <malloc>
- 45ac: 84aa mv s1,a0
- if (p)
- 45ae: c509 beqz a0,45b8 <calloc+0x24>
- memset(p, 0, total);
- 45b0: 8622 mv a2,s0
- 45b2: 4581 li a1,0
- 45b4: 524000ef jal 4ad8 <memset>
-}
- 45b8: 60e2 ld ra,24(sp)
- 45ba: 6442 ld s0,16(sp)
- 45bc: 8526 mv a0,s1
- 45be: 64a2 ld s1,8(sp)
- 45c0: 6105 addi sp,sp,32
- 45c2: 8082 ret
- 45c4: 60e2 ld ra,24(sp)
- 45c6: 6442 ld s0,16(sp)
- errno = ENOMEM;
- 45c8: 47b1 li a5,12
- return NULL;
- 45ca: 4481 li s1,0
- errno = ENOMEM;
- 45cc: 00003717 auipc a4,0x3
- 45d0: 18f72223 sw a5,388(a4) # 7750 <errno>
-}
- 45d4: 8526 mv a0,s1
- 45d6: 64a2 ld s1,8(sp)
- 45d8: 6105 addi sp,sp,32
- 45da: 8082 ret
-
-00000000000045dc <realloc>:
- if (!ptr)
- 45dc: c929 beqz a0,462e <realloc+0x52>
-{
- 45de: 1101 addi sp,sp,-32
- 45e0: ec06 sd ra,24(sp)
- 45e2: e426 sd s1,8(sp)
- if (size == 0)
- 45e4: c5b9 beqz a1,4632 <realloc+0x56>
- if (bp->size >= new_size)
- 45e6: ff053703 ld a4,-16(a0)
- size_t new_size = ALIGN(size + sizeof(header_t));
- 45ea: 01f58793 addi a5,a1,31
- 45ee: e822 sd s0,16(sp)
- 45f0: 9bc1 andi a5,a5,-16
- 45f2: 842a mv s0,a0
- return ptr;
- 45f4: 84aa mv s1,a0
- if (bp->size >= new_size)
- 45f6: 00f76863 bltu a4,a5,4606 <realloc+0x2a>
- 45fa: 6442 ld s0,16(sp)
-}
- 45fc: 60e2 ld ra,24(sp)
- 45fe: 8526 mv a0,s1
- 4600: 64a2 ld s1,8(sp)
- 4602: 6105 addi sp,sp,32
- 4604: 8082 ret
- void *new_ptr = malloc(size);
- 4606: 852e mv a0,a1
- 4608: ec7ff0ef jal 44ce <malloc>
- 460c: 84aa mv s1,a0
- if (!new_ptr)
- 460e: d575 beqz a0,45fa <realloc+0x1e>
- memcpy(new_ptr, ptr, bp->size - sizeof(header_t));
- 4610: ff043603 ld a2,-16(s0)
- 4614: 85a2 mv a1,s0
- 4616: 1641 addi a2,a2,-16
- 4618: 514000ef jal 4b2c <memcpy>
- free(ptr);
- 461c: 8522 mv a0,s0
- 461e: e3bff0ef jal 4458 <free>
-}
- 4622: 60e2 ld ra,24(sp)
- free(ptr);
- 4624: 6442 ld s0,16(sp)
-}
- 4626: 8526 mv a0,s1
- 4628: 64a2 ld s1,8(sp)
- 462a: 6105 addi sp,sp,32
- 462c: 8082 ret
- return malloc(size);
- 462e: 852e mv a0,a1
- 4630: bd79 j 44ce <malloc>
- free(ptr);
- 4632: e27ff0ef jal 4458 <free>
- return NULL;
- 4636: 4481 li s1,0
- 4638: b7d1 j 45fc <realloc+0x20>
-
-000000000000463a <strtoull>:
- if (base < 0 || base == 1 || base > 36)
- 463a: 02400813 li a6,36
-{
- 463e: 86aa mv a3,a0
- 4640: 872e mv a4,a1
- if (base < 0 || base == 1 || base > 36)
- 4642: 00c86663 bltu a6,a2,464e <strtoull+0x14>
- 4646: 4805 li a6,1
- 4648: 01060363 beq a2,a6,464e <strtoull+0x14>
- 464c: b939 j 426a <strtoull.part.0>
- if (endptr)
- 464e: c311 beqz a4,4652 <strtoull+0x18>
- *endptr = (char *)nptr;
- 4650: e314 sd a3,0(a4)
- errno = 0; /* EINVAL */
- 4652: 00003797 auipc a5,0x3
- 4656: 0e07af23 sw zero,254(a5) # 7750 <errno>
-}
- 465a: 4501 li a0,0
- 465c: 8082 ret
-
-000000000000465e <strtoll>:
-
-long long strtoll(const char *nptr, char **endptr, int base)
-{
- 465e: 1141 addi sp,sp,-16
- 4660: e406 sd ra,8(sp)
- 4662: e022 sd s0,0(sp)
- const char *s = nptr;
- 4664: 86aa mv a3,a0
- static inline int isspace(int c) { return c == ' ' || c == '\t' || c == '\n' || c == '\v' || c == '\f' || c == '\r'; }
- 4666: 02000813 li a6,32
- 466a: 4891 li a7,4
- unsigned long long acc;
- int c, neg = 0;
-
- do
- {
- c = *s++;
- 466c: 0006c783 lbu a5,0(a3)
- 4670: 0685 addi a3,a3,1
- 4672: ff77871b addiw a4,a5,-9
- 4676: 0ff77713 zext.b a4,a4
- 467a: 0007841b sext.w s0,a5
- 467e: ff0787e3 beq a5,a6,466c <strtoll+0xe>
- 4682: fee8f5e3 bgeu a7,a4,466c <strtoll+0xe>
- if (base < 0 || base == 1 || base > 36)
- 4686: 02400793 li a5,36
- 468a: 02c7ec63 bltu a5,a2,46c2 <strtoll+0x64>
- 468e: 4785 li a5,1
- 4690: 02f60963 beq a2,a5,46c2 <strtoll+0x64>
- 4694: bd7ff0ef jal 426a <strtoull.part.0>
- if (c == '-')
- neg = 1;
-
- acc = strtoull(nptr, endptr, base);
-
- if (errno == ERANGE && acc == ULLONG_MAX)
- 4698: 00003797 auipc a5,0x3
- 469c: 0b878793 addi a5,a5,184 # 7750 <errno>
- 46a0: 4394 lw a3,0(a5)
- 46a2: 02200713 li a4,34
- 46a6: 04e68363 beq a3,a4,46ec <strtoll+0x8e>
- return neg ? LLONG_MIN : LLONG_MAX;
-
- if (!neg && acc > (unsigned long long)LLONG_MAX)
- 46aa: 02d00713 li a4,45
- 46ae: 02e40563 beq s0,a4,46d8 <strtoll+0x7a>
- 46b2: 00055f63 bgez a0,46d0 <strtoll+0x72>
- {
- errno = ERANGE;
- 46b6: 02200713 li a4,34
- 46ba: c398 sw a4,0(a5)
- return neg ? LLONG_MIN : LLONG_MAX;
- 46bc: 557d li a0,-1
- 46be: 8105 srli a0,a0,0x1
- 46c0: a801 j 46d0 <strtoll+0x72>
- if (endptr)
- 46c2: c191 beqz a1,46c6 <strtoll+0x68>
- *endptr = (char *)nptr;
- 46c4: e188 sd a0,0(a1)
- errno = 0; /* EINVAL */
- 46c6: 00003797 auipc a5,0x3
- 46ca: 0807a523 sw zero,138(a5) # 7750 <errno>
- {
- errno = ERANGE;
- return LLONG_MIN;
- }
-
- return neg ? -(long long)acc : (long long)acc;
- 46ce: 4501 li a0,0
-}
- 46d0: 60a2 ld ra,8(sp)
- 46d2: 6402 ld s0,0(sp)
- 46d4: 0141 addi sp,sp,16
- 46d6: 8082 ret
- if (neg && acc > (unsigned long long)LLONG_MAX + 1)
- 46d8: 577d li a4,-1
- 46da: 177e slli a4,a4,0x3f
- 46dc: 02a76263 bltu a4,a0,4700 <strtoll+0xa2>
-}
- 46e0: 60a2 ld ra,8(sp)
- 46e2: 6402 ld s0,0(sp)
- return neg ? -(long long)acc : (long long)acc;
- 46e4: 40a00533 neg a0,a0
-}
- 46e8: 0141 addi sp,sp,16
- 46ea: 8082 ret
- if (errno == ERANGE && acc == ULLONG_MAX)
- 46ec: 577d li a4,-1
- 46ee: fae51ee3 bne a0,a4,46aa <strtoll+0x4c>
- return neg ? LLONG_MIN : LLONG_MAX;
- 46f2: 02d00793 li a5,45
- 46f6: fcf413e3 bne s0,a5,46bc <strtoll+0x5e>
- return LLONG_MIN;
- 46fa: 557d li a0,-1
- 46fc: 157e slli a0,a0,0x3f
- 46fe: bfc9 j 46d0 <strtoll+0x72>
- errno = ERANGE;
- 4700: 02200713 li a4,34
- 4704: c398 sw a4,0(a5)
- return LLONG_MIN;
- 4706: bfd5 j 46fa <strtoll+0x9c>
-
-0000000000004708 <strtoul>:
- if (base < 0 || base == 1 || base > 36)
- 4708: 02400813 li a6,36
-
-unsigned long strtoul(const char *nptr, char **endptr, int base)
-{
- 470c: 86aa mv a3,a0
- 470e: 872e mv a4,a1
- if (base < 0 || base == 1 || base > 36)
- 4710: 00c86663 bltu a6,a2,471c <strtoul+0x14>
- 4714: 4805 li a6,1
- 4716: 01060363 beq a2,a6,471c <strtoul+0x14>
- 471a: be81 j 426a <strtoull.part.0>
- if (endptr)
- 471c: c311 beqz a4,4720 <strtoul+0x18>
- *endptr = (char *)nptr;
- 471e: e314 sd a3,0(a4)
- errno = 0; /* EINVAL */
- 4720: 00003797 auipc a5,0x3
- 4724: 0207a823 sw zero,48(a5) # 7750 <errno>
- {
- errno = ERANGE;
- return ULONG_MAX;
- }
- return (unsigned long)ret;
-}
- 4728: 4501 li a0,0
- 472a: 8082 ret
-
-000000000000472c <strtol>:
-
-long strtol(const char *nptr, char **endptr, int base)
-{
- long long ret = strtoll(nptr, endptr, base);
- 472c: bf0d j 465e <strtoll>
-
-000000000000472e <atoi>:
- return LONG_MIN;
- }
- return (long)ret;
-}
-
-int atoi(const char *nptr) { return (int)strtol(nptr, NULL, 10); }
- 472e: 1141 addi sp,sp,-16
- long long ret = strtoll(nptr, endptr, base);
- 4730: 4629 li a2,10
- 4732: 4581 li a1,0
-int atoi(const char *nptr) { return (int)strtol(nptr, NULL, 10); }
- 4734: e406 sd ra,8(sp)
- long long ret = strtoll(nptr, endptr, base);
- 4736: f29ff0ef jal 465e <strtoll>
-int atoi(const char *nptr) { return (int)strtol(nptr, NULL, 10); }
- 473a: 60a2 ld ra,8(sp)
- 473c: 2501 sext.w a0,a0
- 473e: 0141 addi sp,sp,16
- 4740: 8082 ret
-
-0000000000004742 <atol>:
- long long ret = strtoll(nptr, endptr, base);
- 4742: 4629 li a2,10
- 4744: 4581 li a1,0
- 4746: bf21 j 465e <strtoll>
-
-0000000000004748 <atoll>:
-long atol(const char *nptr) { return strtol(nptr, NULL, 10); }
-long long atoll(const char *nptr) { return strtoll(nptr, NULL, 10); }
- 4748: 4629 li a2,10
- 474a: 4581 li a1,0
- 474c: bf09 j 465e <strtoll>
-
-000000000000474e <strtod>:
- 474e: 02000693 li a3,32
- 4752: 4611 li a2,4
-{
- double val = 0.0;
- int sign = 1;
- const char *s = nptr;
-
- while (isspace(*s))
- 4754: 00054783 lbu a5,0(a0)
- 4758: ff77871b addiw a4,a5,-9
- 475c: 0ff77713 zext.b a4,a4
- 4760: 06d78263 beq a5,a3,47c4 <strtod+0x76>
- 4764: 06e67063 bgeu a2,a4,47c4 <strtod+0x76>
- s++;
- if (*s == '-')
- 4768: 02d00713 li a4,45
- 476c: 08e78e63 beq a5,a4,4808 <strtod+0xba>
- {
- sign = -1;
- s++;
- }
- else if (*s == '+')
- 4770: 02b00713 li a4,43
- 4774: 0ae78263 beq a5,a4,4818 <strtod+0xca>
- 4778: 00001717 auipc a4,0x1
- 477c: 0f073507 fld fa0,240(a4) # 5868 <STDIN_FD+0x10>
- static inline int isdigit(int c) { return c >= '0' && c <= '9'; }
- 4780: fd07861b addiw a2,a5,-48
- s++;
-
- while (isdigit(*s))
- 4784: 46a5 li a3,9
- 4786: f20007d3 fmv.d.x fa5,zero
- 478a: 8732 mv a4,a2
- 478c: 02c6e363 bltu a3,a2,47b2 <strtod+0x64>
- 4790: 00001797 auipc a5,0x1
- 4794: 0e07b687 fld fa3,224(a5) # 5870 <STDIN_FD+0x18>
- 4798: 4625 li a2,9
- 479a: 00154783 lbu a5,1(a0)
- {
- val = val * 10.0 + (*s - '0');
- 479e: d2070753 fcvt.d.w fa4,a4
- s++;
- 47a2: 0505 addi a0,a0,1
- 47a4: fd07869b addiw a3,a5,-48
- val = val * 10.0 + (*s - '0');
- 47a8: 72d7f7c3 fmadd.d fa5,fa5,fa3,fa4
- 47ac: 8736 mv a4,a3
- while (isdigit(*s))
- 47ae: fed676e3 bgeu a2,a3,479a <strtod+0x4c>
- }
- if (*s == '.')
- 47b2: 02e00713 li a4,46
- 47b6: 00e78963 beq a5,a4,47c8 <strtod+0x7a>
- val += (*s - '0') * factor;
- s++;
- }
- }
-
- if (endptr)
- 47ba: c191 beqz a1,47be <strtod+0x70>
- *endptr = (char *)s;
- 47bc: e188 sd a0,0(a1)
- return val * sign;
-}
- 47be: 12a7f553 fmul.d fa0,fa5,fa0
- 47c2: 8082 ret
- s++;
- 47c4: 0505 addi a0,a0,1
- 47c6: b779 j 4754 <strtod+0x6>
- while (isdigit(*s))
- 47c8: 00154703 lbu a4,1(a0)
- 47cc: 46a5 li a3,9
- s++;
- 47ce: 0505 addi a0,a0,1
- 47d0: fd07071b addiw a4,a4,-48
- 47d4: 87ba mv a5,a4
- while (isdigit(*s))
- 47d6: fee6e2e3 bltu a3,a4,47ba <strtod+0x6c>
- double factor = 1.0;
- 47da: 00001717 auipc a4,0x1
- 47de: 08e73707 fld fa4,142(a4) # 5868 <STDIN_FD+0x10>
- 47e2: 00001717 auipc a4,0x1
- 47e6: 0a673607 fld fa2,166(a4) # 5888 <STDIN_FD+0x30>
- factor *= 0.1;
- 47ea: 12c77753 fmul.d fa4,fa4,fa2
- while (isdigit(*s))
- 47ee: 00154703 lbu a4,1(a0)
- val += (*s - '0') * factor;
- 47f2: d20786d3 fcvt.d.w fa3,a5
- s++;
- 47f6: 0505 addi a0,a0,1
- 47f8: fd07071b addiw a4,a4,-48
- 47fc: 87ba mv a5,a4
- val += (*s - '0') * factor;
- 47fe: 7ae6f7c3 fmadd.d fa5,fa3,fa4,fa5
- while (isdigit(*s))
- 4802: fee6f4e3 bgeu a3,a4,47ea <strtod+0x9c>
- 4806: bf55 j 47ba <strtod+0x6c>
- while (isdigit(*s))
- 4808: 00154783 lbu a5,1(a0)
- 480c: 00001717 auipc a4,0x1
- 4810: 05473507 fld fa0,84(a4) # 5860 <STDIN_FD+0x8>
- s++;
- 4814: 0505 addi a0,a0,1
- 4816: b7ad j 4780 <strtod+0x32>
- while (isdigit(*s))
- 4818: 00154783 lbu a5,1(a0)
- 481c: 00001717 auipc a4,0x1
- 4820: 04c73507 fld fa0,76(a4) # 5868 <STDIN_FD+0x10>
- s++;
- 4824: 0505 addi a0,a0,1
- 4826: bfa9 j 4780 <strtod+0x32>
-
-0000000000004828 <atof>:
-
-double atof(const char *nptr) { return strtod(nptr, NULL); }
- 4828: 4581 li a1,0
- 482a: b715 j 474e <strtod>
-
-000000000000482c <strtof>:
-float strtof(const char *nptr, char **endptr) { return (float)strtod(nptr, endptr); }
- 482c: 1141 addi sp,sp,-16
- 482e: e406 sd ra,8(sp)
- 4830: f1fff0ef jal 474e <strtod>
- 4834: 60a2 ld ra,8(sp)
- 4836: 40157553 fcvt.s.d fa0,fa0
- 483a: 0141 addi sp,sp,16
- 483c: 8082 ret
-
-000000000000483e <qsort>:
- }
-}
-
-void qsort(void *base, size_t nmemb, size_t size, int (*compar)(const void *, const void *))
-{
- if (nmemb < 2 || size == 0)
- 483e: 4785 li a5,1
- 4840: 0cb7fd63 bgeu a5,a1,491a <qsort+0xdc>
-{
- 4844: 715d addi sp,sp,-80
- 4846: f44e sd s3,40(sp)
- 4848: e486 sd ra,72(sp)
- 484a: 89b2 mv s3,a2
- if (nmemb < 2 || size == 0)
- 484c: c279 beqz a2,4912 <qsort+0xd4>
- 484e: e85a sd s6,16(sp)
- 4850: 8b2e mv s6,a1
- return;
-
- char *base_ptr = (char *)base;
- char *pivot = base_ptr + (nmemb - 1) * size;
- 4852: 1b7d addi s6,s6,-1
- 4854: fc26 sd s1,56(sp)
- 4856: 033b04b3 mul s1,s6,s3
- 485a: ec56 sd s5,24(sp)
- 485c: 8aaa mv s5,a0
- 485e: f052 sd s4,32(sp)
- 4860: e45e sd s7,8(sp)
- 4862: e0a2 sd s0,64(sp)
- 4864: f84a sd s2,48(sp)
- 4866: 8a36 mv s4,a3
- if (nmemb < 2 || size == 0)
- 4868: 4b85 li s7,1
- char *pivot = base_ptr + (nmemb - 1) * size;
- 486a: 94d6 add s1,s1,s5
- char *i = base_ptr;
- char *j = base_ptr;
-
- /* Partition */
- for (; j < pivot; j += size)
- 486c: 069af763 bgeu s5,s1,48da <qsort+0x9c>
- char *j = base_ptr;
- 4870: 8956 mv s2,s5
- char *i = base_ptr;
- 4872: 8456 mv s0,s5
- 4874: a021 j 487c <qsort+0x3e>
- for (; j < pivot; j += size)
- 4876: 994e add s2,s2,s3
- 4878: 00997f63 bgeu s2,s1,4896 <qsort+0x58>
- {
- if (compar(j, pivot) < 0)
- 487c: 85a6 mv a1,s1
- 487e: 854a mv a0,s2
- 4880: 9a02 jalr s4
- 4882: fe055ae3 bgez a0,4876 <qsort+0x38>
- {
- if (i != j)
- 4886: 05241d63 bne s0,s2,48e0 <qsort+0xa2>
- 488a: 01390633 add a2,s2,s3
- swap_bytes(i, j, size);
- i += size;
- 488e: 8432 mv s0,a2
- for (; j < pivot; j += size)
- 4890: 994e add s2,s2,s3
- 4892: fe9965e3 bltu s2,s1,487c <qsort+0x3e>
- }
- }
- swap_bytes(i, pivot, size);
-
- /* Recurse */
- size_t left_count = (i - base_ptr) / size;
- 4896: 415405b3 sub a1,s0,s5
- 489a: 0335d5b3 divu a1,a1,s3
- qsort(base, left_count, size, compar);
- qsort(i + size, nmemb - left_count - 1, size, compar);
- 489e: 40bb0b33 sub s6,s6,a1
- while (size--)
- 48a2: 013406b3 add a3,s0,s3
- *a++ = *b;
- 48a6: 0004c703 lbu a4,0(s1)
- temp = *a;
- 48aa: 00044783 lbu a5,0(s0)
- *b++ = temp;
- 48ae: 0485 addi s1,s1,1
- *a++ = *b;
- 48b0: 0405 addi s0,s0,1
- 48b2: fee40fa3 sb a4,-1(s0)
- *b++ = temp;
- 48b6: fef48fa3 sb a5,-1(s1)
- while (size--)
- 48ba: fed416e3 bne s0,a3,48a6 <qsort+0x68>
- qsort(base, left_count, size, compar);
- 48be: 86d2 mv a3,s4
- 48c0: 864e mv a2,s3
- 48c2: 8556 mv a0,s5
- 48c4: f7bff0ef jal 483e <qsort>
- if (nmemb < 2 || size == 0)
- 48c8: 036bfe63 bgeu s7,s6,4904 <qsort+0xc6>
- char *pivot = base_ptr + (nmemb - 1) * size;
- 48cc: 1b7d addi s6,s6,-1
- 48ce: 033b04b3 mul s1,s6,s3
- 48d2: 8aa2 mv s5,s0
- 48d4: 94d6 add s1,s1,s5
- for (; j < pivot; j += size)
- 48d6: f89aede3 bltu s5,s1,4870 <qsort+0x32>
- char *i = base_ptr;
- 48da: 8456 mv s0,s5
- for (; j < pivot; j += size)
- 48dc: 4581 li a1,0
- 48de: b7d1 j 48a2 <qsort+0x64>
- 48e0: 01340633 add a2,s0,s3
- if (i != j)
- 48e4: 874a mv a4,s2
- 48e6: 87a2 mv a5,s0
- *a++ = *b;
- 48e8: 00074683 lbu a3,0(a4)
- temp = *a;
- 48ec: 0007c803 lbu a6,0(a5)
- *b++ = temp;
- 48f0: 0705 addi a4,a4,1
- *a++ = *b;
- 48f2: 0785 addi a5,a5,1
- 48f4: fed78fa3 sb a3,-1(a5)
- *b++ = temp;
- 48f8: ff070fa3 sb a6,-1(a4)
- while (size--)
- 48fc: fec796e3 bne a5,a2,48e8 <qsort+0xaa>
- i += size;
- 4900: 8432 mv s0,a2
- 4902: b779 j 4890 <qsort+0x52>
- 4904: 6406 ld s0,64(sp)
- 4906: 74e2 ld s1,56(sp)
- 4908: 7942 ld s2,48(sp)
- 490a: 7a02 ld s4,32(sp)
- 490c: 6ae2 ld s5,24(sp)
- 490e: 6b42 ld s6,16(sp)
- 4910: 6ba2 ld s7,8(sp)
-}
- 4912: 60a6 ld ra,72(sp)
- 4914: 79a2 ld s3,40(sp)
- 4916: 6161 addi sp,sp,80
- 4918: 8082 ret
- 491a: 8082 ret
-
-000000000000491c <bsearch>:
-
-void *bsearch(const void *key, const void *base, size_t nmemb, size_t size, int (*compar)(const void *, const void *))
-{
- 491c: 715d addi sp,sp,-80
- 491e: e486 sd ra,72(sp)
- 4920: fc26 sd s1,56(sp)
- size_t l = 0, u = nmemb;
- while (l < u)
- 4922: c629 beqz a2,496c <bsearch+0x50>
- 4924: f84a sd s2,48(sp)
- 4926: f44e sd s3,40(sp)
- 4928: f052 sd s4,32(sp)
- 492a: ec56 sd s5,24(sp)
- 492c: e85a sd s6,16(sp)
- 492e: e45e sd s7,8(sp)
- 4930: e0a2 sd s0,64(sp)
- 4932: 8932 mv s2,a2
- 4934: 8a2a mv s4,a0
- 4936: 8aae mv s5,a1
- 4938: 8b36 mv s6,a3
- 493a: 8bba mv s7,a4
- size_t l = 0, u = nmemb;
- 493c: 4981 li s3,0
- {
- size_t idx = (l + u) / 2;
- 493e: 01298433 add s0,s3,s2
- 4942: 8005 srli s0,s0,0x1
- const void *p = (void *)((const char *)base + (idx * size));
- 4944: 036404b3 mul s1,s0,s6
- int cmp = compar(key, p);
- 4948: 8552 mv a0,s4
- const void *p = (void *)((const char *)base + (idx * size));
- 494a: 94d6 add s1,s1,s5
- int cmp = compar(key, p);
- 494c: 85a6 mv a1,s1
- 494e: 9b82 jalr s7
- if (cmp < 0)
- 4950: 02054463 bltz a0,4978 <bsearch+0x5c>
- u = idx;
- else if (cmp > 0)
- 4954: c515 beqz a0,4980 <bsearch+0x64>
- l = idx + 1;
- 4956: 00140993 addi s3,s0,1
- while (l < u)
- 495a: ff29e2e3 bltu s3,s2,493e <bsearch+0x22>
- 495e: 6406 ld s0,64(sp)
- 4960: 7942 ld s2,48(sp)
- 4962: 79a2 ld s3,40(sp)
- 4964: 7a02 ld s4,32(sp)
- 4966: 6ae2 ld s5,24(sp)
- 4968: 6b42 ld s6,16(sp)
- 496a: 6ba2 ld s7,8(sp)
- else
- return (void *)p;
- }
- return NULL;
-}
- 496c: 60a6 ld ra,72(sp)
- return NULL;
- 496e: 4481 li s1,0
-}
- 4970: 8526 mv a0,s1
- 4972: 74e2 ld s1,56(sp)
- 4974: 6161 addi sp,sp,80
- 4976: 8082 ret
- u = idx;
- 4978: 8922 mv s2,s0
- while (l < u)
- 497a: fd29e2e3 bltu s3,s2,493e <bsearch+0x22>
- 497e: b7c5 j 495e <bsearch+0x42>
- 4980: 6406 ld s0,64(sp)
-}
- 4982: 60a6 ld ra,72(sp)
- 4984: 7942 ld s2,48(sp)
- 4986: 79a2 ld s3,40(sp)
- 4988: 7a02 ld s4,32(sp)
- 498a: 6ae2 ld s5,24(sp)
- 498c: 6b42 ld s6,16(sp)
- 498e: 6ba2 ld s7,8(sp)
- 4990: 8526 mv a0,s1
- 4992: 74e2 ld s1,56(sp)
- 4994: 6161 addi sp,sp,80
- 4996: 8082 ret
-
-0000000000004998 <abs>:
-
-/* Math & Mics */
-
-int abs(int j) { return (j < 0) ? -j : j; }
- 4998: 41f5579b sraiw a5,a0,0x1f
- 499c: 8d3d xor a0,a0,a5
- 499e: 9d1d subw a0,a0,a5
- 49a0: 8082 ret
-
-00000000000049a2 <labs>:
-long labs(long j) { return (j < 0) ? -j : j; }
- 49a2: 43f55793 srai a5,a0,0x3f
- 49a6: 8d3d xor a0,a0,a5
- 49a8: 8d1d sub a0,a0,a5
- 49aa: 8082 ret
-
-00000000000049ac <llabs>:
-long long llabs(long long j) { return (j < 0) ? -j : j; }
- 49ac: 43f55793 srai a5,a0,0x3f
- 49b0: 8d3d xor a0,a0,a5
- 49b2: 8d1d sub a0,a0,a5
- 49b4: 8082 ret
-
-00000000000049b6 <div>:
-
-div_t div(int numer, int denom)
-{
- div_t res = {numer / denom, numer % denom};
- 49b6: 02b547bb divw a5,a0,a1
-{
- 49ba: 1141 addi sp,sp,-16
- return res;
-}
- 49bc: 0141 addi sp,sp,16
- div_t res = {numer / denom, numer % denom};
- 49be: 02b5653b remw a0,a0,a1
- return res;
- 49c2: 1782 slli a5,a5,0x20
- 49c4: 9381 srli a5,a5,0x20
- 49c6: 1502 slli a0,a0,0x20
-}
- 49c8: 8d5d or a0,a0,a5
- 49ca: 8082 ret
-
-00000000000049cc <ldiv>:
-ldiv_t ldiv(long numer, long denom)
-{
- 49cc: 1141 addi sp,sp,-16
- 49ce: 87aa mv a5,a0
- ldiv_t res = {numer / denom, numer % denom};
- return res;
-}
- 49d0: 02b54533 div a0,a0,a1
- 49d4: 0141 addi sp,sp,16
- 49d6: 02b7e5b3 rem a1,a5,a1
- 49da: 8082 ret
-
-00000000000049dc <lldiv>:
-lldiv_t lldiv(long long numer, long long denom)
-{
- 49dc: 1141 addi sp,sp,-16
- 49de: 87aa mv a5,a0
- lldiv_t res = {numer / denom, numer % denom};
- return res;
-}
- 49e0: 02b54533 div a0,a0,a1
- 49e4: 0141 addi sp,sp,16
- 49e6: 02b7e5b3 rem a1,a5,a1
- 49ea: 8082 ret
-
-00000000000049ec <rand>:
-
-static unsigned long next = 1;
-int rand(void)
-{
- next = next * 1103515245 + 12345;
- 49ec: 00003697 auipc a3,0x3
- 49f0: d1c68693 addi a3,a3,-740 # 7708 <next>
- 49f4: 629c ld a5,0(a3)
- 49f6: 41c65737 lui a4,0x41c65
- 49fa: e6d70713 addi a4,a4,-403 # 41c64e6d <_ZSt4cerr+0x41c5d5e5>
- 49fe: 02e787b3 mul a5,a5,a4
- 4a02: 670d lui a4,0x3
- 4a04: 03970713 addi a4,a4,57 # 3039 <sprintf+0x33>
- 4a08: 97ba add a5,a5,a4
- return (unsigned int)(next / 65536) % 32768;
- 4a0a: 02179513 slli a0,a5,0x21
- next = next * 1103515245 + 12345;
- 4a0e: e29c sd a5,0(a3)
-}
- 4a10: 9145 srli a0,a0,0x31
- 4a12: 8082 ret
-
-0000000000004a14 <srand>:
-void srand(unsigned int seed) { next = seed; }
- 4a14: 1502 slli a0,a0,0x20
- 4a16: 9101 srli a0,a0,0x20
- 4a18: 00003797 auipc a5,0x3
- 4a1c: cea7b823 sd a0,-784(a5) # 7708 <next>
- 4a20: 8082 ret
-
-0000000000004a22 <mblen>:
-
-/* Stub */
-int mblen(const char *s, size_t n) { return (s && *s && n) ? 1 : 0; }
- 4a22: c901 beqz a0,4a32 <mblen+0x10>
- 4a24: 00054783 lbu a5,0(a0)
- 4a28: 4501 li a0,0
- 4a2a: c789 beqz a5,4a34 <mblen+0x12>
- 4a2c: 00b03533 snez a0,a1
- 4a30: 8082 ret
- 4a32: 4501 li a0,0
- 4a34: 8082 ret
-
-0000000000004a36 <mbtowc>:
-int mbtowc(wchar_t *pwc, const char *s, size_t n)
-{
- 4a36: 87aa mv a5,a0
- if (!s)
- 4a38: cd81 beqz a1,4a50 <mbtowc+0x1a>
- return 0;
- if (n == 0)
- return -1;
- 4a3a: 557d li a0,-1
- if (n == 0)
- 4a3c: ca19 beqz a2,4a52 <mbtowc+0x1c>
- if (pwc)
- 4a3e: c781 beqz a5,4a46 <mbtowc+0x10>
- *pwc = (wchar_t)*s;
- 4a40: 0005c703 lbu a4,0(a1)
- 4a44: c398 sw a4,0(a5)
- return (*s != 0);
- 4a46: 0005c503 lbu a0,0(a1)
- 4a4a: 00a03533 snez a0,a0
- 4a4e: 8082 ret
- return 0;
- 4a50: 4501 li a0,0
-}
- 4a52: 8082 ret
-
-0000000000004a54 <wctomb>:
-int wctomb(char *s, wchar_t wchar)
-{
- if (!s)
- 4a54: c509 beqz a0,4a5e <wctomb+0xa>
- return 0;
- *s = (char)wchar;
- 4a56: 00b50023 sb a1,0(a0)
- return 1;
- 4a5a: 4505 li a0,1
- 4a5c: 8082 ret
- return 0;
- 4a5e: 4501 li a0,0
-}
- 4a60: 8082 ret
-
-0000000000004a62 <mbstowcs>:
-size_t mbstowcs(wchar_t *dest, const char *src, size_t n)
-{
- size_t i = 0;
- while (src[i] && i < n)
- 4a62: 0005c703 lbu a4,0(a1)
- 4a66: cb0d beqz a4,4a98 <mbstowcs+0x36>
- 4a68: ca15 beqz a2,4a9c <mbstowcs+0x3a>
- 4a6a: 86aa mv a3,a0
- size_t i = 0;
- 4a6c: 4781 li a5,0
- 4a6e: a019 j 4a74 <mbstowcs+0x12>
- while (src[i] && i < n)
- 4a70: 02f60263 beq a2,a5,4a94 <mbstowcs+0x32>
- {
- dest[i] = (wchar_t)src[i];
- i++;
- 4a74: 0785 addi a5,a5,1
- dest[i] = (wchar_t)src[i];
- 4a76: c298 sw a4,0(a3)
- while (src[i] && i < n)
- 4a78: 00f58733 add a4,a1,a5
- 4a7c: 00074703 lbu a4,0(a4)
- 4a80: 0691 addi a3,a3,4
- 4a82: f77d bnez a4,4a70 <mbstowcs+0xe>
- }
- if (i < n)
- 4a84: 00c7f763 bgeu a5,a2,4a92 <mbstowcs+0x30>
- dest[i] = 0;
- 4a88: 00279713 slli a4,a5,0x2
- 4a8c: 953a add a0,a0,a4
- 4a8e: 00052023 sw zero,0(a0)
- size_t i = 0;
- 4a92: 863e mv a2,a5
- 4a94: 8532 mv a0,a2
- 4a96: 8082 ret
- 4a98: 4781 li a5,0
- 4a9a: b7ed j 4a84 <mbstowcs+0x22>
- 4a9c: 4501 li a0,0
- return i;
-}
- 4a9e: 8082 ret
-
-0000000000004aa0 <wcstombs>:
-size_t wcstombs(char *dest, const wchar_t *src, size_t n)
-{
- size_t i = 0;
- while (src[i] && i < n)
- 4aa0: 4198 lw a4,0(a1)
- 4aa2: c71d beqz a4,4ad0 <wcstombs+0x30>
- 4aa4: ca05 beqz a2,4ad4 <wcstombs+0x34>
- 4aa6: 0591 addi a1,a1,4
- size_t i = 0;
- 4aa8: 4781 li a5,0
- 4aaa: a019 j 4ab0 <wcstombs+0x10>
- while (src[i] && i < n)
- 4aac: 02f60063 beq a2,a5,4acc <wcstombs+0x2c>
- {
- dest[i] = (char)src[i];
- 4ab0: 00f506b3 add a3,a0,a5
- 4ab4: 00e68023 sb a4,0(a3)
- while (src[i] && i < n)
- 4ab8: 4198 lw a4,0(a1)
- i++;
- 4aba: 0785 addi a5,a5,1
- while (src[i] && i < n)
- 4abc: 0591 addi a1,a1,4
- 4abe: f77d bnez a4,4aac <wcstombs+0xc>
- }
- if (i < n)
- 4ac0: 00c7f563 bgeu a5,a2,4aca <wcstombs+0x2a>
- dest[i] = 0;
- 4ac4: 953e add a0,a0,a5
- 4ac6: 00050023 sb zero,0(a0)
- size_t i = 0;
- 4aca: 863e mv a2,a5
- 4acc: 8532 mv a0,a2
- 4ace: 8082 ret
- 4ad0: 4781 li a5,0
- 4ad2: b7fd j 4ac0 <wcstombs+0x20>
- 4ad4: 4501 li a0,0
- return i;
- 4ad6: 8082 ret
-
-0000000000004ad8 <memset>:
-
-void *memset(void *dst, int c, size_t n)
-{
- char *cdst = (char *)dst;
- for (size_t i = 0; i < n; i++)
- cdst[i] = (char)c;
- 4ad8: 0ff5f593 zext.b a1,a1
- 4adc: 87aa mv a5,a0
- 4ade: 00a60733 add a4,a2,a0
- for (size_t i = 0; i < n; i++)
- 4ae2: c611 beqz a2,4aee <memset+0x16>
- cdst[i] = (char)c;
- 4ae4: 00b78023 sb a1,0(a5)
- for (size_t i = 0; i < n; i++)
- 4ae8: 0785 addi a5,a5,1
- 4aea: fee79de3 bne a5,a4,4ae4 <memset+0xc>
- return dst;
-}
- 4aee: 8082 ret
-
-0000000000004af0 <memmove>:
-
-void *memmove(void *vdst, const void *vsrc, size_t n)
-{
- char *dst = (char *)vdst;
- const char *src = (const char *)vsrc;
- if (dst == src)
- 4af0: 02b50d63 beq a0,a1,4b2a <memmove+0x3a>
- return vdst;
-
- if (src > dst)
- 4af4: 00b57e63 bgeu a0,a1,4b10 <memmove+0x20>
- {
- while (n--)
- 4af8: ca0d beqz a2,4b2a <memmove+0x3a>
- 4afa: 962a add a2,a2,a0
- char *dst = (char *)vdst;
- 4afc: 87aa mv a5,a0
- *dst++ = *src++;
- 4afe: 0005c703 lbu a4,0(a1)
- 4b02: 0785 addi a5,a5,1
- 4b04: 0585 addi a1,a1,1
- 4b06: fee78fa3 sb a4,-1(a5)
- while (n--)
- 4b0a: fec79ae3 bne a5,a2,4afe <memmove+0xe>
- 4b0e: 8082 ret
- }
- else
- {
- dst += n;
- 4b10: 00c50733 add a4,a0,a2
- src += n;
- 4b14: 00c587b3 add a5,a1,a2
- while (n-- > 0)
- 4b18: ca09 beqz a2,4b2a <memmove+0x3a>
- *--dst = *--src;
- 4b1a: fff7c683 lbu a3,-1(a5)
- 4b1e: 17fd addi a5,a5,-1
- 4b20: 177d addi a4,a4,-1
- 4b22: 00d70023 sb a3,0(a4)
- while (n-- > 0)
- 4b26: fef59ae3 bne a1,a5,4b1a <memmove+0x2a>
- }
- return vdst;
-}
- 4b2a: 8082 ret
-
-0000000000004b2c <memcpy>:
-
-void *memcpy(void *vdst, const void *vsrc, size_t n)
-{
- return memmove(vdst, vsrc, n);
- 4b2c: b7d1 j 4af0 <memmove>
-
-0000000000004b2e <memcmp>:
-
-int memcmp(const void *s1, const void *s2, size_t n)
-{
- const unsigned char *p1 = (const unsigned char *)s1;
- const unsigned char *p2 = (const unsigned char *)s2;
- while (n--)
- 4b2e: c205 beqz a2,4b4e <memcmp+0x20>
- 4b30: 962a add a2,a2,a0
- 4b32: a019 j 4b38 <memcmp+0xa>
- 4b34: 00c50d63 beq a0,a2,4b4e <memcmp+0x20>
- {
- if (*p1 != *p2)
- 4b38: 00054783 lbu a5,0(a0)
- 4b3c: 0005c703 lbu a4,0(a1)
- return *p1 - *p2;
- p1++;
- 4b40: 0505 addi a0,a0,1
- p2++;
- 4b42: 0585 addi a1,a1,1
- if (*p1 != *p2)
- 4b44: fee788e3 beq a5,a4,4b34 <memcmp+0x6>
- return *p1 - *p2;
- 4b48: 40e7853b subw a0,a5,a4
- 4b4c: 8082 ret
- }
- return 0;
- 4b4e: 4501 li a0,0
-}
- 4b50: 8082 ret
-
-0000000000004b52 <memchr>:
-
-void *memchr(const void *s, int c, size_t n)
-{
- const unsigned char *p = (const unsigned char *)s;
- while (n--)
- 4b52: ce09 beqz a2,4b6c <memchr+0x1a>
- {
- if (*p == (unsigned char)c)
- 4b54: 0ff5f593 zext.b a1,a1
- 4b58: 962a add a2,a2,a0
- 4b5a: a021 j 4b62 <memchr+0x10>
- return (void *)p;
- p++;
- 4b5c: 0505 addi a0,a0,1
- while (n--)
- 4b5e: 00a60763 beq a2,a0,4b6c <memchr+0x1a>
- if (*p == (unsigned char)c)
- 4b62: 00054783 lbu a5,0(a0)
- 4b66: feb79be3 bne a5,a1,4b5c <memchr+0xa>
- }
- return NULL;
-}
- 4b6a: 8082 ret
- return NULL;
- 4b6c: 4501 li a0,0
-}
- 4b6e: 8082 ret
-
-0000000000004b70 <strlen>:
-/* String Manipulation Functions */
-
-size_t strlen(const char *s)
-{
- const char *p = s;
- while (*p)
- 4b70: 00054783 lbu a5,0(a0)
- 4b74: cb89 beqz a5,4b86 <strlen+0x16>
- const char *p = s;
- 4b76: 87aa mv a5,a0
- while (*p)
- 4b78: 0017c703 lbu a4,1(a5)
- p++;
- 4b7c: 0785 addi a5,a5,1
- while (*p)
- 4b7e: ff6d bnez a4,4b78 <strlen+0x8>
- return (size_t)(p - s);
- 4b80: 40a78533 sub a0,a5,a0
- 4b84: 8082 ret
- while (*p)
- 4b86: 4501 li a0,0
-}
- 4b88: 8082 ret
-
-0000000000004b8a <strcpy>:
-
-char *strcpy(char *dst, const char *src)
-{
- char *os = dst;
- while ((*dst++ = *src++) != 0)
- 4b8a: 87aa mv a5,a0
- 4b8c: 0005c703 lbu a4,0(a1)
- 4b90: 0785 addi a5,a5,1
- 4b92: 0585 addi a1,a1,1
- 4b94: fee78fa3 sb a4,-1(a5)
- 4b98: fb75 bnez a4,4b8c <strcpy+0x2>
- ;
- return os;
-}
- 4b9a: 8082 ret
-
-0000000000004b9c <strncpy>:
-char *strncpy(char *dst, const char *src, size_t n)
-{
- char *os = dst;
- size_t i;
-
- for (i = 0; i < n && src[i] != '\0'; i++)
- 4b9c: 4781 li a5,0
- 4b9e: e619 bnez a2,4bac <strncpy+0x10>
- 4ba0: 8082 ret
- dst[i] = src[i];
- 4ba2: 00e68023 sb a4,0(a3)
- for (i = 0; i < n && src[i] != '\0'; i++)
- 4ba6: 0785 addi a5,a5,1
- 4ba8: 02f60263 beq a2,a5,4bcc <strncpy+0x30>
- 4bac: 00f58733 add a4,a1,a5
- 4bb0: 00074703 lbu a4,0(a4)
- dst[i] = src[i];
- 4bb4: 00f506b3 add a3,a0,a5
- for (i = 0; i < n && src[i] != '\0'; i++)
- 4bb8: f76d bnez a4,4ba2 <strncpy+0x6>
-
- for (; i < n; i++)
- 4bba: 00c7f963 bgeu a5,a2,4bcc <strncpy+0x30>
- 4bbe: 87b6 mv a5,a3
- 4bc0: 962a add a2,a2,a0
- dst[i] = '\0';
- 4bc2: 00078023 sb zero,0(a5)
- for (; i < n; i++)
- 4bc6: 0785 addi a5,a5,1
- 4bc8: fec79de3 bne a5,a2,4bc2 <strncpy+0x26>
-
- return os;
-}
- 4bcc: 8082 ret
-
-0000000000004bce <strcat>:
-
-char *strcat(char *dst, const char *src)
-{
- char *os = dst;
- while (*dst)
- 4bce: 00054783 lbu a5,0(a0)
- 4bd2: cf91 beqz a5,4bee <strcat+0x20>
- 4bd4: 87aa mv a5,a0
- 4bd6: 0017c703 lbu a4,1(a5)
- dst++;
- 4bda: 0785 addi a5,a5,1
- while (*dst)
- 4bdc: ff6d bnez a4,4bd6 <strcat+0x8>
- while ((*dst++ = *src++) != 0)
- 4bde: 0005c703 lbu a4,0(a1)
- 4be2: 0785 addi a5,a5,1
- 4be4: 0585 addi a1,a1,1
- 4be6: fee78fa3 sb a4,-1(a5)
- 4bea: fb75 bnez a4,4bde <strcat+0x10>
- ;
- return os;
-}
- 4bec: 8082 ret
- while ((*dst++ = *src++) != 0)
- 4bee: 0005c703 lbu a4,0(a1)
- while (*dst)
- 4bf2: 87aa mv a5,a0
- while ((*dst++ = *src++) != 0)
- 4bf4: 0785 addi a5,a5,1
- 4bf6: fee78fa3 sb a4,-1(a5)
- 4bfa: 0585 addi a1,a1,1
- 4bfc: f36d bnez a4,4bde <strcat+0x10>
- 4bfe: 8082 ret
-
-0000000000004c00 <strncat>:
- while (*p)
- 4c00: 00054783 lbu a5,0(a0)
- const char *p = s;
- 4c04: 872a mv a4,a0
- while (*p)
- 4c06: c789 beqz a5,4c10 <strncat+0x10>
- 4c08: 00174783 lbu a5,1(a4)
- p++;
- 4c0c: 0705 addi a4,a4,1
- while (*p)
- 4c0e: ffed bnez a5,4c08 <strncat+0x8>
- size_t dest_len = strlen(dst);
- size_t i;
-
- dst += dest_len;
-
- for (i = 0; i < n && src[i] != '\0'; i++)
- 4c10: 86ba mv a3,a4
- 4c12: 4781 li a5,0
- 4c14: 88ba mv a7,a4
- 4c16: ea01 bnez a2,4c26 <strncat+0x26>
- 4c18: a839 j 4c36 <strncat+0x36>
- dst[i] = src[i];
- 4c1a: 01068023 sb a6,0(a3)
- for (i = 0; i < n && src[i] != '\0'; i++)
- 4c1e: 00188693 addi a3,a7,1
- 4c22: 00f60d63 beq a2,a5,4c3c <strncat+0x3c>
- 4c26: 00f58833 add a6,a1,a5
- 4c2a: 00084803 lbu a6,0(a6)
- 4c2e: 0785 addi a5,a5,1
- dst[i] = src[i];
- 4c30: 88b6 mv a7,a3
- for (i = 0; i < n && src[i] != '\0'; i++)
- 4c32: fe0814e3 bnez a6,4c1a <strncat+0x1a>
-
- dst[i] = '\0';
- 4c36: 00088023 sb zero,0(a7)
-
- return os;
-}
- 4c3a: 8082 ret
- dst[i] = '\0';
- 4c3c: 00c708b3 add a7,a4,a2
- 4c40: 00088023 sb zero,0(a7)
-}
- 4c44: 8082 ret
-
-0000000000004c46 <strcmp>:
-
-int strcmp(const char *p, const char *q)
-{
- while (*p && *p == *q)
- 4c46: 00054783 lbu a5,0(a0)
- 4c4a: e791 bnez a5,4c56 <strcmp+0x10>
- 4c4c: a02d j 4c76 <strcmp+0x30>
- 4c4e: 00054783 lbu a5,0(a0)
- 4c52: cf89 beqz a5,4c6c <strcmp+0x26>
- 4c54: 85b6 mv a1,a3
- 4c56: 0005c703 lbu a4,0(a1)
- {
- p++;
- 4c5a: 0505 addi a0,a0,1
- q++;
- 4c5c: 00158693 addi a3,a1,1
- while (*p && *p == *q)
- 4c60: fef707e3 beq a4,a5,4c4e <strcmp+0x8>
- }
- return (int)((unsigned char)*p - (unsigned char)*q);
- 4c64: 0007851b sext.w a0,a5
-}
- 4c68: 9d19 subw a0,a0,a4
- 4c6a: 8082 ret
- return (int)((unsigned char)*p - (unsigned char)*q);
- 4c6c: 0015c703 lbu a4,1(a1)
- 4c70: 4501 li a0,0
-}
- 4c72: 9d19 subw a0,a0,a4
- 4c74: 8082 ret
- return (int)((unsigned char)*p - (unsigned char)*q);
- 4c76: 0005c703 lbu a4,0(a1)
- 4c7a: 4501 li a0,0
- 4c7c: b7f5 j 4c68 <strcmp+0x22>
-
-0000000000004c7e <strncmp>:
-
-int strncmp(const char *s1, const char *s2, size_t n)
-{
- if (n == 0)
- 4c7e: ca0d beqz a2,4cb0 <strncmp+0x32>
- return 0;
-
- while (n-- > 0 && *s1 && *s1 == *s2)
- 4c80: 00054783 lbu a5,0(a0)
- 4c84: 167d addi a2,a2,-1
- 4c86: 00c506b3 add a3,a0,a2
- 4c8a: eb89 bnez a5,4c9c <strncmp+0x1e>
- 4c8c: a80d j 4cbe <strncmp+0x40>
- {
- if (n == 0 || *s1 == '\0')
- 4c8e: 00d50d63 beq a0,a3,4ca8 <strncmp+0x2a>
- while (n-- > 0 && *s1 && *s1 == *s2)
- 4c92: 00154783 lbu a5,1(a0)
- break;
- s1++;
- 4c96: 0505 addi a0,a0,1
- while (n-- > 0 && *s1 && *s1 == *s2)
- 4c98: cf91 beqz a5,4cb4 <strncmp+0x36>
- 4c9a: 85b2 mv a1,a2
- 4c9c: 0005c703 lbu a4,0(a1)
- s2++;
- 4ca0: 00158613 addi a2,a1,1
- while (n-- > 0 && *s1 && *s1 == *s2)
- 4ca4: fef705e3 beq a4,a5,4c8e <strncmp+0x10>
- }
- return (int)((unsigned char)*s1 - (unsigned char)*s2);
- 4ca8: 0007851b sext.w a0,a5
- 4cac: 9d19 subw a0,a0,a4
- 4cae: 8082 ret
- return 0;
- 4cb0: 4501 li a0,0
-}
- 4cb2: 8082 ret
- return (int)((unsigned char)*s1 - (unsigned char)*s2);
- 4cb4: 0015c703 lbu a4,1(a1)
- 4cb8: 4501 li a0,0
- 4cba: 9d19 subw a0,a0,a4
- 4cbc: 8082 ret
- 4cbe: 0005c703 lbu a4,0(a1)
- 4cc2: 4501 li a0,0
- 4cc4: b7e5 j 4cac <strncmp+0x2e>
-
-0000000000004cc6 <strchr>:
-
-char *strchr(const char *s, int c)
-{
- while (*s != (char)c)
- 4cc6: 0ff5f593 zext.b a1,a1
- 4cca: a019 j 4cd0 <strchr+0xa>
- {
- if (!*s++)
- 4ccc: 0505 addi a0,a0,1
- 4cce: c791 beqz a5,4cda <strchr+0x14>
- while (*s != (char)c)
- 4cd0: 00054783 lbu a5,0(a0)
- 4cd4: feb79ce3 bne a5,a1,4ccc <strchr+0x6>
- 4cd8: 8082 ret
- return NULL;
- 4cda: 4501 li a0,0
- }
- return (char *)s;
-}
- 4cdc: 8082 ret
-
-0000000000004cde <strrchr>:
-
-char *strrchr(const char *s, int c)
-{
- 4cde: 87aa mv a5,a0
- const char *last = NULL;
- do
- {
- if (*s == (char)c)
- 4ce0: 0ff5f593 zext.b a1,a1
- const char *last = NULL;
- 4ce4: 4501 li a0,0
- if (*s == (char)c)
- 4ce6: 0007c703 lbu a4,0(a5)
- 4cea: 00e59363 bne a1,a4,4cf0 <strrchr+0x12>
- last = s;
- 4cee: 853e mv a0,a5
- } while (*s++);
- 4cf0: 0785 addi a5,a5,1
- 4cf2: fb75 bnez a4,4ce6 <strrchr+0x8>
-
- return (char *)last;
-}
- 4cf4: 8082 ret
-
-0000000000004cf6 <strstr>:
- while (*p)
- 4cf6: 0005c883 lbu a7,0(a1)
- 4cfa: 04088a63 beqz a7,4d4e <strstr+0x58>
- const char *p = s;
- 4cfe: 87ae mv a5,a1
- while (*p)
- 4d00: 0017c703 lbu a4,1(a5)
- p++;
- 4d04: 0785 addi a5,a5,1
- while (*p)
- 4d06: ff6d bnez a4,4d00 <strstr+0xa>
- return (size_t)(p - s);
- 4d08: 40b78833 sub a6,a5,a1
-
-
-char *strstr(const char *haystack, const char *needle)
-{
- size_t n_len = strlen(needle);
- if (n_len == 0)
- 4d0c: 04b78163 beq a5,a1,4d4e <strstr+0x58>
- return (char *)haystack;
-
- for (; *haystack; haystack++)
- 4d10: 00054783 lbu a5,0(a0)
- 4d14: cf85 beqz a5,4d4c <strstr+0x56>
- 4d16: 187d addi a6,a6,-1
- 4d18: 982a add a6,a6,a0
- {
- if (*haystack != *needle)
- 4d1a: 02f89463 bne a7,a5,4d42 <strstr+0x4c>
- while (n-- > 0 && *s1 && *s1 == *s2)
- 4d1e: 00054703 lbu a4,0(a0)
- 4d22: 8646 mv a2,a7
- 4d24: 86ae mv a3,a1
- 4d26: 87aa mv a5,a0
- 4d28: eb11 bnez a4,4d3c <strstr+0x46>
- 4d2a: a821 j 4d42 <strstr+0x4c>
- if (n == 0 || *s1 == '\0')
- 4d2c: 03078163 beq a5,a6,4d4e <strstr+0x58>
- while (n-- > 0 && *s1 && *s1 == *s2)
- 4d30: 0017c703 lbu a4,1(a5)
- return (int)((unsigned char)*s1 - (unsigned char)*s2);
- 4d34: 0006c603 lbu a2,0(a3)
- s1++;
- 4d38: 0785 addi a5,a5,1
- while (n-- > 0 && *s1 && *s1 == *s2)
- 4d3a: cb19 beqz a4,4d50 <strstr+0x5a>
- s2++;
- 4d3c: 0685 addi a3,a3,1
- while (n-- > 0 && *s1 && *s1 == *s2)
- 4d3e: fee607e3 beq a2,a4,4d2c <strstr+0x36>
- for (; *haystack; haystack++)
- 4d42: 00154783 lbu a5,1(a0)
- 4d46: 0805 addi a6,a6,1
- 4d48: 0505 addi a0,a0,1
- 4d4a: fbe1 bnez a5,4d1a <strstr+0x24>
- continue;
-
- if (strncmp(haystack, needle, n_len) == 0)
- return (char *)haystack;
- }
- return NULL;
- 4d4c: 4501 li a0,0
-}
- 4d4e: 8082 ret
- if (strncmp(haystack, needle, n_len) == 0)
- 4d50: de7d beqz a2,4d4e <strstr+0x58>
- for (; *haystack; haystack++)
- 4d52: 00154783 lbu a5,1(a0)
- 4d56: 0805 addi a6,a6,1
- 4d58: 0505 addi a0,a0,1
- 4d5a: f3e1 bnez a5,4d1a <strstr+0x24>
- 4d5c: bfc5 j 4d4c <strstr+0x56>
-
-0000000000004d5e <strdup>:
-
-char *strdup(const char *s)
-{
- 4d5e: 1101 addi sp,sp,-32
- 4d60: e426 sd s1,8(sp)
- 4d62: ec06 sd ra,24(sp)
- 4d64: e822 sd s0,16(sp)
- while (*p)
- 4d66: 00054783 lbu a5,0(a0)
-{
- 4d6a: 84aa mv s1,a0
- while (*p)
- 4d6c: cb8d beqz a5,4d9e <strdup+0x40>
- const char *p = s;
- 4d6e: 862a mv a2,a0
- while (*p)
- 4d70: 00164783 lbu a5,1(a2)
- p++;
- 4d74: 0605 addi a2,a2,1
- while (*p)
- 4d76: ffed bnez a5,4d70 <strdup+0x12>
- return (size_t)(p - s);
- 4d78: 8e05 sub a2,a2,s1
- size_t len = strlen(s) + 1;
- 4d7a: 00160413 addi s0,a2,1
- char *new_str = (char *)malloc(len);
- 4d7e: 8522 mv a0,s0
- 4d80: f4eff0ef jal 44ce <malloc>
- if (new_str == NULL)
- 4d84: c901 beqz a0,4d94 <strdup+0x36>
- return memmove(vdst, vsrc, n);
- 4d86: 8622 mv a2,s0
- return NULL;
-
- return (char *)memcpy(new_str, s, len);
-}
- 4d88: 6442 ld s0,16(sp)
- 4d8a: 60e2 ld ra,24(sp)
- return memmove(vdst, vsrc, n);
- 4d8c: 85a6 mv a1,s1
-}
- 4d8e: 64a2 ld s1,8(sp)
- 4d90: 6105 addi sp,sp,32
- return memmove(vdst, vsrc, n);
- 4d92: bbb9 j 4af0 <memmove>
-}
- 4d94: 60e2 ld ra,24(sp)
- 4d96: 6442 ld s0,16(sp)
- 4d98: 64a2 ld s1,8(sp)
- 4d9a: 6105 addi sp,sp,32
- 4d9c: 8082 ret
- while (*p)
- 4d9e: 4405 li s0,1
- 4da0: bff9 j 4d7e <strdup+0x20>
-
-0000000000004da2 <strlcpy>:
- 4da2: 0005c783 lbu a5,0(a1)
-
-size_t strlcpy(char *dst, const char *src, size_t size)
-{
- 4da6: 1101 addi sp,sp,-32
- 4da8: ec06 sd ra,24(sp)
- 4daa: e822 sd s0,16(sp)
- 4dac: 86b2 mv a3,a2
- while (*p)
- 4dae: cf8d beqz a5,4de8 <strlcpy+0x46>
- const char *p = s;
- 4db0: 87ae mv a5,a1
- while (*p)
- 4db2: 0017c703 lbu a4,1(a5)
- p++;
- 4db6: 0785 addi a5,a5,1
- while (*p)
- 4db8: ff6d bnez a4,4db2 <strlcpy+0x10>
- return (size_t)(p - s);
- 4dba: 40b78433 sub s0,a5,a1
- size_t src_len = strlen(src);
-
- if (size > 0)
- 4dbe: c285 beqz a3,4dde <strlcpy+0x3c>
- 4dc0: e426 sd s1,8(sp)
- {
- size_t copy_len = (src_len >= size) ? size - 1 : src_len;
- 4dc2: fff68613 addi a2,a3,-1
- memcpy(dst, src, copy_len);
- dst[copy_len] = '\0';
- 4dc6: 00c504b3 add s1,a0,a2
- size_t copy_len = (src_len >= size) ? size - 1 : src_len;
- 4dca: 00d47563 bgeu s0,a3,4dd4 <strlcpy+0x32>
- dst[copy_len] = '\0';
- 4dce: 008504b3 add s1,a0,s0
- size_t copy_len = (src_len >= size) ? size - 1 : src_len;
- 4dd2: 8622 mv a2,s0
- return memmove(vdst, vsrc, n);
- 4dd4: d1dff0ef jal 4af0 <memmove>
- dst[copy_len] = '\0';
- 4dd8: 00048023 sb zero,0(s1)
- }
-
- return src_len;
- 4ddc: 64a2 ld s1,8(sp)
-}
- 4dde: 60e2 ld ra,24(sp)
- 4de0: 8522 mv a0,s0
- 4de2: 6442 ld s0,16(sp)
- 4de4: 6105 addi sp,sp,32
- 4de6: 8082 ret
- if (size > 0)
- 4de8: e219 bnez a2,4dee <strlcpy+0x4c>
- return (size_t)(p - s);
- 4dea: 4401 li s0,0
- 4dec: bfcd j 4dde <strlcpy+0x3c>
- 4dee: e426 sd s1,8(sp)
- 4df0: 4401 li s0,0
- if (size > 0)
- 4df2: 84aa mv s1,a0
- size_t copy_len = (src_len >= size) ? size - 1 : src_len;
- 4df4: 4601 li a2,0
- 4df6: bff9 j 4dd4 <strlcpy+0x32>
-
-0000000000004df8 <strlcat>:
- while (*p)
- 4df8: 0005c783 lbu a5,0(a1)
-
-size_t strlcat(char *dst, const char *src, size_t size)
-{
- 4dfc: 7179 addi sp,sp,-48
- 4dfe: e84a sd s2,16(sp)
- 4e00: f406 sd ra,40(sp)
- 4e02: f022 sd s0,32(sp)
- 4e04: ec26 sd s1,24(sp)
- 4e06: 892a mv s2,a0
- while (*p)
- 4e08: c7b5 beqz a5,4e74 <strlcat+0x7c>
- const char *p = s;
- 4e0a: 87ae mv a5,a1
- while (*p)
- 4e0c: 0017c703 lbu a4,1(a5)
- p++;
- 4e10: 0785 addi a5,a5,1
- while (*p)
- 4e12: ff6d bnez a4,4e0c <strlcat+0x14>
- return (size_t)(p - s);
- 4e14: 40b784b3 sub s1,a5,a1
- size_t dst_len = 0;
- 4e18: 4401 li s0,0
- size_t src_len = strlen(src);
-
- while (dst_len < size && dst[dst_len] != '\0')
- 4e1a: e609 bnez a2,4e24 <strlcat+0x2c>
- 4e1c: a0a1 j 4e64 <strlcat+0x6c>
- dst_len++;
- 4e1e: 0405 addi s0,s0,1
- while (dst_len < size && dst[dst_len] != '\0')
- 4e20: 04860263 beq a2,s0,4e64 <strlcat+0x6c>
- 4e24: 00890533 add a0,s2,s0
- 4e28: 00054783 lbu a5,0(a0)
- 4e2c: fbed bnez a5,4e1e <strlcat+0x26>
-
- if (dst_len == size)
- 4e2e: 02860b63 beq a2,s0,4e64 <strlcat+0x6c>
- 4e32: e44e sd s3,8(sp)
- return size + src_len;
-
- size_t space_left = size - dst_len;
- 4e34: 408607b3 sub a5,a2,s0
- size_t copy_len = (src_len >= space_left) ? space_left - 1 : src_len;
- 4e38: 89a6 mv s3,s1
- 4e3a: 02f4f263 bgeu s1,a5,4e5e <strlcat+0x66>
-
- memcpy(dst + dst_len, src, copy_len);
- dst[dst_len + copy_len] = '\0';
- 4e3e: 994e add s2,s2,s3
- 4e40: 9922 add s2,s2,s0
- return memmove(vdst, vsrc, n);
- 4e42: 864e mv a2,s3
- 4e44: cadff0ef jal 4af0 <memmove>
- dst[dst_len + copy_len] = '\0';
- 4e48: 00090023 sb zero,0(s2) # 1000 <_vscanf_core.constprop.0+0x688>
-
- return dst_len + src_len;
- 4e4c: 00940533 add a0,s0,s1
-}
- 4e50: 70a2 ld ra,40(sp)
- 4e52: 7402 ld s0,32(sp)
- return dst_len + src_len;
- 4e54: 69a2 ld s3,8(sp)
-}
- 4e56: 64e2 ld s1,24(sp)
- 4e58: 6942 ld s2,16(sp)
- 4e5a: 6145 addi sp,sp,48
- 4e5c: 8082 ret
- size_t copy_len = (src_len >= space_left) ? space_left - 1 : src_len;
- 4e5e: fff78993 addi s3,a5,-1
- 4e62: bff1 j 4e3e <strlcat+0x46>
-}
- 4e64: 70a2 ld ra,40(sp)
- 4e66: 7402 ld s0,32(sp)
- 4e68: 6942 ld s2,16(sp)
- return size + src_len;
- 4e6a: 00960533 add a0,a2,s1
-}
- 4e6e: 64e2 ld s1,24(sp)
- 4e70: 6145 addi sp,sp,48
- 4e72: 8082 ret
- while (*p)
- 4e74: 4481 li s1,0
- 4e76: b74d j 4e18 <strlcat+0x20>
-
-0000000000004e78 <strspn>:
-size_t strspn(const char *s, const char *accept)
-{
- const char *p = s;
- const char *a;
-
- while (*p)
- 4e78: 00054683 lbu a3,0(a0)
- 4e7c: c695 beqz a3,4ea8 <strspn+0x30>
- {
- for (a = accept; *a; a++)
- 4e7e: 0005c803 lbu a6,0(a1)
- 4e82: 862a mv a2,a0
- 4e84: 00080f63 beqz a6,4ea2 <strspn+0x2a>
- 4e88: 87ae mv a5,a1
- 4e8a: 8742 mv a4,a6
- 4e8c: a021 j 4e94 <strspn+0x1c>
- 4e8e: 0007c703 lbu a4,0(a5)
- 4e92: cb01 beqz a4,4ea2 <strspn+0x2a>
- 4e94: 0785 addi a5,a5,1
- {
- if (*p == *a)
- 4e96: fee69ce3 bne a3,a4,4e8e <strspn+0x16>
- while (*p)
- 4e9a: 00164683 lbu a3,1(a2)
- break;
- }
- if (*a == '\0')
- return (size_t)(p - s);
- p++;
- 4e9e: 0605 addi a2,a2,1
- while (*p)
- 4ea0: f6e5 bnez a3,4e88 <strspn+0x10>
- }
- return (size_t)(p - s);
- 4ea2: 40a60533 sub a0,a2,a0
- 4ea6: 8082 ret
- while (*p)
- 4ea8: 4501 li a0,0
-}
- 4eaa: 8082 ret
-
-0000000000004eac <strcspn>:
-size_t strcspn(const char *s, const char *reject)
-{
- const char *p = s;
- const char *r;
-
- while (*p)
- 4eac: 00054683 lbu a3,0(a0)
- 4eb0: ce85 beqz a3,4ee8 <strcspn+0x3c>
- {
- for (r = reject; *r; r++)
- 4eb2: 0005c803 lbu a6,0(a1)
- const char *p = s;
- 4eb6: 862a mv a2,a0
- for (r = reject; *r; r++)
- 4eb8: 02080363 beqz a6,4ede <strcspn+0x32>
- 4ebc: 87ae mv a5,a1
- 4ebe: 8742 mv a4,a6
- 4ec0: a021 j 4ec8 <strcspn+0x1c>
- 4ec2: 0007c703 lbu a4,0(a5)
- 4ec6: c719 beqz a4,4ed4 <strcspn+0x28>
- 4ec8: 0785 addi a5,a5,1
- {
- if (*p == *r)
- 4eca: fed71ce3 bne a4,a3,4ec2 <strcspn+0x16>
- return (size_t)(p - s);
- }
- p++;
- }
- return (size_t)(p - s);
- 4ece: 40a60533 sub a0,a2,a0
- 4ed2: 8082 ret
- while (*p)
- 4ed4: 00164683 lbu a3,1(a2)
- p++;
- 4ed8: 0605 addi a2,a2,1
- while (*p)
- 4eda: f2ed bnez a3,4ebc <strcspn+0x10>
- 4edc: bfcd j 4ece <strcspn+0x22>
- 4ede: 00164683 lbu a3,1(a2)
- p++;
- 4ee2: 0605 addi a2,a2,1
- while (*p)
- 4ee4: feed bnez a3,4ede <strcspn+0x32>
- 4ee6: b7e5 j 4ece <strcspn+0x22>
- 4ee8: 4501 li a0,0
-}
- 4eea: 8082 ret
-
-0000000000004eec <strpbrk>:
-
-char *strpbrk(const char *s, const char *accept)
-{
- const char *a;
- while (*s)
- 4eec: 00054683 lbu a3,0(a0)
- 4ef0: c295 beqz a3,4f14 <strpbrk+0x28>
- {
- for (a = accept; *a; a++)
- 4ef2: 0005c603 lbu a2,0(a1)
- 4ef6: c20d beqz a2,4f18 <strpbrk+0x2c>
- 4ef8: 87ae mv a5,a1
- 4efa: 8732 mv a4,a2
- 4efc: a021 j 4f04 <strpbrk+0x18>
- 4efe: 0007c703 lbu a4,0(a5)
- 4f02: c709 beqz a4,4f0c <strpbrk+0x20>
- 4f04: 0785 addi a5,a5,1
- {
- if (*s == *a)
- 4f06: fed71ce3 bne a4,a3,4efe <strpbrk+0x12>
- return (char *)s;
- }
- s++;
- }
- return NULL;
-}
- 4f0a: 8082 ret
- while (*s)
- 4f0c: 00154683 lbu a3,1(a0)
- s++;
- 4f10: 0505 addi a0,a0,1
- while (*s)
- 4f12: f2fd bnez a3,4ef8 <strpbrk+0xc>
- return NULL;
- 4f14: 4501 li a0,0
-}
- 4f16: 8082 ret
- while (*s)
- 4f18: 00154683 lbu a3,1(a0)
- s++;
- 4f1c: 0505 addi a0,a0,1
- while (*s)
- 4f1e: feed bnez a3,4f18 <strpbrk+0x2c>
- 4f20: bfd5 j 4f14 <strpbrk+0x28>
-
-0000000000004f22 <strtok>:
-char *strtok(char *str, const char *delim)
-{
- static char *olds;
- char *token;
-
- if (str == NULL)
- 4f22: 00003897 auipc a7,0x3
- 4f26: 94e88893 addi a7,a7,-1714 # 7870 <olds.0>
- 4f2a: cd25 beqz a0,4fa2 <strtok+0x80>
- while (*p)
- 4f2c: 00054683 lbu a3,0(a0)
- 4f30: c295 beqz a3,4f54 <strtok+0x32>
- for (a = accept; *a; a++)
- 4f32: 0005c803 lbu a6,0(a1)
- 4f36: 02080463 beqz a6,4f5e <strtok+0x3c>
- 4f3a: 87ae mv a5,a1
- 4f3c: 8742 mv a4,a6
- 4f3e: a021 j 4f46 <strtok+0x24>
- 4f40: 0007c703 lbu a4,0(a5)
- 4f44: cf09 beqz a4,4f5e <strtok+0x3c>
- 4f46: 0785 addi a5,a5,1
- if (*p == *a)
- 4f48: fee69ce3 bne a3,a4,4f40 <strtok+0x1e>
- while (*p)
- 4f4c: 00154683 lbu a3,1(a0)
- p++;
- 4f50: 0505 addi a0,a0,1
- while (*p)
- 4f52: f6e5 bnez a3,4f3a <strtok+0x18>
- 4f54: 87aa mv a5,a0
- str = olds;
-
- str += strspn(str, delim);
- if (*str == '\0')
- {
- olds = str;
- 4f56: 00f8b023 sd a5,0(a7)
- return NULL;
- 4f5a: 4501 li a0,0
- *str = '\0';
- olds = str + 1;
- }
-
- return token;
-}
- 4f5c: 8082 ret
- if (*str == '\0')
- 4f5e: 00054603 lbu a2,0(a0)
- 4f62: da6d beqz a2,4f54 <strtok+0x32>
- 4f64: 86aa mv a3,a0
- for (a = accept; *a; a++)
- 4f66: 04080163 beqz a6,4fa8 <strtok+0x86>
- 4f6a: 8742 mv a4,a6
- 4f6c: 87ae mv a5,a1
- 4f6e: a021 j 4f76 <strtok+0x54>
- 4f70: 0007c703 lbu a4,0(a5)
- 4f74: cb19 beqz a4,4f8a <strtok+0x68>
- 4f76: 0785 addi a5,a5,1
- if (*s == *a)
- 4f78: fee61ce3 bne a2,a4,4f70 <strtok+0x4e>
- olds = str + 1;
- 4f7c: 00168793 addi a5,a3,1
- *str = '\0';
- 4f80: 00068023 sb zero,0(a3)
- olds = str;
- 4f84: 00f8b023 sd a5,0(a7)
-}
- 4f88: 8082 ret
- while (*s)
- 4f8a: 0016c603 lbu a2,1(a3)
- s++;
- 4f8e: 0685 addi a3,a3,1
- while (*s)
- 4f90: fe69 bnez a2,4f6a <strtok+0x48>
- 4f92: 87aa mv a5,a0
- while (*s != (char)c)
- 4f94: 0017c703 lbu a4,1(a5)
- if (!*s++)
- 4f98: 0785 addi a5,a5,1
- while (*s != (char)c)
- 4f9a: ff6d bnez a4,4f94 <strtok+0x72>
- olds = str;
- 4f9c: 00f8b023 sd a5,0(a7)
-}
- 4fa0: 8082 ret
- str = olds;
- 4fa2: 0008b503 ld a0,0(a7)
- 4fa6: b759 j 4f2c <strtok+0xa>
- while (*s)
- 4fa8: 0016c603 lbu a2,1(a3)
- s++;
- 4fac: 0685 addi a3,a3,1
- while (*s)
- 4fae: fe6d bnez a2,4fa8 <strtok+0x86>
- 4fb0: b7cd j 4f92 <strtok+0x70>
-
-0000000000004fb2 <strerror>:
-
-char *strerror(int errnum)
-{
- 4fb2: 87aa mv a5,a0
-
- switch (errnum)
- 4fb4: cd09 beqz a0,4fce <strerror+0x1c>
- 4fb6: 4731 li a4,12
- 4fb8: 00000517 auipc a0,0x0
- 4fbc: 1b050513 addi a0,a0,432 # 5168 <_GLOBAL__sub_I__ZSt3cin+0x178>
- 4fc0: 00e78b63 beq a5,a4,4fd6 <strerror+0x24>
- return "Success";
- // case EINVAL: return "Invalid argument";
- case ENOMEM: return "Out of memory";
-
- default:
- return "Unknown error";
- 4fc4: 00000517 auipc a0,0x0
- 4fc8: 1b450513 addi a0,a0,436 # 5178 <_GLOBAL__sub_I__ZSt3cin+0x188>
- 4fcc: 8082 ret
- return "Success";
- 4fce: 00000517 auipc a0,0x0
- 4fd2: 19250513 addi a0,a0,402 # 5160 <_GLOBAL__sub_I__ZSt3cin+0x170>
- }
- 4fd6: 8082 ret
-
-0000000000004fd8 <_Znwm>:
-#include "ulib/stdlib.h"
-
-void *operator new(unsigned long n)
-{
- return malloc(n);
- 4fd8: cf6ff06f j 44ce <malloc>
-
-0000000000004fdc <_Znam>:
-}
-
-void *operator new[](unsigned long n)
- 4fdc: cf2ff06f j 44ce <malloc>
-
-0000000000004fe0 <_ZdlPv>:
- return malloc(n);
-}
-
-void operator delete(void *p)
-{
- free(p);
- 4fe0: c78ff06f j 4458 <free>
-
-0000000000004fe4 <_ZdaPv>:
-}
-
-void operator delete[](void *p)
- 4fe4: c74ff06f j 4458 <free>
-
-0000000000004fe8 <_ZdlPvm>:
- free(p);
-}
-
-void operator delete(void *p, unsigned long)
-{
- free(p);
- 4fe8: c70ff06f j 4458 <free>
-
-0000000000004fec <_ZdaPvm>:
-}
-
-void operator delete[](void *p, unsigned long)
- 4fec: c6cff06f j 4458 <free>
-
-0000000000004ff0 <_GLOBAL__sub_I__ZSt3cin>:
-#include "ulib/iostream"
-
-namespace std
-{
- istream cin(stdin);
- 4ff0: 00002797 auipc a5,0x2
- 4ff4: 7307b783 ld a5,1840(a5) # 7720 <_GLOBAL_OFFSET_TABLE_+0x10>
- 4ff8: 6390 ld a2,0(a5)
- ostream cout(stdout);
- 4ffa: 00002797 auipc a5,0x2
- 4ffe: 71e7b783 ld a5,1822(a5) # 7718 <_GLOBAL_OFFSET_TABLE_+0x8>
- 5002: 6394 ld a3,0(a5)
- ostream cerr(stderr);
- 5004: 00002797 auipc a5,0x2
- 5008: 7247b783 ld a5,1828(a5) # 7728 <_GLOBAL_OFFSET_TABLE_+0x18>
- 500c: 6398 ld a4,0(a5)
-
- class istream{
- private:
- FILE* _stream;
- public:
- istream(FILE *f) : _stream(f) {}
- 500e: 00003797 auipc a5,0x3
- 5012: 86a78793 addi a5,a5,-1942 # 7878 <_ZSt3cin>
- 5016: e390 sd a2,0(a5)
- ostream(FILE* f) : _stream(f) {}
- 5018: e794 sd a3,8(a5)
- 501a: eb98 sd a4,16(a5)
-} // namespace std
- 501c: 8082 ret
diff --git a/build/user/init.o b/build/user/init.o
deleted file mode 100644
index 04c258f..0000000
--- a/build/user/init.o
+++ /dev/null
Binary files differ
diff --git a/build/user/init.sym b/build/user/init.sym
deleted file mode 100644
index 4403477..0000000
--- a/build/user/init.sym
+++ /dev/null
@@ -1,189 +0,0 @@
-0000000000000000 .text
-0000000000005020 .rodata
-0000000000005890 .eh_frame
-0000000000006990 .data
-0000000000007710 .got
-0000000000007730 .got.plt
-0000000000007740 .init_array
-0000000000007748 .bss
-0000000000000000 .debug_info
-0000000000000000 .debug_abbrev
-0000000000000000 .debug_loclists
-0000000000000000 .debug_aranges
-0000000000000000 .debug_rnglists
-0000000000000000 .debug_line
-0000000000000000 .debug_str
-0000000000000000 .debug_line_str
-0000000000000000 .comment
-0000000000000000 .riscv.attributes
-0000000000000000 init.cc
-0000000000000000 entry.o
-0000000000000000 usys.o
-0000000000000000 stdio.c
-0000000000000190 stbsp__clamp_callback
-00000000000001de stbsp__count_clamp_callback
-00000000000001ea stbsp__real_to_str
-00000000000008be _in_char.part.0
-0000000000000904 _skip_space
-0000000000000978 _vscanf_core.constprop.0
-00000000000011e8 _out_char
-000000000000305c _vprintf_core.constprop.0.isra.0
-0000000000006990 stbsp__digitpair
-0000000000006a5c stbsp__period
-0000000000006a5d stbsp__comma
-0000000000006a60 hexu.1
-0000000000006a78 hex.0
-0000000000006a90 _stderr
-0000000000006eb0 _stdout
-00000000000072d0 _stdin
-00000000000053f8 stbsp__bot
-00000000000054b0 stbsp__negbot
-0000000000005560 stbsp__negboterr
-0000000000005610 stbsp__negtop
-0000000000005678 stbsp__negtoperr
-00000000000056e0 stbsp__top
-0000000000005748 stbsp__toperr
-00000000000057b0 stbsp__powten
-0000000000000000 stdlib.c
-000000000000426a strtoull.part.0
-0000000000007708 next
-0000000000007754 __atexit_func_count
-0000000000007758 __atexit_funcs
-0000000000007858 freep
-0000000000007860 base
-0000000000000000 string.c
-0000000000007870 olds.0
-0000000000000000 cxx.cc
-0000000000000000 iostream.cpp
-0000000000004ff0 _GLOBAL__sub_I__ZSt3cin
-0000000000007710 _GLOBAL_OFFSET_TABLE_
-0000000000004b8a strcpy
-00000000000038fa printf
-00000000000076f0 stdout
-0000000000005854 STDOUT_FD
-0000000000004240 ungetc
-0000000000004fb2 strerror
-0000000000004af0 memmove
-00000000000038a4 snprintf
-0000000000000118 mknod
-0000000000004742 atol
-0000000000004450 getenv
-0000000000004fd8 _Znwm
-0000000000007750 errno
-00000000000049a2 labs
-000000000000491c bsearch
-0000000000000150 getpid
-000000000000483e qsort
-0000000000003b38 fscanf
-0000000000003daa fgets
-0000000000007888 _ZSt4cerr
-0000000000004b2c memcpy
-0000000000004454 system
-0000000000004220 feof
-00000000000044ce malloc
-0000000000000160 sleep
-000000000000385a vsnprintf
-000000000000465e strtoll
-0000000000004708 strtoul
-0000000000004a54 wctomb
-0000000000004aa0 wcstombs
-0000000000003ac2 fflush
-0000000000004a62 mbstowcs
-0000000000000180 lseek
-0000000000004fe0 _ZdlPv
-0000000000004444 abort
-000000000000472c strtol
-00000000000000e0 pipe
-0000000000004a22 mblen
-0000000000004cde strrchr
-0000000000004594 calloc
-000000000000474e strtod
-0000000000000178 disk_test
-00000000000000f0 write
-0000000000004828 atof
-0000000000000128 fstat
-0000000000003b06 fprintf
-0000000000000100 kill
-0000000000004bce strcat
-0000000000000140 chdir
-0000000000004128 fseek
-0000000000002ff8 stbsp_vsprintf
-0000000000000108 exec
-0000000000004b52 memchr
-00000000000076f8 stdin
-00000000000000d8 wait
-0000000000002f12 stbsp_vsnprintf
-00000000000000be _start
-000000000000422a ferror
-0000000000004cf6 strstr
-00000000000049ec rand
-00000000000000e8 read
-0000000000004da2 strlcpy
-0000000000004c7e strncmp
-00000000000012bc stbsp_set_separators
-0000000000004fe8 _ZdlPvm
-0000000000004b9c strncpy
-0000000000000120 unlink
-00000000000045dc realloc
-0000000000004f22 strtok
-0000000000004b2e memcmp
-00000000000000d0 fork
-0000000000003934 sscanf
-0000000000004c00 strncat
-0000000000003e86 fread
-0000000000000158 sbrk
-0000000000004d5e strdup
-0000000000000168 uptime
-000000000000463a strtoull
-0000000000002ee8 stbsp_sprintf
-0000000000003996 fopen
-0000000000004ad8 memset
-0000000000000000 main
-000000000000419c ftell
-0000000000004a14 srand
-0000000000004df8 strlcat
-0000000000004234 clearerr
-0000000000004fe4 _ZdaPv
-0000000000003a5a fclose
-0000000000000170 putc
-0000000000004c46 strcmp
-0000000000000188 shutdown
-0000000000000148 dup
-0000000000003d14 fgetc
-0000000000003006 sprintf
-000000000000482c strtof
-00000000000043ea atexit
-0000000000004eac strcspn
-0000000000002fd8 stbsp_snprintf
-0000000000007878 _ZSt3cin
-0000000000003964 scanf
-0000000000007700 stderr
-00000000000049cc ldiv
-0000000000003b6a fputc
-0000000000004fdc _Znam
-00000000000049dc lldiv
-0000000000003fa0 fwrite
-00000000000041c8 rewind
-0000000000007880 _ZSt4cout
-0000000000000130 link
-000000000000440e exit
-00000000000000c8 sys_exit
-00000000000049ac llabs
-000000000000472e atoi
-0000000000005850 STDERR_FD
-0000000000004e78 strspn
-0000000000004b70 strlen
-00000000000012ce stbsp_vsprintfcb
-0000000000000110 open
-0000000000005858 STDIN_FD
-0000000000004748 atoll
-00000000000049b6 div
-0000000000004998 abs
-0000000000004cc6 strchr
-0000000000003c2e fputs
-0000000000004fec _ZdaPvm
-0000000000000138 mkdir
-00000000000000f8 close
-0000000000004a36 mbtowc
-0000000000004eec strpbrk
-0000000000004458 free
diff --git a/build/user/initcode b/build/user/initcode
deleted file mode 100755
index f2b655a..0000000
--- a/build/user/initcode
+++ /dev/null
Binary files differ
diff --git a/build/user/initcode.asm b/build/user/initcode.asm
deleted file mode 100644
index 2434bbb..0000000
--- a/build/user/initcode.asm
+++ /dev/null
@@ -1,10687 +0,0 @@
-
-build/user/initcode.out: file format elf64-littleriscv
-
-
-Disassembly of section .text:
-
-0000000000000000 <main>:
-#include "ulib/string.h"
-#include "user/user.h"
-#include "drivers/uart_color.h"
-
-int main()
-{
- 0: 715d addi sp,sp,-80
- char *argv[] = {(char *)"sh", 0};
- 2: 00005797 auipc a5,0x5
- 6: 01e78793 addi a5,a5,30 # 5020 <_GLOBAL__sub_I__ZSt3cin+0x30>
-
- printf(ANSI_BLUE"\n[Init] Starting Lume OS Shell..."ANSI_RESET);
- a: 00005517 auipc a0,0x5
- e: 01e50513 addi a0,a0,30 # 5028 <_GLOBAL__sub_I__ZSt3cin+0x38>
-{
- 12: e486 sd ra,72(sp)
- 14: fc26 sd s1,56(sp)
- 16: f84a sd s2,48(sp)
- 18: f44e sd s3,40(sp)
- 1a: f052 sd s4,32(sp)
- char *argv[] = {(char *)"sh", 0};
- 1c: e83e sd a5,16(sp)
-{
- 1e: e0a2 sd s0,64(sp)
- char *argv[] = {(char *)"sh", 0};
- 20: ec02 sd zero,24(sp)
- printf(ANSI_BLUE"\n[Init] Starting Lume OS Shell..."ANSI_RESET);
- 22: 0d9030ef jal 38fa <printf>
- printf("\n");
- 26: 00005517 auipc a0,0x5
- 2a: 03250513 addi a0,a0,50 # 5058 <_GLOBAL__sub_I__ZSt3cin+0x68>
- 2e: 0cd030ef jal 38fa <printf>
- 32: 0024 addi s1,sp,8
- int pid = fork();
- // printf("fork suceess, pid=%i\n", pid);
-
- if (pid < 0)
- {
- printf("[Init] fork failed!\n");
- 34: 00005a17 auipc s4,0x5
- 38: 02ca0a13 addi s4,s4,44 # 5060 <_GLOBAL__sub_I__ZSt3cin+0x70>
- printf("Shell Exit");
- break;
- }
- if (wpid < 0)
- {
- printf("[Init] wait error or no child\n");
- 3c: 00005997 auipc s3,0x5
- 40: 06498993 addi s3,s3,100 # 50a0 <_GLOBAL__sub_I__ZSt3cin+0xb0>
- printf("Shell Exit");
- 44: 00005917 auipc s2,0x5
- 48: 04c90913 addi s2,s2,76 # 5090 <_GLOBAL__sub_I__ZSt3cin+0xa0>
- int pid = fork();
- 4c: 084000ef jal d0 <fork>
- 50: 842a mv s0,a0
- if (pid < 0)
- 52: 02054363 bltz a0,78 <main+0x78>
- if (pid == 0)
- 56: e501 bnez a0,5e <main+0x5e>
- 58: a81d j 8e <main+0x8e>
- if (wpid < 0)
- 5a: 02054663 bltz a0,86 <main+0x86>
- wpid = wait((uint64)&status);
- 5e: 8526 mv a0,s1
- 60: 078000ef jal d8 <wait>
- if (wpid == pid)
- 64: fea41be3 bne s0,a0,5a <main+0x5a>
- printf("Shell Exit");
- 68: 854a mv a0,s2
- 6a: 091030ef jal 38fa <printf>
- int pid = fork();
- 6e: 062000ef jal d0 <fork>
- 72: 842a mv s0,a0
- if (pid < 0)
- 74: fe0551e3 bgez a0,56 <main+0x56>
- printf("[Init] fork failed!\n");
- 78: 8552 mv a0,s4
- 7a: 081030ef jal 38fa <printf>
- exit(1);
- 7e: 4505 li a0,1
- 80: 38e040ef jal 440e <exit>
- if (pid == 0)
- 84: bfe9 j 5e <main+0x5e>
- printf("[Init] wait error or no child\n");
- 86: 854e mv a0,s3
- 88: 073030ef jal 38fa <printf>
-
- break;
- }
- }
- }
- }
- 8c: b7c1 j 4c <main+0x4c>
- char sh_path[] = "/sh";
- 8e: 006877b7 lui a5,0x687
- 92: 32f78793 addi a5,a5,815 # 68732f <_ZSt4cerr+0x67faa7>
- exec(sh_path, argv);
- 96: 080c addi a1,sp,16
- 98: 8526 mv a0,s1
- char sh_path[] = "/sh";
- 9a: c43e sw a5,8(sp)
- exec(sh_path, argv);
- 9c: 06c000ef jal 108 <exec>
- printf("[Init] exec sh failed\n");
- a0: 00005517 auipc a0,0x5
- a4: fd850513 addi a0,a0,-40 # 5078 <_GLOBAL__sub_I__ZSt3cin+0x88>
- a8: 053030ef jal 38fa <printf>
- return 0;
- ac: 60a6 ld ra,72(sp)
- ae: 6406 ld s0,64(sp)
- b0: 74e2 ld s1,56(sp)
- b2: 7942 ld s2,48(sp)
- b4: 79a2 ld s3,40(sp)
- b6: 7a02 ld s4,32(sp)
- b8: 4501 li a0,0
- ba: 6161 addi sp,sp,80
- bc: 8082 ret
-
-00000000000000be <_start>:
-.global _start
-
-_start:
-
-
- call main
- be: f43ff0ef jal 0 <main>
-
- call exit
- c2: 34c040ef jal 440e <exit>
-
- c6: a001 j c6 <_start+0x8>
-
-00000000000000c8 <sys_exit>:
- name: \
- li a7, SYS_ ## sysname; \
- ecall; \
- ret
-
-SYSCALL_NAME(sys_exit, exit)
- c8: 488d li a7,3
- ca: 00000073 ecall
- ce: 8082 ret
-
-00000000000000d0 <fork>:
-
-SYSCALL(fork)
- d0: 4889 li a7,2
- d2: 00000073 ecall
- d6: 8082 ret
-
-00000000000000d8 <wait>:
-SYSCALL(wait)
- d8: 4891 li a7,4
- da: 00000073 ecall
- de: 8082 ret
-
-00000000000000e0 <pipe>:
-SYSCALL(pipe)
- e0: 4895 li a7,5
- e2: 00000073 ecall
- e6: 8082 ret
-
-00000000000000e8 <read>:
-SYSCALL(read)
- e8: 4899 li a7,6
- ea: 00000073 ecall
- ee: 8082 ret
-
-00000000000000f0 <write>:
-SYSCALL(write)
- f0: 48c5 li a7,17
- f2: 00000073 ecall
- f6: 8082 ret
-
-00000000000000f8 <close>:
-SYSCALL(close)
- f8: 48d9 li a7,22
- fa: 00000073 ecall
- fe: 8082 ret
-
-0000000000000100 <kill>:
-SYSCALL(kill)
- 100: 489d li a7,7
- 102: 00000073 ecall
- 106: 8082 ret
-
-0000000000000108 <exec>:
-SYSCALL(exec)
- 108: 48a1 li a7,8
- 10a: 00000073 ecall
- 10e: 8082 ret
-
-0000000000000110 <open>:
-SYSCALL(open)
- 110: 48c1 li a7,16
- 112: 00000073 ecall
- 116: 8082 ret
-
-0000000000000118 <mknod>:
-SYSCALL(mknod)
- 118: 48c9 li a7,18
- 11a: 00000073 ecall
- 11e: 8082 ret
-
-0000000000000120 <unlink>:
-SYSCALL(unlink)
- 120: 48cd li a7,19
- 122: 00000073 ecall
- 126: 8082 ret
-
-0000000000000128 <fstat>:
-SYSCALL(fstat)
- 128: 48a5 li a7,9
- 12a: 00000073 ecall
- 12e: 8082 ret
-
-0000000000000130 <link>:
-SYSCALL(link)
- 130: 48d1 li a7,20
- 132: 00000073 ecall
- 136: 8082 ret
-
-0000000000000138 <mkdir>:
-SYSCALL(mkdir)
- 138: 48d5 li a7,21
- 13a: 00000073 ecall
- 13e: 8082 ret
-
-0000000000000140 <chdir>:
-SYSCALL(chdir)
- 140: 48a9 li a7,10
- 142: 00000073 ecall
- 146: 8082 ret
-
-0000000000000148 <dup>:
-SYSCALL(dup)
- 148: 48ad li a7,11
- 14a: 00000073 ecall
- 14e: 8082 ret
-
-0000000000000150 <getpid>:
-SYSCALL(getpid)
- 150: 48b1 li a7,12
- 152: 00000073 ecall
- 156: 8082 ret
-
-0000000000000158 <sbrk>:
-SYSCALL(sbrk)
- 158: 48b5 li a7,13
- 15a: 00000073 ecall
- 15e: 8082 ret
-
-0000000000000160 <sleep>:
-SYSCALL(sleep)
- 160: 48b9 li a7,14
- 162: 00000073 ecall
- 166: 8082 ret
-
-0000000000000168 <uptime>:
-SYSCALL(uptime)
- 168: 48bd li a7,15
- 16a: 00000073 ecall
- 16e: 8082 ret
-
-0000000000000170 <putc>:
-SYSCALL(putc)
- 170: 4885 li a7,1
- 172: 00000073 ecall
- 176: 8082 ret
-
-0000000000000178 <disk_test>:
-SYSCALL(disk_test)
- 178: 48dd li a7,23
- 17a: 00000073 ecall
- 17e: 8082 ret
-
-0000000000000180 <lseek>:
-SYSCALL(lseek)
- 180: 48e1 li a7,24
- 182: 00000073 ecall
- 186: 8082 ret
-
-0000000000000188 <shutdown>:
- 188: 48e5 li a7,25
- 18a: 00000073 ecall
- 18e: 8082 ret
-
-0000000000000190 <stbsp__clamp_callback>:
- 190: 45dc lw a5,12(a1)
- 192: 4598 lw a4,8(a1)
- 194: 9fb1 addw a5,a5,a2
- 196: c5dc sw a5,12(a1)
- 198: 0007069b sext.w a3,a4
- 19c: 00e65463 bge a2,a4,1a4 <stbsp__clamp_callback+0x14>
- 1a0: 0006069b sext.w a3,a2
- 1a4: c685 beqz a3,1cc <stbsp__clamp_callback+0x3c>
- 1a6: 619c ld a5,0(a1)
- 1a8: 00a78e63 beq a5,a0,1c4 <stbsp__clamp_callback+0x34>
- 1ac: 00d50633 add a2,a0,a3
- 1b0: 00054703 lbu a4,0(a0)
- 1b4: 0505 addi a0,a0,1
- 1b6: 0785 addi a5,a5,1
- 1b8: fee78fa3 sb a4,-1(a5)
- 1bc: fec56ae3 bltu a0,a2,1b0 <stbsp__clamp_callback+0x20>
- 1c0: 6188 ld a0,0(a1)
- 1c2: 4598 lw a4,8(a1)
- 1c4: 9f15 subw a4,a4,a3
- 1c6: 9536 add a0,a0,a3
- 1c8: e188 sd a0,0(a1)
- 1ca: c598 sw a4,8(a1)
- 1cc: 1ff00793 li a5,511
- 1d0: 00e7d463 bge a5,a4,1d8 <stbsp__clamp_callback+0x48>
- 1d4: 6188 ld a0,0(a1)
- 1d6: 8082 ret
- 1d8: 01058513 addi a0,a1,16
- 1dc: 8082 ret
-
-00000000000001de <stbsp__count_clamp_callback>:
- 1de: 45dc lw a5,12(a1)
- 1e0: 01058513 addi a0,a1,16
- 1e4: 9fb1 addw a5,a5,a2
- 1e6: c5dc sw a5,12(a1)
- 1e8: 8082 ret
-
-00000000000001ea <stbsp__real_to_str>:
- 1ea: e20508d3 fmv.x.d a7,fa0
- 1ee: 82aa mv t0,a0
- 1f0: 4348d813 srai a6,a7,0x34
- 1f4: 8ec6 mv t4,a7
- 1f6: 7ff87813 andi a6,a6,2047
- 1fa: 8346 mv t1,a7
- 1fc: 03f8d513 srli a0,a7,0x3f
- 200: 0008d663 bgez a7,20c <stbsp__real_to_str+0x22>
- 204: 22a517d3 fneg.d fa5,fa0
- 208: e20788d3 fmv.x.d a7,fa5
- 20c: 7ff00e13 li t3,2047
- 210: 35c80663 beq a6,t3,55c <stbsp__real_to_str+0x372>
- 214: 1101 addi sp,sp,-32
- 216: 14080363 beqz a6,35c <stbsp__real_to_str+0x172>
- 21a: c018081b addiw a6,a6,-1023
- 21e: ec22 sd s0,24(sp)
- 220: 02081313 slli t1,a6,0x20
- 224: 66034d63 bltz t1,89e <stbsp__real_to_str+0x6b4>
- 228: 4d100313 li t1,1233
- 22c: 0303033b mulw t1,t1,a6
- 230: 4849 li a6,18
- 232: 40c3531b sraiw t1,t1,0xc
- 236: 0013039b addiw t2,t1,1
- 23a: 4078083b subw a6,a6,t2
- 23e: 4359 li t1,22
- 240: 17036163 bltu t1,a6,3a2 <stbsp__real_to_str+0x1b8>
- 244: 00005317 auipc t1,0x5
- 248: 1b430313 addi t1,t1,436 # 53f8 <stbsp__bot>
- 24c: 080e slli a6,a6,0x3
- 24e: 981a add a6,a6,t1
- 250: 00083e03 ld t3,0(a6)
- 254: 00083607 fld fa2,0(a6)
- 258: f20887d3 fmv.d.x fa5,a7
- 25c: f8000837 lui a6,0xf8000
- 260: 01187333 and t1,a6,a7
- 264: 01c87833 and a6,a6,t3
- 268: 12f676d3 fmul.d fa3,fa2,fa5
- 26c: f20807d3 fmv.d.x fa5,a6
- 270: f2030753 fmv.d.x fa4,t1
- 274: f20305d3 fmv.d.x fa1,t1
- 278: 0af67653 fsub.d fa2,fa2,fa5
- 27c: f20887d3 fmv.d.x fa5,a7
- 280: 0ae7f753 fsub.d fa4,fa5,fa4
- 284: f20807d3 fmv.d.x fa5,a6
- 288: 6ab7f7c7 fmsub.d fa5,fa5,fa1,fa3
- 28c: 7ab677c3 fmadd.d fa5,fa2,fa1,fa5
- 290: f20805d3 fmv.d.x fa1,a6
- 294: 7ab777c3 fmadd.d fa5,fa4,fa1,fa5
- 298: 7ac77743 fmadd.d fa4,fa4,fa2,fa5
- 29c: 02d777d3 fadd.d fa5,fa4,fa3
- 2a0: 3782e837 lui a6,0x3782e
- 2a4: acf80813 addi a6,a6,-1329 # 3782dacf <_ZSt4cerr+0x37826247>
- 2a8: 0832 slli a6,a6,0xc
- 2aa: 9d980813 addi a6,a6,-1575
- 2ae: 084a slli a6,a6,0x12
- 2b0: 187d addi a6,a6,-1
- 2b2: c22798d3 fcvt.l.d a7,fa5,rtz
- 2b6: 0ad7f6d3 fsub.d fa3,fa5,fa3
- 2ba: 00070e1b sext.w t3,a4
- 2be: d228f653 fcvt.d.l fa2,a7
- 2c2: 0ac7f5d3 fsub.d fa1,fa5,fa2
- 2c6: 0ad77753 fsub.d fa4,fa4,fa3
- 2ca: 0af5f6d3 fsub.d fa3,fa1,fa5
- 2ce: 0ad5f553 fsub.d fa0,fa1,fa3
- 2d2: 02d67653 fadd.d fa2,fa2,fa3
- 2d6: 0aa7f7d3 fsub.d fa5,fa5,fa0
- 2da: 0ac7f7d3 fsub.d fa5,fa5,fa2
- 2de: 02b7f7d3 fadd.d fa5,fa5,fa1
- 2e2: 02e7f7d3 fadd.d fa5,fa5,fa4
- 2e6: c2279fd3 fcvt.l.d t6,fa5,rtz
- 2ea: 9fc6 add t6,t6,a7
- 2ec: 19f87063 bgeu a6,t6,46c <stbsp__real_to_str+0x282>
- 2f0: 2385 addiw t2,t2,1
- 2f2: 300e4363 bltz t3,5f8 <stbsp__real_to_str+0x40e>
- 2f6: 00e3833b addw t1,t2,a4
- 2fa: 475d li a4,23
- 2fc: 30677663 bgeu a4,t1,608 <stbsp__real_to_str+0x41e>
- 300: 577d li a4,-1
- 302: 9301 srli a4,a4,0x20
- 304: 43f75863 bge a4,t6,734 <stbsp__real_to_str+0x54a>
- 308: 07d00313 li t1,125
- 30c: 877e mv a4,t6
- 30e: 4e01 li t3,0
- 310: 3e800813 li a6,1000
- 314: 130e slli t1,t1,0x23
- 316: a039 j 324 <stbsp__real_to_str+0x13a>
- 318: 030747b3 div a5,a4,a6
- 31c: 4e05 li t3,1
- 31e: 40674c63 blt a4,t1,736 <stbsp__real_to_str+0x54c>
- 322: 873e mv a4,a5
- 324: 030768b3 rem a7,a4,a6
- 328: fe0888e3 beqz a7,318 <stbsp__real_to_str+0x12e>
- 32c: 400e0163 beqz t3,72e <stbsp__real_to_str+0x544>
- 330: 8fbe mv t6,a5
- 332: 05f5e7b7 lui a5,0x5f5e
- 336: 0ff78793 addi a5,a5,255 # 5f5e0ff <_ZSt4cerr+0x5f56877>
- 33a: 04060413 addi s0,a2,64
- 33e: 03860613 addi a2,a2,56
- 342: 15f7c863 blt a5,t6,492 <stbsp__real_to_str+0x2a8>
- 346: 000f871b sext.w a4,t6
- 34a: 20070463 beqz a4,552 <stbsp__real_to_str+0x368>
- 34e: 4f01 li t5,0
- 350: 4f81 li t6,0
- 352: 00006e97 auipc t4,0x6
- 356: 63ee8e93 addi t4,t4,1598 # 6990 <stbsp__digitpair>
- 35a: aaa9 j 4b4 <stbsp__real_to_str+0x2ca>
- 35c: 0306 slli t1,t1,0x1
- 35e: 3e030e63 beqz t1,75a <stbsp__real_to_str+0x570>
- 362: 4305 li t1,1
- 364: ec22 sd s0,24(sp)
- 366: 00ce9e13 slli t3,t4,0xc
- 36a: 134e slli t1,t1,0x33
- 36c: 520e4063 bltz t3,88c <stbsp__real_to_str+0x6a2>
- 370: 40135313 srai t1,t1,0x1
- 374: 01d37e33 and t3,t1,t4
- 378: 8f42 mv t5,a6
- 37a: 387d addiw a6,a6,-1
- 37c: fe0e0ae3 beqz t3,370 <stbsp__real_to_str+0x186>
- 380: 26900313 li t1,617
- 384: c00f081b addiw a6,t5,-1024
- 388: 0268083b mulw a6,a6,t1
- 38c: 41f8531b sraiw t1,a6,0x1f
- 390: 0153531b srliw t1,t1,0x15
- 394: 0103033b addw t1,t1,a6
- 398: 40b3539b sraiw t2,t1,0xb
- 39c: 4849 li a6,18
- 39e: 4078083b subw a6,a6,t2
- 3a2: 41f8531b sraiw t1,a6,0x1f
- 3a6: 00684eb3 xor t4,a6,t1
- 3aa: 406e8f3b subw t5,t4,t1
- 3ae: 2c900313 li t1,713
- 3b2: 03e3033b mulw t1,t1,t5
- 3b6: 4e35 li t3,13
- 3b8: 8efa mv t4,t5
- 3ba: 40e35f9b sraiw t6,t1,0xe
- 3be: 837e mv t1,t6
- 3c0: 23fe4363 blt t3,t6,5e6 <stbsp__real_to_str+0x3fc>
- 3c4: 5e25 li t3,-23
- 3c6: 026e0e3b mulw t3,t3,t1
- 3ca: 01de0ebb addw t4,t3,t4
- 3ce: 22084f63 bltz a6,60c <stbsp__real_to_str+0x422>
- 3d2: f2000753 fmv.d.x fa4,zero
- 3d6: 00005e17 auipc t3,0x5
- 3da: 022e0e13 addi t3,t3,34 # 53f8 <stbsp__bot>
- 3de: 380e9e63 bnez t4,77a <stbsp__real_to_str+0x590>
- 3e2: f20887d3 fmv.d.x fa5,a7
- 3e6: fff30f1b addiw t5,t1,-1
- 3ea: 0f0e slli t5,t5,0x3
- 3ec: 02f777d3 fadd.d fa5,fa4,fa5
- 3f0: 030e slli t1,t1,0x3
- 3f2: 9f72 add t5,t5,t3
- 3f4: 9e1a add t3,t3,t1
- 3f6: 2e0e3e03 ld t3,736(t3)
- 3fa: 2e8f3587 fld fa1,744(t5)
- 3fe: f8000837 lui a6,0xf8000
- 402: e2078ed3 fmv.x.d t4,fa5
- 406: 12b7f6d3 fmul.d fa3,fa5,fa1
- 40a: f2088653 fmv.d.x fa2,a7
- 40e: 01d87333 and t1,a6,t4
- 412: 01c87833 and a6,a6,t3
- 416: f20807d3 fmv.d.x fa5,a6
- 41a: f2030053 fmv.d.x ft0,t1
- 41e: 0af5f553 fsub.d fa0,fa1,fa5
- 422: f20e87d3 fmv.d.x fa5,t4
- 426: 0ac7f0d3 fsub.d ft1,fa5,fa2
- 42a: f20807d3 fmv.d.x fa5,a6
- 42e: f2030653 fmv.d.x fa2,t1
- 432: 6ac7f647 fmsub.d fa2,fa5,fa2,fa3
- 436: f20e87d3 fmv.d.x fa5,t4
- 43a: 0a177753 fsub.d fa4,fa4,ft1
- 43e: f20300d3 fmv.d.x ft1,t1
- 442: 0a07f7d3 fsub.d fa5,fa5,ft0
- 446: 350f3007 fld ft0,848(t5)
- 44a: 62157643 fmadd.d fa2,fa0,ft1,fa2
- 44e: 12b77753 fmul.d fa4,fa4,fa1
- 452: f20805d3 fmv.d.x fa1,a6
- 456: 62b7f643 fmadd.d fa2,fa5,fa1,fa2
- 45a: f20e85d3 fmv.d.x fa1,t4
- 45e: 7205f743 fmadd.d fa4,fa1,ft0,fa4
- 462: 62a7f7c3 fmadd.d fa5,fa5,fa0,fa2
- 466: 02e7f753 fadd.d fa4,fa5,fa4
- 46a: bd0d j 29c <stbsp__real_to_str+0xb2>
- 46c: 00e3833b addw t1,t2,a4
- 470: 2a0e4663 bltz t3,71c <stbsp__real_to_str+0x532>
- 474: 475d li a4,23
- 476: 10677663 bgeu a4,t1,582 <stbsp__real_to_str+0x398>
- 47a: e80f93e3 bnez t6,300 <stbsp__real_to_str+0x116>
- 47e: 05f5e7b7 lui a5,0x5f5e
- 482: 0ff78793 addi a5,a5,255 # 5f5e0ff <_ZSt4cerr+0x5f56877>
- 486: 04060413 addi s0,a2,64
- 48a: 03860613 addi a2,a2,56
- 48e: ebf7dce3 bge a5,t6,346 <stbsp__real_to_str+0x15c>
- 492: 4f01 li t5,0
- 494: 00006e97 auipc t4,0x6
- 498: 4fce8e93 addi t4,t4,1276 # 6990 <stbsp__digitpair>
- 49c: 05f5e7b7 lui a5,0x5f5e
- 4a0: 10078793 addi a5,a5,256 # 5f5e100 <_ZSt4cerr+0x5f56878>
- 4a4: 02ffe833 rem a6,t6,a5
- 4a8: 02ffcfb3 div t6,t6,a5
- 4ac: 0008071b sext.w a4,a6
- 4b0: 0a080463 beqz a6,558 <stbsp__real_to_str+0x36e>
- 4b4: 8822 mv a6,s0
- 4b6: 06400893 li a7,100
- 4ba: 06300e13 li t3,99
- 4be: 1879 addi a6,a6,-2 # fffffffff7fffffe <_ZSt4cerr+0xfffffffff7ff8776>
- 4c0: 0007031b sext.w t1,a4
- 4c4: 031777bb remuw a5,a4,a7
- 4c8: 2785 addiw a5,a5,1
- 4ca: 0017979b slliw a5,a5,0x1
- 4ce: 1782 slli a5,a5,0x20
- 4d0: 9381 srli a5,a5,0x20
- 4d2: 97f6 add a5,a5,t4
- 4d4: 0007d783 lhu a5,0(a5)
- 4d8: 0317573b divuw a4,a4,a7
- 4dc: 00f81023 sh a5,0(a6)
- 4e0: fc6e6fe3 bltu t3,t1,4be <stbsp__real_to_str+0x2d4>
- 4e4: 008f0f3b addw t5,t5,s0
- 4e8: 410f0f3b subw t5,t5,a6
- 4ec: 020f8f63 beqz t6,52a <stbsp__real_to_str+0x340>
- 4f0: 87c2 mv a5,a6
- 4f2: 03000713 li a4,48
- 4f6: 04c80c63 beq a6,a2,54e <stbsp__real_to_str+0x364>
- 4fa: 17fd addi a5,a5,-1
- 4fc: 00e78023 sb a4,0(a5)
- 500: fec79de3 bne a5,a2,4fa <stbsp__real_to_str+0x310>
- 504: 408807b3 sub a5,a6,s0
- 508: 00ff07bb addw a5,t5,a5
- 50c: 1461 addi s0,s0,-8
- 50e: 00878f1b addiw t5,a5,8
- 512: 05f5e7b7 lui a5,0x5f5e
- 516: 0ff78793 addi a5,a5,255 # 5f5e0ff <_ZSt4cerr+0x5f56877>
- 51a: ff840613 addi a2,s0,-8
- 51e: f7f7cfe3 blt a5,t6,49c <stbsp__real_to_str+0x2b2>
- 522: 000f871b sext.w a4,t6
- 526: 4f81 li t6,0
- 528: b771 j 4b4 <stbsp__real_to_str+0x2ca>
- 52a: 020f0563 beqz t5,554 <stbsp__real_to_str+0x36a>
- 52e: 00084703 lbu a4,0(a6)
- 532: 03000793 li a5,48
- 536: 22f70f63 beq a4,a5,774 <stbsp__real_to_str+0x58a>
- 53a: 2f01 sext.w t5,t5
- 53c: 0076a023 sw t2,0(a3)
- 540: 6462 ld s0,24(sp)
- 542: 0102b023 sd a6,0(t0)
- 546: 01e5a023 sw t5,0(a1)
- 54a: 6105 addi sp,sp,32
- 54c: 8082 ret
- 54e: 8442 mv s0,a6
- 550: b7c9 j 512 <stbsp__real_to_str+0x328>
- 552: 8822 mv a6,s0
- 554: 4f01 li t5,0
- 556: b7dd j 53c <stbsp__real_to_str+0x352>
- 558: 8822 mv a6,s0
- 55a: bf59 j 4f0 <stbsp__real_to_str+0x306>
- 55c: 0eb2 slli t4,t4,0xc
- 55e: 00005797 auipc a5,0x5
- 562: b6a78793 addi a5,a5,-1174 # 50c8 <_GLOBAL__sub_I__ZSt3cin+0xd8>
- 566: 000e8663 beqz t4,572 <stbsp__real_to_str+0x388>
- 56a: 00005797 auipc a5,0x5
- 56e: b5678793 addi a5,a5,-1194 # 50c0 <_GLOBAL__sub_I__ZSt3cin+0xd0>
- 572: 00f2b023 sd a5,0(t0)
- 576: 679d lui a5,0x7
- 578: c29c sw a5,0(a3)
- 57a: 4f0d li t5,3
- 57c: 01e5a023 sw t5,0(a1)
- 580: 8082 ret
- 582: 3b9ad737 lui a4,0x3b9ad
- 586: 9ff70713 addi a4,a4,-1537 # 3b9ac9ff <_ZSt4cerr+0x3b9a5177>
- 58a: 07f76f63 bltu a4,t6,608 <stbsp__real_to_str+0x41e>
- 58e: 4805 li a6,1
- 590: 02081713 slli a4,a6,0x20
- 594: 01d75893 srli a7,a4,0x1d
- 598: 00005717 auipc a4,0x5
- 59c: 21870713 addi a4,a4,536 # 57b0 <stbsp__powten>
- 5a0: 9746 add a4,a4,a7
- 5a2: 4e51 li t3,20
- 5a4: a021 j 5ac <stbsp__real_to_str+0x3c2>
- 5a6: 2805 addiw a6,a6,1
- 5a8: edc809e3 beq a6,t3,47a <stbsp__real_to_str+0x290>
- 5ac: 00073883 ld a7,0(a4)
- 5b0: 0721 addi a4,a4,8
- 5b2: ff1ffae3 bgeu t6,a7,5a6 <stbsp__real_to_str+0x3bc>
- 5b6: ed0372e3 bgeu t1,a6,47a <stbsp__real_to_str+0x290>
- 5ba: 4068083b subw a6,a6,t1
- 5be: 475d li a4,23
- 5c0: eb076de3 bltu a4,a6,47a <stbsp__real_to_str+0x290>
- 5c4: 080e slli a6,a6,0x3
- 5c6: 00005717 auipc a4,0x5
- 5ca: e3270713 addi a4,a4,-462 # 53f8 <stbsp__bot>
- 5ce: 9742 add a4,a4,a6
- 5d0: 3b873803 ld a6,952(a4)
- 5d4: 00185713 srli a4,a6,0x1
- 5d8: 977e add a4,a4,t6
- 5da: 01176363 bltu a4,a7,5e0 <stbsp__real_to_str+0x3f6>
- 5de: 2385 addiw t2,t2,1
- 5e0: 03075fb3 divu t6,a4,a6
- 5e4: bd59 j 47a <stbsp__real_to_str+0x290>
- 5e6: 4335 li t1,13
- 5e8: 5e25 li t3,-23
- 5ea: 026e0e3b mulw t3,t3,t1
- 5ee: 01de0ebb addw t4,t3,t4
- 5f2: de0850e3 bgez a6,3d2 <stbsp__real_to_str+0x1e8>
- 5f6: a819 j 60c <stbsp__real_to_str+0x422>
- 5f8: 02571313 slli t1,a4,0x25
- 5fc: 02535313 srli t1,t1,0x25
- 600: 0305 addi t1,t1,1
- 602: 475d li a4,23
- 604: ce676ee3 bltu a4,t1,300 <stbsp__real_to_str+0x116>
- 608: 4829 li a6,10
- 60a: b759 j 590 <stbsp__real_to_str+0x3a6>
- 60c: 260e8663 beqz t4,878 <stbsp__real_to_str+0x68e>
- 610: 00231e13 slli t3,t1,0x2
- 614: 41c30e33 sub t3,t1,t3
- 618: 0e0e slli t3,t3,0x3
- 61a: 9e1a add t3,t3,t1
- 61c: fffe881b addiw a6,t4,-1
- 620: 9e7a add t3,t3,t5
- 622: 00005e97 auipc t4,0x5
- 626: dd6e8e93 addi t4,t4,-554 # 53f8 <stbsp__bot>
- 62a: 0e0e slli t3,t3,0x3
- 62c: 080e slli a6,a6,0x3
- 62e: 9876 add a6,a6,t4
- 630: 9ef2 add t4,t4,t3
- 632: 0b883607 fld fa2,184(a6)
- 636: f20887d3 fmv.d.x fa5,a7
- 63a: 0b0ebf03 ld t5,176(t4)
- 63e: f8000e37 lui t3,0xf8000
- 642: 011e7eb3 and t4,t3,a7
- 646: 12f676d3 fmul.d fa3,fa2,fa5
- 64a: 01ee7e33 and t3,t3,t5
- 64e: f20e07d3 fmv.d.x fa5,t3
- 652: f20e0753 fmv.d.x fa4,t3
- 656: f20e8553 fmv.d.x fa0,t4
- 65a: 0af67653 fsub.d fa2,fa2,fa5
- 65e: f20e87d3 fmv.d.x fa5,t4
- 662: f20e85d3 fmv.d.x fa1,t4
- 666: 6ae7f7c7 fmsub.d fa5,fa5,fa4,fa3
- 66a: f2088753 fmv.d.x fa4,a7
- 66e: 0ab775d3 fsub.d fa1,fa4,fa1
- 672: 16883707 fld fa4,360(a6)
- 676: 7aa677c3 fmadd.d fa5,fa2,fa0,fa5
- 67a: f20e0553 fmv.d.x fa0,t3
- 67e: 7aa5f7c3 fmadd.d fa5,fa1,fa0,fa5
- 682: 7ac5f5c3 fmadd.d fa1,fa1,fa2,fa5
- 686: f20887d3 fmv.d.x fa5,a7
- 68a: 5af77743 fmadd.d fa4,fa4,fa5,fa1
- 68e: c00f87e3 beqz t6,29c <stbsp__real_to_str+0xb2>
- 692: 02d777d3 fadd.d fa5,fa4,fa3
- 696: fff3089b addiw a7,t1,-1
- 69a: 00005817 auipc a6,0x5
- 69e: d5e80813 addi a6,a6,-674 # 53f8 <stbsp__bot>
- 6a2: 030e slli t1,t1,0x3
- 6a4: 088e slli a7,a7,0x3
- 6a6: 98c2 add a7,a7,a6
- 6a8: 981a add a6,a6,t1
- 6aa: e2078e53 fmv.x.d t3,fa5
- 6ae: 21083e83 ld t4,528(a6)
- 6b2: f8000837 lui a6,0xf8000
- 6b6: 2188b507 fld fa0,536(a7)
- 6ba: 01c87333 and t1,a6,t3
- 6be: 01d87833 and a6,a6,t4
- 6c2: f2080653 fmv.d.x fa2,a6
- 6c6: 12f577d3 fmul.d fa5,fa0,fa5
- 6ca: 2808b587 fld fa1,640(a7)
- 6ce: 0ac57053 fsub.d ft0,fa0,fa2
- 6d2: f20e0653 fmv.d.x fa2,t3
- 6d6: 0ad67153 fsub.d ft2,fa2,fa3
- 6da: f20806d3 fmv.d.x fa3,a6
- 6de: f2030653 fmv.d.x fa2,t1
- 6e2: 7ac6f0c7 fmsub.d ft1,fa3,fa2,fa5
- 6e6: f20e06d3 fmv.d.x fa3,t3
- 6ea: 0ac6f653 fsub.d fa2,fa3,fa2
- 6ee: 22f786d3 fmv.d fa3,fa5
- 6f2: 0a2777d3 fsub.d fa5,fa4,ft2
- 6f6: f2030753 fmv.d.x fa4,t1
- 6fa: 0ae07743 fmadd.d fa4,ft0,fa4,ft1
- 6fe: 12a7f7d3 fmul.d fa5,fa5,fa0
- 702: f2080553 fmv.d.x fa0,a6
- 706: 72a67743 fmadd.d fa4,fa2,fa0,fa4
- 70a: f20e0553 fmv.d.x fa0,t3
- 70e: 7aa5f7c3 fmadd.d fa5,fa1,fa0,fa5
- 712: 72067643 fmadd.d fa2,fa2,ft0,fa4
- 716: 02f67753 fadd.d fa4,fa2,fa5
- 71a: b649 j 29c <stbsp__real_to_str+0xb2>
- 71c: 02571313 slli t1,a4,0x25
- 720: 02535313 srli t1,t1,0x25
- 724: 0305 addi t1,t1,1
- 726: 475d li a4,23
- 728: d46769e3 bltu a4,t1,47a <stbsp__real_to_str+0x290>
- 72c: bd99 j 582 <stbsp__real_to_str+0x398>
- 72e: 87fe mv a5,t6
- 730: 8fbe mv t6,a5
- 732: b101 j 332 <stbsp__real_to_str+0x148>
- 734: 87fe mv a5,t6
- 736: 3e800713 li a4,1000
- 73a: 02e7f73b remuw a4,a5,a4
- 73e: 2781 sext.w a5,a5
- 740: eb01 bnez a4,750 <stbsp__real_to_str+0x566>
- 742: 3e800813 li a6,1000
- 746: 0307d7bb divuw a5,a5,a6
- 74a: 0307f73b remuw a4,a5,a6
- 74e: df65 beqz a4,746 <stbsp__real_to_str+0x55c>
- 750: 02079f93 slli t6,a5,0x20
- 754: 020fdf93 srli t6,t6,0x20
- 758: b31d j 47e <stbsp__real_to_str+0x294>
- 75a: 4785 li a5,1
- 75c: c29c sw a5,0(a3)
- 75e: 00c2b023 sd a2,0(t0)
- 762: 03000793 li a5,48
- 766: 00f60023 sb a5,0(a2)
- 76a: 4f05 li t5,1
- 76c: 01e5a023 sw t5,0(a1)
- 770: 6105 addi sp,sp,32
- 772: 8082 ret
- 774: 0805 addi a6,a6,1 # fffffffff8000001 <_ZSt4cerr+0xfffffffff7ff8779>
- 776: 3f7d addiw t5,t5,-1
- 778: b3d1 j 53c <stbsp__real_to_str+0x352>
- 77a: e826 sd s1,16(sp)
- 77c: e44a sd s2,8(sp)
- 77e: 4859 li a6,22
- 780: 8976 mv s2,t4
- 782: 11d84363 blt a6,t4,888 <stbsp__real_to_str+0x69e>
- 786: 0009049b sext.w s1,s2
- 78a: 00005e17 auipc t3,0x5
- 78e: c6ee0e13 addi t3,t3,-914 # 53f8 <stbsp__bot>
- 792: 00349813 slli a6,s1,0x3
- 796: 9872 add a6,a6,t3
- 798: 00083687 fld fa3,0(a6)
- 79c: 00083803 ld a6,0(a6)
- 7a0: f20887d3 fmv.d.x fa5,a7
- 7a4: f8000fb7 lui t6,0xf8000
- 7a8: 010ff833 and a6,t6,a6
- 7ac: 12f6f553 fmul.d fa0,fa3,fa5
- 7b0: f20807d3 fmv.d.x fa5,a6
- 7b4: 011ff433 and s0,t6,a7
- 7b8: f2040753 fmv.d.x fa4,s0
- 7bc: 0af6f6d3 fsub.d fa3,fa3,fa5
- 7c0: f20887d3 fmv.d.x fa5,a7
- 7c4: f2080653 fmv.d.x fa2,a6
- 7c8: 412e8ebb subw t4,t4,s2
- 7cc: 0ae7f753 fsub.d fa4,fa5,fa4
- 7d0: f20407d3 fmv.d.x fa5,s0
- 7d4: e20508d3 fmv.x.d a7,fa0
- 7d8: 52c7f7c7 fmsub.d fa5,fa5,fa2,fa0
- 7dc: f2040653 fmv.d.x fa2,s0
- 7e0: 7ac6f7c3 fmadd.d fa5,fa3,fa2,fa5
- 7e4: f2080653 fmv.d.x fa2,a6
- 7e8: 7ac777c3 fmadd.d fa5,fa4,fa2,fa5
- 7ec: 7ad77743 fmadd.d fa4,fa4,fa3,fa5
- 7f0: 080e8963 beqz t4,882 <stbsp__real_to_str+0x698>
- 7f4: 02e577d3 fadd.d fa5,fa0,fa4
- 7f8: 0e8e slli t4,t4,0x3
- 7fa: 01de0833 add a6,t3,t4
- 7fe: 00083587 fld fa1,0(a6)
- 802: 00231893 slli a7,t1,0x2
- 806: 411308b3 sub a7,t1,a7
- 80a: 00389813 slli a6,a7,0x3
- 80e: e2078453 fmv.x.d s0,fa5
- 812: 12f5f7d3 fmul.d fa5,fa1,fa5
- 816: 981a add a6,a6,t1
- 818: 987a add a6,a6,t5
- 81a: 40980833 sub a6,a6,s1
- 81e: 080e slli a6,a6,0x3
- 820: 9872 add a6,a6,t3
- 822: 00083e83 ld t4,0(a6)
- 826: 008ff833 and a6,t6,s0
- 82a: e20788d3 fmv.x.d a7,fa5
- 82e: f20806d3 fmv.d.x fa3,a6
- 832: f20407d3 fmv.d.x fa5,s0
- 836: 01dfffb3 and t6,t6,t4
- 83a: f20880d3 fmv.d.x ft1,a7
- 83e: 0ad7f653 fsub.d fa2,fa5,fa3
- 842: f20f87d3 fmv.d.x fa5,t6
- 846: 64c2 ld s1,16(sp)
- 848: 6922 ld s2,8(sp)
- 84a: 0af5f053 fsub.d ft0,fa1,fa5
- 84e: 0ad7f6c7 fmsub.d fa3,fa5,fa3,ft1
- 852: f20407d3 fmv.d.x fa5,s0
- 856: 0aa7f7d3 fsub.d fa5,fa5,fa0
- 85a: f2080553 fmv.d.x fa0,a6
- 85e: 6aa076c3 fmadd.d fa3,ft0,fa0,fa3
- 862: 0af77753 fsub.d fa4,fa4,fa5
- 866: f20f87d3 fmv.d.x fa5,t6
- 86a: 6af677c3 fmadd.d fa5,fa2,fa5,fa3
- 86e: 7a067643 fmadd.d fa2,fa2,ft0,fa5
- 872: 62e5f743 fmadd.d fa4,fa1,fa4,fa2
- 876: b6b5 j 3e2 <stbsp__real_to_str+0x1f8>
- 878: f20886d3 fmv.d.x fa3,a7
- 87c: f2000753 fmv.d.x fa4,zero
- 880: b539 j 68e <stbsp__real_to_str+0x4a4>
- 882: 64c2 ld s1,16(sp)
- 884: 6922 ld s2,8(sp)
- 886: beb1 j 3e2 <stbsp__real_to_str+0x1f8>
- 888: 4959 li s2,22
- 88a: bdf5 j 786 <stbsp__real_to_str+0x59c>
- 88c: e826 sd s1,16(sp)
- 88e: e44a sd s2,8(sp)
- 890: ecc00393 li t2,-308
- 894: 4eed li t4,27
- 896: 4335 li t1,13
- 898: 14600f13 li t5,326
- 89c: b5cd j 77e <stbsp__real_to_str+0x594>
- 89e: 26900313 li t1,617
- 8a2: 0303083b mulw a6,t1,a6
- 8a6: 41f8531b sraiw t1,a6,0x1f
- 8aa: 0153531b srliw t1,t1,0x15
- 8ae: 0103033b addw t1,t1,a6
- 8b2: 40b3539b sraiw t2,t1,0xb
- 8b6: 4849 li a6,18
- 8b8: 4078083b subw a6,a6,t2
- 8bc: b249 j 23e <stbsp__real_to_str+0x54>
-
-00000000000008be <_in_char.part.0>:
-static int _in_char(_InContext *ctx)
- 8be: 87aa mv a5,a0
- if (ctx->fd == -1)
- 8c0: 4508 lw a0,8(a0)
- 8c2: 577d li a4,-1
- 8c4: 00e51d63 bne a0,a4,8de <_in_char.part.0+0x20>
- if (ctx->buf[ctx->pos] == '\0')
- 8c8: 6b94 ld a3,16(a5)
- 8ca: 6398 ld a4,0(a5)
- 8cc: 9736 add a4,a4,a3
- 8ce: 00074603 lbu a2,0(a4)
- 8d2: c60d beqz a2,8fc <_in_char.part.0+0x3e>
- return (unsigned char)ctx->buf[ctx->pos++];
- 8d4: 0685 addi a3,a3,1
- 8d6: eb94 sd a3,16(a5)
- 8d8: 00074503 lbu a0,0(a4)
- 8dc: 8082 ret
-static int _in_char(_InContext *ctx)
- 8de: 1101 addi sp,sp,-32
- if (read(ctx->fd, &c, 1) == 1)
- 8e0: 4605 li a2,1
- 8e2: 00f10593 addi a1,sp,15
-static int _in_char(_InContext *ctx)
- 8e6: ec06 sd ra,24(sp)
- if (read(ctx->fd, &c, 1) == 1)
- 8e8: 801ff0ef jal e8 <read>
- 8ec: 4785 li a5,1
- 8ee: 00f51963 bne a0,a5,900 <_in_char.part.0+0x42>
- return (unsigned char)c;
- 8f2: 00f14503 lbu a0,15(sp)
-}
- 8f6: 60e2 ld ra,24(sp)
- 8f8: 6105 addi sp,sp,32
- 8fa: 8082 ret
- return -1;
- 8fc: 557d li a0,-1
-}
- 8fe: 8082 ret
- return -1;
- 900: 557d li a0,-1
- 902: bfd5 j 8f6 <_in_char.part.0+0x38>
-
-0000000000000904 <_skip_space>:
-{
- 904: 7139 addi sp,sp,-64
- 906: f822 sd s0,48(sp)
- 908: f426 sd s1,40(sp)
- 90a: f04a sd s2,32(sp)
- 90c: ec4e sd s3,24(sp)
- 90e: e852 sd s4,16(sp)
- 910: fc06 sd ra,56(sp)
- 912: 842a mv s0,a0
- ctx->ungotten = -1;
- 914: 54fd li s1,-1
- if (read(ctx->fd, &c, 1) == 1)
- 916: 00f10a13 addi s4,sp,15
- return c == ' ' || c == '\t' || c == '\n' || c == '\v' || c == '\f' || c == '\r';
- 91a: 02000913 li s2,32
- 91e: 4991 li s3,4
- if (ctx->ungotten >= 0)
- 920: 4c1c lw a5,24(s0)
- 922: 0407d163 bgez a5,964 <_skip_space+0x60>
- if (ctx->fd == -1)
- 926: 4408 lw a0,8(s0)
- if (read(ctx->fd, &c, 1) == 1)
- 928: 4605 li a2,1
- 92a: 85d2 mv a1,s4
- if (ctx->fd == -1)
- 92c: 02951e63 bne a0,s1,968 <_skip_space+0x64>
- if (ctx->buf[ctx->pos] == '\0')
- 930: 6818 ld a4,16(s0)
- 932: 601c ld a5,0(s0)
- return (unsigned char)ctx->buf[ctx->pos++];
- 934: 00170693 addi a3,a4,1
- if (ctx->buf[ctx->pos] == '\0')
- 938: 97ba add a5,a5,a4
- 93a: 0007c703 lbu a4,0(a5) # 7000 <_stdout+0x150>
- 93e: cb19 beqz a4,954 <_skip_space+0x50>
- return (unsigned char)ctx->buf[ctx->pos++];
- 940: e814 sd a3,16(s0)
- 942: 0007c783 lbu a5,0(a5)
- return c == ' ' || c == '\t' || c == '\n' || c == '\v' || c == '\f' || c == '\r';
- 946: ff77871b addiw a4,a5,-9
- 94a: fd278be3 beq a5,s2,920 <_skip_space+0x1c>
- 94e: fce9f9e3 bgeu s3,a4,920 <_skip_space+0x1c>
- ctx->ungotten = c;
- 952: cc1c sw a5,24(s0)
-}
- 954: 70e2 ld ra,56(sp)
- 956: 7442 ld s0,48(sp)
- 958: 74a2 ld s1,40(sp)
- 95a: 7902 ld s2,32(sp)
- 95c: 69e2 ld s3,24(sp)
- 95e: 6a42 ld s4,16(sp)
- 960: 6121 addi sp,sp,64
- 962: 8082 ret
- ctx->ungotten = -1;
- 964: cc04 sw s1,24(s0)
- return c;
- 966: b7c5 j 946 <_skip_space+0x42>
- if (read(ctx->fd, &c, 1) == 1)
- 968: f80ff0ef jal e8 <read>
- 96c: 4785 li a5,1
- 96e: fef513e3 bne a0,a5,954 <_skip_space+0x50>
- return (unsigned char)c;
- 972: 00f14783 lbu a5,15(sp)
- 976: bfc1 j 946 <_skip_space+0x42>
-
-0000000000000978 <_vscanf_core.constprop.0>:
-static int _vscanf_core(_InContext *ctx, const char *format, va_list ap)
- 978: 7155 addi sp,sp,-208
- 97a: e586 sd ra,200(sp)
- 97c: e95a sd s6,144(sp)
- while (*p)
- 97e: 0005c783 lbu a5,0(a1)
-static int _vscanf_core(_InContext *ctx, const char *format, va_list ap)
- 982: e432 sd a2,8(sp)
- while (*p)
- 984: 68078b63 beqz a5,101a <_vscanf_core.constprop.0+0x6a2>
- 988: e1a2 sd s0,192(sp)
- 98a: fd26 sd s1,184(sp)
- 98c: f152 sd s4,160(sp)
- 98e: ed56 sd s5,152(sp)
- 990: f4ee sd s11,104(sp)
- 992: 842e mv s0,a1
- 994: 8daa mv s11,a0
- int assigned = 0;
- 996: 4b01 li s6,0
- return c == ' ' || c == '\t' || c == '\n' || c == '\v' || c == '\f' || c == '\r';
- 998: 02000493 li s1,32
- 99c: 4a91 li s5,4
- if (*p != '%')
- 99e: 02500a13 li s4,37
- return c == ' ' || c == '\t' || c == '\n' || c == '\v' || c == '\f' || c == '\r';
- 9a2: 04978763 beq a5,s1,9f0 <_vscanf_core.constprop.0+0x78>
- 9a6: ff77869b addiw a3,a5,-9
- 9aa: 0ff6f693 zext.b a3,a3
- 9ae: 04daf163 bgeu s5,a3,9f0 <_vscanf_core.constprop.0+0x78>
- if (*p != '%')
- 9b2: 07478d63 beq a5,s4,a2c <_vscanf_core.constprop.0+0xb4>
- _skip_space(ctx);
- 9b6: 856e mv a0,s11
- 9b8: f4dff0ef jal 904 <_skip_space>
- if (ctx->ungotten >= 0)
- 9bc: 018da503 lw a0,24(s11)
- 9c0: 04055a63 bgez a0,a14 <_vscanf_core.constprop.0+0x9c>
- 9c4: 856e mv a0,s11
- 9c6: ef9ff0ef jal 8be <_in_char.part.0>
- if (c != *p)
- 9ca: 00044783 lbu a5,0(s0)
- 9ce: 04a78a63 beq a5,a0,a22 <_vscanf_core.constprop.0+0xaa>
- if (c != -1)
- 9d2: 57fd li a5,-1
- 9d4: 00f50463 beq a0,a5,9dc <_vscanf_core.constprop.0+0x64>
- ctx->ungotten = c;
- 9d8: 00adac23 sw a0,24(s11)
- 9dc: 640e ld s0,192(sp)
- 9de: 74ea ld s1,184(sp)
- 9e0: 7a0a ld s4,160(sp)
- 9e2: 6aea ld s5,152(sp)
- 9e4: 7da6 ld s11,104(sp)
-}
- 9e6: 60ae ld ra,200(sp)
- 9e8: 855a mv a0,s6
- 9ea: 6b4a ld s6,144(sp)
- 9ec: 6169 addi sp,sp,208
- 9ee: 8082 ret
- _skip_space(ctx);
- 9f0: 856e mv a0,s11
- 9f2: f13ff0ef jal 904 <_skip_space>
- while (isspace(*p))
- 9f6: 00044783 lbu a5,0(s0)
- return c == ' ' || c == '\t' || c == '\n' || c == '\v' || c == '\f' || c == '\r';
- 9fa: 4611 li a2,4
- 9fc: ff77869b addiw a3,a5,-9
- a00: 0ff6f693 zext.b a3,a3
- a04: 00978663 beq a5,s1,a10 <_vscanf_core.constprop.0+0x98>
- a08: 00d67463 bgeu a2,a3,a10 <_vscanf_core.constprop.0+0x98>
- while (*p)
- a0c: fbd9 bnez a5,9a2 <_vscanf_core.constprop.0+0x2a>
- a0e: b7f9 j 9dc <_vscanf_core.constprop.0+0x64>
- p++;
- a10: 0405 addi s0,s0,1
- a12: b7d5 j 9f6 <_vscanf_core.constprop.0+0x7e>
- ctx->ungotten = -1;
- a14: 57fd li a5,-1
- a16: 00fdac23 sw a5,24(s11)
- if (c != *p)
- a1a: 00044783 lbu a5,0(s0)
- a1e: faa79ae3 bne a5,a0,9d2 <_vscanf_core.constprop.0+0x5a>
- while (*p)
- a22: 00144783 lbu a5,1(s0)
- p++;
- a26: 0405 addi s0,s0,1
- while (*p)
- a28: ffad bnez a5,9a2 <_vscanf_core.constprop.0+0x2a>
- a2a: bf4d j 9dc <_vscanf_core.constprop.0+0x64>
- a2c: f94a sd s2,176(sp)
- a2e: f54e sd s3,168(sp)
- a30: e55e sd s7,136(sp)
- a32: e162 sd s8,128(sp)
- if (*p == '*')
- a34: 00144583 lbu a1,1(s0)
- a38: 02a00793 li a5,42
- a3c: 22f58d63 beq a1,a5,c76 <_vscanf_core.constprop.0+0x2fe>
- p++;
- a40: 0405 addi s0,s0,1
- int suppress = 0;
- a42: 4981 li s3,0
- while (*p >= '0' && *p <= '9')
- a44: fd05861b addiw a2,a1,-48
- a48: 0ff67693 zext.b a3,a2
- a4c: 47a5 li a5,9
- a4e: 36d7e763 bltu a5,a3,dbc <_vscanf_core.constprop.0+0x444>
- a52: 4781 li a5,0
- a54: 4825 li a6,9
- a56: a019 j a5c <_vscanf_core.constprop.0+0xe4>
- width = width * 10 + (*p - '0');
- a58: 0016979b slliw a5,a3,0x1
- while (*p >= '0' && *p <= '9')
- a5c: 00144583 lbu a1,1(s0)
- width = width * 10 + (*p - '0');
- a60: 00f6093b addw s2,a2,a5
- a64: 0029169b slliw a3,s2,0x2
- while (*p >= '0' && *p <= '9')
- a68: fd05861b addiw a2,a1,-48
- a6c: 0ff67513 zext.b a0,a2
- width = width * 10 + (*p - '0');
- a70: 012686bb addw a3,a3,s2
- p++;
- a74: 0405 addi s0,s0,1
- while (*p >= '0' && *p <= '9')
- a76: fea871e3 bgeu a6,a0,a58 <_vscanf_core.constprop.0+0xe0>
- if (*p == 'l')
- a7a: 06c00693 li a3,108
- p++;
- a7e: 00140b93 addi s7,s0,1
- if (*p == 'l')
- a82: 1ed58f63 beq a1,a3,c80 <_vscanf_core.constprop.0+0x308>
- else if (*p == 'h')
- a86: 06800693 li a3,104
- a8a: 2ad58863 beq a1,a3,d3a <_vscanf_core.constprop.0+0x3c2>
- char spec = *p++;
- a8e: 00044c03 lbu s8,0(s0)
- a92: 8ba2 mv s7,s0
- int len_mod = 0;
- a94: ec02 sd zero,24(sp)
- char spec = *p++;
- a96: 06300693 li a3,99
- a9a: 001b8413 addi s0,s7,1
- if (!spec)
- a9e: 2adc0863 beq s8,a3,d4e <_vscanf_core.constprop.0+0x3d6>
- aa2: 1f86fc63 bgeu a3,s8,c9a <_vscanf_core.constprop.0+0x322>
- aa6: f9cc069b addiw a3,s8,-100
- aaa: 0ff6f693 zext.b a3,a3
- aae: 4651 li a2,20
- ab0: 0cd66e63 bltu a2,a3,b8c <_vscanf_core.constprop.0+0x214>
- ab4: 00120637 lui a2,0x120
- ab8: 4585 li a1,1
- aba: 00d595b3 sll a1,a1,a3
- abe: 02160613 addi a2,a2,33 # 120021 <_ZSt4cerr+0x118799>
- ac2: 8e6d and a2,a2,a1
- ac4: ee69 bnez a2,b9e <_vscanf_core.constprop.0+0x226>
- ac6: 89b9 andi a1,a1,14
- ac8: 1e059263 bnez a1,cac <_vscanf_core.constprop.0+0x334>
- acc: 463d li a2,15
- ace: 0ac69f63 bne a3,a2,b8c <_vscanf_core.constprop.0+0x214>
- _skip_space(ctx);
- ad2: 856e mv a0,s11
- ad4: e31ff0ef jal 904 <_skip_space>
- char *buf = suppress ? NULL : va_arg(ap, char *);
- ad8: ec02 sd zero,24(sp)
- ada: 00099763 bnez s3,ae8 <_vscanf_core.constprop.0+0x170>
- ade: 67a2 ld a5,8(sp)
- ae0: 6398 ld a4,0(a5)
- ae2: 07a1 addi a5,a5,8
- ae4: e43e sd a5,8(sp)
- ae6: ec3a sd a4,24(sp)
- if (ctx->ungotten >= 0)
- ae8: 018da503 lw a0,24(s11)
- aec: 2e055b63 bgez a0,de2 <_vscanf_core.constprop.0+0x46a>
- af0: 856e mv a0,s11
- af2: dcdff0ef jal 8be <_in_char.part.0>
- while (c != -1 && !isspace(c))
- af6: 56fd li a3,-1
- af8: 6ad50363 beq a0,a3,119e <_vscanf_core.constprop.0+0x826>
- return c == ' ' || c == '\t' || c == '\n' || c == '\v' || c == '\f' || c == '\r';
- afc: 02000693 li a3,32
- b00: 3ed50963 beq a0,a3,ef2 <_vscanf_core.constprop.0+0x57a>
- b04: 46a5 li a3,9
- b06: 3ed50663 beq a0,a3,ef2 <_vscanf_core.constprop.0+0x57a>
- b0a: 46a9 li a3,10
- b0c: 3ed50363 beq a0,a3,ef2 <_vscanf_core.constprop.0+0x57a>
- b10: 46ad li a3,11
- b12: 3ed50063 beq a0,a3,ef2 <_vscanf_core.constprop.0+0x57a>
- b16: 46b1 li a3,12
- b18: 3cd50d63 beq a0,a3,ef2 <_vscanf_core.constprop.0+0x57a>
- b1c: 46b5 li a3,13
- b1e: 3cd50a63 beq a0,a3,ef2 <_vscanf_core.constprop.0+0x57a>
- b22: 67e2 ld a5,24(sp)
- b24: fce6 sd s9,120(sp)
- b26: f8ea sd s10,112(sp)
- b28: e83e sd a5,16(sp)
- b2a: 4d01 li s10,0
- while (c != -1 && !isspace(c))
- b2c: 5c7d li s8,-1
- return c == ' ' || c == '\t' || c == '\n' || c == '\v' || c == '\f' || c == '\r';
- b2e: 02000c93 li s9,32
- if (width > 0 && i >= width)
- b32: 01205463 blez s2,b3a <_vscanf_core.constprop.0+0x1c2>
- b36: 052d5563 bge s10,s2,b80 <_vscanf_core.constprop.0+0x208>
- if (!suppress)
- b3a: 00099563 bnez s3,b44 <_vscanf_core.constprop.0+0x1cc>
- buf[i] = (char)c;
- b3e: 67c2 ld a5,16(sp)
- b40: 00a78023 sb a0,0(a5)
- if (ctx->ungotten >= 0)
- b44: 018da503 lw a0,24(s11)
- i++;
- b48: 2d05 addiw s10,s10,1
- if (ctx->ungotten >= 0)
- b4a: 30055963 bgez a0,e5c <_vscanf_core.constprop.0+0x4e4>
- b4e: 856e mv a0,s11
- b50: d6fff0ef jal 8be <_in_char.part.0>
- while (c != -1 && !isspace(c))
- b54: 27850663 beq a0,s8,dc0 <_vscanf_core.constprop.0+0x448>
- return c == ' ' || c == '\t' || c == '\n' || c == '\v' || c == '\f' || c == '\r';
- b58: 03950463 beq a0,s9,b80 <_vscanf_core.constprop.0+0x208>
- b5c: 47a5 li a5,9
- b5e: 02f50163 beq a0,a5,b80 <_vscanf_core.constprop.0+0x208>
- b62: 47a9 li a5,10
- b64: 00f50e63 beq a0,a5,b80 <_vscanf_core.constprop.0+0x208>
- b68: 47ad li a5,11
- b6a: 00f50b63 beq a0,a5,b80 <_vscanf_core.constprop.0+0x208>
- b6e: 47b1 li a5,12
- b70: 00f50863 beq a0,a5,b80 <_vscanf_core.constprop.0+0x208>
- b74: 67c2 ld a5,16(sp)
- b76: 0785 addi a5,a5,1
- b78: e83e sd a5,16(sp)
- b7a: 47b5 li a5,13
- b7c: faf51be3 bne a0,a5,b32 <_vscanf_core.constprop.0+0x1ba>
- if (!suppress)
- b80: 64098a63 beqz s3,11d4 <_vscanf_core.constprop.0+0x85c>
- b84: 7ce6 ld s9,120(sp)
- b86: 7d46 ld s10,112(sp)
- ctx->ungotten = c;
- b88: 00adac23 sw a0,24(s11)
- while (*p)
- b8c: 001bc783 lbu a5,1(s7)
- b90: 794a ld s2,176(sp)
- b92: 79aa ld s3,168(sp)
- b94: 6baa ld s7,136(sp)
- b96: 6c0a ld s8,128(sp)
- b98: e00795e3 bnez a5,9a2 <_vscanf_core.constprop.0+0x2a>
- b9c: b581 j 9dc <_vscanf_core.constprop.0+0x64>
- _skip_space(ctx);
- b9e: 856e mv a0,s11
- ba0: f8ea sd s10,112(sp)
- ba2: d63ff0ef jal 904 <_skip_space>
- if (ctx->ungotten >= 0)
- ba6: 018da503 lw a0,24(s11)
- baa: 24055063 bgez a0,dea <_vscanf_core.constprop.0+0x472>
- bae: 856e mv a0,s11
- bb0: d0fff0ef jal 8be <_in_char.part.0>
- if (c == '-' || c == '+')
- bb4: fd55069b addiw a3,a0,-43
- bb8: 9af5 andi a3,a3,-3
- bba: 2681 sext.w a3,a3
- int i = 0, c = _in_char(ctx);
- bbc: 4d01 li s10,0
- if (c == '-' || c == '+')
- bbe: 3e068863 beqz a3,fae <_vscanf_core.constprop.0+0x636>
- int base = (spec == 'x') ? 16 : (spec == 'i' ? 0 : 10);
- bc2: 07800693 li a3,120
- bc6: 4641 li a2,16
- bc8: 00dc0863 beq s8,a3,bd8 <_vscanf_core.constprop.0+0x260>
- bcc: 06900693 li a3,105
- bd0: 4629 li a2,10
- bd2: 00dc1363 bne s8,a3,bd8 <_vscanf_core.constprop.0+0x260>
- bd6: 4601 li a2,0
- while (c != -1 && i < 63)
- bd8: 56fd li a3,-1
- bda: 5cd50863 beq a0,a3,11aa <_vscanf_core.constprop.0+0x832>
- bde: fce6 sd s9,120(sp)
- be0: 02010893 addi a7,sp,32
- be4: 01a88c33 add s8,a7,s10
- int hex = (base == 16 || base == 0) && ((c >= 'a' && c <= 'f') || (c >= 'A' && c <= 'F'));
- be8: 4cc1 li s9,16
- int digit = (c >= '0' && c <= '9');
- bea: fd05069b addiw a3,a0,-48
- bee: 0005031b sext.w t1,a0
- bf2: 00a6b593 sltiu a1,a3,10
- int hex = (base == 16 || base == 0) && ((c >= 'a' && c <= 'f') || (c >= 'A' && c <= 'F'));
- bf6: 27960a63 beq a2,s9,e6a <_vscanf_core.constprop.0+0x4f2>
- bfa: 2a060d63 beqz a2,eb4 <_vscanf_core.constprop.0+0x53c>
- int x = (c == 'x' || c == 'X');
- bfe: 07800793 li a5,120
- c02: 2ef50363 beq a0,a5,ee8 <_vscanf_core.constprop.0+0x570>
- c06: fa850693 addi a3,a0,-88
- c0a: 0016b693 seqz a3,a3
- c0e: 4301 li t1,0
- if (width > 0 && i >= width)
- c10: 01205463 blez s2,c18 <_vscanf_core.constprop.0+0x2a0>
- c14: 032d5a63 bge s10,s2,c48 <_vscanf_core.constprop.0+0x2d0>
- if (digit || hex || x)
- c18: 0066e6b3 or a3,a3,t1
- c1c: 8ecd or a3,a3,a1
- c1e: c68d beqz a3,c48 <_vscanf_core.constprop.0+0x2d0>
- num_buf[i++] = (char)c;
- c20: 00ac0023 sb a0,0(s8)
- if (ctx->ungotten >= 0)
- c24: 018da503 lw a0,24(s11)
- num_buf[i++] = (char)c;
- c28: 2d05 addiw s10,s10,1
- if (ctx->ungotten >= 0)
- c2a: 22055c63 bgez a0,e62 <_vscanf_core.constprop.0+0x4ea>
- c2e: 856e mv a0,s11
- c30: e832 sd a2,16(sp)
- c32: c8dff0ef jal 8be <_in_char.part.0>
- while (c != -1 && i < 63)
- c36: 57fd li a5,-1
- c38: 6642 ld a2,16(sp)
- c3a: 3cf50263 beq a0,a5,ffe <_vscanf_core.constprop.0+0x686>
- c3e: 03f00693 li a3,63
- c42: 0c05 addi s8,s8,1
- c44: fadd13e3 bne s10,a3,bea <_vscanf_core.constprop.0+0x272>
- num_buf[i] = '\0';
- c48: 040d0793 addi a5,s10,64
- c4c: 1018 addi a4,sp,32
- c4e: 97ba add a5,a5,a4
- c50: fc078023 sb zero,-64(a5)
- ctx->ungotten = c;
- c54: 00adac23 sw a0,24(s11)
- c58: 7ce6 ld s9,120(sp)
- if (i == 0)
- c5a: 1e0d0663 beqz s10,e46 <_vscanf_core.constprop.0+0x4ce>
- if (!suppress)
- c5e: 36098363 beqz s3,fc4 <_vscanf_core.constprop.0+0x64c>
- while (*p)
- c62: 001bc783 lbu a5,1(s7)
- {
- c66: 794a ld s2,176(sp)
- c68: 79aa ld s3,168(sp)
- c6a: 6baa ld s7,136(sp)
- c6c: 6c0a ld s8,128(sp)
- c6e: 7d46 ld s10,112(sp)
- while (*p)
- c70: d20799e3 bnez a5,9a2 <_vscanf_core.constprop.0+0x2a>
- c74: b3a5 j 9dc <_vscanf_core.constprop.0+0x64>
- while (*p >= '0' && *p <= '9')
- c76: 00244583 lbu a1,2(s0)
- suppress = 1;
- c7a: 4985 li s3,1
- p++;
- c7c: 0409 addi s0,s0,2
- c7e: b3d9 j a44 <_vscanf_core.constprop.0+0xcc>
- if (*p == 'l')
- c80: 00144c03 lbu s8,1(s0)
- len_mod = 1;
- c84: 4785 li a5,1
- c86: ec3e sd a5,24(sp)
- if (*p == 'l')
- c88: e0bc17e3 bne s8,a1,a96 <_vscanf_core.constprop.0+0x11e>
- len_mod = 2;
- c8c: 4789 li a5,2
- char spec = *p++;
- c8e: 00244c03 lbu s8,2(s0)
- p++;
- c92: 00240b93 addi s7,s0,2
- len_mod = 2;
- c96: ec3e sd a5,24(sp)
- c98: bbfd j a96 <_vscanf_core.constprop.0+0x11e>
- c9a: 100c0763 beqz s8,da8 <_vscanf_core.constprop.0+0x430>
- c9e: fbbc079b addiw a5,s8,-69
- ca2: 0ff7f793 zext.b a5,a5
- ca6: 4689 li a3,2
- ca8: eef6e2e3 bltu a3,a5,b8c <_vscanf_core.constprop.0+0x214>
- _skip_space(ctx);
- cac: 856e mv a0,s11
- cae: f8ea sd s10,112(sp)
- cb0: c55ff0ef jal 904 <_skip_space>
- if (ctx->ungotten >= 0)
- cb4: 018da783 lw a5,24(s11)
- cb8: 1207dd63 bgez a5,df2 <_vscanf_core.constprop.0+0x47a>
- cbc: 856e mv a0,s11
- cbe: c01ff0ef jal 8be <_in_char.part.0>
- if (c == '-' || c == '+')
- cc2: fd55069b addiw a3,a0,-43
- cc6: ffd6f613 andi a2,a3,-3
- cca: 2601 sext.w a2,a2
- ccc: 87aa mv a5,a0
- cce: 12060c63 beqz a2,e06 <_vscanf_core.constprop.0+0x48e>
- while (c != -1 && i < 63)
- cd2: 567d li a2,-1
- cd4: 16c50963 beq a0,a2,e46 <_vscanf_core.constprop.0+0x4ce>
- cd8: fce6 sd s9,120(sp)
- int i = 0, c = _in_char(ctx);
- cda: 4d01 li s10,0
- cdc: 80000937 lui s2,0x80000
- ce0: 197d addi s2,s2,-1 # ffffffff7fffffff <_ZSt4cerr+0xffffffff7fff8777>
- ce2: 0932 slli s2,s2,0xc
- ce4: 80194913 xori s2,s2,-2047
- ce8: 093e slli s2,s2,0xf
- cea: 02010813 addi a6,sp,32
- cee: 01a80cb3 add s9,a6,s10
- cf2: 03a00c13 li s8,58
- cf6: 1935 addi s2,s2,-19
- cf8: a831 j d14 <_vscanf_core.constprop.0+0x39c>
- cfa: bc5ff0ef jal 8be <_in_char.part.0>
- while (c != -1 && i < 63)
- cfe: 577d li a4,-1
- d00: 87aa mv a5,a0
- d02: 2ee50563 beq a0,a4,fec <_vscanf_core.constprop.0+0x674>
- d06: 03f00713 li a4,63
- d0a: 0c85 addi s9,s9,1
- d0c: 1eed0e63 beq s10,a4,f08 <_vscanf_core.constprop.0+0x590>
- d10: fd57869b addiw a3,a5,-43
- int c = ctx->ungotten;
- d14: 00d95633 srl a2,s2,a3
- d18: 856e mv a0,s11
- d1a: 8a05 andi a2,a2,1
- d1c: 1edc6663 bltu s8,a3,f08 <_vscanf_core.constprop.0+0x590>
- d20: 1e060463 beqz a2,f08 <_vscanf_core.constprop.0+0x590>
- num_buf[i++] = (char)c;
- d24: 00fc8023 sb a5,0(s9)
- if (ctx->ungotten >= 0)
- d28: 018da783 lw a5,24(s11)
- num_buf[i++] = (char)c;
- d2c: 2d05 addiw s10,s10,1
- if (ctx->ungotten >= 0)
- d2e: fc07c6e3 bltz a5,cfa <_vscanf_core.constprop.0+0x382>
- ctx->ungotten = -1;
- d32: 577d li a4,-1
- d34: 00edac23 sw a4,24(s11)
- while (c != -1 && i < 63)
- d38: b7f9 j d06 <_vscanf_core.constprop.0+0x38e>
- if (*p == 'h')
- d3a: 00144c03 lbu s8,1(s0)
- int len_mod = 0;
- d3e: ec02 sd zero,24(sp)
- if (*p == 'h')
- d40: d4bc1be3 bne s8,a1,a96 <_vscanf_core.constprop.0+0x11e>
- char spec = *p++;
- d44: 00244c03 lbu s8,2(s0)
- p++;
- d48: 00240b93 addi s7,s0,2
- d4c: b3a9 j a96 <_vscanf_core.constprop.0+0x11e>
- d4e: fce6 sd s9,120(sp)
- d50: f8ea sd s10,112(sp)
- int count = (width > 0) ? width : 1;
- d52: 00090c1b sext.w s8,s2
- d56: 0d205a63 blez s2,e2a <_vscanf_core.constprop.0+0x4b2>
- char *buf = suppress ? NULL : va_arg(ap, char *);
- d5a: 4d01 li s10,0
- d5c: 06098d63 beqz s3,dd6 <_vscanf_core.constprop.0+0x45e>
- for (int i = 0; i < count; i++)
- d60: 9c6a add s8,s8,s10
- if (c == -1)
- d62: 5cfd li s9,-1
- if (ctx->ungotten >= 0)
- d64: 018da783 lw a5,24(s11)
- ctx->ungotten = -1;
- d68: 856e mv a0,s11
- if (ctx->ungotten >= 0)
- d6a: 0207dc63 bgez a5,da2 <_vscanf_core.constprop.0+0x42a>
- d6e: b51ff0ef jal 8be <_in_char.part.0>
- d72: 87aa mv a5,a0
- if (c == -1)
- d74: 0b950d63 beq a0,s9,e2e <_vscanf_core.constprop.0+0x4b6>
- if (!suppress)
- d78: 00099463 bnez s3,d80 <_vscanf_core.constprop.0+0x408>
- buf[i] = (char)c;
- d7c: 00fd0023 sb a5,0(s10)
- for (int i = 0; i < count; i++)
- d80: 0d05 addi s10,s10,1
- d82: ffac11e3 bne s8,s10,d64 <_vscanf_core.constprop.0+0x3ec>
- while (*p)
- d86: 001bc783 lbu a5,1(s7)
- if (!suppress)
- d8a: 00099363 bnez s3,d90 <_vscanf_core.constprop.0+0x418>
- assigned++;
- d8e: 2b05 addiw s6,s6,1
- d90: 794a ld s2,176(sp)
- d92: 79aa ld s3,168(sp)
- d94: 6baa ld s7,136(sp)
- d96: 6c0a ld s8,128(sp)
- d98: 7ce6 ld s9,120(sp)
- d9a: 7d46 ld s10,112(sp)
- while (*p)
- d9c: c00793e3 bnez a5,9a2 <_vscanf_core.constprop.0+0x2a>
- da0: b935 j 9dc <_vscanf_core.constprop.0+0x64>
- ctx->ungotten = -1;
- da2: 019dac23 sw s9,24(s11)
- if (c == -1)
- da6: bfc9 j d78 <_vscanf_core.constprop.0+0x400>
- da8: 640e ld s0,192(sp)
- daa: 74ea ld s1,184(sp)
- dac: 794a ld s2,176(sp)
- dae: 79aa ld s3,168(sp)
- db0: 7a0a ld s4,160(sp)
- db2: 6aea ld s5,152(sp)
- db4: 6baa ld s7,136(sp)
- db6: 6c0a ld s8,128(sp)
- db8: 7da6 ld s11,104(sp)
- dba: b135 j 9e6 <_vscanf_core.constprop.0+0x6e>
- int width = -1;
- dbc: 597d li s2,-1
- dbe: b975 j a7a <_vscanf_core.constprop.0+0x102>
- if (!suppress)
- dc0: 3c099c63 bnez s3,1198 <_vscanf_core.constprop.0+0x820>
- buf[i] = '\0';
- dc4: 67e2 ld a5,24(sp)
- dc6: 01a786b3 add a3,a5,s10
- dca: 00068023 sb zero,0(a3)
- while (*p)
- dce: 001bc783 lbu a5,1(s7)
- assigned++;
- dd2: 2b05 addiw s6,s6,1
- dd4: bf75 j d90 <_vscanf_core.constprop.0+0x418>
- char *buf = suppress ? NULL : va_arg(ap, char *);
- dd6: 67a2 ld a5,8(sp)
- dd8: 0007bd03 ld s10,0(a5)
- ddc: 07a1 addi a5,a5,8
- dde: e43e sd a5,8(sp)
- de0: b741 j d60 <_vscanf_core.constprop.0+0x3e8>
- ctx->ungotten = -1;
- de2: 56fd li a3,-1
- de4: 00ddac23 sw a3,24(s11)
- while (c != -1 && !isspace(c))
- de8: bb11 j afc <_vscanf_core.constprop.0+0x184>
- ctx->ungotten = -1;
- dea: 56fd li a3,-1
- dec: 00ddac23 sw a3,24(s11)
- return c;
- df0: b3d1 j bb4 <_vscanf_core.constprop.0+0x23c>
- if (c == '-' || c == '+')
- df2: fd57869b addiw a3,a5,-43
- df6: ffd6f613 andi a2,a3,-3
- ctx->ungotten = -1;
- dfa: 55fd li a1,-1
- dfc: 00bdac23 sw a1,24(s11)
- if (c == '-' || c == '+')
- e00: 2601 sext.w a2,a2
- e02: ec061be3 bnez a2,cd8 <_vscanf_core.constprop.0+0x360>
- num_buf[i++] = (char)c;
- e06: 02f10023 sb a5,32(sp)
- if (ctx->ungotten >= 0)
- e0a: 018da783 lw a5,24(s11)
- e0e: 2207da63 bgez a5,1042 <_vscanf_core.constprop.0+0x6ca>
- e12: 856e mv a0,s11
- e14: aabff0ef jal 8be <_in_char.part.0>
- while (c != -1 && i < 63)
- e18: 567d li a2,-1
- e1a: 87aa mv a5,a0
- num_buf[i++] = (char)c;
- e1c: 4d05 li s10,1
- e1e: fd55069b addiw a3,a0,-43
- while (c != -1 && i < 63)
- e22: 3ac50163 beq a0,a2,11c4 <_vscanf_core.constprop.0+0x84c>
- e26: fce6 sd s9,120(sp)
- e28: bd55 j cdc <_vscanf_core.constprop.0+0x364>
- int count = (width > 0) ? width : 1;
- e2a: 4c05 li s8,1
- e2c: b73d j d5a <_vscanf_core.constprop.0+0x3e2>
- e2e: 640e ld s0,192(sp)
- e30: 74ea ld s1,184(sp)
- e32: 794a ld s2,176(sp)
- e34: 79aa ld s3,168(sp)
- e36: 7a0a ld s4,160(sp)
- e38: 6aea ld s5,152(sp)
- e3a: 6baa ld s7,136(sp)
- e3c: 6c0a ld s8,128(sp)
- e3e: 7ce6 ld s9,120(sp)
- e40: 7d46 ld s10,112(sp)
- e42: 7da6 ld s11,104(sp)
- e44: b64d j 9e6 <_vscanf_core.constprop.0+0x6e>
- e46: 640e ld s0,192(sp)
- e48: 74ea ld s1,184(sp)
- e4a: 794a ld s2,176(sp)
- e4c: 79aa ld s3,168(sp)
- e4e: 7a0a ld s4,160(sp)
- e50: 6aea ld s5,152(sp)
- e52: 6baa ld s7,136(sp)
- e54: 6c0a ld s8,128(sp)
- e56: 7d46 ld s10,112(sp)
- e58: 7da6 ld s11,104(sp)
- e5a: b671 j 9e6 <_vscanf_core.constprop.0+0x6e>
- ctx->ungotten = -1;
- e5c: 018dac23 sw s8,24(s11)
- while (c != -1 && !isspace(c))
- e60: b9e5 j b58 <_vscanf_core.constprop.0+0x1e0>
- ctx->ungotten = -1;
- e62: 57fd li a5,-1
- e64: 00fdac23 sw a5,24(s11)
- while (c != -1 && i < 63)
- e68: bbd9 j c3e <_vscanf_core.constprop.0+0x2c6>
- int hex = (base == 16 || base == 0) && ((c >= 'a' && c <= 'f') || (c >= 'A' && c <= 'F'));
- e6a: f9f3069b addiw a3,t1,-97
- e6e: 4795 li a5,5
- e70: 06d7f263 bgeu a5,a3,ed4 <_vscanf_core.constprop.0+0x55c>
- e74: fbf3031b addiw t1,t1,-65
- e78: 4795 li a5,5
- e7a: 0467fd63 bgeu a5,t1,ed4 <_vscanf_core.constprop.0+0x55c>
- int x = (c == 'x' || c == 'X');
- e7e: 07800693 li a3,120
- e82: 18d50763 beq a0,a3,1010 <_vscanf_core.constprop.0+0x698>
- e86: fa850693 addi a3,a0,-88
- e8a: 0016b693 seqz a3,a3
- if (base == 0 && i == 1 && num_buf[0] == '0' && x)
- e8e: 4301 li t1,0
- e90: 32061663 bnez a2,11bc <_vscanf_core.constprop.0+0x844>
- e94: 4785 li a5,1
- e96: 4601 li a2,0
- e98: d6fd1ce3 bne s10,a5,c10 <_vscanf_core.constprop.0+0x298>
- e9c: 02014e03 lbu t3,32(sp)
- ea0: 03000793 li a5,48
- ea4: d6fe16e3 bne t3,a5,c10 <_vscanf_core.constprop.0+0x298>
- ea8: d60684e3 beqz a3,c10 <_vscanf_core.constprop.0+0x298>
- base = 16;
- eac: 4641 li a2,16
- if (width > 0 && i >= width)
- eae: d7a919e3 bne s2,s10,c20 <_vscanf_core.constprop.0+0x2a8>
- eb2: bb59 j c48 <_vscanf_core.constprop.0+0x2d0>
- int hex = (base == 16 || base == 0) && ((c >= 'a' && c <= 'f') || (c >= 'A' && c <= 'F'));
- eb4: f9f3069b addiw a3,t1,-97
- eb8: 4795 li a5,5
- eba: 02d7f263 bgeu a5,a3,ede <_vscanf_core.constprop.0+0x566>
- ebe: fbf3031b addiw t1,t1,-65
- ec2: 0467f063 bgeu a5,t1,f02 <_vscanf_core.constprop.0+0x58a>
- int x = (c == 'x' || c == 'X');
- ec6: 07800693 li a3,120
- eca: fad51ee3 bne a0,a3,e86 <_vscanf_core.constprop.0+0x50e>
- ece: 4301 li t1,0
- ed0: 4685 li a3,1
- ed2: b7c9 j e94 <_vscanf_core.constprop.0+0x51c>
- int hex = (base == 16 || base == 0) && ((c >= 'a' && c <= 'f') || (c >= 'A' && c <= 'F'));
- ed4: 4305 li t1,1
- int x = (c == 'x' || c == 'X');
- ed6: 4681 li a3,0
- if (width > 0 && i >= width)
- ed8: d3204ee3 bgtz s2,c14 <_vscanf_core.constprop.0+0x29c>
- edc: bb35 j c18 <_vscanf_core.constprop.0+0x2a0>
- int x = (c == 'x' || c == 'X');
- ede: 4681 li a3,0
- int hex = (base == 16 || base == 0) && ((c >= 'a' && c <= 'f') || (c >= 'A' && c <= 'F'));
- ee0: 4305 li t1,1
- if (width > 0 && i >= width)
- ee2: d32049e3 bgtz s2,c14 <_vscanf_core.constprop.0+0x29c>
- ee6: bb0d j c18 <_vscanf_core.constprop.0+0x2a0>
- ee8: 4301 li t1,0
- int x = (c == 'x' || c == 'X');
- eea: 4685 li a3,1
- if (width > 0 && i >= width)
- eec: d32044e3 bgtz s2,c14 <_vscanf_core.constprop.0+0x29c>
- ef0: bb05 j c20 <_vscanf_core.constprop.0+0x2a8>
- if (!suppress)
- ef2: c8099be3 bnez s3,b88 <_vscanf_core.constprop.0+0x210>
- buf[i] = '\0';
- ef6: 67e2 ld a5,24(sp)
- ef8: 00078023 sb zero,0(a5)
- ctx->ungotten = c;
- efc: 00adac23 sw a0,24(s11)
- if (i > 0 && !suppress)
- f00: b171 j b8c <_vscanf_core.constprop.0+0x214>
- int x = (c == 'x' || c == 'X');
- f02: 4681 li a3,0
- int hex = (base == 16 || base == 0) && ((c >= 'a' && c <= 'f') || (c >= 'A' && c <= 'F'));
- f04: 4305 li t1,1
- f06: b779 j e94 <_vscanf_core.constprop.0+0x51c>
- num_buf[i] = '\0';
- f08: 040d0713 addi a4,s10,64
- f0c: 1014 addi a3,sp,32
- f0e: 96ba add a3,a3,a4
- f10: fc068023 sb zero,-64(a3)
- ctx->ungotten = c;
- f14: 00fdac23 sw a5,24(s11)
- if (i == 0)
- f18: f00d0be3 beqz s10,e2e <_vscanf_core.constprop.0+0x4b6>
- f1c: 7ce6 ld s9,120(sp)
- if (!suppress)
- f1e: d40992e3 bnez s3,c62 <_vscanf_core.constprop.0+0x2ea>
- if (*str == '-')
- f22: 02014603 lbu a2,32(sp)
- f26: 02d00793 li a5,45
- f2a: 1af60963 beq a2,a5,10dc <_vscanf_core.constprop.0+0x764>
- else if (*str == '+')
- f2e: 02b00793 li a5,43
- f32: 20f60a63 beq a2,a5,1146 <_vscanf_core.constprop.0+0x7ce>
- f36: 00005797 auipc a5,0x5
- f3a: 9327b587 fld fa1,-1742(a5) # 5868 <STDIN_FD+0x10>
- f3e: 101c addi a5,sp,32
- while (*str >= '0' && *str <= '9')
- f40: fd06069b addiw a3,a2,-48
- f44: 0ff6f513 zext.b a0,a3
- f48: 45a5 li a1,9
- f4a: f20007d3 fmv.d.x fa5,zero
- f4e: 02a5e463 bltu a1,a0,f76 <_vscanf_core.constprop.0+0x5fe>
- f52: 00005717 auipc a4,0x5
- f56: 91e73707 fld fa4,-1762(a4) # 5870 <STDIN_FD+0x18>
- f5a: 4525 li a0,9
- f5c: 0017c603 lbu a2,1(a5)
- val = val * 10.0 + (*str - '0');
- f60: d20686d3 fcvt.d.w fa3,a3
- str++;
- f64: 0785 addi a5,a5,1
- while (*str >= '0' && *str <= '9')
- f66: fd06069b addiw a3,a2,-48
- f6a: 0ff6f593 zext.b a1,a3
- val = val * 10.0 + (*str - '0');
- f6e: 6ae7f7c3 fmadd.d fa5,fa5,fa4,fa3
- while (*str >= '0' && *str <= '9')
- f72: feb575e3 bgeu a0,a1,f5c <_vscanf_core.constprop.0+0x5e4>
- if (*str == '.')
- f76: 02e00693 li a3,46
- f7a: 16d60a63 beq a2,a3,10ee <_vscanf_core.constprop.0+0x776>
- if (*str == 'e' || *str == 'E')
- f7e: 0007c683 lbu a3,0(a5)
- f82: 0df6f693 andi a3,a3,223
- f86: 04500613 li a2,69
- f8a: 0cc68463 beq a3,a2,1052 <_vscanf_core.constprop.0+0x6da>
- *va_arg(ap, double *) = val;
- f8e: 6722 ld a4,8(sp)
- if (len_mod == 1)
- f90: 4685 li a3,1
- return sign * val;
- f92: 12b7f7d3 fmul.d fa5,fa5,fa1
- *va_arg(ap, double *) = val;
- f96: 631c ld a5,0(a4)
- *va_arg(ap, int64 *) = val;
- f98: 0721 addi a4,a4,8
- f9a: e43a sd a4,8(sp)
- if (len_mod == 1)
- f9c: 6762 ld a4,24(sp)
- f9e: 18d70b63 beq a4,a3,1134 <_vscanf_core.constprop.0+0x7bc>
- *va_arg(ap, float *) = (float)val;
- fa2: 4017f7d3 fcvt.s.d fa5,fa5
- assigned++;
- fa6: 2b05 addiw s6,s6,1
- *va_arg(ap, float *) = (float)val;
- fa8: 00f7a027 fsw fa5,0(a5)
- fac: b95d j c62 <_vscanf_core.constprop.0+0x2ea>
- num_buf[i++] = (char)c;
- fae: 02a10023 sb a0,32(sp)
- if (ctx->ungotten >= 0)
- fb2: 018da503 lw a0,24(s11)
- fb6: 06055463 bgez a0,101e <_vscanf_core.constprop.0+0x6a6>
- fba: 856e mv a0,s11
- fbc: 903ff0ef jal 8be <_in_char.part.0>
- num_buf[i++] = (char)c;
- fc0: 4d05 li s10,1
- fc2: b101 j bc2 <_vscanf_core.constprop.0+0x24a>
- int64 val = strtoll(num_buf, NULL, base);
- fc4: 4581 li a1,0
- fc6: 1008 addi a0,sp,32
- fc8: 696030ef jal 465e <strtoll>
- *va_arg(ap, int64 *) = val;
- fcc: 67a2 ld a5,8(sp)
- if (len_mod == 2)
- fce: 6762 ld a4,24(sp)
- fd0: 4689 li a3,2
- *va_arg(ap, int64 *) = val;
- fd2: 07a1 addi a5,a5,8
- if (len_mod == 2)
- fd4: 16d70363 beq a4,a3,113a <_vscanf_core.constprop.0+0x7c2>
- *va_arg(ap, int64 *) = val;
- fd8: 6722 ld a4,8(sp)
- else if (len_mod == 1)
- fda: 4605 li a2,1
- *va_arg(ap, int64 *) = val;
- fdc: 6314 ld a3,0(a4)
- else if (len_mod == 1)
- fde: 6762 ld a4,24(sp)
- fe0: 16c70163 beq a4,a2,1142 <_vscanf_core.constprop.0+0x7ca>
- *va_arg(ap, int *) = (int)val;
- fe4: c288 sw a0,0(a3)
- assigned++;
- fe6: 2b05 addiw s6,s6,1
- fe8: e43e sd a5,8(sp)
- fea: b9a5 j c62 <_vscanf_core.constprop.0+0x2ea>
- num_buf[i] = '\0';
- fec: 040d0793 addi a5,s10,64
- ff0: 1018 addi a4,sp,32
- ff2: 00e785b3 add a1,a5,a4
- ff6: fc058023 sb zero,-64(a1)
- if (i == 0)
- ffa: 7ce6 ld s9,120(sp)
- ffc: b70d j f1e <_vscanf_core.constprop.0+0x5a6>
- num_buf[i] = '\0';
- ffe: 040d0793 addi a5,s10,64
- 1002: 1018 addi a4,sp,32
- 1004: 00e78833 add a6,a5,a4
- 1008: fc080023 sb zero,-64(a6)
- if (i == 0)
- 100c: 7ce6 ld s9,120(sp)
- 100e: b981 j c5e <_vscanf_core.constprop.0+0x2e6>
- int x = (c == 'x' || c == 'X');
- 1010: 4301 li t1,0
- 1012: 4685 li a3,1
- if (width > 0 && i >= width)
- 1014: c12040e3 bgtz s2,c14 <_vscanf_core.constprop.0+0x29c>
- 1018: b101 j c18 <_vscanf_core.constprop.0+0x2a0>
- int assigned = 0;
- 101a: 4b01 li s6,0
- 101c: b2e9 j 9e6 <_vscanf_core.constprop.0+0x6e>
- ctx->ungotten = -1;
- 101e: 56fd li a3,-1
- 1020: fce6 sd s9,120(sp)
- 1022: 00ddac23 sw a3,24(s11)
- int base = (spec == 'x') ? 16 : (spec == 'i' ? 0 : 10);
- 1026: 07800693 li a3,120
- 102a: 4641 li a2,16
- num_buf[i++] = (char)c;
- 102c: 4d05 li s10,1
- int base = (spec == 'x') ? 16 : (spec == 'i' ? 0 : 10);
- 102e: badc09e3 beq s8,a3,be0 <_vscanf_core.constprop.0+0x268>
- 1032: 06900693 li a3,105
- 1036: 4629 li a2,10
- num_buf[i++] = (char)c;
- 1038: 4d05 li s10,1
- int base = (spec == 'x') ? 16 : (spec == 'i' ? 0 : 10);
- 103a: badc13e3 bne s8,a3,be0 <_vscanf_core.constprop.0+0x268>
- 103e: 4601 li a2,0
- 1040: b645 j be0 <_vscanf_core.constprop.0+0x268>
- ctx->ungotten = -1;
- 1042: 56fd li a3,-1
- 1044: fce6 sd s9,120(sp)
- 1046: 00ddac23 sw a3,24(s11)
- num_buf[i++] = (char)c;
- 104a: 4d05 li s10,1
- 104c: fd57869b addiw a3,a5,-43
- 1050: b171 j cdc <_vscanf_core.constprop.0+0x364>
- if (*str == '-')
- 1052: 0017c583 lbu a1,1(a5)
- 1056: 02d00693 li a3,45
- 105a: 0ed58f63 beq a1,a3,1158 <_vscanf_core.constprop.0+0x7e0>
- else if (*str == '+')
- 105e: 02b00693 li a3,43
- 1062: 10d58e63 beq a1,a3,117e <_vscanf_core.constprop.0+0x806>
- while (*str >= '0' && *str <= '9')
- 1066: fd05861b addiw a2,a1,-48
- 106a: 0ff67513 zext.b a0,a2
- 106e: 45a5 li a1,9
- str++;
- 1070: 00178693 addi a3,a5,1
- int esign = 1;
- 1074: 4805 li a6,1
- while (*str >= '0' && *str <= '9')
- 1076: 04a5ec63 bltu a1,a0,10ce <_vscanf_core.constprop.0+0x756>
- 107a: 4525 li a0,9
- 107c: 0016c583 lbu a1,1(a3)
- eval = eval * 10 + (*str - '0');
- 1080: 0029979b slliw a5,s3,0x2
- 1084: 013787bb addw a5,a5,s3
- 1088: 0017979b slliw a5,a5,0x1
- 108c: 00f609bb addw s3,a2,a5
- while (*str >= '0' && *str <= '9')
- 1090: fd05861b addiw a2,a1,-48
- 1094: 0ff67593 zext.b a1,a2
- str++;
- 1098: 0685 addi a3,a3,1
- while (*str >= '0' && *str <= '9')
- 109a: feb571e3 bgeu a0,a1,107c <_vscanf_core.constprop.0+0x704>
- while (eval--)
- 109e: fff9879b addiw a5,s3,-1
- 10a2: 12098463 beqz s3,11ca <_vscanf_core.constprop.0+0x852>
- double p = 1.0;
- 10a6: 00004717 auipc a4,0x4
- 10aa: 7c273687 fld fa3,1986(a4) # 5868 <STDIN_FD+0x10>
- 10ae: 00004717 auipc a4,0x4
- 10b2: 7c273707 fld fa4,1986(a4) # 5870 <STDIN_FD+0x18>
- while (eval--)
- 10b6: 56fd li a3,-1
- 10b8: 37fd addiw a5,a5,-1
- p *= 10.0;
- 10ba: 12e6f6d3 fmul.d fa3,fa3,fa4
- while (eval--)
- 10be: fed79de3 bne a5,a3,10b8 <_vscanf_core.constprop.0+0x740>
- if (esign == 1)
- 10c2: 4785 li a5,1
- 10c4: 00f80963 beq a6,a5,10d6 <_vscanf_core.constprop.0+0x75e>
- val /= p;
- 10c8: 1ad7f7d3 fdiv.d fa5,fa5,fa3
- 10cc: b5c9 j f8e <_vscanf_core.constprop.0+0x616>
- double p = 1.0;
- 10ce: 00004797 auipc a5,0x4
- 10d2: 79a7b687 fld fa3,1946(a5) # 5868 <STDIN_FD+0x10>
- val *= p;
- 10d6: 12d7f7d3 fmul.d fa5,fa5,fa3
- 10da: bd55 j f8e <_vscanf_core.constprop.0+0x616>
- while (*str >= '0' && *str <= '9')
- 10dc: 00004797 auipc a5,0x4
- 10e0: 7847b587 fld fa1,1924(a5) # 5860 <STDIN_FD+0x8>
- 10e4: 02114603 lbu a2,33(sp)
- str++;
- 10e8: 02110793 addi a5,sp,33
- 10ec: bd91 j f40 <_vscanf_core.constprop.0+0x5c8>
- while (*str >= '0' && *str <= '9')
- 10ee: 0017c683 lbu a3,1(a5)
- 10f2: 45a5 li a1,9
- str++;
- 10f4: 0785 addi a5,a5,1
- while (*str >= '0' && *str <= '9')
- 10f6: fd06861b addiw a2,a3,-48
- 10fa: 0ff67513 zext.b a0,a2
- 10fe: e8a5e2e3 bltu a1,a0,f82 <_vscanf_core.constprop.0+0x60a>
- double div = 10.0;
- 1102: 00004717 auipc a4,0x4
- 1106: 76e73707 fld fa4,1902(a4) # 5870 <STDIN_FD+0x18>
- 110a: 22e70653 fmv.d fa2,fa4
- while (*str >= '0' && *str <= '9')
- 110e: 4525 li a0,9
- val += (*str - '0') / div;
- 1110: d20606d3 fcvt.d.w fa3,a2
- while (*str >= '0' && *str <= '9')
- 1114: 0017c683 lbu a3,1(a5)
- str++;
- 1118: 0785 addi a5,a5,1
- val += (*str - '0') / div;
- 111a: 1ac6f6d3 fdiv.d fa3,fa3,fa2
- while (*str >= '0' && *str <= '9')
- 111e: fd06861b addiw a2,a3,-48
- 1122: 0ff67593 zext.b a1,a2
- div *= 10.0;
- 1126: 12e67653 fmul.d fa2,fa2,fa4
- val += (*str - '0') / div;
- 112a: 02d7f7d3 fadd.d fa5,fa5,fa3
- while (*str >= '0' && *str <= '9')
- 112e: feb571e3 bgeu a0,a1,1110 <_vscanf_core.constprop.0+0x798>
- 1132: bd81 j f82 <_vscanf_core.constprop.0+0x60a>
- *va_arg(ap, double *) = val;
- 1134: a39c fsd fa5,0(a5)
- assigned++;
- 1136: 2b05 addiw s6,s6,1
- 1138: b62d j c62 <_vscanf_core.constprop.0+0x2ea>
- *va_arg(ap, int64 *) = val;
- 113a: 6722 ld a4,8(sp)
- 113c: 6314 ld a3,0(a4)
- 113e: e288 sd a0,0(a3)
- 1140: b55d j fe6 <_vscanf_core.constprop.0+0x66e>
- *va_arg(ap, long *) = (long)val;
- 1142: e288 sd a0,0(a3)
- 1144: b54d j fe6 <_vscanf_core.constprop.0+0x66e>
- while (*str >= '0' && *str <= '9')
- 1146: 00004797 auipc a5,0x4
- 114a: 7227b587 fld fa1,1826(a5) # 5868 <STDIN_FD+0x10>
- 114e: 02114603 lbu a2,33(sp)
- str++;
- 1152: 02110793 addi a5,sp,33
- 1156: b3ed j f40 <_vscanf_core.constprop.0+0x5c8>
- while (*str >= '0' && *str <= '9')
- 1158: 0027c583 lbu a1,2(a5)
- str++;
- 115c: 00278693 addi a3,a5,2
- while (*str >= '0' && *str <= '9')
- 1160: 4525 li a0,9
- 1162: fd05861b addiw a2,a1,-48
- 1166: 0ff67793 zext.b a5,a2
- esign = -1;
- 116a: 587d li a6,-1
- while (*str >= '0' && *str <= '9')
- 116c: f0f577e3 bgeu a0,a5,107a <_vscanf_core.constprop.0+0x702>
- double p = 1.0;
- 1170: 00004797 auipc a5,0x4
- 1174: 6f87b687 fld fa3,1784(a5) # 5868 <STDIN_FD+0x10>
- val /= p;
- 1178: 1ad7f7d3 fdiv.d fa5,fa5,fa3
- 117c: bd09 j f8e <_vscanf_core.constprop.0+0x616>
- while (*str >= '0' && *str <= '9')
- 117e: 0027c583 lbu a1,2(a5)
- str++;
- 1182: 00278693 addi a3,a5,2
- while (*str >= '0' && *str <= '9')
- 1186: 4525 li a0,9
- 1188: fd05861b addiw a2,a1,-48
- 118c: 0ff67793 zext.b a5,a2
- 1190: f2f56fe3 bltu a0,a5,10ce <_vscanf_core.constprop.0+0x756>
- int esign = 1;
- 1194: 4805 li a6,1
- 1196: b5d5 j 107a <_vscanf_core.constprop.0+0x702>
- while (*p)
- 1198: 001bc783 lbu a5,1(s7)
- 119c: bed5 j d90 <_vscanf_core.constprop.0+0x418>
- if (!suppress)
- 119e: 9e0997e3 bnez s3,b8c <_vscanf_core.constprop.0+0x214>
- buf[i] = '\0';
- 11a2: 67e2 ld a5,24(sp)
- 11a4: 00078023 sb zero,0(a5)
- 11a8: b2d5 j b8c <_vscanf_core.constprop.0+0x214>
- num_buf[i] = '\0';
- 11aa: 040d0793 addi a5,s10,64
- 11ae: 1018 addi a4,sp,32
- 11b0: 97ba add a5,a5,a4
- 11b2: fc078023 sb zero,-64(a5)
- if (i == 0)
- 11b6: aa0d14e3 bnez s10,c5e <_vscanf_core.constprop.0+0x2e6>
- 11ba: b171 j e46 <_vscanf_core.constprop.0+0x4ce>
- 11bc: 4641 li a2,16
- if (width > 0 && i >= width)
- 11be: a5204be3 bgtz s2,c14 <_vscanf_core.constprop.0+0x29c>
- 11c2: bc99 j c18 <_vscanf_core.constprop.0+0x2a0>
- num_buf[i] = '\0';
- 11c4: 020100a3 sb zero,33(sp)
- if (i == 0)
- 11c8: bb99 j f1e <_vscanf_core.constprop.0+0x5a6>
- double p = 1.0;
- 11ca: 00004797 auipc a5,0x4
- 11ce: 69e7b687 fld fa3,1694(a5) # 5868 <STDIN_FD+0x10>
- 11d2: bdc5 j 10c2 <_vscanf_core.constprop.0+0x74a>
- buf[i] = '\0';
- 11d4: 67e2 ld a5,24(sp)
- 11d6: 01a786b3 add a3,a5,s10
- 11da: 00068023 sb zero,0(a3)
- ctx->ungotten = c;
- 11de: 00adac23 sw a0,24(s11)
- while (*p)
- 11e2: 001bc783 lbu a5,1(s7)
- 11e6: b6f5 j dd2 <_vscanf_core.constprop.0+0x45a>
-
-00000000000011e8 <_out_char>:
-{
- 11e8: 7179 addi sp,sp,-48
- 11ea: ec26 sd s1,24(sp)
- if (ctx->stream)
- 11ec: 6d04 ld s1,24(a0)
-{
- 11ee: f022 sd s0,32(sp)
- 11f0: f406 sd ra,40(sp)
- 11f2: 842a mv s0,a0
- 11f4: 872e mv a4,a1
- if (ctx->stream)
- 11f6: c0a1 beqz s1,1236 <_out_char+0x4e>
- 11f8: e84a sd s2,16(sp)
- if (stream->buf_mode == 2)
- 11fa: 41c4a903 lw s2,1052(s1)
- 11fe: 4789 li a5,2
- 1200: 04f90d63 beq s2,a5,125a <_out_char+0x72>
- stream->buffer[stream->buf_write_pos++] = (char)c;
- 1204: 4104a783 lw a5,1040(s1)
- if (stream->buf_write_pos >= BUFSIZ)
- 1208: 3ff00693 li a3,1023
- stream->buffer[stream->buf_write_pos++] = (char)c;
- 120c: 0017861b addiw a2,a5,1
- 1210: 40c4a823 sw a2,1040(s1)
- 1214: 97a6 add a5,a5,s1
- 1216: 00b78823 sb a1,16(a5)
- if (stream->buf_write_pos >= BUFSIZ)
- 121a: 08c6c063 blt a3,a2,129a <_out_char+0xb2>
- else if (stream->buf_mode == 1 && c == '\n')
- 121e: 4785 li a5,1
- 1220: 04f90a63 beq s2,a5,1274 <_out_char+0x8c>
- ctx->written++;
- 1224: 681c ld a5,16(s0)
- 1226: 6942 ld s2,16(sp)
-}
- 1228: 70a2 ld ra,40(sp)
- ctx->written++;
- 122a: 0785 addi a5,a5,1
- 122c: e81c sd a5,16(s0)
-}
- 122e: 7402 ld s0,32(sp)
- 1230: 64e2 ld s1,24(sp)
- 1232: 6145 addi sp,sp,48
- 1234: 8082 ret
- if (ctx->limit > 0 && ctx->written < ctx->limit - 1)
- 1236: 6514 ld a3,8(a0)
- 1238: 691c ld a5,16(a0)
- 123a: ca89 beqz a3,124c <_out_char+0x64>
- 123c: 16fd addi a3,a3,-1
- 123e: 00d7f763 bgeu a5,a3,124c <_out_char+0x64>
- ctx->buf[ctx->written] = c;
- 1242: 6114 ld a3,0(a0)
- 1244: 97b6 add a5,a5,a3
- 1246: 00b78023 sb a1,0(a5)
- ctx->written++;
- 124a: 691c ld a5,16(a0)
- 124c: 0785 addi a5,a5,1
-}
- 124e: 70a2 ld ra,40(sp)
- ctx->written++;
- 1250: e81c sd a5,16(s0)
-}
- 1252: 7402 ld s0,32(sp)
- 1254: 64e2 ld s1,24(sp)
- 1256: 6145 addi sp,sp,48
- 1258: 8082 ret
- if (write(stream->fd, &ch, 1) != 1)
- 125a: 4088 lw a0,0(s1)
- 125c: 4605 li a2,1
- 125e: 00f10593 addi a1,sp,15
- char ch = (char)c;
- 1262: 00e107a3 sb a4,15(sp)
- if (write(stream->fd, &ch, 1) != 1)
- 1266: e8bfe0ef jal f0 <write>
- 126a: 4785 li a5,1
- 126c: faf50ce3 beq a0,a5,1224 <_out_char+0x3c>
- stream->error = 1;
- 1270: c49c sw a5,8(s1)
- return EOF;
- 1272: bf4d j 1224 <_out_char+0x3c>
- else if (stream->buf_mode == 1 && c == '\n')
- 1274: 47a9 li a5,10
- 1276: faf597e3 bne a1,a5,1224 <_out_char+0x3c>
- if (stream->buf_write_pos > 0)
- 127a: fac055e3 blez a2,1224 <_out_char+0x3c>
- int64 ret = write(stream->fd, stream->buffer, stream->buf_write_pos);
- 127e: 4088 lw a0,0(s1)
- 1280: 01048593 addi a1,s1,16
- 1284: e6dfe0ef jal f0 <write>
- if (ret < stream->buf_write_pos)
- 1288: 4104a783 lw a5,1040(s1)
- 128c: 02f55063 bge a0,a5,12ac <_out_char+0xc4>
- stream->error = 1;
- 1290: 0124a423 sw s2,8(s1)
- stream->buf_write_pos = 0;
- 1294: 4004a823 sw zero,1040(s1)
- return EOF;
- 1298: b771 j 1224 <_out_char+0x3c>
- int64 ret = write(stream->fd, stream->buffer, stream->buf_write_pos);
- 129a: 4088 lw a0,0(s1)
- 129c: 01048593 addi a1,s1,16
- 12a0: e51fe0ef jal f0 <write>
- if (ret < stream->buf_write_pos)
- 12a4: 4104a783 lw a5,1040(s1)
- 12a8: 00f54563 blt a0,a5,12b2 <_out_char+0xca>
- stream->buf_write_pos = 0;
- 12ac: 4004a823 sw zero,1040(s1)
- 12b0: bf95 j 1224 <_out_char+0x3c>
- stream->error = 1;
- 12b2: 4785 li a5,1
- 12b4: c49c sw a5,8(s1)
- stream->buf_write_pos = 0;
- 12b6: 4004a823 sw zero,1040(s1)
- return EOF;
- 12ba: b7ad j 1224 <_out_char+0x3c>
-
-00000000000012bc <stbsp_set_separators>:
- "75767778798081828384858687888990919293949596979899"
-};
-
-STBSP__PUBLICDEF void STB_SPRINTF_DECORATE(set_separators)(char pcomma, char pperiod)
-{
- stbsp__period = pperiod;
- 12bc: 00005797 auipc a5,0x5
- 12c0: 6d478793 addi a5,a5,1748 # 6990 <stbsp__digitpair>
- 12c4: 0cb78623 sb a1,204(a5)
- stbsp__comma = pcomma;
- 12c8: 0ca786a3 sb a0,205(a5)
-}
- 12cc: 8082 ret
-
-00000000000012ce <stbsp_vsprintfcb>:
-
- return (stbsp__uint32)(sn - s);
-}
-
-STBSP__PUBLICDEF int STB_SPRINTF_DECORATE(vsprintfcb)(STBSP_SPRINTFCB *callback, void *user, char *buf, char const *fmt, va_list va)
-{
- 12ce: d1010113 addi sp,sp,-752
- // Check if the next 4 bytes contain %(0x25) or end of string.
- // Using the 'hasless' trick:
- // https://graphics.stanford.edu/~seander/bithacks.html#HasLessInWord
- stbsp__uint32 v, c;
- v = *(stbsp__uint32 *)f;
- c = (~v) & 0x80808080;
- 12d2: 808087b7 lui a5,0x80808
- if (((v ^ 0x25252525) - 0x01010101) & c)
- 12d6: 252523b7 lui t2,0x25252
- 12da: 52538393 addi t2,t2,1317 # 25252525 <_ZSt4cerr+0x2524ac9d>
-{
- 12de: 29913c23 sd s9,664(sp)
- 12e2: 29b13423 sd s11,648(sp)
- int tlen = 0;
- 12e6: 4c81 li s9,0
- if (((v ^ 0x25252525) - 0x01010101) & c)
- 12e8: feff0db7 lui s11,0xfeff0
- c = (~v) & 0x80808080;
- 12ec: 08078793 addi a5,a5,128 # ffffffff80808080 <_ZSt4cerr+0xffffffff808007f8>
-{
- 12f0: 2e813023 sd s0,736(sp)
- 12f4: 2c913c23 sd s1,728(sp)
- 12f8: 2d213823 sd s2,720(sp)
- 12fc: 2d313423 sd s3,712(sp)
- 1300: 2b713423 sd s7,680(sp)
- 1304: 2b813023 sd s8,672(sp)
- 1308: 29a13823 sd s10,656(sp)
- 130c: 2e113423 sd ra,744(sp)
- 1310: 8d66 mv s10,s9
- 1312: 8432 mv s0,a2
- 1314: 8c9e mv s9,t2
- 1316: 89aa mv s3,a0
- 1318: e42e sd a1,8(sp)
- 131a: 84b6 mv s1,a3
- 131c: 8bba mv s7,a4
- 131e: fc02 sd zero,56(sp)
- for (;;) {
- 1320: 8932 mv s2,a2
- if (((v ^ 0x25252525) - 0x01010101) & c)
- 1322: effd8d9b addiw s11,s11,-257 # fffffffffefefeff <_ZSt4cerr+0xfffffffffefe8677>
- goto schk1;
- if ((v - 0x01010101) & c)
- goto schk2;
- if (callback)
- if ((STB_SPRINTF_MIN - (int)(bf - buf)) < 4)
- 1326: 20000c13 li s8,512
- 132a: 83be mv t2,a5
- while (((stbsp__uintptr)f) & 3) {
- 132c: 0034f793 andi a5,s1,3
- 1330: c7a9 beqz a5,137a <stbsp_vsprintfcb+0xac>
- if (f[0] == '%')
- 1332: 0004c783 lbu a5,0(s1)
- 1336: 02500713 li a4,37
- 133a: 0ee78263 beq a5,a4,141e <stbsp_vsprintfcb+0x150>
- if (f[0] == 0)
- 133e: cbd9 beqz a5,13d4 <stbsp_vsprintfcb+0x106>
- stbsp__chk_cb_buf(1);
- 1340: 02098663 beqz s3,136c <stbsp_vsprintfcb+0x9e>
- 1344: 4124063b subw a2,s0,s2
- 1348: 1fe00713 li a4,510
- 134c: 02c75063 bge a4,a2,136c <stbsp_vsprintfcb+0x9e>
- 1350: 65a2 ld a1,8(sp)
- 1352: 854a mv a0,s2
- 1354: e81e sd t2,16(sp)
- 1356: 00cd0d3b addw s10,s10,a2
- 135a: 9982 jalr s3
- 135c: 892a mv s2,a0
- 135e: e119 bnez a0,1364 <stbsp_vsprintfcb+0x96>
- 1360: 0200106f j 2380 <stbsp_vsprintfcb+0x10b2>
- *bf++ = f[0];
- 1364: 0004c783 lbu a5,0(s1)
- stbsp__chk_cb_buf(1);
- 1368: 63c2 ld t2,16(sp)
- 136a: 842a mv s0,a0
- ++f;
- 136c: 0485 addi s1,s1,1
- *bf++ = f[0];
- 136e: 00f40023 sb a5,0(s0)
- while (((stbsp__uintptr)f) & 3) {
- 1372: 0034f793 andi a5,s1,3
- *bf++ = f[0];
- 1376: 0405 addi s0,s0,1
- while (((stbsp__uintptr)f) & 3) {
- 1378: ffcd bnez a5,1332 <stbsp_vsprintfcb+0x64>
- v = *(stbsp__uint32 *)f;
- 137a: 4094 lw a3,0(s1)
- c = (~v) & 0x80808080;
- 137c: fff6c793 not a5,a3
- if (((v ^ 0x25252525) - 0x01010101) & c)
- 1380: 0196c733 xor a4,a3,s9
- c = (~v) & 0x80808080;
- 1384: 0077f7b3 and a5,a5,t2
- if (((v ^ 0x25252525) - 0x01010101) & c)
- 1388: 01b7073b addw a4,a4,s11
- 138c: 8f7d and a4,a4,a5
- 138e: 2701 sext.w a4,a4
- 1390: f34d bnez a4,1332 <stbsp_vsprintfcb+0x64>
- if ((STB_SPRINTF_MIN - (int)(bf - buf)) < 4)
- 1392: 460d li a2,3
- 1394: a805 j 13c4 <stbsp_vsprintfcb+0xf6>
- if (callback)
- 1396: 00098863 beqz s3,13a6 <stbsp_vsprintfcb+0xd8>
- if ((STB_SPRINTF_MIN - (int)(bf - buf)) < 4)
- 139a: 412407b3 sub a5,s0,s2
- 139e: 40fc07bb subw a5,s8,a5
- 13a2: f8f658e3 bge a2,a5,1332 <stbsp_vsprintfcb+0x64>
- bf[2] = f[2];
- bf[3] = f[3];
- } else
- #endif
- {
- *(stbsp__uint32 *)bf = v;
- 13a6: c014 sw a3,0(s0)
- v = *(stbsp__uint32 *)f;
- 13a8: 40d4 lw a3,4(s1)
- }
- bf += 4;
- 13aa: 0411 addi s0,s0,4
- f += 4;
- 13ac: 0491 addi s1,s1,4
- c = (~v) & 0x80808080;
- 13ae: fff6c793 not a5,a3
- if (((v ^ 0x25252525) - 0x01010101) & c)
- 13b2: 0196c733 xor a4,a3,s9
- c = (~v) & 0x80808080;
- 13b6: 0077f7b3 and a5,a5,t2
- if (((v ^ 0x25252525) - 0x01010101) & c)
- 13ba: 01b7073b addw a4,a4,s11
- 13be: 8f7d and a4,a4,a5
- 13c0: 2701 sext.w a4,a4
- 13c2: fb25 bnez a4,1332 <stbsp_vsprintfcb+0x64>
- if ((v - 0x01010101) & c)
- 13c4: 01b6873b addw a4,a3,s11
- 13c8: 8ff9 and a5,a5,a4
- 13ca: 2781 sext.w a5,a5
- 13cc: d7e9 beqz a5,1396 <stbsp_vsprintfcb+0xc8>
- if (f[0] == 0)
- 13ce: 0004c783 lbu a5,0(s1)
- 13d2: f7bd bnez a5,1340 <stbsp_vsprintfcb+0x72>
-endfmt:
-
- if (!callback)
- *bf = 0;
- else
- stbsp__flush_cb();
- 13d4: 8cea mv s9,s10
- 13d6: 412404bb subw s1,s0,s2
- if (!callback)
- 13da: 70098563 beqz s3,1ae4 <stbsp_vsprintfcb+0x816>
- stbsp__flush_cb();
- 13de: 00905663 blez s1,13ea <stbsp_vsprintfcb+0x11c>
- 13e2: 65a2 ld a1,8(sp)
- 13e4: 8626 mv a2,s1
- 13e6: 854a mv a0,s2
- 13e8: 9982 jalr s3
- 13ea: 009c8cbb addw s9,s9,s1
-
-done:
- return tlen + (int)(bf - buf);
-}
- 13ee: 2e813083 ld ra,744(sp)
- 13f2: 2e013403 ld s0,736(sp)
- 13f6: 2d813483 ld s1,728(sp)
- 13fa: 2d013903 ld s2,720(sp)
- 13fe: 2c813983 ld s3,712(sp)
- 1402: 2a813b83 ld s7,680(sp)
- 1406: 2a013c03 ld s8,672(sp)
- 140a: 29013d03 ld s10,656(sp)
- 140e: 28813d83 ld s11,648(sp)
- 1412: 8566 mv a0,s9
- 1414: 29813c83 ld s9,664(sp)
- 1418: 2f010113 addi sp,sp,752
- 141c: 8082 ret
- 141e: 2d413023 sd s4,704(sp)
- 1422: 2b513c23 sd s5,696(sp)
- 1426: 2b613823 sd s6,688(sp)
- tz = 0;
- 142a: 00248693 addi a3,s1,2
- fl = 0;
- 142e: 4e01 li t3,0
- switch (f[0]) {
- 1430: 03f00593 li a1,63
- 1434: 00004617 auipc a2,0x4
- 1438: d5460613 addi a2,a2,-684 # 5188 <_GLOBAL__sub_I__ZSt3cin+0x198>
- 143c: fff6c783 lbu a5,-1(a3)
- 1440: fff68493 addi s1,a3,-1
- 1444: fe07871b addiw a4,a5,-32
- 1448: 0ff77713 zext.b a4,a4
- 144c: 00e5ec63 bltu a1,a4,1464 <stbsp_vsprintfcb+0x196>
- 1450: 070a slli a4,a4,0x2
- 1452: 9732 add a4,a4,a2
- 1454: 4318 lw a4,0(a4)
- 1456: 9732 add a4,a4,a2
- 1458: 8702 jr a4
- if (f[0] == '*') {
- 145a: 0014c783 lbu a5,1(s1)
- fl |= STBSP__LEADINGZERO;
- 145e: 010e6e13 ori t3,t3,16
- ++f;
- 1462: 0485 addi s1,s1,1
- if (f[0] == '*') {
- 1464: 02a00713 li a4,42
- 1468: 0ce79163 bne a5,a4,152a <stbsp_vsprintfcb+0x25c>
- fw = va_arg(va, stbsp__uint32);
- 146c: 000bab03 lw s6,0(s7)
- while ((f[0] >= '0') && (f[0] <= '9')) {
- 1470: 0014c783 lbu a5,1(s1)
- fw = va_arg(va, stbsp__uint32);
- 1474: 0ba1 addi s7,s7,8
- ++f;
- 1476: 0485 addi s1,s1,1
- if (f[0] == '.') {
- 1478: 02e00713 li a4,46
- pr = -1;
- 147c: 58fd li a7,-1
- if (f[0] == '.') {
- 147e: 0ee78663 beq a5,a4,156a <stbsp_vsprintfcb+0x29c>
- switch (f[0]) {
- 1482: 04900713 li a4,73
- 1486: 10e78263 beq a5,a4,158a <stbsp_vsprintfcb+0x2bc>
- 148a: f987871b addiw a4,a5,-104
- 148e: 0ff77713 zext.b a4,a4
- 1492: 46c9 li a3,18
- 1494: 02e6e063 bltu a3,a4,14b4 <stbsp_vsprintfcb+0x1e6>
- 1498: 00004697 auipc a3,0x4
- 149c: df068693 addi a3,a3,-528 # 5288 <_GLOBAL__sub_I__ZSt3cin+0x298>
- 14a0: 070a slli a4,a4,0x2
- 14a2: 9736 add a4,a4,a3
- 14a4: 4318 lw a4,0(a4)
- 14a6: 9736 add a4,a4,a3
- 14a8: 8702 jr a4
- if (f[0] == 'h')
- 14aa: 0014c783 lbu a5,1(s1)
- fl |= (sizeof(ptrdiff_t) == 8) ? STBSP__INTMAX : 0;
- 14ae: 020e6e13 ori t3,t3,32
- ++f;
- 14b2: 0485 addi s1,s1,1
- switch (f[0]) {
- 14b4: fbf7871b addiw a4,a5,-65
- 14b8: 0ff77713 zext.b a4,a4
- 14bc: 03700693 li a3,55
- 14c0: 0ee6ea63 bltu a3,a4,15b4 <stbsp_vsprintfcb+0x2e6>
- 14c4: 00004697 auipc a3,0x4
- 14c8: e1068693 addi a3,a3,-496 # 52d4 <_GLOBAL__sub_I__ZSt3cin+0x2e4>
- 14cc: 070a slli a4,a4,0x2
- 14ce: 9736 add a4,a4,a3
- 14d0: 4318 lw a4,0(a4)
- 14d2: 9736 add a4,a4,a3
- 14d4: 8702 jr a4
- fl |= STBSP__METRIC_NOSPACE;
- 14d6: 400e6e13 ori t3,t3,1024
- continue;
- 14da: 0685 addi a3,a3,1
- 14dc: b785 j 143c <stbsp_vsprintfcb+0x16e>
- fl |= STBSP__LEFTJUST;
- 14de: 001e6e13 ori t3,t3,1
- continue;
- 14e2: 0685 addi a3,a3,1
- 14e4: bfa1 j 143c <stbsp_vsprintfcb+0x16e>
- fl |= STBSP__LEADINGPLUS;
- 14e6: 002e6e13 ori t3,t3,2
- continue;
- 14ea: 0685 addi a3,a3,1
- 14ec: bf81 j 143c <stbsp_vsprintfcb+0x16e>
- fl |= STBSP__TRIPLET_COMMA;
- 14ee: 040e6e13 ori t3,t3,64
- continue;
- 14f2: 0685 addi a3,a3,1
- 14f4: b7a1 j 143c <stbsp_vsprintfcb+0x16e>
- if (fl & STBSP__METRIC_SUFFIX) {
- 14f6: 100e7793 andi a5,t3,256
- 14fa: 8772 mv a4,t3
- 14fc: 56078363 beqz a5,1a62 <stbsp_vsprintfcb+0x794>
- if (fl & STBSP__METRIC_1024) {
- 1500: 6785 lui a5,0x1
- 1502: 034e1513 slli a0,t3,0x34
- 1506: 80078793 addi a5,a5,-2048 # 800 <stbsp__real_to_str+0x616>
- 150a: 5c055863 bgez a0,1ada <stbsp_vsprintfcb+0x80c>
- fl |= STBSP__METRIC_JEDEC;
- 150e: 6785 lui a5,0x1
- 1510: 8f5d or a4,a4,a5
- 1512: 00070e1b sext.w t3,a4
- 1516: 0685 addi a3,a3,1
- 1518: b715 j 143c <stbsp_vsprintfcb+0x16e>
- fl |= STBSP__LEADING_0X;
- 151a: 008e6e13 ori t3,t3,8
- continue;
- 151e: 0685 addi a3,a3,1
- 1520: bf31 j 143c <stbsp_vsprintfcb+0x16e>
- fl |= STBSP__LEADINGSPACE;
- 1522: 004e6e13 ori t3,t3,4
- continue;
- 1526: 0685 addi a3,a3,1
- 1528: bf11 j 143c <stbsp_vsprintfcb+0x16e>
- while ((f[0] >= '0') && (f[0] <= '9')) {
- 152a: fd07871b addiw a4,a5,-48 # fd0 <_vscanf_core.constprop.0+0x658>
- 152e: 0ff77713 zext.b a4,a4
- 1532: 4625 li a2,9
- fw = 0;
- 1534: 4b01 li s6,0
- while ((f[0] >= '0') && (f[0] <= '9')) {
- 1536: 46a5 li a3,9
- 1538: f4e660e3 bltu a2,a4,1478 <stbsp_vsprintfcb+0x1aa>
- fw = fw * 10 + f[0] - '0';
- 153c: 002b171b slliw a4,s6,0x2
- 1540: 0167073b addw a4,a4,s6
- 1544: 0017171b slliw a4,a4,0x1
- f++;
- 1548: 0485 addi s1,s1,1
- fw = fw * 10 + f[0] - '0';
- 154a: 9f3d addw a4,a4,a5
- while ((f[0] >= '0') && (f[0] <= '9')) {
- 154c: 0004c783 lbu a5,0(s1)
- fw = fw * 10 + f[0] - '0';
- 1550: fd070b1b addiw s6,a4,-48
- while ((f[0] >= '0') && (f[0] <= '9')) {
- 1554: fd07871b addiw a4,a5,-48
- 1558: 0ff77713 zext.b a4,a4
- 155c: fee6f0e3 bgeu a3,a4,153c <stbsp_vsprintfcb+0x26e>
- if (f[0] == '.') {
- 1560: 02e00713 li a4,46
- pr = -1;
- 1564: 58fd li a7,-1
- if (f[0] == '.') {
- 1566: f0e79ee3 bne a5,a4,1482 <stbsp_vsprintfcb+0x1b4>
- if (f[0] == '*') {
- 156a: 0014c783 lbu a5,1(s1)
- 156e: 02a00713 li a4,42
- 1572: 52e79763 bne a5,a4,1aa0 <stbsp_vsprintfcb+0x7d2>
- while ((f[0] >= '0') && (f[0] <= '9')) {
- 1576: 0024c783 lbu a5,2(s1)
- switch (f[0]) {
- 157a: 04900713 li a4,73
- pr = va_arg(va, stbsp__uint32);
- 157e: 000ba883 lw a7,0(s7)
- ++f;
- 1582: 0489 addi s1,s1,2
- pr = va_arg(va, stbsp__uint32);
- 1584: 0ba1 addi s7,s7,8
- switch (f[0]) {
- 1586: f0e792e3 bne a5,a4,148a <stbsp_vsprintfcb+0x1bc>
- if ((f[1] == '6') && (f[2] == '4')) {
- 158a: 0014c783 lbu a5,1(s1)
- 158e: 03600713 li a4,54
- 1592: 00e79463 bne a5,a4,159a <stbsp_vsprintfcb+0x2cc>
- 1596: 1e60106f j 277c <stbsp_vsprintfcb+0x14ae>
- } else if ((f[1] == '3') && (f[2] == '2')) {
- 159a: 03300713 li a4,51
- 159e: 6ae796e3 bne a5,a4,244a <stbsp_vsprintfcb+0x117c>
- 15a2: 0024c683 lbu a3,2(s1)
- 15a6: 03200713 li a4,50
- 15aa: 00e69463 bne a3,a4,15b2 <stbsp_vsprintfcb+0x2e4>
- 15ae: 0ae0106f j 265c <stbsp_vsprintfcb+0x138e>
- ++f;
- 15b2: 0485 addi s1,s1,1
- *s = f[0];
- 15b4: 26f10fa3 sb a5,639(sp)
- l = 1;
- 15b8: 4785 li a5,1
- 15ba: d0be sw a5,96(sp)
- lead[0] = 0;
- 15bc: 06010423 sb zero,104(sp)
- tail[0] = 0;
- 15c0: 06010823 sb zero,112(sp)
- dp = 0;
- 15c4: d282 sw zero,100(sp)
- 15c6: e0de sd s7,64(sp)
- 15c8: 4701 li a4,0
- 15ca: 4301 li t1,0
- 15cc: 4f81 li t6,0
- 15ce: 4685 li a3,1
- 15d0: 4a01 li s4,0
- cs = 0;
- 15d2: 4281 li t0,0
- s = num + STBSP__NUMSZ - 1;
- 15d4: 27f10a93 addi s5,sp,639
- fw = fl = 0;
- 15d8: 4e01 li t3,0
- tz = 0;
- 15da: 4881 li a7,0
- if (fl & STBSP__LEADINGZERO) // if leading zeros, everything is in pr
- 15dc: 010e7793 andi a5,t3,16
- 15e0: 40078ee3 beqz a5,21fc <stbsp_vsprintfcb+0xf2e>
- pr = (fw > pr) ? fw : pr;
- 15e4: 87ba mv a5,a4
- 15e6: 00675363 bge a4,t1,15ec <stbsp_vsprintfcb+0x31e>
- 15ea: 879a mv a5,t1
- 15ec: 0007871b sext.w a4,a5
- fw = 0;
- 15f0: 4301 li t1,0
- if (fw + pr) {
- 15f2: 62070563 beqz a4,1c1c <stbsp_vsprintfcb+0x94e>
- sn = lead + 1;
- 15f6: 06910793 addi a5,sp,105
- 15fa: fcbe sd a5,120(sp)
- while (lead[0]) {
- 15fc: 0a0a0863 beqz s4,16ac <stbsp_vsprintfcb+0x3de>
- stbsp__cb_buf_clamp(i, lead[0]);
- 1600: f026 sd s1,32(sp)
- 1602: f436 sd a3,40(sp)
- 1604: 854a mv a0,s2
- 1606: 86d2 mv a3,s4
- 1608: 84ce mv s1,s3
- stbsp__chk_cb_buf(1);
- 160a: 1fe00b93 li s7,510
- stbsp__cb_buf_clamp(i, lead[0]);
- 160e: 89be mv s3,a5
- 1610: 20000b13 li s6,512
- 1614: 87a2 mv a5,s0
- 1616: e846 sd a7,16(sp)
- 1618: 846a mv s0,s10
- 161a: ec7e sd t6,24(sp)
- 161c: 8d6e mv s10,s11
- 161e: f872 sd t3,48(sp)
- 1620: 8de6 mv s11,s9
- 1622: 8a3a mv s4,a4
- 1624: e496 sd t0,72(sp)
- 1626: 891a mv s2,t1
- 1628: 8c9e mv s9,t2
- 162a: 0006871b sext.w a4,a3
- 162e: 2e0482e3 beqz s1,2112 <stbsp_vsprintfcb+0xe44>
- 1632: 40a7863b subw a2,a5,a0
- 1636: 40cb083b subw a6,s6,a2
- 163a: 85c2 mv a1,a6
- 163c: 01075363 bge a4,a6,1642 <stbsp_vsprintfcb+0x374>
- 1640: 85ba mv a1,a4
- lead[0] -= (char)i;
- 1642: 9e8d subw a3,a3,a1
- stbsp__cb_buf_clamp(i, lead[0]);
- 1644: 0005871b sext.w a4,a1
- lead[0] -= (char)i;
- 1648: 06d10423 sb a3,104(sp)
- while (i) {
- 164c: c70d beqz a4,1676 <stbsp_vsprintfcb+0x3a8>
- 164e: 7866 ld a6,120(sp)
- 1650: 02071593 slli a1,a4,0x20
- 1654: 9181 srli a1,a1,0x20
- 1656: 00b78633 add a2,a5,a1
- 165a: 8742 mv a4,a6
- *bf++ = *sn++;
- 165c: 00074683 lbu a3,0(a4)
- 1660: 0785 addi a5,a5,1
- while (i) {
- 1662: 0705 addi a4,a4,1
- *bf++ = *sn++;
- 1664: fed78fa3 sb a3,-1(a5)
- while (i) {
- 1668: fec79ae3 bne a5,a2,165c <stbsp_vsprintfcb+0x38e>
- 166c: 982e add a6,a6,a1
- 166e: fcc2 sd a6,120(sp)
- stbsp__chk_cb_buf(1);
- 1670: c899 beqz s1,1686 <stbsp_vsprintfcb+0x3b8>
- 1672: 40a7863b subw a2,a5,a0
- 1676: 00cbd863 bge s7,a2,1686 <stbsp_vsprintfcb+0x3b8>
- 167a: 65a2 ld a1,8(sp)
- 167c: 9c31 addw s0,s0,a2
- 167e: 9482 jalr s1
- 1680: 34050ee3 beqz a0,21dc <stbsp_vsprintfcb+0xf0e>
- 1684: 87aa mv a5,a0
- while (lead[0]) {
- 1686: 06814683 lbu a3,104(sp)
- 168a: f2c5 bnez a3,162a <stbsp_vsprintfcb+0x35c>
- 168c: 83e6 mv t2,s9
- 168e: 68c2 ld a7,16(sp)
- 1690: 8cee mv s9,s11
- 1692: 6fe2 ld t6,24(sp)
- 1694: 8dea mv s11,s10
- 1696: 76a2 ld a3,40(sp)
- 1698: 8d22 mv s10,s0
- 169a: 7e42 ld t3,48(sp)
- 169c: 843e mv s0,a5
- 169e: 62a6 ld t0,72(sp)
- 16a0: 87ce mv a5,s3
- 16a2: 89a6 mv s3,s1
- 16a4: 7482 ld s1,32(sp)
- 16a6: 834a mv t1,s2
- 16a8: 8752 mv a4,s4
- 16aa: 892a mv s2,a0
- cs = (fl & STBSP__TRIPLET_COMMA) ? ((stbsp__uint32)(c - ((pr + cs) % (c + 1)))) : 0;
- 16ac: 040e7b13 andi s6,t3,64
- c = cs >> 24;
- 16b0: 0182d61b srliw a2,t0,0x18
- 16b4: 0182db9b srliw s7,t0,0x18
- cs = (fl & STBSP__TRIPLET_COMMA) ? ((stbsp__uint32)(c - ((pr + cs) % (c + 1)))) : 0;
- 16b8: 4a01 li s4,0
- 16ba: 000b0e63 beqz s6,16d6 <stbsp_vsprintfcb+0x408>
- cs &= 0xffffff;
- 16be: 02829a13 slli s4,t0,0x28
- 16c2: 028a5a13 srli s4,s4,0x28
- cs = (fl & STBSP__TRIPLET_COMMA) ? ((stbsp__uint32)(c - ((pr + cs) % (c + 1)))) : 0;
- 16c6: 00ea0a3b addw s4,s4,a4
- 16ca: 0016059b addiw a1,a2,1
- 16ce: 02ba7a3b remuw s4,s4,a1
- 16d2: 41460a3b subw s4,a2,s4
- while (pr > 0) {
- 16d6: 0ce05763 blez a4,17a4 <stbsp_vsprintfcb+0x4d6>
- *(stbsp__uint32 *)bf = 0x30303030;
- 16da: 30303837 lui a6,0x30303
- 16de: 03080813 addi a6,a6,48 # 30303030 <_ZSt4cerr+0x302fb7a8>
- 16e2: f026 sd s1,32(sp)
- 16e4: 854a mv a0,s2
- 16e6: 84da mv s1,s6
- 16e8: 895e mv s2,s7
- 16ea: e4d6 sd s5,72(sp)
- 16ec: 8b4e mv s6,s3
- 16ee: 8aea mv s5,s10
- stbsp__chk_cb_buf(1);
- 16f0: 1fe00293 li t0,510
- 16f4: 8d6e mv s10,s11
- *bf++ = stbsp__comma;
- 16f6: 00005f17 auipc t5,0x5
- 16fa: 29af0f13 addi t5,t5,666 # 6990 <stbsp__digitpair>
- 16fe: 8de6 mv s11,s9
- *bf++ = '0';
- 1700: 03000e93 li t4,48
- 1704: e846 sd a7,16(sp)
- 1706: ec7e sd t6,24(sp)
- 1708: f436 sd a3,40(sp)
- 170a: f872 sd t3,48(sp)
- 170c: e89a sd t1,80(sp)
- 170e: 89ba mv s3,a4
- 1710: ecbe sd a5,88(sp)
- 1712: 8bc2 mv s7,a6
- 1714: 8c9e mv s9,t2
- stbsp__cb_buf_clamp(i, pr);
- 1716: 240b0ee3 beqz s6,2172 <stbsp_vsprintfcb+0xea4>
- 171a: 40a407b3 sub a5,s0,a0
- 171e: 40fc063b subw a2,s8,a5
- 1722: 87b2 mv a5,a2
- 1724: 00c9d363 bge s3,a2,172a <stbsp_vsprintfcb+0x45c>
- 1728: 87ce mv a5,s3
- 172a: 0007859b sext.w a1,a5
- pr -= i;
- 172e: 40f989bb subw s3,s3,a5
- if ((fl & STBSP__TRIPLET_COMMA) == 0) {
- 1732: 32048c63 beqz s1,1a6a <stbsp_vsprintfcb+0x79c>
- while (i) {
- 1736: 34058a63 beqz a1,1a8a <stbsp_vsprintfcb+0x7bc>
- 173a: 1582 slli a1,a1,0x20
- *bf++ = stbsp__comma;
- 173c: 0cdf4603 lbu a2,205(t5)
- 1740: 9181 srli a1,a1,0x20
- 1742: 95a2 add a1,a1,s0
- 1744: 0405 addi s0,s0,1
- if ((fl & STBSP__TRIPLET_COMMA) && (cs++ == c)) {
- 1746: c481 beqz s1,174e <stbsp_vsprintfcb+0x480>
- 1748: 1d4901e3 beq s2,s4,210a <stbsp_vsprintfcb+0xe3c>
- 174c: 2a05 addiw s4,s4,1
- *bf++ = '0';
- 174e: 03000793 li a5,48
- 1752: fef40fa3 sb a5,-1(s0)
- while (i) {
- 1756: fe8597e3 bne a1,s0,1744 <stbsp_vsprintfcb+0x476>
- stbsp__chk_cb_buf(1);
- 175a: 320b0b63 beqz s6,1a90 <stbsp_vsprintfcb+0x7c2>
- 175e: 40a5863b subw a2,a1,a0
- 1762: 32c2d763 bge t0,a2,1a90 <stbsp_vsprintfcb+0x7c2>
- 1766: 65a2 ld a1,8(sp)
- 1768: 01560abb addw s5,a2,s5
- 176c: 9b02 jalr s6
- 176e: 3a050ce3 beqz a0,2326 <stbsp_vsprintfcb+0x1058>
- 1772: 842a mv s0,a0
- 1774: 1fe00293 li t0,510
- 1778: 00005f17 auipc t5,0x5
- 177c: 218f0f13 addi t5,t5,536 # 6990 <stbsp__digitpair>
- 1780: 03000e93 li t4,48
- while (pr > 0) {
- 1784: f93049e3 bgtz s3,1716 <stbsp_vsprintfcb+0x448>
- while (lead[0]) {
- 1788: 83e6 mv t2,s9
- 178a: 68c2 ld a7,16(sp)
- 178c: 8cee mv s9,s11
- 178e: 6fe2 ld t6,24(sp)
- 1790: 8dea mv s11,s10
- 1792: 7482 ld s1,32(sp)
- 1794: 8d56 mv s10,s5
- 1796: 76a2 ld a3,40(sp)
- 1798: 7e42 ld t3,48(sp)
- 179a: 6346 ld t1,80(sp)
- 179c: 67e6 ld a5,88(sp)
- 179e: 6aa6 ld s5,72(sp)
- 17a0: 892a mv s2,a0
- 17a2: 89da mv s3,s6
- 17a4: 06814a03 lbu s4,104(sp)
- sn = lead + 1;
- 17a8: fcbe sd a5,120(sp)
- while (lead[0]) {
- 17aa: 0a0a0263 beqz s4,184e <stbsp_vsprintfcb+0x580>
- stbsp__cb_buf_clamp(i, lead[0]);
- 17ae: ec26 sd s1,24(sp)
- 17b0: f036 sd a3,32(sp)
- 17b2: 854a mv a0,s2
- 17b4: 86d2 mv a3,s4
- 17b6: 84ce mv s1,s3
- 17b8: 87a2 mv a5,s0
- stbsp__chk_cb_buf(1);
- 17ba: 1fe00b93 li s7,510
- stbsp__cb_buf_clamp(i, lead[0]);
- 17be: 846a mv s0,s10
- 17c0: 20000b13 li s6,512
- 17c4: 8d6e mv s10,s11
- 17c6: e846 sd a7,16(sp)
- 17c8: 8de6 mv s11,s9
- 17ca: 8a7e mv s4,t6
- 17cc: 8972 mv s2,t3
- 17ce: 899a mv s3,t1
- 17d0: 8c9e mv s9,t2
- 17d2: 0006871b sext.w a4,a3
- 17d6: 140482e3 beqz s1,211a <stbsp_vsprintfcb+0xe4c>
- 17da: 40a7863b subw a2,a5,a0
- 17de: 40cb083b subw a6,s6,a2
- 17e2: 85c2 mv a1,a6
- 17e4: 01075363 bge a4,a6,17ea <stbsp_vsprintfcb+0x51c>
- 17e8: 85ba mv a1,a4
- lead[0] -= (char)i;
- 17ea: 9e8d subw a3,a3,a1
- stbsp__cb_buf_clamp(i, lead[0]);
- 17ec: 0005871b sext.w a4,a1
- lead[0] -= (char)i;
- 17f0: 06d10423 sb a3,104(sp)
- while (i) {
- 17f4: c70d beqz a4,181e <stbsp_vsprintfcb+0x550>
- 17f6: 7866 ld a6,120(sp)
- 17f8: 02071593 slli a1,a4,0x20
- 17fc: 9181 srli a1,a1,0x20
- 17fe: 00b78633 add a2,a5,a1
- 1802: 8742 mv a4,a6
- *bf++ = *sn++;
- 1804: 00074683 lbu a3,0(a4)
- 1808: 0785 addi a5,a5,1
- while (i) {
- 180a: 0705 addi a4,a4,1
- *bf++ = *sn++;
- 180c: fed78fa3 sb a3,-1(a5)
- while (i) {
- 1810: fec79ae3 bne a5,a2,1804 <stbsp_vsprintfcb+0x536>
- 1814: 982e add a6,a6,a1
- 1816: fcc2 sd a6,120(sp)
- stbsp__chk_cb_buf(1);
- 1818: c899 beqz s1,182e <stbsp_vsprintfcb+0x560>
- 181a: 40a7863b subw a2,a5,a0
- 181e: 00cbd863 bge s7,a2,182e <stbsp_vsprintfcb+0x560>
- 1822: 65a2 ld a1,8(sp)
- 1824: 9c31 addw s0,s0,a2
- 1826: 9482 jalr s1
- 1828: 1a050ae3 beqz a0,21dc <stbsp_vsprintfcb+0xf0e>
- 182c: 87aa mv a5,a0
- while (lead[0]) {
- 182e: 06814683 lbu a3,104(sp)
- 1832: f2c5 bnez a3,17d2 <stbsp_vsprintfcb+0x504>
- 1834: 834e mv t1,s3
- 1836: 68c2 ld a7,16(sp)
- 1838: 89a6 mv s3,s1
- 183a: 7682 ld a3,32(sp)
- 183c: 64e2 ld s1,24(sp)
- 183e: 8e4a mv t3,s2
- 1840: 83e6 mv t2,s9
- 1842: 8fd2 mv t6,s4
- 1844: 8cee mv s9,s11
- 1846: 892a mv s2,a0
- 1848: 8dea mv s11,s10
- 184a: 8d22 mv s10,s0
- 184c: 843e mv s0,a5
- while (n) {
- 184e: c6f9 beqz a3,191c <stbsp_vsprintfcb+0x64e>
- STBSP__UNALIGNED(while (i >= 4) {
- 1850: ec26 sd s1,24(sp)
- 1852: 854a mv a0,s2
- 1854: 84d6 mv s1,s5
- 1856: 896a mv s2,s10
- 1858: 87a2 mv a5,s0
- 185a: 8d6e mv s10,s11
- stbsp__chk_cb_buf(1);
- 185c: 1fe00b93 li s7,510
- STBSP__UNALIGNED(while (i >= 4) {
- 1860: 8de6 mv s11,s9
- stbsp__cb_buf_clamp(i, n);
- 1862: 20000b13 li s6,512
- STBSP__UNALIGNED(while (i >= 4) {
- 1866: 4a0d li s4,3
- 1868: e87e sd t6,16(sp)
- 186a: f072 sd t3,32(sp)
- 186c: 8ac6 mv s5,a7
- 186e: f41a sd t1,40(sp)
- 1870: 8436 mv s0,a3
- 1872: 8c9e mv s9,t2
- stbsp__cb_buf_clamp(i, n);
- 1874: 0004071b sext.w a4,s0
- 1878: 100982e3 beqz s3,217c <stbsp_vsprintfcb+0xeae>
- 187c: 40a78633 sub a2,a5,a0
- 1880: 40cb05bb subw a1,s6,a2
- 1884: 862e mv a2,a1
- 1886: 00b75363 bge a4,a1,188c <stbsp_vsprintfcb+0x5be>
- 188a: 863a mv a2,a4
- 188c: 0006071b sext.w a4,a2
- n -= i;
- 1890: 9c11 subw s0,s0,a2
- STBSP__UNALIGNED(while (i >= 4) {
- 1892: 14ea50e3 bge s4,a4,21d2 <stbsp_vsprintfcb+0xf04>
- 1896: ffc70f1b addiw t5,a4,-4
- 189a: 002f5e9b srliw t4,t5,0x2
- 189e: 001e8e1b addiw t3,t4,1
- 18a2: 0e0a slli t3,t3,0x2
- 18a4: 01c785b3 add a1,a5,t3
- 18a8: 8626 mv a2,s1
- 18aa: 4218 lw a4,0(a2)
- 18ac: 0791 addi a5,a5,4
- 18ae: 0611 addi a2,a2,4
- 18b0: 2701 sext.w a4,a4
- 18b2: fee7ae23 sw a4,-4(a5)
- 18b6: feb79ae3 bne a5,a1,18aa <stbsp_vsprintfcb+0x5dc>
- 18ba: 002e9e9b slliw t4,t4,0x2
- 18be: 41df073b subw a4,t5,t4
- while (i) {
- 18c2: 94f2 add s1,s1,t3
- 18c4: c31d beqz a4,18ea <stbsp_vsprintfcb+0x61c>
- 18c6: 8626 mv a2,s1
- 18c8: 87ae mv a5,a1
- 18ca: 00e58f3b addw t5,a1,a4
- *bf++ = *s++;
- 18ce: 00064e83 lbu t4,0(a2)
- 18d2: 0785 addi a5,a5,1
- while (i) {
- 18d4: 00078e1b sext.w t3,a5
- *bf++ = *s++;
- 18d8: ffd78fa3 sb t4,-1(a5)
- 18dc: 0605 addi a2,a2,1
- while (i) {
- 18de: ffcf18e3 bne t5,t3,18ce <stbsp_vsprintfcb+0x600>
- 18e2: 1702 slli a4,a4,0x20
- 18e4: 9301 srli a4,a4,0x20
- 18e6: 95ba add a1,a1,a4
- 18e8: 94ba add s1,s1,a4
- stbsp__chk_cb_buf(1);
- 18ea: 1a098763 beqz s3,1a98 <stbsp_vsprintfcb+0x7ca>
- 18ee: 40a5863b subw a2,a1,a0
- 18f2: 1acbd363 bge s7,a2,1a98 <stbsp_vsprintfcb+0x7ca>
- 18f6: 65a2 ld a1,8(sp)
- 18f8: 0126093b addw s2,a2,s2
- 18fc: 9982 jalr s3
- 18fe: 20050be3 beqz a0,2314 <stbsp_vsprintfcb+0x1046>
- 1902: 87aa mv a5,a0
- while (n) {
- 1904: f825 bnez s0,1874 <stbsp_vsprintfcb+0x5a6>
- 1906: 6fc2 ld t6,16(sp)
- 1908: 64e2 ld s1,24(sp)
- 190a: 7e02 ld t3,32(sp)
- 190c: 7322 ld t1,40(sp)
- 190e: 83e6 mv t2,s9
- 1910: 88d6 mv a7,s5
- 1912: 8cee mv s9,s11
- 1914: 843e mv s0,a5
- 1916: 8dea mv s11,s10
- 1918: 8d4a mv s10,s2
- 191a: 892a mv s2,a0
- while (tz) {
- 191c: 08088863 beqz a7,19ac <stbsp_vsprintfcb+0x6de>
- *(stbsp__uint32 *)bf = 0x30303030;
- 1920: 30303b37 lui s6,0x30303
- *bf++ = '0';
- 1924: 03000a13 li s4,48
- while (i >= 4) {
- 1928: 4a8d li s5,3
- stbsp__chk_cb_buf(1);
- 192a: 1fe00693 li a3,510
- *(stbsp__uint32 *)bf = 0x30303030;
- 192e: 030b0b13 addi s6,s6,48 # 30303030 <_ZSt4cerr+0x302fb7a8>
- stbsp__cb_buf_clamp(i, tz);
- 1932: 20000b93 li s7,512
- 1936: 040989e3 beqz s3,2188 <stbsp_vsprintfcb+0xeba>
- 193a: 41240633 sub a2,s0,s2
- 193e: 40cb87bb subw a5,s7,a2
- 1942: 873e mv a4,a5
- 1944: 00f8d363 bge a7,a5,194a <stbsp_vsprintfcb+0x67c>
- 1948: 8746 mv a4,a7
- 194a: 0007079b sext.w a5,a4
- tz -= i;
- 194e: 40e888bb subw a7,a7,a4
- while (i) {
- 1952: 08078ee3 beqz a5,21ee <stbsp_vsprintfcb+0xf20>
- if ((((stbsp__uintptr)bf) & 3) == 0)
- 1956: 00347713 andi a4,s0,3
- 195a: e719 bnez a4,1968 <stbsp_vsprintfcb+0x69a>
- 195c: 0390006f j 2194 <stbsp_vsprintfcb+0xec6>
- 1960: 00347713 andi a4,s0,3
- 1964: 7a070f63 beqz a4,2122 <stbsp_vsprintfcb+0xe54>
- *bf++ = '0';
- 1968: 01440023 sb s4,0(s0)
- --i;
- 196c: 37fd addiw a5,a5,-1
- *bf++ = '0';
- 196e: 0405 addi s0,s0,1
- while (i) {
- 1970: fbe5 bnez a5,1960 <stbsp_vsprintfcb+0x692>
- stbsp__chk_cb_buf(1);
- 1972: 02098b63 beqz s3,19a8 <stbsp_vsprintfcb+0x6da>
- 1976: 4124063b subw a2,s0,s2
- 197a: 02c6d763 bge a3,a2,19a8 <stbsp_vsprintfcb+0x6da>
- 197e: 65a2 ld a1,8(sp)
- 1980: 854a mv a0,s2
- 1982: f81e sd t2,48(sp)
- 1984: f41a sd t1,40(sp)
- 1986: f072 sd t3,32(sp)
- 1988: ec7e sd t6,24(sp)
- 198a: e846 sd a7,16(sp)
- 198c: 00cd0d3b addw s10,s10,a2
- 1990: 9982 jalr s3
- 1992: 892a mv s2,a0
- 1994: 1a0502e3 beqz a0,2338 <stbsp_vsprintfcb+0x106a>
- 1998: 73c2 ld t2,48(sp)
- 199a: 7322 ld t1,40(sp)
- 199c: 7e02 ld t3,32(sp)
- 199e: 6fe2 ld t6,24(sp)
- 19a0: 68c2 ld a7,16(sp)
- 19a2: 842a mv s0,a0
- 19a4: 1fe00693 li a3,510
- while (tz) {
- 19a8: f80897e3 bnez a7,1936 <stbsp_vsprintfcb+0x668>
- sn = tail + 1;
- 19ac: 07110793 addi a5,sp,113
- 19b0: fcbe sd a5,120(sp)
- while (tail[0]) {
- 19b2: 080f8763 beqz t6,1a40 <stbsp_vsprintfcb+0x772>
- stbsp__cb_buf_clamp(i, tail[0]);
- 19b6: 854a mv a0,s2
- 19b8: 8b6a mv s6,s10
- stbsp__chk_cb_buf(1);
- 19ba: 1fe00a93 li s5,510
- stbsp__cb_buf_clamp(i, tail[0]);
- 19be: 8d4e mv s10,s3
- 19c0: 20000a13 li s4,512
- 19c4: 8bf2 mv s7,t3
- 19c6: 891a mv s2,t1
- 19c8: 899e mv s3,t2
- 19ca: 000f879b sext.w a5,t6
- 19ce: 7c0d0863 beqz s10,219e <stbsp_vsprintfcb+0xed0>
- 19d2: 40a4063b subw a2,s0,a0
- 19d6: 40ca06bb subw a3,s4,a2
- 19da: 8736 mv a4,a3
- 19dc: 00d7d363 bge a5,a3,19e2 <stbsp_vsprintfcb+0x714>
- 19e0: 873e mv a4,a5
- tail[0] -= (char)i;
- 19e2: 40ef8fbb subw t6,t6,a4
- stbsp__cb_buf_clamp(i, tail[0]);
- 19e6: 0007079b sext.w a5,a4
- tail[0] -= (char)i;
- 19ea: 07f10823 sb t6,112(sp)
- while (i) {
- 19ee: c795 beqz a5,1a1a <stbsp_vsprintfcb+0x74c>
- 19f0: 75e6 ld a1,120(sp)
- 19f2: 02079613 slli a2,a5,0x20
- 19f6: 9201 srli a2,a2,0x20
- 19f8: 00c406b3 add a3,s0,a2
- 19fc: 87ae mv a5,a1
- *bf++ = *sn++;
- 19fe: 0007c703 lbu a4,0(a5)
- 1a02: 0405 addi s0,s0,1
- while (i) {
- 1a04: 0785 addi a5,a5,1
- *bf++ = *sn++;
- 1a06: fee40fa3 sb a4,-1(s0)
- while (i) {
- 1a0a: fed41ae3 bne s0,a3,19fe <stbsp_vsprintfcb+0x730>
- 1a0e: 95b2 add a1,a1,a2
- 1a10: fcae sd a1,120(sp)
- stbsp__chk_cb_buf(1);
- 1a12: 000d0d63 beqz s10,1a2c <stbsp_vsprintfcb+0x75e>
- 1a16: 40a4063b subw a2,s0,a0
- 1a1a: 00cad963 bge s5,a2,1a2c <stbsp_vsprintfcb+0x75e>
- 1a1e: 65a2 ld a1,8(sp)
- 1a20: 00cb0b3b addw s6,s6,a2
- 1a24: 9d02 jalr s10
- 1a26: 200509e3 beqz a0,2438 <stbsp_vsprintfcb+0x116a>
- 1a2a: 842a mv s0,a0
- while (tail[0]) {
- 1a2c: 07014f83 lbu t6,112(sp)
- 1a30: f80f9de3 bnez t6,19ca <stbsp_vsprintfcb+0x6fc>
- 1a34: 834a mv t1,s2
- 1a36: 83ce mv t2,s3
- 1a38: 8e5e mv t3,s7
- 1a3a: 89ea mv s3,s10
- 1a3c: 892a mv s2,a0
- 1a3e: 8d5a mv s10,s6
- if (fl & STBSP__LEFTJUST)
- 1a40: 001e7e13 andi t3,t3,1
- 1a44: 000e0663 beqz t3,1a50 <stbsp_vsprintfcb+0x782>
- if (fw > 0) {
- 1a48: 00605463 blez t1,1a50 <stbsp_vsprintfcb+0x782>
- 1a4c: 0300106f j 2a7c <stbsp_vsprintfcb+0x17ae>
- for (;;) {
- 1a50: 6b86 ld s7,64(sp)
- 1a52: 2c013a03 ld s4,704(sp)
- 1a56: 2b813a83 ld s5,696(sp)
- 1a5a: 2b013b03 ld s6,688(sp)
- ++f;
- 1a5e: 0485 addi s1,s1,1
- for (;;) {
- 1a60: b0f1 j 132c <stbsp_vsprintfcb+0x5e>
- fl |= STBSP__METRIC_SUFFIX;
- 1a62: 100e6e13 ori t3,t3,256
- continue;
- 1a66: 0685 addi a3,a3,1
- 1a68: bad1 j 143c <stbsp_vsprintfcb+0x16e>
- while (i) {
- 1a6a: 0e0580e3 beqz a1,234a <stbsp_vsprintfcb+0x107c>
- if ((((stbsp__uintptr)bf) & 3) == 0)
- 1a6e: 00347793 andi a5,s0,3
- 1a72: e799 bnez a5,1a80 <stbsp_vsprintfcb+0x7b2>
- 1a74: 0dd0006f j 2350 <stbsp_vsprintfcb+0x1082>
- 1a78: 00347793 andi a5,s0,3
- 1a7c: 72078463 beqz a5,21a4 <stbsp_vsprintfcb+0xed6>
- *bf++ = '0';
- 1a80: 01d40023 sb t4,0(s0)
- --i;
- 1a84: 35fd addiw a1,a1,-1
- *bf++ = '0';
- 1a86: 0405 addi s0,s0,1
- while (i) {
- 1a88: f9e5 bnez a1,1a78 <stbsp_vsprintfcb+0x7aa>
- while (i) {
- 1a8a: 85a2 mv a1,s0
- stbsp__chk_cb_buf(1);
- 1a8c: cc0b19e3 bnez s6,175e <stbsp_vsprintfcb+0x490>
- 1a90: 842e mv s0,a1
- while (pr > 0) {
- 1a92: c93042e3 bgtz s3,1716 <stbsp_vsprintfcb+0x448>
- 1a96: b9cd j 1788 <stbsp_vsprintfcb+0x4ba>
- while (i) {
- 1a98: 87ae mv a5,a1
- while (n) {
- 1a9a: dc041de3 bnez s0,1874 <stbsp_vsprintfcb+0x5a6>
- 1a9e: b5a5 j 1906 <stbsp_vsprintfcb+0x638>
- while ((f[0] >= '0') && (f[0] <= '9')) {
- 1aa0: fd07871b addiw a4,a5,-48
- 1aa4: 0ff77713 zext.b a4,a4
- 1aa8: 4625 li a2,9
- ++f;
- 1aaa: 0485 addi s1,s1,1
- pr = 0;
- 1aac: 4881 li a7,0
- while ((f[0] >= '0') && (f[0] <= '9')) {
- 1aae: 46a5 li a3,9
- 1ab0: 9ce669e3 bltu a2,a4,1482 <stbsp_vsprintfcb+0x1b4>
- pr = pr * 10 + f[0] - '0';
- 1ab4: 0028971b slliw a4,a7,0x2
- 1ab8: 0117073b addw a4,a4,a7
- 1abc: 0017171b slliw a4,a4,0x1
- f++;
- 1ac0: 0485 addi s1,s1,1
- pr = pr * 10 + f[0] - '0';
- 1ac2: 9f3d addw a4,a4,a5
- while ((f[0] >= '0') && (f[0] <= '9')) {
- 1ac4: 0004c783 lbu a5,0(s1)
- pr = pr * 10 + f[0] - '0';
- 1ac8: fd07089b addiw a7,a4,-48
- while ((f[0] >= '0') && (f[0] <= '9')) {
- 1acc: fd07871b addiw a4,a5,-48
- 1ad0: 0ff77713 zext.b a4,a4
- 1ad4: fee6f0e3 bgeu a3,a4,1ab4 <stbsp_vsprintfcb+0x7e6>
- 1ad8: b26d j 1482 <stbsp_vsprintfcb+0x1b4>
- fl |= STBSP__METRIC_1024;
- 1ada: 8f5d or a4,a4,a5
- 1adc: 00070e1b sext.w t3,a4
- 1ae0: 0685 addi a3,a3,1
- 1ae2: baa9 j 143c <stbsp_vsprintfcb+0x16e>
- *bf = 0;
- 1ae4: 00040023 sb zero,0(s0)
- 1ae8: b209 j 13ea <stbsp_vsprintfcb+0x11c>
- if (f[0] == 'l') {
- 1aea: 0014c783 lbu a5,1(s1)
- 1aee: 06c00713 li a4,108
- fl |= ((sizeof(long) == 8) ? STBSP__INTMAX : 0);
- 1af2: 020e6e13 ori t3,t3,32
- if (f[0] == 'l') {
- 1af6: 00e78c63 beq a5,a4,1b0e <stbsp_vsprintfcb+0x840>
- ++f;
- 1afa: 0485 addi s1,s1,1
- 1afc: ba65 j 14b4 <stbsp_vsprintfcb+0x1e6>
- if (f[0] == 'h')
- 1afe: 0014c783 lbu a5,1(s1)
- 1b02: 06800713 li a4,104
- fl |= STBSP__HALFWIDTH;
- 1b06: 200e6e13 ori t3,t3,512
- if (f[0] == 'h')
- 1b0a: fee798e3 bne a5,a4,1afa <stbsp_vsprintfcb+0x82c>
- if ((f[1] == '6') && (f[2] == '4')) {
- 1b0e: 0024c783 lbu a5,2(s1)
- ++f;
- 1b12: 0489 addi s1,s1,2
- 1b14: b245 j 14b4 <stbsp_vsprintfcb+0x1e6>
- s = va_arg(va, char *);
- 1b16: 008b8713 addi a4,s7,8
- 1b1a: e0ba sd a4,64(sp)
- if (fl & STBSP__INTMAX) {
- 1b1c: 020e7693 andi a3,t3,32
- 1b20: 8772 mv a4,t3
- 1b22: 24069ee3 bnez a3,257e <stbsp_vsprintfcb+0x12b0>
- stbsp__int32 i = va_arg(va, stbsp__int32);
- 1b26: 000ba683 lw a3,0(s7)
- if ((f[0] != 'u') && (i < 0)) {
- 1b2a: 07500613 li a2,117
- n64 = (stbsp__uint32)i;
- 1b2e: 02069f13 slli t5,a3,0x20
- 1b32: 020f5f13 srli t5,t5,0x20
- if ((f[0] != 'u') && (i < 0)) {
- 1b36: 00c78a63 beq a5,a2,1b4a <stbsp_vsprintfcb+0x87c>
- 1b3a: 0006d863 bgez a3,1b4a <stbsp_vsprintfcb+0x87c>
- fl |= STBSP__NEGATIVE;
- 1b3e: 08076713 ori a4,a4,128
- n64 = (stbsp__uint32)-i;
- 1b42: 40d00f3b negw t5,a3
- fl |= STBSP__NEGATIVE;
- 1b46: 00070e1b sext.w t3,a4
- if (fl & STBSP__METRIC_SUFFIX) {
- 1b4a: 100e7693 andi a3,t3,256
- 1b4e: 5c0683e3 beqz a3,2914 <stbsp_vsprintfcb+0x1646>
- if (n64 < 1024)
- 1b52: 3ff00793 li a5,1023
- 1b56: 01e7e463 bltu a5,t5,1b5e <stbsp_vsprintfcb+0x890>
- 1b5a: 0ea0106f j 2c44 <stbsp_vsprintfcb+0x1976>
- else if (pr == -1)
- 1b5e: 57fd li a5,-1
- 1b60: 30f887e3 beq a7,a5,266e <stbsp_vsprintfcb+0x13a0>
- fv = (double)(stbsp__int64)n64;
- 1b64: d22f7553 fcvt.d.l fa0,t5
- if (fl & STBSP__METRIC_1024)
- 1b68: 034e1793 slli a5,t3,0x34
- 1b6c: 0007c463 bltz a5,1b74 <stbsp_vsprintfcb+0x8a6>
- 1b70: 2300106f j 2da0 <stbsp_vsprintfcb+0x1ad2>
- divisor = 1024.0;
- 1b74: 00004797 auipc a5,0x4
- 1b78: d047b787 fld fa5,-764(a5) # 5878 <STDIN_FD+0x20>
- if ((fv < divisor) && (fv > -divisor))
- 1b7c: 22f79753 fneg.d fa4,fa5
- fl += 0x1000000;
- 1b80: 010006b7 lui a3,0x1000
- while (fl < 0x4000000) {
- 1b84: 04000737 lui a4,0x4000
- if ((fv < divisor) && (fv > -divisor))
- 1b88: a2f517d3 flt.d a5,fa0,fa5
- 1b8c: c789 beqz a5,1b96 <stbsp_vsprintfcb+0x8c8>
- 1b8e: a2a717d3 flt.d a5,fa4,fa0
- 1b92: 3e079863 bnez a5,1f82 <stbsp_vsprintfcb+0xcb4>
- fl += 0x1000000;
- 1b96: 01c68e3b addw t3,a3,t3
- fv /= divisor;
- 1b9a: 1af57553 fdiv.d fa0,fa0,fa5
- while (fl < 0x4000000) {
- 1b9e: feee65e3 bltu t3,a4,1b88 <stbsp_vsprintfcb+0x8ba>
- 1ba2: a6c5 j 1f82 <stbsp_vsprintfcb+0xcb4>
- h = (f[0] == 'X') ? hexu : hex;
- 1ba4: 05800693 li a3,88
- if (fl & STBSP__INTMAX) {
- 1ba8: 020e7713 andi a4,t3,32
- h = (f[0] == 'X') ? hexu : hex;
- 1bac: 00005817 auipc a6,0x5
- 1bb0: ecc80813 addi a6,a6,-308 # 6a78 <hex.0>
- 1bb4: 00d79663 bne a5,a3,1bc0 <stbsp_vsprintfcb+0x8f2>
- 1bb8: 00005817 auipc a6,0x5
- 1bbc: ea880813 addi a6,a6,-344 # 6a60 <hexu.1>
- l = (4 << 4) | (4 << 8);
- 1bc0: 44000793 li a5,1088
- 1bc4: d0be sw a5,96(sp)
- if (fl & STBSP__LEADING_0X) {
- 1bc6: 008e7793 andi a5,t3,8
- 1bca: 7a079263 bnez a5,236e <stbsp_vsprintfcb+0x10a0>
- lead[0] = 0;
- 1bce: 06010423 sb zero,104(sp)
- s = va_arg(va, char *);
- 1bd2: 008b8793 addi a5,s7,8
- 1bd6: e0be sd a5,64(sp)
- if (fl & STBSP__INTMAX)
- 1bd8: 72070b63 beqz a4,230e <stbsp_vsprintfcb+0x1040>
- n64 = va_arg(va, stbsp__uint64);
- 1bdc: 000bb683 ld a3,0(s7)
- dp = 0;
- 1be0: d282 sw zero,100(sp)
- tail[0] = 0;
- 1be2: 06010823 sb zero,112(sp)
- if ((fl & STBSP__LEFTJUST) == 0) {
- 1be6: 001e7513 andi a0,t3,1
- if (n64 == 0) {
- 1bea: 380694e3 bnez a3,2772 <stbsp_vsprintfcb+0x14a4>
- lead[0] = 0;
- 1bee: 06010423 sb zero,104(sp)
- if (pr == 0) {
- 1bf2: 78089a63 bnez a7,2386 <stbsp_vsprintfcb+0x10b8>
- if (fw < (stbsp__int32)n)
- 1bf6: fffb4313 not t1,s6
- 1bfa: 43f35313 srai t1,t1,0x3f
- l = 0;
- 1bfe: d082 sw zero,96(sp)
- if (fw < (stbsp__int32)n)
- 1c00: 01637333 and t1,t1,s6
- goto scopy;
- 1c04: 4701 li a4,0
- 1c06: 4f81 li t6,0
- 1c08: 4a01 li s4,0
- cs = 0;
- 1c0a: 4281 li t0,0
- s = num + STBSP__NUMSZ;
- 1c0c: 28010a93 addi s5,sp,640
- if ((fl & STBSP__LEFTJUST) == 0) {
- 1c10: 9c0506e3 beqz a0,15dc <stbsp_vsprintfcb+0x30e>
- if (fw + pr) {
- 1c14: 00e307bb addw a5,t1,a4
- 1c18: 9c079fe3 bnez a5,15f6 <stbsp_vsprintfcb+0x328>
- 1c1c: 06910793 addi a5,sp,105
- 1c20: b661 j 17a8 <stbsp_vsprintfcb+0x4da>
- h = (f[0] == 'E') ? hexu : hex;
- 1c22: 04500713 li a4,69
- 1c26: 00005317 auipc t1,0x5
- 1c2a: e5230313 addi t1,t1,-430 # 6a78 <hex.0>
- 1c2e: 1ce78ae3 beq a5,a4,2602 <stbsp_vsprintfcb+0x1334>
- fv = va_arg(va, double);
- 1c32: 008b8713 addi a4,s7,8
- if (pr == -1)
- 1c36: 57fd li a5,-1
- fv = va_arg(va, double);
- 1c38: e0ba sd a4,64(sp)
- 1c3a: 000bb507 fld fa0,0(s7)
- if (pr == -1)
- 1c3e: 1af88ce3 beq a7,a5,25f6 <stbsp_vsprintfcb+0x1328>
- if (stbsp__real_to_str(&sn, &l, num, &dp, fv, pr | 0x80000000))
- 1c42: 80000737 lui a4,0x80000
- 1c46: 00e8e733 or a4,a7,a4
- 1c4a: 2701 sext.w a4,a4
- 1c4c: 10d4 addi a3,sp,100
- 1c4e: 0110 addi a2,sp,128
- 1c50: 108c addi a1,sp,96
- 1c52: 18a8 addi a0,sp,120
- 1c54: f41e sd t2,40(sp)
- 1c56: f01a sd t1,32(sp)
- 1c58: ec72 sd t3,24(sp)
- 1c5a: e846 sd a7,16(sp)
- 1c5c: d8efe0ef jal 1ea <stbsp__real_to_str>
- 1c60: 68c2 ld a7,16(sp)
- 1c62: 6e62 ld t3,24(sp)
- 1c64: 7302 ld t1,32(sp)
- 1c66: 73a2 ld t2,40(sp)
- if (dp == STBSP__SPECIAL) {
- 1c68: 5796 lw a5,100(sp)
- s = (char *)sn;
- 1c6a: 7ae6 ld s5,120(sp)
- if ((l - 1) > (stbsp__uint32)pr)
- 1c6c: 5686 lw a3,96(sp)
- if (stbsp__real_to_str(&sn, &l, num, &dp, fv, pr | 0x80000000))
- 1c6e: 3c0511e3 bnez a0,2830 <stbsp_vsprintfcb+0x1562>
- tail[0] = 0;
- 1c72: 06010823 sb zero,112(sp)
- sign[0] = 0;
- 1c76: 06010423 sb zero,104(sp)
- } else if (fl & STBSP__LEADINGSPACE) {
- 1c7a: 004e7713 andi a4,t3,4
- 1c7e: 6a070ee3 beqz a4,2b3a <stbsp_vsprintfcb+0x186c>
- sign[0] = 1;
- 1c82: 6709 lui a4,0x2
- 1c84: 0705 addi a4,a4,1 # 2001 <stbsp_vsprintfcb+0xd33>
- 1c86: 06e11423 sh a4,104(sp)
- if (dp == STBSP__SPECIAL) {
- 1c8a: 671d lui a4,0x7
- 1c8c: 1ee794e3 bne a5,a4,2674 <stbsp_vsprintfcb+0x13a6>
- if (pr < (stbsp__int32)l)
- 1c90: 0006879b sext.w a5,a3
- n = pr + lead[0] + tail[0] + tz;
- 1c94: 06814a03 lbu s4,104(sp)
- if (pr < (stbsp__int32)l)
- 1c98: fff7c793 not a5,a5
- n = pr + lead[0] + tail[0] + tz;
- 1c9c: 07014f83 lbu t6,112(sp)
- if (pr < (stbsp__int32)l)
- 1ca0: 97fd srai a5,a5,0x3f
- 1ca2: 8ff5 and a5,a5,a3
- n = pr + lead[0] + tail[0] + tz;
- 1ca4: 00fa073b addw a4,s4,a5
- 1ca8: 01f7063b addw a2,a4,t6
- 1cac: 8732 mv a4,a2
- if ((fl & STBSP__LEFTJUST) == 0) {
- 1cae: 001e7513 andi a0,t3,1
- if (pr < (stbsp__int32)l)
- 1cb2: 2781 sext.w a5,a5
- if (fw < (stbsp__int32)n)
- 1cb4: 835a mv t1,s6
- 1cb6: 00cb5363 bge s6,a2,1cbc <stbsp_vsprintfcb+0x9ee>
- 1cba: 8332 mv t1,a2
- fw -= n;
- 1cbc: 40e3033b subw t1,t1,a4
- cs = 0;
- 1cc0: 4281 li t0,0
- pr -= l;
- 1cc2: 40d7873b subw a4,a5,a3
- tz = 0;
- 1cc6: 4881 li a7,0
- goto scopy;
- 1cc8: b7a1 j 1c10 <stbsp_vsprintfcb+0x942>
- h = (f[0] == 'G') ? hexu : hex;
- 1cca: 04700713 li a4,71
- 1cce: 00005317 auipc t1,0x5
- 1cd2: daa30313 addi t1,t1,-598 # 6a78 <hex.0>
- 1cd6: 14e783e3 beq a5,a4,261c <stbsp_vsprintfcb+0x134e>
- fv = va_arg(va, double);
- 1cda: 008b8713 addi a4,s7,8
- if (pr == -1)
- 1cde: 57fd li a5,-1
- fv = va_arg(va, double);
- 1ce0: e0ba sd a4,64(sp)
- 1ce2: 000bb507 fld fa0,0(s7)
- if (pr == -1)
- 1ce6: 12f884e3 beq a7,a5,260e <stbsp_vsprintfcb+0x1340>
- else if (pr == 0)
- 1cea: 6e0887e3 beqz a7,2bd8 <stbsp_vsprintfcb+0x190a>
- if (stbsp__real_to_str(&sn, &l, num, &dp, fv, (pr - 1) | 0x80000000))
- 1cee: fff8871b addiw a4,a7,-1
- 1cf2: 800007b7 lui a5,0x80000
- 1cf6: 8f5d or a4,a4,a5
- 1cf8: 2701 sext.w a4,a4
- l = stbsp__strlen_limited(s, (pr >= 0) ? pr : ~0u);
- 1cfa: 00088a9b sext.w s5,a7
- 1cfe: 8a46 mv s4,a7
- if (stbsp__real_to_str(&sn, &l, num, &dp, fv, (pr - 1) | 0x80000000))
- 1d00: 10d4 addi a3,sp,100
- 1d02: 0110 addi a2,sp,128
- 1d04: 108c addi a1,sp,96
- 1d06: 18a8 addi a0,sp,120
- 1d08: f01e sd t2,32(sp)
- 1d0a: ec1a sd t1,24(sp)
- 1d0c: e872 sd t3,16(sp)
- 1d0e: cdcfe0ef jal 1ea <stbsp__real_to_str>
- 1d12: 6e42 ld t3,16(sp)
- 1d14: 6362 ld t1,24(sp)
- 1d16: 7382 ld t2,32(sp)
- 1d18: 4281 li t0,0
- 1d1a: c509 beqz a0,1d24 <stbsp_vsprintfcb+0xa56>
- fl |= STBSP__NEGATIVE;
- 1d1c: 080e6e13 ori t3,t3,128
- 1d20: 08000293 li t0,128
- if (l > (stbsp__uint32)pr)
- 1d24: 5806 lw a6,96(sp)
- 1d26: 010af463 bgeu s5,a6,1d2e <stbsp_vsprintfcb+0xa60>
- l = pr;
- 1d2a: d0d6 sw s5,96(sp)
- 1d2c: 8856 mv a6,s5
- while ((l > 1) && (pr) && (sn[l - 1] == '0')) {
- 1d2e: 4705 li a4,1
- if ((dp <= -4) || (dp > (stbsp__int32)n)) {
- 1d30: 5796 lw a5,100(sp)
- while ((l > 1) && (pr) && (sn[l - 1] == '0')) {
- 1d32: 01076463 bltu a4,a6,1d3a <stbsp_vsprintfcb+0xa6c>
- 1d36: 1800106f j 2eb6 <stbsp_vsprintfcb+0x1be8>
- 1d3a: 7be6 ld s7,120(sp)
- 1d3c: fff8071b addiw a4,a6,-1
- 1d40: 1702 slli a4,a4,0x20
- 1d42: 9301 srli a4,a4,0x20
- 1d44: 001a0e9b addiw t4,s4,1
- 1d48: 75e2 ld a1,56(sp)
- 1d4a: 8ade mv s5,s7
- 1d4c: 975e add a4,a4,s7
- 1d4e: 410e8ebb subw t4,t4,a6
- 1d52: 88d2 mv a7,s4
- 1d54: 86c2 mv a3,a6
- 1d56: 4f01 li t5,0
- 1d58: 03000f93 li t6,48
- 1d5c: e842 sd a6,16(sp)
- 1d5e: a809 j 1d70 <stbsp_vsprintfcb+0xaa2>
- --pr;
- 1d60: 38fd addiw a7,a7,-1
- while ((l > 1) && (pr) && (sn[l - 1] == '0')) {
- 1d62: 211e80e3 beq t4,a7,2762 <stbsp_vsprintfcb+0x1494>
- 1d66: 177d addi a4,a4,-1 # 6fff <_stdout+0x14f>
- 1d68: 4f05 li t5,1
- 1d6a: 1e088ce3 beqz a7,2762 <stbsp_vsprintfcb+0x1494>
- --l;
- 1d6e: 85b6 mv a1,a3
- while ((l > 1) && (pr) && (sn[l - 1] == '0')) {
- 1d70: 00074803 lbu a6,0(a4)
- 1d74: fff6861b addiw a2,a3,-1 # ffffff <_ZSt4cerr+0xff8777>
- 1d78: 0006851b sext.w a0,a3
- 1d7c: 2581 sext.w a1,a1
- 1d7e: 0006069b sext.w a3,a2
- 1d82: fdf80fe3 beq a6,t6,1d60 <stbsp_vsprintfcb+0xa92>
- 1d86: 6842 ld a6,16(sp)
- 1d88: fc2e sd a1,56(sp)
- 1d8a: 86c2 mv a3,a6
- 1d8c: 000f0463 beqz t5,1d94 <stbsp_vsprintfcb+0xac6>
- 1d90: d0ae sw a1,96(sp)
- 1d92: 86ae mv a3,a1
- if ((dp <= -4) || (dp > (stbsp__int32)n)) {
- 1d94: 5775 li a4,-3
- 1d96: 08e7cee3 blt a5,a4,2632 <stbsp_vsprintfcb+0x1364>
- 1d9a: 08fa4be3 blt s4,a5,2630 <stbsp_vsprintfcb+0x1362>
- pr = (dp < (stbsp__int32)l) ? l - dp : 0;
- 1d9e: 0005071b sext.w a4,a0
- if (dp > 0) {
- 1da2: 7ef057e3 blez a5,2d90 <stbsp_vsprintfcb+0x1ac2>
- pr = (dp < (stbsp__int32)l) ? l - dp : 0;
- 1da6: 4881 li a7,0
- 1da8: 00e7d463 bge a5,a4,1db0 <stbsp_vsprintfcb+0xae2>
- 1dac: 40f508bb subw a7,a0,a5
- tail[0] = 0;
- 1db0: 06010823 sb zero,112(sp)
- if (fl & STBSP__NEGATIVE) {
- 1db4: 20029463 bnez t0,1fbc <stbsp_vsprintfcb+0xcee>
- } else if (fl & STBSP__LEADINGSPACE) {
- 1db8: 004e7713 andi a4,t3,4
- 1dbc: 000715e3 bnez a4,25c6 <stbsp_vsprintfcb+0x12f8>
- } else if (fl & STBSP__LEADINGPLUS) {
- 1dc0: 002e7713 andi a4,t3,2
- 1dc4: 660719e3 bnez a4,2c36 <stbsp_vsprintfcb+0x1968>
- sign[0] = 0;
- 1dc8: 06010423 sb zero,104(sp)
- 1dcc: aaed j 1fc6 <stbsp_vsprintfcb+0xcf8>
- h = (f[0] == 'A') ? hexu : hex;
- 1dce: 04100713 li a4,65
- 1dd2: 00005597 auipc a1,0x5
- 1dd6: ca658593 addi a1,a1,-858 # 6a78 <hex.0>
- 1dda: 00e783e3 beq a5,a4,25e0 <stbsp_vsprintfcb+0x1312>
- fv = va_arg(va, double);
- 1dde: 008b8693 addi a3,s7,8
- if (pr == -1)
- 1de2: 577d li a4,-1
- fv = va_arg(va, double);
- 1de4: e0b6 sd a3,64(sp)
- 1de6: 000bb783 ld a5,0(s7)
- if (pr == -1)
- 1dea: 7ee88963 beq a7,a4,25dc <stbsp_vsprintfcb+0x130e>
- d = value;
-
- STBSP__COPYFP(b, d);
-
- *bits = b & ((((stbsp__uint64)1) << 52) - 1);
- *expo = (stbsp__int32)(((b >> 52) & 2047) - 1023);
- 1dee: 4347d613 srai a2,a5,0x34
- *bits = b & ((((stbsp__uint64)1) << 52) - 1);
- 1df2: 00c79513 slli a0,a5,0xc
- *expo = (stbsp__int32)(((b >> 52) & 2047) - 1023);
- 1df6: 7ff67613 andi a2,a2,2047
- *bits = b & ((((stbsp__uint64)1) << 52) - 1);
- 1dfa: 8131 srli a0,a0,0xc
- *expo = (stbsp__int32)(((b >> 52) & 2047) - 1023);
- 1dfc: c016061b addiw a2,a2,-1023
- if (stbsp__real_to_parts((stbsp__int64 *)&n64, &dp, fv))
- 1e00: 7a07c863 bltz a5,25b0 <stbsp_vsprintfcb+0x12e2>
- } else if (fl & STBSP__LEADINGSPACE) {
- 1e04: 004e7793 andi a5,t3,4
- 1e08: 60078ee3 beqz a5,2c24 <stbsp_vsprintfcb+0x1956>
- 1e0c: 6789 lui a5,0x2
- 1e0e: 2785 addiw a5,a5,1 # 2001 <stbsp_vsprintfcb+0xd33>
- sign[0] = 1;
- 1e10: 06f11423 sh a5,104(sp)
- 1e14: 468d li a3,3
- 1e16: 4a0d li s4,3
- 1e18: 4809 li a6,2
- n64 |= (((stbsp__uint64)1) << 52);
- 1e1a: 4705 li a4,1
- 1e1c: 1752 slli a4,a4,0x34
- if (dp == -1023)
- 1e1e: c0100793 li a5,-1023
- n64 |= (((stbsp__uint64)1) << 52);
- 1e22: 8f49 or a4,a4,a0
- if (dp == -1023)
- 1e24: 5cf600e3 beq a2,a5,2be4 <stbsp_vsprintfcb+0x1916>
- if (pr < 15)
- 1e28: 4539 li a0,14
- n64 <<= (64 - 56);
- 1e2a: 00871793 slli a5,a4,0x8
- if (pr < 15)
- 1e2e: 251546e3 blt a0,a7,287a <stbsp_vsprintfcb+0x15ac>
- n64 += ((((stbsp__uint64)8) << 56) >> (pr * 4));
- 1e32: 4705 li a4,1
- 1e34: 0028951b slliw a0,a7,0x2
- 1e38: 176e slli a4,a4,0x3b
- 1e3a: 00a75733 srl a4,a4,a0
- 1e3e: 973e add a4,a4,a5
- *s++ = h[(n64 >> 60) & 15];
- 1e40: 03c75793 srli a5,a4,0x3c
- 1e44: 97ae add a5,a5,a1
- 1e46: 0007c503 lbu a0,0(a5)
- lead[1 + lead[0]] = '0';
- 1e4a: 22080793 addi a5,a6,544
- 1e4e: 06010813 addi a6,sp,96
- 1e52: 97c2 add a5,a5,a6
- 1e54: 03000813 li a6,48
- 1e58: df078423 sb a6,-536(a5)
- lead[2 + lead[0]] = 'x';
- 1e5c: 22068793 addi a5,a3,544
- 1e60: 1094 addi a3,sp,96
- 1e62: 96be add a3,a3,a5
- 1e64: 07800793 li a5,120
- 1e68: def68423 sb a5,-536(a3)
- lead[0] += 2;
- 1e6c: 07410423 sb s4,104(sp)
- *s++ = h[(n64 >> 60) & 15];
- 1e70: 0ca10023 sb a0,192(sp)
- if (pr)
- 1e74: 740893e3 bnez a7,2dba <stbsp_vsprintfcb+0x1aec>
- sn = s;
- 1e78: 0c110793 addi a5,sp,193
- 1e7c: fcbe sd a5,120(sp)
- 1e7e: 4701 li a4,0
- 1e80: 4501 li a0,0
- 1e82: 4305 li t1,1
- 1e84: 4685 li a3,1
- tail[1] = h[17];
- 1e86: 0115c583 lbu a1,17(a1)
- tail[2] = '+';
- 1e8a: 02b00793 li a5,43
- tail[1] = h[17];
- 1e8e: 06b108a3 sb a1,113(sp)
- if (dp < 0) {
- 1e92: 00065663 bgez a2,1e9e <stbsp_vsprintfcb+0xbd0>
- dp = -dp;
- 1e96: 40c0063b negw a2,a2
- tail[2] = '-';
- 1e9a: 02d00793 li a5,45
- tail[n] = '0' + dp % 10;
- 1e9e: 4829 li a6,10
- 1ea0: 030665bb remw a1,a2,a6
- 1ea4: 06f10923 sb a5,114(sp)
- n = (dp >= 1000) ? 6 : ((dp >= 100) ? 5 : ((dp >= 10) ? 4 : 3));
- 1ea8: 3e700e93 li t4,999
- tail[n] = '0' + dp % 10;
- 1eac: 0305859b addiw a1,a1,48
- 1eb0: 0ff5f593 zext.b a1,a1
- n = (dp >= 1000) ? 6 : ((dp >= 100) ? 5 : ((dp >= 10) ? 4 : 3));
- 1eb4: 18cec3e3 blt t4,a2,283a <stbsp_vsprintfcb+0x156c>
- 1eb8: 06300e93 li t4,99
- 1ebc: 54cec1e3 blt t4,a2,2bfe <stbsp_vsprintfcb+0x1930>
- 1ec0: 4ea5 li t4,9
- 1ec2: 72ced6e3 bge t4,a2,2dee <stbsp_vsprintfcb+0x1b20>
- dp /= 10;
- 1ec6: 030647bb divw a5,a2,a6
- tail[0] = (char)n;
- 1eca: 4611 li a2,4
- 1ecc: 06c10823 sb a2,112(sp)
- tail[n] = '0' + dp % 10;
- 1ed0: 06b10a23 sb a1,116(sp)
- 1ed4: 4811 li a6,4
- 1ed6: 4f91 li t6,4
- 1ed8: 0307879b addiw a5,a5,48
- 1edc: 06f109a3 sb a5,115(sp)
- n = pr + lead[0] + tail[0] + tz;
- 1ee0: 006a07bb addw a5,s4,t1
- 1ee4: 010787bb addw a5,a5,a6
- 1ee8: 0117863b addw a2,a5,a7
- dp = (int)(s - sn);
- 1eec: d2aa sw a0,100(sp)
- l = (int)(s - (num + 64));
- 1eee: d0b6 sw a3,96(sp)
- n = pr + lead[0] + tail[0] + tz;
- 1ef0: 87b2 mv a5,a2
- if ((fl & STBSP__LEFTJUST) == 0) {
- 1ef2: 001e7513 andi a0,t3,1
- if (fw < (stbsp__int32)n)
- 1ef6: 835a mv t1,s6
- 1ef8: 00cb5363 bge s6,a2,1efe <stbsp_vsprintfcb+0xc30>
- 1efc: 8332 mv t1,a2
- cs = 1 + (3 << 24);
- 1efe: 030002b7 lui t0,0x3000
- fw -= n;
- 1f02: 40f3033b subw t1,t1,a5
- cs = 1 + (3 << 24);
- 1f06: 0285 addi t0,t0,1 # 3000001 <_ZSt4cerr+0x2ff8779>
- s = num + 64;
- 1f08: 0c010a93 addi s5,sp,192
- goto scopy;
- 1f0c: b311 j 1c10 <stbsp_vsprintfcb+0x942>
- h = (f[0] == 'B') ? hexu : hex;
- 1f0e: 04200713 li a4,66
- 1f12: 00005817 auipc a6,0x5
- 1f16: b6680813 addi a6,a6,-1178 # 6a78 <hex.0>
- 1f1a: 6ce78963 beq a5,a4,25ec <stbsp_vsprintfcb+0x131e>
- if (fl & STBSP__LEADING_0X) {
- 1f1e: 008e7793 andi a5,t3,8
- 1f22: 66079e63 bnez a5,259e <stbsp_vsprintfcb+0x12d0>
- lead[0] = 0;
- 1f26: 06010423 sb zero,104(sp)
- l = (8 << 4) | (1 << 8);
- 1f2a: 18000793 li a5,384
- 1f2e: d0be sw a5,96(sp)
- if (fl & STBSP__INTMAX) {
- 1f30: 020e7713 andi a4,t3,32
- goto radixnum;
- 1f34: b979 j 1bd2 <stbsp_vsprintfcb+0x904>
- *s = (char)va_arg(va, int);
- 1f36: 000ba783 lw a5,0(s7)
- l = 1;
- 1f3a: 4705 li a4,1
- 1f3c: d0ba sw a4,96(sp)
- *s = (char)va_arg(va, int);
- 1f3e: 26f10fa3 sb a5,639(sp)
- 1f42: 008b8793 addi a5,s7,8
- lead[0] = 0;
- 1f46: 06010423 sb zero,104(sp)
- tail[0] = 0;
- 1f4a: 06010823 sb zero,112(sp)
- dp = 0;
- 1f4e: d282 sw zero,100(sp)
- *s = (char)va_arg(va, int);
- 1f50: e0be sd a5,64(sp)
- if ((fl & STBSP__LEFTJUST) == 0) {
- 1f52: 001e7513 andi a0,t3,1
- if (fw < (stbsp__int32)n)
- 1f56: 835a mv t1,s6
- 1f58: 69605063 blez s6,25d8 <stbsp_vsprintfcb+0x130a>
- fw -= n;
- 1f5c: 337d addiw t1,t1,-1
- goto scopy;
- 1f5e: 4701 li a4,0
- 1f60: 4f81 li t6,0
- 1f62: 4685 li a3,1
- 1f64: 4a01 li s4,0
- cs = 0;
- 1f66: 4281 li t0,0
- s = num + STBSP__NUMSZ - 1;
- 1f68: 27f10a93 addi s5,sp,639
- tz = 0;
- 1f6c: 4881 li a7,0
- goto scopy;
- 1f6e: b14d j 1c10 <stbsp_vsprintfcb+0x942>
- fv = va_arg(va, double);
- 1f70: 008b8713 addi a4,s7,8
- if (fl & STBSP__METRIC_SUFFIX) {
- 1f74: 100e7793 andi a5,t3,256
- fv = va_arg(va, double);
- 1f78: e0ba sd a4,64(sp)
- 1f7a: 000bb507 fld fa0,0(s7)
- if (fl & STBSP__METRIC_SUFFIX) {
- 1f7e: be0795e3 bnez a5,1b68 <stbsp_vsprintfcb+0x89a>
- if (pr == -1)
- 1f82: 57fd li a5,-1
- if (stbsp__real_to_str(&sn, &l, num, &dp, fv, pr))
- 1f84: 0008871b sext.w a4,a7
- if (pr == -1)
- 1f88: 00f89463 bne a7,a5,1f90 <stbsp_vsprintfcb+0xcc2>
- 1f8c: 4719 li a4,6
- pr = 6; // default is 6
- 1f8e: 4899 li a7,6
- if (stbsp__real_to_str(&sn, &l, num, &dp, fv, pr))
- 1f90: 10d4 addi a3,sp,100
- 1f92: 0110 addi a2,sp,128
- 1f94: 108c addi a1,sp,96
- 1f96: 18a8 addi a0,sp,120
- 1f98: f01e sd t2,32(sp)
- 1f9a: ec72 sd t3,24(sp)
- 1f9c: e846 sd a7,16(sp)
- 1f9e: a4cfe0ef jal 1ea <stbsp__real_to_str>
- 1fa2: 6e62 ld t3,24(sp)
- 1fa4: 68c2 ld a7,16(sp)
- 1fa6: 7382 ld t2,32(sp)
- if (dp == STBSP__SPECIAL) {
- 1fa8: 5796 lw a5,100(sp)
- if ((stbsp__int32)(l + n) > pr)
- 1faa: 5686 lw a3,96(sp)
- if (fl & STBSP__NEGATIVE) {
- 1fac: 080e7293 andi t0,t3,128
- if (stbsp__real_to_str(&sn, &l, num, &dp, fv, pr))
- 1fb0: e00500e3 beqz a0,1db0 <stbsp_vsprintfcb+0xae2>
- fl |= STBSP__NEGATIVE;
- 1fb4: 080e6e13 ori t3,t3,128
- tail[0] = 0;
- 1fb8: 06010823 sb zero,112(sp)
- sign[0] = 1;
- 1fbc: 670d lui a4,0x3
- 1fbe: d0170713 addi a4,a4,-767 # 2d01 <stbsp_vsprintfcb+0x1a33>
- 1fc2: 06e11423 sh a4,104(sp)
- if (dp == STBSP__SPECIAL) {
- 1fc6: 671d lui a4,0x7
- 1fc8: 7ce78963 beq a5,a4,279a <stbsp_vsprintfcb+0x14cc>
- if (dp <= 0) {
- 1fcc: 46f05fe3 blez a5,2c4a <stbsp_vsprintfcb+0x197c>
- cs = (fl & STBSP__TRIPLET_COMMA) ? ((600 - (stbsp__uint32)dp) % 3) : 0;
- 1fd0: 040e7313 andi t1,t3,64
- 1fd4: 00078e9b sext.w t4,a5
- 1fd8: 4581 li a1,0
- 1fda: 00030963 beqz t1,1fec <stbsp_vsprintfcb+0xd1e>
- 1fde: 25800593 li a1,600
- 1fe2: 41d585bb subw a1,a1,t4
- 1fe6: 470d li a4,3
- 1fe8: 02e5f5bb remuw a1,a1,a4
- *s++ = stbsp__comma;
- 1fec: 00005a17 auipc s4,0x5
- 1ff0: 9a4a0a13 addi s4,s4,-1628 # 6990 <stbsp__digitpair>
- s = (char *)sn;
- 1ff4: 7f66 ld t5,120(sp)
- *s++ = stbsp__comma;
- 1ff6: 0cda4283 lbu t0,205(s4)
- s = num + 64;
- 1ffa: 0c010a93 addi s5,sp,192
- if ((stbsp__uint32)dp >= l) {
- 1ffe: 44defb63 bgeu t4,a3,2454 <stbsp_vsprintfcb+0x1186>
- n = 0;
- 2002: 4501 li a0,0
- s = num + 64;
- 2004: 8756 mv a4,s5
- if ((fl & STBSP__TRIPLET_COMMA) && (++cs == 4)) {
- 2006: 4b91 li s7,4
- 2008: a015 j 202c <stbsp_vsprintfcb+0xd5e>
- 200a: 8642 mv a2,a6
- 200c: 883a mv a6,a4
- 200e: 8732 mv a4,a2
- *s++ = sn[n];
- 2010: 02051613 slli a2,a0,0x20
- 2014: 9201 srli a2,a2,0x20
- 2016: 967a add a2,a2,t5
- 2018: 00064f83 lbu t6,0(a2)
- ++n;
- 201c: 0015061b addiw a2,a0,1
- 2020: 0006051b sext.w a0,a2
- *s++ = sn[n];
- 2024: fff70fa3 sb t6,-1(a4) # 6fff <_stdout+0x14f>
- if (n >= (stbsp__uint32)dp)
- 2028: 7bd57563 bgeu a0,t4,27d2 <stbsp_vsprintfcb+0x1504>
- *s++ = stbsp__comma;
- 202c: 00170813 addi a6,a4,1
- if ((fl & STBSP__TRIPLET_COMMA) && (++cs == 4)) {
- 2030: fc030de3 beqz t1,200a <stbsp_vsprintfcb+0xd3c>
- 2034: 2585 addiw a1,a1,1
- 2036: fd759ae3 bne a1,s7,200a <stbsp_vsprintfcb+0xd3c>
- *s++ = stbsp__comma;
- 203a: fe580fa3 sb t0,-1(a6)
- 203e: 0709 addi a4,a4,2
- if ((fl & STBSP__TRIPLET_COMMA) && (++cs == 4)) {
- 2040: 4585 li a1,1
- 2042: b7f9 j 2010 <stbsp_vsprintfcb+0xd42>
- *d = tlen + (int)(bf - buf);
- 2044: 000bb703 ld a4,0(s7)
- 2048: 412407b3 sub a5,s0,s2
- 204c: 01a787bb addw a5,a5,s10
- int *d = va_arg(va, int *);
- 2050: 008b8693 addi a3,s7,8
- 2054: e0b6 sd a3,64(sp)
- *d = tlen + (int)(bf - buf);
- 2056: c31c sw a5,0(a4)
- } break;
- 2058: bae5 j 1a50 <stbsp_vsprintfcb+0x782>
- if (fl & STBSP__LEADING_0X) {
- 205a: 008e7793 andi a5,t3,8
- 205e: 50079b63 bnez a5,2574 <stbsp_vsprintfcb+0x12a6>
- lead[0] = 0;
- 2062: 06010423 sb zero,104(sp)
- l = (3 << 4) | (3 << 8);
- 2066: 33000793 li a5,816
- 206a: d0be sw a5,96(sp)
- if (fl & STBSP__INTMAX) {
- 206c: 020e7713 andi a4,t3,32
- h = hexu;
- 2070: 00005817 auipc a6,0x5
- 2074: 9f080813 addi a6,a6,-1552 # 6a60 <hexu.1>
- goto radixnum;
- 2078: bea9 j 1bd2 <stbsp_vsprintfcb+0x904>
- fl &= ~STBSP__LEADINGZERO; // 'p' only prints the pointer with zeros
- 207a: fefe7e13 andi t3,t3,-17
- 207e: 020e6e13 ori t3,t3,32
- 2082: 02000713 li a4,32
- pr = sizeof(void *) * 2;
- 2086: 48c1 li a7,16
- h = (f[0] == 'X') ? hexu : hex;
- 2088: 00005817 auipc a6,0x5
- 208c: 9f080813 addi a6,a6,-1552 # 6a78 <hex.0>
- 2090: be05 j 1bc0 <stbsp_vsprintfcb+0x8f2>
- s = va_arg(va, char *);
- 2092: 000bba83 ld s5,0(s7)
- 2096: 008b8793 addi a5,s7,8
- 209a: e0be sd a5,64(sp)
- if (s == 0)
- 209c: 360a8ee3 beqz s5,2c18 <stbsp_vsprintfcb+0x194a>
- if (((stbsp__uintptr)sn & 3) == 0)
- 20a0: 003af793 andi a5,s5,3
- l = stbsp__strlen_limited(s, (pr >= 0) ? pr : ~0u);
- 20a4: 5208c663 bltz a7,25d0 <stbsp_vsprintfcb+0x1302>
- 20a8: 0008869b sext.w a3,a7
- if (((stbsp__uintptr)sn & 3) == 0)
- 20ac: 2a0782e3 beqz a5,2b50 <stbsp_vsprintfcb+0x1882>
- if (!limit || *sn == 0)
- 20b0: 5a068b63 beqz a3,2666 <stbsp_vsprintfcb+0x1398>
- if (((stbsp__uintptr)sn & 3) == 0)
- 20b4: 87d6 mv a5,s5
- 20b6: a801 j 20c6 <stbsp_vsprintfcb+0xdf8>
- ++sn;
- 20b8: 0785 addi a5,a5,1
- if (((stbsp__uintptr)sn & 3) == 0)
- 20ba: 0037f713 andi a4,a5,3
- --limit;
- 20be: 36fd addiw a3,a3,-1
- if (((stbsp__uintptr)sn & 3) == 0)
- 20c0: 280709e3 beqz a4,2b52 <stbsp_vsprintfcb+0x1884>
- if (!limit || *sn == 0)
- 20c4: c681 beqz a3,20cc <stbsp_vsprintfcb+0xdfe>
- 20c6: 0007c703 lbu a4,0(a5)
- 20ca: f77d bnez a4,20b8 <stbsp_vsprintfcb+0xdea>
- return (stbsp__uint32)(sn - s);
- 20cc: 415787b3 sub a5,a5,s5
- 20d0: 0007869b sext.w a3,a5
- if (pr < (stbsp__int32)l)
- 20d4: fff6c713 not a4,a3
- 20d8: 977d srai a4,a4,0x3f
- 20da: 8f7d and a4,a4,a5
- 20dc: 0007079b sext.w a5,a4
- n = pr + lead[0] + tail[0] + tz;
- 20e0: 863e mv a2,a5
- pr -= l;
- 20e2: 9f15 subw a4,a4,a3
- l = stbsp__strlen_limited(s, (pr >= 0) ? pr : ~0u);
- 20e4: d0b6 sw a3,96(sp)
- lead[0] = 0;
- 20e6: 06010423 sb zero,104(sp)
- tail[0] = 0;
- 20ea: 06010823 sb zero,112(sp)
- dp = 0;
- 20ee: d282 sw zero,100(sp)
- if ((fl & STBSP__LEFTJUST) == 0) {
- 20f0: 001e7513 andi a0,t3,1
- if (fw < (stbsp__int32)n)
- 20f4: 835a mv t1,s6
- 20f6: 00fb5363 bge s6,a5,20fc <stbsp_vsprintfcb+0xe2e>
- 20fa: 833e mv t1,a5
- fw -= n;
- 20fc: 40c3033b subw t1,t1,a2
- goto scopy;
- 2100: 4f81 li t6,0
- 2102: 4a01 li s4,0
- cs = 0;
- 2104: 4281 li t0,0
- tz = 0;
- 2106: 4881 li a7,0
- goto scopy;
- 2108: b621 j 1c10 <stbsp_vsprintfcb+0x942>
- *bf++ = stbsp__comma;
- 210a: 87b2 mv a5,a2
- cs = 0;
- 210c: 4a01 li s4,0
- 210e: e44ff06f j 1752 <stbsp_vsprintfcb+0x484>
- lead[0] -= (char)i;
- 2112: 06010423 sb zero,104(sp)
- while (i) {
- 2116: d38ff06f j 164e <stbsp_vsprintfcb+0x380>
- lead[0] -= (char)i;
- 211a: 06010423 sb zero,104(sp)
- while (i) {
- 211e: ed8ff06f j 17f6 <stbsp_vsprintfcb+0x528>
- while (i >= 4) {
- 2122: 06fadc63 bge s5,a5,219a <stbsp_vsprintfcb+0xecc>
- tz -= i;
- 2126: 8722 mv a4,s0
- 2128: 0007851b sext.w a0,a5
- while (i >= 4) {
- 212c: 008785bb addw a1,a5,s0
- *(stbsp__uint32 *)bf = 0x30303030;
- 2130: 01672023 sw s6,0(a4)
- bf += 4;
- 2134: 0711 addi a4,a4,4
- while (i >= 4) {
- 2136: 40e5863b subw a2,a1,a4
- 213a: fecacbe3 blt s5,a2,2130 <stbsp_vsprintfcb+0xe62>
- 213e: ffc5061b addiw a2,a0,-4
- 2142: 0026561b srliw a2,a2,0x2
- 2146: 0016071b addiw a4,a2,1
- 214a: 37f1 addiw a5,a5,-4
- 214c: 0026161b slliw a2,a2,0x2
- 2150: 070a slli a4,a4,0x2
- 2152: 9722 add a4,a4,s0
- 2154: 9f91 subw a5,a5,a2
- while (i) {
- 2156: 843a mv s0,a4
- 2158: 80078de3 beqz a5,1972 <stbsp_vsprintfcb+0x6a4>
- 215c: 1782 slli a5,a5,0x20
- 215e: 9381 srli a5,a5,0x20
- 2160: 00f70433 add s0,a4,a5
- *bf++ = '0';
- 2164: 0705 addi a4,a4,1
- 2166: ff470fa3 sb s4,-1(a4)
- while (i) {
- 216a: fe871de3 bne a4,s0,2164 <stbsp_vsprintfcb+0xe96>
- 216e: 805ff06f j 1972 <stbsp_vsprintfcb+0x6a4>
- stbsp__cb_buf_clamp(i, pr);
- 2172: 85ce mv a1,s3
- if ((fl & STBSP__TRIPLET_COMMA) == 0) {
- 2174: 4981 li s3,0
- 2176: dc049263 bnez s1,173a <stbsp_vsprintfcb+0x46c>
- 217a: b8d5 j 1a6e <stbsp_vsprintfcb+0x7a0>
- STBSP__UNALIGNED(while (i >= 4) {
- 217c: 4401 li s0,0
- 217e: 85be mv a1,a5
- 2180: f0ea4b63 blt s4,a4,1896 <stbsp_vsprintfcb+0x5c8>
- 2184: f42ff06f j 18c6 <stbsp_vsprintfcb+0x5f8>
- if ((((stbsp__uintptr)bf) & 3) == 0)
- 2188: 00347713 andi a4,s0,3
- stbsp__cb_buf_clamp(i, tz);
- 218c: 87c6 mv a5,a7
- tz -= i;
- 218e: 4881 li a7,0
- if ((((stbsp__uintptr)bf) & 3) == 0)
- 2190: fc071c63 bnez a4,1968 <stbsp_vsprintfcb+0x69a>
- while (i >= 4) {
- 2194: 470d li a4,3
- 2196: f8f748e3 blt a4,a5,2126 <stbsp_vsprintfcb+0xe58>
- 219a: 8722 mv a4,s0
- 219c: b7c1 j 215c <stbsp_vsprintfcb+0xe8e>
- tail[0] -= (char)i;
- 219e: 06010823 sb zero,112(sp)
- while (i) {
- 21a2: b0b9 j 19f0 <stbsp_vsprintfcb+0x722>
- while (i >= 4) {
- 21a4: 478d li a5,3
- 21a6: 8622 mv a2,s0
- 21a8: d8b7d963 bge a5,a1,173a <stbsp_vsprintfcb+0x46c>
- 21ac: ffc5839b addiw t2,a1,-4
- 21b0: 0023d79b srliw a5,t2,0x2
- 21b4: 0017859b addiw a1,a5,1
- 21b8: 058a slli a1,a1,0x2
- 21ba: 942e add s0,s0,a1
- *(stbsp__uint32 *)bf = 0x30303030;
- 21bc: 01762023 sw s7,0(a2)
- bf += 4;
- 21c0: 0611 addi a2,a2,4
- while (i >= 4) {
- 21c2: fe861de3 bne a2,s0,21bc <stbsp_vsprintfcb+0xeee>
- 21c6: 0027979b slliw a5,a5,0x2
- 21ca: 40f385bb subw a1,t2,a5
- 21ce: d68ff06f j 1736 <stbsp_vsprintfcb+0x468>
- while (i) {
- 21d2: 85be mv a1,a5
- 21d4: ee071963 bnez a4,18c6 <stbsp_vsprintfcb+0x5f8>
- 21d8: f16ff06f j 18ee <stbsp_vsprintfcb+0x620>
- 21dc: 2c013a03 ld s4,704(sp)
- 21e0: 2b813a83 ld s5,696(sp)
- 21e4: 2b013b03 ld s6,688(sp)
- 21e8: 8ca2 mv s9,s0
- 21ea: a04ff06f j 13ee <stbsp_vsprintfcb+0x120>
- stbsp__chk_cb_buf(1);
- 21ee: 2601 sext.w a2,a2
- 21f0: 1fe00793 li a5,510
- 21f4: f8c7c563 blt a5,a2,197e <stbsp_vsprintfcb+0x6b0>
- 21f8: f3eff06f j 1936 <stbsp_vsprintfcb+0x668>
- fl &= ~STBSP__TRIPLET_COMMA; // if no leading zeros, then no commas
- 21fc: fbfe7e13 andi t3,t3,-65
- if (fw + pr) {
- 2200: 006707bb addw a5,a4,t1
- fl &= ~STBSP__TRIPLET_COMMA; // if no leading zeros, then no commas
- 2204: 2e01 sext.w t3,t3
- if (fw + pr) {
- 2206: a0078be3 beqz a5,1c1c <stbsp_vsprintfcb+0x94e>
- while (fw > 0) {
- 220a: be605663 blez t1,15f6 <stbsp_vsprintfcb+0x328>
- *(stbsp__uint32 *)bf = 0x20202020;
- 220e: 20202837 lui a6,0x20202
- stbsp__cb_buf_clamp(i, fw);
- 2212: 854a mv a0,s2
- 2214: 894e mv s2,s3
- 2216: 69a2 ld s3,8(sp)
- *(stbsp__uint32 *)bf = 0x20202020;
- 2218: 02080813 addi a6,a6,32 # 20202020 <_ZSt4cerr+0x201fa798>
- stbsp__cb_buf_clamp(i, fw);
- 221c: ec52 sd s4,24(sp)
- 221e: f426 sd s1,40(sp)
- 2220: 87a2 mv a5,s0
- 2222: 84ea mv s1,s10
- stbsp__chk_cb_buf(1);
- 2224: 1fe00f13 li t5,510
- stbsp__cb_buf_clamp(i, fw);
- 2228: 8d6e mv s10,s11
- *bf++ = ' ';
- 222a: 02000b13 li s6,32
- stbsp__cb_buf_clamp(i, fw);
- 222e: 8de6 mv s11,s9
- while (i >= 4) {
- 2230: 4b8d li s7,3
- stbsp__cb_buf_clamp(i, fw);
- 2232: 20000e93 li t4,512
- 2236: e846 sd a7,16(sp)
- 2238: f07e sd t6,32(sp)
- 223a: f836 sd a3,48(sp)
- 223c: e4f2 sd t3,72(sp)
- 223e: e8ba sd a4,80(sp)
- 2240: ec96 sd t0,88(sp)
- 2242: 841a mv s0,t1
- 2244: 8a42 mv s4,a6
- 2246: 8c9e mv s9,t2
- 2248: 0c090063 beqz s2,2308 <stbsp_vsprintfcb+0x103a>
- 224c: 40a78633 sub a2,a5,a0
- 2250: 40ce873b subw a4,t4,a2
- 2254: 86ba mv a3,a4
- 2256: 00e45363 bge s0,a4,225c <stbsp_vsprintfcb+0xf8e>
- 225a: 86a2 mv a3,s0
- 225c: 0006871b sext.w a4,a3
- fw -= i;
- 2260: 9c15 subw s0,s0,a3
- while (i) {
- 2262: e719 bnez a4,2270 <stbsp_vsprintfcb+0xfa2>
- 2264: a095 j 22c8 <stbsp_vsprintfcb+0xffa>
- *bf++ = ' ';
- 2266: 01678023 sb s6,0(a5)
- --i;
- 226a: 377d addiw a4,a4,-1
- *bf++ = ' ';
- 226c: 0785 addi a5,a5,1
- while (i) {
- 226e: cb29 beqz a4,22c0 <stbsp_vsprintfcb+0xff2>
- if ((((stbsp__uintptr)bf) & 3) == 0)
- 2270: 0037f693 andi a3,a5,3
- 2274: faed bnez a3,2266 <stbsp_vsprintfcb+0xf98>
- while (i >= 4) {
- 2276: 86be mv a3,a5
- 2278: 00070f9b sext.w t6,a4
- 227c: 00f705bb addw a1,a4,a5
- 2280: 02ebd763 bge s7,a4,22ae <stbsp_vsprintfcb+0xfe0>
- *(stbsp__uint32 *)bf = 0x20202020;
- 2284: 0146a023 sw s4,0(a3)
- bf += 4;
- 2288: 0691 addi a3,a3,4
- while (i >= 4) {
- 228a: 40d5863b subw a2,a1,a3
- 228e: fecbcbe3 blt s7,a2,2284 <stbsp_vsprintfcb+0xfb6>
- 2292: ffcf861b addiw a2,t6,-4 # fffffffff7fffffc <_ZSt4cerr+0xfffffffff7ff8774>
- 2296: 0026561b srliw a2,a2,0x2
- 229a: 0016069b addiw a3,a2,1
- 229e: 3771 addiw a4,a4,-4
- 22a0: 0026161b slliw a2,a2,0x2
- 22a4: 068a slli a3,a3,0x2
- 22a6: 96be add a3,a3,a5
- 22a8: 9f11 subw a4,a4,a2
- while (i) {
- 22aa: 87b6 mv a5,a3
- 22ac: cb11 beqz a4,22c0 <stbsp_vsprintfcb+0xff2>
- 22ae: 1702 slli a4,a4,0x20
- 22b0: 9301 srli a4,a4,0x20
- 22b2: 00e687b3 add a5,a3,a4
- *bf++ = ' ';
- 22b6: 0685 addi a3,a3,1
- 22b8: ff668fa3 sb s6,-1(a3)
- while (i) {
- 22bc: fef69de3 bne a3,a5,22b6 <stbsp_vsprintfcb+0xfe8>
- stbsp__chk_cb_buf(1);
- 22c0: 40a78633 sub a2,a5,a0
- 22c4: 00090e63 beqz s2,22e0 <stbsp_vsprintfcb+0x1012>
- 22c8: 2601 sext.w a2,a2
- 22ca: 00cf5b63 bge t5,a2,22e0 <stbsp_vsprintfcb+0x1012>
- 22ce: 85ce mv a1,s3
- 22d0: 9cb1 addw s1,s1,a2
- 22d2: 9902 jalr s2
- 22d4: c541 beqz a0,235c <stbsp_vsprintfcb+0x108e>
- 22d6: 87aa mv a5,a0
- 22d8: 20000e93 li t4,512
- 22dc: 1fe00f13 li t5,510
- while (fw > 0) {
- 22e0: f68044e3 bgtz s0,2248 <stbsp_vsprintfcb+0xf7a>
- 22e4: 8322 mv t1,s0
- 22e6: 89ca mv s3,s2
- 22e8: 83e6 mv t2,s9
- 22ea: 68c2 ld a7,16(sp)
- 22ec: 8cee mv s9,s11
- 22ee: 6a62 ld s4,24(sp)
- 22f0: 8dea mv s11,s10
- 22f2: 7f82 ld t6,32(sp)
- 22f4: 8d26 mv s10,s1
- 22f6: 76c2 ld a3,48(sp)
- 22f8: 6e26 ld t3,72(sp)
- 22fa: 6746 ld a4,80(sp)
- 22fc: 62e6 ld t0,88(sp)
- 22fe: 74a2 ld s1,40(sp)
- 2300: 892a mv s2,a0
- 2302: 843e mv s0,a5
- 2304: af2ff06f j 15f6 <stbsp_vsprintfcb+0x328>
- stbsp__cb_buf_clamp(i, fw);
- 2308: 8722 mv a4,s0
- 230a: 4401 li s0,0
- if ((((stbsp__uintptr)bf) & 3) == 0)
- 230c: b795 j 2270 <stbsp_vsprintfcb+0xfa2>
- n64 = va_arg(va, stbsp__uint32);
- 230e: 000be683 lwu a3,0(s7)
- 2312: b0f9 j 1be0 <stbsp_vsprintfcb+0x912>
- 2314: 2c013a03 ld s4,704(sp)
- 2318: 2b813a83 ld s5,696(sp)
- 231c: 2b013b03 ld s6,688(sp)
- 2320: 8cca mv s9,s2
- 2322: 8ccff06f j 13ee <stbsp_vsprintfcb+0x120>
- 2326: 8cd6 mv s9,s5
- 2328: 2c013a03 ld s4,704(sp)
- 232c: 2b813a83 ld s5,696(sp)
- 2330: 2b013b03 ld s6,688(sp)
- 2334: 8baff06f j 13ee <stbsp_vsprintfcb+0x120>
- 2338: 2c013a03 ld s4,704(sp)
- 233c: 2b813a83 ld s5,696(sp)
- 2340: 2b013b03 ld s6,688(sp)
- 2344: 8cea mv s9,s10
- 2346: 8a8ff06f j 13ee <stbsp_vsprintfcb+0x120>
- while (i) {
- 234a: 85a2 mv a1,s0
- 234c: c12ff06f j 175e <stbsp_vsprintfcb+0x490>
- while (i >= 4) {
- 2350: 478d li a5,3
- 2352: 8622 mv a2,s0
- 2354: e4b7cce3 blt a5,a1,21ac <stbsp_vsprintfcb+0xede>
- 2358: be2ff06f j 173a <stbsp_vsprintfcb+0x46c>
- 235c: 2c013a03 ld s4,704(sp)
- 2360: 2b813a83 ld s5,696(sp)
- 2364: 2b013b03 ld s6,688(sp)
- 2368: 8ca6 mv s9,s1
- 236a: 884ff06f j 13ee <stbsp_vsprintfcb+0x120>
- lead[2] = h[16];
- 236e: 01084683 lbu a3,16(a6)
- lead[0] = 2;
- 2372: 678d lui a5,0x3
- 2374: 0789 addi a5,a5,2 # 3002 <stbsp_vsprintf+0xa>
- 2376: 06f11423 sh a5,104(sp)
- lead[2] = h[16];
- 237a: 06d10523 sb a3,106(sp)
- 237e: b891 j 1bd2 <stbsp_vsprintfcb+0x904>
- 2380: 8cea mv s9,s10
- 2382: 86cff06f j 13ee <stbsp_vsprintfcb+0x120>
- 2386: 4f81 li t6,0
- 2388: 4a01 li s4,0
- 238a: 5586 lw a1,96(sp)
- *--s = stbsp__comma;
- 238c: 00004f17 auipc t5,0x4
- 2390: 6d1f4f03 lbu t5,1745(t5) # 6a5d <stbsp__comma>
- 2394: 0510 addi a2,sp,640
- 2396: 0085d71b srliw a4,a1,0x8
- *--s = h[n64 & ((1 << (l >> 8)) - 1)];
- 239a: 4305 li t1,1
- if (fl & STBSP__TRIPLET_COMMA) {
- 239c: 040e7e93 andi t4,t3,64
- *--s = h[n64 & ((1 << (l >> 8)) - 1)];
- 23a0: 0007029b sext.w t0,a4
- 23a4: 005317bb sllw a5,t1,t0
- 23a8: 37fd addiw a5,a5,-1
- 23aa: 8ff5 and a5,a5,a3
- 23ac: 97c2 add a5,a5,a6
- 23ae: 0007c783 lbu a5,0(a5)
- n64 >>= (l >> 8);
- 23b2: 0056d6b3 srl a3,a3,t0
- *--s = h[n64 & ((1 << (l >> 8)) - 1)];
- 23b6: fff60a93 addi s5,a2,-1
- 23ba: fef60fa3 sb a5,-1(a2)
- if (!((n64) || ((stbsp__int32)((num + STBSP__NUMSZ) - s) < pr)))
- 23be: e691 bnez a3,23ca <stbsp_vsprintfcb+0x10fc>
- 23c0: 051c addi a5,sp,640
- 23c2: 415787bb subw a5,a5,s5
- 23c6: 0317dd63 bge a5,a7,2400 <stbsp_vsprintfcb+0x1132>
- if (fl & STBSP__TRIPLET_COMMA) {
- 23ca: 020e8963 beqz t4,23fc <stbsp_vsprintfcb+0x112e>
- ++l;
- 23ce: 0015879b addiw a5,a1,1
- if ((l & 15) == ((l >> 4) & 15)) {
- 23d2: 0047d29b srliw t0,a5,0x4
- 23d6: 00f2c2b3 xor t0,t0,a5
- 23da: 00f2f293 andi t0,t0,15
- ++l;
- 23de: 0007859b sext.w a1,a5
- if ((l & 15) == ((l >> 4) & 15)) {
- 23e2: 0087d71b srliw a4,a5,0x8
- 23e6: 00029b63 bnez t0,23fc <stbsp_vsprintfcb+0x112e>
- l &= ~15;
- 23ea: 9bc1 andi a5,a5,-16
- 23ec: 0007859b sext.w a1,a5
- *--s = stbsp__comma;
- 23f0: ffe60a93 addi s5,a2,-2
- 23f4: ffe60f23 sb t5,-2(a2)
- 23f8: 0087d71b srliw a4,a5,0x8
- 23fc: 8656 mv a2,s5
- 23fe: b74d j 23a0 <stbsp_vsprintfcb+0x10d2>
- cs = (stbsp__uint32)((num + STBSP__NUMSZ) - s) + ((((l >> 4) & 15)) << 24);
- 2400: 0045d29b srliw t0,a1,0x4
- 2404: 0f0006b7 lui a3,0xf000
- if (pr < (stbsp__int32)l)
- 2408: 0007871b sext.w a4,a5
- cs = (stbsp__uint32)((num + STBSP__NUMSZ) - s) + ((((l >> 4) & 15)) << 24);
- 240c: 0182929b slliw t0,t0,0x18
- 2410: 00d2f2b3 and t0,t0,a3
- n = pr + lead[0] + tail[0] + tz;
- 2414: 00ef863b addw a2,t6,a4
- l = (stbsp__uint32)((num + STBSP__NUMSZ) - s);
- 2418: d0be sw a5,96(sp)
- n = pr + lead[0] + tail[0] + tz;
- 241a: 8fb2 mv t6,a2
- cs = (stbsp__uint32)((num + STBSP__NUMSZ) - s) + ((((l >> 4) & 15)) << 24);
- 241c: 86be mv a3,a5
- 241e: 00f282bb addw t0,t0,a5
- if (fw < (stbsp__int32)n)
- 2422: 835a mv t1,s6
- 2424: 00cb5363 bge s6,a2,242a <stbsp_vsprintfcb+0x115c>
- 2428: 8332 mv t1,a2
- fw -= n;
- 242a: 41f3033b subw t1,t1,t6
- pr -= l;
- 242e: 9f1d subw a4,a4,a5
- goto scopy;
- 2430: 4f81 li t6,0
- tz = 0;
- 2432: 4881 li a7,0
- goto scopy;
- 2434: fdcff06f j 1c10 <stbsp_vsprintfcb+0x942>
- 2438: 8cda mv s9,s6
- 243a: 2c013a03 ld s4,704(sp)
- 243e: 2b813a83 ld s5,696(sp)
- 2442: 2b013b03 ld s6,688(sp)
- 2446: fa9fe06f j 13ee <stbsp_vsprintfcb+0x120>
- fl |= ((sizeof(void *) == 8) ? STBSP__INTMAX : 0);
- 244a: 020e6e13 ori t3,t3,32
- ++f;
- 244e: 0485 addi s1,s1,1
- 2450: 864ff06f j 14b4 <stbsp_vsprintfcb+0x1e6>
- n = 0;
- 2454: 4601 li a2,0
- s = num + 64;
- 2456: 8756 mv a4,s5
- if ((fl & STBSP__TRIPLET_COMMA) && (++cs == 4)) {
- 2458: 4511 li a0,4
- *s++ = stbsp__comma;
- 245a: 00170793 addi a5,a4,1
- if ((fl & STBSP__TRIPLET_COMMA) && (++cs == 4)) {
- 245e: 00030563 beqz t1,2468 <stbsp_vsprintfcb+0x119a>
- 2462: 2585 addiw a1,a1,1
- 2464: 10a58363 beq a1,a0,256a <stbsp_vsprintfcb+0x129c>
- 2468: 873e mv a4,a5
- *s++ = sn[n];
- 246a: 02061793 slli a5,a2,0x20
- 246e: 9381 srli a5,a5,0x20
- 2470: 97fa add a5,a5,t5
- 2472: 0007c803 lbu a6,0(a5)
- ++n;
- 2476: 2605 addiw a2,a2,1
- *s++ = sn[n];
- 2478: ff070fa3 sb a6,-1(a4)
- if (n >= l)
- 247c: fcd66fe3 bltu a2,a3,245a <stbsp_vsprintfcb+0x118c>
- if (n < (stbsp__uint32)dp) {
- 2480: 0bd663e3 bltu a2,t4,2d26 <stbsp_vsprintfcb+0x1a58>
- cs = (int)(s - (num + 64)) + (3 << 24); // cs is how many tens
- 2484: 415707b3 sub a5,a4,s5
- 2488: 030002b7 lui t0,0x3000
- 248c: 00f282bb addw t0,t0,a5
- if (pr) {
- 2490: 00088a63 beqz a7,24a4 <stbsp_vsprintfcb+0x11d6>
- *s++ = stbsp__period;
- 2494: 0cca4683 lbu a3,204(s4)
- 2498: 00170793 addi a5,a4,1
- l = (stbsp__uint32)(s - (num + 64));
- 249c: 415787b3 sub a5,a5,s5
- *s++ = stbsp__period;
- 24a0: 00d70023 sb a3,0(a4)
- if (fl & STBSP__METRIC_SUFFIX) {
- 24a4: 100e7713 andi a4,t3,256
- 24a8: 86f2 mv a3,t3
- 24aa: 2c070163 beqz a4,276c <stbsp_vsprintfcb+0x149e>
- if (fl & STBSP__METRIC_NOSPACE)
- 24ae: 40ae5f9b sraiw t6,t3,0xa
- 24b2: 001fcf93 xori t6,t6,1
- 24b6: 001fff93 andi t6,t6,1
- tail[1] = ' ';
- 24ba: 02000713 li a4,32
- 24be: 06e108a3 sb a4,113(sp)
- tail[0] = idx;
- 24c2: 07f10823 sb t6,112(sp)
- if (fl >> 24) { // SI kilo is 'k', JEDEC and SI kibits are 'K'.
- 24c6: 018e561b srliw a2,t3,0x18
- 24ca: 018e571b srliw a4,t3,0x18
- n = pr + lead[0] + tail[0] + tz;
- 24ce: 000f859b sext.w a1,t6
- if (fl >> 24) { // SI kilo is 'k', JEDEC and SI kibits are 'K'.
- 24d2: c225 beqz a2,2532 <stbsp_vsprintfcb+0x1264>
- if (fl & STBSP__METRIC_1024)
- 24d4: 001f859b addiw a1,t6,1
- 24d8: 0ff5f613 zext.b a2,a1
- tail[idx + 1] = "_KMGT"[fl >> 24];
- 24dc: 1702 slli a4,a4,0x20
- if (fl & STBSP__METRIC_1024)
- 24de: 03469513 slli a0,a3,0x34
- tail[idx + 1] = "_KMGT"[fl >> 24];
- 24e2: 85b2 mv a1,a2
- 24e4: 9301 srli a4,a4,0x20
- if (fl & STBSP__METRIC_1024)
- 24e6: 06055ee3 bgez a0,2d62 <stbsp_vsprintfcb+0x1a94>
- tail[idx + 1] = "_KMGT"[fl >> 24];
- 24ea: 00003517 auipc a0,0x3
- 24ee: bee50513 addi a0,a0,-1042 # 50d8 <_GLOBAL__sub_I__ZSt3cin+0xe8>
- 24f2: 972a add a4,a4,a0
- 24f4: 00074503 lbu a0,0(a4)
- if (fl & STBSP__METRIC_1024 && !(fl & STBSP__METRIC_JEDEC)) {
- 24f8: 6709 lui a4,0x2
- 24fa: 80070713 addi a4,a4,-2048 # 1800 <stbsp_vsprintfcb+0x532>
- 24fe: 8f75 and a4,a4,a3
- tail[idx + 1] = "_KMGT"[fl >> 24];
- 2500: 06010813 addi a6,sp,96
- 2504: 22060693 addi a3,a2,544
- 2508: 96c2 add a3,a3,a6
- 250a: dea68823 sb a0,-528(a3) # efffdf0 <_ZSt4cerr+0xeff8568>
- if (fl & STBSP__METRIC_1024 && !(fl & STBSP__METRIC_JEDEC)) {
- 250e: 8007071b addiw a4,a4,-2048
- 2512: 060715e3 bnez a4,2d7c <stbsp_vsprintfcb+0x1aae>
- tail[idx + 1] = 'i';
- 2516: 2f89 addiw t6,t6,2
- 2518: 0ffff593 zext.b a1,t6
- 251c: 1094 addi a3,sp,96
- 251e: 22058713 addi a4,a1,544
- 2522: 9736 add a4,a4,a3
- 2524: 06900693 li a3,105
- 2528: 8fae mv t6,a1
- 252a: ded70823 sb a3,-528(a4)
- tail[0] = idx;
- 252e: 07f10823 sb t6,112(sp)
- l = (stbsp__uint32)(s - (num + 64));
- 2532: 0007869b sext.w a3,a5
- n = pr + lead[0] + tail[0] + tz;
- 2536: 06814a03 lbu s4,104(sp)
- if (pr < (stbsp__int32)l)
- 253a: fff6c713 not a4,a3
- 253e: 977d srai a4,a4,0x3f
- 2540: 8ff9 and a5,a5,a4
- n = pr + lead[0] + tail[0] + tz;
- 2542: 00fa073b addw a4,s4,a5
- 2546: 9f2d addw a4,a4,a1
- 2548: 0117063b addw a2,a4,a7
- l = (stbsp__uint32)(s - (num + 64));
- 254c: d0b6 sw a3,96(sp)
- n = pr + lead[0] + tail[0] + tz;
- 254e: 8732 mv a4,a2
- if (pr < (stbsp__int32)l)
- 2550: 2781 sext.w a5,a5
- if ((fl & STBSP__LEFTJUST) == 0) {
- 2552: 001e7513 andi a0,t3,1
- if (fw < (stbsp__int32)n)
- 2556: 835a mv t1,s6
- 2558: 00cb5363 bge s6,a2,255e <stbsp_vsprintfcb+0x1290>
- 255c: 8332 mv t1,a2
- fw -= n;
- 255e: 40e3033b subw t1,t1,a4
- pr -= l;
- 2562: 40d7873b subw a4,a5,a3
- goto scopy;
- 2566: eaaff06f j 1c10 <stbsp_vsprintfcb+0x942>
- *s++ = stbsp__comma;
- 256a: fe578fa3 sb t0,-1(a5)
- 256e: 0709 addi a4,a4,2
- if ((fl & STBSP__TRIPLET_COMMA) && (++cs == 4)) {
- 2570: 4585 li a1,1
- 2572: bde5 j 246a <stbsp_vsprintfcb+0x119c>
- lead[0] = 1;
- 2574: 678d lui a5,0x3
- 2576: 0785 addi a5,a5,1 # 3001 <stbsp_vsprintf+0x9>
- 2578: 06f11423 sh a5,104(sp)
- 257c: b4ed j 2066 <stbsp_vsprintfcb+0xd98>
- if ((f[0] != 'u') && (i64 < 0)) {
- 257e: 07500693 li a3,117
- stbsp__int64 i64 = va_arg(va, stbsp__int64);
- 2582: 000bbf03 ld t5,0(s7)
- if ((f[0] != 'u') && (i64 < 0)) {
- 2586: dcd78263 beq a5,a3,1b4a <stbsp_vsprintfcb+0x87c>
- 258a: dc0f5063 bgez t5,1b4a <stbsp_vsprintfcb+0x87c>
- fl |= STBSP__NEGATIVE;
- 258e: 08076713 ori a4,a4,128
- n64 = (stbsp__uint64)-i64;
- 2592: 41e00f33 neg t5,t5
- fl |= STBSP__NEGATIVE;
- 2596: 00070e1b sext.w t3,a4
- 259a: db0ff06f j 1b4a <stbsp_vsprintfcb+0x87c>
- lead[2] = h[0xb];
- 259e: 00b84703 lbu a4,11(a6)
- lead[0] = 2;
- 25a2: 678d lui a5,0x3
- 25a4: 0789 addi a5,a5,2 # 3002 <stbsp_vsprintf+0xa>
- 25a6: 06f11423 sh a5,104(sp)
- lead[2] = h[0xb];
- 25aa: 06e10523 sb a4,106(sp)
- 25ae: bab5 j 1f2a <stbsp_vsprintfcb+0xc5c>
- sign[0] = 1;
- 25b0: 678d lui a5,0x3
- 25b2: d0178793 addi a5,a5,-767 # 2d01 <stbsp_vsprintfcb+0x1a33>
- fl |= STBSP__NEGATIVE;
- 25b6: 080e6e13 ori t3,t3,128
- sign[0] = 1;
- 25ba: 06f11423 sh a5,104(sp)
- 25be: 468d li a3,3
- 25c0: 4a0d li s4,3
- 25c2: 4809 li a6,2
- 25c4: b899 j 1e1a <stbsp_vsprintfcb+0xb4c>
- sign[0] = 1;
- 25c6: 6709 lui a4,0x2
- 25c8: 0705 addi a4,a4,1 # 2001 <stbsp_vsprintfcb+0xd33>
- 25ca: 06e11423 sh a4,104(sp)
- 25ce: bae5 j 1fc6 <stbsp_vsprintfcb+0xcf8>
- if (((stbsp__uintptr)sn & 3) == 0)
- 25d0: 0e0780e3 beqz a5,2eb0 <stbsp_vsprintfcb+0x1be2>
- l = stbsp__strlen_limited(s, (pr >= 0) ? pr : ~0u);
- 25d4: 56fd li a3,-1
- 25d6: bcf9 j 20b4 <stbsp_vsprintfcb+0xde6>
- if (fw < (stbsp__int32)n)
- 25d8: 4305 li t1,1
- 25da: b249 j 1f5c <stbsp_vsprintfcb+0xc8e>
- pr = 6; // default is 6
- 25dc: 4899 li a7,6
- 25de: b801 j 1dee <stbsp_vsprintfcb+0xb20>
- h = (f[0] == 'A') ? hexu : hex;
- 25e0: 00004597 auipc a1,0x4
- 25e4: 48058593 addi a1,a1,1152 # 6a60 <hexu.1>
- 25e8: ff6ff06f j 1dde <stbsp_vsprintfcb+0xb10>
- h = (f[0] == 'B') ? hexu : hex;
- 25ec: 00004817 auipc a6,0x4
- 25f0: 47480813 addi a6,a6,1140 # 6a60 <hexu.1>
- 25f4: b22d j 1f1e <stbsp_vsprintfcb+0xc50>
- 25f6: 80000737 lui a4,0x80000
- 25fa: 0719 addi a4,a4,6 # ffffffff80000006 <_ZSt4cerr+0xffffffff7fff877e>
- pr = 6; // default is 6
- 25fc: 4899 li a7,6
- 25fe: e4eff06f j 1c4c <stbsp_vsprintfcb+0x97e>
- h = (f[0] == 'E') ? hexu : hex;
- 2602: 00004317 auipc t1,0x4
- 2606: 45e30313 addi t1,t1,1118 # 6a60 <hexu.1>
- 260a: e28ff06f j 1c32 <stbsp_vsprintfcb+0x964>
- 260e: 80000737 lui a4,0x80000
- 2612: 4a99 li s5,6
- 2614: 0715 addi a4,a4,5 # ffffffff80000005 <_ZSt4cerr+0xffffffff7fff877d>
- pr = 6;
- 2616: 4a19 li s4,6
- 2618: ee8ff06f j 1d00 <stbsp_vsprintfcb+0xa32>
- h = (f[0] == 'G') ? hexu : hex;
- 261c: 00004317 auipc t1,0x4
- 2620: 44430313 addi t1,t1,1092 # 6a60 <hexu.1>
- 2624: eb6ff06f j 1cda <stbsp_vsprintfcb+0xa0c>
- 2628: 7be6 ld s7,120(sp)
- if ((dp <= -4) || (dp > (stbsp__int32)n)) {
- 262a: 86c2 mv a3,a6
- while ((l > 1) && (pr) && (sn[l - 1] == '0')) {
- 262c: 8542 mv a0,a6
- if ((dp <= -4) || (dp > (stbsp__int32)n)) {
- 262e: 88d2 mv a7,s4
- while ((l > 1) && (pr) && (sn[l - 1] == '0')) {
- 2630: 8ade mv s5,s7
- if (pr > (stbsp__int32)l)
- 2632: 0005071b sext.w a4,a0
- 2636: 01175f63 bge a4,a7,2654 <stbsp_vsprintfcb+0x1386>
- pr = l - 1;
- 263a: fff5089b addiw a7,a0,-1
- tail[0] = 0;
- 263e: 06010823 sb zero,112(sp)
- if (fl & STBSP__NEGATIVE) {
- 2642: 70028c63 beqz t0,2d5a <stbsp_vsprintfcb+0x1a8c>
- sign[0] = 1;
- 2646: 670d lui a4,0x3
- 2648: d0170713 addi a4,a4,-767 # 2d01 <stbsp_vsprintfcb+0x1a33>
- 264c: 06e11423 sh a4,104(sp)
- 2650: e3aff06f j 1c8a <stbsp_vsprintfcb+0x9bc>
- else if (pr)
- 2654: fe0885e3 beqz a7,263e <stbsp_vsprintfcb+0x1370>
- --pr; // when using %e, there is one digit before the decimal
- 2658: 38fd addiw a7,a7,-1
- 265a: b7d5 j 263e <stbsp_vsprintfcb+0x1370>
- switch (f[0]) {
- 265c: 0034c783 lbu a5,3(s1)
- f += 3;
- 2660: 048d addi s1,s1,3
- 2662: e53fe06f j 14b4 <stbsp_vsprintfcb+0x1e6>
- if (!limit || *sn == 0)
- 2666: 4601 li a2,0
- 2668: 4701 li a4,0
- 266a: 4781 li a5,0
- return (stbsp__uint32)(sn - s);
- 266c: bca5 j 20e4 <stbsp_vsprintfcb+0xe16>
- pr = 1;
- 266e: 4885 li a7,1
- 2670: cf4ff06f j 1b64 <stbsp_vsprintfcb+0x896>
- *s++ = sn[0];
- 2674: 000ac703 lbu a4,0(s5)
- 2678: 0ce10023 sb a4,192(sp)
- if (pr)
- 267c: 54088563 beqz a7,2bc6 <stbsp_vsprintfcb+0x18f8>
- *s++ = stbsp__period;
- 2680: 00004617 auipc a2,0x4
- 2684: 3dc64603 lbu a2,988(a2) # 6a5c <stbsp__period>
- if ((l - 1) > (stbsp__uint32)pr)
- 2688: fff6871b addiw a4,a3,-1
- *s++ = stbsp__period;
- 268c: 0cc100a3 sb a2,193(sp)
- if ((l - 1) > (stbsp__uint32)pr)
- 2690: 0008851b sext.w a0,a7
- 2694: 0007061b sext.w a2,a4
- 2698: 52c57163 bgeu a0,a2,2bba <stbsp_vsprintfcb+0x18ec>
- l = pr + 1;
- 269c: 0018869b addiw a3,a7,1
- for (n = 1; n < l; n++)
- 26a0: 8746 mv a4,a7
- 26a2: 02071613 slli a2,a4,0x20
- 26a6: 9201 srli a2,a2,0x20
- 26a8: 0c210713 addi a4,sp,194
- 26ac: 0a85 addi s5,s5,1
- 26ae: 963a add a2,a2,a4
- *s++ = sn[n];
- 26b0: 000ac583 lbu a1,0(s5)
- 26b4: 0705 addi a4,a4,1
- for (n = 1; n < l; n++)
- 26b6: 0a85 addi s5,s5,1
- *s++ = sn[n];
- 26b8: feb70fa3 sb a1,-1(a4)
- for (n = 1; n < l; n++)
- 26bc: fec71ae3 bne a4,a2,26b0 <stbsp_vsprintfcb+0x13e2>
- tail[1] = h[0xe];
- 26c0: 00e34803 lbu a6,14(t1)
- dp -= 1;
- 26c4: fff7871b addiw a4,a5,-1
- tail[2] = '+';
- 26c8: 02b00593 li a1,43
- tail[1] = h[0xe];
- 26cc: 070108a3 sb a6,113(sp)
- if (dp < 0) {
- 26d0: 00075663 bgez a4,26dc <stbsp_vsprintfcb+0x140e>
- dp = -dp;
- 26d4: 4705 li a4,1
- 26d6: 9f1d subw a4,a4,a5
- tail[2] = '-';
- 26d8: 02d00593 li a1,45
- 26dc: 06b10923 sb a1,114(sp)
- n = (dp >= 100) ? 5 : 4;
- 26e0: 06300793 li a5,99
- 26e4: 4ee7d663 bge a5,a4,2bd0 <stbsp_vsprintfcb+0x1902>
- 26e8: 4595 li a1,5
- 26ea: 4f95 li t6,5
- 26ec: 4e95 li t4,5
- tail[n] = '0' + dp % 10;
- 26ee: 47a9 li a5,10
- dp /= 10;
- 26f0: 02f7433b divw t1,a4,a5
- --n;
- 26f4: fffe8f1b addiw t5,t4,-1
- tail[n] = '0' + dp % 10;
- 26f8: 020f1293 slli t0,t5,0x20
- 26fc: 220e8813 addi a6,t4,544
- 2700: 06010893 addi a7,sp,96
- 2704: 0202d293 srli t0,t0,0x20
- 2708: 01180eb3 add t4,a6,a7
- 270c: 22028813 addi a6,t0,544 # 3000220 <_ZSt4cerr+0x2ff8998>
- 2710: 011802b3 add t0,a6,a7
- tail[0] = (char)n;
- 2714: 07f10823 sb t6,112(sp)
- if (n <= 3)
- 2718: 4a0d li s4,3
- tail[n] = '0' + dp % 10;
- 271a: 02f7673b remw a4,a4,a5
- dp /= 10;
- 271e: 0003081b sext.w a6,t1
- tail[n] = '0' + dp % 10;
- 2722: 02f36abb remw s5,t1,a5
- 2726: 0307071b addiw a4,a4,48
- 272a: deee8823 sb a4,-528(t4)
- 272e: 030a871b addiw a4,s5,48
- 2732: dee28823 sb a4,-528(t0)
- if (n <= 3)
- 2736: 014f0a63 beq t5,s4,274a <stbsp_vsprintfcb+0x147c>
- dp /= 10;
- 273a: 02f3483b divw a6,t1,a5
- tail[n] = '0' + dp % 10;
- 273e: 02f867bb remw a5,a6,a5
- 2742: 0307879b addiw a5,a5,48
- 2746: 06f109a3 sb a5,115(sp)
- tz = pr - (l - 1);
- 274a: 2505 addiw a0,a0,1
- l = (stbsp__uint32)(s - (num + 64));
- 274c: 0c010a93 addi s5,sp,192
- cs = 1 + (3 << 24); // how many tens
- 2750: 030002b7 lui t0,0x3000
- tz = pr - (l - 1);
- 2754: 40d508bb subw a7,a0,a3
- 2758: d2c2 sw a6,100(sp)
- l = (stbsp__uint32)(s - (num + 64));
- 275a: 415607b3 sub a5,a2,s5
- cs = 1 + (3 << 24); // how many tens
- 275e: 0285 addi t0,t0,1 # 3000001 <_ZSt4cerr+0x2ff8779>
- 2760: bbc9 j 2532 <stbsp_vsprintfcb+0x1264>
- 2762: fc2e sd a1,56(sp)
- 2764: d0b2 sw a2,96(sp)
- while ((l > 1) && (pr) && (sn[l - 1] == '0')) {
- 2766: 8536 mv a0,a3
- 2768: e2cff06f j 1d94 <stbsp_vsprintfcb+0xac6>
- flt_lead:
- 276c: 4581 li a1,0
- 276e: 4f81 li t6,0
- 2770: b3c9 j 2532 <stbsp_vsprintfcb+0x1264>
- n = pr + lead[0] + tail[0] + tz;
- 2772: 06814a03 lbu s4,104(sp)
- 2776: 000a0f9b sext.w t6,s4
- 277a: b901 j 238a <stbsp_vsprintfcb+0x10bc>
- if ((f[1] == '6') && (f[2] == '4')) {
- 277c: 0024c683 lbu a3,2(s1)
- 2780: 03400713 li a4,52
- 2784: 00e68463 beq a3,a4,278c <stbsp_vsprintfcb+0x14be>
- 2788: e2bfe06f j 15b2 <stbsp_vsprintfcb+0x2e4>
- switch (f[0]) {
- 278c: 0034c783 lbu a5,3(s1)
- fl |= ((sizeof(long) == 8) ? STBSP__INTMAX : 0);
- 2790: 020e6e13 ori t3,t3,32
- f += 3;
- 2794: 048d addi s1,s1,3
- 2796: d1ffe06f j 14b4 <stbsp_vsprintfcb+0x1e6>
- if (pr < (stbsp__int32)l)
- 279a: 0006879b sext.w a5,a3
- n = pr + lead[0] + tail[0] + tz;
- 279e: 06814a03 lbu s4,104(sp)
- if (pr < (stbsp__int32)l)
- 27a2: fff7c793 not a5,a5
- 27a6: 97fd srai a5,a5,0x3f
- 27a8: 8ff5 and a5,a5,a3
- n = pr + lead[0] + tail[0] + tz;
- 27aa: 00fa063b addw a2,s4,a5
- s = (char *)sn;
- 27ae: 7ae6 ld s5,120(sp)
- n = pr + lead[0] + tail[0] + tz;
- 27b0: 8732 mv a4,a2
- if ((fl & STBSP__LEFTJUST) == 0) {
- 27b2: 001e7513 andi a0,t3,1
- if (pr < (stbsp__int32)l)
- 27b6: 2781 sext.w a5,a5
- if (fw < (stbsp__int32)n)
- 27b8: 835a mv t1,s6
- 27ba: 00cb5363 bge s6,a2,27c0 <stbsp_vsprintfcb+0x14f2>
- 27be: 8332 mv t1,a2
- fw -= n;
- 27c0: 40e3033b subw t1,t1,a4
- goto scopy;
- 27c4: 4f81 li t6,0
- pr -= l;
- 27c6: 40d7873b subw a4,a5,a3
- cs = 0;
- 27ca: 4281 li t0,0
- tz = 0;
- 27cc: 4881 li a7,0
- goto scopy;
- 27ce: c42ff06f j 1c10 <stbsp_vsprintfcb+0x942>
- cs = (int)(s - (num + 64)) + (3 << 24); // cs is how many tens
- 27d2: 415705b3 sub a1,a4,s5
- 27d6: 030002b7 lui t0,0x3000
- 27da: 00b282bb addw t0,t0,a1
- l = pr - n;
- 27de: 0008859b sext.w a1,a7
- if (pr)
- 27e2: 42088763 beqz a7,2c10 <stbsp_vsprintfcb+0x1942>
- *s++ = stbsp__period;
- 27e6: 0cca4f83 lbu t6,204(s4)
- if ((l - dp) > (stbsp__uint32)pr)
- 27ea: 41d6833b subw t1,a3,t4
- *s++ = stbsp__period;
- 27ee: 00280713 addi a4,a6,2
- 27f2: 01f800a3 sb t6,1(a6)
- if ((l - dp) > (stbsp__uint32)pr)
- 27f6: 4065ed63 bltu a1,t1,2c10 <stbsp_vsprintfcb+0x1942>
- while (n < l) {
- 27fa: 5ed57863 bgeu a0,a3,2dea <stbsp_vsprintfcb+0x1b1c>
- 27fe: 40c687bb subw a5,a3,a2
- 2802: 37fd addiw a5,a5,-1
- 2804: 1782 slli a5,a5,0x20
- 2806: 9381 srli a5,a5,0x20
- 2808: 1602 slli a2,a2,0x20
- 280a: 9201 srli a2,a2,0x20
- 280c: 0785 addi a5,a5,1
- 280e: 967a add a2,a2,t5
- 2810: 97ba add a5,a5,a4
- *s++ = sn[n];
- 2812: 00064503 lbu a0,0(a2)
- 2816: 0705 addi a4,a4,1
- while (n < l) {
- 2818: 0605 addi a2,a2,1
- *s++ = sn[n];
- 281a: fea70fa3 sb a0,-1(a4)
- while (n < l) {
- 281e: fef71ae3 bne a4,a5,2812 <stbsp_vsprintfcb+0x1544>
- tz = pr - (l - dp);
- 2822: 01d585bb addw a1,a1,t4
- 2826: 40d588bb subw a7,a1,a3
- l = (stbsp__uint32)(s - (num + 64));
- 282a: 415787b3 sub a5,a5,s5
- 282e: b99d j 24a4 <stbsp_vsprintfcb+0x11d6>
- fl |= STBSP__NEGATIVE;
- 2830: 080e6e13 ori t3,t3,128
- tail[0] = 0;
- 2834: 06010823 sb zero,112(sp)
- if (fl & STBSP__NEGATIVE) {
- 2838: b539 j 2646 <stbsp_vsprintfcb+0x1378>
- tail[0] = (char)n;
- 283a: 4799 li a5,6
- tail[n] = '0' + dp % 10;
- 283c: 06b10b23 sb a1,118(sp)
- tail[0] = (char)n;
- 2840: 06f10823 sb a5,112(sp)
- tail[n] = '0' + dp % 10;
- 2844: 4819 li a6,6
- 2846: 4f99 li t6,6
- n = (dp >= 1000) ? 6 : ((dp >= 100) ? 5 : ((dp >= 10) ? 4 : 3));
- 2848: 4599 li a1,6
- dp /= 10;
- 284a: 4f29 li t5,10
- if (n <= 3)
- 284c: 428d li t0,3
- 284e: 87b2 mv a5,a2
- dp /= 10;
- 2850: 03e7c7bb divw a5,a5,t5
- --n;
- 2854: 35fd addiw a1,a1,-1
- tail[n] = '0' + dp % 10;
- 2856: 02059613 slli a2,a1,0x20
- 285a: 9201 srli a2,a2,0x20
- 285c: 06010e93 addi t4,sp,96
- 2860: 22060613 addi a2,a2,544
- 2864: 9676 add a2,a2,t4
- 2866: 03e7eebb remw t4,a5,t5
- 286a: 030e8e9b addiw t4,t4,48
- 286e: dfd60823 sb t4,-528(a2)
- if (n <= 3)
- 2872: fc559fe3 bne a1,t0,2850 <stbsp_vsprintfcb+0x1582>
- 2876: e6aff06f j 1ee0 <stbsp_vsprintfcb+0xc12>
- *s++ = h[(n64 >> 60) & 15];
- 287a: 93f1 srli a5,a5,0x3c
- 287c: 97ae add a5,a5,a1
- 287e: 0007c303 lbu t1,0(a5)
- lead[1 + lead[0]] = '0';
- 2882: 1088 addi a0,sp,96
- 2884: 22080793 addi a5,a6,544
- 2888: 97aa add a5,a5,a0
- 288a: 03000513 li a0,48
- 288e: dea78423 sb a0,-536(a5)
- lead[2 + lead[0]] = 'x';
- 2892: 22068793 addi a5,a3,544
- 2896: 1094 addi a3,sp,96
- 2898: 96be add a3,a3,a5
- *s++ = stbsp__period;
- 289a: 00004517 auipc a0,0x4
- 289e: 1c254503 lbu a0,450(a0) # 6a5c <stbsp__period>
- lead[2 + lead[0]] = 'x';
- 28a2: 07800813 li a6,120
- sn = s;
- 28a6: 0c210793 addi a5,sp,194
- lead[2 + lead[0]] = 'x';
- 28aa: df068423 sb a6,-536(a3)
- *s++ = stbsp__period;
- 28ae: 0ca100a3 sb a0,193(sp)
- lead[0] += 2;
- 28b2: 07410423 sb s4,104(sp)
- *s++ = h[(n64 >> 60) & 15];
- 28b6: 0c610023 sb t1,192(sp)
- n64 <<= 4;
- 28ba: 0732 slli a4,a4,0xc
- sn = s;
- 28bc: fcbe sd a5,120(sp)
- n = pr;
- 28be: 0008869b sext.w a3,a7
- while (n--) {
- 28c2: 4831 li a6,12
- if (n > 13)
- 28c4: 4535 li a0,13
- tz = pr - n;
- 28c6: 40a688bb subw a7,a3,a0
- while (n--) {
- 28ca: 02081313 slli t1,a6,0x20
- 28ce: 02035313 srli t1,t1,0x20
- 28d2: 22030693 addi a3,t1,544
- 28d6: 1088 addi a0,sp,96
- 28d8: 9536 add a0,a0,a3
- 28da: e4350513 addi a0,a0,-445
- *s++ = h[(n64 >> 60) & 15];
- 28de: 03c75693 srli a3,a4,0x3c
- 28e2: 96ae add a3,a3,a1
- 28e4: 0006c683 lbu a3,0(a3)
- 28e8: 0785 addi a5,a5,1
- n64 <<= 4;
- 28ea: 0712 slli a4,a4,0x4
- *s++ = h[(n64 >> 60) & 15];
- 28ec: fed78fa3 sb a3,-1(a5)
- while (n--) {
- 28f0: fea797e3 bne a5,a0,28de <stbsp_vsprintfcb+0x1610>
- l = (int)(s - (num + 64));
- 28f4: 280d addiw a6,a6,3
- 28f6: 0008069b sext.w a3,a6
- if (pr < (stbsp__int32)l)
- 28fa: fff6c713 not a4,a3
- 28fe: 977d srai a4,a4,0x3f
- 2900: 00e87733 and a4,a6,a4
- dp = (int)(s - sn);
- 2904: 0013051b addiw a0,t1,1
- if (pr < (stbsp__int32)l)
- 2908: 0007031b sext.w t1,a4
- pr -= l;
- 290c: 4107073b subw a4,a4,a6
- 2910: d76ff06f j 1e86 <stbsp_vsprintfcb+0xbb8>
- *--s = stbsp__comma;
- 2914: 00004a17 auipc s4,0x4
- 2918: 07ca0a13 addi s4,s4,124 # 6990 <stbsp__digitpair>
- if (n64 >= 100000000) {
- 291c: 05f5e7b7 lui a5,0x5f5e
- 2920: 0ff78793 addi a5,a5,255 # 5f5e0ff <_ZSt4cerr+0x5f56877>
- n = (stbsp__uint32)(n64 % 100000000);
- 2924: 05f5e637 lui a2,0x5f5e
- *--s = stbsp__comma;
- 2928: 0cda4b83 lbu s7,205(s4)
- if (n64 >= 100000000) {
- 292c: e83e sd a5,16(sp)
- n = (stbsp__uint32)(n64 % 100000000);
- 292e: 10060793 addi a5,a2,256 # 5f5e100 <_ZSt4cerr+0x5f56878>
- l = 0;
- 2932: d082 sw zero,96(sp)
- if ((fl & STBSP__TRIPLET_COMMA) == 0) {
- 2934: 040e7813 andi a6,t3,64
- 2938: 4701 li a4,0
- 293a: 4281 li t0,0
- s = num + STBSP__NUMSZ;
- 293c: 28010a93 addi s5,sp,640
- n = (stbsp__uint32)(n64 % 100000000);
- 2940: ec3e sd a5,24(sp)
- if ((fl & STBSP__TRIPLET_COMMA) && (l++ == 3)) {
- 2942: 430d li t1,3
- n /= 10;
- 2944: 45a9 li a1,10
- while (n) {
- 2946: 4ea5 li t4,9
- *(stbsp__uint16 *)s = *(stbsp__uint16 *)&stbsp__digitpair.pair[(n % 100) * 2];
- 2948: 06400f93 li t6,100
- if (n64 >= 100000000) {
- 294c: 67c2 ld a5,16(sp)
- char *o = s - 8;
- 294e: ff8a8513 addi a0,s5,-8
- if (n64 >= 100000000) {
- 2952: 0fe7f763 bgeu a5,t5,2a40 <stbsp_vsprintfcb+0x1772>
- n = (stbsp__uint32)(n64 % 100000000);
- 2956: 6662 ld a2,24(sp)
- 2958: 02cf77b3 remu a5,t5,a2
- n64 /= 100000000;
- 295c: 02cf5f33 divu t5,t5,a2
- if ((fl & STBSP__TRIPLET_COMMA) == 0) {
- 2960: 0e080463 beqz a6,2a48 <stbsp_vsprintfcb+0x177a>
- while (n) {
- 2964: cb85 beqz a5,2994 <stbsp_vsprintfcb+0x16c6>
- *--s = stbsp__comma;
- 2966: 1afd addi s5,s5,-1
- if ((fl & STBSP__TRIPLET_COMMA) && (l++ == 3)) {
- 2968: 00671763 bne a4,t1,2976 <stbsp_vsprintfcb+0x16a8>
- --o;
- 296c: 017a8023 sb s7,0(s5)
- 2970: 157d addi a0,a0,-1
- *--s = stbsp__comma;
- 2972: 1afd addi s5,s5,-1
- l = 0;
- 2974: 4701 li a4,0
- if ((fl & STBSP__TRIPLET_COMMA) && (l++ == 3)) {
- 2976: 2705 addiw a4,a4,1
- *--s = (char)(n % 10) + '0';
- 2978: 02b7f63b remuw a2,a5,a1
- 297c: 0306061b addiw a2,a2,48
- 2980: 00ca8023 sb a2,0(s5)
- n /= 10;
- 2984: 02b7d63b divuw a2,a5,a1
- while (n) {
- 2988: 00fef563 bgeu t4,a5,2992 <stbsp_vsprintfcb+0x16c4>
- *--s = stbsp__comma;
- 298c: 1afd addi s5,s5,-1
- 298e: 87b2 mv a5,a2
- 2990: bfe1 j 2968 <stbsp_vsprintfcb+0x169a>
- while (n) {
- 2992: 4285 li t0,1
- if (n64 == 0) {
- 2994: 020f0063 beqz t5,29b4 <stbsp_vsprintfcb+0x16e6>
- while (s != o)
- 2998: fb550ae3 beq a0,s5,294c <stbsp_vsprintfcb+0x167e>
- *--s = stbsp__comma;
- 299c: 1afd addi s5,s5,-1
- if ((fl & STBSP__TRIPLET_COMMA) && (l++ == 3)) {
- 299e: 00080663 beqz a6,29aa <stbsp_vsprintfcb+0x16dc>
- 29a2: 08670863 beq a4,t1,2a32 <stbsp_vsprintfcb+0x1764>
- 29a6: 2705 addiw a4,a4,1
- 29a8: 4285 li t0,1
- *--s = '0';
- 29aa: 03000793 li a5,48
- 29ae: 00fa8023 sb a5,0(s5)
- 29b2: b7dd j 2998 <stbsp_vsprintfcb+0x16ca>
- 29b4: 00028363 beqz t0,29ba <stbsp_vsprintfcb+0x16ec>
- 29b8: d0ba sw a4,96(sp)
- if ((s[0] == '0') && (s != (num + STBSP__NUMSZ)))
- 29ba: 000ac703 lbu a4,0(s5)
- 29be: 03000793 li a5,48
- 29c2: 34f70b63 beq a4,a5,2d18 <stbsp_vsprintfcb+0x1a4a>
- l = (stbsp__uint32)((num + STBSP__NUMSZ) - s);
- 29c6: 051c addi a5,sp,640
- 29c8: 415786bb subw a3,a5,s5
- tail[0] = 0;
- 29cc: 06010823 sb zero,112(sp)
- if (fl & STBSP__NEGATIVE) {
- 29d0: 080e7713 andi a4,t3,128
- 29d4: 87f2 mv a5,t3
- 29d6: 32070863 beqz a4,2d06 <stbsp_vsprintfcb+0x1a38>
- 29da: 678d lui a5,0x3
- 29dc: d017879b addiw a5,a5,-767 # 2d01 <stbsp_vsprintfcb+0x1a33>
- sign[0] = 1;
- 29e0: 06f11423 sh a5,104(sp)
- 29e4: 4705 li a4,1
- 29e6: 4a05 li s4,1
- l = (stbsp__uint32)((num + STBSP__NUMSZ) - s);
- 29e8: d0b6 sw a3,96(sp)
- if (l == 0) {
- 29ea: 30068163 beqz a3,2cec <stbsp_vsprintfcb+0x1a1e>
- cs = l + (3 << 24);
- 29ee: 030002b7 lui t0,0x3000
- 29f2: 00d282bb addw t0,t0,a3
- if (pr < (stbsp__int32)l)
- 29f6: 0006861b sext.w a2,a3
- if (pr < 0)
- 29fa: fff8c793 not a5,a7
- 29fe: 97fd srai a5,a5,0x3f
- if (pr < (stbsp__int32)l)
- 2a00: 00f8f7b3 and a5,a7,a5
- 2a04: 0007859b sext.w a1,a5
- 2a08: 00c5d363 bge a1,a2,2a0e <stbsp_vsprintfcb+0x1740>
- 2a0c: 87b2 mv a5,a2
- n = pr + lead[0] + tail[0] + tz;
- 2a0e: 00f7063b addw a2,a4,a5
- 2a12: 8732 mv a4,a2
- if (pr < (stbsp__int32)l)
- 2a14: 2781 sext.w a5,a5
- if ((fl & STBSP__LEFTJUST) == 0) {
- 2a16: 001e7513 andi a0,t3,1
- if (fw < (stbsp__int32)n)
- 2a1a: 835a mv t1,s6
- 2a1c: 00cb5363 bge s6,a2,2a22 <stbsp_vsprintfcb+0x1754>
- 2a20: 8332 mv t1,a2
- fw -= n;
- 2a22: 40e3033b subw t1,t1,a4
- scopy:
- 2a26: 4f81 li t6,0
- pr -= l;
- 2a28: 40d7873b subw a4,a5,a3
- tz = 0;
- 2a2c: 4881 li a7,0
- scopy:
- 2a2e: 9e2ff06f j 1c10 <stbsp_vsprintfcb+0x942>
- *--s = stbsp__comma;
- 2a32: 87de mv a5,s7
- --o;
- 2a34: 157d addi a0,a0,-1
- l = 0;
- 2a36: 4701 li a4,0
- --o;
- 2a38: 4285 li t0,1
- 2a3a: 00fa8023 sb a5,0(s5)
- 2a3e: bfa9 j 2998 <stbsp_vsprintfcb+0x16ca>
- n = (stbsp__uint32)n64;
- 2a40: 000f079b sext.w a5,t5
- n64 = 0;
- 2a44: 4f01 li t5,0
- 2a46: bf29 j 2960 <stbsp_vsprintfcb+0x1692>
- 2a48: f046 sd a7,32(sp)
- *(stbsp__uint16 *)s = *(stbsp__uint16 *)&stbsp__digitpair.pair[(n % 100) * 2];
- 2a4a: 03f7f63b remuw a2,a5,t6
- s -= 2;
- 2a4e: 1af9 addi s5,s5,-2
- *(stbsp__uint16 *)s = *(stbsp__uint16 *)&stbsp__digitpair.pair[(n % 100) * 2];
- 2a50: 0007889b sext.w a7,a5
- 2a54: 2605 addiw a2,a2,1
- 2a56: 0016161b slliw a2,a2,0x1
- 2a5a: 1602 slli a2,a2,0x20
- 2a5c: 9201 srli a2,a2,0x20
- 2a5e: 9652 add a2,a2,s4
- 2a60: 00065603 lhu a2,0(a2)
- n /= 100;
- 2a64: 03f7d7bb divuw a5,a5,t6
- *(stbsp__uint16 *)s = *(stbsp__uint16 *)&stbsp__digitpair.pair[(n % 100) * 2];
- 2a68: 00ca9023 sh a2,0(s5)
- } while (n);
- 2a6c: 06300613 li a2,99
- 2a70: fd166de3 bltu a2,a7,2a4a <stbsp_vsprintfcb+0x177c>
- 2a74: 7882 ld a7,32(sp)
- if (n64 == 0) {
- 2a76: f20f11e3 bnez t5,2998 <stbsp_vsprintfcb+0x16ca>
- 2a7a: bf2d j 29b4 <stbsp_vsprintfcb+0x16e6>
- *(stbsp__uint32 *)bf = 0x20202020;
- 2a7c: 20202b37 lui s6,0x20202
- stbsp__cb_buf_clamp(i, fw);
- 2a80: 854a mv a0,s2
- *bf++ = ' ';
- 2a82: 02000a93 li s5,32
- *(stbsp__uint32 *)bf = 0x20202020;
- 2a86: 020b0b13 addi s6,s6,32 # 20202020 <_ZSt4cerr+0x201fa798>
- stbsp__chk_cb_buf(1);
- 2a8a: 1fe00a13 li s4,510
- stbsp__cb_buf_clamp(i, fw);
- 2a8e: 20000b93 li s7,512
- 2a92: 891a mv s2,t1
- 2a94: 0a098063 beqz s3,2b34 <stbsp_vsprintfcb+0x1866>
- 2a98: 40a40633 sub a2,s0,a0
- 2a9c: 40cb87bb subw a5,s7,a2
- 2aa0: 873e mv a4,a5
- 2aa2: 00f95363 bge s2,a5,2aa8 <stbsp_vsprintfcb+0x17da>
- 2aa6: 874a mv a4,s2
- 2aa8: 0007079b sext.w a5,a4
- fw -= i;
- 2aac: 40e9093b subw s2,s2,a4
- while (i) {
- 2ab0: e799 bnez a5,2abe <stbsp_vsprintfcb+0x17f0>
- 2ab2: a281 j 2bf2 <stbsp_vsprintfcb+0x1924>
- *bf++ = ' ';
- 2ab4: 01540023 sb s5,0(s0)
- --i;
- 2ab8: 37fd addiw a5,a5,-1
- *bf++ = ' ';
- 2aba: 0405 addi s0,s0,1
- while (i) {
- 2abc: cba1 beqz a5,2b0c <stbsp_vsprintfcb+0x183e>
- if ((((stbsp__uintptr)bf) & 3) == 0)
- 2abe: 00347713 andi a4,s0,3
- 2ac2: fb6d bnez a4,2ab4 <stbsp_vsprintfcb+0x17e6>
- while (i >= 4) {
- 2ac4: 470d li a4,3
- 2ac6: 40f75363 bge a4,a5,2ecc <stbsp_vsprintfcb+0x1bfe>
- 2aca: ffc7869b addiw a3,a5,-4
- 2ace: 0026d79b srliw a5,a3,0x2
- 2ad2: 0017871b addiw a4,a5,1
- 2ad6: 070a slli a4,a4,0x2
- 2ad8: 9722 add a4,a4,s0
- *(stbsp__uint32 *)bf = 0x20202020;
- 2ada: 01642023 sw s6,0(s0)
- bf += 4;
- 2ade: 0411 addi s0,s0,4
- while (i >= 4) {
- 2ae0: fee41de3 bne s0,a4,2ada <stbsp_vsprintfcb+0x180c>
- 2ae4: 0027979b slliw a5,a5,0x2
- 2ae8: 40f687bb subw a5,a3,a5
- while (i--)
- 2aec: fff7869b addiw a3,a5,-1
- 2af0: cf91 beqz a5,2b0c <stbsp_vsprintfcb+0x183e>
- 2af2: 9fa1 addw a5,a5,s0
- *bf++ = ' ';
- 2af4: 0705 addi a4,a4,1
- while (i--)
- 2af6: 0007061b sext.w a2,a4
- *bf++ = ' ';
- 2afa: ff570fa3 sb s5,-1(a4)
- while (i--)
- 2afe: fec79be3 bne a5,a2,2af4 <stbsp_vsprintfcb+0x1826>
- 2b02: 2685 addiw a3,a3,1
- 2b04: 02069793 slli a5,a3,0x20
- 2b08: 9381 srli a5,a5,0x20
- 2b0a: 943e add s0,s0,a5
- stbsp__chk_cb_buf(1);
- 2b0c: 00098f63 beqz s3,2b2a <stbsp_vsprintfcb+0x185c>
- 2b10: 40a4063b subw a2,s0,a0
- 2b14: 00ca5b63 bge s4,a2,2b2a <stbsp_vsprintfcb+0x185c>
- 2b18: 65a2 ld a1,8(sp)
- 2b1a: e81e sd t2,16(sp)
- 2b1c: 00cd0d3b addw s10,s10,a2
- 2b20: 9982 jalr s3
- 2b22: 80050be3 beqz a0,2338 <stbsp_vsprintfcb+0x106a>
- 2b26: 63c2 ld t2,16(sp)
- 2b28: 842a mv s0,a0
- while (fw) {
- 2b2a: f60915e3 bnez s2,2a94 <stbsp_vsprintfcb+0x17c6>
- 2b2e: 892a mv s2,a0
- 2b30: f21fe06f j 1a50 <stbsp_vsprintfcb+0x782>
- stbsp__cb_buf_clamp(i, fw);
- 2b34: 87ca mv a5,s2
- fw -= i;
- 2b36: 4901 li s2,0
- if ((((stbsp__uintptr)bf) & 3) == 0)
- 2b38: b759 j 2abe <stbsp_vsprintfcb+0x17f0>
- } else if (fl & STBSP__LEADINGPLUS) {
- 2b3a: 002e7713 andi a4,t3,2
- 2b3e: 94070663 beqz a4,1c8a <stbsp_vsprintfcb+0x9bc>
- sign[0] = 1;
- 2b42: 670d lui a4,0x3
- 2b44: b0170713 addi a4,a4,-1279 # 2b01 <stbsp_vsprintfcb+0x1833>
- 2b48: 06e11423 sh a4,104(sp)
- 2b4c: 93eff06f j 1c8a <stbsp_vsprintfcb+0x9bc>
- if (((stbsp__uintptr)sn & 3) == 0)
- 2b50: 87d6 mv a5,s5
- while (limit >= 4) {
- 2b52: 470d li a4,3
- 2b54: 22d77763 bgeu a4,a3,2d82 <stbsp_vsprintfcb+0x1ab4>
- if ((v - 0x01010101) & (~v) & 0x80808080UL)
- 2b58: feff05b7 lui a1,0xfeff0
- 2b5c: 80808637 lui a2,0x80808
- 2b60: eff5859b addiw a1,a1,-257 # fffffffffefefeff <_ZSt4cerr+0xfffffffffefe8677>
- 2b64: 08060613 addi a2,a2,128 # ffffffff80808080 <_ZSt4cerr+0xffffffff808007f8>
- while (limit >= 4) {
- 2b68: 480d li a6,3
- 2b6a: a029 j 2b74 <stbsp_vsprintfcb+0x18a6>
- limit -= 4;
- 2b6c: 36f1 addiw a3,a3,-4
- sn += 4;
- 2b6e: 0791 addi a5,a5,4
- while (limit >= 4) {
- 2b70: 20d87963 bgeu a6,a3,2d82 <stbsp_vsprintfcb+0x1ab4>
- stbsp__uint32 v = *(stbsp__uint32 *)sn;
- 2b74: 4398 lw a4,0(a5)
- if ((v - 0x01010101) & (~v) & 0x80808080UL)
- 2b76: 00b7053b addw a0,a4,a1
- 2b7a: fff74713 not a4,a4
- 2b7e: 8f69 and a4,a4,a0
- 2b80: 8f71 and a4,a4,a2
- 2b82: 2701 sext.w a4,a4
- 2b84: d765 beqz a4,2b6c <stbsp_vsprintfcb+0x189e>
- 2b86: 02069713 slli a4,a3,0x20
- 2b8a: 9301 srli a4,a4,0x20
- 2b8c: 973e add a4,a4,a5
- 2b8e: a021 j 2b96 <stbsp_vsprintfcb+0x18c8>
- ++sn;
- 2b90: 0785 addi a5,a5,1
- while (limit && *sn) {
- 2b92: 00e78663 beq a5,a4,2b9e <stbsp_vsprintfcb+0x18d0>
- 2b96: 0007c683 lbu a3,0(a5)
- 2b9a: fafd bnez a3,2b90 <stbsp_vsprintfcb+0x18c2>
- 2b9c: 873e mv a4,a5
- return (stbsp__uint32)(sn - s);
- 2b9e: 41570733 sub a4,a4,s5
- 2ba2: 0007069b sext.w a3,a4
- if (pr < (stbsp__int32)l)
- 2ba6: fff6c793 not a5,a3
- 2baa: 97fd srai a5,a5,0x3f
- 2bac: 8f7d and a4,a4,a5
- 2bae: 0007079b sext.w a5,a4
- n = pr + lead[0] + tail[0] + tz;
- 2bb2: 863e mv a2,a5
- pr -= l;
- 2bb4: 9f15 subw a4,a4,a3
- return (stbsp__uint32)(sn - s);
- 2bb6: d2eff06f j 20e4 <stbsp_vsprintfcb+0xe16>
- for (n = 1; n < l; n++)
- 2bba: 4605 li a2,1
- 2bbc: aed663e3 bltu a2,a3,26a2 <stbsp_vsprintfcb+0x13d4>
- 2bc0: 0c210613 addi a2,sp,194
- 2bc4: bcf5 j 26c0 <stbsp_vsprintfcb+0x13f2>
- l = pr + 1;
- 2bc6: 4685 li a3,1
- if ((l - 1) > (stbsp__uint32)pr)
- 2bc8: 4501 li a0,0
- *s++ = sn[0];
- 2bca: 0c110613 addi a2,sp,193
- 2bce: bccd j 26c0 <stbsp_vsprintfcb+0x13f2>
- 2bd0: 4591 li a1,4
- 2bd2: 4f91 li t6,4
- n = (dp >= 100) ? 5 : 4;
- 2bd4: 4e91 li t4,4
- 2bd6: be21 j 26ee <stbsp_vsprintfcb+0x1420>
- 2bd8: 4a85 li s5,1
- 2bda: 80000737 lui a4,0x80000
- pr = 1; // default is 6
- 2bde: 4a05 li s4,1
- 2be0: 920ff06f j 1d00 <stbsp_vsprintfcb+0xa32>
- dp = (n64) ? -1022 : 0;
- 2be4: 4601 li a2,0
- 2be6: c119 beqz a0,2bec <stbsp_vsprintfcb+0x191e>
- 2be8: c0200613 li a2,-1022
- *bits = b & ((((stbsp__uint64)1) << 52) - 1);
- 2bec: 872a mv a4,a0
- 2bee: a3aff06f j 1e28 <stbsp_vsprintfcb+0xb5a>
- stbsp__chk_cb_buf(1);
- 2bf2: 2601 sext.w a2,a2
- 2bf4: 1fe00793 li a5,510
- 2bf8: f2c7c0e3 blt a5,a2,2b18 <stbsp_vsprintfcb+0x184a>
- 2bfc: bd61 j 2a94 <stbsp_vsprintfcb+0x17c6>
- tail[0] = (char)n;
- 2bfe: 4795 li a5,5
- tail[n] = '0' + dp % 10;
- 2c00: 06b10aa3 sb a1,117(sp)
- tail[0] = (char)n;
- 2c04: 06f10823 sb a5,112(sp)
- tail[n] = '0' + dp % 10;
- 2c08: 4815 li a6,5
- 2c0a: 4f95 li t6,5
- n = (dp >= 1000) ? 6 : ((dp >= 100) ? 5 : ((dp >= 10) ? 4 : 3));
- 2c0c: 4595 li a1,5
- 2c0e: b935 j 284a <stbsp_vsprintfcb+0x157c>
- l = pr + dp;
- 2c10: 011786bb addw a3,a5,a7
- 2c14: d0b6 sw a3,96(sp)
- 2c16: b6d5 j 27fa <stbsp_vsprintfcb+0x152c>
- s = (char *)"null";
- 2c18: 00002a97 auipc s5,0x2
- 2c1c: 4b8a8a93 addi s5,s5,1208 # 50d0 <_GLOBAL__sub_I__ZSt3cin+0xe0>
- 2c20: c80ff06f j 20a0 <stbsp_vsprintfcb+0xdd2>
- } else if (fl & STBSP__LEADINGPLUS) {
- 2c24: 002e7793 andi a5,t3,2
- 2c28: 1c079c63 bnez a5,2e00 <stbsp_vsprintfcb+0x1b32>
- sign[0] = 0;
- 2c2c: 4689 li a3,2
- 2c2e: 4a09 li s4,2
- 2c30: 4805 li a6,1
- 2c32: 9e8ff06f j 1e1a <stbsp_vsprintfcb+0xb4c>
- sign[0] = 1;
- 2c36: 670d lui a4,0x3
- 2c38: b0170713 addi a4,a4,-1279 # 2b01 <stbsp_vsprintfcb+0x1833>
- 2c3c: 06e11423 sh a4,104(sp)
- 2c40: b86ff06f j 1fc6 <stbsp_vsprintfcb+0xcf8>
- pr = 0;
- 2c44: 4881 li a7,0
- 2c46: f1ffe06f j 1b64 <stbsp_vsprintfcb+0x896>
- *s++ = '0';
- 2c4a: 03000713 li a4,48
- 2c4e: 0ce10023 sb a4,192(sp)
- if (pr)
- 2c52: 1a088c63 beqz a7,2e0a <stbsp_vsprintfcb+0x1b3c>
- *s++ = stbsp__period;
- 2c56: 00004717 auipc a4,0x4
- 2c5a: e0674703 lbu a4,-506(a4) # 6a5c <stbsp__period>
- n = -dp;
- 2c5e: 40f007bb negw a5,a5
- *s++ = stbsp__period;
- 2c62: 0ce100a3 sb a4,193(sp)
- if ((stbsp__int32)n > pr)
- 2c66: 0007871b sext.w a4,a5
- 2c6a: 00e8d363 bge a7,a4,2c70 <stbsp_vsprintfcb+0x19a2>
- 2c6e: 87c6 mv a5,a7
- 2c70: 0007871b sext.w a4,a5
- if ((stbsp__int32)(l + n) > pr)
- 2c74: 00d7833b addw t1,a5,a3
- 2c78: 883a mv a6,a4
- while (i) {
- 2c7a: 0c210793 addi a5,sp,194
- *s++ = '0';
- 2c7e: 03000513 li a0,48
- while (i) {
- 2c82: e711 bnez a4,2c8e <stbsp_vsprintfcb+0x19c0>
- 2c84: a271 j 2e10 <stbsp_vsprintfcb+0x1b42>
- if ((((stbsp__uintptr)s) & 3) == 0)
- 2c86: 0037f613 andi a2,a5,3
- 2c8a: 18060563 beqz a2,2e14 <stbsp_vsprintfcb+0x1b46>
- *s++ = '0';
- 2c8e: 85ba mv a1,a4
- 2c90: 00a78023 sb a0,0(a5)
- --i;
- 2c94: 377d addiw a4,a4,-1
- *s++ = '0';
- 2c96: 0785 addi a5,a5,1
- while (i) {
- 2c98: f77d bnez a4,2c86 <stbsp_vsprintfcb+0x19b8>
- if ((stbsp__int32)(l + n) > pr)
- 2c9a: 0003071b sext.w a4,t1
- 2c9e: 4108863b subw a2,a7,a6
- 2ca2: 00e8d563 bge a7,a4,2cac <stbsp_vsprintfcb+0x19de>
- l = pr - n;
- 2ca6: 0006069b sext.w a3,a2
- 2caa: d0b2 sw a2,96(sp)
- while (i) {
- 2cac: c68d beqz a3,2cd6 <stbsp_vsprintfcb+0x1a08>
- 2cae: 7566 ld a0,120(sp)
- 2cb0: 02069813 slli a6,a3,0x20
- 2cb4: 02085813 srli a6,a6,0x20
- 2cb8: 01078eb3 add t4,a5,a6
- 2cbc: 85aa mv a1,a0
- 2cbe: 873e mv a4,a5
- *s++ = *sn++;
- 2cc0: 0005c883 lbu a7,0(a1)
- 2cc4: 0705 addi a4,a4,1
- while (i) {
- 2cc6: 0585 addi a1,a1,1
- *s++ = *sn++;
- 2cc8: ff170fa3 sb a7,-1(a4)
- while (i) {
- 2ccc: ffd71ae3 bne a4,t4,2cc0 <stbsp_vsprintfcb+0x19f2>
- 2cd0: 9542 add a0,a0,a6
- 2cd2: 97c2 add a5,a5,a6
- 2cd4: fcaa sd a0,120(sp)
- l = (stbsp__uint32)(s - (num + 64));
- 2cd6: 0c010a93 addi s5,sp,192
- cs = 1 + (3 << 24); // how many tens did we write (for commas below)
- 2cda: 030002b7 lui t0,0x3000
- tz = pr - (n + l);
- 2cde: 40d608bb subw a7,a2,a3
- l = (stbsp__uint32)(s - (num + 64));
- 2ce2: 415787b3 sub a5,a5,s5
- cs = 1 + (3 << 24); // how many tens did we write (for commas below)
- 2ce6: 0285 addi t0,t0,1 # 3000001 <_ZSt4cerr+0x2ff8779>
- 2ce8: fbcff06f j 24a4 <stbsp_vsprintfcb+0x11d6>
- *--s = '0';
- 2cec: 03000793 li a5,48
- 2cf0: fefa8fa3 sb a5,-1(s5)
- l = 1;
- 2cf4: 030002b7 lui t0,0x3000
- 2cf8: 4785 li a5,1
- 2cfa: d0be sw a5,96(sp)
- *--s = '0';
- 2cfc: 1afd addi s5,s5,-1
- l = 1;
- 2cfe: 4605 li a2,1
- 2d00: 0285 addi t0,t0,1 # 3000001 <_ZSt4cerr+0x2ff8779>
- 2d02: 4685 li a3,1
- 2d04: b9dd j 29fa <stbsp_vsprintfcb+0x172c>
- } else if (fl & STBSP__LEADINGSPACE) {
- 2d06: 004e7713 andi a4,t3,4
- 2d0a: e74d bnez a4,2db4 <stbsp_vsprintfcb+0x1ae6>
- } else if (fl & STBSP__LEADINGPLUS) {
- 2d0c: 8b89 andi a5,a5,2
- 2d0e: efd9 bnez a5,2dac <stbsp_vsprintfcb+0x1ade>
- sign[0] = 0;
- 2d10: 06010423 sb zero,104(sp)
- 2d14: 4a01 li s4,0
- 2d16: b9c9 j 29e8 <stbsp_vsprintfcb+0x171a>
- if ((s[0] == '0') && (s != (num + STBSP__NUMSZ)))
- 2d18: 051c addi a5,sp,640
- 2d1a: cafa89e3 beq s5,a5,29cc <stbsp_vsprintfcb+0x16fe>
- ++s;
- 2d1e: 0a85 addi s5,s5,1
- l = (stbsp__uint32)((num + STBSP__NUMSZ) - s);
- 2d20: 415786bb subw a3,a5,s5
- 2d24: b165 j 29cc <stbsp_vsprintfcb+0x16fe>
- n = dp - n;
- 2d26: 40ce87bb subw a5,t4,a2
- if ((fl & STBSP__TRIPLET_COMMA) == 0) {
- 2d2a: 12030e63 beqz t1,2e66 <stbsp_vsprintfcb+0x1b98>
- if ((fl & STBSP__TRIPLET_COMMA) && (++cs == 4)) {
- 2d2e: 4511 li a0,4
- 2d30: 03000613 li a2,48
- *s++ = stbsp__comma;
- 2d34: 00170693 addi a3,a4,1
- if ((fl & STBSP__TRIPLET_COMMA) && (++cs == 4)) {
- 2d38: 00030563 beqz t1,2d42 <stbsp_vsprintfcb+0x1a74>
- 2d3c: 2585 addiw a1,a1,1
- 2d3e: 00a58963 beq a1,a0,2d50 <stbsp_vsprintfcb+0x1a82>
- 2d42: 8736 mv a4,a3
- --n;
- 2d44: 37fd addiw a5,a5,-1
- 2d46: fec70fa3 sb a2,-1(a4)
- while (n) {
- 2d4a: f7ed bnez a5,2d34 <stbsp_vsprintfcb+0x1a66>
- 2d4c: f38ff06f j 2484 <stbsp_vsprintfcb+0x11b6>
- 2d50: fe568fa3 sb t0,-1(a3)
- *s++ = stbsp__comma;
- 2d54: 0709 addi a4,a4,2
- if ((fl & STBSP__TRIPLET_COMMA) && (++cs == 4)) {
- 2d56: 4585 li a1,1
- 2d58: b7f5 j 2d44 <stbsp_vsprintfcb+0x1a76>
- sign[0] = 0;
- 2d5a: 06010423 sb zero,104(sp)
- 2d5e: f1dfe06f j 1c7a <stbsp_vsprintfcb+0x9ac>
- tail[idx + 1] = "_kMGT"[fl >> 24];
- 2d62: 00002697 auipc a3,0x2
- 2d66: 37e68693 addi a3,a3,894 # 50e0 <_GLOBAL__sub_I__ZSt3cin+0xf0>
- 2d6a: 9736 add a4,a4,a3
- 2d6c: 00074683 lbu a3,0(a4)
- 2d70: 1088 addi a0,sp,96
- 2d72: 22060713 addi a4,a2,544
- 2d76: 972a add a4,a4,a0
- 2d78: ded70823 sb a3,-528(a4)
- idx++;
- 2d7c: 8fb2 mv t6,a2
- 2d7e: fb0ff06f j 252e <stbsp_vsprintfcb+0x1260>
- while (limit && *sn) {
- 2d82: e00692e3 bnez a3,2b86 <stbsp_vsprintfcb+0x18b8>
- 2d86: bd19 j 2b9c <stbsp_vsprintfcb+0x18ce>
- pr = (dp < (stbsp__int32)l) ? l - dp : 0;
- 2d88: 0008071b sext.w a4,a6
- 2d8c: 86c2 mv a3,a6
- 2d8e: 88d2 mv a7,s4
- pr = -dp + ((pr > (stbsp__int32)l) ? (stbsp__int32) l : pr);
- 2d90: 863a mv a2,a4
- 2d92: 00e8d363 bge a7,a4,2d98 <stbsp_vsprintfcb+0x1aca>
- 2d96: 8646 mv a2,a7
- 2d98: 40f608bb subw a7,a2,a5
- 2d9c: 814ff06f j 1db0 <stbsp_vsprintfcb+0xae2>
- divisor = 1000.0f;
- 2da0: 00003797 auipc a5,0x3
- 2da4: ae07b787 fld fa5,-1312(a5) # 5880 <STDIN_FD+0x28>
- 2da8: dd5fe06f j 1b7c <stbsp_vsprintfcb+0x8ae>
- 2dac: 678d lui a5,0x3
- 2dae: b017879b addiw a5,a5,-1279 # 2b01 <stbsp_vsprintfcb+0x1833>
- 2db2: b13d j 29e0 <stbsp_vsprintfcb+0x1712>
- 2db4: 6789 lui a5,0x2
- 2db6: 2785 addiw a5,a5,1 # 2001 <stbsp_vsprintfcb+0xd33>
- 2db8: b125 j 29e0 <stbsp_vsprintfcb+0x1712>
- *s++ = stbsp__period;
- 2dba: 00004517 auipc a0,0x4
- 2dbe: ca254503 lbu a0,-862(a0) # 6a5c <stbsp__period>
- sn = s;
- 2dc2: 0c210793 addi a5,sp,194
- n = pr;
- 2dc6: 0008869b sext.w a3,a7
- *s++ = stbsp__period;
- 2dca: 0ca100a3 sb a0,193(sp)
- sn = s;
- 2dce: fcbe sd a5,120(sp)
- if (n > 13)
- 2dd0: 4535 li a0,13
- n64 <<= 4;
- 2dd2: 0712 slli a4,a4,0x4
- if (n > 13)
- 2dd4: 8836 mv a6,a3
- 2dd6: 00d57363 bgeu a0,a3,2ddc <stbsp_vsprintfcb+0x1b0e>
- 2dda: 4835 li a6,13
- 2ddc: 0008051b sext.w a0,a6
- while (n--) {
- 2de0: 387d addiw a6,a6,-1
- if (pr > (stbsp__int32)n)
- 2de2: af1542e3 blt a0,a7,28c6 <stbsp_vsprintfcb+0x15f8>
- tz = 0;
- 2de6: 4881 li a7,0
- 2de8: b4cd j 28ca <stbsp_vsprintfcb+0x15fc>
- while (n < l) {
- 2dea: 87ba mv a5,a4
- 2dec: bc1d j 2822 <stbsp_vsprintfcb+0x1554>
- tail[0] = (char)n;
- 2dee: 478d li a5,3
- 2df0: 06f10823 sb a5,112(sp)
- tail[n] = '0' + dp % 10;
- 2df4: 06b109a3 sb a1,115(sp)
- 2df8: 480d li a6,3
- 2dfa: 4f8d li t6,3
- 2dfc: 8e4ff06f j 1ee0 <stbsp_vsprintfcb+0xc12>
- 2e00: 678d lui a5,0x3
- 2e02: b017879b addiw a5,a5,-1279 # 2b01 <stbsp_vsprintfcb+0x1833>
- 2e06: 80aff06f j 1e10 <stbsp_vsprintfcb+0xb42>
- if (pr)
- 2e0a: 8336 mv t1,a3
- *s++ = '0';
- 2e0c: 0c110793 addi a5,sp,193
- while (i) {
- 2e10: 4801 li a6,0
- 2e12: b561 j 2c9a <stbsp_vsprintfcb+0x19cc>
- while (i >= 4) {
- 2e14: 460d li a2,3
- 2e16: 04e65663 bge a2,a4,2e62 <stbsp_vsprintfcb+0x1b94>
- 2e1a: ffb5871b addiw a4,a1,-5
- 2e1e: 0027559b srliw a1,a4,0x2
- 2e22: 0015861b addiw a2,a1,1
- 2e26: 060a slli a2,a2,0x2
- *(stbsp__uint32 *)s = 0x30303030;
- 2e28: 30303537 lui a0,0x30303
- 2e2c: 963e add a2,a2,a5
- 2e2e: 03050513 addi a0,a0,48 # 30303030 <_ZSt4cerr+0x302fb7a8>
- 2e32: c388 sw a0,0(a5)
- s += 4;
- 2e34: 0791 addi a5,a5,4
- while (i >= 4) {
- 2e36: fef61ee3 bne a2,a5,2e32 <stbsp_vsprintfcb+0x1b64>
- 2e3a: 0025959b slliw a1,a1,0x2
- 2e3e: 9f0d subw a4,a4,a1
- while (i) {
- 2e40: e4070de3 beqz a4,2c9a <stbsp_vsprintfcb+0x19cc>
- *s++ = '0';
- 2e44: 03000513 li a0,48
- while (i) {
- 2e48: 00f705bb addw a1,a4,a5
- *s++ = '0';
- 2e4c: 0605 addi a2,a2,1
- while (i) {
- 2e4e: 00060e9b sext.w t4,a2
- *s++ = '0';
- 2e52: fea60fa3 sb a0,-1(a2)
- while (i) {
- 2e56: ffd59be3 bne a1,t4,2e4c <stbsp_vsprintfcb+0x1b7e>
- 2e5a: 1702 slli a4,a4,0x20
- 2e5c: 9301 srli a4,a4,0x20
- 2e5e: 97ba add a5,a5,a4
- 2e60: bd2d j 2c9a <stbsp_vsprintfcb+0x19cc>
- while (i >= 4) {
- 2e62: 863e mv a2,a5
- 2e64: b7c5 j 2e44 <stbsp_vsprintfcb+0x1b76>
- if ((((stbsp__uintptr)s) & 3) == 0)
- 2e66: 00377693 andi a3,a4,3
- 2e6a: ce81 beqz a3,2e82 <stbsp_vsprintfcb+0x1bb4>
- *s++ = '0';
- 2e6c: 03000693 li a3,48
- 2e70: 00d70023 sb a3,0(a4)
- --n;
- 2e74: 37fd addiw a5,a5,-1
- *s++ = '0';
- 2e76: 0705 addi a4,a4,1
- while (n) {
- 2e78: e0078663 beqz a5,2484 <stbsp_vsprintfcb+0x11b6>
- if ((((stbsp__uintptr)s) & 3) == 0)
- 2e7c: 00377613 andi a2,a4,3
- 2e80: fa65 bnez a2,2e70 <stbsp_vsprintfcb+0x1ba2>
- while (n >= 4) {
- 2e82: 468d li a3,3
- 2e84: eaf6f5e3 bgeu a3,a5,2d2e <stbsp_vsprintfcb+0x1a60>
- 2e88: ffc7869b addiw a3,a5,-4
- 2e8c: 0026d69b srliw a3,a3,0x2
- 2e90: 2685 addiw a3,a3,1
- 2e92: 068a slli a3,a3,0x2
- *(stbsp__uint32 *)s = 0x30303030;
- 2e94: 30303637 lui a2,0x30303
- 2e98: 96ba add a3,a3,a4
- 2e9a: 03060613 addi a2,a2,48 # 30303030 <_ZSt4cerr+0x302fb7a8>
- 2e9e: c310 sw a2,0(a4)
- s += 4;
- 2ea0: 0711 addi a4,a4,4
- while (n >= 4) {
- 2ea2: fed71ee3 bne a4,a3,2e9e <stbsp_vsprintfcb+0x1bd0>
- 2ea6: 8b8d andi a5,a5,3
- while (n) {
- 2ea8: e80793e3 bnez a5,2d2e <stbsp_vsprintfcb+0x1a60>
- 2eac: dd8ff06f j 2484 <stbsp_vsprintfcb+0x11b6>
- if (((stbsp__uintptr)sn & 3) == 0)
- 2eb0: 87d6 mv a5,s5
- l = stbsp__strlen_limited(s, (pr >= 0) ? pr : ~0u);
- 2eb2: 56fd li a3,-1
- 2eb4: b155 j 2b58 <stbsp_vsprintfcb+0x188a>
- if ((dp <= -4) || (dp > (stbsp__int32)n)) {
- 2eb6: 5775 li a4,-3
- 2eb8: 00e7ce63 blt a5,a4,2ed4 <stbsp_vsprintfcb+0x1c06>
- 2ebc: f6fa4663 blt s4,a5,2628 <stbsp_vsprintfcb+0x135a>
- if (dp > 0) {
- 2ec0: ecf054e3 blez a5,2d88 <stbsp_vsprintfcb+0x1aba>
- 2ec4: 86c2 mv a3,a6
- pr = (dp < (stbsp__int32)l) ? l - dp : 0;
- 2ec6: 4881 li a7,0
- 2ec8: ee9fe06f j 1db0 <stbsp_vsprintfcb+0xae2>
- while (i--)
- 2ecc: fff7869b addiw a3,a5,-1
- 2ed0: 8722 mv a4,s0
- 2ed2: b105 j 2af2 <stbsp_vsprintfcb+0x1824>
- if (pr > (stbsp__int32)l)
- 2ed4: 0008071b sext.w a4,a6
- while ((l > 1) && (pr) && (sn[l - 1] == '0')) {
- 2ed8: 7ae6 ld s5,120(sp)
- if (pr > (stbsp__int32)l)
- 2eda: 86c2 mv a3,a6
- 2edc: 88d2 mv a7,s4
- 2ede: f7475d63 bge a4,s4,2658 <stbsp_vsprintfcb+0x138a>
- while ((l > 1) && (pr) && (sn[l - 1] == '0')) {
- 2ee2: 8542 mv a0,a6
- 2ee4: f56ff06f j 263a <stbsp_vsprintfcb+0x136c>
-
-0000000000002ee8 <stbsp_sprintf>:
-{
- 2ee8: 715d addi sp,sp,-80
- va_start(va, fmt);
- 2eea: 02010313 addi t1,sp,32
-{
- 2eee: f032 sd a2,32(sp)
- 2ef0: f436 sd a3,40(sp)
- 2ef2: f83a sd a4,48(sp)
- result = STB_SPRINTF_DECORATE(vsprintfcb)(0, 0, buf, fmt, va);
- 2ef4: 86ae mv a3,a1
- 2ef6: 862a mv a2,a0
- 2ef8: 871a mv a4,t1
- 2efa: 4581 li a1,0
- 2efc: 4501 li a0,0
-{
- 2efe: ec06 sd ra,24(sp)
- 2f00: fc3e sd a5,56(sp)
- 2f02: e0c2 sd a6,64(sp)
- 2f04: e4c6 sd a7,72(sp)
- va_start(va, fmt);
- 2f06: e41a sd t1,8(sp)
- result = STB_SPRINTF_DECORATE(vsprintfcb)(0, 0, buf, fmt, va);
- 2f08: bc6fe0ef jal 12ce <stbsp_vsprintfcb>
-}
- 2f0c: 60e2 ld ra,24(sp)
- 2f0e: 6161 addi sp,sp,80
- 2f10: 8082 ret
-
-0000000000002f12 <stbsp_vsnprintf>:
-{
- 2f12: dd010113 addi sp,sp,-560
- 2f16: 22813023 sd s0,544(sp)
- 2f1a: 20913c23 sd s1,536(sp)
- 2f1e: 22113423 sd ra,552(sp)
- 2f22: 84ae mv s1,a1
- 2f24: 842a mv s0,a0
- 2f26: 88b2 mv a7,a2
- 2f28: 8736 mv a4,a3
- if ( (count == 0) && !buf )
- 2f2a: e591 bnez a1,2f36 <stbsp_vsnprintf+0x24>
- 2f2c: c141 beqz a0,2fac <stbsp_vsnprintf+0x9a>
- c.buf = buf;
- 2f2e: e02a sd a0,0(sp)
- c.count = count;
- 2f30: e402 sd zero,8(sp)
- return (c->count >= STB_SPRINTF_MIN) ? c->buf : c->tmp; // go direct into buffer if you can
- 2f32: 0810 addi a2,sp,16
- 2f34: a089 j 2f76 <stbsp_vsnprintf+0x64>
- if (len > c->count)
- 2f36: 0015a593 slti a1,a1,1
- 2f3a: 40b005bb negw a1,a1
- 2f3e: 8de5 and a1,a1,s1
- c.buf = buf;
- 2f40: e02a sd a0,0(sp)
- c.count = count;
- 2f42: c426 sw s1,8(sp)
- c.length = 0;
- 2f44: c602 sw zero,12(sp)
- if (len > c->count)
- 2f46: 2581 sext.w a1,a1
- if (len) {
- 2f48: 0804d663 bgez s1,2fd4 <stbsp_vsnprintf+0xc2>
- s = buf;
- 2f4c: 4781 li a5,0
- if (buf != c->buf) {
- 2f4e: c911 beqz a0,2f62 <stbsp_vsnprintf+0x50>
- *d++ = *s++;
- 2f50: 0007c803 lbu a6,0(a5)
- 2f54: 0785 addi a5,a5,1
- 2f56: 00f40533 add a0,s0,a5
- 2f5a: ff050fa3 sb a6,-1(a0)
- } while (s < se);
- 2f5e: feb7e9e3 bltu a5,a1,2f50 <stbsp_vsnprintf+0x3e>
- c->count -= len;
- 2f62: 40b486bb subw a3,s1,a1
- c->buf += len;
- 2f66: 95a2 add a1,a1,s0
- 2f68: e02e sd a1,0(sp)
- c->count -= len;
- 2f6a: c436 sw a3,8(sp)
- return (c->count >= STB_SPRINTF_MIN) ? c->buf : c->tmp; // go direct into buffer if you can
- 2f6c: 1ff00793 li a5,511
- 2f70: fcd7d1e3 bge a5,a3,2f32 <stbsp_vsnprintf+0x20>
- 2f74: 6602 ld a2,0(sp)
- STB_SPRINTF_DECORATE( vsprintfcb )( stbsp__clamp_callback, &c, stbsp__clamp_callback(0,&c,0), fmt, va );
- 2f76: 86c6 mv a3,a7
- 2f78: 858a mv a1,sp
- 2f7a: ffffd517 auipc a0,0xffffd
- 2f7e: 21650513 addi a0,a0,534 # 190 <stbsp__clamp_callback>
- 2f82: b4cfe0ef jal 12ce <stbsp_vsprintfcb>
- l = (int)( c.buf - buf );
- 2f86: 6782 ld a5,0(sp)
- 2f88: 9f81 subw a5,a5,s0
- if ( l >= count ) // should never be greater, only equal (or less) than count
- 2f8a: 0097c463 blt a5,s1,2f92 <stbsp_vsnprintf+0x80>
- l = count - 1;
- 2f8e: fff4879b addiw a5,s1,-1
- buf[l] = 0;
- 2f92: 943e add s0,s0,a5
- 2f94: 00040023 sb zero,0(s0)
-}
- 2f98: 22813083 ld ra,552(sp)
- 2f9c: 22013403 ld s0,544(sp)
- 2fa0: 4532 lw a0,12(sp)
- 2fa2: 21813483 ld s1,536(sp)
- 2fa6: 23010113 addi sp,sp,560
- 2faa: 8082 ret
- STB_SPRINTF_DECORATE( vsprintfcb )( stbsp__count_clamp_callback, &c, c.tmp, fmt, va );
- 2fac: 86b2 mv a3,a2
- 2fae: 858a mv a1,sp
- 2fb0: 0810 addi a2,sp,16
- 2fb2: ffffd517 auipc a0,0xffffd
- 2fb6: 22c50513 addi a0,a0,556 # 1de <stbsp__count_clamp_callback>
- c.length = 0;
- 2fba: c602 sw zero,12(sp)
- STB_SPRINTF_DECORATE( vsprintfcb )( stbsp__count_clamp_callback, &c, c.tmp, fmt, va );
- 2fbc: b12fe0ef jal 12ce <stbsp_vsprintfcb>
-}
- 2fc0: 22813083 ld ra,552(sp)
- 2fc4: 22013403 ld s0,544(sp)
- 2fc8: 4532 lw a0,12(sp)
- 2fca: 21813483 ld s1,536(sp)
- 2fce: 23010113 addi sp,sp,560
- 2fd2: 8082 ret
- 2fd4: 86a6 mv a3,s1
- 2fd6: bf59 j 2f6c <stbsp_vsnprintf+0x5a>
-
-0000000000002fd8 <stbsp_snprintf>:
-{
- 2fd8: 715d addi sp,sp,-80
- va_start(va, fmt);
- 2fda: 02810313 addi t1,sp,40
-{
- 2fde: f436 sd a3,40(sp)
- result = STB_SPRINTF_DECORATE(vsnprintf)(buf, count, fmt, va);
- 2fe0: 869a mv a3,t1
-{
- 2fe2: ec06 sd ra,24(sp)
- 2fe4: f83a sd a4,48(sp)
- 2fe6: fc3e sd a5,56(sp)
- 2fe8: e0c2 sd a6,64(sp)
- 2fea: e4c6 sd a7,72(sp)
- va_start(va, fmt);
- 2fec: e41a sd t1,8(sp)
- result = STB_SPRINTF_DECORATE(vsnprintf)(buf, count, fmt, va);
- 2fee: f25ff0ef jal 2f12 <stbsp_vsnprintf>
-}
- 2ff2: 60e2 ld ra,24(sp)
- 2ff4: 6161 addi sp,sp,80
- 2ff6: 8082 ret
-
-0000000000002ff8 <stbsp_vsprintf>:
-{
- 2ff8: 86ae mv a3,a1
- 2ffa: 8732 mv a4,a2
- return STB_SPRINTF_DECORATE(vsprintfcb)(0, 0, buf, fmt, va);
- 2ffc: 4581 li a1,0
- 2ffe: 862a mv a2,a0
- 3000: 4501 li a0,0
- 3002: accfe06f j 12ce <stbsp_vsprintfcb>
-
-0000000000003006 <sprintf>:
-{
- 3006: 7119 addi sp,sp,-128
- va_start(ap, format);
- 3008: 05010313 addi t1,sp,80
-{
- 300c: e0a2 sd s0,64(sp)
- 300e: fc26 sd s1,56(sp)
- 3010: 842a mv s0,a0
- 3012: e8b2 sd a2,80(sp)
- _vprintf_core(&ctx, format, ap);
- 3014: 0808 addi a0,sp,16
- ctx.limit = size;
- 3016: 54fd li s1,-1
- _vprintf_core(&ctx, format, ap);
- 3018: 861a mv a2,t1
-{
- 301a: e486 sd ra,72(sp)
- 301c: ecb6 sd a3,88(sp)
- 301e: f0ba sd a4,96(sp)
- 3020: f4be sd a5,104(sp)
- 3022: f8c2 sd a6,112(sp)
- 3024: fcc6 sd a7,120(sp)
- va_start(ap, format);
- 3026: e41a sd t1,8(sp)
- ctx.buf = str;
- 3028: e822 sd s0,16(sp)
- ctx.limit = size;
- 302a: ec26 sd s1,24(sp)
- ctx.written = 0;
- 302c: f002 sd zero,32(sp)
- ctx.stream = NULL;
- 302e: f402 sd zero,40(sp)
- _vprintf_core(&ctx, format, ap);
- 3030: 02c000ef jal 305c <_vprintf_core.constprop.0.isra.0>
- if (ctx.written < size)
- 3034: 7502 ld a0,32(sp)
- 3036: 00950b63 beq a0,s1,304c <sprintf+0x46>
- str[ctx.written] = '\0';
- 303a: 942a add s0,s0,a0
- 303c: 00040023 sb zero,0(s0)
-}
- 3040: 60a6 ld ra,72(sp)
- 3042: 6406 ld s0,64(sp)
- 3044: 74e2 ld s1,56(sp)
- 3046: 2501 sext.w a0,a0
- 3048: 6109 addi sp,sp,128
- 304a: 8082 ret
- str[size - 1] = '\0';
- 304c: fe040f23 sb zero,-2(s0)
-}
- 3050: 60a6 ld ra,72(sp)
- 3052: 6406 ld s0,64(sp)
- 3054: 74e2 ld s1,56(sp)
- 3056: 2501 sext.w a0,a0
- 3058: 6109 addi sp,sp,128
- 305a: 8082 ret
-
-000000000000305c <_vprintf_core.constprop.0.isra.0>:
-static int _vprintf_core(_OutContext *ctx, const char *format, va_list ap)
- 305c: 7129 addi sp,sp,-320
- 305e: edee sd s11,216(sp)
- 3060: fe06 sd ra,312(sp)
- 3062: 8dae mv s11,a1
- while (*p)
- 3064: 0005c583 lbu a1,0(a1)
- 3068: cde9 beqz a1,3142 <_vprintf_core.constprop.0.isra.0+0xe6>
- 306a: f626 sd s1,296(sp)
- 306c: f24a sd s2,288(sp)
- 306e: ee4e sd s3,280(sp)
- 3070: e656 sd s5,264(sp)
- 3072: f9e2 sd s8,240(sp)
- 3074: fa22 sd s0,304(sp)
- 3076: ea52 sd s4,272(sp)
- 3078: e25a sd s6,256(sp)
- 307a: fdde sd s7,248(sp)
- 307c: f5e6 sd s9,232(sp)
- 307e: f1ea sd s10,224(sp)
- 3080: 84aa mv s1,a0
- 3082: 8c32 mv s8,a2
- if (*p != '%')
- 3084: 02500a93 li s5,37
- 3088: 49c1 li s3,16
- 308a: 00002917 auipc s2,0x2
- 308e: 32a90913 addi s2,s2,810 # 53b4 <_GLOBAL__sub_I__ZSt3cin+0x3c4>
- 3092: a039 j 30a0 <_vprintf_core.constprop.0.isra.0+0x44>
- _out_char(ctx, spec);
- 3094: 8526 mv a0,s1
- 3096: 952fe0ef jal 11e8 <_out_char>
- while (*p)
- 309a: 000dc583 lbu a1,0(s11)
- 309e: c5d9 beqz a1,312c <_vprintf_core.constprop.0.isra.0+0xd0>
- _out_char(ctx, *p++);
- 30a0: 0d85 addi s11,s11,1
- if (*p != '%')
- 30a2: ff5599e3 bne a1,s5,3094 <_vprintf_core.constprop.0.isra.0+0x38>
- int flag_left = 0, flag_zero = 0, flag_plus = 0, flag_space = 0, flag_hash = 0;
- 30a6: 4501 li a0,0
- 30a8: 4881 li a7,0
- 30aa: 4581 li a1,0
- 30ac: 4b01 li s6,0
- 30ae: 4a01 li s4,0
- if (*p == '-')
- 30b0: 000dcc83 lbu s9,0(s11)
- 30b4: fe0c871b addiw a4,s9,-32
- 30b8: 0ff77713 zext.b a4,a4
- 30bc: 00e9e763 bltu s3,a4,30ca <_vprintf_core.constprop.0.isra.0+0x6e>
- 30c0: 070a slli a4,a4,0x2
- 30c2: 974a add a4,a4,s2
- 30c4: 4318 lw a4,0(a4)
- 30c6: 974a add a4,a4,s2
- 30c8: 8702 jr a4
- if (*p == '*')
- 30ca: 02a00793 li a5,42
- 30ce: 16fc9c63 bne s9,a5,3246 <_vprintf_core.constprop.0.isra.0+0x1ea>
- width = va_arg(ap, int);
- 30d2: 000c2403 lw s0,0(s8)
- 30d6: 0c21 addi s8,s8,8
- if (width < 0)
- 30d8: 00045563 bgez s0,30e2 <_vprintf_core.constprop.0.isra.0+0x86>
- width = -width;
- 30dc: 4080043b negw s0,s0
- flag_left = 1;
- 30e0: 4a05 li s4,1
- while (*p >= '0' && *p <= '9')
- 30e2: 001dcc83 lbu s9,1(s11)
- p++;
- 30e6: 0d85 addi s11,s11,1
- if (*p == '.')
- 30e8: 02e00793 li a5,46
- int precision = -1;
- 30ec: 5bfd li s7,-1
- if (*p == '.')
- 30ee: 18fc8a63 beq s9,a5,3282 <_vprintf_core.constprop.0.isra.0+0x226>
- if (*p == 'l')
- 30f2: 06c00693 li a3,108
- 30f6: 8666 mv a2,s9
- 30f8: 1adc8663 beq s9,a3,32a4 <_vprintf_core.constprop.0.isra.0+0x248>
- else if (*p == 'z')
- 30fc: 07a00693 li a3,122
- p++;
- 3100: 0d85 addi s11,s11,1
- else if (*p == 'z')
- 3102: 24dc8163 beq s9,a3,3344 <_vprintf_core.constprop.0.isra.0+0x2e8>
- if (!spec)
- 3106: 06400693 li a3,100
- 310a: 4adc8163 beq s9,a3,35ac <_vprintf_core.constprop.0.isra.0+0x550>
- 310e: 06400693 li a3,100
- int len_mod = 0;
- 3112: 4e81 li t4,0
- 3114: 1b96e663 bltu a3,s9,32c0 <_vprintf_core.constprop.0.isra.0+0x264>
- 3118: 04700693 li a3,71
- 311c: 2796e463 bltu a3,s9,3384 <_vprintf_core.constprop.0.isra.0+0x328>
- 3120: 04400693 li a3,68
- 3124: 0596e363 bltu a3,s9,316a <_vprintf_core.constprop.0.isra.0+0x10e>
- 3128: 240c9363 bnez s9,336e <_vprintf_core.constprop.0.isra.0+0x312>
- 312c: 7452 ld s0,304(sp)
- 312e: 74b2 ld s1,296(sp)
- 3130: 7912 ld s2,288(sp)
- 3132: 69f2 ld s3,280(sp)
- 3134: 6a52 ld s4,272(sp)
- 3136: 6ab2 ld s5,264(sp)
- 3138: 6b12 ld s6,256(sp)
- 313a: 7bee ld s7,248(sp)
- 313c: 7c4e ld s8,240(sp)
- 313e: 7cae ld s9,232(sp)
- 3140: 7d0e ld s10,224(sp)
-}
- 3142: 70f2 ld ra,312(sp)
- 3144: 6dee ld s11,216(sp)
- 3146: 6131 addi sp,sp,320
- 3148: 8082 ret
- if (*p == '-')
- 314a: 4585 li a1,1
- p++;
- 314c: 0d85 addi s11,s11,1
- if (*p == '-')
- 314e: b78d j 30b0 <_vprintf_core.constprop.0.isra.0+0x54>
- 3150: 4505 li a0,1
- p++;
- 3152: 0d85 addi s11,s11,1
- while (1)
- 3154: bfb1 j 30b0 <_vprintf_core.constprop.0.isra.0+0x54>
- if (*p == '-')
- 3156: 4885 li a7,1
- p++;
- 3158: 0d85 addi s11,s11,1
- while (1)
- 315a: bf99 j 30b0 <_vprintf_core.constprop.0.isra.0+0x54>
- if (*p == '-')
- 315c: 4b05 li s6,1
- p++;
- 315e: 0d85 addi s11,s11,1
- while (1)
- 3160: bf81 j 30b0 <_vprintf_core.constprop.0.isra.0+0x54>
- if (*p == '-')
- 3162: 4a05 li s4,1
- p++;
- 3164: 0d85 addi s11,s11,1
- while (1)
- 3166: b7a9 j 30b0 <_vprintf_core.constprop.0.isra.0+0x54>
- char spec = *p++;
- 3168: 8dbe mv s11,a5
- fmt_tmp[f_idx++] = '%';
- 316a: 02500693 li a3,37
- 316e: 02d10823 sb a3,48(sp)
- 3172: 4d05 li s10,1
- if (flag_left)
- 3174: 000a0763 beqz s4,3182 <_vprintf_core.constprop.0.isra.0+0x126>
- fmt_tmp[f_idx++] = '-';
- 3178: 02d00693 li a3,45
- 317c: 02d108a3 sb a3,49(sp)
- 3180: 4d09 li s10,2
- if (flag_zero)
- 3182: 000b0c63 beqz s6,319a <_vprintf_core.constprop.0.isra.0+0x13e>
- fmt_tmp[f_idx++] = '0';
- 3186: 0c0d0793 addi a5,s10,192
- 318a: 0818 addi a4,sp,16
- 318c: 00e786b3 add a3,a5,a4
- 3190: 03000613 li a2,48
- 3194: f6c68023 sb a2,-160(a3)
- 3198: 2d05 addiw s10,s10,1
- if (flag_plus)
- 319a: c999 beqz a1,31b0 <_vprintf_core.constprop.0.isra.0+0x154>
- fmt_tmp[f_idx++] = '+';
- 319c: 0c0d0793 addi a5,s10,192
- 31a0: 0818 addi a4,sp,16
- 31a2: 00e786b3 add a3,a5,a4
- 31a6: 02b00613 li a2,43
- 31aa: f6c68023 sb a2,-160(a3)
- 31ae: 2d05 addiw s10,s10,1
- if (flag_space)
- 31b0: 00088c63 beqz a7,31c8 <_vprintf_core.constprop.0.isra.0+0x16c>
- fmt_tmp[f_idx++] = ' ';
- 31b4: 0c0d0793 addi a5,s10,192
- 31b8: 0818 addi a4,sp,16
- 31ba: 00e786b3 add a3,a5,a4
- 31be: 02000613 li a2,32
- 31c2: f6c68023 sb a2,-160(a3)
- 31c6: 2d05 addiw s10,s10,1
- if (flag_hash)
- 31c8: c919 beqz a0,31de <_vprintf_core.constprop.0.isra.0+0x182>
- fmt_tmp[f_idx++] = '#';
- 31ca: 0c0d0793 addi a5,s10,192
- 31ce: 0818 addi a4,sp,16
- 31d0: 00e786b3 add a3,a5,a4
- 31d4: 02300613 li a2,35
- 31d8: f6c68023 sb a2,-160(a3)
- 31dc: 2d05 addiw s10,s10,1
- if (width > 0)
- 31de: 03010a13 addi s4,sp,48
- 31e2: 28804563 bgtz s0,346c <_vprintf_core.constprop.0.isra.0+0x410>
- if (precision >= 0)
- 31e6: 260bd763 bgez s7,3454 <_vprintf_core.constprop.0.isra.0+0x3f8>
- fmt_tmp[f_idx++] = spec;
- 31ea: 0c0d0793 addi a5,s10,192
- 31ee: 0818 addi a4,sp,16
- 31f0: 00e78633 add a2,a5,a4
- stbsp_snprintf(f_buf, sizeof(f_buf), fmt_tmp, f_val);
- 31f4: 000c3683 ld a3,0(s8)
- fmt_tmp[f_idx] = '\0';
- 31f8: 001d071b addiw a4,s10,1
- 31fc: 0c070793 addi a5,a4,192
- 3200: 0818 addi a4,sp,16
- fmt_tmp[f_idx++] = spec;
- 3202: f7960023 sb s9,-160(a2)
- fmt_tmp[f_idx] = '\0';
- 3206: 973e add a4,a4,a5
- stbsp_snprintf(f_buf, sizeof(f_buf), fmt_tmp, f_val);
- 3208: 08000593 li a1,128
- 320c: 8652 mv a2,s4
- 320e: 0888 addi a0,sp,80
- fmt_tmp[f_idx] = '\0';
- 3210: f6070023 sb zero,-160(a4)
- stbsp_snprintf(f_buf, sizeof(f_buf), fmt_tmp, f_val);
- 3214: dc5ff0ef jal 2fd8 <stbsp_snprintf>
- for (int i = 0; f_buf[i] != '\0'; i++)
- 3218: 05014583 lbu a1,80(sp)
- double f_val = va_arg(ap, double);
- 321c: 0c21 addi s8,s8,8
- for (int i = 0; f_buf[i] != '\0'; i++)
- 321e: 05110413 addi s0,sp,81
- 3222: e6058ce3 beqz a1,309a <_vprintf_core.constprop.0.isra.0+0x3e>
- _out_char(ctx, f_buf[i]);
- 3226: 8526 mv a0,s1
- 3228: fc1fd0ef jal 11e8 <_out_char>
- for (int i = 0; f_buf[i] != '\0'; i++)
- 322c: 00044583 lbu a1,0(s0)
- 3230: 0405 addi s0,s0,1
- 3232: e60584e3 beqz a1,309a <_vprintf_core.constprop.0.isra.0+0x3e>
- _out_char(ctx, f_buf[i]);
- 3236: 8526 mv a0,s1
- 3238: fb1fd0ef jal 11e8 <_out_char>
- for (int i = 0; f_buf[i] != '\0'; i++)
- 323c: 00044583 lbu a1,0(s0)
- 3240: 0405 addi s0,s0,1
- 3242: f1f5 bnez a1,3226 <_vprintf_core.constprop.0.isra.0+0x1ca>
- 3244: bd99 j 309a <_vprintf_core.constprop.0.isra.0+0x3e>
- while (*p >= '0' && *p <= '9')
- 3246: fd0c869b addiw a3,s9,-48
- 324a: 0ff6f313 zext.b t1,a3
- 324e: 4725 li a4,9
- int width = 0;
- 3250: 4401 li s0,0
- while (*p >= '0' && *p <= '9')
- 3252: 4625 li a2,9
- 3254: e8676ae3 bltu a4,t1,30e8 <_vprintf_core.constprop.0.isra.0+0x8c>
- 3258: 001dcc83 lbu s9,1(s11)
- width = width * 10 + (*p - '0');
- 325c: 0024171b slliw a4,s0,0x2
- 3260: 9f21 addw a4,a4,s0
- 3262: 0017171b slliw a4,a4,0x1
- 3266: 00e6843b addw s0,a3,a4
- while (*p >= '0' && *p <= '9')
- 326a: fd0c869b addiw a3,s9,-48
- 326e: 0ff6f713 zext.b a4,a3
- p++;
- 3272: 0d85 addi s11,s11,1
- while (*p >= '0' && *p <= '9')
- 3274: fee672e3 bgeu a2,a4,3258 <_vprintf_core.constprop.0.isra.0+0x1fc>
- if (*p == '.')
- 3278: 02e00793 li a5,46
- int precision = -1;
- 327c: 5bfd li s7,-1
- if (*p == '.')
- 327e: e6fc9ae3 bne s9,a5,30f2 <_vprintf_core.constprop.0.isra.0+0x96>
- if (*p == '*')
- 3282: 001dcc83 lbu s9,1(s11)
- 3286: 02a00793 li a5,42
- 328a: 16fc9f63 bne s9,a5,3408 <_vprintf_core.constprop.0.isra.0+0x3ac>
- while (*p >= '0' && *p <= '9')
- 328e: 002dcc83 lbu s9,2(s11)
- if (*p == 'l')
- 3292: 06c00693 li a3,108
- precision = va_arg(ap, int);
- 3296: 000c2b83 lw s7,0(s8)
- p++;
- 329a: 0d89 addi s11,s11,2
- precision = va_arg(ap, int);
- 329c: 0c21 addi s8,s8,8
- if (*p == 'l')
- 329e: 8666 mv a2,s9
- 32a0: e4dc9ee3 bne s9,a3,30fc <_vprintf_core.constprop.0.isra.0+0xa0>
- if (*p == 'l')
- 32a4: 001dcc83 lbu s9,1(s11)
- 32a8: 08cc8d63 beq s9,a2,3342 <_vprintf_core.constprop.0.isra.0+0x2e6>
- char spec = *p++;
- 32ac: 06400693 li a3,100
- 32b0: 0d89 addi s11,s11,2
- if (!spec)
- 32b2: 4cdc8c63 beq s9,a3,378a <_vprintf_core.constprop.0.isra.0+0x72e>
- 32b6: 06400693 li a3,100
- len_mod = 1;
- 32ba: 4e85 li t4,1
- 32bc: e596fee3 bgeu a3,s9,3118 <_vprintf_core.constprop.0.isra.0+0xbc>
- 32c0: f9bc869b addiw a3,s9,-101
- 32c4: 0ff6f693 zext.b a3,a3
- 32c8: 464d li a2,19
- 32ca: 12d66863 bltu a2,a3,33fa <_vprintf_core.constprop.0.isra.0+0x39e>
- 32ce: 4e05 li t3,1
- 32d0: 00091637 lui a2,0x91
- 32d4: 00de1333 sll t1,t3,a3
- 32d8: 81060613 addi a2,a2,-2032 # 90810 <_ZSt4cerr+0x88f88>
- 32dc: 00c37633 and a2,t1,a2
- 32e0: 1a061463 bnez a2,3488 <_vprintf_core.constprop.0.isra.0+0x42c>
- 32e4: 00737313 andi t1,t1,7
- 32e8: e80311e3 bnez t1,316a <_vprintf_core.constprop.0.isra.0+0x10e>
- 32ec: 4639 li a2,14
- 32ee: 10c69663 bne a3,a2,33fa <_vprintf_core.constprop.0.isra.0+0x39e>
- const char *s = va_arg(ap, char *);
- 32f2: 000c3c83 ld s9,0(s8)
- if (!s)
- 32f6: 420c8863 beqz s9,3726 <_vprintf_core.constprop.0.isra.0+0x6ca>
- while (*tmp && (precision < 0 || len < precision))
- 32fa: 000cc683 lbu a3,0(s9)
- 32fe: 38068863 beqz a3,368e <_vprintf_core.constprop.0.isra.0+0x632>
- const char *tmp = s;
- 3302: 8666 mv a2,s9
- int len = 0;
- 3304: 4681 li a3,0
- while (*tmp && (precision < 0 || len < precision))
- 3306: 00db8863 beq s7,a3,3316 <_vprintf_core.constprop.0.isra.0+0x2ba>
- 330a: 00164583 lbu a1,1(a2)
- len++;
- 330e: 2685 addiw a3,a3,1
- tmp++;
- 3310: 0605 addi a2,a2,1
- while (*tmp && (precision < 0 || len < precision))
- 3312: f9f5 bnez a1,3306 <_vprintf_core.constprop.0.isra.0+0x2aa>
- 3314: 8bb6 mv s7,a3
- int padding = (width > len) ? width - len : 0;
- 3316: 268bc563 blt s7,s0,3580 <_vprintf_core.constprop.0.isra.0+0x524>
- for (int i = 0; i < len; i++)
- 331a: 4401 li s0,0
- 331c: 020b8163 beqz s7,333e <_vprintf_core.constprop.0.isra.0+0x2e2>
- 3320: 4d01 li s10,0
- _out_char(ctx, s[i]);
- 3322: 01ac86b3 add a3,s9,s10
- 3326: 0006c583 lbu a1,0(a3)
- 332a: 8526 mv a0,s1
- for (int i = 0; i < len; i++)
- 332c: 0d05 addi s10,s10,1
- _out_char(ctx, s[i]);
- 332e: ebbfd0ef jal 11e8 <_out_char>
- for (int i = 0; i < len; i++)
- 3332: 000d069b sext.w a3,s10
- 3336: ff76c6e3 blt a3,s7,3322 <_vprintf_core.constprop.0.isra.0+0x2c6>
- if (flag_left)
- 333a: 260a1463 bnez s4,35a2 <_vprintf_core.constprop.0.isra.0+0x546>
- const char *s = va_arg(ap, char *);
- 333e: 0c21 addi s8,s8,8
- 3340: bba9 j 309a <_vprintf_core.constprop.0.isra.0+0x3e>
- p++;
- 3342: 0d89 addi s11,s11,2
- char spec = *p++;
- 3344: 000dcc83 lbu s9,0(s11)
- 3348: 06400693 li a3,100
- 334c: 001d8793 addi a5,s11,1
- if (!spec)
- 3350: 3edc8063 beq s9,a3,3730 <_vprintf_core.constprop.0.isra.0+0x6d4>
- 3354: 0796ea63 bltu a3,s9,33c8 <_vprintf_core.constprop.0.isra.0+0x36c>
- 3358: 04700693 li a3,71
- 335c: 0f96e263 bltu a3,s9,3440 <_vprintf_core.constprop.0.isra.0+0x3e4>
- 3360: 04400693 li a3,68
- 3364: e196e2e3 bltu a3,s9,3168 <_vprintf_core.constprop.0.isra.0+0x10c>
- 3368: dc0c82e3 beqz s9,312c <_vprintf_core.constprop.0.isra.0+0xd0>
- char spec = *p++;
- 336c: 8dbe mv s11,a5
- _out_char(ctx, '%');
- 336e: 02500593 li a1,37
- 3372: 8526 mv a0,s1
- 3374: e75fd0ef jal 11e8 <_out_char>
- if (spec != '%')
- 3378: 02500713 li a4,37
- 337c: d0ec8fe3 beq s9,a4,309a <_vprintf_core.constprop.0.isra.0+0x3e>
- _out_char(ctx, spec);
- 3380: 85e6 mv a1,s9
- 3382: bb09 j 3094 <_vprintf_core.constprop.0.isra.0+0x38>
- 3384: 05800693 li a3,88
- 3388: 2edc8263 beq s9,a3,366c <_vprintf_core.constprop.0.isra.0+0x610>
- 338c: 06300713 li a4,99
- 3390: 06ec9563 bne s9,a4,33fa <_vprintf_core.constprop.0.isra.0+0x39e>
- char c = (char)va_arg(ap, int);
- 3394: 000c4c83 lbu s9,0(s8)
- int padding = (width > 1) ? width - 1 : 0;
- 3398: 8722 mv a4,s0
- 339a: 00804363 bgtz s0,33a0 <_vprintf_core.constprop.0.isra.0+0x344>
- 339e: 4705 li a4,1
- 33a0: fff7041b addiw s0,a4,-1
- if (!flag_left)
- 33a4: 3c0a0463 beqz s4,376c <_vprintf_core.constprop.0.isra.0+0x710>
- _out_char(ctx, c);
- 33a8: 85e6 mv a1,s9
- 33aa: 8526 mv a0,s1
- 33ac: e3dfd0ef jal 11e8 <_out_char>
- for (int i = 0; i < padding; i++)
- 33b0: 4a01 li s4,0
- 33b2: d451 beqz s0,333e <_vprintf_core.constprop.0.isra.0+0x2e2>
- _out_char(ctx, ' ');
- 33b4: 02000593 li a1,32
- 33b8: 8526 mv a0,s1
- for (int i = 0; i < padding; i++)
- 33ba: 2a05 addiw s4,s4,1
- _out_char(ctx, ' ');
- 33bc: e2dfd0ef jal 11e8 <_out_char>
- for (int i = 0; i < padding; i++)
- 33c0: ff441ae3 bne s0,s4,33b4 <_vprintf_core.constprop.0.isra.0+0x358>
- const char *s = va_arg(ap, char *);
- 33c4: 0c21 addi s8,s8,8
- 33c6: b9d1 j 309a <_vprintf_core.constprop.0.isra.0+0x3e>
- 33c8: f9bc861b addiw a2,s9,-101
- 33cc: 0ff67613 zext.b a2,a2
- 33d0: 46cd li a3,19
- 33d2: 40c6e963 bltu a3,a2,37e4 <_vprintf_core.constprop.0.isra.0+0x788>
- 33d6: 00091337 lui t1,0x91
- 33da: 4685 li a3,1
- 33dc: 00c696b3 sll a3,a3,a2
- 33e0: 81030313 addi t1,t1,-2032 # 90810 <_ZSt4cerr+0x88f88>
- 33e4: 0066f333 and t1,a3,t1
- 33e8: 34031c63 bnez t1,3740 <_vprintf_core.constprop.0.isra.0+0x6e4>
- 33ec: 8a9d andi a3,a3,7
- 33ee: d6069de3 bnez a3,3168 <_vprintf_core.constprop.0.isra.0+0x10c>
- 33f2: 46b9 li a3,14
- char spec = *p++;
- 33f4: 8dbe mv s11,a5
- 33f6: eed60ee3 beq a2,a3,32f2 <_vprintf_core.constprop.0.isra.0+0x296>
- _out_char(ctx, '%');
- 33fa: 02500593 li a1,37
- 33fe: 8526 mv a0,s1
- 3400: de9fd0ef jal 11e8 <_out_char>
- _out_char(ctx, spec);
- 3404: 85e6 mv a1,s9
- 3406: b179 j 3094 <_vprintf_core.constprop.0.isra.0+0x38>
- while (*p >= '0' && *p <= '9')
- 3408: fd0c869b addiw a3,s9,-48
- 340c: 0ff6fe13 zext.b t3,a3
- 3410: 4625 li a2,9
- p++;
- 3412: 0d85 addi s11,s11,1
- precision = 0;
- 3414: 4b81 li s7,0
- while (*p >= '0' && *p <= '9')
- 3416: 4325 li t1,9
- 3418: cdc66de3 bltu a2,t3,30f2 <_vprintf_core.constprop.0.isra.0+0x96>
- precision = precision * 10 + (*p - '0');
- 341c: 002b961b slliw a2,s7,0x2
- while (*p >= '0' && *p <= '9')
- 3420: 001dcc83 lbu s9,1(s11)
- precision = precision * 10 + (*p - '0');
- 3424: 0176073b addw a4,a2,s7
- 3428: 0017171b slliw a4,a4,0x1
- 342c: 00e68bbb addw s7,a3,a4
- while (*p >= '0' && *p <= '9')
- 3430: fd0c869b addiw a3,s9,-48
- 3434: 0ff6f613 zext.b a2,a3
- p++;
- 3438: 0d85 addi s11,s11,1
- while (*p >= '0' && *p <= '9')
- 343a: fec371e3 bgeu t1,a2,341c <_vprintf_core.constprop.0.isra.0+0x3c0>
- 343e: b955 j 30f2 <_vprintf_core.constprop.0.isra.0+0x96>
- 3440: 05800693 li a3,88
- 3444: 3cdc8d63 beq s9,a3,381e <_vprintf_core.constprop.0.isra.0+0x7c2>
- 3448: 06300713 li a4,99
- char spec = *p++;
- 344c: 8dbe mv s11,a5
- 344e: f4ec83e3 beq s9,a4,3394 <_vprintf_core.constprop.0.isra.0+0x338>
- 3452: b765 j 33fa <_vprintf_core.constprop.0.isra.0+0x39e>
- f_idx += sprintf(&fmt_tmp[f_idx], ".%d", precision);
- 3454: 01aa0533 add a0,s4,s10
- 3458: 865e mv a2,s7
- 345a: 00002597 auipc a1,0x2
- 345e: cde58593 addi a1,a1,-802 # 5138 <_GLOBAL__sub_I__ZSt3cin+0x148>
- 3462: ba5ff0ef jal 3006 <sprintf>
- 3466: 00ad0d3b addw s10,s10,a0
- 346a: b341 j 31ea <_vprintf_core.constprop.0.isra.0+0x18e>
- f_idx += sprintf(&fmt_tmp[f_idx], "%d", width);
- 346c: 01aa0533 add a0,s4,s10
- 3470: 8622 mv a2,s0
- 3472: 00002597 auipc a1,0x2
- 3476: cbe58593 addi a1,a1,-834 # 5130 <_GLOBAL__sub_I__ZSt3cin+0x140>
- 347a: b8dff0ef jal 3006 <sprintf>
- 347e: 00ad0d3b addw s10,s10,a0
- if (precision >= 0)
- 3482: d60bc4e3 bltz s7,31ea <_vprintf_core.constprop.0.isra.0+0x18e>
- 3486: b7f9 j 3454 <_vprintf_core.constprop.0.isra.0+0x3f8>
- int is_signed = (spec == 'd' || spec == 'i');
- 3488: 06900693 li a3,105
- 348c: 10dc8e63 beq s9,a3,35a8 <_vprintf_core.constprop.0.isra.0+0x54c>
- val = (uint64)va_arg(ap, void *);
- 3490: 008c0793 addi a5,s8,8
- int base = (spec == 'x' || spec == 'X' || spec == 'p') ? 16 : 10;
- 3494: 07800693 li a3,120
- val = (uint64)va_arg(ap, void *);
- 3498: e43e sd a5,8(sp)
- int base = (spec == 'x' || spec == 'X' || spec == 'p') ? 16 : 10;
- 349a: 38dc9d63 bne s9,a3,3834 <_vprintf_core.constprop.0.isra.0+0x7d8>
- else if (len_mod == 1)
- 349e: 33ce8963 beq t4,t3,37d0 <_vprintf_core.constprop.0.isra.0+0x774>
- val = is_signed ? (uint64)((int64)va_arg(ap, int)) : (uint64)va_arg(ap, uint32);
- 34a2: 000c6e03 lwu t3,0(s8)
- 34a6: 85f6 mv a1,t4
- 34a8: e002 sd zero,0(sp)
- int base = (spec == 'x' || spec == 'X' || spec == 'p') ? 16 : 10;
- 34aa: 4341 li t1,16
- const char *digits = uppercase ? "0123456789ABCDEF" : "0123456789abcdef";
- 34ac: 00002f97 auipc t6,0x2
- 34b0: c54f8f93 addi t6,t6,-940 # 5100 <_GLOBAL__sub_I__ZSt3cin+0x110>
- if (val == 0)
- 34b4: 120e0363 beqz t3,35da <_vprintf_core.constprop.0.isra.0+0x57e>
- 34b8: 01010293 addi t0,sp,16
- sign_char = '-';
- 34bc: 8616 mv a2,t0
- 34be: 86f2 mv a3,t3
- buf[i++] = digits[val % base];
- 34c0: 0266f8b3 remu a7,a3,t1
- 34c4: 8f32 mv t5,a2
- while (val != 0)
- 34c6: 0605 addi a2,a2,1
- 34c8: 8eb6 mv t4,a3
- buf[i++] = digits[val % base];
- 34ca: 98fe add a7,a7,t6
- 34cc: 0008c883 lbu a7,0(a7)
- val /= base;
- 34d0: 0266d6b3 divu a3,a3,t1
- buf[i++] = digits[val % base];
- 34d4: ff160fa3 sb a7,-1(a2)
- while (val != 0)
- 34d8: fe6ef4e3 bgeu t4,t1,34c0 <_vprintf_core.constprop.0.isra.0+0x464>
- buf[i++] = digits[val % base];
- 34dc: 405f0f3b subw t5,t5,t0
- 34e0: 2f05 addiw t5,t5,1
- if (precision >= 0)
- 34e2: 100bc363 bltz s7,35e8 <_vprintf_core.constprop.0.isra.0+0x58c>
- int prec_zeros = (precision > digit_len) ? precision - digit_len : 0;
- 34e6: 1d7f4d63 blt t5,s7,36c0 <_vprintf_core.constprop.0.isra.0+0x664>
- if (precision == 0 && val == 0)
- 34ea: 340b9163 bnez s7,382c <_vprintf_core.constprop.0.isra.0+0x7d0>
- 34ee: 200e0763 beqz t3,36fc <_vprintf_core.constprop.0.isra.0+0x6a0>
- for (int i = digit_len - 1; i >= 0; i--)
- 34f2: ffff0c1b addiw s8,t5,-1
- if (spec == 'p' || (flag_hash && val != 0 && (spec == 'x' || spec == 'X')))
- 34f6: 07000693 li a3,112
- for (int i = digit_len - 1; i >= 0; i--)
- 34fa: 8662 mv a2,s8
- if (spec == 'p' || (flag_hash && val != 0 && (spec == 'x' || spec == 'X')))
- 34fc: 28dc8e63 beq s9,a3,3798 <_vprintf_core.constprop.0.isra.0+0x73c>
- 3500: 2a051663 bnez a0,37ac <_vprintf_core.constprop.0.isra.0+0x750>
- int padding = (width > prefix_len + prec_zeros + digit_len) ? width - (prefix_len + prec_zeros + digit_len) : 0;
- 3504: 00bf05bb addw a1,t5,a1
- 3508: 8d52 mv s10,s4
- 350a: 4b01 li s6,0
- char *prefix_str = NULL;
- 350c: 4c81 li s9,0
- int padding = (width > prefix_len + prec_zeros + digit_len) ? width - (prefix_len + prec_zeros + digit_len) : 0;
- 350e: 1085d263 bge a1,s0,3612 <_vprintf_core.constprop.0.isra.0+0x5b6>
- 3512: 9c0d subw s0,s0,a1
- if (!flag_left && !flag_zero)
- 3514: 100d0a63 beqz s10,3628 <_vprintf_core.constprop.0.isra.0+0x5cc>
- if (sign_char)
- 3518: 6782 ld a5,0(sp)
- 351a: 10079263 bnez a5,361e <_vprintf_core.constprop.0.isra.0+0x5c2>
- if (prefix_str)
- 351e: 000c8c63 beqz s9,3536 <_vprintf_core.constprop.0.isra.0+0x4da>
- _out_char(ctx, prefix_str[0]);
- 3522: 000cc583 lbu a1,0(s9)
- 3526: 8526 mv a0,s1
- 3528: cc1fd0ef jal 11e8 <_out_char>
- _out_char(ctx, prefix_str[1]);
- 352c: 001cc583 lbu a1,1(s9)
- 3530: 8526 mv a0,s1
- 3532: cb7fd0ef jal 11e8 <_out_char>
- int total_zeros = prec_zeros + ((flag_zero && !flag_left) ? padding : 0);
- 3536: 180b0263 beqz s6,36ba <_vprintf_core.constprop.0.isra.0+0x65e>
- 353a: 100a1863 bnez s4,364a <_vprintf_core.constprop.0.isra.0+0x5ee>
- 353e: 008b8bbb addw s7,s7,s0
- for (int i = 0; i < total_zeros; i++)
- 3542: 2a0b8363 beqz s7,37e8 <_vprintf_core.constprop.0.isra.0+0x78c>
- 3546: 4c81 li s9,0
- _out_char(ctx, '0');
- 3548: 03000593 li a1,48
- 354c: 8526 mv a0,s1
- for (int i = 0; i < total_zeros; i++)
- 354e: 2c85 addiw s9,s9,1
- _out_char(ctx, '0');
- 3550: c99fd0ef jal 11e8 <_out_char>
- for (int i = 0; i < total_zeros; i++)
- 3554: ff7c9ae3 bne s9,s7,3548 <_vprintf_core.constprop.0.isra.0+0x4ec>
- for (int i = digit_len - 1; i >= 0; i--)
- 3558: 57fd li a5,-1
- 355a: 00fc0f63 beq s8,a5,3578 <_vprintf_core.constprop.0.isra.0+0x51c>
- 355e: 01010c93 addi s9,sp,16
- 3562: 9ce2 add s9,s9,s8
- 3564: 00f10c13 addi s8,sp,15
- _out_char(ctx, num_buf[i]);
- 3568: 000cc583 lbu a1,0(s9)
- 356c: 8526 mv a0,s1
- for (int i = digit_len - 1; i >= 0; i--)
- 356e: 1cfd addi s9,s9,-1
- _out_char(ctx, num_buf[i]);
- 3570: c79fd0ef jal 11e8 <_out_char>
- for (int i = digit_len - 1; i >= 0; i--)
- 3574: ff9c1ae3 bne s8,s9,3568 <_vprintf_core.constprop.0.isra.0+0x50c>
- if (flag_left)
- 3578: 0c0a1e63 bnez s4,3654 <_vprintf_core.constprop.0.isra.0+0x5f8>
- char spec = *p++;
- 357c: 6c22 ld s8,8(sp)
- 357e: be31 j 309a <_vprintf_core.constprop.0.isra.0+0x3e>
- int padding = (width > len) ? width - len : 0;
- 3580: 4174043b subw s0,s0,s7
- if (!flag_left)
- 3584: 100a0a63 beqz s4,3698 <_vprintf_core.constprop.0.isra.0+0x63c>
- for (int i = 0; i < len; i++)
- 3588: d80b9ce3 bnez s7,3320 <_vprintf_core.constprop.0.isra.0+0x2c4>
- for (int i = 0; i < padding; i++)
- 358c: 4a01 li s4,0
- _out_char(ctx, ' ');
- 358e: 02000593 li a1,32
- 3592: 8526 mv a0,s1
- for (int i = 0; i < padding; i++)
- 3594: 2a05 addiw s4,s4,1
- _out_char(ctx, ' ');
- 3596: c53fd0ef jal 11e8 <_out_char>
- for (int i = 0; i < padding; i++)
- 359a: ff441ae3 bne s0,s4,358e <_vprintf_core.constprop.0.isra.0+0x532>
- const char *s = va_arg(ap, char *);
- 359e: 0c21 addi s8,s8,8
- 35a0: bced j 309a <_vprintf_core.constprop.0.isra.0+0x3e>
- for (int i = 0; i < padding; i++)
- 35a2: f46d bnez s0,358c <_vprintf_core.constprop.0.isra.0+0x530>
- const char *s = va_arg(ap, char *);
- 35a4: 0c21 addi s8,s8,8
- 35a6: bcd5 j 309a <_vprintf_core.constprop.0.isra.0+0x3e>
- else if (len_mod == 1)
- 35a8: 1fce8163 beq t4,t3,378a <_vprintf_core.constprop.0.isra.0+0x72e>
- val = is_signed ? (uint64)((int64)va_arg(ap, int)) : (uint64)va_arg(ap, uint32);
- 35ac: 000c2e03 lw t3,0(s8)
- 35b0: 008c0793 addi a5,s8,8
- 35b4: e43e sd a5,8(sp)
- int64 sval = (int64)val;
- 35b6: 86f2 mv a3,t3
- if (sval < 0)
- 35b8: 1406cb63 bltz a3,370e <_vprintf_core.constprop.0.isra.0+0x6b2>
- sign_char = '+';
- 35bc: 02b00793 li a5,43
- 35c0: e03e sd a5,0(sp)
- else if (flag_plus)
- 35c2: e589 bnez a1,35cc <_vprintf_core.constprop.0.isra.0+0x570>
- else if (flag_space)
- 35c4: 00589793 slli a5,a7,0x5
- 35c8: e03e sd a5,0(sp)
- 35ca: 85c6 mv a1,a7
- const char *digits = uppercase ? "0123456789ABCDEF" : "0123456789abcdef";
- 35cc: 4329 li t1,10
- 35ce: 00002f97 auipc t6,0x2
- 35d2: b32f8f93 addi t6,t6,-1230 # 5100 <_GLOBAL__sub_I__ZSt3cin+0x110>
- if (val == 0)
- 35d6: ee0e11e3 bnez t3,34b8 <_vprintf_core.constprop.0.isra.0+0x45c>
- buf[i++] = '0';
- 35da: 03000693 li a3,48
- 35de: 00d10823 sb a3,16(sp)
- return i;
- 35e2: 4f05 li t5,1
- if (precision >= 0)
- 35e4: f00bd1e3 bgez s7,34e6 <_vprintf_core.constprop.0.isra.0+0x48a>
- for (int i = digit_len - 1; i >= 0; i--)
- 35e8: ffff0c1b addiw s8,t5,-1
- if (spec == 'p' || (flag_hash && val != 0 && (spec == 'x' || spec == 'X')))
- 35ec: 07000893 li a7,112
- if (!flag_left && !flag_zero)
- 35f0: 016a6d33 or s10,s4,s6
- int prec_zeros = (precision > digit_len) ? precision - digit_len : 0;
- 35f4: 4b81 li s7,0
- for (int i = digit_len - 1; i >= 0; i--)
- 35f6: 8662 mv a2,s8
- if (spec == 'p' || (flag_hash && val != 0 && (spec == 'x' || spec == 'X')))
- 35f8: 0d1c9f63 bne s9,a7,36d6 <_vprintf_core.constprop.0.isra.0+0x67a>
- prefix_str = (spec == 'X') ? "0X" : "0x";
- 35fc: 00002c97 auipc s9,0x2
- 3600: b1cc8c93 addi s9,s9,-1252 # 5118 <_GLOBAL__sub_I__ZSt3cin+0x128>
- prefix_len += 2;
- 3604: 2589 addiw a1,a1,2
- int padding = (width > prefix_len + prec_zeros + digit_len) ? width - (prefix_len + prec_zeros + digit_len) : 0;
- 3606: 017585bb addw a1,a1,s7
- 360a: 01e585bb addw a1,a1,t5
- 360e: f085c2e3 blt a1,s0,3512 <_vprintf_core.constprop.0.isra.0+0x4b6>
- if (!flag_left && !flag_zero)
- 3612: 080d0f63 beqz s10,36b0 <_vprintf_core.constprop.0.isra.0+0x654>
- if (sign_char)
- 3616: 6782 ld a5,0(sp)
- int padding = (width > prefix_len + prec_zeros + digit_len) ? width - (prefix_len + prec_zeros + digit_len) : 0;
- 3618: 4401 li s0,0
- if (sign_char)
- 361a: f00782e3 beqz a5,351e <_vprintf_core.constprop.0.isra.0+0x4c2>
- _out_char(ctx, sign_char);
- 361e: 6582 ld a1,0(sp)
- 3620: 8526 mv a0,s1
- 3622: bc7fd0ef jal 11e8 <_out_char>
- 3626: bde5 j 351e <_vprintf_core.constprop.0.isra.0+0x4c2>
- _out_char(ctx, ' ');
- 3628: 02000593 li a1,32
- 362c: 8526 mv a0,s1
- for (int i = 0; i < padding; i++)
- 362e: 2d05 addiw s10,s10,1
- _out_char(ctx, ' ');
- 3630: bb9fd0ef jal 11e8 <_out_char>
- for (int i = 0; i < padding; i++)
- 3634: efa402e3 beq s0,s10,3518 <_vprintf_core.constprop.0.isra.0+0x4bc>
- _out_char(ctx, ' ');
- 3638: 02000593 li a1,32
- 363c: 8526 mv a0,s1
- for (int i = 0; i < padding; i++)
- 363e: 2d05 addiw s10,s10,1
- _out_char(ctx, ' ');
- 3640: ba9fd0ef jal 11e8 <_out_char>
- for (int i = 0; i < padding; i++)
- 3644: ffa412e3 bne s0,s10,3628 <_vprintf_core.constprop.0.isra.0+0x5cc>
- 3648: bdc1 j 3518 <_vprintf_core.constprop.0.isra.0+0x4bc>
- for (int i = 0; i < total_zeros; i++)
- 364a: ee0b9ee3 bnez s7,3546 <_vprintf_core.constprop.0.isra.0+0x4ea>
- for (int i = digit_len - 1; i >= 0; i--)
- 364e: 577d li a4,-1
- 3650: f0ec17e3 bne s8,a4,355e <_vprintf_core.constprop.0.isra.0+0x502>
- for (int i = 0; i < padding; i++)
- 3654: d405 beqz s0,357c <_vprintf_core.constprop.0.isra.0+0x520>
- 3656: 4a01 li s4,0
- _out_char(ctx, ' ');
- 3658: 02000593 li a1,32
- 365c: 8526 mv a0,s1
- for (int i = 0; i < padding; i++)
- 365e: 2a05 addiw s4,s4,1
- _out_char(ctx, ' ');
- 3660: b89fd0ef jal 11e8 <_out_char>
- for (int i = 0; i < padding; i++)
- 3664: fe8a1ae3 bne s4,s0,3658 <_vprintf_core.constprop.0.isra.0+0x5fc>
- char spec = *p++;
- 3668: 6c22 ld s8,8(sp)
- 366a: bc05 j 309a <_vprintf_core.constprop.0.isra.0+0x3e>
- val = (uint64)va_arg(ap, void *);
- 366c: 008c0793 addi a5,s8,8
- 3670: e43e sd a5,8(sp)
- else if (len_mod == 1)
- 3672: 180e9163 bnez t4,37f4 <_vprintf_core.constprop.0.isra.0+0x798>
- val = is_signed ? (uint64)((int64)va_arg(ap, int)) : (uint64)va_arg(ap, uint32);
- 3676: 000c6e03 lwu t3,0(s8)
- val = is_signed ? (uint64)va_arg(ap, int64) : va_arg(ap, uint64);
- 367a: 4581 li a1,0
- 367c: 05800c93 li s9,88
- 3680: e002 sd zero,0(sp)
- 3682: 4341 li t1,16
- const char *digits = uppercase ? "0123456789ABCDEF" : "0123456789abcdef";
- 3684: 00002f97 auipc t6,0x2
- 3688: a64f8f93 addi t6,t6,-1436 # 50e8 <_GLOBAL__sub_I__ZSt3cin+0xf8>
- 368c: b525 j 34b4 <_vprintf_core.constprop.0.isra.0+0x458>
- int padding = (width > len) ? width - len : 0;
- 368e: ca8058e3 blez s0,333e <_vprintf_core.constprop.0.isra.0+0x2e2>
- if (!flag_left)
- 3692: ee0a1de3 bnez s4,358c <_vprintf_core.constprop.0.isra.0+0x530>
- int len = 0;
- 3696: 4b81 li s7,0
- for (int i = 0; i < padding; i++)
- 3698: 4d01 li s10,0
- _out_char(ctx, ' ');
- 369a: 02000593 li a1,32
- 369e: 8526 mv a0,s1
- for (int i = 0; i < padding; i++)
- 36a0: 2d05 addiw s10,s10,1
- _out_char(ctx, ' ');
- 36a2: b47fd0ef jal 11e8 <_out_char>
- for (int i = 0; i < padding; i++)
- 36a6: fe8d1ae3 bne s10,s0,369a <_vprintf_core.constprop.0.isra.0+0x63e>
- for (int i = 0; i < len; i++)
- 36aa: c60b9be3 bnez s7,3320 <_vprintf_core.constprop.0.isra.0+0x2c4>
- 36ae: b941 j 333e <_vprintf_core.constprop.0.isra.0+0x2e2>
- if (sign_char)
- 36b0: 6782 ld a5,0(sp)
- 36b2: 4401 li s0,0
- 36b4: f7ad bnez a5,361e <_vprintf_core.constprop.0.isra.0+0x5c2>
- if (prefix_str)
- 36b6: e60c96e3 bnez s9,3522 <_vprintf_core.constprop.0.isra.0+0x4c6>
- for (int i = 0; i < total_zeros; i++)
- 36ba: e80b96e3 bnez s7,3546 <_vprintf_core.constprop.0.isra.0+0x4ea>
- 36be: bd69 j 3558 <_vprintf_core.constprop.0.isra.0+0x4fc>
- int prec_zeros = (precision > digit_len) ? precision - digit_len : 0;
- 36c0: 41eb8bbb subw s7,s7,t5
- 36c4: 8d52 mv s10,s4
- 36c6: 4b01 li s6,0
- for (int i = digit_len - 1; i >= 0; i--)
- 36c8: ffff0c1b addiw s8,t5,-1
- if (spec == 'p' || (flag_hash && val != 0 && (spec == 'x' || spec == 'X')))
- 36cc: 07000893 li a7,112
- for (int i = digit_len - 1; i >= 0; i--)
- 36d0: 8662 mv a2,s8
- if (spec == 'p' || (flag_hash && val != 0 && (spec == 'x' || spec == 'X')))
- 36d2: f31c85e3 beq s9,a7,35fc <_vprintf_core.constprop.0.isra.0+0x5a0>
- 36d6: cd09 beqz a0,36f0 <_vprintf_core.constprop.0.isra.0+0x694>
- 36d8: 000e0c63 beqz t3,36f0 <_vprintf_core.constprop.0.isra.0+0x694>
- 36dc: 07800513 li a0,120
- for (int i = digit_len - 1; i >= 0; i--)
- 36e0: 00060c1b sext.w s8,a2
- if (spec == 'p' || (flag_hash && val != 0 && (spec == 'x' || spec == 'X')))
- 36e4: f0ac8ce3 beq s9,a0,35fc <_vprintf_core.constprop.0.isra.0+0x5a0>
- 36e8: 05800613 li a2,88
- 36ec: 12cc8463 beq s9,a2,3814 <_vprintf_core.constprop.0.isra.0+0x7b8>
- int padding = (width > prefix_len + prec_zeros + digit_len) ? width - (prefix_len + prec_zeros + digit_len) : 0;
- 36f0: 00bb85bb addw a1,s7,a1
- 36f4: 01e585bb addw a1,a1,t5
- char *prefix_str = NULL;
- 36f8: 4c81 li s9,0
- 36fa: bd11 j 350e <_vprintf_core.constprop.0.isra.0+0x4b2>
- if (spec == 'p' || (flag_hash && val != 0 && (spec == 'x' || spec == 'X')))
- 36fc: 07000693 li a3,112
- 3700: 8d52 mv s10,s4
- 3702: 4b01 li s6,0
- 3704: 08dc8d63 beq s9,a3,379e <_vprintf_core.constprop.0.isra.0+0x742>
- 3708: 5c7d li s8,-1
- char *prefix_str = NULL;
- 370a: 4c81 li s9,0
- 370c: b509 j 350e <_vprintf_core.constprop.0.isra.0+0x4b2>
- sign_char = '-';
- 370e: 02d00793 li a5,45
- val = (uint64)(-sval);
- 3712: 40d00e33 neg t3,a3
- 3716: 4585 li a1,1
- 3718: 4329 li t1,10
- const char *digits = uppercase ? "0123456789ABCDEF" : "0123456789abcdef";
- 371a: 00002f97 auipc t6,0x2
- 371e: 9e6f8f93 addi t6,t6,-1562 # 5100 <_GLOBAL__sub_I__ZSt3cin+0x110>
- sign_char = '-';
- 3722: e03e sd a5,0(sp)
- 3724: bb51 j 34b8 <_vprintf_core.constprop.0.isra.0+0x45c>
- s = "(null)";
- 3726: 00002c97 auipc s9,0x2
- 372a: a02c8c93 addi s9,s9,-1534 # 5128 <_GLOBAL__sub_I__ZSt3cin+0x138>
- 372e: bed1 j 3302 <_vprintf_core.constprop.0.isra.0+0x2a6>
- val = is_signed ? (uint64)va_arg(ap, int64) : va_arg(ap, uint64);
- 3730: 000c3683 ld a3,0(s8)
- 3734: 008c0713 addi a4,s8,8
- 3738: e43a sd a4,8(sp)
- 373a: 8dbe mv s11,a5
- 373c: 8e36 mv t3,a3
- if (is_signed)
- 373e: bdad j 35b8 <_vprintf_core.constprop.0.isra.0+0x55c>
- int is_signed = (spec == 'd' || spec == 'i');
- 3740: 06900693 li a3,105
- 3744: fedc86e3 beq s9,a3,3730 <_vprintf_core.constprop.0.isra.0+0x6d4>
- val = (uint64)va_arg(ap, void *);
- 3748: 008c0713 addi a4,s8,8
- int base = (spec == 'x' || spec == 'X' || spec == 'p') ? 16 : 10;
- 374c: 07800693 li a3,120
- val = (uint64)va_arg(ap, void *);
- 3750: e43a sd a4,8(sp)
- int base = (spec == 'x' || spec == 'X' || spec == 'p') ? 16 : 10;
- 3752: 06dc9063 bne s9,a3,37b2 <_vprintf_core.constprop.0.isra.0+0x756>
- val = is_signed ? (uint64)va_arg(ap, int64) : va_arg(ap, uint64);
- 3756: 000c3e03 ld t3,0(s8)
- 375a: 8dbe mv s11,a5
- 375c: 4581 li a1,0
- 375e: e002 sd zero,0(sp)
- int base = (spec == 'x' || spec == 'X' || spec == 'p') ? 16 : 10;
- 3760: 4341 li t1,16
- const char *digits = uppercase ? "0123456789ABCDEF" : "0123456789abcdef";
- 3762: 00002f97 auipc t6,0x2
- 3766: 99ef8f93 addi t6,t6,-1634 # 5100 <_GLOBAL__sub_I__ZSt3cin+0x110>
- 376a: b3a9 j 34b4 <_vprintf_core.constprop.0.isra.0+0x458>
- for (int i = 0; i < padding; i++)
- 376c: c809 beqz s0,377e <_vprintf_core.constprop.0.isra.0+0x722>
- _out_char(ctx, ' ');
- 376e: 02000593 li a1,32
- 3772: 8526 mv a0,s1
- for (int i = 0; i < padding; i++)
- 3774: 2a05 addiw s4,s4,1
- _out_char(ctx, ' ');
- 3776: a73fd0ef jal 11e8 <_out_char>
- for (int i = 0; i < padding; i++)
- 377a: ff441ae3 bne s0,s4,376e <_vprintf_core.constprop.0.isra.0+0x712>
- _out_char(ctx, c);
- 377e: 85e6 mv a1,s9
- 3780: 8526 mv a0,s1
- 3782: a67fd0ef jal 11e8 <_out_char>
- const char *s = va_arg(ap, char *);
- 3786: 0c21 addi s8,s8,8
- 3788: ba09 j 309a <_vprintf_core.constprop.0.isra.0+0x3e>
- val = is_signed ? (uint64)va_arg(ap, long) : (uint64)va_arg(ap, unsigned long);
- 378a: 000c3683 ld a3,0(s8)
- 378e: 008c0793 addi a5,s8,8
- 3792: e43e sd a5,8(sp)
- 3794: 8e36 mv t3,a3
- if (is_signed)
- 3796: b50d j 35b8 <_vprintf_core.constprop.0.isra.0+0x55c>
- if (spec == 'p' || (flag_hash && val != 0 && (spec == 'x' || spec == 'X')))
- 3798: 8d52 mv s10,s4
- 379a: 4b01 li s6,0
- 379c: b585 j 35fc <_vprintf_core.constprop.0.isra.0+0x5a0>
- digit_len = 0;
- 379e: 4f01 li t5,0
- if (spec == 'p' || (flag_hash && val != 0 && (spec == 'x' || spec == 'X')))
- 37a0: 5c7d li s8,-1
- prefix_str = (spec == 'X') ? "0X" : "0x";
- 37a2: 00002c97 auipc s9,0x2
- 37a6: 976c8c93 addi s9,s9,-1674 # 5118 <_GLOBAL__sub_I__ZSt3cin+0x128>
- 37aa: bda9 j 3604 <_vprintf_core.constprop.0.isra.0+0x5a8>
- if (spec == 'p' || (flag_hash && val != 0 && (spec == 'x' || spec == 'X')))
- 37ac: 8d52 mv s10,s4
- 37ae: 4b01 li s6,0
- 37b0: b735 j 36dc <_vprintf_core.constprop.0.isra.0+0x680>
- int base = (spec == 'x' || spec == 'X' || spec == 'p') ? 16 : 10;
- 37b2: 07000693 li a3,112
- 37b6: 04dc8263 beq s9,a3,37fa <_vprintf_core.constprop.0.isra.0+0x79e>
- val = is_signed ? (uint64)va_arg(ap, int64) : va_arg(ap, uint64);
- 37ba: 000c3e03 ld t3,0(s8)
- 37be: 8dbe mv s11,a5
- 37c0: 4581 li a1,0
- 37c2: e002 sd zero,0(sp)
- int base = (spec == 'x' || spec == 'X' || spec == 'p') ? 16 : 10;
- 37c4: 4329 li t1,10
- const char *digits = uppercase ? "0123456789ABCDEF" : "0123456789abcdef";
- 37c6: 00002f97 auipc t6,0x2
- 37ca: 93af8f93 addi t6,t6,-1734 # 5100 <_GLOBAL__sub_I__ZSt3cin+0x110>
- 37ce: b1dd j 34b4 <_vprintf_core.constprop.0.isra.0+0x458>
- val = is_signed ? (uint64)va_arg(ap, long) : (uint64)va_arg(ap, unsigned long);
- 37d0: 000c3e03 ld t3,0(s8)
- 37d4: 4581 li a1,0
- 37d6: e002 sd zero,0(sp)
- int base = (spec == 'x' || spec == 'X' || spec == 'p') ? 16 : 10;
- 37d8: 4341 li t1,16
- const char *digits = uppercase ? "0123456789ABCDEF" : "0123456789abcdef";
- 37da: 00002f97 auipc t6,0x2
- 37de: 926f8f93 addi t6,t6,-1754 # 5100 <_GLOBAL__sub_I__ZSt3cin+0x110>
- 37e2: b9c9 j 34b4 <_vprintf_core.constprop.0.isra.0+0x458>
- char spec = *p++;
- 37e4: 8dbe mv s11,a5
- 37e6: b911 j 33fa <_vprintf_core.constprop.0.isra.0+0x39e>
- for (int i = digit_len - 1; i >= 0; i--)
- 37e8: 577d li a4,-1
- 37ea: 4401 li s0,0
- 37ec: d6ec19e3 bne s8,a4,355e <_vprintf_core.constprop.0.isra.0+0x502>
- char spec = *p++;
- 37f0: 6c22 ld s8,8(sp)
- 37f2: b065 j 309a <_vprintf_core.constprop.0.isra.0+0x3e>
- val = is_signed ? (uint64)va_arg(ap, long) : (uint64)va_arg(ap, unsigned long);
- 37f4: 000c3e03 ld t3,0(s8)
- const char *digits = uppercase ? "0123456789ABCDEF" : "0123456789abcdef";
- 37f8: b549 j 367a <_vprintf_core.constprop.0.isra.0+0x61e>
- int base = (spec == 'x' || spec == 'X' || spec == 'p') ? 16 : 10;
- 37fa: 8dbe mv s11,a5
- val = (uint64)va_arg(ap, void *);
- 37fc: 000c3e03 ld t3,0(s8)
- 3800: 4581 li a1,0
- 3802: 07000c93 li s9,112
- 3806: e002 sd zero,0(sp)
- 3808: 4341 li t1,16
- const char *digits = uppercase ? "0123456789ABCDEF" : "0123456789abcdef";
- 380a: 00002f97 auipc t6,0x2
- 380e: 8f6f8f93 addi t6,t6,-1802 # 5100 <_GLOBAL__sub_I__ZSt3cin+0x110>
- 3812: b14d j 34b4 <_vprintf_core.constprop.0.isra.0+0x458>
- prefix_str = (spec == 'X') ? "0X" : "0x";
- 3814: 00002c97 auipc s9,0x2
- 3818: 90cc8c93 addi s9,s9,-1780 # 5120 <_GLOBAL__sub_I__ZSt3cin+0x130>
- 381c: b3e5 j 3604 <_vprintf_core.constprop.0.isra.0+0x5a8>
- val = (uint64)va_arg(ap, void *);
- 381e: 008c0713 addi a4,s8,8
- val = is_signed ? (uint64)va_arg(ap, int64) : va_arg(ap, uint64);
- 3822: 000c3e03 ld t3,0(s8)
- val = (uint64)va_arg(ap, void *);
- 3826: e43a sd a4,8(sp)
- val = is_signed ? (uint64)va_arg(ap, int64) : va_arg(ap, uint64);
- 3828: 8dbe mv s11,a5
- 382a: bd81 j 367a <_vprintf_core.constprop.0.isra.0+0x61e>
- 382c: 8d52 mv s10,s4
- 382e: 4b01 li s6,0
- 3830: 4b81 li s7,0
- 3832: bd59 j 36c8 <_vprintf_core.constprop.0.isra.0+0x66c>
- int base = (spec == 'x' || spec == 'X' || spec == 'p') ? 16 : 10;
- 3834: 07000693 li a3,112
- 3838: fcdc82e3 beq s9,a3,37fc <_vprintf_core.constprop.0.isra.0+0x7a0>
- else if (len_mod == 1)
- 383c: 01ce8c63 beq t4,t3,3854 <_vprintf_core.constprop.0.isra.0+0x7f8>
- val = is_signed ? (uint64)((int64)va_arg(ap, int)) : (uint64)va_arg(ap, uint32);
- 3840: 000c6e03 lwu t3,0(s8)
- const char *digits = uppercase ? "0123456789ABCDEF" : "0123456789abcdef";
- 3844: 4581 li a1,0
- 3846: e002 sd zero,0(sp)
- 3848: 4329 li t1,10
- 384a: 00002f97 auipc t6,0x2
- 384e: 8b6f8f93 addi t6,t6,-1866 # 5100 <_GLOBAL__sub_I__ZSt3cin+0x110>
- 3852: b18d j 34b4 <_vprintf_core.constprop.0.isra.0+0x458>
- val = is_signed ? (uint64)va_arg(ap, long) : (uint64)va_arg(ap, unsigned long);
- 3854: 000c3e03 ld t3,0(s8)
- if (is_signed)
- 3858: b7f5 j 3844 <_vprintf_core.constprop.0.isra.0+0x7e8>
-
-000000000000385a <vsnprintf>:
-{
- 385a: 7139 addi sp,sp,-64
- 385c: f822 sd s0,48(sp)
- 385e: f426 sd s1,40(sp)
- 3860: 842e mv s0,a1
- 3862: 84aa mv s1,a0
- 3864: 85b2 mv a1,a2
- _vprintf_core(&ctx, format, ap);
- 3866: 850a mv a0,sp
- 3868: 8636 mv a2,a3
-{
- 386a: fc06 sd ra,56(sp)
- ctx.buf = str;
- 386c: e026 sd s1,0(sp)
- ctx.limit = size;
- 386e: e422 sd s0,8(sp)
- ctx.written = 0;
- 3870: e802 sd zero,16(sp)
- ctx.stream = NULL;
- 3872: ec02 sd zero,24(sp)
- _vprintf_core(&ctx, format, ap);
- 3874: fe8ff0ef jal 305c <_vprintf_core.constprop.0.isra.0>
- if (ctx.written < size)
- 3878: 6542 ld a0,16(sp)
- if (size > 0)
- 387a: c411 beqz s0,3886 <vsnprintf+0x2c>
- if (ctx.written < size)
- 387c: 00857b63 bgeu a0,s0,3892 <vsnprintf+0x38>
- str[ctx.written] = '\0';
- 3880: 94aa add s1,s1,a0
- 3882: 00048023 sb zero,0(s1)
-}
- 3886: 70e2 ld ra,56(sp)
- 3888: 7442 ld s0,48(sp)
- 388a: 74a2 ld s1,40(sp)
- 388c: 2501 sext.w a0,a0
- 388e: 6121 addi sp,sp,64
- 3890: 8082 ret
- str[size - 1] = '\0';
- 3892: 94a2 add s1,s1,s0
- 3894: fe048fa3 sb zero,-1(s1)
-}
- 3898: 70e2 ld ra,56(sp)
- 389a: 7442 ld s0,48(sp)
- 389c: 74a2 ld s1,40(sp)
- 389e: 2501 sext.w a0,a0
- 38a0: 6121 addi sp,sp,64
- 38a2: 8082 ret
-
-00000000000038a4 <snprintf>:
-{
- 38a4: 7119 addi sp,sp,-128
- 38a6: e0a2 sd s0,64(sp)
- 38a8: fc26 sd s1,56(sp)
- 38aa: 842e mv s0,a1
- 38ac: 84aa mv s1,a0
- 38ae: 85b2 mv a1,a2
- _vprintf_core(&ctx, format, ap);
- 38b0: 0808 addi a0,sp,16
- va_start(ap, format);
- 38b2: 08b0 addi a2,sp,88
-{
- 38b4: e486 sd ra,72(sp)
- 38b6: ecb6 sd a3,88(sp)
- 38b8: f0ba sd a4,96(sp)
- 38ba: f4be sd a5,104(sp)
- 38bc: f8c2 sd a6,112(sp)
- 38be: fcc6 sd a7,120(sp)
- va_start(ap, format);
- 38c0: e432 sd a2,8(sp)
- ctx.buf = str;
- 38c2: e826 sd s1,16(sp)
- ctx.limit = size;
- 38c4: ec22 sd s0,24(sp)
- ctx.written = 0;
- 38c6: f002 sd zero,32(sp)
- ctx.stream = NULL;
- 38c8: f402 sd zero,40(sp)
- _vprintf_core(&ctx, format, ap);
- 38ca: f92ff0ef jal 305c <_vprintf_core.constprop.0.isra.0>
- if (ctx.written < size)
- 38ce: 7502 ld a0,32(sp)
- if (size > 0)
- 38d0: c411 beqz s0,38dc <snprintf+0x38>
- if (ctx.written < size)
- 38d2: 00857b63 bgeu a0,s0,38e8 <snprintf+0x44>
- str[ctx.written] = '\0';
- 38d6: 94aa add s1,s1,a0
- 38d8: 00048023 sb zero,0(s1)
-}
- 38dc: 60a6 ld ra,72(sp)
- 38de: 6406 ld s0,64(sp)
- 38e0: 74e2 ld s1,56(sp)
- 38e2: 2501 sext.w a0,a0
- 38e4: 6109 addi sp,sp,128
- 38e6: 8082 ret
- str[size - 1] = '\0';
- 38e8: 94a2 add s1,s1,s0
- 38ea: fe048fa3 sb zero,-1(s1)
-}
- 38ee: 60a6 ld ra,72(sp)
- 38f0: 6406 ld s0,64(sp)
- 38f2: 74e2 ld s1,56(sp)
- 38f4: 2501 sext.w a0,a0
- 38f6: 6109 addi sp,sp,128
- 38f8: 8082 ret
-
-00000000000038fa <printf>:
-{
- 38fa: 7119 addi sp,sp,-128
- va_start(ap, format);
- 38fc: 04810313 addi t1,sp,72
-{
- 3900: e4ae sd a1,72(sp)
- 3902: e8b2 sd a2,80(sp)
- 3904: f4be sd a5,104(sp)
- _vprintf_core(&ctx, format, ap);
- 3906: 85aa mv a1,a0
- ctx.stream = stdout;
- 3908: 00004797 auipc a5,0x4
- 390c: de87b783 ld a5,-536(a5) # 76f0 <stdout>
- _vprintf_core(&ctx, format, ap);
- 3910: 0808 addi a0,sp,16
- 3912: 861a mv a2,t1
-{
- 3914: fc06 sd ra,56(sp)
- 3916: ecb6 sd a3,88(sp)
- 3918: f0ba sd a4,96(sp)
- 391a: f8c2 sd a6,112(sp)
- 391c: fcc6 sd a7,120(sp)
- va_start(ap, format);
- 391e: e41a sd t1,8(sp)
- ctx.buf = NULL;
- 3920: e802 sd zero,16(sp)
- ctx.limit = 0;
- 3922: ec02 sd zero,24(sp)
- ctx.written = 0;
- 3924: f002 sd zero,32(sp)
- ctx.stream = stdout;
- 3926: f43e sd a5,40(sp)
- _vprintf_core(&ctx, format, ap);
- 3928: f34ff0ef jal 305c <_vprintf_core.constprop.0.isra.0>
-}
- 392c: 70e2 ld ra,56(sp)
- 392e: 5502 lw a0,32(sp)
- 3930: 6109 addi sp,sp,128
- 3932: 8082 ret
-
-0000000000003934 <sscanf>:
-{
- 3934: 7159 addi sp,sp,-112
- va_start(ap, format);
- 3936: 04010e13 addi t3,sp,64
-{
- 393a: 8eaa mv t4,a0
- ctx.fd = -1;
- 393c: 537d li t1,-1
-{
- 393e: e0b2 sd a2,64(sp)
- int ret = _vscanf_core(&ctx, format, ap);
- 3940: 0808 addi a0,sp,16
- 3942: 8672 mv a2,t3
-{
- 3944: fc06 sd ra,56(sp)
- 3946: e4b6 sd a3,72(sp)
- 3948: e8ba sd a4,80(sp)
- 394a: ecbe sd a5,88(sp)
- 394c: f0c2 sd a6,96(sp)
- 394e: f4c6 sd a7,104(sp)
- va_start(ap, format);
- 3950: e472 sd t3,8(sp)
- ctx.buf = str;
- 3952: e876 sd t4,16(sp)
- ctx.fd = -1;
- 3954: cc1a sw t1,24(sp)
- ctx.pos = 0;
- 3956: f002 sd zero,32(sp)
- ctx.ungotten = -1;
- 3958: d41a sw t1,40(sp)
- int ret = _vscanf_core(&ctx, format, ap);
- 395a: 81efd0ef jal 978 <_vscanf_core.constprop.0>
-}
- 395e: 70e2 ld ra,56(sp)
- 3960: 6165 addi sp,sp,112
- 3962: 8082 ret
-
-0000000000003964 <scanf>:
-{
- 3964: 7119 addi sp,sp,-128
- va_start(ap, format);
- 3966: 04810313 addi t1,sp,72
-{
- 396a: e4ae sd a1,72(sp)
- 396c: e8b2 sd a2,80(sp)
- 396e: f4be sd a5,104(sp)
- int ret = _vscanf_core(&ctx, format, ap);
- 3970: 85aa mv a1,a0
- ctx.ungotten = -1;
- 3972: 57fd li a5,-1
- int ret = _vscanf_core(&ctx, format, ap);
- 3974: 0808 addi a0,sp,16
- 3976: 861a mv a2,t1
-{
- 3978: fc06 sd ra,56(sp)
- 397a: ecb6 sd a3,88(sp)
- 397c: f0ba sd a4,96(sp)
- 397e: f8c2 sd a6,112(sp)
- 3980: fcc6 sd a7,120(sp)
- va_start(ap, format);
- 3982: e41a sd t1,8(sp)
- ctx.buf = NULL;
- 3984: e802 sd zero,16(sp)
- ctx.fd = STDIN_FD;
- 3986: cc02 sw zero,24(sp)
- ctx.pos = 0;
- 3988: f002 sd zero,32(sp)
- ctx.ungotten = -1;
- 398a: d43e sw a5,40(sp)
- int ret = _vscanf_core(&ctx, format, ap);
- 398c: fedfc0ef jal 978 <_vscanf_core.constprop.0>
-}
- 3990: 70e2 ld ra,56(sp)
- 3992: 6109 addi sp,sp,128
- 3994: 8082 ret
-
-0000000000003996 <fopen>:
-{
- 3996: 1101 addi sp,sp,-32
- 3998: e426 sd s1,8(sp)
- 399a: 84ae mv s1,a1
- 399c: e04a sd s2,0(sp)
- if (strcmp(mode, "r") == 0)
- 399e: 00001597 auipc a1,0x1
- 39a2: 7a258593 addi a1,a1,1954 # 5140 <_GLOBAL__sub_I__ZSt3cin+0x150>
-{
- 39a6: 892a mv s2,a0
- if (strcmp(mode, "r") == 0)
- 39a8: 8526 mv a0,s1
-{
- 39aa: e822 sd s0,16(sp)
- 39ac: ec06 sd ra,24(sp)
- if (strcmp(mode, "r") == 0)
- 39ae: 298010ef jal 4c46 <strcmp>
- 39b2: 842a mv s0,a0
- 39b4: c919 beqz a0,39ca <fopen+0x34>
- else if (strcmp(mode, "w") == 0)
- 39b6: 00001597 auipc a1,0x1
- 39ba: 79258593 addi a1,a1,1938 # 5148 <_GLOBAL__sub_I__ZSt3cin+0x158>
- 39be: 8526 mv a0,s1
- 39c0: 286010ef jal 4c46 <strcmp>
- flags = O_WRONLY | O_CREAT | O_TRUNC;
- 39c4: 24100413 li s0,577
- else if (strcmp(mode, "w") == 0)
- 39c8: ed39 bnez a0,3a26 <fopen+0x90>
- int64 fd = open(filename, flags);
- 39ca: 85a2 mv a1,s0
- 39cc: 854a mv a0,s2
- 39ce: f42fc0ef jal 110 <open>
- 39d2: 84aa mv s1,a0
- if (fd < 0)
- 39d4: 06054c63 bltz a0,3a4c <fopen+0xb6>
- FILE *f = (FILE *)malloc(sizeof(FILE));
- 39d8: 42000513 li a0,1056
- 39dc: 2f3000ef jal 44ce <malloc>
- 39e0: 892a mv s2,a0
- if (!f)
- 39e2: c53d beqz a0,3a50 <fopen+0xba>
- memset(f, 0, sizeof(FILE));
- 39e4: 42000613 li a2,1056
- 39e8: 4581 li a1,0
- 39ea: 0ee010ef jal 4ad8 <memset>
- if (fd == 1)
- 39ee: 4785 li a5,1
- f->fd = (int)fd;
- 39f0: 00992023 sw s1,0(s2)
- f->flags = flags;
- 39f4: 00892223 sw s0,4(s2)
- if (fd == 1)
- 39f8: 00f48e63 beq s1,a5,3a14 <fopen+0x7e>
- else if (fd == 2)
- 39fc: 4789 li a5,2
- 39fe: 00f48b63 beq s1,a5,3a14 <fopen+0x7e>
- f->buf_mode = 0;
- 3a02: 40092e23 sw zero,1052(s2)
-}
- 3a06: 60e2 ld ra,24(sp)
- 3a08: 6442 ld s0,16(sp)
- 3a0a: 64a2 ld s1,8(sp)
- 3a0c: 854a mv a0,s2
- 3a0e: 6902 ld s2,0(sp)
- 3a10: 6105 addi sp,sp,32
- 3a12: 8082 ret
- 3a14: 60e2 ld ra,24(sp)
- 3a16: 6442 ld s0,16(sp)
- f->buf_mode = 2;
- 3a18: 40992e23 sw s1,1052(s2)
-}
- 3a1c: 854a mv a0,s2
- 3a1e: 64a2 ld s1,8(sp)
- 3a20: 6902 ld s2,0(sp)
- 3a22: 6105 addi sp,sp,32
- 3a24: 8082 ret
- else if (strcmp(mode, "a") == 0)
- 3a26: 00001597 auipc a1,0x1
- 3a2a: 72a58593 addi a1,a1,1834 # 5150 <_GLOBAL__sub_I__ZSt3cin+0x160>
- 3a2e: 8526 mv a0,s1
- 3a30: 216010ef jal 4c46 <strcmp>
- flags = O_WRONLY | O_CREAT | O_APPEND;
- 3a34: 44100413 li s0,1089
- else if (strcmp(mode, "a") == 0)
- 3a38: d949 beqz a0,39ca <fopen+0x34>
- else if (strcmp(mode, "r+") == 0)
- 3a3a: 00001597 auipc a1,0x1
- 3a3e: 71e58593 addi a1,a1,1822 # 5158 <_GLOBAL__sub_I__ZSt3cin+0x168>
- 3a42: 8526 mv a0,s1
- 3a44: 202010ef jal 4c46 <strcmp>
- flags = O_RDWR;
- 3a48: 4409 li s0,2
- else if (strcmp(mode, "r+") == 0)
- 3a4a: d141 beqz a0,39ca <fopen+0x34>
- return NULL;
- 3a4c: 4901 li s2,0
- 3a4e: bf65 j 3a06 <fopen+0x70>
- close(fd);
- 3a50: 8526 mv a0,s1
- 3a52: ea6fc0ef jal f8 <close>
- return NULL;
- 3a56: 4901 li s2,0
- 3a58: b77d j 3a06 <fopen+0x70>
-
-0000000000003a5a <fclose>:
- if (!stream)
- 3a5a: cd29 beqz a0,3ab4 <fclose+0x5a>
- if (stream->buf_write_pos > 0)
- 3a5c: 41052603 lw a2,1040(a0)
-{
- 3a60: 1141 addi sp,sp,-16
- 3a62: e022 sd s0,0(sp)
- 3a64: e406 sd ra,8(sp)
- 3a66: 842a mv s0,a0
- if (stream->buf_write_pos > 0)
- 3a68: 02c04a63 bgtz a2,3a9c <fclose+0x42>
- if (stream != stdin && stream != stdout && stream != stderr)
- 3a6c: 00004797 auipc a5,0x4
- 3a70: c8478793 addi a5,a5,-892 # 76f0 <stdout>
- 3a74: 6798 ld a4,8(a5)
- 3a76: 00870e63 beq a4,s0,3a92 <fclose+0x38>
- 3a7a: 6398 ld a4,0(a5)
- 3a7c: 00870b63 beq a4,s0,3a92 <fclose+0x38>
- 3a80: 6b9c ld a5,16(a5)
- 3a82: 00878863 beq a5,s0,3a92 <fclose+0x38>
- close(stream->fd);
- 3a86: 4008 lw a0,0(s0)
- 3a88: e70fc0ef jal f8 <close>
- free(stream);
- 3a8c: 8522 mv a0,s0
- 3a8e: 1cb000ef jal 4458 <free>
-}
- 3a92: 60a2 ld ra,8(sp)
- 3a94: 6402 ld s0,0(sp)
- return 0;
- 3a96: 4501 li a0,0
-}
- 3a98: 0141 addi sp,sp,16
- 3a9a: 8082 ret
- int64 ret = write(stream->fd, stream->buffer, stream->buf_write_pos);
- 3a9c: 4108 lw a0,0(a0)
- 3a9e: 01040593 addi a1,s0,16
- 3aa2: e4efc0ef jal f0 <write>
- if (ret < stream->buf_write_pos)
- 3aa6: 41042783 lw a5,1040(s0)
- 3aaa: 00f54763 blt a0,a5,3ab8 <fclose+0x5e>
- stream->buf_write_pos = 0;
- 3aae: 40042823 sw zero,1040(s0)
- 3ab2: bf6d j 3a6c <fclose+0x12>
- return -1;
- 3ab4: 557d li a0,-1
-}
- 3ab6: 8082 ret
- stream->error = 1;
- 3ab8: 4785 li a5,1
- 3aba: c41c sw a5,8(s0)
- stream->buf_write_pos = 0;
- 3abc: 40042823 sw zero,1040(s0)
- return EOF;
- 3ac0: b775 j 3a6c <fclose+0x12>
-
-0000000000003ac2 <fflush>:
- if (!stream)
- 3ac2: c121 beqz a0,3b02 <fflush+0x40>
- if (stream->buf_write_pos > 0)
- 3ac4: 41052603 lw a2,1040(a0)
-{
- 3ac8: 1141 addi sp,sp,-16
- 3aca: e022 sd s0,0(sp)
- 3acc: e406 sd ra,8(sp)
- 3ace: 842a mv s0,a0
- if (stream->buf_write_pos > 0)
- 3ad0: 00c04763 bgtz a2,3ade <fflush+0x1c>
- return 0;
- 3ad4: 4501 li a0,0
-}
- 3ad6: 60a2 ld ra,8(sp)
- 3ad8: 6402 ld s0,0(sp)
- 3ada: 0141 addi sp,sp,16
- 3adc: 8082 ret
- int64 ret = write(stream->fd, stream->buffer, stream->buf_write_pos);
- 3ade: 4108 lw a0,0(a0)
- 3ae0: 01040593 addi a1,s0,16
- 3ae4: e0cfc0ef jal f0 <write>
- if (ret < stream->buf_write_pos)
- 3ae8: 41042783 lw a5,1040(s0)
- 3aec: 00f54563 blt a0,a5,3af6 <fflush+0x34>
- stream->buf_write_pos = 0;
- 3af0: 40042823 sw zero,1040(s0)
- 3af4: b7c5 j 3ad4 <fflush+0x12>
- stream->error = 1;
- 3af6: 4785 li a5,1
- 3af8: c41c sw a5,8(s0)
- stream->buf_write_pos = 0;
- 3afa: 40042823 sw zero,1040(s0)
- return EOF;
- 3afe: 557d li a0,-1
- 3b00: bfd9 j 3ad6 <fflush+0x14>
- 3b02: 557d li a0,-1
-}
- 3b04: 8082 ret
-
-0000000000003b06 <fprintf>:
-{
- 3b06: 7159 addi sp,sp,-112
- 3b08: fc06 sd ra,56(sp)
- 3b0a: e0b2 sd a2,64(sp)
- 3b0c: e4b6 sd a3,72(sp)
- 3b0e: e8ba sd a4,80(sp)
- 3b10: ecbe sd a5,88(sp)
- 3b12: f0c2 sd a6,96(sp)
- 3b14: f4c6 sd a7,104(sp)
- if (!stream)
- 3b16: cd19 beqz a0,3b34 <fprintf+0x2e>
- va_start(ap, format);
- 3b18: 832a mv t1,a0
- 3b1a: 0090 addi a2,sp,64
- _vprintf_core(&ctx, format, ap);
- 3b1c: 0808 addi a0,sp,16
- va_start(ap, format);
- 3b1e: e432 sd a2,8(sp)
- ctx.buf = NULL;
- 3b20: e802 sd zero,16(sp)
- ctx.limit = 0;
- 3b22: ec02 sd zero,24(sp)
- ctx.written = 0;
- 3b24: f002 sd zero,32(sp)
- ctx.stream = stream;
- 3b26: f41a sd t1,40(sp)
- _vprintf_core(&ctx, format, ap);
- 3b28: d34ff0ef jal 305c <_vprintf_core.constprop.0.isra.0>
- return (int)ctx.written;
- 3b2c: 5502 lw a0,32(sp)
-}
- 3b2e: 70e2 ld ra,56(sp)
- 3b30: 6165 addi sp,sp,112
- 3b32: 8082 ret
- return -1;
- 3b34: 557d li a0,-1
- 3b36: bfe5 j 3b2e <fprintf+0x28>
-
-0000000000003b38 <fscanf>:
-{
- 3b38: 7159 addi sp,sp,-112
- 3b3a: fc06 sd ra,56(sp)
- 3b3c: e0b2 sd a2,64(sp)
- 3b3e: e4b6 sd a3,72(sp)
- 3b40: e8ba sd a4,80(sp)
- 3b42: ecbe sd a5,88(sp)
- 3b44: f0c2 sd a6,96(sp)
- 3b46: f4c6 sd a7,104(sp)
- if (!stream)
- 3b48: cd19 beqz a0,3b66 <fscanf+0x2e>
- ctx.fd = stream->fd;
- 3b4a: 411c lw a5,0(a0)
- va_start(ap, format);
- 3b4c: 0090 addi a2,sp,64
- int ret = _vscanf_core(&ctx, format, ap);
- 3b4e: 0808 addi a0,sp,16
- ctx.fd = stream->fd;
- 3b50: cc3e sw a5,24(sp)
- ctx.ungotten = -1;
- 3b52: 57fd li a5,-1
- va_start(ap, format);
- 3b54: e432 sd a2,8(sp)
- ctx.buf = NULL;
- 3b56: e802 sd zero,16(sp)
- ctx.pos = 0;
- 3b58: f002 sd zero,32(sp)
- ctx.ungotten = -1;
- 3b5a: d43e sw a5,40(sp)
- int ret = _vscanf_core(&ctx, format, ap);
- 3b5c: e1dfc0ef jal 978 <_vscanf_core.constprop.0>
-}
- 3b60: 70e2 ld ra,56(sp)
- 3b62: 6165 addi sp,sp,112
- 3b64: 8082 ret
- return -1;
- 3b66: 557d li a0,-1
- 3b68: bfe5 j 3b60 <fscanf+0x28>
-
-0000000000003b6a <fputc>:
- if (!stream)
- 3b6a: c1e1 beqz a1,3c2a <fputc+0xc0>
-{
- 3b6c: 7179 addi sp,sp,-48
- 3b6e: e84a sd s2,16(sp)
- if (stream->buf_mode == 2)
- 3b70: 41c5a903 lw s2,1052(a1)
-{
- 3b74: f022 sd s0,32(sp)
- 3b76: ec26 sd s1,24(sp)
- 3b78: f406 sd ra,40(sp)
- if (stream->buf_mode == 2)
- 3b7a: 4789 li a5,2
- 3b7c: 842e mv s0,a1
- 3b7e: 84aa mv s1,a0
- char ch = (char)c;
- 3b80: 0ff57713 zext.b a4,a0
- if (stream->buf_mode == 2)
- 3b84: 02f90963 beq s2,a5,3bb6 <fputc+0x4c>
- stream->buffer[stream->buf_write_pos++] = (char)c;
- 3b88: 4105a783 lw a5,1040(a1)
- if (stream->buf_write_pos >= BUFSIZ)
- 3b8c: 3ff00693 li a3,1023
- stream->buffer[stream->buf_write_pos++] = (char)c;
- 3b90: 0017861b addiw a2,a5,1
- 3b94: 40c5a823 sw a2,1040(a1)
- 3b98: 97ae add a5,a5,a1
- 3b9a: 00e78823 sb a4,16(a5)
- if (stream->buf_write_pos >= BUFSIZ)
- 3b9e: 06c6c463 blt a3,a2,3c06 <fputc+0x9c>
- else if (stream->buf_mode == 1 && c == '\n')
- 3ba2: 4785 li a5,1
- 3ba4: 02f90e63 beq s2,a5,3be0 <fputc+0x76>
- return c;
- 3ba8: 8526 mv a0,s1
-}
- 3baa: 70a2 ld ra,40(sp)
- 3bac: 7402 ld s0,32(sp)
- 3bae: 64e2 ld s1,24(sp)
- 3bb0: 6942 ld s2,16(sp)
- 3bb2: 6145 addi sp,sp,48
- 3bb4: 8082 ret
- if (write(stream->fd, &ch, 1) != 1)
- 3bb6: 4188 lw a0,0(a1)
- 3bb8: 4605 li a2,1
- 3bba: 00f10593 addi a1,sp,15
- char ch = (char)c;
- 3bbe: 00e107a3 sb a4,15(sp)
- if (write(stream->fd, &ch, 1) != 1)
- 3bc2: d2efc0ef jal f0 <write>
- 3bc6: 872a mv a4,a0
- 3bc8: 4785 li a5,1
- return c;
- 3bca: 8526 mv a0,s1
- if (write(stream->fd, &ch, 1) != 1)
- 3bcc: fcf70fe3 beq a4,a5,3baa <fputc+0x40>
-}
- 3bd0: 70a2 ld ra,40(sp)
- stream->error = 1;
- 3bd2: c41c sw a5,8(s0)
-}
- 3bd4: 7402 ld s0,32(sp)
- 3bd6: 64e2 ld s1,24(sp)
- 3bd8: 6942 ld s2,16(sp)
- return EOF;
- 3bda: 557d li a0,-1
-}
- 3bdc: 6145 addi sp,sp,48
- 3bde: 8082 ret
- else if (stream->buf_mode == 1 && c == '\n')
- 3be0: 47a9 li a5,10
- 3be2: fcf513e3 bne a0,a5,3ba8 <fputc+0x3e>
- if (stream->buf_write_pos > 0)
- 3be6: fcc051e3 blez a2,3ba8 <fputc+0x3e>
- int64 ret = write(stream->fd, stream->buffer, stream->buf_write_pos);
- 3bea: 4188 lw a0,0(a1)
- 3bec: 05c1 addi a1,a1,16
- 3bee: d02fc0ef jal f0 <write>
- if (ret < stream->buf_write_pos)
- 3bf2: 41042783 lw a5,1040(s0)
- 3bf6: 02f55063 bge a0,a5,3c16 <fputc+0xac>
- stream->error = 1;
- 3bfa: 01242423 sw s2,8(s0)
- stream->buf_write_pos = 0;
- 3bfe: 40042823 sw zero,1040(s0)
- return c;
- 3c02: 8526 mv a0,s1
- 3c04: b75d j 3baa <fputc+0x40>
- int64 ret = write(stream->fd, stream->buffer, stream->buf_write_pos);
- 3c06: 4188 lw a0,0(a1)
- 3c08: 05c1 addi a1,a1,16
- 3c0a: ce6fc0ef jal f0 <write>
- if (ret < stream->buf_write_pos)
- 3c0e: 41042783 lw a5,1040(s0)
- 3c12: 00f54663 blt a0,a5,3c1e <fputc+0xb4>
- stream->buf_write_pos = 0;
- 3c16: 40042823 sw zero,1040(s0)
- return c;
- 3c1a: 8526 mv a0,s1
- 3c1c: b779 j 3baa <fputc+0x40>
- stream->error = 1;
- 3c1e: 4785 li a5,1
- 3c20: c41c sw a5,8(s0)
- stream->buf_write_pos = 0;
- 3c22: 40042823 sw zero,1040(s0)
- return c;
- 3c26: 8526 mv a0,s1
- 3c28: b749 j 3baa <fputc+0x40>
- return EOF;
- 3c2a: 557d li a0,-1
-}
- 3c2c: 8082 ret
-
-0000000000003c2e <fputs>:
- if (!stream)
- 3c2e: c1ed beqz a1,3d10 <fputs+0xe2>
-{
- 3c30: 711d addi sp,sp,-96
- 3c32: e4a6 sd s1,72(sp)
- 3c34: ec86 sd ra,88(sp)
- while (*s)
- 3c36: 00054703 lbu a4,0(a0)
- 3c3a: 84aa mv s1,a0
- 3c3c: cf25 beqz a4,3cb4 <fputs+0x86>
- 3c3e: e8a2 sd s0,80(sp)
- 3c40: e0ca sd s2,64(sp)
- 3c42: fc4e sd s3,56(sp)
- 3c44: f852 sd s4,48(sp)
- 3c46: f456 sd s5,40(sp)
- 3c48: f05a sd s6,32(sp)
- 3c4a: ec5e sd s7,24(sp)
- 3c4c: 842e mv s0,a1
- if (stream->buf_mode == 2)
- 3c4e: 4909 li s2,2
- if (stream->buf_write_pos >= BUFSIZ)
- 3c50: 3ff00b13 li s6,1023
- else if (stream->buf_mode == 1 && c == '\n')
- 3c54: 4985 li s3,1
- 3c56: 4a29 li s4,10
- int64 ret = write(stream->fd, stream->buffer, stream->buf_write_pos);
- 3c58: 01058a93 addi s5,a1,16
- if (write(stream->fd, &ch, 1) != 1)
- 3c5c: 00f10b93 addi s7,sp,15
- 3c60: a031 j 3c6c <fputs+0x3e>
- else if (stream->buf_mode == 1 && c == '\n')
- 3c62: 09368563 beq a3,s3,3cec <fputs+0xbe>
- while (*s)
- 3c66: 0004c703 lbu a4,0(s1)
- 3c6a: cf15 beqz a4,3ca6 <fputs+0x78>
- if (stream->buf_mode == 2)
- 3c6c: 41c42683 lw a3,1052(s0)
- if (fputc(*s++, stream) == EOF)
- 3c70: 0485 addi s1,s1,1
- if (stream->buf_mode == 2)
- 3c72: 05268663 beq a3,s2,3cbe <fputs+0x90>
- stream->buffer[stream->buf_write_pos++] = (char)c;
- 3c76: 41042783 lw a5,1040(s0)
- 3c7a: 0017861b addiw a2,a5,1
- 3c7e: 40c42823 sw a2,1040(s0)
- 3c82: 97a2 add a5,a5,s0
- 3c84: 00e78823 sb a4,16(a5)
- if (stream->buf_write_pos >= BUFSIZ)
- 3c88: fccb5de3 bge s6,a2,3c62 <fputs+0x34>
- int64 ret = write(stream->fd, stream->buffer, stream->buf_write_pos);
- 3c8c: 4008 lw a0,0(s0)
- 3c8e: 85d6 mv a1,s5
- 3c90: c60fc0ef jal f0 <write>
- if (ret < stream->buf_write_pos)
- 3c94: 41042783 lw a5,1040(s0)
- 3c98: 06f54763 blt a0,a5,3d06 <fputs+0xd8>
- stream->buf_write_pos = 0;
- 3c9c: 40042823 sw zero,1040(s0)
- while (*s)
- 3ca0: 0004c703 lbu a4,0(s1)
- 3ca4: f761 bnez a4,3c6c <fputs+0x3e>
- 3ca6: 6446 ld s0,80(sp)
- 3ca8: 6906 ld s2,64(sp)
- 3caa: 79e2 ld s3,56(sp)
- 3cac: 7a42 ld s4,48(sp)
- 3cae: 7aa2 ld s5,40(sp)
- 3cb0: 7b02 ld s6,32(sp)
- 3cb2: 6be2 ld s7,24(sp)
-}
- 3cb4: 60e6 ld ra,88(sp)
- 3cb6: 64a6 ld s1,72(sp)
- return 0;
- 3cb8: 4501 li a0,0
-}
- 3cba: 6125 addi sp,sp,96
- 3cbc: 8082 ret
- if (write(stream->fd, &ch, 1) != 1)
- 3cbe: 4008 lw a0,0(s0)
- 3cc0: 4605 li a2,1
- 3cc2: 85de mv a1,s7
- char ch = (char)c;
- 3cc4: 00e107a3 sb a4,15(sp)
- if (write(stream->fd, &ch, 1) != 1)
- 3cc8: c28fc0ef jal f0 <write>
- 3ccc: f9350de3 beq a0,s3,3c66 <fputs+0x38>
- stream->error = 1;
- 3cd0: 01342423 sw s3,8(s0)
-}
- 3cd4: 60e6 ld ra,88(sp)
- 3cd6: 6446 ld s0,80(sp)
- 3cd8: 6906 ld s2,64(sp)
- 3cda: 79e2 ld s3,56(sp)
- 3cdc: 7a42 ld s4,48(sp)
- 3cde: 7aa2 ld s5,40(sp)
- 3ce0: 7b02 ld s6,32(sp)
- 3ce2: 6be2 ld s7,24(sp)
- 3ce4: 64a6 ld s1,72(sp)
- return -1;
- 3ce6: 557d li a0,-1
-}
- 3ce8: 6125 addi sp,sp,96
- 3cea: 8082 ret
- else if (stream->buf_mode == 1 && c == '\n')
- 3cec: f7471de3 bne a4,s4,3c66 <fputs+0x38>
- if (stream->buf_write_pos > 0)
- 3cf0: f6c05be3 blez a2,3c66 <fputs+0x38>
- int64 ret = write(stream->fd, stream->buffer, stream->buf_write_pos);
- 3cf4: 4008 lw a0,0(s0)
- 3cf6: 01040593 addi a1,s0,16
- 3cfa: bf6fc0ef jal f0 <write>
- if (ret < stream->buf_write_pos)
- 3cfe: 41042783 lw a5,1040(s0)
- 3d02: f8f55de3 bge a0,a5,3c9c <fputs+0x6e>
- stream->error = 1;
- 3d06: 4785 li a5,1
- 3d08: c41c sw a5,8(s0)
- stream->buf_write_pos = 0;
- 3d0a: 40042823 sw zero,1040(s0)
- return EOF;
- 3d0e: bfa1 j 3c66 <fputs+0x38>
- return -1;
- 3d10: 557d li a0,-1
-}
- 3d12: 8082 ret
-
-0000000000003d14 <fgetc>:
- if (!stream)
- 3d14: c949 beqz a0,3da6 <fgetc+0x92>
- if (stream->buf_write_pos > 0)
- 3d16: 41052603 lw a2,1040(a0)
-{
- 3d1a: 1141 addi sp,sp,-16
- 3d1c: e022 sd s0,0(sp)
- 3d1e: e406 sd ra,8(sp)
- 3d20: 842a mv s0,a0
- if (stream->buf_write_pos > 0)
- 3d22: 04c04863 bgtz a2,3d72 <fgetc+0x5e>
- if (stream->buf_read_pos < stream->buf_read_cnt)
- 3d26: 41442783 lw a5,1044(s0)
- 3d2a: 41842703 lw a4,1048(s0)
- 3d2e: 00e7dd63 bge a5,a4,3d48 <fgetc+0x34>
- return (unsigned char)stream->buffer[stream->buf_read_pos++];
- 3d32: 0017871b addiw a4,a5,1
- 3d36: 40e42a23 sw a4,1044(s0)
- 3d3a: 943e add s0,s0,a5
- 3d3c: 01044503 lbu a0,16(s0)
-}
- 3d40: 60a2 ld ra,8(sp)
- 3d42: 6402 ld s0,0(sp)
- 3d44: 0141 addi sp,sp,16
- 3d46: 8082 ret
- int64 ret = read(stream->fd, stream->buffer, BUFSIZ);
- 3d48: 4008 lw a0,0(s0)
- 3d4a: 40000613 li a2,1024
- 3d4e: 01040593 addi a1,s0,16
- 3d52: b96fc0ef jal e8 <read>
- 3d56: 87aa mv a5,a0
- if (ret <= 0)
- 3d58: 02a05e63 blez a0,3d94 <fgetc+0x80>
- stream->buf_read_cnt = (int)ret;
- 3d5c: 40f42c23 sw a5,1048(s0)
- return (unsigned char)stream->buffer[stream->buf_read_pos++];
- 3d60: 4785 li a5,1
- 3d62: 01044503 lbu a0,16(s0)
-}
- 3d66: 60a2 ld ra,8(sp)
- return (unsigned char)stream->buffer[stream->buf_read_pos++];
- 3d68: 40f42a23 sw a5,1044(s0)
-}
- 3d6c: 6402 ld s0,0(sp)
- 3d6e: 0141 addi sp,sp,16
- 3d70: 8082 ret
- int64 ret = write(stream->fd, stream->buffer, stream->buf_write_pos);
- 3d72: 4108 lw a0,0(a0)
- 3d74: 01040593 addi a1,s0,16
- 3d78: b78fc0ef jal f0 <write>
- if (ret < stream->buf_write_pos)
- 3d7c: 41042783 lw a5,1040(s0)
- 3d80: 00f54563 blt a0,a5,3d8a <fgetc+0x76>
- stream->buf_write_pos = 0;
- 3d84: 40042823 sw zero,1040(s0)
- 3d88: bf79 j 3d26 <fgetc+0x12>
- stream->error = 1;
- 3d8a: 4785 li a5,1
- 3d8c: c41c sw a5,8(s0)
- stream->buf_write_pos = 0;
- 3d8e: 40042823 sw zero,1040(s0)
- return EOF;
- 3d92: bf51 j 3d26 <fgetc+0x12>
- if (ret == 0)
- 3d94: e509 bnez a0,3d9e <fgetc+0x8a>
- stream->eof = 1;
- 3d96: 4785 li a5,1
- 3d98: c45c sw a5,12(s0)
- return EOF;
- 3d9a: 557d li a0,-1
- 3d9c: b755 j 3d40 <fgetc+0x2c>
- stream->error = 1;
- 3d9e: 4785 li a5,1
- 3da0: c41c sw a5,8(s0)
- return EOF;
- 3da2: 557d li a0,-1
- 3da4: bf71 j 3d40 <fgetc+0x2c>
- 3da6: 557d li a0,-1
-}
- 3da8: 8082 ret
-
-0000000000003daa <fgets>:
- if (!stream || n <= 0)
- 3daa: ce5d beqz a2,3e68 <fgets+0xbe>
- 3dac: 0ab05e63 blez a1,3e68 <fgets+0xbe>
-{
- 3db0: 715d addi sp,sp,-80
- 3db2: e0a2 sd s0,64(sp)
- 3db4: fc26 sd s1,56(sp)
- 3db6: f84a sd s2,48(sp)
- 3db8: f44e sd s3,40(sp)
- 3dba: f052 sd s4,32(sp)
- 3dbc: ec56 sd s5,24(sp)
- 3dbe: e85a sd s6,16(sp)
- 3dc0: e45e sd s7,8(sp)
- 3dc2: e486 sd ra,72(sp)
- 3dc4: 8432 mv s0,a2
- 3dc6: 8aaa mv s5,a0
- 3dc8: 892a mv s2,a0
- 3dca: fff58b9b addiw s7,a1,-1
- int i = 0, c;
- 3dce: 4481 li s1,0
- int64 ret = write(stream->fd, stream->buffer, stream->buf_write_pos);
- 3dd0: 01060993 addi s3,a2,16
- return (unsigned char)stream->buffer[stream->buf_read_pos++];
- 3dd4: 4b05 li s6,1
- if (c == '\n')
- 3dd6: 4a29 li s4,10
- while (i < n - 1)
- 3dd8: 05748163 beq s1,s7,3e1a <fgets+0x70>
- if (stream->buf_write_pos > 0)
- 3ddc: 41042603 lw a2,1040(s0)
- int64 ret = write(stream->fd, stream->buffer, stream->buf_write_pos);
- 3de0: 85ce mv a1,s3
- if (stream->buf_write_pos > 0)
- 3de2: 06c04963 bgtz a2,3e54 <fgets+0xaa>
- if (stream->buf_read_pos < stream->buf_read_cnt)
- 3de6: 41442783 lw a5,1044(s0)
- 3dea: 41842703 lw a4,1048(s0)
- int64 ret = read(stream->fd, stream->buffer, BUFSIZ);
- 3dee: 40000613 li a2,1024
- return (unsigned char)stream->buffer[stream->buf_read_pos++];
- 3df2: 0017851b addiw a0,a5,1
- 3df6: 00f406b3 add a3,s0,a5
- int64 ret = read(stream->fd, stream->buffer, BUFSIZ);
- 3dfa: 85ce mv a1,s3
- if (stream->buf_read_pos < stream->buf_read_cnt)
- 3dfc: 02e7de63 bge a5,a4,3e38 <fgets+0x8e>
- return (unsigned char)stream->buffer[stream->buf_read_pos++];
- 3e00: 40a42a23 sw a0,1044(s0)
- 3e04: 0106c783 lbu a5,16(a3)
- 3e08: 0007871b sext.w a4,a5
- str[i++] = (char)c;
- 3e0c: 00f90023 sb a5,0(s2)
- 3e10: 2485 addiw s1,s1,1
- if (c == '\n')
- 3e12: 0905 addi s2,s2,1
- 3e14: fd4712e3 bne a4,s4,3dd8 <fgets+0x2e>
- str[i++] = (char)c;
- 3e18: 8ba6 mv s7,s1
- str[i] = '\0';
- 3e1a: 9bd6 add s7,s7,s5
- 3e1c: 000b8023 sb zero,0(s7)
- return str;
- 3e20: 8556 mv a0,s5
-}
- 3e22: 60a6 ld ra,72(sp)
- 3e24: 6406 ld s0,64(sp)
- 3e26: 74e2 ld s1,56(sp)
- 3e28: 7942 ld s2,48(sp)
- 3e2a: 79a2 ld s3,40(sp)
- 3e2c: 7a02 ld s4,32(sp)
- 3e2e: 6ae2 ld s5,24(sp)
- 3e30: 6b42 ld s6,16(sp)
- 3e32: 6ba2 ld s7,8(sp)
- 3e34: 6161 addi sp,sp,80
- 3e36: 8082 ret
- int64 ret = read(stream->fd, stream->buffer, BUFSIZ);
- 3e38: 4008 lw a0,0(s0)
- 3e3a: aaefc0ef jal e8 <read>
- if (ret <= 0)
- 3e3e: 02a05c63 blez a0,3e76 <fgets+0xcc>
- return (unsigned char)stream->buffer[stream->buf_read_pos++];
- 3e42: 01044783 lbu a5,16(s0)
- stream->buf_read_cnt = (int)ret;
- 3e46: 40a42c23 sw a0,1048(s0)
- return (unsigned char)stream->buffer[stream->buf_read_pos++];
- 3e4a: 41642a23 sw s6,1044(s0)
- 3e4e: 0007871b sext.w a4,a5
- if (c == -1)
- 3e52: bf6d j 3e0c <fgets+0x62>
- int64 ret = write(stream->fd, stream->buffer, stream->buf_write_pos);
- 3e54: 4008 lw a0,0(s0)
- 3e56: a9afc0ef jal f0 <write>
- if (ret < stream->buf_write_pos)
- 3e5a: 41042783 lw a5,1040(s0)
- 3e5e: 00f54763 blt a0,a5,3e6c <fgets+0xc2>
- stream->buf_write_pos = 0;
- 3e62: 40042823 sw zero,1040(s0)
- 3e66: b741 j 3de6 <fgets+0x3c>
- return NULL;
- 3e68: 4501 li a0,0
-}
- 3e6a: 8082 ret
- stream->error = 1;
- 3e6c: 4785 li a5,1
- 3e6e: c41c sw a5,8(s0)
- stream->buf_write_pos = 0;
- 3e70: 40042823 sw zero,1040(s0)
- return EOF;
- 3e74: bf8d j 3de6 <fgets+0x3c>
- stream->eof = 1;
- 3e76: 4785 li a5,1
- if (ret == 0)
- 3e78: e509 bnez a0,3e82 <fgets+0xd8>
- stream->eof = 1;
- 3e7a: c45c sw a5,12(s0)
- if (i == 0)
- 3e7c: fcd1 bnez s1,3e18 <fgets+0x6e>
- return NULL;
- 3e7e: 4501 li a0,0
- 3e80: b74d j 3e22 <fgets+0x78>
- stream->error = 1;
- 3e82: c41c sw a5,8(s0)
- if (c == -1)
- 3e84: bfe5 j 3e7c <fgets+0xd2>
-
-0000000000003e86 <fread>:
-{
- 3e86: 715d addi sp,sp,-80
- 3e88: e486 sd ra,72(sp)
- 3e8a: f44e sd s3,40(sp)
- if (!stream || size == 0 || nmemb == 0)
- 3e8c: 0e068963 beqz a3,3f7e <fread+0xf8>
- 3e90: ec56 sd s5,24(sp)
- return 0;
- 3e92: 4981 li s3,0
- 3e94: 8aae mv s5,a1
- if (!stream || size == 0 || nmemb == 0)
- 3e96: c9bd beqz a1,3f0c <fread+0x86>
- 3e98: ca35 beqz a2,3f0c <fread+0x86>
- if (stream->buf_write_pos > 0)
- 3e9a: 4106a783 lw a5,1040(a3)
- 3e9e: e0a2 sd s0,64(sp)
- 3ea0: f052 sd s4,32(sp)
- uint64 total_bytes = size * nmemb;
- 3ea2: 02c589b3 mul s3,a1,a2
- 3ea6: 8436 mv s0,a3
- 3ea8: 8a2a mv s4,a0
- if (stream->buf_write_pos > 0)
- 3eaa: 0af04d63 bgtz a5,3f64 <fread+0xde>
- while (bytes_read < total_bytes)
- 3eae: 04098d63 beqz s3,3f08 <fread+0x82>
- 3eb2: fc26 sd s1,56(sp)
- 3eb4: e85a sd s6,16(sp)
- 3eb6: e45e sd s7,8(sp)
- 3eb8: f84a sd s2,48(sp)
- 3eba: 4481 li s1,0
- if (remaining >= BUFSIZ)
- 3ebc: 3ff00b13 li s6,1023
- int64 ret = read(stream->fd, stream->buffer, BUFSIZ);
- 3ec0: 01040b93 addi s7,s0,16
- if (stream->buf_read_pos < stream->buf_read_cnt)
- 3ec4: 41442703 lw a4,1044(s0)
- 3ec8: 41842783 lw a5,1048(s0)
- uint64 remaining = total_bytes - bytes_read;
- 3ecc: 40998633 sub a2,s3,s1
- if (stream->buf_read_pos < stream->buf_read_cnt)
- 3ed0: 06f74463 blt a4,a5,3f38 <fread+0xb2>
- int64 ret = read(stream->fd, dst + bytes_read, remaining);
- 3ed4: 4008 lw a0,0(s0)
- 3ed6: 009a05b3 add a1,s4,s1
- if (remaining >= BUFSIZ)
- 3eda: 02cb7f63 bgeu s6,a2,3f18 <fread+0x92>
- int64 ret = read(stream->fd, dst + bytes_read, remaining);
- 3ede: a0afc0ef jal e8 <read>
- if (ret <= 0)
- 3ee2: 0aa05463 blez a0,3f8a <fread+0x104>
- bytes_read += ret;
- 3ee6: 94aa add s1,s1,a0
- while (bytes_read < total_bytes)
- 3ee8: fd34eee3 bltu s1,s3,3ec4 <fread+0x3e>
- return bytes_read / size;
- 3eec: 0354d9b3 divu s3,s1,s5
- 3ef0: 6406 ld s0,64(sp)
-}
- 3ef2: 60a6 ld ra,72(sp)
- return bytes_read / size;
- 3ef4: 74e2 ld s1,56(sp)
- 3ef6: 7942 ld s2,48(sp)
- 3ef8: 7a02 ld s4,32(sp)
- 3efa: 6ae2 ld s5,24(sp)
- 3efc: 6b42 ld s6,16(sp)
- 3efe: 6ba2 ld s7,8(sp)
-}
- 3f00: 854e mv a0,s3
- 3f02: 79a2 ld s3,40(sp)
- 3f04: 6161 addi sp,sp,80
- 3f06: 8082 ret
- 3f08: 6406 ld s0,64(sp)
- 3f0a: 7a02 ld s4,32(sp)
- 3f0c: 60a6 ld ra,72(sp)
- 3f0e: 6ae2 ld s5,24(sp)
- 3f10: 854e mv a0,s3
- 3f12: 79a2 ld s3,40(sp)
- 3f14: 6161 addi sp,sp,80
- 3f16: 8082 ret
- stream->buf_read_pos = 0;
- 3f18: 40042a23 sw zero,1044(s0)
- stream->buf_read_cnt = 0;
- 3f1c: 40042c23 sw zero,1048(s0)
- int64 ret = read(stream->fd, stream->buffer, BUFSIZ);
- 3f20: 40000613 li a2,1024
- 3f24: 85de mv a1,s7
- 3f26: 9c2fc0ef jal e8 <read>
- if (ret <= 0)
- 3f2a: 06a05063 blez a0,3f8a <fread+0x104>
- stream->buf_read_cnt = (int)ret;
- 3f2e: 40a42c23 sw a0,1048(s0)
- while (bytes_read < total_bytes)
- 3f32: f934e9e3 bltu s1,s3,3ec4 <fread+0x3e>
- 3f36: bf5d j 3eec <fread+0x66>
- uint64 available = stream->buf_read_cnt - stream->buf_read_pos;
- 3f38: 40e7893b subw s2,a5,a4
- memcpy(dst + bytes_read, stream->buffer + stream->buf_read_pos, to_copy);
- 3f3c: 00eb85b3 add a1,s7,a4
- 3f40: 009a0533 add a0,s4,s1
- uint64 to_copy = (available < remaining) ? available : remaining;
- 3f44: 01267363 bgeu a2,s2,3f4a <fread+0xc4>
- 3f48: 8932 mv s2,a2
- memcpy(dst + bytes_read, stream->buffer + stream->buf_read_pos, to_copy);
- 3f4a: 864a mv a2,s2
- 3f4c: 3e1000ef jal 4b2c <memcpy>
- stream->buf_read_pos += to_copy;
- 3f50: 41442783 lw a5,1044(s0)
- bytes_read += to_copy;
- 3f54: 94ca add s1,s1,s2
- stream->buf_read_pos += to_copy;
- 3f56: 012787bb addw a5,a5,s2
- 3f5a: 40f42a23 sw a5,1044(s0)
- while (bytes_read < total_bytes)
- 3f5e: f734e3e3 bltu s1,s3,3ec4 <fread+0x3e>
- 3f62: b769 j 3eec <fread+0x66>
- int64 ret = write(stream->fd, stream->buffer, stream->buf_write_pos);
- 3f64: 4288 lw a0,0(a3)
- 3f66: 863e mv a2,a5
- 3f68: 01068593 addi a1,a3,16
- 3f6c: 984fc0ef jal f0 <write>
- if (ret < stream->buf_write_pos)
- 3f70: 41042783 lw a5,1040(s0)
- 3f74: 02f54163 blt a0,a5,3f96 <fread+0x110>
- stream->buf_write_pos = 0;
- 3f78: 40042823 sw zero,1040(s0)
- 3f7c: bf0d j 3eae <fread+0x28>
-}
- 3f7e: 60a6 ld ra,72(sp)
- return 0;
- 3f80: 4981 li s3,0
-}
- 3f82: 854e mv a0,s3
- 3f84: 79a2 ld s3,40(sp)
- 3f86: 6161 addi sp,sp,80
- 3f88: 8082 ret
- stream->eof = 1;
- 3f8a: 4785 li a5,1
- if (ret == 0)
- 3f8c: e119 bnez a0,3f92 <fread+0x10c>
- stream->eof = 1;
- 3f8e: c45c sw a5,12(s0)
- 3f90: bfb1 j 3eec <fread+0x66>
- stream->error = 1;
- 3f92: c41c sw a5,8(s0)
- return bytes_read / size;
- 3f94: bfa1 j 3eec <fread+0x66>
- stream->error = 1;
- 3f96: 4785 li a5,1
- 3f98: c41c sw a5,8(s0)
- stream->buf_write_pos = 0;
- 3f9a: 40042823 sw zero,1040(s0)
- return EOF;
- 3f9e: bf01 j 3eae <fread+0x28>
-
-0000000000003fa0 <fwrite>:
-{
- 3fa0: 711d addi sp,sp,-96
- 3fa2: ec86 sd ra,88(sp)
- 3fa4: e0ca sd s2,64(sp)
- if (!stream || !ptr || size == 0 || nmemb == 0)
- 3fa6: 10068063 beqz a3,40a6 <fwrite+0x106>
- 3faa: f456 sd s5,40(sp)
- 3fac: 8aaa mv s5,a0
- 3fae: 10050263 beqz a0,40b2 <fwrite+0x112>
- 3fb2: f05a sd s6,32(sp)
- return 0;
- 3fb4: 4901 li s2,0
- 3fb6: 8b2e mv s6,a1
- if (!stream || !ptr || size == 0 || nmemb == 0)
- 3fb8: c1d9 beqz a1,403e <fwrite+0x9e>
- 3fba: c251 beqz a2,403e <fwrite+0x9e>
- if (stream->buf_mode == 2)
- 3fbc: 41c6a703 lw a4,1052(a3)
- 3fc0: e8a2 sd s0,80(sp)
- 3fc2: 4789 li a5,2
- uint64 total_bytes = size * nmemb;
- 3fc4: 02c58933 mul s2,a1,a2
- if (stream->buf_mode == 2)
- 3fc8: 8436 mv s0,a3
- 3fca: 0ef70b63 beq a4,a5,40c0 <fwrite+0x120>
- 3fce: fc4e sd s3,56(sp)
- 3fd0: ec5e sd s7,24(sp)
- 3fd2: e862 sd s8,16(sp)
- uint64 bytes_written = 0;
- 3fd4: 4981 li s3,0
- 3fd6: 01068b93 addi s7,a3,16
- uint64 space_left = BUFSIZ - stream->buf_write_pos;
- 3fda: 40000c13 li s8,1024
- while (bytes_written < total_bytes)
- 3fde: 12090263 beqz s2,4102 <fwrite+0x162>
- 3fe2: e4a6 sd s1,72(sp)
- 3fe4: f852 sd s4,48(sp)
- 3fe6: e466 sd s9,8(sp)
- uint64 space_left = BUFSIZ - stream->buf_write_pos;
- 3fe8: 41042783 lw a5,1040(s0)
- uint64 remaining = total_bytes - bytes_written;
- 3fec: 41390cb3 sub s9,s2,s3
- memcpy(stream->buffer + stream->buf_write_pos, src + bytes_written, remaining);
- 3ff0: 013a85b3 add a1,s5,s3
- uint64 space_left = BUFSIZ - stream->buf_write_pos;
- 3ff4: 40fc0a3b subw s4,s8,a5
- memcpy(stream->buffer + stream->buf_write_pos, src + bytes_written, space_left);
- 3ff8: 00fb8533 add a0,s7,a5
- 3ffc: 8652 mv a2,s4
- if (remaining <= space_left)
- 3ffe: 059a6763 bltu s4,s9,404c <fwrite+0xac>
- memcpy(stream->buffer + stream->buf_write_pos, src + bytes_written, remaining);
- 4002: 8666 mv a2,s9
- 4004: 329000ef jal 4b2c <memcpy>
- stream->buf_write_pos += remaining;
- 4008: 41042783 lw a5,1040(s0)
- if (stream->buf_write_pos == BUFSIZ)
- 400c: 40000713 li a4,1024
- stream->buf_write_pos += remaining;
- 4010: 019786bb addw a3,a5,s9
- 4014: 40d42823 sw a3,1040(s0)
- if (stream->buf_write_pos == BUFSIZ)
- 4018: 06e68a63 beq a3,a4,408c <fwrite+0xec>
- return bytes_written / size;
- 401c: 03695933 divu s2,s2,s6
- 4020: 6446 ld s0,80(sp)
- 4022: 64a6 ld s1,72(sp)
- 4024: 79e2 ld s3,56(sp)
- 4026: 7a42 ld s4,48(sp)
- 4028: 7aa2 ld s5,40(sp)
- 402a: 7b02 ld s6,32(sp)
- 402c: 6be2 ld s7,24(sp)
- 402e: 6c42 ld s8,16(sp)
- 4030: 6ca2 ld s9,8(sp)
-}
- 4032: 60e6 ld ra,88(sp)
- 4034: 854a mv a0,s2
- 4036: 6906 ld s2,64(sp)
- 4038: 6125 addi sp,sp,96
- 403a: 8082 ret
- 403c: 6446 ld s0,80(sp)
- 403e: 60e6 ld ra,88(sp)
- 4040: 7aa2 ld s5,40(sp)
- 4042: 7b02 ld s6,32(sp)
- 4044: 854a mv a0,s2
- 4046: 6906 ld s2,64(sp)
- 4048: 6125 addi sp,sp,96
- 404a: 8082 ret
- memcpy(stream->buffer + stream->buf_write_pos, src + bytes_written, space_left);
- 404c: 2e1000ef jal 4b2c <memcpy>
- stream->buf_write_pos += space_left;
- 4050: 41042783 lw a5,1040(s0)
- int64 ret = write(stream->fd, stream->buffer, stream->buf_write_pos);
- 4054: 85de mv a1,s7
- bytes_written += space_left;
- 4056: 99d2 add s3,s3,s4
- stream->buf_write_pos += space_left;
- 4058: 00fa04bb addw s1,s4,a5
- int64 ret = write(stream->fd, stream->buffer, stream->buf_write_pos);
- 405c: 02049613 slli a2,s1,0x20
- stream->buf_write_pos += space_left;
- 4060: 40942823 sw s1,1040(s0)
- int64 ret = write(stream->fd, stream->buffer, stream->buf_write_pos);
- 4064: 9201 srli a2,a2,0x20
- if (stream->buf_write_pos > 0)
- 4066: 00904763 bgtz s1,4074 <fwrite+0xd4>
- while (bytes_written < total_bytes)
- 406a: f729efe3 bltu s3,s2,3fe8 <fwrite+0x48>
- return bytes_written / size;
- 406e: 0369d933 divu s2,s3,s6
- 4072: b77d j 4020 <fwrite+0x80>
- int64 ret = write(stream->fd, stream->buffer, stream->buf_write_pos);
- 4074: 4008 lw a0,0(s0)
- 4076: 87afc0ef jal f0 <write>
- if (ret < stream->buf_write_pos)
- 407a: 41042783 lw a5,1040(s0)
- 407e: 08f54963 blt a0,a5,4110 <fwrite+0x170>
- stream->buf_write_pos = 0;
- 4082: 40042823 sw zero,1040(s0)
- while (bytes_written < total_bytes)
- 4086: f729e1e3 bltu s3,s2,3fe8 <fwrite+0x48>
- 408a: b7d5 j 406e <fwrite+0xce>
- int64 ret = write(stream->fd, stream->buffer, stream->buf_write_pos);
- 408c: 4008 lw a0,0(s0)
- 408e: 40000613 li a2,1024
- 4092: 85de mv a1,s7
- 4094: 85cfc0ef jal f0 <write>
- if (ret < stream->buf_write_pos)
- 4098: 41042783 lw a5,1040(s0)
- 409c: 08f54163 blt a0,a5,411e <fwrite+0x17e>
- stream->buf_write_pos = 0;
- 40a0: 40042823 sw zero,1040(s0)
- 40a4: bfa5 j 401c <fwrite+0x7c>
-}
- 40a6: 60e6 ld ra,88(sp)
- return 0;
- 40a8: 4901 li s2,0
-}
- 40aa: 854a mv a0,s2
- 40ac: 6906 ld s2,64(sp)
- 40ae: 6125 addi sp,sp,96
- 40b0: 8082 ret
- 40b2: 60e6 ld ra,88(sp)
- return 0;
- 40b4: 4901 li s2,0
- 40b6: 7aa2 ld s5,40(sp)
-}
- 40b8: 854a mv a0,s2
- 40ba: 6906 ld s2,64(sp)
- 40bc: 6125 addi sp,sp,96
- 40be: 8082 ret
- while (bytes_written < total_bytes)
- 40c0: f6090ee3 beqz s2,403c <fwrite+0x9c>
- 40c4: e4a6 sd s1,72(sp)
- uint64 bytes_written = 0;
- 40c6: 4481 li s1,0
- 40c8: a021 j 40d0 <fwrite+0x130>
- bytes_written += ret;
- 40ca: 94aa add s1,s1,a0
- while (bytes_written < total_bytes)
- 40cc: 0324f463 bgeu s1,s2,40f4 <fwrite+0x154>
- int64 ret = write(stream->fd, src + bytes_written, total_bytes - bytes_written);
- 40d0: 4008 lw a0,0(s0)
- 40d2: 40990633 sub a2,s2,s1
- 40d6: 009a85b3 add a1,s5,s1
- 40da: 816fc0ef jal f0 <write>
- if (ret <= 0)
- 40de: fea046e3 bgtz a0,40ca <fwrite+0x12a>
- stream->error = 1;
- 40e2: 4785 li a5,1
- return bytes_written / size;
- 40e4: 0364d933 divu s2,s1,s6
- stream->error = 1;
- 40e8: c41c sw a5,8(s0)
- break;
- 40ea: 64a6 ld s1,72(sp)
- 40ec: 6446 ld s0,80(sp)
- 40ee: 7aa2 ld s5,40(sp)
- 40f0: 7b02 ld s6,32(sp)
- 40f2: b781 j 4032 <fwrite+0x92>
- return bytes_written / size;
- 40f4: 0364d933 divu s2,s1,s6
- 40f8: 6446 ld s0,80(sp)
- 40fa: 64a6 ld s1,72(sp)
- 40fc: 7aa2 ld s5,40(sp)
- 40fe: 7b02 ld s6,32(sp)
- 4100: bf0d j 4032 <fwrite+0x92>
- 4102: 6446 ld s0,80(sp)
- 4104: 79e2 ld s3,56(sp)
- 4106: 7aa2 ld s5,40(sp)
- 4108: 7b02 ld s6,32(sp)
- 410a: 6be2 ld s7,24(sp)
- 410c: 6c42 ld s8,16(sp)
- 410e: b715 j 4032 <fwrite+0x92>
- stream->error = 1;
- 4110: 4785 li a5,1
- 4112: c41c sw a5,8(s0)
- stream->buf_write_pos = 0;
- 4114: 40042823 sw zero,1040(s0)
- while (bytes_written < total_bytes)
- 4118: ed29e8e3 bltu s3,s2,3fe8 <fwrite+0x48>
- 411c: bf89 j 406e <fwrite+0xce>
- stream->error = 1;
- 411e: 4785 li a5,1
- 4120: c41c sw a5,8(s0)
- stream->buf_write_pos = 0;
- 4122: 40042823 sw zero,1040(s0)
- return EOF;
- 4126: bddd j 401c <fwrite+0x7c>
-
-0000000000004128 <fseek>:
- if (!stream)
- 4128: c925 beqz a0,4198 <fseek+0x70>
-{
- 412a: 1101 addi sp,sp,-32
- 412c: e04a sd s2,0(sp)
- 412e: 8932 mv s2,a2
- if (stream->buf_write_pos > 0)
- 4130: 41052603 lw a2,1040(a0)
-{
- 4134: e822 sd s0,16(sp)
- 4136: e426 sd s1,8(sp)
- 4138: ec06 sd ra,24(sp)
- 413a: 842a mv s0,a0
- 413c: 84ae mv s1,a1
- if (stream->buf_write_pos > 0)
- 413e: 02c04863 bgtz a2,416e <fseek+0x46>
- if (lseek(stream->fd, offset, whence) < 0)
- 4142: 4008 lw a0,0(s0)
- stream->buf_read_pos = 0;
- 4144: 40042a23 sw zero,1044(s0)
- stream->buf_read_cnt = 0;
- 4148: 40042c23 sw zero,1048(s0)
- stream->eof = 0;
- 414c: 00042623 sw zero,12(s0)
- if (lseek(stream->fd, offset, whence) < 0)
- 4150: 864a mv a2,s2
- 4152: 0004859b sext.w a1,s1
- 4156: 82afc0ef jal 180 <lseek>
- 415a: 87aa mv a5,a0
- return 0;
- 415c: 4501 li a0,0
- if (lseek(stream->fd, offset, whence) < 0)
- 415e: 0207c463 bltz a5,4186 <fseek+0x5e>
-}
- 4162: 60e2 ld ra,24(sp)
- 4164: 6442 ld s0,16(sp)
- 4166: 64a2 ld s1,8(sp)
- 4168: 6902 ld s2,0(sp)
- 416a: 6105 addi sp,sp,32
- 416c: 8082 ret
- int64 ret = write(stream->fd, stream->buffer, stream->buf_write_pos);
- 416e: 4108 lw a0,0(a0)
- 4170: 01040593 addi a1,s0,16
- 4174: f7dfb0ef jal f0 <write>
- if (ret < stream->buf_write_pos)
- 4178: 41042783 lw a5,1040(s0)
- 417c: 00f54963 blt a0,a5,418e <fseek+0x66>
- stream->buf_write_pos = 0;
- 4180: 40042823 sw zero,1040(s0)
- 4184: bf7d j 4142 <fseek+0x1a>
- stream->error = 1;
- 4186: 4785 li a5,1
- 4188: c41c sw a5,8(s0)
- return -1;
- 418a: 557d li a0,-1
- 418c: bfd9 j 4162 <fseek+0x3a>
- stream->error = 1;
- 418e: 4785 li a5,1
- 4190: c41c sw a5,8(s0)
- stream->buf_write_pos = 0;
- 4192: 40042823 sw zero,1040(s0)
- return EOF;
- 4196: b775 j 4142 <fseek+0x1a>
- return -1;
- 4198: 557d li a0,-1
-}
- 419a: 8082 ret
-
-000000000000419c <ftell>:
- if (!stream)
- 419c: c505 beqz a0,41c4 <ftell+0x28>
-{
- 419e: 1141 addi sp,sp,-16
- 41a0: e022 sd s0,0(sp)
- 41a2: 842a mv s0,a0
- int64 ret = lseek(stream->fd, 0, SEEK_CUR);
- 41a4: 4108 lw a0,0(a0)
- 41a6: 4605 li a2,1
- 41a8: 4581 li a1,0
-{
- 41aa: e406 sd ra,8(sp)
- int64 ret = lseek(stream->fd, 0, SEEK_CUR);
- 41ac: fd5fb0ef jal 180 <lseek>
- if (ret < 0)
- 41b0: 00054663 bltz a0,41bc <ftell+0x20>
-}
- 41b4: 60a2 ld ra,8(sp)
- 41b6: 6402 ld s0,0(sp)
- 41b8: 0141 addi sp,sp,16
- 41ba: 8082 ret
- stream->error = 1;
- 41bc: 4785 li a5,1
- 41be: c41c sw a5,8(s0)
- return -1L;
- 41c0: 557d li a0,-1
- 41c2: bfcd j 41b4 <ftell+0x18>
- 41c4: 557d li a0,-1
-}
- 41c6: 8082 ret
-
-00000000000041c8 <rewind>:
- if (stream)
- 41c8: c915 beqz a0,41fc <rewind+0x34>
- if (stream->buf_write_pos > 0)
- 41ca: 41052603 lw a2,1040(a0)
-{
- 41ce: 1141 addi sp,sp,-16
- 41d0: e022 sd s0,0(sp)
- 41d2: e406 sd ra,8(sp)
- 41d4: 842a mv s0,a0
- if (stream->buf_write_pos > 0)
- 41d6: 02c04463 bgtz a2,41fe <rewind+0x36>
- if (lseek(stream->fd, offset, whence) < 0)
- 41da: 4008 lw a0,0(s0)
- stream->buf_read_pos = 0;
- 41dc: 40042a23 sw zero,1044(s0)
- stream->buf_read_cnt = 0;
- 41e0: 40042c23 sw zero,1048(s0)
- stream->eof = 0;
- 41e4: 00042623 sw zero,12(s0)
- if (lseek(stream->fd, offset, whence) < 0)
- 41e8: 4601 li a2,0
- 41ea: 4581 li a1,0
- 41ec: f95fb0ef jal 180 <lseek>
-}
- 41f0: 60a2 ld ra,8(sp)
- stream->error = 0;
- 41f2: 00042423 sw zero,8(s0)
-}
- 41f6: 6402 ld s0,0(sp)
- 41f8: 0141 addi sp,sp,16
- 41fa: 8082 ret
- 41fc: 8082 ret
- int64 ret = write(stream->fd, stream->buffer, stream->buf_write_pos);
- 41fe: 4108 lw a0,0(a0)
- 4200: 01040593 addi a1,s0,16
- 4204: eedfb0ef jal f0 <write>
- if (ret < stream->buf_write_pos)
- 4208: 41042783 lw a5,1040(s0)
- 420c: 00f54563 blt a0,a5,4216 <rewind+0x4e>
- stream->buf_write_pos = 0;
- 4210: 40042823 sw zero,1040(s0)
- 4214: b7d9 j 41da <rewind+0x12>
- stream->error = 1;
- 4216: 4785 li a5,1
- 4218: c41c sw a5,8(s0)
- stream->buf_write_pos = 0;
- 421a: 40042823 sw zero,1040(s0)
- return EOF;
- 421e: bf75 j 41da <rewind+0x12>
-
-0000000000004220 <feof>:
- return (stream) ? stream->eof : 1;
- 4220: c119 beqz a0,4226 <feof+0x6>
- 4222: 4548 lw a0,12(a0)
- 4224: 8082 ret
- 4226: 4505 li a0,1
-}
- 4228: 8082 ret
-
-000000000000422a <ferror>:
- return (stream) ? stream->error : 1;
- 422a: c119 beqz a0,4230 <ferror+0x6>
- 422c: 4508 lw a0,8(a0)
- 422e: 8082 ret
- 4230: 4505 li a0,1
-}
- 4232: 8082 ret
-
-0000000000004234 <clearerr>:
- if (stream)
- 4234: c509 beqz a0,423e <clearerr+0xa>
- stream->error = 0;
- 4236: 00052423 sw zero,8(a0)
- stream->eof = 0;
- 423a: 00052623 sw zero,12(a0)
-}
- 423e: 8082 ret
-
-0000000000004240 <ungetc>:
- if (!stream || c == EOF)
- 4240: c19d beqz a1,4266 <ungetc+0x26>
- 4242: 57fd li a5,-1
- 4244: 02f50163 beq a0,a5,4266 <ungetc+0x26>
- if (stream->buf_read_pos > 0)
- 4248: 4145a783 lw a5,1044(a1)
- 424c: 00f05d63 blez a5,4266 <ungetc+0x26>
- stream->buf_read_pos--;
- 4250: fff7871b addiw a4,a5,-1
- 4254: 40e5aa23 sw a4,1044(a1)
- stream->buffer[stream->buf_read_pos] = (char)c;
- 4258: 00e587b3 add a5,a1,a4
- 425c: 00a78823 sb a0,16(a5)
- stream->eof = 0;
- 4260: 0005a623 sw zero,12(a1)
- return c;
- 4264: 8082 ret
- return EOF;
- 4266: 557d li a0,-1
- 4268: 8082 ret
-
-000000000000426a <strtoull.part.0>:
- return new_ptr;
-}
-
-/* String Conversion*/
-
-unsigned long long strtoull(const char *nptr, char **endptr, int base)
- 426a: 1141 addi sp,sp,-16
- 426c: e422 sd s0,8(sp)
- 426e: 8eaa mv t4,a0
-{
- const char *s = nptr;
- 4270: 88aa mv a7,a0
- static inline int isdigit(int c) { return c >= '0' && c <= '9'; }
- static inline int islower(int c) { return c >= 'a' && c <= 'z'; }
- static inline int isupper(int c) { return c >= 'A' && c <= 'Z'; }
- static inline int isalpha(int c) { return islower(c) || isupper(c); }
- static inline int isalnum(int c) { return isalpha(c) || isdigit(c); }
- static inline int isspace(int c) { return c == ' ' || c == '\t' || c == '\n' || c == '\v' || c == '\f' || c == '\r'; }
- 4272: 02000313 li t1,32
- 4276: 4e11 li t3,4
- return 0;
- }
-
- do
- {
- c = *s++;
- 4278: 0008c783 lbu a5,0(a7)
- 427c: 00188813 addi a6,a7,1
- 4280: ff77871b addiw a4,a5,-9
- 4284: 0ff77693 zext.b a3,a4
- 4288: 0007871b sext.w a4,a5
- 428c: 04678363 beq a5,t1,42d2 <strtoull.part.0+0x68>
- 4290: 04de7163 bgeu t3,a3,42d2 <strtoull.part.0+0x68>
- } while (isspace(c));
-
- if (c == '-')
- 4294: 02d00793 li a5,45
- 4298: 0ef70863 beq a4,a5,4388 <strtoull.part.0+0x11e>
- {
- neg = 1;
- c = *s++;
- }
- else if (c == '+')
- 429c: 02b00793 li a5,43
- int neg = 0, any, cutlim;
- 42a0: 4381 li t2,0
- else if (c == '+')
- 42a2: 08f70c63 beq a4,a5,433a <strtoull.part.0+0xd0>
- {
- c = *s++;
- }
-
- if ((base == 0 || base == 16) && c == '0' && (*s == 'x' || *s == 'X'))
- 42a6: ea05 bnez a2,42d6 <strtoull.part.0+0x6c>
- 42a8: 03000793 li a5,48
- 42ac: 0ef70463 beq a4,a5,4394 <strtoull.part.0+0x12a>
- 42b0: 00ccd8b7 lui a7,0xccd
- 42b4: ccd88893 addi a7,a7,-819 # cccccd <_ZSt4cerr+0xcc5445>
- 42b8: 08b2 slli a7,a7,0xc
- 42ba: ccd88893 addi a7,a7,-819
- 42be: 08b2 slli a7,a7,0xc
- 42c0: ccd88893 addi a7,a7,-819
- 42c4: 08b6 slli a7,a7,0xd
- 42c6: 4415 li s0,5
- 42c8: 99988893 addi a7,a7,-1639
- 42cc: 42a9 li t0,10
- c = s[1];
- s += 2;
- base = 16;
- }
- if (base == 0)
- base = (c == '0' ? 8 : 10);
- 42ce: 4629 li a2,10
- 42d0: a829 j 42ea <strtoull.part.0+0x80>
-unsigned long long strtoull(const char *nptr, char **endptr, int base)
- 42d2: 88c2 mv a7,a6
- 42d4: b755 j 4278 <strtoull.part.0+0xe>
- if ((base == 0 || base == 16) && c == '0' && (*s == 'x' || *s == 'X'))
- 42d6: 47c1 li a5,16
- 42d8: 0cf60d63 beq a2,a5,43b2 <strtoull.part.0+0x148>
-
- cutoff = ULLONG_MAX / (unsigned long long)base;
- 42dc: 58fd li a7,-1
- cutlim = ULLONG_MAX % (unsigned long long)base;
- 42de: 02c8f433 remu s0,a7,a2
- cutoff = ULLONG_MAX / (unsigned long long)base;
- 42e2: 82b2 mv t0,a2
- 42e4: 02c8d8b3 divu a7,a7,a2
- cutlim = ULLONG_MAX % (unsigned long long)base;
- 42e8: 2401 sext.w s0,s0
-
- for (acc = 0, any = 0;; c = *s++)
- 42ea: 4301 li t1,0
- 42ec: 4501 li a0,0
- {
- if (isdigit(c))
- 42ee: 4e25 li t3,9
- static inline int isalpha(int c) { return islower(c) || isupper(c); }
- 42f0: 4fe5 li t6,25
- break;
-
- if (c >= base)
- break;
-
- if (any < 0 || acc > cutoff || (acc == cutoff && c > cutlim))
- 42f2: 5f7d li t5,-1
- if (isdigit(c))
- 42f4: fd07079b addiw a5,a4,-48
- static inline int isdigit(int c) { return c >= '0' && c <= '9'; }
- 42f8: 0007069b sext.w a3,a4
- 42fc: 00fe7e63 bgeu t3,a5,4318 <strtoull.part.0+0xae>
- static inline int isalpha(int c) { return islower(c) || isupper(c); }
- 4300: f9f6879b addiw a5,a3,-97
- 4304: 04fff063 bgeu t6,a5,4344 <strtoull.part.0+0xda>
- 4308: fbf6869b addiw a3,a3,-65
- 430c: 04dfe163 bltu t6,a3,434e <strtoull.part.0+0xe4>
- c -= isupper(c) ? 'A' - 10 : 'a' - 10;
- 4310: 03700793 li a5,55
- 4314: 40f707bb subw a5,a4,a5
- if (c >= base)
- 4318: 02c7db63 bge a5,a2,434e <strtoull.part.0+0xe4>
- if (any < 0 || acc > cutoff || (acc == cutoff && c > cutlim))
- 431c: 01e30b63 beq t1,t5,4332 <strtoull.part.0+0xc8>
- any = -1;
- 4320: 537d li t1,-1
- if (any < 0 || acc > cutoff || (acc == cutoff && c > cutlim))
- 4322: 00a8e863 bltu a7,a0,4332 <strtoull.part.0+0xc8>
- 4326: 05150e63 beq a0,a7,4382 <strtoull.part.0+0x118>
- else
- {
- any = 1;
- 432a: 4305 li t1,1
- acc *= base;
- 432c: 02550533 mul a0,a0,t0
- acc += c;
- 4330: 953e add a0,a0,a5
- for (acc = 0, any = 0;; c = *s++)
- 4332: 0805 addi a6,a6,1
- 4334: fff84703 lbu a4,-1(a6)
- if (isdigit(c))
- 4338: bf75 j 42f4 <strtoull.part.0+0x8a>
- c = *s++;
- 433a: 00084703 lbu a4,0(a6)
- 433e: 00288813 addi a6,a7,2
- 4342: b795 j 42a6 <strtoull.part.0+0x3c>
- c -= isupper(c) ? 'A' - 10 : 'a' - 10;
- 4344: 05700793 li a5,87
- 4348: 40f707bb subw a5,a4,a5
- 434c: b7f1 j 4318 <strtoull.part.0+0xae>
- }
- }
-
- if (any < 0)
- 434e: 57fd li a5,-1
- 4350: 00f30e63 beq t1,a5,436c <strtoull.part.0+0x102>
- {
- acc = ULLONG_MAX;
- errno = ERANGE;
- }
- else if (neg)
- 4354: 00038463 beqz t2,435c <strtoull.part.0+0xf2>
- acc = -acc;
- 4358: 40a00533 neg a0,a0
-
- if (endptr != 0)
- 435c: c589 beqz a1,4366 <strtoull.part.0+0xfc>
- *endptr = (char *)(any ? s - 1 : nptr);
- 435e: 00031f63 bnez t1,437c <strtoull.part.0+0x112>
- 4362: 01d5b023 sd t4,0(a1)
-
- return acc;
-}
- 4366: 6422 ld s0,8(sp)
- 4368: 0141 addi sp,sp,16
- 436a: 8082 ret
- errno = ERANGE;
- 436c: 02200793 li a5,34
- 4370: 00003717 auipc a4,0x3
- 4374: 3ef72023 sw a5,992(a4) # 7750 <errno>
- acc = ULLONG_MAX;
- 4378: 557d li a0,-1
- if (endptr != 0)
- 437a: d5f5 beqz a1,4366 <strtoull.part.0+0xfc>
- *endptr = (char *)(any ? s - 1 : nptr);
- 437c: fff80e93 addi t4,a6,-1
- 4380: b7cd j 4362 <strtoull.part.0+0xf8>
- if (any < 0 || acc > cutoff || (acc == cutoff && c > cutlim))
- 4382: faf448e3 blt s0,a5,4332 <strtoull.part.0+0xc8>
- 4386: b755 j 432a <strtoull.part.0+0xc0>
- c = *s++;
- 4388: 00084703 lbu a4,0(a6)
- neg = 1;
- 438c: 4385 li t2,1
- c = *s++;
- 438e: 00288813 addi a6,a7,2
- 4392: bf11 j 42a6 <strtoull.part.0+0x3c>
- if ((base == 0 || base == 16) && c == '0' && (*s == 'x' || *s == 'X'))
- 4394: 00084783 lbu a5,0(a6)
- 4398: 05800693 li a3,88
- 439c: 0df7f793 andi a5,a5,223
- 43a0: 02d78b63 beq a5,a3,43d6 <strtoull.part.0+0x16c>
- 43a4: 58fd li a7,-1
- 43a6: 441d li s0,7
- 43a8: 0038d893 srli a7,a7,0x3
- 43ac: 42a1 li t0,8
- base = (c == '0' ? 8 : 10);
- 43ae: 4621 li a2,8
- 43b0: bf2d j 42ea <strtoull.part.0+0x80>
- if ((base == 0 || base == 16) && c == '0' && (*s == 'x' || *s == 'X'))
- 43b2: 03000793 li a5,48
- 43b6: 00f70863 beq a4,a5,43c6 <strtoull.part.0+0x15c>
- 43ba: 58fd li a7,-1
- 43bc: 443d li s0,15
- 43be: 0048d893 srli a7,a7,0x4
- 43c2: 42c1 li t0,16
- 43c4: b71d j 42ea <strtoull.part.0+0x80>
- 43c6: 00084783 lbu a5,0(a6)
- 43ca: 05800693 li a3,88
- 43ce: 0df7f793 andi a5,a5,223
- 43d2: fed794e3 bne a5,a3,43ba <strtoull.part.0+0x150>
- s += 2;
- 43d6: 58fd li a7,-1
- c = s[1];
- 43d8: 00184703 lbu a4,1(a6)
- s += 2;
- 43dc: 443d li s0,15
- 43de: 0809 addi a6,a6,2
- 43e0: 0048d893 srli a7,a7,0x4
- 43e4: 42c1 li t0,16
- base = 16;
- 43e6: 4641 li a2,16
- 43e8: b709 j 42ea <strtoull.part.0+0x80>
-
-00000000000043ea <atexit>:
- if (__atexit_func_count >= ATEXIT_MAX)
- 43ea: 00003717 auipc a4,0x3
- 43ee: 36670713 addi a4,a4,870 # 7750 <errno>
- 43f2: 435c lw a5,4(a4)
- 43f4: 46fd li a3,31
- 43f6: 00f6ca63 blt a3,a5,440a <atexit+0x20>
- __atexit_funcs[__atexit_func_count++] = function;
- 43fa: 00379693 slli a3,a5,0x3
- 43fe: 96ba add a3,a3,a4
- 4400: 2785 addiw a5,a5,1
- 4402: e688 sd a0,8(a3)
- 4404: c35c sw a5,4(a4)
- return 0;
- 4406: 4501 li a0,0
- 4408: 8082 ret
- return -1;
- 440a: 557d li a0,-1
-}
- 440c: 8082 ret
-
-000000000000440e <exit>:
-{
- 440e: 1101 addi sp,sp,-32
- 4410: e822 sd s0,16(sp)
- while (__atexit_func_count > 0)
- 4412: 00003417 auipc s0,0x3
- 4416: 33e40413 addi s0,s0,830 # 7750 <errno>
- 441a: 405c lw a5,4(s0)
-{
- 441c: e426 sd s1,8(sp)
- 441e: ec06 sd ra,24(sp)
- 4420: 84aa mv s1,a0
- while (__atexit_func_count > 0)
- 4422: 00f05d63 blez a5,443c <exit+0x2e>
- (__atexit_funcs[--__atexit_func_count])();
- 4426: fff7871b addiw a4,a5,-1
- 442a: 87ba mv a5,a4
- 442c: 070e slli a4,a4,0x3
- 442e: 9722 add a4,a4,s0
- 4430: 6718 ld a4,8(a4)
- 4432: c05c sw a5,4(s0)
- 4434: 9702 jalr a4
- while (__atexit_func_count > 0)
- 4436: 405c lw a5,4(s0)
- 4438: fef047e3 bgtz a5,4426 <exit+0x18>
- sys_exit(status);
- 443c: 8526 mv a0,s1
- 443e: c8bfb0ef jal c8 <sys_exit>
- while (1)
- 4442: a001 j 4442 <exit+0x34>
-
-0000000000004444 <abort>:
-{
- 4444: 1141 addi sp,sp,-16
- exit(127);
- 4446: 07f00513 li a0,127
-{
- 444a: e406 sd ra,8(sp)
- exit(127);
- 444c: fc3ff0ef jal 440e <exit>
-
-0000000000004450 <getenv>:
-}
- 4450: 4501 li a0,0
- 4452: 8082 ret
-
-0000000000004454 <system>:
-}
- 4454: 557d li a0,-1
- 4456: 8082 ret
-
-0000000000004458 <free>:
- if (!ptr)
- 4458: c121 beqz a0,4498 <free+0x40>
- for (p = freep; !(bp > p && bp < p->next); p = p->next)
- 445a: 00003617 auipc a2,0x3
- 445e: 2f660613 addi a2,a2,758 # 7750 <errno>
- 4462: 10863783 ld a5,264(a2)
- bp = (header_t *)ptr - 1;
- 4466: ff050693 addi a3,a0,-16
- if (p >= p->next && (bp > p || bp < p->next))
- 446a: 6798 ld a4,8(a5)
- for (p = freep; !(bp > p && bp < p->next); p = p->next)
- 446c: 02d7f763 bgeu a5,a3,449a <free+0x42>
- 4470: 00e6e463 bltu a3,a4,4478 <free+0x20>
- if (p >= p->next && (bp > p || bp < p->next))
- 4474: 02e7e763 bltu a5,a4,44a2 <free+0x4a>
- if ((char *)bp + bp->size == (char *)p->next)
- 4478: ff053583 ld a1,-16(a0)
- 447c: 00b68833 add a6,a3,a1
- 4480: 03070363 beq a4,a6,44a6 <free+0x4e>
- if ((char *)p + p->size == (char *)bp)
- 4484: 638c ld a1,0(a5)
- 4486: fee53c23 sd a4,-8(a0)
- 448a: 00b78833 add a6,a5,a1
- 448e: 03068963 beq a3,a6,44c0 <free+0x68>
- 4492: e794 sd a3,8(a5)
- freep = p;
- 4494: 10f63423 sd a5,264(a2)
-}
- 4498: 8082 ret
- if (p >= p->next && (bp > p || bp < p->next))
- 449a: 00e7e463 bltu a5,a4,44a2 <free+0x4a>
- 449e: fce6ede3 bltu a3,a4,4478 <free+0x20>
-{
- 44a2: 87ba mv a5,a4
- 44a4: b7d9 j 446a <free+0x12>
- bp->size += p->next->size;
- 44a6: 00073803 ld a6,0(a4)
- bp->next = p->next->next;
- 44aa: 6718 ld a4,8(a4)
- bp->size += p->next->size;
- 44ac: 95c2 add a1,a1,a6
- 44ae: feb53823 sd a1,-16(a0)
- if ((char *)p + p->size == (char *)bp)
- 44b2: 638c ld a1,0(a5)
- 44b4: fee53c23 sd a4,-8(a0)
- 44b8: 00b78833 add a6,a5,a1
- 44bc: fd069be3 bne a3,a6,4492 <free+0x3a>
- p->size += bp->size;
- 44c0: ff053503 ld a0,-16(a0)
- p->next = bp->next;
- 44c4: 86ba mv a3,a4
- p->size += bp->size;
- 44c6: 00b50733 add a4,a0,a1
- 44ca: e398 sd a4,0(a5)
- p->next = bp->next;
- 44cc: b7d9 j 4492 <free+0x3a>
-
-00000000000044ce <malloc>:
- if (size == 0)
- 44ce: c169 beqz a0,4590 <malloc+0xc2>
-{
- 44d0: 7179 addi sp,sp,-48
- 44d2: ec26 sd s1,24(sp)
- if ((prevp = freep) == NULL)
- 44d4: 00003497 auipc s1,0x3
- 44d8: 27c48493 addi s1,s1,636 # 7750 <errno>
- 44dc: 1084b783 ld a5,264(s1)
-{
- 44e0: f022 sd s0,32(sp)
- size = ALIGN(size + sizeof(header_t));
- 44e2: 057d addi a0,a0,31
-{
- 44e4: f406 sd ra,40(sp)
- size = ALIGN(size + sizeof(header_t));
- 44e6: ff057413 andi s0,a0,-16
- if ((prevp = freep) == NULL)
- 44ea: c3d1 beqz a5,456e <malloc+0xa0>
- for (p = prevp->next;; prevp = p, p = p->next)
- 44ec: 6788 ld a0,8(a5)
- if (p->size >= size)
- 44ee: 6118 ld a4,0(a0)
- 44f0: 06877163 bgeu a4,s0,4552 <malloc+0x84>
- 44f4: e44e sd s3,8(sp)
- 44f6: e052 sd s4,0(sp)
- 44f8: e84a sd s2,16(sp)
- if (nu < 4096)
- 44fa: 6a05 lui s4,0x1
- if (cp == (void *)-1)
- 44fc: 59fd li s3,-1
- 44fe: a029 j 4508 <malloc+0x3a>
- for (p = prevp->next;; prevp = p, p = p->next)
- 4500: 6788 ld a0,8(a5)
- if (p->size >= size)
- 4502: 6118 ld a4,0(a0)
- 4504: 04877463 bgeu a4,s0,454c <malloc+0x7e>
- if (p == freep)
- 4508: 1084b703 ld a4,264(s1)
- 450c: 87aa mv a5,a0
- 450e: fee519e3 bne a0,a4,4500 <malloc+0x32>
- if (nu < 4096)
- 4512: 8922 mv s2,s0
- 4514: 01447363 bgeu s0,s4,451a <malloc+0x4c>
- 4518: 6905 lui s2,0x1
- cp = (char *)sbrk(nu);
- 451a: 854a mv a0,s2
- 451c: c3dfb0ef jal 158 <sbrk>
- 4520: 87aa mv a5,a0
- free((void *)(up + 1));
- 4522: 0541 addi a0,a0,16
- if (cp == (void *)-1)
- 4524: 01378963 beq a5,s3,4536 <malloc+0x68>
- up->size = nu;
- 4528: 0127b023 sd s2,0(a5)
- free((void *)(up + 1));
- 452c: f2dff0ef jal 4458 <free>
- return freep;
- 4530: 1084b783 ld a5,264(s1)
- if ((p = morecore(size)) == NULL)
- 4534: f7f1 bnez a5,4500 <malloc+0x32>
-}
- 4536: 70a2 ld ra,40(sp)
- 4538: 7402 ld s0,32(sp)
- errno = ENOMEM;
- 453a: 47b1 li a5,12
- 453c: c09c sw a5,0(s1)
- return NULL;
- 453e: 6942 ld s2,16(sp)
- 4540: 69a2 ld s3,8(sp)
- 4542: 6a02 ld s4,0(sp)
-}
- 4544: 64e2 ld s1,24(sp)
- return NULL;
- 4546: 4501 li a0,0
-}
- 4548: 6145 addi sp,sp,48
- 454a: 8082 ret
- 454c: 6942 ld s2,16(sp)
- 454e: 69a2 ld s3,8(sp)
- 4550: 6a02 ld s4,0(sp)
- if (p->size == size)
- 4552: 02e40c63 beq s0,a4,458a <malloc+0xbc>
- p->size -= size;
- 4556: 8f01 sub a4,a4,s0
- 4558: e118 sd a4,0(a0)
- p = (header_t *)((char *)p + p->size);
- 455a: 953a add a0,a0,a4
- p->size = size;
- 455c: e100 sd s0,0(a0)
-}
- 455e: 70a2 ld ra,40(sp)
- 4560: 7402 ld s0,32(sp)
- freep = prevp;
- 4562: 10f4b423 sd a5,264(s1)
- return (void *)(p + 1);
- 4566: 0541 addi a0,a0,16
-}
- 4568: 64e2 ld s1,24(sp)
- 456a: 6145 addi sp,sp,48
- 456c: 8082 ret
- base.next = freep = prevp = &base;
- 456e: 00003517 auipc a0,0x3
- 4572: 2f250513 addi a0,a0,754 # 7860 <base>
- 4576: 10a4b423 sd a0,264(s1)
- 457a: 10a4bc23 sd a0,280(s1)
- base.size = 0;
- 457e: 00003797 auipc a5,0x3
- 4582: 2e07b123 sd zero,738(a5) # 7860 <base>
- if (p->size >= size)
- 4586: f43d bnez s0,44f4 <malloc+0x26>
- base.next = freep = prevp = &base;
- 4588: 87aa mv a5,a0
- prevp->next = p->next;
- 458a: 6518 ld a4,8(a0)
- 458c: e798 sd a4,8(a5)
- 458e: bfc1 j 455e <malloc+0x90>
- return NULL;
- 4590: 4501 li a0,0
-}
- 4592: 8082 ret
-
-0000000000004594 <calloc>:
- if (__builtin_mul_overflow(nmemb, size, &total))
- 4594: 02b537b3 mulhu a5,a0,a1
-{
- 4598: 1101 addi sp,sp,-32
- 459a: e822 sd s0,16(sp)
- 459c: ec06 sd ra,24(sp)
- 459e: e426 sd s1,8(sp)
- if (__builtin_mul_overflow(nmemb, size, &total))
- 45a0: 02b50433 mul s0,a0,a1
- 45a4: e385 bnez a5,45c4 <calloc+0x30>
- void *p = malloc(total);
- 45a6: 8522 mv a0,s0
- 45a8: f27ff0ef jal 44ce <malloc>
- 45ac: 84aa mv s1,a0
- if (p)
- 45ae: c509 beqz a0,45b8 <calloc+0x24>
- memset(p, 0, total);
- 45b0: 8622 mv a2,s0
- 45b2: 4581 li a1,0
- 45b4: 524000ef jal 4ad8 <memset>
-}
- 45b8: 60e2 ld ra,24(sp)
- 45ba: 6442 ld s0,16(sp)
- 45bc: 8526 mv a0,s1
- 45be: 64a2 ld s1,8(sp)
- 45c0: 6105 addi sp,sp,32
- 45c2: 8082 ret
- 45c4: 60e2 ld ra,24(sp)
- 45c6: 6442 ld s0,16(sp)
- errno = ENOMEM;
- 45c8: 47b1 li a5,12
- return NULL;
- 45ca: 4481 li s1,0
- errno = ENOMEM;
- 45cc: 00003717 auipc a4,0x3
- 45d0: 18f72223 sw a5,388(a4) # 7750 <errno>
-}
- 45d4: 8526 mv a0,s1
- 45d6: 64a2 ld s1,8(sp)
- 45d8: 6105 addi sp,sp,32
- 45da: 8082 ret
-
-00000000000045dc <realloc>:
- if (!ptr)
- 45dc: c929 beqz a0,462e <realloc+0x52>
-{
- 45de: 1101 addi sp,sp,-32
- 45e0: ec06 sd ra,24(sp)
- 45e2: e426 sd s1,8(sp)
- if (size == 0)
- 45e4: c5b9 beqz a1,4632 <realloc+0x56>
- if (bp->size >= new_size)
- 45e6: ff053703 ld a4,-16(a0)
- size_t new_size = ALIGN(size + sizeof(header_t));
- 45ea: 01f58793 addi a5,a1,31
- 45ee: e822 sd s0,16(sp)
- 45f0: 9bc1 andi a5,a5,-16
- 45f2: 842a mv s0,a0
- return ptr;
- 45f4: 84aa mv s1,a0
- if (bp->size >= new_size)
- 45f6: 00f76863 bltu a4,a5,4606 <realloc+0x2a>
- 45fa: 6442 ld s0,16(sp)
-}
- 45fc: 60e2 ld ra,24(sp)
- 45fe: 8526 mv a0,s1
- 4600: 64a2 ld s1,8(sp)
- 4602: 6105 addi sp,sp,32
- 4604: 8082 ret
- void *new_ptr = malloc(size);
- 4606: 852e mv a0,a1
- 4608: ec7ff0ef jal 44ce <malloc>
- 460c: 84aa mv s1,a0
- if (!new_ptr)
- 460e: d575 beqz a0,45fa <realloc+0x1e>
- memcpy(new_ptr, ptr, bp->size - sizeof(header_t));
- 4610: ff043603 ld a2,-16(s0)
- 4614: 85a2 mv a1,s0
- 4616: 1641 addi a2,a2,-16
- 4618: 514000ef jal 4b2c <memcpy>
- free(ptr);
- 461c: 8522 mv a0,s0
- 461e: e3bff0ef jal 4458 <free>
-}
- 4622: 60e2 ld ra,24(sp)
- free(ptr);
- 4624: 6442 ld s0,16(sp)
-}
- 4626: 8526 mv a0,s1
- 4628: 64a2 ld s1,8(sp)
- 462a: 6105 addi sp,sp,32
- 462c: 8082 ret
- return malloc(size);
- 462e: 852e mv a0,a1
- 4630: bd79 j 44ce <malloc>
- free(ptr);
- 4632: e27ff0ef jal 4458 <free>
- return NULL;
- 4636: 4481 li s1,0
- 4638: b7d1 j 45fc <realloc+0x20>
-
-000000000000463a <strtoull>:
- if (base < 0 || base == 1 || base > 36)
- 463a: 02400813 li a6,36
-{
- 463e: 86aa mv a3,a0
- 4640: 872e mv a4,a1
- if (base < 0 || base == 1 || base > 36)
- 4642: 00c86663 bltu a6,a2,464e <strtoull+0x14>
- 4646: 4805 li a6,1
- 4648: 01060363 beq a2,a6,464e <strtoull+0x14>
- 464c: b939 j 426a <strtoull.part.0>
- if (endptr)
- 464e: c311 beqz a4,4652 <strtoull+0x18>
- *endptr = (char *)nptr;
- 4650: e314 sd a3,0(a4)
- errno = 0; /* EINVAL */
- 4652: 00003797 auipc a5,0x3
- 4656: 0e07af23 sw zero,254(a5) # 7750 <errno>
-}
- 465a: 4501 li a0,0
- 465c: 8082 ret
-
-000000000000465e <strtoll>:
-
-long long strtoll(const char *nptr, char **endptr, int base)
-{
- 465e: 1141 addi sp,sp,-16
- 4660: e406 sd ra,8(sp)
- 4662: e022 sd s0,0(sp)
- const char *s = nptr;
- 4664: 86aa mv a3,a0
- static inline int isspace(int c) { return c == ' ' || c == '\t' || c == '\n' || c == '\v' || c == '\f' || c == '\r'; }
- 4666: 02000813 li a6,32
- 466a: 4891 li a7,4
- unsigned long long acc;
- int c, neg = 0;
-
- do
- {
- c = *s++;
- 466c: 0006c783 lbu a5,0(a3)
- 4670: 0685 addi a3,a3,1
- 4672: ff77871b addiw a4,a5,-9
- 4676: 0ff77713 zext.b a4,a4
- 467a: 0007841b sext.w s0,a5
- 467e: ff0787e3 beq a5,a6,466c <strtoll+0xe>
- 4682: fee8f5e3 bgeu a7,a4,466c <strtoll+0xe>
- if (base < 0 || base == 1 || base > 36)
- 4686: 02400793 li a5,36
- 468a: 02c7ec63 bltu a5,a2,46c2 <strtoll+0x64>
- 468e: 4785 li a5,1
- 4690: 02f60963 beq a2,a5,46c2 <strtoll+0x64>
- 4694: bd7ff0ef jal 426a <strtoull.part.0>
- if (c == '-')
- neg = 1;
-
- acc = strtoull(nptr, endptr, base);
-
- if (errno == ERANGE && acc == ULLONG_MAX)
- 4698: 00003797 auipc a5,0x3
- 469c: 0b878793 addi a5,a5,184 # 7750 <errno>
- 46a0: 4394 lw a3,0(a5)
- 46a2: 02200713 li a4,34
- 46a6: 04e68363 beq a3,a4,46ec <strtoll+0x8e>
- return neg ? LLONG_MIN : LLONG_MAX;
-
- if (!neg && acc > (unsigned long long)LLONG_MAX)
- 46aa: 02d00713 li a4,45
- 46ae: 02e40563 beq s0,a4,46d8 <strtoll+0x7a>
- 46b2: 00055f63 bgez a0,46d0 <strtoll+0x72>
- {
- errno = ERANGE;
- 46b6: 02200713 li a4,34
- 46ba: c398 sw a4,0(a5)
- return neg ? LLONG_MIN : LLONG_MAX;
- 46bc: 557d li a0,-1
- 46be: 8105 srli a0,a0,0x1
- 46c0: a801 j 46d0 <strtoll+0x72>
- if (endptr)
- 46c2: c191 beqz a1,46c6 <strtoll+0x68>
- *endptr = (char *)nptr;
- 46c4: e188 sd a0,0(a1)
- errno = 0; /* EINVAL */
- 46c6: 00003797 auipc a5,0x3
- 46ca: 0807a523 sw zero,138(a5) # 7750 <errno>
- {
- errno = ERANGE;
- return LLONG_MIN;
- }
-
- return neg ? -(long long)acc : (long long)acc;
- 46ce: 4501 li a0,0
-}
- 46d0: 60a2 ld ra,8(sp)
- 46d2: 6402 ld s0,0(sp)
- 46d4: 0141 addi sp,sp,16
- 46d6: 8082 ret
- if (neg && acc > (unsigned long long)LLONG_MAX + 1)
- 46d8: 577d li a4,-1
- 46da: 177e slli a4,a4,0x3f
- 46dc: 02a76263 bltu a4,a0,4700 <strtoll+0xa2>
-}
- 46e0: 60a2 ld ra,8(sp)
- 46e2: 6402 ld s0,0(sp)
- return neg ? -(long long)acc : (long long)acc;
- 46e4: 40a00533 neg a0,a0
-}
- 46e8: 0141 addi sp,sp,16
- 46ea: 8082 ret
- if (errno == ERANGE && acc == ULLONG_MAX)
- 46ec: 577d li a4,-1
- 46ee: fae51ee3 bne a0,a4,46aa <strtoll+0x4c>
- return neg ? LLONG_MIN : LLONG_MAX;
- 46f2: 02d00793 li a5,45
- 46f6: fcf413e3 bne s0,a5,46bc <strtoll+0x5e>
- return LLONG_MIN;
- 46fa: 557d li a0,-1
- 46fc: 157e slli a0,a0,0x3f
- 46fe: bfc9 j 46d0 <strtoll+0x72>
- errno = ERANGE;
- 4700: 02200713 li a4,34
- 4704: c398 sw a4,0(a5)
- return LLONG_MIN;
- 4706: bfd5 j 46fa <strtoll+0x9c>
-
-0000000000004708 <strtoul>:
- if (base < 0 || base == 1 || base > 36)
- 4708: 02400813 li a6,36
-
-unsigned long strtoul(const char *nptr, char **endptr, int base)
-{
- 470c: 86aa mv a3,a0
- 470e: 872e mv a4,a1
- if (base < 0 || base == 1 || base > 36)
- 4710: 00c86663 bltu a6,a2,471c <strtoul+0x14>
- 4714: 4805 li a6,1
- 4716: 01060363 beq a2,a6,471c <strtoul+0x14>
- 471a: be81 j 426a <strtoull.part.0>
- if (endptr)
- 471c: c311 beqz a4,4720 <strtoul+0x18>
- *endptr = (char *)nptr;
- 471e: e314 sd a3,0(a4)
- errno = 0; /* EINVAL */
- 4720: 00003797 auipc a5,0x3
- 4724: 0207a823 sw zero,48(a5) # 7750 <errno>
- {
- errno = ERANGE;
- return ULONG_MAX;
- }
- return (unsigned long)ret;
-}
- 4728: 4501 li a0,0
- 472a: 8082 ret
-
-000000000000472c <strtol>:
-
-long strtol(const char *nptr, char **endptr, int base)
-{
- long long ret = strtoll(nptr, endptr, base);
- 472c: bf0d j 465e <strtoll>
-
-000000000000472e <atoi>:
- return LONG_MIN;
- }
- return (long)ret;
-}
-
-int atoi(const char *nptr) { return (int)strtol(nptr, NULL, 10); }
- 472e: 1141 addi sp,sp,-16
- long long ret = strtoll(nptr, endptr, base);
- 4730: 4629 li a2,10
- 4732: 4581 li a1,0
-int atoi(const char *nptr) { return (int)strtol(nptr, NULL, 10); }
- 4734: e406 sd ra,8(sp)
- long long ret = strtoll(nptr, endptr, base);
- 4736: f29ff0ef jal 465e <strtoll>
-int atoi(const char *nptr) { return (int)strtol(nptr, NULL, 10); }
- 473a: 60a2 ld ra,8(sp)
- 473c: 2501 sext.w a0,a0
- 473e: 0141 addi sp,sp,16
- 4740: 8082 ret
-
-0000000000004742 <atol>:
- long long ret = strtoll(nptr, endptr, base);
- 4742: 4629 li a2,10
- 4744: 4581 li a1,0
- 4746: bf21 j 465e <strtoll>
-
-0000000000004748 <atoll>:
-long atol(const char *nptr) { return strtol(nptr, NULL, 10); }
-long long atoll(const char *nptr) { return strtoll(nptr, NULL, 10); }
- 4748: 4629 li a2,10
- 474a: 4581 li a1,0
- 474c: bf09 j 465e <strtoll>
-
-000000000000474e <strtod>:
- 474e: 02000693 li a3,32
- 4752: 4611 li a2,4
-{
- double val = 0.0;
- int sign = 1;
- const char *s = nptr;
-
- while (isspace(*s))
- 4754: 00054783 lbu a5,0(a0)
- 4758: ff77871b addiw a4,a5,-9
- 475c: 0ff77713 zext.b a4,a4
- 4760: 06d78263 beq a5,a3,47c4 <strtod+0x76>
- 4764: 06e67063 bgeu a2,a4,47c4 <strtod+0x76>
- s++;
- if (*s == '-')
- 4768: 02d00713 li a4,45
- 476c: 08e78e63 beq a5,a4,4808 <strtod+0xba>
- {
- sign = -1;
- s++;
- }
- else if (*s == '+')
- 4770: 02b00713 li a4,43
- 4774: 0ae78263 beq a5,a4,4818 <strtod+0xca>
- 4778: 00001717 auipc a4,0x1
- 477c: 0f073507 fld fa0,240(a4) # 5868 <STDIN_FD+0x10>
- static inline int isdigit(int c) { return c >= '0' && c <= '9'; }
- 4780: fd07861b addiw a2,a5,-48
- s++;
-
- while (isdigit(*s))
- 4784: 46a5 li a3,9
- 4786: f20007d3 fmv.d.x fa5,zero
- 478a: 8732 mv a4,a2
- 478c: 02c6e363 bltu a3,a2,47b2 <strtod+0x64>
- 4790: 00001797 auipc a5,0x1
- 4794: 0e07b687 fld fa3,224(a5) # 5870 <STDIN_FD+0x18>
- 4798: 4625 li a2,9
- 479a: 00154783 lbu a5,1(a0)
- {
- val = val * 10.0 + (*s - '0');
- 479e: d2070753 fcvt.d.w fa4,a4
- s++;
- 47a2: 0505 addi a0,a0,1
- 47a4: fd07869b addiw a3,a5,-48
- val = val * 10.0 + (*s - '0');
- 47a8: 72d7f7c3 fmadd.d fa5,fa5,fa3,fa4
- 47ac: 8736 mv a4,a3
- while (isdigit(*s))
- 47ae: fed676e3 bgeu a2,a3,479a <strtod+0x4c>
- }
- if (*s == '.')
- 47b2: 02e00713 li a4,46
- 47b6: 00e78963 beq a5,a4,47c8 <strtod+0x7a>
- val += (*s - '0') * factor;
- s++;
- }
- }
-
- if (endptr)
- 47ba: c191 beqz a1,47be <strtod+0x70>
- *endptr = (char *)s;
- 47bc: e188 sd a0,0(a1)
- return val * sign;
-}
- 47be: 12a7f553 fmul.d fa0,fa5,fa0
- 47c2: 8082 ret
- s++;
- 47c4: 0505 addi a0,a0,1
- 47c6: b779 j 4754 <strtod+0x6>
- while (isdigit(*s))
- 47c8: 00154703 lbu a4,1(a0)
- 47cc: 46a5 li a3,9
- s++;
- 47ce: 0505 addi a0,a0,1
- 47d0: fd07071b addiw a4,a4,-48
- 47d4: 87ba mv a5,a4
- while (isdigit(*s))
- 47d6: fee6e2e3 bltu a3,a4,47ba <strtod+0x6c>
- double factor = 1.0;
- 47da: 00001717 auipc a4,0x1
- 47de: 08e73707 fld fa4,142(a4) # 5868 <STDIN_FD+0x10>
- 47e2: 00001717 auipc a4,0x1
- 47e6: 0a673607 fld fa2,166(a4) # 5888 <STDIN_FD+0x30>
- factor *= 0.1;
- 47ea: 12c77753 fmul.d fa4,fa4,fa2
- while (isdigit(*s))
- 47ee: 00154703 lbu a4,1(a0)
- val += (*s - '0') * factor;
- 47f2: d20786d3 fcvt.d.w fa3,a5
- s++;
- 47f6: 0505 addi a0,a0,1
- 47f8: fd07071b addiw a4,a4,-48
- 47fc: 87ba mv a5,a4
- val += (*s - '0') * factor;
- 47fe: 7ae6f7c3 fmadd.d fa5,fa3,fa4,fa5
- while (isdigit(*s))
- 4802: fee6f4e3 bgeu a3,a4,47ea <strtod+0x9c>
- 4806: bf55 j 47ba <strtod+0x6c>
- while (isdigit(*s))
- 4808: 00154783 lbu a5,1(a0)
- 480c: 00001717 auipc a4,0x1
- 4810: 05473507 fld fa0,84(a4) # 5860 <STDIN_FD+0x8>
- s++;
- 4814: 0505 addi a0,a0,1
- 4816: b7ad j 4780 <strtod+0x32>
- while (isdigit(*s))
- 4818: 00154783 lbu a5,1(a0)
- 481c: 00001717 auipc a4,0x1
- 4820: 04c73507 fld fa0,76(a4) # 5868 <STDIN_FD+0x10>
- s++;
- 4824: 0505 addi a0,a0,1
- 4826: bfa9 j 4780 <strtod+0x32>
-
-0000000000004828 <atof>:
-
-double atof(const char *nptr) { return strtod(nptr, NULL); }
- 4828: 4581 li a1,0
- 482a: b715 j 474e <strtod>
-
-000000000000482c <strtof>:
-float strtof(const char *nptr, char **endptr) { return (float)strtod(nptr, endptr); }
- 482c: 1141 addi sp,sp,-16
- 482e: e406 sd ra,8(sp)
- 4830: f1fff0ef jal 474e <strtod>
- 4834: 60a2 ld ra,8(sp)
- 4836: 40157553 fcvt.s.d fa0,fa0
- 483a: 0141 addi sp,sp,16
- 483c: 8082 ret
-
-000000000000483e <qsort>:
- }
-}
-
-void qsort(void *base, size_t nmemb, size_t size, int (*compar)(const void *, const void *))
-{
- if (nmemb < 2 || size == 0)
- 483e: 4785 li a5,1
- 4840: 0cb7fd63 bgeu a5,a1,491a <qsort+0xdc>
-{
- 4844: 715d addi sp,sp,-80
- 4846: f44e sd s3,40(sp)
- 4848: e486 sd ra,72(sp)
- 484a: 89b2 mv s3,a2
- if (nmemb < 2 || size == 0)
- 484c: c279 beqz a2,4912 <qsort+0xd4>
- 484e: e85a sd s6,16(sp)
- 4850: 8b2e mv s6,a1
- return;
-
- char *base_ptr = (char *)base;
- char *pivot = base_ptr + (nmemb - 1) * size;
- 4852: 1b7d addi s6,s6,-1
- 4854: fc26 sd s1,56(sp)
- 4856: 033b04b3 mul s1,s6,s3
- 485a: ec56 sd s5,24(sp)
- 485c: 8aaa mv s5,a0
- 485e: f052 sd s4,32(sp)
- 4860: e45e sd s7,8(sp)
- 4862: e0a2 sd s0,64(sp)
- 4864: f84a sd s2,48(sp)
- 4866: 8a36 mv s4,a3
- if (nmemb < 2 || size == 0)
- 4868: 4b85 li s7,1
- char *pivot = base_ptr + (nmemb - 1) * size;
- 486a: 94d6 add s1,s1,s5
- char *i = base_ptr;
- char *j = base_ptr;
-
- /* Partition */
- for (; j < pivot; j += size)
- 486c: 069af763 bgeu s5,s1,48da <qsort+0x9c>
- char *j = base_ptr;
- 4870: 8956 mv s2,s5
- char *i = base_ptr;
- 4872: 8456 mv s0,s5
- 4874: a021 j 487c <qsort+0x3e>
- for (; j < pivot; j += size)
- 4876: 994e add s2,s2,s3
- 4878: 00997f63 bgeu s2,s1,4896 <qsort+0x58>
- {
- if (compar(j, pivot) < 0)
- 487c: 85a6 mv a1,s1
- 487e: 854a mv a0,s2
- 4880: 9a02 jalr s4
- 4882: fe055ae3 bgez a0,4876 <qsort+0x38>
- {
- if (i != j)
- 4886: 05241d63 bne s0,s2,48e0 <qsort+0xa2>
- 488a: 01390633 add a2,s2,s3
- swap_bytes(i, j, size);
- i += size;
- 488e: 8432 mv s0,a2
- for (; j < pivot; j += size)
- 4890: 994e add s2,s2,s3
- 4892: fe9965e3 bltu s2,s1,487c <qsort+0x3e>
- }
- }
- swap_bytes(i, pivot, size);
-
- /* Recurse */
- size_t left_count = (i - base_ptr) / size;
- 4896: 415405b3 sub a1,s0,s5
- 489a: 0335d5b3 divu a1,a1,s3
- qsort(base, left_count, size, compar);
- qsort(i + size, nmemb - left_count - 1, size, compar);
- 489e: 40bb0b33 sub s6,s6,a1
- while (size--)
- 48a2: 013406b3 add a3,s0,s3
- *a++ = *b;
- 48a6: 0004c703 lbu a4,0(s1)
- temp = *a;
- 48aa: 00044783 lbu a5,0(s0)
- *b++ = temp;
- 48ae: 0485 addi s1,s1,1
- *a++ = *b;
- 48b0: 0405 addi s0,s0,1
- 48b2: fee40fa3 sb a4,-1(s0)
- *b++ = temp;
- 48b6: fef48fa3 sb a5,-1(s1)
- while (size--)
- 48ba: fed416e3 bne s0,a3,48a6 <qsort+0x68>
- qsort(base, left_count, size, compar);
- 48be: 86d2 mv a3,s4
- 48c0: 864e mv a2,s3
- 48c2: 8556 mv a0,s5
- 48c4: f7bff0ef jal 483e <qsort>
- if (nmemb < 2 || size == 0)
- 48c8: 036bfe63 bgeu s7,s6,4904 <qsort+0xc6>
- char *pivot = base_ptr + (nmemb - 1) * size;
- 48cc: 1b7d addi s6,s6,-1
- 48ce: 033b04b3 mul s1,s6,s3
- 48d2: 8aa2 mv s5,s0
- 48d4: 94d6 add s1,s1,s5
- for (; j < pivot; j += size)
- 48d6: f89aede3 bltu s5,s1,4870 <qsort+0x32>
- char *i = base_ptr;
- 48da: 8456 mv s0,s5
- for (; j < pivot; j += size)
- 48dc: 4581 li a1,0
- 48de: b7d1 j 48a2 <qsort+0x64>
- 48e0: 01340633 add a2,s0,s3
- if (i != j)
- 48e4: 874a mv a4,s2
- 48e6: 87a2 mv a5,s0
- *a++ = *b;
- 48e8: 00074683 lbu a3,0(a4)
- temp = *a;
- 48ec: 0007c803 lbu a6,0(a5)
- *b++ = temp;
- 48f0: 0705 addi a4,a4,1
- *a++ = *b;
- 48f2: 0785 addi a5,a5,1
- 48f4: fed78fa3 sb a3,-1(a5)
- *b++ = temp;
- 48f8: ff070fa3 sb a6,-1(a4)
- while (size--)
- 48fc: fec796e3 bne a5,a2,48e8 <qsort+0xaa>
- i += size;
- 4900: 8432 mv s0,a2
- 4902: b779 j 4890 <qsort+0x52>
- 4904: 6406 ld s0,64(sp)
- 4906: 74e2 ld s1,56(sp)
- 4908: 7942 ld s2,48(sp)
- 490a: 7a02 ld s4,32(sp)
- 490c: 6ae2 ld s5,24(sp)
- 490e: 6b42 ld s6,16(sp)
- 4910: 6ba2 ld s7,8(sp)
-}
- 4912: 60a6 ld ra,72(sp)
- 4914: 79a2 ld s3,40(sp)
- 4916: 6161 addi sp,sp,80
- 4918: 8082 ret
- 491a: 8082 ret
-
-000000000000491c <bsearch>:
-
-void *bsearch(const void *key, const void *base, size_t nmemb, size_t size, int (*compar)(const void *, const void *))
-{
- 491c: 715d addi sp,sp,-80
- 491e: e486 sd ra,72(sp)
- 4920: fc26 sd s1,56(sp)
- size_t l = 0, u = nmemb;
- while (l < u)
- 4922: c629 beqz a2,496c <bsearch+0x50>
- 4924: f84a sd s2,48(sp)
- 4926: f44e sd s3,40(sp)
- 4928: f052 sd s4,32(sp)
- 492a: ec56 sd s5,24(sp)
- 492c: e85a sd s6,16(sp)
- 492e: e45e sd s7,8(sp)
- 4930: e0a2 sd s0,64(sp)
- 4932: 8932 mv s2,a2
- 4934: 8a2a mv s4,a0
- 4936: 8aae mv s5,a1
- 4938: 8b36 mv s6,a3
- 493a: 8bba mv s7,a4
- size_t l = 0, u = nmemb;
- 493c: 4981 li s3,0
- {
- size_t idx = (l + u) / 2;
- 493e: 01298433 add s0,s3,s2
- 4942: 8005 srli s0,s0,0x1
- const void *p = (void *)((const char *)base + (idx * size));
- 4944: 036404b3 mul s1,s0,s6
- int cmp = compar(key, p);
- 4948: 8552 mv a0,s4
- const void *p = (void *)((const char *)base + (idx * size));
- 494a: 94d6 add s1,s1,s5
- int cmp = compar(key, p);
- 494c: 85a6 mv a1,s1
- 494e: 9b82 jalr s7
- if (cmp < 0)
- 4950: 02054463 bltz a0,4978 <bsearch+0x5c>
- u = idx;
- else if (cmp > 0)
- 4954: c515 beqz a0,4980 <bsearch+0x64>
- l = idx + 1;
- 4956: 00140993 addi s3,s0,1
- while (l < u)
- 495a: ff29e2e3 bltu s3,s2,493e <bsearch+0x22>
- 495e: 6406 ld s0,64(sp)
- 4960: 7942 ld s2,48(sp)
- 4962: 79a2 ld s3,40(sp)
- 4964: 7a02 ld s4,32(sp)
- 4966: 6ae2 ld s5,24(sp)
- 4968: 6b42 ld s6,16(sp)
- 496a: 6ba2 ld s7,8(sp)
- else
- return (void *)p;
- }
- return NULL;
-}
- 496c: 60a6 ld ra,72(sp)
- return NULL;
- 496e: 4481 li s1,0
-}
- 4970: 8526 mv a0,s1
- 4972: 74e2 ld s1,56(sp)
- 4974: 6161 addi sp,sp,80
- 4976: 8082 ret
- u = idx;
- 4978: 8922 mv s2,s0
- while (l < u)
- 497a: fd29e2e3 bltu s3,s2,493e <bsearch+0x22>
- 497e: b7c5 j 495e <bsearch+0x42>
- 4980: 6406 ld s0,64(sp)
-}
- 4982: 60a6 ld ra,72(sp)
- 4984: 7942 ld s2,48(sp)
- 4986: 79a2 ld s3,40(sp)
- 4988: 7a02 ld s4,32(sp)
- 498a: 6ae2 ld s5,24(sp)
- 498c: 6b42 ld s6,16(sp)
- 498e: 6ba2 ld s7,8(sp)
- 4990: 8526 mv a0,s1
- 4992: 74e2 ld s1,56(sp)
- 4994: 6161 addi sp,sp,80
- 4996: 8082 ret
-
-0000000000004998 <abs>:
-
-/* Math & Mics */
-
-int abs(int j) { return (j < 0) ? -j : j; }
- 4998: 41f5579b sraiw a5,a0,0x1f
- 499c: 8d3d xor a0,a0,a5
- 499e: 9d1d subw a0,a0,a5
- 49a0: 8082 ret
-
-00000000000049a2 <labs>:
-long labs(long j) { return (j < 0) ? -j : j; }
- 49a2: 43f55793 srai a5,a0,0x3f
- 49a6: 8d3d xor a0,a0,a5
- 49a8: 8d1d sub a0,a0,a5
- 49aa: 8082 ret
-
-00000000000049ac <llabs>:
-long long llabs(long long j) { return (j < 0) ? -j : j; }
- 49ac: 43f55793 srai a5,a0,0x3f
- 49b0: 8d3d xor a0,a0,a5
- 49b2: 8d1d sub a0,a0,a5
- 49b4: 8082 ret
-
-00000000000049b6 <div>:
-
-div_t div(int numer, int denom)
-{
- div_t res = {numer / denom, numer % denom};
- 49b6: 02b547bb divw a5,a0,a1
-{
- 49ba: 1141 addi sp,sp,-16
- return res;
-}
- 49bc: 0141 addi sp,sp,16
- div_t res = {numer / denom, numer % denom};
- 49be: 02b5653b remw a0,a0,a1
- return res;
- 49c2: 1782 slli a5,a5,0x20
- 49c4: 9381 srli a5,a5,0x20
- 49c6: 1502 slli a0,a0,0x20
-}
- 49c8: 8d5d or a0,a0,a5
- 49ca: 8082 ret
-
-00000000000049cc <ldiv>:
-ldiv_t ldiv(long numer, long denom)
-{
- 49cc: 1141 addi sp,sp,-16
- 49ce: 87aa mv a5,a0
- ldiv_t res = {numer / denom, numer % denom};
- return res;
-}
- 49d0: 02b54533 div a0,a0,a1
- 49d4: 0141 addi sp,sp,16
- 49d6: 02b7e5b3 rem a1,a5,a1
- 49da: 8082 ret
-
-00000000000049dc <lldiv>:
-lldiv_t lldiv(long long numer, long long denom)
-{
- 49dc: 1141 addi sp,sp,-16
- 49de: 87aa mv a5,a0
- lldiv_t res = {numer / denom, numer % denom};
- return res;
-}
- 49e0: 02b54533 div a0,a0,a1
- 49e4: 0141 addi sp,sp,16
- 49e6: 02b7e5b3 rem a1,a5,a1
- 49ea: 8082 ret
-
-00000000000049ec <rand>:
-
-static unsigned long next = 1;
-int rand(void)
-{
- next = next * 1103515245 + 12345;
- 49ec: 00003697 auipc a3,0x3
- 49f0: d1c68693 addi a3,a3,-740 # 7708 <next>
- 49f4: 629c ld a5,0(a3)
- 49f6: 41c65737 lui a4,0x41c65
- 49fa: e6d70713 addi a4,a4,-403 # 41c64e6d <_ZSt4cerr+0x41c5d5e5>
- 49fe: 02e787b3 mul a5,a5,a4
- 4a02: 670d lui a4,0x3
- 4a04: 03970713 addi a4,a4,57 # 3039 <sprintf+0x33>
- 4a08: 97ba add a5,a5,a4
- return (unsigned int)(next / 65536) % 32768;
- 4a0a: 02179513 slli a0,a5,0x21
- next = next * 1103515245 + 12345;
- 4a0e: e29c sd a5,0(a3)
-}
- 4a10: 9145 srli a0,a0,0x31
- 4a12: 8082 ret
-
-0000000000004a14 <srand>:
-void srand(unsigned int seed) { next = seed; }
- 4a14: 1502 slli a0,a0,0x20
- 4a16: 9101 srli a0,a0,0x20
- 4a18: 00003797 auipc a5,0x3
- 4a1c: cea7b823 sd a0,-784(a5) # 7708 <next>
- 4a20: 8082 ret
-
-0000000000004a22 <mblen>:
-
-/* Stub */
-int mblen(const char *s, size_t n) { return (s && *s && n) ? 1 : 0; }
- 4a22: c901 beqz a0,4a32 <mblen+0x10>
- 4a24: 00054783 lbu a5,0(a0)
- 4a28: 4501 li a0,0
- 4a2a: c789 beqz a5,4a34 <mblen+0x12>
- 4a2c: 00b03533 snez a0,a1
- 4a30: 8082 ret
- 4a32: 4501 li a0,0
- 4a34: 8082 ret
-
-0000000000004a36 <mbtowc>:
-int mbtowc(wchar_t *pwc, const char *s, size_t n)
-{
- 4a36: 87aa mv a5,a0
- if (!s)
- 4a38: cd81 beqz a1,4a50 <mbtowc+0x1a>
- return 0;
- if (n == 0)
- return -1;
- 4a3a: 557d li a0,-1
- if (n == 0)
- 4a3c: ca19 beqz a2,4a52 <mbtowc+0x1c>
- if (pwc)
- 4a3e: c781 beqz a5,4a46 <mbtowc+0x10>
- *pwc = (wchar_t)*s;
- 4a40: 0005c703 lbu a4,0(a1)
- 4a44: c398 sw a4,0(a5)
- return (*s != 0);
- 4a46: 0005c503 lbu a0,0(a1)
- 4a4a: 00a03533 snez a0,a0
- 4a4e: 8082 ret
- return 0;
- 4a50: 4501 li a0,0
-}
- 4a52: 8082 ret
-
-0000000000004a54 <wctomb>:
-int wctomb(char *s, wchar_t wchar)
-{
- if (!s)
- 4a54: c509 beqz a0,4a5e <wctomb+0xa>
- return 0;
- *s = (char)wchar;
- 4a56: 00b50023 sb a1,0(a0)
- return 1;
- 4a5a: 4505 li a0,1
- 4a5c: 8082 ret
- return 0;
- 4a5e: 4501 li a0,0
-}
- 4a60: 8082 ret
-
-0000000000004a62 <mbstowcs>:
-size_t mbstowcs(wchar_t *dest, const char *src, size_t n)
-{
- size_t i = 0;
- while (src[i] && i < n)
- 4a62: 0005c703 lbu a4,0(a1)
- 4a66: cb0d beqz a4,4a98 <mbstowcs+0x36>
- 4a68: ca15 beqz a2,4a9c <mbstowcs+0x3a>
- 4a6a: 86aa mv a3,a0
- size_t i = 0;
- 4a6c: 4781 li a5,0
- 4a6e: a019 j 4a74 <mbstowcs+0x12>
- while (src[i] && i < n)
- 4a70: 02f60263 beq a2,a5,4a94 <mbstowcs+0x32>
- {
- dest[i] = (wchar_t)src[i];
- i++;
- 4a74: 0785 addi a5,a5,1
- dest[i] = (wchar_t)src[i];
- 4a76: c298 sw a4,0(a3)
- while (src[i] && i < n)
- 4a78: 00f58733 add a4,a1,a5
- 4a7c: 00074703 lbu a4,0(a4)
- 4a80: 0691 addi a3,a3,4
- 4a82: f77d bnez a4,4a70 <mbstowcs+0xe>
- }
- if (i < n)
- 4a84: 00c7f763 bgeu a5,a2,4a92 <mbstowcs+0x30>
- dest[i] = 0;
- 4a88: 00279713 slli a4,a5,0x2
- 4a8c: 953a add a0,a0,a4
- 4a8e: 00052023 sw zero,0(a0)
- size_t i = 0;
- 4a92: 863e mv a2,a5
- 4a94: 8532 mv a0,a2
- 4a96: 8082 ret
- 4a98: 4781 li a5,0
- 4a9a: b7ed j 4a84 <mbstowcs+0x22>
- 4a9c: 4501 li a0,0
- return i;
-}
- 4a9e: 8082 ret
-
-0000000000004aa0 <wcstombs>:
-size_t wcstombs(char *dest, const wchar_t *src, size_t n)
-{
- size_t i = 0;
- while (src[i] && i < n)
- 4aa0: 4198 lw a4,0(a1)
- 4aa2: c71d beqz a4,4ad0 <wcstombs+0x30>
- 4aa4: ca05 beqz a2,4ad4 <wcstombs+0x34>
- 4aa6: 0591 addi a1,a1,4
- size_t i = 0;
- 4aa8: 4781 li a5,0
- 4aaa: a019 j 4ab0 <wcstombs+0x10>
- while (src[i] && i < n)
- 4aac: 02f60063 beq a2,a5,4acc <wcstombs+0x2c>
- {
- dest[i] = (char)src[i];
- 4ab0: 00f506b3 add a3,a0,a5
- 4ab4: 00e68023 sb a4,0(a3)
- while (src[i] && i < n)
- 4ab8: 4198 lw a4,0(a1)
- i++;
- 4aba: 0785 addi a5,a5,1
- while (src[i] && i < n)
- 4abc: 0591 addi a1,a1,4
- 4abe: f77d bnez a4,4aac <wcstombs+0xc>
- }
- if (i < n)
- 4ac0: 00c7f563 bgeu a5,a2,4aca <wcstombs+0x2a>
- dest[i] = 0;
- 4ac4: 953e add a0,a0,a5
- 4ac6: 00050023 sb zero,0(a0)
- size_t i = 0;
- 4aca: 863e mv a2,a5
- 4acc: 8532 mv a0,a2
- 4ace: 8082 ret
- 4ad0: 4781 li a5,0
- 4ad2: b7fd j 4ac0 <wcstombs+0x20>
- 4ad4: 4501 li a0,0
- return i;
- 4ad6: 8082 ret
-
-0000000000004ad8 <memset>:
-
-void *memset(void *dst, int c, size_t n)
-{
- char *cdst = (char *)dst;
- for (size_t i = 0; i < n; i++)
- cdst[i] = (char)c;
- 4ad8: 0ff5f593 zext.b a1,a1
- 4adc: 87aa mv a5,a0
- 4ade: 00a60733 add a4,a2,a0
- for (size_t i = 0; i < n; i++)
- 4ae2: c611 beqz a2,4aee <memset+0x16>
- cdst[i] = (char)c;
- 4ae4: 00b78023 sb a1,0(a5)
- for (size_t i = 0; i < n; i++)
- 4ae8: 0785 addi a5,a5,1
- 4aea: fee79de3 bne a5,a4,4ae4 <memset+0xc>
- return dst;
-}
- 4aee: 8082 ret
-
-0000000000004af0 <memmove>:
-
-void *memmove(void *vdst, const void *vsrc, size_t n)
-{
- char *dst = (char *)vdst;
- const char *src = (const char *)vsrc;
- if (dst == src)
- 4af0: 02b50d63 beq a0,a1,4b2a <memmove+0x3a>
- return vdst;
-
- if (src > dst)
- 4af4: 00b57e63 bgeu a0,a1,4b10 <memmove+0x20>
- {
- while (n--)
- 4af8: ca0d beqz a2,4b2a <memmove+0x3a>
- 4afa: 962a add a2,a2,a0
- char *dst = (char *)vdst;
- 4afc: 87aa mv a5,a0
- *dst++ = *src++;
- 4afe: 0005c703 lbu a4,0(a1)
- 4b02: 0785 addi a5,a5,1
- 4b04: 0585 addi a1,a1,1
- 4b06: fee78fa3 sb a4,-1(a5)
- while (n--)
- 4b0a: fec79ae3 bne a5,a2,4afe <memmove+0xe>
- 4b0e: 8082 ret
- }
- else
- {
- dst += n;
- 4b10: 00c50733 add a4,a0,a2
- src += n;
- 4b14: 00c587b3 add a5,a1,a2
- while (n-- > 0)
- 4b18: ca09 beqz a2,4b2a <memmove+0x3a>
- *--dst = *--src;
- 4b1a: fff7c683 lbu a3,-1(a5)
- 4b1e: 17fd addi a5,a5,-1
- 4b20: 177d addi a4,a4,-1
- 4b22: 00d70023 sb a3,0(a4)
- while (n-- > 0)
- 4b26: fef59ae3 bne a1,a5,4b1a <memmove+0x2a>
- }
- return vdst;
-}
- 4b2a: 8082 ret
-
-0000000000004b2c <memcpy>:
-
-void *memcpy(void *vdst, const void *vsrc, size_t n)
-{
- return memmove(vdst, vsrc, n);
- 4b2c: b7d1 j 4af0 <memmove>
-
-0000000000004b2e <memcmp>:
-
-int memcmp(const void *s1, const void *s2, size_t n)
-{
- const unsigned char *p1 = (const unsigned char *)s1;
- const unsigned char *p2 = (const unsigned char *)s2;
- while (n--)
- 4b2e: c205 beqz a2,4b4e <memcmp+0x20>
- 4b30: 962a add a2,a2,a0
- 4b32: a019 j 4b38 <memcmp+0xa>
- 4b34: 00c50d63 beq a0,a2,4b4e <memcmp+0x20>
- {
- if (*p1 != *p2)
- 4b38: 00054783 lbu a5,0(a0)
- 4b3c: 0005c703 lbu a4,0(a1)
- return *p1 - *p2;
- p1++;
- 4b40: 0505 addi a0,a0,1
- p2++;
- 4b42: 0585 addi a1,a1,1
- if (*p1 != *p2)
- 4b44: fee788e3 beq a5,a4,4b34 <memcmp+0x6>
- return *p1 - *p2;
- 4b48: 40e7853b subw a0,a5,a4
- 4b4c: 8082 ret
- }
- return 0;
- 4b4e: 4501 li a0,0
-}
- 4b50: 8082 ret
-
-0000000000004b52 <memchr>:
-
-void *memchr(const void *s, int c, size_t n)
-{
- const unsigned char *p = (const unsigned char *)s;
- while (n--)
- 4b52: ce09 beqz a2,4b6c <memchr+0x1a>
- {
- if (*p == (unsigned char)c)
- 4b54: 0ff5f593 zext.b a1,a1
- 4b58: 962a add a2,a2,a0
- 4b5a: a021 j 4b62 <memchr+0x10>
- return (void *)p;
- p++;
- 4b5c: 0505 addi a0,a0,1
- while (n--)
- 4b5e: 00a60763 beq a2,a0,4b6c <memchr+0x1a>
- if (*p == (unsigned char)c)
- 4b62: 00054783 lbu a5,0(a0)
- 4b66: feb79be3 bne a5,a1,4b5c <memchr+0xa>
- }
- return NULL;
-}
- 4b6a: 8082 ret
- return NULL;
- 4b6c: 4501 li a0,0
-}
- 4b6e: 8082 ret
-
-0000000000004b70 <strlen>:
-/* String Manipulation Functions */
-
-size_t strlen(const char *s)
-{
- const char *p = s;
- while (*p)
- 4b70: 00054783 lbu a5,0(a0)
- 4b74: cb89 beqz a5,4b86 <strlen+0x16>
- const char *p = s;
- 4b76: 87aa mv a5,a0
- while (*p)
- 4b78: 0017c703 lbu a4,1(a5)
- p++;
- 4b7c: 0785 addi a5,a5,1
- while (*p)
- 4b7e: ff6d bnez a4,4b78 <strlen+0x8>
- return (size_t)(p - s);
- 4b80: 40a78533 sub a0,a5,a0
- 4b84: 8082 ret
- while (*p)
- 4b86: 4501 li a0,0
-}
- 4b88: 8082 ret
-
-0000000000004b8a <strcpy>:
-
-char *strcpy(char *dst, const char *src)
-{
- char *os = dst;
- while ((*dst++ = *src++) != 0)
- 4b8a: 87aa mv a5,a0
- 4b8c: 0005c703 lbu a4,0(a1)
- 4b90: 0785 addi a5,a5,1
- 4b92: 0585 addi a1,a1,1
- 4b94: fee78fa3 sb a4,-1(a5)
- 4b98: fb75 bnez a4,4b8c <strcpy+0x2>
- ;
- return os;
-}
- 4b9a: 8082 ret
-
-0000000000004b9c <strncpy>:
-char *strncpy(char *dst, const char *src, size_t n)
-{
- char *os = dst;
- size_t i;
-
- for (i = 0; i < n && src[i] != '\0'; i++)
- 4b9c: 4781 li a5,0
- 4b9e: e619 bnez a2,4bac <strncpy+0x10>
- 4ba0: 8082 ret
- dst[i] = src[i];
- 4ba2: 00e68023 sb a4,0(a3)
- for (i = 0; i < n && src[i] != '\0'; i++)
- 4ba6: 0785 addi a5,a5,1
- 4ba8: 02f60263 beq a2,a5,4bcc <strncpy+0x30>
- 4bac: 00f58733 add a4,a1,a5
- 4bb0: 00074703 lbu a4,0(a4)
- dst[i] = src[i];
- 4bb4: 00f506b3 add a3,a0,a5
- for (i = 0; i < n && src[i] != '\0'; i++)
- 4bb8: f76d bnez a4,4ba2 <strncpy+0x6>
-
- for (; i < n; i++)
- 4bba: 00c7f963 bgeu a5,a2,4bcc <strncpy+0x30>
- 4bbe: 87b6 mv a5,a3
- 4bc0: 962a add a2,a2,a0
- dst[i] = '\0';
- 4bc2: 00078023 sb zero,0(a5)
- for (; i < n; i++)
- 4bc6: 0785 addi a5,a5,1
- 4bc8: fec79de3 bne a5,a2,4bc2 <strncpy+0x26>
-
- return os;
-}
- 4bcc: 8082 ret
-
-0000000000004bce <strcat>:
-
-char *strcat(char *dst, const char *src)
-{
- char *os = dst;
- while (*dst)
- 4bce: 00054783 lbu a5,0(a0)
- 4bd2: cf91 beqz a5,4bee <strcat+0x20>
- 4bd4: 87aa mv a5,a0
- 4bd6: 0017c703 lbu a4,1(a5)
- dst++;
- 4bda: 0785 addi a5,a5,1
- while (*dst)
- 4bdc: ff6d bnez a4,4bd6 <strcat+0x8>
- while ((*dst++ = *src++) != 0)
- 4bde: 0005c703 lbu a4,0(a1)
- 4be2: 0785 addi a5,a5,1
- 4be4: 0585 addi a1,a1,1
- 4be6: fee78fa3 sb a4,-1(a5)
- 4bea: fb75 bnez a4,4bde <strcat+0x10>
- ;
- return os;
-}
- 4bec: 8082 ret
- while ((*dst++ = *src++) != 0)
- 4bee: 0005c703 lbu a4,0(a1)
- while (*dst)
- 4bf2: 87aa mv a5,a0
- while ((*dst++ = *src++) != 0)
- 4bf4: 0785 addi a5,a5,1
- 4bf6: fee78fa3 sb a4,-1(a5)
- 4bfa: 0585 addi a1,a1,1
- 4bfc: f36d bnez a4,4bde <strcat+0x10>
- 4bfe: 8082 ret
-
-0000000000004c00 <strncat>:
- while (*p)
- 4c00: 00054783 lbu a5,0(a0)
- const char *p = s;
- 4c04: 872a mv a4,a0
- while (*p)
- 4c06: c789 beqz a5,4c10 <strncat+0x10>
- 4c08: 00174783 lbu a5,1(a4)
- p++;
- 4c0c: 0705 addi a4,a4,1
- while (*p)
- 4c0e: ffed bnez a5,4c08 <strncat+0x8>
- size_t dest_len = strlen(dst);
- size_t i;
-
- dst += dest_len;
-
- for (i = 0; i < n && src[i] != '\0'; i++)
- 4c10: 86ba mv a3,a4
- 4c12: 4781 li a5,0
- 4c14: 88ba mv a7,a4
- 4c16: ea01 bnez a2,4c26 <strncat+0x26>
- 4c18: a839 j 4c36 <strncat+0x36>
- dst[i] = src[i];
- 4c1a: 01068023 sb a6,0(a3)
- for (i = 0; i < n && src[i] != '\0'; i++)
- 4c1e: 00188693 addi a3,a7,1
- 4c22: 00f60d63 beq a2,a5,4c3c <strncat+0x3c>
- 4c26: 00f58833 add a6,a1,a5
- 4c2a: 00084803 lbu a6,0(a6)
- 4c2e: 0785 addi a5,a5,1
- dst[i] = src[i];
- 4c30: 88b6 mv a7,a3
- for (i = 0; i < n && src[i] != '\0'; i++)
- 4c32: fe0814e3 bnez a6,4c1a <strncat+0x1a>
-
- dst[i] = '\0';
- 4c36: 00088023 sb zero,0(a7)
-
- return os;
-}
- 4c3a: 8082 ret
- dst[i] = '\0';
- 4c3c: 00c708b3 add a7,a4,a2
- 4c40: 00088023 sb zero,0(a7)
-}
- 4c44: 8082 ret
-
-0000000000004c46 <strcmp>:
-
-int strcmp(const char *p, const char *q)
-{
- while (*p && *p == *q)
- 4c46: 00054783 lbu a5,0(a0)
- 4c4a: e791 bnez a5,4c56 <strcmp+0x10>
- 4c4c: a02d j 4c76 <strcmp+0x30>
- 4c4e: 00054783 lbu a5,0(a0)
- 4c52: cf89 beqz a5,4c6c <strcmp+0x26>
- 4c54: 85b6 mv a1,a3
- 4c56: 0005c703 lbu a4,0(a1)
- {
- p++;
- 4c5a: 0505 addi a0,a0,1
- q++;
- 4c5c: 00158693 addi a3,a1,1
- while (*p && *p == *q)
- 4c60: fef707e3 beq a4,a5,4c4e <strcmp+0x8>
- }
- return (int)((unsigned char)*p - (unsigned char)*q);
- 4c64: 0007851b sext.w a0,a5
-}
- 4c68: 9d19 subw a0,a0,a4
- 4c6a: 8082 ret
- return (int)((unsigned char)*p - (unsigned char)*q);
- 4c6c: 0015c703 lbu a4,1(a1)
- 4c70: 4501 li a0,0
-}
- 4c72: 9d19 subw a0,a0,a4
- 4c74: 8082 ret
- return (int)((unsigned char)*p - (unsigned char)*q);
- 4c76: 0005c703 lbu a4,0(a1)
- 4c7a: 4501 li a0,0
- 4c7c: b7f5 j 4c68 <strcmp+0x22>
-
-0000000000004c7e <strncmp>:
-
-int strncmp(const char *s1, const char *s2, size_t n)
-{
- if (n == 0)
- 4c7e: ca0d beqz a2,4cb0 <strncmp+0x32>
- return 0;
-
- while (n-- > 0 && *s1 && *s1 == *s2)
- 4c80: 00054783 lbu a5,0(a0)
- 4c84: 167d addi a2,a2,-1
- 4c86: 00c506b3 add a3,a0,a2
- 4c8a: eb89 bnez a5,4c9c <strncmp+0x1e>
- 4c8c: a80d j 4cbe <strncmp+0x40>
- {
- if (n == 0 || *s1 == '\0')
- 4c8e: 00d50d63 beq a0,a3,4ca8 <strncmp+0x2a>
- while (n-- > 0 && *s1 && *s1 == *s2)
- 4c92: 00154783 lbu a5,1(a0)
- break;
- s1++;
- 4c96: 0505 addi a0,a0,1
- while (n-- > 0 && *s1 && *s1 == *s2)
- 4c98: cf91 beqz a5,4cb4 <strncmp+0x36>
- 4c9a: 85b2 mv a1,a2
- 4c9c: 0005c703 lbu a4,0(a1)
- s2++;
- 4ca0: 00158613 addi a2,a1,1
- while (n-- > 0 && *s1 && *s1 == *s2)
- 4ca4: fef705e3 beq a4,a5,4c8e <strncmp+0x10>
- }
- return (int)((unsigned char)*s1 - (unsigned char)*s2);
- 4ca8: 0007851b sext.w a0,a5
- 4cac: 9d19 subw a0,a0,a4
- 4cae: 8082 ret
- return 0;
- 4cb0: 4501 li a0,0
-}
- 4cb2: 8082 ret
- return (int)((unsigned char)*s1 - (unsigned char)*s2);
- 4cb4: 0015c703 lbu a4,1(a1)
- 4cb8: 4501 li a0,0
- 4cba: 9d19 subw a0,a0,a4
- 4cbc: 8082 ret
- 4cbe: 0005c703 lbu a4,0(a1)
- 4cc2: 4501 li a0,0
- 4cc4: b7e5 j 4cac <strncmp+0x2e>
-
-0000000000004cc6 <strchr>:
-
-char *strchr(const char *s, int c)
-{
- while (*s != (char)c)
- 4cc6: 0ff5f593 zext.b a1,a1
- 4cca: a019 j 4cd0 <strchr+0xa>
- {
- if (!*s++)
- 4ccc: 0505 addi a0,a0,1
- 4cce: c791 beqz a5,4cda <strchr+0x14>
- while (*s != (char)c)
- 4cd0: 00054783 lbu a5,0(a0)
- 4cd4: feb79ce3 bne a5,a1,4ccc <strchr+0x6>
- 4cd8: 8082 ret
- return NULL;
- 4cda: 4501 li a0,0
- }
- return (char *)s;
-}
- 4cdc: 8082 ret
-
-0000000000004cde <strrchr>:
-
-char *strrchr(const char *s, int c)
-{
- 4cde: 87aa mv a5,a0
- const char *last = NULL;
- do
- {
- if (*s == (char)c)
- 4ce0: 0ff5f593 zext.b a1,a1
- const char *last = NULL;
- 4ce4: 4501 li a0,0
- if (*s == (char)c)
- 4ce6: 0007c703 lbu a4,0(a5)
- 4cea: 00e59363 bne a1,a4,4cf0 <strrchr+0x12>
- last = s;
- 4cee: 853e mv a0,a5
- } while (*s++);
- 4cf0: 0785 addi a5,a5,1
- 4cf2: fb75 bnez a4,4ce6 <strrchr+0x8>
-
- return (char *)last;
-}
- 4cf4: 8082 ret
-
-0000000000004cf6 <strstr>:
- while (*p)
- 4cf6: 0005c883 lbu a7,0(a1)
- 4cfa: 04088a63 beqz a7,4d4e <strstr+0x58>
- const char *p = s;
- 4cfe: 87ae mv a5,a1
- while (*p)
- 4d00: 0017c703 lbu a4,1(a5)
- p++;
- 4d04: 0785 addi a5,a5,1
- while (*p)
- 4d06: ff6d bnez a4,4d00 <strstr+0xa>
- return (size_t)(p - s);
- 4d08: 40b78833 sub a6,a5,a1
-
-
-char *strstr(const char *haystack, const char *needle)
-{
- size_t n_len = strlen(needle);
- if (n_len == 0)
- 4d0c: 04b78163 beq a5,a1,4d4e <strstr+0x58>
- return (char *)haystack;
-
- for (; *haystack; haystack++)
- 4d10: 00054783 lbu a5,0(a0)
- 4d14: cf85 beqz a5,4d4c <strstr+0x56>
- 4d16: 187d addi a6,a6,-1
- 4d18: 982a add a6,a6,a0
- {
- if (*haystack != *needle)
- 4d1a: 02f89463 bne a7,a5,4d42 <strstr+0x4c>
- while (n-- > 0 && *s1 && *s1 == *s2)
- 4d1e: 00054703 lbu a4,0(a0)
- 4d22: 8646 mv a2,a7
- 4d24: 86ae mv a3,a1
- 4d26: 87aa mv a5,a0
- 4d28: eb11 bnez a4,4d3c <strstr+0x46>
- 4d2a: a821 j 4d42 <strstr+0x4c>
- if (n == 0 || *s1 == '\0')
- 4d2c: 03078163 beq a5,a6,4d4e <strstr+0x58>
- while (n-- > 0 && *s1 && *s1 == *s2)
- 4d30: 0017c703 lbu a4,1(a5)
- return (int)((unsigned char)*s1 - (unsigned char)*s2);
- 4d34: 0006c603 lbu a2,0(a3)
- s1++;
- 4d38: 0785 addi a5,a5,1
- while (n-- > 0 && *s1 && *s1 == *s2)
- 4d3a: cb19 beqz a4,4d50 <strstr+0x5a>
- s2++;
- 4d3c: 0685 addi a3,a3,1
- while (n-- > 0 && *s1 && *s1 == *s2)
- 4d3e: fee607e3 beq a2,a4,4d2c <strstr+0x36>
- for (; *haystack; haystack++)
- 4d42: 00154783 lbu a5,1(a0)
- 4d46: 0805 addi a6,a6,1
- 4d48: 0505 addi a0,a0,1
- 4d4a: fbe1 bnez a5,4d1a <strstr+0x24>
- continue;
-
- if (strncmp(haystack, needle, n_len) == 0)
- return (char *)haystack;
- }
- return NULL;
- 4d4c: 4501 li a0,0
-}
- 4d4e: 8082 ret
- if (strncmp(haystack, needle, n_len) == 0)
- 4d50: de7d beqz a2,4d4e <strstr+0x58>
- for (; *haystack; haystack++)
- 4d52: 00154783 lbu a5,1(a0)
- 4d56: 0805 addi a6,a6,1
- 4d58: 0505 addi a0,a0,1
- 4d5a: f3e1 bnez a5,4d1a <strstr+0x24>
- 4d5c: bfc5 j 4d4c <strstr+0x56>
-
-0000000000004d5e <strdup>:
-
-char *strdup(const char *s)
-{
- 4d5e: 1101 addi sp,sp,-32
- 4d60: e426 sd s1,8(sp)
- 4d62: ec06 sd ra,24(sp)
- 4d64: e822 sd s0,16(sp)
- while (*p)
- 4d66: 00054783 lbu a5,0(a0)
-{
- 4d6a: 84aa mv s1,a0
- while (*p)
- 4d6c: cb8d beqz a5,4d9e <strdup+0x40>
- const char *p = s;
- 4d6e: 862a mv a2,a0
- while (*p)
- 4d70: 00164783 lbu a5,1(a2)
- p++;
- 4d74: 0605 addi a2,a2,1
- while (*p)
- 4d76: ffed bnez a5,4d70 <strdup+0x12>
- return (size_t)(p - s);
- 4d78: 8e05 sub a2,a2,s1
- size_t len = strlen(s) + 1;
- 4d7a: 00160413 addi s0,a2,1
- char *new_str = (char *)malloc(len);
- 4d7e: 8522 mv a0,s0
- 4d80: f4eff0ef jal 44ce <malloc>
- if (new_str == NULL)
- 4d84: c901 beqz a0,4d94 <strdup+0x36>
- return memmove(vdst, vsrc, n);
- 4d86: 8622 mv a2,s0
- return NULL;
-
- return (char *)memcpy(new_str, s, len);
-}
- 4d88: 6442 ld s0,16(sp)
- 4d8a: 60e2 ld ra,24(sp)
- return memmove(vdst, vsrc, n);
- 4d8c: 85a6 mv a1,s1
-}
- 4d8e: 64a2 ld s1,8(sp)
- 4d90: 6105 addi sp,sp,32
- return memmove(vdst, vsrc, n);
- 4d92: bbb9 j 4af0 <memmove>
-}
- 4d94: 60e2 ld ra,24(sp)
- 4d96: 6442 ld s0,16(sp)
- 4d98: 64a2 ld s1,8(sp)
- 4d9a: 6105 addi sp,sp,32
- 4d9c: 8082 ret
- while (*p)
- 4d9e: 4405 li s0,1
- 4da0: bff9 j 4d7e <strdup+0x20>
-
-0000000000004da2 <strlcpy>:
- 4da2: 0005c783 lbu a5,0(a1)
-
-size_t strlcpy(char *dst, const char *src, size_t size)
-{
- 4da6: 1101 addi sp,sp,-32
- 4da8: ec06 sd ra,24(sp)
- 4daa: e822 sd s0,16(sp)
- 4dac: 86b2 mv a3,a2
- while (*p)
- 4dae: cf8d beqz a5,4de8 <strlcpy+0x46>
- const char *p = s;
- 4db0: 87ae mv a5,a1
- while (*p)
- 4db2: 0017c703 lbu a4,1(a5)
- p++;
- 4db6: 0785 addi a5,a5,1
- while (*p)
- 4db8: ff6d bnez a4,4db2 <strlcpy+0x10>
- return (size_t)(p - s);
- 4dba: 40b78433 sub s0,a5,a1
- size_t src_len = strlen(src);
-
- if (size > 0)
- 4dbe: c285 beqz a3,4dde <strlcpy+0x3c>
- 4dc0: e426 sd s1,8(sp)
- {
- size_t copy_len = (src_len >= size) ? size - 1 : src_len;
- 4dc2: fff68613 addi a2,a3,-1
- memcpy(dst, src, copy_len);
- dst[copy_len] = '\0';
- 4dc6: 00c504b3 add s1,a0,a2
- size_t copy_len = (src_len >= size) ? size - 1 : src_len;
- 4dca: 00d47563 bgeu s0,a3,4dd4 <strlcpy+0x32>
- dst[copy_len] = '\0';
- 4dce: 008504b3 add s1,a0,s0
- size_t copy_len = (src_len >= size) ? size - 1 : src_len;
- 4dd2: 8622 mv a2,s0
- return memmove(vdst, vsrc, n);
- 4dd4: d1dff0ef jal 4af0 <memmove>
- dst[copy_len] = '\0';
- 4dd8: 00048023 sb zero,0(s1)
- }
-
- return src_len;
- 4ddc: 64a2 ld s1,8(sp)
-}
- 4dde: 60e2 ld ra,24(sp)
- 4de0: 8522 mv a0,s0
- 4de2: 6442 ld s0,16(sp)
- 4de4: 6105 addi sp,sp,32
- 4de6: 8082 ret
- if (size > 0)
- 4de8: e219 bnez a2,4dee <strlcpy+0x4c>
- return (size_t)(p - s);
- 4dea: 4401 li s0,0
- 4dec: bfcd j 4dde <strlcpy+0x3c>
- 4dee: e426 sd s1,8(sp)
- 4df0: 4401 li s0,0
- if (size > 0)
- 4df2: 84aa mv s1,a0
- size_t copy_len = (src_len >= size) ? size - 1 : src_len;
- 4df4: 4601 li a2,0
- 4df6: bff9 j 4dd4 <strlcpy+0x32>
-
-0000000000004df8 <strlcat>:
- while (*p)
- 4df8: 0005c783 lbu a5,0(a1)
-
-size_t strlcat(char *dst, const char *src, size_t size)
-{
- 4dfc: 7179 addi sp,sp,-48
- 4dfe: e84a sd s2,16(sp)
- 4e00: f406 sd ra,40(sp)
- 4e02: f022 sd s0,32(sp)
- 4e04: ec26 sd s1,24(sp)
- 4e06: 892a mv s2,a0
- while (*p)
- 4e08: c7b5 beqz a5,4e74 <strlcat+0x7c>
- const char *p = s;
- 4e0a: 87ae mv a5,a1
- while (*p)
- 4e0c: 0017c703 lbu a4,1(a5)
- p++;
- 4e10: 0785 addi a5,a5,1
- while (*p)
- 4e12: ff6d bnez a4,4e0c <strlcat+0x14>
- return (size_t)(p - s);
- 4e14: 40b784b3 sub s1,a5,a1
- size_t dst_len = 0;
- 4e18: 4401 li s0,0
- size_t src_len = strlen(src);
-
- while (dst_len < size && dst[dst_len] != '\0')
- 4e1a: e609 bnez a2,4e24 <strlcat+0x2c>
- 4e1c: a0a1 j 4e64 <strlcat+0x6c>
- dst_len++;
- 4e1e: 0405 addi s0,s0,1
- while (dst_len < size && dst[dst_len] != '\0')
- 4e20: 04860263 beq a2,s0,4e64 <strlcat+0x6c>
- 4e24: 00890533 add a0,s2,s0
- 4e28: 00054783 lbu a5,0(a0)
- 4e2c: fbed bnez a5,4e1e <strlcat+0x26>
-
- if (dst_len == size)
- 4e2e: 02860b63 beq a2,s0,4e64 <strlcat+0x6c>
- 4e32: e44e sd s3,8(sp)
- return size + src_len;
-
- size_t space_left = size - dst_len;
- 4e34: 408607b3 sub a5,a2,s0
- size_t copy_len = (src_len >= space_left) ? space_left - 1 : src_len;
- 4e38: 89a6 mv s3,s1
- 4e3a: 02f4f263 bgeu s1,a5,4e5e <strlcat+0x66>
-
- memcpy(dst + dst_len, src, copy_len);
- dst[dst_len + copy_len] = '\0';
- 4e3e: 994e add s2,s2,s3
- 4e40: 9922 add s2,s2,s0
- return memmove(vdst, vsrc, n);
- 4e42: 864e mv a2,s3
- 4e44: cadff0ef jal 4af0 <memmove>
- dst[dst_len + copy_len] = '\0';
- 4e48: 00090023 sb zero,0(s2) # 1000 <_vscanf_core.constprop.0+0x688>
-
- return dst_len + src_len;
- 4e4c: 00940533 add a0,s0,s1
-}
- 4e50: 70a2 ld ra,40(sp)
- 4e52: 7402 ld s0,32(sp)
- return dst_len + src_len;
- 4e54: 69a2 ld s3,8(sp)
-}
- 4e56: 64e2 ld s1,24(sp)
- 4e58: 6942 ld s2,16(sp)
- 4e5a: 6145 addi sp,sp,48
- 4e5c: 8082 ret
- size_t copy_len = (src_len >= space_left) ? space_left - 1 : src_len;
- 4e5e: fff78993 addi s3,a5,-1
- 4e62: bff1 j 4e3e <strlcat+0x46>
-}
- 4e64: 70a2 ld ra,40(sp)
- 4e66: 7402 ld s0,32(sp)
- 4e68: 6942 ld s2,16(sp)
- return size + src_len;
- 4e6a: 00960533 add a0,a2,s1
-}
- 4e6e: 64e2 ld s1,24(sp)
- 4e70: 6145 addi sp,sp,48
- 4e72: 8082 ret
- while (*p)
- 4e74: 4481 li s1,0
- 4e76: b74d j 4e18 <strlcat+0x20>
-
-0000000000004e78 <strspn>:
-size_t strspn(const char *s, const char *accept)
-{
- const char *p = s;
- const char *a;
-
- while (*p)
- 4e78: 00054683 lbu a3,0(a0)
- 4e7c: c695 beqz a3,4ea8 <strspn+0x30>
- {
- for (a = accept; *a; a++)
- 4e7e: 0005c803 lbu a6,0(a1)
- 4e82: 862a mv a2,a0
- 4e84: 00080f63 beqz a6,4ea2 <strspn+0x2a>
- 4e88: 87ae mv a5,a1
- 4e8a: 8742 mv a4,a6
- 4e8c: a021 j 4e94 <strspn+0x1c>
- 4e8e: 0007c703 lbu a4,0(a5)
- 4e92: cb01 beqz a4,4ea2 <strspn+0x2a>
- 4e94: 0785 addi a5,a5,1
- {
- if (*p == *a)
- 4e96: fee69ce3 bne a3,a4,4e8e <strspn+0x16>
- while (*p)
- 4e9a: 00164683 lbu a3,1(a2)
- break;
- }
- if (*a == '\0')
- return (size_t)(p - s);
- p++;
- 4e9e: 0605 addi a2,a2,1
- while (*p)
- 4ea0: f6e5 bnez a3,4e88 <strspn+0x10>
- }
- return (size_t)(p - s);
- 4ea2: 40a60533 sub a0,a2,a0
- 4ea6: 8082 ret
- while (*p)
- 4ea8: 4501 li a0,0
-}
- 4eaa: 8082 ret
-
-0000000000004eac <strcspn>:
-size_t strcspn(const char *s, const char *reject)
-{
- const char *p = s;
- const char *r;
-
- while (*p)
- 4eac: 00054683 lbu a3,0(a0)
- 4eb0: ce85 beqz a3,4ee8 <strcspn+0x3c>
- {
- for (r = reject; *r; r++)
- 4eb2: 0005c803 lbu a6,0(a1)
- const char *p = s;
- 4eb6: 862a mv a2,a0
- for (r = reject; *r; r++)
- 4eb8: 02080363 beqz a6,4ede <strcspn+0x32>
- 4ebc: 87ae mv a5,a1
- 4ebe: 8742 mv a4,a6
- 4ec0: a021 j 4ec8 <strcspn+0x1c>
- 4ec2: 0007c703 lbu a4,0(a5)
- 4ec6: c719 beqz a4,4ed4 <strcspn+0x28>
- 4ec8: 0785 addi a5,a5,1
- {
- if (*p == *r)
- 4eca: fed71ce3 bne a4,a3,4ec2 <strcspn+0x16>
- return (size_t)(p - s);
- }
- p++;
- }
- return (size_t)(p - s);
- 4ece: 40a60533 sub a0,a2,a0
- 4ed2: 8082 ret
- while (*p)
- 4ed4: 00164683 lbu a3,1(a2)
- p++;
- 4ed8: 0605 addi a2,a2,1
- while (*p)
- 4eda: f2ed bnez a3,4ebc <strcspn+0x10>
- 4edc: bfcd j 4ece <strcspn+0x22>
- 4ede: 00164683 lbu a3,1(a2)
- p++;
- 4ee2: 0605 addi a2,a2,1
- while (*p)
- 4ee4: feed bnez a3,4ede <strcspn+0x32>
- 4ee6: b7e5 j 4ece <strcspn+0x22>
- 4ee8: 4501 li a0,0
-}
- 4eea: 8082 ret
-
-0000000000004eec <strpbrk>:
-
-char *strpbrk(const char *s, const char *accept)
-{
- const char *a;
- while (*s)
- 4eec: 00054683 lbu a3,0(a0)
- 4ef0: c295 beqz a3,4f14 <strpbrk+0x28>
- {
- for (a = accept; *a; a++)
- 4ef2: 0005c603 lbu a2,0(a1)
- 4ef6: c20d beqz a2,4f18 <strpbrk+0x2c>
- 4ef8: 87ae mv a5,a1
- 4efa: 8732 mv a4,a2
- 4efc: a021 j 4f04 <strpbrk+0x18>
- 4efe: 0007c703 lbu a4,0(a5)
- 4f02: c709 beqz a4,4f0c <strpbrk+0x20>
- 4f04: 0785 addi a5,a5,1
- {
- if (*s == *a)
- 4f06: fed71ce3 bne a4,a3,4efe <strpbrk+0x12>
- return (char *)s;
- }
- s++;
- }
- return NULL;
-}
- 4f0a: 8082 ret
- while (*s)
- 4f0c: 00154683 lbu a3,1(a0)
- s++;
- 4f10: 0505 addi a0,a0,1
- while (*s)
- 4f12: f2fd bnez a3,4ef8 <strpbrk+0xc>
- return NULL;
- 4f14: 4501 li a0,0
-}
- 4f16: 8082 ret
- while (*s)
- 4f18: 00154683 lbu a3,1(a0)
- s++;
- 4f1c: 0505 addi a0,a0,1
- while (*s)
- 4f1e: feed bnez a3,4f18 <strpbrk+0x2c>
- 4f20: bfd5 j 4f14 <strpbrk+0x28>
-
-0000000000004f22 <strtok>:
-char *strtok(char *str, const char *delim)
-{
- static char *olds;
- char *token;
-
- if (str == NULL)
- 4f22: 00003897 auipc a7,0x3
- 4f26: 94e88893 addi a7,a7,-1714 # 7870 <olds.0>
- 4f2a: cd25 beqz a0,4fa2 <strtok+0x80>
- while (*p)
- 4f2c: 00054683 lbu a3,0(a0)
- 4f30: c295 beqz a3,4f54 <strtok+0x32>
- for (a = accept; *a; a++)
- 4f32: 0005c803 lbu a6,0(a1)
- 4f36: 02080463 beqz a6,4f5e <strtok+0x3c>
- 4f3a: 87ae mv a5,a1
- 4f3c: 8742 mv a4,a6
- 4f3e: a021 j 4f46 <strtok+0x24>
- 4f40: 0007c703 lbu a4,0(a5)
- 4f44: cf09 beqz a4,4f5e <strtok+0x3c>
- 4f46: 0785 addi a5,a5,1
- if (*p == *a)
- 4f48: fee69ce3 bne a3,a4,4f40 <strtok+0x1e>
- while (*p)
- 4f4c: 00154683 lbu a3,1(a0)
- p++;
- 4f50: 0505 addi a0,a0,1
- while (*p)
- 4f52: f6e5 bnez a3,4f3a <strtok+0x18>
- 4f54: 87aa mv a5,a0
- str = olds;
-
- str += strspn(str, delim);
- if (*str == '\0')
- {
- olds = str;
- 4f56: 00f8b023 sd a5,0(a7)
- return NULL;
- 4f5a: 4501 li a0,0
- *str = '\0';
- olds = str + 1;
- }
-
- return token;
-}
- 4f5c: 8082 ret
- if (*str == '\0')
- 4f5e: 00054603 lbu a2,0(a0)
- 4f62: da6d beqz a2,4f54 <strtok+0x32>
- 4f64: 86aa mv a3,a0
- for (a = accept; *a; a++)
- 4f66: 04080163 beqz a6,4fa8 <strtok+0x86>
- 4f6a: 8742 mv a4,a6
- 4f6c: 87ae mv a5,a1
- 4f6e: a021 j 4f76 <strtok+0x54>
- 4f70: 0007c703 lbu a4,0(a5)
- 4f74: cb19 beqz a4,4f8a <strtok+0x68>
- 4f76: 0785 addi a5,a5,1
- if (*s == *a)
- 4f78: fee61ce3 bne a2,a4,4f70 <strtok+0x4e>
- olds = str + 1;
- 4f7c: 00168793 addi a5,a3,1
- *str = '\0';
- 4f80: 00068023 sb zero,0(a3)
- olds = str;
- 4f84: 00f8b023 sd a5,0(a7)
-}
- 4f88: 8082 ret
- while (*s)
- 4f8a: 0016c603 lbu a2,1(a3)
- s++;
- 4f8e: 0685 addi a3,a3,1
- while (*s)
- 4f90: fe69 bnez a2,4f6a <strtok+0x48>
- 4f92: 87aa mv a5,a0
- while (*s != (char)c)
- 4f94: 0017c703 lbu a4,1(a5)
- if (!*s++)
- 4f98: 0785 addi a5,a5,1
- while (*s != (char)c)
- 4f9a: ff6d bnez a4,4f94 <strtok+0x72>
- olds = str;
- 4f9c: 00f8b023 sd a5,0(a7)
-}
- 4fa0: 8082 ret
- str = olds;
- 4fa2: 0008b503 ld a0,0(a7)
- 4fa6: b759 j 4f2c <strtok+0xa>
- while (*s)
- 4fa8: 0016c603 lbu a2,1(a3)
- s++;
- 4fac: 0685 addi a3,a3,1
- while (*s)
- 4fae: fe6d bnez a2,4fa8 <strtok+0x86>
- 4fb0: b7cd j 4f92 <strtok+0x70>
-
-0000000000004fb2 <strerror>:
-
-char *strerror(int errnum)
-{
- 4fb2: 87aa mv a5,a0
-
- switch (errnum)
- 4fb4: cd09 beqz a0,4fce <strerror+0x1c>
- 4fb6: 4731 li a4,12
- 4fb8: 00000517 auipc a0,0x0
- 4fbc: 1b050513 addi a0,a0,432 # 5168 <_GLOBAL__sub_I__ZSt3cin+0x178>
- 4fc0: 00e78b63 beq a5,a4,4fd6 <strerror+0x24>
- return "Success";
- // case EINVAL: return "Invalid argument";
- case ENOMEM: return "Out of memory";
-
- default:
- return "Unknown error";
- 4fc4: 00000517 auipc a0,0x0
- 4fc8: 1b450513 addi a0,a0,436 # 5178 <_GLOBAL__sub_I__ZSt3cin+0x188>
- 4fcc: 8082 ret
- return "Success";
- 4fce: 00000517 auipc a0,0x0
- 4fd2: 19250513 addi a0,a0,402 # 5160 <_GLOBAL__sub_I__ZSt3cin+0x170>
- }
- 4fd6: 8082 ret
-
-0000000000004fd8 <_Znwm>:
-#include "ulib/stdlib.h"
-
-void *operator new(unsigned long n)
-{
- return malloc(n);
- 4fd8: cf6ff06f j 44ce <malloc>
-
-0000000000004fdc <_Znam>:
-}
-
-void *operator new[](unsigned long n)
- 4fdc: cf2ff06f j 44ce <malloc>
-
-0000000000004fe0 <_ZdlPv>:
- return malloc(n);
-}
-
-void operator delete(void *p)
-{
- free(p);
- 4fe0: c78ff06f j 4458 <free>
-
-0000000000004fe4 <_ZdaPv>:
-}
-
-void operator delete[](void *p)
- 4fe4: c74ff06f j 4458 <free>
-
-0000000000004fe8 <_ZdlPvm>:
- free(p);
-}
-
-void operator delete(void *p, unsigned long)
-{
- free(p);
- 4fe8: c70ff06f j 4458 <free>
-
-0000000000004fec <_ZdaPvm>:
-}
-
-void operator delete[](void *p, unsigned long)
- 4fec: c6cff06f j 4458 <free>
-
-0000000000004ff0 <_GLOBAL__sub_I__ZSt3cin>:
-#include "ulib/iostream"
-
-namespace std
-{
- istream cin(stdin);
- 4ff0: 00002797 auipc a5,0x2
- 4ff4: 7307b783 ld a5,1840(a5) # 7720 <_GLOBAL_OFFSET_TABLE_+0x10>
- 4ff8: 6390 ld a2,0(a5)
- ostream cout(stdout);
- 4ffa: 00002797 auipc a5,0x2
- 4ffe: 71e7b783 ld a5,1822(a5) # 7718 <_GLOBAL_OFFSET_TABLE_+0x8>
- 5002: 6394 ld a3,0(a5)
- ostream cerr(stderr);
- 5004: 00002797 auipc a5,0x2
- 5008: 7247b783 ld a5,1828(a5) # 7728 <_GLOBAL_OFFSET_TABLE_+0x18>
- 500c: 6398 ld a4,0(a5)
-
- class istream{
- private:
- FILE* _stream;
- public:
- istream(FILE *f) : _stream(f) {}
- 500e: 00003797 auipc a5,0x3
- 5012: 86a78793 addi a5,a5,-1942 # 7878 <_ZSt3cin>
- 5016: e390 sd a2,0(a5)
- ostream(FILE* f) : _stream(f) {}
- 5018: e794 sd a3,8(a5)
- 501a: eb98 sd a4,16(a5)
-} // namespace std
- 501c: 8082 ret
diff --git a/build/user/initcode.out b/build/user/initcode.out
deleted file mode 100755
index 9b46ae7..0000000
--- a/build/user/initcode.out
+++ /dev/null
Binary files differ
diff --git a/build/user/ls b/build/user/ls
deleted file mode 100755
index 9061337..0000000
--- a/build/user/ls
+++ /dev/null
Binary files differ
diff --git a/build/user/ls.asm b/build/user/ls.asm
deleted file mode 100644
index 78dc8f2..0000000
--- a/build/user/ls.asm
+++ /dev/null
@@ -1,10822 +0,0 @@
-
-build/user/ls: file format elf64-littleriscv
-
-
-Disassembly of section .text:
-
-0000000000000000 <_Z8fmt_namePcPKc>:
-void fmt_name(char *dst, const char *src)
-{
- int i;
- char *d = dst;
-
- for (i = 0; i < 8; i++)
- 0: 872e mv a4,a1
- 2: 00850613 addi a2,a0,8
- char *d = dst;
- 6: 87aa mv a5,a0
- {
- if (src[i] == ' ')
- 8: 02000813 li a6,32
- c: 00074683 lbu a3,0(a4)
- for (i = 0; i < 8; i++)
- 10: 0705 addi a4,a4,1
- if (src[i] == ' ')
- 12: 07068663 beq a3,a6,7e <_Z8fmt_namePcPKc+0x7e>
- break;
- *d++ = src[i];
- 16: 0785 addi a5,a5,1
- 18: fed78fa3 sb a3,-1(a5)
- for (i = 0; i < 8; i++)
- 1c: fec798e3 bne a5,a2,c <_Z8fmt_namePcPKc+0xc>
- }
-
- if (src[8] != ' ')
- 20: 0085c703 lbu a4,8(a1)
- 24: 02000793 li a5,32
- 28: 02f70663 beq a4,a5,54 <_Z8fmt_namePcPKc+0x54>
- {
- *d++ = '.';
- 2c: 02e00713 li a4,46
- 30: 00160793 addi a5,a2,1
- 34: 00e60023 sb a4,0(a2)
- for (i = 8; i < 11; i++)
- 38: 05a1 addi a1,a1,8
- 3a: 0611 addi a2,a2,4
- {
- if (src[i] == ' ')
- 3c: 02000693 li a3,32
- 40: 0005c703 lbu a4,0(a1)
- for (i = 8; i < 11; i++)
- 44: 0585 addi a1,a1,1
- if (src[i] == ' ')
- 46: 02d70e63 beq a4,a3,82 <_Z8fmt_namePcPKc+0x82>
- break;
- *d++ = src[i];
- 4a: 0785 addi a5,a5,1
- 4c: fee78fa3 sb a4,-1(a5)
- for (i = 8; i < 11; i++)
- 50: fef618e3 bne a2,a5,40 <_Z8fmt_namePcPKc+0x40>
- }
- }
- *d = 0;
- 54: 00060023 sb zero,0(a2)
-
- for (d = dst; *d; d++)
- 58: 00054783 lbu a5,0(a0)
- 5c: c385 beqz a5,7c <_Z8fmt_namePcPKc+0x7c>
- {
- if (*d >= 'A' && *d <= 'Z')
- 5e: 46e5 li a3,25
- 60: fbf7871b addiw a4,a5,-65
- 64: 0ff77713 zext.b a4,a4
- *d += 32;
- 68: 0207879b addiw a5,a5,32
- if (*d >= 'A' && *d <= 'Z')
- 6c: 00e6e463 bltu a3,a4,74 <_Z8fmt_namePcPKc+0x74>
- *d += 32;
- 70: 00f50023 sb a5,0(a0)
- for (d = dst; *d; d++)
- 74: 00154783 lbu a5,1(a0)
- 78: 0505 addi a0,a0,1
- 7a: f3fd bnez a5,60 <_Z8fmt_namePcPKc+0x60>
- }
-}
- 7c: 8082 ret
- 7e: 863e mv a2,a5
- 80: b745 j 20 <_Z8fmt_namePcPKc+0x20>
- 82: 863e mv a2,a5
- 84: bfc1 j 54 <_Z8fmt_namePcPKc+0x54>
-
-0000000000000086 <_Z2lsPKc>:
-
-void ls(const char *path)
-{
- 86: 7119 addi sp,sp,-128
- int fd;
- struct FAT32_DirEnt de;
- char name_buf[16];
-
- if ((fd = open(path, O_RDONLY)) < 0)
- 88: 4581 li a1,0
-{
- 8a: f0ca sd s2,96(sp)
- 8c: fc86 sd ra,120(sp)
- 8e: 892a mv s2,a0
- if ((fd = open(path, O_RDONLY)) < 0)
- 90: 156000ef jal 1e6 <open>
- 94: 08054e63 bltz a0,130 <_Z2lsPKc+0xaa>
- 98: f8a2 sd s0,112(sp)
- 9a: f4a6 sd s1,104(sp)
- 9c: ecce sd s3,88(sp)
- 9e: e8d2 sd s4,80(sp)
- a0: e4d6 sd s5,72(sp)
- a2: e0da sd s6,64(sp)
- a4: fc5e sd s7,56(sp)
- a6: 84aa mv s1,a0
- a8: 0800 addi s0,sp,16
- if (de.name[0] == 0)
- {
- break;
- }
-
- if ((unsigned char)de.name[0] == 0xE5)
- aa: 0e500993 li s3,229
- {
- continue;
- }
-
- if ((de.attr & ATTR_LONG_NAME) == ATTR_LONG_NAME)
- ae: 4a3d li s4,15
- {
- continue;
- }
-
- fmt_name(name_buf, de.name);
- b0: 890a mv s2,sp
-
- printf("%s %d\t%s\n",
- b2: 00005b17 auipc s6,0x5
- b6: 05eb0b13 addi s6,s6,94 # 5110 <_GLOBAL__sub_I__ZSt3cin+0x4a>
- ba: 00005a97 auipc s5,0x5
- be: 076a8a93 addi s5,s5,118 # 5130 <_GLOBAL__sub_I__ZSt3cin+0x6a>
- c2: 00005b97 auipc s7,0x5
- c6: 03eb8b93 addi s7,s7,62 # 5100 <_GLOBAL__sub_I__ZSt3cin+0x3a>
- while (read(fd, &de, sizeof(de)) == sizeof(de))
- ca: 85a2 mv a1,s0
- cc: 02000613 li a2,32
- d0: 8526 mv a0,s1
- d2: 0ec000ef jal 1be <read>
- d6: 872a mv a4,a0
- d8: 02000793 li a5,32
- fmt_name(name_buf, de.name);
- dc: 85a2 mv a1,s0
- de: 854a mv a0,s2
- while (read(fd, &de, sizeof(de)) == sizeof(de))
- e0: 02f71a63 bne a4,a5,114 <_Z2lsPKc+0x8e>
- if (de.name[0] == 0)
- e4: 01014783 lbu a5,16(sp)
- e8: c795 beqz a5,114 <_Z2lsPKc+0x8e>
- if ((unsigned char)de.name[0] == 0xE5)
- ea: ff3780e3 beq a5,s3,ca <_Z2lsPKc+0x44>
- if ((de.attr & ATTR_LONG_NAME) == ATTR_LONG_NAME)
- ee: 01b14783 lbu a5,27(sp)
- f2: 8bbd andi a5,a5,15
- f4: fd478be3 beq a5,s4,ca <_Z2lsPKc+0x44>
- fmt_name(name_buf, de.name);
- f8: f09ff0ef jal 0 <_Z8fmt_namePcPKc>
- printf("%s %d\t%s\n",
- fc: 01b14783 lbu a5,27(sp)
- 100: 86ca mv a3,s2
- 102: 8556 mv a0,s5
- 104: 8bc1 andi a5,a5,16
- 106: 85da mv a1,s6
- 108: c391 beqz a5,10c <_Z2lsPKc+0x86>
- 10a: 85de mv a1,s7
- 10c: 5632 lw a2,44(sp)
- 10e: 0c3030ef jal 39d0 <printf>
- 112: bf65 j ca <_Z2lsPKc+0x44>
- (de.attr & ATTR_DIRECTORY) ? "<DIR>" : " ",
- de.fileSize,
- name_buf);
- }
-
- close(fd);
- 114: 8526 mv a0,s1
- 116: 0b8000ef jal 1ce <close>
-}
- 11a: 70e6 ld ra,120(sp)
- close(fd);
- 11c: 7446 ld s0,112(sp)
- 11e: 74a6 ld s1,104(sp)
- 120: 69e6 ld s3,88(sp)
- 122: 6a46 ld s4,80(sp)
- 124: 6aa6 ld s5,72(sp)
- 126: 6b06 ld s6,64(sp)
- 128: 7be2 ld s7,56(sp)
-}
- 12a: 7906 ld s2,96(sp)
- 12c: 6109 addi sp,sp,128
- 12e: 8082 ret
- 130: 70e6 ld ra,120(sp)
- printf("ls: cannot open %s\n", path);
- 132: 85ca mv a1,s2
-}
- 134: 7906 ld s2,96(sp)
- printf("ls: cannot open %s\n", path);
- 136: 00005517 auipc a0,0x5
- 13a: fe250513 addi a0,a0,-30 # 5118 <_GLOBAL__sub_I__ZSt3cin+0x52>
-}
- 13e: 6109 addi sp,sp,128
- printf("ls: cannot open %s\n", path);
- 140: 0910306f j 39d0 <printf>
-
-0000000000000144 <main>:
-
-int main(int argc, char *argv[])
-{
- 144: 1101 addi sp,sp,-32
- 146: ec06 sd ra,24(sp)
- if (argc < 2)
- 148: 4785 li a5,1
- 14a: 02a7de63 bge a5,a0,186 <main+0x42>
- 14e: e426 sd s1,8(sp)
- 150: ffe5049b addiw s1,a0,-2
- 154: 02049793 slli a5,s1,0x20
- 158: 01d7d493 srli s1,a5,0x1d
- 15c: 01058793 addi a5,a1,16
- 160: e822 sd s0,16(sp)
- 162: 94be add s1,s1,a5
- 164: 00858413 addi s0,a1,8
- }
- else
- {
- for (int i = 1; i < argc; i++)
- {
- ls(argv[i]);
- 168: 6008 ld a0,0(s0)
- for (int i = 1; i < argc; i++)
- 16a: 0421 addi s0,s0,8
- ls(argv[i]);
- 16c: f1bff0ef jal 86 <_Z2lsPKc>
- for (int i = 1; i < argc; i++)
- 170: fe941ce3 bne s0,s1,168 <main+0x24>
- 174: 6442 ld s0,16(sp)
- 176: 64a2 ld s1,8(sp)
- }
- }
- exit(0);
- 178: 4501 li a0,0
- 17a: 36a040ef jal 44e4 <exit>
- 17e: 60e2 ld ra,24(sp)
- 180: 4501 li a0,0
- 182: 6105 addi sp,sp,32
- 184: 8082 ret
- ls(".");
- 186: 00005517 auipc a0,0x5
- 18a: fba50513 addi a0,a0,-70 # 5140 <_GLOBAL__sub_I__ZSt3cin+0x7a>
- 18e: ef9ff0ef jal 86 <_Z2lsPKc>
- 192: b7dd j 178 <main+0x34>
-
-0000000000000194 <_start>:
-.global _start
-
-_start:
-
-
- call main
- 194: fb1ff0ef jal 144 <main>
-
- call exit
- 198: 34c040ef jal 44e4 <exit>
-
- 19c: a001 j 19c <_start+0x8>
-
-000000000000019e <sys_exit>:
- name: \
- li a7, SYS_ ## sysname; \
- ecall; \
- ret
-
-SYSCALL_NAME(sys_exit, exit)
- 19e: 488d li a7,3
- 1a0: 00000073 ecall
- 1a4: 8082 ret
-
-00000000000001a6 <fork>:
-
-SYSCALL(fork)
- 1a6: 4889 li a7,2
- 1a8: 00000073 ecall
- 1ac: 8082 ret
-
-00000000000001ae <wait>:
-SYSCALL(wait)
- 1ae: 4891 li a7,4
- 1b0: 00000073 ecall
- 1b4: 8082 ret
-
-00000000000001b6 <pipe>:
-SYSCALL(pipe)
- 1b6: 4895 li a7,5
- 1b8: 00000073 ecall
- 1bc: 8082 ret
-
-00000000000001be <read>:
-SYSCALL(read)
- 1be: 4899 li a7,6
- 1c0: 00000073 ecall
- 1c4: 8082 ret
-
-00000000000001c6 <write>:
-SYSCALL(write)
- 1c6: 48c5 li a7,17
- 1c8: 00000073 ecall
- 1cc: 8082 ret
-
-00000000000001ce <close>:
-SYSCALL(close)
- 1ce: 48d9 li a7,22
- 1d0: 00000073 ecall
- 1d4: 8082 ret
-
-00000000000001d6 <kill>:
-SYSCALL(kill)
- 1d6: 489d li a7,7
- 1d8: 00000073 ecall
- 1dc: 8082 ret
-
-00000000000001de <exec>:
-SYSCALL(exec)
- 1de: 48a1 li a7,8
- 1e0: 00000073 ecall
- 1e4: 8082 ret
-
-00000000000001e6 <open>:
-SYSCALL(open)
- 1e6: 48c1 li a7,16
- 1e8: 00000073 ecall
- 1ec: 8082 ret
-
-00000000000001ee <mknod>:
-SYSCALL(mknod)
- 1ee: 48c9 li a7,18
- 1f0: 00000073 ecall
- 1f4: 8082 ret
-
-00000000000001f6 <unlink>:
-SYSCALL(unlink)
- 1f6: 48cd li a7,19
- 1f8: 00000073 ecall
- 1fc: 8082 ret
-
-00000000000001fe <fstat>:
-SYSCALL(fstat)
- 1fe: 48a5 li a7,9
- 200: 00000073 ecall
- 204: 8082 ret
-
-0000000000000206 <link>:
-SYSCALL(link)
- 206: 48d1 li a7,20
- 208: 00000073 ecall
- 20c: 8082 ret
-
-000000000000020e <mkdir>:
-SYSCALL(mkdir)
- 20e: 48d5 li a7,21
- 210: 00000073 ecall
- 214: 8082 ret
-
-0000000000000216 <chdir>:
-SYSCALL(chdir)
- 216: 48a9 li a7,10
- 218: 00000073 ecall
- 21c: 8082 ret
-
-000000000000021e <dup>:
-SYSCALL(dup)
- 21e: 48ad li a7,11
- 220: 00000073 ecall
- 224: 8082 ret
-
-0000000000000226 <getpid>:
-SYSCALL(getpid)
- 226: 48b1 li a7,12
- 228: 00000073 ecall
- 22c: 8082 ret
-
-000000000000022e <sbrk>:
-SYSCALL(sbrk)
- 22e: 48b5 li a7,13
- 230: 00000073 ecall
- 234: 8082 ret
-
-0000000000000236 <sleep>:
-SYSCALL(sleep)
- 236: 48b9 li a7,14
- 238: 00000073 ecall
- 23c: 8082 ret
-
-000000000000023e <uptime>:
-SYSCALL(uptime)
- 23e: 48bd li a7,15
- 240: 00000073 ecall
- 244: 8082 ret
-
-0000000000000246 <putc>:
-SYSCALL(putc)
- 246: 4885 li a7,1
- 248: 00000073 ecall
- 24c: 8082 ret
-
-000000000000024e <disk_test>:
-SYSCALL(disk_test)
- 24e: 48dd li a7,23
- 250: 00000073 ecall
- 254: 8082 ret
-
-0000000000000256 <lseek>:
-SYSCALL(lseek)
- 256: 48e1 li a7,24
- 258: 00000073 ecall
- 25c: 8082 ret
-
-000000000000025e <shutdown>:
- 25e: 48e5 li a7,25
- 260: 00000073 ecall
- 264: 8082 ret
-
-0000000000000266 <stbsp__clamp_callback>:
- 266: 45dc lw a5,12(a1)
- 268: 4598 lw a4,8(a1)
- 26a: 9fb1 addw a5,a5,a2
- 26c: c5dc sw a5,12(a1)
- 26e: 0007069b sext.w a3,a4
- 272: 00e65463 bge a2,a4,27a <stbsp__clamp_callback+0x14>
- 276: 0006069b sext.w a3,a2
- 27a: c685 beqz a3,2a2 <stbsp__clamp_callback+0x3c>
- 27c: 619c ld a5,0(a1)
- 27e: 00a78e63 beq a5,a0,29a <stbsp__clamp_callback+0x34>
- 282: 00d50633 add a2,a0,a3
- 286: 00054703 lbu a4,0(a0)
- 28a: 0505 addi a0,a0,1
- 28c: 0785 addi a5,a5,1
- 28e: fee78fa3 sb a4,-1(a5)
- 292: fec56ae3 bltu a0,a2,286 <stbsp__clamp_callback+0x20>
- 296: 6188 ld a0,0(a1)
- 298: 4598 lw a4,8(a1)
- 29a: 9f15 subw a4,a4,a3
- 29c: 9536 add a0,a0,a3
- 29e: e188 sd a0,0(a1)
- 2a0: c598 sw a4,8(a1)
- 2a2: 1ff00793 li a5,511
- 2a6: 00e7d463 bge a5,a4,2ae <stbsp__clamp_callback+0x48>
- 2aa: 6188 ld a0,0(a1)
- 2ac: 8082 ret
- 2ae: 01058513 addi a0,a1,16
- 2b2: 8082 ret
-
-00000000000002b4 <stbsp__count_clamp_callback>:
- 2b4: 45dc lw a5,12(a1)
- 2b6: 01058513 addi a0,a1,16
- 2ba: 9fb1 addw a5,a5,a2
- 2bc: c5dc sw a5,12(a1)
- 2be: 8082 ret
-
-00000000000002c0 <stbsp__real_to_str>:
- 2c0: e20508d3 fmv.x.d a7,fa0
- 2c4: 82aa mv t0,a0
- 2c6: 4348d813 srai a6,a7,0x34
- 2ca: 8ec6 mv t4,a7
- 2cc: 7ff87813 andi a6,a6,2047
- 2d0: 8346 mv t1,a7
- 2d2: 03f8d513 srli a0,a7,0x3f
- 2d6: 0008d663 bgez a7,2e2 <stbsp__real_to_str+0x22>
- 2da: 22a517d3 fneg.d fa5,fa0
- 2de: e20788d3 fmv.x.d a7,fa5
- 2e2: 7ff00e13 li t3,2047
- 2e6: 35c80663 beq a6,t3,632 <stbsp__real_to_str+0x372>
- 2ea: 1101 addi sp,sp,-32
- 2ec: 14080363 beqz a6,432 <stbsp__real_to_str+0x172>
- 2f0: c018081b addiw a6,a6,-1023
- 2f4: ec22 sd s0,24(sp)
- 2f6: 02081313 slli t1,a6,0x20
- 2fa: 66034d63 bltz t1,974 <stbsp__real_to_str+0x6b4>
- 2fe: 4d100313 li t1,1233
- 302: 0303033b mulw t1,t1,a6
- 306: 4849 li a6,18
- 308: 40c3531b sraiw t1,t1,0xc
- 30c: 0013039b addiw t2,t1,1
- 310: 4078083b subw a6,a6,t2
- 314: 4359 li t1,22
- 316: 17036163 bltu t1,a6,478 <stbsp__real_to_str+0x1b8>
- 31a: 00005317 auipc t1,0x5
- 31e: 16630313 addi t1,t1,358 # 5480 <stbsp__bot>
- 322: 080e slli a6,a6,0x3
- 324: 981a add a6,a6,t1
- 326: 00083e03 ld t3,0(a6)
- 32a: 00083607 fld fa2,0(a6)
- 32e: f20887d3 fmv.d.x fa5,a7
- 332: f8000837 lui a6,0xf8000
- 336: 01187333 and t1,a6,a7
- 33a: 01c87833 and a6,a6,t3
- 33e: 12f676d3 fmul.d fa3,fa2,fa5
- 342: f20807d3 fmv.d.x fa5,a6
- 346: f2030753 fmv.d.x fa4,t1
- 34a: f20305d3 fmv.d.x fa1,t1
- 34e: 0af67653 fsub.d fa2,fa2,fa5
- 352: f20887d3 fmv.d.x fa5,a7
- 356: 0ae7f753 fsub.d fa4,fa5,fa4
- 35a: f20807d3 fmv.d.x fa5,a6
- 35e: 6ab7f7c7 fmsub.d fa5,fa5,fa1,fa3
- 362: 7ab677c3 fmadd.d fa5,fa2,fa1,fa5
- 366: f20805d3 fmv.d.x fa1,a6
- 36a: 7ab777c3 fmadd.d fa5,fa4,fa1,fa5
- 36e: 7ac77743 fmadd.d fa4,fa4,fa2,fa5
- 372: 02d777d3 fadd.d fa5,fa4,fa3
- 376: 3782e837 lui a6,0x3782e
- 37a: acf80813 addi a6,a6,-1329 # 3782dacf <_ZSt4cerr+0x37826157>
- 37e: 0832 slli a6,a6,0xc
- 380: 9d980813 addi a6,a6,-1575
- 384: 084a slli a6,a6,0x12
- 386: 187d addi a6,a6,-1
- 388: c22798d3 fcvt.l.d a7,fa5,rtz
- 38c: 0ad7f6d3 fsub.d fa3,fa5,fa3
- 390: 00070e1b sext.w t3,a4
- 394: d228f653 fcvt.d.l fa2,a7
- 398: 0ac7f5d3 fsub.d fa1,fa5,fa2
- 39c: 0ad77753 fsub.d fa4,fa4,fa3
- 3a0: 0af5f6d3 fsub.d fa3,fa1,fa5
- 3a4: 0ad5f553 fsub.d fa0,fa1,fa3
- 3a8: 02d67653 fadd.d fa2,fa2,fa3
- 3ac: 0aa7f7d3 fsub.d fa5,fa5,fa0
- 3b0: 0ac7f7d3 fsub.d fa5,fa5,fa2
- 3b4: 02b7f7d3 fadd.d fa5,fa5,fa1
- 3b8: 02e7f7d3 fadd.d fa5,fa5,fa4
- 3bc: c2279fd3 fcvt.l.d t6,fa5,rtz
- 3c0: 9fc6 add t6,t6,a7
- 3c2: 19f87063 bgeu a6,t6,542 <stbsp__real_to_str+0x282>
- 3c6: 2385 addiw t2,t2,1
- 3c8: 300e4363 bltz t3,6ce <stbsp__real_to_str+0x40e>
- 3cc: 00e3833b addw t1,t2,a4
- 3d0: 475d li a4,23
- 3d2: 30677663 bgeu a4,t1,6de <stbsp__real_to_str+0x41e>
- 3d6: 577d li a4,-1
- 3d8: 9301 srli a4,a4,0x20
- 3da: 43f75863 bge a4,t6,80a <stbsp__real_to_str+0x54a>
- 3de: 07d00313 li t1,125
- 3e2: 877e mv a4,t6
- 3e4: 4e01 li t3,0
- 3e6: 3e800813 li a6,1000
- 3ea: 130e slli t1,t1,0x23
- 3ec: a039 j 3fa <stbsp__real_to_str+0x13a>
- 3ee: 030747b3 div a5,a4,a6
- 3f2: 4e05 li t3,1
- 3f4: 40674c63 blt a4,t1,80c <stbsp__real_to_str+0x54c>
- 3f8: 873e mv a4,a5
- 3fa: 030768b3 rem a7,a4,a6
- 3fe: fe0888e3 beqz a7,3ee <stbsp__real_to_str+0x12e>
- 402: 400e0163 beqz t3,804 <stbsp__real_to_str+0x544>
- 406: 8fbe mv t6,a5
- 408: 05f5e7b7 lui a5,0x5f5e
- 40c: 0ff78793 addi a5,a5,255 # 5f5e0ff <_ZSt4cerr+0x5f56787>
- 410: 04060413 addi s0,a2,64
- 414: 03860613 addi a2,a2,56
- 418: 15f7c863 blt a5,t6,568 <stbsp__real_to_str+0x2a8>
- 41c: 000f871b sext.w a4,t6
- 420: 20070463 beqz a4,628 <stbsp__real_to_str+0x368>
- 424: 4f01 li t5,0
- 426: 4f81 li t6,0
- 428: 00006e97 auipc t4,0x6
- 42c: 658e8e93 addi t4,t4,1624 # 6a80 <stbsp__digitpair>
- 430: aaa9 j 58a <stbsp__real_to_str+0x2ca>
- 432: 0306 slli t1,t1,0x1
- 434: 3e030e63 beqz t1,830 <stbsp__real_to_str+0x570>
- 438: 4305 li t1,1
- 43a: ec22 sd s0,24(sp)
- 43c: 00ce9e13 slli t3,t4,0xc
- 440: 134e slli t1,t1,0x33
- 442: 520e4063 bltz t3,962 <stbsp__real_to_str+0x6a2>
- 446: 40135313 srai t1,t1,0x1
- 44a: 01d37e33 and t3,t1,t4
- 44e: 8f42 mv t5,a6
- 450: 387d addiw a6,a6,-1
- 452: fe0e0ae3 beqz t3,446 <stbsp__real_to_str+0x186>
- 456: 26900313 li t1,617
- 45a: c00f081b addiw a6,t5,-1024
- 45e: 0268083b mulw a6,a6,t1
- 462: 41f8531b sraiw t1,a6,0x1f
- 466: 0153531b srliw t1,t1,0x15
- 46a: 0103033b addw t1,t1,a6
- 46e: 40b3539b sraiw t2,t1,0xb
- 472: 4849 li a6,18
- 474: 4078083b subw a6,a6,t2
- 478: 41f8531b sraiw t1,a6,0x1f
- 47c: 00684eb3 xor t4,a6,t1
- 480: 406e8f3b subw t5,t4,t1
- 484: 2c900313 li t1,713
- 488: 03e3033b mulw t1,t1,t5
- 48c: 4e35 li t3,13
- 48e: 8efa mv t4,t5
- 490: 40e35f9b sraiw t6,t1,0xe
- 494: 837e mv t1,t6
- 496: 23fe4363 blt t3,t6,6bc <stbsp__real_to_str+0x3fc>
- 49a: 5e25 li t3,-23
- 49c: 026e0e3b mulw t3,t3,t1
- 4a0: 01de0ebb addw t4,t3,t4
- 4a4: 22084f63 bltz a6,6e2 <stbsp__real_to_str+0x422>
- 4a8: f2000753 fmv.d.x fa4,zero
- 4ac: 00005e17 auipc t3,0x5
- 4b0: fd4e0e13 addi t3,t3,-44 # 5480 <stbsp__bot>
- 4b4: 380e9e63 bnez t4,850 <stbsp__real_to_str+0x590>
- 4b8: f20887d3 fmv.d.x fa5,a7
- 4bc: fff30f1b addiw t5,t1,-1
- 4c0: 0f0e slli t5,t5,0x3
- 4c2: 02f777d3 fadd.d fa5,fa4,fa5
- 4c6: 030e slli t1,t1,0x3
- 4c8: 9f72 add t5,t5,t3
- 4ca: 9e1a add t3,t3,t1
- 4cc: 2e0e3e03 ld t3,736(t3)
- 4d0: 2e8f3587 fld fa1,744(t5)
- 4d4: f8000837 lui a6,0xf8000
- 4d8: e2078ed3 fmv.x.d t4,fa5
- 4dc: 12b7f6d3 fmul.d fa3,fa5,fa1
- 4e0: f2088653 fmv.d.x fa2,a7
- 4e4: 01d87333 and t1,a6,t4
- 4e8: 01c87833 and a6,a6,t3
- 4ec: f20807d3 fmv.d.x fa5,a6
- 4f0: f2030053 fmv.d.x ft0,t1
- 4f4: 0af5f553 fsub.d fa0,fa1,fa5
- 4f8: f20e87d3 fmv.d.x fa5,t4
- 4fc: 0ac7f0d3 fsub.d ft1,fa5,fa2
- 500: f20807d3 fmv.d.x fa5,a6
- 504: f2030653 fmv.d.x fa2,t1
- 508: 6ac7f647 fmsub.d fa2,fa5,fa2,fa3
- 50c: f20e87d3 fmv.d.x fa5,t4
- 510: 0a177753 fsub.d fa4,fa4,ft1
- 514: f20300d3 fmv.d.x ft1,t1
- 518: 0a07f7d3 fsub.d fa5,fa5,ft0
- 51c: 350f3007 fld ft0,848(t5)
- 520: 62157643 fmadd.d fa2,fa0,ft1,fa2
- 524: 12b77753 fmul.d fa4,fa4,fa1
- 528: f20805d3 fmv.d.x fa1,a6
- 52c: 62b7f643 fmadd.d fa2,fa5,fa1,fa2
- 530: f20e85d3 fmv.d.x fa1,t4
- 534: 7205f743 fmadd.d fa4,fa1,ft0,fa4
- 538: 62a7f7c3 fmadd.d fa5,fa5,fa0,fa2
- 53c: 02e7f753 fadd.d fa4,fa5,fa4
- 540: bd0d j 372 <stbsp__real_to_str+0xb2>
- 542: 00e3833b addw t1,t2,a4
- 546: 2a0e4663 bltz t3,7f2 <stbsp__real_to_str+0x532>
- 54a: 475d li a4,23
- 54c: 10677663 bgeu a4,t1,658 <stbsp__real_to_str+0x398>
- 550: e80f93e3 bnez t6,3d6 <stbsp__real_to_str+0x116>
- 554: 05f5e7b7 lui a5,0x5f5e
- 558: 0ff78793 addi a5,a5,255 # 5f5e0ff <_ZSt4cerr+0x5f56787>
- 55c: 04060413 addi s0,a2,64
- 560: 03860613 addi a2,a2,56
- 564: ebf7dce3 bge a5,t6,41c <stbsp__real_to_str+0x15c>
- 568: 4f01 li t5,0
- 56a: 00006e97 auipc t4,0x6
- 56e: 516e8e93 addi t4,t4,1302 # 6a80 <stbsp__digitpair>
- 572: 05f5e7b7 lui a5,0x5f5e
- 576: 10078793 addi a5,a5,256 # 5f5e100 <_ZSt4cerr+0x5f56788>
- 57a: 02ffe833 rem a6,t6,a5
- 57e: 02ffcfb3 div t6,t6,a5
- 582: 0008071b sext.w a4,a6
- 586: 0a080463 beqz a6,62e <stbsp__real_to_str+0x36e>
- 58a: 8822 mv a6,s0
- 58c: 06400893 li a7,100
- 590: 06300e13 li t3,99
- 594: 1879 addi a6,a6,-2 # fffffffff7fffffe <_ZSt4cerr+0xfffffffff7ff8686>
- 596: 0007031b sext.w t1,a4
- 59a: 031777bb remuw a5,a4,a7
- 59e: 2785 addiw a5,a5,1
- 5a0: 0017979b slliw a5,a5,0x1
- 5a4: 1782 slli a5,a5,0x20
- 5a6: 9381 srli a5,a5,0x20
- 5a8: 97f6 add a5,a5,t4
- 5aa: 0007d783 lhu a5,0(a5)
- 5ae: 0317573b divuw a4,a4,a7
- 5b2: 00f81023 sh a5,0(a6)
- 5b6: fc6e6fe3 bltu t3,t1,594 <stbsp__real_to_str+0x2d4>
- 5ba: 008f0f3b addw t5,t5,s0
- 5be: 410f0f3b subw t5,t5,a6
- 5c2: 020f8f63 beqz t6,600 <stbsp__real_to_str+0x340>
- 5c6: 87c2 mv a5,a6
- 5c8: 03000713 li a4,48
- 5cc: 04c80c63 beq a6,a2,624 <stbsp__real_to_str+0x364>
- 5d0: 17fd addi a5,a5,-1
- 5d2: 00e78023 sb a4,0(a5)
- 5d6: fec79de3 bne a5,a2,5d0 <stbsp__real_to_str+0x310>
- 5da: 408807b3 sub a5,a6,s0
- 5de: 00ff07bb addw a5,t5,a5
- 5e2: 1461 addi s0,s0,-8
- 5e4: 00878f1b addiw t5,a5,8
- 5e8: 05f5e7b7 lui a5,0x5f5e
- 5ec: 0ff78793 addi a5,a5,255 # 5f5e0ff <_ZSt4cerr+0x5f56787>
- 5f0: ff840613 addi a2,s0,-8
- 5f4: f7f7cfe3 blt a5,t6,572 <stbsp__real_to_str+0x2b2>
- 5f8: 000f871b sext.w a4,t6
- 5fc: 4f81 li t6,0
- 5fe: b771 j 58a <stbsp__real_to_str+0x2ca>
- 600: 020f0563 beqz t5,62a <stbsp__real_to_str+0x36a>
- 604: 00084703 lbu a4,0(a6)
- 608: 03000793 li a5,48
- 60c: 22f70f63 beq a4,a5,84a <stbsp__real_to_str+0x58a>
- 610: 2f01 sext.w t5,t5
- 612: 0076a023 sw t2,0(a3)
- 616: 6462 ld s0,24(sp)
- 618: 0102b023 sd a6,0(t0)
- 61c: 01e5a023 sw t5,0(a1)
- 620: 6105 addi sp,sp,32
- 622: 8082 ret
- 624: 8442 mv s0,a6
- 626: b7c9 j 5e8 <stbsp__real_to_str+0x328>
- 628: 8822 mv a6,s0
- 62a: 4f01 li t5,0
- 62c: b7dd j 612 <stbsp__real_to_str+0x352>
- 62e: 8822 mv a6,s0
- 630: bf59 j 5c6 <stbsp__real_to_str+0x306>
- 632: 0eb2 slli t4,t4,0xc
- 634: 00005797 auipc a5,0x5
- 638: b1c78793 addi a5,a5,-1252 # 5150 <_GLOBAL__sub_I__ZSt3cin+0x8a>
- 63c: 000e8663 beqz t4,648 <stbsp__real_to_str+0x388>
- 640: 00005797 auipc a5,0x5
- 644: b0878793 addi a5,a5,-1272 # 5148 <_GLOBAL__sub_I__ZSt3cin+0x82>
- 648: 00f2b023 sd a5,0(t0)
- 64c: 679d lui a5,0x7
- 64e: c29c sw a5,0(a3)
- 650: 4f0d li t5,3
- 652: 01e5a023 sw t5,0(a1)
- 656: 8082 ret
- 658: 3b9ad737 lui a4,0x3b9ad
- 65c: 9ff70713 addi a4,a4,-1537 # 3b9ac9ff <_ZSt4cerr+0x3b9a5087>
- 660: 07f76f63 bltu a4,t6,6de <stbsp__real_to_str+0x41e>
- 664: 4805 li a6,1
- 666: 02081713 slli a4,a6,0x20
- 66a: 01d75893 srli a7,a4,0x1d
- 66e: 00005717 auipc a4,0x5
- 672: 1ca70713 addi a4,a4,458 # 5838 <stbsp__powten>
- 676: 9746 add a4,a4,a7
- 678: 4e51 li t3,20
- 67a: a021 j 682 <stbsp__real_to_str+0x3c2>
- 67c: 2805 addiw a6,a6,1
- 67e: edc809e3 beq a6,t3,550 <stbsp__real_to_str+0x290>
- 682: 00073883 ld a7,0(a4)
- 686: 0721 addi a4,a4,8
- 688: ff1ffae3 bgeu t6,a7,67c <stbsp__real_to_str+0x3bc>
- 68c: ed0372e3 bgeu t1,a6,550 <stbsp__real_to_str+0x290>
- 690: 4068083b subw a6,a6,t1
- 694: 475d li a4,23
- 696: eb076de3 bltu a4,a6,550 <stbsp__real_to_str+0x290>
- 69a: 080e slli a6,a6,0x3
- 69c: 00005717 auipc a4,0x5
- 6a0: de470713 addi a4,a4,-540 # 5480 <stbsp__bot>
- 6a4: 9742 add a4,a4,a6
- 6a6: 3b873803 ld a6,952(a4)
- 6aa: 00185713 srli a4,a6,0x1
- 6ae: 977e add a4,a4,t6
- 6b0: 01176363 bltu a4,a7,6b6 <stbsp__real_to_str+0x3f6>
- 6b4: 2385 addiw t2,t2,1
- 6b6: 03075fb3 divu t6,a4,a6
- 6ba: bd59 j 550 <stbsp__real_to_str+0x290>
- 6bc: 4335 li t1,13
- 6be: 5e25 li t3,-23
- 6c0: 026e0e3b mulw t3,t3,t1
- 6c4: 01de0ebb addw t4,t3,t4
- 6c8: de0850e3 bgez a6,4a8 <stbsp__real_to_str+0x1e8>
- 6cc: a819 j 6e2 <stbsp__real_to_str+0x422>
- 6ce: 02571313 slli t1,a4,0x25
- 6d2: 02535313 srli t1,t1,0x25
- 6d6: 0305 addi t1,t1,1
- 6d8: 475d li a4,23
- 6da: ce676ee3 bltu a4,t1,3d6 <stbsp__real_to_str+0x116>
- 6de: 4829 li a6,10
- 6e0: b759 j 666 <stbsp__real_to_str+0x3a6>
- 6e2: 260e8663 beqz t4,94e <stbsp__real_to_str+0x68e>
- 6e6: 00231e13 slli t3,t1,0x2
- 6ea: 41c30e33 sub t3,t1,t3
- 6ee: 0e0e slli t3,t3,0x3
- 6f0: 9e1a add t3,t3,t1
- 6f2: fffe881b addiw a6,t4,-1
- 6f6: 9e7a add t3,t3,t5
- 6f8: 00005e97 auipc t4,0x5
- 6fc: d88e8e93 addi t4,t4,-632 # 5480 <stbsp__bot>
- 700: 0e0e slli t3,t3,0x3
- 702: 080e slli a6,a6,0x3
- 704: 9876 add a6,a6,t4
- 706: 9ef2 add t4,t4,t3
- 708: 0b883607 fld fa2,184(a6)
- 70c: f20887d3 fmv.d.x fa5,a7
- 710: 0b0ebf03 ld t5,176(t4)
- 714: f8000e37 lui t3,0xf8000
- 718: 011e7eb3 and t4,t3,a7
- 71c: 12f676d3 fmul.d fa3,fa2,fa5
- 720: 01ee7e33 and t3,t3,t5
- 724: f20e07d3 fmv.d.x fa5,t3
- 728: f20e0753 fmv.d.x fa4,t3
- 72c: f20e8553 fmv.d.x fa0,t4
- 730: 0af67653 fsub.d fa2,fa2,fa5
- 734: f20e87d3 fmv.d.x fa5,t4
- 738: f20e85d3 fmv.d.x fa1,t4
- 73c: 6ae7f7c7 fmsub.d fa5,fa5,fa4,fa3
- 740: f2088753 fmv.d.x fa4,a7
- 744: 0ab775d3 fsub.d fa1,fa4,fa1
- 748: 16883707 fld fa4,360(a6)
- 74c: 7aa677c3 fmadd.d fa5,fa2,fa0,fa5
- 750: f20e0553 fmv.d.x fa0,t3
- 754: 7aa5f7c3 fmadd.d fa5,fa1,fa0,fa5
- 758: 7ac5f5c3 fmadd.d fa1,fa1,fa2,fa5
- 75c: f20887d3 fmv.d.x fa5,a7
- 760: 5af77743 fmadd.d fa4,fa4,fa5,fa1
- 764: c00f87e3 beqz t6,372 <stbsp__real_to_str+0xb2>
- 768: 02d777d3 fadd.d fa5,fa4,fa3
- 76c: fff3089b addiw a7,t1,-1
- 770: 00005817 auipc a6,0x5
- 774: d1080813 addi a6,a6,-752 # 5480 <stbsp__bot>
- 778: 030e slli t1,t1,0x3
- 77a: 088e slli a7,a7,0x3
- 77c: 98c2 add a7,a7,a6
- 77e: 981a add a6,a6,t1
- 780: e2078e53 fmv.x.d t3,fa5
- 784: 21083e83 ld t4,528(a6)
- 788: f8000837 lui a6,0xf8000
- 78c: 2188b507 fld fa0,536(a7)
- 790: 01c87333 and t1,a6,t3
- 794: 01d87833 and a6,a6,t4
- 798: f2080653 fmv.d.x fa2,a6
- 79c: 12f577d3 fmul.d fa5,fa0,fa5
- 7a0: 2808b587 fld fa1,640(a7)
- 7a4: 0ac57053 fsub.d ft0,fa0,fa2
- 7a8: f20e0653 fmv.d.x fa2,t3
- 7ac: 0ad67153 fsub.d ft2,fa2,fa3
- 7b0: f20806d3 fmv.d.x fa3,a6
- 7b4: f2030653 fmv.d.x fa2,t1
- 7b8: 7ac6f0c7 fmsub.d ft1,fa3,fa2,fa5
- 7bc: f20e06d3 fmv.d.x fa3,t3
- 7c0: 0ac6f653 fsub.d fa2,fa3,fa2
- 7c4: 22f786d3 fmv.d fa3,fa5
- 7c8: 0a2777d3 fsub.d fa5,fa4,ft2
- 7cc: f2030753 fmv.d.x fa4,t1
- 7d0: 0ae07743 fmadd.d fa4,ft0,fa4,ft1
- 7d4: 12a7f7d3 fmul.d fa5,fa5,fa0
- 7d8: f2080553 fmv.d.x fa0,a6
- 7dc: 72a67743 fmadd.d fa4,fa2,fa0,fa4
- 7e0: f20e0553 fmv.d.x fa0,t3
- 7e4: 7aa5f7c3 fmadd.d fa5,fa1,fa0,fa5
- 7e8: 72067643 fmadd.d fa2,fa2,ft0,fa4
- 7ec: 02f67753 fadd.d fa4,fa2,fa5
- 7f0: b649 j 372 <stbsp__real_to_str+0xb2>
- 7f2: 02571313 slli t1,a4,0x25
- 7f6: 02535313 srli t1,t1,0x25
- 7fa: 0305 addi t1,t1,1
- 7fc: 475d li a4,23
- 7fe: d46769e3 bltu a4,t1,550 <stbsp__real_to_str+0x290>
- 802: bd99 j 658 <stbsp__real_to_str+0x398>
- 804: 87fe mv a5,t6
- 806: 8fbe mv t6,a5
- 808: b101 j 408 <stbsp__real_to_str+0x148>
- 80a: 87fe mv a5,t6
- 80c: 3e800713 li a4,1000
- 810: 02e7f73b remuw a4,a5,a4
- 814: 2781 sext.w a5,a5
- 816: eb01 bnez a4,826 <stbsp__real_to_str+0x566>
- 818: 3e800813 li a6,1000
- 81c: 0307d7bb divuw a5,a5,a6
- 820: 0307f73b remuw a4,a5,a6
- 824: df65 beqz a4,81c <stbsp__real_to_str+0x55c>
- 826: 02079f93 slli t6,a5,0x20
- 82a: 020fdf93 srli t6,t6,0x20
- 82e: b31d j 554 <stbsp__real_to_str+0x294>
- 830: 4785 li a5,1
- 832: c29c sw a5,0(a3)
- 834: 00c2b023 sd a2,0(t0)
- 838: 03000793 li a5,48
- 83c: 00f60023 sb a5,0(a2)
- 840: 4f05 li t5,1
- 842: 01e5a023 sw t5,0(a1)
- 846: 6105 addi sp,sp,32
- 848: 8082 ret
- 84a: 0805 addi a6,a6,1 # fffffffff8000001 <_ZSt4cerr+0xfffffffff7ff8689>
- 84c: 3f7d addiw t5,t5,-1
- 84e: b3d1 j 612 <stbsp__real_to_str+0x352>
- 850: e826 sd s1,16(sp)
- 852: e44a sd s2,8(sp)
- 854: 4859 li a6,22
- 856: 8976 mv s2,t4
- 858: 11d84363 blt a6,t4,95e <stbsp__real_to_str+0x69e>
- 85c: 0009049b sext.w s1,s2
- 860: 00005e17 auipc t3,0x5
- 864: c20e0e13 addi t3,t3,-992 # 5480 <stbsp__bot>
- 868: 00349813 slli a6,s1,0x3
- 86c: 9872 add a6,a6,t3
- 86e: 00083687 fld fa3,0(a6)
- 872: 00083803 ld a6,0(a6)
- 876: f20887d3 fmv.d.x fa5,a7
- 87a: f8000fb7 lui t6,0xf8000
- 87e: 010ff833 and a6,t6,a6
- 882: 12f6f553 fmul.d fa0,fa3,fa5
- 886: f20807d3 fmv.d.x fa5,a6
- 88a: 011ff433 and s0,t6,a7
- 88e: f2040753 fmv.d.x fa4,s0
- 892: 0af6f6d3 fsub.d fa3,fa3,fa5
- 896: f20887d3 fmv.d.x fa5,a7
- 89a: f2080653 fmv.d.x fa2,a6
- 89e: 412e8ebb subw t4,t4,s2
- 8a2: 0ae7f753 fsub.d fa4,fa5,fa4
- 8a6: f20407d3 fmv.d.x fa5,s0
- 8aa: e20508d3 fmv.x.d a7,fa0
- 8ae: 52c7f7c7 fmsub.d fa5,fa5,fa2,fa0
- 8b2: f2040653 fmv.d.x fa2,s0
- 8b6: 7ac6f7c3 fmadd.d fa5,fa3,fa2,fa5
- 8ba: f2080653 fmv.d.x fa2,a6
- 8be: 7ac777c3 fmadd.d fa5,fa4,fa2,fa5
- 8c2: 7ad77743 fmadd.d fa4,fa4,fa3,fa5
- 8c6: 080e8963 beqz t4,958 <stbsp__real_to_str+0x698>
- 8ca: 02e577d3 fadd.d fa5,fa0,fa4
- 8ce: 0e8e slli t4,t4,0x3
- 8d0: 01de0833 add a6,t3,t4
- 8d4: 00083587 fld fa1,0(a6)
- 8d8: 00231893 slli a7,t1,0x2
- 8dc: 411308b3 sub a7,t1,a7
- 8e0: 00389813 slli a6,a7,0x3
- 8e4: e2078453 fmv.x.d s0,fa5
- 8e8: 12f5f7d3 fmul.d fa5,fa1,fa5
- 8ec: 981a add a6,a6,t1
- 8ee: 987a add a6,a6,t5
- 8f0: 40980833 sub a6,a6,s1
- 8f4: 080e slli a6,a6,0x3
- 8f6: 9872 add a6,a6,t3
- 8f8: 00083e83 ld t4,0(a6)
- 8fc: 008ff833 and a6,t6,s0
- 900: e20788d3 fmv.x.d a7,fa5
- 904: f20806d3 fmv.d.x fa3,a6
- 908: f20407d3 fmv.d.x fa5,s0
- 90c: 01dfffb3 and t6,t6,t4
- 910: f20880d3 fmv.d.x ft1,a7
- 914: 0ad7f653 fsub.d fa2,fa5,fa3
- 918: f20f87d3 fmv.d.x fa5,t6
- 91c: 64c2 ld s1,16(sp)
- 91e: 6922 ld s2,8(sp)
- 920: 0af5f053 fsub.d ft0,fa1,fa5
- 924: 0ad7f6c7 fmsub.d fa3,fa5,fa3,ft1
- 928: f20407d3 fmv.d.x fa5,s0
- 92c: 0aa7f7d3 fsub.d fa5,fa5,fa0
- 930: f2080553 fmv.d.x fa0,a6
- 934: 6aa076c3 fmadd.d fa3,ft0,fa0,fa3
- 938: 0af77753 fsub.d fa4,fa4,fa5
- 93c: f20f87d3 fmv.d.x fa5,t6
- 940: 6af677c3 fmadd.d fa5,fa2,fa5,fa3
- 944: 7a067643 fmadd.d fa2,fa2,ft0,fa5
- 948: 62e5f743 fmadd.d fa4,fa1,fa4,fa2
- 94c: b6b5 j 4b8 <stbsp__real_to_str+0x1f8>
- 94e: f20886d3 fmv.d.x fa3,a7
- 952: f2000753 fmv.d.x fa4,zero
- 956: b539 j 764 <stbsp__real_to_str+0x4a4>
- 958: 64c2 ld s1,16(sp)
- 95a: 6922 ld s2,8(sp)
- 95c: beb1 j 4b8 <stbsp__real_to_str+0x1f8>
- 95e: 4959 li s2,22
- 960: bdf5 j 85c <stbsp__real_to_str+0x59c>
- 962: e826 sd s1,16(sp)
- 964: e44a sd s2,8(sp)
- 966: ecc00393 li t2,-308
- 96a: 4eed li t4,27
- 96c: 4335 li t1,13
- 96e: 14600f13 li t5,326
- 972: b5cd j 854 <stbsp__real_to_str+0x594>
- 974: 26900313 li t1,617
- 978: 0303083b mulw a6,t1,a6
- 97c: 41f8531b sraiw t1,a6,0x1f
- 980: 0153531b srliw t1,t1,0x15
- 984: 0103033b addw t1,t1,a6
- 988: 40b3539b sraiw t2,t1,0xb
- 98c: 4849 li a6,18
- 98e: 4078083b subw a6,a6,t2
- 992: b249 j 314 <stbsp__real_to_str+0x54>
-
-0000000000000994 <_in_char.part.0>:
-static int _in_char(_InContext *ctx)
- 994: 87aa mv a5,a0
- if (ctx->fd == -1)
- 996: 4508 lw a0,8(a0)
- 998: 577d li a4,-1
- 99a: 00e51d63 bne a0,a4,9b4 <_in_char.part.0+0x20>
- if (ctx->buf[ctx->pos] == '\0')
- 99e: 6b94 ld a3,16(a5)
- 9a0: 6398 ld a4,0(a5)
- 9a2: 9736 add a4,a4,a3
- 9a4: 00074603 lbu a2,0(a4)
- 9a8: c60d beqz a2,9d2 <_in_char.part.0+0x3e>
- return (unsigned char)ctx->buf[ctx->pos++];
- 9aa: 0685 addi a3,a3,1
- 9ac: eb94 sd a3,16(a5)
- 9ae: 00074503 lbu a0,0(a4)
- 9b2: 8082 ret
-static int _in_char(_InContext *ctx)
- 9b4: 1101 addi sp,sp,-32
- if (read(ctx->fd, &c, 1) == 1)
- 9b6: 4605 li a2,1
- 9b8: 00f10593 addi a1,sp,15
-static int _in_char(_InContext *ctx)
- 9bc: ec06 sd ra,24(sp)
- if (read(ctx->fd, &c, 1) == 1)
- 9be: 801ff0ef jal 1be <read>
- 9c2: 4785 li a5,1
- 9c4: 00f51963 bne a0,a5,9d6 <_in_char.part.0+0x42>
- return (unsigned char)c;
- 9c8: 00f14503 lbu a0,15(sp)
-}
- 9cc: 60e2 ld ra,24(sp)
- 9ce: 6105 addi sp,sp,32
- 9d0: 8082 ret
- return -1;
- 9d2: 557d li a0,-1
-}
- 9d4: 8082 ret
- return -1;
- 9d6: 557d li a0,-1
- 9d8: bfd5 j 9cc <_in_char.part.0+0x38>
-
-00000000000009da <_skip_space>:
-{
- 9da: 7139 addi sp,sp,-64
- 9dc: f822 sd s0,48(sp)
- 9de: f426 sd s1,40(sp)
- 9e0: f04a sd s2,32(sp)
- 9e2: ec4e sd s3,24(sp)
- 9e4: e852 sd s4,16(sp)
- 9e6: fc06 sd ra,56(sp)
- 9e8: 842a mv s0,a0
- ctx->ungotten = -1;
- 9ea: 54fd li s1,-1
- if (read(ctx->fd, &c, 1) == 1)
- 9ec: 00f10a13 addi s4,sp,15
- return c == ' ' || c == '\t' || c == '\n' || c == '\v' || c == '\f' || c == '\r';
- 9f0: 02000913 li s2,32
- 9f4: 4991 li s3,4
- if (ctx->ungotten >= 0)
- 9f6: 4c1c lw a5,24(s0)
- 9f8: 0407d163 bgez a5,a3a <_skip_space+0x60>
- if (ctx->fd == -1)
- 9fc: 4408 lw a0,8(s0)
- if (read(ctx->fd, &c, 1) == 1)
- 9fe: 4605 li a2,1
- a00: 85d2 mv a1,s4
- if (ctx->fd == -1)
- a02: 02951e63 bne a0,s1,a3e <_skip_space+0x64>
- if (ctx->buf[ctx->pos] == '\0')
- a06: 6818 ld a4,16(s0)
- a08: 601c ld a5,0(s0)
- return (unsigned char)ctx->buf[ctx->pos++];
- a0a: 00170693 addi a3,a4,1
- if (ctx->buf[ctx->pos] == '\0')
- a0e: 97ba add a5,a5,a4
- a10: 0007c703 lbu a4,0(a5) # 7000 <_stdout+0x60>
- a14: cb19 beqz a4,a2a <_skip_space+0x50>
- return (unsigned char)ctx->buf[ctx->pos++];
- a16: e814 sd a3,16(s0)
- a18: 0007c783 lbu a5,0(a5)
- return c == ' ' || c == '\t' || c == '\n' || c == '\v' || c == '\f' || c == '\r';
- a1c: ff77871b addiw a4,a5,-9
- a20: fd278be3 beq a5,s2,9f6 <_skip_space+0x1c>
- a24: fce9f9e3 bgeu s3,a4,9f6 <_skip_space+0x1c>
- ctx->ungotten = c;
- a28: cc1c sw a5,24(s0)
-}
- a2a: 70e2 ld ra,56(sp)
- a2c: 7442 ld s0,48(sp)
- a2e: 74a2 ld s1,40(sp)
- a30: 7902 ld s2,32(sp)
- a32: 69e2 ld s3,24(sp)
- a34: 6a42 ld s4,16(sp)
- a36: 6121 addi sp,sp,64
- a38: 8082 ret
- ctx->ungotten = -1;
- a3a: cc04 sw s1,24(s0)
- return c;
- a3c: b7c5 j a1c <_skip_space+0x42>
- if (read(ctx->fd, &c, 1) == 1)
- a3e: f80ff0ef jal 1be <read>
- a42: 4785 li a5,1
- a44: fef513e3 bne a0,a5,a2a <_skip_space+0x50>
- return (unsigned char)c;
- a48: 00f14783 lbu a5,15(sp)
- a4c: bfc1 j a1c <_skip_space+0x42>
-
-0000000000000a4e <_vscanf_core.constprop.0>:
-static int _vscanf_core(_InContext *ctx, const char *format, va_list ap)
- a4e: 7155 addi sp,sp,-208
- a50: e586 sd ra,200(sp)
- a52: e95a sd s6,144(sp)
- while (*p)
- a54: 0005c783 lbu a5,0(a1)
-static int _vscanf_core(_InContext *ctx, const char *format, va_list ap)
- a58: e432 sd a2,8(sp)
- while (*p)
- a5a: 68078b63 beqz a5,10f0 <_vscanf_core.constprop.0+0x6a2>
- a5e: e1a2 sd s0,192(sp)
- a60: fd26 sd s1,184(sp)
- a62: f152 sd s4,160(sp)
- a64: ed56 sd s5,152(sp)
- a66: f4ee sd s11,104(sp)
- a68: 842e mv s0,a1
- a6a: 8daa mv s11,a0
- int assigned = 0;
- a6c: 4b01 li s6,0
- return c == ' ' || c == '\t' || c == '\n' || c == '\v' || c == '\f' || c == '\r';
- a6e: 02000493 li s1,32
- a72: 4a91 li s5,4
- if (*p != '%')
- a74: 02500a13 li s4,37
- return c == ' ' || c == '\t' || c == '\n' || c == '\v' || c == '\f' || c == '\r';
- a78: 04978763 beq a5,s1,ac6 <_vscanf_core.constprop.0+0x78>
- a7c: ff77869b addiw a3,a5,-9
- a80: 0ff6f693 zext.b a3,a3
- a84: 04daf163 bgeu s5,a3,ac6 <_vscanf_core.constprop.0+0x78>
- if (*p != '%')
- a88: 07478d63 beq a5,s4,b02 <_vscanf_core.constprop.0+0xb4>
- _skip_space(ctx);
- a8c: 856e mv a0,s11
- a8e: f4dff0ef jal 9da <_skip_space>
- if (ctx->ungotten >= 0)
- a92: 018da503 lw a0,24(s11)
- a96: 04055a63 bgez a0,aea <_vscanf_core.constprop.0+0x9c>
- a9a: 856e mv a0,s11
- a9c: ef9ff0ef jal 994 <_in_char.part.0>
- if (c != *p)
- aa0: 00044783 lbu a5,0(s0)
- aa4: 04a78a63 beq a5,a0,af8 <_vscanf_core.constprop.0+0xaa>
- if (c != -1)
- aa8: 57fd li a5,-1
- aaa: 00f50463 beq a0,a5,ab2 <_vscanf_core.constprop.0+0x64>
- ctx->ungotten = c;
- aae: 00adac23 sw a0,24(s11)
- ab2: 640e ld s0,192(sp)
- ab4: 74ea ld s1,184(sp)
- ab6: 7a0a ld s4,160(sp)
- ab8: 6aea ld s5,152(sp)
- aba: 7da6 ld s11,104(sp)
-}
- abc: 60ae ld ra,200(sp)
- abe: 855a mv a0,s6
- ac0: 6b4a ld s6,144(sp)
- ac2: 6169 addi sp,sp,208
- ac4: 8082 ret
- _skip_space(ctx);
- ac6: 856e mv a0,s11
- ac8: f13ff0ef jal 9da <_skip_space>
- while (isspace(*p))
- acc: 00044783 lbu a5,0(s0)
- return c == ' ' || c == '\t' || c == '\n' || c == '\v' || c == '\f' || c == '\r';
- ad0: 4611 li a2,4
- ad2: ff77869b addiw a3,a5,-9
- ad6: 0ff6f693 zext.b a3,a3
- ada: 00978663 beq a5,s1,ae6 <_vscanf_core.constprop.0+0x98>
- ade: 00d67463 bgeu a2,a3,ae6 <_vscanf_core.constprop.0+0x98>
- while (*p)
- ae2: fbd9 bnez a5,a78 <_vscanf_core.constprop.0+0x2a>
- ae4: b7f9 j ab2 <_vscanf_core.constprop.0+0x64>
- p++;
- ae6: 0405 addi s0,s0,1
- ae8: b7d5 j acc <_vscanf_core.constprop.0+0x7e>
- ctx->ungotten = -1;
- aea: 57fd li a5,-1
- aec: 00fdac23 sw a5,24(s11)
- if (c != *p)
- af0: 00044783 lbu a5,0(s0)
- af4: faa79ae3 bne a5,a0,aa8 <_vscanf_core.constprop.0+0x5a>
- while (*p)
- af8: 00144783 lbu a5,1(s0)
- p++;
- afc: 0405 addi s0,s0,1
- while (*p)
- afe: ffad bnez a5,a78 <_vscanf_core.constprop.0+0x2a>
- b00: bf4d j ab2 <_vscanf_core.constprop.0+0x64>
- b02: f94a sd s2,176(sp)
- b04: f54e sd s3,168(sp)
- b06: e55e sd s7,136(sp)
- b08: e162 sd s8,128(sp)
- if (*p == '*')
- b0a: 00144583 lbu a1,1(s0)
- b0e: 02a00793 li a5,42
- b12: 22f58d63 beq a1,a5,d4c <_vscanf_core.constprop.0+0x2fe>
- p++;
- b16: 0405 addi s0,s0,1
- int suppress = 0;
- b18: 4981 li s3,0
- while (*p >= '0' && *p <= '9')
- b1a: fd05861b addiw a2,a1,-48
- b1e: 0ff67693 zext.b a3,a2
- b22: 47a5 li a5,9
- b24: 36d7e763 bltu a5,a3,e92 <_vscanf_core.constprop.0+0x444>
- b28: 4781 li a5,0
- b2a: 4825 li a6,9
- b2c: a019 j b32 <_vscanf_core.constprop.0+0xe4>
- width = width * 10 + (*p - '0');
- b2e: 0016979b slliw a5,a3,0x1
- while (*p >= '0' && *p <= '9')
- b32: 00144583 lbu a1,1(s0)
- width = width * 10 + (*p - '0');
- b36: 00f6093b addw s2,a2,a5
- b3a: 0029169b slliw a3,s2,0x2
- while (*p >= '0' && *p <= '9')
- b3e: fd05861b addiw a2,a1,-48
- b42: 0ff67513 zext.b a0,a2
- width = width * 10 + (*p - '0');
- b46: 012686bb addw a3,a3,s2
- p++;
- b4a: 0405 addi s0,s0,1
- while (*p >= '0' && *p <= '9')
- b4c: fea871e3 bgeu a6,a0,b2e <_vscanf_core.constprop.0+0xe0>
- if (*p == 'l')
- b50: 06c00693 li a3,108
- p++;
- b54: 00140b93 addi s7,s0,1
- if (*p == 'l')
- b58: 1ed58f63 beq a1,a3,d56 <_vscanf_core.constprop.0+0x308>
- else if (*p == 'h')
- b5c: 06800693 li a3,104
- b60: 2ad58863 beq a1,a3,e10 <_vscanf_core.constprop.0+0x3c2>
- char spec = *p++;
- b64: 00044c03 lbu s8,0(s0)
- b68: 8ba2 mv s7,s0
- int len_mod = 0;
- b6a: ec02 sd zero,24(sp)
- char spec = *p++;
- b6c: 06300693 li a3,99
- b70: 001b8413 addi s0,s7,1
- if (!spec)
- b74: 2adc0863 beq s8,a3,e24 <_vscanf_core.constprop.0+0x3d6>
- b78: 1f86fc63 bgeu a3,s8,d70 <_vscanf_core.constprop.0+0x322>
- b7c: f9cc069b addiw a3,s8,-100
- b80: 0ff6f693 zext.b a3,a3
- b84: 4651 li a2,20
- b86: 0cd66e63 bltu a2,a3,c62 <_vscanf_core.constprop.0+0x214>
- b8a: 00120637 lui a2,0x120
- b8e: 4585 li a1,1
- b90: 00d595b3 sll a1,a1,a3
- b94: 02160613 addi a2,a2,33 # 120021 <_ZSt4cerr+0x1186a9>
- b98: 8e6d and a2,a2,a1
- b9a: ee69 bnez a2,c74 <_vscanf_core.constprop.0+0x226>
- b9c: 89b9 andi a1,a1,14
- b9e: 1e059263 bnez a1,d82 <_vscanf_core.constprop.0+0x334>
- ba2: 463d li a2,15
- ba4: 0ac69f63 bne a3,a2,c62 <_vscanf_core.constprop.0+0x214>
- _skip_space(ctx);
- ba8: 856e mv a0,s11
- baa: e31ff0ef jal 9da <_skip_space>
- char *buf = suppress ? NULL : va_arg(ap, char *);
- bae: ec02 sd zero,24(sp)
- bb0: 00099763 bnez s3,bbe <_vscanf_core.constprop.0+0x170>
- bb4: 67a2 ld a5,8(sp)
- bb6: 6398 ld a4,0(a5)
- bb8: 07a1 addi a5,a5,8
- bba: e43e sd a5,8(sp)
- bbc: ec3a sd a4,24(sp)
- if (ctx->ungotten >= 0)
- bbe: 018da503 lw a0,24(s11)
- bc2: 2e055b63 bgez a0,eb8 <_vscanf_core.constprop.0+0x46a>
- bc6: 856e mv a0,s11
- bc8: dcdff0ef jal 994 <_in_char.part.0>
- while (c != -1 && !isspace(c))
- bcc: 56fd li a3,-1
- bce: 6ad50363 beq a0,a3,1274 <_vscanf_core.constprop.0+0x826>
- return c == ' ' || c == '\t' || c == '\n' || c == '\v' || c == '\f' || c == '\r';
- bd2: 02000693 li a3,32
- bd6: 3ed50963 beq a0,a3,fc8 <_vscanf_core.constprop.0+0x57a>
- bda: 46a5 li a3,9
- bdc: 3ed50663 beq a0,a3,fc8 <_vscanf_core.constprop.0+0x57a>
- be0: 46a9 li a3,10
- be2: 3ed50363 beq a0,a3,fc8 <_vscanf_core.constprop.0+0x57a>
- be6: 46ad li a3,11
- be8: 3ed50063 beq a0,a3,fc8 <_vscanf_core.constprop.0+0x57a>
- bec: 46b1 li a3,12
- bee: 3cd50d63 beq a0,a3,fc8 <_vscanf_core.constprop.0+0x57a>
- bf2: 46b5 li a3,13
- bf4: 3cd50a63 beq a0,a3,fc8 <_vscanf_core.constprop.0+0x57a>
- bf8: 67e2 ld a5,24(sp)
- bfa: fce6 sd s9,120(sp)
- bfc: f8ea sd s10,112(sp)
- bfe: e83e sd a5,16(sp)
- c00: 4d01 li s10,0
- while (c != -1 && !isspace(c))
- c02: 5c7d li s8,-1
- return c == ' ' || c == '\t' || c == '\n' || c == '\v' || c == '\f' || c == '\r';
- c04: 02000c93 li s9,32
- if (width > 0 && i >= width)
- c08: 01205463 blez s2,c10 <_vscanf_core.constprop.0+0x1c2>
- c0c: 052d5563 bge s10,s2,c56 <_vscanf_core.constprop.0+0x208>
- if (!suppress)
- c10: 00099563 bnez s3,c1a <_vscanf_core.constprop.0+0x1cc>
- buf[i] = (char)c;
- c14: 67c2 ld a5,16(sp)
- c16: 00a78023 sb a0,0(a5)
- if (ctx->ungotten >= 0)
- c1a: 018da503 lw a0,24(s11)
- i++;
- c1e: 2d05 addiw s10,s10,1
- if (ctx->ungotten >= 0)
- c20: 30055963 bgez a0,f32 <_vscanf_core.constprop.0+0x4e4>
- c24: 856e mv a0,s11
- c26: d6fff0ef jal 994 <_in_char.part.0>
- while (c != -1 && !isspace(c))
- c2a: 27850663 beq a0,s8,e96 <_vscanf_core.constprop.0+0x448>
- return c == ' ' || c == '\t' || c == '\n' || c == '\v' || c == '\f' || c == '\r';
- c2e: 03950463 beq a0,s9,c56 <_vscanf_core.constprop.0+0x208>
- c32: 47a5 li a5,9
- c34: 02f50163 beq a0,a5,c56 <_vscanf_core.constprop.0+0x208>
- c38: 47a9 li a5,10
- c3a: 00f50e63 beq a0,a5,c56 <_vscanf_core.constprop.0+0x208>
- c3e: 47ad li a5,11
- c40: 00f50b63 beq a0,a5,c56 <_vscanf_core.constprop.0+0x208>
- c44: 47b1 li a5,12
- c46: 00f50863 beq a0,a5,c56 <_vscanf_core.constprop.0+0x208>
- c4a: 67c2 ld a5,16(sp)
- c4c: 0785 addi a5,a5,1
- c4e: e83e sd a5,16(sp)
- c50: 47b5 li a5,13
- c52: faf51be3 bne a0,a5,c08 <_vscanf_core.constprop.0+0x1ba>
- if (!suppress)
- c56: 64098a63 beqz s3,12aa <_vscanf_core.constprop.0+0x85c>
- c5a: 7ce6 ld s9,120(sp)
- c5c: 7d46 ld s10,112(sp)
- ctx->ungotten = c;
- c5e: 00adac23 sw a0,24(s11)
- while (*p)
- c62: 001bc783 lbu a5,1(s7)
- c66: 794a ld s2,176(sp)
- c68: 79aa ld s3,168(sp)
- c6a: 6baa ld s7,136(sp)
- c6c: 6c0a ld s8,128(sp)
- c6e: e00795e3 bnez a5,a78 <_vscanf_core.constprop.0+0x2a>
- c72: b581 j ab2 <_vscanf_core.constprop.0+0x64>
- _skip_space(ctx);
- c74: 856e mv a0,s11
- c76: f8ea sd s10,112(sp)
- c78: d63ff0ef jal 9da <_skip_space>
- if (ctx->ungotten >= 0)
- c7c: 018da503 lw a0,24(s11)
- c80: 24055063 bgez a0,ec0 <_vscanf_core.constprop.0+0x472>
- c84: 856e mv a0,s11
- c86: d0fff0ef jal 994 <_in_char.part.0>
- if (c == '-' || c == '+')
- c8a: fd55069b addiw a3,a0,-43
- c8e: 9af5 andi a3,a3,-3
- c90: 2681 sext.w a3,a3
- int i = 0, c = _in_char(ctx);
- c92: 4d01 li s10,0
- if (c == '-' || c == '+')
- c94: 3e068863 beqz a3,1084 <_vscanf_core.constprop.0+0x636>
- int base = (spec == 'x') ? 16 : (spec == 'i' ? 0 : 10);
- c98: 07800693 li a3,120
- c9c: 4641 li a2,16
- c9e: 00dc0863 beq s8,a3,cae <_vscanf_core.constprop.0+0x260>
- ca2: 06900693 li a3,105
- ca6: 4629 li a2,10
- ca8: 00dc1363 bne s8,a3,cae <_vscanf_core.constprop.0+0x260>
- cac: 4601 li a2,0
- while (c != -1 && i < 63)
- cae: 56fd li a3,-1
- cb0: 5cd50863 beq a0,a3,1280 <_vscanf_core.constprop.0+0x832>
- cb4: fce6 sd s9,120(sp)
- cb6: 02010893 addi a7,sp,32
- cba: 01a88c33 add s8,a7,s10
- int hex = (base == 16 || base == 0) && ((c >= 'a' && c <= 'f') || (c >= 'A' && c <= 'F'));
- cbe: 4cc1 li s9,16
- int digit = (c >= '0' && c <= '9');
- cc0: fd05069b addiw a3,a0,-48
- cc4: 0005031b sext.w t1,a0
- cc8: 00a6b593 sltiu a1,a3,10
- int hex = (base == 16 || base == 0) && ((c >= 'a' && c <= 'f') || (c >= 'A' && c <= 'F'));
- ccc: 27960a63 beq a2,s9,f40 <_vscanf_core.constprop.0+0x4f2>
- cd0: 2a060d63 beqz a2,f8a <_vscanf_core.constprop.0+0x53c>
- int x = (c == 'x' || c == 'X');
- cd4: 07800793 li a5,120
- cd8: 2ef50363 beq a0,a5,fbe <_vscanf_core.constprop.0+0x570>
- cdc: fa850693 addi a3,a0,-88
- ce0: 0016b693 seqz a3,a3
- ce4: 4301 li t1,0
- if (width > 0 && i >= width)
- ce6: 01205463 blez s2,cee <_vscanf_core.constprop.0+0x2a0>
- cea: 032d5a63 bge s10,s2,d1e <_vscanf_core.constprop.0+0x2d0>
- if (digit || hex || x)
- cee: 0066e6b3 or a3,a3,t1
- cf2: 8ecd or a3,a3,a1
- cf4: c68d beqz a3,d1e <_vscanf_core.constprop.0+0x2d0>
- num_buf[i++] = (char)c;
- cf6: 00ac0023 sb a0,0(s8)
- if (ctx->ungotten >= 0)
- cfa: 018da503 lw a0,24(s11)
- num_buf[i++] = (char)c;
- cfe: 2d05 addiw s10,s10,1
- if (ctx->ungotten >= 0)
- d00: 22055c63 bgez a0,f38 <_vscanf_core.constprop.0+0x4ea>
- d04: 856e mv a0,s11
- d06: e832 sd a2,16(sp)
- d08: c8dff0ef jal 994 <_in_char.part.0>
- while (c != -1 && i < 63)
- d0c: 57fd li a5,-1
- d0e: 6642 ld a2,16(sp)
- d10: 3cf50263 beq a0,a5,10d4 <_vscanf_core.constprop.0+0x686>
- d14: 03f00693 li a3,63
- d18: 0c05 addi s8,s8,1
- d1a: fadd13e3 bne s10,a3,cc0 <_vscanf_core.constprop.0+0x272>
- num_buf[i] = '\0';
- d1e: 040d0793 addi a5,s10,64
- d22: 1018 addi a4,sp,32
- d24: 97ba add a5,a5,a4
- d26: fc078023 sb zero,-64(a5)
- ctx->ungotten = c;
- d2a: 00adac23 sw a0,24(s11)
- d2e: 7ce6 ld s9,120(sp)
- if (i == 0)
- d30: 1e0d0663 beqz s10,f1c <_vscanf_core.constprop.0+0x4ce>
- if (!suppress)
- d34: 36098363 beqz s3,109a <_vscanf_core.constprop.0+0x64c>
- while (*p)
- d38: 001bc783 lbu a5,1(s7)
- {
- d3c: 794a ld s2,176(sp)
- d3e: 79aa ld s3,168(sp)
- d40: 6baa ld s7,136(sp)
- d42: 6c0a ld s8,128(sp)
- d44: 7d46 ld s10,112(sp)
- while (*p)
- d46: d20799e3 bnez a5,a78 <_vscanf_core.constprop.0+0x2a>
- d4a: b3a5 j ab2 <_vscanf_core.constprop.0+0x64>
- while (*p >= '0' && *p <= '9')
- d4c: 00244583 lbu a1,2(s0)
- suppress = 1;
- d50: 4985 li s3,1
- p++;
- d52: 0409 addi s0,s0,2
- d54: b3d9 j b1a <_vscanf_core.constprop.0+0xcc>
- if (*p == 'l')
- d56: 00144c03 lbu s8,1(s0)
- len_mod = 1;
- d5a: 4785 li a5,1
- d5c: ec3e sd a5,24(sp)
- if (*p == 'l')
- d5e: e0bc17e3 bne s8,a1,b6c <_vscanf_core.constprop.0+0x11e>
- len_mod = 2;
- d62: 4789 li a5,2
- char spec = *p++;
- d64: 00244c03 lbu s8,2(s0)
- p++;
- d68: 00240b93 addi s7,s0,2
- len_mod = 2;
- d6c: ec3e sd a5,24(sp)
- d6e: bbfd j b6c <_vscanf_core.constprop.0+0x11e>
- d70: 100c0763 beqz s8,e7e <_vscanf_core.constprop.0+0x430>
- d74: fbbc079b addiw a5,s8,-69
- d78: 0ff7f793 zext.b a5,a5
- d7c: 4689 li a3,2
- d7e: eef6e2e3 bltu a3,a5,c62 <_vscanf_core.constprop.0+0x214>
- _skip_space(ctx);
- d82: 856e mv a0,s11
- d84: f8ea sd s10,112(sp)
- d86: c55ff0ef jal 9da <_skip_space>
- if (ctx->ungotten >= 0)
- d8a: 018da783 lw a5,24(s11)
- d8e: 1207dd63 bgez a5,ec8 <_vscanf_core.constprop.0+0x47a>
- d92: 856e mv a0,s11
- d94: c01ff0ef jal 994 <_in_char.part.0>
- if (c == '-' || c == '+')
- d98: fd55069b addiw a3,a0,-43
- d9c: ffd6f613 andi a2,a3,-3
- da0: 2601 sext.w a2,a2
- da2: 87aa mv a5,a0
- da4: 12060c63 beqz a2,edc <_vscanf_core.constprop.0+0x48e>
- while (c != -1 && i < 63)
- da8: 567d li a2,-1
- daa: 16c50963 beq a0,a2,f1c <_vscanf_core.constprop.0+0x4ce>
- dae: fce6 sd s9,120(sp)
- int i = 0, c = _in_char(ctx);
- db0: 4d01 li s10,0
- db2: 80000937 lui s2,0x80000
- db6: 197d addi s2,s2,-1 # ffffffff7fffffff <_ZSt4cerr+0xffffffff7fff8687>
- db8: 0932 slli s2,s2,0xc
- dba: 80194913 xori s2,s2,-2047
- dbe: 093e slli s2,s2,0xf
- dc0: 02010813 addi a6,sp,32
- dc4: 01a80cb3 add s9,a6,s10
- dc8: 03a00c13 li s8,58
- dcc: 1935 addi s2,s2,-19
- dce: a831 j dea <_vscanf_core.constprop.0+0x39c>
- dd0: bc5ff0ef jal 994 <_in_char.part.0>
- while (c != -1 && i < 63)
- dd4: 577d li a4,-1
- dd6: 87aa mv a5,a0
- dd8: 2ee50563 beq a0,a4,10c2 <_vscanf_core.constprop.0+0x674>
- ddc: 03f00713 li a4,63
- de0: 0c85 addi s9,s9,1
- de2: 1eed0e63 beq s10,a4,fde <_vscanf_core.constprop.0+0x590>
- de6: fd57869b addiw a3,a5,-43
- int c = ctx->ungotten;
- dea: 00d95633 srl a2,s2,a3
- dee: 856e mv a0,s11
- df0: 8a05 andi a2,a2,1
- df2: 1edc6663 bltu s8,a3,fde <_vscanf_core.constprop.0+0x590>
- df6: 1e060463 beqz a2,fde <_vscanf_core.constprop.0+0x590>
- num_buf[i++] = (char)c;
- dfa: 00fc8023 sb a5,0(s9)
- if (ctx->ungotten >= 0)
- dfe: 018da783 lw a5,24(s11)
- num_buf[i++] = (char)c;
- e02: 2d05 addiw s10,s10,1
- if (ctx->ungotten >= 0)
- e04: fc07c6e3 bltz a5,dd0 <_vscanf_core.constprop.0+0x382>
- ctx->ungotten = -1;
- e08: 577d li a4,-1
- e0a: 00edac23 sw a4,24(s11)
- while (c != -1 && i < 63)
- e0e: b7f9 j ddc <_vscanf_core.constprop.0+0x38e>
- if (*p == 'h')
- e10: 00144c03 lbu s8,1(s0)
- int len_mod = 0;
- e14: ec02 sd zero,24(sp)
- if (*p == 'h')
- e16: d4bc1be3 bne s8,a1,b6c <_vscanf_core.constprop.0+0x11e>
- char spec = *p++;
- e1a: 00244c03 lbu s8,2(s0)
- p++;
- e1e: 00240b93 addi s7,s0,2
- e22: b3a9 j b6c <_vscanf_core.constprop.0+0x11e>
- e24: fce6 sd s9,120(sp)
- e26: f8ea sd s10,112(sp)
- int count = (width > 0) ? width : 1;
- e28: 00090c1b sext.w s8,s2
- e2c: 0d205a63 blez s2,f00 <_vscanf_core.constprop.0+0x4b2>
- char *buf = suppress ? NULL : va_arg(ap, char *);
- e30: 4d01 li s10,0
- e32: 06098d63 beqz s3,eac <_vscanf_core.constprop.0+0x45e>
- for (int i = 0; i < count; i++)
- e36: 9c6a add s8,s8,s10
- if (c == -1)
- e38: 5cfd li s9,-1
- if (ctx->ungotten >= 0)
- e3a: 018da783 lw a5,24(s11)
- ctx->ungotten = -1;
- e3e: 856e mv a0,s11
- if (ctx->ungotten >= 0)
- e40: 0207dc63 bgez a5,e78 <_vscanf_core.constprop.0+0x42a>
- e44: b51ff0ef jal 994 <_in_char.part.0>
- e48: 87aa mv a5,a0
- if (c == -1)
- e4a: 0b950d63 beq a0,s9,f04 <_vscanf_core.constprop.0+0x4b6>
- if (!suppress)
- e4e: 00099463 bnez s3,e56 <_vscanf_core.constprop.0+0x408>
- buf[i] = (char)c;
- e52: 00fd0023 sb a5,0(s10)
- for (int i = 0; i < count; i++)
- e56: 0d05 addi s10,s10,1
- e58: ffac11e3 bne s8,s10,e3a <_vscanf_core.constprop.0+0x3ec>
- while (*p)
- e5c: 001bc783 lbu a5,1(s7)
- if (!suppress)
- e60: 00099363 bnez s3,e66 <_vscanf_core.constprop.0+0x418>
- assigned++;
- e64: 2b05 addiw s6,s6,1
- e66: 794a ld s2,176(sp)
- e68: 79aa ld s3,168(sp)
- e6a: 6baa ld s7,136(sp)
- e6c: 6c0a ld s8,128(sp)
- e6e: 7ce6 ld s9,120(sp)
- e70: 7d46 ld s10,112(sp)
- while (*p)
- e72: c00793e3 bnez a5,a78 <_vscanf_core.constprop.0+0x2a>
- e76: b935 j ab2 <_vscanf_core.constprop.0+0x64>
- ctx->ungotten = -1;
- e78: 019dac23 sw s9,24(s11)
- if (c == -1)
- e7c: bfc9 j e4e <_vscanf_core.constprop.0+0x400>
- e7e: 640e ld s0,192(sp)
- e80: 74ea ld s1,184(sp)
- e82: 794a ld s2,176(sp)
- e84: 79aa ld s3,168(sp)
- e86: 7a0a ld s4,160(sp)
- e88: 6aea ld s5,152(sp)
- e8a: 6baa ld s7,136(sp)
- e8c: 6c0a ld s8,128(sp)
- e8e: 7da6 ld s11,104(sp)
- e90: b135 j abc <_vscanf_core.constprop.0+0x6e>
- int width = -1;
- e92: 597d li s2,-1
- e94: b975 j b50 <_vscanf_core.constprop.0+0x102>
- if (!suppress)
- e96: 3c099c63 bnez s3,126e <_vscanf_core.constprop.0+0x820>
- buf[i] = '\0';
- e9a: 67e2 ld a5,24(sp)
- e9c: 01a786b3 add a3,a5,s10
- ea0: 00068023 sb zero,0(a3)
- while (*p)
- ea4: 001bc783 lbu a5,1(s7)
- assigned++;
- ea8: 2b05 addiw s6,s6,1
- eaa: bf75 j e66 <_vscanf_core.constprop.0+0x418>
- char *buf = suppress ? NULL : va_arg(ap, char *);
- eac: 67a2 ld a5,8(sp)
- eae: 0007bd03 ld s10,0(a5)
- eb2: 07a1 addi a5,a5,8
- eb4: e43e sd a5,8(sp)
- eb6: b741 j e36 <_vscanf_core.constprop.0+0x3e8>
- ctx->ungotten = -1;
- eb8: 56fd li a3,-1
- eba: 00ddac23 sw a3,24(s11)
- while (c != -1 && !isspace(c))
- ebe: bb11 j bd2 <_vscanf_core.constprop.0+0x184>
- ctx->ungotten = -1;
- ec0: 56fd li a3,-1
- ec2: 00ddac23 sw a3,24(s11)
- return c;
- ec6: b3d1 j c8a <_vscanf_core.constprop.0+0x23c>
- if (c == '-' || c == '+')
- ec8: fd57869b addiw a3,a5,-43
- ecc: ffd6f613 andi a2,a3,-3
- ctx->ungotten = -1;
- ed0: 55fd li a1,-1
- ed2: 00bdac23 sw a1,24(s11)
- if (c == '-' || c == '+')
- ed6: 2601 sext.w a2,a2
- ed8: ec061be3 bnez a2,dae <_vscanf_core.constprop.0+0x360>
- num_buf[i++] = (char)c;
- edc: 02f10023 sb a5,32(sp)
- if (ctx->ungotten >= 0)
- ee0: 018da783 lw a5,24(s11)
- ee4: 2207da63 bgez a5,1118 <_vscanf_core.constprop.0+0x6ca>
- ee8: 856e mv a0,s11
- eea: aabff0ef jal 994 <_in_char.part.0>
- while (c != -1 && i < 63)
- eee: 567d li a2,-1
- ef0: 87aa mv a5,a0
- num_buf[i++] = (char)c;
- ef2: 4d05 li s10,1
- ef4: fd55069b addiw a3,a0,-43
- while (c != -1 && i < 63)
- ef8: 3ac50163 beq a0,a2,129a <_vscanf_core.constprop.0+0x84c>
- efc: fce6 sd s9,120(sp)
- efe: bd55 j db2 <_vscanf_core.constprop.0+0x364>
- int count = (width > 0) ? width : 1;
- f00: 4c05 li s8,1
- f02: b73d j e30 <_vscanf_core.constprop.0+0x3e2>
- f04: 640e ld s0,192(sp)
- f06: 74ea ld s1,184(sp)
- f08: 794a ld s2,176(sp)
- f0a: 79aa ld s3,168(sp)
- f0c: 7a0a ld s4,160(sp)
- f0e: 6aea ld s5,152(sp)
- f10: 6baa ld s7,136(sp)
- f12: 6c0a ld s8,128(sp)
- f14: 7ce6 ld s9,120(sp)
- f16: 7d46 ld s10,112(sp)
- f18: 7da6 ld s11,104(sp)
- f1a: b64d j abc <_vscanf_core.constprop.0+0x6e>
- f1c: 640e ld s0,192(sp)
- f1e: 74ea ld s1,184(sp)
- f20: 794a ld s2,176(sp)
- f22: 79aa ld s3,168(sp)
- f24: 7a0a ld s4,160(sp)
- f26: 6aea ld s5,152(sp)
- f28: 6baa ld s7,136(sp)
- f2a: 6c0a ld s8,128(sp)
- f2c: 7d46 ld s10,112(sp)
- f2e: 7da6 ld s11,104(sp)
- f30: b671 j abc <_vscanf_core.constprop.0+0x6e>
- ctx->ungotten = -1;
- f32: 018dac23 sw s8,24(s11)
- while (c != -1 && !isspace(c))
- f36: b9e5 j c2e <_vscanf_core.constprop.0+0x1e0>
- ctx->ungotten = -1;
- f38: 57fd li a5,-1
- f3a: 00fdac23 sw a5,24(s11)
- while (c != -1 && i < 63)
- f3e: bbd9 j d14 <_vscanf_core.constprop.0+0x2c6>
- int hex = (base == 16 || base == 0) && ((c >= 'a' && c <= 'f') || (c >= 'A' && c <= 'F'));
- f40: f9f3069b addiw a3,t1,-97
- f44: 4795 li a5,5
- f46: 06d7f263 bgeu a5,a3,faa <_vscanf_core.constprop.0+0x55c>
- f4a: fbf3031b addiw t1,t1,-65
- f4e: 4795 li a5,5
- f50: 0467fd63 bgeu a5,t1,faa <_vscanf_core.constprop.0+0x55c>
- int x = (c == 'x' || c == 'X');
- f54: 07800693 li a3,120
- f58: 18d50763 beq a0,a3,10e6 <_vscanf_core.constprop.0+0x698>
- f5c: fa850693 addi a3,a0,-88
- f60: 0016b693 seqz a3,a3
- if (base == 0 && i == 1 && num_buf[0] == '0' && x)
- f64: 4301 li t1,0
- f66: 32061663 bnez a2,1292 <_vscanf_core.constprop.0+0x844>
- f6a: 4785 li a5,1
- f6c: 4601 li a2,0
- f6e: d6fd1ce3 bne s10,a5,ce6 <_vscanf_core.constprop.0+0x298>
- f72: 02014e03 lbu t3,32(sp)
- f76: 03000793 li a5,48
- f7a: d6fe16e3 bne t3,a5,ce6 <_vscanf_core.constprop.0+0x298>
- f7e: d60684e3 beqz a3,ce6 <_vscanf_core.constprop.0+0x298>
- base = 16;
- f82: 4641 li a2,16
- if (width > 0 && i >= width)
- f84: d7a919e3 bne s2,s10,cf6 <_vscanf_core.constprop.0+0x2a8>
- f88: bb59 j d1e <_vscanf_core.constprop.0+0x2d0>
- int hex = (base == 16 || base == 0) && ((c >= 'a' && c <= 'f') || (c >= 'A' && c <= 'F'));
- f8a: f9f3069b addiw a3,t1,-97
- f8e: 4795 li a5,5
- f90: 02d7f263 bgeu a5,a3,fb4 <_vscanf_core.constprop.0+0x566>
- f94: fbf3031b addiw t1,t1,-65
- f98: 0467f063 bgeu a5,t1,fd8 <_vscanf_core.constprop.0+0x58a>
- int x = (c == 'x' || c == 'X');
- f9c: 07800693 li a3,120
- fa0: fad51ee3 bne a0,a3,f5c <_vscanf_core.constprop.0+0x50e>
- fa4: 4301 li t1,0
- fa6: 4685 li a3,1
- fa8: b7c9 j f6a <_vscanf_core.constprop.0+0x51c>
- int hex = (base == 16 || base == 0) && ((c >= 'a' && c <= 'f') || (c >= 'A' && c <= 'F'));
- faa: 4305 li t1,1
- int x = (c == 'x' || c == 'X');
- fac: 4681 li a3,0
- if (width > 0 && i >= width)
- fae: d3204ee3 bgtz s2,cea <_vscanf_core.constprop.0+0x29c>
- fb2: bb35 j cee <_vscanf_core.constprop.0+0x2a0>
- int x = (c == 'x' || c == 'X');
- fb4: 4681 li a3,0
- int hex = (base == 16 || base == 0) && ((c >= 'a' && c <= 'f') || (c >= 'A' && c <= 'F'));
- fb6: 4305 li t1,1
- if (width > 0 && i >= width)
- fb8: d32049e3 bgtz s2,cea <_vscanf_core.constprop.0+0x29c>
- fbc: bb0d j cee <_vscanf_core.constprop.0+0x2a0>
- fbe: 4301 li t1,0
- int x = (c == 'x' || c == 'X');
- fc0: 4685 li a3,1
- if (width > 0 && i >= width)
- fc2: d32044e3 bgtz s2,cea <_vscanf_core.constprop.0+0x29c>
- fc6: bb05 j cf6 <_vscanf_core.constprop.0+0x2a8>
- if (!suppress)
- fc8: c8099be3 bnez s3,c5e <_vscanf_core.constprop.0+0x210>
- buf[i] = '\0';
- fcc: 67e2 ld a5,24(sp)
- fce: 00078023 sb zero,0(a5)
- ctx->ungotten = c;
- fd2: 00adac23 sw a0,24(s11)
- if (i > 0 && !suppress)
- fd6: b171 j c62 <_vscanf_core.constprop.0+0x214>
- int x = (c == 'x' || c == 'X');
- fd8: 4681 li a3,0
- int hex = (base == 16 || base == 0) && ((c >= 'a' && c <= 'f') || (c >= 'A' && c <= 'F'));
- fda: 4305 li t1,1
- fdc: b779 j f6a <_vscanf_core.constprop.0+0x51c>
- num_buf[i] = '\0';
- fde: 040d0713 addi a4,s10,64
- fe2: 1014 addi a3,sp,32
- fe4: 96ba add a3,a3,a4
- fe6: fc068023 sb zero,-64(a3)
- ctx->ungotten = c;
- fea: 00fdac23 sw a5,24(s11)
- if (i == 0)
- fee: f00d0be3 beqz s10,f04 <_vscanf_core.constprop.0+0x4b6>
- ff2: 7ce6 ld s9,120(sp)
- if (!suppress)
- ff4: d40992e3 bnez s3,d38 <_vscanf_core.constprop.0+0x2ea>
- if (*str == '-')
- ff8: 02014603 lbu a2,32(sp)
- ffc: 02d00793 li a5,45
- 1000: 1af60963 beq a2,a5,11b2 <_vscanf_core.constprop.0+0x764>
- else if (*str == '+')
- 1004: 02b00793 li a5,43
- 1008: 20f60a63 beq a2,a5,121c <_vscanf_core.constprop.0+0x7ce>
- 100c: 00005797 auipc a5,0x5
- 1010: 8e47b587 fld fa1,-1820(a5) # 58f0 <STDIN_FD+0x10>
- 1014: 101c addi a5,sp,32
- while (*str >= '0' && *str <= '9')
- 1016: fd06069b addiw a3,a2,-48
- 101a: 0ff6f513 zext.b a0,a3
- 101e: 45a5 li a1,9
- 1020: f20007d3 fmv.d.x fa5,zero
- 1024: 02a5e463 bltu a1,a0,104c <_vscanf_core.constprop.0+0x5fe>
- 1028: 00005717 auipc a4,0x5
- 102c: 8d073707 fld fa4,-1840(a4) # 58f8 <STDIN_FD+0x18>
- 1030: 4525 li a0,9
- 1032: 0017c603 lbu a2,1(a5)
- val = val * 10.0 + (*str - '0');
- 1036: d20686d3 fcvt.d.w fa3,a3
- str++;
- 103a: 0785 addi a5,a5,1
- while (*str >= '0' && *str <= '9')
- 103c: fd06069b addiw a3,a2,-48
- 1040: 0ff6f593 zext.b a1,a3
- val = val * 10.0 + (*str - '0');
- 1044: 6ae7f7c3 fmadd.d fa5,fa5,fa4,fa3
- while (*str >= '0' && *str <= '9')
- 1048: feb575e3 bgeu a0,a1,1032 <_vscanf_core.constprop.0+0x5e4>
- if (*str == '.')
- 104c: 02e00693 li a3,46
- 1050: 16d60a63 beq a2,a3,11c4 <_vscanf_core.constprop.0+0x776>
- if (*str == 'e' || *str == 'E')
- 1054: 0007c683 lbu a3,0(a5)
- 1058: 0df6f693 andi a3,a3,223
- 105c: 04500613 li a2,69
- 1060: 0cc68463 beq a3,a2,1128 <_vscanf_core.constprop.0+0x6da>
- *va_arg(ap, double *) = val;
- 1064: 6722 ld a4,8(sp)
- if (len_mod == 1)
- 1066: 4685 li a3,1
- return sign * val;
- 1068: 12b7f7d3 fmul.d fa5,fa5,fa1
- *va_arg(ap, double *) = val;
- 106c: 631c ld a5,0(a4)
- *va_arg(ap, int64 *) = val;
- 106e: 0721 addi a4,a4,8
- 1070: e43a sd a4,8(sp)
- if (len_mod == 1)
- 1072: 6762 ld a4,24(sp)
- 1074: 18d70b63 beq a4,a3,120a <_vscanf_core.constprop.0+0x7bc>
- *va_arg(ap, float *) = (float)val;
- 1078: 4017f7d3 fcvt.s.d fa5,fa5
- assigned++;
- 107c: 2b05 addiw s6,s6,1
- *va_arg(ap, float *) = (float)val;
- 107e: 00f7a027 fsw fa5,0(a5)
- 1082: b95d j d38 <_vscanf_core.constprop.0+0x2ea>
- num_buf[i++] = (char)c;
- 1084: 02a10023 sb a0,32(sp)
- if (ctx->ungotten >= 0)
- 1088: 018da503 lw a0,24(s11)
- 108c: 06055463 bgez a0,10f4 <_vscanf_core.constprop.0+0x6a6>
- 1090: 856e mv a0,s11
- 1092: 903ff0ef jal 994 <_in_char.part.0>
- num_buf[i++] = (char)c;
- 1096: 4d05 li s10,1
- 1098: b101 j c98 <_vscanf_core.constprop.0+0x24a>
- int64 val = strtoll(num_buf, NULL, base);
- 109a: 4581 li a1,0
- 109c: 1008 addi a0,sp,32
- 109e: 696030ef jal 4734 <strtoll>
- *va_arg(ap, int64 *) = val;
- 10a2: 67a2 ld a5,8(sp)
- if (len_mod == 2)
- 10a4: 6762 ld a4,24(sp)
- 10a6: 4689 li a3,2
- *va_arg(ap, int64 *) = val;
- 10a8: 07a1 addi a5,a5,8
- if (len_mod == 2)
- 10aa: 16d70363 beq a4,a3,1210 <_vscanf_core.constprop.0+0x7c2>
- *va_arg(ap, int64 *) = val;
- 10ae: 6722 ld a4,8(sp)
- else if (len_mod == 1)
- 10b0: 4605 li a2,1
- *va_arg(ap, int64 *) = val;
- 10b2: 6314 ld a3,0(a4)
- else if (len_mod == 1)
- 10b4: 6762 ld a4,24(sp)
- 10b6: 16c70163 beq a4,a2,1218 <_vscanf_core.constprop.0+0x7ca>
- *va_arg(ap, int *) = (int)val;
- 10ba: c288 sw a0,0(a3)
- assigned++;
- 10bc: 2b05 addiw s6,s6,1
- 10be: e43e sd a5,8(sp)
- 10c0: b9a5 j d38 <_vscanf_core.constprop.0+0x2ea>
- num_buf[i] = '\0';
- 10c2: 040d0793 addi a5,s10,64
- 10c6: 1018 addi a4,sp,32
- 10c8: 00e785b3 add a1,a5,a4
- 10cc: fc058023 sb zero,-64(a1)
- if (i == 0)
- 10d0: 7ce6 ld s9,120(sp)
- 10d2: b70d j ff4 <_vscanf_core.constprop.0+0x5a6>
- num_buf[i] = '\0';
- 10d4: 040d0793 addi a5,s10,64
- 10d8: 1018 addi a4,sp,32
- 10da: 00e78833 add a6,a5,a4
- 10de: fc080023 sb zero,-64(a6)
- if (i == 0)
- 10e2: 7ce6 ld s9,120(sp)
- 10e4: b981 j d34 <_vscanf_core.constprop.0+0x2e6>
- int x = (c == 'x' || c == 'X');
- 10e6: 4301 li t1,0
- 10e8: 4685 li a3,1
- if (width > 0 && i >= width)
- 10ea: c12040e3 bgtz s2,cea <_vscanf_core.constprop.0+0x29c>
- 10ee: b101 j cee <_vscanf_core.constprop.0+0x2a0>
- int assigned = 0;
- 10f0: 4b01 li s6,0
- 10f2: b2e9 j abc <_vscanf_core.constprop.0+0x6e>
- ctx->ungotten = -1;
- 10f4: 56fd li a3,-1
- 10f6: fce6 sd s9,120(sp)
- 10f8: 00ddac23 sw a3,24(s11)
- int base = (spec == 'x') ? 16 : (spec == 'i' ? 0 : 10);
- 10fc: 07800693 li a3,120
- 1100: 4641 li a2,16
- num_buf[i++] = (char)c;
- 1102: 4d05 li s10,1
- int base = (spec == 'x') ? 16 : (spec == 'i' ? 0 : 10);
- 1104: badc09e3 beq s8,a3,cb6 <_vscanf_core.constprop.0+0x268>
- 1108: 06900693 li a3,105
- 110c: 4629 li a2,10
- num_buf[i++] = (char)c;
- 110e: 4d05 li s10,1
- int base = (spec == 'x') ? 16 : (spec == 'i' ? 0 : 10);
- 1110: badc13e3 bne s8,a3,cb6 <_vscanf_core.constprop.0+0x268>
- 1114: 4601 li a2,0
- 1116: b645 j cb6 <_vscanf_core.constprop.0+0x268>
- ctx->ungotten = -1;
- 1118: 56fd li a3,-1
- 111a: fce6 sd s9,120(sp)
- 111c: 00ddac23 sw a3,24(s11)
- num_buf[i++] = (char)c;
- 1120: 4d05 li s10,1
- 1122: fd57869b addiw a3,a5,-43
- 1126: b171 j db2 <_vscanf_core.constprop.0+0x364>
- if (*str == '-')
- 1128: 0017c583 lbu a1,1(a5)
- 112c: 02d00693 li a3,45
- 1130: 0ed58f63 beq a1,a3,122e <_vscanf_core.constprop.0+0x7e0>
- else if (*str == '+')
- 1134: 02b00693 li a3,43
- 1138: 10d58e63 beq a1,a3,1254 <_vscanf_core.constprop.0+0x806>
- while (*str >= '0' && *str <= '9')
- 113c: fd05861b addiw a2,a1,-48
- 1140: 0ff67513 zext.b a0,a2
- 1144: 45a5 li a1,9
- str++;
- 1146: 00178693 addi a3,a5,1
- int esign = 1;
- 114a: 4805 li a6,1
- while (*str >= '0' && *str <= '9')
- 114c: 04a5ec63 bltu a1,a0,11a4 <_vscanf_core.constprop.0+0x756>
- 1150: 4525 li a0,9
- 1152: 0016c583 lbu a1,1(a3)
- eval = eval * 10 + (*str - '0');
- 1156: 0029979b slliw a5,s3,0x2
- 115a: 013787bb addw a5,a5,s3
- 115e: 0017979b slliw a5,a5,0x1
- 1162: 00f609bb addw s3,a2,a5
- while (*str >= '0' && *str <= '9')
- 1166: fd05861b addiw a2,a1,-48
- 116a: 0ff67593 zext.b a1,a2
- str++;
- 116e: 0685 addi a3,a3,1
- while (*str >= '0' && *str <= '9')
- 1170: feb571e3 bgeu a0,a1,1152 <_vscanf_core.constprop.0+0x704>
- while (eval--)
- 1174: fff9879b addiw a5,s3,-1
- 1178: 12098463 beqz s3,12a0 <_vscanf_core.constprop.0+0x852>
- double p = 1.0;
- 117c: 00004717 auipc a4,0x4
- 1180: 77473687 fld fa3,1908(a4) # 58f0 <STDIN_FD+0x10>
- 1184: 00004717 auipc a4,0x4
- 1188: 77473707 fld fa4,1908(a4) # 58f8 <STDIN_FD+0x18>
- while (eval--)
- 118c: 56fd li a3,-1
- 118e: 37fd addiw a5,a5,-1
- p *= 10.0;
- 1190: 12e6f6d3 fmul.d fa3,fa3,fa4
- while (eval--)
- 1194: fed79de3 bne a5,a3,118e <_vscanf_core.constprop.0+0x740>
- if (esign == 1)
- 1198: 4785 li a5,1
- 119a: 00f80963 beq a6,a5,11ac <_vscanf_core.constprop.0+0x75e>
- val /= p;
- 119e: 1ad7f7d3 fdiv.d fa5,fa5,fa3
- 11a2: b5c9 j 1064 <_vscanf_core.constprop.0+0x616>
- double p = 1.0;
- 11a4: 00004797 auipc a5,0x4
- 11a8: 74c7b687 fld fa3,1868(a5) # 58f0 <STDIN_FD+0x10>
- val *= p;
- 11ac: 12d7f7d3 fmul.d fa5,fa5,fa3
- 11b0: bd55 j 1064 <_vscanf_core.constprop.0+0x616>
- while (*str >= '0' && *str <= '9')
- 11b2: 00004797 auipc a5,0x4
- 11b6: 7367b587 fld fa1,1846(a5) # 58e8 <STDIN_FD+0x8>
- 11ba: 02114603 lbu a2,33(sp)
- str++;
- 11be: 02110793 addi a5,sp,33
- 11c2: bd91 j 1016 <_vscanf_core.constprop.0+0x5c8>
- while (*str >= '0' && *str <= '9')
- 11c4: 0017c683 lbu a3,1(a5)
- 11c8: 45a5 li a1,9
- str++;
- 11ca: 0785 addi a5,a5,1
- while (*str >= '0' && *str <= '9')
- 11cc: fd06861b addiw a2,a3,-48
- 11d0: 0ff67513 zext.b a0,a2
- 11d4: e8a5e2e3 bltu a1,a0,1058 <_vscanf_core.constprop.0+0x60a>
- double div = 10.0;
- 11d8: 00004717 auipc a4,0x4
- 11dc: 72073707 fld fa4,1824(a4) # 58f8 <STDIN_FD+0x18>
- 11e0: 22e70653 fmv.d fa2,fa4
- while (*str >= '0' && *str <= '9')
- 11e4: 4525 li a0,9
- val += (*str - '0') / div;
- 11e6: d20606d3 fcvt.d.w fa3,a2
- while (*str >= '0' && *str <= '9')
- 11ea: 0017c683 lbu a3,1(a5)
- str++;
- 11ee: 0785 addi a5,a5,1
- val += (*str - '0') / div;
- 11f0: 1ac6f6d3 fdiv.d fa3,fa3,fa2
- while (*str >= '0' && *str <= '9')
- 11f4: fd06861b addiw a2,a3,-48
- 11f8: 0ff67593 zext.b a1,a2
- div *= 10.0;
- 11fc: 12e67653 fmul.d fa2,fa2,fa4
- val += (*str - '0') / div;
- 1200: 02d7f7d3 fadd.d fa5,fa5,fa3
- while (*str >= '0' && *str <= '9')
- 1204: feb571e3 bgeu a0,a1,11e6 <_vscanf_core.constprop.0+0x798>
- 1208: bd81 j 1058 <_vscanf_core.constprop.0+0x60a>
- *va_arg(ap, double *) = val;
- 120a: a39c fsd fa5,0(a5)
- assigned++;
- 120c: 2b05 addiw s6,s6,1
- 120e: b62d j d38 <_vscanf_core.constprop.0+0x2ea>
- *va_arg(ap, int64 *) = val;
- 1210: 6722 ld a4,8(sp)
- 1212: 6314 ld a3,0(a4)
- 1214: e288 sd a0,0(a3)
- 1216: b55d j 10bc <_vscanf_core.constprop.0+0x66e>
- *va_arg(ap, long *) = (long)val;
- 1218: e288 sd a0,0(a3)
- 121a: b54d j 10bc <_vscanf_core.constprop.0+0x66e>
- while (*str >= '0' && *str <= '9')
- 121c: 00004797 auipc a5,0x4
- 1220: 6d47b587 fld fa1,1748(a5) # 58f0 <STDIN_FD+0x10>
- 1224: 02114603 lbu a2,33(sp)
- str++;
- 1228: 02110793 addi a5,sp,33
- 122c: b3ed j 1016 <_vscanf_core.constprop.0+0x5c8>
- while (*str >= '0' && *str <= '9')
- 122e: 0027c583 lbu a1,2(a5)
- str++;
- 1232: 00278693 addi a3,a5,2
- while (*str >= '0' && *str <= '9')
- 1236: 4525 li a0,9
- 1238: fd05861b addiw a2,a1,-48
- 123c: 0ff67793 zext.b a5,a2
- esign = -1;
- 1240: 587d li a6,-1
- while (*str >= '0' && *str <= '9')
- 1242: f0f577e3 bgeu a0,a5,1150 <_vscanf_core.constprop.0+0x702>
- double p = 1.0;
- 1246: 00004797 auipc a5,0x4
- 124a: 6aa7b687 fld fa3,1706(a5) # 58f0 <STDIN_FD+0x10>
- val /= p;
- 124e: 1ad7f7d3 fdiv.d fa5,fa5,fa3
- 1252: bd09 j 1064 <_vscanf_core.constprop.0+0x616>
- while (*str >= '0' && *str <= '9')
- 1254: 0027c583 lbu a1,2(a5)
- str++;
- 1258: 00278693 addi a3,a5,2
- while (*str >= '0' && *str <= '9')
- 125c: 4525 li a0,9
- 125e: fd05861b addiw a2,a1,-48
- 1262: 0ff67793 zext.b a5,a2
- 1266: f2f56fe3 bltu a0,a5,11a4 <_vscanf_core.constprop.0+0x756>
- int esign = 1;
- 126a: 4805 li a6,1
- 126c: b5d5 j 1150 <_vscanf_core.constprop.0+0x702>
- while (*p)
- 126e: 001bc783 lbu a5,1(s7)
- 1272: bed5 j e66 <_vscanf_core.constprop.0+0x418>
- if (!suppress)
- 1274: 9e0997e3 bnez s3,c62 <_vscanf_core.constprop.0+0x214>
- buf[i] = '\0';
- 1278: 67e2 ld a5,24(sp)
- 127a: 00078023 sb zero,0(a5)
- 127e: b2d5 j c62 <_vscanf_core.constprop.0+0x214>
- num_buf[i] = '\0';
- 1280: 040d0793 addi a5,s10,64
- 1284: 1018 addi a4,sp,32
- 1286: 97ba add a5,a5,a4
- 1288: fc078023 sb zero,-64(a5)
- if (i == 0)
- 128c: aa0d14e3 bnez s10,d34 <_vscanf_core.constprop.0+0x2e6>
- 1290: b171 j f1c <_vscanf_core.constprop.0+0x4ce>
- 1292: 4641 li a2,16
- if (width > 0 && i >= width)
- 1294: a5204be3 bgtz s2,cea <_vscanf_core.constprop.0+0x29c>
- 1298: bc99 j cee <_vscanf_core.constprop.0+0x2a0>
- num_buf[i] = '\0';
- 129a: 020100a3 sb zero,33(sp)
- if (i == 0)
- 129e: bb99 j ff4 <_vscanf_core.constprop.0+0x5a6>
- double p = 1.0;
- 12a0: 00004797 auipc a5,0x4
- 12a4: 6507b687 fld fa3,1616(a5) # 58f0 <STDIN_FD+0x10>
- 12a8: bdc5 j 1198 <_vscanf_core.constprop.0+0x74a>
- buf[i] = '\0';
- 12aa: 67e2 ld a5,24(sp)
- 12ac: 01a786b3 add a3,a5,s10
- 12b0: 00068023 sb zero,0(a3)
- ctx->ungotten = c;
- 12b4: 00adac23 sw a0,24(s11)
- while (*p)
- 12b8: 001bc783 lbu a5,1(s7)
- 12bc: b6f5 j ea8 <_vscanf_core.constprop.0+0x45a>
-
-00000000000012be <_out_char>:
-{
- 12be: 7179 addi sp,sp,-48
- 12c0: ec26 sd s1,24(sp)
- if (ctx->stream)
- 12c2: 6d04 ld s1,24(a0)
-{
- 12c4: f022 sd s0,32(sp)
- 12c6: f406 sd ra,40(sp)
- 12c8: 842a mv s0,a0
- 12ca: 872e mv a4,a1
- if (ctx->stream)
- 12cc: c0a1 beqz s1,130c <_out_char+0x4e>
- 12ce: e84a sd s2,16(sp)
- if (stream->buf_mode == 2)
- 12d0: 41c4a903 lw s2,1052(s1)
- 12d4: 4789 li a5,2
- 12d6: 04f90d63 beq s2,a5,1330 <_out_char+0x72>
- stream->buffer[stream->buf_write_pos++] = (char)c;
- 12da: 4104a783 lw a5,1040(s1)
- if (stream->buf_write_pos >= BUFSIZ)
- 12de: 3ff00693 li a3,1023
- stream->buffer[stream->buf_write_pos++] = (char)c;
- 12e2: 0017861b addiw a2,a5,1
- 12e6: 40c4a823 sw a2,1040(s1)
- 12ea: 97a6 add a5,a5,s1
- 12ec: 00b78823 sb a1,16(a5)
- if (stream->buf_write_pos >= BUFSIZ)
- 12f0: 08c6c063 blt a3,a2,1370 <_out_char+0xb2>
- else if (stream->buf_mode == 1 && c == '\n')
- 12f4: 4785 li a5,1
- 12f6: 04f90a63 beq s2,a5,134a <_out_char+0x8c>
- ctx->written++;
- 12fa: 681c ld a5,16(s0)
- 12fc: 6942 ld s2,16(sp)
-}
- 12fe: 70a2 ld ra,40(sp)
- ctx->written++;
- 1300: 0785 addi a5,a5,1
- 1302: e81c sd a5,16(s0)
-}
- 1304: 7402 ld s0,32(sp)
- 1306: 64e2 ld s1,24(sp)
- 1308: 6145 addi sp,sp,48
- 130a: 8082 ret
- if (ctx->limit > 0 && ctx->written < ctx->limit - 1)
- 130c: 6514 ld a3,8(a0)
- 130e: 691c ld a5,16(a0)
- 1310: ca89 beqz a3,1322 <_out_char+0x64>
- 1312: 16fd addi a3,a3,-1
- 1314: 00d7f763 bgeu a5,a3,1322 <_out_char+0x64>
- ctx->buf[ctx->written] = c;
- 1318: 6114 ld a3,0(a0)
- 131a: 97b6 add a5,a5,a3
- 131c: 00b78023 sb a1,0(a5)
- ctx->written++;
- 1320: 691c ld a5,16(a0)
- 1322: 0785 addi a5,a5,1
-}
- 1324: 70a2 ld ra,40(sp)
- ctx->written++;
- 1326: e81c sd a5,16(s0)
-}
- 1328: 7402 ld s0,32(sp)
- 132a: 64e2 ld s1,24(sp)
- 132c: 6145 addi sp,sp,48
- 132e: 8082 ret
- if (write(stream->fd, &ch, 1) != 1)
- 1330: 4088 lw a0,0(s1)
- 1332: 4605 li a2,1
- 1334: 00f10593 addi a1,sp,15
- char ch = (char)c;
- 1338: 00e107a3 sb a4,15(sp)
- if (write(stream->fd, &ch, 1) != 1)
- 133c: e8bfe0ef jal 1c6 <write>
- 1340: 4785 li a5,1
- 1342: faf50ce3 beq a0,a5,12fa <_out_char+0x3c>
- stream->error = 1;
- 1346: c49c sw a5,8(s1)
- return EOF;
- 1348: bf4d j 12fa <_out_char+0x3c>
- else if (stream->buf_mode == 1 && c == '\n')
- 134a: 47a9 li a5,10
- 134c: faf597e3 bne a1,a5,12fa <_out_char+0x3c>
- if (stream->buf_write_pos > 0)
- 1350: fac055e3 blez a2,12fa <_out_char+0x3c>
- int64 ret = write(stream->fd, stream->buffer, stream->buf_write_pos);
- 1354: 4088 lw a0,0(s1)
- 1356: 01048593 addi a1,s1,16
- 135a: e6dfe0ef jal 1c6 <write>
- if (ret < stream->buf_write_pos)
- 135e: 4104a783 lw a5,1040(s1)
- 1362: 02f55063 bge a0,a5,1382 <_out_char+0xc4>
- stream->error = 1;
- 1366: 0124a423 sw s2,8(s1)
- stream->buf_write_pos = 0;
- 136a: 4004a823 sw zero,1040(s1)
- return EOF;
- 136e: b771 j 12fa <_out_char+0x3c>
- int64 ret = write(stream->fd, stream->buffer, stream->buf_write_pos);
- 1370: 4088 lw a0,0(s1)
- 1372: 01048593 addi a1,s1,16
- 1376: e51fe0ef jal 1c6 <write>
- if (ret < stream->buf_write_pos)
- 137a: 4104a783 lw a5,1040(s1)
- 137e: 00f54563 blt a0,a5,1388 <_out_char+0xca>
- stream->buf_write_pos = 0;
- 1382: 4004a823 sw zero,1040(s1)
- 1386: bf95 j 12fa <_out_char+0x3c>
- stream->error = 1;
- 1388: 4785 li a5,1
- 138a: c49c sw a5,8(s1)
- stream->buf_write_pos = 0;
- 138c: 4004a823 sw zero,1040(s1)
- return EOF;
- 1390: b7ad j 12fa <_out_char+0x3c>
-
-0000000000001392 <stbsp_set_separators>:
- "75767778798081828384858687888990919293949596979899"
-};
-
-STBSP__PUBLICDEF void STB_SPRINTF_DECORATE(set_separators)(char pcomma, char pperiod)
-{
- stbsp__period = pperiod;
- 1392: 00005797 auipc a5,0x5
- 1396: 6ee78793 addi a5,a5,1774 # 6a80 <stbsp__digitpair>
- 139a: 0cb78623 sb a1,204(a5)
- stbsp__comma = pcomma;
- 139e: 0ca786a3 sb a0,205(a5)
-}
- 13a2: 8082 ret
-
-00000000000013a4 <stbsp_vsprintfcb>:
-
- return (stbsp__uint32)(sn - s);
-}
-
-STBSP__PUBLICDEF int STB_SPRINTF_DECORATE(vsprintfcb)(STBSP_SPRINTFCB *callback, void *user, char *buf, char const *fmt, va_list va)
-{
- 13a4: d1010113 addi sp,sp,-752
- // Check if the next 4 bytes contain %(0x25) or end of string.
- // Using the 'hasless' trick:
- // https://graphics.stanford.edu/~seander/bithacks.html#HasLessInWord
- stbsp__uint32 v, c;
- v = *(stbsp__uint32 *)f;
- c = (~v) & 0x80808080;
- 13a8: 808087b7 lui a5,0x80808
- if (((v ^ 0x25252525) - 0x01010101) & c)
- 13ac: 252523b7 lui t2,0x25252
- 13b0: 52538393 addi t2,t2,1317 # 25252525 <_ZSt4cerr+0x2524abad>
-{
- 13b4: 29913c23 sd s9,664(sp)
- 13b8: 29b13423 sd s11,648(sp)
- int tlen = 0;
- 13bc: 4c81 li s9,0
- if (((v ^ 0x25252525) - 0x01010101) & c)
- 13be: feff0db7 lui s11,0xfeff0
- c = (~v) & 0x80808080;
- 13c2: 08078793 addi a5,a5,128 # ffffffff80808080 <_ZSt4cerr+0xffffffff80800708>
-{
- 13c6: 2e813023 sd s0,736(sp)
- 13ca: 2c913c23 sd s1,728(sp)
- 13ce: 2d213823 sd s2,720(sp)
- 13d2: 2d313423 sd s3,712(sp)
- 13d6: 2b713423 sd s7,680(sp)
- 13da: 2b813023 sd s8,672(sp)
- 13de: 29a13823 sd s10,656(sp)
- 13e2: 2e113423 sd ra,744(sp)
- 13e6: 8d66 mv s10,s9
- 13e8: 8432 mv s0,a2
- 13ea: 8c9e mv s9,t2
- 13ec: 89aa mv s3,a0
- 13ee: e42e sd a1,8(sp)
- 13f0: 84b6 mv s1,a3
- 13f2: 8bba mv s7,a4
- 13f4: fc02 sd zero,56(sp)
- for (;;) {
- 13f6: 8932 mv s2,a2
- if (((v ^ 0x25252525) - 0x01010101) & c)
- 13f8: effd8d9b addiw s11,s11,-257 # fffffffffefefeff <_ZSt4cerr+0xfffffffffefe8587>
- goto schk1;
- if ((v - 0x01010101) & c)
- goto schk2;
- if (callback)
- if ((STB_SPRINTF_MIN - (int)(bf - buf)) < 4)
- 13fc: 20000c13 li s8,512
- 1400: 83be mv t2,a5
- while (((stbsp__uintptr)f) & 3) {
- 1402: 0034f793 andi a5,s1,3
- 1406: c7a9 beqz a5,1450 <stbsp_vsprintfcb+0xac>
- if (f[0] == '%')
- 1408: 0004c783 lbu a5,0(s1)
- 140c: 02500713 li a4,37
- 1410: 0ee78263 beq a5,a4,14f4 <stbsp_vsprintfcb+0x150>
- if (f[0] == 0)
- 1414: cbd9 beqz a5,14aa <stbsp_vsprintfcb+0x106>
- stbsp__chk_cb_buf(1);
- 1416: 02098663 beqz s3,1442 <stbsp_vsprintfcb+0x9e>
- 141a: 4124063b subw a2,s0,s2
- 141e: 1fe00713 li a4,510
- 1422: 02c75063 bge a4,a2,1442 <stbsp_vsprintfcb+0x9e>
- 1426: 65a2 ld a1,8(sp)
- 1428: 854a mv a0,s2
- 142a: e81e sd t2,16(sp)
- 142c: 00cd0d3b addw s10,s10,a2
- 1430: 9982 jalr s3
- 1432: 892a mv s2,a0
- 1434: e119 bnez a0,143a <stbsp_vsprintfcb+0x96>
- 1436: 0200106f j 2456 <stbsp_vsprintfcb+0x10b2>
- *bf++ = f[0];
- 143a: 0004c783 lbu a5,0(s1)
- stbsp__chk_cb_buf(1);
- 143e: 63c2 ld t2,16(sp)
- 1440: 842a mv s0,a0
- ++f;
- 1442: 0485 addi s1,s1,1
- *bf++ = f[0];
- 1444: 00f40023 sb a5,0(s0)
- while (((stbsp__uintptr)f) & 3) {
- 1448: 0034f793 andi a5,s1,3
- *bf++ = f[0];
- 144c: 0405 addi s0,s0,1
- while (((stbsp__uintptr)f) & 3) {
- 144e: ffcd bnez a5,1408 <stbsp_vsprintfcb+0x64>
- v = *(stbsp__uint32 *)f;
- 1450: 4094 lw a3,0(s1)
- c = (~v) & 0x80808080;
- 1452: fff6c793 not a5,a3
- if (((v ^ 0x25252525) - 0x01010101) & c)
- 1456: 0196c733 xor a4,a3,s9
- c = (~v) & 0x80808080;
- 145a: 0077f7b3 and a5,a5,t2
- if (((v ^ 0x25252525) - 0x01010101) & c)
- 145e: 01b7073b addw a4,a4,s11
- 1462: 8f7d and a4,a4,a5
- 1464: 2701 sext.w a4,a4
- 1466: f34d bnez a4,1408 <stbsp_vsprintfcb+0x64>
- if ((STB_SPRINTF_MIN - (int)(bf - buf)) < 4)
- 1468: 460d li a2,3
- 146a: a805 j 149a <stbsp_vsprintfcb+0xf6>
- if (callback)
- 146c: 00098863 beqz s3,147c <stbsp_vsprintfcb+0xd8>
- if ((STB_SPRINTF_MIN - (int)(bf - buf)) < 4)
- 1470: 412407b3 sub a5,s0,s2
- 1474: 40fc07bb subw a5,s8,a5
- 1478: f8f658e3 bge a2,a5,1408 <stbsp_vsprintfcb+0x64>
- bf[2] = f[2];
- bf[3] = f[3];
- } else
- #endif
- {
- *(stbsp__uint32 *)bf = v;
- 147c: c014 sw a3,0(s0)
- v = *(stbsp__uint32 *)f;
- 147e: 40d4 lw a3,4(s1)
- }
- bf += 4;
- 1480: 0411 addi s0,s0,4
- f += 4;
- 1482: 0491 addi s1,s1,4
- c = (~v) & 0x80808080;
- 1484: fff6c793 not a5,a3
- if (((v ^ 0x25252525) - 0x01010101) & c)
- 1488: 0196c733 xor a4,a3,s9
- c = (~v) & 0x80808080;
- 148c: 0077f7b3 and a5,a5,t2
- if (((v ^ 0x25252525) - 0x01010101) & c)
- 1490: 01b7073b addw a4,a4,s11
- 1494: 8f7d and a4,a4,a5
- 1496: 2701 sext.w a4,a4
- 1498: fb25 bnez a4,1408 <stbsp_vsprintfcb+0x64>
- if ((v - 0x01010101) & c)
- 149a: 01b6873b addw a4,a3,s11
- 149e: 8ff9 and a5,a5,a4
- 14a0: 2781 sext.w a5,a5
- 14a2: d7e9 beqz a5,146c <stbsp_vsprintfcb+0xc8>
- if (f[0] == 0)
- 14a4: 0004c783 lbu a5,0(s1)
- 14a8: f7bd bnez a5,1416 <stbsp_vsprintfcb+0x72>
-endfmt:
-
- if (!callback)
- *bf = 0;
- else
- stbsp__flush_cb();
- 14aa: 8cea mv s9,s10
- 14ac: 412404bb subw s1,s0,s2
- if (!callback)
- 14b0: 70098563 beqz s3,1bba <stbsp_vsprintfcb+0x816>
- stbsp__flush_cb();
- 14b4: 00905663 blez s1,14c0 <stbsp_vsprintfcb+0x11c>
- 14b8: 65a2 ld a1,8(sp)
- 14ba: 8626 mv a2,s1
- 14bc: 854a mv a0,s2
- 14be: 9982 jalr s3
- 14c0: 009c8cbb addw s9,s9,s1
-
-done:
- return tlen + (int)(bf - buf);
-}
- 14c4: 2e813083 ld ra,744(sp)
- 14c8: 2e013403 ld s0,736(sp)
- 14cc: 2d813483 ld s1,728(sp)
- 14d0: 2d013903 ld s2,720(sp)
- 14d4: 2c813983 ld s3,712(sp)
- 14d8: 2a813b83 ld s7,680(sp)
- 14dc: 2a013c03 ld s8,672(sp)
- 14e0: 29013d03 ld s10,656(sp)
- 14e4: 28813d83 ld s11,648(sp)
- 14e8: 8566 mv a0,s9
- 14ea: 29813c83 ld s9,664(sp)
- 14ee: 2f010113 addi sp,sp,752
- 14f2: 8082 ret
- 14f4: 2d413023 sd s4,704(sp)
- 14f8: 2b513c23 sd s5,696(sp)
- 14fc: 2b613823 sd s6,688(sp)
- tz = 0;
- 1500: 00248693 addi a3,s1,2
- fl = 0;
- 1504: 4e01 li t3,0
- switch (f[0]) {
- 1506: 03f00593 li a1,63
- 150a: 00004617 auipc a2,0x4
- 150e: d0660613 addi a2,a2,-762 # 5210 <_GLOBAL__sub_I__ZSt3cin+0x14a>
- 1512: fff6c783 lbu a5,-1(a3)
- 1516: fff68493 addi s1,a3,-1
- 151a: fe07871b addiw a4,a5,-32
- 151e: 0ff77713 zext.b a4,a4
- 1522: 00e5ec63 bltu a1,a4,153a <stbsp_vsprintfcb+0x196>
- 1526: 070a slli a4,a4,0x2
- 1528: 9732 add a4,a4,a2
- 152a: 4318 lw a4,0(a4)
- 152c: 9732 add a4,a4,a2
- 152e: 8702 jr a4
- if (f[0] == '*') {
- 1530: 0014c783 lbu a5,1(s1)
- fl |= STBSP__LEADINGZERO;
- 1534: 010e6e13 ori t3,t3,16
- ++f;
- 1538: 0485 addi s1,s1,1
- if (f[0] == '*') {
- 153a: 02a00713 li a4,42
- 153e: 0ce79163 bne a5,a4,1600 <stbsp_vsprintfcb+0x25c>
- fw = va_arg(va, stbsp__uint32);
- 1542: 000bab03 lw s6,0(s7)
- while ((f[0] >= '0') && (f[0] <= '9')) {
- 1546: 0014c783 lbu a5,1(s1)
- fw = va_arg(va, stbsp__uint32);
- 154a: 0ba1 addi s7,s7,8
- ++f;
- 154c: 0485 addi s1,s1,1
- if (f[0] == '.') {
- 154e: 02e00713 li a4,46
- pr = -1;
- 1552: 58fd li a7,-1
- if (f[0] == '.') {
- 1554: 0ee78663 beq a5,a4,1640 <stbsp_vsprintfcb+0x29c>
- switch (f[0]) {
- 1558: 04900713 li a4,73
- 155c: 10e78263 beq a5,a4,1660 <stbsp_vsprintfcb+0x2bc>
- 1560: f987871b addiw a4,a5,-104
- 1564: 0ff77713 zext.b a4,a4
- 1568: 46c9 li a3,18
- 156a: 02e6e063 bltu a3,a4,158a <stbsp_vsprintfcb+0x1e6>
- 156e: 00004697 auipc a3,0x4
- 1572: da268693 addi a3,a3,-606 # 5310 <_GLOBAL__sub_I__ZSt3cin+0x24a>
- 1576: 070a slli a4,a4,0x2
- 1578: 9736 add a4,a4,a3
- 157a: 4318 lw a4,0(a4)
- 157c: 9736 add a4,a4,a3
- 157e: 8702 jr a4
- if (f[0] == 'h')
- 1580: 0014c783 lbu a5,1(s1)
- fl |= (sizeof(ptrdiff_t) == 8) ? STBSP__INTMAX : 0;
- 1584: 020e6e13 ori t3,t3,32
- ++f;
- 1588: 0485 addi s1,s1,1
- switch (f[0]) {
- 158a: fbf7871b addiw a4,a5,-65
- 158e: 0ff77713 zext.b a4,a4
- 1592: 03700693 li a3,55
- 1596: 0ee6ea63 bltu a3,a4,168a <stbsp_vsprintfcb+0x2e6>
- 159a: 00004697 auipc a3,0x4
- 159e: dc268693 addi a3,a3,-574 # 535c <_GLOBAL__sub_I__ZSt3cin+0x296>
- 15a2: 070a slli a4,a4,0x2
- 15a4: 9736 add a4,a4,a3
- 15a6: 4318 lw a4,0(a4)
- 15a8: 9736 add a4,a4,a3
- 15aa: 8702 jr a4
- fl |= STBSP__METRIC_NOSPACE;
- 15ac: 400e6e13 ori t3,t3,1024
- continue;
- 15b0: 0685 addi a3,a3,1
- 15b2: b785 j 1512 <stbsp_vsprintfcb+0x16e>
- fl |= STBSP__LEFTJUST;
- 15b4: 001e6e13 ori t3,t3,1
- continue;
- 15b8: 0685 addi a3,a3,1
- 15ba: bfa1 j 1512 <stbsp_vsprintfcb+0x16e>
- fl |= STBSP__LEADINGPLUS;
- 15bc: 002e6e13 ori t3,t3,2
- continue;
- 15c0: 0685 addi a3,a3,1
- 15c2: bf81 j 1512 <stbsp_vsprintfcb+0x16e>
- fl |= STBSP__TRIPLET_COMMA;
- 15c4: 040e6e13 ori t3,t3,64
- continue;
- 15c8: 0685 addi a3,a3,1
- 15ca: b7a1 j 1512 <stbsp_vsprintfcb+0x16e>
- if (fl & STBSP__METRIC_SUFFIX) {
- 15cc: 100e7793 andi a5,t3,256
- 15d0: 8772 mv a4,t3
- 15d2: 56078363 beqz a5,1b38 <stbsp_vsprintfcb+0x794>
- if (fl & STBSP__METRIC_1024) {
- 15d6: 6785 lui a5,0x1
- 15d8: 034e1513 slli a0,t3,0x34
- 15dc: 80078793 addi a5,a5,-2048 # 800 <stbsp__real_to_str+0x540>
- 15e0: 5c055863 bgez a0,1bb0 <stbsp_vsprintfcb+0x80c>
- fl |= STBSP__METRIC_JEDEC;
- 15e4: 6785 lui a5,0x1
- 15e6: 8f5d or a4,a4,a5
- 15e8: 00070e1b sext.w t3,a4
- 15ec: 0685 addi a3,a3,1
- 15ee: b715 j 1512 <stbsp_vsprintfcb+0x16e>
- fl |= STBSP__LEADING_0X;
- 15f0: 008e6e13 ori t3,t3,8
- continue;
- 15f4: 0685 addi a3,a3,1
- 15f6: bf31 j 1512 <stbsp_vsprintfcb+0x16e>
- fl |= STBSP__LEADINGSPACE;
- 15f8: 004e6e13 ori t3,t3,4
- continue;
- 15fc: 0685 addi a3,a3,1
- 15fe: bf11 j 1512 <stbsp_vsprintfcb+0x16e>
- while ((f[0] >= '0') && (f[0] <= '9')) {
- 1600: fd07871b addiw a4,a5,-48 # fd0 <_vscanf_core.constprop.0+0x582>
- 1604: 0ff77713 zext.b a4,a4
- 1608: 4625 li a2,9
- fw = 0;
- 160a: 4b01 li s6,0
- while ((f[0] >= '0') && (f[0] <= '9')) {
- 160c: 46a5 li a3,9
- 160e: f4e660e3 bltu a2,a4,154e <stbsp_vsprintfcb+0x1aa>
- fw = fw * 10 + f[0] - '0';
- 1612: 002b171b slliw a4,s6,0x2
- 1616: 0167073b addw a4,a4,s6
- 161a: 0017171b slliw a4,a4,0x1
- f++;
- 161e: 0485 addi s1,s1,1
- fw = fw * 10 + f[0] - '0';
- 1620: 9f3d addw a4,a4,a5
- while ((f[0] >= '0') && (f[0] <= '9')) {
- 1622: 0004c783 lbu a5,0(s1)
- fw = fw * 10 + f[0] - '0';
- 1626: fd070b1b addiw s6,a4,-48
- while ((f[0] >= '0') && (f[0] <= '9')) {
- 162a: fd07871b addiw a4,a5,-48
- 162e: 0ff77713 zext.b a4,a4
- 1632: fee6f0e3 bgeu a3,a4,1612 <stbsp_vsprintfcb+0x26e>
- if (f[0] == '.') {
- 1636: 02e00713 li a4,46
- pr = -1;
- 163a: 58fd li a7,-1
- if (f[0] == '.') {
- 163c: f0e79ee3 bne a5,a4,1558 <stbsp_vsprintfcb+0x1b4>
- if (f[0] == '*') {
- 1640: 0014c783 lbu a5,1(s1)
- 1644: 02a00713 li a4,42
- 1648: 52e79763 bne a5,a4,1b76 <stbsp_vsprintfcb+0x7d2>
- while ((f[0] >= '0') && (f[0] <= '9')) {
- 164c: 0024c783 lbu a5,2(s1)
- switch (f[0]) {
- 1650: 04900713 li a4,73
- pr = va_arg(va, stbsp__uint32);
- 1654: 000ba883 lw a7,0(s7)
- ++f;
- 1658: 0489 addi s1,s1,2
- pr = va_arg(va, stbsp__uint32);
- 165a: 0ba1 addi s7,s7,8
- switch (f[0]) {
- 165c: f0e792e3 bne a5,a4,1560 <stbsp_vsprintfcb+0x1bc>
- if ((f[1] == '6') && (f[2] == '4')) {
- 1660: 0014c783 lbu a5,1(s1)
- 1664: 03600713 li a4,54
- 1668: 00e79463 bne a5,a4,1670 <stbsp_vsprintfcb+0x2cc>
- 166c: 1e60106f j 2852 <stbsp_vsprintfcb+0x14ae>
- } else if ((f[1] == '3') && (f[2] == '2')) {
- 1670: 03300713 li a4,51
- 1674: 6ae796e3 bne a5,a4,2520 <stbsp_vsprintfcb+0x117c>
- 1678: 0024c683 lbu a3,2(s1)
- 167c: 03200713 li a4,50
- 1680: 00e69463 bne a3,a4,1688 <stbsp_vsprintfcb+0x2e4>
- 1684: 0ae0106f j 2732 <stbsp_vsprintfcb+0x138e>
- ++f;
- 1688: 0485 addi s1,s1,1
- *s = f[0];
- 168a: 26f10fa3 sb a5,639(sp)
- l = 1;
- 168e: 4785 li a5,1
- 1690: d0be sw a5,96(sp)
- lead[0] = 0;
- 1692: 06010423 sb zero,104(sp)
- tail[0] = 0;
- 1696: 06010823 sb zero,112(sp)
- dp = 0;
- 169a: d282 sw zero,100(sp)
- 169c: e0de sd s7,64(sp)
- 169e: 4701 li a4,0
- 16a0: 4301 li t1,0
- 16a2: 4f81 li t6,0
- 16a4: 4685 li a3,1
- 16a6: 4a01 li s4,0
- cs = 0;
- 16a8: 4281 li t0,0
- s = num + STBSP__NUMSZ - 1;
- 16aa: 27f10a93 addi s5,sp,639
- fw = fl = 0;
- 16ae: 4e01 li t3,0
- tz = 0;
- 16b0: 4881 li a7,0
- if (fl & STBSP__LEADINGZERO) // if leading zeros, everything is in pr
- 16b2: 010e7793 andi a5,t3,16
- 16b6: 40078ee3 beqz a5,22d2 <stbsp_vsprintfcb+0xf2e>
- pr = (fw > pr) ? fw : pr;
- 16ba: 87ba mv a5,a4
- 16bc: 00675363 bge a4,t1,16c2 <stbsp_vsprintfcb+0x31e>
- 16c0: 879a mv a5,t1
- 16c2: 0007871b sext.w a4,a5
- fw = 0;
- 16c6: 4301 li t1,0
- if (fw + pr) {
- 16c8: 62070563 beqz a4,1cf2 <stbsp_vsprintfcb+0x94e>
- sn = lead + 1;
- 16cc: 06910793 addi a5,sp,105
- 16d0: fcbe sd a5,120(sp)
- while (lead[0]) {
- 16d2: 0a0a0863 beqz s4,1782 <stbsp_vsprintfcb+0x3de>
- stbsp__cb_buf_clamp(i, lead[0]);
- 16d6: f026 sd s1,32(sp)
- 16d8: f436 sd a3,40(sp)
- 16da: 854a mv a0,s2
- 16dc: 86d2 mv a3,s4
- 16de: 84ce mv s1,s3
- stbsp__chk_cb_buf(1);
- 16e0: 1fe00b93 li s7,510
- stbsp__cb_buf_clamp(i, lead[0]);
- 16e4: 89be mv s3,a5
- 16e6: 20000b13 li s6,512
- 16ea: 87a2 mv a5,s0
- 16ec: e846 sd a7,16(sp)
- 16ee: 846a mv s0,s10
- 16f0: ec7e sd t6,24(sp)
- 16f2: 8d6e mv s10,s11
- 16f4: f872 sd t3,48(sp)
- 16f6: 8de6 mv s11,s9
- 16f8: 8a3a mv s4,a4
- 16fa: e496 sd t0,72(sp)
- 16fc: 891a mv s2,t1
- 16fe: 8c9e mv s9,t2
- 1700: 0006871b sext.w a4,a3
- 1704: 2e0482e3 beqz s1,21e8 <stbsp_vsprintfcb+0xe44>
- 1708: 40a7863b subw a2,a5,a0
- 170c: 40cb083b subw a6,s6,a2
- 1710: 85c2 mv a1,a6
- 1712: 01075363 bge a4,a6,1718 <stbsp_vsprintfcb+0x374>
- 1716: 85ba mv a1,a4
- lead[0] -= (char)i;
- 1718: 9e8d subw a3,a3,a1
- stbsp__cb_buf_clamp(i, lead[0]);
- 171a: 0005871b sext.w a4,a1
- lead[0] -= (char)i;
- 171e: 06d10423 sb a3,104(sp)
- while (i) {
- 1722: c70d beqz a4,174c <stbsp_vsprintfcb+0x3a8>
- 1724: 7866 ld a6,120(sp)
- 1726: 02071593 slli a1,a4,0x20
- 172a: 9181 srli a1,a1,0x20
- 172c: 00b78633 add a2,a5,a1
- 1730: 8742 mv a4,a6
- *bf++ = *sn++;
- 1732: 00074683 lbu a3,0(a4)
- 1736: 0785 addi a5,a5,1
- while (i) {
- 1738: 0705 addi a4,a4,1
- *bf++ = *sn++;
- 173a: fed78fa3 sb a3,-1(a5)
- while (i) {
- 173e: fec79ae3 bne a5,a2,1732 <stbsp_vsprintfcb+0x38e>
- 1742: 982e add a6,a6,a1
- 1744: fcc2 sd a6,120(sp)
- stbsp__chk_cb_buf(1);
- 1746: c899 beqz s1,175c <stbsp_vsprintfcb+0x3b8>
- 1748: 40a7863b subw a2,a5,a0
- 174c: 00cbd863 bge s7,a2,175c <stbsp_vsprintfcb+0x3b8>
- 1750: 65a2 ld a1,8(sp)
- 1752: 9c31 addw s0,s0,a2
- 1754: 9482 jalr s1
- 1756: 34050ee3 beqz a0,22b2 <stbsp_vsprintfcb+0xf0e>
- 175a: 87aa mv a5,a0
- while (lead[0]) {
- 175c: 06814683 lbu a3,104(sp)
- 1760: f2c5 bnez a3,1700 <stbsp_vsprintfcb+0x35c>
- 1762: 83e6 mv t2,s9
- 1764: 68c2 ld a7,16(sp)
- 1766: 8cee mv s9,s11
- 1768: 6fe2 ld t6,24(sp)
- 176a: 8dea mv s11,s10
- 176c: 76a2 ld a3,40(sp)
- 176e: 8d22 mv s10,s0
- 1770: 7e42 ld t3,48(sp)
- 1772: 843e mv s0,a5
- 1774: 62a6 ld t0,72(sp)
- 1776: 87ce mv a5,s3
- 1778: 89a6 mv s3,s1
- 177a: 7482 ld s1,32(sp)
- 177c: 834a mv t1,s2
- 177e: 8752 mv a4,s4
- 1780: 892a mv s2,a0
- cs = (fl & STBSP__TRIPLET_COMMA) ? ((stbsp__uint32)(c - ((pr + cs) % (c + 1)))) : 0;
- 1782: 040e7b13 andi s6,t3,64
- c = cs >> 24;
- 1786: 0182d61b srliw a2,t0,0x18
- 178a: 0182db9b srliw s7,t0,0x18
- cs = (fl & STBSP__TRIPLET_COMMA) ? ((stbsp__uint32)(c - ((pr + cs) % (c + 1)))) : 0;
- 178e: 4a01 li s4,0
- 1790: 000b0e63 beqz s6,17ac <stbsp_vsprintfcb+0x408>
- cs &= 0xffffff;
- 1794: 02829a13 slli s4,t0,0x28
- 1798: 028a5a13 srli s4,s4,0x28
- cs = (fl & STBSP__TRIPLET_COMMA) ? ((stbsp__uint32)(c - ((pr + cs) % (c + 1)))) : 0;
- 179c: 00ea0a3b addw s4,s4,a4
- 17a0: 0016059b addiw a1,a2,1
- 17a4: 02ba7a3b remuw s4,s4,a1
- 17a8: 41460a3b subw s4,a2,s4
- while (pr > 0) {
- 17ac: 0ce05763 blez a4,187a <stbsp_vsprintfcb+0x4d6>
- *(stbsp__uint32 *)bf = 0x30303030;
- 17b0: 30303837 lui a6,0x30303
- 17b4: 03080813 addi a6,a6,48 # 30303030 <_ZSt4cerr+0x302fb6b8>
- 17b8: f026 sd s1,32(sp)
- 17ba: 854a mv a0,s2
- 17bc: 84da mv s1,s6
- 17be: 895e mv s2,s7
- 17c0: e4d6 sd s5,72(sp)
- 17c2: 8b4e mv s6,s3
- 17c4: 8aea mv s5,s10
- stbsp__chk_cb_buf(1);
- 17c6: 1fe00293 li t0,510
- 17ca: 8d6e mv s10,s11
- *bf++ = stbsp__comma;
- 17cc: 00005f17 auipc t5,0x5
- 17d0: 2b4f0f13 addi t5,t5,692 # 6a80 <stbsp__digitpair>
- 17d4: 8de6 mv s11,s9
- *bf++ = '0';
- 17d6: 03000e93 li t4,48
- 17da: e846 sd a7,16(sp)
- 17dc: ec7e sd t6,24(sp)
- 17de: f436 sd a3,40(sp)
- 17e0: f872 sd t3,48(sp)
- 17e2: e89a sd t1,80(sp)
- 17e4: 89ba mv s3,a4
- 17e6: ecbe sd a5,88(sp)
- 17e8: 8bc2 mv s7,a6
- 17ea: 8c9e mv s9,t2
- stbsp__cb_buf_clamp(i, pr);
- 17ec: 240b0ee3 beqz s6,2248 <stbsp_vsprintfcb+0xea4>
- 17f0: 40a407b3 sub a5,s0,a0
- 17f4: 40fc063b subw a2,s8,a5
- 17f8: 87b2 mv a5,a2
- 17fa: 00c9d363 bge s3,a2,1800 <stbsp_vsprintfcb+0x45c>
- 17fe: 87ce mv a5,s3
- 1800: 0007859b sext.w a1,a5
- pr -= i;
- 1804: 40f989bb subw s3,s3,a5
- if ((fl & STBSP__TRIPLET_COMMA) == 0) {
- 1808: 32048c63 beqz s1,1b40 <stbsp_vsprintfcb+0x79c>
- while (i) {
- 180c: 34058a63 beqz a1,1b60 <stbsp_vsprintfcb+0x7bc>
- 1810: 1582 slli a1,a1,0x20
- *bf++ = stbsp__comma;
- 1812: 0cdf4603 lbu a2,205(t5)
- 1816: 9181 srli a1,a1,0x20
- 1818: 95a2 add a1,a1,s0
- 181a: 0405 addi s0,s0,1
- if ((fl & STBSP__TRIPLET_COMMA) && (cs++ == c)) {
- 181c: c481 beqz s1,1824 <stbsp_vsprintfcb+0x480>
- 181e: 1d4901e3 beq s2,s4,21e0 <stbsp_vsprintfcb+0xe3c>
- 1822: 2a05 addiw s4,s4,1
- *bf++ = '0';
- 1824: 03000793 li a5,48
- 1828: fef40fa3 sb a5,-1(s0)
- while (i) {
- 182c: fe8597e3 bne a1,s0,181a <stbsp_vsprintfcb+0x476>
- stbsp__chk_cb_buf(1);
- 1830: 320b0b63 beqz s6,1b66 <stbsp_vsprintfcb+0x7c2>
- 1834: 40a5863b subw a2,a1,a0
- 1838: 32c2d763 bge t0,a2,1b66 <stbsp_vsprintfcb+0x7c2>
- 183c: 65a2 ld a1,8(sp)
- 183e: 01560abb addw s5,a2,s5
- 1842: 9b02 jalr s6
- 1844: 3a050ce3 beqz a0,23fc <stbsp_vsprintfcb+0x1058>
- 1848: 842a mv s0,a0
- 184a: 1fe00293 li t0,510
- 184e: 00005f17 auipc t5,0x5
- 1852: 232f0f13 addi t5,t5,562 # 6a80 <stbsp__digitpair>
- 1856: 03000e93 li t4,48
- while (pr > 0) {
- 185a: f93049e3 bgtz s3,17ec <stbsp_vsprintfcb+0x448>
- while (lead[0]) {
- 185e: 83e6 mv t2,s9
- 1860: 68c2 ld a7,16(sp)
- 1862: 8cee mv s9,s11
- 1864: 6fe2 ld t6,24(sp)
- 1866: 8dea mv s11,s10
- 1868: 7482 ld s1,32(sp)
- 186a: 8d56 mv s10,s5
- 186c: 76a2 ld a3,40(sp)
- 186e: 7e42 ld t3,48(sp)
- 1870: 6346 ld t1,80(sp)
- 1872: 67e6 ld a5,88(sp)
- 1874: 6aa6 ld s5,72(sp)
- 1876: 892a mv s2,a0
- 1878: 89da mv s3,s6
- 187a: 06814a03 lbu s4,104(sp)
- sn = lead + 1;
- 187e: fcbe sd a5,120(sp)
- while (lead[0]) {
- 1880: 0a0a0263 beqz s4,1924 <stbsp_vsprintfcb+0x580>
- stbsp__cb_buf_clamp(i, lead[0]);
- 1884: ec26 sd s1,24(sp)
- 1886: f036 sd a3,32(sp)
- 1888: 854a mv a0,s2
- 188a: 86d2 mv a3,s4
- 188c: 84ce mv s1,s3
- 188e: 87a2 mv a5,s0
- stbsp__chk_cb_buf(1);
- 1890: 1fe00b93 li s7,510
- stbsp__cb_buf_clamp(i, lead[0]);
- 1894: 846a mv s0,s10
- 1896: 20000b13 li s6,512
- 189a: 8d6e mv s10,s11
- 189c: e846 sd a7,16(sp)
- 189e: 8de6 mv s11,s9
- 18a0: 8a7e mv s4,t6
- 18a2: 8972 mv s2,t3
- 18a4: 899a mv s3,t1
- 18a6: 8c9e mv s9,t2
- 18a8: 0006871b sext.w a4,a3
- 18ac: 140482e3 beqz s1,21f0 <stbsp_vsprintfcb+0xe4c>
- 18b0: 40a7863b subw a2,a5,a0
- 18b4: 40cb083b subw a6,s6,a2
- 18b8: 85c2 mv a1,a6
- 18ba: 01075363 bge a4,a6,18c0 <stbsp_vsprintfcb+0x51c>
- 18be: 85ba mv a1,a4
- lead[0] -= (char)i;
- 18c0: 9e8d subw a3,a3,a1
- stbsp__cb_buf_clamp(i, lead[0]);
- 18c2: 0005871b sext.w a4,a1
- lead[0] -= (char)i;
- 18c6: 06d10423 sb a3,104(sp)
- while (i) {
- 18ca: c70d beqz a4,18f4 <stbsp_vsprintfcb+0x550>
- 18cc: 7866 ld a6,120(sp)
- 18ce: 02071593 slli a1,a4,0x20
- 18d2: 9181 srli a1,a1,0x20
- 18d4: 00b78633 add a2,a5,a1
- 18d8: 8742 mv a4,a6
- *bf++ = *sn++;
- 18da: 00074683 lbu a3,0(a4)
- 18de: 0785 addi a5,a5,1
- while (i) {
- 18e0: 0705 addi a4,a4,1
- *bf++ = *sn++;
- 18e2: fed78fa3 sb a3,-1(a5)
- while (i) {
- 18e6: fec79ae3 bne a5,a2,18da <stbsp_vsprintfcb+0x536>
- 18ea: 982e add a6,a6,a1
- 18ec: fcc2 sd a6,120(sp)
- stbsp__chk_cb_buf(1);
- 18ee: c899 beqz s1,1904 <stbsp_vsprintfcb+0x560>
- 18f0: 40a7863b subw a2,a5,a0
- 18f4: 00cbd863 bge s7,a2,1904 <stbsp_vsprintfcb+0x560>
- 18f8: 65a2 ld a1,8(sp)
- 18fa: 9c31 addw s0,s0,a2
- 18fc: 9482 jalr s1
- 18fe: 1a050ae3 beqz a0,22b2 <stbsp_vsprintfcb+0xf0e>
- 1902: 87aa mv a5,a0
- while (lead[0]) {
- 1904: 06814683 lbu a3,104(sp)
- 1908: f2c5 bnez a3,18a8 <stbsp_vsprintfcb+0x504>
- 190a: 834e mv t1,s3
- 190c: 68c2 ld a7,16(sp)
- 190e: 89a6 mv s3,s1
- 1910: 7682 ld a3,32(sp)
- 1912: 64e2 ld s1,24(sp)
- 1914: 8e4a mv t3,s2
- 1916: 83e6 mv t2,s9
- 1918: 8fd2 mv t6,s4
- 191a: 8cee mv s9,s11
- 191c: 892a mv s2,a0
- 191e: 8dea mv s11,s10
- 1920: 8d22 mv s10,s0
- 1922: 843e mv s0,a5
- while (n) {
- 1924: c6f9 beqz a3,19f2 <stbsp_vsprintfcb+0x64e>
- STBSP__UNALIGNED(while (i >= 4) {
- 1926: ec26 sd s1,24(sp)
- 1928: 854a mv a0,s2
- 192a: 84d6 mv s1,s5
- 192c: 896a mv s2,s10
- 192e: 87a2 mv a5,s0
- 1930: 8d6e mv s10,s11
- stbsp__chk_cb_buf(1);
- 1932: 1fe00b93 li s7,510
- STBSP__UNALIGNED(while (i >= 4) {
- 1936: 8de6 mv s11,s9
- stbsp__cb_buf_clamp(i, n);
- 1938: 20000b13 li s6,512
- STBSP__UNALIGNED(while (i >= 4) {
- 193c: 4a0d li s4,3
- 193e: e87e sd t6,16(sp)
- 1940: f072 sd t3,32(sp)
- 1942: 8ac6 mv s5,a7
- 1944: f41a sd t1,40(sp)
- 1946: 8436 mv s0,a3
- 1948: 8c9e mv s9,t2
- stbsp__cb_buf_clamp(i, n);
- 194a: 0004071b sext.w a4,s0
- 194e: 100982e3 beqz s3,2252 <stbsp_vsprintfcb+0xeae>
- 1952: 40a78633 sub a2,a5,a0
- 1956: 40cb05bb subw a1,s6,a2
- 195a: 862e mv a2,a1
- 195c: 00b75363 bge a4,a1,1962 <stbsp_vsprintfcb+0x5be>
- 1960: 863a mv a2,a4
- 1962: 0006071b sext.w a4,a2
- n -= i;
- 1966: 9c11 subw s0,s0,a2
- STBSP__UNALIGNED(while (i >= 4) {
- 1968: 14ea50e3 bge s4,a4,22a8 <stbsp_vsprintfcb+0xf04>
- 196c: ffc70f1b addiw t5,a4,-4
- 1970: 002f5e9b srliw t4,t5,0x2
- 1974: 001e8e1b addiw t3,t4,1
- 1978: 0e0a slli t3,t3,0x2
- 197a: 01c785b3 add a1,a5,t3
- 197e: 8626 mv a2,s1
- 1980: 4218 lw a4,0(a2)
- 1982: 0791 addi a5,a5,4
- 1984: 0611 addi a2,a2,4
- 1986: 2701 sext.w a4,a4
- 1988: fee7ae23 sw a4,-4(a5)
- 198c: feb79ae3 bne a5,a1,1980 <stbsp_vsprintfcb+0x5dc>
- 1990: 002e9e9b slliw t4,t4,0x2
- 1994: 41df073b subw a4,t5,t4
- while (i) {
- 1998: 94f2 add s1,s1,t3
- 199a: c31d beqz a4,19c0 <stbsp_vsprintfcb+0x61c>
- 199c: 8626 mv a2,s1
- 199e: 87ae mv a5,a1
- 19a0: 00e58f3b addw t5,a1,a4
- *bf++ = *s++;
- 19a4: 00064e83 lbu t4,0(a2)
- 19a8: 0785 addi a5,a5,1
- while (i) {
- 19aa: 00078e1b sext.w t3,a5
- *bf++ = *s++;
- 19ae: ffd78fa3 sb t4,-1(a5)
- 19b2: 0605 addi a2,a2,1
- while (i) {
- 19b4: ffcf18e3 bne t5,t3,19a4 <stbsp_vsprintfcb+0x600>
- 19b8: 1702 slli a4,a4,0x20
- 19ba: 9301 srli a4,a4,0x20
- 19bc: 95ba add a1,a1,a4
- 19be: 94ba add s1,s1,a4
- stbsp__chk_cb_buf(1);
- 19c0: 1a098763 beqz s3,1b6e <stbsp_vsprintfcb+0x7ca>
- 19c4: 40a5863b subw a2,a1,a0
- 19c8: 1acbd363 bge s7,a2,1b6e <stbsp_vsprintfcb+0x7ca>
- 19cc: 65a2 ld a1,8(sp)
- 19ce: 0126093b addw s2,a2,s2
- 19d2: 9982 jalr s3
- 19d4: 20050be3 beqz a0,23ea <stbsp_vsprintfcb+0x1046>
- 19d8: 87aa mv a5,a0
- while (n) {
- 19da: f825 bnez s0,194a <stbsp_vsprintfcb+0x5a6>
- 19dc: 6fc2 ld t6,16(sp)
- 19de: 64e2 ld s1,24(sp)
- 19e0: 7e02 ld t3,32(sp)
- 19e2: 7322 ld t1,40(sp)
- 19e4: 83e6 mv t2,s9
- 19e6: 88d6 mv a7,s5
- 19e8: 8cee mv s9,s11
- 19ea: 843e mv s0,a5
- 19ec: 8dea mv s11,s10
- 19ee: 8d4a mv s10,s2
- 19f0: 892a mv s2,a0
- while (tz) {
- 19f2: 08088863 beqz a7,1a82 <stbsp_vsprintfcb+0x6de>
- *(stbsp__uint32 *)bf = 0x30303030;
- 19f6: 30303b37 lui s6,0x30303
- *bf++ = '0';
- 19fa: 03000a13 li s4,48
- while (i >= 4) {
- 19fe: 4a8d li s5,3
- stbsp__chk_cb_buf(1);
- 1a00: 1fe00693 li a3,510
- *(stbsp__uint32 *)bf = 0x30303030;
- 1a04: 030b0b13 addi s6,s6,48 # 30303030 <_ZSt4cerr+0x302fb6b8>
- stbsp__cb_buf_clamp(i, tz);
- 1a08: 20000b93 li s7,512
- 1a0c: 040989e3 beqz s3,225e <stbsp_vsprintfcb+0xeba>
- 1a10: 41240633 sub a2,s0,s2
- 1a14: 40cb87bb subw a5,s7,a2
- 1a18: 873e mv a4,a5
- 1a1a: 00f8d363 bge a7,a5,1a20 <stbsp_vsprintfcb+0x67c>
- 1a1e: 8746 mv a4,a7
- 1a20: 0007079b sext.w a5,a4
- tz -= i;
- 1a24: 40e888bb subw a7,a7,a4
- while (i) {
- 1a28: 08078ee3 beqz a5,22c4 <stbsp_vsprintfcb+0xf20>
- if ((((stbsp__uintptr)bf) & 3) == 0)
- 1a2c: 00347713 andi a4,s0,3
- 1a30: e719 bnez a4,1a3e <stbsp_vsprintfcb+0x69a>
- 1a32: 0390006f j 226a <stbsp_vsprintfcb+0xec6>
- 1a36: 00347713 andi a4,s0,3
- 1a3a: 7a070f63 beqz a4,21f8 <stbsp_vsprintfcb+0xe54>
- *bf++ = '0';
- 1a3e: 01440023 sb s4,0(s0)
- --i;
- 1a42: 37fd addiw a5,a5,-1
- *bf++ = '0';
- 1a44: 0405 addi s0,s0,1
- while (i) {
- 1a46: fbe5 bnez a5,1a36 <stbsp_vsprintfcb+0x692>
- stbsp__chk_cb_buf(1);
- 1a48: 02098b63 beqz s3,1a7e <stbsp_vsprintfcb+0x6da>
- 1a4c: 4124063b subw a2,s0,s2
- 1a50: 02c6d763 bge a3,a2,1a7e <stbsp_vsprintfcb+0x6da>
- 1a54: 65a2 ld a1,8(sp)
- 1a56: 854a mv a0,s2
- 1a58: f81e sd t2,48(sp)
- 1a5a: f41a sd t1,40(sp)
- 1a5c: f072 sd t3,32(sp)
- 1a5e: ec7e sd t6,24(sp)
- 1a60: e846 sd a7,16(sp)
- 1a62: 00cd0d3b addw s10,s10,a2
- 1a66: 9982 jalr s3
- 1a68: 892a mv s2,a0
- 1a6a: 1a0502e3 beqz a0,240e <stbsp_vsprintfcb+0x106a>
- 1a6e: 73c2 ld t2,48(sp)
- 1a70: 7322 ld t1,40(sp)
- 1a72: 7e02 ld t3,32(sp)
- 1a74: 6fe2 ld t6,24(sp)
- 1a76: 68c2 ld a7,16(sp)
- 1a78: 842a mv s0,a0
- 1a7a: 1fe00693 li a3,510
- while (tz) {
- 1a7e: f80897e3 bnez a7,1a0c <stbsp_vsprintfcb+0x668>
- sn = tail + 1;
- 1a82: 07110793 addi a5,sp,113
- 1a86: fcbe sd a5,120(sp)
- while (tail[0]) {
- 1a88: 080f8763 beqz t6,1b16 <stbsp_vsprintfcb+0x772>
- stbsp__cb_buf_clamp(i, tail[0]);
- 1a8c: 854a mv a0,s2
- 1a8e: 8b6a mv s6,s10
- stbsp__chk_cb_buf(1);
- 1a90: 1fe00a93 li s5,510
- stbsp__cb_buf_clamp(i, tail[0]);
- 1a94: 8d4e mv s10,s3
- 1a96: 20000a13 li s4,512
- 1a9a: 8bf2 mv s7,t3
- 1a9c: 891a mv s2,t1
- 1a9e: 899e mv s3,t2
- 1aa0: 000f879b sext.w a5,t6
- 1aa4: 7c0d0863 beqz s10,2274 <stbsp_vsprintfcb+0xed0>
- 1aa8: 40a4063b subw a2,s0,a0
- 1aac: 40ca06bb subw a3,s4,a2
- 1ab0: 8736 mv a4,a3
- 1ab2: 00d7d363 bge a5,a3,1ab8 <stbsp_vsprintfcb+0x714>
- 1ab6: 873e mv a4,a5
- tail[0] -= (char)i;
- 1ab8: 40ef8fbb subw t6,t6,a4
- stbsp__cb_buf_clamp(i, tail[0]);
- 1abc: 0007079b sext.w a5,a4
- tail[0] -= (char)i;
- 1ac0: 07f10823 sb t6,112(sp)
- while (i) {
- 1ac4: c795 beqz a5,1af0 <stbsp_vsprintfcb+0x74c>
- 1ac6: 75e6 ld a1,120(sp)
- 1ac8: 02079613 slli a2,a5,0x20
- 1acc: 9201 srli a2,a2,0x20
- 1ace: 00c406b3 add a3,s0,a2
- 1ad2: 87ae mv a5,a1
- *bf++ = *sn++;
- 1ad4: 0007c703 lbu a4,0(a5)
- 1ad8: 0405 addi s0,s0,1
- while (i) {
- 1ada: 0785 addi a5,a5,1
- *bf++ = *sn++;
- 1adc: fee40fa3 sb a4,-1(s0)
- while (i) {
- 1ae0: fed41ae3 bne s0,a3,1ad4 <stbsp_vsprintfcb+0x730>
- 1ae4: 95b2 add a1,a1,a2
- 1ae6: fcae sd a1,120(sp)
- stbsp__chk_cb_buf(1);
- 1ae8: 000d0d63 beqz s10,1b02 <stbsp_vsprintfcb+0x75e>
- 1aec: 40a4063b subw a2,s0,a0
- 1af0: 00cad963 bge s5,a2,1b02 <stbsp_vsprintfcb+0x75e>
- 1af4: 65a2 ld a1,8(sp)
- 1af6: 00cb0b3b addw s6,s6,a2
- 1afa: 9d02 jalr s10
- 1afc: 200509e3 beqz a0,250e <stbsp_vsprintfcb+0x116a>
- 1b00: 842a mv s0,a0
- while (tail[0]) {
- 1b02: 07014f83 lbu t6,112(sp)
- 1b06: f80f9de3 bnez t6,1aa0 <stbsp_vsprintfcb+0x6fc>
- 1b0a: 834a mv t1,s2
- 1b0c: 83ce mv t2,s3
- 1b0e: 8e5e mv t3,s7
- 1b10: 89ea mv s3,s10
- 1b12: 892a mv s2,a0
- 1b14: 8d5a mv s10,s6
- if (fl & STBSP__LEFTJUST)
- 1b16: 001e7e13 andi t3,t3,1
- 1b1a: 000e0663 beqz t3,1b26 <stbsp_vsprintfcb+0x782>
- if (fw > 0) {
- 1b1e: 00605463 blez t1,1b26 <stbsp_vsprintfcb+0x782>
- 1b22: 0300106f j 2b52 <stbsp_vsprintfcb+0x17ae>
- for (;;) {
- 1b26: 6b86 ld s7,64(sp)
- 1b28: 2c013a03 ld s4,704(sp)
- 1b2c: 2b813a83 ld s5,696(sp)
- 1b30: 2b013b03 ld s6,688(sp)
- ++f;
- 1b34: 0485 addi s1,s1,1
- for (;;) {
- 1b36: b0f1 j 1402 <stbsp_vsprintfcb+0x5e>
- fl |= STBSP__METRIC_SUFFIX;
- 1b38: 100e6e13 ori t3,t3,256
- continue;
- 1b3c: 0685 addi a3,a3,1
- 1b3e: bad1 j 1512 <stbsp_vsprintfcb+0x16e>
- while (i) {
- 1b40: 0e0580e3 beqz a1,2420 <stbsp_vsprintfcb+0x107c>
- if ((((stbsp__uintptr)bf) & 3) == 0)
- 1b44: 00347793 andi a5,s0,3
- 1b48: e799 bnez a5,1b56 <stbsp_vsprintfcb+0x7b2>
- 1b4a: 0dd0006f j 2426 <stbsp_vsprintfcb+0x1082>
- 1b4e: 00347793 andi a5,s0,3
- 1b52: 72078463 beqz a5,227a <stbsp_vsprintfcb+0xed6>
- *bf++ = '0';
- 1b56: 01d40023 sb t4,0(s0)
- --i;
- 1b5a: 35fd addiw a1,a1,-1
- *bf++ = '0';
- 1b5c: 0405 addi s0,s0,1
- while (i) {
- 1b5e: f9e5 bnez a1,1b4e <stbsp_vsprintfcb+0x7aa>
- while (i) {
- 1b60: 85a2 mv a1,s0
- stbsp__chk_cb_buf(1);
- 1b62: cc0b19e3 bnez s6,1834 <stbsp_vsprintfcb+0x490>
- 1b66: 842e mv s0,a1
- while (pr > 0) {
- 1b68: c93042e3 bgtz s3,17ec <stbsp_vsprintfcb+0x448>
- 1b6c: b9cd j 185e <stbsp_vsprintfcb+0x4ba>
- while (i) {
- 1b6e: 87ae mv a5,a1
- while (n) {
- 1b70: dc041de3 bnez s0,194a <stbsp_vsprintfcb+0x5a6>
- 1b74: b5a5 j 19dc <stbsp_vsprintfcb+0x638>
- while ((f[0] >= '0') && (f[0] <= '9')) {
- 1b76: fd07871b addiw a4,a5,-48
- 1b7a: 0ff77713 zext.b a4,a4
- 1b7e: 4625 li a2,9
- ++f;
- 1b80: 0485 addi s1,s1,1
- pr = 0;
- 1b82: 4881 li a7,0
- while ((f[0] >= '0') && (f[0] <= '9')) {
- 1b84: 46a5 li a3,9
- 1b86: 9ce669e3 bltu a2,a4,1558 <stbsp_vsprintfcb+0x1b4>
- pr = pr * 10 + f[0] - '0';
- 1b8a: 0028971b slliw a4,a7,0x2
- 1b8e: 0117073b addw a4,a4,a7
- 1b92: 0017171b slliw a4,a4,0x1
- f++;
- 1b96: 0485 addi s1,s1,1
- pr = pr * 10 + f[0] - '0';
- 1b98: 9f3d addw a4,a4,a5
- while ((f[0] >= '0') && (f[0] <= '9')) {
- 1b9a: 0004c783 lbu a5,0(s1)
- pr = pr * 10 + f[0] - '0';
- 1b9e: fd07089b addiw a7,a4,-48
- while ((f[0] >= '0') && (f[0] <= '9')) {
- 1ba2: fd07871b addiw a4,a5,-48
- 1ba6: 0ff77713 zext.b a4,a4
- 1baa: fee6f0e3 bgeu a3,a4,1b8a <stbsp_vsprintfcb+0x7e6>
- 1bae: b26d j 1558 <stbsp_vsprintfcb+0x1b4>
- fl |= STBSP__METRIC_1024;
- 1bb0: 8f5d or a4,a4,a5
- 1bb2: 00070e1b sext.w t3,a4
- 1bb6: 0685 addi a3,a3,1
- 1bb8: baa9 j 1512 <stbsp_vsprintfcb+0x16e>
- *bf = 0;
- 1bba: 00040023 sb zero,0(s0)
- 1bbe: b209 j 14c0 <stbsp_vsprintfcb+0x11c>
- if (f[0] == 'l') {
- 1bc0: 0014c783 lbu a5,1(s1)
- 1bc4: 06c00713 li a4,108
- fl |= ((sizeof(long) == 8) ? STBSP__INTMAX : 0);
- 1bc8: 020e6e13 ori t3,t3,32
- if (f[0] == 'l') {
- 1bcc: 00e78c63 beq a5,a4,1be4 <stbsp_vsprintfcb+0x840>
- ++f;
- 1bd0: 0485 addi s1,s1,1
- 1bd2: ba65 j 158a <stbsp_vsprintfcb+0x1e6>
- if (f[0] == 'h')
- 1bd4: 0014c783 lbu a5,1(s1)
- 1bd8: 06800713 li a4,104
- fl |= STBSP__HALFWIDTH;
- 1bdc: 200e6e13 ori t3,t3,512
- if (f[0] == 'h')
- 1be0: fee798e3 bne a5,a4,1bd0 <stbsp_vsprintfcb+0x82c>
- if ((f[1] == '6') && (f[2] == '4')) {
- 1be4: 0024c783 lbu a5,2(s1)
- ++f;
- 1be8: 0489 addi s1,s1,2
- 1bea: b245 j 158a <stbsp_vsprintfcb+0x1e6>
- s = va_arg(va, char *);
- 1bec: 008b8713 addi a4,s7,8
- 1bf0: e0ba sd a4,64(sp)
- if (fl & STBSP__INTMAX) {
- 1bf2: 020e7693 andi a3,t3,32
- 1bf6: 8772 mv a4,t3
- 1bf8: 24069ee3 bnez a3,2654 <stbsp_vsprintfcb+0x12b0>
- stbsp__int32 i = va_arg(va, stbsp__int32);
- 1bfc: 000ba683 lw a3,0(s7)
- if ((f[0] != 'u') && (i < 0)) {
- 1c00: 07500613 li a2,117
- n64 = (stbsp__uint32)i;
- 1c04: 02069f13 slli t5,a3,0x20
- 1c08: 020f5f13 srli t5,t5,0x20
- if ((f[0] != 'u') && (i < 0)) {
- 1c0c: 00c78a63 beq a5,a2,1c20 <stbsp_vsprintfcb+0x87c>
- 1c10: 0006d863 bgez a3,1c20 <stbsp_vsprintfcb+0x87c>
- fl |= STBSP__NEGATIVE;
- 1c14: 08076713 ori a4,a4,128
- n64 = (stbsp__uint32)-i;
- 1c18: 40d00f3b negw t5,a3
- fl |= STBSP__NEGATIVE;
- 1c1c: 00070e1b sext.w t3,a4
- if (fl & STBSP__METRIC_SUFFIX) {
- 1c20: 100e7693 andi a3,t3,256
- 1c24: 5c0683e3 beqz a3,29ea <stbsp_vsprintfcb+0x1646>
- if (n64 < 1024)
- 1c28: 3ff00793 li a5,1023
- 1c2c: 01e7e463 bltu a5,t5,1c34 <stbsp_vsprintfcb+0x890>
- 1c30: 0ea0106f j 2d1a <stbsp_vsprintfcb+0x1976>
- else if (pr == -1)
- 1c34: 57fd li a5,-1
- 1c36: 30f887e3 beq a7,a5,2744 <stbsp_vsprintfcb+0x13a0>
- fv = (double)(stbsp__int64)n64;
- 1c3a: d22f7553 fcvt.d.l fa0,t5
- if (fl & STBSP__METRIC_1024)
- 1c3e: 034e1793 slli a5,t3,0x34
- 1c42: 0007c463 bltz a5,1c4a <stbsp_vsprintfcb+0x8a6>
- 1c46: 2300106f j 2e76 <stbsp_vsprintfcb+0x1ad2>
- divisor = 1024.0;
- 1c4a: 00004797 auipc a5,0x4
- 1c4e: cb67b787 fld fa5,-842(a5) # 5900 <STDIN_FD+0x20>
- if ((fv < divisor) && (fv > -divisor))
- 1c52: 22f79753 fneg.d fa4,fa5
- fl += 0x1000000;
- 1c56: 010006b7 lui a3,0x1000
- while (fl < 0x4000000) {
- 1c5a: 04000737 lui a4,0x4000
- if ((fv < divisor) && (fv > -divisor))
- 1c5e: a2f517d3 flt.d a5,fa0,fa5
- 1c62: c789 beqz a5,1c6c <stbsp_vsprintfcb+0x8c8>
- 1c64: a2a717d3 flt.d a5,fa4,fa0
- 1c68: 3e079863 bnez a5,2058 <stbsp_vsprintfcb+0xcb4>
- fl += 0x1000000;
- 1c6c: 01c68e3b addw t3,a3,t3
- fv /= divisor;
- 1c70: 1af57553 fdiv.d fa0,fa0,fa5
- while (fl < 0x4000000) {
- 1c74: feee65e3 bltu t3,a4,1c5e <stbsp_vsprintfcb+0x8ba>
- 1c78: a6c5 j 2058 <stbsp_vsprintfcb+0xcb4>
- h = (f[0] == 'X') ? hexu : hex;
- 1c7a: 05800693 li a3,88
- if (fl & STBSP__INTMAX) {
- 1c7e: 020e7713 andi a4,t3,32
- h = (f[0] == 'X') ? hexu : hex;
- 1c82: 00005817 auipc a6,0x5
- 1c86: ee680813 addi a6,a6,-282 # 6b68 <hex.0>
- 1c8a: 00d79663 bne a5,a3,1c96 <stbsp_vsprintfcb+0x8f2>
- 1c8e: 00005817 auipc a6,0x5
- 1c92: ec280813 addi a6,a6,-318 # 6b50 <hexu.1>
- l = (4 << 4) | (4 << 8);
- 1c96: 44000793 li a5,1088
- 1c9a: d0be sw a5,96(sp)
- if (fl & STBSP__LEADING_0X) {
- 1c9c: 008e7793 andi a5,t3,8
- 1ca0: 7a079263 bnez a5,2444 <stbsp_vsprintfcb+0x10a0>
- lead[0] = 0;
- 1ca4: 06010423 sb zero,104(sp)
- s = va_arg(va, char *);
- 1ca8: 008b8793 addi a5,s7,8
- 1cac: e0be sd a5,64(sp)
- if (fl & STBSP__INTMAX)
- 1cae: 72070b63 beqz a4,23e4 <stbsp_vsprintfcb+0x1040>
- n64 = va_arg(va, stbsp__uint64);
- 1cb2: 000bb683 ld a3,0(s7)
- dp = 0;
- 1cb6: d282 sw zero,100(sp)
- tail[0] = 0;
- 1cb8: 06010823 sb zero,112(sp)
- if ((fl & STBSP__LEFTJUST) == 0) {
- 1cbc: 001e7513 andi a0,t3,1
- if (n64 == 0) {
- 1cc0: 380694e3 bnez a3,2848 <stbsp_vsprintfcb+0x14a4>
- lead[0] = 0;
- 1cc4: 06010423 sb zero,104(sp)
- if (pr == 0) {
- 1cc8: 78089a63 bnez a7,245c <stbsp_vsprintfcb+0x10b8>
- if (fw < (stbsp__int32)n)
- 1ccc: fffb4313 not t1,s6
- 1cd0: 43f35313 srai t1,t1,0x3f
- l = 0;
- 1cd4: d082 sw zero,96(sp)
- if (fw < (stbsp__int32)n)
- 1cd6: 01637333 and t1,t1,s6
- goto scopy;
- 1cda: 4701 li a4,0
- 1cdc: 4f81 li t6,0
- 1cde: 4a01 li s4,0
- cs = 0;
- 1ce0: 4281 li t0,0
- s = num + STBSP__NUMSZ;
- 1ce2: 28010a93 addi s5,sp,640
- if ((fl & STBSP__LEFTJUST) == 0) {
- 1ce6: 9c0506e3 beqz a0,16b2 <stbsp_vsprintfcb+0x30e>
- if (fw + pr) {
- 1cea: 00e307bb addw a5,t1,a4
- 1cee: 9c079fe3 bnez a5,16cc <stbsp_vsprintfcb+0x328>
- 1cf2: 06910793 addi a5,sp,105
- 1cf6: b661 j 187e <stbsp_vsprintfcb+0x4da>
- h = (f[0] == 'E') ? hexu : hex;
- 1cf8: 04500713 li a4,69
- 1cfc: 00005317 auipc t1,0x5
- 1d00: e6c30313 addi t1,t1,-404 # 6b68 <hex.0>
- 1d04: 1ce78ae3 beq a5,a4,26d8 <stbsp_vsprintfcb+0x1334>
- fv = va_arg(va, double);
- 1d08: 008b8713 addi a4,s7,8
- if (pr == -1)
- 1d0c: 57fd li a5,-1
- fv = va_arg(va, double);
- 1d0e: e0ba sd a4,64(sp)
- 1d10: 000bb507 fld fa0,0(s7)
- if (pr == -1)
- 1d14: 1af88ce3 beq a7,a5,26cc <stbsp_vsprintfcb+0x1328>
- if (stbsp__real_to_str(&sn, &l, num, &dp, fv, pr | 0x80000000))
- 1d18: 80000737 lui a4,0x80000
- 1d1c: 00e8e733 or a4,a7,a4
- 1d20: 2701 sext.w a4,a4
- 1d22: 10d4 addi a3,sp,100
- 1d24: 0110 addi a2,sp,128
- 1d26: 108c addi a1,sp,96
- 1d28: 18a8 addi a0,sp,120
- 1d2a: f41e sd t2,40(sp)
- 1d2c: f01a sd t1,32(sp)
- 1d2e: ec72 sd t3,24(sp)
- 1d30: e846 sd a7,16(sp)
- 1d32: d8efe0ef jal 2c0 <stbsp__real_to_str>
- 1d36: 68c2 ld a7,16(sp)
- 1d38: 6e62 ld t3,24(sp)
- 1d3a: 7302 ld t1,32(sp)
- 1d3c: 73a2 ld t2,40(sp)
- if (dp == STBSP__SPECIAL) {
- 1d3e: 5796 lw a5,100(sp)
- s = (char *)sn;
- 1d40: 7ae6 ld s5,120(sp)
- if ((l - 1) > (stbsp__uint32)pr)
- 1d42: 5686 lw a3,96(sp)
- if (stbsp__real_to_str(&sn, &l, num, &dp, fv, pr | 0x80000000))
- 1d44: 3c0511e3 bnez a0,2906 <stbsp_vsprintfcb+0x1562>
- tail[0] = 0;
- 1d48: 06010823 sb zero,112(sp)
- sign[0] = 0;
- 1d4c: 06010423 sb zero,104(sp)
- } else if (fl & STBSP__LEADINGSPACE) {
- 1d50: 004e7713 andi a4,t3,4
- 1d54: 6a070ee3 beqz a4,2c10 <stbsp_vsprintfcb+0x186c>
- sign[0] = 1;
- 1d58: 6709 lui a4,0x2
- 1d5a: 0705 addi a4,a4,1 # 2001 <stbsp_vsprintfcb+0xc5d>
- 1d5c: 06e11423 sh a4,104(sp)
- if (dp == STBSP__SPECIAL) {
- 1d60: 671d lui a4,0x7
- 1d62: 1ee794e3 bne a5,a4,274a <stbsp_vsprintfcb+0x13a6>
- if (pr < (stbsp__int32)l)
- 1d66: 0006879b sext.w a5,a3
- n = pr + lead[0] + tail[0] + tz;
- 1d6a: 06814a03 lbu s4,104(sp)
- if (pr < (stbsp__int32)l)
- 1d6e: fff7c793 not a5,a5
- n = pr + lead[0] + tail[0] + tz;
- 1d72: 07014f83 lbu t6,112(sp)
- if (pr < (stbsp__int32)l)
- 1d76: 97fd srai a5,a5,0x3f
- 1d78: 8ff5 and a5,a5,a3
- n = pr + lead[0] + tail[0] + tz;
- 1d7a: 00fa073b addw a4,s4,a5
- 1d7e: 01f7063b addw a2,a4,t6
- 1d82: 8732 mv a4,a2
- if ((fl & STBSP__LEFTJUST) == 0) {
- 1d84: 001e7513 andi a0,t3,1
- if (pr < (stbsp__int32)l)
- 1d88: 2781 sext.w a5,a5
- if (fw < (stbsp__int32)n)
- 1d8a: 835a mv t1,s6
- 1d8c: 00cb5363 bge s6,a2,1d92 <stbsp_vsprintfcb+0x9ee>
- 1d90: 8332 mv t1,a2
- fw -= n;
- 1d92: 40e3033b subw t1,t1,a4
- cs = 0;
- 1d96: 4281 li t0,0
- pr -= l;
- 1d98: 40d7873b subw a4,a5,a3
- tz = 0;
- 1d9c: 4881 li a7,0
- goto scopy;
- 1d9e: b7a1 j 1ce6 <stbsp_vsprintfcb+0x942>
- h = (f[0] == 'G') ? hexu : hex;
- 1da0: 04700713 li a4,71
- 1da4: 00005317 auipc t1,0x5
- 1da8: dc430313 addi t1,t1,-572 # 6b68 <hex.0>
- 1dac: 14e783e3 beq a5,a4,26f2 <stbsp_vsprintfcb+0x134e>
- fv = va_arg(va, double);
- 1db0: 008b8713 addi a4,s7,8
- if (pr == -1)
- 1db4: 57fd li a5,-1
- fv = va_arg(va, double);
- 1db6: e0ba sd a4,64(sp)
- 1db8: 000bb507 fld fa0,0(s7)
- if (pr == -1)
- 1dbc: 12f884e3 beq a7,a5,26e4 <stbsp_vsprintfcb+0x1340>
- else if (pr == 0)
- 1dc0: 6e0887e3 beqz a7,2cae <stbsp_vsprintfcb+0x190a>
- if (stbsp__real_to_str(&sn, &l, num, &dp, fv, (pr - 1) | 0x80000000))
- 1dc4: fff8871b addiw a4,a7,-1
- 1dc8: 800007b7 lui a5,0x80000
- 1dcc: 8f5d or a4,a4,a5
- 1dce: 2701 sext.w a4,a4
- l = stbsp__strlen_limited(s, (pr >= 0) ? pr : ~0u);
- 1dd0: 00088a9b sext.w s5,a7
- 1dd4: 8a46 mv s4,a7
- if (stbsp__real_to_str(&sn, &l, num, &dp, fv, (pr - 1) | 0x80000000))
- 1dd6: 10d4 addi a3,sp,100
- 1dd8: 0110 addi a2,sp,128
- 1dda: 108c addi a1,sp,96
- 1ddc: 18a8 addi a0,sp,120
- 1dde: f01e sd t2,32(sp)
- 1de0: ec1a sd t1,24(sp)
- 1de2: e872 sd t3,16(sp)
- 1de4: cdcfe0ef jal 2c0 <stbsp__real_to_str>
- 1de8: 6e42 ld t3,16(sp)
- 1dea: 6362 ld t1,24(sp)
- 1dec: 7382 ld t2,32(sp)
- 1dee: 4281 li t0,0
- 1df0: c509 beqz a0,1dfa <stbsp_vsprintfcb+0xa56>
- fl |= STBSP__NEGATIVE;
- 1df2: 080e6e13 ori t3,t3,128
- 1df6: 08000293 li t0,128
- if (l > (stbsp__uint32)pr)
- 1dfa: 5806 lw a6,96(sp)
- 1dfc: 010af463 bgeu s5,a6,1e04 <stbsp_vsprintfcb+0xa60>
- l = pr;
- 1e00: d0d6 sw s5,96(sp)
- 1e02: 8856 mv a6,s5
- while ((l > 1) && (pr) && (sn[l - 1] == '0')) {
- 1e04: 4705 li a4,1
- if ((dp <= -4) || (dp > (stbsp__int32)n)) {
- 1e06: 5796 lw a5,100(sp)
- while ((l > 1) && (pr) && (sn[l - 1] == '0')) {
- 1e08: 01076463 bltu a4,a6,1e10 <stbsp_vsprintfcb+0xa6c>
- 1e0c: 1800106f j 2f8c <stbsp_vsprintfcb+0x1be8>
- 1e10: 7be6 ld s7,120(sp)
- 1e12: fff8071b addiw a4,a6,-1
- 1e16: 1702 slli a4,a4,0x20
- 1e18: 9301 srli a4,a4,0x20
- 1e1a: 001a0e9b addiw t4,s4,1
- 1e1e: 75e2 ld a1,56(sp)
- 1e20: 8ade mv s5,s7
- 1e22: 975e add a4,a4,s7
- 1e24: 410e8ebb subw t4,t4,a6
- 1e28: 88d2 mv a7,s4
- 1e2a: 86c2 mv a3,a6
- 1e2c: 4f01 li t5,0
- 1e2e: 03000f93 li t6,48
- 1e32: e842 sd a6,16(sp)
- 1e34: a809 j 1e46 <stbsp_vsprintfcb+0xaa2>
- --pr;
- 1e36: 38fd addiw a7,a7,-1
- while ((l > 1) && (pr) && (sn[l - 1] == '0')) {
- 1e38: 211e80e3 beq t4,a7,2838 <stbsp_vsprintfcb+0x1494>
- 1e3c: 177d addi a4,a4,-1 # 6fff <_stdout+0x5f>
- 1e3e: 4f05 li t5,1
- 1e40: 1e088ce3 beqz a7,2838 <stbsp_vsprintfcb+0x1494>
- --l;
- 1e44: 85b6 mv a1,a3
- while ((l > 1) && (pr) && (sn[l - 1] == '0')) {
- 1e46: 00074803 lbu a6,0(a4)
- 1e4a: fff6861b addiw a2,a3,-1 # ffffff <_ZSt4cerr+0xff8687>
- 1e4e: 0006851b sext.w a0,a3
- 1e52: 2581 sext.w a1,a1
- 1e54: 0006069b sext.w a3,a2
- 1e58: fdf80fe3 beq a6,t6,1e36 <stbsp_vsprintfcb+0xa92>
- 1e5c: 6842 ld a6,16(sp)
- 1e5e: fc2e sd a1,56(sp)
- 1e60: 86c2 mv a3,a6
- 1e62: 000f0463 beqz t5,1e6a <stbsp_vsprintfcb+0xac6>
- 1e66: d0ae sw a1,96(sp)
- 1e68: 86ae mv a3,a1
- if ((dp <= -4) || (dp > (stbsp__int32)n)) {
- 1e6a: 5775 li a4,-3
- 1e6c: 08e7cee3 blt a5,a4,2708 <stbsp_vsprintfcb+0x1364>
- 1e70: 08fa4be3 blt s4,a5,2706 <stbsp_vsprintfcb+0x1362>
- pr = (dp < (stbsp__int32)l) ? l - dp : 0;
- 1e74: 0005071b sext.w a4,a0
- if (dp > 0) {
- 1e78: 7ef057e3 blez a5,2e66 <stbsp_vsprintfcb+0x1ac2>
- pr = (dp < (stbsp__int32)l) ? l - dp : 0;
- 1e7c: 4881 li a7,0
- 1e7e: 00e7d463 bge a5,a4,1e86 <stbsp_vsprintfcb+0xae2>
- 1e82: 40f508bb subw a7,a0,a5
- tail[0] = 0;
- 1e86: 06010823 sb zero,112(sp)
- if (fl & STBSP__NEGATIVE) {
- 1e8a: 20029463 bnez t0,2092 <stbsp_vsprintfcb+0xcee>
- } else if (fl & STBSP__LEADINGSPACE) {
- 1e8e: 004e7713 andi a4,t3,4
- 1e92: 000715e3 bnez a4,269c <stbsp_vsprintfcb+0x12f8>
- } else if (fl & STBSP__LEADINGPLUS) {
- 1e96: 002e7713 andi a4,t3,2
- 1e9a: 660719e3 bnez a4,2d0c <stbsp_vsprintfcb+0x1968>
- sign[0] = 0;
- 1e9e: 06010423 sb zero,104(sp)
- 1ea2: aaed j 209c <stbsp_vsprintfcb+0xcf8>
- h = (f[0] == 'A') ? hexu : hex;
- 1ea4: 04100713 li a4,65
- 1ea8: 00005597 auipc a1,0x5
- 1eac: cc058593 addi a1,a1,-832 # 6b68 <hex.0>
- 1eb0: 00e783e3 beq a5,a4,26b6 <stbsp_vsprintfcb+0x1312>
- fv = va_arg(va, double);
- 1eb4: 008b8693 addi a3,s7,8
- if (pr == -1)
- 1eb8: 577d li a4,-1
- fv = va_arg(va, double);
- 1eba: e0b6 sd a3,64(sp)
- 1ebc: 000bb783 ld a5,0(s7)
- if (pr == -1)
- 1ec0: 7ee88963 beq a7,a4,26b2 <stbsp_vsprintfcb+0x130e>
- d = value;
-
- STBSP__COPYFP(b, d);
-
- *bits = b & ((((stbsp__uint64)1) << 52) - 1);
- *expo = (stbsp__int32)(((b >> 52) & 2047) - 1023);
- 1ec4: 4347d613 srai a2,a5,0x34
- *bits = b & ((((stbsp__uint64)1) << 52) - 1);
- 1ec8: 00c79513 slli a0,a5,0xc
- *expo = (stbsp__int32)(((b >> 52) & 2047) - 1023);
- 1ecc: 7ff67613 andi a2,a2,2047
- *bits = b & ((((stbsp__uint64)1) << 52) - 1);
- 1ed0: 8131 srli a0,a0,0xc
- *expo = (stbsp__int32)(((b >> 52) & 2047) - 1023);
- 1ed2: c016061b addiw a2,a2,-1023
- if (stbsp__real_to_parts((stbsp__int64 *)&n64, &dp, fv))
- 1ed6: 7a07c863 bltz a5,2686 <stbsp_vsprintfcb+0x12e2>
- } else if (fl & STBSP__LEADINGSPACE) {
- 1eda: 004e7793 andi a5,t3,4
- 1ede: 60078ee3 beqz a5,2cfa <stbsp_vsprintfcb+0x1956>
- 1ee2: 6789 lui a5,0x2
- 1ee4: 2785 addiw a5,a5,1 # 2001 <stbsp_vsprintfcb+0xc5d>
- sign[0] = 1;
- 1ee6: 06f11423 sh a5,104(sp)
- 1eea: 468d li a3,3
- 1eec: 4a0d li s4,3
- 1eee: 4809 li a6,2
- n64 |= (((stbsp__uint64)1) << 52);
- 1ef0: 4705 li a4,1
- 1ef2: 1752 slli a4,a4,0x34
- if (dp == -1023)
- 1ef4: c0100793 li a5,-1023
- n64 |= (((stbsp__uint64)1) << 52);
- 1ef8: 8f49 or a4,a4,a0
- if (dp == -1023)
- 1efa: 5cf600e3 beq a2,a5,2cba <stbsp_vsprintfcb+0x1916>
- if (pr < 15)
- 1efe: 4539 li a0,14
- n64 <<= (64 - 56);
- 1f00: 00871793 slli a5,a4,0x8
- if (pr < 15)
- 1f04: 251546e3 blt a0,a7,2950 <stbsp_vsprintfcb+0x15ac>
- n64 += ((((stbsp__uint64)8) << 56) >> (pr * 4));
- 1f08: 4705 li a4,1
- 1f0a: 0028951b slliw a0,a7,0x2
- 1f0e: 176e slli a4,a4,0x3b
- 1f10: 00a75733 srl a4,a4,a0
- 1f14: 973e add a4,a4,a5
- *s++ = h[(n64 >> 60) & 15];
- 1f16: 03c75793 srli a5,a4,0x3c
- 1f1a: 97ae add a5,a5,a1
- 1f1c: 0007c503 lbu a0,0(a5)
- lead[1 + lead[0]] = '0';
- 1f20: 22080793 addi a5,a6,544
- 1f24: 06010813 addi a6,sp,96
- 1f28: 97c2 add a5,a5,a6
- 1f2a: 03000813 li a6,48
- 1f2e: df078423 sb a6,-536(a5)
- lead[2 + lead[0]] = 'x';
- 1f32: 22068793 addi a5,a3,544
- 1f36: 1094 addi a3,sp,96
- 1f38: 96be add a3,a3,a5
- 1f3a: 07800793 li a5,120
- 1f3e: def68423 sb a5,-536(a3)
- lead[0] += 2;
- 1f42: 07410423 sb s4,104(sp)
- *s++ = h[(n64 >> 60) & 15];
- 1f46: 0ca10023 sb a0,192(sp)
- if (pr)
- 1f4a: 740893e3 bnez a7,2e90 <stbsp_vsprintfcb+0x1aec>
- sn = s;
- 1f4e: 0c110793 addi a5,sp,193
- 1f52: fcbe sd a5,120(sp)
- 1f54: 4701 li a4,0
- 1f56: 4501 li a0,0
- 1f58: 4305 li t1,1
- 1f5a: 4685 li a3,1
- tail[1] = h[17];
- 1f5c: 0115c583 lbu a1,17(a1)
- tail[2] = '+';
- 1f60: 02b00793 li a5,43
- tail[1] = h[17];
- 1f64: 06b108a3 sb a1,113(sp)
- if (dp < 0) {
- 1f68: 00065663 bgez a2,1f74 <stbsp_vsprintfcb+0xbd0>
- dp = -dp;
- 1f6c: 40c0063b negw a2,a2
- tail[2] = '-';
- 1f70: 02d00793 li a5,45
- tail[n] = '0' + dp % 10;
- 1f74: 4829 li a6,10
- 1f76: 030665bb remw a1,a2,a6
- 1f7a: 06f10923 sb a5,114(sp)
- n = (dp >= 1000) ? 6 : ((dp >= 100) ? 5 : ((dp >= 10) ? 4 : 3));
- 1f7e: 3e700e93 li t4,999
- tail[n] = '0' + dp % 10;
- 1f82: 0305859b addiw a1,a1,48
- 1f86: 0ff5f593 zext.b a1,a1
- n = (dp >= 1000) ? 6 : ((dp >= 100) ? 5 : ((dp >= 10) ? 4 : 3));
- 1f8a: 18cec3e3 blt t4,a2,2910 <stbsp_vsprintfcb+0x156c>
- 1f8e: 06300e93 li t4,99
- 1f92: 54cec1e3 blt t4,a2,2cd4 <stbsp_vsprintfcb+0x1930>
- 1f96: 4ea5 li t4,9
- 1f98: 72ced6e3 bge t4,a2,2ec4 <stbsp_vsprintfcb+0x1b20>
- dp /= 10;
- 1f9c: 030647bb divw a5,a2,a6
- tail[0] = (char)n;
- 1fa0: 4611 li a2,4
- 1fa2: 06c10823 sb a2,112(sp)
- tail[n] = '0' + dp % 10;
- 1fa6: 06b10a23 sb a1,116(sp)
- 1faa: 4811 li a6,4
- 1fac: 4f91 li t6,4
- 1fae: 0307879b addiw a5,a5,48
- 1fb2: 06f109a3 sb a5,115(sp)
- n = pr + lead[0] + tail[0] + tz;
- 1fb6: 006a07bb addw a5,s4,t1
- 1fba: 010787bb addw a5,a5,a6
- 1fbe: 0117863b addw a2,a5,a7
- dp = (int)(s - sn);
- 1fc2: d2aa sw a0,100(sp)
- l = (int)(s - (num + 64));
- 1fc4: d0b6 sw a3,96(sp)
- n = pr + lead[0] + tail[0] + tz;
- 1fc6: 87b2 mv a5,a2
- if ((fl & STBSP__LEFTJUST) == 0) {
- 1fc8: 001e7513 andi a0,t3,1
- if (fw < (stbsp__int32)n)
- 1fcc: 835a mv t1,s6
- 1fce: 00cb5363 bge s6,a2,1fd4 <stbsp_vsprintfcb+0xc30>
- 1fd2: 8332 mv t1,a2
- cs = 1 + (3 << 24);
- 1fd4: 030002b7 lui t0,0x3000
- fw -= n;
- 1fd8: 40f3033b subw t1,t1,a5
- cs = 1 + (3 << 24);
- 1fdc: 0285 addi t0,t0,1 # 3000001 <_ZSt4cerr+0x2ff8689>
- s = num + 64;
- 1fde: 0c010a93 addi s5,sp,192
- goto scopy;
- 1fe2: b311 j 1ce6 <stbsp_vsprintfcb+0x942>
- h = (f[0] == 'B') ? hexu : hex;
- 1fe4: 04200713 li a4,66
- 1fe8: 00005817 auipc a6,0x5
- 1fec: b8080813 addi a6,a6,-1152 # 6b68 <hex.0>
- 1ff0: 6ce78963 beq a5,a4,26c2 <stbsp_vsprintfcb+0x131e>
- if (fl & STBSP__LEADING_0X) {
- 1ff4: 008e7793 andi a5,t3,8
- 1ff8: 66079e63 bnez a5,2674 <stbsp_vsprintfcb+0x12d0>
- lead[0] = 0;
- 1ffc: 06010423 sb zero,104(sp)
- l = (8 << 4) | (1 << 8);
- 2000: 18000793 li a5,384
- 2004: d0be sw a5,96(sp)
- if (fl & STBSP__INTMAX) {
- 2006: 020e7713 andi a4,t3,32
- goto radixnum;
- 200a: b979 j 1ca8 <stbsp_vsprintfcb+0x904>
- *s = (char)va_arg(va, int);
- 200c: 000ba783 lw a5,0(s7)
- l = 1;
- 2010: 4705 li a4,1
- 2012: d0ba sw a4,96(sp)
- *s = (char)va_arg(va, int);
- 2014: 26f10fa3 sb a5,639(sp)
- 2018: 008b8793 addi a5,s7,8
- lead[0] = 0;
- 201c: 06010423 sb zero,104(sp)
- tail[0] = 0;
- 2020: 06010823 sb zero,112(sp)
- dp = 0;
- 2024: d282 sw zero,100(sp)
- *s = (char)va_arg(va, int);
- 2026: e0be sd a5,64(sp)
- if ((fl & STBSP__LEFTJUST) == 0) {
- 2028: 001e7513 andi a0,t3,1
- if (fw < (stbsp__int32)n)
- 202c: 835a mv t1,s6
- 202e: 69605063 blez s6,26ae <stbsp_vsprintfcb+0x130a>
- fw -= n;
- 2032: 337d addiw t1,t1,-1
- goto scopy;
- 2034: 4701 li a4,0
- 2036: 4f81 li t6,0
- 2038: 4685 li a3,1
- 203a: 4a01 li s4,0
- cs = 0;
- 203c: 4281 li t0,0
- s = num + STBSP__NUMSZ - 1;
- 203e: 27f10a93 addi s5,sp,639
- tz = 0;
- 2042: 4881 li a7,0
- goto scopy;
- 2044: b14d j 1ce6 <stbsp_vsprintfcb+0x942>
- fv = va_arg(va, double);
- 2046: 008b8713 addi a4,s7,8
- if (fl & STBSP__METRIC_SUFFIX) {
- 204a: 100e7793 andi a5,t3,256
- fv = va_arg(va, double);
- 204e: e0ba sd a4,64(sp)
- 2050: 000bb507 fld fa0,0(s7)
- if (fl & STBSP__METRIC_SUFFIX) {
- 2054: be0795e3 bnez a5,1c3e <stbsp_vsprintfcb+0x89a>
- if (pr == -1)
- 2058: 57fd li a5,-1
- if (stbsp__real_to_str(&sn, &l, num, &dp, fv, pr))
- 205a: 0008871b sext.w a4,a7
- if (pr == -1)
- 205e: 00f89463 bne a7,a5,2066 <stbsp_vsprintfcb+0xcc2>
- 2062: 4719 li a4,6
- pr = 6; // default is 6
- 2064: 4899 li a7,6
- if (stbsp__real_to_str(&sn, &l, num, &dp, fv, pr))
- 2066: 10d4 addi a3,sp,100
- 2068: 0110 addi a2,sp,128
- 206a: 108c addi a1,sp,96
- 206c: 18a8 addi a0,sp,120
- 206e: f01e sd t2,32(sp)
- 2070: ec72 sd t3,24(sp)
- 2072: e846 sd a7,16(sp)
- 2074: a4cfe0ef jal 2c0 <stbsp__real_to_str>
- 2078: 6e62 ld t3,24(sp)
- 207a: 68c2 ld a7,16(sp)
- 207c: 7382 ld t2,32(sp)
- if (dp == STBSP__SPECIAL) {
- 207e: 5796 lw a5,100(sp)
- if ((stbsp__int32)(l + n) > pr)
- 2080: 5686 lw a3,96(sp)
- if (fl & STBSP__NEGATIVE) {
- 2082: 080e7293 andi t0,t3,128
- if (stbsp__real_to_str(&sn, &l, num, &dp, fv, pr))
- 2086: e00500e3 beqz a0,1e86 <stbsp_vsprintfcb+0xae2>
- fl |= STBSP__NEGATIVE;
- 208a: 080e6e13 ori t3,t3,128
- tail[0] = 0;
- 208e: 06010823 sb zero,112(sp)
- sign[0] = 1;
- 2092: 670d lui a4,0x3
- 2094: d0170713 addi a4,a4,-767 # 2d01 <stbsp_vsprintfcb+0x195d>
- 2098: 06e11423 sh a4,104(sp)
- if (dp == STBSP__SPECIAL) {
- 209c: 671d lui a4,0x7
- 209e: 7ce78963 beq a5,a4,2870 <stbsp_vsprintfcb+0x14cc>
- if (dp <= 0) {
- 20a2: 46f05fe3 blez a5,2d20 <stbsp_vsprintfcb+0x197c>
- cs = (fl & STBSP__TRIPLET_COMMA) ? ((600 - (stbsp__uint32)dp) % 3) : 0;
- 20a6: 040e7313 andi t1,t3,64
- 20aa: 00078e9b sext.w t4,a5
- 20ae: 4581 li a1,0
- 20b0: 00030963 beqz t1,20c2 <stbsp_vsprintfcb+0xd1e>
- 20b4: 25800593 li a1,600
- 20b8: 41d585bb subw a1,a1,t4
- 20bc: 470d li a4,3
- 20be: 02e5f5bb remuw a1,a1,a4
- *s++ = stbsp__comma;
- 20c2: 00005a17 auipc s4,0x5
- 20c6: 9bea0a13 addi s4,s4,-1602 # 6a80 <stbsp__digitpair>
- s = (char *)sn;
- 20ca: 7f66 ld t5,120(sp)
- *s++ = stbsp__comma;
- 20cc: 0cda4283 lbu t0,205(s4)
- s = num + 64;
- 20d0: 0c010a93 addi s5,sp,192
- if ((stbsp__uint32)dp >= l) {
- 20d4: 44defb63 bgeu t4,a3,252a <stbsp_vsprintfcb+0x1186>
- n = 0;
- 20d8: 4501 li a0,0
- s = num + 64;
- 20da: 8756 mv a4,s5
- if ((fl & STBSP__TRIPLET_COMMA) && (++cs == 4)) {
- 20dc: 4b91 li s7,4
- 20de: a015 j 2102 <stbsp_vsprintfcb+0xd5e>
- 20e0: 8642 mv a2,a6
- 20e2: 883a mv a6,a4
- 20e4: 8732 mv a4,a2
- *s++ = sn[n];
- 20e6: 02051613 slli a2,a0,0x20
- 20ea: 9201 srli a2,a2,0x20
- 20ec: 967a add a2,a2,t5
- 20ee: 00064f83 lbu t6,0(a2)
- ++n;
- 20f2: 0015061b addiw a2,a0,1
- 20f6: 0006051b sext.w a0,a2
- *s++ = sn[n];
- 20fa: fff70fa3 sb t6,-1(a4) # 6fff <_stdout+0x5f>
- if (n >= (stbsp__uint32)dp)
- 20fe: 7bd57563 bgeu a0,t4,28a8 <stbsp_vsprintfcb+0x1504>
- *s++ = stbsp__comma;
- 2102: 00170813 addi a6,a4,1
- if ((fl & STBSP__TRIPLET_COMMA) && (++cs == 4)) {
- 2106: fc030de3 beqz t1,20e0 <stbsp_vsprintfcb+0xd3c>
- 210a: 2585 addiw a1,a1,1
- 210c: fd759ae3 bne a1,s7,20e0 <stbsp_vsprintfcb+0xd3c>
- *s++ = stbsp__comma;
- 2110: fe580fa3 sb t0,-1(a6)
- 2114: 0709 addi a4,a4,2
- if ((fl & STBSP__TRIPLET_COMMA) && (++cs == 4)) {
- 2116: 4585 li a1,1
- 2118: b7f9 j 20e6 <stbsp_vsprintfcb+0xd42>
- *d = tlen + (int)(bf - buf);
- 211a: 000bb703 ld a4,0(s7)
- 211e: 412407b3 sub a5,s0,s2
- 2122: 01a787bb addw a5,a5,s10
- int *d = va_arg(va, int *);
- 2126: 008b8693 addi a3,s7,8
- 212a: e0b6 sd a3,64(sp)
- *d = tlen + (int)(bf - buf);
- 212c: c31c sw a5,0(a4)
- } break;
- 212e: bae5 j 1b26 <stbsp_vsprintfcb+0x782>
- if (fl & STBSP__LEADING_0X) {
- 2130: 008e7793 andi a5,t3,8
- 2134: 50079b63 bnez a5,264a <stbsp_vsprintfcb+0x12a6>
- lead[0] = 0;
- 2138: 06010423 sb zero,104(sp)
- l = (3 << 4) | (3 << 8);
- 213c: 33000793 li a5,816
- 2140: d0be sw a5,96(sp)
- if (fl & STBSP__INTMAX) {
- 2142: 020e7713 andi a4,t3,32
- h = hexu;
- 2146: 00005817 auipc a6,0x5
- 214a: a0a80813 addi a6,a6,-1526 # 6b50 <hexu.1>
- goto radixnum;
- 214e: bea9 j 1ca8 <stbsp_vsprintfcb+0x904>
- fl &= ~STBSP__LEADINGZERO; // 'p' only prints the pointer with zeros
- 2150: fefe7e13 andi t3,t3,-17
- 2154: 020e6e13 ori t3,t3,32
- 2158: 02000713 li a4,32
- pr = sizeof(void *) * 2;
- 215c: 48c1 li a7,16
- h = (f[0] == 'X') ? hexu : hex;
- 215e: 00005817 auipc a6,0x5
- 2162: a0a80813 addi a6,a6,-1526 # 6b68 <hex.0>
- 2166: be05 j 1c96 <stbsp_vsprintfcb+0x8f2>
- s = va_arg(va, char *);
- 2168: 000bba83 ld s5,0(s7)
- 216c: 008b8793 addi a5,s7,8
- 2170: e0be sd a5,64(sp)
- if (s == 0)
- 2172: 360a8ee3 beqz s5,2cee <stbsp_vsprintfcb+0x194a>
- if (((stbsp__uintptr)sn & 3) == 0)
- 2176: 003af793 andi a5,s5,3
- l = stbsp__strlen_limited(s, (pr >= 0) ? pr : ~0u);
- 217a: 5208c663 bltz a7,26a6 <stbsp_vsprintfcb+0x1302>
- 217e: 0008869b sext.w a3,a7
- if (((stbsp__uintptr)sn & 3) == 0)
- 2182: 2a0782e3 beqz a5,2c26 <stbsp_vsprintfcb+0x1882>
- if (!limit || *sn == 0)
- 2186: 5a068b63 beqz a3,273c <stbsp_vsprintfcb+0x1398>
- if (((stbsp__uintptr)sn & 3) == 0)
- 218a: 87d6 mv a5,s5
- 218c: a801 j 219c <stbsp_vsprintfcb+0xdf8>
- ++sn;
- 218e: 0785 addi a5,a5,1
- if (((stbsp__uintptr)sn & 3) == 0)
- 2190: 0037f713 andi a4,a5,3
- --limit;
- 2194: 36fd addiw a3,a3,-1
- if (((stbsp__uintptr)sn & 3) == 0)
- 2196: 280709e3 beqz a4,2c28 <stbsp_vsprintfcb+0x1884>
- if (!limit || *sn == 0)
- 219a: c681 beqz a3,21a2 <stbsp_vsprintfcb+0xdfe>
- 219c: 0007c703 lbu a4,0(a5)
- 21a0: f77d bnez a4,218e <stbsp_vsprintfcb+0xdea>
- return (stbsp__uint32)(sn - s);
- 21a2: 415787b3 sub a5,a5,s5
- 21a6: 0007869b sext.w a3,a5
- if (pr < (stbsp__int32)l)
- 21aa: fff6c713 not a4,a3
- 21ae: 977d srai a4,a4,0x3f
- 21b0: 8f7d and a4,a4,a5
- 21b2: 0007079b sext.w a5,a4
- n = pr + lead[0] + tail[0] + tz;
- 21b6: 863e mv a2,a5
- pr -= l;
- 21b8: 9f15 subw a4,a4,a3
- l = stbsp__strlen_limited(s, (pr >= 0) ? pr : ~0u);
- 21ba: d0b6 sw a3,96(sp)
- lead[0] = 0;
- 21bc: 06010423 sb zero,104(sp)
- tail[0] = 0;
- 21c0: 06010823 sb zero,112(sp)
- dp = 0;
- 21c4: d282 sw zero,100(sp)
- if ((fl & STBSP__LEFTJUST) == 0) {
- 21c6: 001e7513 andi a0,t3,1
- if (fw < (stbsp__int32)n)
- 21ca: 835a mv t1,s6
- 21cc: 00fb5363 bge s6,a5,21d2 <stbsp_vsprintfcb+0xe2e>
- 21d0: 833e mv t1,a5
- fw -= n;
- 21d2: 40c3033b subw t1,t1,a2
- goto scopy;
- 21d6: 4f81 li t6,0
- 21d8: 4a01 li s4,0
- cs = 0;
- 21da: 4281 li t0,0
- tz = 0;
- 21dc: 4881 li a7,0
- goto scopy;
- 21de: b621 j 1ce6 <stbsp_vsprintfcb+0x942>
- *bf++ = stbsp__comma;
- 21e0: 87b2 mv a5,a2
- cs = 0;
- 21e2: 4a01 li s4,0
- 21e4: e44ff06f j 1828 <stbsp_vsprintfcb+0x484>
- lead[0] -= (char)i;
- 21e8: 06010423 sb zero,104(sp)
- while (i) {
- 21ec: d38ff06f j 1724 <stbsp_vsprintfcb+0x380>
- lead[0] -= (char)i;
- 21f0: 06010423 sb zero,104(sp)
- while (i) {
- 21f4: ed8ff06f j 18cc <stbsp_vsprintfcb+0x528>
- while (i >= 4) {
- 21f8: 06fadc63 bge s5,a5,2270 <stbsp_vsprintfcb+0xecc>
- tz -= i;
- 21fc: 8722 mv a4,s0
- 21fe: 0007851b sext.w a0,a5
- while (i >= 4) {
- 2202: 008785bb addw a1,a5,s0
- *(stbsp__uint32 *)bf = 0x30303030;
- 2206: 01672023 sw s6,0(a4)
- bf += 4;
- 220a: 0711 addi a4,a4,4
- while (i >= 4) {
- 220c: 40e5863b subw a2,a1,a4
- 2210: fecacbe3 blt s5,a2,2206 <stbsp_vsprintfcb+0xe62>
- 2214: ffc5061b addiw a2,a0,-4
- 2218: 0026561b srliw a2,a2,0x2
- 221c: 0016071b addiw a4,a2,1
- 2220: 37f1 addiw a5,a5,-4
- 2222: 0026161b slliw a2,a2,0x2
- 2226: 070a slli a4,a4,0x2
- 2228: 9722 add a4,a4,s0
- 222a: 9f91 subw a5,a5,a2
- while (i) {
- 222c: 843a mv s0,a4
- 222e: 80078de3 beqz a5,1a48 <stbsp_vsprintfcb+0x6a4>
- 2232: 1782 slli a5,a5,0x20
- 2234: 9381 srli a5,a5,0x20
- 2236: 00f70433 add s0,a4,a5
- *bf++ = '0';
- 223a: 0705 addi a4,a4,1
- 223c: ff470fa3 sb s4,-1(a4)
- while (i) {
- 2240: fe871de3 bne a4,s0,223a <stbsp_vsprintfcb+0xe96>
- 2244: 805ff06f j 1a48 <stbsp_vsprintfcb+0x6a4>
- stbsp__cb_buf_clamp(i, pr);
- 2248: 85ce mv a1,s3
- if ((fl & STBSP__TRIPLET_COMMA) == 0) {
- 224a: 4981 li s3,0
- 224c: dc049263 bnez s1,1810 <stbsp_vsprintfcb+0x46c>
- 2250: b8d5 j 1b44 <stbsp_vsprintfcb+0x7a0>
- STBSP__UNALIGNED(while (i >= 4) {
- 2252: 4401 li s0,0
- 2254: 85be mv a1,a5
- 2256: f0ea4b63 blt s4,a4,196c <stbsp_vsprintfcb+0x5c8>
- 225a: f42ff06f j 199c <stbsp_vsprintfcb+0x5f8>
- if ((((stbsp__uintptr)bf) & 3) == 0)
- 225e: 00347713 andi a4,s0,3
- stbsp__cb_buf_clamp(i, tz);
- 2262: 87c6 mv a5,a7
- tz -= i;
- 2264: 4881 li a7,0
- if ((((stbsp__uintptr)bf) & 3) == 0)
- 2266: fc071c63 bnez a4,1a3e <stbsp_vsprintfcb+0x69a>
- while (i >= 4) {
- 226a: 470d li a4,3
- 226c: f8f748e3 blt a4,a5,21fc <stbsp_vsprintfcb+0xe58>
- 2270: 8722 mv a4,s0
- 2272: b7c1 j 2232 <stbsp_vsprintfcb+0xe8e>
- tail[0] -= (char)i;
- 2274: 06010823 sb zero,112(sp)
- while (i) {
- 2278: b0b9 j 1ac6 <stbsp_vsprintfcb+0x722>
- while (i >= 4) {
- 227a: 478d li a5,3
- 227c: 8622 mv a2,s0
- 227e: d8b7d963 bge a5,a1,1810 <stbsp_vsprintfcb+0x46c>
- 2282: ffc5839b addiw t2,a1,-4
- 2286: 0023d79b srliw a5,t2,0x2
- 228a: 0017859b addiw a1,a5,1
- 228e: 058a slli a1,a1,0x2
- 2290: 942e add s0,s0,a1
- *(stbsp__uint32 *)bf = 0x30303030;
- 2292: 01762023 sw s7,0(a2)
- bf += 4;
- 2296: 0611 addi a2,a2,4
- while (i >= 4) {
- 2298: fe861de3 bne a2,s0,2292 <stbsp_vsprintfcb+0xeee>
- 229c: 0027979b slliw a5,a5,0x2
- 22a0: 40f385bb subw a1,t2,a5
- 22a4: d68ff06f j 180c <stbsp_vsprintfcb+0x468>
- while (i) {
- 22a8: 85be mv a1,a5
- 22aa: ee071963 bnez a4,199c <stbsp_vsprintfcb+0x5f8>
- 22ae: f16ff06f j 19c4 <stbsp_vsprintfcb+0x620>
- 22b2: 2c013a03 ld s4,704(sp)
- 22b6: 2b813a83 ld s5,696(sp)
- 22ba: 2b013b03 ld s6,688(sp)
- 22be: 8ca2 mv s9,s0
- 22c0: a04ff06f j 14c4 <stbsp_vsprintfcb+0x120>
- stbsp__chk_cb_buf(1);
- 22c4: 2601 sext.w a2,a2
- 22c6: 1fe00793 li a5,510
- 22ca: f8c7c563 blt a5,a2,1a54 <stbsp_vsprintfcb+0x6b0>
- 22ce: f3eff06f j 1a0c <stbsp_vsprintfcb+0x668>
- fl &= ~STBSP__TRIPLET_COMMA; // if no leading zeros, then no commas
- 22d2: fbfe7e13 andi t3,t3,-65
- if (fw + pr) {
- 22d6: 006707bb addw a5,a4,t1
- fl &= ~STBSP__TRIPLET_COMMA; // if no leading zeros, then no commas
- 22da: 2e01 sext.w t3,t3
- if (fw + pr) {
- 22dc: a0078be3 beqz a5,1cf2 <stbsp_vsprintfcb+0x94e>
- while (fw > 0) {
- 22e0: be605663 blez t1,16cc <stbsp_vsprintfcb+0x328>
- *(stbsp__uint32 *)bf = 0x20202020;
- 22e4: 20202837 lui a6,0x20202
- stbsp__cb_buf_clamp(i, fw);
- 22e8: 854a mv a0,s2
- 22ea: 894e mv s2,s3
- 22ec: 69a2 ld s3,8(sp)
- *(stbsp__uint32 *)bf = 0x20202020;
- 22ee: 02080813 addi a6,a6,32 # 20202020 <_ZSt4cerr+0x201fa6a8>
- stbsp__cb_buf_clamp(i, fw);
- 22f2: ec52 sd s4,24(sp)
- 22f4: f426 sd s1,40(sp)
- 22f6: 87a2 mv a5,s0
- 22f8: 84ea mv s1,s10
- stbsp__chk_cb_buf(1);
- 22fa: 1fe00f13 li t5,510
- stbsp__cb_buf_clamp(i, fw);
- 22fe: 8d6e mv s10,s11
- *bf++ = ' ';
- 2300: 02000b13 li s6,32
- stbsp__cb_buf_clamp(i, fw);
- 2304: 8de6 mv s11,s9
- while (i >= 4) {
- 2306: 4b8d li s7,3
- stbsp__cb_buf_clamp(i, fw);
- 2308: 20000e93 li t4,512
- 230c: e846 sd a7,16(sp)
- 230e: f07e sd t6,32(sp)
- 2310: f836 sd a3,48(sp)
- 2312: e4f2 sd t3,72(sp)
- 2314: e8ba sd a4,80(sp)
- 2316: ec96 sd t0,88(sp)
- 2318: 841a mv s0,t1
- 231a: 8a42 mv s4,a6
- 231c: 8c9e mv s9,t2
- 231e: 0c090063 beqz s2,23de <stbsp_vsprintfcb+0x103a>
- 2322: 40a78633 sub a2,a5,a0
- 2326: 40ce873b subw a4,t4,a2
- 232a: 86ba mv a3,a4
- 232c: 00e45363 bge s0,a4,2332 <stbsp_vsprintfcb+0xf8e>
- 2330: 86a2 mv a3,s0
- 2332: 0006871b sext.w a4,a3
- fw -= i;
- 2336: 9c15 subw s0,s0,a3
- while (i) {
- 2338: e719 bnez a4,2346 <stbsp_vsprintfcb+0xfa2>
- 233a: a095 j 239e <stbsp_vsprintfcb+0xffa>
- *bf++ = ' ';
- 233c: 01678023 sb s6,0(a5)
- --i;
- 2340: 377d addiw a4,a4,-1
- *bf++ = ' ';
- 2342: 0785 addi a5,a5,1
- while (i) {
- 2344: cb29 beqz a4,2396 <stbsp_vsprintfcb+0xff2>
- if ((((stbsp__uintptr)bf) & 3) == 0)
- 2346: 0037f693 andi a3,a5,3
- 234a: faed bnez a3,233c <stbsp_vsprintfcb+0xf98>
- while (i >= 4) {
- 234c: 86be mv a3,a5
- 234e: 00070f9b sext.w t6,a4
- 2352: 00f705bb addw a1,a4,a5
- 2356: 02ebd763 bge s7,a4,2384 <stbsp_vsprintfcb+0xfe0>
- *(stbsp__uint32 *)bf = 0x20202020;
- 235a: 0146a023 sw s4,0(a3)
- bf += 4;
- 235e: 0691 addi a3,a3,4
- while (i >= 4) {
- 2360: 40d5863b subw a2,a1,a3
- 2364: fecbcbe3 blt s7,a2,235a <stbsp_vsprintfcb+0xfb6>
- 2368: ffcf861b addiw a2,t6,-4 # fffffffff7fffffc <_ZSt4cerr+0xfffffffff7ff8684>
- 236c: 0026561b srliw a2,a2,0x2
- 2370: 0016069b addiw a3,a2,1
- 2374: 3771 addiw a4,a4,-4
- 2376: 0026161b slliw a2,a2,0x2
- 237a: 068a slli a3,a3,0x2
- 237c: 96be add a3,a3,a5
- 237e: 9f11 subw a4,a4,a2
- while (i) {
- 2380: 87b6 mv a5,a3
- 2382: cb11 beqz a4,2396 <stbsp_vsprintfcb+0xff2>
- 2384: 1702 slli a4,a4,0x20
- 2386: 9301 srli a4,a4,0x20
- 2388: 00e687b3 add a5,a3,a4
- *bf++ = ' ';
- 238c: 0685 addi a3,a3,1
- 238e: ff668fa3 sb s6,-1(a3)
- while (i) {
- 2392: fef69de3 bne a3,a5,238c <stbsp_vsprintfcb+0xfe8>
- stbsp__chk_cb_buf(1);
- 2396: 40a78633 sub a2,a5,a0
- 239a: 00090e63 beqz s2,23b6 <stbsp_vsprintfcb+0x1012>
- 239e: 2601 sext.w a2,a2
- 23a0: 00cf5b63 bge t5,a2,23b6 <stbsp_vsprintfcb+0x1012>
- 23a4: 85ce mv a1,s3
- 23a6: 9cb1 addw s1,s1,a2
- 23a8: 9902 jalr s2
- 23aa: c541 beqz a0,2432 <stbsp_vsprintfcb+0x108e>
- 23ac: 87aa mv a5,a0
- 23ae: 20000e93 li t4,512
- 23b2: 1fe00f13 li t5,510
- while (fw > 0) {
- 23b6: f68044e3 bgtz s0,231e <stbsp_vsprintfcb+0xf7a>
- 23ba: 8322 mv t1,s0
- 23bc: 89ca mv s3,s2
- 23be: 83e6 mv t2,s9
- 23c0: 68c2 ld a7,16(sp)
- 23c2: 8cee mv s9,s11
- 23c4: 6a62 ld s4,24(sp)
- 23c6: 8dea mv s11,s10
- 23c8: 7f82 ld t6,32(sp)
- 23ca: 8d26 mv s10,s1
- 23cc: 76c2 ld a3,48(sp)
- 23ce: 6e26 ld t3,72(sp)
- 23d0: 6746 ld a4,80(sp)
- 23d2: 62e6 ld t0,88(sp)
- 23d4: 74a2 ld s1,40(sp)
- 23d6: 892a mv s2,a0
- 23d8: 843e mv s0,a5
- 23da: af2ff06f j 16cc <stbsp_vsprintfcb+0x328>
- stbsp__cb_buf_clamp(i, fw);
- 23de: 8722 mv a4,s0
- 23e0: 4401 li s0,0
- if ((((stbsp__uintptr)bf) & 3) == 0)
- 23e2: b795 j 2346 <stbsp_vsprintfcb+0xfa2>
- n64 = va_arg(va, stbsp__uint32);
- 23e4: 000be683 lwu a3,0(s7)
- 23e8: b0f9 j 1cb6 <stbsp_vsprintfcb+0x912>
- 23ea: 2c013a03 ld s4,704(sp)
- 23ee: 2b813a83 ld s5,696(sp)
- 23f2: 2b013b03 ld s6,688(sp)
- 23f6: 8cca mv s9,s2
- 23f8: 8ccff06f j 14c4 <stbsp_vsprintfcb+0x120>
- 23fc: 8cd6 mv s9,s5
- 23fe: 2c013a03 ld s4,704(sp)
- 2402: 2b813a83 ld s5,696(sp)
- 2406: 2b013b03 ld s6,688(sp)
- 240a: 8baff06f j 14c4 <stbsp_vsprintfcb+0x120>
- 240e: 2c013a03 ld s4,704(sp)
- 2412: 2b813a83 ld s5,696(sp)
- 2416: 2b013b03 ld s6,688(sp)
- 241a: 8cea mv s9,s10
- 241c: 8a8ff06f j 14c4 <stbsp_vsprintfcb+0x120>
- while (i) {
- 2420: 85a2 mv a1,s0
- 2422: c12ff06f j 1834 <stbsp_vsprintfcb+0x490>
- while (i >= 4) {
- 2426: 478d li a5,3
- 2428: 8622 mv a2,s0
- 242a: e4b7cce3 blt a5,a1,2282 <stbsp_vsprintfcb+0xede>
- 242e: be2ff06f j 1810 <stbsp_vsprintfcb+0x46c>
- 2432: 2c013a03 ld s4,704(sp)
- 2436: 2b813a83 ld s5,696(sp)
- 243a: 2b013b03 ld s6,688(sp)
- 243e: 8ca6 mv s9,s1
- 2440: 884ff06f j 14c4 <stbsp_vsprintfcb+0x120>
- lead[2] = h[16];
- 2444: 01084683 lbu a3,16(a6)
- lead[0] = 2;
- 2448: 678d lui a5,0x3
- 244a: 0789 addi a5,a5,2 # 3002 <stbsp_vsnprintf+0x1a>
- 244c: 06f11423 sh a5,104(sp)
- lead[2] = h[16];
- 2450: 06d10523 sb a3,106(sp)
- 2454: b891 j 1ca8 <stbsp_vsprintfcb+0x904>
- 2456: 8cea mv s9,s10
- 2458: 86cff06f j 14c4 <stbsp_vsprintfcb+0x120>
- 245c: 4f81 li t6,0
- 245e: 4a01 li s4,0
- 2460: 5586 lw a1,96(sp)
- *--s = stbsp__comma;
- 2462: 00004f17 auipc t5,0x4
- 2466: 6ebf4f03 lbu t5,1771(t5) # 6b4d <stbsp__comma>
- 246a: 0510 addi a2,sp,640
- 246c: 0085d71b srliw a4,a1,0x8
- *--s = h[n64 & ((1 << (l >> 8)) - 1)];
- 2470: 4305 li t1,1
- if (fl & STBSP__TRIPLET_COMMA) {
- 2472: 040e7e93 andi t4,t3,64
- *--s = h[n64 & ((1 << (l >> 8)) - 1)];
- 2476: 0007029b sext.w t0,a4
- 247a: 005317bb sllw a5,t1,t0
- 247e: 37fd addiw a5,a5,-1
- 2480: 8ff5 and a5,a5,a3
- 2482: 97c2 add a5,a5,a6
- 2484: 0007c783 lbu a5,0(a5)
- n64 >>= (l >> 8);
- 2488: 0056d6b3 srl a3,a3,t0
- *--s = h[n64 & ((1 << (l >> 8)) - 1)];
- 248c: fff60a93 addi s5,a2,-1
- 2490: fef60fa3 sb a5,-1(a2)
- if (!((n64) || ((stbsp__int32)((num + STBSP__NUMSZ) - s) < pr)))
- 2494: e691 bnez a3,24a0 <stbsp_vsprintfcb+0x10fc>
- 2496: 051c addi a5,sp,640
- 2498: 415787bb subw a5,a5,s5
- 249c: 0317dd63 bge a5,a7,24d6 <stbsp_vsprintfcb+0x1132>
- if (fl & STBSP__TRIPLET_COMMA) {
- 24a0: 020e8963 beqz t4,24d2 <stbsp_vsprintfcb+0x112e>
- ++l;
- 24a4: 0015879b addiw a5,a1,1
- if ((l & 15) == ((l >> 4) & 15)) {
- 24a8: 0047d29b srliw t0,a5,0x4
- 24ac: 00f2c2b3 xor t0,t0,a5
- 24b0: 00f2f293 andi t0,t0,15
- ++l;
- 24b4: 0007859b sext.w a1,a5
- if ((l & 15) == ((l >> 4) & 15)) {
- 24b8: 0087d71b srliw a4,a5,0x8
- 24bc: 00029b63 bnez t0,24d2 <stbsp_vsprintfcb+0x112e>
- l &= ~15;
- 24c0: 9bc1 andi a5,a5,-16
- 24c2: 0007859b sext.w a1,a5
- *--s = stbsp__comma;
- 24c6: ffe60a93 addi s5,a2,-2
- 24ca: ffe60f23 sb t5,-2(a2)
- 24ce: 0087d71b srliw a4,a5,0x8
- 24d2: 8656 mv a2,s5
- 24d4: b74d j 2476 <stbsp_vsprintfcb+0x10d2>
- cs = (stbsp__uint32)((num + STBSP__NUMSZ) - s) + ((((l >> 4) & 15)) << 24);
- 24d6: 0045d29b srliw t0,a1,0x4
- 24da: 0f0006b7 lui a3,0xf000
- if (pr < (stbsp__int32)l)
- 24de: 0007871b sext.w a4,a5
- cs = (stbsp__uint32)((num + STBSP__NUMSZ) - s) + ((((l >> 4) & 15)) << 24);
- 24e2: 0182929b slliw t0,t0,0x18
- 24e6: 00d2f2b3 and t0,t0,a3
- n = pr + lead[0] + tail[0] + tz;
- 24ea: 00ef863b addw a2,t6,a4
- l = (stbsp__uint32)((num + STBSP__NUMSZ) - s);
- 24ee: d0be sw a5,96(sp)
- n = pr + lead[0] + tail[0] + tz;
- 24f0: 8fb2 mv t6,a2
- cs = (stbsp__uint32)((num + STBSP__NUMSZ) - s) + ((((l >> 4) & 15)) << 24);
- 24f2: 86be mv a3,a5
- 24f4: 00f282bb addw t0,t0,a5
- if (fw < (stbsp__int32)n)
- 24f8: 835a mv t1,s6
- 24fa: 00cb5363 bge s6,a2,2500 <stbsp_vsprintfcb+0x115c>
- 24fe: 8332 mv t1,a2
- fw -= n;
- 2500: 41f3033b subw t1,t1,t6
- pr -= l;
- 2504: 9f1d subw a4,a4,a5
- goto scopy;
- 2506: 4f81 li t6,0
- tz = 0;
- 2508: 4881 li a7,0
- goto scopy;
- 250a: fdcff06f j 1ce6 <stbsp_vsprintfcb+0x942>
- 250e: 8cda mv s9,s6
- 2510: 2c013a03 ld s4,704(sp)
- 2514: 2b813a83 ld s5,696(sp)
- 2518: 2b013b03 ld s6,688(sp)
- 251c: fa9fe06f j 14c4 <stbsp_vsprintfcb+0x120>
- fl |= ((sizeof(void *) == 8) ? STBSP__INTMAX : 0);
- 2520: 020e6e13 ori t3,t3,32
- ++f;
- 2524: 0485 addi s1,s1,1
- 2526: 864ff06f j 158a <stbsp_vsprintfcb+0x1e6>
- n = 0;
- 252a: 4601 li a2,0
- s = num + 64;
- 252c: 8756 mv a4,s5
- if ((fl & STBSP__TRIPLET_COMMA) && (++cs == 4)) {
- 252e: 4511 li a0,4
- *s++ = stbsp__comma;
- 2530: 00170793 addi a5,a4,1
- if ((fl & STBSP__TRIPLET_COMMA) && (++cs == 4)) {
- 2534: 00030563 beqz t1,253e <stbsp_vsprintfcb+0x119a>
- 2538: 2585 addiw a1,a1,1
- 253a: 10a58363 beq a1,a0,2640 <stbsp_vsprintfcb+0x129c>
- 253e: 873e mv a4,a5
- *s++ = sn[n];
- 2540: 02061793 slli a5,a2,0x20
- 2544: 9381 srli a5,a5,0x20
- 2546: 97fa add a5,a5,t5
- 2548: 0007c803 lbu a6,0(a5)
- ++n;
- 254c: 2605 addiw a2,a2,1
- *s++ = sn[n];
- 254e: ff070fa3 sb a6,-1(a4)
- if (n >= l)
- 2552: fcd66fe3 bltu a2,a3,2530 <stbsp_vsprintfcb+0x118c>
- if (n < (stbsp__uint32)dp) {
- 2556: 0bd663e3 bltu a2,t4,2dfc <stbsp_vsprintfcb+0x1a58>
- cs = (int)(s - (num + 64)) + (3 << 24); // cs is how many tens
- 255a: 415707b3 sub a5,a4,s5
- 255e: 030002b7 lui t0,0x3000
- 2562: 00f282bb addw t0,t0,a5
- if (pr) {
- 2566: 00088a63 beqz a7,257a <stbsp_vsprintfcb+0x11d6>
- *s++ = stbsp__period;
- 256a: 0cca4683 lbu a3,204(s4)
- 256e: 00170793 addi a5,a4,1
- l = (stbsp__uint32)(s - (num + 64));
- 2572: 415787b3 sub a5,a5,s5
- *s++ = stbsp__period;
- 2576: 00d70023 sb a3,0(a4)
- if (fl & STBSP__METRIC_SUFFIX) {
- 257a: 100e7713 andi a4,t3,256
- 257e: 86f2 mv a3,t3
- 2580: 2c070163 beqz a4,2842 <stbsp_vsprintfcb+0x149e>
- if (fl & STBSP__METRIC_NOSPACE)
- 2584: 40ae5f9b sraiw t6,t3,0xa
- 2588: 001fcf93 xori t6,t6,1
- 258c: 001fff93 andi t6,t6,1
- tail[1] = ' ';
- 2590: 02000713 li a4,32
- 2594: 06e108a3 sb a4,113(sp)
- tail[0] = idx;
- 2598: 07f10823 sb t6,112(sp)
- if (fl >> 24) { // SI kilo is 'k', JEDEC and SI kibits are 'K'.
- 259c: 018e561b srliw a2,t3,0x18
- 25a0: 018e571b srliw a4,t3,0x18
- n = pr + lead[0] + tail[0] + tz;
- 25a4: 000f859b sext.w a1,t6
- if (fl >> 24) { // SI kilo is 'k', JEDEC and SI kibits are 'K'.
- 25a8: c225 beqz a2,2608 <stbsp_vsprintfcb+0x1264>
- if (fl & STBSP__METRIC_1024)
- 25aa: 001f859b addiw a1,t6,1
- 25ae: 0ff5f613 zext.b a2,a1
- tail[idx + 1] = "_KMGT"[fl >> 24];
- 25b2: 1702 slli a4,a4,0x20
- if (fl & STBSP__METRIC_1024)
- 25b4: 03469513 slli a0,a3,0x34
- tail[idx + 1] = "_KMGT"[fl >> 24];
- 25b8: 85b2 mv a1,a2
- 25ba: 9301 srli a4,a4,0x20
- if (fl & STBSP__METRIC_1024)
- 25bc: 06055ee3 bgez a0,2e38 <stbsp_vsprintfcb+0x1a94>
- tail[idx + 1] = "_KMGT"[fl >> 24];
- 25c0: 00003517 auipc a0,0x3
- 25c4: ba050513 addi a0,a0,-1120 # 5160 <_GLOBAL__sub_I__ZSt3cin+0x9a>
- 25c8: 972a add a4,a4,a0
- 25ca: 00074503 lbu a0,0(a4)
- if (fl & STBSP__METRIC_1024 && !(fl & STBSP__METRIC_JEDEC)) {
- 25ce: 6709 lui a4,0x2
- 25d0: 80070713 addi a4,a4,-2048 # 1800 <stbsp_vsprintfcb+0x45c>
- 25d4: 8f75 and a4,a4,a3
- tail[idx + 1] = "_KMGT"[fl >> 24];
- 25d6: 06010813 addi a6,sp,96
- 25da: 22060693 addi a3,a2,544
- 25de: 96c2 add a3,a3,a6
- 25e0: dea68823 sb a0,-528(a3) # efffdf0 <_ZSt4cerr+0xeff8478>
- if (fl & STBSP__METRIC_1024 && !(fl & STBSP__METRIC_JEDEC)) {
- 25e4: 8007071b addiw a4,a4,-2048
- 25e8: 060715e3 bnez a4,2e52 <stbsp_vsprintfcb+0x1aae>
- tail[idx + 1] = 'i';
- 25ec: 2f89 addiw t6,t6,2
- 25ee: 0ffff593 zext.b a1,t6
- 25f2: 1094 addi a3,sp,96
- 25f4: 22058713 addi a4,a1,544
- 25f8: 9736 add a4,a4,a3
- 25fa: 06900693 li a3,105
- 25fe: 8fae mv t6,a1
- 2600: ded70823 sb a3,-528(a4)
- tail[0] = idx;
- 2604: 07f10823 sb t6,112(sp)
- l = (stbsp__uint32)(s - (num + 64));
- 2608: 0007869b sext.w a3,a5
- n = pr + lead[0] + tail[0] + tz;
- 260c: 06814a03 lbu s4,104(sp)
- if (pr < (stbsp__int32)l)
- 2610: fff6c713 not a4,a3
- 2614: 977d srai a4,a4,0x3f
- 2616: 8ff9 and a5,a5,a4
- n = pr + lead[0] + tail[0] + tz;
- 2618: 00fa073b addw a4,s4,a5
- 261c: 9f2d addw a4,a4,a1
- 261e: 0117063b addw a2,a4,a7
- l = (stbsp__uint32)(s - (num + 64));
- 2622: d0b6 sw a3,96(sp)
- n = pr + lead[0] + tail[0] + tz;
- 2624: 8732 mv a4,a2
- if (pr < (stbsp__int32)l)
- 2626: 2781 sext.w a5,a5
- if ((fl & STBSP__LEFTJUST) == 0) {
- 2628: 001e7513 andi a0,t3,1
- if (fw < (stbsp__int32)n)
- 262c: 835a mv t1,s6
- 262e: 00cb5363 bge s6,a2,2634 <stbsp_vsprintfcb+0x1290>
- 2632: 8332 mv t1,a2
- fw -= n;
- 2634: 40e3033b subw t1,t1,a4
- pr -= l;
- 2638: 40d7873b subw a4,a5,a3
- goto scopy;
- 263c: eaaff06f j 1ce6 <stbsp_vsprintfcb+0x942>
- *s++ = stbsp__comma;
- 2640: fe578fa3 sb t0,-1(a5)
- 2644: 0709 addi a4,a4,2
- if ((fl & STBSP__TRIPLET_COMMA) && (++cs == 4)) {
- 2646: 4585 li a1,1
- 2648: bde5 j 2540 <stbsp_vsprintfcb+0x119c>
- lead[0] = 1;
- 264a: 678d lui a5,0x3
- 264c: 0785 addi a5,a5,1 # 3001 <stbsp_vsnprintf+0x19>
- 264e: 06f11423 sh a5,104(sp)
- 2652: b4ed j 213c <stbsp_vsprintfcb+0xd98>
- if ((f[0] != 'u') && (i64 < 0)) {
- 2654: 07500693 li a3,117
- stbsp__int64 i64 = va_arg(va, stbsp__int64);
- 2658: 000bbf03 ld t5,0(s7)
- if ((f[0] != 'u') && (i64 < 0)) {
- 265c: dcd78263 beq a5,a3,1c20 <stbsp_vsprintfcb+0x87c>
- 2660: dc0f5063 bgez t5,1c20 <stbsp_vsprintfcb+0x87c>
- fl |= STBSP__NEGATIVE;
- 2664: 08076713 ori a4,a4,128
- n64 = (stbsp__uint64)-i64;
- 2668: 41e00f33 neg t5,t5
- fl |= STBSP__NEGATIVE;
- 266c: 00070e1b sext.w t3,a4
- 2670: db0ff06f j 1c20 <stbsp_vsprintfcb+0x87c>
- lead[2] = h[0xb];
- 2674: 00b84703 lbu a4,11(a6)
- lead[0] = 2;
- 2678: 678d lui a5,0x3
- 267a: 0789 addi a5,a5,2 # 3002 <stbsp_vsnprintf+0x1a>
- 267c: 06f11423 sh a5,104(sp)
- lead[2] = h[0xb];
- 2680: 06e10523 sb a4,106(sp)
- 2684: bab5 j 2000 <stbsp_vsprintfcb+0xc5c>
- sign[0] = 1;
- 2686: 678d lui a5,0x3
- 2688: d0178793 addi a5,a5,-767 # 2d01 <stbsp_vsprintfcb+0x195d>
- fl |= STBSP__NEGATIVE;
- 268c: 080e6e13 ori t3,t3,128
- sign[0] = 1;
- 2690: 06f11423 sh a5,104(sp)
- 2694: 468d li a3,3
- 2696: 4a0d li s4,3
- 2698: 4809 li a6,2
- 269a: b899 j 1ef0 <stbsp_vsprintfcb+0xb4c>
- sign[0] = 1;
- 269c: 6709 lui a4,0x2
- 269e: 0705 addi a4,a4,1 # 2001 <stbsp_vsprintfcb+0xc5d>
- 26a0: 06e11423 sh a4,104(sp)
- 26a4: bae5 j 209c <stbsp_vsprintfcb+0xcf8>
- if (((stbsp__uintptr)sn & 3) == 0)
- 26a6: 0e0780e3 beqz a5,2f86 <stbsp_vsprintfcb+0x1be2>
- l = stbsp__strlen_limited(s, (pr >= 0) ? pr : ~0u);
- 26aa: 56fd li a3,-1
- 26ac: bcf9 j 218a <stbsp_vsprintfcb+0xde6>
- if (fw < (stbsp__int32)n)
- 26ae: 4305 li t1,1
- 26b0: b249 j 2032 <stbsp_vsprintfcb+0xc8e>
- pr = 6; // default is 6
- 26b2: 4899 li a7,6
- 26b4: b801 j 1ec4 <stbsp_vsprintfcb+0xb20>
- h = (f[0] == 'A') ? hexu : hex;
- 26b6: 00004597 auipc a1,0x4
- 26ba: 49a58593 addi a1,a1,1178 # 6b50 <hexu.1>
- 26be: ff6ff06f j 1eb4 <stbsp_vsprintfcb+0xb10>
- h = (f[0] == 'B') ? hexu : hex;
- 26c2: 00004817 auipc a6,0x4
- 26c6: 48e80813 addi a6,a6,1166 # 6b50 <hexu.1>
- 26ca: b22d j 1ff4 <stbsp_vsprintfcb+0xc50>
- 26cc: 80000737 lui a4,0x80000
- 26d0: 0719 addi a4,a4,6 # ffffffff80000006 <_ZSt4cerr+0xffffffff7fff868e>
- pr = 6; // default is 6
- 26d2: 4899 li a7,6
- 26d4: e4eff06f j 1d22 <stbsp_vsprintfcb+0x97e>
- h = (f[0] == 'E') ? hexu : hex;
- 26d8: 00004317 auipc t1,0x4
- 26dc: 47830313 addi t1,t1,1144 # 6b50 <hexu.1>
- 26e0: e28ff06f j 1d08 <stbsp_vsprintfcb+0x964>
- 26e4: 80000737 lui a4,0x80000
- 26e8: 4a99 li s5,6
- 26ea: 0715 addi a4,a4,5 # ffffffff80000005 <_ZSt4cerr+0xffffffff7fff868d>
- pr = 6;
- 26ec: 4a19 li s4,6
- 26ee: ee8ff06f j 1dd6 <stbsp_vsprintfcb+0xa32>
- h = (f[0] == 'G') ? hexu : hex;
- 26f2: 00004317 auipc t1,0x4
- 26f6: 45e30313 addi t1,t1,1118 # 6b50 <hexu.1>
- 26fa: eb6ff06f j 1db0 <stbsp_vsprintfcb+0xa0c>
- 26fe: 7be6 ld s7,120(sp)
- if ((dp <= -4) || (dp > (stbsp__int32)n)) {
- 2700: 86c2 mv a3,a6
- while ((l > 1) && (pr) && (sn[l - 1] == '0')) {
- 2702: 8542 mv a0,a6
- if ((dp <= -4) || (dp > (stbsp__int32)n)) {
- 2704: 88d2 mv a7,s4
- while ((l > 1) && (pr) && (sn[l - 1] == '0')) {
- 2706: 8ade mv s5,s7
- if (pr > (stbsp__int32)l)
- 2708: 0005071b sext.w a4,a0
- 270c: 01175f63 bge a4,a7,272a <stbsp_vsprintfcb+0x1386>
- pr = l - 1;
- 2710: fff5089b addiw a7,a0,-1
- tail[0] = 0;
- 2714: 06010823 sb zero,112(sp)
- if (fl & STBSP__NEGATIVE) {
- 2718: 70028c63 beqz t0,2e30 <stbsp_vsprintfcb+0x1a8c>
- sign[0] = 1;
- 271c: 670d lui a4,0x3
- 271e: d0170713 addi a4,a4,-767 # 2d01 <stbsp_vsprintfcb+0x195d>
- 2722: 06e11423 sh a4,104(sp)
- 2726: e3aff06f j 1d60 <stbsp_vsprintfcb+0x9bc>
- else if (pr)
- 272a: fe0885e3 beqz a7,2714 <stbsp_vsprintfcb+0x1370>
- --pr; // when using %e, there is one digit before the decimal
- 272e: 38fd addiw a7,a7,-1
- 2730: b7d5 j 2714 <stbsp_vsprintfcb+0x1370>
- switch (f[0]) {
- 2732: 0034c783 lbu a5,3(s1)
- f += 3;
- 2736: 048d addi s1,s1,3
- 2738: e53fe06f j 158a <stbsp_vsprintfcb+0x1e6>
- if (!limit || *sn == 0)
- 273c: 4601 li a2,0
- 273e: 4701 li a4,0
- 2740: 4781 li a5,0
- return (stbsp__uint32)(sn - s);
- 2742: bca5 j 21ba <stbsp_vsprintfcb+0xe16>
- pr = 1;
- 2744: 4885 li a7,1
- 2746: cf4ff06f j 1c3a <stbsp_vsprintfcb+0x896>
- *s++ = sn[0];
- 274a: 000ac703 lbu a4,0(s5)
- 274e: 0ce10023 sb a4,192(sp)
- if (pr)
- 2752: 54088563 beqz a7,2c9c <stbsp_vsprintfcb+0x18f8>
- *s++ = stbsp__period;
- 2756: 00004617 auipc a2,0x4
- 275a: 3f664603 lbu a2,1014(a2) # 6b4c <stbsp__period>
- if ((l - 1) > (stbsp__uint32)pr)
- 275e: fff6871b addiw a4,a3,-1
- *s++ = stbsp__period;
- 2762: 0cc100a3 sb a2,193(sp)
- if ((l - 1) > (stbsp__uint32)pr)
- 2766: 0008851b sext.w a0,a7
- 276a: 0007061b sext.w a2,a4
- 276e: 52c57163 bgeu a0,a2,2c90 <stbsp_vsprintfcb+0x18ec>
- l = pr + 1;
- 2772: 0018869b addiw a3,a7,1
- for (n = 1; n < l; n++)
- 2776: 8746 mv a4,a7
- 2778: 02071613 slli a2,a4,0x20
- 277c: 9201 srli a2,a2,0x20
- 277e: 0c210713 addi a4,sp,194
- 2782: 0a85 addi s5,s5,1
- 2784: 963a add a2,a2,a4
- *s++ = sn[n];
- 2786: 000ac583 lbu a1,0(s5)
- 278a: 0705 addi a4,a4,1
- for (n = 1; n < l; n++)
- 278c: 0a85 addi s5,s5,1
- *s++ = sn[n];
- 278e: feb70fa3 sb a1,-1(a4)
- for (n = 1; n < l; n++)
- 2792: fec71ae3 bne a4,a2,2786 <stbsp_vsprintfcb+0x13e2>
- tail[1] = h[0xe];
- 2796: 00e34803 lbu a6,14(t1)
- dp -= 1;
- 279a: fff7871b addiw a4,a5,-1
- tail[2] = '+';
- 279e: 02b00593 li a1,43
- tail[1] = h[0xe];
- 27a2: 070108a3 sb a6,113(sp)
- if (dp < 0) {
- 27a6: 00075663 bgez a4,27b2 <stbsp_vsprintfcb+0x140e>
- dp = -dp;
- 27aa: 4705 li a4,1
- 27ac: 9f1d subw a4,a4,a5
- tail[2] = '-';
- 27ae: 02d00593 li a1,45
- 27b2: 06b10923 sb a1,114(sp)
- n = (dp >= 100) ? 5 : 4;
- 27b6: 06300793 li a5,99
- 27ba: 4ee7d663 bge a5,a4,2ca6 <stbsp_vsprintfcb+0x1902>
- 27be: 4595 li a1,5
- 27c0: 4f95 li t6,5
- 27c2: 4e95 li t4,5
- tail[n] = '0' + dp % 10;
- 27c4: 47a9 li a5,10
- dp /= 10;
- 27c6: 02f7433b divw t1,a4,a5
- --n;
- 27ca: fffe8f1b addiw t5,t4,-1
- tail[n] = '0' + dp % 10;
- 27ce: 020f1293 slli t0,t5,0x20
- 27d2: 220e8813 addi a6,t4,544
- 27d6: 06010893 addi a7,sp,96
- 27da: 0202d293 srli t0,t0,0x20
- 27de: 01180eb3 add t4,a6,a7
- 27e2: 22028813 addi a6,t0,544 # 3000220 <_ZSt4cerr+0x2ff88a8>
- 27e6: 011802b3 add t0,a6,a7
- tail[0] = (char)n;
- 27ea: 07f10823 sb t6,112(sp)
- if (n <= 3)
- 27ee: 4a0d li s4,3
- tail[n] = '0' + dp % 10;
- 27f0: 02f7673b remw a4,a4,a5
- dp /= 10;
- 27f4: 0003081b sext.w a6,t1
- tail[n] = '0' + dp % 10;
- 27f8: 02f36abb remw s5,t1,a5
- 27fc: 0307071b addiw a4,a4,48
- 2800: deee8823 sb a4,-528(t4)
- 2804: 030a871b addiw a4,s5,48
- 2808: dee28823 sb a4,-528(t0)
- if (n <= 3)
- 280c: 014f0a63 beq t5,s4,2820 <stbsp_vsprintfcb+0x147c>
- dp /= 10;
- 2810: 02f3483b divw a6,t1,a5
- tail[n] = '0' + dp % 10;
- 2814: 02f867bb remw a5,a6,a5
- 2818: 0307879b addiw a5,a5,48
- 281c: 06f109a3 sb a5,115(sp)
- tz = pr - (l - 1);
- 2820: 2505 addiw a0,a0,1
- l = (stbsp__uint32)(s - (num + 64));
- 2822: 0c010a93 addi s5,sp,192
- cs = 1 + (3 << 24); // how many tens
- 2826: 030002b7 lui t0,0x3000
- tz = pr - (l - 1);
- 282a: 40d508bb subw a7,a0,a3
- 282e: d2c2 sw a6,100(sp)
- l = (stbsp__uint32)(s - (num + 64));
- 2830: 415607b3 sub a5,a2,s5
- cs = 1 + (3 << 24); // how many tens
- 2834: 0285 addi t0,t0,1 # 3000001 <_ZSt4cerr+0x2ff8689>
- 2836: bbc9 j 2608 <stbsp_vsprintfcb+0x1264>
- 2838: fc2e sd a1,56(sp)
- 283a: d0b2 sw a2,96(sp)
- while ((l > 1) && (pr) && (sn[l - 1] == '0')) {
- 283c: 8536 mv a0,a3
- 283e: e2cff06f j 1e6a <stbsp_vsprintfcb+0xac6>
- flt_lead:
- 2842: 4581 li a1,0
- 2844: 4f81 li t6,0
- 2846: b3c9 j 2608 <stbsp_vsprintfcb+0x1264>
- n = pr + lead[0] + tail[0] + tz;
- 2848: 06814a03 lbu s4,104(sp)
- 284c: 000a0f9b sext.w t6,s4
- 2850: b901 j 2460 <stbsp_vsprintfcb+0x10bc>
- if ((f[1] == '6') && (f[2] == '4')) {
- 2852: 0024c683 lbu a3,2(s1)
- 2856: 03400713 li a4,52
- 285a: 00e68463 beq a3,a4,2862 <stbsp_vsprintfcb+0x14be>
- 285e: e2bfe06f j 1688 <stbsp_vsprintfcb+0x2e4>
- switch (f[0]) {
- 2862: 0034c783 lbu a5,3(s1)
- fl |= ((sizeof(long) == 8) ? STBSP__INTMAX : 0);
- 2866: 020e6e13 ori t3,t3,32
- f += 3;
- 286a: 048d addi s1,s1,3
- 286c: d1ffe06f j 158a <stbsp_vsprintfcb+0x1e6>
- if (pr < (stbsp__int32)l)
- 2870: 0006879b sext.w a5,a3
- n = pr + lead[0] + tail[0] + tz;
- 2874: 06814a03 lbu s4,104(sp)
- if (pr < (stbsp__int32)l)
- 2878: fff7c793 not a5,a5
- 287c: 97fd srai a5,a5,0x3f
- 287e: 8ff5 and a5,a5,a3
- n = pr + lead[0] + tail[0] + tz;
- 2880: 00fa063b addw a2,s4,a5
- s = (char *)sn;
- 2884: 7ae6 ld s5,120(sp)
- n = pr + lead[0] + tail[0] + tz;
- 2886: 8732 mv a4,a2
- if ((fl & STBSP__LEFTJUST) == 0) {
- 2888: 001e7513 andi a0,t3,1
- if (pr < (stbsp__int32)l)
- 288c: 2781 sext.w a5,a5
- if (fw < (stbsp__int32)n)
- 288e: 835a mv t1,s6
- 2890: 00cb5363 bge s6,a2,2896 <stbsp_vsprintfcb+0x14f2>
- 2894: 8332 mv t1,a2
- fw -= n;
- 2896: 40e3033b subw t1,t1,a4
- goto scopy;
- 289a: 4f81 li t6,0
- pr -= l;
- 289c: 40d7873b subw a4,a5,a3
- cs = 0;
- 28a0: 4281 li t0,0
- tz = 0;
- 28a2: 4881 li a7,0
- goto scopy;
- 28a4: c42ff06f j 1ce6 <stbsp_vsprintfcb+0x942>
- cs = (int)(s - (num + 64)) + (3 << 24); // cs is how many tens
- 28a8: 415705b3 sub a1,a4,s5
- 28ac: 030002b7 lui t0,0x3000
- 28b0: 00b282bb addw t0,t0,a1
- l = pr - n;
- 28b4: 0008859b sext.w a1,a7
- if (pr)
- 28b8: 42088763 beqz a7,2ce6 <stbsp_vsprintfcb+0x1942>
- *s++ = stbsp__period;
- 28bc: 0cca4f83 lbu t6,204(s4)
- if ((l - dp) > (stbsp__uint32)pr)
- 28c0: 41d6833b subw t1,a3,t4
- *s++ = stbsp__period;
- 28c4: 00280713 addi a4,a6,2
- 28c8: 01f800a3 sb t6,1(a6)
- if ((l - dp) > (stbsp__uint32)pr)
- 28cc: 4065ed63 bltu a1,t1,2ce6 <stbsp_vsprintfcb+0x1942>
- while (n < l) {
- 28d0: 5ed57863 bgeu a0,a3,2ec0 <stbsp_vsprintfcb+0x1b1c>
- 28d4: 40c687bb subw a5,a3,a2
- 28d8: 37fd addiw a5,a5,-1
- 28da: 1782 slli a5,a5,0x20
- 28dc: 9381 srli a5,a5,0x20
- 28de: 1602 slli a2,a2,0x20
- 28e0: 9201 srli a2,a2,0x20
- 28e2: 0785 addi a5,a5,1
- 28e4: 967a add a2,a2,t5
- 28e6: 97ba add a5,a5,a4
- *s++ = sn[n];
- 28e8: 00064503 lbu a0,0(a2)
- 28ec: 0705 addi a4,a4,1
- while (n < l) {
- 28ee: 0605 addi a2,a2,1
- *s++ = sn[n];
- 28f0: fea70fa3 sb a0,-1(a4)
- while (n < l) {
- 28f4: fef71ae3 bne a4,a5,28e8 <stbsp_vsprintfcb+0x1544>
- tz = pr - (l - dp);
- 28f8: 01d585bb addw a1,a1,t4
- 28fc: 40d588bb subw a7,a1,a3
- l = (stbsp__uint32)(s - (num + 64));
- 2900: 415787b3 sub a5,a5,s5
- 2904: b99d j 257a <stbsp_vsprintfcb+0x11d6>
- fl |= STBSP__NEGATIVE;
- 2906: 080e6e13 ori t3,t3,128
- tail[0] = 0;
- 290a: 06010823 sb zero,112(sp)
- if (fl & STBSP__NEGATIVE) {
- 290e: b539 j 271c <stbsp_vsprintfcb+0x1378>
- tail[0] = (char)n;
- 2910: 4799 li a5,6
- tail[n] = '0' + dp % 10;
- 2912: 06b10b23 sb a1,118(sp)
- tail[0] = (char)n;
- 2916: 06f10823 sb a5,112(sp)
- tail[n] = '0' + dp % 10;
- 291a: 4819 li a6,6
- 291c: 4f99 li t6,6
- n = (dp >= 1000) ? 6 : ((dp >= 100) ? 5 : ((dp >= 10) ? 4 : 3));
- 291e: 4599 li a1,6
- dp /= 10;
- 2920: 4f29 li t5,10
- if (n <= 3)
- 2922: 428d li t0,3
- 2924: 87b2 mv a5,a2
- dp /= 10;
- 2926: 03e7c7bb divw a5,a5,t5
- --n;
- 292a: 35fd addiw a1,a1,-1
- tail[n] = '0' + dp % 10;
- 292c: 02059613 slli a2,a1,0x20
- 2930: 9201 srli a2,a2,0x20
- 2932: 06010e93 addi t4,sp,96
- 2936: 22060613 addi a2,a2,544
- 293a: 9676 add a2,a2,t4
- 293c: 03e7eebb remw t4,a5,t5
- 2940: 030e8e9b addiw t4,t4,48
- 2944: dfd60823 sb t4,-528(a2)
- if (n <= 3)
- 2948: fc559fe3 bne a1,t0,2926 <stbsp_vsprintfcb+0x1582>
- 294c: e6aff06f j 1fb6 <stbsp_vsprintfcb+0xc12>
- *s++ = h[(n64 >> 60) & 15];
- 2950: 93f1 srli a5,a5,0x3c
- 2952: 97ae add a5,a5,a1
- 2954: 0007c303 lbu t1,0(a5)
- lead[1 + lead[0]] = '0';
- 2958: 1088 addi a0,sp,96
- 295a: 22080793 addi a5,a6,544
- 295e: 97aa add a5,a5,a0
- 2960: 03000513 li a0,48
- 2964: dea78423 sb a0,-536(a5)
- lead[2 + lead[0]] = 'x';
- 2968: 22068793 addi a5,a3,544
- 296c: 1094 addi a3,sp,96
- 296e: 96be add a3,a3,a5
- *s++ = stbsp__period;
- 2970: 00004517 auipc a0,0x4
- 2974: 1dc54503 lbu a0,476(a0) # 6b4c <stbsp__period>
- lead[2 + lead[0]] = 'x';
- 2978: 07800813 li a6,120
- sn = s;
- 297c: 0c210793 addi a5,sp,194
- lead[2 + lead[0]] = 'x';
- 2980: df068423 sb a6,-536(a3)
- *s++ = stbsp__period;
- 2984: 0ca100a3 sb a0,193(sp)
- lead[0] += 2;
- 2988: 07410423 sb s4,104(sp)
- *s++ = h[(n64 >> 60) & 15];
- 298c: 0c610023 sb t1,192(sp)
- n64 <<= 4;
- 2990: 0732 slli a4,a4,0xc
- sn = s;
- 2992: fcbe sd a5,120(sp)
- n = pr;
- 2994: 0008869b sext.w a3,a7
- while (n--) {
- 2998: 4831 li a6,12
- if (n > 13)
- 299a: 4535 li a0,13
- tz = pr - n;
- 299c: 40a688bb subw a7,a3,a0
- while (n--) {
- 29a0: 02081313 slli t1,a6,0x20
- 29a4: 02035313 srli t1,t1,0x20
- 29a8: 22030693 addi a3,t1,544
- 29ac: 1088 addi a0,sp,96
- 29ae: 9536 add a0,a0,a3
- 29b0: e4350513 addi a0,a0,-445
- *s++ = h[(n64 >> 60) & 15];
- 29b4: 03c75693 srli a3,a4,0x3c
- 29b8: 96ae add a3,a3,a1
- 29ba: 0006c683 lbu a3,0(a3)
- 29be: 0785 addi a5,a5,1
- n64 <<= 4;
- 29c0: 0712 slli a4,a4,0x4
- *s++ = h[(n64 >> 60) & 15];
- 29c2: fed78fa3 sb a3,-1(a5)
- while (n--) {
- 29c6: fea797e3 bne a5,a0,29b4 <stbsp_vsprintfcb+0x1610>
- l = (int)(s - (num + 64));
- 29ca: 280d addiw a6,a6,3
- 29cc: 0008069b sext.w a3,a6
- if (pr < (stbsp__int32)l)
- 29d0: fff6c713 not a4,a3
- 29d4: 977d srai a4,a4,0x3f
- 29d6: 00e87733 and a4,a6,a4
- dp = (int)(s - sn);
- 29da: 0013051b addiw a0,t1,1
- if (pr < (stbsp__int32)l)
- 29de: 0007031b sext.w t1,a4
- pr -= l;
- 29e2: 4107073b subw a4,a4,a6
- 29e6: d76ff06f j 1f5c <stbsp_vsprintfcb+0xbb8>
- *--s = stbsp__comma;
- 29ea: 00004a17 auipc s4,0x4
- 29ee: 096a0a13 addi s4,s4,150 # 6a80 <stbsp__digitpair>
- if (n64 >= 100000000) {
- 29f2: 05f5e7b7 lui a5,0x5f5e
- 29f6: 0ff78793 addi a5,a5,255 # 5f5e0ff <_ZSt4cerr+0x5f56787>
- n = (stbsp__uint32)(n64 % 100000000);
- 29fa: 05f5e637 lui a2,0x5f5e
- *--s = stbsp__comma;
- 29fe: 0cda4b83 lbu s7,205(s4)
- if (n64 >= 100000000) {
- 2a02: e83e sd a5,16(sp)
- n = (stbsp__uint32)(n64 % 100000000);
- 2a04: 10060793 addi a5,a2,256 # 5f5e100 <_ZSt4cerr+0x5f56788>
- l = 0;
- 2a08: d082 sw zero,96(sp)
- if ((fl & STBSP__TRIPLET_COMMA) == 0) {
- 2a0a: 040e7813 andi a6,t3,64
- 2a0e: 4701 li a4,0
- 2a10: 4281 li t0,0
- s = num + STBSP__NUMSZ;
- 2a12: 28010a93 addi s5,sp,640
- n = (stbsp__uint32)(n64 % 100000000);
- 2a16: ec3e sd a5,24(sp)
- if ((fl & STBSP__TRIPLET_COMMA) && (l++ == 3)) {
- 2a18: 430d li t1,3
- n /= 10;
- 2a1a: 45a9 li a1,10
- while (n) {
- 2a1c: 4ea5 li t4,9
- *(stbsp__uint16 *)s = *(stbsp__uint16 *)&stbsp__digitpair.pair[(n % 100) * 2];
- 2a1e: 06400f93 li t6,100
- if (n64 >= 100000000) {
- 2a22: 67c2 ld a5,16(sp)
- char *o = s - 8;
- 2a24: ff8a8513 addi a0,s5,-8
- if (n64 >= 100000000) {
- 2a28: 0fe7f763 bgeu a5,t5,2b16 <stbsp_vsprintfcb+0x1772>
- n = (stbsp__uint32)(n64 % 100000000);
- 2a2c: 6662 ld a2,24(sp)
- 2a2e: 02cf77b3 remu a5,t5,a2
- n64 /= 100000000;
- 2a32: 02cf5f33 divu t5,t5,a2
- if ((fl & STBSP__TRIPLET_COMMA) == 0) {
- 2a36: 0e080463 beqz a6,2b1e <stbsp_vsprintfcb+0x177a>
- while (n) {
- 2a3a: cb85 beqz a5,2a6a <stbsp_vsprintfcb+0x16c6>
- *--s = stbsp__comma;
- 2a3c: 1afd addi s5,s5,-1
- if ((fl & STBSP__TRIPLET_COMMA) && (l++ == 3)) {
- 2a3e: 00671763 bne a4,t1,2a4c <stbsp_vsprintfcb+0x16a8>
- --o;
- 2a42: 017a8023 sb s7,0(s5)
- 2a46: 157d addi a0,a0,-1
- *--s = stbsp__comma;
- 2a48: 1afd addi s5,s5,-1
- l = 0;
- 2a4a: 4701 li a4,0
- if ((fl & STBSP__TRIPLET_COMMA) && (l++ == 3)) {
- 2a4c: 2705 addiw a4,a4,1
- *--s = (char)(n % 10) + '0';
- 2a4e: 02b7f63b remuw a2,a5,a1
- 2a52: 0306061b addiw a2,a2,48
- 2a56: 00ca8023 sb a2,0(s5)
- n /= 10;
- 2a5a: 02b7d63b divuw a2,a5,a1
- while (n) {
- 2a5e: 00fef563 bgeu t4,a5,2a68 <stbsp_vsprintfcb+0x16c4>
- *--s = stbsp__comma;
- 2a62: 1afd addi s5,s5,-1
- 2a64: 87b2 mv a5,a2
- 2a66: bfe1 j 2a3e <stbsp_vsprintfcb+0x169a>
- while (n) {
- 2a68: 4285 li t0,1
- if (n64 == 0) {
- 2a6a: 020f0063 beqz t5,2a8a <stbsp_vsprintfcb+0x16e6>
- while (s != o)
- 2a6e: fb550ae3 beq a0,s5,2a22 <stbsp_vsprintfcb+0x167e>
- *--s = stbsp__comma;
- 2a72: 1afd addi s5,s5,-1
- if ((fl & STBSP__TRIPLET_COMMA) && (l++ == 3)) {
- 2a74: 00080663 beqz a6,2a80 <stbsp_vsprintfcb+0x16dc>
- 2a78: 08670863 beq a4,t1,2b08 <stbsp_vsprintfcb+0x1764>
- 2a7c: 2705 addiw a4,a4,1
- 2a7e: 4285 li t0,1
- *--s = '0';
- 2a80: 03000793 li a5,48
- 2a84: 00fa8023 sb a5,0(s5)
- 2a88: b7dd j 2a6e <stbsp_vsprintfcb+0x16ca>
- 2a8a: 00028363 beqz t0,2a90 <stbsp_vsprintfcb+0x16ec>
- 2a8e: d0ba sw a4,96(sp)
- if ((s[0] == '0') && (s != (num + STBSP__NUMSZ)))
- 2a90: 000ac703 lbu a4,0(s5)
- 2a94: 03000793 li a5,48
- 2a98: 34f70b63 beq a4,a5,2dee <stbsp_vsprintfcb+0x1a4a>
- l = (stbsp__uint32)((num + STBSP__NUMSZ) - s);
- 2a9c: 051c addi a5,sp,640
- 2a9e: 415786bb subw a3,a5,s5
- tail[0] = 0;
- 2aa2: 06010823 sb zero,112(sp)
- if (fl & STBSP__NEGATIVE) {
- 2aa6: 080e7713 andi a4,t3,128
- 2aaa: 87f2 mv a5,t3
- 2aac: 32070863 beqz a4,2ddc <stbsp_vsprintfcb+0x1a38>
- 2ab0: 678d lui a5,0x3
- 2ab2: d017879b addiw a5,a5,-767 # 2d01 <stbsp_vsprintfcb+0x195d>
- sign[0] = 1;
- 2ab6: 06f11423 sh a5,104(sp)
- 2aba: 4705 li a4,1
- 2abc: 4a05 li s4,1
- l = (stbsp__uint32)((num + STBSP__NUMSZ) - s);
- 2abe: d0b6 sw a3,96(sp)
- if (l == 0) {
- 2ac0: 30068163 beqz a3,2dc2 <stbsp_vsprintfcb+0x1a1e>
- cs = l + (3 << 24);
- 2ac4: 030002b7 lui t0,0x3000
- 2ac8: 00d282bb addw t0,t0,a3
- if (pr < (stbsp__int32)l)
- 2acc: 0006861b sext.w a2,a3
- if (pr < 0)
- 2ad0: fff8c793 not a5,a7
- 2ad4: 97fd srai a5,a5,0x3f
- if (pr < (stbsp__int32)l)
- 2ad6: 00f8f7b3 and a5,a7,a5
- 2ada: 0007859b sext.w a1,a5
- 2ade: 00c5d363 bge a1,a2,2ae4 <stbsp_vsprintfcb+0x1740>
- 2ae2: 87b2 mv a5,a2
- n = pr + lead[0] + tail[0] + tz;
- 2ae4: 00f7063b addw a2,a4,a5
- 2ae8: 8732 mv a4,a2
- if (pr < (stbsp__int32)l)
- 2aea: 2781 sext.w a5,a5
- if ((fl & STBSP__LEFTJUST) == 0) {
- 2aec: 001e7513 andi a0,t3,1
- if (fw < (stbsp__int32)n)
- 2af0: 835a mv t1,s6
- 2af2: 00cb5363 bge s6,a2,2af8 <stbsp_vsprintfcb+0x1754>
- 2af6: 8332 mv t1,a2
- fw -= n;
- 2af8: 40e3033b subw t1,t1,a4
- scopy:
- 2afc: 4f81 li t6,0
- pr -= l;
- 2afe: 40d7873b subw a4,a5,a3
- tz = 0;
- 2b02: 4881 li a7,0
- scopy:
- 2b04: 9e2ff06f j 1ce6 <stbsp_vsprintfcb+0x942>
- *--s = stbsp__comma;
- 2b08: 87de mv a5,s7
- --o;
- 2b0a: 157d addi a0,a0,-1
- l = 0;
- 2b0c: 4701 li a4,0
- --o;
- 2b0e: 4285 li t0,1
- 2b10: 00fa8023 sb a5,0(s5)
- 2b14: bfa9 j 2a6e <stbsp_vsprintfcb+0x16ca>
- n = (stbsp__uint32)n64;
- 2b16: 000f079b sext.w a5,t5
- n64 = 0;
- 2b1a: 4f01 li t5,0
- 2b1c: bf29 j 2a36 <stbsp_vsprintfcb+0x1692>
- 2b1e: f046 sd a7,32(sp)
- *(stbsp__uint16 *)s = *(stbsp__uint16 *)&stbsp__digitpair.pair[(n % 100) * 2];
- 2b20: 03f7f63b remuw a2,a5,t6
- s -= 2;
- 2b24: 1af9 addi s5,s5,-2
- *(stbsp__uint16 *)s = *(stbsp__uint16 *)&stbsp__digitpair.pair[(n % 100) * 2];
- 2b26: 0007889b sext.w a7,a5
- 2b2a: 2605 addiw a2,a2,1
- 2b2c: 0016161b slliw a2,a2,0x1
- 2b30: 1602 slli a2,a2,0x20
- 2b32: 9201 srli a2,a2,0x20
- 2b34: 9652 add a2,a2,s4
- 2b36: 00065603 lhu a2,0(a2)
- n /= 100;
- 2b3a: 03f7d7bb divuw a5,a5,t6
- *(stbsp__uint16 *)s = *(stbsp__uint16 *)&stbsp__digitpair.pair[(n % 100) * 2];
- 2b3e: 00ca9023 sh a2,0(s5)
- } while (n);
- 2b42: 06300613 li a2,99
- 2b46: fd166de3 bltu a2,a7,2b20 <stbsp_vsprintfcb+0x177c>
- 2b4a: 7882 ld a7,32(sp)
- if (n64 == 0) {
- 2b4c: f20f11e3 bnez t5,2a6e <stbsp_vsprintfcb+0x16ca>
- 2b50: bf2d j 2a8a <stbsp_vsprintfcb+0x16e6>
- *(stbsp__uint32 *)bf = 0x20202020;
- 2b52: 20202b37 lui s6,0x20202
- stbsp__cb_buf_clamp(i, fw);
- 2b56: 854a mv a0,s2
- *bf++ = ' ';
- 2b58: 02000a93 li s5,32
- *(stbsp__uint32 *)bf = 0x20202020;
- 2b5c: 020b0b13 addi s6,s6,32 # 20202020 <_ZSt4cerr+0x201fa6a8>
- stbsp__chk_cb_buf(1);
- 2b60: 1fe00a13 li s4,510
- stbsp__cb_buf_clamp(i, fw);
- 2b64: 20000b93 li s7,512
- 2b68: 891a mv s2,t1
- 2b6a: 0a098063 beqz s3,2c0a <stbsp_vsprintfcb+0x1866>
- 2b6e: 40a40633 sub a2,s0,a0
- 2b72: 40cb87bb subw a5,s7,a2
- 2b76: 873e mv a4,a5
- 2b78: 00f95363 bge s2,a5,2b7e <stbsp_vsprintfcb+0x17da>
- 2b7c: 874a mv a4,s2
- 2b7e: 0007079b sext.w a5,a4
- fw -= i;
- 2b82: 40e9093b subw s2,s2,a4
- while (i) {
- 2b86: e799 bnez a5,2b94 <stbsp_vsprintfcb+0x17f0>
- 2b88: a281 j 2cc8 <stbsp_vsprintfcb+0x1924>
- *bf++ = ' ';
- 2b8a: 01540023 sb s5,0(s0)
- --i;
- 2b8e: 37fd addiw a5,a5,-1
- *bf++ = ' ';
- 2b90: 0405 addi s0,s0,1
- while (i) {
- 2b92: cba1 beqz a5,2be2 <stbsp_vsprintfcb+0x183e>
- if ((((stbsp__uintptr)bf) & 3) == 0)
- 2b94: 00347713 andi a4,s0,3
- 2b98: fb6d bnez a4,2b8a <stbsp_vsprintfcb+0x17e6>
- while (i >= 4) {
- 2b9a: 470d li a4,3
- 2b9c: 40f75363 bge a4,a5,2fa2 <stbsp_vsprintfcb+0x1bfe>
- 2ba0: ffc7869b addiw a3,a5,-4
- 2ba4: 0026d79b srliw a5,a3,0x2
- 2ba8: 0017871b addiw a4,a5,1
- 2bac: 070a slli a4,a4,0x2
- 2bae: 9722 add a4,a4,s0
- *(stbsp__uint32 *)bf = 0x20202020;
- 2bb0: 01642023 sw s6,0(s0)
- bf += 4;
- 2bb4: 0411 addi s0,s0,4
- while (i >= 4) {
- 2bb6: fee41de3 bne s0,a4,2bb0 <stbsp_vsprintfcb+0x180c>
- 2bba: 0027979b slliw a5,a5,0x2
- 2bbe: 40f687bb subw a5,a3,a5
- while (i--)
- 2bc2: fff7869b addiw a3,a5,-1
- 2bc6: cf91 beqz a5,2be2 <stbsp_vsprintfcb+0x183e>
- 2bc8: 9fa1 addw a5,a5,s0
- *bf++ = ' ';
- 2bca: 0705 addi a4,a4,1
- while (i--)
- 2bcc: 0007061b sext.w a2,a4
- *bf++ = ' ';
- 2bd0: ff570fa3 sb s5,-1(a4)
- while (i--)
- 2bd4: fec79be3 bne a5,a2,2bca <stbsp_vsprintfcb+0x1826>
- 2bd8: 2685 addiw a3,a3,1
- 2bda: 02069793 slli a5,a3,0x20
- 2bde: 9381 srli a5,a5,0x20
- 2be0: 943e add s0,s0,a5
- stbsp__chk_cb_buf(1);
- 2be2: 00098f63 beqz s3,2c00 <stbsp_vsprintfcb+0x185c>
- 2be6: 40a4063b subw a2,s0,a0
- 2bea: 00ca5b63 bge s4,a2,2c00 <stbsp_vsprintfcb+0x185c>
- 2bee: 65a2 ld a1,8(sp)
- 2bf0: e81e sd t2,16(sp)
- 2bf2: 00cd0d3b addw s10,s10,a2
- 2bf6: 9982 jalr s3
- 2bf8: 80050be3 beqz a0,240e <stbsp_vsprintfcb+0x106a>
- 2bfc: 63c2 ld t2,16(sp)
- 2bfe: 842a mv s0,a0
- while (fw) {
- 2c00: f60915e3 bnez s2,2b6a <stbsp_vsprintfcb+0x17c6>
- 2c04: 892a mv s2,a0
- 2c06: f21fe06f j 1b26 <stbsp_vsprintfcb+0x782>
- stbsp__cb_buf_clamp(i, fw);
- 2c0a: 87ca mv a5,s2
- fw -= i;
- 2c0c: 4901 li s2,0
- if ((((stbsp__uintptr)bf) & 3) == 0)
- 2c0e: b759 j 2b94 <stbsp_vsprintfcb+0x17f0>
- } else if (fl & STBSP__LEADINGPLUS) {
- 2c10: 002e7713 andi a4,t3,2
- 2c14: 94070663 beqz a4,1d60 <stbsp_vsprintfcb+0x9bc>
- sign[0] = 1;
- 2c18: 670d lui a4,0x3
- 2c1a: b0170713 addi a4,a4,-1279 # 2b01 <stbsp_vsprintfcb+0x175d>
- 2c1e: 06e11423 sh a4,104(sp)
- 2c22: 93eff06f j 1d60 <stbsp_vsprintfcb+0x9bc>
- if (((stbsp__uintptr)sn & 3) == 0)
- 2c26: 87d6 mv a5,s5
- while (limit >= 4) {
- 2c28: 470d li a4,3
- 2c2a: 22d77763 bgeu a4,a3,2e58 <stbsp_vsprintfcb+0x1ab4>
- if ((v - 0x01010101) & (~v) & 0x80808080UL)
- 2c2e: feff05b7 lui a1,0xfeff0
- 2c32: 80808637 lui a2,0x80808
- 2c36: eff5859b addiw a1,a1,-257 # fffffffffefefeff <_ZSt4cerr+0xfffffffffefe8587>
- 2c3a: 08060613 addi a2,a2,128 # ffffffff80808080 <_ZSt4cerr+0xffffffff80800708>
- while (limit >= 4) {
- 2c3e: 480d li a6,3
- 2c40: a029 j 2c4a <stbsp_vsprintfcb+0x18a6>
- limit -= 4;
- 2c42: 36f1 addiw a3,a3,-4
- sn += 4;
- 2c44: 0791 addi a5,a5,4
- while (limit >= 4) {
- 2c46: 20d87963 bgeu a6,a3,2e58 <stbsp_vsprintfcb+0x1ab4>
- stbsp__uint32 v = *(stbsp__uint32 *)sn;
- 2c4a: 4398 lw a4,0(a5)
- if ((v - 0x01010101) & (~v) & 0x80808080UL)
- 2c4c: 00b7053b addw a0,a4,a1
- 2c50: fff74713 not a4,a4
- 2c54: 8f69 and a4,a4,a0
- 2c56: 8f71 and a4,a4,a2
- 2c58: 2701 sext.w a4,a4
- 2c5a: d765 beqz a4,2c42 <stbsp_vsprintfcb+0x189e>
- 2c5c: 02069713 slli a4,a3,0x20
- 2c60: 9301 srli a4,a4,0x20
- 2c62: 973e add a4,a4,a5
- 2c64: a021 j 2c6c <stbsp_vsprintfcb+0x18c8>
- ++sn;
- 2c66: 0785 addi a5,a5,1
- while (limit && *sn) {
- 2c68: 00e78663 beq a5,a4,2c74 <stbsp_vsprintfcb+0x18d0>
- 2c6c: 0007c683 lbu a3,0(a5)
- 2c70: fafd bnez a3,2c66 <stbsp_vsprintfcb+0x18c2>
- 2c72: 873e mv a4,a5
- return (stbsp__uint32)(sn - s);
- 2c74: 41570733 sub a4,a4,s5
- 2c78: 0007069b sext.w a3,a4
- if (pr < (stbsp__int32)l)
- 2c7c: fff6c793 not a5,a3
- 2c80: 97fd srai a5,a5,0x3f
- 2c82: 8f7d and a4,a4,a5
- 2c84: 0007079b sext.w a5,a4
- n = pr + lead[0] + tail[0] + tz;
- 2c88: 863e mv a2,a5
- pr -= l;
- 2c8a: 9f15 subw a4,a4,a3
- return (stbsp__uint32)(sn - s);
- 2c8c: d2eff06f j 21ba <stbsp_vsprintfcb+0xe16>
- for (n = 1; n < l; n++)
- 2c90: 4605 li a2,1
- 2c92: aed663e3 bltu a2,a3,2778 <stbsp_vsprintfcb+0x13d4>
- 2c96: 0c210613 addi a2,sp,194
- 2c9a: bcf5 j 2796 <stbsp_vsprintfcb+0x13f2>
- l = pr + 1;
- 2c9c: 4685 li a3,1
- if ((l - 1) > (stbsp__uint32)pr)
- 2c9e: 4501 li a0,0
- *s++ = sn[0];
- 2ca0: 0c110613 addi a2,sp,193
- 2ca4: bccd j 2796 <stbsp_vsprintfcb+0x13f2>
- 2ca6: 4591 li a1,4
- 2ca8: 4f91 li t6,4
- n = (dp >= 100) ? 5 : 4;
- 2caa: 4e91 li t4,4
- 2cac: be21 j 27c4 <stbsp_vsprintfcb+0x1420>
- 2cae: 4a85 li s5,1
- 2cb0: 80000737 lui a4,0x80000
- pr = 1; // default is 6
- 2cb4: 4a05 li s4,1
- 2cb6: 920ff06f j 1dd6 <stbsp_vsprintfcb+0xa32>
- dp = (n64) ? -1022 : 0;
- 2cba: 4601 li a2,0
- 2cbc: c119 beqz a0,2cc2 <stbsp_vsprintfcb+0x191e>
- 2cbe: c0200613 li a2,-1022
- *bits = b & ((((stbsp__uint64)1) << 52) - 1);
- 2cc2: 872a mv a4,a0
- 2cc4: a3aff06f j 1efe <stbsp_vsprintfcb+0xb5a>
- stbsp__chk_cb_buf(1);
- 2cc8: 2601 sext.w a2,a2
- 2cca: 1fe00793 li a5,510
- 2cce: f2c7c0e3 blt a5,a2,2bee <stbsp_vsprintfcb+0x184a>
- 2cd2: bd61 j 2b6a <stbsp_vsprintfcb+0x17c6>
- tail[0] = (char)n;
- 2cd4: 4795 li a5,5
- tail[n] = '0' + dp % 10;
- 2cd6: 06b10aa3 sb a1,117(sp)
- tail[0] = (char)n;
- 2cda: 06f10823 sb a5,112(sp)
- tail[n] = '0' + dp % 10;
- 2cde: 4815 li a6,5
- 2ce0: 4f95 li t6,5
- n = (dp >= 1000) ? 6 : ((dp >= 100) ? 5 : ((dp >= 10) ? 4 : 3));
- 2ce2: 4595 li a1,5
- 2ce4: b935 j 2920 <stbsp_vsprintfcb+0x157c>
- l = pr + dp;
- 2ce6: 011786bb addw a3,a5,a7
- 2cea: d0b6 sw a3,96(sp)
- 2cec: b6d5 j 28d0 <stbsp_vsprintfcb+0x152c>
- s = (char *)"null";
- 2cee: 00002a97 auipc s5,0x2
- 2cf2: 46aa8a93 addi s5,s5,1130 # 5158 <_GLOBAL__sub_I__ZSt3cin+0x92>
- 2cf6: c80ff06f j 2176 <stbsp_vsprintfcb+0xdd2>
- } else if (fl & STBSP__LEADINGPLUS) {
- 2cfa: 002e7793 andi a5,t3,2
- 2cfe: 1c079c63 bnez a5,2ed6 <stbsp_vsprintfcb+0x1b32>
- sign[0] = 0;
- 2d02: 4689 li a3,2
- 2d04: 4a09 li s4,2
- 2d06: 4805 li a6,1
- 2d08: 9e8ff06f j 1ef0 <stbsp_vsprintfcb+0xb4c>
- sign[0] = 1;
- 2d0c: 670d lui a4,0x3
- 2d0e: b0170713 addi a4,a4,-1279 # 2b01 <stbsp_vsprintfcb+0x175d>
- 2d12: 06e11423 sh a4,104(sp)
- 2d16: b86ff06f j 209c <stbsp_vsprintfcb+0xcf8>
- pr = 0;
- 2d1a: 4881 li a7,0
- 2d1c: f1ffe06f j 1c3a <stbsp_vsprintfcb+0x896>
- *s++ = '0';
- 2d20: 03000713 li a4,48
- 2d24: 0ce10023 sb a4,192(sp)
- if (pr)
- 2d28: 1a088c63 beqz a7,2ee0 <stbsp_vsprintfcb+0x1b3c>
- *s++ = stbsp__period;
- 2d2c: 00004717 auipc a4,0x4
- 2d30: e2074703 lbu a4,-480(a4) # 6b4c <stbsp__period>
- n = -dp;
- 2d34: 40f007bb negw a5,a5
- *s++ = stbsp__period;
- 2d38: 0ce100a3 sb a4,193(sp)
- if ((stbsp__int32)n > pr)
- 2d3c: 0007871b sext.w a4,a5
- 2d40: 00e8d363 bge a7,a4,2d46 <stbsp_vsprintfcb+0x19a2>
- 2d44: 87c6 mv a5,a7
- 2d46: 0007871b sext.w a4,a5
- if ((stbsp__int32)(l + n) > pr)
- 2d4a: 00d7833b addw t1,a5,a3
- 2d4e: 883a mv a6,a4
- while (i) {
- 2d50: 0c210793 addi a5,sp,194
- *s++ = '0';
- 2d54: 03000513 li a0,48
- while (i) {
- 2d58: e711 bnez a4,2d64 <stbsp_vsprintfcb+0x19c0>
- 2d5a: a271 j 2ee6 <stbsp_vsprintfcb+0x1b42>
- if ((((stbsp__uintptr)s) & 3) == 0)
- 2d5c: 0037f613 andi a2,a5,3
- 2d60: 18060563 beqz a2,2eea <stbsp_vsprintfcb+0x1b46>
- *s++ = '0';
- 2d64: 85ba mv a1,a4
- 2d66: 00a78023 sb a0,0(a5)
- --i;
- 2d6a: 377d addiw a4,a4,-1
- *s++ = '0';
- 2d6c: 0785 addi a5,a5,1
- while (i) {
- 2d6e: f77d bnez a4,2d5c <stbsp_vsprintfcb+0x19b8>
- if ((stbsp__int32)(l + n) > pr)
- 2d70: 0003071b sext.w a4,t1
- 2d74: 4108863b subw a2,a7,a6
- 2d78: 00e8d563 bge a7,a4,2d82 <stbsp_vsprintfcb+0x19de>
- l = pr - n;
- 2d7c: 0006069b sext.w a3,a2
- 2d80: d0b2 sw a2,96(sp)
- while (i) {
- 2d82: c68d beqz a3,2dac <stbsp_vsprintfcb+0x1a08>
- 2d84: 7566 ld a0,120(sp)
- 2d86: 02069813 slli a6,a3,0x20
- 2d8a: 02085813 srli a6,a6,0x20
- 2d8e: 01078eb3 add t4,a5,a6
- 2d92: 85aa mv a1,a0
- 2d94: 873e mv a4,a5
- *s++ = *sn++;
- 2d96: 0005c883 lbu a7,0(a1)
- 2d9a: 0705 addi a4,a4,1
- while (i) {
- 2d9c: 0585 addi a1,a1,1
- *s++ = *sn++;
- 2d9e: ff170fa3 sb a7,-1(a4)
- while (i) {
- 2da2: ffd71ae3 bne a4,t4,2d96 <stbsp_vsprintfcb+0x19f2>
- 2da6: 9542 add a0,a0,a6
- 2da8: 97c2 add a5,a5,a6
- 2daa: fcaa sd a0,120(sp)
- l = (stbsp__uint32)(s - (num + 64));
- 2dac: 0c010a93 addi s5,sp,192
- cs = 1 + (3 << 24); // how many tens did we write (for commas below)
- 2db0: 030002b7 lui t0,0x3000
- tz = pr - (n + l);
- 2db4: 40d608bb subw a7,a2,a3
- l = (stbsp__uint32)(s - (num + 64));
- 2db8: 415787b3 sub a5,a5,s5
- cs = 1 + (3 << 24); // how many tens did we write (for commas below)
- 2dbc: 0285 addi t0,t0,1 # 3000001 <_ZSt4cerr+0x2ff8689>
- 2dbe: fbcff06f j 257a <stbsp_vsprintfcb+0x11d6>
- *--s = '0';
- 2dc2: 03000793 li a5,48
- 2dc6: fefa8fa3 sb a5,-1(s5)
- l = 1;
- 2dca: 030002b7 lui t0,0x3000
- 2dce: 4785 li a5,1
- 2dd0: d0be sw a5,96(sp)
- *--s = '0';
- 2dd2: 1afd addi s5,s5,-1
- l = 1;
- 2dd4: 4605 li a2,1
- 2dd6: 0285 addi t0,t0,1 # 3000001 <_ZSt4cerr+0x2ff8689>
- 2dd8: 4685 li a3,1
- 2dda: b9dd j 2ad0 <stbsp_vsprintfcb+0x172c>
- } else if (fl & STBSP__LEADINGSPACE) {
- 2ddc: 004e7713 andi a4,t3,4
- 2de0: e74d bnez a4,2e8a <stbsp_vsprintfcb+0x1ae6>
- } else if (fl & STBSP__LEADINGPLUS) {
- 2de2: 8b89 andi a5,a5,2
- 2de4: efd9 bnez a5,2e82 <stbsp_vsprintfcb+0x1ade>
- sign[0] = 0;
- 2de6: 06010423 sb zero,104(sp)
- 2dea: 4a01 li s4,0
- 2dec: b9c9 j 2abe <stbsp_vsprintfcb+0x171a>
- if ((s[0] == '0') && (s != (num + STBSP__NUMSZ)))
- 2dee: 051c addi a5,sp,640
- 2df0: cafa89e3 beq s5,a5,2aa2 <stbsp_vsprintfcb+0x16fe>
- ++s;
- 2df4: 0a85 addi s5,s5,1
- l = (stbsp__uint32)((num + STBSP__NUMSZ) - s);
- 2df6: 415786bb subw a3,a5,s5
- 2dfa: b165 j 2aa2 <stbsp_vsprintfcb+0x16fe>
- n = dp - n;
- 2dfc: 40ce87bb subw a5,t4,a2
- if ((fl & STBSP__TRIPLET_COMMA) == 0) {
- 2e00: 12030e63 beqz t1,2f3c <stbsp_vsprintfcb+0x1b98>
- if ((fl & STBSP__TRIPLET_COMMA) && (++cs == 4)) {
- 2e04: 4511 li a0,4
- 2e06: 03000613 li a2,48
- *s++ = stbsp__comma;
- 2e0a: 00170693 addi a3,a4,1
- if ((fl & STBSP__TRIPLET_COMMA) && (++cs == 4)) {
- 2e0e: 00030563 beqz t1,2e18 <stbsp_vsprintfcb+0x1a74>
- 2e12: 2585 addiw a1,a1,1
- 2e14: 00a58963 beq a1,a0,2e26 <stbsp_vsprintfcb+0x1a82>
- 2e18: 8736 mv a4,a3
- --n;
- 2e1a: 37fd addiw a5,a5,-1
- 2e1c: fec70fa3 sb a2,-1(a4)
- while (n) {
- 2e20: f7ed bnez a5,2e0a <stbsp_vsprintfcb+0x1a66>
- 2e22: f38ff06f j 255a <stbsp_vsprintfcb+0x11b6>
- 2e26: fe568fa3 sb t0,-1(a3)
- *s++ = stbsp__comma;
- 2e2a: 0709 addi a4,a4,2
- if ((fl & STBSP__TRIPLET_COMMA) && (++cs == 4)) {
- 2e2c: 4585 li a1,1
- 2e2e: b7f5 j 2e1a <stbsp_vsprintfcb+0x1a76>
- sign[0] = 0;
- 2e30: 06010423 sb zero,104(sp)
- 2e34: f1dfe06f j 1d50 <stbsp_vsprintfcb+0x9ac>
- tail[idx + 1] = "_kMGT"[fl >> 24];
- 2e38: 00002697 auipc a3,0x2
- 2e3c: 33068693 addi a3,a3,816 # 5168 <_GLOBAL__sub_I__ZSt3cin+0xa2>
- 2e40: 9736 add a4,a4,a3
- 2e42: 00074683 lbu a3,0(a4)
- 2e46: 1088 addi a0,sp,96
- 2e48: 22060713 addi a4,a2,544
- 2e4c: 972a add a4,a4,a0
- 2e4e: ded70823 sb a3,-528(a4)
- idx++;
- 2e52: 8fb2 mv t6,a2
- 2e54: fb0ff06f j 2604 <stbsp_vsprintfcb+0x1260>
- while (limit && *sn) {
- 2e58: e00692e3 bnez a3,2c5c <stbsp_vsprintfcb+0x18b8>
- 2e5c: bd19 j 2c72 <stbsp_vsprintfcb+0x18ce>
- pr = (dp < (stbsp__int32)l) ? l - dp : 0;
- 2e5e: 0008071b sext.w a4,a6
- 2e62: 86c2 mv a3,a6
- 2e64: 88d2 mv a7,s4
- pr = -dp + ((pr > (stbsp__int32)l) ? (stbsp__int32) l : pr);
- 2e66: 863a mv a2,a4
- 2e68: 00e8d363 bge a7,a4,2e6e <stbsp_vsprintfcb+0x1aca>
- 2e6c: 8646 mv a2,a7
- 2e6e: 40f608bb subw a7,a2,a5
- 2e72: 814ff06f j 1e86 <stbsp_vsprintfcb+0xae2>
- divisor = 1000.0f;
- 2e76: 00003797 auipc a5,0x3
- 2e7a: a927b787 fld fa5,-1390(a5) # 5908 <STDIN_FD+0x28>
- 2e7e: dd5fe06f j 1c52 <stbsp_vsprintfcb+0x8ae>
- 2e82: 678d lui a5,0x3
- 2e84: b017879b addiw a5,a5,-1279 # 2b01 <stbsp_vsprintfcb+0x175d>
- 2e88: b13d j 2ab6 <stbsp_vsprintfcb+0x1712>
- 2e8a: 6789 lui a5,0x2
- 2e8c: 2785 addiw a5,a5,1 # 2001 <stbsp_vsprintfcb+0xc5d>
- 2e8e: b125 j 2ab6 <stbsp_vsprintfcb+0x1712>
- *s++ = stbsp__period;
- 2e90: 00004517 auipc a0,0x4
- 2e94: cbc54503 lbu a0,-836(a0) # 6b4c <stbsp__period>
- sn = s;
- 2e98: 0c210793 addi a5,sp,194
- n = pr;
- 2e9c: 0008869b sext.w a3,a7
- *s++ = stbsp__period;
- 2ea0: 0ca100a3 sb a0,193(sp)
- sn = s;
- 2ea4: fcbe sd a5,120(sp)
- if (n > 13)
- 2ea6: 4535 li a0,13
- n64 <<= 4;
- 2ea8: 0712 slli a4,a4,0x4
- if (n > 13)
- 2eaa: 8836 mv a6,a3
- 2eac: 00d57363 bgeu a0,a3,2eb2 <stbsp_vsprintfcb+0x1b0e>
- 2eb0: 4835 li a6,13
- 2eb2: 0008051b sext.w a0,a6
- while (n--) {
- 2eb6: 387d addiw a6,a6,-1
- if (pr > (stbsp__int32)n)
- 2eb8: af1542e3 blt a0,a7,299c <stbsp_vsprintfcb+0x15f8>
- tz = 0;
- 2ebc: 4881 li a7,0
- 2ebe: b4cd j 29a0 <stbsp_vsprintfcb+0x15fc>
- while (n < l) {
- 2ec0: 87ba mv a5,a4
- 2ec2: bc1d j 28f8 <stbsp_vsprintfcb+0x1554>
- tail[0] = (char)n;
- 2ec4: 478d li a5,3
- 2ec6: 06f10823 sb a5,112(sp)
- tail[n] = '0' + dp % 10;
- 2eca: 06b109a3 sb a1,115(sp)
- 2ece: 480d li a6,3
- 2ed0: 4f8d li t6,3
- 2ed2: 8e4ff06f j 1fb6 <stbsp_vsprintfcb+0xc12>
- 2ed6: 678d lui a5,0x3
- 2ed8: b017879b addiw a5,a5,-1279 # 2b01 <stbsp_vsprintfcb+0x175d>
- 2edc: 80aff06f j 1ee6 <stbsp_vsprintfcb+0xb42>
- if (pr)
- 2ee0: 8336 mv t1,a3
- *s++ = '0';
- 2ee2: 0c110793 addi a5,sp,193
- while (i) {
- 2ee6: 4801 li a6,0
- 2ee8: b561 j 2d70 <stbsp_vsprintfcb+0x19cc>
- while (i >= 4) {
- 2eea: 460d li a2,3
- 2eec: 04e65663 bge a2,a4,2f38 <stbsp_vsprintfcb+0x1b94>
- 2ef0: ffb5871b addiw a4,a1,-5
- 2ef4: 0027559b srliw a1,a4,0x2
- 2ef8: 0015861b addiw a2,a1,1
- 2efc: 060a slli a2,a2,0x2
- *(stbsp__uint32 *)s = 0x30303030;
- 2efe: 30303537 lui a0,0x30303
- 2f02: 963e add a2,a2,a5
- 2f04: 03050513 addi a0,a0,48 # 30303030 <_ZSt4cerr+0x302fb6b8>
- 2f08: c388 sw a0,0(a5)
- s += 4;
- 2f0a: 0791 addi a5,a5,4
- while (i >= 4) {
- 2f0c: fef61ee3 bne a2,a5,2f08 <stbsp_vsprintfcb+0x1b64>
- 2f10: 0025959b slliw a1,a1,0x2
- 2f14: 9f0d subw a4,a4,a1
- while (i) {
- 2f16: e4070de3 beqz a4,2d70 <stbsp_vsprintfcb+0x19cc>
- *s++ = '0';
- 2f1a: 03000513 li a0,48
- while (i) {
- 2f1e: 00f705bb addw a1,a4,a5
- *s++ = '0';
- 2f22: 0605 addi a2,a2,1
- while (i) {
- 2f24: 00060e9b sext.w t4,a2
- *s++ = '0';
- 2f28: fea60fa3 sb a0,-1(a2)
- while (i) {
- 2f2c: ffd59be3 bne a1,t4,2f22 <stbsp_vsprintfcb+0x1b7e>
- 2f30: 1702 slli a4,a4,0x20
- 2f32: 9301 srli a4,a4,0x20
- 2f34: 97ba add a5,a5,a4
- 2f36: bd2d j 2d70 <stbsp_vsprintfcb+0x19cc>
- while (i >= 4) {
- 2f38: 863e mv a2,a5
- 2f3a: b7c5 j 2f1a <stbsp_vsprintfcb+0x1b76>
- if ((((stbsp__uintptr)s) & 3) == 0)
- 2f3c: 00377693 andi a3,a4,3
- 2f40: ce81 beqz a3,2f58 <stbsp_vsprintfcb+0x1bb4>
- *s++ = '0';
- 2f42: 03000693 li a3,48
- 2f46: 00d70023 sb a3,0(a4)
- --n;
- 2f4a: 37fd addiw a5,a5,-1
- *s++ = '0';
- 2f4c: 0705 addi a4,a4,1
- while (n) {
- 2f4e: e0078663 beqz a5,255a <stbsp_vsprintfcb+0x11b6>
- if ((((stbsp__uintptr)s) & 3) == 0)
- 2f52: 00377613 andi a2,a4,3
- 2f56: fa65 bnez a2,2f46 <stbsp_vsprintfcb+0x1ba2>
- while (n >= 4) {
- 2f58: 468d li a3,3
- 2f5a: eaf6f5e3 bgeu a3,a5,2e04 <stbsp_vsprintfcb+0x1a60>
- 2f5e: ffc7869b addiw a3,a5,-4
- 2f62: 0026d69b srliw a3,a3,0x2
- 2f66: 2685 addiw a3,a3,1
- 2f68: 068a slli a3,a3,0x2
- *(stbsp__uint32 *)s = 0x30303030;
- 2f6a: 30303637 lui a2,0x30303
- 2f6e: 96ba add a3,a3,a4
- 2f70: 03060613 addi a2,a2,48 # 30303030 <_ZSt4cerr+0x302fb6b8>
- 2f74: c310 sw a2,0(a4)
- s += 4;
- 2f76: 0711 addi a4,a4,4
- while (n >= 4) {
- 2f78: fed71ee3 bne a4,a3,2f74 <stbsp_vsprintfcb+0x1bd0>
- 2f7c: 8b8d andi a5,a5,3
- while (n) {
- 2f7e: e80793e3 bnez a5,2e04 <stbsp_vsprintfcb+0x1a60>
- 2f82: dd8ff06f j 255a <stbsp_vsprintfcb+0x11b6>
- if (((stbsp__uintptr)sn & 3) == 0)
- 2f86: 87d6 mv a5,s5
- l = stbsp__strlen_limited(s, (pr >= 0) ? pr : ~0u);
- 2f88: 56fd li a3,-1
- 2f8a: b155 j 2c2e <stbsp_vsprintfcb+0x188a>
- if ((dp <= -4) || (dp > (stbsp__int32)n)) {
- 2f8c: 5775 li a4,-3
- 2f8e: 00e7ce63 blt a5,a4,2faa <stbsp_vsprintfcb+0x1c06>
- 2f92: f6fa4663 blt s4,a5,26fe <stbsp_vsprintfcb+0x135a>
- if (dp > 0) {
- 2f96: ecf054e3 blez a5,2e5e <stbsp_vsprintfcb+0x1aba>
- 2f9a: 86c2 mv a3,a6
- pr = (dp < (stbsp__int32)l) ? l - dp : 0;
- 2f9c: 4881 li a7,0
- 2f9e: ee9fe06f j 1e86 <stbsp_vsprintfcb+0xae2>
- while (i--)
- 2fa2: fff7869b addiw a3,a5,-1
- 2fa6: 8722 mv a4,s0
- 2fa8: b105 j 2bc8 <stbsp_vsprintfcb+0x1824>
- if (pr > (stbsp__int32)l)
- 2faa: 0008071b sext.w a4,a6
- while ((l > 1) && (pr) && (sn[l - 1] == '0')) {
- 2fae: 7ae6 ld s5,120(sp)
- if (pr > (stbsp__int32)l)
- 2fb0: 86c2 mv a3,a6
- 2fb2: 88d2 mv a7,s4
- 2fb4: f7475d63 bge a4,s4,272e <stbsp_vsprintfcb+0x138a>
- while ((l > 1) && (pr) && (sn[l - 1] == '0')) {
- 2fb8: 8542 mv a0,a6
- 2fba: f56ff06f j 2710 <stbsp_vsprintfcb+0x136c>
-
-0000000000002fbe <stbsp_sprintf>:
-{
- 2fbe: 715d addi sp,sp,-80
- va_start(va, fmt);
- 2fc0: 02010313 addi t1,sp,32
-{
- 2fc4: f032 sd a2,32(sp)
- 2fc6: f436 sd a3,40(sp)
- 2fc8: f83a sd a4,48(sp)
- result = STB_SPRINTF_DECORATE(vsprintfcb)(0, 0, buf, fmt, va);
- 2fca: 86ae mv a3,a1
- 2fcc: 862a mv a2,a0
- 2fce: 871a mv a4,t1
- 2fd0: 4581 li a1,0
- 2fd2: 4501 li a0,0
-{
- 2fd4: ec06 sd ra,24(sp)
- 2fd6: fc3e sd a5,56(sp)
- 2fd8: e0c2 sd a6,64(sp)
- 2fda: e4c6 sd a7,72(sp)
- va_start(va, fmt);
- 2fdc: e41a sd t1,8(sp)
- result = STB_SPRINTF_DECORATE(vsprintfcb)(0, 0, buf, fmt, va);
- 2fde: bc6fe0ef jal 13a4 <stbsp_vsprintfcb>
-}
- 2fe2: 60e2 ld ra,24(sp)
- 2fe4: 6161 addi sp,sp,80
- 2fe6: 8082 ret
-
-0000000000002fe8 <stbsp_vsnprintf>:
-{
- 2fe8: dd010113 addi sp,sp,-560
- 2fec: 22813023 sd s0,544(sp)
- 2ff0: 20913c23 sd s1,536(sp)
- 2ff4: 22113423 sd ra,552(sp)
- 2ff8: 84ae mv s1,a1
- 2ffa: 842a mv s0,a0
- 2ffc: 88b2 mv a7,a2
- 2ffe: 8736 mv a4,a3
- if ( (count == 0) && !buf )
- 3000: e591 bnez a1,300c <stbsp_vsnprintf+0x24>
- 3002: c141 beqz a0,3082 <stbsp_vsnprintf+0x9a>
- c.buf = buf;
- 3004: e02a sd a0,0(sp)
- c.count = count;
- 3006: e402 sd zero,8(sp)
- return (c->count >= STB_SPRINTF_MIN) ? c->buf : c->tmp; // go direct into buffer if you can
- 3008: 0810 addi a2,sp,16
- 300a: a089 j 304c <stbsp_vsnprintf+0x64>
- if (len > c->count)
- 300c: 0015a593 slti a1,a1,1
- 3010: 40b005bb negw a1,a1
- 3014: 8de5 and a1,a1,s1
- c.buf = buf;
- 3016: e02a sd a0,0(sp)
- c.count = count;
- 3018: c426 sw s1,8(sp)
- c.length = 0;
- 301a: c602 sw zero,12(sp)
- if (len > c->count)
- 301c: 2581 sext.w a1,a1
- if (len) {
- 301e: 0804d663 bgez s1,30aa <stbsp_vsnprintf+0xc2>
- s = buf;
- 3022: 4781 li a5,0
- if (buf != c->buf) {
- 3024: c911 beqz a0,3038 <stbsp_vsnprintf+0x50>
- *d++ = *s++;
- 3026: 0007c803 lbu a6,0(a5)
- 302a: 0785 addi a5,a5,1
- 302c: 00f40533 add a0,s0,a5
- 3030: ff050fa3 sb a6,-1(a0)
- } while (s < se);
- 3034: feb7e9e3 bltu a5,a1,3026 <stbsp_vsnprintf+0x3e>
- c->count -= len;
- 3038: 40b486bb subw a3,s1,a1
- c->buf += len;
- 303c: 95a2 add a1,a1,s0
- 303e: e02e sd a1,0(sp)
- c->count -= len;
- 3040: c436 sw a3,8(sp)
- return (c->count >= STB_SPRINTF_MIN) ? c->buf : c->tmp; // go direct into buffer if you can
- 3042: 1ff00793 li a5,511
- 3046: fcd7d1e3 bge a5,a3,3008 <stbsp_vsnprintf+0x20>
- 304a: 6602 ld a2,0(sp)
- STB_SPRINTF_DECORATE( vsprintfcb )( stbsp__clamp_callback, &c, stbsp__clamp_callback(0,&c,0), fmt, va );
- 304c: 86c6 mv a3,a7
- 304e: 858a mv a1,sp
- 3050: ffffd517 auipc a0,0xffffd
- 3054: 21650513 addi a0,a0,534 # 266 <stbsp__clamp_callback>
- 3058: b4cfe0ef jal 13a4 <stbsp_vsprintfcb>
- l = (int)( c.buf - buf );
- 305c: 6782 ld a5,0(sp)
- 305e: 9f81 subw a5,a5,s0
- if ( l >= count ) // should never be greater, only equal (or less) than count
- 3060: 0097c463 blt a5,s1,3068 <stbsp_vsnprintf+0x80>
- l = count - 1;
- 3064: fff4879b addiw a5,s1,-1
- buf[l] = 0;
- 3068: 943e add s0,s0,a5
- 306a: 00040023 sb zero,0(s0)
-}
- 306e: 22813083 ld ra,552(sp)
- 3072: 22013403 ld s0,544(sp)
- 3076: 4532 lw a0,12(sp)
- 3078: 21813483 ld s1,536(sp)
- 307c: 23010113 addi sp,sp,560
- 3080: 8082 ret
- STB_SPRINTF_DECORATE( vsprintfcb )( stbsp__count_clamp_callback, &c, c.tmp, fmt, va );
- 3082: 86b2 mv a3,a2
- 3084: 858a mv a1,sp
- 3086: 0810 addi a2,sp,16
- 3088: ffffd517 auipc a0,0xffffd
- 308c: 22c50513 addi a0,a0,556 # 2b4 <stbsp__count_clamp_callback>
- c.length = 0;
- 3090: c602 sw zero,12(sp)
- STB_SPRINTF_DECORATE( vsprintfcb )( stbsp__count_clamp_callback, &c, c.tmp, fmt, va );
- 3092: b12fe0ef jal 13a4 <stbsp_vsprintfcb>
-}
- 3096: 22813083 ld ra,552(sp)
- 309a: 22013403 ld s0,544(sp)
- 309e: 4532 lw a0,12(sp)
- 30a0: 21813483 ld s1,536(sp)
- 30a4: 23010113 addi sp,sp,560
- 30a8: 8082 ret
- 30aa: 86a6 mv a3,s1
- 30ac: bf59 j 3042 <stbsp_vsnprintf+0x5a>
-
-00000000000030ae <stbsp_snprintf>:
-{
- 30ae: 715d addi sp,sp,-80
- va_start(va, fmt);
- 30b0: 02810313 addi t1,sp,40
-{
- 30b4: f436 sd a3,40(sp)
- result = STB_SPRINTF_DECORATE(vsnprintf)(buf, count, fmt, va);
- 30b6: 869a mv a3,t1
-{
- 30b8: ec06 sd ra,24(sp)
- 30ba: f83a sd a4,48(sp)
- 30bc: fc3e sd a5,56(sp)
- 30be: e0c2 sd a6,64(sp)
- 30c0: e4c6 sd a7,72(sp)
- va_start(va, fmt);
- 30c2: e41a sd t1,8(sp)
- result = STB_SPRINTF_DECORATE(vsnprintf)(buf, count, fmt, va);
- 30c4: f25ff0ef jal 2fe8 <stbsp_vsnprintf>
-}
- 30c8: 60e2 ld ra,24(sp)
- 30ca: 6161 addi sp,sp,80
- 30cc: 8082 ret
-
-00000000000030ce <stbsp_vsprintf>:
-{
- 30ce: 86ae mv a3,a1
- 30d0: 8732 mv a4,a2
- return STB_SPRINTF_DECORATE(vsprintfcb)(0, 0, buf, fmt, va);
- 30d2: 4581 li a1,0
- 30d4: 862a mv a2,a0
- 30d6: 4501 li a0,0
- 30d8: accfe06f j 13a4 <stbsp_vsprintfcb>
-
-00000000000030dc <sprintf>:
-{
- 30dc: 7119 addi sp,sp,-128
- va_start(ap, format);
- 30de: 05010313 addi t1,sp,80
-{
- 30e2: e0a2 sd s0,64(sp)
- 30e4: fc26 sd s1,56(sp)
- 30e6: 842a mv s0,a0
- 30e8: e8b2 sd a2,80(sp)
- _vprintf_core(&ctx, format, ap);
- 30ea: 0808 addi a0,sp,16
- ctx.limit = size;
- 30ec: 54fd li s1,-1
- _vprintf_core(&ctx, format, ap);
- 30ee: 861a mv a2,t1
-{
- 30f0: e486 sd ra,72(sp)
- 30f2: ecb6 sd a3,88(sp)
- 30f4: f0ba sd a4,96(sp)
- 30f6: f4be sd a5,104(sp)
- 30f8: f8c2 sd a6,112(sp)
- 30fa: fcc6 sd a7,120(sp)
- va_start(ap, format);
- 30fc: e41a sd t1,8(sp)
- ctx.buf = str;
- 30fe: e822 sd s0,16(sp)
- ctx.limit = size;
- 3100: ec26 sd s1,24(sp)
- ctx.written = 0;
- 3102: f002 sd zero,32(sp)
- ctx.stream = NULL;
- 3104: f402 sd zero,40(sp)
- _vprintf_core(&ctx, format, ap);
- 3106: 02c000ef jal 3132 <_vprintf_core.constprop.0.isra.0>
- if (ctx.written < size)
- 310a: 7502 ld a0,32(sp)
- 310c: 00950b63 beq a0,s1,3122 <sprintf+0x46>
- str[ctx.written] = '\0';
- 3110: 942a add s0,s0,a0
- 3112: 00040023 sb zero,0(s0)
-}
- 3116: 60a6 ld ra,72(sp)
- 3118: 6406 ld s0,64(sp)
- 311a: 74e2 ld s1,56(sp)
- 311c: 2501 sext.w a0,a0
- 311e: 6109 addi sp,sp,128
- 3120: 8082 ret
- str[size - 1] = '\0';
- 3122: fe040f23 sb zero,-2(s0)
-}
- 3126: 60a6 ld ra,72(sp)
- 3128: 6406 ld s0,64(sp)
- 312a: 74e2 ld s1,56(sp)
- 312c: 2501 sext.w a0,a0
- 312e: 6109 addi sp,sp,128
- 3130: 8082 ret
-
-0000000000003132 <_vprintf_core.constprop.0.isra.0>:
-static int _vprintf_core(_OutContext *ctx, const char *format, va_list ap)
- 3132: 7129 addi sp,sp,-320
- 3134: edee sd s11,216(sp)
- 3136: fe06 sd ra,312(sp)
- 3138: 8dae mv s11,a1
- while (*p)
- 313a: 0005c583 lbu a1,0(a1)
- 313e: cde9 beqz a1,3218 <_vprintf_core.constprop.0.isra.0+0xe6>
- 3140: f626 sd s1,296(sp)
- 3142: f24a sd s2,288(sp)
- 3144: ee4e sd s3,280(sp)
- 3146: e656 sd s5,264(sp)
- 3148: f9e2 sd s8,240(sp)
- 314a: fa22 sd s0,304(sp)
- 314c: ea52 sd s4,272(sp)
- 314e: e25a sd s6,256(sp)
- 3150: fdde sd s7,248(sp)
- 3152: f5e6 sd s9,232(sp)
- 3154: f1ea sd s10,224(sp)
- 3156: 84aa mv s1,a0
- 3158: 8c32 mv s8,a2
- if (*p != '%')
- 315a: 02500a93 li s5,37
- 315e: 49c1 li s3,16
- 3160: 00002917 auipc s2,0x2
- 3164: 2dc90913 addi s2,s2,732 # 543c <_GLOBAL__sub_I__ZSt3cin+0x376>
- 3168: a039 j 3176 <_vprintf_core.constprop.0.isra.0+0x44>
- _out_char(ctx, spec);
- 316a: 8526 mv a0,s1
- 316c: 952fe0ef jal 12be <_out_char>
- while (*p)
- 3170: 000dc583 lbu a1,0(s11)
- 3174: c5d9 beqz a1,3202 <_vprintf_core.constprop.0.isra.0+0xd0>
- _out_char(ctx, *p++);
- 3176: 0d85 addi s11,s11,1
- if (*p != '%')
- 3178: ff5599e3 bne a1,s5,316a <_vprintf_core.constprop.0.isra.0+0x38>
- int flag_left = 0, flag_zero = 0, flag_plus = 0, flag_space = 0, flag_hash = 0;
- 317c: 4501 li a0,0
- 317e: 4881 li a7,0
- 3180: 4581 li a1,0
- 3182: 4b01 li s6,0
- 3184: 4a01 li s4,0
- if (*p == '-')
- 3186: 000dcc83 lbu s9,0(s11)
- 318a: fe0c871b addiw a4,s9,-32
- 318e: 0ff77713 zext.b a4,a4
- 3192: 00e9e763 bltu s3,a4,31a0 <_vprintf_core.constprop.0.isra.0+0x6e>
- 3196: 070a slli a4,a4,0x2
- 3198: 974a add a4,a4,s2
- 319a: 4318 lw a4,0(a4)
- 319c: 974a add a4,a4,s2
- 319e: 8702 jr a4
- if (*p == '*')
- 31a0: 02a00793 li a5,42
- 31a4: 16fc9c63 bne s9,a5,331c <_vprintf_core.constprop.0.isra.0+0x1ea>
- width = va_arg(ap, int);
- 31a8: 000c2403 lw s0,0(s8)
- 31ac: 0c21 addi s8,s8,8
- if (width < 0)
- 31ae: 00045563 bgez s0,31b8 <_vprintf_core.constprop.0.isra.0+0x86>
- width = -width;
- 31b2: 4080043b negw s0,s0
- flag_left = 1;
- 31b6: 4a05 li s4,1
- while (*p >= '0' && *p <= '9')
- 31b8: 001dcc83 lbu s9,1(s11)
- p++;
- 31bc: 0d85 addi s11,s11,1
- if (*p == '.')
- 31be: 02e00793 li a5,46
- int precision = -1;
- 31c2: 5bfd li s7,-1
- if (*p == '.')
- 31c4: 18fc8a63 beq s9,a5,3358 <_vprintf_core.constprop.0.isra.0+0x226>
- if (*p == 'l')
- 31c8: 06c00693 li a3,108
- 31cc: 8666 mv a2,s9
- 31ce: 1adc8663 beq s9,a3,337a <_vprintf_core.constprop.0.isra.0+0x248>
- else if (*p == 'z')
- 31d2: 07a00693 li a3,122
- p++;
- 31d6: 0d85 addi s11,s11,1
- else if (*p == 'z')
- 31d8: 24dc8163 beq s9,a3,341a <_vprintf_core.constprop.0.isra.0+0x2e8>
- if (!spec)
- 31dc: 06400693 li a3,100
- 31e0: 4adc8163 beq s9,a3,3682 <_vprintf_core.constprop.0.isra.0+0x550>
- 31e4: 06400693 li a3,100
- int len_mod = 0;
- 31e8: 4e81 li t4,0
- 31ea: 1b96e663 bltu a3,s9,3396 <_vprintf_core.constprop.0.isra.0+0x264>
- 31ee: 04700693 li a3,71
- 31f2: 2796e463 bltu a3,s9,345a <_vprintf_core.constprop.0.isra.0+0x328>
- 31f6: 04400693 li a3,68
- 31fa: 0596e363 bltu a3,s9,3240 <_vprintf_core.constprop.0.isra.0+0x10e>
- 31fe: 240c9363 bnez s9,3444 <_vprintf_core.constprop.0.isra.0+0x312>
- 3202: 7452 ld s0,304(sp)
- 3204: 74b2 ld s1,296(sp)
- 3206: 7912 ld s2,288(sp)
- 3208: 69f2 ld s3,280(sp)
- 320a: 6a52 ld s4,272(sp)
- 320c: 6ab2 ld s5,264(sp)
- 320e: 6b12 ld s6,256(sp)
- 3210: 7bee ld s7,248(sp)
- 3212: 7c4e ld s8,240(sp)
- 3214: 7cae ld s9,232(sp)
- 3216: 7d0e ld s10,224(sp)
-}
- 3218: 70f2 ld ra,312(sp)
- 321a: 6dee ld s11,216(sp)
- 321c: 6131 addi sp,sp,320
- 321e: 8082 ret
- if (*p == '-')
- 3220: 4585 li a1,1
- p++;
- 3222: 0d85 addi s11,s11,1
- if (*p == '-')
- 3224: b78d j 3186 <_vprintf_core.constprop.0.isra.0+0x54>
- 3226: 4505 li a0,1
- p++;
- 3228: 0d85 addi s11,s11,1
- while (1)
- 322a: bfb1 j 3186 <_vprintf_core.constprop.0.isra.0+0x54>
- if (*p == '-')
- 322c: 4885 li a7,1
- p++;
- 322e: 0d85 addi s11,s11,1
- while (1)
- 3230: bf99 j 3186 <_vprintf_core.constprop.0.isra.0+0x54>
- if (*p == '-')
- 3232: 4b05 li s6,1
- p++;
- 3234: 0d85 addi s11,s11,1
- while (1)
- 3236: bf81 j 3186 <_vprintf_core.constprop.0.isra.0+0x54>
- if (*p == '-')
- 3238: 4a05 li s4,1
- p++;
- 323a: 0d85 addi s11,s11,1
- while (1)
- 323c: b7a9 j 3186 <_vprintf_core.constprop.0.isra.0+0x54>
- char spec = *p++;
- 323e: 8dbe mv s11,a5
- fmt_tmp[f_idx++] = '%';
- 3240: 02500693 li a3,37
- 3244: 02d10823 sb a3,48(sp)
- 3248: 4d05 li s10,1
- if (flag_left)
- 324a: 000a0763 beqz s4,3258 <_vprintf_core.constprop.0.isra.0+0x126>
- fmt_tmp[f_idx++] = '-';
- 324e: 02d00693 li a3,45
- 3252: 02d108a3 sb a3,49(sp)
- 3256: 4d09 li s10,2
- if (flag_zero)
- 3258: 000b0c63 beqz s6,3270 <_vprintf_core.constprop.0.isra.0+0x13e>
- fmt_tmp[f_idx++] = '0';
- 325c: 0c0d0793 addi a5,s10,192
- 3260: 0818 addi a4,sp,16
- 3262: 00e786b3 add a3,a5,a4
- 3266: 03000613 li a2,48
- 326a: f6c68023 sb a2,-160(a3)
- 326e: 2d05 addiw s10,s10,1
- if (flag_plus)
- 3270: c999 beqz a1,3286 <_vprintf_core.constprop.0.isra.0+0x154>
- fmt_tmp[f_idx++] = '+';
- 3272: 0c0d0793 addi a5,s10,192
- 3276: 0818 addi a4,sp,16
- 3278: 00e786b3 add a3,a5,a4
- 327c: 02b00613 li a2,43
- 3280: f6c68023 sb a2,-160(a3)
- 3284: 2d05 addiw s10,s10,1
- if (flag_space)
- 3286: 00088c63 beqz a7,329e <_vprintf_core.constprop.0.isra.0+0x16c>
- fmt_tmp[f_idx++] = ' ';
- 328a: 0c0d0793 addi a5,s10,192
- 328e: 0818 addi a4,sp,16
- 3290: 00e786b3 add a3,a5,a4
- 3294: 02000613 li a2,32
- 3298: f6c68023 sb a2,-160(a3)
- 329c: 2d05 addiw s10,s10,1
- if (flag_hash)
- 329e: c919 beqz a0,32b4 <_vprintf_core.constprop.0.isra.0+0x182>
- fmt_tmp[f_idx++] = '#';
- 32a0: 0c0d0793 addi a5,s10,192
- 32a4: 0818 addi a4,sp,16
- 32a6: 00e786b3 add a3,a5,a4
- 32aa: 02300613 li a2,35
- 32ae: f6c68023 sb a2,-160(a3)
- 32b2: 2d05 addiw s10,s10,1
- if (width > 0)
- 32b4: 03010a13 addi s4,sp,48
- 32b8: 28804563 bgtz s0,3542 <_vprintf_core.constprop.0.isra.0+0x410>
- if (precision >= 0)
- 32bc: 260bd763 bgez s7,352a <_vprintf_core.constprop.0.isra.0+0x3f8>
- fmt_tmp[f_idx++] = spec;
- 32c0: 0c0d0793 addi a5,s10,192
- 32c4: 0818 addi a4,sp,16
- 32c6: 00e78633 add a2,a5,a4
- stbsp_snprintf(f_buf, sizeof(f_buf), fmt_tmp, f_val);
- 32ca: 000c3683 ld a3,0(s8)
- fmt_tmp[f_idx] = '\0';
- 32ce: 001d071b addiw a4,s10,1
- 32d2: 0c070793 addi a5,a4,192
- 32d6: 0818 addi a4,sp,16
- fmt_tmp[f_idx++] = spec;
- 32d8: f7960023 sb s9,-160(a2)
- fmt_tmp[f_idx] = '\0';
- 32dc: 973e add a4,a4,a5
- stbsp_snprintf(f_buf, sizeof(f_buf), fmt_tmp, f_val);
- 32de: 08000593 li a1,128
- 32e2: 8652 mv a2,s4
- 32e4: 0888 addi a0,sp,80
- fmt_tmp[f_idx] = '\0';
- 32e6: f6070023 sb zero,-160(a4)
- stbsp_snprintf(f_buf, sizeof(f_buf), fmt_tmp, f_val);
- 32ea: dc5ff0ef jal 30ae <stbsp_snprintf>
- for (int i = 0; f_buf[i] != '\0'; i++)
- 32ee: 05014583 lbu a1,80(sp)
- double f_val = va_arg(ap, double);
- 32f2: 0c21 addi s8,s8,8
- for (int i = 0; f_buf[i] != '\0'; i++)
- 32f4: 05110413 addi s0,sp,81
- 32f8: e6058ce3 beqz a1,3170 <_vprintf_core.constprop.0.isra.0+0x3e>
- _out_char(ctx, f_buf[i]);
- 32fc: 8526 mv a0,s1
- 32fe: fc1fd0ef jal 12be <_out_char>
- for (int i = 0; f_buf[i] != '\0'; i++)
- 3302: 00044583 lbu a1,0(s0)
- 3306: 0405 addi s0,s0,1
- 3308: e60584e3 beqz a1,3170 <_vprintf_core.constprop.0.isra.0+0x3e>
- _out_char(ctx, f_buf[i]);
- 330c: 8526 mv a0,s1
- 330e: fb1fd0ef jal 12be <_out_char>
- for (int i = 0; f_buf[i] != '\0'; i++)
- 3312: 00044583 lbu a1,0(s0)
- 3316: 0405 addi s0,s0,1
- 3318: f1f5 bnez a1,32fc <_vprintf_core.constprop.0.isra.0+0x1ca>
- 331a: bd99 j 3170 <_vprintf_core.constprop.0.isra.0+0x3e>
- while (*p >= '0' && *p <= '9')
- 331c: fd0c869b addiw a3,s9,-48
- 3320: 0ff6f313 zext.b t1,a3
- 3324: 4725 li a4,9
- int width = 0;
- 3326: 4401 li s0,0
- while (*p >= '0' && *p <= '9')
- 3328: 4625 li a2,9
- 332a: e8676ae3 bltu a4,t1,31be <_vprintf_core.constprop.0.isra.0+0x8c>
- 332e: 001dcc83 lbu s9,1(s11)
- width = width * 10 + (*p - '0');
- 3332: 0024171b slliw a4,s0,0x2
- 3336: 9f21 addw a4,a4,s0
- 3338: 0017171b slliw a4,a4,0x1
- 333c: 00e6843b addw s0,a3,a4
- while (*p >= '0' && *p <= '9')
- 3340: fd0c869b addiw a3,s9,-48
- 3344: 0ff6f713 zext.b a4,a3
- p++;
- 3348: 0d85 addi s11,s11,1
- while (*p >= '0' && *p <= '9')
- 334a: fee672e3 bgeu a2,a4,332e <_vprintf_core.constprop.0.isra.0+0x1fc>
- if (*p == '.')
- 334e: 02e00793 li a5,46
- int precision = -1;
- 3352: 5bfd li s7,-1
- if (*p == '.')
- 3354: e6fc9ae3 bne s9,a5,31c8 <_vprintf_core.constprop.0.isra.0+0x96>
- if (*p == '*')
- 3358: 001dcc83 lbu s9,1(s11)
- 335c: 02a00793 li a5,42
- 3360: 16fc9f63 bne s9,a5,34de <_vprintf_core.constprop.0.isra.0+0x3ac>
- while (*p >= '0' && *p <= '9')
- 3364: 002dcc83 lbu s9,2(s11)
- if (*p == 'l')
- 3368: 06c00693 li a3,108
- precision = va_arg(ap, int);
- 336c: 000c2b83 lw s7,0(s8)
- p++;
- 3370: 0d89 addi s11,s11,2
- precision = va_arg(ap, int);
- 3372: 0c21 addi s8,s8,8
- if (*p == 'l')
- 3374: 8666 mv a2,s9
- 3376: e4dc9ee3 bne s9,a3,31d2 <_vprintf_core.constprop.0.isra.0+0xa0>
- if (*p == 'l')
- 337a: 001dcc83 lbu s9,1(s11)
- 337e: 08cc8d63 beq s9,a2,3418 <_vprintf_core.constprop.0.isra.0+0x2e6>
- char spec = *p++;
- 3382: 06400693 li a3,100
- 3386: 0d89 addi s11,s11,2
- if (!spec)
- 3388: 4cdc8c63 beq s9,a3,3860 <_vprintf_core.constprop.0.isra.0+0x72e>
- 338c: 06400693 li a3,100
- len_mod = 1;
- 3390: 4e85 li t4,1
- 3392: e596fee3 bgeu a3,s9,31ee <_vprintf_core.constprop.0.isra.0+0xbc>
- 3396: f9bc869b addiw a3,s9,-101
- 339a: 0ff6f693 zext.b a3,a3
- 339e: 464d li a2,19
- 33a0: 12d66863 bltu a2,a3,34d0 <_vprintf_core.constprop.0.isra.0+0x39e>
- 33a4: 4e05 li t3,1
- 33a6: 00091637 lui a2,0x91
- 33aa: 00de1333 sll t1,t3,a3
- 33ae: 81060613 addi a2,a2,-2032 # 90810 <_ZSt4cerr+0x88e98>
- 33b2: 00c37633 and a2,t1,a2
- 33b6: 1a061463 bnez a2,355e <_vprintf_core.constprop.0.isra.0+0x42c>
- 33ba: 00737313 andi t1,t1,7
- 33be: e80311e3 bnez t1,3240 <_vprintf_core.constprop.0.isra.0+0x10e>
- 33c2: 4639 li a2,14
- 33c4: 10c69663 bne a3,a2,34d0 <_vprintf_core.constprop.0.isra.0+0x39e>
- const char *s = va_arg(ap, char *);
- 33c8: 000c3c83 ld s9,0(s8)
- if (!s)
- 33cc: 420c8863 beqz s9,37fc <_vprintf_core.constprop.0.isra.0+0x6ca>
- while (*tmp && (precision < 0 || len < precision))
- 33d0: 000cc683 lbu a3,0(s9)
- 33d4: 38068863 beqz a3,3764 <_vprintf_core.constprop.0.isra.0+0x632>
- const char *tmp = s;
- 33d8: 8666 mv a2,s9
- int len = 0;
- 33da: 4681 li a3,0
- while (*tmp && (precision < 0 || len < precision))
- 33dc: 00db8863 beq s7,a3,33ec <_vprintf_core.constprop.0.isra.0+0x2ba>
- 33e0: 00164583 lbu a1,1(a2)
- len++;
- 33e4: 2685 addiw a3,a3,1
- tmp++;
- 33e6: 0605 addi a2,a2,1
- while (*tmp && (precision < 0 || len < precision))
- 33e8: f9f5 bnez a1,33dc <_vprintf_core.constprop.0.isra.0+0x2aa>
- 33ea: 8bb6 mv s7,a3
- int padding = (width > len) ? width - len : 0;
- 33ec: 268bc563 blt s7,s0,3656 <_vprintf_core.constprop.0.isra.0+0x524>
- for (int i = 0; i < len; i++)
- 33f0: 4401 li s0,0
- 33f2: 020b8163 beqz s7,3414 <_vprintf_core.constprop.0.isra.0+0x2e2>
- 33f6: 4d01 li s10,0
- _out_char(ctx, s[i]);
- 33f8: 01ac86b3 add a3,s9,s10
- 33fc: 0006c583 lbu a1,0(a3)
- 3400: 8526 mv a0,s1
- for (int i = 0; i < len; i++)
- 3402: 0d05 addi s10,s10,1
- _out_char(ctx, s[i]);
- 3404: ebbfd0ef jal 12be <_out_char>
- for (int i = 0; i < len; i++)
- 3408: 000d069b sext.w a3,s10
- 340c: ff76c6e3 blt a3,s7,33f8 <_vprintf_core.constprop.0.isra.0+0x2c6>
- if (flag_left)
- 3410: 260a1463 bnez s4,3678 <_vprintf_core.constprop.0.isra.0+0x546>
- const char *s = va_arg(ap, char *);
- 3414: 0c21 addi s8,s8,8
- 3416: bba9 j 3170 <_vprintf_core.constprop.0.isra.0+0x3e>
- p++;
- 3418: 0d89 addi s11,s11,2
- char spec = *p++;
- 341a: 000dcc83 lbu s9,0(s11)
- 341e: 06400693 li a3,100
- 3422: 001d8793 addi a5,s11,1
- if (!spec)
- 3426: 3edc8063 beq s9,a3,3806 <_vprintf_core.constprop.0.isra.0+0x6d4>
- 342a: 0796ea63 bltu a3,s9,349e <_vprintf_core.constprop.0.isra.0+0x36c>
- 342e: 04700693 li a3,71
- 3432: 0f96e263 bltu a3,s9,3516 <_vprintf_core.constprop.0.isra.0+0x3e4>
- 3436: 04400693 li a3,68
- 343a: e196e2e3 bltu a3,s9,323e <_vprintf_core.constprop.0.isra.0+0x10c>
- 343e: dc0c82e3 beqz s9,3202 <_vprintf_core.constprop.0.isra.0+0xd0>
- char spec = *p++;
- 3442: 8dbe mv s11,a5
- _out_char(ctx, '%');
- 3444: 02500593 li a1,37
- 3448: 8526 mv a0,s1
- 344a: e75fd0ef jal 12be <_out_char>
- if (spec != '%')
- 344e: 02500713 li a4,37
- 3452: d0ec8fe3 beq s9,a4,3170 <_vprintf_core.constprop.0.isra.0+0x3e>
- _out_char(ctx, spec);
- 3456: 85e6 mv a1,s9
- 3458: bb09 j 316a <_vprintf_core.constprop.0.isra.0+0x38>
- 345a: 05800693 li a3,88
- 345e: 2edc8263 beq s9,a3,3742 <_vprintf_core.constprop.0.isra.0+0x610>
- 3462: 06300713 li a4,99
- 3466: 06ec9563 bne s9,a4,34d0 <_vprintf_core.constprop.0.isra.0+0x39e>
- char c = (char)va_arg(ap, int);
- 346a: 000c4c83 lbu s9,0(s8)
- int padding = (width > 1) ? width - 1 : 0;
- 346e: 8722 mv a4,s0
- 3470: 00804363 bgtz s0,3476 <_vprintf_core.constprop.0.isra.0+0x344>
- 3474: 4705 li a4,1
- 3476: fff7041b addiw s0,a4,-1
- if (!flag_left)
- 347a: 3c0a0463 beqz s4,3842 <_vprintf_core.constprop.0.isra.0+0x710>
- _out_char(ctx, c);
- 347e: 85e6 mv a1,s9
- 3480: 8526 mv a0,s1
- 3482: e3dfd0ef jal 12be <_out_char>
- for (int i = 0; i < padding; i++)
- 3486: 4a01 li s4,0
- 3488: d451 beqz s0,3414 <_vprintf_core.constprop.0.isra.0+0x2e2>
- _out_char(ctx, ' ');
- 348a: 02000593 li a1,32
- 348e: 8526 mv a0,s1
- for (int i = 0; i < padding; i++)
- 3490: 2a05 addiw s4,s4,1
- _out_char(ctx, ' ');
- 3492: e2dfd0ef jal 12be <_out_char>
- for (int i = 0; i < padding; i++)
- 3496: ff441ae3 bne s0,s4,348a <_vprintf_core.constprop.0.isra.0+0x358>
- const char *s = va_arg(ap, char *);
- 349a: 0c21 addi s8,s8,8
- 349c: b9d1 j 3170 <_vprintf_core.constprop.0.isra.0+0x3e>
- 349e: f9bc861b addiw a2,s9,-101
- 34a2: 0ff67613 zext.b a2,a2
- 34a6: 46cd li a3,19
- 34a8: 40c6e963 bltu a3,a2,38ba <_vprintf_core.constprop.0.isra.0+0x788>
- 34ac: 00091337 lui t1,0x91
- 34b0: 4685 li a3,1
- 34b2: 00c696b3 sll a3,a3,a2
- 34b6: 81030313 addi t1,t1,-2032 # 90810 <_ZSt4cerr+0x88e98>
- 34ba: 0066f333 and t1,a3,t1
- 34be: 34031c63 bnez t1,3816 <_vprintf_core.constprop.0.isra.0+0x6e4>
- 34c2: 8a9d andi a3,a3,7
- 34c4: d6069de3 bnez a3,323e <_vprintf_core.constprop.0.isra.0+0x10c>
- 34c8: 46b9 li a3,14
- char spec = *p++;
- 34ca: 8dbe mv s11,a5
- 34cc: eed60ee3 beq a2,a3,33c8 <_vprintf_core.constprop.0.isra.0+0x296>
- _out_char(ctx, '%');
- 34d0: 02500593 li a1,37
- 34d4: 8526 mv a0,s1
- 34d6: de9fd0ef jal 12be <_out_char>
- _out_char(ctx, spec);
- 34da: 85e6 mv a1,s9
- 34dc: b179 j 316a <_vprintf_core.constprop.0.isra.0+0x38>
- while (*p >= '0' && *p <= '9')
- 34de: fd0c869b addiw a3,s9,-48
- 34e2: 0ff6fe13 zext.b t3,a3
- 34e6: 4625 li a2,9
- p++;
- 34e8: 0d85 addi s11,s11,1
- precision = 0;
- 34ea: 4b81 li s7,0
- while (*p >= '0' && *p <= '9')
- 34ec: 4325 li t1,9
- 34ee: cdc66de3 bltu a2,t3,31c8 <_vprintf_core.constprop.0.isra.0+0x96>
- precision = precision * 10 + (*p - '0');
- 34f2: 002b961b slliw a2,s7,0x2
- while (*p >= '0' && *p <= '9')
- 34f6: 001dcc83 lbu s9,1(s11)
- precision = precision * 10 + (*p - '0');
- 34fa: 0176073b addw a4,a2,s7
- 34fe: 0017171b slliw a4,a4,0x1
- 3502: 00e68bbb addw s7,a3,a4
- while (*p >= '0' && *p <= '9')
- 3506: fd0c869b addiw a3,s9,-48
- 350a: 0ff6f613 zext.b a2,a3
- p++;
- 350e: 0d85 addi s11,s11,1
- while (*p >= '0' && *p <= '9')
- 3510: fec371e3 bgeu t1,a2,34f2 <_vprintf_core.constprop.0.isra.0+0x3c0>
- 3514: b955 j 31c8 <_vprintf_core.constprop.0.isra.0+0x96>
- 3516: 05800693 li a3,88
- 351a: 3cdc8d63 beq s9,a3,38f4 <_vprintf_core.constprop.0.isra.0+0x7c2>
- 351e: 06300713 li a4,99
- char spec = *p++;
- 3522: 8dbe mv s11,a5
- 3524: f4ec83e3 beq s9,a4,346a <_vprintf_core.constprop.0.isra.0+0x338>
- 3528: b765 j 34d0 <_vprintf_core.constprop.0.isra.0+0x39e>
- f_idx += sprintf(&fmt_tmp[f_idx], ".%d", precision);
- 352a: 01aa0533 add a0,s4,s10
- 352e: 865e mv a2,s7
- 3530: 00002597 auipc a1,0x2
- 3534: c9058593 addi a1,a1,-880 # 51c0 <_GLOBAL__sub_I__ZSt3cin+0xfa>
- 3538: ba5ff0ef jal 30dc <sprintf>
- 353c: 00ad0d3b addw s10,s10,a0
- 3540: b341 j 32c0 <_vprintf_core.constprop.0.isra.0+0x18e>
- f_idx += sprintf(&fmt_tmp[f_idx], "%d", width);
- 3542: 01aa0533 add a0,s4,s10
- 3546: 8622 mv a2,s0
- 3548: 00002597 auipc a1,0x2
- 354c: c7058593 addi a1,a1,-912 # 51b8 <_GLOBAL__sub_I__ZSt3cin+0xf2>
- 3550: b8dff0ef jal 30dc <sprintf>
- 3554: 00ad0d3b addw s10,s10,a0
- if (precision >= 0)
- 3558: d60bc4e3 bltz s7,32c0 <_vprintf_core.constprop.0.isra.0+0x18e>
- 355c: b7f9 j 352a <_vprintf_core.constprop.0.isra.0+0x3f8>
- int is_signed = (spec == 'd' || spec == 'i');
- 355e: 06900693 li a3,105
- 3562: 10dc8e63 beq s9,a3,367e <_vprintf_core.constprop.0.isra.0+0x54c>
- val = (uint64)va_arg(ap, void *);
- 3566: 008c0793 addi a5,s8,8
- int base = (spec == 'x' || spec == 'X' || spec == 'p') ? 16 : 10;
- 356a: 07800693 li a3,120
- val = (uint64)va_arg(ap, void *);
- 356e: e43e sd a5,8(sp)
- int base = (spec == 'x' || spec == 'X' || spec == 'p') ? 16 : 10;
- 3570: 38dc9d63 bne s9,a3,390a <_vprintf_core.constprop.0.isra.0+0x7d8>
- else if (len_mod == 1)
- 3574: 33ce8963 beq t4,t3,38a6 <_vprintf_core.constprop.0.isra.0+0x774>
- val = is_signed ? (uint64)((int64)va_arg(ap, int)) : (uint64)va_arg(ap, uint32);
- 3578: 000c6e03 lwu t3,0(s8)
- 357c: 85f6 mv a1,t4
- 357e: e002 sd zero,0(sp)
- int base = (spec == 'x' || spec == 'X' || spec == 'p') ? 16 : 10;
- 3580: 4341 li t1,16
- const char *digits = uppercase ? "0123456789ABCDEF" : "0123456789abcdef";
- 3582: 00002f97 auipc t6,0x2
- 3586: c06f8f93 addi t6,t6,-1018 # 5188 <_GLOBAL__sub_I__ZSt3cin+0xc2>
- if (val == 0)
- 358a: 120e0363 beqz t3,36b0 <_vprintf_core.constprop.0.isra.0+0x57e>
- 358e: 01010293 addi t0,sp,16
- sign_char = '-';
- 3592: 8616 mv a2,t0
- 3594: 86f2 mv a3,t3
- buf[i++] = digits[val % base];
- 3596: 0266f8b3 remu a7,a3,t1
- 359a: 8f32 mv t5,a2
- while (val != 0)
- 359c: 0605 addi a2,a2,1
- 359e: 8eb6 mv t4,a3
- buf[i++] = digits[val % base];
- 35a0: 98fe add a7,a7,t6
- 35a2: 0008c883 lbu a7,0(a7)
- val /= base;
- 35a6: 0266d6b3 divu a3,a3,t1
- buf[i++] = digits[val % base];
- 35aa: ff160fa3 sb a7,-1(a2)
- while (val != 0)
- 35ae: fe6ef4e3 bgeu t4,t1,3596 <_vprintf_core.constprop.0.isra.0+0x464>
- buf[i++] = digits[val % base];
- 35b2: 405f0f3b subw t5,t5,t0
- 35b6: 2f05 addiw t5,t5,1
- if (precision >= 0)
- 35b8: 100bc363 bltz s7,36be <_vprintf_core.constprop.0.isra.0+0x58c>
- int prec_zeros = (precision > digit_len) ? precision - digit_len : 0;
- 35bc: 1d7f4d63 blt t5,s7,3796 <_vprintf_core.constprop.0.isra.0+0x664>
- if (precision == 0 && val == 0)
- 35c0: 340b9163 bnez s7,3902 <_vprintf_core.constprop.0.isra.0+0x7d0>
- 35c4: 200e0763 beqz t3,37d2 <_vprintf_core.constprop.0.isra.0+0x6a0>
- for (int i = digit_len - 1; i >= 0; i--)
- 35c8: ffff0c1b addiw s8,t5,-1
- if (spec == 'p' || (flag_hash && val != 0 && (spec == 'x' || spec == 'X')))
- 35cc: 07000693 li a3,112
- for (int i = digit_len - 1; i >= 0; i--)
- 35d0: 8662 mv a2,s8
- if (spec == 'p' || (flag_hash && val != 0 && (spec == 'x' || spec == 'X')))
- 35d2: 28dc8e63 beq s9,a3,386e <_vprintf_core.constprop.0.isra.0+0x73c>
- 35d6: 2a051663 bnez a0,3882 <_vprintf_core.constprop.0.isra.0+0x750>
- int padding = (width > prefix_len + prec_zeros + digit_len) ? width - (prefix_len + prec_zeros + digit_len) : 0;
- 35da: 00bf05bb addw a1,t5,a1
- 35de: 8d52 mv s10,s4
- 35e0: 4b01 li s6,0
- char *prefix_str = NULL;
- 35e2: 4c81 li s9,0
- int padding = (width > prefix_len + prec_zeros + digit_len) ? width - (prefix_len + prec_zeros + digit_len) : 0;
- 35e4: 1085d263 bge a1,s0,36e8 <_vprintf_core.constprop.0.isra.0+0x5b6>
- 35e8: 9c0d subw s0,s0,a1
- if (!flag_left && !flag_zero)
- 35ea: 100d0a63 beqz s10,36fe <_vprintf_core.constprop.0.isra.0+0x5cc>
- if (sign_char)
- 35ee: 6782 ld a5,0(sp)
- 35f0: 10079263 bnez a5,36f4 <_vprintf_core.constprop.0.isra.0+0x5c2>
- if (prefix_str)
- 35f4: 000c8c63 beqz s9,360c <_vprintf_core.constprop.0.isra.0+0x4da>
- _out_char(ctx, prefix_str[0]);
- 35f8: 000cc583 lbu a1,0(s9)
- 35fc: 8526 mv a0,s1
- 35fe: cc1fd0ef jal 12be <_out_char>
- _out_char(ctx, prefix_str[1]);
- 3602: 001cc583 lbu a1,1(s9)
- 3606: 8526 mv a0,s1
- 3608: cb7fd0ef jal 12be <_out_char>
- int total_zeros = prec_zeros + ((flag_zero && !flag_left) ? padding : 0);
- 360c: 180b0263 beqz s6,3790 <_vprintf_core.constprop.0.isra.0+0x65e>
- 3610: 100a1863 bnez s4,3720 <_vprintf_core.constprop.0.isra.0+0x5ee>
- 3614: 008b8bbb addw s7,s7,s0
- for (int i = 0; i < total_zeros; i++)
- 3618: 2a0b8363 beqz s7,38be <_vprintf_core.constprop.0.isra.0+0x78c>
- 361c: 4c81 li s9,0
- _out_char(ctx, '0');
- 361e: 03000593 li a1,48
- 3622: 8526 mv a0,s1
- for (int i = 0; i < total_zeros; i++)
- 3624: 2c85 addiw s9,s9,1
- _out_char(ctx, '0');
- 3626: c99fd0ef jal 12be <_out_char>
- for (int i = 0; i < total_zeros; i++)
- 362a: ff7c9ae3 bne s9,s7,361e <_vprintf_core.constprop.0.isra.0+0x4ec>
- for (int i = digit_len - 1; i >= 0; i--)
- 362e: 57fd li a5,-1
- 3630: 00fc0f63 beq s8,a5,364e <_vprintf_core.constprop.0.isra.0+0x51c>
- 3634: 01010c93 addi s9,sp,16
- 3638: 9ce2 add s9,s9,s8
- 363a: 00f10c13 addi s8,sp,15
- _out_char(ctx, num_buf[i]);
- 363e: 000cc583 lbu a1,0(s9)
- 3642: 8526 mv a0,s1
- for (int i = digit_len - 1; i >= 0; i--)
- 3644: 1cfd addi s9,s9,-1
- _out_char(ctx, num_buf[i]);
- 3646: c79fd0ef jal 12be <_out_char>
- for (int i = digit_len - 1; i >= 0; i--)
- 364a: ff9c1ae3 bne s8,s9,363e <_vprintf_core.constprop.0.isra.0+0x50c>
- if (flag_left)
- 364e: 0c0a1e63 bnez s4,372a <_vprintf_core.constprop.0.isra.0+0x5f8>
- char spec = *p++;
- 3652: 6c22 ld s8,8(sp)
- 3654: be31 j 3170 <_vprintf_core.constprop.0.isra.0+0x3e>
- int padding = (width > len) ? width - len : 0;
- 3656: 4174043b subw s0,s0,s7
- if (!flag_left)
- 365a: 100a0a63 beqz s4,376e <_vprintf_core.constprop.0.isra.0+0x63c>
- for (int i = 0; i < len; i++)
- 365e: d80b9ce3 bnez s7,33f6 <_vprintf_core.constprop.0.isra.0+0x2c4>
- for (int i = 0; i < padding; i++)
- 3662: 4a01 li s4,0
- _out_char(ctx, ' ');
- 3664: 02000593 li a1,32
- 3668: 8526 mv a0,s1
- for (int i = 0; i < padding; i++)
- 366a: 2a05 addiw s4,s4,1
- _out_char(ctx, ' ');
- 366c: c53fd0ef jal 12be <_out_char>
- for (int i = 0; i < padding; i++)
- 3670: ff441ae3 bne s0,s4,3664 <_vprintf_core.constprop.0.isra.0+0x532>
- const char *s = va_arg(ap, char *);
- 3674: 0c21 addi s8,s8,8
- 3676: bced j 3170 <_vprintf_core.constprop.0.isra.0+0x3e>
- for (int i = 0; i < padding; i++)
- 3678: f46d bnez s0,3662 <_vprintf_core.constprop.0.isra.0+0x530>
- const char *s = va_arg(ap, char *);
- 367a: 0c21 addi s8,s8,8
- 367c: bcd5 j 3170 <_vprintf_core.constprop.0.isra.0+0x3e>
- else if (len_mod == 1)
- 367e: 1fce8163 beq t4,t3,3860 <_vprintf_core.constprop.0.isra.0+0x72e>
- val = is_signed ? (uint64)((int64)va_arg(ap, int)) : (uint64)va_arg(ap, uint32);
- 3682: 000c2e03 lw t3,0(s8)
- 3686: 008c0793 addi a5,s8,8
- 368a: e43e sd a5,8(sp)
- int64 sval = (int64)val;
- 368c: 86f2 mv a3,t3
- if (sval < 0)
- 368e: 1406cb63 bltz a3,37e4 <_vprintf_core.constprop.0.isra.0+0x6b2>
- sign_char = '+';
- 3692: 02b00793 li a5,43
- 3696: e03e sd a5,0(sp)
- else if (flag_plus)
- 3698: e589 bnez a1,36a2 <_vprintf_core.constprop.0.isra.0+0x570>
- else if (flag_space)
- 369a: 00589793 slli a5,a7,0x5
- 369e: e03e sd a5,0(sp)
- 36a0: 85c6 mv a1,a7
- const char *digits = uppercase ? "0123456789ABCDEF" : "0123456789abcdef";
- 36a2: 4329 li t1,10
- 36a4: 00002f97 auipc t6,0x2
- 36a8: ae4f8f93 addi t6,t6,-1308 # 5188 <_GLOBAL__sub_I__ZSt3cin+0xc2>
- if (val == 0)
- 36ac: ee0e11e3 bnez t3,358e <_vprintf_core.constprop.0.isra.0+0x45c>
- buf[i++] = '0';
- 36b0: 03000693 li a3,48
- 36b4: 00d10823 sb a3,16(sp)
- return i;
- 36b8: 4f05 li t5,1
- if (precision >= 0)
- 36ba: f00bd1e3 bgez s7,35bc <_vprintf_core.constprop.0.isra.0+0x48a>
- for (int i = digit_len - 1; i >= 0; i--)
- 36be: ffff0c1b addiw s8,t5,-1
- if (spec == 'p' || (flag_hash && val != 0 && (spec == 'x' || spec == 'X')))
- 36c2: 07000893 li a7,112
- if (!flag_left && !flag_zero)
- 36c6: 016a6d33 or s10,s4,s6
- int prec_zeros = (precision > digit_len) ? precision - digit_len : 0;
- 36ca: 4b81 li s7,0
- for (int i = digit_len - 1; i >= 0; i--)
- 36cc: 8662 mv a2,s8
- if (spec == 'p' || (flag_hash && val != 0 && (spec == 'x' || spec == 'X')))
- 36ce: 0d1c9f63 bne s9,a7,37ac <_vprintf_core.constprop.0.isra.0+0x67a>
- prefix_str = (spec == 'X') ? "0X" : "0x";
- 36d2: 00002c97 auipc s9,0x2
- 36d6: acec8c93 addi s9,s9,-1330 # 51a0 <_GLOBAL__sub_I__ZSt3cin+0xda>
- prefix_len += 2;
- 36da: 2589 addiw a1,a1,2
- int padding = (width > prefix_len + prec_zeros + digit_len) ? width - (prefix_len + prec_zeros + digit_len) : 0;
- 36dc: 017585bb addw a1,a1,s7
- 36e0: 01e585bb addw a1,a1,t5
- 36e4: f085c2e3 blt a1,s0,35e8 <_vprintf_core.constprop.0.isra.0+0x4b6>
- if (!flag_left && !flag_zero)
- 36e8: 080d0f63 beqz s10,3786 <_vprintf_core.constprop.0.isra.0+0x654>
- if (sign_char)
- 36ec: 6782 ld a5,0(sp)
- int padding = (width > prefix_len + prec_zeros + digit_len) ? width - (prefix_len + prec_zeros + digit_len) : 0;
- 36ee: 4401 li s0,0
- if (sign_char)
- 36f0: f00782e3 beqz a5,35f4 <_vprintf_core.constprop.0.isra.0+0x4c2>
- _out_char(ctx, sign_char);
- 36f4: 6582 ld a1,0(sp)
- 36f6: 8526 mv a0,s1
- 36f8: bc7fd0ef jal 12be <_out_char>
- 36fc: bde5 j 35f4 <_vprintf_core.constprop.0.isra.0+0x4c2>
- _out_char(ctx, ' ');
- 36fe: 02000593 li a1,32
- 3702: 8526 mv a0,s1
- for (int i = 0; i < padding; i++)
- 3704: 2d05 addiw s10,s10,1
- _out_char(ctx, ' ');
- 3706: bb9fd0ef jal 12be <_out_char>
- for (int i = 0; i < padding; i++)
- 370a: efa402e3 beq s0,s10,35ee <_vprintf_core.constprop.0.isra.0+0x4bc>
- _out_char(ctx, ' ');
- 370e: 02000593 li a1,32
- 3712: 8526 mv a0,s1
- for (int i = 0; i < padding; i++)
- 3714: 2d05 addiw s10,s10,1
- _out_char(ctx, ' ');
- 3716: ba9fd0ef jal 12be <_out_char>
- for (int i = 0; i < padding; i++)
- 371a: ffa412e3 bne s0,s10,36fe <_vprintf_core.constprop.0.isra.0+0x5cc>
- 371e: bdc1 j 35ee <_vprintf_core.constprop.0.isra.0+0x4bc>
- for (int i = 0; i < total_zeros; i++)
- 3720: ee0b9ee3 bnez s7,361c <_vprintf_core.constprop.0.isra.0+0x4ea>
- for (int i = digit_len - 1; i >= 0; i--)
- 3724: 577d li a4,-1
- 3726: f0ec17e3 bne s8,a4,3634 <_vprintf_core.constprop.0.isra.0+0x502>
- for (int i = 0; i < padding; i++)
- 372a: d405 beqz s0,3652 <_vprintf_core.constprop.0.isra.0+0x520>
- 372c: 4a01 li s4,0
- _out_char(ctx, ' ');
- 372e: 02000593 li a1,32
- 3732: 8526 mv a0,s1
- for (int i = 0; i < padding; i++)
- 3734: 2a05 addiw s4,s4,1
- _out_char(ctx, ' ');
- 3736: b89fd0ef jal 12be <_out_char>
- for (int i = 0; i < padding; i++)
- 373a: fe8a1ae3 bne s4,s0,372e <_vprintf_core.constprop.0.isra.0+0x5fc>
- char spec = *p++;
- 373e: 6c22 ld s8,8(sp)
- 3740: bc05 j 3170 <_vprintf_core.constprop.0.isra.0+0x3e>
- val = (uint64)va_arg(ap, void *);
- 3742: 008c0793 addi a5,s8,8
- 3746: e43e sd a5,8(sp)
- else if (len_mod == 1)
- 3748: 180e9163 bnez t4,38ca <_vprintf_core.constprop.0.isra.0+0x798>
- val = is_signed ? (uint64)((int64)va_arg(ap, int)) : (uint64)va_arg(ap, uint32);
- 374c: 000c6e03 lwu t3,0(s8)
- val = is_signed ? (uint64)va_arg(ap, int64) : va_arg(ap, uint64);
- 3750: 4581 li a1,0
- 3752: 05800c93 li s9,88
- 3756: e002 sd zero,0(sp)
- 3758: 4341 li t1,16
- const char *digits = uppercase ? "0123456789ABCDEF" : "0123456789abcdef";
- 375a: 00002f97 auipc t6,0x2
- 375e: a16f8f93 addi t6,t6,-1514 # 5170 <_GLOBAL__sub_I__ZSt3cin+0xaa>
- 3762: b525 j 358a <_vprintf_core.constprop.0.isra.0+0x458>
- int padding = (width > len) ? width - len : 0;
- 3764: ca8058e3 blez s0,3414 <_vprintf_core.constprop.0.isra.0+0x2e2>
- if (!flag_left)
- 3768: ee0a1de3 bnez s4,3662 <_vprintf_core.constprop.0.isra.0+0x530>
- int len = 0;
- 376c: 4b81 li s7,0
- for (int i = 0; i < padding; i++)
- 376e: 4d01 li s10,0
- _out_char(ctx, ' ');
- 3770: 02000593 li a1,32
- 3774: 8526 mv a0,s1
- for (int i = 0; i < padding; i++)
- 3776: 2d05 addiw s10,s10,1
- _out_char(ctx, ' ');
- 3778: b47fd0ef jal 12be <_out_char>
- for (int i = 0; i < padding; i++)
- 377c: fe8d1ae3 bne s10,s0,3770 <_vprintf_core.constprop.0.isra.0+0x63e>
- for (int i = 0; i < len; i++)
- 3780: c60b9be3 bnez s7,33f6 <_vprintf_core.constprop.0.isra.0+0x2c4>
- 3784: b941 j 3414 <_vprintf_core.constprop.0.isra.0+0x2e2>
- if (sign_char)
- 3786: 6782 ld a5,0(sp)
- 3788: 4401 li s0,0
- 378a: f7ad bnez a5,36f4 <_vprintf_core.constprop.0.isra.0+0x5c2>
- if (prefix_str)
- 378c: e60c96e3 bnez s9,35f8 <_vprintf_core.constprop.0.isra.0+0x4c6>
- for (int i = 0; i < total_zeros; i++)
- 3790: e80b96e3 bnez s7,361c <_vprintf_core.constprop.0.isra.0+0x4ea>
- 3794: bd69 j 362e <_vprintf_core.constprop.0.isra.0+0x4fc>
- int prec_zeros = (precision > digit_len) ? precision - digit_len : 0;
- 3796: 41eb8bbb subw s7,s7,t5
- 379a: 8d52 mv s10,s4
- 379c: 4b01 li s6,0
- for (int i = digit_len - 1; i >= 0; i--)
- 379e: ffff0c1b addiw s8,t5,-1
- if (spec == 'p' || (flag_hash && val != 0 && (spec == 'x' || spec == 'X')))
- 37a2: 07000893 li a7,112
- for (int i = digit_len - 1; i >= 0; i--)
- 37a6: 8662 mv a2,s8
- if (spec == 'p' || (flag_hash && val != 0 && (spec == 'x' || spec == 'X')))
- 37a8: f31c85e3 beq s9,a7,36d2 <_vprintf_core.constprop.0.isra.0+0x5a0>
- 37ac: cd09 beqz a0,37c6 <_vprintf_core.constprop.0.isra.0+0x694>
- 37ae: 000e0c63 beqz t3,37c6 <_vprintf_core.constprop.0.isra.0+0x694>
- 37b2: 07800513 li a0,120
- for (int i = digit_len - 1; i >= 0; i--)
- 37b6: 00060c1b sext.w s8,a2
- if (spec == 'p' || (flag_hash && val != 0 && (spec == 'x' || spec == 'X')))
- 37ba: f0ac8ce3 beq s9,a0,36d2 <_vprintf_core.constprop.0.isra.0+0x5a0>
- 37be: 05800613 li a2,88
- 37c2: 12cc8463 beq s9,a2,38ea <_vprintf_core.constprop.0.isra.0+0x7b8>
- int padding = (width > prefix_len + prec_zeros + digit_len) ? width - (prefix_len + prec_zeros + digit_len) : 0;
- 37c6: 00bb85bb addw a1,s7,a1
- 37ca: 01e585bb addw a1,a1,t5
- char *prefix_str = NULL;
- 37ce: 4c81 li s9,0
- 37d0: bd11 j 35e4 <_vprintf_core.constprop.0.isra.0+0x4b2>
- if (spec == 'p' || (flag_hash && val != 0 && (spec == 'x' || spec == 'X')))
- 37d2: 07000693 li a3,112
- 37d6: 8d52 mv s10,s4
- 37d8: 4b01 li s6,0
- 37da: 08dc8d63 beq s9,a3,3874 <_vprintf_core.constprop.0.isra.0+0x742>
- 37de: 5c7d li s8,-1
- char *prefix_str = NULL;
- 37e0: 4c81 li s9,0
- 37e2: b509 j 35e4 <_vprintf_core.constprop.0.isra.0+0x4b2>
- sign_char = '-';
- 37e4: 02d00793 li a5,45
- val = (uint64)(-sval);
- 37e8: 40d00e33 neg t3,a3
- 37ec: 4585 li a1,1
- 37ee: 4329 li t1,10
- const char *digits = uppercase ? "0123456789ABCDEF" : "0123456789abcdef";
- 37f0: 00002f97 auipc t6,0x2
- 37f4: 998f8f93 addi t6,t6,-1640 # 5188 <_GLOBAL__sub_I__ZSt3cin+0xc2>
- sign_char = '-';
- 37f8: e03e sd a5,0(sp)
- 37fa: bb51 j 358e <_vprintf_core.constprop.0.isra.0+0x45c>
- s = "(null)";
- 37fc: 00002c97 auipc s9,0x2
- 3800: 9b4c8c93 addi s9,s9,-1612 # 51b0 <_GLOBAL__sub_I__ZSt3cin+0xea>
- 3804: bed1 j 33d8 <_vprintf_core.constprop.0.isra.0+0x2a6>
- val = is_signed ? (uint64)va_arg(ap, int64) : va_arg(ap, uint64);
- 3806: 000c3683 ld a3,0(s8)
- 380a: 008c0713 addi a4,s8,8
- 380e: e43a sd a4,8(sp)
- 3810: 8dbe mv s11,a5
- 3812: 8e36 mv t3,a3
- if (is_signed)
- 3814: bdad j 368e <_vprintf_core.constprop.0.isra.0+0x55c>
- int is_signed = (spec == 'd' || spec == 'i');
- 3816: 06900693 li a3,105
- 381a: fedc86e3 beq s9,a3,3806 <_vprintf_core.constprop.0.isra.0+0x6d4>
- val = (uint64)va_arg(ap, void *);
- 381e: 008c0713 addi a4,s8,8
- int base = (spec == 'x' || spec == 'X' || spec == 'p') ? 16 : 10;
- 3822: 07800693 li a3,120
- val = (uint64)va_arg(ap, void *);
- 3826: e43a sd a4,8(sp)
- int base = (spec == 'x' || spec == 'X' || spec == 'p') ? 16 : 10;
- 3828: 06dc9063 bne s9,a3,3888 <_vprintf_core.constprop.0.isra.0+0x756>
- val = is_signed ? (uint64)va_arg(ap, int64) : va_arg(ap, uint64);
- 382c: 000c3e03 ld t3,0(s8)
- 3830: 8dbe mv s11,a5
- 3832: 4581 li a1,0
- 3834: e002 sd zero,0(sp)
- int base = (spec == 'x' || spec == 'X' || spec == 'p') ? 16 : 10;
- 3836: 4341 li t1,16
- const char *digits = uppercase ? "0123456789ABCDEF" : "0123456789abcdef";
- 3838: 00002f97 auipc t6,0x2
- 383c: 950f8f93 addi t6,t6,-1712 # 5188 <_GLOBAL__sub_I__ZSt3cin+0xc2>
- 3840: b3a9 j 358a <_vprintf_core.constprop.0.isra.0+0x458>
- for (int i = 0; i < padding; i++)
- 3842: c809 beqz s0,3854 <_vprintf_core.constprop.0.isra.0+0x722>
- _out_char(ctx, ' ');
- 3844: 02000593 li a1,32
- 3848: 8526 mv a0,s1
- for (int i = 0; i < padding; i++)
- 384a: 2a05 addiw s4,s4,1
- _out_char(ctx, ' ');
- 384c: a73fd0ef jal 12be <_out_char>
- for (int i = 0; i < padding; i++)
- 3850: ff441ae3 bne s0,s4,3844 <_vprintf_core.constprop.0.isra.0+0x712>
- _out_char(ctx, c);
- 3854: 85e6 mv a1,s9
- 3856: 8526 mv a0,s1
- 3858: a67fd0ef jal 12be <_out_char>
- const char *s = va_arg(ap, char *);
- 385c: 0c21 addi s8,s8,8
- 385e: ba09 j 3170 <_vprintf_core.constprop.0.isra.0+0x3e>
- val = is_signed ? (uint64)va_arg(ap, long) : (uint64)va_arg(ap, unsigned long);
- 3860: 000c3683 ld a3,0(s8)
- 3864: 008c0793 addi a5,s8,8
- 3868: e43e sd a5,8(sp)
- 386a: 8e36 mv t3,a3
- if (is_signed)
- 386c: b50d j 368e <_vprintf_core.constprop.0.isra.0+0x55c>
- if (spec == 'p' || (flag_hash && val != 0 && (spec == 'x' || spec == 'X')))
- 386e: 8d52 mv s10,s4
- 3870: 4b01 li s6,0
- 3872: b585 j 36d2 <_vprintf_core.constprop.0.isra.0+0x5a0>
- digit_len = 0;
- 3874: 4f01 li t5,0
- if (spec == 'p' || (flag_hash && val != 0 && (spec == 'x' || spec == 'X')))
- 3876: 5c7d li s8,-1
- prefix_str = (spec == 'X') ? "0X" : "0x";
- 3878: 00002c97 auipc s9,0x2
- 387c: 928c8c93 addi s9,s9,-1752 # 51a0 <_GLOBAL__sub_I__ZSt3cin+0xda>
- 3880: bda9 j 36da <_vprintf_core.constprop.0.isra.0+0x5a8>
- if (spec == 'p' || (flag_hash && val != 0 && (spec == 'x' || spec == 'X')))
- 3882: 8d52 mv s10,s4
- 3884: 4b01 li s6,0
- 3886: b735 j 37b2 <_vprintf_core.constprop.0.isra.0+0x680>
- int base = (spec == 'x' || spec == 'X' || spec == 'p') ? 16 : 10;
- 3888: 07000693 li a3,112
- 388c: 04dc8263 beq s9,a3,38d0 <_vprintf_core.constprop.0.isra.0+0x79e>
- val = is_signed ? (uint64)va_arg(ap, int64) : va_arg(ap, uint64);
- 3890: 000c3e03 ld t3,0(s8)
- 3894: 8dbe mv s11,a5
- 3896: 4581 li a1,0
- 3898: e002 sd zero,0(sp)
- int base = (spec == 'x' || spec == 'X' || spec == 'p') ? 16 : 10;
- 389a: 4329 li t1,10
- const char *digits = uppercase ? "0123456789ABCDEF" : "0123456789abcdef";
- 389c: 00002f97 auipc t6,0x2
- 38a0: 8ecf8f93 addi t6,t6,-1812 # 5188 <_GLOBAL__sub_I__ZSt3cin+0xc2>
- 38a4: b1dd j 358a <_vprintf_core.constprop.0.isra.0+0x458>
- val = is_signed ? (uint64)va_arg(ap, long) : (uint64)va_arg(ap, unsigned long);
- 38a6: 000c3e03 ld t3,0(s8)
- 38aa: 4581 li a1,0
- 38ac: e002 sd zero,0(sp)
- int base = (spec == 'x' || spec == 'X' || spec == 'p') ? 16 : 10;
- 38ae: 4341 li t1,16
- const char *digits = uppercase ? "0123456789ABCDEF" : "0123456789abcdef";
- 38b0: 00002f97 auipc t6,0x2
- 38b4: 8d8f8f93 addi t6,t6,-1832 # 5188 <_GLOBAL__sub_I__ZSt3cin+0xc2>
- 38b8: b9c9 j 358a <_vprintf_core.constprop.0.isra.0+0x458>
- char spec = *p++;
- 38ba: 8dbe mv s11,a5
- 38bc: b911 j 34d0 <_vprintf_core.constprop.0.isra.0+0x39e>
- for (int i = digit_len - 1; i >= 0; i--)
- 38be: 577d li a4,-1
- 38c0: 4401 li s0,0
- 38c2: d6ec19e3 bne s8,a4,3634 <_vprintf_core.constprop.0.isra.0+0x502>
- char spec = *p++;
- 38c6: 6c22 ld s8,8(sp)
- 38c8: b065 j 3170 <_vprintf_core.constprop.0.isra.0+0x3e>
- val = is_signed ? (uint64)va_arg(ap, long) : (uint64)va_arg(ap, unsigned long);
- 38ca: 000c3e03 ld t3,0(s8)
- const char *digits = uppercase ? "0123456789ABCDEF" : "0123456789abcdef";
- 38ce: b549 j 3750 <_vprintf_core.constprop.0.isra.0+0x61e>
- int base = (spec == 'x' || spec == 'X' || spec == 'p') ? 16 : 10;
- 38d0: 8dbe mv s11,a5
- val = (uint64)va_arg(ap, void *);
- 38d2: 000c3e03 ld t3,0(s8)
- 38d6: 4581 li a1,0
- 38d8: 07000c93 li s9,112
- 38dc: e002 sd zero,0(sp)
- 38de: 4341 li t1,16
- const char *digits = uppercase ? "0123456789ABCDEF" : "0123456789abcdef";
- 38e0: 00002f97 auipc t6,0x2
- 38e4: 8a8f8f93 addi t6,t6,-1880 # 5188 <_GLOBAL__sub_I__ZSt3cin+0xc2>
- 38e8: b14d j 358a <_vprintf_core.constprop.0.isra.0+0x458>
- prefix_str = (spec == 'X') ? "0X" : "0x";
- 38ea: 00002c97 auipc s9,0x2
- 38ee: 8bec8c93 addi s9,s9,-1858 # 51a8 <_GLOBAL__sub_I__ZSt3cin+0xe2>
- 38f2: b3e5 j 36da <_vprintf_core.constprop.0.isra.0+0x5a8>
- val = (uint64)va_arg(ap, void *);
- 38f4: 008c0713 addi a4,s8,8
- val = is_signed ? (uint64)va_arg(ap, int64) : va_arg(ap, uint64);
- 38f8: 000c3e03 ld t3,0(s8)
- val = (uint64)va_arg(ap, void *);
- 38fc: e43a sd a4,8(sp)
- val = is_signed ? (uint64)va_arg(ap, int64) : va_arg(ap, uint64);
- 38fe: 8dbe mv s11,a5
- 3900: bd81 j 3750 <_vprintf_core.constprop.0.isra.0+0x61e>
- 3902: 8d52 mv s10,s4
- 3904: 4b01 li s6,0
- 3906: 4b81 li s7,0
- 3908: bd59 j 379e <_vprintf_core.constprop.0.isra.0+0x66c>
- int base = (spec == 'x' || spec == 'X' || spec == 'p') ? 16 : 10;
- 390a: 07000693 li a3,112
- 390e: fcdc82e3 beq s9,a3,38d2 <_vprintf_core.constprop.0.isra.0+0x7a0>
- else if (len_mod == 1)
- 3912: 01ce8c63 beq t4,t3,392a <_vprintf_core.constprop.0.isra.0+0x7f8>
- val = is_signed ? (uint64)((int64)va_arg(ap, int)) : (uint64)va_arg(ap, uint32);
- 3916: 000c6e03 lwu t3,0(s8)
- const char *digits = uppercase ? "0123456789ABCDEF" : "0123456789abcdef";
- 391a: 4581 li a1,0
- 391c: e002 sd zero,0(sp)
- 391e: 4329 li t1,10
- 3920: 00002f97 auipc t6,0x2
- 3924: 868f8f93 addi t6,t6,-1944 # 5188 <_GLOBAL__sub_I__ZSt3cin+0xc2>
- 3928: b18d j 358a <_vprintf_core.constprop.0.isra.0+0x458>
- val = is_signed ? (uint64)va_arg(ap, long) : (uint64)va_arg(ap, unsigned long);
- 392a: 000c3e03 ld t3,0(s8)
- if (is_signed)
- 392e: b7f5 j 391a <_vprintf_core.constprop.0.isra.0+0x7e8>
-
-0000000000003930 <vsnprintf>:
-{
- 3930: 7139 addi sp,sp,-64
- 3932: f822 sd s0,48(sp)
- 3934: f426 sd s1,40(sp)
- 3936: 842e mv s0,a1
- 3938: 84aa mv s1,a0
- 393a: 85b2 mv a1,a2
- _vprintf_core(&ctx, format, ap);
- 393c: 850a mv a0,sp
- 393e: 8636 mv a2,a3
-{
- 3940: fc06 sd ra,56(sp)
- ctx.buf = str;
- 3942: e026 sd s1,0(sp)
- ctx.limit = size;
- 3944: e422 sd s0,8(sp)
- ctx.written = 0;
- 3946: e802 sd zero,16(sp)
- ctx.stream = NULL;
- 3948: ec02 sd zero,24(sp)
- _vprintf_core(&ctx, format, ap);
- 394a: fe8ff0ef jal 3132 <_vprintf_core.constprop.0.isra.0>
- if (ctx.written < size)
- 394e: 6542 ld a0,16(sp)
- if (size > 0)
- 3950: c411 beqz s0,395c <vsnprintf+0x2c>
- if (ctx.written < size)
- 3952: 00857b63 bgeu a0,s0,3968 <vsnprintf+0x38>
- str[ctx.written] = '\0';
- 3956: 94aa add s1,s1,a0
- 3958: 00048023 sb zero,0(s1)
-}
- 395c: 70e2 ld ra,56(sp)
- 395e: 7442 ld s0,48(sp)
- 3960: 74a2 ld s1,40(sp)
- 3962: 2501 sext.w a0,a0
- 3964: 6121 addi sp,sp,64
- 3966: 8082 ret
- str[size - 1] = '\0';
- 3968: 94a2 add s1,s1,s0
- 396a: fe048fa3 sb zero,-1(s1)
-}
- 396e: 70e2 ld ra,56(sp)
- 3970: 7442 ld s0,48(sp)
- 3972: 74a2 ld s1,40(sp)
- 3974: 2501 sext.w a0,a0
- 3976: 6121 addi sp,sp,64
- 3978: 8082 ret
-
-000000000000397a <snprintf>:
-{
- 397a: 7119 addi sp,sp,-128
- 397c: e0a2 sd s0,64(sp)
- 397e: fc26 sd s1,56(sp)
- 3980: 842e mv s0,a1
- 3982: 84aa mv s1,a0
- 3984: 85b2 mv a1,a2
- _vprintf_core(&ctx, format, ap);
- 3986: 0808 addi a0,sp,16
- va_start(ap, format);
- 3988: 08b0 addi a2,sp,88
-{
- 398a: e486 sd ra,72(sp)
- 398c: ecb6 sd a3,88(sp)
- 398e: f0ba sd a4,96(sp)
- 3990: f4be sd a5,104(sp)
- 3992: f8c2 sd a6,112(sp)
- 3994: fcc6 sd a7,120(sp)
- va_start(ap, format);
- 3996: e432 sd a2,8(sp)
- ctx.buf = str;
- 3998: e826 sd s1,16(sp)
- ctx.limit = size;
- 399a: ec22 sd s0,24(sp)
- ctx.written = 0;
- 399c: f002 sd zero,32(sp)
- ctx.stream = NULL;
- 399e: f402 sd zero,40(sp)
- _vprintf_core(&ctx, format, ap);
- 39a0: f92ff0ef jal 3132 <_vprintf_core.constprop.0.isra.0>
- if (ctx.written < size)
- 39a4: 7502 ld a0,32(sp)
- if (size > 0)
- 39a6: c411 beqz s0,39b2 <snprintf+0x38>
- if (ctx.written < size)
- 39a8: 00857b63 bgeu a0,s0,39be <snprintf+0x44>
- str[ctx.written] = '\0';
- 39ac: 94aa add s1,s1,a0
- 39ae: 00048023 sb zero,0(s1)
-}
- 39b2: 60a6 ld ra,72(sp)
- 39b4: 6406 ld s0,64(sp)
- 39b6: 74e2 ld s1,56(sp)
- 39b8: 2501 sext.w a0,a0
- 39ba: 6109 addi sp,sp,128
- 39bc: 8082 ret
- str[size - 1] = '\0';
- 39be: 94a2 add s1,s1,s0
- 39c0: fe048fa3 sb zero,-1(s1)
-}
- 39c4: 60a6 ld ra,72(sp)
- 39c6: 6406 ld s0,64(sp)
- 39c8: 74e2 ld s1,56(sp)
- 39ca: 2501 sext.w a0,a0
- 39cc: 6109 addi sp,sp,128
- 39ce: 8082 ret
-
-00000000000039d0 <printf>:
-{
- 39d0: 7119 addi sp,sp,-128
- va_start(ap, format);
- 39d2: 04810313 addi t1,sp,72
-{
- 39d6: e4ae sd a1,72(sp)
- 39d8: e8b2 sd a2,80(sp)
- 39da: f4be sd a5,104(sp)
- _vprintf_core(&ctx, format, ap);
- 39dc: 85aa mv a1,a0
- ctx.stream = stdout;
- 39de: 00004797 auipc a5,0x4
- 39e2: e027b783 ld a5,-510(a5) # 77e0 <stdout>
- _vprintf_core(&ctx, format, ap);
- 39e6: 0808 addi a0,sp,16
- 39e8: 861a mv a2,t1
-{
- 39ea: fc06 sd ra,56(sp)
- 39ec: ecb6 sd a3,88(sp)
- 39ee: f0ba sd a4,96(sp)
- 39f0: f8c2 sd a6,112(sp)
- 39f2: fcc6 sd a7,120(sp)
- va_start(ap, format);
- 39f4: e41a sd t1,8(sp)
- ctx.buf = NULL;
- 39f6: e802 sd zero,16(sp)
- ctx.limit = 0;
- 39f8: ec02 sd zero,24(sp)
- ctx.written = 0;
- 39fa: f002 sd zero,32(sp)
- ctx.stream = stdout;
- 39fc: f43e sd a5,40(sp)
- _vprintf_core(&ctx, format, ap);
- 39fe: f34ff0ef jal 3132 <_vprintf_core.constprop.0.isra.0>
-}
- 3a02: 70e2 ld ra,56(sp)
- 3a04: 5502 lw a0,32(sp)
- 3a06: 6109 addi sp,sp,128
- 3a08: 8082 ret
-
-0000000000003a0a <sscanf>:
-{
- 3a0a: 7159 addi sp,sp,-112
- va_start(ap, format);
- 3a0c: 04010e13 addi t3,sp,64
-{
- 3a10: 8eaa mv t4,a0
- ctx.fd = -1;
- 3a12: 537d li t1,-1
-{
- 3a14: e0b2 sd a2,64(sp)
- int ret = _vscanf_core(&ctx, format, ap);
- 3a16: 0808 addi a0,sp,16
- 3a18: 8672 mv a2,t3
-{
- 3a1a: fc06 sd ra,56(sp)
- 3a1c: e4b6 sd a3,72(sp)
- 3a1e: e8ba sd a4,80(sp)
- 3a20: ecbe sd a5,88(sp)
- 3a22: f0c2 sd a6,96(sp)
- 3a24: f4c6 sd a7,104(sp)
- va_start(ap, format);
- 3a26: e472 sd t3,8(sp)
- ctx.buf = str;
- 3a28: e876 sd t4,16(sp)
- ctx.fd = -1;
- 3a2a: cc1a sw t1,24(sp)
- ctx.pos = 0;
- 3a2c: f002 sd zero,32(sp)
- ctx.ungotten = -1;
- 3a2e: d41a sw t1,40(sp)
- int ret = _vscanf_core(&ctx, format, ap);
- 3a30: 81efd0ef jal a4e <_vscanf_core.constprop.0>
-}
- 3a34: 70e2 ld ra,56(sp)
- 3a36: 6165 addi sp,sp,112
- 3a38: 8082 ret
-
-0000000000003a3a <scanf>:
-{
- 3a3a: 7119 addi sp,sp,-128
- va_start(ap, format);
- 3a3c: 04810313 addi t1,sp,72
-{
- 3a40: e4ae sd a1,72(sp)
- 3a42: e8b2 sd a2,80(sp)
- 3a44: f4be sd a5,104(sp)
- int ret = _vscanf_core(&ctx, format, ap);
- 3a46: 85aa mv a1,a0
- ctx.ungotten = -1;
- 3a48: 57fd li a5,-1
- int ret = _vscanf_core(&ctx, format, ap);
- 3a4a: 0808 addi a0,sp,16
- 3a4c: 861a mv a2,t1
-{
- 3a4e: fc06 sd ra,56(sp)
- 3a50: ecb6 sd a3,88(sp)
- 3a52: f0ba sd a4,96(sp)
- 3a54: f8c2 sd a6,112(sp)
- 3a56: fcc6 sd a7,120(sp)
- va_start(ap, format);
- 3a58: e41a sd t1,8(sp)
- ctx.buf = NULL;
- 3a5a: e802 sd zero,16(sp)
- ctx.fd = STDIN_FD;
- 3a5c: cc02 sw zero,24(sp)
- ctx.pos = 0;
- 3a5e: f002 sd zero,32(sp)
- ctx.ungotten = -1;
- 3a60: d43e sw a5,40(sp)
- int ret = _vscanf_core(&ctx, format, ap);
- 3a62: fedfc0ef jal a4e <_vscanf_core.constprop.0>
-}
- 3a66: 70e2 ld ra,56(sp)
- 3a68: 6109 addi sp,sp,128
- 3a6a: 8082 ret
-
-0000000000003a6c <fopen>:
-{
- 3a6c: 1101 addi sp,sp,-32
- 3a6e: e426 sd s1,8(sp)
- 3a70: 84ae mv s1,a1
- 3a72: e04a sd s2,0(sp)
- if (strcmp(mode, "r") == 0)
- 3a74: 00001597 auipc a1,0x1
- 3a78: 75458593 addi a1,a1,1876 # 51c8 <_GLOBAL__sub_I__ZSt3cin+0x102>
-{
- 3a7c: 892a mv s2,a0
- if (strcmp(mode, "r") == 0)
- 3a7e: 8526 mv a0,s1
-{
- 3a80: e822 sd s0,16(sp)
- 3a82: ec06 sd ra,24(sp)
- if (strcmp(mode, "r") == 0)
- 3a84: 298010ef jal 4d1c <strcmp>
- 3a88: 842a mv s0,a0
- 3a8a: c919 beqz a0,3aa0 <fopen+0x34>
- else if (strcmp(mode, "w") == 0)
- 3a8c: 00001597 auipc a1,0x1
- 3a90: 74458593 addi a1,a1,1860 # 51d0 <_GLOBAL__sub_I__ZSt3cin+0x10a>
- 3a94: 8526 mv a0,s1
- 3a96: 286010ef jal 4d1c <strcmp>
- flags = O_WRONLY | O_CREAT | O_TRUNC;
- 3a9a: 24100413 li s0,577
- else if (strcmp(mode, "w") == 0)
- 3a9e: ed39 bnez a0,3afc <fopen+0x90>
- int64 fd = open(filename, flags);
- 3aa0: 85a2 mv a1,s0
- 3aa2: 854a mv a0,s2
- 3aa4: f42fc0ef jal 1e6 <open>
- 3aa8: 84aa mv s1,a0
- if (fd < 0)
- 3aaa: 06054c63 bltz a0,3b22 <fopen+0xb6>
- FILE *f = (FILE *)malloc(sizeof(FILE));
- 3aae: 42000513 li a0,1056
- 3ab2: 2f3000ef jal 45a4 <malloc>
- 3ab6: 892a mv s2,a0
- if (!f)
- 3ab8: c53d beqz a0,3b26 <fopen+0xba>
- memset(f, 0, sizeof(FILE));
- 3aba: 42000613 li a2,1056
- 3abe: 4581 li a1,0
- 3ac0: 0ee010ef jal 4bae <memset>
- if (fd == 1)
- 3ac4: 4785 li a5,1
- f->fd = (int)fd;
- 3ac6: 00992023 sw s1,0(s2)
- f->flags = flags;
- 3aca: 00892223 sw s0,4(s2)
- if (fd == 1)
- 3ace: 00f48e63 beq s1,a5,3aea <fopen+0x7e>
- else if (fd == 2)
- 3ad2: 4789 li a5,2
- 3ad4: 00f48b63 beq s1,a5,3aea <fopen+0x7e>
- f->buf_mode = 0;
- 3ad8: 40092e23 sw zero,1052(s2)
-}
- 3adc: 60e2 ld ra,24(sp)
- 3ade: 6442 ld s0,16(sp)
- 3ae0: 64a2 ld s1,8(sp)
- 3ae2: 854a mv a0,s2
- 3ae4: 6902 ld s2,0(sp)
- 3ae6: 6105 addi sp,sp,32
- 3ae8: 8082 ret
- 3aea: 60e2 ld ra,24(sp)
- 3aec: 6442 ld s0,16(sp)
- f->buf_mode = 2;
- 3aee: 40992e23 sw s1,1052(s2)
-}
- 3af2: 854a mv a0,s2
- 3af4: 64a2 ld s1,8(sp)
- 3af6: 6902 ld s2,0(sp)
- 3af8: 6105 addi sp,sp,32
- 3afa: 8082 ret
- else if (strcmp(mode, "a") == 0)
- 3afc: 00001597 auipc a1,0x1
- 3b00: 6dc58593 addi a1,a1,1756 # 51d8 <_GLOBAL__sub_I__ZSt3cin+0x112>
- 3b04: 8526 mv a0,s1
- 3b06: 216010ef jal 4d1c <strcmp>
- flags = O_WRONLY | O_CREAT | O_APPEND;
- 3b0a: 44100413 li s0,1089
- else if (strcmp(mode, "a") == 0)
- 3b0e: d949 beqz a0,3aa0 <fopen+0x34>
- else if (strcmp(mode, "r+") == 0)
- 3b10: 00001597 auipc a1,0x1
- 3b14: 6d058593 addi a1,a1,1744 # 51e0 <_GLOBAL__sub_I__ZSt3cin+0x11a>
- 3b18: 8526 mv a0,s1
- 3b1a: 202010ef jal 4d1c <strcmp>
- flags = O_RDWR;
- 3b1e: 4409 li s0,2
- else if (strcmp(mode, "r+") == 0)
- 3b20: d141 beqz a0,3aa0 <fopen+0x34>
- return NULL;
- 3b22: 4901 li s2,0
- 3b24: bf65 j 3adc <fopen+0x70>
- close(fd);
- 3b26: 8526 mv a0,s1
- 3b28: ea6fc0ef jal 1ce <close>
- return NULL;
- 3b2c: 4901 li s2,0
- 3b2e: b77d j 3adc <fopen+0x70>
-
-0000000000003b30 <fclose>:
- if (!stream)
- 3b30: cd29 beqz a0,3b8a <fclose+0x5a>
- if (stream->buf_write_pos > 0)
- 3b32: 41052603 lw a2,1040(a0)
-{
- 3b36: 1141 addi sp,sp,-16
- 3b38: e022 sd s0,0(sp)
- 3b3a: e406 sd ra,8(sp)
- 3b3c: 842a mv s0,a0
- if (stream->buf_write_pos > 0)
- 3b3e: 02c04a63 bgtz a2,3b72 <fclose+0x42>
- if (stream != stdin && stream != stdout && stream != stderr)
- 3b42: 00004797 auipc a5,0x4
- 3b46: c9e78793 addi a5,a5,-866 # 77e0 <stdout>
- 3b4a: 6798 ld a4,8(a5)
- 3b4c: 00870e63 beq a4,s0,3b68 <fclose+0x38>
- 3b50: 6398 ld a4,0(a5)
- 3b52: 00870b63 beq a4,s0,3b68 <fclose+0x38>
- 3b56: 6b9c ld a5,16(a5)
- 3b58: 00878863 beq a5,s0,3b68 <fclose+0x38>
- close(stream->fd);
- 3b5c: 4008 lw a0,0(s0)
- 3b5e: e70fc0ef jal 1ce <close>
- free(stream);
- 3b62: 8522 mv a0,s0
- 3b64: 1cb000ef jal 452e <free>
-}
- 3b68: 60a2 ld ra,8(sp)
- 3b6a: 6402 ld s0,0(sp)
- return 0;
- 3b6c: 4501 li a0,0
-}
- 3b6e: 0141 addi sp,sp,16
- 3b70: 8082 ret
- int64 ret = write(stream->fd, stream->buffer, stream->buf_write_pos);
- 3b72: 4108 lw a0,0(a0)
- 3b74: 01040593 addi a1,s0,16
- 3b78: e4efc0ef jal 1c6 <write>
- if (ret < stream->buf_write_pos)
- 3b7c: 41042783 lw a5,1040(s0)
- 3b80: 00f54763 blt a0,a5,3b8e <fclose+0x5e>
- stream->buf_write_pos = 0;
- 3b84: 40042823 sw zero,1040(s0)
- 3b88: bf6d j 3b42 <fclose+0x12>
- return -1;
- 3b8a: 557d li a0,-1
-}
- 3b8c: 8082 ret
- stream->error = 1;
- 3b8e: 4785 li a5,1
- 3b90: c41c sw a5,8(s0)
- stream->buf_write_pos = 0;
- 3b92: 40042823 sw zero,1040(s0)
- return EOF;
- 3b96: b775 j 3b42 <fclose+0x12>
-
-0000000000003b98 <fflush>:
- if (!stream)
- 3b98: c121 beqz a0,3bd8 <fflush+0x40>
- if (stream->buf_write_pos > 0)
- 3b9a: 41052603 lw a2,1040(a0)
-{
- 3b9e: 1141 addi sp,sp,-16
- 3ba0: e022 sd s0,0(sp)
- 3ba2: e406 sd ra,8(sp)
- 3ba4: 842a mv s0,a0
- if (stream->buf_write_pos > 0)
- 3ba6: 00c04763 bgtz a2,3bb4 <fflush+0x1c>
- return 0;
- 3baa: 4501 li a0,0
-}
- 3bac: 60a2 ld ra,8(sp)
- 3bae: 6402 ld s0,0(sp)
- 3bb0: 0141 addi sp,sp,16
- 3bb2: 8082 ret
- int64 ret = write(stream->fd, stream->buffer, stream->buf_write_pos);
- 3bb4: 4108 lw a0,0(a0)
- 3bb6: 01040593 addi a1,s0,16
- 3bba: e0cfc0ef jal 1c6 <write>
- if (ret < stream->buf_write_pos)
- 3bbe: 41042783 lw a5,1040(s0)
- 3bc2: 00f54563 blt a0,a5,3bcc <fflush+0x34>
- stream->buf_write_pos = 0;
- 3bc6: 40042823 sw zero,1040(s0)
- 3bca: b7c5 j 3baa <fflush+0x12>
- stream->error = 1;
- 3bcc: 4785 li a5,1
- 3bce: c41c sw a5,8(s0)
- stream->buf_write_pos = 0;
- 3bd0: 40042823 sw zero,1040(s0)
- return EOF;
- 3bd4: 557d li a0,-1
- 3bd6: bfd9 j 3bac <fflush+0x14>
- 3bd8: 557d li a0,-1
-}
- 3bda: 8082 ret
-
-0000000000003bdc <fprintf>:
-{
- 3bdc: 7159 addi sp,sp,-112
- 3bde: fc06 sd ra,56(sp)
- 3be0: e0b2 sd a2,64(sp)
- 3be2: e4b6 sd a3,72(sp)
- 3be4: e8ba sd a4,80(sp)
- 3be6: ecbe sd a5,88(sp)
- 3be8: f0c2 sd a6,96(sp)
- 3bea: f4c6 sd a7,104(sp)
- if (!stream)
- 3bec: cd19 beqz a0,3c0a <fprintf+0x2e>
- va_start(ap, format);
- 3bee: 832a mv t1,a0
- 3bf0: 0090 addi a2,sp,64
- _vprintf_core(&ctx, format, ap);
- 3bf2: 0808 addi a0,sp,16
- va_start(ap, format);
- 3bf4: e432 sd a2,8(sp)
- ctx.buf = NULL;
- 3bf6: e802 sd zero,16(sp)
- ctx.limit = 0;
- 3bf8: ec02 sd zero,24(sp)
- ctx.written = 0;
- 3bfa: f002 sd zero,32(sp)
- ctx.stream = stream;
- 3bfc: f41a sd t1,40(sp)
- _vprintf_core(&ctx, format, ap);
- 3bfe: d34ff0ef jal 3132 <_vprintf_core.constprop.0.isra.0>
- return (int)ctx.written;
- 3c02: 5502 lw a0,32(sp)
-}
- 3c04: 70e2 ld ra,56(sp)
- 3c06: 6165 addi sp,sp,112
- 3c08: 8082 ret
- return -1;
- 3c0a: 557d li a0,-1
- 3c0c: bfe5 j 3c04 <fprintf+0x28>
-
-0000000000003c0e <fscanf>:
-{
- 3c0e: 7159 addi sp,sp,-112
- 3c10: fc06 sd ra,56(sp)
- 3c12: e0b2 sd a2,64(sp)
- 3c14: e4b6 sd a3,72(sp)
- 3c16: e8ba sd a4,80(sp)
- 3c18: ecbe sd a5,88(sp)
- 3c1a: f0c2 sd a6,96(sp)
- 3c1c: f4c6 sd a7,104(sp)
- if (!stream)
- 3c1e: cd19 beqz a0,3c3c <fscanf+0x2e>
- ctx.fd = stream->fd;
- 3c20: 411c lw a5,0(a0)
- va_start(ap, format);
- 3c22: 0090 addi a2,sp,64
- int ret = _vscanf_core(&ctx, format, ap);
- 3c24: 0808 addi a0,sp,16
- ctx.fd = stream->fd;
- 3c26: cc3e sw a5,24(sp)
- ctx.ungotten = -1;
- 3c28: 57fd li a5,-1
- va_start(ap, format);
- 3c2a: e432 sd a2,8(sp)
- ctx.buf = NULL;
- 3c2c: e802 sd zero,16(sp)
- ctx.pos = 0;
- 3c2e: f002 sd zero,32(sp)
- ctx.ungotten = -1;
- 3c30: d43e sw a5,40(sp)
- int ret = _vscanf_core(&ctx, format, ap);
- 3c32: e1dfc0ef jal a4e <_vscanf_core.constprop.0>
-}
- 3c36: 70e2 ld ra,56(sp)
- 3c38: 6165 addi sp,sp,112
- 3c3a: 8082 ret
- return -1;
- 3c3c: 557d li a0,-1
- 3c3e: bfe5 j 3c36 <fscanf+0x28>
-
-0000000000003c40 <fputc>:
- if (!stream)
- 3c40: c1e1 beqz a1,3d00 <fputc+0xc0>
-{
- 3c42: 7179 addi sp,sp,-48
- 3c44: e84a sd s2,16(sp)
- if (stream->buf_mode == 2)
- 3c46: 41c5a903 lw s2,1052(a1)
-{
- 3c4a: f022 sd s0,32(sp)
- 3c4c: ec26 sd s1,24(sp)
- 3c4e: f406 sd ra,40(sp)
- if (stream->buf_mode == 2)
- 3c50: 4789 li a5,2
- 3c52: 842e mv s0,a1
- 3c54: 84aa mv s1,a0
- char ch = (char)c;
- 3c56: 0ff57713 zext.b a4,a0
- if (stream->buf_mode == 2)
- 3c5a: 02f90963 beq s2,a5,3c8c <fputc+0x4c>
- stream->buffer[stream->buf_write_pos++] = (char)c;
- 3c5e: 4105a783 lw a5,1040(a1)
- if (stream->buf_write_pos >= BUFSIZ)
- 3c62: 3ff00693 li a3,1023
- stream->buffer[stream->buf_write_pos++] = (char)c;
- 3c66: 0017861b addiw a2,a5,1
- 3c6a: 40c5a823 sw a2,1040(a1)
- 3c6e: 97ae add a5,a5,a1
- 3c70: 00e78823 sb a4,16(a5)
- if (stream->buf_write_pos >= BUFSIZ)
- 3c74: 06c6c463 blt a3,a2,3cdc <fputc+0x9c>
- else if (stream->buf_mode == 1 && c == '\n')
- 3c78: 4785 li a5,1
- 3c7a: 02f90e63 beq s2,a5,3cb6 <fputc+0x76>
- return c;
- 3c7e: 8526 mv a0,s1
-}
- 3c80: 70a2 ld ra,40(sp)
- 3c82: 7402 ld s0,32(sp)
- 3c84: 64e2 ld s1,24(sp)
- 3c86: 6942 ld s2,16(sp)
- 3c88: 6145 addi sp,sp,48
- 3c8a: 8082 ret
- if (write(stream->fd, &ch, 1) != 1)
- 3c8c: 4188 lw a0,0(a1)
- 3c8e: 4605 li a2,1
- 3c90: 00f10593 addi a1,sp,15
- char ch = (char)c;
- 3c94: 00e107a3 sb a4,15(sp)
- if (write(stream->fd, &ch, 1) != 1)
- 3c98: d2efc0ef jal 1c6 <write>
- 3c9c: 872a mv a4,a0
- 3c9e: 4785 li a5,1
- return c;
- 3ca0: 8526 mv a0,s1
- if (write(stream->fd, &ch, 1) != 1)
- 3ca2: fcf70fe3 beq a4,a5,3c80 <fputc+0x40>
-}
- 3ca6: 70a2 ld ra,40(sp)
- stream->error = 1;
- 3ca8: c41c sw a5,8(s0)
-}
- 3caa: 7402 ld s0,32(sp)
- 3cac: 64e2 ld s1,24(sp)
- 3cae: 6942 ld s2,16(sp)
- return EOF;
- 3cb0: 557d li a0,-1
-}
- 3cb2: 6145 addi sp,sp,48
- 3cb4: 8082 ret
- else if (stream->buf_mode == 1 && c == '\n')
- 3cb6: 47a9 li a5,10
- 3cb8: fcf513e3 bne a0,a5,3c7e <fputc+0x3e>
- if (stream->buf_write_pos > 0)
- 3cbc: fcc051e3 blez a2,3c7e <fputc+0x3e>
- int64 ret = write(stream->fd, stream->buffer, stream->buf_write_pos);
- 3cc0: 4188 lw a0,0(a1)
- 3cc2: 05c1 addi a1,a1,16
- 3cc4: d02fc0ef jal 1c6 <write>
- if (ret < stream->buf_write_pos)
- 3cc8: 41042783 lw a5,1040(s0)
- 3ccc: 02f55063 bge a0,a5,3cec <fputc+0xac>
- stream->error = 1;
- 3cd0: 01242423 sw s2,8(s0)
- stream->buf_write_pos = 0;
- 3cd4: 40042823 sw zero,1040(s0)
- return c;
- 3cd8: 8526 mv a0,s1
- 3cda: b75d j 3c80 <fputc+0x40>
- int64 ret = write(stream->fd, stream->buffer, stream->buf_write_pos);
- 3cdc: 4188 lw a0,0(a1)
- 3cde: 05c1 addi a1,a1,16
- 3ce0: ce6fc0ef jal 1c6 <write>
- if (ret < stream->buf_write_pos)
- 3ce4: 41042783 lw a5,1040(s0)
- 3ce8: 00f54663 blt a0,a5,3cf4 <fputc+0xb4>
- stream->buf_write_pos = 0;
- 3cec: 40042823 sw zero,1040(s0)
- return c;
- 3cf0: 8526 mv a0,s1
- 3cf2: b779 j 3c80 <fputc+0x40>
- stream->error = 1;
- 3cf4: 4785 li a5,1
- 3cf6: c41c sw a5,8(s0)
- stream->buf_write_pos = 0;
- 3cf8: 40042823 sw zero,1040(s0)
- return c;
- 3cfc: 8526 mv a0,s1
- 3cfe: b749 j 3c80 <fputc+0x40>
- return EOF;
- 3d00: 557d li a0,-1
-}
- 3d02: 8082 ret
-
-0000000000003d04 <fputs>:
- if (!stream)
- 3d04: c1ed beqz a1,3de6 <fputs+0xe2>
-{
- 3d06: 711d addi sp,sp,-96
- 3d08: e4a6 sd s1,72(sp)
- 3d0a: ec86 sd ra,88(sp)
- while (*s)
- 3d0c: 00054703 lbu a4,0(a0)
- 3d10: 84aa mv s1,a0
- 3d12: cf25 beqz a4,3d8a <fputs+0x86>
- 3d14: e8a2 sd s0,80(sp)
- 3d16: e0ca sd s2,64(sp)
- 3d18: fc4e sd s3,56(sp)
- 3d1a: f852 sd s4,48(sp)
- 3d1c: f456 sd s5,40(sp)
- 3d1e: f05a sd s6,32(sp)
- 3d20: ec5e sd s7,24(sp)
- 3d22: 842e mv s0,a1
- if (stream->buf_mode == 2)
- 3d24: 4909 li s2,2
- if (stream->buf_write_pos >= BUFSIZ)
- 3d26: 3ff00b13 li s6,1023
- else if (stream->buf_mode == 1 && c == '\n')
- 3d2a: 4985 li s3,1
- 3d2c: 4a29 li s4,10
- int64 ret = write(stream->fd, stream->buffer, stream->buf_write_pos);
- 3d2e: 01058a93 addi s5,a1,16
- if (write(stream->fd, &ch, 1) != 1)
- 3d32: 00f10b93 addi s7,sp,15
- 3d36: a031 j 3d42 <fputs+0x3e>
- else if (stream->buf_mode == 1 && c == '\n')
- 3d38: 09368563 beq a3,s3,3dc2 <fputs+0xbe>
- while (*s)
- 3d3c: 0004c703 lbu a4,0(s1)
- 3d40: cf15 beqz a4,3d7c <fputs+0x78>
- if (stream->buf_mode == 2)
- 3d42: 41c42683 lw a3,1052(s0)
- if (fputc(*s++, stream) == EOF)
- 3d46: 0485 addi s1,s1,1
- if (stream->buf_mode == 2)
- 3d48: 05268663 beq a3,s2,3d94 <fputs+0x90>
- stream->buffer[stream->buf_write_pos++] = (char)c;
- 3d4c: 41042783 lw a5,1040(s0)
- 3d50: 0017861b addiw a2,a5,1
- 3d54: 40c42823 sw a2,1040(s0)
- 3d58: 97a2 add a5,a5,s0
- 3d5a: 00e78823 sb a4,16(a5)
- if (stream->buf_write_pos >= BUFSIZ)
- 3d5e: fccb5de3 bge s6,a2,3d38 <fputs+0x34>
- int64 ret = write(stream->fd, stream->buffer, stream->buf_write_pos);
- 3d62: 4008 lw a0,0(s0)
- 3d64: 85d6 mv a1,s5
- 3d66: c60fc0ef jal 1c6 <write>
- if (ret < stream->buf_write_pos)
- 3d6a: 41042783 lw a5,1040(s0)
- 3d6e: 06f54763 blt a0,a5,3ddc <fputs+0xd8>
- stream->buf_write_pos = 0;
- 3d72: 40042823 sw zero,1040(s0)
- while (*s)
- 3d76: 0004c703 lbu a4,0(s1)
- 3d7a: f761 bnez a4,3d42 <fputs+0x3e>
- 3d7c: 6446 ld s0,80(sp)
- 3d7e: 6906 ld s2,64(sp)
- 3d80: 79e2 ld s3,56(sp)
- 3d82: 7a42 ld s4,48(sp)
- 3d84: 7aa2 ld s5,40(sp)
- 3d86: 7b02 ld s6,32(sp)
- 3d88: 6be2 ld s7,24(sp)
-}
- 3d8a: 60e6 ld ra,88(sp)
- 3d8c: 64a6 ld s1,72(sp)
- return 0;
- 3d8e: 4501 li a0,0
-}
- 3d90: 6125 addi sp,sp,96
- 3d92: 8082 ret
- if (write(stream->fd, &ch, 1) != 1)
- 3d94: 4008 lw a0,0(s0)
- 3d96: 4605 li a2,1
- 3d98: 85de mv a1,s7
- char ch = (char)c;
- 3d9a: 00e107a3 sb a4,15(sp)
- if (write(stream->fd, &ch, 1) != 1)
- 3d9e: c28fc0ef jal 1c6 <write>
- 3da2: f9350de3 beq a0,s3,3d3c <fputs+0x38>
- stream->error = 1;
- 3da6: 01342423 sw s3,8(s0)
-}
- 3daa: 60e6 ld ra,88(sp)
- 3dac: 6446 ld s0,80(sp)
- 3dae: 6906 ld s2,64(sp)
- 3db0: 79e2 ld s3,56(sp)
- 3db2: 7a42 ld s4,48(sp)
- 3db4: 7aa2 ld s5,40(sp)
- 3db6: 7b02 ld s6,32(sp)
- 3db8: 6be2 ld s7,24(sp)
- 3dba: 64a6 ld s1,72(sp)
- return -1;
- 3dbc: 557d li a0,-1
-}
- 3dbe: 6125 addi sp,sp,96
- 3dc0: 8082 ret
- else if (stream->buf_mode == 1 && c == '\n')
- 3dc2: f7471de3 bne a4,s4,3d3c <fputs+0x38>
- if (stream->buf_write_pos > 0)
- 3dc6: f6c05be3 blez a2,3d3c <fputs+0x38>
- int64 ret = write(stream->fd, stream->buffer, stream->buf_write_pos);
- 3dca: 4008 lw a0,0(s0)
- 3dcc: 01040593 addi a1,s0,16
- 3dd0: bf6fc0ef jal 1c6 <write>
- if (ret < stream->buf_write_pos)
- 3dd4: 41042783 lw a5,1040(s0)
- 3dd8: f8f55de3 bge a0,a5,3d72 <fputs+0x6e>
- stream->error = 1;
- 3ddc: 4785 li a5,1
- 3dde: c41c sw a5,8(s0)
- stream->buf_write_pos = 0;
- 3de0: 40042823 sw zero,1040(s0)
- return EOF;
- 3de4: bfa1 j 3d3c <fputs+0x38>
- return -1;
- 3de6: 557d li a0,-1
-}
- 3de8: 8082 ret
-
-0000000000003dea <fgetc>:
- if (!stream)
- 3dea: c949 beqz a0,3e7c <fgetc+0x92>
- if (stream->buf_write_pos > 0)
- 3dec: 41052603 lw a2,1040(a0)
-{
- 3df0: 1141 addi sp,sp,-16
- 3df2: e022 sd s0,0(sp)
- 3df4: e406 sd ra,8(sp)
- 3df6: 842a mv s0,a0
- if (stream->buf_write_pos > 0)
- 3df8: 04c04863 bgtz a2,3e48 <fgetc+0x5e>
- if (stream->buf_read_pos < stream->buf_read_cnt)
- 3dfc: 41442783 lw a5,1044(s0)
- 3e00: 41842703 lw a4,1048(s0)
- 3e04: 00e7dd63 bge a5,a4,3e1e <fgetc+0x34>
- return (unsigned char)stream->buffer[stream->buf_read_pos++];
- 3e08: 0017871b addiw a4,a5,1
- 3e0c: 40e42a23 sw a4,1044(s0)
- 3e10: 943e add s0,s0,a5
- 3e12: 01044503 lbu a0,16(s0)
-}
- 3e16: 60a2 ld ra,8(sp)
- 3e18: 6402 ld s0,0(sp)
- 3e1a: 0141 addi sp,sp,16
- 3e1c: 8082 ret
- int64 ret = read(stream->fd, stream->buffer, BUFSIZ);
- 3e1e: 4008 lw a0,0(s0)
- 3e20: 40000613 li a2,1024
- 3e24: 01040593 addi a1,s0,16
- 3e28: b96fc0ef jal 1be <read>
- 3e2c: 87aa mv a5,a0
- if (ret <= 0)
- 3e2e: 02a05e63 blez a0,3e6a <fgetc+0x80>
- stream->buf_read_cnt = (int)ret;
- 3e32: 40f42c23 sw a5,1048(s0)
- return (unsigned char)stream->buffer[stream->buf_read_pos++];
- 3e36: 4785 li a5,1
- 3e38: 01044503 lbu a0,16(s0)
-}
- 3e3c: 60a2 ld ra,8(sp)
- return (unsigned char)stream->buffer[stream->buf_read_pos++];
- 3e3e: 40f42a23 sw a5,1044(s0)
-}
- 3e42: 6402 ld s0,0(sp)
- 3e44: 0141 addi sp,sp,16
- 3e46: 8082 ret
- int64 ret = write(stream->fd, stream->buffer, stream->buf_write_pos);
- 3e48: 4108 lw a0,0(a0)
- 3e4a: 01040593 addi a1,s0,16
- 3e4e: b78fc0ef jal 1c6 <write>
- if (ret < stream->buf_write_pos)
- 3e52: 41042783 lw a5,1040(s0)
- 3e56: 00f54563 blt a0,a5,3e60 <fgetc+0x76>
- stream->buf_write_pos = 0;
- 3e5a: 40042823 sw zero,1040(s0)
- 3e5e: bf79 j 3dfc <fgetc+0x12>
- stream->error = 1;
- 3e60: 4785 li a5,1
- 3e62: c41c sw a5,8(s0)
- stream->buf_write_pos = 0;
- 3e64: 40042823 sw zero,1040(s0)
- return EOF;
- 3e68: bf51 j 3dfc <fgetc+0x12>
- if (ret == 0)
- 3e6a: e509 bnez a0,3e74 <fgetc+0x8a>
- stream->eof = 1;
- 3e6c: 4785 li a5,1
- 3e6e: c45c sw a5,12(s0)
- return EOF;
- 3e70: 557d li a0,-1
- 3e72: b755 j 3e16 <fgetc+0x2c>
- stream->error = 1;
- 3e74: 4785 li a5,1
- 3e76: c41c sw a5,8(s0)
- return EOF;
- 3e78: 557d li a0,-1
- 3e7a: bf71 j 3e16 <fgetc+0x2c>
- 3e7c: 557d li a0,-1
-}
- 3e7e: 8082 ret
-
-0000000000003e80 <fgets>:
- if (!stream || n <= 0)
- 3e80: ce5d beqz a2,3f3e <fgets+0xbe>
- 3e82: 0ab05e63 blez a1,3f3e <fgets+0xbe>
-{
- 3e86: 715d addi sp,sp,-80
- 3e88: e0a2 sd s0,64(sp)
- 3e8a: fc26 sd s1,56(sp)
- 3e8c: f84a sd s2,48(sp)
- 3e8e: f44e sd s3,40(sp)
- 3e90: f052 sd s4,32(sp)
- 3e92: ec56 sd s5,24(sp)
- 3e94: e85a sd s6,16(sp)
- 3e96: e45e sd s7,8(sp)
- 3e98: e486 sd ra,72(sp)
- 3e9a: 8432 mv s0,a2
- 3e9c: 8aaa mv s5,a0
- 3e9e: 892a mv s2,a0
- 3ea0: fff58b9b addiw s7,a1,-1
- int i = 0, c;
- 3ea4: 4481 li s1,0
- int64 ret = write(stream->fd, stream->buffer, stream->buf_write_pos);
- 3ea6: 01060993 addi s3,a2,16
- return (unsigned char)stream->buffer[stream->buf_read_pos++];
- 3eaa: 4b05 li s6,1
- if (c == '\n')
- 3eac: 4a29 li s4,10
- while (i < n - 1)
- 3eae: 05748163 beq s1,s7,3ef0 <fgets+0x70>
- if (stream->buf_write_pos > 0)
- 3eb2: 41042603 lw a2,1040(s0)
- int64 ret = write(stream->fd, stream->buffer, stream->buf_write_pos);
- 3eb6: 85ce mv a1,s3
- if (stream->buf_write_pos > 0)
- 3eb8: 06c04963 bgtz a2,3f2a <fgets+0xaa>
- if (stream->buf_read_pos < stream->buf_read_cnt)
- 3ebc: 41442783 lw a5,1044(s0)
- 3ec0: 41842703 lw a4,1048(s0)
- int64 ret = read(stream->fd, stream->buffer, BUFSIZ);
- 3ec4: 40000613 li a2,1024
- return (unsigned char)stream->buffer[stream->buf_read_pos++];
- 3ec8: 0017851b addiw a0,a5,1
- 3ecc: 00f406b3 add a3,s0,a5
- int64 ret = read(stream->fd, stream->buffer, BUFSIZ);
- 3ed0: 85ce mv a1,s3
- if (stream->buf_read_pos < stream->buf_read_cnt)
- 3ed2: 02e7de63 bge a5,a4,3f0e <fgets+0x8e>
- return (unsigned char)stream->buffer[stream->buf_read_pos++];
- 3ed6: 40a42a23 sw a0,1044(s0)
- 3eda: 0106c783 lbu a5,16(a3)
- 3ede: 0007871b sext.w a4,a5
- str[i++] = (char)c;
- 3ee2: 00f90023 sb a5,0(s2)
- 3ee6: 2485 addiw s1,s1,1
- if (c == '\n')
- 3ee8: 0905 addi s2,s2,1
- 3eea: fd4712e3 bne a4,s4,3eae <fgets+0x2e>
- str[i++] = (char)c;
- 3eee: 8ba6 mv s7,s1
- str[i] = '\0';
- 3ef0: 9bd6 add s7,s7,s5
- 3ef2: 000b8023 sb zero,0(s7)
- return str;
- 3ef6: 8556 mv a0,s5
-}
- 3ef8: 60a6 ld ra,72(sp)
- 3efa: 6406 ld s0,64(sp)
- 3efc: 74e2 ld s1,56(sp)
- 3efe: 7942 ld s2,48(sp)
- 3f00: 79a2 ld s3,40(sp)
- 3f02: 7a02 ld s4,32(sp)
- 3f04: 6ae2 ld s5,24(sp)
- 3f06: 6b42 ld s6,16(sp)
- 3f08: 6ba2 ld s7,8(sp)
- 3f0a: 6161 addi sp,sp,80
- 3f0c: 8082 ret
- int64 ret = read(stream->fd, stream->buffer, BUFSIZ);
- 3f0e: 4008 lw a0,0(s0)
- 3f10: aaefc0ef jal 1be <read>
- if (ret <= 0)
- 3f14: 02a05c63 blez a0,3f4c <fgets+0xcc>
- return (unsigned char)stream->buffer[stream->buf_read_pos++];
- 3f18: 01044783 lbu a5,16(s0)
- stream->buf_read_cnt = (int)ret;
- 3f1c: 40a42c23 sw a0,1048(s0)
- return (unsigned char)stream->buffer[stream->buf_read_pos++];
- 3f20: 41642a23 sw s6,1044(s0)
- 3f24: 0007871b sext.w a4,a5
- if (c == -1)
- 3f28: bf6d j 3ee2 <fgets+0x62>
- int64 ret = write(stream->fd, stream->buffer, stream->buf_write_pos);
- 3f2a: 4008 lw a0,0(s0)
- 3f2c: a9afc0ef jal 1c6 <write>
- if (ret < stream->buf_write_pos)
- 3f30: 41042783 lw a5,1040(s0)
- 3f34: 00f54763 blt a0,a5,3f42 <fgets+0xc2>
- stream->buf_write_pos = 0;
- 3f38: 40042823 sw zero,1040(s0)
- 3f3c: b741 j 3ebc <fgets+0x3c>
- return NULL;
- 3f3e: 4501 li a0,0
-}
- 3f40: 8082 ret
- stream->error = 1;
- 3f42: 4785 li a5,1
- 3f44: c41c sw a5,8(s0)
- stream->buf_write_pos = 0;
- 3f46: 40042823 sw zero,1040(s0)
- return EOF;
- 3f4a: bf8d j 3ebc <fgets+0x3c>
- stream->eof = 1;
- 3f4c: 4785 li a5,1
- if (ret == 0)
- 3f4e: e509 bnez a0,3f58 <fgets+0xd8>
- stream->eof = 1;
- 3f50: c45c sw a5,12(s0)
- if (i == 0)
- 3f52: fcd1 bnez s1,3eee <fgets+0x6e>
- return NULL;
- 3f54: 4501 li a0,0
- 3f56: b74d j 3ef8 <fgets+0x78>
- stream->error = 1;
- 3f58: c41c sw a5,8(s0)
- if (c == -1)
- 3f5a: bfe5 j 3f52 <fgets+0xd2>
-
-0000000000003f5c <fread>:
-{
- 3f5c: 715d addi sp,sp,-80
- 3f5e: e486 sd ra,72(sp)
- 3f60: f44e sd s3,40(sp)
- if (!stream || size == 0 || nmemb == 0)
- 3f62: 0e068963 beqz a3,4054 <fread+0xf8>
- 3f66: ec56 sd s5,24(sp)
- return 0;
- 3f68: 4981 li s3,0
- 3f6a: 8aae mv s5,a1
- if (!stream || size == 0 || nmemb == 0)
- 3f6c: c9bd beqz a1,3fe2 <fread+0x86>
- 3f6e: ca35 beqz a2,3fe2 <fread+0x86>
- if (stream->buf_write_pos > 0)
- 3f70: 4106a783 lw a5,1040(a3)
- 3f74: e0a2 sd s0,64(sp)
- 3f76: f052 sd s4,32(sp)
- uint64 total_bytes = size * nmemb;
- 3f78: 02c589b3 mul s3,a1,a2
- 3f7c: 8436 mv s0,a3
- 3f7e: 8a2a mv s4,a0
- if (stream->buf_write_pos > 0)
- 3f80: 0af04d63 bgtz a5,403a <fread+0xde>
- while (bytes_read < total_bytes)
- 3f84: 04098d63 beqz s3,3fde <fread+0x82>
- 3f88: fc26 sd s1,56(sp)
- 3f8a: e85a sd s6,16(sp)
- 3f8c: e45e sd s7,8(sp)
- 3f8e: f84a sd s2,48(sp)
- 3f90: 4481 li s1,0
- if (remaining >= BUFSIZ)
- 3f92: 3ff00b13 li s6,1023
- int64 ret = read(stream->fd, stream->buffer, BUFSIZ);
- 3f96: 01040b93 addi s7,s0,16
- if (stream->buf_read_pos < stream->buf_read_cnt)
- 3f9a: 41442703 lw a4,1044(s0)
- 3f9e: 41842783 lw a5,1048(s0)
- uint64 remaining = total_bytes - bytes_read;
- 3fa2: 40998633 sub a2,s3,s1
- if (stream->buf_read_pos < stream->buf_read_cnt)
- 3fa6: 06f74463 blt a4,a5,400e <fread+0xb2>
- int64 ret = read(stream->fd, dst + bytes_read, remaining);
- 3faa: 4008 lw a0,0(s0)
- 3fac: 009a05b3 add a1,s4,s1
- if (remaining >= BUFSIZ)
- 3fb0: 02cb7f63 bgeu s6,a2,3fee <fread+0x92>
- int64 ret = read(stream->fd, dst + bytes_read, remaining);
- 3fb4: a0afc0ef jal 1be <read>
- if (ret <= 0)
- 3fb8: 0aa05463 blez a0,4060 <fread+0x104>
- bytes_read += ret;
- 3fbc: 94aa add s1,s1,a0
- while (bytes_read < total_bytes)
- 3fbe: fd34eee3 bltu s1,s3,3f9a <fread+0x3e>
- return bytes_read / size;
- 3fc2: 0354d9b3 divu s3,s1,s5
- 3fc6: 6406 ld s0,64(sp)
-}
- 3fc8: 60a6 ld ra,72(sp)
- return bytes_read / size;
- 3fca: 74e2 ld s1,56(sp)
- 3fcc: 7942 ld s2,48(sp)
- 3fce: 7a02 ld s4,32(sp)
- 3fd0: 6ae2 ld s5,24(sp)
- 3fd2: 6b42 ld s6,16(sp)
- 3fd4: 6ba2 ld s7,8(sp)
-}
- 3fd6: 854e mv a0,s3
- 3fd8: 79a2 ld s3,40(sp)
- 3fda: 6161 addi sp,sp,80
- 3fdc: 8082 ret
- 3fde: 6406 ld s0,64(sp)
- 3fe0: 7a02 ld s4,32(sp)
- 3fe2: 60a6 ld ra,72(sp)
- 3fe4: 6ae2 ld s5,24(sp)
- 3fe6: 854e mv a0,s3
- 3fe8: 79a2 ld s3,40(sp)
- 3fea: 6161 addi sp,sp,80
- 3fec: 8082 ret
- stream->buf_read_pos = 0;
- 3fee: 40042a23 sw zero,1044(s0)
- stream->buf_read_cnt = 0;
- 3ff2: 40042c23 sw zero,1048(s0)
- int64 ret = read(stream->fd, stream->buffer, BUFSIZ);
- 3ff6: 40000613 li a2,1024
- 3ffa: 85de mv a1,s7
- 3ffc: 9c2fc0ef jal 1be <read>
- if (ret <= 0)
- 4000: 06a05063 blez a0,4060 <fread+0x104>
- stream->buf_read_cnt = (int)ret;
- 4004: 40a42c23 sw a0,1048(s0)
- while (bytes_read < total_bytes)
- 4008: f934e9e3 bltu s1,s3,3f9a <fread+0x3e>
- 400c: bf5d j 3fc2 <fread+0x66>
- uint64 available = stream->buf_read_cnt - stream->buf_read_pos;
- 400e: 40e7893b subw s2,a5,a4
- memcpy(dst + bytes_read, stream->buffer + stream->buf_read_pos, to_copy);
- 4012: 00eb85b3 add a1,s7,a4
- 4016: 009a0533 add a0,s4,s1
- uint64 to_copy = (available < remaining) ? available : remaining;
- 401a: 01267363 bgeu a2,s2,4020 <fread+0xc4>
- 401e: 8932 mv s2,a2
- memcpy(dst + bytes_read, stream->buffer + stream->buf_read_pos, to_copy);
- 4020: 864a mv a2,s2
- 4022: 3e1000ef jal 4c02 <memcpy>
- stream->buf_read_pos += to_copy;
- 4026: 41442783 lw a5,1044(s0)
- bytes_read += to_copy;
- 402a: 94ca add s1,s1,s2
- stream->buf_read_pos += to_copy;
- 402c: 012787bb addw a5,a5,s2
- 4030: 40f42a23 sw a5,1044(s0)
- while (bytes_read < total_bytes)
- 4034: f734e3e3 bltu s1,s3,3f9a <fread+0x3e>
- 4038: b769 j 3fc2 <fread+0x66>
- int64 ret = write(stream->fd, stream->buffer, stream->buf_write_pos);
- 403a: 4288 lw a0,0(a3)
- 403c: 863e mv a2,a5
- 403e: 01068593 addi a1,a3,16
- 4042: 984fc0ef jal 1c6 <write>
- if (ret < stream->buf_write_pos)
- 4046: 41042783 lw a5,1040(s0)
- 404a: 02f54163 blt a0,a5,406c <fread+0x110>
- stream->buf_write_pos = 0;
- 404e: 40042823 sw zero,1040(s0)
- 4052: bf0d j 3f84 <fread+0x28>
-}
- 4054: 60a6 ld ra,72(sp)
- return 0;
- 4056: 4981 li s3,0
-}
- 4058: 854e mv a0,s3
- 405a: 79a2 ld s3,40(sp)
- 405c: 6161 addi sp,sp,80
- 405e: 8082 ret
- stream->eof = 1;
- 4060: 4785 li a5,1
- if (ret == 0)
- 4062: e119 bnez a0,4068 <fread+0x10c>
- stream->eof = 1;
- 4064: c45c sw a5,12(s0)
- 4066: bfb1 j 3fc2 <fread+0x66>
- stream->error = 1;
- 4068: c41c sw a5,8(s0)
- return bytes_read / size;
- 406a: bfa1 j 3fc2 <fread+0x66>
- stream->error = 1;
- 406c: 4785 li a5,1
- 406e: c41c sw a5,8(s0)
- stream->buf_write_pos = 0;
- 4070: 40042823 sw zero,1040(s0)
- return EOF;
- 4074: bf01 j 3f84 <fread+0x28>
-
-0000000000004076 <fwrite>:
-{
- 4076: 711d addi sp,sp,-96
- 4078: ec86 sd ra,88(sp)
- 407a: e0ca sd s2,64(sp)
- if (!stream || !ptr || size == 0 || nmemb == 0)
- 407c: 10068063 beqz a3,417c <fwrite+0x106>
- 4080: f456 sd s5,40(sp)
- 4082: 8aaa mv s5,a0
- 4084: 10050263 beqz a0,4188 <fwrite+0x112>
- 4088: f05a sd s6,32(sp)
- return 0;
- 408a: 4901 li s2,0
- 408c: 8b2e mv s6,a1
- if (!stream || !ptr || size == 0 || nmemb == 0)
- 408e: c1d9 beqz a1,4114 <fwrite+0x9e>
- 4090: c251 beqz a2,4114 <fwrite+0x9e>
- if (stream->buf_mode == 2)
- 4092: 41c6a703 lw a4,1052(a3)
- 4096: e8a2 sd s0,80(sp)
- 4098: 4789 li a5,2
- uint64 total_bytes = size * nmemb;
- 409a: 02c58933 mul s2,a1,a2
- if (stream->buf_mode == 2)
- 409e: 8436 mv s0,a3
- 40a0: 0ef70b63 beq a4,a5,4196 <fwrite+0x120>
- 40a4: fc4e sd s3,56(sp)
- 40a6: ec5e sd s7,24(sp)
- 40a8: e862 sd s8,16(sp)
- uint64 bytes_written = 0;
- 40aa: 4981 li s3,0
- 40ac: 01068b93 addi s7,a3,16
- uint64 space_left = BUFSIZ - stream->buf_write_pos;
- 40b0: 40000c13 li s8,1024
- while (bytes_written < total_bytes)
- 40b4: 12090263 beqz s2,41d8 <fwrite+0x162>
- 40b8: e4a6 sd s1,72(sp)
- 40ba: f852 sd s4,48(sp)
- 40bc: e466 sd s9,8(sp)
- uint64 space_left = BUFSIZ - stream->buf_write_pos;
- 40be: 41042783 lw a5,1040(s0)
- uint64 remaining = total_bytes - bytes_written;
- 40c2: 41390cb3 sub s9,s2,s3
- memcpy(stream->buffer + stream->buf_write_pos, src + bytes_written, remaining);
- 40c6: 013a85b3 add a1,s5,s3
- uint64 space_left = BUFSIZ - stream->buf_write_pos;
- 40ca: 40fc0a3b subw s4,s8,a5
- memcpy(stream->buffer + stream->buf_write_pos, src + bytes_written, space_left);
- 40ce: 00fb8533 add a0,s7,a5
- 40d2: 8652 mv a2,s4
- if (remaining <= space_left)
- 40d4: 059a6763 bltu s4,s9,4122 <fwrite+0xac>
- memcpy(stream->buffer + stream->buf_write_pos, src + bytes_written, remaining);
- 40d8: 8666 mv a2,s9
- 40da: 329000ef jal 4c02 <memcpy>
- stream->buf_write_pos += remaining;
- 40de: 41042783 lw a5,1040(s0)
- if (stream->buf_write_pos == BUFSIZ)
- 40e2: 40000713 li a4,1024
- stream->buf_write_pos += remaining;
- 40e6: 019786bb addw a3,a5,s9
- 40ea: 40d42823 sw a3,1040(s0)
- if (stream->buf_write_pos == BUFSIZ)
- 40ee: 06e68a63 beq a3,a4,4162 <fwrite+0xec>
- return bytes_written / size;
- 40f2: 03695933 divu s2,s2,s6
- 40f6: 6446 ld s0,80(sp)
- 40f8: 64a6 ld s1,72(sp)
- 40fa: 79e2 ld s3,56(sp)
- 40fc: 7a42 ld s4,48(sp)
- 40fe: 7aa2 ld s5,40(sp)
- 4100: 7b02 ld s6,32(sp)
- 4102: 6be2 ld s7,24(sp)
- 4104: 6c42 ld s8,16(sp)
- 4106: 6ca2 ld s9,8(sp)
-}
- 4108: 60e6 ld ra,88(sp)
- 410a: 854a mv a0,s2
- 410c: 6906 ld s2,64(sp)
- 410e: 6125 addi sp,sp,96
- 4110: 8082 ret
- 4112: 6446 ld s0,80(sp)
- 4114: 60e6 ld ra,88(sp)
- 4116: 7aa2 ld s5,40(sp)
- 4118: 7b02 ld s6,32(sp)
- 411a: 854a mv a0,s2
- 411c: 6906 ld s2,64(sp)
- 411e: 6125 addi sp,sp,96
- 4120: 8082 ret
- memcpy(stream->buffer + stream->buf_write_pos, src + bytes_written, space_left);
- 4122: 2e1000ef jal 4c02 <memcpy>
- stream->buf_write_pos += space_left;
- 4126: 41042783 lw a5,1040(s0)
- int64 ret = write(stream->fd, stream->buffer, stream->buf_write_pos);
- 412a: 85de mv a1,s7
- bytes_written += space_left;
- 412c: 99d2 add s3,s3,s4
- stream->buf_write_pos += space_left;
- 412e: 00fa04bb addw s1,s4,a5
- int64 ret = write(stream->fd, stream->buffer, stream->buf_write_pos);
- 4132: 02049613 slli a2,s1,0x20
- stream->buf_write_pos += space_left;
- 4136: 40942823 sw s1,1040(s0)
- int64 ret = write(stream->fd, stream->buffer, stream->buf_write_pos);
- 413a: 9201 srli a2,a2,0x20
- if (stream->buf_write_pos > 0)
- 413c: 00904763 bgtz s1,414a <fwrite+0xd4>
- while (bytes_written < total_bytes)
- 4140: f729efe3 bltu s3,s2,40be <fwrite+0x48>
- return bytes_written / size;
- 4144: 0369d933 divu s2,s3,s6
- 4148: b77d j 40f6 <fwrite+0x80>
- int64 ret = write(stream->fd, stream->buffer, stream->buf_write_pos);
- 414a: 4008 lw a0,0(s0)
- 414c: 87afc0ef jal 1c6 <write>
- if (ret < stream->buf_write_pos)
- 4150: 41042783 lw a5,1040(s0)
- 4154: 08f54963 blt a0,a5,41e6 <fwrite+0x170>
- stream->buf_write_pos = 0;
- 4158: 40042823 sw zero,1040(s0)
- while (bytes_written < total_bytes)
- 415c: f729e1e3 bltu s3,s2,40be <fwrite+0x48>
- 4160: b7d5 j 4144 <fwrite+0xce>
- int64 ret = write(stream->fd, stream->buffer, stream->buf_write_pos);
- 4162: 4008 lw a0,0(s0)
- 4164: 40000613 li a2,1024
- 4168: 85de mv a1,s7
- 416a: 85cfc0ef jal 1c6 <write>
- if (ret < stream->buf_write_pos)
- 416e: 41042783 lw a5,1040(s0)
- 4172: 08f54163 blt a0,a5,41f4 <fwrite+0x17e>
- stream->buf_write_pos = 0;
- 4176: 40042823 sw zero,1040(s0)
- 417a: bfa5 j 40f2 <fwrite+0x7c>
-}
- 417c: 60e6 ld ra,88(sp)
- return 0;
- 417e: 4901 li s2,0
-}
- 4180: 854a mv a0,s2
- 4182: 6906 ld s2,64(sp)
- 4184: 6125 addi sp,sp,96
- 4186: 8082 ret
- 4188: 60e6 ld ra,88(sp)
- return 0;
- 418a: 4901 li s2,0
- 418c: 7aa2 ld s5,40(sp)
-}
- 418e: 854a mv a0,s2
- 4190: 6906 ld s2,64(sp)
- 4192: 6125 addi sp,sp,96
- 4194: 8082 ret
- while (bytes_written < total_bytes)
- 4196: f6090ee3 beqz s2,4112 <fwrite+0x9c>
- 419a: e4a6 sd s1,72(sp)
- uint64 bytes_written = 0;
- 419c: 4481 li s1,0
- 419e: a021 j 41a6 <fwrite+0x130>
- bytes_written += ret;
- 41a0: 94aa add s1,s1,a0
- while (bytes_written < total_bytes)
- 41a2: 0324f463 bgeu s1,s2,41ca <fwrite+0x154>
- int64 ret = write(stream->fd, src + bytes_written, total_bytes - bytes_written);
- 41a6: 4008 lw a0,0(s0)
- 41a8: 40990633 sub a2,s2,s1
- 41ac: 009a85b3 add a1,s5,s1
- 41b0: 816fc0ef jal 1c6 <write>
- if (ret <= 0)
- 41b4: fea046e3 bgtz a0,41a0 <fwrite+0x12a>
- stream->error = 1;
- 41b8: 4785 li a5,1
- return bytes_written / size;
- 41ba: 0364d933 divu s2,s1,s6
- stream->error = 1;
- 41be: c41c sw a5,8(s0)
- break;
- 41c0: 64a6 ld s1,72(sp)
- 41c2: 6446 ld s0,80(sp)
- 41c4: 7aa2 ld s5,40(sp)
- 41c6: 7b02 ld s6,32(sp)
- 41c8: b781 j 4108 <fwrite+0x92>
- return bytes_written / size;
- 41ca: 0364d933 divu s2,s1,s6
- 41ce: 6446 ld s0,80(sp)
- 41d0: 64a6 ld s1,72(sp)
- 41d2: 7aa2 ld s5,40(sp)
- 41d4: 7b02 ld s6,32(sp)
- 41d6: bf0d j 4108 <fwrite+0x92>
- 41d8: 6446 ld s0,80(sp)
- 41da: 79e2 ld s3,56(sp)
- 41dc: 7aa2 ld s5,40(sp)
- 41de: 7b02 ld s6,32(sp)
- 41e0: 6be2 ld s7,24(sp)
- 41e2: 6c42 ld s8,16(sp)
- 41e4: b715 j 4108 <fwrite+0x92>
- stream->error = 1;
- 41e6: 4785 li a5,1
- 41e8: c41c sw a5,8(s0)
- stream->buf_write_pos = 0;
- 41ea: 40042823 sw zero,1040(s0)
- while (bytes_written < total_bytes)
- 41ee: ed29e8e3 bltu s3,s2,40be <fwrite+0x48>
- 41f2: bf89 j 4144 <fwrite+0xce>
- stream->error = 1;
- 41f4: 4785 li a5,1
- 41f6: c41c sw a5,8(s0)
- stream->buf_write_pos = 0;
- 41f8: 40042823 sw zero,1040(s0)
- return EOF;
- 41fc: bddd j 40f2 <fwrite+0x7c>
-
-00000000000041fe <fseek>:
- if (!stream)
- 41fe: c925 beqz a0,426e <fseek+0x70>
-{
- 4200: 1101 addi sp,sp,-32
- 4202: e04a sd s2,0(sp)
- 4204: 8932 mv s2,a2
- if (stream->buf_write_pos > 0)
- 4206: 41052603 lw a2,1040(a0)
-{
- 420a: e822 sd s0,16(sp)
- 420c: e426 sd s1,8(sp)
- 420e: ec06 sd ra,24(sp)
- 4210: 842a mv s0,a0
- 4212: 84ae mv s1,a1
- if (stream->buf_write_pos > 0)
- 4214: 02c04863 bgtz a2,4244 <fseek+0x46>
- if (lseek(stream->fd, offset, whence) < 0)
- 4218: 4008 lw a0,0(s0)
- stream->buf_read_pos = 0;
- 421a: 40042a23 sw zero,1044(s0)
- stream->buf_read_cnt = 0;
- 421e: 40042c23 sw zero,1048(s0)
- stream->eof = 0;
- 4222: 00042623 sw zero,12(s0)
- if (lseek(stream->fd, offset, whence) < 0)
- 4226: 864a mv a2,s2
- 4228: 0004859b sext.w a1,s1
- 422c: 82afc0ef jal 256 <lseek>
- 4230: 87aa mv a5,a0
- return 0;
- 4232: 4501 li a0,0
- if (lseek(stream->fd, offset, whence) < 0)
- 4234: 0207c463 bltz a5,425c <fseek+0x5e>
-}
- 4238: 60e2 ld ra,24(sp)
- 423a: 6442 ld s0,16(sp)
- 423c: 64a2 ld s1,8(sp)
- 423e: 6902 ld s2,0(sp)
- 4240: 6105 addi sp,sp,32
- 4242: 8082 ret
- int64 ret = write(stream->fd, stream->buffer, stream->buf_write_pos);
- 4244: 4108 lw a0,0(a0)
- 4246: 01040593 addi a1,s0,16
- 424a: f7dfb0ef jal 1c6 <write>
- if (ret < stream->buf_write_pos)
- 424e: 41042783 lw a5,1040(s0)
- 4252: 00f54963 blt a0,a5,4264 <fseek+0x66>
- stream->buf_write_pos = 0;
- 4256: 40042823 sw zero,1040(s0)
- 425a: bf7d j 4218 <fseek+0x1a>
- stream->error = 1;
- 425c: 4785 li a5,1
- 425e: c41c sw a5,8(s0)
- return -1;
- 4260: 557d li a0,-1
- 4262: bfd9 j 4238 <fseek+0x3a>
- stream->error = 1;
- 4264: 4785 li a5,1
- 4266: c41c sw a5,8(s0)
- stream->buf_write_pos = 0;
- 4268: 40042823 sw zero,1040(s0)
- return EOF;
- 426c: b775 j 4218 <fseek+0x1a>
- return -1;
- 426e: 557d li a0,-1
-}
- 4270: 8082 ret
-
-0000000000004272 <ftell>:
- if (!stream)
- 4272: c505 beqz a0,429a <ftell+0x28>
-{
- 4274: 1141 addi sp,sp,-16
- 4276: e022 sd s0,0(sp)
- 4278: 842a mv s0,a0
- int64 ret = lseek(stream->fd, 0, SEEK_CUR);
- 427a: 4108 lw a0,0(a0)
- 427c: 4605 li a2,1
- 427e: 4581 li a1,0
-{
- 4280: e406 sd ra,8(sp)
- int64 ret = lseek(stream->fd, 0, SEEK_CUR);
- 4282: fd5fb0ef jal 256 <lseek>
- if (ret < 0)
- 4286: 00054663 bltz a0,4292 <ftell+0x20>
-}
- 428a: 60a2 ld ra,8(sp)
- 428c: 6402 ld s0,0(sp)
- 428e: 0141 addi sp,sp,16
- 4290: 8082 ret
- stream->error = 1;
- 4292: 4785 li a5,1
- 4294: c41c sw a5,8(s0)
- return -1L;
- 4296: 557d li a0,-1
- 4298: bfcd j 428a <ftell+0x18>
- 429a: 557d li a0,-1
-}
- 429c: 8082 ret
-
-000000000000429e <rewind>:
- if (stream)
- 429e: c915 beqz a0,42d2 <rewind+0x34>
- if (stream->buf_write_pos > 0)
- 42a0: 41052603 lw a2,1040(a0)
-{
- 42a4: 1141 addi sp,sp,-16
- 42a6: e022 sd s0,0(sp)
- 42a8: e406 sd ra,8(sp)
- 42aa: 842a mv s0,a0
- if (stream->buf_write_pos > 0)
- 42ac: 02c04463 bgtz a2,42d4 <rewind+0x36>
- if (lseek(stream->fd, offset, whence) < 0)
- 42b0: 4008 lw a0,0(s0)
- stream->buf_read_pos = 0;
- 42b2: 40042a23 sw zero,1044(s0)
- stream->buf_read_cnt = 0;
- 42b6: 40042c23 sw zero,1048(s0)
- stream->eof = 0;
- 42ba: 00042623 sw zero,12(s0)
- if (lseek(stream->fd, offset, whence) < 0)
- 42be: 4601 li a2,0
- 42c0: 4581 li a1,0
- 42c2: f95fb0ef jal 256 <lseek>
-}
- 42c6: 60a2 ld ra,8(sp)
- stream->error = 0;
- 42c8: 00042423 sw zero,8(s0)
-}
- 42cc: 6402 ld s0,0(sp)
- 42ce: 0141 addi sp,sp,16
- 42d0: 8082 ret
- 42d2: 8082 ret
- int64 ret = write(stream->fd, stream->buffer, stream->buf_write_pos);
- 42d4: 4108 lw a0,0(a0)
- 42d6: 01040593 addi a1,s0,16
- 42da: eedfb0ef jal 1c6 <write>
- if (ret < stream->buf_write_pos)
- 42de: 41042783 lw a5,1040(s0)
- 42e2: 00f54563 blt a0,a5,42ec <rewind+0x4e>
- stream->buf_write_pos = 0;
- 42e6: 40042823 sw zero,1040(s0)
- 42ea: b7d9 j 42b0 <rewind+0x12>
- stream->error = 1;
- 42ec: 4785 li a5,1
- 42ee: c41c sw a5,8(s0)
- stream->buf_write_pos = 0;
- 42f0: 40042823 sw zero,1040(s0)
- return EOF;
- 42f4: bf75 j 42b0 <rewind+0x12>
-
-00000000000042f6 <feof>:
- return (stream) ? stream->eof : 1;
- 42f6: c119 beqz a0,42fc <feof+0x6>
- 42f8: 4548 lw a0,12(a0)
- 42fa: 8082 ret
- 42fc: 4505 li a0,1
-}
- 42fe: 8082 ret
-
-0000000000004300 <ferror>:
- return (stream) ? stream->error : 1;
- 4300: c119 beqz a0,4306 <ferror+0x6>
- 4302: 4508 lw a0,8(a0)
- 4304: 8082 ret
- 4306: 4505 li a0,1
-}
- 4308: 8082 ret
-
-000000000000430a <clearerr>:
- if (stream)
- 430a: c509 beqz a0,4314 <clearerr+0xa>
- stream->error = 0;
- 430c: 00052423 sw zero,8(a0)
- stream->eof = 0;
- 4310: 00052623 sw zero,12(a0)
-}
- 4314: 8082 ret
-
-0000000000004316 <ungetc>:
- if (!stream || c == EOF)
- 4316: c19d beqz a1,433c <ungetc+0x26>
- 4318: 57fd li a5,-1
- 431a: 02f50163 beq a0,a5,433c <ungetc+0x26>
- if (stream->buf_read_pos > 0)
- 431e: 4145a783 lw a5,1044(a1)
- 4322: 00f05d63 blez a5,433c <ungetc+0x26>
- stream->buf_read_pos--;
- 4326: fff7871b addiw a4,a5,-1
- 432a: 40e5aa23 sw a4,1044(a1)
- stream->buffer[stream->buf_read_pos] = (char)c;
- 432e: 00e587b3 add a5,a1,a4
- 4332: 00a78823 sb a0,16(a5)
- stream->eof = 0;
- 4336: 0005a623 sw zero,12(a1)
- return c;
- 433a: 8082 ret
- return EOF;
- 433c: 557d li a0,-1
- 433e: 8082 ret
-
-0000000000004340 <strtoull.part.0>:
- return new_ptr;
-}
-
-/* String Conversion*/
-
-unsigned long long strtoull(const char *nptr, char **endptr, int base)
- 4340: 1141 addi sp,sp,-16
- 4342: e422 sd s0,8(sp)
- 4344: 8eaa mv t4,a0
-{
- const char *s = nptr;
- 4346: 88aa mv a7,a0
- static inline int isdigit(int c) { return c >= '0' && c <= '9'; }
- static inline int islower(int c) { return c >= 'a' && c <= 'z'; }
- static inline int isupper(int c) { return c >= 'A' && c <= 'Z'; }
- static inline int isalpha(int c) { return islower(c) || isupper(c); }
- static inline int isalnum(int c) { return isalpha(c) || isdigit(c); }
- static inline int isspace(int c) { return c == ' ' || c == '\t' || c == '\n' || c == '\v' || c == '\f' || c == '\r'; }
- 4348: 02000313 li t1,32
- 434c: 4e11 li t3,4
- return 0;
- }
-
- do
- {
- c = *s++;
- 434e: 0008c783 lbu a5,0(a7)
- 4352: 00188813 addi a6,a7,1
- 4356: ff77871b addiw a4,a5,-9
- 435a: 0ff77693 zext.b a3,a4
- 435e: 0007871b sext.w a4,a5
- 4362: 04678363 beq a5,t1,43a8 <strtoull.part.0+0x68>
- 4366: 04de7163 bgeu t3,a3,43a8 <strtoull.part.0+0x68>
- } while (isspace(c));
-
- if (c == '-')
- 436a: 02d00793 li a5,45
- 436e: 0ef70863 beq a4,a5,445e <strtoull.part.0+0x11e>
- {
- neg = 1;
- c = *s++;
- }
- else if (c == '+')
- 4372: 02b00793 li a5,43
- int neg = 0, any, cutlim;
- 4376: 4381 li t2,0
- else if (c == '+')
- 4378: 08f70c63 beq a4,a5,4410 <strtoull.part.0+0xd0>
- {
- c = *s++;
- }
-
- if ((base == 0 || base == 16) && c == '0' && (*s == 'x' || *s == 'X'))
- 437c: ea05 bnez a2,43ac <strtoull.part.0+0x6c>
- 437e: 03000793 li a5,48
- 4382: 0ef70463 beq a4,a5,446a <strtoull.part.0+0x12a>
- 4386: 00ccd8b7 lui a7,0xccd
- 438a: ccd88893 addi a7,a7,-819 # cccccd <_ZSt4cerr+0xcc5355>
- 438e: 08b2 slli a7,a7,0xc
- 4390: ccd88893 addi a7,a7,-819
- 4394: 08b2 slli a7,a7,0xc
- 4396: ccd88893 addi a7,a7,-819
- 439a: 08b6 slli a7,a7,0xd
- 439c: 4415 li s0,5
- 439e: 99988893 addi a7,a7,-1639
- 43a2: 42a9 li t0,10
- c = s[1];
- s += 2;
- base = 16;
- }
- if (base == 0)
- base = (c == '0' ? 8 : 10);
- 43a4: 4629 li a2,10
- 43a6: a829 j 43c0 <strtoull.part.0+0x80>
-unsigned long long strtoull(const char *nptr, char **endptr, int base)
- 43a8: 88c2 mv a7,a6
- 43aa: b755 j 434e <strtoull.part.0+0xe>
- if ((base == 0 || base == 16) && c == '0' && (*s == 'x' || *s == 'X'))
- 43ac: 47c1 li a5,16
- 43ae: 0cf60d63 beq a2,a5,4488 <strtoull.part.0+0x148>
-
- cutoff = ULLONG_MAX / (unsigned long long)base;
- 43b2: 58fd li a7,-1
- cutlim = ULLONG_MAX % (unsigned long long)base;
- 43b4: 02c8f433 remu s0,a7,a2
- cutoff = ULLONG_MAX / (unsigned long long)base;
- 43b8: 82b2 mv t0,a2
- 43ba: 02c8d8b3 divu a7,a7,a2
- cutlim = ULLONG_MAX % (unsigned long long)base;
- 43be: 2401 sext.w s0,s0
-
- for (acc = 0, any = 0;; c = *s++)
- 43c0: 4301 li t1,0
- 43c2: 4501 li a0,0
- {
- if (isdigit(c))
- 43c4: 4e25 li t3,9
- static inline int isalpha(int c) { return islower(c) || isupper(c); }
- 43c6: 4fe5 li t6,25
- break;
-
- if (c >= base)
- break;
-
- if (any < 0 || acc > cutoff || (acc == cutoff && c > cutlim))
- 43c8: 5f7d li t5,-1
- if (isdigit(c))
- 43ca: fd07079b addiw a5,a4,-48
- static inline int isdigit(int c) { return c >= '0' && c <= '9'; }
- 43ce: 0007069b sext.w a3,a4
- 43d2: 00fe7e63 bgeu t3,a5,43ee <strtoull.part.0+0xae>
- static inline int isalpha(int c) { return islower(c) || isupper(c); }
- 43d6: f9f6879b addiw a5,a3,-97
- 43da: 04fff063 bgeu t6,a5,441a <strtoull.part.0+0xda>
- 43de: fbf6869b addiw a3,a3,-65
- 43e2: 04dfe163 bltu t6,a3,4424 <strtoull.part.0+0xe4>
- c -= isupper(c) ? 'A' - 10 : 'a' - 10;
- 43e6: 03700793 li a5,55
- 43ea: 40f707bb subw a5,a4,a5
- if (c >= base)
- 43ee: 02c7db63 bge a5,a2,4424 <strtoull.part.0+0xe4>
- if (any < 0 || acc > cutoff || (acc == cutoff && c > cutlim))
- 43f2: 01e30b63 beq t1,t5,4408 <strtoull.part.0+0xc8>
- any = -1;
- 43f6: 537d li t1,-1
- if (any < 0 || acc > cutoff || (acc == cutoff && c > cutlim))
- 43f8: 00a8e863 bltu a7,a0,4408 <strtoull.part.0+0xc8>
- 43fc: 05150e63 beq a0,a7,4458 <strtoull.part.0+0x118>
- else
- {
- any = 1;
- 4400: 4305 li t1,1
- acc *= base;
- 4402: 02550533 mul a0,a0,t0
- acc += c;
- 4406: 953e add a0,a0,a5
- for (acc = 0, any = 0;; c = *s++)
- 4408: 0805 addi a6,a6,1
- 440a: fff84703 lbu a4,-1(a6)
- if (isdigit(c))
- 440e: bf75 j 43ca <strtoull.part.0+0x8a>
- c = *s++;
- 4410: 00084703 lbu a4,0(a6)
- 4414: 00288813 addi a6,a7,2
- 4418: b795 j 437c <strtoull.part.0+0x3c>
- c -= isupper(c) ? 'A' - 10 : 'a' - 10;
- 441a: 05700793 li a5,87
- 441e: 40f707bb subw a5,a4,a5
- 4422: b7f1 j 43ee <strtoull.part.0+0xae>
- }
- }
-
- if (any < 0)
- 4424: 57fd li a5,-1
- 4426: 00f30e63 beq t1,a5,4442 <strtoull.part.0+0x102>
- {
- acc = ULLONG_MAX;
- errno = ERANGE;
- }
- else if (neg)
- 442a: 00038463 beqz t2,4432 <strtoull.part.0+0xf2>
- acc = -acc;
- 442e: 40a00533 neg a0,a0
-
- if (endptr != 0)
- 4432: c589 beqz a1,443c <strtoull.part.0+0xfc>
- *endptr = (char *)(any ? s - 1 : nptr);
- 4434: 00031f63 bnez t1,4452 <strtoull.part.0+0x112>
- 4438: 01d5b023 sd t4,0(a1)
-
- return acc;
-}
- 443c: 6422 ld s0,8(sp)
- 443e: 0141 addi sp,sp,16
- 4440: 8082 ret
- errno = ERANGE;
- 4442: 02200793 li a5,34
- 4446: 00003717 auipc a4,0x3
- 444a: 3ef72d23 sw a5,1018(a4) # 7840 <errno>
- acc = ULLONG_MAX;
- 444e: 557d li a0,-1
- if (endptr != 0)
- 4450: d5f5 beqz a1,443c <strtoull.part.0+0xfc>
- *endptr = (char *)(any ? s - 1 : nptr);
- 4452: fff80e93 addi t4,a6,-1
- 4456: b7cd j 4438 <strtoull.part.0+0xf8>
- if (any < 0 || acc > cutoff || (acc == cutoff && c > cutlim))
- 4458: faf448e3 blt s0,a5,4408 <strtoull.part.0+0xc8>
- 445c: b755 j 4400 <strtoull.part.0+0xc0>
- c = *s++;
- 445e: 00084703 lbu a4,0(a6)
- neg = 1;
- 4462: 4385 li t2,1
- c = *s++;
- 4464: 00288813 addi a6,a7,2
- 4468: bf11 j 437c <strtoull.part.0+0x3c>
- if ((base == 0 || base == 16) && c == '0' && (*s == 'x' || *s == 'X'))
- 446a: 00084783 lbu a5,0(a6)
- 446e: 05800693 li a3,88
- 4472: 0df7f793 andi a5,a5,223
- 4476: 02d78b63 beq a5,a3,44ac <strtoull.part.0+0x16c>
- 447a: 58fd li a7,-1
- 447c: 441d li s0,7
- 447e: 0038d893 srli a7,a7,0x3
- 4482: 42a1 li t0,8
- base = (c == '0' ? 8 : 10);
- 4484: 4621 li a2,8
- 4486: bf2d j 43c0 <strtoull.part.0+0x80>
- if ((base == 0 || base == 16) && c == '0' && (*s == 'x' || *s == 'X'))
- 4488: 03000793 li a5,48
- 448c: 00f70863 beq a4,a5,449c <strtoull.part.0+0x15c>
- 4490: 58fd li a7,-1
- 4492: 443d li s0,15
- 4494: 0048d893 srli a7,a7,0x4
- 4498: 42c1 li t0,16
- 449a: b71d j 43c0 <strtoull.part.0+0x80>
- 449c: 00084783 lbu a5,0(a6)
- 44a0: 05800693 li a3,88
- 44a4: 0df7f793 andi a5,a5,223
- 44a8: fed794e3 bne a5,a3,4490 <strtoull.part.0+0x150>
- s += 2;
- 44ac: 58fd li a7,-1
- c = s[1];
- 44ae: 00184703 lbu a4,1(a6)
- s += 2;
- 44b2: 443d li s0,15
- 44b4: 0809 addi a6,a6,2
- 44b6: 0048d893 srli a7,a7,0x4
- 44ba: 42c1 li t0,16
- base = 16;
- 44bc: 4641 li a2,16
- 44be: b709 j 43c0 <strtoull.part.0+0x80>
-
-00000000000044c0 <atexit>:
- if (__atexit_func_count >= ATEXIT_MAX)
- 44c0: 00003717 auipc a4,0x3
- 44c4: 38070713 addi a4,a4,896 # 7840 <errno>
- 44c8: 435c lw a5,4(a4)
- 44ca: 46fd li a3,31
- 44cc: 00f6ca63 blt a3,a5,44e0 <atexit+0x20>
- __atexit_funcs[__atexit_func_count++] = function;
- 44d0: 00379693 slli a3,a5,0x3
- 44d4: 96ba add a3,a3,a4
- 44d6: 2785 addiw a5,a5,1
- 44d8: e688 sd a0,8(a3)
- 44da: c35c sw a5,4(a4)
- return 0;
- 44dc: 4501 li a0,0
- 44de: 8082 ret
- return -1;
- 44e0: 557d li a0,-1
-}
- 44e2: 8082 ret
-
-00000000000044e4 <exit>:
-{
- 44e4: 1101 addi sp,sp,-32
- 44e6: e822 sd s0,16(sp)
- while (__atexit_func_count > 0)
- 44e8: 00003417 auipc s0,0x3
- 44ec: 35840413 addi s0,s0,856 # 7840 <errno>
- 44f0: 405c lw a5,4(s0)
-{
- 44f2: e426 sd s1,8(sp)
- 44f4: ec06 sd ra,24(sp)
- 44f6: 84aa mv s1,a0
- while (__atexit_func_count > 0)
- 44f8: 00f05d63 blez a5,4512 <exit+0x2e>
- (__atexit_funcs[--__atexit_func_count])();
- 44fc: fff7871b addiw a4,a5,-1
- 4500: 87ba mv a5,a4
- 4502: 070e slli a4,a4,0x3
- 4504: 9722 add a4,a4,s0
- 4506: 6718 ld a4,8(a4)
- 4508: c05c sw a5,4(s0)
- 450a: 9702 jalr a4
- while (__atexit_func_count > 0)
- 450c: 405c lw a5,4(s0)
- 450e: fef047e3 bgtz a5,44fc <exit+0x18>
- sys_exit(status);
- 4512: 8526 mv a0,s1
- 4514: c8bfb0ef jal 19e <sys_exit>
- while (1)
- 4518: a001 j 4518 <exit+0x34>
-
-000000000000451a <abort>:
-{
- 451a: 1141 addi sp,sp,-16
- exit(127);
- 451c: 07f00513 li a0,127
-{
- 4520: e406 sd ra,8(sp)
- exit(127);
- 4522: fc3ff0ef jal 44e4 <exit>
-
-0000000000004526 <getenv>:
-}
- 4526: 4501 li a0,0
- 4528: 8082 ret
-
-000000000000452a <system>:
-}
- 452a: 557d li a0,-1
- 452c: 8082 ret
-
-000000000000452e <free>:
- if (!ptr)
- 452e: c121 beqz a0,456e <free+0x40>
- for (p = freep; !(bp > p && bp < p->next); p = p->next)
- 4530: 00003617 auipc a2,0x3
- 4534: 31060613 addi a2,a2,784 # 7840 <errno>
- 4538: 10863783 ld a5,264(a2)
- bp = (header_t *)ptr - 1;
- 453c: ff050693 addi a3,a0,-16
- if (p >= p->next && (bp > p || bp < p->next))
- 4540: 6798 ld a4,8(a5)
- for (p = freep; !(bp > p && bp < p->next); p = p->next)
- 4542: 02d7f763 bgeu a5,a3,4570 <free+0x42>
- 4546: 00e6e463 bltu a3,a4,454e <free+0x20>
- if (p >= p->next && (bp > p || bp < p->next))
- 454a: 02e7e763 bltu a5,a4,4578 <free+0x4a>
- if ((char *)bp + bp->size == (char *)p->next)
- 454e: ff053583 ld a1,-16(a0)
- 4552: 00b68833 add a6,a3,a1
- 4556: 03070363 beq a4,a6,457c <free+0x4e>
- if ((char *)p + p->size == (char *)bp)
- 455a: 638c ld a1,0(a5)
- 455c: fee53c23 sd a4,-8(a0)
- 4560: 00b78833 add a6,a5,a1
- 4564: 03068963 beq a3,a6,4596 <free+0x68>
- 4568: e794 sd a3,8(a5)
- freep = p;
- 456a: 10f63423 sd a5,264(a2)
-}
- 456e: 8082 ret
- if (p >= p->next && (bp > p || bp < p->next))
- 4570: 00e7e463 bltu a5,a4,4578 <free+0x4a>
- 4574: fce6ede3 bltu a3,a4,454e <free+0x20>
-{
- 4578: 87ba mv a5,a4
- 457a: b7d9 j 4540 <free+0x12>
- bp->size += p->next->size;
- 457c: 00073803 ld a6,0(a4)
- bp->next = p->next->next;
- 4580: 6718 ld a4,8(a4)
- bp->size += p->next->size;
- 4582: 95c2 add a1,a1,a6
- 4584: feb53823 sd a1,-16(a0)
- if ((char *)p + p->size == (char *)bp)
- 4588: 638c ld a1,0(a5)
- 458a: fee53c23 sd a4,-8(a0)
- 458e: 00b78833 add a6,a5,a1
- 4592: fd069be3 bne a3,a6,4568 <free+0x3a>
- p->size += bp->size;
- 4596: ff053503 ld a0,-16(a0)
- p->next = bp->next;
- 459a: 86ba mv a3,a4
- p->size += bp->size;
- 459c: 00b50733 add a4,a0,a1
- 45a0: e398 sd a4,0(a5)
- p->next = bp->next;
- 45a2: b7d9 j 4568 <free+0x3a>
-
-00000000000045a4 <malloc>:
- if (size == 0)
- 45a4: c169 beqz a0,4666 <malloc+0xc2>
-{
- 45a6: 7179 addi sp,sp,-48
- 45a8: ec26 sd s1,24(sp)
- if ((prevp = freep) == NULL)
- 45aa: 00003497 auipc s1,0x3
- 45ae: 29648493 addi s1,s1,662 # 7840 <errno>
- 45b2: 1084b783 ld a5,264(s1)
-{
- 45b6: f022 sd s0,32(sp)
- size = ALIGN(size + sizeof(header_t));
- 45b8: 057d addi a0,a0,31
-{
- 45ba: f406 sd ra,40(sp)
- size = ALIGN(size + sizeof(header_t));
- 45bc: ff057413 andi s0,a0,-16
- if ((prevp = freep) == NULL)
- 45c0: c3d1 beqz a5,4644 <malloc+0xa0>
- for (p = prevp->next;; prevp = p, p = p->next)
- 45c2: 6788 ld a0,8(a5)
- if (p->size >= size)
- 45c4: 6118 ld a4,0(a0)
- 45c6: 06877163 bgeu a4,s0,4628 <malloc+0x84>
- 45ca: e44e sd s3,8(sp)
- 45cc: e052 sd s4,0(sp)
- 45ce: e84a sd s2,16(sp)
- if (nu < 4096)
- 45d0: 6a05 lui s4,0x1
- if (cp == (void *)-1)
- 45d2: 59fd li s3,-1
- 45d4: a029 j 45de <malloc+0x3a>
- for (p = prevp->next;; prevp = p, p = p->next)
- 45d6: 6788 ld a0,8(a5)
- if (p->size >= size)
- 45d8: 6118 ld a4,0(a0)
- 45da: 04877463 bgeu a4,s0,4622 <malloc+0x7e>
- if (p == freep)
- 45de: 1084b703 ld a4,264(s1)
- 45e2: 87aa mv a5,a0
- 45e4: fee519e3 bne a0,a4,45d6 <malloc+0x32>
- if (nu < 4096)
- 45e8: 8922 mv s2,s0
- 45ea: 01447363 bgeu s0,s4,45f0 <malloc+0x4c>
- 45ee: 6905 lui s2,0x1
- cp = (char *)sbrk(nu);
- 45f0: 854a mv a0,s2
- 45f2: c3dfb0ef jal 22e <sbrk>
- 45f6: 87aa mv a5,a0
- free((void *)(up + 1));
- 45f8: 0541 addi a0,a0,16
- if (cp == (void *)-1)
- 45fa: 01378963 beq a5,s3,460c <malloc+0x68>
- up->size = nu;
- 45fe: 0127b023 sd s2,0(a5)
- free((void *)(up + 1));
- 4602: f2dff0ef jal 452e <free>
- return freep;
- 4606: 1084b783 ld a5,264(s1)
- if ((p = morecore(size)) == NULL)
- 460a: f7f1 bnez a5,45d6 <malloc+0x32>
-}
- 460c: 70a2 ld ra,40(sp)
- 460e: 7402 ld s0,32(sp)
- errno = ENOMEM;
- 4610: 47b1 li a5,12
- 4612: c09c sw a5,0(s1)
- return NULL;
- 4614: 6942 ld s2,16(sp)
- 4616: 69a2 ld s3,8(sp)
- 4618: 6a02 ld s4,0(sp)
-}
- 461a: 64e2 ld s1,24(sp)
- return NULL;
- 461c: 4501 li a0,0
-}
- 461e: 6145 addi sp,sp,48
- 4620: 8082 ret
- 4622: 6942 ld s2,16(sp)
- 4624: 69a2 ld s3,8(sp)
- 4626: 6a02 ld s4,0(sp)
- if (p->size == size)
- 4628: 02e40c63 beq s0,a4,4660 <malloc+0xbc>
- p->size -= size;
- 462c: 8f01 sub a4,a4,s0
- 462e: e118 sd a4,0(a0)
- p = (header_t *)((char *)p + p->size);
- 4630: 953a add a0,a0,a4
- p->size = size;
- 4632: e100 sd s0,0(a0)
-}
- 4634: 70a2 ld ra,40(sp)
- 4636: 7402 ld s0,32(sp)
- freep = prevp;
- 4638: 10f4b423 sd a5,264(s1)
- return (void *)(p + 1);
- 463c: 0541 addi a0,a0,16
-}
- 463e: 64e2 ld s1,24(sp)
- 4640: 6145 addi sp,sp,48
- 4642: 8082 ret
- base.next = freep = prevp = &base;
- 4644: 00003517 auipc a0,0x3
- 4648: 30c50513 addi a0,a0,780 # 7950 <base>
- 464c: 10a4b423 sd a0,264(s1)
- 4650: 10a4bc23 sd a0,280(s1)
- base.size = 0;
- 4654: 00003797 auipc a5,0x3
- 4658: 2e07be23 sd zero,764(a5) # 7950 <base>
- if (p->size >= size)
- 465c: f43d bnez s0,45ca <malloc+0x26>
- base.next = freep = prevp = &base;
- 465e: 87aa mv a5,a0
- prevp->next = p->next;
- 4660: 6518 ld a4,8(a0)
- 4662: e798 sd a4,8(a5)
- 4664: bfc1 j 4634 <malloc+0x90>
- return NULL;
- 4666: 4501 li a0,0
-}
- 4668: 8082 ret
-
-000000000000466a <calloc>:
- if (__builtin_mul_overflow(nmemb, size, &total))
- 466a: 02b537b3 mulhu a5,a0,a1
-{
- 466e: 1101 addi sp,sp,-32
- 4670: e822 sd s0,16(sp)
- 4672: ec06 sd ra,24(sp)
- 4674: e426 sd s1,8(sp)
- if (__builtin_mul_overflow(nmemb, size, &total))
- 4676: 02b50433 mul s0,a0,a1
- 467a: e385 bnez a5,469a <calloc+0x30>
- void *p = malloc(total);
- 467c: 8522 mv a0,s0
- 467e: f27ff0ef jal 45a4 <malloc>
- 4682: 84aa mv s1,a0
- if (p)
- 4684: c509 beqz a0,468e <calloc+0x24>
- memset(p, 0, total);
- 4686: 8622 mv a2,s0
- 4688: 4581 li a1,0
- 468a: 524000ef jal 4bae <memset>
-}
- 468e: 60e2 ld ra,24(sp)
- 4690: 6442 ld s0,16(sp)
- 4692: 8526 mv a0,s1
- 4694: 64a2 ld s1,8(sp)
- 4696: 6105 addi sp,sp,32
- 4698: 8082 ret
- 469a: 60e2 ld ra,24(sp)
- 469c: 6442 ld s0,16(sp)
- errno = ENOMEM;
- 469e: 47b1 li a5,12
- return NULL;
- 46a0: 4481 li s1,0
- errno = ENOMEM;
- 46a2: 00003717 auipc a4,0x3
- 46a6: 18f72f23 sw a5,414(a4) # 7840 <errno>
-}
- 46aa: 8526 mv a0,s1
- 46ac: 64a2 ld s1,8(sp)
- 46ae: 6105 addi sp,sp,32
- 46b0: 8082 ret
-
-00000000000046b2 <realloc>:
- if (!ptr)
- 46b2: c929 beqz a0,4704 <realloc+0x52>
-{
- 46b4: 1101 addi sp,sp,-32
- 46b6: ec06 sd ra,24(sp)
- 46b8: e426 sd s1,8(sp)
- if (size == 0)
- 46ba: c5b9 beqz a1,4708 <realloc+0x56>
- if (bp->size >= new_size)
- 46bc: ff053703 ld a4,-16(a0)
- size_t new_size = ALIGN(size + sizeof(header_t));
- 46c0: 01f58793 addi a5,a1,31
- 46c4: e822 sd s0,16(sp)
- 46c6: 9bc1 andi a5,a5,-16
- 46c8: 842a mv s0,a0
- return ptr;
- 46ca: 84aa mv s1,a0
- if (bp->size >= new_size)
- 46cc: 00f76863 bltu a4,a5,46dc <realloc+0x2a>
- 46d0: 6442 ld s0,16(sp)
-}
- 46d2: 60e2 ld ra,24(sp)
- 46d4: 8526 mv a0,s1
- 46d6: 64a2 ld s1,8(sp)
- 46d8: 6105 addi sp,sp,32
- 46da: 8082 ret
- void *new_ptr = malloc(size);
- 46dc: 852e mv a0,a1
- 46de: ec7ff0ef jal 45a4 <malloc>
- 46e2: 84aa mv s1,a0
- if (!new_ptr)
- 46e4: d575 beqz a0,46d0 <realloc+0x1e>
- memcpy(new_ptr, ptr, bp->size - sizeof(header_t));
- 46e6: ff043603 ld a2,-16(s0)
- 46ea: 85a2 mv a1,s0
- 46ec: 1641 addi a2,a2,-16
- 46ee: 514000ef jal 4c02 <memcpy>
- free(ptr);
- 46f2: 8522 mv a0,s0
- 46f4: e3bff0ef jal 452e <free>
-}
- 46f8: 60e2 ld ra,24(sp)
- free(ptr);
- 46fa: 6442 ld s0,16(sp)
-}
- 46fc: 8526 mv a0,s1
- 46fe: 64a2 ld s1,8(sp)
- 4700: 6105 addi sp,sp,32
- 4702: 8082 ret
- return malloc(size);
- 4704: 852e mv a0,a1
- 4706: bd79 j 45a4 <malloc>
- free(ptr);
- 4708: e27ff0ef jal 452e <free>
- return NULL;
- 470c: 4481 li s1,0
- 470e: b7d1 j 46d2 <realloc+0x20>
-
-0000000000004710 <strtoull>:
- if (base < 0 || base == 1 || base > 36)
- 4710: 02400813 li a6,36
-{
- 4714: 86aa mv a3,a0
- 4716: 872e mv a4,a1
- if (base < 0 || base == 1 || base > 36)
- 4718: 00c86663 bltu a6,a2,4724 <strtoull+0x14>
- 471c: 4805 li a6,1
- 471e: 01060363 beq a2,a6,4724 <strtoull+0x14>
- 4722: b939 j 4340 <strtoull.part.0>
- if (endptr)
- 4724: c311 beqz a4,4728 <strtoull+0x18>
- *endptr = (char *)nptr;
- 4726: e314 sd a3,0(a4)
- errno = 0; /* EINVAL */
- 4728: 00003797 auipc a5,0x3
- 472c: 1007ac23 sw zero,280(a5) # 7840 <errno>
-}
- 4730: 4501 li a0,0
- 4732: 8082 ret
-
-0000000000004734 <strtoll>:
-
-long long strtoll(const char *nptr, char **endptr, int base)
-{
- 4734: 1141 addi sp,sp,-16
- 4736: e406 sd ra,8(sp)
- 4738: e022 sd s0,0(sp)
- const char *s = nptr;
- 473a: 86aa mv a3,a0
- static inline int isspace(int c) { return c == ' ' || c == '\t' || c == '\n' || c == '\v' || c == '\f' || c == '\r'; }
- 473c: 02000813 li a6,32
- 4740: 4891 li a7,4
- unsigned long long acc;
- int c, neg = 0;
-
- do
- {
- c = *s++;
- 4742: 0006c783 lbu a5,0(a3)
- 4746: 0685 addi a3,a3,1
- 4748: ff77871b addiw a4,a5,-9
- 474c: 0ff77713 zext.b a4,a4
- 4750: 0007841b sext.w s0,a5
- 4754: ff0787e3 beq a5,a6,4742 <strtoll+0xe>
- 4758: fee8f5e3 bgeu a7,a4,4742 <strtoll+0xe>
- if (base < 0 || base == 1 || base > 36)
- 475c: 02400793 li a5,36
- 4760: 02c7ec63 bltu a5,a2,4798 <strtoll+0x64>
- 4764: 4785 li a5,1
- 4766: 02f60963 beq a2,a5,4798 <strtoll+0x64>
- 476a: bd7ff0ef jal 4340 <strtoull.part.0>
- if (c == '-')
- neg = 1;
-
- acc = strtoull(nptr, endptr, base);
-
- if (errno == ERANGE && acc == ULLONG_MAX)
- 476e: 00003797 auipc a5,0x3
- 4772: 0d278793 addi a5,a5,210 # 7840 <errno>
- 4776: 4394 lw a3,0(a5)
- 4778: 02200713 li a4,34
- 477c: 04e68363 beq a3,a4,47c2 <strtoll+0x8e>
- return neg ? LLONG_MIN : LLONG_MAX;
-
- if (!neg && acc > (unsigned long long)LLONG_MAX)
- 4780: 02d00713 li a4,45
- 4784: 02e40563 beq s0,a4,47ae <strtoll+0x7a>
- 4788: 00055f63 bgez a0,47a6 <strtoll+0x72>
- {
- errno = ERANGE;
- 478c: 02200713 li a4,34
- 4790: c398 sw a4,0(a5)
- return neg ? LLONG_MIN : LLONG_MAX;
- 4792: 557d li a0,-1
- 4794: 8105 srli a0,a0,0x1
- 4796: a801 j 47a6 <strtoll+0x72>
- if (endptr)
- 4798: c191 beqz a1,479c <strtoll+0x68>
- *endptr = (char *)nptr;
- 479a: e188 sd a0,0(a1)
- errno = 0; /* EINVAL */
- 479c: 00003797 auipc a5,0x3
- 47a0: 0a07a223 sw zero,164(a5) # 7840 <errno>
- {
- errno = ERANGE;
- return LLONG_MIN;
- }
-
- return neg ? -(long long)acc : (long long)acc;
- 47a4: 4501 li a0,0
-}
- 47a6: 60a2 ld ra,8(sp)
- 47a8: 6402 ld s0,0(sp)
- 47aa: 0141 addi sp,sp,16
- 47ac: 8082 ret
- if (neg && acc > (unsigned long long)LLONG_MAX + 1)
- 47ae: 577d li a4,-1
- 47b0: 177e slli a4,a4,0x3f
- 47b2: 02a76263 bltu a4,a0,47d6 <strtoll+0xa2>
-}
- 47b6: 60a2 ld ra,8(sp)
- 47b8: 6402 ld s0,0(sp)
- return neg ? -(long long)acc : (long long)acc;
- 47ba: 40a00533 neg a0,a0
-}
- 47be: 0141 addi sp,sp,16
- 47c0: 8082 ret
- if (errno == ERANGE && acc == ULLONG_MAX)
- 47c2: 577d li a4,-1
- 47c4: fae51ee3 bne a0,a4,4780 <strtoll+0x4c>
- return neg ? LLONG_MIN : LLONG_MAX;
- 47c8: 02d00793 li a5,45
- 47cc: fcf413e3 bne s0,a5,4792 <strtoll+0x5e>
- return LLONG_MIN;
- 47d0: 557d li a0,-1
- 47d2: 157e slli a0,a0,0x3f
- 47d4: bfc9 j 47a6 <strtoll+0x72>
- errno = ERANGE;
- 47d6: 02200713 li a4,34
- 47da: c398 sw a4,0(a5)
- return LLONG_MIN;
- 47dc: bfd5 j 47d0 <strtoll+0x9c>
-
-00000000000047de <strtoul>:
- if (base < 0 || base == 1 || base > 36)
- 47de: 02400813 li a6,36
-
-unsigned long strtoul(const char *nptr, char **endptr, int base)
-{
- 47e2: 86aa mv a3,a0
- 47e4: 872e mv a4,a1
- if (base < 0 || base == 1 || base > 36)
- 47e6: 00c86663 bltu a6,a2,47f2 <strtoul+0x14>
- 47ea: 4805 li a6,1
- 47ec: 01060363 beq a2,a6,47f2 <strtoul+0x14>
- 47f0: be81 j 4340 <strtoull.part.0>
- if (endptr)
- 47f2: c311 beqz a4,47f6 <strtoul+0x18>
- *endptr = (char *)nptr;
- 47f4: e314 sd a3,0(a4)
- errno = 0; /* EINVAL */
- 47f6: 00003797 auipc a5,0x3
- 47fa: 0407a523 sw zero,74(a5) # 7840 <errno>
- {
- errno = ERANGE;
- return ULONG_MAX;
- }
- return (unsigned long)ret;
-}
- 47fe: 4501 li a0,0
- 4800: 8082 ret
-
-0000000000004802 <strtol>:
-
-long strtol(const char *nptr, char **endptr, int base)
-{
- long long ret = strtoll(nptr, endptr, base);
- 4802: bf0d j 4734 <strtoll>
-
-0000000000004804 <atoi>:
- return LONG_MIN;
- }
- return (long)ret;
-}
-
-int atoi(const char *nptr) { return (int)strtol(nptr, NULL, 10); }
- 4804: 1141 addi sp,sp,-16
- long long ret = strtoll(nptr, endptr, base);
- 4806: 4629 li a2,10
- 4808: 4581 li a1,0
-int atoi(const char *nptr) { return (int)strtol(nptr, NULL, 10); }
- 480a: e406 sd ra,8(sp)
- long long ret = strtoll(nptr, endptr, base);
- 480c: f29ff0ef jal 4734 <strtoll>
-int atoi(const char *nptr) { return (int)strtol(nptr, NULL, 10); }
- 4810: 60a2 ld ra,8(sp)
- 4812: 2501 sext.w a0,a0
- 4814: 0141 addi sp,sp,16
- 4816: 8082 ret
-
-0000000000004818 <atol>:
- long long ret = strtoll(nptr, endptr, base);
- 4818: 4629 li a2,10
- 481a: 4581 li a1,0
- 481c: bf21 j 4734 <strtoll>
-
-000000000000481e <atoll>:
-long atol(const char *nptr) { return strtol(nptr, NULL, 10); }
-long long atoll(const char *nptr) { return strtoll(nptr, NULL, 10); }
- 481e: 4629 li a2,10
- 4820: 4581 li a1,0
- 4822: bf09 j 4734 <strtoll>
-
-0000000000004824 <strtod>:
- 4824: 02000693 li a3,32
- 4828: 4611 li a2,4
-{
- double val = 0.0;
- int sign = 1;
- const char *s = nptr;
-
- while (isspace(*s))
- 482a: 00054783 lbu a5,0(a0)
- 482e: ff77871b addiw a4,a5,-9
- 4832: 0ff77713 zext.b a4,a4
- 4836: 06d78263 beq a5,a3,489a <strtod+0x76>
- 483a: 06e67063 bgeu a2,a4,489a <strtod+0x76>
- s++;
- if (*s == '-')
- 483e: 02d00713 li a4,45
- 4842: 08e78e63 beq a5,a4,48de <strtod+0xba>
- {
- sign = -1;
- s++;
- }
- else if (*s == '+')
- 4846: 02b00713 li a4,43
- 484a: 0ae78263 beq a5,a4,48ee <strtod+0xca>
- 484e: 00001717 auipc a4,0x1
- 4852: 0a273507 fld fa0,162(a4) # 58f0 <STDIN_FD+0x10>
- static inline int isdigit(int c) { return c >= '0' && c <= '9'; }
- 4856: fd07861b addiw a2,a5,-48
- s++;
-
- while (isdigit(*s))
- 485a: 46a5 li a3,9
- 485c: f20007d3 fmv.d.x fa5,zero
- 4860: 8732 mv a4,a2
- 4862: 02c6e363 bltu a3,a2,4888 <strtod+0x64>
- 4866: 00001797 auipc a5,0x1
- 486a: 0927b687 fld fa3,146(a5) # 58f8 <STDIN_FD+0x18>
- 486e: 4625 li a2,9
- 4870: 00154783 lbu a5,1(a0)
- {
- val = val * 10.0 + (*s - '0');
- 4874: d2070753 fcvt.d.w fa4,a4
- s++;
- 4878: 0505 addi a0,a0,1
- 487a: fd07869b addiw a3,a5,-48
- val = val * 10.0 + (*s - '0');
- 487e: 72d7f7c3 fmadd.d fa5,fa5,fa3,fa4
- 4882: 8736 mv a4,a3
- while (isdigit(*s))
- 4884: fed676e3 bgeu a2,a3,4870 <strtod+0x4c>
- }
- if (*s == '.')
- 4888: 02e00713 li a4,46
- 488c: 00e78963 beq a5,a4,489e <strtod+0x7a>
- val += (*s - '0') * factor;
- s++;
- }
- }
-
- if (endptr)
- 4890: c191 beqz a1,4894 <strtod+0x70>
- *endptr = (char *)s;
- 4892: e188 sd a0,0(a1)
- return val * sign;
-}
- 4894: 12a7f553 fmul.d fa0,fa5,fa0
- 4898: 8082 ret
- s++;
- 489a: 0505 addi a0,a0,1
- 489c: b779 j 482a <strtod+0x6>
- while (isdigit(*s))
- 489e: 00154703 lbu a4,1(a0)
- 48a2: 46a5 li a3,9
- s++;
- 48a4: 0505 addi a0,a0,1
- 48a6: fd07071b addiw a4,a4,-48
- 48aa: 87ba mv a5,a4
- while (isdigit(*s))
- 48ac: fee6e2e3 bltu a3,a4,4890 <strtod+0x6c>
- double factor = 1.0;
- 48b0: 00001717 auipc a4,0x1
- 48b4: 04073707 fld fa4,64(a4) # 58f0 <STDIN_FD+0x10>
- 48b8: 00001717 auipc a4,0x1
- 48bc: 05873607 fld fa2,88(a4) # 5910 <STDIN_FD+0x30>
- factor *= 0.1;
- 48c0: 12c77753 fmul.d fa4,fa4,fa2
- while (isdigit(*s))
- 48c4: 00154703 lbu a4,1(a0)
- val += (*s - '0') * factor;
- 48c8: d20786d3 fcvt.d.w fa3,a5
- s++;
- 48cc: 0505 addi a0,a0,1
- 48ce: fd07071b addiw a4,a4,-48
- 48d2: 87ba mv a5,a4
- val += (*s - '0') * factor;
- 48d4: 7ae6f7c3 fmadd.d fa5,fa3,fa4,fa5
- while (isdigit(*s))
- 48d8: fee6f4e3 bgeu a3,a4,48c0 <strtod+0x9c>
- 48dc: bf55 j 4890 <strtod+0x6c>
- while (isdigit(*s))
- 48de: 00154783 lbu a5,1(a0)
- 48e2: 00001717 auipc a4,0x1
- 48e6: 00673507 fld fa0,6(a4) # 58e8 <STDIN_FD+0x8>
- s++;
- 48ea: 0505 addi a0,a0,1
- 48ec: b7ad j 4856 <strtod+0x32>
- while (isdigit(*s))
- 48ee: 00154783 lbu a5,1(a0)
- 48f2: 00001717 auipc a4,0x1
- 48f6: ffe73507 fld fa0,-2(a4) # 58f0 <STDIN_FD+0x10>
- s++;
- 48fa: 0505 addi a0,a0,1
- 48fc: bfa9 j 4856 <strtod+0x32>
-
-00000000000048fe <atof>:
-
-double atof(const char *nptr) { return strtod(nptr, NULL); }
- 48fe: 4581 li a1,0
- 4900: b715 j 4824 <strtod>
-
-0000000000004902 <strtof>:
-float strtof(const char *nptr, char **endptr) { return (float)strtod(nptr, endptr); }
- 4902: 1141 addi sp,sp,-16
- 4904: e406 sd ra,8(sp)
- 4906: f1fff0ef jal 4824 <strtod>
- 490a: 60a2 ld ra,8(sp)
- 490c: 40157553 fcvt.s.d fa0,fa0
- 4910: 0141 addi sp,sp,16
- 4912: 8082 ret
-
-0000000000004914 <qsort>:
- }
-}
-
-void qsort(void *base, size_t nmemb, size_t size, int (*compar)(const void *, const void *))
-{
- if (nmemb < 2 || size == 0)
- 4914: 4785 li a5,1
- 4916: 0cb7fd63 bgeu a5,a1,49f0 <qsort+0xdc>
-{
- 491a: 715d addi sp,sp,-80
- 491c: f44e sd s3,40(sp)
- 491e: e486 sd ra,72(sp)
- 4920: 89b2 mv s3,a2
- if (nmemb < 2 || size == 0)
- 4922: c279 beqz a2,49e8 <qsort+0xd4>
- 4924: e85a sd s6,16(sp)
- 4926: 8b2e mv s6,a1
- return;
-
- char *base_ptr = (char *)base;
- char *pivot = base_ptr + (nmemb - 1) * size;
- 4928: 1b7d addi s6,s6,-1
- 492a: fc26 sd s1,56(sp)
- 492c: 033b04b3 mul s1,s6,s3
- 4930: ec56 sd s5,24(sp)
- 4932: 8aaa mv s5,a0
- 4934: f052 sd s4,32(sp)
- 4936: e45e sd s7,8(sp)
- 4938: e0a2 sd s0,64(sp)
- 493a: f84a sd s2,48(sp)
- 493c: 8a36 mv s4,a3
- if (nmemb < 2 || size == 0)
- 493e: 4b85 li s7,1
- char *pivot = base_ptr + (nmemb - 1) * size;
- 4940: 94d6 add s1,s1,s5
- char *i = base_ptr;
- char *j = base_ptr;
-
- /* Partition */
- for (; j < pivot; j += size)
- 4942: 069af763 bgeu s5,s1,49b0 <qsort+0x9c>
- char *j = base_ptr;
- 4946: 8956 mv s2,s5
- char *i = base_ptr;
- 4948: 8456 mv s0,s5
- 494a: a021 j 4952 <qsort+0x3e>
- for (; j < pivot; j += size)
- 494c: 994e add s2,s2,s3
- 494e: 00997f63 bgeu s2,s1,496c <qsort+0x58>
- {
- if (compar(j, pivot) < 0)
- 4952: 85a6 mv a1,s1
- 4954: 854a mv a0,s2
- 4956: 9a02 jalr s4
- 4958: fe055ae3 bgez a0,494c <qsort+0x38>
- {
- if (i != j)
- 495c: 05241d63 bne s0,s2,49b6 <qsort+0xa2>
- 4960: 01390633 add a2,s2,s3
- swap_bytes(i, j, size);
- i += size;
- 4964: 8432 mv s0,a2
- for (; j < pivot; j += size)
- 4966: 994e add s2,s2,s3
- 4968: fe9965e3 bltu s2,s1,4952 <qsort+0x3e>
- }
- }
- swap_bytes(i, pivot, size);
-
- /* Recurse */
- size_t left_count = (i - base_ptr) / size;
- 496c: 415405b3 sub a1,s0,s5
- 4970: 0335d5b3 divu a1,a1,s3
- qsort(base, left_count, size, compar);
- qsort(i + size, nmemb - left_count - 1, size, compar);
- 4974: 40bb0b33 sub s6,s6,a1
- while (size--)
- 4978: 013406b3 add a3,s0,s3
- *a++ = *b;
- 497c: 0004c703 lbu a4,0(s1)
- temp = *a;
- 4980: 00044783 lbu a5,0(s0)
- *b++ = temp;
- 4984: 0485 addi s1,s1,1
- *a++ = *b;
- 4986: 0405 addi s0,s0,1
- 4988: fee40fa3 sb a4,-1(s0)
- *b++ = temp;
- 498c: fef48fa3 sb a5,-1(s1)
- while (size--)
- 4990: fed416e3 bne s0,a3,497c <qsort+0x68>
- qsort(base, left_count, size, compar);
- 4994: 86d2 mv a3,s4
- 4996: 864e mv a2,s3
- 4998: 8556 mv a0,s5
- 499a: f7bff0ef jal 4914 <qsort>
- if (nmemb < 2 || size == 0)
- 499e: 036bfe63 bgeu s7,s6,49da <qsort+0xc6>
- char *pivot = base_ptr + (nmemb - 1) * size;
- 49a2: 1b7d addi s6,s6,-1
- 49a4: 033b04b3 mul s1,s6,s3
- 49a8: 8aa2 mv s5,s0
- 49aa: 94d6 add s1,s1,s5
- for (; j < pivot; j += size)
- 49ac: f89aede3 bltu s5,s1,4946 <qsort+0x32>
- char *i = base_ptr;
- 49b0: 8456 mv s0,s5
- for (; j < pivot; j += size)
- 49b2: 4581 li a1,0
- 49b4: b7d1 j 4978 <qsort+0x64>
- 49b6: 01340633 add a2,s0,s3
- if (i != j)
- 49ba: 874a mv a4,s2
- 49bc: 87a2 mv a5,s0
- *a++ = *b;
- 49be: 00074683 lbu a3,0(a4)
- temp = *a;
- 49c2: 0007c803 lbu a6,0(a5)
- *b++ = temp;
- 49c6: 0705 addi a4,a4,1
- *a++ = *b;
- 49c8: 0785 addi a5,a5,1
- 49ca: fed78fa3 sb a3,-1(a5)
- *b++ = temp;
- 49ce: ff070fa3 sb a6,-1(a4)
- while (size--)
- 49d2: fec796e3 bne a5,a2,49be <qsort+0xaa>
- i += size;
- 49d6: 8432 mv s0,a2
- 49d8: b779 j 4966 <qsort+0x52>
- 49da: 6406 ld s0,64(sp)
- 49dc: 74e2 ld s1,56(sp)
- 49de: 7942 ld s2,48(sp)
- 49e0: 7a02 ld s4,32(sp)
- 49e2: 6ae2 ld s5,24(sp)
- 49e4: 6b42 ld s6,16(sp)
- 49e6: 6ba2 ld s7,8(sp)
-}
- 49e8: 60a6 ld ra,72(sp)
- 49ea: 79a2 ld s3,40(sp)
- 49ec: 6161 addi sp,sp,80
- 49ee: 8082 ret
- 49f0: 8082 ret
-
-00000000000049f2 <bsearch>:
-
-void *bsearch(const void *key, const void *base, size_t nmemb, size_t size, int (*compar)(const void *, const void *))
-{
- 49f2: 715d addi sp,sp,-80
- 49f4: e486 sd ra,72(sp)
- 49f6: fc26 sd s1,56(sp)
- size_t l = 0, u = nmemb;
- while (l < u)
- 49f8: c629 beqz a2,4a42 <bsearch+0x50>
- 49fa: f84a sd s2,48(sp)
- 49fc: f44e sd s3,40(sp)
- 49fe: f052 sd s4,32(sp)
- 4a00: ec56 sd s5,24(sp)
- 4a02: e85a sd s6,16(sp)
- 4a04: e45e sd s7,8(sp)
- 4a06: e0a2 sd s0,64(sp)
- 4a08: 8932 mv s2,a2
- 4a0a: 8a2a mv s4,a0
- 4a0c: 8aae mv s5,a1
- 4a0e: 8b36 mv s6,a3
- 4a10: 8bba mv s7,a4
- size_t l = 0, u = nmemb;
- 4a12: 4981 li s3,0
- {
- size_t idx = (l + u) / 2;
- 4a14: 01298433 add s0,s3,s2
- 4a18: 8005 srli s0,s0,0x1
- const void *p = (void *)((const char *)base + (idx * size));
- 4a1a: 036404b3 mul s1,s0,s6
- int cmp = compar(key, p);
- 4a1e: 8552 mv a0,s4
- const void *p = (void *)((const char *)base + (idx * size));
- 4a20: 94d6 add s1,s1,s5
- int cmp = compar(key, p);
- 4a22: 85a6 mv a1,s1
- 4a24: 9b82 jalr s7
- if (cmp < 0)
- 4a26: 02054463 bltz a0,4a4e <bsearch+0x5c>
- u = idx;
- else if (cmp > 0)
- 4a2a: c515 beqz a0,4a56 <bsearch+0x64>
- l = idx + 1;
- 4a2c: 00140993 addi s3,s0,1
- while (l < u)
- 4a30: ff29e2e3 bltu s3,s2,4a14 <bsearch+0x22>
- 4a34: 6406 ld s0,64(sp)
- 4a36: 7942 ld s2,48(sp)
- 4a38: 79a2 ld s3,40(sp)
- 4a3a: 7a02 ld s4,32(sp)
- 4a3c: 6ae2 ld s5,24(sp)
- 4a3e: 6b42 ld s6,16(sp)
- 4a40: 6ba2 ld s7,8(sp)
- else
- return (void *)p;
- }
- return NULL;
-}
- 4a42: 60a6 ld ra,72(sp)
- return NULL;
- 4a44: 4481 li s1,0
-}
- 4a46: 8526 mv a0,s1
- 4a48: 74e2 ld s1,56(sp)
- 4a4a: 6161 addi sp,sp,80
- 4a4c: 8082 ret
- u = idx;
- 4a4e: 8922 mv s2,s0
- while (l < u)
- 4a50: fd29e2e3 bltu s3,s2,4a14 <bsearch+0x22>
- 4a54: b7c5 j 4a34 <bsearch+0x42>
- 4a56: 6406 ld s0,64(sp)
-}
- 4a58: 60a6 ld ra,72(sp)
- 4a5a: 7942 ld s2,48(sp)
- 4a5c: 79a2 ld s3,40(sp)
- 4a5e: 7a02 ld s4,32(sp)
- 4a60: 6ae2 ld s5,24(sp)
- 4a62: 6b42 ld s6,16(sp)
- 4a64: 6ba2 ld s7,8(sp)
- 4a66: 8526 mv a0,s1
- 4a68: 74e2 ld s1,56(sp)
- 4a6a: 6161 addi sp,sp,80
- 4a6c: 8082 ret
-
-0000000000004a6e <abs>:
-
-/* Math & Mics */
-
-int abs(int j) { return (j < 0) ? -j : j; }
- 4a6e: 41f5579b sraiw a5,a0,0x1f
- 4a72: 8d3d xor a0,a0,a5
- 4a74: 9d1d subw a0,a0,a5
- 4a76: 8082 ret
-
-0000000000004a78 <labs>:
-long labs(long j) { return (j < 0) ? -j : j; }
- 4a78: 43f55793 srai a5,a0,0x3f
- 4a7c: 8d3d xor a0,a0,a5
- 4a7e: 8d1d sub a0,a0,a5
- 4a80: 8082 ret
-
-0000000000004a82 <llabs>:
-long long llabs(long long j) { return (j < 0) ? -j : j; }
- 4a82: 43f55793 srai a5,a0,0x3f
- 4a86: 8d3d xor a0,a0,a5
- 4a88: 8d1d sub a0,a0,a5
- 4a8a: 8082 ret
-
-0000000000004a8c <div>:
-
-div_t div(int numer, int denom)
-{
- div_t res = {numer / denom, numer % denom};
- 4a8c: 02b547bb divw a5,a0,a1
-{
- 4a90: 1141 addi sp,sp,-16
- return res;
-}
- 4a92: 0141 addi sp,sp,16
- div_t res = {numer / denom, numer % denom};
- 4a94: 02b5653b remw a0,a0,a1
- return res;
- 4a98: 1782 slli a5,a5,0x20
- 4a9a: 9381 srli a5,a5,0x20
- 4a9c: 1502 slli a0,a0,0x20
-}
- 4a9e: 8d5d or a0,a0,a5
- 4aa0: 8082 ret
-
-0000000000004aa2 <ldiv>:
-ldiv_t ldiv(long numer, long denom)
-{
- 4aa2: 1141 addi sp,sp,-16
- 4aa4: 87aa mv a5,a0
- ldiv_t res = {numer / denom, numer % denom};
- return res;
-}
- 4aa6: 02b54533 div a0,a0,a1
- 4aaa: 0141 addi sp,sp,16
- 4aac: 02b7e5b3 rem a1,a5,a1
- 4ab0: 8082 ret
-
-0000000000004ab2 <lldiv>:
-lldiv_t lldiv(long long numer, long long denom)
-{
- 4ab2: 1141 addi sp,sp,-16
- 4ab4: 87aa mv a5,a0
- lldiv_t res = {numer / denom, numer % denom};
- return res;
-}
- 4ab6: 02b54533 div a0,a0,a1
- 4aba: 0141 addi sp,sp,16
- 4abc: 02b7e5b3 rem a1,a5,a1
- 4ac0: 8082 ret
-
-0000000000004ac2 <rand>:
-
-static unsigned long next = 1;
-int rand(void)
-{
- next = next * 1103515245 + 12345;
- 4ac2: 00003697 auipc a3,0x3
- 4ac6: d3668693 addi a3,a3,-714 # 77f8 <next>
- 4aca: 629c ld a5,0(a3)
- 4acc: 41c65737 lui a4,0x41c65
- 4ad0: e6d70713 addi a4,a4,-403 # 41c64e6d <_ZSt4cerr+0x41c5d4f5>
- 4ad4: 02e787b3 mul a5,a5,a4
- 4ad8: 670d lui a4,0x3
- 4ada: 03970713 addi a4,a4,57 # 3039 <stbsp_vsnprintf+0x51>
- 4ade: 97ba add a5,a5,a4
- return (unsigned int)(next / 65536) % 32768;
- 4ae0: 02179513 slli a0,a5,0x21
- next = next * 1103515245 + 12345;
- 4ae4: e29c sd a5,0(a3)
-}
- 4ae6: 9145 srli a0,a0,0x31
- 4ae8: 8082 ret
-
-0000000000004aea <srand>:
-void srand(unsigned int seed) { next = seed; }
- 4aea: 1502 slli a0,a0,0x20
- 4aec: 9101 srli a0,a0,0x20
- 4aee: 00003797 auipc a5,0x3
- 4af2: d0a7b523 sd a0,-758(a5) # 77f8 <next>
- 4af6: 8082 ret
-
-0000000000004af8 <mblen>:
-
-/* Stub */
-int mblen(const char *s, size_t n) { return (s && *s && n) ? 1 : 0; }
- 4af8: c901 beqz a0,4b08 <mblen+0x10>
- 4afa: 00054783 lbu a5,0(a0)
- 4afe: 4501 li a0,0
- 4b00: c789 beqz a5,4b0a <mblen+0x12>
- 4b02: 00b03533 snez a0,a1
- 4b06: 8082 ret
- 4b08: 4501 li a0,0
- 4b0a: 8082 ret
-
-0000000000004b0c <mbtowc>:
-int mbtowc(wchar_t *pwc, const char *s, size_t n)
-{
- 4b0c: 87aa mv a5,a0
- if (!s)
- 4b0e: cd81 beqz a1,4b26 <mbtowc+0x1a>
- return 0;
- if (n == 0)
- return -1;
- 4b10: 557d li a0,-1
- if (n == 0)
- 4b12: ca19 beqz a2,4b28 <mbtowc+0x1c>
- if (pwc)
- 4b14: c781 beqz a5,4b1c <mbtowc+0x10>
- *pwc = (wchar_t)*s;
- 4b16: 0005c703 lbu a4,0(a1)
- 4b1a: c398 sw a4,0(a5)
- return (*s != 0);
- 4b1c: 0005c503 lbu a0,0(a1)
- 4b20: 00a03533 snez a0,a0
- 4b24: 8082 ret
- return 0;
- 4b26: 4501 li a0,0
-}
- 4b28: 8082 ret
-
-0000000000004b2a <wctomb>:
-int wctomb(char *s, wchar_t wchar)
-{
- if (!s)
- 4b2a: c509 beqz a0,4b34 <wctomb+0xa>
- return 0;
- *s = (char)wchar;
- 4b2c: 00b50023 sb a1,0(a0)
- return 1;
- 4b30: 4505 li a0,1
- 4b32: 8082 ret
- return 0;
- 4b34: 4501 li a0,0
-}
- 4b36: 8082 ret
-
-0000000000004b38 <mbstowcs>:
-size_t mbstowcs(wchar_t *dest, const char *src, size_t n)
-{
- size_t i = 0;
- while (src[i] && i < n)
- 4b38: 0005c703 lbu a4,0(a1)
- 4b3c: cb0d beqz a4,4b6e <mbstowcs+0x36>
- 4b3e: ca15 beqz a2,4b72 <mbstowcs+0x3a>
- 4b40: 86aa mv a3,a0
- size_t i = 0;
- 4b42: 4781 li a5,0
- 4b44: a019 j 4b4a <mbstowcs+0x12>
- while (src[i] && i < n)
- 4b46: 02f60263 beq a2,a5,4b6a <mbstowcs+0x32>
- {
- dest[i] = (wchar_t)src[i];
- i++;
- 4b4a: 0785 addi a5,a5,1
- dest[i] = (wchar_t)src[i];
- 4b4c: c298 sw a4,0(a3)
- while (src[i] && i < n)
- 4b4e: 00f58733 add a4,a1,a5
- 4b52: 00074703 lbu a4,0(a4)
- 4b56: 0691 addi a3,a3,4
- 4b58: f77d bnez a4,4b46 <mbstowcs+0xe>
- }
- if (i < n)
- 4b5a: 00c7f763 bgeu a5,a2,4b68 <mbstowcs+0x30>
- dest[i] = 0;
- 4b5e: 00279713 slli a4,a5,0x2
- 4b62: 953a add a0,a0,a4
- 4b64: 00052023 sw zero,0(a0)
- size_t i = 0;
- 4b68: 863e mv a2,a5
- 4b6a: 8532 mv a0,a2
- 4b6c: 8082 ret
- 4b6e: 4781 li a5,0
- 4b70: b7ed j 4b5a <mbstowcs+0x22>
- 4b72: 4501 li a0,0
- return i;
-}
- 4b74: 8082 ret
-
-0000000000004b76 <wcstombs>:
-size_t wcstombs(char *dest, const wchar_t *src, size_t n)
-{
- size_t i = 0;
- while (src[i] && i < n)
- 4b76: 4198 lw a4,0(a1)
- 4b78: c71d beqz a4,4ba6 <wcstombs+0x30>
- 4b7a: ca05 beqz a2,4baa <wcstombs+0x34>
- 4b7c: 0591 addi a1,a1,4
- size_t i = 0;
- 4b7e: 4781 li a5,0
- 4b80: a019 j 4b86 <wcstombs+0x10>
- while (src[i] && i < n)
- 4b82: 02f60063 beq a2,a5,4ba2 <wcstombs+0x2c>
- {
- dest[i] = (char)src[i];
- 4b86: 00f506b3 add a3,a0,a5
- 4b8a: 00e68023 sb a4,0(a3)
- while (src[i] && i < n)
- 4b8e: 4198 lw a4,0(a1)
- i++;
- 4b90: 0785 addi a5,a5,1
- while (src[i] && i < n)
- 4b92: 0591 addi a1,a1,4
- 4b94: f77d bnez a4,4b82 <wcstombs+0xc>
- }
- if (i < n)
- 4b96: 00c7f563 bgeu a5,a2,4ba0 <wcstombs+0x2a>
- dest[i] = 0;
- 4b9a: 953e add a0,a0,a5
- 4b9c: 00050023 sb zero,0(a0)
- size_t i = 0;
- 4ba0: 863e mv a2,a5
- 4ba2: 8532 mv a0,a2
- 4ba4: 8082 ret
- 4ba6: 4781 li a5,0
- 4ba8: b7fd j 4b96 <wcstombs+0x20>
- 4baa: 4501 li a0,0
- return i;
- 4bac: 8082 ret
-
-0000000000004bae <memset>:
-
-void *memset(void *dst, int c, size_t n)
-{
- char *cdst = (char *)dst;
- for (size_t i = 0; i < n; i++)
- cdst[i] = (char)c;
- 4bae: 0ff5f593 zext.b a1,a1
- 4bb2: 87aa mv a5,a0
- 4bb4: 00a60733 add a4,a2,a0
- for (size_t i = 0; i < n; i++)
- 4bb8: c611 beqz a2,4bc4 <memset+0x16>
- cdst[i] = (char)c;
- 4bba: 00b78023 sb a1,0(a5)
- for (size_t i = 0; i < n; i++)
- 4bbe: 0785 addi a5,a5,1
- 4bc0: fee79de3 bne a5,a4,4bba <memset+0xc>
- return dst;
-}
- 4bc4: 8082 ret
-
-0000000000004bc6 <memmove>:
-
-void *memmove(void *vdst, const void *vsrc, size_t n)
-{
- char *dst = (char *)vdst;
- const char *src = (const char *)vsrc;
- if (dst == src)
- 4bc6: 02b50d63 beq a0,a1,4c00 <memmove+0x3a>
- return vdst;
-
- if (src > dst)
- 4bca: 00b57e63 bgeu a0,a1,4be6 <memmove+0x20>
- {
- while (n--)
- 4bce: ca0d beqz a2,4c00 <memmove+0x3a>
- 4bd0: 962a add a2,a2,a0
- char *dst = (char *)vdst;
- 4bd2: 87aa mv a5,a0
- *dst++ = *src++;
- 4bd4: 0005c703 lbu a4,0(a1)
- 4bd8: 0785 addi a5,a5,1
- 4bda: 0585 addi a1,a1,1
- 4bdc: fee78fa3 sb a4,-1(a5)
- while (n--)
- 4be0: fec79ae3 bne a5,a2,4bd4 <memmove+0xe>
- 4be4: 8082 ret
- }
- else
- {
- dst += n;
- 4be6: 00c50733 add a4,a0,a2
- src += n;
- 4bea: 00c587b3 add a5,a1,a2
- while (n-- > 0)
- 4bee: ca09 beqz a2,4c00 <memmove+0x3a>
- *--dst = *--src;
- 4bf0: fff7c683 lbu a3,-1(a5)
- 4bf4: 17fd addi a5,a5,-1
- 4bf6: 177d addi a4,a4,-1
- 4bf8: 00d70023 sb a3,0(a4)
- while (n-- > 0)
- 4bfc: fef59ae3 bne a1,a5,4bf0 <memmove+0x2a>
- }
- return vdst;
-}
- 4c00: 8082 ret
-
-0000000000004c02 <memcpy>:
-
-void *memcpy(void *vdst, const void *vsrc, size_t n)
-{
- return memmove(vdst, vsrc, n);
- 4c02: b7d1 j 4bc6 <memmove>
-
-0000000000004c04 <memcmp>:
-
-int memcmp(const void *s1, const void *s2, size_t n)
-{
- const unsigned char *p1 = (const unsigned char *)s1;
- const unsigned char *p2 = (const unsigned char *)s2;
- while (n--)
- 4c04: c205 beqz a2,4c24 <memcmp+0x20>
- 4c06: 962a add a2,a2,a0
- 4c08: a019 j 4c0e <memcmp+0xa>
- 4c0a: 00c50d63 beq a0,a2,4c24 <memcmp+0x20>
- {
- if (*p1 != *p2)
- 4c0e: 00054783 lbu a5,0(a0)
- 4c12: 0005c703 lbu a4,0(a1)
- return *p1 - *p2;
- p1++;
- 4c16: 0505 addi a0,a0,1
- p2++;
- 4c18: 0585 addi a1,a1,1
- if (*p1 != *p2)
- 4c1a: fee788e3 beq a5,a4,4c0a <memcmp+0x6>
- return *p1 - *p2;
- 4c1e: 40e7853b subw a0,a5,a4
- 4c22: 8082 ret
- }
- return 0;
- 4c24: 4501 li a0,0
-}
- 4c26: 8082 ret
-
-0000000000004c28 <memchr>:
-
-void *memchr(const void *s, int c, size_t n)
-{
- const unsigned char *p = (const unsigned char *)s;
- while (n--)
- 4c28: ce09 beqz a2,4c42 <memchr+0x1a>
- {
- if (*p == (unsigned char)c)
- 4c2a: 0ff5f593 zext.b a1,a1
- 4c2e: 962a add a2,a2,a0
- 4c30: a021 j 4c38 <memchr+0x10>
- return (void *)p;
- p++;
- 4c32: 0505 addi a0,a0,1
- while (n--)
- 4c34: 00a60763 beq a2,a0,4c42 <memchr+0x1a>
- if (*p == (unsigned char)c)
- 4c38: 00054783 lbu a5,0(a0)
- 4c3c: feb79be3 bne a5,a1,4c32 <memchr+0xa>
- }
- return NULL;
-}
- 4c40: 8082 ret
- return NULL;
- 4c42: 4501 li a0,0
-}
- 4c44: 8082 ret
-
-0000000000004c46 <strlen>:
-/* String Manipulation Functions */
-
-size_t strlen(const char *s)
-{
- const char *p = s;
- while (*p)
- 4c46: 00054783 lbu a5,0(a0)
- 4c4a: cb89 beqz a5,4c5c <strlen+0x16>
- const char *p = s;
- 4c4c: 87aa mv a5,a0
- while (*p)
- 4c4e: 0017c703 lbu a4,1(a5)
- p++;
- 4c52: 0785 addi a5,a5,1
- while (*p)
- 4c54: ff6d bnez a4,4c4e <strlen+0x8>
- return (size_t)(p - s);
- 4c56: 40a78533 sub a0,a5,a0
- 4c5a: 8082 ret
- while (*p)
- 4c5c: 4501 li a0,0
-}
- 4c5e: 8082 ret
-
-0000000000004c60 <strcpy>:
-
-char *strcpy(char *dst, const char *src)
-{
- char *os = dst;
- while ((*dst++ = *src++) != 0)
- 4c60: 87aa mv a5,a0
- 4c62: 0005c703 lbu a4,0(a1)
- 4c66: 0785 addi a5,a5,1
- 4c68: 0585 addi a1,a1,1
- 4c6a: fee78fa3 sb a4,-1(a5)
- 4c6e: fb75 bnez a4,4c62 <strcpy+0x2>
- ;
- return os;
-}
- 4c70: 8082 ret
-
-0000000000004c72 <strncpy>:
-char *strncpy(char *dst, const char *src, size_t n)
-{
- char *os = dst;
- size_t i;
-
- for (i = 0; i < n && src[i] != '\0'; i++)
- 4c72: 4781 li a5,0
- 4c74: e619 bnez a2,4c82 <strncpy+0x10>
- 4c76: 8082 ret
- dst[i] = src[i];
- 4c78: 00e68023 sb a4,0(a3)
- for (i = 0; i < n && src[i] != '\0'; i++)
- 4c7c: 0785 addi a5,a5,1
- 4c7e: 02f60263 beq a2,a5,4ca2 <strncpy+0x30>
- 4c82: 00f58733 add a4,a1,a5
- 4c86: 00074703 lbu a4,0(a4)
- dst[i] = src[i];
- 4c8a: 00f506b3 add a3,a0,a5
- for (i = 0; i < n && src[i] != '\0'; i++)
- 4c8e: f76d bnez a4,4c78 <strncpy+0x6>
-
- for (; i < n; i++)
- 4c90: 00c7f963 bgeu a5,a2,4ca2 <strncpy+0x30>
- 4c94: 87b6 mv a5,a3
- 4c96: 962a add a2,a2,a0
- dst[i] = '\0';
- 4c98: 00078023 sb zero,0(a5)
- for (; i < n; i++)
- 4c9c: 0785 addi a5,a5,1
- 4c9e: fec79de3 bne a5,a2,4c98 <strncpy+0x26>
-
- return os;
-}
- 4ca2: 8082 ret
-
-0000000000004ca4 <strcat>:
-
-char *strcat(char *dst, const char *src)
-{
- char *os = dst;
- while (*dst)
- 4ca4: 00054783 lbu a5,0(a0)
- 4ca8: cf91 beqz a5,4cc4 <strcat+0x20>
- 4caa: 87aa mv a5,a0
- 4cac: 0017c703 lbu a4,1(a5)
- dst++;
- 4cb0: 0785 addi a5,a5,1
- while (*dst)
- 4cb2: ff6d bnez a4,4cac <strcat+0x8>
- while ((*dst++ = *src++) != 0)
- 4cb4: 0005c703 lbu a4,0(a1)
- 4cb8: 0785 addi a5,a5,1
- 4cba: 0585 addi a1,a1,1
- 4cbc: fee78fa3 sb a4,-1(a5)
- 4cc0: fb75 bnez a4,4cb4 <strcat+0x10>
- ;
- return os;
-}
- 4cc2: 8082 ret
- while ((*dst++ = *src++) != 0)
- 4cc4: 0005c703 lbu a4,0(a1)
- while (*dst)
- 4cc8: 87aa mv a5,a0
- while ((*dst++ = *src++) != 0)
- 4cca: 0785 addi a5,a5,1
- 4ccc: fee78fa3 sb a4,-1(a5)
- 4cd0: 0585 addi a1,a1,1
- 4cd2: f36d bnez a4,4cb4 <strcat+0x10>
- 4cd4: 8082 ret
-
-0000000000004cd6 <strncat>:
- while (*p)
- 4cd6: 00054783 lbu a5,0(a0)
- const char *p = s;
- 4cda: 872a mv a4,a0
- while (*p)
- 4cdc: c789 beqz a5,4ce6 <strncat+0x10>
- 4cde: 00174783 lbu a5,1(a4)
- p++;
- 4ce2: 0705 addi a4,a4,1
- while (*p)
- 4ce4: ffed bnez a5,4cde <strncat+0x8>
- size_t dest_len = strlen(dst);
- size_t i;
-
- dst += dest_len;
-
- for (i = 0; i < n && src[i] != '\0'; i++)
- 4ce6: 86ba mv a3,a4
- 4ce8: 4781 li a5,0
- 4cea: 88ba mv a7,a4
- 4cec: ea01 bnez a2,4cfc <strncat+0x26>
- 4cee: a839 j 4d0c <strncat+0x36>
- dst[i] = src[i];
- 4cf0: 01068023 sb a6,0(a3)
- for (i = 0; i < n && src[i] != '\0'; i++)
- 4cf4: 00188693 addi a3,a7,1
- 4cf8: 00f60d63 beq a2,a5,4d12 <strncat+0x3c>
- 4cfc: 00f58833 add a6,a1,a5
- 4d00: 00084803 lbu a6,0(a6)
- 4d04: 0785 addi a5,a5,1
- dst[i] = src[i];
- 4d06: 88b6 mv a7,a3
- for (i = 0; i < n && src[i] != '\0'; i++)
- 4d08: fe0814e3 bnez a6,4cf0 <strncat+0x1a>
-
- dst[i] = '\0';
- 4d0c: 00088023 sb zero,0(a7)
-
- return os;
-}
- 4d10: 8082 ret
- dst[i] = '\0';
- 4d12: 00c708b3 add a7,a4,a2
- 4d16: 00088023 sb zero,0(a7)
-}
- 4d1a: 8082 ret
-
-0000000000004d1c <strcmp>:
-
-int strcmp(const char *p, const char *q)
-{
- while (*p && *p == *q)
- 4d1c: 00054783 lbu a5,0(a0)
- 4d20: e791 bnez a5,4d2c <strcmp+0x10>
- 4d22: a02d j 4d4c <strcmp+0x30>
- 4d24: 00054783 lbu a5,0(a0)
- 4d28: cf89 beqz a5,4d42 <strcmp+0x26>
- 4d2a: 85b6 mv a1,a3
- 4d2c: 0005c703 lbu a4,0(a1)
- {
- p++;
- 4d30: 0505 addi a0,a0,1
- q++;
- 4d32: 00158693 addi a3,a1,1
- while (*p && *p == *q)
- 4d36: fef707e3 beq a4,a5,4d24 <strcmp+0x8>
- }
- return (int)((unsigned char)*p - (unsigned char)*q);
- 4d3a: 0007851b sext.w a0,a5
-}
- 4d3e: 9d19 subw a0,a0,a4
- 4d40: 8082 ret
- return (int)((unsigned char)*p - (unsigned char)*q);
- 4d42: 0015c703 lbu a4,1(a1)
- 4d46: 4501 li a0,0
-}
- 4d48: 9d19 subw a0,a0,a4
- 4d4a: 8082 ret
- return (int)((unsigned char)*p - (unsigned char)*q);
- 4d4c: 0005c703 lbu a4,0(a1)
- 4d50: 4501 li a0,0
- 4d52: b7f5 j 4d3e <strcmp+0x22>
-
-0000000000004d54 <strncmp>:
-
-int strncmp(const char *s1, const char *s2, size_t n)
-{
- if (n == 0)
- 4d54: ca0d beqz a2,4d86 <strncmp+0x32>
- return 0;
-
- while (n-- > 0 && *s1 && *s1 == *s2)
- 4d56: 00054783 lbu a5,0(a0)
- 4d5a: 167d addi a2,a2,-1
- 4d5c: 00c506b3 add a3,a0,a2
- 4d60: eb89 bnez a5,4d72 <strncmp+0x1e>
- 4d62: a80d j 4d94 <strncmp+0x40>
- {
- if (n == 0 || *s1 == '\0')
- 4d64: 00d50d63 beq a0,a3,4d7e <strncmp+0x2a>
- while (n-- > 0 && *s1 && *s1 == *s2)
- 4d68: 00154783 lbu a5,1(a0)
- break;
- s1++;
- 4d6c: 0505 addi a0,a0,1
- while (n-- > 0 && *s1 && *s1 == *s2)
- 4d6e: cf91 beqz a5,4d8a <strncmp+0x36>
- 4d70: 85b2 mv a1,a2
- 4d72: 0005c703 lbu a4,0(a1)
- s2++;
- 4d76: 00158613 addi a2,a1,1
- while (n-- > 0 && *s1 && *s1 == *s2)
- 4d7a: fef705e3 beq a4,a5,4d64 <strncmp+0x10>
- }
- return (int)((unsigned char)*s1 - (unsigned char)*s2);
- 4d7e: 0007851b sext.w a0,a5
- 4d82: 9d19 subw a0,a0,a4
- 4d84: 8082 ret
- return 0;
- 4d86: 4501 li a0,0
-}
- 4d88: 8082 ret
- return (int)((unsigned char)*s1 - (unsigned char)*s2);
- 4d8a: 0015c703 lbu a4,1(a1)
- 4d8e: 4501 li a0,0
- 4d90: 9d19 subw a0,a0,a4
- 4d92: 8082 ret
- 4d94: 0005c703 lbu a4,0(a1)
- 4d98: 4501 li a0,0
- 4d9a: b7e5 j 4d82 <strncmp+0x2e>
-
-0000000000004d9c <strchr>:
-
-char *strchr(const char *s, int c)
-{
- while (*s != (char)c)
- 4d9c: 0ff5f593 zext.b a1,a1
- 4da0: a019 j 4da6 <strchr+0xa>
- {
- if (!*s++)
- 4da2: 0505 addi a0,a0,1
- 4da4: c791 beqz a5,4db0 <strchr+0x14>
- while (*s != (char)c)
- 4da6: 00054783 lbu a5,0(a0)
- 4daa: feb79ce3 bne a5,a1,4da2 <strchr+0x6>
- 4dae: 8082 ret
- return NULL;
- 4db0: 4501 li a0,0
- }
- return (char *)s;
-}
- 4db2: 8082 ret
-
-0000000000004db4 <strrchr>:
-
-char *strrchr(const char *s, int c)
-{
- 4db4: 87aa mv a5,a0
- const char *last = NULL;
- do
- {
- if (*s == (char)c)
- 4db6: 0ff5f593 zext.b a1,a1
- const char *last = NULL;
- 4dba: 4501 li a0,0
- if (*s == (char)c)
- 4dbc: 0007c703 lbu a4,0(a5)
- 4dc0: 00e59363 bne a1,a4,4dc6 <strrchr+0x12>
- last = s;
- 4dc4: 853e mv a0,a5
- } while (*s++);
- 4dc6: 0785 addi a5,a5,1
- 4dc8: fb75 bnez a4,4dbc <strrchr+0x8>
-
- return (char *)last;
-}
- 4dca: 8082 ret
-
-0000000000004dcc <strstr>:
- while (*p)
- 4dcc: 0005c883 lbu a7,0(a1)
- 4dd0: 04088a63 beqz a7,4e24 <strstr+0x58>
- const char *p = s;
- 4dd4: 87ae mv a5,a1
- while (*p)
- 4dd6: 0017c703 lbu a4,1(a5)
- p++;
- 4dda: 0785 addi a5,a5,1
- while (*p)
- 4ddc: ff6d bnez a4,4dd6 <strstr+0xa>
- return (size_t)(p - s);
- 4dde: 40b78833 sub a6,a5,a1
-
-
-char *strstr(const char *haystack, const char *needle)
-{
- size_t n_len = strlen(needle);
- if (n_len == 0)
- 4de2: 04b78163 beq a5,a1,4e24 <strstr+0x58>
- return (char *)haystack;
-
- for (; *haystack; haystack++)
- 4de6: 00054783 lbu a5,0(a0)
- 4dea: cf85 beqz a5,4e22 <strstr+0x56>
- 4dec: 187d addi a6,a6,-1
- 4dee: 982a add a6,a6,a0
- {
- if (*haystack != *needle)
- 4df0: 02f89463 bne a7,a5,4e18 <strstr+0x4c>
- while (n-- > 0 && *s1 && *s1 == *s2)
- 4df4: 00054703 lbu a4,0(a0)
- 4df8: 8646 mv a2,a7
- 4dfa: 86ae mv a3,a1
- 4dfc: 87aa mv a5,a0
- 4dfe: eb11 bnez a4,4e12 <strstr+0x46>
- 4e00: a821 j 4e18 <strstr+0x4c>
- if (n == 0 || *s1 == '\0')
- 4e02: 03078163 beq a5,a6,4e24 <strstr+0x58>
- while (n-- > 0 && *s1 && *s1 == *s2)
- 4e06: 0017c703 lbu a4,1(a5)
- return (int)((unsigned char)*s1 - (unsigned char)*s2);
- 4e0a: 0006c603 lbu a2,0(a3)
- s1++;
- 4e0e: 0785 addi a5,a5,1
- while (n-- > 0 && *s1 && *s1 == *s2)
- 4e10: cb19 beqz a4,4e26 <strstr+0x5a>
- s2++;
- 4e12: 0685 addi a3,a3,1
- while (n-- > 0 && *s1 && *s1 == *s2)
- 4e14: fee607e3 beq a2,a4,4e02 <strstr+0x36>
- for (; *haystack; haystack++)
- 4e18: 00154783 lbu a5,1(a0)
- 4e1c: 0805 addi a6,a6,1
- 4e1e: 0505 addi a0,a0,1
- 4e20: fbe1 bnez a5,4df0 <strstr+0x24>
- continue;
-
- if (strncmp(haystack, needle, n_len) == 0)
- return (char *)haystack;
- }
- return NULL;
- 4e22: 4501 li a0,0
-}
- 4e24: 8082 ret
- if (strncmp(haystack, needle, n_len) == 0)
- 4e26: de7d beqz a2,4e24 <strstr+0x58>
- for (; *haystack; haystack++)
- 4e28: 00154783 lbu a5,1(a0)
- 4e2c: 0805 addi a6,a6,1
- 4e2e: 0505 addi a0,a0,1
- 4e30: f3e1 bnez a5,4df0 <strstr+0x24>
- 4e32: bfc5 j 4e22 <strstr+0x56>
-
-0000000000004e34 <strdup>:
-
-char *strdup(const char *s)
-{
- 4e34: 1101 addi sp,sp,-32
- 4e36: e426 sd s1,8(sp)
- 4e38: ec06 sd ra,24(sp)
- 4e3a: e822 sd s0,16(sp)
- while (*p)
- 4e3c: 00054783 lbu a5,0(a0)
-{
- 4e40: 84aa mv s1,a0
- while (*p)
- 4e42: cb8d beqz a5,4e74 <strdup+0x40>
- const char *p = s;
- 4e44: 862a mv a2,a0
- while (*p)
- 4e46: 00164783 lbu a5,1(a2)
- p++;
- 4e4a: 0605 addi a2,a2,1
- while (*p)
- 4e4c: ffed bnez a5,4e46 <strdup+0x12>
- return (size_t)(p - s);
- 4e4e: 8e05 sub a2,a2,s1
- size_t len = strlen(s) + 1;
- 4e50: 00160413 addi s0,a2,1
- char *new_str = (char *)malloc(len);
- 4e54: 8522 mv a0,s0
- 4e56: f4eff0ef jal 45a4 <malloc>
- if (new_str == NULL)
- 4e5a: c901 beqz a0,4e6a <strdup+0x36>
- return memmove(vdst, vsrc, n);
- 4e5c: 8622 mv a2,s0
- return NULL;
-
- return (char *)memcpy(new_str, s, len);
-}
- 4e5e: 6442 ld s0,16(sp)
- 4e60: 60e2 ld ra,24(sp)
- return memmove(vdst, vsrc, n);
- 4e62: 85a6 mv a1,s1
-}
- 4e64: 64a2 ld s1,8(sp)
- 4e66: 6105 addi sp,sp,32
- return memmove(vdst, vsrc, n);
- 4e68: bbb9 j 4bc6 <memmove>
-}
- 4e6a: 60e2 ld ra,24(sp)
- 4e6c: 6442 ld s0,16(sp)
- 4e6e: 64a2 ld s1,8(sp)
- 4e70: 6105 addi sp,sp,32
- 4e72: 8082 ret
- while (*p)
- 4e74: 4405 li s0,1
- 4e76: bff9 j 4e54 <strdup+0x20>
-
-0000000000004e78 <strlcpy>:
- 4e78: 0005c783 lbu a5,0(a1)
-
-size_t strlcpy(char *dst, const char *src, size_t size)
-{
- 4e7c: 1101 addi sp,sp,-32
- 4e7e: ec06 sd ra,24(sp)
- 4e80: e822 sd s0,16(sp)
- 4e82: 86b2 mv a3,a2
- while (*p)
- 4e84: cf8d beqz a5,4ebe <strlcpy+0x46>
- const char *p = s;
- 4e86: 87ae mv a5,a1
- while (*p)
- 4e88: 0017c703 lbu a4,1(a5)
- p++;
- 4e8c: 0785 addi a5,a5,1
- while (*p)
- 4e8e: ff6d bnez a4,4e88 <strlcpy+0x10>
- return (size_t)(p - s);
- 4e90: 40b78433 sub s0,a5,a1
- size_t src_len = strlen(src);
-
- if (size > 0)
- 4e94: c285 beqz a3,4eb4 <strlcpy+0x3c>
- 4e96: e426 sd s1,8(sp)
- {
- size_t copy_len = (src_len >= size) ? size - 1 : src_len;
- 4e98: fff68613 addi a2,a3,-1
- memcpy(dst, src, copy_len);
- dst[copy_len] = '\0';
- 4e9c: 00c504b3 add s1,a0,a2
- size_t copy_len = (src_len >= size) ? size - 1 : src_len;
- 4ea0: 00d47563 bgeu s0,a3,4eaa <strlcpy+0x32>
- dst[copy_len] = '\0';
- 4ea4: 008504b3 add s1,a0,s0
- size_t copy_len = (src_len >= size) ? size - 1 : src_len;
- 4ea8: 8622 mv a2,s0
- return memmove(vdst, vsrc, n);
- 4eaa: d1dff0ef jal 4bc6 <memmove>
- dst[copy_len] = '\0';
- 4eae: 00048023 sb zero,0(s1)
- }
-
- return src_len;
- 4eb2: 64a2 ld s1,8(sp)
-}
- 4eb4: 60e2 ld ra,24(sp)
- 4eb6: 8522 mv a0,s0
- 4eb8: 6442 ld s0,16(sp)
- 4eba: 6105 addi sp,sp,32
- 4ebc: 8082 ret
- if (size > 0)
- 4ebe: e219 bnez a2,4ec4 <strlcpy+0x4c>
- return (size_t)(p - s);
- 4ec0: 4401 li s0,0
- 4ec2: bfcd j 4eb4 <strlcpy+0x3c>
- 4ec4: e426 sd s1,8(sp)
- 4ec6: 4401 li s0,0
- if (size > 0)
- 4ec8: 84aa mv s1,a0
- size_t copy_len = (src_len >= size) ? size - 1 : src_len;
- 4eca: 4601 li a2,0
- 4ecc: bff9 j 4eaa <strlcpy+0x32>
-
-0000000000004ece <strlcat>:
- while (*p)
- 4ece: 0005c783 lbu a5,0(a1)
-
-size_t strlcat(char *dst, const char *src, size_t size)
-{
- 4ed2: 7179 addi sp,sp,-48
- 4ed4: e84a sd s2,16(sp)
- 4ed6: f406 sd ra,40(sp)
- 4ed8: f022 sd s0,32(sp)
- 4eda: ec26 sd s1,24(sp)
- 4edc: 892a mv s2,a0
- while (*p)
- 4ede: c7b5 beqz a5,4f4a <strlcat+0x7c>
- const char *p = s;
- 4ee0: 87ae mv a5,a1
- while (*p)
- 4ee2: 0017c703 lbu a4,1(a5)
- p++;
- 4ee6: 0785 addi a5,a5,1
- while (*p)
- 4ee8: ff6d bnez a4,4ee2 <strlcat+0x14>
- return (size_t)(p - s);
- 4eea: 40b784b3 sub s1,a5,a1
- size_t dst_len = 0;
- 4eee: 4401 li s0,0
- size_t src_len = strlen(src);
-
- while (dst_len < size && dst[dst_len] != '\0')
- 4ef0: e609 bnez a2,4efa <strlcat+0x2c>
- 4ef2: a0a1 j 4f3a <strlcat+0x6c>
- dst_len++;
- 4ef4: 0405 addi s0,s0,1
- while (dst_len < size && dst[dst_len] != '\0')
- 4ef6: 04860263 beq a2,s0,4f3a <strlcat+0x6c>
- 4efa: 00890533 add a0,s2,s0
- 4efe: 00054783 lbu a5,0(a0)
- 4f02: fbed bnez a5,4ef4 <strlcat+0x26>
-
- if (dst_len == size)
- 4f04: 02860b63 beq a2,s0,4f3a <strlcat+0x6c>
- 4f08: e44e sd s3,8(sp)
- return size + src_len;
-
- size_t space_left = size - dst_len;
- 4f0a: 408607b3 sub a5,a2,s0
- size_t copy_len = (src_len >= space_left) ? space_left - 1 : src_len;
- 4f0e: 89a6 mv s3,s1
- 4f10: 02f4f263 bgeu s1,a5,4f34 <strlcat+0x66>
-
- memcpy(dst + dst_len, src, copy_len);
- dst[dst_len + copy_len] = '\0';
- 4f14: 994e add s2,s2,s3
- 4f16: 9922 add s2,s2,s0
- return memmove(vdst, vsrc, n);
- 4f18: 864e mv a2,s3
- 4f1a: cadff0ef jal 4bc6 <memmove>
- dst[dst_len + copy_len] = '\0';
- 4f1e: 00090023 sb zero,0(s2) # 1000 <_vscanf_core.constprop.0+0x5b2>
-
- return dst_len + src_len;
- 4f22: 00940533 add a0,s0,s1
-}
- 4f26: 70a2 ld ra,40(sp)
- 4f28: 7402 ld s0,32(sp)
- return dst_len + src_len;
- 4f2a: 69a2 ld s3,8(sp)
-}
- 4f2c: 64e2 ld s1,24(sp)
- 4f2e: 6942 ld s2,16(sp)
- 4f30: 6145 addi sp,sp,48
- 4f32: 8082 ret
- size_t copy_len = (src_len >= space_left) ? space_left - 1 : src_len;
- 4f34: fff78993 addi s3,a5,-1
- 4f38: bff1 j 4f14 <strlcat+0x46>
-}
- 4f3a: 70a2 ld ra,40(sp)
- 4f3c: 7402 ld s0,32(sp)
- 4f3e: 6942 ld s2,16(sp)
- return size + src_len;
- 4f40: 00960533 add a0,a2,s1
-}
- 4f44: 64e2 ld s1,24(sp)
- 4f46: 6145 addi sp,sp,48
- 4f48: 8082 ret
- while (*p)
- 4f4a: 4481 li s1,0
- 4f4c: b74d j 4eee <strlcat+0x20>
-
-0000000000004f4e <strspn>:
-size_t strspn(const char *s, const char *accept)
-{
- const char *p = s;
- const char *a;
-
- while (*p)
- 4f4e: 00054683 lbu a3,0(a0)
- 4f52: c695 beqz a3,4f7e <strspn+0x30>
- {
- for (a = accept; *a; a++)
- 4f54: 0005c803 lbu a6,0(a1)
- 4f58: 862a mv a2,a0
- 4f5a: 00080f63 beqz a6,4f78 <strspn+0x2a>
- 4f5e: 87ae mv a5,a1
- 4f60: 8742 mv a4,a6
- 4f62: a021 j 4f6a <strspn+0x1c>
- 4f64: 0007c703 lbu a4,0(a5)
- 4f68: cb01 beqz a4,4f78 <strspn+0x2a>
- 4f6a: 0785 addi a5,a5,1
- {
- if (*p == *a)
- 4f6c: fee69ce3 bne a3,a4,4f64 <strspn+0x16>
- while (*p)
- 4f70: 00164683 lbu a3,1(a2)
- break;
- }
- if (*a == '\0')
- return (size_t)(p - s);
- p++;
- 4f74: 0605 addi a2,a2,1
- while (*p)
- 4f76: f6e5 bnez a3,4f5e <strspn+0x10>
- }
- return (size_t)(p - s);
- 4f78: 40a60533 sub a0,a2,a0
- 4f7c: 8082 ret
- while (*p)
- 4f7e: 4501 li a0,0
-}
- 4f80: 8082 ret
-
-0000000000004f82 <strcspn>:
-size_t strcspn(const char *s, const char *reject)
-{
- const char *p = s;
- const char *r;
-
- while (*p)
- 4f82: 00054683 lbu a3,0(a0)
- 4f86: ce85 beqz a3,4fbe <strcspn+0x3c>
- {
- for (r = reject; *r; r++)
- 4f88: 0005c803 lbu a6,0(a1)
- const char *p = s;
- 4f8c: 862a mv a2,a0
- for (r = reject; *r; r++)
- 4f8e: 02080363 beqz a6,4fb4 <strcspn+0x32>
- 4f92: 87ae mv a5,a1
- 4f94: 8742 mv a4,a6
- 4f96: a021 j 4f9e <strcspn+0x1c>
- 4f98: 0007c703 lbu a4,0(a5)
- 4f9c: c719 beqz a4,4faa <strcspn+0x28>
- 4f9e: 0785 addi a5,a5,1
- {
- if (*p == *r)
- 4fa0: fed71ce3 bne a4,a3,4f98 <strcspn+0x16>
- return (size_t)(p - s);
- }
- p++;
- }
- return (size_t)(p - s);
- 4fa4: 40a60533 sub a0,a2,a0
- 4fa8: 8082 ret
- while (*p)
- 4faa: 00164683 lbu a3,1(a2)
- p++;
- 4fae: 0605 addi a2,a2,1
- while (*p)
- 4fb0: f2ed bnez a3,4f92 <strcspn+0x10>
- 4fb2: bfcd j 4fa4 <strcspn+0x22>
- 4fb4: 00164683 lbu a3,1(a2)
- p++;
- 4fb8: 0605 addi a2,a2,1
- while (*p)
- 4fba: feed bnez a3,4fb4 <strcspn+0x32>
- 4fbc: b7e5 j 4fa4 <strcspn+0x22>
- 4fbe: 4501 li a0,0
-}
- 4fc0: 8082 ret
-
-0000000000004fc2 <strpbrk>:
-
-char *strpbrk(const char *s, const char *accept)
-{
- const char *a;
- while (*s)
- 4fc2: 00054683 lbu a3,0(a0)
- 4fc6: c295 beqz a3,4fea <strpbrk+0x28>
- {
- for (a = accept; *a; a++)
- 4fc8: 0005c603 lbu a2,0(a1)
- 4fcc: c20d beqz a2,4fee <strpbrk+0x2c>
- 4fce: 87ae mv a5,a1
- 4fd0: 8732 mv a4,a2
- 4fd2: a021 j 4fda <strpbrk+0x18>
- 4fd4: 0007c703 lbu a4,0(a5)
- 4fd8: c709 beqz a4,4fe2 <strpbrk+0x20>
- 4fda: 0785 addi a5,a5,1
- {
- if (*s == *a)
- 4fdc: fed71ce3 bne a4,a3,4fd4 <strpbrk+0x12>
- return (char *)s;
- }
- s++;
- }
- return NULL;
-}
- 4fe0: 8082 ret
- while (*s)
- 4fe2: 00154683 lbu a3,1(a0)
- s++;
- 4fe6: 0505 addi a0,a0,1
- while (*s)
- 4fe8: f2fd bnez a3,4fce <strpbrk+0xc>
- return NULL;
- 4fea: 4501 li a0,0
-}
- 4fec: 8082 ret
- while (*s)
- 4fee: 00154683 lbu a3,1(a0)
- s++;
- 4ff2: 0505 addi a0,a0,1
- while (*s)
- 4ff4: feed bnez a3,4fee <strpbrk+0x2c>
- 4ff6: bfd5 j 4fea <strpbrk+0x28>
-
-0000000000004ff8 <strtok>:
-char *strtok(char *str, const char *delim)
-{
- static char *olds;
- char *token;
-
- if (str == NULL)
- 4ff8: 00003897 auipc a7,0x3
- 4ffc: 96888893 addi a7,a7,-1688 # 7960 <olds.0>
- 5000: cd25 beqz a0,5078 <strtok+0x80>
- while (*p)
- 5002: 00054683 lbu a3,0(a0)
- 5006: c295 beqz a3,502a <strtok+0x32>
- for (a = accept; *a; a++)
- 5008: 0005c803 lbu a6,0(a1)
- 500c: 02080463 beqz a6,5034 <strtok+0x3c>
- 5010: 87ae mv a5,a1
- 5012: 8742 mv a4,a6
- 5014: a021 j 501c <strtok+0x24>
- 5016: 0007c703 lbu a4,0(a5)
- 501a: cf09 beqz a4,5034 <strtok+0x3c>
- 501c: 0785 addi a5,a5,1
- if (*p == *a)
- 501e: fee69ce3 bne a3,a4,5016 <strtok+0x1e>
- while (*p)
- 5022: 00154683 lbu a3,1(a0)
- p++;
- 5026: 0505 addi a0,a0,1
- while (*p)
- 5028: f6e5 bnez a3,5010 <strtok+0x18>
- 502a: 87aa mv a5,a0
- str = olds;
-
- str += strspn(str, delim);
- if (*str == '\0')
- {
- olds = str;
- 502c: 00f8b023 sd a5,0(a7)
- return NULL;
- 5030: 4501 li a0,0
- *str = '\0';
- olds = str + 1;
- }
-
- return token;
-}
- 5032: 8082 ret
- if (*str == '\0')
- 5034: 00054603 lbu a2,0(a0)
- 5038: da6d beqz a2,502a <strtok+0x32>
- 503a: 86aa mv a3,a0
- for (a = accept; *a; a++)
- 503c: 04080163 beqz a6,507e <strtok+0x86>
- 5040: 8742 mv a4,a6
- 5042: 87ae mv a5,a1
- 5044: a021 j 504c <strtok+0x54>
- 5046: 0007c703 lbu a4,0(a5)
- 504a: cb19 beqz a4,5060 <strtok+0x68>
- 504c: 0785 addi a5,a5,1
- if (*s == *a)
- 504e: fee61ce3 bne a2,a4,5046 <strtok+0x4e>
- olds = str + 1;
- 5052: 00168793 addi a5,a3,1
- *str = '\0';
- 5056: 00068023 sb zero,0(a3)
- olds = str;
- 505a: 00f8b023 sd a5,0(a7)
-}
- 505e: 8082 ret
- while (*s)
- 5060: 0016c603 lbu a2,1(a3)
- s++;
- 5064: 0685 addi a3,a3,1
- while (*s)
- 5066: fe69 bnez a2,5040 <strtok+0x48>
- 5068: 87aa mv a5,a0
- while (*s != (char)c)
- 506a: 0017c703 lbu a4,1(a5)
- if (!*s++)
- 506e: 0785 addi a5,a5,1
- while (*s != (char)c)
- 5070: ff6d bnez a4,506a <strtok+0x72>
- olds = str;
- 5072: 00f8b023 sd a5,0(a7)
-}
- 5076: 8082 ret
- str = olds;
- 5078: 0008b503 ld a0,0(a7)
- 507c: b759 j 5002 <strtok+0xa>
- while (*s)
- 507e: 0016c603 lbu a2,1(a3)
- s++;
- 5082: 0685 addi a3,a3,1
- while (*s)
- 5084: fe6d bnez a2,507e <strtok+0x86>
- 5086: b7cd j 5068 <strtok+0x70>
-
-0000000000005088 <strerror>:
-
-char *strerror(int errnum)
-{
- 5088: 87aa mv a5,a0
-
- switch (errnum)
- 508a: cd09 beqz a0,50a4 <strerror+0x1c>
- 508c: 4731 li a4,12
- 508e: 00000517 auipc a0,0x0
- 5092: 16250513 addi a0,a0,354 # 51f0 <_GLOBAL__sub_I__ZSt3cin+0x12a>
- 5096: 00e78b63 beq a5,a4,50ac <strerror+0x24>
- return "Success";
- // case EINVAL: return "Invalid argument";
- case ENOMEM: return "Out of memory";
-
- default:
- return "Unknown error";
- 509a: 00000517 auipc a0,0x0
- 509e: 16650513 addi a0,a0,358 # 5200 <_GLOBAL__sub_I__ZSt3cin+0x13a>
- 50a2: 8082 ret
- return "Success";
- 50a4: 00000517 auipc a0,0x0
- 50a8: 14450513 addi a0,a0,324 # 51e8 <_GLOBAL__sub_I__ZSt3cin+0x122>
- }
- 50ac: 8082 ret
-
-00000000000050ae <_Znwm>:
-#include "ulib/stdlib.h"
-
-void *operator new(unsigned long n)
-{
- return malloc(n);
- 50ae: cf6ff06f j 45a4 <malloc>
-
-00000000000050b2 <_Znam>:
-}
-
-void *operator new[](unsigned long n)
- 50b2: cf2ff06f j 45a4 <malloc>
-
-00000000000050b6 <_ZdlPv>:
- return malloc(n);
-}
-
-void operator delete(void *p)
-{
- free(p);
- 50b6: c78ff06f j 452e <free>
-
-00000000000050ba <_ZdaPv>:
-}
-
-void operator delete[](void *p)
- 50ba: c74ff06f j 452e <free>
-
-00000000000050be <_ZdlPvm>:
- free(p);
-}
-
-void operator delete(void *p, unsigned long)
-{
- free(p);
- 50be: c70ff06f j 452e <free>
-
-00000000000050c2 <_ZdaPvm>:
-}
-
-void operator delete[](void *p, unsigned long)
- 50c2: c6cff06f j 452e <free>
-
-00000000000050c6 <_GLOBAL__sub_I__ZSt3cin>:
-#include "ulib/iostream"
-
-namespace std
-{
- istream cin(stdin);
- 50c6: 00002797 auipc a5,0x2
- 50ca: 74a7b783 ld a5,1866(a5) # 7810 <_GLOBAL_OFFSET_TABLE_+0x10>
- 50ce: 6390 ld a2,0(a5)
- ostream cout(stdout);
- 50d0: 00002797 auipc a5,0x2
- 50d4: 7387b783 ld a5,1848(a5) # 7808 <_GLOBAL_OFFSET_TABLE_+0x8>
- 50d8: 6394 ld a3,0(a5)
- ostream cerr(stderr);
- 50da: 00002797 auipc a5,0x2
- 50de: 73e7b783 ld a5,1854(a5) # 7818 <_GLOBAL_OFFSET_TABLE_+0x18>
- 50e2: 6398 ld a4,0(a5)
-
- class istream{
- private:
- FILE* _stream;
- public:
- istream(FILE *f) : _stream(f) {}
- 50e4: 00003797 auipc a5,0x3
- 50e8: 88478793 addi a5,a5,-1916 # 7968 <_ZSt3cin>
- 50ec: e390 sd a2,0(a5)
- ostream(FILE* f) : _stream(f) {}
- 50ee: e794 sd a3,8(a5)
- 50f0: eb98 sd a4,16(a5)
-} // namespace std
- 50f2: 8082 ret
diff --git a/build/user/ls.sym b/build/user/ls.sym
deleted file mode 100644
index f6529cc..0000000
--- a/build/user/ls.sym
+++ /dev/null
@@ -1,191 +0,0 @@
-0000000000000000 .text
-00000000000050f8 .rodata
-0000000000005918 .eh_frame
-0000000000006a78 .data
-0000000000007800 .got
-0000000000007820 .got.plt
-0000000000007830 .init_array
-0000000000007838 .bss
-0000000000000000 .debug_info
-0000000000000000 .debug_abbrev
-0000000000000000 .debug_loclists
-0000000000000000 .debug_aranges
-0000000000000000 .debug_rnglists
-0000000000000000 .debug_line
-0000000000000000 .debug_str
-0000000000000000 .debug_line_str
-0000000000000000 .comment
-0000000000000000 .riscv.attributes
-0000000000000000 ls.cc
-0000000000000000 entry.o
-0000000000000000 usys.o
-0000000000000000 stdio.c
-0000000000000266 stbsp__clamp_callback
-00000000000002b4 stbsp__count_clamp_callback
-00000000000002c0 stbsp__real_to_str
-0000000000000994 _in_char.part.0
-00000000000009da _skip_space
-0000000000000a4e _vscanf_core.constprop.0
-00000000000012be _out_char
-0000000000003132 _vprintf_core.constprop.0.isra.0
-0000000000006a80 stbsp__digitpair
-0000000000006b4c stbsp__period
-0000000000006b4d stbsp__comma
-0000000000006b50 hexu.1
-0000000000006b68 hex.0
-0000000000006b80 _stderr
-0000000000006fa0 _stdout
-00000000000073c0 _stdin
-0000000000005480 stbsp__bot
-0000000000005538 stbsp__negbot
-00000000000055e8 stbsp__negboterr
-0000000000005698 stbsp__negtop
-0000000000005700 stbsp__negtoperr
-0000000000005768 stbsp__top
-00000000000057d0 stbsp__toperr
-0000000000005838 stbsp__powten
-0000000000000000 stdlib.c
-0000000000004340 strtoull.part.0
-00000000000077f8 next
-0000000000007844 __atexit_func_count
-0000000000007848 __atexit_funcs
-0000000000007948 freep
-0000000000007950 base
-0000000000000000 string.c
-0000000000007960 olds.0
-0000000000000000 cxx.cc
-0000000000000000 iostream.cpp
-00000000000050c6 _GLOBAL__sub_I__ZSt3cin
-0000000000007800 _GLOBAL_OFFSET_TABLE_
-0000000000004c60 strcpy
-00000000000039d0 printf
-00000000000077e0 stdout
-00000000000058dc STDOUT_FD
-0000000000004316 ungetc
-0000000000005088 strerror
-0000000000004bc6 memmove
-000000000000397a snprintf
-00000000000001ee mknod
-0000000000004818 atol
-0000000000004526 getenv
-00000000000050ae _Znwm
-0000000000007840 errno
-0000000000004a78 labs
-00000000000049f2 bsearch
-0000000000000226 getpid
-0000000000004914 qsort
-0000000000003c0e fscanf
-0000000000003e80 fgets
-0000000000007978 _ZSt4cerr
-0000000000004c02 memcpy
-000000000000452a system
-00000000000042f6 feof
-00000000000045a4 malloc
-0000000000000236 sleep
-0000000000003930 vsnprintf
-0000000000004734 strtoll
-00000000000047de strtoul
-0000000000004b2a wctomb
-0000000000004b76 wcstombs
-0000000000003b98 fflush
-0000000000004b38 mbstowcs
-0000000000000256 lseek
-00000000000050b6 _ZdlPv
-000000000000451a abort
-0000000000004802 strtol
-00000000000001b6 pipe
-0000000000004af8 mblen
-0000000000004db4 strrchr
-000000000000466a calloc
-0000000000004824 strtod
-000000000000024e disk_test
-00000000000001c6 write
-00000000000048fe atof
-0000000000000086 _Z2lsPKc
-00000000000001fe fstat
-0000000000003bdc fprintf
-00000000000001d6 kill
-0000000000004ca4 strcat
-0000000000000216 chdir
-00000000000041fe fseek
-00000000000030ce stbsp_vsprintf
-00000000000001de exec
-0000000000004c28 memchr
-00000000000077e8 stdin
-00000000000001ae wait
-0000000000002fe8 stbsp_vsnprintf
-0000000000000194 _start
-0000000000004300 ferror
-0000000000004dcc strstr
-0000000000004ac2 rand
-00000000000001be read
-0000000000004e78 strlcpy
-0000000000004d54 strncmp
-0000000000001392 stbsp_set_separators
-00000000000050be _ZdlPvm
-0000000000004c72 strncpy
-00000000000001f6 unlink
-00000000000046b2 realloc
-0000000000004ff8 strtok
-0000000000004c04 memcmp
-00000000000001a6 fork
-0000000000003a0a sscanf
-0000000000004cd6 strncat
-0000000000003f5c fread
-000000000000022e sbrk
-0000000000004e34 strdup
-000000000000023e uptime
-0000000000004710 strtoull
-0000000000002fbe stbsp_sprintf
-0000000000003a6c fopen
-0000000000004bae memset
-0000000000000144 main
-0000000000004272 ftell
-0000000000004aea srand
-0000000000004ece strlcat
-000000000000430a clearerr
-00000000000050ba _ZdaPv
-0000000000003b30 fclose
-0000000000000246 putc
-0000000000004d1c strcmp
-000000000000025e shutdown
-000000000000021e dup
-0000000000003dea fgetc
-00000000000030dc sprintf
-0000000000004902 strtof
-00000000000044c0 atexit
-0000000000004f82 strcspn
-00000000000030ae stbsp_snprintf
-0000000000007968 _ZSt3cin
-0000000000003a3a scanf
-00000000000077f0 stderr
-0000000000004aa2 ldiv
-0000000000003c40 fputc
-00000000000050b2 _Znam
-0000000000004ab2 lldiv
-0000000000004076 fwrite
-000000000000429e rewind
-0000000000007970 _ZSt4cout
-0000000000000206 link
-00000000000044e4 exit
-000000000000019e sys_exit
-0000000000004a82 llabs
-0000000000004804 atoi
-00000000000058d8 STDERR_FD
-0000000000004f4e strspn
-0000000000004c46 strlen
-00000000000013a4 stbsp_vsprintfcb
-00000000000001e6 open
-00000000000058e0 STDIN_FD
-000000000000481e atoll
-0000000000004a8c div
-0000000000004a6e abs
-0000000000004d9c strchr
-0000000000003d04 fputs
-00000000000050c2 _ZdaPvm
-0000000000000000 _Z8fmt_namePcPKc
-000000000000020e mkdir
-00000000000001ce close
-0000000000004b0c mbtowc
-0000000000004fc2 strpbrk
-000000000000452e free
diff --git a/build/user/mkdir b/build/user/mkdir
deleted file mode 100755
index a87fa88..0000000
--- a/build/user/mkdir
+++ /dev/null
Binary files differ
diff --git a/build/user/mkdir.asm b/build/user/mkdir.asm
deleted file mode 100644
index ec4427e..0000000
--- a/build/user/mkdir.asm
+++ /dev/null
@@ -1,10640 +0,0 @@
-
-build/user/mkdir: file format elf64-littleriscv
-
-
-Disassembly of section .text:
-
-0000000000000000 <main>:
-#include "ulib/stdio.h"
-#include "user/user.h"
-
-int main(int argc, char* argv[])
-{
- 0: 1101 addi sp,sp,-32
- 2: ec06 sd ra,24(sp)
- if (argc < 2)
- 4: 4785 li a5,1
- 6: 04a7de63 bge a5,a0,62 <main+0x62>
- {
- printf("Usage: mkdir <dirname> ...\n");
- exit(1);
- }
-
- for (int i = 1; i < argc; i++)
- a: e426 sd s1,8(sp)
- c: ffe5049b addiw s1,a0,-2
- 10: 02049793 slli a5,s1,0x20
- 14: 01d7d493 srli s1,a5,0x1d
- 18: 01058793 addi a5,a1,16
- 1c: e822 sd s0,16(sp)
- 1e: e04a sd s2,0(sp)
- 20: 00858413 addi s0,a1,8
- 24: 94be add s1,s1,a5
- {
- if (mkdir(argv[i]) < 0)
- {
- printf("mkdir: cannot create directory '%s'\n", argv[i]);
- 26: 00005917 auipc s2,0x5
- 2a: fda90913 addi s2,s2,-38 # 5000 <_GLOBAL__sub_I__ZSt3cin+0x58>
- 2e: a021 j 36 <main+0x36>
- for (int i = 1; i < argc; i++)
- 30: 0421 addi s0,s0,8
- 32: 00940e63 beq s0,s1,4e <main+0x4e>
- if (mkdir(argv[i]) < 0)
- 36: 6008 ld a0,0(s0)
- 38: 0b8000ef jal f0 <mkdir>
- 3c: fe055ae3 bgez a0,30 <main+0x30>
- printf("mkdir: cannot create directory '%s'\n", argv[i]);
- 40: 600c ld a1,0(s0)
- 42: 854a mv a0,s2
- for (int i = 1; i < argc; i++)
- 44: 0421 addi s0,s0,8
- printf("mkdir: cannot create directory '%s'\n", argv[i]);
- 46: 06d030ef jal 38b2 <printf>
- for (int i = 1; i < argc; i++)
- 4a: fe9416e3 bne s0,s1,36 <main+0x36>
- 4e: 6442 ld s0,16(sp)
- 50: 64a2 ld s1,8(sp)
- 52: 6902 ld s2,0(sp)
- }
- }
-
- exit(0);
- 54: 4501 li a0,0
- 56: 370040ef jal 43c6 <exit>
- 5a: 60e2 ld ra,24(sp)
- 5c: 4501 li a0,0
- 5e: 6105 addi sp,sp,32
- 60: 8082 ret
- printf("Usage: mkdir <dirname> ...\n");
- 62: 00005517 auipc a0,0x5
- 66: f7e50513 addi a0,a0,-130 # 4fe0 <_GLOBAL__sub_I__ZSt3cin+0x38>
- 6a: 049030ef jal 38b2 <printf>
- exit(1);
- 6e: 4505 li a0,1
- 70: 356040ef jal 43c6 <exit>
- for (int i = 1; i < argc; i++)
- 74: b7c5 j 54 <main+0x54>
-
-0000000000000076 <_start>:
-.global _start
-
-_start:
-
-
- call main
- 76: f8bff0ef jal 0 <main>
-
- call exit
- 7a: 34c040ef jal 43c6 <exit>
-
- 7e: a001 j 7e <_start+0x8>
-
-0000000000000080 <sys_exit>:
- name: \
- li a7, SYS_ ## sysname; \
- ecall; \
- ret
-
-SYSCALL_NAME(sys_exit, exit)
- 80: 488d li a7,3
- 82: 00000073 ecall
- 86: 8082 ret
-
-0000000000000088 <fork>:
-
-SYSCALL(fork)
- 88: 4889 li a7,2
- 8a: 00000073 ecall
- 8e: 8082 ret
-
-0000000000000090 <wait>:
-SYSCALL(wait)
- 90: 4891 li a7,4
- 92: 00000073 ecall
- 96: 8082 ret
-
-0000000000000098 <pipe>:
-SYSCALL(pipe)
- 98: 4895 li a7,5
- 9a: 00000073 ecall
- 9e: 8082 ret
-
-00000000000000a0 <read>:
-SYSCALL(read)
- a0: 4899 li a7,6
- a2: 00000073 ecall
- a6: 8082 ret
-
-00000000000000a8 <write>:
-SYSCALL(write)
- a8: 48c5 li a7,17
- aa: 00000073 ecall
- ae: 8082 ret
-
-00000000000000b0 <close>:
-SYSCALL(close)
- b0: 48d9 li a7,22
- b2: 00000073 ecall
- b6: 8082 ret
-
-00000000000000b8 <kill>:
-SYSCALL(kill)
- b8: 489d li a7,7
- ba: 00000073 ecall
- be: 8082 ret
-
-00000000000000c0 <exec>:
-SYSCALL(exec)
- c0: 48a1 li a7,8
- c2: 00000073 ecall
- c6: 8082 ret
-
-00000000000000c8 <open>:
-SYSCALL(open)
- c8: 48c1 li a7,16
- ca: 00000073 ecall
- ce: 8082 ret
-
-00000000000000d0 <mknod>:
-SYSCALL(mknod)
- d0: 48c9 li a7,18
- d2: 00000073 ecall
- d6: 8082 ret
-
-00000000000000d8 <unlink>:
-SYSCALL(unlink)
- d8: 48cd li a7,19
- da: 00000073 ecall
- de: 8082 ret
-
-00000000000000e0 <fstat>:
-SYSCALL(fstat)
- e0: 48a5 li a7,9
- e2: 00000073 ecall
- e6: 8082 ret
-
-00000000000000e8 <link>:
-SYSCALL(link)
- e8: 48d1 li a7,20
- ea: 00000073 ecall
- ee: 8082 ret
-
-00000000000000f0 <mkdir>:
-SYSCALL(mkdir)
- f0: 48d5 li a7,21
- f2: 00000073 ecall
- f6: 8082 ret
-
-00000000000000f8 <chdir>:
-SYSCALL(chdir)
- f8: 48a9 li a7,10
- fa: 00000073 ecall
- fe: 8082 ret
-
-0000000000000100 <dup>:
-SYSCALL(dup)
- 100: 48ad li a7,11
- 102: 00000073 ecall
- 106: 8082 ret
-
-0000000000000108 <getpid>:
-SYSCALL(getpid)
- 108: 48b1 li a7,12
- 10a: 00000073 ecall
- 10e: 8082 ret
-
-0000000000000110 <sbrk>:
-SYSCALL(sbrk)
- 110: 48b5 li a7,13
- 112: 00000073 ecall
- 116: 8082 ret
-
-0000000000000118 <sleep>:
-SYSCALL(sleep)
- 118: 48b9 li a7,14
- 11a: 00000073 ecall
- 11e: 8082 ret
-
-0000000000000120 <uptime>:
-SYSCALL(uptime)
- 120: 48bd li a7,15
- 122: 00000073 ecall
- 126: 8082 ret
-
-0000000000000128 <putc>:
-SYSCALL(putc)
- 128: 4885 li a7,1
- 12a: 00000073 ecall
- 12e: 8082 ret
-
-0000000000000130 <disk_test>:
-SYSCALL(disk_test)
- 130: 48dd li a7,23
- 132: 00000073 ecall
- 136: 8082 ret
-
-0000000000000138 <lseek>:
-SYSCALL(lseek)
- 138: 48e1 li a7,24
- 13a: 00000073 ecall
- 13e: 8082 ret
-
-0000000000000140 <shutdown>:
- 140: 48e5 li a7,25
- 142: 00000073 ecall
- 146: 8082 ret
-
-0000000000000148 <stbsp__clamp_callback>:
- 148: 45dc lw a5,12(a1)
- 14a: 4598 lw a4,8(a1)
- 14c: 9fb1 addw a5,a5,a2
- 14e: c5dc sw a5,12(a1)
- 150: 0007069b sext.w a3,a4
- 154: 00e65463 bge a2,a4,15c <stbsp__clamp_callback+0x14>
- 158: 0006069b sext.w a3,a2
- 15c: c685 beqz a3,184 <stbsp__clamp_callback+0x3c>
- 15e: 619c ld a5,0(a1)
- 160: 00a78e63 beq a5,a0,17c <stbsp__clamp_callback+0x34>
- 164: 00d50633 add a2,a0,a3
- 168: 00054703 lbu a4,0(a0)
- 16c: 0505 addi a0,a0,1
- 16e: 0785 addi a5,a5,1
- 170: fee78fa3 sb a4,-1(a5)
- 174: fec56ae3 bltu a0,a2,168 <stbsp__clamp_callback+0x20>
- 178: 6188 ld a0,0(a1)
- 17a: 4598 lw a4,8(a1)
- 17c: 9f15 subw a4,a4,a3
- 17e: 9536 add a0,a0,a3
- 180: e188 sd a0,0(a1)
- 182: c598 sw a4,8(a1)
- 184: 1ff00793 li a5,511
- 188: 00e7d463 bge a5,a4,190 <stbsp__clamp_callback+0x48>
- 18c: 6188 ld a0,0(a1)
- 18e: 8082 ret
- 190: 01058513 addi a0,a1,16
- 194: 8082 ret
-
-0000000000000196 <stbsp__count_clamp_callback>:
- 196: 45dc lw a5,12(a1)
- 198: 01058513 addi a0,a1,16
- 19c: 9fb1 addw a5,a5,a2
- 19e: c5dc sw a5,12(a1)
- 1a0: 8082 ret
-
-00000000000001a2 <stbsp__real_to_str>:
- 1a2: e20508d3 fmv.x.d a7,fa0
- 1a6: 82aa mv t0,a0
- 1a8: 4348d813 srai a6,a7,0x34
- 1ac: 8ec6 mv t4,a7
- 1ae: 7ff87813 andi a6,a6,2047
- 1b2: 8346 mv t1,a7
- 1b4: 03f8d513 srli a0,a7,0x3f
- 1b8: 0008d663 bgez a7,1c4 <stbsp__real_to_str+0x22>
- 1bc: 22a517d3 fneg.d fa5,fa0
- 1c0: e20788d3 fmv.x.d a7,fa5
- 1c4: 7ff00e13 li t3,2047
- 1c8: 35c80663 beq a6,t3,514 <stbsp__real_to_str+0x372>
- 1cc: 1101 addi sp,sp,-32
- 1ce: 14080363 beqz a6,314 <stbsp__real_to_str+0x172>
- 1d2: c018081b addiw a6,a6,-1023
- 1d6: ec22 sd s0,24(sp)
- 1d8: 02081313 slli t1,a6,0x20
- 1dc: 66034d63 bltz t1,856 <stbsp__real_to_str+0x6b4>
- 1e0: 4d100313 li t1,1233
- 1e4: 0303033b mulw t1,t1,a6
- 1e8: 4849 li a6,18
- 1ea: 40c3531b sraiw t1,t1,0xc
- 1ee: 0013039b addiw t2,t1,1
- 1f2: 4078083b subw a6,a6,t2
- 1f6: 4359 li t1,22
- 1f8: 17036163 bltu t1,a6,35a <stbsp__real_to_str+0x1b8>
- 1fc: 00005317 auipc t1,0x5
- 200: 16430313 addi t1,t1,356 # 5360 <stbsp__bot>
- 204: 080e slli a6,a6,0x3
- 206: 981a add a6,a6,t1
- 208: 00083e03 ld t3,0(a6)
- 20c: 00083607 fld fa2,0(a6)
- 210: f20887d3 fmv.d.x fa5,a7
- 214: f8000837 lui a6,0xf8000
- 218: 01187333 and t1,a6,a7
- 21c: 01c87833 and a6,a6,t3
- 220: 12f676d3 fmul.d fa3,fa2,fa5
- 224: f20807d3 fmv.d.x fa5,a6
- 228: f2030753 fmv.d.x fa4,t1
- 22c: f20305d3 fmv.d.x fa1,t1
- 230: 0af67653 fsub.d fa2,fa2,fa5
- 234: f20887d3 fmv.d.x fa5,a7
- 238: 0ae7f753 fsub.d fa4,fa5,fa4
- 23c: f20807d3 fmv.d.x fa5,a6
- 240: 6ab7f7c7 fmsub.d fa5,fa5,fa1,fa3
- 244: 7ab677c3 fmadd.d fa5,fa2,fa1,fa5
- 248: f20805d3 fmv.d.x fa1,a6
- 24c: 7ab777c3 fmadd.d fa5,fa4,fa1,fa5
- 250: 7ac77743 fmadd.d fa4,fa4,fa2,fa5
- 254: 02d777d3 fadd.d fa5,fa4,fa3
- 258: 3782e837 lui a6,0x3782e
- 25c: acf80813 addi a6,a6,-1329 # 3782dacf <_ZSt4cerr+0x378262d7>
- 260: 0832 slli a6,a6,0xc
- 262: 9d980813 addi a6,a6,-1575
- 266: 084a slli a6,a6,0x12
- 268: 187d addi a6,a6,-1
- 26a: c22798d3 fcvt.l.d a7,fa5,rtz
- 26e: 0ad7f6d3 fsub.d fa3,fa5,fa3
- 272: 00070e1b sext.w t3,a4
- 276: d228f653 fcvt.d.l fa2,a7
- 27a: 0ac7f5d3 fsub.d fa1,fa5,fa2
- 27e: 0ad77753 fsub.d fa4,fa4,fa3
- 282: 0af5f6d3 fsub.d fa3,fa1,fa5
- 286: 0ad5f553 fsub.d fa0,fa1,fa3
- 28a: 02d67653 fadd.d fa2,fa2,fa3
- 28e: 0aa7f7d3 fsub.d fa5,fa5,fa0
- 292: 0ac7f7d3 fsub.d fa5,fa5,fa2
- 296: 02b7f7d3 fadd.d fa5,fa5,fa1
- 29a: 02e7f7d3 fadd.d fa5,fa5,fa4
- 29e: c2279fd3 fcvt.l.d t6,fa5,rtz
- 2a2: 9fc6 add t6,t6,a7
- 2a4: 19f87063 bgeu a6,t6,424 <stbsp__real_to_str+0x282>
- 2a8: 2385 addiw t2,t2,1
- 2aa: 300e4363 bltz t3,5b0 <stbsp__real_to_str+0x40e>
- 2ae: 00e3833b addw t1,t2,a4
- 2b2: 475d li a4,23
- 2b4: 30677663 bgeu a4,t1,5c0 <stbsp__real_to_str+0x41e>
- 2b8: 577d li a4,-1
- 2ba: 9301 srli a4,a4,0x20
- 2bc: 43f75863 bge a4,t6,6ec <stbsp__real_to_str+0x54a>
- 2c0: 07d00313 li t1,125
- 2c4: 877e mv a4,t6
- 2c6: 4e01 li t3,0
- 2c8: 3e800813 li a6,1000
- 2cc: 130e slli t1,t1,0x23
- 2ce: a039 j 2dc <stbsp__real_to_str+0x13a>
- 2d0: 030747b3 div a5,a4,a6
- 2d4: 4e05 li t3,1
- 2d6: 40674c63 blt a4,t1,6ee <stbsp__real_to_str+0x54c>
- 2da: 873e mv a4,a5
- 2dc: 030768b3 rem a7,a4,a6
- 2e0: fe0888e3 beqz a7,2d0 <stbsp__real_to_str+0x12e>
- 2e4: 400e0163 beqz t3,6e6 <stbsp__real_to_str+0x544>
- 2e8: 8fbe mv t6,a5
- 2ea: 05f5e7b7 lui a5,0x5f5e
- 2ee: 0ff78793 addi a5,a5,255 # 5f5e0ff <_ZSt4cerr+0x5f56907>
- 2f2: 04060413 addi s0,a2,64
- 2f6: 03860613 addi a2,a2,56
- 2fa: 15f7c863 blt a5,t6,44a <stbsp__real_to_str+0x2a8>
- 2fe: 000f871b sext.w a4,t6
- 302: 20070463 beqz a4,50a <stbsp__real_to_str+0x368>
- 306: 4f01 li t5,0
- 308: 4f81 li t6,0
- 30a: 00006e97 auipc t4,0x6
- 30e: 5f6e8e93 addi t4,t4,1526 # 6900 <stbsp__digitpair>
- 312: aaa9 j 46c <stbsp__real_to_str+0x2ca>
- 314: 0306 slli t1,t1,0x1
- 316: 3e030e63 beqz t1,712 <stbsp__real_to_str+0x570>
- 31a: 4305 li t1,1
- 31c: ec22 sd s0,24(sp)
- 31e: 00ce9e13 slli t3,t4,0xc
- 322: 134e slli t1,t1,0x33
- 324: 520e4063 bltz t3,844 <stbsp__real_to_str+0x6a2>
- 328: 40135313 srai t1,t1,0x1
- 32c: 01d37e33 and t3,t1,t4
- 330: 8f42 mv t5,a6
- 332: 387d addiw a6,a6,-1
- 334: fe0e0ae3 beqz t3,328 <stbsp__real_to_str+0x186>
- 338: 26900313 li t1,617
- 33c: c00f081b addiw a6,t5,-1024
- 340: 0268083b mulw a6,a6,t1
- 344: 41f8531b sraiw t1,a6,0x1f
- 348: 0153531b srliw t1,t1,0x15
- 34c: 0103033b addw t1,t1,a6
- 350: 40b3539b sraiw t2,t1,0xb
- 354: 4849 li a6,18
- 356: 4078083b subw a6,a6,t2
- 35a: 41f8531b sraiw t1,a6,0x1f
- 35e: 00684eb3 xor t4,a6,t1
- 362: 406e8f3b subw t5,t4,t1
- 366: 2c900313 li t1,713
- 36a: 03e3033b mulw t1,t1,t5
- 36e: 4e35 li t3,13
- 370: 8efa mv t4,t5
- 372: 40e35f9b sraiw t6,t1,0xe
- 376: 837e mv t1,t6
- 378: 23fe4363 blt t3,t6,59e <stbsp__real_to_str+0x3fc>
- 37c: 5e25 li t3,-23
- 37e: 026e0e3b mulw t3,t3,t1
- 382: 01de0ebb addw t4,t3,t4
- 386: 22084f63 bltz a6,5c4 <stbsp__real_to_str+0x422>
- 38a: f2000753 fmv.d.x fa4,zero
- 38e: 00005e17 auipc t3,0x5
- 392: fd2e0e13 addi t3,t3,-46 # 5360 <stbsp__bot>
- 396: 380e9e63 bnez t4,732 <stbsp__real_to_str+0x590>
- 39a: f20887d3 fmv.d.x fa5,a7
- 39e: fff30f1b addiw t5,t1,-1
- 3a2: 0f0e slli t5,t5,0x3
- 3a4: 02f777d3 fadd.d fa5,fa4,fa5
- 3a8: 030e slli t1,t1,0x3
- 3aa: 9f72 add t5,t5,t3
- 3ac: 9e1a add t3,t3,t1
- 3ae: 2e0e3e03 ld t3,736(t3)
- 3b2: 2e8f3587 fld fa1,744(t5)
- 3b6: f8000837 lui a6,0xf8000
- 3ba: e2078ed3 fmv.x.d t4,fa5
- 3be: 12b7f6d3 fmul.d fa3,fa5,fa1
- 3c2: f2088653 fmv.d.x fa2,a7
- 3c6: 01d87333 and t1,a6,t4
- 3ca: 01c87833 and a6,a6,t3
- 3ce: f20807d3 fmv.d.x fa5,a6
- 3d2: f2030053 fmv.d.x ft0,t1
- 3d6: 0af5f553 fsub.d fa0,fa1,fa5
- 3da: f20e87d3 fmv.d.x fa5,t4
- 3de: 0ac7f0d3 fsub.d ft1,fa5,fa2
- 3e2: f20807d3 fmv.d.x fa5,a6
- 3e6: f2030653 fmv.d.x fa2,t1
- 3ea: 6ac7f647 fmsub.d fa2,fa5,fa2,fa3
- 3ee: f20e87d3 fmv.d.x fa5,t4
- 3f2: 0a177753 fsub.d fa4,fa4,ft1
- 3f6: f20300d3 fmv.d.x ft1,t1
- 3fa: 0a07f7d3 fsub.d fa5,fa5,ft0
- 3fe: 350f3007 fld ft0,848(t5)
- 402: 62157643 fmadd.d fa2,fa0,ft1,fa2
- 406: 12b77753 fmul.d fa4,fa4,fa1
- 40a: f20805d3 fmv.d.x fa1,a6
- 40e: 62b7f643 fmadd.d fa2,fa5,fa1,fa2
- 412: f20e85d3 fmv.d.x fa1,t4
- 416: 7205f743 fmadd.d fa4,fa1,ft0,fa4
- 41a: 62a7f7c3 fmadd.d fa5,fa5,fa0,fa2
- 41e: 02e7f753 fadd.d fa4,fa5,fa4
- 422: bd0d j 254 <stbsp__real_to_str+0xb2>
- 424: 00e3833b addw t1,t2,a4
- 428: 2a0e4663 bltz t3,6d4 <stbsp__real_to_str+0x532>
- 42c: 475d li a4,23
- 42e: 10677663 bgeu a4,t1,53a <stbsp__real_to_str+0x398>
- 432: e80f93e3 bnez t6,2b8 <stbsp__real_to_str+0x116>
- 436: 05f5e7b7 lui a5,0x5f5e
- 43a: 0ff78793 addi a5,a5,255 # 5f5e0ff <_ZSt4cerr+0x5f56907>
- 43e: 04060413 addi s0,a2,64
- 442: 03860613 addi a2,a2,56
- 446: ebf7dce3 bge a5,t6,2fe <stbsp__real_to_str+0x15c>
- 44a: 4f01 li t5,0
- 44c: 00006e97 auipc t4,0x6
- 450: 4b4e8e93 addi t4,t4,1204 # 6900 <stbsp__digitpair>
- 454: 05f5e7b7 lui a5,0x5f5e
- 458: 10078793 addi a5,a5,256 # 5f5e100 <_ZSt4cerr+0x5f56908>
- 45c: 02ffe833 rem a6,t6,a5
- 460: 02ffcfb3 div t6,t6,a5
- 464: 0008071b sext.w a4,a6
- 468: 0a080463 beqz a6,510 <stbsp__real_to_str+0x36e>
- 46c: 8822 mv a6,s0
- 46e: 06400893 li a7,100
- 472: 06300e13 li t3,99
- 476: 1879 addi a6,a6,-2 # fffffffff7fffffe <_ZSt4cerr+0xfffffffff7ff8806>
- 478: 0007031b sext.w t1,a4
- 47c: 031777bb remuw a5,a4,a7
- 480: 2785 addiw a5,a5,1
- 482: 0017979b slliw a5,a5,0x1
- 486: 1782 slli a5,a5,0x20
- 488: 9381 srli a5,a5,0x20
- 48a: 97f6 add a5,a5,t4
- 48c: 0007d783 lhu a5,0(a5)
- 490: 0317573b divuw a4,a4,a7
- 494: 00f81023 sh a5,0(a6)
- 498: fc6e6fe3 bltu t3,t1,476 <stbsp__real_to_str+0x2d4>
- 49c: 008f0f3b addw t5,t5,s0
- 4a0: 410f0f3b subw t5,t5,a6
- 4a4: 020f8f63 beqz t6,4e2 <stbsp__real_to_str+0x340>
- 4a8: 87c2 mv a5,a6
- 4aa: 03000713 li a4,48
- 4ae: 04c80c63 beq a6,a2,506 <stbsp__real_to_str+0x364>
- 4b2: 17fd addi a5,a5,-1
- 4b4: 00e78023 sb a4,0(a5)
- 4b8: fec79de3 bne a5,a2,4b2 <stbsp__real_to_str+0x310>
- 4bc: 408807b3 sub a5,a6,s0
- 4c0: 00ff07bb addw a5,t5,a5
- 4c4: 1461 addi s0,s0,-8
- 4c6: 00878f1b addiw t5,a5,8
- 4ca: 05f5e7b7 lui a5,0x5f5e
- 4ce: 0ff78793 addi a5,a5,255 # 5f5e0ff <_ZSt4cerr+0x5f56907>
- 4d2: ff840613 addi a2,s0,-8
- 4d6: f7f7cfe3 blt a5,t6,454 <stbsp__real_to_str+0x2b2>
- 4da: 000f871b sext.w a4,t6
- 4de: 4f81 li t6,0
- 4e0: b771 j 46c <stbsp__real_to_str+0x2ca>
- 4e2: 020f0563 beqz t5,50c <stbsp__real_to_str+0x36a>
- 4e6: 00084703 lbu a4,0(a6)
- 4ea: 03000793 li a5,48
- 4ee: 22f70f63 beq a4,a5,72c <stbsp__real_to_str+0x58a>
- 4f2: 2f01 sext.w t5,t5
- 4f4: 0076a023 sw t2,0(a3)
- 4f8: 6462 ld s0,24(sp)
- 4fa: 0102b023 sd a6,0(t0)
- 4fe: 01e5a023 sw t5,0(a1)
- 502: 6105 addi sp,sp,32
- 504: 8082 ret
- 506: 8442 mv s0,a6
- 508: b7c9 j 4ca <stbsp__real_to_str+0x328>
- 50a: 8822 mv a6,s0
- 50c: 4f01 li t5,0
- 50e: b7dd j 4f4 <stbsp__real_to_str+0x352>
- 510: 8822 mv a6,s0
- 512: bf59 j 4a8 <stbsp__real_to_str+0x306>
- 514: 0eb2 slli t4,t4,0xc
- 516: 00005797 auipc a5,0x5
- 51a: b1a78793 addi a5,a5,-1254 # 5030 <_GLOBAL__sub_I__ZSt3cin+0x88>
- 51e: 000e8663 beqz t4,52a <stbsp__real_to_str+0x388>
- 522: 00005797 auipc a5,0x5
- 526: b0678793 addi a5,a5,-1274 # 5028 <_GLOBAL__sub_I__ZSt3cin+0x80>
- 52a: 00f2b023 sd a5,0(t0)
- 52e: 679d lui a5,0x7
- 530: c29c sw a5,0(a3)
- 532: 4f0d li t5,3
- 534: 01e5a023 sw t5,0(a1)
- 538: 8082 ret
- 53a: 3b9ad737 lui a4,0x3b9ad
- 53e: 9ff70713 addi a4,a4,-1537 # 3b9ac9ff <_ZSt4cerr+0x3b9a5207>
- 542: 07f76f63 bltu a4,t6,5c0 <stbsp__real_to_str+0x41e>
- 546: 4805 li a6,1
- 548: 02081713 slli a4,a6,0x20
- 54c: 01d75893 srli a7,a4,0x1d
- 550: 00005717 auipc a4,0x5
- 554: 1c870713 addi a4,a4,456 # 5718 <stbsp__powten>
- 558: 9746 add a4,a4,a7
- 55a: 4e51 li t3,20
- 55c: a021 j 564 <stbsp__real_to_str+0x3c2>
- 55e: 2805 addiw a6,a6,1
- 560: edc809e3 beq a6,t3,432 <stbsp__real_to_str+0x290>
- 564: 00073883 ld a7,0(a4)
- 568: 0721 addi a4,a4,8
- 56a: ff1ffae3 bgeu t6,a7,55e <stbsp__real_to_str+0x3bc>
- 56e: ed0372e3 bgeu t1,a6,432 <stbsp__real_to_str+0x290>
- 572: 4068083b subw a6,a6,t1
- 576: 475d li a4,23
- 578: eb076de3 bltu a4,a6,432 <stbsp__real_to_str+0x290>
- 57c: 080e slli a6,a6,0x3
- 57e: 00005717 auipc a4,0x5
- 582: de270713 addi a4,a4,-542 # 5360 <stbsp__bot>
- 586: 9742 add a4,a4,a6
- 588: 3b873803 ld a6,952(a4)
- 58c: 00185713 srli a4,a6,0x1
- 590: 977e add a4,a4,t6
- 592: 01176363 bltu a4,a7,598 <stbsp__real_to_str+0x3f6>
- 596: 2385 addiw t2,t2,1
- 598: 03075fb3 divu t6,a4,a6
- 59c: bd59 j 432 <stbsp__real_to_str+0x290>
- 59e: 4335 li t1,13
- 5a0: 5e25 li t3,-23
- 5a2: 026e0e3b mulw t3,t3,t1
- 5a6: 01de0ebb addw t4,t3,t4
- 5aa: de0850e3 bgez a6,38a <stbsp__real_to_str+0x1e8>
- 5ae: a819 j 5c4 <stbsp__real_to_str+0x422>
- 5b0: 02571313 slli t1,a4,0x25
- 5b4: 02535313 srli t1,t1,0x25
- 5b8: 0305 addi t1,t1,1
- 5ba: 475d li a4,23
- 5bc: ce676ee3 bltu a4,t1,2b8 <stbsp__real_to_str+0x116>
- 5c0: 4829 li a6,10
- 5c2: b759 j 548 <stbsp__real_to_str+0x3a6>
- 5c4: 260e8663 beqz t4,830 <stbsp__real_to_str+0x68e>
- 5c8: 00231e13 slli t3,t1,0x2
- 5cc: 41c30e33 sub t3,t1,t3
- 5d0: 0e0e slli t3,t3,0x3
- 5d2: 9e1a add t3,t3,t1
- 5d4: fffe881b addiw a6,t4,-1
- 5d8: 9e7a add t3,t3,t5
- 5da: 00005e97 auipc t4,0x5
- 5de: d86e8e93 addi t4,t4,-634 # 5360 <stbsp__bot>
- 5e2: 0e0e slli t3,t3,0x3
- 5e4: 080e slli a6,a6,0x3
- 5e6: 9876 add a6,a6,t4
- 5e8: 9ef2 add t4,t4,t3
- 5ea: 0b883607 fld fa2,184(a6)
- 5ee: f20887d3 fmv.d.x fa5,a7
- 5f2: 0b0ebf03 ld t5,176(t4)
- 5f6: f8000e37 lui t3,0xf8000
- 5fa: 011e7eb3 and t4,t3,a7
- 5fe: 12f676d3 fmul.d fa3,fa2,fa5
- 602: 01ee7e33 and t3,t3,t5
- 606: f20e07d3 fmv.d.x fa5,t3
- 60a: f20e0753 fmv.d.x fa4,t3
- 60e: f20e8553 fmv.d.x fa0,t4
- 612: 0af67653 fsub.d fa2,fa2,fa5
- 616: f20e87d3 fmv.d.x fa5,t4
- 61a: f20e85d3 fmv.d.x fa1,t4
- 61e: 6ae7f7c7 fmsub.d fa5,fa5,fa4,fa3
- 622: f2088753 fmv.d.x fa4,a7
- 626: 0ab775d3 fsub.d fa1,fa4,fa1
- 62a: 16883707 fld fa4,360(a6)
- 62e: 7aa677c3 fmadd.d fa5,fa2,fa0,fa5
- 632: f20e0553 fmv.d.x fa0,t3
- 636: 7aa5f7c3 fmadd.d fa5,fa1,fa0,fa5
- 63a: 7ac5f5c3 fmadd.d fa1,fa1,fa2,fa5
- 63e: f20887d3 fmv.d.x fa5,a7
- 642: 5af77743 fmadd.d fa4,fa4,fa5,fa1
- 646: c00f87e3 beqz t6,254 <stbsp__real_to_str+0xb2>
- 64a: 02d777d3 fadd.d fa5,fa4,fa3
- 64e: fff3089b addiw a7,t1,-1
- 652: 00005817 auipc a6,0x5
- 656: d0e80813 addi a6,a6,-754 # 5360 <stbsp__bot>
- 65a: 030e slli t1,t1,0x3
- 65c: 088e slli a7,a7,0x3
- 65e: 98c2 add a7,a7,a6
- 660: 981a add a6,a6,t1
- 662: e2078e53 fmv.x.d t3,fa5
- 666: 21083e83 ld t4,528(a6)
- 66a: f8000837 lui a6,0xf8000
- 66e: 2188b507 fld fa0,536(a7)
- 672: 01c87333 and t1,a6,t3
- 676: 01d87833 and a6,a6,t4
- 67a: f2080653 fmv.d.x fa2,a6
- 67e: 12f577d3 fmul.d fa5,fa0,fa5
- 682: 2808b587 fld fa1,640(a7)
- 686: 0ac57053 fsub.d ft0,fa0,fa2
- 68a: f20e0653 fmv.d.x fa2,t3
- 68e: 0ad67153 fsub.d ft2,fa2,fa3
- 692: f20806d3 fmv.d.x fa3,a6
- 696: f2030653 fmv.d.x fa2,t1
- 69a: 7ac6f0c7 fmsub.d ft1,fa3,fa2,fa5
- 69e: f20e06d3 fmv.d.x fa3,t3
- 6a2: 0ac6f653 fsub.d fa2,fa3,fa2
- 6a6: 22f786d3 fmv.d fa3,fa5
- 6aa: 0a2777d3 fsub.d fa5,fa4,ft2
- 6ae: f2030753 fmv.d.x fa4,t1
- 6b2: 0ae07743 fmadd.d fa4,ft0,fa4,ft1
- 6b6: 12a7f7d3 fmul.d fa5,fa5,fa0
- 6ba: f2080553 fmv.d.x fa0,a6
- 6be: 72a67743 fmadd.d fa4,fa2,fa0,fa4
- 6c2: f20e0553 fmv.d.x fa0,t3
- 6c6: 7aa5f7c3 fmadd.d fa5,fa1,fa0,fa5
- 6ca: 72067643 fmadd.d fa2,fa2,ft0,fa4
- 6ce: 02f67753 fadd.d fa4,fa2,fa5
- 6d2: b649 j 254 <stbsp__real_to_str+0xb2>
- 6d4: 02571313 slli t1,a4,0x25
- 6d8: 02535313 srli t1,t1,0x25
- 6dc: 0305 addi t1,t1,1
- 6de: 475d li a4,23
- 6e0: d46769e3 bltu a4,t1,432 <stbsp__real_to_str+0x290>
- 6e4: bd99 j 53a <stbsp__real_to_str+0x398>
- 6e6: 87fe mv a5,t6
- 6e8: 8fbe mv t6,a5
- 6ea: b101 j 2ea <stbsp__real_to_str+0x148>
- 6ec: 87fe mv a5,t6
- 6ee: 3e800713 li a4,1000
- 6f2: 02e7f73b remuw a4,a5,a4
- 6f6: 2781 sext.w a5,a5
- 6f8: eb01 bnez a4,708 <stbsp__real_to_str+0x566>
- 6fa: 3e800813 li a6,1000
- 6fe: 0307d7bb divuw a5,a5,a6
- 702: 0307f73b remuw a4,a5,a6
- 706: df65 beqz a4,6fe <stbsp__real_to_str+0x55c>
- 708: 02079f93 slli t6,a5,0x20
- 70c: 020fdf93 srli t6,t6,0x20
- 710: b31d j 436 <stbsp__real_to_str+0x294>
- 712: 4785 li a5,1
- 714: c29c sw a5,0(a3)
- 716: 00c2b023 sd a2,0(t0)
- 71a: 03000793 li a5,48
- 71e: 00f60023 sb a5,0(a2)
- 722: 4f05 li t5,1
- 724: 01e5a023 sw t5,0(a1)
- 728: 6105 addi sp,sp,32
- 72a: 8082 ret
- 72c: 0805 addi a6,a6,1 # fffffffff8000001 <_ZSt4cerr+0xfffffffff7ff8809>
- 72e: 3f7d addiw t5,t5,-1
- 730: b3d1 j 4f4 <stbsp__real_to_str+0x352>
- 732: e826 sd s1,16(sp)
- 734: e44a sd s2,8(sp)
- 736: 4859 li a6,22
- 738: 8976 mv s2,t4
- 73a: 11d84363 blt a6,t4,840 <stbsp__real_to_str+0x69e>
- 73e: 0009049b sext.w s1,s2
- 742: 00005e17 auipc t3,0x5
- 746: c1ee0e13 addi t3,t3,-994 # 5360 <stbsp__bot>
- 74a: 00349813 slli a6,s1,0x3
- 74e: 9872 add a6,a6,t3
- 750: 00083687 fld fa3,0(a6)
- 754: 00083803 ld a6,0(a6)
- 758: f20887d3 fmv.d.x fa5,a7
- 75c: f8000fb7 lui t6,0xf8000
- 760: 010ff833 and a6,t6,a6
- 764: 12f6f553 fmul.d fa0,fa3,fa5
- 768: f20807d3 fmv.d.x fa5,a6
- 76c: 011ff433 and s0,t6,a7
- 770: f2040753 fmv.d.x fa4,s0
- 774: 0af6f6d3 fsub.d fa3,fa3,fa5
- 778: f20887d3 fmv.d.x fa5,a7
- 77c: f2080653 fmv.d.x fa2,a6
- 780: 412e8ebb subw t4,t4,s2
- 784: 0ae7f753 fsub.d fa4,fa5,fa4
- 788: f20407d3 fmv.d.x fa5,s0
- 78c: e20508d3 fmv.x.d a7,fa0
- 790: 52c7f7c7 fmsub.d fa5,fa5,fa2,fa0
- 794: f2040653 fmv.d.x fa2,s0
- 798: 7ac6f7c3 fmadd.d fa5,fa3,fa2,fa5
- 79c: f2080653 fmv.d.x fa2,a6
- 7a0: 7ac777c3 fmadd.d fa5,fa4,fa2,fa5
- 7a4: 7ad77743 fmadd.d fa4,fa4,fa3,fa5
- 7a8: 080e8963 beqz t4,83a <stbsp__real_to_str+0x698>
- 7ac: 02e577d3 fadd.d fa5,fa0,fa4
- 7b0: 0e8e slli t4,t4,0x3
- 7b2: 01de0833 add a6,t3,t4
- 7b6: 00083587 fld fa1,0(a6)
- 7ba: 00231893 slli a7,t1,0x2
- 7be: 411308b3 sub a7,t1,a7
- 7c2: 00389813 slli a6,a7,0x3
- 7c6: e2078453 fmv.x.d s0,fa5
- 7ca: 12f5f7d3 fmul.d fa5,fa1,fa5
- 7ce: 981a add a6,a6,t1
- 7d0: 987a add a6,a6,t5
- 7d2: 40980833 sub a6,a6,s1
- 7d6: 080e slli a6,a6,0x3
- 7d8: 9872 add a6,a6,t3
- 7da: 00083e83 ld t4,0(a6)
- 7de: 008ff833 and a6,t6,s0
- 7e2: e20788d3 fmv.x.d a7,fa5
- 7e6: f20806d3 fmv.d.x fa3,a6
- 7ea: f20407d3 fmv.d.x fa5,s0
- 7ee: 01dfffb3 and t6,t6,t4
- 7f2: f20880d3 fmv.d.x ft1,a7
- 7f6: 0ad7f653 fsub.d fa2,fa5,fa3
- 7fa: f20f87d3 fmv.d.x fa5,t6
- 7fe: 64c2 ld s1,16(sp)
- 800: 6922 ld s2,8(sp)
- 802: 0af5f053 fsub.d ft0,fa1,fa5
- 806: 0ad7f6c7 fmsub.d fa3,fa5,fa3,ft1
- 80a: f20407d3 fmv.d.x fa5,s0
- 80e: 0aa7f7d3 fsub.d fa5,fa5,fa0
- 812: f2080553 fmv.d.x fa0,a6
- 816: 6aa076c3 fmadd.d fa3,ft0,fa0,fa3
- 81a: 0af77753 fsub.d fa4,fa4,fa5
- 81e: f20f87d3 fmv.d.x fa5,t6
- 822: 6af677c3 fmadd.d fa5,fa2,fa5,fa3
- 826: 7a067643 fmadd.d fa2,fa2,ft0,fa5
- 82a: 62e5f743 fmadd.d fa4,fa1,fa4,fa2
- 82e: b6b5 j 39a <stbsp__real_to_str+0x1f8>
- 830: f20886d3 fmv.d.x fa3,a7
- 834: f2000753 fmv.d.x fa4,zero
- 838: b539 j 646 <stbsp__real_to_str+0x4a4>
- 83a: 64c2 ld s1,16(sp)
- 83c: 6922 ld s2,8(sp)
- 83e: beb1 j 39a <stbsp__real_to_str+0x1f8>
- 840: 4959 li s2,22
- 842: bdf5 j 73e <stbsp__real_to_str+0x59c>
- 844: e826 sd s1,16(sp)
- 846: e44a sd s2,8(sp)
- 848: ecc00393 li t2,-308
- 84c: 4eed li t4,27
- 84e: 4335 li t1,13
- 850: 14600f13 li t5,326
- 854: b5cd j 736 <stbsp__real_to_str+0x594>
- 856: 26900313 li t1,617
- 85a: 0303083b mulw a6,t1,a6
- 85e: 41f8531b sraiw t1,a6,0x1f
- 862: 0153531b srliw t1,t1,0x15
- 866: 0103033b addw t1,t1,a6
- 86a: 40b3539b sraiw t2,t1,0xb
- 86e: 4849 li a6,18
- 870: 4078083b subw a6,a6,t2
- 874: b249 j 1f6 <stbsp__real_to_str+0x54>
-
-0000000000000876 <_in_char.part.0>:
-static int _in_char(_InContext *ctx)
- 876: 87aa mv a5,a0
- if (ctx->fd == -1)
- 878: 4508 lw a0,8(a0)
- 87a: 577d li a4,-1
- 87c: 00e51d63 bne a0,a4,896 <_in_char.part.0+0x20>
- if (ctx->buf[ctx->pos] == '\0')
- 880: 6b94 ld a3,16(a5)
- 882: 6398 ld a4,0(a5)
- 884: 9736 add a4,a4,a3
- 886: 00074603 lbu a2,0(a4)
- 88a: c60d beqz a2,8b4 <_in_char.part.0+0x3e>
- return (unsigned char)ctx->buf[ctx->pos++];
- 88c: 0685 addi a3,a3,1
- 88e: eb94 sd a3,16(a5)
- 890: 00074503 lbu a0,0(a4)
- 894: 8082 ret
-static int _in_char(_InContext *ctx)
- 896: 1101 addi sp,sp,-32
- if (read(ctx->fd, &c, 1) == 1)
- 898: 4605 li a2,1
- 89a: 00f10593 addi a1,sp,15
-static int _in_char(_InContext *ctx)
- 89e: ec06 sd ra,24(sp)
- if (read(ctx->fd, &c, 1) == 1)
- 8a0: 801ff0ef jal a0 <read>
- 8a4: 4785 li a5,1
- 8a6: 00f51963 bne a0,a5,8b8 <_in_char.part.0+0x42>
- return (unsigned char)c;
- 8aa: 00f14503 lbu a0,15(sp)
-}
- 8ae: 60e2 ld ra,24(sp)
- 8b0: 6105 addi sp,sp,32
- 8b2: 8082 ret
- return -1;
- 8b4: 557d li a0,-1
-}
- 8b6: 8082 ret
- return -1;
- 8b8: 557d li a0,-1
- 8ba: bfd5 j 8ae <_in_char.part.0+0x38>
-
-00000000000008bc <_skip_space>:
-{
- 8bc: 7139 addi sp,sp,-64
- 8be: f822 sd s0,48(sp)
- 8c0: f426 sd s1,40(sp)
- 8c2: f04a sd s2,32(sp)
- 8c4: ec4e sd s3,24(sp)
- 8c6: e852 sd s4,16(sp)
- 8c8: fc06 sd ra,56(sp)
- 8ca: 842a mv s0,a0
- ctx->ungotten = -1;
- 8cc: 54fd li s1,-1
- if (read(ctx->fd, &c, 1) == 1)
- 8ce: 00f10a13 addi s4,sp,15
- return c == ' ' || c == '\t' || c == '\n' || c == '\v' || c == '\f' || c == '\r';
- 8d2: 02000913 li s2,32
- 8d6: 4991 li s3,4
- if (ctx->ungotten >= 0)
- 8d8: 4c1c lw a5,24(s0)
- 8da: 0407d163 bgez a5,91c <_skip_space+0x60>
- if (ctx->fd == -1)
- 8de: 4408 lw a0,8(s0)
- if (read(ctx->fd, &c, 1) == 1)
- 8e0: 4605 li a2,1
- 8e2: 85d2 mv a1,s4
- if (ctx->fd == -1)
- 8e4: 02951e63 bne a0,s1,920 <_skip_space+0x64>
- if (ctx->buf[ctx->pos] == '\0')
- 8e8: 6818 ld a4,16(s0)
- 8ea: 601c ld a5,0(s0)
- return (unsigned char)ctx->buf[ctx->pos++];
- 8ec: 00170693 addi a3,a4,1
- if (ctx->buf[ctx->pos] == '\0')
- 8f0: 97ba add a5,a5,a4
- 8f2: 0007c703 lbu a4,0(a5) # 7000 <_stdout+0x1e0>
- 8f6: cb19 beqz a4,90c <_skip_space+0x50>
- return (unsigned char)ctx->buf[ctx->pos++];
- 8f8: e814 sd a3,16(s0)
- 8fa: 0007c783 lbu a5,0(a5)
- return c == ' ' || c == '\t' || c == '\n' || c == '\v' || c == '\f' || c == '\r';
- 8fe: ff77871b addiw a4,a5,-9
- 902: fd278be3 beq a5,s2,8d8 <_skip_space+0x1c>
- 906: fce9f9e3 bgeu s3,a4,8d8 <_skip_space+0x1c>
- ctx->ungotten = c;
- 90a: cc1c sw a5,24(s0)
-}
- 90c: 70e2 ld ra,56(sp)
- 90e: 7442 ld s0,48(sp)
- 910: 74a2 ld s1,40(sp)
- 912: 7902 ld s2,32(sp)
- 914: 69e2 ld s3,24(sp)
- 916: 6a42 ld s4,16(sp)
- 918: 6121 addi sp,sp,64
- 91a: 8082 ret
- ctx->ungotten = -1;
- 91c: cc04 sw s1,24(s0)
- return c;
- 91e: b7c5 j 8fe <_skip_space+0x42>
- if (read(ctx->fd, &c, 1) == 1)
- 920: f80ff0ef jal a0 <read>
- 924: 4785 li a5,1
- 926: fef513e3 bne a0,a5,90c <_skip_space+0x50>
- return (unsigned char)c;
- 92a: 00f14783 lbu a5,15(sp)
- 92e: bfc1 j 8fe <_skip_space+0x42>
-
-0000000000000930 <_vscanf_core.constprop.0>:
-static int _vscanf_core(_InContext *ctx, const char *format, va_list ap)
- 930: 7155 addi sp,sp,-208
- 932: e586 sd ra,200(sp)
- 934: e95a sd s6,144(sp)
- while (*p)
- 936: 0005c783 lbu a5,0(a1)
-static int _vscanf_core(_InContext *ctx, const char *format, va_list ap)
- 93a: e432 sd a2,8(sp)
- while (*p)
- 93c: 68078b63 beqz a5,fd2 <_vscanf_core.constprop.0+0x6a2>
- 940: e1a2 sd s0,192(sp)
- 942: fd26 sd s1,184(sp)
- 944: f152 sd s4,160(sp)
- 946: ed56 sd s5,152(sp)
- 948: f4ee sd s11,104(sp)
- 94a: 842e mv s0,a1
- 94c: 8daa mv s11,a0
- int assigned = 0;
- 94e: 4b01 li s6,0
- return c == ' ' || c == '\t' || c == '\n' || c == '\v' || c == '\f' || c == '\r';
- 950: 02000493 li s1,32
- 954: 4a91 li s5,4
- if (*p != '%')
- 956: 02500a13 li s4,37
- return c == ' ' || c == '\t' || c == '\n' || c == '\v' || c == '\f' || c == '\r';
- 95a: 04978763 beq a5,s1,9a8 <_vscanf_core.constprop.0+0x78>
- 95e: ff77869b addiw a3,a5,-9
- 962: 0ff6f693 zext.b a3,a3
- 966: 04daf163 bgeu s5,a3,9a8 <_vscanf_core.constprop.0+0x78>
- if (*p != '%')
- 96a: 07478d63 beq a5,s4,9e4 <_vscanf_core.constprop.0+0xb4>
- _skip_space(ctx);
- 96e: 856e mv a0,s11
- 970: f4dff0ef jal 8bc <_skip_space>
- if (ctx->ungotten >= 0)
- 974: 018da503 lw a0,24(s11)
- 978: 04055a63 bgez a0,9cc <_vscanf_core.constprop.0+0x9c>
- 97c: 856e mv a0,s11
- 97e: ef9ff0ef jal 876 <_in_char.part.0>
- if (c != *p)
- 982: 00044783 lbu a5,0(s0)
- 986: 04a78a63 beq a5,a0,9da <_vscanf_core.constprop.0+0xaa>
- if (c != -1)
- 98a: 57fd li a5,-1
- 98c: 00f50463 beq a0,a5,994 <_vscanf_core.constprop.0+0x64>
- ctx->ungotten = c;
- 990: 00adac23 sw a0,24(s11)
- 994: 640e ld s0,192(sp)
- 996: 74ea ld s1,184(sp)
- 998: 7a0a ld s4,160(sp)
- 99a: 6aea ld s5,152(sp)
- 99c: 7da6 ld s11,104(sp)
-}
- 99e: 60ae ld ra,200(sp)
- 9a0: 855a mv a0,s6
- 9a2: 6b4a ld s6,144(sp)
- 9a4: 6169 addi sp,sp,208
- 9a6: 8082 ret
- _skip_space(ctx);
- 9a8: 856e mv a0,s11
- 9aa: f13ff0ef jal 8bc <_skip_space>
- while (isspace(*p))
- 9ae: 00044783 lbu a5,0(s0)
- return c == ' ' || c == '\t' || c == '\n' || c == '\v' || c == '\f' || c == '\r';
- 9b2: 4611 li a2,4
- 9b4: ff77869b addiw a3,a5,-9
- 9b8: 0ff6f693 zext.b a3,a3
- 9bc: 00978663 beq a5,s1,9c8 <_vscanf_core.constprop.0+0x98>
- 9c0: 00d67463 bgeu a2,a3,9c8 <_vscanf_core.constprop.0+0x98>
- while (*p)
- 9c4: fbd9 bnez a5,95a <_vscanf_core.constprop.0+0x2a>
- 9c6: b7f9 j 994 <_vscanf_core.constprop.0+0x64>
- p++;
- 9c8: 0405 addi s0,s0,1
- 9ca: b7d5 j 9ae <_vscanf_core.constprop.0+0x7e>
- ctx->ungotten = -1;
- 9cc: 57fd li a5,-1
- 9ce: 00fdac23 sw a5,24(s11)
- if (c != *p)
- 9d2: 00044783 lbu a5,0(s0)
- 9d6: faa79ae3 bne a5,a0,98a <_vscanf_core.constprop.0+0x5a>
- while (*p)
- 9da: 00144783 lbu a5,1(s0)
- p++;
- 9de: 0405 addi s0,s0,1
- while (*p)
- 9e0: ffad bnez a5,95a <_vscanf_core.constprop.0+0x2a>
- 9e2: bf4d j 994 <_vscanf_core.constprop.0+0x64>
- 9e4: f94a sd s2,176(sp)
- 9e6: f54e sd s3,168(sp)
- 9e8: e55e sd s7,136(sp)
- 9ea: e162 sd s8,128(sp)
- if (*p == '*')
- 9ec: 00144583 lbu a1,1(s0)
- 9f0: 02a00793 li a5,42
- 9f4: 22f58d63 beq a1,a5,c2e <_vscanf_core.constprop.0+0x2fe>
- p++;
- 9f8: 0405 addi s0,s0,1
- int suppress = 0;
- 9fa: 4981 li s3,0
- while (*p >= '0' && *p <= '9')
- 9fc: fd05861b addiw a2,a1,-48
- a00: 0ff67693 zext.b a3,a2
- a04: 47a5 li a5,9
- a06: 36d7e763 bltu a5,a3,d74 <_vscanf_core.constprop.0+0x444>
- a0a: 4781 li a5,0
- a0c: 4825 li a6,9
- a0e: a019 j a14 <_vscanf_core.constprop.0+0xe4>
- width = width * 10 + (*p - '0');
- a10: 0016979b slliw a5,a3,0x1
- while (*p >= '0' && *p <= '9')
- a14: 00144583 lbu a1,1(s0)
- width = width * 10 + (*p - '0');
- a18: 00f6093b addw s2,a2,a5
- a1c: 0029169b slliw a3,s2,0x2
- while (*p >= '0' && *p <= '9')
- a20: fd05861b addiw a2,a1,-48
- a24: 0ff67513 zext.b a0,a2
- width = width * 10 + (*p - '0');
- a28: 012686bb addw a3,a3,s2
- p++;
- a2c: 0405 addi s0,s0,1
- while (*p >= '0' && *p <= '9')
- a2e: fea871e3 bgeu a6,a0,a10 <_vscanf_core.constprop.0+0xe0>
- if (*p == 'l')
- a32: 06c00693 li a3,108
- p++;
- a36: 00140b93 addi s7,s0,1
- if (*p == 'l')
- a3a: 1ed58f63 beq a1,a3,c38 <_vscanf_core.constprop.0+0x308>
- else if (*p == 'h')
- a3e: 06800693 li a3,104
- a42: 2ad58863 beq a1,a3,cf2 <_vscanf_core.constprop.0+0x3c2>
- char spec = *p++;
- a46: 00044c03 lbu s8,0(s0)
- a4a: 8ba2 mv s7,s0
- int len_mod = 0;
- a4c: ec02 sd zero,24(sp)
- char spec = *p++;
- a4e: 06300693 li a3,99
- a52: 001b8413 addi s0,s7,1
- if (!spec)
- a56: 2adc0863 beq s8,a3,d06 <_vscanf_core.constprop.0+0x3d6>
- a5a: 1f86fc63 bgeu a3,s8,c52 <_vscanf_core.constprop.0+0x322>
- a5e: f9cc069b addiw a3,s8,-100
- a62: 0ff6f693 zext.b a3,a3
- a66: 4651 li a2,20
- a68: 0cd66e63 bltu a2,a3,b44 <_vscanf_core.constprop.0+0x214>
- a6c: 00120637 lui a2,0x120
- a70: 4585 li a1,1
- a72: 00d595b3 sll a1,a1,a3
- a76: 02160613 addi a2,a2,33 # 120021 <_ZSt4cerr+0x118829>
- a7a: 8e6d and a2,a2,a1
- a7c: ee69 bnez a2,b56 <_vscanf_core.constprop.0+0x226>
- a7e: 89b9 andi a1,a1,14
- a80: 1e059263 bnez a1,c64 <_vscanf_core.constprop.0+0x334>
- a84: 463d li a2,15
- a86: 0ac69f63 bne a3,a2,b44 <_vscanf_core.constprop.0+0x214>
- _skip_space(ctx);
- a8a: 856e mv a0,s11
- a8c: e31ff0ef jal 8bc <_skip_space>
- char *buf = suppress ? NULL : va_arg(ap, char *);
- a90: ec02 sd zero,24(sp)
- a92: 00099763 bnez s3,aa0 <_vscanf_core.constprop.0+0x170>
- a96: 67a2 ld a5,8(sp)
- a98: 6398 ld a4,0(a5)
- a9a: 07a1 addi a5,a5,8
- a9c: e43e sd a5,8(sp)
- a9e: ec3a sd a4,24(sp)
- if (ctx->ungotten >= 0)
- aa0: 018da503 lw a0,24(s11)
- aa4: 2e055b63 bgez a0,d9a <_vscanf_core.constprop.0+0x46a>
- aa8: 856e mv a0,s11
- aaa: dcdff0ef jal 876 <_in_char.part.0>
- while (c != -1 && !isspace(c))
- aae: 56fd li a3,-1
- ab0: 6ad50363 beq a0,a3,1156 <_vscanf_core.constprop.0+0x826>
- return c == ' ' || c == '\t' || c == '\n' || c == '\v' || c == '\f' || c == '\r';
- ab4: 02000693 li a3,32
- ab8: 3ed50963 beq a0,a3,eaa <_vscanf_core.constprop.0+0x57a>
- abc: 46a5 li a3,9
- abe: 3ed50663 beq a0,a3,eaa <_vscanf_core.constprop.0+0x57a>
- ac2: 46a9 li a3,10
- ac4: 3ed50363 beq a0,a3,eaa <_vscanf_core.constprop.0+0x57a>
- ac8: 46ad li a3,11
- aca: 3ed50063 beq a0,a3,eaa <_vscanf_core.constprop.0+0x57a>
- ace: 46b1 li a3,12
- ad0: 3cd50d63 beq a0,a3,eaa <_vscanf_core.constprop.0+0x57a>
- ad4: 46b5 li a3,13
- ad6: 3cd50a63 beq a0,a3,eaa <_vscanf_core.constprop.0+0x57a>
- ada: 67e2 ld a5,24(sp)
- adc: fce6 sd s9,120(sp)
- ade: f8ea sd s10,112(sp)
- ae0: e83e sd a5,16(sp)
- ae2: 4d01 li s10,0
- while (c != -1 && !isspace(c))
- ae4: 5c7d li s8,-1
- return c == ' ' || c == '\t' || c == '\n' || c == '\v' || c == '\f' || c == '\r';
- ae6: 02000c93 li s9,32
- if (width > 0 && i >= width)
- aea: 01205463 blez s2,af2 <_vscanf_core.constprop.0+0x1c2>
- aee: 052d5563 bge s10,s2,b38 <_vscanf_core.constprop.0+0x208>
- if (!suppress)
- af2: 00099563 bnez s3,afc <_vscanf_core.constprop.0+0x1cc>
- buf[i] = (char)c;
- af6: 67c2 ld a5,16(sp)
- af8: 00a78023 sb a0,0(a5)
- if (ctx->ungotten >= 0)
- afc: 018da503 lw a0,24(s11)
- i++;
- b00: 2d05 addiw s10,s10,1
- if (ctx->ungotten >= 0)
- b02: 30055963 bgez a0,e14 <_vscanf_core.constprop.0+0x4e4>
- b06: 856e mv a0,s11
- b08: d6fff0ef jal 876 <_in_char.part.0>
- while (c != -1 && !isspace(c))
- b0c: 27850663 beq a0,s8,d78 <_vscanf_core.constprop.0+0x448>
- return c == ' ' || c == '\t' || c == '\n' || c == '\v' || c == '\f' || c == '\r';
- b10: 03950463 beq a0,s9,b38 <_vscanf_core.constprop.0+0x208>
- b14: 47a5 li a5,9
- b16: 02f50163 beq a0,a5,b38 <_vscanf_core.constprop.0+0x208>
- b1a: 47a9 li a5,10
- b1c: 00f50e63 beq a0,a5,b38 <_vscanf_core.constprop.0+0x208>
- b20: 47ad li a5,11
- b22: 00f50b63 beq a0,a5,b38 <_vscanf_core.constprop.0+0x208>
- b26: 47b1 li a5,12
- b28: 00f50863 beq a0,a5,b38 <_vscanf_core.constprop.0+0x208>
- b2c: 67c2 ld a5,16(sp)
- b2e: 0785 addi a5,a5,1
- b30: e83e sd a5,16(sp)
- b32: 47b5 li a5,13
- b34: faf51be3 bne a0,a5,aea <_vscanf_core.constprop.0+0x1ba>
- if (!suppress)
- b38: 64098a63 beqz s3,118c <_vscanf_core.constprop.0+0x85c>
- b3c: 7ce6 ld s9,120(sp)
- b3e: 7d46 ld s10,112(sp)
- ctx->ungotten = c;
- b40: 00adac23 sw a0,24(s11)
- while (*p)
- b44: 001bc783 lbu a5,1(s7)
- b48: 794a ld s2,176(sp)
- b4a: 79aa ld s3,168(sp)
- b4c: 6baa ld s7,136(sp)
- b4e: 6c0a ld s8,128(sp)
- b50: e00795e3 bnez a5,95a <_vscanf_core.constprop.0+0x2a>
- b54: b581 j 994 <_vscanf_core.constprop.0+0x64>
- _skip_space(ctx);
- b56: 856e mv a0,s11
- b58: f8ea sd s10,112(sp)
- b5a: d63ff0ef jal 8bc <_skip_space>
- if (ctx->ungotten >= 0)
- b5e: 018da503 lw a0,24(s11)
- b62: 24055063 bgez a0,da2 <_vscanf_core.constprop.0+0x472>
- b66: 856e mv a0,s11
- b68: d0fff0ef jal 876 <_in_char.part.0>
- if (c == '-' || c == '+')
- b6c: fd55069b addiw a3,a0,-43
- b70: 9af5 andi a3,a3,-3
- b72: 2681 sext.w a3,a3
- int i = 0, c = _in_char(ctx);
- b74: 4d01 li s10,0
- if (c == '-' || c == '+')
- b76: 3e068863 beqz a3,f66 <_vscanf_core.constprop.0+0x636>
- int base = (spec == 'x') ? 16 : (spec == 'i' ? 0 : 10);
- b7a: 07800693 li a3,120
- b7e: 4641 li a2,16
- b80: 00dc0863 beq s8,a3,b90 <_vscanf_core.constprop.0+0x260>
- b84: 06900693 li a3,105
- b88: 4629 li a2,10
- b8a: 00dc1363 bne s8,a3,b90 <_vscanf_core.constprop.0+0x260>
- b8e: 4601 li a2,0
- while (c != -1 && i < 63)
- b90: 56fd li a3,-1
- b92: 5cd50863 beq a0,a3,1162 <_vscanf_core.constprop.0+0x832>
- b96: fce6 sd s9,120(sp)
- b98: 02010893 addi a7,sp,32
- b9c: 01a88c33 add s8,a7,s10
- int hex = (base == 16 || base == 0) && ((c >= 'a' && c <= 'f') || (c >= 'A' && c <= 'F'));
- ba0: 4cc1 li s9,16
- int digit = (c >= '0' && c <= '9');
- ba2: fd05069b addiw a3,a0,-48
- ba6: 0005031b sext.w t1,a0
- baa: 00a6b593 sltiu a1,a3,10
- int hex = (base == 16 || base == 0) && ((c >= 'a' && c <= 'f') || (c >= 'A' && c <= 'F'));
- bae: 27960a63 beq a2,s9,e22 <_vscanf_core.constprop.0+0x4f2>
- bb2: 2a060d63 beqz a2,e6c <_vscanf_core.constprop.0+0x53c>
- int x = (c == 'x' || c == 'X');
- bb6: 07800793 li a5,120
- bba: 2ef50363 beq a0,a5,ea0 <_vscanf_core.constprop.0+0x570>
- bbe: fa850693 addi a3,a0,-88
- bc2: 0016b693 seqz a3,a3
- bc6: 4301 li t1,0
- if (width > 0 && i >= width)
- bc8: 01205463 blez s2,bd0 <_vscanf_core.constprop.0+0x2a0>
- bcc: 032d5a63 bge s10,s2,c00 <_vscanf_core.constprop.0+0x2d0>
- if (digit || hex || x)
- bd0: 0066e6b3 or a3,a3,t1
- bd4: 8ecd or a3,a3,a1
- bd6: c68d beqz a3,c00 <_vscanf_core.constprop.0+0x2d0>
- num_buf[i++] = (char)c;
- bd8: 00ac0023 sb a0,0(s8)
- if (ctx->ungotten >= 0)
- bdc: 018da503 lw a0,24(s11)
- num_buf[i++] = (char)c;
- be0: 2d05 addiw s10,s10,1
- if (ctx->ungotten >= 0)
- be2: 22055c63 bgez a0,e1a <_vscanf_core.constprop.0+0x4ea>
- be6: 856e mv a0,s11
- be8: e832 sd a2,16(sp)
- bea: c8dff0ef jal 876 <_in_char.part.0>
- while (c != -1 && i < 63)
- bee: 57fd li a5,-1
- bf0: 6642 ld a2,16(sp)
- bf2: 3cf50263 beq a0,a5,fb6 <_vscanf_core.constprop.0+0x686>
- bf6: 03f00693 li a3,63
- bfa: 0c05 addi s8,s8,1
- bfc: fadd13e3 bne s10,a3,ba2 <_vscanf_core.constprop.0+0x272>
- num_buf[i] = '\0';
- c00: 040d0793 addi a5,s10,64
- c04: 1018 addi a4,sp,32
- c06: 97ba add a5,a5,a4
- c08: fc078023 sb zero,-64(a5)
- ctx->ungotten = c;
- c0c: 00adac23 sw a0,24(s11)
- c10: 7ce6 ld s9,120(sp)
- if (i == 0)
- c12: 1e0d0663 beqz s10,dfe <_vscanf_core.constprop.0+0x4ce>
- if (!suppress)
- c16: 36098363 beqz s3,f7c <_vscanf_core.constprop.0+0x64c>
- while (*p)
- c1a: 001bc783 lbu a5,1(s7)
- {
- c1e: 794a ld s2,176(sp)
- c20: 79aa ld s3,168(sp)
- c22: 6baa ld s7,136(sp)
- c24: 6c0a ld s8,128(sp)
- c26: 7d46 ld s10,112(sp)
- while (*p)
- c28: d20799e3 bnez a5,95a <_vscanf_core.constprop.0+0x2a>
- c2c: b3a5 j 994 <_vscanf_core.constprop.0+0x64>
- while (*p >= '0' && *p <= '9')
- c2e: 00244583 lbu a1,2(s0)
- suppress = 1;
- c32: 4985 li s3,1
- p++;
- c34: 0409 addi s0,s0,2
- c36: b3d9 j 9fc <_vscanf_core.constprop.0+0xcc>
- if (*p == 'l')
- c38: 00144c03 lbu s8,1(s0)
- len_mod = 1;
- c3c: 4785 li a5,1
- c3e: ec3e sd a5,24(sp)
- if (*p == 'l')
- c40: e0bc17e3 bne s8,a1,a4e <_vscanf_core.constprop.0+0x11e>
- len_mod = 2;
- c44: 4789 li a5,2
- char spec = *p++;
- c46: 00244c03 lbu s8,2(s0)
- p++;
- c4a: 00240b93 addi s7,s0,2
- len_mod = 2;
- c4e: ec3e sd a5,24(sp)
- c50: bbfd j a4e <_vscanf_core.constprop.0+0x11e>
- c52: 100c0763 beqz s8,d60 <_vscanf_core.constprop.0+0x430>
- c56: fbbc079b addiw a5,s8,-69
- c5a: 0ff7f793 zext.b a5,a5
- c5e: 4689 li a3,2
- c60: eef6e2e3 bltu a3,a5,b44 <_vscanf_core.constprop.0+0x214>
- _skip_space(ctx);
- c64: 856e mv a0,s11
- c66: f8ea sd s10,112(sp)
- c68: c55ff0ef jal 8bc <_skip_space>
- if (ctx->ungotten >= 0)
- c6c: 018da783 lw a5,24(s11)
- c70: 1207dd63 bgez a5,daa <_vscanf_core.constprop.0+0x47a>
- c74: 856e mv a0,s11
- c76: c01ff0ef jal 876 <_in_char.part.0>
- if (c == '-' || c == '+')
- c7a: fd55069b addiw a3,a0,-43
- c7e: ffd6f613 andi a2,a3,-3
- c82: 2601 sext.w a2,a2
- c84: 87aa mv a5,a0
- c86: 12060c63 beqz a2,dbe <_vscanf_core.constprop.0+0x48e>
- while (c != -1 && i < 63)
- c8a: 567d li a2,-1
- c8c: 16c50963 beq a0,a2,dfe <_vscanf_core.constprop.0+0x4ce>
- c90: fce6 sd s9,120(sp)
- int i = 0, c = _in_char(ctx);
- c92: 4d01 li s10,0
- c94: 80000937 lui s2,0x80000
- c98: 197d addi s2,s2,-1 # ffffffff7fffffff <_ZSt4cerr+0xffffffff7fff8807>
- c9a: 0932 slli s2,s2,0xc
- c9c: 80194913 xori s2,s2,-2047
- ca0: 093e slli s2,s2,0xf
- ca2: 02010813 addi a6,sp,32
- ca6: 01a80cb3 add s9,a6,s10
- caa: 03a00c13 li s8,58
- cae: 1935 addi s2,s2,-19
- cb0: a831 j ccc <_vscanf_core.constprop.0+0x39c>
- cb2: bc5ff0ef jal 876 <_in_char.part.0>
- while (c != -1 && i < 63)
- cb6: 577d li a4,-1
- cb8: 87aa mv a5,a0
- cba: 2ee50563 beq a0,a4,fa4 <_vscanf_core.constprop.0+0x674>
- cbe: 03f00713 li a4,63
- cc2: 0c85 addi s9,s9,1
- cc4: 1eed0e63 beq s10,a4,ec0 <_vscanf_core.constprop.0+0x590>
- cc8: fd57869b addiw a3,a5,-43
- int c = ctx->ungotten;
- ccc: 00d95633 srl a2,s2,a3
- cd0: 856e mv a0,s11
- cd2: 8a05 andi a2,a2,1
- cd4: 1edc6663 bltu s8,a3,ec0 <_vscanf_core.constprop.0+0x590>
- cd8: 1e060463 beqz a2,ec0 <_vscanf_core.constprop.0+0x590>
- num_buf[i++] = (char)c;
- cdc: 00fc8023 sb a5,0(s9)
- if (ctx->ungotten >= 0)
- ce0: 018da783 lw a5,24(s11)
- num_buf[i++] = (char)c;
- ce4: 2d05 addiw s10,s10,1
- if (ctx->ungotten >= 0)
- ce6: fc07c6e3 bltz a5,cb2 <_vscanf_core.constprop.0+0x382>
- ctx->ungotten = -1;
- cea: 577d li a4,-1
- cec: 00edac23 sw a4,24(s11)
- while (c != -1 && i < 63)
- cf0: b7f9 j cbe <_vscanf_core.constprop.0+0x38e>
- if (*p == 'h')
- cf2: 00144c03 lbu s8,1(s0)
- int len_mod = 0;
- cf6: ec02 sd zero,24(sp)
- if (*p == 'h')
- cf8: d4bc1be3 bne s8,a1,a4e <_vscanf_core.constprop.0+0x11e>
- char spec = *p++;
- cfc: 00244c03 lbu s8,2(s0)
- p++;
- d00: 00240b93 addi s7,s0,2
- d04: b3a9 j a4e <_vscanf_core.constprop.0+0x11e>
- d06: fce6 sd s9,120(sp)
- d08: f8ea sd s10,112(sp)
- int count = (width > 0) ? width : 1;
- d0a: 00090c1b sext.w s8,s2
- d0e: 0d205a63 blez s2,de2 <_vscanf_core.constprop.0+0x4b2>
- char *buf = suppress ? NULL : va_arg(ap, char *);
- d12: 4d01 li s10,0
- d14: 06098d63 beqz s3,d8e <_vscanf_core.constprop.0+0x45e>
- for (int i = 0; i < count; i++)
- d18: 9c6a add s8,s8,s10
- if (c == -1)
- d1a: 5cfd li s9,-1
- if (ctx->ungotten >= 0)
- d1c: 018da783 lw a5,24(s11)
- ctx->ungotten = -1;
- d20: 856e mv a0,s11
- if (ctx->ungotten >= 0)
- d22: 0207dc63 bgez a5,d5a <_vscanf_core.constprop.0+0x42a>
- d26: b51ff0ef jal 876 <_in_char.part.0>
- d2a: 87aa mv a5,a0
- if (c == -1)
- d2c: 0b950d63 beq a0,s9,de6 <_vscanf_core.constprop.0+0x4b6>
- if (!suppress)
- d30: 00099463 bnez s3,d38 <_vscanf_core.constprop.0+0x408>
- buf[i] = (char)c;
- d34: 00fd0023 sb a5,0(s10)
- for (int i = 0; i < count; i++)
- d38: 0d05 addi s10,s10,1
- d3a: ffac11e3 bne s8,s10,d1c <_vscanf_core.constprop.0+0x3ec>
- while (*p)
- d3e: 001bc783 lbu a5,1(s7)
- if (!suppress)
- d42: 00099363 bnez s3,d48 <_vscanf_core.constprop.0+0x418>
- assigned++;
- d46: 2b05 addiw s6,s6,1
- d48: 794a ld s2,176(sp)
- d4a: 79aa ld s3,168(sp)
- d4c: 6baa ld s7,136(sp)
- d4e: 6c0a ld s8,128(sp)
- d50: 7ce6 ld s9,120(sp)
- d52: 7d46 ld s10,112(sp)
- while (*p)
- d54: c00793e3 bnez a5,95a <_vscanf_core.constprop.0+0x2a>
- d58: b935 j 994 <_vscanf_core.constprop.0+0x64>
- ctx->ungotten = -1;
- d5a: 019dac23 sw s9,24(s11)
- if (c == -1)
- d5e: bfc9 j d30 <_vscanf_core.constprop.0+0x400>
- d60: 640e ld s0,192(sp)
- d62: 74ea ld s1,184(sp)
- d64: 794a ld s2,176(sp)
- d66: 79aa ld s3,168(sp)
- d68: 7a0a ld s4,160(sp)
- d6a: 6aea ld s5,152(sp)
- d6c: 6baa ld s7,136(sp)
- d6e: 6c0a ld s8,128(sp)
- d70: 7da6 ld s11,104(sp)
- d72: b135 j 99e <_vscanf_core.constprop.0+0x6e>
- int width = -1;
- d74: 597d li s2,-1
- d76: b975 j a32 <_vscanf_core.constprop.0+0x102>
- if (!suppress)
- d78: 3c099c63 bnez s3,1150 <_vscanf_core.constprop.0+0x820>
- buf[i] = '\0';
- d7c: 67e2 ld a5,24(sp)
- d7e: 01a786b3 add a3,a5,s10
- d82: 00068023 sb zero,0(a3)
- while (*p)
- d86: 001bc783 lbu a5,1(s7)
- assigned++;
- d8a: 2b05 addiw s6,s6,1
- d8c: bf75 j d48 <_vscanf_core.constprop.0+0x418>
- char *buf = suppress ? NULL : va_arg(ap, char *);
- d8e: 67a2 ld a5,8(sp)
- d90: 0007bd03 ld s10,0(a5)
- d94: 07a1 addi a5,a5,8
- d96: e43e sd a5,8(sp)
- d98: b741 j d18 <_vscanf_core.constprop.0+0x3e8>
- ctx->ungotten = -1;
- d9a: 56fd li a3,-1
- d9c: 00ddac23 sw a3,24(s11)
- while (c != -1 && !isspace(c))
- da0: bb11 j ab4 <_vscanf_core.constprop.0+0x184>
- ctx->ungotten = -1;
- da2: 56fd li a3,-1
- da4: 00ddac23 sw a3,24(s11)
- return c;
- da8: b3d1 j b6c <_vscanf_core.constprop.0+0x23c>
- if (c == '-' || c == '+')
- daa: fd57869b addiw a3,a5,-43
- dae: ffd6f613 andi a2,a3,-3
- ctx->ungotten = -1;
- db2: 55fd li a1,-1
- db4: 00bdac23 sw a1,24(s11)
- if (c == '-' || c == '+')
- db8: 2601 sext.w a2,a2
- dba: ec061be3 bnez a2,c90 <_vscanf_core.constprop.0+0x360>
- num_buf[i++] = (char)c;
- dbe: 02f10023 sb a5,32(sp)
- if (ctx->ungotten >= 0)
- dc2: 018da783 lw a5,24(s11)
- dc6: 2207da63 bgez a5,ffa <_vscanf_core.constprop.0+0x6ca>
- dca: 856e mv a0,s11
- dcc: aabff0ef jal 876 <_in_char.part.0>
- while (c != -1 && i < 63)
- dd0: 567d li a2,-1
- dd2: 87aa mv a5,a0
- num_buf[i++] = (char)c;
- dd4: 4d05 li s10,1
- dd6: fd55069b addiw a3,a0,-43
- while (c != -1 && i < 63)
- dda: 3ac50163 beq a0,a2,117c <_vscanf_core.constprop.0+0x84c>
- dde: fce6 sd s9,120(sp)
- de0: bd55 j c94 <_vscanf_core.constprop.0+0x364>
- int count = (width > 0) ? width : 1;
- de2: 4c05 li s8,1
- de4: b73d j d12 <_vscanf_core.constprop.0+0x3e2>
- de6: 640e ld s0,192(sp)
- de8: 74ea ld s1,184(sp)
- dea: 794a ld s2,176(sp)
- dec: 79aa ld s3,168(sp)
- dee: 7a0a ld s4,160(sp)
- df0: 6aea ld s5,152(sp)
- df2: 6baa ld s7,136(sp)
- df4: 6c0a ld s8,128(sp)
- df6: 7ce6 ld s9,120(sp)
- df8: 7d46 ld s10,112(sp)
- dfa: 7da6 ld s11,104(sp)
- dfc: b64d j 99e <_vscanf_core.constprop.0+0x6e>
- dfe: 640e ld s0,192(sp)
- e00: 74ea ld s1,184(sp)
- e02: 794a ld s2,176(sp)
- e04: 79aa ld s3,168(sp)
- e06: 7a0a ld s4,160(sp)
- e08: 6aea ld s5,152(sp)
- e0a: 6baa ld s7,136(sp)
- e0c: 6c0a ld s8,128(sp)
- e0e: 7d46 ld s10,112(sp)
- e10: 7da6 ld s11,104(sp)
- e12: b671 j 99e <_vscanf_core.constprop.0+0x6e>
- ctx->ungotten = -1;
- e14: 018dac23 sw s8,24(s11)
- while (c != -1 && !isspace(c))
- e18: b9e5 j b10 <_vscanf_core.constprop.0+0x1e0>
- ctx->ungotten = -1;
- e1a: 57fd li a5,-1
- e1c: 00fdac23 sw a5,24(s11)
- while (c != -1 && i < 63)
- e20: bbd9 j bf6 <_vscanf_core.constprop.0+0x2c6>
- int hex = (base == 16 || base == 0) && ((c >= 'a' && c <= 'f') || (c >= 'A' && c <= 'F'));
- e22: f9f3069b addiw a3,t1,-97
- e26: 4795 li a5,5
- e28: 06d7f263 bgeu a5,a3,e8c <_vscanf_core.constprop.0+0x55c>
- e2c: fbf3031b addiw t1,t1,-65
- e30: 4795 li a5,5
- e32: 0467fd63 bgeu a5,t1,e8c <_vscanf_core.constprop.0+0x55c>
- int x = (c == 'x' || c == 'X');
- e36: 07800693 li a3,120
- e3a: 18d50763 beq a0,a3,fc8 <_vscanf_core.constprop.0+0x698>
- e3e: fa850693 addi a3,a0,-88
- e42: 0016b693 seqz a3,a3
- if (base == 0 && i == 1 && num_buf[0] == '0' && x)
- e46: 4301 li t1,0
- e48: 32061663 bnez a2,1174 <_vscanf_core.constprop.0+0x844>
- e4c: 4785 li a5,1
- e4e: 4601 li a2,0
- e50: d6fd1ce3 bne s10,a5,bc8 <_vscanf_core.constprop.0+0x298>
- e54: 02014e03 lbu t3,32(sp)
- e58: 03000793 li a5,48
- e5c: d6fe16e3 bne t3,a5,bc8 <_vscanf_core.constprop.0+0x298>
- e60: d60684e3 beqz a3,bc8 <_vscanf_core.constprop.0+0x298>
- base = 16;
- e64: 4641 li a2,16
- if (width > 0 && i >= width)
- e66: d7a919e3 bne s2,s10,bd8 <_vscanf_core.constprop.0+0x2a8>
- e6a: bb59 j c00 <_vscanf_core.constprop.0+0x2d0>
- int hex = (base == 16 || base == 0) && ((c >= 'a' && c <= 'f') || (c >= 'A' && c <= 'F'));
- e6c: f9f3069b addiw a3,t1,-97
- e70: 4795 li a5,5
- e72: 02d7f263 bgeu a5,a3,e96 <_vscanf_core.constprop.0+0x566>
- e76: fbf3031b addiw t1,t1,-65
- e7a: 0467f063 bgeu a5,t1,eba <_vscanf_core.constprop.0+0x58a>
- int x = (c == 'x' || c == 'X');
- e7e: 07800693 li a3,120
- e82: fad51ee3 bne a0,a3,e3e <_vscanf_core.constprop.0+0x50e>
- e86: 4301 li t1,0
- e88: 4685 li a3,1
- e8a: b7c9 j e4c <_vscanf_core.constprop.0+0x51c>
- int hex = (base == 16 || base == 0) && ((c >= 'a' && c <= 'f') || (c >= 'A' && c <= 'F'));
- e8c: 4305 li t1,1
- int x = (c == 'x' || c == 'X');
- e8e: 4681 li a3,0
- if (width > 0 && i >= width)
- e90: d3204ee3 bgtz s2,bcc <_vscanf_core.constprop.0+0x29c>
- e94: bb35 j bd0 <_vscanf_core.constprop.0+0x2a0>
- int x = (c == 'x' || c == 'X');
- e96: 4681 li a3,0
- int hex = (base == 16 || base == 0) && ((c >= 'a' && c <= 'f') || (c >= 'A' && c <= 'F'));
- e98: 4305 li t1,1
- if (width > 0 && i >= width)
- e9a: d32049e3 bgtz s2,bcc <_vscanf_core.constprop.0+0x29c>
- e9e: bb0d j bd0 <_vscanf_core.constprop.0+0x2a0>
- ea0: 4301 li t1,0
- int x = (c == 'x' || c == 'X');
- ea2: 4685 li a3,1
- if (width > 0 && i >= width)
- ea4: d32044e3 bgtz s2,bcc <_vscanf_core.constprop.0+0x29c>
- ea8: bb05 j bd8 <_vscanf_core.constprop.0+0x2a8>
- if (!suppress)
- eaa: c8099be3 bnez s3,b40 <_vscanf_core.constprop.0+0x210>
- buf[i] = '\0';
- eae: 67e2 ld a5,24(sp)
- eb0: 00078023 sb zero,0(a5)
- ctx->ungotten = c;
- eb4: 00adac23 sw a0,24(s11)
- if (i > 0 && !suppress)
- eb8: b171 j b44 <_vscanf_core.constprop.0+0x214>
- int x = (c == 'x' || c == 'X');
- eba: 4681 li a3,0
- int hex = (base == 16 || base == 0) && ((c >= 'a' && c <= 'f') || (c >= 'A' && c <= 'F'));
- ebc: 4305 li t1,1
- ebe: b779 j e4c <_vscanf_core.constprop.0+0x51c>
- num_buf[i] = '\0';
- ec0: 040d0713 addi a4,s10,64
- ec4: 1014 addi a3,sp,32
- ec6: 96ba add a3,a3,a4
- ec8: fc068023 sb zero,-64(a3)
- ctx->ungotten = c;
- ecc: 00fdac23 sw a5,24(s11)
- if (i == 0)
- ed0: f00d0be3 beqz s10,de6 <_vscanf_core.constprop.0+0x4b6>
- ed4: 7ce6 ld s9,120(sp)
- if (!suppress)
- ed6: d40992e3 bnez s3,c1a <_vscanf_core.constprop.0+0x2ea>
- if (*str == '-')
- eda: 02014603 lbu a2,32(sp)
- ede: 02d00793 li a5,45
- ee2: 1af60963 beq a2,a5,1094 <_vscanf_core.constprop.0+0x764>
- else if (*str == '+')
- ee6: 02b00793 li a5,43
- eea: 20f60a63 beq a2,a5,10fe <_vscanf_core.constprop.0+0x7ce>
- eee: 00005797 auipc a5,0x5
- ef2: 8e27b587 fld fa1,-1822(a5) # 57d0 <STDIN_FD+0x10>
- ef6: 101c addi a5,sp,32
- while (*str >= '0' && *str <= '9')
- ef8: fd06069b addiw a3,a2,-48
- efc: 0ff6f513 zext.b a0,a3
- f00: 45a5 li a1,9
- f02: f20007d3 fmv.d.x fa5,zero
- f06: 02a5e463 bltu a1,a0,f2e <_vscanf_core.constprop.0+0x5fe>
- f0a: 00005717 auipc a4,0x5
- f0e: 8ce73707 fld fa4,-1842(a4) # 57d8 <STDIN_FD+0x18>
- f12: 4525 li a0,9
- f14: 0017c603 lbu a2,1(a5)
- val = val * 10.0 + (*str - '0');
- f18: d20686d3 fcvt.d.w fa3,a3
- str++;
- f1c: 0785 addi a5,a5,1
- while (*str >= '0' && *str <= '9')
- f1e: fd06069b addiw a3,a2,-48
- f22: 0ff6f593 zext.b a1,a3
- val = val * 10.0 + (*str - '0');
- f26: 6ae7f7c3 fmadd.d fa5,fa5,fa4,fa3
- while (*str >= '0' && *str <= '9')
- f2a: feb575e3 bgeu a0,a1,f14 <_vscanf_core.constprop.0+0x5e4>
- if (*str == '.')
- f2e: 02e00693 li a3,46
- f32: 16d60a63 beq a2,a3,10a6 <_vscanf_core.constprop.0+0x776>
- if (*str == 'e' || *str == 'E')
- f36: 0007c683 lbu a3,0(a5)
- f3a: 0df6f693 andi a3,a3,223
- f3e: 04500613 li a2,69
- f42: 0cc68463 beq a3,a2,100a <_vscanf_core.constprop.0+0x6da>
- *va_arg(ap, double *) = val;
- f46: 6722 ld a4,8(sp)
- if (len_mod == 1)
- f48: 4685 li a3,1
- return sign * val;
- f4a: 12b7f7d3 fmul.d fa5,fa5,fa1
- *va_arg(ap, double *) = val;
- f4e: 631c ld a5,0(a4)
- *va_arg(ap, int64 *) = val;
- f50: 0721 addi a4,a4,8
- f52: e43a sd a4,8(sp)
- if (len_mod == 1)
- f54: 6762 ld a4,24(sp)
- f56: 18d70b63 beq a4,a3,10ec <_vscanf_core.constprop.0+0x7bc>
- *va_arg(ap, float *) = (float)val;
- f5a: 4017f7d3 fcvt.s.d fa5,fa5
- assigned++;
- f5e: 2b05 addiw s6,s6,1
- *va_arg(ap, float *) = (float)val;
- f60: 00f7a027 fsw fa5,0(a5)
- f64: b95d j c1a <_vscanf_core.constprop.0+0x2ea>
- num_buf[i++] = (char)c;
- f66: 02a10023 sb a0,32(sp)
- if (ctx->ungotten >= 0)
- f6a: 018da503 lw a0,24(s11)
- f6e: 06055463 bgez a0,fd6 <_vscanf_core.constprop.0+0x6a6>
- f72: 856e mv a0,s11
- f74: 903ff0ef jal 876 <_in_char.part.0>
- num_buf[i++] = (char)c;
- f78: 4d05 li s10,1
- f7a: b101 j b7a <_vscanf_core.constprop.0+0x24a>
- int64 val = strtoll(num_buf, NULL, base);
- f7c: 4581 li a1,0
- f7e: 1008 addi a0,sp,32
- f80: 696030ef jal 4616 <strtoll>
- *va_arg(ap, int64 *) = val;
- f84: 67a2 ld a5,8(sp)
- if (len_mod == 2)
- f86: 6762 ld a4,24(sp)
- f88: 4689 li a3,2
- *va_arg(ap, int64 *) = val;
- f8a: 07a1 addi a5,a5,8
- if (len_mod == 2)
- f8c: 16d70363 beq a4,a3,10f2 <_vscanf_core.constprop.0+0x7c2>
- *va_arg(ap, int64 *) = val;
- f90: 6722 ld a4,8(sp)
- else if (len_mod == 1)
- f92: 4605 li a2,1
- *va_arg(ap, int64 *) = val;
- f94: 6314 ld a3,0(a4)
- else if (len_mod == 1)
- f96: 6762 ld a4,24(sp)
- f98: 16c70163 beq a4,a2,10fa <_vscanf_core.constprop.0+0x7ca>
- *va_arg(ap, int *) = (int)val;
- f9c: c288 sw a0,0(a3)
- assigned++;
- f9e: 2b05 addiw s6,s6,1
- fa0: e43e sd a5,8(sp)
- fa2: b9a5 j c1a <_vscanf_core.constprop.0+0x2ea>
- num_buf[i] = '\0';
- fa4: 040d0793 addi a5,s10,64
- fa8: 1018 addi a4,sp,32
- faa: 00e785b3 add a1,a5,a4
- fae: fc058023 sb zero,-64(a1)
- if (i == 0)
- fb2: 7ce6 ld s9,120(sp)
- fb4: b70d j ed6 <_vscanf_core.constprop.0+0x5a6>
- num_buf[i] = '\0';
- fb6: 040d0793 addi a5,s10,64
- fba: 1018 addi a4,sp,32
- fbc: 00e78833 add a6,a5,a4
- fc0: fc080023 sb zero,-64(a6)
- if (i == 0)
- fc4: 7ce6 ld s9,120(sp)
- fc6: b981 j c16 <_vscanf_core.constprop.0+0x2e6>
- int x = (c == 'x' || c == 'X');
- fc8: 4301 li t1,0
- fca: 4685 li a3,1
- if (width > 0 && i >= width)
- fcc: c12040e3 bgtz s2,bcc <_vscanf_core.constprop.0+0x29c>
- fd0: b101 j bd0 <_vscanf_core.constprop.0+0x2a0>
- int assigned = 0;
- fd2: 4b01 li s6,0
- fd4: b2e9 j 99e <_vscanf_core.constprop.0+0x6e>
- ctx->ungotten = -1;
- fd6: 56fd li a3,-1
- fd8: fce6 sd s9,120(sp)
- fda: 00ddac23 sw a3,24(s11)
- int base = (spec == 'x') ? 16 : (spec == 'i' ? 0 : 10);
- fde: 07800693 li a3,120
- fe2: 4641 li a2,16
- num_buf[i++] = (char)c;
- fe4: 4d05 li s10,1
- int base = (spec == 'x') ? 16 : (spec == 'i' ? 0 : 10);
- fe6: badc09e3 beq s8,a3,b98 <_vscanf_core.constprop.0+0x268>
- fea: 06900693 li a3,105
- fee: 4629 li a2,10
- num_buf[i++] = (char)c;
- ff0: 4d05 li s10,1
- int base = (spec == 'x') ? 16 : (spec == 'i' ? 0 : 10);
- ff2: badc13e3 bne s8,a3,b98 <_vscanf_core.constprop.0+0x268>
- ff6: 4601 li a2,0
- ff8: b645 j b98 <_vscanf_core.constprop.0+0x268>
- ctx->ungotten = -1;
- ffa: 56fd li a3,-1
- ffc: fce6 sd s9,120(sp)
- ffe: 00ddac23 sw a3,24(s11)
- num_buf[i++] = (char)c;
- 1002: 4d05 li s10,1
- 1004: fd57869b addiw a3,a5,-43
- 1008: b171 j c94 <_vscanf_core.constprop.0+0x364>
- if (*str == '-')
- 100a: 0017c583 lbu a1,1(a5)
- 100e: 02d00693 li a3,45
- 1012: 0ed58f63 beq a1,a3,1110 <_vscanf_core.constprop.0+0x7e0>
- else if (*str == '+')
- 1016: 02b00693 li a3,43
- 101a: 10d58e63 beq a1,a3,1136 <_vscanf_core.constprop.0+0x806>
- while (*str >= '0' && *str <= '9')
- 101e: fd05861b addiw a2,a1,-48
- 1022: 0ff67513 zext.b a0,a2
- 1026: 45a5 li a1,9
- str++;
- 1028: 00178693 addi a3,a5,1
- int esign = 1;
- 102c: 4805 li a6,1
- while (*str >= '0' && *str <= '9')
- 102e: 04a5ec63 bltu a1,a0,1086 <_vscanf_core.constprop.0+0x756>
- 1032: 4525 li a0,9
- 1034: 0016c583 lbu a1,1(a3)
- eval = eval * 10 + (*str - '0');
- 1038: 0029979b slliw a5,s3,0x2
- 103c: 013787bb addw a5,a5,s3
- 1040: 0017979b slliw a5,a5,0x1
- 1044: 00f609bb addw s3,a2,a5
- while (*str >= '0' && *str <= '9')
- 1048: fd05861b addiw a2,a1,-48
- 104c: 0ff67593 zext.b a1,a2
- str++;
- 1050: 0685 addi a3,a3,1
- while (*str >= '0' && *str <= '9')
- 1052: feb571e3 bgeu a0,a1,1034 <_vscanf_core.constprop.0+0x704>
- while (eval--)
- 1056: fff9879b addiw a5,s3,-1
- 105a: 12098463 beqz s3,1182 <_vscanf_core.constprop.0+0x852>
- double p = 1.0;
- 105e: 00004717 auipc a4,0x4
- 1062: 77273687 fld fa3,1906(a4) # 57d0 <STDIN_FD+0x10>
- 1066: 00004717 auipc a4,0x4
- 106a: 77273707 fld fa4,1906(a4) # 57d8 <STDIN_FD+0x18>
- while (eval--)
- 106e: 56fd li a3,-1
- 1070: 37fd addiw a5,a5,-1
- p *= 10.0;
- 1072: 12e6f6d3 fmul.d fa3,fa3,fa4
- while (eval--)
- 1076: fed79de3 bne a5,a3,1070 <_vscanf_core.constprop.0+0x740>
- if (esign == 1)
- 107a: 4785 li a5,1
- 107c: 00f80963 beq a6,a5,108e <_vscanf_core.constprop.0+0x75e>
- val /= p;
- 1080: 1ad7f7d3 fdiv.d fa5,fa5,fa3
- 1084: b5c9 j f46 <_vscanf_core.constprop.0+0x616>
- double p = 1.0;
- 1086: 00004797 auipc a5,0x4
- 108a: 74a7b687 fld fa3,1866(a5) # 57d0 <STDIN_FD+0x10>
- val *= p;
- 108e: 12d7f7d3 fmul.d fa5,fa5,fa3
- 1092: bd55 j f46 <_vscanf_core.constprop.0+0x616>
- while (*str >= '0' && *str <= '9')
- 1094: 00004797 auipc a5,0x4
- 1098: 7347b587 fld fa1,1844(a5) # 57c8 <STDIN_FD+0x8>
- 109c: 02114603 lbu a2,33(sp)
- str++;
- 10a0: 02110793 addi a5,sp,33
- 10a4: bd91 j ef8 <_vscanf_core.constprop.0+0x5c8>
- while (*str >= '0' && *str <= '9')
- 10a6: 0017c683 lbu a3,1(a5)
- 10aa: 45a5 li a1,9
- str++;
- 10ac: 0785 addi a5,a5,1
- while (*str >= '0' && *str <= '9')
- 10ae: fd06861b addiw a2,a3,-48
- 10b2: 0ff67513 zext.b a0,a2
- 10b6: e8a5e2e3 bltu a1,a0,f3a <_vscanf_core.constprop.0+0x60a>
- double div = 10.0;
- 10ba: 00004717 auipc a4,0x4
- 10be: 71e73707 fld fa4,1822(a4) # 57d8 <STDIN_FD+0x18>
- 10c2: 22e70653 fmv.d fa2,fa4
- while (*str >= '0' && *str <= '9')
- 10c6: 4525 li a0,9
- val += (*str - '0') / div;
- 10c8: d20606d3 fcvt.d.w fa3,a2
- while (*str >= '0' && *str <= '9')
- 10cc: 0017c683 lbu a3,1(a5)
- str++;
- 10d0: 0785 addi a5,a5,1
- val += (*str - '0') / div;
- 10d2: 1ac6f6d3 fdiv.d fa3,fa3,fa2
- while (*str >= '0' && *str <= '9')
- 10d6: fd06861b addiw a2,a3,-48
- 10da: 0ff67593 zext.b a1,a2
- div *= 10.0;
- 10de: 12e67653 fmul.d fa2,fa2,fa4
- val += (*str - '0') / div;
- 10e2: 02d7f7d3 fadd.d fa5,fa5,fa3
- while (*str >= '0' && *str <= '9')
- 10e6: feb571e3 bgeu a0,a1,10c8 <_vscanf_core.constprop.0+0x798>
- 10ea: bd81 j f3a <_vscanf_core.constprop.0+0x60a>
- *va_arg(ap, double *) = val;
- 10ec: a39c fsd fa5,0(a5)
- assigned++;
- 10ee: 2b05 addiw s6,s6,1
- 10f0: b62d j c1a <_vscanf_core.constprop.0+0x2ea>
- *va_arg(ap, int64 *) = val;
- 10f2: 6722 ld a4,8(sp)
- 10f4: 6314 ld a3,0(a4)
- 10f6: e288 sd a0,0(a3)
- 10f8: b55d j f9e <_vscanf_core.constprop.0+0x66e>
- *va_arg(ap, long *) = (long)val;
- 10fa: e288 sd a0,0(a3)
- 10fc: b54d j f9e <_vscanf_core.constprop.0+0x66e>
- while (*str >= '0' && *str <= '9')
- 10fe: 00004797 auipc a5,0x4
- 1102: 6d27b587 fld fa1,1746(a5) # 57d0 <STDIN_FD+0x10>
- 1106: 02114603 lbu a2,33(sp)
- str++;
- 110a: 02110793 addi a5,sp,33
- 110e: b3ed j ef8 <_vscanf_core.constprop.0+0x5c8>
- while (*str >= '0' && *str <= '9')
- 1110: 0027c583 lbu a1,2(a5)
- str++;
- 1114: 00278693 addi a3,a5,2
- while (*str >= '0' && *str <= '9')
- 1118: 4525 li a0,9
- 111a: fd05861b addiw a2,a1,-48
- 111e: 0ff67793 zext.b a5,a2
- esign = -1;
- 1122: 587d li a6,-1
- while (*str >= '0' && *str <= '9')
- 1124: f0f577e3 bgeu a0,a5,1032 <_vscanf_core.constprop.0+0x702>
- double p = 1.0;
- 1128: 00004797 auipc a5,0x4
- 112c: 6a87b687 fld fa3,1704(a5) # 57d0 <STDIN_FD+0x10>
- val /= p;
- 1130: 1ad7f7d3 fdiv.d fa5,fa5,fa3
- 1134: bd09 j f46 <_vscanf_core.constprop.0+0x616>
- while (*str >= '0' && *str <= '9')
- 1136: 0027c583 lbu a1,2(a5)
- str++;
- 113a: 00278693 addi a3,a5,2
- while (*str >= '0' && *str <= '9')
- 113e: 4525 li a0,9
- 1140: fd05861b addiw a2,a1,-48
- 1144: 0ff67793 zext.b a5,a2
- 1148: f2f56fe3 bltu a0,a5,1086 <_vscanf_core.constprop.0+0x756>
- int esign = 1;
- 114c: 4805 li a6,1
- 114e: b5d5 j 1032 <_vscanf_core.constprop.0+0x702>
- while (*p)
- 1150: 001bc783 lbu a5,1(s7)
- 1154: bed5 j d48 <_vscanf_core.constprop.0+0x418>
- if (!suppress)
- 1156: 9e0997e3 bnez s3,b44 <_vscanf_core.constprop.0+0x214>
- buf[i] = '\0';
- 115a: 67e2 ld a5,24(sp)
- 115c: 00078023 sb zero,0(a5)
- 1160: b2d5 j b44 <_vscanf_core.constprop.0+0x214>
- num_buf[i] = '\0';
- 1162: 040d0793 addi a5,s10,64
- 1166: 1018 addi a4,sp,32
- 1168: 97ba add a5,a5,a4
- 116a: fc078023 sb zero,-64(a5)
- if (i == 0)
- 116e: aa0d14e3 bnez s10,c16 <_vscanf_core.constprop.0+0x2e6>
- 1172: b171 j dfe <_vscanf_core.constprop.0+0x4ce>
- 1174: 4641 li a2,16
- if (width > 0 && i >= width)
- 1176: a5204be3 bgtz s2,bcc <_vscanf_core.constprop.0+0x29c>
- 117a: bc99 j bd0 <_vscanf_core.constprop.0+0x2a0>
- num_buf[i] = '\0';
- 117c: 020100a3 sb zero,33(sp)
- if (i == 0)
- 1180: bb99 j ed6 <_vscanf_core.constprop.0+0x5a6>
- double p = 1.0;
- 1182: 00004797 auipc a5,0x4
- 1186: 64e7b687 fld fa3,1614(a5) # 57d0 <STDIN_FD+0x10>
- 118a: bdc5 j 107a <_vscanf_core.constprop.0+0x74a>
- buf[i] = '\0';
- 118c: 67e2 ld a5,24(sp)
- 118e: 01a786b3 add a3,a5,s10
- 1192: 00068023 sb zero,0(a3)
- ctx->ungotten = c;
- 1196: 00adac23 sw a0,24(s11)
- while (*p)
- 119a: 001bc783 lbu a5,1(s7)
- 119e: b6f5 j d8a <_vscanf_core.constprop.0+0x45a>
-
-00000000000011a0 <_out_char>:
-{
- 11a0: 7179 addi sp,sp,-48
- 11a2: ec26 sd s1,24(sp)
- if (ctx->stream)
- 11a4: 6d04 ld s1,24(a0)
-{
- 11a6: f022 sd s0,32(sp)
- 11a8: f406 sd ra,40(sp)
- 11aa: 842a mv s0,a0
- 11ac: 872e mv a4,a1
- if (ctx->stream)
- 11ae: c0a1 beqz s1,11ee <_out_char+0x4e>
- 11b0: e84a sd s2,16(sp)
- if (stream->buf_mode == 2)
- 11b2: 41c4a903 lw s2,1052(s1)
- 11b6: 4789 li a5,2
- 11b8: 04f90d63 beq s2,a5,1212 <_out_char+0x72>
- stream->buffer[stream->buf_write_pos++] = (char)c;
- 11bc: 4104a783 lw a5,1040(s1)
- if (stream->buf_write_pos >= BUFSIZ)
- 11c0: 3ff00693 li a3,1023
- stream->buffer[stream->buf_write_pos++] = (char)c;
- 11c4: 0017861b addiw a2,a5,1
- 11c8: 40c4a823 sw a2,1040(s1)
- 11cc: 97a6 add a5,a5,s1
- 11ce: 00b78823 sb a1,16(a5)
- if (stream->buf_write_pos >= BUFSIZ)
- 11d2: 08c6c063 blt a3,a2,1252 <_out_char+0xb2>
- else if (stream->buf_mode == 1 && c == '\n')
- 11d6: 4785 li a5,1
- 11d8: 04f90a63 beq s2,a5,122c <_out_char+0x8c>
- ctx->written++;
- 11dc: 681c ld a5,16(s0)
- 11de: 6942 ld s2,16(sp)
-}
- 11e0: 70a2 ld ra,40(sp)
- ctx->written++;
- 11e2: 0785 addi a5,a5,1
- 11e4: e81c sd a5,16(s0)
-}
- 11e6: 7402 ld s0,32(sp)
- 11e8: 64e2 ld s1,24(sp)
- 11ea: 6145 addi sp,sp,48
- 11ec: 8082 ret
- if (ctx->limit > 0 && ctx->written < ctx->limit - 1)
- 11ee: 6514 ld a3,8(a0)
- 11f0: 691c ld a5,16(a0)
- 11f2: ca89 beqz a3,1204 <_out_char+0x64>
- 11f4: 16fd addi a3,a3,-1
- 11f6: 00d7f763 bgeu a5,a3,1204 <_out_char+0x64>
- ctx->buf[ctx->written] = c;
- 11fa: 6114 ld a3,0(a0)
- 11fc: 97b6 add a5,a5,a3
- 11fe: 00b78023 sb a1,0(a5)
- ctx->written++;
- 1202: 691c ld a5,16(a0)
- 1204: 0785 addi a5,a5,1
-}
- 1206: 70a2 ld ra,40(sp)
- ctx->written++;
- 1208: e81c sd a5,16(s0)
-}
- 120a: 7402 ld s0,32(sp)
- 120c: 64e2 ld s1,24(sp)
- 120e: 6145 addi sp,sp,48
- 1210: 8082 ret
- if (write(stream->fd, &ch, 1) != 1)
- 1212: 4088 lw a0,0(s1)
- 1214: 4605 li a2,1
- 1216: 00f10593 addi a1,sp,15
- char ch = (char)c;
- 121a: 00e107a3 sb a4,15(sp)
- if (write(stream->fd, &ch, 1) != 1)
- 121e: e8bfe0ef jal a8 <write>
- 1222: 4785 li a5,1
- 1224: faf50ce3 beq a0,a5,11dc <_out_char+0x3c>
- stream->error = 1;
- 1228: c49c sw a5,8(s1)
- return EOF;
- 122a: bf4d j 11dc <_out_char+0x3c>
- else if (stream->buf_mode == 1 && c == '\n')
- 122c: 47a9 li a5,10
- 122e: faf597e3 bne a1,a5,11dc <_out_char+0x3c>
- if (stream->buf_write_pos > 0)
- 1232: fac055e3 blez a2,11dc <_out_char+0x3c>
- int64 ret = write(stream->fd, stream->buffer, stream->buf_write_pos);
- 1236: 4088 lw a0,0(s1)
- 1238: 01048593 addi a1,s1,16
- 123c: e6dfe0ef jal a8 <write>
- if (ret < stream->buf_write_pos)
- 1240: 4104a783 lw a5,1040(s1)
- 1244: 02f55063 bge a0,a5,1264 <_out_char+0xc4>
- stream->error = 1;
- 1248: 0124a423 sw s2,8(s1)
- stream->buf_write_pos = 0;
- 124c: 4004a823 sw zero,1040(s1)
- return EOF;
- 1250: b771 j 11dc <_out_char+0x3c>
- int64 ret = write(stream->fd, stream->buffer, stream->buf_write_pos);
- 1252: 4088 lw a0,0(s1)
- 1254: 01048593 addi a1,s1,16
- 1258: e51fe0ef jal a8 <write>
- if (ret < stream->buf_write_pos)
- 125c: 4104a783 lw a5,1040(s1)
- 1260: 00f54563 blt a0,a5,126a <_out_char+0xca>
- stream->buf_write_pos = 0;
- 1264: 4004a823 sw zero,1040(s1)
- 1268: bf95 j 11dc <_out_char+0x3c>
- stream->error = 1;
- 126a: 4785 li a5,1
- 126c: c49c sw a5,8(s1)
- stream->buf_write_pos = 0;
- 126e: 4004a823 sw zero,1040(s1)
- return EOF;
- 1272: b7ad j 11dc <_out_char+0x3c>
-
-0000000000001274 <stbsp_set_separators>:
- "75767778798081828384858687888990919293949596979899"
-};
-
-STBSP__PUBLICDEF void STB_SPRINTF_DECORATE(set_separators)(char pcomma, char pperiod)
-{
- stbsp__period = pperiod;
- 1274: 00005797 auipc a5,0x5
- 1278: 68c78793 addi a5,a5,1676 # 6900 <stbsp__digitpair>
- 127c: 0cb78623 sb a1,204(a5)
- stbsp__comma = pcomma;
- 1280: 0ca786a3 sb a0,205(a5)
-}
- 1284: 8082 ret
-
-0000000000001286 <stbsp_vsprintfcb>:
-
- return (stbsp__uint32)(sn - s);
-}
-
-STBSP__PUBLICDEF int STB_SPRINTF_DECORATE(vsprintfcb)(STBSP_SPRINTFCB *callback, void *user, char *buf, char const *fmt, va_list va)
-{
- 1286: d1010113 addi sp,sp,-752
- // Check if the next 4 bytes contain %(0x25) or end of string.
- // Using the 'hasless' trick:
- // https://graphics.stanford.edu/~seander/bithacks.html#HasLessInWord
- stbsp__uint32 v, c;
- v = *(stbsp__uint32 *)f;
- c = (~v) & 0x80808080;
- 128a: 808087b7 lui a5,0x80808
- if (((v ^ 0x25252525) - 0x01010101) & c)
- 128e: 252523b7 lui t2,0x25252
- 1292: 52538393 addi t2,t2,1317 # 25252525 <_ZSt4cerr+0x2524ad2d>
-{
- 1296: 29913c23 sd s9,664(sp)
- 129a: 29b13423 sd s11,648(sp)
- int tlen = 0;
- 129e: 4c81 li s9,0
- if (((v ^ 0x25252525) - 0x01010101) & c)
- 12a0: feff0db7 lui s11,0xfeff0
- c = (~v) & 0x80808080;
- 12a4: 08078793 addi a5,a5,128 # ffffffff80808080 <_ZSt4cerr+0xffffffff80800888>
-{
- 12a8: 2e813023 sd s0,736(sp)
- 12ac: 2c913c23 sd s1,728(sp)
- 12b0: 2d213823 sd s2,720(sp)
- 12b4: 2d313423 sd s3,712(sp)
- 12b8: 2b713423 sd s7,680(sp)
- 12bc: 2b813023 sd s8,672(sp)
- 12c0: 29a13823 sd s10,656(sp)
- 12c4: 2e113423 sd ra,744(sp)
- 12c8: 8d66 mv s10,s9
- 12ca: 8432 mv s0,a2
- 12cc: 8c9e mv s9,t2
- 12ce: 89aa mv s3,a0
- 12d0: e42e sd a1,8(sp)
- 12d2: 84b6 mv s1,a3
- 12d4: 8bba mv s7,a4
- 12d6: fc02 sd zero,56(sp)
- for (;;) {
- 12d8: 8932 mv s2,a2
- if (((v ^ 0x25252525) - 0x01010101) & c)
- 12da: effd8d9b addiw s11,s11,-257 # fffffffffefefeff <_ZSt4cerr+0xfffffffffefe8707>
- goto schk1;
- if ((v - 0x01010101) & c)
- goto schk2;
- if (callback)
- if ((STB_SPRINTF_MIN - (int)(bf - buf)) < 4)
- 12de: 20000c13 li s8,512
- 12e2: 83be mv t2,a5
- while (((stbsp__uintptr)f) & 3) {
- 12e4: 0034f793 andi a5,s1,3
- 12e8: c7a9 beqz a5,1332 <stbsp_vsprintfcb+0xac>
- if (f[0] == '%')
- 12ea: 0004c783 lbu a5,0(s1)
- 12ee: 02500713 li a4,37
- 12f2: 0ee78263 beq a5,a4,13d6 <stbsp_vsprintfcb+0x150>
- if (f[0] == 0)
- 12f6: cbd9 beqz a5,138c <stbsp_vsprintfcb+0x106>
- stbsp__chk_cb_buf(1);
- 12f8: 02098663 beqz s3,1324 <stbsp_vsprintfcb+0x9e>
- 12fc: 4124063b subw a2,s0,s2
- 1300: 1fe00713 li a4,510
- 1304: 02c75063 bge a4,a2,1324 <stbsp_vsprintfcb+0x9e>
- 1308: 65a2 ld a1,8(sp)
- 130a: 854a mv a0,s2
- 130c: e81e sd t2,16(sp)
- 130e: 00cd0d3b addw s10,s10,a2
- 1312: 9982 jalr s3
- 1314: 892a mv s2,a0
- 1316: e119 bnez a0,131c <stbsp_vsprintfcb+0x96>
- 1318: 0200106f j 2338 <stbsp_vsprintfcb+0x10b2>
- *bf++ = f[0];
- 131c: 0004c783 lbu a5,0(s1)
- stbsp__chk_cb_buf(1);
- 1320: 63c2 ld t2,16(sp)
- 1322: 842a mv s0,a0
- ++f;
- 1324: 0485 addi s1,s1,1
- *bf++ = f[0];
- 1326: 00f40023 sb a5,0(s0)
- while (((stbsp__uintptr)f) & 3) {
- 132a: 0034f793 andi a5,s1,3
- *bf++ = f[0];
- 132e: 0405 addi s0,s0,1
- while (((stbsp__uintptr)f) & 3) {
- 1330: ffcd bnez a5,12ea <stbsp_vsprintfcb+0x64>
- v = *(stbsp__uint32 *)f;
- 1332: 4094 lw a3,0(s1)
- c = (~v) & 0x80808080;
- 1334: fff6c793 not a5,a3
- if (((v ^ 0x25252525) - 0x01010101) & c)
- 1338: 0196c733 xor a4,a3,s9
- c = (~v) & 0x80808080;
- 133c: 0077f7b3 and a5,a5,t2
- if (((v ^ 0x25252525) - 0x01010101) & c)
- 1340: 01b7073b addw a4,a4,s11
- 1344: 8f7d and a4,a4,a5
- 1346: 2701 sext.w a4,a4
- 1348: f34d bnez a4,12ea <stbsp_vsprintfcb+0x64>
- if ((STB_SPRINTF_MIN - (int)(bf - buf)) < 4)
- 134a: 460d li a2,3
- 134c: a805 j 137c <stbsp_vsprintfcb+0xf6>
- if (callback)
- 134e: 00098863 beqz s3,135e <stbsp_vsprintfcb+0xd8>
- if ((STB_SPRINTF_MIN - (int)(bf - buf)) < 4)
- 1352: 412407b3 sub a5,s0,s2
- 1356: 40fc07bb subw a5,s8,a5
- 135a: f8f658e3 bge a2,a5,12ea <stbsp_vsprintfcb+0x64>
- bf[2] = f[2];
- bf[3] = f[3];
- } else
- #endif
- {
- *(stbsp__uint32 *)bf = v;
- 135e: c014 sw a3,0(s0)
- v = *(stbsp__uint32 *)f;
- 1360: 40d4 lw a3,4(s1)
- }
- bf += 4;
- 1362: 0411 addi s0,s0,4
- f += 4;
- 1364: 0491 addi s1,s1,4
- c = (~v) & 0x80808080;
- 1366: fff6c793 not a5,a3
- if (((v ^ 0x25252525) - 0x01010101) & c)
- 136a: 0196c733 xor a4,a3,s9
- c = (~v) & 0x80808080;
- 136e: 0077f7b3 and a5,a5,t2
- if (((v ^ 0x25252525) - 0x01010101) & c)
- 1372: 01b7073b addw a4,a4,s11
- 1376: 8f7d and a4,a4,a5
- 1378: 2701 sext.w a4,a4
- 137a: fb25 bnez a4,12ea <stbsp_vsprintfcb+0x64>
- if ((v - 0x01010101) & c)
- 137c: 01b6873b addw a4,a3,s11
- 1380: 8ff9 and a5,a5,a4
- 1382: 2781 sext.w a5,a5
- 1384: d7e9 beqz a5,134e <stbsp_vsprintfcb+0xc8>
- if (f[0] == 0)
- 1386: 0004c783 lbu a5,0(s1)
- 138a: f7bd bnez a5,12f8 <stbsp_vsprintfcb+0x72>
-endfmt:
-
- if (!callback)
- *bf = 0;
- else
- stbsp__flush_cb();
- 138c: 8cea mv s9,s10
- 138e: 412404bb subw s1,s0,s2
- if (!callback)
- 1392: 70098563 beqz s3,1a9c <stbsp_vsprintfcb+0x816>
- stbsp__flush_cb();
- 1396: 00905663 blez s1,13a2 <stbsp_vsprintfcb+0x11c>
- 139a: 65a2 ld a1,8(sp)
- 139c: 8626 mv a2,s1
- 139e: 854a mv a0,s2
- 13a0: 9982 jalr s3
- 13a2: 009c8cbb addw s9,s9,s1
-
-done:
- return tlen + (int)(bf - buf);
-}
- 13a6: 2e813083 ld ra,744(sp)
- 13aa: 2e013403 ld s0,736(sp)
- 13ae: 2d813483 ld s1,728(sp)
- 13b2: 2d013903 ld s2,720(sp)
- 13b6: 2c813983 ld s3,712(sp)
- 13ba: 2a813b83 ld s7,680(sp)
- 13be: 2a013c03 ld s8,672(sp)
- 13c2: 29013d03 ld s10,656(sp)
- 13c6: 28813d83 ld s11,648(sp)
- 13ca: 8566 mv a0,s9
- 13cc: 29813c83 ld s9,664(sp)
- 13d0: 2f010113 addi sp,sp,752
- 13d4: 8082 ret
- 13d6: 2d413023 sd s4,704(sp)
- 13da: 2b513c23 sd s5,696(sp)
- 13de: 2b613823 sd s6,688(sp)
- tz = 0;
- 13e2: 00248693 addi a3,s1,2
- fl = 0;
- 13e6: 4e01 li t3,0
- switch (f[0]) {
- 13e8: 03f00593 li a1,63
- 13ec: 00004617 auipc a2,0x4
- 13f0: d0460613 addi a2,a2,-764 # 50f0 <_GLOBAL__sub_I__ZSt3cin+0x148>
- 13f4: fff6c783 lbu a5,-1(a3)
- 13f8: fff68493 addi s1,a3,-1
- 13fc: fe07871b addiw a4,a5,-32
- 1400: 0ff77713 zext.b a4,a4
- 1404: 00e5ec63 bltu a1,a4,141c <stbsp_vsprintfcb+0x196>
- 1408: 070a slli a4,a4,0x2
- 140a: 9732 add a4,a4,a2
- 140c: 4318 lw a4,0(a4)
- 140e: 9732 add a4,a4,a2
- 1410: 8702 jr a4
- if (f[0] == '*') {
- 1412: 0014c783 lbu a5,1(s1)
- fl |= STBSP__LEADINGZERO;
- 1416: 010e6e13 ori t3,t3,16
- ++f;
- 141a: 0485 addi s1,s1,1
- if (f[0] == '*') {
- 141c: 02a00713 li a4,42
- 1420: 0ce79163 bne a5,a4,14e2 <stbsp_vsprintfcb+0x25c>
- fw = va_arg(va, stbsp__uint32);
- 1424: 000bab03 lw s6,0(s7)
- while ((f[0] >= '0') && (f[0] <= '9')) {
- 1428: 0014c783 lbu a5,1(s1)
- fw = va_arg(va, stbsp__uint32);
- 142c: 0ba1 addi s7,s7,8
- ++f;
- 142e: 0485 addi s1,s1,1
- if (f[0] == '.') {
- 1430: 02e00713 li a4,46
- pr = -1;
- 1434: 58fd li a7,-1
- if (f[0] == '.') {
- 1436: 0ee78663 beq a5,a4,1522 <stbsp_vsprintfcb+0x29c>
- switch (f[0]) {
- 143a: 04900713 li a4,73
- 143e: 10e78263 beq a5,a4,1542 <stbsp_vsprintfcb+0x2bc>
- 1442: f987871b addiw a4,a5,-104
- 1446: 0ff77713 zext.b a4,a4
- 144a: 46c9 li a3,18
- 144c: 02e6e063 bltu a3,a4,146c <stbsp_vsprintfcb+0x1e6>
- 1450: 00004697 auipc a3,0x4
- 1454: da068693 addi a3,a3,-608 # 51f0 <_GLOBAL__sub_I__ZSt3cin+0x248>
- 1458: 070a slli a4,a4,0x2
- 145a: 9736 add a4,a4,a3
- 145c: 4318 lw a4,0(a4)
- 145e: 9736 add a4,a4,a3
- 1460: 8702 jr a4
- if (f[0] == 'h')
- 1462: 0014c783 lbu a5,1(s1)
- fl |= (sizeof(ptrdiff_t) == 8) ? STBSP__INTMAX : 0;
- 1466: 020e6e13 ori t3,t3,32
- ++f;
- 146a: 0485 addi s1,s1,1
- switch (f[0]) {
- 146c: fbf7871b addiw a4,a5,-65
- 1470: 0ff77713 zext.b a4,a4
- 1474: 03700693 li a3,55
- 1478: 0ee6ea63 bltu a3,a4,156c <stbsp_vsprintfcb+0x2e6>
- 147c: 00004697 auipc a3,0x4
- 1480: dc068693 addi a3,a3,-576 # 523c <_GLOBAL__sub_I__ZSt3cin+0x294>
- 1484: 070a slli a4,a4,0x2
- 1486: 9736 add a4,a4,a3
- 1488: 4318 lw a4,0(a4)
- 148a: 9736 add a4,a4,a3
- 148c: 8702 jr a4
- fl |= STBSP__METRIC_NOSPACE;
- 148e: 400e6e13 ori t3,t3,1024
- continue;
- 1492: 0685 addi a3,a3,1
- 1494: b785 j 13f4 <stbsp_vsprintfcb+0x16e>
- fl |= STBSP__LEFTJUST;
- 1496: 001e6e13 ori t3,t3,1
- continue;
- 149a: 0685 addi a3,a3,1
- 149c: bfa1 j 13f4 <stbsp_vsprintfcb+0x16e>
- fl |= STBSP__LEADINGPLUS;
- 149e: 002e6e13 ori t3,t3,2
- continue;
- 14a2: 0685 addi a3,a3,1
- 14a4: bf81 j 13f4 <stbsp_vsprintfcb+0x16e>
- fl |= STBSP__TRIPLET_COMMA;
- 14a6: 040e6e13 ori t3,t3,64
- continue;
- 14aa: 0685 addi a3,a3,1
- 14ac: b7a1 j 13f4 <stbsp_vsprintfcb+0x16e>
- if (fl & STBSP__METRIC_SUFFIX) {
- 14ae: 100e7793 andi a5,t3,256
- 14b2: 8772 mv a4,t3
- 14b4: 56078363 beqz a5,1a1a <stbsp_vsprintfcb+0x794>
- if (fl & STBSP__METRIC_1024) {
- 14b8: 6785 lui a5,0x1
- 14ba: 034e1513 slli a0,t3,0x34
- 14be: 80078793 addi a5,a5,-2048 # 800 <stbsp__real_to_str+0x65e>
- 14c2: 5c055863 bgez a0,1a92 <stbsp_vsprintfcb+0x80c>
- fl |= STBSP__METRIC_JEDEC;
- 14c6: 6785 lui a5,0x1
- 14c8: 8f5d or a4,a4,a5
- 14ca: 00070e1b sext.w t3,a4
- 14ce: 0685 addi a3,a3,1
- 14d0: b715 j 13f4 <stbsp_vsprintfcb+0x16e>
- fl |= STBSP__LEADING_0X;
- 14d2: 008e6e13 ori t3,t3,8
- continue;
- 14d6: 0685 addi a3,a3,1
- 14d8: bf31 j 13f4 <stbsp_vsprintfcb+0x16e>
- fl |= STBSP__LEADINGSPACE;
- 14da: 004e6e13 ori t3,t3,4
- continue;
- 14de: 0685 addi a3,a3,1
- 14e0: bf11 j 13f4 <stbsp_vsprintfcb+0x16e>
- while ((f[0] >= '0') && (f[0] <= '9')) {
- 14e2: fd07871b addiw a4,a5,-48 # fd0 <_vscanf_core.constprop.0+0x6a0>
- 14e6: 0ff77713 zext.b a4,a4
- 14ea: 4625 li a2,9
- fw = 0;
- 14ec: 4b01 li s6,0
- while ((f[0] >= '0') && (f[0] <= '9')) {
- 14ee: 46a5 li a3,9
- 14f0: f4e660e3 bltu a2,a4,1430 <stbsp_vsprintfcb+0x1aa>
- fw = fw * 10 + f[0] - '0';
- 14f4: 002b171b slliw a4,s6,0x2
- 14f8: 0167073b addw a4,a4,s6
- 14fc: 0017171b slliw a4,a4,0x1
- f++;
- 1500: 0485 addi s1,s1,1
- fw = fw * 10 + f[0] - '0';
- 1502: 9f3d addw a4,a4,a5
- while ((f[0] >= '0') && (f[0] <= '9')) {
- 1504: 0004c783 lbu a5,0(s1)
- fw = fw * 10 + f[0] - '0';
- 1508: fd070b1b addiw s6,a4,-48
- while ((f[0] >= '0') && (f[0] <= '9')) {
- 150c: fd07871b addiw a4,a5,-48
- 1510: 0ff77713 zext.b a4,a4
- 1514: fee6f0e3 bgeu a3,a4,14f4 <stbsp_vsprintfcb+0x26e>
- if (f[0] == '.') {
- 1518: 02e00713 li a4,46
- pr = -1;
- 151c: 58fd li a7,-1
- if (f[0] == '.') {
- 151e: f0e79ee3 bne a5,a4,143a <stbsp_vsprintfcb+0x1b4>
- if (f[0] == '*') {
- 1522: 0014c783 lbu a5,1(s1)
- 1526: 02a00713 li a4,42
- 152a: 52e79763 bne a5,a4,1a58 <stbsp_vsprintfcb+0x7d2>
- while ((f[0] >= '0') && (f[0] <= '9')) {
- 152e: 0024c783 lbu a5,2(s1)
- switch (f[0]) {
- 1532: 04900713 li a4,73
- pr = va_arg(va, stbsp__uint32);
- 1536: 000ba883 lw a7,0(s7)
- ++f;
- 153a: 0489 addi s1,s1,2
- pr = va_arg(va, stbsp__uint32);
- 153c: 0ba1 addi s7,s7,8
- switch (f[0]) {
- 153e: f0e792e3 bne a5,a4,1442 <stbsp_vsprintfcb+0x1bc>
- if ((f[1] == '6') && (f[2] == '4')) {
- 1542: 0014c783 lbu a5,1(s1)
- 1546: 03600713 li a4,54
- 154a: 00e79463 bne a5,a4,1552 <stbsp_vsprintfcb+0x2cc>
- 154e: 1e60106f j 2734 <stbsp_vsprintfcb+0x14ae>
- } else if ((f[1] == '3') && (f[2] == '2')) {
- 1552: 03300713 li a4,51
- 1556: 6ae796e3 bne a5,a4,2402 <stbsp_vsprintfcb+0x117c>
- 155a: 0024c683 lbu a3,2(s1)
- 155e: 03200713 li a4,50
- 1562: 00e69463 bne a3,a4,156a <stbsp_vsprintfcb+0x2e4>
- 1566: 0ae0106f j 2614 <stbsp_vsprintfcb+0x138e>
- ++f;
- 156a: 0485 addi s1,s1,1
- *s = f[0];
- 156c: 26f10fa3 sb a5,639(sp)
- l = 1;
- 1570: 4785 li a5,1
- 1572: d0be sw a5,96(sp)
- lead[0] = 0;
- 1574: 06010423 sb zero,104(sp)
- tail[0] = 0;
- 1578: 06010823 sb zero,112(sp)
- dp = 0;
- 157c: d282 sw zero,100(sp)
- 157e: e0de sd s7,64(sp)
- 1580: 4701 li a4,0
- 1582: 4301 li t1,0
- 1584: 4f81 li t6,0
- 1586: 4685 li a3,1
- 1588: 4a01 li s4,0
- cs = 0;
- 158a: 4281 li t0,0
- s = num + STBSP__NUMSZ - 1;
- 158c: 27f10a93 addi s5,sp,639
- fw = fl = 0;
- 1590: 4e01 li t3,0
- tz = 0;
- 1592: 4881 li a7,0
- if (fl & STBSP__LEADINGZERO) // if leading zeros, everything is in pr
- 1594: 010e7793 andi a5,t3,16
- 1598: 40078ee3 beqz a5,21b4 <stbsp_vsprintfcb+0xf2e>
- pr = (fw > pr) ? fw : pr;
- 159c: 87ba mv a5,a4
- 159e: 00675363 bge a4,t1,15a4 <stbsp_vsprintfcb+0x31e>
- 15a2: 879a mv a5,t1
- 15a4: 0007871b sext.w a4,a5
- fw = 0;
- 15a8: 4301 li t1,0
- if (fw + pr) {
- 15aa: 62070563 beqz a4,1bd4 <stbsp_vsprintfcb+0x94e>
- sn = lead + 1;
- 15ae: 06910793 addi a5,sp,105
- 15b2: fcbe sd a5,120(sp)
- while (lead[0]) {
- 15b4: 0a0a0863 beqz s4,1664 <stbsp_vsprintfcb+0x3de>
- stbsp__cb_buf_clamp(i, lead[0]);
- 15b8: f026 sd s1,32(sp)
- 15ba: f436 sd a3,40(sp)
- 15bc: 854a mv a0,s2
- 15be: 86d2 mv a3,s4
- 15c0: 84ce mv s1,s3
- stbsp__chk_cb_buf(1);
- 15c2: 1fe00b93 li s7,510
- stbsp__cb_buf_clamp(i, lead[0]);
- 15c6: 89be mv s3,a5
- 15c8: 20000b13 li s6,512
- 15cc: 87a2 mv a5,s0
- 15ce: e846 sd a7,16(sp)
- 15d0: 846a mv s0,s10
- 15d2: ec7e sd t6,24(sp)
- 15d4: 8d6e mv s10,s11
- 15d6: f872 sd t3,48(sp)
- 15d8: 8de6 mv s11,s9
- 15da: 8a3a mv s4,a4
- 15dc: e496 sd t0,72(sp)
- 15de: 891a mv s2,t1
- 15e0: 8c9e mv s9,t2
- 15e2: 0006871b sext.w a4,a3
- 15e6: 2e0482e3 beqz s1,20ca <stbsp_vsprintfcb+0xe44>
- 15ea: 40a7863b subw a2,a5,a0
- 15ee: 40cb083b subw a6,s6,a2
- 15f2: 85c2 mv a1,a6
- 15f4: 01075363 bge a4,a6,15fa <stbsp_vsprintfcb+0x374>
- 15f8: 85ba mv a1,a4
- lead[0] -= (char)i;
- 15fa: 9e8d subw a3,a3,a1
- stbsp__cb_buf_clamp(i, lead[0]);
- 15fc: 0005871b sext.w a4,a1
- lead[0] -= (char)i;
- 1600: 06d10423 sb a3,104(sp)
- while (i) {
- 1604: c70d beqz a4,162e <stbsp_vsprintfcb+0x3a8>
- 1606: 7866 ld a6,120(sp)
- 1608: 02071593 slli a1,a4,0x20
- 160c: 9181 srli a1,a1,0x20
- 160e: 00b78633 add a2,a5,a1
- 1612: 8742 mv a4,a6
- *bf++ = *sn++;
- 1614: 00074683 lbu a3,0(a4)
- 1618: 0785 addi a5,a5,1
- while (i) {
- 161a: 0705 addi a4,a4,1
- *bf++ = *sn++;
- 161c: fed78fa3 sb a3,-1(a5)
- while (i) {
- 1620: fec79ae3 bne a5,a2,1614 <stbsp_vsprintfcb+0x38e>
- 1624: 982e add a6,a6,a1
- 1626: fcc2 sd a6,120(sp)
- stbsp__chk_cb_buf(1);
- 1628: c899 beqz s1,163e <stbsp_vsprintfcb+0x3b8>
- 162a: 40a7863b subw a2,a5,a0
- 162e: 00cbd863 bge s7,a2,163e <stbsp_vsprintfcb+0x3b8>
- 1632: 65a2 ld a1,8(sp)
- 1634: 9c31 addw s0,s0,a2
- 1636: 9482 jalr s1
- 1638: 34050ee3 beqz a0,2194 <stbsp_vsprintfcb+0xf0e>
- 163c: 87aa mv a5,a0
- while (lead[0]) {
- 163e: 06814683 lbu a3,104(sp)
- 1642: f2c5 bnez a3,15e2 <stbsp_vsprintfcb+0x35c>
- 1644: 83e6 mv t2,s9
- 1646: 68c2 ld a7,16(sp)
- 1648: 8cee mv s9,s11
- 164a: 6fe2 ld t6,24(sp)
- 164c: 8dea mv s11,s10
- 164e: 76a2 ld a3,40(sp)
- 1650: 8d22 mv s10,s0
- 1652: 7e42 ld t3,48(sp)
- 1654: 843e mv s0,a5
- 1656: 62a6 ld t0,72(sp)
- 1658: 87ce mv a5,s3
- 165a: 89a6 mv s3,s1
- 165c: 7482 ld s1,32(sp)
- 165e: 834a mv t1,s2
- 1660: 8752 mv a4,s4
- 1662: 892a mv s2,a0
- cs = (fl & STBSP__TRIPLET_COMMA) ? ((stbsp__uint32)(c - ((pr + cs) % (c + 1)))) : 0;
- 1664: 040e7b13 andi s6,t3,64
- c = cs >> 24;
- 1668: 0182d61b srliw a2,t0,0x18
- 166c: 0182db9b srliw s7,t0,0x18
- cs = (fl & STBSP__TRIPLET_COMMA) ? ((stbsp__uint32)(c - ((pr + cs) % (c + 1)))) : 0;
- 1670: 4a01 li s4,0
- 1672: 000b0e63 beqz s6,168e <stbsp_vsprintfcb+0x408>
- cs &= 0xffffff;
- 1676: 02829a13 slli s4,t0,0x28
- 167a: 028a5a13 srli s4,s4,0x28
- cs = (fl & STBSP__TRIPLET_COMMA) ? ((stbsp__uint32)(c - ((pr + cs) % (c + 1)))) : 0;
- 167e: 00ea0a3b addw s4,s4,a4
- 1682: 0016059b addiw a1,a2,1
- 1686: 02ba7a3b remuw s4,s4,a1
- 168a: 41460a3b subw s4,a2,s4
- while (pr > 0) {
- 168e: 0ce05763 blez a4,175c <stbsp_vsprintfcb+0x4d6>
- *(stbsp__uint32 *)bf = 0x30303030;
- 1692: 30303837 lui a6,0x30303
- 1696: 03080813 addi a6,a6,48 # 30303030 <_ZSt4cerr+0x302fb838>
- 169a: f026 sd s1,32(sp)
- 169c: 854a mv a0,s2
- 169e: 84da mv s1,s6
- 16a0: 895e mv s2,s7
- 16a2: e4d6 sd s5,72(sp)
- 16a4: 8b4e mv s6,s3
- 16a6: 8aea mv s5,s10
- stbsp__chk_cb_buf(1);
- 16a8: 1fe00293 li t0,510
- 16ac: 8d6e mv s10,s11
- *bf++ = stbsp__comma;
- 16ae: 00005f17 auipc t5,0x5
- 16b2: 252f0f13 addi t5,t5,594 # 6900 <stbsp__digitpair>
- 16b6: 8de6 mv s11,s9
- *bf++ = '0';
- 16b8: 03000e93 li t4,48
- 16bc: e846 sd a7,16(sp)
- 16be: ec7e sd t6,24(sp)
- 16c0: f436 sd a3,40(sp)
- 16c2: f872 sd t3,48(sp)
- 16c4: e89a sd t1,80(sp)
- 16c6: 89ba mv s3,a4
- 16c8: ecbe sd a5,88(sp)
- 16ca: 8bc2 mv s7,a6
- 16cc: 8c9e mv s9,t2
- stbsp__cb_buf_clamp(i, pr);
- 16ce: 240b0ee3 beqz s6,212a <stbsp_vsprintfcb+0xea4>
- 16d2: 40a407b3 sub a5,s0,a0
- 16d6: 40fc063b subw a2,s8,a5
- 16da: 87b2 mv a5,a2
- 16dc: 00c9d363 bge s3,a2,16e2 <stbsp_vsprintfcb+0x45c>
- 16e0: 87ce mv a5,s3
- 16e2: 0007859b sext.w a1,a5
- pr -= i;
- 16e6: 40f989bb subw s3,s3,a5
- if ((fl & STBSP__TRIPLET_COMMA) == 0) {
- 16ea: 32048c63 beqz s1,1a22 <stbsp_vsprintfcb+0x79c>
- while (i) {
- 16ee: 34058a63 beqz a1,1a42 <stbsp_vsprintfcb+0x7bc>
- 16f2: 1582 slli a1,a1,0x20
- *bf++ = stbsp__comma;
- 16f4: 0cdf4603 lbu a2,205(t5)
- 16f8: 9181 srli a1,a1,0x20
- 16fa: 95a2 add a1,a1,s0
- 16fc: 0405 addi s0,s0,1
- if ((fl & STBSP__TRIPLET_COMMA) && (cs++ == c)) {
- 16fe: c481 beqz s1,1706 <stbsp_vsprintfcb+0x480>
- 1700: 1d4901e3 beq s2,s4,20c2 <stbsp_vsprintfcb+0xe3c>
- 1704: 2a05 addiw s4,s4,1
- *bf++ = '0';
- 1706: 03000793 li a5,48
- 170a: fef40fa3 sb a5,-1(s0)
- while (i) {
- 170e: fe8597e3 bne a1,s0,16fc <stbsp_vsprintfcb+0x476>
- stbsp__chk_cb_buf(1);
- 1712: 320b0b63 beqz s6,1a48 <stbsp_vsprintfcb+0x7c2>
- 1716: 40a5863b subw a2,a1,a0
- 171a: 32c2d763 bge t0,a2,1a48 <stbsp_vsprintfcb+0x7c2>
- 171e: 65a2 ld a1,8(sp)
- 1720: 01560abb addw s5,a2,s5
- 1724: 9b02 jalr s6
- 1726: 3a050ce3 beqz a0,22de <stbsp_vsprintfcb+0x1058>
- 172a: 842a mv s0,a0
- 172c: 1fe00293 li t0,510
- 1730: 00005f17 auipc t5,0x5
- 1734: 1d0f0f13 addi t5,t5,464 # 6900 <stbsp__digitpair>
- 1738: 03000e93 li t4,48
- while (pr > 0) {
- 173c: f93049e3 bgtz s3,16ce <stbsp_vsprintfcb+0x448>
- while (lead[0]) {
- 1740: 83e6 mv t2,s9
- 1742: 68c2 ld a7,16(sp)
- 1744: 8cee mv s9,s11
- 1746: 6fe2 ld t6,24(sp)
- 1748: 8dea mv s11,s10
- 174a: 7482 ld s1,32(sp)
- 174c: 8d56 mv s10,s5
- 174e: 76a2 ld a3,40(sp)
- 1750: 7e42 ld t3,48(sp)
- 1752: 6346 ld t1,80(sp)
- 1754: 67e6 ld a5,88(sp)
- 1756: 6aa6 ld s5,72(sp)
- 1758: 892a mv s2,a0
- 175a: 89da mv s3,s6
- 175c: 06814a03 lbu s4,104(sp)
- sn = lead + 1;
- 1760: fcbe sd a5,120(sp)
- while (lead[0]) {
- 1762: 0a0a0263 beqz s4,1806 <stbsp_vsprintfcb+0x580>
- stbsp__cb_buf_clamp(i, lead[0]);
- 1766: ec26 sd s1,24(sp)
- 1768: f036 sd a3,32(sp)
- 176a: 854a mv a0,s2
- 176c: 86d2 mv a3,s4
- 176e: 84ce mv s1,s3
- 1770: 87a2 mv a5,s0
- stbsp__chk_cb_buf(1);
- 1772: 1fe00b93 li s7,510
- stbsp__cb_buf_clamp(i, lead[0]);
- 1776: 846a mv s0,s10
- 1778: 20000b13 li s6,512
- 177c: 8d6e mv s10,s11
- 177e: e846 sd a7,16(sp)
- 1780: 8de6 mv s11,s9
- 1782: 8a7e mv s4,t6
- 1784: 8972 mv s2,t3
- 1786: 899a mv s3,t1
- 1788: 8c9e mv s9,t2
- 178a: 0006871b sext.w a4,a3
- 178e: 140482e3 beqz s1,20d2 <stbsp_vsprintfcb+0xe4c>
- 1792: 40a7863b subw a2,a5,a0
- 1796: 40cb083b subw a6,s6,a2
- 179a: 85c2 mv a1,a6
- 179c: 01075363 bge a4,a6,17a2 <stbsp_vsprintfcb+0x51c>
- 17a0: 85ba mv a1,a4
- lead[0] -= (char)i;
- 17a2: 9e8d subw a3,a3,a1
- stbsp__cb_buf_clamp(i, lead[0]);
- 17a4: 0005871b sext.w a4,a1
- lead[0] -= (char)i;
- 17a8: 06d10423 sb a3,104(sp)
- while (i) {
- 17ac: c70d beqz a4,17d6 <stbsp_vsprintfcb+0x550>
- 17ae: 7866 ld a6,120(sp)
- 17b0: 02071593 slli a1,a4,0x20
- 17b4: 9181 srli a1,a1,0x20
- 17b6: 00b78633 add a2,a5,a1
- 17ba: 8742 mv a4,a6
- *bf++ = *sn++;
- 17bc: 00074683 lbu a3,0(a4)
- 17c0: 0785 addi a5,a5,1
- while (i) {
- 17c2: 0705 addi a4,a4,1
- *bf++ = *sn++;
- 17c4: fed78fa3 sb a3,-1(a5)
- while (i) {
- 17c8: fec79ae3 bne a5,a2,17bc <stbsp_vsprintfcb+0x536>
- 17cc: 982e add a6,a6,a1
- 17ce: fcc2 sd a6,120(sp)
- stbsp__chk_cb_buf(1);
- 17d0: c899 beqz s1,17e6 <stbsp_vsprintfcb+0x560>
- 17d2: 40a7863b subw a2,a5,a0
- 17d6: 00cbd863 bge s7,a2,17e6 <stbsp_vsprintfcb+0x560>
- 17da: 65a2 ld a1,8(sp)
- 17dc: 9c31 addw s0,s0,a2
- 17de: 9482 jalr s1
- 17e0: 1a050ae3 beqz a0,2194 <stbsp_vsprintfcb+0xf0e>
- 17e4: 87aa mv a5,a0
- while (lead[0]) {
- 17e6: 06814683 lbu a3,104(sp)
- 17ea: f2c5 bnez a3,178a <stbsp_vsprintfcb+0x504>
- 17ec: 834e mv t1,s3
- 17ee: 68c2 ld a7,16(sp)
- 17f0: 89a6 mv s3,s1
- 17f2: 7682 ld a3,32(sp)
- 17f4: 64e2 ld s1,24(sp)
- 17f6: 8e4a mv t3,s2
- 17f8: 83e6 mv t2,s9
- 17fa: 8fd2 mv t6,s4
- 17fc: 8cee mv s9,s11
- 17fe: 892a mv s2,a0
- 1800: 8dea mv s11,s10
- 1802: 8d22 mv s10,s0
- 1804: 843e mv s0,a5
- while (n) {
- 1806: c6f9 beqz a3,18d4 <stbsp_vsprintfcb+0x64e>
- STBSP__UNALIGNED(while (i >= 4) {
- 1808: ec26 sd s1,24(sp)
- 180a: 854a mv a0,s2
- 180c: 84d6 mv s1,s5
- 180e: 896a mv s2,s10
- 1810: 87a2 mv a5,s0
- 1812: 8d6e mv s10,s11
- stbsp__chk_cb_buf(1);
- 1814: 1fe00b93 li s7,510
- STBSP__UNALIGNED(while (i >= 4) {
- 1818: 8de6 mv s11,s9
- stbsp__cb_buf_clamp(i, n);
- 181a: 20000b13 li s6,512
- STBSP__UNALIGNED(while (i >= 4) {
- 181e: 4a0d li s4,3
- 1820: e87e sd t6,16(sp)
- 1822: f072 sd t3,32(sp)
- 1824: 8ac6 mv s5,a7
- 1826: f41a sd t1,40(sp)
- 1828: 8436 mv s0,a3
- 182a: 8c9e mv s9,t2
- stbsp__cb_buf_clamp(i, n);
- 182c: 0004071b sext.w a4,s0
- 1830: 100982e3 beqz s3,2134 <stbsp_vsprintfcb+0xeae>
- 1834: 40a78633 sub a2,a5,a0
- 1838: 40cb05bb subw a1,s6,a2
- 183c: 862e mv a2,a1
- 183e: 00b75363 bge a4,a1,1844 <stbsp_vsprintfcb+0x5be>
- 1842: 863a mv a2,a4
- 1844: 0006071b sext.w a4,a2
- n -= i;
- 1848: 9c11 subw s0,s0,a2
- STBSP__UNALIGNED(while (i >= 4) {
- 184a: 14ea50e3 bge s4,a4,218a <stbsp_vsprintfcb+0xf04>
- 184e: ffc70f1b addiw t5,a4,-4
- 1852: 002f5e9b srliw t4,t5,0x2
- 1856: 001e8e1b addiw t3,t4,1
- 185a: 0e0a slli t3,t3,0x2
- 185c: 01c785b3 add a1,a5,t3
- 1860: 8626 mv a2,s1
- 1862: 4218 lw a4,0(a2)
- 1864: 0791 addi a5,a5,4
- 1866: 0611 addi a2,a2,4
- 1868: 2701 sext.w a4,a4
- 186a: fee7ae23 sw a4,-4(a5)
- 186e: feb79ae3 bne a5,a1,1862 <stbsp_vsprintfcb+0x5dc>
- 1872: 002e9e9b slliw t4,t4,0x2
- 1876: 41df073b subw a4,t5,t4
- while (i) {
- 187a: 94f2 add s1,s1,t3
- 187c: c31d beqz a4,18a2 <stbsp_vsprintfcb+0x61c>
- 187e: 8626 mv a2,s1
- 1880: 87ae mv a5,a1
- 1882: 00e58f3b addw t5,a1,a4
- *bf++ = *s++;
- 1886: 00064e83 lbu t4,0(a2)
- 188a: 0785 addi a5,a5,1
- while (i) {
- 188c: 00078e1b sext.w t3,a5
- *bf++ = *s++;
- 1890: ffd78fa3 sb t4,-1(a5)
- 1894: 0605 addi a2,a2,1
- while (i) {
- 1896: ffcf18e3 bne t5,t3,1886 <stbsp_vsprintfcb+0x600>
- 189a: 1702 slli a4,a4,0x20
- 189c: 9301 srli a4,a4,0x20
- 189e: 95ba add a1,a1,a4
- 18a0: 94ba add s1,s1,a4
- stbsp__chk_cb_buf(1);
- 18a2: 1a098763 beqz s3,1a50 <stbsp_vsprintfcb+0x7ca>
- 18a6: 40a5863b subw a2,a1,a0
- 18aa: 1acbd363 bge s7,a2,1a50 <stbsp_vsprintfcb+0x7ca>
- 18ae: 65a2 ld a1,8(sp)
- 18b0: 0126093b addw s2,a2,s2
- 18b4: 9982 jalr s3
- 18b6: 20050be3 beqz a0,22cc <stbsp_vsprintfcb+0x1046>
- 18ba: 87aa mv a5,a0
- while (n) {
- 18bc: f825 bnez s0,182c <stbsp_vsprintfcb+0x5a6>
- 18be: 6fc2 ld t6,16(sp)
- 18c0: 64e2 ld s1,24(sp)
- 18c2: 7e02 ld t3,32(sp)
- 18c4: 7322 ld t1,40(sp)
- 18c6: 83e6 mv t2,s9
- 18c8: 88d6 mv a7,s5
- 18ca: 8cee mv s9,s11
- 18cc: 843e mv s0,a5
- 18ce: 8dea mv s11,s10
- 18d0: 8d4a mv s10,s2
- 18d2: 892a mv s2,a0
- while (tz) {
- 18d4: 08088863 beqz a7,1964 <stbsp_vsprintfcb+0x6de>
- *(stbsp__uint32 *)bf = 0x30303030;
- 18d8: 30303b37 lui s6,0x30303
- *bf++ = '0';
- 18dc: 03000a13 li s4,48
- while (i >= 4) {
- 18e0: 4a8d li s5,3
- stbsp__chk_cb_buf(1);
- 18e2: 1fe00693 li a3,510
- *(stbsp__uint32 *)bf = 0x30303030;
- 18e6: 030b0b13 addi s6,s6,48 # 30303030 <_ZSt4cerr+0x302fb838>
- stbsp__cb_buf_clamp(i, tz);
- 18ea: 20000b93 li s7,512
- 18ee: 040989e3 beqz s3,2140 <stbsp_vsprintfcb+0xeba>
- 18f2: 41240633 sub a2,s0,s2
- 18f6: 40cb87bb subw a5,s7,a2
- 18fa: 873e mv a4,a5
- 18fc: 00f8d363 bge a7,a5,1902 <stbsp_vsprintfcb+0x67c>
- 1900: 8746 mv a4,a7
- 1902: 0007079b sext.w a5,a4
- tz -= i;
- 1906: 40e888bb subw a7,a7,a4
- while (i) {
- 190a: 08078ee3 beqz a5,21a6 <stbsp_vsprintfcb+0xf20>
- if ((((stbsp__uintptr)bf) & 3) == 0)
- 190e: 00347713 andi a4,s0,3
- 1912: e719 bnez a4,1920 <stbsp_vsprintfcb+0x69a>
- 1914: 0390006f j 214c <stbsp_vsprintfcb+0xec6>
- 1918: 00347713 andi a4,s0,3
- 191c: 7a070f63 beqz a4,20da <stbsp_vsprintfcb+0xe54>
- *bf++ = '0';
- 1920: 01440023 sb s4,0(s0)
- --i;
- 1924: 37fd addiw a5,a5,-1
- *bf++ = '0';
- 1926: 0405 addi s0,s0,1
- while (i) {
- 1928: fbe5 bnez a5,1918 <stbsp_vsprintfcb+0x692>
- stbsp__chk_cb_buf(1);
- 192a: 02098b63 beqz s3,1960 <stbsp_vsprintfcb+0x6da>
- 192e: 4124063b subw a2,s0,s2
- 1932: 02c6d763 bge a3,a2,1960 <stbsp_vsprintfcb+0x6da>
- 1936: 65a2 ld a1,8(sp)
- 1938: 854a mv a0,s2
- 193a: f81e sd t2,48(sp)
- 193c: f41a sd t1,40(sp)
- 193e: f072 sd t3,32(sp)
- 1940: ec7e sd t6,24(sp)
- 1942: e846 sd a7,16(sp)
- 1944: 00cd0d3b addw s10,s10,a2
- 1948: 9982 jalr s3
- 194a: 892a mv s2,a0
- 194c: 1a0502e3 beqz a0,22f0 <stbsp_vsprintfcb+0x106a>
- 1950: 73c2 ld t2,48(sp)
- 1952: 7322 ld t1,40(sp)
- 1954: 7e02 ld t3,32(sp)
- 1956: 6fe2 ld t6,24(sp)
- 1958: 68c2 ld a7,16(sp)
- 195a: 842a mv s0,a0
- 195c: 1fe00693 li a3,510
- while (tz) {
- 1960: f80897e3 bnez a7,18ee <stbsp_vsprintfcb+0x668>
- sn = tail + 1;
- 1964: 07110793 addi a5,sp,113
- 1968: fcbe sd a5,120(sp)
- while (tail[0]) {
- 196a: 080f8763 beqz t6,19f8 <stbsp_vsprintfcb+0x772>
- stbsp__cb_buf_clamp(i, tail[0]);
- 196e: 854a mv a0,s2
- 1970: 8b6a mv s6,s10
- stbsp__chk_cb_buf(1);
- 1972: 1fe00a93 li s5,510
- stbsp__cb_buf_clamp(i, tail[0]);
- 1976: 8d4e mv s10,s3
- 1978: 20000a13 li s4,512
- 197c: 8bf2 mv s7,t3
- 197e: 891a mv s2,t1
- 1980: 899e mv s3,t2
- 1982: 000f879b sext.w a5,t6
- 1986: 7c0d0863 beqz s10,2156 <stbsp_vsprintfcb+0xed0>
- 198a: 40a4063b subw a2,s0,a0
- 198e: 40ca06bb subw a3,s4,a2
- 1992: 8736 mv a4,a3
- 1994: 00d7d363 bge a5,a3,199a <stbsp_vsprintfcb+0x714>
- 1998: 873e mv a4,a5
- tail[0] -= (char)i;
- 199a: 40ef8fbb subw t6,t6,a4
- stbsp__cb_buf_clamp(i, tail[0]);
- 199e: 0007079b sext.w a5,a4
- tail[0] -= (char)i;
- 19a2: 07f10823 sb t6,112(sp)
- while (i) {
- 19a6: c795 beqz a5,19d2 <stbsp_vsprintfcb+0x74c>
- 19a8: 75e6 ld a1,120(sp)
- 19aa: 02079613 slli a2,a5,0x20
- 19ae: 9201 srli a2,a2,0x20
- 19b0: 00c406b3 add a3,s0,a2
- 19b4: 87ae mv a5,a1
- *bf++ = *sn++;
- 19b6: 0007c703 lbu a4,0(a5)
- 19ba: 0405 addi s0,s0,1
- while (i) {
- 19bc: 0785 addi a5,a5,1
- *bf++ = *sn++;
- 19be: fee40fa3 sb a4,-1(s0)
- while (i) {
- 19c2: fed41ae3 bne s0,a3,19b6 <stbsp_vsprintfcb+0x730>
- 19c6: 95b2 add a1,a1,a2
- 19c8: fcae sd a1,120(sp)
- stbsp__chk_cb_buf(1);
- 19ca: 000d0d63 beqz s10,19e4 <stbsp_vsprintfcb+0x75e>
- 19ce: 40a4063b subw a2,s0,a0
- 19d2: 00cad963 bge s5,a2,19e4 <stbsp_vsprintfcb+0x75e>
- 19d6: 65a2 ld a1,8(sp)
- 19d8: 00cb0b3b addw s6,s6,a2
- 19dc: 9d02 jalr s10
- 19de: 200509e3 beqz a0,23f0 <stbsp_vsprintfcb+0x116a>
- 19e2: 842a mv s0,a0
- while (tail[0]) {
- 19e4: 07014f83 lbu t6,112(sp)
- 19e8: f80f9de3 bnez t6,1982 <stbsp_vsprintfcb+0x6fc>
- 19ec: 834a mv t1,s2
- 19ee: 83ce mv t2,s3
- 19f0: 8e5e mv t3,s7
- 19f2: 89ea mv s3,s10
- 19f4: 892a mv s2,a0
- 19f6: 8d5a mv s10,s6
- if (fl & STBSP__LEFTJUST)
- 19f8: 001e7e13 andi t3,t3,1
- 19fc: 000e0663 beqz t3,1a08 <stbsp_vsprintfcb+0x782>
- if (fw > 0) {
- 1a00: 00605463 blez t1,1a08 <stbsp_vsprintfcb+0x782>
- 1a04: 0300106f j 2a34 <stbsp_vsprintfcb+0x17ae>
- for (;;) {
- 1a08: 6b86 ld s7,64(sp)
- 1a0a: 2c013a03 ld s4,704(sp)
- 1a0e: 2b813a83 ld s5,696(sp)
- 1a12: 2b013b03 ld s6,688(sp)
- ++f;
- 1a16: 0485 addi s1,s1,1
- for (;;) {
- 1a18: b0f1 j 12e4 <stbsp_vsprintfcb+0x5e>
- fl |= STBSP__METRIC_SUFFIX;
- 1a1a: 100e6e13 ori t3,t3,256
- continue;
- 1a1e: 0685 addi a3,a3,1
- 1a20: bad1 j 13f4 <stbsp_vsprintfcb+0x16e>
- while (i) {
- 1a22: 0e0580e3 beqz a1,2302 <stbsp_vsprintfcb+0x107c>
- if ((((stbsp__uintptr)bf) & 3) == 0)
- 1a26: 00347793 andi a5,s0,3
- 1a2a: e799 bnez a5,1a38 <stbsp_vsprintfcb+0x7b2>
- 1a2c: 0dd0006f j 2308 <stbsp_vsprintfcb+0x1082>
- 1a30: 00347793 andi a5,s0,3
- 1a34: 72078463 beqz a5,215c <stbsp_vsprintfcb+0xed6>
- *bf++ = '0';
- 1a38: 01d40023 sb t4,0(s0)
- --i;
- 1a3c: 35fd addiw a1,a1,-1
- *bf++ = '0';
- 1a3e: 0405 addi s0,s0,1
- while (i) {
- 1a40: f9e5 bnez a1,1a30 <stbsp_vsprintfcb+0x7aa>
- while (i) {
- 1a42: 85a2 mv a1,s0
- stbsp__chk_cb_buf(1);
- 1a44: cc0b19e3 bnez s6,1716 <stbsp_vsprintfcb+0x490>
- 1a48: 842e mv s0,a1
- while (pr > 0) {
- 1a4a: c93042e3 bgtz s3,16ce <stbsp_vsprintfcb+0x448>
- 1a4e: b9cd j 1740 <stbsp_vsprintfcb+0x4ba>
- while (i) {
- 1a50: 87ae mv a5,a1
- while (n) {
- 1a52: dc041de3 bnez s0,182c <stbsp_vsprintfcb+0x5a6>
- 1a56: b5a5 j 18be <stbsp_vsprintfcb+0x638>
- while ((f[0] >= '0') && (f[0] <= '9')) {
- 1a58: fd07871b addiw a4,a5,-48
- 1a5c: 0ff77713 zext.b a4,a4
- 1a60: 4625 li a2,9
- ++f;
- 1a62: 0485 addi s1,s1,1
- pr = 0;
- 1a64: 4881 li a7,0
- while ((f[0] >= '0') && (f[0] <= '9')) {
- 1a66: 46a5 li a3,9
- 1a68: 9ce669e3 bltu a2,a4,143a <stbsp_vsprintfcb+0x1b4>
- pr = pr * 10 + f[0] - '0';
- 1a6c: 0028971b slliw a4,a7,0x2
- 1a70: 0117073b addw a4,a4,a7
- 1a74: 0017171b slliw a4,a4,0x1
- f++;
- 1a78: 0485 addi s1,s1,1
- pr = pr * 10 + f[0] - '0';
- 1a7a: 9f3d addw a4,a4,a5
- while ((f[0] >= '0') && (f[0] <= '9')) {
- 1a7c: 0004c783 lbu a5,0(s1)
- pr = pr * 10 + f[0] - '0';
- 1a80: fd07089b addiw a7,a4,-48
- while ((f[0] >= '0') && (f[0] <= '9')) {
- 1a84: fd07871b addiw a4,a5,-48
- 1a88: 0ff77713 zext.b a4,a4
- 1a8c: fee6f0e3 bgeu a3,a4,1a6c <stbsp_vsprintfcb+0x7e6>
- 1a90: b26d j 143a <stbsp_vsprintfcb+0x1b4>
- fl |= STBSP__METRIC_1024;
- 1a92: 8f5d or a4,a4,a5
- 1a94: 00070e1b sext.w t3,a4
- 1a98: 0685 addi a3,a3,1
- 1a9a: baa9 j 13f4 <stbsp_vsprintfcb+0x16e>
- *bf = 0;
- 1a9c: 00040023 sb zero,0(s0)
- 1aa0: b209 j 13a2 <stbsp_vsprintfcb+0x11c>
- if (f[0] == 'l') {
- 1aa2: 0014c783 lbu a5,1(s1)
- 1aa6: 06c00713 li a4,108
- fl |= ((sizeof(long) == 8) ? STBSP__INTMAX : 0);
- 1aaa: 020e6e13 ori t3,t3,32
- if (f[0] == 'l') {
- 1aae: 00e78c63 beq a5,a4,1ac6 <stbsp_vsprintfcb+0x840>
- ++f;
- 1ab2: 0485 addi s1,s1,1
- 1ab4: ba65 j 146c <stbsp_vsprintfcb+0x1e6>
- if (f[0] == 'h')
- 1ab6: 0014c783 lbu a5,1(s1)
- 1aba: 06800713 li a4,104
- fl |= STBSP__HALFWIDTH;
- 1abe: 200e6e13 ori t3,t3,512
- if (f[0] == 'h')
- 1ac2: fee798e3 bne a5,a4,1ab2 <stbsp_vsprintfcb+0x82c>
- if ((f[1] == '6') && (f[2] == '4')) {
- 1ac6: 0024c783 lbu a5,2(s1)
- ++f;
- 1aca: 0489 addi s1,s1,2
- 1acc: b245 j 146c <stbsp_vsprintfcb+0x1e6>
- s = va_arg(va, char *);
- 1ace: 008b8713 addi a4,s7,8
- 1ad2: e0ba sd a4,64(sp)
- if (fl & STBSP__INTMAX) {
- 1ad4: 020e7693 andi a3,t3,32
- 1ad8: 8772 mv a4,t3
- 1ada: 24069ee3 bnez a3,2536 <stbsp_vsprintfcb+0x12b0>
- stbsp__int32 i = va_arg(va, stbsp__int32);
- 1ade: 000ba683 lw a3,0(s7)
- if ((f[0] != 'u') && (i < 0)) {
- 1ae2: 07500613 li a2,117
- n64 = (stbsp__uint32)i;
- 1ae6: 02069f13 slli t5,a3,0x20
- 1aea: 020f5f13 srli t5,t5,0x20
- if ((f[0] != 'u') && (i < 0)) {
- 1aee: 00c78a63 beq a5,a2,1b02 <stbsp_vsprintfcb+0x87c>
- 1af2: 0006d863 bgez a3,1b02 <stbsp_vsprintfcb+0x87c>
- fl |= STBSP__NEGATIVE;
- 1af6: 08076713 ori a4,a4,128
- n64 = (stbsp__uint32)-i;
- 1afa: 40d00f3b negw t5,a3
- fl |= STBSP__NEGATIVE;
- 1afe: 00070e1b sext.w t3,a4
- if (fl & STBSP__METRIC_SUFFIX) {
- 1b02: 100e7693 andi a3,t3,256
- 1b06: 5c0683e3 beqz a3,28cc <stbsp_vsprintfcb+0x1646>
- if (n64 < 1024)
- 1b0a: 3ff00793 li a5,1023
- 1b0e: 01e7e463 bltu a5,t5,1b16 <stbsp_vsprintfcb+0x890>
- 1b12: 0ea0106f j 2bfc <stbsp_vsprintfcb+0x1976>
- else if (pr == -1)
- 1b16: 57fd li a5,-1
- 1b18: 30f887e3 beq a7,a5,2626 <stbsp_vsprintfcb+0x13a0>
- fv = (double)(stbsp__int64)n64;
- 1b1c: d22f7553 fcvt.d.l fa0,t5
- if (fl & STBSP__METRIC_1024)
- 1b20: 034e1793 slli a5,t3,0x34
- 1b24: 0007c463 bltz a5,1b2c <stbsp_vsprintfcb+0x8a6>
- 1b28: 2300106f j 2d58 <stbsp_vsprintfcb+0x1ad2>
- divisor = 1024.0;
- 1b2c: 00004797 auipc a5,0x4
- 1b30: cb47b787 fld fa5,-844(a5) # 57e0 <STDIN_FD+0x20>
- if ((fv < divisor) && (fv > -divisor))
- 1b34: 22f79753 fneg.d fa4,fa5
- fl += 0x1000000;
- 1b38: 010006b7 lui a3,0x1000
- while (fl < 0x4000000) {
- 1b3c: 04000737 lui a4,0x4000
- if ((fv < divisor) && (fv > -divisor))
- 1b40: a2f517d3 flt.d a5,fa0,fa5
- 1b44: c789 beqz a5,1b4e <stbsp_vsprintfcb+0x8c8>
- 1b46: a2a717d3 flt.d a5,fa4,fa0
- 1b4a: 3e079863 bnez a5,1f3a <stbsp_vsprintfcb+0xcb4>
- fl += 0x1000000;
- 1b4e: 01c68e3b addw t3,a3,t3
- fv /= divisor;
- 1b52: 1af57553 fdiv.d fa0,fa0,fa5
- while (fl < 0x4000000) {
- 1b56: feee65e3 bltu t3,a4,1b40 <stbsp_vsprintfcb+0x8ba>
- 1b5a: a6c5 j 1f3a <stbsp_vsprintfcb+0xcb4>
- h = (f[0] == 'X') ? hexu : hex;
- 1b5c: 05800693 li a3,88
- if (fl & STBSP__INTMAX) {
- 1b60: 020e7713 andi a4,t3,32
- h = (f[0] == 'X') ? hexu : hex;
- 1b64: 00005817 auipc a6,0x5
- 1b68: e8480813 addi a6,a6,-380 # 69e8 <hex.0>
- 1b6c: 00d79663 bne a5,a3,1b78 <stbsp_vsprintfcb+0x8f2>
- 1b70: 00005817 auipc a6,0x5
- 1b74: e6080813 addi a6,a6,-416 # 69d0 <hexu.1>
- l = (4 << 4) | (4 << 8);
- 1b78: 44000793 li a5,1088
- 1b7c: d0be sw a5,96(sp)
- if (fl & STBSP__LEADING_0X) {
- 1b7e: 008e7793 andi a5,t3,8
- 1b82: 7a079263 bnez a5,2326 <stbsp_vsprintfcb+0x10a0>
- lead[0] = 0;
- 1b86: 06010423 sb zero,104(sp)
- s = va_arg(va, char *);
- 1b8a: 008b8793 addi a5,s7,8
- 1b8e: e0be sd a5,64(sp)
- if (fl & STBSP__INTMAX)
- 1b90: 72070b63 beqz a4,22c6 <stbsp_vsprintfcb+0x1040>
- n64 = va_arg(va, stbsp__uint64);
- 1b94: 000bb683 ld a3,0(s7)
- dp = 0;
- 1b98: d282 sw zero,100(sp)
- tail[0] = 0;
- 1b9a: 06010823 sb zero,112(sp)
- if ((fl & STBSP__LEFTJUST) == 0) {
- 1b9e: 001e7513 andi a0,t3,1
- if (n64 == 0) {
- 1ba2: 380694e3 bnez a3,272a <stbsp_vsprintfcb+0x14a4>
- lead[0] = 0;
- 1ba6: 06010423 sb zero,104(sp)
- if (pr == 0) {
- 1baa: 78089a63 bnez a7,233e <stbsp_vsprintfcb+0x10b8>
- if (fw < (stbsp__int32)n)
- 1bae: fffb4313 not t1,s6
- 1bb2: 43f35313 srai t1,t1,0x3f
- l = 0;
- 1bb6: d082 sw zero,96(sp)
- if (fw < (stbsp__int32)n)
- 1bb8: 01637333 and t1,t1,s6
- goto scopy;
- 1bbc: 4701 li a4,0
- 1bbe: 4f81 li t6,0
- 1bc0: 4a01 li s4,0
- cs = 0;
- 1bc2: 4281 li t0,0
- s = num + STBSP__NUMSZ;
- 1bc4: 28010a93 addi s5,sp,640
- if ((fl & STBSP__LEFTJUST) == 0) {
- 1bc8: 9c0506e3 beqz a0,1594 <stbsp_vsprintfcb+0x30e>
- if (fw + pr) {
- 1bcc: 00e307bb addw a5,t1,a4
- 1bd0: 9c079fe3 bnez a5,15ae <stbsp_vsprintfcb+0x328>
- 1bd4: 06910793 addi a5,sp,105
- 1bd8: b661 j 1760 <stbsp_vsprintfcb+0x4da>
- h = (f[0] == 'E') ? hexu : hex;
- 1bda: 04500713 li a4,69
- 1bde: 00005317 auipc t1,0x5
- 1be2: e0a30313 addi t1,t1,-502 # 69e8 <hex.0>
- 1be6: 1ce78ae3 beq a5,a4,25ba <stbsp_vsprintfcb+0x1334>
- fv = va_arg(va, double);
- 1bea: 008b8713 addi a4,s7,8
- if (pr == -1)
- 1bee: 57fd li a5,-1
- fv = va_arg(va, double);
- 1bf0: e0ba sd a4,64(sp)
- 1bf2: 000bb507 fld fa0,0(s7)
- if (pr == -1)
- 1bf6: 1af88ce3 beq a7,a5,25ae <stbsp_vsprintfcb+0x1328>
- if (stbsp__real_to_str(&sn, &l, num, &dp, fv, pr | 0x80000000))
- 1bfa: 80000737 lui a4,0x80000
- 1bfe: 00e8e733 or a4,a7,a4
- 1c02: 2701 sext.w a4,a4
- 1c04: 10d4 addi a3,sp,100
- 1c06: 0110 addi a2,sp,128
- 1c08: 108c addi a1,sp,96
- 1c0a: 18a8 addi a0,sp,120
- 1c0c: f41e sd t2,40(sp)
- 1c0e: f01a sd t1,32(sp)
- 1c10: ec72 sd t3,24(sp)
- 1c12: e846 sd a7,16(sp)
- 1c14: d8efe0ef jal 1a2 <stbsp__real_to_str>
- 1c18: 68c2 ld a7,16(sp)
- 1c1a: 6e62 ld t3,24(sp)
- 1c1c: 7302 ld t1,32(sp)
- 1c1e: 73a2 ld t2,40(sp)
- if (dp == STBSP__SPECIAL) {
- 1c20: 5796 lw a5,100(sp)
- s = (char *)sn;
- 1c22: 7ae6 ld s5,120(sp)
- if ((l - 1) > (stbsp__uint32)pr)
- 1c24: 5686 lw a3,96(sp)
- if (stbsp__real_to_str(&sn, &l, num, &dp, fv, pr | 0x80000000))
- 1c26: 3c0511e3 bnez a0,27e8 <stbsp_vsprintfcb+0x1562>
- tail[0] = 0;
- 1c2a: 06010823 sb zero,112(sp)
- sign[0] = 0;
- 1c2e: 06010423 sb zero,104(sp)
- } else if (fl & STBSP__LEADINGSPACE) {
- 1c32: 004e7713 andi a4,t3,4
- 1c36: 6a070ee3 beqz a4,2af2 <stbsp_vsprintfcb+0x186c>
- sign[0] = 1;
- 1c3a: 6709 lui a4,0x2
- 1c3c: 0705 addi a4,a4,1 # 2001 <stbsp_vsprintfcb+0xd7b>
- 1c3e: 06e11423 sh a4,104(sp)
- if (dp == STBSP__SPECIAL) {
- 1c42: 671d lui a4,0x7
- 1c44: 1ee794e3 bne a5,a4,262c <stbsp_vsprintfcb+0x13a6>
- if (pr < (stbsp__int32)l)
- 1c48: 0006879b sext.w a5,a3
- n = pr + lead[0] + tail[0] + tz;
- 1c4c: 06814a03 lbu s4,104(sp)
- if (pr < (stbsp__int32)l)
- 1c50: fff7c793 not a5,a5
- n = pr + lead[0] + tail[0] + tz;
- 1c54: 07014f83 lbu t6,112(sp)
- if (pr < (stbsp__int32)l)
- 1c58: 97fd srai a5,a5,0x3f
- 1c5a: 8ff5 and a5,a5,a3
- n = pr + lead[0] + tail[0] + tz;
- 1c5c: 00fa073b addw a4,s4,a5
- 1c60: 01f7063b addw a2,a4,t6
- 1c64: 8732 mv a4,a2
- if ((fl & STBSP__LEFTJUST) == 0) {
- 1c66: 001e7513 andi a0,t3,1
- if (pr < (stbsp__int32)l)
- 1c6a: 2781 sext.w a5,a5
- if (fw < (stbsp__int32)n)
- 1c6c: 835a mv t1,s6
- 1c6e: 00cb5363 bge s6,a2,1c74 <stbsp_vsprintfcb+0x9ee>
- 1c72: 8332 mv t1,a2
- fw -= n;
- 1c74: 40e3033b subw t1,t1,a4
- cs = 0;
- 1c78: 4281 li t0,0
- pr -= l;
- 1c7a: 40d7873b subw a4,a5,a3
- tz = 0;
- 1c7e: 4881 li a7,0
- goto scopy;
- 1c80: b7a1 j 1bc8 <stbsp_vsprintfcb+0x942>
- h = (f[0] == 'G') ? hexu : hex;
- 1c82: 04700713 li a4,71
- 1c86: 00005317 auipc t1,0x5
- 1c8a: d6230313 addi t1,t1,-670 # 69e8 <hex.0>
- 1c8e: 14e783e3 beq a5,a4,25d4 <stbsp_vsprintfcb+0x134e>
- fv = va_arg(va, double);
- 1c92: 008b8713 addi a4,s7,8
- if (pr == -1)
- 1c96: 57fd li a5,-1
- fv = va_arg(va, double);
- 1c98: e0ba sd a4,64(sp)
- 1c9a: 000bb507 fld fa0,0(s7)
- if (pr == -1)
- 1c9e: 12f884e3 beq a7,a5,25c6 <stbsp_vsprintfcb+0x1340>
- else if (pr == 0)
- 1ca2: 6e0887e3 beqz a7,2b90 <stbsp_vsprintfcb+0x190a>
- if (stbsp__real_to_str(&sn, &l, num, &dp, fv, (pr - 1) | 0x80000000))
- 1ca6: fff8871b addiw a4,a7,-1
- 1caa: 800007b7 lui a5,0x80000
- 1cae: 8f5d or a4,a4,a5
- 1cb0: 2701 sext.w a4,a4
- l = stbsp__strlen_limited(s, (pr >= 0) ? pr : ~0u);
- 1cb2: 00088a9b sext.w s5,a7
- 1cb6: 8a46 mv s4,a7
- if (stbsp__real_to_str(&sn, &l, num, &dp, fv, (pr - 1) | 0x80000000))
- 1cb8: 10d4 addi a3,sp,100
- 1cba: 0110 addi a2,sp,128
- 1cbc: 108c addi a1,sp,96
- 1cbe: 18a8 addi a0,sp,120
- 1cc0: f01e sd t2,32(sp)
- 1cc2: ec1a sd t1,24(sp)
- 1cc4: e872 sd t3,16(sp)
- 1cc6: cdcfe0ef jal 1a2 <stbsp__real_to_str>
- 1cca: 6e42 ld t3,16(sp)
- 1ccc: 6362 ld t1,24(sp)
- 1cce: 7382 ld t2,32(sp)
- 1cd0: 4281 li t0,0
- 1cd2: c509 beqz a0,1cdc <stbsp_vsprintfcb+0xa56>
- fl |= STBSP__NEGATIVE;
- 1cd4: 080e6e13 ori t3,t3,128
- 1cd8: 08000293 li t0,128
- if (l > (stbsp__uint32)pr)
- 1cdc: 5806 lw a6,96(sp)
- 1cde: 010af463 bgeu s5,a6,1ce6 <stbsp_vsprintfcb+0xa60>
- l = pr;
- 1ce2: d0d6 sw s5,96(sp)
- 1ce4: 8856 mv a6,s5
- while ((l > 1) && (pr) && (sn[l - 1] == '0')) {
- 1ce6: 4705 li a4,1
- if ((dp <= -4) || (dp > (stbsp__int32)n)) {
- 1ce8: 5796 lw a5,100(sp)
- while ((l > 1) && (pr) && (sn[l - 1] == '0')) {
- 1cea: 01076463 bltu a4,a6,1cf2 <stbsp_vsprintfcb+0xa6c>
- 1cee: 1800106f j 2e6e <stbsp_vsprintfcb+0x1be8>
- 1cf2: 7be6 ld s7,120(sp)
- 1cf4: fff8071b addiw a4,a6,-1
- 1cf8: 1702 slli a4,a4,0x20
- 1cfa: 9301 srli a4,a4,0x20
- 1cfc: 001a0e9b addiw t4,s4,1
- 1d00: 75e2 ld a1,56(sp)
- 1d02: 8ade mv s5,s7
- 1d04: 975e add a4,a4,s7
- 1d06: 410e8ebb subw t4,t4,a6
- 1d0a: 88d2 mv a7,s4
- 1d0c: 86c2 mv a3,a6
- 1d0e: 4f01 li t5,0
- 1d10: 03000f93 li t6,48
- 1d14: e842 sd a6,16(sp)
- 1d16: a809 j 1d28 <stbsp_vsprintfcb+0xaa2>
- --pr;
- 1d18: 38fd addiw a7,a7,-1
- while ((l > 1) && (pr) && (sn[l - 1] == '0')) {
- 1d1a: 211e80e3 beq t4,a7,271a <stbsp_vsprintfcb+0x1494>
- 1d1e: 177d addi a4,a4,-1 # 6fff <_stdout+0x1df>
- 1d20: 4f05 li t5,1
- 1d22: 1e088ce3 beqz a7,271a <stbsp_vsprintfcb+0x1494>
- --l;
- 1d26: 85b6 mv a1,a3
- while ((l > 1) && (pr) && (sn[l - 1] == '0')) {
- 1d28: 00074803 lbu a6,0(a4)
- 1d2c: fff6861b addiw a2,a3,-1 # ffffff <_ZSt4cerr+0xff8807>
- 1d30: 0006851b sext.w a0,a3
- 1d34: 2581 sext.w a1,a1
- 1d36: 0006069b sext.w a3,a2
- 1d3a: fdf80fe3 beq a6,t6,1d18 <stbsp_vsprintfcb+0xa92>
- 1d3e: 6842 ld a6,16(sp)
- 1d40: fc2e sd a1,56(sp)
- 1d42: 86c2 mv a3,a6
- 1d44: 000f0463 beqz t5,1d4c <stbsp_vsprintfcb+0xac6>
- 1d48: d0ae sw a1,96(sp)
- 1d4a: 86ae mv a3,a1
- if ((dp <= -4) || (dp > (stbsp__int32)n)) {
- 1d4c: 5775 li a4,-3
- 1d4e: 08e7cee3 blt a5,a4,25ea <stbsp_vsprintfcb+0x1364>
- 1d52: 08fa4be3 blt s4,a5,25e8 <stbsp_vsprintfcb+0x1362>
- pr = (dp < (stbsp__int32)l) ? l - dp : 0;
- 1d56: 0005071b sext.w a4,a0
- if (dp > 0) {
- 1d5a: 7ef057e3 blez a5,2d48 <stbsp_vsprintfcb+0x1ac2>
- pr = (dp < (stbsp__int32)l) ? l - dp : 0;
- 1d5e: 4881 li a7,0
- 1d60: 00e7d463 bge a5,a4,1d68 <stbsp_vsprintfcb+0xae2>
- 1d64: 40f508bb subw a7,a0,a5
- tail[0] = 0;
- 1d68: 06010823 sb zero,112(sp)
- if (fl & STBSP__NEGATIVE) {
- 1d6c: 20029463 bnez t0,1f74 <stbsp_vsprintfcb+0xcee>
- } else if (fl & STBSP__LEADINGSPACE) {
- 1d70: 004e7713 andi a4,t3,4
- 1d74: 000715e3 bnez a4,257e <stbsp_vsprintfcb+0x12f8>
- } else if (fl & STBSP__LEADINGPLUS) {
- 1d78: 002e7713 andi a4,t3,2
- 1d7c: 660719e3 bnez a4,2bee <stbsp_vsprintfcb+0x1968>
- sign[0] = 0;
- 1d80: 06010423 sb zero,104(sp)
- 1d84: aaed j 1f7e <stbsp_vsprintfcb+0xcf8>
- h = (f[0] == 'A') ? hexu : hex;
- 1d86: 04100713 li a4,65
- 1d8a: 00005597 auipc a1,0x5
- 1d8e: c5e58593 addi a1,a1,-930 # 69e8 <hex.0>
- 1d92: 00e783e3 beq a5,a4,2598 <stbsp_vsprintfcb+0x1312>
- fv = va_arg(va, double);
- 1d96: 008b8693 addi a3,s7,8
- if (pr == -1)
- 1d9a: 577d li a4,-1
- fv = va_arg(va, double);
- 1d9c: e0b6 sd a3,64(sp)
- 1d9e: 000bb783 ld a5,0(s7)
- if (pr == -1)
- 1da2: 7ee88963 beq a7,a4,2594 <stbsp_vsprintfcb+0x130e>
- d = value;
-
- STBSP__COPYFP(b, d);
-
- *bits = b & ((((stbsp__uint64)1) << 52) - 1);
- *expo = (stbsp__int32)(((b >> 52) & 2047) - 1023);
- 1da6: 4347d613 srai a2,a5,0x34
- *bits = b & ((((stbsp__uint64)1) << 52) - 1);
- 1daa: 00c79513 slli a0,a5,0xc
- *expo = (stbsp__int32)(((b >> 52) & 2047) - 1023);
- 1dae: 7ff67613 andi a2,a2,2047
- *bits = b & ((((stbsp__uint64)1) << 52) - 1);
- 1db2: 8131 srli a0,a0,0xc
- *expo = (stbsp__int32)(((b >> 52) & 2047) - 1023);
- 1db4: c016061b addiw a2,a2,-1023
- if (stbsp__real_to_parts((stbsp__int64 *)&n64, &dp, fv))
- 1db8: 7a07c863 bltz a5,2568 <stbsp_vsprintfcb+0x12e2>
- } else if (fl & STBSP__LEADINGSPACE) {
- 1dbc: 004e7793 andi a5,t3,4
- 1dc0: 60078ee3 beqz a5,2bdc <stbsp_vsprintfcb+0x1956>
- 1dc4: 6789 lui a5,0x2
- 1dc6: 2785 addiw a5,a5,1 # 2001 <stbsp_vsprintfcb+0xd7b>
- sign[0] = 1;
- 1dc8: 06f11423 sh a5,104(sp)
- 1dcc: 468d li a3,3
- 1dce: 4a0d li s4,3
- 1dd0: 4809 li a6,2
- n64 |= (((stbsp__uint64)1) << 52);
- 1dd2: 4705 li a4,1
- 1dd4: 1752 slli a4,a4,0x34
- if (dp == -1023)
- 1dd6: c0100793 li a5,-1023
- n64 |= (((stbsp__uint64)1) << 52);
- 1dda: 8f49 or a4,a4,a0
- if (dp == -1023)
- 1ddc: 5cf600e3 beq a2,a5,2b9c <stbsp_vsprintfcb+0x1916>
- if (pr < 15)
- 1de0: 4539 li a0,14
- n64 <<= (64 - 56);
- 1de2: 00871793 slli a5,a4,0x8
- if (pr < 15)
- 1de6: 251546e3 blt a0,a7,2832 <stbsp_vsprintfcb+0x15ac>
- n64 += ((((stbsp__uint64)8) << 56) >> (pr * 4));
- 1dea: 4705 li a4,1
- 1dec: 0028951b slliw a0,a7,0x2
- 1df0: 176e slli a4,a4,0x3b
- 1df2: 00a75733 srl a4,a4,a0
- 1df6: 973e add a4,a4,a5
- *s++ = h[(n64 >> 60) & 15];
- 1df8: 03c75793 srli a5,a4,0x3c
- 1dfc: 97ae add a5,a5,a1
- 1dfe: 0007c503 lbu a0,0(a5)
- lead[1 + lead[0]] = '0';
- 1e02: 22080793 addi a5,a6,544
- 1e06: 06010813 addi a6,sp,96
- 1e0a: 97c2 add a5,a5,a6
- 1e0c: 03000813 li a6,48
- 1e10: df078423 sb a6,-536(a5)
- lead[2 + lead[0]] = 'x';
- 1e14: 22068793 addi a5,a3,544
- 1e18: 1094 addi a3,sp,96
- 1e1a: 96be add a3,a3,a5
- 1e1c: 07800793 li a5,120
- 1e20: def68423 sb a5,-536(a3)
- lead[0] += 2;
- 1e24: 07410423 sb s4,104(sp)
- *s++ = h[(n64 >> 60) & 15];
- 1e28: 0ca10023 sb a0,192(sp)
- if (pr)
- 1e2c: 740893e3 bnez a7,2d72 <stbsp_vsprintfcb+0x1aec>
- sn = s;
- 1e30: 0c110793 addi a5,sp,193
- 1e34: fcbe sd a5,120(sp)
- 1e36: 4701 li a4,0
- 1e38: 4501 li a0,0
- 1e3a: 4305 li t1,1
- 1e3c: 4685 li a3,1
- tail[1] = h[17];
- 1e3e: 0115c583 lbu a1,17(a1)
- tail[2] = '+';
- 1e42: 02b00793 li a5,43
- tail[1] = h[17];
- 1e46: 06b108a3 sb a1,113(sp)
- if (dp < 0) {
- 1e4a: 00065663 bgez a2,1e56 <stbsp_vsprintfcb+0xbd0>
- dp = -dp;
- 1e4e: 40c0063b negw a2,a2
- tail[2] = '-';
- 1e52: 02d00793 li a5,45
- tail[n] = '0' + dp % 10;
- 1e56: 4829 li a6,10
- 1e58: 030665bb remw a1,a2,a6
- 1e5c: 06f10923 sb a5,114(sp)
- n = (dp >= 1000) ? 6 : ((dp >= 100) ? 5 : ((dp >= 10) ? 4 : 3));
- 1e60: 3e700e93 li t4,999
- tail[n] = '0' + dp % 10;
- 1e64: 0305859b addiw a1,a1,48
- 1e68: 0ff5f593 zext.b a1,a1
- n = (dp >= 1000) ? 6 : ((dp >= 100) ? 5 : ((dp >= 10) ? 4 : 3));
- 1e6c: 18cec3e3 blt t4,a2,27f2 <stbsp_vsprintfcb+0x156c>
- 1e70: 06300e93 li t4,99
- 1e74: 54cec1e3 blt t4,a2,2bb6 <stbsp_vsprintfcb+0x1930>
- 1e78: 4ea5 li t4,9
- 1e7a: 72ced6e3 bge t4,a2,2da6 <stbsp_vsprintfcb+0x1b20>
- dp /= 10;
- 1e7e: 030647bb divw a5,a2,a6
- tail[0] = (char)n;
- 1e82: 4611 li a2,4
- 1e84: 06c10823 sb a2,112(sp)
- tail[n] = '0' + dp % 10;
- 1e88: 06b10a23 sb a1,116(sp)
- 1e8c: 4811 li a6,4
- 1e8e: 4f91 li t6,4
- 1e90: 0307879b addiw a5,a5,48
- 1e94: 06f109a3 sb a5,115(sp)
- n = pr + lead[0] + tail[0] + tz;
- 1e98: 006a07bb addw a5,s4,t1
- 1e9c: 010787bb addw a5,a5,a6
- 1ea0: 0117863b addw a2,a5,a7
- dp = (int)(s - sn);
- 1ea4: d2aa sw a0,100(sp)
- l = (int)(s - (num + 64));
- 1ea6: d0b6 sw a3,96(sp)
- n = pr + lead[0] + tail[0] + tz;
- 1ea8: 87b2 mv a5,a2
- if ((fl & STBSP__LEFTJUST) == 0) {
- 1eaa: 001e7513 andi a0,t3,1
- if (fw < (stbsp__int32)n)
- 1eae: 835a mv t1,s6
- 1eb0: 00cb5363 bge s6,a2,1eb6 <stbsp_vsprintfcb+0xc30>
- 1eb4: 8332 mv t1,a2
- cs = 1 + (3 << 24);
- 1eb6: 030002b7 lui t0,0x3000
- fw -= n;
- 1eba: 40f3033b subw t1,t1,a5
- cs = 1 + (3 << 24);
- 1ebe: 0285 addi t0,t0,1 # 3000001 <_ZSt4cerr+0x2ff8809>
- s = num + 64;
- 1ec0: 0c010a93 addi s5,sp,192
- goto scopy;
- 1ec4: b311 j 1bc8 <stbsp_vsprintfcb+0x942>
- h = (f[0] == 'B') ? hexu : hex;
- 1ec6: 04200713 li a4,66
- 1eca: 00005817 auipc a6,0x5
- 1ece: b1e80813 addi a6,a6,-1250 # 69e8 <hex.0>
- 1ed2: 6ce78963 beq a5,a4,25a4 <stbsp_vsprintfcb+0x131e>
- if (fl & STBSP__LEADING_0X) {
- 1ed6: 008e7793 andi a5,t3,8
- 1eda: 66079e63 bnez a5,2556 <stbsp_vsprintfcb+0x12d0>
- lead[0] = 0;
- 1ede: 06010423 sb zero,104(sp)
- l = (8 << 4) | (1 << 8);
- 1ee2: 18000793 li a5,384
- 1ee6: d0be sw a5,96(sp)
- if (fl & STBSP__INTMAX) {
- 1ee8: 020e7713 andi a4,t3,32
- goto radixnum;
- 1eec: b979 j 1b8a <stbsp_vsprintfcb+0x904>
- *s = (char)va_arg(va, int);
- 1eee: 000ba783 lw a5,0(s7)
- l = 1;
- 1ef2: 4705 li a4,1
- 1ef4: d0ba sw a4,96(sp)
- *s = (char)va_arg(va, int);
- 1ef6: 26f10fa3 sb a5,639(sp)
- 1efa: 008b8793 addi a5,s7,8
- lead[0] = 0;
- 1efe: 06010423 sb zero,104(sp)
- tail[0] = 0;
- 1f02: 06010823 sb zero,112(sp)
- dp = 0;
- 1f06: d282 sw zero,100(sp)
- *s = (char)va_arg(va, int);
- 1f08: e0be sd a5,64(sp)
- if ((fl & STBSP__LEFTJUST) == 0) {
- 1f0a: 001e7513 andi a0,t3,1
- if (fw < (stbsp__int32)n)
- 1f0e: 835a mv t1,s6
- 1f10: 69605063 blez s6,2590 <stbsp_vsprintfcb+0x130a>
- fw -= n;
- 1f14: 337d addiw t1,t1,-1
- goto scopy;
- 1f16: 4701 li a4,0
- 1f18: 4f81 li t6,0
- 1f1a: 4685 li a3,1
- 1f1c: 4a01 li s4,0
- cs = 0;
- 1f1e: 4281 li t0,0
- s = num + STBSP__NUMSZ - 1;
- 1f20: 27f10a93 addi s5,sp,639
- tz = 0;
- 1f24: 4881 li a7,0
- goto scopy;
- 1f26: b14d j 1bc8 <stbsp_vsprintfcb+0x942>
- fv = va_arg(va, double);
- 1f28: 008b8713 addi a4,s7,8
- if (fl & STBSP__METRIC_SUFFIX) {
- 1f2c: 100e7793 andi a5,t3,256
- fv = va_arg(va, double);
- 1f30: e0ba sd a4,64(sp)
- 1f32: 000bb507 fld fa0,0(s7)
- if (fl & STBSP__METRIC_SUFFIX) {
- 1f36: be0795e3 bnez a5,1b20 <stbsp_vsprintfcb+0x89a>
- if (pr == -1)
- 1f3a: 57fd li a5,-1
- if (stbsp__real_to_str(&sn, &l, num, &dp, fv, pr))
- 1f3c: 0008871b sext.w a4,a7
- if (pr == -1)
- 1f40: 00f89463 bne a7,a5,1f48 <stbsp_vsprintfcb+0xcc2>
- 1f44: 4719 li a4,6
- pr = 6; // default is 6
- 1f46: 4899 li a7,6
- if (stbsp__real_to_str(&sn, &l, num, &dp, fv, pr))
- 1f48: 10d4 addi a3,sp,100
- 1f4a: 0110 addi a2,sp,128
- 1f4c: 108c addi a1,sp,96
- 1f4e: 18a8 addi a0,sp,120
- 1f50: f01e sd t2,32(sp)
- 1f52: ec72 sd t3,24(sp)
- 1f54: e846 sd a7,16(sp)
- 1f56: a4cfe0ef jal 1a2 <stbsp__real_to_str>
- 1f5a: 6e62 ld t3,24(sp)
- 1f5c: 68c2 ld a7,16(sp)
- 1f5e: 7382 ld t2,32(sp)
- if (dp == STBSP__SPECIAL) {
- 1f60: 5796 lw a5,100(sp)
- if ((stbsp__int32)(l + n) > pr)
- 1f62: 5686 lw a3,96(sp)
- if (fl & STBSP__NEGATIVE) {
- 1f64: 080e7293 andi t0,t3,128
- if (stbsp__real_to_str(&sn, &l, num, &dp, fv, pr))
- 1f68: e00500e3 beqz a0,1d68 <stbsp_vsprintfcb+0xae2>
- fl |= STBSP__NEGATIVE;
- 1f6c: 080e6e13 ori t3,t3,128
- tail[0] = 0;
- 1f70: 06010823 sb zero,112(sp)
- sign[0] = 1;
- 1f74: 670d lui a4,0x3
- 1f76: d0170713 addi a4,a4,-767 # 2d01 <stbsp_vsprintfcb+0x1a7b>
- 1f7a: 06e11423 sh a4,104(sp)
- if (dp == STBSP__SPECIAL) {
- 1f7e: 671d lui a4,0x7
- 1f80: 7ce78963 beq a5,a4,2752 <stbsp_vsprintfcb+0x14cc>
- if (dp <= 0) {
- 1f84: 46f05fe3 blez a5,2c02 <stbsp_vsprintfcb+0x197c>
- cs = (fl & STBSP__TRIPLET_COMMA) ? ((600 - (stbsp__uint32)dp) % 3) : 0;
- 1f88: 040e7313 andi t1,t3,64
- 1f8c: 00078e9b sext.w t4,a5
- 1f90: 4581 li a1,0
- 1f92: 00030963 beqz t1,1fa4 <stbsp_vsprintfcb+0xd1e>
- 1f96: 25800593 li a1,600
- 1f9a: 41d585bb subw a1,a1,t4
- 1f9e: 470d li a4,3
- 1fa0: 02e5f5bb remuw a1,a1,a4
- *s++ = stbsp__comma;
- 1fa4: 00005a17 auipc s4,0x5
- 1fa8: 95ca0a13 addi s4,s4,-1700 # 6900 <stbsp__digitpair>
- s = (char *)sn;
- 1fac: 7f66 ld t5,120(sp)
- *s++ = stbsp__comma;
- 1fae: 0cda4283 lbu t0,205(s4)
- s = num + 64;
- 1fb2: 0c010a93 addi s5,sp,192
- if ((stbsp__uint32)dp >= l) {
- 1fb6: 44defb63 bgeu t4,a3,240c <stbsp_vsprintfcb+0x1186>
- n = 0;
- 1fba: 4501 li a0,0
- s = num + 64;
- 1fbc: 8756 mv a4,s5
- if ((fl & STBSP__TRIPLET_COMMA) && (++cs == 4)) {
- 1fbe: 4b91 li s7,4
- 1fc0: a015 j 1fe4 <stbsp_vsprintfcb+0xd5e>
- 1fc2: 8642 mv a2,a6
- 1fc4: 883a mv a6,a4
- 1fc6: 8732 mv a4,a2
- *s++ = sn[n];
- 1fc8: 02051613 slli a2,a0,0x20
- 1fcc: 9201 srli a2,a2,0x20
- 1fce: 967a add a2,a2,t5
- 1fd0: 00064f83 lbu t6,0(a2)
- ++n;
- 1fd4: 0015061b addiw a2,a0,1
- 1fd8: 0006051b sext.w a0,a2
- *s++ = sn[n];
- 1fdc: fff70fa3 sb t6,-1(a4) # 6fff <_stdout+0x1df>
- if (n >= (stbsp__uint32)dp)
- 1fe0: 7bd57563 bgeu a0,t4,278a <stbsp_vsprintfcb+0x1504>
- *s++ = stbsp__comma;
- 1fe4: 00170813 addi a6,a4,1
- if ((fl & STBSP__TRIPLET_COMMA) && (++cs == 4)) {
- 1fe8: fc030de3 beqz t1,1fc2 <stbsp_vsprintfcb+0xd3c>
- 1fec: 2585 addiw a1,a1,1
- 1fee: fd759ae3 bne a1,s7,1fc2 <stbsp_vsprintfcb+0xd3c>
- *s++ = stbsp__comma;
- 1ff2: fe580fa3 sb t0,-1(a6)
- 1ff6: 0709 addi a4,a4,2
- if ((fl & STBSP__TRIPLET_COMMA) && (++cs == 4)) {
- 1ff8: 4585 li a1,1
- 1ffa: b7f9 j 1fc8 <stbsp_vsprintfcb+0xd42>
- *d = tlen + (int)(bf - buf);
- 1ffc: 000bb703 ld a4,0(s7)
- 2000: 412407b3 sub a5,s0,s2
- 2004: 01a787bb addw a5,a5,s10
- int *d = va_arg(va, int *);
- 2008: 008b8693 addi a3,s7,8
- 200c: e0b6 sd a3,64(sp)
- *d = tlen + (int)(bf - buf);
- 200e: c31c sw a5,0(a4)
- } break;
- 2010: bae5 j 1a08 <stbsp_vsprintfcb+0x782>
- if (fl & STBSP__LEADING_0X) {
- 2012: 008e7793 andi a5,t3,8
- 2016: 50079b63 bnez a5,252c <stbsp_vsprintfcb+0x12a6>
- lead[0] = 0;
- 201a: 06010423 sb zero,104(sp)
- l = (3 << 4) | (3 << 8);
- 201e: 33000793 li a5,816
- 2022: d0be sw a5,96(sp)
- if (fl & STBSP__INTMAX) {
- 2024: 020e7713 andi a4,t3,32
- h = hexu;
- 2028: 00005817 auipc a6,0x5
- 202c: 9a880813 addi a6,a6,-1624 # 69d0 <hexu.1>
- goto radixnum;
- 2030: bea9 j 1b8a <stbsp_vsprintfcb+0x904>
- fl &= ~STBSP__LEADINGZERO; // 'p' only prints the pointer with zeros
- 2032: fefe7e13 andi t3,t3,-17
- 2036: 020e6e13 ori t3,t3,32
- 203a: 02000713 li a4,32
- pr = sizeof(void *) * 2;
- 203e: 48c1 li a7,16
- h = (f[0] == 'X') ? hexu : hex;
- 2040: 00005817 auipc a6,0x5
- 2044: 9a880813 addi a6,a6,-1624 # 69e8 <hex.0>
- 2048: be05 j 1b78 <stbsp_vsprintfcb+0x8f2>
- s = va_arg(va, char *);
- 204a: 000bba83 ld s5,0(s7)
- 204e: 008b8793 addi a5,s7,8
- 2052: e0be sd a5,64(sp)
- if (s == 0)
- 2054: 360a8ee3 beqz s5,2bd0 <stbsp_vsprintfcb+0x194a>
- if (((stbsp__uintptr)sn & 3) == 0)
- 2058: 003af793 andi a5,s5,3
- l = stbsp__strlen_limited(s, (pr >= 0) ? pr : ~0u);
- 205c: 5208c663 bltz a7,2588 <stbsp_vsprintfcb+0x1302>
- 2060: 0008869b sext.w a3,a7
- if (((stbsp__uintptr)sn & 3) == 0)
- 2064: 2a0782e3 beqz a5,2b08 <stbsp_vsprintfcb+0x1882>
- if (!limit || *sn == 0)
- 2068: 5a068b63 beqz a3,261e <stbsp_vsprintfcb+0x1398>
- if (((stbsp__uintptr)sn & 3) == 0)
- 206c: 87d6 mv a5,s5
- 206e: a801 j 207e <stbsp_vsprintfcb+0xdf8>
- ++sn;
- 2070: 0785 addi a5,a5,1
- if (((stbsp__uintptr)sn & 3) == 0)
- 2072: 0037f713 andi a4,a5,3
- --limit;
- 2076: 36fd addiw a3,a3,-1
- if (((stbsp__uintptr)sn & 3) == 0)
- 2078: 280709e3 beqz a4,2b0a <stbsp_vsprintfcb+0x1884>
- if (!limit || *sn == 0)
- 207c: c681 beqz a3,2084 <stbsp_vsprintfcb+0xdfe>
- 207e: 0007c703 lbu a4,0(a5)
- 2082: f77d bnez a4,2070 <stbsp_vsprintfcb+0xdea>
- return (stbsp__uint32)(sn - s);
- 2084: 415787b3 sub a5,a5,s5
- 2088: 0007869b sext.w a3,a5
- if (pr < (stbsp__int32)l)
- 208c: fff6c713 not a4,a3
- 2090: 977d srai a4,a4,0x3f
- 2092: 8f7d and a4,a4,a5
- 2094: 0007079b sext.w a5,a4
- n = pr + lead[0] + tail[0] + tz;
- 2098: 863e mv a2,a5
- pr -= l;
- 209a: 9f15 subw a4,a4,a3
- l = stbsp__strlen_limited(s, (pr >= 0) ? pr : ~0u);
- 209c: d0b6 sw a3,96(sp)
- lead[0] = 0;
- 209e: 06010423 sb zero,104(sp)
- tail[0] = 0;
- 20a2: 06010823 sb zero,112(sp)
- dp = 0;
- 20a6: d282 sw zero,100(sp)
- if ((fl & STBSP__LEFTJUST) == 0) {
- 20a8: 001e7513 andi a0,t3,1
- if (fw < (stbsp__int32)n)
- 20ac: 835a mv t1,s6
- 20ae: 00fb5363 bge s6,a5,20b4 <stbsp_vsprintfcb+0xe2e>
- 20b2: 833e mv t1,a5
- fw -= n;
- 20b4: 40c3033b subw t1,t1,a2
- goto scopy;
- 20b8: 4f81 li t6,0
- 20ba: 4a01 li s4,0
- cs = 0;
- 20bc: 4281 li t0,0
- tz = 0;
- 20be: 4881 li a7,0
- goto scopy;
- 20c0: b621 j 1bc8 <stbsp_vsprintfcb+0x942>
- *bf++ = stbsp__comma;
- 20c2: 87b2 mv a5,a2
- cs = 0;
- 20c4: 4a01 li s4,0
- 20c6: e44ff06f j 170a <stbsp_vsprintfcb+0x484>
- lead[0] -= (char)i;
- 20ca: 06010423 sb zero,104(sp)
- while (i) {
- 20ce: d38ff06f j 1606 <stbsp_vsprintfcb+0x380>
- lead[0] -= (char)i;
- 20d2: 06010423 sb zero,104(sp)
- while (i) {
- 20d6: ed8ff06f j 17ae <stbsp_vsprintfcb+0x528>
- while (i >= 4) {
- 20da: 06fadc63 bge s5,a5,2152 <stbsp_vsprintfcb+0xecc>
- tz -= i;
- 20de: 8722 mv a4,s0
- 20e0: 0007851b sext.w a0,a5
- while (i >= 4) {
- 20e4: 008785bb addw a1,a5,s0
- *(stbsp__uint32 *)bf = 0x30303030;
- 20e8: 01672023 sw s6,0(a4)
- bf += 4;
- 20ec: 0711 addi a4,a4,4
- while (i >= 4) {
- 20ee: 40e5863b subw a2,a1,a4
- 20f2: fecacbe3 blt s5,a2,20e8 <stbsp_vsprintfcb+0xe62>
- 20f6: ffc5061b addiw a2,a0,-4
- 20fa: 0026561b srliw a2,a2,0x2
- 20fe: 0016071b addiw a4,a2,1
- 2102: 37f1 addiw a5,a5,-4
- 2104: 0026161b slliw a2,a2,0x2
- 2108: 070a slli a4,a4,0x2
- 210a: 9722 add a4,a4,s0
- 210c: 9f91 subw a5,a5,a2
- while (i) {
- 210e: 843a mv s0,a4
- 2110: 80078de3 beqz a5,192a <stbsp_vsprintfcb+0x6a4>
- 2114: 1782 slli a5,a5,0x20
- 2116: 9381 srli a5,a5,0x20
- 2118: 00f70433 add s0,a4,a5
- *bf++ = '0';
- 211c: 0705 addi a4,a4,1
- 211e: ff470fa3 sb s4,-1(a4)
- while (i) {
- 2122: fe871de3 bne a4,s0,211c <stbsp_vsprintfcb+0xe96>
- 2126: 805ff06f j 192a <stbsp_vsprintfcb+0x6a4>
- stbsp__cb_buf_clamp(i, pr);
- 212a: 85ce mv a1,s3
- if ((fl & STBSP__TRIPLET_COMMA) == 0) {
- 212c: 4981 li s3,0
- 212e: dc049263 bnez s1,16f2 <stbsp_vsprintfcb+0x46c>
- 2132: b8d5 j 1a26 <stbsp_vsprintfcb+0x7a0>
- STBSP__UNALIGNED(while (i >= 4) {
- 2134: 4401 li s0,0
- 2136: 85be mv a1,a5
- 2138: f0ea4b63 blt s4,a4,184e <stbsp_vsprintfcb+0x5c8>
- 213c: f42ff06f j 187e <stbsp_vsprintfcb+0x5f8>
- if ((((stbsp__uintptr)bf) & 3) == 0)
- 2140: 00347713 andi a4,s0,3
- stbsp__cb_buf_clamp(i, tz);
- 2144: 87c6 mv a5,a7
- tz -= i;
- 2146: 4881 li a7,0
- if ((((stbsp__uintptr)bf) & 3) == 0)
- 2148: fc071c63 bnez a4,1920 <stbsp_vsprintfcb+0x69a>
- while (i >= 4) {
- 214c: 470d li a4,3
- 214e: f8f748e3 blt a4,a5,20de <stbsp_vsprintfcb+0xe58>
- 2152: 8722 mv a4,s0
- 2154: b7c1 j 2114 <stbsp_vsprintfcb+0xe8e>
- tail[0] -= (char)i;
- 2156: 06010823 sb zero,112(sp)
- while (i) {
- 215a: b0b9 j 19a8 <stbsp_vsprintfcb+0x722>
- while (i >= 4) {
- 215c: 478d li a5,3
- 215e: 8622 mv a2,s0
- 2160: d8b7d963 bge a5,a1,16f2 <stbsp_vsprintfcb+0x46c>
- 2164: ffc5839b addiw t2,a1,-4
- 2168: 0023d79b srliw a5,t2,0x2
- 216c: 0017859b addiw a1,a5,1
- 2170: 058a slli a1,a1,0x2
- 2172: 942e add s0,s0,a1
- *(stbsp__uint32 *)bf = 0x30303030;
- 2174: 01762023 sw s7,0(a2)
- bf += 4;
- 2178: 0611 addi a2,a2,4
- while (i >= 4) {
- 217a: fe861de3 bne a2,s0,2174 <stbsp_vsprintfcb+0xeee>
- 217e: 0027979b slliw a5,a5,0x2
- 2182: 40f385bb subw a1,t2,a5
- 2186: d68ff06f j 16ee <stbsp_vsprintfcb+0x468>
- while (i) {
- 218a: 85be mv a1,a5
- 218c: ee071963 bnez a4,187e <stbsp_vsprintfcb+0x5f8>
- 2190: f16ff06f j 18a6 <stbsp_vsprintfcb+0x620>
- 2194: 2c013a03 ld s4,704(sp)
- 2198: 2b813a83 ld s5,696(sp)
- 219c: 2b013b03 ld s6,688(sp)
- 21a0: 8ca2 mv s9,s0
- 21a2: a04ff06f j 13a6 <stbsp_vsprintfcb+0x120>
- stbsp__chk_cb_buf(1);
- 21a6: 2601 sext.w a2,a2
- 21a8: 1fe00793 li a5,510
- 21ac: f8c7c563 blt a5,a2,1936 <stbsp_vsprintfcb+0x6b0>
- 21b0: f3eff06f j 18ee <stbsp_vsprintfcb+0x668>
- fl &= ~STBSP__TRIPLET_COMMA; // if no leading zeros, then no commas
- 21b4: fbfe7e13 andi t3,t3,-65
- if (fw + pr) {
- 21b8: 006707bb addw a5,a4,t1
- fl &= ~STBSP__TRIPLET_COMMA; // if no leading zeros, then no commas
- 21bc: 2e01 sext.w t3,t3
- if (fw + pr) {
- 21be: a0078be3 beqz a5,1bd4 <stbsp_vsprintfcb+0x94e>
- while (fw > 0) {
- 21c2: be605663 blez t1,15ae <stbsp_vsprintfcb+0x328>
- *(stbsp__uint32 *)bf = 0x20202020;
- 21c6: 20202837 lui a6,0x20202
- stbsp__cb_buf_clamp(i, fw);
- 21ca: 854a mv a0,s2
- 21cc: 894e mv s2,s3
- 21ce: 69a2 ld s3,8(sp)
- *(stbsp__uint32 *)bf = 0x20202020;
- 21d0: 02080813 addi a6,a6,32 # 20202020 <_ZSt4cerr+0x201fa828>
- stbsp__cb_buf_clamp(i, fw);
- 21d4: ec52 sd s4,24(sp)
- 21d6: f426 sd s1,40(sp)
- 21d8: 87a2 mv a5,s0
- 21da: 84ea mv s1,s10
- stbsp__chk_cb_buf(1);
- 21dc: 1fe00f13 li t5,510
- stbsp__cb_buf_clamp(i, fw);
- 21e0: 8d6e mv s10,s11
- *bf++ = ' ';
- 21e2: 02000b13 li s6,32
- stbsp__cb_buf_clamp(i, fw);
- 21e6: 8de6 mv s11,s9
- while (i >= 4) {
- 21e8: 4b8d li s7,3
- stbsp__cb_buf_clamp(i, fw);
- 21ea: 20000e93 li t4,512
- 21ee: e846 sd a7,16(sp)
- 21f0: f07e sd t6,32(sp)
- 21f2: f836 sd a3,48(sp)
- 21f4: e4f2 sd t3,72(sp)
- 21f6: e8ba sd a4,80(sp)
- 21f8: ec96 sd t0,88(sp)
- 21fa: 841a mv s0,t1
- 21fc: 8a42 mv s4,a6
- 21fe: 8c9e mv s9,t2
- 2200: 0c090063 beqz s2,22c0 <stbsp_vsprintfcb+0x103a>
- 2204: 40a78633 sub a2,a5,a0
- 2208: 40ce873b subw a4,t4,a2
- 220c: 86ba mv a3,a4
- 220e: 00e45363 bge s0,a4,2214 <stbsp_vsprintfcb+0xf8e>
- 2212: 86a2 mv a3,s0
- 2214: 0006871b sext.w a4,a3
- fw -= i;
- 2218: 9c15 subw s0,s0,a3
- while (i) {
- 221a: e719 bnez a4,2228 <stbsp_vsprintfcb+0xfa2>
- 221c: a095 j 2280 <stbsp_vsprintfcb+0xffa>
- *bf++ = ' ';
- 221e: 01678023 sb s6,0(a5)
- --i;
- 2222: 377d addiw a4,a4,-1
- *bf++ = ' ';
- 2224: 0785 addi a5,a5,1
- while (i) {
- 2226: cb29 beqz a4,2278 <stbsp_vsprintfcb+0xff2>
- if ((((stbsp__uintptr)bf) & 3) == 0)
- 2228: 0037f693 andi a3,a5,3
- 222c: faed bnez a3,221e <stbsp_vsprintfcb+0xf98>
- while (i >= 4) {
- 222e: 86be mv a3,a5
- 2230: 00070f9b sext.w t6,a4
- 2234: 00f705bb addw a1,a4,a5
- 2238: 02ebd763 bge s7,a4,2266 <stbsp_vsprintfcb+0xfe0>
- *(stbsp__uint32 *)bf = 0x20202020;
- 223c: 0146a023 sw s4,0(a3)
- bf += 4;
- 2240: 0691 addi a3,a3,4
- while (i >= 4) {
- 2242: 40d5863b subw a2,a1,a3
- 2246: fecbcbe3 blt s7,a2,223c <stbsp_vsprintfcb+0xfb6>
- 224a: ffcf861b addiw a2,t6,-4 # fffffffff7fffffc <_ZSt4cerr+0xfffffffff7ff8804>
- 224e: 0026561b srliw a2,a2,0x2
- 2252: 0016069b addiw a3,a2,1
- 2256: 3771 addiw a4,a4,-4
- 2258: 0026161b slliw a2,a2,0x2
- 225c: 068a slli a3,a3,0x2
- 225e: 96be add a3,a3,a5
- 2260: 9f11 subw a4,a4,a2
- while (i) {
- 2262: 87b6 mv a5,a3
- 2264: cb11 beqz a4,2278 <stbsp_vsprintfcb+0xff2>
- 2266: 1702 slli a4,a4,0x20
- 2268: 9301 srli a4,a4,0x20
- 226a: 00e687b3 add a5,a3,a4
- *bf++ = ' ';
- 226e: 0685 addi a3,a3,1
- 2270: ff668fa3 sb s6,-1(a3)
- while (i) {
- 2274: fef69de3 bne a3,a5,226e <stbsp_vsprintfcb+0xfe8>
- stbsp__chk_cb_buf(1);
- 2278: 40a78633 sub a2,a5,a0
- 227c: 00090e63 beqz s2,2298 <stbsp_vsprintfcb+0x1012>
- 2280: 2601 sext.w a2,a2
- 2282: 00cf5b63 bge t5,a2,2298 <stbsp_vsprintfcb+0x1012>
- 2286: 85ce mv a1,s3
- 2288: 9cb1 addw s1,s1,a2
- 228a: 9902 jalr s2
- 228c: c541 beqz a0,2314 <stbsp_vsprintfcb+0x108e>
- 228e: 87aa mv a5,a0
- 2290: 20000e93 li t4,512
- 2294: 1fe00f13 li t5,510
- while (fw > 0) {
- 2298: f68044e3 bgtz s0,2200 <stbsp_vsprintfcb+0xf7a>
- 229c: 8322 mv t1,s0
- 229e: 89ca mv s3,s2
- 22a0: 83e6 mv t2,s9
- 22a2: 68c2 ld a7,16(sp)
- 22a4: 8cee mv s9,s11
- 22a6: 6a62 ld s4,24(sp)
- 22a8: 8dea mv s11,s10
- 22aa: 7f82 ld t6,32(sp)
- 22ac: 8d26 mv s10,s1
- 22ae: 76c2 ld a3,48(sp)
- 22b0: 6e26 ld t3,72(sp)
- 22b2: 6746 ld a4,80(sp)
- 22b4: 62e6 ld t0,88(sp)
- 22b6: 74a2 ld s1,40(sp)
- 22b8: 892a mv s2,a0
- 22ba: 843e mv s0,a5
- 22bc: af2ff06f j 15ae <stbsp_vsprintfcb+0x328>
- stbsp__cb_buf_clamp(i, fw);
- 22c0: 8722 mv a4,s0
- 22c2: 4401 li s0,0
- if ((((stbsp__uintptr)bf) & 3) == 0)
- 22c4: b795 j 2228 <stbsp_vsprintfcb+0xfa2>
- n64 = va_arg(va, stbsp__uint32);
- 22c6: 000be683 lwu a3,0(s7)
- 22ca: b0f9 j 1b98 <stbsp_vsprintfcb+0x912>
- 22cc: 2c013a03 ld s4,704(sp)
- 22d0: 2b813a83 ld s5,696(sp)
- 22d4: 2b013b03 ld s6,688(sp)
- 22d8: 8cca mv s9,s2
- 22da: 8ccff06f j 13a6 <stbsp_vsprintfcb+0x120>
- 22de: 8cd6 mv s9,s5
- 22e0: 2c013a03 ld s4,704(sp)
- 22e4: 2b813a83 ld s5,696(sp)
- 22e8: 2b013b03 ld s6,688(sp)
- 22ec: 8baff06f j 13a6 <stbsp_vsprintfcb+0x120>
- 22f0: 2c013a03 ld s4,704(sp)
- 22f4: 2b813a83 ld s5,696(sp)
- 22f8: 2b013b03 ld s6,688(sp)
- 22fc: 8cea mv s9,s10
- 22fe: 8a8ff06f j 13a6 <stbsp_vsprintfcb+0x120>
- while (i) {
- 2302: 85a2 mv a1,s0
- 2304: c12ff06f j 1716 <stbsp_vsprintfcb+0x490>
- while (i >= 4) {
- 2308: 478d li a5,3
- 230a: 8622 mv a2,s0
- 230c: e4b7cce3 blt a5,a1,2164 <stbsp_vsprintfcb+0xede>
- 2310: be2ff06f j 16f2 <stbsp_vsprintfcb+0x46c>
- 2314: 2c013a03 ld s4,704(sp)
- 2318: 2b813a83 ld s5,696(sp)
- 231c: 2b013b03 ld s6,688(sp)
- 2320: 8ca6 mv s9,s1
- 2322: 884ff06f j 13a6 <stbsp_vsprintfcb+0x120>
- lead[2] = h[16];
- 2326: 01084683 lbu a3,16(a6)
- lead[0] = 2;
- 232a: 678d lui a5,0x3
- 232c: 0789 addi a5,a5,2 # 3002 <sprintf+0x44>
- 232e: 06f11423 sh a5,104(sp)
- lead[2] = h[16];
- 2332: 06d10523 sb a3,106(sp)
- 2336: b891 j 1b8a <stbsp_vsprintfcb+0x904>
- 2338: 8cea mv s9,s10
- 233a: 86cff06f j 13a6 <stbsp_vsprintfcb+0x120>
- 233e: 4f81 li t6,0
- 2340: 4a01 li s4,0
- 2342: 5586 lw a1,96(sp)
- *--s = stbsp__comma;
- 2344: 00004f17 auipc t5,0x4
- 2348: 689f4f03 lbu t5,1673(t5) # 69cd <stbsp__comma>
- 234c: 0510 addi a2,sp,640
- 234e: 0085d71b srliw a4,a1,0x8
- *--s = h[n64 & ((1 << (l >> 8)) - 1)];
- 2352: 4305 li t1,1
- if (fl & STBSP__TRIPLET_COMMA) {
- 2354: 040e7e93 andi t4,t3,64
- *--s = h[n64 & ((1 << (l >> 8)) - 1)];
- 2358: 0007029b sext.w t0,a4
- 235c: 005317bb sllw a5,t1,t0
- 2360: 37fd addiw a5,a5,-1
- 2362: 8ff5 and a5,a5,a3
- 2364: 97c2 add a5,a5,a6
- 2366: 0007c783 lbu a5,0(a5)
- n64 >>= (l >> 8);
- 236a: 0056d6b3 srl a3,a3,t0
- *--s = h[n64 & ((1 << (l >> 8)) - 1)];
- 236e: fff60a93 addi s5,a2,-1
- 2372: fef60fa3 sb a5,-1(a2)
- if (!((n64) || ((stbsp__int32)((num + STBSP__NUMSZ) - s) < pr)))
- 2376: e691 bnez a3,2382 <stbsp_vsprintfcb+0x10fc>
- 2378: 051c addi a5,sp,640
- 237a: 415787bb subw a5,a5,s5
- 237e: 0317dd63 bge a5,a7,23b8 <stbsp_vsprintfcb+0x1132>
- if (fl & STBSP__TRIPLET_COMMA) {
- 2382: 020e8963 beqz t4,23b4 <stbsp_vsprintfcb+0x112e>
- ++l;
- 2386: 0015879b addiw a5,a1,1
- if ((l & 15) == ((l >> 4) & 15)) {
- 238a: 0047d29b srliw t0,a5,0x4
- 238e: 00f2c2b3 xor t0,t0,a5
- 2392: 00f2f293 andi t0,t0,15
- ++l;
- 2396: 0007859b sext.w a1,a5
- if ((l & 15) == ((l >> 4) & 15)) {
- 239a: 0087d71b srliw a4,a5,0x8
- 239e: 00029b63 bnez t0,23b4 <stbsp_vsprintfcb+0x112e>
- l &= ~15;
- 23a2: 9bc1 andi a5,a5,-16
- 23a4: 0007859b sext.w a1,a5
- *--s = stbsp__comma;
- 23a8: ffe60a93 addi s5,a2,-2
- 23ac: ffe60f23 sb t5,-2(a2)
- 23b0: 0087d71b srliw a4,a5,0x8
- 23b4: 8656 mv a2,s5
- 23b6: b74d j 2358 <stbsp_vsprintfcb+0x10d2>
- cs = (stbsp__uint32)((num + STBSP__NUMSZ) - s) + ((((l >> 4) & 15)) << 24);
- 23b8: 0045d29b srliw t0,a1,0x4
- 23bc: 0f0006b7 lui a3,0xf000
- if (pr < (stbsp__int32)l)
- 23c0: 0007871b sext.w a4,a5
- cs = (stbsp__uint32)((num + STBSP__NUMSZ) - s) + ((((l >> 4) & 15)) << 24);
- 23c4: 0182929b slliw t0,t0,0x18
- 23c8: 00d2f2b3 and t0,t0,a3
- n = pr + lead[0] + tail[0] + tz;
- 23cc: 00ef863b addw a2,t6,a4
- l = (stbsp__uint32)((num + STBSP__NUMSZ) - s);
- 23d0: d0be sw a5,96(sp)
- n = pr + lead[0] + tail[0] + tz;
- 23d2: 8fb2 mv t6,a2
- cs = (stbsp__uint32)((num + STBSP__NUMSZ) - s) + ((((l >> 4) & 15)) << 24);
- 23d4: 86be mv a3,a5
- 23d6: 00f282bb addw t0,t0,a5
- if (fw < (stbsp__int32)n)
- 23da: 835a mv t1,s6
- 23dc: 00cb5363 bge s6,a2,23e2 <stbsp_vsprintfcb+0x115c>
- 23e0: 8332 mv t1,a2
- fw -= n;
- 23e2: 41f3033b subw t1,t1,t6
- pr -= l;
- 23e6: 9f1d subw a4,a4,a5
- goto scopy;
- 23e8: 4f81 li t6,0
- tz = 0;
- 23ea: 4881 li a7,0
- goto scopy;
- 23ec: fdcff06f j 1bc8 <stbsp_vsprintfcb+0x942>
- 23f0: 8cda mv s9,s6
- 23f2: 2c013a03 ld s4,704(sp)
- 23f6: 2b813a83 ld s5,696(sp)
- 23fa: 2b013b03 ld s6,688(sp)
- 23fe: fa9fe06f j 13a6 <stbsp_vsprintfcb+0x120>
- fl |= ((sizeof(void *) == 8) ? STBSP__INTMAX : 0);
- 2402: 020e6e13 ori t3,t3,32
- ++f;
- 2406: 0485 addi s1,s1,1
- 2408: 864ff06f j 146c <stbsp_vsprintfcb+0x1e6>
- n = 0;
- 240c: 4601 li a2,0
- s = num + 64;
- 240e: 8756 mv a4,s5
- if ((fl & STBSP__TRIPLET_COMMA) && (++cs == 4)) {
- 2410: 4511 li a0,4
- *s++ = stbsp__comma;
- 2412: 00170793 addi a5,a4,1
- if ((fl & STBSP__TRIPLET_COMMA) && (++cs == 4)) {
- 2416: 00030563 beqz t1,2420 <stbsp_vsprintfcb+0x119a>
- 241a: 2585 addiw a1,a1,1
- 241c: 10a58363 beq a1,a0,2522 <stbsp_vsprintfcb+0x129c>
- 2420: 873e mv a4,a5
- *s++ = sn[n];
- 2422: 02061793 slli a5,a2,0x20
- 2426: 9381 srli a5,a5,0x20
- 2428: 97fa add a5,a5,t5
- 242a: 0007c803 lbu a6,0(a5)
- ++n;
- 242e: 2605 addiw a2,a2,1
- *s++ = sn[n];
- 2430: ff070fa3 sb a6,-1(a4)
- if (n >= l)
- 2434: fcd66fe3 bltu a2,a3,2412 <stbsp_vsprintfcb+0x118c>
- if (n < (stbsp__uint32)dp) {
- 2438: 0bd663e3 bltu a2,t4,2cde <stbsp_vsprintfcb+0x1a58>
- cs = (int)(s - (num + 64)) + (3 << 24); // cs is how many tens
- 243c: 415707b3 sub a5,a4,s5
- 2440: 030002b7 lui t0,0x3000
- 2444: 00f282bb addw t0,t0,a5
- if (pr) {
- 2448: 00088a63 beqz a7,245c <stbsp_vsprintfcb+0x11d6>
- *s++ = stbsp__period;
- 244c: 0cca4683 lbu a3,204(s4)
- 2450: 00170793 addi a5,a4,1
- l = (stbsp__uint32)(s - (num + 64));
- 2454: 415787b3 sub a5,a5,s5
- *s++ = stbsp__period;
- 2458: 00d70023 sb a3,0(a4)
- if (fl & STBSP__METRIC_SUFFIX) {
- 245c: 100e7713 andi a4,t3,256
- 2460: 86f2 mv a3,t3
- 2462: 2c070163 beqz a4,2724 <stbsp_vsprintfcb+0x149e>
- if (fl & STBSP__METRIC_NOSPACE)
- 2466: 40ae5f9b sraiw t6,t3,0xa
- 246a: 001fcf93 xori t6,t6,1
- 246e: 001fff93 andi t6,t6,1
- tail[1] = ' ';
- 2472: 02000713 li a4,32
- 2476: 06e108a3 sb a4,113(sp)
- tail[0] = idx;
- 247a: 07f10823 sb t6,112(sp)
- if (fl >> 24) { // SI kilo is 'k', JEDEC and SI kibits are 'K'.
- 247e: 018e561b srliw a2,t3,0x18
- 2482: 018e571b srliw a4,t3,0x18
- n = pr + lead[0] + tail[0] + tz;
- 2486: 000f859b sext.w a1,t6
- if (fl >> 24) { // SI kilo is 'k', JEDEC and SI kibits are 'K'.
- 248a: c225 beqz a2,24ea <stbsp_vsprintfcb+0x1264>
- if (fl & STBSP__METRIC_1024)
- 248c: 001f859b addiw a1,t6,1
- 2490: 0ff5f613 zext.b a2,a1
- tail[idx + 1] = "_KMGT"[fl >> 24];
- 2494: 1702 slli a4,a4,0x20
- if (fl & STBSP__METRIC_1024)
- 2496: 03469513 slli a0,a3,0x34
- tail[idx + 1] = "_KMGT"[fl >> 24];
- 249a: 85b2 mv a1,a2
- 249c: 9301 srli a4,a4,0x20
- if (fl & STBSP__METRIC_1024)
- 249e: 06055ee3 bgez a0,2d1a <stbsp_vsprintfcb+0x1a94>
- tail[idx + 1] = "_KMGT"[fl >> 24];
- 24a2: 00003517 auipc a0,0x3
- 24a6: b9e50513 addi a0,a0,-1122 # 5040 <_GLOBAL__sub_I__ZSt3cin+0x98>
- 24aa: 972a add a4,a4,a0
- 24ac: 00074503 lbu a0,0(a4)
- if (fl & STBSP__METRIC_1024 && !(fl & STBSP__METRIC_JEDEC)) {
- 24b0: 6709 lui a4,0x2
- 24b2: 80070713 addi a4,a4,-2048 # 1800 <stbsp_vsprintfcb+0x57a>
- 24b6: 8f75 and a4,a4,a3
- tail[idx + 1] = "_KMGT"[fl >> 24];
- 24b8: 06010813 addi a6,sp,96
- 24bc: 22060693 addi a3,a2,544
- 24c0: 96c2 add a3,a3,a6
- 24c2: dea68823 sb a0,-528(a3) # efffdf0 <_ZSt4cerr+0xeff85f8>
- if (fl & STBSP__METRIC_1024 && !(fl & STBSP__METRIC_JEDEC)) {
- 24c6: 8007071b addiw a4,a4,-2048
- 24ca: 060715e3 bnez a4,2d34 <stbsp_vsprintfcb+0x1aae>
- tail[idx + 1] = 'i';
- 24ce: 2f89 addiw t6,t6,2
- 24d0: 0ffff593 zext.b a1,t6
- 24d4: 1094 addi a3,sp,96
- 24d6: 22058713 addi a4,a1,544
- 24da: 9736 add a4,a4,a3
- 24dc: 06900693 li a3,105
- 24e0: 8fae mv t6,a1
- 24e2: ded70823 sb a3,-528(a4)
- tail[0] = idx;
- 24e6: 07f10823 sb t6,112(sp)
- l = (stbsp__uint32)(s - (num + 64));
- 24ea: 0007869b sext.w a3,a5
- n = pr + lead[0] + tail[0] + tz;
- 24ee: 06814a03 lbu s4,104(sp)
- if (pr < (stbsp__int32)l)
- 24f2: fff6c713 not a4,a3
- 24f6: 977d srai a4,a4,0x3f
- 24f8: 8ff9 and a5,a5,a4
- n = pr + lead[0] + tail[0] + tz;
- 24fa: 00fa073b addw a4,s4,a5
- 24fe: 9f2d addw a4,a4,a1
- 2500: 0117063b addw a2,a4,a7
- l = (stbsp__uint32)(s - (num + 64));
- 2504: d0b6 sw a3,96(sp)
- n = pr + lead[0] + tail[0] + tz;
- 2506: 8732 mv a4,a2
- if (pr < (stbsp__int32)l)
- 2508: 2781 sext.w a5,a5
- if ((fl & STBSP__LEFTJUST) == 0) {
- 250a: 001e7513 andi a0,t3,1
- if (fw < (stbsp__int32)n)
- 250e: 835a mv t1,s6
- 2510: 00cb5363 bge s6,a2,2516 <stbsp_vsprintfcb+0x1290>
- 2514: 8332 mv t1,a2
- fw -= n;
- 2516: 40e3033b subw t1,t1,a4
- pr -= l;
- 251a: 40d7873b subw a4,a5,a3
- goto scopy;
- 251e: eaaff06f j 1bc8 <stbsp_vsprintfcb+0x942>
- *s++ = stbsp__comma;
- 2522: fe578fa3 sb t0,-1(a5)
- 2526: 0709 addi a4,a4,2
- if ((fl & STBSP__TRIPLET_COMMA) && (++cs == 4)) {
- 2528: 4585 li a1,1
- 252a: bde5 j 2422 <stbsp_vsprintfcb+0x119c>
- lead[0] = 1;
- 252c: 678d lui a5,0x3
- 252e: 0785 addi a5,a5,1 # 3001 <sprintf+0x43>
- 2530: 06f11423 sh a5,104(sp)
- 2534: b4ed j 201e <stbsp_vsprintfcb+0xd98>
- if ((f[0] != 'u') && (i64 < 0)) {
- 2536: 07500693 li a3,117
- stbsp__int64 i64 = va_arg(va, stbsp__int64);
- 253a: 000bbf03 ld t5,0(s7)
- if ((f[0] != 'u') && (i64 < 0)) {
- 253e: dcd78263 beq a5,a3,1b02 <stbsp_vsprintfcb+0x87c>
- 2542: dc0f5063 bgez t5,1b02 <stbsp_vsprintfcb+0x87c>
- fl |= STBSP__NEGATIVE;
- 2546: 08076713 ori a4,a4,128
- n64 = (stbsp__uint64)-i64;
- 254a: 41e00f33 neg t5,t5
- fl |= STBSP__NEGATIVE;
- 254e: 00070e1b sext.w t3,a4
- 2552: db0ff06f j 1b02 <stbsp_vsprintfcb+0x87c>
- lead[2] = h[0xb];
- 2556: 00b84703 lbu a4,11(a6)
- lead[0] = 2;
- 255a: 678d lui a5,0x3
- 255c: 0789 addi a5,a5,2 # 3002 <sprintf+0x44>
- 255e: 06f11423 sh a5,104(sp)
- lead[2] = h[0xb];
- 2562: 06e10523 sb a4,106(sp)
- 2566: bab5 j 1ee2 <stbsp_vsprintfcb+0xc5c>
- sign[0] = 1;
- 2568: 678d lui a5,0x3
- 256a: d0178793 addi a5,a5,-767 # 2d01 <stbsp_vsprintfcb+0x1a7b>
- fl |= STBSP__NEGATIVE;
- 256e: 080e6e13 ori t3,t3,128
- sign[0] = 1;
- 2572: 06f11423 sh a5,104(sp)
- 2576: 468d li a3,3
- 2578: 4a0d li s4,3
- 257a: 4809 li a6,2
- 257c: b899 j 1dd2 <stbsp_vsprintfcb+0xb4c>
- sign[0] = 1;
- 257e: 6709 lui a4,0x2
- 2580: 0705 addi a4,a4,1 # 2001 <stbsp_vsprintfcb+0xd7b>
- 2582: 06e11423 sh a4,104(sp)
- 2586: bae5 j 1f7e <stbsp_vsprintfcb+0xcf8>
- if (((stbsp__uintptr)sn & 3) == 0)
- 2588: 0e0780e3 beqz a5,2e68 <stbsp_vsprintfcb+0x1be2>
- l = stbsp__strlen_limited(s, (pr >= 0) ? pr : ~0u);
- 258c: 56fd li a3,-1
- 258e: bcf9 j 206c <stbsp_vsprintfcb+0xde6>
- if (fw < (stbsp__int32)n)
- 2590: 4305 li t1,1
- 2592: b249 j 1f14 <stbsp_vsprintfcb+0xc8e>
- pr = 6; // default is 6
- 2594: 4899 li a7,6
- 2596: b801 j 1da6 <stbsp_vsprintfcb+0xb20>
- h = (f[0] == 'A') ? hexu : hex;
- 2598: 00004597 auipc a1,0x4
- 259c: 43858593 addi a1,a1,1080 # 69d0 <hexu.1>
- 25a0: ff6ff06f j 1d96 <stbsp_vsprintfcb+0xb10>
- h = (f[0] == 'B') ? hexu : hex;
- 25a4: 00004817 auipc a6,0x4
- 25a8: 42c80813 addi a6,a6,1068 # 69d0 <hexu.1>
- 25ac: b22d j 1ed6 <stbsp_vsprintfcb+0xc50>
- 25ae: 80000737 lui a4,0x80000
- 25b2: 0719 addi a4,a4,6 # ffffffff80000006 <_ZSt4cerr+0xffffffff7fff880e>
- pr = 6; // default is 6
- 25b4: 4899 li a7,6
- 25b6: e4eff06f j 1c04 <stbsp_vsprintfcb+0x97e>
- h = (f[0] == 'E') ? hexu : hex;
- 25ba: 00004317 auipc t1,0x4
- 25be: 41630313 addi t1,t1,1046 # 69d0 <hexu.1>
- 25c2: e28ff06f j 1bea <stbsp_vsprintfcb+0x964>
- 25c6: 80000737 lui a4,0x80000
- 25ca: 4a99 li s5,6
- 25cc: 0715 addi a4,a4,5 # ffffffff80000005 <_ZSt4cerr+0xffffffff7fff880d>
- pr = 6;
- 25ce: 4a19 li s4,6
- 25d0: ee8ff06f j 1cb8 <stbsp_vsprintfcb+0xa32>
- h = (f[0] == 'G') ? hexu : hex;
- 25d4: 00004317 auipc t1,0x4
- 25d8: 3fc30313 addi t1,t1,1020 # 69d0 <hexu.1>
- 25dc: eb6ff06f j 1c92 <stbsp_vsprintfcb+0xa0c>
- 25e0: 7be6 ld s7,120(sp)
- if ((dp <= -4) || (dp > (stbsp__int32)n)) {
- 25e2: 86c2 mv a3,a6
- while ((l > 1) && (pr) && (sn[l - 1] == '0')) {
- 25e4: 8542 mv a0,a6
- if ((dp <= -4) || (dp > (stbsp__int32)n)) {
- 25e6: 88d2 mv a7,s4
- while ((l > 1) && (pr) && (sn[l - 1] == '0')) {
- 25e8: 8ade mv s5,s7
- if (pr > (stbsp__int32)l)
- 25ea: 0005071b sext.w a4,a0
- 25ee: 01175f63 bge a4,a7,260c <stbsp_vsprintfcb+0x1386>
- pr = l - 1;
- 25f2: fff5089b addiw a7,a0,-1
- tail[0] = 0;
- 25f6: 06010823 sb zero,112(sp)
- if (fl & STBSP__NEGATIVE) {
- 25fa: 70028c63 beqz t0,2d12 <stbsp_vsprintfcb+0x1a8c>
- sign[0] = 1;
- 25fe: 670d lui a4,0x3
- 2600: d0170713 addi a4,a4,-767 # 2d01 <stbsp_vsprintfcb+0x1a7b>
- 2604: 06e11423 sh a4,104(sp)
- 2608: e3aff06f j 1c42 <stbsp_vsprintfcb+0x9bc>
- else if (pr)
- 260c: fe0885e3 beqz a7,25f6 <stbsp_vsprintfcb+0x1370>
- --pr; // when using %e, there is one digit before the decimal
- 2610: 38fd addiw a7,a7,-1
- 2612: b7d5 j 25f6 <stbsp_vsprintfcb+0x1370>
- switch (f[0]) {
- 2614: 0034c783 lbu a5,3(s1)
- f += 3;
- 2618: 048d addi s1,s1,3
- 261a: e53fe06f j 146c <stbsp_vsprintfcb+0x1e6>
- if (!limit || *sn == 0)
- 261e: 4601 li a2,0
- 2620: 4701 li a4,0
- 2622: 4781 li a5,0
- return (stbsp__uint32)(sn - s);
- 2624: bca5 j 209c <stbsp_vsprintfcb+0xe16>
- pr = 1;
- 2626: 4885 li a7,1
- 2628: cf4ff06f j 1b1c <stbsp_vsprintfcb+0x896>
- *s++ = sn[0];
- 262c: 000ac703 lbu a4,0(s5)
- 2630: 0ce10023 sb a4,192(sp)
- if (pr)
- 2634: 54088563 beqz a7,2b7e <stbsp_vsprintfcb+0x18f8>
- *s++ = stbsp__period;
- 2638: 00004617 auipc a2,0x4
- 263c: 39464603 lbu a2,916(a2) # 69cc <stbsp__period>
- if ((l - 1) > (stbsp__uint32)pr)
- 2640: fff6871b addiw a4,a3,-1
- *s++ = stbsp__period;
- 2644: 0cc100a3 sb a2,193(sp)
- if ((l - 1) > (stbsp__uint32)pr)
- 2648: 0008851b sext.w a0,a7
- 264c: 0007061b sext.w a2,a4
- 2650: 52c57163 bgeu a0,a2,2b72 <stbsp_vsprintfcb+0x18ec>
- l = pr + 1;
- 2654: 0018869b addiw a3,a7,1
- for (n = 1; n < l; n++)
- 2658: 8746 mv a4,a7
- 265a: 02071613 slli a2,a4,0x20
- 265e: 9201 srli a2,a2,0x20
- 2660: 0c210713 addi a4,sp,194
- 2664: 0a85 addi s5,s5,1
- 2666: 963a add a2,a2,a4
- *s++ = sn[n];
- 2668: 000ac583 lbu a1,0(s5)
- 266c: 0705 addi a4,a4,1
- for (n = 1; n < l; n++)
- 266e: 0a85 addi s5,s5,1
- *s++ = sn[n];
- 2670: feb70fa3 sb a1,-1(a4)
- for (n = 1; n < l; n++)
- 2674: fec71ae3 bne a4,a2,2668 <stbsp_vsprintfcb+0x13e2>
- tail[1] = h[0xe];
- 2678: 00e34803 lbu a6,14(t1)
- dp -= 1;
- 267c: fff7871b addiw a4,a5,-1
- tail[2] = '+';
- 2680: 02b00593 li a1,43
- tail[1] = h[0xe];
- 2684: 070108a3 sb a6,113(sp)
- if (dp < 0) {
- 2688: 00075663 bgez a4,2694 <stbsp_vsprintfcb+0x140e>
- dp = -dp;
- 268c: 4705 li a4,1
- 268e: 9f1d subw a4,a4,a5
- tail[2] = '-';
- 2690: 02d00593 li a1,45
- 2694: 06b10923 sb a1,114(sp)
- n = (dp >= 100) ? 5 : 4;
- 2698: 06300793 li a5,99
- 269c: 4ee7d663 bge a5,a4,2b88 <stbsp_vsprintfcb+0x1902>
- 26a0: 4595 li a1,5
- 26a2: 4f95 li t6,5
- 26a4: 4e95 li t4,5
- tail[n] = '0' + dp % 10;
- 26a6: 47a9 li a5,10
- dp /= 10;
- 26a8: 02f7433b divw t1,a4,a5
- --n;
- 26ac: fffe8f1b addiw t5,t4,-1
- tail[n] = '0' + dp % 10;
- 26b0: 020f1293 slli t0,t5,0x20
- 26b4: 220e8813 addi a6,t4,544
- 26b8: 06010893 addi a7,sp,96
- 26bc: 0202d293 srli t0,t0,0x20
- 26c0: 01180eb3 add t4,a6,a7
- 26c4: 22028813 addi a6,t0,544 # 3000220 <_ZSt4cerr+0x2ff8a28>
- 26c8: 011802b3 add t0,a6,a7
- tail[0] = (char)n;
- 26cc: 07f10823 sb t6,112(sp)
- if (n <= 3)
- 26d0: 4a0d li s4,3
- tail[n] = '0' + dp % 10;
- 26d2: 02f7673b remw a4,a4,a5
- dp /= 10;
- 26d6: 0003081b sext.w a6,t1
- tail[n] = '0' + dp % 10;
- 26da: 02f36abb remw s5,t1,a5
- 26de: 0307071b addiw a4,a4,48
- 26e2: deee8823 sb a4,-528(t4)
- 26e6: 030a871b addiw a4,s5,48
- 26ea: dee28823 sb a4,-528(t0)
- if (n <= 3)
- 26ee: 014f0a63 beq t5,s4,2702 <stbsp_vsprintfcb+0x147c>
- dp /= 10;
- 26f2: 02f3483b divw a6,t1,a5
- tail[n] = '0' + dp % 10;
- 26f6: 02f867bb remw a5,a6,a5
- 26fa: 0307879b addiw a5,a5,48
- 26fe: 06f109a3 sb a5,115(sp)
- tz = pr - (l - 1);
- 2702: 2505 addiw a0,a0,1
- l = (stbsp__uint32)(s - (num + 64));
- 2704: 0c010a93 addi s5,sp,192
- cs = 1 + (3 << 24); // how many tens
- 2708: 030002b7 lui t0,0x3000
- tz = pr - (l - 1);
- 270c: 40d508bb subw a7,a0,a3
- 2710: d2c2 sw a6,100(sp)
- l = (stbsp__uint32)(s - (num + 64));
- 2712: 415607b3 sub a5,a2,s5
- cs = 1 + (3 << 24); // how many tens
- 2716: 0285 addi t0,t0,1 # 3000001 <_ZSt4cerr+0x2ff8809>
- 2718: bbc9 j 24ea <stbsp_vsprintfcb+0x1264>
- 271a: fc2e sd a1,56(sp)
- 271c: d0b2 sw a2,96(sp)
- while ((l > 1) && (pr) && (sn[l - 1] == '0')) {
- 271e: 8536 mv a0,a3
- 2720: e2cff06f j 1d4c <stbsp_vsprintfcb+0xac6>
- flt_lead:
- 2724: 4581 li a1,0
- 2726: 4f81 li t6,0
- 2728: b3c9 j 24ea <stbsp_vsprintfcb+0x1264>
- n = pr + lead[0] + tail[0] + tz;
- 272a: 06814a03 lbu s4,104(sp)
- 272e: 000a0f9b sext.w t6,s4
- 2732: b901 j 2342 <stbsp_vsprintfcb+0x10bc>
- if ((f[1] == '6') && (f[2] == '4')) {
- 2734: 0024c683 lbu a3,2(s1)
- 2738: 03400713 li a4,52
- 273c: 00e68463 beq a3,a4,2744 <stbsp_vsprintfcb+0x14be>
- 2740: e2bfe06f j 156a <stbsp_vsprintfcb+0x2e4>
- switch (f[0]) {
- 2744: 0034c783 lbu a5,3(s1)
- fl |= ((sizeof(long) == 8) ? STBSP__INTMAX : 0);
- 2748: 020e6e13 ori t3,t3,32
- f += 3;
- 274c: 048d addi s1,s1,3
- 274e: d1ffe06f j 146c <stbsp_vsprintfcb+0x1e6>
- if (pr < (stbsp__int32)l)
- 2752: 0006879b sext.w a5,a3
- n = pr + lead[0] + tail[0] + tz;
- 2756: 06814a03 lbu s4,104(sp)
- if (pr < (stbsp__int32)l)
- 275a: fff7c793 not a5,a5
- 275e: 97fd srai a5,a5,0x3f
- 2760: 8ff5 and a5,a5,a3
- n = pr + lead[0] + tail[0] + tz;
- 2762: 00fa063b addw a2,s4,a5
- s = (char *)sn;
- 2766: 7ae6 ld s5,120(sp)
- n = pr + lead[0] + tail[0] + tz;
- 2768: 8732 mv a4,a2
- if ((fl & STBSP__LEFTJUST) == 0) {
- 276a: 001e7513 andi a0,t3,1
- if (pr < (stbsp__int32)l)
- 276e: 2781 sext.w a5,a5
- if (fw < (stbsp__int32)n)
- 2770: 835a mv t1,s6
- 2772: 00cb5363 bge s6,a2,2778 <stbsp_vsprintfcb+0x14f2>
- 2776: 8332 mv t1,a2
- fw -= n;
- 2778: 40e3033b subw t1,t1,a4
- goto scopy;
- 277c: 4f81 li t6,0
- pr -= l;
- 277e: 40d7873b subw a4,a5,a3
- cs = 0;
- 2782: 4281 li t0,0
- tz = 0;
- 2784: 4881 li a7,0
- goto scopy;
- 2786: c42ff06f j 1bc8 <stbsp_vsprintfcb+0x942>
- cs = (int)(s - (num + 64)) + (3 << 24); // cs is how many tens
- 278a: 415705b3 sub a1,a4,s5
- 278e: 030002b7 lui t0,0x3000
- 2792: 00b282bb addw t0,t0,a1
- l = pr - n;
- 2796: 0008859b sext.w a1,a7
- if (pr)
- 279a: 42088763 beqz a7,2bc8 <stbsp_vsprintfcb+0x1942>
- *s++ = stbsp__period;
- 279e: 0cca4f83 lbu t6,204(s4)
- if ((l - dp) > (stbsp__uint32)pr)
- 27a2: 41d6833b subw t1,a3,t4
- *s++ = stbsp__period;
- 27a6: 00280713 addi a4,a6,2
- 27aa: 01f800a3 sb t6,1(a6)
- if ((l - dp) > (stbsp__uint32)pr)
- 27ae: 4065ed63 bltu a1,t1,2bc8 <stbsp_vsprintfcb+0x1942>
- while (n < l) {
- 27b2: 5ed57863 bgeu a0,a3,2da2 <stbsp_vsprintfcb+0x1b1c>
- 27b6: 40c687bb subw a5,a3,a2
- 27ba: 37fd addiw a5,a5,-1
- 27bc: 1782 slli a5,a5,0x20
- 27be: 9381 srli a5,a5,0x20
- 27c0: 1602 slli a2,a2,0x20
- 27c2: 9201 srli a2,a2,0x20
- 27c4: 0785 addi a5,a5,1
- 27c6: 967a add a2,a2,t5
- 27c8: 97ba add a5,a5,a4
- *s++ = sn[n];
- 27ca: 00064503 lbu a0,0(a2)
- 27ce: 0705 addi a4,a4,1
- while (n < l) {
- 27d0: 0605 addi a2,a2,1
- *s++ = sn[n];
- 27d2: fea70fa3 sb a0,-1(a4)
- while (n < l) {
- 27d6: fef71ae3 bne a4,a5,27ca <stbsp_vsprintfcb+0x1544>
- tz = pr - (l - dp);
- 27da: 01d585bb addw a1,a1,t4
- 27de: 40d588bb subw a7,a1,a3
- l = (stbsp__uint32)(s - (num + 64));
- 27e2: 415787b3 sub a5,a5,s5
- 27e6: b99d j 245c <stbsp_vsprintfcb+0x11d6>
- fl |= STBSP__NEGATIVE;
- 27e8: 080e6e13 ori t3,t3,128
- tail[0] = 0;
- 27ec: 06010823 sb zero,112(sp)
- if (fl & STBSP__NEGATIVE) {
- 27f0: b539 j 25fe <stbsp_vsprintfcb+0x1378>
- tail[0] = (char)n;
- 27f2: 4799 li a5,6
- tail[n] = '0' + dp % 10;
- 27f4: 06b10b23 sb a1,118(sp)
- tail[0] = (char)n;
- 27f8: 06f10823 sb a5,112(sp)
- tail[n] = '0' + dp % 10;
- 27fc: 4819 li a6,6
- 27fe: 4f99 li t6,6
- n = (dp >= 1000) ? 6 : ((dp >= 100) ? 5 : ((dp >= 10) ? 4 : 3));
- 2800: 4599 li a1,6
- dp /= 10;
- 2802: 4f29 li t5,10
- if (n <= 3)
- 2804: 428d li t0,3
- 2806: 87b2 mv a5,a2
- dp /= 10;
- 2808: 03e7c7bb divw a5,a5,t5
- --n;
- 280c: 35fd addiw a1,a1,-1
- tail[n] = '0' + dp % 10;
- 280e: 02059613 slli a2,a1,0x20
- 2812: 9201 srli a2,a2,0x20
- 2814: 06010e93 addi t4,sp,96
- 2818: 22060613 addi a2,a2,544
- 281c: 9676 add a2,a2,t4
- 281e: 03e7eebb remw t4,a5,t5
- 2822: 030e8e9b addiw t4,t4,48
- 2826: dfd60823 sb t4,-528(a2)
- if (n <= 3)
- 282a: fc559fe3 bne a1,t0,2808 <stbsp_vsprintfcb+0x1582>
- 282e: e6aff06f j 1e98 <stbsp_vsprintfcb+0xc12>
- *s++ = h[(n64 >> 60) & 15];
- 2832: 93f1 srli a5,a5,0x3c
- 2834: 97ae add a5,a5,a1
- 2836: 0007c303 lbu t1,0(a5)
- lead[1 + lead[0]] = '0';
- 283a: 1088 addi a0,sp,96
- 283c: 22080793 addi a5,a6,544
- 2840: 97aa add a5,a5,a0
- 2842: 03000513 li a0,48
- 2846: dea78423 sb a0,-536(a5)
- lead[2 + lead[0]] = 'x';
- 284a: 22068793 addi a5,a3,544
- 284e: 1094 addi a3,sp,96
- 2850: 96be add a3,a3,a5
- *s++ = stbsp__period;
- 2852: 00004517 auipc a0,0x4
- 2856: 17a54503 lbu a0,378(a0) # 69cc <stbsp__period>
- lead[2 + lead[0]] = 'x';
- 285a: 07800813 li a6,120
- sn = s;
- 285e: 0c210793 addi a5,sp,194
- lead[2 + lead[0]] = 'x';
- 2862: df068423 sb a6,-536(a3)
- *s++ = stbsp__period;
- 2866: 0ca100a3 sb a0,193(sp)
- lead[0] += 2;
- 286a: 07410423 sb s4,104(sp)
- *s++ = h[(n64 >> 60) & 15];
- 286e: 0c610023 sb t1,192(sp)
- n64 <<= 4;
- 2872: 0732 slli a4,a4,0xc
- sn = s;
- 2874: fcbe sd a5,120(sp)
- n = pr;
- 2876: 0008869b sext.w a3,a7
- while (n--) {
- 287a: 4831 li a6,12
- if (n > 13)
- 287c: 4535 li a0,13
- tz = pr - n;
- 287e: 40a688bb subw a7,a3,a0
- while (n--) {
- 2882: 02081313 slli t1,a6,0x20
- 2886: 02035313 srli t1,t1,0x20
- 288a: 22030693 addi a3,t1,544
- 288e: 1088 addi a0,sp,96
- 2890: 9536 add a0,a0,a3
- 2892: e4350513 addi a0,a0,-445
- *s++ = h[(n64 >> 60) & 15];
- 2896: 03c75693 srli a3,a4,0x3c
- 289a: 96ae add a3,a3,a1
- 289c: 0006c683 lbu a3,0(a3)
- 28a0: 0785 addi a5,a5,1
- n64 <<= 4;
- 28a2: 0712 slli a4,a4,0x4
- *s++ = h[(n64 >> 60) & 15];
- 28a4: fed78fa3 sb a3,-1(a5)
- while (n--) {
- 28a8: fea797e3 bne a5,a0,2896 <stbsp_vsprintfcb+0x1610>
- l = (int)(s - (num + 64));
- 28ac: 280d addiw a6,a6,3
- 28ae: 0008069b sext.w a3,a6
- if (pr < (stbsp__int32)l)
- 28b2: fff6c713 not a4,a3
- 28b6: 977d srai a4,a4,0x3f
- 28b8: 00e87733 and a4,a6,a4
- dp = (int)(s - sn);
- 28bc: 0013051b addiw a0,t1,1
- if (pr < (stbsp__int32)l)
- 28c0: 0007031b sext.w t1,a4
- pr -= l;
- 28c4: 4107073b subw a4,a4,a6
- 28c8: d76ff06f j 1e3e <stbsp_vsprintfcb+0xbb8>
- *--s = stbsp__comma;
- 28cc: 00004a17 auipc s4,0x4
- 28d0: 034a0a13 addi s4,s4,52 # 6900 <stbsp__digitpair>
- if (n64 >= 100000000) {
- 28d4: 05f5e7b7 lui a5,0x5f5e
- 28d8: 0ff78793 addi a5,a5,255 # 5f5e0ff <_ZSt4cerr+0x5f56907>
- n = (stbsp__uint32)(n64 % 100000000);
- 28dc: 05f5e637 lui a2,0x5f5e
- *--s = stbsp__comma;
- 28e0: 0cda4b83 lbu s7,205(s4)
- if (n64 >= 100000000) {
- 28e4: e83e sd a5,16(sp)
- n = (stbsp__uint32)(n64 % 100000000);
- 28e6: 10060793 addi a5,a2,256 # 5f5e100 <_ZSt4cerr+0x5f56908>
- l = 0;
- 28ea: d082 sw zero,96(sp)
- if ((fl & STBSP__TRIPLET_COMMA) == 0) {
- 28ec: 040e7813 andi a6,t3,64
- 28f0: 4701 li a4,0
- 28f2: 4281 li t0,0
- s = num + STBSP__NUMSZ;
- 28f4: 28010a93 addi s5,sp,640
- n = (stbsp__uint32)(n64 % 100000000);
- 28f8: ec3e sd a5,24(sp)
- if ((fl & STBSP__TRIPLET_COMMA) && (l++ == 3)) {
- 28fa: 430d li t1,3
- n /= 10;
- 28fc: 45a9 li a1,10
- while (n) {
- 28fe: 4ea5 li t4,9
- *(stbsp__uint16 *)s = *(stbsp__uint16 *)&stbsp__digitpair.pair[(n % 100) * 2];
- 2900: 06400f93 li t6,100
- if (n64 >= 100000000) {
- 2904: 67c2 ld a5,16(sp)
- char *o = s - 8;
- 2906: ff8a8513 addi a0,s5,-8
- if (n64 >= 100000000) {
- 290a: 0fe7f763 bgeu a5,t5,29f8 <stbsp_vsprintfcb+0x1772>
- n = (stbsp__uint32)(n64 % 100000000);
- 290e: 6662 ld a2,24(sp)
- 2910: 02cf77b3 remu a5,t5,a2
- n64 /= 100000000;
- 2914: 02cf5f33 divu t5,t5,a2
- if ((fl & STBSP__TRIPLET_COMMA) == 0) {
- 2918: 0e080463 beqz a6,2a00 <stbsp_vsprintfcb+0x177a>
- while (n) {
- 291c: cb85 beqz a5,294c <stbsp_vsprintfcb+0x16c6>
- *--s = stbsp__comma;
- 291e: 1afd addi s5,s5,-1
- if ((fl & STBSP__TRIPLET_COMMA) && (l++ == 3)) {
- 2920: 00671763 bne a4,t1,292e <stbsp_vsprintfcb+0x16a8>
- --o;
- 2924: 017a8023 sb s7,0(s5)
- 2928: 157d addi a0,a0,-1
- *--s = stbsp__comma;
- 292a: 1afd addi s5,s5,-1
- l = 0;
- 292c: 4701 li a4,0
- if ((fl & STBSP__TRIPLET_COMMA) && (l++ == 3)) {
- 292e: 2705 addiw a4,a4,1
- *--s = (char)(n % 10) + '0';
- 2930: 02b7f63b remuw a2,a5,a1
- 2934: 0306061b addiw a2,a2,48
- 2938: 00ca8023 sb a2,0(s5)
- n /= 10;
- 293c: 02b7d63b divuw a2,a5,a1
- while (n) {
- 2940: 00fef563 bgeu t4,a5,294a <stbsp_vsprintfcb+0x16c4>
- *--s = stbsp__comma;
- 2944: 1afd addi s5,s5,-1
- 2946: 87b2 mv a5,a2
- 2948: bfe1 j 2920 <stbsp_vsprintfcb+0x169a>
- while (n) {
- 294a: 4285 li t0,1
- if (n64 == 0) {
- 294c: 020f0063 beqz t5,296c <stbsp_vsprintfcb+0x16e6>
- while (s != o)
- 2950: fb550ae3 beq a0,s5,2904 <stbsp_vsprintfcb+0x167e>
- *--s = stbsp__comma;
- 2954: 1afd addi s5,s5,-1
- if ((fl & STBSP__TRIPLET_COMMA) && (l++ == 3)) {
- 2956: 00080663 beqz a6,2962 <stbsp_vsprintfcb+0x16dc>
- 295a: 08670863 beq a4,t1,29ea <stbsp_vsprintfcb+0x1764>
- 295e: 2705 addiw a4,a4,1
- 2960: 4285 li t0,1
- *--s = '0';
- 2962: 03000793 li a5,48
- 2966: 00fa8023 sb a5,0(s5)
- 296a: b7dd j 2950 <stbsp_vsprintfcb+0x16ca>
- 296c: 00028363 beqz t0,2972 <stbsp_vsprintfcb+0x16ec>
- 2970: d0ba sw a4,96(sp)
- if ((s[0] == '0') && (s != (num + STBSP__NUMSZ)))
- 2972: 000ac703 lbu a4,0(s5)
- 2976: 03000793 li a5,48
- 297a: 34f70b63 beq a4,a5,2cd0 <stbsp_vsprintfcb+0x1a4a>
- l = (stbsp__uint32)((num + STBSP__NUMSZ) - s);
- 297e: 051c addi a5,sp,640
- 2980: 415786bb subw a3,a5,s5
- tail[0] = 0;
- 2984: 06010823 sb zero,112(sp)
- if (fl & STBSP__NEGATIVE) {
- 2988: 080e7713 andi a4,t3,128
- 298c: 87f2 mv a5,t3
- 298e: 32070863 beqz a4,2cbe <stbsp_vsprintfcb+0x1a38>
- 2992: 678d lui a5,0x3
- 2994: d017879b addiw a5,a5,-767 # 2d01 <stbsp_vsprintfcb+0x1a7b>
- sign[0] = 1;
- 2998: 06f11423 sh a5,104(sp)
- 299c: 4705 li a4,1
- 299e: 4a05 li s4,1
- l = (stbsp__uint32)((num + STBSP__NUMSZ) - s);
- 29a0: d0b6 sw a3,96(sp)
- if (l == 0) {
- 29a2: 30068163 beqz a3,2ca4 <stbsp_vsprintfcb+0x1a1e>
- cs = l + (3 << 24);
- 29a6: 030002b7 lui t0,0x3000
- 29aa: 00d282bb addw t0,t0,a3
- if (pr < (stbsp__int32)l)
- 29ae: 0006861b sext.w a2,a3
- if (pr < 0)
- 29b2: fff8c793 not a5,a7
- 29b6: 97fd srai a5,a5,0x3f
- if (pr < (stbsp__int32)l)
- 29b8: 00f8f7b3 and a5,a7,a5
- 29bc: 0007859b sext.w a1,a5
- 29c0: 00c5d363 bge a1,a2,29c6 <stbsp_vsprintfcb+0x1740>
- 29c4: 87b2 mv a5,a2
- n = pr + lead[0] + tail[0] + tz;
- 29c6: 00f7063b addw a2,a4,a5
- 29ca: 8732 mv a4,a2
- if (pr < (stbsp__int32)l)
- 29cc: 2781 sext.w a5,a5
- if ((fl & STBSP__LEFTJUST) == 0) {
- 29ce: 001e7513 andi a0,t3,1
- if (fw < (stbsp__int32)n)
- 29d2: 835a mv t1,s6
- 29d4: 00cb5363 bge s6,a2,29da <stbsp_vsprintfcb+0x1754>
- 29d8: 8332 mv t1,a2
- fw -= n;
- 29da: 40e3033b subw t1,t1,a4
- scopy:
- 29de: 4f81 li t6,0
- pr -= l;
- 29e0: 40d7873b subw a4,a5,a3
- tz = 0;
- 29e4: 4881 li a7,0
- scopy:
- 29e6: 9e2ff06f j 1bc8 <stbsp_vsprintfcb+0x942>
- *--s = stbsp__comma;
- 29ea: 87de mv a5,s7
- --o;
- 29ec: 157d addi a0,a0,-1
- l = 0;
- 29ee: 4701 li a4,0
- --o;
- 29f0: 4285 li t0,1
- 29f2: 00fa8023 sb a5,0(s5)
- 29f6: bfa9 j 2950 <stbsp_vsprintfcb+0x16ca>
- n = (stbsp__uint32)n64;
- 29f8: 000f079b sext.w a5,t5
- n64 = 0;
- 29fc: 4f01 li t5,0
- 29fe: bf29 j 2918 <stbsp_vsprintfcb+0x1692>
- 2a00: f046 sd a7,32(sp)
- *(stbsp__uint16 *)s = *(stbsp__uint16 *)&stbsp__digitpair.pair[(n % 100) * 2];
- 2a02: 03f7f63b remuw a2,a5,t6
- s -= 2;
- 2a06: 1af9 addi s5,s5,-2
- *(stbsp__uint16 *)s = *(stbsp__uint16 *)&stbsp__digitpair.pair[(n % 100) * 2];
- 2a08: 0007889b sext.w a7,a5
- 2a0c: 2605 addiw a2,a2,1
- 2a0e: 0016161b slliw a2,a2,0x1
- 2a12: 1602 slli a2,a2,0x20
- 2a14: 9201 srli a2,a2,0x20
- 2a16: 9652 add a2,a2,s4
- 2a18: 00065603 lhu a2,0(a2)
- n /= 100;
- 2a1c: 03f7d7bb divuw a5,a5,t6
- *(stbsp__uint16 *)s = *(stbsp__uint16 *)&stbsp__digitpair.pair[(n % 100) * 2];
- 2a20: 00ca9023 sh a2,0(s5)
- } while (n);
- 2a24: 06300613 li a2,99
- 2a28: fd166de3 bltu a2,a7,2a02 <stbsp_vsprintfcb+0x177c>
- 2a2c: 7882 ld a7,32(sp)
- if (n64 == 0) {
- 2a2e: f20f11e3 bnez t5,2950 <stbsp_vsprintfcb+0x16ca>
- 2a32: bf2d j 296c <stbsp_vsprintfcb+0x16e6>
- *(stbsp__uint32 *)bf = 0x20202020;
- 2a34: 20202b37 lui s6,0x20202
- stbsp__cb_buf_clamp(i, fw);
- 2a38: 854a mv a0,s2
- *bf++ = ' ';
- 2a3a: 02000a93 li s5,32
- *(stbsp__uint32 *)bf = 0x20202020;
- 2a3e: 020b0b13 addi s6,s6,32 # 20202020 <_ZSt4cerr+0x201fa828>
- stbsp__chk_cb_buf(1);
- 2a42: 1fe00a13 li s4,510
- stbsp__cb_buf_clamp(i, fw);
- 2a46: 20000b93 li s7,512
- 2a4a: 891a mv s2,t1
- 2a4c: 0a098063 beqz s3,2aec <stbsp_vsprintfcb+0x1866>
- 2a50: 40a40633 sub a2,s0,a0
- 2a54: 40cb87bb subw a5,s7,a2
- 2a58: 873e mv a4,a5
- 2a5a: 00f95363 bge s2,a5,2a60 <stbsp_vsprintfcb+0x17da>
- 2a5e: 874a mv a4,s2
- 2a60: 0007079b sext.w a5,a4
- fw -= i;
- 2a64: 40e9093b subw s2,s2,a4
- while (i) {
- 2a68: e799 bnez a5,2a76 <stbsp_vsprintfcb+0x17f0>
- 2a6a: a281 j 2baa <stbsp_vsprintfcb+0x1924>
- *bf++ = ' ';
- 2a6c: 01540023 sb s5,0(s0)
- --i;
- 2a70: 37fd addiw a5,a5,-1
- *bf++ = ' ';
- 2a72: 0405 addi s0,s0,1
- while (i) {
- 2a74: cba1 beqz a5,2ac4 <stbsp_vsprintfcb+0x183e>
- if ((((stbsp__uintptr)bf) & 3) == 0)
- 2a76: 00347713 andi a4,s0,3
- 2a7a: fb6d bnez a4,2a6c <stbsp_vsprintfcb+0x17e6>
- while (i >= 4) {
- 2a7c: 470d li a4,3
- 2a7e: 40f75363 bge a4,a5,2e84 <stbsp_vsprintfcb+0x1bfe>
- 2a82: ffc7869b addiw a3,a5,-4
- 2a86: 0026d79b srliw a5,a3,0x2
- 2a8a: 0017871b addiw a4,a5,1
- 2a8e: 070a slli a4,a4,0x2
- 2a90: 9722 add a4,a4,s0
- *(stbsp__uint32 *)bf = 0x20202020;
- 2a92: 01642023 sw s6,0(s0)
- bf += 4;
- 2a96: 0411 addi s0,s0,4
- while (i >= 4) {
- 2a98: fee41de3 bne s0,a4,2a92 <stbsp_vsprintfcb+0x180c>
- 2a9c: 0027979b slliw a5,a5,0x2
- 2aa0: 40f687bb subw a5,a3,a5
- while (i--)
- 2aa4: fff7869b addiw a3,a5,-1
- 2aa8: cf91 beqz a5,2ac4 <stbsp_vsprintfcb+0x183e>
- 2aaa: 9fa1 addw a5,a5,s0
- *bf++ = ' ';
- 2aac: 0705 addi a4,a4,1
- while (i--)
- 2aae: 0007061b sext.w a2,a4
- *bf++ = ' ';
- 2ab2: ff570fa3 sb s5,-1(a4)
- while (i--)
- 2ab6: fec79be3 bne a5,a2,2aac <stbsp_vsprintfcb+0x1826>
- 2aba: 2685 addiw a3,a3,1
- 2abc: 02069793 slli a5,a3,0x20
- 2ac0: 9381 srli a5,a5,0x20
- 2ac2: 943e add s0,s0,a5
- stbsp__chk_cb_buf(1);
- 2ac4: 00098f63 beqz s3,2ae2 <stbsp_vsprintfcb+0x185c>
- 2ac8: 40a4063b subw a2,s0,a0
- 2acc: 00ca5b63 bge s4,a2,2ae2 <stbsp_vsprintfcb+0x185c>
- 2ad0: 65a2 ld a1,8(sp)
- 2ad2: e81e sd t2,16(sp)
- 2ad4: 00cd0d3b addw s10,s10,a2
- 2ad8: 9982 jalr s3
- 2ada: 80050be3 beqz a0,22f0 <stbsp_vsprintfcb+0x106a>
- 2ade: 63c2 ld t2,16(sp)
- 2ae0: 842a mv s0,a0
- while (fw) {
- 2ae2: f60915e3 bnez s2,2a4c <stbsp_vsprintfcb+0x17c6>
- 2ae6: 892a mv s2,a0
- 2ae8: f21fe06f j 1a08 <stbsp_vsprintfcb+0x782>
- stbsp__cb_buf_clamp(i, fw);
- 2aec: 87ca mv a5,s2
- fw -= i;
- 2aee: 4901 li s2,0
- if ((((stbsp__uintptr)bf) & 3) == 0)
- 2af0: b759 j 2a76 <stbsp_vsprintfcb+0x17f0>
- } else if (fl & STBSP__LEADINGPLUS) {
- 2af2: 002e7713 andi a4,t3,2
- 2af6: 94070663 beqz a4,1c42 <stbsp_vsprintfcb+0x9bc>
- sign[0] = 1;
- 2afa: 670d lui a4,0x3
- 2afc: b0170713 addi a4,a4,-1279 # 2b01 <stbsp_vsprintfcb+0x187b>
- 2b00: 06e11423 sh a4,104(sp)
- 2b04: 93eff06f j 1c42 <stbsp_vsprintfcb+0x9bc>
- if (((stbsp__uintptr)sn & 3) == 0)
- 2b08: 87d6 mv a5,s5
- while (limit >= 4) {
- 2b0a: 470d li a4,3
- 2b0c: 22d77763 bgeu a4,a3,2d3a <stbsp_vsprintfcb+0x1ab4>
- if ((v - 0x01010101) & (~v) & 0x80808080UL)
- 2b10: feff05b7 lui a1,0xfeff0
- 2b14: 80808637 lui a2,0x80808
- 2b18: eff5859b addiw a1,a1,-257 # fffffffffefefeff <_ZSt4cerr+0xfffffffffefe8707>
- 2b1c: 08060613 addi a2,a2,128 # ffffffff80808080 <_ZSt4cerr+0xffffffff80800888>
- while (limit >= 4) {
- 2b20: 480d li a6,3
- 2b22: a029 j 2b2c <stbsp_vsprintfcb+0x18a6>
- limit -= 4;
- 2b24: 36f1 addiw a3,a3,-4
- sn += 4;
- 2b26: 0791 addi a5,a5,4
- while (limit >= 4) {
- 2b28: 20d87963 bgeu a6,a3,2d3a <stbsp_vsprintfcb+0x1ab4>
- stbsp__uint32 v = *(stbsp__uint32 *)sn;
- 2b2c: 4398 lw a4,0(a5)
- if ((v - 0x01010101) & (~v) & 0x80808080UL)
- 2b2e: 00b7053b addw a0,a4,a1
- 2b32: fff74713 not a4,a4
- 2b36: 8f69 and a4,a4,a0
- 2b38: 8f71 and a4,a4,a2
- 2b3a: 2701 sext.w a4,a4
- 2b3c: d765 beqz a4,2b24 <stbsp_vsprintfcb+0x189e>
- 2b3e: 02069713 slli a4,a3,0x20
- 2b42: 9301 srli a4,a4,0x20
- 2b44: 973e add a4,a4,a5
- 2b46: a021 j 2b4e <stbsp_vsprintfcb+0x18c8>
- ++sn;
- 2b48: 0785 addi a5,a5,1
- while (limit && *sn) {
- 2b4a: 00e78663 beq a5,a4,2b56 <stbsp_vsprintfcb+0x18d0>
- 2b4e: 0007c683 lbu a3,0(a5)
- 2b52: fafd bnez a3,2b48 <stbsp_vsprintfcb+0x18c2>
- 2b54: 873e mv a4,a5
- return (stbsp__uint32)(sn - s);
- 2b56: 41570733 sub a4,a4,s5
- 2b5a: 0007069b sext.w a3,a4
- if (pr < (stbsp__int32)l)
- 2b5e: fff6c793 not a5,a3
- 2b62: 97fd srai a5,a5,0x3f
- 2b64: 8f7d and a4,a4,a5
- 2b66: 0007079b sext.w a5,a4
- n = pr + lead[0] + tail[0] + tz;
- 2b6a: 863e mv a2,a5
- pr -= l;
- 2b6c: 9f15 subw a4,a4,a3
- return (stbsp__uint32)(sn - s);
- 2b6e: d2eff06f j 209c <stbsp_vsprintfcb+0xe16>
- for (n = 1; n < l; n++)
- 2b72: 4605 li a2,1
- 2b74: aed663e3 bltu a2,a3,265a <stbsp_vsprintfcb+0x13d4>
- 2b78: 0c210613 addi a2,sp,194
- 2b7c: bcf5 j 2678 <stbsp_vsprintfcb+0x13f2>
- l = pr + 1;
- 2b7e: 4685 li a3,1
- if ((l - 1) > (stbsp__uint32)pr)
- 2b80: 4501 li a0,0
- *s++ = sn[0];
- 2b82: 0c110613 addi a2,sp,193
- 2b86: bccd j 2678 <stbsp_vsprintfcb+0x13f2>
- 2b88: 4591 li a1,4
- 2b8a: 4f91 li t6,4
- n = (dp >= 100) ? 5 : 4;
- 2b8c: 4e91 li t4,4
- 2b8e: be21 j 26a6 <stbsp_vsprintfcb+0x1420>
- 2b90: 4a85 li s5,1
- 2b92: 80000737 lui a4,0x80000
- pr = 1; // default is 6
- 2b96: 4a05 li s4,1
- 2b98: 920ff06f j 1cb8 <stbsp_vsprintfcb+0xa32>
- dp = (n64) ? -1022 : 0;
- 2b9c: 4601 li a2,0
- 2b9e: c119 beqz a0,2ba4 <stbsp_vsprintfcb+0x191e>
- 2ba0: c0200613 li a2,-1022
- *bits = b & ((((stbsp__uint64)1) << 52) - 1);
- 2ba4: 872a mv a4,a0
- 2ba6: a3aff06f j 1de0 <stbsp_vsprintfcb+0xb5a>
- stbsp__chk_cb_buf(1);
- 2baa: 2601 sext.w a2,a2
- 2bac: 1fe00793 li a5,510
- 2bb0: f2c7c0e3 blt a5,a2,2ad0 <stbsp_vsprintfcb+0x184a>
- 2bb4: bd61 j 2a4c <stbsp_vsprintfcb+0x17c6>
- tail[0] = (char)n;
- 2bb6: 4795 li a5,5
- tail[n] = '0' + dp % 10;
- 2bb8: 06b10aa3 sb a1,117(sp)
- tail[0] = (char)n;
- 2bbc: 06f10823 sb a5,112(sp)
- tail[n] = '0' + dp % 10;
- 2bc0: 4815 li a6,5
- 2bc2: 4f95 li t6,5
- n = (dp >= 1000) ? 6 : ((dp >= 100) ? 5 : ((dp >= 10) ? 4 : 3));
- 2bc4: 4595 li a1,5
- 2bc6: b935 j 2802 <stbsp_vsprintfcb+0x157c>
- l = pr + dp;
- 2bc8: 011786bb addw a3,a5,a7
- 2bcc: d0b6 sw a3,96(sp)
- 2bce: b6d5 j 27b2 <stbsp_vsprintfcb+0x152c>
- s = (char *)"null";
- 2bd0: 00002a97 auipc s5,0x2
- 2bd4: 468a8a93 addi s5,s5,1128 # 5038 <_GLOBAL__sub_I__ZSt3cin+0x90>
- 2bd8: c80ff06f j 2058 <stbsp_vsprintfcb+0xdd2>
- } else if (fl & STBSP__LEADINGPLUS) {
- 2bdc: 002e7793 andi a5,t3,2
- 2be0: 1c079c63 bnez a5,2db8 <stbsp_vsprintfcb+0x1b32>
- sign[0] = 0;
- 2be4: 4689 li a3,2
- 2be6: 4a09 li s4,2
- 2be8: 4805 li a6,1
- 2bea: 9e8ff06f j 1dd2 <stbsp_vsprintfcb+0xb4c>
- sign[0] = 1;
- 2bee: 670d lui a4,0x3
- 2bf0: b0170713 addi a4,a4,-1279 # 2b01 <stbsp_vsprintfcb+0x187b>
- 2bf4: 06e11423 sh a4,104(sp)
- 2bf8: b86ff06f j 1f7e <stbsp_vsprintfcb+0xcf8>
- pr = 0;
- 2bfc: 4881 li a7,0
- 2bfe: f1ffe06f j 1b1c <stbsp_vsprintfcb+0x896>
- *s++ = '0';
- 2c02: 03000713 li a4,48
- 2c06: 0ce10023 sb a4,192(sp)
- if (pr)
- 2c0a: 1a088c63 beqz a7,2dc2 <stbsp_vsprintfcb+0x1b3c>
- *s++ = stbsp__period;
- 2c0e: 00004717 auipc a4,0x4
- 2c12: dbe74703 lbu a4,-578(a4) # 69cc <stbsp__period>
- n = -dp;
- 2c16: 40f007bb negw a5,a5
- *s++ = stbsp__period;
- 2c1a: 0ce100a3 sb a4,193(sp)
- if ((stbsp__int32)n > pr)
- 2c1e: 0007871b sext.w a4,a5
- 2c22: 00e8d363 bge a7,a4,2c28 <stbsp_vsprintfcb+0x19a2>
- 2c26: 87c6 mv a5,a7
- 2c28: 0007871b sext.w a4,a5
- if ((stbsp__int32)(l + n) > pr)
- 2c2c: 00d7833b addw t1,a5,a3
- 2c30: 883a mv a6,a4
- while (i) {
- 2c32: 0c210793 addi a5,sp,194
- *s++ = '0';
- 2c36: 03000513 li a0,48
- while (i) {
- 2c3a: e711 bnez a4,2c46 <stbsp_vsprintfcb+0x19c0>
- 2c3c: a271 j 2dc8 <stbsp_vsprintfcb+0x1b42>
- if ((((stbsp__uintptr)s) & 3) == 0)
- 2c3e: 0037f613 andi a2,a5,3
- 2c42: 18060563 beqz a2,2dcc <stbsp_vsprintfcb+0x1b46>
- *s++ = '0';
- 2c46: 85ba mv a1,a4
- 2c48: 00a78023 sb a0,0(a5)
- --i;
- 2c4c: 377d addiw a4,a4,-1
- *s++ = '0';
- 2c4e: 0785 addi a5,a5,1
- while (i) {
- 2c50: f77d bnez a4,2c3e <stbsp_vsprintfcb+0x19b8>
- if ((stbsp__int32)(l + n) > pr)
- 2c52: 0003071b sext.w a4,t1
- 2c56: 4108863b subw a2,a7,a6
- 2c5a: 00e8d563 bge a7,a4,2c64 <stbsp_vsprintfcb+0x19de>
- l = pr - n;
- 2c5e: 0006069b sext.w a3,a2
- 2c62: d0b2 sw a2,96(sp)
- while (i) {
- 2c64: c68d beqz a3,2c8e <stbsp_vsprintfcb+0x1a08>
- 2c66: 7566 ld a0,120(sp)
- 2c68: 02069813 slli a6,a3,0x20
- 2c6c: 02085813 srli a6,a6,0x20
- 2c70: 01078eb3 add t4,a5,a6
- 2c74: 85aa mv a1,a0
- 2c76: 873e mv a4,a5
- *s++ = *sn++;
- 2c78: 0005c883 lbu a7,0(a1)
- 2c7c: 0705 addi a4,a4,1
- while (i) {
- 2c7e: 0585 addi a1,a1,1
- *s++ = *sn++;
- 2c80: ff170fa3 sb a7,-1(a4)
- while (i) {
- 2c84: ffd71ae3 bne a4,t4,2c78 <stbsp_vsprintfcb+0x19f2>
- 2c88: 9542 add a0,a0,a6
- 2c8a: 97c2 add a5,a5,a6
- 2c8c: fcaa sd a0,120(sp)
- l = (stbsp__uint32)(s - (num + 64));
- 2c8e: 0c010a93 addi s5,sp,192
- cs = 1 + (3 << 24); // how many tens did we write (for commas below)
- 2c92: 030002b7 lui t0,0x3000
- tz = pr - (n + l);
- 2c96: 40d608bb subw a7,a2,a3
- l = (stbsp__uint32)(s - (num + 64));
- 2c9a: 415787b3 sub a5,a5,s5
- cs = 1 + (3 << 24); // how many tens did we write (for commas below)
- 2c9e: 0285 addi t0,t0,1 # 3000001 <_ZSt4cerr+0x2ff8809>
- 2ca0: fbcff06f j 245c <stbsp_vsprintfcb+0x11d6>
- *--s = '0';
- 2ca4: 03000793 li a5,48
- 2ca8: fefa8fa3 sb a5,-1(s5)
- l = 1;
- 2cac: 030002b7 lui t0,0x3000
- 2cb0: 4785 li a5,1
- 2cb2: d0be sw a5,96(sp)
- *--s = '0';
- 2cb4: 1afd addi s5,s5,-1
- l = 1;
- 2cb6: 4605 li a2,1
- 2cb8: 0285 addi t0,t0,1 # 3000001 <_ZSt4cerr+0x2ff8809>
- 2cba: 4685 li a3,1
- 2cbc: b9dd j 29b2 <stbsp_vsprintfcb+0x172c>
- } else if (fl & STBSP__LEADINGSPACE) {
- 2cbe: 004e7713 andi a4,t3,4
- 2cc2: e74d bnez a4,2d6c <stbsp_vsprintfcb+0x1ae6>
- } else if (fl & STBSP__LEADINGPLUS) {
- 2cc4: 8b89 andi a5,a5,2
- 2cc6: efd9 bnez a5,2d64 <stbsp_vsprintfcb+0x1ade>
- sign[0] = 0;
- 2cc8: 06010423 sb zero,104(sp)
- 2ccc: 4a01 li s4,0
- 2cce: b9c9 j 29a0 <stbsp_vsprintfcb+0x171a>
- if ((s[0] == '0') && (s != (num + STBSP__NUMSZ)))
- 2cd0: 051c addi a5,sp,640
- 2cd2: cafa89e3 beq s5,a5,2984 <stbsp_vsprintfcb+0x16fe>
- ++s;
- 2cd6: 0a85 addi s5,s5,1
- l = (stbsp__uint32)((num + STBSP__NUMSZ) - s);
- 2cd8: 415786bb subw a3,a5,s5
- 2cdc: b165 j 2984 <stbsp_vsprintfcb+0x16fe>
- n = dp - n;
- 2cde: 40ce87bb subw a5,t4,a2
- if ((fl & STBSP__TRIPLET_COMMA) == 0) {
- 2ce2: 12030e63 beqz t1,2e1e <stbsp_vsprintfcb+0x1b98>
- if ((fl & STBSP__TRIPLET_COMMA) && (++cs == 4)) {
- 2ce6: 4511 li a0,4
- 2ce8: 03000613 li a2,48
- *s++ = stbsp__comma;
- 2cec: 00170693 addi a3,a4,1
- if ((fl & STBSP__TRIPLET_COMMA) && (++cs == 4)) {
- 2cf0: 00030563 beqz t1,2cfa <stbsp_vsprintfcb+0x1a74>
- 2cf4: 2585 addiw a1,a1,1
- 2cf6: 00a58963 beq a1,a0,2d08 <stbsp_vsprintfcb+0x1a82>
- 2cfa: 8736 mv a4,a3
- --n;
- 2cfc: 37fd addiw a5,a5,-1
- 2cfe: fec70fa3 sb a2,-1(a4)
- while (n) {
- 2d02: f7ed bnez a5,2cec <stbsp_vsprintfcb+0x1a66>
- 2d04: f38ff06f j 243c <stbsp_vsprintfcb+0x11b6>
- 2d08: fe568fa3 sb t0,-1(a3)
- *s++ = stbsp__comma;
- 2d0c: 0709 addi a4,a4,2
- if ((fl & STBSP__TRIPLET_COMMA) && (++cs == 4)) {
- 2d0e: 4585 li a1,1
- 2d10: b7f5 j 2cfc <stbsp_vsprintfcb+0x1a76>
- sign[0] = 0;
- 2d12: 06010423 sb zero,104(sp)
- 2d16: f1dfe06f j 1c32 <stbsp_vsprintfcb+0x9ac>
- tail[idx + 1] = "_kMGT"[fl >> 24];
- 2d1a: 00002697 auipc a3,0x2
- 2d1e: 32e68693 addi a3,a3,814 # 5048 <_GLOBAL__sub_I__ZSt3cin+0xa0>
- 2d22: 9736 add a4,a4,a3
- 2d24: 00074683 lbu a3,0(a4)
- 2d28: 1088 addi a0,sp,96
- 2d2a: 22060713 addi a4,a2,544
- 2d2e: 972a add a4,a4,a0
- 2d30: ded70823 sb a3,-528(a4)
- idx++;
- 2d34: 8fb2 mv t6,a2
- 2d36: fb0ff06f j 24e6 <stbsp_vsprintfcb+0x1260>
- while (limit && *sn) {
- 2d3a: e00692e3 bnez a3,2b3e <stbsp_vsprintfcb+0x18b8>
- 2d3e: bd19 j 2b54 <stbsp_vsprintfcb+0x18ce>
- pr = (dp < (stbsp__int32)l) ? l - dp : 0;
- 2d40: 0008071b sext.w a4,a6
- 2d44: 86c2 mv a3,a6
- 2d46: 88d2 mv a7,s4
- pr = -dp + ((pr > (stbsp__int32)l) ? (stbsp__int32) l : pr);
- 2d48: 863a mv a2,a4
- 2d4a: 00e8d363 bge a7,a4,2d50 <stbsp_vsprintfcb+0x1aca>
- 2d4e: 8646 mv a2,a7
- 2d50: 40f608bb subw a7,a2,a5
- 2d54: 814ff06f j 1d68 <stbsp_vsprintfcb+0xae2>
- divisor = 1000.0f;
- 2d58: 00003797 auipc a5,0x3
- 2d5c: a907b787 fld fa5,-1392(a5) # 57e8 <STDIN_FD+0x28>
- 2d60: dd5fe06f j 1b34 <stbsp_vsprintfcb+0x8ae>
- 2d64: 678d lui a5,0x3
- 2d66: b017879b addiw a5,a5,-1279 # 2b01 <stbsp_vsprintfcb+0x187b>
- 2d6a: b13d j 2998 <stbsp_vsprintfcb+0x1712>
- 2d6c: 6789 lui a5,0x2
- 2d6e: 2785 addiw a5,a5,1 # 2001 <stbsp_vsprintfcb+0xd7b>
- 2d70: b125 j 2998 <stbsp_vsprintfcb+0x1712>
- *s++ = stbsp__period;
- 2d72: 00004517 auipc a0,0x4
- 2d76: c5a54503 lbu a0,-934(a0) # 69cc <stbsp__period>
- sn = s;
- 2d7a: 0c210793 addi a5,sp,194
- n = pr;
- 2d7e: 0008869b sext.w a3,a7
- *s++ = stbsp__period;
- 2d82: 0ca100a3 sb a0,193(sp)
- sn = s;
- 2d86: fcbe sd a5,120(sp)
- if (n > 13)
- 2d88: 4535 li a0,13
- n64 <<= 4;
- 2d8a: 0712 slli a4,a4,0x4
- if (n > 13)
- 2d8c: 8836 mv a6,a3
- 2d8e: 00d57363 bgeu a0,a3,2d94 <stbsp_vsprintfcb+0x1b0e>
- 2d92: 4835 li a6,13
- 2d94: 0008051b sext.w a0,a6
- while (n--) {
- 2d98: 387d addiw a6,a6,-1
- if (pr > (stbsp__int32)n)
- 2d9a: af1542e3 blt a0,a7,287e <stbsp_vsprintfcb+0x15f8>
- tz = 0;
- 2d9e: 4881 li a7,0
- 2da0: b4cd j 2882 <stbsp_vsprintfcb+0x15fc>
- while (n < l) {
- 2da2: 87ba mv a5,a4
- 2da4: bc1d j 27da <stbsp_vsprintfcb+0x1554>
- tail[0] = (char)n;
- 2da6: 478d li a5,3
- 2da8: 06f10823 sb a5,112(sp)
- tail[n] = '0' + dp % 10;
- 2dac: 06b109a3 sb a1,115(sp)
- 2db0: 480d li a6,3
- 2db2: 4f8d li t6,3
- 2db4: 8e4ff06f j 1e98 <stbsp_vsprintfcb+0xc12>
- 2db8: 678d lui a5,0x3
- 2dba: b017879b addiw a5,a5,-1279 # 2b01 <stbsp_vsprintfcb+0x187b>
- 2dbe: 80aff06f j 1dc8 <stbsp_vsprintfcb+0xb42>
- if (pr)
- 2dc2: 8336 mv t1,a3
- *s++ = '0';
- 2dc4: 0c110793 addi a5,sp,193
- while (i) {
- 2dc8: 4801 li a6,0
- 2dca: b561 j 2c52 <stbsp_vsprintfcb+0x19cc>
- while (i >= 4) {
- 2dcc: 460d li a2,3
- 2dce: 04e65663 bge a2,a4,2e1a <stbsp_vsprintfcb+0x1b94>
- 2dd2: ffb5871b addiw a4,a1,-5
- 2dd6: 0027559b srliw a1,a4,0x2
- 2dda: 0015861b addiw a2,a1,1
- 2dde: 060a slli a2,a2,0x2
- *(stbsp__uint32 *)s = 0x30303030;
- 2de0: 30303537 lui a0,0x30303
- 2de4: 963e add a2,a2,a5
- 2de6: 03050513 addi a0,a0,48 # 30303030 <_ZSt4cerr+0x302fb838>
- 2dea: c388 sw a0,0(a5)
- s += 4;
- 2dec: 0791 addi a5,a5,4
- while (i >= 4) {
- 2dee: fef61ee3 bne a2,a5,2dea <stbsp_vsprintfcb+0x1b64>
- 2df2: 0025959b slliw a1,a1,0x2
- 2df6: 9f0d subw a4,a4,a1
- while (i) {
- 2df8: e4070de3 beqz a4,2c52 <stbsp_vsprintfcb+0x19cc>
- *s++ = '0';
- 2dfc: 03000513 li a0,48
- while (i) {
- 2e00: 00f705bb addw a1,a4,a5
- *s++ = '0';
- 2e04: 0605 addi a2,a2,1
- while (i) {
- 2e06: 00060e9b sext.w t4,a2
- *s++ = '0';
- 2e0a: fea60fa3 sb a0,-1(a2)
- while (i) {
- 2e0e: ffd59be3 bne a1,t4,2e04 <stbsp_vsprintfcb+0x1b7e>
- 2e12: 1702 slli a4,a4,0x20
- 2e14: 9301 srli a4,a4,0x20
- 2e16: 97ba add a5,a5,a4
- 2e18: bd2d j 2c52 <stbsp_vsprintfcb+0x19cc>
- while (i >= 4) {
- 2e1a: 863e mv a2,a5
- 2e1c: b7c5 j 2dfc <stbsp_vsprintfcb+0x1b76>
- if ((((stbsp__uintptr)s) & 3) == 0)
- 2e1e: 00377693 andi a3,a4,3
- 2e22: ce81 beqz a3,2e3a <stbsp_vsprintfcb+0x1bb4>
- *s++ = '0';
- 2e24: 03000693 li a3,48
- 2e28: 00d70023 sb a3,0(a4)
- --n;
- 2e2c: 37fd addiw a5,a5,-1
- *s++ = '0';
- 2e2e: 0705 addi a4,a4,1
- while (n) {
- 2e30: e0078663 beqz a5,243c <stbsp_vsprintfcb+0x11b6>
- if ((((stbsp__uintptr)s) & 3) == 0)
- 2e34: 00377613 andi a2,a4,3
- 2e38: fa65 bnez a2,2e28 <stbsp_vsprintfcb+0x1ba2>
- while (n >= 4) {
- 2e3a: 468d li a3,3
- 2e3c: eaf6f5e3 bgeu a3,a5,2ce6 <stbsp_vsprintfcb+0x1a60>
- 2e40: ffc7869b addiw a3,a5,-4
- 2e44: 0026d69b srliw a3,a3,0x2
- 2e48: 2685 addiw a3,a3,1
- 2e4a: 068a slli a3,a3,0x2
- *(stbsp__uint32 *)s = 0x30303030;
- 2e4c: 30303637 lui a2,0x30303
- 2e50: 96ba add a3,a3,a4
- 2e52: 03060613 addi a2,a2,48 # 30303030 <_ZSt4cerr+0x302fb838>
- 2e56: c310 sw a2,0(a4)
- s += 4;
- 2e58: 0711 addi a4,a4,4
- while (n >= 4) {
- 2e5a: fed71ee3 bne a4,a3,2e56 <stbsp_vsprintfcb+0x1bd0>
- 2e5e: 8b8d andi a5,a5,3
- while (n) {
- 2e60: e80793e3 bnez a5,2ce6 <stbsp_vsprintfcb+0x1a60>
- 2e64: dd8ff06f j 243c <stbsp_vsprintfcb+0x11b6>
- if (((stbsp__uintptr)sn & 3) == 0)
- 2e68: 87d6 mv a5,s5
- l = stbsp__strlen_limited(s, (pr >= 0) ? pr : ~0u);
- 2e6a: 56fd li a3,-1
- 2e6c: b155 j 2b10 <stbsp_vsprintfcb+0x188a>
- if ((dp <= -4) || (dp > (stbsp__int32)n)) {
- 2e6e: 5775 li a4,-3
- 2e70: 00e7ce63 blt a5,a4,2e8c <stbsp_vsprintfcb+0x1c06>
- 2e74: f6fa4663 blt s4,a5,25e0 <stbsp_vsprintfcb+0x135a>
- if (dp > 0) {
- 2e78: ecf054e3 blez a5,2d40 <stbsp_vsprintfcb+0x1aba>
- 2e7c: 86c2 mv a3,a6
- pr = (dp < (stbsp__int32)l) ? l - dp : 0;
- 2e7e: 4881 li a7,0
- 2e80: ee9fe06f j 1d68 <stbsp_vsprintfcb+0xae2>
- while (i--)
- 2e84: fff7869b addiw a3,a5,-1
- 2e88: 8722 mv a4,s0
- 2e8a: b105 j 2aaa <stbsp_vsprintfcb+0x1824>
- if (pr > (stbsp__int32)l)
- 2e8c: 0008071b sext.w a4,a6
- while ((l > 1) && (pr) && (sn[l - 1] == '0')) {
- 2e90: 7ae6 ld s5,120(sp)
- if (pr > (stbsp__int32)l)
- 2e92: 86c2 mv a3,a6
- 2e94: 88d2 mv a7,s4
- 2e96: f7475d63 bge a4,s4,2610 <stbsp_vsprintfcb+0x138a>
- while ((l > 1) && (pr) && (sn[l - 1] == '0')) {
- 2e9a: 8542 mv a0,a6
- 2e9c: f56ff06f j 25f2 <stbsp_vsprintfcb+0x136c>
-
-0000000000002ea0 <stbsp_sprintf>:
-{
- 2ea0: 715d addi sp,sp,-80
- va_start(va, fmt);
- 2ea2: 02010313 addi t1,sp,32
-{
- 2ea6: f032 sd a2,32(sp)
- 2ea8: f436 sd a3,40(sp)
- 2eaa: f83a sd a4,48(sp)
- result = STB_SPRINTF_DECORATE(vsprintfcb)(0, 0, buf, fmt, va);
- 2eac: 86ae mv a3,a1
- 2eae: 862a mv a2,a0
- 2eb0: 871a mv a4,t1
- 2eb2: 4581 li a1,0
- 2eb4: 4501 li a0,0
-{
- 2eb6: ec06 sd ra,24(sp)
- 2eb8: fc3e sd a5,56(sp)
- 2eba: e0c2 sd a6,64(sp)
- 2ebc: e4c6 sd a7,72(sp)
- va_start(va, fmt);
- 2ebe: e41a sd t1,8(sp)
- result = STB_SPRINTF_DECORATE(vsprintfcb)(0, 0, buf, fmt, va);
- 2ec0: bc6fe0ef jal 1286 <stbsp_vsprintfcb>
-}
- 2ec4: 60e2 ld ra,24(sp)
- 2ec6: 6161 addi sp,sp,80
- 2ec8: 8082 ret
-
-0000000000002eca <stbsp_vsnprintf>:
-{
- 2eca: dd010113 addi sp,sp,-560
- 2ece: 22813023 sd s0,544(sp)
- 2ed2: 20913c23 sd s1,536(sp)
- 2ed6: 22113423 sd ra,552(sp)
- 2eda: 84ae mv s1,a1
- 2edc: 842a mv s0,a0
- 2ede: 88b2 mv a7,a2
- 2ee0: 8736 mv a4,a3
- if ( (count == 0) && !buf )
- 2ee2: e591 bnez a1,2eee <stbsp_vsnprintf+0x24>
- 2ee4: c141 beqz a0,2f64 <stbsp_vsnprintf+0x9a>
- c.buf = buf;
- 2ee6: e02a sd a0,0(sp)
- c.count = count;
- 2ee8: e402 sd zero,8(sp)
- return (c->count >= STB_SPRINTF_MIN) ? c->buf : c->tmp; // go direct into buffer if you can
- 2eea: 0810 addi a2,sp,16
- 2eec: a089 j 2f2e <stbsp_vsnprintf+0x64>
- if (len > c->count)
- 2eee: 0015a593 slti a1,a1,1
- 2ef2: 40b005bb negw a1,a1
- 2ef6: 8de5 and a1,a1,s1
- c.buf = buf;
- 2ef8: e02a sd a0,0(sp)
- c.count = count;
- 2efa: c426 sw s1,8(sp)
- c.length = 0;
- 2efc: c602 sw zero,12(sp)
- if (len > c->count)
- 2efe: 2581 sext.w a1,a1
- if (len) {
- 2f00: 0804d663 bgez s1,2f8c <stbsp_vsnprintf+0xc2>
- s = buf;
- 2f04: 4781 li a5,0
- if (buf != c->buf) {
- 2f06: c911 beqz a0,2f1a <stbsp_vsnprintf+0x50>
- *d++ = *s++;
- 2f08: 0007c803 lbu a6,0(a5)
- 2f0c: 0785 addi a5,a5,1
- 2f0e: 00f40533 add a0,s0,a5
- 2f12: ff050fa3 sb a6,-1(a0)
- } while (s < se);
- 2f16: feb7e9e3 bltu a5,a1,2f08 <stbsp_vsnprintf+0x3e>
- c->count -= len;
- 2f1a: 40b486bb subw a3,s1,a1
- c->buf += len;
- 2f1e: 95a2 add a1,a1,s0
- 2f20: e02e sd a1,0(sp)
- c->count -= len;
- 2f22: c436 sw a3,8(sp)
- return (c->count >= STB_SPRINTF_MIN) ? c->buf : c->tmp; // go direct into buffer if you can
- 2f24: 1ff00793 li a5,511
- 2f28: fcd7d1e3 bge a5,a3,2eea <stbsp_vsnprintf+0x20>
- 2f2c: 6602 ld a2,0(sp)
- STB_SPRINTF_DECORATE( vsprintfcb )( stbsp__clamp_callback, &c, stbsp__clamp_callback(0,&c,0), fmt, va );
- 2f2e: 86c6 mv a3,a7
- 2f30: 858a mv a1,sp
- 2f32: ffffd517 auipc a0,0xffffd
- 2f36: 21650513 addi a0,a0,534 # 148 <stbsp__clamp_callback>
- 2f3a: b4cfe0ef jal 1286 <stbsp_vsprintfcb>
- l = (int)( c.buf - buf );
- 2f3e: 6782 ld a5,0(sp)
- 2f40: 9f81 subw a5,a5,s0
- if ( l >= count ) // should never be greater, only equal (or less) than count
- 2f42: 0097c463 blt a5,s1,2f4a <stbsp_vsnprintf+0x80>
- l = count - 1;
- 2f46: fff4879b addiw a5,s1,-1
- buf[l] = 0;
- 2f4a: 943e add s0,s0,a5
- 2f4c: 00040023 sb zero,0(s0)
-}
- 2f50: 22813083 ld ra,552(sp)
- 2f54: 22013403 ld s0,544(sp)
- 2f58: 4532 lw a0,12(sp)
- 2f5a: 21813483 ld s1,536(sp)
- 2f5e: 23010113 addi sp,sp,560
- 2f62: 8082 ret
- STB_SPRINTF_DECORATE( vsprintfcb )( stbsp__count_clamp_callback, &c, c.tmp, fmt, va );
- 2f64: 86b2 mv a3,a2
- 2f66: 858a mv a1,sp
- 2f68: 0810 addi a2,sp,16
- 2f6a: ffffd517 auipc a0,0xffffd
- 2f6e: 22c50513 addi a0,a0,556 # 196 <stbsp__count_clamp_callback>
- c.length = 0;
- 2f72: c602 sw zero,12(sp)
- STB_SPRINTF_DECORATE( vsprintfcb )( stbsp__count_clamp_callback, &c, c.tmp, fmt, va );
- 2f74: b12fe0ef jal 1286 <stbsp_vsprintfcb>
-}
- 2f78: 22813083 ld ra,552(sp)
- 2f7c: 22013403 ld s0,544(sp)
- 2f80: 4532 lw a0,12(sp)
- 2f82: 21813483 ld s1,536(sp)
- 2f86: 23010113 addi sp,sp,560
- 2f8a: 8082 ret
- 2f8c: 86a6 mv a3,s1
- 2f8e: bf59 j 2f24 <stbsp_vsnprintf+0x5a>
-
-0000000000002f90 <stbsp_snprintf>:
-{
- 2f90: 715d addi sp,sp,-80
- va_start(va, fmt);
- 2f92: 02810313 addi t1,sp,40
-{
- 2f96: f436 sd a3,40(sp)
- result = STB_SPRINTF_DECORATE(vsnprintf)(buf, count, fmt, va);
- 2f98: 869a mv a3,t1
-{
- 2f9a: ec06 sd ra,24(sp)
- 2f9c: f83a sd a4,48(sp)
- 2f9e: fc3e sd a5,56(sp)
- 2fa0: e0c2 sd a6,64(sp)
- 2fa2: e4c6 sd a7,72(sp)
- va_start(va, fmt);
- 2fa4: e41a sd t1,8(sp)
- result = STB_SPRINTF_DECORATE(vsnprintf)(buf, count, fmt, va);
- 2fa6: f25ff0ef jal 2eca <stbsp_vsnprintf>
-}
- 2faa: 60e2 ld ra,24(sp)
- 2fac: 6161 addi sp,sp,80
- 2fae: 8082 ret
-
-0000000000002fb0 <stbsp_vsprintf>:
-{
- 2fb0: 86ae mv a3,a1
- 2fb2: 8732 mv a4,a2
- return STB_SPRINTF_DECORATE(vsprintfcb)(0, 0, buf, fmt, va);
- 2fb4: 4581 li a1,0
- 2fb6: 862a mv a2,a0
- 2fb8: 4501 li a0,0
- 2fba: accfe06f j 1286 <stbsp_vsprintfcb>
-
-0000000000002fbe <sprintf>:
-{
- 2fbe: 7119 addi sp,sp,-128
- va_start(ap, format);
- 2fc0: 05010313 addi t1,sp,80
-{
- 2fc4: e0a2 sd s0,64(sp)
- 2fc6: fc26 sd s1,56(sp)
- 2fc8: 842a mv s0,a0
- 2fca: e8b2 sd a2,80(sp)
- _vprintf_core(&ctx, format, ap);
- 2fcc: 0808 addi a0,sp,16
- ctx.limit = size;
- 2fce: 54fd li s1,-1
- _vprintf_core(&ctx, format, ap);
- 2fd0: 861a mv a2,t1
-{
- 2fd2: e486 sd ra,72(sp)
- 2fd4: ecb6 sd a3,88(sp)
- 2fd6: f0ba sd a4,96(sp)
- 2fd8: f4be sd a5,104(sp)
- 2fda: f8c2 sd a6,112(sp)
- 2fdc: fcc6 sd a7,120(sp)
- va_start(ap, format);
- 2fde: e41a sd t1,8(sp)
- ctx.buf = str;
- 2fe0: e822 sd s0,16(sp)
- ctx.limit = size;
- 2fe2: ec26 sd s1,24(sp)
- ctx.written = 0;
- 2fe4: f002 sd zero,32(sp)
- ctx.stream = NULL;
- 2fe6: f402 sd zero,40(sp)
- _vprintf_core(&ctx, format, ap);
- 2fe8: 02c000ef jal 3014 <_vprintf_core.constprop.0.isra.0>
- if (ctx.written < size)
- 2fec: 7502 ld a0,32(sp)
- 2fee: 00950b63 beq a0,s1,3004 <sprintf+0x46>
- str[ctx.written] = '\0';
- 2ff2: 942a add s0,s0,a0
- 2ff4: 00040023 sb zero,0(s0)
-}
- 2ff8: 60a6 ld ra,72(sp)
- 2ffa: 6406 ld s0,64(sp)
- 2ffc: 74e2 ld s1,56(sp)
- 2ffe: 2501 sext.w a0,a0
- 3000: 6109 addi sp,sp,128
- 3002: 8082 ret
- str[size - 1] = '\0';
- 3004: fe040f23 sb zero,-2(s0)
-}
- 3008: 60a6 ld ra,72(sp)
- 300a: 6406 ld s0,64(sp)
- 300c: 74e2 ld s1,56(sp)
- 300e: 2501 sext.w a0,a0
- 3010: 6109 addi sp,sp,128
- 3012: 8082 ret
-
-0000000000003014 <_vprintf_core.constprop.0.isra.0>:
-static int _vprintf_core(_OutContext *ctx, const char *format, va_list ap)
- 3014: 7129 addi sp,sp,-320
- 3016: edee sd s11,216(sp)
- 3018: fe06 sd ra,312(sp)
- 301a: 8dae mv s11,a1
- while (*p)
- 301c: 0005c583 lbu a1,0(a1)
- 3020: cde9 beqz a1,30fa <_vprintf_core.constprop.0.isra.0+0xe6>
- 3022: f626 sd s1,296(sp)
- 3024: f24a sd s2,288(sp)
- 3026: ee4e sd s3,280(sp)
- 3028: e656 sd s5,264(sp)
- 302a: f9e2 sd s8,240(sp)
- 302c: fa22 sd s0,304(sp)
- 302e: ea52 sd s4,272(sp)
- 3030: e25a sd s6,256(sp)
- 3032: fdde sd s7,248(sp)
- 3034: f5e6 sd s9,232(sp)
- 3036: f1ea sd s10,224(sp)
- 3038: 84aa mv s1,a0
- 303a: 8c32 mv s8,a2
- if (*p != '%')
- 303c: 02500a93 li s5,37
- 3040: 49c1 li s3,16
- 3042: 00002917 auipc s2,0x2
- 3046: 2da90913 addi s2,s2,730 # 531c <_GLOBAL__sub_I__ZSt3cin+0x374>
- 304a: a039 j 3058 <_vprintf_core.constprop.0.isra.0+0x44>
- _out_char(ctx, spec);
- 304c: 8526 mv a0,s1
- 304e: 952fe0ef jal 11a0 <_out_char>
- while (*p)
- 3052: 000dc583 lbu a1,0(s11)
- 3056: c5d9 beqz a1,30e4 <_vprintf_core.constprop.0.isra.0+0xd0>
- _out_char(ctx, *p++);
- 3058: 0d85 addi s11,s11,1
- if (*p != '%')
- 305a: ff5599e3 bne a1,s5,304c <_vprintf_core.constprop.0.isra.0+0x38>
- int flag_left = 0, flag_zero = 0, flag_plus = 0, flag_space = 0, flag_hash = 0;
- 305e: 4501 li a0,0
- 3060: 4881 li a7,0
- 3062: 4581 li a1,0
- 3064: 4b01 li s6,0
- 3066: 4a01 li s4,0
- if (*p == '-')
- 3068: 000dcc83 lbu s9,0(s11)
- 306c: fe0c871b addiw a4,s9,-32
- 3070: 0ff77713 zext.b a4,a4
- 3074: 00e9e763 bltu s3,a4,3082 <_vprintf_core.constprop.0.isra.0+0x6e>
- 3078: 070a slli a4,a4,0x2
- 307a: 974a add a4,a4,s2
- 307c: 4318 lw a4,0(a4)
- 307e: 974a add a4,a4,s2
- 3080: 8702 jr a4
- if (*p == '*')
- 3082: 02a00793 li a5,42
- 3086: 16fc9c63 bne s9,a5,31fe <_vprintf_core.constprop.0.isra.0+0x1ea>
- width = va_arg(ap, int);
- 308a: 000c2403 lw s0,0(s8)
- 308e: 0c21 addi s8,s8,8
- if (width < 0)
- 3090: 00045563 bgez s0,309a <_vprintf_core.constprop.0.isra.0+0x86>
- width = -width;
- 3094: 4080043b negw s0,s0
- flag_left = 1;
- 3098: 4a05 li s4,1
- while (*p >= '0' && *p <= '9')
- 309a: 001dcc83 lbu s9,1(s11)
- p++;
- 309e: 0d85 addi s11,s11,1
- if (*p == '.')
- 30a0: 02e00793 li a5,46
- int precision = -1;
- 30a4: 5bfd li s7,-1
- if (*p == '.')
- 30a6: 18fc8a63 beq s9,a5,323a <_vprintf_core.constprop.0.isra.0+0x226>
- if (*p == 'l')
- 30aa: 06c00693 li a3,108
- 30ae: 8666 mv a2,s9
- 30b0: 1adc8663 beq s9,a3,325c <_vprintf_core.constprop.0.isra.0+0x248>
- else if (*p == 'z')
- 30b4: 07a00693 li a3,122
- p++;
- 30b8: 0d85 addi s11,s11,1
- else if (*p == 'z')
- 30ba: 24dc8163 beq s9,a3,32fc <_vprintf_core.constprop.0.isra.0+0x2e8>
- if (!spec)
- 30be: 06400693 li a3,100
- 30c2: 4adc8163 beq s9,a3,3564 <_vprintf_core.constprop.0.isra.0+0x550>
- 30c6: 06400693 li a3,100
- int len_mod = 0;
- 30ca: 4e81 li t4,0
- 30cc: 1b96e663 bltu a3,s9,3278 <_vprintf_core.constprop.0.isra.0+0x264>
- 30d0: 04700693 li a3,71
- 30d4: 2796e463 bltu a3,s9,333c <_vprintf_core.constprop.0.isra.0+0x328>
- 30d8: 04400693 li a3,68
- 30dc: 0596e363 bltu a3,s9,3122 <_vprintf_core.constprop.0.isra.0+0x10e>
- 30e0: 240c9363 bnez s9,3326 <_vprintf_core.constprop.0.isra.0+0x312>
- 30e4: 7452 ld s0,304(sp)
- 30e6: 74b2 ld s1,296(sp)
- 30e8: 7912 ld s2,288(sp)
- 30ea: 69f2 ld s3,280(sp)
- 30ec: 6a52 ld s4,272(sp)
- 30ee: 6ab2 ld s5,264(sp)
- 30f0: 6b12 ld s6,256(sp)
- 30f2: 7bee ld s7,248(sp)
- 30f4: 7c4e ld s8,240(sp)
- 30f6: 7cae ld s9,232(sp)
- 30f8: 7d0e ld s10,224(sp)
-}
- 30fa: 70f2 ld ra,312(sp)
- 30fc: 6dee ld s11,216(sp)
- 30fe: 6131 addi sp,sp,320
- 3100: 8082 ret
- if (*p == '-')
- 3102: 4585 li a1,1
- p++;
- 3104: 0d85 addi s11,s11,1
- if (*p == '-')
- 3106: b78d j 3068 <_vprintf_core.constprop.0.isra.0+0x54>
- 3108: 4505 li a0,1
- p++;
- 310a: 0d85 addi s11,s11,1
- while (1)
- 310c: bfb1 j 3068 <_vprintf_core.constprop.0.isra.0+0x54>
- if (*p == '-')
- 310e: 4885 li a7,1
- p++;
- 3110: 0d85 addi s11,s11,1
- while (1)
- 3112: bf99 j 3068 <_vprintf_core.constprop.0.isra.0+0x54>
- if (*p == '-')
- 3114: 4b05 li s6,1
- p++;
- 3116: 0d85 addi s11,s11,1
- while (1)
- 3118: bf81 j 3068 <_vprintf_core.constprop.0.isra.0+0x54>
- if (*p == '-')
- 311a: 4a05 li s4,1
- p++;
- 311c: 0d85 addi s11,s11,1
- while (1)
- 311e: b7a9 j 3068 <_vprintf_core.constprop.0.isra.0+0x54>
- char spec = *p++;
- 3120: 8dbe mv s11,a5
- fmt_tmp[f_idx++] = '%';
- 3122: 02500693 li a3,37
- 3126: 02d10823 sb a3,48(sp)
- 312a: 4d05 li s10,1
- if (flag_left)
- 312c: 000a0763 beqz s4,313a <_vprintf_core.constprop.0.isra.0+0x126>
- fmt_tmp[f_idx++] = '-';
- 3130: 02d00693 li a3,45
- 3134: 02d108a3 sb a3,49(sp)
- 3138: 4d09 li s10,2
- if (flag_zero)
- 313a: 000b0c63 beqz s6,3152 <_vprintf_core.constprop.0.isra.0+0x13e>
- fmt_tmp[f_idx++] = '0';
- 313e: 0c0d0793 addi a5,s10,192
- 3142: 0818 addi a4,sp,16
- 3144: 00e786b3 add a3,a5,a4
- 3148: 03000613 li a2,48
- 314c: f6c68023 sb a2,-160(a3)
- 3150: 2d05 addiw s10,s10,1
- if (flag_plus)
- 3152: c999 beqz a1,3168 <_vprintf_core.constprop.0.isra.0+0x154>
- fmt_tmp[f_idx++] = '+';
- 3154: 0c0d0793 addi a5,s10,192
- 3158: 0818 addi a4,sp,16
- 315a: 00e786b3 add a3,a5,a4
- 315e: 02b00613 li a2,43
- 3162: f6c68023 sb a2,-160(a3)
- 3166: 2d05 addiw s10,s10,1
- if (flag_space)
- 3168: 00088c63 beqz a7,3180 <_vprintf_core.constprop.0.isra.0+0x16c>
- fmt_tmp[f_idx++] = ' ';
- 316c: 0c0d0793 addi a5,s10,192
- 3170: 0818 addi a4,sp,16
- 3172: 00e786b3 add a3,a5,a4
- 3176: 02000613 li a2,32
- 317a: f6c68023 sb a2,-160(a3)
- 317e: 2d05 addiw s10,s10,1
- if (flag_hash)
- 3180: c919 beqz a0,3196 <_vprintf_core.constprop.0.isra.0+0x182>
- fmt_tmp[f_idx++] = '#';
- 3182: 0c0d0793 addi a5,s10,192
- 3186: 0818 addi a4,sp,16
- 3188: 00e786b3 add a3,a5,a4
- 318c: 02300613 li a2,35
- 3190: f6c68023 sb a2,-160(a3)
- 3194: 2d05 addiw s10,s10,1
- if (width > 0)
- 3196: 03010a13 addi s4,sp,48
- 319a: 28804563 bgtz s0,3424 <_vprintf_core.constprop.0.isra.0+0x410>
- if (precision >= 0)
- 319e: 260bd763 bgez s7,340c <_vprintf_core.constprop.0.isra.0+0x3f8>
- fmt_tmp[f_idx++] = spec;
- 31a2: 0c0d0793 addi a5,s10,192
- 31a6: 0818 addi a4,sp,16
- 31a8: 00e78633 add a2,a5,a4
- stbsp_snprintf(f_buf, sizeof(f_buf), fmt_tmp, f_val);
- 31ac: 000c3683 ld a3,0(s8)
- fmt_tmp[f_idx] = '\0';
- 31b0: 001d071b addiw a4,s10,1
- 31b4: 0c070793 addi a5,a4,192
- 31b8: 0818 addi a4,sp,16
- fmt_tmp[f_idx++] = spec;
- 31ba: f7960023 sb s9,-160(a2)
- fmt_tmp[f_idx] = '\0';
- 31be: 973e add a4,a4,a5
- stbsp_snprintf(f_buf, sizeof(f_buf), fmt_tmp, f_val);
- 31c0: 08000593 li a1,128
- 31c4: 8652 mv a2,s4
- 31c6: 0888 addi a0,sp,80
- fmt_tmp[f_idx] = '\0';
- 31c8: f6070023 sb zero,-160(a4)
- stbsp_snprintf(f_buf, sizeof(f_buf), fmt_tmp, f_val);
- 31cc: dc5ff0ef jal 2f90 <stbsp_snprintf>
- for (int i = 0; f_buf[i] != '\0'; i++)
- 31d0: 05014583 lbu a1,80(sp)
- double f_val = va_arg(ap, double);
- 31d4: 0c21 addi s8,s8,8
- for (int i = 0; f_buf[i] != '\0'; i++)
- 31d6: 05110413 addi s0,sp,81
- 31da: e6058ce3 beqz a1,3052 <_vprintf_core.constprop.0.isra.0+0x3e>
- _out_char(ctx, f_buf[i]);
- 31de: 8526 mv a0,s1
- 31e0: fc1fd0ef jal 11a0 <_out_char>
- for (int i = 0; f_buf[i] != '\0'; i++)
- 31e4: 00044583 lbu a1,0(s0)
- 31e8: 0405 addi s0,s0,1
- 31ea: e60584e3 beqz a1,3052 <_vprintf_core.constprop.0.isra.0+0x3e>
- _out_char(ctx, f_buf[i]);
- 31ee: 8526 mv a0,s1
- 31f0: fb1fd0ef jal 11a0 <_out_char>
- for (int i = 0; f_buf[i] != '\0'; i++)
- 31f4: 00044583 lbu a1,0(s0)
- 31f8: 0405 addi s0,s0,1
- 31fa: f1f5 bnez a1,31de <_vprintf_core.constprop.0.isra.0+0x1ca>
- 31fc: bd99 j 3052 <_vprintf_core.constprop.0.isra.0+0x3e>
- while (*p >= '0' && *p <= '9')
- 31fe: fd0c869b addiw a3,s9,-48
- 3202: 0ff6f313 zext.b t1,a3
- 3206: 4725 li a4,9
- int width = 0;
- 3208: 4401 li s0,0
- while (*p >= '0' && *p <= '9')
- 320a: 4625 li a2,9
- 320c: e8676ae3 bltu a4,t1,30a0 <_vprintf_core.constprop.0.isra.0+0x8c>
- 3210: 001dcc83 lbu s9,1(s11)
- width = width * 10 + (*p - '0');
- 3214: 0024171b slliw a4,s0,0x2
- 3218: 9f21 addw a4,a4,s0
- 321a: 0017171b slliw a4,a4,0x1
- 321e: 00e6843b addw s0,a3,a4
- while (*p >= '0' && *p <= '9')
- 3222: fd0c869b addiw a3,s9,-48
- 3226: 0ff6f713 zext.b a4,a3
- p++;
- 322a: 0d85 addi s11,s11,1
- while (*p >= '0' && *p <= '9')
- 322c: fee672e3 bgeu a2,a4,3210 <_vprintf_core.constprop.0.isra.0+0x1fc>
- if (*p == '.')
- 3230: 02e00793 li a5,46
- int precision = -1;
- 3234: 5bfd li s7,-1
- if (*p == '.')
- 3236: e6fc9ae3 bne s9,a5,30aa <_vprintf_core.constprop.0.isra.0+0x96>
- if (*p == '*')
- 323a: 001dcc83 lbu s9,1(s11)
- 323e: 02a00793 li a5,42
- 3242: 16fc9f63 bne s9,a5,33c0 <_vprintf_core.constprop.0.isra.0+0x3ac>
- while (*p >= '0' && *p <= '9')
- 3246: 002dcc83 lbu s9,2(s11)
- if (*p == 'l')
- 324a: 06c00693 li a3,108
- precision = va_arg(ap, int);
- 324e: 000c2b83 lw s7,0(s8)
- p++;
- 3252: 0d89 addi s11,s11,2
- precision = va_arg(ap, int);
- 3254: 0c21 addi s8,s8,8
- if (*p == 'l')
- 3256: 8666 mv a2,s9
- 3258: e4dc9ee3 bne s9,a3,30b4 <_vprintf_core.constprop.0.isra.0+0xa0>
- if (*p == 'l')
- 325c: 001dcc83 lbu s9,1(s11)
- 3260: 08cc8d63 beq s9,a2,32fa <_vprintf_core.constprop.0.isra.0+0x2e6>
- char spec = *p++;
- 3264: 06400693 li a3,100
- 3268: 0d89 addi s11,s11,2
- if (!spec)
- 326a: 4cdc8c63 beq s9,a3,3742 <_vprintf_core.constprop.0.isra.0+0x72e>
- 326e: 06400693 li a3,100
- len_mod = 1;
- 3272: 4e85 li t4,1
- 3274: e596fee3 bgeu a3,s9,30d0 <_vprintf_core.constprop.0.isra.0+0xbc>
- 3278: f9bc869b addiw a3,s9,-101
- 327c: 0ff6f693 zext.b a3,a3
- 3280: 464d li a2,19
- 3282: 12d66863 bltu a2,a3,33b2 <_vprintf_core.constprop.0.isra.0+0x39e>
- 3286: 4e05 li t3,1
- 3288: 00091637 lui a2,0x91
- 328c: 00de1333 sll t1,t3,a3
- 3290: 81060613 addi a2,a2,-2032 # 90810 <_ZSt4cerr+0x89018>
- 3294: 00c37633 and a2,t1,a2
- 3298: 1a061463 bnez a2,3440 <_vprintf_core.constprop.0.isra.0+0x42c>
- 329c: 00737313 andi t1,t1,7
- 32a0: e80311e3 bnez t1,3122 <_vprintf_core.constprop.0.isra.0+0x10e>
- 32a4: 4639 li a2,14
- 32a6: 10c69663 bne a3,a2,33b2 <_vprintf_core.constprop.0.isra.0+0x39e>
- const char *s = va_arg(ap, char *);
- 32aa: 000c3c83 ld s9,0(s8)
- if (!s)
- 32ae: 420c8863 beqz s9,36de <_vprintf_core.constprop.0.isra.0+0x6ca>
- while (*tmp && (precision < 0 || len < precision))
- 32b2: 000cc683 lbu a3,0(s9)
- 32b6: 38068863 beqz a3,3646 <_vprintf_core.constprop.0.isra.0+0x632>
- const char *tmp = s;
- 32ba: 8666 mv a2,s9
- int len = 0;
- 32bc: 4681 li a3,0
- while (*tmp && (precision < 0 || len < precision))
- 32be: 00db8863 beq s7,a3,32ce <_vprintf_core.constprop.0.isra.0+0x2ba>
- 32c2: 00164583 lbu a1,1(a2)
- len++;
- 32c6: 2685 addiw a3,a3,1
- tmp++;
- 32c8: 0605 addi a2,a2,1
- while (*tmp && (precision < 0 || len < precision))
- 32ca: f9f5 bnez a1,32be <_vprintf_core.constprop.0.isra.0+0x2aa>
- 32cc: 8bb6 mv s7,a3
- int padding = (width > len) ? width - len : 0;
- 32ce: 268bc563 blt s7,s0,3538 <_vprintf_core.constprop.0.isra.0+0x524>
- for (int i = 0; i < len; i++)
- 32d2: 4401 li s0,0
- 32d4: 020b8163 beqz s7,32f6 <_vprintf_core.constprop.0.isra.0+0x2e2>
- 32d8: 4d01 li s10,0
- _out_char(ctx, s[i]);
- 32da: 01ac86b3 add a3,s9,s10
- 32de: 0006c583 lbu a1,0(a3)
- 32e2: 8526 mv a0,s1
- for (int i = 0; i < len; i++)
- 32e4: 0d05 addi s10,s10,1
- _out_char(ctx, s[i]);
- 32e6: ebbfd0ef jal 11a0 <_out_char>
- for (int i = 0; i < len; i++)
- 32ea: 000d069b sext.w a3,s10
- 32ee: ff76c6e3 blt a3,s7,32da <_vprintf_core.constprop.0.isra.0+0x2c6>
- if (flag_left)
- 32f2: 260a1463 bnez s4,355a <_vprintf_core.constprop.0.isra.0+0x546>
- const char *s = va_arg(ap, char *);
- 32f6: 0c21 addi s8,s8,8
- 32f8: bba9 j 3052 <_vprintf_core.constprop.0.isra.0+0x3e>
- p++;
- 32fa: 0d89 addi s11,s11,2
- char spec = *p++;
- 32fc: 000dcc83 lbu s9,0(s11)
- 3300: 06400693 li a3,100
- 3304: 001d8793 addi a5,s11,1
- if (!spec)
- 3308: 3edc8063 beq s9,a3,36e8 <_vprintf_core.constprop.0.isra.0+0x6d4>
- 330c: 0796ea63 bltu a3,s9,3380 <_vprintf_core.constprop.0.isra.0+0x36c>
- 3310: 04700693 li a3,71
- 3314: 0f96e263 bltu a3,s9,33f8 <_vprintf_core.constprop.0.isra.0+0x3e4>
- 3318: 04400693 li a3,68
- 331c: e196e2e3 bltu a3,s9,3120 <_vprintf_core.constprop.0.isra.0+0x10c>
- 3320: dc0c82e3 beqz s9,30e4 <_vprintf_core.constprop.0.isra.0+0xd0>
- char spec = *p++;
- 3324: 8dbe mv s11,a5
- _out_char(ctx, '%');
- 3326: 02500593 li a1,37
- 332a: 8526 mv a0,s1
- 332c: e75fd0ef jal 11a0 <_out_char>
- if (spec != '%')
- 3330: 02500713 li a4,37
- 3334: d0ec8fe3 beq s9,a4,3052 <_vprintf_core.constprop.0.isra.0+0x3e>
- _out_char(ctx, spec);
- 3338: 85e6 mv a1,s9
- 333a: bb09 j 304c <_vprintf_core.constprop.0.isra.0+0x38>
- 333c: 05800693 li a3,88
- 3340: 2edc8263 beq s9,a3,3624 <_vprintf_core.constprop.0.isra.0+0x610>
- 3344: 06300713 li a4,99
- 3348: 06ec9563 bne s9,a4,33b2 <_vprintf_core.constprop.0.isra.0+0x39e>
- char c = (char)va_arg(ap, int);
- 334c: 000c4c83 lbu s9,0(s8)
- int padding = (width > 1) ? width - 1 : 0;
- 3350: 8722 mv a4,s0
- 3352: 00804363 bgtz s0,3358 <_vprintf_core.constprop.0.isra.0+0x344>
- 3356: 4705 li a4,1
- 3358: fff7041b addiw s0,a4,-1
- if (!flag_left)
- 335c: 3c0a0463 beqz s4,3724 <_vprintf_core.constprop.0.isra.0+0x710>
- _out_char(ctx, c);
- 3360: 85e6 mv a1,s9
- 3362: 8526 mv a0,s1
- 3364: e3dfd0ef jal 11a0 <_out_char>
- for (int i = 0; i < padding; i++)
- 3368: 4a01 li s4,0
- 336a: d451 beqz s0,32f6 <_vprintf_core.constprop.0.isra.0+0x2e2>
- _out_char(ctx, ' ');
- 336c: 02000593 li a1,32
- 3370: 8526 mv a0,s1
- for (int i = 0; i < padding; i++)
- 3372: 2a05 addiw s4,s4,1
- _out_char(ctx, ' ');
- 3374: e2dfd0ef jal 11a0 <_out_char>
- for (int i = 0; i < padding; i++)
- 3378: ff441ae3 bne s0,s4,336c <_vprintf_core.constprop.0.isra.0+0x358>
- const char *s = va_arg(ap, char *);
- 337c: 0c21 addi s8,s8,8
- 337e: b9d1 j 3052 <_vprintf_core.constprop.0.isra.0+0x3e>
- 3380: f9bc861b addiw a2,s9,-101
- 3384: 0ff67613 zext.b a2,a2
- 3388: 46cd li a3,19
- 338a: 40c6e963 bltu a3,a2,379c <_vprintf_core.constprop.0.isra.0+0x788>
- 338e: 00091337 lui t1,0x91
- 3392: 4685 li a3,1
- 3394: 00c696b3 sll a3,a3,a2
- 3398: 81030313 addi t1,t1,-2032 # 90810 <_ZSt4cerr+0x89018>
- 339c: 0066f333 and t1,a3,t1
- 33a0: 34031c63 bnez t1,36f8 <_vprintf_core.constprop.0.isra.0+0x6e4>
- 33a4: 8a9d andi a3,a3,7
- 33a6: d6069de3 bnez a3,3120 <_vprintf_core.constprop.0.isra.0+0x10c>
- 33aa: 46b9 li a3,14
- char spec = *p++;
- 33ac: 8dbe mv s11,a5
- 33ae: eed60ee3 beq a2,a3,32aa <_vprintf_core.constprop.0.isra.0+0x296>
- _out_char(ctx, '%');
- 33b2: 02500593 li a1,37
- 33b6: 8526 mv a0,s1
- 33b8: de9fd0ef jal 11a0 <_out_char>
- _out_char(ctx, spec);
- 33bc: 85e6 mv a1,s9
- 33be: b179 j 304c <_vprintf_core.constprop.0.isra.0+0x38>
- while (*p >= '0' && *p <= '9')
- 33c0: fd0c869b addiw a3,s9,-48
- 33c4: 0ff6fe13 zext.b t3,a3
- 33c8: 4625 li a2,9
- p++;
- 33ca: 0d85 addi s11,s11,1
- precision = 0;
- 33cc: 4b81 li s7,0
- while (*p >= '0' && *p <= '9')
- 33ce: 4325 li t1,9
- 33d0: cdc66de3 bltu a2,t3,30aa <_vprintf_core.constprop.0.isra.0+0x96>
- precision = precision * 10 + (*p - '0');
- 33d4: 002b961b slliw a2,s7,0x2
- while (*p >= '0' && *p <= '9')
- 33d8: 001dcc83 lbu s9,1(s11)
- precision = precision * 10 + (*p - '0');
- 33dc: 0176073b addw a4,a2,s7
- 33e0: 0017171b slliw a4,a4,0x1
- 33e4: 00e68bbb addw s7,a3,a4
- while (*p >= '0' && *p <= '9')
- 33e8: fd0c869b addiw a3,s9,-48
- 33ec: 0ff6f613 zext.b a2,a3
- p++;
- 33f0: 0d85 addi s11,s11,1
- while (*p >= '0' && *p <= '9')
- 33f2: fec371e3 bgeu t1,a2,33d4 <_vprintf_core.constprop.0.isra.0+0x3c0>
- 33f6: b955 j 30aa <_vprintf_core.constprop.0.isra.0+0x96>
- 33f8: 05800693 li a3,88
- 33fc: 3cdc8d63 beq s9,a3,37d6 <_vprintf_core.constprop.0.isra.0+0x7c2>
- 3400: 06300713 li a4,99
- char spec = *p++;
- 3404: 8dbe mv s11,a5
- 3406: f4ec83e3 beq s9,a4,334c <_vprintf_core.constprop.0.isra.0+0x338>
- 340a: b765 j 33b2 <_vprintf_core.constprop.0.isra.0+0x39e>
- f_idx += sprintf(&fmt_tmp[f_idx], ".%d", precision);
- 340c: 01aa0533 add a0,s4,s10
- 3410: 865e mv a2,s7
- 3412: 00002597 auipc a1,0x2
- 3416: c8e58593 addi a1,a1,-882 # 50a0 <_GLOBAL__sub_I__ZSt3cin+0xf8>
- 341a: ba5ff0ef jal 2fbe <sprintf>
- 341e: 00ad0d3b addw s10,s10,a0
- 3422: b341 j 31a2 <_vprintf_core.constprop.0.isra.0+0x18e>
- f_idx += sprintf(&fmt_tmp[f_idx], "%d", width);
- 3424: 01aa0533 add a0,s4,s10
- 3428: 8622 mv a2,s0
- 342a: 00002597 auipc a1,0x2
- 342e: c6e58593 addi a1,a1,-914 # 5098 <_GLOBAL__sub_I__ZSt3cin+0xf0>
- 3432: b8dff0ef jal 2fbe <sprintf>
- 3436: 00ad0d3b addw s10,s10,a0
- if (precision >= 0)
- 343a: d60bc4e3 bltz s7,31a2 <_vprintf_core.constprop.0.isra.0+0x18e>
- 343e: b7f9 j 340c <_vprintf_core.constprop.0.isra.0+0x3f8>
- int is_signed = (spec == 'd' || spec == 'i');
- 3440: 06900693 li a3,105
- 3444: 10dc8e63 beq s9,a3,3560 <_vprintf_core.constprop.0.isra.0+0x54c>
- val = (uint64)va_arg(ap, void *);
- 3448: 008c0793 addi a5,s8,8
- int base = (spec == 'x' || spec == 'X' || spec == 'p') ? 16 : 10;
- 344c: 07800693 li a3,120
- val = (uint64)va_arg(ap, void *);
- 3450: e43e sd a5,8(sp)
- int base = (spec == 'x' || spec == 'X' || spec == 'p') ? 16 : 10;
- 3452: 38dc9d63 bne s9,a3,37ec <_vprintf_core.constprop.0.isra.0+0x7d8>
- else if (len_mod == 1)
- 3456: 33ce8963 beq t4,t3,3788 <_vprintf_core.constprop.0.isra.0+0x774>
- val = is_signed ? (uint64)((int64)va_arg(ap, int)) : (uint64)va_arg(ap, uint32);
- 345a: 000c6e03 lwu t3,0(s8)
- 345e: 85f6 mv a1,t4
- 3460: e002 sd zero,0(sp)
- int base = (spec == 'x' || spec == 'X' || spec == 'p') ? 16 : 10;
- 3462: 4341 li t1,16
- const char *digits = uppercase ? "0123456789ABCDEF" : "0123456789abcdef";
- 3464: 00002f97 auipc t6,0x2
- 3468: c04f8f93 addi t6,t6,-1020 # 5068 <_GLOBAL__sub_I__ZSt3cin+0xc0>
- if (val == 0)
- 346c: 120e0363 beqz t3,3592 <_vprintf_core.constprop.0.isra.0+0x57e>
- 3470: 01010293 addi t0,sp,16
- sign_char = '-';
- 3474: 8616 mv a2,t0
- 3476: 86f2 mv a3,t3
- buf[i++] = digits[val % base];
- 3478: 0266f8b3 remu a7,a3,t1
- 347c: 8f32 mv t5,a2
- while (val != 0)
- 347e: 0605 addi a2,a2,1
- 3480: 8eb6 mv t4,a3
- buf[i++] = digits[val % base];
- 3482: 98fe add a7,a7,t6
- 3484: 0008c883 lbu a7,0(a7)
- val /= base;
- 3488: 0266d6b3 divu a3,a3,t1
- buf[i++] = digits[val % base];
- 348c: ff160fa3 sb a7,-1(a2)
- while (val != 0)
- 3490: fe6ef4e3 bgeu t4,t1,3478 <_vprintf_core.constprop.0.isra.0+0x464>
- buf[i++] = digits[val % base];
- 3494: 405f0f3b subw t5,t5,t0
- 3498: 2f05 addiw t5,t5,1
- if (precision >= 0)
- 349a: 100bc363 bltz s7,35a0 <_vprintf_core.constprop.0.isra.0+0x58c>
- int prec_zeros = (precision > digit_len) ? precision - digit_len : 0;
- 349e: 1d7f4d63 blt t5,s7,3678 <_vprintf_core.constprop.0.isra.0+0x664>
- if (precision == 0 && val == 0)
- 34a2: 340b9163 bnez s7,37e4 <_vprintf_core.constprop.0.isra.0+0x7d0>
- 34a6: 200e0763 beqz t3,36b4 <_vprintf_core.constprop.0.isra.0+0x6a0>
- for (int i = digit_len - 1; i >= 0; i--)
- 34aa: ffff0c1b addiw s8,t5,-1
- if (spec == 'p' || (flag_hash && val != 0 && (spec == 'x' || spec == 'X')))
- 34ae: 07000693 li a3,112
- for (int i = digit_len - 1; i >= 0; i--)
- 34b2: 8662 mv a2,s8
- if (spec == 'p' || (flag_hash && val != 0 && (spec == 'x' || spec == 'X')))
- 34b4: 28dc8e63 beq s9,a3,3750 <_vprintf_core.constprop.0.isra.0+0x73c>
- 34b8: 2a051663 bnez a0,3764 <_vprintf_core.constprop.0.isra.0+0x750>
- int padding = (width > prefix_len + prec_zeros + digit_len) ? width - (prefix_len + prec_zeros + digit_len) : 0;
- 34bc: 00bf05bb addw a1,t5,a1
- 34c0: 8d52 mv s10,s4
- 34c2: 4b01 li s6,0
- char *prefix_str = NULL;
- 34c4: 4c81 li s9,0
- int padding = (width > prefix_len + prec_zeros + digit_len) ? width - (prefix_len + prec_zeros + digit_len) : 0;
- 34c6: 1085d263 bge a1,s0,35ca <_vprintf_core.constprop.0.isra.0+0x5b6>
- 34ca: 9c0d subw s0,s0,a1
- if (!flag_left && !flag_zero)
- 34cc: 100d0a63 beqz s10,35e0 <_vprintf_core.constprop.0.isra.0+0x5cc>
- if (sign_char)
- 34d0: 6782 ld a5,0(sp)
- 34d2: 10079263 bnez a5,35d6 <_vprintf_core.constprop.0.isra.0+0x5c2>
- if (prefix_str)
- 34d6: 000c8c63 beqz s9,34ee <_vprintf_core.constprop.0.isra.0+0x4da>
- _out_char(ctx, prefix_str[0]);
- 34da: 000cc583 lbu a1,0(s9)
- 34de: 8526 mv a0,s1
- 34e0: cc1fd0ef jal 11a0 <_out_char>
- _out_char(ctx, prefix_str[1]);
- 34e4: 001cc583 lbu a1,1(s9)
- 34e8: 8526 mv a0,s1
- 34ea: cb7fd0ef jal 11a0 <_out_char>
- int total_zeros = prec_zeros + ((flag_zero && !flag_left) ? padding : 0);
- 34ee: 180b0263 beqz s6,3672 <_vprintf_core.constprop.0.isra.0+0x65e>
- 34f2: 100a1863 bnez s4,3602 <_vprintf_core.constprop.0.isra.0+0x5ee>
- 34f6: 008b8bbb addw s7,s7,s0
- for (int i = 0; i < total_zeros; i++)
- 34fa: 2a0b8363 beqz s7,37a0 <_vprintf_core.constprop.0.isra.0+0x78c>
- 34fe: 4c81 li s9,0
- _out_char(ctx, '0');
- 3500: 03000593 li a1,48
- 3504: 8526 mv a0,s1
- for (int i = 0; i < total_zeros; i++)
- 3506: 2c85 addiw s9,s9,1
- _out_char(ctx, '0');
- 3508: c99fd0ef jal 11a0 <_out_char>
- for (int i = 0; i < total_zeros; i++)
- 350c: ff7c9ae3 bne s9,s7,3500 <_vprintf_core.constprop.0.isra.0+0x4ec>
- for (int i = digit_len - 1; i >= 0; i--)
- 3510: 57fd li a5,-1
- 3512: 00fc0f63 beq s8,a5,3530 <_vprintf_core.constprop.0.isra.0+0x51c>
- 3516: 01010c93 addi s9,sp,16
- 351a: 9ce2 add s9,s9,s8
- 351c: 00f10c13 addi s8,sp,15
- _out_char(ctx, num_buf[i]);
- 3520: 000cc583 lbu a1,0(s9)
- 3524: 8526 mv a0,s1
- for (int i = digit_len - 1; i >= 0; i--)
- 3526: 1cfd addi s9,s9,-1
- _out_char(ctx, num_buf[i]);
- 3528: c79fd0ef jal 11a0 <_out_char>
- for (int i = digit_len - 1; i >= 0; i--)
- 352c: ff9c1ae3 bne s8,s9,3520 <_vprintf_core.constprop.0.isra.0+0x50c>
- if (flag_left)
- 3530: 0c0a1e63 bnez s4,360c <_vprintf_core.constprop.0.isra.0+0x5f8>
- char spec = *p++;
- 3534: 6c22 ld s8,8(sp)
- 3536: be31 j 3052 <_vprintf_core.constprop.0.isra.0+0x3e>
- int padding = (width > len) ? width - len : 0;
- 3538: 4174043b subw s0,s0,s7
- if (!flag_left)
- 353c: 100a0a63 beqz s4,3650 <_vprintf_core.constprop.0.isra.0+0x63c>
- for (int i = 0; i < len; i++)
- 3540: d80b9ce3 bnez s7,32d8 <_vprintf_core.constprop.0.isra.0+0x2c4>
- for (int i = 0; i < padding; i++)
- 3544: 4a01 li s4,0
- _out_char(ctx, ' ');
- 3546: 02000593 li a1,32
- 354a: 8526 mv a0,s1
- for (int i = 0; i < padding; i++)
- 354c: 2a05 addiw s4,s4,1
- _out_char(ctx, ' ');
- 354e: c53fd0ef jal 11a0 <_out_char>
- for (int i = 0; i < padding; i++)
- 3552: ff441ae3 bne s0,s4,3546 <_vprintf_core.constprop.0.isra.0+0x532>
- const char *s = va_arg(ap, char *);
- 3556: 0c21 addi s8,s8,8
- 3558: bced j 3052 <_vprintf_core.constprop.0.isra.0+0x3e>
- for (int i = 0; i < padding; i++)
- 355a: f46d bnez s0,3544 <_vprintf_core.constprop.0.isra.0+0x530>
- const char *s = va_arg(ap, char *);
- 355c: 0c21 addi s8,s8,8
- 355e: bcd5 j 3052 <_vprintf_core.constprop.0.isra.0+0x3e>
- else if (len_mod == 1)
- 3560: 1fce8163 beq t4,t3,3742 <_vprintf_core.constprop.0.isra.0+0x72e>
- val = is_signed ? (uint64)((int64)va_arg(ap, int)) : (uint64)va_arg(ap, uint32);
- 3564: 000c2e03 lw t3,0(s8)
- 3568: 008c0793 addi a5,s8,8
- 356c: e43e sd a5,8(sp)
- int64 sval = (int64)val;
- 356e: 86f2 mv a3,t3
- if (sval < 0)
- 3570: 1406cb63 bltz a3,36c6 <_vprintf_core.constprop.0.isra.0+0x6b2>
- sign_char = '+';
- 3574: 02b00793 li a5,43
- 3578: e03e sd a5,0(sp)
- else if (flag_plus)
- 357a: e589 bnez a1,3584 <_vprintf_core.constprop.0.isra.0+0x570>
- else if (flag_space)
- 357c: 00589793 slli a5,a7,0x5
- 3580: e03e sd a5,0(sp)
- 3582: 85c6 mv a1,a7
- const char *digits = uppercase ? "0123456789ABCDEF" : "0123456789abcdef";
- 3584: 4329 li t1,10
- 3586: 00002f97 auipc t6,0x2
- 358a: ae2f8f93 addi t6,t6,-1310 # 5068 <_GLOBAL__sub_I__ZSt3cin+0xc0>
- if (val == 0)
- 358e: ee0e11e3 bnez t3,3470 <_vprintf_core.constprop.0.isra.0+0x45c>
- buf[i++] = '0';
- 3592: 03000693 li a3,48
- 3596: 00d10823 sb a3,16(sp)
- return i;
- 359a: 4f05 li t5,1
- if (precision >= 0)
- 359c: f00bd1e3 bgez s7,349e <_vprintf_core.constprop.0.isra.0+0x48a>
- for (int i = digit_len - 1; i >= 0; i--)
- 35a0: ffff0c1b addiw s8,t5,-1
- if (spec == 'p' || (flag_hash && val != 0 && (spec == 'x' || spec == 'X')))
- 35a4: 07000893 li a7,112
- if (!flag_left && !flag_zero)
- 35a8: 016a6d33 or s10,s4,s6
- int prec_zeros = (precision > digit_len) ? precision - digit_len : 0;
- 35ac: 4b81 li s7,0
- for (int i = digit_len - 1; i >= 0; i--)
- 35ae: 8662 mv a2,s8
- if (spec == 'p' || (flag_hash && val != 0 && (spec == 'x' || spec == 'X')))
- 35b0: 0d1c9f63 bne s9,a7,368e <_vprintf_core.constprop.0.isra.0+0x67a>
- prefix_str = (spec == 'X') ? "0X" : "0x";
- 35b4: 00002c97 auipc s9,0x2
- 35b8: accc8c93 addi s9,s9,-1332 # 5080 <_GLOBAL__sub_I__ZSt3cin+0xd8>
- prefix_len += 2;
- 35bc: 2589 addiw a1,a1,2
- int padding = (width > prefix_len + prec_zeros + digit_len) ? width - (prefix_len + prec_zeros + digit_len) : 0;
- 35be: 017585bb addw a1,a1,s7
- 35c2: 01e585bb addw a1,a1,t5
- 35c6: f085c2e3 blt a1,s0,34ca <_vprintf_core.constprop.0.isra.0+0x4b6>
- if (!flag_left && !flag_zero)
- 35ca: 080d0f63 beqz s10,3668 <_vprintf_core.constprop.0.isra.0+0x654>
- if (sign_char)
- 35ce: 6782 ld a5,0(sp)
- int padding = (width > prefix_len + prec_zeros + digit_len) ? width - (prefix_len + prec_zeros + digit_len) : 0;
- 35d0: 4401 li s0,0
- if (sign_char)
- 35d2: f00782e3 beqz a5,34d6 <_vprintf_core.constprop.0.isra.0+0x4c2>
- _out_char(ctx, sign_char);
- 35d6: 6582 ld a1,0(sp)
- 35d8: 8526 mv a0,s1
- 35da: bc7fd0ef jal 11a0 <_out_char>
- 35de: bde5 j 34d6 <_vprintf_core.constprop.0.isra.0+0x4c2>
- _out_char(ctx, ' ');
- 35e0: 02000593 li a1,32
- 35e4: 8526 mv a0,s1
- for (int i = 0; i < padding; i++)
- 35e6: 2d05 addiw s10,s10,1
- _out_char(ctx, ' ');
- 35e8: bb9fd0ef jal 11a0 <_out_char>
- for (int i = 0; i < padding; i++)
- 35ec: efa402e3 beq s0,s10,34d0 <_vprintf_core.constprop.0.isra.0+0x4bc>
- _out_char(ctx, ' ');
- 35f0: 02000593 li a1,32
- 35f4: 8526 mv a0,s1
- for (int i = 0; i < padding; i++)
- 35f6: 2d05 addiw s10,s10,1
- _out_char(ctx, ' ');
- 35f8: ba9fd0ef jal 11a0 <_out_char>
- for (int i = 0; i < padding; i++)
- 35fc: ffa412e3 bne s0,s10,35e0 <_vprintf_core.constprop.0.isra.0+0x5cc>
- 3600: bdc1 j 34d0 <_vprintf_core.constprop.0.isra.0+0x4bc>
- for (int i = 0; i < total_zeros; i++)
- 3602: ee0b9ee3 bnez s7,34fe <_vprintf_core.constprop.0.isra.0+0x4ea>
- for (int i = digit_len - 1; i >= 0; i--)
- 3606: 577d li a4,-1
- 3608: f0ec17e3 bne s8,a4,3516 <_vprintf_core.constprop.0.isra.0+0x502>
- for (int i = 0; i < padding; i++)
- 360c: d405 beqz s0,3534 <_vprintf_core.constprop.0.isra.0+0x520>
- 360e: 4a01 li s4,0
- _out_char(ctx, ' ');
- 3610: 02000593 li a1,32
- 3614: 8526 mv a0,s1
- for (int i = 0; i < padding; i++)
- 3616: 2a05 addiw s4,s4,1
- _out_char(ctx, ' ');
- 3618: b89fd0ef jal 11a0 <_out_char>
- for (int i = 0; i < padding; i++)
- 361c: fe8a1ae3 bne s4,s0,3610 <_vprintf_core.constprop.0.isra.0+0x5fc>
- char spec = *p++;
- 3620: 6c22 ld s8,8(sp)
- 3622: bc05 j 3052 <_vprintf_core.constprop.0.isra.0+0x3e>
- val = (uint64)va_arg(ap, void *);
- 3624: 008c0793 addi a5,s8,8
- 3628: e43e sd a5,8(sp)
- else if (len_mod == 1)
- 362a: 180e9163 bnez t4,37ac <_vprintf_core.constprop.0.isra.0+0x798>
- val = is_signed ? (uint64)((int64)va_arg(ap, int)) : (uint64)va_arg(ap, uint32);
- 362e: 000c6e03 lwu t3,0(s8)
- val = is_signed ? (uint64)va_arg(ap, int64) : va_arg(ap, uint64);
- 3632: 4581 li a1,0
- 3634: 05800c93 li s9,88
- 3638: e002 sd zero,0(sp)
- 363a: 4341 li t1,16
- const char *digits = uppercase ? "0123456789ABCDEF" : "0123456789abcdef";
- 363c: 00002f97 auipc t6,0x2
- 3640: a14f8f93 addi t6,t6,-1516 # 5050 <_GLOBAL__sub_I__ZSt3cin+0xa8>
- 3644: b525 j 346c <_vprintf_core.constprop.0.isra.0+0x458>
- int padding = (width > len) ? width - len : 0;
- 3646: ca8058e3 blez s0,32f6 <_vprintf_core.constprop.0.isra.0+0x2e2>
- if (!flag_left)
- 364a: ee0a1de3 bnez s4,3544 <_vprintf_core.constprop.0.isra.0+0x530>
- int len = 0;
- 364e: 4b81 li s7,0
- for (int i = 0; i < padding; i++)
- 3650: 4d01 li s10,0
- _out_char(ctx, ' ');
- 3652: 02000593 li a1,32
- 3656: 8526 mv a0,s1
- for (int i = 0; i < padding; i++)
- 3658: 2d05 addiw s10,s10,1
- _out_char(ctx, ' ');
- 365a: b47fd0ef jal 11a0 <_out_char>
- for (int i = 0; i < padding; i++)
- 365e: fe8d1ae3 bne s10,s0,3652 <_vprintf_core.constprop.0.isra.0+0x63e>
- for (int i = 0; i < len; i++)
- 3662: c60b9be3 bnez s7,32d8 <_vprintf_core.constprop.0.isra.0+0x2c4>
- 3666: b941 j 32f6 <_vprintf_core.constprop.0.isra.0+0x2e2>
- if (sign_char)
- 3668: 6782 ld a5,0(sp)
- 366a: 4401 li s0,0
- 366c: f7ad bnez a5,35d6 <_vprintf_core.constprop.0.isra.0+0x5c2>
- if (prefix_str)
- 366e: e60c96e3 bnez s9,34da <_vprintf_core.constprop.0.isra.0+0x4c6>
- for (int i = 0; i < total_zeros; i++)
- 3672: e80b96e3 bnez s7,34fe <_vprintf_core.constprop.0.isra.0+0x4ea>
- 3676: bd69 j 3510 <_vprintf_core.constprop.0.isra.0+0x4fc>
- int prec_zeros = (precision > digit_len) ? precision - digit_len : 0;
- 3678: 41eb8bbb subw s7,s7,t5
- 367c: 8d52 mv s10,s4
- 367e: 4b01 li s6,0
- for (int i = digit_len - 1; i >= 0; i--)
- 3680: ffff0c1b addiw s8,t5,-1
- if (spec == 'p' || (flag_hash && val != 0 && (spec == 'x' || spec == 'X')))
- 3684: 07000893 li a7,112
- for (int i = digit_len - 1; i >= 0; i--)
- 3688: 8662 mv a2,s8
- if (spec == 'p' || (flag_hash && val != 0 && (spec == 'x' || spec == 'X')))
- 368a: f31c85e3 beq s9,a7,35b4 <_vprintf_core.constprop.0.isra.0+0x5a0>
- 368e: cd09 beqz a0,36a8 <_vprintf_core.constprop.0.isra.0+0x694>
- 3690: 000e0c63 beqz t3,36a8 <_vprintf_core.constprop.0.isra.0+0x694>
- 3694: 07800513 li a0,120
- for (int i = digit_len - 1; i >= 0; i--)
- 3698: 00060c1b sext.w s8,a2
- if (spec == 'p' || (flag_hash && val != 0 && (spec == 'x' || spec == 'X')))
- 369c: f0ac8ce3 beq s9,a0,35b4 <_vprintf_core.constprop.0.isra.0+0x5a0>
- 36a0: 05800613 li a2,88
- 36a4: 12cc8463 beq s9,a2,37cc <_vprintf_core.constprop.0.isra.0+0x7b8>
- int padding = (width > prefix_len + prec_zeros + digit_len) ? width - (prefix_len + prec_zeros + digit_len) : 0;
- 36a8: 00bb85bb addw a1,s7,a1
- 36ac: 01e585bb addw a1,a1,t5
- char *prefix_str = NULL;
- 36b0: 4c81 li s9,0
- 36b2: bd11 j 34c6 <_vprintf_core.constprop.0.isra.0+0x4b2>
- if (spec == 'p' || (flag_hash && val != 0 && (spec == 'x' || spec == 'X')))
- 36b4: 07000693 li a3,112
- 36b8: 8d52 mv s10,s4
- 36ba: 4b01 li s6,0
- 36bc: 08dc8d63 beq s9,a3,3756 <_vprintf_core.constprop.0.isra.0+0x742>
- 36c0: 5c7d li s8,-1
- char *prefix_str = NULL;
- 36c2: 4c81 li s9,0
- 36c4: b509 j 34c6 <_vprintf_core.constprop.0.isra.0+0x4b2>
- sign_char = '-';
- 36c6: 02d00793 li a5,45
- val = (uint64)(-sval);
- 36ca: 40d00e33 neg t3,a3
- 36ce: 4585 li a1,1
- 36d0: 4329 li t1,10
- const char *digits = uppercase ? "0123456789ABCDEF" : "0123456789abcdef";
- 36d2: 00002f97 auipc t6,0x2
- 36d6: 996f8f93 addi t6,t6,-1642 # 5068 <_GLOBAL__sub_I__ZSt3cin+0xc0>
- sign_char = '-';
- 36da: e03e sd a5,0(sp)
- 36dc: bb51 j 3470 <_vprintf_core.constprop.0.isra.0+0x45c>
- s = "(null)";
- 36de: 00002c97 auipc s9,0x2
- 36e2: 9b2c8c93 addi s9,s9,-1614 # 5090 <_GLOBAL__sub_I__ZSt3cin+0xe8>
- 36e6: bed1 j 32ba <_vprintf_core.constprop.0.isra.0+0x2a6>
- val = is_signed ? (uint64)va_arg(ap, int64) : va_arg(ap, uint64);
- 36e8: 000c3683 ld a3,0(s8)
- 36ec: 008c0713 addi a4,s8,8
- 36f0: e43a sd a4,8(sp)
- 36f2: 8dbe mv s11,a5
- 36f4: 8e36 mv t3,a3
- if (is_signed)
- 36f6: bdad j 3570 <_vprintf_core.constprop.0.isra.0+0x55c>
- int is_signed = (spec == 'd' || spec == 'i');
- 36f8: 06900693 li a3,105
- 36fc: fedc86e3 beq s9,a3,36e8 <_vprintf_core.constprop.0.isra.0+0x6d4>
- val = (uint64)va_arg(ap, void *);
- 3700: 008c0713 addi a4,s8,8
- int base = (spec == 'x' || spec == 'X' || spec == 'p') ? 16 : 10;
- 3704: 07800693 li a3,120
- val = (uint64)va_arg(ap, void *);
- 3708: e43a sd a4,8(sp)
- int base = (spec == 'x' || spec == 'X' || spec == 'p') ? 16 : 10;
- 370a: 06dc9063 bne s9,a3,376a <_vprintf_core.constprop.0.isra.0+0x756>
- val = is_signed ? (uint64)va_arg(ap, int64) : va_arg(ap, uint64);
- 370e: 000c3e03 ld t3,0(s8)
- 3712: 8dbe mv s11,a5
- 3714: 4581 li a1,0
- 3716: e002 sd zero,0(sp)
- int base = (spec == 'x' || spec == 'X' || spec == 'p') ? 16 : 10;
- 3718: 4341 li t1,16
- const char *digits = uppercase ? "0123456789ABCDEF" : "0123456789abcdef";
- 371a: 00002f97 auipc t6,0x2
- 371e: 94ef8f93 addi t6,t6,-1714 # 5068 <_GLOBAL__sub_I__ZSt3cin+0xc0>
- 3722: b3a9 j 346c <_vprintf_core.constprop.0.isra.0+0x458>
- for (int i = 0; i < padding; i++)
- 3724: c809 beqz s0,3736 <_vprintf_core.constprop.0.isra.0+0x722>
- _out_char(ctx, ' ');
- 3726: 02000593 li a1,32
- 372a: 8526 mv a0,s1
- for (int i = 0; i < padding; i++)
- 372c: 2a05 addiw s4,s4,1
- _out_char(ctx, ' ');
- 372e: a73fd0ef jal 11a0 <_out_char>
- for (int i = 0; i < padding; i++)
- 3732: ff441ae3 bne s0,s4,3726 <_vprintf_core.constprop.0.isra.0+0x712>
- _out_char(ctx, c);
- 3736: 85e6 mv a1,s9
- 3738: 8526 mv a0,s1
- 373a: a67fd0ef jal 11a0 <_out_char>
- const char *s = va_arg(ap, char *);
- 373e: 0c21 addi s8,s8,8
- 3740: ba09 j 3052 <_vprintf_core.constprop.0.isra.0+0x3e>
- val = is_signed ? (uint64)va_arg(ap, long) : (uint64)va_arg(ap, unsigned long);
- 3742: 000c3683 ld a3,0(s8)
- 3746: 008c0793 addi a5,s8,8
- 374a: e43e sd a5,8(sp)
- 374c: 8e36 mv t3,a3
- if (is_signed)
- 374e: b50d j 3570 <_vprintf_core.constprop.0.isra.0+0x55c>
- if (spec == 'p' || (flag_hash && val != 0 && (spec == 'x' || spec == 'X')))
- 3750: 8d52 mv s10,s4
- 3752: 4b01 li s6,0
- 3754: b585 j 35b4 <_vprintf_core.constprop.0.isra.0+0x5a0>
- digit_len = 0;
- 3756: 4f01 li t5,0
- if (spec == 'p' || (flag_hash && val != 0 && (spec == 'x' || spec == 'X')))
- 3758: 5c7d li s8,-1
- prefix_str = (spec == 'X') ? "0X" : "0x";
- 375a: 00002c97 auipc s9,0x2
- 375e: 926c8c93 addi s9,s9,-1754 # 5080 <_GLOBAL__sub_I__ZSt3cin+0xd8>
- 3762: bda9 j 35bc <_vprintf_core.constprop.0.isra.0+0x5a8>
- if (spec == 'p' || (flag_hash && val != 0 && (spec == 'x' || spec == 'X')))
- 3764: 8d52 mv s10,s4
- 3766: 4b01 li s6,0
- 3768: b735 j 3694 <_vprintf_core.constprop.0.isra.0+0x680>
- int base = (spec == 'x' || spec == 'X' || spec == 'p') ? 16 : 10;
- 376a: 07000693 li a3,112
- 376e: 04dc8263 beq s9,a3,37b2 <_vprintf_core.constprop.0.isra.0+0x79e>
- val = is_signed ? (uint64)va_arg(ap, int64) : va_arg(ap, uint64);
- 3772: 000c3e03 ld t3,0(s8)
- 3776: 8dbe mv s11,a5
- 3778: 4581 li a1,0
- 377a: e002 sd zero,0(sp)
- int base = (spec == 'x' || spec == 'X' || spec == 'p') ? 16 : 10;
- 377c: 4329 li t1,10
- const char *digits = uppercase ? "0123456789ABCDEF" : "0123456789abcdef";
- 377e: 00002f97 auipc t6,0x2
- 3782: 8eaf8f93 addi t6,t6,-1814 # 5068 <_GLOBAL__sub_I__ZSt3cin+0xc0>
- 3786: b1dd j 346c <_vprintf_core.constprop.0.isra.0+0x458>
- val = is_signed ? (uint64)va_arg(ap, long) : (uint64)va_arg(ap, unsigned long);
- 3788: 000c3e03 ld t3,0(s8)
- 378c: 4581 li a1,0
- 378e: e002 sd zero,0(sp)
- int base = (spec == 'x' || spec == 'X' || spec == 'p') ? 16 : 10;
- 3790: 4341 li t1,16
- const char *digits = uppercase ? "0123456789ABCDEF" : "0123456789abcdef";
- 3792: 00002f97 auipc t6,0x2
- 3796: 8d6f8f93 addi t6,t6,-1834 # 5068 <_GLOBAL__sub_I__ZSt3cin+0xc0>
- 379a: b9c9 j 346c <_vprintf_core.constprop.0.isra.0+0x458>
- char spec = *p++;
- 379c: 8dbe mv s11,a5
- 379e: b911 j 33b2 <_vprintf_core.constprop.0.isra.0+0x39e>
- for (int i = digit_len - 1; i >= 0; i--)
- 37a0: 577d li a4,-1
- 37a2: 4401 li s0,0
- 37a4: d6ec19e3 bne s8,a4,3516 <_vprintf_core.constprop.0.isra.0+0x502>
- char spec = *p++;
- 37a8: 6c22 ld s8,8(sp)
- 37aa: b065 j 3052 <_vprintf_core.constprop.0.isra.0+0x3e>
- val = is_signed ? (uint64)va_arg(ap, long) : (uint64)va_arg(ap, unsigned long);
- 37ac: 000c3e03 ld t3,0(s8)
- const char *digits = uppercase ? "0123456789ABCDEF" : "0123456789abcdef";
- 37b0: b549 j 3632 <_vprintf_core.constprop.0.isra.0+0x61e>
- int base = (spec == 'x' || spec == 'X' || spec == 'p') ? 16 : 10;
- 37b2: 8dbe mv s11,a5
- val = (uint64)va_arg(ap, void *);
- 37b4: 000c3e03 ld t3,0(s8)
- 37b8: 4581 li a1,0
- 37ba: 07000c93 li s9,112
- 37be: e002 sd zero,0(sp)
- 37c0: 4341 li t1,16
- const char *digits = uppercase ? "0123456789ABCDEF" : "0123456789abcdef";
- 37c2: 00002f97 auipc t6,0x2
- 37c6: 8a6f8f93 addi t6,t6,-1882 # 5068 <_GLOBAL__sub_I__ZSt3cin+0xc0>
- 37ca: b14d j 346c <_vprintf_core.constprop.0.isra.0+0x458>
- prefix_str = (spec == 'X') ? "0X" : "0x";
- 37cc: 00002c97 auipc s9,0x2
- 37d0: 8bcc8c93 addi s9,s9,-1860 # 5088 <_GLOBAL__sub_I__ZSt3cin+0xe0>
- 37d4: b3e5 j 35bc <_vprintf_core.constprop.0.isra.0+0x5a8>
- val = (uint64)va_arg(ap, void *);
- 37d6: 008c0713 addi a4,s8,8
- val = is_signed ? (uint64)va_arg(ap, int64) : va_arg(ap, uint64);
- 37da: 000c3e03 ld t3,0(s8)
- val = (uint64)va_arg(ap, void *);
- 37de: e43a sd a4,8(sp)
- val = is_signed ? (uint64)va_arg(ap, int64) : va_arg(ap, uint64);
- 37e0: 8dbe mv s11,a5
- 37e2: bd81 j 3632 <_vprintf_core.constprop.0.isra.0+0x61e>
- 37e4: 8d52 mv s10,s4
- 37e6: 4b01 li s6,0
- 37e8: 4b81 li s7,0
- 37ea: bd59 j 3680 <_vprintf_core.constprop.0.isra.0+0x66c>
- int base = (spec == 'x' || spec == 'X' || spec == 'p') ? 16 : 10;
- 37ec: 07000693 li a3,112
- 37f0: fcdc82e3 beq s9,a3,37b4 <_vprintf_core.constprop.0.isra.0+0x7a0>
- else if (len_mod == 1)
- 37f4: 01ce8c63 beq t4,t3,380c <_vprintf_core.constprop.0.isra.0+0x7f8>
- val = is_signed ? (uint64)((int64)va_arg(ap, int)) : (uint64)va_arg(ap, uint32);
- 37f8: 000c6e03 lwu t3,0(s8)
- const char *digits = uppercase ? "0123456789ABCDEF" : "0123456789abcdef";
- 37fc: 4581 li a1,0
- 37fe: e002 sd zero,0(sp)
- 3800: 4329 li t1,10
- 3802: 00002f97 auipc t6,0x2
- 3806: 866f8f93 addi t6,t6,-1946 # 5068 <_GLOBAL__sub_I__ZSt3cin+0xc0>
- 380a: b18d j 346c <_vprintf_core.constprop.0.isra.0+0x458>
- val = is_signed ? (uint64)va_arg(ap, long) : (uint64)va_arg(ap, unsigned long);
- 380c: 000c3e03 ld t3,0(s8)
- if (is_signed)
- 3810: b7f5 j 37fc <_vprintf_core.constprop.0.isra.0+0x7e8>
-
-0000000000003812 <vsnprintf>:
-{
- 3812: 7139 addi sp,sp,-64
- 3814: f822 sd s0,48(sp)
- 3816: f426 sd s1,40(sp)
- 3818: 842e mv s0,a1
- 381a: 84aa mv s1,a0
- 381c: 85b2 mv a1,a2
- _vprintf_core(&ctx, format, ap);
- 381e: 850a mv a0,sp
- 3820: 8636 mv a2,a3
-{
- 3822: fc06 sd ra,56(sp)
- ctx.buf = str;
- 3824: e026 sd s1,0(sp)
- ctx.limit = size;
- 3826: e422 sd s0,8(sp)
- ctx.written = 0;
- 3828: e802 sd zero,16(sp)
- ctx.stream = NULL;
- 382a: ec02 sd zero,24(sp)
- _vprintf_core(&ctx, format, ap);
- 382c: fe8ff0ef jal 3014 <_vprintf_core.constprop.0.isra.0>
- if (ctx.written < size)
- 3830: 6542 ld a0,16(sp)
- if (size > 0)
- 3832: c411 beqz s0,383e <vsnprintf+0x2c>
- if (ctx.written < size)
- 3834: 00857b63 bgeu a0,s0,384a <vsnprintf+0x38>
- str[ctx.written] = '\0';
- 3838: 94aa add s1,s1,a0
- 383a: 00048023 sb zero,0(s1)
-}
- 383e: 70e2 ld ra,56(sp)
- 3840: 7442 ld s0,48(sp)
- 3842: 74a2 ld s1,40(sp)
- 3844: 2501 sext.w a0,a0
- 3846: 6121 addi sp,sp,64
- 3848: 8082 ret
- str[size - 1] = '\0';
- 384a: 94a2 add s1,s1,s0
- 384c: fe048fa3 sb zero,-1(s1)
-}
- 3850: 70e2 ld ra,56(sp)
- 3852: 7442 ld s0,48(sp)
- 3854: 74a2 ld s1,40(sp)
- 3856: 2501 sext.w a0,a0
- 3858: 6121 addi sp,sp,64
- 385a: 8082 ret
-
-000000000000385c <snprintf>:
-{
- 385c: 7119 addi sp,sp,-128
- 385e: e0a2 sd s0,64(sp)
- 3860: fc26 sd s1,56(sp)
- 3862: 842e mv s0,a1
- 3864: 84aa mv s1,a0
- 3866: 85b2 mv a1,a2
- _vprintf_core(&ctx, format, ap);
- 3868: 0808 addi a0,sp,16
- va_start(ap, format);
- 386a: 08b0 addi a2,sp,88
-{
- 386c: e486 sd ra,72(sp)
- 386e: ecb6 sd a3,88(sp)
- 3870: f0ba sd a4,96(sp)
- 3872: f4be sd a5,104(sp)
- 3874: f8c2 sd a6,112(sp)
- 3876: fcc6 sd a7,120(sp)
- va_start(ap, format);
- 3878: e432 sd a2,8(sp)
- ctx.buf = str;
- 387a: e826 sd s1,16(sp)
- ctx.limit = size;
- 387c: ec22 sd s0,24(sp)
- ctx.written = 0;
- 387e: f002 sd zero,32(sp)
- ctx.stream = NULL;
- 3880: f402 sd zero,40(sp)
- _vprintf_core(&ctx, format, ap);
- 3882: f92ff0ef jal 3014 <_vprintf_core.constprop.0.isra.0>
- if (ctx.written < size)
- 3886: 7502 ld a0,32(sp)
- if (size > 0)
- 3888: c411 beqz s0,3894 <snprintf+0x38>
- if (ctx.written < size)
- 388a: 00857b63 bgeu a0,s0,38a0 <snprintf+0x44>
- str[ctx.written] = '\0';
- 388e: 94aa add s1,s1,a0
- 3890: 00048023 sb zero,0(s1)
-}
- 3894: 60a6 ld ra,72(sp)
- 3896: 6406 ld s0,64(sp)
- 3898: 74e2 ld s1,56(sp)
- 389a: 2501 sext.w a0,a0
- 389c: 6109 addi sp,sp,128
- 389e: 8082 ret
- str[size - 1] = '\0';
- 38a0: 94a2 add s1,s1,s0
- 38a2: fe048fa3 sb zero,-1(s1)
-}
- 38a6: 60a6 ld ra,72(sp)
- 38a8: 6406 ld s0,64(sp)
- 38aa: 74e2 ld s1,56(sp)
- 38ac: 2501 sext.w a0,a0
- 38ae: 6109 addi sp,sp,128
- 38b0: 8082 ret
-
-00000000000038b2 <printf>:
-{
- 38b2: 7119 addi sp,sp,-128
- va_start(ap, format);
- 38b4: 04810313 addi t1,sp,72
-{
- 38b8: e4ae sd a1,72(sp)
- 38ba: e8b2 sd a2,80(sp)
- 38bc: f4be sd a5,104(sp)
- _vprintf_core(&ctx, format, ap);
- 38be: 85aa mv a1,a0
- ctx.stream = stdout;
- 38c0: 00004797 auipc a5,0x4
- 38c4: da07b783 ld a5,-608(a5) # 7660 <stdout>
- _vprintf_core(&ctx, format, ap);
- 38c8: 0808 addi a0,sp,16
- 38ca: 861a mv a2,t1
-{
- 38cc: fc06 sd ra,56(sp)
- 38ce: ecb6 sd a3,88(sp)
- 38d0: f0ba sd a4,96(sp)
- 38d2: f8c2 sd a6,112(sp)
- 38d4: fcc6 sd a7,120(sp)
- va_start(ap, format);
- 38d6: e41a sd t1,8(sp)
- ctx.buf = NULL;
- 38d8: e802 sd zero,16(sp)
- ctx.limit = 0;
- 38da: ec02 sd zero,24(sp)
- ctx.written = 0;
- 38dc: f002 sd zero,32(sp)
- ctx.stream = stdout;
- 38de: f43e sd a5,40(sp)
- _vprintf_core(&ctx, format, ap);
- 38e0: f34ff0ef jal 3014 <_vprintf_core.constprop.0.isra.0>
-}
- 38e4: 70e2 ld ra,56(sp)
- 38e6: 5502 lw a0,32(sp)
- 38e8: 6109 addi sp,sp,128
- 38ea: 8082 ret
-
-00000000000038ec <sscanf>:
-{
- 38ec: 7159 addi sp,sp,-112
- va_start(ap, format);
- 38ee: 04010e13 addi t3,sp,64
-{
- 38f2: 8eaa mv t4,a0
- ctx.fd = -1;
- 38f4: 537d li t1,-1
-{
- 38f6: e0b2 sd a2,64(sp)
- int ret = _vscanf_core(&ctx, format, ap);
- 38f8: 0808 addi a0,sp,16
- 38fa: 8672 mv a2,t3
-{
- 38fc: fc06 sd ra,56(sp)
- 38fe: e4b6 sd a3,72(sp)
- 3900: e8ba sd a4,80(sp)
- 3902: ecbe sd a5,88(sp)
- 3904: f0c2 sd a6,96(sp)
- 3906: f4c6 sd a7,104(sp)
- va_start(ap, format);
- 3908: e472 sd t3,8(sp)
- ctx.buf = str;
- 390a: e876 sd t4,16(sp)
- ctx.fd = -1;
- 390c: cc1a sw t1,24(sp)
- ctx.pos = 0;
- 390e: f002 sd zero,32(sp)
- ctx.ungotten = -1;
- 3910: d41a sw t1,40(sp)
- int ret = _vscanf_core(&ctx, format, ap);
- 3912: 81efd0ef jal 930 <_vscanf_core.constprop.0>
-}
- 3916: 70e2 ld ra,56(sp)
- 3918: 6165 addi sp,sp,112
- 391a: 8082 ret
-
-000000000000391c <scanf>:
-{
- 391c: 7119 addi sp,sp,-128
- va_start(ap, format);
- 391e: 04810313 addi t1,sp,72
-{
- 3922: e4ae sd a1,72(sp)
- 3924: e8b2 sd a2,80(sp)
- 3926: f4be sd a5,104(sp)
- int ret = _vscanf_core(&ctx, format, ap);
- 3928: 85aa mv a1,a0
- ctx.ungotten = -1;
- 392a: 57fd li a5,-1
- int ret = _vscanf_core(&ctx, format, ap);
- 392c: 0808 addi a0,sp,16
- 392e: 861a mv a2,t1
-{
- 3930: fc06 sd ra,56(sp)
- 3932: ecb6 sd a3,88(sp)
- 3934: f0ba sd a4,96(sp)
- 3936: f8c2 sd a6,112(sp)
- 3938: fcc6 sd a7,120(sp)
- va_start(ap, format);
- 393a: e41a sd t1,8(sp)
- ctx.buf = NULL;
- 393c: e802 sd zero,16(sp)
- ctx.fd = STDIN_FD;
- 393e: cc02 sw zero,24(sp)
- ctx.pos = 0;
- 3940: f002 sd zero,32(sp)
- ctx.ungotten = -1;
- 3942: d43e sw a5,40(sp)
- int ret = _vscanf_core(&ctx, format, ap);
- 3944: fedfc0ef jal 930 <_vscanf_core.constprop.0>
-}
- 3948: 70e2 ld ra,56(sp)
- 394a: 6109 addi sp,sp,128
- 394c: 8082 ret
-
-000000000000394e <fopen>:
-{
- 394e: 1101 addi sp,sp,-32
- 3950: e426 sd s1,8(sp)
- 3952: 84ae mv s1,a1
- 3954: e04a sd s2,0(sp)
- if (strcmp(mode, "r") == 0)
- 3956: 00001597 auipc a1,0x1
- 395a: 75258593 addi a1,a1,1874 # 50a8 <_GLOBAL__sub_I__ZSt3cin+0x100>
-{
- 395e: 892a mv s2,a0
- if (strcmp(mode, "r") == 0)
- 3960: 8526 mv a0,s1
-{
- 3962: e822 sd s0,16(sp)
- 3964: ec06 sd ra,24(sp)
- if (strcmp(mode, "r") == 0)
- 3966: 298010ef jal 4bfe <strcmp>
- 396a: 842a mv s0,a0
- 396c: c919 beqz a0,3982 <fopen+0x34>
- else if (strcmp(mode, "w") == 0)
- 396e: 00001597 auipc a1,0x1
- 3972: 74258593 addi a1,a1,1858 # 50b0 <_GLOBAL__sub_I__ZSt3cin+0x108>
- 3976: 8526 mv a0,s1
- 3978: 286010ef jal 4bfe <strcmp>
- flags = O_WRONLY | O_CREAT | O_TRUNC;
- 397c: 24100413 li s0,577
- else if (strcmp(mode, "w") == 0)
- 3980: ed39 bnez a0,39de <fopen+0x90>
- int64 fd = open(filename, flags);
- 3982: 85a2 mv a1,s0
- 3984: 854a mv a0,s2
- 3986: f42fc0ef jal c8 <open>
- 398a: 84aa mv s1,a0
- if (fd < 0)
- 398c: 06054c63 bltz a0,3a04 <fopen+0xb6>
- FILE *f = (FILE *)malloc(sizeof(FILE));
- 3990: 42000513 li a0,1056
- 3994: 2f3000ef jal 4486 <malloc>
- 3998: 892a mv s2,a0
- if (!f)
- 399a: c53d beqz a0,3a08 <fopen+0xba>
- memset(f, 0, sizeof(FILE));
- 399c: 42000613 li a2,1056
- 39a0: 4581 li a1,0
- 39a2: 0ee010ef jal 4a90 <memset>
- if (fd == 1)
- 39a6: 4785 li a5,1
- f->fd = (int)fd;
- 39a8: 00992023 sw s1,0(s2)
- f->flags = flags;
- 39ac: 00892223 sw s0,4(s2)
- if (fd == 1)
- 39b0: 00f48e63 beq s1,a5,39cc <fopen+0x7e>
- else if (fd == 2)
- 39b4: 4789 li a5,2
- 39b6: 00f48b63 beq s1,a5,39cc <fopen+0x7e>
- f->buf_mode = 0;
- 39ba: 40092e23 sw zero,1052(s2)
-}
- 39be: 60e2 ld ra,24(sp)
- 39c0: 6442 ld s0,16(sp)
- 39c2: 64a2 ld s1,8(sp)
- 39c4: 854a mv a0,s2
- 39c6: 6902 ld s2,0(sp)
- 39c8: 6105 addi sp,sp,32
- 39ca: 8082 ret
- 39cc: 60e2 ld ra,24(sp)
- 39ce: 6442 ld s0,16(sp)
- f->buf_mode = 2;
- 39d0: 40992e23 sw s1,1052(s2)
-}
- 39d4: 854a mv a0,s2
- 39d6: 64a2 ld s1,8(sp)
- 39d8: 6902 ld s2,0(sp)
- 39da: 6105 addi sp,sp,32
- 39dc: 8082 ret
- else if (strcmp(mode, "a") == 0)
- 39de: 00001597 auipc a1,0x1
- 39e2: 6da58593 addi a1,a1,1754 # 50b8 <_GLOBAL__sub_I__ZSt3cin+0x110>
- 39e6: 8526 mv a0,s1
- 39e8: 216010ef jal 4bfe <strcmp>
- flags = O_WRONLY | O_CREAT | O_APPEND;
- 39ec: 44100413 li s0,1089
- else if (strcmp(mode, "a") == 0)
- 39f0: d949 beqz a0,3982 <fopen+0x34>
- else if (strcmp(mode, "r+") == 0)
- 39f2: 00001597 auipc a1,0x1
- 39f6: 6ce58593 addi a1,a1,1742 # 50c0 <_GLOBAL__sub_I__ZSt3cin+0x118>
- 39fa: 8526 mv a0,s1
- 39fc: 202010ef jal 4bfe <strcmp>
- flags = O_RDWR;
- 3a00: 4409 li s0,2
- else if (strcmp(mode, "r+") == 0)
- 3a02: d141 beqz a0,3982 <fopen+0x34>
- return NULL;
- 3a04: 4901 li s2,0
- 3a06: bf65 j 39be <fopen+0x70>
- close(fd);
- 3a08: 8526 mv a0,s1
- 3a0a: ea6fc0ef jal b0 <close>
- return NULL;
- 3a0e: 4901 li s2,0
- 3a10: b77d j 39be <fopen+0x70>
-
-0000000000003a12 <fclose>:
- if (!stream)
- 3a12: cd29 beqz a0,3a6c <fclose+0x5a>
- if (stream->buf_write_pos > 0)
- 3a14: 41052603 lw a2,1040(a0)
-{
- 3a18: 1141 addi sp,sp,-16
- 3a1a: e022 sd s0,0(sp)
- 3a1c: e406 sd ra,8(sp)
- 3a1e: 842a mv s0,a0
- if (stream->buf_write_pos > 0)
- 3a20: 02c04a63 bgtz a2,3a54 <fclose+0x42>
- if (stream != stdin && stream != stdout && stream != stderr)
- 3a24: 00004797 auipc a5,0x4
- 3a28: c3c78793 addi a5,a5,-964 # 7660 <stdout>
- 3a2c: 6798 ld a4,8(a5)
- 3a2e: 00870e63 beq a4,s0,3a4a <fclose+0x38>
- 3a32: 6398 ld a4,0(a5)
- 3a34: 00870b63 beq a4,s0,3a4a <fclose+0x38>
- 3a38: 6b9c ld a5,16(a5)
- 3a3a: 00878863 beq a5,s0,3a4a <fclose+0x38>
- close(stream->fd);
- 3a3e: 4008 lw a0,0(s0)
- 3a40: e70fc0ef jal b0 <close>
- free(stream);
- 3a44: 8522 mv a0,s0
- 3a46: 1cb000ef jal 4410 <free>
-}
- 3a4a: 60a2 ld ra,8(sp)
- 3a4c: 6402 ld s0,0(sp)
- return 0;
- 3a4e: 4501 li a0,0
-}
- 3a50: 0141 addi sp,sp,16
- 3a52: 8082 ret
- int64 ret = write(stream->fd, stream->buffer, stream->buf_write_pos);
- 3a54: 4108 lw a0,0(a0)
- 3a56: 01040593 addi a1,s0,16
- 3a5a: e4efc0ef jal a8 <write>
- if (ret < stream->buf_write_pos)
- 3a5e: 41042783 lw a5,1040(s0)
- 3a62: 00f54763 blt a0,a5,3a70 <fclose+0x5e>
- stream->buf_write_pos = 0;
- 3a66: 40042823 sw zero,1040(s0)
- 3a6a: bf6d j 3a24 <fclose+0x12>
- return -1;
- 3a6c: 557d li a0,-1
-}
- 3a6e: 8082 ret
- stream->error = 1;
- 3a70: 4785 li a5,1
- 3a72: c41c sw a5,8(s0)
- stream->buf_write_pos = 0;
- 3a74: 40042823 sw zero,1040(s0)
- return EOF;
- 3a78: b775 j 3a24 <fclose+0x12>
-
-0000000000003a7a <fflush>:
- if (!stream)
- 3a7a: c121 beqz a0,3aba <fflush+0x40>
- if (stream->buf_write_pos > 0)
- 3a7c: 41052603 lw a2,1040(a0)
-{
- 3a80: 1141 addi sp,sp,-16
- 3a82: e022 sd s0,0(sp)
- 3a84: e406 sd ra,8(sp)
- 3a86: 842a mv s0,a0
- if (stream->buf_write_pos > 0)
- 3a88: 00c04763 bgtz a2,3a96 <fflush+0x1c>
- return 0;
- 3a8c: 4501 li a0,0
-}
- 3a8e: 60a2 ld ra,8(sp)
- 3a90: 6402 ld s0,0(sp)
- 3a92: 0141 addi sp,sp,16
- 3a94: 8082 ret
- int64 ret = write(stream->fd, stream->buffer, stream->buf_write_pos);
- 3a96: 4108 lw a0,0(a0)
- 3a98: 01040593 addi a1,s0,16
- 3a9c: e0cfc0ef jal a8 <write>
- if (ret < stream->buf_write_pos)
- 3aa0: 41042783 lw a5,1040(s0)
- 3aa4: 00f54563 blt a0,a5,3aae <fflush+0x34>
- stream->buf_write_pos = 0;
- 3aa8: 40042823 sw zero,1040(s0)
- 3aac: b7c5 j 3a8c <fflush+0x12>
- stream->error = 1;
- 3aae: 4785 li a5,1
- 3ab0: c41c sw a5,8(s0)
- stream->buf_write_pos = 0;
- 3ab2: 40042823 sw zero,1040(s0)
- return EOF;
- 3ab6: 557d li a0,-1
- 3ab8: bfd9 j 3a8e <fflush+0x14>
- 3aba: 557d li a0,-1
-}
- 3abc: 8082 ret
-
-0000000000003abe <fprintf>:
-{
- 3abe: 7159 addi sp,sp,-112
- 3ac0: fc06 sd ra,56(sp)
- 3ac2: e0b2 sd a2,64(sp)
- 3ac4: e4b6 sd a3,72(sp)
- 3ac6: e8ba sd a4,80(sp)
- 3ac8: ecbe sd a5,88(sp)
- 3aca: f0c2 sd a6,96(sp)
- 3acc: f4c6 sd a7,104(sp)
- if (!stream)
- 3ace: cd19 beqz a0,3aec <fprintf+0x2e>
- va_start(ap, format);
- 3ad0: 832a mv t1,a0
- 3ad2: 0090 addi a2,sp,64
- _vprintf_core(&ctx, format, ap);
- 3ad4: 0808 addi a0,sp,16
- va_start(ap, format);
- 3ad6: e432 sd a2,8(sp)
- ctx.buf = NULL;
- 3ad8: e802 sd zero,16(sp)
- ctx.limit = 0;
- 3ada: ec02 sd zero,24(sp)
- ctx.written = 0;
- 3adc: f002 sd zero,32(sp)
- ctx.stream = stream;
- 3ade: f41a sd t1,40(sp)
- _vprintf_core(&ctx, format, ap);
- 3ae0: d34ff0ef jal 3014 <_vprintf_core.constprop.0.isra.0>
- return (int)ctx.written;
- 3ae4: 5502 lw a0,32(sp)
-}
- 3ae6: 70e2 ld ra,56(sp)
- 3ae8: 6165 addi sp,sp,112
- 3aea: 8082 ret
- return -1;
- 3aec: 557d li a0,-1
- 3aee: bfe5 j 3ae6 <fprintf+0x28>
-
-0000000000003af0 <fscanf>:
-{
- 3af0: 7159 addi sp,sp,-112
- 3af2: fc06 sd ra,56(sp)
- 3af4: e0b2 sd a2,64(sp)
- 3af6: e4b6 sd a3,72(sp)
- 3af8: e8ba sd a4,80(sp)
- 3afa: ecbe sd a5,88(sp)
- 3afc: f0c2 sd a6,96(sp)
- 3afe: f4c6 sd a7,104(sp)
- if (!stream)
- 3b00: cd19 beqz a0,3b1e <fscanf+0x2e>
- ctx.fd = stream->fd;
- 3b02: 411c lw a5,0(a0)
- va_start(ap, format);
- 3b04: 0090 addi a2,sp,64
- int ret = _vscanf_core(&ctx, format, ap);
- 3b06: 0808 addi a0,sp,16
- ctx.fd = stream->fd;
- 3b08: cc3e sw a5,24(sp)
- ctx.ungotten = -1;
- 3b0a: 57fd li a5,-1
- va_start(ap, format);
- 3b0c: e432 sd a2,8(sp)
- ctx.buf = NULL;
- 3b0e: e802 sd zero,16(sp)
- ctx.pos = 0;
- 3b10: f002 sd zero,32(sp)
- ctx.ungotten = -1;
- 3b12: d43e sw a5,40(sp)
- int ret = _vscanf_core(&ctx, format, ap);
- 3b14: e1dfc0ef jal 930 <_vscanf_core.constprop.0>
-}
- 3b18: 70e2 ld ra,56(sp)
- 3b1a: 6165 addi sp,sp,112
- 3b1c: 8082 ret
- return -1;
- 3b1e: 557d li a0,-1
- 3b20: bfe5 j 3b18 <fscanf+0x28>
-
-0000000000003b22 <fputc>:
- if (!stream)
- 3b22: c1e1 beqz a1,3be2 <fputc+0xc0>
-{
- 3b24: 7179 addi sp,sp,-48
- 3b26: e84a sd s2,16(sp)
- if (stream->buf_mode == 2)
- 3b28: 41c5a903 lw s2,1052(a1)
-{
- 3b2c: f022 sd s0,32(sp)
- 3b2e: ec26 sd s1,24(sp)
- 3b30: f406 sd ra,40(sp)
- if (stream->buf_mode == 2)
- 3b32: 4789 li a5,2
- 3b34: 842e mv s0,a1
- 3b36: 84aa mv s1,a0
- char ch = (char)c;
- 3b38: 0ff57713 zext.b a4,a0
- if (stream->buf_mode == 2)
- 3b3c: 02f90963 beq s2,a5,3b6e <fputc+0x4c>
- stream->buffer[stream->buf_write_pos++] = (char)c;
- 3b40: 4105a783 lw a5,1040(a1)
- if (stream->buf_write_pos >= BUFSIZ)
- 3b44: 3ff00693 li a3,1023
- stream->buffer[stream->buf_write_pos++] = (char)c;
- 3b48: 0017861b addiw a2,a5,1
- 3b4c: 40c5a823 sw a2,1040(a1)
- 3b50: 97ae add a5,a5,a1
- 3b52: 00e78823 sb a4,16(a5)
- if (stream->buf_write_pos >= BUFSIZ)
- 3b56: 06c6c463 blt a3,a2,3bbe <fputc+0x9c>
- else if (stream->buf_mode == 1 && c == '\n')
- 3b5a: 4785 li a5,1
- 3b5c: 02f90e63 beq s2,a5,3b98 <fputc+0x76>
- return c;
- 3b60: 8526 mv a0,s1
-}
- 3b62: 70a2 ld ra,40(sp)
- 3b64: 7402 ld s0,32(sp)
- 3b66: 64e2 ld s1,24(sp)
- 3b68: 6942 ld s2,16(sp)
- 3b6a: 6145 addi sp,sp,48
- 3b6c: 8082 ret
- if (write(stream->fd, &ch, 1) != 1)
- 3b6e: 4188 lw a0,0(a1)
- 3b70: 4605 li a2,1
- 3b72: 00f10593 addi a1,sp,15
- char ch = (char)c;
- 3b76: 00e107a3 sb a4,15(sp)
- if (write(stream->fd, &ch, 1) != 1)
- 3b7a: d2efc0ef jal a8 <write>
- 3b7e: 872a mv a4,a0
- 3b80: 4785 li a5,1
- return c;
- 3b82: 8526 mv a0,s1
- if (write(stream->fd, &ch, 1) != 1)
- 3b84: fcf70fe3 beq a4,a5,3b62 <fputc+0x40>
-}
- 3b88: 70a2 ld ra,40(sp)
- stream->error = 1;
- 3b8a: c41c sw a5,8(s0)
-}
- 3b8c: 7402 ld s0,32(sp)
- 3b8e: 64e2 ld s1,24(sp)
- 3b90: 6942 ld s2,16(sp)
- return EOF;
- 3b92: 557d li a0,-1
-}
- 3b94: 6145 addi sp,sp,48
- 3b96: 8082 ret
- else if (stream->buf_mode == 1 && c == '\n')
- 3b98: 47a9 li a5,10
- 3b9a: fcf513e3 bne a0,a5,3b60 <fputc+0x3e>
- if (stream->buf_write_pos > 0)
- 3b9e: fcc051e3 blez a2,3b60 <fputc+0x3e>
- int64 ret = write(stream->fd, stream->buffer, stream->buf_write_pos);
- 3ba2: 4188 lw a0,0(a1)
- 3ba4: 05c1 addi a1,a1,16
- 3ba6: d02fc0ef jal a8 <write>
- if (ret < stream->buf_write_pos)
- 3baa: 41042783 lw a5,1040(s0)
- 3bae: 02f55063 bge a0,a5,3bce <fputc+0xac>
- stream->error = 1;
- 3bb2: 01242423 sw s2,8(s0)
- stream->buf_write_pos = 0;
- 3bb6: 40042823 sw zero,1040(s0)
- return c;
- 3bba: 8526 mv a0,s1
- 3bbc: b75d j 3b62 <fputc+0x40>
- int64 ret = write(stream->fd, stream->buffer, stream->buf_write_pos);
- 3bbe: 4188 lw a0,0(a1)
- 3bc0: 05c1 addi a1,a1,16
- 3bc2: ce6fc0ef jal a8 <write>
- if (ret < stream->buf_write_pos)
- 3bc6: 41042783 lw a5,1040(s0)
- 3bca: 00f54663 blt a0,a5,3bd6 <fputc+0xb4>
- stream->buf_write_pos = 0;
- 3bce: 40042823 sw zero,1040(s0)
- return c;
- 3bd2: 8526 mv a0,s1
- 3bd4: b779 j 3b62 <fputc+0x40>
- stream->error = 1;
- 3bd6: 4785 li a5,1
- 3bd8: c41c sw a5,8(s0)
- stream->buf_write_pos = 0;
- 3bda: 40042823 sw zero,1040(s0)
- return c;
- 3bde: 8526 mv a0,s1
- 3be0: b749 j 3b62 <fputc+0x40>
- return EOF;
- 3be2: 557d li a0,-1
-}
- 3be4: 8082 ret
-
-0000000000003be6 <fputs>:
- if (!stream)
- 3be6: c1ed beqz a1,3cc8 <fputs+0xe2>
-{
- 3be8: 711d addi sp,sp,-96
- 3bea: e4a6 sd s1,72(sp)
- 3bec: ec86 sd ra,88(sp)
- while (*s)
- 3bee: 00054703 lbu a4,0(a0)
- 3bf2: 84aa mv s1,a0
- 3bf4: cf25 beqz a4,3c6c <fputs+0x86>
- 3bf6: e8a2 sd s0,80(sp)
- 3bf8: e0ca sd s2,64(sp)
- 3bfa: fc4e sd s3,56(sp)
- 3bfc: f852 sd s4,48(sp)
- 3bfe: f456 sd s5,40(sp)
- 3c00: f05a sd s6,32(sp)
- 3c02: ec5e sd s7,24(sp)
- 3c04: 842e mv s0,a1
- if (stream->buf_mode == 2)
- 3c06: 4909 li s2,2
- if (stream->buf_write_pos >= BUFSIZ)
- 3c08: 3ff00b13 li s6,1023
- else if (stream->buf_mode == 1 && c == '\n')
- 3c0c: 4985 li s3,1
- 3c0e: 4a29 li s4,10
- int64 ret = write(stream->fd, stream->buffer, stream->buf_write_pos);
- 3c10: 01058a93 addi s5,a1,16
- if (write(stream->fd, &ch, 1) != 1)
- 3c14: 00f10b93 addi s7,sp,15
- 3c18: a031 j 3c24 <fputs+0x3e>
- else if (stream->buf_mode == 1 && c == '\n')
- 3c1a: 09368563 beq a3,s3,3ca4 <fputs+0xbe>
- while (*s)
- 3c1e: 0004c703 lbu a4,0(s1)
- 3c22: cf15 beqz a4,3c5e <fputs+0x78>
- if (stream->buf_mode == 2)
- 3c24: 41c42683 lw a3,1052(s0)
- if (fputc(*s++, stream) == EOF)
- 3c28: 0485 addi s1,s1,1
- if (stream->buf_mode == 2)
- 3c2a: 05268663 beq a3,s2,3c76 <fputs+0x90>
- stream->buffer[stream->buf_write_pos++] = (char)c;
- 3c2e: 41042783 lw a5,1040(s0)
- 3c32: 0017861b addiw a2,a5,1
- 3c36: 40c42823 sw a2,1040(s0)
- 3c3a: 97a2 add a5,a5,s0
- 3c3c: 00e78823 sb a4,16(a5)
- if (stream->buf_write_pos >= BUFSIZ)
- 3c40: fccb5de3 bge s6,a2,3c1a <fputs+0x34>
- int64 ret = write(stream->fd, stream->buffer, stream->buf_write_pos);
- 3c44: 4008 lw a0,0(s0)
- 3c46: 85d6 mv a1,s5
- 3c48: c60fc0ef jal a8 <write>
- if (ret < stream->buf_write_pos)
- 3c4c: 41042783 lw a5,1040(s0)
- 3c50: 06f54763 blt a0,a5,3cbe <fputs+0xd8>
- stream->buf_write_pos = 0;
- 3c54: 40042823 sw zero,1040(s0)
- while (*s)
- 3c58: 0004c703 lbu a4,0(s1)
- 3c5c: f761 bnez a4,3c24 <fputs+0x3e>
- 3c5e: 6446 ld s0,80(sp)
- 3c60: 6906 ld s2,64(sp)
- 3c62: 79e2 ld s3,56(sp)
- 3c64: 7a42 ld s4,48(sp)
- 3c66: 7aa2 ld s5,40(sp)
- 3c68: 7b02 ld s6,32(sp)
- 3c6a: 6be2 ld s7,24(sp)
-}
- 3c6c: 60e6 ld ra,88(sp)
- 3c6e: 64a6 ld s1,72(sp)
- return 0;
- 3c70: 4501 li a0,0
-}
- 3c72: 6125 addi sp,sp,96
- 3c74: 8082 ret
- if (write(stream->fd, &ch, 1) != 1)
- 3c76: 4008 lw a0,0(s0)
- 3c78: 4605 li a2,1
- 3c7a: 85de mv a1,s7
- char ch = (char)c;
- 3c7c: 00e107a3 sb a4,15(sp)
- if (write(stream->fd, &ch, 1) != 1)
- 3c80: c28fc0ef jal a8 <write>
- 3c84: f9350de3 beq a0,s3,3c1e <fputs+0x38>
- stream->error = 1;
- 3c88: 01342423 sw s3,8(s0)
-}
- 3c8c: 60e6 ld ra,88(sp)
- 3c8e: 6446 ld s0,80(sp)
- 3c90: 6906 ld s2,64(sp)
- 3c92: 79e2 ld s3,56(sp)
- 3c94: 7a42 ld s4,48(sp)
- 3c96: 7aa2 ld s5,40(sp)
- 3c98: 7b02 ld s6,32(sp)
- 3c9a: 6be2 ld s7,24(sp)
- 3c9c: 64a6 ld s1,72(sp)
- return -1;
- 3c9e: 557d li a0,-1
-}
- 3ca0: 6125 addi sp,sp,96
- 3ca2: 8082 ret
- else if (stream->buf_mode == 1 && c == '\n')
- 3ca4: f7471de3 bne a4,s4,3c1e <fputs+0x38>
- if (stream->buf_write_pos > 0)
- 3ca8: f6c05be3 blez a2,3c1e <fputs+0x38>
- int64 ret = write(stream->fd, stream->buffer, stream->buf_write_pos);
- 3cac: 4008 lw a0,0(s0)
- 3cae: 01040593 addi a1,s0,16
- 3cb2: bf6fc0ef jal a8 <write>
- if (ret < stream->buf_write_pos)
- 3cb6: 41042783 lw a5,1040(s0)
- 3cba: f8f55de3 bge a0,a5,3c54 <fputs+0x6e>
- stream->error = 1;
- 3cbe: 4785 li a5,1
- 3cc0: c41c sw a5,8(s0)
- stream->buf_write_pos = 0;
- 3cc2: 40042823 sw zero,1040(s0)
- return EOF;
- 3cc6: bfa1 j 3c1e <fputs+0x38>
- return -1;
- 3cc8: 557d li a0,-1
-}
- 3cca: 8082 ret
-
-0000000000003ccc <fgetc>:
- if (!stream)
- 3ccc: c949 beqz a0,3d5e <fgetc+0x92>
- if (stream->buf_write_pos > 0)
- 3cce: 41052603 lw a2,1040(a0)
-{
- 3cd2: 1141 addi sp,sp,-16
- 3cd4: e022 sd s0,0(sp)
- 3cd6: e406 sd ra,8(sp)
- 3cd8: 842a mv s0,a0
- if (stream->buf_write_pos > 0)
- 3cda: 04c04863 bgtz a2,3d2a <fgetc+0x5e>
- if (stream->buf_read_pos < stream->buf_read_cnt)
- 3cde: 41442783 lw a5,1044(s0)
- 3ce2: 41842703 lw a4,1048(s0)
- 3ce6: 00e7dd63 bge a5,a4,3d00 <fgetc+0x34>
- return (unsigned char)stream->buffer[stream->buf_read_pos++];
- 3cea: 0017871b addiw a4,a5,1
- 3cee: 40e42a23 sw a4,1044(s0)
- 3cf2: 943e add s0,s0,a5
- 3cf4: 01044503 lbu a0,16(s0)
-}
- 3cf8: 60a2 ld ra,8(sp)
- 3cfa: 6402 ld s0,0(sp)
- 3cfc: 0141 addi sp,sp,16
- 3cfe: 8082 ret
- int64 ret = read(stream->fd, stream->buffer, BUFSIZ);
- 3d00: 4008 lw a0,0(s0)
- 3d02: 40000613 li a2,1024
- 3d06: 01040593 addi a1,s0,16
- 3d0a: b96fc0ef jal a0 <read>
- 3d0e: 87aa mv a5,a0
- if (ret <= 0)
- 3d10: 02a05e63 blez a0,3d4c <fgetc+0x80>
- stream->buf_read_cnt = (int)ret;
- 3d14: 40f42c23 sw a5,1048(s0)
- return (unsigned char)stream->buffer[stream->buf_read_pos++];
- 3d18: 4785 li a5,1
- 3d1a: 01044503 lbu a0,16(s0)
-}
- 3d1e: 60a2 ld ra,8(sp)
- return (unsigned char)stream->buffer[stream->buf_read_pos++];
- 3d20: 40f42a23 sw a5,1044(s0)
-}
- 3d24: 6402 ld s0,0(sp)
- 3d26: 0141 addi sp,sp,16
- 3d28: 8082 ret
- int64 ret = write(stream->fd, stream->buffer, stream->buf_write_pos);
- 3d2a: 4108 lw a0,0(a0)
- 3d2c: 01040593 addi a1,s0,16
- 3d30: b78fc0ef jal a8 <write>
- if (ret < stream->buf_write_pos)
- 3d34: 41042783 lw a5,1040(s0)
- 3d38: 00f54563 blt a0,a5,3d42 <fgetc+0x76>
- stream->buf_write_pos = 0;
- 3d3c: 40042823 sw zero,1040(s0)
- 3d40: bf79 j 3cde <fgetc+0x12>
- stream->error = 1;
- 3d42: 4785 li a5,1
- 3d44: c41c sw a5,8(s0)
- stream->buf_write_pos = 0;
- 3d46: 40042823 sw zero,1040(s0)
- return EOF;
- 3d4a: bf51 j 3cde <fgetc+0x12>
- if (ret == 0)
- 3d4c: e509 bnez a0,3d56 <fgetc+0x8a>
- stream->eof = 1;
- 3d4e: 4785 li a5,1
- 3d50: c45c sw a5,12(s0)
- return EOF;
- 3d52: 557d li a0,-1
- 3d54: b755 j 3cf8 <fgetc+0x2c>
- stream->error = 1;
- 3d56: 4785 li a5,1
- 3d58: c41c sw a5,8(s0)
- return EOF;
- 3d5a: 557d li a0,-1
- 3d5c: bf71 j 3cf8 <fgetc+0x2c>
- 3d5e: 557d li a0,-1
-}
- 3d60: 8082 ret
-
-0000000000003d62 <fgets>:
- if (!stream || n <= 0)
- 3d62: ce5d beqz a2,3e20 <fgets+0xbe>
- 3d64: 0ab05e63 blez a1,3e20 <fgets+0xbe>
-{
- 3d68: 715d addi sp,sp,-80
- 3d6a: e0a2 sd s0,64(sp)
- 3d6c: fc26 sd s1,56(sp)
- 3d6e: f84a sd s2,48(sp)
- 3d70: f44e sd s3,40(sp)
- 3d72: f052 sd s4,32(sp)
- 3d74: ec56 sd s5,24(sp)
- 3d76: e85a sd s6,16(sp)
- 3d78: e45e sd s7,8(sp)
- 3d7a: e486 sd ra,72(sp)
- 3d7c: 8432 mv s0,a2
- 3d7e: 8aaa mv s5,a0
- 3d80: 892a mv s2,a0
- 3d82: fff58b9b addiw s7,a1,-1
- int i = 0, c;
- 3d86: 4481 li s1,0
- int64 ret = write(stream->fd, stream->buffer, stream->buf_write_pos);
- 3d88: 01060993 addi s3,a2,16
- return (unsigned char)stream->buffer[stream->buf_read_pos++];
- 3d8c: 4b05 li s6,1
- if (c == '\n')
- 3d8e: 4a29 li s4,10
- while (i < n - 1)
- 3d90: 05748163 beq s1,s7,3dd2 <fgets+0x70>
- if (stream->buf_write_pos > 0)
- 3d94: 41042603 lw a2,1040(s0)
- int64 ret = write(stream->fd, stream->buffer, stream->buf_write_pos);
- 3d98: 85ce mv a1,s3
- if (stream->buf_write_pos > 0)
- 3d9a: 06c04963 bgtz a2,3e0c <fgets+0xaa>
- if (stream->buf_read_pos < stream->buf_read_cnt)
- 3d9e: 41442783 lw a5,1044(s0)
- 3da2: 41842703 lw a4,1048(s0)
- int64 ret = read(stream->fd, stream->buffer, BUFSIZ);
- 3da6: 40000613 li a2,1024
- return (unsigned char)stream->buffer[stream->buf_read_pos++];
- 3daa: 0017851b addiw a0,a5,1
- 3dae: 00f406b3 add a3,s0,a5
- int64 ret = read(stream->fd, stream->buffer, BUFSIZ);
- 3db2: 85ce mv a1,s3
- if (stream->buf_read_pos < stream->buf_read_cnt)
- 3db4: 02e7de63 bge a5,a4,3df0 <fgets+0x8e>
- return (unsigned char)stream->buffer[stream->buf_read_pos++];
- 3db8: 40a42a23 sw a0,1044(s0)
- 3dbc: 0106c783 lbu a5,16(a3)
- 3dc0: 0007871b sext.w a4,a5
- str[i++] = (char)c;
- 3dc4: 00f90023 sb a5,0(s2)
- 3dc8: 2485 addiw s1,s1,1
- if (c == '\n')
- 3dca: 0905 addi s2,s2,1
- 3dcc: fd4712e3 bne a4,s4,3d90 <fgets+0x2e>
- str[i++] = (char)c;
- 3dd0: 8ba6 mv s7,s1
- str[i] = '\0';
- 3dd2: 9bd6 add s7,s7,s5
- 3dd4: 000b8023 sb zero,0(s7)
- return str;
- 3dd8: 8556 mv a0,s5
-}
- 3dda: 60a6 ld ra,72(sp)
- 3ddc: 6406 ld s0,64(sp)
- 3dde: 74e2 ld s1,56(sp)
- 3de0: 7942 ld s2,48(sp)
- 3de2: 79a2 ld s3,40(sp)
- 3de4: 7a02 ld s4,32(sp)
- 3de6: 6ae2 ld s5,24(sp)
- 3de8: 6b42 ld s6,16(sp)
- 3dea: 6ba2 ld s7,8(sp)
- 3dec: 6161 addi sp,sp,80
- 3dee: 8082 ret
- int64 ret = read(stream->fd, stream->buffer, BUFSIZ);
- 3df0: 4008 lw a0,0(s0)
- 3df2: aaefc0ef jal a0 <read>
- if (ret <= 0)
- 3df6: 02a05c63 blez a0,3e2e <fgets+0xcc>
- return (unsigned char)stream->buffer[stream->buf_read_pos++];
- 3dfa: 01044783 lbu a5,16(s0)
- stream->buf_read_cnt = (int)ret;
- 3dfe: 40a42c23 sw a0,1048(s0)
- return (unsigned char)stream->buffer[stream->buf_read_pos++];
- 3e02: 41642a23 sw s6,1044(s0)
- 3e06: 0007871b sext.w a4,a5
- if (c == -1)
- 3e0a: bf6d j 3dc4 <fgets+0x62>
- int64 ret = write(stream->fd, stream->buffer, stream->buf_write_pos);
- 3e0c: 4008 lw a0,0(s0)
- 3e0e: a9afc0ef jal a8 <write>
- if (ret < stream->buf_write_pos)
- 3e12: 41042783 lw a5,1040(s0)
- 3e16: 00f54763 blt a0,a5,3e24 <fgets+0xc2>
- stream->buf_write_pos = 0;
- 3e1a: 40042823 sw zero,1040(s0)
- 3e1e: b741 j 3d9e <fgets+0x3c>
- return NULL;
- 3e20: 4501 li a0,0
-}
- 3e22: 8082 ret
- stream->error = 1;
- 3e24: 4785 li a5,1
- 3e26: c41c sw a5,8(s0)
- stream->buf_write_pos = 0;
- 3e28: 40042823 sw zero,1040(s0)
- return EOF;
- 3e2c: bf8d j 3d9e <fgets+0x3c>
- stream->eof = 1;
- 3e2e: 4785 li a5,1
- if (ret == 0)
- 3e30: e509 bnez a0,3e3a <fgets+0xd8>
- stream->eof = 1;
- 3e32: c45c sw a5,12(s0)
- if (i == 0)
- 3e34: fcd1 bnez s1,3dd0 <fgets+0x6e>
- return NULL;
- 3e36: 4501 li a0,0
- 3e38: b74d j 3dda <fgets+0x78>
- stream->error = 1;
- 3e3a: c41c sw a5,8(s0)
- if (c == -1)
- 3e3c: bfe5 j 3e34 <fgets+0xd2>
-
-0000000000003e3e <fread>:
-{
- 3e3e: 715d addi sp,sp,-80
- 3e40: e486 sd ra,72(sp)
- 3e42: f44e sd s3,40(sp)
- if (!stream || size == 0 || nmemb == 0)
- 3e44: 0e068963 beqz a3,3f36 <fread+0xf8>
- 3e48: ec56 sd s5,24(sp)
- return 0;
- 3e4a: 4981 li s3,0
- 3e4c: 8aae mv s5,a1
- if (!stream || size == 0 || nmemb == 0)
- 3e4e: c9bd beqz a1,3ec4 <fread+0x86>
- 3e50: ca35 beqz a2,3ec4 <fread+0x86>
- if (stream->buf_write_pos > 0)
- 3e52: 4106a783 lw a5,1040(a3)
- 3e56: e0a2 sd s0,64(sp)
- 3e58: f052 sd s4,32(sp)
- uint64 total_bytes = size * nmemb;
- 3e5a: 02c589b3 mul s3,a1,a2
- 3e5e: 8436 mv s0,a3
- 3e60: 8a2a mv s4,a0
- if (stream->buf_write_pos > 0)
- 3e62: 0af04d63 bgtz a5,3f1c <fread+0xde>
- while (bytes_read < total_bytes)
- 3e66: 04098d63 beqz s3,3ec0 <fread+0x82>
- 3e6a: fc26 sd s1,56(sp)
- 3e6c: e85a sd s6,16(sp)
- 3e6e: e45e sd s7,8(sp)
- 3e70: f84a sd s2,48(sp)
- 3e72: 4481 li s1,0
- if (remaining >= BUFSIZ)
- 3e74: 3ff00b13 li s6,1023
- int64 ret = read(stream->fd, stream->buffer, BUFSIZ);
- 3e78: 01040b93 addi s7,s0,16
- if (stream->buf_read_pos < stream->buf_read_cnt)
- 3e7c: 41442703 lw a4,1044(s0)
- 3e80: 41842783 lw a5,1048(s0)
- uint64 remaining = total_bytes - bytes_read;
- 3e84: 40998633 sub a2,s3,s1
- if (stream->buf_read_pos < stream->buf_read_cnt)
- 3e88: 06f74463 blt a4,a5,3ef0 <fread+0xb2>
- int64 ret = read(stream->fd, dst + bytes_read, remaining);
- 3e8c: 4008 lw a0,0(s0)
- 3e8e: 009a05b3 add a1,s4,s1
- if (remaining >= BUFSIZ)
- 3e92: 02cb7f63 bgeu s6,a2,3ed0 <fread+0x92>
- int64 ret = read(stream->fd, dst + bytes_read, remaining);
- 3e96: a0afc0ef jal a0 <read>
- if (ret <= 0)
- 3e9a: 0aa05463 blez a0,3f42 <fread+0x104>
- bytes_read += ret;
- 3e9e: 94aa add s1,s1,a0
- while (bytes_read < total_bytes)
- 3ea0: fd34eee3 bltu s1,s3,3e7c <fread+0x3e>
- return bytes_read / size;
- 3ea4: 0354d9b3 divu s3,s1,s5
- 3ea8: 6406 ld s0,64(sp)
-}
- 3eaa: 60a6 ld ra,72(sp)
- return bytes_read / size;
- 3eac: 74e2 ld s1,56(sp)
- 3eae: 7942 ld s2,48(sp)
- 3eb0: 7a02 ld s4,32(sp)
- 3eb2: 6ae2 ld s5,24(sp)
- 3eb4: 6b42 ld s6,16(sp)
- 3eb6: 6ba2 ld s7,8(sp)
-}
- 3eb8: 854e mv a0,s3
- 3eba: 79a2 ld s3,40(sp)
- 3ebc: 6161 addi sp,sp,80
- 3ebe: 8082 ret
- 3ec0: 6406 ld s0,64(sp)
- 3ec2: 7a02 ld s4,32(sp)
- 3ec4: 60a6 ld ra,72(sp)
- 3ec6: 6ae2 ld s5,24(sp)
- 3ec8: 854e mv a0,s3
- 3eca: 79a2 ld s3,40(sp)
- 3ecc: 6161 addi sp,sp,80
- 3ece: 8082 ret
- stream->buf_read_pos = 0;
- 3ed0: 40042a23 sw zero,1044(s0)
- stream->buf_read_cnt = 0;
- 3ed4: 40042c23 sw zero,1048(s0)
- int64 ret = read(stream->fd, stream->buffer, BUFSIZ);
- 3ed8: 40000613 li a2,1024
- 3edc: 85de mv a1,s7
- 3ede: 9c2fc0ef jal a0 <read>
- if (ret <= 0)
- 3ee2: 06a05063 blez a0,3f42 <fread+0x104>
- stream->buf_read_cnt = (int)ret;
- 3ee6: 40a42c23 sw a0,1048(s0)
- while (bytes_read < total_bytes)
- 3eea: f934e9e3 bltu s1,s3,3e7c <fread+0x3e>
- 3eee: bf5d j 3ea4 <fread+0x66>
- uint64 available = stream->buf_read_cnt - stream->buf_read_pos;
- 3ef0: 40e7893b subw s2,a5,a4
- memcpy(dst + bytes_read, stream->buffer + stream->buf_read_pos, to_copy);
- 3ef4: 00eb85b3 add a1,s7,a4
- 3ef8: 009a0533 add a0,s4,s1
- uint64 to_copy = (available < remaining) ? available : remaining;
- 3efc: 01267363 bgeu a2,s2,3f02 <fread+0xc4>
- 3f00: 8932 mv s2,a2
- memcpy(dst + bytes_read, stream->buffer + stream->buf_read_pos, to_copy);
- 3f02: 864a mv a2,s2
- 3f04: 3e1000ef jal 4ae4 <memcpy>
- stream->buf_read_pos += to_copy;
- 3f08: 41442783 lw a5,1044(s0)
- bytes_read += to_copy;
- 3f0c: 94ca add s1,s1,s2
- stream->buf_read_pos += to_copy;
- 3f0e: 012787bb addw a5,a5,s2
- 3f12: 40f42a23 sw a5,1044(s0)
- while (bytes_read < total_bytes)
- 3f16: f734e3e3 bltu s1,s3,3e7c <fread+0x3e>
- 3f1a: b769 j 3ea4 <fread+0x66>
- int64 ret = write(stream->fd, stream->buffer, stream->buf_write_pos);
- 3f1c: 4288 lw a0,0(a3)
- 3f1e: 863e mv a2,a5
- 3f20: 01068593 addi a1,a3,16
- 3f24: 984fc0ef jal a8 <write>
- if (ret < stream->buf_write_pos)
- 3f28: 41042783 lw a5,1040(s0)
- 3f2c: 02f54163 blt a0,a5,3f4e <fread+0x110>
- stream->buf_write_pos = 0;
- 3f30: 40042823 sw zero,1040(s0)
- 3f34: bf0d j 3e66 <fread+0x28>
-}
- 3f36: 60a6 ld ra,72(sp)
- return 0;
- 3f38: 4981 li s3,0
-}
- 3f3a: 854e mv a0,s3
- 3f3c: 79a2 ld s3,40(sp)
- 3f3e: 6161 addi sp,sp,80
- 3f40: 8082 ret
- stream->eof = 1;
- 3f42: 4785 li a5,1
- if (ret == 0)
- 3f44: e119 bnez a0,3f4a <fread+0x10c>
- stream->eof = 1;
- 3f46: c45c sw a5,12(s0)
- 3f48: bfb1 j 3ea4 <fread+0x66>
- stream->error = 1;
- 3f4a: c41c sw a5,8(s0)
- return bytes_read / size;
- 3f4c: bfa1 j 3ea4 <fread+0x66>
- stream->error = 1;
- 3f4e: 4785 li a5,1
- 3f50: c41c sw a5,8(s0)
- stream->buf_write_pos = 0;
- 3f52: 40042823 sw zero,1040(s0)
- return EOF;
- 3f56: bf01 j 3e66 <fread+0x28>
-
-0000000000003f58 <fwrite>:
-{
- 3f58: 711d addi sp,sp,-96
- 3f5a: ec86 sd ra,88(sp)
- 3f5c: e0ca sd s2,64(sp)
- if (!stream || !ptr || size == 0 || nmemb == 0)
- 3f5e: 10068063 beqz a3,405e <fwrite+0x106>
- 3f62: f456 sd s5,40(sp)
- 3f64: 8aaa mv s5,a0
- 3f66: 10050263 beqz a0,406a <fwrite+0x112>
- 3f6a: f05a sd s6,32(sp)
- return 0;
- 3f6c: 4901 li s2,0
- 3f6e: 8b2e mv s6,a1
- if (!stream || !ptr || size == 0 || nmemb == 0)
- 3f70: c1d9 beqz a1,3ff6 <fwrite+0x9e>
- 3f72: c251 beqz a2,3ff6 <fwrite+0x9e>
- if (stream->buf_mode == 2)
- 3f74: 41c6a703 lw a4,1052(a3)
- 3f78: e8a2 sd s0,80(sp)
- 3f7a: 4789 li a5,2
- uint64 total_bytes = size * nmemb;
- 3f7c: 02c58933 mul s2,a1,a2
- if (stream->buf_mode == 2)
- 3f80: 8436 mv s0,a3
- 3f82: 0ef70b63 beq a4,a5,4078 <fwrite+0x120>
- 3f86: fc4e sd s3,56(sp)
- 3f88: ec5e sd s7,24(sp)
- 3f8a: e862 sd s8,16(sp)
- uint64 bytes_written = 0;
- 3f8c: 4981 li s3,0
- 3f8e: 01068b93 addi s7,a3,16
- uint64 space_left = BUFSIZ - stream->buf_write_pos;
- 3f92: 40000c13 li s8,1024
- while (bytes_written < total_bytes)
- 3f96: 12090263 beqz s2,40ba <fwrite+0x162>
- 3f9a: e4a6 sd s1,72(sp)
- 3f9c: f852 sd s4,48(sp)
- 3f9e: e466 sd s9,8(sp)
- uint64 space_left = BUFSIZ - stream->buf_write_pos;
- 3fa0: 41042783 lw a5,1040(s0)
- uint64 remaining = total_bytes - bytes_written;
- 3fa4: 41390cb3 sub s9,s2,s3
- memcpy(stream->buffer + stream->buf_write_pos, src + bytes_written, remaining);
- 3fa8: 013a85b3 add a1,s5,s3
- uint64 space_left = BUFSIZ - stream->buf_write_pos;
- 3fac: 40fc0a3b subw s4,s8,a5
- memcpy(stream->buffer + stream->buf_write_pos, src + bytes_written, space_left);
- 3fb0: 00fb8533 add a0,s7,a5
- 3fb4: 8652 mv a2,s4
- if (remaining <= space_left)
- 3fb6: 059a6763 bltu s4,s9,4004 <fwrite+0xac>
- memcpy(stream->buffer + stream->buf_write_pos, src + bytes_written, remaining);
- 3fba: 8666 mv a2,s9
- 3fbc: 329000ef jal 4ae4 <memcpy>
- stream->buf_write_pos += remaining;
- 3fc0: 41042783 lw a5,1040(s0)
- if (stream->buf_write_pos == BUFSIZ)
- 3fc4: 40000713 li a4,1024
- stream->buf_write_pos += remaining;
- 3fc8: 019786bb addw a3,a5,s9
- 3fcc: 40d42823 sw a3,1040(s0)
- if (stream->buf_write_pos == BUFSIZ)
- 3fd0: 06e68a63 beq a3,a4,4044 <fwrite+0xec>
- return bytes_written / size;
- 3fd4: 03695933 divu s2,s2,s6
- 3fd8: 6446 ld s0,80(sp)
- 3fda: 64a6 ld s1,72(sp)
- 3fdc: 79e2 ld s3,56(sp)
- 3fde: 7a42 ld s4,48(sp)
- 3fe0: 7aa2 ld s5,40(sp)
- 3fe2: 7b02 ld s6,32(sp)
- 3fe4: 6be2 ld s7,24(sp)
- 3fe6: 6c42 ld s8,16(sp)
- 3fe8: 6ca2 ld s9,8(sp)
-}
- 3fea: 60e6 ld ra,88(sp)
- 3fec: 854a mv a0,s2
- 3fee: 6906 ld s2,64(sp)
- 3ff0: 6125 addi sp,sp,96
- 3ff2: 8082 ret
- 3ff4: 6446 ld s0,80(sp)
- 3ff6: 60e6 ld ra,88(sp)
- 3ff8: 7aa2 ld s5,40(sp)
- 3ffa: 7b02 ld s6,32(sp)
- 3ffc: 854a mv a0,s2
- 3ffe: 6906 ld s2,64(sp)
- 4000: 6125 addi sp,sp,96
- 4002: 8082 ret
- memcpy(stream->buffer + stream->buf_write_pos, src + bytes_written, space_left);
- 4004: 2e1000ef jal 4ae4 <memcpy>
- stream->buf_write_pos += space_left;
- 4008: 41042783 lw a5,1040(s0)
- int64 ret = write(stream->fd, stream->buffer, stream->buf_write_pos);
- 400c: 85de mv a1,s7
- bytes_written += space_left;
- 400e: 99d2 add s3,s3,s4
- stream->buf_write_pos += space_left;
- 4010: 00fa04bb addw s1,s4,a5
- int64 ret = write(stream->fd, stream->buffer, stream->buf_write_pos);
- 4014: 02049613 slli a2,s1,0x20
- stream->buf_write_pos += space_left;
- 4018: 40942823 sw s1,1040(s0)
- int64 ret = write(stream->fd, stream->buffer, stream->buf_write_pos);
- 401c: 9201 srli a2,a2,0x20
- if (stream->buf_write_pos > 0)
- 401e: 00904763 bgtz s1,402c <fwrite+0xd4>
- while (bytes_written < total_bytes)
- 4022: f729efe3 bltu s3,s2,3fa0 <fwrite+0x48>
- return bytes_written / size;
- 4026: 0369d933 divu s2,s3,s6
- 402a: b77d j 3fd8 <fwrite+0x80>
- int64 ret = write(stream->fd, stream->buffer, stream->buf_write_pos);
- 402c: 4008 lw a0,0(s0)
- 402e: 87afc0ef jal a8 <write>
- if (ret < stream->buf_write_pos)
- 4032: 41042783 lw a5,1040(s0)
- 4036: 08f54963 blt a0,a5,40c8 <fwrite+0x170>
- stream->buf_write_pos = 0;
- 403a: 40042823 sw zero,1040(s0)
- while (bytes_written < total_bytes)
- 403e: f729e1e3 bltu s3,s2,3fa0 <fwrite+0x48>
- 4042: b7d5 j 4026 <fwrite+0xce>
- int64 ret = write(stream->fd, stream->buffer, stream->buf_write_pos);
- 4044: 4008 lw a0,0(s0)
- 4046: 40000613 li a2,1024
- 404a: 85de mv a1,s7
- 404c: 85cfc0ef jal a8 <write>
- if (ret < stream->buf_write_pos)
- 4050: 41042783 lw a5,1040(s0)
- 4054: 08f54163 blt a0,a5,40d6 <fwrite+0x17e>
- stream->buf_write_pos = 0;
- 4058: 40042823 sw zero,1040(s0)
- 405c: bfa5 j 3fd4 <fwrite+0x7c>
-}
- 405e: 60e6 ld ra,88(sp)
- return 0;
- 4060: 4901 li s2,0
-}
- 4062: 854a mv a0,s2
- 4064: 6906 ld s2,64(sp)
- 4066: 6125 addi sp,sp,96
- 4068: 8082 ret
- 406a: 60e6 ld ra,88(sp)
- return 0;
- 406c: 4901 li s2,0
- 406e: 7aa2 ld s5,40(sp)
-}
- 4070: 854a mv a0,s2
- 4072: 6906 ld s2,64(sp)
- 4074: 6125 addi sp,sp,96
- 4076: 8082 ret
- while (bytes_written < total_bytes)
- 4078: f6090ee3 beqz s2,3ff4 <fwrite+0x9c>
- 407c: e4a6 sd s1,72(sp)
- uint64 bytes_written = 0;
- 407e: 4481 li s1,0
- 4080: a021 j 4088 <fwrite+0x130>
- bytes_written += ret;
- 4082: 94aa add s1,s1,a0
- while (bytes_written < total_bytes)
- 4084: 0324f463 bgeu s1,s2,40ac <fwrite+0x154>
- int64 ret = write(stream->fd, src + bytes_written, total_bytes - bytes_written);
- 4088: 4008 lw a0,0(s0)
- 408a: 40990633 sub a2,s2,s1
- 408e: 009a85b3 add a1,s5,s1
- 4092: 816fc0ef jal a8 <write>
- if (ret <= 0)
- 4096: fea046e3 bgtz a0,4082 <fwrite+0x12a>
- stream->error = 1;
- 409a: 4785 li a5,1
- return bytes_written / size;
- 409c: 0364d933 divu s2,s1,s6
- stream->error = 1;
- 40a0: c41c sw a5,8(s0)
- break;
- 40a2: 64a6 ld s1,72(sp)
- 40a4: 6446 ld s0,80(sp)
- 40a6: 7aa2 ld s5,40(sp)
- 40a8: 7b02 ld s6,32(sp)
- 40aa: b781 j 3fea <fwrite+0x92>
- return bytes_written / size;
- 40ac: 0364d933 divu s2,s1,s6
- 40b0: 6446 ld s0,80(sp)
- 40b2: 64a6 ld s1,72(sp)
- 40b4: 7aa2 ld s5,40(sp)
- 40b6: 7b02 ld s6,32(sp)
- 40b8: bf0d j 3fea <fwrite+0x92>
- 40ba: 6446 ld s0,80(sp)
- 40bc: 79e2 ld s3,56(sp)
- 40be: 7aa2 ld s5,40(sp)
- 40c0: 7b02 ld s6,32(sp)
- 40c2: 6be2 ld s7,24(sp)
- 40c4: 6c42 ld s8,16(sp)
- 40c6: b715 j 3fea <fwrite+0x92>
- stream->error = 1;
- 40c8: 4785 li a5,1
- 40ca: c41c sw a5,8(s0)
- stream->buf_write_pos = 0;
- 40cc: 40042823 sw zero,1040(s0)
- while (bytes_written < total_bytes)
- 40d0: ed29e8e3 bltu s3,s2,3fa0 <fwrite+0x48>
- 40d4: bf89 j 4026 <fwrite+0xce>
- stream->error = 1;
- 40d6: 4785 li a5,1
- 40d8: c41c sw a5,8(s0)
- stream->buf_write_pos = 0;
- 40da: 40042823 sw zero,1040(s0)
- return EOF;
- 40de: bddd j 3fd4 <fwrite+0x7c>
-
-00000000000040e0 <fseek>:
- if (!stream)
- 40e0: c925 beqz a0,4150 <fseek+0x70>
-{
- 40e2: 1101 addi sp,sp,-32
- 40e4: e04a sd s2,0(sp)
- 40e6: 8932 mv s2,a2
- if (stream->buf_write_pos > 0)
- 40e8: 41052603 lw a2,1040(a0)
-{
- 40ec: e822 sd s0,16(sp)
- 40ee: e426 sd s1,8(sp)
- 40f0: ec06 sd ra,24(sp)
- 40f2: 842a mv s0,a0
- 40f4: 84ae mv s1,a1
- if (stream->buf_write_pos > 0)
- 40f6: 02c04863 bgtz a2,4126 <fseek+0x46>
- if (lseek(stream->fd, offset, whence) < 0)
- 40fa: 4008 lw a0,0(s0)
- stream->buf_read_pos = 0;
- 40fc: 40042a23 sw zero,1044(s0)
- stream->buf_read_cnt = 0;
- 4100: 40042c23 sw zero,1048(s0)
- stream->eof = 0;
- 4104: 00042623 sw zero,12(s0)
- if (lseek(stream->fd, offset, whence) < 0)
- 4108: 864a mv a2,s2
- 410a: 0004859b sext.w a1,s1
- 410e: 82afc0ef jal 138 <lseek>
- 4112: 87aa mv a5,a0
- return 0;
- 4114: 4501 li a0,0
- if (lseek(stream->fd, offset, whence) < 0)
- 4116: 0207c463 bltz a5,413e <fseek+0x5e>
-}
- 411a: 60e2 ld ra,24(sp)
- 411c: 6442 ld s0,16(sp)
- 411e: 64a2 ld s1,8(sp)
- 4120: 6902 ld s2,0(sp)
- 4122: 6105 addi sp,sp,32
- 4124: 8082 ret
- int64 ret = write(stream->fd, stream->buffer, stream->buf_write_pos);
- 4126: 4108 lw a0,0(a0)
- 4128: 01040593 addi a1,s0,16
- 412c: f7dfb0ef jal a8 <write>
- if (ret < stream->buf_write_pos)
- 4130: 41042783 lw a5,1040(s0)
- 4134: 00f54963 blt a0,a5,4146 <fseek+0x66>
- stream->buf_write_pos = 0;
- 4138: 40042823 sw zero,1040(s0)
- 413c: bf7d j 40fa <fseek+0x1a>
- stream->error = 1;
- 413e: 4785 li a5,1
- 4140: c41c sw a5,8(s0)
- return -1;
- 4142: 557d li a0,-1
- 4144: bfd9 j 411a <fseek+0x3a>
- stream->error = 1;
- 4146: 4785 li a5,1
- 4148: c41c sw a5,8(s0)
- stream->buf_write_pos = 0;
- 414a: 40042823 sw zero,1040(s0)
- return EOF;
- 414e: b775 j 40fa <fseek+0x1a>
- return -1;
- 4150: 557d li a0,-1
-}
- 4152: 8082 ret
-
-0000000000004154 <ftell>:
- if (!stream)
- 4154: c505 beqz a0,417c <ftell+0x28>
-{
- 4156: 1141 addi sp,sp,-16
- 4158: e022 sd s0,0(sp)
- 415a: 842a mv s0,a0
- int64 ret = lseek(stream->fd, 0, SEEK_CUR);
- 415c: 4108 lw a0,0(a0)
- 415e: 4605 li a2,1
- 4160: 4581 li a1,0
-{
- 4162: e406 sd ra,8(sp)
- int64 ret = lseek(stream->fd, 0, SEEK_CUR);
- 4164: fd5fb0ef jal 138 <lseek>
- if (ret < 0)
- 4168: 00054663 bltz a0,4174 <ftell+0x20>
-}
- 416c: 60a2 ld ra,8(sp)
- 416e: 6402 ld s0,0(sp)
- 4170: 0141 addi sp,sp,16
- 4172: 8082 ret
- stream->error = 1;
- 4174: 4785 li a5,1
- 4176: c41c sw a5,8(s0)
- return -1L;
- 4178: 557d li a0,-1
- 417a: bfcd j 416c <ftell+0x18>
- 417c: 557d li a0,-1
-}
- 417e: 8082 ret
-
-0000000000004180 <rewind>:
- if (stream)
- 4180: c915 beqz a0,41b4 <rewind+0x34>
- if (stream->buf_write_pos > 0)
- 4182: 41052603 lw a2,1040(a0)
-{
- 4186: 1141 addi sp,sp,-16
- 4188: e022 sd s0,0(sp)
- 418a: e406 sd ra,8(sp)
- 418c: 842a mv s0,a0
- if (stream->buf_write_pos > 0)
- 418e: 02c04463 bgtz a2,41b6 <rewind+0x36>
- if (lseek(stream->fd, offset, whence) < 0)
- 4192: 4008 lw a0,0(s0)
- stream->buf_read_pos = 0;
- 4194: 40042a23 sw zero,1044(s0)
- stream->buf_read_cnt = 0;
- 4198: 40042c23 sw zero,1048(s0)
- stream->eof = 0;
- 419c: 00042623 sw zero,12(s0)
- if (lseek(stream->fd, offset, whence) < 0)
- 41a0: 4601 li a2,0
- 41a2: 4581 li a1,0
- 41a4: f95fb0ef jal 138 <lseek>
-}
- 41a8: 60a2 ld ra,8(sp)
- stream->error = 0;
- 41aa: 00042423 sw zero,8(s0)
-}
- 41ae: 6402 ld s0,0(sp)
- 41b0: 0141 addi sp,sp,16
- 41b2: 8082 ret
- 41b4: 8082 ret
- int64 ret = write(stream->fd, stream->buffer, stream->buf_write_pos);
- 41b6: 4108 lw a0,0(a0)
- 41b8: 01040593 addi a1,s0,16
- 41bc: eedfb0ef jal a8 <write>
- if (ret < stream->buf_write_pos)
- 41c0: 41042783 lw a5,1040(s0)
- 41c4: 00f54563 blt a0,a5,41ce <rewind+0x4e>
- stream->buf_write_pos = 0;
- 41c8: 40042823 sw zero,1040(s0)
- 41cc: b7d9 j 4192 <rewind+0x12>
- stream->error = 1;
- 41ce: 4785 li a5,1
- 41d0: c41c sw a5,8(s0)
- stream->buf_write_pos = 0;
- 41d2: 40042823 sw zero,1040(s0)
- return EOF;
- 41d6: bf75 j 4192 <rewind+0x12>
-
-00000000000041d8 <feof>:
- return (stream) ? stream->eof : 1;
- 41d8: c119 beqz a0,41de <feof+0x6>
- 41da: 4548 lw a0,12(a0)
- 41dc: 8082 ret
- 41de: 4505 li a0,1
-}
- 41e0: 8082 ret
-
-00000000000041e2 <ferror>:
- return (stream) ? stream->error : 1;
- 41e2: c119 beqz a0,41e8 <ferror+0x6>
- 41e4: 4508 lw a0,8(a0)
- 41e6: 8082 ret
- 41e8: 4505 li a0,1
-}
- 41ea: 8082 ret
-
-00000000000041ec <clearerr>:
- if (stream)
- 41ec: c509 beqz a0,41f6 <clearerr+0xa>
- stream->error = 0;
- 41ee: 00052423 sw zero,8(a0)
- stream->eof = 0;
- 41f2: 00052623 sw zero,12(a0)
-}
- 41f6: 8082 ret
-
-00000000000041f8 <ungetc>:
- if (!stream || c == EOF)
- 41f8: c19d beqz a1,421e <ungetc+0x26>
- 41fa: 57fd li a5,-1
- 41fc: 02f50163 beq a0,a5,421e <ungetc+0x26>
- if (stream->buf_read_pos > 0)
- 4200: 4145a783 lw a5,1044(a1)
- 4204: 00f05d63 blez a5,421e <ungetc+0x26>
- stream->buf_read_pos--;
- 4208: fff7871b addiw a4,a5,-1
- 420c: 40e5aa23 sw a4,1044(a1)
- stream->buffer[stream->buf_read_pos] = (char)c;
- 4210: 00e587b3 add a5,a1,a4
- 4214: 00a78823 sb a0,16(a5)
- stream->eof = 0;
- 4218: 0005a623 sw zero,12(a1)
- return c;
- 421c: 8082 ret
- return EOF;
- 421e: 557d li a0,-1
- 4220: 8082 ret
-
-0000000000004222 <strtoull.part.0>:
- return new_ptr;
-}
-
-/* String Conversion*/
-
-unsigned long long strtoull(const char *nptr, char **endptr, int base)
- 4222: 1141 addi sp,sp,-16
- 4224: e422 sd s0,8(sp)
- 4226: 8eaa mv t4,a0
-{
- const char *s = nptr;
- 4228: 88aa mv a7,a0
- static inline int isdigit(int c) { return c >= '0' && c <= '9'; }
- static inline int islower(int c) { return c >= 'a' && c <= 'z'; }
- static inline int isupper(int c) { return c >= 'A' && c <= 'Z'; }
- static inline int isalpha(int c) { return islower(c) || isupper(c); }
- static inline int isalnum(int c) { return isalpha(c) || isdigit(c); }
- static inline int isspace(int c) { return c == ' ' || c == '\t' || c == '\n' || c == '\v' || c == '\f' || c == '\r'; }
- 422a: 02000313 li t1,32
- 422e: 4e11 li t3,4
- return 0;
- }
-
- do
- {
- c = *s++;
- 4230: 0008c783 lbu a5,0(a7)
- 4234: 00188813 addi a6,a7,1
- 4238: ff77871b addiw a4,a5,-9
- 423c: 0ff77693 zext.b a3,a4
- 4240: 0007871b sext.w a4,a5
- 4244: 04678363 beq a5,t1,428a <strtoull.part.0+0x68>
- 4248: 04de7163 bgeu t3,a3,428a <strtoull.part.0+0x68>
- } while (isspace(c));
-
- if (c == '-')
- 424c: 02d00793 li a5,45
- 4250: 0ef70863 beq a4,a5,4340 <strtoull.part.0+0x11e>
- {
- neg = 1;
- c = *s++;
- }
- else if (c == '+')
- 4254: 02b00793 li a5,43
- int neg = 0, any, cutlim;
- 4258: 4381 li t2,0
- else if (c == '+')
- 425a: 08f70c63 beq a4,a5,42f2 <strtoull.part.0+0xd0>
- {
- c = *s++;
- }
-
- if ((base == 0 || base == 16) && c == '0' && (*s == 'x' || *s == 'X'))
- 425e: ea05 bnez a2,428e <strtoull.part.0+0x6c>
- 4260: 03000793 li a5,48
- 4264: 0ef70463 beq a4,a5,434c <strtoull.part.0+0x12a>
- 4268: 00ccd8b7 lui a7,0xccd
- 426c: ccd88893 addi a7,a7,-819 # cccccd <_ZSt4cerr+0xcc54d5>
- 4270: 08b2 slli a7,a7,0xc
- 4272: ccd88893 addi a7,a7,-819
- 4276: 08b2 slli a7,a7,0xc
- 4278: ccd88893 addi a7,a7,-819
- 427c: 08b6 slli a7,a7,0xd
- 427e: 4415 li s0,5
- 4280: 99988893 addi a7,a7,-1639
- 4284: 42a9 li t0,10
- c = s[1];
- s += 2;
- base = 16;
- }
- if (base == 0)
- base = (c == '0' ? 8 : 10);
- 4286: 4629 li a2,10
- 4288: a829 j 42a2 <strtoull.part.0+0x80>
-unsigned long long strtoull(const char *nptr, char **endptr, int base)
- 428a: 88c2 mv a7,a6
- 428c: b755 j 4230 <strtoull.part.0+0xe>
- if ((base == 0 || base == 16) && c == '0' && (*s == 'x' || *s == 'X'))
- 428e: 47c1 li a5,16
- 4290: 0cf60d63 beq a2,a5,436a <strtoull.part.0+0x148>
-
- cutoff = ULLONG_MAX / (unsigned long long)base;
- 4294: 58fd li a7,-1
- cutlim = ULLONG_MAX % (unsigned long long)base;
- 4296: 02c8f433 remu s0,a7,a2
- cutoff = ULLONG_MAX / (unsigned long long)base;
- 429a: 82b2 mv t0,a2
- 429c: 02c8d8b3 divu a7,a7,a2
- cutlim = ULLONG_MAX % (unsigned long long)base;
- 42a0: 2401 sext.w s0,s0
-
- for (acc = 0, any = 0;; c = *s++)
- 42a2: 4301 li t1,0
- 42a4: 4501 li a0,0
- {
- if (isdigit(c))
- 42a6: 4e25 li t3,9
- static inline int isalpha(int c) { return islower(c) || isupper(c); }
- 42a8: 4fe5 li t6,25
- break;
-
- if (c >= base)
- break;
-
- if (any < 0 || acc > cutoff || (acc == cutoff && c > cutlim))
- 42aa: 5f7d li t5,-1
- if (isdigit(c))
- 42ac: fd07079b addiw a5,a4,-48
- static inline int isdigit(int c) { return c >= '0' && c <= '9'; }
- 42b0: 0007069b sext.w a3,a4
- 42b4: 00fe7e63 bgeu t3,a5,42d0 <strtoull.part.0+0xae>
- static inline int isalpha(int c) { return islower(c) || isupper(c); }
- 42b8: f9f6879b addiw a5,a3,-97
- 42bc: 04fff063 bgeu t6,a5,42fc <strtoull.part.0+0xda>
- 42c0: fbf6869b addiw a3,a3,-65
- 42c4: 04dfe163 bltu t6,a3,4306 <strtoull.part.0+0xe4>
- c -= isupper(c) ? 'A' - 10 : 'a' - 10;
- 42c8: 03700793 li a5,55
- 42cc: 40f707bb subw a5,a4,a5
- if (c >= base)
- 42d0: 02c7db63 bge a5,a2,4306 <strtoull.part.0+0xe4>
- if (any < 0 || acc > cutoff || (acc == cutoff && c > cutlim))
- 42d4: 01e30b63 beq t1,t5,42ea <strtoull.part.0+0xc8>
- any = -1;
- 42d8: 537d li t1,-1
- if (any < 0 || acc > cutoff || (acc == cutoff && c > cutlim))
- 42da: 00a8e863 bltu a7,a0,42ea <strtoull.part.0+0xc8>
- 42de: 05150e63 beq a0,a7,433a <strtoull.part.0+0x118>
- else
- {
- any = 1;
- 42e2: 4305 li t1,1
- acc *= base;
- 42e4: 02550533 mul a0,a0,t0
- acc += c;
- 42e8: 953e add a0,a0,a5
- for (acc = 0, any = 0;; c = *s++)
- 42ea: 0805 addi a6,a6,1
- 42ec: fff84703 lbu a4,-1(a6)
- if (isdigit(c))
- 42f0: bf75 j 42ac <strtoull.part.0+0x8a>
- c = *s++;
- 42f2: 00084703 lbu a4,0(a6)
- 42f6: 00288813 addi a6,a7,2
- 42fa: b795 j 425e <strtoull.part.0+0x3c>
- c -= isupper(c) ? 'A' - 10 : 'a' - 10;
- 42fc: 05700793 li a5,87
- 4300: 40f707bb subw a5,a4,a5
- 4304: b7f1 j 42d0 <strtoull.part.0+0xae>
- }
- }
-
- if (any < 0)
- 4306: 57fd li a5,-1
- 4308: 00f30e63 beq t1,a5,4324 <strtoull.part.0+0x102>
- {
- acc = ULLONG_MAX;
- errno = ERANGE;
- }
- else if (neg)
- 430c: 00038463 beqz t2,4314 <strtoull.part.0+0xf2>
- acc = -acc;
- 4310: 40a00533 neg a0,a0
-
- if (endptr != 0)
- 4314: c589 beqz a1,431e <strtoull.part.0+0xfc>
- *endptr = (char *)(any ? s - 1 : nptr);
- 4316: 00031f63 bnez t1,4334 <strtoull.part.0+0x112>
- 431a: 01d5b023 sd t4,0(a1)
-
- return acc;
-}
- 431e: 6422 ld s0,8(sp)
- 4320: 0141 addi sp,sp,16
- 4322: 8082 ret
- errno = ERANGE;
- 4324: 02200793 li a5,34
- 4328: 00003717 auipc a4,0x3
- 432c: 38f72c23 sw a5,920(a4) # 76c0 <errno>
- acc = ULLONG_MAX;
- 4330: 557d li a0,-1
- if (endptr != 0)
- 4332: d5f5 beqz a1,431e <strtoull.part.0+0xfc>
- *endptr = (char *)(any ? s - 1 : nptr);
- 4334: fff80e93 addi t4,a6,-1
- 4338: b7cd j 431a <strtoull.part.0+0xf8>
- if (any < 0 || acc > cutoff || (acc == cutoff && c > cutlim))
- 433a: faf448e3 blt s0,a5,42ea <strtoull.part.0+0xc8>
- 433e: b755 j 42e2 <strtoull.part.0+0xc0>
- c = *s++;
- 4340: 00084703 lbu a4,0(a6)
- neg = 1;
- 4344: 4385 li t2,1
- c = *s++;
- 4346: 00288813 addi a6,a7,2
- 434a: bf11 j 425e <strtoull.part.0+0x3c>
- if ((base == 0 || base == 16) && c == '0' && (*s == 'x' || *s == 'X'))
- 434c: 00084783 lbu a5,0(a6)
- 4350: 05800693 li a3,88
- 4354: 0df7f793 andi a5,a5,223
- 4358: 02d78b63 beq a5,a3,438e <strtoull.part.0+0x16c>
- 435c: 58fd li a7,-1
- 435e: 441d li s0,7
- 4360: 0038d893 srli a7,a7,0x3
- 4364: 42a1 li t0,8
- base = (c == '0' ? 8 : 10);
- 4366: 4621 li a2,8
- 4368: bf2d j 42a2 <strtoull.part.0+0x80>
- if ((base == 0 || base == 16) && c == '0' && (*s == 'x' || *s == 'X'))
- 436a: 03000793 li a5,48
- 436e: 00f70863 beq a4,a5,437e <strtoull.part.0+0x15c>
- 4372: 58fd li a7,-1
- 4374: 443d li s0,15
- 4376: 0048d893 srli a7,a7,0x4
- 437a: 42c1 li t0,16
- 437c: b71d j 42a2 <strtoull.part.0+0x80>
- 437e: 00084783 lbu a5,0(a6)
- 4382: 05800693 li a3,88
- 4386: 0df7f793 andi a5,a5,223
- 438a: fed794e3 bne a5,a3,4372 <strtoull.part.0+0x150>
- s += 2;
- 438e: 58fd li a7,-1
- c = s[1];
- 4390: 00184703 lbu a4,1(a6)
- s += 2;
- 4394: 443d li s0,15
- 4396: 0809 addi a6,a6,2
- 4398: 0048d893 srli a7,a7,0x4
- 439c: 42c1 li t0,16
- base = 16;
- 439e: 4641 li a2,16
- 43a0: b709 j 42a2 <strtoull.part.0+0x80>
-
-00000000000043a2 <atexit>:
- if (__atexit_func_count >= ATEXIT_MAX)
- 43a2: 00003717 auipc a4,0x3
- 43a6: 31e70713 addi a4,a4,798 # 76c0 <errno>
- 43aa: 435c lw a5,4(a4)
- 43ac: 46fd li a3,31
- 43ae: 00f6ca63 blt a3,a5,43c2 <atexit+0x20>
- __atexit_funcs[__atexit_func_count++] = function;
- 43b2: 00379693 slli a3,a5,0x3
- 43b6: 96ba add a3,a3,a4
- 43b8: 2785 addiw a5,a5,1
- 43ba: e688 sd a0,8(a3)
- 43bc: c35c sw a5,4(a4)
- return 0;
- 43be: 4501 li a0,0
- 43c0: 8082 ret
- return -1;
- 43c2: 557d li a0,-1
-}
- 43c4: 8082 ret
-
-00000000000043c6 <exit>:
-{
- 43c6: 1101 addi sp,sp,-32
- 43c8: e822 sd s0,16(sp)
- while (__atexit_func_count > 0)
- 43ca: 00003417 auipc s0,0x3
- 43ce: 2f640413 addi s0,s0,758 # 76c0 <errno>
- 43d2: 405c lw a5,4(s0)
-{
- 43d4: e426 sd s1,8(sp)
- 43d6: ec06 sd ra,24(sp)
- 43d8: 84aa mv s1,a0
- while (__atexit_func_count > 0)
- 43da: 00f05d63 blez a5,43f4 <exit+0x2e>
- (__atexit_funcs[--__atexit_func_count])();
- 43de: fff7871b addiw a4,a5,-1
- 43e2: 87ba mv a5,a4
- 43e4: 070e slli a4,a4,0x3
- 43e6: 9722 add a4,a4,s0
- 43e8: 6718 ld a4,8(a4)
- 43ea: c05c sw a5,4(s0)
- 43ec: 9702 jalr a4
- while (__atexit_func_count > 0)
- 43ee: 405c lw a5,4(s0)
- 43f0: fef047e3 bgtz a5,43de <exit+0x18>
- sys_exit(status);
- 43f4: 8526 mv a0,s1
- 43f6: c8bfb0ef jal 80 <sys_exit>
- while (1)
- 43fa: a001 j 43fa <exit+0x34>
-
-00000000000043fc <abort>:
-{
- 43fc: 1141 addi sp,sp,-16
- exit(127);
- 43fe: 07f00513 li a0,127
-{
- 4402: e406 sd ra,8(sp)
- exit(127);
- 4404: fc3ff0ef jal 43c6 <exit>
-
-0000000000004408 <getenv>:
-}
- 4408: 4501 li a0,0
- 440a: 8082 ret
-
-000000000000440c <system>:
-}
- 440c: 557d li a0,-1
- 440e: 8082 ret
-
-0000000000004410 <free>:
- if (!ptr)
- 4410: c121 beqz a0,4450 <free+0x40>
- for (p = freep; !(bp > p && bp < p->next); p = p->next)
- 4412: 00003617 auipc a2,0x3
- 4416: 2ae60613 addi a2,a2,686 # 76c0 <errno>
- 441a: 10863783 ld a5,264(a2)
- bp = (header_t *)ptr - 1;
- 441e: ff050693 addi a3,a0,-16
- if (p >= p->next && (bp > p || bp < p->next))
- 4422: 6798 ld a4,8(a5)
- for (p = freep; !(bp > p && bp < p->next); p = p->next)
- 4424: 02d7f763 bgeu a5,a3,4452 <free+0x42>
- 4428: 00e6e463 bltu a3,a4,4430 <free+0x20>
- if (p >= p->next && (bp > p || bp < p->next))
- 442c: 02e7e763 bltu a5,a4,445a <free+0x4a>
- if ((char *)bp + bp->size == (char *)p->next)
- 4430: ff053583 ld a1,-16(a0)
- 4434: 00b68833 add a6,a3,a1
- 4438: 03070363 beq a4,a6,445e <free+0x4e>
- if ((char *)p + p->size == (char *)bp)
- 443c: 638c ld a1,0(a5)
- 443e: fee53c23 sd a4,-8(a0)
- 4442: 00b78833 add a6,a5,a1
- 4446: 03068963 beq a3,a6,4478 <free+0x68>
- 444a: e794 sd a3,8(a5)
- freep = p;
- 444c: 10f63423 sd a5,264(a2)
-}
- 4450: 8082 ret
- if (p >= p->next && (bp > p || bp < p->next))
- 4452: 00e7e463 bltu a5,a4,445a <free+0x4a>
- 4456: fce6ede3 bltu a3,a4,4430 <free+0x20>
-{
- 445a: 87ba mv a5,a4
- 445c: b7d9 j 4422 <free+0x12>
- bp->size += p->next->size;
- 445e: 00073803 ld a6,0(a4)
- bp->next = p->next->next;
- 4462: 6718 ld a4,8(a4)
- bp->size += p->next->size;
- 4464: 95c2 add a1,a1,a6
- 4466: feb53823 sd a1,-16(a0)
- if ((char *)p + p->size == (char *)bp)
- 446a: 638c ld a1,0(a5)
- 446c: fee53c23 sd a4,-8(a0)
- 4470: 00b78833 add a6,a5,a1
- 4474: fd069be3 bne a3,a6,444a <free+0x3a>
- p->size += bp->size;
- 4478: ff053503 ld a0,-16(a0)
- p->next = bp->next;
- 447c: 86ba mv a3,a4
- p->size += bp->size;
- 447e: 00b50733 add a4,a0,a1
- 4482: e398 sd a4,0(a5)
- p->next = bp->next;
- 4484: b7d9 j 444a <free+0x3a>
-
-0000000000004486 <malloc>:
- if (size == 0)
- 4486: c169 beqz a0,4548 <malloc+0xc2>
-{
- 4488: 7179 addi sp,sp,-48
- 448a: ec26 sd s1,24(sp)
- if ((prevp = freep) == NULL)
- 448c: 00003497 auipc s1,0x3
- 4490: 23448493 addi s1,s1,564 # 76c0 <errno>
- 4494: 1084b783 ld a5,264(s1)
-{
- 4498: f022 sd s0,32(sp)
- size = ALIGN(size + sizeof(header_t));
- 449a: 057d addi a0,a0,31
-{
- 449c: f406 sd ra,40(sp)
- size = ALIGN(size + sizeof(header_t));
- 449e: ff057413 andi s0,a0,-16
- if ((prevp = freep) == NULL)
- 44a2: c3d1 beqz a5,4526 <malloc+0xa0>
- for (p = prevp->next;; prevp = p, p = p->next)
- 44a4: 6788 ld a0,8(a5)
- if (p->size >= size)
- 44a6: 6118 ld a4,0(a0)
- 44a8: 06877163 bgeu a4,s0,450a <malloc+0x84>
- 44ac: e44e sd s3,8(sp)
- 44ae: e052 sd s4,0(sp)
- 44b0: e84a sd s2,16(sp)
- if (nu < 4096)
- 44b2: 6a05 lui s4,0x1
- if (cp == (void *)-1)
- 44b4: 59fd li s3,-1
- 44b6: a029 j 44c0 <malloc+0x3a>
- for (p = prevp->next;; prevp = p, p = p->next)
- 44b8: 6788 ld a0,8(a5)
- if (p->size >= size)
- 44ba: 6118 ld a4,0(a0)
- 44bc: 04877463 bgeu a4,s0,4504 <malloc+0x7e>
- if (p == freep)
- 44c0: 1084b703 ld a4,264(s1)
- 44c4: 87aa mv a5,a0
- 44c6: fee519e3 bne a0,a4,44b8 <malloc+0x32>
- if (nu < 4096)
- 44ca: 8922 mv s2,s0
- 44cc: 01447363 bgeu s0,s4,44d2 <malloc+0x4c>
- 44d0: 6905 lui s2,0x1
- cp = (char *)sbrk(nu);
- 44d2: 854a mv a0,s2
- 44d4: c3dfb0ef jal 110 <sbrk>
- 44d8: 87aa mv a5,a0
- free((void *)(up + 1));
- 44da: 0541 addi a0,a0,16
- if (cp == (void *)-1)
- 44dc: 01378963 beq a5,s3,44ee <malloc+0x68>
- up->size = nu;
- 44e0: 0127b023 sd s2,0(a5)
- free((void *)(up + 1));
- 44e4: f2dff0ef jal 4410 <free>
- return freep;
- 44e8: 1084b783 ld a5,264(s1)
- if ((p = morecore(size)) == NULL)
- 44ec: f7f1 bnez a5,44b8 <malloc+0x32>
-}
- 44ee: 70a2 ld ra,40(sp)
- 44f0: 7402 ld s0,32(sp)
- errno = ENOMEM;
- 44f2: 47b1 li a5,12
- 44f4: c09c sw a5,0(s1)
- return NULL;
- 44f6: 6942 ld s2,16(sp)
- 44f8: 69a2 ld s3,8(sp)
- 44fa: 6a02 ld s4,0(sp)
-}
- 44fc: 64e2 ld s1,24(sp)
- return NULL;
- 44fe: 4501 li a0,0
-}
- 4500: 6145 addi sp,sp,48
- 4502: 8082 ret
- 4504: 6942 ld s2,16(sp)
- 4506: 69a2 ld s3,8(sp)
- 4508: 6a02 ld s4,0(sp)
- if (p->size == size)
- 450a: 02e40c63 beq s0,a4,4542 <malloc+0xbc>
- p->size -= size;
- 450e: 8f01 sub a4,a4,s0
- 4510: e118 sd a4,0(a0)
- p = (header_t *)((char *)p + p->size);
- 4512: 953a add a0,a0,a4
- p->size = size;
- 4514: e100 sd s0,0(a0)
-}
- 4516: 70a2 ld ra,40(sp)
- 4518: 7402 ld s0,32(sp)
- freep = prevp;
- 451a: 10f4b423 sd a5,264(s1)
- return (void *)(p + 1);
- 451e: 0541 addi a0,a0,16
-}
- 4520: 64e2 ld s1,24(sp)
- 4522: 6145 addi sp,sp,48
- 4524: 8082 ret
- base.next = freep = prevp = &base;
- 4526: 00003517 auipc a0,0x3
- 452a: 2aa50513 addi a0,a0,682 # 77d0 <base>
- 452e: 10a4b423 sd a0,264(s1)
- 4532: 10a4bc23 sd a0,280(s1)
- base.size = 0;
- 4536: 00003797 auipc a5,0x3
- 453a: 2807bd23 sd zero,666(a5) # 77d0 <base>
- if (p->size >= size)
- 453e: f43d bnez s0,44ac <malloc+0x26>
- base.next = freep = prevp = &base;
- 4540: 87aa mv a5,a0
- prevp->next = p->next;
- 4542: 6518 ld a4,8(a0)
- 4544: e798 sd a4,8(a5)
- 4546: bfc1 j 4516 <malloc+0x90>
- return NULL;
- 4548: 4501 li a0,0
-}
- 454a: 8082 ret
-
-000000000000454c <calloc>:
- if (__builtin_mul_overflow(nmemb, size, &total))
- 454c: 02b537b3 mulhu a5,a0,a1
-{
- 4550: 1101 addi sp,sp,-32
- 4552: e822 sd s0,16(sp)
- 4554: ec06 sd ra,24(sp)
- 4556: e426 sd s1,8(sp)
- if (__builtin_mul_overflow(nmemb, size, &total))
- 4558: 02b50433 mul s0,a0,a1
- 455c: e385 bnez a5,457c <calloc+0x30>
- void *p = malloc(total);
- 455e: 8522 mv a0,s0
- 4560: f27ff0ef jal 4486 <malloc>
- 4564: 84aa mv s1,a0
- if (p)
- 4566: c509 beqz a0,4570 <calloc+0x24>
- memset(p, 0, total);
- 4568: 8622 mv a2,s0
- 456a: 4581 li a1,0
- 456c: 524000ef jal 4a90 <memset>
-}
- 4570: 60e2 ld ra,24(sp)
- 4572: 6442 ld s0,16(sp)
- 4574: 8526 mv a0,s1
- 4576: 64a2 ld s1,8(sp)
- 4578: 6105 addi sp,sp,32
- 457a: 8082 ret
- 457c: 60e2 ld ra,24(sp)
- 457e: 6442 ld s0,16(sp)
- errno = ENOMEM;
- 4580: 47b1 li a5,12
- return NULL;
- 4582: 4481 li s1,0
- errno = ENOMEM;
- 4584: 00003717 auipc a4,0x3
- 4588: 12f72e23 sw a5,316(a4) # 76c0 <errno>
-}
- 458c: 8526 mv a0,s1
- 458e: 64a2 ld s1,8(sp)
- 4590: 6105 addi sp,sp,32
- 4592: 8082 ret
-
-0000000000004594 <realloc>:
- if (!ptr)
- 4594: c929 beqz a0,45e6 <realloc+0x52>
-{
- 4596: 1101 addi sp,sp,-32
- 4598: ec06 sd ra,24(sp)
- 459a: e426 sd s1,8(sp)
- if (size == 0)
- 459c: c5b9 beqz a1,45ea <realloc+0x56>
- if (bp->size >= new_size)
- 459e: ff053703 ld a4,-16(a0)
- size_t new_size = ALIGN(size + sizeof(header_t));
- 45a2: 01f58793 addi a5,a1,31
- 45a6: e822 sd s0,16(sp)
- 45a8: 9bc1 andi a5,a5,-16
- 45aa: 842a mv s0,a0
- return ptr;
- 45ac: 84aa mv s1,a0
- if (bp->size >= new_size)
- 45ae: 00f76863 bltu a4,a5,45be <realloc+0x2a>
- 45b2: 6442 ld s0,16(sp)
-}
- 45b4: 60e2 ld ra,24(sp)
- 45b6: 8526 mv a0,s1
- 45b8: 64a2 ld s1,8(sp)
- 45ba: 6105 addi sp,sp,32
- 45bc: 8082 ret
- void *new_ptr = malloc(size);
- 45be: 852e mv a0,a1
- 45c0: ec7ff0ef jal 4486 <malloc>
- 45c4: 84aa mv s1,a0
- if (!new_ptr)
- 45c6: d575 beqz a0,45b2 <realloc+0x1e>
- memcpy(new_ptr, ptr, bp->size - sizeof(header_t));
- 45c8: ff043603 ld a2,-16(s0)
- 45cc: 85a2 mv a1,s0
- 45ce: 1641 addi a2,a2,-16
- 45d0: 514000ef jal 4ae4 <memcpy>
- free(ptr);
- 45d4: 8522 mv a0,s0
- 45d6: e3bff0ef jal 4410 <free>
-}
- 45da: 60e2 ld ra,24(sp)
- free(ptr);
- 45dc: 6442 ld s0,16(sp)
-}
- 45de: 8526 mv a0,s1
- 45e0: 64a2 ld s1,8(sp)
- 45e2: 6105 addi sp,sp,32
- 45e4: 8082 ret
- return malloc(size);
- 45e6: 852e mv a0,a1
- 45e8: bd79 j 4486 <malloc>
- free(ptr);
- 45ea: e27ff0ef jal 4410 <free>
- return NULL;
- 45ee: 4481 li s1,0
- 45f0: b7d1 j 45b4 <realloc+0x20>
-
-00000000000045f2 <strtoull>:
- if (base < 0 || base == 1 || base > 36)
- 45f2: 02400813 li a6,36
-{
- 45f6: 86aa mv a3,a0
- 45f8: 872e mv a4,a1
- if (base < 0 || base == 1 || base > 36)
- 45fa: 00c86663 bltu a6,a2,4606 <strtoull+0x14>
- 45fe: 4805 li a6,1
- 4600: 01060363 beq a2,a6,4606 <strtoull+0x14>
- 4604: b939 j 4222 <strtoull.part.0>
- if (endptr)
- 4606: c311 beqz a4,460a <strtoull+0x18>
- *endptr = (char *)nptr;
- 4608: e314 sd a3,0(a4)
- errno = 0; /* EINVAL */
- 460a: 00003797 auipc a5,0x3
- 460e: 0a07ab23 sw zero,182(a5) # 76c0 <errno>
-}
- 4612: 4501 li a0,0
- 4614: 8082 ret
-
-0000000000004616 <strtoll>:
-
-long long strtoll(const char *nptr, char **endptr, int base)
-{
- 4616: 1141 addi sp,sp,-16
- 4618: e406 sd ra,8(sp)
- 461a: e022 sd s0,0(sp)
- const char *s = nptr;
- 461c: 86aa mv a3,a0
- static inline int isspace(int c) { return c == ' ' || c == '\t' || c == '\n' || c == '\v' || c == '\f' || c == '\r'; }
- 461e: 02000813 li a6,32
- 4622: 4891 li a7,4
- unsigned long long acc;
- int c, neg = 0;
-
- do
- {
- c = *s++;
- 4624: 0006c783 lbu a5,0(a3)
- 4628: 0685 addi a3,a3,1
- 462a: ff77871b addiw a4,a5,-9
- 462e: 0ff77713 zext.b a4,a4
- 4632: 0007841b sext.w s0,a5
- 4636: ff0787e3 beq a5,a6,4624 <strtoll+0xe>
- 463a: fee8f5e3 bgeu a7,a4,4624 <strtoll+0xe>
- if (base < 0 || base == 1 || base > 36)
- 463e: 02400793 li a5,36
- 4642: 02c7ec63 bltu a5,a2,467a <strtoll+0x64>
- 4646: 4785 li a5,1
- 4648: 02f60963 beq a2,a5,467a <strtoll+0x64>
- 464c: bd7ff0ef jal 4222 <strtoull.part.0>
- if (c == '-')
- neg = 1;
-
- acc = strtoull(nptr, endptr, base);
-
- if (errno == ERANGE && acc == ULLONG_MAX)
- 4650: 00003797 auipc a5,0x3
- 4654: 07078793 addi a5,a5,112 # 76c0 <errno>
- 4658: 4394 lw a3,0(a5)
- 465a: 02200713 li a4,34
- 465e: 04e68363 beq a3,a4,46a4 <strtoll+0x8e>
- return neg ? LLONG_MIN : LLONG_MAX;
-
- if (!neg && acc > (unsigned long long)LLONG_MAX)
- 4662: 02d00713 li a4,45
- 4666: 02e40563 beq s0,a4,4690 <strtoll+0x7a>
- 466a: 00055f63 bgez a0,4688 <strtoll+0x72>
- {
- errno = ERANGE;
- 466e: 02200713 li a4,34
- 4672: c398 sw a4,0(a5)
- return neg ? LLONG_MIN : LLONG_MAX;
- 4674: 557d li a0,-1
- 4676: 8105 srli a0,a0,0x1
- 4678: a801 j 4688 <strtoll+0x72>
- if (endptr)
- 467a: c191 beqz a1,467e <strtoll+0x68>
- *endptr = (char *)nptr;
- 467c: e188 sd a0,0(a1)
- errno = 0; /* EINVAL */
- 467e: 00003797 auipc a5,0x3
- 4682: 0407a123 sw zero,66(a5) # 76c0 <errno>
- {
- errno = ERANGE;
- return LLONG_MIN;
- }
-
- return neg ? -(long long)acc : (long long)acc;
- 4686: 4501 li a0,0
-}
- 4688: 60a2 ld ra,8(sp)
- 468a: 6402 ld s0,0(sp)
- 468c: 0141 addi sp,sp,16
- 468e: 8082 ret
- if (neg && acc > (unsigned long long)LLONG_MAX + 1)
- 4690: 577d li a4,-1
- 4692: 177e slli a4,a4,0x3f
- 4694: 02a76263 bltu a4,a0,46b8 <strtoll+0xa2>
-}
- 4698: 60a2 ld ra,8(sp)
- 469a: 6402 ld s0,0(sp)
- return neg ? -(long long)acc : (long long)acc;
- 469c: 40a00533 neg a0,a0
-}
- 46a0: 0141 addi sp,sp,16
- 46a2: 8082 ret
- if (errno == ERANGE && acc == ULLONG_MAX)
- 46a4: 577d li a4,-1
- 46a6: fae51ee3 bne a0,a4,4662 <strtoll+0x4c>
- return neg ? LLONG_MIN : LLONG_MAX;
- 46aa: 02d00793 li a5,45
- 46ae: fcf413e3 bne s0,a5,4674 <strtoll+0x5e>
- return LLONG_MIN;
- 46b2: 557d li a0,-1
- 46b4: 157e slli a0,a0,0x3f
- 46b6: bfc9 j 4688 <strtoll+0x72>
- errno = ERANGE;
- 46b8: 02200713 li a4,34
- 46bc: c398 sw a4,0(a5)
- return LLONG_MIN;
- 46be: bfd5 j 46b2 <strtoll+0x9c>
-
-00000000000046c0 <strtoul>:
- if (base < 0 || base == 1 || base > 36)
- 46c0: 02400813 li a6,36
-
-unsigned long strtoul(const char *nptr, char **endptr, int base)
-{
- 46c4: 86aa mv a3,a0
- 46c6: 872e mv a4,a1
- if (base < 0 || base == 1 || base > 36)
- 46c8: 00c86663 bltu a6,a2,46d4 <strtoul+0x14>
- 46cc: 4805 li a6,1
- 46ce: 01060363 beq a2,a6,46d4 <strtoul+0x14>
- 46d2: be81 j 4222 <strtoull.part.0>
- if (endptr)
- 46d4: c311 beqz a4,46d8 <strtoul+0x18>
- *endptr = (char *)nptr;
- 46d6: e314 sd a3,0(a4)
- errno = 0; /* EINVAL */
- 46d8: 00003797 auipc a5,0x3
- 46dc: fe07a423 sw zero,-24(a5) # 76c0 <errno>
- {
- errno = ERANGE;
- return ULONG_MAX;
- }
- return (unsigned long)ret;
-}
- 46e0: 4501 li a0,0
- 46e2: 8082 ret
-
-00000000000046e4 <strtol>:
-
-long strtol(const char *nptr, char **endptr, int base)
-{
- long long ret = strtoll(nptr, endptr, base);
- 46e4: bf0d j 4616 <strtoll>
-
-00000000000046e6 <atoi>:
- return LONG_MIN;
- }
- return (long)ret;
-}
-
-int atoi(const char *nptr) { return (int)strtol(nptr, NULL, 10); }
- 46e6: 1141 addi sp,sp,-16
- long long ret = strtoll(nptr, endptr, base);
- 46e8: 4629 li a2,10
- 46ea: 4581 li a1,0
-int atoi(const char *nptr) { return (int)strtol(nptr, NULL, 10); }
- 46ec: e406 sd ra,8(sp)
- long long ret = strtoll(nptr, endptr, base);
- 46ee: f29ff0ef jal 4616 <strtoll>
-int atoi(const char *nptr) { return (int)strtol(nptr, NULL, 10); }
- 46f2: 60a2 ld ra,8(sp)
- 46f4: 2501 sext.w a0,a0
- 46f6: 0141 addi sp,sp,16
- 46f8: 8082 ret
-
-00000000000046fa <atol>:
- long long ret = strtoll(nptr, endptr, base);
- 46fa: 4629 li a2,10
- 46fc: 4581 li a1,0
- 46fe: bf21 j 4616 <strtoll>
-
-0000000000004700 <atoll>:
-long atol(const char *nptr) { return strtol(nptr, NULL, 10); }
-long long atoll(const char *nptr) { return strtoll(nptr, NULL, 10); }
- 4700: 4629 li a2,10
- 4702: 4581 li a1,0
- 4704: bf09 j 4616 <strtoll>
-
-0000000000004706 <strtod>:
- 4706: 02000693 li a3,32
- 470a: 4611 li a2,4
-{
- double val = 0.0;
- int sign = 1;
- const char *s = nptr;
-
- while (isspace(*s))
- 470c: 00054783 lbu a5,0(a0)
- 4710: ff77871b addiw a4,a5,-9
- 4714: 0ff77713 zext.b a4,a4
- 4718: 06d78263 beq a5,a3,477c <strtod+0x76>
- 471c: 06e67063 bgeu a2,a4,477c <strtod+0x76>
- s++;
- if (*s == '-')
- 4720: 02d00713 li a4,45
- 4724: 08e78e63 beq a5,a4,47c0 <strtod+0xba>
- {
- sign = -1;
- s++;
- }
- else if (*s == '+')
- 4728: 02b00713 li a4,43
- 472c: 0ae78263 beq a5,a4,47d0 <strtod+0xca>
- 4730: 00001717 auipc a4,0x1
- 4734: 0a073507 fld fa0,160(a4) # 57d0 <STDIN_FD+0x10>
- static inline int isdigit(int c) { return c >= '0' && c <= '9'; }
- 4738: fd07861b addiw a2,a5,-48
- s++;
-
- while (isdigit(*s))
- 473c: 46a5 li a3,9
- 473e: f20007d3 fmv.d.x fa5,zero
- 4742: 8732 mv a4,a2
- 4744: 02c6e363 bltu a3,a2,476a <strtod+0x64>
- 4748: 00001797 auipc a5,0x1
- 474c: 0907b687 fld fa3,144(a5) # 57d8 <STDIN_FD+0x18>
- 4750: 4625 li a2,9
- 4752: 00154783 lbu a5,1(a0)
- {
- val = val * 10.0 + (*s - '0');
- 4756: d2070753 fcvt.d.w fa4,a4
- s++;
- 475a: 0505 addi a0,a0,1
- 475c: fd07869b addiw a3,a5,-48
- val = val * 10.0 + (*s - '0');
- 4760: 72d7f7c3 fmadd.d fa5,fa5,fa3,fa4
- 4764: 8736 mv a4,a3
- while (isdigit(*s))
- 4766: fed676e3 bgeu a2,a3,4752 <strtod+0x4c>
- }
- if (*s == '.')
- 476a: 02e00713 li a4,46
- 476e: 00e78963 beq a5,a4,4780 <strtod+0x7a>
- val += (*s - '0') * factor;
- s++;
- }
- }
-
- if (endptr)
- 4772: c191 beqz a1,4776 <strtod+0x70>
- *endptr = (char *)s;
- 4774: e188 sd a0,0(a1)
- return val * sign;
-}
- 4776: 12a7f553 fmul.d fa0,fa5,fa0
- 477a: 8082 ret
- s++;
- 477c: 0505 addi a0,a0,1
- 477e: b779 j 470c <strtod+0x6>
- while (isdigit(*s))
- 4780: 00154703 lbu a4,1(a0)
- 4784: 46a5 li a3,9
- s++;
- 4786: 0505 addi a0,a0,1
- 4788: fd07071b addiw a4,a4,-48
- 478c: 87ba mv a5,a4
- while (isdigit(*s))
- 478e: fee6e2e3 bltu a3,a4,4772 <strtod+0x6c>
- double factor = 1.0;
- 4792: 00001717 auipc a4,0x1
- 4796: 03e73707 fld fa4,62(a4) # 57d0 <STDIN_FD+0x10>
- 479a: 00001717 auipc a4,0x1
- 479e: 05673607 fld fa2,86(a4) # 57f0 <STDIN_FD+0x30>
- factor *= 0.1;
- 47a2: 12c77753 fmul.d fa4,fa4,fa2
- while (isdigit(*s))
- 47a6: 00154703 lbu a4,1(a0)
- val += (*s - '0') * factor;
- 47aa: d20786d3 fcvt.d.w fa3,a5
- s++;
- 47ae: 0505 addi a0,a0,1
- 47b0: fd07071b addiw a4,a4,-48
- 47b4: 87ba mv a5,a4
- val += (*s - '0') * factor;
- 47b6: 7ae6f7c3 fmadd.d fa5,fa3,fa4,fa5
- while (isdigit(*s))
- 47ba: fee6f4e3 bgeu a3,a4,47a2 <strtod+0x9c>
- 47be: bf55 j 4772 <strtod+0x6c>
- while (isdigit(*s))
- 47c0: 00154783 lbu a5,1(a0)
- 47c4: 00001717 auipc a4,0x1
- 47c8: 00473507 fld fa0,4(a4) # 57c8 <STDIN_FD+0x8>
- s++;
- 47cc: 0505 addi a0,a0,1
- 47ce: b7ad j 4738 <strtod+0x32>
- while (isdigit(*s))
- 47d0: 00154783 lbu a5,1(a0)
- 47d4: 00001717 auipc a4,0x1
- 47d8: ffc73507 fld fa0,-4(a4) # 57d0 <STDIN_FD+0x10>
- s++;
- 47dc: 0505 addi a0,a0,1
- 47de: bfa9 j 4738 <strtod+0x32>
-
-00000000000047e0 <atof>:
-
-double atof(const char *nptr) { return strtod(nptr, NULL); }
- 47e0: 4581 li a1,0
- 47e2: b715 j 4706 <strtod>
-
-00000000000047e4 <strtof>:
-float strtof(const char *nptr, char **endptr) { return (float)strtod(nptr, endptr); }
- 47e4: 1141 addi sp,sp,-16
- 47e6: e406 sd ra,8(sp)
- 47e8: f1fff0ef jal 4706 <strtod>
- 47ec: 60a2 ld ra,8(sp)
- 47ee: 40157553 fcvt.s.d fa0,fa0
- 47f2: 0141 addi sp,sp,16
- 47f4: 8082 ret
-
-00000000000047f6 <qsort>:
- }
-}
-
-void qsort(void *base, size_t nmemb, size_t size, int (*compar)(const void *, const void *))
-{
- if (nmemb < 2 || size == 0)
- 47f6: 4785 li a5,1
- 47f8: 0cb7fd63 bgeu a5,a1,48d2 <qsort+0xdc>
-{
- 47fc: 715d addi sp,sp,-80
- 47fe: f44e sd s3,40(sp)
- 4800: e486 sd ra,72(sp)
- 4802: 89b2 mv s3,a2
- if (nmemb < 2 || size == 0)
- 4804: c279 beqz a2,48ca <qsort+0xd4>
- 4806: e85a sd s6,16(sp)
- 4808: 8b2e mv s6,a1
- return;
-
- char *base_ptr = (char *)base;
- char *pivot = base_ptr + (nmemb - 1) * size;
- 480a: 1b7d addi s6,s6,-1
- 480c: fc26 sd s1,56(sp)
- 480e: 033b04b3 mul s1,s6,s3
- 4812: ec56 sd s5,24(sp)
- 4814: 8aaa mv s5,a0
- 4816: f052 sd s4,32(sp)
- 4818: e45e sd s7,8(sp)
- 481a: e0a2 sd s0,64(sp)
- 481c: f84a sd s2,48(sp)
- 481e: 8a36 mv s4,a3
- if (nmemb < 2 || size == 0)
- 4820: 4b85 li s7,1
- char *pivot = base_ptr + (nmemb - 1) * size;
- 4822: 94d6 add s1,s1,s5
- char *i = base_ptr;
- char *j = base_ptr;
-
- /* Partition */
- for (; j < pivot; j += size)
- 4824: 069af763 bgeu s5,s1,4892 <qsort+0x9c>
- char *j = base_ptr;
- 4828: 8956 mv s2,s5
- char *i = base_ptr;
- 482a: 8456 mv s0,s5
- 482c: a021 j 4834 <qsort+0x3e>
- for (; j < pivot; j += size)
- 482e: 994e add s2,s2,s3
- 4830: 00997f63 bgeu s2,s1,484e <qsort+0x58>
- {
- if (compar(j, pivot) < 0)
- 4834: 85a6 mv a1,s1
- 4836: 854a mv a0,s2
- 4838: 9a02 jalr s4
- 483a: fe055ae3 bgez a0,482e <qsort+0x38>
- {
- if (i != j)
- 483e: 05241d63 bne s0,s2,4898 <qsort+0xa2>
- 4842: 01390633 add a2,s2,s3
- swap_bytes(i, j, size);
- i += size;
- 4846: 8432 mv s0,a2
- for (; j < pivot; j += size)
- 4848: 994e add s2,s2,s3
- 484a: fe9965e3 bltu s2,s1,4834 <qsort+0x3e>
- }
- }
- swap_bytes(i, pivot, size);
-
- /* Recurse */
- size_t left_count = (i - base_ptr) / size;
- 484e: 415405b3 sub a1,s0,s5
- 4852: 0335d5b3 divu a1,a1,s3
- qsort(base, left_count, size, compar);
- qsort(i + size, nmemb - left_count - 1, size, compar);
- 4856: 40bb0b33 sub s6,s6,a1
- while (size--)
- 485a: 013406b3 add a3,s0,s3
- *a++ = *b;
- 485e: 0004c703 lbu a4,0(s1)
- temp = *a;
- 4862: 00044783 lbu a5,0(s0)
- *b++ = temp;
- 4866: 0485 addi s1,s1,1
- *a++ = *b;
- 4868: 0405 addi s0,s0,1
- 486a: fee40fa3 sb a4,-1(s0)
- *b++ = temp;
- 486e: fef48fa3 sb a5,-1(s1)
- while (size--)
- 4872: fed416e3 bne s0,a3,485e <qsort+0x68>
- qsort(base, left_count, size, compar);
- 4876: 86d2 mv a3,s4
- 4878: 864e mv a2,s3
- 487a: 8556 mv a0,s5
- 487c: f7bff0ef jal 47f6 <qsort>
- if (nmemb < 2 || size == 0)
- 4880: 036bfe63 bgeu s7,s6,48bc <qsort+0xc6>
- char *pivot = base_ptr + (nmemb - 1) * size;
- 4884: 1b7d addi s6,s6,-1
- 4886: 033b04b3 mul s1,s6,s3
- 488a: 8aa2 mv s5,s0
- 488c: 94d6 add s1,s1,s5
- for (; j < pivot; j += size)
- 488e: f89aede3 bltu s5,s1,4828 <qsort+0x32>
- char *i = base_ptr;
- 4892: 8456 mv s0,s5
- for (; j < pivot; j += size)
- 4894: 4581 li a1,0
- 4896: b7d1 j 485a <qsort+0x64>
- 4898: 01340633 add a2,s0,s3
- if (i != j)
- 489c: 874a mv a4,s2
- 489e: 87a2 mv a5,s0
- *a++ = *b;
- 48a0: 00074683 lbu a3,0(a4)
- temp = *a;
- 48a4: 0007c803 lbu a6,0(a5)
- *b++ = temp;
- 48a8: 0705 addi a4,a4,1
- *a++ = *b;
- 48aa: 0785 addi a5,a5,1
- 48ac: fed78fa3 sb a3,-1(a5)
- *b++ = temp;
- 48b0: ff070fa3 sb a6,-1(a4)
- while (size--)
- 48b4: fec796e3 bne a5,a2,48a0 <qsort+0xaa>
- i += size;
- 48b8: 8432 mv s0,a2
- 48ba: b779 j 4848 <qsort+0x52>
- 48bc: 6406 ld s0,64(sp)
- 48be: 74e2 ld s1,56(sp)
- 48c0: 7942 ld s2,48(sp)
- 48c2: 7a02 ld s4,32(sp)
- 48c4: 6ae2 ld s5,24(sp)
- 48c6: 6b42 ld s6,16(sp)
- 48c8: 6ba2 ld s7,8(sp)
-}
- 48ca: 60a6 ld ra,72(sp)
- 48cc: 79a2 ld s3,40(sp)
- 48ce: 6161 addi sp,sp,80
- 48d0: 8082 ret
- 48d2: 8082 ret
-
-00000000000048d4 <bsearch>:
-
-void *bsearch(const void *key, const void *base, size_t nmemb, size_t size, int (*compar)(const void *, const void *))
-{
- 48d4: 715d addi sp,sp,-80
- 48d6: e486 sd ra,72(sp)
- 48d8: fc26 sd s1,56(sp)
- size_t l = 0, u = nmemb;
- while (l < u)
- 48da: c629 beqz a2,4924 <bsearch+0x50>
- 48dc: f84a sd s2,48(sp)
- 48de: f44e sd s3,40(sp)
- 48e0: f052 sd s4,32(sp)
- 48e2: ec56 sd s5,24(sp)
- 48e4: e85a sd s6,16(sp)
- 48e6: e45e sd s7,8(sp)
- 48e8: e0a2 sd s0,64(sp)
- 48ea: 8932 mv s2,a2
- 48ec: 8a2a mv s4,a0
- 48ee: 8aae mv s5,a1
- 48f0: 8b36 mv s6,a3
- 48f2: 8bba mv s7,a4
- size_t l = 0, u = nmemb;
- 48f4: 4981 li s3,0
- {
- size_t idx = (l + u) / 2;
- 48f6: 01298433 add s0,s3,s2
- 48fa: 8005 srli s0,s0,0x1
- const void *p = (void *)((const char *)base + (idx * size));
- 48fc: 036404b3 mul s1,s0,s6
- int cmp = compar(key, p);
- 4900: 8552 mv a0,s4
- const void *p = (void *)((const char *)base + (idx * size));
- 4902: 94d6 add s1,s1,s5
- int cmp = compar(key, p);
- 4904: 85a6 mv a1,s1
- 4906: 9b82 jalr s7
- if (cmp < 0)
- 4908: 02054463 bltz a0,4930 <bsearch+0x5c>
- u = idx;
- else if (cmp > 0)
- 490c: c515 beqz a0,4938 <bsearch+0x64>
- l = idx + 1;
- 490e: 00140993 addi s3,s0,1
- while (l < u)
- 4912: ff29e2e3 bltu s3,s2,48f6 <bsearch+0x22>
- 4916: 6406 ld s0,64(sp)
- 4918: 7942 ld s2,48(sp)
- 491a: 79a2 ld s3,40(sp)
- 491c: 7a02 ld s4,32(sp)
- 491e: 6ae2 ld s5,24(sp)
- 4920: 6b42 ld s6,16(sp)
- 4922: 6ba2 ld s7,8(sp)
- else
- return (void *)p;
- }
- return NULL;
-}
- 4924: 60a6 ld ra,72(sp)
- return NULL;
- 4926: 4481 li s1,0
-}
- 4928: 8526 mv a0,s1
- 492a: 74e2 ld s1,56(sp)
- 492c: 6161 addi sp,sp,80
- 492e: 8082 ret
- u = idx;
- 4930: 8922 mv s2,s0
- while (l < u)
- 4932: fd29e2e3 bltu s3,s2,48f6 <bsearch+0x22>
- 4936: b7c5 j 4916 <bsearch+0x42>
- 4938: 6406 ld s0,64(sp)
-}
- 493a: 60a6 ld ra,72(sp)
- 493c: 7942 ld s2,48(sp)
- 493e: 79a2 ld s3,40(sp)
- 4940: 7a02 ld s4,32(sp)
- 4942: 6ae2 ld s5,24(sp)
- 4944: 6b42 ld s6,16(sp)
- 4946: 6ba2 ld s7,8(sp)
- 4948: 8526 mv a0,s1
- 494a: 74e2 ld s1,56(sp)
- 494c: 6161 addi sp,sp,80
- 494e: 8082 ret
-
-0000000000004950 <abs>:
-
-/* Math & Mics */
-
-int abs(int j) { return (j < 0) ? -j : j; }
- 4950: 41f5579b sraiw a5,a0,0x1f
- 4954: 8d3d xor a0,a0,a5
- 4956: 9d1d subw a0,a0,a5
- 4958: 8082 ret
-
-000000000000495a <labs>:
-long labs(long j) { return (j < 0) ? -j : j; }
- 495a: 43f55793 srai a5,a0,0x3f
- 495e: 8d3d xor a0,a0,a5
- 4960: 8d1d sub a0,a0,a5
- 4962: 8082 ret
-
-0000000000004964 <llabs>:
-long long llabs(long long j) { return (j < 0) ? -j : j; }
- 4964: 43f55793 srai a5,a0,0x3f
- 4968: 8d3d xor a0,a0,a5
- 496a: 8d1d sub a0,a0,a5
- 496c: 8082 ret
-
-000000000000496e <div>:
-
-div_t div(int numer, int denom)
-{
- div_t res = {numer / denom, numer % denom};
- 496e: 02b547bb divw a5,a0,a1
-{
- 4972: 1141 addi sp,sp,-16
- return res;
-}
- 4974: 0141 addi sp,sp,16
- div_t res = {numer / denom, numer % denom};
- 4976: 02b5653b remw a0,a0,a1
- return res;
- 497a: 1782 slli a5,a5,0x20
- 497c: 9381 srli a5,a5,0x20
- 497e: 1502 slli a0,a0,0x20
-}
- 4980: 8d5d or a0,a0,a5
- 4982: 8082 ret
-
-0000000000004984 <ldiv>:
-ldiv_t ldiv(long numer, long denom)
-{
- 4984: 1141 addi sp,sp,-16
- 4986: 87aa mv a5,a0
- ldiv_t res = {numer / denom, numer % denom};
- return res;
-}
- 4988: 02b54533 div a0,a0,a1
- 498c: 0141 addi sp,sp,16
- 498e: 02b7e5b3 rem a1,a5,a1
- 4992: 8082 ret
-
-0000000000004994 <lldiv>:
-lldiv_t lldiv(long long numer, long long denom)
-{
- 4994: 1141 addi sp,sp,-16
- 4996: 87aa mv a5,a0
- lldiv_t res = {numer / denom, numer % denom};
- return res;
-}
- 4998: 02b54533 div a0,a0,a1
- 499c: 0141 addi sp,sp,16
- 499e: 02b7e5b3 rem a1,a5,a1
- 49a2: 8082 ret
-
-00000000000049a4 <rand>:
-
-static unsigned long next = 1;
-int rand(void)
-{
- next = next * 1103515245 + 12345;
- 49a4: 00003697 auipc a3,0x3
- 49a8: cd468693 addi a3,a3,-812 # 7678 <next>
- 49ac: 629c ld a5,0(a3)
- 49ae: 41c65737 lui a4,0x41c65
- 49b2: e6d70713 addi a4,a4,-403 # 41c64e6d <_ZSt4cerr+0x41c5d675>
- 49b6: 02e787b3 mul a5,a5,a4
- 49ba: 670d lui a4,0x3
- 49bc: 03970713 addi a4,a4,57 # 3039 <_vprintf_core.constprop.0.isra.0+0x25>
- 49c0: 97ba add a5,a5,a4
- return (unsigned int)(next / 65536) % 32768;
- 49c2: 02179513 slli a0,a5,0x21
- next = next * 1103515245 + 12345;
- 49c6: e29c sd a5,0(a3)
-}
- 49c8: 9145 srli a0,a0,0x31
- 49ca: 8082 ret
-
-00000000000049cc <srand>:
-void srand(unsigned int seed) { next = seed; }
- 49cc: 1502 slli a0,a0,0x20
- 49ce: 9101 srli a0,a0,0x20
- 49d0: 00003797 auipc a5,0x3
- 49d4: caa7b423 sd a0,-856(a5) # 7678 <next>
- 49d8: 8082 ret
-
-00000000000049da <mblen>:
-
-/* Stub */
-int mblen(const char *s, size_t n) { return (s && *s && n) ? 1 : 0; }
- 49da: c901 beqz a0,49ea <mblen+0x10>
- 49dc: 00054783 lbu a5,0(a0)
- 49e0: 4501 li a0,0
- 49e2: c789 beqz a5,49ec <mblen+0x12>
- 49e4: 00b03533 snez a0,a1
- 49e8: 8082 ret
- 49ea: 4501 li a0,0
- 49ec: 8082 ret
-
-00000000000049ee <mbtowc>:
-int mbtowc(wchar_t *pwc, const char *s, size_t n)
-{
- 49ee: 87aa mv a5,a0
- if (!s)
- 49f0: cd81 beqz a1,4a08 <mbtowc+0x1a>
- return 0;
- if (n == 0)
- return -1;
- 49f2: 557d li a0,-1
- if (n == 0)
- 49f4: ca19 beqz a2,4a0a <mbtowc+0x1c>
- if (pwc)
- 49f6: c781 beqz a5,49fe <mbtowc+0x10>
- *pwc = (wchar_t)*s;
- 49f8: 0005c703 lbu a4,0(a1)
- 49fc: c398 sw a4,0(a5)
- return (*s != 0);
- 49fe: 0005c503 lbu a0,0(a1)
- 4a02: 00a03533 snez a0,a0
- 4a06: 8082 ret
- return 0;
- 4a08: 4501 li a0,0
-}
- 4a0a: 8082 ret
-
-0000000000004a0c <wctomb>:
-int wctomb(char *s, wchar_t wchar)
-{
- if (!s)
- 4a0c: c509 beqz a0,4a16 <wctomb+0xa>
- return 0;
- *s = (char)wchar;
- 4a0e: 00b50023 sb a1,0(a0)
- return 1;
- 4a12: 4505 li a0,1
- 4a14: 8082 ret
- return 0;
- 4a16: 4501 li a0,0
-}
- 4a18: 8082 ret
-
-0000000000004a1a <mbstowcs>:
-size_t mbstowcs(wchar_t *dest, const char *src, size_t n)
-{
- size_t i = 0;
- while (src[i] && i < n)
- 4a1a: 0005c703 lbu a4,0(a1)
- 4a1e: cb0d beqz a4,4a50 <mbstowcs+0x36>
- 4a20: ca15 beqz a2,4a54 <mbstowcs+0x3a>
- 4a22: 86aa mv a3,a0
- size_t i = 0;
- 4a24: 4781 li a5,0
- 4a26: a019 j 4a2c <mbstowcs+0x12>
- while (src[i] && i < n)
- 4a28: 02f60263 beq a2,a5,4a4c <mbstowcs+0x32>
- {
- dest[i] = (wchar_t)src[i];
- i++;
- 4a2c: 0785 addi a5,a5,1
- dest[i] = (wchar_t)src[i];
- 4a2e: c298 sw a4,0(a3)
- while (src[i] && i < n)
- 4a30: 00f58733 add a4,a1,a5
- 4a34: 00074703 lbu a4,0(a4)
- 4a38: 0691 addi a3,a3,4
- 4a3a: f77d bnez a4,4a28 <mbstowcs+0xe>
- }
- if (i < n)
- 4a3c: 00c7f763 bgeu a5,a2,4a4a <mbstowcs+0x30>
- dest[i] = 0;
- 4a40: 00279713 slli a4,a5,0x2
- 4a44: 953a add a0,a0,a4
- 4a46: 00052023 sw zero,0(a0)
- size_t i = 0;
- 4a4a: 863e mv a2,a5
- 4a4c: 8532 mv a0,a2
- 4a4e: 8082 ret
- 4a50: 4781 li a5,0
- 4a52: b7ed j 4a3c <mbstowcs+0x22>
- 4a54: 4501 li a0,0
- return i;
-}
- 4a56: 8082 ret
-
-0000000000004a58 <wcstombs>:
-size_t wcstombs(char *dest, const wchar_t *src, size_t n)
-{
- size_t i = 0;
- while (src[i] && i < n)
- 4a58: 4198 lw a4,0(a1)
- 4a5a: c71d beqz a4,4a88 <wcstombs+0x30>
- 4a5c: ca05 beqz a2,4a8c <wcstombs+0x34>
- 4a5e: 0591 addi a1,a1,4
- size_t i = 0;
- 4a60: 4781 li a5,0
- 4a62: a019 j 4a68 <wcstombs+0x10>
- while (src[i] && i < n)
- 4a64: 02f60063 beq a2,a5,4a84 <wcstombs+0x2c>
- {
- dest[i] = (char)src[i];
- 4a68: 00f506b3 add a3,a0,a5
- 4a6c: 00e68023 sb a4,0(a3)
- while (src[i] && i < n)
- 4a70: 4198 lw a4,0(a1)
- i++;
- 4a72: 0785 addi a5,a5,1
- while (src[i] && i < n)
- 4a74: 0591 addi a1,a1,4
- 4a76: f77d bnez a4,4a64 <wcstombs+0xc>
- }
- if (i < n)
- 4a78: 00c7f563 bgeu a5,a2,4a82 <wcstombs+0x2a>
- dest[i] = 0;
- 4a7c: 953e add a0,a0,a5
- 4a7e: 00050023 sb zero,0(a0)
- size_t i = 0;
- 4a82: 863e mv a2,a5
- 4a84: 8532 mv a0,a2
- 4a86: 8082 ret
- 4a88: 4781 li a5,0
- 4a8a: b7fd j 4a78 <wcstombs+0x20>
- 4a8c: 4501 li a0,0
- return i;
- 4a8e: 8082 ret
-
-0000000000004a90 <memset>:
-
-void *memset(void *dst, int c, size_t n)
-{
- char *cdst = (char *)dst;
- for (size_t i = 0; i < n; i++)
- cdst[i] = (char)c;
- 4a90: 0ff5f593 zext.b a1,a1
- 4a94: 87aa mv a5,a0
- 4a96: 00a60733 add a4,a2,a0
- for (size_t i = 0; i < n; i++)
- 4a9a: c611 beqz a2,4aa6 <memset+0x16>
- cdst[i] = (char)c;
- 4a9c: 00b78023 sb a1,0(a5)
- for (size_t i = 0; i < n; i++)
- 4aa0: 0785 addi a5,a5,1
- 4aa2: fee79de3 bne a5,a4,4a9c <memset+0xc>
- return dst;
-}
- 4aa6: 8082 ret
-
-0000000000004aa8 <memmove>:
-
-void *memmove(void *vdst, const void *vsrc, size_t n)
-{
- char *dst = (char *)vdst;
- const char *src = (const char *)vsrc;
- if (dst == src)
- 4aa8: 02b50d63 beq a0,a1,4ae2 <memmove+0x3a>
- return vdst;
-
- if (src > dst)
- 4aac: 00b57e63 bgeu a0,a1,4ac8 <memmove+0x20>
- {
- while (n--)
- 4ab0: ca0d beqz a2,4ae2 <memmove+0x3a>
- 4ab2: 962a add a2,a2,a0
- char *dst = (char *)vdst;
- 4ab4: 87aa mv a5,a0
- *dst++ = *src++;
- 4ab6: 0005c703 lbu a4,0(a1)
- 4aba: 0785 addi a5,a5,1
- 4abc: 0585 addi a1,a1,1
- 4abe: fee78fa3 sb a4,-1(a5)
- while (n--)
- 4ac2: fec79ae3 bne a5,a2,4ab6 <memmove+0xe>
- 4ac6: 8082 ret
- }
- else
- {
- dst += n;
- 4ac8: 00c50733 add a4,a0,a2
- src += n;
- 4acc: 00c587b3 add a5,a1,a2
- while (n-- > 0)
- 4ad0: ca09 beqz a2,4ae2 <memmove+0x3a>
- *--dst = *--src;
- 4ad2: fff7c683 lbu a3,-1(a5)
- 4ad6: 17fd addi a5,a5,-1
- 4ad8: 177d addi a4,a4,-1
- 4ada: 00d70023 sb a3,0(a4)
- while (n-- > 0)
- 4ade: fef59ae3 bne a1,a5,4ad2 <memmove+0x2a>
- }
- return vdst;
-}
- 4ae2: 8082 ret
-
-0000000000004ae4 <memcpy>:
-
-void *memcpy(void *vdst, const void *vsrc, size_t n)
-{
- return memmove(vdst, vsrc, n);
- 4ae4: b7d1 j 4aa8 <memmove>
-
-0000000000004ae6 <memcmp>:
-
-int memcmp(const void *s1, const void *s2, size_t n)
-{
- const unsigned char *p1 = (const unsigned char *)s1;
- const unsigned char *p2 = (const unsigned char *)s2;
- while (n--)
- 4ae6: c205 beqz a2,4b06 <memcmp+0x20>
- 4ae8: 962a add a2,a2,a0
- 4aea: a019 j 4af0 <memcmp+0xa>
- 4aec: 00c50d63 beq a0,a2,4b06 <memcmp+0x20>
- {
- if (*p1 != *p2)
- 4af0: 00054783 lbu a5,0(a0)
- 4af4: 0005c703 lbu a4,0(a1)
- return *p1 - *p2;
- p1++;
- 4af8: 0505 addi a0,a0,1
- p2++;
- 4afa: 0585 addi a1,a1,1
- if (*p1 != *p2)
- 4afc: fee788e3 beq a5,a4,4aec <memcmp+0x6>
- return *p1 - *p2;
- 4b00: 40e7853b subw a0,a5,a4
- 4b04: 8082 ret
- }
- return 0;
- 4b06: 4501 li a0,0
-}
- 4b08: 8082 ret
-
-0000000000004b0a <memchr>:
-
-void *memchr(const void *s, int c, size_t n)
-{
- const unsigned char *p = (const unsigned char *)s;
- while (n--)
- 4b0a: ce09 beqz a2,4b24 <memchr+0x1a>
- {
- if (*p == (unsigned char)c)
- 4b0c: 0ff5f593 zext.b a1,a1
- 4b10: 962a add a2,a2,a0
- 4b12: a021 j 4b1a <memchr+0x10>
- return (void *)p;
- p++;
- 4b14: 0505 addi a0,a0,1
- while (n--)
- 4b16: 00a60763 beq a2,a0,4b24 <memchr+0x1a>
- if (*p == (unsigned char)c)
- 4b1a: 00054783 lbu a5,0(a0)
- 4b1e: feb79be3 bne a5,a1,4b14 <memchr+0xa>
- }
- return NULL;
-}
- 4b22: 8082 ret
- return NULL;
- 4b24: 4501 li a0,0
-}
- 4b26: 8082 ret
-
-0000000000004b28 <strlen>:
-/* String Manipulation Functions */
-
-size_t strlen(const char *s)
-{
- const char *p = s;
- while (*p)
- 4b28: 00054783 lbu a5,0(a0)
- 4b2c: cb89 beqz a5,4b3e <strlen+0x16>
- const char *p = s;
- 4b2e: 87aa mv a5,a0
- while (*p)
- 4b30: 0017c703 lbu a4,1(a5)
- p++;
- 4b34: 0785 addi a5,a5,1
- while (*p)
- 4b36: ff6d bnez a4,4b30 <strlen+0x8>
- return (size_t)(p - s);
- 4b38: 40a78533 sub a0,a5,a0
- 4b3c: 8082 ret
- while (*p)
- 4b3e: 4501 li a0,0
-}
- 4b40: 8082 ret
-
-0000000000004b42 <strcpy>:
-
-char *strcpy(char *dst, const char *src)
-{
- char *os = dst;
- while ((*dst++ = *src++) != 0)
- 4b42: 87aa mv a5,a0
- 4b44: 0005c703 lbu a4,0(a1)
- 4b48: 0785 addi a5,a5,1
- 4b4a: 0585 addi a1,a1,1
- 4b4c: fee78fa3 sb a4,-1(a5)
- 4b50: fb75 bnez a4,4b44 <strcpy+0x2>
- ;
- return os;
-}
- 4b52: 8082 ret
-
-0000000000004b54 <strncpy>:
-char *strncpy(char *dst, const char *src, size_t n)
-{
- char *os = dst;
- size_t i;
-
- for (i = 0; i < n && src[i] != '\0'; i++)
- 4b54: 4781 li a5,0
- 4b56: e619 bnez a2,4b64 <strncpy+0x10>
- 4b58: 8082 ret
- dst[i] = src[i];
- 4b5a: 00e68023 sb a4,0(a3)
- for (i = 0; i < n && src[i] != '\0'; i++)
- 4b5e: 0785 addi a5,a5,1
- 4b60: 02f60263 beq a2,a5,4b84 <strncpy+0x30>
- 4b64: 00f58733 add a4,a1,a5
- 4b68: 00074703 lbu a4,0(a4)
- dst[i] = src[i];
- 4b6c: 00f506b3 add a3,a0,a5
- for (i = 0; i < n && src[i] != '\0'; i++)
- 4b70: f76d bnez a4,4b5a <strncpy+0x6>
-
- for (; i < n; i++)
- 4b72: 00c7f963 bgeu a5,a2,4b84 <strncpy+0x30>
- 4b76: 87b6 mv a5,a3
- 4b78: 962a add a2,a2,a0
- dst[i] = '\0';
- 4b7a: 00078023 sb zero,0(a5)
- for (; i < n; i++)
- 4b7e: 0785 addi a5,a5,1
- 4b80: fec79de3 bne a5,a2,4b7a <strncpy+0x26>
-
- return os;
-}
- 4b84: 8082 ret
-
-0000000000004b86 <strcat>:
-
-char *strcat(char *dst, const char *src)
-{
- char *os = dst;
- while (*dst)
- 4b86: 00054783 lbu a5,0(a0)
- 4b8a: cf91 beqz a5,4ba6 <strcat+0x20>
- 4b8c: 87aa mv a5,a0
- 4b8e: 0017c703 lbu a4,1(a5)
- dst++;
- 4b92: 0785 addi a5,a5,1
- while (*dst)
- 4b94: ff6d bnez a4,4b8e <strcat+0x8>
- while ((*dst++ = *src++) != 0)
- 4b96: 0005c703 lbu a4,0(a1)
- 4b9a: 0785 addi a5,a5,1
- 4b9c: 0585 addi a1,a1,1
- 4b9e: fee78fa3 sb a4,-1(a5)
- 4ba2: fb75 bnez a4,4b96 <strcat+0x10>
- ;
- return os;
-}
- 4ba4: 8082 ret
- while ((*dst++ = *src++) != 0)
- 4ba6: 0005c703 lbu a4,0(a1)
- while (*dst)
- 4baa: 87aa mv a5,a0
- while ((*dst++ = *src++) != 0)
- 4bac: 0785 addi a5,a5,1
- 4bae: fee78fa3 sb a4,-1(a5)
- 4bb2: 0585 addi a1,a1,1
- 4bb4: f36d bnez a4,4b96 <strcat+0x10>
- 4bb6: 8082 ret
-
-0000000000004bb8 <strncat>:
- while (*p)
- 4bb8: 00054783 lbu a5,0(a0)
- const char *p = s;
- 4bbc: 872a mv a4,a0
- while (*p)
- 4bbe: c789 beqz a5,4bc8 <strncat+0x10>
- 4bc0: 00174783 lbu a5,1(a4)
- p++;
- 4bc4: 0705 addi a4,a4,1
- while (*p)
- 4bc6: ffed bnez a5,4bc0 <strncat+0x8>
- size_t dest_len = strlen(dst);
- size_t i;
-
- dst += dest_len;
-
- for (i = 0; i < n && src[i] != '\0'; i++)
- 4bc8: 86ba mv a3,a4
- 4bca: 4781 li a5,0
- 4bcc: 88ba mv a7,a4
- 4bce: ea01 bnez a2,4bde <strncat+0x26>
- 4bd0: a839 j 4bee <strncat+0x36>
- dst[i] = src[i];
- 4bd2: 01068023 sb a6,0(a3)
- for (i = 0; i < n && src[i] != '\0'; i++)
- 4bd6: 00188693 addi a3,a7,1
- 4bda: 00f60d63 beq a2,a5,4bf4 <strncat+0x3c>
- 4bde: 00f58833 add a6,a1,a5
- 4be2: 00084803 lbu a6,0(a6)
- 4be6: 0785 addi a5,a5,1
- dst[i] = src[i];
- 4be8: 88b6 mv a7,a3
- for (i = 0; i < n && src[i] != '\0'; i++)
- 4bea: fe0814e3 bnez a6,4bd2 <strncat+0x1a>
-
- dst[i] = '\0';
- 4bee: 00088023 sb zero,0(a7)
-
- return os;
-}
- 4bf2: 8082 ret
- dst[i] = '\0';
- 4bf4: 00c708b3 add a7,a4,a2
- 4bf8: 00088023 sb zero,0(a7)
-}
- 4bfc: 8082 ret
-
-0000000000004bfe <strcmp>:
-
-int strcmp(const char *p, const char *q)
-{
- while (*p && *p == *q)
- 4bfe: 00054783 lbu a5,0(a0)
- 4c02: e791 bnez a5,4c0e <strcmp+0x10>
- 4c04: a02d j 4c2e <strcmp+0x30>
- 4c06: 00054783 lbu a5,0(a0)
- 4c0a: cf89 beqz a5,4c24 <strcmp+0x26>
- 4c0c: 85b6 mv a1,a3
- 4c0e: 0005c703 lbu a4,0(a1)
- {
- p++;
- 4c12: 0505 addi a0,a0,1
- q++;
- 4c14: 00158693 addi a3,a1,1
- while (*p && *p == *q)
- 4c18: fef707e3 beq a4,a5,4c06 <strcmp+0x8>
- }
- return (int)((unsigned char)*p - (unsigned char)*q);
- 4c1c: 0007851b sext.w a0,a5
-}
- 4c20: 9d19 subw a0,a0,a4
- 4c22: 8082 ret
- return (int)((unsigned char)*p - (unsigned char)*q);
- 4c24: 0015c703 lbu a4,1(a1)
- 4c28: 4501 li a0,0
-}
- 4c2a: 9d19 subw a0,a0,a4
- 4c2c: 8082 ret
- return (int)((unsigned char)*p - (unsigned char)*q);
- 4c2e: 0005c703 lbu a4,0(a1)
- 4c32: 4501 li a0,0
- 4c34: b7f5 j 4c20 <strcmp+0x22>
-
-0000000000004c36 <strncmp>:
-
-int strncmp(const char *s1, const char *s2, size_t n)
-{
- if (n == 0)
- 4c36: ca0d beqz a2,4c68 <strncmp+0x32>
- return 0;
-
- while (n-- > 0 && *s1 && *s1 == *s2)
- 4c38: 00054783 lbu a5,0(a0)
- 4c3c: 167d addi a2,a2,-1
- 4c3e: 00c506b3 add a3,a0,a2
- 4c42: eb89 bnez a5,4c54 <strncmp+0x1e>
- 4c44: a80d j 4c76 <strncmp+0x40>
- {
- if (n == 0 || *s1 == '\0')
- 4c46: 00d50d63 beq a0,a3,4c60 <strncmp+0x2a>
- while (n-- > 0 && *s1 && *s1 == *s2)
- 4c4a: 00154783 lbu a5,1(a0)
- break;
- s1++;
- 4c4e: 0505 addi a0,a0,1
- while (n-- > 0 && *s1 && *s1 == *s2)
- 4c50: cf91 beqz a5,4c6c <strncmp+0x36>
- 4c52: 85b2 mv a1,a2
- 4c54: 0005c703 lbu a4,0(a1)
- s2++;
- 4c58: 00158613 addi a2,a1,1
- while (n-- > 0 && *s1 && *s1 == *s2)
- 4c5c: fef705e3 beq a4,a5,4c46 <strncmp+0x10>
- }
- return (int)((unsigned char)*s1 - (unsigned char)*s2);
- 4c60: 0007851b sext.w a0,a5
- 4c64: 9d19 subw a0,a0,a4
- 4c66: 8082 ret
- return 0;
- 4c68: 4501 li a0,0
-}
- 4c6a: 8082 ret
- return (int)((unsigned char)*s1 - (unsigned char)*s2);
- 4c6c: 0015c703 lbu a4,1(a1)
- 4c70: 4501 li a0,0
- 4c72: 9d19 subw a0,a0,a4
- 4c74: 8082 ret
- 4c76: 0005c703 lbu a4,0(a1)
- 4c7a: 4501 li a0,0
- 4c7c: b7e5 j 4c64 <strncmp+0x2e>
-
-0000000000004c7e <strchr>:
-
-char *strchr(const char *s, int c)
-{
- while (*s != (char)c)
- 4c7e: 0ff5f593 zext.b a1,a1
- 4c82: a019 j 4c88 <strchr+0xa>
- {
- if (!*s++)
- 4c84: 0505 addi a0,a0,1
- 4c86: c791 beqz a5,4c92 <strchr+0x14>
- while (*s != (char)c)
- 4c88: 00054783 lbu a5,0(a0)
- 4c8c: feb79ce3 bne a5,a1,4c84 <strchr+0x6>
- 4c90: 8082 ret
- return NULL;
- 4c92: 4501 li a0,0
- }
- return (char *)s;
-}
- 4c94: 8082 ret
-
-0000000000004c96 <strrchr>:
-
-char *strrchr(const char *s, int c)
-{
- 4c96: 87aa mv a5,a0
- const char *last = NULL;
- do
- {
- if (*s == (char)c)
- 4c98: 0ff5f593 zext.b a1,a1
- const char *last = NULL;
- 4c9c: 4501 li a0,0
- if (*s == (char)c)
- 4c9e: 0007c703 lbu a4,0(a5)
- 4ca2: 00e59363 bne a1,a4,4ca8 <strrchr+0x12>
- last = s;
- 4ca6: 853e mv a0,a5
- } while (*s++);
- 4ca8: 0785 addi a5,a5,1
- 4caa: fb75 bnez a4,4c9e <strrchr+0x8>
-
- return (char *)last;
-}
- 4cac: 8082 ret
-
-0000000000004cae <strstr>:
- while (*p)
- 4cae: 0005c883 lbu a7,0(a1)
- 4cb2: 04088a63 beqz a7,4d06 <strstr+0x58>
- const char *p = s;
- 4cb6: 87ae mv a5,a1
- while (*p)
- 4cb8: 0017c703 lbu a4,1(a5)
- p++;
- 4cbc: 0785 addi a5,a5,1
- while (*p)
- 4cbe: ff6d bnez a4,4cb8 <strstr+0xa>
- return (size_t)(p - s);
- 4cc0: 40b78833 sub a6,a5,a1
-
-
-char *strstr(const char *haystack, const char *needle)
-{
- size_t n_len = strlen(needle);
- if (n_len == 0)
- 4cc4: 04b78163 beq a5,a1,4d06 <strstr+0x58>
- return (char *)haystack;
-
- for (; *haystack; haystack++)
- 4cc8: 00054783 lbu a5,0(a0)
- 4ccc: cf85 beqz a5,4d04 <strstr+0x56>
- 4cce: 187d addi a6,a6,-1
- 4cd0: 982a add a6,a6,a0
- {
- if (*haystack != *needle)
- 4cd2: 02f89463 bne a7,a5,4cfa <strstr+0x4c>
- while (n-- > 0 && *s1 && *s1 == *s2)
- 4cd6: 00054703 lbu a4,0(a0)
- 4cda: 8646 mv a2,a7
- 4cdc: 86ae mv a3,a1
- 4cde: 87aa mv a5,a0
- 4ce0: eb11 bnez a4,4cf4 <strstr+0x46>
- 4ce2: a821 j 4cfa <strstr+0x4c>
- if (n == 0 || *s1 == '\0')
- 4ce4: 03078163 beq a5,a6,4d06 <strstr+0x58>
- while (n-- > 0 && *s1 && *s1 == *s2)
- 4ce8: 0017c703 lbu a4,1(a5)
- return (int)((unsigned char)*s1 - (unsigned char)*s2);
- 4cec: 0006c603 lbu a2,0(a3)
- s1++;
- 4cf0: 0785 addi a5,a5,1
- while (n-- > 0 && *s1 && *s1 == *s2)
- 4cf2: cb19 beqz a4,4d08 <strstr+0x5a>
- s2++;
- 4cf4: 0685 addi a3,a3,1
- while (n-- > 0 && *s1 && *s1 == *s2)
- 4cf6: fee607e3 beq a2,a4,4ce4 <strstr+0x36>
- for (; *haystack; haystack++)
- 4cfa: 00154783 lbu a5,1(a0)
- 4cfe: 0805 addi a6,a6,1
- 4d00: 0505 addi a0,a0,1
- 4d02: fbe1 bnez a5,4cd2 <strstr+0x24>
- continue;
-
- if (strncmp(haystack, needle, n_len) == 0)
- return (char *)haystack;
- }
- return NULL;
- 4d04: 4501 li a0,0
-}
- 4d06: 8082 ret
- if (strncmp(haystack, needle, n_len) == 0)
- 4d08: de7d beqz a2,4d06 <strstr+0x58>
- for (; *haystack; haystack++)
- 4d0a: 00154783 lbu a5,1(a0)
- 4d0e: 0805 addi a6,a6,1
- 4d10: 0505 addi a0,a0,1
- 4d12: f3e1 bnez a5,4cd2 <strstr+0x24>
- 4d14: bfc5 j 4d04 <strstr+0x56>
-
-0000000000004d16 <strdup>:
-
-char *strdup(const char *s)
-{
- 4d16: 1101 addi sp,sp,-32
- 4d18: e426 sd s1,8(sp)
- 4d1a: ec06 sd ra,24(sp)
- 4d1c: e822 sd s0,16(sp)
- while (*p)
- 4d1e: 00054783 lbu a5,0(a0)
-{
- 4d22: 84aa mv s1,a0
- while (*p)
- 4d24: cb8d beqz a5,4d56 <strdup+0x40>
- const char *p = s;
- 4d26: 862a mv a2,a0
- while (*p)
- 4d28: 00164783 lbu a5,1(a2)
- p++;
- 4d2c: 0605 addi a2,a2,1
- while (*p)
- 4d2e: ffed bnez a5,4d28 <strdup+0x12>
- return (size_t)(p - s);
- 4d30: 8e05 sub a2,a2,s1
- size_t len = strlen(s) + 1;
- 4d32: 00160413 addi s0,a2,1
- char *new_str = (char *)malloc(len);
- 4d36: 8522 mv a0,s0
- 4d38: f4eff0ef jal 4486 <malloc>
- if (new_str == NULL)
- 4d3c: c901 beqz a0,4d4c <strdup+0x36>
- return memmove(vdst, vsrc, n);
- 4d3e: 8622 mv a2,s0
- return NULL;
-
- return (char *)memcpy(new_str, s, len);
-}
- 4d40: 6442 ld s0,16(sp)
- 4d42: 60e2 ld ra,24(sp)
- return memmove(vdst, vsrc, n);
- 4d44: 85a6 mv a1,s1
-}
- 4d46: 64a2 ld s1,8(sp)
- 4d48: 6105 addi sp,sp,32
- return memmove(vdst, vsrc, n);
- 4d4a: bbb9 j 4aa8 <memmove>
-}
- 4d4c: 60e2 ld ra,24(sp)
- 4d4e: 6442 ld s0,16(sp)
- 4d50: 64a2 ld s1,8(sp)
- 4d52: 6105 addi sp,sp,32
- 4d54: 8082 ret
- while (*p)
- 4d56: 4405 li s0,1
- 4d58: bff9 j 4d36 <strdup+0x20>
-
-0000000000004d5a <strlcpy>:
- 4d5a: 0005c783 lbu a5,0(a1)
-
-size_t strlcpy(char *dst, const char *src, size_t size)
-{
- 4d5e: 1101 addi sp,sp,-32
- 4d60: ec06 sd ra,24(sp)
- 4d62: e822 sd s0,16(sp)
- 4d64: 86b2 mv a3,a2
- while (*p)
- 4d66: cf8d beqz a5,4da0 <strlcpy+0x46>
- const char *p = s;
- 4d68: 87ae mv a5,a1
- while (*p)
- 4d6a: 0017c703 lbu a4,1(a5)
- p++;
- 4d6e: 0785 addi a5,a5,1
- while (*p)
- 4d70: ff6d bnez a4,4d6a <strlcpy+0x10>
- return (size_t)(p - s);
- 4d72: 40b78433 sub s0,a5,a1
- size_t src_len = strlen(src);
-
- if (size > 0)
- 4d76: c285 beqz a3,4d96 <strlcpy+0x3c>
- 4d78: e426 sd s1,8(sp)
- {
- size_t copy_len = (src_len >= size) ? size - 1 : src_len;
- 4d7a: fff68613 addi a2,a3,-1
- memcpy(dst, src, copy_len);
- dst[copy_len] = '\0';
- 4d7e: 00c504b3 add s1,a0,a2
- size_t copy_len = (src_len >= size) ? size - 1 : src_len;
- 4d82: 00d47563 bgeu s0,a3,4d8c <strlcpy+0x32>
- dst[copy_len] = '\0';
- 4d86: 008504b3 add s1,a0,s0
- size_t copy_len = (src_len >= size) ? size - 1 : src_len;
- 4d8a: 8622 mv a2,s0
- return memmove(vdst, vsrc, n);
- 4d8c: d1dff0ef jal 4aa8 <memmove>
- dst[copy_len] = '\0';
- 4d90: 00048023 sb zero,0(s1)
- }
-
- return src_len;
- 4d94: 64a2 ld s1,8(sp)
-}
- 4d96: 60e2 ld ra,24(sp)
- 4d98: 8522 mv a0,s0
- 4d9a: 6442 ld s0,16(sp)
- 4d9c: 6105 addi sp,sp,32
- 4d9e: 8082 ret
- if (size > 0)
- 4da0: e219 bnez a2,4da6 <strlcpy+0x4c>
- return (size_t)(p - s);
- 4da2: 4401 li s0,0
- 4da4: bfcd j 4d96 <strlcpy+0x3c>
- 4da6: e426 sd s1,8(sp)
- 4da8: 4401 li s0,0
- if (size > 0)
- 4daa: 84aa mv s1,a0
- size_t copy_len = (src_len >= size) ? size - 1 : src_len;
- 4dac: 4601 li a2,0
- 4dae: bff9 j 4d8c <strlcpy+0x32>
-
-0000000000004db0 <strlcat>:
- while (*p)
- 4db0: 0005c783 lbu a5,0(a1)
-
-size_t strlcat(char *dst, const char *src, size_t size)
-{
- 4db4: 7179 addi sp,sp,-48
- 4db6: e84a sd s2,16(sp)
- 4db8: f406 sd ra,40(sp)
- 4dba: f022 sd s0,32(sp)
- 4dbc: ec26 sd s1,24(sp)
- 4dbe: 892a mv s2,a0
- while (*p)
- 4dc0: c7b5 beqz a5,4e2c <strlcat+0x7c>
- const char *p = s;
- 4dc2: 87ae mv a5,a1
- while (*p)
- 4dc4: 0017c703 lbu a4,1(a5)
- p++;
- 4dc8: 0785 addi a5,a5,1
- while (*p)
- 4dca: ff6d bnez a4,4dc4 <strlcat+0x14>
- return (size_t)(p - s);
- 4dcc: 40b784b3 sub s1,a5,a1
- size_t dst_len = 0;
- 4dd0: 4401 li s0,0
- size_t src_len = strlen(src);
-
- while (dst_len < size && dst[dst_len] != '\0')
- 4dd2: e609 bnez a2,4ddc <strlcat+0x2c>
- 4dd4: a0a1 j 4e1c <strlcat+0x6c>
- dst_len++;
- 4dd6: 0405 addi s0,s0,1
- while (dst_len < size && dst[dst_len] != '\0')
- 4dd8: 04860263 beq a2,s0,4e1c <strlcat+0x6c>
- 4ddc: 00890533 add a0,s2,s0
- 4de0: 00054783 lbu a5,0(a0)
- 4de4: fbed bnez a5,4dd6 <strlcat+0x26>
-
- if (dst_len == size)
- 4de6: 02860b63 beq a2,s0,4e1c <strlcat+0x6c>
- 4dea: e44e sd s3,8(sp)
- return size + src_len;
-
- size_t space_left = size - dst_len;
- 4dec: 408607b3 sub a5,a2,s0
- size_t copy_len = (src_len >= space_left) ? space_left - 1 : src_len;
- 4df0: 89a6 mv s3,s1
- 4df2: 02f4f263 bgeu s1,a5,4e16 <strlcat+0x66>
-
- memcpy(dst + dst_len, src, copy_len);
- dst[dst_len + copy_len] = '\0';
- 4df6: 994e add s2,s2,s3
- 4df8: 9922 add s2,s2,s0
- return memmove(vdst, vsrc, n);
- 4dfa: 864e mv a2,s3
- 4dfc: cadff0ef jal 4aa8 <memmove>
- dst[dst_len + copy_len] = '\0';
- 4e00: 00090023 sb zero,0(s2) # 1000 <_vscanf_core.constprop.0+0x6d0>
-
- return dst_len + src_len;
- 4e04: 00940533 add a0,s0,s1
-}
- 4e08: 70a2 ld ra,40(sp)
- 4e0a: 7402 ld s0,32(sp)
- return dst_len + src_len;
- 4e0c: 69a2 ld s3,8(sp)
-}
- 4e0e: 64e2 ld s1,24(sp)
- 4e10: 6942 ld s2,16(sp)
- 4e12: 6145 addi sp,sp,48
- 4e14: 8082 ret
- size_t copy_len = (src_len >= space_left) ? space_left - 1 : src_len;
- 4e16: fff78993 addi s3,a5,-1
- 4e1a: bff1 j 4df6 <strlcat+0x46>
-}
- 4e1c: 70a2 ld ra,40(sp)
- 4e1e: 7402 ld s0,32(sp)
- 4e20: 6942 ld s2,16(sp)
- return size + src_len;
- 4e22: 00960533 add a0,a2,s1
-}
- 4e26: 64e2 ld s1,24(sp)
- 4e28: 6145 addi sp,sp,48
- 4e2a: 8082 ret
- while (*p)
- 4e2c: 4481 li s1,0
- 4e2e: b74d j 4dd0 <strlcat+0x20>
-
-0000000000004e30 <strspn>:
-size_t strspn(const char *s, const char *accept)
-{
- const char *p = s;
- const char *a;
-
- while (*p)
- 4e30: 00054683 lbu a3,0(a0)
- 4e34: c695 beqz a3,4e60 <strspn+0x30>
- {
- for (a = accept; *a; a++)
- 4e36: 0005c803 lbu a6,0(a1)
- 4e3a: 862a mv a2,a0
- 4e3c: 00080f63 beqz a6,4e5a <strspn+0x2a>
- 4e40: 87ae mv a5,a1
- 4e42: 8742 mv a4,a6
- 4e44: a021 j 4e4c <strspn+0x1c>
- 4e46: 0007c703 lbu a4,0(a5)
- 4e4a: cb01 beqz a4,4e5a <strspn+0x2a>
- 4e4c: 0785 addi a5,a5,1
- {
- if (*p == *a)
- 4e4e: fee69ce3 bne a3,a4,4e46 <strspn+0x16>
- while (*p)
- 4e52: 00164683 lbu a3,1(a2)
- break;
- }
- if (*a == '\0')
- return (size_t)(p - s);
- p++;
- 4e56: 0605 addi a2,a2,1
- while (*p)
- 4e58: f6e5 bnez a3,4e40 <strspn+0x10>
- }
- return (size_t)(p - s);
- 4e5a: 40a60533 sub a0,a2,a0
- 4e5e: 8082 ret
- while (*p)
- 4e60: 4501 li a0,0
-}
- 4e62: 8082 ret
-
-0000000000004e64 <strcspn>:
-size_t strcspn(const char *s, const char *reject)
-{
- const char *p = s;
- const char *r;
-
- while (*p)
- 4e64: 00054683 lbu a3,0(a0)
- 4e68: ce85 beqz a3,4ea0 <strcspn+0x3c>
- {
- for (r = reject; *r; r++)
- 4e6a: 0005c803 lbu a6,0(a1)
- const char *p = s;
- 4e6e: 862a mv a2,a0
- for (r = reject; *r; r++)
- 4e70: 02080363 beqz a6,4e96 <strcspn+0x32>
- 4e74: 87ae mv a5,a1
- 4e76: 8742 mv a4,a6
- 4e78: a021 j 4e80 <strcspn+0x1c>
- 4e7a: 0007c703 lbu a4,0(a5)
- 4e7e: c719 beqz a4,4e8c <strcspn+0x28>
- 4e80: 0785 addi a5,a5,1
- {
- if (*p == *r)
- 4e82: fed71ce3 bne a4,a3,4e7a <strcspn+0x16>
- return (size_t)(p - s);
- }
- p++;
- }
- return (size_t)(p - s);
- 4e86: 40a60533 sub a0,a2,a0
- 4e8a: 8082 ret
- while (*p)
- 4e8c: 00164683 lbu a3,1(a2)
- p++;
- 4e90: 0605 addi a2,a2,1
- while (*p)
- 4e92: f2ed bnez a3,4e74 <strcspn+0x10>
- 4e94: bfcd j 4e86 <strcspn+0x22>
- 4e96: 00164683 lbu a3,1(a2)
- p++;
- 4e9a: 0605 addi a2,a2,1
- while (*p)
- 4e9c: feed bnez a3,4e96 <strcspn+0x32>
- 4e9e: b7e5 j 4e86 <strcspn+0x22>
- 4ea0: 4501 li a0,0
-}
- 4ea2: 8082 ret
-
-0000000000004ea4 <strpbrk>:
-
-char *strpbrk(const char *s, const char *accept)
-{
- const char *a;
- while (*s)
- 4ea4: 00054683 lbu a3,0(a0)
- 4ea8: c295 beqz a3,4ecc <strpbrk+0x28>
- {
- for (a = accept; *a; a++)
- 4eaa: 0005c603 lbu a2,0(a1)
- 4eae: c20d beqz a2,4ed0 <strpbrk+0x2c>
- 4eb0: 87ae mv a5,a1
- 4eb2: 8732 mv a4,a2
- 4eb4: a021 j 4ebc <strpbrk+0x18>
- 4eb6: 0007c703 lbu a4,0(a5)
- 4eba: c709 beqz a4,4ec4 <strpbrk+0x20>
- 4ebc: 0785 addi a5,a5,1
- {
- if (*s == *a)
- 4ebe: fed71ce3 bne a4,a3,4eb6 <strpbrk+0x12>
- return (char *)s;
- }
- s++;
- }
- return NULL;
-}
- 4ec2: 8082 ret
- while (*s)
- 4ec4: 00154683 lbu a3,1(a0)
- s++;
- 4ec8: 0505 addi a0,a0,1
- while (*s)
- 4eca: f2fd bnez a3,4eb0 <strpbrk+0xc>
- return NULL;
- 4ecc: 4501 li a0,0
-}
- 4ece: 8082 ret
- while (*s)
- 4ed0: 00154683 lbu a3,1(a0)
- s++;
- 4ed4: 0505 addi a0,a0,1
- while (*s)
- 4ed6: feed bnez a3,4ed0 <strpbrk+0x2c>
- 4ed8: bfd5 j 4ecc <strpbrk+0x28>
-
-0000000000004eda <strtok>:
-char *strtok(char *str, const char *delim)
-{
- static char *olds;
- char *token;
-
- if (str == NULL)
- 4eda: 00003897 auipc a7,0x3
- 4ede: 90688893 addi a7,a7,-1786 # 77e0 <olds.0>
- 4ee2: cd25 beqz a0,4f5a <strtok+0x80>
- while (*p)
- 4ee4: 00054683 lbu a3,0(a0)
- 4ee8: c295 beqz a3,4f0c <strtok+0x32>
- for (a = accept; *a; a++)
- 4eea: 0005c803 lbu a6,0(a1)
- 4eee: 02080463 beqz a6,4f16 <strtok+0x3c>
- 4ef2: 87ae mv a5,a1
- 4ef4: 8742 mv a4,a6
- 4ef6: a021 j 4efe <strtok+0x24>
- 4ef8: 0007c703 lbu a4,0(a5)
- 4efc: cf09 beqz a4,4f16 <strtok+0x3c>
- 4efe: 0785 addi a5,a5,1
- if (*p == *a)
- 4f00: fee69ce3 bne a3,a4,4ef8 <strtok+0x1e>
- while (*p)
- 4f04: 00154683 lbu a3,1(a0)
- p++;
- 4f08: 0505 addi a0,a0,1
- while (*p)
- 4f0a: f6e5 bnez a3,4ef2 <strtok+0x18>
- 4f0c: 87aa mv a5,a0
- str = olds;
-
- str += strspn(str, delim);
- if (*str == '\0')
- {
- olds = str;
- 4f0e: 00f8b023 sd a5,0(a7)
- return NULL;
- 4f12: 4501 li a0,0
- *str = '\0';
- olds = str + 1;
- }
-
- return token;
-}
- 4f14: 8082 ret
- if (*str == '\0')
- 4f16: 00054603 lbu a2,0(a0)
- 4f1a: da6d beqz a2,4f0c <strtok+0x32>
- 4f1c: 86aa mv a3,a0
- for (a = accept; *a; a++)
- 4f1e: 04080163 beqz a6,4f60 <strtok+0x86>
- 4f22: 8742 mv a4,a6
- 4f24: 87ae mv a5,a1
- 4f26: a021 j 4f2e <strtok+0x54>
- 4f28: 0007c703 lbu a4,0(a5)
- 4f2c: cb19 beqz a4,4f42 <strtok+0x68>
- 4f2e: 0785 addi a5,a5,1
- if (*s == *a)
- 4f30: fee61ce3 bne a2,a4,4f28 <strtok+0x4e>
- olds = str + 1;
- 4f34: 00168793 addi a5,a3,1
- *str = '\0';
- 4f38: 00068023 sb zero,0(a3)
- olds = str;
- 4f3c: 00f8b023 sd a5,0(a7)
-}
- 4f40: 8082 ret
- while (*s)
- 4f42: 0016c603 lbu a2,1(a3)
- s++;
- 4f46: 0685 addi a3,a3,1
- while (*s)
- 4f48: fe69 bnez a2,4f22 <strtok+0x48>
- 4f4a: 87aa mv a5,a0
- while (*s != (char)c)
- 4f4c: 0017c703 lbu a4,1(a5)
- if (!*s++)
- 4f50: 0785 addi a5,a5,1
- while (*s != (char)c)
- 4f52: ff6d bnez a4,4f4c <strtok+0x72>
- olds = str;
- 4f54: 00f8b023 sd a5,0(a7)
-}
- 4f58: 8082 ret
- str = olds;
- 4f5a: 0008b503 ld a0,0(a7)
- 4f5e: b759 j 4ee4 <strtok+0xa>
- while (*s)
- 4f60: 0016c603 lbu a2,1(a3)
- s++;
- 4f64: 0685 addi a3,a3,1
- while (*s)
- 4f66: fe6d bnez a2,4f60 <strtok+0x86>
- 4f68: b7cd j 4f4a <strtok+0x70>
-
-0000000000004f6a <strerror>:
-
-char *strerror(int errnum)
-{
- 4f6a: 87aa mv a5,a0
-
- switch (errnum)
- 4f6c: cd09 beqz a0,4f86 <strerror+0x1c>
- 4f6e: 4731 li a4,12
- 4f70: 00000517 auipc a0,0x0
- 4f74: 16050513 addi a0,a0,352 # 50d0 <_GLOBAL__sub_I__ZSt3cin+0x128>
- 4f78: 00e78b63 beq a5,a4,4f8e <strerror+0x24>
- return "Success";
- // case EINVAL: return "Invalid argument";
- case ENOMEM: return "Out of memory";
-
- default:
- return "Unknown error";
- 4f7c: 00000517 auipc a0,0x0
- 4f80: 16450513 addi a0,a0,356 # 50e0 <_GLOBAL__sub_I__ZSt3cin+0x138>
- 4f84: 8082 ret
- return "Success";
- 4f86: 00000517 auipc a0,0x0
- 4f8a: 14250513 addi a0,a0,322 # 50c8 <_GLOBAL__sub_I__ZSt3cin+0x120>
- }
- 4f8e: 8082 ret
-
-0000000000004f90 <_Znwm>:
-#include "ulib/stdlib.h"
-
-void *operator new(unsigned long n)
-{
- return malloc(n);
- 4f90: cf6ff06f j 4486 <malloc>
-
-0000000000004f94 <_Znam>:
-}
-
-void *operator new[](unsigned long n)
- 4f94: cf2ff06f j 4486 <malloc>
-
-0000000000004f98 <_ZdlPv>:
- return malloc(n);
-}
-
-void operator delete(void *p)
-{
- free(p);
- 4f98: c78ff06f j 4410 <free>
-
-0000000000004f9c <_ZdaPv>:
-}
-
-void operator delete[](void *p)
- 4f9c: c74ff06f j 4410 <free>
-
-0000000000004fa0 <_ZdlPvm>:
- free(p);
-}
-
-void operator delete(void *p, unsigned long)
-{
- free(p);
- 4fa0: c70ff06f j 4410 <free>
-
-0000000000004fa4 <_ZdaPvm>:
-}
-
-void operator delete[](void *p, unsigned long)
- 4fa4: c6cff06f j 4410 <free>
-
-0000000000004fa8 <_GLOBAL__sub_I__ZSt3cin>:
-#include "ulib/iostream"
-
-namespace std
-{
- istream cin(stdin);
- 4fa8: 00002797 auipc a5,0x2
- 4fac: 6e87b783 ld a5,1768(a5) # 7690 <_GLOBAL_OFFSET_TABLE_+0x10>
- 4fb0: 6390 ld a2,0(a5)
- ostream cout(stdout);
- 4fb2: 00002797 auipc a5,0x2
- 4fb6: 6d67b783 ld a5,1750(a5) # 7688 <_GLOBAL_OFFSET_TABLE_+0x8>
- 4fba: 6394 ld a3,0(a5)
- ostream cerr(stderr);
- 4fbc: 00002797 auipc a5,0x2
- 4fc0: 6dc7b783 ld a5,1756(a5) # 7698 <_GLOBAL_OFFSET_TABLE_+0x18>
- 4fc4: 6398 ld a4,0(a5)
-
- class istream{
- private:
- FILE* _stream;
- public:
- istream(FILE *f) : _stream(f) {}
- 4fc6: 00003797 auipc a5,0x3
- 4fca: 82278793 addi a5,a5,-2014 # 77e8 <_ZSt3cin>
- 4fce: e390 sd a2,0(a5)
- ostream(FILE* f) : _stream(f) {}
- 4fd0: e794 sd a3,8(a5)
- 4fd2: eb98 sd a4,16(a5)
-} // namespace std
- 4fd4: 8082 ret
diff --git a/build/user/mkdir.sym b/build/user/mkdir.sym
deleted file mode 100644
index 475d722..0000000
--- a/build/user/mkdir.sym
+++ /dev/null
@@ -1,189 +0,0 @@
-0000000000000000 .text
-0000000000004fd8 .rodata
-00000000000057f8 .eh_frame
-00000000000068f8 .data
-0000000000007680 .got
-00000000000076a0 .got.plt
-00000000000076b0 .init_array
-00000000000076b8 .bss
-0000000000000000 .debug_info
-0000000000000000 .debug_abbrev
-0000000000000000 .debug_loclists
-0000000000000000 .debug_aranges
-0000000000000000 .debug_rnglists
-0000000000000000 .debug_line
-0000000000000000 .debug_str
-0000000000000000 .debug_line_str
-0000000000000000 .comment
-0000000000000000 .riscv.attributes
-0000000000000000 mkdir.cc
-0000000000000000 entry.o
-0000000000000000 usys.o
-0000000000000000 stdio.c
-0000000000000148 stbsp__clamp_callback
-0000000000000196 stbsp__count_clamp_callback
-00000000000001a2 stbsp__real_to_str
-0000000000000876 _in_char.part.0
-00000000000008bc _skip_space
-0000000000000930 _vscanf_core.constprop.0
-00000000000011a0 _out_char
-0000000000003014 _vprintf_core.constprop.0.isra.0
-0000000000006900 stbsp__digitpair
-00000000000069cc stbsp__period
-00000000000069cd stbsp__comma
-00000000000069d0 hexu.1
-00000000000069e8 hex.0
-0000000000006a00 _stderr
-0000000000006e20 _stdout
-0000000000007240 _stdin
-0000000000005360 stbsp__bot
-0000000000005418 stbsp__negbot
-00000000000054c8 stbsp__negboterr
-0000000000005578 stbsp__negtop
-00000000000055e0 stbsp__negtoperr
-0000000000005648 stbsp__top
-00000000000056b0 stbsp__toperr
-0000000000005718 stbsp__powten
-0000000000000000 stdlib.c
-0000000000004222 strtoull.part.0
-0000000000007678 next
-00000000000076c4 __atexit_func_count
-00000000000076c8 __atexit_funcs
-00000000000077c8 freep
-00000000000077d0 base
-0000000000000000 string.c
-00000000000077e0 olds.0
-0000000000000000 cxx.cc
-0000000000000000 iostream.cpp
-0000000000004fa8 _GLOBAL__sub_I__ZSt3cin
-0000000000007680 _GLOBAL_OFFSET_TABLE_
-0000000000004b42 strcpy
-00000000000038b2 printf
-0000000000007660 stdout
-00000000000057bc STDOUT_FD
-00000000000041f8 ungetc
-0000000000004f6a strerror
-0000000000004aa8 memmove
-000000000000385c snprintf
-00000000000000d0 mknod
-00000000000046fa atol
-0000000000004408 getenv
-0000000000004f90 _Znwm
-00000000000076c0 errno
-000000000000495a labs
-00000000000048d4 bsearch
-0000000000000108 getpid
-00000000000047f6 qsort
-0000000000003af0 fscanf
-0000000000003d62 fgets
-00000000000077f8 _ZSt4cerr
-0000000000004ae4 memcpy
-000000000000440c system
-00000000000041d8 feof
-0000000000004486 malloc
-0000000000000118 sleep
-0000000000003812 vsnprintf
-0000000000004616 strtoll
-00000000000046c0 strtoul
-0000000000004a0c wctomb
-0000000000004a58 wcstombs
-0000000000003a7a fflush
-0000000000004a1a mbstowcs
-0000000000000138 lseek
-0000000000004f98 _ZdlPv
-00000000000043fc abort
-00000000000046e4 strtol
-0000000000000098 pipe
-00000000000049da mblen
-0000000000004c96 strrchr
-000000000000454c calloc
-0000000000004706 strtod
-0000000000000130 disk_test
-00000000000000a8 write
-00000000000047e0 atof
-00000000000000e0 fstat
-0000000000003abe fprintf
-00000000000000b8 kill
-0000000000004b86 strcat
-00000000000000f8 chdir
-00000000000040e0 fseek
-0000000000002fb0 stbsp_vsprintf
-00000000000000c0 exec
-0000000000004b0a memchr
-0000000000007668 stdin
-0000000000000090 wait
-0000000000002eca stbsp_vsnprintf
-0000000000000076 _start
-00000000000041e2 ferror
-0000000000004cae strstr
-00000000000049a4 rand
-00000000000000a0 read
-0000000000004d5a strlcpy
-0000000000004c36 strncmp
-0000000000001274 stbsp_set_separators
-0000000000004fa0 _ZdlPvm
-0000000000004b54 strncpy
-00000000000000d8 unlink
-0000000000004594 realloc
-0000000000004eda strtok
-0000000000004ae6 memcmp
-0000000000000088 fork
-00000000000038ec sscanf
-0000000000004bb8 strncat
-0000000000003e3e fread
-0000000000000110 sbrk
-0000000000004d16 strdup
-0000000000000120 uptime
-00000000000045f2 strtoull
-0000000000002ea0 stbsp_sprintf
-000000000000394e fopen
-0000000000004a90 memset
-0000000000000000 main
-0000000000004154 ftell
-00000000000049cc srand
-0000000000004db0 strlcat
-00000000000041ec clearerr
-0000000000004f9c _ZdaPv
-0000000000003a12 fclose
-0000000000000128 putc
-0000000000004bfe strcmp
-0000000000000140 shutdown
-0000000000000100 dup
-0000000000003ccc fgetc
-0000000000002fbe sprintf
-00000000000047e4 strtof
-00000000000043a2 atexit
-0000000000004e64 strcspn
-0000000000002f90 stbsp_snprintf
-00000000000077e8 _ZSt3cin
-000000000000391c scanf
-0000000000007670 stderr
-0000000000004984 ldiv
-0000000000003b22 fputc
-0000000000004f94 _Znam
-0000000000004994 lldiv
-0000000000003f58 fwrite
-0000000000004180 rewind
-00000000000077f0 _ZSt4cout
-00000000000000e8 link
-00000000000043c6 exit
-0000000000000080 sys_exit
-0000000000004964 llabs
-00000000000046e6 atoi
-00000000000057b8 STDERR_FD
-0000000000004e30 strspn
-0000000000004b28 strlen
-0000000000001286 stbsp_vsprintfcb
-00000000000000c8 open
-00000000000057c0 STDIN_FD
-0000000000004700 atoll
-000000000000496e div
-0000000000004950 abs
-0000000000004c7e strchr
-0000000000003be6 fputs
-0000000000004fa4 _ZdaPvm
-00000000000000f0 mkdir
-00000000000000b0 close
-00000000000049ee mbtowc
-0000000000004ea4 strpbrk
-0000000000004410 free
diff --git a/build/user/sh b/build/user/sh
deleted file mode 100755
index b6dd520..0000000
--- a/build/user/sh
+++ /dev/null
Binary files differ
diff --git a/build/user/sh.asm b/build/user/sh.asm
deleted file mode 100644
index f7b0cd9..0000000
--- a/build/user/sh.asm
+++ /dev/null
@@ -1,12619 +0,0 @@
-
-build/user/sh: file format elf64-littleriscv
-
-
-Disassembly of section .text:
-
-0000000000000000 <_Z5panicPKc>:
-constexpr int MAX_ARGS = 10;
-const char *WHITESPACE = " \t\r\n\v";
-const char *SYMBOLS = "<|>&;()";
-
-void panic(const char *s)
-{
- 0: 1141 addi sp,sp,-16
- 2: 85aa mv a1,a0
- printf("shell panic: %s\n", s);
- 4: 00006517 auipc a0,0x6
- 8: 04450513 addi a0,a0,68 # 6048 <_GLOBAL__sub_I__ZSt3cin+0x58>
-{
- c: e406 sd ra,8(sp)
- printf("shell panic: %s\n", s);
- e: 0ed040ef jal 48fa <printf>
- exit(1);
-}
- 12: 60a2 ld ra,8(sp)
- exit(1);
- 14: 4505 li a0,1
-}
- 16: 0141 addi sp,sp,16
- exit(1);
- 18: 3f60506f j 540e <exit>
-
-000000000000001c <_Z13fork_or_panicv>:
-
-int fork_or_panic()
-{
- 1c: 1141 addi sp,sp,-16
- 1e: e022 sd s0,0(sp)
- 20: e406 sd ra,8(sp)
- int pid = fork();
- 22: 0ae010ef jal 10d0 <fork>
- if (pid == -1)
- 26: 57fd li a5,-1
- int pid = fork();
- 28: 842a mv s0,a0
- if (pid == -1)
- 2a: 00f50763 beq a0,a5,38 <_Z13fork_or_panicv+0x1c>
- panic("fork");
- return pid;
-}
- 2e: 60a2 ld ra,8(sp)
- 30: 8522 mv a0,s0
- 32: 6402 ld s0,0(sp)
- 34: 0141 addi sp,sp,16
- 36: 8082 ret
- printf("shell panic: %s\n", s);
- 38: 00006597 auipc a1,0x6
- 3c: 00858593 addi a1,a1,8 # 6040 <_GLOBAL__sub_I__ZSt3cin+0x50>
- 40: 00006517 auipc a0,0x6
- 44: 00850513 addi a0,a0,8 # 6048 <_GLOBAL__sub_I__ZSt3cin+0x58>
- 48: 0b3040ef jal 48fa <printf>
- exit(1);
- 4c: 4505 li a0,1
- 4e: 3c0050ef jal 540e <exit>
-}
- 52: 60a2 ld ra,8(sp)
- 54: 8522 mv a0,s0
- 56: 6402 ld s0,0(sp)
- 58: 0141 addi sp,sp,16
- 5a: 8082 ret
-
-000000000000005c <_Z6getcmdPci>:
- return cmd;
- }
-};
-
-int getcmd(char *buf, int nbuf)
-{
- 5c: 1101 addi sp,sp,-32
- 5e: e822 sd s0,16(sp)
- 60: e426 sd s1,8(sp)
- 62: 842a mv s0,a0
- 64: 84ae mv s1,a1
- write(1, "$ ", 2);
- 66: 4609 li a2,2
- 68: 00006597 auipc a1,0x6
- 6c: 06058593 addi a1,a1,96 # 60c8 <_GLOBAL__sub_I__ZSt3cin+0xd8>
- 70: 4505 li a0,1
-{
- 72: ec06 sd ra,24(sp)
- write(1, "$ ", 2);
- 74: 07c010ef jal 10f0 <write>
- memset(buf, 0, nbuf);
- 78: 8626 mv a2,s1
- 7a: 4581 li a1,0
- 7c: 8522 mv a0,s0
- 7e: 25b050ef jal 5ad8 <memset>
-
- int n = read(0, buf, nbuf - 1);
- 82: fff4861b addiw a2,s1,-1
- 86: 85a2 mv a1,s0
- 88: 4501 li a0,0
- 8a: 05e010ef jal 10e8 <read>
-
- if (n < 0)
- 8e: 00054b63 bltz a0,a4 <_Z6getcmdPci+0x48>
- return -1;
-
- buf[n] = 0;
- 92: 942a add s0,s0,a0
- 94: 00040023 sb zero,0(s0)
- return 0;
- 98: 4501 li a0,0
-}
- 9a: 60e2 ld ra,24(sp)
- 9c: 6442 ld s0,16(sp)
- 9e: 64a2 ld s1,8(sp)
- a0: 6105 addi sp,sp,32
- a2: 8082 ret
- return -1;
- a4: 557d li a0,-1
- a6: bfd5 j 9a <_Z6getcmdPci+0x3e>
-
-00000000000000a8 <_ZN12RedirCommandD1Ev>:
- ~RedirCommand() { delete sub_cmd; }
- a8: 87aa mv a5,a0
- aa: 6508 ld a0,8(a0)
- ac: 00008717 auipc a4,0x8
- b0: dcc70713 addi a4,a4,-564 # 7e78 <_ZTV12RedirCommand+0x10>
- b4: e398 sd a4,0(a5)
- b6: c501 beqz a0,be <_ZN12RedirCommandD1Ev+0x16>
- b8: 611c ld a5,0(a0)
- ba: 679c ld a5,8(a5)
- bc: 8782 jr a5
- be: 8082 ret
-
-00000000000000c0 <_ZN11PipeCommandD1Ev>:
- ~PipeCommand()
- c0: 1141 addi sp,sp,-16
- c2: e022 sd s0,0(sp)
- c4: 842a mv s0,a0
- delete left;
- c6: 6508 ld a0,8(a0)
- ~PipeCommand()
- c8: e406 sd ra,8(sp)
- {
- ca: 00008797 auipc a5,0x8
- ce: dd678793 addi a5,a5,-554 # 7ea0 <_ZTV11PipeCommand+0x10>
- d2: e01c sd a5,0(s0)
- delete left;
- d4: c501 beqz a0,dc <_ZN11PipeCommandD1Ev+0x1c>
- d6: 611c ld a5,0(a0)
- d8: 679c ld a5,8(a5)
- da: 9782 jalr a5
- delete right;
- dc: 6808 ld a0,16(s0)
- de: c519 beqz a0,ec <_ZN11PipeCommandD1Ev+0x2c>
- e0: 611c ld a5,0(a0)
- }
- e2: 6402 ld s0,0(sp)
- e4: 60a2 ld ra,8(sp)
- delete right;
- e6: 679c ld a5,8(a5)
- }
- e8: 0141 addi sp,sp,16
- delete right;
- ea: 8782 jr a5
- }
- ec: 60a2 ld ra,8(sp)
- ee: 6402 ld s0,0(sp)
- f0: 0141 addi sp,sp,16
- f2: 8082 ret
-
-00000000000000f4 <_ZN11ListCommandD1Ev>:
- ~ListCommand()
- f4: 1141 addi sp,sp,-16
- f6: e022 sd s0,0(sp)
- f8: 842a mv s0,a0
- delete left;
- fa: 6508 ld a0,8(a0)
- ~ListCommand()
- fc: e406 sd ra,8(sp)
- {
- fe: 00008797 auipc a5,0x8
- 102: dca78793 addi a5,a5,-566 # 7ec8 <_ZTV11ListCommand+0x10>
- 106: e01c sd a5,0(s0)
- delete left;
- 108: c501 beqz a0,110 <_ZN11ListCommandD1Ev+0x1c>
- 10a: 611c ld a5,0(a0)
- 10c: 679c ld a5,8(a5)
- 10e: 9782 jalr a5
- delete right;
- 110: 6808 ld a0,16(s0)
- 112: c519 beqz a0,120 <_ZN11ListCommandD1Ev+0x2c>
- 114: 611c ld a5,0(a0)
- }
- 116: 6402 ld s0,0(sp)
- 118: 60a2 ld ra,8(sp)
- delete right;
- 11a: 679c ld a5,8(a5)
- }
- 11c: 0141 addi sp,sp,16
- delete right;
- 11e: 8782 jr a5
- }
- 120: 60a2 ld ra,8(sp)
- 122: 6402 ld s0,0(sp)
- 124: 0141 addi sp,sp,16
- 126: 8082 ret
-
-0000000000000128 <_ZN11BackCommandD1Ev>:
- ~BackCommand() { delete sub_cmd; }
- 128: 87aa mv a5,a0
- 12a: 6508 ld a0,8(a0)
- 12c: 00008717 auipc a4,0x8
- 130: dc470713 addi a4,a4,-572 # 7ef0 <_ZTV11BackCommand+0x10>
- 134: e398 sd a4,0(a5)
- 136: c501 beqz a0,13e <_ZN11BackCommandD1Ev+0x16>
- 138: 611c ld a5,0(a0)
- 13a: 679c ld a5,8(a5)
- 13c: 8782 jr a5
- 13e: 8082 ret
-
-0000000000000140 <_ZN11ExecCommandD1Ev>:
-struct ExecCommand : public Command
- 140: 8082 ret
-
-0000000000000142 <_ZN12RedirCommand3runEv>:
- void run() override
- 142: 1141 addi sp,sp,-16
- 144: e022 sd s0,0(sp)
- 146: 842a mv s0,a0
- close(fd);
- 148: 5148 lw a0,36(a0)
- void run() override
- 14a: e406 sd ra,8(sp)
- close(fd);
- 14c: 7ad000ef jal 10f8 <close>
- if (open(file, mode) < 0)
- 150: 500c lw a1,32(s0)
- 152: 6808 ld a0,16(s0)
- 154: 7bd000ef jal 1110 <open>
- 158: 00054963 bltz a0,16a <_ZN12RedirCommand3runEv+0x28>
- sub_cmd->run();
- 15c: 6408 ld a0,8(s0)
- }
- 15e: 6402 ld s0,0(sp)
- 160: 60a2 ld ra,8(sp)
- sub_cmd->run();
- 162: 611c ld a5,0(a0)
- 164: 6b9c ld a5,16(a5)
- }
- 166: 0141 addi sp,sp,16
- sub_cmd->run();
- 168: 8782 jr a5
- printf("open %s failed\n", file);
- 16a: 680c ld a1,16(s0)
- 16c: 00006517 auipc a0,0x6
- 170: eb450513 addi a0,a0,-332 # 6020 <_GLOBAL__sub_I__ZSt3cin+0x30>
- 174: 786040ef jal 48fa <printf>
- exit(1);
- 178: 4505 li a0,1
- 17a: 294050ef jal 540e <exit>
- sub_cmd->run();
- 17e: 6408 ld a0,8(s0)
- }
- 180: 6402 ld s0,0(sp)
- 182: 60a2 ld ra,8(sp)
- sub_cmd->run();
- 184: 611c ld a5,0(a0)
- 186: 6b9c ld a5,16(a5)
- }
- 188: 0141 addi sp,sp,16
- sub_cmd->run();
- 18a: 8782 jr a5
-
-000000000000018c <_ZN11ExecCommand3runEv>:
- void run() override
- 18c: 1141 addi sp,sp,-16
- 18e: e022 sd s0,0(sp)
- 190: 842a mv s0,a0
- if (argv[0] == nullptr)
- 192: 6508 ld a0,8(a0)
- void run() override
- 194: e406 sd ra,8(sp)
- if (argv[0] == nullptr)
- 196: c115 beqz a0,1ba <_ZN11ExecCommand3runEv+0x2e>
- exec(argv[0], argv);
- 198: 00840593 addi a1,s0,8
- 19c: 76d000ef jal 1108 <exec>
- printf("exec %s failed\n", argv[0]);
- 1a0: 640c ld a1,8(s0)
- 1a2: 00006517 auipc a0,0x6
- 1a6: e8e50513 addi a0,a0,-370 # 6030 <_GLOBAL__sub_I__ZSt3cin+0x40>
- 1aa: 750040ef jal 48fa <printf>
- }
- 1ae: 6402 ld s0,0(sp)
- 1b0: 60a2 ld ra,8(sp)
- exit(1);
- 1b2: 4505 li a0,1
- }
- 1b4: 0141 addi sp,sp,16
- exit(1);
- 1b6: 2580506f j 540e <exit>
- exit(1);
- 1ba: 4505 li a0,1
- 1bc: 252050ef jal 540e <exit>
- exec(argv[0], argv);
- 1c0: 6408 ld a0,8(s0)
- 1c2: bfd9 j 198 <_ZN11ExecCommand3runEv+0xc>
-
-00000000000001c4 <_ZN11ExecCommandD0Ev>:
-struct ExecCommand : public Command
- 1c4: 05800593 li a1,88
- 1c8: 6210506f j 5fe8 <_ZdlPvm>
-
-00000000000001cc <_ZN12RedirCommandD0Ev>:
- ~RedirCommand() { delete sub_cmd; }
- 1cc: 1141 addi sp,sp,-16
- 1ce: e022 sd s0,0(sp)
- 1d0: 842a mv s0,a0
- 1d2: 6508 ld a0,8(a0)
- 1d4: e406 sd ra,8(sp)
- 1d6: 00008797 auipc a5,0x8
- 1da: ca278793 addi a5,a5,-862 # 7e78 <_ZTV12RedirCommand+0x10>
- 1de: e01c sd a5,0(s0)
- 1e0: c501 beqz a0,1e8 <_ZN12RedirCommandD0Ev+0x1c>
- 1e2: 611c ld a5,0(a0)
- 1e4: 679c ld a5,8(a5)
- 1e6: 9782 jalr a5
- 1e8: 8522 mv a0,s0
- 1ea: 6402 ld s0,0(sp)
- 1ec: 60a2 ld ra,8(sp)
- 1ee: 02800593 li a1,40
- 1f2: 0141 addi sp,sp,16
- 1f4: 5f50506f j 5fe8 <_ZdlPvm>
-
-00000000000001f8 <_ZN11BackCommandD0Ev>:
- ~BackCommand() { delete sub_cmd; }
- 1f8: 1141 addi sp,sp,-16
- 1fa: e022 sd s0,0(sp)
- 1fc: 842a mv s0,a0
- 1fe: 6508 ld a0,8(a0)
- 200: e406 sd ra,8(sp)
- 202: 00008797 auipc a5,0x8
- 206: cee78793 addi a5,a5,-786 # 7ef0 <_ZTV11BackCommand+0x10>
- 20a: e01c sd a5,0(s0)
- 20c: c501 beqz a0,214 <_ZN11BackCommandD0Ev+0x1c>
- 20e: 611c ld a5,0(a0)
- 210: 679c ld a5,8(a5)
- 212: 9782 jalr a5
- 214: 8522 mv a0,s0
- 216: 6402 ld s0,0(sp)
- 218: 60a2 ld ra,8(sp)
- 21a: 45c1 li a1,16
- 21c: 0141 addi sp,sp,16
- 21e: 5cb0506f j 5fe8 <_ZdlPvm>
-
-0000000000000222 <_ZN11PipeCommandD0Ev>:
- ~PipeCommand()
- 222: 1141 addi sp,sp,-16
- 224: e022 sd s0,0(sp)
- 226: 842a mv s0,a0
- delete left;
- 228: 6508 ld a0,8(a0)
- ~PipeCommand()
- 22a: e406 sd ra,8(sp)
- {
- 22c: 00008797 auipc a5,0x8
- 230: c7478793 addi a5,a5,-908 # 7ea0 <_ZTV11PipeCommand+0x10>
- 234: e01c sd a5,0(s0)
- delete left;
- 236: c501 beqz a0,23e <_ZN11PipeCommandD0Ev+0x1c>
- 238: 611c ld a5,0(a0)
- 23a: 679c ld a5,8(a5)
- 23c: 9782 jalr a5
- delete right;
- 23e: 6808 ld a0,16(s0)
- 240: c501 beqz a0,248 <_ZN11PipeCommandD0Ev+0x26>
- 242: 611c ld a5,0(a0)
- 244: 679c ld a5,8(a5)
- 246: 9782 jalr a5
- }
- 248: 8522 mv a0,s0
- 24a: 6402 ld s0,0(sp)
- 24c: 60a2 ld ra,8(sp)
- 24e: 45e1 li a1,24
- 250: 0141 addi sp,sp,16
- 252: 5970506f j 5fe8 <_ZdlPvm>
-
-0000000000000256 <_ZN11ListCommandD0Ev>:
- ~ListCommand()
- 256: 1141 addi sp,sp,-16
- 258: e022 sd s0,0(sp)
- 25a: 842a mv s0,a0
- delete left;
- 25c: 6508 ld a0,8(a0)
- ~ListCommand()
- 25e: e406 sd ra,8(sp)
- {
- 260: 00008797 auipc a5,0x8
- 264: c6878793 addi a5,a5,-920 # 7ec8 <_ZTV11ListCommand+0x10>
- 268: e01c sd a5,0(s0)
- delete left;
- 26a: c501 beqz a0,272 <_ZN11ListCommandD0Ev+0x1c>
- 26c: 611c ld a5,0(a0)
- 26e: 679c ld a5,8(a5)
- 270: 9782 jalr a5
- delete right;
- 272: 6808 ld a0,16(s0)
- 274: c501 beqz a0,27c <_ZN11ListCommandD0Ev+0x26>
- 276: 611c ld a5,0(a0)
- 278: 679c ld a5,8(a5)
- 27a: 9782 jalr a5
- }
- 27c: 8522 mv a0,s0
- 27e: 6402 ld s0,0(sp)
- 280: 60a2 ld ra,8(sp)
- 282: 45e1 li a1,24
- 284: 0141 addi sp,sp,16
- 286: 5630506f j 5fe8 <_ZdlPvm>
-
-000000000000028a <_ZN11BackCommand3runEv>:
- void run() override
- 28a: 1141 addi sp,sp,-16
- 28c: e022 sd s0,0(sp)
- 28e: e406 sd ra,8(sp)
- 290: 842a mv s0,a0
- int pid = fork();
- 292: 63f000ef jal 10d0 <fork>
- if (pid == -1)
- 296: 57fd li a5,-1
- 298: 00f50d63 beq a0,a5,2b2 <_ZN11BackCommand3runEv+0x28>
- if (fork_or_panic() == 0)
- 29c: e509 bnez a0,2a6 <_ZN11BackCommand3runEv+0x1c>
- sub_cmd->run();
- 29e: 6408 ld a0,8(s0)
- 2a0: 611c ld a5,0(a0)
- 2a2: 6b9c ld a5,16(a5)
- 2a4: 9782 jalr a5
- }
- 2a6: 6402 ld s0,0(sp)
- 2a8: 60a2 ld ra,8(sp)
- exit(0);
- 2aa: 4501 li a0,0
- }
- 2ac: 0141 addi sp,sp,16
- exit(0);
- 2ae: 1600506f j 540e <exit>
- printf("shell panic: %s\n", s);
- 2b2: 00006597 auipc a1,0x6
- 2b6: d8e58593 addi a1,a1,-626 # 6040 <_GLOBAL__sub_I__ZSt3cin+0x50>
- 2ba: 00006517 auipc a0,0x6
- 2be: d8e50513 addi a0,a0,-626 # 6048 <_GLOBAL__sub_I__ZSt3cin+0x58>
- 2c2: 638040ef jal 48fa <printf>
- exit(1);
- 2c6: 4505 li a0,1
- 2c8: 146050ef jal 540e <exit>
- }
- 2cc: 6402 ld s0,0(sp)
- 2ce: 60a2 ld ra,8(sp)
- exit(0);
- 2d0: 4501 li a0,0
- }
- 2d2: 0141 addi sp,sp,16
- exit(0);
- 2d4: 13a0506f j 540e <exit>
-
-00000000000002d8 <_ZN11ListCommand3runEv>:
- void run() override
- 2d8: 1141 addi sp,sp,-16
- 2da: e022 sd s0,0(sp)
- 2dc: e406 sd ra,8(sp)
- 2de: 842a mv s0,a0
- int pid = fork();
- 2e0: 5f1000ef jal 10d0 <fork>
- if (pid == -1)
- 2e4: 57fd li a5,-1
- 2e6: 02f50163 beq a0,a5,308 <_ZN11ListCommand3runEv+0x30>
- if (fork_or_panic() == 0)
- 2ea: e509 bnez a0,2f4 <_ZN11ListCommand3runEv+0x1c>
- left->run();
- 2ec: 6408 ld a0,8(s0)
- 2ee: 611c ld a5,0(a0)
- 2f0: 6b9c ld a5,16(a5)
- 2f2: 9782 jalr a5
- wait(0);
- 2f4: 4501 li a0,0
- 2f6: 5e3000ef jal 10d8 <wait>
- right->run();
- 2fa: 6808 ld a0,16(s0)
- }
- 2fc: 6402 ld s0,0(sp)
- 2fe: 60a2 ld ra,8(sp)
- right->run();
- 300: 611c ld a5,0(a0)
- 302: 6b9c ld a5,16(a5)
- }
- 304: 0141 addi sp,sp,16
- right->run();
- 306: 8782 jr a5
- printf("shell panic: %s\n", s);
- 308: 00006597 auipc a1,0x6
- 30c: d3858593 addi a1,a1,-712 # 6040 <_GLOBAL__sub_I__ZSt3cin+0x50>
- 310: 00006517 auipc a0,0x6
- 314: d3850513 addi a0,a0,-712 # 6048 <_GLOBAL__sub_I__ZSt3cin+0x58>
- 318: 5e2040ef jal 48fa <printf>
- exit(1);
- 31c: 4505 li a0,1
- 31e: 0f0050ef jal 540e <exit>
- return pid;
- 322: bfc9 j 2f4 <_ZN11ListCommand3runEv+0x1c>
-
-0000000000000324 <_ZN11PipeCommand3runEv>:
- void run() override
- 324: 1101 addi sp,sp,-32
- 326: e822 sd s0,16(sp)
- 328: 842a mv s0,a0
- if (pipe(p) < 0)
- 32a: 0028 addi a0,sp,8
- void run() override
- 32c: ec06 sd ra,24(sp)
- if (pipe(p) < 0)
- 32e: 5b3000ef jal 10e0 <pipe>
- 332: 0a054463 bltz a0,3da <_ZN11PipeCommand3runEv+0xb6>
- int pid = fork();
- 336: 59b000ef jal 10d0 <fork>
- if (pid == -1)
- 33a: 57fd li a5,-1
- 33c: 0cf50163 beq a0,a5,3fe <_ZN11PipeCommand3runEv+0xda>
- if (fork_or_panic() == 0)
- 340: c931 beqz a0,394 <_ZN11PipeCommand3runEv+0x70>
- int pid = fork();
- 342: 58f000ef jal 10d0 <fork>
- if (pid == -1)
- 346: 577d li a4,-1
- 348: 06e50b63 beq a0,a4,3be <_ZN11PipeCommand3runEv+0x9a>
- if (fork_or_panic() == 0)
- 34c: c505 beqz a0,374 <_ZN11PipeCommand3runEv+0x50>
- close(p[0]);
- 34e: 4522 lw a0,8(sp)
- 350: 5a9000ef jal 10f8 <close>
- close(p[1]);
- 354: 4532 lw a0,12(sp)
- 356: 5a3000ef jal 10f8 <close>
- wait(0);
- 35a: 4501 li a0,0
- 35c: 57d000ef jal 10d8 <wait>
- wait(0);
- 360: 4501 li a0,0
- 362: 577000ef jal 10d8 <wait>
- exit(0);
- 366: 4501 li a0,0
- 368: 0a6050ef jal 540e <exit>
- }
- 36c: 60e2 ld ra,24(sp)
- 36e: 6442 ld s0,16(sp)
- 370: 6105 addi sp,sp,32
- 372: 8082 ret
- close(0); // close stdin
- 374: 585000ef jal 10f8 <close>
- dup(p[0]); // dup read-end to stdin
- 378: 4522 lw a0,8(sp)
- 37a: 5cf000ef jal 1148 <dup>
- close(p[0]);
- 37e: 4522 lw a0,8(sp)
- 380: 579000ef jal 10f8 <close>
- close(p[1]);
- 384: 4532 lw a0,12(sp)
- 386: 573000ef jal 10f8 <close>
- right->run();
- 38a: 6808 ld a0,16(s0)
- 38c: 611c ld a5,0(a0)
- 38e: 6b9c ld a5,16(a5)
- 390: 9782 jalr a5
- 392: bf75 j 34e <_ZN11PipeCommand3runEv+0x2a>
- close(1); // close stdout
- 394: 4505 li a0,1
- 396: 563000ef jal 10f8 <close>
- dup(p[1]); // dup write-end to stdout
- 39a: 4532 lw a0,12(sp)
- 39c: 5ad000ef jal 1148 <dup>
- close(p[0]);
- 3a0: 4522 lw a0,8(sp)
- 3a2: 557000ef jal 10f8 <close>
- close(p[1]);
- 3a6: 4532 lw a0,12(sp)
- 3a8: 551000ef jal 10f8 <close>
- left->run();
- 3ac: 6408 ld a0,8(s0)
- 3ae: 611c ld a5,0(a0)
- 3b0: 6b9c ld a5,16(a5)
- 3b2: 9782 jalr a5
- int pid = fork();
- 3b4: 51d000ef jal 10d0 <fork>
- if (pid == -1)
- 3b8: 577d li a4,-1
- 3ba: f8e519e3 bne a0,a4,34c <_ZN11PipeCommand3runEv+0x28>
- printf("shell panic: %s\n", s);
- 3be: 00006597 auipc a1,0x6
- 3c2: c8258593 addi a1,a1,-894 # 6040 <_GLOBAL__sub_I__ZSt3cin+0x50>
- 3c6: 00006517 auipc a0,0x6
- 3ca: c8250513 addi a0,a0,-894 # 6048 <_GLOBAL__sub_I__ZSt3cin+0x58>
- 3ce: 52c040ef jal 48fa <printf>
- exit(1);
- 3d2: 4505 li a0,1
- 3d4: 03a050ef jal 540e <exit>
- return pid;
- 3d8: bf9d j 34e <_ZN11PipeCommand3runEv+0x2a>
- printf("shell panic: %s\n", s);
- 3da: 00006597 auipc a1,0x6
- 3de: c8658593 addi a1,a1,-890 # 6060 <_GLOBAL__sub_I__ZSt3cin+0x70>
- 3e2: 00006517 auipc a0,0x6
- 3e6: c6650513 addi a0,a0,-922 # 6048 <_GLOBAL__sub_I__ZSt3cin+0x58>
- 3ea: 510040ef jal 48fa <printf>
- exit(1);
- 3ee: 4505 li a0,1
- 3f0: 01e050ef jal 540e <exit>
- int pid = fork();
- 3f4: 4dd000ef jal 10d0 <fork>
- if (pid == -1)
- 3f8: 57fd li a5,-1
- 3fa: f4f513e3 bne a0,a5,340 <_ZN11PipeCommand3runEv+0x1c>
- printf("shell panic: %s\n", s);
- 3fe: 00006597 auipc a1,0x6
- 402: c4258593 addi a1,a1,-958 # 6040 <_GLOBAL__sub_I__ZSt3cin+0x50>
- 406: 00006517 auipc a0,0x6
- 40a: c4250513 addi a0,a0,-958 # 6048 <_GLOBAL__sub_I__ZSt3cin+0x58>
- 40e: 4ec040ef jal 48fa <printf>
- exit(1);
- 412: 4505 li a0,1
- 414: 7fb040ef jal 540e <exit>
- return pid;
- 418: b72d j 342 <_ZN11PipeCommand3runEv+0x1e>
-
-000000000000041a <_ZN6Parser12parse_redirsEP7CommandPPcS2_>:
- : sub_cmd(c), file(f), efile(ef), mode(m), fd(fd_in) {}
- 41a: 4785 li a5,1
- 41c: 1782 slli a5,a5,0x20
- static Command *parse_redirs(Command *cmd, char **ps, char *es)
- 41e: 7119 addi sp,sp,-128
- : sub_cmd(c), file(f), efile(ef), mode(m), fd(fd_in) {}
- 420: 60178793 addi a5,a5,1537
- static Command *parse_redirs(Command *cmd, char **ps, char *es)
- 424: f8a2 sd s0,112(sp)
- 426: f4a6 sd s1,104(sp)
- 428: e4d6 sd s5,72(sp)
- 42a: e0da sd s6,64(sp)
- 42c: f862 sd s8,48(sp)
- 42e: f466 sd s9,40(sp)
- 430: fc86 sd ra,120(sp)
- 432: f0ca sd s2,96(sp)
- 434: ecce sd s3,88(sp)
- 436: e8d2 sd s4,80(sp)
- 438: fc5e sd s7,56(sp)
- 43a: f06a sd s10,32(sp)
- 43c: ec6e sd s11,24(sp)
- 43e: 8aae mv s5,a1
- 440: 8432 mv s0,a2
- while (peek(ps, es, "<>"))
- 442: 8c2a mv s8,a0
- 444: 00008497 auipc s1,0x8
- 448: ac448493 addi s1,s1,-1340 # 7f08 <WHITESPACE>
- switch (*s)
- 44c: 03c00b13 li s6,60
- if (get_token(ps, es, &q, &eq) != 'a')
- 450: 06100c93 li s9,97
- : sub_cmd(c), file(f), efile(ef), mode(m), fd(fd_in) {}
- 454: e43e sd a5,8(sp)
- char *s = *ps;
- 456: 000ab903 ld s2,0(s5)
- while (s < es && strchr(WHITESPACE, *s))
- 45a: 00896663 bltu s2,s0,466 <_ZN6Parser12parse_redirsEP7CommandPPcS2_+0x4c>
- 45e: a811 j 472 <_ZN6Parser12parse_redirsEP7CommandPPcS2_+0x58>
- s++;
- 460: 0905 addi s2,s2,1
- while (s < es && strchr(WHITESPACE, *s))
- 462: 01240863 beq s0,s2,472 <_ZN6Parser12parse_redirsEP7CommandPPcS2_+0x58>
- 466: 00094583 lbu a1,0(s2)
- 46a: 6088 ld a0,0(s1)
- 46c: 05b050ef jal 5cc6 <strchr>
- 470: f965 bnez a0,460 <_ZN6Parser12parse_redirsEP7CommandPPcS2_+0x46>
- *ps = s;
- 472: 012ab023 sd s2,0(s5)
- return *s && strchr(toks, *s);
- 476: 00094583 lbu a1,0(s2)
- 47a: e18d bnez a1,49c <_ZN6Parser12parse_redirsEP7CommandPPcS2_+0x82>
- }
- 47c: 70e6 ld ra,120(sp)
- 47e: 7446 ld s0,112(sp)
- 480: 74a6 ld s1,104(sp)
- 482: 7906 ld s2,96(sp)
- 484: 69e6 ld s3,88(sp)
- 486: 6a46 ld s4,80(sp)
- 488: 6aa6 ld s5,72(sp)
- 48a: 6b06 ld s6,64(sp)
- 48c: 7be2 ld s7,56(sp)
- 48e: 7ca2 ld s9,40(sp)
- 490: 7d02 ld s10,32(sp)
- 492: 6de2 ld s11,24(sp)
- 494: 8562 mv a0,s8
- 496: 7c42 ld s8,48(sp)
- 498: 6109 addi sp,sp,128
- 49a: 8082 ret
- return *s && strchr(toks, *s);
- 49c: 00006517 auipc a0,0x6
- 4a0: bec50513 addi a0,a0,-1044 # 6088 <_GLOBAL__sub_I__ZSt3cin+0x98>
- 4a4: 023050ef jal 5cc6 <strchr>
- 4a8: d971 beqz a0,47c <_ZN6Parser12parse_redirsEP7CommandPPcS2_+0x62>
- s = *ps;
- 4aa: 000abd83 ld s11,0(s5)
- while (s < es && strchr(WHITESPACE, *s))
- 4ae: 008de663 bltu s11,s0,4ba <_ZN6Parser12parse_redirsEP7CommandPPcS2_+0xa0>
- 4b2: a811 j 4c6 <_ZN6Parser12parse_redirsEP7CommandPPcS2_+0xac>
- s++;
- 4b4: 0d85 addi s11,s11,1
- while (s < es && strchr(WHITESPACE, *s))
- 4b6: 01b40863 beq s0,s11,4c6 <_ZN6Parser12parse_redirsEP7CommandPPcS2_+0xac>
- 4ba: 000dc583 lbu a1,0(s11)
- 4be: 6088 ld a0,0(s1)
- 4c0: 007050ef jal 5cc6 <strchr>
- 4c4: f965 bnez a0,4b4 <_ZN6Parser12parse_redirsEP7CommandPPcS2_+0x9a>
- ret = *s;
- 4c6: 000dc983 lbu s3,0(s11)
- switch (*s)
- 4ca: 193b6e63 bltu s6,s3,666 <_ZN6Parser12parse_redirsEP7CommandPPcS2_+0x24c>
- 4ce: 03a00713 li a4,58
- 4d2: 01376f63 bltu a4,s3,4f0 <_ZN6Parser12parse_redirsEP7CommandPPcS2_+0xd6>
- 4d6: 00098e63 beqz s3,4f2 <_ZN6Parser12parse_redirsEP7CommandPPcS2_+0xd8>
- 4da: 02600713 li a4,38
- 4de: 00e98963 beq s3,a4,4f0 <_ZN6Parser12parse_redirsEP7CommandPPcS2_+0xd6>
- 4e2: fd89871b addiw a4,s3,-40
- 4e6: 0ff77713 zext.b a4,a4
- 4ea: 4685 li a3,1
- 4ec: 0ce6ef63 bltu a3,a4,5ca <_ZN6Parser12parse_redirsEP7CommandPPcS2_+0x1b0>
- s++;
- 4f0: 0d85 addi s11,s11,1
- while (s < es && strchr(WHITESPACE, *s))
- 4f2: 108df363 bgeu s11,s0,5f8 <_ZN6Parser12parse_redirsEP7CommandPPcS2_+0x1de>
- 4f6: 8926 mv s2,s1
- 4f8: a021 j 500 <_ZN6Parser12parse_redirsEP7CommandPPcS2_+0xe6>
- s++;
- 4fa: 0d85 addi s11,s11,1
- while (s < es && strchr(WHITESPACE, *s))
- 4fc: 25b40963 beq s0,s11,74e <_ZN6Parser12parse_redirsEP7CommandPPcS2_+0x334>
- 500: 000dc583 lbu a1,0(s11)
- 504: 6088 ld a0,0(s1)
- 506: 7c0050ef jal 5cc6 <strchr>
- 50a: f965 bnez a0,4fa <_ZN6Parser12parse_redirsEP7CommandPPcS2_+0xe0>
- *ps = s;
- 50c: 01bab023 sd s11,0(s5)
- while (s < es && strchr(WHITESPACE, *s))
- 510: 008de663 bltu s11,s0,51c <_ZN6Parser12parse_redirsEP7CommandPPcS2_+0x102>
- 514: a0e5 j 5fc <_ZN6Parser12parse_redirsEP7CommandPPcS2_+0x1e2>
- s++;
- 516: 0d85 addi s11,s11,1
- while (s < es && strchr(WHITESPACE, *s))
- 518: 01b40863 beq s0,s11,528 <_ZN6Parser12parse_redirsEP7CommandPPcS2_+0x10e>
- 51c: 000dc583 lbu a1,0(s11)
- 520: 6088 ld a0,0(s1)
- 522: 7a4050ef jal 5cc6 <strchr>
- 526: f965 bnez a0,516 <_ZN6Parser12parse_redirsEP7CommandPPcS2_+0xfc>
- ret = *s;
- 528: 000dca03 lbu s4,0(s11)
- switch (*s)
- 52c: 154b6963 bltu s6,s4,67e <_ZN6Parser12parse_redirsEP7CommandPPcS2_+0x264>
- 530: 03a00713 li a4,58
- 534: 01476f63 bltu a4,s4,552 <_ZN6Parser12parse_redirsEP7CommandPPcS2_+0x138>
- 538: 0c0a0c63 beqz s4,610 <_ZN6Parser12parse_redirsEP7CommandPPcS2_+0x1f6>
- 53c: 02600713 li a4,38
- 540: 00ea0963 beq s4,a4,552 <_ZN6Parser12parse_redirsEP7CommandPPcS2_+0x138>
- 544: fd8a071b addiw a4,s4,-40
- 548: 0ff77713 zext.b a4,a4
- 54c: 4685 li a3,1
- 54e: 18e6e163 bltu a3,a4,6d0 <_ZN6Parser12parse_redirsEP7CommandPPcS2_+0x2b6>
- ret = *s;
- 552: 8bee mv s7,s11
- s++;
- 554: 0d85 addi s11,s11,1
- ret = *s;
- 556: 2a01 sext.w s4,s4
- while (s < es && strchr(WHITESPACE, *s))
- 558: 8926 mv s2,s1
- 55a: 0c8df063 bgeu s11,s0,61a <_ZN6Parser12parse_redirsEP7CommandPPcS2_+0x200>
- ret = *s;
- 55e: 8d6e mv s10,s11
- 560: a021 j 568 <_ZN6Parser12parse_redirsEP7CommandPPcS2_+0x14e>
- s++;
- 562: 0d05 addi s10,s10,1
- while (s < es && strchr(WHITESPACE, *s))
- 564: 008d7963 bgeu s10,s0,576 <_ZN6Parser12parse_redirsEP7CommandPPcS2_+0x15c>
- 568: 000d4583 lbu a1,0(s10)
- 56c: 00093503 ld a0,0(s2)
- 570: 756050ef jal 5cc6 <strchr>
- 574: f57d bnez a0,562 <_ZN6Parser12parse_redirsEP7CommandPPcS2_+0x148>
- *ps = s;
- 576: 01aab023 sd s10,0(s5)
- if (get_token(ps, es, &q, &eq) != 'a')
- 57a: 0b9a1263 bne s4,s9,61e <_ZN6Parser12parse_redirsEP7CommandPPcS2_+0x204>
- *eq = 0; // Null terminate filename immediately
- 57e: 000d8023 sb zero,0(s11)
- switch (tok)
- 582: 0b698f63 beq s3,s6,640 <_ZN6Parser12parse_redirsEP7CommandPPcS2_+0x226>
- 586: 03e00713 li a4,62
- 58a: 10e98c63 beq s3,a4,6a2 <_ZN6Parser12parse_redirsEP7CommandPPcS2_+0x288>
- 58e: 02b00713 li a4,43
- 592: ece992e3 bne s3,a4,456 <_ZN6Parser12parse_redirsEP7CommandPPcS2_+0x3c>
- cmd = new RedirCommand(cmd, q, eq, O_WRONLY | O_CREATE, 1); // Append not fully supported in simple OS yet?
- 596: 02800513 li a0,40
- 59a: 23f050ef jal 5fd8 <_Znwm>
- : sub_cmd(c), file(f), efile(ef), mode(m), fd(fd_in) {}
- 59e: 4705 li a4,1
- 5a0: 1702 slli a4,a4,0x20
- 5a2: 20170713 addi a4,a4,513
- 5a6: 00008797 auipc a5,0x8
- 5aa: 8d278793 addi a5,a5,-1838 # 7e78 <_ZTV12RedirCommand+0x10>
- 5ae: 01853423 sd s8,8(a0)
- 5b2: e11c sd a5,0(a0)
- 5b4: 01753823 sd s7,16(a0)
- 5b8: 01b53c23 sd s11,24(a0)
- 5bc: f118 sd a4,32(a0)
- cmd = new RedirCommand(cmd, q, eq, O_WRONLY | O_CREATE, 1); // Append not fully supported in simple OS yet?
- 5be: 8c2a mv s8,a0
- break;
- 5c0: bd59 j 456 <_ZN6Parser12parse_redirsEP7CommandPPcS2_+0x3c>
- switch (*s)
- 5c2: 07c00713 li a4,124
- 5c6: f2e985e3 beq s3,a4,4f0 <_ZN6Parser12parse_redirsEP7CommandPPcS2_+0xd6>
- while (s < es && !strchr(WHITESPACE, *s) && !strchr(SYMBOLS, *s))
- 5ca: 008dec63 bltu s11,s0,5e2 <_ZN6Parser12parse_redirsEP7CommandPPcS2_+0x1c8>
- 5ce: a01d j 5f4 <_ZN6Parser12parse_redirsEP7CommandPPcS2_+0x1da>
- 5d0: 000dc583 lbu a1,0(s11)
- 5d4: 6488 ld a0,8(s1)
- 5d6: 6f0050ef jal 5cc6 <strchr>
- 5da: e911 bnez a0,5ee <_ZN6Parser12parse_redirsEP7CommandPPcS2_+0x1d4>
- s++;
- 5dc: 0d85 addi s11,s11,1
- while (s < es && !strchr(WHITESPACE, *s) && !strchr(SYMBOLS, *s))
- 5de: 01b40b63 beq s0,s11,5f4 <_ZN6Parser12parse_redirsEP7CommandPPcS2_+0x1da>
- 5e2: 000dc583 lbu a1,0(s11)
- 5e6: 6088 ld a0,0(s1)
- 5e8: 6de050ef jal 5cc6 <strchr>
- 5ec: d175 beqz a0,5d0 <_ZN6Parser12parse_redirsEP7CommandPPcS2_+0x1b6>
- 5ee: 06100993 li s3,97
- 5f2: b701 j 4f2 <_ZN6Parser12parse_redirsEP7CommandPPcS2_+0xd8>
- 5f4: 06100993 li s3,97
- *ps = s;
- 5f8: 01bab023 sd s11,0(s5)
- ret = *s;
- 5fc: 000dca03 lbu s4,0(s11)
- switch (*s)
- 600: 114b6963 bltu s6,s4,712 <_ZN6Parser12parse_redirsEP7CommandPPcS2_+0x2f8>
- 604: 03a00713 li a4,58
- 608: f54765e3 bltu a4,s4,552 <_ZN6Parser12parse_redirsEP7CommandPPcS2_+0x138>
- 60c: 120a1063 bnez s4,72c <_ZN6Parser12parse_redirsEP7CommandPPcS2_+0x312>
- while (s < es && strchr(WHITESPACE, *s))
- 610: 8bee mv s7,s11
- ret = *s;
- 612: 4a01 li s4,0
- 614: 8926 mv s2,s1
- while (s < es && strchr(WHITESPACE, *s))
- 616: f48de4e3 bltu s11,s0,55e <_ZN6Parser12parse_redirsEP7CommandPPcS2_+0x144>
- *ps = s;
- 61a: 01bab023 sd s11,0(s5)
- printf("shell panic: %s\n", s);
- 61e: 00006597 auipc a1,0x6
- 622: a4a58593 addi a1,a1,-1462 # 6068 <_GLOBAL__sub_I__ZSt3cin+0x78>
- 626: 00006517 auipc a0,0x6
- 62a: a2250513 addi a0,a0,-1502 # 6048 <_GLOBAL__sub_I__ZSt3cin+0x58>
- 62e: 2cc040ef jal 48fa <printf>
- exit(1);
- 632: 4505 li a0,1
- 634: 5db040ef jal 540e <exit>
- *eq = 0; // Null terminate filename immediately
- 638: 000d8023 sb zero,0(s11)
- switch (tok)
- 63c: f56995e3 bne s3,s6,586 <_ZN6Parser12parse_redirsEP7CommandPPcS2_+0x16c>
- cmd = new RedirCommand(cmd, q, eq, O_RDONLY, 0);
- 640: 02800513 li a0,40
- 644: 195050ef jal 5fd8 <_Znwm>
- : sub_cmd(c), file(f), efile(ef), mode(m), fd(fd_in) {}
- 648: 00008797 auipc a5,0x8
- 64c: 83078793 addi a5,a5,-2000 # 7e78 <_ZTV12RedirCommand+0x10>
- 650: 01853423 sd s8,8(a0)
- 654: e11c sd a5,0(a0)
- 656: 01753823 sd s7,16(a0)
- 65a: 01b53c23 sd s11,24(a0)
- 65e: 02053023 sd zero,32(a0)
- cmd = new RedirCommand(cmd, q, eq, O_RDONLY, 0);
- 662: 8c2a mv s8,a0
- break;
- 664: bbcd j 456 <_ZN6Parser12parse_redirsEP7CommandPPcS2_+0x3c>
- switch (*s)
- 666: 03e00713 li a4,62
- 66a: f4e99ce3 bne s3,a4,5c2 <_ZN6Parser12parse_redirsEP7CommandPPcS2_+0x1a8>
- if (*s == '>')
- 66e: 001dc703 lbu a4,1(s11)
- 672: e7371fe3 bne a4,s3,4f0 <_ZN6Parser12parse_redirsEP7CommandPPcS2_+0xd6>
- s++;
- 676: 0d89 addi s11,s11,2
- 678: 02b00993 li s3,43
- 67c: bd9d j 4f2 <_ZN6Parser12parse_redirsEP7CommandPPcS2_+0xd8>
- switch (*s)
- 67e: 03e00713 li a4,62
- 682: 8bee mv s7,s11
- 684: 04ea1263 bne s4,a4,6c8 <_ZN6Parser12parse_redirsEP7CommandPPcS2_+0x2ae>
- if (*s == '>')
- 688: 001dc683 lbu a3,1(s11)
- 68c: 03e00713 li a4,62
- 690: 06e68a63 beq a3,a4,704 <_ZN6Parser12parse_redirsEP7CommandPPcS2_+0x2ea>
- s++;
- 694: 0d85 addi s11,s11,1
- ret = *s;
- 696: 03e00a13 li s4,62
- 69a: 8926 mv s2,s1
- while (s < es && strchr(WHITESPACE, *s))
- 69c: ec8de1e3 bltu s11,s0,55e <_ZN6Parser12parse_redirsEP7CommandPPcS2_+0x144>
- 6a0: bfad j 61a <_ZN6Parser12parse_redirsEP7CommandPPcS2_+0x200>
- cmd = new RedirCommand(cmd, q, eq, O_WRONLY | O_CREATE | O_TRUNC, 1);
- 6a2: 02800513 li a0,40
- 6a6: 133050ef jal 5fd8 <_Znwm>
- : sub_cmd(c), file(f), efile(ef), mode(m), fd(fd_in) {}
- 6aa: 00007797 auipc a5,0x7
- 6ae: 7ce78793 addi a5,a5,1998 # 7e78 <_ZTV12RedirCommand+0x10>
- 6b2: e11c sd a5,0(a0)
- 6b4: 67a2 ld a5,8(sp)
- 6b6: 01853423 sd s8,8(a0)
- 6ba: 01753823 sd s7,16(a0)
- 6be: 01b53c23 sd s11,24(a0)
- 6c2: f11c sd a5,32(a0)
- cmd = new RedirCommand(cmd, q, eq, O_WRONLY | O_CREATE | O_TRUNC, 1);
- 6c4: 8c2a mv s8,a0
- break;
- 6c6: bb41 j 456 <_ZN6Parser12parse_redirsEP7CommandPPcS2_+0x3c>
- switch (*s)
- 6c8: 07c00713 li a4,124
- 6cc: e8ea03e3 beq s4,a4,552 <_ZN6Parser12parse_redirsEP7CommandPPcS2_+0x138>
- while (s < es && !strchr(WHITESPACE, *s) && !strchr(SYMBOLS, *s))
- 6d0: 048dfa63 bgeu s11,s0,724 <_ZN6Parser12parse_redirsEP7CommandPPcS2_+0x30a>
- 6d4: 8d6e mv s10,s11
- 6d6: a811 j 6ea <_ZN6Parser12parse_redirsEP7CommandPPcS2_+0x2d0>
- 6d8: 000d4583 lbu a1,0(s10)
- 6dc: 6488 ld a0,8(s1)
- 6de: 5e8050ef jal 5cc6 <strchr>
- 6e2: e911 bnez a0,6f6 <_ZN6Parser12parse_redirsEP7CommandPPcS2_+0x2dc>
- s++;
- 6e4: 0d05 addi s10,s10,1
- while (s < es && !strchr(WHITESPACE, *s) && !strchr(SYMBOLS, *s))
- 6e6: 05a40f63 beq s0,s10,744 <_ZN6Parser12parse_redirsEP7CommandPPcS2_+0x32a>
- 6ea: 000d4583 lbu a1,0(s10)
- 6ee: 6088 ld a0,0(s1)
- 6f0: 5d6050ef jal 5cc6 <strchr>
- 6f4: d175 beqz a0,6d8 <_ZN6Parser12parse_redirsEP7CommandPPcS2_+0x2be>
- while (s < es && strchr(WHITESPACE, *s))
- 6f6: 048d7763 bgeu s10,s0,744 <_ZN6Parser12parse_redirsEP7CommandPPcS2_+0x32a>
- 6fa: 8bee mv s7,s11
- 6fc: 06100a13 li s4,97
- 700: 8dea mv s11,s10
- 702: bdb1 j 55e <_ZN6Parser12parse_redirsEP7CommandPPcS2_+0x144>
- s++;
- 704: 0d89 addi s11,s11,2
- ret = '+';
- 706: 02b00a13 li s4,43
- 70a: 8926 mv s2,s1
- while (s < es && strchr(WHITESPACE, *s))
- 70c: e48de9e3 bltu s11,s0,55e <_ZN6Parser12parse_redirsEP7CommandPPcS2_+0x144>
- 710: b729 j 61a <_ZN6Parser12parse_redirsEP7CommandPPcS2_+0x200>
- switch (*s)
- 712: 03e00713 li a4,62
- 716: 8bee mv s7,s11
- 718: f6ea08e3 beq s4,a4,688 <_ZN6Parser12parse_redirsEP7CommandPPcS2_+0x26e>
- 71c: 07c00713 li a4,124
- 720: e2ea09e3 beq s4,a4,552 <_ZN6Parser12parse_redirsEP7CommandPPcS2_+0x138>
- *ps = s;
- 724: 01bab023 sd s11,0(s5)
- 728: 8bee mv s7,s11
- 72a: bd91 j 57e <_ZN6Parser12parse_redirsEP7CommandPPcS2_+0x164>
- switch (*s)
- 72c: 02600713 li a4,38
- 730: e2ea01e3 beq s4,a4,552 <_ZN6Parser12parse_redirsEP7CommandPPcS2_+0x138>
- 734: fd8a071b addiw a4,s4,-40
- 738: 0ff77713 zext.b a4,a4
- 73c: 4685 li a3,1
- 73e: e0e6fae3 bgeu a3,a4,552 <_ZN6Parser12parse_redirsEP7CommandPPcS2_+0x138>
- 742: b7cd j 724 <_ZN6Parser12parse_redirsEP7CommandPPcS2_+0x30a>
- *ps = s;
- 744: 8bee mv s7,s11
- 746: 01aab023 sd s10,0(s5)
- 74a: 8dea mv s11,s10
- 74c: bd0d j 57e <_ZN6Parser12parse_redirsEP7CommandPPcS2_+0x164>
- 74e: 008ab023 sd s0,0(s5)
- while (s < es && strchr(WHITESPACE, *s))
- 752: b56d j 5fc <_ZN6Parser12parse_redirsEP7CommandPPcS2_+0x1e2>
-
-0000000000000754 <_ZN6Parser10parse_pipeEPPcS0_>:
- static Command *parse_pipe(char **ps, char *es)
- 754: 7119 addi sp,sp,-128
- 756: e8d2 sd s4,80(sp)
- 758: 8a2a mv s4,a0
- ExecCommand *cmd = new ExecCommand();
- 75a: 05800513 li a0,88
- static Command *parse_pipe(char **ps, char *es)
- 75e: fc86 sd ra,120(sp)
- 760: f8a2 sd s0,112(sp)
- 762: f4a6 sd s1,104(sp)
- 764: 842e mv s0,a1
- 766: e4d6 sd s5,72(sp)
- 768: e0da sd s6,64(sp)
- 76a: fc5e sd s7,56(sp)
- 76c: f466 sd s9,40(sp)
- 76e: f06a sd s10,32(sp)
- 770: f0ca sd s2,96(sp)
- 772: ecce sd s3,88(sp)
- 774: f862 sd s8,48(sp)
- 776: ec6e sd s11,24(sp)
- ExecCommand *cmd = new ExecCommand();
- 778: 061050ef jal 5fd8 <_Znwm>
- 77c: 84aa mv s1,a0
- {
- 77e: 00007797 auipc a5,0x7
- 782: 6d278793 addi a5,a5,1746 # 7e50 <_ZTV11ExecCommand+0x10>
- memset(argv, 0, sizeof(argv));
- 786: 00850b93 addi s7,a0,8
- {
- 78a: e09c sd a5,0(s1)
- ExecCommand *cmd = new ExecCommand();
- 78c: e42a sd a0,8(sp)
- memset(argv, 0, sizeof(argv));
- 78e: 05000613 li a2,80
- 792: 4581 li a1,0
- 794: 855e mv a0,s7
- 796: 342050ef jal 5ad8 <memset>
- ret = parse_redirs(ret, ps, es);
- 79a: 8526 mv a0,s1
- 79c: 8622 mv a2,s0
- 79e: 85d2 mv a1,s4
- 7a0: c7bff0ef jal 41a <_ZN6Parser12parse_redirsEP7CommandPPcS2_>
- char *s = *ps;
- 7a4: 000a3d03 ld s10,0(s4)
- ret = parse_redirs(ret, ps, es);
- 7a8: 8aaa mv s5,a0
- argc = 0;
- 7aa: 4b01 li s6,0
- while (s < es && strchr(WHITESPACE, *s))
- 7ac: 00007497 auipc s1,0x7
- 7b0: 75c48493 addi s1,s1,1884 # 7f08 <WHITESPACE>
- if (*s == '>')
- 7b4: 03e00c93 li s9,62
- while (s < es && strchr(WHITESPACE, *s))
- 7b8: 0c8d7f63 bgeu s10,s0,896 <_ZN6Parser10parse_pipeEPPcS0_+0x142>
- 7bc: 89a6 mv s3,s1
- 7be: a021 j 7c6 <_ZN6Parser10parse_pipeEPPcS0_+0x72>
- s++;
- 7c0: 0d05 addi s10,s10,1
- while (s < es && strchr(WHITESPACE, *s))
- 7c2: 01a40863 beq s0,s10,7d2 <_ZN6Parser10parse_pipeEPPcS0_+0x7e>
- 7c6: 000d4583 lbu a1,0(s10)
- 7ca: 6088 ld a0,0(s1)
- 7cc: 4fa050ef jal 5cc6 <strchr>
- 7d0: f965 bnez a0,7c0 <_ZN6Parser10parse_pipeEPPcS0_+0x6c>
- *ps = s;
- 7d2: 01aa3023 sd s10,0(s4)
- return *s && strchr(toks, *s);
- 7d6: 000d4583 lbu a1,0(s10)
- 7da: 10059063 bnez a1,8da <_ZN6Parser10parse_pipeEPPcS0_+0x186>
- while (s < es && strchr(WHITESPACE, *s))
- 7de: 008d6863 bltu s10,s0,7ee <_ZN6Parser10parse_pipeEPPcS0_+0x9a>
- 7e2: a6ad j b4c <_ZN6Parser10parse_pipeEPPcS0_+0x3f8>
- s++;
- 7e4: 0d05 addi s10,s10,1
- ret = *s;
- 7e6: 000d4903 lbu s2,0(s10)
- while (s < es && strchr(WHITESPACE, *s))
- 7ea: 0ba40f63 beq s0,s10,8a8 <_ZN6Parser10parse_pipeEPPcS0_+0x154>
- 7ee: 000d4583 lbu a1,0(s10)
- 7f2: 6088 ld a0,0(s1)
- 7f4: 4d2050ef jal 5cc6 <strchr>
- 7f8: f575 bnez a0,7e4 <_ZN6Parser10parse_pipeEPPcS0_+0x90>
- ret = *s;
- 7fa: 000d4903 lbu s2,0(s10)
- switch (*s)
- 7fe: 08090f63 beqz s2,89c <_ZN6Parser10parse_pipeEPPcS0_+0x148>
- 802: 1b990663 beq s2,s9,9ae <_ZN6Parser10parse_pipeEPPcS0_+0x25a>
- 806: 2d2ceb63 bltu s9,s2,adc <_ZN6Parser10parse_pipeEPPcS0_+0x388>
- 80a: 02900713 li a4,41
- 80e: 29276663 bltu a4,s2,a9a <_ZN6Parser10parse_pipeEPPcS0_+0x346>
- 812: 02700713 li a4,39
- 816: 01276663 bltu a4,s2,822 <_ZN6Parser10parse_pipeEPPcS0_+0xce>
- 81a: 02600713 li a4,38
- 81e: 28e91563 bne s2,a4,aa8 <_ZN6Parser10parse_pipeEPPcS0_+0x354>
- ret = *s;
- 822: 8c6a mv s8,s10
- s++;
- 824: 0d05 addi s10,s10,1
- ret = *s;
- 826: 2901 sext.w s2,s2
- 828: 89a6 mv s3,s1
- while (s < es && strchr(WHITESPACE, *s))
- 82a: 168d7f63 bgeu s10,s0,9a8 <_ZN6Parser10parse_pipeEPPcS0_+0x254>
- ret = *s;
- 82e: 8dea mv s11,s10
- 830: a021 j 838 <_ZN6Parser10parse_pipeEPPcS0_+0xe4>
- s++;
- 832: 0d85 addi s11,s11,1
- while (s < es && strchr(WHITESPACE, *s))
- 834: 008df963 bgeu s11,s0,846 <_ZN6Parser10parse_pipeEPPcS0_+0xf2>
- 838: 000dc583 lbu a1,0(s11)
- 83c: 0009b503 ld a0,0(s3)
- 840: 486050ef jal 5cc6 <strchr>
- 844: f57d bnez a0,832 <_ZN6Parser10parse_pipeEPPcS0_+0xde>
- *ps = s;
- 846: 01ba3023 sd s11,0(s4)
- if ((tok = get_token(ps, es, &q, &eq)) == 0)
- 84a: 0a090163 beqz s2,8ec <_ZN6Parser10parse_pipeEPPcS0_+0x198>
- if (tok != 'a')
- 84e: 06100793 li a5,97
- 852: 00f90f63 beq s2,a5,870 <_ZN6Parser10parse_pipeEPPcS0_+0x11c>
- printf("shell panic: %s\n", s);
- 856: 00006597 auipc a1,0x6
- 85a: 83a58593 addi a1,a1,-1990 # 6090 <_GLOBAL__sub_I__ZSt3cin+0xa0>
- 85e: 00005517 auipc a0,0x5
- 862: 7ea50513 addi a0,a0,2026 # 6048 <_GLOBAL__sub_I__ZSt3cin+0x58>
- 866: 094040ef jal 48fa <printf>
- exit(1);
- 86a: 4505 li a0,1
- 86c: 3a3040ef jal 540e <exit>
- cmd->argv[argc] = q;
- 870: 018bb023 sd s8,0(s7)
- *eq = 0; // Temp
- 874: 000d0023 sb zero,0(s10)
- argc++;
- 878: 2b05 addiw s6,s6,1
- if (argc >= MAX_ARGS)
- 87a: 47a5 li a5,9
- 87c: 0d67c463 blt a5,s6,944 <_ZN6Parser10parse_pipeEPPcS0_+0x1f0>
- ret = parse_redirs(ret, ps, es);
- 880: 8556 mv a0,s5
- 882: 8622 mv a2,s0
- 884: 85d2 mv a1,s4
- 886: b95ff0ef jal 41a <_ZN6Parser12parse_redirsEP7CommandPPcS2_>
- char *s = *ps;
- 88a: 000a3d03 ld s10,0(s4)
- ret = parse_redirs(ret, ps, es);
- 88e: 8aaa mv s5,a0
- 890: 0ba1 addi s7,s7,8
- while (s < es && strchr(WHITESPACE, *s))
- 892: f28d65e3 bltu s10,s0,7bc <_ZN6Parser10parse_pipeEPPcS0_+0x68>
- return *s && strchr(toks, *s);
- 896: 000d4583 lbu a1,0(s10)
- 89a: e1a1 bnez a1,8da <_ZN6Parser10parse_pipeEPPcS0_+0x186>
- while (s < es && strchr(WHITESPACE, *s))
- 89c: 2a8d7863 bgeu s10,s0,b4c <_ZN6Parser10parse_pipeEPPcS0_+0x3f8>
- 8a0: 8c6a mv s8,s10
- ret = *s;
- 8a2: 4901 li s2,0
- 8a4: 89a6 mv s3,s1
- 8a6: b761 j 82e <_ZN6Parser10parse_pipeEPPcS0_+0xda>
- switch (*s)
- 8a8: 0f990463 beq s2,s9,990 <_ZN6Parser10parse_pipeEPPcS0_+0x23c>
- 8ac: 0d2cea63 bltu s9,s2,980 <_ZN6Parser10parse_pipeEPPcS0_+0x22c>
- 8b0: 02900793 li a5,41
- 8b4: 1127ef63 bltu a5,s2,9d2 <_ZN6Parser10parse_pipeEPPcS0_+0x27e>
- 8b8: 02700713 li a4,39
- 8bc: f72763e3 bltu a4,s2,822 <_ZN6Parser10parse_pipeEPPcS0_+0xce>
- 8c0: 28090663 beqz s2,b4c <_ZN6Parser10parse_pipeEPPcS0_+0x3f8>
- 8c4: 02600713 li a4,38
- 8c8: 0ce91063 bne s2,a4,988 <_ZN6Parser10parse_pipeEPPcS0_+0x234>
- ret = *s;
- 8cc: 8c6a mv s8,s10
- s++;
- 8ce: 0d05 addi s10,s10,1
- ret = *s;
- 8d0: 2901 sext.w s2,s2
- 8d2: 89a6 mv s3,s1
- while (s < es && strchr(WHITESPACE, *s))
- 8d4: f48d6de3 bltu s10,s0,82e <_ZN6Parser10parse_pipeEPPcS0_+0xda>
- 8d8: a8c1 j 9a8 <_ZN6Parser10parse_pipeEPPcS0_+0x254>
- return *s && strchr(toks, *s);
- 8da: 00005517 auipc a0,0x5
- 8de: 7ce50513 addi a0,a0,1998 # 60a8 <_GLOBAL__sub_I__ZSt3cin+0xb8>
- 8e2: 3e4050ef jal 5cc6 <strchr>
- 8e6: cd2d beqz a0,960 <_ZN6Parser10parse_pipeEPPcS0_+0x20c>
- char *s = *ps;
- 8e8: 000a3d83 ld s11,0(s4)
- cmd->argv[argc] = 0;
- 8ec: 67a2 ld a5,8(sp)
- 8ee: 0b0e slli s6,s6,0x3
- 8f0: 97da add a5,a5,s6
- 8f2: 0007b423 sd zero,8(a5)
- while (s < es && strchr(WHITESPACE, *s))
- 8f6: 028df163 bgeu s11,s0,918 <_ZN6Parser10parse_pipeEPPcS0_+0x1c4>
- 8fa: 00007997 auipc s3,0x7
- 8fe: 60e98993 addi s3,s3,1550 # 7f08 <WHITESPACE>
- 902: a021 j 90a <_ZN6Parser10parse_pipeEPPcS0_+0x1b6>
- s++;
- 904: 0d85 addi s11,s11,1
- while (s < es && strchr(WHITESPACE, *s))
- 906: 01b40963 beq s0,s11,918 <_ZN6Parser10parse_pipeEPPcS0_+0x1c4>
- 90a: 000dc583 lbu a1,0(s11)
- 90e: 0009b503 ld a0,0(s3)
- 912: 3b4050ef jal 5cc6 <strchr>
- 916: f57d bnez a0,904 <_ZN6Parser10parse_pipeEPPcS0_+0x1b0>
- *ps = s;
- 918: 01ba3023 sd s11,0(s4)
- return *s && strchr(toks, *s);
- 91c: 000dc583 lbu a1,0(s11)
- 920: e5f9 bnez a1,9ee <_ZN6Parser10parse_pipeEPPcS0_+0x29a>
- Command *cmd = parse_exec(ps, es);
- 922: 8456 mv s0,s5
- }
- 924: 70e6 ld ra,120(sp)
- 926: 8522 mv a0,s0
- 928: 7446 ld s0,112(sp)
- 92a: 74a6 ld s1,104(sp)
- 92c: 7906 ld s2,96(sp)
- 92e: 69e6 ld s3,88(sp)
- 930: 6a46 ld s4,80(sp)
- 932: 6aa6 ld s5,72(sp)
- 934: 6b06 ld s6,64(sp)
- 936: 7be2 ld s7,56(sp)
- 938: 7c42 ld s8,48(sp)
- 93a: 7ca2 ld s9,40(sp)
- 93c: 7d02 ld s10,32(sp)
- 93e: 6de2 ld s11,24(sp)
- 940: 6109 addi sp,sp,128
- 942: 8082 ret
- printf("shell panic: %s\n", s);
- 944: 00005597 auipc a1,0x5
- 948: 75458593 addi a1,a1,1876 # 6098 <_GLOBAL__sub_I__ZSt3cin+0xa8>
- 94c: 00005517 auipc a0,0x5
- 950: 6fc50513 addi a0,a0,1788 # 6048 <_GLOBAL__sub_I__ZSt3cin+0x58>
- 954: 7a7030ef jal 48fa <printf>
- exit(1);
- 958: 4505 li a0,1
- 95a: 2b5040ef jal 540e <exit>
-}
- 95e: b70d j 880 <_ZN6Parser10parse_pipeEPPcS0_+0x12c>
- char *s = *ps;
- 960: 000a3d03 ld s10,0(s4)
- 964: 89a6 mv s3,s1
- ret = *s;
- 966: 000d4903 lbu s2,0(s10)
- while (s < es && strchr(WHITESPACE, *s))
- 96a: e88d62e3 bltu s10,s0,7ee <_ZN6Parser10parse_pipeEPPcS0_+0x9a>
- switch (*s)
- 96e: 03c00713 li a4,60
- 972: 1f277163 bgeu a4,s2,b54 <_ZN6Parser10parse_pipeEPPcS0_+0x400>
- 976: 03e00713 li a4,62
- 97a: 8c6a mv s8,s10
- 97c: 00e90b63 beq s2,a4,992 <_ZN6Parser10parse_pipeEPPcS0_+0x23e>
- 980: 07c00713 li a4,124
- 984: e8e90fe3 beq s2,a4,822 <_ZN6Parser10parse_pipeEPPcS0_+0xce>
- *ps = s;
- 988: 01aa3023 sd s10,0(s4)
- 98c: 8c6a mv s8,s10
- 98e: b5cd j 870 <_ZN6Parser10parse_pipeEPPcS0_+0x11c>
- switch (*s)
- 990: 8c22 mv s8,s0
- if (*s == '>')
- 992: 001c4783 lbu a5,1(s8)
- 996: 03978163 beq a5,s9,9b8 <_ZN6Parser10parse_pipeEPPcS0_+0x264>
- s++;
- 99a: 001c0d13 addi s10,s8,1
- ret = *s;
- 99e: 03e00913 li s2,62
- 9a2: 89a6 mv s3,s1
- while (s < es && strchr(WHITESPACE, *s))
- 9a4: e88d65e3 bltu s10,s0,82e <_ZN6Parser10parse_pipeEPPcS0_+0xda>
- *ps = s;
- 9a8: 01aa3023 sd s10,0(s4)
- if (tok != 'a')
- 9ac: b56d j 856 <_ZN6Parser10parse_pipeEPPcS0_+0x102>
- switch (*s)
- 9ae: 8c6a mv s8,s10
- if (*s == '>')
- 9b0: 001c4783 lbu a5,1(s8)
- 9b4: ff9793e3 bne a5,s9,99a <_ZN6Parser10parse_pipeEPPcS0_+0x246>
- s++;
- 9b8: 002c0d13 addi s10,s8,2
- ret = '+';
- 9bc: 02b00913 li s2,43
- 9c0: 00007997 auipc s3,0x7
- 9c4: 54898993 addi s3,s3,1352 # 7f08 <WHITESPACE>
- while (s < es && strchr(WHITESPACE, *s))
- 9c8: e68d63e3 bltu s10,s0,82e <_ZN6Parser10parse_pipeEPPcS0_+0xda>
- *ps = s;
- 9cc: 01aa3023 sd s10,0(s4)
- if (tok != 'a')
- 9d0: b559 j 856 <_ZN6Parser10parse_pipeEPPcS0_+0x102>
- switch (*s)
- 9d2: fc59071b addiw a4,s2,-59
- 9d6: 0ff77713 zext.b a4,a4
- 9da: 4685 li a3,1
- 9dc: fae6e6e3 bltu a3,a4,988 <_ZN6Parser10parse_pipeEPPcS0_+0x234>
- ret = *s;
- 9e0: 8c6a mv s8,s10
- s++;
- 9e2: 0d05 addi s10,s10,1
- ret = *s;
- 9e4: 2901 sext.w s2,s2
- 9e6: 89a6 mv s3,s1
- while (s < es && strchr(WHITESPACE, *s))
- 9e8: e48d63e3 bltu s10,s0,82e <_ZN6Parser10parse_pipeEPPcS0_+0xda>
- 9ec: bf75 j 9a8 <_ZN6Parser10parse_pipeEPPcS0_+0x254>
- return *s && strchr(toks, *s);
- 9ee: 00005517 auipc a0,0x5
- 9f2: 6c250513 addi a0,a0,1730 # 60b0 <_GLOBAL__sub_I__ZSt3cin+0xc0>
- 9f6: 2d0050ef jal 5cc6 <strchr>
- 9fa: d505 beqz a0,922 <_ZN6Parser10parse_pipeEPPcS0_+0x1ce>
- s = *ps;
- 9fc: 000a3483 ld s1,0(s4)
- while (s < es && strchr(WHITESPACE, *s))
- a00: 0284f163 bgeu s1,s0,a22 <_ZN6Parser10parse_pipeEPPcS0_+0x2ce>
- a04: 00007997 auipc s3,0x7
- a08: 50498993 addi s3,s3,1284 # 7f08 <WHITESPACE>
- a0c: a021 j a14 <_ZN6Parser10parse_pipeEPPcS0_+0x2c0>
- s++;
- a0e: 0485 addi s1,s1,1
- while (s < es && strchr(WHITESPACE, *s))
- a10: 00940963 beq s0,s1,a22 <_ZN6Parser10parse_pipeEPPcS0_+0x2ce>
- a14: 0004c583 lbu a1,0(s1)
- a18: 0009b503 ld a0,0(s3)
- a1c: 2aa050ef jal 5cc6 <strchr>
- a20: f57d bnez a0,a0e <_ZN6Parser10parse_pipeEPPcS0_+0x2ba>
- ret = *s;
- a22: 0004c783 lbu a5,0(s1)
- switch (*s)
- a26: 03c00713 li a4,60
- a2a: 0cf76963 bltu a4,a5,afc <_ZN6Parser10parse_pipeEPPcS0_+0x3a8>
- a2e: 03a00713 li a4,58
- a32: 00f76e63 bltu a4,a5,a4e <_ZN6Parser10parse_pipeEPPcS0_+0x2fa>
- a36: cf89 beqz a5,a50 <_ZN6Parser10parse_pipeEPPcS0_+0x2fc>
- a38: 02600713 li a4,38
- a3c: 00e78963 beq a5,a4,a4e <_ZN6Parser10parse_pipeEPPcS0_+0x2fa>
- a40: fd87879b addiw a5,a5,-40
- a44: 0ff7f793 zext.b a5,a5
- a48: 4705 li a4,1
- a4a: 0cf76763 bltu a4,a5,b18 <_ZN6Parser10parse_pipeEPPcS0_+0x3c4>
- s++;
- a4e: 0485 addi s1,s1,1
- while (s < es && strchr(WHITESPACE, *s))
- a50: 00007997 auipc s3,0x7
- a54: 4b898993 addi s3,s3,1208 # 7f08 <WHITESPACE>
- a58: 0084e663 bltu s1,s0,a64 <_ZN6Parser10parse_pipeEPPcS0_+0x310>
- a5c: a819 j a72 <_ZN6Parser10parse_pipeEPPcS0_+0x31e>
- s++;
- a5e: 0485 addi s1,s1,1
- while (s < es && strchr(WHITESPACE, *s))
- a60: 0e940463 beq s0,s1,b48 <_ZN6Parser10parse_pipeEPPcS0_+0x3f4>
- a64: 0004c583 lbu a1,0(s1)
- a68: 0009b503 ld a0,0(s3)
- a6c: 25a050ef jal 5cc6 <strchr>
- a70: f57d bnez a0,a5e <_ZN6Parser10parse_pipeEPPcS0_+0x30a>
- *ps = s;
- a72: 009a3023 sd s1,0(s4)
- cmd = new PipeCommand(cmd, parse_pipe(ps, es));
- a76: 4561 li a0,24
- a78: 560050ef jal 5fd8 <_Znwm>
- a7c: 87aa mv a5,a0
- a7e: 85a2 mv a1,s0
- a80: 8552 mv a0,s4
- a82: 843e mv s0,a5
- a84: cd1ff0ef jal 754 <_ZN6Parser10parse_pipeEPPcS0_>
- PipeCommand(Command *l, Command *r) : left(l), right(r) {}
- a88: 00007797 auipc a5,0x7
- a8c: 41878793 addi a5,a5,1048 # 7ea0 <_ZTV11PipeCommand+0x10>
- a90: e01c sd a5,0(s0)
- a92: 01543423 sd s5,8(s0)
- a96: e808 sd a0,16(s0)
- a98: b571 j 924 <_ZN6Parser10parse_pipeEPPcS0_+0x1d0>
- switch (*s)
- a9a: fc59071b addiw a4,s2,-59
- a9e: 0ff77713 zext.b a4,a4
- aa2: 4685 li a3,1
- aa4: d6e6ffe3 bgeu a3,a4,822 <_ZN6Parser10parse_pipeEPPcS0_+0xce>
- while (s < es && !strchr(WHITESPACE, *s) && !strchr(SYMBOLS, *s))
- aa8: ee8d70e3 bgeu s10,s0,988 <_ZN6Parser10parse_pipeEPPcS0_+0x234>
- aac: 8dea mv s11,s10
- aae: a811 j ac2 <_ZN6Parser10parse_pipeEPPcS0_+0x36e>
- ab0: 000dc583 lbu a1,0(s11)
- ab4: 6488 ld a0,8(s1)
- ab6: 210050ef jal 5cc6 <strchr>
- aba: e911 bnez a0,ace <_ZN6Parser10parse_pipeEPPcS0_+0x37a>
- s++;
- abc: 0d85 addi s11,s11,1
- while (s < es && !strchr(WHITESPACE, *s) && !strchr(SYMBOLS, *s))
- abe: 03b40a63 beq s0,s11,af2 <_ZN6Parser10parse_pipeEPPcS0_+0x39e>
- ac2: 000dc583 lbu a1,0(s11)
- ac6: 6088 ld a0,0(s1)
- ac8: 1fe050ef jal 5cc6 <strchr>
- acc: d175 beqz a0,ab0 <_ZN6Parser10parse_pipeEPPcS0_+0x35c>
- while (s < es && strchr(WHITESPACE, *s))
- ace: 8c6a mv s8,s10
- ad0: 0a8df463 bgeu s11,s0,b78 <_ZN6Parser10parse_pipeEPPcS0_+0x424>
- ad4: 06100913 li s2,97
- ad8: 8d6e mv s10,s11
- ada: bb91 j 82e <_ZN6Parser10parse_pipeEPPcS0_+0xda>
- switch (*s)
- adc: 07c00713 li a4,124
- ae0: fce914e3 bne s2,a4,aa8 <_ZN6Parser10parse_pipeEPPcS0_+0x354>
- ret = *s;
- ae4: 8c6a mv s8,s10
- s++;
- ae6: 0d05 addi s10,s10,1
- ret = *s;
- ae8: 2901 sext.w s2,s2
- aea: 89a6 mv s3,s1
- while (s < es && strchr(WHITESPACE, *s))
- aec: d48d61e3 bltu s10,s0,82e <_ZN6Parser10parse_pipeEPPcS0_+0xda>
- af0: bd65 j 9a8 <_ZN6Parser10parse_pipeEPPcS0_+0x254>
- *ps = s;
- af2: 8c6a mv s8,s10
- af4: 008a3023 sd s0,0(s4)
- af8: 8d22 mv s10,s0
- afa: bb9d j 870 <_ZN6Parser10parse_pipeEPPcS0_+0x11c>
- switch (*s)
- afc: 03e00713 li a4,62
- b00: 00e79863 bne a5,a4,b10 <_ZN6Parser10parse_pipeEPPcS0_+0x3bc>
- if (*s == '>')
- b04: 0014c703 lbu a4,1(s1)
- b08: f4f713e3 bne a4,a5,a4e <_ZN6Parser10parse_pipeEPPcS0_+0x2fa>
- s++;
- b0c: 0489 addi s1,s1,2
- b0e: b789 j a50 <_ZN6Parser10parse_pipeEPPcS0_+0x2fc>
- switch (*s)
- b10: 07c00713 li a4,124
- b14: f2e78de3 beq a5,a4,a4e <_ZN6Parser10parse_pipeEPPcS0_+0x2fa>
- while (s < es && !strchr(WHITESPACE, *s) && !strchr(SYMBOLS, *s))
- b18: f484fde3 bgeu s1,s0,a72 <_ZN6Parser10parse_pipeEPPcS0_+0x31e>
- b1c: 00007997 auipc s3,0x7
- b20: 3ec98993 addi s3,s3,1004 # 7f08 <WHITESPACE>
- b24: 0004c583 lbu a1,0(s1)
- b28: 0009b503 ld a0,0(s3)
- b2c: 19a050ef jal 5cc6 <strchr>
- b30: f105 bnez a0,a50 <_ZN6Parser10parse_pipeEPPcS0_+0x2fc>
- b32: 0004c583 lbu a1,0(s1)
- b36: 0089b503 ld a0,8(s3)
- b3a: 18c050ef jal 5cc6 <strchr>
- b3e: f00519e3 bnez a0,a50 <_ZN6Parser10parse_pipeEPPcS0_+0x2fc>
- s++;
- b42: 0485 addi s1,s1,1
- while (s < es && !strchr(WHITESPACE, *s) && !strchr(SYMBOLS, *s))
- b44: fe9410e3 bne s0,s1,b24 <_ZN6Parser10parse_pipeEPPcS0_+0x3d0>
- b48: 84a2 mv s1,s0
- b4a: b725 j a72 <_ZN6Parser10parse_pipeEPPcS0_+0x31e>
- *ps = s;
- b4c: 01aa3023 sd s10,0(s4)
- b50: 8dea mv s11,s10
- b52: bb69 j 8ec <_ZN6Parser10parse_pipeEPPcS0_+0x198>
- switch (*s)
- b54: 03a00713 li a4,58
- b58: cd2765e3 bltu a4,s2,822 <_ZN6Parser10parse_pipeEPPcS0_+0xce>
- b5c: fe0908e3 beqz s2,b4c <_ZN6Parser10parse_pipeEPPcS0_+0x3f8>
- b60: 02600713 li a4,38
- b64: cae90fe3 beq s2,a4,822 <_ZN6Parser10parse_pipeEPPcS0_+0xce>
- b68: fd89071b addiw a4,s2,-40
- b6c: 0ff77713 zext.b a4,a4
- b70: 4685 li a3,1
- b72: cae6f8e3 bgeu a3,a4,822 <_ZN6Parser10parse_pipeEPPcS0_+0xce>
- b76: bd09 j 988 <_ZN6Parser10parse_pipeEPPcS0_+0x234>
- *ps = s;
- b78: 01ba3023 sd s11,0(s4)
- b7c: 8d6e mv s10,s11
- b7e: 06100913 li s2,97
- b82: b1f1 j 84e <_ZN6Parser10parse_pipeEPPcS0_+0xfa>
-
-0000000000000b84 <_ZN6Parser10parse_lineEPPcS0_>:
- static Command *parse_line(char **ps, char *es)
- b84: 7159 addi sp,sp,-112
- b86: eca6 sd s1,88(sp)
- b88: e8ca sd s2,80(sp)
- b8a: e4ce sd s3,72(sp)
- b8c: e0d2 sd s4,64(sp)
- b8e: fc56 sd s5,56(sp)
- b90: f85a sd s6,48(sp)
- b92: f45e sd s7,40(sp)
- b94: f062 sd s8,32(sp)
- b96: ec66 sd s9,24(sp)
- b98: e86a sd s10,16(sp)
- b9a: e46e sd s11,8(sp)
- b9c: f486 sd ra,104(sp)
- b9e: f0a2 sd s0,96(sp)
- ba0: 89aa mv s3,a0
- ba2: 84ae mv s1,a1
- Command *cmd = parse_pipe(ps, es);
- ba4: bb1ff0ef jal 754 <_ZN6Parser10parse_pipeEPPcS0_>
- ba8: 8a2a mv s4,a0
- while (peek(ps, es, "&"))
- baa: 00007917 auipc s2,0x7
- bae: 35e90913 addi s2,s2,862 # 7f08 <WHITESPACE>
- return *s && strchr(toks, *s);
- bb2: 00005c97 auipc s9,0x5
- bb6: 506c8c93 addi s9,s9,1286 # 60b8 <_GLOBAL__sub_I__ZSt3cin+0xc8>
- switch (*s)
- bba: 03c00b13 li s6,60
- bbe: 03e00b93 li s7,62
- bc2: 07c00d93 li s11,124
- bc6: 03a00c13 li s8,58
- bca: 02600d13 li s10,38
- BackCommand(Command *c) : sub_cmd(c) {}
- bce: 00007a97 auipc s5,0x7
- bd2: 322a8a93 addi s5,s5,802 # 7ef0 <_ZTV11BackCommand+0x10>
- char *s = *ps;
- bd6: 0009b403 ld s0,0(s3)
- while (s < es && strchr(WHITESPACE, *s))
- bda: 00946663 bltu s0,s1,be6 <_ZN6Parser10parse_lineEPPcS0_+0x62>
- bde: a819 j bf4 <_ZN6Parser10parse_lineEPPcS0_+0x70>
- s++;
- be0: 0405 addi s0,s0,1
- while (s < es && strchr(WHITESPACE, *s))
- be2: 00848963 beq s1,s0,bf4 <_ZN6Parser10parse_lineEPPcS0_+0x70>
- be6: 00044583 lbu a1,0(s0)
- bea: 00093503 ld a0,0(s2)
- bee: 0d8050ef jal 5cc6 <strchr>
- bf2: f57d bnez a0,be0 <_ZN6Parser10parse_lineEPPcS0_+0x5c>
- *ps = s;
- bf4: 0089b023 sd s0,0(s3)
- return *s && strchr(toks, *s);
- bf8: 00044583 lbu a1,0(s0)
- bfc: e9a9 bnez a1,c4e <_ZN6Parser10parse_lineEPPcS0_+0xca>
- while (s < es && strchr(WHITESPACE, *s))
- bfe: 02947163 bgeu s0,s1,c20 <_ZN6Parser10parse_lineEPPcS0_+0x9c>
- c02: 00007917 auipc s2,0x7
- c06: 30690913 addi s2,s2,774 # 7f08 <WHITESPACE>
- c0a: a021 j c12 <_ZN6Parser10parse_lineEPPcS0_+0x8e>
- s++;
- c0c: 0405 addi s0,s0,1
- while (s < es && strchr(WHITESPACE, *s))
- c0e: 00848963 beq s1,s0,c20 <_ZN6Parser10parse_lineEPPcS0_+0x9c>
- c12: 00044583 lbu a1,0(s0)
- c16: 00093503 ld a0,0(s2)
- c1a: 0ac050ef jal 5cc6 <strchr>
- c1e: f57d bnez a0,c0c <_ZN6Parser10parse_lineEPPcS0_+0x88>
- *ps = s;
- c20: 0089b023 sd s0,0(s3)
- return *s && strchr(toks, *s);
- c24: 00044583 lbu a1,0(s0)
- c28: 0e059a63 bnez a1,d1c <_ZN6Parser10parse_lineEPPcS0_+0x198>
- c2c: 8452 mv s0,s4
- }
- c2e: 70a6 ld ra,104(sp)
- c30: 8522 mv a0,s0
- c32: 7406 ld s0,96(sp)
- c34: 64e6 ld s1,88(sp)
- c36: 6946 ld s2,80(sp)
- c38: 69a6 ld s3,72(sp)
- c3a: 6a06 ld s4,64(sp)
- c3c: 7ae2 ld s5,56(sp)
- c3e: 7b42 ld s6,48(sp)
- c40: 7ba2 ld s7,40(sp)
- c42: 7c02 ld s8,32(sp)
- c44: 6ce2 ld s9,24(sp)
- c46: 6d42 ld s10,16(sp)
- c48: 6da2 ld s11,8(sp)
- c4a: 6165 addi sp,sp,112
- c4c: 8082 ret
- return *s && strchr(toks, *s);
- c4e: 8566 mv a0,s9
- c50: 076050ef jal 5cc6 <strchr>
- s = *ps;
- c54: 0009b403 ld s0,0(s3)
- return *s && strchr(toks, *s);
- c58: d15d beqz a0,bfe <_ZN6Parser10parse_lineEPPcS0_+0x7a>
- while (s < es && strchr(WHITESPACE, *s))
- c5a: 00946663 bltu s0,s1,c66 <_ZN6Parser10parse_lineEPPcS0_+0xe2>
- c5e: a819 j c74 <_ZN6Parser10parse_lineEPPcS0_+0xf0>
- s++;
- c60: 0405 addi s0,s0,1
- while (s < es && strchr(WHITESPACE, *s))
- c62: 00848963 beq s1,s0,c74 <_ZN6Parser10parse_lineEPPcS0_+0xf0>
- c66: 00044583 lbu a1,0(s0)
- c6a: 00093503 ld a0,0(s2)
- c6e: 058050ef jal 5cc6 <strchr>
- c72: f57d bnez a0,c60 <_ZN6Parser10parse_lineEPPcS0_+0xdc>
- ret = *s;
- c74: 00044783 lbu a5,0(s0)
- switch (*s)
- c78: 08fb6a63 bltu s6,a5,d0c <_ZN6Parser10parse_lineEPPcS0_+0x188>
- c7c: 00fc6c63 bltu s8,a5,c94 <_ZN6Parser10parse_lineEPPcS0_+0x110>
- c80: cb99 beqz a5,c96 <_ZN6Parser10parse_lineEPPcS0_+0x112>
- c82: 01a78963 beq a5,s10,c94 <_ZN6Parser10parse_lineEPPcS0_+0x110>
- c86: fd87879b addiw a5,a5,-40
- c8a: 0ff7f793 zext.b a5,a5
- c8e: 4705 li a4,1
- c90: 02f76d63 bltu a4,a5,cca <_ZN6Parser10parse_lineEPPcS0_+0x146>
- s++;
- c94: 0405 addi s0,s0,1
- while (s < es && strchr(WHITESPACE, *s))
- c96: 00946663 bltu s0,s1,ca2 <_ZN6Parser10parse_lineEPPcS0_+0x11e>
- c9a: a819 j cb0 <_ZN6Parser10parse_lineEPPcS0_+0x12c>
- s++;
- c9c: 0405 addi s0,s0,1
- while (s < es && strchr(WHITESPACE, *s))
- c9e: 04848b63 beq s1,s0,cf4 <_ZN6Parser10parse_lineEPPcS0_+0x170>
- ca2: 00044583 lbu a1,0(s0)
- ca6: 00093503 ld a0,0(s2)
- caa: 01c050ef jal 5cc6 <strchr>
- cae: f57d bnez a0,c9c <_ZN6Parser10parse_lineEPPcS0_+0x118>
- *ps = s;
- cb0: 0089b023 sd s0,0(s3)
- cmd = new BackCommand(cmd);
- cb4: 4541 li a0,16
- cb6: 322050ef jal 5fd8 <_Znwm>
- BackCommand(Command *c) : sub_cmd(c) {}
- cba: 01453423 sd s4,8(a0)
- cbe: 01553023 sd s5,0(a0)
- cmd = new BackCommand(cmd);
- cc2: 8a2a mv s4,a0
- cc4: bf09 j bd6 <_ZN6Parser10parse_lineEPPcS0_+0x52>
- switch (*s)
- cc6: fdb787e3 beq a5,s11,c94 <_ZN6Parser10parse_lineEPPcS0_+0x110>
- while (s < es && !strchr(WHITESPACE, *s) && !strchr(SYMBOLS, *s))
- cca: 00946d63 bltu s0,s1,ce4 <_ZN6Parser10parse_lineEPPcS0_+0x160>
- cce: b7cd j cb0 <_ZN6Parser10parse_lineEPPcS0_+0x12c>
- cd0: 00044583 lbu a1,0(s0)
- cd4: 00893503 ld a0,8(s2)
- cd8: 7ef040ef jal 5cc6 <strchr>
- cdc: fd4d bnez a0,c96 <_ZN6Parser10parse_lineEPPcS0_+0x112>
- s++;
- cde: 0405 addi s0,s0,1
- while (s < es && !strchr(WHITESPACE, *s) && !strchr(SYMBOLS, *s))
- ce0: 00848a63 beq s1,s0,cf4 <_ZN6Parser10parse_lineEPPcS0_+0x170>
- ce4: 00044583 lbu a1,0(s0)
- ce8: 00093503 ld a0,0(s2)
- cec: 7db040ef jal 5cc6 <strchr>
- cf0: d165 beqz a0,cd0 <_ZN6Parser10parse_lineEPPcS0_+0x14c>
- cf2: b755 j c96 <_ZN6Parser10parse_lineEPPcS0_+0x112>
- cf4: 8426 mv s0,s1
- *ps = s;
- cf6: 0089b023 sd s0,0(s3)
- cmd = new BackCommand(cmd);
- cfa: 4541 li a0,16
- cfc: 2dc050ef jal 5fd8 <_Znwm>
- BackCommand(Command *c) : sub_cmd(c) {}
- d00: 01453423 sd s4,8(a0)
- d04: 01553023 sd s5,0(a0)
- cmd = new BackCommand(cmd);
- d08: 8a2a mv s4,a0
- d0a: b5f1 j bd6 <_ZN6Parser10parse_lineEPPcS0_+0x52>
- switch (*s)
- d0c: fb779de3 bne a5,s7,cc6 <_ZN6Parser10parse_lineEPPcS0_+0x142>
- if (*s == '>')
- d10: 00144783 lbu a5,1(s0)
- d14: f97790e3 bne a5,s7,c94 <_ZN6Parser10parse_lineEPPcS0_+0x110>
- s++;
- d18: 0409 addi s0,s0,2
- d1a: bfb5 j c96 <_ZN6Parser10parse_lineEPPcS0_+0x112>
- return *s && strchr(toks, *s);
- d1c: 00005517 auipc a0,0x5
- d20: 3a450513 addi a0,a0,932 # 60c0 <_GLOBAL__sub_I__ZSt3cin+0xd0>
- d24: 7a3040ef jal 5cc6 <strchr>
- d28: f00502e3 beqz a0,c2c <_ZN6Parser10parse_lineEPPcS0_+0xa8>
- s = *ps;
- d2c: 0009b403 ld s0,0(s3)
- ret = *s;
- d30: 00044783 lbu a5,0(s0)
- while (s < es && strchr(WHITESPACE, *s))
- d34: 0e947863 bgeu s0,s1,e24 <_ZN6Parser10parse_lineEPPcS0_+0x2a0>
- d38: 00007917 auipc s2,0x7
- d3c: 1d090913 addi s2,s2,464 # 7f08 <WHITESPACE>
- d40: a021 j d48 <_ZN6Parser10parse_lineEPPcS0_+0x1c4>
- s++;
- d42: 0405 addi s0,s0,1
- while (s < es && strchr(WHITESPACE, *s))
- d44: 00848963 beq s1,s0,d56 <_ZN6Parser10parse_lineEPPcS0_+0x1d2>
- d48: 00044583 lbu a1,0(s0)
- d4c: 00093503 ld a0,0(s2)
- d50: 777040ef jal 5cc6 <strchr>
- d54: f57d bnez a0,d42 <_ZN6Parser10parse_lineEPPcS0_+0x1be>
- ret = *s;
- d56: 00044783 lbu a5,0(s0)
- switch (*s)
- d5a: 02900713 li a4,41
- d5e: 04f76b63 bltu a4,a5,db4 <_ZN6Parser10parse_lineEPPcS0_+0x230>
- d62: 02700713 li a4,39
- d66: 08f76f63 bltu a4,a5,e04 <_ZN6Parser10parse_lineEPPcS0_+0x280>
- d6a: efd9 bnez a5,e08 <_ZN6Parser10parse_lineEPPcS0_+0x284>
- while (s < es && strchr(WHITESPACE, *s))
- d6c: 00007917 auipc s2,0x7
- d70: 19c90913 addi s2,s2,412 # 7f08 <WHITESPACE>
- d74: 00946663 bltu s0,s1,d80 <_ZN6Parser10parse_lineEPPcS0_+0x1fc>
- d78: a819 j d8e <_ZN6Parser10parse_lineEPPcS0_+0x20a>
- s++;
- d7a: 0405 addi s0,s0,1
- while (s < es && strchr(WHITESPACE, *s))
- d7c: 06848c63 beq s1,s0,df4 <_ZN6Parser10parse_lineEPPcS0_+0x270>
- d80: 00044583 lbu a1,0(s0)
- d84: 00093503 ld a0,0(s2)
- d88: 73f040ef jal 5cc6 <strchr>
- d8c: f57d bnez a0,d7a <_ZN6Parser10parse_lineEPPcS0_+0x1f6>
- *ps = s;
- d8e: 0089b023 sd s0,0(s3)
- cmd = new ListCommand(cmd, parse_line(ps, es));
- d92: 4561 li a0,24
- d94: 244050ef jal 5fd8 <_Znwm>
- d98: 842a mv s0,a0
- d9a: 85a6 mv a1,s1
- d9c: 854e mv a0,s3
- d9e: de7ff0ef jal b84 <_ZN6Parser10parse_lineEPPcS0_>
- ListCommand(Command *l, Command *r) : left(l), right(r) {}
- da2: 00007797 auipc a5,0x7
- da6: 12678793 addi a5,a5,294 # 7ec8 <_ZTV11ListCommand+0x10>
- daa: e01c sd a5,0(s0)
- dac: 01443423 sd s4,8(s0)
- db0: e808 sd a0,16(s0)
- db2: bdb5 j c2e <_ZN6Parser10parse_lineEPPcS0_+0xaa>
- switch (*s)
- db4: 03e00713 li a4,62
- db8: 04e78063 beq a5,a4,df8 <_ZN6Parser10parse_lineEPPcS0_+0x274>
- dbc: 04f76c63 bltu a4,a5,e14 <_ZN6Parser10parse_lineEPPcS0_+0x290>
- dc0: fc57879b addiw a5,a5,-59
- dc4: 0ff7f793 zext.b a5,a5
- dc8: 4705 li a4,1
- dca: 02f77d63 bgeu a4,a5,e04 <_ZN6Parser10parse_lineEPPcS0_+0x280>
- while (s < es && !strchr(WHITESPACE, *s) && !strchr(SYMBOLS, *s))
- dce: fc9470e3 bgeu s0,s1,d8e <_ZN6Parser10parse_lineEPPcS0_+0x20a>
- dd2: 00044583 lbu a1,0(s0)
- dd6: 00093503 ld a0,0(s2)
- dda: 6ed040ef jal 5cc6 <strchr>
- dde: f559 bnez a0,d6c <_ZN6Parser10parse_lineEPPcS0_+0x1e8>
- de0: 00044583 lbu a1,0(s0)
- de4: 00893503 ld a0,8(s2)
- de8: 6df040ef jal 5cc6 <strchr>
- dec: f141 bnez a0,d6c <_ZN6Parser10parse_lineEPPcS0_+0x1e8>
- s++;
- dee: 0405 addi s0,s0,1
- while (s < es && !strchr(WHITESPACE, *s) && !strchr(SYMBOLS, *s))
- df0: fe8491e3 bne s1,s0,dd2 <_ZN6Parser10parse_lineEPPcS0_+0x24e>
- df4: 8426 mv s0,s1
- df6: bf61 j d8e <_ZN6Parser10parse_lineEPPcS0_+0x20a>
- if (*s == '>')
- df8: 00144703 lbu a4,1(s0)
- dfc: 03e00793 li a5,62
- e00: 02f70063 beq a4,a5,e20 <_ZN6Parser10parse_lineEPPcS0_+0x29c>
- s++;
- e04: 0405 addi s0,s0,1
- e06: b79d j d6c <_ZN6Parser10parse_lineEPPcS0_+0x1e8>
- switch (*s)
- e08: 02600713 li a4,38
- e0c: fce791e3 bne a5,a4,dce <_ZN6Parser10parse_lineEPPcS0_+0x24a>
- s++;
- e10: 0405 addi s0,s0,1
- e12: bfa9 j d6c <_ZN6Parser10parse_lineEPPcS0_+0x1e8>
- switch (*s)
- e14: 07c00713 li a4,124
- e18: fae79be3 bne a5,a4,dce <_ZN6Parser10parse_lineEPPcS0_+0x24a>
- s++;
- e1c: 0405 addi s0,s0,1
- e1e: b7b9 j d6c <_ZN6Parser10parse_lineEPPcS0_+0x1e8>
- s++;
- e20: 0409 addi s0,s0,2
- e22: b7a9 j d6c <_ZN6Parser10parse_lineEPPcS0_+0x1e8>
- switch (*s)
- e24: 03c00713 li a4,60
- e28: 02f76463 bltu a4,a5,e50 <_ZN6Parser10parse_lineEPPcS0_+0x2cc>
- e2c: 03a00713 li a4,58
- e30: fcf76ae3 bltu a4,a5,e04 <_ZN6Parser10parse_lineEPPcS0_+0x280>
- e34: dfa9 beqz a5,d8e <_ZN6Parser10parse_lineEPPcS0_+0x20a>
- e36: 02600713 li a4,38
- e3a: fce785e3 beq a5,a4,e04 <_ZN6Parser10parse_lineEPPcS0_+0x280>
- e3e: fd87879b addiw a5,a5,-40
- e42: 0ff7f793 zext.b a5,a5
- e46: 4705 li a4,1
- e48: f4f763e3 bltu a4,a5,d8e <_ZN6Parser10parse_lineEPPcS0_+0x20a>
- s++;
- e4c: 0405 addi s0,s0,1
- e4e: bf39 j d6c <_ZN6Parser10parse_lineEPPcS0_+0x1e8>
- switch (*s)
- e50: 03e00713 li a4,62
- e54: fae782e3 beq a5,a4,df8 <_ZN6Parser10parse_lineEPPcS0_+0x274>
- e58: 07c00713 li a4,124
- e5c: f2e799e3 bne a5,a4,d8e <_ZN6Parser10parse_lineEPPcS0_+0x20a>
- e60: b755 j e04 <_ZN6Parser10parse_lineEPPcS0_+0x280>
-
-0000000000000e62 <main>:
-
-int main()
-{
- e62: 7119 addi sp,sp,-128
- // close(fd);
- // break;
- // }
- // }
-
- printf(ANSI_GREEN"\n[Lume Shell] Welcome! \n"ANSI_RESET);
- e64: 00005517 auipc a0,0x5
- e68: 26c50513 addi a0,a0,620 # 60d0 <_GLOBAL__sub_I__ZSt3cin+0xe0>
-{
- e6c: fc86 sd ra,120(sp)
- e6e: f8a2 sd s0,112(sp)
- e70: f4a6 sd s1,104(sp)
- e72: f0ca sd s2,96(sp)
- e74: ecce sd s3,88(sp)
- e76: e8d2 sd s4,80(sp)
- e78: e4d6 sd s5,72(sp)
- e7a: e0da sd s6,64(sp)
- e7c: fc5e sd s7,56(sp)
- printf(ANSI_GREEN"\n[Lume Shell] Welcome! \n"ANSI_RESET);
- e7e: 27d030ef jal 48fa <printf>
- printf(ANSI_YELLOW "[Lume Shell] Start your journey of exploration!"ANSI_RESET);
- e82: 00005517 auipc a0,0x5
- e86: 27650513 addi a0,a0,630 # 60f8 <_GLOBAL__sub_I__ZSt3cin+0x108>
- e8a: 271030ef jal 48fa <printf>
- printf("\n");
- e8e: 00005517 auipc a0,0x5
- e92: 2aa50513 addi a0,a0,682 # 6138 <_GLOBAL__sub_I__ZSt3cin+0x148>
- e96: 265030ef jal 48fa <printf>
-
- while (getcmd(buf, sizeof(buf)) >= 0)
- e9a: 00008417 auipc s0,0x8
- e9e: e3640413 addi s0,s0,-458 # 8cd0 <_ZZ4mainE3buf>
- write(1, "$ ", 2);
- ea2: 00005497 auipc s1,0x5
- ea6: 22648493 addi s1,s1,550 # 60c8 <_GLOBAL__sub_I__ZSt3cin+0xd8>
- {
- int len = strlen(buf);
- if (len > 0 && buf[len - 1] == '\n')
- eaa: 4b29 li s6,10
- {
- printf("cannot cd %s\n", path);
- }
- continue;
- }
- if (strcmp(buf, "shutdown") == 0 || strcmp(buf, "poweroff") == 0)
- eac: 00005917 auipc s2,0x5
- eb0: 2bc90913 addi s2,s2,700 # 6168 <_GLOBAL__sub_I__ZSt3cin+0x178>
- eb4: 00005997 auipc s3,0x5
- eb8: 2ec98993 addi s3,s3,748 # 61a0 <_GLOBAL__sub_I__ZSt3cin+0x1b0>
- if (pid == -1)
- ebc: 5bfd li s7,-1
- {
- printf(ANSI_BLUE"System shutting down..."ANSI_RESET);
- ebe: 00005a97 auipc s5,0x5
- ec2: 2baa8a93 addi s5,s5,698 # 6178 <_GLOBAL__sub_I__ZSt3cin+0x188>
- printf("\n");
- ec6: 00005a17 auipc s4,0x5
- eca: 272a0a13 addi s4,s4,626 # 6138 <_GLOBAL__sub_I__ZSt3cin+0x148>
- write(1, "$ ", 2);
- ece: 4609 li a2,2
- ed0: 85a6 mv a1,s1
- ed2: 4505 li a0,1
- ed4: 21c000ef jal 10f0 <write>
- memset(buf, 0, nbuf);
- ed8: 06400613 li a2,100
- edc: 4581 li a1,0
- ede: 8522 mv a0,s0
- ee0: 3f9040ef jal 5ad8 <memset>
- int n = read(0, buf, nbuf - 1);
- ee4: 06300613 li a2,99
- ee8: 85a2 mv a1,s0
- eea: 4501 li a0,0
- eec: 1fc000ef jal 10e8 <read>
- if (n < 0)
- ef0: 1a054b63 bltz a0,10a6 <main+0x244>
- buf[n] = 0;
- ef4: 00a407b3 add a5,s0,a0
- ef8: 00078023 sb zero,0(a5)
- int len = strlen(buf);
- efc: 8522 mv a0,s0
- efe: 473040ef jal 5b70 <strlen>
- f02: 2501 sext.w a0,a0
- if (len > 0 && buf[len - 1] == '\n')
- f04: 00a05a63 blez a0,f18 <main+0xb6>
- f08: 357d addiw a0,a0,-1
- f0a: 9522 add a0,a0,s0
- f0c: 00054783 lbu a5,0(a0)
- f10: 01679463 bne a5,s6,f18 <main+0xb6>
- buf[len - 1] = 0;
- f14: 00050023 sb zero,0(a0)
- if (buf[0] == 'c' && buf[1] == 'd' && (buf[2] == ' ' || buf[2] == '\n' || buf[2] == 0))
- f18: 00044703 lbu a4,0(s0)
- f1c: 06300793 li a5,99
- f20: 00f71863 bne a4,a5,f30 <main+0xce>
- f24: 00144703 lbu a4,1(s0)
- f28: 06400793 li a5,100
- f2c: 02f70e63 beq a4,a5,f68 <main+0x106>
- if (strcmp(buf, "shutdown") == 0 || strcmp(buf, "poweroff") == 0)
- f30: 85ca mv a1,s2
- f32: 8522 mv a0,s0
- f34: 513040ef jal 5c46 <strcmp>
- f38: cd19 beqz a0,f56 <main+0xf4>
- f3a: 85ce mv a1,s3
- f3c: 8522 mv a0,s0
- f3e: 509040ef jal 5c46 <strcmp>
- f42: c911 beqz a0,f56 <main+0xf4>
- int pid = fork();
- f44: 18c000ef jal 10d0 <fork>
- if (pid == -1)
- f48: 0f750c63 beq a0,s7,1040 <main+0x1de>
- shutdown();
-
- continue;
- }
-
- if (fork_or_panic() == 0)
- f4c: c52d beqz a0,fb6 <main+0x154>
- cmd->run();
- delete cmd;
- }
- exit(0);
- }
- wait(0);
- f4e: 4501 li a0,0
- f50: 188000ef jal 10d8 <wait>
- f54: bfad j ece <main+0x6c>
- printf(ANSI_BLUE"System shutting down..."ANSI_RESET);
- f56: 8556 mv a0,s5
- f58: 1a3030ef jal 48fa <printf>
- printf("\n");
- f5c: 8552 mv a0,s4
- f5e: 19d030ef jal 48fa <printf>
- shutdown();
- f62: 226000ef jal 1188 <shutdown>
- continue;
- f66: b7a5 j ece <main+0x6c>
- if (buf[0] == 'c' && buf[1] == 'd' && (buf[2] == ' ' || buf[2] == '\n' || buf[2] == 0))
- f68: 00244703 lbu a4,2(s0)
- f6c: 02000793 li a5,32
- f70: fce7e0e3 bltu a5,a4,f30 <main+0xce>
- f74: 4785 li a5,1
- f76: 1782 slli a5,a5,0x20
- f78: 40178793 addi a5,a5,1025
- f7c: 00e7d7b3 srl a5,a5,a4
- f80: 8b85 andi a5,a5,1
- f82: d7dd beqz a5,f30 <main+0xce>
- if (buf[strlen(buf) - 1] == '\n')
- f84: 00008517 auipc a0,0x8
- f88: d4c50513 addi a0,a0,-692 # 8cd0 <_ZZ4mainE3buf>
- f8c: 3e5040ef jal 5b70 <strlen>
- f90: 9522 add a0,a0,s0
- f92: fff54703 lbu a4,-1(a0)
- f96: 47a9 li a5,10
- f98: 0ef70c63 beq a4,a5,1090 <main+0x22e>
- if (buf[2] == '\n' || buf[2] == 0)
- f9c: 00244783 lbu a5,2(s0)
- fa0: 4729 li a4,10
- fa2: 00e78363 beq a5,a4,fa8 <main+0x146>
- fa6: e3f1 bnez a5,106a <main+0x208>
- printf("cd: argument missing\n");
- fa8: 00005517 auipc a0,0x5
- fac: 19850513 addi a0,a0,408 # 6140 <_GLOBAL__sub_I__ZSt3cin+0x150>
- fb0: 14b030ef jal 48fa <printf>
- continue;
- fb4: bf29 j ece <main+0x6c>
- char *es = s + strlen(s);
- fb6: 00008517 auipc a0,0x8
- fba: d1a50513 addi a0,a0,-742 # 8cd0 <_ZZ4mainE3buf>
- fbe: f862 sd s8,48(sp)
- fc0: f466 sd s9,40(sp)
- fc2: ec6e sd s11,24(sp)
- fc4: e422 sd s0,8(sp)
- fc6: 3ab040ef jal 5b70 <strlen>
- fca: 00a40cb3 add s9,s0,a0
- Command *cmd = parse_line(&s, es);
- fce: 85e6 mv a1,s9
- fd0: 0028 addi a0,sp,8
- fd2: bb3ff0ef jal b84 <_ZN6Parser10parse_lineEPPcS0_>
- char *s = *ps;
- fd6: 6c22 ld s8,8(sp)
- Command *cmd = parse_line(&s, es);
- fd8: 8daa mv s11,a0
- while (s < es && strchr(WHITESPACE, *s))
- fda: 039c7363 bgeu s8,s9,1000 <main+0x19e>
- fde: f06a sd s10,32(sp)
- fe0: 00007d17 auipc s10,0x7
- fe4: f28d0d13 addi s10,s10,-216 # 7f08 <WHITESPACE>
- fe8: a021 j ff0 <main+0x18e>
- s++;
- fea: 0c05 addi s8,s8,1
- while (s < es && strchr(WHITESPACE, *s))
- fec: 018c8963 beq s9,s8,ffe <main+0x19c>
- ff0: 000c4583 lbu a1,0(s8)
- ff4: 000d3503 ld a0,0(s10)
- ff8: 4cf040ef jal 5cc6 <strchr>
- ffc: f57d bnez a0,fea <main+0x188>
- ffe: 7d02 ld s10,32(sp)
- *ps = s;
- 1000: e462 sd s8,8(sp)
- return *s && strchr(toks, *s);
- 1002: 000c4583 lbu a1,0(s8)
- 1006: e9b9 bnez a1,105c <main+0x1fa>
- if (s != es)
- 1008: 65a2 ld a1,8(sp)
- 100a: 00bc8863 beq s9,a1,101a <main+0x1b8>
- printf("leftovers: %s\n", s);
- 100e: 00005517 auipc a0,0x5
- 1012: 1a250513 addi a0,a0,418 # 61b0 <_GLOBAL__sub_I__ZSt3cin+0x1c0>
- 1016: 0e5030ef jal 48fa <printf>
- if (cmd)
- 101a: 000d8c63 beqz s11,1032 <main+0x1d0>
- cmd->run();
- 101e: 000db783 ld a5,0(s11)
- 1022: 856e mv a0,s11
- 1024: 6b9c ld a5,16(a5)
- 1026: 9782 jalr a5
- delete cmd;
- 1028: 000db783 ld a5,0(s11)
- 102c: 856e mv a0,s11
- 102e: 679c ld a5,8(a5)
- 1030: 9782 jalr a5
- exit(0);
- 1032: 4501 li a0,0
- 1034: 3da040ef jal 540e <exit>
- 1038: 7c42 ld s8,48(sp)
- 103a: 7ca2 ld s9,40(sp)
- 103c: 6de2 ld s11,24(sp)
- 103e: bf01 j f4e <main+0xec>
- printf("shell panic: %s\n", s);
- 1040: 00005597 auipc a1,0x5
- 1044: 00058593 mv a1,a1
- 1048: 00005517 auipc a0,0x5
- 104c: 00050513 mv a0,a0
- 1050: 0ab030ef jal 48fa <printf>
- exit(1);
- 1054: 4505 li a0,1
- 1056: 3b8040ef jal 540e <exit>
- return pid;
- 105a: bdd5 j f4e <main+0xec>
- return *s && strchr(toks, *s);
- 105c: 00005517 auipc a0,0x5
- 1060: ffc50513 addi a0,a0,-4 # 6058 <_GLOBAL__sub_I__ZSt3cin+0x68>
- 1064: 463040ef jal 5cc6 <strchr>
- 1068: b745 j 1008 <main+0x1a6>
- if (chdir(path) < 0)
- 106a: 00008517 auipc a0,0x8
- 106e: c6950513 addi a0,a0,-919 # 8cd3 <_ZZ4mainE3buf+0x3>
- 1072: 0ce000ef jal 1140 <chdir>
- 1076: e4055ce3 bgez a0,ece <main+0x6c>
- printf("cannot cd %s\n", path);
- 107a: 00008597 auipc a1,0x8
- 107e: c5958593 addi a1,a1,-935 # 8cd3 <_ZZ4mainE3buf+0x3>
- 1082: 00005517 auipc a0,0x5
- 1086: 0d650513 addi a0,a0,214 # 6158 <_GLOBAL__sub_I__ZSt3cin+0x168>
- 108a: 071030ef jal 48fa <printf>
- 108e: b581 j ece <main+0x6c>
- buf[strlen(buf) - 1] = 0;
- 1090: 00008517 auipc a0,0x8
- 1094: c4050513 addi a0,a0,-960 # 8cd0 <_ZZ4mainE3buf>
- 1098: 2d9040ef jal 5b70 <strlen>
- 109c: 00a407b3 add a5,s0,a0
- 10a0: fe078fa3 sb zero,-1(a5)
- 10a4: bde5 j f9c <main+0x13a>
- }
- return 0;
- 10a6: 70e6 ld ra,120(sp)
- 10a8: 7446 ld s0,112(sp)
- 10aa: 74a6 ld s1,104(sp)
- 10ac: 7906 ld s2,96(sp)
- 10ae: 69e6 ld s3,88(sp)
- 10b0: 6a46 ld s4,80(sp)
- 10b2: 6aa6 ld s5,72(sp)
- 10b4: 6b06 ld s6,64(sp)
- 10b6: 7be2 ld s7,56(sp)
- 10b8: 4501 li a0,0
- 10ba: 6109 addi sp,sp,128
- 10bc: 8082 ret
-
-00000000000010be <_start>:
-.global _start
-
-_start:
-
-
- call main
- 10be: da5ff0ef jal e62 <main>
-
- call exit
- 10c2: 34c040ef jal 540e <exit>
-
- 10c6: a001 j 10c6 <_start+0x8>
-
-00000000000010c8 <sys_exit>:
- name: \
- li a7, SYS_ ## sysname; \
- ecall; \
- ret
-
-SYSCALL_NAME(sys_exit, exit)
- 10c8: 488d li a7,3
- 10ca: 00000073 ecall
- 10ce: 8082 ret
-
-00000000000010d0 <fork>:
-
-SYSCALL(fork)
- 10d0: 4889 li a7,2
- 10d2: 00000073 ecall
- 10d6: 8082 ret
-
-00000000000010d8 <wait>:
-SYSCALL(wait)
- 10d8: 4891 li a7,4
- 10da: 00000073 ecall
- 10de: 8082 ret
-
-00000000000010e0 <pipe>:
-SYSCALL(pipe)
- 10e0: 4895 li a7,5
- 10e2: 00000073 ecall
- 10e6: 8082 ret
-
-00000000000010e8 <read>:
-SYSCALL(read)
- 10e8: 4899 li a7,6
- 10ea: 00000073 ecall
- 10ee: 8082 ret
-
-00000000000010f0 <write>:
-SYSCALL(write)
- 10f0: 48c5 li a7,17
- 10f2: 00000073 ecall
- 10f6: 8082 ret
-
-00000000000010f8 <close>:
-SYSCALL(close)
- 10f8: 48d9 li a7,22
- 10fa: 00000073 ecall
- 10fe: 8082 ret
-
-0000000000001100 <kill>:
-SYSCALL(kill)
- 1100: 489d li a7,7
- 1102: 00000073 ecall
- 1106: 8082 ret
-
-0000000000001108 <exec>:
-SYSCALL(exec)
- 1108: 48a1 li a7,8
- 110a: 00000073 ecall
- 110e: 8082 ret
-
-0000000000001110 <open>:
-SYSCALL(open)
- 1110: 48c1 li a7,16
- 1112: 00000073 ecall
- 1116: 8082 ret
-
-0000000000001118 <mknod>:
-SYSCALL(mknod)
- 1118: 48c9 li a7,18
- 111a: 00000073 ecall
- 111e: 8082 ret
-
-0000000000001120 <unlink>:
-SYSCALL(unlink)
- 1120: 48cd li a7,19
- 1122: 00000073 ecall
- 1126: 8082 ret
-
-0000000000001128 <fstat>:
-SYSCALL(fstat)
- 1128: 48a5 li a7,9
- 112a: 00000073 ecall
- 112e: 8082 ret
-
-0000000000001130 <link>:
-SYSCALL(link)
- 1130: 48d1 li a7,20
- 1132: 00000073 ecall
- 1136: 8082 ret
-
-0000000000001138 <mkdir>:
-SYSCALL(mkdir)
- 1138: 48d5 li a7,21
- 113a: 00000073 ecall
- 113e: 8082 ret
-
-0000000000001140 <chdir>:
-SYSCALL(chdir)
- 1140: 48a9 li a7,10
- 1142: 00000073 ecall
- 1146: 8082 ret
-
-0000000000001148 <dup>:
-SYSCALL(dup)
- 1148: 48ad li a7,11
- 114a: 00000073 ecall
- 114e: 8082 ret
-
-0000000000001150 <getpid>:
-SYSCALL(getpid)
- 1150: 48b1 li a7,12
- 1152: 00000073 ecall
- 1156: 8082 ret
-
-0000000000001158 <sbrk>:
-SYSCALL(sbrk)
- 1158: 48b5 li a7,13
- 115a: 00000073 ecall
- 115e: 8082 ret
-
-0000000000001160 <sleep>:
-SYSCALL(sleep)
- 1160: 48b9 li a7,14
- 1162: 00000073 ecall
- 1166: 8082 ret
-
-0000000000001168 <uptime>:
-SYSCALL(uptime)
- 1168: 48bd li a7,15
- 116a: 00000073 ecall
- 116e: 8082 ret
-
-0000000000001170 <putc>:
-SYSCALL(putc)
- 1170: 4885 li a7,1
- 1172: 00000073 ecall
- 1176: 8082 ret
-
-0000000000001178 <disk_test>:
-SYSCALL(disk_test)
- 1178: 48dd li a7,23
- 117a: 00000073 ecall
- 117e: 8082 ret
-
-0000000000001180 <lseek>:
-SYSCALL(lseek)
- 1180: 48e1 li a7,24
- 1182: 00000073 ecall
- 1186: 8082 ret
-
-0000000000001188 <shutdown>:
- 1188: 48e5 li a7,25
- 118a: 00000073 ecall
- 118e: 8082 ret
-
-0000000000001190 <stbsp__clamp_callback>:
- 1190: 45dc lw a5,12(a1)
- 1192: 4598 lw a4,8(a1)
- 1194: 9fb1 addw a5,a5,a2
- 1196: c5dc sw a5,12(a1)
- 1198: 0007069b sext.w a3,a4
- 119c: 00e65463 bge a2,a4,11a4 <stbsp__clamp_callback+0x14>
- 11a0: 0006069b sext.w a3,a2
- 11a4: c685 beqz a3,11cc <stbsp__clamp_callback+0x3c>
- 11a6: 619c ld a5,0(a1)
- 11a8: 00a78e63 beq a5,a0,11c4 <stbsp__clamp_callback+0x34>
- 11ac: 00d50633 add a2,a0,a3
- 11b0: 00054703 lbu a4,0(a0)
- 11b4: 0505 addi a0,a0,1
- 11b6: 0785 addi a5,a5,1
- 11b8: fee78fa3 sb a4,-1(a5)
- 11bc: fec56ae3 bltu a0,a2,11b0 <stbsp__clamp_callback+0x20>
- 11c0: 6188 ld a0,0(a1)
- 11c2: 4598 lw a4,8(a1)
- 11c4: 9f15 subw a4,a4,a3
- 11c6: 9536 add a0,a0,a3
- 11c8: e188 sd a0,0(a1)
- 11ca: c598 sw a4,8(a1)
- 11cc: 1ff00793 li a5,511
- 11d0: 00e7d463 bge a5,a4,11d8 <stbsp__clamp_callback+0x48>
- 11d4: 6188 ld a0,0(a1)
- 11d6: 8082 ret
- 11d8: 01058513 addi a0,a1,16
- 11dc: 8082 ret
-
-00000000000011de <stbsp__count_clamp_callback>:
- 11de: 45dc lw a5,12(a1)
- 11e0: 01058513 addi a0,a1,16
- 11e4: 9fb1 addw a5,a5,a2
- 11e6: c5dc sw a5,12(a1)
- 11e8: 8082 ret
-
-00000000000011ea <stbsp__real_to_str>:
- 11ea: e20508d3 fmv.x.d a7,fa0
- 11ee: 82aa mv t0,a0
- 11f0: 4348d813 srai a6,a7,0x34
- 11f4: 8ec6 mv t4,a7
- 11f6: 7ff87813 andi a6,a6,2047
- 11fa: 8346 mv t1,a7
- 11fc: 03f8d513 srli a0,a7,0x3f
- 1200: 0008d663 bgez a7,120c <stbsp__real_to_str+0x22>
- 1204: 22a517d3 fneg.d fa5,fa0
- 1208: e20788d3 fmv.x.d a7,fa5
- 120c: 7ff00e13 li t3,2047
- 1210: 35c80663 beq a6,t3,155c <stbsp__real_to_str+0x372>
- 1214: 1101 addi sp,sp,-32
- 1216: 14080363 beqz a6,135c <stbsp__real_to_str+0x172>
- 121a: c018081b addiw a6,a6,-1023
- 121e: ec22 sd s0,24(sp)
- 1220: 02081313 slli t1,a6,0x20
- 1224: 66034d63 bltz t1,189e <stbsp__real_to_str+0x6b4>
- 1228: 4d100313 li t1,1233
- 122c: 0303033b mulw t1,t1,a6
- 1230: 4849 li a6,18
- 1232: 40c3531b sraiw t1,t1,0xc
- 1236: 0013039b addiw t2,t1,1
- 123a: 4078083b subw a6,a6,t2
- 123e: 4359 li t1,22
- 1240: 17036163 bltu t1,a6,13a2 <stbsp__real_to_str+0x1b8>
- 1244: 00005317 auipc t1,0x5
- 1248: 2c430313 addi t1,t1,708 # 6508 <stbsp__bot>
- 124c: 080e slli a6,a6,0x3
- 124e: 981a add a6,a6,t1
- 1250: 00083e03 ld t3,0(a6)
- 1254: 00083607 fld fa2,0(a6)
- 1258: f20887d3 fmv.d.x fa5,a7
- 125c: f8000837 lui a6,0xf8000
- 1260: 01187333 and t1,a6,a7
- 1264: 01c87833 and a6,a6,t3
- 1268: 12f676d3 fmul.d fa3,fa2,fa5
- 126c: f20807d3 fmv.d.x fa5,a6
- 1270: f2030753 fmv.d.x fa4,t1
- 1274: f20305d3 fmv.d.x fa1,t1
- 1278: 0af67653 fsub.d fa2,fa2,fa5
- 127c: f20887d3 fmv.d.x fa5,a7
- 1280: 0ae7f753 fsub.d fa4,fa5,fa4
- 1284: f20807d3 fmv.d.x fa5,a6
- 1288: 6ab7f7c7 fmsub.d fa5,fa5,fa1,fa3
- 128c: 7ab677c3 fmadd.d fa5,fa2,fa1,fa5
- 1290: f20805d3 fmv.d.x fa1,a6
- 1294: 7ab777c3 fmadd.d fa5,fa4,fa1,fa5
- 1298: 7ac77743 fmadd.d fa4,fa4,fa2,fa5
- 129c: 02d777d3 fadd.d fa5,fa4,fa3
- 12a0: 3782e837 lui a6,0x3782e
- 12a4: acf80813 addi a6,a6,-1329 # 3782dacf <_ZSt4cerr+0x37824c5f>
- 12a8: 0832 slli a6,a6,0xc
- 12aa: 9d980813 addi a6,a6,-1575
- 12ae: 084a slli a6,a6,0x12
- 12b0: 187d addi a6,a6,-1
- 12b2: c22798d3 fcvt.l.d a7,fa5,rtz
- 12b6: 0ad7f6d3 fsub.d fa3,fa5,fa3
- 12ba: 00070e1b sext.w t3,a4
- 12be: d228f653 fcvt.d.l fa2,a7
- 12c2: 0ac7f5d3 fsub.d fa1,fa5,fa2
- 12c6: 0ad77753 fsub.d fa4,fa4,fa3
- 12ca: 0af5f6d3 fsub.d fa3,fa1,fa5
- 12ce: 0ad5f553 fsub.d fa0,fa1,fa3
- 12d2: 02d67653 fadd.d fa2,fa2,fa3
- 12d6: 0aa7f7d3 fsub.d fa5,fa5,fa0
- 12da: 0ac7f7d3 fsub.d fa5,fa5,fa2
- 12de: 02b7f7d3 fadd.d fa5,fa5,fa1
- 12e2: 02e7f7d3 fadd.d fa5,fa5,fa4
- 12e6: c2279fd3 fcvt.l.d t6,fa5,rtz
- 12ea: 9fc6 add t6,t6,a7
- 12ec: 19f87063 bgeu a6,t6,146c <stbsp__real_to_str+0x282>
- 12f0: 2385 addiw t2,t2,1
- 12f2: 300e4363 bltz t3,15f8 <stbsp__real_to_str+0x40e>
- 12f6: 00e3833b addw t1,t2,a4
- 12fa: 475d li a4,23
- 12fc: 30677663 bgeu a4,t1,1608 <stbsp__real_to_str+0x41e>
- 1300: 577d li a4,-1
- 1302: 9301 srli a4,a4,0x20
- 1304: 43f75863 bge a4,t6,1734 <stbsp__real_to_str+0x54a>
- 1308: 07d00313 li t1,125
- 130c: 877e mv a4,t6
- 130e: 4e01 li t3,0
- 1310: 3e800813 li a6,1000
- 1314: 130e slli t1,t1,0x23
- 1316: a039 j 1324 <stbsp__real_to_str+0x13a>
- 1318: 030747b3 div a5,a4,a6
- 131c: 4e05 li t3,1
- 131e: 40674c63 blt a4,t1,1736 <stbsp__real_to_str+0x54c>
- 1322: 873e mv a4,a5
- 1324: 030768b3 rem a7,a4,a6
- 1328: fe0888e3 beqz a7,1318 <stbsp__real_to_str+0x12e>
- 132c: 400e0163 beqz t3,172e <stbsp__real_to_str+0x544>
- 1330: 8fbe mv t6,a5
- 1332: 05f5e7b7 lui a5,0x5f5e
- 1336: 0ff78793 addi a5,a5,255 # 5f5e0ff <_ZSt4cerr+0x5f5528f>
- 133a: 04060413 addi s0,a2,64
- 133e: 03860613 addi a2,a2,56
- 1342: 15f7c863 blt a5,t6,1492 <stbsp__real_to_str+0x2a8>
- 1346: 000f871b sext.w a4,t6
- 134a: 20070463 beqz a4,1552 <stbsp__real_to_str+0x368>
- 134e: 4f01 li t5,0
- 1350: 4f81 li t6,0
- 1352: 00007e97 auipc t4,0x7
- 1356: bc6e8e93 addi t4,t4,-1082 # 7f18 <stbsp__digitpair>
- 135a: aaa9 j 14b4 <stbsp__real_to_str+0x2ca>
- 135c: 0306 slli t1,t1,0x1
- 135e: 3e030e63 beqz t1,175a <stbsp__real_to_str+0x570>
- 1362: 4305 li t1,1
- 1364: ec22 sd s0,24(sp)
- 1366: 00ce9e13 slli t3,t4,0xc
- 136a: 134e slli t1,t1,0x33
- 136c: 520e4063 bltz t3,188c <stbsp__real_to_str+0x6a2>
- 1370: 40135313 srai t1,t1,0x1
- 1374: 01d37e33 and t3,t1,t4
- 1378: 8f42 mv t5,a6
- 137a: 387d addiw a6,a6,-1
- 137c: fe0e0ae3 beqz t3,1370 <stbsp__real_to_str+0x186>
- 1380: 26900313 li t1,617
- 1384: c00f081b addiw a6,t5,-1024
- 1388: 0268083b mulw a6,a6,t1
- 138c: 41f8531b sraiw t1,a6,0x1f
- 1390: 0153531b srliw t1,t1,0x15
- 1394: 0103033b addw t1,t1,a6
- 1398: 40b3539b sraiw t2,t1,0xb
- 139c: 4849 li a6,18
- 139e: 4078083b subw a6,a6,t2
- 13a2: 41f8531b sraiw t1,a6,0x1f
- 13a6: 00684eb3 xor t4,a6,t1
- 13aa: 406e8f3b subw t5,t4,t1
- 13ae: 2c900313 li t1,713
- 13b2: 03e3033b mulw t1,t1,t5
- 13b6: 4e35 li t3,13
- 13b8: 8efa mv t4,t5
- 13ba: 40e35f9b sraiw t6,t1,0xe
- 13be: 837e mv t1,t6
- 13c0: 23fe4363 blt t3,t6,15e6 <stbsp__real_to_str+0x3fc>
- 13c4: 5e25 li t3,-23
- 13c6: 026e0e3b mulw t3,t3,t1
- 13ca: 01de0ebb addw t4,t3,t4
- 13ce: 22084f63 bltz a6,160c <stbsp__real_to_str+0x422>
- 13d2: f2000753 fmv.d.x fa4,zero
- 13d6: 00005e17 auipc t3,0x5
- 13da: 132e0e13 addi t3,t3,306 # 6508 <stbsp__bot>
- 13de: 380e9e63 bnez t4,177a <stbsp__real_to_str+0x590>
- 13e2: f20887d3 fmv.d.x fa5,a7
- 13e6: fff30f1b addiw t5,t1,-1
- 13ea: 0f0e slli t5,t5,0x3
- 13ec: 02f777d3 fadd.d fa5,fa4,fa5
- 13f0: 030e slli t1,t1,0x3
- 13f2: 9f72 add t5,t5,t3
- 13f4: 9e1a add t3,t3,t1
- 13f6: 2e0e3e03 ld t3,736(t3)
- 13fa: 2e8f3587 fld fa1,744(t5)
- 13fe: f8000837 lui a6,0xf8000
- 1402: e2078ed3 fmv.x.d t4,fa5
- 1406: 12b7f6d3 fmul.d fa3,fa5,fa1
- 140a: f2088653 fmv.d.x fa2,a7
- 140e: 01d87333 and t1,a6,t4
- 1412: 01c87833 and a6,a6,t3
- 1416: f20807d3 fmv.d.x fa5,a6
- 141a: f2030053 fmv.d.x ft0,t1
- 141e: 0af5f553 fsub.d fa0,fa1,fa5
- 1422: f20e87d3 fmv.d.x fa5,t4
- 1426: 0ac7f0d3 fsub.d ft1,fa5,fa2
- 142a: f20807d3 fmv.d.x fa5,a6
- 142e: f2030653 fmv.d.x fa2,t1
- 1432: 6ac7f647 fmsub.d fa2,fa5,fa2,fa3
- 1436: f20e87d3 fmv.d.x fa5,t4
- 143a: 0a177753 fsub.d fa4,fa4,ft1
- 143e: f20300d3 fmv.d.x ft1,t1
- 1442: 0a07f7d3 fsub.d fa5,fa5,ft0
- 1446: 350f3007 fld ft0,848(t5)
- 144a: 62157643 fmadd.d fa2,fa0,ft1,fa2
- 144e: 12b77753 fmul.d fa4,fa4,fa1
- 1452: f20805d3 fmv.d.x fa1,a6
- 1456: 62b7f643 fmadd.d fa2,fa5,fa1,fa2
- 145a: f20e85d3 fmv.d.x fa1,t4
- 145e: 7205f743 fmadd.d fa4,fa1,ft0,fa4
- 1462: 62a7f7c3 fmadd.d fa5,fa5,fa0,fa2
- 1466: 02e7f753 fadd.d fa4,fa5,fa4
- 146a: bd0d j 129c <stbsp__real_to_str+0xb2>
- 146c: 00e3833b addw t1,t2,a4
- 1470: 2a0e4663 bltz t3,171c <stbsp__real_to_str+0x532>
- 1474: 475d li a4,23
- 1476: 10677663 bgeu a4,t1,1582 <stbsp__real_to_str+0x398>
- 147a: e80f93e3 bnez t6,1300 <stbsp__real_to_str+0x116>
- 147e: 05f5e7b7 lui a5,0x5f5e
- 1482: 0ff78793 addi a5,a5,255 # 5f5e0ff <_ZSt4cerr+0x5f5528f>
- 1486: 04060413 addi s0,a2,64
- 148a: 03860613 addi a2,a2,56
- 148e: ebf7dce3 bge a5,t6,1346 <stbsp__real_to_str+0x15c>
- 1492: 4f01 li t5,0
- 1494: 00007e97 auipc t4,0x7
- 1498: a84e8e93 addi t4,t4,-1404 # 7f18 <stbsp__digitpair>
- 149c: 05f5e7b7 lui a5,0x5f5e
- 14a0: 10078793 addi a5,a5,256 # 5f5e100 <_ZSt4cerr+0x5f55290>
- 14a4: 02ffe833 rem a6,t6,a5
- 14a8: 02ffcfb3 div t6,t6,a5
- 14ac: 0008071b sext.w a4,a6
- 14b0: 0a080463 beqz a6,1558 <stbsp__real_to_str+0x36e>
- 14b4: 8822 mv a6,s0
- 14b6: 06400893 li a7,100
- 14ba: 06300e13 li t3,99
- 14be: 1879 addi a6,a6,-2 # fffffffff7fffffe <_ZSt4cerr+0xfffffffff7ff718e>
- 14c0: 0007031b sext.w t1,a4
- 14c4: 031777bb remuw a5,a4,a7
- 14c8: 2785 addiw a5,a5,1
- 14ca: 0017979b slliw a5,a5,0x1
- 14ce: 1782 slli a5,a5,0x20
- 14d0: 9381 srli a5,a5,0x20
- 14d2: 97f6 add a5,a5,t4
- 14d4: 0007d783 lhu a5,0(a5)
- 14d8: 0317573b divuw a4,a4,a7
- 14dc: 00f81023 sh a5,0(a6)
- 14e0: fc6e6fe3 bltu t3,t1,14be <stbsp__real_to_str+0x2d4>
- 14e4: 008f0f3b addw t5,t5,s0
- 14e8: 410f0f3b subw t5,t5,a6
- 14ec: 020f8f63 beqz t6,152a <stbsp__real_to_str+0x340>
- 14f0: 87c2 mv a5,a6
- 14f2: 03000713 li a4,48
- 14f6: 04c80c63 beq a6,a2,154e <stbsp__real_to_str+0x364>
- 14fa: 17fd addi a5,a5,-1
- 14fc: 00e78023 sb a4,0(a5)
- 1500: fec79de3 bne a5,a2,14fa <stbsp__real_to_str+0x310>
- 1504: 408807b3 sub a5,a6,s0
- 1508: 00ff07bb addw a5,t5,a5
- 150c: 1461 addi s0,s0,-8
- 150e: 00878f1b addiw t5,a5,8
- 1512: 05f5e7b7 lui a5,0x5f5e
- 1516: 0ff78793 addi a5,a5,255 # 5f5e0ff <_ZSt4cerr+0x5f5528f>
- 151a: ff840613 addi a2,s0,-8
- 151e: f7f7cfe3 blt a5,t6,149c <stbsp__real_to_str+0x2b2>
- 1522: 000f871b sext.w a4,t6
- 1526: 4f81 li t6,0
- 1528: b771 j 14b4 <stbsp__real_to_str+0x2ca>
- 152a: 020f0563 beqz t5,1554 <stbsp__real_to_str+0x36a>
- 152e: 00084703 lbu a4,0(a6)
- 1532: 03000793 li a5,48
- 1536: 22f70f63 beq a4,a5,1774 <stbsp__real_to_str+0x58a>
- 153a: 2f01 sext.w t5,t5
- 153c: 0076a023 sw t2,0(a3)
- 1540: 6462 ld s0,24(sp)
- 1542: 0102b023 sd a6,0(t0)
- 1546: 01e5a023 sw t5,0(a1)
- 154a: 6105 addi sp,sp,32
- 154c: 8082 ret
- 154e: 8442 mv s0,a6
- 1550: b7c9 j 1512 <stbsp__real_to_str+0x328>
- 1552: 8822 mv a6,s0
- 1554: 4f01 li t5,0
- 1556: b7dd j 153c <stbsp__real_to_str+0x352>
- 1558: 8822 mv a6,s0
- 155a: bf59 j 14f0 <stbsp__real_to_str+0x306>
- 155c: 0eb2 slli t4,t4,0xc
- 155e: 00005797 auipc a5,0x5
- 1562: c7a78793 addi a5,a5,-902 # 61d8 <_GLOBAL__sub_I__ZSt3cin+0x1e8>
- 1566: 000e8663 beqz t4,1572 <stbsp__real_to_str+0x388>
- 156a: 00005797 auipc a5,0x5
- 156e: c6678793 addi a5,a5,-922 # 61d0 <_GLOBAL__sub_I__ZSt3cin+0x1e0>
- 1572: 00f2b023 sd a5,0(t0)
- 1576: 679d lui a5,0x7
- 1578: c29c sw a5,0(a3)
- 157a: 4f0d li t5,3
- 157c: 01e5a023 sw t5,0(a1)
- 1580: 8082 ret
- 1582: 3b9ad737 lui a4,0x3b9ad
- 1586: 9ff70713 addi a4,a4,-1537 # 3b9ac9ff <_ZSt4cerr+0x3b9a3b8f>
- 158a: 07f76f63 bltu a4,t6,1608 <stbsp__real_to_str+0x41e>
- 158e: 4805 li a6,1
- 1590: 02081713 slli a4,a6,0x20
- 1594: 01d75893 srli a7,a4,0x1d
- 1598: 00005717 auipc a4,0x5
- 159c: 32870713 addi a4,a4,808 # 68c0 <stbsp__powten>
- 15a0: 9746 add a4,a4,a7
- 15a2: 4e51 li t3,20
- 15a4: a021 j 15ac <stbsp__real_to_str+0x3c2>
- 15a6: 2805 addiw a6,a6,1
- 15a8: edc809e3 beq a6,t3,147a <stbsp__real_to_str+0x290>
- 15ac: 00073883 ld a7,0(a4)
- 15b0: 0721 addi a4,a4,8
- 15b2: ff1ffae3 bgeu t6,a7,15a6 <stbsp__real_to_str+0x3bc>
- 15b6: ed0372e3 bgeu t1,a6,147a <stbsp__real_to_str+0x290>
- 15ba: 4068083b subw a6,a6,t1
- 15be: 475d li a4,23
- 15c0: eb076de3 bltu a4,a6,147a <stbsp__real_to_str+0x290>
- 15c4: 080e slli a6,a6,0x3
- 15c6: 00005717 auipc a4,0x5
- 15ca: f4270713 addi a4,a4,-190 # 6508 <stbsp__bot>
- 15ce: 9742 add a4,a4,a6
- 15d0: 3b873803 ld a6,952(a4)
- 15d4: 00185713 srli a4,a6,0x1
- 15d8: 977e add a4,a4,t6
- 15da: 01176363 bltu a4,a7,15e0 <stbsp__real_to_str+0x3f6>
- 15de: 2385 addiw t2,t2,1
- 15e0: 03075fb3 divu t6,a4,a6
- 15e4: bd59 j 147a <stbsp__real_to_str+0x290>
- 15e6: 4335 li t1,13
- 15e8: 5e25 li t3,-23
- 15ea: 026e0e3b mulw t3,t3,t1
- 15ee: 01de0ebb addw t4,t3,t4
- 15f2: de0850e3 bgez a6,13d2 <stbsp__real_to_str+0x1e8>
- 15f6: a819 j 160c <stbsp__real_to_str+0x422>
- 15f8: 02571313 slli t1,a4,0x25
- 15fc: 02535313 srli t1,t1,0x25
- 1600: 0305 addi t1,t1,1
- 1602: 475d li a4,23
- 1604: ce676ee3 bltu a4,t1,1300 <stbsp__real_to_str+0x116>
- 1608: 4829 li a6,10
- 160a: b759 j 1590 <stbsp__real_to_str+0x3a6>
- 160c: 260e8663 beqz t4,1878 <stbsp__real_to_str+0x68e>
- 1610: 00231e13 slli t3,t1,0x2
- 1614: 41c30e33 sub t3,t1,t3
- 1618: 0e0e slli t3,t3,0x3
- 161a: 9e1a add t3,t3,t1
- 161c: fffe881b addiw a6,t4,-1
- 1620: 9e7a add t3,t3,t5
- 1622: 00005e97 auipc t4,0x5
- 1626: ee6e8e93 addi t4,t4,-282 # 6508 <stbsp__bot>
- 162a: 0e0e slli t3,t3,0x3
- 162c: 080e slli a6,a6,0x3
- 162e: 9876 add a6,a6,t4
- 1630: 9ef2 add t4,t4,t3
- 1632: 0b883607 fld fa2,184(a6)
- 1636: f20887d3 fmv.d.x fa5,a7
- 163a: 0b0ebf03 ld t5,176(t4)
- 163e: f8000e37 lui t3,0xf8000
- 1642: 011e7eb3 and t4,t3,a7
- 1646: 12f676d3 fmul.d fa3,fa2,fa5
- 164a: 01ee7e33 and t3,t3,t5
- 164e: f20e07d3 fmv.d.x fa5,t3
- 1652: f20e0753 fmv.d.x fa4,t3
- 1656: f20e8553 fmv.d.x fa0,t4
- 165a: 0af67653 fsub.d fa2,fa2,fa5
- 165e: f20e87d3 fmv.d.x fa5,t4
- 1662: f20e85d3 fmv.d.x fa1,t4
- 1666: 6ae7f7c7 fmsub.d fa5,fa5,fa4,fa3
- 166a: f2088753 fmv.d.x fa4,a7
- 166e: 0ab775d3 fsub.d fa1,fa4,fa1
- 1672: 16883707 fld fa4,360(a6)
- 1676: 7aa677c3 fmadd.d fa5,fa2,fa0,fa5
- 167a: f20e0553 fmv.d.x fa0,t3
- 167e: 7aa5f7c3 fmadd.d fa5,fa1,fa0,fa5
- 1682: 7ac5f5c3 fmadd.d fa1,fa1,fa2,fa5
- 1686: f20887d3 fmv.d.x fa5,a7
- 168a: 5af77743 fmadd.d fa4,fa4,fa5,fa1
- 168e: c00f87e3 beqz t6,129c <stbsp__real_to_str+0xb2>
- 1692: 02d777d3 fadd.d fa5,fa4,fa3
- 1696: fff3089b addiw a7,t1,-1
- 169a: 00005817 auipc a6,0x5
- 169e: e6e80813 addi a6,a6,-402 # 6508 <stbsp__bot>
- 16a2: 030e slli t1,t1,0x3
- 16a4: 088e slli a7,a7,0x3
- 16a6: 98c2 add a7,a7,a6
- 16a8: 981a add a6,a6,t1
- 16aa: e2078e53 fmv.x.d t3,fa5
- 16ae: 21083e83 ld t4,528(a6)
- 16b2: f8000837 lui a6,0xf8000
- 16b6: 2188b507 fld fa0,536(a7)
- 16ba: 01c87333 and t1,a6,t3
- 16be: 01d87833 and a6,a6,t4
- 16c2: f2080653 fmv.d.x fa2,a6
- 16c6: 12f577d3 fmul.d fa5,fa0,fa5
- 16ca: 2808b587 fld fa1,640(a7)
- 16ce: 0ac57053 fsub.d ft0,fa0,fa2
- 16d2: f20e0653 fmv.d.x fa2,t3
- 16d6: 0ad67153 fsub.d ft2,fa2,fa3
- 16da: f20806d3 fmv.d.x fa3,a6
- 16de: f2030653 fmv.d.x fa2,t1
- 16e2: 7ac6f0c7 fmsub.d ft1,fa3,fa2,fa5
- 16e6: f20e06d3 fmv.d.x fa3,t3
- 16ea: 0ac6f653 fsub.d fa2,fa3,fa2
- 16ee: 22f786d3 fmv.d fa3,fa5
- 16f2: 0a2777d3 fsub.d fa5,fa4,ft2
- 16f6: f2030753 fmv.d.x fa4,t1
- 16fa: 0ae07743 fmadd.d fa4,ft0,fa4,ft1
- 16fe: 12a7f7d3 fmul.d fa5,fa5,fa0
- 1702: f2080553 fmv.d.x fa0,a6
- 1706: 72a67743 fmadd.d fa4,fa2,fa0,fa4
- 170a: f20e0553 fmv.d.x fa0,t3
- 170e: 7aa5f7c3 fmadd.d fa5,fa1,fa0,fa5
- 1712: 72067643 fmadd.d fa2,fa2,ft0,fa4
- 1716: 02f67753 fadd.d fa4,fa2,fa5
- 171a: b649 j 129c <stbsp__real_to_str+0xb2>
- 171c: 02571313 slli t1,a4,0x25
- 1720: 02535313 srli t1,t1,0x25
- 1724: 0305 addi t1,t1,1
- 1726: 475d li a4,23
- 1728: d46769e3 bltu a4,t1,147a <stbsp__real_to_str+0x290>
- 172c: bd99 j 1582 <stbsp__real_to_str+0x398>
- 172e: 87fe mv a5,t6
- 1730: 8fbe mv t6,a5
- 1732: b101 j 1332 <stbsp__real_to_str+0x148>
- 1734: 87fe mv a5,t6
- 1736: 3e800713 li a4,1000
- 173a: 02e7f73b remuw a4,a5,a4
- 173e: 2781 sext.w a5,a5
- 1740: eb01 bnez a4,1750 <stbsp__real_to_str+0x566>
- 1742: 3e800813 li a6,1000
- 1746: 0307d7bb divuw a5,a5,a6
- 174a: 0307f73b remuw a4,a5,a6
- 174e: df65 beqz a4,1746 <stbsp__real_to_str+0x55c>
- 1750: 02079f93 slli t6,a5,0x20
- 1754: 020fdf93 srli t6,t6,0x20
- 1758: b31d j 147e <stbsp__real_to_str+0x294>
- 175a: 4785 li a5,1
- 175c: c29c sw a5,0(a3)
- 175e: 00c2b023 sd a2,0(t0)
- 1762: 03000793 li a5,48
- 1766: 00f60023 sb a5,0(a2)
- 176a: 4f05 li t5,1
- 176c: 01e5a023 sw t5,0(a1)
- 1770: 6105 addi sp,sp,32
- 1772: 8082 ret
- 1774: 0805 addi a6,a6,1 # fffffffff8000001 <_ZSt4cerr+0xfffffffff7ff7191>
- 1776: 3f7d addiw t5,t5,-1
- 1778: b3d1 j 153c <stbsp__real_to_str+0x352>
- 177a: e826 sd s1,16(sp)
- 177c: e44a sd s2,8(sp)
- 177e: 4859 li a6,22
- 1780: 8976 mv s2,t4
- 1782: 11d84363 blt a6,t4,1888 <stbsp__real_to_str+0x69e>
- 1786: 0009049b sext.w s1,s2
- 178a: 00005e17 auipc t3,0x5
- 178e: d7ee0e13 addi t3,t3,-642 # 6508 <stbsp__bot>
- 1792: 00349813 slli a6,s1,0x3
- 1796: 9872 add a6,a6,t3
- 1798: 00083687 fld fa3,0(a6)
- 179c: 00083803 ld a6,0(a6)
- 17a0: f20887d3 fmv.d.x fa5,a7
- 17a4: f8000fb7 lui t6,0xf8000
- 17a8: 010ff833 and a6,t6,a6
- 17ac: 12f6f553 fmul.d fa0,fa3,fa5
- 17b0: f20807d3 fmv.d.x fa5,a6
- 17b4: 011ff433 and s0,t6,a7
- 17b8: f2040753 fmv.d.x fa4,s0
- 17bc: 0af6f6d3 fsub.d fa3,fa3,fa5
- 17c0: f20887d3 fmv.d.x fa5,a7
- 17c4: f2080653 fmv.d.x fa2,a6
- 17c8: 412e8ebb subw t4,t4,s2
- 17cc: 0ae7f753 fsub.d fa4,fa5,fa4
- 17d0: f20407d3 fmv.d.x fa5,s0
- 17d4: e20508d3 fmv.x.d a7,fa0
- 17d8: 52c7f7c7 fmsub.d fa5,fa5,fa2,fa0
- 17dc: f2040653 fmv.d.x fa2,s0
- 17e0: 7ac6f7c3 fmadd.d fa5,fa3,fa2,fa5
- 17e4: f2080653 fmv.d.x fa2,a6
- 17e8: 7ac777c3 fmadd.d fa5,fa4,fa2,fa5
- 17ec: 7ad77743 fmadd.d fa4,fa4,fa3,fa5
- 17f0: 080e8963 beqz t4,1882 <stbsp__real_to_str+0x698>
- 17f4: 02e577d3 fadd.d fa5,fa0,fa4
- 17f8: 0e8e slli t4,t4,0x3
- 17fa: 01de0833 add a6,t3,t4
- 17fe: 00083587 fld fa1,0(a6)
- 1802: 00231893 slli a7,t1,0x2
- 1806: 411308b3 sub a7,t1,a7
- 180a: 00389813 slli a6,a7,0x3
- 180e: e2078453 fmv.x.d s0,fa5
- 1812: 12f5f7d3 fmul.d fa5,fa1,fa5
- 1816: 981a add a6,a6,t1
- 1818: 987a add a6,a6,t5
- 181a: 40980833 sub a6,a6,s1
- 181e: 080e slli a6,a6,0x3
- 1820: 9872 add a6,a6,t3
- 1822: 00083e83 ld t4,0(a6)
- 1826: 008ff833 and a6,t6,s0
- 182a: e20788d3 fmv.x.d a7,fa5
- 182e: f20806d3 fmv.d.x fa3,a6
- 1832: f20407d3 fmv.d.x fa5,s0
- 1836: 01dfffb3 and t6,t6,t4
- 183a: f20880d3 fmv.d.x ft1,a7
- 183e: 0ad7f653 fsub.d fa2,fa5,fa3
- 1842: f20f87d3 fmv.d.x fa5,t6
- 1846: 64c2 ld s1,16(sp)
- 1848: 6922 ld s2,8(sp)
- 184a: 0af5f053 fsub.d ft0,fa1,fa5
- 184e: 0ad7f6c7 fmsub.d fa3,fa5,fa3,ft1
- 1852: f20407d3 fmv.d.x fa5,s0
- 1856: 0aa7f7d3 fsub.d fa5,fa5,fa0
- 185a: f2080553 fmv.d.x fa0,a6
- 185e: 6aa076c3 fmadd.d fa3,ft0,fa0,fa3
- 1862: 0af77753 fsub.d fa4,fa4,fa5
- 1866: f20f87d3 fmv.d.x fa5,t6
- 186a: 6af677c3 fmadd.d fa5,fa2,fa5,fa3
- 186e: 7a067643 fmadd.d fa2,fa2,ft0,fa5
- 1872: 62e5f743 fmadd.d fa4,fa1,fa4,fa2
- 1876: b6b5 j 13e2 <stbsp__real_to_str+0x1f8>
- 1878: f20886d3 fmv.d.x fa3,a7
- 187c: f2000753 fmv.d.x fa4,zero
- 1880: b539 j 168e <stbsp__real_to_str+0x4a4>
- 1882: 64c2 ld s1,16(sp)
- 1884: 6922 ld s2,8(sp)
- 1886: beb1 j 13e2 <stbsp__real_to_str+0x1f8>
- 1888: 4959 li s2,22
- 188a: bdf5 j 1786 <stbsp__real_to_str+0x59c>
- 188c: e826 sd s1,16(sp)
- 188e: e44a sd s2,8(sp)
- 1890: ecc00393 li t2,-308
- 1894: 4eed li t4,27
- 1896: 4335 li t1,13
- 1898: 14600f13 li t5,326
- 189c: b5cd j 177e <stbsp__real_to_str+0x594>
- 189e: 26900313 li t1,617
- 18a2: 0303083b mulw a6,t1,a6
- 18a6: 41f8531b sraiw t1,a6,0x1f
- 18aa: 0153531b srliw t1,t1,0x15
- 18ae: 0103033b addw t1,t1,a6
- 18b2: 40b3539b sraiw t2,t1,0xb
- 18b6: 4849 li a6,18
- 18b8: 4078083b subw a6,a6,t2
- 18bc: b249 j 123e <stbsp__real_to_str+0x54>
-
-00000000000018be <_in_char.part.0>:
-static int _in_char(_InContext *ctx)
- 18be: 87aa mv a5,a0
- if (ctx->fd == -1)
- 18c0: 4508 lw a0,8(a0)
- 18c2: 577d li a4,-1
- 18c4: 00e51d63 bne a0,a4,18de <_in_char.part.0+0x20>
- if (ctx->buf[ctx->pos] == '\0')
- 18c8: 6b94 ld a3,16(a5)
- 18ca: 6398 ld a4,0(a5)
- 18cc: 9736 add a4,a4,a3
- 18ce: 00074603 lbu a2,0(a4)
- 18d2: c60d beqz a2,18fc <_in_char.part.0+0x3e>
- return (unsigned char)ctx->buf[ctx->pos++];
- 18d4: 0685 addi a3,a3,1
- 18d6: eb94 sd a3,16(a5)
- 18d8: 00074503 lbu a0,0(a4)
- 18dc: 8082 ret
-static int _in_char(_InContext *ctx)
- 18de: 1101 addi sp,sp,-32
- if (read(ctx->fd, &c, 1) == 1)
- 18e0: 4605 li a2,1
- 18e2: 00f10593 addi a1,sp,15
-static int _in_char(_InContext *ctx)
- 18e6: ec06 sd ra,24(sp)
- if (read(ctx->fd, &c, 1) == 1)
- 18e8: 801ff0ef jal 10e8 <read>
- 18ec: 4785 li a5,1
- 18ee: 00f51963 bne a0,a5,1900 <_in_char.part.0+0x42>
- return (unsigned char)c;
- 18f2: 00f14503 lbu a0,15(sp)
-}
- 18f6: 60e2 ld ra,24(sp)
- 18f8: 6105 addi sp,sp,32
- 18fa: 8082 ret
- return -1;
- 18fc: 557d li a0,-1
-}
- 18fe: 8082 ret
- return -1;
- 1900: 557d li a0,-1
- 1902: bfd5 j 18f6 <_in_char.part.0+0x38>
-
-0000000000001904 <_skip_space>:
-{
- 1904: 7139 addi sp,sp,-64
- 1906: f822 sd s0,48(sp)
- 1908: f426 sd s1,40(sp)
- 190a: f04a sd s2,32(sp)
- 190c: ec4e sd s3,24(sp)
- 190e: e852 sd s4,16(sp)
- 1910: fc06 sd ra,56(sp)
- 1912: 842a mv s0,a0
- ctx->ungotten = -1;
- 1914: 54fd li s1,-1
- if (read(ctx->fd, &c, 1) == 1)
- 1916: 00f10a13 addi s4,sp,15
- return c == ' ' || c == '\t' || c == '\n' || c == '\v' || c == '\f' || c == '\r';
- 191a: 02000913 li s2,32
- 191e: 4991 li s3,4
- if (ctx->ungotten >= 0)
- 1920: 4c1c lw a5,24(s0)
- 1922: 0407d163 bgez a5,1964 <_skip_space+0x60>
- if (ctx->fd == -1)
- 1926: 4408 lw a0,8(s0)
- if (read(ctx->fd, &c, 1) == 1)
- 1928: 4605 li a2,1
- 192a: 85d2 mv a1,s4
- if (ctx->fd == -1)
- 192c: 02951e63 bne a0,s1,1968 <_skip_space+0x64>
- if (ctx->buf[ctx->pos] == '\0')
- 1930: 6818 ld a4,16(s0)
- 1932: 601c ld a5,0(s0)
- return (unsigned char)ctx->buf[ctx->pos++];
- 1934: 00170693 addi a3,a4,1
- if (ctx->buf[ctx->pos] == '\0')
- 1938: 97ba add a5,a5,a4
- 193a: 0007c703 lbu a4,0(a5) # 7000 <STDIN_FD+0x698>
- 193e: cb19 beqz a4,1954 <_skip_space+0x50>
- return (unsigned char)ctx->buf[ctx->pos++];
- 1940: e814 sd a3,16(s0)
- 1942: 0007c783 lbu a5,0(a5)
- return c == ' ' || c == '\t' || c == '\n' || c == '\v' || c == '\f' || c == '\r';
- 1946: ff77871b addiw a4,a5,-9
- 194a: fd278be3 beq a5,s2,1920 <_skip_space+0x1c>
- 194e: fce9f9e3 bgeu s3,a4,1920 <_skip_space+0x1c>
- ctx->ungotten = c;
- 1952: cc1c sw a5,24(s0)
-}
- 1954: 70e2 ld ra,56(sp)
- 1956: 7442 ld s0,48(sp)
- 1958: 74a2 ld s1,40(sp)
- 195a: 7902 ld s2,32(sp)
- 195c: 69e2 ld s3,24(sp)
- 195e: 6a42 ld s4,16(sp)
- 1960: 6121 addi sp,sp,64
- 1962: 8082 ret
- ctx->ungotten = -1;
- 1964: cc04 sw s1,24(s0)
- return c;
- 1966: b7c5 j 1946 <_skip_space+0x42>
- if (read(ctx->fd, &c, 1) == 1)
- 1968: f80ff0ef jal 10e8 <read>
- 196c: 4785 li a5,1
- 196e: fef513e3 bne a0,a5,1954 <_skip_space+0x50>
- return (unsigned char)c;
- 1972: 00f14783 lbu a5,15(sp)
- 1976: bfc1 j 1946 <_skip_space+0x42>
-
-0000000000001978 <_vscanf_core.constprop.0>:
-static int _vscanf_core(_InContext *ctx, const char *format, va_list ap)
- 1978: 7155 addi sp,sp,-208
- 197a: e586 sd ra,200(sp)
- 197c: e95a sd s6,144(sp)
- while (*p)
- 197e: 0005c783 lbu a5,0(a1)
-static int _vscanf_core(_InContext *ctx, const char *format, va_list ap)
- 1982: e432 sd a2,8(sp)
- while (*p)
- 1984: 68078b63 beqz a5,201a <_vscanf_core.constprop.0+0x6a2>
- 1988: e1a2 sd s0,192(sp)
- 198a: fd26 sd s1,184(sp)
- 198c: f152 sd s4,160(sp)
- 198e: ed56 sd s5,152(sp)
- 1990: f4ee sd s11,104(sp)
- 1992: 842e mv s0,a1
- 1994: 8daa mv s11,a0
- int assigned = 0;
- 1996: 4b01 li s6,0
- return c == ' ' || c == '\t' || c == '\n' || c == '\v' || c == '\f' || c == '\r';
- 1998: 02000493 li s1,32
- 199c: 4a91 li s5,4
- if (*p != '%')
- 199e: 02500a13 li s4,37
- return c == ' ' || c == '\t' || c == '\n' || c == '\v' || c == '\f' || c == '\r';
- 19a2: 04978763 beq a5,s1,19f0 <_vscanf_core.constprop.0+0x78>
- 19a6: ff77869b addiw a3,a5,-9
- 19aa: 0ff6f693 zext.b a3,a3
- 19ae: 04daf163 bgeu s5,a3,19f0 <_vscanf_core.constprop.0+0x78>
- if (*p != '%')
- 19b2: 07478d63 beq a5,s4,1a2c <_vscanf_core.constprop.0+0xb4>
- _skip_space(ctx);
- 19b6: 856e mv a0,s11
- 19b8: f4dff0ef jal 1904 <_skip_space>
- if (ctx->ungotten >= 0)
- 19bc: 018da503 lw a0,24(s11)
- 19c0: 04055a63 bgez a0,1a14 <_vscanf_core.constprop.0+0x9c>
- 19c4: 856e mv a0,s11
- 19c6: ef9ff0ef jal 18be <_in_char.part.0>
- if (c != *p)
- 19ca: 00044783 lbu a5,0(s0)
- 19ce: 04a78a63 beq a5,a0,1a22 <_vscanf_core.constprop.0+0xaa>
- if (c != -1)
- 19d2: 57fd li a5,-1
- 19d4: 00f50463 beq a0,a5,19dc <_vscanf_core.constprop.0+0x64>
- ctx->ungotten = c;
- 19d8: 00adac23 sw a0,24(s11)
- 19dc: 640e ld s0,192(sp)
- 19de: 74ea ld s1,184(sp)
- 19e0: 7a0a ld s4,160(sp)
- 19e2: 6aea ld s5,152(sp)
- 19e4: 7da6 ld s11,104(sp)
-}
- 19e6: 60ae ld ra,200(sp)
- 19e8: 855a mv a0,s6
- 19ea: 6b4a ld s6,144(sp)
- 19ec: 6169 addi sp,sp,208
- 19ee: 8082 ret
- _skip_space(ctx);
- 19f0: 856e mv a0,s11
- 19f2: f13ff0ef jal 1904 <_skip_space>
- while (isspace(*p))
- 19f6: 00044783 lbu a5,0(s0)
- return c == ' ' || c == '\t' || c == '\n' || c == '\v' || c == '\f' || c == '\r';
- 19fa: 4611 li a2,4
- 19fc: ff77869b addiw a3,a5,-9
- 1a00: 0ff6f693 zext.b a3,a3
- 1a04: 00978663 beq a5,s1,1a10 <_vscanf_core.constprop.0+0x98>
- 1a08: 00d67463 bgeu a2,a3,1a10 <_vscanf_core.constprop.0+0x98>
- while (*p)
- 1a0c: fbd9 bnez a5,19a2 <_vscanf_core.constprop.0+0x2a>
- 1a0e: b7f9 j 19dc <_vscanf_core.constprop.0+0x64>
- p++;
- 1a10: 0405 addi s0,s0,1
- 1a12: b7d5 j 19f6 <_vscanf_core.constprop.0+0x7e>
- ctx->ungotten = -1;
- 1a14: 57fd li a5,-1
- 1a16: 00fdac23 sw a5,24(s11)
- if (c != *p)
- 1a1a: 00044783 lbu a5,0(s0)
- 1a1e: faa79ae3 bne a5,a0,19d2 <_vscanf_core.constprop.0+0x5a>
- while (*p)
- 1a22: 00144783 lbu a5,1(s0)
- p++;
- 1a26: 0405 addi s0,s0,1
- while (*p)
- 1a28: ffad bnez a5,19a2 <_vscanf_core.constprop.0+0x2a>
- 1a2a: bf4d j 19dc <_vscanf_core.constprop.0+0x64>
- 1a2c: f94a sd s2,176(sp)
- 1a2e: f54e sd s3,168(sp)
- 1a30: e55e sd s7,136(sp)
- 1a32: e162 sd s8,128(sp)
- if (*p == '*')
- 1a34: 00144583 lbu a1,1(s0)
- 1a38: 02a00793 li a5,42
- 1a3c: 22f58d63 beq a1,a5,1c76 <_vscanf_core.constprop.0+0x2fe>
- p++;
- 1a40: 0405 addi s0,s0,1
- int suppress = 0;
- 1a42: 4981 li s3,0
- while (*p >= '0' && *p <= '9')
- 1a44: fd05861b addiw a2,a1,-48
- 1a48: 0ff67693 zext.b a3,a2
- 1a4c: 47a5 li a5,9
- 1a4e: 36d7e763 bltu a5,a3,1dbc <_vscanf_core.constprop.0+0x444>
- 1a52: 4781 li a5,0
- 1a54: 4825 li a6,9
- 1a56: a019 j 1a5c <_vscanf_core.constprop.0+0xe4>
- width = width * 10 + (*p - '0');
- 1a58: 0016979b slliw a5,a3,0x1
- while (*p >= '0' && *p <= '9')
- 1a5c: 00144583 lbu a1,1(s0)
- width = width * 10 + (*p - '0');
- 1a60: 00f6093b addw s2,a2,a5
- 1a64: 0029169b slliw a3,s2,0x2
- while (*p >= '0' && *p <= '9')
- 1a68: fd05861b addiw a2,a1,-48
- 1a6c: 0ff67513 zext.b a0,a2
- width = width * 10 + (*p - '0');
- 1a70: 012686bb addw a3,a3,s2
- p++;
- 1a74: 0405 addi s0,s0,1
- while (*p >= '0' && *p <= '9')
- 1a76: fea871e3 bgeu a6,a0,1a58 <_vscanf_core.constprop.0+0xe0>
- if (*p == 'l')
- 1a7a: 06c00693 li a3,108
- p++;
- 1a7e: 00140b93 addi s7,s0,1
- if (*p == 'l')
- 1a82: 1ed58f63 beq a1,a3,1c80 <_vscanf_core.constprop.0+0x308>
- else if (*p == 'h')
- 1a86: 06800693 li a3,104
- 1a8a: 2ad58863 beq a1,a3,1d3a <_vscanf_core.constprop.0+0x3c2>
- char spec = *p++;
- 1a8e: 00044c03 lbu s8,0(s0)
- 1a92: 8ba2 mv s7,s0
- int len_mod = 0;
- 1a94: ec02 sd zero,24(sp)
- char spec = *p++;
- 1a96: 06300693 li a3,99
- 1a9a: 001b8413 addi s0,s7,1
- if (!spec)
- 1a9e: 2adc0863 beq s8,a3,1d4e <_vscanf_core.constprop.0+0x3d6>
- 1aa2: 1f86fc63 bgeu a3,s8,1c9a <_vscanf_core.constprop.0+0x322>
- 1aa6: f9cc069b addiw a3,s8,-100
- 1aaa: 0ff6f693 zext.b a3,a3
- 1aae: 4651 li a2,20
- 1ab0: 0cd66e63 bltu a2,a3,1b8c <_vscanf_core.constprop.0+0x214>
- 1ab4: 00120637 lui a2,0x120
- 1ab8: 4585 li a1,1
- 1aba: 00d595b3 sll a1,a1,a3
- 1abe: 02160613 addi a2,a2,33 # 120021 <_ZSt4cerr+0x1171b1>
- 1ac2: 8e6d and a2,a2,a1
- 1ac4: ee69 bnez a2,1b9e <_vscanf_core.constprop.0+0x226>
- 1ac6: 89b9 andi a1,a1,14
- 1ac8: 1e059263 bnez a1,1cac <_vscanf_core.constprop.0+0x334>
- 1acc: 463d li a2,15
- 1ace: 0ac69f63 bne a3,a2,1b8c <_vscanf_core.constprop.0+0x214>
- _skip_space(ctx);
- 1ad2: 856e mv a0,s11
- 1ad4: e31ff0ef jal 1904 <_skip_space>
- char *buf = suppress ? NULL : va_arg(ap, char *);
- 1ad8: ec02 sd zero,24(sp)
- 1ada: 00099763 bnez s3,1ae8 <_vscanf_core.constprop.0+0x170>
- 1ade: 67a2 ld a5,8(sp)
- 1ae0: 6398 ld a4,0(a5)
- 1ae2: 07a1 addi a5,a5,8
- 1ae4: e43e sd a5,8(sp)
- 1ae6: ec3a sd a4,24(sp)
- if (ctx->ungotten >= 0)
- 1ae8: 018da503 lw a0,24(s11)
- 1aec: 2e055b63 bgez a0,1de2 <_vscanf_core.constprop.0+0x46a>
- 1af0: 856e mv a0,s11
- 1af2: dcdff0ef jal 18be <_in_char.part.0>
- while (c != -1 && !isspace(c))
- 1af6: 56fd li a3,-1
- 1af8: 6ad50363 beq a0,a3,219e <_vscanf_core.constprop.0+0x826>
- return c == ' ' || c == '\t' || c == '\n' || c == '\v' || c == '\f' || c == '\r';
- 1afc: 02000693 li a3,32
- 1b00: 3ed50963 beq a0,a3,1ef2 <_vscanf_core.constprop.0+0x57a>
- 1b04: 46a5 li a3,9
- 1b06: 3ed50663 beq a0,a3,1ef2 <_vscanf_core.constprop.0+0x57a>
- 1b0a: 46a9 li a3,10
- 1b0c: 3ed50363 beq a0,a3,1ef2 <_vscanf_core.constprop.0+0x57a>
- 1b10: 46ad li a3,11
- 1b12: 3ed50063 beq a0,a3,1ef2 <_vscanf_core.constprop.0+0x57a>
- 1b16: 46b1 li a3,12
- 1b18: 3cd50d63 beq a0,a3,1ef2 <_vscanf_core.constprop.0+0x57a>
- 1b1c: 46b5 li a3,13
- 1b1e: 3cd50a63 beq a0,a3,1ef2 <_vscanf_core.constprop.0+0x57a>
- 1b22: 67e2 ld a5,24(sp)
- 1b24: fce6 sd s9,120(sp)
- 1b26: f8ea sd s10,112(sp)
- 1b28: e83e sd a5,16(sp)
- 1b2a: 4d01 li s10,0
- while (c != -1 && !isspace(c))
- 1b2c: 5c7d li s8,-1
- return c == ' ' || c == '\t' || c == '\n' || c == '\v' || c == '\f' || c == '\r';
- 1b2e: 02000c93 li s9,32
- if (width > 0 && i >= width)
- 1b32: 01205463 blez s2,1b3a <_vscanf_core.constprop.0+0x1c2>
- 1b36: 052d5563 bge s10,s2,1b80 <_vscanf_core.constprop.0+0x208>
- if (!suppress)
- 1b3a: 00099563 bnez s3,1b44 <_vscanf_core.constprop.0+0x1cc>
- buf[i] = (char)c;
- 1b3e: 67c2 ld a5,16(sp)
- 1b40: 00a78023 sb a0,0(a5)
- if (ctx->ungotten >= 0)
- 1b44: 018da503 lw a0,24(s11)
- i++;
- 1b48: 2d05 addiw s10,s10,1
- if (ctx->ungotten >= 0)
- 1b4a: 30055963 bgez a0,1e5c <_vscanf_core.constprop.0+0x4e4>
- 1b4e: 856e mv a0,s11
- 1b50: d6fff0ef jal 18be <_in_char.part.0>
- while (c != -1 && !isspace(c))
- 1b54: 27850663 beq a0,s8,1dc0 <_vscanf_core.constprop.0+0x448>
- return c == ' ' || c == '\t' || c == '\n' || c == '\v' || c == '\f' || c == '\r';
- 1b58: 03950463 beq a0,s9,1b80 <_vscanf_core.constprop.0+0x208>
- 1b5c: 47a5 li a5,9
- 1b5e: 02f50163 beq a0,a5,1b80 <_vscanf_core.constprop.0+0x208>
- 1b62: 47a9 li a5,10
- 1b64: 00f50e63 beq a0,a5,1b80 <_vscanf_core.constprop.0+0x208>
- 1b68: 47ad li a5,11
- 1b6a: 00f50b63 beq a0,a5,1b80 <_vscanf_core.constprop.0+0x208>
- 1b6e: 47b1 li a5,12
- 1b70: 00f50863 beq a0,a5,1b80 <_vscanf_core.constprop.0+0x208>
- 1b74: 67c2 ld a5,16(sp)
- 1b76: 0785 addi a5,a5,1
- 1b78: e83e sd a5,16(sp)
- 1b7a: 47b5 li a5,13
- 1b7c: faf51be3 bne a0,a5,1b32 <_vscanf_core.constprop.0+0x1ba>
- if (!suppress)
- 1b80: 64098a63 beqz s3,21d4 <_vscanf_core.constprop.0+0x85c>
- 1b84: 7ce6 ld s9,120(sp)
- 1b86: 7d46 ld s10,112(sp)
- ctx->ungotten = c;
- 1b88: 00adac23 sw a0,24(s11)
- while (*p)
- 1b8c: 001bc783 lbu a5,1(s7)
- 1b90: 794a ld s2,176(sp)
- 1b92: 79aa ld s3,168(sp)
- 1b94: 6baa ld s7,136(sp)
- 1b96: 6c0a ld s8,128(sp)
- 1b98: e00795e3 bnez a5,19a2 <_vscanf_core.constprop.0+0x2a>
- 1b9c: b581 j 19dc <_vscanf_core.constprop.0+0x64>
- _skip_space(ctx);
- 1b9e: 856e mv a0,s11
- 1ba0: f8ea sd s10,112(sp)
- 1ba2: d63ff0ef jal 1904 <_skip_space>
- if (ctx->ungotten >= 0)
- 1ba6: 018da503 lw a0,24(s11)
- 1baa: 24055063 bgez a0,1dea <_vscanf_core.constprop.0+0x472>
- 1bae: 856e mv a0,s11
- 1bb0: d0fff0ef jal 18be <_in_char.part.0>
- if (c == '-' || c == '+')
- 1bb4: fd55069b addiw a3,a0,-43
- 1bb8: 9af5 andi a3,a3,-3
- 1bba: 2681 sext.w a3,a3
- int i = 0, c = _in_char(ctx);
- 1bbc: 4d01 li s10,0
- if (c == '-' || c == '+')
- 1bbe: 3e068863 beqz a3,1fae <_vscanf_core.constprop.0+0x636>
- int base = (spec == 'x') ? 16 : (spec == 'i' ? 0 : 10);
- 1bc2: 07800693 li a3,120
- 1bc6: 4641 li a2,16
- 1bc8: 00dc0863 beq s8,a3,1bd8 <_vscanf_core.constprop.0+0x260>
- 1bcc: 06900693 li a3,105
- 1bd0: 4629 li a2,10
- 1bd2: 00dc1363 bne s8,a3,1bd8 <_vscanf_core.constprop.0+0x260>
- 1bd6: 4601 li a2,0
- while (c != -1 && i < 63)
- 1bd8: 56fd li a3,-1
- 1bda: 5cd50863 beq a0,a3,21aa <_vscanf_core.constprop.0+0x832>
- 1bde: fce6 sd s9,120(sp)
- 1be0: 02010893 addi a7,sp,32
- 1be4: 01a88c33 add s8,a7,s10
- int hex = (base == 16 || base == 0) && ((c >= 'a' && c <= 'f') || (c >= 'A' && c <= 'F'));
- 1be8: 4cc1 li s9,16
- int digit = (c >= '0' && c <= '9');
- 1bea: fd05069b addiw a3,a0,-48
- 1bee: 0005031b sext.w t1,a0
- 1bf2: 00a6b593 sltiu a1,a3,10
- int hex = (base == 16 || base == 0) && ((c >= 'a' && c <= 'f') || (c >= 'A' && c <= 'F'));
- 1bf6: 27960a63 beq a2,s9,1e6a <_vscanf_core.constprop.0+0x4f2>
- 1bfa: 2a060d63 beqz a2,1eb4 <_vscanf_core.constprop.0+0x53c>
- int x = (c == 'x' || c == 'X');
- 1bfe: 07800793 li a5,120
- 1c02: 2ef50363 beq a0,a5,1ee8 <_vscanf_core.constprop.0+0x570>
- 1c06: fa850693 addi a3,a0,-88
- 1c0a: 0016b693 seqz a3,a3
- 1c0e: 4301 li t1,0
- if (width > 0 && i >= width)
- 1c10: 01205463 blez s2,1c18 <_vscanf_core.constprop.0+0x2a0>
- 1c14: 032d5a63 bge s10,s2,1c48 <_vscanf_core.constprop.0+0x2d0>
- if (digit || hex || x)
- 1c18: 0066e6b3 or a3,a3,t1
- 1c1c: 8ecd or a3,a3,a1
- 1c1e: c68d beqz a3,1c48 <_vscanf_core.constprop.0+0x2d0>
- num_buf[i++] = (char)c;
- 1c20: 00ac0023 sb a0,0(s8)
- if (ctx->ungotten >= 0)
- 1c24: 018da503 lw a0,24(s11)
- num_buf[i++] = (char)c;
- 1c28: 2d05 addiw s10,s10,1
- if (ctx->ungotten >= 0)
- 1c2a: 22055c63 bgez a0,1e62 <_vscanf_core.constprop.0+0x4ea>
- 1c2e: 856e mv a0,s11
- 1c30: e832 sd a2,16(sp)
- 1c32: c8dff0ef jal 18be <_in_char.part.0>
- while (c != -1 && i < 63)
- 1c36: 57fd li a5,-1
- 1c38: 6642 ld a2,16(sp)
- 1c3a: 3cf50263 beq a0,a5,1ffe <_vscanf_core.constprop.0+0x686>
- 1c3e: 03f00693 li a3,63
- 1c42: 0c05 addi s8,s8,1
- 1c44: fadd13e3 bne s10,a3,1bea <_vscanf_core.constprop.0+0x272>
- num_buf[i] = '\0';
- 1c48: 040d0793 addi a5,s10,64
- 1c4c: 1018 addi a4,sp,32
- 1c4e: 97ba add a5,a5,a4
- 1c50: fc078023 sb zero,-64(a5)
- ctx->ungotten = c;
- 1c54: 00adac23 sw a0,24(s11)
- 1c58: 7ce6 ld s9,120(sp)
- if (i == 0)
- 1c5a: 1e0d0663 beqz s10,1e46 <_vscanf_core.constprop.0+0x4ce>
- if (!suppress)
- 1c5e: 36098363 beqz s3,1fc4 <_vscanf_core.constprop.0+0x64c>
- while (*p)
- 1c62: 001bc783 lbu a5,1(s7)
- {
- 1c66: 794a ld s2,176(sp)
- 1c68: 79aa ld s3,168(sp)
- 1c6a: 6baa ld s7,136(sp)
- 1c6c: 6c0a ld s8,128(sp)
- 1c6e: 7d46 ld s10,112(sp)
- while (*p)
- 1c70: d20799e3 bnez a5,19a2 <_vscanf_core.constprop.0+0x2a>
- 1c74: b3a5 j 19dc <_vscanf_core.constprop.0+0x64>
- while (*p >= '0' && *p <= '9')
- 1c76: 00244583 lbu a1,2(s0)
- suppress = 1;
- 1c7a: 4985 li s3,1
- p++;
- 1c7c: 0409 addi s0,s0,2
- 1c7e: b3d9 j 1a44 <_vscanf_core.constprop.0+0xcc>
- if (*p == 'l')
- 1c80: 00144c03 lbu s8,1(s0)
- len_mod = 1;
- 1c84: 4785 li a5,1
- 1c86: ec3e sd a5,24(sp)
- if (*p == 'l')
- 1c88: e0bc17e3 bne s8,a1,1a96 <_vscanf_core.constprop.0+0x11e>
- len_mod = 2;
- 1c8c: 4789 li a5,2
- char spec = *p++;
- 1c8e: 00244c03 lbu s8,2(s0)
- p++;
- 1c92: 00240b93 addi s7,s0,2
- len_mod = 2;
- 1c96: ec3e sd a5,24(sp)
- 1c98: bbfd j 1a96 <_vscanf_core.constprop.0+0x11e>
- 1c9a: 100c0763 beqz s8,1da8 <_vscanf_core.constprop.0+0x430>
- 1c9e: fbbc079b addiw a5,s8,-69
- 1ca2: 0ff7f793 zext.b a5,a5
- 1ca6: 4689 li a3,2
- 1ca8: eef6e2e3 bltu a3,a5,1b8c <_vscanf_core.constprop.0+0x214>
- _skip_space(ctx);
- 1cac: 856e mv a0,s11
- 1cae: f8ea sd s10,112(sp)
- 1cb0: c55ff0ef jal 1904 <_skip_space>
- if (ctx->ungotten >= 0)
- 1cb4: 018da783 lw a5,24(s11)
- 1cb8: 1207dd63 bgez a5,1df2 <_vscanf_core.constprop.0+0x47a>
- 1cbc: 856e mv a0,s11
- 1cbe: c01ff0ef jal 18be <_in_char.part.0>
- if (c == '-' || c == '+')
- 1cc2: fd55069b addiw a3,a0,-43
- 1cc6: ffd6f613 andi a2,a3,-3
- 1cca: 2601 sext.w a2,a2
- 1ccc: 87aa mv a5,a0
- 1cce: 12060c63 beqz a2,1e06 <_vscanf_core.constprop.0+0x48e>
- while (c != -1 && i < 63)
- 1cd2: 567d li a2,-1
- 1cd4: 16c50963 beq a0,a2,1e46 <_vscanf_core.constprop.0+0x4ce>
- 1cd8: fce6 sd s9,120(sp)
- int i = 0, c = _in_char(ctx);
- 1cda: 4d01 li s10,0
- 1cdc: 80000937 lui s2,0x80000
- 1ce0: 197d addi s2,s2,-1 # ffffffff7fffffff <_ZSt4cerr+0xffffffff7fff718f>
- 1ce2: 0932 slli s2,s2,0xc
- 1ce4: 80194913 xori s2,s2,-2047
- 1ce8: 093e slli s2,s2,0xf
- 1cea: 02010813 addi a6,sp,32
- 1cee: 01a80cb3 add s9,a6,s10
- 1cf2: 03a00c13 li s8,58
- 1cf6: 1935 addi s2,s2,-19
- 1cf8: a831 j 1d14 <_vscanf_core.constprop.0+0x39c>
- 1cfa: bc5ff0ef jal 18be <_in_char.part.0>
- while (c != -1 && i < 63)
- 1cfe: 577d li a4,-1
- 1d00: 87aa mv a5,a0
- 1d02: 2ee50563 beq a0,a4,1fec <_vscanf_core.constprop.0+0x674>
- 1d06: 03f00713 li a4,63
- 1d0a: 0c85 addi s9,s9,1
- 1d0c: 1eed0e63 beq s10,a4,1f08 <_vscanf_core.constprop.0+0x590>
- 1d10: fd57869b addiw a3,a5,-43
- int c = ctx->ungotten;
- 1d14: 00d95633 srl a2,s2,a3
- 1d18: 856e mv a0,s11
- 1d1a: 8a05 andi a2,a2,1
- 1d1c: 1edc6663 bltu s8,a3,1f08 <_vscanf_core.constprop.0+0x590>
- 1d20: 1e060463 beqz a2,1f08 <_vscanf_core.constprop.0+0x590>
- num_buf[i++] = (char)c;
- 1d24: 00fc8023 sb a5,0(s9)
- if (ctx->ungotten >= 0)
- 1d28: 018da783 lw a5,24(s11)
- num_buf[i++] = (char)c;
- 1d2c: 2d05 addiw s10,s10,1
- if (ctx->ungotten >= 0)
- 1d2e: fc07c6e3 bltz a5,1cfa <_vscanf_core.constprop.0+0x382>
- ctx->ungotten = -1;
- 1d32: 577d li a4,-1
- 1d34: 00edac23 sw a4,24(s11)
- while (c != -1 && i < 63)
- 1d38: b7f9 j 1d06 <_vscanf_core.constprop.0+0x38e>
- if (*p == 'h')
- 1d3a: 00144c03 lbu s8,1(s0)
- int len_mod = 0;
- 1d3e: ec02 sd zero,24(sp)
- if (*p == 'h')
- 1d40: d4bc1be3 bne s8,a1,1a96 <_vscanf_core.constprop.0+0x11e>
- char spec = *p++;
- 1d44: 00244c03 lbu s8,2(s0)
- p++;
- 1d48: 00240b93 addi s7,s0,2
- 1d4c: b3a9 j 1a96 <_vscanf_core.constprop.0+0x11e>
- 1d4e: fce6 sd s9,120(sp)
- 1d50: f8ea sd s10,112(sp)
- int count = (width > 0) ? width : 1;
- 1d52: 00090c1b sext.w s8,s2
- 1d56: 0d205a63 blez s2,1e2a <_vscanf_core.constprop.0+0x4b2>
- char *buf = suppress ? NULL : va_arg(ap, char *);
- 1d5a: 4d01 li s10,0
- 1d5c: 06098d63 beqz s3,1dd6 <_vscanf_core.constprop.0+0x45e>
- for (int i = 0; i < count; i++)
- 1d60: 9c6a add s8,s8,s10
- if (c == -1)
- 1d62: 5cfd li s9,-1
- if (ctx->ungotten >= 0)
- 1d64: 018da783 lw a5,24(s11)
- ctx->ungotten = -1;
- 1d68: 856e mv a0,s11
- if (ctx->ungotten >= 0)
- 1d6a: 0207dc63 bgez a5,1da2 <_vscanf_core.constprop.0+0x42a>
- 1d6e: b51ff0ef jal 18be <_in_char.part.0>
- 1d72: 87aa mv a5,a0
- if (c == -1)
- 1d74: 0b950d63 beq a0,s9,1e2e <_vscanf_core.constprop.0+0x4b6>
- if (!suppress)
- 1d78: 00099463 bnez s3,1d80 <_vscanf_core.constprop.0+0x408>
- buf[i] = (char)c;
- 1d7c: 00fd0023 sb a5,0(s10)
- for (int i = 0; i < count; i++)
- 1d80: 0d05 addi s10,s10,1
- 1d82: ffac11e3 bne s8,s10,1d64 <_vscanf_core.constprop.0+0x3ec>
- while (*p)
- 1d86: 001bc783 lbu a5,1(s7)
- if (!suppress)
- 1d8a: 00099363 bnez s3,1d90 <_vscanf_core.constprop.0+0x418>
- assigned++;
- 1d8e: 2b05 addiw s6,s6,1
- 1d90: 794a ld s2,176(sp)
- 1d92: 79aa ld s3,168(sp)
- 1d94: 6baa ld s7,136(sp)
- 1d96: 6c0a ld s8,128(sp)
- 1d98: 7ce6 ld s9,120(sp)
- 1d9a: 7d46 ld s10,112(sp)
- while (*p)
- 1d9c: c00793e3 bnez a5,19a2 <_vscanf_core.constprop.0+0x2a>
- 1da0: b935 j 19dc <_vscanf_core.constprop.0+0x64>
- ctx->ungotten = -1;
- 1da2: 019dac23 sw s9,24(s11)
- if (c == -1)
- 1da6: bfc9 j 1d78 <_vscanf_core.constprop.0+0x400>
- 1da8: 640e ld s0,192(sp)
- 1daa: 74ea ld s1,184(sp)
- 1dac: 794a ld s2,176(sp)
- 1dae: 79aa ld s3,168(sp)
- 1db0: 7a0a ld s4,160(sp)
- 1db2: 6aea ld s5,152(sp)
- 1db4: 6baa ld s7,136(sp)
- 1db6: 6c0a ld s8,128(sp)
- 1db8: 7da6 ld s11,104(sp)
- 1dba: b135 j 19e6 <_vscanf_core.constprop.0+0x6e>
- int width = -1;
- 1dbc: 597d li s2,-1
- 1dbe: b975 j 1a7a <_vscanf_core.constprop.0+0x102>
- if (!suppress)
- 1dc0: 3c099c63 bnez s3,2198 <_vscanf_core.constprop.0+0x820>
- buf[i] = '\0';
- 1dc4: 67e2 ld a5,24(sp)
- 1dc6: 01a786b3 add a3,a5,s10
- 1dca: 00068023 sb zero,0(a3)
- while (*p)
- 1dce: 001bc783 lbu a5,1(s7)
- assigned++;
- 1dd2: 2b05 addiw s6,s6,1
- 1dd4: bf75 j 1d90 <_vscanf_core.constprop.0+0x418>
- char *buf = suppress ? NULL : va_arg(ap, char *);
- 1dd6: 67a2 ld a5,8(sp)
- 1dd8: 0007bd03 ld s10,0(a5)
- 1ddc: 07a1 addi a5,a5,8
- 1dde: e43e sd a5,8(sp)
- 1de0: b741 j 1d60 <_vscanf_core.constprop.0+0x3e8>
- ctx->ungotten = -1;
- 1de2: 56fd li a3,-1
- 1de4: 00ddac23 sw a3,24(s11)
- while (c != -1 && !isspace(c))
- 1de8: bb11 j 1afc <_vscanf_core.constprop.0+0x184>
- ctx->ungotten = -1;
- 1dea: 56fd li a3,-1
- 1dec: 00ddac23 sw a3,24(s11)
- return c;
- 1df0: b3d1 j 1bb4 <_vscanf_core.constprop.0+0x23c>
- if (c == '-' || c == '+')
- 1df2: fd57869b addiw a3,a5,-43
- 1df6: ffd6f613 andi a2,a3,-3
- ctx->ungotten = -1;
- 1dfa: 55fd li a1,-1
- 1dfc: 00bdac23 sw a1,24(s11)
- if (c == '-' || c == '+')
- 1e00: 2601 sext.w a2,a2
- 1e02: ec061be3 bnez a2,1cd8 <_vscanf_core.constprop.0+0x360>
- num_buf[i++] = (char)c;
- 1e06: 02f10023 sb a5,32(sp)
- if (ctx->ungotten >= 0)
- 1e0a: 018da783 lw a5,24(s11)
- 1e0e: 2207da63 bgez a5,2042 <_vscanf_core.constprop.0+0x6ca>
- 1e12: 856e mv a0,s11
- 1e14: aabff0ef jal 18be <_in_char.part.0>
- while (c != -1 && i < 63)
- 1e18: 567d li a2,-1
- 1e1a: 87aa mv a5,a0
- num_buf[i++] = (char)c;
- 1e1c: 4d05 li s10,1
- 1e1e: fd55069b addiw a3,a0,-43
- while (c != -1 && i < 63)
- 1e22: 3ac50163 beq a0,a2,21c4 <_vscanf_core.constprop.0+0x84c>
- 1e26: fce6 sd s9,120(sp)
- 1e28: bd55 j 1cdc <_vscanf_core.constprop.0+0x364>
- int count = (width > 0) ? width : 1;
- 1e2a: 4c05 li s8,1
- 1e2c: b73d j 1d5a <_vscanf_core.constprop.0+0x3e2>
- 1e2e: 640e ld s0,192(sp)
- 1e30: 74ea ld s1,184(sp)
- 1e32: 794a ld s2,176(sp)
- 1e34: 79aa ld s3,168(sp)
- 1e36: 7a0a ld s4,160(sp)
- 1e38: 6aea ld s5,152(sp)
- 1e3a: 6baa ld s7,136(sp)
- 1e3c: 6c0a ld s8,128(sp)
- 1e3e: 7ce6 ld s9,120(sp)
- 1e40: 7d46 ld s10,112(sp)
- 1e42: 7da6 ld s11,104(sp)
- 1e44: b64d j 19e6 <_vscanf_core.constprop.0+0x6e>
- 1e46: 640e ld s0,192(sp)
- 1e48: 74ea ld s1,184(sp)
- 1e4a: 794a ld s2,176(sp)
- 1e4c: 79aa ld s3,168(sp)
- 1e4e: 7a0a ld s4,160(sp)
- 1e50: 6aea ld s5,152(sp)
- 1e52: 6baa ld s7,136(sp)
- 1e54: 6c0a ld s8,128(sp)
- 1e56: 7d46 ld s10,112(sp)
- 1e58: 7da6 ld s11,104(sp)
- 1e5a: b671 j 19e6 <_vscanf_core.constprop.0+0x6e>
- ctx->ungotten = -1;
- 1e5c: 018dac23 sw s8,24(s11)
- while (c != -1 && !isspace(c))
- 1e60: b9e5 j 1b58 <_vscanf_core.constprop.0+0x1e0>
- ctx->ungotten = -1;
- 1e62: 57fd li a5,-1
- 1e64: 00fdac23 sw a5,24(s11)
- while (c != -1 && i < 63)
- 1e68: bbd9 j 1c3e <_vscanf_core.constprop.0+0x2c6>
- int hex = (base == 16 || base == 0) && ((c >= 'a' && c <= 'f') || (c >= 'A' && c <= 'F'));
- 1e6a: f9f3069b addiw a3,t1,-97
- 1e6e: 4795 li a5,5
- 1e70: 06d7f263 bgeu a5,a3,1ed4 <_vscanf_core.constprop.0+0x55c>
- 1e74: fbf3031b addiw t1,t1,-65
- 1e78: 4795 li a5,5
- 1e7a: 0467fd63 bgeu a5,t1,1ed4 <_vscanf_core.constprop.0+0x55c>
- int x = (c == 'x' || c == 'X');
- 1e7e: 07800693 li a3,120
- 1e82: 18d50763 beq a0,a3,2010 <_vscanf_core.constprop.0+0x698>
- 1e86: fa850693 addi a3,a0,-88
- 1e8a: 0016b693 seqz a3,a3
- if (base == 0 && i == 1 && num_buf[0] == '0' && x)
- 1e8e: 4301 li t1,0
- 1e90: 32061663 bnez a2,21bc <_vscanf_core.constprop.0+0x844>
- 1e94: 4785 li a5,1
- 1e96: 4601 li a2,0
- 1e98: d6fd1ce3 bne s10,a5,1c10 <_vscanf_core.constprop.0+0x298>
- 1e9c: 02014e03 lbu t3,32(sp)
- 1ea0: 03000793 li a5,48
- 1ea4: d6fe16e3 bne t3,a5,1c10 <_vscanf_core.constprop.0+0x298>
- 1ea8: d60684e3 beqz a3,1c10 <_vscanf_core.constprop.0+0x298>
- base = 16;
- 1eac: 4641 li a2,16
- if (width > 0 && i >= width)
- 1eae: d7a919e3 bne s2,s10,1c20 <_vscanf_core.constprop.0+0x2a8>
- 1eb2: bb59 j 1c48 <_vscanf_core.constprop.0+0x2d0>
- int hex = (base == 16 || base == 0) && ((c >= 'a' && c <= 'f') || (c >= 'A' && c <= 'F'));
- 1eb4: f9f3069b addiw a3,t1,-97
- 1eb8: 4795 li a5,5
- 1eba: 02d7f263 bgeu a5,a3,1ede <_vscanf_core.constprop.0+0x566>
- 1ebe: fbf3031b addiw t1,t1,-65
- 1ec2: 0467f063 bgeu a5,t1,1f02 <_vscanf_core.constprop.0+0x58a>
- int x = (c == 'x' || c == 'X');
- 1ec6: 07800693 li a3,120
- 1eca: fad51ee3 bne a0,a3,1e86 <_vscanf_core.constprop.0+0x50e>
- 1ece: 4301 li t1,0
- 1ed0: 4685 li a3,1
- 1ed2: b7c9 j 1e94 <_vscanf_core.constprop.0+0x51c>
- int hex = (base == 16 || base == 0) && ((c >= 'a' && c <= 'f') || (c >= 'A' && c <= 'F'));
- 1ed4: 4305 li t1,1
- int x = (c == 'x' || c == 'X');
- 1ed6: 4681 li a3,0
- if (width > 0 && i >= width)
- 1ed8: d3204ee3 bgtz s2,1c14 <_vscanf_core.constprop.0+0x29c>
- 1edc: bb35 j 1c18 <_vscanf_core.constprop.0+0x2a0>
- int x = (c == 'x' || c == 'X');
- 1ede: 4681 li a3,0
- int hex = (base == 16 || base == 0) && ((c >= 'a' && c <= 'f') || (c >= 'A' && c <= 'F'));
- 1ee0: 4305 li t1,1
- if (width > 0 && i >= width)
- 1ee2: d32049e3 bgtz s2,1c14 <_vscanf_core.constprop.0+0x29c>
- 1ee6: bb0d j 1c18 <_vscanf_core.constprop.0+0x2a0>
- 1ee8: 4301 li t1,0
- int x = (c == 'x' || c == 'X');
- 1eea: 4685 li a3,1
- if (width > 0 && i >= width)
- 1eec: d32044e3 bgtz s2,1c14 <_vscanf_core.constprop.0+0x29c>
- 1ef0: bb05 j 1c20 <_vscanf_core.constprop.0+0x2a8>
- if (!suppress)
- 1ef2: c8099be3 bnez s3,1b88 <_vscanf_core.constprop.0+0x210>
- buf[i] = '\0';
- 1ef6: 67e2 ld a5,24(sp)
- 1ef8: 00078023 sb zero,0(a5)
- ctx->ungotten = c;
- 1efc: 00adac23 sw a0,24(s11)
- if (i > 0 && !suppress)
- 1f00: b171 j 1b8c <_vscanf_core.constprop.0+0x214>
- int x = (c == 'x' || c == 'X');
- 1f02: 4681 li a3,0
- int hex = (base == 16 || base == 0) && ((c >= 'a' && c <= 'f') || (c >= 'A' && c <= 'F'));
- 1f04: 4305 li t1,1
- 1f06: b779 j 1e94 <_vscanf_core.constprop.0+0x51c>
- num_buf[i] = '\0';
- 1f08: 040d0713 addi a4,s10,64
- 1f0c: 1014 addi a3,sp,32
- 1f0e: 96ba add a3,a3,a4
- 1f10: fc068023 sb zero,-64(a3)
- ctx->ungotten = c;
- 1f14: 00fdac23 sw a5,24(s11)
- if (i == 0)
- 1f18: f00d0be3 beqz s10,1e2e <_vscanf_core.constprop.0+0x4b6>
- 1f1c: 7ce6 ld s9,120(sp)
- if (!suppress)
- 1f1e: d40992e3 bnez s3,1c62 <_vscanf_core.constprop.0+0x2ea>
- if (*str == '-')
- 1f22: 02014603 lbu a2,32(sp)
- 1f26: 02d00793 li a5,45
- 1f2a: 1af60963 beq a2,a5,20dc <_vscanf_core.constprop.0+0x764>
- else if (*str == '+')
- 1f2e: 02b00793 li a5,43
- 1f32: 20f60a63 beq a2,a5,2146 <_vscanf_core.constprop.0+0x7ce>
- 1f36: 00005797 auipc a5,0x5
- 1f3a: a427b587 fld fa1,-1470(a5) # 6978 <STDIN_FD+0x10>
- 1f3e: 101c addi a5,sp,32
- while (*str >= '0' && *str <= '9')
- 1f40: fd06069b addiw a3,a2,-48
- 1f44: 0ff6f513 zext.b a0,a3
- 1f48: 45a5 li a1,9
- 1f4a: f20007d3 fmv.d.x fa5,zero
- 1f4e: 02a5e463 bltu a1,a0,1f76 <_vscanf_core.constprop.0+0x5fe>
- 1f52: 00005717 auipc a4,0x5
- 1f56: a2e73707 fld fa4,-1490(a4) # 6980 <STDIN_FD+0x18>
- 1f5a: 4525 li a0,9
- 1f5c: 0017c603 lbu a2,1(a5)
- val = val * 10.0 + (*str - '0');
- 1f60: d20686d3 fcvt.d.w fa3,a3
- str++;
- 1f64: 0785 addi a5,a5,1
- while (*str >= '0' && *str <= '9')
- 1f66: fd06069b addiw a3,a2,-48
- 1f6a: 0ff6f593 zext.b a1,a3
- val = val * 10.0 + (*str - '0');
- 1f6e: 6ae7f7c3 fmadd.d fa5,fa5,fa4,fa3
- while (*str >= '0' && *str <= '9')
- 1f72: feb575e3 bgeu a0,a1,1f5c <_vscanf_core.constprop.0+0x5e4>
- if (*str == '.')
- 1f76: 02e00693 li a3,46
- 1f7a: 16d60a63 beq a2,a3,20ee <_vscanf_core.constprop.0+0x776>
- if (*str == 'e' || *str == 'E')
- 1f7e: 0007c683 lbu a3,0(a5)
- 1f82: 0df6f693 andi a3,a3,223
- 1f86: 04500613 li a2,69
- 1f8a: 0cc68463 beq a3,a2,2052 <_vscanf_core.constprop.0+0x6da>
- *va_arg(ap, double *) = val;
- 1f8e: 6722 ld a4,8(sp)
- if (len_mod == 1)
- 1f90: 4685 li a3,1
- return sign * val;
- 1f92: 12b7f7d3 fmul.d fa5,fa5,fa1
- *va_arg(ap, double *) = val;
- 1f96: 631c ld a5,0(a4)
- *va_arg(ap, int64 *) = val;
- 1f98: 0721 addi a4,a4,8
- 1f9a: e43a sd a4,8(sp)
- if (len_mod == 1)
- 1f9c: 6762 ld a4,24(sp)
- 1f9e: 18d70b63 beq a4,a3,2134 <_vscanf_core.constprop.0+0x7bc>
- *va_arg(ap, float *) = (float)val;
- 1fa2: 4017f7d3 fcvt.s.d fa5,fa5
- assigned++;
- 1fa6: 2b05 addiw s6,s6,1
- *va_arg(ap, float *) = (float)val;
- 1fa8: 00f7a027 fsw fa5,0(a5)
- 1fac: b95d j 1c62 <_vscanf_core.constprop.0+0x2ea>
- num_buf[i++] = (char)c;
- 1fae: 02a10023 sb a0,32(sp)
- if (ctx->ungotten >= 0)
- 1fb2: 018da503 lw a0,24(s11)
- 1fb6: 06055463 bgez a0,201e <_vscanf_core.constprop.0+0x6a6>
- 1fba: 856e mv a0,s11
- 1fbc: 903ff0ef jal 18be <_in_char.part.0>
- num_buf[i++] = (char)c;
- 1fc0: 4d05 li s10,1
- 1fc2: b101 j 1bc2 <_vscanf_core.constprop.0+0x24a>
- int64 val = strtoll(num_buf, NULL, base);
- 1fc4: 4581 li a1,0
- 1fc6: 1008 addi a0,sp,32
- 1fc8: 696030ef jal 565e <strtoll>
- *va_arg(ap, int64 *) = val;
- 1fcc: 67a2 ld a5,8(sp)
- if (len_mod == 2)
- 1fce: 6762 ld a4,24(sp)
- 1fd0: 4689 li a3,2
- *va_arg(ap, int64 *) = val;
- 1fd2: 07a1 addi a5,a5,8
- if (len_mod == 2)
- 1fd4: 16d70363 beq a4,a3,213a <_vscanf_core.constprop.0+0x7c2>
- *va_arg(ap, int64 *) = val;
- 1fd8: 6722 ld a4,8(sp)
- else if (len_mod == 1)
- 1fda: 4605 li a2,1
- *va_arg(ap, int64 *) = val;
- 1fdc: 6314 ld a3,0(a4)
- else if (len_mod == 1)
- 1fde: 6762 ld a4,24(sp)
- 1fe0: 16c70163 beq a4,a2,2142 <_vscanf_core.constprop.0+0x7ca>
- *va_arg(ap, int *) = (int)val;
- 1fe4: c288 sw a0,0(a3)
- assigned++;
- 1fe6: 2b05 addiw s6,s6,1
- 1fe8: e43e sd a5,8(sp)
- 1fea: b9a5 j 1c62 <_vscanf_core.constprop.0+0x2ea>
- num_buf[i] = '\0';
- 1fec: 040d0793 addi a5,s10,64
- 1ff0: 1018 addi a4,sp,32
- 1ff2: 00e785b3 add a1,a5,a4
- 1ff6: fc058023 sb zero,-64(a1)
- if (i == 0)
- 1ffa: 7ce6 ld s9,120(sp)
- 1ffc: b70d j 1f1e <_vscanf_core.constprop.0+0x5a6>
- num_buf[i] = '\0';
- 1ffe: 040d0793 addi a5,s10,64
- 2002: 1018 addi a4,sp,32
- 2004: 00e78833 add a6,a5,a4
- 2008: fc080023 sb zero,-64(a6)
- if (i == 0)
- 200c: 7ce6 ld s9,120(sp)
- 200e: b981 j 1c5e <_vscanf_core.constprop.0+0x2e6>
- int x = (c == 'x' || c == 'X');
- 2010: 4301 li t1,0
- 2012: 4685 li a3,1
- if (width > 0 && i >= width)
- 2014: c12040e3 bgtz s2,1c14 <_vscanf_core.constprop.0+0x29c>
- 2018: b101 j 1c18 <_vscanf_core.constprop.0+0x2a0>
- int assigned = 0;
- 201a: 4b01 li s6,0
- 201c: b2e9 j 19e6 <_vscanf_core.constprop.0+0x6e>
- ctx->ungotten = -1;
- 201e: 56fd li a3,-1
- 2020: fce6 sd s9,120(sp)
- 2022: 00ddac23 sw a3,24(s11)
- int base = (spec == 'x') ? 16 : (spec == 'i' ? 0 : 10);
- 2026: 07800693 li a3,120
- 202a: 4641 li a2,16
- num_buf[i++] = (char)c;
- 202c: 4d05 li s10,1
- int base = (spec == 'x') ? 16 : (spec == 'i' ? 0 : 10);
- 202e: badc09e3 beq s8,a3,1be0 <_vscanf_core.constprop.0+0x268>
- 2032: 06900693 li a3,105
- 2036: 4629 li a2,10
- num_buf[i++] = (char)c;
- 2038: 4d05 li s10,1
- int base = (spec == 'x') ? 16 : (spec == 'i' ? 0 : 10);
- 203a: badc13e3 bne s8,a3,1be0 <_vscanf_core.constprop.0+0x268>
- 203e: 4601 li a2,0
- 2040: b645 j 1be0 <_vscanf_core.constprop.0+0x268>
- ctx->ungotten = -1;
- 2042: 56fd li a3,-1
- 2044: fce6 sd s9,120(sp)
- 2046: 00ddac23 sw a3,24(s11)
- num_buf[i++] = (char)c;
- 204a: 4d05 li s10,1
- 204c: fd57869b addiw a3,a5,-43
- 2050: b171 j 1cdc <_vscanf_core.constprop.0+0x364>
- if (*str == '-')
- 2052: 0017c583 lbu a1,1(a5)
- 2056: 02d00693 li a3,45
- 205a: 0ed58f63 beq a1,a3,2158 <_vscanf_core.constprop.0+0x7e0>
- else if (*str == '+')
- 205e: 02b00693 li a3,43
- 2062: 10d58e63 beq a1,a3,217e <_vscanf_core.constprop.0+0x806>
- while (*str >= '0' && *str <= '9')
- 2066: fd05861b addiw a2,a1,-48
- 206a: 0ff67513 zext.b a0,a2
- 206e: 45a5 li a1,9
- str++;
- 2070: 00178693 addi a3,a5,1
- int esign = 1;
- 2074: 4805 li a6,1
- while (*str >= '0' && *str <= '9')
- 2076: 04a5ec63 bltu a1,a0,20ce <_vscanf_core.constprop.0+0x756>
- 207a: 4525 li a0,9
- 207c: 0016c583 lbu a1,1(a3)
- eval = eval * 10 + (*str - '0');
- 2080: 0029979b slliw a5,s3,0x2
- 2084: 013787bb addw a5,a5,s3
- 2088: 0017979b slliw a5,a5,0x1
- 208c: 00f609bb addw s3,a2,a5
- while (*str >= '0' && *str <= '9')
- 2090: fd05861b addiw a2,a1,-48
- 2094: 0ff67593 zext.b a1,a2
- str++;
- 2098: 0685 addi a3,a3,1
- while (*str >= '0' && *str <= '9')
- 209a: feb571e3 bgeu a0,a1,207c <_vscanf_core.constprop.0+0x704>
- while (eval--)
- 209e: fff9879b addiw a5,s3,-1
- 20a2: 12098463 beqz s3,21ca <_vscanf_core.constprop.0+0x852>
- double p = 1.0;
- 20a6: 00005717 auipc a4,0x5
- 20aa: 8d273687 fld fa3,-1838(a4) # 6978 <STDIN_FD+0x10>
- 20ae: 00005717 auipc a4,0x5
- 20b2: 8d273707 fld fa4,-1838(a4) # 6980 <STDIN_FD+0x18>
- while (eval--)
- 20b6: 56fd li a3,-1
- 20b8: 37fd addiw a5,a5,-1
- p *= 10.0;
- 20ba: 12e6f6d3 fmul.d fa3,fa3,fa4
- while (eval--)
- 20be: fed79de3 bne a5,a3,20b8 <_vscanf_core.constprop.0+0x740>
- if (esign == 1)
- 20c2: 4785 li a5,1
- 20c4: 00f80963 beq a6,a5,20d6 <_vscanf_core.constprop.0+0x75e>
- val /= p;
- 20c8: 1ad7f7d3 fdiv.d fa5,fa5,fa3
- 20cc: b5c9 j 1f8e <_vscanf_core.constprop.0+0x616>
- double p = 1.0;
- 20ce: 00005797 auipc a5,0x5
- 20d2: 8aa7b687 fld fa3,-1878(a5) # 6978 <STDIN_FD+0x10>
- val *= p;
- 20d6: 12d7f7d3 fmul.d fa5,fa5,fa3
- 20da: bd55 j 1f8e <_vscanf_core.constprop.0+0x616>
- while (*str >= '0' && *str <= '9')
- 20dc: 00005797 auipc a5,0x5
- 20e0: 8947b587 fld fa1,-1900(a5) # 6970 <STDIN_FD+0x8>
- 20e4: 02114603 lbu a2,33(sp)
- str++;
- 20e8: 02110793 addi a5,sp,33
- 20ec: bd91 j 1f40 <_vscanf_core.constprop.0+0x5c8>
- while (*str >= '0' && *str <= '9')
- 20ee: 0017c683 lbu a3,1(a5)
- 20f2: 45a5 li a1,9
- str++;
- 20f4: 0785 addi a5,a5,1
- while (*str >= '0' && *str <= '9')
- 20f6: fd06861b addiw a2,a3,-48
- 20fa: 0ff67513 zext.b a0,a2
- 20fe: e8a5e2e3 bltu a1,a0,1f82 <_vscanf_core.constprop.0+0x60a>
- double div = 10.0;
- 2102: 00005717 auipc a4,0x5
- 2106: 87e73707 fld fa4,-1922(a4) # 6980 <STDIN_FD+0x18>
- 210a: 22e70653 fmv.d fa2,fa4
- while (*str >= '0' && *str <= '9')
- 210e: 4525 li a0,9
- val += (*str - '0') / div;
- 2110: d20606d3 fcvt.d.w fa3,a2
- while (*str >= '0' && *str <= '9')
- 2114: 0017c683 lbu a3,1(a5)
- str++;
- 2118: 0785 addi a5,a5,1
- val += (*str - '0') / div;
- 211a: 1ac6f6d3 fdiv.d fa3,fa3,fa2
- while (*str >= '0' && *str <= '9')
- 211e: fd06861b addiw a2,a3,-48
- 2122: 0ff67593 zext.b a1,a2
- div *= 10.0;
- 2126: 12e67653 fmul.d fa2,fa2,fa4
- val += (*str - '0') / div;
- 212a: 02d7f7d3 fadd.d fa5,fa5,fa3
- while (*str >= '0' && *str <= '9')
- 212e: feb571e3 bgeu a0,a1,2110 <_vscanf_core.constprop.0+0x798>
- 2132: bd81 j 1f82 <_vscanf_core.constprop.0+0x60a>
- *va_arg(ap, double *) = val;
- 2134: a39c fsd fa5,0(a5)
- assigned++;
- 2136: 2b05 addiw s6,s6,1
- 2138: b62d j 1c62 <_vscanf_core.constprop.0+0x2ea>
- *va_arg(ap, int64 *) = val;
- 213a: 6722 ld a4,8(sp)
- 213c: 6314 ld a3,0(a4)
- 213e: e288 sd a0,0(a3)
- 2140: b55d j 1fe6 <_vscanf_core.constprop.0+0x66e>
- *va_arg(ap, long *) = (long)val;
- 2142: e288 sd a0,0(a3)
- 2144: b54d j 1fe6 <_vscanf_core.constprop.0+0x66e>
- while (*str >= '0' && *str <= '9')
- 2146: 00005797 auipc a5,0x5
- 214a: 8327b587 fld fa1,-1998(a5) # 6978 <STDIN_FD+0x10>
- 214e: 02114603 lbu a2,33(sp)
- str++;
- 2152: 02110793 addi a5,sp,33
- 2156: b3ed j 1f40 <_vscanf_core.constprop.0+0x5c8>
- while (*str >= '0' && *str <= '9')
- 2158: 0027c583 lbu a1,2(a5)
- str++;
- 215c: 00278693 addi a3,a5,2
- while (*str >= '0' && *str <= '9')
- 2160: 4525 li a0,9
- 2162: fd05861b addiw a2,a1,-48
- 2166: 0ff67793 zext.b a5,a2
- esign = -1;
- 216a: 587d li a6,-1
- while (*str >= '0' && *str <= '9')
- 216c: f0f577e3 bgeu a0,a5,207a <_vscanf_core.constprop.0+0x702>
- double p = 1.0;
- 2170: 00005797 auipc a5,0x5
- 2174: 8087b687 fld fa3,-2040(a5) # 6978 <STDIN_FD+0x10>
- val /= p;
- 2178: 1ad7f7d3 fdiv.d fa5,fa5,fa3
- 217c: bd09 j 1f8e <_vscanf_core.constprop.0+0x616>
- while (*str >= '0' && *str <= '9')
- 217e: 0027c583 lbu a1,2(a5)
- str++;
- 2182: 00278693 addi a3,a5,2
- while (*str >= '0' && *str <= '9')
- 2186: 4525 li a0,9
- 2188: fd05861b addiw a2,a1,-48
- 218c: 0ff67793 zext.b a5,a2
- 2190: f2f56fe3 bltu a0,a5,20ce <_vscanf_core.constprop.0+0x756>
- int esign = 1;
- 2194: 4805 li a6,1
- 2196: b5d5 j 207a <_vscanf_core.constprop.0+0x702>
- while (*p)
- 2198: 001bc783 lbu a5,1(s7)
- 219c: bed5 j 1d90 <_vscanf_core.constprop.0+0x418>
- if (!suppress)
- 219e: 9e0997e3 bnez s3,1b8c <_vscanf_core.constprop.0+0x214>
- buf[i] = '\0';
- 21a2: 67e2 ld a5,24(sp)
- 21a4: 00078023 sb zero,0(a5)
- 21a8: b2d5 j 1b8c <_vscanf_core.constprop.0+0x214>
- num_buf[i] = '\0';
- 21aa: 040d0793 addi a5,s10,64
- 21ae: 1018 addi a4,sp,32
- 21b0: 97ba add a5,a5,a4
- 21b2: fc078023 sb zero,-64(a5)
- if (i == 0)
- 21b6: aa0d14e3 bnez s10,1c5e <_vscanf_core.constprop.0+0x2e6>
- 21ba: b171 j 1e46 <_vscanf_core.constprop.0+0x4ce>
- 21bc: 4641 li a2,16
- if (width > 0 && i >= width)
- 21be: a5204be3 bgtz s2,1c14 <_vscanf_core.constprop.0+0x29c>
- 21c2: bc99 j 1c18 <_vscanf_core.constprop.0+0x2a0>
- num_buf[i] = '\0';
- 21c4: 020100a3 sb zero,33(sp)
- if (i == 0)
- 21c8: bb99 j 1f1e <_vscanf_core.constprop.0+0x5a6>
- double p = 1.0;
- 21ca: 00004797 auipc a5,0x4
- 21ce: 7ae7b687 fld fa3,1966(a5) # 6978 <STDIN_FD+0x10>
- 21d2: bdc5 j 20c2 <_vscanf_core.constprop.0+0x74a>
- buf[i] = '\0';
- 21d4: 67e2 ld a5,24(sp)
- 21d6: 01a786b3 add a3,a5,s10
- 21da: 00068023 sb zero,0(a3)
- ctx->ungotten = c;
- 21de: 00adac23 sw a0,24(s11)
- while (*p)
- 21e2: 001bc783 lbu a5,1(s7)
- 21e6: b6f5 j 1dd2 <_vscanf_core.constprop.0+0x45a>
-
-00000000000021e8 <_out_char>:
-{
- 21e8: 7179 addi sp,sp,-48
- 21ea: ec26 sd s1,24(sp)
- if (ctx->stream)
- 21ec: 6d04 ld s1,24(a0)
-{
- 21ee: f022 sd s0,32(sp)
- 21f0: f406 sd ra,40(sp)
- 21f2: 842a mv s0,a0
- 21f4: 872e mv a4,a1
- if (ctx->stream)
- 21f6: c0a1 beqz s1,2236 <_out_char+0x4e>
- 21f8: e84a sd s2,16(sp)
- if (stream->buf_mode == 2)
- 21fa: 41c4a903 lw s2,1052(s1)
- 21fe: 4789 li a5,2
- 2200: 04f90d63 beq s2,a5,225a <_out_char+0x72>
- stream->buffer[stream->buf_write_pos++] = (char)c;
- 2204: 4104a783 lw a5,1040(s1)
- if (stream->buf_write_pos >= BUFSIZ)
- 2208: 3ff00693 li a3,1023
- stream->buffer[stream->buf_write_pos++] = (char)c;
- 220c: 0017861b addiw a2,a5,1
- 2210: 40c4a823 sw a2,1040(s1)
- 2214: 97a6 add a5,a5,s1
- 2216: 00b78823 sb a1,16(a5)
- if (stream->buf_write_pos >= BUFSIZ)
- 221a: 08c6c063 blt a3,a2,229a <_out_char+0xb2>
- else if (stream->buf_mode == 1 && c == '\n')
- 221e: 4785 li a5,1
- 2220: 04f90a63 beq s2,a5,2274 <_out_char+0x8c>
- ctx->written++;
- 2224: 681c ld a5,16(s0)
- 2226: 6942 ld s2,16(sp)
-}
- 2228: 70a2 ld ra,40(sp)
- ctx->written++;
- 222a: 0785 addi a5,a5,1
- 222c: e81c sd a5,16(s0)
-}
- 222e: 7402 ld s0,32(sp)
- 2230: 64e2 ld s1,24(sp)
- 2232: 6145 addi sp,sp,48
- 2234: 8082 ret
- if (ctx->limit > 0 && ctx->written < ctx->limit - 1)
- 2236: 6514 ld a3,8(a0)
- 2238: 691c ld a5,16(a0)
- 223a: ca89 beqz a3,224c <_out_char+0x64>
- 223c: 16fd addi a3,a3,-1
- 223e: 00d7f763 bgeu a5,a3,224c <_out_char+0x64>
- ctx->buf[ctx->written] = c;
- 2242: 6114 ld a3,0(a0)
- 2244: 97b6 add a5,a5,a3
- 2246: 00b78023 sb a1,0(a5)
- ctx->written++;
- 224a: 691c ld a5,16(a0)
- 224c: 0785 addi a5,a5,1
-}
- 224e: 70a2 ld ra,40(sp)
- ctx->written++;
- 2250: e81c sd a5,16(s0)
-}
- 2252: 7402 ld s0,32(sp)
- 2254: 64e2 ld s1,24(sp)
- 2256: 6145 addi sp,sp,48
- 2258: 8082 ret
- if (write(stream->fd, &ch, 1) != 1)
- 225a: 4088 lw a0,0(s1)
- 225c: 4605 li a2,1
- 225e: 00f10593 addi a1,sp,15
- char ch = (char)c;
- 2262: 00e107a3 sb a4,15(sp)
- if (write(stream->fd, &ch, 1) != 1)
- 2266: e8bfe0ef jal 10f0 <write>
- 226a: 4785 li a5,1
- 226c: faf50ce3 beq a0,a5,2224 <_out_char+0x3c>
- stream->error = 1;
- 2270: c49c sw a5,8(s1)
- return EOF;
- 2272: bf4d j 2224 <_out_char+0x3c>
- else if (stream->buf_mode == 1 && c == '\n')
- 2274: 47a9 li a5,10
- 2276: faf597e3 bne a1,a5,2224 <_out_char+0x3c>
- if (stream->buf_write_pos > 0)
- 227a: fac055e3 blez a2,2224 <_out_char+0x3c>
- int64 ret = write(stream->fd, stream->buffer, stream->buf_write_pos);
- 227e: 4088 lw a0,0(s1)
- 2280: 01048593 addi a1,s1,16
- 2284: e6dfe0ef jal 10f0 <write>
- if (ret < stream->buf_write_pos)
- 2288: 4104a783 lw a5,1040(s1)
- 228c: 02f55063 bge a0,a5,22ac <_out_char+0xc4>
- stream->error = 1;
- 2290: 0124a423 sw s2,8(s1)
- stream->buf_write_pos = 0;
- 2294: 4004a823 sw zero,1040(s1)
- return EOF;
- 2298: b771 j 2224 <_out_char+0x3c>
- int64 ret = write(stream->fd, stream->buffer, stream->buf_write_pos);
- 229a: 4088 lw a0,0(s1)
- 229c: 01048593 addi a1,s1,16
- 22a0: e51fe0ef jal 10f0 <write>
- if (ret < stream->buf_write_pos)
- 22a4: 4104a783 lw a5,1040(s1)
- 22a8: 00f54563 blt a0,a5,22b2 <_out_char+0xca>
- stream->buf_write_pos = 0;
- 22ac: 4004a823 sw zero,1040(s1)
- 22b0: bf95 j 2224 <_out_char+0x3c>
- stream->error = 1;
- 22b2: 4785 li a5,1
- 22b4: c49c sw a5,8(s1)
- stream->buf_write_pos = 0;
- 22b6: 4004a823 sw zero,1040(s1)
- return EOF;
- 22ba: b7ad j 2224 <_out_char+0x3c>
-
-00000000000022bc <stbsp_set_separators>:
- "75767778798081828384858687888990919293949596979899"
-};
-
-STBSP__PUBLICDEF void STB_SPRINTF_DECORATE(set_separators)(char pcomma, char pperiod)
-{
- stbsp__period = pperiod;
- 22bc: 00006797 auipc a5,0x6
- 22c0: c5c78793 addi a5,a5,-932 # 7f18 <stbsp__digitpair>
- 22c4: 0cb78623 sb a1,204(a5)
- stbsp__comma = pcomma;
- 22c8: 0ca786a3 sb a0,205(a5)
-}
- 22cc: 8082 ret
-
-00000000000022ce <stbsp_vsprintfcb>:
-
- return (stbsp__uint32)(sn - s);
-}
-
-STBSP__PUBLICDEF int STB_SPRINTF_DECORATE(vsprintfcb)(STBSP_SPRINTFCB *callback, void *user, char *buf, char const *fmt, va_list va)
-{
- 22ce: d1010113 addi sp,sp,-752
- // Check if the next 4 bytes contain %(0x25) or end of string.
- // Using the 'hasless' trick:
- // https://graphics.stanford.edu/~seander/bithacks.html#HasLessInWord
- stbsp__uint32 v, c;
- v = *(stbsp__uint32 *)f;
- c = (~v) & 0x80808080;
- 22d2: 808087b7 lui a5,0x80808
- if (((v ^ 0x25252525) - 0x01010101) & c)
- 22d6: 252523b7 lui t2,0x25252
- 22da: 52538393 addi t2,t2,1317 # 25252525 <_ZSt4cerr+0x252496b5>
-{
- 22de: 29913c23 sd s9,664(sp)
- 22e2: 29b13423 sd s11,648(sp)
- int tlen = 0;
- 22e6: 4c81 li s9,0
- if (((v ^ 0x25252525) - 0x01010101) & c)
- 22e8: feff0db7 lui s11,0xfeff0
- c = (~v) & 0x80808080;
- 22ec: 08078793 addi a5,a5,128 # ffffffff80808080 <_ZSt4cerr+0xffffffff807ff210>
-{
- 22f0: 2e813023 sd s0,736(sp)
- 22f4: 2c913c23 sd s1,728(sp)
- 22f8: 2d213823 sd s2,720(sp)
- 22fc: 2d313423 sd s3,712(sp)
- 2300: 2b713423 sd s7,680(sp)
- 2304: 2b813023 sd s8,672(sp)
- 2308: 29a13823 sd s10,656(sp)
- 230c: 2e113423 sd ra,744(sp)
- 2310: 8d66 mv s10,s9
- 2312: 8432 mv s0,a2
- 2314: 8c9e mv s9,t2
- 2316: 89aa mv s3,a0
- 2318: e42e sd a1,8(sp)
- 231a: 84b6 mv s1,a3
- 231c: 8bba mv s7,a4
- 231e: fc02 sd zero,56(sp)
- for (;;) {
- 2320: 8932 mv s2,a2
- if (((v ^ 0x25252525) - 0x01010101) & c)
- 2322: effd8d9b addiw s11,s11,-257 # fffffffffefefeff <_ZSt4cerr+0xfffffffffefe708f>
- goto schk1;
- if ((v - 0x01010101) & c)
- goto schk2;
- if (callback)
- if ((STB_SPRINTF_MIN - (int)(bf - buf)) < 4)
- 2326: 20000c13 li s8,512
- 232a: 83be mv t2,a5
- while (((stbsp__uintptr)f) & 3) {
- 232c: 0034f793 andi a5,s1,3
- 2330: c7a9 beqz a5,237a <stbsp_vsprintfcb+0xac>
- if (f[0] == '%')
- 2332: 0004c783 lbu a5,0(s1)
- 2336: 02500713 li a4,37
- 233a: 0ee78263 beq a5,a4,241e <stbsp_vsprintfcb+0x150>
- if (f[0] == 0)
- 233e: cbd9 beqz a5,23d4 <stbsp_vsprintfcb+0x106>
- stbsp__chk_cb_buf(1);
- 2340: 02098663 beqz s3,236c <stbsp_vsprintfcb+0x9e>
- 2344: 4124063b subw a2,s0,s2
- 2348: 1fe00713 li a4,510
- 234c: 02c75063 bge a4,a2,236c <stbsp_vsprintfcb+0x9e>
- 2350: 65a2 ld a1,8(sp)
- 2352: 854a mv a0,s2
- 2354: e81e sd t2,16(sp)
- 2356: 00cd0d3b addw s10,s10,a2
- 235a: 9982 jalr s3
- 235c: 892a mv s2,a0
- 235e: e119 bnez a0,2364 <stbsp_vsprintfcb+0x96>
- 2360: 0200106f j 3380 <stbsp_vsprintfcb+0x10b2>
- *bf++ = f[0];
- 2364: 0004c783 lbu a5,0(s1)
- stbsp__chk_cb_buf(1);
- 2368: 63c2 ld t2,16(sp)
- 236a: 842a mv s0,a0
- ++f;
- 236c: 0485 addi s1,s1,1
- *bf++ = f[0];
- 236e: 00f40023 sb a5,0(s0)
- while (((stbsp__uintptr)f) & 3) {
- 2372: 0034f793 andi a5,s1,3
- *bf++ = f[0];
- 2376: 0405 addi s0,s0,1
- while (((stbsp__uintptr)f) & 3) {
- 2378: ffcd bnez a5,2332 <stbsp_vsprintfcb+0x64>
- v = *(stbsp__uint32 *)f;
- 237a: 4094 lw a3,0(s1)
- c = (~v) & 0x80808080;
- 237c: fff6c793 not a5,a3
- if (((v ^ 0x25252525) - 0x01010101) & c)
- 2380: 0196c733 xor a4,a3,s9
- c = (~v) & 0x80808080;
- 2384: 0077f7b3 and a5,a5,t2
- if (((v ^ 0x25252525) - 0x01010101) & c)
- 2388: 01b7073b addw a4,a4,s11
- 238c: 8f7d and a4,a4,a5
- 238e: 2701 sext.w a4,a4
- 2390: f34d bnez a4,2332 <stbsp_vsprintfcb+0x64>
- if ((STB_SPRINTF_MIN - (int)(bf - buf)) < 4)
- 2392: 460d li a2,3
- 2394: a805 j 23c4 <stbsp_vsprintfcb+0xf6>
- if (callback)
- 2396: 00098863 beqz s3,23a6 <stbsp_vsprintfcb+0xd8>
- if ((STB_SPRINTF_MIN - (int)(bf - buf)) < 4)
- 239a: 412407b3 sub a5,s0,s2
- 239e: 40fc07bb subw a5,s8,a5
- 23a2: f8f658e3 bge a2,a5,2332 <stbsp_vsprintfcb+0x64>
- bf[2] = f[2];
- bf[3] = f[3];
- } else
- #endif
- {
- *(stbsp__uint32 *)bf = v;
- 23a6: c014 sw a3,0(s0)
- v = *(stbsp__uint32 *)f;
- 23a8: 40d4 lw a3,4(s1)
- }
- bf += 4;
- 23aa: 0411 addi s0,s0,4
- f += 4;
- 23ac: 0491 addi s1,s1,4
- c = (~v) & 0x80808080;
- 23ae: fff6c793 not a5,a3
- if (((v ^ 0x25252525) - 0x01010101) & c)
- 23b2: 0196c733 xor a4,a3,s9
- c = (~v) & 0x80808080;
- 23b6: 0077f7b3 and a5,a5,t2
- if (((v ^ 0x25252525) - 0x01010101) & c)
- 23ba: 01b7073b addw a4,a4,s11
- 23be: 8f7d and a4,a4,a5
- 23c0: 2701 sext.w a4,a4
- 23c2: fb25 bnez a4,2332 <stbsp_vsprintfcb+0x64>
- if ((v - 0x01010101) & c)
- 23c4: 01b6873b addw a4,a3,s11
- 23c8: 8ff9 and a5,a5,a4
- 23ca: 2781 sext.w a5,a5
- 23cc: d7e9 beqz a5,2396 <stbsp_vsprintfcb+0xc8>
- if (f[0] == 0)
- 23ce: 0004c783 lbu a5,0(s1)
- 23d2: f7bd bnez a5,2340 <stbsp_vsprintfcb+0x72>
-endfmt:
-
- if (!callback)
- *bf = 0;
- else
- stbsp__flush_cb();
- 23d4: 8cea mv s9,s10
- 23d6: 412404bb subw s1,s0,s2
- if (!callback)
- 23da: 70098563 beqz s3,2ae4 <stbsp_vsprintfcb+0x816>
- stbsp__flush_cb();
- 23de: 00905663 blez s1,23ea <stbsp_vsprintfcb+0x11c>
- 23e2: 65a2 ld a1,8(sp)
- 23e4: 8626 mv a2,s1
- 23e6: 854a mv a0,s2
- 23e8: 9982 jalr s3
- 23ea: 009c8cbb addw s9,s9,s1
-
-done:
- return tlen + (int)(bf - buf);
-}
- 23ee: 2e813083 ld ra,744(sp)
- 23f2: 2e013403 ld s0,736(sp)
- 23f6: 2d813483 ld s1,728(sp)
- 23fa: 2d013903 ld s2,720(sp)
- 23fe: 2c813983 ld s3,712(sp)
- 2402: 2a813b83 ld s7,680(sp)
- 2406: 2a013c03 ld s8,672(sp)
- 240a: 29013d03 ld s10,656(sp)
- 240e: 28813d83 ld s11,648(sp)
- 2412: 8566 mv a0,s9
- 2414: 29813c83 ld s9,664(sp)
- 2418: 2f010113 addi sp,sp,752
- 241c: 8082 ret
- 241e: 2d413023 sd s4,704(sp)
- 2422: 2b513c23 sd s5,696(sp)
- 2426: 2b613823 sd s6,688(sp)
- tz = 0;
- 242a: 00248693 addi a3,s1,2
- fl = 0;
- 242e: 4e01 li t3,0
- switch (f[0]) {
- 2430: 03f00593 li a1,63
- 2434: 00004617 auipc a2,0x4
- 2438: e6460613 addi a2,a2,-412 # 6298 <_GLOBAL__sub_I__ZSt3cin+0x2a8>
- 243c: fff6c783 lbu a5,-1(a3)
- 2440: fff68493 addi s1,a3,-1
- 2444: fe07871b addiw a4,a5,-32
- 2448: 0ff77713 zext.b a4,a4
- 244c: 00e5ec63 bltu a1,a4,2464 <stbsp_vsprintfcb+0x196>
- 2450: 070a slli a4,a4,0x2
- 2452: 9732 add a4,a4,a2
- 2454: 4318 lw a4,0(a4)
- 2456: 9732 add a4,a4,a2
- 2458: 8702 jr a4
- if (f[0] == '*') {
- 245a: 0014c783 lbu a5,1(s1)
- fl |= STBSP__LEADINGZERO;
- 245e: 010e6e13 ori t3,t3,16
- ++f;
- 2462: 0485 addi s1,s1,1
- if (f[0] == '*') {
- 2464: 02a00713 li a4,42
- 2468: 0ce79163 bne a5,a4,252a <stbsp_vsprintfcb+0x25c>
- fw = va_arg(va, stbsp__uint32);
- 246c: 000bab03 lw s6,0(s7)
- while ((f[0] >= '0') && (f[0] <= '9')) {
- 2470: 0014c783 lbu a5,1(s1)
- fw = va_arg(va, stbsp__uint32);
- 2474: 0ba1 addi s7,s7,8
- ++f;
- 2476: 0485 addi s1,s1,1
- if (f[0] == '.') {
- 2478: 02e00713 li a4,46
- pr = -1;
- 247c: 58fd li a7,-1
- if (f[0] == '.') {
- 247e: 0ee78663 beq a5,a4,256a <stbsp_vsprintfcb+0x29c>
- switch (f[0]) {
- 2482: 04900713 li a4,73
- 2486: 10e78263 beq a5,a4,258a <stbsp_vsprintfcb+0x2bc>
- 248a: f987871b addiw a4,a5,-104
- 248e: 0ff77713 zext.b a4,a4
- 2492: 46c9 li a3,18
- 2494: 02e6e063 bltu a3,a4,24b4 <stbsp_vsprintfcb+0x1e6>
- 2498: 00004697 auipc a3,0x4
- 249c: f0068693 addi a3,a3,-256 # 6398 <_GLOBAL__sub_I__ZSt3cin+0x3a8>
- 24a0: 070a slli a4,a4,0x2
- 24a2: 9736 add a4,a4,a3
- 24a4: 4318 lw a4,0(a4)
- 24a6: 9736 add a4,a4,a3
- 24a8: 8702 jr a4
- if (f[0] == 'h')
- 24aa: 0014c783 lbu a5,1(s1)
- fl |= (sizeof(ptrdiff_t) == 8) ? STBSP__INTMAX : 0;
- 24ae: 020e6e13 ori t3,t3,32
- ++f;
- 24b2: 0485 addi s1,s1,1
- switch (f[0]) {
- 24b4: fbf7871b addiw a4,a5,-65
- 24b8: 0ff77713 zext.b a4,a4
- 24bc: 03700693 li a3,55
- 24c0: 0ee6ea63 bltu a3,a4,25b4 <stbsp_vsprintfcb+0x2e6>
- 24c4: 00004697 auipc a3,0x4
- 24c8: f2068693 addi a3,a3,-224 # 63e4 <_GLOBAL__sub_I__ZSt3cin+0x3f4>
- 24cc: 070a slli a4,a4,0x2
- 24ce: 9736 add a4,a4,a3
- 24d0: 4318 lw a4,0(a4)
- 24d2: 9736 add a4,a4,a3
- 24d4: 8702 jr a4
- fl |= STBSP__METRIC_NOSPACE;
- 24d6: 400e6e13 ori t3,t3,1024
- continue;
- 24da: 0685 addi a3,a3,1
- 24dc: b785 j 243c <stbsp_vsprintfcb+0x16e>
- fl |= STBSP__LEFTJUST;
- 24de: 001e6e13 ori t3,t3,1
- continue;
- 24e2: 0685 addi a3,a3,1
- 24e4: bfa1 j 243c <stbsp_vsprintfcb+0x16e>
- fl |= STBSP__LEADINGPLUS;
- 24e6: 002e6e13 ori t3,t3,2
- continue;
- 24ea: 0685 addi a3,a3,1
- 24ec: bf81 j 243c <stbsp_vsprintfcb+0x16e>
- fl |= STBSP__TRIPLET_COMMA;
- 24ee: 040e6e13 ori t3,t3,64
- continue;
- 24f2: 0685 addi a3,a3,1
- 24f4: b7a1 j 243c <stbsp_vsprintfcb+0x16e>
- if (fl & STBSP__METRIC_SUFFIX) {
- 24f6: 100e7793 andi a5,t3,256
- 24fa: 8772 mv a4,t3
- 24fc: 56078363 beqz a5,2a62 <stbsp_vsprintfcb+0x794>
- if (fl & STBSP__METRIC_1024) {
- 2500: 6785 lui a5,0x1
- 2502: 034e1513 slli a0,t3,0x34
- 2506: 80078793 addi a5,a5,-2048 # 800 <_ZN6Parser10parse_pipeEPPcS0_+0xac>
- 250a: 5c055863 bgez a0,2ada <stbsp_vsprintfcb+0x80c>
- fl |= STBSP__METRIC_JEDEC;
- 250e: 6785 lui a5,0x1
- 2510: 8f5d or a4,a4,a5
- 2512: 00070e1b sext.w t3,a4
- 2516: 0685 addi a3,a3,1
- 2518: b715 j 243c <stbsp_vsprintfcb+0x16e>
- fl |= STBSP__LEADING_0X;
- 251a: 008e6e13 ori t3,t3,8
- continue;
- 251e: 0685 addi a3,a3,1
- 2520: bf31 j 243c <stbsp_vsprintfcb+0x16e>
- fl |= STBSP__LEADINGSPACE;
- 2522: 004e6e13 ori t3,t3,4
- continue;
- 2526: 0685 addi a3,a3,1
- 2528: bf11 j 243c <stbsp_vsprintfcb+0x16e>
- while ((f[0] >= '0') && (f[0] <= '9')) {
- 252a: fd07871b addiw a4,a5,-48 # fd0 <main+0x16e>
- 252e: 0ff77713 zext.b a4,a4
- 2532: 4625 li a2,9
- fw = 0;
- 2534: 4b01 li s6,0
- while ((f[0] >= '0') && (f[0] <= '9')) {
- 2536: 46a5 li a3,9
- 2538: f4e660e3 bltu a2,a4,2478 <stbsp_vsprintfcb+0x1aa>
- fw = fw * 10 + f[0] - '0';
- 253c: 002b171b slliw a4,s6,0x2
- 2540: 0167073b addw a4,a4,s6
- 2544: 0017171b slliw a4,a4,0x1
- f++;
- 2548: 0485 addi s1,s1,1
- fw = fw * 10 + f[0] - '0';
- 254a: 9f3d addw a4,a4,a5
- while ((f[0] >= '0') && (f[0] <= '9')) {
- 254c: 0004c783 lbu a5,0(s1)
- fw = fw * 10 + f[0] - '0';
- 2550: fd070b1b addiw s6,a4,-48
- while ((f[0] >= '0') && (f[0] <= '9')) {
- 2554: fd07871b addiw a4,a5,-48
- 2558: 0ff77713 zext.b a4,a4
- 255c: fee6f0e3 bgeu a3,a4,253c <stbsp_vsprintfcb+0x26e>
- if (f[0] == '.') {
- 2560: 02e00713 li a4,46
- pr = -1;
- 2564: 58fd li a7,-1
- if (f[0] == '.') {
- 2566: f0e79ee3 bne a5,a4,2482 <stbsp_vsprintfcb+0x1b4>
- if (f[0] == '*') {
- 256a: 0014c783 lbu a5,1(s1)
- 256e: 02a00713 li a4,42
- 2572: 52e79763 bne a5,a4,2aa0 <stbsp_vsprintfcb+0x7d2>
- while ((f[0] >= '0') && (f[0] <= '9')) {
- 2576: 0024c783 lbu a5,2(s1)
- switch (f[0]) {
- 257a: 04900713 li a4,73
- pr = va_arg(va, stbsp__uint32);
- 257e: 000ba883 lw a7,0(s7)
- ++f;
- 2582: 0489 addi s1,s1,2
- pr = va_arg(va, stbsp__uint32);
- 2584: 0ba1 addi s7,s7,8
- switch (f[0]) {
- 2586: f0e792e3 bne a5,a4,248a <stbsp_vsprintfcb+0x1bc>
- if ((f[1] == '6') && (f[2] == '4')) {
- 258a: 0014c783 lbu a5,1(s1)
- 258e: 03600713 li a4,54
- 2592: 00e79463 bne a5,a4,259a <stbsp_vsprintfcb+0x2cc>
- 2596: 1e60106f j 377c <stbsp_vsprintfcb+0x14ae>
- } else if ((f[1] == '3') && (f[2] == '2')) {
- 259a: 03300713 li a4,51
- 259e: 6ae796e3 bne a5,a4,344a <stbsp_vsprintfcb+0x117c>
- 25a2: 0024c683 lbu a3,2(s1)
- 25a6: 03200713 li a4,50
- 25aa: 00e69463 bne a3,a4,25b2 <stbsp_vsprintfcb+0x2e4>
- 25ae: 0ae0106f j 365c <stbsp_vsprintfcb+0x138e>
- ++f;
- 25b2: 0485 addi s1,s1,1
- *s = f[0];
- 25b4: 26f10fa3 sb a5,639(sp)
- l = 1;
- 25b8: 4785 li a5,1
- 25ba: d0be sw a5,96(sp)
- lead[0] = 0;
- 25bc: 06010423 sb zero,104(sp)
- tail[0] = 0;
- 25c0: 06010823 sb zero,112(sp)
- dp = 0;
- 25c4: d282 sw zero,100(sp)
- 25c6: e0de sd s7,64(sp)
- 25c8: 4701 li a4,0
- 25ca: 4301 li t1,0
- 25cc: 4f81 li t6,0
- 25ce: 4685 li a3,1
- 25d0: 4a01 li s4,0
- cs = 0;
- 25d2: 4281 li t0,0
- s = num + STBSP__NUMSZ - 1;
- 25d4: 27f10a93 addi s5,sp,639
- fw = fl = 0;
- 25d8: 4e01 li t3,0
- tz = 0;
- 25da: 4881 li a7,0
- if (fl & STBSP__LEADINGZERO) // if leading zeros, everything is in pr
- 25dc: 010e7793 andi a5,t3,16
- 25e0: 40078ee3 beqz a5,31fc <stbsp_vsprintfcb+0xf2e>
- pr = (fw > pr) ? fw : pr;
- 25e4: 87ba mv a5,a4
- 25e6: 00675363 bge a4,t1,25ec <stbsp_vsprintfcb+0x31e>
- 25ea: 879a mv a5,t1
- 25ec: 0007871b sext.w a4,a5
- fw = 0;
- 25f0: 4301 li t1,0
- if (fw + pr) {
- 25f2: 62070563 beqz a4,2c1c <stbsp_vsprintfcb+0x94e>
- sn = lead + 1;
- 25f6: 06910793 addi a5,sp,105
- 25fa: fcbe sd a5,120(sp)
- while (lead[0]) {
- 25fc: 0a0a0863 beqz s4,26ac <stbsp_vsprintfcb+0x3de>
- stbsp__cb_buf_clamp(i, lead[0]);
- 2600: f026 sd s1,32(sp)
- 2602: f436 sd a3,40(sp)
- 2604: 854a mv a0,s2
- 2606: 86d2 mv a3,s4
- 2608: 84ce mv s1,s3
- stbsp__chk_cb_buf(1);
- 260a: 1fe00b93 li s7,510
- stbsp__cb_buf_clamp(i, lead[0]);
- 260e: 89be mv s3,a5
- 2610: 20000b13 li s6,512
- 2614: 87a2 mv a5,s0
- 2616: e846 sd a7,16(sp)
- 2618: 846a mv s0,s10
- 261a: ec7e sd t6,24(sp)
- 261c: 8d6e mv s10,s11
- 261e: f872 sd t3,48(sp)
- 2620: 8de6 mv s11,s9
- 2622: 8a3a mv s4,a4
- 2624: e496 sd t0,72(sp)
- 2626: 891a mv s2,t1
- 2628: 8c9e mv s9,t2
- 262a: 0006871b sext.w a4,a3
- 262e: 2e0482e3 beqz s1,3112 <stbsp_vsprintfcb+0xe44>
- 2632: 40a7863b subw a2,a5,a0
- 2636: 40cb083b subw a6,s6,a2
- 263a: 85c2 mv a1,a6
- 263c: 01075363 bge a4,a6,2642 <stbsp_vsprintfcb+0x374>
- 2640: 85ba mv a1,a4
- lead[0] -= (char)i;
- 2642: 9e8d subw a3,a3,a1
- stbsp__cb_buf_clamp(i, lead[0]);
- 2644: 0005871b sext.w a4,a1
- lead[0] -= (char)i;
- 2648: 06d10423 sb a3,104(sp)
- while (i) {
- 264c: c70d beqz a4,2676 <stbsp_vsprintfcb+0x3a8>
- 264e: 7866 ld a6,120(sp)
- 2650: 02071593 slli a1,a4,0x20
- 2654: 9181 srli a1,a1,0x20
- 2656: 00b78633 add a2,a5,a1
- 265a: 8742 mv a4,a6
- *bf++ = *sn++;
- 265c: 00074683 lbu a3,0(a4)
- 2660: 0785 addi a5,a5,1
- while (i) {
- 2662: 0705 addi a4,a4,1
- *bf++ = *sn++;
- 2664: fed78fa3 sb a3,-1(a5)
- while (i) {
- 2668: fec79ae3 bne a5,a2,265c <stbsp_vsprintfcb+0x38e>
- 266c: 982e add a6,a6,a1
- 266e: fcc2 sd a6,120(sp)
- stbsp__chk_cb_buf(1);
- 2670: c899 beqz s1,2686 <stbsp_vsprintfcb+0x3b8>
- 2672: 40a7863b subw a2,a5,a0
- 2676: 00cbd863 bge s7,a2,2686 <stbsp_vsprintfcb+0x3b8>
- 267a: 65a2 ld a1,8(sp)
- 267c: 9c31 addw s0,s0,a2
- 267e: 9482 jalr s1
- 2680: 34050ee3 beqz a0,31dc <stbsp_vsprintfcb+0xf0e>
- 2684: 87aa mv a5,a0
- while (lead[0]) {
- 2686: 06814683 lbu a3,104(sp)
- 268a: f2c5 bnez a3,262a <stbsp_vsprintfcb+0x35c>
- 268c: 83e6 mv t2,s9
- 268e: 68c2 ld a7,16(sp)
- 2690: 8cee mv s9,s11
- 2692: 6fe2 ld t6,24(sp)
- 2694: 8dea mv s11,s10
- 2696: 76a2 ld a3,40(sp)
- 2698: 8d22 mv s10,s0
- 269a: 7e42 ld t3,48(sp)
- 269c: 843e mv s0,a5
- 269e: 62a6 ld t0,72(sp)
- 26a0: 87ce mv a5,s3
- 26a2: 89a6 mv s3,s1
- 26a4: 7482 ld s1,32(sp)
- 26a6: 834a mv t1,s2
- 26a8: 8752 mv a4,s4
- 26aa: 892a mv s2,a0
- cs = (fl & STBSP__TRIPLET_COMMA) ? ((stbsp__uint32)(c - ((pr + cs) % (c + 1)))) : 0;
- 26ac: 040e7b13 andi s6,t3,64
- c = cs >> 24;
- 26b0: 0182d61b srliw a2,t0,0x18
- 26b4: 0182db9b srliw s7,t0,0x18
- cs = (fl & STBSP__TRIPLET_COMMA) ? ((stbsp__uint32)(c - ((pr + cs) % (c + 1)))) : 0;
- 26b8: 4a01 li s4,0
- 26ba: 000b0e63 beqz s6,26d6 <stbsp_vsprintfcb+0x408>
- cs &= 0xffffff;
- 26be: 02829a13 slli s4,t0,0x28
- 26c2: 028a5a13 srli s4,s4,0x28
- cs = (fl & STBSP__TRIPLET_COMMA) ? ((stbsp__uint32)(c - ((pr + cs) % (c + 1)))) : 0;
- 26c6: 00ea0a3b addw s4,s4,a4
- 26ca: 0016059b addiw a1,a2,1
- 26ce: 02ba7a3b remuw s4,s4,a1
- 26d2: 41460a3b subw s4,a2,s4
- while (pr > 0) {
- 26d6: 0ce05763 blez a4,27a4 <stbsp_vsprintfcb+0x4d6>
- *(stbsp__uint32 *)bf = 0x30303030;
- 26da: 30303837 lui a6,0x30303
- 26de: 03080813 addi a6,a6,48 # 30303030 <_ZSt4cerr+0x302fa1c0>
- 26e2: f026 sd s1,32(sp)
- 26e4: 854a mv a0,s2
- 26e6: 84da mv s1,s6
- 26e8: 895e mv s2,s7
- 26ea: e4d6 sd s5,72(sp)
- 26ec: 8b4e mv s6,s3
- 26ee: 8aea mv s5,s10
- stbsp__chk_cb_buf(1);
- 26f0: 1fe00293 li t0,510
- 26f4: 8d6e mv s10,s11
- *bf++ = stbsp__comma;
- 26f6: 00006f17 auipc t5,0x6
- 26fa: 822f0f13 addi t5,t5,-2014 # 7f18 <stbsp__digitpair>
- 26fe: 8de6 mv s11,s9
- *bf++ = '0';
- 2700: 03000e93 li t4,48
- 2704: e846 sd a7,16(sp)
- 2706: ec7e sd t6,24(sp)
- 2708: f436 sd a3,40(sp)
- 270a: f872 sd t3,48(sp)
- 270c: e89a sd t1,80(sp)
- 270e: 89ba mv s3,a4
- 2710: ecbe sd a5,88(sp)
- 2712: 8bc2 mv s7,a6
- 2714: 8c9e mv s9,t2
- stbsp__cb_buf_clamp(i, pr);
- 2716: 240b0ee3 beqz s6,3172 <stbsp_vsprintfcb+0xea4>
- 271a: 40a407b3 sub a5,s0,a0
- 271e: 40fc063b subw a2,s8,a5
- 2722: 87b2 mv a5,a2
- 2724: 00c9d363 bge s3,a2,272a <stbsp_vsprintfcb+0x45c>
- 2728: 87ce mv a5,s3
- 272a: 0007859b sext.w a1,a5
- pr -= i;
- 272e: 40f989bb subw s3,s3,a5
- if ((fl & STBSP__TRIPLET_COMMA) == 0) {
- 2732: 32048c63 beqz s1,2a6a <stbsp_vsprintfcb+0x79c>
- while (i) {
- 2736: 34058a63 beqz a1,2a8a <stbsp_vsprintfcb+0x7bc>
- 273a: 1582 slli a1,a1,0x20
- *bf++ = stbsp__comma;
- 273c: 0cdf4603 lbu a2,205(t5)
- 2740: 9181 srli a1,a1,0x20
- 2742: 95a2 add a1,a1,s0
- 2744: 0405 addi s0,s0,1
- if ((fl & STBSP__TRIPLET_COMMA) && (cs++ == c)) {
- 2746: c481 beqz s1,274e <stbsp_vsprintfcb+0x480>
- 2748: 1d4901e3 beq s2,s4,310a <stbsp_vsprintfcb+0xe3c>
- 274c: 2a05 addiw s4,s4,1
- *bf++ = '0';
- 274e: 03000793 li a5,48
- 2752: fef40fa3 sb a5,-1(s0)
- while (i) {
- 2756: fe8597e3 bne a1,s0,2744 <stbsp_vsprintfcb+0x476>
- stbsp__chk_cb_buf(1);
- 275a: 320b0b63 beqz s6,2a90 <stbsp_vsprintfcb+0x7c2>
- 275e: 40a5863b subw a2,a1,a0
- 2762: 32c2d763 bge t0,a2,2a90 <stbsp_vsprintfcb+0x7c2>
- 2766: 65a2 ld a1,8(sp)
- 2768: 01560abb addw s5,a2,s5
- 276c: 9b02 jalr s6
- 276e: 3a050ce3 beqz a0,3326 <stbsp_vsprintfcb+0x1058>
- 2772: 842a mv s0,a0
- 2774: 1fe00293 li t0,510
- 2778: 00005f17 auipc t5,0x5
- 277c: 7a0f0f13 addi t5,t5,1952 # 7f18 <stbsp__digitpair>
- 2780: 03000e93 li t4,48
- while (pr > 0) {
- 2784: f93049e3 bgtz s3,2716 <stbsp_vsprintfcb+0x448>
- while (lead[0]) {
- 2788: 83e6 mv t2,s9
- 278a: 68c2 ld a7,16(sp)
- 278c: 8cee mv s9,s11
- 278e: 6fe2 ld t6,24(sp)
- 2790: 8dea mv s11,s10
- 2792: 7482 ld s1,32(sp)
- 2794: 8d56 mv s10,s5
- 2796: 76a2 ld a3,40(sp)
- 2798: 7e42 ld t3,48(sp)
- 279a: 6346 ld t1,80(sp)
- 279c: 67e6 ld a5,88(sp)
- 279e: 6aa6 ld s5,72(sp)
- 27a0: 892a mv s2,a0
- 27a2: 89da mv s3,s6
- 27a4: 06814a03 lbu s4,104(sp)
- sn = lead + 1;
- 27a8: fcbe sd a5,120(sp)
- while (lead[0]) {
- 27aa: 0a0a0263 beqz s4,284e <stbsp_vsprintfcb+0x580>
- stbsp__cb_buf_clamp(i, lead[0]);
- 27ae: ec26 sd s1,24(sp)
- 27b0: f036 sd a3,32(sp)
- 27b2: 854a mv a0,s2
- 27b4: 86d2 mv a3,s4
- 27b6: 84ce mv s1,s3
- 27b8: 87a2 mv a5,s0
- stbsp__chk_cb_buf(1);
- 27ba: 1fe00b93 li s7,510
- stbsp__cb_buf_clamp(i, lead[0]);
- 27be: 846a mv s0,s10
- 27c0: 20000b13 li s6,512
- 27c4: 8d6e mv s10,s11
- 27c6: e846 sd a7,16(sp)
- 27c8: 8de6 mv s11,s9
- 27ca: 8a7e mv s4,t6
- 27cc: 8972 mv s2,t3
- 27ce: 899a mv s3,t1
- 27d0: 8c9e mv s9,t2
- 27d2: 0006871b sext.w a4,a3
- 27d6: 140482e3 beqz s1,311a <stbsp_vsprintfcb+0xe4c>
- 27da: 40a7863b subw a2,a5,a0
- 27de: 40cb083b subw a6,s6,a2
- 27e2: 85c2 mv a1,a6
- 27e4: 01075363 bge a4,a6,27ea <stbsp_vsprintfcb+0x51c>
- 27e8: 85ba mv a1,a4
- lead[0] -= (char)i;
- 27ea: 9e8d subw a3,a3,a1
- stbsp__cb_buf_clamp(i, lead[0]);
- 27ec: 0005871b sext.w a4,a1
- lead[0] -= (char)i;
- 27f0: 06d10423 sb a3,104(sp)
- while (i) {
- 27f4: c70d beqz a4,281e <stbsp_vsprintfcb+0x550>
- 27f6: 7866 ld a6,120(sp)
- 27f8: 02071593 slli a1,a4,0x20
- 27fc: 9181 srli a1,a1,0x20
- 27fe: 00b78633 add a2,a5,a1
- 2802: 8742 mv a4,a6
- *bf++ = *sn++;
- 2804: 00074683 lbu a3,0(a4)
- 2808: 0785 addi a5,a5,1
- while (i) {
- 280a: 0705 addi a4,a4,1
- *bf++ = *sn++;
- 280c: fed78fa3 sb a3,-1(a5)
- while (i) {
- 2810: fec79ae3 bne a5,a2,2804 <stbsp_vsprintfcb+0x536>
- 2814: 982e add a6,a6,a1
- 2816: fcc2 sd a6,120(sp)
- stbsp__chk_cb_buf(1);
- 2818: c899 beqz s1,282e <stbsp_vsprintfcb+0x560>
- 281a: 40a7863b subw a2,a5,a0
- 281e: 00cbd863 bge s7,a2,282e <stbsp_vsprintfcb+0x560>
- 2822: 65a2 ld a1,8(sp)
- 2824: 9c31 addw s0,s0,a2
- 2826: 9482 jalr s1
- 2828: 1a050ae3 beqz a0,31dc <stbsp_vsprintfcb+0xf0e>
- 282c: 87aa mv a5,a0
- while (lead[0]) {
- 282e: 06814683 lbu a3,104(sp)
- 2832: f2c5 bnez a3,27d2 <stbsp_vsprintfcb+0x504>
- 2834: 834e mv t1,s3
- 2836: 68c2 ld a7,16(sp)
- 2838: 89a6 mv s3,s1
- 283a: 7682 ld a3,32(sp)
- 283c: 64e2 ld s1,24(sp)
- 283e: 8e4a mv t3,s2
- 2840: 83e6 mv t2,s9
- 2842: 8fd2 mv t6,s4
- 2844: 8cee mv s9,s11
- 2846: 892a mv s2,a0
- 2848: 8dea mv s11,s10
- 284a: 8d22 mv s10,s0
- 284c: 843e mv s0,a5
- while (n) {
- 284e: c6f9 beqz a3,291c <stbsp_vsprintfcb+0x64e>
- STBSP__UNALIGNED(while (i >= 4) {
- 2850: ec26 sd s1,24(sp)
- 2852: 854a mv a0,s2
- 2854: 84d6 mv s1,s5
- 2856: 896a mv s2,s10
- 2858: 87a2 mv a5,s0
- 285a: 8d6e mv s10,s11
- stbsp__chk_cb_buf(1);
- 285c: 1fe00b93 li s7,510
- STBSP__UNALIGNED(while (i >= 4) {
- 2860: 8de6 mv s11,s9
- stbsp__cb_buf_clamp(i, n);
- 2862: 20000b13 li s6,512
- STBSP__UNALIGNED(while (i >= 4) {
- 2866: 4a0d li s4,3
- 2868: e87e sd t6,16(sp)
- 286a: f072 sd t3,32(sp)
- 286c: 8ac6 mv s5,a7
- 286e: f41a sd t1,40(sp)
- 2870: 8436 mv s0,a3
- 2872: 8c9e mv s9,t2
- stbsp__cb_buf_clamp(i, n);
- 2874: 0004071b sext.w a4,s0
- 2878: 100982e3 beqz s3,317c <stbsp_vsprintfcb+0xeae>
- 287c: 40a78633 sub a2,a5,a0
- 2880: 40cb05bb subw a1,s6,a2
- 2884: 862e mv a2,a1
- 2886: 00b75363 bge a4,a1,288c <stbsp_vsprintfcb+0x5be>
- 288a: 863a mv a2,a4
- 288c: 0006071b sext.w a4,a2
- n -= i;
- 2890: 9c11 subw s0,s0,a2
- STBSP__UNALIGNED(while (i >= 4) {
- 2892: 14ea50e3 bge s4,a4,31d2 <stbsp_vsprintfcb+0xf04>
- 2896: ffc70f1b addiw t5,a4,-4
- 289a: 002f5e9b srliw t4,t5,0x2
- 289e: 001e8e1b addiw t3,t4,1
- 28a2: 0e0a slli t3,t3,0x2
- 28a4: 01c785b3 add a1,a5,t3
- 28a8: 8626 mv a2,s1
- 28aa: 4218 lw a4,0(a2)
- 28ac: 0791 addi a5,a5,4
- 28ae: 0611 addi a2,a2,4
- 28b0: 2701 sext.w a4,a4
- 28b2: fee7ae23 sw a4,-4(a5)
- 28b6: feb79ae3 bne a5,a1,28aa <stbsp_vsprintfcb+0x5dc>
- 28ba: 002e9e9b slliw t4,t4,0x2
- 28be: 41df073b subw a4,t5,t4
- while (i) {
- 28c2: 94f2 add s1,s1,t3
- 28c4: c31d beqz a4,28ea <stbsp_vsprintfcb+0x61c>
- 28c6: 8626 mv a2,s1
- 28c8: 87ae mv a5,a1
- 28ca: 00e58f3b addw t5,a1,a4
- *bf++ = *s++;
- 28ce: 00064e83 lbu t4,0(a2)
- 28d2: 0785 addi a5,a5,1
- while (i) {
- 28d4: 00078e1b sext.w t3,a5
- *bf++ = *s++;
- 28d8: ffd78fa3 sb t4,-1(a5)
- 28dc: 0605 addi a2,a2,1
- while (i) {
- 28de: ffcf18e3 bne t5,t3,28ce <stbsp_vsprintfcb+0x600>
- 28e2: 1702 slli a4,a4,0x20
- 28e4: 9301 srli a4,a4,0x20
- 28e6: 95ba add a1,a1,a4
- 28e8: 94ba add s1,s1,a4
- stbsp__chk_cb_buf(1);
- 28ea: 1a098763 beqz s3,2a98 <stbsp_vsprintfcb+0x7ca>
- 28ee: 40a5863b subw a2,a1,a0
- 28f2: 1acbd363 bge s7,a2,2a98 <stbsp_vsprintfcb+0x7ca>
- 28f6: 65a2 ld a1,8(sp)
- 28f8: 0126093b addw s2,a2,s2
- 28fc: 9982 jalr s3
- 28fe: 20050be3 beqz a0,3314 <stbsp_vsprintfcb+0x1046>
- 2902: 87aa mv a5,a0
- while (n) {
- 2904: f825 bnez s0,2874 <stbsp_vsprintfcb+0x5a6>
- 2906: 6fc2 ld t6,16(sp)
- 2908: 64e2 ld s1,24(sp)
- 290a: 7e02 ld t3,32(sp)
- 290c: 7322 ld t1,40(sp)
- 290e: 83e6 mv t2,s9
- 2910: 88d6 mv a7,s5
- 2912: 8cee mv s9,s11
- 2914: 843e mv s0,a5
- 2916: 8dea mv s11,s10
- 2918: 8d4a mv s10,s2
- 291a: 892a mv s2,a0
- while (tz) {
- 291c: 08088863 beqz a7,29ac <stbsp_vsprintfcb+0x6de>
- *(stbsp__uint32 *)bf = 0x30303030;
- 2920: 30303b37 lui s6,0x30303
- *bf++ = '0';
- 2924: 03000a13 li s4,48
- while (i >= 4) {
- 2928: 4a8d li s5,3
- stbsp__chk_cb_buf(1);
- 292a: 1fe00693 li a3,510
- *(stbsp__uint32 *)bf = 0x30303030;
- 292e: 030b0b13 addi s6,s6,48 # 30303030 <_ZSt4cerr+0x302fa1c0>
- stbsp__cb_buf_clamp(i, tz);
- 2932: 20000b93 li s7,512
- 2936: 040989e3 beqz s3,3188 <stbsp_vsprintfcb+0xeba>
- 293a: 41240633 sub a2,s0,s2
- 293e: 40cb87bb subw a5,s7,a2
- 2942: 873e mv a4,a5
- 2944: 00f8d363 bge a7,a5,294a <stbsp_vsprintfcb+0x67c>
- 2948: 8746 mv a4,a7
- 294a: 0007079b sext.w a5,a4
- tz -= i;
- 294e: 40e888bb subw a7,a7,a4
- while (i) {
- 2952: 08078ee3 beqz a5,31ee <stbsp_vsprintfcb+0xf20>
- if ((((stbsp__uintptr)bf) & 3) == 0)
- 2956: 00347713 andi a4,s0,3
- 295a: e719 bnez a4,2968 <stbsp_vsprintfcb+0x69a>
- 295c: 0390006f j 3194 <stbsp_vsprintfcb+0xec6>
- 2960: 00347713 andi a4,s0,3
- 2964: 7a070f63 beqz a4,3122 <stbsp_vsprintfcb+0xe54>
- *bf++ = '0';
- 2968: 01440023 sb s4,0(s0)
- --i;
- 296c: 37fd addiw a5,a5,-1
- *bf++ = '0';
- 296e: 0405 addi s0,s0,1
- while (i) {
- 2970: fbe5 bnez a5,2960 <stbsp_vsprintfcb+0x692>
- stbsp__chk_cb_buf(1);
- 2972: 02098b63 beqz s3,29a8 <stbsp_vsprintfcb+0x6da>
- 2976: 4124063b subw a2,s0,s2
- 297a: 02c6d763 bge a3,a2,29a8 <stbsp_vsprintfcb+0x6da>
- 297e: 65a2 ld a1,8(sp)
- 2980: 854a mv a0,s2
- 2982: f81e sd t2,48(sp)
- 2984: f41a sd t1,40(sp)
- 2986: f072 sd t3,32(sp)
- 2988: ec7e sd t6,24(sp)
- 298a: e846 sd a7,16(sp)
- 298c: 00cd0d3b addw s10,s10,a2
- 2990: 9982 jalr s3
- 2992: 892a mv s2,a0
- 2994: 1a0502e3 beqz a0,3338 <stbsp_vsprintfcb+0x106a>
- 2998: 73c2 ld t2,48(sp)
- 299a: 7322 ld t1,40(sp)
- 299c: 7e02 ld t3,32(sp)
- 299e: 6fe2 ld t6,24(sp)
- 29a0: 68c2 ld a7,16(sp)
- 29a2: 842a mv s0,a0
- 29a4: 1fe00693 li a3,510
- while (tz) {
- 29a8: f80897e3 bnez a7,2936 <stbsp_vsprintfcb+0x668>
- sn = tail + 1;
- 29ac: 07110793 addi a5,sp,113
- 29b0: fcbe sd a5,120(sp)
- while (tail[0]) {
- 29b2: 080f8763 beqz t6,2a40 <stbsp_vsprintfcb+0x772>
- stbsp__cb_buf_clamp(i, tail[0]);
- 29b6: 854a mv a0,s2
- 29b8: 8b6a mv s6,s10
- stbsp__chk_cb_buf(1);
- 29ba: 1fe00a93 li s5,510
- stbsp__cb_buf_clamp(i, tail[0]);
- 29be: 8d4e mv s10,s3
- 29c0: 20000a13 li s4,512
- 29c4: 8bf2 mv s7,t3
- 29c6: 891a mv s2,t1
- 29c8: 899e mv s3,t2
- 29ca: 000f879b sext.w a5,t6
- 29ce: 7c0d0863 beqz s10,319e <stbsp_vsprintfcb+0xed0>
- 29d2: 40a4063b subw a2,s0,a0
- 29d6: 40ca06bb subw a3,s4,a2
- 29da: 8736 mv a4,a3
- 29dc: 00d7d363 bge a5,a3,29e2 <stbsp_vsprintfcb+0x714>
- 29e0: 873e mv a4,a5
- tail[0] -= (char)i;
- 29e2: 40ef8fbb subw t6,t6,a4
- stbsp__cb_buf_clamp(i, tail[0]);
- 29e6: 0007079b sext.w a5,a4
- tail[0] -= (char)i;
- 29ea: 07f10823 sb t6,112(sp)
- while (i) {
- 29ee: c795 beqz a5,2a1a <stbsp_vsprintfcb+0x74c>
- 29f0: 75e6 ld a1,120(sp)
- 29f2: 02079613 slli a2,a5,0x20
- 29f6: 9201 srli a2,a2,0x20
- 29f8: 00c406b3 add a3,s0,a2
- 29fc: 87ae mv a5,a1
- *bf++ = *sn++;
- 29fe: 0007c703 lbu a4,0(a5)
- 2a02: 0405 addi s0,s0,1
- while (i) {
- 2a04: 0785 addi a5,a5,1
- *bf++ = *sn++;
- 2a06: fee40fa3 sb a4,-1(s0)
- while (i) {
- 2a0a: fed41ae3 bne s0,a3,29fe <stbsp_vsprintfcb+0x730>
- 2a0e: 95b2 add a1,a1,a2
- 2a10: fcae sd a1,120(sp)
- stbsp__chk_cb_buf(1);
- 2a12: 000d0d63 beqz s10,2a2c <stbsp_vsprintfcb+0x75e>
- 2a16: 40a4063b subw a2,s0,a0
- 2a1a: 00cad963 bge s5,a2,2a2c <stbsp_vsprintfcb+0x75e>
- 2a1e: 65a2 ld a1,8(sp)
- 2a20: 00cb0b3b addw s6,s6,a2
- 2a24: 9d02 jalr s10
- 2a26: 200509e3 beqz a0,3438 <stbsp_vsprintfcb+0x116a>
- 2a2a: 842a mv s0,a0
- while (tail[0]) {
- 2a2c: 07014f83 lbu t6,112(sp)
- 2a30: f80f9de3 bnez t6,29ca <stbsp_vsprintfcb+0x6fc>
- 2a34: 834a mv t1,s2
- 2a36: 83ce mv t2,s3
- 2a38: 8e5e mv t3,s7
- 2a3a: 89ea mv s3,s10
- 2a3c: 892a mv s2,a0
- 2a3e: 8d5a mv s10,s6
- if (fl & STBSP__LEFTJUST)
- 2a40: 001e7e13 andi t3,t3,1
- 2a44: 000e0663 beqz t3,2a50 <stbsp_vsprintfcb+0x782>
- if (fw > 0) {
- 2a48: 00605463 blez t1,2a50 <stbsp_vsprintfcb+0x782>
- 2a4c: 0300106f j 3a7c <stbsp_vsprintfcb+0x17ae>
- for (;;) {
- 2a50: 6b86 ld s7,64(sp)
- 2a52: 2c013a03 ld s4,704(sp)
- 2a56: 2b813a83 ld s5,696(sp)
- 2a5a: 2b013b03 ld s6,688(sp)
- ++f;
- 2a5e: 0485 addi s1,s1,1
- for (;;) {
- 2a60: b0f1 j 232c <stbsp_vsprintfcb+0x5e>
- fl |= STBSP__METRIC_SUFFIX;
- 2a62: 100e6e13 ori t3,t3,256
- continue;
- 2a66: 0685 addi a3,a3,1
- 2a68: bad1 j 243c <stbsp_vsprintfcb+0x16e>
- while (i) {
- 2a6a: 0e0580e3 beqz a1,334a <stbsp_vsprintfcb+0x107c>
- if ((((stbsp__uintptr)bf) & 3) == 0)
- 2a6e: 00347793 andi a5,s0,3
- 2a72: e799 bnez a5,2a80 <stbsp_vsprintfcb+0x7b2>
- 2a74: 0dd0006f j 3350 <stbsp_vsprintfcb+0x1082>
- 2a78: 00347793 andi a5,s0,3
- 2a7c: 72078463 beqz a5,31a4 <stbsp_vsprintfcb+0xed6>
- *bf++ = '0';
- 2a80: 01d40023 sb t4,0(s0)
- --i;
- 2a84: 35fd addiw a1,a1,-1
- *bf++ = '0';
- 2a86: 0405 addi s0,s0,1
- while (i) {
- 2a88: f9e5 bnez a1,2a78 <stbsp_vsprintfcb+0x7aa>
- while (i) {
- 2a8a: 85a2 mv a1,s0
- stbsp__chk_cb_buf(1);
- 2a8c: cc0b19e3 bnez s6,275e <stbsp_vsprintfcb+0x490>
- 2a90: 842e mv s0,a1
- while (pr > 0) {
- 2a92: c93042e3 bgtz s3,2716 <stbsp_vsprintfcb+0x448>
- 2a96: b9cd j 2788 <stbsp_vsprintfcb+0x4ba>
- while (i) {
- 2a98: 87ae mv a5,a1
- while (n) {
- 2a9a: dc041de3 bnez s0,2874 <stbsp_vsprintfcb+0x5a6>
- 2a9e: b5a5 j 2906 <stbsp_vsprintfcb+0x638>
- while ((f[0] >= '0') && (f[0] <= '9')) {
- 2aa0: fd07871b addiw a4,a5,-48
- 2aa4: 0ff77713 zext.b a4,a4
- 2aa8: 4625 li a2,9
- ++f;
- 2aaa: 0485 addi s1,s1,1
- pr = 0;
- 2aac: 4881 li a7,0
- while ((f[0] >= '0') && (f[0] <= '9')) {
- 2aae: 46a5 li a3,9
- 2ab0: 9ce669e3 bltu a2,a4,2482 <stbsp_vsprintfcb+0x1b4>
- pr = pr * 10 + f[0] - '0';
- 2ab4: 0028971b slliw a4,a7,0x2
- 2ab8: 0117073b addw a4,a4,a7
- 2abc: 0017171b slliw a4,a4,0x1
- f++;
- 2ac0: 0485 addi s1,s1,1
- pr = pr * 10 + f[0] - '0';
- 2ac2: 9f3d addw a4,a4,a5
- while ((f[0] >= '0') && (f[0] <= '9')) {
- 2ac4: 0004c783 lbu a5,0(s1)
- pr = pr * 10 + f[0] - '0';
- 2ac8: fd07089b addiw a7,a4,-48
- while ((f[0] >= '0') && (f[0] <= '9')) {
- 2acc: fd07871b addiw a4,a5,-48
- 2ad0: 0ff77713 zext.b a4,a4
- 2ad4: fee6f0e3 bgeu a3,a4,2ab4 <stbsp_vsprintfcb+0x7e6>
- 2ad8: b26d j 2482 <stbsp_vsprintfcb+0x1b4>
- fl |= STBSP__METRIC_1024;
- 2ada: 8f5d or a4,a4,a5
- 2adc: 00070e1b sext.w t3,a4
- 2ae0: 0685 addi a3,a3,1
- 2ae2: baa9 j 243c <stbsp_vsprintfcb+0x16e>
- *bf = 0;
- 2ae4: 00040023 sb zero,0(s0)
- 2ae8: b209 j 23ea <stbsp_vsprintfcb+0x11c>
- if (f[0] == 'l') {
- 2aea: 0014c783 lbu a5,1(s1)
- 2aee: 06c00713 li a4,108
- fl |= ((sizeof(long) == 8) ? STBSP__INTMAX : 0);
- 2af2: 020e6e13 ori t3,t3,32
- if (f[0] == 'l') {
- 2af6: 00e78c63 beq a5,a4,2b0e <stbsp_vsprintfcb+0x840>
- ++f;
- 2afa: 0485 addi s1,s1,1
- 2afc: ba65 j 24b4 <stbsp_vsprintfcb+0x1e6>
- if (f[0] == 'h')
- 2afe: 0014c783 lbu a5,1(s1)
- 2b02: 06800713 li a4,104
- fl |= STBSP__HALFWIDTH;
- 2b06: 200e6e13 ori t3,t3,512
- if (f[0] == 'h')
- 2b0a: fee798e3 bne a5,a4,2afa <stbsp_vsprintfcb+0x82c>
- if ((f[1] == '6') && (f[2] == '4')) {
- 2b0e: 0024c783 lbu a5,2(s1)
- ++f;
- 2b12: 0489 addi s1,s1,2
- 2b14: b245 j 24b4 <stbsp_vsprintfcb+0x1e6>
- s = va_arg(va, char *);
- 2b16: 008b8713 addi a4,s7,8
- 2b1a: e0ba sd a4,64(sp)
- if (fl & STBSP__INTMAX) {
- 2b1c: 020e7693 andi a3,t3,32
- 2b20: 8772 mv a4,t3
- 2b22: 24069ee3 bnez a3,357e <stbsp_vsprintfcb+0x12b0>
- stbsp__int32 i = va_arg(va, stbsp__int32);
- 2b26: 000ba683 lw a3,0(s7)
- if ((f[0] != 'u') && (i < 0)) {
- 2b2a: 07500613 li a2,117
- n64 = (stbsp__uint32)i;
- 2b2e: 02069f13 slli t5,a3,0x20
- 2b32: 020f5f13 srli t5,t5,0x20
- if ((f[0] != 'u') && (i < 0)) {
- 2b36: 00c78a63 beq a5,a2,2b4a <stbsp_vsprintfcb+0x87c>
- 2b3a: 0006d863 bgez a3,2b4a <stbsp_vsprintfcb+0x87c>
- fl |= STBSP__NEGATIVE;
- 2b3e: 08076713 ori a4,a4,128
- n64 = (stbsp__uint32)-i;
- 2b42: 40d00f3b negw t5,a3
- fl |= STBSP__NEGATIVE;
- 2b46: 00070e1b sext.w t3,a4
- if (fl & STBSP__METRIC_SUFFIX) {
- 2b4a: 100e7693 andi a3,t3,256
- 2b4e: 5c0683e3 beqz a3,3914 <stbsp_vsprintfcb+0x1646>
- if (n64 < 1024)
- 2b52: 3ff00793 li a5,1023
- 2b56: 01e7e463 bltu a5,t5,2b5e <stbsp_vsprintfcb+0x890>
- 2b5a: 0ea0106f j 3c44 <stbsp_vsprintfcb+0x1976>
- else if (pr == -1)
- 2b5e: 57fd li a5,-1
- 2b60: 30f887e3 beq a7,a5,366e <stbsp_vsprintfcb+0x13a0>
- fv = (double)(stbsp__int64)n64;
- 2b64: d22f7553 fcvt.d.l fa0,t5
- if (fl & STBSP__METRIC_1024)
- 2b68: 034e1793 slli a5,t3,0x34
- 2b6c: 0007c463 bltz a5,2b74 <stbsp_vsprintfcb+0x8a6>
- 2b70: 2300106f j 3da0 <stbsp_vsprintfcb+0x1ad2>
- divisor = 1024.0;
- 2b74: 00004797 auipc a5,0x4
- 2b78: e147b787 fld fa5,-492(a5) # 6988 <STDIN_FD+0x20>
- if ((fv < divisor) && (fv > -divisor))
- 2b7c: 22f79753 fneg.d fa4,fa5
- fl += 0x1000000;
- 2b80: 010006b7 lui a3,0x1000
- while (fl < 0x4000000) {
- 2b84: 04000737 lui a4,0x4000
- if ((fv < divisor) && (fv > -divisor))
- 2b88: a2f517d3 flt.d a5,fa0,fa5
- 2b8c: c789 beqz a5,2b96 <stbsp_vsprintfcb+0x8c8>
- 2b8e: a2a717d3 flt.d a5,fa4,fa0
- 2b92: 3e079863 bnez a5,2f82 <stbsp_vsprintfcb+0xcb4>
- fl += 0x1000000;
- 2b96: 01c68e3b addw t3,a3,t3
- fv /= divisor;
- 2b9a: 1af57553 fdiv.d fa0,fa0,fa5
- while (fl < 0x4000000) {
- 2b9e: feee65e3 bltu t3,a4,2b88 <stbsp_vsprintfcb+0x8ba>
- 2ba2: a6c5 j 2f82 <stbsp_vsprintfcb+0xcb4>
- h = (f[0] == 'X') ? hexu : hex;
- 2ba4: 05800693 li a3,88
- if (fl & STBSP__INTMAX) {
- 2ba8: 020e7713 andi a4,t3,32
- h = (f[0] == 'X') ? hexu : hex;
- 2bac: 00005817 auipc a6,0x5
- 2bb0: 45480813 addi a6,a6,1108 # 8000 <hex.0>
- 2bb4: 00d79663 bne a5,a3,2bc0 <stbsp_vsprintfcb+0x8f2>
- 2bb8: 00005817 auipc a6,0x5
- 2bbc: 43080813 addi a6,a6,1072 # 7fe8 <hexu.1>
- l = (4 << 4) | (4 << 8);
- 2bc0: 44000793 li a5,1088
- 2bc4: d0be sw a5,96(sp)
- if (fl & STBSP__LEADING_0X) {
- 2bc6: 008e7793 andi a5,t3,8
- 2bca: 7a079263 bnez a5,336e <stbsp_vsprintfcb+0x10a0>
- lead[0] = 0;
- 2bce: 06010423 sb zero,104(sp)
- s = va_arg(va, char *);
- 2bd2: 008b8793 addi a5,s7,8
- 2bd6: e0be sd a5,64(sp)
- if (fl & STBSP__INTMAX)
- 2bd8: 72070b63 beqz a4,330e <stbsp_vsprintfcb+0x1040>
- n64 = va_arg(va, stbsp__uint64);
- 2bdc: 000bb683 ld a3,0(s7)
- dp = 0;
- 2be0: d282 sw zero,100(sp)
- tail[0] = 0;
- 2be2: 06010823 sb zero,112(sp)
- if ((fl & STBSP__LEFTJUST) == 0) {
- 2be6: 001e7513 andi a0,t3,1
- if (n64 == 0) {
- 2bea: 380694e3 bnez a3,3772 <stbsp_vsprintfcb+0x14a4>
- lead[0] = 0;
- 2bee: 06010423 sb zero,104(sp)
- if (pr == 0) {
- 2bf2: 78089a63 bnez a7,3386 <stbsp_vsprintfcb+0x10b8>
- if (fw < (stbsp__int32)n)
- 2bf6: fffb4313 not t1,s6
- 2bfa: 43f35313 srai t1,t1,0x3f
- l = 0;
- 2bfe: d082 sw zero,96(sp)
- if (fw < (stbsp__int32)n)
- 2c00: 01637333 and t1,t1,s6
- goto scopy;
- 2c04: 4701 li a4,0
- 2c06: 4f81 li t6,0
- 2c08: 4a01 li s4,0
- cs = 0;
- 2c0a: 4281 li t0,0
- s = num + STBSP__NUMSZ;
- 2c0c: 28010a93 addi s5,sp,640
- if ((fl & STBSP__LEFTJUST) == 0) {
- 2c10: 9c0506e3 beqz a0,25dc <stbsp_vsprintfcb+0x30e>
- if (fw + pr) {
- 2c14: 00e307bb addw a5,t1,a4
- 2c18: 9c079fe3 bnez a5,25f6 <stbsp_vsprintfcb+0x328>
- 2c1c: 06910793 addi a5,sp,105
- 2c20: b661 j 27a8 <stbsp_vsprintfcb+0x4da>
- h = (f[0] == 'E') ? hexu : hex;
- 2c22: 04500713 li a4,69
- 2c26: 00005317 auipc t1,0x5
- 2c2a: 3da30313 addi t1,t1,986 # 8000 <hex.0>
- 2c2e: 1ce78ae3 beq a5,a4,3602 <stbsp_vsprintfcb+0x1334>
- fv = va_arg(va, double);
- 2c32: 008b8713 addi a4,s7,8
- if (pr == -1)
- 2c36: 57fd li a5,-1
- fv = va_arg(va, double);
- 2c38: e0ba sd a4,64(sp)
- 2c3a: 000bb507 fld fa0,0(s7)
- if (pr == -1)
- 2c3e: 1af88ce3 beq a7,a5,35f6 <stbsp_vsprintfcb+0x1328>
- if (stbsp__real_to_str(&sn, &l, num, &dp, fv, pr | 0x80000000))
- 2c42: 80000737 lui a4,0x80000
- 2c46: 00e8e733 or a4,a7,a4
- 2c4a: 2701 sext.w a4,a4
- 2c4c: 10d4 addi a3,sp,100
- 2c4e: 0110 addi a2,sp,128
- 2c50: 108c addi a1,sp,96
- 2c52: 18a8 addi a0,sp,120
- 2c54: f41e sd t2,40(sp)
- 2c56: f01a sd t1,32(sp)
- 2c58: ec72 sd t3,24(sp)
- 2c5a: e846 sd a7,16(sp)
- 2c5c: d8efe0ef jal 11ea <stbsp__real_to_str>
- 2c60: 68c2 ld a7,16(sp)
- 2c62: 6e62 ld t3,24(sp)
- 2c64: 7302 ld t1,32(sp)
- 2c66: 73a2 ld t2,40(sp)
- if (dp == STBSP__SPECIAL) {
- 2c68: 5796 lw a5,100(sp)
- s = (char *)sn;
- 2c6a: 7ae6 ld s5,120(sp)
- if ((l - 1) > (stbsp__uint32)pr)
- 2c6c: 5686 lw a3,96(sp)
- if (stbsp__real_to_str(&sn, &l, num, &dp, fv, pr | 0x80000000))
- 2c6e: 3c0511e3 bnez a0,3830 <stbsp_vsprintfcb+0x1562>
- tail[0] = 0;
- 2c72: 06010823 sb zero,112(sp)
- sign[0] = 0;
- 2c76: 06010423 sb zero,104(sp)
- } else if (fl & STBSP__LEADINGSPACE) {
- 2c7a: 004e7713 andi a4,t3,4
- 2c7e: 6a070ee3 beqz a4,3b3a <stbsp_vsprintfcb+0x186c>
- sign[0] = 1;
- 2c82: 6709 lui a4,0x2
- 2c84: 0705 addi a4,a4,1 # 2001 <_vscanf_core.constprop.0+0x689>
- 2c86: 06e11423 sh a4,104(sp)
- if (dp == STBSP__SPECIAL) {
- 2c8a: 671d lui a4,0x7
- 2c8c: 1ee794e3 bne a5,a4,3674 <stbsp_vsprintfcb+0x13a6>
- if (pr < (stbsp__int32)l)
- 2c90: 0006879b sext.w a5,a3
- n = pr + lead[0] + tail[0] + tz;
- 2c94: 06814a03 lbu s4,104(sp)
- if (pr < (stbsp__int32)l)
- 2c98: fff7c793 not a5,a5
- n = pr + lead[0] + tail[0] + tz;
- 2c9c: 07014f83 lbu t6,112(sp)
- if (pr < (stbsp__int32)l)
- 2ca0: 97fd srai a5,a5,0x3f
- 2ca2: 8ff5 and a5,a5,a3
- n = pr + lead[0] + tail[0] + tz;
- 2ca4: 00fa073b addw a4,s4,a5
- 2ca8: 01f7063b addw a2,a4,t6
- 2cac: 8732 mv a4,a2
- if ((fl & STBSP__LEFTJUST) == 0) {
- 2cae: 001e7513 andi a0,t3,1
- if (pr < (stbsp__int32)l)
- 2cb2: 2781 sext.w a5,a5
- if (fw < (stbsp__int32)n)
- 2cb4: 835a mv t1,s6
- 2cb6: 00cb5363 bge s6,a2,2cbc <stbsp_vsprintfcb+0x9ee>
- 2cba: 8332 mv t1,a2
- fw -= n;
- 2cbc: 40e3033b subw t1,t1,a4
- cs = 0;
- 2cc0: 4281 li t0,0
- pr -= l;
- 2cc2: 40d7873b subw a4,a5,a3
- tz = 0;
- 2cc6: 4881 li a7,0
- goto scopy;
- 2cc8: b7a1 j 2c10 <stbsp_vsprintfcb+0x942>
- h = (f[0] == 'G') ? hexu : hex;
- 2cca: 04700713 li a4,71
- 2cce: 00005317 auipc t1,0x5
- 2cd2: 33230313 addi t1,t1,818 # 8000 <hex.0>
- 2cd6: 14e783e3 beq a5,a4,361c <stbsp_vsprintfcb+0x134e>
- fv = va_arg(va, double);
- 2cda: 008b8713 addi a4,s7,8
- if (pr == -1)
- 2cde: 57fd li a5,-1
- fv = va_arg(va, double);
- 2ce0: e0ba sd a4,64(sp)
- 2ce2: 000bb507 fld fa0,0(s7)
- if (pr == -1)
- 2ce6: 12f884e3 beq a7,a5,360e <stbsp_vsprintfcb+0x1340>
- else if (pr == 0)
- 2cea: 6e0887e3 beqz a7,3bd8 <stbsp_vsprintfcb+0x190a>
- if (stbsp__real_to_str(&sn, &l, num, &dp, fv, (pr - 1) | 0x80000000))
- 2cee: fff8871b addiw a4,a7,-1
- 2cf2: 800007b7 lui a5,0x80000
- 2cf6: 8f5d or a4,a4,a5
- 2cf8: 2701 sext.w a4,a4
- l = stbsp__strlen_limited(s, (pr >= 0) ? pr : ~0u);
- 2cfa: 00088a9b sext.w s5,a7
- 2cfe: 8a46 mv s4,a7
- if (stbsp__real_to_str(&sn, &l, num, &dp, fv, (pr - 1) | 0x80000000))
- 2d00: 10d4 addi a3,sp,100
- 2d02: 0110 addi a2,sp,128
- 2d04: 108c addi a1,sp,96
- 2d06: 18a8 addi a0,sp,120
- 2d08: f01e sd t2,32(sp)
- 2d0a: ec1a sd t1,24(sp)
- 2d0c: e872 sd t3,16(sp)
- 2d0e: cdcfe0ef jal 11ea <stbsp__real_to_str>
- 2d12: 6e42 ld t3,16(sp)
- 2d14: 6362 ld t1,24(sp)
- 2d16: 7382 ld t2,32(sp)
- 2d18: 4281 li t0,0
- 2d1a: c509 beqz a0,2d24 <stbsp_vsprintfcb+0xa56>
- fl |= STBSP__NEGATIVE;
- 2d1c: 080e6e13 ori t3,t3,128
- 2d20: 08000293 li t0,128
- if (l > (stbsp__uint32)pr)
- 2d24: 5806 lw a6,96(sp)
- 2d26: 010af463 bgeu s5,a6,2d2e <stbsp_vsprintfcb+0xa60>
- l = pr;
- 2d2a: d0d6 sw s5,96(sp)
- 2d2c: 8856 mv a6,s5
- while ((l > 1) && (pr) && (sn[l - 1] == '0')) {
- 2d2e: 4705 li a4,1
- if ((dp <= -4) || (dp > (stbsp__int32)n)) {
- 2d30: 5796 lw a5,100(sp)
- while ((l > 1) && (pr) && (sn[l - 1] == '0')) {
- 2d32: 01076463 bltu a4,a6,2d3a <stbsp_vsprintfcb+0xa6c>
- 2d36: 1800106f j 3eb6 <stbsp_vsprintfcb+0x1be8>
- 2d3a: 7be6 ld s7,120(sp)
- 2d3c: fff8071b addiw a4,a6,-1
- 2d40: 1702 slli a4,a4,0x20
- 2d42: 9301 srli a4,a4,0x20
- 2d44: 001a0e9b addiw t4,s4,1
- 2d48: 75e2 ld a1,56(sp)
- 2d4a: 8ade mv s5,s7
- 2d4c: 975e add a4,a4,s7
- 2d4e: 410e8ebb subw t4,t4,a6
- 2d52: 88d2 mv a7,s4
- 2d54: 86c2 mv a3,a6
- 2d56: 4f01 li t5,0
- 2d58: 03000f93 li t6,48
- 2d5c: e842 sd a6,16(sp)
- 2d5e: a809 j 2d70 <stbsp_vsprintfcb+0xaa2>
- --pr;
- 2d60: 38fd addiw a7,a7,-1
- while ((l > 1) && (pr) && (sn[l - 1] == '0')) {
- 2d62: 211e80e3 beq t4,a7,3762 <stbsp_vsprintfcb+0x1494>
- 2d66: 177d addi a4,a4,-1 # 6fff <STDIN_FD+0x697>
- 2d68: 4f05 li t5,1
- 2d6a: 1e088ce3 beqz a7,3762 <stbsp_vsprintfcb+0x1494>
- --l;
- 2d6e: 85b6 mv a1,a3
- while ((l > 1) && (pr) && (sn[l - 1] == '0')) {
- 2d70: 00074803 lbu a6,0(a4)
- 2d74: fff6861b addiw a2,a3,-1 # ffffff <_ZSt4cerr+0xff718f>
- 2d78: 0006851b sext.w a0,a3
- 2d7c: 2581 sext.w a1,a1
- 2d7e: 0006069b sext.w a3,a2
- 2d82: fdf80fe3 beq a6,t6,2d60 <stbsp_vsprintfcb+0xa92>
- 2d86: 6842 ld a6,16(sp)
- 2d88: fc2e sd a1,56(sp)
- 2d8a: 86c2 mv a3,a6
- 2d8c: 000f0463 beqz t5,2d94 <stbsp_vsprintfcb+0xac6>
- 2d90: d0ae sw a1,96(sp)
- 2d92: 86ae mv a3,a1
- if ((dp <= -4) || (dp > (stbsp__int32)n)) {
- 2d94: 5775 li a4,-3
- 2d96: 08e7cee3 blt a5,a4,3632 <stbsp_vsprintfcb+0x1364>
- 2d9a: 08fa4be3 blt s4,a5,3630 <stbsp_vsprintfcb+0x1362>
- pr = (dp < (stbsp__int32)l) ? l - dp : 0;
- 2d9e: 0005071b sext.w a4,a0
- if (dp > 0) {
- 2da2: 7ef057e3 blez a5,3d90 <stbsp_vsprintfcb+0x1ac2>
- pr = (dp < (stbsp__int32)l) ? l - dp : 0;
- 2da6: 4881 li a7,0
- 2da8: 00e7d463 bge a5,a4,2db0 <stbsp_vsprintfcb+0xae2>
- 2dac: 40f508bb subw a7,a0,a5
- tail[0] = 0;
- 2db0: 06010823 sb zero,112(sp)
- if (fl & STBSP__NEGATIVE) {
- 2db4: 20029463 bnez t0,2fbc <stbsp_vsprintfcb+0xcee>
- } else if (fl & STBSP__LEADINGSPACE) {
- 2db8: 004e7713 andi a4,t3,4
- 2dbc: 000715e3 bnez a4,35c6 <stbsp_vsprintfcb+0x12f8>
- } else if (fl & STBSP__LEADINGPLUS) {
- 2dc0: 002e7713 andi a4,t3,2
- 2dc4: 660719e3 bnez a4,3c36 <stbsp_vsprintfcb+0x1968>
- sign[0] = 0;
- 2dc8: 06010423 sb zero,104(sp)
- 2dcc: aaed j 2fc6 <stbsp_vsprintfcb+0xcf8>
- h = (f[0] == 'A') ? hexu : hex;
- 2dce: 04100713 li a4,65
- 2dd2: 00005597 auipc a1,0x5
- 2dd6: 22e58593 addi a1,a1,558 # 8000 <hex.0>
- 2dda: 00e783e3 beq a5,a4,35e0 <stbsp_vsprintfcb+0x1312>
- fv = va_arg(va, double);
- 2dde: 008b8693 addi a3,s7,8
- if (pr == -1)
- 2de2: 577d li a4,-1
- fv = va_arg(va, double);
- 2de4: e0b6 sd a3,64(sp)
- 2de6: 000bb783 ld a5,0(s7)
- if (pr == -1)
- 2dea: 7ee88963 beq a7,a4,35dc <stbsp_vsprintfcb+0x130e>
- d = value;
-
- STBSP__COPYFP(b, d);
-
- *bits = b & ((((stbsp__uint64)1) << 52) - 1);
- *expo = (stbsp__int32)(((b >> 52) & 2047) - 1023);
- 2dee: 4347d613 srai a2,a5,0x34
- *bits = b & ((((stbsp__uint64)1) << 52) - 1);
- 2df2: 00c79513 slli a0,a5,0xc
- *expo = (stbsp__int32)(((b >> 52) & 2047) - 1023);
- 2df6: 7ff67613 andi a2,a2,2047
- *bits = b & ((((stbsp__uint64)1) << 52) - 1);
- 2dfa: 8131 srli a0,a0,0xc
- *expo = (stbsp__int32)(((b >> 52) & 2047) - 1023);
- 2dfc: c016061b addiw a2,a2,-1023
- if (stbsp__real_to_parts((stbsp__int64 *)&n64, &dp, fv))
- 2e00: 7a07c863 bltz a5,35b0 <stbsp_vsprintfcb+0x12e2>
- } else if (fl & STBSP__LEADINGSPACE) {
- 2e04: 004e7793 andi a5,t3,4
- 2e08: 60078ee3 beqz a5,3c24 <stbsp_vsprintfcb+0x1956>
- 2e0c: 6789 lui a5,0x2
- 2e0e: 2785 addiw a5,a5,1 # 2001 <_vscanf_core.constprop.0+0x689>
- sign[0] = 1;
- 2e10: 06f11423 sh a5,104(sp)
- 2e14: 468d li a3,3
- 2e16: 4a0d li s4,3
- 2e18: 4809 li a6,2
- n64 |= (((stbsp__uint64)1) << 52);
- 2e1a: 4705 li a4,1
- 2e1c: 1752 slli a4,a4,0x34
- if (dp == -1023)
- 2e1e: c0100793 li a5,-1023
- n64 |= (((stbsp__uint64)1) << 52);
- 2e22: 8f49 or a4,a4,a0
- if (dp == -1023)
- 2e24: 5cf600e3 beq a2,a5,3be4 <stbsp_vsprintfcb+0x1916>
- if (pr < 15)
- 2e28: 4539 li a0,14
- n64 <<= (64 - 56);
- 2e2a: 00871793 slli a5,a4,0x8
- if (pr < 15)
- 2e2e: 251546e3 blt a0,a7,387a <stbsp_vsprintfcb+0x15ac>
- n64 += ((((stbsp__uint64)8) << 56) >> (pr * 4));
- 2e32: 4705 li a4,1
- 2e34: 0028951b slliw a0,a7,0x2
- 2e38: 176e slli a4,a4,0x3b
- 2e3a: 00a75733 srl a4,a4,a0
- 2e3e: 973e add a4,a4,a5
- *s++ = h[(n64 >> 60) & 15];
- 2e40: 03c75793 srli a5,a4,0x3c
- 2e44: 97ae add a5,a5,a1
- 2e46: 0007c503 lbu a0,0(a5)
- lead[1 + lead[0]] = '0';
- 2e4a: 22080793 addi a5,a6,544
- 2e4e: 06010813 addi a6,sp,96
- 2e52: 97c2 add a5,a5,a6
- 2e54: 03000813 li a6,48
- 2e58: df078423 sb a6,-536(a5)
- lead[2 + lead[0]] = 'x';
- 2e5c: 22068793 addi a5,a3,544
- 2e60: 1094 addi a3,sp,96
- 2e62: 96be add a3,a3,a5
- 2e64: 07800793 li a5,120
- 2e68: def68423 sb a5,-536(a3)
- lead[0] += 2;
- 2e6c: 07410423 sb s4,104(sp)
- *s++ = h[(n64 >> 60) & 15];
- 2e70: 0ca10023 sb a0,192(sp)
- if (pr)
- 2e74: 740893e3 bnez a7,3dba <stbsp_vsprintfcb+0x1aec>
- sn = s;
- 2e78: 0c110793 addi a5,sp,193
- 2e7c: fcbe sd a5,120(sp)
- 2e7e: 4701 li a4,0
- 2e80: 4501 li a0,0
- 2e82: 4305 li t1,1
- 2e84: 4685 li a3,1
- tail[1] = h[17];
- 2e86: 0115c583 lbu a1,17(a1)
- tail[2] = '+';
- 2e8a: 02b00793 li a5,43
- tail[1] = h[17];
- 2e8e: 06b108a3 sb a1,113(sp)
- if (dp < 0) {
- 2e92: 00065663 bgez a2,2e9e <stbsp_vsprintfcb+0xbd0>
- dp = -dp;
- 2e96: 40c0063b negw a2,a2
- tail[2] = '-';
- 2e9a: 02d00793 li a5,45
- tail[n] = '0' + dp % 10;
- 2e9e: 4829 li a6,10
- 2ea0: 030665bb remw a1,a2,a6
- 2ea4: 06f10923 sb a5,114(sp)
- n = (dp >= 1000) ? 6 : ((dp >= 100) ? 5 : ((dp >= 10) ? 4 : 3));
- 2ea8: 3e700e93 li t4,999
- tail[n] = '0' + dp % 10;
- 2eac: 0305859b addiw a1,a1,48
- 2eb0: 0ff5f593 zext.b a1,a1
- n = (dp >= 1000) ? 6 : ((dp >= 100) ? 5 : ((dp >= 10) ? 4 : 3));
- 2eb4: 18cec3e3 blt t4,a2,383a <stbsp_vsprintfcb+0x156c>
- 2eb8: 06300e93 li t4,99
- 2ebc: 54cec1e3 blt t4,a2,3bfe <stbsp_vsprintfcb+0x1930>
- 2ec0: 4ea5 li t4,9
- 2ec2: 72ced6e3 bge t4,a2,3dee <stbsp_vsprintfcb+0x1b20>
- dp /= 10;
- 2ec6: 030647bb divw a5,a2,a6
- tail[0] = (char)n;
- 2eca: 4611 li a2,4
- 2ecc: 06c10823 sb a2,112(sp)
- tail[n] = '0' + dp % 10;
- 2ed0: 06b10a23 sb a1,116(sp)
- 2ed4: 4811 li a6,4
- 2ed6: 4f91 li t6,4
- 2ed8: 0307879b addiw a5,a5,48
- 2edc: 06f109a3 sb a5,115(sp)
- n = pr + lead[0] + tail[0] + tz;
- 2ee0: 006a07bb addw a5,s4,t1
- 2ee4: 010787bb addw a5,a5,a6
- 2ee8: 0117863b addw a2,a5,a7
- dp = (int)(s - sn);
- 2eec: d2aa sw a0,100(sp)
- l = (int)(s - (num + 64));
- 2eee: d0b6 sw a3,96(sp)
- n = pr + lead[0] + tail[0] + tz;
- 2ef0: 87b2 mv a5,a2
- if ((fl & STBSP__LEFTJUST) == 0) {
- 2ef2: 001e7513 andi a0,t3,1
- if (fw < (stbsp__int32)n)
- 2ef6: 835a mv t1,s6
- 2ef8: 00cb5363 bge s6,a2,2efe <stbsp_vsprintfcb+0xc30>
- 2efc: 8332 mv t1,a2
- cs = 1 + (3 << 24);
- 2efe: 030002b7 lui t0,0x3000
- fw -= n;
- 2f02: 40f3033b subw t1,t1,a5
- cs = 1 + (3 << 24);
- 2f06: 0285 addi t0,t0,1 # 3000001 <_ZSt4cerr+0x2ff7191>
- s = num + 64;
- 2f08: 0c010a93 addi s5,sp,192
- goto scopy;
- 2f0c: b311 j 2c10 <stbsp_vsprintfcb+0x942>
- h = (f[0] == 'B') ? hexu : hex;
- 2f0e: 04200713 li a4,66
- 2f12: 00005817 auipc a6,0x5
- 2f16: 0ee80813 addi a6,a6,238 # 8000 <hex.0>
- 2f1a: 6ce78963 beq a5,a4,35ec <stbsp_vsprintfcb+0x131e>
- if (fl & STBSP__LEADING_0X) {
- 2f1e: 008e7793 andi a5,t3,8
- 2f22: 66079e63 bnez a5,359e <stbsp_vsprintfcb+0x12d0>
- lead[0] = 0;
- 2f26: 06010423 sb zero,104(sp)
- l = (8 << 4) | (1 << 8);
- 2f2a: 18000793 li a5,384
- 2f2e: d0be sw a5,96(sp)
- if (fl & STBSP__INTMAX) {
- 2f30: 020e7713 andi a4,t3,32
- goto radixnum;
- 2f34: b979 j 2bd2 <stbsp_vsprintfcb+0x904>
- *s = (char)va_arg(va, int);
- 2f36: 000ba783 lw a5,0(s7)
- l = 1;
- 2f3a: 4705 li a4,1
- 2f3c: d0ba sw a4,96(sp)
- *s = (char)va_arg(va, int);
- 2f3e: 26f10fa3 sb a5,639(sp)
- 2f42: 008b8793 addi a5,s7,8
- lead[0] = 0;
- 2f46: 06010423 sb zero,104(sp)
- tail[0] = 0;
- 2f4a: 06010823 sb zero,112(sp)
- dp = 0;
- 2f4e: d282 sw zero,100(sp)
- *s = (char)va_arg(va, int);
- 2f50: e0be sd a5,64(sp)
- if ((fl & STBSP__LEFTJUST) == 0) {
- 2f52: 001e7513 andi a0,t3,1
- if (fw < (stbsp__int32)n)
- 2f56: 835a mv t1,s6
- 2f58: 69605063 blez s6,35d8 <stbsp_vsprintfcb+0x130a>
- fw -= n;
- 2f5c: 337d addiw t1,t1,-1
- goto scopy;
- 2f5e: 4701 li a4,0
- 2f60: 4f81 li t6,0
- 2f62: 4685 li a3,1
- 2f64: 4a01 li s4,0
- cs = 0;
- 2f66: 4281 li t0,0
- s = num + STBSP__NUMSZ - 1;
- 2f68: 27f10a93 addi s5,sp,639
- tz = 0;
- 2f6c: 4881 li a7,0
- goto scopy;
- 2f6e: b14d j 2c10 <stbsp_vsprintfcb+0x942>
- fv = va_arg(va, double);
- 2f70: 008b8713 addi a4,s7,8
- if (fl & STBSP__METRIC_SUFFIX) {
- 2f74: 100e7793 andi a5,t3,256
- fv = va_arg(va, double);
- 2f78: e0ba sd a4,64(sp)
- 2f7a: 000bb507 fld fa0,0(s7)
- if (fl & STBSP__METRIC_SUFFIX) {
- 2f7e: be0795e3 bnez a5,2b68 <stbsp_vsprintfcb+0x89a>
- if (pr == -1)
- 2f82: 57fd li a5,-1
- if (stbsp__real_to_str(&sn, &l, num, &dp, fv, pr))
- 2f84: 0008871b sext.w a4,a7
- if (pr == -1)
- 2f88: 00f89463 bne a7,a5,2f90 <stbsp_vsprintfcb+0xcc2>
- 2f8c: 4719 li a4,6
- pr = 6; // default is 6
- 2f8e: 4899 li a7,6
- if (stbsp__real_to_str(&sn, &l, num, &dp, fv, pr))
- 2f90: 10d4 addi a3,sp,100
- 2f92: 0110 addi a2,sp,128
- 2f94: 108c addi a1,sp,96
- 2f96: 18a8 addi a0,sp,120
- 2f98: f01e sd t2,32(sp)
- 2f9a: ec72 sd t3,24(sp)
- 2f9c: e846 sd a7,16(sp)
- 2f9e: a4cfe0ef jal 11ea <stbsp__real_to_str>
- 2fa2: 6e62 ld t3,24(sp)
- 2fa4: 68c2 ld a7,16(sp)
- 2fa6: 7382 ld t2,32(sp)
- if (dp == STBSP__SPECIAL) {
- 2fa8: 5796 lw a5,100(sp)
- if ((stbsp__int32)(l + n) > pr)
- 2faa: 5686 lw a3,96(sp)
- if (fl & STBSP__NEGATIVE) {
- 2fac: 080e7293 andi t0,t3,128
- if (stbsp__real_to_str(&sn, &l, num, &dp, fv, pr))
- 2fb0: e00500e3 beqz a0,2db0 <stbsp_vsprintfcb+0xae2>
- fl |= STBSP__NEGATIVE;
- 2fb4: 080e6e13 ori t3,t3,128
- tail[0] = 0;
- 2fb8: 06010823 sb zero,112(sp)
- sign[0] = 1;
- 2fbc: 670d lui a4,0x3
- 2fbe: d0170713 addi a4,a4,-767 # 2d01 <stbsp_vsprintfcb+0xa33>
- 2fc2: 06e11423 sh a4,104(sp)
- if (dp == STBSP__SPECIAL) {
- 2fc6: 671d lui a4,0x7
- 2fc8: 7ce78963 beq a5,a4,379a <stbsp_vsprintfcb+0x14cc>
- if (dp <= 0) {
- 2fcc: 46f05fe3 blez a5,3c4a <stbsp_vsprintfcb+0x197c>
- cs = (fl & STBSP__TRIPLET_COMMA) ? ((600 - (stbsp__uint32)dp) % 3) : 0;
- 2fd0: 040e7313 andi t1,t3,64
- 2fd4: 00078e9b sext.w t4,a5
- 2fd8: 4581 li a1,0
- 2fda: 00030963 beqz t1,2fec <stbsp_vsprintfcb+0xd1e>
- 2fde: 25800593 li a1,600
- 2fe2: 41d585bb subw a1,a1,t4
- 2fe6: 470d li a4,3
- 2fe8: 02e5f5bb remuw a1,a1,a4
- *s++ = stbsp__comma;
- 2fec: 00005a17 auipc s4,0x5
- 2ff0: f2ca0a13 addi s4,s4,-212 # 7f18 <stbsp__digitpair>
- s = (char *)sn;
- 2ff4: 7f66 ld t5,120(sp)
- *s++ = stbsp__comma;
- 2ff6: 0cda4283 lbu t0,205(s4)
- s = num + 64;
- 2ffa: 0c010a93 addi s5,sp,192
- if ((stbsp__uint32)dp >= l) {
- 2ffe: 44defb63 bgeu t4,a3,3454 <stbsp_vsprintfcb+0x1186>
- n = 0;
- 3002: 4501 li a0,0
- s = num + 64;
- 3004: 8756 mv a4,s5
- if ((fl & STBSP__TRIPLET_COMMA) && (++cs == 4)) {
- 3006: 4b91 li s7,4
- 3008: a015 j 302c <stbsp_vsprintfcb+0xd5e>
- 300a: 8642 mv a2,a6
- 300c: 883a mv a6,a4
- 300e: 8732 mv a4,a2
- *s++ = sn[n];
- 3010: 02051613 slli a2,a0,0x20
- 3014: 9201 srli a2,a2,0x20
- 3016: 967a add a2,a2,t5
- 3018: 00064f83 lbu t6,0(a2)
- ++n;
- 301c: 0015061b addiw a2,a0,1
- 3020: 0006051b sext.w a0,a2
- *s++ = sn[n];
- 3024: fff70fa3 sb t6,-1(a4) # 6fff <STDIN_FD+0x697>
- if (n >= (stbsp__uint32)dp)
- 3028: 7bd57563 bgeu a0,t4,37d2 <stbsp_vsprintfcb+0x1504>
- *s++ = stbsp__comma;
- 302c: 00170813 addi a6,a4,1
- if ((fl & STBSP__TRIPLET_COMMA) && (++cs == 4)) {
- 3030: fc030de3 beqz t1,300a <stbsp_vsprintfcb+0xd3c>
- 3034: 2585 addiw a1,a1,1
- 3036: fd759ae3 bne a1,s7,300a <stbsp_vsprintfcb+0xd3c>
- *s++ = stbsp__comma;
- 303a: fe580fa3 sb t0,-1(a6)
- 303e: 0709 addi a4,a4,2
- if ((fl & STBSP__TRIPLET_COMMA) && (++cs == 4)) {
- 3040: 4585 li a1,1
- 3042: b7f9 j 3010 <stbsp_vsprintfcb+0xd42>
- *d = tlen + (int)(bf - buf);
- 3044: 000bb703 ld a4,0(s7)
- 3048: 412407b3 sub a5,s0,s2
- 304c: 01a787bb addw a5,a5,s10
- int *d = va_arg(va, int *);
- 3050: 008b8693 addi a3,s7,8
- 3054: e0b6 sd a3,64(sp)
- *d = tlen + (int)(bf - buf);
- 3056: c31c sw a5,0(a4)
- } break;
- 3058: bae5 j 2a50 <stbsp_vsprintfcb+0x782>
- if (fl & STBSP__LEADING_0X) {
- 305a: 008e7793 andi a5,t3,8
- 305e: 50079b63 bnez a5,3574 <stbsp_vsprintfcb+0x12a6>
- lead[0] = 0;
- 3062: 06010423 sb zero,104(sp)
- l = (3 << 4) | (3 << 8);
- 3066: 33000793 li a5,816
- 306a: d0be sw a5,96(sp)
- if (fl & STBSP__INTMAX) {
- 306c: 020e7713 andi a4,t3,32
- h = hexu;
- 3070: 00005817 auipc a6,0x5
- 3074: f7880813 addi a6,a6,-136 # 7fe8 <hexu.1>
- goto radixnum;
- 3078: bea9 j 2bd2 <stbsp_vsprintfcb+0x904>
- fl &= ~STBSP__LEADINGZERO; // 'p' only prints the pointer with zeros
- 307a: fefe7e13 andi t3,t3,-17
- 307e: 020e6e13 ori t3,t3,32
- 3082: 02000713 li a4,32
- pr = sizeof(void *) * 2;
- 3086: 48c1 li a7,16
- h = (f[0] == 'X') ? hexu : hex;
- 3088: 00005817 auipc a6,0x5
- 308c: f7880813 addi a6,a6,-136 # 8000 <hex.0>
- 3090: be05 j 2bc0 <stbsp_vsprintfcb+0x8f2>
- s = va_arg(va, char *);
- 3092: 000bba83 ld s5,0(s7)
- 3096: 008b8793 addi a5,s7,8
- 309a: e0be sd a5,64(sp)
- if (s == 0)
- 309c: 360a8ee3 beqz s5,3c18 <stbsp_vsprintfcb+0x194a>
- if (((stbsp__uintptr)sn & 3) == 0)
- 30a0: 003af793 andi a5,s5,3
- l = stbsp__strlen_limited(s, (pr >= 0) ? pr : ~0u);
- 30a4: 5208c663 bltz a7,35d0 <stbsp_vsprintfcb+0x1302>
- 30a8: 0008869b sext.w a3,a7
- if (((stbsp__uintptr)sn & 3) == 0)
- 30ac: 2a0782e3 beqz a5,3b50 <stbsp_vsprintfcb+0x1882>
- if (!limit || *sn == 0)
- 30b0: 5a068b63 beqz a3,3666 <stbsp_vsprintfcb+0x1398>
- if (((stbsp__uintptr)sn & 3) == 0)
- 30b4: 87d6 mv a5,s5
- 30b6: a801 j 30c6 <stbsp_vsprintfcb+0xdf8>
- ++sn;
- 30b8: 0785 addi a5,a5,1
- if (((stbsp__uintptr)sn & 3) == 0)
- 30ba: 0037f713 andi a4,a5,3
- --limit;
- 30be: 36fd addiw a3,a3,-1
- if (((stbsp__uintptr)sn & 3) == 0)
- 30c0: 280709e3 beqz a4,3b52 <stbsp_vsprintfcb+0x1884>
- if (!limit || *sn == 0)
- 30c4: c681 beqz a3,30cc <stbsp_vsprintfcb+0xdfe>
- 30c6: 0007c703 lbu a4,0(a5)
- 30ca: f77d bnez a4,30b8 <stbsp_vsprintfcb+0xdea>
- return (stbsp__uint32)(sn - s);
- 30cc: 415787b3 sub a5,a5,s5
- 30d0: 0007869b sext.w a3,a5
- if (pr < (stbsp__int32)l)
- 30d4: fff6c713 not a4,a3
- 30d8: 977d srai a4,a4,0x3f
- 30da: 8f7d and a4,a4,a5
- 30dc: 0007079b sext.w a5,a4
- n = pr + lead[0] + tail[0] + tz;
- 30e0: 863e mv a2,a5
- pr -= l;
- 30e2: 9f15 subw a4,a4,a3
- l = stbsp__strlen_limited(s, (pr >= 0) ? pr : ~0u);
- 30e4: d0b6 sw a3,96(sp)
- lead[0] = 0;
- 30e6: 06010423 sb zero,104(sp)
- tail[0] = 0;
- 30ea: 06010823 sb zero,112(sp)
- dp = 0;
- 30ee: d282 sw zero,100(sp)
- if ((fl & STBSP__LEFTJUST) == 0) {
- 30f0: 001e7513 andi a0,t3,1
- if (fw < (stbsp__int32)n)
- 30f4: 835a mv t1,s6
- 30f6: 00fb5363 bge s6,a5,30fc <stbsp_vsprintfcb+0xe2e>
- 30fa: 833e mv t1,a5
- fw -= n;
- 30fc: 40c3033b subw t1,t1,a2
- goto scopy;
- 3100: 4f81 li t6,0
- 3102: 4a01 li s4,0
- cs = 0;
- 3104: 4281 li t0,0
- tz = 0;
- 3106: 4881 li a7,0
- goto scopy;
- 3108: b621 j 2c10 <stbsp_vsprintfcb+0x942>
- *bf++ = stbsp__comma;
- 310a: 87b2 mv a5,a2
- cs = 0;
- 310c: 4a01 li s4,0
- 310e: e44ff06f j 2752 <stbsp_vsprintfcb+0x484>
- lead[0] -= (char)i;
- 3112: 06010423 sb zero,104(sp)
- while (i) {
- 3116: d38ff06f j 264e <stbsp_vsprintfcb+0x380>
- lead[0] -= (char)i;
- 311a: 06010423 sb zero,104(sp)
- while (i) {
- 311e: ed8ff06f j 27f6 <stbsp_vsprintfcb+0x528>
- while (i >= 4) {
- 3122: 06fadc63 bge s5,a5,319a <stbsp_vsprintfcb+0xecc>
- tz -= i;
- 3126: 8722 mv a4,s0
- 3128: 0007851b sext.w a0,a5
- while (i >= 4) {
- 312c: 008785bb addw a1,a5,s0
- *(stbsp__uint32 *)bf = 0x30303030;
- 3130: 01672023 sw s6,0(a4)
- bf += 4;
- 3134: 0711 addi a4,a4,4
- while (i >= 4) {
- 3136: 40e5863b subw a2,a1,a4
- 313a: fecacbe3 blt s5,a2,3130 <stbsp_vsprintfcb+0xe62>
- 313e: ffc5061b addiw a2,a0,-4
- 3142: 0026561b srliw a2,a2,0x2
- 3146: 0016071b addiw a4,a2,1
- 314a: 37f1 addiw a5,a5,-4
- 314c: 0026161b slliw a2,a2,0x2
- 3150: 070a slli a4,a4,0x2
- 3152: 9722 add a4,a4,s0
- 3154: 9f91 subw a5,a5,a2
- while (i) {
- 3156: 843a mv s0,a4
- 3158: 80078de3 beqz a5,2972 <stbsp_vsprintfcb+0x6a4>
- 315c: 1782 slli a5,a5,0x20
- 315e: 9381 srli a5,a5,0x20
- 3160: 00f70433 add s0,a4,a5
- *bf++ = '0';
- 3164: 0705 addi a4,a4,1
- 3166: ff470fa3 sb s4,-1(a4)
- while (i) {
- 316a: fe871de3 bne a4,s0,3164 <stbsp_vsprintfcb+0xe96>
- 316e: 805ff06f j 2972 <stbsp_vsprintfcb+0x6a4>
- stbsp__cb_buf_clamp(i, pr);
- 3172: 85ce mv a1,s3
- if ((fl & STBSP__TRIPLET_COMMA) == 0) {
- 3174: 4981 li s3,0
- 3176: dc049263 bnez s1,273a <stbsp_vsprintfcb+0x46c>
- 317a: b8d5 j 2a6e <stbsp_vsprintfcb+0x7a0>
- STBSP__UNALIGNED(while (i >= 4) {
- 317c: 4401 li s0,0
- 317e: 85be mv a1,a5
- 3180: f0ea4b63 blt s4,a4,2896 <stbsp_vsprintfcb+0x5c8>
- 3184: f42ff06f j 28c6 <stbsp_vsprintfcb+0x5f8>
- if ((((stbsp__uintptr)bf) & 3) == 0)
- 3188: 00347713 andi a4,s0,3
- stbsp__cb_buf_clamp(i, tz);
- 318c: 87c6 mv a5,a7
- tz -= i;
- 318e: 4881 li a7,0
- if ((((stbsp__uintptr)bf) & 3) == 0)
- 3190: fc071c63 bnez a4,2968 <stbsp_vsprintfcb+0x69a>
- while (i >= 4) {
- 3194: 470d li a4,3
- 3196: f8f748e3 blt a4,a5,3126 <stbsp_vsprintfcb+0xe58>
- 319a: 8722 mv a4,s0
- 319c: b7c1 j 315c <stbsp_vsprintfcb+0xe8e>
- tail[0] -= (char)i;
- 319e: 06010823 sb zero,112(sp)
- while (i) {
- 31a2: b0b9 j 29f0 <stbsp_vsprintfcb+0x722>
- while (i >= 4) {
- 31a4: 478d li a5,3
- 31a6: 8622 mv a2,s0
- 31a8: d8b7d963 bge a5,a1,273a <stbsp_vsprintfcb+0x46c>
- 31ac: ffc5839b addiw t2,a1,-4
- 31b0: 0023d79b srliw a5,t2,0x2
- 31b4: 0017859b addiw a1,a5,1
- 31b8: 058a slli a1,a1,0x2
- 31ba: 942e add s0,s0,a1
- *(stbsp__uint32 *)bf = 0x30303030;
- 31bc: 01762023 sw s7,0(a2)
- bf += 4;
- 31c0: 0611 addi a2,a2,4
- while (i >= 4) {
- 31c2: fe861de3 bne a2,s0,31bc <stbsp_vsprintfcb+0xeee>
- 31c6: 0027979b slliw a5,a5,0x2
- 31ca: 40f385bb subw a1,t2,a5
- 31ce: d68ff06f j 2736 <stbsp_vsprintfcb+0x468>
- while (i) {
- 31d2: 85be mv a1,a5
- 31d4: ee071963 bnez a4,28c6 <stbsp_vsprintfcb+0x5f8>
- 31d8: f16ff06f j 28ee <stbsp_vsprintfcb+0x620>
- 31dc: 2c013a03 ld s4,704(sp)
- 31e0: 2b813a83 ld s5,696(sp)
- 31e4: 2b013b03 ld s6,688(sp)
- 31e8: 8ca2 mv s9,s0
- 31ea: a04ff06f j 23ee <stbsp_vsprintfcb+0x120>
- stbsp__chk_cb_buf(1);
- 31ee: 2601 sext.w a2,a2
- 31f0: 1fe00793 li a5,510
- 31f4: f8c7c563 blt a5,a2,297e <stbsp_vsprintfcb+0x6b0>
- 31f8: f3eff06f j 2936 <stbsp_vsprintfcb+0x668>
- fl &= ~STBSP__TRIPLET_COMMA; // if no leading zeros, then no commas
- 31fc: fbfe7e13 andi t3,t3,-65
- if (fw + pr) {
- 3200: 006707bb addw a5,a4,t1
- fl &= ~STBSP__TRIPLET_COMMA; // if no leading zeros, then no commas
- 3204: 2e01 sext.w t3,t3
- if (fw + pr) {
- 3206: a0078be3 beqz a5,2c1c <stbsp_vsprintfcb+0x94e>
- while (fw > 0) {
- 320a: be605663 blez t1,25f6 <stbsp_vsprintfcb+0x328>
- *(stbsp__uint32 *)bf = 0x20202020;
- 320e: 20202837 lui a6,0x20202
- stbsp__cb_buf_clamp(i, fw);
- 3212: 854a mv a0,s2
- 3214: 894e mv s2,s3
- 3216: 69a2 ld s3,8(sp)
- *(stbsp__uint32 *)bf = 0x20202020;
- 3218: 02080813 addi a6,a6,32 # 20202020 <_ZSt4cerr+0x201f91b0>
- stbsp__cb_buf_clamp(i, fw);
- 321c: ec52 sd s4,24(sp)
- 321e: f426 sd s1,40(sp)
- 3220: 87a2 mv a5,s0
- 3222: 84ea mv s1,s10
- stbsp__chk_cb_buf(1);
- 3224: 1fe00f13 li t5,510
- stbsp__cb_buf_clamp(i, fw);
- 3228: 8d6e mv s10,s11
- *bf++ = ' ';
- 322a: 02000b13 li s6,32
- stbsp__cb_buf_clamp(i, fw);
- 322e: 8de6 mv s11,s9
- while (i >= 4) {
- 3230: 4b8d li s7,3
- stbsp__cb_buf_clamp(i, fw);
- 3232: 20000e93 li t4,512
- 3236: e846 sd a7,16(sp)
- 3238: f07e sd t6,32(sp)
- 323a: f836 sd a3,48(sp)
- 323c: e4f2 sd t3,72(sp)
- 323e: e8ba sd a4,80(sp)
- 3240: ec96 sd t0,88(sp)
- 3242: 841a mv s0,t1
- 3244: 8a42 mv s4,a6
- 3246: 8c9e mv s9,t2
- 3248: 0c090063 beqz s2,3308 <stbsp_vsprintfcb+0x103a>
- 324c: 40a78633 sub a2,a5,a0
- 3250: 40ce873b subw a4,t4,a2
- 3254: 86ba mv a3,a4
- 3256: 00e45363 bge s0,a4,325c <stbsp_vsprintfcb+0xf8e>
- 325a: 86a2 mv a3,s0
- 325c: 0006871b sext.w a4,a3
- fw -= i;
- 3260: 9c15 subw s0,s0,a3
- while (i) {
- 3262: e719 bnez a4,3270 <stbsp_vsprintfcb+0xfa2>
- 3264: a095 j 32c8 <stbsp_vsprintfcb+0xffa>
- *bf++ = ' ';
- 3266: 01678023 sb s6,0(a5)
- --i;
- 326a: 377d addiw a4,a4,-1
- *bf++ = ' ';
- 326c: 0785 addi a5,a5,1
- while (i) {
- 326e: cb29 beqz a4,32c0 <stbsp_vsprintfcb+0xff2>
- if ((((stbsp__uintptr)bf) & 3) == 0)
- 3270: 0037f693 andi a3,a5,3
- 3274: faed bnez a3,3266 <stbsp_vsprintfcb+0xf98>
- while (i >= 4) {
- 3276: 86be mv a3,a5
- 3278: 00070f9b sext.w t6,a4
- 327c: 00f705bb addw a1,a4,a5
- 3280: 02ebd763 bge s7,a4,32ae <stbsp_vsprintfcb+0xfe0>
- *(stbsp__uint32 *)bf = 0x20202020;
- 3284: 0146a023 sw s4,0(a3)
- bf += 4;
- 3288: 0691 addi a3,a3,4
- while (i >= 4) {
- 328a: 40d5863b subw a2,a1,a3
- 328e: fecbcbe3 blt s7,a2,3284 <stbsp_vsprintfcb+0xfb6>
- 3292: ffcf861b addiw a2,t6,-4 # fffffffff7fffffc <_ZSt4cerr+0xfffffffff7ff718c>
- 3296: 0026561b srliw a2,a2,0x2
- 329a: 0016069b addiw a3,a2,1
- 329e: 3771 addiw a4,a4,-4
- 32a0: 0026161b slliw a2,a2,0x2
- 32a4: 068a slli a3,a3,0x2
- 32a6: 96be add a3,a3,a5
- 32a8: 9f11 subw a4,a4,a2
- while (i) {
- 32aa: 87b6 mv a5,a3
- 32ac: cb11 beqz a4,32c0 <stbsp_vsprintfcb+0xff2>
- 32ae: 1702 slli a4,a4,0x20
- 32b0: 9301 srli a4,a4,0x20
- 32b2: 00e687b3 add a5,a3,a4
- *bf++ = ' ';
- 32b6: 0685 addi a3,a3,1
- 32b8: ff668fa3 sb s6,-1(a3)
- while (i) {
- 32bc: fef69de3 bne a3,a5,32b6 <stbsp_vsprintfcb+0xfe8>
- stbsp__chk_cb_buf(1);
- 32c0: 40a78633 sub a2,a5,a0
- 32c4: 00090e63 beqz s2,32e0 <stbsp_vsprintfcb+0x1012>
- 32c8: 2601 sext.w a2,a2
- 32ca: 00cf5b63 bge t5,a2,32e0 <stbsp_vsprintfcb+0x1012>
- 32ce: 85ce mv a1,s3
- 32d0: 9cb1 addw s1,s1,a2
- 32d2: 9902 jalr s2
- 32d4: c541 beqz a0,335c <stbsp_vsprintfcb+0x108e>
- 32d6: 87aa mv a5,a0
- 32d8: 20000e93 li t4,512
- 32dc: 1fe00f13 li t5,510
- while (fw > 0) {
- 32e0: f68044e3 bgtz s0,3248 <stbsp_vsprintfcb+0xf7a>
- 32e4: 8322 mv t1,s0
- 32e6: 89ca mv s3,s2
- 32e8: 83e6 mv t2,s9
- 32ea: 68c2 ld a7,16(sp)
- 32ec: 8cee mv s9,s11
- 32ee: 6a62 ld s4,24(sp)
- 32f0: 8dea mv s11,s10
- 32f2: 7f82 ld t6,32(sp)
- 32f4: 8d26 mv s10,s1
- 32f6: 76c2 ld a3,48(sp)
- 32f8: 6e26 ld t3,72(sp)
- 32fa: 6746 ld a4,80(sp)
- 32fc: 62e6 ld t0,88(sp)
- 32fe: 74a2 ld s1,40(sp)
- 3300: 892a mv s2,a0
- 3302: 843e mv s0,a5
- 3304: af2ff06f j 25f6 <stbsp_vsprintfcb+0x328>
- stbsp__cb_buf_clamp(i, fw);
- 3308: 8722 mv a4,s0
- 330a: 4401 li s0,0
- if ((((stbsp__uintptr)bf) & 3) == 0)
- 330c: b795 j 3270 <stbsp_vsprintfcb+0xfa2>
- n64 = va_arg(va, stbsp__uint32);
- 330e: 000be683 lwu a3,0(s7)
- 3312: b0f9 j 2be0 <stbsp_vsprintfcb+0x912>
- 3314: 2c013a03 ld s4,704(sp)
- 3318: 2b813a83 ld s5,696(sp)
- 331c: 2b013b03 ld s6,688(sp)
- 3320: 8cca mv s9,s2
- 3322: 8ccff06f j 23ee <stbsp_vsprintfcb+0x120>
- 3326: 8cd6 mv s9,s5
- 3328: 2c013a03 ld s4,704(sp)
- 332c: 2b813a83 ld s5,696(sp)
- 3330: 2b013b03 ld s6,688(sp)
- 3334: 8baff06f j 23ee <stbsp_vsprintfcb+0x120>
- 3338: 2c013a03 ld s4,704(sp)
- 333c: 2b813a83 ld s5,696(sp)
- 3340: 2b013b03 ld s6,688(sp)
- 3344: 8cea mv s9,s10
- 3346: 8a8ff06f j 23ee <stbsp_vsprintfcb+0x120>
- while (i) {
- 334a: 85a2 mv a1,s0
- 334c: c12ff06f j 275e <stbsp_vsprintfcb+0x490>
- while (i >= 4) {
- 3350: 478d li a5,3
- 3352: 8622 mv a2,s0
- 3354: e4b7cce3 blt a5,a1,31ac <stbsp_vsprintfcb+0xede>
- 3358: be2ff06f j 273a <stbsp_vsprintfcb+0x46c>
- 335c: 2c013a03 ld s4,704(sp)
- 3360: 2b813a83 ld s5,696(sp)
- 3364: 2b013b03 ld s6,688(sp)
- 3368: 8ca6 mv s9,s1
- 336a: 884ff06f j 23ee <stbsp_vsprintfcb+0x120>
- lead[2] = h[16];
- 336e: 01084683 lbu a3,16(a6)
- lead[0] = 2;
- 3372: 678d lui a5,0x3
- 3374: 0789 addi a5,a5,2 # 3002 <stbsp_vsprintfcb+0xd34>
- 3376: 06f11423 sh a5,104(sp)
- lead[2] = h[16];
- 337a: 06d10523 sb a3,106(sp)
- 337e: b891 j 2bd2 <stbsp_vsprintfcb+0x904>
- 3380: 8cea mv s9,s10
- 3382: 86cff06f j 23ee <stbsp_vsprintfcb+0x120>
- 3386: 4f81 li t6,0
- 3388: 4a01 li s4,0
- 338a: 5586 lw a1,96(sp)
- *--s = stbsp__comma;
- 338c: 00005f17 auipc t5,0x5
- 3390: c59f4f03 lbu t5,-935(t5) # 7fe5 <stbsp__comma>
- 3394: 0510 addi a2,sp,640
- 3396: 0085d71b srliw a4,a1,0x8
- *--s = h[n64 & ((1 << (l >> 8)) - 1)];
- 339a: 4305 li t1,1
- if (fl & STBSP__TRIPLET_COMMA) {
- 339c: 040e7e93 andi t4,t3,64
- *--s = h[n64 & ((1 << (l >> 8)) - 1)];
- 33a0: 0007029b sext.w t0,a4
- 33a4: 005317bb sllw a5,t1,t0
- 33a8: 37fd addiw a5,a5,-1
- 33aa: 8ff5 and a5,a5,a3
- 33ac: 97c2 add a5,a5,a6
- 33ae: 0007c783 lbu a5,0(a5)
- n64 >>= (l >> 8);
- 33b2: 0056d6b3 srl a3,a3,t0
- *--s = h[n64 & ((1 << (l >> 8)) - 1)];
- 33b6: fff60a93 addi s5,a2,-1
- 33ba: fef60fa3 sb a5,-1(a2)
- if (!((n64) || ((stbsp__int32)((num + STBSP__NUMSZ) - s) < pr)))
- 33be: e691 bnez a3,33ca <stbsp_vsprintfcb+0x10fc>
- 33c0: 051c addi a5,sp,640
- 33c2: 415787bb subw a5,a5,s5
- 33c6: 0317dd63 bge a5,a7,3400 <stbsp_vsprintfcb+0x1132>
- if (fl & STBSP__TRIPLET_COMMA) {
- 33ca: 020e8963 beqz t4,33fc <stbsp_vsprintfcb+0x112e>
- ++l;
- 33ce: 0015879b addiw a5,a1,1
- if ((l & 15) == ((l >> 4) & 15)) {
- 33d2: 0047d29b srliw t0,a5,0x4
- 33d6: 00f2c2b3 xor t0,t0,a5
- 33da: 00f2f293 andi t0,t0,15
- ++l;
- 33de: 0007859b sext.w a1,a5
- if ((l & 15) == ((l >> 4) & 15)) {
- 33e2: 0087d71b srliw a4,a5,0x8
- 33e6: 00029b63 bnez t0,33fc <stbsp_vsprintfcb+0x112e>
- l &= ~15;
- 33ea: 9bc1 andi a5,a5,-16
- 33ec: 0007859b sext.w a1,a5
- *--s = stbsp__comma;
- 33f0: ffe60a93 addi s5,a2,-2
- 33f4: ffe60f23 sb t5,-2(a2)
- 33f8: 0087d71b srliw a4,a5,0x8
- 33fc: 8656 mv a2,s5
- 33fe: b74d j 33a0 <stbsp_vsprintfcb+0x10d2>
- cs = (stbsp__uint32)((num + STBSP__NUMSZ) - s) + ((((l >> 4) & 15)) << 24);
- 3400: 0045d29b srliw t0,a1,0x4
- 3404: 0f0006b7 lui a3,0xf000
- if (pr < (stbsp__int32)l)
- 3408: 0007871b sext.w a4,a5
- cs = (stbsp__uint32)((num + STBSP__NUMSZ) - s) + ((((l >> 4) & 15)) << 24);
- 340c: 0182929b slliw t0,t0,0x18
- 3410: 00d2f2b3 and t0,t0,a3
- n = pr + lead[0] + tail[0] + tz;
- 3414: 00ef863b addw a2,t6,a4
- l = (stbsp__uint32)((num + STBSP__NUMSZ) - s);
- 3418: d0be sw a5,96(sp)
- n = pr + lead[0] + tail[0] + tz;
- 341a: 8fb2 mv t6,a2
- cs = (stbsp__uint32)((num + STBSP__NUMSZ) - s) + ((((l >> 4) & 15)) << 24);
- 341c: 86be mv a3,a5
- 341e: 00f282bb addw t0,t0,a5
- if (fw < (stbsp__int32)n)
- 3422: 835a mv t1,s6
- 3424: 00cb5363 bge s6,a2,342a <stbsp_vsprintfcb+0x115c>
- 3428: 8332 mv t1,a2
- fw -= n;
- 342a: 41f3033b subw t1,t1,t6
- pr -= l;
- 342e: 9f1d subw a4,a4,a5
- goto scopy;
- 3430: 4f81 li t6,0
- tz = 0;
- 3432: 4881 li a7,0
- goto scopy;
- 3434: fdcff06f j 2c10 <stbsp_vsprintfcb+0x942>
- 3438: 8cda mv s9,s6
- 343a: 2c013a03 ld s4,704(sp)
- 343e: 2b813a83 ld s5,696(sp)
- 3442: 2b013b03 ld s6,688(sp)
- 3446: fa9fe06f j 23ee <stbsp_vsprintfcb+0x120>
- fl |= ((sizeof(void *) == 8) ? STBSP__INTMAX : 0);
- 344a: 020e6e13 ori t3,t3,32
- ++f;
- 344e: 0485 addi s1,s1,1
- 3450: 864ff06f j 24b4 <stbsp_vsprintfcb+0x1e6>
- n = 0;
- 3454: 4601 li a2,0
- s = num + 64;
- 3456: 8756 mv a4,s5
- if ((fl & STBSP__TRIPLET_COMMA) && (++cs == 4)) {
- 3458: 4511 li a0,4
- *s++ = stbsp__comma;
- 345a: 00170793 addi a5,a4,1
- if ((fl & STBSP__TRIPLET_COMMA) && (++cs == 4)) {
- 345e: 00030563 beqz t1,3468 <stbsp_vsprintfcb+0x119a>
- 3462: 2585 addiw a1,a1,1
- 3464: 10a58363 beq a1,a0,356a <stbsp_vsprintfcb+0x129c>
- 3468: 873e mv a4,a5
- *s++ = sn[n];
- 346a: 02061793 slli a5,a2,0x20
- 346e: 9381 srli a5,a5,0x20
- 3470: 97fa add a5,a5,t5
- 3472: 0007c803 lbu a6,0(a5)
- ++n;
- 3476: 2605 addiw a2,a2,1
- *s++ = sn[n];
- 3478: ff070fa3 sb a6,-1(a4)
- if (n >= l)
- 347c: fcd66fe3 bltu a2,a3,345a <stbsp_vsprintfcb+0x118c>
- if (n < (stbsp__uint32)dp) {
- 3480: 0bd663e3 bltu a2,t4,3d26 <stbsp_vsprintfcb+0x1a58>
- cs = (int)(s - (num + 64)) + (3 << 24); // cs is how many tens
- 3484: 415707b3 sub a5,a4,s5
- 3488: 030002b7 lui t0,0x3000
- 348c: 00f282bb addw t0,t0,a5
- if (pr) {
- 3490: 00088a63 beqz a7,34a4 <stbsp_vsprintfcb+0x11d6>
- *s++ = stbsp__period;
- 3494: 0cca4683 lbu a3,204(s4)
- 3498: 00170793 addi a5,a4,1
- l = (stbsp__uint32)(s - (num + 64));
- 349c: 415787b3 sub a5,a5,s5
- *s++ = stbsp__period;
- 34a0: 00d70023 sb a3,0(a4)
- if (fl & STBSP__METRIC_SUFFIX) {
- 34a4: 100e7713 andi a4,t3,256
- 34a8: 86f2 mv a3,t3
- 34aa: 2c070163 beqz a4,376c <stbsp_vsprintfcb+0x149e>
- if (fl & STBSP__METRIC_NOSPACE)
- 34ae: 40ae5f9b sraiw t6,t3,0xa
- 34b2: 001fcf93 xori t6,t6,1
- 34b6: 001fff93 andi t6,t6,1
- tail[1] = ' ';
- 34ba: 02000713 li a4,32
- 34be: 06e108a3 sb a4,113(sp)
- tail[0] = idx;
- 34c2: 07f10823 sb t6,112(sp)
- if (fl >> 24) { // SI kilo is 'k', JEDEC and SI kibits are 'K'.
- 34c6: 018e561b srliw a2,t3,0x18
- 34ca: 018e571b srliw a4,t3,0x18
- n = pr + lead[0] + tail[0] + tz;
- 34ce: 000f859b sext.w a1,t6
- if (fl >> 24) { // SI kilo is 'k', JEDEC and SI kibits are 'K'.
- 34d2: c225 beqz a2,3532 <stbsp_vsprintfcb+0x1264>
- if (fl & STBSP__METRIC_1024)
- 34d4: 001f859b addiw a1,t6,1
- 34d8: 0ff5f613 zext.b a2,a1
- tail[idx + 1] = "_KMGT"[fl >> 24];
- 34dc: 1702 slli a4,a4,0x20
- if (fl & STBSP__METRIC_1024)
- 34de: 03469513 slli a0,a3,0x34
- tail[idx + 1] = "_KMGT"[fl >> 24];
- 34e2: 85b2 mv a1,a2
- 34e4: 9301 srli a4,a4,0x20
- if (fl & STBSP__METRIC_1024)
- 34e6: 06055ee3 bgez a0,3d62 <stbsp_vsprintfcb+0x1a94>
- tail[idx + 1] = "_KMGT"[fl >> 24];
- 34ea: 00003517 auipc a0,0x3
- 34ee: cfe50513 addi a0,a0,-770 # 61e8 <_GLOBAL__sub_I__ZSt3cin+0x1f8>
- 34f2: 972a add a4,a4,a0
- 34f4: 00074503 lbu a0,0(a4)
- if (fl & STBSP__METRIC_1024 && !(fl & STBSP__METRIC_JEDEC)) {
- 34f8: 6709 lui a4,0x2
- 34fa: 80070713 addi a4,a4,-2048 # 1800 <stbsp__real_to_str+0x616>
- 34fe: 8f75 and a4,a4,a3
- tail[idx + 1] = "_KMGT"[fl >> 24];
- 3500: 06010813 addi a6,sp,96
- 3504: 22060693 addi a3,a2,544
- 3508: 96c2 add a3,a3,a6
- 350a: dea68823 sb a0,-528(a3) # efffdf0 <_ZSt4cerr+0xeff6f80>
- if (fl & STBSP__METRIC_1024 && !(fl & STBSP__METRIC_JEDEC)) {
- 350e: 8007071b addiw a4,a4,-2048
- 3512: 060715e3 bnez a4,3d7c <stbsp_vsprintfcb+0x1aae>
- tail[idx + 1] = 'i';
- 3516: 2f89 addiw t6,t6,2
- 3518: 0ffff593 zext.b a1,t6
- 351c: 1094 addi a3,sp,96
- 351e: 22058713 addi a4,a1,544
- 3522: 9736 add a4,a4,a3
- 3524: 06900693 li a3,105
- 3528: 8fae mv t6,a1
- 352a: ded70823 sb a3,-528(a4)
- tail[0] = idx;
- 352e: 07f10823 sb t6,112(sp)
- l = (stbsp__uint32)(s - (num + 64));
- 3532: 0007869b sext.w a3,a5
- n = pr + lead[0] + tail[0] + tz;
- 3536: 06814a03 lbu s4,104(sp)
- if (pr < (stbsp__int32)l)
- 353a: fff6c713 not a4,a3
- 353e: 977d srai a4,a4,0x3f
- 3540: 8ff9 and a5,a5,a4
- n = pr + lead[0] + tail[0] + tz;
- 3542: 00fa073b addw a4,s4,a5
- 3546: 9f2d addw a4,a4,a1
- 3548: 0117063b addw a2,a4,a7
- l = (stbsp__uint32)(s - (num + 64));
- 354c: d0b6 sw a3,96(sp)
- n = pr + lead[0] + tail[0] + tz;
- 354e: 8732 mv a4,a2
- if (pr < (stbsp__int32)l)
- 3550: 2781 sext.w a5,a5
- if ((fl & STBSP__LEFTJUST) == 0) {
- 3552: 001e7513 andi a0,t3,1
- if (fw < (stbsp__int32)n)
- 3556: 835a mv t1,s6
- 3558: 00cb5363 bge s6,a2,355e <stbsp_vsprintfcb+0x1290>
- 355c: 8332 mv t1,a2
- fw -= n;
- 355e: 40e3033b subw t1,t1,a4
- pr -= l;
- 3562: 40d7873b subw a4,a5,a3
- goto scopy;
- 3566: eaaff06f j 2c10 <stbsp_vsprintfcb+0x942>
- *s++ = stbsp__comma;
- 356a: fe578fa3 sb t0,-1(a5)
- 356e: 0709 addi a4,a4,2
- if ((fl & STBSP__TRIPLET_COMMA) && (++cs == 4)) {
- 3570: 4585 li a1,1
- 3572: bde5 j 346a <stbsp_vsprintfcb+0x119c>
- lead[0] = 1;
- 3574: 678d lui a5,0x3
- 3576: 0785 addi a5,a5,1 # 3001 <stbsp_vsprintfcb+0xd33>
- 3578: 06f11423 sh a5,104(sp)
- 357c: b4ed j 3066 <stbsp_vsprintfcb+0xd98>
- if ((f[0] != 'u') && (i64 < 0)) {
- 357e: 07500693 li a3,117
- stbsp__int64 i64 = va_arg(va, stbsp__int64);
- 3582: 000bbf03 ld t5,0(s7)
- if ((f[0] != 'u') && (i64 < 0)) {
- 3586: dcd78263 beq a5,a3,2b4a <stbsp_vsprintfcb+0x87c>
- 358a: dc0f5063 bgez t5,2b4a <stbsp_vsprintfcb+0x87c>
- fl |= STBSP__NEGATIVE;
- 358e: 08076713 ori a4,a4,128
- n64 = (stbsp__uint64)-i64;
- 3592: 41e00f33 neg t5,t5
- fl |= STBSP__NEGATIVE;
- 3596: 00070e1b sext.w t3,a4
- 359a: db0ff06f j 2b4a <stbsp_vsprintfcb+0x87c>
- lead[2] = h[0xb];
- 359e: 00b84703 lbu a4,11(a6)
- lead[0] = 2;
- 35a2: 678d lui a5,0x3
- 35a4: 0789 addi a5,a5,2 # 3002 <stbsp_vsprintfcb+0xd34>
- 35a6: 06f11423 sh a5,104(sp)
- lead[2] = h[0xb];
- 35aa: 06e10523 sb a4,106(sp)
- 35ae: bab5 j 2f2a <stbsp_vsprintfcb+0xc5c>
- sign[0] = 1;
- 35b0: 678d lui a5,0x3
- 35b2: d0178793 addi a5,a5,-767 # 2d01 <stbsp_vsprintfcb+0xa33>
- fl |= STBSP__NEGATIVE;
- 35b6: 080e6e13 ori t3,t3,128
- sign[0] = 1;
- 35ba: 06f11423 sh a5,104(sp)
- 35be: 468d li a3,3
- 35c0: 4a0d li s4,3
- 35c2: 4809 li a6,2
- 35c4: b899 j 2e1a <stbsp_vsprintfcb+0xb4c>
- sign[0] = 1;
- 35c6: 6709 lui a4,0x2
- 35c8: 0705 addi a4,a4,1 # 2001 <_vscanf_core.constprop.0+0x689>
- 35ca: 06e11423 sh a4,104(sp)
- 35ce: bae5 j 2fc6 <stbsp_vsprintfcb+0xcf8>
- if (((stbsp__uintptr)sn & 3) == 0)
- 35d0: 0e0780e3 beqz a5,3eb0 <stbsp_vsprintfcb+0x1be2>
- l = stbsp__strlen_limited(s, (pr >= 0) ? pr : ~0u);
- 35d4: 56fd li a3,-1
- 35d6: bcf9 j 30b4 <stbsp_vsprintfcb+0xde6>
- if (fw < (stbsp__int32)n)
- 35d8: 4305 li t1,1
- 35da: b249 j 2f5c <stbsp_vsprintfcb+0xc8e>
- pr = 6; // default is 6
- 35dc: 4899 li a7,6
- 35de: b801 j 2dee <stbsp_vsprintfcb+0xb20>
- h = (f[0] == 'A') ? hexu : hex;
- 35e0: 00005597 auipc a1,0x5
- 35e4: a0858593 addi a1,a1,-1528 # 7fe8 <hexu.1>
- 35e8: ff6ff06f j 2dde <stbsp_vsprintfcb+0xb10>
- h = (f[0] == 'B') ? hexu : hex;
- 35ec: 00005817 auipc a6,0x5
- 35f0: 9fc80813 addi a6,a6,-1540 # 7fe8 <hexu.1>
- 35f4: b22d j 2f1e <stbsp_vsprintfcb+0xc50>
- 35f6: 80000737 lui a4,0x80000
- 35fa: 0719 addi a4,a4,6 # ffffffff80000006 <_ZSt4cerr+0xffffffff7fff7196>
- pr = 6; // default is 6
- 35fc: 4899 li a7,6
- 35fe: e4eff06f j 2c4c <stbsp_vsprintfcb+0x97e>
- h = (f[0] == 'E') ? hexu : hex;
- 3602: 00005317 auipc t1,0x5
- 3606: 9e630313 addi t1,t1,-1562 # 7fe8 <hexu.1>
- 360a: e28ff06f j 2c32 <stbsp_vsprintfcb+0x964>
- 360e: 80000737 lui a4,0x80000
- 3612: 4a99 li s5,6
- 3614: 0715 addi a4,a4,5 # ffffffff80000005 <_ZSt4cerr+0xffffffff7fff7195>
- pr = 6;
- 3616: 4a19 li s4,6
- 3618: ee8ff06f j 2d00 <stbsp_vsprintfcb+0xa32>
- h = (f[0] == 'G') ? hexu : hex;
- 361c: 00005317 auipc t1,0x5
- 3620: 9cc30313 addi t1,t1,-1588 # 7fe8 <hexu.1>
- 3624: eb6ff06f j 2cda <stbsp_vsprintfcb+0xa0c>
- 3628: 7be6 ld s7,120(sp)
- if ((dp <= -4) || (dp > (stbsp__int32)n)) {
- 362a: 86c2 mv a3,a6
- while ((l > 1) && (pr) && (sn[l - 1] == '0')) {
- 362c: 8542 mv a0,a6
- if ((dp <= -4) || (dp > (stbsp__int32)n)) {
- 362e: 88d2 mv a7,s4
- while ((l > 1) && (pr) && (sn[l - 1] == '0')) {
- 3630: 8ade mv s5,s7
- if (pr > (stbsp__int32)l)
- 3632: 0005071b sext.w a4,a0
- 3636: 01175f63 bge a4,a7,3654 <stbsp_vsprintfcb+0x1386>
- pr = l - 1;
- 363a: fff5089b addiw a7,a0,-1
- tail[0] = 0;
- 363e: 06010823 sb zero,112(sp)
- if (fl & STBSP__NEGATIVE) {
- 3642: 70028c63 beqz t0,3d5a <stbsp_vsprintfcb+0x1a8c>
- sign[0] = 1;
- 3646: 670d lui a4,0x3
- 3648: d0170713 addi a4,a4,-767 # 2d01 <stbsp_vsprintfcb+0xa33>
- 364c: 06e11423 sh a4,104(sp)
- 3650: e3aff06f j 2c8a <stbsp_vsprintfcb+0x9bc>
- else if (pr)
- 3654: fe0885e3 beqz a7,363e <stbsp_vsprintfcb+0x1370>
- --pr; // when using %e, there is one digit before the decimal
- 3658: 38fd addiw a7,a7,-1
- 365a: b7d5 j 363e <stbsp_vsprintfcb+0x1370>
- switch (f[0]) {
- 365c: 0034c783 lbu a5,3(s1)
- f += 3;
- 3660: 048d addi s1,s1,3
- 3662: e53fe06f j 24b4 <stbsp_vsprintfcb+0x1e6>
- if (!limit || *sn == 0)
- 3666: 4601 li a2,0
- 3668: 4701 li a4,0
- 366a: 4781 li a5,0
- return (stbsp__uint32)(sn - s);
- 366c: bca5 j 30e4 <stbsp_vsprintfcb+0xe16>
- pr = 1;
- 366e: 4885 li a7,1
- 3670: cf4ff06f j 2b64 <stbsp_vsprintfcb+0x896>
- *s++ = sn[0];
- 3674: 000ac703 lbu a4,0(s5)
- 3678: 0ce10023 sb a4,192(sp)
- if (pr)
- 367c: 54088563 beqz a7,3bc6 <stbsp_vsprintfcb+0x18f8>
- *s++ = stbsp__period;
- 3680: 00005617 auipc a2,0x5
- 3684: 96464603 lbu a2,-1692(a2) # 7fe4 <stbsp__period>
- if ((l - 1) > (stbsp__uint32)pr)
- 3688: fff6871b addiw a4,a3,-1
- *s++ = stbsp__period;
- 368c: 0cc100a3 sb a2,193(sp)
- if ((l - 1) > (stbsp__uint32)pr)
- 3690: 0008851b sext.w a0,a7
- 3694: 0007061b sext.w a2,a4
- 3698: 52c57163 bgeu a0,a2,3bba <stbsp_vsprintfcb+0x18ec>
- l = pr + 1;
- 369c: 0018869b addiw a3,a7,1
- for (n = 1; n < l; n++)
- 36a0: 8746 mv a4,a7
- 36a2: 02071613 slli a2,a4,0x20
- 36a6: 9201 srli a2,a2,0x20
- 36a8: 0c210713 addi a4,sp,194
- 36ac: 0a85 addi s5,s5,1
- 36ae: 963a add a2,a2,a4
- *s++ = sn[n];
- 36b0: 000ac583 lbu a1,0(s5)
- 36b4: 0705 addi a4,a4,1
- for (n = 1; n < l; n++)
- 36b6: 0a85 addi s5,s5,1
- *s++ = sn[n];
- 36b8: feb70fa3 sb a1,-1(a4)
- for (n = 1; n < l; n++)
- 36bc: fec71ae3 bne a4,a2,36b0 <stbsp_vsprintfcb+0x13e2>
- tail[1] = h[0xe];
- 36c0: 00e34803 lbu a6,14(t1)
- dp -= 1;
- 36c4: fff7871b addiw a4,a5,-1
- tail[2] = '+';
- 36c8: 02b00593 li a1,43
- tail[1] = h[0xe];
- 36cc: 070108a3 sb a6,113(sp)
- if (dp < 0) {
- 36d0: 00075663 bgez a4,36dc <stbsp_vsprintfcb+0x140e>
- dp = -dp;
- 36d4: 4705 li a4,1
- 36d6: 9f1d subw a4,a4,a5
- tail[2] = '-';
- 36d8: 02d00593 li a1,45
- 36dc: 06b10923 sb a1,114(sp)
- n = (dp >= 100) ? 5 : 4;
- 36e0: 06300793 li a5,99
- 36e4: 4ee7d663 bge a5,a4,3bd0 <stbsp_vsprintfcb+0x1902>
- 36e8: 4595 li a1,5
- 36ea: 4f95 li t6,5
- 36ec: 4e95 li t4,5
- tail[n] = '0' + dp % 10;
- 36ee: 47a9 li a5,10
- dp /= 10;
- 36f0: 02f7433b divw t1,a4,a5
- --n;
- 36f4: fffe8f1b addiw t5,t4,-1
- tail[n] = '0' + dp % 10;
- 36f8: 020f1293 slli t0,t5,0x20
- 36fc: 220e8813 addi a6,t4,544
- 3700: 06010893 addi a7,sp,96
- 3704: 0202d293 srli t0,t0,0x20
- 3708: 01180eb3 add t4,a6,a7
- 370c: 22028813 addi a6,t0,544 # 3000220 <_ZSt4cerr+0x2ff73b0>
- 3710: 011802b3 add t0,a6,a7
- tail[0] = (char)n;
- 3714: 07f10823 sb t6,112(sp)
- if (n <= 3)
- 3718: 4a0d li s4,3
- tail[n] = '0' + dp % 10;
- 371a: 02f7673b remw a4,a4,a5
- dp /= 10;
- 371e: 0003081b sext.w a6,t1
- tail[n] = '0' + dp % 10;
- 3722: 02f36abb remw s5,t1,a5
- 3726: 0307071b addiw a4,a4,48
- 372a: deee8823 sb a4,-528(t4)
- 372e: 030a871b addiw a4,s5,48
- 3732: dee28823 sb a4,-528(t0)
- if (n <= 3)
- 3736: 014f0a63 beq t5,s4,374a <stbsp_vsprintfcb+0x147c>
- dp /= 10;
- 373a: 02f3483b divw a6,t1,a5
- tail[n] = '0' + dp % 10;
- 373e: 02f867bb remw a5,a6,a5
- 3742: 0307879b addiw a5,a5,48
- 3746: 06f109a3 sb a5,115(sp)
- tz = pr - (l - 1);
- 374a: 2505 addiw a0,a0,1
- l = (stbsp__uint32)(s - (num + 64));
- 374c: 0c010a93 addi s5,sp,192
- cs = 1 + (3 << 24); // how many tens
- 3750: 030002b7 lui t0,0x3000
- tz = pr - (l - 1);
- 3754: 40d508bb subw a7,a0,a3
- 3758: d2c2 sw a6,100(sp)
- l = (stbsp__uint32)(s - (num + 64));
- 375a: 415607b3 sub a5,a2,s5
- cs = 1 + (3 << 24); // how many tens
- 375e: 0285 addi t0,t0,1 # 3000001 <_ZSt4cerr+0x2ff7191>
- 3760: bbc9 j 3532 <stbsp_vsprintfcb+0x1264>
- 3762: fc2e sd a1,56(sp)
- 3764: d0b2 sw a2,96(sp)
- while ((l > 1) && (pr) && (sn[l - 1] == '0')) {
- 3766: 8536 mv a0,a3
- 3768: e2cff06f j 2d94 <stbsp_vsprintfcb+0xac6>
- flt_lead:
- 376c: 4581 li a1,0
- 376e: 4f81 li t6,0
- 3770: b3c9 j 3532 <stbsp_vsprintfcb+0x1264>
- n = pr + lead[0] + tail[0] + tz;
- 3772: 06814a03 lbu s4,104(sp)
- 3776: 000a0f9b sext.w t6,s4
- 377a: b901 j 338a <stbsp_vsprintfcb+0x10bc>
- if ((f[1] == '6') && (f[2] == '4')) {
- 377c: 0024c683 lbu a3,2(s1)
- 3780: 03400713 li a4,52
- 3784: 00e68463 beq a3,a4,378c <stbsp_vsprintfcb+0x14be>
- 3788: e2bfe06f j 25b2 <stbsp_vsprintfcb+0x2e4>
- switch (f[0]) {
- 378c: 0034c783 lbu a5,3(s1)
- fl |= ((sizeof(long) == 8) ? STBSP__INTMAX : 0);
- 3790: 020e6e13 ori t3,t3,32
- f += 3;
- 3794: 048d addi s1,s1,3
- 3796: d1ffe06f j 24b4 <stbsp_vsprintfcb+0x1e6>
- if (pr < (stbsp__int32)l)
- 379a: 0006879b sext.w a5,a3
- n = pr + lead[0] + tail[0] + tz;
- 379e: 06814a03 lbu s4,104(sp)
- if (pr < (stbsp__int32)l)
- 37a2: fff7c793 not a5,a5
- 37a6: 97fd srai a5,a5,0x3f
- 37a8: 8ff5 and a5,a5,a3
- n = pr + lead[0] + tail[0] + tz;
- 37aa: 00fa063b addw a2,s4,a5
- s = (char *)sn;
- 37ae: 7ae6 ld s5,120(sp)
- n = pr + lead[0] + tail[0] + tz;
- 37b0: 8732 mv a4,a2
- if ((fl & STBSP__LEFTJUST) == 0) {
- 37b2: 001e7513 andi a0,t3,1
- if (pr < (stbsp__int32)l)
- 37b6: 2781 sext.w a5,a5
- if (fw < (stbsp__int32)n)
- 37b8: 835a mv t1,s6
- 37ba: 00cb5363 bge s6,a2,37c0 <stbsp_vsprintfcb+0x14f2>
- 37be: 8332 mv t1,a2
- fw -= n;
- 37c0: 40e3033b subw t1,t1,a4
- goto scopy;
- 37c4: 4f81 li t6,0
- pr -= l;
- 37c6: 40d7873b subw a4,a5,a3
- cs = 0;
- 37ca: 4281 li t0,0
- tz = 0;
- 37cc: 4881 li a7,0
- goto scopy;
- 37ce: c42ff06f j 2c10 <stbsp_vsprintfcb+0x942>
- cs = (int)(s - (num + 64)) + (3 << 24); // cs is how many tens
- 37d2: 415705b3 sub a1,a4,s5
- 37d6: 030002b7 lui t0,0x3000
- 37da: 00b282bb addw t0,t0,a1
- l = pr - n;
- 37de: 0008859b sext.w a1,a7
- if (pr)
- 37e2: 42088763 beqz a7,3c10 <stbsp_vsprintfcb+0x1942>
- *s++ = stbsp__period;
- 37e6: 0cca4f83 lbu t6,204(s4)
- if ((l - dp) > (stbsp__uint32)pr)
- 37ea: 41d6833b subw t1,a3,t4
- *s++ = stbsp__period;
- 37ee: 00280713 addi a4,a6,2
- 37f2: 01f800a3 sb t6,1(a6)
- if ((l - dp) > (stbsp__uint32)pr)
- 37f6: 4065ed63 bltu a1,t1,3c10 <stbsp_vsprintfcb+0x1942>
- while (n < l) {
- 37fa: 5ed57863 bgeu a0,a3,3dea <stbsp_vsprintfcb+0x1b1c>
- 37fe: 40c687bb subw a5,a3,a2
- 3802: 37fd addiw a5,a5,-1
- 3804: 1782 slli a5,a5,0x20
- 3806: 9381 srli a5,a5,0x20
- 3808: 1602 slli a2,a2,0x20
- 380a: 9201 srli a2,a2,0x20
- 380c: 0785 addi a5,a5,1
- 380e: 967a add a2,a2,t5
- 3810: 97ba add a5,a5,a4
- *s++ = sn[n];
- 3812: 00064503 lbu a0,0(a2)
- 3816: 0705 addi a4,a4,1
- while (n < l) {
- 3818: 0605 addi a2,a2,1
- *s++ = sn[n];
- 381a: fea70fa3 sb a0,-1(a4)
- while (n < l) {
- 381e: fef71ae3 bne a4,a5,3812 <stbsp_vsprintfcb+0x1544>
- tz = pr - (l - dp);
- 3822: 01d585bb addw a1,a1,t4
- 3826: 40d588bb subw a7,a1,a3
- l = (stbsp__uint32)(s - (num + 64));
- 382a: 415787b3 sub a5,a5,s5
- 382e: b99d j 34a4 <stbsp_vsprintfcb+0x11d6>
- fl |= STBSP__NEGATIVE;
- 3830: 080e6e13 ori t3,t3,128
- tail[0] = 0;
- 3834: 06010823 sb zero,112(sp)
- if (fl & STBSP__NEGATIVE) {
- 3838: b539 j 3646 <stbsp_vsprintfcb+0x1378>
- tail[0] = (char)n;
- 383a: 4799 li a5,6
- tail[n] = '0' + dp % 10;
- 383c: 06b10b23 sb a1,118(sp)
- tail[0] = (char)n;
- 3840: 06f10823 sb a5,112(sp)
- tail[n] = '0' + dp % 10;
- 3844: 4819 li a6,6
- 3846: 4f99 li t6,6
- n = (dp >= 1000) ? 6 : ((dp >= 100) ? 5 : ((dp >= 10) ? 4 : 3));
- 3848: 4599 li a1,6
- dp /= 10;
- 384a: 4f29 li t5,10
- if (n <= 3)
- 384c: 428d li t0,3
- 384e: 87b2 mv a5,a2
- dp /= 10;
- 3850: 03e7c7bb divw a5,a5,t5
- --n;
- 3854: 35fd addiw a1,a1,-1
- tail[n] = '0' + dp % 10;
- 3856: 02059613 slli a2,a1,0x20
- 385a: 9201 srli a2,a2,0x20
- 385c: 06010e93 addi t4,sp,96
- 3860: 22060613 addi a2,a2,544
- 3864: 9676 add a2,a2,t4
- 3866: 03e7eebb remw t4,a5,t5
- 386a: 030e8e9b addiw t4,t4,48
- 386e: dfd60823 sb t4,-528(a2)
- if (n <= 3)
- 3872: fc559fe3 bne a1,t0,3850 <stbsp_vsprintfcb+0x1582>
- 3876: e6aff06f j 2ee0 <stbsp_vsprintfcb+0xc12>
- *s++ = h[(n64 >> 60) & 15];
- 387a: 93f1 srli a5,a5,0x3c
- 387c: 97ae add a5,a5,a1
- 387e: 0007c303 lbu t1,0(a5)
- lead[1 + lead[0]] = '0';
- 3882: 1088 addi a0,sp,96
- 3884: 22080793 addi a5,a6,544
- 3888: 97aa add a5,a5,a0
- 388a: 03000513 li a0,48
- 388e: dea78423 sb a0,-536(a5)
- lead[2 + lead[0]] = 'x';
- 3892: 22068793 addi a5,a3,544
- 3896: 1094 addi a3,sp,96
- 3898: 96be add a3,a3,a5
- *s++ = stbsp__period;
- 389a: 00004517 auipc a0,0x4
- 389e: 74a54503 lbu a0,1866(a0) # 7fe4 <stbsp__period>
- lead[2 + lead[0]] = 'x';
- 38a2: 07800813 li a6,120
- sn = s;
- 38a6: 0c210793 addi a5,sp,194
- lead[2 + lead[0]] = 'x';
- 38aa: df068423 sb a6,-536(a3)
- *s++ = stbsp__period;
- 38ae: 0ca100a3 sb a0,193(sp)
- lead[0] += 2;
- 38b2: 07410423 sb s4,104(sp)
- *s++ = h[(n64 >> 60) & 15];
- 38b6: 0c610023 sb t1,192(sp)
- n64 <<= 4;
- 38ba: 0732 slli a4,a4,0xc
- sn = s;
- 38bc: fcbe sd a5,120(sp)
- n = pr;
- 38be: 0008869b sext.w a3,a7
- while (n--) {
- 38c2: 4831 li a6,12
- if (n > 13)
- 38c4: 4535 li a0,13
- tz = pr - n;
- 38c6: 40a688bb subw a7,a3,a0
- while (n--) {
- 38ca: 02081313 slli t1,a6,0x20
- 38ce: 02035313 srli t1,t1,0x20
- 38d2: 22030693 addi a3,t1,544
- 38d6: 1088 addi a0,sp,96
- 38d8: 9536 add a0,a0,a3
- 38da: e4350513 addi a0,a0,-445
- *s++ = h[(n64 >> 60) & 15];
- 38de: 03c75693 srli a3,a4,0x3c
- 38e2: 96ae add a3,a3,a1
- 38e4: 0006c683 lbu a3,0(a3)
- 38e8: 0785 addi a5,a5,1
- n64 <<= 4;
- 38ea: 0712 slli a4,a4,0x4
- *s++ = h[(n64 >> 60) & 15];
- 38ec: fed78fa3 sb a3,-1(a5)
- while (n--) {
- 38f0: fea797e3 bne a5,a0,38de <stbsp_vsprintfcb+0x1610>
- l = (int)(s - (num + 64));
- 38f4: 280d addiw a6,a6,3
- 38f6: 0008069b sext.w a3,a6
- if (pr < (stbsp__int32)l)
- 38fa: fff6c713 not a4,a3
- 38fe: 977d srai a4,a4,0x3f
- 3900: 00e87733 and a4,a6,a4
- dp = (int)(s - sn);
- 3904: 0013051b addiw a0,t1,1
- if (pr < (stbsp__int32)l)
- 3908: 0007031b sext.w t1,a4
- pr -= l;
- 390c: 4107073b subw a4,a4,a6
- 3910: d76ff06f j 2e86 <stbsp_vsprintfcb+0xbb8>
- *--s = stbsp__comma;
- 3914: 00004a17 auipc s4,0x4
- 3918: 604a0a13 addi s4,s4,1540 # 7f18 <stbsp__digitpair>
- if (n64 >= 100000000) {
- 391c: 05f5e7b7 lui a5,0x5f5e
- 3920: 0ff78793 addi a5,a5,255 # 5f5e0ff <_ZSt4cerr+0x5f5528f>
- n = (stbsp__uint32)(n64 % 100000000);
- 3924: 05f5e637 lui a2,0x5f5e
- *--s = stbsp__comma;
- 3928: 0cda4b83 lbu s7,205(s4)
- if (n64 >= 100000000) {
- 392c: e83e sd a5,16(sp)
- n = (stbsp__uint32)(n64 % 100000000);
- 392e: 10060793 addi a5,a2,256 # 5f5e100 <_ZSt4cerr+0x5f55290>
- l = 0;
- 3932: d082 sw zero,96(sp)
- if ((fl & STBSP__TRIPLET_COMMA) == 0) {
- 3934: 040e7813 andi a6,t3,64
- 3938: 4701 li a4,0
- 393a: 4281 li t0,0
- s = num + STBSP__NUMSZ;
- 393c: 28010a93 addi s5,sp,640
- n = (stbsp__uint32)(n64 % 100000000);
- 3940: ec3e sd a5,24(sp)
- if ((fl & STBSP__TRIPLET_COMMA) && (l++ == 3)) {
- 3942: 430d li t1,3
- n /= 10;
- 3944: 45a9 li a1,10
- while (n) {
- 3946: 4ea5 li t4,9
- *(stbsp__uint16 *)s = *(stbsp__uint16 *)&stbsp__digitpair.pair[(n % 100) * 2];
- 3948: 06400f93 li t6,100
- if (n64 >= 100000000) {
- 394c: 67c2 ld a5,16(sp)
- char *o = s - 8;
- 394e: ff8a8513 addi a0,s5,-8
- if (n64 >= 100000000) {
- 3952: 0fe7f763 bgeu a5,t5,3a40 <stbsp_vsprintfcb+0x1772>
- n = (stbsp__uint32)(n64 % 100000000);
- 3956: 6662 ld a2,24(sp)
- 3958: 02cf77b3 remu a5,t5,a2
- n64 /= 100000000;
- 395c: 02cf5f33 divu t5,t5,a2
- if ((fl & STBSP__TRIPLET_COMMA) == 0) {
- 3960: 0e080463 beqz a6,3a48 <stbsp_vsprintfcb+0x177a>
- while (n) {
- 3964: cb85 beqz a5,3994 <stbsp_vsprintfcb+0x16c6>
- *--s = stbsp__comma;
- 3966: 1afd addi s5,s5,-1
- if ((fl & STBSP__TRIPLET_COMMA) && (l++ == 3)) {
- 3968: 00671763 bne a4,t1,3976 <stbsp_vsprintfcb+0x16a8>
- --o;
- 396c: 017a8023 sb s7,0(s5)
- 3970: 157d addi a0,a0,-1
- *--s = stbsp__comma;
- 3972: 1afd addi s5,s5,-1
- l = 0;
- 3974: 4701 li a4,0
- if ((fl & STBSP__TRIPLET_COMMA) && (l++ == 3)) {
- 3976: 2705 addiw a4,a4,1
- *--s = (char)(n % 10) + '0';
- 3978: 02b7f63b remuw a2,a5,a1
- 397c: 0306061b addiw a2,a2,48
- 3980: 00ca8023 sb a2,0(s5)
- n /= 10;
- 3984: 02b7d63b divuw a2,a5,a1
- while (n) {
- 3988: 00fef563 bgeu t4,a5,3992 <stbsp_vsprintfcb+0x16c4>
- *--s = stbsp__comma;
- 398c: 1afd addi s5,s5,-1
- 398e: 87b2 mv a5,a2
- 3990: bfe1 j 3968 <stbsp_vsprintfcb+0x169a>
- while (n) {
- 3992: 4285 li t0,1
- if (n64 == 0) {
- 3994: 020f0063 beqz t5,39b4 <stbsp_vsprintfcb+0x16e6>
- while (s != o)
- 3998: fb550ae3 beq a0,s5,394c <stbsp_vsprintfcb+0x167e>
- *--s = stbsp__comma;
- 399c: 1afd addi s5,s5,-1
- if ((fl & STBSP__TRIPLET_COMMA) && (l++ == 3)) {
- 399e: 00080663 beqz a6,39aa <stbsp_vsprintfcb+0x16dc>
- 39a2: 08670863 beq a4,t1,3a32 <stbsp_vsprintfcb+0x1764>
- 39a6: 2705 addiw a4,a4,1
- 39a8: 4285 li t0,1
- *--s = '0';
- 39aa: 03000793 li a5,48
- 39ae: 00fa8023 sb a5,0(s5)
- 39b2: b7dd j 3998 <stbsp_vsprintfcb+0x16ca>
- 39b4: 00028363 beqz t0,39ba <stbsp_vsprintfcb+0x16ec>
- 39b8: d0ba sw a4,96(sp)
- if ((s[0] == '0') && (s != (num + STBSP__NUMSZ)))
- 39ba: 000ac703 lbu a4,0(s5)
- 39be: 03000793 li a5,48
- 39c2: 34f70b63 beq a4,a5,3d18 <stbsp_vsprintfcb+0x1a4a>
- l = (stbsp__uint32)((num + STBSP__NUMSZ) - s);
- 39c6: 051c addi a5,sp,640
- 39c8: 415786bb subw a3,a5,s5
- tail[0] = 0;
- 39cc: 06010823 sb zero,112(sp)
- if (fl & STBSP__NEGATIVE) {
- 39d0: 080e7713 andi a4,t3,128
- 39d4: 87f2 mv a5,t3
- 39d6: 32070863 beqz a4,3d06 <stbsp_vsprintfcb+0x1a38>
- 39da: 678d lui a5,0x3
- 39dc: d017879b addiw a5,a5,-767 # 2d01 <stbsp_vsprintfcb+0xa33>
- sign[0] = 1;
- 39e0: 06f11423 sh a5,104(sp)
- 39e4: 4705 li a4,1
- 39e6: 4a05 li s4,1
- l = (stbsp__uint32)((num + STBSP__NUMSZ) - s);
- 39e8: d0b6 sw a3,96(sp)
- if (l == 0) {
- 39ea: 30068163 beqz a3,3cec <stbsp_vsprintfcb+0x1a1e>
- cs = l + (3 << 24);
- 39ee: 030002b7 lui t0,0x3000
- 39f2: 00d282bb addw t0,t0,a3
- if (pr < (stbsp__int32)l)
- 39f6: 0006861b sext.w a2,a3
- if (pr < 0)
- 39fa: fff8c793 not a5,a7
- 39fe: 97fd srai a5,a5,0x3f
- if (pr < (stbsp__int32)l)
- 3a00: 00f8f7b3 and a5,a7,a5
- 3a04: 0007859b sext.w a1,a5
- 3a08: 00c5d363 bge a1,a2,3a0e <stbsp_vsprintfcb+0x1740>
- 3a0c: 87b2 mv a5,a2
- n = pr + lead[0] + tail[0] + tz;
- 3a0e: 00f7063b addw a2,a4,a5
- 3a12: 8732 mv a4,a2
- if (pr < (stbsp__int32)l)
- 3a14: 2781 sext.w a5,a5
- if ((fl & STBSP__LEFTJUST) == 0) {
- 3a16: 001e7513 andi a0,t3,1
- if (fw < (stbsp__int32)n)
- 3a1a: 835a mv t1,s6
- 3a1c: 00cb5363 bge s6,a2,3a22 <stbsp_vsprintfcb+0x1754>
- 3a20: 8332 mv t1,a2
- fw -= n;
- 3a22: 40e3033b subw t1,t1,a4
- scopy:
- 3a26: 4f81 li t6,0
- pr -= l;
- 3a28: 40d7873b subw a4,a5,a3
- tz = 0;
- 3a2c: 4881 li a7,0
- scopy:
- 3a2e: 9e2ff06f j 2c10 <stbsp_vsprintfcb+0x942>
- *--s = stbsp__comma;
- 3a32: 87de mv a5,s7
- --o;
- 3a34: 157d addi a0,a0,-1
- l = 0;
- 3a36: 4701 li a4,0
- --o;
- 3a38: 4285 li t0,1
- 3a3a: 00fa8023 sb a5,0(s5)
- 3a3e: bfa9 j 3998 <stbsp_vsprintfcb+0x16ca>
- n = (stbsp__uint32)n64;
- 3a40: 000f079b sext.w a5,t5
- n64 = 0;
- 3a44: 4f01 li t5,0
- 3a46: bf29 j 3960 <stbsp_vsprintfcb+0x1692>
- 3a48: f046 sd a7,32(sp)
- *(stbsp__uint16 *)s = *(stbsp__uint16 *)&stbsp__digitpair.pair[(n % 100) * 2];
- 3a4a: 03f7f63b remuw a2,a5,t6
- s -= 2;
- 3a4e: 1af9 addi s5,s5,-2
- *(stbsp__uint16 *)s = *(stbsp__uint16 *)&stbsp__digitpair.pair[(n % 100) * 2];
- 3a50: 0007889b sext.w a7,a5
- 3a54: 2605 addiw a2,a2,1
- 3a56: 0016161b slliw a2,a2,0x1
- 3a5a: 1602 slli a2,a2,0x20
- 3a5c: 9201 srli a2,a2,0x20
- 3a5e: 9652 add a2,a2,s4
- 3a60: 00065603 lhu a2,0(a2)
- n /= 100;
- 3a64: 03f7d7bb divuw a5,a5,t6
- *(stbsp__uint16 *)s = *(stbsp__uint16 *)&stbsp__digitpair.pair[(n % 100) * 2];
- 3a68: 00ca9023 sh a2,0(s5)
- } while (n);
- 3a6c: 06300613 li a2,99
- 3a70: fd166de3 bltu a2,a7,3a4a <stbsp_vsprintfcb+0x177c>
- 3a74: 7882 ld a7,32(sp)
- if (n64 == 0) {
- 3a76: f20f11e3 bnez t5,3998 <stbsp_vsprintfcb+0x16ca>
- 3a7a: bf2d j 39b4 <stbsp_vsprintfcb+0x16e6>
- *(stbsp__uint32 *)bf = 0x20202020;
- 3a7c: 20202b37 lui s6,0x20202
- stbsp__cb_buf_clamp(i, fw);
- 3a80: 854a mv a0,s2
- *bf++ = ' ';
- 3a82: 02000a93 li s5,32
- *(stbsp__uint32 *)bf = 0x20202020;
- 3a86: 020b0b13 addi s6,s6,32 # 20202020 <_ZSt4cerr+0x201f91b0>
- stbsp__chk_cb_buf(1);
- 3a8a: 1fe00a13 li s4,510
- stbsp__cb_buf_clamp(i, fw);
- 3a8e: 20000b93 li s7,512
- 3a92: 891a mv s2,t1
- 3a94: 0a098063 beqz s3,3b34 <stbsp_vsprintfcb+0x1866>
- 3a98: 40a40633 sub a2,s0,a0
- 3a9c: 40cb87bb subw a5,s7,a2
- 3aa0: 873e mv a4,a5
- 3aa2: 00f95363 bge s2,a5,3aa8 <stbsp_vsprintfcb+0x17da>
- 3aa6: 874a mv a4,s2
- 3aa8: 0007079b sext.w a5,a4
- fw -= i;
- 3aac: 40e9093b subw s2,s2,a4
- while (i) {
- 3ab0: e799 bnez a5,3abe <stbsp_vsprintfcb+0x17f0>
- 3ab2: a281 j 3bf2 <stbsp_vsprintfcb+0x1924>
- *bf++ = ' ';
- 3ab4: 01540023 sb s5,0(s0)
- --i;
- 3ab8: 37fd addiw a5,a5,-1
- *bf++ = ' ';
- 3aba: 0405 addi s0,s0,1
- while (i) {
- 3abc: cba1 beqz a5,3b0c <stbsp_vsprintfcb+0x183e>
- if ((((stbsp__uintptr)bf) & 3) == 0)
- 3abe: 00347713 andi a4,s0,3
- 3ac2: fb6d bnez a4,3ab4 <stbsp_vsprintfcb+0x17e6>
- while (i >= 4) {
- 3ac4: 470d li a4,3
- 3ac6: 40f75363 bge a4,a5,3ecc <stbsp_vsprintfcb+0x1bfe>
- 3aca: ffc7869b addiw a3,a5,-4
- 3ace: 0026d79b srliw a5,a3,0x2
- 3ad2: 0017871b addiw a4,a5,1
- 3ad6: 070a slli a4,a4,0x2
- 3ad8: 9722 add a4,a4,s0
- *(stbsp__uint32 *)bf = 0x20202020;
- 3ada: 01642023 sw s6,0(s0)
- bf += 4;
- 3ade: 0411 addi s0,s0,4
- while (i >= 4) {
- 3ae0: fee41de3 bne s0,a4,3ada <stbsp_vsprintfcb+0x180c>
- 3ae4: 0027979b slliw a5,a5,0x2
- 3ae8: 40f687bb subw a5,a3,a5
- while (i--)
- 3aec: fff7869b addiw a3,a5,-1
- 3af0: cf91 beqz a5,3b0c <stbsp_vsprintfcb+0x183e>
- 3af2: 9fa1 addw a5,a5,s0
- *bf++ = ' ';
- 3af4: 0705 addi a4,a4,1
- while (i--)
- 3af6: 0007061b sext.w a2,a4
- *bf++ = ' ';
- 3afa: ff570fa3 sb s5,-1(a4)
- while (i--)
- 3afe: fec79be3 bne a5,a2,3af4 <stbsp_vsprintfcb+0x1826>
- 3b02: 2685 addiw a3,a3,1
- 3b04: 02069793 slli a5,a3,0x20
- 3b08: 9381 srli a5,a5,0x20
- 3b0a: 943e add s0,s0,a5
- stbsp__chk_cb_buf(1);
- 3b0c: 00098f63 beqz s3,3b2a <stbsp_vsprintfcb+0x185c>
- 3b10: 40a4063b subw a2,s0,a0
- 3b14: 00ca5b63 bge s4,a2,3b2a <stbsp_vsprintfcb+0x185c>
- 3b18: 65a2 ld a1,8(sp)
- 3b1a: e81e sd t2,16(sp)
- 3b1c: 00cd0d3b addw s10,s10,a2
- 3b20: 9982 jalr s3
- 3b22: 80050be3 beqz a0,3338 <stbsp_vsprintfcb+0x106a>
- 3b26: 63c2 ld t2,16(sp)
- 3b28: 842a mv s0,a0
- while (fw) {
- 3b2a: f60915e3 bnez s2,3a94 <stbsp_vsprintfcb+0x17c6>
- 3b2e: 892a mv s2,a0
- 3b30: f21fe06f j 2a50 <stbsp_vsprintfcb+0x782>
- stbsp__cb_buf_clamp(i, fw);
- 3b34: 87ca mv a5,s2
- fw -= i;
- 3b36: 4901 li s2,0
- if ((((stbsp__uintptr)bf) & 3) == 0)
- 3b38: b759 j 3abe <stbsp_vsprintfcb+0x17f0>
- } else if (fl & STBSP__LEADINGPLUS) {
- 3b3a: 002e7713 andi a4,t3,2
- 3b3e: 94070663 beqz a4,2c8a <stbsp_vsprintfcb+0x9bc>
- sign[0] = 1;
- 3b42: 670d lui a4,0x3
- 3b44: b0170713 addi a4,a4,-1279 # 2b01 <stbsp_vsprintfcb+0x833>
- 3b48: 06e11423 sh a4,104(sp)
- 3b4c: 93eff06f j 2c8a <stbsp_vsprintfcb+0x9bc>
- if (((stbsp__uintptr)sn & 3) == 0)
- 3b50: 87d6 mv a5,s5
- while (limit >= 4) {
- 3b52: 470d li a4,3
- 3b54: 22d77763 bgeu a4,a3,3d82 <stbsp_vsprintfcb+0x1ab4>
- if ((v - 0x01010101) & (~v) & 0x80808080UL)
- 3b58: feff05b7 lui a1,0xfeff0
- 3b5c: 80808637 lui a2,0x80808
- 3b60: eff5859b addiw a1,a1,-257 # fffffffffefefeff <_ZSt4cerr+0xfffffffffefe708f>
- 3b64: 08060613 addi a2,a2,128 # ffffffff80808080 <_ZSt4cerr+0xffffffff807ff210>
- while (limit >= 4) {
- 3b68: 480d li a6,3
- 3b6a: a029 j 3b74 <stbsp_vsprintfcb+0x18a6>
- limit -= 4;
- 3b6c: 36f1 addiw a3,a3,-4
- sn += 4;
- 3b6e: 0791 addi a5,a5,4
- while (limit >= 4) {
- 3b70: 20d87963 bgeu a6,a3,3d82 <stbsp_vsprintfcb+0x1ab4>
- stbsp__uint32 v = *(stbsp__uint32 *)sn;
- 3b74: 4398 lw a4,0(a5)
- if ((v - 0x01010101) & (~v) & 0x80808080UL)
- 3b76: 00b7053b addw a0,a4,a1
- 3b7a: fff74713 not a4,a4
- 3b7e: 8f69 and a4,a4,a0
- 3b80: 8f71 and a4,a4,a2
- 3b82: 2701 sext.w a4,a4
- 3b84: d765 beqz a4,3b6c <stbsp_vsprintfcb+0x189e>
- 3b86: 02069713 slli a4,a3,0x20
- 3b8a: 9301 srli a4,a4,0x20
- 3b8c: 973e add a4,a4,a5
- 3b8e: a021 j 3b96 <stbsp_vsprintfcb+0x18c8>
- ++sn;
- 3b90: 0785 addi a5,a5,1
- while (limit && *sn) {
- 3b92: 00e78663 beq a5,a4,3b9e <stbsp_vsprintfcb+0x18d0>
- 3b96: 0007c683 lbu a3,0(a5)
- 3b9a: fafd bnez a3,3b90 <stbsp_vsprintfcb+0x18c2>
- 3b9c: 873e mv a4,a5
- return (stbsp__uint32)(sn - s);
- 3b9e: 41570733 sub a4,a4,s5
- 3ba2: 0007069b sext.w a3,a4
- if (pr < (stbsp__int32)l)
- 3ba6: fff6c793 not a5,a3
- 3baa: 97fd srai a5,a5,0x3f
- 3bac: 8f7d and a4,a4,a5
- 3bae: 0007079b sext.w a5,a4
- n = pr + lead[0] + tail[0] + tz;
- 3bb2: 863e mv a2,a5
- pr -= l;
- 3bb4: 9f15 subw a4,a4,a3
- return (stbsp__uint32)(sn - s);
- 3bb6: d2eff06f j 30e4 <stbsp_vsprintfcb+0xe16>
- for (n = 1; n < l; n++)
- 3bba: 4605 li a2,1
- 3bbc: aed663e3 bltu a2,a3,36a2 <stbsp_vsprintfcb+0x13d4>
- 3bc0: 0c210613 addi a2,sp,194
- 3bc4: bcf5 j 36c0 <stbsp_vsprintfcb+0x13f2>
- l = pr + 1;
- 3bc6: 4685 li a3,1
- if ((l - 1) > (stbsp__uint32)pr)
- 3bc8: 4501 li a0,0
- *s++ = sn[0];
- 3bca: 0c110613 addi a2,sp,193
- 3bce: bccd j 36c0 <stbsp_vsprintfcb+0x13f2>
- 3bd0: 4591 li a1,4
- 3bd2: 4f91 li t6,4
- n = (dp >= 100) ? 5 : 4;
- 3bd4: 4e91 li t4,4
- 3bd6: be21 j 36ee <stbsp_vsprintfcb+0x1420>
- 3bd8: 4a85 li s5,1
- 3bda: 80000737 lui a4,0x80000
- pr = 1; // default is 6
- 3bde: 4a05 li s4,1
- 3be0: 920ff06f j 2d00 <stbsp_vsprintfcb+0xa32>
- dp = (n64) ? -1022 : 0;
- 3be4: 4601 li a2,0
- 3be6: c119 beqz a0,3bec <stbsp_vsprintfcb+0x191e>
- 3be8: c0200613 li a2,-1022
- *bits = b & ((((stbsp__uint64)1) << 52) - 1);
- 3bec: 872a mv a4,a0
- 3bee: a3aff06f j 2e28 <stbsp_vsprintfcb+0xb5a>
- stbsp__chk_cb_buf(1);
- 3bf2: 2601 sext.w a2,a2
- 3bf4: 1fe00793 li a5,510
- 3bf8: f2c7c0e3 blt a5,a2,3b18 <stbsp_vsprintfcb+0x184a>
- 3bfc: bd61 j 3a94 <stbsp_vsprintfcb+0x17c6>
- tail[0] = (char)n;
- 3bfe: 4795 li a5,5
- tail[n] = '0' + dp % 10;
- 3c00: 06b10aa3 sb a1,117(sp)
- tail[0] = (char)n;
- 3c04: 06f10823 sb a5,112(sp)
- tail[n] = '0' + dp % 10;
- 3c08: 4815 li a6,5
- 3c0a: 4f95 li t6,5
- n = (dp >= 1000) ? 6 : ((dp >= 100) ? 5 : ((dp >= 10) ? 4 : 3));
- 3c0c: 4595 li a1,5
- 3c0e: b935 j 384a <stbsp_vsprintfcb+0x157c>
- l = pr + dp;
- 3c10: 011786bb addw a3,a5,a7
- 3c14: d0b6 sw a3,96(sp)
- 3c16: b6d5 j 37fa <stbsp_vsprintfcb+0x152c>
- s = (char *)"null";
- 3c18: 00002a97 auipc s5,0x2
- 3c1c: 5c8a8a93 addi s5,s5,1480 # 61e0 <_GLOBAL__sub_I__ZSt3cin+0x1f0>
- 3c20: c80ff06f j 30a0 <stbsp_vsprintfcb+0xdd2>
- } else if (fl & STBSP__LEADINGPLUS) {
- 3c24: 002e7793 andi a5,t3,2
- 3c28: 1c079c63 bnez a5,3e00 <stbsp_vsprintfcb+0x1b32>
- sign[0] = 0;
- 3c2c: 4689 li a3,2
- 3c2e: 4a09 li s4,2
- 3c30: 4805 li a6,1
- 3c32: 9e8ff06f j 2e1a <stbsp_vsprintfcb+0xb4c>
- sign[0] = 1;
- 3c36: 670d lui a4,0x3
- 3c38: b0170713 addi a4,a4,-1279 # 2b01 <stbsp_vsprintfcb+0x833>
- 3c3c: 06e11423 sh a4,104(sp)
- 3c40: b86ff06f j 2fc6 <stbsp_vsprintfcb+0xcf8>
- pr = 0;
- 3c44: 4881 li a7,0
- 3c46: f1ffe06f j 2b64 <stbsp_vsprintfcb+0x896>
- *s++ = '0';
- 3c4a: 03000713 li a4,48
- 3c4e: 0ce10023 sb a4,192(sp)
- if (pr)
- 3c52: 1a088c63 beqz a7,3e0a <stbsp_vsprintfcb+0x1b3c>
- *s++ = stbsp__period;
- 3c56: 00004717 auipc a4,0x4
- 3c5a: 38e74703 lbu a4,910(a4) # 7fe4 <stbsp__period>
- n = -dp;
- 3c5e: 40f007bb negw a5,a5
- *s++ = stbsp__period;
- 3c62: 0ce100a3 sb a4,193(sp)
- if ((stbsp__int32)n > pr)
- 3c66: 0007871b sext.w a4,a5
- 3c6a: 00e8d363 bge a7,a4,3c70 <stbsp_vsprintfcb+0x19a2>
- 3c6e: 87c6 mv a5,a7
- 3c70: 0007871b sext.w a4,a5
- if ((stbsp__int32)(l + n) > pr)
- 3c74: 00d7833b addw t1,a5,a3
- 3c78: 883a mv a6,a4
- while (i) {
- 3c7a: 0c210793 addi a5,sp,194
- *s++ = '0';
- 3c7e: 03000513 li a0,48
- while (i) {
- 3c82: e711 bnez a4,3c8e <stbsp_vsprintfcb+0x19c0>
- 3c84: a271 j 3e10 <stbsp_vsprintfcb+0x1b42>
- if ((((stbsp__uintptr)s) & 3) == 0)
- 3c86: 0037f613 andi a2,a5,3
- 3c8a: 18060563 beqz a2,3e14 <stbsp_vsprintfcb+0x1b46>
- *s++ = '0';
- 3c8e: 85ba mv a1,a4
- 3c90: 00a78023 sb a0,0(a5)
- --i;
- 3c94: 377d addiw a4,a4,-1
- *s++ = '0';
- 3c96: 0785 addi a5,a5,1
- while (i) {
- 3c98: f77d bnez a4,3c86 <stbsp_vsprintfcb+0x19b8>
- if ((stbsp__int32)(l + n) > pr)
- 3c9a: 0003071b sext.w a4,t1
- 3c9e: 4108863b subw a2,a7,a6
- 3ca2: 00e8d563 bge a7,a4,3cac <stbsp_vsprintfcb+0x19de>
- l = pr - n;
- 3ca6: 0006069b sext.w a3,a2
- 3caa: d0b2 sw a2,96(sp)
- while (i) {
- 3cac: c68d beqz a3,3cd6 <stbsp_vsprintfcb+0x1a08>
- 3cae: 7566 ld a0,120(sp)
- 3cb0: 02069813 slli a6,a3,0x20
- 3cb4: 02085813 srli a6,a6,0x20
- 3cb8: 01078eb3 add t4,a5,a6
- 3cbc: 85aa mv a1,a0
- 3cbe: 873e mv a4,a5
- *s++ = *sn++;
- 3cc0: 0005c883 lbu a7,0(a1)
- 3cc4: 0705 addi a4,a4,1
- while (i) {
- 3cc6: 0585 addi a1,a1,1
- *s++ = *sn++;
- 3cc8: ff170fa3 sb a7,-1(a4)
- while (i) {
- 3ccc: ffd71ae3 bne a4,t4,3cc0 <stbsp_vsprintfcb+0x19f2>
- 3cd0: 9542 add a0,a0,a6
- 3cd2: 97c2 add a5,a5,a6
- 3cd4: fcaa sd a0,120(sp)
- l = (stbsp__uint32)(s - (num + 64));
- 3cd6: 0c010a93 addi s5,sp,192
- cs = 1 + (3 << 24); // how many tens did we write (for commas below)
- 3cda: 030002b7 lui t0,0x3000
- tz = pr - (n + l);
- 3cde: 40d608bb subw a7,a2,a3
- l = (stbsp__uint32)(s - (num + 64));
- 3ce2: 415787b3 sub a5,a5,s5
- cs = 1 + (3 << 24); // how many tens did we write (for commas below)
- 3ce6: 0285 addi t0,t0,1 # 3000001 <_ZSt4cerr+0x2ff7191>
- 3ce8: fbcff06f j 34a4 <stbsp_vsprintfcb+0x11d6>
- *--s = '0';
- 3cec: 03000793 li a5,48
- 3cf0: fefa8fa3 sb a5,-1(s5)
- l = 1;
- 3cf4: 030002b7 lui t0,0x3000
- 3cf8: 4785 li a5,1
- 3cfa: d0be sw a5,96(sp)
- *--s = '0';
- 3cfc: 1afd addi s5,s5,-1
- l = 1;
- 3cfe: 4605 li a2,1
- 3d00: 0285 addi t0,t0,1 # 3000001 <_ZSt4cerr+0x2ff7191>
- 3d02: 4685 li a3,1
- 3d04: b9dd j 39fa <stbsp_vsprintfcb+0x172c>
- } else if (fl & STBSP__LEADINGSPACE) {
- 3d06: 004e7713 andi a4,t3,4
- 3d0a: e74d bnez a4,3db4 <stbsp_vsprintfcb+0x1ae6>
- } else if (fl & STBSP__LEADINGPLUS) {
- 3d0c: 8b89 andi a5,a5,2
- 3d0e: efd9 bnez a5,3dac <stbsp_vsprintfcb+0x1ade>
- sign[0] = 0;
- 3d10: 06010423 sb zero,104(sp)
- 3d14: 4a01 li s4,0
- 3d16: b9c9 j 39e8 <stbsp_vsprintfcb+0x171a>
- if ((s[0] == '0') && (s != (num + STBSP__NUMSZ)))
- 3d18: 051c addi a5,sp,640
- 3d1a: cafa89e3 beq s5,a5,39cc <stbsp_vsprintfcb+0x16fe>
- ++s;
- 3d1e: 0a85 addi s5,s5,1
- l = (stbsp__uint32)((num + STBSP__NUMSZ) - s);
- 3d20: 415786bb subw a3,a5,s5
- 3d24: b165 j 39cc <stbsp_vsprintfcb+0x16fe>
- n = dp - n;
- 3d26: 40ce87bb subw a5,t4,a2
- if ((fl & STBSP__TRIPLET_COMMA) == 0) {
- 3d2a: 12030e63 beqz t1,3e66 <stbsp_vsprintfcb+0x1b98>
- if ((fl & STBSP__TRIPLET_COMMA) && (++cs == 4)) {
- 3d2e: 4511 li a0,4
- 3d30: 03000613 li a2,48
- *s++ = stbsp__comma;
- 3d34: 00170693 addi a3,a4,1
- if ((fl & STBSP__TRIPLET_COMMA) && (++cs == 4)) {
- 3d38: 00030563 beqz t1,3d42 <stbsp_vsprintfcb+0x1a74>
- 3d3c: 2585 addiw a1,a1,1
- 3d3e: 00a58963 beq a1,a0,3d50 <stbsp_vsprintfcb+0x1a82>
- 3d42: 8736 mv a4,a3
- --n;
- 3d44: 37fd addiw a5,a5,-1
- 3d46: fec70fa3 sb a2,-1(a4)
- while (n) {
- 3d4a: f7ed bnez a5,3d34 <stbsp_vsprintfcb+0x1a66>
- 3d4c: f38ff06f j 3484 <stbsp_vsprintfcb+0x11b6>
- 3d50: fe568fa3 sb t0,-1(a3)
- *s++ = stbsp__comma;
- 3d54: 0709 addi a4,a4,2
- if ((fl & STBSP__TRIPLET_COMMA) && (++cs == 4)) {
- 3d56: 4585 li a1,1
- 3d58: b7f5 j 3d44 <stbsp_vsprintfcb+0x1a76>
- sign[0] = 0;
- 3d5a: 06010423 sb zero,104(sp)
- 3d5e: f1dfe06f j 2c7a <stbsp_vsprintfcb+0x9ac>
- tail[idx + 1] = "_kMGT"[fl >> 24];
- 3d62: 00002697 auipc a3,0x2
- 3d66: 48e68693 addi a3,a3,1166 # 61f0 <_GLOBAL__sub_I__ZSt3cin+0x200>
- 3d6a: 9736 add a4,a4,a3
- 3d6c: 00074683 lbu a3,0(a4)
- 3d70: 1088 addi a0,sp,96
- 3d72: 22060713 addi a4,a2,544
- 3d76: 972a add a4,a4,a0
- 3d78: ded70823 sb a3,-528(a4)
- idx++;
- 3d7c: 8fb2 mv t6,a2
- 3d7e: fb0ff06f j 352e <stbsp_vsprintfcb+0x1260>
- while (limit && *sn) {
- 3d82: e00692e3 bnez a3,3b86 <stbsp_vsprintfcb+0x18b8>
- 3d86: bd19 j 3b9c <stbsp_vsprintfcb+0x18ce>
- pr = (dp < (stbsp__int32)l) ? l - dp : 0;
- 3d88: 0008071b sext.w a4,a6
- 3d8c: 86c2 mv a3,a6
- 3d8e: 88d2 mv a7,s4
- pr = -dp + ((pr > (stbsp__int32)l) ? (stbsp__int32) l : pr);
- 3d90: 863a mv a2,a4
- 3d92: 00e8d363 bge a7,a4,3d98 <stbsp_vsprintfcb+0x1aca>
- 3d96: 8646 mv a2,a7
- 3d98: 40f608bb subw a7,a2,a5
- 3d9c: 814ff06f j 2db0 <stbsp_vsprintfcb+0xae2>
- divisor = 1000.0f;
- 3da0: 00003797 auipc a5,0x3
- 3da4: bf07b787 fld fa5,-1040(a5) # 6990 <STDIN_FD+0x28>
- 3da8: dd5fe06f j 2b7c <stbsp_vsprintfcb+0x8ae>
- 3dac: 678d lui a5,0x3
- 3dae: b017879b addiw a5,a5,-1279 # 2b01 <stbsp_vsprintfcb+0x833>
- 3db2: b13d j 39e0 <stbsp_vsprintfcb+0x1712>
- 3db4: 6789 lui a5,0x2
- 3db6: 2785 addiw a5,a5,1 # 2001 <_vscanf_core.constprop.0+0x689>
- 3db8: b125 j 39e0 <stbsp_vsprintfcb+0x1712>
- *s++ = stbsp__period;
- 3dba: 00004517 auipc a0,0x4
- 3dbe: 22a54503 lbu a0,554(a0) # 7fe4 <stbsp__period>
- sn = s;
- 3dc2: 0c210793 addi a5,sp,194
- n = pr;
- 3dc6: 0008869b sext.w a3,a7
- *s++ = stbsp__period;
- 3dca: 0ca100a3 sb a0,193(sp)
- sn = s;
- 3dce: fcbe sd a5,120(sp)
- if (n > 13)
- 3dd0: 4535 li a0,13
- n64 <<= 4;
- 3dd2: 0712 slli a4,a4,0x4
- if (n > 13)
- 3dd4: 8836 mv a6,a3
- 3dd6: 00d57363 bgeu a0,a3,3ddc <stbsp_vsprintfcb+0x1b0e>
- 3dda: 4835 li a6,13
- 3ddc: 0008051b sext.w a0,a6
- while (n--) {
- 3de0: 387d addiw a6,a6,-1
- if (pr > (stbsp__int32)n)
- 3de2: af1542e3 blt a0,a7,38c6 <stbsp_vsprintfcb+0x15f8>
- tz = 0;
- 3de6: 4881 li a7,0
- 3de8: b4cd j 38ca <stbsp_vsprintfcb+0x15fc>
- while (n < l) {
- 3dea: 87ba mv a5,a4
- 3dec: bc1d j 3822 <stbsp_vsprintfcb+0x1554>
- tail[0] = (char)n;
- 3dee: 478d li a5,3
- 3df0: 06f10823 sb a5,112(sp)
- tail[n] = '0' + dp % 10;
- 3df4: 06b109a3 sb a1,115(sp)
- 3df8: 480d li a6,3
- 3dfa: 4f8d li t6,3
- 3dfc: 8e4ff06f j 2ee0 <stbsp_vsprintfcb+0xc12>
- 3e00: 678d lui a5,0x3
- 3e02: b017879b addiw a5,a5,-1279 # 2b01 <stbsp_vsprintfcb+0x833>
- 3e06: 80aff06f j 2e10 <stbsp_vsprintfcb+0xb42>
- if (pr)
- 3e0a: 8336 mv t1,a3
- *s++ = '0';
- 3e0c: 0c110793 addi a5,sp,193
- while (i) {
- 3e10: 4801 li a6,0
- 3e12: b561 j 3c9a <stbsp_vsprintfcb+0x19cc>
- while (i >= 4) {
- 3e14: 460d li a2,3
- 3e16: 04e65663 bge a2,a4,3e62 <stbsp_vsprintfcb+0x1b94>
- 3e1a: ffb5871b addiw a4,a1,-5
- 3e1e: 0027559b srliw a1,a4,0x2
- 3e22: 0015861b addiw a2,a1,1
- 3e26: 060a slli a2,a2,0x2
- *(stbsp__uint32 *)s = 0x30303030;
- 3e28: 30303537 lui a0,0x30303
- 3e2c: 963e add a2,a2,a5
- 3e2e: 03050513 addi a0,a0,48 # 30303030 <_ZSt4cerr+0x302fa1c0>
- 3e32: c388 sw a0,0(a5)
- s += 4;
- 3e34: 0791 addi a5,a5,4
- while (i >= 4) {
- 3e36: fef61ee3 bne a2,a5,3e32 <stbsp_vsprintfcb+0x1b64>
- 3e3a: 0025959b slliw a1,a1,0x2
- 3e3e: 9f0d subw a4,a4,a1
- while (i) {
- 3e40: e4070de3 beqz a4,3c9a <stbsp_vsprintfcb+0x19cc>
- *s++ = '0';
- 3e44: 03000513 li a0,48
- while (i) {
- 3e48: 00f705bb addw a1,a4,a5
- *s++ = '0';
- 3e4c: 0605 addi a2,a2,1
- while (i) {
- 3e4e: 00060e9b sext.w t4,a2
- *s++ = '0';
- 3e52: fea60fa3 sb a0,-1(a2)
- while (i) {
- 3e56: ffd59be3 bne a1,t4,3e4c <stbsp_vsprintfcb+0x1b7e>
- 3e5a: 1702 slli a4,a4,0x20
- 3e5c: 9301 srli a4,a4,0x20
- 3e5e: 97ba add a5,a5,a4
- 3e60: bd2d j 3c9a <stbsp_vsprintfcb+0x19cc>
- while (i >= 4) {
- 3e62: 863e mv a2,a5
- 3e64: b7c5 j 3e44 <stbsp_vsprintfcb+0x1b76>
- if ((((stbsp__uintptr)s) & 3) == 0)
- 3e66: 00377693 andi a3,a4,3
- 3e6a: ce81 beqz a3,3e82 <stbsp_vsprintfcb+0x1bb4>
- *s++ = '0';
- 3e6c: 03000693 li a3,48
- 3e70: 00d70023 sb a3,0(a4)
- --n;
- 3e74: 37fd addiw a5,a5,-1
- *s++ = '0';
- 3e76: 0705 addi a4,a4,1
- while (n) {
- 3e78: e0078663 beqz a5,3484 <stbsp_vsprintfcb+0x11b6>
- if ((((stbsp__uintptr)s) & 3) == 0)
- 3e7c: 00377613 andi a2,a4,3
- 3e80: fa65 bnez a2,3e70 <stbsp_vsprintfcb+0x1ba2>
- while (n >= 4) {
- 3e82: 468d li a3,3
- 3e84: eaf6f5e3 bgeu a3,a5,3d2e <stbsp_vsprintfcb+0x1a60>
- 3e88: ffc7869b addiw a3,a5,-4
- 3e8c: 0026d69b srliw a3,a3,0x2
- 3e90: 2685 addiw a3,a3,1
- 3e92: 068a slli a3,a3,0x2
- *(stbsp__uint32 *)s = 0x30303030;
- 3e94: 30303637 lui a2,0x30303
- 3e98: 96ba add a3,a3,a4
- 3e9a: 03060613 addi a2,a2,48 # 30303030 <_ZSt4cerr+0x302fa1c0>
- 3e9e: c310 sw a2,0(a4)
- s += 4;
- 3ea0: 0711 addi a4,a4,4
- while (n >= 4) {
- 3ea2: fed71ee3 bne a4,a3,3e9e <stbsp_vsprintfcb+0x1bd0>
- 3ea6: 8b8d andi a5,a5,3
- while (n) {
- 3ea8: e80793e3 bnez a5,3d2e <stbsp_vsprintfcb+0x1a60>
- 3eac: dd8ff06f j 3484 <stbsp_vsprintfcb+0x11b6>
- if (((stbsp__uintptr)sn & 3) == 0)
- 3eb0: 87d6 mv a5,s5
- l = stbsp__strlen_limited(s, (pr >= 0) ? pr : ~0u);
- 3eb2: 56fd li a3,-1
- 3eb4: b155 j 3b58 <stbsp_vsprintfcb+0x188a>
- if ((dp <= -4) || (dp > (stbsp__int32)n)) {
- 3eb6: 5775 li a4,-3
- 3eb8: 00e7ce63 blt a5,a4,3ed4 <stbsp_vsprintfcb+0x1c06>
- 3ebc: f6fa4663 blt s4,a5,3628 <stbsp_vsprintfcb+0x135a>
- if (dp > 0) {
- 3ec0: ecf054e3 blez a5,3d88 <stbsp_vsprintfcb+0x1aba>
- 3ec4: 86c2 mv a3,a6
- pr = (dp < (stbsp__int32)l) ? l - dp : 0;
- 3ec6: 4881 li a7,0
- 3ec8: ee9fe06f j 2db0 <stbsp_vsprintfcb+0xae2>
- while (i--)
- 3ecc: fff7869b addiw a3,a5,-1
- 3ed0: 8722 mv a4,s0
- 3ed2: b105 j 3af2 <stbsp_vsprintfcb+0x1824>
- if (pr > (stbsp__int32)l)
- 3ed4: 0008071b sext.w a4,a6
- while ((l > 1) && (pr) && (sn[l - 1] == '0')) {
- 3ed8: 7ae6 ld s5,120(sp)
- if (pr > (stbsp__int32)l)
- 3eda: 86c2 mv a3,a6
- 3edc: 88d2 mv a7,s4
- 3ede: f7475d63 bge a4,s4,3658 <stbsp_vsprintfcb+0x138a>
- while ((l > 1) && (pr) && (sn[l - 1] == '0')) {
- 3ee2: 8542 mv a0,a6
- 3ee4: f56ff06f j 363a <stbsp_vsprintfcb+0x136c>
-
-0000000000003ee8 <stbsp_sprintf>:
-{
- 3ee8: 715d addi sp,sp,-80
- va_start(va, fmt);
- 3eea: 02010313 addi t1,sp,32
-{
- 3eee: f032 sd a2,32(sp)
- 3ef0: f436 sd a3,40(sp)
- 3ef2: f83a sd a4,48(sp)
- result = STB_SPRINTF_DECORATE(vsprintfcb)(0, 0, buf, fmt, va);
- 3ef4: 86ae mv a3,a1
- 3ef6: 862a mv a2,a0
- 3ef8: 871a mv a4,t1
- 3efa: 4581 li a1,0
- 3efc: 4501 li a0,0
-{
- 3efe: ec06 sd ra,24(sp)
- 3f00: fc3e sd a5,56(sp)
- 3f02: e0c2 sd a6,64(sp)
- 3f04: e4c6 sd a7,72(sp)
- va_start(va, fmt);
- 3f06: e41a sd t1,8(sp)
- result = STB_SPRINTF_DECORATE(vsprintfcb)(0, 0, buf, fmt, va);
- 3f08: bc6fe0ef jal 22ce <stbsp_vsprintfcb>
-}
- 3f0c: 60e2 ld ra,24(sp)
- 3f0e: 6161 addi sp,sp,80
- 3f10: 8082 ret
-
-0000000000003f12 <stbsp_vsnprintf>:
-{
- 3f12: dd010113 addi sp,sp,-560
- 3f16: 22813023 sd s0,544(sp)
- 3f1a: 20913c23 sd s1,536(sp)
- 3f1e: 22113423 sd ra,552(sp)
- 3f22: 84ae mv s1,a1
- 3f24: 842a mv s0,a0
- 3f26: 88b2 mv a7,a2
- 3f28: 8736 mv a4,a3
- if ( (count == 0) && !buf )
- 3f2a: e591 bnez a1,3f36 <stbsp_vsnprintf+0x24>
- 3f2c: c141 beqz a0,3fac <stbsp_vsnprintf+0x9a>
- c.buf = buf;
- 3f2e: e02a sd a0,0(sp)
- c.count = count;
- 3f30: e402 sd zero,8(sp)
- return (c->count >= STB_SPRINTF_MIN) ? c->buf : c->tmp; // go direct into buffer if you can
- 3f32: 0810 addi a2,sp,16
- 3f34: a089 j 3f76 <stbsp_vsnprintf+0x64>
- if (len > c->count)
- 3f36: 0015a593 slti a1,a1,1
- 3f3a: 40b005bb negw a1,a1
- 3f3e: 8de5 and a1,a1,s1
- c.buf = buf;
- 3f40: e02a sd a0,0(sp)
- c.count = count;
- 3f42: c426 sw s1,8(sp)
- c.length = 0;
- 3f44: c602 sw zero,12(sp)
- if (len > c->count)
- 3f46: 2581 sext.w a1,a1
- if (len) {
- 3f48: 0804d663 bgez s1,3fd4 <stbsp_vsnprintf+0xc2>
- s = buf;
- 3f4c: 4781 li a5,0
- if (buf != c->buf) {
- 3f4e: c911 beqz a0,3f62 <stbsp_vsnprintf+0x50>
- *d++ = *s++;
- 3f50: 0007c803 lbu a6,0(a5)
- 3f54: 0785 addi a5,a5,1
- 3f56: 00f40533 add a0,s0,a5
- 3f5a: ff050fa3 sb a6,-1(a0)
- } while (s < se);
- 3f5e: feb7e9e3 bltu a5,a1,3f50 <stbsp_vsnprintf+0x3e>
- c->count -= len;
- 3f62: 40b486bb subw a3,s1,a1
- c->buf += len;
- 3f66: 95a2 add a1,a1,s0
- 3f68: e02e sd a1,0(sp)
- c->count -= len;
- 3f6a: c436 sw a3,8(sp)
- return (c->count >= STB_SPRINTF_MIN) ? c->buf : c->tmp; // go direct into buffer if you can
- 3f6c: 1ff00793 li a5,511
- 3f70: fcd7d1e3 bge a5,a3,3f32 <stbsp_vsnprintf+0x20>
- 3f74: 6602 ld a2,0(sp)
- STB_SPRINTF_DECORATE( vsprintfcb )( stbsp__clamp_callback, &c, stbsp__clamp_callback(0,&c,0), fmt, va );
- 3f76: 86c6 mv a3,a7
- 3f78: 858a mv a1,sp
- 3f7a: ffffd517 auipc a0,0xffffd
- 3f7e: 21650513 addi a0,a0,534 # 1190 <stbsp__clamp_callback>
- 3f82: b4cfe0ef jal 22ce <stbsp_vsprintfcb>
- l = (int)( c.buf - buf );
- 3f86: 6782 ld a5,0(sp)
- 3f88: 9f81 subw a5,a5,s0
- if ( l >= count ) // should never be greater, only equal (or less) than count
- 3f8a: 0097c463 blt a5,s1,3f92 <stbsp_vsnprintf+0x80>
- l = count - 1;
- 3f8e: fff4879b addiw a5,s1,-1
- buf[l] = 0;
- 3f92: 943e add s0,s0,a5
- 3f94: 00040023 sb zero,0(s0)
-}
- 3f98: 22813083 ld ra,552(sp)
- 3f9c: 22013403 ld s0,544(sp)
- 3fa0: 4532 lw a0,12(sp)
- 3fa2: 21813483 ld s1,536(sp)
- 3fa6: 23010113 addi sp,sp,560
- 3faa: 8082 ret
- STB_SPRINTF_DECORATE( vsprintfcb )( stbsp__count_clamp_callback, &c, c.tmp, fmt, va );
- 3fac: 86b2 mv a3,a2
- 3fae: 858a mv a1,sp
- 3fb0: 0810 addi a2,sp,16
- 3fb2: ffffd517 auipc a0,0xffffd
- 3fb6: 22c50513 addi a0,a0,556 # 11de <stbsp__count_clamp_callback>
- c.length = 0;
- 3fba: c602 sw zero,12(sp)
- STB_SPRINTF_DECORATE( vsprintfcb )( stbsp__count_clamp_callback, &c, c.tmp, fmt, va );
- 3fbc: b12fe0ef jal 22ce <stbsp_vsprintfcb>
-}
- 3fc0: 22813083 ld ra,552(sp)
- 3fc4: 22013403 ld s0,544(sp)
- 3fc8: 4532 lw a0,12(sp)
- 3fca: 21813483 ld s1,536(sp)
- 3fce: 23010113 addi sp,sp,560
- 3fd2: 8082 ret
- 3fd4: 86a6 mv a3,s1
- 3fd6: bf59 j 3f6c <stbsp_vsnprintf+0x5a>
-
-0000000000003fd8 <stbsp_snprintf>:
-{
- 3fd8: 715d addi sp,sp,-80
- va_start(va, fmt);
- 3fda: 02810313 addi t1,sp,40
-{
- 3fde: f436 sd a3,40(sp)
- result = STB_SPRINTF_DECORATE(vsnprintf)(buf, count, fmt, va);
- 3fe0: 869a mv a3,t1
-{
- 3fe2: ec06 sd ra,24(sp)
- 3fe4: f83a sd a4,48(sp)
- 3fe6: fc3e sd a5,56(sp)
- 3fe8: e0c2 sd a6,64(sp)
- 3fea: e4c6 sd a7,72(sp)
- va_start(va, fmt);
- 3fec: e41a sd t1,8(sp)
- result = STB_SPRINTF_DECORATE(vsnprintf)(buf, count, fmt, va);
- 3fee: f25ff0ef jal 3f12 <stbsp_vsnprintf>
-}
- 3ff2: 60e2 ld ra,24(sp)
- 3ff4: 6161 addi sp,sp,80
- 3ff6: 8082 ret
-
-0000000000003ff8 <stbsp_vsprintf>:
-{
- 3ff8: 86ae mv a3,a1
- 3ffa: 8732 mv a4,a2
- return STB_SPRINTF_DECORATE(vsprintfcb)(0, 0, buf, fmt, va);
- 3ffc: 4581 li a1,0
- 3ffe: 862a mv a2,a0
- 4000: 4501 li a0,0
- 4002: accfe06f j 22ce <stbsp_vsprintfcb>
-
-0000000000004006 <sprintf>:
-{
- 4006: 7119 addi sp,sp,-128
- va_start(ap, format);
- 4008: 05010313 addi t1,sp,80
-{
- 400c: e0a2 sd s0,64(sp)
- 400e: fc26 sd s1,56(sp)
- 4010: 842a mv s0,a0
- 4012: e8b2 sd a2,80(sp)
- _vprintf_core(&ctx, format, ap);
- 4014: 0808 addi a0,sp,16
- ctx.limit = size;
- 4016: 54fd li s1,-1
- _vprintf_core(&ctx, format, ap);
- 4018: 861a mv a2,t1
-{
- 401a: e486 sd ra,72(sp)
- 401c: ecb6 sd a3,88(sp)
- 401e: f0ba sd a4,96(sp)
- 4020: f4be sd a5,104(sp)
- 4022: f8c2 sd a6,112(sp)
- 4024: fcc6 sd a7,120(sp)
- va_start(ap, format);
- 4026: e41a sd t1,8(sp)
- ctx.buf = str;
- 4028: e822 sd s0,16(sp)
- ctx.limit = size;
- 402a: ec26 sd s1,24(sp)
- ctx.written = 0;
- 402c: f002 sd zero,32(sp)
- ctx.stream = NULL;
- 402e: f402 sd zero,40(sp)
- _vprintf_core(&ctx, format, ap);
- 4030: 02c000ef jal 405c <_vprintf_core.constprop.0.isra.0>
- if (ctx.written < size)
- 4034: 7502 ld a0,32(sp)
- 4036: 00950b63 beq a0,s1,404c <sprintf+0x46>
- str[ctx.written] = '\0';
- 403a: 942a add s0,s0,a0
- 403c: 00040023 sb zero,0(s0)
-}
- 4040: 60a6 ld ra,72(sp)
- 4042: 6406 ld s0,64(sp)
- 4044: 74e2 ld s1,56(sp)
- 4046: 2501 sext.w a0,a0
- 4048: 6109 addi sp,sp,128
- 404a: 8082 ret
- str[size - 1] = '\0';
- 404c: fe040f23 sb zero,-2(s0)
-}
- 4050: 60a6 ld ra,72(sp)
- 4052: 6406 ld s0,64(sp)
- 4054: 74e2 ld s1,56(sp)
- 4056: 2501 sext.w a0,a0
- 4058: 6109 addi sp,sp,128
- 405a: 8082 ret
-
-000000000000405c <_vprintf_core.constprop.0.isra.0>:
-static int _vprintf_core(_OutContext *ctx, const char *format, va_list ap)
- 405c: 7129 addi sp,sp,-320
- 405e: edee sd s11,216(sp)
- 4060: fe06 sd ra,312(sp)
- 4062: 8dae mv s11,a1
- while (*p)
- 4064: 0005c583 lbu a1,0(a1)
- 4068: cde9 beqz a1,4142 <_vprintf_core.constprop.0.isra.0+0xe6>
- 406a: f626 sd s1,296(sp)
- 406c: f24a sd s2,288(sp)
- 406e: ee4e sd s3,280(sp)
- 4070: e656 sd s5,264(sp)
- 4072: f9e2 sd s8,240(sp)
- 4074: fa22 sd s0,304(sp)
- 4076: ea52 sd s4,272(sp)
- 4078: e25a sd s6,256(sp)
- 407a: fdde sd s7,248(sp)
- 407c: f5e6 sd s9,232(sp)
- 407e: f1ea sd s10,224(sp)
- 4080: 84aa mv s1,a0
- 4082: 8c32 mv s8,a2
- if (*p != '%')
- 4084: 02500a93 li s5,37
- 4088: 49c1 li s3,16
- 408a: 00002917 auipc s2,0x2
- 408e: 43a90913 addi s2,s2,1082 # 64c4 <_GLOBAL__sub_I__ZSt3cin+0x4d4>
- 4092: a039 j 40a0 <_vprintf_core.constprop.0.isra.0+0x44>
- _out_char(ctx, spec);
- 4094: 8526 mv a0,s1
- 4096: 952fe0ef jal 21e8 <_out_char>
- while (*p)
- 409a: 000dc583 lbu a1,0(s11)
- 409e: c5d9 beqz a1,412c <_vprintf_core.constprop.0.isra.0+0xd0>
- _out_char(ctx, *p++);
- 40a0: 0d85 addi s11,s11,1
- if (*p != '%')
- 40a2: ff5599e3 bne a1,s5,4094 <_vprintf_core.constprop.0.isra.0+0x38>
- int flag_left = 0, flag_zero = 0, flag_plus = 0, flag_space = 0, flag_hash = 0;
- 40a6: 4501 li a0,0
- 40a8: 4881 li a7,0
- 40aa: 4581 li a1,0
- 40ac: 4b01 li s6,0
- 40ae: 4a01 li s4,0
- if (*p == '-')
- 40b0: 000dcc83 lbu s9,0(s11)
- 40b4: fe0c871b addiw a4,s9,-32
- 40b8: 0ff77713 zext.b a4,a4
- 40bc: 00e9e763 bltu s3,a4,40ca <_vprintf_core.constprop.0.isra.0+0x6e>
- 40c0: 070a slli a4,a4,0x2
- 40c2: 974a add a4,a4,s2
- 40c4: 4318 lw a4,0(a4)
- 40c6: 974a add a4,a4,s2
- 40c8: 8702 jr a4
- if (*p == '*')
- 40ca: 02a00793 li a5,42
- 40ce: 16fc9c63 bne s9,a5,4246 <_vprintf_core.constprop.0.isra.0+0x1ea>
- width = va_arg(ap, int);
- 40d2: 000c2403 lw s0,0(s8)
- 40d6: 0c21 addi s8,s8,8
- if (width < 0)
- 40d8: 00045563 bgez s0,40e2 <_vprintf_core.constprop.0.isra.0+0x86>
- width = -width;
- 40dc: 4080043b negw s0,s0
- flag_left = 1;
- 40e0: 4a05 li s4,1
- while (*p >= '0' && *p <= '9')
- 40e2: 001dcc83 lbu s9,1(s11)
- p++;
- 40e6: 0d85 addi s11,s11,1
- if (*p == '.')
- 40e8: 02e00793 li a5,46
- int precision = -1;
- 40ec: 5bfd li s7,-1
- if (*p == '.')
- 40ee: 18fc8a63 beq s9,a5,4282 <_vprintf_core.constprop.0.isra.0+0x226>
- if (*p == 'l')
- 40f2: 06c00693 li a3,108
- 40f6: 8666 mv a2,s9
- 40f8: 1adc8663 beq s9,a3,42a4 <_vprintf_core.constprop.0.isra.0+0x248>
- else if (*p == 'z')
- 40fc: 07a00693 li a3,122
- p++;
- 4100: 0d85 addi s11,s11,1
- else if (*p == 'z')
- 4102: 24dc8163 beq s9,a3,4344 <_vprintf_core.constprop.0.isra.0+0x2e8>
- if (!spec)
- 4106: 06400693 li a3,100
- 410a: 4adc8163 beq s9,a3,45ac <_vprintf_core.constprop.0.isra.0+0x550>
- 410e: 06400693 li a3,100
- int len_mod = 0;
- 4112: 4e81 li t4,0
- 4114: 1b96e663 bltu a3,s9,42c0 <_vprintf_core.constprop.0.isra.0+0x264>
- 4118: 04700693 li a3,71
- 411c: 2796e463 bltu a3,s9,4384 <_vprintf_core.constprop.0.isra.0+0x328>
- 4120: 04400693 li a3,68
- 4124: 0596e363 bltu a3,s9,416a <_vprintf_core.constprop.0.isra.0+0x10e>
- 4128: 240c9363 bnez s9,436e <_vprintf_core.constprop.0.isra.0+0x312>
- 412c: 7452 ld s0,304(sp)
- 412e: 74b2 ld s1,296(sp)
- 4130: 7912 ld s2,288(sp)
- 4132: 69f2 ld s3,280(sp)
- 4134: 6a52 ld s4,272(sp)
- 4136: 6ab2 ld s5,264(sp)
- 4138: 6b12 ld s6,256(sp)
- 413a: 7bee ld s7,248(sp)
- 413c: 7c4e ld s8,240(sp)
- 413e: 7cae ld s9,232(sp)
- 4140: 7d0e ld s10,224(sp)
-}
- 4142: 70f2 ld ra,312(sp)
- 4144: 6dee ld s11,216(sp)
- 4146: 6131 addi sp,sp,320
- 4148: 8082 ret
- if (*p == '-')
- 414a: 4585 li a1,1
- p++;
- 414c: 0d85 addi s11,s11,1
- if (*p == '-')
- 414e: b78d j 40b0 <_vprintf_core.constprop.0.isra.0+0x54>
- 4150: 4505 li a0,1
- p++;
- 4152: 0d85 addi s11,s11,1
- while (1)
- 4154: bfb1 j 40b0 <_vprintf_core.constprop.0.isra.0+0x54>
- if (*p == '-')
- 4156: 4885 li a7,1
- p++;
- 4158: 0d85 addi s11,s11,1
- while (1)
- 415a: bf99 j 40b0 <_vprintf_core.constprop.0.isra.0+0x54>
- if (*p == '-')
- 415c: 4b05 li s6,1
- p++;
- 415e: 0d85 addi s11,s11,1
- while (1)
- 4160: bf81 j 40b0 <_vprintf_core.constprop.0.isra.0+0x54>
- if (*p == '-')
- 4162: 4a05 li s4,1
- p++;
- 4164: 0d85 addi s11,s11,1
- while (1)
- 4166: b7a9 j 40b0 <_vprintf_core.constprop.0.isra.0+0x54>
- char spec = *p++;
- 4168: 8dbe mv s11,a5
- fmt_tmp[f_idx++] = '%';
- 416a: 02500693 li a3,37
- 416e: 02d10823 sb a3,48(sp)
- 4172: 4d05 li s10,1
- if (flag_left)
- 4174: 000a0763 beqz s4,4182 <_vprintf_core.constprop.0.isra.0+0x126>
- fmt_tmp[f_idx++] = '-';
- 4178: 02d00693 li a3,45
- 417c: 02d108a3 sb a3,49(sp)
- 4180: 4d09 li s10,2
- if (flag_zero)
- 4182: 000b0c63 beqz s6,419a <_vprintf_core.constprop.0.isra.0+0x13e>
- fmt_tmp[f_idx++] = '0';
- 4186: 0c0d0793 addi a5,s10,192
- 418a: 0818 addi a4,sp,16
- 418c: 00e786b3 add a3,a5,a4
- 4190: 03000613 li a2,48
- 4194: f6c68023 sb a2,-160(a3)
- 4198: 2d05 addiw s10,s10,1
- if (flag_plus)
- 419a: c999 beqz a1,41b0 <_vprintf_core.constprop.0.isra.0+0x154>
- fmt_tmp[f_idx++] = '+';
- 419c: 0c0d0793 addi a5,s10,192
- 41a0: 0818 addi a4,sp,16
- 41a2: 00e786b3 add a3,a5,a4
- 41a6: 02b00613 li a2,43
- 41aa: f6c68023 sb a2,-160(a3)
- 41ae: 2d05 addiw s10,s10,1
- if (flag_space)
- 41b0: 00088c63 beqz a7,41c8 <_vprintf_core.constprop.0.isra.0+0x16c>
- fmt_tmp[f_idx++] = ' ';
- 41b4: 0c0d0793 addi a5,s10,192
- 41b8: 0818 addi a4,sp,16
- 41ba: 00e786b3 add a3,a5,a4
- 41be: 02000613 li a2,32
- 41c2: f6c68023 sb a2,-160(a3)
- 41c6: 2d05 addiw s10,s10,1
- if (flag_hash)
- 41c8: c919 beqz a0,41de <_vprintf_core.constprop.0.isra.0+0x182>
- fmt_tmp[f_idx++] = '#';
- 41ca: 0c0d0793 addi a5,s10,192
- 41ce: 0818 addi a4,sp,16
- 41d0: 00e786b3 add a3,a5,a4
- 41d4: 02300613 li a2,35
- 41d8: f6c68023 sb a2,-160(a3)
- 41dc: 2d05 addiw s10,s10,1
- if (width > 0)
- 41de: 03010a13 addi s4,sp,48
- 41e2: 28804563 bgtz s0,446c <_vprintf_core.constprop.0.isra.0+0x410>
- if (precision >= 0)
- 41e6: 260bd763 bgez s7,4454 <_vprintf_core.constprop.0.isra.0+0x3f8>
- fmt_tmp[f_idx++] = spec;
- 41ea: 0c0d0793 addi a5,s10,192
- 41ee: 0818 addi a4,sp,16
- 41f0: 00e78633 add a2,a5,a4
- stbsp_snprintf(f_buf, sizeof(f_buf), fmt_tmp, f_val);
- 41f4: 000c3683 ld a3,0(s8)
- fmt_tmp[f_idx] = '\0';
- 41f8: 001d071b addiw a4,s10,1
- 41fc: 0c070793 addi a5,a4,192
- 4200: 0818 addi a4,sp,16
- fmt_tmp[f_idx++] = spec;
- 4202: f7960023 sb s9,-160(a2)
- fmt_tmp[f_idx] = '\0';
- 4206: 973e add a4,a4,a5
- stbsp_snprintf(f_buf, sizeof(f_buf), fmt_tmp, f_val);
- 4208: 08000593 li a1,128
- 420c: 8652 mv a2,s4
- 420e: 0888 addi a0,sp,80
- fmt_tmp[f_idx] = '\0';
- 4210: f6070023 sb zero,-160(a4)
- stbsp_snprintf(f_buf, sizeof(f_buf), fmt_tmp, f_val);
- 4214: dc5ff0ef jal 3fd8 <stbsp_snprintf>
- for (int i = 0; f_buf[i] != '\0'; i++)
- 4218: 05014583 lbu a1,80(sp)
- double f_val = va_arg(ap, double);
- 421c: 0c21 addi s8,s8,8
- for (int i = 0; f_buf[i] != '\0'; i++)
- 421e: 05110413 addi s0,sp,81
- 4222: e6058ce3 beqz a1,409a <_vprintf_core.constprop.0.isra.0+0x3e>
- _out_char(ctx, f_buf[i]);
- 4226: 8526 mv a0,s1
- 4228: fc1fd0ef jal 21e8 <_out_char>
- for (int i = 0; f_buf[i] != '\0'; i++)
- 422c: 00044583 lbu a1,0(s0)
- 4230: 0405 addi s0,s0,1
- 4232: e60584e3 beqz a1,409a <_vprintf_core.constprop.0.isra.0+0x3e>
- _out_char(ctx, f_buf[i]);
- 4236: 8526 mv a0,s1
- 4238: fb1fd0ef jal 21e8 <_out_char>
- for (int i = 0; f_buf[i] != '\0'; i++)
- 423c: 00044583 lbu a1,0(s0)
- 4240: 0405 addi s0,s0,1
- 4242: f1f5 bnez a1,4226 <_vprintf_core.constprop.0.isra.0+0x1ca>
- 4244: bd99 j 409a <_vprintf_core.constprop.0.isra.0+0x3e>
- while (*p >= '0' && *p <= '9')
- 4246: fd0c869b addiw a3,s9,-48
- 424a: 0ff6f313 zext.b t1,a3
- 424e: 4725 li a4,9
- int width = 0;
- 4250: 4401 li s0,0
- while (*p >= '0' && *p <= '9')
- 4252: 4625 li a2,9
- 4254: e8676ae3 bltu a4,t1,40e8 <_vprintf_core.constprop.0.isra.0+0x8c>
- 4258: 001dcc83 lbu s9,1(s11)
- width = width * 10 + (*p - '0');
- 425c: 0024171b slliw a4,s0,0x2
- 4260: 9f21 addw a4,a4,s0
- 4262: 0017171b slliw a4,a4,0x1
- 4266: 00e6843b addw s0,a3,a4
- while (*p >= '0' && *p <= '9')
- 426a: fd0c869b addiw a3,s9,-48
- 426e: 0ff6f713 zext.b a4,a3
- p++;
- 4272: 0d85 addi s11,s11,1
- while (*p >= '0' && *p <= '9')
- 4274: fee672e3 bgeu a2,a4,4258 <_vprintf_core.constprop.0.isra.0+0x1fc>
- if (*p == '.')
- 4278: 02e00793 li a5,46
- int precision = -1;
- 427c: 5bfd li s7,-1
- if (*p == '.')
- 427e: e6fc9ae3 bne s9,a5,40f2 <_vprintf_core.constprop.0.isra.0+0x96>
- if (*p == '*')
- 4282: 001dcc83 lbu s9,1(s11)
- 4286: 02a00793 li a5,42
- 428a: 16fc9f63 bne s9,a5,4408 <_vprintf_core.constprop.0.isra.0+0x3ac>
- while (*p >= '0' && *p <= '9')
- 428e: 002dcc83 lbu s9,2(s11)
- if (*p == 'l')
- 4292: 06c00693 li a3,108
- precision = va_arg(ap, int);
- 4296: 000c2b83 lw s7,0(s8)
- p++;
- 429a: 0d89 addi s11,s11,2
- precision = va_arg(ap, int);
- 429c: 0c21 addi s8,s8,8
- if (*p == 'l')
- 429e: 8666 mv a2,s9
- 42a0: e4dc9ee3 bne s9,a3,40fc <_vprintf_core.constprop.0.isra.0+0xa0>
- if (*p == 'l')
- 42a4: 001dcc83 lbu s9,1(s11)
- 42a8: 08cc8d63 beq s9,a2,4342 <_vprintf_core.constprop.0.isra.0+0x2e6>
- char spec = *p++;
- 42ac: 06400693 li a3,100
- 42b0: 0d89 addi s11,s11,2
- if (!spec)
- 42b2: 4cdc8c63 beq s9,a3,478a <_vprintf_core.constprop.0.isra.0+0x72e>
- 42b6: 06400693 li a3,100
- len_mod = 1;
- 42ba: 4e85 li t4,1
- 42bc: e596fee3 bgeu a3,s9,4118 <_vprintf_core.constprop.0.isra.0+0xbc>
- 42c0: f9bc869b addiw a3,s9,-101
- 42c4: 0ff6f693 zext.b a3,a3
- 42c8: 464d li a2,19
- 42ca: 12d66863 bltu a2,a3,43fa <_vprintf_core.constprop.0.isra.0+0x39e>
- 42ce: 4e05 li t3,1
- 42d0: 00091637 lui a2,0x91
- 42d4: 00de1333 sll t1,t3,a3
- 42d8: 81060613 addi a2,a2,-2032 # 90810 <_ZSt4cerr+0x879a0>
- 42dc: 00c37633 and a2,t1,a2
- 42e0: 1a061463 bnez a2,4488 <_vprintf_core.constprop.0.isra.0+0x42c>
- 42e4: 00737313 andi t1,t1,7
- 42e8: e80311e3 bnez t1,416a <_vprintf_core.constprop.0.isra.0+0x10e>
- 42ec: 4639 li a2,14
- 42ee: 10c69663 bne a3,a2,43fa <_vprintf_core.constprop.0.isra.0+0x39e>
- const char *s = va_arg(ap, char *);
- 42f2: 000c3c83 ld s9,0(s8)
- if (!s)
- 42f6: 420c8863 beqz s9,4726 <_vprintf_core.constprop.0.isra.0+0x6ca>
- while (*tmp && (precision < 0 || len < precision))
- 42fa: 000cc683 lbu a3,0(s9)
- 42fe: 38068863 beqz a3,468e <_vprintf_core.constprop.0.isra.0+0x632>
- const char *tmp = s;
- 4302: 8666 mv a2,s9
- int len = 0;
- 4304: 4681 li a3,0
- while (*tmp && (precision < 0 || len < precision))
- 4306: 00db8863 beq s7,a3,4316 <_vprintf_core.constprop.0.isra.0+0x2ba>
- 430a: 00164583 lbu a1,1(a2)
- len++;
- 430e: 2685 addiw a3,a3,1
- tmp++;
- 4310: 0605 addi a2,a2,1
- while (*tmp && (precision < 0 || len < precision))
- 4312: f9f5 bnez a1,4306 <_vprintf_core.constprop.0.isra.0+0x2aa>
- 4314: 8bb6 mv s7,a3
- int padding = (width > len) ? width - len : 0;
- 4316: 268bc563 blt s7,s0,4580 <_vprintf_core.constprop.0.isra.0+0x524>
- for (int i = 0; i < len; i++)
- 431a: 4401 li s0,0
- 431c: 020b8163 beqz s7,433e <_vprintf_core.constprop.0.isra.0+0x2e2>
- 4320: 4d01 li s10,0
- _out_char(ctx, s[i]);
- 4322: 01ac86b3 add a3,s9,s10
- 4326: 0006c583 lbu a1,0(a3)
- 432a: 8526 mv a0,s1
- for (int i = 0; i < len; i++)
- 432c: 0d05 addi s10,s10,1
- _out_char(ctx, s[i]);
- 432e: ebbfd0ef jal 21e8 <_out_char>
- for (int i = 0; i < len; i++)
- 4332: 000d069b sext.w a3,s10
- 4336: ff76c6e3 blt a3,s7,4322 <_vprintf_core.constprop.0.isra.0+0x2c6>
- if (flag_left)
- 433a: 260a1463 bnez s4,45a2 <_vprintf_core.constprop.0.isra.0+0x546>
- const char *s = va_arg(ap, char *);
- 433e: 0c21 addi s8,s8,8
- 4340: bba9 j 409a <_vprintf_core.constprop.0.isra.0+0x3e>
- p++;
- 4342: 0d89 addi s11,s11,2
- char spec = *p++;
- 4344: 000dcc83 lbu s9,0(s11)
- 4348: 06400693 li a3,100
- 434c: 001d8793 addi a5,s11,1
- if (!spec)
- 4350: 3edc8063 beq s9,a3,4730 <_vprintf_core.constprop.0.isra.0+0x6d4>
- 4354: 0796ea63 bltu a3,s9,43c8 <_vprintf_core.constprop.0.isra.0+0x36c>
- 4358: 04700693 li a3,71
- 435c: 0f96e263 bltu a3,s9,4440 <_vprintf_core.constprop.0.isra.0+0x3e4>
- 4360: 04400693 li a3,68
- 4364: e196e2e3 bltu a3,s9,4168 <_vprintf_core.constprop.0.isra.0+0x10c>
- 4368: dc0c82e3 beqz s9,412c <_vprintf_core.constprop.0.isra.0+0xd0>
- char spec = *p++;
- 436c: 8dbe mv s11,a5
- _out_char(ctx, '%');
- 436e: 02500593 li a1,37
- 4372: 8526 mv a0,s1
- 4374: e75fd0ef jal 21e8 <_out_char>
- if (spec != '%')
- 4378: 02500713 li a4,37
- 437c: d0ec8fe3 beq s9,a4,409a <_vprintf_core.constprop.0.isra.0+0x3e>
- _out_char(ctx, spec);
- 4380: 85e6 mv a1,s9
- 4382: bb09 j 4094 <_vprintf_core.constprop.0.isra.0+0x38>
- 4384: 05800693 li a3,88
- 4388: 2edc8263 beq s9,a3,466c <_vprintf_core.constprop.0.isra.0+0x610>
- 438c: 06300713 li a4,99
- 4390: 06ec9563 bne s9,a4,43fa <_vprintf_core.constprop.0.isra.0+0x39e>
- char c = (char)va_arg(ap, int);
- 4394: 000c4c83 lbu s9,0(s8)
- int padding = (width > 1) ? width - 1 : 0;
- 4398: 8722 mv a4,s0
- 439a: 00804363 bgtz s0,43a0 <_vprintf_core.constprop.0.isra.0+0x344>
- 439e: 4705 li a4,1
- 43a0: fff7041b addiw s0,a4,-1
- if (!flag_left)
- 43a4: 3c0a0463 beqz s4,476c <_vprintf_core.constprop.0.isra.0+0x710>
- _out_char(ctx, c);
- 43a8: 85e6 mv a1,s9
- 43aa: 8526 mv a0,s1
- 43ac: e3dfd0ef jal 21e8 <_out_char>
- for (int i = 0; i < padding; i++)
- 43b0: 4a01 li s4,0
- 43b2: d451 beqz s0,433e <_vprintf_core.constprop.0.isra.0+0x2e2>
- _out_char(ctx, ' ');
- 43b4: 02000593 li a1,32
- 43b8: 8526 mv a0,s1
- for (int i = 0; i < padding; i++)
- 43ba: 2a05 addiw s4,s4,1
- _out_char(ctx, ' ');
- 43bc: e2dfd0ef jal 21e8 <_out_char>
- for (int i = 0; i < padding; i++)
- 43c0: ff441ae3 bne s0,s4,43b4 <_vprintf_core.constprop.0.isra.0+0x358>
- const char *s = va_arg(ap, char *);
- 43c4: 0c21 addi s8,s8,8
- 43c6: b9d1 j 409a <_vprintf_core.constprop.0.isra.0+0x3e>
- 43c8: f9bc861b addiw a2,s9,-101
- 43cc: 0ff67613 zext.b a2,a2
- 43d0: 46cd li a3,19
- 43d2: 40c6e963 bltu a3,a2,47e4 <_vprintf_core.constprop.0.isra.0+0x788>
- 43d6: 00091337 lui t1,0x91
- 43da: 4685 li a3,1
- 43dc: 00c696b3 sll a3,a3,a2
- 43e0: 81030313 addi t1,t1,-2032 # 90810 <_ZSt4cerr+0x879a0>
- 43e4: 0066f333 and t1,a3,t1
- 43e8: 34031c63 bnez t1,4740 <_vprintf_core.constprop.0.isra.0+0x6e4>
- 43ec: 8a9d andi a3,a3,7
- 43ee: d6069de3 bnez a3,4168 <_vprintf_core.constprop.0.isra.0+0x10c>
- 43f2: 46b9 li a3,14
- char spec = *p++;
- 43f4: 8dbe mv s11,a5
- 43f6: eed60ee3 beq a2,a3,42f2 <_vprintf_core.constprop.0.isra.0+0x296>
- _out_char(ctx, '%');
- 43fa: 02500593 li a1,37
- 43fe: 8526 mv a0,s1
- 4400: de9fd0ef jal 21e8 <_out_char>
- _out_char(ctx, spec);
- 4404: 85e6 mv a1,s9
- 4406: b179 j 4094 <_vprintf_core.constprop.0.isra.0+0x38>
- while (*p >= '0' && *p <= '9')
- 4408: fd0c869b addiw a3,s9,-48
- 440c: 0ff6fe13 zext.b t3,a3
- 4410: 4625 li a2,9
- p++;
- 4412: 0d85 addi s11,s11,1
- precision = 0;
- 4414: 4b81 li s7,0
- while (*p >= '0' && *p <= '9')
- 4416: 4325 li t1,9
- 4418: cdc66de3 bltu a2,t3,40f2 <_vprintf_core.constprop.0.isra.0+0x96>
- precision = precision * 10 + (*p - '0');
- 441c: 002b961b slliw a2,s7,0x2
- while (*p >= '0' && *p <= '9')
- 4420: 001dcc83 lbu s9,1(s11)
- precision = precision * 10 + (*p - '0');
- 4424: 0176073b addw a4,a2,s7
- 4428: 0017171b slliw a4,a4,0x1
- 442c: 00e68bbb addw s7,a3,a4
- while (*p >= '0' && *p <= '9')
- 4430: fd0c869b addiw a3,s9,-48
- 4434: 0ff6f613 zext.b a2,a3
- p++;
- 4438: 0d85 addi s11,s11,1
- while (*p >= '0' && *p <= '9')
- 443a: fec371e3 bgeu t1,a2,441c <_vprintf_core.constprop.0.isra.0+0x3c0>
- 443e: b955 j 40f2 <_vprintf_core.constprop.0.isra.0+0x96>
- 4440: 05800693 li a3,88
- 4444: 3cdc8d63 beq s9,a3,481e <_vprintf_core.constprop.0.isra.0+0x7c2>
- 4448: 06300713 li a4,99
- char spec = *p++;
- 444c: 8dbe mv s11,a5
- 444e: f4ec83e3 beq s9,a4,4394 <_vprintf_core.constprop.0.isra.0+0x338>
- 4452: b765 j 43fa <_vprintf_core.constprop.0.isra.0+0x39e>
- f_idx += sprintf(&fmt_tmp[f_idx], ".%d", precision);
- 4454: 01aa0533 add a0,s4,s10
- 4458: 865e mv a2,s7
- 445a: 00002597 auipc a1,0x2
- 445e: dee58593 addi a1,a1,-530 # 6248 <_GLOBAL__sub_I__ZSt3cin+0x258>
- 4462: ba5ff0ef jal 4006 <sprintf>
- 4466: 00ad0d3b addw s10,s10,a0
- 446a: b341 j 41ea <_vprintf_core.constprop.0.isra.0+0x18e>
- f_idx += sprintf(&fmt_tmp[f_idx], "%d", width);
- 446c: 01aa0533 add a0,s4,s10
- 4470: 8622 mv a2,s0
- 4472: 00002597 auipc a1,0x2
- 4476: dce58593 addi a1,a1,-562 # 6240 <_GLOBAL__sub_I__ZSt3cin+0x250>
- 447a: b8dff0ef jal 4006 <sprintf>
- 447e: 00ad0d3b addw s10,s10,a0
- if (precision >= 0)
- 4482: d60bc4e3 bltz s7,41ea <_vprintf_core.constprop.0.isra.0+0x18e>
- 4486: b7f9 j 4454 <_vprintf_core.constprop.0.isra.0+0x3f8>
- int is_signed = (spec == 'd' || spec == 'i');
- 4488: 06900693 li a3,105
- 448c: 10dc8e63 beq s9,a3,45a8 <_vprintf_core.constprop.0.isra.0+0x54c>
- val = (uint64)va_arg(ap, void *);
- 4490: 008c0793 addi a5,s8,8
- int base = (spec == 'x' || spec == 'X' || spec == 'p') ? 16 : 10;
- 4494: 07800693 li a3,120
- val = (uint64)va_arg(ap, void *);
- 4498: e43e sd a5,8(sp)
- int base = (spec == 'x' || spec == 'X' || spec == 'p') ? 16 : 10;
- 449a: 38dc9d63 bne s9,a3,4834 <_vprintf_core.constprop.0.isra.0+0x7d8>
- else if (len_mod == 1)
- 449e: 33ce8963 beq t4,t3,47d0 <_vprintf_core.constprop.0.isra.0+0x774>
- val = is_signed ? (uint64)((int64)va_arg(ap, int)) : (uint64)va_arg(ap, uint32);
- 44a2: 000c6e03 lwu t3,0(s8)
- 44a6: 85f6 mv a1,t4
- 44a8: e002 sd zero,0(sp)
- int base = (spec == 'x' || spec == 'X' || spec == 'p') ? 16 : 10;
- 44aa: 4341 li t1,16
- const char *digits = uppercase ? "0123456789ABCDEF" : "0123456789abcdef";
- 44ac: 00002f97 auipc t6,0x2
- 44b0: d64f8f93 addi t6,t6,-668 # 6210 <_GLOBAL__sub_I__ZSt3cin+0x220>
- if (val == 0)
- 44b4: 120e0363 beqz t3,45da <_vprintf_core.constprop.0.isra.0+0x57e>
- 44b8: 01010293 addi t0,sp,16
- sign_char = '-';
- 44bc: 8616 mv a2,t0
- 44be: 86f2 mv a3,t3
- buf[i++] = digits[val % base];
- 44c0: 0266f8b3 remu a7,a3,t1
- 44c4: 8f32 mv t5,a2
- while (val != 0)
- 44c6: 0605 addi a2,a2,1
- 44c8: 8eb6 mv t4,a3
- buf[i++] = digits[val % base];
- 44ca: 98fe add a7,a7,t6
- 44cc: 0008c883 lbu a7,0(a7)
- val /= base;
- 44d0: 0266d6b3 divu a3,a3,t1
- buf[i++] = digits[val % base];
- 44d4: ff160fa3 sb a7,-1(a2)
- while (val != 0)
- 44d8: fe6ef4e3 bgeu t4,t1,44c0 <_vprintf_core.constprop.0.isra.0+0x464>
- buf[i++] = digits[val % base];
- 44dc: 405f0f3b subw t5,t5,t0
- 44e0: 2f05 addiw t5,t5,1
- if (precision >= 0)
- 44e2: 100bc363 bltz s7,45e8 <_vprintf_core.constprop.0.isra.0+0x58c>
- int prec_zeros = (precision > digit_len) ? precision - digit_len : 0;
- 44e6: 1d7f4d63 blt t5,s7,46c0 <_vprintf_core.constprop.0.isra.0+0x664>
- if (precision == 0 && val == 0)
- 44ea: 340b9163 bnez s7,482c <_vprintf_core.constprop.0.isra.0+0x7d0>
- 44ee: 200e0763 beqz t3,46fc <_vprintf_core.constprop.0.isra.0+0x6a0>
- for (int i = digit_len - 1; i >= 0; i--)
- 44f2: ffff0c1b addiw s8,t5,-1
- if (spec == 'p' || (flag_hash && val != 0 && (spec == 'x' || spec == 'X')))
- 44f6: 07000693 li a3,112
- for (int i = digit_len - 1; i >= 0; i--)
- 44fa: 8662 mv a2,s8
- if (spec == 'p' || (flag_hash && val != 0 && (spec == 'x' || spec == 'X')))
- 44fc: 28dc8e63 beq s9,a3,4798 <_vprintf_core.constprop.0.isra.0+0x73c>
- 4500: 2a051663 bnez a0,47ac <_vprintf_core.constprop.0.isra.0+0x750>
- int padding = (width > prefix_len + prec_zeros + digit_len) ? width - (prefix_len + prec_zeros + digit_len) : 0;
- 4504: 00bf05bb addw a1,t5,a1
- 4508: 8d52 mv s10,s4
- 450a: 4b01 li s6,0
- char *prefix_str = NULL;
- 450c: 4c81 li s9,0
- int padding = (width > prefix_len + prec_zeros + digit_len) ? width - (prefix_len + prec_zeros + digit_len) : 0;
- 450e: 1085d263 bge a1,s0,4612 <_vprintf_core.constprop.0.isra.0+0x5b6>
- 4512: 9c0d subw s0,s0,a1
- if (!flag_left && !flag_zero)
- 4514: 100d0a63 beqz s10,4628 <_vprintf_core.constprop.0.isra.0+0x5cc>
- if (sign_char)
- 4518: 6782 ld a5,0(sp)
- 451a: 10079263 bnez a5,461e <_vprintf_core.constprop.0.isra.0+0x5c2>
- if (prefix_str)
- 451e: 000c8c63 beqz s9,4536 <_vprintf_core.constprop.0.isra.0+0x4da>
- _out_char(ctx, prefix_str[0]);
- 4522: 000cc583 lbu a1,0(s9)
- 4526: 8526 mv a0,s1
- 4528: cc1fd0ef jal 21e8 <_out_char>
- _out_char(ctx, prefix_str[1]);
- 452c: 001cc583 lbu a1,1(s9)
- 4530: 8526 mv a0,s1
- 4532: cb7fd0ef jal 21e8 <_out_char>
- int total_zeros = prec_zeros + ((flag_zero && !flag_left) ? padding : 0);
- 4536: 180b0263 beqz s6,46ba <_vprintf_core.constprop.0.isra.0+0x65e>
- 453a: 100a1863 bnez s4,464a <_vprintf_core.constprop.0.isra.0+0x5ee>
- 453e: 008b8bbb addw s7,s7,s0
- for (int i = 0; i < total_zeros; i++)
- 4542: 2a0b8363 beqz s7,47e8 <_vprintf_core.constprop.0.isra.0+0x78c>
- 4546: 4c81 li s9,0
- _out_char(ctx, '0');
- 4548: 03000593 li a1,48
- 454c: 8526 mv a0,s1
- for (int i = 0; i < total_zeros; i++)
- 454e: 2c85 addiw s9,s9,1
- _out_char(ctx, '0');
- 4550: c99fd0ef jal 21e8 <_out_char>
- for (int i = 0; i < total_zeros; i++)
- 4554: ff7c9ae3 bne s9,s7,4548 <_vprintf_core.constprop.0.isra.0+0x4ec>
- for (int i = digit_len - 1; i >= 0; i--)
- 4558: 57fd li a5,-1
- 455a: 00fc0f63 beq s8,a5,4578 <_vprintf_core.constprop.0.isra.0+0x51c>
- 455e: 01010c93 addi s9,sp,16
- 4562: 9ce2 add s9,s9,s8
- 4564: 00f10c13 addi s8,sp,15
- _out_char(ctx, num_buf[i]);
- 4568: 000cc583 lbu a1,0(s9)
- 456c: 8526 mv a0,s1
- for (int i = digit_len - 1; i >= 0; i--)
- 456e: 1cfd addi s9,s9,-1
- _out_char(ctx, num_buf[i]);
- 4570: c79fd0ef jal 21e8 <_out_char>
- for (int i = digit_len - 1; i >= 0; i--)
- 4574: ff9c1ae3 bne s8,s9,4568 <_vprintf_core.constprop.0.isra.0+0x50c>
- if (flag_left)
- 4578: 0c0a1e63 bnez s4,4654 <_vprintf_core.constprop.0.isra.0+0x5f8>
- char spec = *p++;
- 457c: 6c22 ld s8,8(sp)
- 457e: be31 j 409a <_vprintf_core.constprop.0.isra.0+0x3e>
- int padding = (width > len) ? width - len : 0;
- 4580: 4174043b subw s0,s0,s7
- if (!flag_left)
- 4584: 100a0a63 beqz s4,4698 <_vprintf_core.constprop.0.isra.0+0x63c>
- for (int i = 0; i < len; i++)
- 4588: d80b9ce3 bnez s7,4320 <_vprintf_core.constprop.0.isra.0+0x2c4>
- for (int i = 0; i < padding; i++)
- 458c: 4a01 li s4,0
- _out_char(ctx, ' ');
- 458e: 02000593 li a1,32
- 4592: 8526 mv a0,s1
- for (int i = 0; i < padding; i++)
- 4594: 2a05 addiw s4,s4,1
- _out_char(ctx, ' ');
- 4596: c53fd0ef jal 21e8 <_out_char>
- for (int i = 0; i < padding; i++)
- 459a: ff441ae3 bne s0,s4,458e <_vprintf_core.constprop.0.isra.0+0x532>
- const char *s = va_arg(ap, char *);
- 459e: 0c21 addi s8,s8,8
- 45a0: bced j 409a <_vprintf_core.constprop.0.isra.0+0x3e>
- for (int i = 0; i < padding; i++)
- 45a2: f46d bnez s0,458c <_vprintf_core.constprop.0.isra.0+0x530>
- const char *s = va_arg(ap, char *);
- 45a4: 0c21 addi s8,s8,8
- 45a6: bcd5 j 409a <_vprintf_core.constprop.0.isra.0+0x3e>
- else if (len_mod == 1)
- 45a8: 1fce8163 beq t4,t3,478a <_vprintf_core.constprop.0.isra.0+0x72e>
- val = is_signed ? (uint64)((int64)va_arg(ap, int)) : (uint64)va_arg(ap, uint32);
- 45ac: 000c2e03 lw t3,0(s8)
- 45b0: 008c0793 addi a5,s8,8
- 45b4: e43e sd a5,8(sp)
- int64 sval = (int64)val;
- 45b6: 86f2 mv a3,t3
- if (sval < 0)
- 45b8: 1406cb63 bltz a3,470e <_vprintf_core.constprop.0.isra.0+0x6b2>
- sign_char = '+';
- 45bc: 02b00793 li a5,43
- 45c0: e03e sd a5,0(sp)
- else if (flag_plus)
- 45c2: e589 bnez a1,45cc <_vprintf_core.constprop.0.isra.0+0x570>
- else if (flag_space)
- 45c4: 00589793 slli a5,a7,0x5
- 45c8: e03e sd a5,0(sp)
- 45ca: 85c6 mv a1,a7
- const char *digits = uppercase ? "0123456789ABCDEF" : "0123456789abcdef";
- 45cc: 4329 li t1,10
- 45ce: 00002f97 auipc t6,0x2
- 45d2: c42f8f93 addi t6,t6,-958 # 6210 <_GLOBAL__sub_I__ZSt3cin+0x220>
- if (val == 0)
- 45d6: ee0e11e3 bnez t3,44b8 <_vprintf_core.constprop.0.isra.0+0x45c>
- buf[i++] = '0';
- 45da: 03000693 li a3,48
- 45de: 00d10823 sb a3,16(sp)
- return i;
- 45e2: 4f05 li t5,1
- if (precision >= 0)
- 45e4: f00bd1e3 bgez s7,44e6 <_vprintf_core.constprop.0.isra.0+0x48a>
- for (int i = digit_len - 1; i >= 0; i--)
- 45e8: ffff0c1b addiw s8,t5,-1
- if (spec == 'p' || (flag_hash && val != 0 && (spec == 'x' || spec == 'X')))
- 45ec: 07000893 li a7,112
- if (!flag_left && !flag_zero)
- 45f0: 016a6d33 or s10,s4,s6
- int prec_zeros = (precision > digit_len) ? precision - digit_len : 0;
- 45f4: 4b81 li s7,0
- for (int i = digit_len - 1; i >= 0; i--)
- 45f6: 8662 mv a2,s8
- if (spec == 'p' || (flag_hash && val != 0 && (spec == 'x' || spec == 'X')))
- 45f8: 0d1c9f63 bne s9,a7,46d6 <_vprintf_core.constprop.0.isra.0+0x67a>
- prefix_str = (spec == 'X') ? "0X" : "0x";
- 45fc: 00002c97 auipc s9,0x2
- 4600: c2cc8c93 addi s9,s9,-980 # 6228 <_GLOBAL__sub_I__ZSt3cin+0x238>
- prefix_len += 2;
- 4604: 2589 addiw a1,a1,2
- int padding = (width > prefix_len + prec_zeros + digit_len) ? width - (prefix_len + prec_zeros + digit_len) : 0;
- 4606: 017585bb addw a1,a1,s7
- 460a: 01e585bb addw a1,a1,t5
- 460e: f085c2e3 blt a1,s0,4512 <_vprintf_core.constprop.0.isra.0+0x4b6>
- if (!flag_left && !flag_zero)
- 4612: 080d0f63 beqz s10,46b0 <_vprintf_core.constprop.0.isra.0+0x654>
- if (sign_char)
- 4616: 6782 ld a5,0(sp)
- int padding = (width > prefix_len + prec_zeros + digit_len) ? width - (prefix_len + prec_zeros + digit_len) : 0;
- 4618: 4401 li s0,0
- if (sign_char)
- 461a: f00782e3 beqz a5,451e <_vprintf_core.constprop.0.isra.0+0x4c2>
- _out_char(ctx, sign_char);
- 461e: 6582 ld a1,0(sp)
- 4620: 8526 mv a0,s1
- 4622: bc7fd0ef jal 21e8 <_out_char>
- 4626: bde5 j 451e <_vprintf_core.constprop.0.isra.0+0x4c2>
- _out_char(ctx, ' ');
- 4628: 02000593 li a1,32
- 462c: 8526 mv a0,s1
- for (int i = 0; i < padding; i++)
- 462e: 2d05 addiw s10,s10,1
- _out_char(ctx, ' ');
- 4630: bb9fd0ef jal 21e8 <_out_char>
- for (int i = 0; i < padding; i++)
- 4634: efa402e3 beq s0,s10,4518 <_vprintf_core.constprop.0.isra.0+0x4bc>
- _out_char(ctx, ' ');
- 4638: 02000593 li a1,32
- 463c: 8526 mv a0,s1
- for (int i = 0; i < padding; i++)
- 463e: 2d05 addiw s10,s10,1
- _out_char(ctx, ' ');
- 4640: ba9fd0ef jal 21e8 <_out_char>
- for (int i = 0; i < padding; i++)
- 4644: ffa412e3 bne s0,s10,4628 <_vprintf_core.constprop.0.isra.0+0x5cc>
- 4648: bdc1 j 4518 <_vprintf_core.constprop.0.isra.0+0x4bc>
- for (int i = 0; i < total_zeros; i++)
- 464a: ee0b9ee3 bnez s7,4546 <_vprintf_core.constprop.0.isra.0+0x4ea>
- for (int i = digit_len - 1; i >= 0; i--)
- 464e: 577d li a4,-1
- 4650: f0ec17e3 bne s8,a4,455e <_vprintf_core.constprop.0.isra.0+0x502>
- for (int i = 0; i < padding; i++)
- 4654: d405 beqz s0,457c <_vprintf_core.constprop.0.isra.0+0x520>
- 4656: 4a01 li s4,0
- _out_char(ctx, ' ');
- 4658: 02000593 li a1,32
- 465c: 8526 mv a0,s1
- for (int i = 0; i < padding; i++)
- 465e: 2a05 addiw s4,s4,1
- _out_char(ctx, ' ');
- 4660: b89fd0ef jal 21e8 <_out_char>
- for (int i = 0; i < padding; i++)
- 4664: fe8a1ae3 bne s4,s0,4658 <_vprintf_core.constprop.0.isra.0+0x5fc>
- char spec = *p++;
- 4668: 6c22 ld s8,8(sp)
- 466a: bc05 j 409a <_vprintf_core.constprop.0.isra.0+0x3e>
- val = (uint64)va_arg(ap, void *);
- 466c: 008c0793 addi a5,s8,8
- 4670: e43e sd a5,8(sp)
- else if (len_mod == 1)
- 4672: 180e9163 bnez t4,47f4 <_vprintf_core.constprop.0.isra.0+0x798>
- val = is_signed ? (uint64)((int64)va_arg(ap, int)) : (uint64)va_arg(ap, uint32);
- 4676: 000c6e03 lwu t3,0(s8)
- val = is_signed ? (uint64)va_arg(ap, int64) : va_arg(ap, uint64);
- 467a: 4581 li a1,0
- 467c: 05800c93 li s9,88
- 4680: e002 sd zero,0(sp)
- 4682: 4341 li t1,16
- const char *digits = uppercase ? "0123456789ABCDEF" : "0123456789abcdef";
- 4684: 00002f97 auipc t6,0x2
- 4688: b74f8f93 addi t6,t6,-1164 # 61f8 <_GLOBAL__sub_I__ZSt3cin+0x208>
- 468c: b525 j 44b4 <_vprintf_core.constprop.0.isra.0+0x458>
- int padding = (width > len) ? width - len : 0;
- 468e: ca8058e3 blez s0,433e <_vprintf_core.constprop.0.isra.0+0x2e2>
- if (!flag_left)
- 4692: ee0a1de3 bnez s4,458c <_vprintf_core.constprop.0.isra.0+0x530>
- int len = 0;
- 4696: 4b81 li s7,0
- for (int i = 0; i < padding; i++)
- 4698: 4d01 li s10,0
- _out_char(ctx, ' ');
- 469a: 02000593 li a1,32
- 469e: 8526 mv a0,s1
- for (int i = 0; i < padding; i++)
- 46a0: 2d05 addiw s10,s10,1
- _out_char(ctx, ' ');
- 46a2: b47fd0ef jal 21e8 <_out_char>
- for (int i = 0; i < padding; i++)
- 46a6: fe8d1ae3 bne s10,s0,469a <_vprintf_core.constprop.0.isra.0+0x63e>
- for (int i = 0; i < len; i++)
- 46aa: c60b9be3 bnez s7,4320 <_vprintf_core.constprop.0.isra.0+0x2c4>
- 46ae: b941 j 433e <_vprintf_core.constprop.0.isra.0+0x2e2>
- if (sign_char)
- 46b0: 6782 ld a5,0(sp)
- 46b2: 4401 li s0,0
- 46b4: f7ad bnez a5,461e <_vprintf_core.constprop.0.isra.0+0x5c2>
- if (prefix_str)
- 46b6: e60c96e3 bnez s9,4522 <_vprintf_core.constprop.0.isra.0+0x4c6>
- for (int i = 0; i < total_zeros; i++)
- 46ba: e80b96e3 bnez s7,4546 <_vprintf_core.constprop.0.isra.0+0x4ea>
- 46be: bd69 j 4558 <_vprintf_core.constprop.0.isra.0+0x4fc>
- int prec_zeros = (precision > digit_len) ? precision - digit_len : 0;
- 46c0: 41eb8bbb subw s7,s7,t5
- 46c4: 8d52 mv s10,s4
- 46c6: 4b01 li s6,0
- for (int i = digit_len - 1; i >= 0; i--)
- 46c8: ffff0c1b addiw s8,t5,-1
- if (spec == 'p' || (flag_hash && val != 0 && (spec == 'x' || spec == 'X')))
- 46cc: 07000893 li a7,112
- for (int i = digit_len - 1; i >= 0; i--)
- 46d0: 8662 mv a2,s8
- if (spec == 'p' || (flag_hash && val != 0 && (spec == 'x' || spec == 'X')))
- 46d2: f31c85e3 beq s9,a7,45fc <_vprintf_core.constprop.0.isra.0+0x5a0>
- 46d6: cd09 beqz a0,46f0 <_vprintf_core.constprop.0.isra.0+0x694>
- 46d8: 000e0c63 beqz t3,46f0 <_vprintf_core.constprop.0.isra.0+0x694>
- 46dc: 07800513 li a0,120
- for (int i = digit_len - 1; i >= 0; i--)
- 46e0: 00060c1b sext.w s8,a2
- if (spec == 'p' || (flag_hash && val != 0 && (spec == 'x' || spec == 'X')))
- 46e4: f0ac8ce3 beq s9,a0,45fc <_vprintf_core.constprop.0.isra.0+0x5a0>
- 46e8: 05800613 li a2,88
- 46ec: 12cc8463 beq s9,a2,4814 <_vprintf_core.constprop.0.isra.0+0x7b8>
- int padding = (width > prefix_len + prec_zeros + digit_len) ? width - (prefix_len + prec_zeros + digit_len) : 0;
- 46f0: 00bb85bb addw a1,s7,a1
- 46f4: 01e585bb addw a1,a1,t5
- char *prefix_str = NULL;
- 46f8: 4c81 li s9,0
- 46fa: bd11 j 450e <_vprintf_core.constprop.0.isra.0+0x4b2>
- if (spec == 'p' || (flag_hash && val != 0 && (spec == 'x' || spec == 'X')))
- 46fc: 07000693 li a3,112
- 4700: 8d52 mv s10,s4
- 4702: 4b01 li s6,0
- 4704: 08dc8d63 beq s9,a3,479e <_vprintf_core.constprop.0.isra.0+0x742>
- 4708: 5c7d li s8,-1
- char *prefix_str = NULL;
- 470a: 4c81 li s9,0
- 470c: b509 j 450e <_vprintf_core.constprop.0.isra.0+0x4b2>
- sign_char = '-';
- 470e: 02d00793 li a5,45
- val = (uint64)(-sval);
- 4712: 40d00e33 neg t3,a3
- 4716: 4585 li a1,1
- 4718: 4329 li t1,10
- const char *digits = uppercase ? "0123456789ABCDEF" : "0123456789abcdef";
- 471a: 00002f97 auipc t6,0x2
- 471e: af6f8f93 addi t6,t6,-1290 # 6210 <_GLOBAL__sub_I__ZSt3cin+0x220>
- sign_char = '-';
- 4722: e03e sd a5,0(sp)
- 4724: bb51 j 44b8 <_vprintf_core.constprop.0.isra.0+0x45c>
- s = "(null)";
- 4726: 00002c97 auipc s9,0x2
- 472a: b12c8c93 addi s9,s9,-1262 # 6238 <_GLOBAL__sub_I__ZSt3cin+0x248>
- 472e: bed1 j 4302 <_vprintf_core.constprop.0.isra.0+0x2a6>
- val = is_signed ? (uint64)va_arg(ap, int64) : va_arg(ap, uint64);
- 4730: 000c3683 ld a3,0(s8)
- 4734: 008c0713 addi a4,s8,8
- 4738: e43a sd a4,8(sp)
- 473a: 8dbe mv s11,a5
- 473c: 8e36 mv t3,a3
- if (is_signed)
- 473e: bdad j 45b8 <_vprintf_core.constprop.0.isra.0+0x55c>
- int is_signed = (spec == 'd' || spec == 'i');
- 4740: 06900693 li a3,105
- 4744: fedc86e3 beq s9,a3,4730 <_vprintf_core.constprop.0.isra.0+0x6d4>
- val = (uint64)va_arg(ap, void *);
- 4748: 008c0713 addi a4,s8,8
- int base = (spec == 'x' || spec == 'X' || spec == 'p') ? 16 : 10;
- 474c: 07800693 li a3,120
- val = (uint64)va_arg(ap, void *);
- 4750: e43a sd a4,8(sp)
- int base = (spec == 'x' || spec == 'X' || spec == 'p') ? 16 : 10;
- 4752: 06dc9063 bne s9,a3,47b2 <_vprintf_core.constprop.0.isra.0+0x756>
- val = is_signed ? (uint64)va_arg(ap, int64) : va_arg(ap, uint64);
- 4756: 000c3e03 ld t3,0(s8)
- 475a: 8dbe mv s11,a5
- 475c: 4581 li a1,0
- 475e: e002 sd zero,0(sp)
- int base = (spec == 'x' || spec == 'X' || spec == 'p') ? 16 : 10;
- 4760: 4341 li t1,16
- const char *digits = uppercase ? "0123456789ABCDEF" : "0123456789abcdef";
- 4762: 00002f97 auipc t6,0x2
- 4766: aaef8f93 addi t6,t6,-1362 # 6210 <_GLOBAL__sub_I__ZSt3cin+0x220>
- 476a: b3a9 j 44b4 <_vprintf_core.constprop.0.isra.0+0x458>
- for (int i = 0; i < padding; i++)
- 476c: c809 beqz s0,477e <_vprintf_core.constprop.0.isra.0+0x722>
- _out_char(ctx, ' ');
- 476e: 02000593 li a1,32
- 4772: 8526 mv a0,s1
- for (int i = 0; i < padding; i++)
- 4774: 2a05 addiw s4,s4,1
- _out_char(ctx, ' ');
- 4776: a73fd0ef jal 21e8 <_out_char>
- for (int i = 0; i < padding; i++)
- 477a: ff441ae3 bne s0,s4,476e <_vprintf_core.constprop.0.isra.0+0x712>
- _out_char(ctx, c);
- 477e: 85e6 mv a1,s9
- 4780: 8526 mv a0,s1
- 4782: a67fd0ef jal 21e8 <_out_char>
- const char *s = va_arg(ap, char *);
- 4786: 0c21 addi s8,s8,8
- 4788: ba09 j 409a <_vprintf_core.constprop.0.isra.0+0x3e>
- val = is_signed ? (uint64)va_arg(ap, long) : (uint64)va_arg(ap, unsigned long);
- 478a: 000c3683 ld a3,0(s8)
- 478e: 008c0793 addi a5,s8,8
- 4792: e43e sd a5,8(sp)
- 4794: 8e36 mv t3,a3
- if (is_signed)
- 4796: b50d j 45b8 <_vprintf_core.constprop.0.isra.0+0x55c>
- if (spec == 'p' || (flag_hash && val != 0 && (spec == 'x' || spec == 'X')))
- 4798: 8d52 mv s10,s4
- 479a: 4b01 li s6,0
- 479c: b585 j 45fc <_vprintf_core.constprop.0.isra.0+0x5a0>
- digit_len = 0;
- 479e: 4f01 li t5,0
- if (spec == 'p' || (flag_hash && val != 0 && (spec == 'x' || spec == 'X')))
- 47a0: 5c7d li s8,-1
- prefix_str = (spec == 'X') ? "0X" : "0x";
- 47a2: 00002c97 auipc s9,0x2
- 47a6: a86c8c93 addi s9,s9,-1402 # 6228 <_GLOBAL__sub_I__ZSt3cin+0x238>
- 47aa: bda9 j 4604 <_vprintf_core.constprop.0.isra.0+0x5a8>
- if (spec == 'p' || (flag_hash && val != 0 && (spec == 'x' || spec == 'X')))
- 47ac: 8d52 mv s10,s4
- 47ae: 4b01 li s6,0
- 47b0: b735 j 46dc <_vprintf_core.constprop.0.isra.0+0x680>
- int base = (spec == 'x' || spec == 'X' || spec == 'p') ? 16 : 10;
- 47b2: 07000693 li a3,112
- 47b6: 04dc8263 beq s9,a3,47fa <_vprintf_core.constprop.0.isra.0+0x79e>
- val = is_signed ? (uint64)va_arg(ap, int64) : va_arg(ap, uint64);
- 47ba: 000c3e03 ld t3,0(s8)
- 47be: 8dbe mv s11,a5
- 47c0: 4581 li a1,0
- 47c2: e002 sd zero,0(sp)
- int base = (spec == 'x' || spec == 'X' || spec == 'p') ? 16 : 10;
- 47c4: 4329 li t1,10
- const char *digits = uppercase ? "0123456789ABCDEF" : "0123456789abcdef";
- 47c6: 00002f97 auipc t6,0x2
- 47ca: a4af8f93 addi t6,t6,-1462 # 6210 <_GLOBAL__sub_I__ZSt3cin+0x220>
- 47ce: b1dd j 44b4 <_vprintf_core.constprop.0.isra.0+0x458>
- val = is_signed ? (uint64)va_arg(ap, long) : (uint64)va_arg(ap, unsigned long);
- 47d0: 000c3e03 ld t3,0(s8)
- 47d4: 4581 li a1,0
- 47d6: e002 sd zero,0(sp)
- int base = (spec == 'x' || spec == 'X' || spec == 'p') ? 16 : 10;
- 47d8: 4341 li t1,16
- const char *digits = uppercase ? "0123456789ABCDEF" : "0123456789abcdef";
- 47da: 00002f97 auipc t6,0x2
- 47de: a36f8f93 addi t6,t6,-1482 # 6210 <_GLOBAL__sub_I__ZSt3cin+0x220>
- 47e2: b9c9 j 44b4 <_vprintf_core.constprop.0.isra.0+0x458>
- char spec = *p++;
- 47e4: 8dbe mv s11,a5
- 47e6: b911 j 43fa <_vprintf_core.constprop.0.isra.0+0x39e>
- for (int i = digit_len - 1; i >= 0; i--)
- 47e8: 577d li a4,-1
- 47ea: 4401 li s0,0
- 47ec: d6ec19e3 bne s8,a4,455e <_vprintf_core.constprop.0.isra.0+0x502>
- char spec = *p++;
- 47f0: 6c22 ld s8,8(sp)
- 47f2: b065 j 409a <_vprintf_core.constprop.0.isra.0+0x3e>
- val = is_signed ? (uint64)va_arg(ap, long) : (uint64)va_arg(ap, unsigned long);
- 47f4: 000c3e03 ld t3,0(s8)
- const char *digits = uppercase ? "0123456789ABCDEF" : "0123456789abcdef";
- 47f8: b549 j 467a <_vprintf_core.constprop.0.isra.0+0x61e>
- int base = (spec == 'x' || spec == 'X' || spec == 'p') ? 16 : 10;
- 47fa: 8dbe mv s11,a5
- val = (uint64)va_arg(ap, void *);
- 47fc: 000c3e03 ld t3,0(s8)
- 4800: 4581 li a1,0
- 4802: 07000c93 li s9,112
- 4806: e002 sd zero,0(sp)
- 4808: 4341 li t1,16
- const char *digits = uppercase ? "0123456789ABCDEF" : "0123456789abcdef";
- 480a: 00002f97 auipc t6,0x2
- 480e: a06f8f93 addi t6,t6,-1530 # 6210 <_GLOBAL__sub_I__ZSt3cin+0x220>
- 4812: b14d j 44b4 <_vprintf_core.constprop.0.isra.0+0x458>
- prefix_str = (spec == 'X') ? "0X" : "0x";
- 4814: 00002c97 auipc s9,0x2
- 4818: a1cc8c93 addi s9,s9,-1508 # 6230 <_GLOBAL__sub_I__ZSt3cin+0x240>
- 481c: b3e5 j 4604 <_vprintf_core.constprop.0.isra.0+0x5a8>
- val = (uint64)va_arg(ap, void *);
- 481e: 008c0713 addi a4,s8,8
- val = is_signed ? (uint64)va_arg(ap, int64) : va_arg(ap, uint64);
- 4822: 000c3e03 ld t3,0(s8)
- val = (uint64)va_arg(ap, void *);
- 4826: e43a sd a4,8(sp)
- val = is_signed ? (uint64)va_arg(ap, int64) : va_arg(ap, uint64);
- 4828: 8dbe mv s11,a5
- 482a: bd81 j 467a <_vprintf_core.constprop.0.isra.0+0x61e>
- 482c: 8d52 mv s10,s4
- 482e: 4b01 li s6,0
- 4830: 4b81 li s7,0
- 4832: bd59 j 46c8 <_vprintf_core.constprop.0.isra.0+0x66c>
- int base = (spec == 'x' || spec == 'X' || spec == 'p') ? 16 : 10;
- 4834: 07000693 li a3,112
- 4838: fcdc82e3 beq s9,a3,47fc <_vprintf_core.constprop.0.isra.0+0x7a0>
- else if (len_mod == 1)
- 483c: 01ce8c63 beq t4,t3,4854 <_vprintf_core.constprop.0.isra.0+0x7f8>
- val = is_signed ? (uint64)((int64)va_arg(ap, int)) : (uint64)va_arg(ap, uint32);
- 4840: 000c6e03 lwu t3,0(s8)
- const char *digits = uppercase ? "0123456789ABCDEF" : "0123456789abcdef";
- 4844: 4581 li a1,0
- 4846: e002 sd zero,0(sp)
- 4848: 4329 li t1,10
- 484a: 00002f97 auipc t6,0x2
- 484e: 9c6f8f93 addi t6,t6,-1594 # 6210 <_GLOBAL__sub_I__ZSt3cin+0x220>
- 4852: b18d j 44b4 <_vprintf_core.constprop.0.isra.0+0x458>
- val = is_signed ? (uint64)va_arg(ap, long) : (uint64)va_arg(ap, unsigned long);
- 4854: 000c3e03 ld t3,0(s8)
- if (is_signed)
- 4858: b7f5 j 4844 <_vprintf_core.constprop.0.isra.0+0x7e8>
-
-000000000000485a <vsnprintf>:
-{
- 485a: 7139 addi sp,sp,-64
- 485c: f822 sd s0,48(sp)
- 485e: f426 sd s1,40(sp)
- 4860: 842e mv s0,a1
- 4862: 84aa mv s1,a0
- 4864: 85b2 mv a1,a2
- _vprintf_core(&ctx, format, ap);
- 4866: 850a mv a0,sp
- 4868: 8636 mv a2,a3
-{
- 486a: fc06 sd ra,56(sp)
- ctx.buf = str;
- 486c: e026 sd s1,0(sp)
- ctx.limit = size;
- 486e: e422 sd s0,8(sp)
- ctx.written = 0;
- 4870: e802 sd zero,16(sp)
- ctx.stream = NULL;
- 4872: ec02 sd zero,24(sp)
- _vprintf_core(&ctx, format, ap);
- 4874: fe8ff0ef jal 405c <_vprintf_core.constprop.0.isra.0>
- if (ctx.written < size)
- 4878: 6542 ld a0,16(sp)
- if (size > 0)
- 487a: c411 beqz s0,4886 <vsnprintf+0x2c>
- if (ctx.written < size)
- 487c: 00857b63 bgeu a0,s0,4892 <vsnprintf+0x38>
- str[ctx.written] = '\0';
- 4880: 94aa add s1,s1,a0
- 4882: 00048023 sb zero,0(s1)
-}
- 4886: 70e2 ld ra,56(sp)
- 4888: 7442 ld s0,48(sp)
- 488a: 74a2 ld s1,40(sp)
- 488c: 2501 sext.w a0,a0
- 488e: 6121 addi sp,sp,64
- 4890: 8082 ret
- str[size - 1] = '\0';
- 4892: 94a2 add s1,s1,s0
- 4894: fe048fa3 sb zero,-1(s1)
-}
- 4898: 70e2 ld ra,56(sp)
- 489a: 7442 ld s0,48(sp)
- 489c: 74a2 ld s1,40(sp)
- 489e: 2501 sext.w a0,a0
- 48a0: 6121 addi sp,sp,64
- 48a2: 8082 ret
-
-00000000000048a4 <snprintf>:
-{
- 48a4: 7119 addi sp,sp,-128
- 48a6: e0a2 sd s0,64(sp)
- 48a8: fc26 sd s1,56(sp)
- 48aa: 842e mv s0,a1
- 48ac: 84aa mv s1,a0
- 48ae: 85b2 mv a1,a2
- _vprintf_core(&ctx, format, ap);
- 48b0: 0808 addi a0,sp,16
- va_start(ap, format);
- 48b2: 08b0 addi a2,sp,88
-{
- 48b4: e486 sd ra,72(sp)
- 48b6: ecb6 sd a3,88(sp)
- 48b8: f0ba sd a4,96(sp)
- 48ba: f4be sd a5,104(sp)
- 48bc: f8c2 sd a6,112(sp)
- 48be: fcc6 sd a7,120(sp)
- va_start(ap, format);
- 48c0: e432 sd a2,8(sp)
- ctx.buf = str;
- 48c2: e826 sd s1,16(sp)
- ctx.limit = size;
- 48c4: ec22 sd s0,24(sp)
- ctx.written = 0;
- 48c6: f002 sd zero,32(sp)
- ctx.stream = NULL;
- 48c8: f402 sd zero,40(sp)
- _vprintf_core(&ctx, format, ap);
- 48ca: f92ff0ef jal 405c <_vprintf_core.constprop.0.isra.0>
- if (ctx.written < size)
- 48ce: 7502 ld a0,32(sp)
- if (size > 0)
- 48d0: c411 beqz s0,48dc <snprintf+0x38>
- if (ctx.written < size)
- 48d2: 00857b63 bgeu a0,s0,48e8 <snprintf+0x44>
- str[ctx.written] = '\0';
- 48d6: 94aa add s1,s1,a0
- 48d8: 00048023 sb zero,0(s1)
-}
- 48dc: 60a6 ld ra,72(sp)
- 48de: 6406 ld s0,64(sp)
- 48e0: 74e2 ld s1,56(sp)
- 48e2: 2501 sext.w a0,a0
- 48e4: 6109 addi sp,sp,128
- 48e6: 8082 ret
- str[size - 1] = '\0';
- 48e8: 94a2 add s1,s1,s0
- 48ea: fe048fa3 sb zero,-1(s1)
-}
- 48ee: 60a6 ld ra,72(sp)
- 48f0: 6406 ld s0,64(sp)
- 48f2: 74e2 ld s1,56(sp)
- 48f4: 2501 sext.w a0,a0
- 48f6: 6109 addi sp,sp,128
- 48f8: 8082 ret
-
-00000000000048fa <printf>:
-{
- 48fa: 7119 addi sp,sp,-128
- va_start(ap, format);
- 48fc: 04810313 addi t1,sp,72
-{
- 4900: e4ae sd a1,72(sp)
- 4902: e8b2 sd a2,80(sp)
- 4904: f4be sd a5,104(sp)
- _vprintf_core(&ctx, format, ap);
- 4906: 85aa mv a1,a0
- ctx.stream = stdout;
- 4908: 00004797 auipc a5,0x4
- 490c: 3707b783 ld a5,880(a5) # 8c78 <stdout>
- _vprintf_core(&ctx, format, ap);
- 4910: 0808 addi a0,sp,16
- 4912: 861a mv a2,t1
-{
- 4914: fc06 sd ra,56(sp)
- 4916: ecb6 sd a3,88(sp)
- 4918: f0ba sd a4,96(sp)
- 491a: f8c2 sd a6,112(sp)
- 491c: fcc6 sd a7,120(sp)
- va_start(ap, format);
- 491e: e41a sd t1,8(sp)
- ctx.buf = NULL;
- 4920: e802 sd zero,16(sp)
- ctx.limit = 0;
- 4922: ec02 sd zero,24(sp)
- ctx.written = 0;
- 4924: f002 sd zero,32(sp)
- ctx.stream = stdout;
- 4926: f43e sd a5,40(sp)
- _vprintf_core(&ctx, format, ap);
- 4928: f34ff0ef jal 405c <_vprintf_core.constprop.0.isra.0>
-}
- 492c: 70e2 ld ra,56(sp)
- 492e: 5502 lw a0,32(sp)
- 4930: 6109 addi sp,sp,128
- 4932: 8082 ret
-
-0000000000004934 <sscanf>:
-{
- 4934: 7159 addi sp,sp,-112
- va_start(ap, format);
- 4936: 04010e13 addi t3,sp,64
-{
- 493a: 8eaa mv t4,a0
- ctx.fd = -1;
- 493c: 537d li t1,-1
-{
- 493e: e0b2 sd a2,64(sp)
- int ret = _vscanf_core(&ctx, format, ap);
- 4940: 0808 addi a0,sp,16
- 4942: 8672 mv a2,t3
-{
- 4944: fc06 sd ra,56(sp)
- 4946: e4b6 sd a3,72(sp)
- 4948: e8ba sd a4,80(sp)
- 494a: ecbe sd a5,88(sp)
- 494c: f0c2 sd a6,96(sp)
- 494e: f4c6 sd a7,104(sp)
- va_start(ap, format);
- 4950: e472 sd t3,8(sp)
- ctx.buf = str;
- 4952: e876 sd t4,16(sp)
- ctx.fd = -1;
- 4954: cc1a sw t1,24(sp)
- ctx.pos = 0;
- 4956: f002 sd zero,32(sp)
- ctx.ungotten = -1;
- 4958: d41a sw t1,40(sp)
- int ret = _vscanf_core(&ctx, format, ap);
- 495a: 81efd0ef jal 1978 <_vscanf_core.constprop.0>
-}
- 495e: 70e2 ld ra,56(sp)
- 4960: 6165 addi sp,sp,112
- 4962: 8082 ret
-
-0000000000004964 <scanf>:
-{
- 4964: 7119 addi sp,sp,-128
- va_start(ap, format);
- 4966: 04810313 addi t1,sp,72
-{
- 496a: e4ae sd a1,72(sp)
- 496c: e8b2 sd a2,80(sp)
- 496e: f4be sd a5,104(sp)
- int ret = _vscanf_core(&ctx, format, ap);
- 4970: 85aa mv a1,a0
- ctx.ungotten = -1;
- 4972: 57fd li a5,-1
- int ret = _vscanf_core(&ctx, format, ap);
- 4974: 0808 addi a0,sp,16
- 4976: 861a mv a2,t1
-{
- 4978: fc06 sd ra,56(sp)
- 497a: ecb6 sd a3,88(sp)
- 497c: f0ba sd a4,96(sp)
- 497e: f8c2 sd a6,112(sp)
- 4980: fcc6 sd a7,120(sp)
- va_start(ap, format);
- 4982: e41a sd t1,8(sp)
- ctx.buf = NULL;
- 4984: e802 sd zero,16(sp)
- ctx.fd = STDIN_FD;
- 4986: cc02 sw zero,24(sp)
- ctx.pos = 0;
- 4988: f002 sd zero,32(sp)
- ctx.ungotten = -1;
- 498a: d43e sw a5,40(sp)
- int ret = _vscanf_core(&ctx, format, ap);
- 498c: fedfc0ef jal 1978 <_vscanf_core.constprop.0>
-}
- 4990: 70e2 ld ra,56(sp)
- 4992: 6109 addi sp,sp,128
- 4994: 8082 ret
-
-0000000000004996 <fopen>:
-{
- 4996: 1101 addi sp,sp,-32
- 4998: e426 sd s1,8(sp)
- 499a: 84ae mv s1,a1
- 499c: e04a sd s2,0(sp)
- if (strcmp(mode, "r") == 0)
- 499e: 00002597 auipc a1,0x2
- 49a2: 8b258593 addi a1,a1,-1870 # 6250 <_GLOBAL__sub_I__ZSt3cin+0x260>
-{
- 49a6: 892a mv s2,a0
- if (strcmp(mode, "r") == 0)
- 49a8: 8526 mv a0,s1
-{
- 49aa: e822 sd s0,16(sp)
- 49ac: ec06 sd ra,24(sp)
- if (strcmp(mode, "r") == 0)
- 49ae: 298010ef jal 5c46 <strcmp>
- 49b2: 842a mv s0,a0
- 49b4: c919 beqz a0,49ca <fopen+0x34>
- else if (strcmp(mode, "w") == 0)
- 49b6: 00002597 auipc a1,0x2
- 49ba: 8a258593 addi a1,a1,-1886 # 6258 <_GLOBAL__sub_I__ZSt3cin+0x268>
- 49be: 8526 mv a0,s1
- 49c0: 286010ef jal 5c46 <strcmp>
- flags = O_WRONLY | O_CREAT | O_TRUNC;
- 49c4: 24100413 li s0,577
- else if (strcmp(mode, "w") == 0)
- 49c8: ed39 bnez a0,4a26 <fopen+0x90>
- int64 fd = open(filename, flags);
- 49ca: 85a2 mv a1,s0
- 49cc: 854a mv a0,s2
- 49ce: f42fc0ef jal 1110 <open>
- 49d2: 84aa mv s1,a0
- if (fd < 0)
- 49d4: 06054c63 bltz a0,4a4c <fopen+0xb6>
- FILE *f = (FILE *)malloc(sizeof(FILE));
- 49d8: 42000513 li a0,1056
- 49dc: 2f3000ef jal 54ce <malloc>
- 49e0: 892a mv s2,a0
- if (!f)
- 49e2: c53d beqz a0,4a50 <fopen+0xba>
- memset(f, 0, sizeof(FILE));
- 49e4: 42000613 li a2,1056
- 49e8: 4581 li a1,0
- 49ea: 0ee010ef jal 5ad8 <memset>
- if (fd == 1)
- 49ee: 4785 li a5,1
- f->fd = (int)fd;
- 49f0: 00992023 sw s1,0(s2)
- f->flags = flags;
- 49f4: 00892223 sw s0,4(s2)
- if (fd == 1)
- 49f8: 00f48e63 beq s1,a5,4a14 <fopen+0x7e>
- else if (fd == 2)
- 49fc: 4789 li a5,2
- 49fe: 00f48b63 beq s1,a5,4a14 <fopen+0x7e>
- f->buf_mode = 0;
- 4a02: 40092e23 sw zero,1052(s2)
-}
- 4a06: 60e2 ld ra,24(sp)
- 4a08: 6442 ld s0,16(sp)
- 4a0a: 64a2 ld s1,8(sp)
- 4a0c: 854a mv a0,s2
- 4a0e: 6902 ld s2,0(sp)
- 4a10: 6105 addi sp,sp,32
- 4a12: 8082 ret
- 4a14: 60e2 ld ra,24(sp)
- 4a16: 6442 ld s0,16(sp)
- f->buf_mode = 2;
- 4a18: 40992e23 sw s1,1052(s2)
-}
- 4a1c: 854a mv a0,s2
- 4a1e: 64a2 ld s1,8(sp)
- 4a20: 6902 ld s2,0(sp)
- 4a22: 6105 addi sp,sp,32
- 4a24: 8082 ret
- else if (strcmp(mode, "a") == 0)
- 4a26: 00002597 auipc a1,0x2
- 4a2a: 83a58593 addi a1,a1,-1990 # 6260 <_GLOBAL__sub_I__ZSt3cin+0x270>
- 4a2e: 8526 mv a0,s1
- 4a30: 216010ef jal 5c46 <strcmp>
- flags = O_WRONLY | O_CREAT | O_APPEND;
- 4a34: 44100413 li s0,1089
- else if (strcmp(mode, "a") == 0)
- 4a38: d949 beqz a0,49ca <fopen+0x34>
- else if (strcmp(mode, "r+") == 0)
- 4a3a: 00002597 auipc a1,0x2
- 4a3e: 82e58593 addi a1,a1,-2002 # 6268 <_GLOBAL__sub_I__ZSt3cin+0x278>
- 4a42: 8526 mv a0,s1
- 4a44: 202010ef jal 5c46 <strcmp>
- flags = O_RDWR;
- 4a48: 4409 li s0,2
- else if (strcmp(mode, "r+") == 0)
- 4a4a: d141 beqz a0,49ca <fopen+0x34>
- return NULL;
- 4a4c: 4901 li s2,0
- 4a4e: bf65 j 4a06 <fopen+0x70>
- close(fd);
- 4a50: 8526 mv a0,s1
- 4a52: ea6fc0ef jal 10f8 <close>
- return NULL;
- 4a56: 4901 li s2,0
- 4a58: b77d j 4a06 <fopen+0x70>
-
-0000000000004a5a <fclose>:
- if (!stream)
- 4a5a: cd29 beqz a0,4ab4 <fclose+0x5a>
- if (stream->buf_write_pos > 0)
- 4a5c: 41052603 lw a2,1040(a0)
-{
- 4a60: 1141 addi sp,sp,-16
- 4a62: e022 sd s0,0(sp)
- 4a64: e406 sd ra,8(sp)
- 4a66: 842a mv s0,a0
- if (stream->buf_write_pos > 0)
- 4a68: 02c04a63 bgtz a2,4a9c <fclose+0x42>
- if (stream != stdin && stream != stdout && stream != stderr)
- 4a6c: 00004797 auipc a5,0x4
- 4a70: 20c78793 addi a5,a5,524 # 8c78 <stdout>
- 4a74: 6798 ld a4,8(a5)
- 4a76: 00870e63 beq a4,s0,4a92 <fclose+0x38>
- 4a7a: 6398 ld a4,0(a5)
- 4a7c: 00870b63 beq a4,s0,4a92 <fclose+0x38>
- 4a80: 6b9c ld a5,16(a5)
- 4a82: 00878863 beq a5,s0,4a92 <fclose+0x38>
- close(stream->fd);
- 4a86: 4008 lw a0,0(s0)
- 4a88: e70fc0ef jal 10f8 <close>
- free(stream);
- 4a8c: 8522 mv a0,s0
- 4a8e: 1cb000ef jal 5458 <free>
-}
- 4a92: 60a2 ld ra,8(sp)
- 4a94: 6402 ld s0,0(sp)
- return 0;
- 4a96: 4501 li a0,0
-}
- 4a98: 0141 addi sp,sp,16
- 4a9a: 8082 ret
- int64 ret = write(stream->fd, stream->buffer, stream->buf_write_pos);
- 4a9c: 4108 lw a0,0(a0)
- 4a9e: 01040593 addi a1,s0,16
- 4aa2: e4efc0ef jal 10f0 <write>
- if (ret < stream->buf_write_pos)
- 4aa6: 41042783 lw a5,1040(s0)
- 4aaa: 00f54763 blt a0,a5,4ab8 <fclose+0x5e>
- stream->buf_write_pos = 0;
- 4aae: 40042823 sw zero,1040(s0)
- 4ab2: bf6d j 4a6c <fclose+0x12>
- return -1;
- 4ab4: 557d li a0,-1
-}
- 4ab6: 8082 ret
- stream->error = 1;
- 4ab8: 4785 li a5,1
- 4aba: c41c sw a5,8(s0)
- stream->buf_write_pos = 0;
- 4abc: 40042823 sw zero,1040(s0)
- return EOF;
- 4ac0: b775 j 4a6c <fclose+0x12>
-
-0000000000004ac2 <fflush>:
- if (!stream)
- 4ac2: c121 beqz a0,4b02 <fflush+0x40>
- if (stream->buf_write_pos > 0)
- 4ac4: 41052603 lw a2,1040(a0)
-{
- 4ac8: 1141 addi sp,sp,-16
- 4aca: e022 sd s0,0(sp)
- 4acc: e406 sd ra,8(sp)
- 4ace: 842a mv s0,a0
- if (stream->buf_write_pos > 0)
- 4ad0: 00c04763 bgtz a2,4ade <fflush+0x1c>
- return 0;
- 4ad4: 4501 li a0,0
-}
- 4ad6: 60a2 ld ra,8(sp)
- 4ad8: 6402 ld s0,0(sp)
- 4ada: 0141 addi sp,sp,16
- 4adc: 8082 ret
- int64 ret = write(stream->fd, stream->buffer, stream->buf_write_pos);
- 4ade: 4108 lw a0,0(a0)
- 4ae0: 01040593 addi a1,s0,16
- 4ae4: e0cfc0ef jal 10f0 <write>
- if (ret < stream->buf_write_pos)
- 4ae8: 41042783 lw a5,1040(s0)
- 4aec: 00f54563 blt a0,a5,4af6 <fflush+0x34>
- stream->buf_write_pos = 0;
- 4af0: 40042823 sw zero,1040(s0)
- 4af4: b7c5 j 4ad4 <fflush+0x12>
- stream->error = 1;
- 4af6: 4785 li a5,1
- 4af8: c41c sw a5,8(s0)
- stream->buf_write_pos = 0;
- 4afa: 40042823 sw zero,1040(s0)
- return EOF;
- 4afe: 557d li a0,-1
- 4b00: bfd9 j 4ad6 <fflush+0x14>
- 4b02: 557d li a0,-1
-}
- 4b04: 8082 ret
-
-0000000000004b06 <fprintf>:
-{
- 4b06: 7159 addi sp,sp,-112
- 4b08: fc06 sd ra,56(sp)
- 4b0a: e0b2 sd a2,64(sp)
- 4b0c: e4b6 sd a3,72(sp)
- 4b0e: e8ba sd a4,80(sp)
- 4b10: ecbe sd a5,88(sp)
- 4b12: f0c2 sd a6,96(sp)
- 4b14: f4c6 sd a7,104(sp)
- if (!stream)
- 4b16: cd19 beqz a0,4b34 <fprintf+0x2e>
- va_start(ap, format);
- 4b18: 832a mv t1,a0
- 4b1a: 0090 addi a2,sp,64
- _vprintf_core(&ctx, format, ap);
- 4b1c: 0808 addi a0,sp,16
- va_start(ap, format);
- 4b1e: e432 sd a2,8(sp)
- ctx.buf = NULL;
- 4b20: e802 sd zero,16(sp)
- ctx.limit = 0;
- 4b22: ec02 sd zero,24(sp)
- ctx.written = 0;
- 4b24: f002 sd zero,32(sp)
- ctx.stream = stream;
- 4b26: f41a sd t1,40(sp)
- _vprintf_core(&ctx, format, ap);
- 4b28: d34ff0ef jal 405c <_vprintf_core.constprop.0.isra.0>
- return (int)ctx.written;
- 4b2c: 5502 lw a0,32(sp)
-}
- 4b2e: 70e2 ld ra,56(sp)
- 4b30: 6165 addi sp,sp,112
- 4b32: 8082 ret
- return -1;
- 4b34: 557d li a0,-1
- 4b36: bfe5 j 4b2e <fprintf+0x28>
-
-0000000000004b38 <fscanf>:
-{
- 4b38: 7159 addi sp,sp,-112
- 4b3a: fc06 sd ra,56(sp)
- 4b3c: e0b2 sd a2,64(sp)
- 4b3e: e4b6 sd a3,72(sp)
- 4b40: e8ba sd a4,80(sp)
- 4b42: ecbe sd a5,88(sp)
- 4b44: f0c2 sd a6,96(sp)
- 4b46: f4c6 sd a7,104(sp)
- if (!stream)
- 4b48: cd19 beqz a0,4b66 <fscanf+0x2e>
- ctx.fd = stream->fd;
- 4b4a: 411c lw a5,0(a0)
- va_start(ap, format);
- 4b4c: 0090 addi a2,sp,64
- int ret = _vscanf_core(&ctx, format, ap);
- 4b4e: 0808 addi a0,sp,16
- ctx.fd = stream->fd;
- 4b50: cc3e sw a5,24(sp)
- ctx.ungotten = -1;
- 4b52: 57fd li a5,-1
- va_start(ap, format);
- 4b54: e432 sd a2,8(sp)
- ctx.buf = NULL;
- 4b56: e802 sd zero,16(sp)
- ctx.pos = 0;
- 4b58: f002 sd zero,32(sp)
- ctx.ungotten = -1;
- 4b5a: d43e sw a5,40(sp)
- int ret = _vscanf_core(&ctx, format, ap);
- 4b5c: e1dfc0ef jal 1978 <_vscanf_core.constprop.0>
-}
- 4b60: 70e2 ld ra,56(sp)
- 4b62: 6165 addi sp,sp,112
- 4b64: 8082 ret
- return -1;
- 4b66: 557d li a0,-1
- 4b68: bfe5 j 4b60 <fscanf+0x28>
-
-0000000000004b6a <fputc>:
- if (!stream)
- 4b6a: c1e1 beqz a1,4c2a <fputc+0xc0>
-{
- 4b6c: 7179 addi sp,sp,-48
- 4b6e: e84a sd s2,16(sp)
- if (stream->buf_mode == 2)
- 4b70: 41c5a903 lw s2,1052(a1)
-{
- 4b74: f022 sd s0,32(sp)
- 4b76: ec26 sd s1,24(sp)
- 4b78: f406 sd ra,40(sp)
- if (stream->buf_mode == 2)
- 4b7a: 4789 li a5,2
- 4b7c: 842e mv s0,a1
- 4b7e: 84aa mv s1,a0
- char ch = (char)c;
- 4b80: 0ff57713 zext.b a4,a0
- if (stream->buf_mode == 2)
- 4b84: 02f90963 beq s2,a5,4bb6 <fputc+0x4c>
- stream->buffer[stream->buf_write_pos++] = (char)c;
- 4b88: 4105a783 lw a5,1040(a1)
- if (stream->buf_write_pos >= BUFSIZ)
- 4b8c: 3ff00693 li a3,1023
- stream->buffer[stream->buf_write_pos++] = (char)c;
- 4b90: 0017861b addiw a2,a5,1
- 4b94: 40c5a823 sw a2,1040(a1)
- 4b98: 97ae add a5,a5,a1
- 4b9a: 00e78823 sb a4,16(a5)
- if (stream->buf_write_pos >= BUFSIZ)
- 4b9e: 06c6c463 blt a3,a2,4c06 <fputc+0x9c>
- else if (stream->buf_mode == 1 && c == '\n')
- 4ba2: 4785 li a5,1
- 4ba4: 02f90e63 beq s2,a5,4be0 <fputc+0x76>
- return c;
- 4ba8: 8526 mv a0,s1
-}
- 4baa: 70a2 ld ra,40(sp)
- 4bac: 7402 ld s0,32(sp)
- 4bae: 64e2 ld s1,24(sp)
- 4bb0: 6942 ld s2,16(sp)
- 4bb2: 6145 addi sp,sp,48
- 4bb4: 8082 ret
- if (write(stream->fd, &ch, 1) != 1)
- 4bb6: 4188 lw a0,0(a1)
- 4bb8: 4605 li a2,1
- 4bba: 00f10593 addi a1,sp,15
- char ch = (char)c;
- 4bbe: 00e107a3 sb a4,15(sp)
- if (write(stream->fd, &ch, 1) != 1)
- 4bc2: d2efc0ef jal 10f0 <write>
- 4bc6: 872a mv a4,a0
- 4bc8: 4785 li a5,1
- return c;
- 4bca: 8526 mv a0,s1
- if (write(stream->fd, &ch, 1) != 1)
- 4bcc: fcf70fe3 beq a4,a5,4baa <fputc+0x40>
-}
- 4bd0: 70a2 ld ra,40(sp)
- stream->error = 1;
- 4bd2: c41c sw a5,8(s0)
-}
- 4bd4: 7402 ld s0,32(sp)
- 4bd6: 64e2 ld s1,24(sp)
- 4bd8: 6942 ld s2,16(sp)
- return EOF;
- 4bda: 557d li a0,-1
-}
- 4bdc: 6145 addi sp,sp,48
- 4bde: 8082 ret
- else if (stream->buf_mode == 1 && c == '\n')
- 4be0: 47a9 li a5,10
- 4be2: fcf513e3 bne a0,a5,4ba8 <fputc+0x3e>
- if (stream->buf_write_pos > 0)
- 4be6: fcc051e3 blez a2,4ba8 <fputc+0x3e>
- int64 ret = write(stream->fd, stream->buffer, stream->buf_write_pos);
- 4bea: 4188 lw a0,0(a1)
- 4bec: 05c1 addi a1,a1,16
- 4bee: d02fc0ef jal 10f0 <write>
- if (ret < stream->buf_write_pos)
- 4bf2: 41042783 lw a5,1040(s0)
- 4bf6: 02f55063 bge a0,a5,4c16 <fputc+0xac>
- stream->error = 1;
- 4bfa: 01242423 sw s2,8(s0)
- stream->buf_write_pos = 0;
- 4bfe: 40042823 sw zero,1040(s0)
- return c;
- 4c02: 8526 mv a0,s1
- 4c04: b75d j 4baa <fputc+0x40>
- int64 ret = write(stream->fd, stream->buffer, stream->buf_write_pos);
- 4c06: 4188 lw a0,0(a1)
- 4c08: 05c1 addi a1,a1,16
- 4c0a: ce6fc0ef jal 10f0 <write>
- if (ret < stream->buf_write_pos)
- 4c0e: 41042783 lw a5,1040(s0)
- 4c12: 00f54663 blt a0,a5,4c1e <fputc+0xb4>
- stream->buf_write_pos = 0;
- 4c16: 40042823 sw zero,1040(s0)
- return c;
- 4c1a: 8526 mv a0,s1
- 4c1c: b779 j 4baa <fputc+0x40>
- stream->error = 1;
- 4c1e: 4785 li a5,1
- 4c20: c41c sw a5,8(s0)
- stream->buf_write_pos = 0;
- 4c22: 40042823 sw zero,1040(s0)
- return c;
- 4c26: 8526 mv a0,s1
- 4c28: b749 j 4baa <fputc+0x40>
- return EOF;
- 4c2a: 557d li a0,-1
-}
- 4c2c: 8082 ret
-
-0000000000004c2e <fputs>:
- if (!stream)
- 4c2e: c1ed beqz a1,4d10 <fputs+0xe2>
-{
- 4c30: 711d addi sp,sp,-96
- 4c32: e4a6 sd s1,72(sp)
- 4c34: ec86 sd ra,88(sp)
- while (*s)
- 4c36: 00054703 lbu a4,0(a0)
- 4c3a: 84aa mv s1,a0
- 4c3c: cf25 beqz a4,4cb4 <fputs+0x86>
- 4c3e: e8a2 sd s0,80(sp)
- 4c40: e0ca sd s2,64(sp)
- 4c42: fc4e sd s3,56(sp)
- 4c44: f852 sd s4,48(sp)
- 4c46: f456 sd s5,40(sp)
- 4c48: f05a sd s6,32(sp)
- 4c4a: ec5e sd s7,24(sp)
- 4c4c: 842e mv s0,a1
- if (stream->buf_mode == 2)
- 4c4e: 4909 li s2,2
- if (stream->buf_write_pos >= BUFSIZ)
- 4c50: 3ff00b13 li s6,1023
- else if (stream->buf_mode == 1 && c == '\n')
- 4c54: 4985 li s3,1
- 4c56: 4a29 li s4,10
- int64 ret = write(stream->fd, stream->buffer, stream->buf_write_pos);
- 4c58: 01058a93 addi s5,a1,16
- if (write(stream->fd, &ch, 1) != 1)
- 4c5c: 00f10b93 addi s7,sp,15
- 4c60: a031 j 4c6c <fputs+0x3e>
- else if (stream->buf_mode == 1 && c == '\n')
- 4c62: 09368563 beq a3,s3,4cec <fputs+0xbe>
- while (*s)
- 4c66: 0004c703 lbu a4,0(s1)
- 4c6a: cf15 beqz a4,4ca6 <fputs+0x78>
- if (stream->buf_mode == 2)
- 4c6c: 41c42683 lw a3,1052(s0)
- if (fputc(*s++, stream) == EOF)
- 4c70: 0485 addi s1,s1,1
- if (stream->buf_mode == 2)
- 4c72: 05268663 beq a3,s2,4cbe <fputs+0x90>
- stream->buffer[stream->buf_write_pos++] = (char)c;
- 4c76: 41042783 lw a5,1040(s0)
- 4c7a: 0017861b addiw a2,a5,1
- 4c7e: 40c42823 sw a2,1040(s0)
- 4c82: 97a2 add a5,a5,s0
- 4c84: 00e78823 sb a4,16(a5)
- if (stream->buf_write_pos >= BUFSIZ)
- 4c88: fccb5de3 bge s6,a2,4c62 <fputs+0x34>
- int64 ret = write(stream->fd, stream->buffer, stream->buf_write_pos);
- 4c8c: 4008 lw a0,0(s0)
- 4c8e: 85d6 mv a1,s5
- 4c90: c60fc0ef jal 10f0 <write>
- if (ret < stream->buf_write_pos)
- 4c94: 41042783 lw a5,1040(s0)
- 4c98: 06f54763 blt a0,a5,4d06 <fputs+0xd8>
- stream->buf_write_pos = 0;
- 4c9c: 40042823 sw zero,1040(s0)
- while (*s)
- 4ca0: 0004c703 lbu a4,0(s1)
- 4ca4: f761 bnez a4,4c6c <fputs+0x3e>
- 4ca6: 6446 ld s0,80(sp)
- 4ca8: 6906 ld s2,64(sp)
- 4caa: 79e2 ld s3,56(sp)
- 4cac: 7a42 ld s4,48(sp)
- 4cae: 7aa2 ld s5,40(sp)
- 4cb0: 7b02 ld s6,32(sp)
- 4cb2: 6be2 ld s7,24(sp)
-}
- 4cb4: 60e6 ld ra,88(sp)
- 4cb6: 64a6 ld s1,72(sp)
- return 0;
- 4cb8: 4501 li a0,0
-}
- 4cba: 6125 addi sp,sp,96
- 4cbc: 8082 ret
- if (write(stream->fd, &ch, 1) != 1)
- 4cbe: 4008 lw a0,0(s0)
- 4cc0: 4605 li a2,1
- 4cc2: 85de mv a1,s7
- char ch = (char)c;
- 4cc4: 00e107a3 sb a4,15(sp)
- if (write(stream->fd, &ch, 1) != 1)
- 4cc8: c28fc0ef jal 10f0 <write>
- 4ccc: f9350de3 beq a0,s3,4c66 <fputs+0x38>
- stream->error = 1;
- 4cd0: 01342423 sw s3,8(s0)
-}
- 4cd4: 60e6 ld ra,88(sp)
- 4cd6: 6446 ld s0,80(sp)
- 4cd8: 6906 ld s2,64(sp)
- 4cda: 79e2 ld s3,56(sp)
- 4cdc: 7a42 ld s4,48(sp)
- 4cde: 7aa2 ld s5,40(sp)
- 4ce0: 7b02 ld s6,32(sp)
- 4ce2: 6be2 ld s7,24(sp)
- 4ce4: 64a6 ld s1,72(sp)
- return -1;
- 4ce6: 557d li a0,-1
-}
- 4ce8: 6125 addi sp,sp,96
- 4cea: 8082 ret
- else if (stream->buf_mode == 1 && c == '\n')
- 4cec: f7471de3 bne a4,s4,4c66 <fputs+0x38>
- if (stream->buf_write_pos > 0)
- 4cf0: f6c05be3 blez a2,4c66 <fputs+0x38>
- int64 ret = write(stream->fd, stream->buffer, stream->buf_write_pos);
- 4cf4: 4008 lw a0,0(s0)
- 4cf6: 01040593 addi a1,s0,16
- 4cfa: bf6fc0ef jal 10f0 <write>
- if (ret < stream->buf_write_pos)
- 4cfe: 41042783 lw a5,1040(s0)
- 4d02: f8f55de3 bge a0,a5,4c9c <fputs+0x6e>
- stream->error = 1;
- 4d06: 4785 li a5,1
- 4d08: c41c sw a5,8(s0)
- stream->buf_write_pos = 0;
- 4d0a: 40042823 sw zero,1040(s0)
- return EOF;
- 4d0e: bfa1 j 4c66 <fputs+0x38>
- return -1;
- 4d10: 557d li a0,-1
-}
- 4d12: 8082 ret
-
-0000000000004d14 <fgetc>:
- if (!stream)
- 4d14: c949 beqz a0,4da6 <fgetc+0x92>
- if (stream->buf_write_pos > 0)
- 4d16: 41052603 lw a2,1040(a0)
-{
- 4d1a: 1141 addi sp,sp,-16
- 4d1c: e022 sd s0,0(sp)
- 4d1e: e406 sd ra,8(sp)
- 4d20: 842a mv s0,a0
- if (stream->buf_write_pos > 0)
- 4d22: 04c04863 bgtz a2,4d72 <fgetc+0x5e>
- if (stream->buf_read_pos < stream->buf_read_cnt)
- 4d26: 41442783 lw a5,1044(s0)
- 4d2a: 41842703 lw a4,1048(s0)
- 4d2e: 00e7dd63 bge a5,a4,4d48 <fgetc+0x34>
- return (unsigned char)stream->buffer[stream->buf_read_pos++];
- 4d32: 0017871b addiw a4,a5,1
- 4d36: 40e42a23 sw a4,1044(s0)
- 4d3a: 943e add s0,s0,a5
- 4d3c: 01044503 lbu a0,16(s0)
-}
- 4d40: 60a2 ld ra,8(sp)
- 4d42: 6402 ld s0,0(sp)
- 4d44: 0141 addi sp,sp,16
- 4d46: 8082 ret
- int64 ret = read(stream->fd, stream->buffer, BUFSIZ);
- 4d48: 4008 lw a0,0(s0)
- 4d4a: 40000613 li a2,1024
- 4d4e: 01040593 addi a1,s0,16
- 4d52: b96fc0ef jal 10e8 <read>
- 4d56: 87aa mv a5,a0
- if (ret <= 0)
- 4d58: 02a05e63 blez a0,4d94 <fgetc+0x80>
- stream->buf_read_cnt = (int)ret;
- 4d5c: 40f42c23 sw a5,1048(s0)
- return (unsigned char)stream->buffer[stream->buf_read_pos++];
- 4d60: 4785 li a5,1
- 4d62: 01044503 lbu a0,16(s0)
-}
- 4d66: 60a2 ld ra,8(sp)
- return (unsigned char)stream->buffer[stream->buf_read_pos++];
- 4d68: 40f42a23 sw a5,1044(s0)
-}
- 4d6c: 6402 ld s0,0(sp)
- 4d6e: 0141 addi sp,sp,16
- 4d70: 8082 ret
- int64 ret = write(stream->fd, stream->buffer, stream->buf_write_pos);
- 4d72: 4108 lw a0,0(a0)
- 4d74: 01040593 addi a1,s0,16
- 4d78: b78fc0ef jal 10f0 <write>
- if (ret < stream->buf_write_pos)
- 4d7c: 41042783 lw a5,1040(s0)
- 4d80: 00f54563 blt a0,a5,4d8a <fgetc+0x76>
- stream->buf_write_pos = 0;
- 4d84: 40042823 sw zero,1040(s0)
- 4d88: bf79 j 4d26 <fgetc+0x12>
- stream->error = 1;
- 4d8a: 4785 li a5,1
- 4d8c: c41c sw a5,8(s0)
- stream->buf_write_pos = 0;
- 4d8e: 40042823 sw zero,1040(s0)
- return EOF;
- 4d92: bf51 j 4d26 <fgetc+0x12>
- if (ret == 0)
- 4d94: e509 bnez a0,4d9e <fgetc+0x8a>
- stream->eof = 1;
- 4d96: 4785 li a5,1
- 4d98: c45c sw a5,12(s0)
- return EOF;
- 4d9a: 557d li a0,-1
- 4d9c: b755 j 4d40 <fgetc+0x2c>
- stream->error = 1;
- 4d9e: 4785 li a5,1
- 4da0: c41c sw a5,8(s0)
- return EOF;
- 4da2: 557d li a0,-1
- 4da4: bf71 j 4d40 <fgetc+0x2c>
- 4da6: 557d li a0,-1
-}
- 4da8: 8082 ret
-
-0000000000004daa <fgets>:
- if (!stream || n <= 0)
- 4daa: ce5d beqz a2,4e68 <fgets+0xbe>
- 4dac: 0ab05e63 blez a1,4e68 <fgets+0xbe>
-{
- 4db0: 715d addi sp,sp,-80
- 4db2: e0a2 sd s0,64(sp)
- 4db4: fc26 sd s1,56(sp)
- 4db6: f84a sd s2,48(sp)
- 4db8: f44e sd s3,40(sp)
- 4dba: f052 sd s4,32(sp)
- 4dbc: ec56 sd s5,24(sp)
- 4dbe: e85a sd s6,16(sp)
- 4dc0: e45e sd s7,8(sp)
- 4dc2: e486 sd ra,72(sp)
- 4dc4: 8432 mv s0,a2
- 4dc6: 8aaa mv s5,a0
- 4dc8: 892a mv s2,a0
- 4dca: fff58b9b addiw s7,a1,-1
- int i = 0, c;
- 4dce: 4481 li s1,0
- int64 ret = write(stream->fd, stream->buffer, stream->buf_write_pos);
- 4dd0: 01060993 addi s3,a2,16
- return (unsigned char)stream->buffer[stream->buf_read_pos++];
- 4dd4: 4b05 li s6,1
- if (c == '\n')
- 4dd6: 4a29 li s4,10
- while (i < n - 1)
- 4dd8: 05748163 beq s1,s7,4e1a <fgets+0x70>
- if (stream->buf_write_pos > 0)
- 4ddc: 41042603 lw a2,1040(s0)
- int64 ret = write(stream->fd, stream->buffer, stream->buf_write_pos);
- 4de0: 85ce mv a1,s3
- if (stream->buf_write_pos > 0)
- 4de2: 06c04963 bgtz a2,4e54 <fgets+0xaa>
- if (stream->buf_read_pos < stream->buf_read_cnt)
- 4de6: 41442783 lw a5,1044(s0)
- 4dea: 41842703 lw a4,1048(s0)
- int64 ret = read(stream->fd, stream->buffer, BUFSIZ);
- 4dee: 40000613 li a2,1024
- return (unsigned char)stream->buffer[stream->buf_read_pos++];
- 4df2: 0017851b addiw a0,a5,1
- 4df6: 00f406b3 add a3,s0,a5
- int64 ret = read(stream->fd, stream->buffer, BUFSIZ);
- 4dfa: 85ce mv a1,s3
- if (stream->buf_read_pos < stream->buf_read_cnt)
- 4dfc: 02e7de63 bge a5,a4,4e38 <fgets+0x8e>
- return (unsigned char)stream->buffer[stream->buf_read_pos++];
- 4e00: 40a42a23 sw a0,1044(s0)
- 4e04: 0106c783 lbu a5,16(a3)
- 4e08: 0007871b sext.w a4,a5
- str[i++] = (char)c;
- 4e0c: 00f90023 sb a5,0(s2)
- 4e10: 2485 addiw s1,s1,1
- if (c == '\n')
- 4e12: 0905 addi s2,s2,1
- 4e14: fd4712e3 bne a4,s4,4dd8 <fgets+0x2e>
- str[i++] = (char)c;
- 4e18: 8ba6 mv s7,s1
- str[i] = '\0';
- 4e1a: 9bd6 add s7,s7,s5
- 4e1c: 000b8023 sb zero,0(s7)
- return str;
- 4e20: 8556 mv a0,s5
-}
- 4e22: 60a6 ld ra,72(sp)
- 4e24: 6406 ld s0,64(sp)
- 4e26: 74e2 ld s1,56(sp)
- 4e28: 7942 ld s2,48(sp)
- 4e2a: 79a2 ld s3,40(sp)
- 4e2c: 7a02 ld s4,32(sp)
- 4e2e: 6ae2 ld s5,24(sp)
- 4e30: 6b42 ld s6,16(sp)
- 4e32: 6ba2 ld s7,8(sp)
- 4e34: 6161 addi sp,sp,80
- 4e36: 8082 ret
- int64 ret = read(stream->fd, stream->buffer, BUFSIZ);
- 4e38: 4008 lw a0,0(s0)
- 4e3a: aaefc0ef jal 10e8 <read>
- if (ret <= 0)
- 4e3e: 02a05c63 blez a0,4e76 <fgets+0xcc>
- return (unsigned char)stream->buffer[stream->buf_read_pos++];
- 4e42: 01044783 lbu a5,16(s0)
- stream->buf_read_cnt = (int)ret;
- 4e46: 40a42c23 sw a0,1048(s0)
- return (unsigned char)stream->buffer[stream->buf_read_pos++];
- 4e4a: 41642a23 sw s6,1044(s0)
- 4e4e: 0007871b sext.w a4,a5
- if (c == -1)
- 4e52: bf6d j 4e0c <fgets+0x62>
- int64 ret = write(stream->fd, stream->buffer, stream->buf_write_pos);
- 4e54: 4008 lw a0,0(s0)
- 4e56: a9afc0ef jal 10f0 <write>
- if (ret < stream->buf_write_pos)
- 4e5a: 41042783 lw a5,1040(s0)
- 4e5e: 00f54763 blt a0,a5,4e6c <fgets+0xc2>
- stream->buf_write_pos = 0;
- 4e62: 40042823 sw zero,1040(s0)
- 4e66: b741 j 4de6 <fgets+0x3c>
- return NULL;
- 4e68: 4501 li a0,0
-}
- 4e6a: 8082 ret
- stream->error = 1;
- 4e6c: 4785 li a5,1
- 4e6e: c41c sw a5,8(s0)
- stream->buf_write_pos = 0;
- 4e70: 40042823 sw zero,1040(s0)
- return EOF;
- 4e74: bf8d j 4de6 <fgets+0x3c>
- stream->eof = 1;
- 4e76: 4785 li a5,1
- if (ret == 0)
- 4e78: e509 bnez a0,4e82 <fgets+0xd8>
- stream->eof = 1;
- 4e7a: c45c sw a5,12(s0)
- if (i == 0)
- 4e7c: fcd1 bnez s1,4e18 <fgets+0x6e>
- return NULL;
- 4e7e: 4501 li a0,0
- 4e80: b74d j 4e22 <fgets+0x78>
- stream->error = 1;
- 4e82: c41c sw a5,8(s0)
- if (c == -1)
- 4e84: bfe5 j 4e7c <fgets+0xd2>
-
-0000000000004e86 <fread>:
-{
- 4e86: 715d addi sp,sp,-80
- 4e88: e486 sd ra,72(sp)
- 4e8a: f44e sd s3,40(sp)
- if (!stream || size == 0 || nmemb == 0)
- 4e8c: 0e068963 beqz a3,4f7e <fread+0xf8>
- 4e90: ec56 sd s5,24(sp)
- return 0;
- 4e92: 4981 li s3,0
- 4e94: 8aae mv s5,a1
- if (!stream || size == 0 || nmemb == 0)
- 4e96: c9bd beqz a1,4f0c <fread+0x86>
- 4e98: ca35 beqz a2,4f0c <fread+0x86>
- if (stream->buf_write_pos > 0)
- 4e9a: 4106a783 lw a5,1040(a3)
- 4e9e: e0a2 sd s0,64(sp)
- 4ea0: f052 sd s4,32(sp)
- uint64 total_bytes = size * nmemb;
- 4ea2: 02c589b3 mul s3,a1,a2
- 4ea6: 8436 mv s0,a3
- 4ea8: 8a2a mv s4,a0
- if (stream->buf_write_pos > 0)
- 4eaa: 0af04d63 bgtz a5,4f64 <fread+0xde>
- while (bytes_read < total_bytes)
- 4eae: 04098d63 beqz s3,4f08 <fread+0x82>
- 4eb2: fc26 sd s1,56(sp)
- 4eb4: e85a sd s6,16(sp)
- 4eb6: e45e sd s7,8(sp)
- 4eb8: f84a sd s2,48(sp)
- 4eba: 4481 li s1,0
- if (remaining >= BUFSIZ)
- 4ebc: 3ff00b13 li s6,1023
- int64 ret = read(stream->fd, stream->buffer, BUFSIZ);
- 4ec0: 01040b93 addi s7,s0,16
- if (stream->buf_read_pos < stream->buf_read_cnt)
- 4ec4: 41442703 lw a4,1044(s0)
- 4ec8: 41842783 lw a5,1048(s0)
- uint64 remaining = total_bytes - bytes_read;
- 4ecc: 40998633 sub a2,s3,s1
- if (stream->buf_read_pos < stream->buf_read_cnt)
- 4ed0: 06f74463 blt a4,a5,4f38 <fread+0xb2>
- int64 ret = read(stream->fd, dst + bytes_read, remaining);
- 4ed4: 4008 lw a0,0(s0)
- 4ed6: 009a05b3 add a1,s4,s1
- if (remaining >= BUFSIZ)
- 4eda: 02cb7f63 bgeu s6,a2,4f18 <fread+0x92>
- int64 ret = read(stream->fd, dst + bytes_read, remaining);
- 4ede: a0afc0ef jal 10e8 <read>
- if (ret <= 0)
- 4ee2: 0aa05463 blez a0,4f8a <fread+0x104>
- bytes_read += ret;
- 4ee6: 94aa add s1,s1,a0
- while (bytes_read < total_bytes)
- 4ee8: fd34eee3 bltu s1,s3,4ec4 <fread+0x3e>
- return bytes_read / size;
- 4eec: 0354d9b3 divu s3,s1,s5
- 4ef0: 6406 ld s0,64(sp)
-}
- 4ef2: 60a6 ld ra,72(sp)
- return bytes_read / size;
- 4ef4: 74e2 ld s1,56(sp)
- 4ef6: 7942 ld s2,48(sp)
- 4ef8: 7a02 ld s4,32(sp)
- 4efa: 6ae2 ld s5,24(sp)
- 4efc: 6b42 ld s6,16(sp)
- 4efe: 6ba2 ld s7,8(sp)
-}
- 4f00: 854e mv a0,s3
- 4f02: 79a2 ld s3,40(sp)
- 4f04: 6161 addi sp,sp,80
- 4f06: 8082 ret
- 4f08: 6406 ld s0,64(sp)
- 4f0a: 7a02 ld s4,32(sp)
- 4f0c: 60a6 ld ra,72(sp)
- 4f0e: 6ae2 ld s5,24(sp)
- 4f10: 854e mv a0,s3
- 4f12: 79a2 ld s3,40(sp)
- 4f14: 6161 addi sp,sp,80
- 4f16: 8082 ret
- stream->buf_read_pos = 0;
- 4f18: 40042a23 sw zero,1044(s0)
- stream->buf_read_cnt = 0;
- 4f1c: 40042c23 sw zero,1048(s0)
- int64 ret = read(stream->fd, stream->buffer, BUFSIZ);
- 4f20: 40000613 li a2,1024
- 4f24: 85de mv a1,s7
- 4f26: 9c2fc0ef jal 10e8 <read>
- if (ret <= 0)
- 4f2a: 06a05063 blez a0,4f8a <fread+0x104>
- stream->buf_read_cnt = (int)ret;
- 4f2e: 40a42c23 sw a0,1048(s0)
- while (bytes_read < total_bytes)
- 4f32: f934e9e3 bltu s1,s3,4ec4 <fread+0x3e>
- 4f36: bf5d j 4eec <fread+0x66>
- uint64 available = stream->buf_read_cnt - stream->buf_read_pos;
- 4f38: 40e7893b subw s2,a5,a4
- memcpy(dst + bytes_read, stream->buffer + stream->buf_read_pos, to_copy);
- 4f3c: 00eb85b3 add a1,s7,a4
- 4f40: 009a0533 add a0,s4,s1
- uint64 to_copy = (available < remaining) ? available : remaining;
- 4f44: 01267363 bgeu a2,s2,4f4a <fread+0xc4>
- 4f48: 8932 mv s2,a2
- memcpy(dst + bytes_read, stream->buffer + stream->buf_read_pos, to_copy);
- 4f4a: 864a mv a2,s2
- 4f4c: 3e1000ef jal 5b2c <memcpy>
- stream->buf_read_pos += to_copy;
- 4f50: 41442783 lw a5,1044(s0)
- bytes_read += to_copy;
- 4f54: 94ca add s1,s1,s2
- stream->buf_read_pos += to_copy;
- 4f56: 012787bb addw a5,a5,s2
- 4f5a: 40f42a23 sw a5,1044(s0)
- while (bytes_read < total_bytes)
- 4f5e: f734e3e3 bltu s1,s3,4ec4 <fread+0x3e>
- 4f62: b769 j 4eec <fread+0x66>
- int64 ret = write(stream->fd, stream->buffer, stream->buf_write_pos);
- 4f64: 4288 lw a0,0(a3)
- 4f66: 863e mv a2,a5
- 4f68: 01068593 addi a1,a3,16
- 4f6c: 984fc0ef jal 10f0 <write>
- if (ret < stream->buf_write_pos)
- 4f70: 41042783 lw a5,1040(s0)
- 4f74: 02f54163 blt a0,a5,4f96 <fread+0x110>
- stream->buf_write_pos = 0;
- 4f78: 40042823 sw zero,1040(s0)
- 4f7c: bf0d j 4eae <fread+0x28>
-}
- 4f7e: 60a6 ld ra,72(sp)
- return 0;
- 4f80: 4981 li s3,0
-}
- 4f82: 854e mv a0,s3
- 4f84: 79a2 ld s3,40(sp)
- 4f86: 6161 addi sp,sp,80
- 4f88: 8082 ret
- stream->eof = 1;
- 4f8a: 4785 li a5,1
- if (ret == 0)
- 4f8c: e119 bnez a0,4f92 <fread+0x10c>
- stream->eof = 1;
- 4f8e: c45c sw a5,12(s0)
- 4f90: bfb1 j 4eec <fread+0x66>
- stream->error = 1;
- 4f92: c41c sw a5,8(s0)
- return bytes_read / size;
- 4f94: bfa1 j 4eec <fread+0x66>
- stream->error = 1;
- 4f96: 4785 li a5,1
- 4f98: c41c sw a5,8(s0)
- stream->buf_write_pos = 0;
- 4f9a: 40042823 sw zero,1040(s0)
- return EOF;
- 4f9e: bf01 j 4eae <fread+0x28>
-
-0000000000004fa0 <fwrite>:
-{
- 4fa0: 711d addi sp,sp,-96
- 4fa2: ec86 sd ra,88(sp)
- 4fa4: e0ca sd s2,64(sp)
- if (!stream || !ptr || size == 0 || nmemb == 0)
- 4fa6: 10068063 beqz a3,50a6 <fwrite+0x106>
- 4faa: f456 sd s5,40(sp)
- 4fac: 8aaa mv s5,a0
- 4fae: 10050263 beqz a0,50b2 <fwrite+0x112>
- 4fb2: f05a sd s6,32(sp)
- return 0;
- 4fb4: 4901 li s2,0
- 4fb6: 8b2e mv s6,a1
- if (!stream || !ptr || size == 0 || nmemb == 0)
- 4fb8: c1d9 beqz a1,503e <fwrite+0x9e>
- 4fba: c251 beqz a2,503e <fwrite+0x9e>
- if (stream->buf_mode == 2)
- 4fbc: 41c6a703 lw a4,1052(a3)
- 4fc0: e8a2 sd s0,80(sp)
- 4fc2: 4789 li a5,2
- uint64 total_bytes = size * nmemb;
- 4fc4: 02c58933 mul s2,a1,a2
- if (stream->buf_mode == 2)
- 4fc8: 8436 mv s0,a3
- 4fca: 0ef70b63 beq a4,a5,50c0 <fwrite+0x120>
- 4fce: fc4e sd s3,56(sp)
- 4fd0: ec5e sd s7,24(sp)
- 4fd2: e862 sd s8,16(sp)
- uint64 bytes_written = 0;
- 4fd4: 4981 li s3,0
- 4fd6: 01068b93 addi s7,a3,16
- uint64 space_left = BUFSIZ - stream->buf_write_pos;
- 4fda: 40000c13 li s8,1024
- while (bytes_written < total_bytes)
- 4fde: 12090263 beqz s2,5102 <fwrite+0x162>
- 4fe2: e4a6 sd s1,72(sp)
- 4fe4: f852 sd s4,48(sp)
- 4fe6: e466 sd s9,8(sp)
- uint64 space_left = BUFSIZ - stream->buf_write_pos;
- 4fe8: 41042783 lw a5,1040(s0)
- uint64 remaining = total_bytes - bytes_written;
- 4fec: 41390cb3 sub s9,s2,s3
- memcpy(stream->buffer + stream->buf_write_pos, src + bytes_written, remaining);
- 4ff0: 013a85b3 add a1,s5,s3
- uint64 space_left = BUFSIZ - stream->buf_write_pos;
- 4ff4: 40fc0a3b subw s4,s8,a5
- memcpy(stream->buffer + stream->buf_write_pos, src + bytes_written, space_left);
- 4ff8: 00fb8533 add a0,s7,a5
- 4ffc: 8652 mv a2,s4
- if (remaining <= space_left)
- 4ffe: 059a6763 bltu s4,s9,504c <fwrite+0xac>
- memcpy(stream->buffer + stream->buf_write_pos, src + bytes_written, remaining);
- 5002: 8666 mv a2,s9
- 5004: 329000ef jal 5b2c <memcpy>
- stream->buf_write_pos += remaining;
- 5008: 41042783 lw a5,1040(s0)
- if (stream->buf_write_pos == BUFSIZ)
- 500c: 40000713 li a4,1024
- stream->buf_write_pos += remaining;
- 5010: 019786bb addw a3,a5,s9
- 5014: 40d42823 sw a3,1040(s0)
- if (stream->buf_write_pos == BUFSIZ)
- 5018: 06e68a63 beq a3,a4,508c <fwrite+0xec>
- return bytes_written / size;
- 501c: 03695933 divu s2,s2,s6
- 5020: 6446 ld s0,80(sp)
- 5022: 64a6 ld s1,72(sp)
- 5024: 79e2 ld s3,56(sp)
- 5026: 7a42 ld s4,48(sp)
- 5028: 7aa2 ld s5,40(sp)
- 502a: 7b02 ld s6,32(sp)
- 502c: 6be2 ld s7,24(sp)
- 502e: 6c42 ld s8,16(sp)
- 5030: 6ca2 ld s9,8(sp)
-}
- 5032: 60e6 ld ra,88(sp)
- 5034: 854a mv a0,s2
- 5036: 6906 ld s2,64(sp)
- 5038: 6125 addi sp,sp,96
- 503a: 8082 ret
- 503c: 6446 ld s0,80(sp)
- 503e: 60e6 ld ra,88(sp)
- 5040: 7aa2 ld s5,40(sp)
- 5042: 7b02 ld s6,32(sp)
- 5044: 854a mv a0,s2
- 5046: 6906 ld s2,64(sp)
- 5048: 6125 addi sp,sp,96
- 504a: 8082 ret
- memcpy(stream->buffer + stream->buf_write_pos, src + bytes_written, space_left);
- 504c: 2e1000ef jal 5b2c <memcpy>
- stream->buf_write_pos += space_left;
- 5050: 41042783 lw a5,1040(s0)
- int64 ret = write(stream->fd, stream->buffer, stream->buf_write_pos);
- 5054: 85de mv a1,s7
- bytes_written += space_left;
- 5056: 99d2 add s3,s3,s4
- stream->buf_write_pos += space_left;
- 5058: 00fa04bb addw s1,s4,a5
- int64 ret = write(stream->fd, stream->buffer, stream->buf_write_pos);
- 505c: 02049613 slli a2,s1,0x20
- stream->buf_write_pos += space_left;
- 5060: 40942823 sw s1,1040(s0)
- int64 ret = write(stream->fd, stream->buffer, stream->buf_write_pos);
- 5064: 9201 srli a2,a2,0x20
- if (stream->buf_write_pos > 0)
- 5066: 00904763 bgtz s1,5074 <fwrite+0xd4>
- while (bytes_written < total_bytes)
- 506a: f729efe3 bltu s3,s2,4fe8 <fwrite+0x48>
- return bytes_written / size;
- 506e: 0369d933 divu s2,s3,s6
- 5072: b77d j 5020 <fwrite+0x80>
- int64 ret = write(stream->fd, stream->buffer, stream->buf_write_pos);
- 5074: 4008 lw a0,0(s0)
- 5076: 87afc0ef jal 10f0 <write>
- if (ret < stream->buf_write_pos)
- 507a: 41042783 lw a5,1040(s0)
- 507e: 08f54963 blt a0,a5,5110 <fwrite+0x170>
- stream->buf_write_pos = 0;
- 5082: 40042823 sw zero,1040(s0)
- while (bytes_written < total_bytes)
- 5086: f729e1e3 bltu s3,s2,4fe8 <fwrite+0x48>
- 508a: b7d5 j 506e <fwrite+0xce>
- int64 ret = write(stream->fd, stream->buffer, stream->buf_write_pos);
- 508c: 4008 lw a0,0(s0)
- 508e: 40000613 li a2,1024
- 5092: 85de mv a1,s7
- 5094: 85cfc0ef jal 10f0 <write>
- if (ret < stream->buf_write_pos)
- 5098: 41042783 lw a5,1040(s0)
- 509c: 08f54163 blt a0,a5,511e <fwrite+0x17e>
- stream->buf_write_pos = 0;
- 50a0: 40042823 sw zero,1040(s0)
- 50a4: bfa5 j 501c <fwrite+0x7c>
-}
- 50a6: 60e6 ld ra,88(sp)
- return 0;
- 50a8: 4901 li s2,0
-}
- 50aa: 854a mv a0,s2
- 50ac: 6906 ld s2,64(sp)
- 50ae: 6125 addi sp,sp,96
- 50b0: 8082 ret
- 50b2: 60e6 ld ra,88(sp)
- return 0;
- 50b4: 4901 li s2,0
- 50b6: 7aa2 ld s5,40(sp)
-}
- 50b8: 854a mv a0,s2
- 50ba: 6906 ld s2,64(sp)
- 50bc: 6125 addi sp,sp,96
- 50be: 8082 ret
- while (bytes_written < total_bytes)
- 50c0: f6090ee3 beqz s2,503c <fwrite+0x9c>
- 50c4: e4a6 sd s1,72(sp)
- uint64 bytes_written = 0;
- 50c6: 4481 li s1,0
- 50c8: a021 j 50d0 <fwrite+0x130>
- bytes_written += ret;
- 50ca: 94aa add s1,s1,a0
- while (bytes_written < total_bytes)
- 50cc: 0324f463 bgeu s1,s2,50f4 <fwrite+0x154>
- int64 ret = write(stream->fd, src + bytes_written, total_bytes - bytes_written);
- 50d0: 4008 lw a0,0(s0)
- 50d2: 40990633 sub a2,s2,s1
- 50d6: 009a85b3 add a1,s5,s1
- 50da: 816fc0ef jal 10f0 <write>
- if (ret <= 0)
- 50de: fea046e3 bgtz a0,50ca <fwrite+0x12a>
- stream->error = 1;
- 50e2: 4785 li a5,1
- return bytes_written / size;
- 50e4: 0364d933 divu s2,s1,s6
- stream->error = 1;
- 50e8: c41c sw a5,8(s0)
- break;
- 50ea: 64a6 ld s1,72(sp)
- 50ec: 6446 ld s0,80(sp)
- 50ee: 7aa2 ld s5,40(sp)
- 50f0: 7b02 ld s6,32(sp)
- 50f2: b781 j 5032 <fwrite+0x92>
- return bytes_written / size;
- 50f4: 0364d933 divu s2,s1,s6
- 50f8: 6446 ld s0,80(sp)
- 50fa: 64a6 ld s1,72(sp)
- 50fc: 7aa2 ld s5,40(sp)
- 50fe: 7b02 ld s6,32(sp)
- 5100: bf0d j 5032 <fwrite+0x92>
- 5102: 6446 ld s0,80(sp)
- 5104: 79e2 ld s3,56(sp)
- 5106: 7aa2 ld s5,40(sp)
- 5108: 7b02 ld s6,32(sp)
- 510a: 6be2 ld s7,24(sp)
- 510c: 6c42 ld s8,16(sp)
- 510e: b715 j 5032 <fwrite+0x92>
- stream->error = 1;
- 5110: 4785 li a5,1
- 5112: c41c sw a5,8(s0)
- stream->buf_write_pos = 0;
- 5114: 40042823 sw zero,1040(s0)
- while (bytes_written < total_bytes)
- 5118: ed29e8e3 bltu s3,s2,4fe8 <fwrite+0x48>
- 511c: bf89 j 506e <fwrite+0xce>
- stream->error = 1;
- 511e: 4785 li a5,1
- 5120: c41c sw a5,8(s0)
- stream->buf_write_pos = 0;
- 5122: 40042823 sw zero,1040(s0)
- return EOF;
- 5126: bddd j 501c <fwrite+0x7c>
-
-0000000000005128 <fseek>:
- if (!stream)
- 5128: c925 beqz a0,5198 <fseek+0x70>
-{
- 512a: 1101 addi sp,sp,-32
- 512c: e04a sd s2,0(sp)
- 512e: 8932 mv s2,a2
- if (stream->buf_write_pos > 0)
- 5130: 41052603 lw a2,1040(a0)
-{
- 5134: e822 sd s0,16(sp)
- 5136: e426 sd s1,8(sp)
- 5138: ec06 sd ra,24(sp)
- 513a: 842a mv s0,a0
- 513c: 84ae mv s1,a1
- if (stream->buf_write_pos > 0)
- 513e: 02c04863 bgtz a2,516e <fseek+0x46>
- if (lseek(stream->fd, offset, whence) < 0)
- 5142: 4008 lw a0,0(s0)
- stream->buf_read_pos = 0;
- 5144: 40042a23 sw zero,1044(s0)
- stream->buf_read_cnt = 0;
- 5148: 40042c23 sw zero,1048(s0)
- stream->eof = 0;
- 514c: 00042623 sw zero,12(s0)
- if (lseek(stream->fd, offset, whence) < 0)
- 5150: 864a mv a2,s2
- 5152: 0004859b sext.w a1,s1
- 5156: 82afc0ef jal 1180 <lseek>
- 515a: 87aa mv a5,a0
- return 0;
- 515c: 4501 li a0,0
- if (lseek(stream->fd, offset, whence) < 0)
- 515e: 0207c463 bltz a5,5186 <fseek+0x5e>
-}
- 5162: 60e2 ld ra,24(sp)
- 5164: 6442 ld s0,16(sp)
- 5166: 64a2 ld s1,8(sp)
- 5168: 6902 ld s2,0(sp)
- 516a: 6105 addi sp,sp,32
- 516c: 8082 ret
- int64 ret = write(stream->fd, stream->buffer, stream->buf_write_pos);
- 516e: 4108 lw a0,0(a0)
- 5170: 01040593 addi a1,s0,16
- 5174: f7dfb0ef jal 10f0 <write>
- if (ret < stream->buf_write_pos)
- 5178: 41042783 lw a5,1040(s0)
- 517c: 00f54963 blt a0,a5,518e <fseek+0x66>
- stream->buf_write_pos = 0;
- 5180: 40042823 sw zero,1040(s0)
- 5184: bf7d j 5142 <fseek+0x1a>
- stream->error = 1;
- 5186: 4785 li a5,1
- 5188: c41c sw a5,8(s0)
- return -1;
- 518a: 557d li a0,-1
- 518c: bfd9 j 5162 <fseek+0x3a>
- stream->error = 1;
- 518e: 4785 li a5,1
- 5190: c41c sw a5,8(s0)
- stream->buf_write_pos = 0;
- 5192: 40042823 sw zero,1040(s0)
- return EOF;
- 5196: b775 j 5142 <fseek+0x1a>
- return -1;
- 5198: 557d li a0,-1
-}
- 519a: 8082 ret
-
-000000000000519c <ftell>:
- if (!stream)
- 519c: c505 beqz a0,51c4 <ftell+0x28>
-{
- 519e: 1141 addi sp,sp,-16
- 51a0: e022 sd s0,0(sp)
- 51a2: 842a mv s0,a0
- int64 ret = lseek(stream->fd, 0, SEEK_CUR);
- 51a4: 4108 lw a0,0(a0)
- 51a6: 4605 li a2,1
- 51a8: 4581 li a1,0
-{
- 51aa: e406 sd ra,8(sp)
- int64 ret = lseek(stream->fd, 0, SEEK_CUR);
- 51ac: fd5fb0ef jal 1180 <lseek>
- if (ret < 0)
- 51b0: 00054663 bltz a0,51bc <ftell+0x20>
-}
- 51b4: 60a2 ld ra,8(sp)
- 51b6: 6402 ld s0,0(sp)
- 51b8: 0141 addi sp,sp,16
- 51ba: 8082 ret
- stream->error = 1;
- 51bc: 4785 li a5,1
- 51be: c41c sw a5,8(s0)
- return -1L;
- 51c0: 557d li a0,-1
- 51c2: bfcd j 51b4 <ftell+0x18>
- 51c4: 557d li a0,-1
-}
- 51c6: 8082 ret
-
-00000000000051c8 <rewind>:
- if (stream)
- 51c8: c915 beqz a0,51fc <rewind+0x34>
- if (stream->buf_write_pos > 0)
- 51ca: 41052603 lw a2,1040(a0)
-{
- 51ce: 1141 addi sp,sp,-16
- 51d0: e022 sd s0,0(sp)
- 51d2: e406 sd ra,8(sp)
- 51d4: 842a mv s0,a0
- if (stream->buf_write_pos > 0)
- 51d6: 02c04463 bgtz a2,51fe <rewind+0x36>
- if (lseek(stream->fd, offset, whence) < 0)
- 51da: 4008 lw a0,0(s0)
- stream->buf_read_pos = 0;
- 51dc: 40042a23 sw zero,1044(s0)
- stream->buf_read_cnt = 0;
- 51e0: 40042c23 sw zero,1048(s0)
- stream->eof = 0;
- 51e4: 00042623 sw zero,12(s0)
- if (lseek(stream->fd, offset, whence) < 0)
- 51e8: 4601 li a2,0
- 51ea: 4581 li a1,0
- 51ec: f95fb0ef jal 1180 <lseek>
-}
- 51f0: 60a2 ld ra,8(sp)
- stream->error = 0;
- 51f2: 00042423 sw zero,8(s0)
-}
- 51f6: 6402 ld s0,0(sp)
- 51f8: 0141 addi sp,sp,16
- 51fa: 8082 ret
- 51fc: 8082 ret
- int64 ret = write(stream->fd, stream->buffer, stream->buf_write_pos);
- 51fe: 4108 lw a0,0(a0)
- 5200: 01040593 addi a1,s0,16
- 5204: eedfb0ef jal 10f0 <write>
- if (ret < stream->buf_write_pos)
- 5208: 41042783 lw a5,1040(s0)
- 520c: 00f54563 blt a0,a5,5216 <rewind+0x4e>
- stream->buf_write_pos = 0;
- 5210: 40042823 sw zero,1040(s0)
- 5214: b7d9 j 51da <rewind+0x12>
- stream->error = 1;
- 5216: 4785 li a5,1
- 5218: c41c sw a5,8(s0)
- stream->buf_write_pos = 0;
- 521a: 40042823 sw zero,1040(s0)
- return EOF;
- 521e: bf75 j 51da <rewind+0x12>
-
-0000000000005220 <feof>:
- return (stream) ? stream->eof : 1;
- 5220: c119 beqz a0,5226 <feof+0x6>
- 5222: 4548 lw a0,12(a0)
- 5224: 8082 ret
- 5226: 4505 li a0,1
-}
- 5228: 8082 ret
-
-000000000000522a <ferror>:
- return (stream) ? stream->error : 1;
- 522a: c119 beqz a0,5230 <ferror+0x6>
- 522c: 4508 lw a0,8(a0)
- 522e: 8082 ret
- 5230: 4505 li a0,1
-}
- 5232: 8082 ret
-
-0000000000005234 <clearerr>:
- if (stream)
- 5234: c509 beqz a0,523e <clearerr+0xa>
- stream->error = 0;
- 5236: 00052423 sw zero,8(a0)
- stream->eof = 0;
- 523a: 00052623 sw zero,12(a0)
-}
- 523e: 8082 ret
-
-0000000000005240 <ungetc>:
- if (!stream || c == EOF)
- 5240: c19d beqz a1,5266 <ungetc+0x26>
- 5242: 57fd li a5,-1
- 5244: 02f50163 beq a0,a5,5266 <ungetc+0x26>
- if (stream->buf_read_pos > 0)
- 5248: 4145a783 lw a5,1044(a1)
- 524c: 00f05d63 blez a5,5266 <ungetc+0x26>
- stream->buf_read_pos--;
- 5250: fff7871b addiw a4,a5,-1
- 5254: 40e5aa23 sw a4,1044(a1)
- stream->buffer[stream->buf_read_pos] = (char)c;
- 5258: 00e587b3 add a5,a1,a4
- 525c: 00a78823 sb a0,16(a5)
- stream->eof = 0;
- 5260: 0005a623 sw zero,12(a1)
- return c;
- 5264: 8082 ret
- return EOF;
- 5266: 557d li a0,-1
- 5268: 8082 ret
-
-000000000000526a <strtoull.part.0>:
- return new_ptr;
-}
-
-/* String Conversion*/
-
-unsigned long long strtoull(const char *nptr, char **endptr, int base)
- 526a: 1141 addi sp,sp,-16
- 526c: e422 sd s0,8(sp)
- 526e: 8eaa mv t4,a0
-{
- const char *s = nptr;
- 5270: 88aa mv a7,a0
- static inline int isdigit(int c) { return c >= '0' && c <= '9'; }
- static inline int islower(int c) { return c >= 'a' && c <= 'z'; }
- static inline int isupper(int c) { return c >= 'A' && c <= 'Z'; }
- static inline int isalpha(int c) { return islower(c) || isupper(c); }
- static inline int isalnum(int c) { return isalpha(c) || isdigit(c); }
- static inline int isspace(int c) { return c == ' ' || c == '\t' || c == '\n' || c == '\v' || c == '\f' || c == '\r'; }
- 5272: 02000313 li t1,32
- 5276: 4e11 li t3,4
- return 0;
- }
-
- do
- {
- c = *s++;
- 5278: 0008c783 lbu a5,0(a7)
- 527c: 00188813 addi a6,a7,1
- 5280: ff77871b addiw a4,a5,-9
- 5284: 0ff77693 zext.b a3,a4
- 5288: 0007871b sext.w a4,a5
- 528c: 04678363 beq a5,t1,52d2 <strtoull.part.0+0x68>
- 5290: 04de7163 bgeu t3,a3,52d2 <strtoull.part.0+0x68>
- } while (isspace(c));
-
- if (c == '-')
- 5294: 02d00793 li a5,45
- 5298: 0ef70863 beq a4,a5,5388 <strtoull.part.0+0x11e>
- {
- neg = 1;
- c = *s++;
- }
- else if (c == '+')
- 529c: 02b00793 li a5,43
- int neg = 0, any, cutlim;
- 52a0: 4381 li t2,0
- else if (c == '+')
- 52a2: 08f70c63 beq a4,a5,533a <strtoull.part.0+0xd0>
- {
- c = *s++;
- }
-
- if ((base == 0 || base == 16) && c == '0' && (*s == 'x' || *s == 'X'))
- 52a6: ea05 bnez a2,52d6 <strtoull.part.0+0x6c>
- 52a8: 03000793 li a5,48
- 52ac: 0ef70463 beq a4,a5,5394 <strtoull.part.0+0x12a>
- 52b0: 00ccd8b7 lui a7,0xccd
- 52b4: ccd88893 addi a7,a7,-819 # cccccd <_ZSt4cerr+0xcc3e5d>
- 52b8: 08b2 slli a7,a7,0xc
- 52ba: ccd88893 addi a7,a7,-819
- 52be: 08b2 slli a7,a7,0xc
- 52c0: ccd88893 addi a7,a7,-819
- 52c4: 08b6 slli a7,a7,0xd
- 52c6: 4415 li s0,5
- 52c8: 99988893 addi a7,a7,-1639
- 52cc: 42a9 li t0,10
- c = s[1];
- s += 2;
- base = 16;
- }
- if (base == 0)
- base = (c == '0' ? 8 : 10);
- 52ce: 4629 li a2,10
- 52d0: a829 j 52ea <strtoull.part.0+0x80>
-unsigned long long strtoull(const char *nptr, char **endptr, int base)
- 52d2: 88c2 mv a7,a6
- 52d4: b755 j 5278 <strtoull.part.0+0xe>
- if ((base == 0 || base == 16) && c == '0' && (*s == 'x' || *s == 'X'))
- 52d6: 47c1 li a5,16
- 52d8: 0cf60d63 beq a2,a5,53b2 <strtoull.part.0+0x148>
-
- cutoff = ULLONG_MAX / (unsigned long long)base;
- 52dc: 58fd li a7,-1
- cutlim = ULLONG_MAX % (unsigned long long)base;
- 52de: 02c8f433 remu s0,a7,a2
- cutoff = ULLONG_MAX / (unsigned long long)base;
- 52e2: 82b2 mv t0,a2
- 52e4: 02c8d8b3 divu a7,a7,a2
- cutlim = ULLONG_MAX % (unsigned long long)base;
- 52e8: 2401 sext.w s0,s0
-
- for (acc = 0, any = 0;; c = *s++)
- 52ea: 4301 li t1,0
- 52ec: 4501 li a0,0
- {
- if (isdigit(c))
- 52ee: 4e25 li t3,9
- static inline int isalpha(int c) { return islower(c) || isupper(c); }
- 52f0: 4fe5 li t6,25
- break;
-
- if (c >= base)
- break;
-
- if (any < 0 || acc > cutoff || (acc == cutoff && c > cutlim))
- 52f2: 5f7d li t5,-1
- if (isdigit(c))
- 52f4: fd07079b addiw a5,a4,-48
- static inline int isdigit(int c) { return c >= '0' && c <= '9'; }
- 52f8: 0007069b sext.w a3,a4
- 52fc: 00fe7e63 bgeu t3,a5,5318 <strtoull.part.0+0xae>
- static inline int isalpha(int c) { return islower(c) || isupper(c); }
- 5300: f9f6879b addiw a5,a3,-97
- 5304: 04fff063 bgeu t6,a5,5344 <strtoull.part.0+0xda>
- 5308: fbf6869b addiw a3,a3,-65
- 530c: 04dfe163 bltu t6,a3,534e <strtoull.part.0+0xe4>
- c -= isupper(c) ? 'A' - 10 : 'a' - 10;
- 5310: 03700793 li a5,55
- 5314: 40f707bb subw a5,a4,a5
- if (c >= base)
- 5318: 02c7db63 bge a5,a2,534e <strtoull.part.0+0xe4>
- if (any < 0 || acc > cutoff || (acc == cutoff && c > cutlim))
- 531c: 01e30b63 beq t1,t5,5332 <strtoull.part.0+0xc8>
- any = -1;
- 5320: 537d li t1,-1
- if (any < 0 || acc > cutoff || (acc == cutoff && c > cutlim))
- 5322: 00a8e863 bltu a7,a0,5332 <strtoull.part.0+0xc8>
- 5326: 05150e63 beq a0,a7,5382 <strtoull.part.0+0x118>
- else
- {
- any = 1;
- 532a: 4305 li t1,1
- acc *= base;
- 532c: 02550533 mul a0,a0,t0
- acc += c;
- 5330: 953e add a0,a0,a5
- for (acc = 0, any = 0;; c = *s++)
- 5332: 0805 addi a6,a6,1
- 5334: fff84703 lbu a4,-1(a6)
- if (isdigit(c))
- 5338: bf75 j 52f4 <strtoull.part.0+0x8a>
- c = *s++;
- 533a: 00084703 lbu a4,0(a6)
- 533e: 00288813 addi a6,a7,2
- 5342: b795 j 52a6 <strtoull.part.0+0x3c>
- c -= isupper(c) ? 'A' - 10 : 'a' - 10;
- 5344: 05700793 li a5,87
- 5348: 40f707bb subw a5,a4,a5
- 534c: b7f1 j 5318 <strtoull.part.0+0xae>
- }
- }
-
- if (any < 0)
- 534e: 57fd li a5,-1
- 5350: 00f30e63 beq t1,a5,536c <strtoull.part.0+0x102>
- {
- acc = ULLONG_MAX;
- errno = ERANGE;
- }
- else if (neg)
- 5354: 00038463 beqz t2,535c <strtoull.part.0+0xf2>
- acc = -acc;
- 5358: 40a00533 neg a0,a0
-
- if (endptr != 0)
- 535c: c589 beqz a1,5366 <strtoull.part.0+0xfc>
- *endptr = (char *)(any ? s - 1 : nptr);
- 535e: 00031f63 bnez t1,537c <strtoull.part.0+0x112>
- 5362: 01d5b023 sd t4,0(a1)
-
- return acc;
-}
- 5366: 6422 ld s0,8(sp)
- 5368: 0141 addi sp,sp,16
- 536a: 8082 ret
- errno = ERANGE;
- 536c: 02200793 li a5,34
- 5370: 00004717 auipc a4,0x4
- 5374: 9cf72423 sw a5,-1592(a4) # 8d38 <errno>
- acc = ULLONG_MAX;
- 5378: 557d li a0,-1
- if (endptr != 0)
- 537a: d5f5 beqz a1,5366 <strtoull.part.0+0xfc>
- *endptr = (char *)(any ? s - 1 : nptr);
- 537c: fff80e93 addi t4,a6,-1
- 5380: b7cd j 5362 <strtoull.part.0+0xf8>
- if (any < 0 || acc > cutoff || (acc == cutoff && c > cutlim))
- 5382: faf448e3 blt s0,a5,5332 <strtoull.part.0+0xc8>
- 5386: b755 j 532a <strtoull.part.0+0xc0>
- c = *s++;
- 5388: 00084703 lbu a4,0(a6)
- neg = 1;
- 538c: 4385 li t2,1
- c = *s++;
- 538e: 00288813 addi a6,a7,2
- 5392: bf11 j 52a6 <strtoull.part.0+0x3c>
- if ((base == 0 || base == 16) && c == '0' && (*s == 'x' || *s == 'X'))
- 5394: 00084783 lbu a5,0(a6)
- 5398: 05800693 li a3,88
- 539c: 0df7f793 andi a5,a5,223
- 53a0: 02d78b63 beq a5,a3,53d6 <strtoull.part.0+0x16c>
- 53a4: 58fd li a7,-1
- 53a6: 441d li s0,7
- 53a8: 0038d893 srli a7,a7,0x3
- 53ac: 42a1 li t0,8
- base = (c == '0' ? 8 : 10);
- 53ae: 4621 li a2,8
- 53b0: bf2d j 52ea <strtoull.part.0+0x80>
- if ((base == 0 || base == 16) && c == '0' && (*s == 'x' || *s == 'X'))
- 53b2: 03000793 li a5,48
- 53b6: 00f70863 beq a4,a5,53c6 <strtoull.part.0+0x15c>
- 53ba: 58fd li a7,-1
- 53bc: 443d li s0,15
- 53be: 0048d893 srli a7,a7,0x4
- 53c2: 42c1 li t0,16
- 53c4: b71d j 52ea <strtoull.part.0+0x80>
- 53c6: 00084783 lbu a5,0(a6)
- 53ca: 05800693 li a3,88
- 53ce: 0df7f793 andi a5,a5,223
- 53d2: fed794e3 bne a5,a3,53ba <strtoull.part.0+0x150>
- s += 2;
- 53d6: 58fd li a7,-1
- c = s[1];
- 53d8: 00184703 lbu a4,1(a6)
- s += 2;
- 53dc: 443d li s0,15
- 53de: 0809 addi a6,a6,2
- 53e0: 0048d893 srli a7,a7,0x4
- 53e4: 42c1 li t0,16
- base = 16;
- 53e6: 4641 li a2,16
- 53e8: b709 j 52ea <strtoull.part.0+0x80>
-
-00000000000053ea <atexit>:
- if (__atexit_func_count >= ATEXIT_MAX)
- 53ea: 00004717 auipc a4,0x4
- 53ee: 94e70713 addi a4,a4,-1714 # 8d38 <errno>
- 53f2: 435c lw a5,4(a4)
- 53f4: 46fd li a3,31
- 53f6: 00f6ca63 blt a3,a5,540a <atexit+0x20>
- __atexit_funcs[__atexit_func_count++] = function;
- 53fa: 00379693 slli a3,a5,0x3
- 53fe: 96ba add a3,a3,a4
- 5400: 2785 addiw a5,a5,1
- 5402: e688 sd a0,8(a3)
- 5404: c35c sw a5,4(a4)
- return 0;
- 5406: 4501 li a0,0
- 5408: 8082 ret
- return -1;
- 540a: 557d li a0,-1
-}
- 540c: 8082 ret
-
-000000000000540e <exit>:
-{
- 540e: 1101 addi sp,sp,-32
- 5410: e822 sd s0,16(sp)
- while (__atexit_func_count > 0)
- 5412: 00004417 auipc s0,0x4
- 5416: 92640413 addi s0,s0,-1754 # 8d38 <errno>
- 541a: 405c lw a5,4(s0)
-{
- 541c: e426 sd s1,8(sp)
- 541e: ec06 sd ra,24(sp)
- 5420: 84aa mv s1,a0
- while (__atexit_func_count > 0)
- 5422: 00f05d63 blez a5,543c <exit+0x2e>
- (__atexit_funcs[--__atexit_func_count])();
- 5426: fff7871b addiw a4,a5,-1
- 542a: 87ba mv a5,a4
- 542c: 070e slli a4,a4,0x3
- 542e: 9722 add a4,a4,s0
- 5430: 6718 ld a4,8(a4)
- 5432: c05c sw a5,4(s0)
- 5434: 9702 jalr a4
- while (__atexit_func_count > 0)
- 5436: 405c lw a5,4(s0)
- 5438: fef047e3 bgtz a5,5426 <exit+0x18>
- sys_exit(status);
- 543c: 8526 mv a0,s1
- 543e: c8bfb0ef jal 10c8 <sys_exit>
- while (1)
- 5442: a001 j 5442 <exit+0x34>
-
-0000000000005444 <abort>:
-{
- 5444: 1141 addi sp,sp,-16
- exit(127);
- 5446: 07f00513 li a0,127
-{
- 544a: e406 sd ra,8(sp)
- exit(127);
- 544c: fc3ff0ef jal 540e <exit>
-
-0000000000005450 <getenv>:
-}
- 5450: 4501 li a0,0
- 5452: 8082 ret
-
-0000000000005454 <system>:
-}
- 5454: 557d li a0,-1
- 5456: 8082 ret
-
-0000000000005458 <free>:
- if (!ptr)
- 5458: c121 beqz a0,5498 <free+0x40>
- for (p = freep; !(bp > p && bp < p->next); p = p->next)
- 545a: 00004617 auipc a2,0x4
- 545e: 8de60613 addi a2,a2,-1826 # 8d38 <errno>
- 5462: 10863783 ld a5,264(a2)
- bp = (header_t *)ptr - 1;
- 5466: ff050693 addi a3,a0,-16
- if (p >= p->next && (bp > p || bp < p->next))
- 546a: 6798 ld a4,8(a5)
- for (p = freep; !(bp > p && bp < p->next); p = p->next)
- 546c: 02d7f763 bgeu a5,a3,549a <free+0x42>
- 5470: 00e6e463 bltu a3,a4,5478 <free+0x20>
- if (p >= p->next && (bp > p || bp < p->next))
- 5474: 02e7e763 bltu a5,a4,54a2 <free+0x4a>
- if ((char *)bp + bp->size == (char *)p->next)
- 5478: ff053583 ld a1,-16(a0)
- 547c: 00b68833 add a6,a3,a1
- 5480: 03070363 beq a4,a6,54a6 <free+0x4e>
- if ((char *)p + p->size == (char *)bp)
- 5484: 638c ld a1,0(a5)
- 5486: fee53c23 sd a4,-8(a0)
- 548a: 00b78833 add a6,a5,a1
- 548e: 03068963 beq a3,a6,54c0 <free+0x68>
- 5492: e794 sd a3,8(a5)
- freep = p;
- 5494: 10f63423 sd a5,264(a2)
-}
- 5498: 8082 ret
- if (p >= p->next && (bp > p || bp < p->next))
- 549a: 00e7e463 bltu a5,a4,54a2 <free+0x4a>
- 549e: fce6ede3 bltu a3,a4,5478 <free+0x20>
-{
- 54a2: 87ba mv a5,a4
- 54a4: b7d9 j 546a <free+0x12>
- bp->size += p->next->size;
- 54a6: 00073803 ld a6,0(a4)
- bp->next = p->next->next;
- 54aa: 6718 ld a4,8(a4)
- bp->size += p->next->size;
- 54ac: 95c2 add a1,a1,a6
- 54ae: feb53823 sd a1,-16(a0)
- if ((char *)p + p->size == (char *)bp)
- 54b2: 638c ld a1,0(a5)
- 54b4: fee53c23 sd a4,-8(a0)
- 54b8: 00b78833 add a6,a5,a1
- 54bc: fd069be3 bne a3,a6,5492 <free+0x3a>
- p->size += bp->size;
- 54c0: ff053503 ld a0,-16(a0)
- p->next = bp->next;
- 54c4: 86ba mv a3,a4
- p->size += bp->size;
- 54c6: 00b50733 add a4,a0,a1
- 54ca: e398 sd a4,0(a5)
- p->next = bp->next;
- 54cc: b7d9 j 5492 <free+0x3a>
-
-00000000000054ce <malloc>:
- if (size == 0)
- 54ce: c169 beqz a0,5590 <malloc+0xc2>
-{
- 54d0: 7179 addi sp,sp,-48
- 54d2: ec26 sd s1,24(sp)
- if ((prevp = freep) == NULL)
- 54d4: 00004497 auipc s1,0x4
- 54d8: 86448493 addi s1,s1,-1948 # 8d38 <errno>
- 54dc: 1084b783 ld a5,264(s1)
-{
- 54e0: f022 sd s0,32(sp)
- size = ALIGN(size + sizeof(header_t));
- 54e2: 057d addi a0,a0,31
-{
- 54e4: f406 sd ra,40(sp)
- size = ALIGN(size + sizeof(header_t));
- 54e6: ff057413 andi s0,a0,-16
- if ((prevp = freep) == NULL)
- 54ea: c3d1 beqz a5,556e <malloc+0xa0>
- for (p = prevp->next;; prevp = p, p = p->next)
- 54ec: 6788 ld a0,8(a5)
- if (p->size >= size)
- 54ee: 6118 ld a4,0(a0)
- 54f0: 06877163 bgeu a4,s0,5552 <malloc+0x84>
- 54f4: e44e sd s3,8(sp)
- 54f6: e052 sd s4,0(sp)
- 54f8: e84a sd s2,16(sp)
- if (nu < 4096)
- 54fa: 6a05 lui s4,0x1
- if (cp == (void *)-1)
- 54fc: 59fd li s3,-1
- 54fe: a029 j 5508 <malloc+0x3a>
- for (p = prevp->next;; prevp = p, p = p->next)
- 5500: 6788 ld a0,8(a5)
- if (p->size >= size)
- 5502: 6118 ld a4,0(a0)
- 5504: 04877463 bgeu a4,s0,554c <malloc+0x7e>
- if (p == freep)
- 5508: 1084b703 ld a4,264(s1)
- 550c: 87aa mv a5,a0
- 550e: fee519e3 bne a0,a4,5500 <malloc+0x32>
- if (nu < 4096)
- 5512: 8922 mv s2,s0
- 5514: 01447363 bgeu s0,s4,551a <malloc+0x4c>
- 5518: 6905 lui s2,0x1
- cp = (char *)sbrk(nu);
- 551a: 854a mv a0,s2
- 551c: c3dfb0ef jal 1158 <sbrk>
- 5520: 87aa mv a5,a0
- free((void *)(up + 1));
- 5522: 0541 addi a0,a0,16
- if (cp == (void *)-1)
- 5524: 01378963 beq a5,s3,5536 <malloc+0x68>
- up->size = nu;
- 5528: 0127b023 sd s2,0(a5)
- free((void *)(up + 1));
- 552c: f2dff0ef jal 5458 <free>
- return freep;
- 5530: 1084b783 ld a5,264(s1)
- if ((p = morecore(size)) == NULL)
- 5534: f7f1 bnez a5,5500 <malloc+0x32>
-}
- 5536: 70a2 ld ra,40(sp)
- 5538: 7402 ld s0,32(sp)
- errno = ENOMEM;
- 553a: 47b1 li a5,12
- 553c: c09c sw a5,0(s1)
- return NULL;
- 553e: 6942 ld s2,16(sp)
- 5540: 69a2 ld s3,8(sp)
- 5542: 6a02 ld s4,0(sp)
-}
- 5544: 64e2 ld s1,24(sp)
- return NULL;
- 5546: 4501 li a0,0
-}
- 5548: 6145 addi sp,sp,48
- 554a: 8082 ret
- 554c: 6942 ld s2,16(sp)
- 554e: 69a2 ld s3,8(sp)
- 5550: 6a02 ld s4,0(sp)
- if (p->size == size)
- 5552: 02e40c63 beq s0,a4,558a <malloc+0xbc>
- p->size -= size;
- 5556: 8f01 sub a4,a4,s0
- 5558: e118 sd a4,0(a0)
- p = (header_t *)((char *)p + p->size);
- 555a: 953a add a0,a0,a4
- p->size = size;
- 555c: e100 sd s0,0(a0)
-}
- 555e: 70a2 ld ra,40(sp)
- 5560: 7402 ld s0,32(sp)
- freep = prevp;
- 5562: 10f4b423 sd a5,264(s1)
- return (void *)(p + 1);
- 5566: 0541 addi a0,a0,16
-}
- 5568: 64e2 ld s1,24(sp)
- 556a: 6145 addi sp,sp,48
- 556c: 8082 ret
- base.next = freep = prevp = &base;
- 556e: 00004517 auipc a0,0x4
- 5572: 8da50513 addi a0,a0,-1830 # 8e48 <base>
- 5576: 10a4b423 sd a0,264(s1)
- 557a: 10a4bc23 sd a0,280(s1)
- base.size = 0;
- 557e: 00004797 auipc a5,0x4
- 5582: 8c07b523 sd zero,-1846(a5) # 8e48 <base>
- if (p->size >= size)
- 5586: f43d bnez s0,54f4 <malloc+0x26>
- base.next = freep = prevp = &base;
- 5588: 87aa mv a5,a0
- prevp->next = p->next;
- 558a: 6518 ld a4,8(a0)
- 558c: e798 sd a4,8(a5)
- 558e: bfc1 j 555e <malloc+0x90>
- return NULL;
- 5590: 4501 li a0,0
-}
- 5592: 8082 ret
-
-0000000000005594 <calloc>:
- if (__builtin_mul_overflow(nmemb, size, &total))
- 5594: 02b537b3 mulhu a5,a0,a1
-{
- 5598: 1101 addi sp,sp,-32
- 559a: e822 sd s0,16(sp)
- 559c: ec06 sd ra,24(sp)
- 559e: e426 sd s1,8(sp)
- if (__builtin_mul_overflow(nmemb, size, &total))
- 55a0: 02b50433 mul s0,a0,a1
- 55a4: e385 bnez a5,55c4 <calloc+0x30>
- void *p = malloc(total);
- 55a6: 8522 mv a0,s0
- 55a8: f27ff0ef jal 54ce <malloc>
- 55ac: 84aa mv s1,a0
- if (p)
- 55ae: c509 beqz a0,55b8 <calloc+0x24>
- memset(p, 0, total);
- 55b0: 8622 mv a2,s0
- 55b2: 4581 li a1,0
- 55b4: 524000ef jal 5ad8 <memset>
-}
- 55b8: 60e2 ld ra,24(sp)
- 55ba: 6442 ld s0,16(sp)
- 55bc: 8526 mv a0,s1
- 55be: 64a2 ld s1,8(sp)
- 55c0: 6105 addi sp,sp,32
- 55c2: 8082 ret
- 55c4: 60e2 ld ra,24(sp)
- 55c6: 6442 ld s0,16(sp)
- errno = ENOMEM;
- 55c8: 47b1 li a5,12
- return NULL;
- 55ca: 4481 li s1,0
- errno = ENOMEM;
- 55cc: 00003717 auipc a4,0x3
- 55d0: 76f72623 sw a5,1900(a4) # 8d38 <errno>
-}
- 55d4: 8526 mv a0,s1
- 55d6: 64a2 ld s1,8(sp)
- 55d8: 6105 addi sp,sp,32
- 55da: 8082 ret
-
-00000000000055dc <realloc>:
- if (!ptr)
- 55dc: c929 beqz a0,562e <realloc+0x52>
-{
- 55de: 1101 addi sp,sp,-32
- 55e0: ec06 sd ra,24(sp)
- 55e2: e426 sd s1,8(sp)
- if (size == 0)
- 55e4: c5b9 beqz a1,5632 <realloc+0x56>
- if (bp->size >= new_size)
- 55e6: ff053703 ld a4,-16(a0)
- size_t new_size = ALIGN(size + sizeof(header_t));
- 55ea: 01f58793 addi a5,a1,31
- 55ee: e822 sd s0,16(sp)
- 55f0: 9bc1 andi a5,a5,-16
- 55f2: 842a mv s0,a0
- return ptr;
- 55f4: 84aa mv s1,a0
- if (bp->size >= new_size)
- 55f6: 00f76863 bltu a4,a5,5606 <realloc+0x2a>
- 55fa: 6442 ld s0,16(sp)
-}
- 55fc: 60e2 ld ra,24(sp)
- 55fe: 8526 mv a0,s1
- 5600: 64a2 ld s1,8(sp)
- 5602: 6105 addi sp,sp,32
- 5604: 8082 ret
- void *new_ptr = malloc(size);
- 5606: 852e mv a0,a1
- 5608: ec7ff0ef jal 54ce <malloc>
- 560c: 84aa mv s1,a0
- if (!new_ptr)
- 560e: d575 beqz a0,55fa <realloc+0x1e>
- memcpy(new_ptr, ptr, bp->size - sizeof(header_t));
- 5610: ff043603 ld a2,-16(s0)
- 5614: 85a2 mv a1,s0
- 5616: 1641 addi a2,a2,-16
- 5618: 514000ef jal 5b2c <memcpy>
- free(ptr);
- 561c: 8522 mv a0,s0
- 561e: e3bff0ef jal 5458 <free>
-}
- 5622: 60e2 ld ra,24(sp)
- free(ptr);
- 5624: 6442 ld s0,16(sp)
-}
- 5626: 8526 mv a0,s1
- 5628: 64a2 ld s1,8(sp)
- 562a: 6105 addi sp,sp,32
- 562c: 8082 ret
- return malloc(size);
- 562e: 852e mv a0,a1
- 5630: bd79 j 54ce <malloc>
- free(ptr);
- 5632: e27ff0ef jal 5458 <free>
- return NULL;
- 5636: 4481 li s1,0
- 5638: b7d1 j 55fc <realloc+0x20>
-
-000000000000563a <strtoull>:
- if (base < 0 || base == 1 || base > 36)
- 563a: 02400813 li a6,36
-{
- 563e: 86aa mv a3,a0
- 5640: 872e mv a4,a1
- if (base < 0 || base == 1 || base > 36)
- 5642: 00c86663 bltu a6,a2,564e <strtoull+0x14>
- 5646: 4805 li a6,1
- 5648: 01060363 beq a2,a6,564e <strtoull+0x14>
- 564c: b939 j 526a <strtoull.part.0>
- if (endptr)
- 564e: c311 beqz a4,5652 <strtoull+0x18>
- *endptr = (char *)nptr;
- 5650: e314 sd a3,0(a4)
- errno = 0; /* EINVAL */
- 5652: 00003797 auipc a5,0x3
- 5656: 6e07a323 sw zero,1766(a5) # 8d38 <errno>
-}
- 565a: 4501 li a0,0
- 565c: 8082 ret
-
-000000000000565e <strtoll>:
-
-long long strtoll(const char *nptr, char **endptr, int base)
-{
- 565e: 1141 addi sp,sp,-16
- 5660: e406 sd ra,8(sp)
- 5662: e022 sd s0,0(sp)
- const char *s = nptr;
- 5664: 86aa mv a3,a0
- static inline int isspace(int c) { return c == ' ' || c == '\t' || c == '\n' || c == '\v' || c == '\f' || c == '\r'; }
- 5666: 02000813 li a6,32
- 566a: 4891 li a7,4
- unsigned long long acc;
- int c, neg = 0;
-
- do
- {
- c = *s++;
- 566c: 0006c783 lbu a5,0(a3)
- 5670: 0685 addi a3,a3,1
- 5672: ff77871b addiw a4,a5,-9
- 5676: 0ff77713 zext.b a4,a4
- 567a: 0007841b sext.w s0,a5
- 567e: ff0787e3 beq a5,a6,566c <strtoll+0xe>
- 5682: fee8f5e3 bgeu a7,a4,566c <strtoll+0xe>
- if (base < 0 || base == 1 || base > 36)
- 5686: 02400793 li a5,36
- 568a: 02c7ec63 bltu a5,a2,56c2 <strtoll+0x64>
- 568e: 4785 li a5,1
- 5690: 02f60963 beq a2,a5,56c2 <strtoll+0x64>
- 5694: bd7ff0ef jal 526a <strtoull.part.0>
- if (c == '-')
- neg = 1;
-
- acc = strtoull(nptr, endptr, base);
-
- if (errno == ERANGE && acc == ULLONG_MAX)
- 5698: 00003797 auipc a5,0x3
- 569c: 6a078793 addi a5,a5,1696 # 8d38 <errno>
- 56a0: 4394 lw a3,0(a5)
- 56a2: 02200713 li a4,34
- 56a6: 04e68363 beq a3,a4,56ec <strtoll+0x8e>
- return neg ? LLONG_MIN : LLONG_MAX;
-
- if (!neg && acc > (unsigned long long)LLONG_MAX)
- 56aa: 02d00713 li a4,45
- 56ae: 02e40563 beq s0,a4,56d8 <strtoll+0x7a>
- 56b2: 00055f63 bgez a0,56d0 <strtoll+0x72>
- {
- errno = ERANGE;
- 56b6: 02200713 li a4,34
- 56ba: c398 sw a4,0(a5)
- return neg ? LLONG_MIN : LLONG_MAX;
- 56bc: 557d li a0,-1
- 56be: 8105 srli a0,a0,0x1
- 56c0: a801 j 56d0 <strtoll+0x72>
- if (endptr)
- 56c2: c191 beqz a1,56c6 <strtoll+0x68>
- *endptr = (char *)nptr;
- 56c4: e188 sd a0,0(a1)
- errno = 0; /* EINVAL */
- 56c6: 00003797 auipc a5,0x3
- 56ca: 6607a923 sw zero,1650(a5) # 8d38 <errno>
- {
- errno = ERANGE;
- return LLONG_MIN;
- }
-
- return neg ? -(long long)acc : (long long)acc;
- 56ce: 4501 li a0,0
-}
- 56d0: 60a2 ld ra,8(sp)
- 56d2: 6402 ld s0,0(sp)
- 56d4: 0141 addi sp,sp,16
- 56d6: 8082 ret
- if (neg && acc > (unsigned long long)LLONG_MAX + 1)
- 56d8: 577d li a4,-1
- 56da: 177e slli a4,a4,0x3f
- 56dc: 02a76263 bltu a4,a0,5700 <strtoll+0xa2>
-}
- 56e0: 60a2 ld ra,8(sp)
- 56e2: 6402 ld s0,0(sp)
- return neg ? -(long long)acc : (long long)acc;
- 56e4: 40a00533 neg a0,a0
-}
- 56e8: 0141 addi sp,sp,16
- 56ea: 8082 ret
- if (errno == ERANGE && acc == ULLONG_MAX)
- 56ec: 577d li a4,-1
- 56ee: fae51ee3 bne a0,a4,56aa <strtoll+0x4c>
- return neg ? LLONG_MIN : LLONG_MAX;
- 56f2: 02d00793 li a5,45
- 56f6: fcf413e3 bne s0,a5,56bc <strtoll+0x5e>
- return LLONG_MIN;
- 56fa: 557d li a0,-1
- 56fc: 157e slli a0,a0,0x3f
- 56fe: bfc9 j 56d0 <strtoll+0x72>
- errno = ERANGE;
- 5700: 02200713 li a4,34
- 5704: c398 sw a4,0(a5)
- return LLONG_MIN;
- 5706: bfd5 j 56fa <strtoll+0x9c>
-
-0000000000005708 <strtoul>:
- if (base < 0 || base == 1 || base > 36)
- 5708: 02400813 li a6,36
-
-unsigned long strtoul(const char *nptr, char **endptr, int base)
-{
- 570c: 86aa mv a3,a0
- 570e: 872e mv a4,a1
- if (base < 0 || base == 1 || base > 36)
- 5710: 00c86663 bltu a6,a2,571c <strtoul+0x14>
- 5714: 4805 li a6,1
- 5716: 01060363 beq a2,a6,571c <strtoul+0x14>
- 571a: be81 j 526a <strtoull.part.0>
- if (endptr)
- 571c: c311 beqz a4,5720 <strtoul+0x18>
- *endptr = (char *)nptr;
- 571e: e314 sd a3,0(a4)
- errno = 0; /* EINVAL */
- 5720: 00003797 auipc a5,0x3
- 5724: 6007ac23 sw zero,1560(a5) # 8d38 <errno>
- {
- errno = ERANGE;
- return ULONG_MAX;
- }
- return (unsigned long)ret;
-}
- 5728: 4501 li a0,0
- 572a: 8082 ret
-
-000000000000572c <strtol>:
-
-long strtol(const char *nptr, char **endptr, int base)
-{
- long long ret = strtoll(nptr, endptr, base);
- 572c: bf0d j 565e <strtoll>
-
-000000000000572e <atoi>:
- return LONG_MIN;
- }
- return (long)ret;
-}
-
-int atoi(const char *nptr) { return (int)strtol(nptr, NULL, 10); }
- 572e: 1141 addi sp,sp,-16
- long long ret = strtoll(nptr, endptr, base);
- 5730: 4629 li a2,10
- 5732: 4581 li a1,0
-int atoi(const char *nptr) { return (int)strtol(nptr, NULL, 10); }
- 5734: e406 sd ra,8(sp)
- long long ret = strtoll(nptr, endptr, base);
- 5736: f29ff0ef jal 565e <strtoll>
-int atoi(const char *nptr) { return (int)strtol(nptr, NULL, 10); }
- 573a: 60a2 ld ra,8(sp)
- 573c: 2501 sext.w a0,a0
- 573e: 0141 addi sp,sp,16
- 5740: 8082 ret
-
-0000000000005742 <atol>:
- long long ret = strtoll(nptr, endptr, base);
- 5742: 4629 li a2,10
- 5744: 4581 li a1,0
- 5746: bf21 j 565e <strtoll>
-
-0000000000005748 <atoll>:
-long atol(const char *nptr) { return strtol(nptr, NULL, 10); }
-long long atoll(const char *nptr) { return strtoll(nptr, NULL, 10); }
- 5748: 4629 li a2,10
- 574a: 4581 li a1,0
- 574c: bf09 j 565e <strtoll>
-
-000000000000574e <strtod>:
- 574e: 02000693 li a3,32
- 5752: 4611 li a2,4
-{
- double val = 0.0;
- int sign = 1;
- const char *s = nptr;
-
- while (isspace(*s))
- 5754: 00054783 lbu a5,0(a0)
- 5758: ff77871b addiw a4,a5,-9
- 575c: 0ff77713 zext.b a4,a4
- 5760: 06d78263 beq a5,a3,57c4 <strtod+0x76>
- 5764: 06e67063 bgeu a2,a4,57c4 <strtod+0x76>
- s++;
- if (*s == '-')
- 5768: 02d00713 li a4,45
- 576c: 08e78e63 beq a5,a4,5808 <strtod+0xba>
- {
- sign = -1;
- s++;
- }
- else if (*s == '+')
- 5770: 02b00713 li a4,43
- 5774: 0ae78263 beq a5,a4,5818 <strtod+0xca>
- 5778: 00001717 auipc a4,0x1
- 577c: 20073507 fld fa0,512(a4) # 6978 <STDIN_FD+0x10>
- static inline int isdigit(int c) { return c >= '0' && c <= '9'; }
- 5780: fd07861b addiw a2,a5,-48
- s++;
-
- while (isdigit(*s))
- 5784: 46a5 li a3,9
- 5786: f20007d3 fmv.d.x fa5,zero
- 578a: 8732 mv a4,a2
- 578c: 02c6e363 bltu a3,a2,57b2 <strtod+0x64>
- 5790: 00001797 auipc a5,0x1
- 5794: 1f07b687 fld fa3,496(a5) # 6980 <STDIN_FD+0x18>
- 5798: 4625 li a2,9
- 579a: 00154783 lbu a5,1(a0)
- {
- val = val * 10.0 + (*s - '0');
- 579e: d2070753 fcvt.d.w fa4,a4
- s++;
- 57a2: 0505 addi a0,a0,1
- 57a4: fd07869b addiw a3,a5,-48
- val = val * 10.0 + (*s - '0');
- 57a8: 72d7f7c3 fmadd.d fa5,fa5,fa3,fa4
- 57ac: 8736 mv a4,a3
- while (isdigit(*s))
- 57ae: fed676e3 bgeu a2,a3,579a <strtod+0x4c>
- }
- if (*s == '.')
- 57b2: 02e00713 li a4,46
- 57b6: 00e78963 beq a5,a4,57c8 <strtod+0x7a>
- val += (*s - '0') * factor;
- s++;
- }
- }
-
- if (endptr)
- 57ba: c191 beqz a1,57be <strtod+0x70>
- *endptr = (char *)s;
- 57bc: e188 sd a0,0(a1)
- return val * sign;
-}
- 57be: 12a7f553 fmul.d fa0,fa5,fa0
- 57c2: 8082 ret
- s++;
- 57c4: 0505 addi a0,a0,1
- 57c6: b779 j 5754 <strtod+0x6>
- while (isdigit(*s))
- 57c8: 00154703 lbu a4,1(a0)
- 57cc: 46a5 li a3,9
- s++;
- 57ce: 0505 addi a0,a0,1
- 57d0: fd07071b addiw a4,a4,-48
- 57d4: 87ba mv a5,a4
- while (isdigit(*s))
- 57d6: fee6e2e3 bltu a3,a4,57ba <strtod+0x6c>
- double factor = 1.0;
- 57da: 00001717 auipc a4,0x1
- 57de: 19e73707 fld fa4,414(a4) # 6978 <STDIN_FD+0x10>
- 57e2: 00001717 auipc a4,0x1
- 57e6: 1b673607 fld fa2,438(a4) # 6998 <STDIN_FD+0x30>
- factor *= 0.1;
- 57ea: 12c77753 fmul.d fa4,fa4,fa2
- while (isdigit(*s))
- 57ee: 00154703 lbu a4,1(a0)
- val += (*s - '0') * factor;
- 57f2: d20786d3 fcvt.d.w fa3,a5
- s++;
- 57f6: 0505 addi a0,a0,1
- 57f8: fd07071b addiw a4,a4,-48
- 57fc: 87ba mv a5,a4
- val += (*s - '0') * factor;
- 57fe: 7ae6f7c3 fmadd.d fa5,fa3,fa4,fa5
- while (isdigit(*s))
- 5802: fee6f4e3 bgeu a3,a4,57ea <strtod+0x9c>
- 5806: bf55 j 57ba <strtod+0x6c>
- while (isdigit(*s))
- 5808: 00154783 lbu a5,1(a0)
- 580c: 00001717 auipc a4,0x1
- 5810: 16473507 fld fa0,356(a4) # 6970 <STDIN_FD+0x8>
- s++;
- 5814: 0505 addi a0,a0,1
- 5816: b7ad j 5780 <strtod+0x32>
- while (isdigit(*s))
- 5818: 00154783 lbu a5,1(a0)
- 581c: 00001717 auipc a4,0x1
- 5820: 15c73507 fld fa0,348(a4) # 6978 <STDIN_FD+0x10>
- s++;
- 5824: 0505 addi a0,a0,1
- 5826: bfa9 j 5780 <strtod+0x32>
-
-0000000000005828 <atof>:
-
-double atof(const char *nptr) { return strtod(nptr, NULL); }
- 5828: 4581 li a1,0
- 582a: b715 j 574e <strtod>
-
-000000000000582c <strtof>:
-float strtof(const char *nptr, char **endptr) { return (float)strtod(nptr, endptr); }
- 582c: 1141 addi sp,sp,-16
- 582e: e406 sd ra,8(sp)
- 5830: f1fff0ef jal 574e <strtod>
- 5834: 60a2 ld ra,8(sp)
- 5836: 40157553 fcvt.s.d fa0,fa0
- 583a: 0141 addi sp,sp,16
- 583c: 8082 ret
-
-000000000000583e <qsort>:
- }
-}
-
-void qsort(void *base, size_t nmemb, size_t size, int (*compar)(const void *, const void *))
-{
- if (nmemb < 2 || size == 0)
- 583e: 4785 li a5,1
- 5840: 0cb7fd63 bgeu a5,a1,591a <qsort+0xdc>
-{
- 5844: 715d addi sp,sp,-80
- 5846: f44e sd s3,40(sp)
- 5848: e486 sd ra,72(sp)
- 584a: 89b2 mv s3,a2
- if (nmemb < 2 || size == 0)
- 584c: c279 beqz a2,5912 <qsort+0xd4>
- 584e: e85a sd s6,16(sp)
- 5850: 8b2e mv s6,a1
- return;
-
- char *base_ptr = (char *)base;
- char *pivot = base_ptr + (nmemb - 1) * size;
- 5852: 1b7d addi s6,s6,-1
- 5854: fc26 sd s1,56(sp)
- 5856: 033b04b3 mul s1,s6,s3
- 585a: ec56 sd s5,24(sp)
- 585c: 8aaa mv s5,a0
- 585e: f052 sd s4,32(sp)
- 5860: e45e sd s7,8(sp)
- 5862: e0a2 sd s0,64(sp)
- 5864: f84a sd s2,48(sp)
- 5866: 8a36 mv s4,a3
- if (nmemb < 2 || size == 0)
- 5868: 4b85 li s7,1
- char *pivot = base_ptr + (nmemb - 1) * size;
- 586a: 94d6 add s1,s1,s5
- char *i = base_ptr;
- char *j = base_ptr;
-
- /* Partition */
- for (; j < pivot; j += size)
- 586c: 069af763 bgeu s5,s1,58da <qsort+0x9c>
- char *j = base_ptr;
- 5870: 8956 mv s2,s5
- char *i = base_ptr;
- 5872: 8456 mv s0,s5
- 5874: a021 j 587c <qsort+0x3e>
- for (; j < pivot; j += size)
- 5876: 994e add s2,s2,s3
- 5878: 00997f63 bgeu s2,s1,5896 <qsort+0x58>
- {
- if (compar(j, pivot) < 0)
- 587c: 85a6 mv a1,s1
- 587e: 854a mv a0,s2
- 5880: 9a02 jalr s4
- 5882: fe055ae3 bgez a0,5876 <qsort+0x38>
- {
- if (i != j)
- 5886: 05241d63 bne s0,s2,58e0 <qsort+0xa2>
- 588a: 01390633 add a2,s2,s3
- swap_bytes(i, j, size);
- i += size;
- 588e: 8432 mv s0,a2
- for (; j < pivot; j += size)
- 5890: 994e add s2,s2,s3
- 5892: fe9965e3 bltu s2,s1,587c <qsort+0x3e>
- }
- }
- swap_bytes(i, pivot, size);
-
- /* Recurse */
- size_t left_count = (i - base_ptr) / size;
- 5896: 415405b3 sub a1,s0,s5
- 589a: 0335d5b3 divu a1,a1,s3
- qsort(base, left_count, size, compar);
- qsort(i + size, nmemb - left_count - 1, size, compar);
- 589e: 40bb0b33 sub s6,s6,a1
- while (size--)
- 58a2: 013406b3 add a3,s0,s3
- *a++ = *b;
- 58a6: 0004c703 lbu a4,0(s1)
- temp = *a;
- 58aa: 00044783 lbu a5,0(s0)
- *b++ = temp;
- 58ae: 0485 addi s1,s1,1
- *a++ = *b;
- 58b0: 0405 addi s0,s0,1
- 58b2: fee40fa3 sb a4,-1(s0)
- *b++ = temp;
- 58b6: fef48fa3 sb a5,-1(s1)
- while (size--)
- 58ba: fed416e3 bne s0,a3,58a6 <qsort+0x68>
- qsort(base, left_count, size, compar);
- 58be: 86d2 mv a3,s4
- 58c0: 864e mv a2,s3
- 58c2: 8556 mv a0,s5
- 58c4: f7bff0ef jal 583e <qsort>
- if (nmemb < 2 || size == 0)
- 58c8: 036bfe63 bgeu s7,s6,5904 <qsort+0xc6>
- char *pivot = base_ptr + (nmemb - 1) * size;
- 58cc: 1b7d addi s6,s6,-1
- 58ce: 033b04b3 mul s1,s6,s3
- 58d2: 8aa2 mv s5,s0
- 58d4: 94d6 add s1,s1,s5
- for (; j < pivot; j += size)
- 58d6: f89aede3 bltu s5,s1,5870 <qsort+0x32>
- char *i = base_ptr;
- 58da: 8456 mv s0,s5
- for (; j < pivot; j += size)
- 58dc: 4581 li a1,0
- 58de: b7d1 j 58a2 <qsort+0x64>
- 58e0: 01340633 add a2,s0,s3
- if (i != j)
- 58e4: 874a mv a4,s2
- 58e6: 87a2 mv a5,s0
- *a++ = *b;
- 58e8: 00074683 lbu a3,0(a4)
- temp = *a;
- 58ec: 0007c803 lbu a6,0(a5)
- *b++ = temp;
- 58f0: 0705 addi a4,a4,1
- *a++ = *b;
- 58f2: 0785 addi a5,a5,1
- 58f4: fed78fa3 sb a3,-1(a5)
- *b++ = temp;
- 58f8: ff070fa3 sb a6,-1(a4)
- while (size--)
- 58fc: fec796e3 bne a5,a2,58e8 <qsort+0xaa>
- i += size;
- 5900: 8432 mv s0,a2
- 5902: b779 j 5890 <qsort+0x52>
- 5904: 6406 ld s0,64(sp)
- 5906: 74e2 ld s1,56(sp)
- 5908: 7942 ld s2,48(sp)
- 590a: 7a02 ld s4,32(sp)
- 590c: 6ae2 ld s5,24(sp)
- 590e: 6b42 ld s6,16(sp)
- 5910: 6ba2 ld s7,8(sp)
-}
- 5912: 60a6 ld ra,72(sp)
- 5914: 79a2 ld s3,40(sp)
- 5916: 6161 addi sp,sp,80
- 5918: 8082 ret
- 591a: 8082 ret
-
-000000000000591c <bsearch>:
-
-void *bsearch(const void *key, const void *base, size_t nmemb, size_t size, int (*compar)(const void *, const void *))
-{
- 591c: 715d addi sp,sp,-80
- 591e: e486 sd ra,72(sp)
- 5920: fc26 sd s1,56(sp)
- size_t l = 0, u = nmemb;
- while (l < u)
- 5922: c629 beqz a2,596c <bsearch+0x50>
- 5924: f84a sd s2,48(sp)
- 5926: f44e sd s3,40(sp)
- 5928: f052 sd s4,32(sp)
- 592a: ec56 sd s5,24(sp)
- 592c: e85a sd s6,16(sp)
- 592e: e45e sd s7,8(sp)
- 5930: e0a2 sd s0,64(sp)
- 5932: 8932 mv s2,a2
- 5934: 8a2a mv s4,a0
- 5936: 8aae mv s5,a1
- 5938: 8b36 mv s6,a3
- 593a: 8bba mv s7,a4
- size_t l = 0, u = nmemb;
- 593c: 4981 li s3,0
- {
- size_t idx = (l + u) / 2;
- 593e: 01298433 add s0,s3,s2
- 5942: 8005 srli s0,s0,0x1
- const void *p = (void *)((const char *)base + (idx * size));
- 5944: 036404b3 mul s1,s0,s6
- int cmp = compar(key, p);
- 5948: 8552 mv a0,s4
- const void *p = (void *)((const char *)base + (idx * size));
- 594a: 94d6 add s1,s1,s5
- int cmp = compar(key, p);
- 594c: 85a6 mv a1,s1
- 594e: 9b82 jalr s7
- if (cmp < 0)
- 5950: 02054463 bltz a0,5978 <bsearch+0x5c>
- u = idx;
- else if (cmp > 0)
- 5954: c515 beqz a0,5980 <bsearch+0x64>
- l = idx + 1;
- 5956: 00140993 addi s3,s0,1
- while (l < u)
- 595a: ff29e2e3 bltu s3,s2,593e <bsearch+0x22>
- 595e: 6406 ld s0,64(sp)
- 5960: 7942 ld s2,48(sp)
- 5962: 79a2 ld s3,40(sp)
- 5964: 7a02 ld s4,32(sp)
- 5966: 6ae2 ld s5,24(sp)
- 5968: 6b42 ld s6,16(sp)
- 596a: 6ba2 ld s7,8(sp)
- else
- return (void *)p;
- }
- return NULL;
-}
- 596c: 60a6 ld ra,72(sp)
- return NULL;
- 596e: 4481 li s1,0
-}
- 5970: 8526 mv a0,s1
- 5972: 74e2 ld s1,56(sp)
- 5974: 6161 addi sp,sp,80
- 5976: 8082 ret
- u = idx;
- 5978: 8922 mv s2,s0
- while (l < u)
- 597a: fd29e2e3 bltu s3,s2,593e <bsearch+0x22>
- 597e: b7c5 j 595e <bsearch+0x42>
- 5980: 6406 ld s0,64(sp)
-}
- 5982: 60a6 ld ra,72(sp)
- 5984: 7942 ld s2,48(sp)
- 5986: 79a2 ld s3,40(sp)
- 5988: 7a02 ld s4,32(sp)
- 598a: 6ae2 ld s5,24(sp)
- 598c: 6b42 ld s6,16(sp)
- 598e: 6ba2 ld s7,8(sp)
- 5990: 8526 mv a0,s1
- 5992: 74e2 ld s1,56(sp)
- 5994: 6161 addi sp,sp,80
- 5996: 8082 ret
-
-0000000000005998 <abs>:
-
-/* Math & Mics */
-
-int abs(int j) { return (j < 0) ? -j : j; }
- 5998: 41f5579b sraiw a5,a0,0x1f
- 599c: 8d3d xor a0,a0,a5
- 599e: 9d1d subw a0,a0,a5
- 59a0: 8082 ret
-
-00000000000059a2 <labs>:
-long labs(long j) { return (j < 0) ? -j : j; }
- 59a2: 43f55793 srai a5,a0,0x3f
- 59a6: 8d3d xor a0,a0,a5
- 59a8: 8d1d sub a0,a0,a5
- 59aa: 8082 ret
-
-00000000000059ac <llabs>:
-long long llabs(long long j) { return (j < 0) ? -j : j; }
- 59ac: 43f55793 srai a5,a0,0x3f
- 59b0: 8d3d xor a0,a0,a5
- 59b2: 8d1d sub a0,a0,a5
- 59b4: 8082 ret
-
-00000000000059b6 <div>:
-
-div_t div(int numer, int denom)
-{
- div_t res = {numer / denom, numer % denom};
- 59b6: 02b547bb divw a5,a0,a1
-{
- 59ba: 1141 addi sp,sp,-16
- return res;
-}
- 59bc: 0141 addi sp,sp,16
- div_t res = {numer / denom, numer % denom};
- 59be: 02b5653b remw a0,a0,a1
- return res;
- 59c2: 1782 slli a5,a5,0x20
- 59c4: 9381 srli a5,a5,0x20
- 59c6: 1502 slli a0,a0,0x20
-}
- 59c8: 8d5d or a0,a0,a5
- 59ca: 8082 ret
-
-00000000000059cc <ldiv>:
-ldiv_t ldiv(long numer, long denom)
-{
- 59cc: 1141 addi sp,sp,-16
- 59ce: 87aa mv a5,a0
- ldiv_t res = {numer / denom, numer % denom};
- return res;
-}
- 59d0: 02b54533 div a0,a0,a1
- 59d4: 0141 addi sp,sp,16
- 59d6: 02b7e5b3 rem a1,a5,a1
- 59da: 8082 ret
-
-00000000000059dc <lldiv>:
-lldiv_t lldiv(long long numer, long long denom)
-{
- 59dc: 1141 addi sp,sp,-16
- 59de: 87aa mv a5,a0
- lldiv_t res = {numer / denom, numer % denom};
- return res;
-}
- 59e0: 02b54533 div a0,a0,a1
- 59e4: 0141 addi sp,sp,16
- 59e6: 02b7e5b3 rem a1,a5,a1
- 59ea: 8082 ret
-
-00000000000059ec <rand>:
-
-static unsigned long next = 1;
-int rand(void)
-{
- next = next * 1103515245 + 12345;
- 59ec: 00003697 auipc a3,0x3
- 59f0: 2a468693 addi a3,a3,676 # 8c90 <next>
- 59f4: 629c ld a5,0(a3)
- 59f6: 41c65737 lui a4,0x41c65
- 59fa: e6d70713 addi a4,a4,-403 # 41c64e6d <_ZSt4cerr+0x41c5bffd>
- 59fe: 02e787b3 mul a5,a5,a4
- 5a02: 670d lui a4,0x3
- 5a04: 03970713 addi a4,a4,57 # 3039 <stbsp_vsprintfcb+0xd6b>
- 5a08: 97ba add a5,a5,a4
- return (unsigned int)(next / 65536) % 32768;
- 5a0a: 02179513 slli a0,a5,0x21
- next = next * 1103515245 + 12345;
- 5a0e: e29c sd a5,0(a3)
-}
- 5a10: 9145 srli a0,a0,0x31
- 5a12: 8082 ret
-
-0000000000005a14 <srand>:
-void srand(unsigned int seed) { next = seed; }
- 5a14: 1502 slli a0,a0,0x20
- 5a16: 9101 srli a0,a0,0x20
- 5a18: 00003797 auipc a5,0x3
- 5a1c: 26a7bc23 sd a0,632(a5) # 8c90 <next>
- 5a20: 8082 ret
-
-0000000000005a22 <mblen>:
-
-/* Stub */
-int mblen(const char *s, size_t n) { return (s && *s && n) ? 1 : 0; }
- 5a22: c901 beqz a0,5a32 <mblen+0x10>
- 5a24: 00054783 lbu a5,0(a0)
- 5a28: 4501 li a0,0
- 5a2a: c789 beqz a5,5a34 <mblen+0x12>
- 5a2c: 00b03533 snez a0,a1
- 5a30: 8082 ret
- 5a32: 4501 li a0,0
- 5a34: 8082 ret
-
-0000000000005a36 <mbtowc>:
-int mbtowc(wchar_t *pwc, const char *s, size_t n)
-{
- 5a36: 87aa mv a5,a0
- if (!s)
- 5a38: cd81 beqz a1,5a50 <mbtowc+0x1a>
- return 0;
- if (n == 0)
- return -1;
- 5a3a: 557d li a0,-1
- if (n == 0)
- 5a3c: ca19 beqz a2,5a52 <mbtowc+0x1c>
- if (pwc)
- 5a3e: c781 beqz a5,5a46 <mbtowc+0x10>
- *pwc = (wchar_t)*s;
- 5a40: 0005c703 lbu a4,0(a1)
- 5a44: c398 sw a4,0(a5)
- return (*s != 0);
- 5a46: 0005c503 lbu a0,0(a1)
- 5a4a: 00a03533 snez a0,a0
- 5a4e: 8082 ret
- return 0;
- 5a50: 4501 li a0,0
-}
- 5a52: 8082 ret
-
-0000000000005a54 <wctomb>:
-int wctomb(char *s, wchar_t wchar)
-{
- if (!s)
- 5a54: c509 beqz a0,5a5e <wctomb+0xa>
- return 0;
- *s = (char)wchar;
- 5a56: 00b50023 sb a1,0(a0)
- return 1;
- 5a5a: 4505 li a0,1
- 5a5c: 8082 ret
- return 0;
- 5a5e: 4501 li a0,0
-}
- 5a60: 8082 ret
-
-0000000000005a62 <mbstowcs>:
-size_t mbstowcs(wchar_t *dest, const char *src, size_t n)
-{
- size_t i = 0;
- while (src[i] && i < n)
- 5a62: 0005c703 lbu a4,0(a1)
- 5a66: cb0d beqz a4,5a98 <mbstowcs+0x36>
- 5a68: ca15 beqz a2,5a9c <mbstowcs+0x3a>
- 5a6a: 86aa mv a3,a0
- size_t i = 0;
- 5a6c: 4781 li a5,0
- 5a6e: a019 j 5a74 <mbstowcs+0x12>
- while (src[i] && i < n)
- 5a70: 02f60263 beq a2,a5,5a94 <mbstowcs+0x32>
- {
- dest[i] = (wchar_t)src[i];
- i++;
- 5a74: 0785 addi a5,a5,1
- dest[i] = (wchar_t)src[i];
- 5a76: c298 sw a4,0(a3)
- while (src[i] && i < n)
- 5a78: 00f58733 add a4,a1,a5
- 5a7c: 00074703 lbu a4,0(a4)
- 5a80: 0691 addi a3,a3,4
- 5a82: f77d bnez a4,5a70 <mbstowcs+0xe>
- }
- if (i < n)
- 5a84: 00c7f763 bgeu a5,a2,5a92 <mbstowcs+0x30>
- dest[i] = 0;
- 5a88: 00279713 slli a4,a5,0x2
- 5a8c: 953a add a0,a0,a4
- 5a8e: 00052023 sw zero,0(a0)
- size_t i = 0;
- 5a92: 863e mv a2,a5
- 5a94: 8532 mv a0,a2
- 5a96: 8082 ret
- 5a98: 4781 li a5,0
- 5a9a: b7ed j 5a84 <mbstowcs+0x22>
- 5a9c: 4501 li a0,0
- return i;
-}
- 5a9e: 8082 ret
-
-0000000000005aa0 <wcstombs>:
-size_t wcstombs(char *dest, const wchar_t *src, size_t n)
-{
- size_t i = 0;
- while (src[i] && i < n)
- 5aa0: 4198 lw a4,0(a1)
- 5aa2: c71d beqz a4,5ad0 <wcstombs+0x30>
- 5aa4: ca05 beqz a2,5ad4 <wcstombs+0x34>
- 5aa6: 0591 addi a1,a1,4
- size_t i = 0;
- 5aa8: 4781 li a5,0
- 5aaa: a019 j 5ab0 <wcstombs+0x10>
- while (src[i] && i < n)
- 5aac: 02f60063 beq a2,a5,5acc <wcstombs+0x2c>
- {
- dest[i] = (char)src[i];
- 5ab0: 00f506b3 add a3,a0,a5
- 5ab4: 00e68023 sb a4,0(a3)
- while (src[i] && i < n)
- 5ab8: 4198 lw a4,0(a1)
- i++;
- 5aba: 0785 addi a5,a5,1
- while (src[i] && i < n)
- 5abc: 0591 addi a1,a1,4
- 5abe: f77d bnez a4,5aac <wcstombs+0xc>
- }
- if (i < n)
- 5ac0: 00c7f563 bgeu a5,a2,5aca <wcstombs+0x2a>
- dest[i] = 0;
- 5ac4: 953e add a0,a0,a5
- 5ac6: 00050023 sb zero,0(a0)
- size_t i = 0;
- 5aca: 863e mv a2,a5
- 5acc: 8532 mv a0,a2
- 5ace: 8082 ret
- 5ad0: 4781 li a5,0
- 5ad2: b7fd j 5ac0 <wcstombs+0x20>
- 5ad4: 4501 li a0,0
- return i;
- 5ad6: 8082 ret
-
-0000000000005ad8 <memset>:
-
-void *memset(void *dst, int c, size_t n)
-{
- char *cdst = (char *)dst;
- for (size_t i = 0; i < n; i++)
- cdst[i] = (char)c;
- 5ad8: 0ff5f593 zext.b a1,a1
- 5adc: 87aa mv a5,a0
- 5ade: 00a60733 add a4,a2,a0
- for (size_t i = 0; i < n; i++)
- 5ae2: c611 beqz a2,5aee <memset+0x16>
- cdst[i] = (char)c;
- 5ae4: 00b78023 sb a1,0(a5)
- for (size_t i = 0; i < n; i++)
- 5ae8: 0785 addi a5,a5,1
- 5aea: fee79de3 bne a5,a4,5ae4 <memset+0xc>
- return dst;
-}
- 5aee: 8082 ret
-
-0000000000005af0 <memmove>:
-
-void *memmove(void *vdst, const void *vsrc, size_t n)
-{
- char *dst = (char *)vdst;
- const char *src = (const char *)vsrc;
- if (dst == src)
- 5af0: 02b50d63 beq a0,a1,5b2a <memmove+0x3a>
- return vdst;
-
- if (src > dst)
- 5af4: 00b57e63 bgeu a0,a1,5b10 <memmove+0x20>
- {
- while (n--)
- 5af8: ca0d beqz a2,5b2a <memmove+0x3a>
- 5afa: 962a add a2,a2,a0
- char *dst = (char *)vdst;
- 5afc: 87aa mv a5,a0
- *dst++ = *src++;
- 5afe: 0005c703 lbu a4,0(a1)
- 5b02: 0785 addi a5,a5,1
- 5b04: 0585 addi a1,a1,1
- 5b06: fee78fa3 sb a4,-1(a5)
- while (n--)
- 5b0a: fec79ae3 bne a5,a2,5afe <memmove+0xe>
- 5b0e: 8082 ret
- }
- else
- {
- dst += n;
- 5b10: 00c50733 add a4,a0,a2
- src += n;
- 5b14: 00c587b3 add a5,a1,a2
- while (n-- > 0)
- 5b18: ca09 beqz a2,5b2a <memmove+0x3a>
- *--dst = *--src;
- 5b1a: fff7c683 lbu a3,-1(a5)
- 5b1e: 17fd addi a5,a5,-1
- 5b20: 177d addi a4,a4,-1
- 5b22: 00d70023 sb a3,0(a4)
- while (n-- > 0)
- 5b26: fef59ae3 bne a1,a5,5b1a <memmove+0x2a>
- }
- return vdst;
-}
- 5b2a: 8082 ret
-
-0000000000005b2c <memcpy>:
-
-void *memcpy(void *vdst, const void *vsrc, size_t n)
-{
- return memmove(vdst, vsrc, n);
- 5b2c: b7d1 j 5af0 <memmove>
-
-0000000000005b2e <memcmp>:
-
-int memcmp(const void *s1, const void *s2, size_t n)
-{
- const unsigned char *p1 = (const unsigned char *)s1;
- const unsigned char *p2 = (const unsigned char *)s2;
- while (n--)
- 5b2e: c205 beqz a2,5b4e <memcmp+0x20>
- 5b30: 962a add a2,a2,a0
- 5b32: a019 j 5b38 <memcmp+0xa>
- 5b34: 00c50d63 beq a0,a2,5b4e <memcmp+0x20>
- {
- if (*p1 != *p2)
- 5b38: 00054783 lbu a5,0(a0)
- 5b3c: 0005c703 lbu a4,0(a1)
- return *p1 - *p2;
- p1++;
- 5b40: 0505 addi a0,a0,1
- p2++;
- 5b42: 0585 addi a1,a1,1
- if (*p1 != *p2)
- 5b44: fee788e3 beq a5,a4,5b34 <memcmp+0x6>
- return *p1 - *p2;
- 5b48: 40e7853b subw a0,a5,a4
- 5b4c: 8082 ret
- }
- return 0;
- 5b4e: 4501 li a0,0
-}
- 5b50: 8082 ret
-
-0000000000005b52 <memchr>:
-
-void *memchr(const void *s, int c, size_t n)
-{
- const unsigned char *p = (const unsigned char *)s;
- while (n--)
- 5b52: ce09 beqz a2,5b6c <memchr+0x1a>
- {
- if (*p == (unsigned char)c)
- 5b54: 0ff5f593 zext.b a1,a1
- 5b58: 962a add a2,a2,a0
- 5b5a: a021 j 5b62 <memchr+0x10>
- return (void *)p;
- p++;
- 5b5c: 0505 addi a0,a0,1
- while (n--)
- 5b5e: 00a60763 beq a2,a0,5b6c <memchr+0x1a>
- if (*p == (unsigned char)c)
- 5b62: 00054783 lbu a5,0(a0)
- 5b66: feb79be3 bne a5,a1,5b5c <memchr+0xa>
- }
- return NULL;
-}
- 5b6a: 8082 ret
- return NULL;
- 5b6c: 4501 li a0,0
-}
- 5b6e: 8082 ret
-
-0000000000005b70 <strlen>:
-/* String Manipulation Functions */
-
-size_t strlen(const char *s)
-{
- const char *p = s;
- while (*p)
- 5b70: 00054783 lbu a5,0(a0)
- 5b74: cb89 beqz a5,5b86 <strlen+0x16>
- const char *p = s;
- 5b76: 87aa mv a5,a0
- while (*p)
- 5b78: 0017c703 lbu a4,1(a5)
- p++;
- 5b7c: 0785 addi a5,a5,1
- while (*p)
- 5b7e: ff6d bnez a4,5b78 <strlen+0x8>
- return (size_t)(p - s);
- 5b80: 40a78533 sub a0,a5,a0
- 5b84: 8082 ret
- while (*p)
- 5b86: 4501 li a0,0
-}
- 5b88: 8082 ret
-
-0000000000005b8a <strcpy>:
-
-char *strcpy(char *dst, const char *src)
-{
- char *os = dst;
- while ((*dst++ = *src++) != 0)
- 5b8a: 87aa mv a5,a0
- 5b8c: 0005c703 lbu a4,0(a1)
- 5b90: 0785 addi a5,a5,1
- 5b92: 0585 addi a1,a1,1
- 5b94: fee78fa3 sb a4,-1(a5)
- 5b98: fb75 bnez a4,5b8c <strcpy+0x2>
- ;
- return os;
-}
- 5b9a: 8082 ret
-
-0000000000005b9c <strncpy>:
-char *strncpy(char *dst, const char *src, size_t n)
-{
- char *os = dst;
- size_t i;
-
- for (i = 0; i < n && src[i] != '\0'; i++)
- 5b9c: 4781 li a5,0
- 5b9e: e619 bnez a2,5bac <strncpy+0x10>
- 5ba0: 8082 ret
- dst[i] = src[i];
- 5ba2: 00e68023 sb a4,0(a3)
- for (i = 0; i < n && src[i] != '\0'; i++)
- 5ba6: 0785 addi a5,a5,1
- 5ba8: 02f60263 beq a2,a5,5bcc <strncpy+0x30>
- 5bac: 00f58733 add a4,a1,a5
- 5bb0: 00074703 lbu a4,0(a4)
- dst[i] = src[i];
- 5bb4: 00f506b3 add a3,a0,a5
- for (i = 0; i < n && src[i] != '\0'; i++)
- 5bb8: f76d bnez a4,5ba2 <strncpy+0x6>
-
- for (; i < n; i++)
- 5bba: 00c7f963 bgeu a5,a2,5bcc <strncpy+0x30>
- 5bbe: 87b6 mv a5,a3
- 5bc0: 962a add a2,a2,a0
- dst[i] = '\0';
- 5bc2: 00078023 sb zero,0(a5)
- for (; i < n; i++)
- 5bc6: 0785 addi a5,a5,1
- 5bc8: fec79de3 bne a5,a2,5bc2 <strncpy+0x26>
-
- return os;
-}
- 5bcc: 8082 ret
-
-0000000000005bce <strcat>:
-
-char *strcat(char *dst, const char *src)
-{
- char *os = dst;
- while (*dst)
- 5bce: 00054783 lbu a5,0(a0)
- 5bd2: cf91 beqz a5,5bee <strcat+0x20>
- 5bd4: 87aa mv a5,a0
- 5bd6: 0017c703 lbu a4,1(a5)
- dst++;
- 5bda: 0785 addi a5,a5,1
- while (*dst)
- 5bdc: ff6d bnez a4,5bd6 <strcat+0x8>
- while ((*dst++ = *src++) != 0)
- 5bde: 0005c703 lbu a4,0(a1)
- 5be2: 0785 addi a5,a5,1
- 5be4: 0585 addi a1,a1,1
- 5be6: fee78fa3 sb a4,-1(a5)
- 5bea: fb75 bnez a4,5bde <strcat+0x10>
- ;
- return os;
-}
- 5bec: 8082 ret
- while ((*dst++ = *src++) != 0)
- 5bee: 0005c703 lbu a4,0(a1)
- while (*dst)
- 5bf2: 87aa mv a5,a0
- while ((*dst++ = *src++) != 0)
- 5bf4: 0785 addi a5,a5,1
- 5bf6: fee78fa3 sb a4,-1(a5)
- 5bfa: 0585 addi a1,a1,1
- 5bfc: f36d bnez a4,5bde <strcat+0x10>
- 5bfe: 8082 ret
-
-0000000000005c00 <strncat>:
- while (*p)
- 5c00: 00054783 lbu a5,0(a0)
- const char *p = s;
- 5c04: 872a mv a4,a0
- while (*p)
- 5c06: c789 beqz a5,5c10 <strncat+0x10>
- 5c08: 00174783 lbu a5,1(a4)
- p++;
- 5c0c: 0705 addi a4,a4,1
- while (*p)
- 5c0e: ffed bnez a5,5c08 <strncat+0x8>
- size_t dest_len = strlen(dst);
- size_t i;
-
- dst += dest_len;
-
- for (i = 0; i < n && src[i] != '\0'; i++)
- 5c10: 86ba mv a3,a4
- 5c12: 4781 li a5,0
- 5c14: 88ba mv a7,a4
- 5c16: ea01 bnez a2,5c26 <strncat+0x26>
- 5c18: a839 j 5c36 <strncat+0x36>
- dst[i] = src[i];
- 5c1a: 01068023 sb a6,0(a3)
- for (i = 0; i < n && src[i] != '\0'; i++)
- 5c1e: 00188693 addi a3,a7,1
- 5c22: 00f60d63 beq a2,a5,5c3c <strncat+0x3c>
- 5c26: 00f58833 add a6,a1,a5
- 5c2a: 00084803 lbu a6,0(a6)
- 5c2e: 0785 addi a5,a5,1
- dst[i] = src[i];
- 5c30: 88b6 mv a7,a3
- for (i = 0; i < n && src[i] != '\0'; i++)
- 5c32: fe0814e3 bnez a6,5c1a <strncat+0x1a>
-
- dst[i] = '\0';
- 5c36: 00088023 sb zero,0(a7)
-
- return os;
-}
- 5c3a: 8082 ret
- dst[i] = '\0';
- 5c3c: 00c708b3 add a7,a4,a2
- 5c40: 00088023 sb zero,0(a7)
-}
- 5c44: 8082 ret
-
-0000000000005c46 <strcmp>:
-
-int strcmp(const char *p, const char *q)
-{
- while (*p && *p == *q)
- 5c46: 00054783 lbu a5,0(a0)
- 5c4a: e791 bnez a5,5c56 <strcmp+0x10>
- 5c4c: a02d j 5c76 <strcmp+0x30>
- 5c4e: 00054783 lbu a5,0(a0)
- 5c52: cf89 beqz a5,5c6c <strcmp+0x26>
- 5c54: 85b6 mv a1,a3
- 5c56: 0005c703 lbu a4,0(a1)
- {
- p++;
- 5c5a: 0505 addi a0,a0,1
- q++;
- 5c5c: 00158693 addi a3,a1,1
- while (*p && *p == *q)
- 5c60: fef707e3 beq a4,a5,5c4e <strcmp+0x8>
- }
- return (int)((unsigned char)*p - (unsigned char)*q);
- 5c64: 0007851b sext.w a0,a5
-}
- 5c68: 9d19 subw a0,a0,a4
- 5c6a: 8082 ret
- return (int)((unsigned char)*p - (unsigned char)*q);
- 5c6c: 0015c703 lbu a4,1(a1)
- 5c70: 4501 li a0,0
-}
- 5c72: 9d19 subw a0,a0,a4
- 5c74: 8082 ret
- return (int)((unsigned char)*p - (unsigned char)*q);
- 5c76: 0005c703 lbu a4,0(a1)
- 5c7a: 4501 li a0,0
- 5c7c: b7f5 j 5c68 <strcmp+0x22>
-
-0000000000005c7e <strncmp>:
-
-int strncmp(const char *s1, const char *s2, size_t n)
-{
- if (n == 0)
- 5c7e: ca0d beqz a2,5cb0 <strncmp+0x32>
- return 0;
-
- while (n-- > 0 && *s1 && *s1 == *s2)
- 5c80: 00054783 lbu a5,0(a0)
- 5c84: 167d addi a2,a2,-1
- 5c86: 00c506b3 add a3,a0,a2
- 5c8a: eb89 bnez a5,5c9c <strncmp+0x1e>
- 5c8c: a80d j 5cbe <strncmp+0x40>
- {
- if (n == 0 || *s1 == '\0')
- 5c8e: 00d50d63 beq a0,a3,5ca8 <strncmp+0x2a>
- while (n-- > 0 && *s1 && *s1 == *s2)
- 5c92: 00154783 lbu a5,1(a0)
- break;
- s1++;
- 5c96: 0505 addi a0,a0,1
- while (n-- > 0 && *s1 && *s1 == *s2)
- 5c98: cf91 beqz a5,5cb4 <strncmp+0x36>
- 5c9a: 85b2 mv a1,a2
- 5c9c: 0005c703 lbu a4,0(a1)
- s2++;
- 5ca0: 00158613 addi a2,a1,1
- while (n-- > 0 && *s1 && *s1 == *s2)
- 5ca4: fef705e3 beq a4,a5,5c8e <strncmp+0x10>
- }
- return (int)((unsigned char)*s1 - (unsigned char)*s2);
- 5ca8: 0007851b sext.w a0,a5
- 5cac: 9d19 subw a0,a0,a4
- 5cae: 8082 ret
- return 0;
- 5cb0: 4501 li a0,0
-}
- 5cb2: 8082 ret
- return (int)((unsigned char)*s1 - (unsigned char)*s2);
- 5cb4: 0015c703 lbu a4,1(a1)
- 5cb8: 4501 li a0,0
- 5cba: 9d19 subw a0,a0,a4
- 5cbc: 8082 ret
- 5cbe: 0005c703 lbu a4,0(a1)
- 5cc2: 4501 li a0,0
- 5cc4: b7e5 j 5cac <strncmp+0x2e>
-
-0000000000005cc6 <strchr>:
-
-char *strchr(const char *s, int c)
-{
- while (*s != (char)c)
- 5cc6: 0ff5f593 zext.b a1,a1
- 5cca: a019 j 5cd0 <strchr+0xa>
- {
- if (!*s++)
- 5ccc: 0505 addi a0,a0,1
- 5cce: c791 beqz a5,5cda <strchr+0x14>
- while (*s != (char)c)
- 5cd0: 00054783 lbu a5,0(a0)
- 5cd4: feb79ce3 bne a5,a1,5ccc <strchr+0x6>
- 5cd8: 8082 ret
- return NULL;
- 5cda: 4501 li a0,0
- }
- return (char *)s;
-}
- 5cdc: 8082 ret
-
-0000000000005cde <strrchr>:
-
-char *strrchr(const char *s, int c)
-{
- 5cde: 87aa mv a5,a0
- const char *last = NULL;
- do
- {
- if (*s == (char)c)
- 5ce0: 0ff5f593 zext.b a1,a1
- const char *last = NULL;
- 5ce4: 4501 li a0,0
- if (*s == (char)c)
- 5ce6: 0007c703 lbu a4,0(a5)
- 5cea: 00e59363 bne a1,a4,5cf0 <strrchr+0x12>
- last = s;
- 5cee: 853e mv a0,a5
- } while (*s++);
- 5cf0: 0785 addi a5,a5,1
- 5cf2: fb75 bnez a4,5ce6 <strrchr+0x8>
-
- return (char *)last;
-}
- 5cf4: 8082 ret
-
-0000000000005cf6 <strstr>:
- while (*p)
- 5cf6: 0005c883 lbu a7,0(a1)
- 5cfa: 04088a63 beqz a7,5d4e <strstr+0x58>
- const char *p = s;
- 5cfe: 87ae mv a5,a1
- while (*p)
- 5d00: 0017c703 lbu a4,1(a5)
- p++;
- 5d04: 0785 addi a5,a5,1
- while (*p)
- 5d06: ff6d bnez a4,5d00 <strstr+0xa>
- return (size_t)(p - s);
- 5d08: 40b78833 sub a6,a5,a1
-
-
-char *strstr(const char *haystack, const char *needle)
-{
- size_t n_len = strlen(needle);
- if (n_len == 0)
- 5d0c: 04b78163 beq a5,a1,5d4e <strstr+0x58>
- return (char *)haystack;
-
- for (; *haystack; haystack++)
- 5d10: 00054783 lbu a5,0(a0)
- 5d14: cf85 beqz a5,5d4c <strstr+0x56>
- 5d16: 187d addi a6,a6,-1
- 5d18: 982a add a6,a6,a0
- {
- if (*haystack != *needle)
- 5d1a: 02f89463 bne a7,a5,5d42 <strstr+0x4c>
- while (n-- > 0 && *s1 && *s1 == *s2)
- 5d1e: 00054703 lbu a4,0(a0)
- 5d22: 8646 mv a2,a7
- 5d24: 86ae mv a3,a1
- 5d26: 87aa mv a5,a0
- 5d28: eb11 bnez a4,5d3c <strstr+0x46>
- 5d2a: a821 j 5d42 <strstr+0x4c>
- if (n == 0 || *s1 == '\0')
- 5d2c: 03078163 beq a5,a6,5d4e <strstr+0x58>
- while (n-- > 0 && *s1 && *s1 == *s2)
- 5d30: 0017c703 lbu a4,1(a5)
- return (int)((unsigned char)*s1 - (unsigned char)*s2);
- 5d34: 0006c603 lbu a2,0(a3)
- s1++;
- 5d38: 0785 addi a5,a5,1
- while (n-- > 0 && *s1 && *s1 == *s2)
- 5d3a: cb19 beqz a4,5d50 <strstr+0x5a>
- s2++;
- 5d3c: 0685 addi a3,a3,1
- while (n-- > 0 && *s1 && *s1 == *s2)
- 5d3e: fee607e3 beq a2,a4,5d2c <strstr+0x36>
- for (; *haystack; haystack++)
- 5d42: 00154783 lbu a5,1(a0)
- 5d46: 0805 addi a6,a6,1
- 5d48: 0505 addi a0,a0,1
- 5d4a: fbe1 bnez a5,5d1a <strstr+0x24>
- continue;
-
- if (strncmp(haystack, needle, n_len) == 0)
- return (char *)haystack;
- }
- return NULL;
- 5d4c: 4501 li a0,0
-}
- 5d4e: 8082 ret
- if (strncmp(haystack, needle, n_len) == 0)
- 5d50: de7d beqz a2,5d4e <strstr+0x58>
- for (; *haystack; haystack++)
- 5d52: 00154783 lbu a5,1(a0)
- 5d56: 0805 addi a6,a6,1
- 5d58: 0505 addi a0,a0,1
- 5d5a: f3e1 bnez a5,5d1a <strstr+0x24>
- 5d5c: bfc5 j 5d4c <strstr+0x56>
-
-0000000000005d5e <strdup>:
-
-char *strdup(const char *s)
-{
- 5d5e: 1101 addi sp,sp,-32
- 5d60: e426 sd s1,8(sp)
- 5d62: ec06 sd ra,24(sp)
- 5d64: e822 sd s0,16(sp)
- while (*p)
- 5d66: 00054783 lbu a5,0(a0)
-{
- 5d6a: 84aa mv s1,a0
- while (*p)
- 5d6c: cb8d beqz a5,5d9e <strdup+0x40>
- const char *p = s;
- 5d6e: 862a mv a2,a0
- while (*p)
- 5d70: 00164783 lbu a5,1(a2)
- p++;
- 5d74: 0605 addi a2,a2,1
- while (*p)
- 5d76: ffed bnez a5,5d70 <strdup+0x12>
- return (size_t)(p - s);
- 5d78: 8e05 sub a2,a2,s1
- size_t len = strlen(s) + 1;
- 5d7a: 00160413 addi s0,a2,1
- char *new_str = (char *)malloc(len);
- 5d7e: 8522 mv a0,s0
- 5d80: f4eff0ef jal 54ce <malloc>
- if (new_str == NULL)
- 5d84: c901 beqz a0,5d94 <strdup+0x36>
- return memmove(vdst, vsrc, n);
- 5d86: 8622 mv a2,s0
- return NULL;
-
- return (char *)memcpy(new_str, s, len);
-}
- 5d88: 6442 ld s0,16(sp)
- 5d8a: 60e2 ld ra,24(sp)
- return memmove(vdst, vsrc, n);
- 5d8c: 85a6 mv a1,s1
-}
- 5d8e: 64a2 ld s1,8(sp)
- 5d90: 6105 addi sp,sp,32
- return memmove(vdst, vsrc, n);
- 5d92: bbb9 j 5af0 <memmove>
-}
- 5d94: 60e2 ld ra,24(sp)
- 5d96: 6442 ld s0,16(sp)
- 5d98: 64a2 ld s1,8(sp)
- 5d9a: 6105 addi sp,sp,32
- 5d9c: 8082 ret
- while (*p)
- 5d9e: 4405 li s0,1
- 5da0: bff9 j 5d7e <strdup+0x20>
-
-0000000000005da2 <strlcpy>:
- 5da2: 0005c783 lbu a5,0(a1)
-
-size_t strlcpy(char *dst, const char *src, size_t size)
-{
- 5da6: 1101 addi sp,sp,-32
- 5da8: ec06 sd ra,24(sp)
- 5daa: e822 sd s0,16(sp)
- 5dac: 86b2 mv a3,a2
- while (*p)
- 5dae: cf8d beqz a5,5de8 <strlcpy+0x46>
- const char *p = s;
- 5db0: 87ae mv a5,a1
- while (*p)
- 5db2: 0017c703 lbu a4,1(a5)
- p++;
- 5db6: 0785 addi a5,a5,1
- while (*p)
- 5db8: ff6d bnez a4,5db2 <strlcpy+0x10>
- return (size_t)(p - s);
- 5dba: 40b78433 sub s0,a5,a1
- size_t src_len = strlen(src);
-
- if (size > 0)
- 5dbe: c285 beqz a3,5dde <strlcpy+0x3c>
- 5dc0: e426 sd s1,8(sp)
- {
- size_t copy_len = (src_len >= size) ? size - 1 : src_len;
- 5dc2: fff68613 addi a2,a3,-1
- memcpy(dst, src, copy_len);
- dst[copy_len] = '\0';
- 5dc6: 00c504b3 add s1,a0,a2
- size_t copy_len = (src_len >= size) ? size - 1 : src_len;
- 5dca: 00d47563 bgeu s0,a3,5dd4 <strlcpy+0x32>
- dst[copy_len] = '\0';
- 5dce: 008504b3 add s1,a0,s0
- size_t copy_len = (src_len >= size) ? size - 1 : src_len;
- 5dd2: 8622 mv a2,s0
- return memmove(vdst, vsrc, n);
- 5dd4: d1dff0ef jal 5af0 <memmove>
- dst[copy_len] = '\0';
- 5dd8: 00048023 sb zero,0(s1)
- }
-
- return src_len;
- 5ddc: 64a2 ld s1,8(sp)
-}
- 5dde: 60e2 ld ra,24(sp)
- 5de0: 8522 mv a0,s0
- 5de2: 6442 ld s0,16(sp)
- 5de4: 6105 addi sp,sp,32
- 5de6: 8082 ret
- if (size > 0)
- 5de8: e219 bnez a2,5dee <strlcpy+0x4c>
- return (size_t)(p - s);
- 5dea: 4401 li s0,0
- 5dec: bfcd j 5dde <strlcpy+0x3c>
- 5dee: e426 sd s1,8(sp)
- 5df0: 4401 li s0,0
- if (size > 0)
- 5df2: 84aa mv s1,a0
- size_t copy_len = (src_len >= size) ? size - 1 : src_len;
- 5df4: 4601 li a2,0
- 5df6: bff9 j 5dd4 <strlcpy+0x32>
-
-0000000000005df8 <strlcat>:
- while (*p)
- 5df8: 0005c783 lbu a5,0(a1)
-
-size_t strlcat(char *dst, const char *src, size_t size)
-{
- 5dfc: 7179 addi sp,sp,-48
- 5dfe: e84a sd s2,16(sp)
- 5e00: f406 sd ra,40(sp)
- 5e02: f022 sd s0,32(sp)
- 5e04: ec26 sd s1,24(sp)
- 5e06: 892a mv s2,a0
- while (*p)
- 5e08: c7b5 beqz a5,5e74 <strlcat+0x7c>
- const char *p = s;
- 5e0a: 87ae mv a5,a1
- while (*p)
- 5e0c: 0017c703 lbu a4,1(a5)
- p++;
- 5e10: 0785 addi a5,a5,1
- while (*p)
- 5e12: ff6d bnez a4,5e0c <strlcat+0x14>
- return (size_t)(p - s);
- 5e14: 40b784b3 sub s1,a5,a1
- size_t dst_len = 0;
- 5e18: 4401 li s0,0
- size_t src_len = strlen(src);
-
- while (dst_len < size && dst[dst_len] != '\0')
- 5e1a: e609 bnez a2,5e24 <strlcat+0x2c>
- 5e1c: a0a1 j 5e64 <strlcat+0x6c>
- dst_len++;
- 5e1e: 0405 addi s0,s0,1
- while (dst_len < size && dst[dst_len] != '\0')
- 5e20: 04860263 beq a2,s0,5e64 <strlcat+0x6c>
- 5e24: 00890533 add a0,s2,s0
- 5e28: 00054783 lbu a5,0(a0)
- 5e2c: fbed bnez a5,5e1e <strlcat+0x26>
-
- if (dst_len == size)
- 5e2e: 02860b63 beq a2,s0,5e64 <strlcat+0x6c>
- 5e32: e44e sd s3,8(sp)
- return size + src_len;
-
- size_t space_left = size - dst_len;
- 5e34: 408607b3 sub a5,a2,s0
- size_t copy_len = (src_len >= space_left) ? space_left - 1 : src_len;
- 5e38: 89a6 mv s3,s1
- 5e3a: 02f4f263 bgeu s1,a5,5e5e <strlcat+0x66>
-
- memcpy(dst + dst_len, src, copy_len);
- dst[dst_len + copy_len] = '\0';
- 5e3e: 994e add s2,s2,s3
- 5e40: 9922 add s2,s2,s0
- return memmove(vdst, vsrc, n);
- 5e42: 864e mv a2,s3
- 5e44: cadff0ef jal 5af0 <memmove>
- dst[dst_len + copy_len] = '\0';
- 5e48: 00090023 sb zero,0(s2) # 1000 <main+0x19e>
-
- return dst_len + src_len;
- 5e4c: 00940533 add a0,s0,s1
-}
- 5e50: 70a2 ld ra,40(sp)
- 5e52: 7402 ld s0,32(sp)
- return dst_len + src_len;
- 5e54: 69a2 ld s3,8(sp)
-}
- 5e56: 64e2 ld s1,24(sp)
- 5e58: 6942 ld s2,16(sp)
- 5e5a: 6145 addi sp,sp,48
- 5e5c: 8082 ret
- size_t copy_len = (src_len >= space_left) ? space_left - 1 : src_len;
- 5e5e: fff78993 addi s3,a5,-1
- 5e62: bff1 j 5e3e <strlcat+0x46>
-}
- 5e64: 70a2 ld ra,40(sp)
- 5e66: 7402 ld s0,32(sp)
- 5e68: 6942 ld s2,16(sp)
- return size + src_len;
- 5e6a: 00960533 add a0,a2,s1
-}
- 5e6e: 64e2 ld s1,24(sp)
- 5e70: 6145 addi sp,sp,48
- 5e72: 8082 ret
- while (*p)
- 5e74: 4481 li s1,0
- 5e76: b74d j 5e18 <strlcat+0x20>
-
-0000000000005e78 <strspn>:
-size_t strspn(const char *s, const char *accept)
-{
- const char *p = s;
- const char *a;
-
- while (*p)
- 5e78: 00054683 lbu a3,0(a0)
- 5e7c: c695 beqz a3,5ea8 <strspn+0x30>
- {
- for (a = accept; *a; a++)
- 5e7e: 0005c803 lbu a6,0(a1)
- 5e82: 862a mv a2,a0
- 5e84: 00080f63 beqz a6,5ea2 <strspn+0x2a>
- 5e88: 87ae mv a5,a1
- 5e8a: 8742 mv a4,a6
- 5e8c: a021 j 5e94 <strspn+0x1c>
- 5e8e: 0007c703 lbu a4,0(a5)
- 5e92: cb01 beqz a4,5ea2 <strspn+0x2a>
- 5e94: 0785 addi a5,a5,1
- {
- if (*p == *a)
- 5e96: fee69ce3 bne a3,a4,5e8e <strspn+0x16>
- while (*p)
- 5e9a: 00164683 lbu a3,1(a2)
- break;
- }
- if (*a == '\0')
- return (size_t)(p - s);
- p++;
- 5e9e: 0605 addi a2,a2,1
- while (*p)
- 5ea0: f6e5 bnez a3,5e88 <strspn+0x10>
- }
- return (size_t)(p - s);
- 5ea2: 40a60533 sub a0,a2,a0
- 5ea6: 8082 ret
- while (*p)
- 5ea8: 4501 li a0,0
-}
- 5eaa: 8082 ret
-
-0000000000005eac <strcspn>:
-size_t strcspn(const char *s, const char *reject)
-{
- const char *p = s;
- const char *r;
-
- while (*p)
- 5eac: 00054683 lbu a3,0(a0)
- 5eb0: ce85 beqz a3,5ee8 <strcspn+0x3c>
- {
- for (r = reject; *r; r++)
- 5eb2: 0005c803 lbu a6,0(a1)
- const char *p = s;
- 5eb6: 862a mv a2,a0
- for (r = reject; *r; r++)
- 5eb8: 02080363 beqz a6,5ede <strcspn+0x32>
- 5ebc: 87ae mv a5,a1
- 5ebe: 8742 mv a4,a6
- 5ec0: a021 j 5ec8 <strcspn+0x1c>
- 5ec2: 0007c703 lbu a4,0(a5)
- 5ec6: c719 beqz a4,5ed4 <strcspn+0x28>
- 5ec8: 0785 addi a5,a5,1
- {
- if (*p == *r)
- 5eca: fed71ce3 bne a4,a3,5ec2 <strcspn+0x16>
- return (size_t)(p - s);
- }
- p++;
- }
- return (size_t)(p - s);
- 5ece: 40a60533 sub a0,a2,a0
- 5ed2: 8082 ret
- while (*p)
- 5ed4: 00164683 lbu a3,1(a2)
- p++;
- 5ed8: 0605 addi a2,a2,1
- while (*p)
- 5eda: f2ed bnez a3,5ebc <strcspn+0x10>
- 5edc: bfcd j 5ece <strcspn+0x22>
- 5ede: 00164683 lbu a3,1(a2)
- p++;
- 5ee2: 0605 addi a2,a2,1
- while (*p)
- 5ee4: feed bnez a3,5ede <strcspn+0x32>
- 5ee6: b7e5 j 5ece <strcspn+0x22>
- 5ee8: 4501 li a0,0
-}
- 5eea: 8082 ret
-
-0000000000005eec <strpbrk>:
-
-char *strpbrk(const char *s, const char *accept)
-{
- const char *a;
- while (*s)
- 5eec: 00054683 lbu a3,0(a0)
- 5ef0: c295 beqz a3,5f14 <strpbrk+0x28>
- {
- for (a = accept; *a; a++)
- 5ef2: 0005c603 lbu a2,0(a1)
- 5ef6: c20d beqz a2,5f18 <strpbrk+0x2c>
- 5ef8: 87ae mv a5,a1
- 5efa: 8732 mv a4,a2
- 5efc: a021 j 5f04 <strpbrk+0x18>
- 5efe: 0007c703 lbu a4,0(a5)
- 5f02: c709 beqz a4,5f0c <strpbrk+0x20>
- 5f04: 0785 addi a5,a5,1
- {
- if (*s == *a)
- 5f06: fed71ce3 bne a4,a3,5efe <strpbrk+0x12>
- return (char *)s;
- }
- s++;
- }
- return NULL;
-}
- 5f0a: 8082 ret
- while (*s)
- 5f0c: 00154683 lbu a3,1(a0)
- s++;
- 5f10: 0505 addi a0,a0,1
- while (*s)
- 5f12: f2fd bnez a3,5ef8 <strpbrk+0xc>
- return NULL;
- 5f14: 4501 li a0,0
-}
- 5f16: 8082 ret
- while (*s)
- 5f18: 00154683 lbu a3,1(a0)
- s++;
- 5f1c: 0505 addi a0,a0,1
- while (*s)
- 5f1e: feed bnez a3,5f18 <strpbrk+0x2c>
- 5f20: bfd5 j 5f14 <strpbrk+0x28>
-
-0000000000005f22 <strtok>:
-char *strtok(char *str, const char *delim)
-{
- static char *olds;
- char *token;
-
- if (str == NULL)
- 5f22: 00003897 auipc a7,0x3
- 5f26: f3688893 addi a7,a7,-202 # 8e58 <olds.0>
- 5f2a: cd25 beqz a0,5fa2 <strtok+0x80>
- while (*p)
- 5f2c: 00054683 lbu a3,0(a0)
- 5f30: c295 beqz a3,5f54 <strtok+0x32>
- for (a = accept; *a; a++)
- 5f32: 0005c803 lbu a6,0(a1)
- 5f36: 02080463 beqz a6,5f5e <strtok+0x3c>
- 5f3a: 87ae mv a5,a1
- 5f3c: 8742 mv a4,a6
- 5f3e: a021 j 5f46 <strtok+0x24>
- 5f40: 0007c703 lbu a4,0(a5)
- 5f44: cf09 beqz a4,5f5e <strtok+0x3c>
- 5f46: 0785 addi a5,a5,1
- if (*p == *a)
- 5f48: fee69ce3 bne a3,a4,5f40 <strtok+0x1e>
- while (*p)
- 5f4c: 00154683 lbu a3,1(a0)
- p++;
- 5f50: 0505 addi a0,a0,1
- while (*p)
- 5f52: f6e5 bnez a3,5f3a <strtok+0x18>
- 5f54: 87aa mv a5,a0
- str = olds;
-
- str += strspn(str, delim);
- if (*str == '\0')
- {
- olds = str;
- 5f56: 00f8b023 sd a5,0(a7)
- return NULL;
- 5f5a: 4501 li a0,0
- *str = '\0';
- olds = str + 1;
- }
-
- return token;
-}
- 5f5c: 8082 ret
- if (*str == '\0')
- 5f5e: 00054603 lbu a2,0(a0)
- 5f62: da6d beqz a2,5f54 <strtok+0x32>
- 5f64: 86aa mv a3,a0
- for (a = accept; *a; a++)
- 5f66: 04080163 beqz a6,5fa8 <strtok+0x86>
- 5f6a: 8742 mv a4,a6
- 5f6c: 87ae mv a5,a1
- 5f6e: a021 j 5f76 <strtok+0x54>
- 5f70: 0007c703 lbu a4,0(a5)
- 5f74: cb19 beqz a4,5f8a <strtok+0x68>
- 5f76: 0785 addi a5,a5,1
- if (*s == *a)
- 5f78: fee61ce3 bne a2,a4,5f70 <strtok+0x4e>
- olds = str + 1;
- 5f7c: 00168793 addi a5,a3,1
- *str = '\0';
- 5f80: 00068023 sb zero,0(a3)
- olds = str;
- 5f84: 00f8b023 sd a5,0(a7)
-}
- 5f88: 8082 ret
- while (*s)
- 5f8a: 0016c603 lbu a2,1(a3)
- s++;
- 5f8e: 0685 addi a3,a3,1
- while (*s)
- 5f90: fe69 bnez a2,5f6a <strtok+0x48>
- 5f92: 87aa mv a5,a0
- while (*s != (char)c)
- 5f94: 0017c703 lbu a4,1(a5)
- if (!*s++)
- 5f98: 0785 addi a5,a5,1
- while (*s != (char)c)
- 5f9a: ff6d bnez a4,5f94 <strtok+0x72>
- olds = str;
- 5f9c: 00f8b023 sd a5,0(a7)
-}
- 5fa0: 8082 ret
- str = olds;
- 5fa2: 0008b503 ld a0,0(a7)
- 5fa6: b759 j 5f2c <strtok+0xa>
- while (*s)
- 5fa8: 0016c603 lbu a2,1(a3)
- s++;
- 5fac: 0685 addi a3,a3,1
- while (*s)
- 5fae: fe6d bnez a2,5fa8 <strtok+0x86>
- 5fb0: b7cd j 5f92 <strtok+0x70>
-
-0000000000005fb2 <strerror>:
-
-char *strerror(int errnum)
-{
- 5fb2: 87aa mv a5,a0
-
- switch (errnum)
- 5fb4: cd09 beqz a0,5fce <strerror+0x1c>
- 5fb6: 4731 li a4,12
- 5fb8: 00000517 auipc a0,0x0
- 5fbc: 2c050513 addi a0,a0,704 # 6278 <_GLOBAL__sub_I__ZSt3cin+0x288>
- 5fc0: 00e78b63 beq a5,a4,5fd6 <strerror+0x24>
- return "Success";
- // case EINVAL: return "Invalid argument";
- case ENOMEM: return "Out of memory";
-
- default:
- return "Unknown error";
- 5fc4: 00000517 auipc a0,0x0
- 5fc8: 2c450513 addi a0,a0,708 # 6288 <_GLOBAL__sub_I__ZSt3cin+0x298>
- 5fcc: 8082 ret
- return "Success";
- 5fce: 00000517 auipc a0,0x0
- 5fd2: 2a250513 addi a0,a0,674 # 6270 <_GLOBAL__sub_I__ZSt3cin+0x280>
- }
- 5fd6: 8082 ret
-
-0000000000005fd8 <_Znwm>:
-#include "ulib/stdlib.h"
-
-void *operator new(unsigned long n)
-{
- return malloc(n);
- 5fd8: cf6ff06f j 54ce <malloc>
-
-0000000000005fdc <_Znam>:
-}
-
-void *operator new[](unsigned long n)
- 5fdc: cf2ff06f j 54ce <malloc>
-
-0000000000005fe0 <_ZdlPv>:
- return malloc(n);
-}
-
-void operator delete(void *p)
-{
- free(p);
- 5fe0: c78ff06f j 5458 <free>
-
-0000000000005fe4 <_ZdaPv>:
-}
-
-void operator delete[](void *p)
- 5fe4: c74ff06f j 5458 <free>
-
-0000000000005fe8 <_ZdlPvm>:
- free(p);
-}
-
-void operator delete(void *p, unsigned long)
-{
- free(p);
- 5fe8: c70ff06f j 5458 <free>
-
-0000000000005fec <_ZdaPvm>:
-}
-
-void operator delete[](void *p, unsigned long)
- 5fec: c6cff06f j 5458 <free>
-
-0000000000005ff0 <_GLOBAL__sub_I__ZSt3cin>:
-#include "ulib/iostream"
-
-namespace std
-{
- istream cin(stdin);
- 5ff0: 00003797 auipc a5,0x3
- 5ff4: cb87b783 ld a5,-840(a5) # 8ca8 <_GLOBAL_OFFSET_TABLE_+0x10>
- 5ff8: 6390 ld a2,0(a5)
- ostream cout(stdout);
- 5ffa: 00003797 auipc a5,0x3
- 5ffe: ca67b783 ld a5,-858(a5) # 8ca0 <_GLOBAL_OFFSET_TABLE_+0x8>
- 6002: 6394 ld a3,0(a5)
- ostream cerr(stderr);
- 6004: 00003797 auipc a5,0x3
- 6008: cac7b783 ld a5,-852(a5) # 8cb0 <_GLOBAL_OFFSET_TABLE_+0x18>
- 600c: 6398 ld a4,0(a5)
-
- class istream{
- private:
- FILE* _stream;
- public:
- istream(FILE *f) : _stream(f) {}
- 600e: 00003797 auipc a5,0x3
- 6012: e5278793 addi a5,a5,-430 # 8e60 <_ZSt3cin>
- 6016: e390 sd a2,0(a5)
- ostream(FILE* f) : _stream(f) {}
- 6018: e794 sd a3,8(a5)
- 601a: eb98 sd a4,16(a5)
-} // namespace std
- 601c: 8082 ret
diff --git a/build/user/sh.o b/build/user/sh.o
deleted file mode 100644
index edfee62..0000000
--- a/build/user/sh.o
+++ /dev/null
Binary files differ
diff --git a/build/user/sh.sym b/build/user/sh.sym
deleted file mode 100644
index f7cf8bd..0000000
--- a/build/user/sh.sym
+++ /dev/null
@@ -1,223 +0,0 @@
-0000000000000000 .text
-0000000000006020 .rodata
-00000000000069a0 .eh_frame
-0000000000007e38 .data
-0000000000008c98 .got
-0000000000008cb8 .got.plt
-0000000000008cc8 .init_array
-0000000000008cd0 .bss
-0000000000000000 .debug_info
-0000000000000000 .debug_abbrev
-0000000000000000 .debug_loclists
-0000000000000000 .debug_aranges
-0000000000000000 .debug_rnglists
-0000000000000000 .debug_line
-0000000000000000 .debug_str
-0000000000000000 .debug_line_str
-0000000000000000 .comment
-0000000000000000 .riscv.attributes
-0000000000000000 sh.cc
-0000000000008cd0 _ZZ4mainE3buf
-0000000000000000 entry.o
-0000000000000000 usys.o
-0000000000000000 stdio.c
-0000000000001190 stbsp__clamp_callback
-00000000000011de stbsp__count_clamp_callback
-00000000000011ea stbsp__real_to_str
-00000000000018be _in_char.part.0
-0000000000001904 _skip_space
-0000000000001978 _vscanf_core.constprop.0
-00000000000021e8 _out_char
-000000000000405c _vprintf_core.constprop.0.isra.0
-0000000000007f18 stbsp__digitpair
-0000000000007fe4 stbsp__period
-0000000000007fe5 stbsp__comma
-0000000000007fe8 hexu.1
-0000000000008000 hex.0
-0000000000008018 _stderr
-0000000000008438 _stdout
-0000000000008858 _stdin
-0000000000006508 stbsp__bot
-00000000000065c0 stbsp__negbot
-0000000000006670 stbsp__negboterr
-0000000000006720 stbsp__negtop
-0000000000006788 stbsp__negtoperr
-00000000000067f0 stbsp__top
-0000000000006858 stbsp__toperr
-00000000000068c0 stbsp__powten
-0000000000000000 stdlib.c
-000000000000526a strtoull.part.0
-0000000000008c90 next
-0000000000008d3c __atexit_func_count
-0000000000008d40 __atexit_funcs
-0000000000008e40 freep
-0000000000008e48 base
-0000000000000000 string.c
-0000000000008e58 olds.0
-0000000000000000 cxx.cc
-0000000000000000 iostream.cpp
-0000000000005ff0 _GLOBAL__sub_I__ZSt3cin
-0000000000008c98 _GLOBAL_OFFSET_TABLE_
-0000000000000324 _ZN11PipeCommand3runEv
-0000000000005b8a strcpy
-00000000000048fa printf
-0000000000008c78 stdout
-0000000000006964 STDOUT_FD
-0000000000005240 ungetc
-0000000000005fb2 strerror
-0000000000005af0 memmove
-00000000000048a4 snprintf
-0000000000001118 mknod
-0000000000005742 atol
-0000000000005450 getenv
-0000000000005fd8 _Znwm
-0000000000000222 _ZN11PipeCommandD0Ev
-0000000000008d38 errno
-00000000000059a2 labs
-000000000000591c bsearch
-0000000000001150 getpid
-000000000000583e qsort
-0000000000004b38 fscanf
-0000000000004daa fgets
-0000000000008e70 _ZSt4cerr
-0000000000005b2c memcpy
-000000000000018c _ZN11ExecCommand3runEv
-0000000000000256 _ZN11ListCommandD0Ev
-0000000000005454 system
-0000000000005220 feof
-00000000000054ce malloc
-0000000000001160 sleep
-000000000000005c _Z6getcmdPci
-000000000000485a vsnprintf
-000000000000565e strtoll
-0000000000005708 strtoul
-0000000000005a54 wctomb
-0000000000000754 _ZN6Parser10parse_pipeEPPcS0_
-0000000000005aa0 wcstombs
-00000000000001c4 _ZN11ExecCommandD0Ev
-0000000000004ac2 fflush
-0000000000005a62 mbstowcs
-0000000000001180 lseek
-0000000000005fe0 _ZdlPv
-0000000000005444 abort
-000000000000572c strtol
-00000000000010e0 pipe
-0000000000007f10 SYMBOLS
-0000000000005a22 mblen
-0000000000005cde strrchr
-0000000000007e90 _ZTV11PipeCommand
-0000000000005594 calloc
-000000000000574e strtod
-0000000000001178 disk_test
-00000000000010f0 write
-0000000000005828 atof
-0000000000001128 fstat
-0000000000004b06 fprintf
-0000000000001100 kill
-00000000000000c0 _ZN11PipeCommandD2Ev
-0000000000005bce strcat
-0000000000000142 _ZN12RedirCommand3runEv
-0000000000000b84 _ZN6Parser10parse_lineEPPcS0_
-0000000000001140 chdir
-0000000000005128 fseek
-0000000000003ff8 stbsp_vsprintf
-0000000000001108 exec
-0000000000005b52 memchr
-0000000000008c80 stdin
-00000000000010d8 wait
-0000000000003f12 stbsp_vsnprintf
-00000000000010be _start
-000000000000522a ferror
-0000000000005cf6 strstr
-00000000000059ec rand
-00000000000010e8 read
-0000000000005da2 strlcpy
-00000000000001cc _ZN12RedirCommandD0Ev
-0000000000005c7e strncmp
-00000000000022bc stbsp_set_separators
-0000000000005fe8 _ZdlPvm
-0000000000005b9c strncpy
-0000000000001120 unlink
-00000000000055dc realloc
-0000000000000128 _ZN11BackCommandD1Ev
-0000000000005f22 strtok
-0000000000005b2e memcmp
-00000000000010d0 fork
-0000000000004934 sscanf
-0000000000005c00 strncat
-0000000000004e86 fread
-0000000000001158 sbrk
-00000000000000f4 _ZN11ListCommandD1Ev
-0000000000005d5e strdup
-0000000000007e40 _ZTV11ExecCommand
-0000000000001168 uptime
-000000000000563a strtoull
-0000000000003ee8 stbsp_sprintf
-0000000000004996 fopen
-0000000000005ad8 memset
-0000000000000e62 main
-000000000000519c ftell
-0000000000005a14 srand
-0000000000005df8 strlcat
-0000000000005234 clearerr
-0000000000005fe4 _ZdaPv
-0000000000004a5a fclose
-00000000000000a8 _ZN12RedirCommandD2Ev
-000000000000001c _Z13fork_or_panicv
-0000000000001170 putc
-0000000000005c46 strcmp
-0000000000001188 shutdown
-0000000000001148 dup
-0000000000000128 _ZN11BackCommandD2Ev
-00000000000001f8 _ZN11BackCommandD0Ev
-0000000000004d14 fgetc
-0000000000004006 sprintf
-000000000000582c strtof
-00000000000053ea atexit
-0000000000005eac strcspn
-00000000000000c0 _ZN11PipeCommandD1Ev
-0000000000003fd8 stbsp_snprintf
-00000000000000f4 _ZN11ListCommandD2Ev
-0000000000008e60 _ZSt3cin
-0000000000004964 scanf
-0000000000008c88 stderr
-00000000000002d8 _ZN11ListCommand3runEv
-0000000000000140 _ZN11ExecCommandD1Ev
-00000000000059cc ldiv
-0000000000007e68 _ZTV12RedirCommand
-0000000000004b6a fputc
-0000000000005fdc _Znam
-00000000000059dc lldiv
-0000000000004fa0 fwrite
-0000000000000140 _ZN11ExecCommandD2Ev
-00000000000051c8 rewind
-0000000000007f08 WHITESPACE
-000000000000041a _ZN6Parser12parse_redirsEP7CommandPPcS2_
-0000000000007eb8 _ZTV11ListCommand
-0000000000008e68 _ZSt4cout
-0000000000001130 link
-000000000000540e exit
-00000000000010c8 sys_exit
-00000000000059ac llabs
-0000000000000000 _Z5panicPKc
-000000000000572e atoi
-0000000000006960 STDERR_FD
-0000000000007ee0 _ZTV11BackCommand
-0000000000005e78 strspn
-000000000000028a _ZN11BackCommand3runEv
-0000000000005b70 strlen
-00000000000022ce stbsp_vsprintfcb
-0000000000001110 open
-0000000000006968 STDIN_FD
-0000000000005748 atoll
-00000000000059b6 div
-0000000000005998 abs
-0000000000005cc6 strchr
-0000000000004c2e fputs
-0000000000005fec _ZdaPvm
-0000000000001138 mkdir
-00000000000000a8 _ZN12RedirCommandD1Ev
-00000000000010f8 close
-0000000000005a36 mbtowc
-0000000000005eec strpbrk
-0000000000005458 free
diff --git a/build/user/usys.o b/build/user/usys.o
deleted file mode 100644
index 42b9e3a..0000000
--- a/build/user/usys.o
+++ /dev/null
Binary files differ