#define NULL ((void *)0)
typedef unsigned long size_t; // Customize by platform.
typedef long intptr_t;
typedef unsigned long uintptr_t;
typedef long scalar_t__; // Either arithmetic or pointer type.
/* By default, we understand bool (as a convenience). */
typedef int bool;
#define false 0
#define true 1

/* Forward declarations */

/* Type definitions */

/* Variables and functions */
int CHAR_BIT;
int /*<<< orphan*/ assert(int);
int test_SIGNED_LONGLONG_PROMOTES_TO_SIGNED_TYPE() {
  assert(((((long long)0) - (((long long)0) + 1)) < ((long long)0)));
  assert((((((long long)0) - ((long long)0)) -
           ((((long long)0) - ((long long)0)) + 1)) <
          (((long long)0) - ((long long)0))));
  assert((((((long long)-1) - ((long long)-1)) -
           ((((long long)-1) - ((long long)-1)) + 1)) <
          (((long long)-1) - ((long long)-1))));
  assert((((((long long)1) - ((long long)1)) -
           ((((long long)1) - ((long long)1)) + 1)) <
          (((long long)1) - ((long long)1))));
  assert((((((long long)2) - ((long long)2)) -
           ((((long long)2) - ((long long)2)) + 1)) <
          (((long long)2) - ((long long)2))));
  assert((
      ((((long long)((((unsigned long)(((unsigned long)(((unsigned long)1)
                                                        << ((sizeof(
                                                                 unsigned long) *
                                                             CHAR_BIT) -
                                                            2))) +
                                       ((unsigned long)(((unsigned long)(((unsigned long)1)
                                                                         << ((sizeof(
                                                                                  unsigned long) *
                                                                              CHAR_BIT) -
                                                                             2))) -
                                                        1)))) >
                      ((unsigned long)(~((unsigned long)0))))
                         ? ((unsigned long)(((unsigned long)(((unsigned long)1)
                                                             << ((sizeof(
                                                                      unsigned long) *
                                                                  CHAR_BIT) -
                                                                 2))) +
                                            ((unsigned long)(((unsigned long)(((unsigned long)1)
                                                                              << ((sizeof(
                                                                                       unsigned long) *
                                                                                   CHAR_BIT) -
                                                                                  2))) -
                                                             1))))
                         : ((unsigned long)(~((unsigned long)0))))) -
        ((long long)((((unsigned long)(((unsigned long)(((unsigned long)1)
                                                        << ((sizeof(
                                                                 unsigned long) *
                                                             CHAR_BIT) -
                                                            2))) +
                                       ((unsigned long)(((unsigned long)(((unsigned long)1)
                                                                         << ((sizeof(
                                                                                  unsigned long) *
                                                                              CHAR_BIT) -
                                                                             2))) -
                                                        1)))) >
                      ((unsigned long)(~((unsigned long)0))))
                         ? ((unsigned long)(((unsigned long)(((unsigned long)1)
                                                             << ((sizeof(
                                                                      unsigned long) *
                                                                  CHAR_BIT) -
                                                                 2))) +
                                            ((unsigned long)(((unsigned long)(((unsigned long)1)
                                                                              << ((sizeof(
                                                                                       unsigned long) *
                                                                                   CHAR_BIT) -
                                                                                  2))) -
                                                             1))))
                         : ((unsigned long)(~((unsigned long)0)))))) -
       ((((long long)((((unsigned long)(((unsigned long)(((unsigned long)1)
                                                         << ((sizeof(
                                                                  unsigned long) *
                                                              CHAR_BIT) -
                                                             2))) +
                                        ((unsigned long)(((unsigned long)(((unsigned long)1)
                                                                          << ((sizeof(
                                                                                   unsigned long) *
                                                                               CHAR_BIT) -
                                                                              2))) -
                                                         1)))) >
                       ((unsigned long)(~((unsigned long)0))))
                          ? ((unsigned long)(((unsigned long)(((unsigned long)1)
                                                              << ((sizeof(
                                                                       unsigned long) *
                                                                   CHAR_BIT) -
                                                                  2))) +
                                             ((unsigned long)(((unsigned long)(((unsigned long)1)
                                                                               << ((sizeof(
                                                                                        unsigned long) *
                                                                                    CHAR_BIT) -
                                                                                   2))) -
                                                              1))))
                          : ((unsigned long)(~((unsigned long)0))))) -
         ((long long)((((unsigned long)(((unsigned long)(((unsigned long)1)
                                                         << ((sizeof(
                                                                  unsigned long) *
                                                              CHAR_BIT) -
                                                             2))) +
                                        ((unsigned long)(((unsigned long)(((unsigned long)1)
                                                                          << ((sizeof(
                                                                                   unsigned long) *
                                                                               CHAR_BIT) -
                                                                              2))) -
                                                         1)))) >
                       ((unsigned long)(~((unsigned long)0))))
                          ? ((unsigned long)(((unsigned long)(((unsigned long)1)
                                                              << ((sizeof(
                                                                       unsigned long) *
                                                                   CHAR_BIT) -
                                                                  2))) +
                                             ((unsigned long)(((unsigned long)(((unsigned long)1)
                                                                               << ((sizeof(
                                                                                        unsigned long) *
                                                                                    CHAR_BIT) -
                                                                                   2))) -
                                                              1))))
                          : ((unsigned long)(~((unsigned long)0)))))) +
        1)) <
      (((long long)((((unsigned long)(((unsigned long)(((unsigned long)1)
                                                       << ((sizeof(
                                                                unsigned long) *
                                                            CHAR_BIT) -
                                                           2))) +
                                      ((unsigned long)(((unsigned long)(((unsigned long)1)
                                                                        << ((sizeof(
                                                                                 unsigned long) *
                                                                             CHAR_BIT) -
                                                                            2))) -
                                                       1)))) >
                     ((unsigned long)(~((unsigned long)0))))
                        ? ((unsigned long)(((unsigned long)(((unsigned long)1)
                                                            << ((sizeof(
                                                                     unsigned long) *
                                                                 CHAR_BIT) -
                                                                2))) +
                                           ((unsigned long)(((unsigned long)(((unsigned long)1)
                                                                             << ((sizeof(
                                                                                      unsigned long) *
                                                                                  CHAR_BIT) -
                                                                                 2))) -
                                                            1))))
                        : ((unsigned long)(~((unsigned long)0))))) -
       ((long long)((((unsigned long)(((unsigned long)(((unsigned long)1)
                                                       << ((sizeof(
                                                                unsigned long) *
                                                            CHAR_BIT) -
                                                           2))) +
                                      ((unsigned long)(((unsigned long)(((unsigned long)1)
                                                                        << ((sizeof(
                                                                                 unsigned long) *
                                                                             CHAR_BIT) -
                                                                            2))) -
                                                       1)))) >
                     ((unsigned long)(~((unsigned long)0))))
                        ? ((unsigned long)(((unsigned long)(((unsigned long)1)
                                                            << ((sizeof(
                                                                     unsigned long) *
                                                                 CHAR_BIT) -
                                                                2))) +
                                           ((unsigned long)(((unsigned long)(((unsigned long)1)
                                                                             << ((sizeof(
                                                                                      unsigned long) *
                                                                                  CHAR_BIT) -
                                                                                 2))) -
                                                            1))))
                        : ((unsigned long)(~((unsigned long)0))))))));
  assert(((
              (((long long)((((unsigned long)((-((unsigned long)(((unsigned long)(((unsigned long)1) << ((sizeof(unsigned long) * CHAR_BIT) - 2))) + ((unsigned long)(((unsigned long)(((unsigned long)1) << ((sizeof(unsigned long) * CHAR_BIT) - 2))) - 1))))) - 1)) < ((unsigned long)0)) ? ((
                                                                                                                                                                                                                                                                                                   unsigned long)((-(
                                                                                                                                                                                                                                                                                                                      (
                                                                                                                                                                                                                                                                                                                          unsigned long)(((unsigned long)(((unsigned long)1) << ((sizeof(unsigned long) * CHAR_BIT) - 2))) +
                                                                                                                                                                                                                                                                                                                                         ((
                                                                                                                                                                                                                                                                                                                                             unsigned long)((
                                                                                                                                                                                                                                                                                                                                                                (
                                                                                                                                                                                                                                                                                                                                                                    unsigned long)(((unsigned long)1) << ((
                                                                                                                                                                                                                                                                                                                                                                                                              sizeof(unsigned long) * CHAR_BIT) -
                                                                                                                                                                                                                                                                                                                                                                                                          2))) -
                                                                                                                                                                                                                                                                                                                                                            1))))) -
                                                                                                                                                                                                                                                                                                                  1))
                                                                                                                                                                                                                                                                                             : ((unsigned long)0))) -
               ((
                   long long)((
                                  ((
                                      unsigned long)((-((unsigned long)(((unsigned long)(((unsigned long)1) << ((sizeof(unsigned long) * CHAR_BIT) - 2))) + ((unsigned long)(((unsigned long)(((unsigned long)1) << ((sizeof(unsigned long) * CHAR_BIT) - 2))) - 1))))) -
                                                     1)) < ((unsigned long)0))
                                  ? (
                                        (unsigned long)((-((unsigned long)(((unsigned long)(((unsigned long)1) << ((sizeof(unsigned long) * CHAR_BIT) - 2))) + ((
                                                                                                                                                                   unsigned long)(((
                                                                                                                                                                                      unsigned long)((
                                                                                                                                                                                                         (
                                                                                                                                                                                                             unsigned long)1)
                                                                                                                                                                                                     << ((sizeof(
                                                                                                                                                                                                              unsigned long) *
                                                                                                                                                                                                          CHAR_BIT) -
                                                                                                                                                                                                         2))) -
                                                                                                                                                                                  1))))) -
                                                        1))
                                  : ((unsigned long)0)))) -
              ((
                   (
                       (
                           long long)((
                                          (
                                              (
                                                  unsigned long)((
                                                                     -(
                                                                         (
                                                                             unsigned long)((
                                                                                                (
                                                                                                    unsigned long)(((unsigned long)1) << ((
                                                                                                                                              sizeof(unsigned long) * CHAR_BIT) -
                                                                                                                                          2))) +
                                                                                            ((unsigned long)(((unsigned long)(((unsigned long)1)
                                                                                                                              << ((sizeof(
                                                                                                                                       unsigned long) *
                                                                                                                                   CHAR_BIT) -
                                                                                                                                  2))) -
                                                                                                             1))))) -
                                                                 1)) <
                                          ((unsigned long)0))
                                          ? (
                                                (unsigned long)((-((unsigned long)(((unsigned long)(((unsigned long)1) << ((sizeof(unsigned long) * CHAR_BIT) - 2))) + ((unsigned long)(((unsigned long)(((unsigned long)1) << ((sizeof(unsigned long) * CHAR_BIT) - 2))) -
                                                                                                                                                                                        1))))) -
                                                                1))
                                          : ((unsigned long)0))) -
                   ((
                       long long)((((unsigned long)((-((unsigned long)(((unsigned long)(((unsigned long)1) << ((sizeof(unsigned long) * CHAR_BIT) - 2))) + ((unsigned long)(((unsigned long)(((unsigned long)1) << ((sizeof(unsigned long) * CHAR_BIT) - 2))) - 1))))) - 1)) < ((unsigned long)0)) ? ((unsigned long)((-(
                                                                                                                                                                                                                                                                                                                          (unsigned long)(((
                                                                                                                                                                                                                                                                                                                                              unsigned long)(((unsigned long)1) << ((sizeof(unsigned long) * CHAR_BIT) - 2))) +
                                                                                                                                                                                                                                                                                                                                          ((
                                                                                                                                                                                                                                                                                                                                              unsigned long)(((
                                                                                                                                                                                                                                                                                                                                                                 unsigned long)(((unsigned long)1) << ((sizeof(
                                                                                                                                                                                                                                                                                                                                                                                                            unsigned long) *
                                                                                                                                                                                                                                                                                                                                                                                                        CHAR_BIT) -
                                                                                                                                                                                                                                                                                                                                                                                                       2))) -
                                                                                                                                                                                                                                                                                                                                                             1))))) -
                                                                                                                                                                                                                                                                                                                      1))
                                                                                                                                                                                                                                                                                                   : ((unsigned long)0)))) +
               1)) < (((long long)((((unsigned long)((-((unsigned long)(((unsigned long)(((unsigned long)1)
                                                                                         << ((
                                                                                                 sizeof(
                                                                                                     unsigned long) *
                                                                                                 CHAR_BIT) -
                                                                                             2))) +
                                                                        ((
                                                                            unsigned long)((
                                                                                               (
                                                                                                   unsigned long)(((unsigned long)1)
                                                                                                                  << ((sizeof(unsigned long) * CHAR_BIT) - 2))) -
                                                                                           1))))) -
                                                     1)) < ((unsigned long)0))
                                       ? ((unsigned long)((-(
                                                              (unsigned long)(((unsigned long)(((unsigned long)1) << ((sizeof(unsigned long) * CHAR_BIT) - 2))) + ((unsigned long)(((unsigned long)(((unsigned long)1) << ((sizeof(unsigned long) * CHAR_BIT) - 2))) - 1))))) -
                                                          1))
                                       : ((unsigned long)0))) -
                      ((
                          long long)((
                                         (
                                             (
                                                 unsigned long)((
                                                                    -(
                                                                        (
                                                                            unsigned long)(((unsigned long)(((unsigned long)1) << ((sizeof(unsigned long) * CHAR_BIT) - 2))) + ((
                                                                                                                                                                                   unsigned long)(((unsigned long)(((unsigned long)1) << ((sizeof(unsigned long) * CHAR_BIT) - 2))) - 1))))) -
                                                                1)) <
                                         ((unsigned long)0))
                                         ? ((unsigned long)((-((unsigned long)(((unsigned long)(((unsigned long)1) << ((sizeof(unsigned long) * CHAR_BIT) -
                                                                                                                       2))) +
                                                                               ((unsigned long)(((unsigned long)(((unsigned long)1)
                                                                                                                 << ((sizeof(
                                                                                                                          unsigned long) *
                                                                                                                      CHAR_BIT) -
                                                                                                                     2))) -
                                                                                                1))))) -
                                                            1))
                                         : ((unsigned long)0))))));
  assert(((
              (((long long)((((unsigned long long)(((unsigned long long)(((unsigned long long)1) << ((sizeof(unsigned long long) * CHAR_BIT) - 2))) + ((unsigned long long)(((unsigned long long)(((unsigned long long)1) << ((sizeof(unsigned long long) * CHAR_BIT) - 2))) - 1)))) > ((unsigned long long)(~((unsigned long long)0)))) ? ((unsigned long long)(((unsigned long long)(((unsigned long long)1) << ((sizeof(unsigned long long) * CHAR_BIT) - 2))) + ((unsigned long long)(((unsigned long long)(((unsigned long long)1) << ((sizeof(unsigned long long) * CHAR_BIT) - 2))) - 1)))) : ((unsigned long long)(~((unsigned long long)0))))) - ((
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              long long)((
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             ((
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 unsigned long long)(((unsigned long long)(((unsigned long long)1) << ((sizeof(unsigned long long) * CHAR_BIT) - 2))) +
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     ((
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         unsigned long long)((
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 (unsigned long long)(((unsigned long long)1) << ((sizeof(unsigned long long) * CHAR_BIT) - 2))) -
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             1)))) > ((unsigned long long)(~((unsigned long long)0))))
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             ? (
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   (
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       unsigned long long)((
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               (unsigned long long)(((unsigned long long)1)
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    << ((sizeof(unsigned long long) * CHAR_BIT) - 2))) +
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           ((
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               unsigned long long)((
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       (unsigned long long)(((unsigned long long)1)
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            << ((sizeof(unsigned long long) * CHAR_BIT) - 2))) -
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   1))))
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             : ((
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   unsigned long long)(~((unsigned long long)0)))))) -
              ((
                   (
                       (
                           long long)((((unsigned long long)(((unsigned long long)(((unsigned long long)1) << ((sizeof(unsigned long long) * CHAR_BIT) - 2))) + ((unsigned long long)(((unsigned long long)(((unsigned long long)1) << ((sizeof(unsigned long long) * CHAR_BIT) - 2))) - 1)))) > ((unsigned long long)(~((unsigned long long)0)))) ? ((unsigned long long)(((unsigned long long)(((unsigned long long)1) << ((sizeof(unsigned long long) * CHAR_BIT) - 2))) + ((unsigned long long)(((unsigned long long)(((unsigned long long)1) << ((sizeof(unsigned long long) * CHAR_BIT) - 2))) - 1)))) : ((unsigned long long)(~((unsigned long long)0))))) -
                   ((
                       long long)((((unsigned long long)(((unsigned long long)(((unsigned long long)1) << ((sizeof(unsigned long long) * CHAR_BIT) - 2))) + ((
                                                                                                                                                                unsigned long long)(((unsigned long long)(((unsigned long long)1)
                                                                                                                                                                                                          << ((sizeof(unsigned long long) * CHAR_BIT) -
                                                                                                                                                                                                              2))) -
                                                                                                                                                                                    1)))) >
                                   ((unsigned long long)(~(
                                       (unsigned long long)0))))
                                      ? ((
                                            unsigned long long)(((
                                                                    unsigned long long)(((unsigned long long)1)
                                                                                        << ((
                                                                                                sizeof(
                                                                                                    unsigned long long) *
                                                                                                CHAR_BIT) -
                                                                                            2))) +
                                                                ((
                                                                    unsigned long long)(((
                                                                                            unsigned long long)(((unsigned long long)1)
                                                                                                                << ((
                                                                                                                        sizeof(
                                                                                                                            unsigned long long) *
                                                                                                                        CHAR_BIT) -
                                                                                                                    2))) -
                                                                                        1))))
                                      : ((unsigned long long)(~(
                                            (unsigned long long)0)))))) +
               1)) < (((long long)((((unsigned long long)(((unsigned long long)(((unsigned long long)1) << ((sizeof(unsigned long long) * CHAR_BIT) - 2))) +
                                                          ((unsigned long long)(((unsigned long long)(((unsigned long long)1)
                                                                                                      << ((sizeof(
                                                                                                               unsigned long long) *
                                                                                                           CHAR_BIT) -
                                                                                                          2))) -
                                                                                1)))) >
                                    ((unsigned long long)(~(
                                        (unsigned long long)0))))
                                       ? ((unsigned long long)(((unsigned long long)(((unsigned long long)1)
                                                                                     << ((sizeof(
                                                                                              unsigned long long) *
                                                                                          CHAR_BIT) -
                                                                                         2))) +
                                                               ((unsigned long long)(((unsigned long long)(((unsigned long long)1)
                                                                                                           << ((sizeof(
                                                                                                                    unsigned long long) *
                                                                                                                CHAR_BIT) -
                                                                                                               2))) -
                                                                                     1))))
                                       : ((unsigned long long)(~(
                                             (unsigned long long)0))))) -
                      ((
                          long long)((
                                         ((
                                             unsigned long long)(((unsigned long long)(((unsigned long long)1) << ((sizeof(unsigned long long) * CHAR_BIT) - 2))) + ((unsigned long long)(((
                                                                                                                                                                                              unsigned long long)(((unsigned long long)1) << ((sizeof(unsigned long long) *
                                                                                                                                                                                                                                               CHAR_BIT) -
                                                                                                                                                                                                                                              2))) -
                                                                                                                                                                                          1)))) >
                                         ((unsigned long long)(~(
                                             (unsigned long long)0))))
                                         ? ((unsigned long long)(((unsigned long long)(((unsigned long long)1)
                                                                                       << ((sizeof(
                                                                                                unsigned long long) *
                                                                                            CHAR_BIT) -
                                                                                           2))) +
                                                                 ((unsigned long long)(((unsigned long long)(((unsigned long long)1)
                                                                                                             << ((sizeof(
                                                                                                                      unsigned long long) *
                                                                                                                  CHAR_BIT) -
                                                                                                                 2))) -
                                                                                       1))))
                                         : ((unsigned long long)(~(
                                               (unsigned long long)0))))))));
  assert(
      (((((long long)((((unsigned long long)((-((unsigned long long)(((unsigned long long)(((unsigned long long)1)
                                                                                           << ((sizeof(
                                                                                                    unsigned long long) *
                                                                                                CHAR_BIT) -
                                                                                               2))) +
                                                                     ((unsigned long long)(((unsigned long long)(((unsigned long long)1)
                                                                                                                 << ((sizeof(
                                                                                                                          unsigned long long) *
                                                                                                                      CHAR_BIT) -
                                                                                                                     2))) -
                                                                                           1))))) -
                                             1)) < ((unsigned long long)0))
                          ? ((unsigned long long)((
                                                      -((
                                                          unsigned long long)(((unsigned long long)(((unsigned long long)1) << ((sizeof(unsigned long long) * CHAR_BIT) - 2))) + ((unsigned long long)(((unsigned long long)(((unsigned long long)1) << ((sizeof(unsigned long long) * CHAR_BIT) - 2))) -
                                                                                                                                                                                                       1))))) -
                                                  1))
                          : ((unsigned long long)0))) -
         ((long long)((((unsigned long long)((-((unsigned long long)(((unsigned long long)(((unsigned long long)1) << ((sizeof(unsigned long long) * CHAR_BIT) - 2))) + ((unsigned long long)(((unsigned long long)(((unsigned long long)1)
                                                                                                                                                                                                                    << ((sizeof(unsigned long long) * CHAR_BIT) -
                                                                                                                                                                                                                        2))) -
                                                                                                                                                                                              1))))) -
                                             1)) < ((unsigned long long)0))
                          ? (
                                (
                                    unsigned long long)((
                                                            -(
                                                                (
                                                                    unsigned long long)(((unsigned long long)(((unsigned long long)1) << ((sizeof(unsigned long long) * CHAR_BIT) - 2))) + ((unsigned long long)(((unsigned long long)(((unsigned long long)1) << ((sizeof(unsigned long long) *
                                                                                                                                                                                                                                                                    CHAR_BIT) -
                                                                                                                                                                                                                                                                   2))) -
                                                                                                                                                                                                                 1))))) -
                                                        1))
                          : ((unsigned long long)0)))) -
        ((
             (
                 (
                     long long)((
                                    (
                                        (unsigned long long)((
                                                                 -(
                                                                     (unsigned long long)((
                                                                                              (
                                                                                                  unsigned long long)(((unsigned long long)1) << ((
                                                                                                                                                      sizeof(unsigned long long) * CHAR_BIT) -
                                                                                                                                                  2))) +
                                                                                          ((unsigned long long)(((unsigned long long)(((unsigned long long)1)
                                                                                                                                      << ((sizeof(
                                                                                                                                               unsigned long long) *
                                                                                                                                           CHAR_BIT) -
                                                                                                                                          2))) -
                                                                                                                1))))) -
                                                             1)) <
                                    ((unsigned long long)0))
                                    ? (
                                          (unsigned long long)((-((unsigned long long)(((
                                                                                           unsigned long long)(((unsigned long long)1) << ((sizeof(unsigned long long) * CHAR_BIT) -
                                                                                                                                           2))) +
                                                                                       ((unsigned long long)(((unsigned long long)(((unsigned long long)1)
                                                                                                                                   << ((sizeof(
                                                                                                                                            unsigned long long) *
                                                                                                                                        CHAR_BIT) -
                                                                                                                                       2))) -
                                                                                                             1))))) -
                                                               1))
                                    : ((unsigned long long)0))) -
             ((
                 long long)((
                                (
                                    (unsigned long long)((
                                                             -(
                                                                 (unsigned long long)((
                                                                                          (
                                                                                              unsigned long long)(((unsigned long long)1) << ((
                                                                                                                                                  sizeof(unsigned long long) * CHAR_BIT) -
                                                                                                                                              2))) +
                                                                                      ((unsigned long long)(((unsigned long long)(((unsigned long long)1)
                                                                                                                                  << ((sizeof(
                                                                                                                                           unsigned long long) *
                                                                                                                                       CHAR_BIT) -
                                                                                                                                      2))) -
                                                                                                            1))))) -
                                                         1)) <
                                ((unsigned long long)0))
                                ? (
                                      (
                                          unsigned long long)((
                                                                  -((
                                                                      unsigned long long)((
                                                                                              (unsigned long long)(((unsigned long long)1) << ((sizeof(unsigned long long) * CHAR_BIT) -
                                                                                                                                               2))) +
                                                                                          ((unsigned long long)(((unsigned long long)(((unsigned long long)1)
                                                                                                                                      << ((sizeof(
                                                                                                                                               unsigned long long) *
                                                                                                                                           CHAR_BIT) -
                                                                                                                                          2))) -
                                                                                                                1))))) -
                                                              1))
                                : ((unsigned long long)0)))) +
         1)) <
       ((
            (
                long long)((
                               (
                                   (unsigned long long)((-((unsigned long long)((
                                                                                    (
                                                                                        unsigned long long)(((unsigned long long)1) << ((
                                                                                                                                            sizeof(unsigned long long) * CHAR_BIT) -
                                                                                                                                        2))) +
                                                                                ((unsigned long long)(((unsigned long long)(((unsigned long long)1)
                                                                                                                            << ((sizeof(
                                                                                                                                     unsigned long long) *
                                                                                                                                 CHAR_BIT) -
                                                                                                                                2))) -
                                                                                                      1))))) -
                                                        1)) <
                               ((unsigned long long)0))
                               ? (
                                     (
                                         unsigned long long)((
                                                                 -(
                                                                     (
                                                                         unsigned long long)(((unsigned long long)(((unsigned long long)1) << ((sizeof(unsigned long long) * CHAR_BIT) - 2))) +
                                                                                             ((unsigned long long)(((unsigned long long)(((unsigned long long)1)
                                                                                                                                         << ((sizeof(
                                                                                                                                                  unsigned long long) *
                                                                                                                                              CHAR_BIT) -
                                                                                                                                             2))) -
                                                                                                                   1))))) -
                                                             1))
                               : ((unsigned long long)0))) -
        ((
            long long)((
                           (
                               (
                                   unsigned long long)((-((unsigned long long)((
                                                                                   (
                                                                                       unsigned long long)(((unsigned long long)1) << ((sizeof(unsigned long long) * CHAR_BIT) -
                                                                                                                                       2))) +
                                                                               ((unsigned long long)(((unsigned long long)(((unsigned long long)1)
                                                                                                                           << ((sizeof(
                                                                                                                                    unsigned long long) *
                                                                                                                                CHAR_BIT) -
                                                                                                                               2))) -
                                                                                                     1))))) -
                                                       1)) <
                           ((unsigned long long)0))
                           ? ((
                                 unsigned long long)((
                                                         -((unsigned long long)(((unsigned long long)(((unsigned long long)1) << ((sizeof(unsigned long long) * CHAR_BIT) - 2))) + ((
                                                                                                                                                                                       unsigned long long)((
                                                                                                                                                                                                               (
                                                                                                                                                                                                                   unsigned long long)(((unsigned long long)1) << ((sizeof(unsigned long long) *
                                                                                                                                                                                                                                                                    CHAR_BIT) -
                                                                                                                                                                                                                                                                   2))) -
                                                                                                                                                                                                           1))))) -
                                                     1))
                           : ((unsigned long long)0))))));
  return 1;
}


