@grain/libbinaryen
Version:
Libbinaryen packaged for OCaml.
1,624 lines • 81.9 kB
Plain Text
Metrics
total
[exports] : 1
[funcs] : 1
[globals] : 0
[imports] : 10
[memories] : 0
[memory-data] : 0
[table-data] : 0
[tables] : 0
[tags] : 0
[total] : 1953
[vars] : 9
Binary : 238
Block : 68
Break : 90
Call : 22
CallIndirect : 1
Const : 174
Drop : 8
If : 27
Load : 311
LocalGet : 629
LocalSet : 180
Loop : 3
Return : 3
Select : 11
Store : 159
Unary : 29
(module
(type $0 (func (param i32 i32 i32) (result i32)))
(type $2 (func (param i32 i32) (result i32)))
(type $3 (func (param i32 i32 i32 i32)))
(type $10 (func (param i32)))
(import "env" "memory" (memory $108 4096 4096))
(import "env" "table" (table $timport$109 10 funcref))
(import "env" "crc32" (func $fimport$14 (param i32 i32 i32) (result i32)))
(import "env" "adler32" (func $fimport$15 (param i32 i32 i32) (result i32)))
(import "env" "deflate_huff" (func $fimport$20 (param i32 i32) (result i32)))
(import "env" "deflate_rle" (func $fimport$21 (param i32 i32) (result i32)))
(import "env" "_tr_stored_block" (func $fimport$29 (param i32 i32 i32 i32)))
(import "env" "_tr_align" (func $fimport$30 (param i32)))
(import "env" "memset" (func $fimport$97 (param i32 i32 i32) (result i32)))
(import "env" "memcpy" (func $fimport$98 (param i32 i32 i32) (result i32)))
(export "deflate" (func $0))
(func $0 (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 $10 i32)
(local.set $3
(i32.const -2)
)
(block $folding-inner1
(block $folding-inner0
(block $label$1
(br_if $label$1
(i32.eqz
(local.get $0)
)
)
(br_if $label$1
(i32.gt_u
(local.get $1)
(i32.const 5)
)
)
(br_if $label$1
(i32.eqz
(local.tee $2
(i32.load offset=28
(local.get $0)
)
)
)
)
(block $label$2
(block $label$3
(br_if $label$3
(i32.eqz
(i32.load offset=12
(local.get $0)
)
)
)
(if
(i32.eqz
(i32.load
(local.get $0)
)
)
(then
(br_if $label$3
(i32.load offset=4
(local.get $0)
)
)
)
)
(local.set $3
(i32.load offset=4
(local.get $2)
)
)
(br_if $label$2
(i32.eq
(local.get $1)
(i32.const 4)
)
)
(br_if $label$2
(i32.ne
(local.get $3)
(i32.const 666)
)
)
)
(i32.store offset=24
(local.get $0)
(i32.load
(i32.const 16992)
)
)
(return
(i32.const -2)
)
)
(if
(i32.eqz
(i32.load offset=16
(local.get $0)
)
)
(then
(br $folding-inner0)
)
)
(i32.store
(local.get $2)
(local.get $0)
)
(local.set $7
(i32.load offset=40
(local.get $2)
)
)
(i32.store offset=40
(local.get $2)
(local.get $1)
)
(block $label$6
(block $label$7
(block $label$8
(block $label$9
(block $label$10
(block $label$11
(block $label$12
(block $label$13
(block $label$14
(block $label$15
(block $label$16
(if
(i32.eq
(local.get $3)
(i32.const 42)
)
(then
(if
(i32.eq
(i32.load offset=24
(local.get $2)
)
(i32.const 2)
)
(then
(i32.store offset=48
(local.get $0)
(call $fimport$14
(i32.const 0)
(i32.const 0)
(i32.const 0)
)
)
(i32.store offset=20
(local.get $2)
(i32.add
(local.tee $3
(i32.load offset=20
(local.get $2)
)
)
(i32.const 1)
)
)
(i32.store8
(i32.add
(local.get $3)
(i32.load offset=8
(local.get $2)
)
)
(i32.const 31)
)
(i32.store offset=20
(local.get $2)
(i32.add
(local.tee $3
(i32.load offset=20
(local.get $2)
)
)
(i32.const 1)
)
)
(i32.store8
(i32.add
(local.get $3)
(i32.load offset=8
(local.get $2)
)
)
(i32.const 139)
)
(i32.store offset=20
(local.get $2)
(i32.add
(local.tee $3
(i32.load offset=20
(local.get $2)
)
)
(i32.const 1)
)
)
(i32.store8
(i32.add
(local.get $3)
(i32.load offset=8
(local.get $2)
)
)
(i32.const 8)
)
(if
(i32.eqz
(local.tee $3
(i32.load offset=28
(local.get $2)
)
)
)
(then
(i32.store offset=20
(local.get $2)
(i32.add
(local.tee $3
(i32.load offset=20
(local.get $2)
)
)
(i32.const 1)
)
)
(i32.store8
(i32.add
(local.get $3)
(i32.load offset=8
(local.get $2)
)
)
(i32.const 0)
)
(i32.store offset=20
(local.get $2)
(i32.add
(local.tee $3
(i32.load offset=20
(local.get $2)
)
)
(i32.const 1)
)
)
(i32.store8
(i32.add
(local.get $3)
(i32.load offset=8
(local.get $2)
)
)
(i32.const 0)
)
(i32.store offset=20
(local.get $2)
(i32.add
(local.tee $3
(i32.load offset=20
(local.get $2)
)
)
(i32.const 1)
)
)
(i32.store8
(i32.add
(local.get $3)
(i32.load offset=8
(local.get $2)
)
)
(i32.const 0)
)
(i32.store offset=20
(local.get $2)
(i32.add
(local.tee $3
(i32.load offset=20
(local.get $2)
)
)
(i32.const 1)
)
)
(i32.store8
(i32.add
(local.get $3)
(i32.load offset=8
(local.get $2)
)
)
(i32.const 0)
)
(i32.store offset=20
(local.get $2)
(i32.add
(local.tee $3
(i32.load offset=20
(local.get $2)
)
)
(i32.const 1)
)
)
(i32.store8
(i32.add
(local.get $3)
(i32.load offset=8
(local.get $2)
)
)
(i32.const 0)
)
(local.set $3
(i32.const 2)
)
(if
(i32.ne
(local.tee $4
(i32.load offset=132
(local.get $2)
)
)
(i32.const 9)
)
(then
(local.set $3
(select
(i32.const 4)
(i32.shl
(i32.gt_s
(i32.load offset=136
(local.get $2)
)
(i32.const 1)
)
(i32.const 2)
)
(i32.lt_s
(local.get $4)
(i32.const 2)
)
)
)
)
)
(i32.store offset=20
(local.get $2)
(i32.add
(local.tee $4
(i32.load offset=20
(local.get $2)
)
)
(i32.const 1)
)
)
(i32.store8
(i32.add
(local.get $4)
(i32.load offset=8
(local.get $2)
)
)
(local.get $3)
)
(i32.store offset=20
(local.get $2)
(i32.add
(local.tee $3
(i32.load offset=20
(local.get $2)
)
)
(i32.const 1)
)
)
(i32.store8
(i32.add
(local.get $3)
(i32.load offset=8
(local.get $2)
)
)
(i32.const 3)
)
(i32.store offset=4
(local.get $2)
(i32.const 113)
)
(br $label$6)
)
)
(local.set $4
(i32.load offset=36
(local.get $3)
)
)
(local.set $5
(i32.load offset=28
(local.get $3)
)
)
(local.set $6
(i32.load offset=16
(local.get $3)
)
)
(local.set $8
(i32.load offset=44
(local.get $3)
)
)
(local.set $9
(i32.load
(local.get $3)
)
)
(i32.store offset=20
(local.get $2)
(i32.add
(local.tee $10
(i32.load offset=20
(local.get $2)
)
)
(i32.const 1)
)
)
(local.set $3
(i32.const 2)
)
(i32.store8
(i32.add
(local.get $10)
(i32.load offset=8
(local.get $2)
)
)
(i32.or
(i32.or
(i32.or
(i32.or
(i32.shl
(i32.ne
(local.get $8)
(i32.const 0)
)
(i32.const 1)
)
(i32.ne
(local.get $9)
(i32.const 0)
)
)
(i32.shl
(i32.ne
(local.get $6)
(i32.const 0)
)
(i32.const 2)
)
)
(i32.shl
(i32.ne
(local.get $5)
(i32.const 0)
)
(i32.const 3)
)
)
(i32.shl
(i32.ne
(local.get $4)
(i32.const 0)
)
(i32.const 4)
)
)
)
(local.set $4
(i32.load offset=4
(i32.load offset=28
(local.get $2)
)
)
)
(i32.store offset=20
(local.get $2)
(i32.add
(local.tee $5
(i32.load offset=20
(local.get $2)
)
)
(i32.const 1)
)
)
(i32.store8
(i32.add
(local.get $5)
(i32.load offset=8
(local.get $2)
)
)
(local.get $4)
)
(local.set $4
(i32.load offset=4
(i32.load offset=28
(local.get $2)
)
)
)
(i32.store offset=20
(local.get $2)
(i32.add
(local.tee $5
(i32.load offset=20
(local.get $2)
)
)
(i32.const 1)
)
)
(i32.store8
(i32.add
(local.get $5)
(i32.load offset=8
(local.get $2)
)
)
(i32.shr_u
(local.get $4)
(i32.const 8)
)
)
(local.set $4
(i32.load16_u offset=6
(i32.load offset=28
(local.get $2)
)
)
)
(i32.store offset=20
(local.get $2)
(i32.add
(local.tee $5
(i32.load offset=20
(local.get $2)
)
)
(i32.const 1)
)
)
(i32.store8
(i32.add
(local.get $5)
(i32.load offset=8
(local.get $2)
)
)
(local.get $4)
)
(local.set $4
(i32.load8_u offset=7
(i32.load offset=28
(local.get $2)
)
)
)
(i32.store offset=20
(local.get $2)
(i32.add
(local.tee $5
(i32.load offset=20
(local.get $2)
)
)
(i32.const 1)
)
)
(i32.store8
(i32.add
(local.get $5)
(i32.load offset=8
(local.get $2)
)
)
(local.get $4)
)
(if
(i32.ne
(local.tee $4
(i32.load offset=132
(local.get $2)
)
)
(i32.const 9)
)
(then
(local.set $3
(select
(i32.const 4)
(i32.shl
(i32.gt_s
(i32.load offset=136
(local.get $2)
)
(i32.const 1)
)
(i32.const 2)
)
(i32.lt_s
(local.get $4)
(i32.const 2)
)
)
)
)
)
(i32.store offset=20
(local.get $2)
(i32.add
(local.tee $4
(i32.load offset=20
(local.get $2)
)
)
(i32.const 1)
)
)
(i32.store8
(i32.add
(local.get $4)
(i32.load offset=8
(local.get $2)
)
)
(local.get $3)
)
(local.set $3
(i32.load offset=12
(i32.load offset=28
(local.get $2)
)
)
)
(i32.store offset=20
(local.get $2)
(i32.add
(local.tee $4
(i32.load offset=20
(local.get $2)
)
)
(i32.const 1)
)
)
(i32.store8
(i32.add
(local.get $4)
(i32.load offset=8
(local.get $2)
)
)
(local.get $3)
)
(if
(i32.load offset=44
(if (result i32)
(i32.load offset=16
(local.tee $3
(i32.load offset=28
(local.get $2)
)
)
)
(then
(local.set $3
(i32.load offset=20
(local.get $3)
)
)
(i32.store offset=20
(local.get $2)
(i32.add
(local.tee $4
(i32.load offset=20
(local.get $2)
)
)
(i32.const 1)
)
)
(i32.store8
(i32.add
(local.get $4)
(i32.load offset=8
(local.get $2)
)
)
(local.get $3)
)
(local.set $3
(i32.load offset=20
(i32.load offset=28
(local.get $2)
)
)
)
(i32.store offset=20
(local.get $2)
(i32.add
(local.tee $4
(i32.load offset=20
(local.get $2)
)
)
(i32.const 1)
)
)
(i32.store8
(i32.add
(local.get $4)
(i32.load offset=8
(local.get $2)
)
)
(i32.shr_u
(local.get $3)
(i32.const 8)
)
)
(i32.load offset=28
(local.get $2)
)
)
(else
(local.get $3)
)
)
)
(then
(i32.store offset=48
(local.get $0)
(call $fimport$14
(i32.load offset=48
(local.get $0)
)
(i32.load offset=8
(local.get $2)
)
(i32.load offset=20
(local.get $2)
)
)
)
)
)
(i32.store offset=4
(local.get $2)
(i32.const 69)
)
(i32.store offset=32
(local.get $2)
(i32.const 0)
)
(br $label$16)
)
)
(local.set $5
(i32.sub
(i32.shl
(i32.load offset=48
(local.get $2)
)
(i32.const 12)
)
(i32.const 30720)
)
)
(local.set $3
(i32.const 0)
)
(block $label$24
(br_if $label$24
(i32.gt_s
(i32.load offset=136
(local.get $2)
)
(i32.const 1)
)
)
(br_if $label$24
(i32.lt_s
(local.tee $4
(i32.load offset=132
(local.get $2)
)
)
(i32.const 2)
)
)
(local.set $3
(i32.const 64)
)
(br_if $label$24
(i32.lt_s
(local.get $4)
(i32.const 6)
)
)
(local.set $3
(select
(i32.const 128)
(i32.const 192)
(i32.eq
(local.get $4)
(i32.const 6)
)
)
)
)
(i32.store offset=4
(local.get $2)
(i32.const 113)
)
(i32.store offset=20
(local.get $2)
(i32.add
(local.tee $4
(i32.load offset=20
(local.get $2)
)
)
(i32.const 1)
)
)
(i32.store8
(i32.add
(local.get $4)
(i32.load offset=8
(local.get $2)
)
)
(i32.shr_u
(local.tee $3
(select
(i32.or
(local.tee $3
(i32.or
(local.get $3)
(local.get $5)
)
)
(i32.const 32)
)
(local.get $3)
(i32.load offset=108
(local.get $2)
)
)
)
(i32.const 8)
)
)
(i32.store offset=20
(local.get $2)
(i32.add
(local.tee $4
(i32.load offset=20
(local.get $2)
)
)
(i32.const 1)
)
)
(i32.store8
(i32.add
(local.get $4)
(i32.load offset=8
(local.get $2)
)
)
(i32.xor
(i32.or
(i32.rem_u
(local.get $3)
(i32.const 31)
)
(local.get $3)
)
(i32.const 31)
)
)
(if
(i32.load offset=108
(local.get $2)
)
(then
(local.set $3
(i32.load offset=48
(local.get $0)
)
)
(i32.store offset=20
(local.get $2)
(i32.add
(local.tee $4
(i32.load offset=20
(local.get $2)
)
)
(i32.const 1)
)
)
(i32.store8
(i32.add
(local.get $4)
(i32.load offset=8
(local.get $2)
)
)
(i32.shr_u
(local.get $3)
(i32.const 24)
)
)
(i32.store offset=20
(local.get $2)
(i32.add
(local.tee $4
(i32.load offset=20
(local.get $2)
)
)
(i32.const 1)
)
)
(i32.store8
(i32.add
(local.get $4)
(i32.load offset=8
(local.get $2)
)
)
(i32.shr_u
(local.get $3)
(i32.const 16)
)
)
(local.set $3
(i32.load offset=48
(local.get $0)
)
)
(i32.store offset=20
(local.get $2)
(i32.add
(local.tee $4
(i32.load offset=20
(local.get $2)
)
)
(i32.const 1)
)
)
(i32.store8
(i32.add
(local.get $4)
(i32.load offset=8
(local.get $2)
)
)
(i32.shr_u
(local.get $3)
(i32.const 8)
)
)
(i32.store offset=20
(local.get $2)
(i32.add
(local.tee $4
(i32.load offset=20
(local.get $2)
)
)
(i32.const 1)
)
)
(i32.store8
(i32.add
(local.get $4)
(i32.load offset=8
(local.get $2)
)
)
(local.get $3)
)
)
)
(i32.store offset=48
(local.get $0)
(call $fimport$15
(i32.const 0)
(i32.const 0)
(i32.const 0)
)
)
(local.set $3
(i32.load offset=4
(local.get $2)
)
)
)
)
(br_if $label$15
(i32.ne
(local.get $3)
(i32.const 69)
)
)
)
(block $label$26
(if
(i32.load offset=16
(local.tee $5
(i32.load offset=28
(local.get $2)
)
)
)
(then
(local.set $3
(i32.load offset=20
(local.get $2)
)
)
(br_if $label$26
(i32.ge_u
(local.tee $6
(i32.load offset=32
(local.get $2)
)
)
(i32.load16_u offset=20
(local.get $5)
)
)
)
(local.set $4
(local.get $3)
)
(loop $label$28
(if
(i32.eq
(i32.load offset=12
(local.get $2)
)
(local.get $3)
)
(then
(block $label$30
(br_if $label$30
(i32.le_u
(local.get $3)
(local.get $4)
)
)
(br_if $label$30
(i32.eqz
(i32.load offset=44
(local.get $5)
)
)
)
(i32.store offset=48
(local.get $0)
(call $fimport$14
(i32.load offset=48
(local.get $0)
)
(i32.add
(i32.load offset=8
(local.get $2)
)
(local.get $4)
)
(i32.sub
(local.get $3)
(local.get $4)
)
)
)
)
(block $label$31
(br_if $label$31
(i32.eqz
(local.tee $3
(select
(local.tee $3
(i32.load offset=16
(local.get $0)
)
)
(local.tee $5
(i32.load offset=20
(local.tee $4
(i32.load offset=28
(local.get $0)
)
)
)
)
(i32.lt_u
(local.get $3)
(local.get $5)
)
)
)
)
)
(drop
(call $fimport$98
(i32.load offset=12
(local.get $0)
)
(i32.load offset=16
(local.get $4)
)
(local.get $3)
)
)
(i32.store offset=12
(local.get $0)
(i32.add
(i32.load offset=12
(local.get $0)
)
(local.get $3)
)
)
(i32.store offset=16
(local.tee $4
(i32.load offset=28
(local.get $0)
)
)
(i32.add
(i32.load offset=16
(local.get $4)
)
(local.get $3)
)
)
(i32.store offset=20
(local.get $0)
(i32.add
(i32.load offset=20
(local.get $0)
)
(local.get $3)
)
)
(i32.store offset=16
(local.get $0)
(i32.sub
(i32.load offset=16
(local.get $0)
)
(local.get $3)
)
)
(i32.store offset=20
(local.get $4)
(local.tee $3
(i32.sub
(i32.load offset=20
(local.get $4)
)
(local.get $3)
)
)
)
(br_if $label$31
(local.get $3)
)
(i32.store offset=16
(local.get $4)
(i32.load offset=8
(local.get $4)
)
)
)
(local.set $5
(i32.load offset=28
(local.get $2)
)
)
(br_if $label$26
(i32.eq
(local.tee $3
(i32.load offset=20
(local.get $2)
)
)
(i32.load offset=12
(local.get $2)
)
)
)
(local.set $6
(i32.load offset=32
(local.get $2)
)
)
(local.set $4
(local.get $3)
)
)
)
(local.set $5
(i32.load8_u
(i32.add
(i32.load offset=16
(local.get $5)
)
(local.get $6)
)
)
)
(i32.store offset=20
(local.get $2)
(i32.add
(local.get $3)
(i32.const 1)
)
)
(i32.store8
(i32.add
(i32.load offset=8
(local.get $2)
)
(local.get $3)
)
(local.get $5)
)
(i32.store offset=32
(local.get $2)
(local.tee $6
(i32.add
(i32.load offset=32
(local.get $2)
)
(i32.const 1)
)
)
)
(if
(i32.le_u
(i32.load16_u offset=20
(local.tee $5
(i32.load offset=28
(local.get $2)
)
)
)
(local.get $6)
)
(then
(local.set $3
(local.get $4)
)
(br $label$26)
)
(else
(local.set $3
(i32.load offset=20
(local.get $2)
)
)
(br $label$28)
)
)
)
)
)
(i32.store offset=4
(local.get $2)
(i32.const 73)
)
(br $label$14)
)
(block $label$33
(br_if $label$33
(i32.eqz
(i32.load offset=44
(local.get $5)
)
)
)
(br_if $label$33
(i32.le_u
(local.tee $4
(i32.load offset=20
(local.get $2)
)
)
(local.get $3)
)
)
(i32.store offset=48
(local.get $0)
(call $fimport$14
(i32.load offset=48
(local.get $0)
)
(i32.add
(i32.load offset=8
(local.get $2)
)
(local.get $3)
)
(i32.sub
(local.get $4)
(local.get $3)
)
)
)
(local.set $5
(i32.load offset=28
(local.get $2)
)
)
)
(if
(i32.eq
(i32.load offset=32
(local.get $2)
)
(i32.load offset=20
(local.get $5)
)
)
(then
(i32.store offset=4
(local.get $2)
(i32.const 73)
)
(i32.store offset=32
(local.get $2)
(i32.const 0)
)
(br $label$14)
)
)
(local.set $3
(i32.load offset=4
(local.get $2)
)
)
)
(br_if $label$13
(i32.ne
(local.get $3)
(i32.const 73)
)
)
(local.set $5
(i32.load offset=28
(local.get $2)
)
)
)
(br_if $label$11
(i32.eqz
(i32.load offset=28
(local.get $5)
)
)
)
(local.set $4
(local.tee $3
(i32.load offset=20
(local.get $2)
)
)
)
(local.set $5
(block $label$35 (result i32)
(loop $label$37
(block $label$36
(if
(i32.eq
(i32.load offset=12
(local.get $2)
)
(local.get $3)
)
(then
(block $label$39
(br_if $label$39
(i32.le_u
(local.get $3)
(local.get $4)
)
)
(br_if $label$39
(i32.eqz
(i32.load offset=44
(i32.load offset=28
(local.get $2)
)
)
)
)
(i32.store offset=48
(local.get $0)
(call $fimport$14
(i32.load offset=48
(local.get $0)
)
(i32.add
(i32.load offset=8
(local.get $2)
)
(local.get $4)
)
(i32.sub
(local.get $3)
(local.get $4)
)
)
)
)
(block $label$40
(br_if $label$40
(i32.eqz
(local.tee $3
(select
(local.tee $3
(i32.load offset=16
(local.get $0)
)
)
(local.tee $5
(i32.load offset=20
(local.tee $4
(i32.load offset=28
(local.get $0)
)
)
)
)
(i32.lt_u
(local.get $3)
(local.get $5)
)
)
)
)
)
(drop
(call $fimport$98
(i32.load offset=12
(local.get $0)
)
(i32.load offset=16
(local.get $4)
)
(local.get $3)
)
)
(i32.store offset=12
(local.get $0)
(i32.add
(i32.load offset=12
(local.get $0)
)
(local.get $3)
)
)
(i32.store offset=16
(local.tee $4
(i32.load offset=28
(local.get $0)
)
)
(i32.add
(i32.load offset=16
(local.get $4)
)
(local.get $3)
)
)
(i32.store offset=20
(local.get $0)
(i32.add
(i32.load offset=20
(local.get $0)
)
(local.get $3)
)
)
(i32.store offset=16
(local.get $0)
(i32.sub
(i32.load offset=16
(local.get $0)
)
(local.get $3)
)
)
(i32.store offset=20
(local.get $4)
(local.tee $3
(i32.sub
(i32.load offset=20
(local.get $4)
)
(local.get $3)
)
)
)
(br_if $label$40
(local.get $3)
)
(i32.store offset=16
(local.get $4)
(i32.load offset=8
(local.get $4)
)
)
)
(br_if $label$36
(i32.eq
(local.tee $3
(i32.load offset=20
(local.get $2)
)
)
(i32.load offset=12
(local.get $2)
)
)
)
(local.set $4
(local.get $3)
)
)
)
(local.set $5
(i32.load offset=28
(i32.load offset=28
(local.get $2)
)
)
)
(i32.store offset=32
(local.get $2)
(i32.add
(local.tee $6
(i32.load offset=32
(local.get $2)
)
)
(i32.const 1)
)
)
(local.set $5
(i32.load8_u
(i32.add
(local.get $5)
(local.get $6)
)
)
)
(i32.store offset=20
(local.