void helper_double_28_recursive(double *buf, int depth) {
  if (depth == 14) {
    for (int j = 0; j < 16384; j += 16) {
      for (int k = 0; k < 2; 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"
            "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 %%xmm2, %%xmm8\n"
            "haddpd %%xmm8, %%xmm8\n"
            "movapd %%xmm2, %%xmm9\n"
            "hsubpd %%xmm9, %%xmm9\n"
            "blendpd $1, %%xmm8, %%xmm9\n"
            "movapd %%xmm9, %%xmm2\n"
            "movapd %%xmm3, %%xmm8\n"
            "haddpd %%xmm8, %%xmm8\n"
            "movapd %%xmm3, %%xmm9\n"
            "hsubpd %%xmm9, %%xmm9\n"
            "blendpd $1, %%xmm8, %%xmm9\n"
            "movapd %%xmm9, %%xmm3\n"
            "movapd %%xmm4, %%xmm8\n"
            "haddpd %%xmm8, %%xmm8\n"
            "movapd %%xmm4, %%xmm9\n"
            "hsubpd %%xmm9, %%xmm9\n"
            "blendpd $1, %%xmm8, %%xmm9\n"
            "movapd %%xmm9, %%xmm4\n"
            "movapd %%xmm5, %%xmm8\n"
            "haddpd %%xmm8, %%xmm8\n"
            "movapd %%xmm5, %%xmm9\n"
            "hsubpd %%xmm9, %%xmm9\n"
            "blendpd $1, %%xmm8, %%xmm9\n"
            "movapd %%xmm9, %%xmm5\n"
            "movapd %%xmm6, %%xmm8\n"
            "haddpd %%xmm8, %%xmm8\n"
            "movapd %%xmm6, %%xmm9\n"
            "hsubpd %%xmm9, %%xmm9\n"
            "blendpd $1, %%xmm8, %%xmm9\n"
            "movapd %%xmm9, %%xmm6\n"
            "movapd %%xmm7, %%xmm8\n"
            "haddpd %%xmm8, %%xmm8\n"
            "movapd %%xmm7, %%xmm9\n"
            "hsubpd %%xmm9, %%xmm9\n"
            "blendpd $1, %%xmm8, %%xmm9\n"
            "movapd %%xmm9, %%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 + 2), "r"(buf + j + k + 4), "r"(buf + j + k + 6),
            "r"(buf + j + k + 8), "r"(buf + j + k + 10), "r"(buf + j + k + 12),
            "r"(buf + j + k + 14)
            : "%xmm0", "%xmm1", "%xmm2", "%xmm3", "%xmm4", "%xmm5", "%xmm6",
              "%xmm7", "%xmm8", "%xmm9", "%xmm10", "%xmm11", "%xmm12", "%xmm13",
              "%xmm14", "%xmm15", "memory");
      }
    }
    for (int j = 0; j < 16384; j += 128) {
      for (int k = 0; k < 16; 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 + 16), "r"(buf + j + k + 32), "r"(buf + j + k + 48),
            "r"(buf + j + k + 64), "r"(buf + j + k + 80), "r"(buf + j + k + 96),
            "r"(buf + j + k + 112)
            : "%xmm0", "%xmm1", "%xmm2", "%xmm3", "%xmm4", "%xmm5", "%xmm6",
              "%xmm7", "%xmm8", "%xmm9", "%xmm10", "%xmm11", "%xmm12", "%xmm13",
              "%xmm14", "%xmm15", "memory");
      }
    }
    for (int j = 0; j < 16384; j += 1024) {
      for (int k = 0; k < 128; 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 + 128), "r"(buf + j + k + 256),
                         "r"(buf + j + k + 384), "r"(buf + j + k + 512),
                         "r"(buf + j + k + 640), "r"(buf + j + k + 768),
                         "r"(buf + j + k + 896)
                         : "%xmm0", "%xmm1", "%xmm2", "%xmm3", "%xmm4", "%xmm5",
                           "%xmm6", "%xmm7", "%xmm8", "%xmm9", "%xmm10",
                           "%xmm11", "%xmm12", "%xmm13", "%xmm14", "%xmm15",
                           "memory");
      }
    }
    for (int j = 0; j < 16384; j += 8192) {
      for (int k = 0; k < 1024; 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 + 1024), "r"(buf + j + k + 2048),
                         "r"(buf + j + k + 3072), "r"(buf + j + k + 4096),
                         "r"(buf + j + k + 5120), "r"(buf + j + k + 6144),
                         "r"(buf + j + k + 7168)
                         : "%xmm0", "%xmm1", "%xmm2", "%xmm3", "%xmm4", "%xmm5",
                           "%xmm6", "%xmm7", "%xmm8", "%xmm9", "%xmm10",
                           "%xmm11", "%xmm12", "%xmm13", "%xmm14", "%xmm15",
                           "memory");
      }
    }
    for (int j = 0; j < 16384; j += 16384) {
      for (int k = 0; k < 8192; k += 2) {
        __asm__ volatile("movupd (%0), %%xmm0\n"
                         "movupd (%1), %%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 + 8192)
                         : "%xmm0", "%xmm1", "%xmm2", "%xmm3", "%xmm4", "%xmm5",
                           "%xmm6", "%xmm7", "%xmm8", "%xmm9", "%xmm10",
                           "%xmm11", "%xmm12", "%xmm13", "%xmm14", "%xmm15",
                           "memory");
      }
    }
    return;
  }
  if (depth == 17) {
    helper_double_28_recursive(buf + 0, 14);
    helper_double_28_recursive(buf + 16384, 14);
    helper_double_28_recursive(buf + 32768, 14);
    helper_double_28_recursive(buf + 49152, 14);
    helper_double_28_recursive(buf + 65536, 14);
    helper_double_28_recursive(buf + 81920, 14);
    helper_double_28_recursive(buf + 98304, 14);
    helper_double_28_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_28_recursive(buf + 0, 17);
    helper_double_28_recursive(buf + 131072, 17);
    helper_double_28_recursive(buf + 262144, 17);
    helper_double_28_recursive(buf + 393216, 17);
    helper_double_28_recursive(buf + 524288, 17);
    helper_double_28_recursive(buf + 655360, 17);
    helper_double_28_recursive(buf + 786432, 17);
    helper_double_28_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 == 23) {
    helper_double_28_recursive(buf + 0, 20);
    helper_double_28_recursive(buf + 1048576, 20);
    helper_double_28_recursive(buf + 2097152, 20);
    helper_double_28_recursive(buf + 3145728, 20);
    helper_double_28_recursive(buf + 4194304, 20);
    helper_double_28_recursive(buf + 5242880, 20);
    helper_double_28_recursive(buf + 6291456, 20);
    helper_double_28_recursive(buf + 7340032, 20);
    for (int j = 0; j < 8388608; j += 8388608) {
      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"
                         "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 + 1048576), "r"(buf + j + k + 2097152),
                         "r"(buf + j + k + 3145728), "r"(buf + j + k + 4194304),
                         "r"(buf + j + k + 5242880), "r"(buf + j + k + 6291456),
                         "r"(buf + j + k + 7340032)
                         : "%xmm0", "%xmm1", "%xmm2", "%xmm3", "%xmm4", "%xmm5",
                           "%xmm6", "%xmm7", "%xmm8", "%xmm9", "%xmm10",
                           "%xmm11", "%xmm12", "%xmm13", "%xmm14", "%xmm15",
                           "memory");
      }
    }
    return;
  }
  if (depth == 26) {
    helper_double_28_recursive(buf + 0, 23);
    helper_double_28_recursive(buf + 8388608, 23);
    helper_double_28_recursive(buf + 16777216, 23);
    helper_double_28_recursive(buf + 25165824, 23);
    helper_double_28_recursive(buf + 33554432, 23);
    helper_double_28_recursive(buf + 41943040, 23);
    helper_double_28_recursive(buf + 50331648, 23);
    helper_double_28_recursive(buf + 58720256, 23);
    for (int j = 0; j < 67108864; j += 67108864) {
      for (int k = 0; k < 8388608; 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 + 8388608), "r"(buf + j + k + 16777216),
            "r"(buf + j + k + 25165824), "r"(buf + j + k + 33554432),
            "r"(buf + j + k + 41943040), "r"(buf + j + k + 50331648),
            "r"(buf + j + k + 58720256)
            : "%xmm0", "%xmm1", "%xmm2", "%xmm3", "%xmm4", "%xmm5", "%xmm6",
              "%xmm7", "%xmm8", "%xmm9", "%xmm10", "%xmm11", "%xmm12", "%xmm13",
              "%xmm14", "%xmm15", "memory");
      }
    }
    return;
  }
  if (depth == 28) {
    helper_double_28_recursive(buf + 0, 26);
    helper_double_28_recursive(buf + 67108864, 26);
    helper_double_28_recursive(buf + 134217728, 26);
    helper_double_28_recursive(buf + 201326592, 26);
    for (int j = 0; j < 268435456; j += 268435456) {
      for (int k = 0; k < 67108864; 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 + 67108864), "r"(buf + j + k + 134217728),
            "r"(buf + j + k + 201326592)
            : "%xmm0", "%xmm1", "%xmm2", "%xmm3", "%xmm4", "%xmm5", "%xmm6",
              "%xmm7", "%xmm8", "%xmm9", "%xmm10", "%xmm11", "%xmm12", "%xmm13",
              "%xmm14", "%xmm15", "memory");
      }
    }
    return;
  }
}


