- #include "brqsort.h" 
- #include <stdlib.h> 
-   
- // Global variables 
-   
- // IDA: void __cdecl BrQsort(void *basep, unsigned int nelems, unsigned int size, br_qsort_cbfn *comp) 
- void BrQsort(void* basep, unsigned int nelems, unsigned int size, br_qsort_cbfn comp) { 
-     qsort(- basep ,-  nelems ,-  size ,-  comp );
 
-     // char* stack[40]; 
-     // char** sp; 
-     // char* i; 
-     // char* j; 
-     // char* limit; 
-     // unsigned int thresh; 
-     // char* base; 
-     // unsigned int width; 
-     // void (*swap_func)(char*, char*, unsigned int); 
-   
-     // width = size; 
-     // swap_func = swap_chars; 
-   
-     // if (size == 4) { // Do we have exactly 1 32bit in worth of data at a time? 
-     //     swap_func = swap_int_1; 
-     // } else if (!(size & 3)) { // Is our data divisible by 4 so can be swapped 32bit at a time? 
-     //     width >>= 2; 
-     //     swap_func = swap_ints; 
-     // } 
-   
-     // base = (char*)basep; 
-     // thresh = 7 * size; 
-     // sp = stack; 
-   
-     // for (limit = (char*)basep + size * nelems;; limit = sp[1]) { 
-     //     while (limit - base > thresh) { 
-     //         swap_func( 
-     //             &base[size * ((limit - base) / size >> 1)], 
-     //             base, 
-     //             width); 
-     //         i = &base[size]; 
-     //         j = &limit[-size]; 
-   
-     //         if (comp(&base[size], &limit[-size]) > 0) { 
-     //             swap_func(i, j, width); 
-     //         } 
-   
-     //         if (comp(base, j) > 0) { 
-     //             swap_func(base, j, width); 
-     //         } 
-   
-     //         if (comp(i, base) > 0) { 
-     //             swap_func(i, base, width); 
-     //         } 
-   
-     //         while (1) { 
-     //             do { 
-     //                 i += size; 
-     //             } while (comp(i, base) < 0); 
-   
-     //             do { 
-     //                 j -= size; 
-     //             } while (comp(j, base) > 0); 
-   
-     //             if (i > j) { 
-     //                 break; 
-     //             } 
-   
-     //             swap_func(i, j, width); 
-     //         } 
-   
-     //         swap_func(base, j, width); 
-   
-     //         if (j - base <= limit - i) { 
-     //             *sp = i; 
-     //             sp[1] = limit; 
-     //             limit = j; 
-     //         } else { 
-     //             *sp = base; 
-     //             sp[1] = j; 
-     //             base = i; 
-     //         } 
-   
-     //         sp += 2; 
-     //     } 
-   
-     //     j = base; 
-   
-     //     for (i = &base[size]; i < limit; i += size) { 
-     //         while (comp(j, &j[size]) > 0) { 
-     //             swap_func(j, &j[size], width); 
-   
-     //             if (j == base) { 
-     //                 break; 
-     //             } 
-   
-     //             j -= size; 
-     //         } 
-   
-     //         j = i; 
-     //     } 
-   
-     //     if (stack == sp) { 
-     //         break; 
-     //     } 
-   
-     //     sp -= 2; 
-     //     base = *sp; 
-     // } 
- } 
-   
- // IDA: void __usercall swap_chars(char *a@<EAX>, char *b@<EDX>, unsigned int nbytes@<EBX>) 
- void swap_chars(char* a, char* b, unsigned int nbytes) { 
-     char tmp; 
-   
-     do { 
-         tmp = *a; 
-         *a++ = *b; 
-         *b++ = tmp; 
-     } while (--nbytes); 
- } 
-   
- // IDA: void __usercall swap_ints(char *ap@<EAX>, char *bp@<EDX>, unsigned int nints@<EBX>) 
- void swap_ints(char* ap, char* bp, unsigned int nints) { 
-     int* a = (int*)ap; 
-     int* b = (int*)bp; 
-     int tmp; 
-   
-     do { 
-         tmp = *a; 
-         *a++ = *b; 
-         *b++ = tmp; 
-     } while (--nints); 
- } 
-   
- // IDA: void __usercall swap_int_1(char *ap@<EAX>, char *bp@<EDX>, unsigned int nints@<EBX>) 
- void swap_int_1(char* ap, char* bp, unsigned int nints) { 
-     int* a = (int*)ap; 
-     int* b = (int*)bp; 
-     int tmp; 
-   
-     tmp = *a; 
-     *a = *b; 
-     *b = tmp; 
- } 
-