#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 /*<<< orphan*/ assertTrue(char *, int);
void test_short_array() {
  short chars[255] = {
      0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
      0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
      0,    0,    0,    0,    0,    0,    0,    0,    2699, 2714, 2728, 2732,
      2719, 2733, 2718, 2717, 2721, 2722, 2723, 2725, 2711, 2724, 2710, 2720,
      2700, 2701, 2702, 2703, 2704, 2705, 2706, 2707, 2708, 2709, 2712, 2713,
      2730, 2726, 2731, 2715, 2734, 2501, 2502, 2503, 2504, 2505, 2506, 2507,
      2508, 2509, 2510, 2511, 2512, 2513, 2514, 2515, 2516, 2517, 2518, 2519,
      2520, 2521, 2522, 2523, 2524, 2525, 2526, 2223, 4178, 2224, 4110, 4013,
      2716, 2601, 2602, 2603, 2604, 2605, 2606, 2607, 2608, 2609, 2610, 2611,
      2612, 2613, 2614, 2615, 2616, 2617, 2618, 2619, 2620, 2621, 2622, 2623,
      2624, 2625, 2626, 2225, 4108, 2226, 2246, 0,    0,    0,    0,    0,
      0,    0,    0,    0,    4180, 4181, 4182, 4183, 4184, 4185, 4186, 0,
      0,    0,    0,    0,    0,    0,    0,    0,    2619, 4163, 0,    0,
      0,    0,    0,    0,    2699, 4115, 910,  272,  4023, 4128, 4107, 2276,
      4182, 274,  0,    4023, 4080, 4105, 273,  4187, 2729, 2233, 0,    0,
      4180, 3138, 4023, 4131, 4023, 0,    0,    4023, 270,  261,  271,  4116,
      4025, 4025, 4025, 4025, 4025, 4025, 0,    4024, 4025, 4025, 4025, 4025,
      4025, 4025, 4025, 4025, 4023, 4025, 4025, 4025, 4025, 4025, 4025, 727,
      2515, 4025, 4025, 4025, 4025, 4025, 4023, 0,    4024, 4024, 4024, 4024,
      4024, 4024, 0,    4024, 4024, 4024, 4024, 4024, 4024, 4024, 4024, 4024,
      4023, 4024, 4024, 4024, 4024, 4024, 4024, 2237, 2615, 4024, 4024, 4024,
      4024, 4024, 4023, 4024,
  };
  assertTrue("chars[32] == 2699", chars[32] == 2699);
  ;
  assertTrue("chars[33] == 2714", chars[33] == 2714);
  ;
}


x86 assembly (clang, -O0):
<test_short_array>:
push   %rbp
mov    %rsp,%rbp
sub    $0x200,%rsp
lea    -0x200(%rbp),%rdi
lea    0xec7(%rip),%rsi
mov    $0x1fe,%edx
call   1040 <memcpy@plt>
movswl -0x1c0(%rbp),%eax
cmp    $0xa8b,%eax
sete   %al
and    $0x1,%al
movzbl %al,%esi
lea    0x10a0(%rip),%rdi
call   1030 <assertTrue@plt>
movswl -0x1be(%rbp),%eax
cmp    $0xa9a,%eax
sete   %al
and    $0x1,%al
movzbl %al,%esi
lea    0x1092(%rip),%rdi
call   1030 <assertTrue@plt>
add    $0x200,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<test_short_array>:
push   %rax
lea    0xee8(%rip),%rdi
mov    $0x1,%esi
call   1030 <assertTrue@plt>
lea    0xee9(%rip),%rdi
mov    $0x1,%esi
pop    %rax
jmp    1030 <assertTrue@plt>