x86 assembly (clang, -O0):
<helper_double_28_recursive>:
push   %rbp
mov    %rsp,%rbp
sub    $0x60,%rsp
mov    %rdi,-0x8(%rbp)
mov    %esi,-0xc(%rbp)
cmpl   $0xe,-0xc(%rbp)
jne    1cd9 <helper_double_28_recursive+0xbc9>
movl   $0x0,-0x10(%rbp)
cmpl   $0x4000,-0x10(%rbp)
jge    1496 <helper_double_28_recursive+0x386>
movl   $0x0,-0x14(%rbp)
cmpl   $0x2,-0x14(%rbp)
jge    1483 <helper_double_28_recursive+0x373>
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
mov    -0x8(%rbp),%rdx
movslq -0x10(%rbp),%rsi
shl    $0x3,%rsi
add    %rsi,%rdx
movslq -0x14(%rbp),%rsi
shl    $0x3,%rsi
add    %rsi,%rdx
add    $0x20,%rdx
mov    -0x8(%rbp),%rsi
movslq -0x10(%rbp),%rdi
shl    $0x3,%rdi
add    %rdi,%rsi
movslq -0x14(%rbp),%rdi
shl    $0x3,%rdi
add    %rdi,%rsi
add    $0x30,%rsi
mov    -0x8(%rbp),%rdi
movslq -0x10(%rbp),%r8
shl    $0x3,%r8
add    %r8,%rdi
movslq -0x14(%rbp),%r8
shl    $0x3,%r8
add    %r8,%rdi
add    $0x40,%rdi
mov    -0x8(%rbp),%r8
movslq -0x10(%rbp),%r9
shl    $0x3,%r9
add    %r9,%r8
movslq -0x14(%rbp),%r9
shl    $0x3,%r9
add    %r9,%r8
add    $0x50,%r8
mov    -0x8(%rbp),%r9
movslq -0x10(%rbp),%r10
shl    $0x3,%r10
add    %r10,%r9
movslq -0x14(%rbp),%r10
shl    $0x3,%r10
add    %r10,%r9
add    $0x60,%r9
mov    -0x8(%rbp),%r10
movslq -0x10(%rbp),%r11
shl    $0x3,%r11
add    %r11,%r10
movslq -0x14(%rbp),%r11
shl    $0x3,%r11
add    %r11,%r10
add    $0x70,%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
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 %xmm2,%xmm8
haddpd %xmm8,%xmm8
movapd %xmm2,%xmm9
hsubpd %xmm9,%xmm9
blendpd $0x1,%xmm8,%xmm9
movapd %xmm9,%xmm2
movapd %xmm3,%xmm8
haddpd %xmm8,%xmm8
movapd %xmm3,%xmm9
hsubpd %xmm9,%xmm9
blendpd $0x1,%xmm8,%xmm9
movapd %xmm9,%xmm3
movapd %xmm4,%xmm8
haddpd %xmm8,%xmm8
movapd %xmm4,%xmm9
hsubpd %xmm9,%xmm9
blendpd $0x1,%xmm8,%xmm9
movapd %xmm9,%xmm4
movapd %xmm5,%xmm8
haddpd %xmm8,%xmm8
movapd %xmm5,%xmm9
hsubpd %xmm9,%xmm9
blendpd $0x1,%xmm8,%xmm9
movapd %xmm9,%xmm5
movapd %xmm6,%xmm8
haddpd %xmm8,%xmm8
movapd %xmm6,%xmm9
hsubpd %xmm9,%xmm9
blendpd $0x1,%xmm8,%xmm9
movapd %xmm9,%xmm6
movapd %xmm7,%xmm8
haddpd %xmm8,%xmm8
movapd %xmm7,%xmm9
hsubpd %xmm9,%xmm9
blendpd $0x1,%xmm8,%xmm9
movapd %xmm9,%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    -0x14(%rbp),%eax
add    $0x2,%eax
mov    %eax,-0x14(%rbp)
jmp    1144 <helper_double_28_recursive+0x34>
jmp    1488 <helper_double_28_recursive+0x378>
mov    -0x10(%rbp),%eax
add    $0x10,%eax
mov    %eax,-0x10(%rbp)
jmp    1130 <helper_double_28_recursive+0x20>
movl   $0x0,-0x18(%rbp)
cmpl   $0x4000,-0x18(%rbp)
jge    171a <helper_double_28_recursive+0x60a>
movl   $0x0,-0x1c(%rbp)
cmpl   $0x10,-0x1c(%rbp)
jge    1705 <helper_double_28_recursive+0x5f5>
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    $0x80,%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    $0x100,%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    $0x180,%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    $0x200,%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    $0x280,%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    $0x300,%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    $0x380,%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    14b1 <helper_double_28_recursive+0x3a1>
jmp    170a <helper_double_28_recursive+0x5fa>
mov    -0x18(%rbp),%eax
add    $0x80,%eax
mov    %eax,-0x18(%rbp)
jmp    149d <helper_double_28_recursive+0x38d>
movl   $0x0,-0x20(%rbp)
cmpl   $0x4000,-0x20(%rbp)
jge    19a1 <helper_double_28_recursive+0x891>
movl   $0x0,-0x24(%rbp)
cmpl   $0x80,-0x24(%rbp)
jge    198c <helper_double_28_recursive+0x87c>
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    $0x400,%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    $0x800,%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    $0xc00,%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    $0x1000,%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    $0x1400,%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    $0x1800,%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    $0x1c00,%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    1735 <helper_double_28_recursive+0x625>
jmp    1991 <helper_double_28_recursive+0x881>
mov    -0x20(%rbp),%eax
add    $0x400,%eax
mov    %eax,-0x20(%rbp)
jmp    1721 <helper_double_28_recursive+0x611>
movl   $0x0,-0x28(%rbp)
cmpl   $0x4000,-0x28(%rbp)
jge    1c28 <helper_double_28_recursive+0xb18>
movl   $0x0,-0x2c(%rbp)
cmpl   $0x400,-0x2c(%rbp)
jge    1c13 <helper_double_28_recursive+0xb03>
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    $0x2000,%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    $0x4000,%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    $0x6000,%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    $0x8000,%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    $0xa000,%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    $0xc000,%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    $0xe000,%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    19bc <helper_double_28_recursive+0x8ac>
jmp    1c18 <helper_double_28_recursive+0xb08>
mov    -0x28(%rbp),%eax
add    $0x2000,%eax
mov    %eax,-0x28(%rbp)
jmp    19a8 <helper_double_28_recursive+0x898>
movl   $0x0,-0x30(%rbp)
cmpl   $0x4000,-0x30(%rbp)
jge    1cd4 <helper_double_28_recursive+0xbc4>
movl   $0x0,-0x34(%rbp)
cmpl   $0x2000,-0x34(%rbp)
jge    1cbf <helper_double_28_recursive+0xbaf>
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    $0x10000,%rcx
movupd (%rax),%xmm0
movupd (%rcx),%xmm1
movapd %xmm0,%xmm8
movapd %xmm0,%xmm9
addpd  %xmm1,%xmm8
subpd  %xmm1,%xmm9
movupd %xmm8,(%rax)
movupd %xmm9,(%rcx)
mov    -0x34(%rbp),%eax
add    $0x2,%eax
mov    %eax,-0x34(%rbp)
jmp    1c43 <helper_double_28_recursive+0xb33>
jmp    1cc4 <helper_double_28_recursive+0xbb4>
mov    -0x30(%rbp),%eax
add    $0x4000,%eax
mov    %eax,-0x30(%rbp)
jmp    1c2f <helper_double_28_recursive+0xb1f>
jmp    2b49 <helper_double_28_recursive+0x1a39>
cmpl   $0x11,-0xc(%rbp)
jne    2010 <helper_double_28_recursive+0xf00>
mov    -0x8(%rbp),%rdi
mov    $0xe,%esi
call   1030 <helper_double_28_recursive@plt>
mov    -0x8(%rbp),%rdi
add    $0x20000,%rdi
mov    $0xe,%esi
call   1030 <helper_double_28_recursive@plt>
mov    -0x8(%rbp),%rdi
add    $0x40000,%rdi
mov    $0xe,%esi
call   1030 <helper_double_28_recursive@plt>
mov    -0x8(%rbp),%rdi
add    $0x60000,%rdi
mov    $0xe,%esi
call   1030 <helper_double_28_recursive@plt>
mov    -0x8(%rbp),%rdi
add    $0x80000,%rdi
mov    $0xe,%esi
call   1030 <helper_double_28_recursive@plt>
mov    -0x8(%rbp),%rdi
add    $0xa0000,%rdi
mov    $0xe,%esi
call   1030 <helper_double_28_recursive@plt>
mov    -0x8(%rbp),%rdi
add    $0xc0000,%rdi
mov    $0xe,%esi
call   1030 <helper_double_28_recursive@plt>
mov    -0x8(%rbp),%rdi
add    $0xe0000,%rdi
mov    $0xe,%esi
call   1030 <helper_double_28_recursive@plt>
movl   $0x0,-0x38(%rbp)
cmpl   $0x20000,-0x38(%rbp)
jge    200b <helper_double_28_recursive+0xefb>
movl   $0x0,-0x3c(%rbp)
cmpl   $0x4000,-0x3c(%rbp)
jge    1ff6 <helper_double_28_recursive+0xee6>
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    1d9f <helper_double_28_recursive+0xc8f>
jmp    1ffb <helper_double_28_recursive+0xeeb>
mov    -0x38(%rbp),%eax
add    $0x20000,%eax
mov    %eax,-0x38(%rbp)
jmp    1d8b <helper_double_28_recursive+0xc7b>
jmp    2b49 <helper_double_28_recursive+0x1a39>
cmpl   $0x14,-0xc(%rbp)
jne    2347 <helper_double_28_recursive+0x1237>
mov    -0x8(%rbp),%rdi
mov    $0x11,%esi
call   1030 <helper_double_28_recursive@plt>
mov    -0x8(%rbp),%rdi
add    $0x100000,%rdi
mov    $0x11,%esi
call   1030 <helper_double_28_recursive@plt>
mov    -0x8(%rbp),%rdi
add    $0x200000,%rdi
mov    $0x11,%esi
call   1030 <helper_double_28_recursive@plt>
mov    -0x8(%rbp),%rdi
add    $0x300000,%rdi
mov    $0x11,%esi
call   1030 <helper_double_28_recursive@plt>
mov    -0x8(%rbp),%rdi
add    $0x400000,%rdi
mov    $0x11,%esi
call   1030 <helper_double_28_recursive@plt>
mov    -0x8(%rbp),%rdi
add    $0x500000,%rdi
mov    $0x11,%esi
call   1030 <helper_double_28_recursive@plt>
mov    -0x8(%rbp),%rdi
add    $0x600000,%rdi
mov    $0x11,%esi
call   1030 <helper_double_28_recursive@plt>
mov    -0x8(%rbp),%rdi
add    $0x700000,%rdi
mov    $0x11,%esi
call   1030 <helper_double_28_recursive@plt>
movl   $0x0,-0x40(%rbp)
cmpl   $0x100000,-0x40(%rbp)
jge    2342 <helper_double_28_recursive+0x1232>
movl   $0x0,-0x44(%rbp)
cmpl   $0x20000,-0x44(%rbp)
jge    232d <helper_double_28_recursive+0x121d>
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    20d6 <helper_double_28_recursive+0xfc6>
jmp    2332 <helper_double_28_recursive+0x1222>
mov    -0x40(%rbp),%eax
add    $0x100000,%eax
mov    %eax,-0x40(%rbp)
jmp    20c2 <helper_double_28_recursive+0xfb2>
jmp    2b49 <helper_double_28_recursive+0x1a39>
cmpl   $0x17,-0xc(%rbp)
jne    267e <helper_double_28_recursive+0x156e>
mov    -0x8(%rbp),%rdi
mov    $0x14,%esi
call   1030 <helper_double_28_recursive@plt>
mov    -0x8(%rbp),%rdi
add    $0x800000,%rdi
mov    $0x14,%esi
call   1030 <helper_double_28_recursive@plt>
mov    -0x8(%rbp),%rdi
add    $0x1000000,%rdi
mov    $0x14,%esi
call   1030 <helper_double_28_recursive@plt>
mov    -0x8(%rbp),%rdi
add    $0x1800000,%rdi
mov    $0x14,%esi
call   1030 <helper_double_28_recursive@plt>
mov    -0x8(%rbp),%rdi
add    $0x2000000,%rdi
mov    $0x14,%esi
call   1030 <helper_double_28_recursive@plt>
mov    -0x8(%rbp),%rdi
add    $0x2800000,%rdi
mov    $0x14,%esi
call   1030 <helper_double_28_recursive@plt>
mov    -0x8(%rbp),%rdi
add    $0x3000000,%rdi
mov    $0x14,%esi
call   1030 <helper_double_28_recursive@plt>
mov    -0x8(%rbp),%rdi
add    $0x3800000,%rdi
mov    $0x14,%esi
call   1030 <helper_double_28_recursive@plt>
movl   $0x0,-0x48(%rbp)
cmpl   $0x800000,-0x48(%rbp)
jge    2679 <helper_double_28_recursive+0x1569>
movl   $0x0,-0x4c(%rbp)
cmpl   $0x100000,-0x4c(%rbp)
jge    2664 <helper_double_28_recursive+0x1554>
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
mov    -0x8(%rbp),%rdi
movslq -0x48(%rbp),%r8
shl    $0x3,%r8
add    %r8,%rdi
movslq -0x4c(%rbp),%r8
shl    $0x3,%r8
add    %r8,%rdi
add    $0x2000000,%rdi
mov    -0x8(%rbp),%r8
movslq -0x48(%rbp),%r9
shl    $0x3,%r9
add    %r9,%r8
movslq -0x4c(%rbp),%r9
shl    $0x3,%r9
add    %r9,%r8
add    $0x2800000,%r8
mov    -0x8(%rbp),%r9
movslq -0x48(%rbp),%r10
shl    $0x3,%r10
add    %r10,%r9
movslq -0x4c(%rbp),%r10
shl    $0x3,%r10
add    %r10,%r9
add    $0x3000000,%r9
mov    -0x8(%rbp),%r10
movslq -0x48(%rbp),%r11
shl    $0x3,%r11
add    %r11,%r10
movslq -0x4c(%rbp),%r11
shl    $0x3,%r11
add    %r11,%r10
add    $0x3800000,%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    -0x4c(%rbp),%eax
add    $0x2,%eax
mov    %eax,-0x4c(%rbp)
jmp    240d <helper_double_28_recursive+0x12fd>
jmp    2669 <helper_double_28_recursive+0x1559>
mov    -0x48(%rbp),%eax
add    $0x800000,%eax
mov    %eax,-0x48(%rbp)
jmp    23f9 <helper_double_28_recursive+0x12e9>
jmp    2b49 <helper_double_28_recursive+0x1a39>
cmpl   $0x1a,-0xc(%rbp)
jne    29b5 <helper_double_28_recursive+0x18a5>
mov    -0x8(%rbp),%rdi
mov    $0x17,%esi
call   1030 <helper_double_28_recursive@plt>
mov    -0x8(%rbp),%rdi
add    $0x4000000,%rdi
mov    $0x17,%esi
call   1030 <helper_double_28_recursive@plt>
mov    -0x8(%rbp),%rdi
add    $0x8000000,%rdi
mov    $0x17,%esi
call   1030 <helper_double_28_recursive@plt>
mov    -0x8(%rbp),%rdi
add    $0xc000000,%rdi
mov    $0x17,%esi
call   1030 <helper_double_28_recursive@plt>
mov    -0x8(%rbp),%rdi
add    $0x10000000,%rdi
mov    $0x17,%esi
call   1030 <helper_double_28_recursive@plt>
mov    -0x8(%rbp),%rdi
add    $0x14000000,%rdi
mov    $0x17,%esi
call   1030 <helper_double_28_recursive@plt>
mov    -0x8(%rbp),%rdi
add    $0x18000000,%rdi
mov    $0x17,%esi
call   1030 <helper_double_28_recursive@plt>
mov    -0x8(%rbp),%rdi
add    $0x1c000000,%rdi
mov    $0x17,%esi
call   1030 <helper_double_28_recursive@plt>
movl   $0x0,-0x50(%rbp)
cmpl   $0x4000000,-0x50(%rbp)
jge    29b0 <helper_double_28_recursive+0x18a0>
movl   $0x0,-0x54(%rbp)
cmpl   $0x800000,-0x54(%rbp)
jge    299b <helper_double_28_recursive+0x188b>
mov    -0x8(%rbp),%rax
movslq -0x50(%rbp),%rcx
shl    $0x3,%rcx
add    %rcx,%rax
movslq -0x54(%rbp),%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    -0x8(%rbp),%rcx
movslq -0x50(%rbp),%rdx
shl    $0x3,%rdx
add    %rdx,%rcx
movslq -0x54(%rbp),%rdx
shl    $0x3,%rdx
add    %rdx,%rcx
add    $0x4000000,%rcx
mov    -0x8(%rbp),%rdx
movslq -0x50(%rbp),%rsi
shl    $0x3,%rsi
add    %rsi,%rdx
movslq -0x54(%rbp),%rsi
shl    $0x3,%rsi
add    %rsi,%rdx
add    $0x8000000,%rdx
mov    -0x8(%rbp),%rsi
movslq -0x50(%rbp),%rdi
shl    $0x3,%rdi
add    %rdi,%rsi
movslq -0x54(%rbp),%rdi
shl    $0x3,%rdi
add    %rdi,%rsi
add    $0xc000000,%rsi
mov    -0x8(%rbp),%rdi
movslq -0x50(%rbp),%r8
shl    $0x3,%r8
add    %r8,%rdi
movslq -0x54(%rbp),%r8
shl    $0x3,%r8
add    %r8,%rdi
add    $0x10000000,%rdi
mov    -0x8(%rbp),%r8
movslq -0x50(%rbp),%r9
shl    $0x3,%r9
add    %r9,%r8
movslq -0x54(%rbp),%r9
shl    $0x3,%r9
add    %r9,%r8
add    $0x14000000,%r8
mov    -0x8(%rbp),%r9
movslq -0x50(%rbp),%r10
shl    $0x3,%r10
add    %r10,%r9
movslq -0x54(%rbp),%r10
shl    $0x3,%r10
add    %r10,%r9
add    $0x18000000,%r9
mov    -0x8(%rbp),%r10
movslq -0x50(%rbp),%r11
shl    $0x3,%r11
add    %r11,%r10
movslq -0x54(%rbp),%r11
shl    $0x3,%r11
add    %r11,%r10
add    $0x1c000000,%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    -0x54(%rbp),%eax
add    $0x2,%eax
mov    %eax,-0x54(%rbp)
jmp    2744 <helper_double_28_recursive+0x1634>
jmp    29a0 <helper_double_28_recursive+0x1890>
mov    -0x50(%rbp),%eax
add    $0x4000000,%eax
mov    %eax,-0x50(%rbp)
jmp    2730 <helper_double_28_recursive+0x1620>
jmp    2b49 <helper_double_28_recursive+0x1a39>
cmpl   $0x1c,-0xc(%rbp)
jne    2b49 <helper_double_28_recursive+0x1a39>
mov    -0x8(%rbp),%rdi
mov    $0x1a,%esi
call   1030 <helper_double_28_recursive@plt>
mov    -0x8(%rbp),%rdi
add    $0x20000000,%rdi
mov    $0x1a,%esi
call   1030 <helper_double_28_recursive@plt>
mov    -0x8(%rbp),%rdi
add    $0x40000000,%rdi
mov    $0x1a,%esi
call   1030 <helper_double_28_recursive@plt>
mov    -0x8(%rbp),%rdi
add    $0x60000000,%rdi
mov    $0x1a,%esi
call   1030 <helper_double_28_recursive@plt>
movl   $0x0,-0x58(%rbp)
cmpl   $0x10000000,-0x58(%rbp)
jge    2b44 <helper_double_28_recursive+0x1a34>
movl   $0x0,-0x5c(%rbp)
cmpl   $0x4000000,-0x5c(%rbp)
jge    2b2f <helper_double_28_recursive+0x1a1f>
mov    -0x8(%rbp),%rax
movslq -0x58(%rbp),%rcx
shl    $0x3,%rcx
add    %rcx,%rax
movslq -0x5c(%rbp),%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    -0x8(%rbp),%rcx
movslq -0x58(%rbp),%rdx
shl    $0x3,%rdx
add    %rdx,%rcx
movslq -0x5c(%rbp),%rdx
shl    $0x3,%rdx
add    %rdx,%rcx
add    $0x20000000,%rcx
mov    -0x8(%rbp),%rdx
movslq -0x58(%rbp),%rsi
shl    $0x3,%rsi
add    %rsi,%rdx
movslq -0x5c(%rbp),%rsi
shl    $0x3,%rsi
add    %rsi,%rdx
add    $0x40000000,%rdx
mov    -0x8(%rbp),%rsi
movslq -0x58(%rbp),%rdi
shl    $0x3,%rdi
add    %rdi,%rsi
movslq -0x5c(%rbp),%rdi
shl    $0x3,%rdi
add    %rdi,%rsi
add    $0x60000000,%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    -0x5c(%rbp),%eax
add    $0x2,%eax
mov    %eax,-0x5c(%rbp)
jmp    2a27 <helper_double_28_recursive+0x1917>
jmp    2b34 <helper_double_28_recursive+0x1a24>
mov    -0x58(%rbp),%eax
add    $0x10000000,%eax
mov    %eax,-0x58(%rbp)
jmp    2a13 <helper_double_28_recursive+0x1903>
jmp    2b49 <helper_double_28_recursive+0x1a39>
add    $0x60,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<helper_double_28_recursive>:
push   %r15
push   %r14
push   %rbx
add    $0xfffffff2,%esi
cmp    $0xe,%esi
ja     2dfb <helper_double_28_recursive+0x1ceb>
mov    %rdi,%r15
lea    0x1ed5(%rip),%rax
movslq (%rax,%rsi,4),%rcx
add    %rax,%rcx
jmp    *%rcx
mov    $0xfffffffffffffff0,%rax
mov    %r15,%rcx
xchg   %ax,%ax
lea    0x10(%rcx),%r8
lea    0x20(%rcx),%r9
lea    0x30(%rcx),%r10
lea    0x40(%rcx),%r11
lea    0x50(%rcx),%rsi
lea    0x60(%rcx),%rdi
lea    0x70(%rcx),%rdx
movupd (%rcx),%xmm0
movupd (%r8),%xmm1
movupd (%r9),%xmm2
movupd (%r10),%xmm3
movupd (%r11),%xmm4
movupd (%rsi),%xmm5
movupd (%rdi),%xmm6
movupd (%rdx),%xmm7
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 %xmm2,%xmm8
haddpd %xmm8,%xmm8
movapd %xmm2,%xmm9
hsubpd %xmm9,%xmm9
blendpd $0x1,%xmm8,%xmm9
movapd %xmm9,%xmm2
movapd %xmm3,%xmm8
haddpd %xmm8,%xmm8
movapd %xmm3,%xmm9
hsubpd %xmm9,%xmm9
blendpd $0x1,%xmm8,%xmm9
movapd %xmm9,%xmm3
movapd %xmm4,%xmm8
haddpd %xmm8,%xmm8
movapd %xmm4,%xmm9
hsubpd %xmm9,%xmm9
blendpd $0x1,%xmm8,%xmm9
movapd %xmm9,%xmm4
movapd %xmm5,%xmm8
haddpd %xmm8,%xmm8
movapd %xmm5,%xmm9
hsubpd %xmm9,%xmm9
blendpd $0x1,%xmm8,%xmm9
movapd %xmm9,%xmm5
movapd %xmm6,%xmm8
haddpd %xmm8,%xmm8
movapd %xmm6,%xmm9
hsubpd %xmm9,%xmm9
blendpd $0x1,%xmm8,%xmm9
movapd %xmm9,%xmm6
movapd %xmm7,%xmm8
haddpd %xmm8,%xmm8
movapd %xmm7,%xmm9
hsubpd %xmm9,%xmm9
blendpd $0x1,%xmm8,%xmm9
movapd %xmm9,%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,(%rcx)
movupd %xmm9,(%r8)
movupd %xmm10,(%r9)
movupd %xmm11,(%r10)
movupd %xmm12,(%r11)
movupd %xmm13,(%rsi)
movupd %xmm14,(%rdi)
movupd %xmm15,(%rdx)
add    $0x10,%rax
sub    $0xffffffffffffff80,%rcx
cmp    $0x3ff0,%rax
jb     1140 <helper_double_28_recursive+0x30>
mov    $0xffffffffffffff80,%r10
mov    %r15,%rcx
cs nopw 0x0(%rax,%rax,1)
lea    0x80(%rcx),%r8
lea    0x100(%rcx),%r9
lea    0x180(%rcx),%r11
lea    0x200(%rcx),%rdx
lea    0x280(%rcx),%rsi
lea    0x300(%rcx),%rax
lea    0x380(%rcx),%rdi
movupd (%rcx),%xmm0
movupd (%r8),%xmm1
movupd (%r9),%xmm2
movupd (%r11),%xmm3
movupd (%rdx),%xmm4
movupd (%rsi),%xmm5
movupd (%rax),%xmm6
movupd (%rdi),%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,(%rcx)
movupd %xmm9,(%r8)
movupd %xmm10,(%r9)
movupd %xmm11,(%r11)
movupd %xmm12,(%rdx)
movupd %xmm13,(%rsi)
movupd %xmm14,(%rax)
movupd %xmm15,(%rdi)
lea    0x10(%rcx),%r8
lea    0x90(%rcx),%r9
lea    0x110(%rcx),%r11
lea    0x190(%rcx),%r14
lea    0x210(%rcx),%rax
lea    0x290(%rcx),%rdx
lea    0x310(%rcx),%rsi
lea    0x390(%rcx),%rdi
movupd (%r8),%xmm0
movupd (%r9),%xmm1
movupd (%r11),%xmm2
movupd (%r14),%xmm3
movupd (%rax),%xmm4
movupd (%rdx),%xmm5
movupd (%rsi),%xmm6
movupd (%rdi),%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,(%r11)
movupd %xmm11,(%r14)
movupd %xmm12,(%rax)
movupd %xmm13,(%rdx)
movupd %xmm14,(%rsi)
movupd %xmm15,(%rdi)
lea    0x20(%rcx),%r8
lea    0xa0(%rcx),%r9
lea    0x120(%rcx),%r11
lea    0x1a0(%rcx),%r14
lea    0x220(%rcx),%rax
lea    0x2a0(%rcx),%rdx
lea    0x320(%rcx),%rsi
lea    0x3a0(%rcx),%rdi
movupd (%r8),%xmm0
movupd (%r9),%xmm1
movupd (%r11),%xmm2
movupd (%r14),%xmm3
movupd (%rax),%xmm4
movupd (%rdx),%xmm5
movupd (%rsi),%xmm6
movupd (%rdi),%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,(%r11)
movupd %xmm11,(%r14)
movupd %xmm12,(%rax)
movupd %xmm13,(%rdx)
movupd %xmm14,(%rsi)
movupd %xmm15,(%rdi)
lea    0x30(%rcx),%r8
lea    0xb0(%rcx),%r9
lea    0x130(%rcx),%r11
lea    0x1b0(%rcx),%r14
lea    0x230(%rcx),%rax
lea    0x2b0(%rcx),%rdx
lea    0x330(%rcx),%rsi
lea    0x3b0(%rcx),%rdi
movupd (%r8),%xmm0
movupd (%r9),%xmm1
movupd (%r11),%xmm2
movupd (%r14),%xmm3
movupd (%rax),%xmm4
movupd (%rdx),%xmm5
movupd (%rsi),%xmm6
movupd (%rdi),%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,(%r11)
movupd %xmm11,(%r14)
movupd %xmm12,(%rax)
movupd %xmm13,(%rdx)
movupd %xmm14,(%rsi)
movupd %xmm15,(%rdi)
lea    0x40(%rcx),%r8
lea    0xc0(%rcx),%r9
lea    0x140(%rcx),%r11
lea    0x1c0(%rcx),%r14
lea    0x240(%rcx),%rax
lea    0x2c0(%rcx),%rdx
lea    0x340(%rcx),%rsi
lea    0x3c0(%rcx),%rdi
movupd (%r8),%xmm0
movupd (%r9),%xmm1
movupd (%r11),%xmm2
movupd (%r14),%xmm3
movupd (%rax),%xmm4
movupd (%rdx),%xmm5
movupd (%rsi),%xmm6
movupd (%rdi),%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,(%r11)
movupd %xmm11,(%r14)
movupd %xmm12,(%rax)
movupd %xmm13,(%rdx)
movupd %xmm14,(%rsi)
movupd %xmm15,(%rdi)
lea    0x50(%rcx),%r8
lea    0xd0(%rcx),%r9
lea    0x150(%rcx),%r11
lea    0x1d0(%rcx),%r14
lea    0x250(%rcx),%rax
lea    0x2d0(%rcx),%rdx
lea    0x350(%rcx),%rsi
lea    0x3d0(%rcx),%rdi
movupd (%r8),%xmm0
movupd (%r9),%xmm1
movupd (%r11),%xmm2
movupd (%r14),%xmm3
movupd (%rax),%xmm4
movupd (%rdx),%xmm5
movupd (%rsi),%xmm6
movupd (%rdi),%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,(%r11)
movupd %xmm11,(%r14)
movupd %xmm12,(%rax)
movupd %xmm13,(%rdx)
movupd %xmm14,(%rsi)
movupd %xmm15,(%rdi)
lea    0x60(%rcx),%r8
lea    0xe0(%rcx),%r9
lea    0x160(%rcx),%r11
lea    0x1e0(%rcx),%r14
lea    0x260(%rcx),%rax
lea    0x2e0(%rcx),%rdx
lea    0x360(%rcx),%rsi
lea    0x3e0(%rcx),%rdi
movupd (%r8),%xmm0
movupd (%r9),%xmm1
movupd (%r11),%xmm2
movupd (%r14),%xmm3
movupd (%rax),%xmm4
movupd (%rdx),%xmm5
movupd (%rsi),%xmm6
movupd (%rdi),%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,(%r11)
movupd %xmm11,(%r14)
movupd %xmm12,(%rax)
movupd %xmm13,(%rdx)
movupd %xmm14,(%rsi)
movupd %xmm15,(%rdi)
lea    0x70(%rcx),%r8
lea    0xf0(%rcx),%r9
lea    0x170(%rcx),%r11
lea    0x1f0(%rcx),%r14
lea    0x270(%rcx),%rax
lea    0x2f0(%rcx),%rdx
lea    0x370(%rcx),%rsi
lea    0x3f0(%rcx),%rdi
movupd (%r8),%xmm0
movupd (%r9),%xmm1
movupd (%r11),%xmm2
movupd (%r14),%xmm3
movupd (%rax),%xmm4
movupd (%rdx),%xmm5
movupd (%rsi),%xmm6
movupd (%rdi),%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,(%r11)
movupd %xmm11,(%r14)
movupd %xmm12,(%rax)
movupd %xmm13,(%rdx)
movupd %xmm14,(%rsi)
movupd %xmm15,(%rdi)
sub    $0xffffffffffffff80,%r10
add    $0x400,%rcx
cmp    $0x3f80,%r10
jb     13c0 <helper_double_28_recursive+0x2b0>
lea    0x1c00(%r15),%r9
xor    %r8d,%r8d
cs nopw 0x0(%rax,%rax,1)
nop
mov    $0xfffffffffffffffe,%rdx
mov    %r9,%rsi
nopw   0x0(%rax,%rax,1)
lea    -0x1c00(%rsi),%r10
lea    -0x1800(%rsi),%r11
lea    -0x1400(%rsi),%r14
lea    -0x1000(%rsi),%rbx
lea    -0xc00(%rsi),%rdi
lea    -0x800(%rsi),%rcx
lea    -0x400(%rsi),%rax
movupd (%r10),%xmm0
movupd (%r11),%xmm1
movupd (%r14),%xmm2
movupd (%rbx),%xmm3
movupd (%rdi),%xmm4
movupd (%rcx),%xmm5
movupd (%rax),%xmm6
movupd (%rsi),%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,(%r10)
movupd %xmm9,(%r11)
movupd %xmm10,(%r14)
movupd %xmm11,(%rbx)
movupd %xmm12,(%rdi)
movupd %xmm13,(%rcx)
movupd %xmm14,(%rax)
movupd %xmm15,(%rsi)
add    $0x2,%rdx
add    $0x10,%rsi
cmp    $0x7e,%rdx
jb     1f80 <helper_double_28_recursive+0xe70>
lea    0x400(%r8),%rdx
add    $0x2000,%r9
cmp    $0x3c00,%r8
mov    %rdx,%r8
jb     1f70 <helper_double_28_recursive+0xe60>
lea    0xe000(%r15),%rax
mov    $0xfffffffffffffffe,%rcx
nopw   0x0(%rax,%rax,1)
lea    -0xe000(%rax),%r8
lea    -0xc000(%rax),%r9
lea    -0xa000(%rax),%r10
lea    -0x8000(%rax),%rbx
lea    -0x6000(%rax),%rdx
lea    -0x4000(%rax),%rsi
lea    -0x2000(%rax),%rdi
movupd (%r8),%xmm0
movupd (%r9),%xmm1
movupd (%r10),%xmm2
movupd (%rbx),%xmm3
movupd (%rdx),%xmm4
movupd (%rsi),%xmm5
movupd (%rdi),%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,(%r8)
movupd %xmm9,(%r9)
movupd %xmm10,(%r10)
movupd %xmm11,(%rbx)
movupd %xmm12,(%rdx)
movupd %xmm13,(%rsi)
movupd %xmm14,(%rdi)
movupd %xmm15,(%rax)
add    $0x2,%rcx
add    $0x10,%rax
cmp    $0x3fe,%rcx
jb     2130 <helper_double_28_recursive+0x1020>
lea    0x10000(%r15),%rax
mov    $0xfffffffffffffffe,%rcx
nop
lea    0x2000(%rax),%r8
lea    0x4000(%rax),%r9
lea    0x6000(%rax),%r10
lea    0x8000(%rax),%rbx
lea    0xa000(%rax),%rdx
lea    0xc000(%rax),%rsi
lea    0xe000(%rax),%rdi
movupd (%rax),%xmm0
movupd (%r8),%xmm1
movupd (%r9),%xmm2
movupd (%r10),%xmm3
movupd (%rbx),%xmm4
movupd (%rdx),%xmm5
movupd (%rsi),%xmm6
movupd (%rdi),%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,(%r8)
movupd %xmm10,(%r9)
movupd %xmm11,(%r10)
movupd %xmm12,(%rbx)
movupd %xmm13,(%rdx)
movupd %xmm14,(%rsi)
movupd %xmm15,(%rdi)
add    $0x2,%rcx
add    $0x10,%rax
cmp    $0x3fe,%rcx
jb     22c0 <helper_double_28_recursive+0x11b0>
mov    $0xfffffffffffffffe,%rax
nopl   0x0(%rax,%rax,1)
lea    0x10000(%r15),%rcx
movupd (%r15),%xmm0
movupd (%rcx),%xmm1
movapd %xmm0,%xmm8
movapd %xmm0,%xmm9
addpd  %xmm1,%xmm8
subpd  %xmm1,%xmm9
movupd %xmm8,(%r15)
movupd %xmm9,(%rcx)
add    $0x2,%rax
add    $0x10,%r15
cmp    $0x1ffe,%rax
jb     2450 <helper_double_28_recursive+0x1340>
jmp    2dfb <helper_double_28_recursive+0x1ceb>
mov    %r15,%rdi
mov    $0xe,%esi
call   1030 <helper_double_28_recursive@plt>
lea    0x20000(%r15),%rdi
mov    $0xe,%esi
call   1030 <helper_double_28_recursive@plt>
lea    0x40000(%r15),%rdi
mov    $0xe,%esi
call   1030 <helper_double_28_recursive@plt>
lea    0x60000(%r15),%rdi
mov    $0xe,%esi
call   1030 <helper_double_28_recursive@plt>
lea    0x80000(%r15),%rdi
mov    $0xe,%esi
call   1030 <helper_double_28_recursive@plt>
lea    0xa0000(%r15),%rdi
mov    $0xe,%esi
call   1030 <helper_double_28_recursive@plt>
lea    0xc0000(%r15),%rdi
mov    $0xe,%esi
call   1030 <helper_double_28_recursive@plt>
add    $0xe0000,%r15
mov    %r15,%rdi
mov    $0xe,%esi
call   1030 <helper_double_28_recursive@plt>
mov    $0xfffffffffffffffe,%rax
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax,%rax,1)
lea    -0xe0000(%r15),%r8
lea    -0xc0000(%r15),%r9
lea    -0xa0000(%r15),%rsi
lea    -0x80000(%r15),%rdi
lea    -0x60000(%r15),%rbx
lea    -0x40000(%r15),%rcx
lea    -0x20000(%r15),%rdx
movupd (%r8),%xmm0
movupd (%r9),%xmm1
movupd (%rsi),%xmm2
movupd (%rdi),%xmm3
movupd (%rbx),%xmm4
movupd (%rcx),%xmm5
movupd (%rdx),%xmm6
movupd (%r15),%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,(%rbx)
movupd %xmm13,(%rcx)
movupd %xmm14,(%rdx)
movupd %xmm15,(%r15)
add    $0x2,%rax
add    $0x10,%r15
cmp    $0x3ffe,%rax
jb     2530 <helper_double_28_recursive+0x1420>
jmp    2dfb <helper_double_28_recursive+0x1ceb>
mov    %r15,%rdi
mov    $0x11,%esi
call   1030 <helper_double_28_recursive@plt>
lea    0x100000(%r15),%rdi
mov    $0x11,%esi
call   1030 <helper_double_28_recursive@plt>
lea    0x200000(%r15),%rdi
mov    $0x11,%esi
call   1030 <helper_double_28_recursive@plt>
lea    0x300000(%r15),%rdi
mov    $0x11,%esi
call   1030 <helper_double_28_recursive@plt>
lea    0x400000(%r15),%rdi
mov    $0x11,%esi
call   1030 <helper_double_28_recursive@plt>
lea    0x500000(%r15),%rdi
mov    $0x11,%esi
call   1030 <helper_double_28_recursive@plt>
lea    0x600000(%r15),%rdi
mov    $0x11,%esi
call   1030 <helper_double_28_recursive@plt>
add    $0x700000,%r15
mov    %r15,%rdi
mov    $0x11,%esi
call   1030 <helper_double_28_recursive@plt>
mov    $0xfffffffffffffffe,%rax
cs nopw 0x0(%rax,%rax,1)
nopl   (%rax)
lea    -0x700000(%r15),%r8
lea    -0x600000(%r15),%r9
lea    -0x500000(%r15),%rsi
lea    -0x400000(%r15),%rdi
lea    -0x300000(%r15),%rbx
lea    -0x200000(%r15),%rcx
lea    -0x100000(%r15),%rdx
movupd (%r8),%xmm0
movupd (%r9),%xmm1
movupd (%rsi),%xmm2
movupd (%rdi),%xmm3
movupd (%rbx),%xmm4
movupd (%rcx),%xmm5
movupd (%rdx),%xmm6
movupd (%r15),%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,(%rbx)
movupd %xmm13,(%rcx)
movupd %xmm14,(%rdx)
movupd %xmm15,(%r15)
add    $0x2,%rax
add    $0x10,%r15
cmp    $0x1fffe,%rax
jb     2750 <helper_double_28_recursive+0x1640>
jmp    2dfb <helper_double_28_recursive+0x1ceb>
mov    %r15,%rdi
mov    $0x14,%esi
call   1030 <helper_double_28_recursive@plt>
lea    0x800000(%r15),%rdi
mov    $0x14,%esi
call   1030 <helper_double_28_recursive@plt>
lea    0x1000000(%r15),%rdi
mov    $0x14,%esi
call   1030 <helper_double_28_recursive@plt>
lea    0x1800000(%r15),%rdi
mov    $0x14,%esi
call   1030 <helper_double_28_recursive@plt>
lea    0x2000000(%r15),%rdi
mov    $0x14,%esi
call   1030 <helper_double_28_recursive@plt>
lea    0x2800000(%r15),%rdi
mov    $0x14,%esi
call   1030 <helper_double_28_recursive@plt>
lea    0x3000000(%r15),%rdi
mov    $0x14,%esi
call   1030 <helper_double_28_recursive@plt>
add    $0x3800000,%r15
mov    %r15,%rdi
mov    $0x14,%esi
call   1030 <helper_double_28_recursive@plt>
mov    $0xfffffffffffffffe,%rax
cs nopw 0x0(%rax,%rax,1)
nopl   (%rax)
lea    -0x3800000(%r15),%r8
lea    -0x3000000(%r15),%r9
lea    -0x2800000(%r15),%rsi
lea    -0x2000000(%r15),%rdi
lea    -0x1800000(%r15),%rbx
lea    -0x1000000(%r15),%rcx
lea    -0x800000(%r15),%rdx
movupd (%r8),%xmm0
movupd (%r9),%xmm1
movupd (%rsi),%xmm2
movupd (%rdi),%xmm3
movupd (%rbx),%xmm4
movupd (%rcx),%xmm5
movupd (%rdx),%xmm6
movupd (%r15),%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,(%rbx)
movupd %xmm13,(%rcx)
movupd %xmm14,(%rdx)
movupd %xmm15,(%r15)
add    $0x2,%rax
add    $0x10,%r15
cmp    $0xffffe,%rax
jb     2970 <helper_double_28_recursive+0x1860>
jmp    2dfb <helper_double_28_recursive+0x1ceb>
mov    %r15,%rdi
mov    $0x17,%esi
call   1030 <helper_double_28_recursive@plt>
lea    0x4000000(%r15),%rdi
mov    $0x17,%esi
call   1030 <helper_double_28_recursive@plt>
lea    0x8000000(%r15),%rdi
mov    $0x17,%esi
call   1030 <helper_double_28_recursive@plt>
lea    0xc000000(%r15),%rdi
mov    $0x17,%esi
call   1030 <helper_double_28_recursive@plt>
lea    0x10000000(%r15),%rdi
mov    $0x17,%esi
call   1030 <helper_double_28_recursive@plt>
lea    0x14000000(%r15),%rdi
mov    $0x17,%esi
call   1030 <helper_double_28_recursive@plt>
lea    0x18000000(%r15),%rdi
mov    $0x17,%esi
call   1030 <helper_double_28_recursive@plt>
add    $0x1c000000,%r15
mov    %r15,%rdi
mov    $0x17,%esi
call   1030 <helper_double_28_recursive@plt>
mov    $0xfffffffffffffffe,%rax
cs nopw 0x0(%rax,%rax,1)
nopl   (%rax)
lea    -0x1c000000(%r15),%r8
lea    -0x18000000(%r15),%r9
lea    -0x14000000(%r15),%rsi
lea    -0x10000000(%r15),%rdi
lea    -0xc000000(%r15),%rbx
lea    -0x8000000(%r15),%rcx
lea    -0x4000000(%r15),%rdx
movupd (%r8),%xmm0
movupd (%r9),%xmm1
movupd (%rsi),%xmm2
movupd (%rdi),%xmm3
movupd (%rbx),%xmm4
movupd (%rcx),%xmm5
movupd (%rdx),%xmm6
movupd (%r15),%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,(%rbx)
movupd %xmm13,(%rcx)
movupd %xmm14,(%rdx)
movupd %xmm15,(%r15)
add    $0x2,%rax
add    $0x10,%r15
cmp    $0x7ffffe,%rax
jb     2b90 <helper_double_28_recursive+0x1a80>
jmp    2dfb <helper_double_28_recursive+0x1ceb>
mov    %r15,%rdi
mov    $0x1a,%esi
call   1030 <helper_double_28_recursive@plt>
lea    0x20000000(%r15),%rdi
mov    $0x1a,%esi
call   1030 <helper_double_28_recursive@plt>
lea    0x40000000(%r15),%rdi
mov    $0x1a,%esi
call   1030 <helper_double_28_recursive@plt>
lea    0x60000000(%r15),%rdi
mov    $0x1a,%esi
call   1030 <helper_double_28_recursive@plt>
mov    $0xfffffffffffffffe,%rax
nopl   0x0(%rax)
lea    0x20000000(%r15),%rcx
lea    0x40000000(%r15),%rdx
lea    0x60000000(%r15),%rsi
movupd (%r15),%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,(%r15)
movupd %xmm1,(%rcx)
movupd %xmm2,(%rdx)
movupd %xmm3,(%rsi)
add    $0x2,%rax
add    $0x10,%r15
cmp    $0x3fffffe,%rax
jb     2d60 <helper_double_28_recursive+0x1c50>
pop    %rbx
pop    %r14
pop    %r15
ret

