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

/* Forward declarations */

/* Type definitions */

/* Variables and functions */
int CHAR_BIT;
int /*<<< orphan*/ assert(int);
int test_SIGNED_NONLONG_PROMOTES_TO_SIGNED_TYPE() {
  assert(((((signed char)0) - (((signed char)0) + 1)) < ((signed char)0)));
  assert((((((signed char)0) - ((signed char)0)) -
           ((((signed char)0) - ((signed char)0)) + 1)) <
          (((signed char)0) - ((signed char)0))));
  assert((((((signed char)1) - ((signed char)1)) -
           ((((signed char)1) - ((signed char)1)) + 1)) <
          (((signed char)1) - ((signed char)1))));
  assert((((((signed char)2) - ((signed char)2)) -
           ((((signed char)2) - ((signed char)2)) + 1)) <
          (((signed char)2) - ((signed char)2))));
  assert((((((signed char)-1) - ((signed char)-1)) -
           ((((signed char)-1) - ((signed char)-1)) + 1)) <
          (((signed char)-1) - ((signed char)-1))));
  assert((
      ((((signed char)((((char)(((char)(((char)1)
                                        << ((sizeof(char) * CHAR_BIT) - 2))) +
                                ((char)(((char)(((char)1)
                                                << ((sizeof(char) * CHAR_BIT) -
                                                    2))) -
                                        1)))) > ((char)(~((char)0))))
                           ? ((char)(((char)(((char)1)
                                             << ((sizeof(char) * CHAR_BIT) -
                                                 2))) +
                                     ((char)(((char)(((char)1)
                                                     << ((sizeof(char) *
                                                          CHAR_BIT) -
                                                         2))) -
                                             1))))
                           : ((char)(~((char)0))))) -
        ((signed char)((((char)(((char)(((char)1)
                                        << ((sizeof(char) * CHAR_BIT) - 2))) +
                                ((char)(((char)(((char)1)
                                                << ((sizeof(char) * CHAR_BIT) -
                                                    2))) -
                                        1)))) > ((char)(~((char)0))))
                           ? ((char)(((char)(((char)1)
                                             << ((sizeof(char) * CHAR_BIT) -
                                                 2))) +
                                     ((char)(((char)(((char)1)
                                                     << ((sizeof(char) *
                                                          CHAR_BIT) -
                                                         2))) -
                                             1))))
                           : ((char)(~((char)0)))))) -
       ((((signed char)((((char)(((char)(((char)1)
                                         << ((sizeof(char) * CHAR_BIT) - 2))) +
                                 ((char)(((char)(((char)1)
                                                 << ((sizeof(char) * CHAR_BIT) -
                                                     2))) -
                                         1)))) > ((char)(~((char)0))))
                            ? ((char)(((char)(((char)1)
                                              << ((sizeof(char) * CHAR_BIT) -
                                                  2))) +
                                      ((char)(((char)(((char)1)
                                                      << ((sizeof(char) *
                                                           CHAR_BIT) -
                                                          2))) -
                                              1))))
                            : ((char)(~((char)0))))) -
         ((signed char)((((char)(((char)(((char)1)
                                         << ((sizeof(char) * CHAR_BIT) - 2))) +
                                 ((char)(((char)(((char)1)
                                                 << ((sizeof(char) * CHAR_BIT) -
                                                     2))) -
                                         1)))) > ((char)(~((char)0))))
                            ? ((char)(((char)(((char)1)
                                              << ((sizeof(char) * CHAR_BIT) -
                                                  2))) +
                                      ((char)(((char)(((char)1)
                                                      << ((sizeof(char) *
                                                           CHAR_BIT) -
                                                          2))) -
                                              1))))
                            : ((char)(~((char)0)))))) +
        1)) <
      (((signed char)((((char)(((char)(((char)1)
                                       << ((sizeof(char) * CHAR_BIT) - 2))) +
                               ((char)(((char)(((char)1)
                                               << ((sizeof(char) * CHAR_BIT) -
                                                   2))) -
                                       1)))) > ((char)(~((char)0))))
                          ? ((char)(((char)(((char)1)
                                            << ((sizeof(char) * CHAR_BIT) -
                                                2))) +
                                    ((char)(((char)(((char)1)
                                                    << ((sizeof(char) *
                                                         CHAR_BIT) -
                                                        2))) -
                                            1))))
                          : ((char)(~((char)0))))) -
       ((signed char)((((char)(((char)(((char)1)
                                       << ((sizeof(char) * CHAR_BIT) - 2))) +
                               ((char)(((char)(((char)1)
                                               << ((sizeof(char) * CHAR_BIT) -
                                                   2))) -
                                       1)))) > ((char)(~((char)0))))
                          ? ((char)(((char)(((char)1)
                                            << ((sizeof(char) * CHAR_BIT) -
                                                2))) +
                                    ((char)(((char)(((char)1)
                                                    << ((sizeof(char) *
                                                         CHAR_BIT) -
                                                        2))) -
                                            1))))
                          : ((char)(~((char)0))))))));
  assert((
      ((((signed char)((((char)((-((char)(((char)(((char)1) << ((sizeof(char) *
                                                                 CHAR_BIT) -
                                                                2))) +
                                          ((char)(((char)(((char)1)
                                                          << ((sizeof(char) *
                                                               CHAR_BIT) -
                                                              2))) -
                                                  1))))) -
                                1)) < ((char)0))
                           ? ((char)((-((char)(((char)(((char)1)
                                                       << ((sizeof(char) *
                                                            CHAR_BIT) -
                                                           2))) +
                                               ((char)(((char)(((char)1)
                                                               << ((sizeof(
                                                                        char) *
                                                                    CHAR_BIT) -
                                                                   2))) -
                                                       1))))) -
                                     1))
                           : ((char)0))) -
        ((signed char)((((char)((-((char)(((char)(((char)1) << ((sizeof(char) *
                                                                 CHAR_BIT) -
                                                                2))) +
                                          ((char)(((char)(((char)1)
                                                          << ((sizeof(char) *
                                                               CHAR_BIT) -
                                                              2))) -
                                                  1))))) -
                                1)) < ((char)0))
                           ? ((char)((-((char)(((char)(((char)1)
                                                       << ((sizeof(char) *
                                                            CHAR_BIT) -
                                                           2))) +
                                               ((char)(((char)(((char)1)
                                                               << ((sizeof(
                                                                        char) *
                                                                    CHAR_BIT) -
                                                                   2))) -
                                                       1))))) -
                                     1))
                           : ((char)0)))) -
       ((((signed char)((((char)((-((char)(((char)(((char)1) << ((sizeof(char) *
                                                                  CHAR_BIT) -
                                                                 2))) +
                                           ((char)(((char)(((char)1)
                                                           << ((sizeof(char) *
                                                                CHAR_BIT) -
                                                               2))) -
                                                   1))))) -
                                 1)) < ((char)0))
                            ? ((char)((-((char)(((char)(((char)1)
                                                        << ((sizeof(char) *
                                                             CHAR_BIT) -
                                                            2))) +
                                                ((char)(((char)(((char)1)
                                                                << ((sizeof(
                                                                         char) *
                                                                     CHAR_BIT) -
                                                                    2))) -
                                                        1))))) -
                                      1))
                            : ((char)0))) -
         ((signed char)((((char)((-((char)(((char)(((char)1) << ((sizeof(char) *
                                                                  CHAR_BIT) -
                                                                 2))) +
                                           ((char)(((char)(((char)1)
                                                           << ((sizeof(char) *
                                                                CHAR_BIT) -
                                                               2))) -
                                                   1))))) -
                                 1)) < ((char)0))
                            ? ((char)((-((char)(((char)(((char)1)
                                                        << ((sizeof(char) *
                                                             CHAR_BIT) -
                                                            2))) +
                                                ((char)(((char)(((char)1)
                                                                << ((sizeof(
                                                                         char) *
                                                                     CHAR_BIT) -
                                                                    2))) -
                                                        1))))) -
                                      1))
                            : ((char)0)))) +
        1)) <
      (((signed char)((((char)((-((char)(((char)(((char)1)
                                                 << ((sizeof(char) * CHAR_BIT) -
                                                     2))) +
                                         ((char)(((char)(((char)1)
                                                         << ((sizeof(char) *
                                                              CHAR_BIT) -
                                                             2))) -
                                                 1))))) -
                               1)) < ((char)0))
                          ? ((char)((-((char)(((char)(((char)1)
                                                      << ((sizeof(char) *
                                                           CHAR_BIT) -
                                                          2))) +
                                              ((char)(((char)(((char)1)
                                                              << ((sizeof(
                                                                       char) *
                                                                   CHAR_BIT) -
                                                                  2))) -
                                                      1))))) -
                                    1))
                          : ((char)0))) -
       ((signed char)((((char)((-((char)(((char)(((char)1)
                                                 << ((sizeof(char) * CHAR_BIT) -
                                                     2))) +
                                         ((char)(((char)(((char)1)
                                                         << ((sizeof(char) *
                                                              CHAR_BIT) -
                                                             2))) -
                                                 1))))) -
                               1)) < ((char)0))
                          ? ((char)((-((char)(((char)(((char)1)
                                                      << ((sizeof(char) *
                                                           CHAR_BIT) -
                                                          2))) +
                                              ((char)(((char)(((char)1)
                                                              << ((sizeof(
                                                                       char) *
                                                                   CHAR_BIT) -
                                                                  2))) -
                                                      1))))) -
                                    1))
                          : ((char)0))))));
  assert(((((signed short)0) - (((signed short)0) + 1)) < ((signed short)0)));
  assert((((((signed short)0) - ((signed short)0)) -
           ((((signed short)0) - ((signed short)0)) + 1)) <
          (((signed short)0) - ((signed short)0))));
  assert((((((signed short)1) - ((signed short)1)) -
           ((((signed short)1) - ((signed short)1)) + 1)) <
          (((signed short)1) - ((signed short)1))));
  assert((((((signed short)2) - ((signed short)2)) -
           ((((signed short)2) - ((signed short)2)) + 1)) <
          (((signed short)2) - ((signed short)2))));
  assert((((((signed short)-1) - ((signed short)-1)) -
           ((((signed short)-1) - ((signed short)-1)) + 1)) <
          (((signed short)-1) - ((signed short)-1))));
  assert((
      ((((signed short)((((short)(((short)(((short)1)
                                           << ((sizeof(short) * CHAR_BIT) -
                                               2))) +
                                  ((short)(((short)(((short)1)
                                                    << ((sizeof(short) *
                                                         CHAR_BIT) -
                                                        2))) -
                                           1)))) > ((short)(~((short)0))))
                            ? ((short)(((short)(((short)1)
                                                << ((sizeof(short) * CHAR_BIT) -
                                                    2))) +
                                       ((short)(((short)(((short)1)
                                                         << ((sizeof(short) *
                                                              CHAR_BIT) -
                                                             2))) -
                                                1))))
                            : ((short)(~((short)0))))) -
        ((signed short)((((short)(((short)(((short)1)
                                           << ((sizeof(short) * CHAR_BIT) -
                                               2))) +
                                  ((short)(((short)(((short)1)
                                                    << ((sizeof(short) *
                                                         CHAR_BIT) -
                                                        2))) -
                                           1)))) > ((short)(~((short)0))))
                            ? ((short)(((short)(((short)1)
                                                << ((sizeof(short) * CHAR_BIT) -
                                                    2))) +
                                       ((short)(((short)(((short)1)
                                                         << ((sizeof(short) *
                                                              CHAR_BIT) -
                                                             2))) -
                                                1))))
                            : ((short)(~((short)0)))))) -
       ((((signed short)((((short)(((short)(((short)1)
                                            << ((sizeof(short) * CHAR_BIT) -
                                                2))) +
                                   ((short)(((short)(((short)1)
                                                     << ((sizeof(short) *
                                                          CHAR_BIT) -
                                                         2))) -
                                            1)))) > ((short)(~((short)0))))
                             ? ((short)(((short)(((short)1) << ((sizeof(short) *
                                                                 CHAR_BIT) -
                                                                2))) +
                                        ((short)(((short)(((short)1)
                                                          << ((sizeof(short) *
                                                               CHAR_BIT) -
                                                              2))) -
                                                 1))))
                             : ((short)(~((short)0))))) -
         ((signed short)((((short)(((short)(((short)1)
                                            << ((sizeof(short) * CHAR_BIT) -
                                                2))) +
                                   ((short)(((short)(((short)1)
                                                     << ((sizeof(short) *
                                                          CHAR_BIT) -
                                                         2))) -
                                            1)))) > ((short)(~((short)0))))
                             ? ((short)(((short)(((short)1) << ((sizeof(short) *
                                                                 CHAR_BIT) -
                                                                2))) +
                                        ((short)(((short)(((short)1)
                                                          << ((sizeof(short) *
                                                               CHAR_BIT) -
                                                              2))) -
                                                 1))))
                             : ((short)(~((short)0)))))) +
        1)) <
      (((signed short)((((short)(((short)(((short)1)
                                          << ((sizeof(short) * CHAR_BIT) -
                                              2))) +
                                 ((short)(((short)(((short)1)
                                                   << ((sizeof(short) *
                                                        CHAR_BIT) -
                                                       2))) -
                                          1)))) > ((short)(~((short)0))))
                           ? ((short)(((short)(((short)1)
                                               << ((sizeof(short) * CHAR_BIT) -
                                                   2))) +
                                      ((short)(((short)(((short)1)
                                                        << ((sizeof(short) *
                                                             CHAR_BIT) -
                                                            2))) -
                                               1))))
                           : ((short)(~((short)0))))) -
       ((signed short)((((short)(((short)(((short)1)
                                          << ((sizeof(short) * CHAR_BIT) -
                                              2))) +
                                 ((short)(((short)(((short)1)
                                                   << ((sizeof(short) *
                                                        CHAR_BIT) -
                                                       2))) -
                                          1)))) > ((short)(~((short)0))))
                           ? ((short)(((short)(((short)1)
                                               << ((sizeof(short) * CHAR_BIT) -
                                                   2))) +
                                      ((short)(((short)(((short)1)
                                                        << ((sizeof(short) *
                                                             CHAR_BIT) -
                                                            2))) -
                                               1))))
                           : ((short)(~((short)0))))))));
  assert((
      ((((signed short)((((short)((-((short)(((short)(((short)1)
                                                      << ((sizeof(short) *
                                                           CHAR_BIT) -
                                                          2))) +
                                             ((short)(((short)(((short)1)
                                                               << ((sizeof(
                                                                        short) *
                                                                    CHAR_BIT) -
                                                                   2))) -
                                                      1))))) -
                                  1)) < ((short)0))
                            ? ((short)((-((short)(((short)(((short)1)
                                                           << ((sizeof(short) *
                                                                CHAR_BIT) -
                                                               2))) +
                                                  ((short)(((short)(((short)1)
                                                                    << ((sizeof(
                                                                             short) *
                                                                         CHAR_BIT) -
                                                                        2))) -
                                                           1))))) -
                                       1))
                            : ((short)0))) -
        ((signed short)((((short)((-((short)(((short)(((short)1)
                                                      << ((sizeof(short) *
                                                           CHAR_BIT) -
                                                          2))) +
                                             ((short)(((short)(((short)1)
                                                               << ((sizeof(
                                                                        short) *
                                                                    CHAR_BIT) -
                                                                   2))) -
                                                      1))))) -
                                  1)) < ((short)0))
                            ? ((short)((-((short)(((short)(((short)1)
                                                           << ((sizeof(short) *
                                                                CHAR_BIT) -
                                                               2))) +
                                                  ((short)(((short)(((short)1)
                                                                    << ((sizeof(
                                                                             short) *
                                                                         CHAR_BIT) -
                                                                        2))) -
                                                           1))))) -
                                       1))
                            : ((short)0)))) -
       ((((signed short)((((short)((-((short)(((short)(((short)1)
                                                       << ((sizeof(short) *
                                                            CHAR_BIT) -
                                                           2))) +
                                              ((short)(((short)(((short)1)
                                                                << ((sizeof(
                                                                         short) *
                                                                     CHAR_BIT) -
                                                                    2))) -
                                                       1))))) -
                                   1)) < ((short)0))
                             ? ((short)((-((short)(((short)(((short)1)
                                                            << ((sizeof(short) *
                                                                 CHAR_BIT) -
                                                                2))) +
                                                   ((short)(((short)(((short)1)
                                                                     << ((sizeof(
                                                                              short) *
                                                                          CHAR_BIT) -
                                                                         2))) -
                                                            1))))) -
                                        1))
                             : ((short)0))) -
         ((signed short)((((short)((-((short)(((short)(((short)1)
                                                       << ((sizeof(short) *
                                                            CHAR_BIT) -
                                                           2))) +
                                              ((short)(((short)(((short)1)
                                                                << ((sizeof(
                                                                         short) *
                                                                     CHAR_BIT) -
                                                                    2))) -
                                                       1))))) -
                                   1)) < ((short)0))
                             ? ((short)((-((short)(((short)(((short)1)
                                                            << ((sizeof(short) *
                                                                 CHAR_BIT) -
                                                                2))) +
                                                   ((short)(((short)(((short)1)
                                                                     << ((sizeof(
                                                                              short) *
                                                                          CHAR_BIT) -
                                                                         2))) -
                                                            1))))) -
                                        1))
                             : ((short)0)))) +
        1)) <
      (((signed short)((((short)((-((short)(((short)(((short)1)
                                                     << ((sizeof(short) *
                                                          CHAR_BIT) -
                                                         2))) +
                                            ((short)(((short)(((short)1)
                                                              << ((sizeof(
                                                                       short) *
                                                                   CHAR_BIT) -
                                                                  2))) -
                                                     1))))) -
                                 1)) < ((short)0))
                           ? ((short)((-((short)(((short)(((short)1)
                                                          << ((sizeof(short) *
                                                               CHAR_BIT) -
                                                              2))) +
                                                 ((short)(((short)(((short)1)
                                                                   << ((sizeof(
                                                                            short) *
                                                                        CHAR_BIT) -
                                                                       2))) -
                                                          1))))) -
                                      1))
                           : ((short)0))) -
       ((signed short)((((short)((-((short)(((short)(((short)1)
                                                     << ((sizeof(short) *
                                                          CHAR_BIT) -
                                                         2))) +
                                            ((short)(((short)(((short)1)
                                                              << ((sizeof(
                                                                       short) *
                                                                   CHAR_BIT) -
                                                                  2))) -
                                                     1))))) -
                                 1)) < ((short)0))
                           ? ((short)((-((short)(((short)(((short)1)
                                                          << ((sizeof(short) *
                                                               CHAR_BIT) -
                                                              2))) +
                                                 ((short)(((short)(((short)1)
                                                                   << ((sizeof(
                                                                            short) *
                                                                        CHAR_BIT) -
                                                                       2))) -
                                                          1))))) -
                                      1))
                           : ((short)0))))));
  assert(((((signed int)0) - (((signed int)0) + 1)) < ((signed int)0)));
  assert((((((signed int)0) - ((signed int)0)) -
           ((((signed int)0) - ((signed int)0)) + 1)) <
          (((signed int)0) - ((signed int)0))));
  assert((((((signed int)1) - ((signed int)1)) -
           ((((signed int)1) - ((signed int)1)) + 1)) <
          (((signed int)1) - ((signed int)1))));
  assert((((((signed int)2) - ((signed int)2)) -
           ((((signed int)2) - ((signed int)2)) + 1)) <
          (((signed int)2) - ((signed int)2))));
  assert((((((signed int)-1) - ((signed int)-1)) -
           ((((signed int)-1) - ((signed int)-1)) + 1)) <
          (((signed int)-1) - ((signed int)-1))));
  assert((
      ((((signed int)((((int)(((int)(((int)1)
                                     << ((sizeof(int) * CHAR_BIT) - 2))) +
                              ((int)(((int)(((int)1)
                                            << ((sizeof(int) * CHAR_BIT) -
                                                2))) -
                                     1)))) > ((int)(~((int)0))))
                          ? ((int)(((int)(((int)1)
                                          << ((sizeof(int) * CHAR_BIT) - 2))) +
                                   ((int)(((int)(((int)1)
                                                 << ((sizeof(int) * CHAR_BIT) -
                                                     2))) -
                                          1))))
                          : ((int)(~((int)0))))) -
        ((signed int)((((int)(((int)(((int)1)
                                     << ((sizeof(int) * CHAR_BIT) - 2))) +
                              ((int)(((int)(((int)1)
                                            << ((sizeof(int) * CHAR_BIT) -
                                                2))) -
                                     1)))) > ((int)(~((int)0))))
                          ? ((int)(((int)(((int)1)
                                          << ((sizeof(int) * CHAR_BIT) - 2))) +
                                   ((int)(((int)(((int)1)
                                                 << ((sizeof(int) * CHAR_BIT) -
                                                     2))) -
                                          1))))
                          : ((int)(~((int)0)))))) -
       ((((signed int)((((int)(((int)(((int)1)
                                      << ((sizeof(int) * CHAR_BIT) - 2))) +
                               ((int)(((int)(((int)1)
                                             << ((sizeof(int) * CHAR_BIT) -
                                                 2))) -
                                      1)))) > ((int)(~((int)0))))
                           ? ((int)(((int)(((int)1)
                                           << ((sizeof(int) * CHAR_BIT) - 2))) +
                                    ((int)(((int)(((int)1)
                                                  << ((sizeof(int) * CHAR_BIT) -
                                                      2))) -
                                           1))))
                           : ((int)(~((int)0))))) -
         ((signed int)((((int)(((int)(((int)1)
                                      << ((sizeof(int) * CHAR_BIT) - 2))) +
                               ((int)(((int)(((int)1)
                                             << ((sizeof(int) * CHAR_BIT) -
                                                 2))) -
                                      1)))) > ((int)(~((int)0))))
                           ? ((int)(((int)(((int)1)
                                           << ((sizeof(int) * CHAR_BIT) - 2))) +
                                    ((int)(((int)(((int)1)
                                                  << ((sizeof(int) * CHAR_BIT) -
                                                      2))) -
                                           1))))
                           : ((int)(~((int)0)))))) +
        1)) <
      (((signed int)((((int)(((int)(((int)1)
                                    << ((sizeof(int) * CHAR_BIT) - 2))) +
                             ((int)(((int)(((int)1)
                                           << ((sizeof(int) * CHAR_BIT) - 2))) -
                                    1)))) > ((int)(~((int)0))))
                         ? ((int)(((int)(((int)1)
                                         << ((sizeof(int) * CHAR_BIT) - 2))) +
                                  ((int)(((int)(((int)1)
                                                << ((sizeof(int) * CHAR_BIT) -
                                                    2))) -
                                         1))))
                         : ((int)(~((int)0))))) -
       ((signed int)((((int)(((int)(((int)1)
                                    << ((sizeof(int) * CHAR_BIT) - 2))) +
                             ((int)(((int)(((int)1)
                                           << ((sizeof(int) * CHAR_BIT) - 2))) -
                                    1)))) > ((int)(~((int)0))))
                         ? ((int)(((int)(((int)1)
                                         << ((sizeof(int) * CHAR_BIT) - 2))) +
                                  ((int)(((int)(((int)1)
                                                << ((sizeof(int) * CHAR_BIT) -
                                                    2))) -
                                         1))))
                         : ((int)(~((int)0))))))));
  assert((
      ((((signed int)((((int)((-((int)(((int)(((int)1)
                                              << ((sizeof(int) * CHAR_BIT) -
                                                  2))) +
                                       ((int)(((int)(((int)1) << ((sizeof(int) *
                                                                   CHAR_BIT) -
                                                                  2))) -
                                              1))))) -
                              1)) < ((int)0))
                          ? ((int)((-((int)(((int)(((int)1) << ((sizeof(int) *
                                                                 CHAR_BIT) -
                                                                2))) +
                                            ((int)(((int)(((int)1)
                                                          << ((sizeof(int) *
                                                               CHAR_BIT) -
                                                              2))) -
                                                   1))))) -
                                   1))
                          : ((int)0))) -
        ((signed int)((((int)((-((int)(((int)(((int)1)
                                              << ((sizeof(int) * CHAR_BIT) -
                                                  2))) +
                                       ((int)(((int)(((int)1) << ((sizeof(int) *
                                                                   CHAR_BIT) -
                                                                  2))) -
                                              1))))) -
                              1)) < ((int)0))
                          ? ((int)((-((int)(((int)(((int)1) << ((sizeof(int) *
                                                                 CHAR_BIT) -
                                                                2))) +
                                            ((int)(((int)(((int)1)
                                                          << ((sizeof(int) *
                                                               CHAR_BIT) -
                                                              2))) -
                                                   1))))) -
                                   1))
                          : ((int)0)))) -
       ((((signed int)((((int)((-((int)(((int)(((int)1)
                                               << ((sizeof(int) * CHAR_BIT) -
                                                   2))) +
                                        ((int)(((int)(((int)1)
                                                      << ((sizeof(int) *
                                                           CHAR_BIT) -
                                                          2))) -
                                               1))))) -
                               1)) < ((int)0))
                           ? ((int)((-((int)(((int)(((int)1) << ((sizeof(int) *
                                                                  CHAR_BIT) -
                                                                 2))) +
                                             ((int)(((int)(((int)1)
                                                           << ((sizeof(int) *
                                                                CHAR_BIT) -
                                                               2))) -
                                                    1))))) -
                                    1))
                           : ((int)0))) -
         ((signed int)((((int)((-((int)(((int)(((int)1)
                                               << ((sizeof(int) * CHAR_BIT) -
                                                   2))) +
                                        ((int)(((int)(((int)1)
                                                      << ((sizeof(int) *
                                                           CHAR_BIT) -
                                                          2))) -
                                               1))))) -
                               1)) < ((int)0))
                           ? ((int)((-((int)(((int)(((int)1) << ((sizeof(int) *
                                                                  CHAR_BIT) -
                                                                 2))) +
                                             ((int)(((int)(((int)1)
                                                           << ((sizeof(int) *
                                                                CHAR_BIT) -
                                                               2))) -
                                                    1))))) -
                                    1))
                           : ((int)0)))) +
        1)) <
      (((signed int)((((int)((-((int)(((int)(((int)1)
                                             << ((sizeof(int) * CHAR_BIT) -
                                                 2))) +
                                      ((int)(((int)(((int)1) << ((sizeof(int) *
                                                                  CHAR_BIT) -
                                                                 2))) -
                                             1))))) -
                             1)) < ((int)0))
                         ? ((int)((-((int)(((int)(((int)1)
                                                  << ((sizeof(int) * CHAR_BIT) -
                                                      2))) +
                                           ((int)(((int)(((int)1)
                                                         << ((sizeof(int) *
                                                              CHAR_BIT) -
                                                             2))) -
                                                  1))))) -
                                  1))
                         : ((int)0))) -
       ((signed int)((((int)((-((int)(((int)(((int)1)
                                             << ((sizeof(int) * CHAR_BIT) -
                                                 2))) +
                                      ((int)(((int)(((int)1) << ((sizeof(int) *
                                                                  CHAR_BIT) -
                                                                 2))) -
                                             1))))) -
                             1)) < ((int)0))
                         ? ((int)((-((int)(((int)(((int)1)
                                                  << ((sizeof(int) * CHAR_BIT) -
                                                      2))) +
                                           ((int)(((int)(((int)1)
                                                         << ((sizeof(int) *
                                                              CHAR_BIT) -
                                                             2))) -
                                                  1))))) -
                                  1))
                         : ((int)0))))));
  return 1;
}


