void helper_double_22_recursive(double *buf, int depth) {
  if (depth == 2) {
    for (int j = 0; j < 4; j += 4) {
      for (int k = 0; k < 2; k += 2) {
        __asm__ volatile("movupd (%0), %%xmm0\n"
                         "movupd (%1), %%xmm1\n"
                         "movapd %%xmm0, %%xmm8\n"
                         "haddpd %%xmm8, %%xmm8\n"
                         "movapd %%xmm0, %%xmm9\n"
                         "hsubpd %%xmm9, %%xmm9\n"
                         "blendpd $1, %%xmm8, %%xmm9\n"
                         "movapd %%xmm9, %%xmm0\n"
                         "movapd %%xmm1, %%xmm8\n"
                         "haddpd %%xmm8, %%xmm8\n"
                         "movapd %%xmm1, %%xmm9\n"
                         "hsubpd %%xmm9, %%xmm9\n"
                         "blendpd $1, %%xmm8, %%xmm9\n"
                         "movapd %%xmm9, %%xmm1\n"
                         "movapd %%xmm0, %%xmm8\n"
                         "movapd %%xmm0, %%xmm9\n"
                         "addpd %%xmm1, %%xmm8\n"
                         "subpd %%xmm1, %%xmm9\n"
                         "movupd %%xmm8, (%0)\n"
                         "movupd %%xmm9, (%1)\n" ::"r"(buf + j + k + 0),
                         "r"(buf + j + k + 2)
                         : "%xmm0", "%xmm1", "%xmm2", "%xmm3", "%xmm4", "%xmm5",
                           "%xmm6", "%xmm7", "%xmm8", "%xmm9", "%xmm10",
                           "%xmm11", "%xmm12", "%xmm13", "%xmm14", "%xmm15",
                           "memory");
      }
    }
    return;
  }
  if (depth == 5) {
    helper_double_22_recursive(buf + 0, 2);
    helper_double_22_recursive(buf + 4, 2);
    helper_double_22_recursive(buf + 8, 2);
    helper_double_22_recursive(buf + 12, 2);
    helper_double_22_recursive(buf + 16, 2);
    helper_double_22_recursive(buf + 20, 2);
    helper_double_22_recursive(buf + 24, 2);
    helper_double_22_recursive(buf + 28, 2);
    for (int j = 0; j < 32; j += 32) {
      for (int k = 0; k < 4; k += 2) {
        __asm__ volatile(
            "movupd (%0), %%xmm0\n"
            "movupd (%1), %%xmm1\n"
            "movupd (%2), %%xmm2\n"
            "movupd (%3), %%xmm3\n"
            "movupd (%4), %%xmm4\n"
            "movupd (%5), %%xmm5\n"
            "movupd (%6), %%xmm6\n"
            "movupd (%7), %%xmm7\n"
            "movapd %%xmm0, %%xmm8\n"
            "movapd %%xmm0, %%xmm9\n"
            "addpd %%xmm1, %%xmm8\n"
            "subpd %%xmm1, %%xmm9\n"
            "movapd %%xmm2, %%xmm10\n"
            "movapd %%xmm2, %%xmm11\n"
            "addpd %%xmm3, %%xmm10\n"
            "subpd %%xmm3, %%xmm11\n"
            "movapd %%xmm4, %%xmm12\n"
            "movapd %%xmm4, %%xmm13\n"
            "addpd %%xmm5, %%xmm12\n"
            "subpd %%xmm5, %%xmm13\n"
            "movapd %%xmm6, %%xmm14\n"
            "movapd %%xmm6, %%xmm15\n"
            "addpd %%xmm7, %%xmm14\n"
            "subpd %%xmm7, %%xmm15\n"
            "movapd %%xmm8, %%xmm0\n"
            "movapd %%xmm8, %%xmm2\n"
            "addpd %%xmm10, %%xmm0\n"
            "subpd %%xmm10, %%xmm2\n"
            "movapd %%xmm9, %%xmm1\n"
            "movapd %%xmm9, %%xmm3\n"
            "addpd %%xmm11, %%xmm1\n"
            "subpd %%xmm11, %%xmm3\n"
            "movapd %%xmm12, %%xmm4\n"
            "movapd %%xmm12, %%xmm6\n"
            "addpd %%xmm14, %%xmm4\n"
            "subpd %%xmm14, %%xmm6\n"
            "movapd %%xmm13, %%xmm5\n"
            "movapd %%xmm13, %%xmm7\n"
            "addpd %%xmm15, %%xmm5\n"
            "subpd %%xmm15, %%xmm7\n"
            "movapd %%xmm0, %%xmm8\n"
            "movapd %%xmm0, %%xmm12\n"
            "addpd %%xmm4, %%xmm8\n"
            "subpd %%xmm4, %%xmm12\n"
            "movapd %%xmm1, %%xmm9\n"
            "movapd %%xmm1, %%xmm13\n"
            "addpd %%xmm5, %%xmm9\n"
            "subpd %%xmm5, %%xmm13\n"
            "movapd %%xmm2, %%xmm10\n"
            "movapd %%xmm2, %%xmm14\n"
            "addpd %%xmm6, %%xmm10\n"
            "subpd %%xmm6, %%xmm14\n"
            "movapd %%xmm3, %%xmm11\n"
            "movapd %%xmm3, %%xmm15\n"
            "addpd %%xmm7, %%xmm11\n"
            "subpd %%xmm7, %%xmm15\n"
            "movupd %%xmm8, (%0)\n"
            "movupd %%xmm9, (%1)\n"
            "movupd %%xmm10, (%2)\n"
            "movupd %%xmm11, (%3)\n"
            "movupd %%xmm12, (%4)\n"
            "movupd %%xmm13, (%5)\n"
            "movupd %%xmm14, (%6)\n"
            "movupd %%xmm15, (%7)\n" ::"r"(buf + j + k + 0),
            "r"(buf + j + k + 4), "r"(buf + j + k + 8), "r"(buf + j + k + 12),
            "r"(buf + j + k + 16), "r"(buf + j + k + 20), "r"(buf + j + k + 24),
            "r"(buf + j + k + 28)
            : "%xmm0", "%xmm1", "%xmm2", "%xmm3", "%xmm4", "%xmm5", "%xmm6",
              "%xmm7", "%xmm8", "%xmm9", "%xmm10", "%xmm11", "%xmm12", "%xmm13",
              "%xmm14", "%xmm15", "memory");
      }
    }
    return;
  }
  if (depth == 8) {
    helper_double_22_recursive(buf + 0, 5);
    helper_double_22_recursive(buf + 32, 5);
    helper_double_22_recursive(buf + 64, 5);
    helper_double_22_recursive(buf + 96, 5);
    helper_double_22_recursive(buf + 128, 5);
    helper_double_22_recursive(buf + 160, 5);
    helper_double_22_recursive(buf + 192, 5);
    helper_double_22_recursive(buf + 224, 5);
    for (int j = 0; j < 256; j += 256) {
      for (int k = 0; k < 32; k += 2) {
        __asm__ volatile(
            "movupd (%0), %%xmm0\n"
            "movupd (%1), %%xmm1\n"
            "movupd (%2), %%xmm2\n"
            "movupd (%3), %%xmm3\n"
            "movupd (%4), %%xmm4\n"
            "movupd (%5), %%xmm5\n"
            "movupd (%6), %%xmm6\n"
            "movupd (%7), %%xmm7\n"
            "movapd %%xmm0, %%xmm8\n"
            "movapd %%xmm0, %%xmm9\n"
            "addpd %%xmm1, %%xmm8\n"
            "subpd %%xmm1, %%xmm9\n"
            "movapd %%xmm2, %%xmm10\n"
            "movapd %%xmm2, %%xmm11\n"
            "addpd %%xmm3, %%xmm10\n"
            "subpd %%xmm3, %%xmm11\n"
            "movapd %%xmm4, %%xmm12\n"
            "movapd %%xmm4, %%xmm13\n"
            "addpd %%xmm5, %%xmm12\n"
            "subpd %%xmm5, %%xmm13\n"
            "movapd %%xmm6, %%xmm14\n"
            "movapd %%xmm6, %%xmm15\n"
            "addpd %%xmm7, %%xmm14\n"
            "subpd %%xmm7, %%xmm15\n"
            "movapd %%xmm8, %%xmm0\n"
            "movapd %%xmm8, %%xmm2\n"
            "addpd %%xmm10, %%xmm0\n"
            "subpd %%xmm10, %%xmm2\n"
            "movapd %%xmm9, %%xmm1\n"
            "movapd %%xmm9, %%xmm3\n"
            "addpd %%xmm11, %%xmm1\n"
            "subpd %%xmm11, %%xmm3\n"
            "movapd %%xmm12, %%xmm4\n"
            "movapd %%xmm12, %%xmm6\n"
            "addpd %%xmm14, %%xmm4\n"
            "subpd %%xmm14, %%xmm6\n"
            "movapd %%xmm13, %%xmm5\n"
            "movapd %%xmm13, %%xmm7\n"
            "addpd %%xmm15, %%xmm5\n"
            "subpd %%xmm15, %%xmm7\n"
            "movapd %%xmm0, %%xmm8\n"
            "movapd %%xmm0, %%xmm12\n"
            "addpd %%xmm4, %%xmm8\n"
            "subpd %%xmm4, %%xmm12\n"
            "movapd %%xmm1, %%xmm9\n"
            "movapd %%xmm1, %%xmm13\n"
            "addpd %%xmm5, %%xmm9\n"
            "subpd %%xmm5, %%xmm13\n"
            "movapd %%xmm2, %%xmm10\n"
            "movapd %%xmm2, %%xmm14\n"
            "addpd %%xmm6, %%xmm10\n"
            "subpd %%xmm6, %%xmm14\n"
            "movapd %%xmm3, %%xmm11\n"
            "movapd %%xmm3, %%xmm15\n"
            "addpd %%xmm7, %%xmm11\n"
            "subpd %%xmm7, %%xmm15\n"
            "movupd %%xmm8, (%0)\n"
            "movupd %%xmm9, (%1)\n"
            "movupd %%xmm10, (%2)\n"
            "movupd %%xmm11, (%3)\n"
            "movupd %%xmm12, (%4)\n"
            "movupd %%xmm13, (%5)\n"
            "movupd %%xmm14, (%6)\n"
            "movupd %%xmm15, (%7)\n" ::"r"(buf + j + k + 0),
            "r"(buf + j + k + 32), "r"(buf + j + k + 64), "r"(buf + j + k + 96),
            "r"(buf + j + k + 128), "r"(buf + j + k + 160),
            "r"(buf + j + k + 192), "r"(buf + j + k + 224)
            : "%xmm0", "%xmm1", "%xmm2", "%xmm3", "%xmm4", "%xmm5", "%xmm6",
              "%xmm7", "%xmm8", "%xmm9", "%xmm10", "%xmm11", "%xmm12", "%xmm13",
              "%xmm14", "%xmm15", "memory");
      }
    }
    return;
  }
  if (depth == 11) {
    helper_double_22_recursive(buf + 0, 8);
    helper_double_22_recursive(buf + 256, 8);
    helper_double_22_recursive(buf + 512, 8);
    helper_double_22_recursive(buf + 768, 8);
    helper_double_22_recursive(buf + 1024, 8);
    helper_double_22_recursive(buf + 1280, 8);
    helper_double_22_recursive(buf + 1536, 8);
    helper_double_22_recursive(buf + 1792, 8);
    for (int j = 0; j < 2048; j += 2048) {
      for (int k = 0; k < 256; k += 2) {
        __asm__ volatile("movupd (%0), %%xmm0\n"
                         "movupd (%1), %%xmm1\n"
                         "movupd (%2), %%xmm2\n"
                         "movupd (%3), %%xmm3\n"
                         "movupd (%4), %%xmm4\n"
                         "movupd (%5), %%xmm5\n"
                         "movupd (%6), %%xmm6\n"
                         "movupd (%7), %%xmm7\n"
                         "movapd %%xmm0, %%xmm8\n"
                         "movapd %%xmm0, %%xmm9\n"
                         "addpd %%xmm1, %%xmm8\n"
                         "subpd %%xmm1, %%xmm9\n"
                         "movapd %%xmm2, %%xmm10\n"
                         "movapd %%xmm2, %%xmm11\n"
                         "addpd %%xmm3, %%xmm10\n"
                         "subpd %%xmm3, %%xmm11\n"
                         "movapd %%xmm4, %%xmm12\n"
                         "movapd %%xmm4, %%xmm13\n"
                         "addpd %%xmm5, %%xmm12\n"
                         "subpd %%xmm5, %%xmm13\n"
                         "movapd %%xmm6, %%xmm14\n"
                         "movapd %%xmm6, %%xmm15\n"
                         "addpd %%xmm7, %%xmm14\n"
                         "subpd %%xmm7, %%xmm15\n"
                         "movapd %%xmm8, %%xmm0\n"
                         "movapd %%xmm8, %%xmm2\n"
                         "addpd %%xmm10, %%xmm0\n"
                         "subpd %%xmm10, %%xmm2\n"
                         "movapd %%xmm9, %%xmm1\n"
                         "movapd %%xmm9, %%xmm3\n"
                         "addpd %%xmm11, %%xmm1\n"
                         "subpd %%xmm11, %%xmm3\n"
                         "movapd %%xmm12, %%xmm4\n"
                         "movapd %%xmm12, %%xmm6\n"
                         "addpd %%xmm14, %%xmm4\n"
                         "subpd %%xmm14, %%xmm6\n"
                         "movapd %%xmm13, %%xmm5\n"
                         "movapd %%xmm13, %%xmm7\n"
                         "addpd %%xmm15, %%xmm5\n"
                         "subpd %%xmm15, %%xmm7\n"
                         "movapd %%xmm0, %%xmm8\n"
                         "movapd %%xmm0, %%xmm12\n"
                         "addpd %%xmm4, %%xmm8\n"
                         "subpd %%xmm4, %%xmm12\n"
                         "movapd %%xmm1, %%xmm9\n"
                         "movapd %%xmm1, %%xmm13\n"
                         "addpd %%xmm5, %%xmm9\n"
                         "subpd %%xmm5, %%xmm13\n"
                         "movapd %%xmm2, %%xmm10\n"
                         "movapd %%xmm2, %%xmm14\n"
                         "addpd %%xmm6, %%xmm10\n"
                         "subpd %%xmm6, %%xmm14\n"
                         "movapd %%xmm3, %%xmm11\n"
                         "movapd %%xmm3, %%xmm15\n"
                         "addpd %%xmm7, %%xmm11\n"
                         "subpd %%xmm7, %%xmm15\n"
                         "movupd %%xmm8, (%0)\n"
                         "movupd %%xmm9, (%1)\n"
                         "movupd %%xmm10, (%2)\n"
                         "movupd %%xmm11, (%3)\n"
                         "movupd %%xmm12, (%4)\n"
                         "movupd %%xmm13, (%5)\n"
                         "movupd %%xmm14, (%6)\n"
                         "movupd %%xmm15, (%7)\n" ::"r"(buf + j + k + 0),
                         "r"(buf + j + k + 256), "r"(buf + j + k + 512),
                         "r"(buf + j + k + 768), "r"(buf + j + k + 1024),
                         "r"(buf + j + k + 1280), "r"(buf + j + k + 1536),
                         "r"(buf + j + k + 1792)
                         : "%xmm0", "%xmm1", "%xmm2", "%xmm3", "%xmm4", "%xmm5",
                           "%xmm6", "%xmm7", "%xmm8", "%xmm9", "%xmm10",
                           "%xmm11", "%xmm12", "%xmm13", "%xmm14", "%xmm15",
                           "memory");
      }
    }
    return;
  }
  if (depth == 14) {
    helper_double_22_recursive(buf + 0, 11);
    helper_double_22_recursive(buf + 2048, 11);
    helper_double_22_recursive(buf + 4096, 11);
    helper_double_22_recursive(buf + 6144, 11);
    helper_double_22_recursive(buf + 8192, 11);
    helper_double_22_recursive(buf + 10240, 11);
    helper_double_22_recursive(buf + 12288, 11);
    helper_double_22_recursive(buf + 14336, 11);
    for (int j = 0; j < 16384; j += 16384) {
      for (int k = 0; k < 2048; k += 2) {
        __asm__ volatile("movupd (%0), %%xmm0\n"
                         "movupd (%1), %%xmm1\n"
                         "movupd (%2), %%xmm2\n"
                         "movupd (%3), %%xmm3\n"
                         "movupd (%4), %%xmm4\n"
                         "movupd (%5), %%xmm5\n"
                         "movupd (%6), %%xmm6\n"
                         "movupd (%7), %%xmm7\n"
                         "movapd %%xmm0, %%xmm8\n"
                         "movapd %%xmm0, %%xmm9\n"
                         "addpd %%xmm1, %%xmm8\n"
                         "subpd %%xmm1, %%xmm9\n"
                         "movapd %%xmm2, %%xmm10\n"
                         "movapd %%xmm2, %%xmm11\n"
                         "addpd %%xmm3, %%xmm10\n"
                         "subpd %%xmm3, %%xmm11\n"
                         "movapd %%xmm4, %%xmm12\n"
                         "movapd %%xmm4, %%xmm13\n"
                         "addpd %%xmm5, %%xmm12\n"
                         "subpd %%xmm5, %%xmm13\n"
                         "movapd %%xmm6, %%xmm14\n"
                         "movapd %%xmm6, %%xmm15\n"
                         "addpd %%xmm7, %%xmm14\n"
                         "subpd %%xmm7, %%xmm15\n"
                         "movapd %%xmm8, %%xmm0\n"
                         "movapd %%xmm8, %%xmm2\n"
                         "addpd %%xmm10, %%xmm0\n"
                         "subpd %%xmm10, %%xmm2\n"
                         "movapd %%xmm9, %%xmm1\n"
                         "movapd %%xmm9, %%xmm3\n"
                         "addpd %%xmm11, %%xmm1\n"
                         "subpd %%xmm11, %%xmm3\n"
                         "movapd %%xmm12, %%xmm4\n"
                         "movapd %%xmm12, %%xmm6\n"
                         "addpd %%xmm14, %%xmm4\n"
                         "subpd %%xmm14, %%xmm6\n"
                         "movapd %%xmm13, %%xmm5\n"
                         "movapd %%xmm13, %%xmm7\n"
                         "addpd %%xmm15, %%xmm5\n"
                         "subpd %%xmm15, %%xmm7\n"
                         "movapd %%xmm0, %%xmm8\n"
                         "movapd %%xmm0, %%xmm12\n"
                         "addpd %%xmm4, %%xmm8\n"
                         "subpd %%xmm4, %%xmm12\n"
                         "movapd %%xmm1, %%xmm9\n"
                         "movapd %%xmm1, %%xmm13\n"
                         "addpd %%xmm5, %%xmm9\n"
                         "subpd %%xmm5, %%xmm13\n"
                         "movapd %%xmm2, %%xmm10\n"
                         "movapd %%xmm2, %%xmm14\n"
                         "addpd %%xmm6, %%xmm10\n"
                         "subpd %%xmm6, %%xmm14\n"
                         "movapd %%xmm3, %%xmm11\n"
                         "movapd %%xmm3, %%xmm15\n"
                         "addpd %%xmm7, %%xmm11\n"
                         "subpd %%xmm7, %%xmm15\n"
                         "movupd %%xmm8, (%0)\n"
                         "movupd %%xmm9, (%1)\n"
                         "movupd %%xmm10, (%2)\n"
                         "movupd %%xmm11, (%3)\n"
                         "movupd %%xmm12, (%4)\n"
                         "movupd %%xmm13, (%5)\n"
                         "movupd %%xmm14, (%6)\n"
                         "movupd %%xmm15, (%7)\n" ::"r"(buf + j + k + 0),
                         "r"(buf + j + k + 2048), "r"(buf + j + k + 4096),
                         "r"(buf + j + k + 6144), "r"(buf + j + k + 8192),
                         "r"(buf + j + k + 10240), "r"(buf + j + k + 12288),
                         "r"(buf + j + k + 14336)
                         : "%xmm0", "%xmm1", "%xmm2", "%xmm3", "%xmm4", "%xmm5",
                           "%xmm6", "%xmm7", "%xmm8", "%xmm9", "%xmm10",
                           "%xmm11", "%xmm12", "%xmm13", "%xmm14", "%xmm15",
                           "memory");
      }
    }
    return;
  }
  if (depth == 17) {
    helper_double_22_recursive(buf + 0, 14);
    helper_double_22_recursive(buf + 16384, 14);
    helper_double_22_recursive(buf + 32768, 14);
    helper_double_22_recursive(buf + 49152, 14);
    helper_double_22_recursive(buf + 65536, 14);
    helper_double_22_recursive(buf + 81920, 14);
    helper_double_22_recursive(buf + 98304, 14);
    helper_double_22_recursive(buf + 114688, 14);
    for (int j = 0; j < 131072; j += 131072) {
      for (int k = 0; k < 16384; k += 2) {
        __asm__ volatile("movupd (%0), %%xmm0\n"
                         "movupd (%1), %%xmm1\n"
                         "movupd (%2), %%xmm2\n"
                         "movupd (%3), %%xmm3\n"
                         "movupd (%4), %%xmm4\n"
                         "movupd (%5), %%xmm5\n"
                         "movupd (%6), %%xmm6\n"
                         "movupd (%7), %%xmm7\n"
                         "movapd %%xmm0, %%xmm8\n"
                         "movapd %%xmm0, %%xmm9\n"
                         "addpd %%xmm1, %%xmm8\n"
                         "subpd %%xmm1, %%xmm9\n"
                         "movapd %%xmm2, %%xmm10\n"
                         "movapd %%xmm2, %%xmm11\n"
                         "addpd %%xmm3, %%xmm10\n"
                         "subpd %%xmm3, %%xmm11\n"
                         "movapd %%xmm4, %%xmm12\n"
                         "movapd %%xmm4, %%xmm13\n"
                         "addpd %%xmm5, %%xmm12\n"
                         "subpd %%xmm5, %%xmm13\n"
                         "movapd %%xmm6, %%xmm14\n"
                         "movapd %%xmm6, %%xmm15\n"
                         "addpd %%xmm7, %%xmm14\n"
                         "subpd %%xmm7, %%xmm15\n"
                         "movapd %%xmm8, %%xmm0\n"
                         "movapd %%xmm8, %%xmm2\n"
                         "addpd %%xmm10, %%xmm0\n"
                         "subpd %%xmm10, %%xmm2\n"
                         "movapd %%xmm9, %%xmm1\n"
                         "movapd %%xmm9, %%xmm3\n"
                         "addpd %%xmm11, %%xmm1\n"
                         "subpd %%xmm11, %%xmm3\n"
                         "movapd %%xmm12, %%xmm4\n"
                         "movapd %%xmm12, %%xmm6\n"
                         "addpd %%xmm14, %%xmm4\n"
                         "subpd %%xmm14, %%xmm6\n"
                         "movapd %%xmm13, %%xmm5\n"
                         "movapd %%xmm13, %%xmm7\n"
                         "addpd %%xmm15, %%xmm5\n"
                         "subpd %%xmm15, %%xmm7\n"
                         "movapd %%xmm0, %%xmm8\n"
                         "movapd %%xmm0, %%xmm12\n"
                         "addpd %%xmm4, %%xmm8\n"
                         "subpd %%xmm4, %%xmm12\n"
                         "movapd %%xmm1, %%xmm9\n"
                         "movapd %%xmm1, %%xmm13\n"
                         "addpd %%xmm5, %%xmm9\n"
                         "subpd %%xmm5, %%xmm13\n"
                         "movapd %%xmm2, %%xmm10\n"
                         "movapd %%xmm2, %%xmm14\n"
                         "addpd %%xmm6, %%xmm10\n"
                         "subpd %%xmm6, %%xmm14\n"
                         "movapd %%xmm3, %%xmm11\n"
                         "movapd %%xmm3, %%xmm15\n"
                         "addpd %%xmm7, %%xmm11\n"
                         "subpd %%xmm7, %%xmm15\n"
                         "movupd %%xmm8, (%0)\n"
                         "movupd %%xmm9, (%1)\n"
                         "movupd %%xmm10, (%2)\n"
                         "movupd %%xmm11, (%3)\n"
                         "movupd %%xmm12, (%4)\n"
                         "movupd %%xmm13, (%5)\n"
                         "movupd %%xmm14, (%6)\n"
                         "movupd %%xmm15, (%7)\n" ::"r"(buf + j + k + 0),
                         "r"(buf + j + k + 16384), "r"(buf + j + k + 32768),
                         "r"(buf + j + k + 49152), "r"(buf + j + k + 65536),
                         "r"(buf + j + k + 81920), "r"(buf + j + k + 98304),
                         "r"(buf + j + k + 114688)
                         : "%xmm0", "%xmm1", "%xmm2", "%xmm3", "%xmm4", "%xmm5",
                           "%xmm6", "%xmm7", "%xmm8", "%xmm9", "%xmm10",
                           "%xmm11", "%xmm12", "%xmm13", "%xmm14", "%xmm15",
                           "memory");
      }
    }
    return;
  }
  if (depth == 20) {
    helper_double_22_recursive(buf + 0, 17);
    helper_double_22_recursive(buf + 131072, 17);
    helper_double_22_recursive(buf + 262144, 17);
    helper_double_22_recursive(buf + 393216, 17);
    helper_double_22_recursive(buf + 524288, 17);
    helper_double_22_recursive(buf + 655360, 17);
    helper_double_22_recursive(buf + 786432, 17);
    helper_double_22_recursive(buf + 917504, 17);
    for (int j = 0; j < 1048576; j += 1048576) {
      for (int k = 0; k < 131072; k += 2) {
        __asm__ volatile("movupd (%0), %%xmm0\n"
                         "movupd (%1), %%xmm1\n"
                         "movupd (%2), %%xmm2\n"
                         "movupd (%3), %%xmm3\n"
                         "movupd (%4), %%xmm4\n"
                         "movupd (%5), %%xmm5\n"
                         "movupd (%6), %%xmm6\n"
                         "movupd (%7), %%xmm7\n"
                         "movapd %%xmm0, %%xmm8\n"
                         "movapd %%xmm0, %%xmm9\n"
                         "addpd %%xmm1, %%xmm8\n"
                         "subpd %%xmm1, %%xmm9\n"
                         "movapd %%xmm2, %%xmm10\n"
                         "movapd %%xmm2, %%xmm11\n"
                         "addpd %%xmm3, %%xmm10\n"
                         "subpd %%xmm3, %%xmm11\n"
                         "movapd %%xmm4, %%xmm12\n"
                         "movapd %%xmm4, %%xmm13\n"
                         "addpd %%xmm5, %%xmm12\n"
                         "subpd %%xmm5, %%xmm13\n"
                         "movapd %%xmm6, %%xmm14\n"
                         "movapd %%xmm6, %%xmm15\n"
                         "addpd %%xmm7, %%xmm14\n"
                         "subpd %%xmm7, %%xmm15\n"
                         "movapd %%xmm8, %%xmm0\n"
                         "movapd %%xmm8, %%xmm2\n"
                         "addpd %%xmm10, %%xmm0\n"
                         "subpd %%xmm10, %%xmm2\n"
                         "movapd %%xmm9, %%xmm1\n"
                         "movapd %%xmm9, %%xmm3\n"
                         "addpd %%xmm11, %%xmm1\n"
                         "subpd %%xmm11, %%xmm3\n"
                         "movapd %%xmm12, %%xmm4\n"
                         "movapd %%xmm12, %%xmm6\n"
                         "addpd %%xmm14, %%xmm4\n"
                         "subpd %%xmm14, %%xmm6\n"
                         "movapd %%xmm13, %%xmm5\n"
                         "movapd %%xmm13, %%xmm7\n"
                         "addpd %%xmm15, %%xmm5\n"
                         "subpd %%xmm15, %%xmm7\n"
                         "movapd %%xmm0, %%xmm8\n"
                         "movapd %%xmm0, %%xmm12\n"
                         "addpd %%xmm4, %%xmm8\n"
                         "subpd %%xmm4, %%xmm12\n"
                         "movapd %%xmm1, %%xmm9\n"
                         "movapd %%xmm1, %%xmm13\n"
                         "addpd %%xmm5, %%xmm9\n"
                         "subpd %%xmm5, %%xmm13\n"
                         "movapd %%xmm2, %%xmm10\n"
                         "movapd %%xmm2, %%xmm14\n"
                         "addpd %%xmm6, %%xmm10\n"
                         "subpd %%xmm6, %%xmm14\n"
                         "movapd %%xmm3, %%xmm11\n"
                         "movapd %%xmm3, %%xmm15\n"
                         "addpd %%xmm7, %%xmm11\n"
                         "subpd %%xmm7, %%xmm15\n"
                         "movupd %%xmm8, (%0)\n"
                         "movupd %%xmm9, (%1)\n"
                         "movupd %%xmm10, (%2)\n"
                         "movupd %%xmm11, (%3)\n"
                         "movupd %%xmm12, (%4)\n"
                         "movupd %%xmm13, (%5)\n"
                         "movupd %%xmm14, (%6)\n"
                         "movupd %%xmm15, (%7)\n" ::"r"(buf + j + k + 0),
                         "r"(buf + j + k + 131072), "r"(buf + j + k + 262144),
                         "r"(buf + j + k + 393216), "r"(buf + j + k + 524288),
                         "r"(buf + j + k + 655360), "r"(buf + j + k + 786432),
                         "r"(buf + j + k + 917504)
                         : "%xmm0", "%xmm1", "%xmm2", "%xmm3", "%xmm4", "%xmm5",
                           "%xmm6", "%xmm7", "%xmm8", "%xmm9", "%xmm10",
                           "%xmm11", "%xmm12", "%xmm13", "%xmm14", "%xmm15",
                           "memory");
      }
    }
    return;
  }
  if (depth == 22) {
    helper_double_22_recursive(buf + 0, 20);
    helper_double_22_recursive(buf + 1048576, 20);
    helper_double_22_recursive(buf + 2097152, 20);
    helper_double_22_recursive(buf + 3145728, 20);
    for (int j = 0; j < 4194304; j += 4194304) {
      for (int k = 0; k < 1048576; k += 2) {
        __asm__ volatile("movupd (%0), %%xmm0\n"
                         "movupd (%1), %%xmm1\n"
                         "movupd (%2), %%xmm2\n"
                         "movupd (%3), %%xmm3\n"
                         "movapd %%xmm0, %%xmm8\n"
                         "movapd %%xmm0, %%xmm9\n"
                         "addpd %%xmm1, %%xmm8\n"
                         "subpd %%xmm1, %%xmm9\n"
                         "movapd %%xmm2, %%xmm10\n"
                         "movapd %%xmm2, %%xmm11\n"
                         "addpd %%xmm3, %%xmm10\n"
                         "subpd %%xmm3, %%xmm11\n"
                         "movapd %%xmm8, %%xmm0\n"
                         "movapd %%xmm8, %%xmm2\n"
                         "addpd %%xmm10, %%xmm0\n"
                         "subpd %%xmm10, %%xmm2\n"
                         "movapd %%xmm9, %%xmm1\n"
                         "movapd %%xmm9, %%xmm3\n"
                         "addpd %%xmm11, %%xmm1\n"
                         "subpd %%xmm11, %%xmm3\n"
                         "movupd %%xmm0, (%0)\n"
                         "movupd %%xmm1, (%1)\n"
                         "movupd %%xmm2, (%2)\n"
                         "movupd %%xmm3, (%3)\n" ::"r"(buf + j + k + 0),
                         "r"(buf + j + k + 1048576), "r"(buf + j + k + 2097152),
                         "r"(buf + j + k + 3145728)
                         : "%xmm0", "%xmm1", "%xmm2", "%xmm3", "%xmm4", "%xmm5",
                           "%xmm6", "%xmm7", "%xmm8", "%xmm9", "%xmm10",
                           "%xmm11", "%xmm12", "%xmm13", "%xmm14", "%xmm15",
                           "memory");
      }
    }
    return;
  }
}