LLVM IR (-O0):
define void @helper_double_28_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
%21 = alloca i32
%22 = alloca i32
%23 = alloca i32
%24 = alloca i32
store double* %0, double** %3
store i32 %1, i32* %4
%25 = load i32, i32* %4
%26 = icmp eq i32 %25, 14
br i1 %26, label %27, label %380
27: ; preds = %2
store i32 0, i32* %5
br label %28
28: ; preds = %104, %27
%29 = load i32, i32* %5
%30 = icmp slt i32 %29, 16384
br i1 %30, label %31, label %107
31: ; preds = %28
store i32 0, i32* %6
br label %32
32: ; preds = %100, %31
%33 = load i32, i32* %6
%34 = icmp slt i32 %33, 2
br i1 %34, label %35, label %103
35: ; preds = %32
%36 = load double*, double** %3
%37 = load i32, i32* %5
%38 = sext i32 %37 to i64
%39 = getelementptr inbounds double, double* %36, i64 %38
%40 = load i32, i32* %6
%41 = sext i32 %40 to i64
%42 = getelementptr inbounds double, double* %39, i64 %41
%43 = getelementptr inbounds double, double* %42, i64 0
%44 = load double*, double** %3
%45 = load i32, i32* %5
%46 = sext i32 %45 to i64
%47 = getelementptr inbounds double, double* %44, i64 %46
%48 = load i32, i32* %6
%49 = sext i32 %48 to i64
%50 = getelementptr inbounds double, double* %47, i64 %49
%51 = getelementptr inbounds double, double* %50, i64 2
%52 = load double*, double** %3
%53 = load i32, i32* %5
%54 = sext i32 %53 to i64
%55 = getelementptr inbounds double, double* %52, i64 %54
%56 = load i32, i32* %6
%57 = sext i32 %56 to i64
%58 = getelementptr inbounds double, double* %55, i64 %57
%59 = getelementptr inbounds double, double* %58, i64 4
%60 = load double*, double** %3
%61 = load i32, i32* %5
%62 = sext i32 %61 to i64
%63 = getelementptr inbounds double, double* %60, i64 %62
%64 = load i32, i32* %6
%65 = sext i32 %64 to i64
%66 = getelementptr inbounds double, double* %63, i64 %65
%67 = getelementptr inbounds double, double* %66, i64 6
%68 = load double*, double** %3
%69 = load i32, i32* %5
%70 = sext i32 %69 to i64
%71 = getelementptr inbounds double, double* %68, i64 %70
%72 = load i32, i32* %6
%73 = sext i32 %72 to i64
%74 = getelementptr inbounds double, double* %71, i64 %73
%75 = getelementptr inbounds double, double* %74, i64 8
%76 = load double*, double** %3
%77 = load i32, i32* %5
%78 = sext i32 %77 to i64
%79 = getelementptr inbounds double, double* %76, i64 %78
%80 = load i32, i32* %6
%81 = sext i32 %80 to i64
%82 = getelementptr inbounds double, double* %79, i64 %81
%83 = getelementptr inbounds double, double* %82, i64 10
%84 = load double*, double** %3
%85 = load i32, i32* %5
%86 = sext i32 %85 to i64
%87 = getelementptr inbounds double, double* %84, i64 %86
%88 = load i32, i32* %6
%89 = sext i32 %88 to i64
%90 = getelementptr inbounds double, double* %87, i64 %89
%91 = getelementptr inbounds double, double* %90, i64 12
%92 = load double*, double** %3
%93 = load i32, i32* %5
%94 = sext i32 %93 to i64
%95 = getelementptr inbounds double, double* %92, i64 %94
%96 = load i32, i32* %6
%97 = sext i32 %96 to i64
%98 = getelementptr inbounds double, double* %95, i64 %97
%99 = getelementptr inbounds double, double* %98, i64 14
br label %100
100: ; preds = %35
%101 = load i32, i32* %6
%102 = add nsw i32 %101, 2
store i32 %102, i32* %6
br label %32
103: ; preds = %32
br label %104
104: ; preds = %103
%105 = load i32, i32* %5
%106 = add nsw i32 %105, 16
store i32 %106, i32* %5
br label %28
107: ; preds = %28
store i32 0, i32* %7
br label %108
108: ; preds = %184, %107
%109 = load i32, i32* %7
%110 = icmp slt i32 %109, 16384
br i1 %110, label %111, label %187
111: ; preds = %108
store i32 0, i32* %8
br label %112
112: ; preds = %180, %111
%113 = load i32, i32* %8
%114 = icmp slt i32 %113, 16
br i1 %114, label %115, label %183
115: ; preds = %112
%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 0
%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 16
%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 32
%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 48
%148 = load double*, double** %3
%149 = load i32, i32* %7
%150 = sext i32 %149 to i64
%151 = getelementptr inbounds double, double* %148, i64 %150
%152 = load i32, i32* %8
%153 = sext i32 %152 to i64
%154 = getelementptr inbounds double, double* %151, i64 %153
%155 = getelementptr inbounds double, double* %154, i64 64
%156 = load double*, double** %3
%157 = load i32, i32* %7
%158 = sext i32 %157 to i64
%159 = getelementptr inbounds double, double* %156, i64 %158
%160 = load i32, i32* %8
%161 = sext i32 %160 to i64
%162 = getelementptr inbounds double, double* %159, i64 %161
%163 = getelementptr inbounds double, double* %162, i64 80
%164 = load double*, double** %3
%165 = load i32, i32* %7
%166 = sext i32 %165 to i64
%167 = getelementptr inbounds double, double* %164, i64 %166
%168 = load i32, i32* %8
%169 = sext i32 %168 to i64
%170 = getelementptr inbounds double, double* %167, i64 %169
%171 = getelementptr inbounds double, double* %170, i64 96
%172 = load double*, double** %3
%173 = load i32, i32* %7
%174 = sext i32 %173 to i64
%175 = getelementptr inbounds double, double* %172, i64 %174
%176 = load i32, i32* %8
%177 = sext i32 %176 to i64
%178 = getelementptr inbounds double, double* %175, i64 %177
%179 = getelementptr inbounds double, double* %178, i64 112
br label %180
180: ; preds = %115
%181 = load i32, i32* %8
%182 = add nsw i32 %181, 2
store i32 %182, i32* %8
br label %112
183: ; preds = %112
br label %184
184: ; preds = %183
%185 = load i32, i32* %7
%186 = add nsw i32 %185, 128
store i32 %186, i32* %7
br label %108
187: ; preds = %108
store i32 0, i32* %9
br label %188
188: ; preds = %264, %187
%189 = load i32, i32* %9
%190 = icmp slt i32 %189, 16384
br i1 %190, label %191, label %267
191: ; preds = %188
store i32 0, i32* %10
br label %192
192: ; preds = %260, %191
%193 = load i32, i32* %10
%194 = icmp slt i32 %193, 128
br i1 %194, label %195, label %263
195: ; preds = %192
%196 = load double*, double** %3
%197 = load i32, i32* %9
%198 = sext i32 %197 to i64
%199 = getelementptr inbounds double, double* %196, i64 %198
%200 = load i32, i32* %10
%201 = sext i32 %200 to i64
%202 = getelementptr inbounds double, double* %199, i64 %201
%203 = getelementptr inbounds double, double* %202, i64 0
%204 = load double*, double** %3
%205 = load i32, i32* %9
%206 = sext i32 %205 to i64
%207 = getelementptr inbounds double, double* %204, i64 %206
%208 = load i32, i32* %10
%209 = sext i32 %208 to i64
%210 = getelementptr inbounds double, double* %207, i64 %209
%211 = getelementptr inbounds double, double* %210, i64 128
%212 = load double*, double** %3
%213 = load i32, i32* %9
%214 = sext i32 %213 to i64
%215 = getelementptr inbounds double, double* %212, i64 %214
%216 = load i32, i32* %10
%217 = sext i32 %216 to i64
%218 = getelementptr inbounds double, double* %215, i64 %217
%219 = getelementptr inbounds double, double* %218, i64 256
%220 = load double*, double** %3
%221 = load i32, i32* %9
%222 = sext i32 %221 to i64
%223 = getelementptr inbounds double, double* %220, i64 %222
%224 = load i32, i32* %10
%225 = sext i32 %224 to i64
%226 = getelementptr inbounds double, double* %223, i64 %225
%227 = getelementptr inbounds double, double* %226, i64 384
%228 = load double*, double** %3
%229 = load i32, i32* %9
%230 = sext i32 %229 to i64
%231 = getelementptr inbounds double, double* %228, i64 %230
%232 = load i32, i32* %10
%233 = sext i32 %232 to i64
%234 = getelementptr inbounds double, double* %231, i64 %233
%235 = getelementptr inbounds double, double* %234, i64 512
%236 = load double*, double** %3
%237 = load i32, i32* %9
%238 = sext i32 %237 to i64
%239 = getelementptr inbounds double, double* %236, i64 %238
%240 = load i32, i32* %10
%241 = sext i32 %240 to i64
%242 = getelementptr inbounds double, double* %239, i64 %241
%243 = getelementptr inbounds double, double* %242, i64 640
%244 = load double*, double** %3
%245 = load i32, i32* %9
%246 = sext i32 %245 to i64
%247 = getelementptr inbounds double, double* %244, i64 %246
%248 = load i32, i32* %10
%249 = sext i32 %248 to i64
%250 = getelementptr inbounds double, double* %247, i64 %249
%251 = getelementptr inbounds double, double* %250, i64 768
%252 = load double*, double** %3
%253 = load i32, i32* %9
%254 = sext i32 %253 to i64
%255 = getelementptr inbounds double, double* %252, i64 %254
%256 = load i32, i32* %10
%257 = sext i32 %256 to i64
%258 = getelementptr inbounds double, double* %255, i64 %257
%259 = getelementptr inbounds double, double* %258, i64 896
br label %260
260: ; preds = %195
%261 = load i32, i32* %10
%262 = add nsw i32 %261, 2
store i32 %262, i32* %10
br label %192
263: ; preds = %192
br label %264
264: ; preds = %263
%265 = load i32, i32* %9
%266 = add nsw i32 %265, 1024
store i32 %266, i32* %9
br label %188
267: ; preds = %188
store i32 0, i32* %11
br label %268
268: ; preds = %344, %267
%269 = load i32, i32* %11
%270 = icmp slt i32 %269, 16384
br i1 %270, label %271, label %347
271: ; preds = %268
store i32 0, i32* %12
br label %272
272: ; preds = %340, %271
%273 = load i32, i32* %12
%274 = icmp slt i32 %273, 1024
br i1 %274, label %275, label %343
275: ; preds = %272
%276 = load double*, double** %3
%277 = load i32, i32* %11
%278 = sext i32 %277 to i64
%279 = getelementptr inbounds double, double* %276, i64 %278
%280 = load i32, i32* %12
%281 = sext i32 %280 to i64
%282 = getelementptr inbounds double, double* %279, i64 %281
%283 = getelementptr inbounds double, double* %282, i64 0
%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 1024
%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 2048
%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 3072
%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 4096
%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 5120
%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 6144
%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 7168
br label %340
340: ; preds = %275
%341 = load i32, i32* %12
%342 = add nsw i32 %341, 2
store i32 %342, i32* %12
br label %272
343: ; preds = %272
br label %344
344: ; preds = %343
%345 = load i32, i32* %11
%346 = add nsw i32 %345, 8192
store i32 %346, i32* %11
br label %268
347: ; preds = %268
store i32 0, i32* %13
br label %348
348: ; preds = %376, %347
%349 = load i32, i32* %13
%350 = icmp slt i32 %349, 16384
br i1 %350, label %351, label %379
351: ; preds = %348
store i32 0, i32* %14
br label %352
352: ; preds = %372, %351
%353 = load i32, i32* %14
%354 = icmp slt i32 %353, 8192
br i1 %354, label %355, label %375
355: ; preds = %352
%356 = load double*, double** %3
%357 = load i32, i32* %13
%358 = sext i32 %357 to i64
%359 = getelementptr inbounds double, double* %356, i64 %358
%360 = load i32, i32* %14
%361 = sext i32 %360 to i64
%362 = getelementptr inbounds double, double* %359, i64 %361
%363 = getelementptr inbounds double, double* %362, i64 0
%364 = load double*, double** %3
%365 = load i32, i32* %13
%366 = sext i32 %365 to i64
%367 = getelementptr inbounds double, double* %364, i64 %366
%368 = load i32, i32* %14
%369 = sext i32 %368 to i64
%370 = getelementptr inbounds double, double* %367, i64 %369
%371 = getelementptr inbounds double, double* %370, i64 8192
br label %372
372: ; preds = %355
%373 = load i32, i32* %14
%374 = add nsw i32 %373, 2
store i32 %374, i32* %14
br label %352
375: ; preds = %352
br label %376
376: ; preds = %375
%377 = load i32, i32* %13
%378 = add nsw i32 %377, 16384
store i32 %378, i32* %13
br label %348
379: ; preds = %348
br label %840
380: ; preds = %2
%381 = load i32, i32* %4
%382 = icmp eq i32 %381, 17
br i1 %382, label %383, label %480
383: ; preds = %380
%384 = load double*, double** %3
%385 = getelementptr inbounds double, double* %384, i64 0
%386 = load double*, double** %3
%387 = getelementptr inbounds double, double* %386, i64 16384
%388 = load double*, double** %3
%389 = getelementptr inbounds double, double* %388, i64 32768
%390 = load double*, double** %3
%391 = getelementptr inbounds double, double* %390, i64 49152
%392 = load double*, double** %3
%393 = getelementptr inbounds double, double* %392, i64 65536
%394 = load double*, double** %3
%395 = getelementptr inbounds double, double* %394, i64 81920
%396 = load double*, double** %3
%397 = getelementptr inbounds double, double* %396, i64 98304
%398 = load double*, double** %3
%399 = getelementptr inbounds double, double* %398, i64 114688
store i32 0, i32* %15
br label %400
400: ; preds = %476, %383
%401 = load i32, i32* %15
%402 = icmp slt i32 %401, 131072
br i1 %402, label %403, label %479
403: ; preds = %400
store i32 0, i32* %16
br label %404
404: ; preds = %472, %403
%405 = load i32, i32* %16
%406 = icmp slt i32 %405, 16384
br i1 %406, label %407, label %475
407: ; preds = %404
%408 = load double*, double** %3
%409 = load i32, i32* %15
%410 = sext i32 %409 to i64
%411 = getelementptr inbounds double, double* %408, i64 %410
%412 = load i32, i32* %16
%413 = sext i32 %412 to i64
%414 = getelementptr inbounds double, double* %411, i64 %413
%415 = getelementptr inbounds double, double* %414, i64 0
%416 = load double*, double** %3
%417 = load i32, i32* %15
%418 = sext i32 %417 to i64
%419 = getelementptr inbounds double, double* %416, i64 %418
%420 = load i32, i32* %16
%421 = sext i32 %420 to i64
%422 = getelementptr inbounds double, double* %419, i64 %421
%423 = getelementptr inbounds double, double* %422, i64 16384
%424 = load double*, double** %3
%425 = load i32, i32* %15
%426 = sext i32 %425 to i64
%427 = getelementptr inbounds double, double* %424, i64 %426
%428 = load i32, i32* %16
%429 = sext i32 %428 to i64
%430 = getelementptr inbounds double, double* %427, i64 %429
%431 = getelementptr inbounds double, double* %430, i64 32768
%432 = load double*, double** %3
%433 = load i32, i32* %15
%434 = sext i32 %433 to i64
%435 = getelementptr inbounds double, double* %432, i64 %434
%436 = load i32, i32* %16
%437 = sext i32 %436 to i64
%438 = getelementptr inbounds double, double* %435, i64 %437
%439 = getelementptr inbounds double, double* %438, i64 49152
%440 = load double*, double** %3
%441 = load i32, i32* %15
%442 = sext i32 %441 to i64
%443 = getelementptr inbounds double, double* %440, i64 %442
%444 = load i32, i32* %16
%445 = sext i32 %444 to i64
%446 = getelementptr inbounds double, double* %443, i64 %445
%447 = getelementptr inbounds double, double* %446, i64 65536
%448 = load double*, double** %3
%449 = load i32, i32* %15
%450 = sext i32 %449 to i64
%451 = getelementptr inbounds double, double* %448, i64 %450
%452 = load i32, i32* %16
%453 = sext i32 %452 to i64
%454 = getelementptr inbounds double, double* %451, i64 %453
%455 = getelementptr inbounds double, double* %454, i64 81920
%456 = load double*, double** %3
%457 = load i32, i32* %15
%458 = sext i32 %457 to i64
%459 = getelementptr inbounds double, double* %456, i64 %458
%460 = load i32, i32* %16
%461 = sext i32 %460 to i64
%462 = getelementptr inbounds double, double* %459, i64 %461
%463 = getelementptr inbounds double, double* %462, i64 98304
%464 = load double*, double** %3
%465 = load i32, i32* %15
%466 = sext i32 %465 to i64
%467 = getelementptr inbounds double, double* %464, i64 %466
%468 = load i32, i32* %16
%469 = sext i32 %468 to i64
%470 = getelementptr inbounds double, double* %467, i64 %469
%471 = getelementptr inbounds double, double* %470, i64 114688
br label %472
472: ; preds = %407
%473 = load i32, i32* %16
%474 = add nsw i32 %473, 2
store i32 %474, i32* %16
br label %404
475: ; preds = %404
br label %476
476: ; preds = %475
%477 = load i32, i32* %15
%478 = add nsw i32 %477, 131072
store i32 %478, i32* %15
br label %400
479: ; preds = %400
br label %840
480: ; preds = %380
%481 = load i32, i32* %4
%482 = icmp eq i32 %481, 20
br i1 %482, label %483, label %580
483: ; preds = %480
%484 = load double*, double** %3
%485 = getelementptr inbounds double, double* %484, i64 0
%486 = load double*, double** %3
%487 = getelementptr inbounds double, double* %486, i64 131072
%488 = load double*, double** %3
%489 = getelementptr inbounds double, double* %488, i64 262144
%490 = load double*, double** %3
%491 = getelementptr inbounds double, double* %490, i64 393216
%492 = load double*, double** %3
%493 = getelementptr inbounds double, double* %492, i64 524288
%494 = load double*, double** %3
%495 = getelementptr inbounds double, double* %494, i64 655360
%496 = load double*, double** %3
%497 = getelementptr inbounds double, double* %496, i64 786432
%498 = load double*, double** %3
%499 = getelementptr inbounds double, double* %498, i64 917504
store i32 0, i32* %17
br label %500
500: ; preds = %576, %483
%501 = load i32, i32* %17
%502 = icmp slt i32 %501, 1048576
br i1 %502, label %503, label %579
503: ; preds = %500
store i32 0, i32* %18
br label %504
504: ; preds = %572, %503
%505 = load i32, i32* %18
%506 = icmp slt i32 %505, 131072
br i1 %506, label %507, label %575
507: ; preds = %504
%508 = load double*, double** %3
%509 = load i32, i32* %17
%510 = sext i32 %509 to i64
%511 = getelementptr inbounds double, double* %508, i64 %510
%512 = load i32, i32* %18
%513 = sext i32 %512 to i64
%514 = getelementptr inbounds double, double* %511, i64 %513
%515 = getelementptr inbounds double, double* %514, i64 0
%516 = load double*, double** %3
%517 = load i32, i32* %17
%518 = sext i32 %517 to i64
%519 = getelementptr inbounds double, double* %516, i64 %518
%520 = load i32, i32* %18
%521 = sext i32 %520 to i64
%522 = getelementptr inbounds double, double* %519, i64 %521
%523 = getelementptr inbounds double, double* %522, i64 131072
%524 = load double*, double** %3
%525 = load i32, i32* %17
%526 = sext i32 %525 to i64
%527 = getelementptr inbounds double, double* %524, i64 %526
%528 = load i32, i32* %18
%529 = sext i32 %528 to i64
%530 = getelementptr inbounds double, double* %527, i64 %529
%531 = getelementptr inbounds double, double* %530, i64 262144
%532 = load double*, double** %3
%533 = load i32, i32* %17
%534 = sext i32 %533 to i64
%535 = getelementptr inbounds double, double* %532, i64 %534
%536 = load i32, i32* %18
%537 = sext i32 %536 to i64
%538 = getelementptr inbounds double, double* %535, i64 %537
%539 = getelementptr inbounds double, double* %538, i64 393216
%540 = load double*, double** %3
%541 = load i32, i32* %17
%542 = sext i32 %541 to i64
%543 = getelementptr inbounds double, double* %540, i64 %542
%544 = load i32, i32* %18
%545 = sext i32 %544 to i64
%546 = getelementptr inbounds double, double* %543, i64 %545
%547 = getelementptr inbounds double, double* %546, i64 524288
%548 = load double*, double** %3
%549 = load i32, i32* %17
%550 = sext i32 %549 to i64
%551 = getelementptr inbounds double, double* %548, i64 %550
%552 = load i32, i32* %18
%553 = sext i32 %552 to i64
%554 = getelementptr inbounds double, double* %551, i64 %553
%555 = getelementptr inbounds double, double* %554, i64 655360
%556 = load double*, double** %3
%557 = load i32, i32* %17
%558 = sext i32 %557 to i64
%559 = getelementptr inbounds double, double* %556, i64 %558
%560 = load i32, i32* %18
%561 = sext i32 %560 to i64
%562 = getelementptr inbounds double, double* %559, i64 %561
%563 = getelementptr inbounds double, double* %562, i64 786432
%564 = load double*, double** %3
%565 = load i32, i32* %17
%566 = sext i32 %565 to i64
%567 = getelementptr inbounds double, double* %564, i64 %566
%568 = load i32, i32* %18
%569 = sext i32 %568 to i64
%570 = getelementptr inbounds double, double* %567, i64 %569
%571 = getelementptr inbounds double, double* %570, i64 917504
br label %572
572: ; preds = %507
%573 = load i32, i32* %18
%574 = add nsw i32 %573, 2
store i32 %574, i32* %18
br label %504
575: ; preds = %504
br label %576
576: ; preds = %575
%577 = load i32, i32* %17
%578 = add nsw i32 %577, 1048576
store i32 %578, i32* %17
br label %500
579: ; preds = %500
br label %840
580: ; preds = %480
%581 = load i32, i32* %4
%582 = icmp eq i32 %581, 23
br i1 %582, label %583, label %680
583: ; preds = %580
%584 = load double*, double** %3
%585 = getelementptr inbounds double, double* %584, i64 0
%586 = load double*, double** %3
%587 = getelementptr inbounds double, double* %586, i64 1048576
%588 = load double*, double** %3
%589 = getelementptr inbounds double, double* %588, i64 2097152
%590 = load double*, double** %3
%591 = getelementptr inbounds double, double* %590, i64 3145728
%592 = load double*, double** %3
%593 = getelementptr inbounds double, double* %592, i64 4194304
%594 = load double*, double** %3
%595 = getelementptr inbounds double, double* %594, i64 5242880
%596 = load double*, double** %3
%597 = getelementptr inbounds double, double* %596, i64 6291456
%598 = load double*, double** %3
%599 = getelementptr inbounds double, double* %598, i64 7340032
store i32 0, i32* %19
br label %600
600: ; preds = %676, %583
%601 = load i32, i32* %19
%602 = icmp slt i32 %601, 8388608
br i1 %602, label %603, label %679
603: ; preds = %600
store i32 0, i32* %20
br label %604
604: ; preds = %672, %603
%605 = load i32, i32* %20
%606 = icmp slt i32 %605, 1048576
br i1 %606, label %607, label %675
607: ; preds = %604
%608 = load double*, double** %3
%609 = load i32, i32* %19
%610 = sext i32 %609 to i64
%611 = getelementptr inbounds double, double* %608, i64 %610
%612 = load i32, i32* %20
%613 = sext i32 %612 to i64
%614 = getelementptr inbounds double, double* %611, i64 %613
%615 = getelementptr inbounds double, double* %614, i64 0
%616 = load double*, double** %3
%617 = load i32, i32* %19
%618 = sext i32 %617 to i64
%619 = getelementptr inbounds double, double* %616, i64 %618
%620 = load i32, i32* %20
%621 = sext i32 %620 to i64
%622 = getelementptr inbounds double, double* %619, i64 %621
%623 = getelementptr inbounds double, double* %622, i64 1048576
%624 = load double*, double** %3
%625 = load i32, i32* %19
%626 = sext i32 %625 to i64
%627 = getelementptr inbounds double, double* %624, i64 %626
%628 = load i32, i32* %20
%629 = sext i32 %628 to i64
%630 = getelementptr inbounds double, double* %627, i64 %629
%631 = getelementptr inbounds double, double* %630, i64 2097152
%632 = load double*, double** %3
%633 = load i32, i32* %19
%634 = sext i32 %633 to i64
%635 = getelementptr inbounds double, double* %632, i64 %634
%636 = load i32, i32* %20
%637 = sext i32 %636 to i64
%638 = getelementptr inbounds double, double* %635, i64 %637
%639 = getelementptr inbounds double, double* %638, i64 3145728
%640 = load double*, double** %3
%641 = load i32, i32* %19
%642 = sext i32 %641 to i64
%643 = getelementptr inbounds double, double* %640, i64 %642
%644 = load i32, i32* %20
%645 = sext i32 %644 to i64
%646 = getelementptr inbounds double, double* %643, i64 %645
%647 = getelementptr inbounds double, double* %646, i64 4194304
%648 = load double*, double** %3
%649 = load i32, i32* %19
%650 = sext i32 %649 to i64
%651 = getelementptr inbounds double, double* %648, i64 %650
%652 = load i32, i32* %20
%653 = sext i32 %652 to i64
%654 = getelementptr inbounds double, double* %651, i64 %653
%655 = getelementptr inbounds double, double* %654, i64 5242880
%656 = load double*, double** %3
%657 = load i32, i32* %19
%658 = sext i32 %657 to i64
%659 = getelementptr inbounds double, double* %656, i64 %658
%660 = load i32, i32* %20
%661 = sext i32 %660 to i64
%662 = getelementptr inbounds double, double* %659, i64 %661
%663 = getelementptr inbounds double, double* %662, i64 6291456
%664 = load double*, double** %3
%665 = load i32, i32* %19
%666 = sext i32 %665 to i64
%667 = getelementptr inbounds double, double* %664, i64 %666
%668 = load i32, i32* %20
%669 = sext i32 %668 to i64
%670 = getelementptr inbounds double, double* %667, i64 %669
%671 = getelementptr inbounds double, double* %670, i64 7340032
br label %672
672: ; preds = %607
%673 = load i32, i32* %20
%674 = add nsw i32 %673, 2
store i32 %674, i32* %20
br label %604
675: ; preds = %604
br label %676
676: ; preds = %675
%677 = load i32, i32* %19
%678 = add nsw i32 %677, 8388608
store i32 %678, i32* %19
br label %600
679: ; preds = %600
br label %840
680: ; preds = %580
%681 = load i32, i32* %4
%682 = icmp eq i32 %681, 26
br i1 %682, label %683, label %780
683: ; preds = %680
%684 = load double*, double** %3
%685 = getelementptr inbounds double, double* %684, i64 0
%686 = load double*, double** %3
%687 = getelementptr inbounds double, double* %686, i64 8388608
%688 = load double*, double** %3
%689 = getelementptr inbounds double, double* %688, i64 16777216
%690 = load double*, double** %3
%691 = getelementptr inbounds double, double* %690, i64 25165824
%692 = load double*, double** %3
%693 = getelementptr inbounds double, double* %692, i64 33554432
%694 = load double*, double** %3
%695 = getelementptr inbounds double, double* %694, i64 41943040
%696 = load double*, double** %3
%697 = getelementptr inbounds double, double* %696, i64 50331648
%698 = load double*, double** %3
%699 = getelementptr inbounds double, double* %698, i64 58720256
store i32 0, i32* %21
br label %700
700: ; preds = %776, %683
%701 = load i32, i32* %21
%702 = icmp slt i32 %701, 67108864
br i1 %702, label %703, label %779
703: ; preds = %700
store i32 0, i32* %22
br label %704
704: ; preds = %772, %703
%705 = load i32, i32* %22
%706 = icmp slt i32 %705, 8388608
br i1 %706, label %707, label %775
707: ; preds = %704
%708 = load double*, double** %3
%709 = load i32, i32* %21
%710 = sext i32 %709 to i64
%711 = getelementptr inbounds double, double* %708, i64 %710
%712 = load i32, i32* %22
%713 = sext i32 %712 to i64
%714 = getelementptr inbounds double, double* %711, i64 %713
%715 = getelementptr inbounds double, double* %714, i64 0
%716 = load double*, double** %3
%717 = load i32, i32* %21
%718 = sext i32 %717 to i64
%719 = getelementptr inbounds double, double* %716, i64 %718
%720 = load i32, i32* %22
%721 = sext i32 %720 to i64
%722 = getelementptr inbounds double, double* %719, i64 %721
%723 = getelementptr inbounds double, double* %722, i64 8388608
%724 = load double*, double** %3
%725 = load i32, i32* %21
%726 = sext i32 %725 to i64
%727 = getelementptr inbounds double, double* %724, i64 %726
%728 = load i32, i32* %22
%729 = sext i32 %728 to i64
%730 = getelementptr inbounds double, double* %727, i64 %729
%731 = getelementptr inbounds double, double* %730, i64 16777216
%732 = load double*, double** %3
%733 = load i32, i32* %21
%734 = sext i32 %733 to i64
%735 = getelementptr inbounds double, double* %732, i64 %734
%736 = load i32, i32* %22
%737 = sext i32 %736 to i64
%738 = getelementptr inbounds double, double* %735, i64 %737
%739 = getelementptr inbounds double, double* %738, i64 25165824
%740 = load double*, double** %3
%741 = load i32, i32* %21
%742 = sext i32 %741 to i64
%743 = getelementptr inbounds double, double* %740, i64 %742
%744 = load i32, i32* %22
%745 = sext i32 %744 to i64
%746 = getelementptr inbounds double, double* %743, i64 %745
%747 = getelementptr inbounds double, double* %746, i64 33554432
%748 = load double*, double** %3
%749 = load i32, i32* %21
%750 = sext i32 %749 to i64
%751 = getelementptr inbounds double, double* %748, i64 %750
%752 = load i32, i32* %22
%753 = sext i32 %752 to i64
%754 = getelementptr inbounds double, double* %751, i64 %753
%755 = getelementptr inbounds double, double* %754, i64 41943040
%756 = load double*, double** %3
%757 = load i32, i32* %21
%758 = sext i32 %757 to i64
%759 = getelementptr inbounds double, double* %756, i64 %758
%760 = load i32, i32* %22
%761 = sext i32 %760 to i64
%762 = getelementptr inbounds double, double* %759, i64 %761
%763 = getelementptr inbounds double, double* %762, i64 50331648
%764 = load double*, double** %3
%765 = load i32, i32* %21
%766 = sext i32 %765 to i64
%767 = getelementptr inbounds double, double* %764, i64 %766
%768 = load i32, i32* %22
%769 = sext i32 %768 to i64
%770 = getelementptr inbounds double, double* %767, i64 %769
%771 = getelementptr inbounds double, double* %770, i64 58720256
br label %772
772: ; preds = %707
%773 = load i32, i32* %22
%774 = add nsw i32 %773, 2
store i32 %774, i32* %22
br label %704
775: ; preds = %704
br label %776
776: ; preds = %775
%777 = load i32, i32* %21
%778 = add nsw i32 %777, 67108864
store i32 %778, i32* %21
br label %700
779: ; preds = %700
br label %840
780: ; preds = %680
%781 = load i32, i32* %4
%782 = icmp eq i32 %781, 28
br i1 %782, label %783, label %840
783: ; preds = %780
%784 = load double*, double** %3
%785 = getelementptr inbounds double, double* %784, i64 0
%786 = load double*, double** %3
%787 = getelementptr inbounds double, double* %786, i64 67108864
%788 = load double*, double** %3
%789 = getelementptr inbounds double, double* %788, i64 134217728
%790 = load double*, double** %3
%791 = getelementptr inbounds double, double* %790, i64 201326592
store i32 0, i32* %23
br label %792
792: ; preds = %836, %783
%793 = load i32, i32* %23
%794 = icmp slt i32 %793, 268435456
br i1 %794, label %795, label %839
795: ; preds = %792
store i32 0, i32* %24
br label %796
796: ; preds = %832, %795
%797 = load i32, i32* %24
%798 = icmp slt i32 %797, 67108864
br i1 %798, label %799, label %835
799: ; preds = %796
%800 = load double*, double** %3
%801 = load i32, i32* %23
%802 = sext i32 %801 to i64
%803 = getelementptr inbounds double, double* %800, i64 %802
%804 = load i32, i32* %24
%805 = sext i32 %804 to i64
%806 = getelementptr inbounds double, double* %803, i64 %805
%807 = getelementptr inbounds double, double* %806, i64 0
%808 = load double*, double** %3
%809 = load i32, i32* %23
%810 = sext i32 %809 to i64
%811 = getelementptr inbounds double, double* %808, i64 %810
%812 = load i32, i32* %24
%813 = sext i32 %812 to i64
%814 = getelementptr inbounds double, double* %811, i64 %813
%815 = getelementptr inbounds double, double* %814, i64 67108864
%816 = load double*, double** %3
%817 = load i32, i32* %23
%818 = sext i32 %817 to i64
%819 = getelementptr inbounds double, double* %816, i64 %818
%820 = load i32, i32* %24
%821 = sext i32 %820 to i64
%822 = getelementptr inbounds double, double* %819, i64 %821
%823 = getelementptr inbounds double, double* %822, i64 134217728
%824 = load double*, double** %3
%825 = load i32, i32* %23
%826 = sext i32 %825 to i64
%827 = getelementptr inbounds double, double* %824, i64 %826
%828 = load i32, i32* %24
%829 = sext i32 %828 to i64
%830 = getelementptr inbounds double, double* %827, i64 %829
%831 = getelementptr inbounds double, double* %830, i64 201326592
br label %832
832: ; preds = %799
%833 = load i32, i32* %24
%834 = add nsw i32 %833, 2
store i32 %834, i32* %24
br label %796
835: ; preds = %796
br label %836
836: ; preds = %835
%837 = load i32, i32* %23
%838 = add nsw i32 %837, 268435456
store i32 %838, i32* %23
br label %792
839: ; preds = %792
br label %840
840: ; preds = %379, %479, %579, %679, %779, %839, %780
ret void
}