LLVM IR (-O0):
@__const.test_short_array.chars = [255 x i16] [i16 0, i16 0, i16 0, i16 0, i16 0, i16 0, i16 0, i16 0, i16 0, i16 0, i16 0, i16 0, i16 0, i16 0, i16 0, i16 0, i16 0, i16 0, i16 0, i16 0, i16 0, i16 0, i16 0, i16 0, i16 0, i16 0, i16 0, i16 0, i16 0, i16 0, i16 0, i16 0, i16 2699, i16 2714, i16 2728, i16 2732, i16 2719, i16 2733, i16 2718, i16 2717, i16 2721, i16 2722, i16 2723, i16 2725, i16 2711, i16 2724, i16 2710, i16 2720, i16 2700, i16 2701, i16 2702, i16 2703, i16 2704, i16 2705, i16 2706, i16 2707, i16 2708, i16 2709, i16 2712, i16 2713, i16 2730, i16 2726, i16 2731, i16 2715, i16 2734, i16 2501, i16 2502, i16 2503, i16 2504, i16 2505, i16 2506, i16 2507, i16 2508, i16 2509, i16 2510, i16 2511, i16 2512, i16 2513, i16 2514, i16 2515, i16 2516, i16 2517, i16 2518, i16 2519, i16 2520, i16 2521, i16 2522, i16 2523, i16 2524, i16 2525, i16 2526, i16 2223, i16 4178, i16 2224, i16 4110, i16 4013, i16 2716, i16 2601, i16 2602, i16 2603, i16 2604, i16 2605, i16 2606, i16 2607, i16 2608, i16 2609, i16 2610, i16 2611, i16 2612, i16 2613, i16 2614, i16 2615, i16 2616, i16 2617, i16 2618, i16 2619, i16 2620, i16 2621, i16 2622, i16 2623, i16 2624, i16 2625, i16 2626, i16 2225, i16 4108, i16 2226, i16 2246, i16 0, i16 0, i16 0, i16 0, i16 0, i16 0, i16 0, i16 0, i16 0, i16 4180, i16 4181, i16 4182, i16 4183, i16 4184, i16 4185, i16 4186, i16 0, i16 0, i16 0, i16 0, i16 0, i16 0, i16 0, i16 0, i16 0, i16 2619, i16 4163, i16 0, i16 0, i16 0, i16 0, i16 0, i16 0, i16 2699, i16 4115, i16 910, i16 272, i16 4023, i16 4128, i16 4107, i16 2276, i16 4182, i16 274, i16 0, i16 4023, i16 4080, i16 4105, i16 273, i16 4187, i16 2729, i16 2233, i16 0, i16 0, i16 4180, i16 3138, i16 4023, i16 4131, i16 4023, i16 0, i16 0, i16 4023, i16 270, i16 261, i16 271, i16 4116, i16 4025, i16 4025, i16 4025, i16 4025, i16 4025, i16 4025, i16 0, i16 4024, i16 4025, i16 4025, i16 4025, i16 4025, i16 4025, i16 4025, i16 4025, i16 4025, i16 4023, i16 4025, i16 4025, i16 4025, i16 4025, i16 4025, i16 4025, i16 727, i16 2515, i16 4025, i16 4025, i16 4025, i16 4025, i16 4025, i16 4023, i16 0, i16 4024, i16 4024, i16 4024, i16 4024, i16 4024, i16 4024, i16 0, i16 4024, i16 4024, i16 4024, i16 4024, i16 4024, i16 4024, i16 4024, i16 4024, i16 4024, i16 4023, i16 4024, i16 4024, i16 4024, i16 4024, i16 4024, i16 4024, i16 2237, i16 2615, i16 4024, i16 4024, i16 4024, i16 4024, i16 4024, i16 4023]
@.str = [18 x i8] c"chars[32] == 2699\00"
@.str.1 = [18 x i8] c"chars[33] == 2714\00"
define void @test_short_array() {
%1 = alloca [255 x i16]
%2 = bitcast [255 x i16]* %1 to i8*
%3 = getelementptr inbounds [255 x i16], [255 x i16]* %1, i64 0, i64 32
%4 = load i16, i16* %3
%5 = sext i16 %4 to i32
%6 = icmp eq i32 %5, 2699
%7 = zext i1 %6 to i32
%8 = call i32 @assertTrue(i8* getelementptr inbounds ([18 x i8], [18 x i8]* @.str, i64 0, i64 0), i32 %7)
%9 = getelementptr inbounds [255 x i16], [255 x i16]* %1, i64 0, i64 33
%10 = load i16, i16* %9
%11 = sext i16 %10 to i32
%12 = icmp eq i32 %11, 2714
%13 = zext i1 %12 to i32
%14 = call i32 @assertTrue(i8* getelementptr inbounds ([18 x i8], [18 x i8]* @.str.1, i64 0, i64 0), i32 %13)
ret void
}

LLVM IR (-O2):
@.str = [18 x i8] c"chars[32] == 2699\00"
@.str.1 = [18 x i8] c"chars[33] == 2714\00"
define void @test_short_array() {
%1 = tail call i32 @assertTrue(i8* getelementptr inbounds ([18 x i8], [18 x i8]* @.str, i64 0, i64 0), i32 1)
%2 = tail call i32 @assertTrue(i8* getelementptr inbounds ([18 x i8], [18 x i8]* @.str.1, i64 0, i64 0), i32 1)
ret void
}