x86 assembly (clang, -O0):
<test_SIGNED_NONLONG_PROMOTES_TO_SIGNED_TYPE>:
push   %rbp
mov    %rsp,%rbp
sub    $0x140,%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),%rax
shl    $0x0,%rax
sub    $0x2,%rax
mov    %eax,%ecx
mov    $0x1,%eax
shl    %cl,%eax
movsbl %al,%eax
mov    0x3e6e(%rip),%rcx
movslq (%rcx),%rcx
shl    $0x0,%rcx
sub    $0x2,%rcx
mov    $0x1,%edx
shl    %cl,%edx
mov    %edx,%ecx
movsbl %cl,%ecx
sub    $0x1,%ecx
movsbl %cl,%ecx
add    %ecx,%eax
movsbl %al,%eax
cmp    $0xffffffff,%eax
jle    11ec <test_SIGNED_NONLONG_PROMOTES_TO_SIGNED_TYPE+0xdc>
mov    0x3e3c(%rip),%rax
movslq (%rax),%rax
shl    $0x0,%rax
sub    $0x2,%rax
mov    %eax,%ecx
mov    $0x1,%eax
shl    %cl,%eax
movsbl %al,%eax
mov    0x3e1e(%rip),%rcx
movslq (%rcx),%rcx
shl    $0x0,%rcx
sub    $0x2,%rcx
mov    $0x1,%edx
shl    %cl,%edx
mov    %edx,%ecx
movsbl %cl,%ecx
sub    $0x1,%ecx
movsbl %cl,%ecx
add    %ecx,%eax
movsbl %al,%eax
mov    %eax,-0x4(%rbp)
jmp    11f9 <test_SIGNED_NONLONG_PROMOTES_TO_SIGNED_TYPE+0xe9>
mov    $0xffffffff,%eax
mov    %eax,-0x4(%rbp)
jmp    11f9 <test_SIGNED_NONLONG_PROMOTES_TO_SIGNED_TYPE+0xe9>
mov    -0x4(%rbp),%eax
movsbl %al,%eax
mov    %eax,-0x8(%rbp)
mov    0x3dd7(%rip),%rax
movslq (%rax),%rax
shl    $0x0,%rax
sub    $0x2,%rax
mov    %eax,%ecx
mov    $0x1,%eax
shl    %cl,%eax
movsbl %al,%eax
mov    0x3db9(%rip),%rcx
movslq (%rcx),%rcx
shl    $0x0,%rcx
sub    $0x2,%rcx
mov    $0x1,%edx
shl    %cl,%edx
mov    %edx,%ecx
movsbl %cl,%ecx
sub    $0x1,%ecx
movsbl %cl,%ecx
add    %ecx,%eax
movsbl %al,%eax
cmp    $0xffffffff,%eax
jle    12a1 <test_SIGNED_NONLONG_PROMOTES_TO_SIGNED_TYPE+0x191>
mov    0x3d87(%rip),%rax
movslq (%rax),%rax
shl    $0x0,%rax
sub    $0x2,%rax
mov    %eax,%ecx
mov    $0x1,%eax
shl    %cl,%eax
movsbl %al,%eax
mov    0x3d69(%rip),%rcx
movslq (%rcx),%rcx
shl    $0x0,%rcx
sub    $0x2,%rcx
mov    $0x1,%edx
shl    %cl,%edx
mov    %edx,%ecx
movsbl %cl,%ecx
sub    $0x1,%ecx
movsbl %cl,%ecx
add    %ecx,%eax
movsbl %al,%eax
mov    %eax,-0xc(%rbp)
jmp    12ae <test_SIGNED_NONLONG_PROMOTES_TO_SIGNED_TYPE+0x19e>
mov    $0xffffffff,%eax
mov    %eax,-0xc(%rbp)
jmp    12ae <test_SIGNED_NONLONG_PROMOTES_TO_SIGNED_TYPE+0x19e>
mov    -0x8(%rbp),%eax
mov    -0xc(%rbp),%ecx
movsbl %cl,%ecx
sub    %ecx,%eax
mov    %eax,-0x10(%rbp)
mov    0x3d1d(%rip),%rax
movslq (%rax),%rax
shl    $0x0,%rax
sub    $0x2,%rax
mov    %eax,%ecx
mov    $0x1,%eax
shl    %cl,%eax
movsbl %al,%eax
mov    0x3cff(%rip),%rcx
movslq (%rcx),%rcx
shl    $0x0,%rcx
sub    $0x2,%rcx
mov    $0x1,%edx
shl    %cl,%edx
mov    %edx,%ecx
movsbl %cl,%ecx
sub    $0x1,%ecx
movsbl %cl,%ecx
add    %ecx,%eax
movsbl %al,%eax
cmp    $0xffffffff,%eax
jle    135b <test_SIGNED_NONLONG_PROMOTES_TO_SIGNED_TYPE+0x24b>
mov    0x3ccd(%rip),%rax
movslq (%rax),%rax
shl    $0x0,%rax
sub    $0x2,%rax
mov    %eax,%ecx
mov    $0x1,%eax
shl    %cl,%eax
movsbl %al,%eax
mov    0x3caf(%rip),%rcx
movslq (%rcx),%rcx
shl    $0x0,%rcx
sub    $0x2,%rcx
mov    $0x1,%edx
shl    %cl,%edx
mov    %edx,%ecx
movsbl %cl,%ecx
sub    $0x1,%ecx
movsbl %cl,%ecx
add    %ecx,%eax
movsbl %al,%eax
mov    %eax,-0x14(%rbp)
jmp    1368 <test_SIGNED_NONLONG_PROMOTES_TO_SIGNED_TYPE+0x258>
mov    $0xffffffff,%eax
mov    %eax,-0x14(%rbp)
jmp    1368 <test_SIGNED_NONLONG_PROMOTES_TO_SIGNED_TYPE+0x258>
mov    -0x14(%rbp),%eax
movsbl %al,%eax
mov    %eax,-0x18(%rbp)
mov    0x3c68(%rip),%rax
movslq (%rax),%rax
shl    $0x0,%rax
sub    $0x2,%rax
mov    %eax,%ecx
mov    $0x1,%eax
shl    %cl,%eax
movsbl %al,%eax
mov    0x3c4a(%rip),%rcx
movslq (%rcx),%rcx
shl    $0x0,%rcx
sub    $0x2,%rcx
mov    $0x1,%edx
shl    %cl,%edx
mov    %edx,%ecx
movsbl %cl,%ecx
sub    $0x1,%ecx
movsbl %cl,%ecx
add    %ecx,%eax
movsbl %al,%eax
cmp    $0xffffffff,%eax
jle    1410 <test_SIGNED_NONLONG_PROMOTES_TO_SIGNED_TYPE+0x300>
mov    0x3c18(%rip),%rax
movslq (%rax),%rax
shl    $0x0,%rax
sub    $0x2,%rax
mov    %eax,%ecx
mov    $0x1,%eax
shl    %cl,%eax
movsbl %al,%eax
mov    0x3bfa(%rip),%rcx
movslq (%rcx),%rcx
shl    $0x0,%rcx
sub    $0x2,%rcx
mov    $0x1,%edx
shl    %cl,%edx
mov    %edx,%ecx
movsbl %cl,%ecx
sub    $0x1,%ecx
movsbl %cl,%ecx
add    %ecx,%eax
movsbl %al,%eax
mov    %eax,-0x1c(%rbp)
jmp    141d <test_SIGNED_NONLONG_PROMOTES_TO_SIGNED_TYPE+0x30d>
mov    $0xffffffff,%eax
mov    %eax,-0x1c(%rbp)
jmp    141d <test_SIGNED_NONLONG_PROMOTES_TO_SIGNED_TYPE+0x30d>
mov    -0x10(%rbp),%eax
mov    -0x18(%rbp),%ecx
mov    -0x1c(%rbp),%edx
movsbl %dl,%edx
sub    %edx,%ecx
add    $0x1,%ecx
sub    %ecx,%eax
mov    %eax,-0x20(%rbp)
mov    0x3ba6(%rip),%rax
movslq (%rax),%rax
shl    $0x0,%rax
sub    $0x2,%rax
mov    %eax,%ecx
mov    $0x1,%eax
shl    %cl,%eax
movsbl %al,%eax
mov    0x3b88(%rip),%rcx
movslq (%rcx),%rcx
shl    $0x0,%rcx
sub    $0x2,%rcx
mov    $0x1,%edx
shl    %cl,%edx
mov    %edx,%ecx
movsbl %cl,%ecx
sub    $0x1,%ecx
movsbl %cl,%ecx
add    %ecx,%eax
movsbl %al,%eax
cmp    $0xffffffff,%eax
jle    14d2 <test_SIGNED_NONLONG_PROMOTES_TO_SIGNED_TYPE+0x3c2>
mov    0x3b56(%rip),%rax
movslq (%rax),%rax
shl    $0x0,%rax
sub    $0x2,%rax
mov    %eax,%ecx
mov    $0x1,%eax
shl    %cl,%eax
movsbl %al,%eax
mov    0x3b38(%rip),%rcx
movslq (%rcx),%rcx
shl    $0x0,%rcx
sub    $0x2,%rcx
mov    $0x1,%edx
shl    %cl,%edx
mov    %edx,%ecx
movsbl %cl,%ecx
sub    $0x1,%ecx
movsbl %cl,%ecx
add    %ecx,%eax
movsbl %al,%eax
mov    %eax,-0x24(%rbp)
jmp    14df <test_SIGNED_NONLONG_PROMOTES_TO_SIGNED_TYPE+0x3cf>
mov    $0xffffffff,%eax
mov    %eax,-0x24(%rbp)
jmp    14df <test_SIGNED_NONLONG_PROMOTES_TO_SIGNED_TYPE+0x3cf>
mov    -0x24(%rbp),%eax
movsbl %al,%eax
mov    %eax,-0x28(%rbp)
mov    0x3af1(%rip),%rax
movslq (%rax),%rax
shl    $0x0,%rax
sub    $0x2,%rax
mov    %eax,%ecx
mov    $0x1,%eax
shl    %cl,%eax
movsbl %al,%eax
mov    0x3ad3(%rip),%rcx
movslq (%rcx),%rcx
shl    $0x0,%rcx
sub    $0x2,%rcx
mov    $0x1,%edx
shl    %cl,%edx
mov    %edx,%ecx
movsbl %cl,%ecx
sub    $0x1,%ecx
movsbl %cl,%ecx
add    %ecx,%eax
movsbl %al,%eax
cmp    $0xffffffff,%eax
jle    1587 <test_SIGNED_NONLONG_PROMOTES_TO_SIGNED_TYPE+0x477>
mov    0x3aa1(%rip),%rax
movslq (%rax),%rax
shl    $0x0,%rax
sub    $0x2,%rax
mov    %eax,%ecx
mov    $0x1,%eax
shl    %cl,%eax
movsbl %al,%eax
mov    0x3a83(%rip),%rcx
movslq (%rcx),%rcx
shl    $0x0,%rcx
sub    $0x2,%rcx
mov    $0x1,%edx
shl    %cl,%edx
mov    %edx,%ecx
movsbl %cl,%ecx
sub    $0x1,%ecx
movsbl %cl,%ecx
add    %ecx,%eax
movsbl %al,%eax
mov    %eax,-0x2c(%rbp)
jmp    1594 <test_SIGNED_NONLONG_PROMOTES_TO_SIGNED_TYPE+0x484>
mov    $0xffffffff,%eax
mov    %eax,-0x2c(%rbp)
jmp    1594 <test_SIGNED_NONLONG_PROMOTES_TO_SIGNED_TYPE+0x484>
mov    -0x20(%rbp),%eax
mov    -0x28(%rbp),%ecx
mov    -0x2c(%rbp),%edx
movsbl %dl,%edx
sub    %edx,%ecx
cmp    %ecx,%eax
setl   %al
and    $0x1,%al
movzbl %al,%edi
call   1030 <assert@plt>
mov    0x3a28(%rip),%rax
movslq (%rax),%rax
shl    $0x0,%rax
sub    $0x2,%rax
mov    %eax,%ecx
mov    $0x1,%eax
shl    %cl,%eax
movsbl %al,%eax
mov    0x3a0a(%rip),%rcx
movslq (%rcx),%rcx
shl    $0x0,%rcx
sub    $0x2,%rcx
mov    $0x1,%edx
shl    %cl,%edx
mov    %edx,%ecx
movsbl %cl,%ecx
sub    $0x1,%ecx
movsbl %cl,%ecx
add    %ecx,%eax
movsbl %al,%ecx
xor    %eax,%eax
sub    %ecx,%eax
sub    $0x1,%eax
movsbl %al,%eax
cmp    $0x0,%eax
jge    1664 <test_SIGNED_NONLONG_PROMOTES_TO_SIGNED_TYPE+0x554>
mov    0x39ce(%rip),%rax
movslq (%rax),%rax
shl    $0x0,%rax
sub    $0x2,%rax
mov    %eax,%ecx
mov    $0x1,%eax
shl    %cl,%eax
movsbl %al,%eax
mov    0x39b0(%rip),%rcx
movslq (%rcx),%rcx
shl    $0x0,%rcx
sub    $0x2,%rcx
mov    $0x1,%edx
shl    %cl,%edx
mov    %edx,%ecx
movsbl %cl,%ecx
sub    $0x1,%ecx
movsbl %cl,%ecx
add    %ecx,%eax
movsbl %al,%ecx
xor    %eax,%eax
sub    %ecx,%eax
sub    $0x1,%eax
movsbl %al,%eax
mov    %eax,-0x30(%rbp)
jmp    166e <test_SIGNED_NONLONG_PROMOTES_TO_SIGNED_TYPE+0x55e>
xor    %eax,%eax
mov    %eax,-0x30(%rbp)
jmp    166e <test_SIGNED_NONLONG_PROMOTES_TO_SIGNED_TYPE+0x55e>
mov    -0x30(%rbp),%eax
movsbl %al,%eax
mov    %eax,-0x34(%rbp)
mov    0x3962(%rip),%rax
movslq (%rax),%rax
shl    $0x0,%rax
sub    $0x2,%rax
mov    %eax,%ecx
mov    $0x1,%eax
shl    %cl,%eax
movsbl %al,%eax
mov    0x3944(%rip),%rcx
movslq (%rcx),%rcx
shl    $0x0,%rcx
sub    $0x2,%rcx
mov    $0x1,%edx
shl    %cl,%edx
mov    %edx,%ecx
movsbl %cl,%ecx
sub    $0x1,%ecx
movsbl %cl,%ecx
add    %ecx,%eax
movsbl %al,%ecx
xor    %eax,%eax
sub    %ecx,%eax
sub    $0x1,%eax
movsbl %al,%eax
cmp    $0x0,%eax
jge    172a <test_SIGNED_NONLONG_PROMOTES_TO_SIGNED_TYPE+0x61a>
mov    0x3908(%rip),%rax
movslq (%rax),%rax
shl    $0x0,%rax
sub    $0x2,%rax
mov    %eax,%ecx
mov    $0x1,%eax
shl    %cl,%eax
movsbl %al,%eax
mov    0x38ea(%rip),%rcx
movslq (%rcx),%rcx
shl    $0x0,%rcx
sub    $0x2,%rcx
mov    $0x1,%edx
shl    %cl,%edx
mov    %edx,%ecx
movsbl %cl,%ecx
sub    $0x1,%ecx
movsbl %cl,%ecx
add    %ecx,%eax
movsbl %al,%ecx
xor    %eax,%eax
sub    %ecx,%eax
sub    $0x1,%eax
movsbl %al,%eax
mov    %eax,-0x38(%rbp)
jmp    1734 <test_SIGNED_NONLONG_PROMOTES_TO_SIGNED_TYPE+0x624>
xor    %eax,%eax
mov    %eax,-0x38(%rbp)
jmp    1734 <test_SIGNED_NONLONG_PROMOTES_TO_SIGNED_TYPE+0x624>
mov    -0x34(%rbp),%eax
mov    -0x38(%rbp),%ecx
movsbl %cl,%ecx
sub    %ecx,%eax
mov    %eax,-0x3c(%rbp)
mov    0x3897(%rip),%rax
movslq (%rax),%rax
shl    $0x0,%rax
sub    $0x2,%rax
mov    %eax,%ecx
mov    $0x1,%eax
shl    %cl,%eax
movsbl %al,%eax
mov    0x3879(%rip),%rcx
movslq (%rcx),%rcx
shl    $0x0,%rcx
sub    $0x2,%rcx
mov    $0x1,%edx
shl    %cl,%edx
mov    %edx,%ecx
movsbl %cl,%ecx
sub    $0x1,%ecx
movsbl %cl,%ecx
add    %ecx,%eax
movsbl %al,%ecx
xor    %eax,%eax
sub    %ecx,%eax
sub    $0x1,%eax
movsbl %al,%eax
cmp    $0x0,%eax
jge    17f5 <test_SIGNED_NONLONG_PROMOTES_TO_SIGNED_TYPE+0x6e5>
mov    0x383d(%rip),%rax
movslq (%rax),%rax
shl    $0x0,%rax
sub    $0x2,%rax
mov    %eax,%ecx
mov    $0x1,%eax
shl    %cl,%eax
movsbl %al,%eax
mov    0x381f(%rip),%rcx
movslq (%rcx),%rcx
shl    $0x0,%rcx
sub    $0x2,%rcx
mov    $0x1,%edx
shl    %cl,%edx
mov    %edx,%ecx
movsbl %cl,%ecx
sub    $0x1,%ecx
movsbl %cl,%ecx
add    %ecx,%eax
movsbl %al,%ecx
xor    %eax,%eax
sub    %ecx,%eax
sub    $0x1,%eax
movsbl %al,%eax
mov    %eax,-0x40(%rbp)
jmp    17ff <test_SIGNED_NONLONG_PROMOTES_TO_SIGNED_TYPE+0x6ef>
xor    %eax,%eax
mov    %eax,-0x40(%rbp)
jmp    17ff <test_SIGNED_NONLONG_PROMOTES_TO_SIGNED_TYPE+0x6ef>
mov    -0x40(%rbp),%eax
movsbl %al,%eax
mov    %eax,-0x44(%rbp)
mov    0x37d1(%rip),%rax
movslq (%rax),%rax
shl    $0x0,%rax
sub    $0x2,%rax
mov    %eax,%ecx
mov    $0x1,%eax
shl    %cl,%eax
movsbl %al,%eax
mov    0x37b3(%rip),%rcx
movslq (%rcx),%rcx
shl    $0x0,%rcx
sub    $0x2,%rcx
mov    $0x1,%edx
shl    %cl,%edx
mov    %edx,%ecx
movsbl %cl,%ecx
sub    $0x1,%ecx
movsbl %cl,%ecx
add    %ecx,%eax
movsbl %al,%ecx
xor    %eax,%eax
sub    %ecx,%eax
sub    $0x1,%eax
movsbl %al,%eax
cmp    $0x0,%eax
jge    18bb <test_SIGNED_NONLONG_PROMOTES_TO_SIGNED_TYPE+0x7ab>
mov    0x3777(%rip),%rax
movslq (%rax),%rax
shl    $0x0,%rax
sub    $0x2,%rax
mov    %eax,%ecx
mov    $0x1,%eax
shl    %cl,%eax
movsbl %al,%eax
mov    0x3759(%rip),%rcx
movslq (%rcx),%rcx
shl    $0x0,%rcx
sub    $0x2,%rcx
mov    $0x1,%edx
shl    %cl,%edx
mov    %edx,%ecx
movsbl %cl,%ecx
sub    $0x1,%ecx
movsbl %cl,%ecx
add    %ecx,%eax
movsbl %al,%ecx
xor    %eax,%eax
sub    %ecx,%eax
sub    $0x1,%eax
movsbl %al,%eax
mov    %eax,-0x48(%rbp)
jmp    18c5 <test_SIGNED_NONLONG_PROMOTES_TO_SIGNED_TYPE+0x7b5>
xor    %eax,%eax
mov    %eax,-0x48(%rbp)
jmp    18c5 <test_SIGNED_NONLONG_PROMOTES_TO_SIGNED_TYPE+0x7b5>
mov    -0x3c(%rbp),%eax
mov    -0x44(%rbp),%ecx
mov    -0x48(%rbp),%edx
movsbl %dl,%edx
sub    %edx,%ecx
add    $0x1,%ecx
sub    %ecx,%eax
mov    %eax,-0x4c(%rbp)
mov    0x36fe(%rip),%rax
movslq (%rax),%rax
shl    $0x0,%rax
sub    $0x2,%rax
mov    %eax,%ecx
mov    $0x1,%eax
shl    %cl,%eax
movsbl %al,%eax
mov    0x36e0(%rip),%rcx
movslq (%rcx),%rcx
shl    $0x0,%rcx
sub    $0x2,%rcx
mov    $0x1,%edx
shl    %cl,%edx
mov    %edx,%ecx
movsbl %cl,%ecx
sub    $0x1,%ecx
movsbl %cl,%ecx
add    %ecx,%eax
movsbl %al,%ecx
xor    %eax,%eax
sub    %ecx,%eax
sub    $0x1,%eax
movsbl %al,%eax
cmp    $0x0,%eax
jge    198e <test_SIGNED_NONLONG_PROMOTES_TO_SIGNED_TYPE+0x87e>
mov    0x36a4(%rip),%rax
movslq (%rax),%rax
shl    $0x0,%rax
sub    $0x2,%rax
mov    %eax,%ecx
mov    $0x1,%eax
shl    %cl,%eax
movsbl %al,%eax
mov    0x3686(%rip),%rcx
movslq (%rcx),%rcx
shl    $0x0,%rcx
sub    $0x2,%rcx
mov    $0x1,%edx
shl    %cl,%edx
mov    %edx,%ecx
movsbl %cl,%ecx
sub    $0x1,%ecx
movsbl %cl,%ecx
add    %ecx,%eax
movsbl %al,%ecx
xor    %eax,%eax
sub    %ecx,%eax
sub    $0x1,%eax
movsbl %al,%eax
mov    %eax,-0x50(%rbp)
jmp    1998 <test_SIGNED_NONLONG_PROMOTES_TO_SIGNED_TYPE+0x888>
xor    %eax,%eax
mov    %eax,-0x50(%rbp)
jmp    1998 <test_SIGNED_NONLONG_PROMOTES_TO_SIGNED_TYPE+0x888>
mov    -0x50(%rbp),%eax
movsbl %al,%eax
mov    %eax,-0x54(%rbp)
mov    0x3638(%rip),%rax
movslq (%rax),%rax
shl    $0x0,%rax
sub    $0x2,%rax
mov    %eax,%ecx
mov    $0x1,%eax
shl    %cl,%eax
movsbl %al,%eax
mov    0x361a(%rip),%rcx
movslq (%rcx),%rcx
shl    $0x0,%rcx
sub    $0x2,%rcx
mov    $0x1,%edx
shl    %cl,%edx
mov    %edx,%ecx
movsbl %cl,%ecx
sub    $0x1,%ecx
movsbl %cl,%ecx
add    %ecx,%eax
movsbl %al,%ecx
xor    %eax,%eax
sub    %ecx,%eax
sub    $0x1,%eax
movsbl %al,%eax
cmp    $0x0,%eax
jge    1a54 <test_SIGNED_NONLONG_PROMOTES_TO_SIGNED_TYPE+0x944>
mov    0x35de(%rip),%rax
movslq (%rax),%rax
shl    $0x0,%rax
sub    $0x2,%rax
mov    %eax,%ecx
mov    $0x1,%eax
shl    %cl,%eax
movsbl %al,%eax
mov    0x35c0(%rip),%rcx
movslq (%rcx),%rcx
shl    $0x0,%rcx
sub    $0x2,%rcx
mov    $0x1,%edx
shl    %cl,%edx
mov    %edx,%ecx
movsbl %cl,%ecx
sub    $0x1,%ecx
movsbl %cl,%ecx
add    %ecx,%eax
movsbl %al,%ecx
xor    %eax,%eax
sub    %ecx,%eax
sub    $0x1,%eax
movsbl %al,%eax
mov    %eax,-0x58(%rbp)
jmp    1a5e <test_SIGNED_NONLONG_PROMOTES_TO_SIGNED_TYPE+0x94e>
xor    %eax,%eax
mov    %eax,-0x58(%rbp)
jmp    1a5e <test_SIGNED_NONLONG_PROMOTES_TO_SIGNED_TYPE+0x94e>
mov    -0x4c(%rbp),%eax
mov    -0x54(%rbp),%ecx
mov    -0x58(%rbp),%edx
movsbl %dl,%edx
sub    %edx,%ecx
cmp    %ecx,%eax
setl   %al
and    $0x1,%al
movzbl %al,%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    0x352c(%rip),%rax
movslq (%rax),%rax
shl    $0x1,%rax
sub    $0x2,%rax
mov    %eax,%ecx
mov    $0x1,%eax
shl    %cl,%eax
cwtl
mov    0x3510(%rip),%rcx
movslq (%rcx),%rcx
shl    $0x1,%rcx
sub    $0x2,%rcx
mov    $0x1,%edx
shl    %cl,%edx
mov    %edx,%ecx
movswl %cx,%ecx
sub    $0x1,%ecx
movswl %cx,%ecx
add    %ecx,%eax
cwtl
cmp    $0xffffffff,%eax
jle    1b44 <test_SIGNED_NONLONG_PROMOTES_TO_SIGNED_TYPE+0xa34>
mov    0x34e0(%rip),%rax
movslq (%rax),%rax
shl    $0x1,%rax
sub    $0x2,%rax
mov    %eax,%ecx
mov    $0x1,%eax
shl    %cl,%eax
cwtl
mov    0x34c4(%rip),%rcx
movslq (%rcx),%rcx
shl    $0x1,%rcx
sub    $0x2,%rcx
mov    $0x1,%edx
shl    %cl,%edx
mov    %edx,%ecx
movswl %cx,%ecx
sub    $0x1,%ecx
movswl %cx,%ecx
add    %ecx,%eax
cwtl
mov    %eax,-0x5c(%rbp)
jmp    1b51 <test_SIGNED_NONLONG_PROMOTES_TO_SIGNED_TYPE+0xa41>
mov    $0xffffffff,%eax
mov    %eax,-0x5c(%rbp)
jmp    1b51 <test_SIGNED_NONLONG_PROMOTES_TO_SIGNED_TYPE+0xa41>
mov    -0x5c(%rbp),%eax
cwtl
mov    %eax,-0x60(%rbp)
mov    0x3481(%rip),%rax
movslq (%rax),%rax
shl    $0x1,%rax
sub    $0x2,%rax
mov    %eax,%ecx
mov    $0x1,%eax
shl    %cl,%eax
cwtl
mov    0x3465(%rip),%rcx
movslq (%rcx),%rcx
shl    $0x1,%rcx
sub    $0x2,%rcx
mov    $0x1,%edx
shl    %cl,%edx
mov    %edx,%ecx
movswl %cx,%ecx
sub    $0x1,%ecx
movswl %cx,%ecx
add    %ecx,%eax
cwtl
cmp    $0xffffffff,%eax
jle    1bef <test_SIGNED_NONLONG_PROMOTES_TO_SIGNED_TYPE+0xadf>
mov    0x3435(%rip),%rax
movslq (%rax),%rax
shl    $0x1,%rax
sub    $0x2,%rax
mov    %eax,%ecx
mov    $0x1,%eax
shl    %cl,%eax
cwtl
mov    0x3419(%rip),%rcx
movslq (%rcx),%rcx
shl    $0x1,%rcx
sub    $0x2,%rcx
mov    $0x1,%edx
shl    %cl,%edx
mov    %edx,%ecx
movswl %cx,%ecx
sub    $0x1,%ecx
movswl %cx,%ecx
add    %ecx,%eax
cwtl
mov    %eax,-0x64(%rbp)
jmp    1bfc <test_SIGNED_NONLONG_PROMOTES_TO_SIGNED_TYPE+0xaec>
mov    $0xffffffff,%eax
mov    %eax,-0x64(%rbp)
jmp    1bfc <test_SIGNED_NONLONG_PROMOTES_TO_SIGNED_TYPE+0xaec>
mov    -0x60(%rbp),%eax
mov    -0x64(%rbp),%ecx
movswl %cx,%ecx
sub    %ecx,%eax
mov    %eax,-0x68(%rbp)
mov    0x33cf(%rip),%rax
movslq (%rax),%rax
shl    $0x1,%rax
sub    $0x2,%rax
mov    %eax,%ecx
mov    $0x1,%eax
shl    %cl,%eax
cwtl
mov    0x33b3(%rip),%rcx
movslq (%rcx),%rcx
shl    $0x1,%rcx
sub    $0x2,%rcx
mov    $0x1,%edx
shl    %cl,%edx
mov    %edx,%ecx
movswl %cx,%ecx
sub    $0x1,%ecx
movswl %cx,%ecx
add    %ecx,%eax
cwtl
cmp    $0xffffffff,%eax
jle    1ca1 <test_SIGNED_NONLONG_PROMOTES_TO_SIGNED_TYPE+0xb91>
mov    0x3383(%rip),%rax
movslq (%rax),%rax
shl    $0x1,%rax
sub    $0x2,%rax
mov    %eax,%ecx
mov    $0x1,%eax
shl    %cl,%eax
cwtl
mov    0x3367(%rip),%rcx
movslq (%rcx),%rcx
shl    $0x1,%rcx
sub    $0x2,%rcx
mov    $0x1,%edx
shl    %cl,%edx
mov    %edx,%ecx
movswl %cx,%ecx
sub    $0x1,%ecx
movswl %cx,%ecx
add    %ecx,%eax
cwtl
mov    %eax,-0x6c(%rbp)
jmp    1cae <test_SIGNED_NONLONG_PROMOTES_TO_SIGNED_TYPE+0xb9e>
mov    $0xffffffff,%eax
mov    %eax,-0x6c(%rbp)
jmp    1cae <test_SIGNED_NONLONG_PROMOTES_TO_SIGNED_TYPE+0xb9e>
mov    -0x6c(%rbp),%eax
cwtl
mov    %eax,-0x70(%rbp)
mov    0x3324(%rip),%rax
movslq (%rax),%rax
shl    $0x1,%rax
sub    $0x2,%rax
mov    %eax,%ecx
mov    $0x1,%eax
shl    %cl,%eax
cwtl
mov    0x3308(%rip),%rcx
movslq (%rcx),%rcx
shl    $0x1,%rcx
sub    $0x2,%rcx
mov    $0x1,%edx
shl    %cl,%edx
mov    %edx,%ecx
movswl %cx,%ecx
sub    $0x1,%ecx
movswl %cx,%ecx
add    %ecx,%eax
cwtl
cmp    $0xffffffff,%eax
jle    1d4c <test_SIGNED_NONLONG_PROMOTES_TO_SIGNED_TYPE+0xc3c>
mov    0x32d8(%rip),%rax
movslq (%rax),%rax
shl    $0x1,%rax
sub    $0x2,%rax
mov    %eax,%ecx
mov    $0x1,%eax
shl    %cl,%eax
cwtl
mov    0x32bc(%rip),%rcx
movslq (%rcx),%rcx
shl    $0x1,%rcx
sub    $0x2,%rcx
mov    $0x1,%edx
shl    %cl,%edx
mov    %edx,%ecx
movswl %cx,%ecx
sub    $0x1,%ecx
movswl %cx,%ecx
add    %ecx,%eax
cwtl
mov    %eax,-0x74(%rbp)
jmp    1d59 <test_SIGNED_NONLONG_PROMOTES_TO_SIGNED_TYPE+0xc49>
mov    $0xffffffff,%eax
mov    %eax,-0x74(%rbp)
jmp    1d59 <test_SIGNED_NONLONG_PROMOTES_TO_SIGNED_TYPE+0xc49>
mov    -0x68(%rbp),%eax
mov    -0x70(%rbp),%ecx
mov    -0x74(%rbp),%edx
movswl %dx,%edx
sub    %edx,%ecx
add    $0x1,%ecx
sub    %ecx,%eax
mov    %eax,-0x78(%rbp)
mov    0x326a(%rip),%rax
movslq (%rax),%rax
shl    $0x1,%rax
sub    $0x2,%rax
mov    %eax,%ecx
mov    $0x1,%eax
shl    %cl,%eax
cwtl
mov    0x324e(%rip),%rcx
movslq (%rcx),%rcx
shl    $0x1,%rcx
sub    $0x2,%rcx
mov    $0x1,%edx
shl    %cl,%edx
mov    %edx,%ecx
movswl %cx,%ecx
sub    $0x1,%ecx
movswl %cx,%ecx
add    %ecx,%eax
cwtl
cmp    $0xffffffff,%eax
jle    1e06 <test_SIGNED_NONLONG_PROMOTES_TO_SIGNED_TYPE+0xcf6>
mov    0x321e(%rip),%rax
movslq (%rax),%rax
shl    $0x1,%rax
sub    $0x2,%rax
mov    %eax,%ecx
mov    $0x1,%eax
shl    %cl,%eax
cwtl
mov    0x3202(%rip),%rcx
movslq (%rcx),%rcx
shl    $0x1,%rcx
sub    $0x2,%rcx
mov    $0x1,%edx
shl    %cl,%edx
mov    %edx,%ecx
movswl %cx,%ecx
sub    $0x1,%ecx
movswl %cx,%ecx
add    %ecx,%eax
cwtl
mov    %eax,-0x7c(%rbp)
jmp    1e13 <test_SIGNED_NONLONG_PROMOTES_TO_SIGNED_TYPE+0xd03>
mov    $0xffffffff,%eax
mov    %eax,-0x7c(%rbp)
jmp    1e13 <test_SIGNED_NONLONG_PROMOTES_TO_SIGNED_TYPE+0xd03>
mov    -0x7c(%rbp),%eax
cwtl
mov    %eax,-0x80(%rbp)
mov    0x31bf(%rip),%rax
movslq (%rax),%rax
shl    $0x1,%rax
sub    $0x2,%rax
mov    %eax,%ecx
mov    $0x1,%eax
shl    %cl,%eax
cwtl
mov    0x31a3(%rip),%rcx
movslq (%rcx),%rcx
shl    $0x1,%rcx
sub    $0x2,%rcx
mov    $0x1,%edx
shl    %cl,%edx
mov    %edx,%ecx
movswl %cx,%ecx
sub    $0x1,%ecx
movswl %cx,%ecx
add    %ecx,%eax
cwtl
cmp    $0xffffffff,%eax
jle    1eb4 <test_SIGNED_NONLONG_PROMOTES_TO_SIGNED_TYPE+0xda4>
mov    0x3173(%rip),%rax
movslq (%rax),%rax
shl    $0x1,%rax
sub    $0x2,%rax
mov    %eax,%ecx
mov    $0x1,%eax
shl    %cl,%eax
cwtl
mov    0x3157(%rip),%rcx
movslq (%rcx),%rcx
shl    $0x1,%rcx
sub    $0x2,%rcx
mov    $0x1,%edx
shl    %cl,%edx
mov    %edx,%ecx
movswl %cx,%ecx
sub    $0x1,%ecx
movswl %cx,%ecx
add    %ecx,%eax
cwtl
mov    %eax,-0x84(%rbp)
jmp    1ec4 <test_SIGNED_NONLONG_PROMOTES_TO_SIGNED_TYPE+0xdb4>
mov    $0xffffffff,%eax
mov    %eax,-0x84(%rbp)
jmp    1ec4 <test_SIGNED_NONLONG_PROMOTES_TO_SIGNED_TYPE+0xdb4>
mov    -0x78(%rbp),%eax
mov    -0x80(%rbp),%ecx
mov    -0x84(%rbp),%edx
movswl %dx,%edx
sub    %edx,%ecx
cmp    %ecx,%eax
setl   %al
and    $0x1,%al
movzbl %al,%edi
call   1030 <assert@plt>
mov    0x30f5(%rip),%rax
movslq (%rax),%rax
shl    $0x1,%rax
sub    $0x2,%rax
mov    %eax,%ecx
mov    $0x1,%eax
shl    %cl,%eax
cwtl
mov    0x30d9(%rip),%rcx
movslq (%rcx),%rcx
shl    $0x1,%rcx
sub    $0x2,%rcx
mov    $0x1,%edx
shl    %cl,%edx
mov    %edx,%ecx
movswl %cx,%ecx
sub    $0x1,%ecx
movswl %cx,%ecx
add    %ecx,%eax
movswl %ax,%ecx
xor    %eax,%eax
sub    %ecx,%eax
sub    $0x1,%eax
cwtl
cmp    $0x0,%eax
jge    1f92 <test_SIGNED_NONLONG_PROMOTES_TO_SIGNED_TYPE+0xe82>
mov    0x309f(%rip),%rax
movslq (%rax),%rax
shl    $0x1,%rax
sub    $0x2,%rax
mov    %eax,%ecx
mov    $0x1,%eax
shl    %cl,%eax
cwtl
mov    0x3083(%rip),%rcx
movslq (%rcx),%rcx
shl    $0x1,%rcx
sub    $0x2,%rcx
mov    $0x1,%edx
shl    %cl,%edx
mov    %edx,%ecx
movswl %cx,%ecx
sub    $0x1,%ecx
movswl %cx,%ecx
add    %ecx,%eax
movswl %ax,%ecx
xor    %eax,%eax
sub    %ecx,%eax
sub    $0x1,%eax
cwtl
mov    %eax,-0x88(%rbp)
jmp    1f9f <test_SIGNED_NONLONG_PROMOTES_TO_SIGNED_TYPE+0xe8f>
xor    %eax,%eax
mov    %eax,-0x88(%rbp)
jmp    1f9f <test_SIGNED_NONLONG_PROMOTES_TO_SIGNED_TYPE+0xe8f>
mov    -0x88(%rbp),%eax
cwtl
mov    %eax,-0x8c(%rbp)
mov    0x302d(%rip),%rax
movslq (%rax),%rax
shl    $0x1,%rax
sub    $0x2,%rax
mov    %eax,%ecx
mov    $0x1,%eax
shl    %cl,%eax
cwtl
mov    0x3011(%rip),%rcx
movslq (%rcx),%rcx
shl    $0x1,%rcx
sub    $0x2,%rcx
mov    $0x1,%edx
shl    %cl,%edx
mov    %edx,%ecx
movswl %cx,%ecx
sub    $0x1,%ecx
movswl %cx,%ecx
add    %ecx,%eax
movswl %ax,%ecx
xor    %eax,%eax
sub    %ecx,%eax
sub    $0x1,%eax
cwtl
cmp    $0x0,%eax
jge    205a <test_SIGNED_NONLONG_PROMOTES_TO_SIGNED_TYPE+0xf4a>
mov    0x2fd7(%rip),%rax
movslq (%rax),%rax
shl    $0x1,%rax
sub    $0x2,%rax
mov    %eax,%ecx
mov    $0x1,%eax
shl    %cl,%eax
cwtl
mov    0x2fbb(%rip),%rcx
movslq (%rcx),%rcx
shl    $0x1,%rcx
sub    $0x2,%rcx
mov    $0x1,%edx
shl    %cl,%edx
mov    %edx,%ecx
movswl %cx,%ecx
sub    $0x1,%ecx
movswl %cx,%ecx
add    %ecx,%eax
movswl %ax,%ecx
xor    %eax,%eax
sub    %ecx,%eax
sub    $0x1,%eax
cwtl
mov    %eax,-0x90(%rbp)
jmp    2067 <test_SIGNED_NONLONG_PROMOTES_TO_SIGNED_TYPE+0xf57>
xor    %eax,%eax
mov    %eax,-0x90(%rbp)
jmp    2067 <test_SIGNED_NONLONG_PROMOTES_TO_SIGNED_TYPE+0xf57>
mov    -0x8c(%rbp),%eax
mov    -0x90(%rbp),%ecx
movswl %cx,%ecx
sub    %ecx,%eax
mov    %eax,-0x94(%rbp)
mov    0x2f5b(%rip),%rax
movslq (%rax),%rax
shl    $0x1,%rax
sub    $0x2,%rax
mov    %eax,%ecx
mov    $0x1,%eax
shl    %cl,%eax
cwtl
mov    0x2f3f(%rip),%rcx
movslq (%rcx),%rcx
shl    $0x1,%rcx
sub    $0x2,%rcx
mov    $0x1,%edx
shl    %cl,%edx
mov    %edx,%ecx
movswl %cx,%ecx
sub    $0x1,%ecx
movswl %cx,%ecx
add    %ecx,%eax
movswl %ax,%ecx
xor    %eax,%eax
sub    %ecx,%eax
sub    $0x1,%eax
cwtl
cmp    $0x0,%eax
jge    212c <test_SIGNED_NONLONG_PROMOTES_TO_SIGNED_TYPE+0x101c>
mov    0x2f05(%rip),%rax
movslq (%rax),%rax
shl    $0x1,%rax
sub    $0x2,%rax
mov    %eax,%ecx
mov    $0x1,%eax
shl    %cl,%eax
cwtl
mov    0x2ee9(%rip),%rcx
movslq (%rcx),%rcx
shl    $0x1,%rcx
sub    $0x2,%rcx
mov    $0x1,%edx
shl    %cl,%edx
mov    %edx,%ecx
movswl %cx,%ecx
sub    $0x1,%ecx
movswl %cx,%ecx
add    %ecx,%eax
movswl %ax,%ecx
xor    %eax,%eax
sub    %ecx,%eax
sub    $0x1,%eax
cwtl
mov    %eax,-0x98(%rbp)
jmp    2139 <test_SIGNED_NONLONG_PROMOTES_TO_SIGNED_TYPE+0x1029>
xor    %eax,%eax
mov    %eax,-0x98(%rbp)
jmp    2139 <test_SIGNED_NONLONG_PROMOTES_TO_SIGNED_TYPE+0x1029>
mov    -0x98(%rbp),%eax
cwtl
mov    %eax,-0x9c(%rbp)
mov    0x2e93(%rip),%rax
movslq (%rax),%rax
shl    $0x1,%rax
sub    $0x2,%rax
mov    %eax,%ecx
mov    $0x1,%eax
shl    %cl,%eax
cwtl
mov    0x2e77(%rip),%rcx
movslq (%rcx),%rcx
shl    $0x1,%rcx
sub    $0x2,%rcx
mov    $0x1,%edx
shl    %cl,%edx
mov    %edx,%ecx
movswl %cx,%ecx
sub    $0x1,%ecx
movswl %cx,%ecx
add    %ecx,%eax
movswl %ax,%ecx
xor    %eax,%eax
sub    %ecx,%eax
sub    $0x1,%eax
cwtl
cmp    $0x0,%eax
jge    21f4 <test_SIGNED_NONLONG_PROMOTES_TO_SIGNED_TYPE+0x10e4>
mov    0x2e3d(%rip),%rax
movslq (%rax),%rax
shl    $0x1,%rax
sub    $0x2,%rax
mov    %eax,%ecx
mov    $0x1,%eax
shl    %cl,%eax
cwtl
mov    0x2e21(%rip),%rcx
movslq (%rcx),%rcx
shl    $0x1,%rcx
sub    $0x2,%rcx
mov    $0x1,%edx
shl    %cl,%edx
mov    %edx,%ecx
movswl %cx,%ecx
sub    $0x1,%ecx
movswl %cx,%ecx
add    %ecx,%eax
movswl %ax,%ecx
xor    %eax,%eax
sub    %ecx,%eax
sub    $0x1,%eax
cwtl
mov    %eax,-0xa0(%rbp)
jmp    2201 <test_SIGNED_NONLONG_PROMOTES_TO_SIGNED_TYPE+0x10f1>
xor    %eax,%eax
mov    %eax,-0xa0(%rbp)
jmp    2201 <test_SIGNED_NONLONG_PROMOTES_TO_SIGNED_TYPE+0x10f1>
mov    -0x94(%rbp),%eax
mov    -0x9c(%rbp),%ecx
mov    -0xa0(%rbp),%edx
movswl %dx,%edx
sub    %edx,%ecx
add    $0x1,%ecx
sub    %ecx,%eax
mov    %eax,-0xa4(%rbp)
mov    0x2db6(%rip),%rax
movslq (%rax),%rax
shl    $0x1,%rax
sub    $0x2,%rax
mov    %eax,%ecx
mov    $0x1,%eax
shl    %cl,%eax
cwtl
mov    0x2d9a(%rip),%rcx
movslq (%rcx),%rcx
shl    $0x1,%rcx
sub    $0x2,%rcx
mov    $0x1,%edx
shl    %cl,%edx
mov    %edx,%ecx
movswl %cx,%ecx
sub    $0x1,%ecx
movswl %cx,%ecx
add    %ecx,%eax
movswl %ax,%ecx
xor    %eax,%eax
sub    %ecx,%eax
sub    $0x1,%eax
cwtl
cmp    $0x0,%eax
jge    22d1 <test_SIGNED_NONLONG_PROMOTES_TO_SIGNED_TYPE+0x11c1>
mov    0x2d60(%rip),%rax
movslq (%rax),%rax
shl    $0x1,%rax
sub    $0x2,%rax
mov    %eax,%ecx
mov    $0x1,%eax
shl    %cl,%eax
cwtl
mov    0x2d44(%rip),%rcx
movslq (%rcx),%rcx
shl    $0x1,%rcx
sub    $0x2,%rcx
mov    $0x1,%edx
shl    %cl,%edx
mov    %edx,%ecx
movswl %cx,%ecx
sub    $0x1,%ecx
movswl %cx,%ecx
add    %ecx,%eax
movswl %ax,%ecx
xor    %eax,%eax
sub    %ecx,%eax
sub    $0x1,%eax
cwtl
mov    %eax,-0xa8(%rbp)
jmp    22de <test_SIGNED_NONLONG_PROMOTES_TO_SIGNED_TYPE+0x11ce>
xor    %eax,%eax
mov    %eax,-0xa8(%rbp)
jmp    22de <test_SIGNED_NONLONG_PROMOTES_TO_SIGNED_TYPE+0x11ce>
mov    -0xa8(%rbp),%eax
cwtl
mov    %eax,-0xac(%rbp)
mov    0x2cee(%rip),%rax
movslq (%rax),%rax
shl    $0x1,%rax
sub    $0x2,%rax
mov    %eax,%ecx
mov    $0x1,%eax
shl    %cl,%eax
cwtl
mov    0x2cd2(%rip),%rcx
movslq (%rcx),%rcx
shl    $0x1,%rcx
sub    $0x2,%rcx
mov    $0x1,%edx
shl    %cl,%edx
mov    %edx,%ecx
movswl %cx,%ecx
sub    $0x1,%ecx
movswl %cx,%ecx
add    %ecx,%eax
movswl %ax,%ecx
xor    %eax,%eax
sub    %ecx,%eax
sub    $0x1,%eax
cwtl
cmp    $0x0,%eax
jge    2399 <test_SIGNED_NONLONG_PROMOTES_TO_SIGNED_TYPE+0x1289>
mov    0x2c98(%rip),%rax
movslq (%rax),%rax
shl    $0x1,%rax
sub    $0x2,%rax
mov    %eax,%ecx
mov    $0x1,%eax
shl    %cl,%eax
cwtl
mov    0x2c7c(%rip),%rcx
movslq (%rcx),%rcx
shl    $0x1,%rcx
sub    $0x2,%rcx
mov    $0x1,%edx
shl    %cl,%edx
mov    %edx,%ecx
movswl %cx,%ecx
sub    $0x1,%ecx
movswl %cx,%ecx
add    %ecx,%eax
movswl %ax,%ecx
xor    %eax,%eax
sub    %ecx,%eax
sub    $0x1,%eax
cwtl
mov    %eax,-0xb0(%rbp)
jmp    23a6 <test_SIGNED_NONLONG_PROMOTES_TO_SIGNED_TYPE+0x1296>
xor    %eax,%eax
mov    %eax,-0xb0(%rbp)
jmp    23a6 <test_SIGNED_NONLONG_PROMOTES_TO_SIGNED_TYPE+0x1296>
mov    -0xa4(%rbp),%eax
mov    -0xac(%rbp),%ecx
mov    -0xb0(%rbp),%edx
movswl %dx,%edx
sub    %edx,%ecx
cmp    %ecx,%eax
setl   %al
and    $0x1,%al
movzbl %al,%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    0x2bdb(%rip),%rax
movslq (%rax),%rax
shl    $0x2,%rax
sub    $0x2,%rax
mov    %eax,%ecx
mov    $0x1,%eax
shl    %cl,%eax
mov    0x2bc0(%rip),%rcx
movslq (%rcx),%rcx
shl    $0x2,%rcx
sub    $0x2,%rcx
mov    $0x1,%edx
shl    %cl,%edx
mov    %edx,%ecx
sub    $0x1,%ecx
add    %ecx,%eax
cmp    $0xffffffff,%eax
jle    2488 <test_SIGNED_NONLONG_PROMOTES_TO_SIGNED_TYPE+0x1378>
mov    0x2b97(%rip),%rax
movslq (%rax),%rax
shl    $0x2,%rax
sub    $0x2,%rax
mov    %eax,%ecx
mov    $0x1,%eax
shl    %cl,%eax
mov    0x2b7c(%rip),%rcx
movslq (%rcx),%rcx
shl    $0x2,%rcx
sub    $0x2,%rcx
mov    $0x1,%edx
shl    %cl,%edx
mov    %edx,%ecx
sub    $0x1,%ecx
add    %ecx,%eax
mov    %eax,-0xb4(%rbp)
jmp    2498 <test_SIGNED_NONLONG_PROMOTES_TO_SIGNED_TYPE+0x1388>
mov    $0xffffffff,%eax
mov    %eax,-0xb4(%rbp)
jmp    2498 <test_SIGNED_NONLONG_PROMOTES_TO_SIGNED_TYPE+0x1388>
mov    -0xb4(%rbp),%eax
mov    %eax,-0xb8(%rbp)
mov    0x2b35(%rip),%rax
movslq (%rax),%rax
shl    $0x2,%rax
sub    $0x2,%rax
mov    %eax,%ecx
mov    $0x1,%eax
shl    %cl,%eax
mov    0x2b1a(%rip),%rcx
movslq (%rcx),%rcx
shl    $0x2,%rcx
sub    $0x2,%rcx
mov    $0x1,%edx
shl    %cl,%edx
mov    %edx,%ecx
sub    $0x1,%ecx
add    %ecx,%eax
cmp    $0xffffffff,%eax
jle    252e <test_SIGNED_NONLONG_PROMOTES_TO_SIGNED_TYPE+0x141e>
mov    0x2af1(%rip),%rax
movslq (%rax),%rax
shl    $0x2,%rax
sub    $0x2,%rax
mov    %eax,%ecx
mov    $0x1,%eax
shl    %cl,%eax
mov    0x2ad6(%rip),%rcx
movslq (%rcx),%rcx
shl    $0x2,%rcx
sub    $0x2,%rcx
mov    $0x1,%edx
shl    %cl,%edx
mov    %edx,%ecx
sub    $0x1,%ecx
add    %ecx,%eax
mov    %eax,-0xbc(%rbp)
jmp    253e <test_SIGNED_NONLONG_PROMOTES_TO_SIGNED_TYPE+0x142e>
mov    $0xffffffff,%eax
mov    %eax,-0xbc(%rbp)
jmp    253e <test_SIGNED_NONLONG_PROMOTES_TO_SIGNED_TYPE+0x142e>
mov    -0xb8(%rbp),%eax
mov    -0xbc(%rbp),%ecx
sub    %ecx,%eax
mov    %eax,-0xc0(%rbp)
mov    0x2a87(%rip),%rax
movslq (%rax),%rax
shl    $0x2,%rax
sub    $0x2,%rax
mov    %eax,%ecx
mov    $0x1,%eax
shl    %cl,%eax
mov    0x2a6c(%rip),%rcx
movslq (%rcx),%rcx
shl    $0x2,%rcx
sub    $0x2,%rcx
mov    $0x1,%edx
shl    %cl,%edx
mov    %edx,%ecx
sub    $0x1,%ecx
add    %ecx,%eax
cmp    $0xffffffff,%eax
jle    25dc <test_SIGNED_NONLONG_PROMOTES_TO_SIGNED_TYPE+0x14cc>
mov    0x2a43(%rip),%rax
movslq (%rax),%rax
shl    $0x2,%rax
sub    $0x2,%rax
mov    %eax,%ecx
mov    $0x1,%eax
shl    %cl,%eax
mov    0x2a28(%rip),%rcx
movslq (%rcx),%rcx
shl    $0x2,%rcx
sub    $0x2,%rcx
mov    $0x1,%edx
shl    %cl,%edx
mov    %edx,%ecx
sub    $0x1,%ecx
add    %ecx,%eax
mov    %eax,-0xc4(%rbp)
jmp    25ec <test_SIGNED_NONLONG_PROMOTES_TO_SIGNED_TYPE+0x14dc>
mov    $0xffffffff,%eax
mov    %eax,-0xc4(%rbp)
jmp    25ec <test_SIGNED_NONLONG_PROMOTES_TO_SIGNED_TYPE+0x14dc>
mov    -0xc4(%rbp),%eax
mov    %eax,-0xc8(%rbp)
mov    0x29e1(%rip),%rax
movslq (%rax),%rax
shl    $0x2,%rax
sub    $0x2,%rax
mov    %eax,%ecx
mov    $0x1,%eax
shl    %cl,%eax
mov    0x29c6(%rip),%rcx
movslq (%rcx),%rcx
shl    $0x2,%rcx
sub    $0x2,%rcx
mov    $0x1,%edx
shl    %cl,%edx
mov    %edx,%ecx
sub    $0x1,%ecx
add    %ecx,%eax
cmp    $0xffffffff,%eax
jle    2682 <test_SIGNED_NONLONG_PROMOTES_TO_SIGNED_TYPE+0x1572>
mov    0x299d(%rip),%rax
movslq (%rax),%rax
shl    $0x2,%rax
sub    $0x2,%rax
mov    %eax,%ecx
mov    $0x1,%eax
shl    %cl,%eax
mov    0x2982(%rip),%rcx
movslq (%rcx),%rcx
shl    $0x2,%rcx
sub    $0x2,%rcx
mov    $0x1,%edx
shl    %cl,%edx
mov    %edx,%ecx
sub    $0x1,%ecx
add    %ecx,%eax
mov    %eax,-0xcc(%rbp)
jmp    2692 <test_SIGNED_NONLONG_PROMOTES_TO_SIGNED_TYPE+0x1582>
mov    $0xffffffff,%eax
mov    %eax,-0xcc(%rbp)
jmp    2692 <test_SIGNED_NONLONG_PROMOTES_TO_SIGNED_TYPE+0x1582>
mov    -0xc0(%rbp),%eax
mov    -0xc8(%rbp),%ecx
mov    -0xcc(%rbp),%edx
sub    %edx,%ecx
add    $0x1,%ecx
sub    %ecx,%eax
mov    %eax,-0xd0(%rbp)
mov    0x2928(%rip),%rax
movslq (%rax),%rax
shl    $0x2,%rax
sub    $0x2,%rax
mov    %eax,%ecx
mov    $0x1,%eax
shl    %cl,%eax
mov    0x290d(%rip),%rcx
movslq (%rcx),%rcx
shl    $0x2,%rcx
sub    $0x2,%rcx
mov    $0x1,%edx
shl    %cl,%edx
mov    %edx,%ecx
sub    $0x1,%ecx
add    %ecx,%eax
cmp    $0xffffffff,%eax
jle    273b <test_SIGNED_NONLONG_PROMOTES_TO_SIGNED_TYPE+0x162b>
mov    0x28e4(%rip),%rax
movslq (%rax),%rax
shl    $0x2,%rax
sub    $0x2,%rax
mov    %eax,%ecx
mov    $0x1,%eax
shl    %cl,%eax
mov    0x28c9(%rip),%rcx
movslq (%rcx),%rcx
shl    $0x2,%rcx
sub    $0x2,%rcx
mov    $0x1,%edx
shl    %cl,%edx
mov    %edx,%ecx
sub    $0x1,%ecx
add    %ecx,%eax
mov    %eax,-0xd4(%rbp)
jmp    274b <test_SIGNED_NONLONG_PROMOTES_TO_SIGNED_TYPE+0x163b>
mov    $0xffffffff,%eax
mov    %eax,-0xd4(%rbp)
jmp    274b <test_SIGNED_NONLONG_PROMOTES_TO_SIGNED_TYPE+0x163b>
mov    -0xd4(%rbp),%eax
mov    %eax,-0xd8(%rbp)
mov    0x2882(%rip),%rax
movslq (%rax),%rax
shl    $0x2,%rax
sub    $0x2,%rax
mov    %eax,%ecx
mov    $0x1,%eax
shl    %cl,%eax
mov    0x2867(%rip),%rcx
movslq (%rcx),%rcx
shl    $0x2,%rcx
sub    $0x2,%rcx
mov    $0x1,%edx
shl    %cl,%edx
mov    %edx,%ecx
sub    $0x1,%ecx
add    %ecx,%eax
cmp    $0xffffffff,%eax
jle    27e1 <test_SIGNED_NONLONG_PROMOTES_TO_SIGNED_TYPE+0x16d1>
mov    0x283e(%rip),%rax
movslq (%rax),%rax
shl    $0x2,%rax
sub    $0x2,%rax
mov    %eax,%ecx
mov    $0x1,%eax
shl    %cl,%eax
mov    0x2823(%rip),%rcx
movslq (%rcx),%rcx
shl    $0x2,%rcx
sub    $0x2,%rcx
mov    $0x1,%edx
shl    %cl,%edx
mov    %edx,%ecx
sub    $0x1,%ecx
add    %ecx,%eax
mov    %eax,-0xdc(%rbp)
jmp    27f1 <test_SIGNED_NONLONG_PROMOTES_TO_SIGNED_TYPE+0x16e1>
mov    $0xffffffff,%eax
mov    %eax,-0xdc(%rbp)
jmp    27f1 <test_SIGNED_NONLONG_PROMOTES_TO_SIGNED_TYPE+0x16e1>
mov    -0xd0(%rbp),%eax
mov    -0xd8(%rbp),%ecx
mov    -0xdc(%rbp),%edx
sub    %edx,%ecx
cmp    %ecx,%eax
setl   %al
and    $0x1,%al
movzbl %al,%edi
call   1030 <assert@plt>
mov    0x27c5(%rip),%rax
movslq (%rax),%rax
shl    $0x2,%rax
sub    $0x2,%rax
mov    %eax,%ecx
mov    $0x1,%eax
shl    %cl,%eax
mov    %eax,-0xe0(%rbp)
mov    0x27a4(%rip),%rax
movslq (%rax),%rax
shl    $0x2,%rax
sub    $0x2,%rax
mov    %eax,%ecx
mov    $0x1,%eax
shl    %cl,%eax
mov    -0xe0(%rbp),%ecx
sub    $0x1,%eax
add    %eax,%ecx
xor    %eax,%eax
sub    %ecx,%eax
sub    $0x1,%eax
cmp    $0x0,%eax
jge    28c4 <test_SIGNED_NONLONG_PROMOTES_TO_SIGNED_TYPE+0x17b4>
mov    0x276e(%rip),%rax
movslq (%rax),%rax
shl    $0x2,%rax
sub    $0x2,%rax
mov    %eax,%ecx
mov    $0x1,%eax
shl    %cl,%eax
mov    %eax,-0xe8(%rbp)
mov    0x274d(%rip),%rax
movslq (%rax),%rax
shl    $0x2,%rax
sub    $0x2,%rax
mov    %eax,%ecx
mov    $0x1,%eax
shl    %cl,%eax
mov    -0xe8(%rbp),%ecx
sub    $0x1,%eax
add    %eax,%ecx
xor    %eax,%eax
sub    %ecx,%eax
sub    $0x1,%eax
mov    %eax,-0xe4(%rbp)
jmp    28d1 <test_SIGNED_NONLONG_PROMOTES_TO_SIGNED_TYPE+0x17c1>
xor    %eax,%eax
mov    %eax,-0xe4(%rbp)
jmp    28d1 <test_SIGNED_NONLONG_PROMOTES_TO_SIGNED_TYPE+0x17c1>
mov    -0xe4(%rbp),%eax
mov    %eax,-0xf0(%rbp)
mov    0x26fc(%rip),%rax
movslq (%rax),%rax
shl    $0x2,%rax
sub    $0x2,%rax
mov    %eax,%ecx
mov    $0x1,%eax
shl    %cl,%eax
mov    %eax,-0xec(%rbp)
mov    0x26db(%rip),%rax
movslq (%rax),%rax
shl    $0x2,%rax
sub    $0x2,%rax
mov    %eax,%ecx
mov    $0x1,%eax
shl    %cl,%eax
mov    -0xec(%rbp),%ecx
sub    $0x1,%eax
add    %eax,%ecx
xor    %eax,%eax
sub    %ecx,%eax
sub    $0x1,%eax
cmp    $0x0,%eax
jge    298d <test_SIGNED_NONLONG_PROMOTES_TO_SIGNED_TYPE+0x187d>
mov    0x26a5(%rip),%rax
movslq (%rax),%rax
shl    $0x2,%rax
sub    $0x2,%rax
mov    %eax,%ecx
mov    $0x1,%eax
shl    %cl,%eax
mov    %eax,-0xf8(%rbp)
mov    0x2684(%rip),%rax
movslq (%rax),%rax
shl    $0x2,%rax
sub    $0x2,%rax
mov    %eax,%ecx
mov    $0x1,%eax
shl    %cl,%eax
mov    -0xf8(%rbp),%ecx
sub    $0x1,%eax
add    %eax,%ecx
xor    %eax,%eax
sub    %ecx,%eax
sub    $0x1,%eax
mov    %eax,-0xf4(%rbp)
jmp    299a <test_SIGNED_NONLONG_PROMOTES_TO_SIGNED_TYPE+0x188a>
xor    %eax,%eax
mov    %eax,-0xf4(%rbp)
jmp    299a <test_SIGNED_NONLONG_PROMOTES_TO_SIGNED_TYPE+0x188a>
mov    -0xf0(%rbp),%eax
mov    -0xf4(%rbp),%ecx
sub    %ecx,%eax
mov    %eax,-0x100(%rbp)
mov    0x262b(%rip),%rax
movslq (%rax),%rax
shl    $0x2,%rax
sub    $0x2,%rax
mov    %eax,%ecx
mov    $0x1,%eax
shl    %cl,%eax
mov    %eax,-0xfc(%rbp)
mov    0x260a(%rip),%rax
movslq (%rax),%rax
shl    $0x2,%rax
sub    $0x2,%rax
mov    %eax,%ecx
mov    $0x1,%eax
shl    %cl,%eax
mov    -0xfc(%rbp),%ecx
sub    $0x1,%eax
add    %eax,%ecx
xor    %eax,%eax
sub    %ecx,%eax
sub    $0x1,%eax
cmp    $0x0,%eax
jge    2a5e <test_SIGNED_NONLONG_PROMOTES_TO_SIGNED_TYPE+0x194e>
mov    0x25d4(%rip),%rax
movslq (%rax),%rax
shl    $0x2,%rax
sub    $0x2,%rax
mov    %eax,%ecx
mov    $0x1,%eax
shl    %cl,%eax
mov    %eax,-0x108(%rbp)
mov    0x25b3(%rip),%rax
movslq (%rax),%rax
shl    $0x2,%rax
sub    $0x2,%rax
mov    %eax,%ecx
mov    $0x1,%eax
shl    %cl,%eax
mov    -0x108(%rbp),%ecx
sub    $0x1,%eax
add    %eax,%ecx
xor    %eax,%eax
sub    %ecx,%eax
sub    $0x1,%eax
mov    %eax,-0x104(%rbp)
jmp    2a6b <test_SIGNED_NONLONG_PROMOTES_TO_SIGNED_TYPE+0x195b>
xor    %eax,%eax
mov    %eax,-0x104(%rbp)
jmp    2a6b <test_SIGNED_NONLONG_PROMOTES_TO_SIGNED_TYPE+0x195b>
mov    -0x104(%rbp),%eax
mov    %eax,-0x110(%rbp)
mov    0x2562(%rip),%rax
movslq (%rax),%rax
shl    $0x2,%rax
sub    $0x2,%rax
mov    %eax,%ecx
mov    $0x1,%eax
shl    %cl,%eax
mov    %eax,-0x10c(%rbp)
mov    0x2541(%rip),%rax
movslq (%rax),%rax
shl    $0x2,%rax
sub    $0x2,%rax
mov    %eax,%ecx
mov    $0x1,%eax
shl    %cl,%eax
mov    -0x10c(%rbp),%ecx
sub    $0x1,%eax
add    %eax,%ecx
xor    %eax,%eax
sub    %ecx,%eax
sub    $0x1,%eax
cmp    $0x0,%eax
jge    2b27 <test_SIGNED_NONLONG_PROMOTES_TO_SIGNED_TYPE+0x1a17>
mov    0x250b(%rip),%rax
movslq (%rax),%rax
shl    $0x2,%rax
sub    $0x2,%rax
mov    %eax,%ecx
mov    $0x1,%eax
shl    %cl,%eax
mov    %eax,-0x118(%rbp)
mov    0x24ea(%rip),%rax
movslq (%rax),%rax
shl    $0x2,%rax
sub    $0x2,%rax
mov    %eax,%ecx
mov    $0x1,%eax
shl    %cl,%eax
mov    -0x118(%rbp),%ecx
sub    $0x1,%eax
add    %eax,%ecx
xor    %eax,%eax
sub    %ecx,%eax
sub    $0x1,%eax
mov    %eax,-0x114(%rbp)
jmp    2b34 <test_SIGNED_NONLONG_PROMOTES_TO_SIGNED_TYPE+0x1a24>
xor    %eax,%eax
mov    %eax,-0x114(%rbp)
jmp    2b34 <test_SIGNED_NONLONG_PROMOTES_TO_SIGNED_TYPE+0x1a24>
mov    -0x100(%rbp),%eax
mov    -0x110(%rbp),%ecx
mov    -0x114(%rbp),%edx
sub    %edx,%ecx
add    $0x1,%ecx
sub    %ecx,%eax
mov    %eax,-0x120(%rbp)
mov    0x2486(%rip),%rax
movslq (%rax),%rax
shl    $0x2,%rax
sub    $0x2,%rax
mov    %eax,%ecx
mov    $0x1,%eax
shl    %cl,%eax
mov    %eax,-0x11c(%rbp)
mov    0x2465(%rip),%rax
movslq (%rax),%rax
shl    $0x2,%rax
sub    $0x2,%rax
mov    %eax,%ecx
mov    $0x1,%eax
shl    %cl,%eax
mov    -0x11c(%rbp),%ecx
sub    $0x1,%eax
add    %eax,%ecx
xor    %eax,%eax
sub    %ecx,%eax
sub    $0x1,%eax
cmp    $0x0,%eax
jge    2c03 <test_SIGNED_NONLONG_PROMOTES_TO_SIGNED_TYPE+0x1af3>
mov    0x242f(%rip),%rax
movslq (%rax),%rax
shl    $0x2,%rax
sub    $0x2,%rax
mov    %eax,%ecx
mov    $0x1,%eax
shl    %cl,%eax
mov    %eax,-0x128(%rbp)
mov    0x240e(%rip),%rax
movslq (%rax),%rax
shl    $0x2,%rax
sub    $0x2,%rax
mov    %eax,%ecx
mov    $0x1,%eax
shl    %cl,%eax
mov    -0x128(%rbp),%ecx
sub    $0x1,%eax
add    %eax,%ecx
xor    %eax,%eax
sub    %ecx,%eax
sub    $0x1,%eax
mov    %eax,-0x124(%rbp)
jmp    2c10 <test_SIGNED_NONLONG_PROMOTES_TO_SIGNED_TYPE+0x1b00>
xor    %eax,%eax
mov    %eax,-0x124(%rbp)
jmp    2c10 <test_SIGNED_NONLONG_PROMOTES_TO_SIGNED_TYPE+0x1b00>
mov    -0x124(%rbp),%eax
mov    %eax,-0x130(%rbp)
mov    0x23bd(%rip),%rax
movslq (%rax),%rax
shl    $0x2,%rax
sub    $0x2,%rax
mov    %eax,%ecx
mov    $0x1,%eax
shl    %cl,%eax
mov    %eax,-0x12c(%rbp)
mov    0x239c(%rip),%rax
movslq (%rax),%rax
shl    $0x2,%rax
sub    $0x2,%rax
mov    %eax,%ecx
mov    $0x1,%eax
shl    %cl,%eax
mov    -0x12c(%rbp),%ecx
sub    $0x1,%eax
add    %eax,%ecx
xor    %eax,%eax
sub    %ecx,%eax
sub    $0x1,%eax
cmp    $0x0,%eax
jge    2ccc <test_SIGNED_NONLONG_PROMOTES_TO_SIGNED_TYPE+0x1bbc>
mov    0x2366(%rip),%rax
movslq (%rax),%rax
shl    $0x2,%rax
sub    $0x2,%rax
mov    %eax,%ecx
mov    $0x1,%eax
shl    %cl,%eax
mov    %eax,-0x138(%rbp)
mov    0x2345(%rip),%rax
movslq (%rax),%rax
shl    $0x2,%rax
sub    $0x2,%rax
mov    %eax,%ecx
mov    $0x1,%eax
shl    %cl,%eax
mov    -0x138(%rbp),%ecx
sub    $0x1,%eax
add    %eax,%ecx
xor    %eax,%eax
sub    %ecx,%eax
sub    $0x1,%eax
mov    %eax,-0x134(%rbp)
jmp    2cd9 <test_SIGNED_NONLONG_PROMOTES_TO_SIGNED_TYPE+0x1bc9>
xor    %eax,%eax
mov    %eax,-0x134(%rbp)
jmp    2cd9 <test_SIGNED_NONLONG_PROMOTES_TO_SIGNED_TYPE+0x1bc9>
mov    -0x120(%rbp),%eax
mov    -0x130(%rbp),%ecx
mov    -0x134(%rbp),%edx
sub    %edx,%ecx
cmp    %ecx,%eax
setl   %al
and    $0x1,%al
movzbl %al,%edi
call   1030 <assert@plt>
mov    $0x1,%eax
add    $0x140,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<test_SIGNED_NONLONG_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,%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,%edi
call   1030 <assert@plt>
mov    $0x1,%edi
call   1030 <assert@plt>
mov    $0x1,%edi
call   1030 <assert@plt>
mov    $0x1,%eax
pop    %rcx
ret