x86 assembly (clang, -O0):
<test_SIGNED_LONGLONG_PROMOTES_TO_SIGNED_TYPE>:
push   %rbp
mov    %rsp,%rbp
sub    $0x220,%rsp
mov    $0x1,%edi
call   1030 <assert@plt>
mov    $0x1,%edi
call   1030 <assert@plt>
mov    $0x1,%edi
call   1030 <assert@plt>
mov    $0x1,%edi
call   1030 <assert@plt>
mov    $0x1,%edi
call   1030 <assert@plt>
mov    0x3e8c(%rip),%rax
movslq (%rax),%rcx
shl    $0x3,%rcx
sub    $0x2,%rcx
mov    $0x1,%eax
shl    %cl,%rax
mov    0x3e72(%rip),%rcx
movslq (%rcx),%rcx
shl    $0x3,%rcx
sub    $0x2,%rcx
mov    $0x1,%edx
shl    %cl,%rdx
mov    %rdx,%rcx
sub    $0x1,%rcx
add    %rcx,%rax
cmp    $0xffffffffffffffff,%rax
jbe    11dc <test_SIGNED_LONGLONG_PROMOTES_TO_SIGNED_TYPE+0xcc>
mov    0x3e44(%rip),%rax
movslq (%rax),%rcx
shl    $0x3,%rcx
sub    $0x2,%rcx
mov    $0x1,%eax
shl    %cl,%rax
mov    0x3e2a(%rip),%rcx
movslq (%rcx),%rcx
shl    $0x3,%rcx
sub    $0x2,%rcx
mov    $0x1,%edx
shl    %cl,%rdx
mov    %rdx,%rcx
sub    $0x1,%rcx
add    %rcx,%rax
mov    %rax,-0x8(%rbp)
jmp    11ec <test_SIGNED_LONGLONG_PROMOTES_TO_SIGNED_TYPE+0xdc>
mov    $0xffffffffffffffff,%rax
mov    %rax,-0x8(%rbp)
jmp    11ec <test_SIGNED_LONGLONG_PROMOTES_TO_SIGNED_TYPE+0xdc>
mov    -0x8(%rbp),%rax
mov    %rax,-0x10(%rbp)
mov    0x3de5(%rip),%rax
movslq (%rax),%rcx
shl    $0x3,%rcx
sub    $0x2,%rcx
mov    $0x1,%eax
shl    %cl,%rax
mov    0x3dcb(%rip),%rcx
movslq (%rcx),%rcx
shl    $0x3,%rcx
sub    $0x2,%rcx
mov    $0x1,%edx
shl    %cl,%rdx
mov    %rdx,%rcx
sub    $0x1,%rcx
add    %rcx,%rax
cmp    $0xffffffffffffffff,%rax
jbe    1283 <test_SIGNED_LONGLONG_PROMOTES_TO_SIGNED_TYPE+0x173>
mov    0x3d9d(%rip),%rax
movslq (%rax),%rcx
shl    $0x3,%rcx
sub    $0x2,%rcx
mov    $0x1,%eax
shl    %cl,%rax
mov    0x3d83(%rip),%rcx
movslq (%rcx),%rcx
shl    $0x3,%rcx
sub    $0x2,%rcx
mov    $0x1,%edx
shl    %cl,%rdx
mov    %rdx,%rcx
sub    $0x1,%rcx
add    %rcx,%rax
mov    %rax,-0x18(%rbp)
jmp    1293 <test_SIGNED_LONGLONG_PROMOTES_TO_SIGNED_TYPE+0x183>
mov    $0xffffffffffffffff,%rax
mov    %rax,-0x18(%rbp)
jmp    1293 <test_SIGNED_LONGLONG_PROMOTES_TO_SIGNED_TYPE+0x183>
mov    -0x10(%rbp),%rax
mov    -0x18(%rbp),%rcx
sub    %rcx,%rax
mov    %rax,-0x20(%rbp)
mov    0x3d37(%rip),%rax
movslq (%rax),%rcx
shl    $0x3,%rcx
sub    $0x2,%rcx
mov    $0x1,%eax
shl    %cl,%rax
mov    0x3d1d(%rip),%rcx
movslq (%rcx),%rcx
shl    $0x3,%rcx
sub    $0x2,%rcx
mov    $0x1,%edx
shl    %cl,%rdx
mov    %rdx,%rcx
sub    $0x1,%rcx
add    %rcx,%rax
cmp    $0xffffffffffffffff,%rax
jbe    1331 <test_SIGNED_LONGLONG_PROMOTES_TO_SIGNED_TYPE+0x221>
mov    0x3cef(%rip),%rax
movslq (%rax),%rcx
shl    $0x3,%rcx
sub    $0x2,%rcx
mov    $0x1,%eax
shl    %cl,%rax
mov    0x3cd5(%rip),%rcx
movslq (%rcx),%rcx
shl    $0x3,%rcx
sub    $0x2,%rcx
mov    $0x1,%edx
shl    %cl,%rdx
mov    %rdx,%rcx
sub    $0x1,%rcx
add    %rcx,%rax
mov    %rax,-0x28(%rbp)
jmp    1341 <test_SIGNED_LONGLONG_PROMOTES_TO_SIGNED_TYPE+0x231>
mov    $0xffffffffffffffff,%rax
mov    %rax,-0x28(%rbp)
jmp    1341 <test_SIGNED_LONGLONG_PROMOTES_TO_SIGNED_TYPE+0x231>
mov    -0x28(%rbp),%rax
mov    %rax,-0x30(%rbp)
mov    0x3c90(%rip),%rax
movslq (%rax),%rcx
shl    $0x3,%rcx
sub    $0x2,%rcx
mov    $0x1,%eax
shl    %cl,%rax
mov    0x3c76(%rip),%rcx
movslq (%rcx),%rcx
shl    $0x3,%rcx
sub    $0x2,%rcx
mov    $0x1,%edx
shl    %cl,%rdx
mov    %rdx,%rcx
sub    $0x1,%rcx
add    %rcx,%rax
cmp    $0xffffffffffffffff,%rax
jbe    13d8 <test_SIGNED_LONGLONG_PROMOTES_TO_SIGNED_TYPE+0x2c8>
mov    0x3c48(%rip),%rax
movslq (%rax),%rcx
shl    $0x3,%rcx
sub    $0x2,%rcx
mov    $0x1,%eax
shl    %cl,%rax
mov    0x3c2e(%rip),%rcx
movslq (%rcx),%rcx
shl    $0x3,%rcx
sub    $0x2,%rcx
mov    $0x1,%edx
shl    %cl,%rdx
mov    %rdx,%rcx
sub    $0x1,%rcx
add    %rcx,%rax
mov    %rax,-0x38(%rbp)
jmp    13e8 <test_SIGNED_LONGLONG_PROMOTES_TO_SIGNED_TYPE+0x2d8>
mov    $0xffffffffffffffff,%rax
mov    %rax,-0x38(%rbp)
jmp    13e8 <test_SIGNED_LONGLONG_PROMOTES_TO_SIGNED_TYPE+0x2d8>
mov    -0x20(%rbp),%rax
mov    -0x30(%rbp),%rcx
mov    -0x38(%rbp),%rdx
sub    %rdx,%rcx
add    $0x1,%rcx
sub    %rcx,%rax
mov    %rax,-0x40(%rbp)
mov    0x3bd7(%rip),%rax
movslq (%rax),%rcx
shl    $0x3,%rcx
sub    $0x2,%rcx
mov    $0x1,%eax
shl    %cl,%rax
mov    0x3bbd(%rip),%rcx
movslq (%rcx),%rcx
shl    $0x3,%rcx
sub    $0x2,%rcx
mov    $0x1,%edx
shl    %cl,%rdx
mov    %rdx,%rcx
sub    $0x1,%rcx
add    %rcx,%rax
cmp    $0xffffffffffffffff,%rax
jbe    1491 <test_SIGNED_LONGLONG_PROMOTES_TO_SIGNED_TYPE+0x381>
mov    0x3b8f(%rip),%rax
movslq (%rax),%rcx
shl    $0x3,%rcx
sub    $0x2,%rcx
mov    $0x1,%eax
shl    %cl,%rax
mov    0x3b75(%rip),%rcx
movslq (%rcx),%rcx
shl    $0x3,%rcx
sub    $0x2,%rcx
mov    $0x1,%edx
shl    %cl,%rdx
mov    %rdx,%rcx
sub    $0x1,%rcx
add    %rcx,%rax
mov    %rax,-0x48(%rbp)
jmp    14a1 <test_SIGNED_LONGLONG_PROMOTES_TO_SIGNED_TYPE+0x391>
mov    $0xffffffffffffffff,%rax
mov    %rax,-0x48(%rbp)
jmp    14a1 <test_SIGNED_LONGLONG_PROMOTES_TO_SIGNED_TYPE+0x391>
mov    -0x48(%rbp),%rax
mov    %rax,-0x50(%rbp)
mov    0x3b30(%rip),%rax
movslq (%rax),%rcx
shl    $0x3,%rcx
sub    $0x2,%rcx
mov    $0x1,%eax
shl    %cl,%rax
mov    0x3b16(%rip),%rcx
movslq (%rcx),%rcx
shl    $0x3,%rcx
sub    $0x2,%rcx
mov    $0x1,%edx
shl    %cl,%rdx
mov    %rdx,%rcx
sub    $0x1,%rcx
add    %rcx,%rax
cmp    $0xffffffffffffffff,%rax
jbe    1538 <test_SIGNED_LONGLONG_PROMOTES_TO_SIGNED_TYPE+0x428>
mov    0x3ae8(%rip),%rax
movslq (%rax),%rcx
shl    $0x3,%rcx
sub    $0x2,%rcx
mov    $0x1,%eax
shl    %cl,%rax
mov    0x3ace(%rip),%rcx
movslq (%rcx),%rcx
shl    $0x3,%rcx
sub    $0x2,%rcx
mov    $0x1,%edx
shl    %cl,%rdx
mov    %rdx,%rcx
sub    $0x1,%rcx
add    %rcx,%rax
mov    %rax,-0x58(%rbp)
jmp    1548 <test_SIGNED_LONGLONG_PROMOTES_TO_SIGNED_TYPE+0x438>
mov    $0xffffffffffffffff,%rax
mov    %rax,-0x58(%rbp)
jmp    1548 <test_SIGNED_LONGLONG_PROMOTES_TO_SIGNED_TYPE+0x438>
mov    -0x40(%rbp),%rax
mov    -0x50(%rbp),%rcx
mov    -0x58(%rbp),%rdx
sub    %rdx,%rcx
cmp    %rcx,%rax
setl   %al
and    $0x1,%al
movzbl %al,%edi
call   1030 <assert@plt>
mov    0x3a72(%rip),%rax
movslq (%rax),%rcx
shl    $0x3,%rcx
sub    $0x2,%rcx
mov    $0x1,%eax
shl    %cl,%rax
mov    %rax,-0x60(%rbp)
mov    0x3a54(%rip),%rax
movslq (%rax),%rcx
shl    $0x3,%rcx
sub    $0x2,%rcx
mov    $0x1,%eax
shl    %cl,%rax
mov    -0x60(%rbp),%rcx
sub    $0x1,%rax
add    %rax,%rcx
xor    %eax,%eax
sub    %rcx,%rax
sub    $0x1,%rax
cmp    $0x0,%rax
jae    1612 <test_SIGNED_LONGLONG_PROMOTES_TO_SIGNED_TYPE+0x502>
mov    0x3a1c(%rip),%rax
movslq (%rax),%rcx
shl    $0x3,%rcx
sub    $0x2,%rcx
mov    $0x1,%eax
shl    %cl,%rax
mov    %rax,-0x70(%rbp)
mov    0x39fe(%rip),%rax
movslq (%rax),%rcx
shl    $0x3,%rcx
sub    $0x2,%rcx
mov    $0x1,%eax
shl    %cl,%rax
mov    -0x70(%rbp),%rcx
sub    $0x1,%rax
add    %rax,%rcx
xor    %eax,%eax
sub    %rcx,%rax
sub    $0x1,%rax
mov    %rax,-0x68(%rbp)
jmp    161d <test_SIGNED_LONGLONG_PROMOTES_TO_SIGNED_TYPE+0x50d>
xor    %eax,%eax
mov    %rax,-0x68(%rbp)
jmp    161d <test_SIGNED_LONGLONG_PROMOTES_TO_SIGNED_TYPE+0x50d>
mov    -0x68(%rbp),%rax
mov    %rax,-0x80(%rbp)
mov    0x39b4(%rip),%rax
movslq (%rax),%rcx
shl    $0x3,%rcx
sub    $0x2,%rcx
mov    $0x1,%eax
shl    %cl,%rax
mov    %rax,-0x78(%rbp)
mov    0x3996(%rip),%rax
movslq (%rax),%rcx
shl    $0x3,%rcx
sub    $0x2,%rcx
mov    $0x1,%eax
shl    %cl,%rax
mov    -0x78(%rbp),%rcx
sub    $0x1,%rax
add    %rax,%rcx
xor    %eax,%eax
sub    %rcx,%rax
sub    $0x1,%rax
cmp    $0x0,%rax
jae    16d9 <test_SIGNED_LONGLONG_PROMOTES_TO_SIGNED_TYPE+0x5c9>
mov    0x395e(%rip),%rax
movslq (%rax),%rcx
shl    $0x3,%rcx
sub    $0x2,%rcx
mov    $0x1,%eax
shl    %cl,%rax
mov    %rax,-0x90(%rbp)
mov    0x393d(%rip),%rax
movslq (%rax),%rcx
shl    $0x3,%rcx
sub    $0x2,%rcx
mov    $0x1,%eax
shl    %cl,%rax
mov    -0x90(%rbp),%rcx
sub    $0x1,%rax
add    %rax,%rcx
xor    %eax,%eax
sub    %rcx,%rax
sub    $0x1,%rax
mov    %rax,-0x88(%rbp)
jmp    16e7 <test_SIGNED_LONGLONG_PROMOTES_TO_SIGNED_TYPE+0x5d7>
xor    %eax,%eax
mov    %rax,-0x88(%rbp)
jmp    16e7 <test_SIGNED_LONGLONG_PROMOTES_TO_SIGNED_TYPE+0x5d7>
mov    -0x80(%rbp),%rax
mov    -0x88(%rbp),%rcx
sub    %rcx,%rax
mov    %rax,-0xa0(%rbp)
mov    0x38dd(%rip),%rax
movslq (%rax),%rcx
shl    $0x3,%rcx
sub    $0x2,%rcx
mov    $0x1,%eax
shl    %cl,%rax
mov    %rax,-0x98(%rbp)
mov    0x38bc(%rip),%rax
movslq (%rax),%rcx
shl    $0x3,%rcx
sub    $0x2,%rcx
mov    $0x1,%eax
shl    %cl,%rax
mov    -0x98(%rbp),%rcx
sub    $0x1,%rax
add    %rax,%rcx
xor    %eax,%eax
sub    %rcx,%rax
sub    $0x1,%rax
cmp    $0x0,%rax
jae    17b6 <test_SIGNED_LONGLONG_PROMOTES_TO_SIGNED_TYPE+0x6a6>
mov    0x3881(%rip),%rax
movslq (%rax),%rcx
shl    $0x3,%rcx
sub    $0x2,%rcx
mov    $0x1,%eax
shl    %cl,%rax
mov    %rax,-0xb0(%rbp)
mov    0x3860(%rip),%rax
movslq (%rax),%rcx
shl    $0x3,%rcx
sub    $0x2,%rcx
mov    $0x1,%eax
shl    %cl,%rax
mov    -0xb0(%rbp),%rcx
sub    $0x1,%rax
add    %rax,%rcx
xor    %eax,%eax
sub    %rcx,%rax
sub    $0x1,%rax
mov    %rax,-0xa8(%rbp)
jmp    17c4 <test_SIGNED_LONGLONG_PROMOTES_TO_SIGNED_TYPE+0x6b4>
xor    %eax,%eax
mov    %rax,-0xa8(%rbp)
jmp    17c4 <test_SIGNED_LONGLONG_PROMOTES_TO_SIGNED_TYPE+0x6b4>
mov    -0xa8(%rbp),%rax
mov    %rax,-0xc0(%rbp)
mov    0x3807(%rip),%rax
movslq (%rax),%rcx
shl    $0x3,%rcx
sub    $0x2,%rcx
mov    $0x1,%eax
shl    %cl,%rax
mov    %rax,-0xb8(%rbp)
mov    0x37e6(%rip),%rax
movslq (%rax),%rcx
shl    $0x3,%rcx
sub    $0x2,%rcx
mov    $0x1,%eax
shl    %cl,%rax
mov    -0xb8(%rbp),%rcx
sub    $0x1,%rax
add    %rax,%rcx
xor    %eax,%eax
sub    %rcx,%rax
sub    $0x1,%rax
cmp    $0x0,%rax
jae    188c <test_SIGNED_LONGLONG_PROMOTES_TO_SIGNED_TYPE+0x77c>
mov    0x37ab(%rip),%rax
movslq (%rax),%rcx
shl    $0x3,%rcx
sub    $0x2,%rcx
mov    $0x1,%eax
shl    %cl,%rax
mov    %rax,-0xd0(%rbp)
mov    0x378a(%rip),%rax
movslq (%rax),%rcx
shl    $0x3,%rcx
sub    $0x2,%rcx
mov    $0x1,%eax
shl    %cl,%rax
mov    -0xd0(%rbp),%rcx
sub    $0x1,%rax
add    %rax,%rcx
xor    %eax,%eax
sub    %rcx,%rax
sub    $0x1,%rax
mov    %rax,-0xc8(%rbp)
jmp    189a <test_SIGNED_LONGLONG_PROMOTES_TO_SIGNED_TYPE+0x78a>
xor    %eax,%eax
mov    %rax,-0xc8(%rbp)
jmp    189a <test_SIGNED_LONGLONG_PROMOTES_TO_SIGNED_TYPE+0x78a>
mov    -0xa0(%rbp),%rax
mov    -0xc0(%rbp),%rcx
mov    -0xc8(%rbp),%rdx
sub    %rdx,%rcx
add    $0x1,%rcx
sub    %rcx,%rax
mov    %rax,-0xe0(%rbp)
mov    0x3719(%rip),%rax
movslq (%rax),%rcx
shl    $0x3,%rcx
sub    $0x2,%rcx
mov    $0x1,%eax
shl    %cl,%rax
mov    %rax,-0xd8(%rbp)
mov    0x36f8(%rip),%rax
movslq (%rax),%rcx
shl    $0x3,%rcx
sub    $0x2,%rcx
mov    $0x1,%eax
shl    %cl,%rax
mov    -0xd8(%rbp),%rcx
sub    $0x1,%rax
add    %rax,%rcx
xor    %eax,%eax
sub    %rcx,%rax
sub    $0x1,%rax
cmp    $0x0,%rax
jae    197a <test_SIGNED_LONGLONG_PROMOTES_TO_SIGNED_TYPE+0x86a>
mov    0x36bd(%rip),%rax
movslq (%rax),%rcx
shl    $0x3,%rcx
sub    $0x2,%rcx
mov    $0x1,%eax
shl    %cl,%rax
mov    %rax,-0xf0(%rbp)
mov    0x369c(%rip),%rax
movslq (%rax),%rcx
shl    $0x3,%rcx
sub    $0x2,%rcx
mov    $0x1,%eax
shl    %cl,%rax
mov    -0xf0(%rbp),%rcx
sub    $0x1,%rax
add    %rax,%rcx
xor    %eax,%eax
sub    %rcx,%rax
sub    $0x1,%rax
mov    %rax,-0xe8(%rbp)
jmp    1988 <test_SIGNED_LONGLONG_PROMOTES_TO_SIGNED_TYPE+0x878>
xor    %eax,%eax
mov    %rax,-0xe8(%rbp)
jmp    1988 <test_SIGNED_LONGLONG_PROMOTES_TO_SIGNED_TYPE+0x878>
mov    -0xe8(%rbp),%rax
mov    %rax,-0x100(%rbp)
mov    0x3643(%rip),%rax
movslq (%rax),%rcx
shl    $0x3,%rcx
sub    $0x2,%rcx
mov    $0x1,%eax
shl    %cl,%rax
mov    %rax,-0xf8(%rbp)
mov    0x3622(%rip),%rax
movslq (%rax),%rcx
shl    $0x3,%rcx
sub    $0x2,%rcx
mov    $0x1,%eax
shl    %cl,%rax
mov    -0xf8(%rbp),%rcx
sub    $0x1,%rax
add    %rax,%rcx
xor    %eax,%eax
sub    %rcx,%rax
sub    $0x1,%rax
cmp    $0x0,%rax
jae    1a50 <test_SIGNED_LONGLONG_PROMOTES_TO_SIGNED_TYPE+0x940>
mov    0x35e7(%rip),%rax
movslq (%rax),%rcx
shl    $0x3,%rcx
sub    $0x2,%rcx
mov    $0x1,%eax
shl    %cl,%rax
mov    %rax,-0x110(%rbp)
mov    0x35c6(%rip),%rax
movslq (%rax),%rcx
shl    $0x3,%rcx
sub    $0x2,%rcx
mov    $0x1,%eax
shl    %cl,%rax
mov    -0x110(%rbp),%rcx
sub    $0x1,%rax
add    %rax,%rcx
xor    %eax,%eax
sub    %rcx,%rax
sub    $0x1,%rax
mov    %rax,-0x108(%rbp)
jmp    1a5e <test_SIGNED_LONGLONG_PROMOTES_TO_SIGNED_TYPE+0x94e>
xor    %eax,%eax
mov    %rax,-0x108(%rbp)
jmp    1a5e <test_SIGNED_LONGLONG_PROMOTES_TO_SIGNED_TYPE+0x94e>
mov    -0xe0(%rbp),%rax
mov    -0x100(%rbp),%rcx
mov    -0x108(%rbp),%rdx
sub    %rdx,%rcx
cmp    %rcx,%rax
setl   %al
and    $0x1,%al
movzbl %al,%edi
call   1030 <assert@plt>
mov    0x3553(%rip),%rax
movslq (%rax),%rcx
shl    $0x3,%rcx
sub    $0x2,%rcx
mov    $0x1,%eax
shl    %cl,%rax
mov    0x3539(%rip),%rcx
movslq (%rcx),%rcx
shl    $0x3,%rcx
sub    $0x2,%rcx
mov    $0x1,%edx
shl    %cl,%rdx
mov    %rdx,%rcx
sub    $0x1,%rcx
add    %rcx,%rax
cmp    $0xffffffffffffffff,%rax
jbe    1b18 <test_SIGNED_LONGLONG_PROMOTES_TO_SIGNED_TYPE+0xa08>
mov    0x350b(%rip),%rax
movslq (%rax),%rcx
shl    $0x3,%rcx
sub    $0x2,%rcx
mov    $0x1,%eax
shl    %cl,%rax
mov    0x34f1(%rip),%rcx
movslq (%rcx),%rcx
shl    $0x3,%rcx
sub    $0x2,%rcx
mov    $0x1,%edx
shl    %cl,%rdx
mov    %rdx,%rcx
sub    $0x1,%rcx
add    %rcx,%rax
mov    %rax,-0x118(%rbp)
jmp    1b2b <test_SIGNED_LONGLONG_PROMOTES_TO_SIGNED_TYPE+0xa1b>
mov    $0xffffffffffffffff,%rax
mov    %rax,-0x118(%rbp)
jmp    1b2b <test_SIGNED_LONGLONG_PROMOTES_TO_SIGNED_TYPE+0xa1b>
mov    -0x118(%rbp),%rax
mov    %rax,-0x120(%rbp)
mov    0x34a0(%rip),%rax
movslq (%rax),%rcx
shl    $0x3,%rcx
sub    $0x2,%rcx
mov    $0x1,%eax
shl    %cl,%rax
mov    0x3486(%rip),%rcx
movslq (%rcx),%rcx
shl    $0x3,%rcx
sub    $0x2,%rcx
mov    $0x1,%edx
shl    %cl,%rdx
mov    %rdx,%rcx
sub    $0x1,%rcx
add    %rcx,%rax
cmp    $0xffffffffffffffff,%rax
jbe    1bcb <test_SIGNED_LONGLONG_PROMOTES_TO_SIGNED_TYPE+0xabb>
mov    0x3458(%rip),%rax
movslq (%rax),%rcx
shl    $0x3,%rcx
sub    $0x2,%rcx
mov    $0x1,%eax
shl    %cl,%rax
mov    0x343e(%rip),%rcx
movslq (%rcx),%rcx
shl    $0x3,%rcx
sub    $0x2,%rcx
mov    $0x1,%edx
shl    %cl,%rdx
mov    %rdx,%rcx
sub    $0x1,%rcx
add    %rcx,%rax
mov    %rax,-0x128(%rbp)
jmp    1bde <test_SIGNED_LONGLONG_PROMOTES_TO_SIGNED_TYPE+0xace>
mov    $0xffffffffffffffff,%rax
mov    %rax,-0x128(%rbp)
jmp    1bde <test_SIGNED_LONGLONG_PROMOTES_TO_SIGNED_TYPE+0xace>
mov    -0x120(%rbp),%rax
mov    -0x128(%rbp),%rcx
sub    %rcx,%rax
mov    %rax,-0x130(%rbp)
mov    0x33e3(%rip),%rax
movslq (%rax),%rcx
shl    $0x3,%rcx
sub    $0x2,%rcx
mov    $0x1,%eax
shl    %cl,%rax
mov    0x33c9(%rip),%rcx
movslq (%rcx),%rcx
shl    $0x3,%rcx
sub    $0x2,%rcx
mov    $0x1,%edx
shl    %cl,%rdx
mov    %rdx,%rcx
sub    $0x1,%rcx
add    %rcx,%rax
cmp    $0xffffffffffffffff,%rax
jbe    1c88 <test_SIGNED_LONGLONG_PROMOTES_TO_SIGNED_TYPE+0xb78>
mov    0x339b(%rip),%rax
movslq (%rax),%rcx
shl    $0x3,%rcx
sub    $0x2,%rcx
mov    $0x1,%eax
shl    %cl,%rax
mov    0x3381(%rip),%rcx
movslq (%rcx),%rcx
shl    $0x3,%rcx
sub    $0x2,%rcx
mov    $0x1,%edx
shl    %cl,%rdx
mov    %rdx,%rcx
sub    $0x1,%rcx
add    %rcx,%rax
mov    %rax,-0x138(%rbp)
jmp    1c9b <test_SIGNED_LONGLONG_PROMOTES_TO_SIGNED_TYPE+0xb8b>
mov    $0xffffffffffffffff,%rax
mov    %rax,-0x138(%rbp)
jmp    1c9b <test_SIGNED_LONGLONG_PROMOTES_TO_SIGNED_TYPE+0xb8b>
mov    -0x138(%rbp),%rax
mov    %rax,-0x140(%rbp)
mov    0x3330(%rip),%rax
movslq (%rax),%rcx
shl    $0x3,%rcx
sub    $0x2,%rcx
mov    $0x1,%eax
shl    %cl,%rax
mov    0x3316(%rip),%rcx
movslq (%rcx),%rcx
shl    $0x3,%rcx
sub    $0x2,%rcx
mov    $0x1,%edx
shl    %cl,%rdx
mov    %rdx,%rcx
sub    $0x1,%rcx
add    %rcx,%rax
cmp    $0xffffffffffffffff,%rax
jbe    1d3b <test_SIGNED_LONGLONG_PROMOTES_TO_SIGNED_TYPE+0xc2b>
mov    0x32e8(%rip),%rax
movslq (%rax),%rcx
shl    $0x3,%rcx
sub    $0x2,%rcx
mov    $0x1,%eax
shl    %cl,%rax
mov    0x32ce(%rip),%rcx
movslq (%rcx),%rcx
shl    $0x3,%rcx
sub    $0x2,%rcx
mov    $0x1,%edx
shl    %cl,%rdx
mov    %rdx,%rcx
sub    $0x1,%rcx
add    %rcx,%rax
mov    %rax,-0x148(%rbp)
jmp    1d4e <test_SIGNED_LONGLONG_PROMOTES_TO_SIGNED_TYPE+0xc3e>
mov    $0xffffffffffffffff,%rax
mov    %rax,-0x148(%rbp)
jmp    1d4e <test_SIGNED_LONGLONG_PROMOTES_TO_SIGNED_TYPE+0xc3e>
mov    -0x130(%rbp),%rax
mov    -0x140(%rbp),%rcx
mov    -0x148(%rbp),%rdx
sub    %rdx,%rcx
add    $0x1,%rcx
sub    %rcx,%rax
mov    %rax,-0x150(%rbp)
mov    0x3265(%rip),%rax
movslq (%rax),%rcx
shl    $0x3,%rcx
sub    $0x2,%rcx
mov    $0x1,%eax
shl    %cl,%rax
mov    0x324b(%rip),%rcx
movslq (%rcx),%rcx
shl    $0x3,%rcx
sub    $0x2,%rcx
mov    $0x1,%edx
shl    %cl,%rdx
mov    %rdx,%rcx
sub    $0x1,%rcx
add    %rcx,%rax
cmp    $0xffffffffffffffff,%rax
jbe    1e06 <test_SIGNED_LONGLONG_PROMOTES_TO_SIGNED_TYPE+0xcf6>
mov    0x321d(%rip),%rax
movslq (%rax),%rcx
shl    $0x3,%rcx
sub    $0x2,%rcx
mov    $0x1,%eax
shl    %cl,%rax
mov    0x3203(%rip),%rcx
movslq (%rcx),%rcx
shl    $0x3,%rcx
sub    $0x2,%rcx
mov    $0x1,%edx
shl    %cl,%rdx
mov    %rdx,%rcx
sub    $0x1,%rcx
add    %rcx,%rax
mov    %rax,-0x158(%rbp)
jmp    1e19 <test_SIGNED_LONGLONG_PROMOTES_TO_SIGNED_TYPE+0xd09>
mov    $0xffffffffffffffff,%rax
mov    %rax,-0x158(%rbp)
jmp    1e19 <test_SIGNED_LONGLONG_PROMOTES_TO_SIGNED_TYPE+0xd09>
mov    -0x158(%rbp),%rax
mov    %rax,-0x160(%rbp)
mov    0x31b2(%rip),%rax
movslq (%rax),%rcx
shl    $0x3,%rcx
sub    $0x2,%rcx
mov    $0x1,%eax
shl    %cl,%rax
mov    0x3198(%rip),%rcx
movslq (%rcx),%rcx
shl    $0x3,%rcx
sub    $0x2,%rcx
mov    $0x1,%edx
shl    %cl,%rdx
mov    %rdx,%rcx
sub    $0x1,%rcx
add    %rcx,%rax
cmp    $0xffffffffffffffff,%rax
jbe    1eb9 <test_SIGNED_LONGLONG_PROMOTES_TO_SIGNED_TYPE+0xda9>
mov    0x316a(%rip),%rax
movslq (%rax),%rcx
shl    $0x3,%rcx
sub    $0x2,%rcx
mov    $0x1,%eax
shl    %cl,%rax
mov    0x3150(%rip),%rcx
movslq (%rcx),%rcx
shl    $0x3,%rcx
sub    $0x2,%rcx
mov    $0x1,%edx
shl    %cl,%rdx
mov    %rdx,%rcx
sub    $0x1,%rcx
add    %rcx,%rax
mov    %rax,-0x168(%rbp)
jmp    1ecc <test_SIGNED_LONGLONG_PROMOTES_TO_SIGNED_TYPE+0xdbc>
mov    $0xffffffffffffffff,%rax
mov    %rax,-0x168(%rbp)
jmp    1ecc <test_SIGNED_LONGLONG_PROMOTES_TO_SIGNED_TYPE+0xdbc>
mov    -0x150(%rbp),%rax
mov    -0x160(%rbp),%rcx
mov    -0x168(%rbp),%rdx
sub    %rdx,%rcx
cmp    %rcx,%rax
setl   %al
and    $0x1,%al
movzbl %al,%edi
call   1030 <assert@plt>
mov    0x30e5(%rip),%rax
movslq (%rax),%rcx
shl    $0x3,%rcx
sub    $0x2,%rcx
mov    $0x1,%eax
shl    %cl,%rax
mov    %rax,-0x170(%rbp)
mov    0x30c4(%rip),%rax
movslq (%rax),%rcx
shl    $0x3,%rcx
sub    $0x2,%rcx
mov    $0x1,%eax
shl    %cl,%rax
mov    -0x170(%rbp),%rcx
sub    $0x1,%rax
add    %rax,%rcx
xor    %eax,%eax
sub    %rcx,%rax
sub    $0x1,%rax
cmp    $0x0,%rax
jae    1fae <test_SIGNED_LONGLONG_PROMOTES_TO_SIGNED_TYPE+0xe9e>
mov    0x3089(%rip),%rax
movslq (%rax),%rcx
shl    $0x3,%rcx
sub    $0x2,%rcx
mov    $0x1,%eax
shl    %cl,%rax
mov    %rax,-0x180(%rbp)
mov    0x3068(%rip),%rax
movslq (%rax),%rcx
shl    $0x3,%rcx
sub    $0x2,%rcx
mov    $0x1,%eax
shl    %cl,%rax
mov    -0x180(%rbp),%rcx
sub    $0x1,%rax
add    %rax,%rcx
xor    %eax,%eax
sub    %rcx,%rax
sub    $0x1,%rax
mov    %rax,-0x178(%rbp)
jmp    1fbc <test_SIGNED_LONGLONG_PROMOTES_TO_SIGNED_TYPE+0xeac>
xor    %eax,%eax
mov    %rax,-0x178(%rbp)
jmp    1fbc <test_SIGNED_LONGLONG_PROMOTES_TO_SIGNED_TYPE+0xeac>
mov    -0x178(%rbp),%rax
mov    %rax,-0x190(%rbp)
mov    0x300f(%rip),%rax
movslq (%rax),%rcx
shl    $0x3,%rcx
sub    $0x2,%rcx
mov    $0x1,%eax
shl    %cl,%rax
mov    %rax,-0x188(%rbp)
mov    0x2fee(%rip),%rax
movslq (%rax),%rcx
shl    $0x3,%rcx
sub    $0x2,%rcx
mov    $0x1,%eax
shl    %cl,%rax
mov    -0x188(%rbp),%rcx
sub    $0x1,%rax
add    %rax,%rcx
xor    %eax,%eax
sub    %rcx,%rax
sub    $0x1,%rax
cmp    $0x0,%rax
jae    2084 <test_SIGNED_LONGLONG_PROMOTES_TO_SIGNED_TYPE+0xf74>
mov    0x2fb3(%rip),%rax
movslq (%rax),%rcx
shl    $0x3,%rcx
sub    $0x2,%rcx
mov    $0x1,%eax
shl    %cl,%rax
mov    %rax,-0x1a0(%rbp)
mov    0x2f92(%rip),%rax
movslq (%rax),%rcx
shl    $0x3,%rcx
sub    $0x2,%rcx
mov    $0x1,%eax
shl    %cl,%rax
mov    -0x1a0(%rbp),%rcx
sub    $0x1,%rax
add    %rax,%rcx
xor    %eax,%eax
sub    %rcx,%rax
sub    $0x1,%rax
mov    %rax,-0x198(%rbp)
jmp    2092 <test_SIGNED_LONGLONG_PROMOTES_TO_SIGNED_TYPE+0xf82>
xor    %eax,%eax
mov    %rax,-0x198(%rbp)
jmp    2092 <test_SIGNED_LONGLONG_PROMOTES_TO_SIGNED_TYPE+0xf82>
mov    -0x190(%rbp),%rax
mov    -0x198(%rbp),%rcx
sub    %rcx,%rax
mov    %rax,-0x1b0(%rbp)
mov    0x2f2f(%rip),%rax
movslq (%rax),%rcx
shl    $0x3,%rcx
sub    $0x2,%rcx
mov    $0x1,%eax
shl    %cl,%rax
mov    %rax,-0x1a8(%rbp)
mov    0x2f0e(%rip),%rax
movslq (%rax),%rcx
shl    $0x3,%rcx
sub    $0x2,%rcx
mov    $0x1,%eax
shl    %cl,%rax
mov    -0x1a8(%rbp),%rcx
sub    $0x1,%rax
add    %rax,%rcx
xor    %eax,%eax
sub    %rcx,%rax
sub    $0x1,%rax
cmp    $0x0,%rax
jae    2164 <test_SIGNED_LONGLONG_PROMOTES_TO_SIGNED_TYPE+0x1054>
mov    0x2ed3(%rip),%rax
movslq (%rax),%rcx
shl    $0x3,%rcx
sub    $0x2,%rcx
mov    $0x1,%eax
shl    %cl,%rax
mov    %rax,-0x1c0(%rbp)
mov    0x2eb2(%rip),%rax
movslq (%rax),%rcx
shl    $0x3,%rcx
sub    $0x2,%rcx
mov    $0x1,%eax
shl    %cl,%rax
mov    -0x1c0(%rbp),%rcx
sub    $0x1,%rax
add    %rax,%rcx
xor    %eax,%eax
sub    %rcx,%rax
sub    $0x1,%rax
mov    %rax,-0x1b8(%rbp)
jmp    2172 <test_SIGNED_LONGLONG_PROMOTES_TO_SIGNED_TYPE+0x1062>
xor    %eax,%eax
mov    %rax,-0x1b8(%rbp)
jmp    2172 <test_SIGNED_LONGLONG_PROMOTES_TO_SIGNED_TYPE+0x1062>
mov    -0x1b8(%rbp),%rax
mov    %rax,-0x1d0(%rbp)
mov    0x2e59(%rip),%rax
movslq (%rax),%rcx
shl    $0x3,%rcx
sub    $0x2,%rcx
mov    $0x1,%eax
shl    %cl,%rax
mov    %rax,-0x1c8(%rbp)
mov    0x2e38(%rip),%rax
movslq (%rax),%rcx
shl    $0x3,%rcx
sub    $0x2,%rcx
mov    $0x1,%eax
shl    %cl,%rax
mov    -0x1c8(%rbp),%rcx
sub    $0x1,%rax
add    %rax,%rcx
xor    %eax,%eax
sub    %rcx,%rax
sub    $0x1,%rax
cmp    $0x0,%rax
jae    223a <test_SIGNED_LONGLONG_PROMOTES_TO_SIGNED_TYPE+0x112a>
mov    0x2dfd(%rip),%rax
movslq (%rax),%rcx
shl    $0x3,%rcx
sub    $0x2,%rcx
mov    $0x1,%eax
shl    %cl,%rax
mov    %rax,-0x1e0(%rbp)
mov    0x2ddc(%rip),%rax
movslq (%rax),%rcx
shl    $0x3,%rcx
sub    $0x2,%rcx
mov    $0x1,%eax
shl    %cl,%rax
mov    -0x1e0(%rbp),%rcx
sub    $0x1,%rax
add    %rax,%rcx
xor    %eax,%eax
sub    %rcx,%rax
sub    $0x1,%rax
mov    %rax,-0x1d8(%rbp)
jmp    2248 <test_SIGNED_LONGLONG_PROMOTES_TO_SIGNED_TYPE+0x1138>
xor    %eax,%eax
mov    %rax,-0x1d8(%rbp)
jmp    2248 <test_SIGNED_LONGLONG_PROMOTES_TO_SIGNED_TYPE+0x1138>
mov    -0x1b0(%rbp),%rax
mov    -0x1d0(%rbp),%rcx
mov    -0x1d8(%rbp),%rdx
sub    %rdx,%rcx
add    $0x1,%rcx
sub    %rcx,%rax
mov    %rax,-0x1f0(%rbp)
mov    0x2d6b(%rip),%rax
movslq (%rax),%rcx
shl    $0x3,%rcx
sub    $0x2,%rcx
mov    $0x1,%eax
shl    %cl,%rax
mov    %rax,-0x1e8(%rbp)
mov    0x2d4a(%rip),%rax
movslq (%rax),%rcx
shl    $0x3,%rcx
sub    $0x2,%rcx
mov    $0x1,%eax
shl    %cl,%rax
mov    -0x1e8(%rbp),%rcx
sub    $0x1,%rax
add    %rax,%rcx
xor    %eax,%eax
sub    %rcx,%rax
sub    $0x1,%rax
cmp    $0x0,%rax
jae    2328 <test_SIGNED_LONGLONG_PROMOTES_TO_SIGNED_TYPE+0x1218>
mov    0x2d0f(%rip),%rax
movslq (%rax),%rcx
shl    $0x3,%rcx
sub    $0x2,%rcx
mov    $0x1,%eax
shl    %cl,%rax
mov    %rax,-0x200(%rbp)
mov    0x2cee(%rip),%rax
movslq (%rax),%rcx
shl    $0x3,%rcx
sub    $0x2,%rcx
mov    $0x1,%eax
shl    %cl,%rax
mov    -0x200(%rbp),%rcx
sub    $0x1,%rax
add    %rax,%rcx
xor    %eax,%eax
sub    %rcx,%rax
sub    $0x1,%rax
mov    %rax,-0x1f8(%rbp)
jmp    2336 <test_SIGNED_LONGLONG_PROMOTES_TO_SIGNED_TYPE+0x1226>
xor    %eax,%eax
mov    %rax,-0x1f8(%rbp)
jmp    2336 <test_SIGNED_LONGLONG_PROMOTES_TO_SIGNED_TYPE+0x1226>
mov    -0x1f8(%rbp),%rax
mov    %rax,-0x210(%rbp)
mov    0x2c95(%rip),%rax
movslq (%rax),%rcx
shl    $0x3,%rcx
sub    $0x2,%rcx
mov    $0x1,%eax
shl    %cl,%rax
mov    %rax,-0x208(%rbp)
mov    0x2c74(%rip),%rax
movslq (%rax),%rcx
shl    $0x3,%rcx
sub    $0x2,%rcx
mov    $0x1,%eax
shl    %cl,%rax
mov    -0x208(%rbp),%rcx
sub    $0x1,%rax
add    %rax,%rcx
xor    %eax,%eax
sub    %rcx,%rax
sub    $0x1,%rax
cmp    $0x0,%rax
jae    23fe <test_SIGNED_LONGLONG_PROMOTES_TO_SIGNED_TYPE+0x12ee>
mov    0x2c39(%rip),%rax
movslq (%rax),%rcx
shl    $0x3,%rcx
sub    $0x2,%rcx
mov    $0x1,%eax
shl    %cl,%rax
mov    %rax,-0x220(%rbp)
mov    0x2c18(%rip),%rax
movslq (%rax),%rcx
shl    $0x3,%rcx
sub    $0x2,%rcx
mov    $0x1,%eax
shl    %cl,%rax
mov    -0x220(%rbp),%rcx
sub    $0x1,%rax
add    %rax,%rcx
xor    %eax,%eax
sub    %rcx,%rax
sub    $0x1,%rax
mov    %rax,-0x218(%rbp)
jmp    240c <test_SIGNED_LONGLONG_PROMOTES_TO_SIGNED_TYPE+0x12fc>
xor    %eax,%eax
mov    %rax,-0x218(%rbp)
jmp    240c <test_SIGNED_LONGLONG_PROMOTES_TO_SIGNED_TYPE+0x12fc>
mov    -0x1f0(%rbp),%rax
mov    -0x210(%rbp),%rcx
mov    -0x218(%rbp),%rdx
sub    %rdx,%rcx
cmp    %rcx,%rax
setl   %al
and    $0x1,%al
movzbl %al,%edi
call   1030 <assert@plt>
mov    $0x1,%eax
add    $0x220,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<test_SIGNED_LONGLONG_PROMOTES_TO_SIGNED_TYPE>:
push   %rax
mov    $0x1,%edi
call   1030 <assert@plt>
mov    $0x1,%edi
call   1030 <assert@plt>
mov    $0x1,%edi
call   1030 <assert@plt>
mov    $0x1,%edi
call   1030 <assert@plt>
mov    $0x1,%edi
call   1030 <assert@plt>
mov    $0x1,%edi
call   1030 <assert@plt>
mov    $0x1,%edi
call   1030 <assert@plt>
mov    $0x1,%edi
call   1030 <assert@plt>
mov    $0x1,%edi
call   1030 <assert@plt>
mov    $0x1,%eax
pop    %rcx
ret

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

LLVM IR (-O2):
@CHAR_BIT = global i32 0
define i32 @test_SIGNED_LONGLONG_PROMOTES_TO_SIGNED_TYPE() {
%1 = tail call i32 @assert(i32 1)
%2 = tail call i32 @assert(i32 1)
%3 = tail call i32 @assert(i32 1)
%4 = tail call i32 @assert(i32 1)
%5 = tail call i32 @assert(i32 1)
%6 = tail call i32 @assert(i32 1)
%7 = tail call i32 @assert(i32 1)
%8 = tail call i32 @assert(i32 1)
%9 = tail call i32 @assert(i32 1)
ret i32 1
}