static u32 w2c_j(Z_wasm_instance_t* instance, u32 w2c_p0, u32 w2c_p1) {
  u32 w2c_l2 = 0, w2c_l3 = 0;
  FUNC_PROLOGUE;
  u32 w2c_i0, w2c_i1, w2c_i2, w2c_i3, w2c_i4;
  u64 w2c_j1;
  w2c_i0 = w2c_p0;
  w2c_i1 = 255u;
  w2c_i0 = w2c_i0 == w2c_i1;
  if (w2c_i0) {
    w2c_L2: 
      w2c_i0 = 9180u;
      w2c_i0 = i32_load8_u(&instance->w2c_g, (u64)(w2c_i0));
      w2c_i0 = !(w2c_i0);
      if (w2c_i0) {
        w2c_i0 = 9168u;
        w2c_j1 = 0ull;
        i64_store(&instance->w2c_g, (u64)(w2c_i0), w2c_j1);
        w2c_i0 = 9176u;
        w2c_i1 = 0u;
        i32_store(&instance->w2c_g, (u64)(w2c_i0), w2c_i1);
        w2c_i0 = 9180u;
        w2c_i1 = 1u;
        i32_store8(&instance->w2c_g, (u64)(w2c_i0), w2c_i1);
      }
      w2c_i0 = w2c_l2;
      w2c_i1 = 9172u;
      w2c_i1 = i32_load(&instance->w2c_g, (u64)(w2c_i1));
      w2c_i0 = w2c_i0 >= w2c_i1;
      if (w2c_i0) {goto w2c_B0;}
      w2c_i0 = 255u;
      w2c_i1 = w2c_p1;
      w2c_i2 = 9168u;
      w2c_i2 = i32_load(&instance->w2c_g, (u64)(w2c_i2));
      w2c_i3 = w2c_l2;
      w2c_i4 = 2u;
      w2c_i3 <<= (w2c_i4 & 31);
      w2c_i2 += w2c_i3;
      w2c_i2 = i32_load(&instance->w2c_g, (u64)(w2c_i2));
      w2c_i0 = CALL_INDIRECT(instance->w2c_k, u32 (*)(void*, u32, u32), 2, w2c_i2, instance->w2c_k.data[w2c_i2].module_instance, w2c_i0, w2c_i1);
      w2c_l3 = w2c_i0;
      w2c_i0 = w2c_l2;
      w2c_i1 = 1u;
      w2c_i0 += w2c_i1;
      w2c_l2 = w2c_i0;
      goto w2c_L2;
    UNREACHABLE;
  }
  w2c_i0 = w2c_p0;
  w2c_i1 = 171u;
  w2c_i0 = (u32)((s32)w2c_i0 <= (s32)w2c_i1);
  if (w2c_i0) {
    w2c_i0 = w2c_p0;
    w2c_i1 = 4u;
    w2c_i0 = w2c_i0 == w2c_i1;
    if (w2c_i0) {goto w2c_B4;}
    w2c_i0 = w2c_p0;
    w2c_i1 = 24u;
    w2c_i0 = w2c_i0 == w2c_i1;
    if (w2c_i0) {goto w2c_B6;}
    goto w2c_B0;
  }
  w2c_i0 = w2c_p0;
  w2c_i1 = 172u;
  w2c_i0 -= w2c_i1;
  switch (w2c_i0) {
    case 0: goto w2c_B5;
    case 1: goto w2c_B0;
    case 2: goto w2c_B0;
    case 3: goto w2c_B0;
    case 4: goto w2c_B0;
    case 5: goto w2c_B0;
    case 6: goto w2c_B0;
    case 7: goto w2c_B0;
    case 8: goto w2c_B0;
    case 9: goto w2c_B0;
    case 10: goto w2c_B0;
    case 11: goto w2c_B0;
    case 12: goto w2c_B0;
    case 13: goto w2c_B0;
    case 14: goto w2c_B0;
    case 15: goto w2c_B4;
    default: goto w2c_B8;
  }
  w2c_B8:;
  w2c_i0 = w2c_p0;
  w2c_i1 = 228u;
  w2c_i0 = w2c_i0 != w2c_i1;
  if (w2c_i0) {goto w2c_B0;}
  w2c_B6:;
  w2c_L9: 
    w2c_i0 = 9180u;
    w2c_i0 = i32_load8_u(&instance->w2c_g, (u64)(w2c_i0));
    w2c_i0 = !(w2c_i0);
    if (w2c_i0) {
      w2c_i0 = 9168u;
      w2c_j1 = 0ull;
      i64_store(&instance->w2c_g, (u64)(w2c_i0), w2c_j1);
      w2c_i0 = 9176u;
      w2c_i1 = 0u;
      i32_store(&instance->w2c_g, (u64)(w2c_i0), w2c_i1);
      w2c_i0 = 9180u;
      w2c_i1 = 1u;
      i32_store8(&instance->w2c_g, (u64)(w2c_i0), w2c_i1);
    }
    w2c_i0 = 9172u;
    w2c_i0 = i32_load(&instance->w2c_g, (u64)(w2c_i0));
    w2c_i1 = w2c_l2;
    w2c_i0 = w2c_i0 <= w2c_i1;
    if (w2c_i0) {
      w2c_i0 = w2c_p0;
      w2c_i1 = 228u;
      w2c_i0 = w2c_i0 != w2c_i1;
      if (w2c_i0) {goto w2c_B0;}
      w2c_i0 = 182140u;
      w2c_i1 = w2c_p1;
      i32_store(&instance->w2c_g, (u64)(w2c_i0), w2c_i1);
      w2c_i0 = 182136u;
      w2c_i1 = w2c_l3;
      i32_store(&instance->w2c_g, (u64)(w2c_i0), w2c_i1);
      w2c_i0 = w2c_l3;
      goto w2c_Bfunc;
    } else {
      w2c_i0 = w2c_p0;
      w2c_i1 = w2c_p1;
      w2c_i2 = 9168u;
      w2c_i2 = i32_load(&instance->w2c_g, (u64)(w2c_i2));
      w2c_i3 = w2c_l2;
      w2c_i4 = 2u;
      w2c_i3 <<= (w2c_i4 & 31);
      w2c_i2 += w2c_i3;
      w2c_i2 = i32_load(&instance->w2c_g, (u64)(w2c_i2));
      w2c_i0 = CALL_INDIRECT(instance->w2c_k, u32 (*)(void*, u32, u32), 2, w2c_i2, instance->w2c_k.data[w2c_i2].module_instance, w2c_i0, w2c_i1);
      w2c_l3 = w2c_i0;
      w2c_i0 = w2c_l2;
      w2c_i1 = 1u;
      w2c_i0 += w2c_i1;
      w2c_l2 = w2c_i0;
      goto w2c_L9;
    }
    UNREACHABLE;
  UNREACHABLE;
  w2c_B5:;
  w2c_i0 = 182144u;
  w2c_i1 = 182136u;
  w2c_i1 = i32_load(&instance->w2c_g, (u64)(w2c_i1));
  w2c_i1 = i32_load8_u(&instance->w2c_g, (u64)(w2c_i1) + 4u);
  i32_store8(&instance->w2c_g, (u64)(w2c_i0), w2c_i1);
  w2c_L12: 
    w2c_i0 = 9180u;
    w2c_i0 = i32_load8_u(&instance->w2c_g, (u64)(w2c_i0));
    w2c_i0 = !(w2c_i0);
    if (w2c_i0) {
      w2c_i0 = 9168u;
      w2c_j1 = 0ull;
      i64_store(&instance->w2c_g, (u64)(w2c_i0), w2c_j1);
      w2c_i0 = 9176u;
      w2c_i1 = 0u;
      i32_store(&instance->w2c_g, (u64)(w2c_i0), w2c_i1);
      w2c_i0 = 9180u;
      w2c_i1 = 1u;
      i32_store8(&instance->w2c_g, (u64)(w2c_i0), w2c_i1);
    }
    w2c_i0 = w2c_l2;
    w2c_i1 = 9172u;
    w2c_i1 = i32_load(&instance->w2c_g, (u64)(w2c_i1));
    w2c_i0 = w2c_i0 >= w2c_i1;
    if (w2c_i0) {goto w2c_B4;}
    w2c_i0 = 84u;
    w2c_i1 = w2c_p1;
    w2c_i2 = 9168u;
    w2c_i2 = i32_load(&instance->w2c_g, (u64)(w2c_i2));
    w2c_i3 = w2c_l2;
    w2c_i4 = 2u;
    w2c_i3 <<= (w2c_i4 & 31);
    w2c_i2 += w2c_i3;
    w2c_i2 = i32_load(&instance->w2c_g, (u64)(w2c_i2));
    w2c_i0 = CALL_INDIRECT(instance->w2c_k, u32 (*)(void*, u32, u32), 2, w2c_i2, instance->w2c_k.data[w2c_i2].module_instance, w2c_i0, w2c_i1);
    w2c_i0 = w2c_l2;
    w2c_i1 = 1u;
    w2c_i0 += w2c_i1;
    w2c_l2 = w2c_i0;
    goto w2c_L12;
  UNREACHABLE;
  w2c_B4:;
  w2c_i0 = 9180u;
  w2c_i0 = i32_load8_u(&instance->w2c_g, (u64)(w2c_i0));
  w2c_i0 = !(w2c_i0);
  if (w2c_i0) {
    w2c_i0 = 9168u;
    w2c_j1 = 0ull;
    i64_store(&instance->w2c_g, (u64)(w2c_i0), w2c_j1);
    w2c_i0 = 9176u;
    w2c_i1 = 0u;
    i32_store(&instance->w2c_g, (u64)(w2c_i0), w2c_i1);
    w2c_i0 = 9180u;
    w2c_i1 = 1u;
    i32_store8(&instance->w2c_g, (u64)(w2c_i0), w2c_i1);
  }
  w2c_i0 = 228u;
  w2c_i1 = 182140u;
  w2c_i1 = i32_load(&instance->w2c_g, (u64)(w2c_i1));
  w2c_i2 = 9168u;
  w2c_i2 = i32_load(&instance->w2c_g, (u64)(w2c_i2));
  w2c_i3 = 182144u;
  w2c_i3 = i32_load8_u(&instance->w2c_g, (u64)(w2c_i3));
  w2c_i4 = 9172u;
  w2c_i4 = i32_load(&instance->w2c_g, (u64)(w2c_i4));
  w2c_i3 = REM_U(w2c_i3, w2c_i4);
  w2c_i4 = 2u;
  w2c_i3 <<= (w2c_i4 & 31);
  w2c_i2 += w2c_i3;
  w2c_i2 = i32_load(&instance->w2c_g, (u64)(w2c_i2));
  w2c_i0 = CALL_INDIRECT(instance->w2c_k, u32 (*)(void*, u32, u32), 2, w2c_i2, instance->w2c_k.data[w2c_i2].module_instance, w2c_i0, w2c_i1);
  w2c_i1 = 182136u;
  w2c_i1 = i32_load(&instance->w2c_g, (u64)(w2c_i1));
  w2c_i2 = 182140u;
  w2c_i2 = i32_load(&instance->w2c_g, (u64)(w2c_i2));
  w2c_i0 = w2c_f22(instance, w2c_i0, w2c_i1, w2c_i2);
  w2c_i0 = 9180u;
  w2c_i0 = i32_load8_u(&instance->w2c_g, (u64)(w2c_i0));
  w2c_i0 = !(w2c_i0);
  if (w2c_i0) {
    w2c_i0 = 9168u;
    w2c_j1 = 0ull;
    i64_store(&instance->w2c_g, (u64)(w2c_i0), w2c_j1);
    w2c_i0 = 9176u;
    w2c_i1 = 0u;
    i32_store(&instance->w2c_g, (u64)(w2c_i0), w2c_i1);
    w2c_i0 = 9180u;
    w2c_i1 = 1u;
    i32_store8(&instance->w2c_g, (u64)(w2c_i0), w2c_i1);
  }
  w2c_i0 = w2c_p0;
  w2c_i1 = w2c_p1;
  w2c_i2 = 9168u;
  w2c_i2 = i32_load(&instance->w2c_g, (u64)(w2c_i2));
  w2c_i3 = 182144u;
  w2c_i3 = i32_load8_u(&instance->w2c_g, (u64)(w2c_i3));
  w2c_i4 = 9172u;
  w2c_i4 = i32_load(&instance->w2c_g, (u64)(w2c_i4));
  w2c_i3 = REM_U(w2c_i3, w2c_i4);
  w2c_i4 = 2u;
  w2c_i3 <<= (w2c_i4 & 31);
  w2c_i2 += w2c_i3;
  w2c_i2 = i32_load(&instance->w2c_g, (u64)(w2c_i2));
  w2c_i0 = CALL_INDIRECT(instance->w2c_k, u32 (*)(void*, u32, u32), 2, w2c_i2, instance->w2c_k.data[w2c_i2].module_instance, w2c_i0, w2c_i1);
  w2c_l3 = w2c_i0;
  w2c_B0:;
  w2c_i0 = w2c_l3;
  w2c_Bfunc:;
  FUNC_EPILOGUE;
  return w2c_i0;
}

Explain what this code does and try to code a c replica as if it wasnt compiled to wasm