(module $bitcount.wasm
  (type (;0;) (func (param i32 i32)))
  (type (;1;) (func))
  (type (;2;) (func (result i32)))
  (type (;3;) (func (param i32) (result i32)))
  (import "__pragma" "loopbound" (func $__pragma_loopbound (type 0)))
  (func $__wasm_apply_data_relocs (type 1))
  (func $bitcount_main (type 1)
    (local i32 i32 i32 i32 i32 i32)
    i32.const 8
    i32.const 8
    call $__pragma_loopbound
    i32.const 0
    local.set 0
    loop  ;; label = @1
      i32.const 10
      i32.const 10
      call $__pragma_loopbound
      i32.const 0
      i32.const 0
      i32.load offset=1540
      local.tee 1
      i32.const 127773
      i32.div_s
      local.tee 2
      i32.const -2836
      i32.mul
      local.get 1
      local.get 2
      i32.const 127773
      i32.mul
      i32.sub
      i32.const 16807
      i32.mul
      i32.add
      local.tee 1
      i32.const 2147483647
      i32.add
      local.get 1
      local.get 1
      i32.const 1
      i32.lt_s
      select
      local.tee 1
      i32.store offset=1548
      i32.const 0
      local.get 1
      i32.store offset=1540
      block  ;; label = @2
        i32.const 0
        i32.load offset=1544
        i32.eqz
        br_if 0 (;@2;)
        i32.const 0
        local.set 3
        loop  ;; label = @3
          block  ;; label = @4
            block  ;; label = @5
              block  ;; label = @6
                block  ;; label = @7
                  block  ;; label = @8
                    block  ;; label = @9
                      block  ;; label = @10
                        block  ;; label = @11
                          block  ;; label = @12
                            local.get 0
                            br_table 0 (;@12;) 1 (;@11;) 2 (;@10;) 3 (;@9;) 4 (;@8;) 5 (;@7;) 6 (;@6;) 7 (;@5;) 0 (;@12;)
                          end
                          local.get 1
                          call $bitcount_bit_count
                          local.set 2
                          br 7 (;@4;)
                        end
                        local.get 1
                        call $bitcount_bitcount
                        local.set 2
                        br 6 (;@4;)
                      end
                      local.get 1
                      call $bitcount_ntbl_bitcnt
                      local.set 2
                      br 5 (;@4;)
                    end
                    local.get 1
                    call $bitcount_btbl_bitcnt
                    local.set 2
                    br 4 (;@4;)
                  end
                  local.get 1
                  call $bitcount_ntbl_bitcount
                  local.set 2
                  br 3 (;@4;)
                end
                local.get 1
                call $bitcount_BW_btbl_bitcount
                local.set 2
                br 2 (;@4;)
              end
              local.get 1
              call $bitcount_AR_btbl_bitcount
              local.set 2
              br 1 (;@4;)
            end
            i32.const 31
            i32.const 31
            call $__pragma_loopbound
            block  ;; label = @5
              local.get 1
              br_if 0 (;@5;)
              i32.const 0
              local.set 2
              br 1 (;@4;)
            end
            i32.const 0
            local.set 4
            i32.const 0
            local.set 2
            loop  ;; label = @5
              local.get 1
              i32.const 1
              i32.and
              local.get 2
              i32.add
              local.set 2
              local.get 1
              i32.const 2
              i32.lt_u
              br_if 1 (;@4;)
              local.get 1
              i32.const 1
              i32.shr_s
              local.set 1
              local.get 4
              i32.const 31
              i32.lt_u
              local.set 5
              local.get 4
              i32.const 1
              i32.add
              local.set 4
              local.get 5
              br_if 0 (;@5;)
            end
          end
          i32.const 0
          local.get 2
          i32.store offset=1552
          i32.const 0
          i32.const 0
          i32.load offset=1536
          local.get 2
          i32.add
          i32.store offset=1536
          i32.const 0
          i32.const 0
          i32.load offset=1548
          i32.const 13
          i32.add
          local.tee 1
          i32.store offset=1548
          local.get 3
          i32.const 1
          i32.add
          local.tee 3
          i32.const 0
          i32.load offset=1544
          i32.lt_u
          br_if 0 (;@3;)
        end
      end
      local.get 0
      i32.const 1
      i32.add
      local.tee 0
      i32.const 8
      i32.ne
      br_if 0 (;@1;)
    end)
  (func $__original_main (type 2) (result i32)
    i32.const 0
    i32.const 1
    i32.store offset=1540
    i32.const 0
    i32.const 10
    i32.store offset=1544
    i32.const 0
    i32.const 0
    i32.store offset=1536
    call $bitcount_init3
    call $bitcount_init4
    call $bitcount_main
    i32.const 0
    i32.load offset=1536
    i32.const 1095
    i32.ne)
  (func $bitcount_bit_count (type 3) (param i32) (result i32)
    (local i32)
    block  ;; label = @1
      local.get 0
      br_if 0 (;@1;)
      i32.const 0
      return
    end
    i32.const 3
    i32.const 8
    call $__pragma_loopbound
    i32.const 0
    local.set 1
    loop  ;; label = @1
      local.get 1
      i32.const 1
      i32.add
      local.set 1
      local.get 0
      i32.const -1
      i32.add
      local.get 0
      i32.and
      local.tee 0
      br_if 0 (;@1;)
    end
    local.get 1)
  (func $bitcount_bitcount (type 3) (param i32) (result i32)
    local.get 0
    i32.const 1
    i32.shr_u
    i32.const 1431655765
    i32.and
    local.get 0
    i32.const 1431655765
    i32.and
    i32.add
    local.tee 0
    i32.const 2
    i32.shr_u
    i32.const 858993459
    i32.and
    local.get 0
    i32.const 858993459
    i32.and
    i32.add
    local.tee 0
    i32.const 4
    i32.shr_u
    i32.const 117901063
    i32.and
    local.get 0
    i32.const 117901063
    i32.and
    i32.add
    local.tee 0
    i32.const 8
    i32.shr_u
    i32.const 983055
    i32.and
    local.get 0
    i32.const 983055
    i32.and
    i32.add
    local.tee 0
    i32.const 16
    i32.shr_u
    local.get 0
    i32.const 31
    i32.and
    i32.add)
  (func $bitcount_init3 (type 1)
    (local i32 i32)
    global.get $__stack_pointer
    i32.const 16
    i32.sub
    local.tee 0
    i32.const 0
    i32.store offset=12
    local.get 0
    i32.const 0
    i32.store offset=12
    block  ;; label = @1
      local.get 0
      i32.load offset=12
      i32.const 255
      i32.gt_s
      br_if 0 (;@1;)
      loop  ;; label = @2
        local.get 0
        i32.load offset=12
        local.set 1
        local.get 0
        i32.load offset=12
        i32.const 1568
        i32.add
        local.get 1
        i32.const 1024
        i32.add
        i32.load8_u
        i32.store8
        local.get 0
        local.get 0
        i32.load offset=12
        i32.const 1
        i32.add
        i32.store offset=12
        local.get 0
        i32.load offset=12
        i32.const 256
        i32.lt_s
        br_if 0 (;@2;)
      end
    end)
  (func $bitcount_ntbl_bitcount (type 3) (param i32) (result i32)
    local.get 0
    i32.const 4
    i32.shr_u
    i32.const 15
    i32.and
    i32.const 1568
    i32.add
    i32.load8_s
    local.get 0
    i32.const 15
    i32.and
    i32.const 1568
    i32.add
    i32.load8_s
    i32.add
    local.get 0
    i32.const 8
    i32.shr_u
    i32.const 15
    i32.and
    i32.const 1568
    i32.add
    i32.load8_s
    i32.add
    local.get 0
    i32.const 12
    i32.shr_u
    i32.const 15
    i32.and
    i32.const 1568
    i32.add
    i32.load8_s
    i32.add
    local.get 0
    i32.const 16
    i32.shr_u
    i32.const 15
    i32.and
    i32.const 1568
    i32.add
    i32.load8_s
    i32.add
    local.get 0
    i32.const 20
    i32.shr_u
    i32.const 15
    i32.and
    i32.const 1568
    i32.add
    i32.load8_s
    i32.add
    local.get 0
    i32.const 24
    i32.shr_u
    i32.const 15
    i32.and
    i32.const 1568
    i32.add
    i32.load8_s
    i32.add
    local.get 0
    i32.const 28
    i32.shr_u
    i32.const 1568
    i32.add
    i32.load8_s
    i32.add)
  (func $bitcount_BW_btbl_bitcount (type 3) (param i32) (result i32)
    local.get 0
    i32.const 8
    i32.shr_u
    i32.const 255
    i32.and
    i32.const 1568
    i32.add
    i32.load8_s
    local.get 0
    i32.const 255
    i32.and
    i32.const 1568
    i32.add
    i32.load8_s
    i32.add
    local.get 0
    i32.const 24
    i32.shr_u
    i32.const 1568
    i32.add
    i32.load8_s
    i32.add
    local.get 0
    i32.const 16
    i32.shr_u
    i32.const 255
    i32.and
    i32.const 1568
    i32.add
    i32.load8_s
    i32.add)
  (func $bitcount_AR_btbl_bitcount (type 3) (param i32) (result i32)
    local.get 0
    i32.const 8
    i32.shr_u
    i32.const 255
    i32.and
    i32.const 1568
    i32.add
    i32.load8_s
    local.get 0
    i32.const 255
    i32.and
    i32.const 1568
    i32.add
    i32.load8_s
    i32.add
    local.get 0
    i32.const 16
    i32.shr_u
    i32.const 255
    i32.and
    i32.const 1568
    i32.add
    i32.load8_s
    i32.add
    local.get 0
    i32.const 24
    i32.shr_u
    i32.const 1568
    i32.add
    i32.load8_s
    i32.add)
  (func $bitcount_init4 (type 1)
    (local i32 i32)
    global.get $__stack_pointer
    i32.const 16
    i32.sub
    local.tee 0
    i32.const 0
    i32.store offset=12
    local.get 0
    i32.const 0
    i32.store offset=12
    block  ;; label = @1
      local.get 0
      i32.load offset=12
      i32.const 255
      i32.gt_s
      br_if 0 (;@1;)
      loop  ;; label = @2
        local.get 0
        i32.load offset=12
        local.set 1
        local.get 0
        i32.load offset=12
        i32.const 1824
        i32.add
        local.get 1
        i32.const 1280
        i32.add
        i32.load8_u
        i32.store8
        local.get 0
        local.get 0
        i32.load offset=12
        i32.const 1
        i32.add
        i32.store offset=12
        local.get 0
        i32.load offset=12
        i32.const 256
        i32.lt_s
        br_if 0 (;@2;)
      end
    end)
  (func $bitcount_ntbl_bitcnt (type 3) (param i32) (result i32)
    (local i32 i32 i32)
    local.get 0
    i32.const 15
    i32.and
    i32.const 1824
    i32.add
    i32.load8_s
    local.set 1
    i32.const 0
    local.set 2
    block  ;; label = @1
      local.get 0
      i32.const 16
      i32.lt_u
      br_if 0 (;@1;)
      i32.const 0
      local.set 2
      loop  ;; label = @2
        local.get 1
        local.get 2
        i32.add
        local.set 2
        local.get 0
        i32.const 255
        i32.gt_u
        local.set 3
        local.get 0
        i32.const 4
        i32.shr_u
        local.tee 0
        i32.const 15
        i32.and
        i32.const 1824
        i32.add
        i32.load8_s
        local.set 1
        local.get 3
        br_if 0 (;@2;)
      end
    end
    local.get 1
    local.get 2
    i32.add)
  (func $bitcount_btbl_bitcnt (type 3) (param i32) (result i32)
    (local i32 i32 i32)
    local.get 0
    i32.const 255
    i32.and
    i32.const 1824
    i32.add
    i32.load8_s
    local.set 1
    i32.const 0
    local.set 2
    block  ;; label = @1
      local.get 0
      i32.const 256
      i32.lt_u
      br_if 0 (;@1;)
      i32.const 0
      local.set 2
      loop  ;; label = @2
        local.get 1
        local.get 2
        i32.add
        local.set 2
        local.get 0
        i32.const 65535
        i32.gt_u
        local.set 3
        local.get 0
        i32.const 8
        i32.shr_u
        local.tee 0
        i32.const 255
        i32.and
        i32.const 1824
        i32.add
        i32.load8_s
        local.set 1
        local.get 3
        br_if 0 (;@2;)
      end
    end
    local.get 1
    local.get 2
    i32.add)
  (table (;0;) 1 1 funcref)
  (memory (;0;) 1)
  (global $__stack_pointer (mut i32) (i32.const 6176))
  (global (;1;) i32 (i32.const 2080))
  (global (;2;) i32 (i32.const 6176))
  (export "memory" (memory 0))
  (export "__wasm_apply_data_relocs" (func $__wasm_apply_data_relocs))
  (export "entrypoint" (func $bitcount_main))
  (export "main" (func $__original_main))
  (export "__data_end" (global 1))
  (export "__heap_base" (global 2))
  (data $.rodata (i32.const 1024) "\00\01\01\02\01\02\02\03\01\02\02\03\02\03\03\04\01\02\02\03\02\03\03\04\02\03\03\04\03\04\04\05\01\02\02\03\02\03\03\04\02\03\03\04\03\04\04\05\02\03\03\04\03\04\04\05\03\04\04\05\04\05\05\06\01\02\02\03\02\03\03\04\02\03\03\04\03\04\04\05\02\03\03\04\03\04\04\05\03\04\04\05\04\05\05\06\02\03\03\04\03\04\04\05\03\04\04\05\04\05\05\06\03\04\04\05\04\05\05\06\04\05\05\06\05\06\06\07\01\02\02\03\02\03\03\04\02\03\03\04\03\04\04\05\02\03\03\04\03\04\04\05\03\04\04\05\04\05\05\06\02\03\03\04\03\04\04\05\03\04\04\05\04\05\05\06\03\04\04\05\04\05\05\06\04\05\05\06\05\06\06\07\02\03\03\04\03\04\04\05\03\04\04\05\04\05\05\06\03\04\04\05\04\05\05\06\04\05\05\06\05\06\06\07\03\04\04\05\04\05\05\06\04\05\05\06\05\06\06\07\04\05\05\06\05\06\06\07\05\06\06\07\06\07\07\08\00\01\01\02\01\02\02\03\01\02\02\03\02\03\03\04\01\02\02\03\02\03\03\04\02\03\03\04\03\04\04\05\01\02\02\03\02\03\03\04\02\03\03\04\03\04\04\05\02\03\03\04\03\04\04\05\03\04\04\05\04\05\05\06\01\02\02\03\02\03\03\04\02\03\03\04\03\04\04\05\02\03\03\04\03\04\04\05\03\04\04\05\04\05\05\06\02\03\03\04\03\04\04\05\03\04\04\05\04\05\05\06\03\04\04\05\04\05\05\06\04\05\05\06\05\06\06\07\01\02\02\03\02\03\03\04\02\03\03\04\03\04\04\05\02\03\03\04\03\04\04\05\03\04\04\05\04\05\05\06\02\03\03\04\03\04\04\05\03\04\04\05\04\05\05\06\03\04\04\05\04\05\05\06\04\05\05\06\05\06\06\07\02\03\03\04\03\04\04\05\03\04\04\05\04\05\05\06\03\04\04\05\04\05\05\06\04\05\05\06\05\06\06\07\03\04\04\05\04\05\05\06\04\05\05\06\05\06\06\07\04\05\05\06\05\06\06\07\05\06\06\07\06\07\07\08"))