LLVM IR (-O2):
define void @helper_double_28_recursive(double* %0, i32 %1) {
switch i32 %1, label %225 [
i32 14, label %3
i32 17, label %133
i32 20, label %153
i32 23, label %173
i32 26, label %193
i32 28, label %213
]
3: ; preds = %2, %3
%4 = phi i64 [ %13, %3 ], [ 0, %2 ]
%5 = getelementptr inbounds double, double* %0, i64 %4
%6 = getelementptr inbounds double, double* %5, i64 2
%7 = getelementptr inbounds double, double* %5, i64 4
%8 = getelementptr inbounds double, double* %5, i64 6
%9 = getelementptr inbounds double, double* %5, i64 8
%10 = getelementptr inbounds double, double* %5, i64 10
%11 = getelementptr inbounds double, double* %5, i64 12
%12 = getelementptr inbounds double, double* %5, i64 14
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\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 %xmm2, %xmm8\0Ahaddpd %xmm8, %xmm8\0Amovapd %xmm2, %xmm9\0Ahsubpd %xmm9, %xmm9\0Ablendpd $$1, %xmm8, %xmm9\0Amovapd %xmm9, %xmm2\0Amovapd %xmm3, %xmm8\0Ahaddpd %xmm8, %xmm8\0Amovapd %xmm3, %xmm9\0Ahsubpd %xmm9, %xmm9\0Ablendpd $$1, %xmm8, %xmm9\0Amovapd %xmm9, %xmm3\0Amovapd %xmm4, %xmm8\0Ahaddpd %xmm8, %xmm8\0Amovapd %xmm4, %xmm9\0Ahsubpd %xmm9, %xmm9\0Ablendpd $$1, %xmm8, %xmm9\0Amovapd %xmm9, %xmm4\0Amovapd %xmm5, %xmm8\0Ahaddpd %xmm8, %xmm8\0Amovapd %xmm5, %xmm9\0Ahsubpd %xmm9, %xmm9\0Ablendpd $$1, %xmm8, %xmm9\0Amovapd %xmm9, %xmm5\0Amovapd %xmm6, %xmm8\0Ahaddpd %xmm8, %xmm8\0Amovapd %xmm6, %xmm9\0Ahsubpd %xmm9, %xmm9\0Ablendpd $$1, %xmm8, %xmm9\0Amovapd %xmm9, %xmm6\0Amovapd %xmm7, %xmm8\0Ahaddpd %xmm8, %xmm8\0Amovapd %xmm7, %xmm9\0Ahsubpd %xmm9, %xmm9\0Ablendpd $$1, %xmm8, %xmm9\0Amovapd %xmm9, %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* %5, double* %6, double* %7, double* %8, double* %9, double* %10, double* %11, double* %12)
%13 = add nuw nsw i64 %4, 16
%14 = icmp ult i64 %4, 16368
br i1 %14, label %3, label %15
15: ; preds = %3, %15
%16 = phi i64 [ %81, %15 ], [ 0, %3 ]
%17 = getelementptr inbounds double, double* %0, i64 %16
%18 = getelementptr inbounds double, double* %17, i64 16
%19 = getelementptr inbounds double, double* %17, i64 32
%20 = getelementptr inbounds double, double* %17, i64 48
%21 = getelementptr inbounds double, double* %17, i64 64
%22 = getelementptr inbounds double, double* %17, i64 80
%23 = getelementptr inbounds double, double* %17, i64 96
%24 = getelementptr inbounds double, double* %17, i64 112
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* %17, double* %18, double* %19, double* %20, double* %21, double* %22, double* %23, double* %24)
%25 = getelementptr inbounds double, double* %17, i64 2
%26 = getelementptr inbounds double, double* %25, i64 16
%27 = getelementptr inbounds double, double* %25, i64 32
%28 = getelementptr inbounds double, double* %25, i64 48
%29 = getelementptr inbounds double, double* %25, i64 64
%30 = getelementptr inbounds double, double* %25, i64 80
%31 = getelementptr inbounds double, double* %25, i64 96
%32 = getelementptr inbounds double, double* %25, i64 112
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* %25, double* %26, double* %27, double* %28, double* %29, double* %30, double* %31, double* %32)
%33 = getelementptr inbounds double, double* %17, i64 4
%34 = getelementptr inbounds double, double* %33, i64 16
%35 = getelementptr inbounds double, double* %33, i64 32
%36 = getelementptr inbounds double, double* %33, i64 48
%37 = getelementptr inbounds double, double* %33, i64 64
%38 = getelementptr inbounds double, double* %33, i64 80
%39 = getelementptr inbounds double, double* %33, i64 96
%40 = getelementptr inbounds double, double* %33, i64 112
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* %33, double* %34, double* %35, double* %36, double* %37, double* %38, double* %39, double* %40)
%41 = getelementptr inbounds double, double* %17, i64 6
%42 = getelementptr inbounds double, double* %41, i64 16
%43 = getelementptr inbounds double, double* %41, i64 32
%44 = getelementptr inbounds double, double* %41, i64 48
%45 = getelementptr inbounds double, double* %41, i64 64
%46 = getelementptr inbounds double, double* %41, i64 80
%47 = getelementptr inbounds double, double* %41, i64 96
%48 = getelementptr inbounds double, double* %41, i64 112
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* %41, double* %42, double* %43, double* %44, double* %45, double* %46, double* %47, double* %48)
%49 = getelementptr inbounds double, double* %17, i64 8
%50 = getelementptr inbounds double, double* %49, i64 16
%51 = getelementptr inbounds double, double* %49, i64 32
%52 = getelementptr inbounds double, double* %49, i64 48
%53 = getelementptr inbounds double, double* %49, i64 64
%54 = getelementptr inbounds double, double* %49, i64 80
%55 = getelementptr inbounds double, double* %49, i64 96
%56 = getelementptr inbounds double, double* %49, i64 112
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* %49, double* %50, double* %51, double* %52, double* %53, double* %54, double* %55, double* %56)
%57 = getelementptr inbounds double, double* %17, i64 10
%58 = getelementptr inbounds double, double* %57, i64 16
%59 = getelementptr inbounds double, double* %57, i64 32
%60 = getelementptr inbounds double, double* %57, i64 48
%61 = getelementptr inbounds double, double* %57, i64 64
%62 = getelementptr inbounds double, double* %57, i64 80
%63 = getelementptr inbounds double, double* %57, i64 96
%64 = getelementptr inbounds double, double* %57, i64 112
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* %57, double* %58, double* %59, double* %60, double* %61, double* %62, double* %63, double* %64)
%65 = getelementptr inbounds double, double* %17, i64 12
%66 = getelementptr inbounds double, double* %65, i64 16
%67 = getelementptr inbounds double, double* %65, i64 32
%68 = getelementptr inbounds double, double* %65, i64 48
%69 = getelementptr inbounds double, double* %65, i64 64
%70 = getelementptr inbounds double, double* %65, i64 80
%71 = getelementptr inbounds double, double* %65, i64 96
%72 = getelementptr inbounds double, double* %65, i64 112
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* %65, double* %66, double* %67, double* %68, double* %69, double* %70, double* %71, double* %72)
%73 = getelementptr inbounds double, double* %17, i64 14
%74 = getelementptr inbounds double, double* %73, i64 16
%75 = getelementptr inbounds double, double* %73, i64 32
%76 = getelementptr inbounds double, double* %73, i64 48
%77 = getelementptr inbounds double, double* %73, i64 64
%78 = getelementptr inbounds double, double* %73, i64 80
%79 = getelementptr inbounds double, double* %73, i64 96
%80 = getelementptr inbounds double, double* %73, i64 112
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* %73, double* %74, double* %75, double* %76, double* %77, double* %78, double* %79, double* %80)
%81 = add nuw nsw i64 %16, 128
%82 = icmp ult i64 %16, 16256
br i1 %82, label %15, label %83
83: ; preds = %15, %86
%84 = phi i64 [ %87, %86 ], [ 0, %15 ]
%85 = getelementptr inbounds double, double* %0, i64 %84
br label %89
86: ; preds = %89
%87 = add nuw nsw i64 %84, 1024
%88 = icmp ult i64 %84, 15360
br i1 %88, label %83, label %115
89: ; preds = %83, %89
%90 = phi i64 [ 0, %83 ], [ %99, %89 ]
%91 = getelementptr inbounds double, double* %85, i64 %90
%92 = getelementptr inbounds double, double* %91, i64 128
%93 = getelementptr inbounds double, double* %91, i64 256
%94 = getelementptr inbounds double, double* %91, i64 384
%95 = getelementptr inbounds double, double* %91, i64 512
%96 = getelementptr inbounds double, double* %91, i64 640
%97 = getelementptr inbounds double, double* %91, i64 768
%98 = getelementptr inbounds double, double* %91, i64 896
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* %91, double* %92, double* %93, double* %94, double* %95, double* %96, double* %97, double* %98)
%99 = add nuw nsw i64 %90, 2
%100 = icmp ult i64 %90, 126
br i1 %100, label %89, label %86
101: ; preds = %115
%102 = getelementptr inbounds double, double* %0, i64 8192
br label %103
103: ; preds = %103, %101
%104 = phi i64 [ 0, %101 ], [ %113, %103 ]
%105 = getelementptr inbounds double, double* %102, i64 %104
%106 = getelementptr inbounds double, double* %105, i64 1024
%107 = getelementptr inbounds double, double* %105, i64 2048
%108 = getelementptr inbounds double, double* %105, i64 3072
%109 = getelementptr inbounds double, double* %105, i64 4096
%110 = getelementptr inbounds double, double* %105, i64 5120
%111 = getelementptr inbounds double, double* %105, i64 6144
%112 = getelementptr inbounds double, double* %105, i64 7168
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* %105, double* %106, double* %107, double* %108, double* %109, double* %110, double* %111, double* %112)
%113 = add nuw nsw i64 %104, 2
%114 = icmp ult i64 %104, 1022
br i1 %114, label %103, label %127
115: ; preds = %86, %115
%116 = phi i64 [ %125, %115 ], [ 0, %86 ]
%117 = getelementptr inbounds double, double* %0, i64 %116
%118 = getelementptr inbounds double, double* %117, i64 1024
%119 = getelementptr inbounds double, double* %117, i64 2048
%120 = getelementptr inbounds double, double* %117, i64 3072
%121 = getelementptr inbounds double, double* %117, i64 4096
%122 = getelementptr inbounds double, double* %117, i64 5120
%123 = getelementptr inbounds double, double* %117, i64 6144
%124 = getelementptr inbounds double, double* %117, i64 7168
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* %117, double* %118, double* %119, double* %120, double* %121, double* %122, double* %123, double* %124)
%125 = add nuw nsw i64 %116, 2
%126 = icmp ult i64 %116, 1022
br i1 %126, label %115, label %101
127: ; preds = %103, %127
%128 = phi i64 [ %131, %127 ], [ 0, %103 ]
%129 = getelementptr inbounds double, double* %0, i64 %128
%130 = getelementptr inbounds double, double* %129, i64 8192
tail call void asm sideeffect "movupd ($0), %xmm0\0Amovupd ($1), %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* %129, double* %130)
%131 = add nuw nsw i64 %128, 2
%132 = icmp ult i64 %128, 8190
br i1 %132, label %127, label %225
133: ; preds = %2
tail call void @helper_double_28_recursive(double* %0, i32 14)
%134 = getelementptr inbounds double, double* %0, i64 16384
tail call void @helper_double_28_recursive(double* %134, i32 14)
%135 = getelementptr inbounds double, double* %0, i64 32768
tail call void @helper_double_28_recursive(double* %135, i32 14)
%136 = getelementptr inbounds double, double* %0, i64 49152
tail call void @helper_double_28_recursive(double* %136, i32 14)
%137 = getelementptr inbounds double, double* %0, i64 65536
tail call void @helper_double_28_recursive(double* %137, i32 14)
%138 = getelementptr inbounds double, double* %0, i64 81920
tail call void @helper_double_28_recursive(double* %138, i32 14)
%139 = getelementptr inbounds double, double* %0, i64 98304
tail call void @helper_double_28_recursive(double* %139, i32 14)
%140 = getelementptr inbounds double, double* %0, i64 114688
tail call void @helper_double_28_recursive(double* %140, i32 14)
br label %141
141: ; preds = %133, %141
%142 = phi i64 [ 0, %133 ], [ %151, %141 ]
%143 = getelementptr inbounds double, double* %0, i64 %142
%144 = getelementptr inbounds double, double* %143, i64 16384
%145 = getelementptr inbounds double, double* %143, i64 32768
%146 = getelementptr inbounds double, double* %143, i64 49152
%147 = getelementptr inbounds double, double* %143, i64 65536
%148 = getelementptr inbounds double, double* %143, i64 81920
%149 = getelementptr inbounds double, double* %143, i64 98304
%150 = getelementptr inbounds double, double* %143, 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* %143, double* %144, double* %145, double* %146, double* %147, double* %148, double* %149, double* %150)
%151 = add nuw nsw i64 %142, 2
%152 = icmp ult i64 %142, 16382
br i1 %152, label %141, label %225
153: ; preds = %2
tail call void @helper_double_28_recursive(double* %0, i32 17)
%154 = getelementptr inbounds double, double* %0, i64 131072
tail call void @helper_double_28_recursive(double* %154, i32 17)
%155 = getelementptr inbounds double, double* %0, i64 262144
tail call void @helper_double_28_recursive(double* %155, i32 17)
%156 = getelementptr inbounds double, double* %0, i64 393216
tail call void @helper_double_28_recursive(double* %156, i32 17)
%157 = getelementptr inbounds double, double* %0, i64 524288
tail call void @helper_double_28_recursive(double* %157, i32 17)
%158 = getelementptr inbounds double, double* %0, i64 655360
tail call void @helper_double_28_recursive(double* %158, i32 17)
%159 = getelementptr inbounds double, double* %0, i64 786432
tail call void @helper_double_28_recursive(double* %159, i32 17)
%160 = getelementptr inbounds double, double* %0, i64 917504
tail call void @helper_double_28_recursive(double* %160, i32 17)
br label %161
161: ; preds = %153, %161
%162 = phi i64 [ 0, %153 ], [ %171, %161 ]
%163 = getelementptr inbounds double, double* %0, i64 %162
%164 = getelementptr inbounds double, double* %163, i64 131072
%165 = getelementptr inbounds double, double* %163, i64 262144
%166 = getelementptr inbounds double, double* %163, i64 393216
%167 = getelementptr inbounds double, double* %163, i64 524288
%168 = getelementptr inbounds double, double* %163, i64 655360
%169 = getelementptr inbounds double, double* %163, i64 786432
%170 = getelementptr inbounds double, double* %163, 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* %163, double* %164, double* %165, double* %166, double* %167, double* %168, double* %169, double* %170)
%171 = add nuw nsw i64 %162, 2
%172 = icmp ult i64 %162, 131070
br i1 %172, label %161, label %225
173: ; preds = %2
tail call void @helper_double_28_recursive(double* %0, i32 20)
%174 = getelementptr inbounds double, double* %0, i64 1048576
tail call void @helper_double_28_recursive(double* %174, i32 20)
%175 = getelementptr inbounds double, double* %0, i64 2097152
tail call void @helper_double_28_recursive(double* %175, i32 20)
%176 = getelementptr inbounds double, double* %0, i64 3145728
tail call void @helper_double_28_recursive(double* %176, i32 20)
%177 = getelementptr inbounds double, double* %0, i64 4194304
tail call void @helper_double_28_recursive(double* %177, i32 20)
%178 = getelementptr inbounds double, double* %0, i64 5242880
tail call void @helper_double_28_recursive(double* %178, i32 20)
%179 = getelementptr inbounds double, double* %0, i64 6291456
tail call void @helper_double_28_recursive(double* %179, i32 20)
%180 = getelementptr inbounds double, double* %0, i64 7340032
tail call void @helper_double_28_recursive(double* %180, i32 20)
br label %181
181: ; preds = %173, %181
%182 = phi i64 [ 0, %173 ], [ %191, %181 ]
%183 = getelementptr inbounds double, double* %0, i64 %182
%184 = getelementptr inbounds double, double* %183, i64 1048576
%185 = getelementptr inbounds double, double* %183, i64 2097152
%186 = getelementptr inbounds double, double* %183, i64 3145728
%187 = getelementptr inbounds double, double* %183, i64 4194304
%188 = getelementptr inbounds double, double* %183, i64 5242880
%189 = getelementptr inbounds double, double* %183, i64 6291456
%190 = getelementptr inbounds double, double* %183, i64 7340032
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* %183, double* %184, double* %185, double* %186, double* %187, double* %188, double* %189, double* %190)
%191 = add nuw nsw i64 %182, 2
%192 = icmp ult i64 %182, 1048574
br i1 %192, label %181, label %225
193: ; preds = %2
tail call void @helper_double_28_recursive(double* %0, i32 23)
%194 = getelementptr inbounds double, double* %0, i64 8388608
tail call void @helper_double_28_recursive(double* %194, i32 23)
%195 = getelementptr inbounds double, double* %0, i64 16777216
tail call void @helper_double_28_recursive(double* %195, i32 23)
%196 = getelementptr inbounds double, double* %0, i64 25165824
tail call void @helper_double_28_recursive(double* %196, i32 23)
%197 = getelementptr inbounds double, double* %0, i64 33554432
tail call void @helper_double_28_recursive(double* %197, i32 23)
%198 = getelementptr inbounds double, double* %0, i64 41943040
tail call void @helper_double_28_recursive(double* %198, i32 23)
%199 = getelementptr inbounds double, double* %0, i64 50331648
tail call void @helper_double_28_recursive(double* %199, i32 23)
%200 = getelementptr inbounds double, double* %0, i64 58720256
tail call void @helper_double_28_recursive(double* %200, i32 23)
br label %201
201: ; preds = %193, %201
%202 = phi i64 [ 0, %193 ], [ %211, %201 ]
%203 = getelementptr inbounds double, double* %0, i64 %202
%204 = getelementptr inbounds double, double* %203, i64 8388608
%205 = getelementptr inbounds double, double* %203, i64 16777216
%206 = getelementptr inbounds double, double* %203, i64 25165824
%207 = getelementptr inbounds double, double* %203, i64 33554432
%208 = getelementptr inbounds double, double* %203, i64 41943040
%209 = getelementptr inbounds double, double* %203, i64 50331648
%210 = getelementptr inbounds double, double* %203, i64 58720256
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* %203, double* %204, double* %205, double* %206, double* %207, double* %208, double* %209, double* %210)
%211 = add nuw nsw i64 %202, 2
%212 = icmp ult i64 %202, 8388606
br i1 %212, label %201, label %225
213: ; preds = %2
tail call void @helper_double_28_recursive(double* %0, i32 26)
%214 = getelementptr inbounds double, double* %0, i64 67108864
tail call void @helper_double_28_recursive(double* %214, i32 26)
%215 = getelementptr inbounds double, double* %0, i64 134217728
tail call void @helper_double_28_recursive(double* %215, i32 26)
%216 = getelementptr inbounds double, double* %0, i64 201326592
tail call void @helper_double_28_recursive(double* %216, i32 26)
br label %217
217: ; preds = %213, %217
%218 = phi i64 [ 0, %213 ], [ %223, %217 ]
%219 = getelementptr inbounds double, double* %0, i64 %218
%220 = getelementptr inbounds double, double* %219, i64 67108864
%221 = getelementptr inbounds double, double* %219, i64 134217728
%222 = getelementptr inbounds double, double* %219, i64 201326592
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* %219, double* %220, double* %221, double* %222)
%223 = add nuw nsw i64 %218, 2
%224 = icmp ult i64 %218, 67108862
br i1 %224, label %217, label %225
225: ; preds = %217, %201, %181, %161, %141, %127, %2
ret void
}