Fixture 116
string literals
C · 4 functions · 4 lanes · 10 of 16 function-lanes behave identically
4 of 4 lanes have a function that returns a different result after decompilation: clang-O2 (2/4), gcc-O2 (2/4), clang-O0 (3/4), gcc-O0 (3/4).
String literals: adjacent literals concatenate at translation phase 6, the terminating NUL is part of the object, and sizeof counts it while a length scan does not. The literal itself lands in read-only data.
#include <stdint.h>
/* String literals: adjacent literals concatenate at translation phase 6, the
* terminating NUL is part of the object, and sizeof counts it while a length
* scan does not. The literal itself lands in read-only data. */
__attribute__((noinline)) int32_t literal_size_versus_length(void) {
static const char greeting[] = "abc" "def";
int32_t length = 0;
while (greeting[length] != '\0') {
length += 1;
}
return (int32_t)sizeof(greeting) * 100 + length;
}
__attribute__((noinline)) int32_t literal_index(int32_t index) {
if (index < 0 || index > 5) {
return -1;
}
return (int32_t)"HELLO!"[index];
}
__attribute__((noinline)) int32_t
count_matching(const uint8_t *text, int32_t length, int32_t target) {
static const char vowels[] = "aeiou";
int32_t matches = 0;
int32_t index;
int32_t vowel;
if (text == 0 || length < 0 || length > 16) {
return -1;
}
for (index = 0; index < length; ++index) {
for (vowel = 0; vowel < 5; ++vowel) {
if ((int32_t)text[index] == (int32_t)(uint8_t)vowels[vowel]) {
matches += 1;
}
}
}
return matches + (target != 0);
}
__attribute__((noinline)) int32_t escape_sequences(int32_t which) {
static const char escapes[] = "\t\n\\\0X";
if (which < 0 || which > 4) {
return -1;
}
return (int32_t)escapes[which];
} Recovered C
Generated by glaurung decompile --style decbench at b47f6b43.
baseline.json records the result after recompiling the C and calling it beside the
original with seeded inputs.
clang -O2
2/4count_matching fail 160 lines
// glaurung: count_matching @ 0x1130
int32_t count_matching(const uint8_t * arg0, int32_t arg1, int32_t arg2) {
extern long __unknown(long, ...);
int matches;
int index;
int vowel;
long ret;
int var111;
int var112;
int var123;
int var124;
int var125;
int var126;
int var145;
int var146;
int var169;
int var170;
int var189;
int var19;
int var190;
long var2;
int var20;
int var213;
int var214;
int var233;
int var234;
int var267;
int var268;
int var27;
int var28;
int var29;
int var291;
int var292;
long var3;
int var30;
int var311;
int var312;
int var335;
int var336;
int var355;
int var356;
int var384;
int var385;
int var408;
int var409;
int var428;
int var429;
int var43;
int var44;
int var452;
int var453;
int var472;
int var473;
int var509;
int var538;
long var6;
int var67;
int var68;
int var87;
int var88;
ret = 0xffffffff;
if ((arg0 == 0)) {
return ret;
}
if (((unsigned long)(16) < (unsigned long)((unsigned long)((unsigned int)(arg1))))) {
return ret;
}
if (((unsigned long)((unsigned int)(arg1)) == 0)) {
var2 = 0;
} else {
var3 = (unsigned long)((unsigned int)(arg1));
if (((unsigned long)(4) <= (unsigned long)((unsigned long)((unsigned int)(arg1))))) {
var6 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)(var3)) & -4)));
var19 = __unknown(0);
var20 = __unknown(0);
var27 = 1;
var28 = 1;
var29 = 1;
var30 = 1;
var43 = __unknown(0);
var44 = __unknown(0);
var67 = __unknown(0);
var68 = __unknown(0);
var87 = __unknown(0);
var88 = __unknown(0);
var111 = __unknown(0);
var112 = __unknown(0);
var123 = ((((unsigned int)((unsigned short)(var111)) | ((unsigned int)((unsigned short)(var111)) << 16)) & 1) + (((((unsigned int)((unsigned short)(var87)) | ((unsigned int)((unsigned short)(var87)) << 16)) & 1) + (((unsigned int)((unsigned short)(var67)) | ((unsigned int)((unsigned short)(var67)) << 16)) & 1)) + ((((unsigned int)((unsigned short)(var43)) | ((unsigned int)((unsigned short)(var43)) << 16)) & 1) + (((unsigned int)((unsigned short)(var19)) | ((unsigned int)((unsigned short)(var19)) << 16)) & 1))));
var124 = ((((unsigned int)((unsigned short)((((unsigned int)(var111) >> 16) & 0xffff))) | ((unsigned int)((unsigned short)((((unsigned int)(var111) >> 16) & 0xffff))) << 16)) & 1) + (((((unsigned int)((unsigned short)((((unsigned int)(var87) >> 16) & 0xffff))) | ((unsigned int)((unsigned short)((((unsigned int)(var87) >> 16) & 0xffff))) << 16)) & 1) + (((unsigned int)((unsigned short)((((unsigned int)(var67) >> 16) & 0xffff))) | ((unsigned int)((unsigned short)((((unsigned int)(var67) >> 16) & 0xffff))) << 16)) & 1)) + ((((unsigned int)((unsigned short)((((unsigned int)(var43) >> 16) & 0xffff))) | ((unsigned int)((unsigned short)((((unsigned int)(var43) >> 16) & 0xffff))) << 16)) & 1) + (((unsigned int)((unsigned short)((((unsigned int)(var19) >> 16) & 0xffff))) | ((unsigned int)((unsigned short)((((unsigned int)(var19) >> 16) & 0xffff))) << 16)) & 1))));
var125 = ((((unsigned int)((unsigned short)(var112)) | ((unsigned int)((unsigned short)(var112)) << 16)) & 1) + (((((unsigned int)((unsigned short)(var88)) | ((unsigned int)((unsigned short)(var88)) << 16)) & 1) + (((unsigned int)((unsigned short)(var68)) | ((unsigned int)((unsigned short)(var68)) << 16)) & 1)) + ((((unsigned int)((unsigned short)(var44)) | ((unsigned int)((unsigned short)(var44)) << 16)) & 1) + (((unsigned int)((unsigned short)(var20)) | ((unsigned int)((unsigned short)(var20)) << 16)) & 1))));
var126 = ((((unsigned int)((unsigned short)((((unsigned int)(var112) >> 16) & 0xffff))) | ((unsigned int)((unsigned short)((((unsigned int)(var112) >> 16) & 0xffff))) << 16)) & 1) + (((((unsigned int)((unsigned short)((((unsigned int)(var88) >> 16) & 0xffff))) | ((unsigned int)((unsigned short)((((unsigned int)(var88) >> 16) & 0xffff))) << 16)) & 1) + (((unsigned int)((unsigned short)((((unsigned int)(var68) >> 16) & 0xffff))) | ((unsigned int)((unsigned short)((((unsigned int)(var68) >> 16) & 0xffff))) << 16)) & 1)) + ((((unsigned int)((unsigned short)((((unsigned int)(var44) >> 16) & 0xffff))) | ((unsigned int)((unsigned short)((((unsigned int)(var44) >> 16) & 0xffff))) << 16)) & 1) + (((unsigned int)((unsigned short)((((unsigned int)(var20) >> 16) & 0xffff))) | ((unsigned int)((unsigned short)((((unsigned int)(var20) >> 16) & 0xffff))) << 16)) & 1))));
if ((var6 != 4)) {
var145 = __unknown(0);
var146 = __unknown(0);
var169 = __unknown(0);
var170 = __unknown(0);
var189 = __unknown(0);
var190 = __unknown(0);
var213 = __unknown(0);
var214 = __unknown(0);
var233 = __unknown(0);
var234 = __unknown(0);
var123 = (((((unsigned int)((unsigned short)(var233)) | ((unsigned int)((unsigned short)(var233)) << 16)) & var27) + ((((unsigned int)((unsigned short)(var213)) | ((unsigned int)((unsigned short)(var213)) << 16)) & var27) + ((((unsigned int)((unsigned short)(var189)) | ((unsigned int)((unsigned short)(var189)) << 16)) & var27) + (((unsigned int)((unsigned short)(var169)) | ((unsigned int)((unsigned short)(var169)) << 16)) & var27)))) + (var123 + (((unsigned int)((unsigned short)(var145)) | ((unsigned int)((unsigned short)(var145)) << 16)) & var27)));
var124 = (((((unsigned int)((unsigned short)((((unsigned int)(var233) >> 16) & 0xffff))) | ((unsigned int)((unsigned short)((((unsigned int)(var233) >> 16) & 0xffff))) << 16)) & var28) + ((((unsigned int)((unsigned short)((((unsigned int)(var213) >> 16) & 0xffff))) | ((unsigned int)((unsigned short)((((unsigned int)(var213) >> 16) & 0xffff))) << 16)) & var28) + ((((unsigned int)((unsigned short)((((unsigned int)(var189) >> 16) & 0xffff))) | ((unsigned int)((unsigned short)((((unsigned int)(var189) >> 16) & 0xffff))) << 16)) & var28) + (((unsigned int)((unsigned short)((((unsigned int)(var169) >> 16) & 0xffff))) | ((unsigned int)((unsigned short)((((unsigned int)(var169) >> 16) & 0xffff))) << 16)) & var28)))) + (var124 + (((unsigned int)((unsigned short)((((unsigned int)(var145) >> 16) & 0xffff))) | ((unsigned int)((unsigned short)((((unsigned int)(var145) >> 16) & 0xffff))) << 16)) & var28)));
var125 = (((((unsigned int)((unsigned short)(var234)) | ((unsigned int)((unsigned short)(var234)) << 16)) & var29) + ((((unsigned int)((unsigned short)(var214)) | ((unsigned int)((unsigned short)(var214)) << 16)) & var29) + ((((unsigned int)((unsigned short)(var190)) | ((unsigned int)((unsigned short)(var190)) << 16)) & var29) + (((unsigned int)((unsigned short)(var170)) | ((unsigned int)((unsigned short)(var170)) << 16)) & var29)))) + (var125 + (((unsigned int)((unsigned short)(var146)) | ((unsigned int)((unsigned short)(var146)) << 16)) & var29)));
var126 = (((((unsigned int)((unsigned short)((((unsigned int)(var234) >> 16) & 0xffff))) | ((unsigned int)((unsigned short)((((unsigned int)(var234) >> 16) & 0xffff))) << 16)) & var30) + ((((unsigned int)((unsigned short)((((unsigned int)(var214) >> 16) & 0xffff))) | ((unsigned int)((unsigned short)((((unsigned int)(var214) >> 16) & 0xffff))) << 16)) & var30) + ((((unsigned int)((unsigned short)((((unsigned int)(var190) >> 16) & 0xffff))) | ((unsigned int)((unsigned short)((((unsigned int)(var190) >> 16) & 0xffff))) << 16)) & var30) + (((unsigned int)((unsigned short)((((unsigned int)(var170) >> 16) & 0xffff))) | ((unsigned int)((unsigned short)((((unsigned int)(var170) >> 16) & 0xffff))) << 16)) & var30)))) + (var126 + (((unsigned int)((unsigned short)((((unsigned int)(var146) >> 16) & 0xffff))) | ((unsigned int)((unsigned short)((((unsigned int)(var146) >> 16) & 0xffff))) << 16)) & var30)));
if (((unsigned long)((unsigned int)(var6)) != 8)) {
var267 = __unknown(0);
var268 = __unknown(0);
var291 = __unknown(0);
var292 = __unknown(0);
var311 = __unknown(0);
var312 = __unknown(0);
var335 = __unknown(0);
var336 = __unknown(0);
var355 = __unknown(0);
var356 = __unknown(0);
var123 = (((((unsigned int)((unsigned short)(var355)) | ((unsigned int)((unsigned short)(var355)) << 16)) & var27) + ((((unsigned int)((unsigned short)(var335)) | ((unsigned int)((unsigned short)(var335)) << 16)) & var27) + ((((unsigned int)((unsigned short)(var311)) | ((unsigned int)((unsigned short)(var311)) << 16)) & var27) + (((unsigned int)((unsigned short)(var291)) | ((unsigned int)((unsigned short)(var291)) << 16)) & var27)))) + (var123 + (((unsigned int)((unsigned short)(var267)) | ((unsigned int)((unsigned short)(var267)) << 16)) & var27)));
var124 = (((((unsigned int)((unsigned short)((((unsigned int)(var355) >> 16) & 0xffff))) | ((unsigned int)((unsigned short)((((unsigned int)(var355) >> 16) & 0xffff))) << 16)) & var28) + ((((unsigned int)((unsigned short)((((unsigned int)(var335) >> 16) & 0xffff))) | ((unsigned int)((unsigned short)((((unsigned int)(var335) >> 16) & 0xffff))) << 16)) & var28) + ((((unsigned int)((unsigned short)((((unsigned int)(var311) >> 16) & 0xffff))) | ((unsigned int)((unsigned short)((((unsigned int)(var311) >> 16) & 0xffff))) << 16)) & var28) + (((unsigned int)((unsigned short)((((unsigned int)(var291) >> 16) & 0xffff))) | ((unsigned int)((unsigned short)((((unsigned int)(var291) >> 16) & 0xffff))) << 16)) & var28)))) + (var124 + (((unsigned int)((unsigned short)((((unsigned int)(var267) >> 16) & 0xffff))) | ((unsigned int)((unsigned short)((((unsigned int)(var267) >> 16) & 0xffff))) << 16)) & var28)));
var125 = (((((unsigned int)((unsigned short)(var356)) | ((unsigned int)((unsigned short)(var356)) << 16)) & var29) + ((((unsigned int)((unsigned short)(var336)) | ((unsigned int)((unsigned short)(var336)) << 16)) & var29) + ((((unsigned int)((unsigned short)(var312)) | ((unsigned int)((unsigned short)(var312)) << 16)) & var29) + (((unsigned int)((unsigned short)(var292)) | ((unsigned int)((unsigned short)(var292)) << 16)) & var29)))) + (var125 + (((unsigned int)((unsigned short)(var268)) | ((unsigned int)((unsigned short)(var268)) << 16)) & var29)));
var126 = (((((unsigned int)((unsigned short)((((unsigned int)(var356) >> 16) & 0xffff))) | ((unsigned int)((unsigned short)((((unsigned int)(var356) >> 16) & 0xffff))) << 16)) & var30) + ((((unsigned int)((unsigned short)((((unsigned int)(var336) >> 16) & 0xffff))) | ((unsigned int)((unsigned short)((((unsigned int)(var336) >> 16) & 0xffff))) << 16)) & var30) + ((((unsigned int)((unsigned short)((((unsigned int)(var312) >> 16) & 0xffff))) | ((unsigned int)((unsigned short)((((unsigned int)(var312) >> 16) & 0xffff))) << 16)) & var30) + (((unsigned int)((unsigned short)((((unsigned int)(var292) >> 16) & 0xffff))) | ((unsigned int)((unsigned short)((((unsigned int)(var292) >> 16) & 0xffff))) << 16)) & var30)))) + (var126 + (((unsigned int)((unsigned short)((((unsigned int)(var268) >> 16) & 0xffff))) | ((unsigned int)((unsigned short)((((unsigned int)(var268) >> 16) & 0xffff))) << 16)) & var30)));
if (((unsigned long)((unsigned int)(var6)) != 12)) {
var384 = __unknown(0);
var385 = __unknown(0);
var408 = __unknown(0);
var409 = __unknown(0);
var428 = __unknown(0);
var429 = __unknown(0);
var452 = __unknown(0);
var453 = __unknown(0);
var472 = __unknown(0);
var473 = __unknown(0);
var123 = ((var123 + (((unsigned int)((unsigned short)(var384)) | ((unsigned int)((unsigned short)(var384)) << 16)) & var27)) + ((((unsigned int)((unsigned short)(var472)) | ((unsigned int)((unsigned short)(var472)) << 16)) & var27) + ((((unsigned int)((unsigned short)(var452)) | ((unsigned int)((unsigned short)(var452)) << 16)) & var27) + ((((unsigned int)((unsigned short)(var428)) | ((unsigned int)((unsigned short)(var428)) << 16)) & var27) + (((unsigned int)((unsigned short)(var408)) | ((unsigned int)((unsigned short)(var408)) << 16)) & var27)))));
var124 = ((var124 + (((unsigned int)((unsigned short)((((unsigned int)(var384) >> 16) & 0xffff))) | ((unsigned int)((unsigned short)((((unsigned int)(var384) >> 16) & 0xffff))) << 16)) & var28)) + ((((unsigned int)((unsigned short)((((unsigned int)(var472) >> 16) & 0xffff))) | ((unsigned int)((unsigned short)((((unsigned int)(var472) >> 16) & 0xffff))) << 16)) & var28) + ((((unsigned int)((unsigned short)((((unsigned int)(var452) >> 16) & 0xffff))) | ((unsigned int)((unsigned short)((((unsigned int)(var452) >> 16) & 0xffff))) << 16)) & var28) + ((((unsigned int)((unsigned short)((((unsigned int)(var428) >> 16) & 0xffff))) | ((unsigned int)((unsigned short)((((unsigned int)(var428) >> 16) & 0xffff))) << 16)) & var28) + (((unsigned int)((unsigned short)((((unsigned int)(var408) >> 16) & 0xffff))) | ((unsigned int)((unsigned short)((((unsigned int)(var408) >> 16) & 0xffff))) << 16)) & var28)))));
var125 = ((var125 + (((unsigned int)((unsigned short)(var385)) | ((unsigned int)((unsigned short)(var385)) << 16)) & var29)) + ((((unsigned int)((unsigned short)(var473)) | ((unsigned int)((unsigned short)(var473)) << 16)) & var29) + ((((unsigned int)((unsigned short)(var453)) | ((unsigned int)((unsigned short)(var453)) << 16)) & var29) + ((((unsigned int)((unsigned short)(var429)) | ((unsigned int)((unsigned short)(var429)) << 16)) & var29) + (((unsigned int)((unsigned short)(var409)) | ((unsigned int)((unsigned short)(var409)) << 16)) & var29)))));
var126 = ((var126 + (((unsigned int)((unsigned short)((((unsigned int)(var385) >> 16) & 0xffff))) | ((unsigned int)((unsigned short)((((unsigned int)(var385) >> 16) & 0xffff))) << 16)) & var30)) + ((((unsigned int)((unsigned short)((((unsigned int)(var473) >> 16) & 0xffff))) | ((unsigned int)((unsigned short)((((unsigned int)(var473) >> 16) & 0xffff))) << 16)) & var30) + ((((unsigned int)((unsigned short)((((unsigned int)(var453) >> 16) & 0xffff))) | ((unsigned int)((unsigned short)((((unsigned int)(var453) >> 16) & 0xffff))) << 16)) & var30) + ((((unsigned int)((unsigned short)((((unsigned int)(var429) >> 16) & 0xffff))) | ((unsigned int)((unsigned short)((((unsigned int)(var429) >> 16) & 0xffff))) << 16)) & var30) + (((unsigned int)((unsigned short)((((unsigned int)(var409) >> 16) & 0xffff))) | ((unsigned int)((unsigned short)((((unsigned int)(var409) >> 16) & 0xffff))) << 16)) & var30)))));
}
}
}
matches = (unsigned long)((unsigned int)(((var126 + var124) + (var125 + var123))));
var2 = (unsigned long)((unsigned int)(matches));
if ((var6 != var3)) {
L_13f0: ;
do {
var509 = (unsigned int)((unsigned char)(*(char *)(((long)arg0 + var6))));
var538 = (((unsigned long)((unsigned char)((var509 & 255))) == 117) + (unsigned int)((((unsigned long)((unsigned char)((var509 & 255))) == 111) + (unsigned long)((unsigned int)((((unsigned long)((unsigned char)((var509 & 255))) == 105) + (unsigned long)((unsigned int)((((unsigned long)((unsigned char)((var509 & 255))) == 101) + (unsigned long)((unsigned int)((((unsigned long)((unsigned char)((var509 & 255))) == 97) + matches))))))))))));
matches = (unsigned long)((unsigned int)(var538));
index = (var6 + 1);
var6 = (unsigned long)((unsigned int)(index));
var2 = (unsigned long)((unsigned int)(var538));
} while ((var3 != index));
}
} else {
var6 = 0;
matches = 0;
goto L_13f0;
}
}
return (unsigned int)(((unsigned int)((var2 + 1)) - ((unsigned long)((unsigned long)((unsigned int)(arg2))) < (unsigned long)(1))));
} escape_sequences fail 9 lines
// glaurung: escape_sequences @ 0x1440
int32_t escape_sequences(int32_t arg0) {
long ret;
ret = 0xffffffff;
if (((unsigned long)((unsigned long)((unsigned int)(arg0))) <= (unsigned long)(4))) {
ret = (int)((signed char)(*(char *)(((unsigned long)((unsigned int)(arg0)) + "\t\n\\"))));
}
return ret;
} literal_index pass 9 lines
// glaurung: literal_index @ 0x1110
int32_t literal_index(int32_t arg0) {
long ret;
ret = 0xffffffff;
if (((unsigned long)((unsigned long)((unsigned int)(arg0))) <= (unsigned long)(5))) {
ret = (int)((signed char)(*(char *)(((unsigned long)((unsigned int)(arg0)) + "HELLO!"))));
}
return ret;
} literal_size_versus_length pass 4 lines
// glaurung: literal_size_versus_length @ 0x1100
int32_t literal_size_versus_length(void) {
return 706;
} gcc -O2
2/4count_matching fail 54 lines
// glaurung: count_matching @ 0x1140
int32_t count_matching(const uint8_t * arg0, int32_t arg1, int32_t arg2) {
int index;
int matches;
long t60;
long var0;
long var1;
long var11;
long var12;
int var13;
long var14;
int var15;
long var2;
int var4;
long var7;
long var8;
var0 = (unsigned long)((unsigned int)(arg1));
if ((arg0 == 0)) {
return 0xffffffff;
}
if (((unsigned long)(16) < (unsigned long)((unsigned long)((unsigned int)(arg1))))) {
return 0xffffffff;
}
var1 = (unsigned long)((unsigned int)(arg1));
if (((unsigned long)((unsigned int)(arg1)) == 0)) {
t60 = ((unsigned long)((unsigned long)((unsigned int)(arg2))) < (unsigned long)(1));
var2 = (var1 + 1);
var4 = ((unsigned int)(var2) - t60);
return (unsigned int)(var4);
}
var7 = 0x2012;
var8 = (long)((((long)arg0 + (unsigned long)((unsigned int)((var0 - 1)))) + 1));
var11 = 0;
var12 = (long)arg0;
do {
var13 = (unsigned int)((unsigned char)(*(char *)((var12))));
var14 = (long)("aeiou");
var15 = 97;
while (1) {
var14 = (var14 + 1);
var11 = (unsigned long)((unsigned int)((var11 + ((unsigned char)((var13 & 255)) == (unsigned char)((var15 & 255))))));
if ((var14 == var7)) {
break;
}
var15 = (unsigned int)((unsigned char)(*(char *)((var14))));
}
var12 = (var12 + 1);
var1 = var11;
} while ((var12 != var8));
t60 = ((unsigned long)((unsigned long)((unsigned int)(arg2))) < (unsigned long)(1));
var2 = (var1 + 1);
var4 = ((unsigned int)(var2) - t60);
return (unsigned int)(var4);
} escape_sequences fail 7 lines
// glaurung: escape_sequences @ 0x11b0
int32_t escape_sequences(int32_t arg0) {
if (((unsigned long)(4) < (unsigned long)((unsigned long)((unsigned int)(arg0))))) {
return 0xffffffff;
}
return (int)((signed char)(*(char *)(("\t\n\\" + (long)(arg0)))));
} literal_index pass 7 lines
// glaurung: literal_index @ 0x1110
int32_t literal_index(int32_t arg0) {
if (((unsigned long)(5) < (unsigned long)((unsigned long)((unsigned int)(arg0))))) {
return 0xffffffff;
}
return (int)((signed char)(*(char *)(("HELLO!" + (long)(arg0)))));
} literal_size_versus_length pass 5 lines
// glaurung: literal_size_versus_length @ 0x1100
int32_t literal_size_versus_length(void) {
int length;
return 706;
} clang -O0
3/4count_matching pass 36 lines
// glaurung: count_matching @ 0x1180
int32_t count_matching(const uint8_t * arg0, int32_t arg1, int32_t arg2) {
int matches;
int index;
int vowel;
int local_4;
// x86-64 prologue: save rbp
matches = 0;
if ((arg0 == 0)) {
local_4 = -1;
// x86-64 epilogue: restore rbp
return (unsigned int)(local_4);
}
if (((long)(arg1) < 0)) {
local_4 = -1;
// x86-64 epilogue: restore rbp
return (unsigned int)(local_4);
}
if (((((unsigned long)((unsigned int)(arg1)) == 16) | ((long)(arg1) < 16)) == 0)) {
local_4 = -1;
// x86-64 epilogue: restore rbp
return (unsigned int)(local_4);
}
index = 0;
while ((index < arg1)) {
for (vowel = 0; ((long)(vowel) < 5); vowel++) {
if (((unsigned int)((unsigned char)(arg0[index])) == (unsigned int)((unsigned char)(*(char *)(("aeiou" + (long)(vowel))))))) {
matches = ((unsigned int)(matches) + 1);
}
}
index = ((unsigned int)(index) + 1);
}
local_4 = ((unsigned int)(matches) + ((unsigned long)((unsigned int)(arg2)) != 0));
// x86-64 epilogue: restore rbp
return (unsigned int)(local_4);
} escape_sequences fail 18 lines
// glaurung: escape_sequences @ 0x1250
int32_t escape_sequences(int32_t arg0) {
int local_4;
// x86-64 prologue: save rbp
if (((long)(arg0) < 0)) {
local_4 = -1;
// x86-64 epilogue: restore rbp
return (unsigned int)(local_4);
}
if (((((unsigned long)((unsigned int)(arg0)) == 4) | ((long)(arg0) < 4)) == 0)) {
local_4 = -1;
// x86-64 epilogue: restore rbp
return (unsigned int)(local_4);
}
local_4 = (signed char)(*(char *)(("\t\n\\" + (long)(arg0))));
// x86-64 epilogue: restore rbp
return (unsigned int)(local_4);
} literal_index pass 18 lines
// glaurung: literal_index @ 0x1140
int32_t literal_index(int32_t arg0) {
int local_4;
// x86-64 prologue: save rbp
if (((long)(arg0) < 0)) {
local_4 = -1;
// x86-64 epilogue: restore rbp
return (unsigned int)(local_4);
}
if (((((unsigned long)((unsigned int)(arg0)) == 5) | ((long)(arg0) < 5)) == 0)) {
local_4 = -1;
// x86-64 epilogue: restore rbp
return (unsigned int)(local_4);
}
local_4 = (signed char)(*(char *)(("HELLO!" + (long)(arg0))));
// x86-64 epilogue: restore rbp
return (unsigned int)(local_4);
} literal_size_versus_length pass 9 lines
// glaurung: literal_size_versus_length @ 0x1100
int32_t literal_size_versus_length(void) {
int length;
// x86-64 prologue: save rbp
for (length = 0; ((unsigned long)((unsigned int)((signed char)(*(char *)(("abcdef" + (long)(length)))))) != 0); length++) {
}
// x86-64 epilogue: restore rbp
return (unsigned int)(((unsigned long)((unsigned int)(length)) + 700));
} gcc -O0
3/4count_matching pass 31 lines
// glaurung: count_matching @ 0x115f
int32_t count_matching(const uint8_t * arg0, int32_t arg1, int32_t arg2) {
int matches;
int index;
int vowel;
// x86-64 prologue: save rbp
matches = 0;
if ((arg0 == 0)) {
// x86-64 epilogue: restore rbp
return 0xffffffff;
}
if (((long)(arg1) < 0)) {
// x86-64 epilogue: restore rbp
return 0xffffffff;
}
if (((((unsigned long)((unsigned int)(arg1)) == 16) | ((long)(arg1) < 16)) == 0)) {
// x86-64 epilogue: restore rbp
return 0xffffffff;
}
index = 0;
while ((index < arg1)) {
for (vowel = 0; ((((unsigned long)((unsigned int)(vowel)) == 4) | ((long)(vowel) < 4)) != 0); vowel++) {
if (((unsigned char)(((unsigned int)((unsigned char)(arg0[index])) & 255)) == (unsigned char)(((unsigned int)((unsigned char)(*(char *)(((long)(vowel) + "aeiou")))) & 255)))) {
matches = (matches + 1);
}
}
index = (index + 1);
}
// x86-64 epilogue: restore rbp
return (unsigned int)(((unsigned long)((unsigned int)(matches)) + ((unsigned long)((unsigned int)(arg2)) != 0)));
} escape_sequences fail 14 lines
// glaurung: escape_sequences @ 0x11f3
int32_t escape_sequences(int32_t arg0) {
// x86-64 prologue: save rbp
if (((long)(arg0) < 0)) {
// x86-64 epilogue: restore rbp
return 0xffffffff;
}
if (((((unsigned long)((unsigned int)(arg0)) == 4) | ((long)(arg0) < 4)) == 0)) {
// x86-64 epilogue: restore rbp
return 0xffffffff;
}
// x86-64 epilogue: restore rbp
return (int)((signed char)(((unsigned int)((unsigned char)(*(char *)(((long)(arg0) + "\t\n\\")))) & 255)));
} literal_index pass 14 lines
// glaurung: literal_index @ 0x112c
int32_t literal_index(int32_t arg0) {
// x86-64 prologue: save rbp
if (((long)(arg0) < 0)) {
// x86-64 epilogue: restore rbp
return 0xffffffff;
}
if (((((unsigned long)((unsigned int)(arg0)) == 5) | ((long)(arg0) < 5)) == 0)) {
// x86-64 epilogue: restore rbp
return 0xffffffff;
}
// x86-64 epilogue: restore rbp
return (int)((signed char)(((unsigned int)((unsigned char)(*(char *)(((long)(arg0) + "HELLO!")))) & 255)));
} literal_size_versus_length pass 9 lines
// glaurung: literal_size_versus_length @ 0x10f9
int32_t literal_size_versus_length(void) {
int length;
// x86-64 prologue: save rbp
for (length = 0; ((unsigned long)((unsigned char)(((unsigned int)((unsigned char)(*(char *)(((long)(length) + "abcdef")))) & 255))) != 0); length++) {
}
// x86-64 epilogue: restore rbp
return (unsigned int)(((unsigned long)((unsigned int)(length)) + 700));
}