}
 
 
-static inline void clear_bit24(uint32_t *bitarray, uint32_t index)
-{
-       bitarray[index>>5] &= ~(0x80000000>>(index&0x0000001f));
-}
-
-
 static inline uint32_t test_bit24(uint32_t *bitarray, uint32_t index)
 {
        return  bitarray[index>>5] & (0x80000000>>(index&0x0000001f));
 }
 
 
-static inline uint32_t next_not_state(uint32_t *bitarray, uint32_t state)
-{
-       if (++state == 1<<24) return 1<<24;
-       uint32_t index = state >> 5;
-       uint_fast8_t bit = state & 0x1f;
-       uint32_t line = bitarray[index] << bit;
-       while (bit <= 0x1f) {
-               if ((line & 0x80000000) == 0) return state;
-               state++;
-               bit++;
-               line <<= 1;
-       }
-       index++;
-       while (bitarray[index] == 0xffffffff && state < 1<<24) {
-               index++;
-               state += 0x20;
-       }
-       if (state >= 1<<24) return 1<<24;
-#if defined __GNUC__
-       return state + __builtin_clz(~bitarray[index]);
-#else
-       bit = 0x00;
-       line = bitarray[index];
-       while (bit <= 0x1f) {
-               if ((line & 0x80000000) == 0) return state;
-               state++;
-               bit++;
-               line <<= 1;
-       }
-       return 1<<24;
-#endif
-}
-
-
 
 
 #define BITFLIP_2ND_BYTE                               0x0200
 
        {"6EXX",        APDUCODE_TYPE_ERROR,            "Instruction class not supported (procedure byte), (ISO 7816-3)"},
        {"6F--",        APDUCODE_TYPE_ERROR,            "Internal exception"},
        {"6F00",        APDUCODE_TYPE_ERROR,            "Command aborted - more exact diagnosis not possible (e.g., operating system error)."},
-       {"6FFF",        APDUCODE_TYPE_ERROR,            "Card dead (overuse, \85)"},
+       {"6FFF",        APDUCODE_TYPE_ERROR,            "Card dead (overuse, ...)"},
        {"6FXX",        APDUCODE_TYPE_ERROR,            "No precise diagnosis (procedure byte), (ISO 7816-3)"},
        {"9---",        APDUCODE_TYPE_NONE,             ""},
        {"9000",        APDUCODE_TYPE_INFO,                     "Command successfully executed (OK)."},
 
                }
                infiles = calloc(num_input_files, sizeof(FILE*));
                for (uint16_t i = 0; i < num_input_files; i++) { 
-                       infiles[i] = fopen(argv[i+hardnested_mode?2:1], "rb");
+                       infiles[i] = fopen(argv[i+(hardnested_mode?2:1)], "rb");
                        if (infiles[i] == NULL) {
-                               fprintf(stderr, "Error. Cannot open input file %s", argv[i+hardnested_mode?2:1]);
+                               fprintf(stderr, "Error. Cannot open input file %s", argv[i+(hardnested_mode?2:1)]);
                                return(EXIT_FAILURE);
                        }
                }
 
        return true;
 }
 
-
-static void* __attribute__((force_align_arg_pointer)) crack_states_thread(void* x){
+static void* 
+#ifdef __has_attribute
+#if __has_attribute(force_align_arg_pointer)
+__attribute__((force_align_arg_pointer)) 
+#endif
+#endif
+crack_states_thread(void* x){
 
        struct arg {
                bool silent;
 
 
 #ifdef __APPLE__
 
+#ifndef CLOCK_MONOTONIC
        #define CLOCK_MONOTONIC (1)
+#endif
+#ifndef CLOCK_REALTIME
        #define CLOCK_REALTIME (2)
+#endif
 
        #include <sys/time.h>
        #include <mach/clock.h>