x86 assembly (clang, -O0):
<helper_double_22_recursive>:
push   %rbp
mov    %rsp,%rbp
sub    $0x50,%rsp
mov    %rdi,-0x8(%rbp)
mov    %esi,-0xc(%rbp)
cmpl   $0x2,-0xc(%rbp)
jne    120f <helper_double_22_recursive+0xff>
movl   $0x0,-0x10(%rbp)
cmpl   $0x4,-0x10(%rbp)
jge    120a <helper_double_22_recursive+0xfa>
movl   $0x0,-0x14(%rbp)
cmpl   $0x2,-0x14(%rbp)
jge    11f7 <helper_double_22_recursive+0xe7>
mov    -0x8(%rbp),%rax
movslq -0x10(%rbp),%rcx
shl    $0x3,%rcx
add    %rcx,%rax
movslq -0x14(%rbp),%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    -0x8(%rbp),%rcx
movslq -0x10(%rbp),%rdx
shl    $0x3,%rdx
add    %rdx,%rcx
movslq -0x14(%rbp),%rdx
shl    $0x3,%rdx
add    %rdx,%rcx
add    $0x10,%rcx
movupd (%rax),%xmm0
movupd (%rcx),%xmm1
movapd %xmm0,%xmm8
haddpd %xmm8,%xmm8
movapd %xmm0,%xmm9
hsubpd %xmm9,%xmm9
blendpd $0x1,%xmm8,%xmm9
movapd %xmm9,%xmm0
movapd %xmm1,%xmm8
haddpd %xmm8,%xmm8
movapd %xmm1,%xmm9
hsubpd %xmm9,%xmm9
blendpd $0x1,%xmm8,%xmm9
movapd %xmm9,%xmm1
movapd %xmm0,%xmm8
movapd %xmm0,%xmm9
addpd  %xmm1,%xmm8
subpd  %xmm1,%xmm9
movupd %xmm8,(%rax)
movupd %xmm9,(%rcx)
mov    -0x14(%rbp),%eax
add    $0x2,%eax
mov    %eax,-0x14(%rbp)
jmp    1141 <helper_double_22_recursive+0x31>
jmp    11fc <helper_double_22_recursive+0xec>
mov    -0x10(%rbp),%eax
add    $0x4,%eax
mov    %eax,-0x10(%rbp)
jmp    1130 <helper_double_22_recursive+0x20>
jmp    26d0 <helper_double_22_recursive+0x15c0>
cmpl   $0x5,-0xc(%rbp)
jne    152c <helper_double_22_recursive+0x41c>
mov    -0x8(%rbp),%rdi
mov    $0x2,%esi
call   1030 <helper_double_22_recursive@plt>
mov    -0x8(%rbp),%rdi
add    $0x20,%rdi
mov    $0x2,%esi
call   1030 <helper_double_22_recursive@plt>
mov    -0x8(%rbp),%rdi
add    $0x40,%rdi
mov    $0x2,%esi
call   1030 <helper_double_22_recursive@plt>
mov    -0x8(%rbp),%rdi
add    $0x60,%rdi
mov    $0x2,%esi
call   1030 <helper_double_22_recursive@plt>
mov    -0x8(%rbp),%rdi
add    $0x80,%rdi
mov    $0x2,%esi
call   1030 <helper_double_22_recursive@plt>
mov    -0x8(%rbp),%rdi
add    $0xa0,%rdi
mov    $0x2,%esi
call   1030 <helper_double_22_recursive@plt>
mov    -0x8(%rbp),%rdi
add    $0xc0,%rdi
mov    $0x2,%esi
call   1030 <helper_double_22_recursive@plt>
mov    -0x8(%rbp),%rdi
add    $0xe0,%rdi
mov    $0x2,%esi
call   1030 <helper_double_22_recursive@plt>
movl   $0x0,-0x18(%rbp)
cmpl   $0x20,-0x18(%rbp)
jge    1527 <helper_double_22_recursive+0x417>
movl   $0x0,-0x1c(%rbp)
cmpl   $0x4,-0x1c(%rbp)
jge    1514 <helper_double_22_recursive+0x404>
mov    -0x8(%rbp),%rax
movslq -0x18(%rbp),%rcx
shl    $0x3,%rcx
add    %rcx,%rax
movslq -0x1c(%rbp),%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    -0x8(%rbp),%rcx
movslq -0x18(%rbp),%rdx
shl    $0x3,%rdx
add    %rdx,%rcx
movslq -0x1c(%rbp),%rdx
shl    $0x3,%rdx
add    %rdx,%rcx
add    $0x20,%rcx
mov    -0x8(%rbp),%rdx
movslq -0x18(%rbp),%rsi
shl    $0x3,%rsi
add    %rsi,%rdx
movslq -0x1c(%rbp),%rsi
shl    $0x3,%rsi
add    %rsi,%rdx
add    $0x40,%rdx
mov    -0x8(%rbp),%rsi
movslq -0x18(%rbp),%rdi
shl    $0x3,%rdi
add    %rdi,%rsi
movslq -0x1c(%rbp),%rdi
shl    $0x3,%rdi
add    %rdi,%rsi
add    $0x60,%rsi
mov    -0x8(%rbp),%rdi
movslq -0x18(%rbp),%r8
shl    $0x3,%r8
add    %r8,%rdi
movslq -0x1c(%rbp),%r8
shl    $0x3,%r8
add    %r8,%rdi
add    $0x80,%rdi
mov    -0x8(%rbp),%r8
movslq -0x18(%rbp),%r9
shl    $0x3,%r9
add    %r9,%r8
movslq -0x1c(%rbp),%r9
shl    $0x3,%r9
add    %r9,%r8
add    $0xa0,%r8
mov    -0x8(%rbp),%r9
movslq -0x18(%rbp),%r10
shl    $0x3,%r10
add    %r10,%r9
movslq -0x1c(%rbp),%r10
shl    $0x3,%r10
add    %r10,%r9
add    $0xc0,%r9
mov    -0x8(%rbp),%r10
movslq -0x18(%rbp),%r11
shl    $0x3,%r11
add    %r11,%r10
movslq -0x1c(%rbp),%r11
shl    $0x3,%r11
add    %r11,%r10
add    $0xe0,%r10
movupd (%rax),%xmm0
movupd (%rcx),%xmm1
movupd (%rdx),%xmm2
movupd (%rsi),%xmm3
movupd (%rdi),%xmm4
movupd (%r8),%xmm5
movupd (%r9),%xmm6
movupd (%r10),%xmm7
movapd %xmm0,%xmm8
movapd %xmm0,%xmm9
addpd  %xmm1,%xmm8
subpd  %xmm1,%xmm9
movapd %xmm2,%xmm10
movapd %xmm2,%xmm11
addpd  %xmm3,%xmm10
subpd  %xmm3,%xmm11
movapd %xmm4,%xmm12
movapd %xmm4,%xmm13
addpd  %xmm5,%xmm12
subpd  %xmm5,%xmm13
movapd %xmm6,%xmm14
movapd %xmm6,%xmm15
addpd  %xmm7,%xmm14
subpd  %xmm7,%xmm15
movapd %xmm8,%xmm0
movapd %xmm8,%xmm2
addpd  %xmm10,%xmm0
subpd  %xmm10,%xmm2
movapd %xmm9,%xmm1
movapd %xmm9,%xmm3
addpd  %xmm11,%xmm1
subpd  %xmm11,%xmm3
movapd %xmm12,%xmm4
movapd %xmm12,%xmm6
addpd  %xmm14,%xmm4
subpd  %xmm14,%xmm6
movapd %xmm13,%xmm5
movapd %xmm13,%xmm7
addpd  %xmm15,%xmm5
subpd  %xmm15,%xmm7
movapd %xmm0,%xmm8
movapd %xmm0,%xmm12
addpd  %xmm4,%xmm8
subpd  %xmm4,%xmm12
movapd %xmm1,%xmm9
movapd %xmm1,%xmm13
addpd  %xmm5,%xmm9
subpd  %xmm5,%xmm13
movapd %xmm2,%xmm10
movapd %xmm2,%xmm14
addpd  %xmm6,%xmm10
subpd  %xmm6,%xmm14
movapd %xmm3,%xmm11
movapd %xmm3,%xmm15
addpd  %xmm7,%xmm11
subpd  %xmm7,%xmm15
movupd %xmm8,(%rax)
movupd %xmm9,(%rcx)
movupd %xmm10,(%rdx)
movupd %xmm11,(%rsi)
movupd %xmm12,(%rdi)
movupd %xmm13,(%r8)
movupd %xmm14,(%r9)
movupd %xmm15,(%r10)
mov    -0x1c(%rbp),%eax
add    $0x2,%eax
mov    %eax,-0x1c(%rbp)
jmp    12c9 <helper_double_22_recursive+0x1b9>
jmp    1519 <helper_double_22_recursive+0x409>
mov    -0x18(%rbp),%eax
add    $0x20,%eax
mov    %eax,-0x18(%rbp)
jmp    12b8 <helper_double_22_recursive+0x1a8>
jmp    26d0 <helper_double_22_recursive+0x15c0>
cmpl   $0x8,-0xc(%rbp)
jne    1860 <helper_double_22_recursive+0x750>
mov    -0x8(%rbp),%rdi
mov    $0x5,%esi
call   1030 <helper_double_22_recursive@plt>
mov    -0x8(%rbp),%rdi
add    $0x100,%rdi
mov    $0x5,%esi
call   1030 <helper_double_22_recursive@plt>
mov    -0x8(%rbp),%rdi
add    $0x200,%rdi
mov    $0x5,%esi
call   1030 <helper_double_22_recursive@plt>
mov    -0x8(%rbp),%rdi
add    $0x300,%rdi
mov    $0x5,%esi
call   1030 <helper_double_22_recursive@plt>
mov    -0x8(%rbp),%rdi
add    $0x400,%rdi
mov    $0x5,%esi
call   1030 <helper_double_22_recursive@plt>
mov    -0x8(%rbp),%rdi
add    $0x500,%rdi
mov    $0x5,%esi
call   1030 <helper_double_22_recursive@plt>
mov    -0x8(%rbp),%rdi
add    $0x600,%rdi
mov    $0x5,%esi
call   1030 <helper_double_22_recursive@plt>
mov    -0x8(%rbp),%rdi
add    $0x700,%rdi
mov    $0x5,%esi
call   1030 <helper_double_22_recursive@plt>
movl   $0x0,-0x20(%rbp)
cmpl   $0x100,-0x20(%rbp)
jge    185b <helper_double_22_recursive+0x74b>
movl   $0x0,-0x24(%rbp)
cmpl   $0x20,-0x24(%rbp)
jge    1846 <helper_double_22_recursive+0x736>
mov    -0x8(%rbp),%rax
movslq -0x20(%rbp),%rcx
shl    $0x3,%rcx
add    %rcx,%rax
movslq -0x24(%rbp),%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    -0x8(%rbp),%rcx
movslq -0x20(%rbp),%rdx
shl    $0x3,%rdx
add    %rdx,%rcx
movslq -0x24(%rbp),%rdx
shl    $0x3,%rdx
add    %rdx,%rcx
add    $0x100,%rcx
mov    -0x8(%rbp),%rdx
movslq -0x20(%rbp),%rsi
shl    $0x3,%rsi
add    %rsi,%rdx
movslq -0x24(%rbp),%rsi
shl    $0x3,%rsi
add    %rsi,%rdx
add    $0x200,%rdx
mov    -0x8(%rbp),%rsi
movslq -0x20(%rbp),%rdi
shl    $0x3,%rdi
add    %rdi,%rsi
movslq -0x24(%rbp),%rdi
shl    $0x3,%rdi
add    %rdi,%rsi
add    $0x300,%rsi
mov    -0x8(%rbp),%rdi
movslq -0x20(%rbp),%r8
shl    $0x3,%r8
add    %r8,%rdi
movslq -0x24(%rbp),%r8
shl    $0x3,%r8
add    %r8,%rdi
add    $0x400,%rdi
mov    -0x8(%rbp),%r8
movslq -0x20(%rbp),%r9
shl    $0x3,%r9
add    %r9,%r8
movslq -0x24(%rbp),%r9
shl    $0x3,%r9
add    %r9,%r8
add    $0x500,%r8
mov    -0x8(%rbp),%r9
movslq -0x20(%rbp),%r10
shl    $0x3,%r10
add    %r10,%r9
movslq -0x24(%rbp),%r10
shl    $0x3,%r10
add    %r10,%r9
add    $0x600,%r9
mov    -0x8(%rbp),%r10
movslq -0x20(%rbp),%r11
shl    $0x3,%r11
add    %r11,%r10
movslq -0x24(%rbp),%r11
shl    $0x3,%r11
add    %r11,%r10
add    $0x700,%r10
movupd (%rax),%xmm0
movupd (%rcx),%xmm1
movupd (%rdx),%xmm2
movupd (%rsi),%xmm3
movupd (%rdi),%xmm4
movupd (%r8),%xmm5
movupd (%r9),%xmm6
movupd (%r10),%xmm7
movapd %xmm0,%xmm8
movapd %xmm0,%xmm9
addpd  %xmm1,%xmm8
subpd  %xmm1,%xmm9
movapd %xmm2,%xmm10
movapd %xmm2,%xmm11
addpd  %xmm3,%xmm10
subpd  %xmm3,%xmm11
movapd %xmm4,%xmm12
movapd %xmm4,%xmm13
addpd  %xmm5,%xmm12
subpd  %xmm5,%xmm13
movapd %xmm6,%xmm14
movapd %xmm6,%xmm15
addpd  %xmm7,%xmm14
subpd  %xmm7,%xmm15
movapd %xmm8,%xmm0
movapd %xmm8,%xmm2
addpd  %xmm10,%xmm0
subpd  %xmm10,%xmm2
movapd %xmm9,%xmm1
movapd %xmm9,%xmm3
addpd  %xmm11,%xmm1
subpd  %xmm11,%xmm3
movapd %xmm12,%xmm4
movapd %xmm12,%xmm6
addpd  %xmm14,%xmm4
subpd  %xmm14,%xmm6
movapd %xmm13,%xmm5
movapd %xmm13,%xmm7
addpd  %xmm15,%xmm5
subpd  %xmm15,%xmm7
movapd %xmm0,%xmm8
movapd %xmm0,%xmm12
addpd  %xmm4,%xmm8
subpd  %xmm4,%xmm12
movapd %xmm1,%xmm9
movapd %xmm1,%xmm13
addpd  %xmm5,%xmm9
subpd  %xmm5,%xmm13
movapd %xmm2,%xmm10
movapd %xmm2,%xmm14
addpd  %xmm6,%xmm10
subpd  %xmm6,%xmm14
movapd %xmm3,%xmm11
movapd %xmm3,%xmm15
addpd  %xmm7,%xmm11
subpd  %xmm7,%xmm15
movupd %xmm8,(%rax)
movupd %xmm9,(%rcx)
movupd %xmm10,(%rdx)
movupd %xmm11,(%rsi)
movupd %xmm12,(%rdi)
movupd %xmm13,(%r8)
movupd %xmm14,(%r9)
movupd %xmm15,(%r10)
mov    -0x24(%rbp),%eax
add    $0x2,%eax
mov    %eax,-0x24(%rbp)
jmp    15f2 <helper_double_22_recursive+0x4e2>
jmp    184b <helper_double_22_recursive+0x73b>
mov    -0x20(%rbp),%eax
add    $0x100,%eax
mov    %eax,-0x20(%rbp)
jmp    15de <helper_double_22_recursive+0x4ce>
jmp    26d0 <helper_double_22_recursive+0x15c0>
cmpl   $0xb,-0xc(%rbp)
jne    1b97 <helper_double_22_recursive+0xa87>
mov    -0x8(%rbp),%rdi
mov    $0x8,%esi
call   1030 <helper_double_22_recursive@plt>
mov    -0x8(%rbp),%rdi
add    $0x800,%rdi
mov    $0x8,%esi
call   1030 <helper_double_22_recursive@plt>
mov    -0x8(%rbp),%rdi
add    $0x1000,%rdi
mov    $0x8,%esi
call   1030 <helper_double_22_recursive@plt>
mov    -0x8(%rbp),%rdi
add    $0x1800,%rdi
mov    $0x8,%esi
call   1030 <helper_double_22_recursive@plt>
mov    -0x8(%rbp),%rdi
add    $0x2000,%rdi
mov    $0x8,%esi
call   1030 <helper_double_22_recursive@plt>
mov    -0x8(%rbp),%rdi
add    $0x2800,%rdi
mov    $0x8,%esi
call   1030 <helper_double_22_recursive@plt>
mov    -0x8(%rbp),%rdi
add    $0x3000,%rdi
mov    $0x8,%esi
call   1030 <helper_double_22_recursive@plt>
mov    -0x8(%rbp),%rdi
add    $0x3800,%rdi
mov    $0x8,%esi
call   1030 <helper_double_22_recursive@plt>
movl   $0x0,-0x28(%rbp)
cmpl   $0x800,-0x28(%rbp)
jge    1b92 <helper_double_22_recursive+0xa82>
movl   $0x0,-0x2c(%rbp)
cmpl   $0x100,-0x2c(%rbp)
jge    1b7d <helper_double_22_recursive+0xa6d>
mov    -0x8(%rbp),%rax
movslq -0x28(%rbp),%rcx
shl    $0x3,%rcx
add    %rcx,%rax
movslq -0x2c(%rbp),%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    -0x8(%rbp),%rcx
movslq -0x28(%rbp),%rdx
shl    $0x3,%rdx
add    %rdx,%rcx
movslq -0x2c(%rbp),%rdx
shl    $0x3,%rdx
add    %rdx,%rcx
add    $0x800,%rcx
mov    -0x8(%rbp),%rdx
movslq -0x28(%rbp),%rsi
shl    $0x3,%rsi
add    %rsi,%rdx
movslq -0x2c(%rbp),%rsi
shl    $0x3,%rsi
add    %rsi,%rdx
add    $0x1000,%rdx
mov    -0x8(%rbp),%rsi
movslq -0x28(%rbp),%rdi
shl    $0x3,%rdi
add    %rdi,%rsi
movslq -0x2c(%rbp),%rdi
shl    $0x3,%rdi
add    %rdi,%rsi
add    $0x1800,%rsi
mov    -0x8(%rbp),%rdi
movslq -0x28(%rbp),%r8
shl    $0x3,%r8
add    %r8,%rdi
movslq -0x2c(%rbp),%r8
shl    $0x3,%r8
add    %r8,%rdi
add    $0x2000,%rdi
mov    -0x8(%rbp),%r8
movslq -0x28(%rbp),%r9
shl    $0x3,%r9
add    %r9,%r8
movslq -0x2c(%rbp),%r9
shl    $0x3,%r9
add    %r9,%r8
add    $0x2800,%r8
mov    -0x8(%rbp),%r9
movslq -0x28(%rbp),%r10
shl    $0x3,%r10
add    %r10,%r9
movslq -0x2c(%rbp),%r10
shl    $0x3,%r10
add    %r10,%r9
add    $0x3000,%r9
mov    -0x8(%rbp),%r10
movslq -0x28(%rbp),%r11
shl    $0x3,%r11
add    %r11,%r10
movslq -0x2c(%rbp),%r11
shl    $0x3,%r11
add    %r11,%r10
add    $0x3800,%r10
movupd (%rax),%xmm0
movupd (%rcx),%xmm1
movupd (%rdx),%xmm2
movupd (%rsi),%xmm3
movupd (%rdi),%xmm4
movupd (%r8),%xmm5
movupd (%r9),%xmm6
movupd (%r10),%xmm7
movapd %xmm0,%xmm8
movapd %xmm0,%xmm9
addpd  %xmm1,%xmm8
subpd  %xmm1,%xmm9
movapd %xmm2,%xmm10
movapd %xmm2,%xmm11
addpd  %xmm3,%xmm10
subpd  %xmm3,%xmm11
movapd %xmm4,%xmm12
movapd %xmm4,%xmm13
addpd  %xmm5,%xmm12
subpd  %xmm5,%xmm13
movapd %xmm6,%xmm14
movapd %xmm6,%xmm15
addpd  %xmm7,%xmm14
subpd  %xmm7,%xmm15
movapd %xmm8,%xmm0
movapd %xmm8,%xmm2
addpd  %xmm10,%xmm0
subpd  %xmm10,%xmm2
movapd %xmm9,%xmm1
movapd %xmm9,%xmm3
addpd  %xmm11,%xmm1
subpd  %xmm11,%xmm3
movapd %xmm12,%xmm4
movapd %xmm12,%xmm6
addpd  %xmm14,%xmm4
subpd  %xmm14,%xmm6
movapd %xmm13,%xmm5
movapd %xmm13,%xmm7
addpd  %xmm15,%xmm5
subpd  %xmm15,%xmm7
movapd %xmm0,%xmm8
movapd %xmm0,%xmm12
addpd  %xmm4,%xmm8
subpd  %xmm4,%xmm12
movapd %xmm1,%xmm9
movapd %xmm1,%xmm13
addpd  %xmm5,%xmm9
subpd  %xmm5,%xmm13
movapd %xmm2,%xmm10
movapd %xmm2,%xmm14
addpd  %xmm6,%xmm10
subpd  %xmm6,%xmm14
movapd %xmm3,%xmm11
movapd %xmm3,%xmm15
addpd  %xmm7,%xmm11
subpd  %xmm7,%xmm15
movupd %xmm8,(%rax)
movupd %xmm9,(%rcx)
movupd %xmm10,(%rdx)
movupd %xmm11,(%rsi)
movupd %xmm12,(%rdi)
movupd %xmm13,(%r8)
movupd %xmm14,(%r9)
movupd %xmm15,(%r10)
mov    -0x2c(%rbp),%eax
add    $0x2,%eax
mov    %eax,-0x2c(%rbp)
jmp    1926 <helper_double_22_recursive+0x816>
jmp    1b82 <helper_double_22_recursive+0xa72>
mov    -0x28(%rbp),%eax
add    $0x800,%eax
mov    %eax,-0x28(%rbp)
jmp    1912 <helper_double_22_recursive+0x802>
jmp    26d0 <helper_double_22_recursive+0x15c0>
cmpl   $0xe,-0xc(%rbp)
jne    1ece <helper_double_22_recursive+0xdbe>
mov    -0x8(%rbp),%rdi
mov    $0xb,%esi
call   1030 <helper_double_22_recursive@plt>
mov    -0x8(%rbp),%rdi
add    $0x4000,%rdi
mov    $0xb,%esi
call   1030 <helper_double_22_recursive@plt>
mov    -0x8(%rbp),%rdi
add    $0x8000,%rdi
mov    $0xb,%esi
call   1030 <helper_double_22_recursive@plt>
mov    -0x8(%rbp),%rdi
add    $0xc000,%rdi
mov    $0xb,%esi
call   1030 <helper_double_22_recursive@plt>
mov    -0x8(%rbp),%rdi
add    $0x10000,%rdi
mov    $0xb,%esi
call   1030 <helper_double_22_recursive@plt>
mov    -0x8(%rbp),%rdi
add    $0x14000,%rdi
mov    $0xb,%esi
call   1030 <helper_double_22_recursive@plt>
mov    -0x8(%rbp),%rdi
add    $0x18000,%rdi
mov    $0xb,%esi
call   1030 <helper_double_22_recursive@plt>
mov    -0x8(%rbp),%rdi
add    $0x1c000,%rdi
mov    $0xb,%esi
call   1030 <helper_double_22_recursive@plt>
movl   $0x0,-0x30(%rbp)
cmpl   $0x4000,-0x30(%rbp)
jge    1ec9 <helper_double_22_recursive+0xdb9>
movl   $0x0,-0x34(%rbp)
cmpl   $0x800,-0x34(%rbp)
jge    1eb4 <helper_double_22_recursive+0xda4>
mov    -0x8(%rbp),%rax
movslq -0x30(%rbp),%rcx
shl    $0x3,%rcx
add    %rcx,%rax
movslq -0x34(%rbp),%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    -0x8(%rbp),%rcx
movslq -0x30(%rbp),%rdx
shl    $0x3,%rdx
add    %rdx,%rcx
movslq -0x34(%rbp),%rdx
shl    $0x3,%rdx
add    %rdx,%rcx
add    $0x4000,%rcx
mov    -0x8(%rbp),%rdx
movslq -0x30(%rbp),%rsi
shl    $0x3,%rsi
add    %rsi,%rdx
movslq -0x34(%rbp),%rsi
shl    $0x3,%rsi
add    %rsi,%rdx
add    $0x8000,%rdx
mov    -0x8(%rbp),%rsi
movslq -0x30(%rbp),%rdi
shl    $0x3,%rdi
add    %rdi,%rsi
movslq -0x34(%rbp),%rdi
shl    $0x3,%rdi
add    %rdi,%rsi
add    $0xc000,%rsi
mov    -0x8(%rbp),%rdi
movslq -0x30(%rbp),%r8
shl    $0x3,%r8
add    %r8,%rdi
movslq -0x34(%rbp),%r8
shl    $0x3,%r8
add    %r8,%rdi
add    $0x10000,%rdi
mov    -0x8(%rbp),%r8
movslq -0x30(%rbp),%r9
shl    $0x3,%r9
add    %r9,%r8
movslq -0x34(%rbp),%r9
shl    $0x3,%r9
add    %r9,%r8
add    $0x14000,%r8
mov    -0x8(%rbp),%r9
movslq -0x30(%rbp),%r10
shl    $0x3,%r10
add    %r10,%r9
movslq -0x34(%rbp),%r10
shl    $0x3,%r10
add    %r10,%r9
add    $0x18000,%r9
mov    -0x8(%rbp),%r10
movslq -0x30(%rbp),%r11
shl    $0x3,%r11
add    %r11,%r10
movslq -0x34(%rbp),%r11
shl    $0x3,%r11
add    %r11,%r10
add    $0x1c000,%r10
movupd (%rax),%xmm0
movupd (%rcx),%xmm1
movupd (%rdx),%xmm2
movupd (%rsi),%xmm3
movupd (%rdi),%xmm4
movupd (%r8),%xmm5
movupd (%r9),%xmm6
movupd (%r10),%xmm7
movapd %xmm0,%xmm8
movapd %xmm0,%xmm9
addpd  %xmm1,%xmm8
subpd  %xmm1,%xmm9
movapd %xmm2,%xmm10
movapd %xmm2,%xmm11
addpd  %xmm3,%xmm10
subpd  %xmm3,%xmm11
movapd %xmm4,%xmm12
movapd %xmm4,%xmm13
addpd  %xmm5,%xmm12
subpd  %xmm5,%xmm13
movapd %xmm6,%xmm14
movapd %xmm6,%xmm15
addpd  %xmm7,%xmm14
subpd  %xmm7,%xmm15
movapd %xmm8,%xmm0
movapd %xmm8,%xmm2
addpd  %xmm10,%xmm0
subpd  %xmm10,%xmm2
movapd %xmm9,%xmm1
movapd %xmm9,%xmm3
addpd  %xmm11,%xmm1
subpd  %xmm11,%xmm3
movapd %xmm12,%xmm4
movapd %xmm12,%xmm6
addpd  %xmm14,%xmm4
subpd  %xmm14,%xmm6
movapd %xmm13,%xmm5
movapd %xmm13,%xmm7
addpd  %xmm15,%xmm5
subpd  %xmm15,%xmm7
movapd %xmm0,%xmm8
movapd %xmm0,%xmm12
addpd  %xmm4,%xmm8
subpd  %xmm4,%xmm12
movapd %xmm1,%xmm9
movapd %xmm1,%xmm13
addpd  %xmm5,%xmm9
subpd  %xmm5,%xmm13
movapd %xmm2,%xmm10
movapd %xmm2,%xmm14
addpd  %xmm6,%xmm10
subpd  %xmm6,%xmm14
movapd %xmm3,%xmm11
movapd %xmm3,%xmm15
addpd  %xmm7,%xmm11
subpd  %xmm7,%xmm15
movupd %xmm8,(%rax)
movupd %xmm9,(%rcx)
movupd %xmm10,(%rdx)
movupd %xmm11,(%rsi)
movupd %xmm12,(%rdi)
movupd %xmm13,(%r8)
movupd %xmm14,(%r9)
movupd %xmm15,(%r10)
mov    -0x34(%rbp),%eax
add    $0x2,%eax
mov    %eax,-0x34(%rbp)
jmp    1c5d <helper_double_22_recursive+0xb4d>
jmp    1eb9 <helper_double_22_recursive+0xda9>
mov    -0x30(%rbp),%eax
add    $0x4000,%eax
mov    %eax,-0x30(%rbp)
jmp    1c49 <helper_double_22_recursive+0xb39>
jmp    26d0 <helper_double_22_recursive+0x15c0>
cmpl   $0x11,-0xc(%rbp)
jne    2205 <helper_double_22_recursive+0x10f5>
mov    -0x8(%rbp),%rdi
mov    $0xe,%esi
call   1030 <helper_double_22_recursive@plt>
mov    -0x8(%rbp),%rdi
add    $0x20000,%rdi
mov    $0xe,%esi
call   1030 <helper_double_22_recursive@plt>
mov    -0x8(%rbp),%rdi
add    $0x40000,%rdi
mov    $0xe,%esi
call   1030 <helper_double_22_recursive@plt>
mov    -0x8(%rbp),%rdi
add    $0x60000,%rdi
mov    $0xe,%esi
call   1030 <helper_double_22_recursive@plt>
mov    -0x8(%rbp),%rdi
add    $0x80000,%rdi
mov    $0xe,%esi
call   1030 <helper_double_22_recursive@plt>
mov    -0x8(%rbp),%rdi
add    $0xa0000,%rdi
mov    $0xe,%esi
call   1030 <helper_double_22_recursive@plt>
mov    -0x8(%rbp),%rdi
add    $0xc0000,%rdi
mov    $0xe,%esi
call   1030 <helper_double_22_recursive@plt>
mov    -0x8(%rbp),%rdi
add    $0xe0000,%rdi
mov    $0xe,%esi
call   1030 <helper_double_22_recursive@plt>
movl   $0x0,-0x38(%rbp)
cmpl   $0x20000,-0x38(%rbp)
jge    2200 <helper_double_22_recursive+0x10f0>
movl   $0x0,-0x3c(%rbp)
cmpl   $0x4000,-0x3c(%rbp)
jge    21eb <helper_double_22_recursive+0x10db>
mov    -0x8(%rbp),%rax
movslq -0x38(%rbp),%rcx
shl    $0x3,%rcx
add    %rcx,%rax
movslq -0x3c(%rbp),%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    -0x8(%rbp),%rcx
movslq -0x38(%rbp),%rdx
shl    $0x3,%rdx
add    %rdx,%rcx
movslq -0x3c(%rbp),%rdx
shl    $0x3,%rdx
add    %rdx,%rcx
add    $0x20000,%rcx
mov    -0x8(%rbp),%rdx
movslq -0x38(%rbp),%rsi
shl    $0x3,%rsi
add    %rsi,%rdx
movslq -0x3c(%rbp),%rsi
shl    $0x3,%rsi
add    %rsi,%rdx
add    $0x40000,%rdx
mov    -0x8(%rbp),%rsi
movslq -0x38(%rbp),%rdi
shl    $0x3,%rdi
add    %rdi,%rsi
movslq -0x3c(%rbp),%rdi
shl    $0x3,%rdi
add    %rdi,%rsi
add    $0x60000,%rsi
mov    -0x8(%rbp),%rdi
movslq -0x38(%rbp),%r8
shl    $0x3,%r8
add    %r8,%rdi
movslq -0x3c(%rbp),%r8
shl    $0x3,%r8
add    %r8,%rdi
add    $0x80000,%rdi
mov    -0x8(%rbp),%r8
movslq -0x38(%rbp),%r9
shl    $0x3,%r9
add    %r9,%r8
movslq -0x3c(%rbp),%r9
shl    $0x3,%r9
add    %r9,%r8
add    $0xa0000,%r8
mov    -0x8(%rbp),%r9
movslq -0x38(%rbp),%r10
shl    $0x3,%r10
add    %r10,%r9
movslq -0x3c(%rbp),%r10
shl    $0x3,%r10
add    %r10,%r9
add    $0xc0000,%r9
mov    -0x8(%rbp),%r10
movslq -0x38(%rbp),%r11
shl    $0x3,%r11
add    %r11,%r10
movslq -0x3c(%rbp),%r11
shl    $0x3,%r11
add    %r11,%r10
add    $0xe0000,%r10
movupd (%rax),%xmm0
movupd (%rcx),%xmm1
movupd (%rdx),%xmm2
movupd (%rsi),%xmm3
movupd (%rdi),%xmm4
movupd (%r8),%xmm5
movupd (%r9),%xmm6
movupd (%r10),%xmm7
movapd %xmm0,%xmm8
movapd %xmm0,%xmm9
addpd  %xmm1,%xmm8
subpd  %xmm1,%xmm9
movapd %xmm2,%xmm10
movapd %xmm2,%xmm11
addpd  %xmm3,%xmm10
subpd  %xmm3,%xmm11
movapd %xmm4,%xmm12
movapd %xmm4,%xmm13
addpd  %xmm5,%xmm12
subpd  %xmm5,%xmm13
movapd %xmm6,%xmm14
movapd %xmm6,%xmm15
addpd  %xmm7,%xmm14
subpd  %xmm7,%xmm15
movapd %xmm8,%xmm0
movapd %xmm8,%xmm2
addpd  %xmm10,%xmm0
subpd  %xmm10,%xmm2
movapd %xmm9,%xmm1
movapd %xmm9,%xmm3
addpd  %xmm11,%xmm1
subpd  %xmm11,%xmm3
movapd %xmm12,%xmm4
movapd %xmm12,%xmm6
addpd  %xmm14,%xmm4
subpd  %xmm14,%xmm6
movapd %xmm13,%xmm5
movapd %xmm13,%xmm7
addpd  %xmm15,%xmm5
subpd  %xmm15,%xmm7
movapd %xmm0,%xmm8
movapd %xmm0,%xmm12
addpd  %xmm4,%xmm8
subpd  %xmm4,%xmm12
movapd %xmm1,%xmm9
movapd %xmm1,%xmm13
addpd  %xmm5,%xmm9
subpd  %xmm5,%xmm13
movapd %xmm2,%xmm10
movapd %xmm2,%xmm14
addpd  %xmm6,%xmm10
subpd  %xmm6,%xmm14
movapd %xmm3,%xmm11
movapd %xmm3,%xmm15
addpd  %xmm7,%xmm11
subpd  %xmm7,%xmm15
movupd %xmm8,(%rax)
movupd %xmm9,(%rcx)
movupd %xmm10,(%rdx)
movupd %xmm11,(%rsi)
movupd %xmm12,(%rdi)
movupd %xmm13,(%r8)
movupd %xmm14,(%r9)
movupd %xmm15,(%r10)
mov    -0x3c(%rbp),%eax
add    $0x2,%eax
mov    %eax,-0x3c(%rbp)
jmp    1f94 <helper_double_22_recursive+0xe84>
jmp    21f0 <helper_double_22_recursive+0x10e0>
mov    -0x38(%rbp),%eax
add    $0x20000,%eax
mov    %eax,-0x38(%rbp)
jmp    1f80 <helper_double_22_recursive+0xe70>
jmp    26d0 <helper_double_22_recursive+0x15c0>
cmpl   $0x14,-0xc(%rbp)
jne    253c <helper_double_22_recursive+0x142c>
mov    -0x8(%rbp),%rdi
mov    $0x11,%esi
call   1030 <helper_double_22_recursive@plt>
mov    -0x8(%rbp),%rdi
add    $0x100000,%rdi
mov    $0x11,%esi
call   1030 <helper_double_22_recursive@plt>
mov    -0x8(%rbp),%rdi
add    $0x200000,%rdi
mov    $0x11,%esi
call   1030 <helper_double_22_recursive@plt>
mov    -0x8(%rbp),%rdi
add    $0x300000,%rdi
mov    $0x11,%esi
call   1030 <helper_double_22_recursive@plt>
mov    -0x8(%rbp),%rdi
add    $0x400000,%rdi
mov    $0x11,%esi
call   1030 <helper_double_22_recursive@plt>
mov    -0x8(%rbp),%rdi
add    $0x500000,%rdi
mov    $0x11,%esi
call   1030 <helper_double_22_recursive@plt>
mov    -0x8(%rbp),%rdi
add    $0x600000,%rdi
mov    $0x11,%esi
call   1030 <helper_double_22_recursive@plt>
mov    -0x8(%rbp),%rdi
add    $0x700000,%rdi
mov    $0x11,%esi
call   1030 <helper_double_22_recursive@plt>
movl   $0x0,-0x40(%rbp)
cmpl   $0x100000,-0x40(%rbp)
jge    2537 <helper_double_22_recursive+0x1427>
movl   $0x0,-0x44(%rbp)
cmpl   $0x20000,-0x44(%rbp)
jge    2522 <helper_double_22_recursive+0x1412>
mov    -0x8(%rbp),%rax
movslq -0x40(%rbp),%rcx
shl    $0x3,%rcx
add    %rcx,%rax
movslq -0x44(%rbp),%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    -0x8(%rbp),%rcx
movslq -0x40(%rbp),%rdx
shl    $0x3,%rdx
add    %rdx,%rcx
movslq -0x44(%rbp),%rdx
shl    $0x3,%rdx
add    %rdx,%rcx
add    $0x100000,%rcx
mov    -0x8(%rbp),%rdx
movslq -0x40(%rbp),%rsi
shl    $0x3,%rsi
add    %rsi,%rdx
movslq -0x44(%rbp),%rsi
shl    $0x3,%rsi
add    %rsi,%rdx
add    $0x200000,%rdx
mov    -0x8(%rbp),%rsi
movslq -0x40(%rbp),%rdi
shl    $0x3,%rdi
add    %rdi,%rsi
movslq -0x44(%rbp),%rdi
shl    $0x3,%rdi
add    %rdi,%rsi
add    $0x300000,%rsi
mov    -0x8(%rbp),%rdi
movslq -0x40(%rbp),%r8
shl    $0x3,%r8
add    %r8,%rdi
movslq -0x44(%rbp),%r8
shl    $0x3,%r8
add    %r8,%rdi
add    $0x400000,%rdi
mov    -0x8(%rbp),%r8
movslq -0x40(%rbp),%r9
shl    $0x3,%r9
add    %r9,%r8
movslq -0x44(%rbp),%r9
shl    $0x3,%r9
add    %r9,%r8
add    $0x500000,%r8
mov    -0x8(%rbp),%r9
movslq -0x40(%rbp),%r10
shl    $0x3,%r10
add    %r10,%r9
movslq -0x44(%rbp),%r10
shl    $0x3,%r10
add    %r10,%r9
add    $0x600000,%r9
mov    -0x8(%rbp),%r10
movslq -0x40(%rbp),%r11
shl    $0x3,%r11
add    %r11,%r10
movslq -0x44(%rbp),%r11
shl    $0x3,%r11
add    %r11,%r10
add    $0x700000,%r10
movupd (%rax),%xmm0
movupd (%rcx),%xmm1
movupd (%rdx),%xmm2
movupd (%rsi),%xmm3
movupd (%rdi),%xmm4
movupd (%r8),%xmm5
movupd (%r9),%xmm6
movupd (%r10),%xmm7
movapd %xmm0,%xmm8
movapd %xmm0,%xmm9
addpd  %xmm1,%xmm8
subpd  %xmm1,%xmm9
movapd %xmm2,%xmm10
movapd %xmm2,%xmm11
addpd  %xmm3,%xmm10
subpd  %xmm3,%xmm11
movapd %xmm4,%xmm12
movapd %xmm4,%xmm13
addpd  %xmm5,%xmm12
subpd  %xmm5,%xmm13
movapd %xmm6,%xmm14
movapd %xmm6,%xmm15
addpd  %xmm7,%xmm14
subpd  %xmm7,%xmm15
movapd %xmm8,%xmm0
movapd %xmm8,%xmm2
addpd  %xmm10,%xmm0
subpd  %xmm10,%xmm2
movapd %xmm9,%xmm1
movapd %xmm9,%xmm3
addpd  %xmm11,%xmm1
subpd  %xmm11,%xmm3
movapd %xmm12,%xmm4
movapd %xmm12,%xmm6
addpd  %xmm14,%xmm4
subpd  %xmm14,%xmm6
movapd %xmm13,%xmm5
movapd %xmm13,%xmm7
addpd  %xmm15,%xmm5
subpd  %xmm15,%xmm7
movapd %xmm0,%xmm8
movapd %xmm0,%xmm12
addpd  %xmm4,%xmm8
subpd  %xmm4,%xmm12
movapd %xmm1,%xmm9
movapd %xmm1,%xmm13
addpd  %xmm5,%xmm9
subpd  %xmm5,%xmm13
movapd %xmm2,%xmm10
movapd %xmm2,%xmm14
addpd  %xmm6,%xmm10
subpd  %xmm6,%xmm14
movapd %xmm3,%xmm11
movapd %xmm3,%xmm15
addpd  %xmm7,%xmm11
subpd  %xmm7,%xmm15
movupd %xmm8,(%rax)
movupd %xmm9,(%rcx)
movupd %xmm10,(%rdx)
movupd %xmm11,(%rsi)
movupd %xmm12,(%rdi)
movupd %xmm13,(%r8)
movupd %xmm14,(%r9)
movupd %xmm15,(%r10)
mov    -0x44(%rbp),%eax
add    $0x2,%eax
mov    %eax,-0x44(%rbp)
jmp    22cb <helper_double_22_recursive+0x11bb>
jmp    2527 <helper_double_22_recursive+0x1417>
mov    -0x40(%rbp),%eax
add    $0x100000,%eax
mov    %eax,-0x40(%rbp)
jmp    22b7 <helper_double_22_recursive+0x11a7>
jmp    26d0 <helper_double_22_recursive+0x15c0>
cmpl   $0x16,-0xc(%rbp)
jne    26d0 <helper_double_22_recursive+0x15c0>
mov    -0x8(%rbp),%rdi
mov    $0x14,%esi
call   1030 <helper_double_22_recursive@plt>
mov    -0x8(%rbp),%rdi
add    $0x800000,%rdi
mov    $0x14,%esi
call   1030 <helper_double_22_recursive@plt>
mov    -0x8(%rbp),%rdi
add    $0x1000000,%rdi
mov    $0x14,%esi
call   1030 <helper_double_22_recursive@plt>
mov    -0x8(%rbp),%rdi
add    $0x1800000,%rdi
mov    $0x14,%esi
call   1030 <helper_double_22_recursive@plt>
movl   $0x0,-0x48(%rbp)
cmpl   $0x400000,-0x48(%rbp)
jge    26cb <helper_double_22_recursive+0x15bb>
movl   $0x0,-0x4c(%rbp)
cmpl   $0x100000,-0x4c(%rbp)
jge    26b6 <helper_double_22_recursive+0x15a6>
mov    -0x8(%rbp),%rax
movslq -0x48(%rbp),%rcx
shl    $0x3,%rcx
add    %rcx,%rax
movslq -0x4c(%rbp),%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    -0x8(%rbp),%rcx
movslq -0x48(%rbp),%rdx
shl    $0x3,%rdx
add    %rdx,%rcx
movslq -0x4c(%rbp),%rdx
shl    $0x3,%rdx
add    %rdx,%rcx
add    $0x800000,%rcx
mov    -0x8(%rbp),%rdx
movslq -0x48(%rbp),%rsi
shl    $0x3,%rsi
add    %rsi,%rdx
movslq -0x4c(%rbp),%rsi
shl    $0x3,%rsi
add    %rsi,%rdx
add    $0x1000000,%rdx
mov    -0x8(%rbp),%rsi
movslq -0x48(%rbp),%rdi
shl    $0x3,%rdi
add    %rdi,%rsi
movslq -0x4c(%rbp),%rdi
shl    $0x3,%rdi
add    %rdi,%rsi
add    $0x1800000,%rsi
movupd (%rax),%xmm0
movupd (%rcx),%xmm1
movupd (%rdx),%xmm2
movupd (%rsi),%xmm3
movapd %xmm0,%xmm8
movapd %xmm0,%xmm9
addpd  %xmm1,%xmm8
subpd  %xmm1,%xmm9
movapd %xmm2,%xmm10
movapd %xmm2,%xmm11
addpd  %xmm3,%xmm10
subpd  %xmm3,%xmm11
movapd %xmm8,%xmm0
movapd %xmm8,%xmm2
addpd  %xmm10,%xmm0
subpd  %xmm10,%xmm2
movapd %xmm9,%xmm1
movapd %xmm9,%xmm3
addpd  %xmm11,%xmm1
subpd  %xmm11,%xmm3
movupd %xmm0,(%rax)
movupd %xmm1,(%rcx)
movupd %xmm2,(%rdx)
movupd %xmm3,(%rsi)
mov    -0x4c(%rbp),%eax
add    $0x2,%eax
mov    %eax,-0x4c(%rbp)
jmp    25ae <helper_double_22_recursive+0x149e>
jmp    26bb <helper_double_22_recursive+0x15ab>
mov    -0x48(%rbp),%eax
add    $0x400000,%eax
mov    %eax,-0x48(%rbp)
jmp    259a <helper_double_22_recursive+0x148a>
jmp    26d0 <helper_double_22_recursive+0x15c0>
add    $0x50,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<helper_double_22_recursive>:
push   %rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
push   %rax
add    $0xfffffffe,%esi
cmp    $0x14,%esi
ja     2349 <helper_double_22_recursive+0x1239>
mov    %rdi,%rbx
lea    0x1ecf(%rip),%rax
movslq (%rax,%rsi,4),%rcx
add    %rax,%rcx
jmp    *%rcx
lea    0x10(%rbx),%rax
movupd (%rbx),%xmm0
movupd (%rax),%xmm1
movapd %xmm0,%xmm8
haddpd %xmm8,%xmm8
movapd %xmm0,%xmm9
hsubpd %xmm9,%xmm9
blendpd $0x1,%xmm8,%xmm9
movapd %xmm9,%xmm0
movapd %xmm1,%xmm8
haddpd %xmm8,%xmm8
movapd %xmm1,%xmm9
hsubpd %xmm9,%xmm9
blendpd $0x1,%xmm8,%xmm9
movapd %xmm9,%xmm1
movapd %xmm0,%xmm8
movapd %xmm0,%xmm9
addpd  %xmm1,%xmm8
subpd  %xmm1,%xmm9
movupd %xmm8,(%rbx)
movupd %xmm9,(%rax)
jmp    2349 <helper_double_22_recursive+0x1239>
lea    0x10(%rbx),%rax
mov    %rax,(%rsp)
movupd (%rbx),%xmm0
movupd (%rax),%xmm1
movapd %xmm0,%xmm8
haddpd %xmm8,%xmm8
movapd %xmm0,%xmm9
hsubpd %xmm9,%xmm9
blendpd $0x1,%xmm8,%xmm9
movapd %xmm9,%xmm0
movapd %xmm1,%xmm8
haddpd %xmm8,%xmm8
movapd %xmm1,%xmm9
hsubpd %xmm9,%xmm9
blendpd $0x1,%xmm8,%xmm9
movapd %xmm9,%xmm1
movapd %xmm0,%xmm8
movapd %xmm0,%xmm9
addpd  %xmm1,%xmm8
subpd  %xmm1,%xmm9
movupd %xmm8,(%rbx)
movupd %xmm9,(%rax)
lea    0x20(%rbx),%r9
lea    0x30(%rbx),%r10
movupd (%r9),%xmm0
movupd (%r10),%xmm1
movapd %xmm0,%xmm8
haddpd %xmm8,%xmm8
movapd %xmm0,%xmm9
hsubpd %xmm9,%xmm9
blendpd $0x1,%xmm8,%xmm9
movapd %xmm9,%xmm0
movapd %xmm1,%xmm8
haddpd %xmm8,%xmm8
movapd %xmm1,%xmm9
hsubpd %xmm9,%xmm9
blendpd $0x1,%xmm8,%xmm9
movapd %xmm9,%xmm1
movapd %xmm0,%xmm8
movapd %xmm0,%xmm9
addpd  %xmm1,%xmm8
subpd  %xmm1,%xmm9
movupd %xmm8,(%r9)
movupd %xmm9,(%r10)
lea    0x40(%rbx),%r11
lea    0x50(%rbx),%r14
movupd (%r11),%xmm0
movupd (%r14),%xmm1
movapd %xmm0,%xmm8
haddpd %xmm8,%xmm8
movapd %xmm0,%xmm9
hsubpd %xmm9,%xmm9
blendpd $0x1,%xmm8,%xmm9
movapd %xmm9,%xmm0
movapd %xmm1,%xmm8
haddpd %xmm8,%xmm8
movapd %xmm1,%xmm9
hsubpd %xmm9,%xmm9
blendpd $0x1,%xmm8,%xmm9
movapd %xmm9,%xmm1
movapd %xmm0,%xmm8
movapd %xmm0,%xmm9
addpd  %xmm1,%xmm8
subpd  %xmm1,%xmm9
movupd %xmm8,(%r11)
movupd %xmm9,(%r14)
lea    0x60(%rbx),%r15
lea    0x70(%rbx),%r12
movupd (%r15),%xmm0
movupd (%r12),%xmm1
movapd %xmm0,%xmm8
haddpd %xmm8,%xmm8
movapd %xmm0,%xmm9
hsubpd %xmm9,%xmm9
blendpd $0x1,%xmm8,%xmm9
movapd %xmm9,%xmm0
movapd %xmm1,%xmm8
haddpd %xmm8,%xmm8
movapd %xmm1,%xmm9
hsubpd %xmm9,%xmm9
blendpd $0x1,%xmm8,%xmm9
movapd %xmm9,%xmm1
movapd %xmm0,%xmm8
movapd %xmm0,%xmm9
addpd  %xmm1,%xmm8
subpd  %xmm1,%xmm9
movupd %xmm8,(%r15)
movupd %xmm9,(%r12)
lea    0x80(%rbx),%r13
lea    0x90(%rbx),%r8
movupd 0x0(%r13),%xmm0
movupd (%r8),%xmm1
movapd %xmm0,%xmm8
haddpd %xmm8,%xmm8
movapd %xmm0,%xmm9
hsubpd %xmm9,%xmm9
blendpd $0x1,%xmm8,%xmm9
movapd %xmm9,%xmm0
movapd %xmm1,%xmm8
haddpd %xmm8,%xmm8
movapd %xmm1,%xmm9
hsubpd %xmm9,%xmm9
blendpd $0x1,%xmm8,%xmm9
movapd %xmm9,%xmm1
movapd %xmm0,%xmm8
movapd %xmm0,%xmm9
addpd  %xmm1,%xmm8
subpd  %xmm1,%xmm9
movupd %xmm8,0x0(%r13)
movupd %xmm9,(%r8)
lea    0xa0(%rbx),%rdi
lea    0xb0(%rbx),%rsi
movupd (%rdi),%xmm0
movupd (%rsi),%xmm1
movapd %xmm0,%xmm8
haddpd %xmm8,%xmm8
movapd %xmm0,%xmm9
hsubpd %xmm9,%xmm9
blendpd $0x1,%xmm8,%xmm9
movapd %xmm9,%xmm0
movapd %xmm1,%xmm8
haddpd %xmm8,%xmm8
movapd %xmm1,%xmm9
hsubpd %xmm9,%xmm9
blendpd $0x1,%xmm8,%xmm9
movapd %xmm9,%xmm1
movapd %xmm0,%xmm8
movapd %xmm0,%xmm9
addpd  %xmm1,%xmm8
subpd  %xmm1,%xmm9
movupd %xmm8,(%rdi)
movupd %xmm9,(%rsi)
lea    0xc0(%rbx),%rcx
lea    0xd0(%rbx),%rdx
movupd (%rcx),%xmm0
movupd (%rdx),%xmm1
movapd %xmm0,%xmm8
haddpd %xmm8,%xmm8
movapd %xmm0,%xmm9
hsubpd %xmm9,%xmm9
blendpd $0x1,%xmm8,%xmm9
movapd %xmm9,%xmm0
movapd %xmm1,%xmm8
haddpd %xmm8,%xmm8
movapd %xmm1,%xmm9
hsubpd %xmm9,%xmm9
blendpd $0x1,%xmm8,%xmm9
movapd %xmm9,%xmm1
movapd %xmm0,%xmm8
movapd %xmm0,%xmm9
addpd  %xmm1,%xmm8
subpd  %xmm1,%xmm9
movupd %xmm8,(%rcx)
movupd %xmm9,(%rdx)
mov    %rbx,%rbp
add    $0xf0,%rbp
lea    0xe0(%rbx),%rax
movupd (%rax),%xmm0
movupd 0x0(%rbp),%xmm1
movapd %xmm0,%xmm8
haddpd %xmm8,%xmm8
movapd %xmm0,%xmm9
hsubpd %xmm9,%xmm9
blendpd $0x1,%xmm8,%xmm9
movapd %xmm9,%xmm0
movapd %xmm1,%xmm8
haddpd %xmm8,%xmm8
movapd %xmm1,%xmm9
hsubpd %xmm9,%xmm9
blendpd $0x1,%xmm8,%xmm9
movapd %xmm9,%xmm1
movapd %xmm0,%xmm8
movapd %xmm0,%xmm9
addpd  %xmm1,%xmm8
subpd  %xmm1,%xmm9
movupd %xmm8,(%rax)
movupd %xmm9,0x0(%rbp)
movupd (%rbx),%xmm0
movupd (%r9),%xmm1
movupd (%r11),%xmm2
movupd (%r15),%xmm3
movupd 0x0(%r13),%xmm4
movupd (%rdi),%xmm5
movupd (%rcx),%xmm6
movupd (%rax),%xmm7
movapd %xmm0,%xmm8
movapd %xmm0,%xmm9
addpd  %xmm1,%xmm8
subpd  %xmm1,%xmm9
movapd %xmm2,%xmm10
movapd %xmm2,%xmm11
addpd  %xmm3,%xmm10
subpd  %xmm3,%xmm11
movapd %xmm4,%xmm12
movapd %xmm4,%xmm13
addpd  %xmm5,%xmm12
subpd  %xmm5,%xmm13
movapd %xmm6,%xmm14
movapd %xmm6,%xmm15
addpd  %xmm7,%xmm14
subpd  %xmm7,%xmm15
movapd %xmm8,%xmm0
movapd %xmm8,%xmm2
addpd  %xmm10,%xmm0
subpd  %xmm10,%xmm2
movapd %xmm9,%xmm1
movapd %xmm9,%xmm3
addpd  %xmm11,%xmm1
subpd  %xmm11,%xmm3
movapd %xmm12,%xmm4
movapd %xmm12,%xmm6
addpd  %xmm14,%xmm4
subpd  %xmm14,%xmm6
movapd %xmm13,%xmm5
movapd %xmm13,%xmm7
addpd  %xmm15,%xmm5
subpd  %xmm15,%xmm7
movapd %xmm0,%xmm8
movapd %xmm0,%xmm12
addpd  %xmm4,%xmm8
subpd  %xmm4,%xmm12
movapd %xmm1,%xmm9
movapd %xmm1,%xmm13
addpd  %xmm5,%xmm9
subpd  %xmm5,%xmm13
movapd %xmm2,%xmm10
movapd %xmm2,%xmm14
addpd  %xmm6,%xmm10
subpd  %xmm6,%xmm14
movapd %xmm3,%xmm11
movapd %xmm3,%xmm15
addpd  %xmm7,%xmm11
subpd  %xmm7,%xmm15
movupd %xmm8,(%rbx)
movupd %xmm9,(%r9)
movupd %xmm10,(%r11)
movupd %xmm11,(%r15)
movupd %xmm12,0x0(%r13)
movupd %xmm13,(%rdi)
movupd %xmm14,(%rcx)
movupd %xmm15,(%rax)
mov    (%rsp),%rax
movupd (%rax),%xmm0
movupd (%r10),%xmm1
movupd (%r14),%xmm2
movupd (%r12),%xmm3
movupd (%r8),%xmm4
movupd (%rsi),%xmm5
movupd (%rdx),%xmm6
movupd 0x0(%rbp),%xmm7
movapd %xmm0,%xmm8
movapd %xmm0,%xmm9
addpd  %xmm1,%xmm8
subpd  %xmm1,%xmm9
movapd %xmm2,%xmm10
movapd %xmm2,%xmm11
addpd  %xmm3,%xmm10
subpd  %xmm3,%xmm11
movapd %xmm4,%xmm12
movapd %xmm4,%xmm13
addpd  %xmm5,%xmm12
subpd  %xmm5,%xmm13
movapd %xmm6,%xmm14
movapd %xmm6,%xmm15
addpd  %xmm7,%xmm14
subpd  %xmm7,%xmm15
movapd %xmm8,%xmm0
movapd %xmm8,%xmm2
addpd  %xmm10,%xmm0
subpd  %xmm10,%xmm2
movapd %xmm9,%xmm1
movapd %xmm9,%xmm3
addpd  %xmm11,%xmm1
subpd  %xmm11,%xmm3
movapd %xmm12,%xmm4
movapd %xmm12,%xmm6
addpd  %xmm14,%xmm4
subpd  %xmm14,%xmm6
movapd %xmm13,%xmm5
movapd %xmm13,%xmm7
addpd  %xmm15,%xmm5
subpd  %xmm15,%xmm7
movapd %xmm0,%xmm8
movapd %xmm0,%xmm12
addpd  %xmm4,%xmm8
subpd  %xmm4,%xmm12
movapd %xmm1,%xmm9
movapd %xmm1,%xmm13
addpd  %xmm5,%xmm9
subpd  %xmm5,%xmm13
movapd %xmm2,%xmm10
movapd %xmm2,%xmm14
addpd  %xmm6,%xmm10
subpd  %xmm6,%xmm14
movapd %xmm3,%xmm11
movapd %xmm3,%xmm15
addpd  %xmm7,%xmm11
subpd  %xmm7,%xmm15
movupd %xmm8,(%rax)
movupd %xmm9,(%r10)
movupd %xmm10,(%r14)
movupd %xmm11,(%r12)
movupd %xmm12,(%r8)
movupd %xmm13,(%rsi)
movupd %xmm14,(%rdx)
movupd %xmm15,0x0(%rbp)
jmp    2349 <helper_double_22_recursive+0x1239>
mov    %rbx,%rdi
mov    $0x5,%esi
call   1030 <helper_double_22_recursive@plt>
lea    0x100(%rbx),%rdi
mov    $0x5,%esi
call   1030 <helper_double_22_recursive@plt>
lea    0x200(%rbx),%rdi
mov    $0x5,%esi
call   1030 <helper_double_22_recursive@plt>
lea    0x300(%rbx),%rdi
mov    $0x5,%esi
call   1030 <helper_double_22_recursive@plt>
lea    0x400(%rbx),%rdi
mov    $0x5,%esi
call   1030 <helper_double_22_recursive@plt>
lea    0x500(%rbx),%rdi
mov    $0x5,%esi
call   1030 <helper_double_22_recursive@plt>
lea    0x600(%rbx),%rdi
mov    $0x5,%esi
call   1030 <helper_double_22_recursive@plt>
add    $0x700,%rbx
mov    %rbx,%rdi
mov    $0x5,%esi
call   1030 <helper_double_22_recursive@plt>
mov    $0xfffffffffffffffe,%rax
nopw   0x0(%rax,%rax,1)
lea    -0x700(%rbx),%r8
lea    -0x600(%rbx),%r9
lea    -0x500(%rbx),%rsi
lea    -0x400(%rbx),%rdi
lea    -0x300(%rbx),%rbp
lea    -0x200(%rbx),%rcx
lea    -0x100(%rbx),%rdx
movupd (%r8),%xmm0
movupd (%r9),%xmm1
movupd (%rsi),%xmm2
movupd (%rdi),%xmm3
movupd 0x0(%rbp),%xmm4
movupd (%rcx),%xmm5
movupd (%rdx),%xmm6
movupd (%rbx),%xmm7
movapd %xmm0,%xmm8
movapd %xmm0,%xmm9
addpd  %xmm1,%xmm8
subpd  %xmm1,%xmm9
movapd %xmm2,%xmm10
movapd %xmm2,%xmm11
addpd  %xmm3,%xmm10
subpd  %xmm3,%xmm11
movapd %xmm4,%xmm12
movapd %xmm4,%xmm13
addpd  %xmm5,%xmm12
subpd  %xmm5,%xmm13
movapd %xmm6,%xmm14
movapd %xmm6,%xmm15
addpd  %xmm7,%xmm14
subpd  %xmm7,%xmm15
movapd %xmm8,%xmm0
movapd %xmm8,%xmm2
addpd  %xmm10,%xmm0
subpd  %xmm10,%xmm2
movapd %xmm9,%xmm1
movapd %xmm9,%xmm3
addpd  %xmm11,%xmm1
subpd  %xmm11,%xmm3
movapd %xmm12,%xmm4
movapd %xmm12,%xmm6
addpd  %xmm14,%xmm4
subpd  %xmm14,%xmm6
movapd %xmm13,%xmm5
movapd %xmm13,%xmm7
addpd  %xmm15,%xmm5
subpd  %xmm15,%xmm7
movapd %xmm0,%xmm8
movapd %xmm0,%xmm12
addpd  %xmm4,%xmm8
subpd  %xmm4,%xmm12
movapd %xmm1,%xmm9
movapd %xmm1,%xmm13
addpd  %xmm5,%xmm9
subpd  %xmm5,%xmm13
movapd %xmm2,%xmm10
movapd %xmm2,%xmm14
addpd  %xmm6,%xmm10
subpd  %xmm6,%xmm14
movapd %xmm3,%xmm11
movapd %xmm3,%xmm15
addpd  %xmm7,%xmm11
subpd  %xmm7,%xmm15
movupd %xmm8,(%r8)
movupd %xmm9,(%r9)
movupd %xmm10,(%rsi)
movupd %xmm11,(%rdi)
movupd %xmm12,0x0(%rbp)
movupd %xmm13,(%rcx)
movupd %xmm14,(%rdx)
movupd %xmm15,(%rbx)
add    $0x2,%rax
add    $0x10,%rbx
cmp    $0x1e,%rax
jb     1860 <helper_double_22_recursive+0x750>
jmp    2349 <helper_double_22_recursive+0x1239>
mov    %rbx,%rdi
mov    $0x8,%esi
call   1030 <helper_double_22_recursive@plt>
lea    0x800(%rbx),%rdi
mov    $0x8,%esi
call   1030 <helper_double_22_recursive@plt>
lea    0x1000(%rbx),%rdi
mov    $0x8,%esi
call   1030 <helper_double_22_recursive@plt>
lea    0x1800(%rbx),%rdi
mov    $0x8,%esi
call   1030 <helper_double_22_recursive@plt>
lea    0x2000(%rbx),%rdi
mov    $0x8,%esi
call   1030 <helper_double_22_recursive@plt>
lea    0x2800(%rbx),%rdi
mov    $0x8,%esi
call   1030 <helper_double_22_recursive@plt>
lea    0x3000(%rbx),%rdi
mov    $0x8,%esi
call   1030 <helper_double_22_recursive@plt>
add    $0x3800,%rbx
mov    %rbx,%rdi
mov    $0x8,%esi
call   1030 <helper_double_22_recursive@plt>
mov    $0xfffffffffffffffe,%rax
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax)
lea    -0x3800(%rbx),%r8
lea    -0x3000(%rbx),%r9
lea    -0x2800(%rbx),%rsi
lea    -0x2000(%rbx),%rdi
lea    -0x1800(%rbx),%rbp
lea    -0x1000(%rbx),%rcx
lea    -0x800(%rbx),%rdx
movupd (%r8),%xmm0
movupd (%r9),%xmm1
movupd (%rsi),%xmm2
movupd (%rdi),%xmm3
movupd 0x0(%rbp),%xmm4
movupd (%rcx),%xmm5
movupd (%rdx),%xmm6
movupd (%rbx),%xmm7
movapd %xmm0,%xmm8
movapd %xmm0,%xmm9
addpd  %xmm1,%xmm8
subpd  %xmm1,%xmm9
movapd %xmm2,%xmm10
movapd %xmm2,%xmm11
addpd  %xmm3,%xmm10
subpd  %xmm3,%xmm11
movapd %xmm4,%xmm12
movapd %xmm4,%xmm13
addpd  %xmm5,%xmm12
subpd  %xmm5,%xmm13
movapd %xmm6,%xmm14
movapd %xmm6,%xmm15
addpd  %xmm7,%xmm14
subpd  %xmm7,%xmm15
movapd %xmm8,%xmm0
movapd %xmm8,%xmm2
addpd  %xmm10,%xmm0
subpd  %xmm10,%xmm2
movapd %xmm9,%xmm1
movapd %xmm9,%xmm3
addpd  %xmm11,%xmm1
subpd  %xmm11,%xmm3
movapd %xmm12,%xmm4
movapd %xmm12,%xmm6
addpd  %xmm14,%xmm4
subpd  %xmm14,%xmm6
movapd %xmm13,%xmm5
movapd %xmm13,%xmm7
addpd  %xmm15,%xmm5
subpd  %xmm15,%xmm7
movapd %xmm0,%xmm8
movapd %xmm0,%xmm12
addpd  %xmm4,%xmm8
subpd  %xmm4,%xmm12
movapd %xmm1,%xmm9
movapd %xmm1,%xmm13
addpd  %xmm5,%xmm9
subpd  %xmm5,%xmm13
movapd %xmm2,%xmm10
movapd %xmm2,%xmm14
addpd  %xmm6,%xmm10
subpd  %xmm6,%xmm14
movapd %xmm3,%xmm11
movapd %xmm3,%xmm15
addpd  %xmm7,%xmm11
subpd  %xmm7,%xmm15
movupd %xmm8,(%r8)
movupd %xmm9,(%r9)
movupd %xmm10,(%rsi)
movupd %xmm11,(%rdi)
movupd %xmm12,0x0(%rbp)
movupd %xmm13,(%rcx)
movupd %xmm14,(%rdx)
movupd %xmm15,(%rbx)
add    $0x2,%rax
add    $0x10,%rbx
cmp    $0xfe,%rax
jb     1a80 <helper_double_22_recursive+0x970>
jmp    2349 <helper_double_22_recursive+0x1239>
mov    %rbx,%rdi
mov    $0xb,%esi
call   1030 <helper_double_22_recursive@plt>
lea    0x4000(%rbx),%rdi
mov    $0xb,%esi
call   1030 <helper_double_22_recursive@plt>
lea    0x8000(%rbx),%rdi
mov    $0xb,%esi
call   1030 <helper_double_22_recursive@plt>
lea    0xc000(%rbx),%rdi
mov    $0xb,%esi
call   1030 <helper_double_22_recursive@plt>
lea    0x10000(%rbx),%rdi
mov    $0xb,%esi
call   1030 <helper_double_22_recursive@plt>
lea    0x14000(%rbx),%rdi
mov    $0xb,%esi
call   1030 <helper_double_22_recursive@plt>
lea    0x18000(%rbx),%rdi
mov    $0xb,%esi
call   1030 <helper_double_22_recursive@plt>
add    $0x1c000,%rbx
mov    %rbx,%rdi
mov    $0xb,%esi
call   1030 <helper_double_22_recursive@plt>
mov    $0xfffffffffffffffe,%rax
cs nopw 0x0(%rax,%rax,1)
xchg   %ax,%ax
lea    -0x1c000(%rbx),%r8
lea    -0x18000(%rbx),%r9
lea    -0x14000(%rbx),%rsi
lea    -0x10000(%rbx),%rdi
lea    -0xc000(%rbx),%rbp
lea    -0x8000(%rbx),%rcx
lea    -0x4000(%rbx),%rdx
movupd (%r8),%xmm0
movupd (%r9),%xmm1
movupd (%rsi),%xmm2
movupd (%rdi),%xmm3
movupd 0x0(%rbp),%xmm4
movupd (%rcx),%xmm5
movupd (%rdx),%xmm6
movupd (%rbx),%xmm7
movapd %xmm0,%xmm8
movapd %xmm0,%xmm9
addpd  %xmm1,%xmm8
subpd  %xmm1,%xmm9
movapd %xmm2,%xmm10
movapd %xmm2,%xmm11
addpd  %xmm3,%xmm10
subpd  %xmm3,%xmm11
movapd %xmm4,%xmm12
movapd %xmm4,%xmm13
addpd  %xmm5,%xmm12
subpd  %xmm5,%xmm13
movapd %xmm6,%xmm14
movapd %xmm6,%xmm15
addpd  %xmm7,%xmm14
subpd  %xmm7,%xmm15
movapd %xmm8,%xmm0
movapd %xmm8,%xmm2
addpd  %xmm10,%xmm0
subpd  %xmm10,%xmm2
movapd %xmm9,%xmm1
movapd %xmm9,%xmm3
addpd  %xmm11,%xmm1
subpd  %xmm11,%xmm3
movapd %xmm12,%xmm4
movapd %xmm12,%xmm6
addpd  %xmm14,%xmm4
subpd  %xmm14,%xmm6
movapd %xmm13,%xmm5
movapd %xmm13,%xmm7
addpd  %xmm15,%xmm5
subpd  %xmm15,%xmm7
movapd %xmm0,%xmm8
movapd %xmm0,%xmm12
addpd  %xmm4,%xmm8
subpd  %xmm4,%xmm12
movapd %xmm1,%xmm9
movapd %xmm1,%xmm13
addpd  %xmm5,%xmm9
subpd  %xmm5,%xmm13
movapd %xmm2,%xmm10
movapd %xmm2,%xmm14
addpd  %xmm6,%xmm10
subpd  %xmm6,%xmm14
movapd %xmm3,%xmm11
movapd %xmm3,%xmm15
addpd  %xmm7,%xmm11
subpd  %xmm7,%xmm15
movupd %xmm8,(%r8)
movupd %xmm9,(%r9)
movupd %xmm10,(%rsi)
movupd %xmm11,(%rdi)
movupd %xmm12,0x0(%rbp)
movupd %xmm13,(%rcx)
movupd %xmm14,(%rdx)
movupd %xmm15,(%rbx)
add    $0x2,%rax
add    $0x10,%rbx
cmp    $0x7fe,%rax
jb     1ca0 <helper_double_22_recursive+0xb90>
jmp    2349 <helper_double_22_recursive+0x1239>
mov    %rbx,%rdi
mov    $0xe,%esi
call   1030 <helper_double_22_recursive@plt>
lea    0x20000(%rbx),%rdi
mov    $0xe,%esi
call   1030 <helper_double_22_recursive@plt>
lea    0x40000(%rbx),%rdi
mov    $0xe,%esi
call   1030 <helper_double_22_recursive@plt>
lea    0x60000(%rbx),%rdi
mov    $0xe,%esi
call   1030 <helper_double_22_recursive@plt>
lea    0x80000(%rbx),%rdi
mov    $0xe,%esi
call   1030 <helper_double_22_recursive@plt>
lea    0xa0000(%rbx),%rdi
mov    $0xe,%esi
call   1030 <helper_double_22_recursive@plt>
lea    0xc0000(%rbx),%rdi
mov    $0xe,%esi
call   1030 <helper_double_22_recursive@plt>
add    $0xe0000,%rbx
mov    %rbx,%rdi
mov    $0xe,%esi
call   1030 <helper_double_22_recursive@plt>
mov    $0xfffffffffffffffe,%rax
cs nopw 0x0(%rax,%rax,1)
xchg   %ax,%ax
lea    -0xe0000(%rbx),%r8
lea    -0xc0000(%rbx),%r9
lea    -0xa0000(%rbx),%rsi
lea    -0x80000(%rbx),%rdi
lea    -0x60000(%rbx),%rbp
lea    -0x40000(%rbx),%rcx
lea    -0x20000(%rbx),%rdx
movupd (%r8),%xmm0
movupd (%r9),%xmm1
movupd (%rsi),%xmm2
movupd (%rdi),%xmm3
movupd 0x0(%rbp),%xmm4
movupd (%rcx),%xmm5
movupd (%rdx),%xmm6
movupd (%rbx),%xmm7
movapd %xmm0,%xmm8
movapd %xmm0,%xmm9
addpd  %xmm1,%xmm8
subpd  %xmm1,%xmm9
movapd %xmm2,%xmm10
movapd %xmm2,%xmm11
addpd  %xmm3,%xmm10
subpd  %xmm3,%xmm11
movapd %xmm4,%xmm12
movapd %xmm4,%xmm13
addpd  %xmm5,%xmm12
subpd  %xmm5,%xmm13
movapd %xmm6,%xmm14
movapd %xmm6,%xmm15
addpd  %xmm7,%xmm14
subpd  %xmm7,%xmm15
movapd %xmm8,%xmm0
movapd %xmm8,%xmm2
addpd  %xmm10,%xmm0
subpd  %xmm10,%xmm2
movapd %xmm9,%xmm1
movapd %xmm9,%xmm3
addpd  %xmm11,%xmm1
subpd  %xmm11,%xmm3
movapd %xmm12,%xmm4
movapd %xmm12,%xmm6
addpd  %xmm14,%xmm4
subpd  %xmm14,%xmm6
movapd %xmm13,%xmm5
movapd %xmm13,%xmm7
addpd  %xmm15,%xmm5
subpd  %xmm15,%xmm7
movapd %xmm0,%xmm8
movapd %xmm0,%xmm12
addpd  %xmm4,%xmm8
subpd  %xmm4,%xmm12
movapd %xmm1,%xmm9
movapd %xmm1,%xmm13
addpd  %xmm5,%xmm9
subpd  %xmm5,%xmm13
movapd %xmm2,%xmm10
movapd %xmm2,%xmm14
addpd  %xmm6,%xmm10
subpd  %xmm6,%xmm14
movapd %xmm3,%xmm11
movapd %xmm3,%xmm15
addpd  %xmm7,%xmm11
subpd  %xmm7,%xmm15
movupd %xmm8,(%r8)
movupd %xmm9,(%r9)
movupd %xmm10,(%rsi)
movupd %xmm11,(%rdi)
movupd %xmm12,0x0(%rbp)
movupd %xmm13,(%rcx)
movupd %xmm14,(%rdx)
movupd %xmm15,(%rbx)
add    $0x2,%rax
add    $0x10,%rbx
cmp    $0x3ffe,%rax
jb     1ec0 <helper_double_22_recursive+0xdb0>
jmp    2349 <helper_double_22_recursive+0x1239>
mov    %rbx,%rdi
mov    $0x11,%esi
call   1030 <helper_double_22_recursive@plt>
lea    0x100000(%rbx),%rdi
mov    $0x11,%esi
call   1030 <helper_double_22_recursive@plt>
lea    0x200000(%rbx),%rdi
mov    $0x11,%esi
call   1030 <helper_double_22_recursive@plt>
lea    0x300000(%rbx),%rdi
mov    $0x11,%esi
call   1030 <helper_double_22_recursive@plt>
lea    0x400000(%rbx),%rdi
mov    $0x11,%esi
call   1030 <helper_double_22_recursive@plt>
lea    0x500000(%rbx),%rdi
mov    $0x11,%esi
call   1030 <helper_double_22_recursive@plt>
lea    0x600000(%rbx),%rdi
mov    $0x11,%esi
call   1030 <helper_double_22_recursive@plt>
add    $0x700000,%rbx
mov    %rbx,%rdi
mov    $0x11,%esi
call   1030 <helper_double_22_recursive@plt>
mov    $0xfffffffffffffffe,%rax
cs nopw 0x0(%rax,%rax,1)
xchg   %ax,%ax
lea    -0x700000(%rbx),%r8
lea    -0x600000(%rbx),%r9
lea    -0x500000(%rbx),%rsi
lea    -0x400000(%rbx),%rdi
lea    -0x300000(%rbx),%rbp
lea    -0x200000(%rbx),%rcx
lea    -0x100000(%rbx),%rdx
movupd (%r8),%xmm0
movupd (%r9),%xmm1
movupd (%rsi),%xmm2
movupd (%rdi),%xmm3
movupd 0x0(%rbp),%xmm4
movupd (%rcx),%xmm5
movupd (%rdx),%xmm6
movupd (%rbx),%xmm7
movapd %xmm0,%xmm8
movapd %xmm0,%xmm9
addpd  %xmm1,%xmm8
subpd  %xmm1,%xmm9
movapd %xmm2,%xmm10
movapd %xmm2,%xmm11
addpd  %xmm3,%xmm10
subpd  %xmm3,%xmm11
movapd %xmm4,%xmm12
movapd %xmm4,%xmm13
addpd  %xmm5,%xmm12
subpd  %xmm5,%xmm13
movapd %xmm6,%xmm14
movapd %xmm6,%xmm15
addpd  %xmm7,%xmm14
subpd  %xmm7,%xmm15
movapd %xmm8,%xmm0
movapd %xmm8,%xmm2
addpd  %xmm10,%xmm0
subpd  %xmm10,%xmm2
movapd %xmm9,%xmm1
movapd %xmm9,%xmm3
addpd  %xmm11,%xmm1
subpd  %xmm11,%xmm3
movapd %xmm12,%xmm4
movapd %xmm12,%xmm6
addpd  %xmm14,%xmm4
subpd  %xmm14,%xmm6
movapd %xmm13,%xmm5
movapd %xmm13,%xmm7
addpd  %xmm15,%xmm5
subpd  %xmm15,%xmm7
movapd %xmm0,%xmm8
movapd %xmm0,%xmm12
addpd  %xmm4,%xmm8
subpd  %xmm4,%xmm12
movapd %xmm1,%xmm9
movapd %xmm1,%xmm13
addpd  %xmm5,%xmm9
subpd  %xmm5,%xmm13
movapd %xmm2,%xmm10
movapd %xmm2,%xmm14
addpd  %xmm6,%xmm10
subpd  %xmm6,%xmm14
movapd %xmm3,%xmm11
movapd %xmm3,%xmm15
addpd  %xmm7,%xmm11
subpd  %xmm7,%xmm15
movupd %xmm8,(%r8)
movupd %xmm9,(%r9)
movupd %xmm10,(%rsi)
movupd %xmm11,(%rdi)
movupd %xmm12,0x0(%rbp)
movupd %xmm13,(%rcx)
movupd %xmm14,(%rdx)
movupd %xmm15,(%rbx)
add    $0x2,%rax
add    $0x10,%rbx
cmp    $0x1fffe,%rax
jb     20e0 <helper_double_22_recursive+0xfd0>
jmp    2349 <helper_double_22_recursive+0x1239>
mov    %rbx,%rdi
mov    $0x14,%esi
call   1030 <helper_double_22_recursive@plt>
lea    0x800000(%rbx),%rdi
mov    $0x14,%esi
call   1030 <helper_double_22_recursive@plt>
lea    0x1000000(%rbx),%rdi
mov    $0x14,%esi
call   1030 <helper_double_22_recursive@plt>
lea    0x1800000(%rbx),%rdi
mov    $0x14,%esi
call   1030 <helper_double_22_recursive@plt>
mov    $0xfffffffffffffffe,%rax
nopl   (%rax)
lea    0x800000(%rbx),%rcx
lea    0x1000000(%rbx),%rdx
lea    0x1800000(%rbx),%rsi
movupd (%rbx),%xmm0
movupd (%rcx),%xmm1
movupd (%rdx),%xmm2
movupd (%rsi),%xmm3
movapd %xmm0,%xmm8
movapd %xmm0,%xmm9
addpd  %xmm1,%xmm8
subpd  %xmm1,%xmm9
movapd %xmm2,%xmm10
movapd %xmm2,%xmm11
addpd  %xmm3,%xmm10
subpd  %xmm3,%xmm11
movapd %xmm8,%xmm0
movapd %xmm8,%xmm2
addpd  %xmm10,%xmm0
subpd  %xmm10,%xmm2
movapd %xmm9,%xmm1
movapd %xmm9,%xmm3
addpd  %xmm11,%xmm1
subpd  %xmm11,%xmm3
movupd %xmm0,(%rbx)
movupd %xmm1,(%rcx)
movupd %xmm2,(%rdx)
movupd %xmm3,(%rsi)
add    $0x2,%rax
add    $0x10,%rbx
cmp    $0xffffe,%rax
jb     22b0 <helper_double_22_recursive+0x11a0>
add    $0x8,%rsp
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
ret

