View difference between Paste ID: EUNZ7XRT and qtZM5mat
SHOW: | | - or go back to the newest paste.
1
#include <stdio.h>
2
3
4
#define BUF_SIZE 4095
5
6
unsigned int hash(const char * str) {
7
    unsigned int arr[256];
8
    unsigned int eax, b;
9
    unsigned int i = 0;
10
    unsigned int j = 0;
11
    do {
12
        eax = i;
13
        b = 0;
14
        do {
15
            if ((eax & 1) != 0) {
16
                eax >>= 1;
17
                eax ^= -306674912;
18
            } else {
19
                eax >>= 1;
20
            }
21
            b++;
22
        } while (b != 8);
23-
    arr[i] = eax;
23+
        arr[i] = eax;
24-
    i++;
24+
        i++;
25
    } while (i != 256);
26
    eax = -1;
27-
    i |= str[j];
27+
    for (i |= str[j]; (i & 0x000000FF) != 0; i = str[j]) {
28-
    for (i |= str[j]; i && 0x000000FF != 0; i ^= eax) {
28+
        i ^= eax;
29
        j++;
30
        i &= 0x000000FF;
31
        eax >>= 8;
32
        eax ^= arr[i];
33-
        i = str[j];
33+
34
    return ~eax;
35
}
36
37
int main(void) {
38
    char arr_s[BUF_SIZE];
39
    fgets(arr_s, BUF_SIZE * sizeof(char), stdin);
40
    printf("%x\n", hash(arr_s));
41
    return 0;
42
}