Files

3558 lines
87 KiB
Plaintext

(module $huff_enc.wasm
(type (;0;) (func (param i32 i32)))
(type (;1;) (func))
(type (;2;) (func (param i32)))
(type (;3;) (func (param i32 i32 i32)))
(type (;4;) (func (param i32) (result i32)))
(type (;5;) (func (result i32)))
(import "__pragma" "loopbound" (func $__pragma_loopbound (type 0)))
(func $__wasm_apply_data_relocs (type 1))
(func $huff_enc_write_header (type 2) (param i32)
(local i32 i32 i32 i32 i32 i32 i32 i32 i32 i32 i32 i32)
global.get $__stack_pointer
i32.const 80
i32.sub
local.tee 1
global.set $__stack_pointer
i32.const 256
i32.const 256
call $__pragma_loopbound
i32.const 0
local.set 2
i32.const 0
local.set 3
loop ;; label = @1
local.get 3
local.get 0
local.get 2
i32.add
local.tee 4
i32.const 32
i32.add
i32.load
i32.const 0
i32.ne
i32.add
local.get 4
i32.const 68
i32.add
i32.load
i32.const 0
i32.ne
i32.add
local.get 4
i32.const 104
i32.add
i32.load
i32.const 0
i32.ne
i32.add
local.get 4
i32.const 140
i32.add
i32.load
i32.const 0
i32.ne
i32.add
local.set 3
local.get 2
i32.const 144
i32.add
local.tee 2
i32.const 9216
i32.ne
br_if 0 (;@1;)
end
i32.const 1
i32.const 9
call $__pragma_loopbound
i32.const 0
i32.load8_u offset=3088
i32.const 1
i32.shl
local.set 4
i32.const 0
i32.load8_u offset=3089
local.set 2
block ;; label = @1
block ;; label = @2
block ;; label = @3
block ;; label = @4
block ;; label = @5
block ;; label = @6
block ;; label = @7
block ;; label = @8
block ;; label = @9
local.get 3
i32.const 31
i32.gt_u
br_if 0 (;@9;)
block ;; label = @10
block ;; label = @11
local.get 2
i32.const 255
i32.and
i32.const 7
i32.ne
br_if 0 (;@11;)
i32.const 0
local.set 2
i32.const 0
i32.load offset=2052
local.tee 5
i32.const 2064
i32.add
local.get 4
i32.store8
i32.const 0
local.get 5
i32.const 1
i32.add
i32.store offset=2052
i32.const 0
local.set 4
br 1 (;@10;)
end
local.get 2
i32.const 1
i32.add
local.set 2
end
i32.const 0
local.set 5
i32.const 0
local.get 4
i32.store8 offset=3088
i32.const 0
local.get 2
i32.store8 offset=3089
i32.const 1
i32.const 9
call $__pragma_loopbound
local.get 3
i32.const 255
i32.add
local.tee 2
i32.const 4
i32.shr_u
i32.const 1
i32.and
i32.const 0
i32.load8_u offset=3088
i32.const 1
i32.shl
i32.or
local.set 3
i32.const 0
i32.load offset=2052
local.set 4
block ;; label = @10
i32.const 0
i32.load8_u offset=3089
local.tee 6
i32.const 7
i32.ne
br_if 0 (;@10;)
local.get 4
i32.const 2064
i32.add
local.get 3
i32.store8
i32.const 0
local.get 4
i32.const 1
i32.add
local.tee 4
i32.store offset=2052
local.get 2
i32.const 3
i32.shr_u
i32.const 1
i32.and
local.set 3
br 2 (;@8;)
end
local.get 2
i32.const 3
i32.shr_u
i32.const 1
i32.and
local.get 3
i32.const 1
i32.shl
i32.const 510
i32.and
i32.or
local.set 3
local.get 6
i32.const 1
i32.add
local.tee 5
i32.const 255
i32.and
i32.const 7
i32.ne
br_if 1 (;@8;)
local.get 4
i32.const 2064
i32.add
local.get 3
i32.store8
i32.const 0
local.set 5
i32.const 0
local.get 4
i32.const 1
i32.add
local.tee 4
i32.store offset=2052
local.get 2
i32.const 2
i32.shr_u
i32.const 1
i32.and
local.set 3
br 2 (;@7;)
end
local.get 4
i32.const 1
i32.or
local.set 4
block ;; label = @9
block ;; label = @10
local.get 2
i32.const 255
i32.and
i32.const 7
i32.ne
br_if 0 (;@10;)
i32.const 0
local.set 2
i32.const 0
i32.load offset=2052
local.tee 3
i32.const 2064
i32.add
local.get 4
i32.store8
i32.const 0
local.get 3
i32.const 1
i32.add
i32.store offset=2052
i32.const 0
local.set 4
br 1 (;@9;)
end
local.get 2
i32.const 1
i32.add
local.set 2
end
i32.const 0
local.get 4
i32.store8 offset=3088
i32.const 0
local.get 2
i32.store8 offset=3089
i32.const 32
local.set 2
loop ;; label = @9
local.get 0
local.get 2
i32.add
i32.load
local.set 5
i32.const 1
i32.const 9
call $__pragma_loopbound
i32.const 0
i32.load8_u offset=3088
i32.const 1
i32.shl
local.set 4
i32.const 0
i32.load8_u offset=3089
local.set 3
block ;; label = @10
block ;; label = @11
block ;; label = @12
local.get 5
i32.eqz
br_if 0 (;@12;)
local.get 4
i32.const 1
i32.or
local.set 4
local.get 3
i32.const 255
i32.and
i32.const 7
i32.ne
br_if 1 (;@11;)
i32.const 0
local.set 3
i32.const 0
i32.load offset=2052
local.tee 5
i32.const 2064
i32.add
local.get 4
i32.store8
i32.const 0
local.get 5
i32.const 1
i32.add
i32.store offset=2052
i32.const 0
local.set 4
br 2 (;@10;)
end
local.get 3
i32.const 255
i32.and
i32.const 7
i32.ne
br_if 0 (;@11;)
i32.const 0
local.set 3
i32.const 0
i32.load offset=2052
local.tee 5
i32.const 2064
i32.add
local.get 4
i32.store8
i32.const 0
local.get 5
i32.const 1
i32.add
i32.store offset=2052
i32.const 0
local.set 4
br 1 (;@10;)
end
local.get 3
i32.const 1
i32.add
local.set 3
end
i32.const 0
local.get 4
i32.store8 offset=3088
i32.const 0
local.get 3
i32.store8 offset=3089
local.get 2
i32.const 36
i32.add
local.tee 2
i32.const 9248
i32.ne
br_if 0 (;@9;)
br 8 (;@1;)
end
end
i32.const 1
local.set 6
local.get 2
i32.const 2
i32.shr_u
i32.const 1
i32.and
local.get 3
i32.const 1
i32.shl
i32.const 510
i32.and
i32.or
local.set 3
local.get 5
i32.const 1
i32.add
local.tee 5
i32.const 255
i32.and
i32.const 7
i32.ne
br_if 0 (;@7;)
i32.const 3
local.set 7
br 1 (;@6;)
end
i32.const 1
local.set 7
local.get 2
i32.const 1
i32.shr_u
i32.const 1
i32.and
local.get 3
i32.const 1
i32.shl
i32.const 510
i32.and
i32.or
local.set 3
local.get 5
i32.const 255
i32.and
i32.const 6
i32.ne
br_if 1 (;@5;)
i32.const 0
local.set 6
end
local.get 4
i32.const 2064
i32.add
local.get 3
i32.store8
i32.const 0
local.get 4
i32.const 1
i32.add
i32.store offset=2052
local.get 7
local.get 2
i32.and
local.set 2
br 1 (;@4;)
end
local.get 2
i32.const 1
i32.and
local.get 3
i32.const 1
i32.shl
i32.or
local.set 2
local.get 5
i32.const 2
i32.add
local.tee 6
i32.const 255
i32.and
i32.const 7
i32.eq
br_if 1 (;@3;)
end
local.get 6
i32.const 1
i32.add
local.set 3
br 1 (;@2;)
end
local.get 4
i32.const 2064
i32.add
local.get 2
i32.store8
i32.const 0
local.set 3
i32.const 0
local.get 4
i32.const 1
i32.add
i32.store offset=2052
i32.const 0
local.set 2
end
i32.const 0
local.get 2
i32.store8 offset=3088
i32.const 0
local.get 3
i32.store8 offset=3089
local.get 0
i32.const 32
i32.add
local.set 3
i32.const 0
local.set 4
loop ;; label = @2
block ;; label = @3
local.get 3
i32.load
i32.eqz
br_if 0 (;@3;)
i32.const 1
i32.const 9
call $__pragma_loopbound
local.get 4
i32.const 7
i32.shr_u
i32.const 1
i32.and
i32.const 0
i32.load8_u offset=3088
i32.const 1
i32.shl
i32.or
local.set 5
i32.const 0
i32.load offset=2052
local.set 2
block ;; label = @4
block ;; label = @5
block ;; label = @6
block ;; label = @7
block ;; label = @8
block ;; label = @9
block ;; label = @10
i32.const 0
i32.load8_u offset=3089
local.tee 6
i32.const 7
i32.ne
br_if 0 (;@10;)
local.get 2
i32.const 2064
i32.add
local.get 5
i32.store8
i32.const 0
local.get 2
i32.const 1
i32.add
local.tee 2
i32.store offset=2052
local.get 4
i32.const 5
i32.shr_u
i32.const 3
i32.and
local.set 5
i32.const 2
local.set 6
br 1 (;@9;)
end
local.get 4
i32.const 6
i32.shr_u
i32.const 1
i32.and
local.get 5
i32.const 1
i32.shl
i32.or
local.set 5
local.get 6
i32.const 6
i32.ne
br_if 1 (;@8;)
local.get 2
i32.const 2064
i32.add
local.get 5
i32.store8
i32.const 1
local.set 6
i32.const 0
local.get 2
i32.const 1
i32.add
local.tee 2
i32.store offset=2052
local.get 4
i32.const 5
i32.shr_u
i32.const 1
i32.and
local.set 5
end
local.get 4
i32.const 4
i32.shr_u
i32.const 1
i32.and
local.get 5
i32.const 1
i32.shl
i32.or
local.set 5
br 1 (;@7;)
end
local.get 4
i32.const 5
i32.shr_u
i32.const 1
i32.and
local.get 5
i32.const 1
i32.shl
i32.or
local.set 5
block ;; label = @8
block ;; label = @9
local.get 6
i32.const 5
i32.ne
br_if 0 (;@9;)
local.get 2
i32.const 2064
i32.add
local.get 5
i32.store8
i32.const 0
local.get 2
i32.const 1
i32.add
local.tee 2
i32.store offset=2052
local.get 4
i32.const 3
i32.shr_u
i32.const 3
i32.and
local.set 5
i32.const 2
local.set 6
br 1 (;@8;)
end
local.get 4
i32.const 4
i32.shr_u
i32.const 1
i32.and
local.get 5
i32.const 1
i32.shl
i32.or
local.set 5
local.get 6
i32.const 3
i32.add
local.tee 6
i32.const 255
i32.and
i32.const 7
i32.ne
br_if 1 (;@7;)
local.get 2
i32.const 2064
i32.add
local.get 5
i32.store8
i32.const 1
local.set 6
i32.const 0
local.get 2
i32.const 1
i32.add
local.tee 2
i32.store offset=2052
local.get 4
i32.const 3
i32.shr_u
i32.const 1
i32.and
local.set 5
end
local.get 4
i32.const 2
i32.shr_u
i32.const 1
i32.and
local.get 5
i32.const 1
i32.shl
i32.or
local.set 5
br 1 (;@6;)
end
local.get 4
i32.const 3
i32.shr_u
i32.const 1
i32.and
local.get 5
i32.const 1
i32.shl
i32.or
local.set 5
block ;; label = @7
local.get 6
i32.const 255
i32.and
i32.const 6
i32.ne
br_if 0 (;@7;)
i32.const 2
local.set 7
i32.const 7
local.set 6
br 2 (;@5;)
end
i32.const 1
local.set 7
local.get 4
i32.const 2
i32.shr_u
i32.const 1
i32.and
local.get 5
i32.const 1
i32.shl
i32.or
local.set 5
local.get 6
i32.const 2
i32.add
local.tee 6
i32.const 255
i32.and
i32.const 7
i32.ne
br_if 0 (;@6;)
i32.const 3
local.set 6
br 1 (;@5;)
end
local.get 4
i32.const 1
i32.shr_u
i32.const 1
i32.and
local.get 5
i32.const 1
i32.shl
i32.or
local.set 5
block ;; label = @6
local.get 6
i32.const 255
i32.and
i32.const 6
i32.ne
br_if 0 (;@6;)
local.get 2
i32.const 2064
i32.add
local.get 5
i32.store8
i32.const 0
local.get 2
i32.const 1
i32.add
i32.store offset=2052
local.get 4
i32.const 1
i32.and
local.set 5
i32.const 0
i32.const 1
i32.add
local.set 6
br 2 (;@4;)
end
local.get 4
i32.const 1
i32.and
local.get 5
i32.const 1
i32.shl
i32.or
local.set 5
block ;; label = @6
local.get 6
i32.const 2
i32.add
local.tee 6
i32.const 255
i32.and
i32.const 7
i32.eq
br_if 0 (;@6;)
local.get 6
i32.const 1
i32.add
local.set 6
br 2 (;@4;)
end
local.get 2
i32.const 2064
i32.add
local.get 5
i32.store8
i32.const 0
local.set 6
i32.const 0
local.get 2
i32.const 1
i32.add
i32.store offset=2052
i32.const 0
local.set 5
br 1 (;@4;)
end
local.get 2
i32.const 2064
i32.add
local.get 5
i32.store8
i32.const 0
local.get 2
i32.const 1
i32.add
i32.store offset=2052
local.get 4
local.get 6
i32.and
local.set 5
local.get 7
i32.const 1
i32.add
local.set 6
end
i32.const 0
local.get 5
i32.store8 offset=3088
i32.const 0
local.get 6
i32.store8 offset=3089
end
local.get 3
i32.const 36
i32.add
local.set 3
local.get 4
i32.const 1
i32.add
local.tee 4
i32.const 256
i32.ne
br_if 0 (;@2;)
end
end
i32.const 257
i32.const 257
call $__pragma_loopbound
local.get 1
i32.const 40
i32.add
i32.const 1
i32.or
local.set 8
i32.const 0
local.set 9
loop ;; label = @1
block ;; label = @2
local.get 0
local.get 9
i32.const 36
i32.mul
i32.add
local.tee 2
i32.load offset=32
local.tee 5
i32.eqz
br_if 0 (;@2;)
i32.const 1
i32.const 9
call $__pragma_loopbound
i32.const 0
i32.load8_u offset=3088
i32.const 1
i32.shl
local.set 4
i32.const 0
i32.load8_u offset=3089
local.set 3
block ;; label = @3
block ;; label = @4
local.get 5
i32.const 32
i32.gt_u
br_if 0 (;@4;)
block ;; label = @5
local.get 3
i32.const 255
i32.and
i32.const 7
i32.ne
br_if 0 (;@5;)
i32.const 0
local.set 6
i32.const 0
i32.load offset=2052
local.tee 3
i32.const 2064
i32.add
local.get 4
i32.store8
i32.const 0
local.get 3
i32.const 1
i32.add
i32.store offset=2052
i32.const 5
local.set 3
i32.const 0
local.set 4
br 2 (;@3;)
end
local.get 3
i32.const 1
i32.add
local.set 6
i32.const 5
local.set 3
br 1 (;@3;)
end
local.get 4
i32.const 1
i32.or
local.set 4
block ;; label = @4
local.get 3
i32.const 255
i32.and
i32.const 7
i32.ne
br_if 0 (;@4;)
i32.const 0
local.set 6
i32.const 0
i32.load offset=2052
local.tee 3
i32.const 2064
i32.add
local.get 4
i32.store8
i32.const 0
local.get 3
i32.const 1
i32.add
i32.store offset=2052
i32.const 8
local.set 3
i32.const 0
local.set 4
br 1 (;@3;)
end
local.get 3
i32.const 1
i32.add
local.set 6
i32.const 8
local.set 3
end
i32.const 0
local.get 4
i32.store8 offset=3088
i32.const 0
local.get 6
i32.store8 offset=3089
local.get 8
local.get 1
i64.load offset=9 align=1
i64.store align=1
local.get 8
i32.const 8
i32.add
local.get 1
i32.const 9
i32.add
i32.const 8
i32.add
i64.load align=1
i64.store align=1
local.get 8
i32.const 16
i32.add
local.get 1
i32.const 9
i32.add
i32.const 16
i32.add
i64.load align=1
i64.store align=1
local.get 8
i32.const 23
i32.add
local.get 1
i32.const 9
i32.add
i32.const 23
i32.add
i64.load align=1
i64.store align=1
local.get 1
local.get 5
i32.const -1
i32.add
i32.store8 offset=40
local.get 1
local.get 3
i32.store offset=72
i32.const 1
i32.const 9
call $__pragma_loopbound
local.get 3
i32.const -2
i32.add
i32.const 7
local.get 3
i32.const -1
i32.add
local.tee 4
select
local.set 3
local.get 1
i32.load8_u offset=40
local.get 4
i32.const 255
i32.and
i32.shr_u
i32.const 1
i32.and
i32.const 0
i32.load8_u offset=3088
i32.const 1
i32.shl
i32.or
local.set 6
i32.const 0
i32.const -1
local.get 4
select
local.set 7
i32.const 0
i32.load offset=2052
local.set 4
block ;; label = @3
block ;; label = @4
i32.const 0
i32.load8_u offset=3089
local.tee 10
i32.const 7
i32.ne
br_if 0 (;@4;)
local.get 4
i32.const 2064
i32.add
local.get 6
i32.store8
i32.const 0
local.set 11
i32.const 0
local.get 4
i32.const 1
i32.add
local.tee 4
i32.store offset=2052
i32.const 0
local.set 6
br 1 (;@3;)
end
local.get 10
i32.const 1
i32.add
local.set 11
end
local.get 1
i32.const 40
i32.add
local.get 7
i32.add
local.tee 12
i32.load8_u
local.get 3
i32.shr_u
i32.const 1
i32.and
local.get 6
i32.const 1
i32.shl
i32.or
local.set 10
local.get 3
i32.const -1
i32.add
local.set 6
block ;; label = @3
block ;; label = @4
local.get 11
i32.const 255
i32.and
i32.const 7
i32.eq
br_if 0 (;@4;)
local.get 11
i32.const 1
i32.add
local.set 11
br 1 (;@3;)
end
local.get 4
i32.const 2064
i32.add
local.get 10
i32.store8
i32.const 0
local.set 11
i32.const 0
local.get 4
i32.const 1
i32.add
local.tee 4
i32.store offset=2052
i32.const 0
local.set 10
end
local.get 12
i32.load8_u
local.get 6
i32.shr_u
i32.const 1
i32.and
local.get 10
i32.const 1
i32.shl
i32.or
local.set 10
local.get 3
i32.const -2
i32.add
i32.const 7
local.get 6
select
local.set 3
local.get 7
local.get 6
i32.eqz
i32.sub
local.set 7
block ;; label = @3
block ;; label = @4
local.get 11
i32.const 255
i32.and
i32.const 7
i32.eq
br_if 0 (;@4;)
local.get 11
i32.const 1
i32.add
local.set 11
br 1 (;@3;)
end
local.get 4
i32.const 2064
i32.add
local.get 10
i32.store8
i32.const 0
local.set 11
i32.const 0
local.get 4
i32.const 1
i32.add
local.tee 4
i32.store offset=2052
i32.const 0
local.set 10
end
local.get 1
i32.const 40
i32.add
local.get 7
i32.add
i32.load8_u
local.get 3
i32.shr_u
i32.const 1
i32.and
local.get 10
i32.const 1
i32.shl
i32.or
local.set 10
local.get 3
i32.const -1
i32.add
i32.const 7
local.get 3
select
local.set 6
local.get 7
local.get 3
i32.eqz
i32.sub
local.set 12
block ;; label = @3
block ;; label = @4
local.get 11
i32.const 255
i32.and
i32.const 7
i32.eq
br_if 0 (;@4;)
local.get 11
i32.const 1
i32.add
local.set 7
br 1 (;@3;)
end
local.get 4
i32.const 2064
i32.add
local.get 10
i32.store8
i32.const 0
local.set 7
i32.const 0
local.get 4
i32.const 1
i32.add
local.tee 4
i32.store offset=2052
i32.const 0
local.set 10
end
local.get 1
i32.const 40
i32.add
local.get 12
i32.add
i32.load8_u
local.get 6
i32.shr_u
i32.const 1
i32.and
local.get 10
i32.const 1
i32.shl
i32.or
local.set 3
block ;; label = @3
block ;; label = @4
local.get 7
i32.const 255
i32.and
i32.const 7
i32.eq
br_if 0 (;@4;)
local.get 7
i32.const 1
i32.add
local.set 7
br 1 (;@3;)
end
local.get 4
i32.const 2064
i32.add
local.get 3
i32.store8
i32.const 0
local.set 7
i32.const 0
local.get 4
i32.const 1
i32.add
local.tee 4
i32.store offset=2052
i32.const 0
local.set 3
end
block ;; label = @3
local.get 5
i32.const 33
i32.lt_u
br_if 0 (;@3;)
local.get 6
i32.const -1
i32.add
i32.const 7
local.get 6
select
local.tee 5
i32.const -1
i32.add
i32.const 7
local.get 5
i32.const 255
i32.and
local.tee 5
select
local.set 10
local.get 1
i32.const 40
i32.add
local.get 12
local.get 6
i32.eqz
i32.sub
local.tee 6
i32.add
i32.load8_u
local.get 5
i32.shr_u
i32.const 1
i32.and
local.get 3
i32.const 255
i32.and
i32.const 1
i32.shl
i32.or
local.set 3
local.get 6
local.get 5
i32.eqz
i32.sub
local.set 5
block ;; label = @4
block ;; label = @5
local.get 7
i32.const 255
i32.and
i32.const 7
i32.eq
br_if 0 (;@5;)
local.get 7
i32.const 1
i32.add
local.set 7
br 1 (;@4;)
end
local.get 4
i32.const 2064
i32.add
local.get 3
i32.store8
i32.const 0
local.set 7
i32.const 0
local.get 4
i32.const 1
i32.add
local.tee 4
i32.store offset=2052
i32.const 0
local.set 3
end
local.get 10
i32.const -1
i32.add
i32.const 7
local.get 10
i32.const 255
i32.and
local.tee 6
select
local.set 10
local.get 1
i32.const 40
i32.add
local.get 5
i32.add
i32.load8_u
local.get 6
i32.shr_u
i32.const 1
i32.and
local.get 3
i32.const 1
i32.shl
i32.or
local.set 3
local.get 5
local.get 6
i32.eqz
i32.sub
local.set 6
block ;; label = @4
block ;; label = @5
local.get 7
i32.const 255
i32.and
i32.const 7
i32.eq
br_if 0 (;@5;)
local.get 7
i32.const 1
i32.add
local.set 5
br 1 (;@4;)
end
local.get 4
i32.const 2064
i32.add
local.get 3
i32.store8
i32.const 0
local.set 5
i32.const 0
local.get 4
i32.const 1
i32.add
local.tee 4
i32.store offset=2052
i32.const 0
local.set 3
end
local.get 1
i32.const 40
i32.add
local.get 6
i32.add
i32.load8_u
local.get 10
i32.const 255
i32.and
i32.shr_u
i32.const 1
i32.and
local.get 3
i32.const 1
i32.shl
i32.or
local.set 3
block ;; label = @4
local.get 5
i32.const 255
i32.and
i32.const 7
i32.eq
br_if 0 (;@4;)
local.get 5
i32.const 1
i32.add
local.set 7
br 1 (;@3;)
end
local.get 4
i32.const 2064
i32.add
local.get 3
i32.store8
i32.const 0
local.set 7
i32.const 0
local.get 4
i32.const 1
i32.add
i32.store offset=2052
i32.const 0
local.set 3
end
i32.const 0
local.get 3
i32.store8 offset=3088
i32.const 0
local.get 7
i32.store8 offset=3089
local.get 1
i32.const 40
i32.add
i32.const 24
i32.add
local.get 2
i32.const 24
i32.add
i64.load align=1
i64.store
local.get 1
i32.const 40
i32.add
i32.const 16
i32.add
local.get 2
i32.const 16
i32.add
i64.load align=1
i64.store
local.get 1
i32.const 40
i32.add
i32.const 8
i32.add
local.get 2
i32.const 8
i32.add
i64.load align=1
i64.store
local.get 1
i32.const 40
i32.add
i32.const 32
i32.add
local.get 2
i32.const 32
i32.add
i32.load align=1
local.tee 11
i32.store
local.get 1
local.get 2
i64.load align=1
i64.store offset=40
i32.const 1
i32.const 9
call $__pragma_loopbound
local.get 11
i32.eqz
br_if 0 (;@2;)
local.get 11
i32.const -1
i32.add
local.tee 2
i32.const 7
i32.and
local.set 4
local.get 2
i32.const 3
i32.shr_u
local.set 2
i32.const 0
i32.load8_u offset=3088
local.set 6
i32.const 0
i32.load8_u offset=3089
local.set 5
i32.const 0
i32.load offset=2052
local.set 12
i32.const 1
local.set 7
loop ;; label = @3
local.get 1
i32.const 40
i32.add
local.get 2
i32.add
i32.load8_u
local.get 4
i32.const 255
i32.and
local.tee 3
i32.shr_u
i32.const 1
i32.and
local.get 6
i32.const 255
i32.and
i32.const 1
i32.shl
i32.or
local.set 6
local.get 3
i32.eqz
local.set 10
block ;; label = @4
block ;; label = @5
local.get 5
i32.const 255
i32.and
i32.const 7
i32.ne
br_if 0 (;@5;)
local.get 12
i32.const 2064
i32.add
local.get 6
i32.store8
i32.const 0
local.set 5
i32.const 0
local.get 12
i32.const 1
i32.add
local.tee 12
i32.store offset=2052
i32.const 0
local.set 6
br 1 (;@4;)
end
local.get 5
i32.const 1
i32.add
local.set 5
end
local.get 4
i32.const -1
i32.add
i32.const 7
local.get 3
select
local.set 4
local.get 2
local.get 10
i32.sub
local.set 2
local.get 11
local.get 7
i32.const 1
i32.add
local.tee 7
i32.const 255
i32.and
i32.ge_u
br_if 0 (;@3;)
end
i32.const 0
local.get 6
i32.store8 offset=3088
i32.const 0
local.get 5
i32.store8 offset=3089
end
local.get 9
i32.const 1
i32.add
local.tee 9
i32.const 257
i32.ne
br_if 0 (;@1;)
end
local.get 1
i32.const 80
i32.add
global.set $__stack_pointer)
(func $huff_enc_qsort (type 3) (param i32 i32 i32)
(local i32 i32 i32 i32 i32 i32 i32 i32 i32 i32 i32 i32 i32 i32)
i32.const 0
i32.const 7
call $__pragma_loopbound
block ;; label = @1
local.get 1
i32.const 2
i32.lt_u
br_if 0 (;@1;)
local.get 2
i32.const -4
i32.and
local.set 3
local.get 2
i32.const 3
i32.and
local.set 4
local.get 2
i32.const -1
i32.add
local.set 5
i32.const 0
local.get 2
i32.sub
local.set 6
loop ;; label = @2
block ;; label = @3
block ;; label = @4
local.get 1
i32.const 11
i32.lt_u
br_if 0 (;@4;)
local.get 0
local.get 1
i32.const 6
i32.div_u
local.get 2
i32.mul
local.tee 7
i32.add
local.tee 8
local.get 7
i32.const 1
i32.shl
local.tee 7
i32.add
local.tee 9
local.get 7
i32.add
local.tee 10
i32.load
i32.load offset=4
local.set 11
block ;; label = @5
local.get 9
i32.load
i32.load offset=4
local.tee 12
local.get 8
i32.load
i32.load offset=4
local.tee 13
i32.ge_u
br_if 0 (;@5;)
local.get 8
local.set 7
local.get 11
local.get 13
i32.ge_u
br_if 2 (;@3;)
local.get 9
local.get 10
local.get 11
local.get 12
i32.lt_u
select
local.set 7
br 2 (;@3;)
end
local.get 9
local.set 7
local.get 11
local.get 12
i32.ge_u
br_if 1 (;@3;)
local.get 8
local.get 10
local.get 11
local.get 13
i32.lt_u
select
local.set 7
br 1 (;@3;)
end
local.get 0
local.get 1
i32.const 1
i32.shr_u
local.get 2
i32.mul
i32.add
local.set 7
end
i32.const 8
i32.const 8
call $__pragma_loopbound
block ;; label = @3
block ;; label = @4
local.get 4
br_if 0 (;@4;)
local.get 0
local.set 8
local.get 2
local.set 9
br 1 (;@3;)
end
local.get 4
local.set 9
local.get 0
local.set 8
loop ;; label = @4
local.get 8
i32.load8_u
local.set 11
local.get 8
local.get 7
i32.load8_u
i32.store8
local.get 7
local.get 11
i32.store8
local.get 7
i32.const 1
i32.add
local.set 7
local.get 8
i32.const 1
i32.add
local.set 8
local.get 9
i32.const -1
i32.add
local.tee 9
br_if 0 (;@4;)
end
local.get 3
local.set 9
end
block ;; label = @3
local.get 5
i32.const 3
i32.lt_u
local.tee 14
br_if 0 (;@3;)
loop ;; label = @4
local.get 8
i32.load8_u
local.set 11
local.get 8
local.get 7
i32.load8_u
i32.store8
local.get 7
local.get 11
i32.store8
local.get 8
i32.const 1
i32.add
local.tee 11
i32.load8_u
local.set 12
local.get 11
local.get 7
i32.const 1
i32.add
local.tee 13
i32.load8_u
i32.store8
local.get 13
local.get 12
i32.store8
local.get 8
i32.const 2
i32.add
local.tee 11
i32.load8_u
local.set 12
local.get 11
local.get 7
i32.const 2
i32.add
local.tee 13
i32.load8_u
i32.store8
local.get 13
local.get 12
i32.store8
local.get 8
i32.const 3
i32.add
local.tee 11
i32.load8_u
local.set 12
local.get 11
local.get 7
i32.const 3
i32.add
local.tee 13
i32.load8_u
i32.store8
local.get 13
local.get 12
i32.store8
local.get 8
i32.const 4
i32.add
local.set 8
local.get 7
i32.const 4
i32.add
local.set 7
local.get 9
i32.const -4
i32.add
local.tee 9
br_if 0 (;@4;)
end
end
i32.const 0
i32.const 109
call $__pragma_loopbound
local.get 0
local.set 9
local.get 0
local.get 1
local.get 2
i32.mul
i32.add
local.tee 15
local.set 10
block ;; label = @3
loop ;; label = @4
i32.const 1
i32.const 19
call $__pragma_loopbound
local.get 9
local.get 2
i32.add
local.set 7
block ;; label = @5
loop ;; label = @6
local.get 7
local.tee 9
local.get 15
i32.ge_u
br_if 1 (;@5;)
local.get 9
local.get 2
i32.add
local.set 7
local.get 0
i32.load
i32.load offset=4
local.get 9
i32.load
i32.load offset=4
i32.lt_u
br_if 0 (;@6;)
end
end
i32.const 1
i32.const 25
call $__pragma_loopbound
local.get 6
local.set 7
block ;; label = @5
loop ;; label = @6
local.get 10
local.get 7
local.tee 11
i32.add
local.tee 13
local.get 0
i32.le_u
br_if 1 (;@5;)
local.get 11
local.get 2
i32.sub
local.set 7
local.get 0
i32.load
i32.load offset=4
local.get 13
i32.load
i32.load offset=4
i32.gt_u
br_if 0 (;@6;)
end
end
i32.const 8
i32.const 8
call $__pragma_loopbound
block ;; label = @5
block ;; label = @6
local.get 13
local.get 9
i32.ge_u
br_if 0 (;@6;)
local.get 10
local.get 11
i32.add
local.set 7
block ;; label = @7
block ;; label = @8
local.get 4
br_if 0 (;@8;)
local.get 0
local.set 8
local.get 2
local.set 9
br 1 (;@7;)
end
local.get 4
local.set 9
local.get 0
local.set 8
loop ;; label = @8
local.get 8
i32.load8_u
local.set 12
local.get 8
local.get 7
i32.load8_u
i32.store8
local.get 7
local.get 12
i32.store8
local.get 7
i32.const 1
i32.add
local.set 7
local.get 8
i32.const 1
i32.add
local.set 8
local.get 9
i32.const -1
i32.add
local.tee 9
br_if 0 (;@8;)
end
local.get 3
local.set 9
end
block ;; label = @7
local.get 14
br_if 0 (;@7;)
loop ;; label = @8
local.get 8
i32.load8_u
local.set 12
local.get 8
local.get 7
i32.load8_u
i32.store8
local.get 7
local.get 12
i32.store8
local.get 8
i32.const 1
i32.add
local.tee 12
i32.load8_u
local.set 13
local.get 12
local.get 7
i32.const 1
i32.add
local.tee 16
i32.load8_u
i32.store8
local.get 16
local.get 13
i32.store8
local.get 8
i32.const 2
i32.add
local.tee 12
i32.load8_u
local.set 13
local.get 12
local.get 7
i32.const 2
i32.add
local.tee 16
i32.load8_u
i32.store8
local.get 16
local.get 13
i32.store8
local.get 8
i32.const 3
i32.add
local.tee 12
i32.load8_u
local.set 13
local.get 12
local.get 7
i32.const 3
i32.add
local.tee 16
i32.load8_u
i32.store8
local.get 16
local.get 13
i32.store8
local.get 8
i32.const 4
i32.add
local.set 8
local.get 7
i32.const 4
i32.add
local.set 7
local.get 9
i32.const -4
i32.add
local.tee 9
br_if 0 (;@8;)
end
end
local.get 10
local.get 0
i32.sub
local.get 11
i32.add
local.get 2
i32.div_u
local.tee 7
local.get 1
local.get 7
i32.const -1
i32.xor
i32.add
local.tee 1
i32.lt_u
br_if 1 (;@5;)
local.get 0
local.get 7
local.get 2
call $huff_enc_qsort
local.get 0
local.get 7
i32.const 1
i32.add
local.get 2
i32.mul
i32.add
local.set 0
br 3 (;@3;)
end
local.get 9
local.set 7
local.get 13
local.set 8
local.get 2
local.set 12
block ;; label = @6
local.get 4
i32.eqz
br_if 0 (;@6;)
local.get 10
local.get 11
i32.add
local.set 10
i32.const 0
local.set 8
loop ;; label = @7
local.get 9
local.get 8
i32.add
local.tee 7
i32.load8_u
local.set 11
local.get 7
local.get 10
local.get 8
i32.add
local.tee 12
i32.load8_u
i32.store8
local.get 12
local.get 11
i32.store8
local.get 4
local.get 8
i32.const 1
i32.add
local.tee 8
i32.ne
br_if 0 (;@7;)
end
local.get 2
local.get 8
i32.sub
local.set 12
local.get 9
local.get 8
i32.add
local.set 7
local.get 10
local.get 8
i32.add
local.set 8
end
local.get 13
local.set 10
local.get 14
br_if 1 (;@4;)
loop ;; label = @6
local.get 7
i32.load8_u
local.set 11
local.get 7
local.get 8
i32.load8_u
i32.store8
local.get 8
local.get 11
i32.store8
local.get 7
i32.const 1
i32.add
local.tee 11
i32.load8_u
local.set 10
local.get 11
local.get 8
i32.const 1
i32.add
local.tee 16
i32.load8_u
i32.store8
local.get 16
local.get 10
i32.store8
local.get 7
i32.const 2
i32.add
local.tee 11
i32.load8_u
local.set 10
local.get 11
local.get 8
i32.const 2
i32.add
local.tee 16
i32.load8_u
i32.store8
local.get 16
local.get 10
i32.store8
local.get 7
i32.const 3
i32.add
local.tee 11
i32.load8_u
local.set 10
local.get 11
local.get 8
i32.const 3
i32.add
local.tee 16
i32.load8_u
i32.store8
local.get 16
local.get 10
i32.store8
local.get 7
i32.const 4
i32.add
local.set 7
local.get 8
i32.const 4
i32.add
local.set 8
local.get 12
i32.const -4
i32.add
local.tee 12
br_if 0 (;@6;)
end
local.get 13
local.set 10
br 1 (;@4;)
end
end
local.get 0
local.get 7
i32.const 1
i32.add
local.get 2
i32.mul
i32.add
local.get 1
local.get 2
call $huff_enc_qsort
local.get 7
local.set 1
end
local.get 1
i32.const 1
i32.gt_u
br_if 0 (;@2;)
end
end)
(func $huff_enc_build_tree_encoding (type 4) (param i32) (result i32)
(local i32 i32 i32 i32 i32)
global.get $__stack_pointer
i32.const 1040
i32.sub
local.tee 1
global.set $__stack_pointer
i32.const 257
i32.const 257
call $__pragma_loopbound
local.get 1
local.set 2
local.get 0
local.set 3
i32.const 0
local.set 4
block ;; label = @1
loop ;; label = @2
local.get 3
local.get 4
i32.store
local.get 2
local.get 3
i32.store
local.get 3
i32.const 12
i32.add
i32.const 0
i32.store
local.get 3
i32.const 4
i32.add
i64.const 0
i64.store align=4
local.get 4
i32.const 256
i32.eq
br_if 1 (;@1;)
local.get 3
i32.const 28
i32.add
i32.const 0
i32.store
local.get 3
i32.const 20
i32.add
i64.const 0
i64.store align=4
local.get 3
i32.const 16
i32.add
local.tee 5
local.get 4
i32.const 1
i32.add
i32.store
local.get 2
i32.const 4
i32.add
local.get 5
i32.store
local.get 4
i32.const 2
i32.add
local.set 4
local.get 2
i32.const 8
i32.add
local.set 2
local.get 3
i32.const 32
i32.add
local.set 3
br 0 (;@2;)
end
end
block ;; label = @1
i32.const 0
i32.load offset=2048
i32.const 599
i32.gt_s
br_if 0 (;@1;)
i32.const 600
i32.const 600
call $__pragma_loopbound
block ;; label = @2
i32.const 0
i32.load offset=2048
local.tee 4
i32.const 599
i32.gt_s
br_if 0 (;@2;)
local.get 4
local.set 3
block ;; label = @3
local.get 4
i32.const 1
i32.and
i32.eqz
br_if 0 (;@3;)
local.get 1
local.get 4
i32.const 1443
i32.add
i32.load8_s
i32.const 2
i32.shl
i32.add
i32.load
local.tee 3
local.get 3
i32.load offset=4
i32.const 1
i32.add
i32.store offset=4
local.get 4
i32.const 1
i32.add
local.set 3
end
block ;; label = @3
local.get 4
i32.const 599
i32.eq
br_if 0 (;@3;)
loop ;; label = @4
local.get 1
local.get 3
i32.const 1443
i32.add
i32.load8_s
i32.const 2
i32.shl
i32.add
i32.load
local.tee 4
local.get 4
i32.load offset=4
i32.const 1
i32.add
i32.store offset=4
local.get 1
local.get 3
i32.const 1444
i32.add
i32.load8_s
i32.const 2
i32.shl
i32.add
i32.load
local.tee 4
local.get 4
i32.load offset=4
i32.const 1
i32.add
i32.store offset=4
local.get 3
i32.const 2
i32.add
local.tee 3
i32.const 600
i32.ne
br_if 0 (;@4;)
end
end
i32.const 0
i32.const 600
i32.store offset=2048
end
local.get 1
i32.load offset=1024
i32.const 1
i32.store offset=4
local.get 1
i32.const 257
i32.const 4
call $huff_enc_qsort
local.get 1
i32.const 1012
i32.add
local.set 3
i32.const 253
local.set 4
block ;; label = @2
block ;; label = @3
block ;; label = @4
block ;; label = @5
block ;; label = @6
loop ;; label = @7
local.get 3
i32.const 12
i32.add
i32.load
i32.load offset=4
br_if 2 (;@5;)
local.get 3
i32.const 8
i32.add
i32.load
i32.load offset=4
br_if 1 (;@6;)
local.get 3
i32.const 4
i32.add
i32.load
i32.load offset=4
br_if 3 (;@4;)
local.get 3
i32.load
i32.load offset=4
br_if 4 (;@3;)
local.get 3
i32.const -16
i32.add
local.set 3
local.get 4
i32.const -4
i32.add
local.tee 4
i32.const -3
i32.ne
br_if 0 (;@7;)
end
i32.const 38
i32.const 38
call $__pragma_loopbound
i32.const 1
local.set 2
br 4 (;@2;)
end
local.get 4
i32.const 2
i32.add
local.set 4
br 2 (;@3;)
end
local.get 4
i32.const 3
i32.add
local.set 4
br 1 (;@3;)
end
local.get 4
i32.const 1
i32.add
local.set 4
end
i32.const 38
i32.const 38
call $__pragma_loopbound
local.get 4
i32.const 1
i32.add
local.tee 2
i32.eqz
br_if 1 (;@1;)
end
local.get 0
i32.const 4112
i32.add
local.set 3
loop ;; label = @2
local.get 3
i32.const 257
i32.store
local.get 3
i32.const 8
i32.add
local.get 1
local.get 2
i32.const -1
i32.add
local.tee 4
i32.const 2
i32.shl
i32.add
i32.load
local.tee 5
i32.store
local.get 3
i32.const 4
i32.add
local.tee 0
local.get 5
i32.load offset=4
local.tee 5
i32.store
block ;; label = @3
block ;; label = @4
local.get 4
br_if 0 (;@4;)
i32.const 0
local.set 2
i32.const 0
local.set 4
br 1 (;@3;)
end
local.get 0
local.get 1
local.get 2
i32.const -2
i32.add
local.tee 4
i32.const 2
i32.shl
i32.add
i32.load
local.tee 2
i32.load offset=4
local.get 5
i32.add
i32.store
end
local.get 3
i32.const 12
i32.add
local.get 2
i32.store
local.get 1
local.get 4
i32.const 2
i32.shl
i32.add
local.get 3
i32.store
local.get 1
local.get 4
i32.const 1
i32.add
local.tee 2
i32.const 4
call $huff_enc_qsort
local.get 3
i32.const 16
i32.add
local.set 3
local.get 4
br_if 0 (;@2;)
end
end
local.get 1
i32.load
local.set 3
local.get 1
i32.const 1040
i32.add
global.set $__stack_pointer
local.get 3)
(func $huff_enc_encode_codes_table (type 3) (param i32 i32 i32)
(local i32 i32 i32 i32 i32)
global.get $__stack_pointer
i32.const 48
i32.sub
local.tee 3
global.set $__stack_pointer
block ;; label = @1
block ;; label = @2
local.get 0
i32.load
local.tee 4
i32.const 257
i32.ne
br_if 0 (;@2;)
block ;; label = @3
local.get 0
i32.load offset=8
i32.eqz
br_if 0 (;@3;)
local.get 3
i32.const 8
i32.add
i32.const 32
i32.add
local.get 2
i32.const 32
i32.add
i32.load
i32.store
local.get 3
i32.const 8
i32.add
i32.const 24
i32.add
local.get 2
i32.const 24
i32.add
i64.load align=4
i64.store
local.get 3
i32.const 8
i32.add
i32.const 16
i32.add
local.get 2
i32.const 16
i32.add
i64.load align=4
i64.store
local.get 3
i32.const 8
i32.add
i32.const 8
i32.add
local.get 2
i32.const 8
i32.add
i64.load align=4
i64.store
local.get 3
local.get 2
i64.load align=4
i64.store offset=8
i32.const 31
i32.const 31
call $__pragma_loopbound
local.get 2
i32.load8_u offset=31
local.set 5
i32.const 0
local.set 4
block ;; label = @4
loop ;; label = @5
local.get 2
local.get 4
i32.add
local.tee 6
i32.const 31
i32.add
local.get 5
i32.const 1
i32.shl
local.get 6
i32.const 30
i32.add
local.tee 7
i32.load8_u
local.tee 5
i32.const 7
i32.shr_u
i32.const 1
i32.and
i32.or
i32.store8
local.get 4
i32.const -30
i32.eq
br_if 1 (;@4;)
local.get 7
local.get 5
i32.const 1
i32.shl
local.get 6
i32.const 29
i32.add
i32.load8_u
local.tee 5
i32.const 7
i32.shr_u
i32.const 1
i32.and
i32.or
i32.store8
local.get 4
i32.const -2
i32.add
local.set 4
br 0 (;@5;)
end
end
local.get 2
local.get 2
i32.load8_u
i32.const 1
i32.shl
i32.const 1
i32.or
i32.store8
local.get 2
i32.const 32
i32.add
local.tee 4
local.get 4
i32.load
i32.const 1
i32.add
i32.store
local.get 0
i32.load offset=8
local.get 1
local.get 2
call $huff_enc_encode_codes_table
local.get 4
local.get 3
i32.const 8
i32.add
i32.const 32
i32.add
i32.load
i32.store
local.get 2
i32.const 24
i32.add
local.get 3
i32.const 8
i32.add
i32.const 24
i32.add
i64.load
i64.store align=4
local.get 2
i32.const 16
i32.add
local.get 3
i32.const 8
i32.add
i32.const 16
i32.add
i64.load
i64.store align=4
local.get 2
i32.const 8
i32.add
local.get 3
i32.const 8
i32.add
i32.const 8
i32.add
i64.load
i64.store align=4
local.get 2
local.get 3
i64.load offset=8
i64.store align=4
end
local.get 0
i32.load offset=12
i32.eqz
br_if 1 (;@1;)
local.get 3
i32.const 8
i32.add
i32.const 32
i32.add
local.get 2
i32.const 32
i32.add
i32.load
i32.store
local.get 3
i32.const 8
i32.add
i32.const 24
i32.add
local.get 2
i32.const 24
i32.add
i64.load align=4
i64.store
local.get 3
i32.const 8
i32.add
i32.const 16
i32.add
local.get 2
i32.const 16
i32.add
i64.load align=4
i64.store
local.get 3
i32.const 8
i32.add
i32.const 8
i32.add
local.get 2
i32.const 8
i32.add
i64.load align=4
i64.store
local.get 3
local.get 2
i64.load align=4
i64.store offset=8
i32.const 31
i32.const 31
call $__pragma_loopbound
local.get 2
i32.load8_u offset=31
local.set 5
i32.const 0
local.set 4
block ;; label = @3
loop ;; label = @4
local.get 2
local.get 4
i32.add
local.tee 6
i32.const 31
i32.add
local.get 5
i32.const 1
i32.shl
local.get 6
i32.const 30
i32.add
local.tee 7
i32.load8_u
local.tee 5
i32.const 7
i32.shr_u
i32.const 1
i32.and
i32.or
i32.store8
local.get 4
i32.const -30
i32.eq
br_if 1 (;@3;)
local.get 7
local.get 5
i32.const 1
i32.shl
local.get 6
i32.const 29
i32.add
i32.load8_u
local.tee 5
i32.const 7
i32.shr_u
i32.const 1
i32.and
i32.or
i32.store8
local.get 4
i32.const -2
i32.add
local.set 4
br 0 (;@4;)
end
end
local.get 2
local.get 2
i32.load8_u
i32.const 1
i32.shl
i32.store8
local.get 2
i32.const 32
i32.add
local.tee 4
local.get 4
i32.load
i32.const 1
i32.add
i32.store
local.get 0
i32.load offset=12
local.get 1
local.get 2
call $huff_enc_encode_codes_table
local.get 4
local.get 3
i32.const 8
i32.add
i32.const 32
i32.add
i32.load
i32.store
local.get 2
i32.const 24
i32.add
local.get 3
i32.const 8
i32.add
i32.const 24
i32.add
i64.load
i64.store align=4
local.get 2
i32.const 16
i32.add
local.get 3
i32.const 8
i32.add
i32.const 16
i32.add
i64.load
i64.store align=4
local.get 2
i32.const 8
i32.add
local.get 3
i32.const 8
i32.add
i32.const 8
i32.add
i64.load
i64.store align=4
local.get 2
local.get 3
i64.load offset=8
i64.store align=4
br 1 (;@1;)
end
local.get 1
local.get 4
i32.const 36
i32.mul
i32.add
local.tee 4
local.get 2
i64.load align=4
i64.store align=4
local.get 4
i32.const 32
i32.add
local.get 2
i32.const 32
i32.add
i32.load
i32.store
local.get 4
i32.const 24
i32.add
local.get 2
i32.const 24
i32.add
i64.load align=4
i64.store align=4
local.get 4
i32.const 16
i32.add
local.get 2
i32.const 16
i32.add
i64.load align=4
i64.store align=4
local.get 4
i32.const 8
i32.add
local.get 2
i32.const 8
i32.add
i64.load align=4
i64.store align=4
end
local.get 3
i32.const 48
i32.add
global.set $__stack_pointer)
(func $huff_enc_create_codes_table (type 0) (param i32 i32)
(local i32 i32 i32)
global.get $__stack_pointer
i32.const 48
i32.sub
local.tee 2
global.set $__stack_pointer
i32.const 32
i32.const 32
call $__pragma_loopbound
local.get 2
i32.const 0
i32.store offset=44
local.get 2
i64.const 0
i64.store offset=36 align=4
local.get 2
i64.const 0
i64.store offset=28 align=4
local.get 2
i64.const 0
i64.store offset=20 align=4
local.get 2
i64.const 0
i64.store offset=12 align=4
i32.const 257
i32.const 257
call $__pragma_loopbound
i32.const 0
local.set 3
loop ;; label = @1
i32.const 32
i32.const 32
call $__pragma_loopbound
local.get 1
local.get 3
i32.add
local.tee 4
i64.const 0
i64.store align=1
local.get 4
i32.const 32
i32.add
i32.const 0
i32.store
local.get 4
i32.const 24
i32.add
i64.const 0
i64.store align=1
local.get 4
i32.const 16
i32.add
i64.const 0
i64.store align=1
local.get 4
i32.const 8
i32.add
i64.const 0
i64.store align=1
local.get 3
i32.const 36
i32.add
local.tee 3
i32.const 9252
i32.ne
br_if 0 (;@1;)
end
local.get 0
local.get 1
local.get 2
i32.const 12
i32.add
call $huff_enc_encode_codes_table
local.get 2
i32.const 48
i32.add
global.set $__stack_pointer)
(func $huff_enc_main (type 1)
(local i32 i32 i32 i32 i32 i32 i32 i32 i32 i32)
global.get $__stack_pointer
i32.const 17536
i32.sub
local.tee 0
global.set $__stack_pointer
block ;; label = @1
i32.const 0
i32.load offset=2048
i32.const 599
i32.gt_s
br_if 0 (;@1;)
local.get 0
i32.const 9264
i32.add
call $huff_enc_build_tree_encoding
local.get 0
call $huff_enc_create_codes_table
local.get 0
call $huff_enc_write_header
i32.const 0
i32.const 0
i32.store offset=2048
i32.const 600
i32.const 600
call $__pragma_loopbound
block ;; label = @2
i32.const 0
i32.load offset=2048
local.tee 1
i32.const 599
i32.gt_s
br_if 0 (;@2;)
loop ;; label = @3
i32.const 0
local.get 1
i32.const 1
i32.add
i32.store offset=2048
local.get 0
i32.const 17496
i32.add
i32.const 24
i32.add
local.get 0
local.get 1
i32.const 1443
i32.add
i32.load8_u
i32.const 36
i32.mul
i32.add
local.tee 1
i32.const 24
i32.add
i64.load align=4
i64.store
local.get 0
i32.const 17496
i32.add
i32.const 16
i32.add
local.get 1
i32.const 16
i32.add
i64.load align=4
i64.store
local.get 0
i32.const 17496
i32.add
i32.const 8
i32.add
local.get 1
i32.const 8
i32.add
i64.load align=4
i64.store
local.get 0
i32.const 17496
i32.add
i32.const 32
i32.add
local.get 1
i32.const 32
i32.add
i32.load
local.tee 2
i32.store
local.get 0
local.get 1
i64.load align=4
i64.store offset=17496
i32.const 1
i32.const 9
call $__pragma_loopbound
block ;; label = @4
local.get 2
i32.eqz
br_if 0 (;@4;)
local.get 2
i32.const -1
i32.add
local.tee 3
i32.const 7
i32.and
local.set 1
local.get 3
i32.const 3
i32.shr_u
local.set 3
i32.const 0
i32.load8_u offset=3088
local.set 4
i32.const 0
i32.load8_u offset=3089
local.set 5
i32.const 0
i32.load offset=2052
local.set 6
i32.const 1
local.set 7
loop ;; label = @5
local.get 0
i32.const 17496
i32.add
local.get 3
i32.add
i32.load8_u
local.get 1
i32.const 255
i32.and
local.tee 8
i32.shr_u
i32.const 1
i32.and
local.get 4
i32.const 255
i32.and
i32.const 1
i32.shl
i32.or
local.set 4
local.get 8
i32.eqz
local.set 9
block ;; label = @6
block ;; label = @7
local.get 5
i32.const 255
i32.and
i32.const 7
i32.ne
br_if 0 (;@7;)
local.get 6
i32.const 2064
i32.add
local.get 4
i32.store8
i32.const 0
local.set 5
i32.const 0
local.get 6
i32.const 1
i32.add
local.tee 6
i32.store offset=2052
i32.const 0
local.set 4
br 1 (;@6;)
end
local.get 5
i32.const 1
i32.add
local.set 5
end
local.get 1
i32.const -1
i32.add
i32.const 7
local.get 8
select
local.set 1
local.get 3
local.get 9
i32.sub
local.set 3
local.get 2
local.get 7
i32.const 1
i32.add
local.tee 7
i32.const 255
i32.and
i32.ge_u
br_if 0 (;@5;)
end
i32.const 0
local.get 4
i32.store8 offset=3088
i32.const 0
local.get 5
i32.store8 offset=3089
end
i32.const 0
i32.load offset=2048
local.tee 1
i32.const 600
i32.lt_s
br_if 0 (;@3;)
end
end
local.get 0
i32.const 17520
i32.add
local.get 0
i32.const 9240
i32.add
i64.load
i64.store
local.get 0
i32.const 17512
i32.add
local.get 0
i32.const 9232
i32.add
i64.load
i64.store
local.get 0
i32.const 17504
i32.add
local.get 0
i32.const 9224
i32.add
i64.load
i64.store
local.get 0
i32.const 17528
i32.add
local.get 0
i32.const 9248
i32.add
i32.load
local.tee 2
i32.store
local.get 0
local.get 0
i64.load offset=9216
i64.store offset=17496
i32.const 1
i32.const 9
call $__pragma_loopbound
block ;; label = @2
block ;; label = @3
local.get 2
i32.eqz
br_if 0 (;@3;)
local.get 2
i32.const -1
i32.add
local.tee 3
i32.const 7
i32.and
local.set 1
local.get 3
i32.const 3
i32.shr_u
local.set 3
i32.const 0
i32.load8_u offset=3088
local.set 4
i32.const 0
i32.load8_u offset=3089
local.set 5
i32.const 0
i32.load offset=2052
local.set 6
i32.const 1
local.set 7
loop ;; label = @4
local.get 0
i32.const 17496
i32.add
local.get 3
i32.add
i32.load8_u
local.get 1
i32.const 255
i32.and
local.tee 8
i32.shr_u
i32.const 1
i32.and
local.get 4
i32.const 255
i32.and
i32.const 1
i32.shl
i32.or
local.set 4
local.get 8
i32.eqz
local.set 9
block ;; label = @5
block ;; label = @6
local.get 5
i32.const 255
i32.and
i32.const 7
i32.ne
br_if 0 (;@6;)
local.get 6
i32.const 2064
i32.add
local.get 4
i32.store8
i32.const 0
local.set 5
i32.const 0
local.get 6
i32.const 1
i32.add
local.tee 6
i32.store offset=2052
i32.const 0
local.set 4
br 1 (;@5;)
end
local.get 5
i32.const 1
i32.add
local.set 5
end
local.get 1
i32.const -1
i32.add
i32.const 7
local.get 8
select
local.set 1
local.get 3
local.get 9
i32.sub
local.set 3
local.get 2
local.get 7
i32.const 1
i32.add
local.tee 7
i32.const 255
i32.and
i32.ge_u
br_if 0 (;@4;)
end
i32.const 0
local.get 4
i32.store8 offset=3088
i32.const 0
local.get 5
i32.store8 offset=3089
br 1 (;@2;)
end
i32.const 0
i32.load8_u offset=3089
local.set 5
end
local.get 5
i32.const 255
i32.and
local.tee 1
i32.eqz
br_if 0 (;@1;)
i32.const 0
i32.const 0
i32.load offset=2052
local.tee 3
i32.const 1
i32.add
i32.store offset=2052
local.get 3
i32.const 2064
i32.add
i32.const 0
i32.load8_u offset=3088
i32.const 8
local.get 1
i32.sub
i32.shl
i32.store8
end
local.get 0
i32.const 17536
i32.add
global.set $__stack_pointer)
(func $__original_main (type 5) (result i32)
(local i32 i32 i32)
i32.const 0
local.set 0
i32.const 0
i32.const 0
i32.store offset=2052
i32.const 0
i32.const 0
i32.store offset=2048
call $huff_enc_main
i32.const 419
i32.const 419
call $__pragma_loopbound
block ;; label = @1
block ;; label = @2
block ;; label = @3
block ;; label = @4
loop ;; label = @5
local.get 0
i32.const 1024
i32.add
i32.load8_u
local.get 0
i32.const 2064
i32.add
i32.load8_u
i32.ne
br_if 1 (;@4;)
local.get 0
i32.const 1025
i32.add
i32.load8_u
local.get 0
i32.const 2065
i32.add
i32.load8_u
i32.ne
br_if 2 (;@3;)
local.get 0
i32.const 1026
i32.add
i32.load8_u
local.get 0
i32.const 2066
i32.add
i32.load8_u
i32.ne
br_if 3 (;@2;)
block ;; label = @6
local.get 0
i32.const 416
i32.ne
br_if 0 (;@6;)
i32.const 0
return
end
local.get 0
i32.const 2067
i32.add
local.set 1
local.get 0
i32.const 1027
i32.add
local.set 2
local.get 0
i32.const 4
i32.add
local.set 0
local.get 2
i32.load8_u
local.get 1
i32.load8_u
i32.eq
br_if 0 (;@5;)
br 4 (;@1;)
end
end
local.get 0
i32.const 1
i32.add
return
end
local.get 0
i32.const 2
i32.add
return
end
local.get 0
i32.const 3
i32.add
local.set 0
end
local.get 0)
(table (;0;) 1 1 funcref)
(memory (;0;) 1)
(global $__stack_pointer (mut i32) (i32.const 7200))
(global (;1;) i32 (i32.const 3090))
(global (;2;) i32 (i32.const 7200))
(export "memory" (memory 0))
(export "__wasm_apply_data_relocs" (func $__wasm_apply_data_relocs))
(export "entrypoint" (func $huff_enc_main))
(export "main" (func $__original_main))
(export "__data_end" (global 1))
(export "__heap_base" (global 2))
(data $.rodata (i32.const 1024) "\80\00\00\00P\85 \80d\04 ?\ef\ff\f0\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\04\07\a7\15\81\e8Ex\84\d9\14\a2\13\a4'\85\fc\8ai\14\c2\13\81\f0\ac\8a\f8\96\0b\0b\f0\c9D@r5\11*%\c3\80\d4t\c2)b43\0c\84p\f4\03$!4'\87\a4!>\9cW\0en\16W2U\c6c\8e\8c\c2QN\9eT\81\fe\81\f8n\b3\9f\c0\91\85\b8\b8\1c\d2`\92I\0a\e2\15S\98J\0do\84\c7\ca\db\f1J\c1\a7i\de\1f\93\067\1f\81(\e84\99\a0\94\12$\c5-\d8\caV\1e\1f\b1Z\85\8a\f8\17Q\c3\a0d\d7]2\b9\e1\fb\17\06\e6\e1\e5pGP`\8d\cd\b0\e6U\c4\09\18]Zy\e1LD\98?\19k\8ce\cc\d6M\1a\c2`\120M\d2\89\01\fd\04\e6\f88\f0\e0o\a3_\0a\0c\df\07\ea\a7\81($`\87}\f5\fa\02\c6x\7f\00\91\85\d5\a7\87\95\c3C\ebl\09\18W\11f\98%\04\de\83\bc\90I$\80I\14Q\98\b1\85\f8\1c\a5\83x\7f\f0\f2\b8h}m\81#\1e\04\91A\caX\09\8ag,\cdd\a7\18\98\0b\183%B\09\18\1f\ae\ca\d41\98\12`\9b\d0w\92-a08\1c\c2Z\e0\cc\90\e8\b0$`~\bb+S\0cy\81\d1`\c5#\026\b0\f9\5c\d0\cc\91\bc)\aa\b4G\10$`~\bb+S\13\00\91\81d\d1\0f+\877\06\ee\b4\c2Z\11\e5s\15\a8\fb\8c\83\a2\d9\a6]\16\04\8c\1f[\a67\19\ca\c0o\14\ab\cf'\c0You are doubtless asking \22How can I reduce the data size without losing some informations?\22. It's easy to answer to this question. I'll only take an example. I'm sure you have heard about the morse. This system established in the 19th century use a scheme very close to the huffman one. In the morse you encode the letters to transmit with two kinds of signs. If you encode these two sign possibilities in one bit, the symbol 'e' is transmitted in a single bit and the symbols 'y' and 'z' need four bits. Look at the symbols in the text you are reading, you'll fast understand the compression ratio...\00"))