LLVM IR (-O0):
define void @helper_double_22_recursive(double* %0, i32 %1) {
%3 = alloca double*
%4 = alloca i32
%5 = alloca i32
%6 = alloca i32
%7 = alloca i32
%8 = alloca i32
%9 = alloca i32
%10 = alloca i32
%11 = alloca i32
%12 = alloca i32
%13 = alloca i32
%14 = alloca i32
%15 = alloca i32
%16 = alloca i32
%17 = alloca i32
%18 = alloca i32
%19 = alloca i32
%20 = alloca i32
store double* %0, double** %3
store i32 %1, i32* %4
%21 = load i32, i32* %4
%22 = icmp eq i32 %21, 2
br i1 %22, label %23, label %56
23: ; preds = %2
store i32 0, i32* %5
br label %24
24: ; preds = %52, %23
%25 = load i32, i32* %5
%26 = icmp slt i32 %25, 4
br i1 %26, label %27, label %55
27: ; preds = %24
store i32 0, i32* %6
br label %28
28: ; preds = %48, %27
%29 = load i32, i32* %6
%30 = icmp slt i32 %29, 2
br i1 %30, label %31, label %51
31: ; preds = %28
%32 = load double*, double** %3
%33 = load i32, i32* %5
%34 = sext i32 %33 to i64
%35 = getelementptr inbounds double, double* %32, i64 %34
%36 = load i32, i32* %6
%37 = sext i32 %36 to i64
%38 = getelementptr inbounds double, double* %35, i64 %37
%39 = getelementptr inbounds double, double* %38, i64 0
%40 = load double*, double** %3
%41 = load i32, i32* %5
%42 = sext i32 %41 to i64
%43 = getelementptr inbounds double, double* %40, i64 %42
%44 = load i32, i32* %6
%45 = sext i32 %44 to i64
%46 = getelementptr inbounds double, double* %43, i64 %45
%47 = getelementptr inbounds double, double* %46, i64 2
br label %48
48: ; preds = %31
%49 = load i32, i32* %6
%50 = add nsw i32 %49, 2
store i32 %50, i32* %6
br label %28
51: ; preds = %28
br label %52
52: ; preds = %51
%53 = load i32, i32* %5
%54 = add nsw i32 %53, 4
store i32 %54, i32* %5
br label %24
55: ; preds = %24
br label %716
56: ; preds = %2
%57 = load i32, i32* %4
%58 = icmp eq i32 %57, 5
br i1 %58, label %59, label %156
59: ; preds = %56
%60 = load double*, double** %3
%61 = getelementptr inbounds double, double* %60, i64 0
%62 = load double*, double** %3
%63 = getelementptr inbounds double, double* %62, i64 4
%64 = load double*, double** %3
%65 = getelementptr inbounds double, double* %64, i64 8
%66 = load double*, double** %3
%67 = getelementptr inbounds double, double* %66, i64 12
%68 = load double*, double** %3
%69 = getelementptr inbounds double, double* %68, i64 16
%70 = load double*, double** %3
%71 = getelementptr inbounds double, double* %70, i64 20
%72 = load double*, double** %3
%73 = getelementptr inbounds double, double* %72, i64 24
%74 = load double*, double** %3
%75 = getelementptr inbounds double, double* %74, i64 28
store i32 0, i32* %7
br label %76
76: ; preds = %152, %59
%77 = load i32, i32* %7
%78 = icmp slt i32 %77, 32
br i1 %78, label %79, label %155
79: ; preds = %76
store i32 0, i32* %8
br label %80
80: ; preds = %148, %79
%81 = load i32, i32* %8
%82 = icmp slt i32 %81, 4
br i1 %82, label %83, label %151
83: ; preds = %80
%84 = load double*, double** %3
%85 = load i32, i32* %7
%86 = sext i32 %85 to i64
%87 = getelementptr inbounds double, double* %84, i64 %86
%88 = load i32, i32* %8
%89 = sext i32 %88 to i64
%90 = getelementptr inbounds double, double* %87, i64 %89
%91 = getelementptr inbounds double, double* %90, i64 0
%92 = load double*, double** %3
%93 = load i32, i32* %7
%94 = sext i32 %93 to i64
%95 = getelementptr inbounds double, double* %92, i64 %94
%96 = load i32, i32* %8
%97 = sext i32 %96 to i64
%98 = getelementptr inbounds double, double* %95, i64 %97
%99 = getelementptr inbounds double, double* %98, i64 4
%100 = load double*, double** %3
%101 = load i32, i32* %7
%102 = sext i32 %101 to i64
%103 = getelementptr inbounds double, double* %100, i64 %102
%104 = load i32, i32* %8
%105 = sext i32 %104 to i64
%106 = getelementptr inbounds double, double* %103, i64 %105
%107 = getelementptr inbounds double, double* %106, i64 8
%108 = load double*, double** %3
%109 = load i32, i32* %7
%110 = sext i32 %109 to i64
%111 = getelementptr inbounds double, double* %108, i64 %110
%112 = load i32, i32* %8
%113 = sext i32 %112 to i64
%114 = getelementptr inbounds double, double* %111, i64 %113
%115 = getelementptr inbounds double, double* %114, i64 12
%116 = load double*, double** %3
%117 = load i32, i32* %7
%118 = sext i32 %117 to i64
%119 = getelementptr inbounds double, double* %116, i64 %118
%120 = load i32, i32* %8
%121 = sext i32 %120 to i64
%122 = getelementptr inbounds double, double* %119, i64 %121
%123 = getelementptr inbounds double, double* %122, i64 16
%124 = load double*, double** %3
%125 = load i32, i32* %7
%126 = sext i32 %125 to i64
%127 = getelementptr inbounds double, double* %124, i64 %126
%128 = load i32, i32* %8
%129 = sext i32 %128 to i64
%130 = getelementptr inbounds double, double* %127, i64 %129
%131 = getelementptr inbounds double, double* %130, i64 20
%132 = load double*, double** %3
%133 = load i32, i32* %7
%134 = sext i32 %133 to i64
%135 = getelementptr inbounds double, double* %132, i64 %134
%136 = load i32, i32* %8
%137 = sext i32 %136 to i64
%138 = getelementptr inbounds double, double* %135, i64 %137
%139 = getelementptr inbounds double, double* %138, i64 24
%140 = load double*, double** %3
%141 = load i32, i32* %7
%142 = sext i32 %141 to i64
%143 = getelementptr inbounds double, double* %140, i64 %142
%144 = load i32, i32* %8
%145 = sext i32 %144 to i64
%146 = getelementptr inbounds double, double* %143, i64 %145
%147 = getelementptr inbounds double, double* %146, i64 28
br label %148
148: ; preds = %83
%149 = load i32, i32* %8
%150 = add nsw i32 %149, 2
store i32 %150, i32* %8
br label %80
151: ; preds = %80
br label %152
152: ; preds = %151
%153 = load i32, i32* %7
%154 = add nsw i32 %153, 32
store i32 %154, i32* %7
br label %76
155: ; preds = %76
br label %716
156: ; preds = %56
%157 = load i32, i32* %4
%158 = icmp eq i32 %157, 8
br i1 %158, label %159, label %256
159: ; preds = %156
%160 = load double*, double** %3
%161 = getelementptr inbounds double, double* %160, i64 0
%162 = load double*, double** %3
%163 = getelementptr inbounds double, double* %162, i64 32
%164 = load double*, double** %3
%165 = getelementptr inbounds double, double* %164, i64 64
%166 = load double*, double** %3
%167 = getelementptr inbounds double, double* %166, i64 96
%168 = load double*, double** %3
%169 = getelementptr inbounds double, double* %168, i64 128
%170 = load double*, double** %3
%171 = getelementptr inbounds double, double* %170, i64 160
%172 = load double*, double** %3
%173 = getelementptr inbounds double, double* %172, i64 192
%174 = load double*, double** %3
%175 = getelementptr inbounds double, double* %174, i64 224
store i32 0, i32* %9
br label %176
176: ; preds = %252, %159
%177 = load i32, i32* %9
%178 = icmp slt i32 %177, 256
br i1 %178, label %179, label %255
179: ; preds = %176
store i32 0, i32* %10
br label %180
180: ; preds = %248, %179
%181 = load i32, i32* %10
%182 = icmp slt i32 %181, 32
br i1 %182, label %183, label %251
183: ; preds = %180
%184 = load double*, double** %3
%185 = load i32, i32* %9
%186 = sext i32 %185 to i64
%187 = getelementptr inbounds double, double* %184, i64 %186
%188 = load i32, i32* %10
%189 = sext i32 %188 to i64
%190 = getelementptr inbounds double, double* %187, i64 %189
%191 = getelementptr inbounds double, double* %190, i64 0
%192 = load double*, double** %3
%193 = load i32, i32* %9
%194 = sext i32 %193 to i64
%195 = getelementptr inbounds double, double* %192, i64 %194
%196 = load i32, i32* %10
%197 = sext i32 %196 to i64
%198 = getelementptr inbounds double, double* %195, i64 %197
%199 = getelementptr inbounds double, double* %198, i64 32
%200 = load double*, double** %3
%201 = load i32, i32* %9
%202 = sext i32 %201 to i64
%203 = getelementptr inbounds double, double* %200, i64 %202
%204 = load i32, i32* %10
%205 = sext i32 %204 to i64
%206 = getelementptr inbounds double, double* %203, i64 %205
%207 = getelementptr inbounds double, double* %206, i64 64
%208 = load double*, double** %3
%209 = load i32, i32* %9
%210 = sext i32 %209 to i64
%211 = getelementptr inbounds double, double* %208, i64 %210
%212 = load i32, i32* %10
%213 = sext i32 %212 to i64
%214 = getelementptr inbounds double, double* %211, i64 %213
%215 = getelementptr inbounds double, double* %214, i64 96
%216 = load double*, double** %3
%217 = load i32, i32* %9
%218 = sext i32 %217 to i64
%219 = getelementptr inbounds double, double* %216, i64 %218
%220 = load i32, i32* %10
%221 = sext i32 %220 to i64
%222 = getelementptr inbounds double, double* %219, i64 %221
%223 = getelementptr inbounds double, double* %222, i64 128
%224 = load double*, double** %3
%225 = load i32, i32* %9
%226 = sext i32 %225 to i64
%227 = getelementptr inbounds double, double* %224, i64 %226
%228 = load i32, i32* %10
%229 = sext i32 %228 to i64
%230 = getelementptr inbounds double, double* %227, i64 %229
%231 = getelementptr inbounds double, double* %230, i64 160
%232 = load double*, double** %3
%233 = load i32, i32* %9
%234 = sext i32 %233 to i64
%235 = getelementptr inbounds double, double* %232, i64 %234
%236 = load i32, i32* %10
%237 = sext i32 %236 to i64
%238 = getelementptr inbounds double, double* %235, i64 %237
%239 = getelementptr inbounds double, double* %238, i64 192
%240 = load double*, double** %3
%241 = load i32, i32* %9
%242 = sext i32 %241 to i64
%243 = getelementptr inbounds double, double* %240, i64 %242
%244 = load i32, i32* %10
%245 = sext i32 %244 to i64
%246 = getelementptr inbounds double, double* %243, i64 %245
%247 = getelementptr inbounds double, double* %246, i64 224
br label %248
248: ; preds = %183
%249 = load i32, i32* %10
%250 = add nsw i32 %249, 2
store i32 %250, i32* %10
br label %180
251: ; preds = %180
br label %252
252: ; preds = %251
%253 = load i32, i32* %9
%254 = add nsw i32 %253, 256
store i32 %254, i32* %9
br label %176
255: ; preds = %176
br label %716
256: ; preds = %156
%257 = load i32, i32* %4
%258 = icmp eq i32 %257, 11
br i1 %258, label %259, label %356
259: ; preds = %256
%260 = load double*, double** %3
%261 = getelementptr inbounds double, double* %260, i64 0
%262 = load double*, double** %3
%263 = getelementptr inbounds double, double* %262, i64 256
%264 = load double*, double** %3
%265 = getelementptr inbounds double, double* %264, i64 512
%266 = load double*, double** %3
%267 = getelementptr inbounds double, double* %266, i64 768
%268 = load double*, double** %3
%269 = getelementptr inbounds double, double* %268, i64 1024
%270 = load double*, double** %3
%271 = getelementptr inbounds double, double* %270, i64 1280
%272 = load double*, double** %3
%273 = getelementptr inbounds double, double* %272, i64 1536
%274 = load double*, double** %3
%275 = getelementptr inbounds double, double* %274, i64 1792
store i32 0, i32* %11
br label %276
276: ; preds = %352, %259
%277 = load i32, i32* %11
%278 = icmp slt i32 %277, 2048
br i1 %278, label %279, label %355
279: ; preds = %276
store i32 0, i32* %12
br label %280
280: ; preds = %348, %279
%281 = load i32, i32* %12
%282 = icmp slt i32 %281, 256
br i1 %282, label %283, label %351
283: ; preds = %280
%284 = load double*, double** %3
%285 = load i32, i32* %11
%286 = sext i32 %285 to i64
%287 = getelementptr inbounds double, double* %284, i64 %286
%288 = load i32, i32* %12
%289 = sext i32 %288 to i64
%290 = getelementptr inbounds double, double* %287, i64 %289
%291 = getelementptr inbounds double, double* %290, i64 0
%292 = load double*, double** %3
%293 = load i32, i32* %11
%294 = sext i32 %293 to i64
%295 = getelementptr inbounds double, double* %292, i64 %294
%296 = load i32, i32* %12
%297 = sext i32 %296 to i64
%298 = getelementptr inbounds double, double* %295, i64 %297
%299 = getelementptr inbounds double, double* %298, i64 256
%300 = load double*, double** %3
%301 = load i32, i32* %11
%302 = sext i32 %301 to i64
%303 = getelementptr inbounds double, double* %300, i64 %302
%304 = load i32, i32* %12
%305 = sext i32 %304 to i64
%306 = getelementptr inbounds double, double* %303, i64 %305
%307 = getelementptr inbounds double, double* %306, i64 512
%308 = load double*, double** %3
%309 = load i32, i32* %11
%310 = sext i32 %309 to i64
%311 = getelementptr inbounds double, double* %308, i64 %310
%312 = load i32, i32* %12
%313 = sext i32 %312 to i64
%314 = getelementptr inbounds double, double* %311, i64 %313
%315 = getelementptr inbounds double, double* %314, i64 768
%316 = load double*, double** %3
%317 = load i32, i32* %11
%318 = sext i32 %317 to i64
%319 = getelementptr inbounds double, double* %316, i64 %318
%320 = load i32, i32* %12
%321 = sext i32 %320 to i64
%322 = getelementptr inbounds double, double* %319, i64 %321
%323 = getelementptr inbounds double, double* %322, i64 1024
%324 = load double*, double** %3
%325 = load i32, i32* %11
%326 = sext i32 %325 to i64
%327 = getelementptr inbounds double, double* %324, i64 %326
%328 = load i32, i32* %12
%329 = sext i32 %328 to i64
%330 = getelementptr inbounds double, double* %327, i64 %329
%331 = getelementptr inbounds double, double* %330, i64 1280
%332 = load double*, double** %3
%333 = load i32, i32* %11
%334 = sext i32 %333 to i64
%335 = getelementptr inbounds double, double* %332, i64 %334
%336 = load i32, i32* %12
%337 = sext i32 %336 to i64
%338 = getelementptr inbounds double, double* %335, i64 %337
%339 = getelementptr inbounds double, double* %338, i64 1536
%340 = load double*, double** %3
%341 = load i32, i32* %11
%342 = sext i32 %341 to i64
%343 = getelementptr inbounds double, double* %340, i64 %342
%344 = load i32, i32* %12
%345 = sext i32 %344 to i64
%346 = getelementptr inbounds double, double* %343, i64 %345
%347 = getelementptr inbounds double, double* %346, i64 1792
br label %348
348: ; preds = %283
%349 = load i32, i32* %12
%350 = add nsw i32 %349, 2
store i32 %350, i32* %12
br label %280
351: ; preds = %280
br label %352
352: ; preds = %351
%353 = load i32, i32* %11
%354 = add nsw i32 %353, 2048
store i32 %354, i32* %11
br label %276
355: ; preds = %276
br label %716
356: ; preds = %256
%357 = load i32, i32* %4
%358 = icmp eq i32 %357, 14
br i1 %358, label %359, label %456
359: ; preds = %356
%360 = load double*, double** %3
%361 = getelementptr inbounds double, double* %360, i64 0
%362 = load double*, double** %3
%363 = getelementptr inbounds double, double* %362, i64 2048
%364 = load double*, double** %3
%365 = getelementptr inbounds double, double* %364, i64 4096
%366 = load double*, double** %3
%367 = getelementptr inbounds double, double* %366, i64 6144
%368 = load double*, double** %3
%369 = getelementptr inbounds double, double* %368, i64 8192
%370 = load double*, double** %3
%371 = getelementptr inbounds double, double* %370, i64 10240
%372 = load double*, double** %3
%373 = getelementptr inbounds double, double* %372, i64 12288
%374 = load double*, double** %3
%375 = getelementptr inbounds double, double* %374, i64 14336
store i32 0, i32* %13
br label %376
376: ; preds = %452, %359
%377 = load i32, i32* %13
%378 = icmp slt i32 %377, 16384
br i1 %378, label %379, label %455
379: ; preds = %376
store i32 0, i32* %14
br label %380
380: ; preds = %448, %379
%381 = load i32, i32* %14
%382 = icmp slt i32 %381, 2048
br i1 %382, label %383, label %451
383: ; preds = %380
%384 = load double*, double** %3
%385 = load i32, i32* %13
%386 = sext i32 %385 to i64
%387 = getelementptr inbounds double, double* %384, i64 %386
%388 = load i32, i32* %14
%389 = sext i32 %388 to i64
%390 = getelementptr inbounds double, double* %387, i64 %389
%391 = getelementptr inbounds double, double* %390, i64 0
%392 = load double*, double** %3
%393 = load i32, i32* %13
%394 = sext i32 %393 to i64
%395 = getelementptr inbounds double, double* %392, i64 %394
%396 = load i32, i32* %14
%397 = sext i32 %396 to i64
%398 = getelementptr inbounds double, double* %395, i64 %397
%399 = getelementptr inbounds double, double* %398, i64 2048
%400 = load double*, double** %3
%401 = load i32, i32* %13
%402 = sext i32 %401 to i64
%403 = getelementptr inbounds double, double* %400, i64 %402
%404 = load i32, i32* %14
%405 = sext i32 %404 to i64
%406 = getelementptr inbounds double, double* %403, i64 %405
%407 = getelementptr inbounds double, double* %406, i64 4096
%408 = load double*, double** %3
%409 = load i32, i32* %13
%410 = sext i32 %409 to i64
%411 = getelementptr inbounds double, double* %408, i64 %410
%412 = load i32, i32* %14
%413 = sext i32 %412 to i64
%414 = getelementptr inbounds double, double* %411, i64 %413
%415 = getelementptr inbounds double, double* %414, i64 6144
%416 = load double*, double** %3
%417 = load i32, i32* %13
%418 = sext i32 %417 to i64
%419 = getelementptr inbounds double, double* %416, i64 %418
%420 = load i32, i32* %14
%421 = sext i32 %420 to i64
%422 = getelementptr inbounds double, double* %419, i64 %421
%423 = getelementptr inbounds double, double* %422, i64 8192
%424 = load double*, double** %3
%425 = load i32, i32* %13
%426 = sext i32 %425 to i64
%427 = getelementptr inbounds double, double* %424, i64 %426
%428 = load i32, i32* %14
%429 = sext i32 %428 to i64
%430 = getelementptr inbounds double, double* %427, i64 %429
%431 = getelementptr inbounds double, double* %430, i64 10240
%432 = load double*, double** %3
%433 = load i32, i32* %13
%434 = sext i32 %433 to i64
%435 = getelementptr inbounds double, double* %432, i64 %434
%436 = load i32, i32* %14
%437 = sext i32 %436 to i64
%438 = getelementptr inbounds double, double* %435, i64 %437
%439 = getelementptr inbounds double, double* %438, i64 12288
%440 = load double*, double** %3
%441 = load i32, i32* %13
%442 = sext i32 %441 to i64
%443 = getelementptr inbounds double, double* %440, i64 %442
%444 = load i32, i32* %14
%445 = sext i32 %444 to i64
%446 = getelementptr inbounds double, double* %443, i64 %445
%447 = getelementptr inbounds double, double* %446, i64 14336
br label %448
448: ; preds = %383
%449 = load i32, i32* %14
%450 = add nsw i32 %449, 2
store i32 %450, i32* %14
br label %380
451: ; preds = %380
br label %452
452: ; preds = %451
%453 = load i32, i32* %13
%454 = add nsw i32 %453, 16384
store i32 %454, i32* %13
br label %376
455: ; preds = %376
br label %716
456: ; preds = %356
%457 = load i32, i32* %4
%458 = icmp eq i32 %457, 17
br i1 %458, label %459, label %556
459: ; preds = %456
%460 = load double*, double** %3
%461 = getelementptr inbounds double, double* %460, i64 0
%462 = load double*, double** %3
%463 = getelementptr inbounds double, double* %462, i64 16384
%464 = load double*, double** %3
%465 = getelementptr inbounds double, double* %464, i64 32768
%466 = load double*, double** %3
%467 = getelementptr inbounds double, double* %466, i64 49152
%468 = load double*, double** %3
%469 = getelementptr inbounds double, double* %468, i64 65536
%470 = load double*, double** %3
%471 = getelementptr inbounds double, double* %470, i64 81920
%472 = load double*, double** %3
%473 = getelementptr inbounds double, double* %472, i64 98304
%474 = load double*, double** %3
%475 = getelementptr inbounds double, double* %474, i64 114688
store i32 0, i32* %15
br label %476
476: ; preds = %552, %459
%477 = load i32, i32* %15
%478 = icmp slt i32 %477, 131072
br i1 %478, label %479, label %555
479: ; preds = %476
store i32 0, i32* %16
br label %480
480: ; preds = %548, %479
%481 = load i32, i32* %16
%482 = icmp slt i32 %481, 16384
br i1 %482, label %483, label %551
483: ; preds = %480
%484 = load double*, double** %3
%485 = load i32, i32* %15
%486 = sext i32 %485 to i64
%487 = getelementptr inbounds double, double* %484, i64 %486
%488 = load i32, i32* %16
%489 = sext i32 %488 to i64
%490 = getelementptr inbounds double, double* %487, i64 %489
%491 = getelementptr inbounds double, double* %490, i64 0
%492 = load double*, double** %3
%493 = load i32, i32* %15
%494 = sext i32 %493 to i64
%495 = getelementptr inbounds double, double* %492, i64 %494
%496 = load i32, i32* %16
%497 = sext i32 %496 to i64
%498 = getelementptr inbounds double, double* %495, i64 %497
%499 = getelementptr inbounds double, double* %498, i64 16384
%500 = load double*, double** %3
%501 = load i32, i32* %15
%502 = sext i32 %501 to i64
%503 = getelementptr inbounds double, double* %500, i64 %502
%504 = load i32, i32* %16
%505 = sext i32 %504 to i64
%506 = getelementptr inbounds double, double* %503, i64 %505
%507 = getelementptr inbounds double, double* %506, i64 32768
%508 = load double*, double** %3
%509 = load i32, i32* %15
%510 = sext i32 %509 to i64
%511 = getelementptr inbounds double, double* %508, i64 %510
%512 = load i32, i32* %16
%513 = sext i32 %512 to i64
%514 = getelementptr inbounds double, double* %511, i64 %513
%515 = getelementptr inbounds double, double* %514, i64 49152
%516 = load double*, double** %3
%517 = load i32, i32* %15
%518 = sext i32 %517 to i64
%519 = getelementptr inbounds double, double* %516, i64 %518
%520 = load i32, i32* %16
%521 = sext i32 %520 to i64
%522 = getelementptr inbounds double, double* %519, i64 %521
%523 = getelementptr inbounds double, double* %522, i64 65536
%524 = load double*, double** %3
%525 = load i32, i32* %15
%526 = sext i32 %525 to i64
%527 = getelementptr inbounds double, double* %524, i64 %526
%528 = load i32, i32* %16
%529 = sext i32 %528 to i64
%530 = getelementptr inbounds double, double* %527, i64 %529
%531 = getelementptr inbounds double, double* %530, i64 81920
%532 = load double*, double** %3
%533 = load i32, i32* %15
%534 = sext i32 %533 to i64
%535 = getelementptr inbounds double, double* %532, i64 %534
%536 = load i32, i32* %16
%537 = sext i32 %536 to i64
%538 = getelementptr inbounds double, double* %535, i64 %537
%539 = getelementptr inbounds double, double* %538, i64 98304
%540 = load double*, double** %3
%541 = load i32, i32* %15
%542 = sext i32 %541 to i64
%543 = getelementptr inbounds double, double* %540, i64 %542
%544 = load i32, i32* %16
%545 = sext i32 %544 to i64
%546 = getelementptr inbounds double, double* %543, i64 %545
%547 = getelementptr inbounds double, double* %546, i64 114688
br label %548
548: ; preds = %483
%549 = load i32, i32* %16
%550 = add nsw i32 %549, 2
store i32 %550, i32* %16
br label %480
551: ; preds = %480
br label %552
552: ; preds = %551
%553 = load i32, i32* %15
%554 = add nsw i32 %553, 131072
store i32 %554, i32* %15
br label %476
555: ; preds = %476
br label %716
556: ; preds = %456
%557 = load i32, i32* %4
%558 = icmp eq i32 %557, 20
br i1 %558, label %559, label %656
559: ; preds = %556
%560 = load double*, double** %3
%561 = getelementptr inbounds double, double* %560, i64 0
%562 = load double*, double** %3
%563 = getelementptr inbounds double, double* %562, i64 131072
%564 = load double*, double** %3
%565 = getelementptr inbounds double, double* %564, i64 262144
%566 = load double*, double** %3
%567 = getelementptr inbounds double, double* %566, i64 393216
%568 = load double*, double** %3
%569 = getelementptr inbounds double, double* %568, i64 524288
%570 = load double*, double** %3
%571 = getelementptr inbounds double, double* %570, i64 655360
%572 = load double*, double** %3
%573 = getelementptr inbounds double, double* %572, i64 786432
%574 = load double*, double** %3
%575 = getelementptr inbounds double, double* %574, i64 917504
store i32 0, i32* %17
br label %576
576: ; preds = %652, %559
%577 = load i32, i32* %17
%578 = icmp slt i32 %577, 1048576
br i1 %578, label %579, label %655
579: ; preds = %576
store i32 0, i32* %18
br label %580
580: ; preds = %648, %579
%581 = load i32, i32* %18
%582 = icmp slt i32 %581, 131072
br i1 %582, label %583, label %651
583: ; preds = %580
%584 = load double*, double** %3
%585 = load i32, i32* %17
%586 = sext i32 %585 to i64
%587 = getelementptr inbounds double, double* %584, i64 %586
%588 = load i32, i32* %18
%589 = sext i32 %588 to i64
%590 = getelementptr inbounds double, double* %587, i64 %589
%591 = getelementptr inbounds double, double* %590, i64 0
%592 = load double*, double** %3
%593 = load i32, i32* %17
%594 = sext i32 %593 to i64
%595 = getelementptr inbounds double, double* %592, i64 %594
%596 = load i32, i32* %18
%597 = sext i32 %596 to i64
%598 = getelementptr inbounds double, double* %595, i64 %597
%599 = getelementptr inbounds double, double* %598, i64 131072
%600 = load double*, double** %3
%601 = load i32, i32* %17
%602 = sext i32 %601 to i64
%603 = getelementptr inbounds double, double* %600, i64 %602
%604 = load i32, i32* %18
%605 = sext i32 %604 to i64
%606 = getelementptr inbounds double, double* %603, i64 %605
%607 = getelementptr inbounds double, double* %606, i64 262144
%608 = load double*, double** %3
%609 = load i32, i32* %17
%610 = sext i32 %609 to i64
%611 = getelementptr inbounds double, double* %608, i64 %610
%612 = load i32, i32* %18
%613 = sext i32 %612 to i64
%614 = getelementptr inbounds double, double* %611, i64 %613
%615 = getelementptr inbounds double, double* %614, i64 393216
%616 = load double*, double** %3
%617 = load i32, i32* %17
%618 = sext i32 %617 to i64
%619 = getelementptr inbounds double, double* %616, i64 %618
%620 = load i32, i32* %18
%621 = sext i32 %620 to i64
%622 = getelementptr inbounds double, double* %619, i64 %621
%623 = getelementptr inbounds double, double* %622, i64 524288
%624 = load double*, double** %3
%625 = load i32, i32* %17
%626 = sext i32 %625 to i64
%627 = getelementptr inbounds double, double* %624, i64 %626
%628 = load i32, i32* %18
%629 = sext i32 %628 to i64
%630 = getelementptr inbounds double, double* %627, i64 %629
%631 = getelementptr inbounds double, double* %630, i64 655360
%632 = load double*, double** %3
%633 = load i32, i32* %17
%634 = sext i32 %633 to i64
%635 = getelementptr inbounds double, double* %632, i64 %634
%636 = load i32, i32* %18
%637 = sext i32 %636 to i64
%638 = getelementptr inbounds double, double* %635, i64 %637
%639 = getelementptr inbounds double, double* %638, i64 786432
%640 = load double*, double** %3
%641 = load i32, i32* %17
%642 = sext i32 %641 to i64
%643 = getelementptr inbounds double, double* %640, i64 %642
%644 = load i32, i32* %18
%645 = sext i32 %644 to i64
%646 = getelementptr inbounds double, double* %643, i64 %645
%647 = getelementptr inbounds double, double* %646, i64 917504
br label %648
648: ; preds = %583
%649 = load i32, i32* %18
%650 = add nsw i32 %649, 2
store i32 %650, i32* %18
br label %580
651: ; preds = %580
br label %652
652: ; preds = %651
%653 = load i32, i32* %17
%654 = add nsw i32 %653, 1048576
store i32 %654, i32* %17
br label %576
655: ; preds = %576
br label %716
656: ; preds = %556
%657 = load i32, i32* %4
%658 = icmp eq i32 %657, 22
br i1 %658, label %659, label %716
659: ; preds = %656
%660 = load double*, double** %3
%661 = getelementptr inbounds double, double* %660, i64 0
%662 = load double*, double** %3
%663 = getelementptr inbounds double, double* %662, i64 1048576
%664 = load double*, double** %3
%665 = getelementptr inbounds double, double* %664, i64 2097152
%666 = load double*, double** %3
%667 = getelementptr inbounds double, double* %666, i64 3145728
store i32 0, i32* %19
br label %668
668: ; preds = %712, %659
%669 = load i32, i32* %19
%670 = icmp slt i32 %669, 4194304
br i1 %670, label %671, label %715
671: ; preds = %668
store i32 0, i32* %20
br label %672
672: ; preds = %708, %671
%673 = load i32, i32* %20
%674 = icmp slt i32 %673, 1048576
br i1 %674, label %675, label %711
675: ; preds = %672
%676 = load double*, double** %3
%677 = load i32, i32* %19
%678 = sext i32 %677 to i64
%679 = getelementptr inbounds double, double* %676, i64 %678
%680 = load i32, i32* %20
%681 = sext i32 %680 to i64
%682 = getelementptr inbounds double, double* %679, i64 %681
%683 = getelementptr inbounds double, double* %682, i64 0
%684 = load double*, double** %3
%685 = load i32, i32* %19
%686 = sext i32 %685 to i64
%687 = getelementptr inbounds double, double* %684, i64 %686
%688 = load i32, i32* %20
%689 = sext i32 %688 to i64
%690 = getelementptr inbounds double, double* %687, i64 %689
%691 = getelementptr inbounds double, double* %690, i64 1048576
%692 = load double*, double** %3
%693 = load i32, i32* %19
%694 = sext i32 %693 to i64
%695 = getelementptr inbounds double, double* %692, i64 %694
%696 = load i32, i32* %20
%697 = sext i32 %696 to i64
%698 = getelementptr inbounds double, double* %695, i64 %697
%699 = getelementptr inbounds double, double* %698, i64 2097152
%700 = load double*, double** %3
%701 = load i32, i32* %19
%702 = sext i32 %701 to i64
%703 = getelementptr inbounds double, double* %700, i64 %702
%704 = load i32, i32* %20
%705 = sext i32 %704 to i64
%706 = getelementptr inbounds double, double* %703, i64 %705
%707 = getelementptr inbounds double, double* %706, i64 3145728
br label %708
708: ; preds = %675
%709 = load i32, i32* %20
%710 = add nsw i32 %709, 2
store i32 %710, i32* %20
br label %672
711: ; preds = %672
br label %712
712: ; preds = %711
%713 = load i32, i32* %19
%714 = add nsw i32 %713, 4194304
store i32 %714, i32* %19
br label %668
715: ; preds = %668
br label %716
716: ; preds = %55, %155, %255, %355, %455, %555, %655, %715, %656
ret void
}

