assemblyscript/tests/compiler/number.optimized.wat

1778 lines
35 KiB
Plaintext

(module
(type $FUNCSIG$ii (func (param i32) (result i32)))
(type $FUNCSIG$viii (func (param i32 i32 i32)))
(type $FUNCSIG$iii (func (param i32 i32) (result i32)))
(type $FUNCSIG$viiii (func (param i32 i32 i32 i32)))
(type $FUNCSIG$iiii (func (param i32 i32 i32) (result i32)))
(type $FUNCSIG$vi (func (param i32)))
(type $FUNCSIG$v (func))
(type $FUNCSIG$iijijij (func (param i32 i64 i32 i64 i32 i64) (result i32)))
(import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32)))
(memory $0 1)
(data (i32.const 8) "\10\00\00\00\02")
(data (i32.const 24) "0")
(data (i32.const 32) "\0f\00\00\00\90\01")
(data (i32.const 48) "0\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009")
(data (i32.const 448) "\11\00\00\00\10")
(data (i32.const 464) "0\00\00\000\00\00\00\90\01\00\00d")
(data (i32.const 480) "\10\00\00\00(")
(data (i32.const 496) "~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00r\00u\00n\00t\00i\00m\00e\00.\00t\00s")
(data (i32.const 536) "\10\00\00\00\02")
(data (i32.const 552) "1")
(data (i32.const 560) "\10\00\00\00\12")
(data (i32.const 576) "n\00u\00m\00b\00e\00r\00.\00t\00s")
(data (i32.const 600) "\10\00\00\00\06")
(data (i32.const 616) "0\00.\000")
(data (i32.const 624) "\10\00\00\00\06")
(data (i32.const 640) "N\00a\00N")
(data (i32.const 648) "\10\00\00\00\12")
(data (i32.const 664) "-\00I\00n\00f\00i\00n\00i\00t\00y")
(data (i32.const 688) "\10\00\00\00\10")
(data (i32.const 704) "I\00n\00f\00i\00n\00i\00t\00y")
(data (i32.const 720) "\0f\00\00\00\b8\02")
(data (i32.const 736) "\88\02\1c\08\a0\d5\8f\fav\bf>\a2\7f\e1\ae\bav\acU0 \fb\16\8b\ea5\ce]J\89B\cf-;eU\aa\b0k\9a\dfE\1a=\03\cf\1a\e6\ca\c6\9a\c7\17\fep\abO\dc\bc\be\fc\b1w\ff\0c\d6kA\ef\91V\be<\fc\7f\90\ad\1f\d0\8d\83\9aU1(\\Q\d3\b5\c9\a6\ad\8f\acq\9d\cb\8b\ee#w\"\9c\eamSx@\91I\cc\aeW\ce\b6]y\12<\827V\fbM6\94\10\c2O\98H8o\ea\96\90\c7:\82%\cb\85t\d7\f4\97\bf\97\cd\cf\86\a0\e5\ac*\17\98\n4\ef\8e\b25*\fbg8\b2;?\c6\d2\df\d4\c8\84\ba\cd\d3\1a\'D\dd\c5\96\c9%\bb\ce\9fk\93\84\a5b}$l\ac\db\f6\da_\0dXf\ab\a3&\f1\c3\de\93\f8\e2\f3\b8\80\ff\aa\a8\ad\b5\b5\8bJ|l\05_b\87S0\c14`\ff\bc\c9U&\ba\91\8c\85N\96\bd~)p$w\f9\df\8f\b8\e5\b8\9f\bd\df\a6\94}t\88\cf_\a9\f8\cf\9b\a8\8f\93pD\b9k\15\0f\bf\f8\f0\08\8a\b611eU%\b0\cd\ac\7f{\d0\c6\e2?\99\06;+*\c4\10\\\e4\d3\92si\99$$\aa\0e\ca\00\83\f2\b5\87\fd\eb\1a\11\92d\08\e5\bc\cc\88Po\t\cc\bc\8c,e\19\e2X\17\b7\d1\00\00\00\00\00\00@\9c\00\00\00\00\10\a5\d4\e8\00\00b\ac\c5\ebx\ad\84\t\94\f8x9?\81\b3\15\07\c9{\ce\97\c0p\\\ea{\ce2~\8fh\80\e9\ab\a48\d2\d5E\"\9a\17&\'O\9f\'\fb\c4\d41\a2c\ed\a8\ad\c8\8c8e\de\b0\dbe\ab\1a\8e\08\c7\83\9a\1dqB\f9\1d]\c4X\e7\1b\a6,iM\92\ea\8dp\1ad\ee\01\daJw\ef\9a\99\a3m\a2\85k}\b4{x\t\f2w\18\ddy\a1\e4T\b4\c2\c5\9b[\92\86[\86=]\96\c8\c5S5\c8\b3\a0\97\fa\\\b4*\95\e3_\a0\99\bd\9fF\de%\8c9\db4\c2\9b\a5\\\9f\98\a3r\9a\c6\f6\ce\be\e9TS\bf\dc\b7\e2A\"\f2\17\f3\fc\88\a5x\\\d3\9b\ce \cc\dfS!{\f3Z\16\98:0\1f\97\dc\b5\a0\e2\96\b3\e3\\S\d1\d9\a8<D\a7\a4\d9|\9b\fb\10D\a4\a7LLv\bb\1a\9c@\b6\ef\8e\ab\8b,\84W\a6\10\ef\1f\d0)1\91\e9\e5\a4\10\9b\9d\0c\9c\a1\fb\9b\10\e7)\f4;b\d9 (\ac\85\cf\a7z^KD\80-\dd\ac\03@\e4!\bf\8f\ffD^/\9cg\8eA\b8\8c\9c\9d\173\d4\a9\1b\e3\b4\92\db\19\9e\d9w\df\ban\bf\96\ebk\ee\f0\9b;\02\87\af")
(data (i32.const 1432) "\12\00\00\00\10")
(data (i32.const 1448) "\e0\02\00\00\e0\02\00\00\b8\02\00\00W")
(data (i32.const 1464) "\0f\00\00\00\ae")
(data (i32.const 1480) "<\fbW\fbr\fb\8c\fb\a7\fb\c1\fb\dc\fb\f6\fb\11\fc,\fcF\fca\fc{\fc\96\fc\b1\fc\cb\fc\e6\fc\00\fd\1b\fd5\fdP\fdk\fd\85\fd\a0\fd\ba\fd\d5\fd\ef\fd\n\fe%\fe?\feZ\fet\fe\8f\fe\a9\fe\c4\fe\df\fe\f9\fe\14\ff.\ffI\ffc\ff~\ff\99\ff\b3\ff\ce\ff\e8\ff\03\00\1e\008\00S\00m\00\88\00\a2\00\bd\00\d8\00\f2\00\0d\01\'\01B\01\\\01w\01\92\01\ac\01\c7\01\e1\01\fc\01\16\021\02L\02f\02\81\02\9b\02\b6\02\d0\02\eb\02\06\03 \03;\03U\03p\03\8b\03\a5\03\c0\03\da\03\f5\03\0f\04*\04")
(data (i32.const 1656) "\13\00\00\00\10")
(data (i32.const 1672) "\c8\05\00\00\c8\05\00\00\ae\00\00\00W")
(data (i32.const 1688) "\0f\00\00\00(")
(data (i32.const 1704) "\01\00\00\00\n\00\00\00d\00\00\00\e8\03\00\00\10\'\00\00\a0\86\01\00@B\0f\00\80\96\98\00\00\e1\f5\05\00\ca\9a;")
(data (i32.const 1744) "\11\00\00\00\10")
(data (i32.const 1760) "\a8\06\00\00\a8\06\00\00(\00\00\00\n")
(data (i32.const 1776) "\10\00\00\00\1c")
(data (i32.const 1792) "~\00l\00i\00b\00/\00s\00t\00r\00i\00n\00g\00.\00t\00s")
(data (i32.const 1824) "\10")
(data (i32.const 1840) "\10\00\00\00\06")
(data (i32.const 1856) "2\00.\000")
(data (i32.const 1864) "\10\00\00\00\02")
(data (i32.const 1880) "3")
(data (i32.const 1888) "\10\00\00\00\04")
(data (i32.const 1904) "-\005")
(data (i32.const 1912) "\10\00\00\00\02")
(data (i32.const 1928) "4")
(data (i32.const 1936) "\10\00\00\00\02")
(data (i32.const 1952) "2")
(data (i32.const 1960) "\10\00\00\00\08")
(data (i32.const 1976) "t\00r\00u\00e")
(data (i32.const 1984) "\10\00\00\00\n")
(data (i32.const 2000) "f\00a\00l\00s\00e")
(global $number/a (mut i32) (i32.const 1))
(global $~lib/allocator/arena/startOffset (mut i32) (i32.const 0))
(global $~lib/allocator/arena/offset (mut i32) (i32.const 0))
(global $~lib/util/number/_frc_plus (mut i64) (i64.const 0))
(global $~lib/util/number/_frc_minus (mut i64) (i64.const 0))
(global $~lib/util/number/_exp (mut i32) (i32.const 0))
(global $~lib/util/number/_K (mut i32) (i32.const 0))
(global $~lib/util/number/_frc_pow (mut i64) (i64.const 0))
(global $~lib/util/number/_exp_pow (mut i32) (i32.const 0))
(export "memory" (memory $0))
(start $start)
(func $~lib/util/number/decimalCount32 (; 1 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32)
local.get $0
i32.const 100000
i32.lt_u
if (result i32)
local.get $0
i32.const 100
i32.lt_u
if (result i32)
i32.const 1
i32.const 2
local.get $0
i32.const 10
i32.lt_u
select
else
i32.const 3
i32.const 4
i32.const 5
local.get $0
i32.const 10000
i32.lt_u
select
local.get $0
i32.const 1000
i32.lt_u
select
end
else
local.get $0
i32.const 10000000
i32.lt_u
if (result i32)
i32.const 6
i32.const 7
local.get $0
i32.const 1000000
i32.lt_u
select
else
i32.const 8
i32.const 9
i32.const 10
local.get $0
i32.const 1000000000
i32.lt_u
select
local.get $0
i32.const 100000000
i32.lt_u
select
end
end
)
(func $~lib/allocator/arena/__mem_allocate (; 2 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32)
(local $1 i32)
(local $2 i32)
(local $3 i32)
local.get $0
i32.const 1073741824
i32.gt_u
if
unreachable
end
global.get $~lib/allocator/arena/offset
local.tee $1
local.get $0
i32.const 1
local.get $0
i32.const 1
i32.gt_u
select
i32.add
i32.const 7
i32.add
i32.const -8
i32.and
local.tee $0
current_memory
local.tee $2
i32.const 16
i32.shl
i32.gt_u
if
local.get $2
local.get $0
local.get $1
i32.sub
i32.const 65535
i32.add
i32.const -65536
i32.and
i32.const 16
i32.shr_u
local.tee $3
local.get $2
local.get $3
i32.gt_s
select
grow_memory
i32.const 0
i32.lt_s
if
local.get $3
grow_memory
i32.const 0
i32.lt_s
if
unreachable
end
end
end
local.get $0
global.set $~lib/allocator/arena/offset
local.get $1
)
(func $~lib/util/runtime/allocate (; 3 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32)
(local $1 i32)
i32.const 1
i32.const 32
local.get $0
i32.const 15
i32.add
i32.clz
i32.sub
i32.shl
call $~lib/allocator/arena/__mem_allocate
local.tee $1
i32.const -1520547049
i32.store
local.get $1
local.get $0
i32.store offset=4
local.get $1
i32.const 16
i32.add
)
(func $~lib/util/number/utoa32_lut (; 4 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32)
(local $3 i32)
(local $4 i32)
i32.const 468
i32.load
local.set $3
loop $continue|0
local.get $1
i32.const 10000
i32.ge_u
if
local.get $1
i32.const 10000
i32.rem_u
local.set $4
local.get $1
i32.const 10000
i32.div_u
local.set $1
local.get $2
i32.const 4
i32.sub
local.tee $2
i32.const 1
i32.shl
local.get $0
i32.add
local.get $4
i32.const 100
i32.div_u
i32.const 2
i32.shl
local.get $3
i32.add
i64.load32_u
local.get $4
i32.const 100
i32.rem_u
i32.const 2
i32.shl
local.get $3
i32.add
i64.load32_u
i64.const 32
i64.shl
i64.or
i64.store
br $continue|0
end
end
local.get $1
i32.const 100
i32.ge_u
if
local.get $1
i32.const 100
i32.rem_u
local.set $4
local.get $1
i32.const 100
i32.div_u
local.set $1
local.get $2
i32.const 2
i32.sub
local.tee $2
i32.const 1
i32.shl
local.get $0
i32.add
local.get $4
i32.const 2
i32.shl
local.get $3
i32.add
i32.load
i32.store
end
local.get $1
i32.const 10
i32.ge_u
if
local.get $2
i32.const 2
i32.sub
i32.const 1
i32.shl
local.get $0
i32.add
local.get $1
i32.const 2
i32.shl
local.get $3
i32.add
i32.load
i32.store
else
local.get $2
i32.const 1
i32.sub
i32.const 1
i32.shl
local.get $0
i32.add
local.get $1
i32.const 48
i32.add
i32.store16
end
)
(func $~lib/util/runtime/register (; 5 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32)
(local $1 i32)
local.get $0
i32.const 2012
i32.le_u
if
i32.const 0
i32.const 496
i32.const 129
i32.const 4
call $~lib/builtins/abort
unreachable
end
local.get $0
i32.const 16
i32.sub
local.tee $1
i32.load
i32.const -1520547049
i32.ne
if
i32.const 0
i32.const 496
i32.const 131
i32.const 4
call $~lib/builtins/abort
unreachable
end
local.get $1
i32.const 16
i32.store
local.get $0
)
(func $~lib/util/number/itoa32 (; 6 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32)
(local $1 i32)
(local $2 i32)
(local $3 i32)
local.get $0
i32.eqz
if
i32.const 24
return
end
local.get $0
i32.const 0
i32.lt_s
local.tee $1
if
i32.const 0
local.get $0
i32.sub
local.set $0
end
local.get $0
call $~lib/util/number/decimalCount32
local.get $1
i32.add
local.tee $3
i32.const 1
i32.shl
call $~lib/util/runtime/allocate
local.tee $2
local.get $0
local.get $3
call $~lib/util/number/utoa32_lut
local.get $1
if
local.get $2
i32.const 45
i32.store16
end
local.get $2
call $~lib/util/runtime/register
)
(func $~lib/util/string/compareImpl (; 7 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32)
(local $3 i32)
loop $continue|0
local.get $2
if (result i32)
local.get $0
i32.load16_u
local.get $1
i32.load16_u
i32.sub
local.tee $3
i32.eqz
else
i32.const 0
end
if
local.get $2
i32.const 1
i32.sub
local.set $2
local.get $0
i32.const 2
i32.add
local.set $0
local.get $1
i32.const 2
i32.add
local.set $1
br $continue|0
end
end
local.get $3
)
(func $~lib/string/String.__eq (; 8 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32)
(local $2 i32)
local.get $0
local.get $1
i32.eq
if
i32.const 1
return
end
local.get $1
i32.eqz
i32.const 1
local.get $0
select
if
i32.const 0
return
end
local.get $0
i32.const 16
i32.sub
i32.load offset=4
i32.const 1
i32.shr_u
local.tee $2
local.get $1
i32.const 16
i32.sub
i32.load offset=4
i32.const 1
i32.shr_u
i32.ne
if
i32.const 0
return
end
local.get $0
local.get $1
local.get $2
call $~lib/util/string/compareImpl
i32.eqz
)
(func $~lib/util/number/genDigits (; 9 ;) (type $FUNCSIG$iijijij) (param $0 i32) (param $1 i64) (param $2 i32) (param $3 i64) (param $4 i32) (param $5 i64) (result i32)
(local $6 i32)
(local $7 i32)
(local $8 i64)
(local $9 i64)
(local $10 i32)
(local $11 i64)
(local $12 i32)
(local $13 i64)
(local $14 i32)
i32.const 0
local.set $2
local.get $3
local.get $1
i64.sub
local.set $9
i64.const 1
i32.const 0
local.get $4
i32.sub
local.tee $10
i64.extend_i32_s
local.tee $1
i64.shl
local.tee $11
i64.const 1
i64.sub
local.tee $13
local.get $3
i64.and
local.set $8
local.get $3
local.get $1
i64.shr_u
i32.wrap_i64
local.tee $6
call $~lib/util/number/decimalCount32
local.set $4
i32.const 1764
i32.load
local.set $12
loop $continue|0
local.get $4
i32.const 0
i32.gt_s
if
block $break|1
block $case10|1
block $case9|1
block $case8|1
block $case7|1
block $case6|1
block $case5|1
block $case4|1
block $case3|1
block $case2|1
block $case1|1
local.get $4
i32.const 10
i32.ne
if
local.get $4
i32.const 9
i32.eq
br_if $case1|1
block $tablify|0
local.get $4
i32.const 1
i32.sub
br_table $case9|1 $case8|1 $case7|1 $case6|1 $case5|1 $case4|1 $case3|1 $case2|1 $tablify|0
end
br $case10|1
end
local.get $6
i32.const 1000000000
i32.div_u
local.set $7
local.get $6
i32.const 1000000000
i32.rem_u
local.set $6
br $break|1
end
local.get $6
i32.const 100000000
i32.div_u
local.set $7
local.get $6
i32.const 100000000
i32.rem_u
local.set $6
br $break|1
end
local.get $6
i32.const 10000000
i32.div_u
local.set $7
local.get $6
i32.const 10000000
i32.rem_u
local.set $6
br $break|1
end
local.get $6
i32.const 1000000
i32.div_u
local.set $7
local.get $6
i32.const 1000000
i32.rem_u
local.set $6
br $break|1
end
local.get $6
i32.const 100000
i32.div_u
local.set $7
local.get $6
i32.const 100000
i32.rem_u
local.set $6
br $break|1
end
local.get $6
i32.const 10000
i32.div_u
local.set $7
local.get $6
i32.const 10000
i32.rem_u
local.set $6
br $break|1
end
local.get $6
i32.const 1000
i32.div_u
local.set $7
local.get $6
i32.const 1000
i32.rem_u
local.set $6
br $break|1
end
local.get $6
i32.const 100
i32.div_u
local.set $7
local.get $6
i32.const 100
i32.rem_u
local.set $6
br $break|1
end
local.get $6
i32.const 10
i32.div_u
local.set $7
local.get $6
i32.const 10
i32.rem_u
local.set $6
br $break|1
end
local.get $6
local.set $7
i32.const 0
local.set $6
br $break|1
end
i32.const 0
local.set $7
end
local.get $2
local.get $7
i32.or
if
local.get $2
local.tee $14
i32.const 1
i32.add
local.set $2
local.get $14
i32.const 1
i32.shl
local.get $0
i32.add
local.get $7
i32.const 65535
i32.and
i32.const 48
i32.add
i32.store16
end
local.get $4
i32.const 1
i32.sub
local.set $4
local.get $6
i64.extend_i32_u
local.get $10
i64.extend_i32_s
i64.shl
local.get $8
i64.add
local.tee $1
local.get $5
i64.le_u
if
global.get $~lib/util/number/_K
local.get $4
i32.add
global.set $~lib/util/number/_K
local.get $4
i32.const 2
i32.shl
local.get $12
i32.add
i64.load32_u
local.get $10
i64.extend_i32_s
i64.shl
local.set $3
local.get $2
i32.const 1
i32.sub
i32.const 1
i32.shl
local.get $0
i32.add
local.tee $6
i32.load16_u
local.set $4
loop $continue|2
local.get $5
local.get $1
i64.sub
local.get $3
i64.ge_u
i32.const 0
local.get $1
local.get $9
i64.lt_u
select
if (result i32)
i32.const 1
local.get $9
local.get $1
i64.sub
local.get $1
local.get $3
i64.add
local.tee $8
local.get $9
i64.sub
i64.gt_u
local.get $8
local.get $9
i64.lt_u
select
else
i32.const 0
end
if
local.get $4
i32.const 1
i32.sub
local.set $4
local.get $1
local.get $3
i64.add
local.set $1
br $continue|2
end
end
local.get $6
local.get $4
i32.store16
local.get $2
return
end
br $continue|0
end
end
loop $continue|3
local.get $5
i64.const 10
i64.mul
local.set $5
local.get $8
i64.const 10
i64.mul
local.tee $1
local.get $10
i64.extend_i32_s
i64.shr_u
local.tee $3
local.get $2
i64.extend_i32_s
i64.or
i64.const 0
i64.ne
if
local.get $2
local.tee $6
i32.const 1
i32.add
local.set $2
local.get $6
i32.const 1
i32.shl
local.get $0
i32.add
local.get $3
i32.wrap_i64
i32.const 65535
i32.and
i32.const 48
i32.add
i32.store16
end
local.get $4
i32.const 1
i32.sub
local.set $4
local.get $1
local.get $13
i64.and
local.tee $8
local.get $5
i64.ge_u
br_if $continue|3
end
global.get $~lib/util/number/_K
local.get $4
i32.add
global.set $~lib/util/number/_K
local.get $8
local.set $1
i32.const 0
local.get $4
i32.sub
i32.const 2
i32.shl
local.get $12
i32.add
i64.load32_u
local.get $9
i64.mul
local.set $3
local.get $2
i32.const 1
i32.sub
i32.const 1
i32.shl
local.get $0
i32.add
local.tee $6
i32.load16_u
local.set $4
loop $continue|4
local.get $5
local.get $1
i64.sub
local.get $11
i64.ge_u
i32.const 0
local.get $1
local.get $3
i64.lt_u
select
if (result i32)
i32.const 1
local.get $3
local.get $1
i64.sub
local.get $1
local.get $11
i64.add
local.tee $8
local.get $3
i64.sub
i64.gt_u
local.get $8
local.get $3
i64.lt_u
select
else
i32.const 0
end
if
local.get $4
i32.const 1
i32.sub
local.set $4
local.get $1
local.get $11
i64.add
local.set $1
br $continue|4
end
end
local.get $6
local.get $4
i32.store16
local.get $2
)
(func $~lib/memory/memory.copy (; 10 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32)
(local $3 i32)
(local $4 i32)
block $~lib/util/memory/memmove|inlined.0
local.get $0
local.get $1
i32.eq
br_if $~lib/util/memory/memmove|inlined.0
local.get $0
local.get $1
i32.lt_u
if
local.get $1
i32.const 7
i32.and
local.get $0
i32.const 7
i32.and
i32.eq
if
loop $continue|0
local.get $0
i32.const 7
i32.and
if
local.get $2
i32.eqz
br_if $~lib/util/memory/memmove|inlined.0
local.get $2
i32.const 1
i32.sub
local.set $2
local.get $0
local.tee $3
i32.const 1
i32.add
local.set $0
local.get $1
local.tee $4
i32.const 1
i32.add
local.set $1
local.get $3
local.get $4
i32.load8_u
i32.store8
br $continue|0
end
end
loop $continue|1
local.get $2
i32.const 8
i32.ge_u
if
local.get $0
local.get $1
i64.load
i64.store
local.get $2
i32.const 8
i32.sub
local.set $2
local.get $0
i32.const 8
i32.add
local.set $0
local.get $1
i32.const 8
i32.add
local.set $1
br $continue|1
end
end
end
loop $continue|2
local.get $2
if
local.get $0
local.tee $3
i32.const 1
i32.add
local.set $0
local.get $1
local.tee $4
i32.const 1
i32.add
local.set $1
local.get $3
local.get $4
i32.load8_u
i32.store8
local.get $2
i32.const 1
i32.sub
local.set $2
br $continue|2
end
end
else
local.get $1
i32.const 7
i32.and
local.get $0
i32.const 7
i32.and
i32.eq
if
loop $continue|3
local.get $0
local.get $2
i32.add
i32.const 7
i32.and
if
local.get $2
i32.eqz
br_if $~lib/util/memory/memmove|inlined.0
local.get $2
i32.const 1
i32.sub
local.tee $2
local.get $0
i32.add
local.get $1
local.get $2
i32.add
i32.load8_u
i32.store8
br $continue|3
end
end
loop $continue|4
local.get $2
i32.const 8
i32.ge_u
if
local.get $2
i32.const 8
i32.sub
local.tee $2
local.get $0
i32.add
local.get $1
local.get $2
i32.add
i64.load
i64.store
br $continue|4
end
end
end
loop $continue|5
local.get $2
if
local.get $2
i32.const 1
i32.sub
local.tee $2
local.get $0
i32.add
local.get $1
local.get $2
i32.add
i32.load8_u
i32.store8
br $continue|5
end
end
end
end
)
(func $~lib/util/number/prettify (; 11 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32)
(local $3 i32)
local.get $2
i32.eqz
if
local.get $1
i32.const 1
i32.shl
local.get $0
i32.add
i32.const 3145774
i32.store
local.get $1
i32.const 2
i32.add
return
end
local.get $1
local.get $1
local.get $2
i32.add
local.tee $3
i32.le_s
if (result i32)
local.get $3
i32.const 21
i32.le_s
else
i32.const 0
end
if (result i32)
loop $repeat|0
block $break|0
local.get $1
local.get $3
i32.ge_s
br_if $break|0
local.get $1
i32.const 1
i32.shl
local.get $0
i32.add
i32.const 48
i32.store16
local.get $1
i32.const 1
i32.add
local.set $1
br $repeat|0
end
end
local.get $3
i32.const 1
i32.shl
local.get $0
i32.add
i32.const 3145774
i32.store
local.get $3
i32.const 2
i32.add
else
local.get $3
i32.const 21
i32.le_s
i32.const 0
local.get $3
i32.const 0
i32.gt_s
select
if (result i32)
local.get $3
i32.const 1
i32.shl
local.get $0
i32.add
local.tee $0
i32.const 2
i32.add
local.get $0
i32.const 0
local.get $2
i32.sub
i32.const 1
i32.shl
call $~lib/memory/memory.copy
local.get $0
i32.const 46
i32.store16
local.get $1
i32.const 1
i32.add
else
local.get $3
i32.const 0
i32.le_s
i32.const 0
i32.const -6
local.get $3
i32.lt_s
select
if (result i32)
i32.const 2
local.get $3
i32.sub
local.tee $3
i32.const 1
i32.shl
local.get $0
i32.add
local.get $0
local.get $1
i32.const 1
i32.shl
call $~lib/memory/memory.copy
local.get $0
i32.const 3014704
i32.store
i32.const 2
local.set $2
loop $repeat|1
block $break|1
local.get $2
local.get $3
i32.ge_s
br_if $break|1
local.get $2
i32.const 1
i32.shl
local.get $0
i32.add
i32.const 48
i32.store16
local.get $2
i32.const 1
i32.add
local.set $2
br $repeat|1
end
end
local.get $1
local.get $3
i32.add
else
local.get $1
i32.const 1
i32.eq
if (result i32)
local.get $0
i32.const 101
i32.store16 offset=2
local.get $0
i32.const 4
i32.add
local.tee $0
block (result i32)
local.get $3
i32.const 1
i32.sub
local.tee $1
i32.const 0
i32.lt_s
local.tee $2
if
i32.const 0
local.get $1
i32.sub
local.set $1
end
local.get $1
end
local.get $1
call $~lib/util/number/decimalCount32
i32.const 1
i32.add
local.tee $1
call $~lib/util/number/utoa32_lut
local.get $0
i32.const 45
i32.const 43
local.get $2
select
i32.store16
local.get $1
i32.const 2
i32.add
else
local.get $0
i32.const 4
i32.add
local.get $0
i32.const 2
i32.add
local.get $1
i32.const 1
i32.shl
local.tee $2
i32.const 2
i32.sub
call $~lib/memory/memory.copy
local.get $0
i32.const 46
i32.store16 offset=2
local.get $0
local.get $2
i32.add
local.tee $0
i32.const 101
i32.store16 offset=2
local.get $0
i32.const 4
i32.add
local.tee $2
block (result i32)
local.get $3
i32.const 1
i32.sub
local.tee $0
i32.const 0
i32.lt_s
local.tee $3
if
i32.const 0
local.get $0
i32.sub
local.set $0
end
local.get $0
end
local.get $0
call $~lib/util/number/decimalCount32
i32.const 1
i32.add
local.tee $0
call $~lib/util/number/utoa32_lut
local.get $2
i32.const 45
i32.const 43
local.get $3
select
i32.store16
local.get $0
local.get $1
i32.add
i32.const 2
i32.add
end
end
end
end
)
(func $~lib/util/number/dtoa_core (; 12 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32)
(local $1 i64)
(local $2 i64)
(local $3 i64)
(local $4 i32)
(local $5 i64)
(local $6 f64)
i64.const -9223372036854774784
global.set $~lib/util/number/_frc_plus
i64.const 9223372036854775296
global.set $~lib/util/number/_frc_minus
i32.const -62
global.set $~lib/util/number/_exp
i32.const 348
i32.const -61
global.get $~lib/util/number/_exp
i32.sub
f64.convert_i32_s
f64.const 0.30102999566398114
f64.mul
f64.const 347
f64.add
local.tee $6
i32.trunc_f64_s
local.tee $4
local.get $4
f64.convert_i32_s
local.get $6
f64.ne
i32.add
i32.const 3
i32.shr_s
i32.const 1
i32.add
local.tee $4
i32.const 3
i32.shl
i32.sub
global.set $~lib/util/number/_K
i32.const 1452
i32.load
local.get $4
i32.const 3
i32.shl
i32.add
i64.load
global.set $~lib/util/number/_frc_pow
i32.const 1676
i32.load
local.get $4
i32.const 1
i32.shl
i32.add
i32.load16_s
global.set $~lib/util/number/_exp_pow
global.get $~lib/util/number/_frc_plus
local.tee $1
i64.const 4294967295
i64.and
local.tee $3
global.get $~lib/util/number/_frc_pow
local.tee $2
i64.const 32
i64.shr_u
local.tee $5
i64.mul
local.get $2
i64.const 4294967295
i64.and
local.tee $2
local.get $1
i64.const 32
i64.shr_u
local.tee $1
i64.mul
local.get $2
local.get $3
i64.mul
i64.const 32
i64.shr_u
i64.add
local.tee $3
i64.const 4294967295
i64.and
i64.add
i64.const 2147483647
i64.add
i64.const 32
i64.shr_u
local.get $1
local.get $5
i64.mul
local.get $3
i64.const 32
i64.shr_u
i64.add
i64.add
i64.const 1
i64.sub
local.set $1
local.get $0
local.get $0
local.get $2
i64.const 2147483648
i64.mul
i64.const 0
i64.add
local.tee $3
i64.const 4294967295
i64.and
i64.const 0
i64.add
i64.const 2147483647
i64.add
i64.const 32
i64.shr_u
local.get $5
i64.const 2147483648
i64.mul
local.get $3
i64.const 32
i64.shr_u
i64.add
i64.add
global.get $~lib/util/number/_exp_pow
local.tee $0
i32.const 2
i32.add
local.get $1
global.get $~lib/util/number/_exp
local.get $0
i32.add
i32.const -64
i32.sub
local.get $1
global.get $~lib/util/number/_frc_minus
local.tee $1
i64.const 4294967295
i64.and
local.tee $3
local.get $5
i64.mul
local.get $1
i64.const 32
i64.shr_u
local.tee $1
local.get $2
i64.mul
local.get $2
local.get $3
i64.mul
i64.const 32
i64.shr_u
i64.add
local.tee $2
i64.const 4294967295
i64.and
i64.add
i64.const 2147483647
i64.add
i64.const 32
i64.shr_u
local.get $1
local.get $5
i64.mul
local.get $2
i64.const 32
i64.shr_u
i64.add
i64.add
i64.const 1
i64.add
i64.sub
call $~lib/util/number/genDigits
global.get $~lib/util/number/_K
call $~lib/util/number/prettify
)
(func $~lib/string/String#substring (; 13 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32)
(local $2 i32)
(local $3 i32)
local.get $0
i32.eqz
if
i32.const 0
i32.const 1792
i32.const 203
i32.const 4
call $~lib/builtins/abort
unreachable
end
i32.const 0
local.get $0
i32.const 16
i32.sub
i32.load offset=4
i32.const 1
i32.shr_u
local.tee $2
i32.const 0
local.get $2
i32.lt_s
select
local.tee $3
local.get $1
i32.const 0
local.get $1
i32.const 0
i32.gt_s
select
local.tee $1
local.get $2
local.get $1
local.get $2
i32.lt_s
select
local.tee $2
local.get $3
local.get $2
i32.gt_s
select
i32.const 1
i32.shl
local.tee $1
local.get $3
local.get $2
local.get $3
local.get $2
i32.lt_s
select
i32.const 1
i32.shl
local.tee $3
i32.sub
local.tee $2
i32.eqz
if
i32.const 1840
return
end
local.get $3
if (result i32)
i32.const 0
else
local.get $0
i32.const 16
i32.sub
i32.load offset=4
i32.const 1
i32.shr_u
i32.const 1
i32.shl
local.get $1
i32.eq
end
if
local.get $0
return
end
local.get $2
call $~lib/util/runtime/allocate
local.tee $1
local.get $0
local.get $3
i32.add
local.get $2
call $~lib/memory/memory.copy
local.get $1
call $~lib/util/runtime/register
)
(func $~lib/util/runtime/discard (; 14 ;) (type $FUNCSIG$vi) (param $0 i32)
local.get $0
i32.const 2012
i32.le_u
if
i32.const 0
i32.const 496
i32.const 115
i32.const 4
call $~lib/builtins/abort
unreachable
end
local.get $0
i32.const 16
i32.sub
i32.load
i32.const -1520547049
i32.ne
if
i32.const 0
i32.const 496
i32.const 117
i32.const 4
call $~lib/builtins/abort
unreachable
end
)
(func $start:number (; 15 ;) (type $FUNCSIG$v)
(local $0 i32)
(local $1 i32)
i32.const 2016
global.set $~lib/allocator/arena/startOffset
global.get $~lib/allocator/arena/startOffset
global.set $~lib/allocator/arena/offset
global.get $number/a
call $~lib/util/number/itoa32
i32.const 552
call $~lib/string/String.__eq
i32.eqz
if
i32.const 0
i32.const 576
i32.const 7
i32.const 0
call $~lib/builtins/abort
unreachable
end
i32.const 56
call $~lib/util/runtime/allocate
local.tee $0
call $~lib/util/number/dtoa_core
local.set $1
local.get $0
local.get $1
call $~lib/string/String#substring
local.set $1
local.get $0
call $~lib/util/runtime/discard
local.get $1
i32.const 1856
call $~lib/string/String.__eq
i32.eqz
if
i32.const 0
i32.const 576
i32.const 9
i32.const 0
call $~lib/builtins/abort
unreachable
end
i32.const 3
call $~lib/util/number/itoa32
i32.const 1880
call $~lib/string/String.__eq
i32.eqz
if
i32.const 0
i32.const 576
i32.const 10
i32.const 0
call $~lib/builtins/abort
unreachable
end
i32.const -5
call $~lib/util/number/itoa32
i32.const 1904
call $~lib/string/String.__eq
i32.eqz
if
i32.const 0
i32.const 576
i32.const 12
i32.const 0
call $~lib/builtins/abort
unreachable
end
i32.const 4
call $~lib/util/number/itoa32
i32.const 1928
call $~lib/string/String.__eq
i32.eqz
if
i32.const 0
i32.const 576
i32.const 13
i32.const 0
call $~lib/builtins/abort
unreachable
end
global.get $number/a
i32.const 1
i32.add
local.tee $0
global.set $number/a
local.get $0
call $~lib/util/number/itoa32
i32.const 1952
call $~lib/string/String.__eq
i32.eqz
if
i32.const 0
i32.const 576
i32.const 14
i32.const 0
call $~lib/builtins/abort
unreachable
end
global.get $number/a
i32.const 1
i32.sub
local.tee $0
global.set $number/a
local.get $0
call $~lib/util/number/itoa32
i32.const 552
call $~lib/string/String.__eq
i32.eqz
if
i32.const 0
i32.const 576
i32.const 15
i32.const 0
call $~lib/builtins/abort
unreachable
end
i32.const 1976
i32.const 1976
call $~lib/string/String.__eq
i32.eqz
if
i32.const 0
i32.const 576
i32.const 16
i32.const 0
call $~lib/builtins/abort
unreachable
end
i32.const 2000
i32.const 2000
call $~lib/string/String.__eq
i32.eqz
if
i32.const 0
i32.const 576
i32.const 17
i32.const 0
call $~lib/builtins/abort
unreachable
end
global.get $number/a
local.tee $0
i32.const 1
i32.add
global.set $number/a
local.get $0
call $~lib/util/number/itoa32
i32.const 552
call $~lib/string/String.__eq
i32.eqz
if
i32.const 0
i32.const 576
i32.const 20
i32.const 0
call $~lib/builtins/abort
unreachable
end
global.get $number/a
local.tee $0
i32.const 1
i32.sub
global.set $number/a
local.get $0
call $~lib/util/number/itoa32
i32.const 1952
call $~lib/string/String.__eq
i32.eqz
if
i32.const 0
i32.const 576
i32.const 21
i32.const 0
call $~lib/builtins/abort
unreachable
end
)
(func $start (; 16 ;) (type $FUNCSIG$v)
call $start:number
)
(func $null (; 17 ;) (type $FUNCSIG$v)
nop
)
)