Created
October 11, 2019 21:07
-
-
Save vird/681d26417d700ac834009aaab1b7e04d to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
(module | |
(type $FUNCSIG$iii (func (param i32 i32) (result i32))) | |
(type $FUNCSIG$v (func)) | |
(type $FUNCSIG$iiii (func (param i32 i32 i32) (result i32))) | |
(type $FUNCSIG$viiii (func (param i32 i32 i32 i32))) | |
(type $FUNCSIG$vii (func (param i32 i32))) | |
(type $FUNCSIG$ii (func (param i32) (result i32))) | |
(type $FUNCSIG$vi (func (param i32))) | |
(type $FUNCSIG$viii (func (param i32 i32 i32))) | |
(type $FUNCSIG$i (func (result i32))) | |
(type $FUNCSIG$iiiii (func (param i32 i32 i32 i32) (result i32))) | |
(import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) | |
(memory $0 1) | |
(data (i32.const 8) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00") | |
(data (i32.const 56) "(\00\00\00\01\00\00\00\01\00\00\00(\00\00\00a\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00") | |
(data (i32.const 112) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00p\00u\00r\00e\00.\00t\00s\00") | |
(data (i32.const 160) "$\00\00\00\01\00\00\00\01\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e\00") | |
(data (i32.const 216) "\14\00\00\00\01\00\00\00\01\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s\00") | |
(data (i32.const 256) "\00\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00") | |
(data (i32.const 272) "\1c\00\00\00\01\00\00\00\01\00\00\00\1c\00\00\00I\00n\00v\00a\00l\00i\00d\00 \00l\00e\00n\00g\00t\00h\00") | |
(data (i32.const 320) "\1a\00\00\00\01\00\00\00\01\00\00\00\1a\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00.\00t\00s\00") | |
(data (i32.const 368) "\06\00\00\00\10\00\00\00\00\00\00\00\10\00\00\00\00\00\00\00\10\00\00\00\00\00\00\00\10\00\00\00\00\00\00\00\93 \00\00\02\00\00\00\93\04\00\00\02\00\00\00") | |
(table $0 1 funcref) | |
(elem (i32.const 0) $null) | |
(global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) | |
(global $~lib/rt/tlsf/collectLock (mut i32) (i32.const 0)) | |
(global $~lib/gc/gc.auto (mut i32) (i32.const 1)) | |
(global $~lib/rt/pure/ROOTS (mut i32) (i32.const 0)) | |
(global $~lib/rt/pure/CUR (mut i32) (i32.const 0)) | |
(global $~lib/rt/pure/END (mut i32) (i32.const 0)) | |
(global $~lib/ASC_SHRINK_LEVEL i32 (i32.const 0)) | |
(global $~lib/rt/__rtti_base i32 (i32.const 368)) | |
(global $~lib/heap/__heap_base i32 (i32.const 420)) | |
(export "memory" (memory $0)) | |
(export "__alloc" (func $~lib/rt/tlsf/__alloc)) | |
(export "__retain" (func $~lib/rt/pure/__retain)) | |
(export "__release" (func $~lib/rt/pure/__release)) | |
(export "__collect" (func $~lib/rt/pure/__collect)) | |
(export "__rtti_base" (global $~lib/rt/__rtti_base)) | |
(export "report" (func $index/report)) | |
(func $~lib/rt/tlsf/removeBlock (; 1 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) | |
(local $2 i32) | |
(local $3 i32) | |
(local $4 i32) | |
(local $5 i32) | |
(local $6 i32) | |
(local $7 i32) | |
(local $8 i32) | |
(local $9 i32) | |
(local $10 i32) | |
(local $11 i32) | |
local.get $1 | |
i32.load | |
local.set $2 | |
local.get $2 | |
i32.const 1 | |
i32.and | |
i32.eqz | |
if | |
i32.const 0 | |
i32.const 24 | |
i32.const 277 | |
i32.const 13 | |
call $~lib/builtins/abort | |
unreachable | |
end | |
local.get $2 | |
i32.const 3 | |
i32.const -1 | |
i32.xor | |
i32.and | |
local.set $3 | |
local.get $3 | |
i32.const 16 | |
i32.ge_u | |
if (result i32) | |
local.get $3 | |
i32.const 1073741808 | |
i32.lt_u | |
else | |
i32.const 0 | |
end | |
i32.eqz | |
if | |
i32.const 0 | |
i32.const 24 | |
i32.const 279 | |
i32.const 13 | |
call $~lib/builtins/abort | |
unreachable | |
end | |
local.get $3 | |
i32.const 256 | |
i32.lt_u | |
if | |
i32.const 0 | |
local.set $4 | |
local.get $3 | |
i32.const 4 | |
i32.shr_u | |
local.set $5 | |
else | |
i32.const 31 | |
local.get $3 | |
i32.clz | |
i32.sub | |
local.set $4 | |
local.get $3 | |
local.get $4 | |
i32.const 4 | |
i32.sub | |
i32.shr_u | |
i32.const 1 | |
i32.const 4 | |
i32.shl | |
i32.xor | |
local.set $5 | |
local.get $4 | |
i32.const 8 | |
i32.const 1 | |
i32.sub | |
i32.sub | |
local.set $4 | |
end | |
local.get $4 | |
i32.const 23 | |
i32.lt_u | |
if (result i32) | |
local.get $5 | |
i32.const 16 | |
i32.lt_u | |
else | |
i32.const 0 | |
end | |
i32.eqz | |
if | |
i32.const 0 | |
i32.const 24 | |
i32.const 292 | |
i32.const 13 | |
call $~lib/builtins/abort | |
unreachable | |
end | |
local.get $1 | |
i32.load offset=16 | |
local.set $6 | |
local.get $1 | |
i32.load offset=20 | |
local.set $7 | |
local.get $6 | |
if | |
local.get $6 | |
local.get $7 | |
i32.store offset=20 | |
end | |
local.get $7 | |
if | |
local.get $7 | |
local.get $6 | |
i32.store offset=16 | |
end | |
local.get $1 | |
local.get $0 | |
local.set $10 | |
local.get $4 | |
local.set $9 | |
local.get $5 | |
local.set $8 | |
local.get $10 | |
local.get $9 | |
i32.const 4 | |
i32.shl | |
local.get $8 | |
i32.add | |
i32.const 2 | |
i32.shl | |
i32.add | |
i32.load offset=96 | |
i32.eq | |
if | |
local.get $0 | |
local.set $11 | |
local.get $4 | |
local.set $10 | |
local.get $5 | |
local.set $9 | |
local.get $7 | |
local.set $8 | |
local.get $11 | |
local.get $10 | |
i32.const 4 | |
i32.shl | |
local.get $9 | |
i32.add | |
i32.const 2 | |
i32.shl | |
i32.add | |
local.get $8 | |
i32.store offset=96 | |
local.get $7 | |
i32.eqz | |
if | |
local.get $0 | |
local.set $9 | |
local.get $4 | |
local.set $8 | |
local.get $9 | |
local.get $8 | |
i32.const 2 | |
i32.shl | |
i32.add | |
i32.load offset=4 | |
local.set $9 | |
local.get $0 | |
local.set $8 | |
local.get $4 | |
local.set $11 | |
local.get $9 | |
i32.const 1 | |
local.get $5 | |
i32.shl | |
i32.const -1 | |
i32.xor | |
i32.and | |
local.tee $9 | |
local.set $10 | |
local.get $8 | |
local.get $11 | |
i32.const 2 | |
i32.shl | |
i32.add | |
local.get $10 | |
i32.store offset=4 | |
local.get $9 | |
i32.eqz | |
if | |
local.get $0 | |
local.get $0 | |
i32.load | |
i32.const 1 | |
local.get $4 | |
i32.shl | |
i32.const -1 | |
i32.xor | |
i32.and | |
i32.store | |
end | |
end | |
end | |
) | |
(func $~lib/rt/tlsf/insertBlock (; 2 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) | |
(local $2 i32) | |
(local $3 i32) | |
(local $4 i32) | |
(local $5 i32) | |
(local $6 i32) | |
(local $7 i32) | |
(local $8 i32) | |
(local $9 i32) | |
(local $10 i32) | |
(local $11 i32) | |
(local $12 i32) | |
(local $13 i32) | |
local.get $1 | |
i32.eqz | |
if | |
i32.const 0 | |
i32.const 24 | |
i32.const 205 | |
i32.const 13 | |
call $~lib/builtins/abort | |
unreachable | |
end | |
local.get $1 | |
i32.load | |
local.set $2 | |
local.get $2 | |
i32.const 1 | |
i32.and | |
i32.eqz | |
if | |
i32.const 0 | |
i32.const 24 | |
i32.const 207 | |
i32.const 13 | |
call $~lib/builtins/abort | |
unreachable | |
end | |
local.get $1 | |
local.set $3 | |
local.get $3 | |
i32.const 16 | |
i32.add | |
local.get $3 | |
i32.load | |
i32.const 3 | |
i32.const -1 | |
i32.xor | |
i32.and | |
i32.add | |
local.set $4 | |
local.get $4 | |
i32.load | |
local.set $5 | |
local.get $5 | |
i32.const 1 | |
i32.and | |
if | |
local.get $2 | |
i32.const 3 | |
i32.const -1 | |
i32.xor | |
i32.and | |
i32.const 16 | |
i32.add | |
local.get $5 | |
i32.const 3 | |
i32.const -1 | |
i32.xor | |
i32.and | |
i32.add | |
local.set $3 | |
local.get $3 | |
i32.const 1073741808 | |
i32.lt_u | |
if | |
local.get $0 | |
local.get $4 | |
call $~lib/rt/tlsf/removeBlock | |
local.get $1 | |
local.get $2 | |
i32.const 3 | |
i32.and | |
local.get $3 | |
i32.or | |
local.tee $2 | |
i32.store | |
local.get $1 | |
local.set $6 | |
local.get $6 | |
i32.const 16 | |
i32.add | |
local.get $6 | |
i32.load | |
i32.const 3 | |
i32.const -1 | |
i32.xor | |
i32.and | |
i32.add | |
local.set $4 | |
local.get $4 | |
i32.load | |
local.set $5 | |
end | |
end | |
local.get $2 | |
i32.const 2 | |
i32.and | |
if | |
local.get $1 | |
local.set $6 | |
local.get $6 | |
i32.const 4 | |
i32.sub | |
i32.load | |
local.set $6 | |
local.get $6 | |
i32.load | |
local.set $3 | |
local.get $3 | |
i32.const 1 | |
i32.and | |
i32.eqz | |
if | |
i32.const 0 | |
i32.const 24 | |
i32.const 228 | |
i32.const 15 | |
call $~lib/builtins/abort | |
unreachable | |
end | |
local.get $3 | |
i32.const 3 | |
i32.const -1 | |
i32.xor | |
i32.and | |
i32.const 16 | |
i32.add | |
local.get $2 | |
i32.const 3 | |
i32.const -1 | |
i32.xor | |
i32.and | |
i32.add | |
local.set $7 | |
local.get $7 | |
i32.const 1073741808 | |
i32.lt_u | |
if | |
local.get $0 | |
local.get $6 | |
call $~lib/rt/tlsf/removeBlock | |
local.get $6 | |
local.get $3 | |
i32.const 3 | |
i32.and | |
local.get $7 | |
i32.or | |
local.tee $2 | |
i32.store | |
local.get $6 | |
local.set $1 | |
end | |
end | |
local.get $4 | |
local.get $5 | |
i32.const 2 | |
i32.or | |
i32.store | |
local.get $2 | |
i32.const 3 | |
i32.const -1 | |
i32.xor | |
i32.and | |
local.set $8 | |
local.get $8 | |
i32.const 16 | |
i32.ge_u | |
if (result i32) | |
local.get $8 | |
i32.const 1073741808 | |
i32.lt_u | |
else | |
i32.const 0 | |
end | |
i32.eqz | |
if | |
i32.const 0 | |
i32.const 24 | |
i32.const 243 | |
i32.const 13 | |
call $~lib/builtins/abort | |
unreachable | |
end | |
local.get $1 | |
i32.const 16 | |
i32.add | |
local.get $8 | |
i32.add | |
local.get $4 | |
i32.eq | |
i32.eqz | |
if | |
i32.const 0 | |
i32.const 24 | |
i32.const 244 | |
i32.const 13 | |
call $~lib/builtins/abort | |
unreachable | |
end | |
local.get $4 | |
i32.const 4 | |
i32.sub | |
local.get $1 | |
i32.store | |
local.get $8 | |
i32.const 256 | |
i32.lt_u | |
if | |
i32.const 0 | |
local.set $9 | |
local.get $8 | |
i32.const 4 | |
i32.shr_u | |
local.set $10 | |
else | |
i32.const 31 | |
local.get $8 | |
i32.clz | |
i32.sub | |
local.set $9 | |
local.get $8 | |
local.get $9 | |
i32.const 4 | |
i32.sub | |
i32.shr_u | |
i32.const 1 | |
i32.const 4 | |
i32.shl | |
i32.xor | |
local.set $10 | |
local.get $9 | |
i32.const 8 | |
i32.const 1 | |
i32.sub | |
i32.sub | |
local.set $9 | |
end | |
local.get $9 | |
i32.const 23 | |
i32.lt_u | |
if (result i32) | |
local.get $10 | |
i32.const 16 | |
i32.lt_u | |
else | |
i32.const 0 | |
end | |
i32.eqz | |
if | |
i32.const 0 | |
i32.const 24 | |
i32.const 260 | |
i32.const 13 | |
call $~lib/builtins/abort | |
unreachable | |
end | |
local.get $0 | |
local.set $7 | |
local.get $9 | |
local.set $3 | |
local.get $10 | |
local.set $6 | |
local.get $7 | |
local.get $3 | |
i32.const 4 | |
i32.shl | |
local.get $6 | |
i32.add | |
i32.const 2 | |
i32.shl | |
i32.add | |
i32.load offset=96 | |
local.set $11 | |
local.get $1 | |
i32.const 0 | |
i32.store offset=16 | |
local.get $1 | |
local.get $11 | |
i32.store offset=20 | |
local.get $11 | |
if | |
local.get $11 | |
local.get $1 | |
i32.store offset=16 | |
end | |
local.get $0 | |
local.set $12 | |
local.get $9 | |
local.set $7 | |
local.get $10 | |
local.set $3 | |
local.get $1 | |
local.set $6 | |
local.get $12 | |
local.get $7 | |
i32.const 4 | |
i32.shl | |
local.get $3 | |
i32.add | |
i32.const 2 | |
i32.shl | |
i32.add | |
local.get $6 | |
i32.store offset=96 | |
local.get $0 | |
local.get $0 | |
i32.load | |
i32.const 1 | |
local.get $9 | |
i32.shl | |
i32.or | |
i32.store | |
local.get $0 | |
local.set $13 | |
local.get $9 | |
local.set $12 | |
local.get $0 | |
local.set $3 | |
local.get $9 | |
local.set $6 | |
local.get $3 | |
local.get $6 | |
i32.const 2 | |
i32.shl | |
i32.add | |
i32.load offset=4 | |
i32.const 1 | |
local.get $10 | |
i32.shl | |
i32.or | |
local.set $7 | |
local.get $13 | |
local.get $12 | |
i32.const 2 | |
i32.shl | |
i32.add | |
local.get $7 | |
i32.store offset=4 | |
) | |
(func $~lib/rt/tlsf/addMemory (; 3 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) | |
(local $3 i32) | |
(local $4 i32) | |
(local $5 i32) | |
(local $6 i32) | |
(local $7 i32) | |
(local $8 i32) | |
(local $9 i32) | |
local.get $1 | |
local.get $2 | |
i32.le_u | |
if (result i32) | |
local.get $1 | |
i32.const 15 | |
i32.and | |
i32.eqz | |
else | |
i32.const 0 | |
end | |
if (result i32) | |
local.get $2 | |
i32.const 15 | |
i32.and | |
i32.eqz | |
else | |
i32.const 0 | |
end | |
i32.eqz | |
if | |
i32.const 0 | |
i32.const 24 | |
i32.const 386 | |
i32.const 4 | |
call $~lib/builtins/abort | |
unreachable | |
end | |
local.get $0 | |
local.set $3 | |
local.get $3 | |
i32.load offset=1568 | |
local.set $4 | |
i32.const 0 | |
local.set $5 | |
local.get $4 | |
if | |
local.get $1 | |
local.get $4 | |
i32.const 16 | |
i32.add | |
i32.ge_u | |
i32.eqz | |
if | |
i32.const 0 | |
i32.const 24 | |
i32.const 396 | |
i32.const 15 | |
call $~lib/builtins/abort | |
unreachable | |
end | |
local.get $1 | |
i32.const 16 | |
i32.sub | |
local.get $4 | |
i32.eq | |
if | |
local.get $1 | |
i32.const 16 | |
i32.sub | |
local.set $1 | |
local.get $4 | |
i32.load | |
local.set $5 | |
else | |
nop | |
end | |
else | |
local.get $1 | |
local.get $0 | |
i32.const 1572 | |
i32.add | |
i32.ge_u | |
i32.eqz | |
if | |
i32.const 0 | |
i32.const 24 | |
i32.const 408 | |
i32.const 4 | |
call $~lib/builtins/abort | |
unreachable | |
end | |
end | |
local.get $2 | |
local.get $1 | |
i32.sub | |
local.set $6 | |
local.get $6 | |
i32.const 48 | |
i32.lt_u | |
if | |
i32.const 0 | |
return | |
end | |
local.get $6 | |
i32.const 16 | |
i32.const 1 | |
i32.shl | |
i32.sub | |
local.set $7 | |
local.get $1 | |
local.set $8 | |
local.get $8 | |
local.get $7 | |
i32.const 1 | |
i32.or | |
local.get $5 | |
i32.const 2 | |
i32.and | |
i32.or | |
i32.store | |
local.get $8 | |
i32.const 0 | |
i32.store offset=16 | |
local.get $8 | |
i32.const 0 | |
i32.store offset=20 | |
local.get $1 | |
local.get $6 | |
i32.add | |
i32.const 16 | |
i32.sub | |
local.set $4 | |
local.get $4 | |
i32.const 0 | |
i32.const 2 | |
i32.or | |
i32.store | |
local.get $0 | |
local.set $9 | |
local.get $4 | |
local.set $3 | |
local.get $9 | |
local.get $3 | |
i32.store offset=1568 | |
local.get $0 | |
local.get $8 | |
call $~lib/rt/tlsf/insertBlock | |
i32.const 1 | |
) | |
(func $~lib/rt/tlsf/initializeRoot (; 4 ;) (type $FUNCSIG$v) | |
(local $0 i32) | |
(local $1 i32) | |
(local $2 i32) | |
(local $3 i32) | |
(local $4 i32) | |
(local $5 i32) | |
(local $6 i32) | |
(local $7 i32) | |
(local $8 i32) | |
(local $9 i32) | |
global.get $~lib/heap/__heap_base | |
i32.const 15 | |
i32.add | |
i32.const 15 | |
i32.const -1 | |
i32.xor | |
i32.and | |
local.set $0 | |
memory.size | |
local.set $1 | |
local.get $0 | |
i32.const 1572 | |
i32.add | |
i32.const 65535 | |
i32.add | |
i32.const 65535 | |
i32.const -1 | |
i32.xor | |
i32.and | |
i32.const 16 | |
i32.shr_u | |
local.set $2 | |
local.get $2 | |
local.get $1 | |
i32.gt_s | |
if (result i32) | |
local.get $2 | |
local.get $1 | |
i32.sub | |
memory.grow | |
i32.const 0 | |
i32.lt_s | |
else | |
i32.const 0 | |
end | |
if | |
unreachable | |
end | |
local.get $0 | |
local.set $3 | |
local.get $3 | |
i32.const 0 | |
i32.store | |
local.get $3 | |
local.set $5 | |
i32.const 0 | |
local.set $4 | |
local.get $5 | |
local.get $4 | |
i32.store offset=1568 | |
block $break|0 | |
i32.const 0 | |
local.set $5 | |
loop $loop|0 | |
local.get $5 | |
i32.const 23 | |
i32.lt_u | |
i32.eqz | |
br_if $break|0 | |
local.get $3 | |
local.set $7 | |
local.get $5 | |
local.set $6 | |
i32.const 0 | |
local.set $4 | |
local.get $7 | |
local.get $6 | |
i32.const 2 | |
i32.shl | |
i32.add | |
local.get $4 | |
i32.store offset=4 | |
block $break|1 | |
i32.const 0 | |
local.set $7 | |
loop $loop|1 | |
local.get $7 | |
i32.const 16 | |
i32.lt_u | |
i32.eqz | |
br_if $break|1 | |
local.get $3 | |
local.set $9 | |
local.get $5 | |
local.set $8 | |
local.get $7 | |
local.set $6 | |
i32.const 0 | |
local.set $4 | |
local.get $9 | |
local.get $8 | |
i32.const 4 | |
i32.shl | |
local.get $6 | |
i32.add | |
i32.const 2 | |
i32.shl | |
i32.add | |
local.get $4 | |
i32.store offset=96 | |
local.get $7 | |
i32.const 1 | |
i32.add | |
local.set $7 | |
br $loop|1 | |
end | |
unreachable | |
end | |
local.get $5 | |
i32.const 1 | |
i32.add | |
local.set $5 | |
br $loop|0 | |
end | |
unreachable | |
end | |
local.get $3 | |
local.get $0 | |
i32.const 1572 | |
i32.add | |
i32.const 15 | |
i32.add | |
i32.const 15 | |
i32.const -1 | |
i32.xor | |
i32.and | |
memory.size | |
i32.const 16 | |
i32.shl | |
call $~lib/rt/tlsf/addMemory | |
drop | |
local.get $3 | |
global.set $~lib/rt/tlsf/ROOT | |
) | |
(func $~lib/rt/tlsf/prepareSize (; 5 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) | |
(local $1 i32) | |
(local $2 i32) | |
local.get $0 | |
i32.const 1073741808 | |
i32.ge_u | |
if | |
i32.const 72 | |
i32.const 24 | |
i32.const 457 | |
i32.const 29 | |
call $~lib/builtins/abort | |
unreachable | |
end | |
local.get $0 | |
i32.const 15 | |
i32.add | |
i32.const 15 | |
i32.const -1 | |
i32.xor | |
i32.and | |
local.tee $1 | |
i32.const 16 | |
local.tee $2 | |
local.get $1 | |
local.get $2 | |
i32.gt_u | |
select | |
) | |
(func $~lib/rt/tlsf/searchBlock (; 6 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) | |
(local $2 i32) | |
(local $3 i32) | |
(local $4 i32) | |
(local $5 i32) | |
(local $6 i32) | |
(local $7 i32) | |
(local $8 i32) | |
(local $9 i32) | |
local.get $1 | |
i32.const 256 | |
i32.lt_u | |
if | |
i32.const 0 | |
local.set $2 | |
local.get $1 | |
i32.const 4 | |
i32.shr_u | |
local.set $3 | |
else | |
local.get $1 | |
i32.const 536870904 | |
i32.lt_u | |
if (result i32) | |
local.get $1 | |
i32.const 1 | |
i32.const 27 | |
local.get $1 | |
i32.clz | |
i32.sub | |
i32.shl | |
i32.add | |
i32.const 1 | |
i32.sub | |
else | |
local.get $1 | |
end | |
local.set $4 | |
i32.const 31 | |
local.get $4 | |
i32.clz | |
i32.sub | |
local.set $2 | |
local.get $4 | |
local.get $2 | |
i32.const 4 | |
i32.sub | |
i32.shr_u | |
i32.const 1 | |
i32.const 4 | |
i32.shl | |
i32.xor | |
local.set $3 | |
local.get $2 | |
i32.const 8 | |
i32.const 1 | |
i32.sub | |
i32.sub | |
local.set $2 | |
end | |
local.get $2 | |
i32.const 23 | |
i32.lt_u | |
if (result i32) | |
local.get $3 | |
i32.const 16 | |
i32.lt_u | |
else | |
i32.const 0 | |
end | |
i32.eqz | |
if | |
i32.const 0 | |
i32.const 24 | |
i32.const 338 | |
i32.const 13 | |
call $~lib/builtins/abort | |
unreachable | |
end | |
local.get $0 | |
local.set $5 | |
local.get $2 | |
local.set $4 | |
local.get $5 | |
local.get $4 | |
i32.const 2 | |
i32.shl | |
i32.add | |
i32.load offset=4 | |
i32.const 0 | |
i32.const -1 | |
i32.xor | |
local.get $3 | |
i32.shl | |
i32.and | |
local.set $6 | |
i32.const 0 | |
local.set $7 | |
local.get $6 | |
i32.eqz | |
if | |
local.get $0 | |
i32.load | |
i32.const 0 | |
i32.const -1 | |
i32.xor | |
local.get $2 | |
i32.const 1 | |
i32.add | |
i32.shl | |
i32.and | |
local.set $5 | |
local.get $5 | |
i32.eqz | |
if | |
i32.const 0 | |
local.set $7 | |
else | |
local.get $5 | |
i32.ctz | |
local.set $2 | |
local.get $0 | |
local.set $8 | |
local.get $2 | |
local.set $4 | |
local.get $8 | |
local.get $4 | |
i32.const 2 | |
i32.shl | |
i32.add | |
i32.load offset=4 | |
local.set $6 | |
local.get $6 | |
i32.eqz | |
if | |
i32.const 0 | |
i32.const 24 | |
i32.const 351 | |
i32.const 17 | |
call $~lib/builtins/abort | |
unreachable | |
end | |
local.get $0 | |
local.set $9 | |
local.get $2 | |
local.set $8 | |
local.get $6 | |
i32.ctz | |
local.set $4 | |
local.get $9 | |
local.get $8 | |
i32.const 4 | |
i32.shl | |
local.get $4 | |
i32.add | |
i32.const 2 | |
i32.shl | |
i32.add | |
i32.load offset=96 | |
local.set $7 | |
end | |
else | |
local.get $0 | |
local.set $9 | |
local.get $2 | |
local.set $8 | |
local.get $6 | |
i32.ctz | |
local.set $4 | |
local.get $9 | |
local.get $8 | |
i32.const 4 | |
i32.shl | |
local.get $4 | |
i32.add | |
i32.const 2 | |
i32.shl | |
i32.add | |
i32.load offset=96 | |
local.set $7 | |
end | |
local.get $7 | |
) | |
(func $~lib/rt/pure/markGray (; 7 ;) (type $FUNCSIG$vi) (param $0 i32) | |
(local $1 i32) | |
local.get $0 | |
i32.load offset=4 | |
local.set $1 | |
local.get $1 | |
i32.const 1879048192 | |
i32.and | |
i32.const 268435456 | |
i32.ne | |
if | |
local.get $0 | |
local.get $1 | |
i32.const 1879048192 | |
i32.const -1 | |
i32.xor | |
i32.and | |
i32.const 268435456 | |
i32.or | |
i32.store offset=4 | |
local.get $0 | |
i32.const 16 | |
i32.add | |
i32.const 2 | |
call $~lib/rt/__visit_members | |
end | |
) | |
(func $~lib/rt/tlsf/freeBlock (; 8 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) | |
(local $2 i32) | |
local.get $1 | |
i32.load | |
local.set $2 | |
local.get $2 | |
i32.const 1 | |
i32.and | |
i32.eqz | |
i32.eqz | |
if | |
i32.const 0 | |
i32.const 24 | |
i32.const 563 | |
i32.const 2 | |
call $~lib/builtins/abort | |
unreachable | |
end | |
local.get $1 | |
local.get $2 | |
i32.const 1 | |
i32.or | |
i32.store | |
local.get $0 | |
local.get $1 | |
call $~lib/rt/tlsf/insertBlock | |
) | |
(func $~lib/rt/pure/scanBlack (; 9 ;) (type $FUNCSIG$vi) (param $0 i32) | |
local.get $0 | |
local.get $0 | |
i32.load offset=4 | |
i32.const 1879048192 | |
i32.const -1 | |
i32.xor | |
i32.and | |
i32.const 0 | |
i32.or | |
i32.store offset=4 | |
local.get $0 | |
i32.const 16 | |
i32.add | |
i32.const 4 | |
call $~lib/rt/__visit_members | |
) | |
(func $~lib/rt/pure/scan (; 10 ;) (type $FUNCSIG$vi) (param $0 i32) | |
(local $1 i32) | |
local.get $0 | |
i32.load offset=4 | |
local.set $1 | |
local.get $1 | |
i32.const 1879048192 | |
i32.and | |
i32.const 268435456 | |
i32.eq | |
if | |
local.get $1 | |
i32.const 268435455 | |
i32.and | |
i32.const 0 | |
i32.gt_u | |
if | |
local.get $0 | |
call $~lib/rt/pure/scanBlack | |
else | |
local.get $0 | |
local.get $1 | |
i32.const 1879048192 | |
i32.const -1 | |
i32.xor | |
i32.and | |
i32.const 536870912 | |
i32.or | |
i32.store offset=4 | |
local.get $0 | |
i32.const 16 | |
i32.add | |
i32.const 3 | |
call $~lib/rt/__visit_members | |
end | |
end | |
) | |
(func $~lib/rt/pure/collectWhite (; 11 ;) (type $FUNCSIG$vi) (param $0 i32) | |
(local $1 i32) | |
local.get $0 | |
i32.load offset=4 | |
local.set $1 | |
local.get $1 | |
i32.const 1879048192 | |
i32.and | |
i32.const 536870912 | |
i32.eq | |
if (result i32) | |
local.get $1 | |
i32.const -2147483648 | |
i32.and | |
i32.eqz | |
else | |
i32.const 0 | |
end | |
if | |
local.get $0 | |
local.get $1 | |
i32.const 1879048192 | |
i32.const -1 | |
i32.xor | |
i32.and | |
i32.const 0 | |
i32.or | |
i32.store offset=4 | |
local.get $0 | |
i32.const 16 | |
i32.add | |
i32.const 5 | |
call $~lib/rt/__visit_members | |
global.get $~lib/rt/tlsf/ROOT | |
local.get $0 | |
call $~lib/rt/tlsf/freeBlock | |
end | |
) | |
(func $~lib/rt/pure/__collect (; 12 ;) (type $FUNCSIG$v) | |
(local $0 i32) | |
(local $1 i32) | |
(local $2 i32) | |
(local $3 i32) | |
(local $4 i32) | |
(local $5 i32) | |
global.get $~lib/rt/pure/ROOTS | |
local.set $0 | |
local.get $0 | |
local.set $1 | |
block $break|0 | |
local.get $1 | |
local.set $2 | |
global.get $~lib/rt/pure/CUR | |
local.set $3 | |
loop $loop|0 | |
local.get $2 | |
local.get $3 | |
i32.lt_u | |
i32.eqz | |
br_if $break|0 | |
local.get $2 | |
i32.load | |
local.set $4 | |
local.get $4 | |
i32.load offset=4 | |
local.set $5 | |
local.get $5 | |
i32.const 1879048192 | |
i32.and | |
i32.const 805306368 | |
i32.eq | |
if (result i32) | |
local.get $5 | |
i32.const 268435455 | |
i32.and | |
i32.const 0 | |
i32.gt_u | |
else | |
i32.const 0 | |
end | |
if | |
local.get $4 | |
call $~lib/rt/pure/markGray | |
local.get $1 | |
local.get $4 | |
i32.store | |
local.get $1 | |
i32.const 4 | |
i32.add | |
local.set $1 | |
else | |
local.get $5 | |
i32.const 1879048192 | |
i32.and | |
i32.const 0 | |
i32.eq | |
if (result i32) | |
local.get $5 | |
i32.const 268435455 | |
i32.and | |
i32.eqz | |
else | |
i32.const 0 | |
end | |
if | |
global.get $~lib/rt/tlsf/ROOT | |
local.get $4 | |
call $~lib/rt/tlsf/freeBlock | |
else | |
local.get $4 | |
local.get $5 | |
i32.const -2147483648 | |
i32.const -1 | |
i32.xor | |
i32.and | |
i32.store offset=4 | |
end | |
end | |
local.get $2 | |
i32.const 4 | |
i32.add | |
local.set $2 | |
br $loop|0 | |
end | |
unreachable | |
end | |
local.get $1 | |
global.set $~lib/rt/pure/CUR | |
block $break|1 | |
local.get $0 | |
local.set $5 | |
loop $loop|1 | |
local.get $5 | |
local.get $1 | |
i32.lt_u | |
i32.eqz | |
br_if $break|1 | |
local.get $5 | |
i32.load | |
call $~lib/rt/pure/scan | |
local.get $5 | |
i32.const 4 | |
i32.add | |
local.set $5 | |
br $loop|1 | |
end | |
unreachable | |
end | |
block $break|2 | |
local.get $0 | |
local.set $5 | |
loop $loop|2 | |
local.get $5 | |
local.get $1 | |
i32.lt_u | |
i32.eqz | |
br_if $break|2 | |
local.get $5 | |
i32.load | |
local.set $4 | |
local.get $4 | |
local.get $4 | |
i32.load offset=4 | |
i32.const -2147483648 | |
i32.const -1 | |
i32.xor | |
i32.and | |
i32.store offset=4 | |
local.get $4 | |
call $~lib/rt/pure/collectWhite | |
local.get $5 | |
i32.const 4 | |
i32.add | |
local.set $5 | |
br $loop|2 | |
end | |
unreachable | |
end | |
local.get $0 | |
global.set $~lib/rt/pure/CUR | |
) | |
(func $~lib/rt/tlsf/growMemory (; 13 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) | |
(local $2 i32) | |
(local $3 i32) | |
(local $4 i32) | |
(local $5 i32) | |
(local $6 i32) | |
(local $7 i32) | |
local.get $1 | |
i32.const 536870904 | |
i32.lt_u | |
if | |
local.get $1 | |
i32.const 1 | |
i32.const 27 | |
local.get $1 | |
i32.clz | |
i32.sub | |
i32.shl | |
i32.const 1 | |
i32.sub | |
i32.add | |
local.set $1 | |
end | |
memory.size | |
local.set $2 | |
local.get $1 | |
i32.const 16 | |
local.get $2 | |
i32.const 16 | |
i32.shl | |
i32.const 16 | |
i32.sub | |
local.get $0 | |
local.set $3 | |
local.get $3 | |
i32.load offset=1568 | |
i32.ne | |
i32.shl | |
i32.add | |
local.set $1 | |
local.get $1 | |
i32.const 65535 | |
i32.add | |
i32.const 65535 | |
i32.const -1 | |
i32.xor | |
i32.and | |
i32.const 16 | |
i32.shr_u | |
local.set $4 | |
local.get $2 | |
local.tee $3 | |
local.get $4 | |
local.tee $5 | |
local.get $3 | |
local.get $5 | |
i32.gt_s | |
select | |
local.set $6 | |
local.get $6 | |
memory.grow | |
i32.const 0 | |
i32.lt_s | |
if | |
local.get $4 | |
memory.grow | |
i32.const 0 | |
i32.lt_s | |
if | |
unreachable | |
end | |
end | |
memory.size | |
local.set $7 | |
local.get $0 | |
local.get $2 | |
i32.const 16 | |
i32.shl | |
local.get $7 | |
i32.const 16 | |
i32.shl | |
call $~lib/rt/tlsf/addMemory | |
drop | |
) | |
(func $~lib/rt/tlsf/prepareBlock (; 14 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) | |
(local $3 i32) | |
(local $4 i32) | |
(local $5 i32) | |
local.get $1 | |
i32.load | |
local.set $3 | |
local.get $2 | |
i32.const 15 | |
i32.and | |
i32.eqz | |
i32.eqz | |
if | |
i32.const 0 | |
i32.const 24 | |
i32.const 365 | |
i32.const 13 | |
call $~lib/builtins/abort | |
unreachable | |
end | |
local.get $3 | |
i32.const 3 | |
i32.const -1 | |
i32.xor | |
i32.and | |
local.get $2 | |
i32.sub | |
local.set $4 | |
local.get $4 | |
i32.const 32 | |
i32.ge_u | |
if | |
local.get $1 | |
local.get $2 | |
local.get $3 | |
i32.const 2 | |
i32.and | |
i32.or | |
i32.store | |
local.get $1 | |
i32.const 16 | |
i32.add | |
local.get $2 | |
i32.add | |
local.set $5 | |
local.get $5 | |
local.get $4 | |
i32.const 16 | |
i32.sub | |
i32.const 1 | |
i32.or | |
i32.store | |
local.get $0 | |
local.get $5 | |
call $~lib/rt/tlsf/insertBlock | |
else | |
local.get $1 | |
local.get $3 | |
i32.const 1 | |
i32.const -1 | |
i32.xor | |
i32.and | |
i32.store | |
local.get $1 | |
local.set $5 | |
local.get $5 | |
i32.const 16 | |
i32.add | |
local.get $5 | |
i32.load | |
i32.const 3 | |
i32.const -1 | |
i32.xor | |
i32.and | |
i32.add | |
local.get $1 | |
local.set $5 | |
local.get $5 | |
i32.const 16 | |
i32.add | |
local.get $5 | |
i32.load | |
i32.const 3 | |
i32.const -1 | |
i32.xor | |
i32.and | |
i32.add | |
i32.load | |
i32.const 2 | |
i32.const -1 | |
i32.xor | |
i32.and | |
i32.store | |
end | |
) | |
(func $~lib/rt/tlsf/allocateBlock (; 15 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) | |
(local $2 i32) | |
(local $3 i32) | |
global.get $~lib/rt/tlsf/collectLock | |
i32.eqz | |
i32.eqz | |
if | |
i32.const 0 | |
i32.const 24 | |
i32.const 486 | |
i32.const 13 | |
call $~lib/builtins/abort | |
unreachable | |
end | |
local.get $1 | |
call $~lib/rt/tlsf/prepareSize | |
local.set $2 | |
local.get $0 | |
local.get $2 | |
call $~lib/rt/tlsf/searchBlock | |
local.set $3 | |
local.get $3 | |
i32.eqz | |
if | |
global.get $~lib/gc/gc.auto | |
if | |
i32.const 1 | |
global.set $~lib/rt/tlsf/collectLock | |
call $~lib/rt/pure/__collect | |
i32.const 0 | |
global.set $~lib/rt/tlsf/collectLock | |
local.get $0 | |
local.get $2 | |
call $~lib/rt/tlsf/searchBlock | |
local.set $3 | |
local.get $3 | |
i32.eqz | |
if | |
local.get $0 | |
local.get $2 | |
call $~lib/rt/tlsf/growMemory | |
local.get $0 | |
local.get $2 | |
call $~lib/rt/tlsf/searchBlock | |
local.set $3 | |
local.get $3 | |
i32.eqz | |
if | |
i32.const 0 | |
i32.const 24 | |
i32.const 498 | |
i32.const 19 | |
call $~lib/builtins/abort | |
unreachable | |
end | |
end | |
else | |
local.get $0 | |
local.get $2 | |
call $~lib/rt/tlsf/growMemory | |
local.get $0 | |
local.get $2 | |
call $~lib/rt/tlsf/searchBlock | |
local.set $3 | |
local.get $3 | |
i32.eqz | |
if | |
i32.const 0 | |
i32.const 24 | |
i32.const 503 | |
i32.const 17 | |
call $~lib/builtins/abort | |
unreachable | |
end | |
end | |
end | |
local.get $3 | |
i32.load | |
i32.const -4 | |
i32.and | |
local.get $2 | |
i32.ge_u | |
i32.eqz | |
if | |
i32.const 0 | |
i32.const 24 | |
i32.const 506 | |
i32.const 13 | |
call $~lib/builtins/abort | |
unreachable | |
end | |
local.get $3 | |
i32.const 0 | |
i32.store offset=4 | |
local.get $3 | |
local.get $1 | |
i32.store offset=12 | |
local.get $0 | |
local.get $3 | |
call $~lib/rt/tlsf/removeBlock | |
local.get $0 | |
local.get $3 | |
local.get $2 | |
call $~lib/rt/tlsf/prepareBlock | |
local.get $3 | |
) | |
(func $~lib/rt/tlsf/__alloc (; 16 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) | |
(local $2 i32) | |
(local $3 i32) | |
global.get $~lib/rt/tlsf/ROOT | |
local.set $2 | |
local.get $2 | |
i32.eqz | |
if | |
call $~lib/rt/tlsf/initializeRoot | |
global.get $~lib/rt/tlsf/ROOT | |
local.set $2 | |
end | |
local.get $2 | |
local.get $0 | |
call $~lib/rt/tlsf/allocateBlock | |
local.set $3 | |
local.get $3 | |
local.get $1 | |
i32.store offset=8 | |
local.get $3 | |
i32.const 16 | |
i32.add | |
) | |
(func $~lib/rt/pure/increment (; 17 ;) (type $FUNCSIG$vi) (param $0 i32) | |
(local $1 i32) | |
local.get $0 | |
i32.load offset=4 | |
local.set $1 | |
local.get $1 | |
i32.const -268435456 | |
i32.and | |
local.get $1 | |
i32.const 1 | |
i32.add | |
i32.const -268435456 | |
i32.and | |
i32.eq | |
i32.eqz | |
if | |
i32.const 0 | |
i32.const 128 | |
i32.const 104 | |
i32.const 2 | |
call $~lib/builtins/abort | |
unreachable | |
end | |
local.get $0 | |
local.get $1 | |
i32.const 1 | |
i32.add | |
i32.store offset=4 | |
local.get $0 | |
i32.load | |
i32.const 1 | |
i32.and | |
i32.eqz | |
i32.eqz | |
if | |
i32.const 0 | |
i32.const 128 | |
i32.const 107 | |
i32.const 13 | |
call $~lib/builtins/abort | |
unreachable | |
end | |
) | |
(func $~lib/rt/pure/__retain (; 18 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) | |
local.get $0 | |
global.get $~lib/heap/__heap_base | |
i32.gt_u | |
if | |
local.get $0 | |
i32.const 16 | |
i32.sub | |
call $~lib/rt/pure/increment | |
end | |
local.get $0 | |
) | |
(func $~lib/rt/__typeinfo (; 19 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) | |
(local $1 i32) | |
global.get $~lib/rt/__rtti_base | |
local.set $1 | |
local.get $0 | |
local.get $1 | |
i32.load | |
i32.gt_u | |
if | |
i32.const 176 | |
i32.const 232 | |
i32.const 22 | |
i32.const 27 | |
call $~lib/builtins/abort | |
unreachable | |
end | |
local.get $1 | |
i32.const 4 | |
i32.add | |
local.get $0 | |
i32.const 8 | |
i32.mul | |
i32.add | |
i32.load | |
) | |
(func $~lib/util/memory/memcpy (; 20 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) | |
(local $3 i32) | |
(local $4 i32) | |
(local $5 i32) | |
block $break|0 | |
loop $continue|0 | |
local.get $2 | |
if (result i32) | |
local.get $1 | |
i32.const 3 | |
i32.and | |
else | |
i32.const 0 | |
end | |
i32.eqz | |
br_if $break|0 | |
local.get $0 | |
local.tee $5 | |
i32.const 1 | |
i32.add | |
local.set $0 | |
local.get $5 | |
local.get $1 | |
local.tee $5 | |
i32.const 1 | |
i32.add | |
local.set $1 | |
local.get $5 | |
i32.load8_u | |
i32.store8 | |
local.get $2 | |
i32.const 1 | |
i32.sub | |
local.set $2 | |
br $continue|0 | |
end | |
unreachable | |
end | |
local.get $0 | |
i32.const 3 | |
i32.and | |
i32.const 0 | |
i32.eq | |
if | |
block $break|1 | |
loop $continue|1 | |
local.get $2 | |
i32.const 16 | |
i32.ge_u | |
i32.eqz | |
br_if $break|1 | |
local.get $0 | |
local.get $1 | |
i32.load | |
i32.store | |
local.get $0 | |
i32.const 4 | |
i32.add | |
local.get $1 | |
i32.const 4 | |
i32.add | |
i32.load | |
i32.store | |
local.get $0 | |
i32.const 8 | |
i32.add | |
local.get $1 | |
i32.const 8 | |
i32.add | |
i32.load | |
i32.store | |
local.get $0 | |
i32.const 12 | |
i32.add | |
local.get $1 | |
i32.const 12 | |
i32.add | |
i32.load | |
i32.store | |
local.get $1 | |
i32.const 16 | |
i32.add | |
local.set $1 | |
local.get $0 | |
i32.const 16 | |
i32.add | |
local.set $0 | |
local.get $2 | |
i32.const 16 | |
i32.sub | |
local.set $2 | |
br $continue|1 | |
end | |
unreachable | |
end | |
local.get $2 | |
i32.const 8 | |
i32.and | |
if | |
local.get $0 | |
local.get $1 | |
i32.load | |
i32.store | |
local.get $0 | |
i32.const 4 | |
i32.add | |
local.get $1 | |
i32.const 4 | |
i32.add | |
i32.load | |
i32.store | |
local.get $0 | |
i32.const 8 | |
i32.add | |
local.set $0 | |
local.get $1 | |
i32.const 8 | |
i32.add | |
local.set $1 | |
end | |
local.get $2 | |
i32.const 4 | |
i32.and | |
if | |
local.get $0 | |
local.get $1 | |
i32.load | |
i32.store | |
local.get $0 | |
i32.const 4 | |
i32.add | |
local.set $0 | |
local.get $1 | |
i32.const 4 | |
i32.add | |
local.set $1 | |
end | |
local.get $2 | |
i32.const 2 | |
i32.and | |
if | |
local.get $0 | |
local.get $1 | |
i32.load16_u | |
i32.store16 | |
local.get $0 | |
i32.const 2 | |
i32.add | |
local.set $0 | |
local.get $1 | |
i32.const 2 | |
i32.add | |
local.set $1 | |
end | |
local.get $2 | |
i32.const 1 | |
i32.and | |
if | |
local.get $0 | |
local.tee $5 | |
i32.const 1 | |
i32.add | |
local.set $0 | |
local.get $5 | |
local.get $1 | |
local.tee $5 | |
i32.const 1 | |
i32.add | |
local.set $1 | |
local.get $5 | |
i32.load8_u | |
i32.store8 | |
end | |
return | |
end | |
local.get $2 | |
i32.const 32 | |
i32.ge_u | |
if | |
block $break|2 | |
block $case2|2 | |
block $case1|2 | |
block $case0|2 | |
local.get $0 | |
i32.const 3 | |
i32.and | |
local.set $5 | |
local.get $5 | |
i32.const 1 | |
i32.eq | |
br_if $case0|2 | |
local.get $5 | |
i32.const 2 | |
i32.eq | |
br_if $case1|2 | |
local.get $5 | |
i32.const 3 | |
i32.eq | |
br_if $case2|2 | |
br $break|2 | |
end | |
local.get $1 | |
i32.load | |
local.set $3 | |
local.get $0 | |
local.tee $5 | |
i32.const 1 | |
i32.add | |
local.set $0 | |
local.get $5 | |
local.get $1 | |
local.tee $5 | |
i32.const 1 | |
i32.add | |
local.set $1 | |
local.get $5 | |
i32.load8_u | |
i32.store8 | |
local.get $0 | |
local.tee $5 | |
i32.const 1 | |
i32.add | |
local.set $0 | |
local.get $5 | |
local.get $1 | |
local.tee $5 | |
i32.const 1 | |
i32.add | |
local.set $1 | |
local.get $5 | |
i32.load8_u | |
i32.store8 | |
local.get $0 | |
local.tee $5 | |
i32.const 1 | |
i32.add | |
local.set $0 | |
local.get $5 | |
local.get $1 | |
local.tee $5 | |
i32.const 1 | |
i32.add | |
local.set $1 | |
local.get $5 | |
i32.load8_u | |
i32.store8 | |
local.get $2 | |
i32.const 3 | |
i32.sub | |
local.set $2 | |
block $break|3 | |
loop $continue|3 | |
local.get $2 | |
i32.const 17 | |
i32.ge_u | |
i32.eqz | |
br_if $break|3 | |
local.get $1 | |
i32.const 1 | |
i32.add | |
i32.load | |
local.set $4 | |
local.get $0 | |
local.get $3 | |
i32.const 24 | |
i32.shr_u | |
local.get $4 | |
i32.const 8 | |
i32.shl | |
i32.or | |
i32.store | |
local.get $1 | |
i32.const 5 | |
i32.add | |
i32.load | |
local.set $3 | |
local.get $0 | |
i32.const 4 | |
i32.add | |
local.get $4 | |
i32.const 24 | |
i32.shr_u | |
local.get $3 | |
i32.const 8 | |
i32.shl | |
i32.or | |
i32.store | |
local.get $1 | |
i32.const 9 | |
i32.add | |
i32.load | |
local.set $4 | |
local.get $0 | |
i32.const 8 | |
i32.add | |
local.get $3 | |
i32.const 24 | |
i32.shr_u | |
local.get $4 | |
i32.const 8 | |
i32.shl | |
i32.or | |
i32.store | |
local.get $1 | |
i32.const 13 | |
i32.add | |
i32.load | |
local.set $3 | |
local.get $0 | |
i32.const 12 | |
i32.add | |
local.get $4 | |
i32.const 24 | |
i32.shr_u | |
local.get $3 | |
i32.const 8 | |
i32.shl | |
i32.or | |
i32.store | |
local.get $1 | |
i32.const 16 | |
i32.add | |
local.set $1 | |
local.get $0 | |
i32.const 16 | |
i32.add | |
local.set $0 | |
local.get $2 | |
i32.const 16 | |
i32.sub | |
local.set $2 | |
br $continue|3 | |
end | |
unreachable | |
end | |
br $break|2 | |
end | |
local.get $1 | |
i32.load | |
local.set $3 | |
local.get $0 | |
local.tee $5 | |
i32.const 1 | |
i32.add | |
local.set $0 | |
local.get $5 | |
local.get $1 | |
local.tee $5 | |
i32.const 1 | |
i32.add | |
local.set $1 | |
local.get $5 | |
i32.load8_u | |
i32.store8 | |
local.get $0 | |
local.tee $5 | |
i32.const 1 | |
i32.add | |
local.set $0 | |
local.get $5 | |
local.get $1 | |
local.tee $5 | |
i32.const 1 | |
i32.add | |
local.set $1 | |
local.get $5 | |
i32.load8_u | |
i32.store8 | |
local.get $2 | |
i32.const 2 | |
i32.sub | |
local.set $2 | |
block $break|4 | |
loop $continue|4 | |
local.get $2 | |
i32.const 18 | |
i32.ge_u | |
i32.eqz | |
br_if $break|4 | |
local.get $1 | |
i32.const 2 | |
i32.add | |
i32.load | |
local.set $4 | |
local.get $0 | |
local.get $3 | |
i32.const 16 | |
i32.shr_u | |
local.get $4 | |
i32.const 16 | |
i32.shl | |
i32.or | |
i32.store | |
local.get $1 | |
i32.const 6 | |
i32.add | |
i32.load | |
local.set $3 | |
local.get $0 | |
i32.const 4 | |
i32.add | |
local.get $4 | |
i32.const 16 | |
i32.shr_u | |
local.get $3 | |
i32.const 16 | |
i32.shl | |
i32.or | |
i32.store | |
local.get $1 | |
i32.const 10 | |
i32.add | |
i32.load | |
local.set $4 | |
local.get $0 | |
i32.const 8 | |
i32.add | |
local.get $3 | |
i32.const 16 | |
i32.shr_u | |
local.get $4 | |
i32.const 16 | |
i32.shl | |
i32.or | |
i32.store | |
local.get $1 | |
i32.const 14 | |
i32.add | |
i32.load | |
local.set $3 | |
local.get $0 | |
i32.const 12 | |
i32.add | |
local.get $4 | |
i32.const 16 | |
i32.shr_u | |
local.get $3 | |
i32.const 16 | |
i32.shl | |
i32.or | |
i32.store | |
local.get $1 | |
i32.const 16 | |
i32.add | |
local.set $1 | |
local.get $0 | |
i32.const 16 | |
i32.add | |
local.set $0 | |
local.get $2 | |
i32.const 16 | |
i32.sub | |
local.set $2 | |
br $continue|4 | |
end | |
unreachable | |
end | |
br $break|2 | |
end | |
local.get $1 | |
i32.load | |
local.set $3 | |
local.get $0 | |
local.tee $5 | |
i32.const 1 | |
i32.add | |
local.set $0 | |
local.get $5 | |
local.get $1 | |
local.tee $5 | |
i32.const 1 | |
i32.add | |
local.set $1 | |
local.get $5 | |
i32.load8_u | |
i32.store8 | |
local.get $2 | |
i32.const 1 | |
i32.sub | |
local.set $2 | |
block $break|5 | |
loop $continue|5 | |
local.get $2 | |
i32.const 19 | |
i32.ge_u | |
i32.eqz | |
br_if $break|5 | |
local.get $1 | |
i32.const 3 | |
i32.add | |
i32.load | |
local.set $4 | |
local.get $0 | |
local.get $3 | |
i32.const 8 | |
i32.shr_u | |
local.get $4 | |
i32.const 24 | |
i32.shl | |
i32.or | |
i32.store | |
local.get $1 | |
i32.const 7 | |
i32.add | |
i32.load | |
local.set $3 | |
local.get $0 | |
i32.const 4 | |
i32.add | |
local.get $4 | |
i32.const 8 | |
i32.shr_u | |
local.get $3 | |
i32.const 24 | |
i32.shl | |
i32.or | |
i32.store | |
local.get $1 | |
i32.const 11 | |
i32.add | |
i32.load | |
local.set $4 | |
local.get $0 | |
i32.const 8 | |
i32.add | |
local.get $3 | |
i32.const 8 | |
i32.shr_u | |
local.get $4 | |
i32.const 24 | |
i32.shl | |
i32.or | |
i32.store | |
local.get $1 | |
i32.const 15 | |
i32.add | |
i32.load | |
local.set $3 | |
local.get $0 | |
i32.const 12 | |
i32.add | |
local.get $4 | |
i32.const 8 | |
i32.shr_u | |
local.get $3 | |
i32.const 24 | |
i32.shl | |
i32.or | |
i32.store | |
local.get $1 | |
i32.const 16 | |
i32.add | |
local.set $1 | |
local.get $0 | |
i32.const 16 | |
i32.add | |
local.set $0 | |
local.get $2 | |
i32.const 16 | |
i32.sub | |
local.set $2 | |
br $continue|5 | |
end | |
unreachable | |
end | |
br $break|2 | |
end | |
end | |
local.get $2 | |
i32.const 16 | |
i32.and | |
if | |
local.get $0 | |
local.tee $5 | |
i32.const 1 | |
i32.add | |
local.set $0 | |
local.get $5 | |
local.get $1 | |
local.tee $5 | |
i32.const 1 | |
i32.add | |
local.set $1 | |
local.get $5 | |
i32.load8_u | |
i32.store8 | |
local.get $0 | |
local.tee $5 | |
i32.const 1 | |
i32.add | |
local.set $0 | |
local.get $5 | |
local.get $1 | |
local.tee $5 | |
i32.const 1 | |
i32.add | |
local.set $1 | |
local.get $5 | |
i32.load8_u | |
i32.store8 | |
local.get $0 | |
local.tee $5 | |
i32.const 1 | |
i32.add | |
local.set $0 | |
local.get $5 | |
local.get $1 | |
local.tee $5 | |
i32.const 1 | |
i32.add | |
local.set $1 | |
local.get $5 | |
i32.load8_u | |
i32.store8 | |
local.get $0 | |
local.tee $5 | |
i32.const 1 | |
i32.add | |
local.set $0 | |
local.get $5 | |
local.get $1 | |
local.tee $5 | |
i32.const 1 | |
i32.add | |
local.set $1 | |
local.get $5 | |
i32.load8_u | |
i32.store8 | |
local.get $0 | |
local.tee $5 | |
i32.const 1 | |
i32.add | |
local.set $0 | |
local.get $5 | |
local.get $1 | |
local.tee $5 | |
i32.const 1 | |
i32.add | |
local.set $1 | |
local.get $5 | |
i32.load8_u | |
i32.store8 | |
local.get $0 | |
local.tee $5 | |
i32.const 1 | |
i32.add | |
local.set $0 | |
local.get $5 | |
local.get $1 | |
local.tee $5 | |
i32.const 1 | |
i32.add | |
local.set $1 | |
local.get $5 | |
i32.load8_u | |
i32.store8 | |
local.get $0 | |
local.tee $5 | |
i32.const 1 | |
i32.add | |
local.set $0 | |
local.get $5 | |
local.get $1 | |
local.tee $5 | |
i32.const 1 | |
i32.add | |
local.set $1 | |
local.get $5 | |
i32.load8_u | |
i32.store8 | |
local.get $0 | |
local.tee $5 | |
i32.const 1 | |
i32.add | |
local.set $0 | |
local.get $5 | |
local.get $1 | |
local.tee $5 | |
i32.const 1 | |
i32.add | |
local.set $1 | |
local.get $5 | |
i32.load8_u | |
i32.store8 | |
local.get $0 | |
local.tee $5 | |
i32.const 1 | |
i32.add | |
local.set $0 | |
local.get $5 | |
local.get $1 | |
local.tee $5 | |
i32.const 1 | |
i32.add | |
local.set $1 | |
local.get $5 | |
i32.load8_u | |
i32.store8 | |
local.get $0 | |
local.tee $5 | |
i32.const 1 | |
i32.add | |
local.set $0 | |
local.get $5 | |
local.get $1 | |
local.tee $5 | |
i32.const 1 | |
i32.add | |
local.set $1 | |
local.get $5 | |
i32.load8_u | |
i32.store8 | |
local.get $0 | |
local.tee $5 | |
i32.const 1 | |
i32.add | |
local.set $0 | |
local.get $5 | |
local.get $1 | |
local.tee $5 | |
i32.const 1 | |
i32.add | |
local.set $1 | |
local.get $5 | |
i32.load8_u | |
i32.store8 | |
local.get $0 | |
local.tee $5 | |
i32.const 1 | |
i32.add | |
local.set $0 | |
local.get $5 | |
local.get $1 | |
local.tee $5 | |
i32.const 1 | |
i32.add | |
local.set $1 | |
local.get $5 | |
i32.load8_u | |
i32.store8 | |
local.get $0 | |
local.tee $5 | |
i32.const 1 | |
i32.add | |
local.set $0 | |
local.get $5 | |
local.get $1 | |
local.tee $5 | |
i32.const 1 | |
i32.add | |
local.set $1 | |
local.get $5 | |
i32.load8_u | |
i32.store8 | |
local.get $0 | |
local.tee $5 | |
i32.const 1 | |
i32.add | |
local.set $0 | |
local.get $5 | |
local.get $1 | |
local.tee $5 | |
i32.const 1 | |
i32.add | |
local.set $1 | |
local.get $5 | |
i32.load8_u | |
i32.store8 | |
local.get $0 | |
local.tee $5 | |
i32.const 1 | |
i32.add | |
local.set $0 | |
local.get $5 | |
local.get $1 | |
local.tee $5 | |
i32.const 1 | |
i32.add | |
local.set $1 | |
local.get $5 | |
i32.load8_u | |
i32.store8 | |
local.get $0 | |
local.tee $5 | |
i32.const 1 | |
i32.add | |
local.set $0 | |
local.get $5 | |
local.get $1 | |
local.tee $5 | |
i32.const 1 | |
i32.add | |
local.set $1 | |
local.get $5 | |
i32.load8_u | |
i32.store8 | |
end | |
local.get $2 | |
i32.const 8 | |
i32.and | |
if | |
local.get $0 | |
local.tee $5 | |
i32.const 1 | |
i32.add | |
local.set $0 | |
local.get $5 | |
local.get $1 | |
local.tee $5 | |
i32.const 1 | |
i32.add | |
local.set $1 | |
local.get $5 | |
i32.load8_u | |
i32.store8 | |
local.get $0 | |
local.tee $5 | |
i32.const 1 | |
i32.add | |
local.set $0 | |
local.get $5 | |
local.get $1 | |
local.tee $5 | |
i32.const 1 | |
i32.add | |
local.set $1 | |
local.get $5 | |
i32.load8_u | |
i32.store8 | |
local.get $0 | |
local.tee $5 | |
i32.const 1 | |
i32.add | |
local.set $0 | |
local.get $5 | |
local.get $1 | |
local.tee $5 | |
i32.const 1 | |
i32.add | |
local.set $1 | |
local.get $5 | |
i32.load8_u | |
i32.store8 | |
local.get $0 | |
local.tee $5 | |
i32.const 1 | |
i32.add | |
local.set $0 | |
local.get $5 | |
local.get $1 | |
local.tee $5 | |
i32.const 1 | |
i32.add | |
local.set $1 | |
local.get $5 | |
i32.load8_u | |
i32.store8 | |
local.get $0 | |
local.tee $5 | |
i32.const 1 | |
i32.add | |
local.set $0 | |
local.get $5 | |
local.get $1 | |
local.tee $5 | |
i32.const 1 | |
i32.add | |
local.set $1 | |
local.get $5 | |
i32.load8_u | |
i32.store8 | |
local.get $0 | |
local.tee $5 | |
i32.const 1 | |
i32.add | |
local.set $0 | |
local.get $5 | |
local.get $1 | |
local.tee $5 | |
i32.const 1 | |
i32.add | |
local.set $1 | |
local.get $5 | |
i32.load8_u | |
i32.store8 | |
local.get $0 | |
local.tee $5 | |
i32.const 1 | |
i32.add | |
local.set $0 | |
local.get $5 | |
local.get $1 | |
local.tee $5 | |
i32.const 1 | |
i32.add | |
local.set $1 | |
local.get $5 | |
i32.load8_u | |
i32.store8 | |
local.get $0 | |
local.tee $5 | |
i32.const 1 | |
i32.add | |
local.set $0 | |
local.get $5 | |
local.get $1 | |
local.tee $5 | |
i32.const 1 | |
i32.add | |
local.set $1 | |
local.get $5 | |
i32.load8_u | |
i32.store8 | |
end | |
local.get $2 | |
i32.const 4 | |
i32.and | |
if | |
local.get $0 | |
local.tee $5 | |
i32.const 1 | |
i32.add | |
local.set $0 | |
local.get $5 | |
local.get $1 | |
local.tee $5 | |
i32.const 1 | |
i32.add | |
local.set $1 | |
local.get $5 | |
i32.load8_u | |
i32.store8 | |
local.get $0 | |
local.tee $5 | |
i32.const 1 | |
i32.add | |
local.set $0 | |
local.get $5 | |
local.get $1 | |
local.tee $5 | |
i32.const 1 | |
i32.add | |
local.set $1 | |
local.get $5 | |
i32.load8_u | |
i32.store8 | |
local.get $0 | |
local.tee $5 | |
i32.const 1 | |
i32.add | |
local.set $0 | |
local.get $5 | |
local.get $1 | |
local.tee $5 | |
i32.const 1 | |
i32.add | |
local.set $1 | |
local.get $5 | |
i32.load8_u | |
i32.store8 | |
local.get $0 | |
local.tee $5 | |
i32.const 1 | |
i32.add | |
local.set $0 | |
local.get $5 | |
local.get $1 | |
local.tee $5 | |
i32.const 1 | |
i32.add | |
local.set $1 | |
local.get $5 | |
i32.load8_u | |
i32.store8 | |
end | |
local.get $2 | |
i32.const 2 | |
i32.and | |
if | |
local.get $0 | |
local.tee $5 | |
i32.const 1 | |
i32.add | |
local.set $0 | |
local.get $5 | |
local.get $1 | |
local.tee $5 | |
i32.const 1 | |
i32.add | |
local.set $1 | |
local.get $5 | |
i32.load8_u | |
i32.store8 | |
local.get $0 | |
local.tee $5 | |
i32.const 1 | |
i32.add | |
local.set $0 | |
local.get $5 | |
local.get $1 | |
local.tee $5 | |
i32.const 1 | |
i32.add | |
local.set $1 | |
local.get $5 | |
i32.load8_u | |
i32.store8 | |
end | |
local.get $2 | |
i32.const 1 | |
i32.and | |
if | |
local.get $0 | |
local.tee $5 | |
i32.const 1 | |
i32.add | |
local.set $0 | |
local.get $5 | |
local.get $1 | |
local.tee $5 | |
i32.const 1 | |
i32.add | |
local.set $1 | |
local.get $5 | |
i32.load8_u | |
i32.store8 | |
end | |
) | |
(func $~lib/memory/memory.copy (; 21 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) | |
(local $3 i32) | |
(local $4 i32) | |
(local $5 i32) | |
(local $6 i32) | |
block $~lib/util/memory/memmove|inlined.0 | |
local.get $0 | |
local.set $5 | |
local.get $1 | |
local.set $4 | |
local.get $2 | |
local.set $3 | |
local.get $5 | |
local.get $4 | |
i32.eq | |
if | |
br $~lib/util/memory/memmove|inlined.0 | |
end | |
local.get $4 | |
local.get $3 | |
i32.add | |
local.get $5 | |
i32.le_u | |
if (result i32) | |
i32.const 1 | |
else | |
local.get $5 | |
local.get $3 | |
i32.add | |
local.get $4 | |
i32.le_u | |
end | |
if | |
local.get $5 | |
local.get $4 | |
local.get $3 | |
call $~lib/util/memory/memcpy | |
br $~lib/util/memory/memmove|inlined.0 | |
end | |
local.get $5 | |
local.get $4 | |
i32.lt_u | |
if | |
local.get $4 | |
i32.const 7 | |
i32.and | |
local.get $5 | |
i32.const 7 | |
i32.and | |
i32.eq | |
if | |
block $break|0 | |
loop $continue|0 | |
local.get $5 | |
i32.const 7 | |
i32.and | |
i32.eqz | |
br_if $break|0 | |
local.get $3 | |
i32.eqz | |
if | |
br $~lib/util/memory/memmove|inlined.0 | |
end | |
local.get $3 | |
i32.const 1 | |
i32.sub | |
local.set $3 | |
local.get $5 | |
local.tee $6 | |
i32.const 1 | |
i32.add | |
local.set $5 | |
local.get $6 | |
local.get $4 | |
local.tee $6 | |
i32.const 1 | |
i32.add | |
local.set $4 | |
local.get $6 | |
i32.load8_u | |
i32.store8 | |
br $continue|0 | |
end | |
unreachable | |
end | |
block $break|1 | |
loop $continue|1 | |
local.get $3 | |
i32.const 8 | |
i32.ge_u | |
i32.eqz | |
br_if $break|1 | |
local.get $5 | |
local.get $4 | |
i64.load | |
i64.store | |
local.get $3 | |
i32.const 8 | |
i32.sub | |
local.set $3 | |
local.get $5 | |
i32.const 8 | |
i32.add | |
local.set $5 | |
local.get $4 | |
i32.const 8 | |
i32.add | |
local.set $4 | |
br $continue|1 | |
end | |
unreachable | |
end | |
end | |
block $break|2 | |
loop $continue|2 | |
local.get $3 | |
i32.eqz | |
br_if $break|2 | |
local.get $5 | |
local.tee $6 | |
i32.const 1 | |
i32.add | |
local.set $5 | |
local.get $6 | |
local.get $4 | |
local.tee $6 | |
i32.const 1 | |
i32.add | |
local.set $4 | |
local.get $6 | |
i32.load8_u | |
i32.store8 | |
local.get $3 | |
i32.const 1 | |
i32.sub | |
local.set $3 | |
br $continue|2 | |
end | |
unreachable | |
end | |
else | |
local.get $4 | |
i32.const 7 | |
i32.and | |
local.get $5 | |
i32.const 7 | |
i32.and | |
i32.eq | |
if | |
block $break|3 | |
loop $continue|3 | |
local.get $5 | |
local.get $3 | |
i32.add | |
i32.const 7 | |
i32.and | |
i32.eqz | |
br_if $break|3 | |
local.get $3 | |
i32.eqz | |
if | |
br $~lib/util/memory/memmove|inlined.0 | |
end | |
local.get $5 | |
local.get $3 | |
i32.const 1 | |
i32.sub | |
local.tee $3 | |
i32.add | |
local.get $4 | |
local.get $3 | |
i32.add | |
i32.load8_u | |
i32.store8 | |
br $continue|3 | |
end | |
unreachable | |
end | |
block $break|4 | |
loop $continue|4 | |
local.get $3 | |
i32.const 8 | |
i32.ge_u | |
i32.eqz | |
br_if $break|4 | |
local.get $3 | |
i32.const 8 | |
i32.sub | |
local.set $3 | |
local.get $5 | |
local.get $3 | |
i32.add | |
local.get $4 | |
local.get $3 | |
i32.add | |
i64.load | |
i64.store | |
br $continue|4 | |
end | |
unreachable | |
end | |
end | |
block $break|5 | |
loop $continue|5 | |
local.get $3 | |
i32.eqz | |
br_if $break|5 | |
local.get $5 | |
local.get $3 | |
i32.const 1 | |
i32.sub | |
local.tee $3 | |
i32.add | |
local.get $4 | |
local.get $3 | |
i32.add | |
i32.load8_u | |
i32.store8 | |
br $continue|5 | |
end | |
unreachable | |
end | |
end | |
end | |
) | |
(func $~lib/rt/tlsf/__free (; 22 ;) (type $FUNCSIG$vi) (param $0 i32) | |
global.get $~lib/rt/tlsf/ROOT | |
i32.eqz | |
if | |
i32.const 0 | |
i32.const 24 | |
i32.const 593 | |
i32.const 13 | |
call $~lib/builtins/abort | |
unreachable | |
end | |
local.get $0 | |
i32.const 0 | |
i32.ne | |
if (result i32) | |
local.get $0 | |
i32.const 15 | |
i32.and | |
i32.eqz | |
else | |
i32.const 0 | |
end | |
i32.eqz | |
if | |
i32.const 0 | |
i32.const 24 | |
i32.const 594 | |
i32.const 2 | |
call $~lib/builtins/abort | |
unreachable | |
end | |
global.get $~lib/rt/tlsf/ROOT | |
local.get $0 | |
i32.const 16 | |
i32.sub | |
call $~lib/rt/tlsf/freeBlock | |
) | |
(func $~lib/rt/pure/growRoots (; 23 ;) (type $FUNCSIG$v) | |
(local $0 i32) | |
(local $1 i32) | |
(local $2 i32) | |
(local $3 i32) | |
(local $4 i32) | |
(local $5 i32) | |
global.get $~lib/rt/pure/ROOTS | |
local.set $0 | |
global.get $~lib/rt/pure/CUR | |
local.get $0 | |
i32.sub | |
local.set $1 | |
local.get $1 | |
i32.const 2 | |
i32.mul | |
local.tee $2 | |
i32.const 64 | |
i32.const 2 | |
i32.shl | |
local.tee $3 | |
local.get $2 | |
local.get $3 | |
i32.gt_u | |
select | |
local.set $4 | |
local.get $4 | |
i32.const 0 | |
call $~lib/rt/tlsf/__alloc | |
local.set $5 | |
local.get $5 | |
local.get $0 | |
local.get $1 | |
call $~lib/memory/memory.copy | |
local.get $0 | |
if | |
local.get $0 | |
call $~lib/rt/tlsf/__free | |
end | |
local.get $5 | |
global.set $~lib/rt/pure/ROOTS | |
local.get $5 | |
local.get $1 | |
i32.add | |
global.set $~lib/rt/pure/CUR | |
local.get $5 | |
local.get $4 | |
i32.add | |
global.set $~lib/rt/pure/END | |
) | |
(func $~lib/rt/pure/appendRoot (; 24 ;) (type $FUNCSIG$vi) (param $0 i32) | |
(local $1 i32) | |
global.get $~lib/rt/pure/CUR | |
local.set $1 | |
local.get $1 | |
global.get $~lib/rt/pure/END | |
i32.ge_u | |
if | |
call $~lib/rt/pure/growRoots | |
global.get $~lib/rt/pure/CUR | |
local.set $1 | |
end | |
local.get $1 | |
local.get $0 | |
i32.store | |
local.get $1 | |
i32.const 4 | |
i32.add | |
global.set $~lib/rt/pure/CUR | |
) | |
(func $~lib/rt/pure/decrement (; 25 ;) (type $FUNCSIG$vi) (param $0 i32) | |
(local $1 i32) | |
(local $2 i32) | |
local.get $0 | |
i32.load offset=4 | |
local.set $1 | |
local.get $1 | |
i32.const 268435455 | |
i32.and | |
local.set $2 | |
local.get $0 | |
i32.load | |
i32.const 1 | |
i32.and | |
i32.eqz | |
i32.eqz | |
if | |
i32.const 0 | |
i32.const 128 | |
i32.const 115 | |
i32.const 13 | |
call $~lib/builtins/abort | |
unreachable | |
end | |
local.get $2 | |
i32.const 1 | |
i32.eq | |
if | |
local.get $0 | |
i32.const 16 | |
i32.add | |
i32.const 1 | |
call $~lib/rt/__visit_members | |
local.get $1 | |
i32.const -2147483648 | |
i32.and | |
i32.eqz | |
if | |
global.get $~lib/rt/tlsf/ROOT | |
local.get $0 | |
call $~lib/rt/tlsf/freeBlock | |
else | |
local.get $0 | |
i32.const -2147483648 | |
i32.const 0 | |
i32.or | |
i32.const 0 | |
i32.or | |
i32.store offset=4 | |
end | |
else | |
local.get $2 | |
i32.const 0 | |
i32.gt_u | |
i32.eqz | |
if | |
i32.const 0 | |
i32.const 128 | |
i32.const 124 | |
i32.const 15 | |
call $~lib/builtins/abort | |
unreachable | |
end | |
local.get $0 | |
i32.load offset=8 | |
call $~lib/rt/__typeinfo | |
i32.const 16 | |
i32.and | |
i32.eqz | |
if | |
local.get $0 | |
i32.const -2147483648 | |
i32.const 805306368 | |
i32.or | |
local.get $2 | |
i32.const 1 | |
i32.sub | |
i32.or | |
i32.store offset=4 | |
local.get $1 | |
i32.const -2147483648 | |
i32.and | |
i32.eqz | |
if | |
local.get $0 | |
call $~lib/rt/pure/appendRoot | |
end | |
else | |
local.get $0 | |
local.get $1 | |
i32.const 268435455 | |
i32.const -1 | |
i32.xor | |
i32.and | |
local.get $2 | |
i32.const 1 | |
i32.sub | |
i32.or | |
i32.store offset=4 | |
end | |
end | |
) | |
(func $~lib/rt/pure/__release (; 26 ;) (type $FUNCSIG$vi) (param $0 i32) | |
local.get $0 | |
global.get $~lib/heap/__heap_base | |
i32.gt_u | |
if | |
local.get $0 | |
i32.const 16 | |
i32.sub | |
call $~lib/rt/pure/decrement | |
end | |
) | |
(func $~lib/rt/__allocArray (; 27 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) | |
(local $4 i32) | |
(local $5 i32) | |
(local $6 i32) | |
i32.const 16 | |
local.get $2 | |
call $~lib/rt/tlsf/__alloc | |
local.set $4 | |
local.get $0 | |
local.get $1 | |
i32.shl | |
local.set $5 | |
local.get $5 | |
i32.const 0 | |
call $~lib/rt/tlsf/__alloc | |
local.set $6 | |
local.get $4 | |
local.get $6 | |
call $~lib/rt/pure/__retain | |
i32.store | |
local.get $4 | |
local.get $6 | |
i32.store offset=4 | |
local.get $4 | |
local.get $5 | |
i32.store offset=8 | |
local.get $4 | |
local.get $0 | |
i32.store offset=12 | |
local.get $3 | |
if | |
local.get $6 | |
local.get $3 | |
local.get $5 | |
call $~lib/memory/memory.copy | |
end | |
local.get $4 | |
) | |
(func $index/Struct#constructor (; 28 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) | |
local.get $0 | |
i32.eqz | |
if | |
i32.const 4 | |
i32.const 3 | |
call $~lib/rt/tlsf/__alloc | |
call $~lib/rt/pure/__retain | |
local.set $0 | |
end | |
local.get $0 | |
i32.const 0 | |
i32.store | |
local.get $0 | |
) | |
(func $~lib/rt/tlsf/reallocateBlock (; 29 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) | |
(local $3 i32) | |
(local $4 i32) | |
(local $5 i32) | |
(local $6 i32) | |
(local $7 i32) | |
(local $8 i32) | |
local.get $2 | |
call $~lib/rt/tlsf/prepareSize | |
local.set $3 | |
local.get $1 | |
i32.load | |
local.set $4 | |
local.get $4 | |
i32.const 1 | |
i32.and | |
i32.eqz | |
if (result i32) | |
local.get $1 | |
i32.load offset=4 | |
i32.const -268435456 | |
i32.and | |
i32.eqz | |
else | |
i32.const 0 | |
end | |
i32.eqz | |
if | |
i32.const 0 | |
i32.const 24 | |
i32.const 521 | |
i32.const 4 | |
call $~lib/builtins/abort | |
unreachable | |
end | |
local.get $3 | |
local.get $4 | |
i32.const -4 | |
i32.and | |
i32.le_u | |
if | |
local.get $0 | |
local.get $1 | |
local.get $3 | |
call $~lib/rt/tlsf/prepareBlock | |
local.get $1 | |
local.get $2 | |
i32.store offset=12 | |
local.get $1 | |
return | |
end | |
local.get $1 | |
local.set $5 | |
local.get $5 | |
i32.const 16 | |
i32.add | |
local.get $5 | |
i32.load | |
i32.const 3 | |
i32.const -1 | |
i32.xor | |
i32.and | |
i32.add | |
local.set $6 | |
local.get $6 | |
i32.load | |
local.set $7 | |
local.get $7 | |
i32.const 1 | |
i32.and | |
if | |
local.get $4 | |
i32.const 3 | |
i32.const -1 | |
i32.xor | |
i32.and | |
i32.const 16 | |
i32.add | |
local.get $7 | |
i32.const 3 | |
i32.const -1 | |
i32.xor | |
i32.and | |
i32.add | |
local.set $5 | |
local.get $5 | |
local.get $3 | |
i32.ge_u | |
if | |
local.get $0 | |
local.get $6 | |
call $~lib/rt/tlsf/removeBlock | |
local.get $1 | |
local.get $4 | |
i32.const 3 | |
i32.and | |
local.get $5 | |
i32.or | |
i32.store | |
local.get $1 | |
local.get $2 | |
i32.store offset=12 | |
local.get $0 | |
local.get $1 | |
local.get $3 | |
call $~lib/rt/tlsf/prepareBlock | |
local.get $1 | |
return | |
end | |
end | |
local.get $0 | |
local.get $2 | |
call $~lib/rt/tlsf/allocateBlock | |
local.set $8 | |
local.get $8 | |
local.get $1 | |
i32.load offset=8 | |
i32.store offset=8 | |
local.get $8 | |
i32.const 16 | |
i32.add | |
local.get $1 | |
i32.const 16 | |
i32.add | |
local.get $2 | |
call $~lib/memory/memory.copy | |
local.get $1 | |
local.get $4 | |
i32.const 1 | |
i32.or | |
i32.store | |
local.get $0 | |
local.get $1 | |
call $~lib/rt/tlsf/insertBlock | |
local.get $8 | |
) | |
(func $~lib/rt/tlsf/__realloc (; 30 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) | |
global.get $~lib/rt/tlsf/ROOT | |
i32.eqz | |
if | |
i32.const 0 | |
i32.const 24 | |
i32.const 585 | |
i32.const 13 | |
call $~lib/builtins/abort | |
unreachable | |
end | |
local.get $0 | |
i32.const 0 | |
i32.ne | |
if (result i32) | |
local.get $0 | |
i32.const 15 | |
i32.and | |
i32.eqz | |
else | |
i32.const 0 | |
end | |
i32.eqz | |
if | |
i32.const 0 | |
i32.const 24 | |
i32.const 586 | |
i32.const 2 | |
call $~lib/builtins/abort | |
unreachable | |
end | |
global.get $~lib/rt/tlsf/ROOT | |
local.get $0 | |
i32.const 16 | |
i32.sub | |
local.get $1 | |
call $~lib/rt/tlsf/reallocateBlock | |
i32.const 16 | |
i32.add | |
) | |
(func $~lib/memory/memory.fill (; 31 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) | |
(local $3 i32) | |
(local $4 i32) | |
(local $5 i32) | |
(local $6 i32) | |
(local $7 i32) | |
(local $8 i64) | |
block $~lib/util/memory/memset|inlined.0 | |
local.get $0 | |
local.set $5 | |
local.get $1 | |
local.set $4 | |
local.get $2 | |
local.set $3 | |
local.get $3 | |
i32.eqz | |
if | |
br $~lib/util/memory/memset|inlined.0 | |
end | |
local.get $5 | |
local.get $4 | |
i32.store8 | |
local.get $5 | |
local.get $3 | |
i32.add | |
i32.const 1 | |
i32.sub | |
local.get $4 | |
i32.store8 | |
local.get $3 | |
i32.const 2 | |
i32.le_u | |
if | |
br $~lib/util/memory/memset|inlined.0 | |
end | |
local.get $5 | |
i32.const 1 | |
i32.add | |
local.get $4 | |
i32.store8 | |
local.get $5 | |
i32.const 2 | |
i32.add | |
local.get $4 | |
i32.store8 | |
local.get $5 | |
local.get $3 | |
i32.add | |
i32.const 2 | |
i32.sub | |
local.get $4 | |
i32.store8 | |
local.get $5 | |
local.get $3 | |
i32.add | |
i32.const 3 | |
i32.sub | |
local.get $4 | |
i32.store8 | |
local.get $3 | |
i32.const 6 | |
i32.le_u | |
if | |
br $~lib/util/memory/memset|inlined.0 | |
end | |
local.get $5 | |
i32.const 3 | |
i32.add | |
local.get $4 | |
i32.store8 | |
local.get $5 | |
local.get $3 | |
i32.add | |
i32.const 4 | |
i32.sub | |
local.get $4 | |
i32.store8 | |
local.get $3 | |
i32.const 8 | |
i32.le_u | |
if | |
br $~lib/util/memory/memset|inlined.0 | |
end | |
i32.const 0 | |
local.get $5 | |
i32.sub | |
i32.const 3 | |
i32.and | |
local.set $6 | |
local.get $5 | |
local.get $6 | |
i32.add | |
local.set $5 | |
local.get $3 | |
local.get $6 | |
i32.sub | |
local.set $3 | |
local.get $3 | |
i32.const -4 | |
i32.and | |
local.set $3 | |
i32.const -1 | |
i32.const 255 | |
i32.div_u | |
local.get $4 | |
i32.const 255 | |
i32.and | |
i32.mul | |
local.set $7 | |
local.get $5 | |
local.get $7 | |
i32.store | |
local.get $5 | |
local.get $3 | |
i32.add | |
i32.const 4 | |
i32.sub | |
local.get $7 | |
i32.store | |
local.get $3 | |
i32.const 8 | |
i32.le_u | |
if | |
br $~lib/util/memory/memset|inlined.0 | |
end | |
local.get $5 | |
i32.const 4 | |
i32.add | |
local.get $7 | |
i32.store | |
local.get $5 | |
i32.const 8 | |
i32.add | |
local.get $7 | |
i32.store | |
local.get $5 | |
local.get $3 | |
i32.add | |
i32.const 12 | |
i32.sub | |
local.get $7 | |
i32.store | |
local.get $5 | |
local.get $3 | |
i32.add | |
i32.const 8 | |
i32.sub | |
local.get $7 | |
i32.store | |
local.get $3 | |
i32.const 24 | |
i32.le_u | |
if | |
br $~lib/util/memory/memset|inlined.0 | |
end | |
local.get $5 | |
i32.const 12 | |
i32.add | |
local.get $7 | |
i32.store | |
local.get $5 | |
i32.const 16 | |
i32.add | |
local.get $7 | |
i32.store | |
local.get $5 | |
i32.const 20 | |
i32.add | |
local.get $7 | |
i32.store | |
local.get $5 | |
i32.const 24 | |
i32.add | |
local.get $7 | |
i32.store | |
local.get $5 | |
local.get $3 | |
i32.add | |
i32.const 28 | |
i32.sub | |
local.get $7 | |
i32.store | |
local.get $5 | |
local.get $3 | |
i32.add | |
i32.const 24 | |
i32.sub | |
local.get $7 | |
i32.store | |
local.get $5 | |
local.get $3 | |
i32.add | |
i32.const 20 | |
i32.sub | |
local.get $7 | |
i32.store | |
local.get $5 | |
local.get $3 | |
i32.add | |
i32.const 16 | |
i32.sub | |
local.get $7 | |
i32.store | |
i32.const 24 | |
local.get $5 | |
i32.const 4 | |
i32.and | |
i32.add | |
local.set $6 | |
local.get $5 | |
local.get $6 | |
i32.add | |
local.set $5 | |
local.get $3 | |
local.get $6 | |
i32.sub | |
local.set $3 | |
local.get $7 | |
i64.extend_i32_u | |
local.get $7 | |
i64.extend_i32_u | |
i64.const 32 | |
i64.shl | |
i64.or | |
local.set $8 | |
block $break|0 | |
loop $continue|0 | |
local.get $3 | |
i32.const 32 | |
i32.ge_u | |
i32.eqz | |
br_if $break|0 | |
local.get $5 | |
local.get $8 | |
i64.store | |
local.get $5 | |
i32.const 8 | |
i32.add | |
local.get $8 | |
i64.store | |
local.get $5 | |
i32.const 16 | |
i32.add | |
local.get $8 | |
i64.store | |
local.get $5 | |
i32.const 24 | |
i32.add | |
local.get $8 | |
i64.store | |
local.get $3 | |
i32.const 32 | |
i32.sub | |
local.set $3 | |
local.get $5 | |
i32.const 32 | |
i32.add | |
local.set $5 | |
br $continue|0 | |
end | |
unreachable | |
end | |
end | |
) | |
(func $~lib/array/ensureSize (; 32 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) | |
(local $3 i32) | |
(local $4 i32) | |
(local $5 i32) | |
(local $6 i32) | |
local.get $0 | |
i32.load offset=8 | |
local.set $3 | |
local.get $1 | |
local.get $3 | |
local.get $2 | |
i32.shr_u | |
i32.gt_u | |
if | |
local.get $1 | |
i32.const 1073741808 | |
local.get $2 | |
i32.shr_u | |
i32.gt_u | |
if | |
i32.const 288 | |
i32.const 336 | |
i32.const 14 | |
i32.const 47 | |
call $~lib/builtins/abort | |
unreachable | |
end | |
local.get $0 | |
i32.load | |
local.set $4 | |
local.get $1 | |
local.get $2 | |
i32.shl | |
local.set $5 | |
local.get $4 | |
local.get $5 | |
call $~lib/rt/tlsf/__realloc | |
local.set $6 | |
local.get $6 | |
local.get $3 | |
i32.add | |
i32.const 0 | |
local.get $5 | |
local.get $3 | |
i32.sub | |
call $~lib/memory/memory.fill | |
local.get $6 | |
local.get $4 | |
i32.ne | |
if | |
local.get $0 | |
local.get $6 | |
call $~lib/rt/pure/__retain | |
i32.store | |
local.get $0 | |
local.get $6 | |
i32.store offset=4 | |
end | |
local.get $0 | |
local.get $5 | |
i32.store offset=8 | |
end | |
) | |
(func $~lib/array/Array<index/Struct>#push (; 33 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) | |
(local $2 i32) | |
(local $3 i32) | |
(local $4 i32) | |
local.get $1 | |
call $~lib/rt/pure/__retain | |
drop | |
local.get $0 | |
i32.load offset=12 | |
local.set $2 | |
local.get $2 | |
i32.const 1 | |
i32.add | |
local.set $3 | |
local.get $0 | |
local.get $3 | |
i32.const 2 | |
call $~lib/array/ensureSize | |
local.get $0 | |
i32.load offset=4 | |
local.get $2 | |
i32.const 2 | |
i32.shl | |
i32.add | |
local.get $1 | |
call $~lib/rt/pure/__retain | |
i32.store | |
local.get $0 | |
local.get $3 | |
i32.store offset=12 | |
local.get $3 | |
local.set $4 | |
local.get $1 | |
call $~lib/rt/pure/__release | |
local.get $4 | |
) | |
(func $~lib/array/Array<index/Struct>#set:length (; 34 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) | |
(local $2 i32) | |
(local $3 i32) | |
(local $4 i32) | |
local.get $0 | |
i32.load offset=12 | |
local.set $2 | |
local.get $2 | |
local.get $1 | |
i32.gt_s | |
if | |
local.get $1 | |
i32.const 2 | |
i32.shl | |
local.set $3 | |
local.get $2 | |
i32.const 2 | |
i32.shl | |
local.set $4 | |
loop $continue|0 | |
local.get $3 | |
i32.load | |
call $~lib/rt/pure/__release | |
local.get $3 | |
i32.const 4 | |
i32.add | |
local.tee $3 | |
local.get $4 | |
i32.lt_u | |
br_if $continue|0 | |
end | |
else | |
local.get $0 | |
local.get $1 | |
i32.const 2 | |
call $~lib/array/ensureSize | |
end | |
local.get $0 | |
local.get $1 | |
i32.store offset=12 | |
) | |
(func $index/report (; 35 ;) (type $FUNCSIG$i) (result i32) | |
(local $0 i32) | |
(local $1 i32) | |
(local $2 i32) | |
(local $3 i32) | |
(local $4 i32) | |
i32.const 0 | |
local.set $0 | |
i32.const 0 | |
i32.const 2 | |
i32.const 4 | |
i32.const 272 | |
call $~lib/rt/__allocArray | |
call $~lib/rt/pure/__retain | |
local.tee $2 | |
call $~lib/rt/pure/__retain | |
local.set $1 | |
block $break|0 | |
i32.const 0 | |
local.set $3 | |
loop $loop|0 | |
local.get $3 | |
i32.const 10 | |
i32.lt_s | |
i32.eqz | |
br_if $break|0 | |
local.get $1 | |
i32.const 0 | |
call $index/Struct#constructor | |
local.tee $4 | |
call $~lib/array/Array<index/Struct>#push | |
drop | |
local.get $3 | |
i32.const 1 | |
i32.add | |
local.set $3 | |
local.get $4 | |
call $~lib/rt/pure/__release | |
br $loop|0 | |
end | |
unreachable | |
end | |
local.get $1 | |
i32.const 0 | |
call $~lib/array/Array<index/Struct>#set:length | |
local.get $0 | |
local.set $4 | |
local.get $2 | |
call $~lib/rt/pure/__release | |
local.get $1 | |
call $~lib/rt/pure/__release | |
local.get $4 | |
) | |
(func $~lib/rt/pure/__visit (; 36 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) | |
(local $2 i32) | |
(local $3 i32) | |
local.get $0 | |
global.get $~lib/heap/__heap_base | |
i32.lt_u | |
if | |
return | |
end | |
local.get $0 | |
i32.const 16 | |
i32.sub | |
local.set $2 | |
block $break|0 | |
block $case5|0 | |
block $case4|0 | |
block $case3|0 | |
block $case2|0 | |
block $case1|0 | |
block $case0|0 | |
local.get $1 | |
local.set $3 | |
local.get $3 | |
i32.const 1 | |
i32.eq | |
br_if $case0|0 | |
local.get $3 | |
i32.const 2 | |
i32.eq | |
br_if $case1|0 | |
local.get $3 | |
i32.const 3 | |
i32.eq | |
br_if $case2|0 | |
local.get $3 | |
i32.const 4 | |
i32.eq | |
br_if $case3|0 | |
local.get $3 | |
i32.const 5 | |
i32.eq | |
br_if $case4|0 | |
br $case5|0 | |
end | |
local.get $2 | |
call $~lib/rt/pure/decrement | |
br $break|0 | |
end | |
local.get $2 | |
i32.load offset=4 | |
i32.const 268435455 | |
i32.and | |
i32.const 0 | |
i32.gt_u | |
i32.eqz | |
if | |
i32.const 0 | |
i32.const 128 | |
i32.const 75 | |
i32.const 17 | |
call $~lib/builtins/abort | |
unreachable | |
end | |
local.get $2 | |
local.get $2 | |
i32.load offset=4 | |
i32.const 1 | |
i32.sub | |
i32.store offset=4 | |
local.get $2 | |
call $~lib/rt/pure/markGray | |
br $break|0 | |
end | |
local.get $2 | |
call $~lib/rt/pure/scan | |
br $break|0 | |
end | |
local.get $2 | |
i32.load offset=4 | |
local.set $3 | |
local.get $3 | |
i32.const -268435456 | |
i32.and | |
local.get $3 | |
i32.const 1 | |
i32.add | |
i32.const -268435456 | |
i32.and | |
i32.eq | |
i32.eqz | |
if | |
i32.const 0 | |
i32.const 128 | |
i32.const 86 | |
i32.const 6 | |
call $~lib/builtins/abort | |
unreachable | |
end | |
local.get $2 | |
local.get $3 | |
i32.const 1 | |
i32.add | |
i32.store offset=4 | |
local.get $3 | |
i32.const 1879048192 | |
i32.and | |
i32.const 0 | |
i32.ne | |
if | |
local.get $2 | |
call $~lib/rt/pure/scanBlack | |
end | |
br $break|0 | |
end | |
local.get $2 | |
call $~lib/rt/pure/collectWhite | |
br $break|0 | |
end | |
i32.const 0 | |
i32.eqz | |
if | |
i32.const 0 | |
i32.const 128 | |
i32.const 97 | |
i32.const 24 | |
call $~lib/builtins/abort | |
unreachable | |
end | |
end | |
) | |
(func $~lib/array/Array<index/Struct>#__visit_impl (; 37 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) | |
(local $2 i32) | |
(local $3 i32) | |
(local $4 i32) | |
local.get $0 | |
i32.load offset=4 | |
local.set $2 | |
local.get $2 | |
local.get $0 | |
i32.load offset=12 | |
i32.const 2 | |
i32.shl | |
i32.add | |
local.set $3 | |
block $break|0 | |
loop $continue|0 | |
local.get $2 | |
local.get $3 | |
i32.lt_u | |
i32.eqz | |
br_if $break|0 | |
local.get $2 | |
i32.load | |
local.set $4 | |
local.get $4 | |
if | |
local.get $4 | |
local.get $1 | |
call $~lib/rt/pure/__visit | |
end | |
local.get $2 | |
i32.const 4 | |
i32.add | |
local.set $2 | |
br $continue|0 | |
end | |
unreachable | |
end | |
) | |
(func $~lib/array/Array<i32>#__visit_impl (; 38 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) | |
nop | |
) | |
(func $~lib/rt/__visit_members (; 39 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) | |
(local $2 i32) | |
block $block$4$break | |
block $switch$1$default | |
block $switch$1$case$7 | |
block $switch$1$case$6 | |
block $switch$1$case$4 | |
block $switch$1$case$2 | |
local.get $0 | |
i32.const 8 | |
i32.sub | |
i32.load | |
br_table $switch$1$case$2 $switch$1$case$2 $switch$1$case$4 $switch$1$case$2 $switch$1$case$6 $switch$1$case$7 $switch$1$default | |
end | |
return | |
end | |
br $block$4$break | |
end | |
local.get $0 | |
local.get $1 | |
call $~lib/array/Array<index/Struct>#__visit_impl | |
br $block$4$break | |
end | |
local.get $0 | |
local.get $1 | |
call $~lib/array/Array<i32>#__visit_impl | |
br $block$4$break | |
end | |
unreachable | |
end | |
local.get $0 | |
i32.load | |
local.tee $2 | |
if | |
local.get $2 | |
local.get $1 | |
call $~lib/rt/pure/__visit | |
end | |
return | |
) | |
(func $null (; 40 ;) (type $FUNCSIG$v) | |
) | |
) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment