(module (type (;0;) (func (param i32))) (type (;1;) (func (param i32 i32) (result i32))) (type (;2;) (func (param i32) (result i32))) (import "env" "log" (func $log (type 0))) (func $percent_change (type 1) (param $before i32) (param $after i32) (result i32) local.get $before i32.eqz if (result i32) ;; label = @1 i32.const 0 else local.get $after local.get $before i32.sub i32.const 100 i32.mul local.get $before i32.div_s end) (func $grade (type 2) (param $score i32) (result i32) (local $bucket i32) local.get $score i32.const 10 i32.div_s local.set $bucket block (result i32) ;; label = @1 block ;; label = @2 block ;; label = @3 block ;; label = @4 block ;; label = @5 block ;; label = @6 local.get $bucket br_table 4 (;@2;) 4 (;@2;) 4 (;@2;) 4 (;@2;) 4 (;@2;) 4 (;@2;) 3 (;@3;) 2 (;@4;) 1 (;@5;) 0 (;@6;) 0 (;@6;) 4 (;@2;) end i32.const 4 br 4 (;@1;) end i32.const 3 br 3 (;@1;) end i32.const 2 br 2 (;@1;) end i32.const 1 br 1 (;@1;) end i32.const 0 end) (func $total (type 1) (param $values i32) (param $count i32) (result i32) (local $sum i32) (local $i i32) block ;; label = @1 loop ;; label = @2 local.get $i local.get $count i32.ge_s br_if 1 (;@1;) local.get $sum local.get $values local.get $i i32.const 4 i32.mul i32.add i32.load i32.add local.set $sum local.get $i i32.const 1 i32.add local.set $i br 0 (;@2;) end end local.get $sum) (func $grade_label (type 2) (param $score i32) (result i32) (local $g i32) local.get $score call $grade local.set $g local.get $g call $log i32.const 1024 local.get $g i32.const 2 i32.mul i32.add) (memory (;0;) 1) (export "memory" (memory 0)) (export "percent_change" (func $percent_change)) (export "grade" (func $grade)) (export "total" (func $total)) (export "grade_label" (func $grade_label)) (data (;0;) (i32.const 1024) "F\00D\00C\00B\00A\00") (@custom "name" "\011\05\00\03log\01\0epercent_change\02\05grade\03\05total\04\0bgrade_label\02J\05\00\00\01\02\00\06before\01\05after\02\02\00\05score\01\06bucket\03\04\00\06values\01\05count\02\03sum\03\01i\04\02\00\05score\01\01g"))