#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_UNSIGNED_LONGLONG_NOT_PROMOTES_TO_SIGNED_TYPE() {
  assert(!((((unsigned long long)0) - (((unsigned long long)0) + 1)) <
           ((unsigned long long)0)));
  assert(!(((((unsigned long long)0) - ((unsigned long long)0)) -
            ((((unsigned long long)0) - ((unsigned long long)0)) + 1)) <
           (((unsigned long long)0) - ((unsigned long long)0))));
  assert(!(((((unsigned long long)-1) - ((unsigned long long)-1)) -
            ((((unsigned long long)-1) - ((unsigned long long)-1)) + 1)) <
           (((unsigned long long)-1) - ((unsigned long long)-1))));
  assert(!(((((unsigned long long)1) - ((unsigned long long)1)) -
            ((((unsigned long long)1) - ((unsigned long long)1)) + 1)) <
           (((unsigned long long)1) - ((unsigned long long)1))));
  assert(!(((((unsigned long long)2) - ((unsigned long long)2)) -
            ((((unsigned long long)2) - ((unsigned long long)2)) + 1)) <
           (((unsigned long long)2) - ((unsigned long long)2))));
  assert(!((
               (
                   ((unsigned 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))))) - ((unsigned 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)))))) -
               ((
                    ((
                        unsigned 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))))) -
                    ((unsigned 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)) < (((unsigned 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))))) -
                       ((unsigned 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(
      !(
          (
              (
                  (
                      (
                          unsigned 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))) -
                  ((
                      unsigned 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)))) -
              ((
                   (
                       (
                           unsigned 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))) -
                   ((
                       unsigned 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)) <
          ((
               (
                   unsigned 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))) -
           ((unsigned 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(!(
      ((((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)))) >
                               ((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))))) -
        ((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)))) > ((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)))))) -
       ((((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)))) >
                                ((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))))) -
         ((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)))) > ((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)) <
      (((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)))) >
                              ((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))))) -
       ((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)))) >
                              ((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(!(
      ((((unsigned 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))) -
        ((unsigned 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)))) -
       ((((unsigned 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))) -
         ((
             unsigned 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)) <
      (((unsigned 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))) -
       ((
           unsigned 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_UNSIGNED_LONGLONG_NOT_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_UNSIGNED_LONGLONG_NOT_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_UNSIGNED_LONGLONG_NOT_PROMOTES_TO_SIGNED_TYPE+0xdc>
mov    $0xffffffffffffffff,%rax
mov    %rax,-0x8(%rbp)
jmp    11ec <test_UNSIGNED_LONGLONG_NOT_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_UNSIGNED_LONGLONG_NOT_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_UNSIGNED_LONGLONG_NOT_PROMOTES_TO_SIGNED_TYPE+0x183>
mov    $0xffffffffffffffff,%rax
mov    %rax,-0x18(%rbp)
jmp    1293 <test_UNSIGNED_LONGLONG_NOT_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_UNSIGNED_LONGLONG_NOT_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_UNSIGNED_LONGLONG_NOT_PROMOTES_TO_SIGNED_TYPE+0x231>
mov    $0xffffffffffffffff,%rax
mov    %rax,-0x28(%rbp)
jmp    1341 <test_UNSIGNED_LONGLONG_NOT_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_UNSIGNED_LONGLONG_NOT_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_UNSIGNED_LONGLONG_NOT_PROMOTES_TO_SIGNED_TYPE+0x2d8>
mov    $0xffffffffffffffff,%rax
mov    %rax,-0x38(%rbp)
jmp    13e8 <test_UNSIGNED_LONGLONG_NOT_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_UNSIGNED_LONGLONG_NOT_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_UNSIGNED_LONGLONG_NOT_PROMOTES_TO_SIGNED_TYPE+0x391>
mov    $0xffffffffffffffff,%rax
mov    %rax,-0x48(%rbp)
jmp    14a1 <test_UNSIGNED_LONGLONG_NOT_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_UNSIGNED_LONGLONG_NOT_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_UNSIGNED_LONGLONG_NOT_PROMOTES_TO_SIGNED_TYPE+0x438>
mov    $0xffffffffffffffff,%rax
mov    %rax,-0x58(%rbp)
jmp    1548 <test_UNSIGNED_LONGLONG_NOT_PROMOTES_TO_SIGNED_TYPE+0x438>
mov    -0x40(%rbp),%rax
mov    -0x50(%rbp),%rcx
mov    -0x58(%rbp),%rdx
sub    %rdx,%rcx
cmp    %rcx,%rax
setb   %al
xor    $0xff,%al
and    $0x1,%al
movzbl %al,%edi
call   1030 <assert@plt>
mov    0x3a70(%rip),%rax
movslq (%rax),%rcx
shl    $0x3,%rcx
sub    $0x2,%rcx
mov    $0x1,%eax
shl    %cl,%rax
mov    %rax,-0x60(%rbp)
mov    0x3a52(%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    1614 <test_UNSIGNED_LONGLONG_NOT_PROMOTES_TO_SIGNED_TYPE+0x504>
mov    0x3a1a(%rip),%rax
movslq (%rax),%rcx
shl    $0x3,%rcx
sub    $0x2,%rcx
mov    $0x1,%eax
shl    %cl,%rax
mov    %rax,-0x70(%rbp)
mov    0x39fc(%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    161f <test_UNSIGNED_LONGLONG_NOT_PROMOTES_TO_SIGNED_TYPE+0x50f>
xor    %eax,%eax
mov    %rax,-0x68(%rbp)
jmp    161f <test_UNSIGNED_LONGLONG_NOT_PROMOTES_TO_SIGNED_TYPE+0x50f>
mov    -0x68(%rbp),%rax
mov    %rax,-0x80(%rbp)
mov    0x39b2(%rip),%rax
movslq (%rax),%rcx
shl    $0x3,%rcx
sub    $0x2,%rcx
mov    $0x1,%eax
shl    %cl,%rax
mov    %rax,-0x78(%rbp)
mov    0x3994(%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    16db <test_UNSIGNED_LONGLONG_NOT_PROMOTES_TO_SIGNED_TYPE+0x5cb>
mov    0x395c(%rip),%rax
movslq (%rax),%rcx
shl    $0x3,%rcx
sub    $0x2,%rcx
mov    $0x1,%eax
shl    %cl,%rax
mov    %rax,-0x90(%rbp)
mov    0x393b(%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    16e9 <test_UNSIGNED_LONGLONG_NOT_PROMOTES_TO_SIGNED_TYPE+0x5d9>
xor    %eax,%eax
mov    %rax,-0x88(%rbp)
jmp    16e9 <test_UNSIGNED_LONGLONG_NOT_PROMOTES_TO_SIGNED_TYPE+0x5d9>
mov    -0x80(%rbp),%rax
mov    -0x88(%rbp),%rcx
sub    %rcx,%rax
mov    %rax,-0xa0(%rbp)
mov    0x38db(%rip),%rax
movslq (%rax),%rcx
shl    $0x3,%rcx
sub    $0x2,%rcx
mov    $0x1,%eax
shl    %cl,%rax
mov    %rax,-0x98(%rbp)
mov    0x38ba(%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    17b8 <test_UNSIGNED_LONGLONG_NOT_PROMOTES_TO_SIGNED_TYPE+0x6a8>
mov    0x387f(%rip),%rax
movslq (%rax),%rcx
shl    $0x3,%rcx
sub    $0x2,%rcx
mov    $0x1,%eax
shl    %cl,%rax
mov    %rax,-0xb0(%rbp)
mov    0x385e(%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    17c6 <test_UNSIGNED_LONGLONG_NOT_PROMOTES_TO_SIGNED_TYPE+0x6b6>
xor    %eax,%eax
mov    %rax,-0xa8(%rbp)
jmp    17c6 <test_UNSIGNED_LONGLONG_NOT_PROMOTES_TO_SIGNED_TYPE+0x6b6>
mov    -0xa8(%rbp),%rax
mov    %rax,-0xc0(%rbp)
mov    0x3805(%rip),%rax
movslq (%rax),%rcx
shl    $0x3,%rcx
sub    $0x2,%rcx
mov    $0x1,%eax
shl    %cl,%rax
mov    %rax,-0xb8(%rbp)
mov    0x37e4(%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    188e <test_UNSIGNED_LONGLONG_NOT_PROMOTES_TO_SIGNED_TYPE+0x77e>
mov    0x37a9(%rip),%rax
movslq (%rax),%rcx
shl    $0x3,%rcx
sub    $0x2,%rcx
mov    $0x1,%eax
shl    %cl,%rax
mov    %rax,-0xd0(%rbp)
mov    0x3788(%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    189c <test_UNSIGNED_LONGLONG_NOT_PROMOTES_TO_SIGNED_TYPE+0x78c>
xor    %eax,%eax
mov    %rax,-0xc8(%rbp)
jmp    189c <test_UNSIGNED_LONGLONG_NOT_PROMOTES_TO_SIGNED_TYPE+0x78c>
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    0x3717(%rip),%rax
movslq (%rax),%rcx
shl    $0x3,%rcx
sub    $0x2,%rcx
mov    $0x1,%eax
shl    %cl,%rax
mov    %rax,-0xd8(%rbp)
mov    0x36f6(%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    197c <test_UNSIGNED_LONGLONG_NOT_PROMOTES_TO_SIGNED_TYPE+0x86c>
mov    0x36bb(%rip),%rax
movslq (%rax),%rcx
shl    $0x3,%rcx
sub    $0x2,%rcx
mov    $0x1,%eax
shl    %cl,%rax
mov    %rax,-0xf0(%rbp)
mov    0x369a(%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    198a <test_UNSIGNED_LONGLONG_NOT_PROMOTES_TO_SIGNED_TYPE+0x87a>
xor    %eax,%eax
mov    %rax,-0xe8(%rbp)
jmp    198a <test_UNSIGNED_LONGLONG_NOT_PROMOTES_TO_SIGNED_TYPE+0x87a>
mov    -0xe8(%rbp),%rax
mov    %rax,-0x100(%rbp)
mov    0x3641(%rip),%rax
movslq (%rax),%rcx
shl    $0x3,%rcx
sub    $0x2,%rcx
mov    $0x1,%eax
shl    %cl,%rax
mov    %rax,-0xf8(%rbp)
mov    0x3620(%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    1a52 <test_UNSIGNED_LONGLONG_NOT_PROMOTES_TO_SIGNED_TYPE+0x942>
mov    0x35e5(%rip),%rax
movslq (%rax),%rcx
shl    $0x3,%rcx
sub    $0x2,%rcx
mov    $0x1,%eax
shl    %cl,%rax
mov    %rax,-0x110(%rbp)
mov    0x35c4(%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    1a60 <test_UNSIGNED_LONGLONG_NOT_PROMOTES_TO_SIGNED_TYPE+0x950>
xor    %eax,%eax
mov    %rax,-0x108(%rbp)
jmp    1a60 <test_UNSIGNED_LONGLONG_NOT_PROMOTES_TO_SIGNED_TYPE+0x950>
mov    -0xe0(%rbp),%rax
mov    -0x100(%rbp),%rcx
mov    -0x108(%rbp),%rdx
sub    %rdx,%rcx
cmp    %rcx,%rax
setb   %al
xor    $0xff,%al
and    $0x1,%al
movzbl %al,%edi
call   1030 <assert@plt>
mov    0x354f(%rip),%rax
movslq (%rax),%rcx
shl    $0x3,%rcx
sub    $0x2,%rcx
mov    $0x1,%eax
shl    %cl,%rax
mov    0x3535(%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    1b1c <test_UNSIGNED_LONGLONG_NOT_PROMOTES_TO_SIGNED_TYPE+0xa0c>
mov    0x3507(%rip),%rax
movslq (%rax),%rcx
shl    $0x3,%rcx
sub    $0x2,%rcx
mov    $0x1,%eax
shl    %cl,%rax
mov    0x34ed(%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    1b2f <test_UNSIGNED_LONGLONG_NOT_PROMOTES_TO_SIGNED_TYPE+0xa1f>
mov    $0xffffffffffffffff,%rax
mov    %rax,-0x118(%rbp)
jmp    1b2f <test_UNSIGNED_LONGLONG_NOT_PROMOTES_TO_SIGNED_TYPE+0xa1f>
mov    -0x118(%rbp),%rax
mov    %rax,-0x120(%rbp)
mov    0x349c(%rip),%rax
movslq (%rax),%rcx
shl    $0x3,%rcx
sub    $0x2,%rcx
mov    $0x1,%eax
shl    %cl,%rax
mov    0x3482(%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    1bcf <test_UNSIGNED_LONGLONG_NOT_PROMOTES_TO_SIGNED_TYPE+0xabf>
mov    0x3454(%rip),%rax
movslq (%rax),%rcx
shl    $0x3,%rcx
sub    $0x2,%rcx
mov    $0x1,%eax
shl    %cl,%rax
mov    0x343a(%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    1be2 <test_UNSIGNED_LONGLONG_NOT_PROMOTES_TO_SIGNED_TYPE+0xad2>
mov    $0xffffffffffffffff,%rax
mov    %rax,-0x128(%rbp)
jmp    1be2 <test_UNSIGNED_LONGLONG_NOT_PROMOTES_TO_SIGNED_TYPE+0xad2>
mov    -0x120(%rbp),%rax
mov    -0x128(%rbp),%rcx
sub    %rcx,%rax
mov    %rax,-0x130(%rbp)
mov    0x33df(%rip),%rax
movslq (%rax),%rcx
shl    $0x3,%rcx
sub    $0x2,%rcx
mov    $0x1,%eax
shl    %cl,%rax
mov    0x33c5(%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    1c8c <test_UNSIGNED_LONGLONG_NOT_PROMOTES_TO_SIGNED_TYPE+0xb7c>
mov    0x3397(%rip),%rax
movslq (%rax),%rcx
shl    $0x3,%rcx
sub    $0x2,%rcx
mov    $0x1,%eax
shl    %cl,%rax
mov    0x337d(%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    1c9f <test_UNSIGNED_LONGLONG_NOT_PROMOTES_TO_SIGNED_TYPE+0xb8f>
mov    $0xffffffffffffffff,%rax
mov    %rax,-0x138(%rbp)
jmp    1c9f <test_UNSIGNED_LONGLONG_NOT_PROMOTES_TO_SIGNED_TYPE+0xb8f>
mov    -0x138(%rbp),%rax
mov    %rax,-0x140(%rbp)
mov    0x332c(%rip),%rax
movslq (%rax),%rcx
shl    $0x3,%rcx
sub    $0x2,%rcx
mov    $0x1,%eax
shl    %cl,%rax
mov    0x3312(%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    1d3f <test_UNSIGNED_LONGLONG_NOT_PROMOTES_TO_SIGNED_TYPE+0xc2f>
mov    0x32e4(%rip),%rax
movslq (%rax),%rcx
shl    $0x3,%rcx
sub    $0x2,%rcx
mov    $0x1,%eax
shl    %cl,%rax
mov    0x32ca(%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    1d52 <test_UNSIGNED_LONGLONG_NOT_PROMOTES_TO_SIGNED_TYPE+0xc42>
mov    $0xffffffffffffffff,%rax
mov    %rax,-0x148(%rbp)
jmp    1d52 <test_UNSIGNED_LONGLONG_NOT_PROMOTES_TO_SIGNED_TYPE+0xc42>
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    0x3261(%rip),%rax
movslq (%rax),%rcx
shl    $0x3,%rcx
sub    $0x2,%rcx
mov    $0x1,%eax
shl    %cl,%rax
mov    0x3247(%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    1e0a <test_UNSIGNED_LONGLONG_NOT_PROMOTES_TO_SIGNED_TYPE+0xcfa>
mov    0x3219(%rip),%rax
movslq (%rax),%rcx
shl    $0x3,%rcx
sub    $0x2,%rcx
mov    $0x1,%eax
shl    %cl,%rax
mov    0x31ff(%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    1e1d <test_UNSIGNED_LONGLONG_NOT_PROMOTES_TO_SIGNED_TYPE+0xd0d>
mov    $0xffffffffffffffff,%rax
mov    %rax,-0x158(%rbp)
jmp    1e1d <test_UNSIGNED_LONGLONG_NOT_PROMOTES_TO_SIGNED_TYPE+0xd0d>
mov    -0x158(%rbp),%rax
mov    %rax,-0x160(%rbp)
mov    0x31ae(%rip),%rax
movslq (%rax),%rcx
shl    $0x3,%rcx
sub    $0x2,%rcx
mov    $0x1,%eax
shl    %cl,%rax
mov    0x3194(%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    1ebd <test_UNSIGNED_LONGLONG_NOT_PROMOTES_TO_SIGNED_TYPE+0xdad>
mov    0x3166(%rip),%rax
movslq (%rax),%rcx
shl    $0x3,%rcx
sub    $0x2,%rcx
mov    $0x1,%eax
shl    %cl,%rax
mov    0x314c(%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    1ed0 <test_UNSIGNED_LONGLONG_NOT_PROMOTES_TO_SIGNED_TYPE+0xdc0>
mov    $0xffffffffffffffff,%rax
mov    %rax,-0x168(%rbp)
jmp    1ed0 <test_UNSIGNED_LONGLONG_NOT_PROMOTES_TO_SIGNED_TYPE+0xdc0>
mov    -0x150(%rbp),%rax
mov    -0x160(%rbp),%rcx
mov    -0x168(%rbp),%rdx
sub    %rdx,%rcx
cmp    %rcx,%rax
setb   %al
xor    $0xff,%al
and    $0x1,%al
movzbl %al,%edi
call   1030 <assert@plt>
mov    0x30df(%rip),%rax
movslq (%rax),%rcx
shl    $0x3,%rcx
sub    $0x2,%rcx
mov    $0x1,%eax
shl    %cl,%rax
mov    %rax,-0x170(%rbp)
mov    0x30be(%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    1fb4 <test_UNSIGNED_LONGLONG_NOT_PROMOTES_TO_SIGNED_TYPE+0xea4>
mov    0x3083(%rip),%rax
movslq (%rax),%rcx
shl    $0x3,%rcx
sub    $0x2,%rcx
mov    $0x1,%eax
shl    %cl,%rax
mov    %rax,-0x180(%rbp)
mov    0x3062(%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    1fc2 <test_UNSIGNED_LONGLONG_NOT_PROMOTES_TO_SIGNED_TYPE+0xeb2>
xor    %eax,%eax
mov    %rax,-0x178(%rbp)
jmp    1fc2 <test_UNSIGNED_LONGLONG_NOT_PROMOTES_TO_SIGNED_TYPE+0xeb2>
mov    -0x178(%rbp),%rax
mov    %rax,-0x190(%rbp)
mov    0x3009(%rip),%rax
movslq (%rax),%rcx
shl    $0x3,%rcx
sub    $0x2,%rcx
mov    $0x1,%eax
shl    %cl,%rax
mov    %rax,-0x188(%rbp)
mov    0x2fe8(%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    208a <test_UNSIGNED_LONGLONG_NOT_PROMOTES_TO_SIGNED_TYPE+0xf7a>
mov    0x2fad(%rip),%rax
movslq (%rax),%rcx
shl    $0x3,%rcx
sub    $0x2,%rcx
mov    $0x1,%eax
shl    %cl,%rax
mov    %rax,-0x1a0(%rbp)
mov    0x2f8c(%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    2098 <test_UNSIGNED_LONGLONG_NOT_PROMOTES_TO_SIGNED_TYPE+0xf88>
xor    %eax,%eax
mov    %rax,-0x198(%rbp)
jmp    2098 <test_UNSIGNED_LONGLONG_NOT_PROMOTES_TO_SIGNED_TYPE+0xf88>
mov    -0x190(%rbp),%rax
mov    -0x198(%rbp),%rcx
sub    %rcx,%rax
mov    %rax,-0x1b0(%rbp)
mov    0x2f29(%rip),%rax
movslq (%rax),%rcx
shl    $0x3,%rcx
sub    $0x2,%rcx
mov    $0x1,%eax
shl    %cl,%rax
mov    %rax,-0x1a8(%rbp)
mov    0x2f08(%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    216a <test_UNSIGNED_LONGLONG_NOT_PROMOTES_TO_SIGNED_TYPE+0x105a>
mov    0x2ecd(%rip),%rax
movslq (%rax),%rcx
shl    $0x3,%rcx
sub    $0x2,%rcx
mov    $0x1,%eax
shl    %cl,%rax
mov    %rax,-0x1c0(%rbp)
mov    0x2eac(%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    2178 <test_UNSIGNED_LONGLONG_NOT_PROMOTES_TO_SIGNED_TYPE+0x1068>
xor    %eax,%eax
mov    %rax,-0x1b8(%rbp)
jmp    2178 <test_UNSIGNED_LONGLONG_NOT_PROMOTES_TO_SIGNED_TYPE+0x1068>
mov    -0x1b8(%rbp),%rax
mov    %rax,-0x1d0(%rbp)
mov    0x2e53(%rip),%rax
movslq (%rax),%rcx
shl    $0x3,%rcx
sub    $0x2,%rcx
mov    $0x1,%eax
shl    %cl,%rax
mov    %rax,-0x1c8(%rbp)
mov    0x2e32(%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    2240 <test_UNSIGNED_LONGLONG_NOT_PROMOTES_TO_SIGNED_TYPE+0x1130>
mov    0x2df7(%rip),%rax
movslq (%rax),%rcx
shl    $0x3,%rcx
sub    $0x2,%rcx
mov    $0x1,%eax
shl    %cl,%rax
mov    %rax,-0x1e0(%rbp)
mov    0x2dd6(%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    224e <test_UNSIGNED_LONGLONG_NOT_PROMOTES_TO_SIGNED_TYPE+0x113e>
xor    %eax,%eax
mov    %rax,-0x1d8(%rbp)
jmp    224e <test_UNSIGNED_LONGLONG_NOT_PROMOTES_TO_SIGNED_TYPE+0x113e>
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    0x2d65(%rip),%rax
movslq (%rax),%rcx
shl    $0x3,%rcx
sub    $0x2,%rcx
mov    $0x1,%eax
shl    %cl,%rax
mov    %rax,-0x1e8(%rbp)
mov    0x2d44(%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    232e <test_UNSIGNED_LONGLONG_NOT_PROMOTES_TO_SIGNED_TYPE+0x121e>
mov    0x2d09(%rip),%rax
movslq (%rax),%rcx
shl    $0x3,%rcx
sub    $0x2,%rcx
mov    $0x1,%eax
shl    %cl,%rax
mov    %rax,-0x200(%rbp)
mov    0x2ce8(%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    233c <test_UNSIGNED_LONGLONG_NOT_PROMOTES_TO_SIGNED_TYPE+0x122c>
xor    %eax,%eax
mov    %rax,-0x1f8(%rbp)
jmp    233c <test_UNSIGNED_LONGLONG_NOT_PROMOTES_TO_SIGNED_TYPE+0x122c>
mov    -0x1f8(%rbp),%rax
mov    %rax,-0x210(%rbp)
mov    0x2c8f(%rip),%rax
movslq (%rax),%rcx
shl    $0x3,%rcx
sub    $0x2,%rcx
mov    $0x1,%eax
shl    %cl,%rax
mov    %rax,-0x208(%rbp)
mov    0x2c6e(%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    2404 <test_UNSIGNED_LONGLONG_NOT_PROMOTES_TO_SIGNED_TYPE+0x12f4>
mov    0x2c33(%rip),%rax
movslq (%rax),%rcx
shl    $0x3,%rcx
sub    $0x2,%rcx
mov    $0x1,%eax
shl    %cl,%rax
mov    %rax,-0x220(%rbp)
mov    0x2c12(%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    2412 <test_UNSIGNED_LONGLONG_NOT_PROMOTES_TO_SIGNED_TYPE+0x1302>
xor    %eax,%eax
mov    %rax,-0x218(%rbp)
jmp    2412 <test_UNSIGNED_LONGLONG_NOT_PROMOTES_TO_SIGNED_TYPE+0x1302>
mov    -0x1f0(%rbp),%rax
mov    -0x210(%rbp),%rcx
mov    -0x218(%rbp),%rdx
sub    %rdx,%rcx
cmp    %rcx,%rax
setb   %al
xor    $0xff,%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_UNSIGNED_LONGLONG_NOT_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_UNSIGNED_LONGLONG_NOT_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 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 i64 %93, %122
%124 = add i64 %123, 1
%125 = sub 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 i64 %154, %183
%185 = icmp ult i64 %125, %184
%186 = xor i1 %185, true
%187 = zext i1 %186 to i32
%188 = call i32 @assert(i32 %187)
%189 = load i32, i32* @CHAR_BIT
%190 = sext i32 %189 to i64
%191 = mul i64 8, %190
%192 = sub i64 %191, 2
%193 = shl i64 1, %192
%194 = load i32, i32* @CHAR_BIT
%195 = sext i32 %194 to i64
%196 = mul i64 8, %195
%197 = sub i64 %196, 2
%198 = shl i64 1, %197
%199 = sub i64 %198, 1
%200 = add i64 %193, %199
%201 = sub i64 0, %200
%202 = sub i64 %201, 1
%203 = icmp ult i64 %202, 0
br i1 %203, label %204, label %219
204: ; preds = %182
%205 = load i32, i32* @CHAR_BIT
%206 = sext i32 %205 to i64
%207 = mul i64 8, %206
%208 = sub i64 %207, 2
%209 = shl i64 1, %208
%210 = load i32, i32* @CHAR_BIT
%211 = sext i32 %210 to i64
%212 = mul i64 8, %211
%213 = sub i64 %212, 2
%214 = shl i64 1, %213
%215 = sub i64 %214, 1
%216 = add i64 %209, %215
%217 = sub i64 0, %216
%218 = sub i64 %217, 1
br label %220
219: ; preds = %182
br label %220
220: ; preds = %219, %204
%221 = phi i64 [ %218, %204 ], [ 0, %219 ]
%222 = load i32, i32* @CHAR_BIT
%223 = sext i32 %222 to i64
%224 = mul i64 8, %223
%225 = sub i64 %224, 2
%226 = shl i64 1, %225
%227 = load i32, i32* @CHAR_BIT
%228 = sext i32 %227 to i64
%229 = mul i64 8, %228
%230 = sub i64 %229, 2
%231 = shl i64 1, %230
%232 = sub i64 %231, 1
%233 = add i64 %226, %232
%234 = sub i64 0, %233
%235 = sub i64 %234, 1
%236 = icmp ult i64 %235, 0
br i1 %236, label %237, label %252
237: ; preds = %220
%238 = load i32, i32* @CHAR_BIT
%239 = sext i32 %238 to i64
%240 = mul i64 8, %239
%241 = sub i64 %240, 2
%242 = shl i64 1, %241
%243 = load i32, i32* @CHAR_BIT
%244 = sext i32 %243 to i64
%245 = mul i64 8, %244
%246 = sub i64 %245, 2
%247 = shl i64 1, %246
%248 = sub i64 %247, 1
%249 = add i64 %242, %248
%250 = sub i64 0, %249
%251 = sub i64 %250, 1
br label %253
252: ; preds = %220
br label %253
253: ; preds = %252, %237
%254 = phi i64 [ %251, %237 ], [ 0, %252 ]
%255 = sub i64 %221, %254
%256 = load i32, i32* @CHAR_BIT
%257 = sext i32 %256 to i64
%258 = mul i64 8, %257
%259 = sub i64 %258, 2
%260 = shl i64 1, %259
%261 = load i32, i32* @CHAR_BIT
%262 = sext i32 %261 to i64
%263 = mul i64 8, %262
%264 = sub i64 %263, 2
%265 = shl i64 1, %264
%266 = sub i64 %265, 1
%267 = add i64 %260, %266
%268 = sub i64 0, %267
%269 = sub i64 %268, 1
%270 = icmp ult i64 %269, 0
br i1 %270, label %271, label %286
271: ; preds = %253
%272 = load i32, i32* @CHAR_BIT
%273 = sext i32 %272 to i64
%274 = mul i64 8, %273
%275 = sub i64 %274, 2
%276 = shl i64 1, %275
%277 = load i32, i32* @CHAR_BIT
%278 = sext i32 %277 to i64
%279 = mul i64 8, %278
%280 = sub i64 %279, 2
%281 = shl i64 1, %280
%282 = sub i64 %281, 1
%283 = add i64 %276, %282
%284 = sub i64 0, %283
%285 = sub i64 %284, 1
br label %287
286: ; preds = %253
br label %287
287: ; preds = %286, %271
%288 = phi i64 [ %285, %271 ], [ 0, %286 ]
%289 = load i32, i32* @CHAR_BIT
%290 = sext i32 %289 to i64
%291 = mul i64 8, %290
%292 = sub i64 %291, 2
%293 = shl i64 1, %292
%294 = load i32, i32* @CHAR_BIT
%295 = sext i32 %294 to i64
%296 = mul i64 8, %295
%297 = sub i64 %296, 2
%298 = shl i64 1, %297
%299 = sub i64 %298, 1
%300 = add i64 %293, %299
%301 = sub i64 0, %300
%302 = sub i64 %301, 1
%303 = icmp ult i64 %302, 0
br i1 %303, label %304, label %319
304: ; preds = %287
%305 = load i32, i32* @CHAR_BIT
%306 = sext i32 %305 to i64
%307 = mul i64 8, %306
%308 = sub i64 %307, 2
%309 = shl i64 1, %308
%310 = load i32, i32* @CHAR_BIT
%311 = sext i32 %310 to i64
%312 = mul i64 8, %311
%313 = sub i64 %312, 2
%314 = shl i64 1, %313
%315 = sub i64 %314, 1
%316 = add i64 %309, %315
%317 = sub i64 0, %316
%318 = sub i64 %317, 1
br label %320
319: ; preds = %287
br label %320
320: ; preds = %319, %304
%321 = phi i64 [ %318, %304 ], [ 0, %319 ]
%322 = sub i64 %288, %321
%323 = add i64 %322, 1
%324 = sub i64 %255, %323
%325 = load i32, i32* @CHAR_BIT
%326 = sext i32 %325 to i64
%327 = mul i64 8, %326
%328 = sub i64 %327, 2
%329 = shl i64 1, %328
%330 = load i32, i32* @CHAR_BIT
%331 = sext i32 %330 to i64
%332 = mul i64 8, %331
%333 = sub i64 %332, 2
%334 = shl i64 1, %333
%335 = sub i64 %334, 1
%336 = add i64 %329, %335
%337 = sub i64 0, %336
%338 = sub i64 %337, 1
%339 = icmp ult i64 %338, 0
br i1 %339, label %340, label %355
340: ; preds = %320
%341 = load i32, i32* @CHAR_BIT
%342 = sext i32 %341 to i64
%343 = mul i64 8, %342
%344 = sub i64 %343, 2
%345 = shl i64 1, %344
%346 = load i32, i32* @CHAR_BIT
%347 = sext i32 %346 to i64
%348 = mul i64 8, %347
%349 = sub i64 %348, 2
%350 = shl i64 1, %349
%351 = sub i64 %350, 1
%352 = add i64 %345, %351
%353 = sub i64 0, %352
%354 = sub i64 %353, 1
br label %356
355: ; preds = %320
br label %356
356: ; preds = %355, %340
%357 = phi i64 [ %354, %340 ], [ 0, %355 ]
%358 = load i32, i32* @CHAR_BIT
%359 = sext i32 %358 to i64
%360 = mul i64 8, %359
%361 = sub i64 %360, 2
%362 = shl i64 1, %361
%363 = load i32, i32* @CHAR_BIT
%364 = sext i32 %363 to i64
%365 = mul i64 8, %364
%366 = sub i64 %365, 2
%367 = shl i64 1, %366
%368 = sub i64 %367, 1
%369 = add i64 %362, %368
%370 = sub i64 0, %369
%371 = sub i64 %370, 1
%372 = icmp ult i64 %371, 0
br i1 %372, label %373, label %388
373: ; preds = %356
%374 = load i32, i32* @CHAR_BIT
%375 = sext i32 %374 to i64
%376 = mul i64 8, %375
%377 = sub i64 %376, 2
%378 = shl i64 1, %377
%379 = load i32, i32* @CHAR_BIT
%380 = sext i32 %379 to i64
%381 = mul i64 8, %380
%382 = sub i64 %381, 2
%383 = shl i64 1, %382
%384 = sub i64 %383, 1
%385 = add i64 %378, %384
%386 = sub i64 0, %385
%387 = sub i64 %386, 1
br label %389
388: ; preds = %356
br label %389
389: ; preds = %388, %373
%390 = phi i64 [ %387, %373 ], [ 0, %388 ]
%391 = sub i64 %357, %390
%392 = icmp ult i64 %324, %391
%393 = xor i1 %392, true
%394 = zext i1 %393 to i32
%395 = call i32 @assert(i32 %394)
%396 = load i32, i32* @CHAR_BIT
%397 = sext i32 %396 to i64
%398 = mul i64 8, %397
%399 = sub i64 %398, 2
%400 = shl i64 1, %399
%401 = load i32, i32* @CHAR_BIT
%402 = sext i32 %401 to i64
%403 = mul i64 8, %402
%404 = sub i64 %403, 2
%405 = shl i64 1, %404
%406 = sub i64 %405, 1
%407 = add i64 %400, %406
%408 = icmp ugt i64 %407, -1
br i1 %408, label %409, label %422
409: ; preds = %389
%410 = load i32, i32* @CHAR_BIT
%411 = sext i32 %410 to i64
%412 = mul i64 8, %411
%413 = sub i64 %412, 2
%414 = shl i64 1, %413
%415 = load i32, i32* @CHAR_BIT
%416 = sext i32 %415 to i64
%417 = mul i64 8, %416
%418 = sub i64 %417, 2
%419 = shl i64 1, %418
%420 = sub i64 %419, 1
%421 = add i64 %414, %420
br label %423
422: ; preds = %389
br label %423
423: ; preds = %422, %409
%424 = phi i64 [ %421, %409 ], [ -1, %422 ]
%425 = load i32, i32* @CHAR_BIT
%426 = sext i32 %425 to i64
%427 = mul i64 8, %426
%428 = sub i64 %427, 2
%429 = shl i64 1, %428
%430 = load i32, i32* @CHAR_BIT
%431 = sext i32 %430 to i64
%432 = mul i64 8, %431
%433 = sub i64 %432, 2
%434 = shl i64 1, %433
%435 = sub i64 %434, 1
%436 = add i64 %429, %435
%437 = icmp ugt i64 %436, -1
br i1 %437, label %438, label %451
438: ; preds = %423
%439 = load i32, i32* @CHAR_BIT
%440 = sext i32 %439 to i64
%441 = mul i64 8, %440
%442 = sub i64 %441, 2
%443 = shl i64 1, %442
%444 = load i32, i32* @CHAR_BIT
%445 = sext i32 %444 to i64
%446 = mul i64 8, %445
%447 = sub i64 %446, 2
%448 = shl i64 1, %447
%449 = sub i64 %448, 1
%450 = add i64 %443, %449
br label %452
451: ; preds = %423
br label %452
452: ; preds = %451, %438
%453 = phi i64 [ %450, %438 ], [ -1, %451 ]
%454 = sub i64 %424, %453
%455 = load i32, i32* @CHAR_BIT
%456 = sext i32 %455 to i64
%457 = mul i64 8, %456
%458 = sub i64 %457, 2
%459 = shl i64 1, %458
%460 = load i32, i32* @CHAR_BIT
%461 = sext i32 %460 to i64
%462 = mul i64 8, %461
%463 = sub i64 %462, 2
%464 = shl i64 1, %463
%465 = sub i64 %464, 1
%466 = add i64 %459, %465
%467 = icmp ugt i64 %466, -1
br i1 %467, label %468, label %481
468: ; preds = %452
%469 = load i32, i32* @CHAR_BIT
%470 = sext i32 %469 to i64
%471 = mul i64 8, %470
%472 = sub i64 %471, 2
%473 = shl i64 1, %472
%474 = load i32, i32* @CHAR_BIT
%475 = sext i32 %474 to i64
%476 = mul i64 8, %475
%477 = sub i64 %476, 2
%478 = shl i64 1, %477
%479 = sub i64 %478, 1
%480 = add i64 %473, %479
br label %482
481: ; preds = %452
br label %482
482: ; preds = %481, %468
%483 = phi i64 [ %480, %468 ], [ -1, %481 ]
%484 = load i32, i32* @CHAR_BIT
%485 = sext i32 %484 to i64
%486 = mul i64 8, %485
%487 = sub i64 %486, 2
%488 = shl i64 1, %487
%489 = load i32, i32* @CHAR_BIT
%490 = sext i32 %489 to i64
%491 = mul i64 8, %490
%492 = sub i64 %491, 2
%493 = shl i64 1, %492
%494 = sub i64 %493, 1
%495 = add i64 %488, %494
%496 = icmp ugt i64 %495, -1
br i1 %496, label %497, label %510
497: ; preds = %482
%498 = load i32, i32* @CHAR_BIT
%499 = sext i32 %498 to i64
%500 = mul i64 8, %499
%501 = sub i64 %500, 2
%502 = shl i64 1, %501
%503 = load i32, i32* @CHAR_BIT
%504 = sext i32 %503 to i64
%505 = mul i64 8, %504
%506 = sub i64 %505, 2
%507 = shl i64 1, %506
%508 = sub i64 %507, 1
%509 = add i64 %502, %508
br label %511
510: ; preds = %482
br label %511
511: ; preds = %510, %497
%512 = phi i64 [ %509, %497 ], [ -1, %510 ]
%513 = sub i64 %483, %512
%514 = add i64 %513, 1
%515 = sub i64 %454, %514
%516 = load i32, i32* @CHAR_BIT
%517 = sext i32 %516 to i64
%518 = mul i64 8, %517
%519 = sub i64 %518, 2
%520 = shl i64 1, %519
%521 = load i32, i32* @CHAR_BIT
%522 = sext i32 %521 to i64
%523 = mul i64 8, %522
%524 = sub i64 %523, 2
%525 = shl i64 1, %524
%526 = sub i64 %525, 1
%527 = add i64 %520, %526
%528 = icmp ugt i64 %527, -1
br i1 %528, label %529, label %542
529: ; preds = %511
%530 = load i32, i32* @CHAR_BIT
%531 = sext i32 %530 to i64
%532 = mul i64 8, %531
%533 = sub i64 %532, 2
%534 = shl i64 1, %533
%535 = load i32, i32* @CHAR_BIT
%536 = sext i32 %535 to i64
%537 = mul i64 8, %536
%538 = sub i64 %537, 2
%539 = shl i64 1, %538
%540 = sub i64 %539, 1
%541 = add i64 %534, %540
br label %543
542: ; preds = %511
br label %543
543: ; preds = %542, %529
%544 = phi i64 [ %541, %529 ], [ -1, %542 ]
%545 = load i32, i32* @CHAR_BIT
%546 = sext i32 %545 to i64
%547 = mul i64 8, %546
%548 = sub i64 %547, 2
%549 = shl i64 1, %548
%550 = load i32, i32* @CHAR_BIT
%551 = sext i32 %550 to i64
%552 = mul i64 8, %551
%553 = sub i64 %552, 2
%554 = shl i64 1, %553
%555 = sub i64 %554, 1
%556 = add i64 %549, %555
%557 = icmp ugt i64 %556, -1
br i1 %557, label %558, label %571
558: ; preds = %543
%559 = load i32, i32* @CHAR_BIT
%560 = sext i32 %559 to i64
%561 = mul i64 8, %560
%562 = sub i64 %561, 2
%563 = shl i64 1, %562
%564 = load i32, i32* @CHAR_BIT
%565 = sext i32 %564 to i64
%566 = mul i64 8, %565
%567 = sub i64 %566, 2
%568 = shl i64 1, %567
%569 = sub i64 %568, 1
%570 = add i64 %563, %569
br label %572
571: ; preds = %543
br label %572
572: ; preds = %571, %558
%573 = phi i64 [ %570, %558 ], [ -1, %571 ]
%574 = sub i64 %544, %573
%575 = icmp ult i64 %515, %574
%576 = xor i1 %575, true
%577 = zext i1 %576 to i32
%578 = call i32 @assert(i32 %577)
%579 = load i32, i32* @CHAR_BIT
%580 = sext i32 %579 to i64
%581 = mul i64 8, %580
%582 = sub i64 %581, 2
%583 = shl i64 1, %582
%584 = load i32, i32* @CHAR_BIT
%585 = sext i32 %584 to i64
%586 = mul i64 8, %585
%587 = sub i64 %586, 2
%588 = shl i64 1, %587
%589 = sub i64 %588, 1
%590 = add i64 %583, %589
%591 = sub i64 0, %590
%592 = sub i64 %591, 1
%593 = icmp ult i64 %592, 0
br i1 %593, label %594, label %609
594: ; preds = %572
%595 = load i32, i32* @CHAR_BIT
%596 = sext i32 %595 to i64
%597 = mul i64 8, %596
%598 = sub i64 %597, 2
%599 = shl i64 1, %598
%600 = load i32, i32* @CHAR_BIT
%601 = sext i32 %600 to i64
%602 = mul i64 8, %601
%603 = sub i64 %602, 2
%604 = shl i64 1, %603
%605 = sub i64 %604, 1
%606 = add i64 %599, %605
%607 = sub i64 0, %606
%608 = sub i64 %607, 1
br label %610
609: ; preds = %572
br label %610
610: ; preds = %609, %594
%611 = phi i64 [ %608, %594 ], [ 0, %609 ]
%612 = load i32, i32* @CHAR_BIT
%613 = sext i32 %612 to i64
%614 = mul i64 8, %613
%615 = sub i64 %614, 2
%616 = shl i64 1, %615
%617 = load i32, i32* @CHAR_BIT
%618 = sext i32 %617 to i64
%619 = mul i64 8, %618
%620 = sub i64 %619, 2
%621 = shl i64 1, %620
%622 = sub i64 %621, 1
%623 = add i64 %616, %622
%624 = sub i64 0, %623
%625 = sub i64 %624, 1
%626 = icmp ult i64 %625, 0
br i1 %626, label %627, label %642
627: ; preds = %610
%628 = load i32, i32* @CHAR_BIT
%629 = sext i32 %628 to i64
%630 = mul i64 8, %629
%631 = sub i64 %630, 2
%632 = shl i64 1, %631
%633 = load i32, i32* @CHAR_BIT
%634 = sext i32 %633 to i64
%635 = mul i64 8, %634
%636 = sub i64 %635, 2
%637 = shl i64 1, %636
%638 = sub i64 %637, 1
%639 = add i64 %632, %638
%640 = sub i64 0, %639
%641 = sub i64 %640, 1
br label %643
642: ; preds = %610
br label %643
643: ; preds = %642, %627
%644 = phi i64 [ %641, %627 ], [ 0, %642 ]
%645 = sub i64 %611, %644
%646 = load i32, i32* @CHAR_BIT
%647 = sext i32 %646 to i64
%648 = mul i64 8, %647
%649 = sub i64 %648, 2
%650 = shl i64 1, %649
%651 = load i32, i32* @CHAR_BIT
%652 = sext i32 %651 to i64
%653 = mul i64 8, %652
%654 = sub i64 %653, 2
%655 = shl i64 1, %654
%656 = sub i64 %655, 1
%657 = add i64 %650, %656
%658 = sub i64 0, %657
%659 = sub i64 %658, 1
%660 = icmp ult i64 %659, 0
br i1 %660, label %661, label %676
661: ; preds = %643
%662 = load i32, i32* @CHAR_BIT
%663 = sext i32 %662 to i64
%664 = mul i64 8, %663
%665 = sub i64 %664, 2
%666 = shl i64 1, %665
%667 = load i32, i32* @CHAR_BIT
%668 = sext i32 %667 to i64
%669 = mul i64 8, %668
%670 = sub i64 %669, 2
%671 = shl i64 1, %670
%672 = sub i64 %671, 1
%673 = add i64 %666, %672
%674 = sub i64 0, %673
%675 = sub i64 %674, 1
br label %677
676: ; preds = %643
br label %677
677: ; preds = %676, %661
%678 = phi i64 [ %675, %661 ], [ 0, %676 ]
%679 = load i32, i32* @CHAR_BIT
%680 = sext i32 %679 to i64
%681 = mul i64 8, %680
%682 = sub i64 %681, 2
%683 = shl i64 1, %682
%684 = load i32, i32* @CHAR_BIT
%685 = sext i32 %684 to i64
%686 = mul i64 8, %685
%687 = sub i64 %686, 2
%688 = shl i64 1, %687
%689 = sub i64 %688, 1
%690 = add i64 %683, %689
%691 = sub i64 0, %690
%692 = sub i64 %691, 1
%693 = icmp ult i64 %692, 0
br i1 %693, label %694, label %709
694: ; preds = %677
%695 = load i32, i32* @CHAR_BIT
%696 = sext i32 %695 to i64
%697 = mul i64 8, %696
%698 = sub i64 %697, 2
%699 = shl i64 1, %698
%700 = load i32, i32* @CHAR_BIT
%701 = sext i32 %700 to i64
%702 = mul i64 8, %701
%703 = sub i64 %702, 2
%704 = shl i64 1, %703
%705 = sub i64 %704, 1
%706 = add i64 %699, %705
%707 = sub i64 0, %706
%708 = sub i64 %707, 1
br label %710
709: ; preds = %677
br label %710
710: ; preds = %709, %694
%711 = phi i64 [ %708, %694 ], [ 0, %709 ]
%712 = sub i64 %678, %711
%713 = add i64 %712, 1
%714 = sub i64 %645, %713
%715 = load i32, i32* @CHAR_BIT
%716 = sext i32 %715 to i64
%717 = mul i64 8, %716
%718 = sub i64 %717, 2
%719 = shl i64 1, %718
%720 = load i32, i32* @CHAR_BIT
%721 = sext i32 %720 to i64
%722 = mul i64 8, %721
%723 = sub i64 %722, 2
%724 = shl i64 1, %723
%725 = sub i64 %724, 1
%726 = add i64 %719, %725
%727 = sub i64 0, %726
%728 = sub i64 %727, 1
%729 = icmp ult i64 %728, 0
br i1 %729, label %730, label %745
730: ; preds = %710
%731 = load i32, i32* @CHAR_BIT
%732 = sext i32 %731 to i64
%733 = mul i64 8, %732
%734 = sub i64 %733, 2
%735 = shl i64 1, %734
%736 = load i32, i32* @CHAR_BIT
%737 = sext i32 %736 to i64
%738 = mul i64 8, %737
%739 = sub i64 %738, 2
%740 = shl i64 1, %739
%741 = sub i64 %740, 1
%742 = add i64 %735, %741
%743 = sub i64 0, %742
%744 = sub i64 %743, 1
br label %746
745: ; preds = %710
br label %746
746: ; preds = %745, %730
%747 = phi i64 [ %744, %730 ], [ 0, %745 ]
%748 = load i32, i32* @CHAR_BIT
%749 = sext i32 %748 to i64
%750 = mul i64 8, %749
%751 = sub i64 %750, 2
%752 = shl i64 1, %751
%753 = load i32, i32* @CHAR_BIT
%754 = sext i32 %753 to i64
%755 = mul i64 8, %754
%756 = sub i64 %755, 2
%757 = shl i64 1, %756
%758 = sub i64 %757, 1
%759 = add i64 %752, %758
%760 = sub i64 0, %759
%761 = sub i64 %760, 1
%762 = icmp ult i64 %761, 0
br i1 %762, label %763, label %778
763: ; preds = %746
%764 = load i32, i32* @CHAR_BIT
%765 = sext i32 %764 to i64
%766 = mul i64 8, %765
%767 = sub i64 %766, 2
%768 = shl i64 1, %767
%769 = load i32, i32* @CHAR_BIT
%770 = sext i32 %769 to i64
%771 = mul i64 8, %770
%772 = sub i64 %771, 2
%773 = shl i64 1, %772
%774 = sub i64 %773, 1
%775 = add i64 %768, %774
%776 = sub i64 0, %775
%777 = sub i64 %776, 1
br label %779
778: ; preds = %746
br label %779
779: ; preds = %778, %763
%780 = phi i64 [ %777, %763 ], [ 0, %778 ]
%781 = sub i64 %747, %780
%782 = icmp ult i64 %714, %781
%783 = xor i1 %782, true
%784 = zext i1 %783 to i32
%785 = call i32 @assert(i32 %784)
ret i32 1
}

LLVM IR (-O2):
@CHAR_BIT = global i32 0
define i32 @test_UNSIGNED_LONGLONG_NOT_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
}