LLVM IR (-O2):
define void @helper_double_22_recursive(double* %0, i32 %1) {
switch i32 %1, label %140 [
i32 2, label %26
i32 5, label %3
i32 8, label %28
i32 11, label %48
i32 14, label %68
i32 17, label %88
i32 20, label %108
i32 22, label %128
]
3: ; preds = %2
%4 = getelementptr inbounds double, double* %0, i64 2
tail call void asm sideeffect "movupd ($0), %xmm0\0Amovupd ($1), %xmm1\0Amovapd %xmm0, %xmm8\0Ahaddpd %xmm8, %xmm8\0Amovapd %xmm0, %xmm9\0Ahsubpd %xmm9, %xmm9\0Ablendpd $$1, %xmm8, %xmm9\0Amovapd %xmm9, %xmm0\0Amovapd %xmm1, %xmm8\0Ahaddpd %xmm8, %xmm8\0Amovapd %xmm1, %xmm9\0Ahsubpd %xmm9, %xmm9\0Ablendpd $$1, %xmm8, %xmm9\0Amovapd %xmm9, %xmm1\0Amovapd %xmm0, %xmm8\0Amovapd %xmm0, %xmm9\0Aaddpd %xmm1, %xmm8\0Asubpd %xmm1, %xmm9\0Amovupd %xmm8, ($0)\0Amovupd %xmm9, ($1)\0A", "r,r,~{xmm0},~{xmm1},~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{memory},~{dirflag},~{fpsr},~{flags}"(double* %0, double* %4)
%5 = getelementptr inbounds double, double* %0, i64 4
%6 = getelementptr inbounds double, double* %0, i64 6
tail call void asm sideeffect "movupd ($0), %xmm0\0Amovupd ($1), %xmm1\0Amovapd %xmm0, %xmm8\0Ahaddpd %xmm8, %xmm8\0Amovapd %xmm0, %xmm9\0Ahsubpd %xmm9, %xmm9\0Ablendpd $$1, %xmm8, %xmm9\0Amovapd %xmm9, %xmm0\0Amovapd %xmm1, %xmm8\0Ahaddpd %xmm8, %xmm8\0Amovapd %xmm1, %xmm9\0Ahsubpd %xmm9, %xmm9\0Ablendpd $$1, %xmm8, %xmm9\0Amovapd %xmm9, %xmm1\0Amovapd %xmm0, %xmm8\0Amovapd %xmm0, %xmm9\0Aaddpd %xmm1, %xmm8\0Asubpd %xmm1, %xmm9\0Amovupd %xmm8, ($0)\0Amovupd %xmm9, ($1)\0A", "r,r,~{xmm0},~{xmm1},~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{memory},~{dirflag},~{fpsr},~{flags}"(double* %5, double* %6)
%7 = getelementptr inbounds double, double* %0, i64 8
%8 = getelementptr inbounds double, double* %0, i64 10
tail call void asm sideeffect "movupd ($0), %xmm0\0Amovupd ($1), %xmm1\0Amovapd %xmm0, %xmm8\0Ahaddpd %xmm8, %xmm8\0Amovapd %xmm0, %xmm9\0Ahsubpd %xmm9, %xmm9\0Ablendpd $$1, %xmm8, %xmm9\0Amovapd %xmm9, %xmm0\0Amovapd %xmm1, %xmm8\0Ahaddpd %xmm8, %xmm8\0Amovapd %xmm1, %xmm9\0Ahsubpd %xmm9, %xmm9\0Ablendpd $$1, %xmm8, %xmm9\0Amovapd %xmm9, %xmm1\0Amovapd %xmm0, %xmm8\0Amovapd %xmm0, %xmm9\0Aaddpd %xmm1, %xmm8\0Asubpd %xmm1, %xmm9\0Amovupd %xmm8, ($0)\0Amovupd %xmm9, ($1)\0A", "r,r,~{xmm0},~{xmm1},~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{memory},~{dirflag},~{fpsr},~{flags}"(double* %7, double* %8)
%9 = getelementptr inbounds double, double* %0, i64 12
%10 = getelementptr inbounds double, double* %0, i64 14
tail call void asm sideeffect "movupd ($0), %xmm0\0Amovupd ($1), %xmm1\0Amovapd %xmm0, %xmm8\0Ahaddpd %xmm8, %xmm8\0Amovapd %xmm0, %xmm9\0Ahsubpd %xmm9, %xmm9\0Ablendpd $$1, %xmm8, %xmm9\0Amovapd %xmm9, %xmm0\0Amovapd %xmm1, %xmm8\0Ahaddpd %xmm8, %xmm8\0Amovapd %xmm1, %xmm9\0Ahsubpd %xmm9, %xmm9\0Ablendpd $$1, %xmm8, %xmm9\0Amovapd %xmm9, %xmm1\0Amovapd %xmm0, %xmm8\0Amovapd %xmm0, %xmm9\0Aaddpd %xmm1, %xmm8\0Asubpd %xmm1, %xmm9\0Amovupd %xmm8, ($0)\0Amovupd %xmm9, ($1)\0A", "r,r,~{xmm0},~{xmm1},~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{memory},~{dirflag},~{fpsr},~{flags}"(double* %9, double* %10)
%11 = getelementptr inbounds double, double* %0, i64 16
%12 = getelementptr inbounds double, double* %0, i64 18
tail call void asm sideeffect "movupd ($0), %xmm0\0Amovupd ($1), %xmm1\0Amovapd %xmm0, %xmm8\0Ahaddpd %xmm8, %xmm8\0Amovapd %xmm0, %xmm9\0Ahsubpd %xmm9, %xmm9\0Ablendpd $$1, %xmm8, %xmm9\0Amovapd %xmm9, %xmm0\0Amovapd %xmm1, %xmm8\0Ahaddpd %xmm8, %xmm8\0Amovapd %xmm1, %xmm9\0Ahsubpd %xmm9, %xmm9\0Ablendpd $$1, %xmm8, %xmm9\0Amovapd %xmm9, %xmm1\0Amovapd %xmm0, %xmm8\0Amovapd %xmm0, %xmm9\0Aaddpd %xmm1, %xmm8\0Asubpd %xmm1, %xmm9\0Amovupd %xmm8, ($0)\0Amovupd %xmm9, ($1)\0A", "r,r,~{xmm0},~{xmm1},~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{memory},~{dirflag},~{fpsr},~{flags}"(double* %11, double* %12)
%13 = getelementptr inbounds double, double* %0, i64 20
%14 = getelementptr inbounds double, double* %0, i64 22
tail call void asm sideeffect "movupd ($0), %xmm0\0Amovupd ($1), %xmm1\0Amovapd %xmm0, %xmm8\0Ahaddpd %xmm8, %xmm8\0Amovapd %xmm0, %xmm9\0Ahsubpd %xmm9, %xmm9\0Ablendpd $$1, %xmm8, %xmm9\0Amovapd %xmm9, %xmm0\0Amovapd %xmm1, %xmm8\0Ahaddpd %xmm8, %xmm8\0Amovapd %xmm1, %xmm9\0Ahsubpd %xmm9, %xmm9\0Ablendpd $$1, %xmm8, %xmm9\0Amovapd %xmm9, %xmm1\0Amovapd %xmm0, %xmm8\0Amovapd %xmm0, %xmm9\0Aaddpd %xmm1, %xmm8\0Asubpd %xmm1, %xmm9\0Amovupd %xmm8, ($0)\0Amovupd %xmm9, ($1)\0A", "r,r,~{xmm0},~{xmm1},~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{memory},~{dirflag},~{fpsr},~{flags}"(double* %13, double* %14)
%15 = getelementptr inbounds double, double* %0, i64 24
%16 = getelementptr inbounds double, double* %0, i64 26
tail call void asm sideeffect "movupd ($0), %xmm0\0Amovupd ($1), %xmm1\0Amovapd %xmm0, %xmm8\0Ahaddpd %xmm8, %xmm8\0Amovapd %xmm0, %xmm9\0Ahsubpd %xmm9, %xmm9\0Ablendpd $$1, %xmm8, %xmm9\0Amovapd %xmm9, %xmm0\0Amovapd %xmm1, %xmm8\0Ahaddpd %xmm8, %xmm8\0Amovapd %xmm1, %xmm9\0Ahsubpd %xmm9, %xmm9\0Ablendpd $$1, %xmm8, %xmm9\0Amovapd %xmm9, %xmm1\0Amovapd %xmm0, %xmm8\0Amovapd %xmm0, %xmm9\0Aaddpd %xmm1, %xmm8\0Asubpd %xmm1, %xmm9\0Amovupd %xmm8, ($0)\0Amovupd %xmm9, ($1)\0A", "r,r,~{xmm0},~{xmm1},~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{memory},~{dirflag},~{fpsr},~{flags}"(double* %15, double* %16)
%17 = getelementptr inbounds double, double* %0, i64 28
%18 = getelementptr inbounds double, double* %0, i64 30
tail call void asm sideeffect "movupd ($0), %xmm0\0Amovupd ($1), %xmm1\0Amovapd %xmm0, %xmm8\0Ahaddpd %xmm8, %xmm8\0Amovapd %xmm0, %xmm9\0Ahsubpd %xmm9, %xmm9\0Ablendpd $$1, %xmm8, %xmm9\0Amovapd %xmm9, %xmm0\0Amovapd %xmm1, %xmm8\0Ahaddpd %xmm8, %xmm8\0Amovapd %xmm1, %xmm9\0Ahsubpd %xmm9, %xmm9\0Ablendpd $$1, %xmm8, %xmm9\0Amovapd %xmm9, %xmm1\0Amovapd %xmm0, %xmm8\0Amovapd %xmm0, %xmm9\0Aaddpd %xmm1, %xmm8\0Asubpd %xmm1, %xmm9\0Amovupd %xmm8, ($0)\0Amovupd %xmm9, ($1)\0A", "r,r,~{xmm0},~{xmm1},~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{memory},~{dirflag},~{fpsr},~{flags}"(double* %17, double* %18)
tail call void asm sideeffect "movupd ($0), %xmm0\0Amovupd ($1), %xmm1\0Amovupd ($2), %xmm2\0Amovupd ($3), %xmm3\0Amovupd ($4), %xmm4\0Amovupd ($5), %xmm5\0Amovupd ($6), %xmm6\0Amovupd ($7), %xmm7\0Amovapd %xmm0, %xmm8\0Amovapd %xmm0, %xmm9\0Aaddpd %xmm1, %xmm8\0Asubpd %xmm1, %xmm9\0Amovapd %xmm2, %xmm10\0Amovapd %xmm2, %xmm11\0Aaddpd %xmm3, %xmm10\0Asubpd %xmm3, %xmm11\0Amovapd %xmm4, %xmm12\0Amovapd %xmm4, %xmm13\0Aaddpd %xmm5, %xmm12\0Asubpd %xmm5, %xmm13\0Amovapd %xmm6, %xmm14\0Amovapd %xmm6, %xmm15\0Aaddpd %xmm7, %xmm14\0Asubpd %xmm7, %xmm15\0Amovapd %xmm8, %xmm0\0Amovapd %xmm8, %xmm2\0Aaddpd %xmm10, %xmm0\0Asubpd %xmm10, %xmm2\0Amovapd %xmm9, %xmm1\0Amovapd %xmm9, %xmm3\0Aaddpd %xmm11, %xmm1\0Asubpd %xmm11, %xmm3\0Amovapd %xmm12, %xmm4\0Amovapd %xmm12, %xmm6\0Aaddpd %xmm14, %xmm4\0Asubpd %xmm14, %xmm6\0Amovapd %xmm13, %xmm5\0Amovapd %xmm13, %xmm7\0Aaddpd %xmm15, %xmm5\0Asubpd %xmm15, %xmm7\0Amovapd %xmm0, %xmm8\0Amovapd %xmm0, %xmm12\0Aaddpd %xmm4, %xmm8\0Asubpd %xmm4, %xmm12\0Amovapd %xmm1, %xmm9\0Amovapd %xmm1, %xmm13\0Aaddpd %xmm5, %xmm9\0Asubpd %xmm5, %xmm13\0Amovapd %xmm2, %xmm10\0Amovapd %xmm2, %xmm14\0Aaddpd %xmm6, %xmm10\0Asubpd %xmm6, %xmm14\0Amovapd %xmm3, %xmm11\0Amovapd %xmm3, %xmm15\0Aaddpd %xmm7, %xmm11\0Asubpd %xmm7, %xmm15\0Amovupd %xmm8, ($0)\0Amovupd %xmm9, ($1)\0Amovupd %xmm10, ($2)\0Amovupd %xmm11, ($3)\0Amovupd %xmm12, ($4)\0Amovupd %xmm13, ($5)\0Amovupd %xmm14, ($6)\0Amovupd %xmm15, ($7)\0A", "r,r,r,r,r,r,r,r,~{xmm0},~{xmm1},~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{memory},~{dirflag},~{fpsr},~{flags}"(double* %0, double* %5, double* %7, double* %9, double* %11, double* %13, double* %15, double* %17)
%19 = getelementptr inbounds double, double* %0, i64 6
%20 = getelementptr inbounds double, double* %0, i64 10
%21 = getelementptr inbounds double, double* %0, i64 14
%22 = getelementptr inbounds double, double* %0, i64 18
%23 = getelementptr inbounds double, double* %0, i64 22
%24 = getelementptr inbounds double, double* %0, i64 26
%25 = getelementptr inbounds double, double* %0, i64 30
tail call void asm sideeffect "movupd ($0), %xmm0\0Amovupd ($1), %xmm1\0Amovupd ($2), %xmm2\0Amovupd ($3), %xmm3\0Amovupd ($4), %xmm4\0Amovupd ($5), %xmm5\0Amovupd ($6), %xmm6\0Amovupd ($7), %xmm7\0Amovapd %xmm0, %xmm8\0Amovapd %xmm0, %xmm9\0Aaddpd %xmm1, %xmm8\0Asubpd %xmm1, %xmm9\0Amovapd %xmm2, %xmm10\0Amovapd %xmm2, %xmm11\0Aaddpd %xmm3, %xmm10\0Asubpd %xmm3, %xmm11\0Amovapd %xmm4, %xmm12\0Amovapd %xmm4, %xmm13\0Aaddpd %xmm5, %xmm12\0Asubpd %xmm5, %xmm13\0Amovapd %xmm6, %xmm14\0Amovapd %xmm6, %xmm15\0Aaddpd %xmm7, %xmm14\0Asubpd %xmm7, %xmm15\0Amovapd %xmm8, %xmm0\0Amovapd %xmm8, %xmm2\0Aaddpd %xmm10, %xmm0\0Asubpd %xmm10, %xmm2\0Amovapd %xmm9, %xmm1\0Amovapd %xmm9, %xmm3\0Aaddpd %xmm11, %xmm1\0Asubpd %xmm11, %xmm3\0Amovapd %xmm12, %xmm4\0Amovapd %xmm12, %xmm6\0Aaddpd %xmm14, %xmm4\0Asubpd %xmm14, %xmm6\0Amovapd %xmm13, %xmm5\0Amovapd %xmm13, %xmm7\0Aaddpd %xmm15, %xmm5\0Asubpd %xmm15, %xmm7\0Amovapd %xmm0, %xmm8\0Amovapd %xmm0, %xmm12\0Aaddpd %xmm4, %xmm8\0Asubpd %xmm4, %xmm12\0Amovapd %xmm1, %xmm9\0Amovapd %xmm1, %xmm13\0Aaddpd %xmm5, %xmm9\0Asubpd %xmm5, %xmm13\0Amovapd %xmm2, %xmm10\0Amovapd %xmm2, %xmm14\0Aaddpd %xmm6, %xmm10\0Asubpd %xmm6, %xmm14\0Amovapd %xmm3, %xmm11\0Amovapd %xmm3, %xmm15\0Aaddpd %xmm7, %xmm11\0Asubpd %xmm7, %xmm15\0Amovupd %xmm8, ($0)\0Amovupd %xmm9, ($1)\0Amovupd %xmm10, ($2)\0Amovupd %xmm11, ($3)\0Amovupd %xmm12, ($4)\0Amovupd %xmm13, ($5)\0Amovupd %xmm14, ($6)\0Amovupd %xmm15, ($7)\0A", "r,r,r,r,r,r,r,r,~{xmm0},~{xmm1},~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{memory},~{dirflag},~{fpsr},~{flags}"(double* %4, double* %19, double* %20, double* %21, double* %22, double* %23, double* %24, double* %25)
br label %140
26: ; preds = %2
%27 = getelementptr inbounds double, double* %0, i64 2
tail call void asm sideeffect "movupd ($0), %xmm0\0Amovupd ($1), %xmm1\0Amovapd %xmm0, %xmm8\0Ahaddpd %xmm8, %xmm8\0Amovapd %xmm0, %xmm9\0Ahsubpd %xmm9, %xmm9\0Ablendpd $$1, %xmm8, %xmm9\0Amovapd %xmm9, %xmm0\0Amovapd %xmm1, %xmm8\0Ahaddpd %xmm8, %xmm8\0Amovapd %xmm1, %xmm9\0Ahsubpd %xmm9, %xmm9\0Ablendpd $$1, %xmm8, %xmm9\0Amovapd %xmm9, %xmm1\0Amovapd %xmm0, %xmm8\0Amovapd %xmm0, %xmm9\0Aaddpd %xmm1, %xmm8\0Asubpd %xmm1, %xmm9\0Amovupd %xmm8, ($0)\0Amovupd %xmm9, ($1)\0A", "r,r,~{xmm0},~{xmm1},~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{memory},~{dirflag},~{fpsr},~{flags}"(double* %0, double* %27)
br label %140
28: ; preds = %2
tail call void @helper_double_22_recursive(double* %0, i32 5)
%29 = getelementptr inbounds double, double* %0, i64 32
tail call void @helper_double_22_recursive(double* %29, i32 5)
%30 = getelementptr inbounds double, double* %0, i64 64
tail call void @helper_double_22_recursive(double* %30, i32 5)
%31 = getelementptr inbounds double, double* %0, i64 96
tail call void @helper_double_22_recursive(double* %31, i32 5)
%32 = getelementptr inbounds double, double* %0, i64 128
tail call void @helper_double_22_recursive(double* %32, i32 5)
%33 = getelementptr inbounds double, double* %0, i64 160
tail call void @helper_double_22_recursive(double* %33, i32 5)
%34 = getelementptr inbounds double, double* %0, i64 192
tail call void @helper_double_22_recursive(double* %34, i32 5)
%35 = getelementptr inbounds double, double* %0, i64 224
tail call void @helper_double_22_recursive(double* %35, i32 5)
br label %36
36: ; preds = %28, %36
%37 = phi i64 [ 0, %28 ], [ %46, %36 ]
%38 = getelementptr inbounds double, double* %0, i64 %37
%39 = getelementptr inbounds double, double* %38, i64 32
%40 = getelementptr inbounds double, double* %38, i64 64
%41 = getelementptr inbounds double, double* %38, i64 96
%42 = getelementptr inbounds double, double* %38, i64 128
%43 = getelementptr inbounds double, double* %38, i64 160
%44 = getelementptr inbounds double, double* %38, i64 192
%45 = getelementptr inbounds double, double* %38, i64 224
tail call void asm sideeffect "movupd ($0), %xmm0\0Amovupd ($1), %xmm1\0Amovupd ($2), %xmm2\0Amovupd ($3), %xmm3\0Amovupd ($4), %xmm4\0Amovupd ($5), %xmm5\0Amovupd ($6), %xmm6\0Amovupd ($7), %xmm7\0Amovapd %xmm0, %xmm8\0Amovapd %xmm0, %xmm9\0Aaddpd %xmm1, %xmm8\0Asubpd %xmm1, %xmm9\0Amovapd %xmm2, %xmm10\0Amovapd %xmm2, %xmm11\0Aaddpd %xmm3, %xmm10\0Asubpd %xmm3, %xmm11\0Amovapd %xmm4, %xmm12\0Amovapd %xmm4, %xmm13\0Aaddpd %xmm5, %xmm12\0Asubpd %xmm5, %xmm13\0Amovapd %xmm6, %xmm14\0Amovapd %xmm6, %xmm15\0Aaddpd %xmm7, %xmm14\0Asubpd %xmm7, %xmm15\0Amovapd %xmm8, %xmm0\0Amovapd %xmm8, %xmm2\0Aaddpd %xmm10, %xmm0\0Asubpd %xmm10, %xmm2\0Amovapd %xmm9, %xmm1\0Amovapd %xmm9, %xmm3\0Aaddpd %xmm11, %xmm1\0Asubpd %xmm11, %xmm3\0Amovapd %xmm12, %xmm4\0Amovapd %xmm12, %xmm6\0Aaddpd %xmm14, %xmm4\0Asubpd %xmm14, %xmm6\0Amovapd %xmm13, %xmm5\0Amovapd %xmm13, %xmm7\0Aaddpd %xmm15, %xmm5\0Asubpd %xmm15, %xmm7\0Amovapd %xmm0, %xmm8\0Amovapd %xmm0, %xmm12\0Aaddpd %xmm4, %xmm8\0Asubpd %xmm4, %xmm12\0Amovapd %xmm1, %xmm9\0Amovapd %xmm1, %xmm13\0Aaddpd %xmm5, %xmm9\0Asubpd %xmm5, %xmm13\0Amovapd %xmm2, %xmm10\0Amovapd %xmm2, %xmm14\0Aaddpd %xmm6, %xmm10\0Asubpd %xmm6, %xmm14\0Amovapd %xmm3, %xmm11\0Amovapd %xmm3, %xmm15\0Aaddpd %xmm7, %xmm11\0Asubpd %xmm7, %xmm15\0Amovupd %xmm8, ($0)\0Amovupd %xmm9, ($1)\0Amovupd %xmm10, ($2)\0Amovupd %xmm11, ($3)\0Amovupd %xmm12, ($4)\0Amovupd %xmm13, ($5)\0Amovupd %xmm14, ($6)\0Amovupd %xmm15, ($7)\0A", "r,r,r,r,r,r,r,r,~{xmm0},~{xmm1},~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{memory},~{dirflag},~{fpsr},~{flags}"(double* %38, double* %39, double* %40, double* %41, double* %42, double* %43, double* %44, double* %45)
%46 = add nuw nsw i64 %37, 2
%47 = icmp ult i64 %37, 30
br i1 %47, label %36, label %140
48: ; preds = %2
tail call void @helper_double_22_recursive(double* %0, i32 8)
%49 = getelementptr inbounds double, double* %0, i64 256
tail call void @helper_double_22_recursive(double* %49, i32 8)
%50 = getelementptr inbounds double, double* %0, i64 512
tail call void @helper_double_22_recursive(double* %50, i32 8)
%51 = getelementptr inbounds double, double* %0, i64 768
tail call void @helper_double_22_recursive(double* %51, i32 8)
%52 = getelementptr inbounds double, double* %0, i64 1024
tail call void @helper_double_22_recursive(double* %52, i32 8)
%53 = getelementptr inbounds double, double* %0, i64 1280
tail call void @helper_double_22_recursive(double* %53, i32 8)
%54 = getelementptr inbounds double, double* %0, i64 1536
tail call void @helper_double_22_recursive(double* %54, i32 8)
%55 = getelementptr inbounds double, double* %0, i64 1792
tail call void @helper_double_22_recursive(double* %55, i32 8)
br label %56
56: ; preds = %48, %56
%57 = phi i64 [ 0, %48 ], [ %66, %56 ]
%58 = getelementptr inbounds double, double* %0, i64 %57
%59 = getelementptr inbounds double, double* %58, i64 256
%60 = getelementptr inbounds double, double* %58, i64 512
%61 = getelementptr inbounds double, double* %58, i64 768
%62 = getelementptr inbounds double, double* %58, i64 1024
%63 = getelementptr inbounds double, double* %58, i64 1280
%64 = getelementptr inbounds double, double* %58, i64 1536
%65 = getelementptr inbounds double, double* %58, i64 1792
tail call void asm sideeffect "movupd ($0), %xmm0\0Amovupd ($1), %xmm1\0Amovupd ($2), %xmm2\0Amovupd ($3), %xmm3\0Amovupd ($4), %xmm4\0Amovupd ($5), %xmm5\0Amovupd ($6), %xmm6\0Amovupd ($7), %xmm7\0Amovapd %xmm0, %xmm8\0Amovapd %xmm0, %xmm9\0Aaddpd %xmm1, %xmm8\0Asubpd %xmm1, %xmm9\0Amovapd %xmm2, %xmm10\0Amovapd %xmm2, %xmm11\0Aaddpd %xmm3, %xmm10\0Asubpd %xmm3, %xmm11\0Amovapd %xmm4, %xmm12\0Amovapd %xmm4, %xmm13\0Aaddpd %xmm5, %xmm12\0Asubpd %xmm5, %xmm13\0Amovapd %xmm6, %xmm14\0Amovapd %xmm6, %xmm15\0Aaddpd %xmm7, %xmm14\0Asubpd %xmm7, %xmm15\0Amovapd %xmm8, %xmm0\0Amovapd %xmm8, %xmm2\0Aaddpd %xmm10, %xmm0\0Asubpd %xmm10, %xmm2\0Amovapd %xmm9, %xmm1\0Amovapd %xmm9, %xmm3\0Aaddpd %xmm11, %xmm1\0Asubpd %xmm11, %xmm3\0Amovapd %xmm12, %xmm4\0Amovapd %xmm12, %xmm6\0Aaddpd %xmm14, %xmm4\0Asubpd %xmm14, %xmm6\0Amovapd %xmm13, %xmm5\0Amovapd %xmm13, %xmm7\0Aaddpd %xmm15, %xmm5\0Asubpd %xmm15, %xmm7\0Amovapd %xmm0, %xmm8\0Amovapd %xmm0, %xmm12\0Aaddpd %xmm4, %xmm8\0Asubpd %xmm4, %xmm12\0Amovapd %xmm1, %xmm9\0Amovapd %xmm1, %xmm13\0Aaddpd %xmm5, %xmm9\0Asubpd %xmm5, %xmm13\0Amovapd %xmm2, %xmm10\0Amovapd %xmm2, %xmm14\0Aaddpd %xmm6, %xmm10\0Asubpd %xmm6, %xmm14\0Amovapd %xmm3, %xmm11\0Amovapd %xmm3, %xmm15\0Aaddpd %xmm7, %xmm11\0Asubpd %xmm7, %xmm15\0Amovupd %xmm8, ($0)\0Amovupd %xmm9, ($1)\0Amovupd %xmm10, ($2)\0Amovupd %xmm11, ($3)\0Amovupd %xmm12, ($4)\0Amovupd %xmm13, ($5)\0Amovupd %xmm14, ($6)\0Amovupd %xmm15, ($7)\0A", "r,r,r,r,r,r,r,r,~{xmm0},~{xmm1},~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{memory},~{dirflag},~{fpsr},~{flags}"(double* %58, double* %59, double* %60, double* %61, double* %62, double* %63, double* %64, double* %65)
%66 = add nuw nsw i64 %57, 2
%67 = icmp ult i64 %57, 254
br i1 %67, label %56, label %140
68: ; preds = %2
tail call void @helper_double_22_recursive(double* %0, i32 11)
%69 = getelementptr inbounds double, double* %0, i64 2048
tail call void @helper_double_22_recursive(double* %69, i32 11)
%70 = getelementptr inbounds double, double* %0, i64 4096
tail call void @helper_double_22_recursive(double* %70, i32 11)
%71 = getelementptr inbounds double, double* %0, i64 6144
tail call void @helper_double_22_recursive(double* %71, i32 11)
%72 = getelementptr inbounds double, double* %0, i64 8192
tail call void @helper_double_22_recursive(double* %72, i32 11)
%73 = getelementptr inbounds double, double* %0, i64 10240
tail call void @helper_double_22_recursive(double* %73, i32 11)
%74 = getelementptr inbounds double, double* %0, i64 12288
tail call void @helper_double_22_recursive(double* %74, i32 11)
%75 = getelementptr inbounds double, double* %0, i64 14336
tail call void @helper_double_22_recursive(double* %75, i32 11)
br label %76
76: ; preds = %68, %76
%77 = phi i64 [ 0, %68 ], [ %86, %76 ]
%78 = getelementptr inbounds double, double* %0, i64 %77
%79 = getelementptr inbounds double, double* %78, i64 2048
%80 = getelementptr inbounds double, double* %78, i64 4096
%81 = getelementptr inbounds double, double* %78, i64 6144
%82 = getelementptr inbounds double, double* %78, i64 8192
%83 = getelementptr inbounds double, double* %78, i64 10240
%84 = getelementptr inbounds double, double* %78, i64 12288
%85 = getelementptr inbounds double, double* %78, i64 14336
tail call void asm sideeffect "movupd ($0), %xmm0\0Amovupd ($1), %xmm1\0Amovupd ($2), %xmm2\0Amovupd ($3), %xmm3\0Amovupd ($4), %xmm4\0Amovupd ($5), %xmm5\0Amovupd ($6), %xmm6\0Amovupd ($7), %xmm7\0Amovapd %xmm0, %xmm8\0Amovapd %xmm0, %xmm9\0Aaddpd %xmm1, %xmm8\0Asubpd %xmm1, %xmm9\0Amovapd %xmm2, %xmm10\0Amovapd %xmm2, %xmm11\0Aaddpd %xmm3, %xmm10\0Asubpd %xmm3, %xmm11\0Amovapd %xmm4, %xmm12\0Amovapd %xmm4, %xmm13\0Aaddpd %xmm5, %xmm12\0Asubpd %xmm5, %xmm13\0Amovapd %xmm6, %xmm14\0Amovapd %xmm6, %xmm15\0Aaddpd %xmm7, %xmm14\0Asubpd %xmm7, %xmm15\0Amovapd %xmm8, %xmm0\0Amovapd %xmm8, %xmm2\0Aaddpd %xmm10, %xmm0\0Asubpd %xmm10, %xmm2\0Amovapd %xmm9, %xmm1\0Amovapd %xmm9, %xmm3\0Aaddpd %xmm11, %xmm1\0Asubpd %xmm11, %xmm3\0Amovapd %xmm12, %xmm4\0Amovapd %xmm12, %xmm6\0Aaddpd %xmm14, %xmm4\0Asubpd %xmm14, %xmm6\0Amovapd %xmm13, %xmm5\0Amovapd %xmm13, %xmm7\0Aaddpd %xmm15, %xmm5\0Asubpd %xmm15, %xmm7\0Amovapd %xmm0, %xmm8\0Amovapd %xmm0, %xmm12\0Aaddpd %xmm4, %xmm8\0Asubpd %xmm4, %xmm12\0Amovapd %xmm1, %xmm9\0Amovapd %xmm1, %xmm13\0Aaddpd %xmm5, %xmm9\0Asubpd %xmm5, %xmm13\0Amovapd %xmm2, %xmm10\0Amovapd %xmm2, %xmm14\0Aaddpd %xmm6, %xmm10\0Asubpd %xmm6, %xmm14\0Amovapd %xmm3, %xmm11\0Amovapd %xmm3, %xmm15\0Aaddpd %xmm7, %xmm11\0Asubpd %xmm7, %xmm15\0Amovupd %xmm8, ($0)\0Amovupd %xmm9, ($1)\0Amovupd %xmm10, ($2)\0Amovupd %xmm11, ($3)\0Amovupd %xmm12, ($4)\0Amovupd %xmm13, ($5)\0Amovupd %xmm14, ($6)\0Amovupd %xmm15, ($7)\0A", "r,r,r,r,r,r,r,r,~{xmm0},~{xmm1},~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{memory},~{dirflag},~{fpsr},~{flags}"(double* %78, double* %79, double* %80, double* %81, double* %82, double* %83, double* %84, double* %85)
%86 = add nuw nsw i64 %77, 2
%87 = icmp ult i64 %77, 2046
br i1 %87, label %76, label %140
88: ; preds = %2
tail call void @helper_double_22_recursive(double* %0, i32 14)
%89 = getelementptr inbounds double, double* %0, i64 16384
tail call void @helper_double_22_recursive(double* %89, i32 14)
%90 = getelementptr inbounds double, double* %0, i64 32768
tail call void @helper_double_22_recursive(double* %90, i32 14)
%91 = getelementptr inbounds double, double* %0, i64 49152
tail call void @helper_double_22_recursive(double* %91, i32 14)
%92 = getelementptr inbounds double, double* %0, i64 65536
tail call void @helper_double_22_recursive(double* %92, i32 14)
%93 = getelementptr inbounds double, double* %0, i64 81920
tail call void @helper_double_22_recursive(double* %93, i32 14)
%94 = getelementptr inbounds double, double* %0, i64 98304
tail call void @helper_double_22_recursive(double* %94, i32 14)
%95 = getelementptr inbounds double, double* %0, i64 114688
tail call void @helper_double_22_recursive(double* %95, i32 14)
br label %96
96: ; preds = %88, %96
%97 = phi i64 [ 0, %88 ], [ %106, %96 ]
%98 = getelementptr inbounds double, double* %0, i64 %97
%99 = getelementptr inbounds double, double* %98, i64 16384
%100 = getelementptr inbounds double, double* %98, i64 32768
%101 = getelementptr inbounds double, double* %98, i64 49152
%102 = getelementptr inbounds double, double* %98, i64 65536
%103 = getelementptr inbounds double, double* %98, i64 81920
%104 = getelementptr inbounds double, double* %98, i64 98304
%105 = getelementptr inbounds double, double* %98, i64 114688
tail call void asm sideeffect "movupd ($0), %xmm0\0Amovupd ($1), %xmm1\0Amovupd ($2), %xmm2\0Amovupd ($3), %xmm3\0Amovupd ($4), %xmm4\0Amovupd ($5), %xmm5\0Amovupd ($6), %xmm6\0Amovupd ($7), %xmm7\0Amovapd %xmm0, %xmm8\0Amovapd %xmm0, %xmm9\0Aaddpd %xmm1, %xmm8\0Asubpd %xmm1, %xmm9\0Amovapd %xmm2, %xmm10\0Amovapd %xmm2, %xmm11\0Aaddpd %xmm3, %xmm10\0Asubpd %xmm3, %xmm11\0Amovapd %xmm4, %xmm12\0Amovapd %xmm4, %xmm13\0Aaddpd %xmm5, %xmm12\0Asubpd %xmm5, %xmm13\0Amovapd %xmm6, %xmm14\0Amovapd %xmm6, %xmm15\0Aaddpd %xmm7, %xmm14\0Asubpd %xmm7, %xmm15\0Amovapd %xmm8, %xmm0\0Amovapd %xmm8, %xmm2\0Aaddpd %xmm10, %xmm0\0Asubpd %xmm10, %xmm2\0Amovapd %xmm9, %xmm1\0Amovapd %xmm9, %xmm3\0Aaddpd %xmm11, %xmm1\0Asubpd %xmm11, %xmm3\0Amovapd %xmm12, %xmm4\0Amovapd %xmm12, %xmm6\0Aaddpd %xmm14, %xmm4\0Asubpd %xmm14, %xmm6\0Amovapd %xmm13, %xmm5\0Amovapd %xmm13, %xmm7\0Aaddpd %xmm15, %xmm5\0Asubpd %xmm15, %xmm7\0Amovapd %xmm0, %xmm8\0Amovapd %xmm0, %xmm12\0Aaddpd %xmm4, %xmm8\0Asubpd %xmm4, %xmm12\0Amovapd %xmm1, %xmm9\0Amovapd %xmm1, %xmm13\0Aaddpd %xmm5, %xmm9\0Asubpd %xmm5, %xmm13\0Amovapd %xmm2, %xmm10\0Amovapd %xmm2, %xmm14\0Aaddpd %xmm6, %xmm10\0Asubpd %xmm6, %xmm14\0Amovapd %xmm3, %xmm11\0Amovapd %xmm3, %xmm15\0Aaddpd %xmm7, %xmm11\0Asubpd %xmm7, %xmm15\0Amovupd %xmm8, ($0)\0Amovupd %xmm9, ($1)\0Amovupd %xmm10, ($2)\0Amovupd %xmm11, ($3)\0Amovupd %xmm12, ($4)\0Amovupd %xmm13, ($5)\0Amovupd %xmm14, ($6)\0Amovupd %xmm15, ($7)\0A", "r,r,r,r,r,r,r,r,~{xmm0},~{xmm1},~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{memory},~{dirflag},~{fpsr},~{flags}"(double* %98, double* %99, double* %100, double* %101, double* %102, double* %103, double* %104, double* %105)
%106 = add nuw nsw i64 %97, 2
%107 = icmp ult i64 %97, 16382
br i1 %107, label %96, label %140
108: ; preds = %2
tail call void @helper_double_22_recursive(double* %0, i32 17)
%109 = getelementptr inbounds double, double* %0, i64 131072
tail call void @helper_double_22_recursive(double* %109, i32 17)
%110 = getelementptr inbounds double, double* %0, i64 262144
tail call void @helper_double_22_recursive(double* %110, i32 17)
%111 = getelementptr inbounds double, double* %0, i64 393216
tail call void @helper_double_22_recursive(double* %111, i32 17)
%112 = getelementptr inbounds double, double* %0, i64 524288
tail call void @helper_double_22_recursive(double* %112, i32 17)
%113 = getelementptr inbounds double, double* %0, i64 655360
tail call void @helper_double_22_recursive(double* %113, i32 17)
%114 = getelementptr inbounds double, double* %0, i64 786432
tail call void @helper_double_22_recursive(double* %114, i32 17)
%115 = getelementptr inbounds double, double* %0, i64 917504
tail call void @helper_double_22_recursive(double* %115, i32 17)
br label %116
116: ; preds = %108, %116
%117 = phi i64 [ 0, %108 ], [ %126, %116 ]
%118 = getelementptr inbounds double, double* %0, i64 %117
%119 = getelementptr inbounds double, double* %118, i64 131072
%120 = getelementptr inbounds double, double* %118, i64 262144
%121 = getelementptr inbounds double, double* %118, i64 393216
%122 = getelementptr inbounds double, double* %118, i64 524288
%123 = getelementptr inbounds double, double* %118, i64 655360
%124 = getelementptr inbounds double, double* %118, i64 786432
%125 = getelementptr inbounds double, double* %118, i64 917504
tail call void asm sideeffect "movupd ($0), %xmm0\0Amovupd ($1), %xmm1\0Amovupd ($2), %xmm2\0Amovupd ($3), %xmm3\0Amovupd ($4), %xmm4\0Amovupd ($5), %xmm5\0Amovupd ($6), %xmm6\0Amovupd ($7), %xmm7\0Amovapd %xmm0, %xmm8\0Amovapd %xmm0, %xmm9\0Aaddpd %xmm1, %xmm8\0Asubpd %xmm1, %xmm9\0Amovapd %xmm2, %xmm10\0Amovapd %xmm2, %xmm11\0Aaddpd %xmm3, %xmm10\0Asubpd %xmm3, %xmm11\0Amovapd %xmm4, %xmm12\0Amovapd %xmm4, %xmm13\0Aaddpd %xmm5, %xmm12\0Asubpd %xmm5, %xmm13\0Amovapd %xmm6, %xmm14\0Amovapd %xmm6, %xmm15\0Aaddpd %xmm7, %xmm14\0Asubpd %xmm7, %xmm15\0Amovapd %xmm8, %xmm0\0Amovapd %xmm8, %xmm2\0Aaddpd %xmm10, %xmm0\0Asubpd %xmm10, %xmm2\0Amovapd %xmm9, %xmm1\0Amovapd %xmm9, %xmm3\0Aaddpd %xmm11, %xmm1\0Asubpd %xmm11, %xmm3\0Amovapd %xmm12, %xmm4\0Amovapd %xmm12, %xmm6\0Aaddpd %xmm14, %xmm4\0Asubpd %xmm14, %xmm6\0Amovapd %xmm13, %xmm5\0Amovapd %xmm13, %xmm7\0Aaddpd %xmm15, %xmm5\0Asubpd %xmm15, %xmm7\0Amovapd %xmm0, %xmm8\0Amovapd %xmm0, %xmm12\0Aaddpd %xmm4, %xmm8\0Asubpd %xmm4, %xmm12\0Amovapd %xmm1, %xmm9\0Amovapd %xmm1, %xmm13\0Aaddpd %xmm5, %xmm9\0Asubpd %xmm5, %xmm13\0Amovapd %xmm2, %xmm10\0Amovapd %xmm2, %xmm14\0Aaddpd %xmm6, %xmm10\0Asubpd %xmm6, %xmm14\0Amovapd %xmm3, %xmm11\0Amovapd %xmm3, %xmm15\0Aaddpd %xmm7, %xmm11\0Asubpd %xmm7, %xmm15\0Amovupd %xmm8, ($0)\0Amovupd %xmm9, ($1)\0Amovupd %xmm10, ($2)\0Amovupd %xmm11, ($3)\0Amovupd %xmm12, ($4)\0Amovupd %xmm13, ($5)\0Amovupd %xmm14, ($6)\0Amovupd %xmm15, ($7)\0A", "r,r,r,r,r,r,r,r,~{xmm0},~{xmm1},~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{memory},~{dirflag},~{fpsr},~{flags}"(double* %118, double* %119, double* %120, double* %121, double* %122, double* %123, double* %124, double* %125)
%126 = add nuw nsw i64 %117, 2
%127 = icmp ult i64 %117, 131070
br i1 %127, label %116, label %140
128: ; preds = %2
tail call void @helper_double_22_recursive(double* %0, i32 20)
%129 = getelementptr inbounds double, double* %0, i64 1048576
tail call void @helper_double_22_recursive(double* %129, i32 20)
%130 = getelementptr inbounds double, double* %0, i64 2097152
tail call void @helper_double_22_recursive(double* %130, i32 20)
%131 = getelementptr inbounds double, double* %0, i64 3145728
tail call void @helper_double_22_recursive(double* %131, i32 20)
br label %132
132: ; preds = %128, %132
%133 = phi i64 [ 0, %128 ], [ %138, %132 ]
%134 = getelementptr inbounds double, double* %0, i64 %133
%135 = getelementptr inbounds double, double* %134, i64 1048576
%136 = getelementptr inbounds double, double* %134, i64 2097152
%137 = getelementptr inbounds double, double* %134, i64 3145728
tail call void asm sideeffect "movupd ($0), %xmm0\0Amovupd ($1), %xmm1\0Amovupd ($2), %xmm2\0Amovupd ($3), %xmm3\0Amovapd %xmm0, %xmm8\0Amovapd %xmm0, %xmm9\0Aaddpd %xmm1, %xmm8\0Asubpd %xmm1, %xmm9\0Amovapd %xmm2, %xmm10\0Amovapd %xmm2, %xmm11\0Aaddpd %xmm3, %xmm10\0Asubpd %xmm3, %xmm11\0Amovapd %xmm8, %xmm0\0Amovapd %xmm8, %xmm2\0Aaddpd %xmm10, %xmm0\0Asubpd %xmm10, %xmm2\0Amovapd %xmm9, %xmm1\0Amovapd %xmm9, %xmm3\0Aaddpd %xmm11, %xmm1\0Asubpd %xmm11, %xmm3\0Amovupd %xmm0, ($0)\0Amovupd %xmm1, ($1)\0Amovupd %xmm2, ($2)\0Amovupd %xmm3, ($3)\0A", "r,r,r,r,~{xmm0},~{xmm1},~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{memory},~{dirflag},~{fpsr},~{flags}"(double* %134, double* %135, double* %136, double* %137)
%138 = add nuw nsw i64 %133, 2
%139 = icmp ult i64 %133, 1048574
br i1 %139, label %132, label %140
140: ; preds = %132, %116, %96, %76, %56, %36, %3, %26, %2
ret void
}