LLVM IR (-O0):
@CHAR_BIT = global i32 0
define i32 @test_SIGNED_NONLONG_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 1, %7
%9 = sub i64 %8, 2
%10 = trunc i64 %9 to i32
%11 = shl i32 1, %10
%12 = trunc i32 %11 to i8
%13 = sext i8 %12 to i32
%14 = load i32, i32* @CHAR_BIT
%15 = sext i32 %14 to i64
%16 = mul i64 1, %15
%17 = sub i64 %16, 2
%18 = trunc i64 %17 to i32
%19 = shl i32 1, %18
%20 = trunc i32 %19 to i8
%21 = sext i8 %20 to i32
%22 = sub nsw i32 %21, 1
%23 = trunc i32 %22 to i8
%24 = sext i8 %23 to i32
%25 = add nsw i32 %13, %24
%26 = trunc i32 %25 to i8
%27 = sext i8 %26 to i32
%28 = icmp sgt i32 %27, -1
br i1 %28, label %29, label %52
29: ; preds = %0
%30 = load i32, i32* @CHAR_BIT
%31 = sext i32 %30 to i64
%32 = mul i64 1, %31
%33 = sub i64 %32, 2
%34 = trunc i64 %33 to i32
%35 = shl i32 1, %34
%36 = trunc i32 %35 to i8
%37 = sext i8 %36 to i32
%38 = load i32, i32* @CHAR_BIT
%39 = sext i32 %38 to i64
%40 = mul i64 1, %39
%41 = sub i64 %40, 2
%42 = trunc i64 %41 to i32
%43 = shl i32 1, %42
%44 = trunc i32 %43 to i8
%45 = sext i8 %44 to i32
%46 = sub nsw i32 %45, 1
%47 = trunc i32 %46 to i8
%48 = sext i8 %47 to i32
%49 = add nsw i32 %37, %48
%50 = trunc i32 %49 to i8
%51 = sext i8 %50 to i32
br label %53
52: ; preds = %0
br label %53
53: ; preds = %52, %29
%54 = phi i32 [ %51, %29 ], [ -1, %52 ]
%55 = trunc i32 %54 to i8
%56 = sext i8 %55 to i32
%57 = load i32, i32* @CHAR_BIT
%58 = sext i32 %57 to i64
%59 = mul i64 1, %58
%60 = sub i64 %59, 2
%61 = trunc i64 %60 to i32
%62 = shl i32 1, %61
%63 = trunc i32 %62 to i8
%64 = sext i8 %63 to i32
%65 = load i32, i32* @CHAR_BIT
%66 = sext i32 %65 to i64
%67 = mul i64 1, %66
%68 = sub i64 %67, 2
%69 = trunc i64 %68 to i32
%70 = shl i32 1, %69
%71 = trunc i32 %70 to i8
%72 = sext i8 %71 to i32
%73 = sub nsw i32 %72, 1
%74 = trunc i32 %73 to i8
%75 = sext i8 %74 to i32
%76 = add nsw i32 %64, %75
%77 = trunc i32 %76 to i8
%78 = sext i8 %77 to i32
%79 = icmp sgt i32 %78, -1
br i1 %79, label %80, label %103
80: ; preds = %53
%81 = load i32, i32* @CHAR_BIT
%82 = sext i32 %81 to i64
%83 = mul i64 1, %82
%84 = sub i64 %83, 2
%85 = trunc i64 %84 to i32
%86 = shl i32 1, %85
%87 = trunc i32 %86 to i8
%88 = sext i8 %87 to i32
%89 = load i32, i32* @CHAR_BIT
%90 = sext i32 %89 to i64
%91 = mul i64 1, %90
%92 = sub i64 %91, 2
%93 = trunc i64 %92 to i32
%94 = shl i32 1, %93
%95 = trunc i32 %94 to i8
%96 = sext i8 %95 to i32
%97 = sub nsw i32 %96, 1
%98 = trunc i32 %97 to i8
%99 = sext i8 %98 to i32
%100 = add nsw i32 %88, %99
%101 = trunc i32 %100 to i8
%102 = sext i8 %101 to i32
br label %104
103: ; preds = %53
br label %104
104: ; preds = %103, %80
%105 = phi i32 [ %102, %80 ], [ -1, %103 ]
%106 = trunc i32 %105 to i8
%107 = sext i8 %106 to i32
%108 = sub nsw i32 %56, %107
%109 = load i32, i32* @CHAR_BIT
%110 = sext i32 %109 to i64
%111 = mul i64 1, %110
%112 = sub i64 %111, 2
%113 = trunc i64 %112 to i32
%114 = shl i32 1, %113
%115 = trunc i32 %114 to i8
%116 = sext i8 %115 to i32
%117 = load i32, i32* @CHAR_BIT
%118 = sext i32 %117 to i64
%119 = mul i64 1, %118
%120 = sub i64 %119, 2
%121 = trunc i64 %120 to i32
%122 = shl i32 1, %121
%123 = trunc i32 %122 to i8
%124 = sext i8 %123 to i32
%125 = sub nsw i32 %124, 1
%126 = trunc i32 %125 to i8
%127 = sext i8 %126 to i32
%128 = add nsw i32 %116, %127
%129 = trunc i32 %128 to i8
%130 = sext i8 %129 to i32
%131 = icmp sgt i32 %130, -1
br i1 %131, label %132, label %155
132: ; preds = %104
%133 = load i32, i32* @CHAR_BIT
%134 = sext i32 %133 to i64
%135 = mul i64 1, %134
%136 = sub i64 %135, 2
%137 = trunc i64 %136 to i32
%138 = shl i32 1, %137
%139 = trunc i32 %138 to i8
%140 = sext i8 %139 to i32
%141 = load i32, i32* @CHAR_BIT
%142 = sext i32 %141 to i64
%143 = mul i64 1, %142
%144 = sub i64 %143, 2
%145 = trunc i64 %144 to i32
%146 = shl i32 1, %145
%147 = trunc i32 %146 to i8
%148 = sext i8 %147 to i32
%149 = sub nsw i32 %148, 1
%150 = trunc i32 %149 to i8
%151 = sext i8 %150 to i32
%152 = add nsw i32 %140, %151
%153 = trunc i32 %152 to i8
%154 = sext i8 %153 to i32
br label %156
155: ; preds = %104
br label %156
156: ; preds = %155, %132
%157 = phi i32 [ %154, %132 ], [ -1, %155 ]
%158 = trunc i32 %157 to i8
%159 = sext i8 %158 to i32
%160 = load i32, i32* @CHAR_BIT
%161 = sext i32 %160 to i64
%162 = mul i64 1, %161
%163 = sub i64 %162, 2
%164 = trunc i64 %163 to i32
%165 = shl i32 1, %164
%166 = trunc i32 %165 to i8
%167 = sext i8 %166 to i32
%168 = load i32, i32* @CHAR_BIT
%169 = sext i32 %168 to i64
%170 = mul i64 1, %169
%171 = sub i64 %170, 2
%172 = trunc i64 %171 to i32
%173 = shl i32 1, %172
%174 = trunc i32 %173 to i8
%175 = sext i8 %174 to i32
%176 = sub nsw i32 %175, 1
%177 = trunc i32 %176 to i8
%178 = sext i8 %177 to i32
%179 = add nsw i32 %167, %178
%180 = trunc i32 %179 to i8
%181 = sext i8 %180 to i32
%182 = icmp sgt i32 %181, -1
br i1 %182, label %183, label %206
183: ; preds = %156
%184 = load i32, i32* @CHAR_BIT
%185 = sext i32 %184 to i64
%186 = mul i64 1, %185
%187 = sub i64 %186, 2
%188 = trunc i64 %187 to i32
%189 = shl i32 1, %188
%190 = trunc i32 %189 to i8
%191 = sext i8 %190 to i32
%192 = load i32, i32* @CHAR_BIT
%193 = sext i32 %192 to i64
%194 = mul i64 1, %193
%195 = sub i64 %194, 2
%196 = trunc i64 %195 to i32
%197 = shl i32 1, %196
%198 = trunc i32 %197 to i8
%199 = sext i8 %198 to i32
%200 = sub nsw i32 %199, 1
%201 = trunc i32 %200 to i8
%202 = sext i8 %201 to i32
%203 = add nsw i32 %191, %202
%204 = trunc i32 %203 to i8
%205 = sext i8 %204 to i32
br label %207
206: ; preds = %156
br label %207
207: ; preds = %206, %183
%208 = phi i32 [ %205, %183 ], [ -1, %206 ]
%209 = trunc i32 %208 to i8
%210 = sext i8 %209 to i32
%211 = sub nsw i32 %159, %210
%212 = add nsw i32 %211, 1
%213 = sub nsw i32 %108, %212
%214 = load i32, i32* @CHAR_BIT
%215 = sext i32 %214 to i64
%216 = mul i64 1, %215
%217 = sub i64 %216, 2
%218 = trunc i64 %217 to i32
%219 = shl i32 1, %218
%220 = trunc i32 %219 to i8
%221 = sext i8 %220 to i32
%222 = load i32, i32* @CHAR_BIT
%223 = sext i32 %222 to i64
%224 = mul i64 1, %223
%225 = sub i64 %224, 2
%226 = trunc i64 %225 to i32
%227 = shl i32 1, %226
%228 = trunc i32 %227 to i8
%229 = sext i8 %228 to i32
%230 = sub nsw i32 %229, 1
%231 = trunc i32 %230 to i8
%232 = sext i8 %231 to i32
%233 = add nsw i32 %221, %232
%234 = trunc i32 %233 to i8
%235 = sext i8 %234 to i32
%236 = icmp sgt i32 %235, -1
br i1 %236, label %237, label %260
237: ; preds = %207
%238 = load i32, i32* @CHAR_BIT
%239 = sext i32 %238 to i64
%240 = mul i64 1, %239
%241 = sub i64 %240, 2
%242 = trunc i64 %241 to i32
%243 = shl i32 1, %242
%244 = trunc i32 %243 to i8
%245 = sext i8 %244 to i32
%246 = load i32, i32* @CHAR_BIT
%247 = sext i32 %246 to i64
%248 = mul i64 1, %247
%249 = sub i64 %248, 2
%250 = trunc i64 %249 to i32
%251 = shl i32 1, %250
%252 = trunc i32 %251 to i8
%253 = sext i8 %252 to i32
%254 = sub nsw i32 %253, 1
%255 = trunc i32 %254 to i8
%256 = sext i8 %255 to i32
%257 = add nsw i32 %245, %256
%258 = trunc i32 %257 to i8
%259 = sext i8 %258 to i32
br label %261
260: ; preds = %207
br label %261
261: ; preds = %260, %237
%262 = phi i32 [ %259, %237 ], [ -1, %260 ]
%263 = trunc i32 %262 to i8
%264 = sext i8 %263 to i32
%265 = load i32, i32* @CHAR_BIT
%266 = sext i32 %265 to i64
%267 = mul i64 1, %266
%268 = sub i64 %267, 2
%269 = trunc i64 %268 to i32
%270 = shl i32 1, %269
%271 = trunc i32 %270 to i8
%272 = sext i8 %271 to i32
%273 = load i32, i32* @CHAR_BIT
%274 = sext i32 %273 to i64
%275 = mul i64 1, %274
%276 = sub i64 %275, 2
%277 = trunc i64 %276 to i32
%278 = shl i32 1, %277
%279 = trunc i32 %278 to i8
%280 = sext i8 %279 to i32
%281 = sub nsw i32 %280, 1
%282 = trunc i32 %281 to i8
%283 = sext i8 %282 to i32
%284 = add nsw i32 %272, %283
%285 = trunc i32 %284 to i8
%286 = sext i8 %285 to i32
%287 = icmp sgt i32 %286, -1
br i1 %287, label %288, label %311
288: ; preds = %261
%289 = load i32, i32* @CHAR_BIT
%290 = sext i32 %289 to i64
%291 = mul i64 1, %290
%292 = sub i64 %291, 2
%293 = trunc i64 %292 to i32
%294 = shl i32 1, %293
%295 = trunc i32 %294 to i8
%296 = sext i8 %295 to i32
%297 = load i32, i32* @CHAR_BIT
%298 = sext i32 %297 to i64
%299 = mul i64 1, %298
%300 = sub i64 %299, 2
%301 = trunc i64 %300 to i32
%302 = shl i32 1, %301
%303 = trunc i32 %302 to i8
%304 = sext i8 %303 to i32
%305 = sub nsw i32 %304, 1
%306 = trunc i32 %305 to i8
%307 = sext i8 %306 to i32
%308 = add nsw i32 %296, %307
%309 = trunc i32 %308 to i8
%310 = sext i8 %309 to i32
br label %312
311: ; preds = %261
br label %312
312: ; preds = %311, %288
%313 = phi i32 [ %310, %288 ], [ -1, %311 ]
%314 = trunc i32 %313 to i8
%315 = sext i8 %314 to i32
%316 = sub nsw i32 %264, %315
%317 = icmp slt i32 %213, %316
%318 = zext i1 %317 to i32
%319 = call i32 @assert(i32 %318)
%320 = load i32, i32* @CHAR_BIT
%321 = sext i32 %320 to i64
%322 = mul i64 1, %321
%323 = sub i64 %322, 2
%324 = trunc i64 %323 to i32
%325 = shl i32 1, %324
%326 = trunc i32 %325 to i8
%327 = sext i8 %326 to i32
%328 = load i32, i32* @CHAR_BIT
%329 = sext i32 %328 to i64
%330 = mul i64 1, %329
%331 = sub i64 %330, 2
%332 = trunc i64 %331 to i32
%333 = shl i32 1, %332
%334 = trunc i32 %333 to i8
%335 = sext i8 %334 to i32
%336 = sub nsw i32 %335, 1
%337 = trunc i32 %336 to i8
%338 = sext i8 %337 to i32
%339 = add nsw i32 %327, %338
%340 = trunc i32 %339 to i8
%341 = sext i8 %340 to i32
%342 = sub nsw i32 0, %341
%343 = sub nsw i32 %342, 1
%344 = trunc i32 %343 to i8
%345 = sext i8 %344 to i32
%346 = icmp slt i32 %345, 0
br i1 %346, label %347, label %374
347: ; preds = %312
%348 = load i32, i32* @CHAR_BIT
%349 = sext i32 %348 to i64
%350 = mul i64 1, %349
%351 = sub i64 %350, 2
%352 = trunc i64 %351 to i32
%353 = shl i32 1, %352
%354 = trunc i32 %353 to i8
%355 = sext i8 %354 to i32
%356 = load i32, i32* @CHAR_BIT
%357 = sext i32 %356 to i64
%358 = mul i64 1, %357
%359 = sub i64 %358, 2
%360 = trunc i64 %359 to i32
%361 = shl i32 1, %360
%362 = trunc i32 %361 to i8
%363 = sext i8 %362 to i32
%364 = sub nsw i32 %363, 1
%365 = trunc i32 %364 to i8
%366 = sext i8 %365 to i32
%367 = add nsw i32 %355, %366
%368 = trunc i32 %367 to i8
%369 = sext i8 %368 to i32
%370 = sub nsw i32 0, %369
%371 = sub nsw i32 %370, 1
%372 = trunc i32 %371 to i8
%373 = sext i8 %372 to i32
br label %375
374: ; preds = %312
br label %375
375: ; preds = %374, %347
%376 = phi i32 [ %373, %347 ], [ 0, %374 ]
%377 = trunc i32 %376 to i8
%378 = sext i8 %377 to i32
%379 = load i32, i32* @CHAR_BIT
%380 = sext i32 %379 to i64
%381 = mul i64 1, %380
%382 = sub i64 %381, 2
%383 = trunc i64 %382 to i32
%384 = shl i32 1, %383
%385 = trunc i32 %384 to i8
%386 = sext i8 %385 to i32
%387 = load i32, i32* @CHAR_BIT
%388 = sext i32 %387 to i64
%389 = mul i64 1, %388
%390 = sub i64 %389, 2
%391 = trunc i64 %390 to i32
%392 = shl i32 1, %391
%393 = trunc i32 %392 to i8
%394 = sext i8 %393 to i32
%395 = sub nsw i32 %394, 1
%396 = trunc i32 %395 to i8
%397 = sext i8 %396 to i32
%398 = add nsw i32 %386, %397
%399 = trunc i32 %398 to i8
%400 = sext i8 %399 to i32
%401 = sub nsw i32 0, %400
%402 = sub nsw i32 %401, 1
%403 = trunc i32 %402 to i8
%404 = sext i8 %403 to i32
%405 = icmp slt i32 %404, 0
br i1 %405, label %406, label %433
406: ; preds = %375
%407 = load i32, i32* @CHAR_BIT
%408 = sext i32 %407 to i64
%409 = mul i64 1, %408
%410 = sub i64 %409, 2
%411 = trunc i64 %410 to i32
%412 = shl i32 1, %411
%413 = trunc i32 %412 to i8
%414 = sext i8 %413 to i32
%415 = load i32, i32* @CHAR_BIT
%416 = sext i32 %415 to i64
%417 = mul i64 1, %416
%418 = sub i64 %417, 2
%419 = trunc i64 %418 to i32
%420 = shl i32 1, %419
%421 = trunc i32 %420 to i8
%422 = sext i8 %421 to i32
%423 = sub nsw i32 %422, 1
%424 = trunc i32 %423 to i8
%425 = sext i8 %424 to i32
%426 = add nsw i32 %414, %425
%427 = trunc i32 %426 to i8
%428 = sext i8 %427 to i32
%429 = sub nsw i32 0, %428
%430 = sub nsw i32 %429, 1
%431 = trunc i32 %430 to i8
%432 = sext i8 %431 to i32
br label %434
433: ; preds = %375
br label %434
434: ; preds = %433, %406
%435 = phi i32 [ %432, %406 ], [ 0, %433 ]
%436 = trunc i32 %435 to i8
%437 = sext i8 %436 to i32
%438 = sub nsw i32 %378, %437
%439 = load i32, i32* @CHAR_BIT
%440 = sext i32 %439 to i64
%441 = mul i64 1, %440
%442 = sub i64 %441, 2
%443 = trunc i64 %442 to i32
%444 = shl i32 1, %443
%445 = trunc i32 %444 to i8
%446 = sext i8 %445 to i32
%447 = load i32, i32* @CHAR_BIT
%448 = sext i32 %447 to i64
%449 = mul i64 1, %448
%450 = sub i64 %449, 2
%451 = trunc i64 %450 to i32
%452 = shl i32 1, %451
%453 = trunc i32 %452 to i8
%454 = sext i8 %453 to i32
%455 = sub nsw i32 %454, 1
%456 = trunc i32 %455 to i8
%457 = sext i8 %456 to i32
%458 = add nsw i32 %446, %457
%459 = trunc i32 %458 to i8
%460 = sext i8 %459 to i32
%461 = sub nsw i32 0, %460
%462 = sub nsw i32 %461, 1
%463 = trunc i32 %462 to i8
%464 = sext i8 %463 to i32
%465 = icmp slt i32 %464, 0
br i1 %465, label %466, label %493
466: ; preds = %434
%467 = load i32, i32* @CHAR_BIT
%468 = sext i32 %467 to i64
%469 = mul i64 1, %468
%470 = sub i64 %469, 2
%471 = trunc i64 %470 to i32
%472 = shl i32 1, %471
%473 = trunc i32 %472 to i8
%474 = sext i8 %473 to i32
%475 = load i32, i32* @CHAR_BIT
%476 = sext i32 %475 to i64
%477 = mul i64 1, %476
%478 = sub i64 %477, 2
%479 = trunc i64 %478 to i32
%480 = shl i32 1, %479
%481 = trunc i32 %480 to i8
%482 = sext i8 %481 to i32
%483 = sub nsw i32 %482, 1
%484 = trunc i32 %483 to i8
%485 = sext i8 %484 to i32
%486 = add nsw i32 %474, %485
%487 = trunc i32 %486 to i8
%488 = sext i8 %487 to i32
%489 = sub nsw i32 0, %488
%490 = sub nsw i32 %489, 1
%491 = trunc i32 %490 to i8
%492 = sext i8 %491 to i32
br label %494
493: ; preds = %434
br label %494
494: ; preds = %493, %466
%495 = phi i32 [ %492, %466 ], [ 0, %493 ]
%496 = trunc i32 %495 to i8
%497 = sext i8 %496 to i32
%498 = load i32, i32* @CHAR_BIT
%499 = sext i32 %498 to i64
%500 = mul i64 1, %499
%501 = sub i64 %500, 2
%502 = trunc i64 %501 to i32
%503 = shl i32 1, %502
%504 = trunc i32 %503 to i8
%505 = sext i8 %504 to i32
%506 = load i32, i32* @CHAR_BIT
%507 = sext i32 %506 to i64
%508 = mul i64 1, %507
%509 = sub i64 %508, 2
%510 = trunc i64 %509 to i32
%511 = shl i32 1, %510
%512 = trunc i32 %511 to i8
%513 = sext i8 %512 to i32
%514 = sub nsw i32 %513, 1
%515 = trunc i32 %514 to i8
%516 = sext i8 %515 to i32
%517 = add nsw i32 %505, %516
%518 = trunc i32 %517 to i8
%519 = sext i8 %518 to i32
%520 = sub nsw i32 0, %519
%521 = sub nsw i32 %520, 1
%522 = trunc i32 %521 to i8
%523 = sext i8 %522 to i32
%524 = icmp slt i32 %523, 0
br i1 %524, label %525, label %552
525: ; preds = %494
%526 = load i32, i32* @CHAR_BIT
%527 = sext i32 %526 to i64
%528 = mul i64 1, %527
%529 = sub i64 %528, 2
%530 = trunc i64 %529 to i32
%531 = shl i32 1, %530
%532 = trunc i32 %531 to i8
%533 = sext i8 %532 to i32
%534 = load i32, i32* @CHAR_BIT
%535 = sext i32 %534 to i64
%536 = mul i64 1, %535
%537 = sub i64 %536, 2
%538 = trunc i64 %537 to i32
%539 = shl i32 1, %538
%540 = trunc i32 %539 to i8
%541 = sext i8 %540 to i32
%542 = sub nsw i32 %541, 1
%543 = trunc i32 %542 to i8
%544 = sext i8 %543 to i32
%545 = add nsw i32 %533, %544
%546 = trunc i32 %545 to i8
%547 = sext i8 %546 to i32
%548 = sub nsw i32 0, %547
%549 = sub nsw i32 %548, 1
%550 = trunc i32 %549 to i8
%551 = sext i8 %550 to i32
br label %553
552: ; preds = %494
br label %553
553: ; preds = %552, %525
%554 = phi i32 [ %551, %525 ], [ 0, %552 ]
%555 = trunc i32 %554 to i8
%556 = sext i8 %555 to i32
%557 = sub nsw i32 %497, %556
%558 = add nsw i32 %557, 1
%559 = sub nsw i32 %438, %558
%560 = load i32, i32* @CHAR_BIT
%561 = sext i32 %560 to i64
%562 = mul i64 1, %561
%563 = sub i64 %562, 2
%564 = trunc i64 %563 to i32
%565 = shl i32 1, %564
%566 = trunc i32 %565 to i8
%567 = sext i8 %566 to i32
%568 = load i32, i32* @CHAR_BIT
%569 = sext i32 %568 to i64
%570 = mul i64 1, %569
%571 = sub i64 %570, 2
%572 = trunc i64 %571 to i32
%573 = shl i32 1, %572
%574 = trunc i32 %573 to i8
%575 = sext i8 %574 to i32
%576 = sub nsw i32 %575, 1
%577 = trunc i32 %576 to i8
%578 = sext i8 %577 to i32
%579 = add nsw i32 %567, %578
%580 = trunc i32 %579 to i8
%581 = sext i8 %580 to i32
%582 = sub nsw i32 0, %581
%583 = sub nsw i32 %582, 1
%584 = trunc i32 %583 to i8
%585 = sext i8 %584 to i32
%586 = icmp slt i32 %585, 0
br i1 %586, label %587, label %614
587: ; preds = %553
%588 = load i32, i32* @CHAR_BIT
%589 = sext i32 %588 to i64
%590 = mul i64 1, %589
%591 = sub i64 %590, 2
%592 = trunc i64 %591 to i32
%593 = shl i32 1, %592
%594 = trunc i32 %593 to i8
%595 = sext i8 %594 to i32
%596 = load i32, i32* @CHAR_BIT
%597 = sext i32 %596 to i64
%598 = mul i64 1, %597
%599 = sub i64 %598, 2
%600 = trunc i64 %599 to i32
%601 = shl i32 1, %600
%602 = trunc i32 %601 to i8
%603 = sext i8 %602 to i32
%604 = sub nsw i32 %603, 1
%605 = trunc i32 %604 to i8
%606 = sext i8 %605 to i32
%607 = add nsw i32 %595, %606
%608 = trunc i32 %607 to i8
%609 = sext i8 %608 to i32
%610 = sub nsw i32 0, %609
%611 = sub nsw i32 %610, 1
%612 = trunc i32 %611 to i8
%613 = sext i8 %612 to i32
br label %615
614: ; preds = %553
br label %615
615: ; preds = %614, %587
%616 = phi i32 [ %613, %587 ], [ 0, %614 ]
%617 = trunc i32 %616 to i8
%618 = sext i8 %617 to i32
%619 = load i32, i32* @CHAR_BIT
%620 = sext i32 %619 to i64
%621 = mul i64 1, %620
%622 = sub i64 %621, 2
%623 = trunc i64 %622 to i32
%624 = shl i32 1, %623
%625 = trunc i32 %624 to i8
%626 = sext i8 %625 to i32
%627 = load i32, i32* @CHAR_BIT
%628 = sext i32 %627 to i64
%629 = mul i64 1, %628
%630 = sub i64 %629, 2
%631 = trunc i64 %630 to i32
%632 = shl i32 1, %631
%633 = trunc i32 %632 to i8
%634 = sext i8 %633 to i32
%635 = sub nsw i32 %634, 1
%636 = trunc i32 %635 to i8
%637 = sext i8 %636 to i32
%638 = add nsw i32 %626, %637
%639 = trunc i32 %638 to i8
%640 = sext i8 %639 to i32
%641 = sub nsw i32 0, %640
%642 = sub nsw i32 %641, 1
%643 = trunc i32 %642 to i8
%644 = sext i8 %643 to i32
%645 = icmp slt i32 %644, 0
br i1 %645, label %646, label %673
646: ; preds = %615
%647 = load i32, i32* @CHAR_BIT
%648 = sext i32 %647 to i64
%649 = mul i64 1, %648
%650 = sub i64 %649, 2
%651 = trunc i64 %650 to i32
%652 = shl i32 1, %651
%653 = trunc i32 %652 to i8
%654 = sext i8 %653 to i32
%655 = load i32, i32* @CHAR_BIT
%656 = sext i32 %655 to i64
%657 = mul i64 1, %656
%658 = sub i64 %657, 2
%659 = trunc i64 %658 to i32
%660 = shl i32 1, %659
%661 = trunc i32 %660 to i8
%662 = sext i8 %661 to i32
%663 = sub nsw i32 %662, 1
%664 = trunc i32 %663 to i8
%665 = sext i8 %664 to i32
%666 = add nsw i32 %654, %665
%667 = trunc i32 %666 to i8
%668 = sext i8 %667 to i32
%669 = sub nsw i32 0, %668
%670 = sub nsw i32 %669, 1
%671 = trunc i32 %670 to i8
%672 = sext i8 %671 to i32
br label %674
673: ; preds = %615
br label %674
674: ; preds = %673, %646
%675 = phi i32 [ %672, %646 ], [ 0, %673 ]
%676 = trunc i32 %675 to i8
%677 = sext i8 %676 to i32
%678 = sub nsw i32 %618, %677
%679 = icmp slt i32 %559, %678
%680 = zext i1 %679 to i32
%681 = call i32 @assert(i32 %680)
%682 = call i32 @assert(i32 1)
%683 = call i32 @assert(i32 1)
%684 = call i32 @assert(i32 1)
%685 = call i32 @assert(i32 1)
%686 = call i32 @assert(i32 1)
%687 = load i32, i32* @CHAR_BIT
%688 = sext i32 %687 to i64
%689 = mul i64 2, %688
%690 = sub i64 %689, 2
%691 = trunc i64 %690 to i32
%692 = shl i32 1, %691
%693 = trunc i32 %692 to i16
%694 = sext i16 %693 to i32
%695 = load i32, i32* @CHAR_BIT
%696 = sext i32 %695 to i64
%697 = mul i64 2, %696
%698 = sub i64 %697, 2
%699 = trunc i64 %698 to i32
%700 = shl i32 1, %699
%701 = trunc i32 %700 to i16
%702 = sext i16 %701 to i32
%703 = sub nsw i32 %702, 1
%704 = trunc i32 %703 to i16
%705 = sext i16 %704 to i32
%706 = add nsw i32 %694, %705
%707 = trunc i32 %706 to i16
%708 = sext i16 %707 to i32
%709 = icmp sgt i32 %708, -1
br i1 %709, label %710, label %733
710: ; preds = %674
%711 = load i32, i32* @CHAR_BIT
%712 = sext i32 %711 to i64
%713 = mul i64 2, %712
%714 = sub i64 %713, 2
%715 = trunc i64 %714 to i32
%716 = shl i32 1, %715
%717 = trunc i32 %716 to i16
%718 = sext i16 %717 to i32
%719 = load i32, i32* @CHAR_BIT
%720 = sext i32 %719 to i64
%721 = mul i64 2, %720
%722 = sub i64 %721, 2
%723 = trunc i64 %722 to i32
%724 = shl i32 1, %723
%725 = trunc i32 %724 to i16
%726 = sext i16 %725 to i32
%727 = sub nsw i32 %726, 1
%728 = trunc i32 %727 to i16
%729 = sext i16 %728 to i32
%730 = add nsw i32 %718, %729
%731 = trunc i32 %730 to i16
%732 = sext i16 %731 to i32
br label %734
733: ; preds = %674
br label %734
734: ; preds = %733, %710
%735 = phi i32 [ %732, %710 ], [ -1, %733 ]
%736 = trunc i32 %735 to i16
%737 = sext i16 %736 to i32
%738 = load i32, i32* @CHAR_BIT
%739 = sext i32 %738 to i64
%740 = mul i64 2, %739
%741 = sub i64 %740, 2
%742 = trunc i64 %741 to i32
%743 = shl i32 1, %742
%744 = trunc i32 %743 to i16
%745 = sext i16 %744 to i32
%746 = load i32, i32* @CHAR_BIT
%747 = sext i32 %746 to i64
%748 = mul i64 2, %747
%749 = sub i64 %748, 2
%750 = trunc i64 %749 to i32
%751 = shl i32 1, %750
%752 = trunc i32 %751 to i16
%753 = sext i16 %752 to i32
%754 = sub nsw i32 %753, 1
%755 = trunc i32 %754 to i16
%756 = sext i16 %755 to i32
%757 = add nsw i32 %745, %756
%758 = trunc i32 %757 to i16
%759 = sext i16 %758 to i32
%760 = icmp sgt i32 %759, -1
br i1 %760, label %761, label %784
761: ; preds = %734
%762 = load i32, i32* @CHAR_BIT
%763 = sext i32 %762 to i64
%764 = mul i64 2, %763
%765 = sub i64 %764, 2
%766 = trunc i64 %765 to i32
%767 = shl i32 1, %766
%768 = trunc i32 %767 to i16
%769 = sext i16 %768 to i32
%770 = load i32, i32* @CHAR_BIT
%771 = sext i32 %770 to i64
%772 = mul i64 2, %771
%773 = sub i64 %772, 2
%774 = trunc i64 %773 to i32
%775 = shl i32 1, %774
%776 = trunc i32 %775 to i16
%777 = sext i16 %776 to i32
%778 = sub nsw i32 %777, 1
%779 = trunc i32 %778 to i16
%780 = sext i16 %779 to i32
%781 = add nsw i32 %769, %780
%782 = trunc i32 %781 to i16
%783 = sext i16 %782 to i32
br label %785
784: ; preds = %734
br label %785
785: ; preds = %784, %761
%786 = phi i32 [ %783, %761 ], [ -1, %784 ]
%787 = trunc i32 %786 to i16
%788 = sext i16 %787 to i32
%789 = sub nsw i32 %737, %788
%790 = load i32, i32* @CHAR_BIT
%791 = sext i32 %790 to i64
%792 = mul i64 2, %791
%793 = sub i64 %792, 2
%794 = trunc i64 %793 to i32
%795 = shl i32 1, %794
%796 = trunc i32 %795 to i16
%797 = sext i16 %796 to i32
%798 = load i32, i32* @CHAR_BIT
%799 = sext i32 %798 to i64
%800 = mul i64 2, %799
%801 = sub i64 %800, 2
%802 = trunc i64 %801 to i32
%803 = shl i32 1, %802
%804 = trunc i32 %803 to i16
%805 = sext i16 %804 to i32
%806 = sub nsw i32 %805, 1
%807 = trunc i32 %806 to i16
%808 = sext i16 %807 to i32
%809 = add nsw i32 %797, %808
%810 = trunc i32 %809 to i16
%811 = sext i16 %810 to i32
%812 = icmp sgt i32 %811, -1
br i1 %812, label %813, label %836
813: ; preds = %785
%814 = load i32, i32* @CHAR_BIT
%815 = sext i32 %814 to i64
%816 = mul i64 2, %815
%817 = sub i64 %816, 2
%818 = trunc i64 %817 to i32
%819 = shl i32 1, %818
%820 = trunc i32 %819 to i16
%821 = sext i16 %820 to i32
%822 = load i32, i32* @CHAR_BIT
%823 = sext i32 %822 to i64
%824 = mul i64 2, %823
%825 = sub i64 %824, 2
%826 = trunc i64 %825 to i32
%827 = shl i32 1, %826
%828 = trunc i32 %827 to i16
%829 = sext i16 %828 to i32
%830 = sub nsw i32 %829, 1
%831 = trunc i32 %830 to i16
%832 = sext i16 %831 to i32
%833 = add nsw i32 %821, %832
%834 = trunc i32 %833 to i16
%835 = sext i16 %834 to i32
br label %837
836: ; preds = %785
br label %837
837: ; preds = %836, %813
%838 = phi i32 [ %835, %813 ], [ -1, %836 ]
%839 = trunc i32 %838 to i16
%840 = sext i16 %839 to i32
%841 = load i32, i32* @CHAR_BIT
%842 = sext i32 %841 to i64
%843 = mul i64 2, %842
%844 = sub i64 %843, 2
%845 = trunc i64 %844 to i32
%846 = shl i32 1, %845
%847 = trunc i32 %846 to i16
%848 = sext i16 %847 to i32
%849 = load i32, i32* @CHAR_BIT
%850 = sext i32 %849 to i64
%851 = mul i64 2, %850
%852 = sub i64 %851, 2
%853 = trunc i64 %852 to i32
%854 = shl i32 1, %853
%855 = trunc i32 %854 to i16
%856 = sext i16 %855 to i32
%857 = sub nsw i32 %856, 1
%858 = trunc i32 %857 to i16
%859 = sext i16 %858 to i32
%860 = add nsw i32 %848, %859
%861 = trunc i32 %860 to i16
%862 = sext i16 %861 to i32
%863 = icmp sgt i32 %862, -1
br i1 %863, label %864, label %887
864: ; preds = %837
%865 = load i32, i32* @CHAR_BIT
%866 = sext i32 %865 to i64
%867 = mul i64 2, %866
%868 = sub i64 %867, 2
%869 = trunc i64 %868 to i32
%870 = shl i32 1, %869
%871 = trunc i32 %870 to i16
%872 = sext i16 %871 to i32
%873 = load i32, i32* @CHAR_BIT
%874 = sext i32 %873 to i64
%875 = mul i64 2, %874
%876 = sub i64 %875, 2
%877 = trunc i64 %876 to i32
%878 = shl i32 1, %877
%879 = trunc i32 %878 to i16
%880 = sext i16 %879 to i32
%881 = sub nsw i32 %880, 1
%882 = trunc i32 %881 to i16
%883 = sext i16 %882 to i32
%884 = add nsw i32 %872, %883
%885 = trunc i32 %884 to i16
%886 = sext i16 %885 to i32
br label %888
887: ; preds = %837
br label %888
888: ; preds = %887, %864
%889 = phi i32 [ %886, %864 ], [ -1, %887 ]
%890 = trunc i32 %889 to i16
%891 = sext i16 %890 to i32
%892 = sub nsw i32 %840, %891
%893 = add nsw i32 %892, 1
%894 = sub nsw i32 %789, %893
%895 = load i32, i32* @CHAR_BIT
%896 = sext i32 %895 to i64
%897 = mul i64 2, %896
%898 = sub i64 %897, 2
%899 = trunc i64 %898 to i32
%900 = shl i32 1, %899
%901 = trunc i32 %900 to i16
%902 = sext i16 %901 to i32
%903 = load i32, i32* @CHAR_BIT
%904 = sext i32 %903 to i64
%905 = mul i64 2, %904
%906 = sub i64 %905, 2
%907 = trunc i64 %906 to i32
%908 = shl i32 1, %907
%909 = trunc i32 %908 to i16
%910 = sext i16 %909 to i32
%911 = sub nsw i32 %910, 1
%912 = trunc i32 %911 to i16
%913 = sext i16 %912 to i32
%914 = add nsw i32 %902, %913
%915 = trunc i32 %914 to i16
%916 = sext i16 %915 to i32
%917 = icmp sgt i32 %916, -1
br i1 %917, label %918, label %941
918: ; preds = %888
%919 = load i32, i32* @CHAR_BIT
%920 = sext i32 %919 to i64
%921 = mul i64 2, %920
%922 = sub i64 %921, 2
%923 = trunc i64 %922 to i32
%924 = shl i32 1, %923
%925 = trunc i32 %924 to i16
%926 = sext i16 %925 to i32
%927 = load i32, i32* @CHAR_BIT
%928 = sext i32 %927 to i64
%929 = mul i64 2, %928
%930 = sub i64 %929, 2
%931 = trunc i64 %930 to i32
%932 = shl i32 1, %931
%933 = trunc i32 %932 to i16
%934 = sext i16 %933 to i32
%935 = sub nsw i32 %934, 1
%936 = trunc i32 %935 to i16
%937 = sext i16 %936 to i32
%938 = add nsw i32 %926, %937
%939 = trunc i32 %938 to i16
%940 = sext i16 %939 to i32
br label %942
941: ; preds = %888
br label %942
942: ; preds = %941, %918
%943 = phi i32 [ %940, %918 ], [ -1, %941 ]
%944 = trunc i32 %943 to i16
%945 = sext i16 %944 to i32
%946 = load i32, i32* @CHAR_BIT
%947 = sext i32 %946 to i64
%948 = mul i64 2, %947
%949 = sub i64 %948, 2
%950 = trunc i64 %949 to i32
%951 = shl i32 1, %950
%952 = trunc i32 %951 to i16
%953 = sext i16 %952 to i32
%954 = load i32, i32* @CHAR_BIT
%955 = sext i32 %954 to i64
%956 = mul i64 2, %955
%957 = sub i64 %956, 2
%958 = trunc i64 %957 to i32
%959 = shl i32 1, %958
%960 = trunc i32 %959 to i16
%961 = sext i16 %960 to i32
%962 = sub nsw i32 %961, 1
%963 = trunc i32 %962 to i16
%964 = sext i16 %963 to i32
%965 = add nsw i32 %953, %964
%966 = trunc i32 %965 to i16
%967 = sext i16 %966 to i32
%968 = icmp sgt i32 %967, -1
br i1 %968, label %969, label %992
969: ; preds = %942
%970 = load i32, i32* @CHAR_BIT
%971 = sext i32 %970 to i64
%972 = mul i64 2, %971
%973 = sub i64 %972, 2
%974 = trunc i64 %973 to i32
%975 = shl i32 1, %974
%976 = trunc i32 %975 to i16
%977 = sext i16 %976 to i32
%978 = load i32, i32* @CHAR_BIT
%979 = sext i32 %978 to i64
%980 = mul i64 2, %979
%981 = sub i64 %980, 2
%982 = trunc i64 %981 to i32
%983 = shl i32 1, %982
%984 = trunc i32 %983 to i16
%985 = sext i16 %984 to i32
%986 = sub nsw i32 %985, 1
%987 = trunc i32 %986 to i16
%988 = sext i16 %987 to i32
%989 = add nsw i32 %977, %988
%990 = trunc i32 %989 to i16
%991 = sext i16 %990 to i32
br label %993
992: ; preds = %942
br label %993
993: ; preds = %992, %969
%994 = phi i32 [ %991, %969 ], [ -1, %992 ]
%995 = trunc i32 %994 to i16
%996 = sext i16 %995 to i32
%997 = sub nsw i32 %945, %996
%998 = icmp slt i32 %894, %997
%999 = zext i1 %998 to i32
%1000 = call i32 @assert(i32 %999)
%1001 = load i32, i32* @CHAR_BIT
%1002 = sext i32 %1001 to i64
%1003 = mul i64 2, %1002
%1004 = sub i64 %1003, 2
%1005 = trunc i64 %1004 to i32
%1006 = shl i32 1, %1005
%1007 = trunc i32 %1006 to i16
%1008 = sext i16 %1007 to i32
%1009 = load i32, i32* @CHAR_BIT
%1010 = sext i32 %1009 to i64
%1011 = mul i64 2, %1010
%1012 = sub i64 %1011, 2
%1013 = trunc i64 %1012 to i32
%1014 = shl i32 1, %1013
%1015 = trunc i32 %1014 to i16
%1016 = sext i16 %1015 to i32
%1017 = sub nsw i32 %1016, 1
%1018 = trunc i32 %1017 to i16
%1019 = sext i16 %1018 to i32
%1020 = add nsw i32 %1008, %1019
%1021 = trunc i32 %1020 to i16
%1022 = sext i16 %1021 to i32
%1023 = sub nsw i32 0, %1022
%1024 = sub nsw i32 %1023, 1
%1025 = trunc i32 %1024 to i16
%1026 = sext i16 %1025 to i32
%1027 = icmp slt i32 %1026, 0
br i1 %1027, label %1028, label %1055
1028: ; preds = %993
%1029 = load i32, i32* @CHAR_BIT
%1030 = sext i32 %1029 to i64
%1031 = mul i64 2, %1030
%1032 = sub i64 %1031, 2
%1033 = trunc i64 %1032 to i32
%1034 = shl i32 1, %1033
%1035 = trunc i32 %1034 to i16
%1036 = sext i16 %1035 to i32
%1037 = load i32, i32* @CHAR_BIT
%1038 = sext i32 %1037 to i64
%1039 = mul i64 2, %1038
%1040 = sub i64 %1039, 2
%1041 = trunc i64 %1040 to i32
%1042 = shl i32 1, %1041
%1043 = trunc i32 %1042 to i16
%1044 = sext i16 %1043 to i32
%1045 = sub nsw i32 %1044, 1
%1046 = trunc i32 %1045 to i16
%1047 = sext i16 %1046 to i32
%1048 = add nsw i32 %1036, %1047
%1049 = trunc i32 %1048 to i16
%1050 = sext i16 %1049 to i32
%1051 = sub nsw i32 0, %1050
%1052 = sub nsw i32 %1051, 1
%1053 = trunc i32 %1052 to i16
%1054 = sext i16 %1053 to i32
br label %1056
1055: ; preds = %993
br label %1056
1056: ; preds = %1055, %1028
%1057 = phi i32 [ %1054, %1028 ], [ 0, %1055 ]
%1058 = trunc i32 %1057 to i16
%1059 = sext i16 %1058 to i32
%1060 = load i32, i32* @CHAR_BIT
%1061 = sext i32 %1060 to i64
%1062 = mul i64 2, %1061
%1063 = sub i64 %1062, 2
%1064 = trunc i64 %1063 to i32
%1065 = shl i32 1, %1064
%1066 = trunc i32 %1065 to i16
%1067 = sext i16 %1066 to i32
%1068 = load i32, i32* @CHAR_BIT
%1069 = sext i32 %1068 to i64
%1070 = mul i64 2, %1069
%1071 = sub i64 %1070, 2
%1072 = trunc i64 %1071 to i32
%1073 = shl i32 1, %1072
%1074 = trunc i32 %1073 to i16
%1075 = sext i16 %1074 to i32
%1076 = sub nsw i32 %1075, 1
%1077 = trunc i32 %1076 to i16
%1078 = sext i16 %1077 to i32
%1079 = add nsw i32 %1067, %1078
%1080 = trunc i32 %1079 to i16
%1081 = sext i16 %1080 to i32
%1082 = sub nsw i32 0, %1081
%1083 = sub nsw i32 %1082, 1
%1084 = trunc i32 %1083 to i16
%1085 = sext i16 %1084 to i32
%1086 = icmp slt i32 %1085, 0
br i1 %1086, label %1087, label %1114
1087: ; preds = %1056
%1088 = load i32, i32* @CHAR_BIT
%1089 = sext i32 %1088 to i64
%1090 = mul i64 2, %1089
%1091 = sub i64 %1090, 2
%1092 = trunc i64 %1091 to i32
%1093 = shl i32 1, %1092
%1094 = trunc i32 %1093 to i16
%1095 = sext i16 %1094 to i32
%1096 = load i32, i32* @CHAR_BIT
%1097 = sext i32 %1096 to i64
%1098 = mul i64 2, %1097
%1099 = sub i64 %1098, 2
%1100 = trunc i64 %1099 to i32
%1101 = shl i32 1, %1100
%1102 = trunc i32 %1101 to i16
%1103 = sext i16 %1102 to i32
%1104 = sub nsw i32 %1103, 1
%1105 = trunc i32 %1104 to i16
%1106 = sext i16 %1105 to i32
%1107 = add nsw i32 %1095, %1106
%1108 = trunc i32 %1107 to i16
%1109 = sext i16 %1108 to i32
%1110 = sub nsw i32 0, %1109
%1111 = sub nsw i32 %1110, 1
%1112 = trunc i32 %1111 to i16
%1113 = sext i16 %1112 to i32
br label %1115
1114: ; preds = %1056
br label %1115
1115: ; preds = %1114, %1087
%1116 = phi i32 [ %1113, %1087 ], [ 0, %1114 ]
%1117 = trunc i32 %1116 to i16
%1118 = sext i16 %1117 to i32
%1119 = sub nsw i32 %1059, %1118
%1120 = load i32, i32* @CHAR_BIT
%1121 = sext i32 %1120 to i64
%1122 = mul i64 2, %1121
%1123 = sub i64 %1122, 2
%1124 = trunc i64 %1123 to i32
%1125 = shl i32 1, %1124
%1126 = trunc i32 %1125 to i16
%1127 = sext i16 %1126 to i32
%1128 = load i32, i32* @CHAR_BIT
%1129 = sext i32 %1128 to i64
%1130 = mul i64 2, %1129
%1131 = sub i64 %1130, 2
%1132 = trunc i64 %1131 to i32
%1133 = shl i32 1, %1132
%1134 = trunc i32 %1133 to i16
%1135 = sext i16 %1134 to i32
%1136 = sub nsw i32 %1135, 1
%1137 = trunc i32 %1136 to i16
%1138 = sext i16 %1137 to i32
%1139 = add nsw i32 %1127, %1138
%1140 = trunc i32 %1139 to i16
%1141 = sext i16 %1140 to i32
%1142 = sub nsw i32 0, %1141
%1143 = sub nsw i32 %1142, 1
%1144 = trunc i32 %1143 to i16
%1145 = sext i16 %1144 to i32
%1146 = icmp slt i32 %1145, 0
br i1 %1146, label %1147, label %1174
1147: ; preds = %1115
%1148 = load i32, i32* @CHAR_BIT
%1149 = sext i32 %1148 to i64
%1150 = mul i64 2, %1149
%1151 = sub i64 %1150, 2
%1152 = trunc i64 %1151 to i32
%1153 = shl i32 1, %1152
%1154 = trunc i32 %1153 to i16
%1155 = sext i16 %1154 to i32
%1156 = load i32, i32* @CHAR_BIT
%1157 = sext i32 %1156 to i64
%1158 = mul i64 2, %1157
%1159 = sub i64 %1158, 2
%1160 = trunc i64 %1159 to i32
%1161 = shl i32 1, %1160
%1162 = trunc i32 %1161 to i16
%1163 = sext i16 %1162 to i32
%1164 = sub nsw i32 %1163, 1
%1165 = trunc i32 %1164 to i16
%1166 = sext i16 %1165 to i32
%1167 = add nsw i32 %1155, %1166
%1168 = trunc i32 %1167 to i16
%1169 = sext i16 %1168 to i32
%1170 = sub nsw i32 0, %1169
%1171 = sub nsw i32 %1170, 1
%1172 = trunc i32 %1171 to i16
%1173 = sext i16 %1172 to i32
br label %1175
1174: ; preds = %1115
br label %1175
1175: ; preds = %1174, %1147
%1176 = phi i32 [ %1173, %1147 ], [ 0, %1174 ]
%1177 = trunc i32 %1176 to i16
%1178 = sext i16 %1177 to i32
%1179 = load i32, i32* @CHAR_BIT
%1180 = sext i32 %1179 to i64
%1181 = mul i64 2, %1180
%1182 = sub i64 %1181, 2
%1183 = trunc i64 %1182 to i32
%1184 = shl i32 1, %1183
%1185 = trunc i32 %1184 to i16
%1186 = sext i16 %1185 to i32
%1187 = load i32, i32* @CHAR_BIT
%1188 = sext i32 %1187 to i64
%1189 = mul i64 2, %1188
%1190 = sub i64 %1189, 2
%1191 = trunc i64 %1190 to i32
%1192 = shl i32 1, %1191
%1193 = trunc i32 %1192 to i16
%1194 = sext i16 %1193 to i32
%1195 = sub nsw i32 %1194, 1
%1196 = trunc i32 %1195 to i16
%1197 = sext i16 %1196 to i32
%1198 = add nsw i32 %1186, %1197
%1199 = trunc i32 %1198 to i16
%1200 = sext i16 %1199 to i32
%1201 = sub nsw i32 0, %1200
%1202 = sub nsw i32 %1201, 1
%1203 = trunc i32 %1202 to i16
%1204 = sext i16 %1203 to i32
%1205 = icmp slt i32 %1204, 0
br i1 %1205, label %1206, label %1233
1206: ; preds = %1175
%1207 = load i32, i32* @CHAR_BIT
%1208 = sext i32 %1207 to i64
%1209 = mul i64 2, %1208
%1210 = sub i64 %1209, 2
%1211 = trunc i64 %1210 to i32
%1212 = shl i32 1, %1211
%1213 = trunc i32 %1212 to i16
%1214 = sext i16 %1213 to i32
%1215 = load i32, i32* @CHAR_BIT
%1216 = sext i32 %1215 to i64
%1217 = mul i64 2, %1216
%1218 = sub i64 %1217, 2
%1219 = trunc i64 %1218 to i32
%1220 = shl i32 1, %1219
%1221 = trunc i32 %1220 to i16
%1222 = sext i16 %1221 to i32
%1223 = sub nsw i32 %1222, 1
%1224 = trunc i32 %1223 to i16
%1225 = sext i16 %1224 to i32
%1226 = add nsw i32 %1214, %1225
%1227 = trunc i32 %1226 to i16
%1228 = sext i16 %1227 to i32
%1229 = sub nsw i32 0, %1228
%1230 = sub nsw i32 %1229, 1
%1231 = trunc i32 %1230 to i16
%1232 = sext i16 %1231 to i32
br label %1234
1233: ; preds = %1175
br label %1234
1234: ; preds = %1233, %1206
%1235 = phi i32 [ %1232, %1206 ], [ 0, %1233 ]
%1236 = trunc i32 %1235 to i16
%1237 = sext i16 %1236 to i32
%1238 = sub nsw i32 %1178, %1237
%1239 = add nsw i32 %1238, 1
%1240 = sub nsw i32 %1119, %1239
%1241 = load i32, i32* @CHAR_BIT
%1242 = sext i32 %1241 to i64
%1243 = mul i64 2, %1242
%1244 = sub i64 %1243, 2
%1245 = trunc i64 %1244 to i32
%1246 = shl i32 1, %1245
%1247 = trunc i32 %1246 to i16
%1248 = sext i16 %1247 to i32
%1249 = load i32, i32* @CHAR_BIT
%1250 = sext i32 %1249 to i64
%1251 = mul i64 2, %1250
%1252 = sub i64 %1251, 2
%1253 = trunc i64 %1252 to i32
%1254 = shl i32 1, %1253
%1255 = trunc i32 %1254 to i16
%1256 = sext i16 %1255 to i32
%1257 = sub nsw i32 %1256, 1
%1258 = trunc i32 %1257 to i16
%1259 = sext i16 %1258 to i32
%1260 = add nsw i32 %1248, %1259
%1261 = trunc i32 %1260 to i16
%1262 = sext i16 %1261 to i32
%1263 = sub nsw i32 0, %1262
%1264 = sub nsw i32 %1263, 1
%1265 = trunc i32 %1264 to i16
%1266 = sext i16 %1265 to i32
%1267 = icmp slt i32 %1266, 0
br i1 %1267, label %1268, label %1295
1268: ; preds = %1234
%1269 = load i32, i32* @CHAR_BIT
%1270 = sext i32 %1269 to i64
%1271 = mul i64 2, %1270
%1272 = sub i64 %1271, 2
%1273 = trunc i64 %1272 to i32
%1274 = shl i32 1, %1273
%1275 = trunc i32 %1274 to i16
%1276 = sext i16 %1275 to i32
%1277 = load i32, i32* @CHAR_BIT
%1278 = sext i32 %1277 to i64
%1279 = mul i64 2, %1278
%1280 = sub i64 %1279, 2
%1281 = trunc i64 %1280 to i32
%1282 = shl i32 1, %1281
%1283 = trunc i32 %1282 to i16
%1284 = sext i16 %1283 to i32
%1285 = sub nsw i32 %1284, 1
%1286 = trunc i32 %1285 to i16
%1287 = sext i16 %1286 to i32
%1288 = add nsw i32 %1276, %1287
%1289 = trunc i32 %1288 to i16
%1290 = sext i16 %1289 to i32
%1291 = sub nsw i32 0, %1290
%1292 = sub nsw i32 %1291, 1
%1293 = trunc i32 %1292 to i16
%1294 = sext i16 %1293 to i32
br label %1296
1295: ; preds = %1234
br label %1296
1296: ; preds = %1295, %1268
%1297 = phi i32 [ %1294, %1268 ], [ 0, %1295 ]
%1298 = trunc i32 %1297 to i16
%1299 = sext i16 %1298 to i32
%1300 = load i32, i32* @CHAR_BIT
%1301 = sext i32 %1300 to i64
%1302 = mul i64 2, %1301
%1303 = sub i64 %1302, 2
%1304 = trunc i64 %1303 to i32
%1305 = shl i32 1, %1304
%1306 = trunc i32 %1305 to i16
%1307 = sext i16 %1306 to i32
%1308 = load i32, i32* @CHAR_BIT
%1309 = sext i32 %1308 to i64
%1310 = mul i64 2, %1309
%1311 = sub i64 %1310, 2
%1312 = trunc i64 %1311 to i32
%1313 = shl i32 1, %1312
%1314 = trunc i32 %1313 to i16
%1315 = sext i16 %1314 to i32
%1316 = sub nsw i32 %1315, 1
%1317 = trunc i32 %1316 to i16
%1318 = sext i16 %1317 to i32
%1319 = add nsw i32 %1307, %1318
%1320 = trunc i32 %1319 to i16
%1321 = sext i16 %1320 to i32
%1322 = sub nsw i32 0, %1321
%1323 = sub nsw i32 %1322, 1
%1324 = trunc i32 %1323 to i16
%1325 = sext i16 %1324 to i32
%1326 = icmp slt i32 %1325, 0
br i1 %1326, label %1327, label %1354
1327: ; preds = %1296
%1328 = load i32, i32* @CHAR_BIT
%1329 = sext i32 %1328 to i64
%1330 = mul i64 2, %1329
%1331 = sub i64 %1330, 2
%1332 = trunc i64 %1331 to i32
%1333 = shl i32 1, %1332
%1334 = trunc i32 %1333 to i16
%1335 = sext i16 %1334 to i32
%1336 = load i32, i32* @CHAR_BIT
%1337 = sext i32 %1336 to i64
%1338 = mul i64 2, %1337
%1339 = sub i64 %1338, 2
%1340 = trunc i64 %1339 to i32
%1341 = shl i32 1, %1340
%1342 = trunc i32 %1341 to i16
%1343 = sext i16 %1342 to i32
%1344 = sub nsw i32 %1343, 1
%1345 = trunc i32 %1344 to i16
%1346 = sext i16 %1345 to i32
%1347 = add nsw i32 %1335, %1346
%1348 = trunc i32 %1347 to i16
%1349 = sext i16 %1348 to i32
%1350 = sub nsw i32 0, %1349
%1351 = sub nsw i32 %1350, 1
%1352 = trunc i32 %1351 to i16
%1353 = sext i16 %1352 to i32
br label %1355
1354: ; preds = %1296
br label %1355
1355: ; preds = %1354, %1327
%1356 = phi i32 [ %1353, %1327 ], [ 0, %1354 ]
%1357 = trunc i32 %1356 to i16
%1358 = sext i16 %1357 to i32
%1359 = sub nsw i32 %1299, %1358
%1360 = icmp slt i32 %1240, %1359
%1361 = zext i1 %1360 to i32
%1362 = call i32 @assert(i32 %1361)
%1363 = call i32 @assert(i32 1)
%1364 = call i32 @assert(i32 1)
%1365 = call i32 @assert(i32 1)
%1366 = call i32 @assert(i32 1)
%1367 = call i32 @assert(i32 1)
%1368 = load i32, i32* @CHAR_BIT
%1369 = sext i32 %1368 to i64
%1370 = mul i64 4, %1369
%1371 = sub i64 %1370, 2
%1372 = trunc i64 %1371 to i32
%1373 = shl i32 1, %1372
%1374 = load i32, i32* @CHAR_BIT
%1375 = sext i32 %1374 to i64
%1376 = mul i64 4, %1375
%1377 = sub i64 %1376, 2
%1378 = trunc i64 %1377 to i32
%1379 = shl i32 1, %1378
%1380 = sub nsw i32 %1379, 1
%1381 = add nsw i32 %1373, %1380
%1382 = icmp sgt i32 %1381, -1
br i1 %1382, label %1383, label %1398
1383: ; preds = %1355
%1384 = load i32, i32* @CHAR_BIT
%1385 = sext i32 %1384 to i64
%1386 = mul i64 4, %1385
%1387 = sub i64 %1386, 2
%1388 = trunc i64 %1387 to i32
%1389 = shl i32 1, %1388
%1390 = load i32, i32* @CHAR_BIT
%1391 = sext i32 %1390 to i64
%1392 = mul i64 4, %1391
%1393 = sub i64 %1392, 2
%1394 = trunc i64 %1393 to i32
%1395 = shl i32 1, %1394
%1396 = sub nsw i32 %1395, 1
%1397 = add nsw i32 %1389, %1396
br label %1399
1398: ; preds = %1355
br label %1399
1399: ; preds = %1398, %1383
%1400 = phi i32 [ %1397, %1383 ], [ -1, %1398 ]
%1401 = load i32, i32* @CHAR_BIT
%1402 = sext i32 %1401 to i64
%1403 = mul i64 4, %1402
%1404 = sub i64 %1403, 2
%1405 = trunc i64 %1404 to i32
%1406 = shl i32 1, %1405
%1407 = load i32, i32* @CHAR_BIT
%1408 = sext i32 %1407 to i64
%1409 = mul i64 4, %1408
%1410 = sub i64 %1409, 2
%1411 = trunc i64 %1410 to i32
%1412 = shl i32 1, %1411
%1413 = sub nsw i32 %1412, 1
%1414 = add nsw i32 %1406, %1413
%1415 = icmp sgt i32 %1414, -1
br i1 %1415, label %1416, label %1431
1416: ; preds = %1399
%1417 = load i32, i32* @CHAR_BIT
%1418 = sext i32 %1417 to i64
%1419 = mul i64 4, %1418
%1420 = sub i64 %1419, 2
%1421 = trunc i64 %1420 to i32
%1422 = shl i32 1, %1421
%1423 = load i32, i32* @CHAR_BIT
%1424 = sext i32 %1423 to i64
%1425 = mul i64 4, %1424
%1426 = sub i64 %1425, 2
%1427 = trunc i64 %1426 to i32
%1428 = shl i32 1, %1427
%1429 = sub nsw i32 %1428, 1
%1430 = add nsw i32 %1422, %1429
br label %1432
1431: ; preds = %1399
br label %1432
1432: ; preds = %1431, %1416
%1433 = phi i32 [ %1430, %1416 ], [ -1, %1431 ]
%1434 = sub nsw i32 %1400, %1433
%1435 = load i32, i32* @CHAR_BIT
%1436 = sext i32 %1435 to i64
%1437 = mul i64 4, %1436
%1438 = sub i64 %1437, 2
%1439 = trunc i64 %1438 to i32
%1440 = shl i32 1, %1439
%1441 = load i32, i32* @CHAR_BIT
%1442 = sext i32 %1441 to i64
%1443 = mul i64 4, %1442
%1444 = sub i64 %1443, 2
%1445 = trunc i64 %1444 to i32
%1446 = shl i32 1, %1445
%1447 = sub nsw i32 %1446, 1
%1448 = add nsw i32 %1440, %1447
%1449 = icmp sgt i32 %1448, -1
br i1 %1449, label %1450, label %1465
1450: ; preds = %1432
%1451 = load i32, i32* @CHAR_BIT
%1452 = sext i32 %1451 to i64
%1453 = mul i64 4, %1452
%1454 = sub i64 %1453, 2
%1455 = trunc i64 %1454 to i32
%1456 = shl i32 1, %1455
%1457 = load i32, i32* @CHAR_BIT
%1458 = sext i32 %1457 to i64
%1459 = mul i64 4, %1458
%1460 = sub i64 %1459, 2
%1461 = trunc i64 %1460 to i32
%1462 = shl i32 1, %1461
%1463 = sub nsw i32 %1462, 1
%1464 = add nsw i32 %1456, %1463
br label %1466
1465: ; preds = %1432
br label %1466
1466: ; preds = %1465, %1450
%1467 = phi i32 [ %1464, %1450 ], [ -1, %1465 ]
%1468 = load i32, i32* @CHAR_BIT
%1469 = sext i32 %1468 to i64
%1470 = mul i64 4, %1469
%1471 = sub i64 %1470, 2
%1472 = trunc i64 %1471 to i32
%1473 = shl i32 1, %1472
%1474 = load i32, i32* @CHAR_BIT
%1475 = sext i32 %1474 to i64
%1476 = mul i64 4, %1475
%1477 = sub i64 %1476, 2
%1478 = trunc i64 %1477 to i32
%1479 = shl i32 1, %1478
%1480 = sub nsw i32 %1479, 1
%1481 = add nsw i32 %1473, %1480
%1482 = icmp sgt i32 %1481, -1
br i1 %1482, label %1483, label %1498
1483: ; preds = %1466
%1484 = load i32, i32* @CHAR_BIT
%1485 = sext i32 %1484 to i64
%1486 = mul i64 4, %1485
%1487 = sub i64 %1486, 2
%1488 = trunc i64 %1487 to i32
%1489 = shl i32 1, %1488
%1490 = load i32, i32* @CHAR_BIT
%1491 = sext i32 %1490 to i64
%1492 = mul i64 4, %1491
%1493 = sub i64 %1492, 2
%1494 = trunc i64 %1493 to i32
%1495 = shl i32 1, %1494
%1496 = sub nsw i32 %1495, 1
%1497 = add nsw i32 %1489, %1496
br label %1499
1498: ; preds = %1466
br label %1499
1499: ; preds = %1498, %1483
%1500 = phi i32 [ %1497, %1483 ], [ -1, %1498 ]
%1501 = sub nsw i32 %1467, %1500
%1502 = add nsw i32 %1501, 1
%1503 = sub nsw i32 %1434, %1502
%1504 = load i32, i32* @CHAR_BIT
%1505 = sext i32 %1504 to i64
%1506 = mul i64 4, %1505
%1507 = sub i64 %1506, 2
%1508 = trunc i64 %1507 to i32
%1509 = shl i32 1, %1508
%1510 = load i32, i32* @CHAR_BIT
%1511 = sext i32 %1510 to i64
%1512 = mul i64 4, %1511
%1513 = sub i64 %1512, 2
%1514 = trunc i64 %1513 to i32
%1515 = shl i32 1, %1514
%1516 = sub nsw i32 %1515, 1
%1517 = add nsw i32 %1509, %1516
%1518 = icmp sgt i32 %1517, -1
br i1 %1518, label %1519, label %1534
1519: ; preds = %1499
%1520 = load i32, i32* @CHAR_BIT
%1521 = sext i32 %1520 to i64
%1522 = mul i64 4, %1521
%1523 = sub i64 %1522, 2
%1524 = trunc i64 %1523 to i32
%1525 = shl i32 1, %1524
%1526 = load i32, i32* @CHAR_BIT
%1527 = sext i32 %1526 to i64
%1528 = mul i64 4, %1527
%1529 = sub i64 %1528, 2
%1530 = trunc i64 %1529 to i32
%1531 = shl i32 1, %1530
%1532 = sub nsw i32 %1531, 1
%1533 = add nsw i32 %1525, %1532
br label %1535
1534: ; preds = %1499
br label %1535
1535: ; preds = %1534, %1519
%1536 = phi i32 [ %1533, %1519 ], [ -1, %1534 ]
%1537 = load i32, i32* @CHAR_BIT
%1538 = sext i32 %1537 to i64
%1539 = mul i64 4, %1538
%1540 = sub i64 %1539, 2
%1541 = trunc i64 %1540 to i32
%1542 = shl i32 1, %1541
%1543 = load i32, i32* @CHAR_BIT
%1544 = sext i32 %1543 to i64
%1545 = mul i64 4, %1544
%1546 = sub i64 %1545, 2
%1547 = trunc i64 %1546 to i32
%1548 = shl i32 1, %1547
%1549 = sub nsw i32 %1548, 1
%1550 = add nsw i32 %1542, %1549
%1551 = icmp sgt i32 %1550, -1
br i1 %1551, label %1552, label %1567
1552: ; preds = %1535
%1553 = load i32, i32* @CHAR_BIT
%1554 = sext i32 %1553 to i64
%1555 = mul i64 4, %1554
%1556 = sub i64 %1555, 2
%1557 = trunc i64 %1556 to i32
%1558 = shl i32 1, %1557
%1559 = load i32, i32* @CHAR_BIT
%1560 = sext i32 %1559 to i64
%1561 = mul i64 4, %1560
%1562 = sub i64 %1561, 2
%1563 = trunc i64 %1562 to i32
%1564 = shl i32 1, %1563
%1565 = sub nsw i32 %1564, 1
%1566 = add nsw i32 %1558, %1565
br label %1568
1567: ; preds = %1535
br label %1568
1568: ; preds = %1567, %1552
%1569 = phi i32 [ %1566, %1552 ], [ -1, %1567 ]
%1570 = sub nsw i32 %1536, %1569
%1571 = icmp slt i32 %1503, %1570
%1572 = zext i1 %1571 to i32
%1573 = call i32 @assert(i32 %1572)
%1574 = load i32, i32* @CHAR_BIT
%1575 = sext i32 %1574 to i64
%1576 = mul i64 4, %1575
%1577 = sub i64 %1576, 2
%1578 = trunc i64 %1577 to i32
%1579 = shl i32 1, %1578
%1580 = load i32, i32* @CHAR_BIT
%1581 = sext i32 %1580 to i64
%1582 = mul i64 4, %1581
%1583 = sub i64 %1582, 2
%1584 = trunc i64 %1583 to i32
%1585 = shl i32 1, %1584
%1586 = sub nsw i32 %1585, 1
%1587 = add nsw i32 %1579, %1586
%1588 = sub nsw i32 0, %1587
%1589 = sub nsw i32 %1588, 1
%1590 = icmp slt i32 %1589, 0
br i1 %1590, label %1591, label %1608
1591: ; preds = %1568
%1592 = load i32, i32* @CHAR_BIT
%1593 = sext i32 %1592 to i64
%1594 = mul i64 4, %1593
%1595 = sub i64 %1594, 2
%1596 = trunc i64 %1595 to i32
%1597 = shl i32 1, %1596
%1598 = load i32, i32* @CHAR_BIT
%1599 = sext i32 %1598 to i64
%1600 = mul i64 4, %1599
%1601 = sub i64 %1600, 2
%1602 = trunc i64 %1601 to i32
%1603 = shl i32 1, %1602
%1604 = sub nsw i32 %1603, 1
%1605 = add nsw i32 %1597, %1604
%1606 = sub nsw i32 0, %1605
%1607 = sub nsw i32 %1606, 1
br label %1609
1608: ; preds = %1568
br label %1609
1609: ; preds = %1608, %1591
%1610 = phi i32 [ %1607, %1591 ], [ 0, %1608 ]
%1611 = load i32, i32* @CHAR_BIT
%1612 = sext i32 %1611 to i64
%1613 = mul i64 4, %1612
%1614 = sub i64 %1613, 2
%1615 = trunc i64 %1614 to i32
%1616 = shl i32 1, %1615
%1617 = load i32, i32* @CHAR_BIT
%1618 = sext i32 %1617 to i64
%1619 = mul i64 4, %1618
%1620 = sub i64 %1619, 2
%1621 = trunc i64 %1620 to i32
%1622 = shl i32 1, %1621
%1623 = sub nsw i32 %1622, 1
%1624 = add nsw i32 %1616, %1623
%1625 = sub nsw i32 0, %1624
%1626 = sub nsw i32 %1625, 1
%1627 = icmp slt i32 %1626, 0
br i1 %1627, label %1628, label %1645
1628: ; preds = %1609
%1629 = load i32, i32* @CHAR_BIT
%1630 = sext i32 %1629 to i64
%1631 = mul i64 4, %1630
%1632 = sub i64 %1631, 2
%1633 = trunc i64 %1632 to i32
%1634 = shl i32 1, %1633
%1635 = load i32, i32* @CHAR_BIT
%1636 = sext i32 %1635 to i64
%1637 = mul i64 4, %1636
%1638 = sub i64 %1637, 2
%1639 = trunc i64 %1638 to i32
%1640 = shl i32 1, %1639
%1641 = sub nsw i32 %1640, 1
%1642 = add nsw i32 %1634, %1641
%1643 = sub nsw i32 0, %1642
%1644 = sub nsw i32 %1643, 1
br label %1646
1645: ; preds = %1609
br label %1646
1646: ; preds = %1645, %1628
%1647 = phi i32 [ %1644, %1628 ], [ 0, %1645 ]
%1648 = sub nsw i32 %1610, %1647
%1649 = load i32, i32* @CHAR_BIT
%1650 = sext i32 %1649 to i64
%1651 = mul i64 4, %1650
%1652 = sub i64 %1651, 2
%1653 = trunc i64 %1652 to i32
%1654 = shl i32 1, %1653
%1655 = load i32, i32* @CHAR_BIT
%1656 = sext i32 %1655 to i64
%1657 = mul i64 4, %1656
%1658 = sub i64 %1657, 2
%1659 = trunc i64 %1658 to i32
%1660 = shl i32 1, %1659
%1661 = sub nsw i32 %1660, 1
%1662 = add nsw i32 %1654, %1661
%1663 = sub nsw i32 0, %1662
%1664 = sub nsw i32 %1663, 1
%1665 = icmp slt i32 %1664, 0
br i1 %1665, label %1666, label %1683
1666: ; preds = %1646
%1667 = load i32, i32* @CHAR_BIT
%1668 = sext i32 %1667 to i64
%1669 = mul i64 4, %1668
%1670 = sub i64 %1669, 2
%1671 = trunc i64 %1670 to i32
%1672 = shl i32 1, %1671
%1673 = load i32, i32* @CHAR_BIT
%1674 = sext i32 %1673 to i64
%1675 = mul i64 4, %1674
%1676 = sub i64 %1675, 2
%1677 = trunc i64 %1676 to i32
%1678 = shl i32 1, %1677
%1679 = sub nsw i32 %1678, 1
%1680 = add nsw i32 %1672, %1679
%1681 = sub nsw i32 0, %1680
%1682 = sub nsw i32 %1681, 1
br label %1684
1683: ; preds = %1646
br label %1684
1684: ; preds = %1683, %1666
%1685 = phi i32 [ %1682, %1666 ], [ 0, %1683 ]
%1686 = load i32, i32* @CHAR_BIT
%1687 = sext i32 %1686 to i64
%1688 = mul i64 4, %1687
%1689 = sub i64 %1688, 2
%1690 = trunc i64 %1689 to i32
%1691 = shl i32 1, %1690
%1692 = load i32, i32* @CHAR_BIT
%1693 = sext i32 %1692 to i64
%1694 = mul i64 4, %1693
%1695 = sub i64 %1694, 2
%1696 = trunc i64 %1695 to i32
%1697 = shl i32 1, %1696
%1698 = sub nsw i32 %1697, 1
%1699 = add nsw i32 %1691, %1698
%1700 = sub nsw i32 0, %1699
%1701 = sub nsw i32 %1700, 1
%1702 = icmp slt i32 %1701, 0
br i1 %1702, label %1703, label %1720
1703: ; preds = %1684
%1704 = load i32, i32* @CHAR_BIT
%1705 = sext i32 %1704 to i64
%1706 = mul i64 4, %1705
%1707 = sub i64 %1706, 2
%1708 = trunc i64 %1707 to i32
%1709 = shl i32 1, %1708
%1710 = load i32, i32* @CHAR_BIT
%1711 = sext i32 %1710 to i64
%1712 = mul i64 4, %1711
%1713 = sub i64 %1712, 2
%1714 = trunc i64 %1713 to i32
%1715 = shl i32 1, %1714
%1716 = sub nsw i32 %1715, 1
%1717 = add nsw i32 %1709, %1716
%1718 = sub nsw i32 0, %1717
%1719 = sub nsw i32 %1718, 1
br label %1721
1720: ; preds = %1684
br label %1721
1721: ; preds = %1720, %1703
%1722 = phi i32 [ %1719, %1703 ], [ 0, %1720 ]
%1723 = sub nsw i32 %1685, %1722
%1724 = add nsw i32 %1723, 1
%1725 = sub nsw i32 %1648, %1724
%1726 = load i32, i32* @CHAR_BIT
%1727 = sext i32 %1726 to i64
%1728 = mul i64 4, %1727
%1729 = sub i64 %1728, 2
%1730 = trunc i64 %1729 to i32
%1731 = shl i32 1, %1730
%1732 = load i32, i32* @CHAR_BIT
%1733 = sext i32 %1732 to i64
%1734 = mul i64 4, %1733
%1735 = sub i64 %1734, 2
%1736 = trunc i64 %1735 to i32
%1737 = shl i32 1, %1736
%1738 = sub nsw i32 %1737, 1
%1739 = add nsw i32 %1731, %1738
%1740 = sub nsw i32 0, %1739
%1741 = sub nsw i32 %1740, 1
%1742 = icmp slt i32 %1741, 0
br i1 %1742, label %1743, label %1760
1743: ; preds = %1721
%1744 = load i32, i32* @CHAR_BIT
%1745 = sext i32 %1744 to i64
%1746 = mul i64 4, %1745
%1747 = sub i64 %1746, 2
%1748 = trunc i64 %1747 to i32
%1749 = shl i32 1, %1748
%1750 = load i32, i32* @CHAR_BIT
%1751 = sext i32 %1750 to i64
%1752 = mul i64 4, %1751
%1753 = sub i64 %1752, 2
%1754 = trunc i64 %1753 to i32
%1755 = shl i32 1, %1754
%1756 = sub nsw i32 %1755, 1
%1757 = add nsw i32 %1749, %1756
%1758 = sub nsw i32 0, %1757
%1759 = sub nsw i32 %1758, 1
br label %1761
1760: ; preds = %1721
br label %1761
1761: ; preds = %1760, %1743
%1762 = phi i32 [ %1759, %1743 ], [ 0, %1760 ]
%1763 = load i32, i32* @CHAR_BIT
%1764 = sext i32 %1763 to i64
%1765 = mul i64 4, %1764
%1766 = sub i64 %1765, 2
%1767 = trunc i64 %1766 to i32
%1768 = shl i32 1, %1767
%1769 = load i32, i32* @CHAR_BIT
%1770 = sext i32 %1769 to i64
%1771 = mul i64 4, %1770
%1772 = sub i64 %1771, 2
%1773 = trunc i64 %1772 to i32
%1774 = shl i32 1, %1773
%1775 = sub nsw i32 %1774, 1
%1776 = add nsw i32 %1768, %1775
%1777 = sub nsw i32 0, %1776
%1778 = sub nsw i32 %1777, 1
%1779 = icmp slt i32 %1778, 0
br i1 %1779, label %1780, label %1797
1780: ; preds = %1761
%1781 = load i32, i32* @CHAR_BIT
%1782 = sext i32 %1781 to i64
%1783 = mul i64 4, %1782
%1784 = sub i64 %1783, 2
%1785 = trunc i64 %1784 to i32
%1786 = shl i32 1, %1785
%1787 = load i32, i32* @CHAR_BIT
%1788 = sext i32 %1787 to i64
%1789 = mul i64 4, %1788
%1790 = sub i64 %1789, 2
%1791 = trunc i64 %1790 to i32
%1792 = shl i32 1, %1791
%1793 = sub nsw i32 %1792, 1
%1794 = add nsw i32 %1786, %1793
%1795 = sub nsw i32 0, %1794
%1796 = sub nsw i32 %1795, 1
br label %1798
1797: ; preds = %1761
br label %1798
1798: ; preds = %1797, %1780
%1799 = phi i32 [ %1796, %1780 ], [ 0, %1797 ]
%1800 = sub nsw i32 %1762, %1799
%1801 = icmp slt i32 %1725, %1800
%1802 = zext i1 %1801 to i32
%1803 = call i32 @assert(i32 %1802)
ret i32 1
}

LLVM IR (-O2):
@CHAR_BIT = global i32 0
define i32 @test_SIGNED_NONLONG_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)
%10 = tail call i32 @assert(i32 1)
%11 = tail call i32 @assert(i32 1)
%12 = tail call i32 @assert(i32 1)
%13 = tail call i32 @assert(i32 1)
%14 = tail call i32 @assert(i32 1)
%15 = tail call i32 @assert(i32 1)
%16 = tail call i32 @assert(i32 1)
%17 = tail call i32 @assert(i32 1)
%18 = tail call i32 @assert(i32 1)
%19 = tail call i32 @assert(i32 1)
%20 = tail call i32 @assert(i32 1)
%21 = tail call i32 @assert(i32 1)
ret i32 1
}