GRAYBYTE WORDPRESS FILE MANAGER7343

Server IP : 149.255.58.128 / Your IP : 216.73.216.34
System : Linux cloud516.thundercloud.uk 5.14.0-427.26.1.el9_4.x86_64 #1 SMP PREEMPT_DYNAMIC Wed Jul 17 15:51:13 EDT 2024 x86_64
PHP Version : 8.2.28
Disable Function : allow_url_include, apache_child_terminate, apache_setenv, exec, passthru, pcntl_exec, posix_kill, posix_mkfifo, posix_getpwuid, posix_setpgid, posix_setsid, posix_setuid, posix_setgid, posix_seteuid, posix_setegid, posix_uname, proc_close, proc_get_status, proc_open, proc_terminate, shell_exec, show_source, system
cURL : ON | WGET : ON | Sudo : OFF | Pkexec : OFF
Directory : /lib64/perl5/CORE/
Upload Files :
Current_dir [ Not Writeable ] Document_root [ Writeable ]

Command :


Current File : /lib64/perl5/CORE//zaphod32_hash.h
#ifndef DEBUG_ZAPHOD32_HASH
#define DEBUG_ZAPHOD32_HASH 0

#if DEBUG_ZAPHOD32_HASH == 1
#include <stdio.h>
#define ZAPHOD32_WARN6(pat,v0,v1,v2,v3,v4,v5)    printf(pat, v0, v1, v2, v3, v4, v5)
#define ZAPHOD32_WARN5(pat,v0,v1,v2,v3,v4)       printf(pat, v0, v1, v2, v3, v4)
#define ZAPHOD32_WARN4(pat,v0,v1,v2,v3)          printf(pat, v0, v1, v2, v3)
#define ZAPHOD32_WARN3(pat,v0,v1,v2)             printf(pat, v0, v1, v2)
#define ZAPHOD32_WARN2(pat,v0,v1)                printf(pat, v0, v1)
#define NOTE3(pat,v0,v1,v2)             printf(pat, v0, v1, v2)
#elif DEBUG_ZAPHOD32_HASH == 2
#define ZAPHOD32_WARN6(pat,v0,v1,v2,v3,v4,v5)
#define ZAPHOD32_WARN5(pat,v0,v1,v2,v3,v4)
#define ZAPHOD32_WARN4(pat,v0,v1,v2,v3)
#define ZAPHOD32_WARN3(pat,v0,v1,v2)
#define ZAPHOD32_WARN2(pat,v0,v1)
#define NOTE3(pat,v0,v1,v2)             printf(pat, v0, v1, v2)
#else
#define ZAPHOD32_WARN6(pat,v0,v1,v2,v3,v4,v5)
#define ZAPHOD32_WARN5(pat,v0,v1,v2,v3,v4)
#define ZAPHOD32_WARN4(pat,v0,v1,v2,v3)
#define ZAPHOD32_WARN3(pat,v0,v1,v2)
#define NOTE3(pat,v0,v1,v2)
#define ZAPHOD32_WARN2(pat,v0,v1)
#endif

/* Find best way to ROTL32/ROTL64 */
#ifndef ROTL32
#if defined(_MSC_VER)
#include <stdlib.h>  /* Microsoft put _rotl declaration in here */
#define ROTL32(x,r)  _rotl(x,r)
#define ROTR32(x,r)  _rotr(x,r)
#else
/* gcc recognises this code and generates a rotate instruction for CPUs with one */
#define ROTL32(x,r)  (((U32)(x) << (r)) | ((U32)(x) >> (32 - (r))))
#define ROTR32(x,r)  (((U32)(x) << (32 - (r))) | ((U32)(x) >> (r)))
#endif
#endif

#ifndef PERL_SEEN_HV_FUNC_H
#if !defined(U64)
#include <stdint.h>
#define U64 uint64_t
#endif

#if !defined(U32)
#define U32 uint32_t
#endif

#if !defined(U8)
#define U8 unsigned char
#endif

#if !defined(U16)
#define U16 uint16_t
#endif

#ifndef STRLEN
#define STRLEN int
#endif
#endif

#ifndef ZAPHOD32_STATIC_INLINE
#ifdef PERL_STATIC_INLINE
#define ZAPHOD32_STATIC_INLINE PERL_STATIC_INLINE
#else
#define ZAPHOD32_STATIC_INLINE static inline
#endif
#endif

#ifndef STMT_START
#define STMT_START do
#define STMT_END while(0)
#endif

/* This is two marsaglia xor-shift permutes, with a prime-multiple
 * sandwiched inside. The end result of doing this twice with different
 * primes is a completely avalanched v.  */
#define ZAPHOD32_SCRAMBLE32(v,prime) STMT_START {  \
    v ^= (v>>9);                        \
    v ^= (v<<21);                       \
    v ^= (v>>16);                       \
    v *= prime;                         \
    v ^= (v>>17);                       \
    v ^= (v<<15);                       \
    v ^= (v>>23);                       \
} STMT_END

#define ZAPHOD32_FINALIZE(v0,v1,v2) STMT_START {          \
    ZAPHOD32_WARN3("v0=%08x v1=%08x v2=%08x - ZAPHOD32 FINALIZE\n", \
            (unsigned int)v0, (unsigned int)v1, (unsigned int)v2);  \
    v2 += v0;                       \
    v1 -= v2;                       \
    v1 = ROTL32(v1,  6);           \
    v2 ^= v1;                       \
    v2 = ROTL32(v2, 28);           \
    v1 ^= v2;                       \
    v0 += v1;                       \
    v1 = ROTL32(v1, 24);           \
    v2 += v1;                       \
    v2 = ROTL32(v2, 18) + v1;      \
    v0 ^= v2;                       \
    v0 = ROTL32(v0, 20);           \
    v2 += v0;                       \
    v1 ^= v2;                       \
    v0 += v1;                       \
    v0 = ROTL32(v0,  5);           \
    v2 += v0;                       \
    v2 = ROTL32(v2, 22);           \
    v0 -= v1;                       \
    v1 -= v2;                       \
    v1 = ROTL32(v1, 17);           \
} STMT_END

#define ZAPHOD32_MIX(v0,v1,v2,text) STMT_START {                              \
    ZAPHOD32_WARN4("v0=%08x v1=%08x v2=%08x - ZAPHOD32 %s MIX\n",                   \
            (unsigned int)v0,(unsigned int)v1,(unsigned int)v2, text );  \
    v0 = ROTL32(v0,16) - v2;   \
    v1 = ROTR32(v1,13) ^ v2;   \
    v2 = ROTL32(v2,17) + v1;   \
    v0 = ROTR32(v0, 2) + v1;   \
    v1 = ROTR32(v1,17) - v0;   \
    v2 = ROTR32(v2, 7) ^ v0;   \
} STMT_END


ZAPHOD32_STATIC_INLINE
void zaphod32_seed_state (
    const U8 *seed_ch,
    U8 *state_ch
) {
    const U32 *seed= (const U32 *)seed_ch;
    U32 *state= (U32 *)state_ch;
  
    /* hex expansion of pi, skipping first two digits. pi= 3.2[43f6...]*/
    /* pi value in hex from here:
     * http://turner.faculty.swau.edu/mathematics/materialslibrary/pi/pibases.html*/
    /* Ensure that the three state vectors are nonzero regardless of the seed. */
    /* The idea of these two steps is to ensure that the 0 state comes from a seed
     * utterly unlike that of the value we replace it with.*/
    state[0]= seed[0] ^ 0x43f6a888;
    state[1]= seed[1] ^ 0x5a308d31;
    state[2]= seed[2] ^ 0x3198a2e0;
    if (!state[0]) state[0] = 1;
    if (!state[1]) state[1] = 2;
    if (!state[2]) state[2] = 4;
    /* these are pseduo-randomly selected primes between 2**31 and 2**32
     * (I generated a big list and then randomly chose some from the list) */
    ZAPHOD32_SCRAMBLE32(state[0],0x9fade23b);
    ZAPHOD32_SCRAMBLE32(state[1],0xaa6f908d);
    ZAPHOD32_SCRAMBLE32(state[2],0xcdf6b72d);

    /* now that we have scrambled we do some mixing to avalanche the
     * state bits to gether */
    ZAPHOD32_MIX(state[0],state[1],state[2],"ZAPHOD32 SEED-STATE A 1/4");
    ZAPHOD32_MIX(state[0],state[1],state[2],"ZAPHOD32 SEED-STATE A 2/4");
    ZAPHOD32_MIX(state[0],state[1],state[2],"ZAPHOD32 SEED-STATE A 3/4");
    ZAPHOD32_MIX(state[0],state[1],state[2],"ZAPHOD32 SEED-STATE A 4/4");

    /* and then scramble them again with different primes */
    ZAPHOD32_SCRAMBLE32(state[0],0xc95d22a9);
    ZAPHOD32_SCRAMBLE32(state[1],0x8497242b);
    ZAPHOD32_SCRAMBLE32(state[2],0x9c5cc4e9);

    /* and a thorough final mix */
    ZAPHOD32_MIX(state[0],state[1],state[2],"ZAPHOD32 SEED-STATE B 1/5");
    ZAPHOD32_MIX(state[0],state[1],state[2],"ZAPHOD32 SEED-STATE B 2/5");
    ZAPHOD32_MIX(state[0],state[1],state[2],"ZAPHOD32 SEED-STATE B 3/5");
    ZAPHOD32_MIX(state[0],state[1],state[2],"ZAPHOD32 SEED-STATE B 4/5");
    ZAPHOD32_MIX(state[0],state[1],state[2],"ZAPHOD32 SEED-STATE B 5/5");

}

ZAPHOD32_STATIC_INLINE
U32 zaphod32_hash_with_state(
    const U8 *state_ch,
    const U8 *key,
    const STRLEN key_len
) {
    U32 *state= (U32 *)state_ch;
    const U8 *end;
    STRLEN len = key_len;
    U32 v0= state[0];
    U32 v1= state[1];
    U32 v2= state[2] ^ (0xC41A7AB1 * ((U32)key_len + 1));

    ZAPHOD32_WARN4("v0=%08x v1=%08x v2=%08x ln=%08x HASH START\n",
            (unsigned int)state[0], (unsigned int)state[1],
            (unsigned int)state[2], (unsigned int)key_len);
    {
        switch (len) {
            default: goto zaphod32_read8;
            case 12: v2 += (U32)key[11] << 24;  /* FALLTHROUGH */
            case 11: v2 += (U32)key[10] << 16;  /* FALLTHROUGH */
            case 10: v2 += (U32)U8TO16_LE(key+8);
                     v1 -= U8TO32_LE(key+4);
                     v0 += U8TO32_LE(key+0);
                     goto zaphod32_finalize;
            case 9: v2 += (U32)key[8];          /* FALLTHROUGH */
            case 8: v1 -= U8TO32_LE(key+4);
                    v0 += U8TO32_LE(key+0);
                    goto zaphod32_finalize;
            case 7: v2 += (U32)key[6];          /* FALLTHROUGH */
            case 6: v0 += (U32)U8TO16_LE(key+4);
                    v1 -= U8TO32_LE(key+0);
                    goto zaphod32_finalize;
            case 5: v0 += (U32)key[4];          /* FALLTHROUGH */
            case 4: v1 -= U8TO32_LE(key+0);
                    goto zaphod32_finalize;
            case 3: v2 += (U32)key[2];          /* FALLTHROUGH */
            case 2: v0 += (U32)U8TO16_LE(key);
                    break;
            case 1: v0 += (U32)key[0];
                    break;
            case 0: v2 ^= 0xFF;
                    break;

        }
        v0 -= v2;
        v2 = ROTL32(v2, 8) ^ v0;
        v0 = ROTR32(v0,16) + v2;
        v2 += v0;
        v0 += v0 >> 9;
        v0 += v2;
        v2 ^= v0;
        v2 += v2 << 4;
        v0 -= v2;
        v2 = ROTR32(v2, 8) ^ v0;
        v0 = ROTL32(v0,16) ^ v2;
        v2 = ROTL32(v2,10) + v0;
        v0 = ROTR32(v0,30) + v2;
        v2 = ROTR32(v2,12);
        return v0 ^ v2;
    }

/*  if (len >= 8) */ /* this block is only reached by a goto above, so this condition
                        is commented out, but if the above block is removed it would
                        be necessary to use this. */
    {
zaphod32_read8:
        len = key_len & 0x7;
        end = key + key_len - len;
        do {
            v1 -= U8TO32_LE(key+0);
            v0 += U8TO32_LE(key+4);
            ZAPHOD32_MIX(v0,v1,v2,"MIX 2-WORDS A");
            key += 8;
        } while ( key < end );
    }

    if ( len >= 4 ) {
        v1 -= U8TO32_LE(key);
        key += 4;
    }

    v0 += (U32)(key_len) << 24;
    switch (len & 0x3) {
        case 3: v2 += (U32)key[2];          /* FALLTHROUGH */
        case 2: v0 += (U32)U8TO16_LE(key);
                break;
        case 1: v0 += (U32)key[0];
                break;
        case 0: v2 ^= 0xFF;
                break;
    }
zaphod32_finalize:
    ZAPHOD32_FINALIZE(v0,v1,v2);

    ZAPHOD32_WARN4("v0=%08x v1=%08x v2=%08x hh=%08x - FINAL\n\n",
            (unsigned int)v0, (unsigned int)v1, (unsigned int)v2,
            (unsigned int)v0 ^ v1 ^ v2);

    return v0 ^ v1 ^ v2;
}

ZAPHOD32_STATIC_INLINE U32 zaphod32_hash(
    const U8 *seed_ch,
    const U8 *key,
    const STRLEN key_len
) {
    U32 state[3];
    zaphod32_seed_state(seed_ch,(U8*)state);
    return zaphod32_hash_with_state((U8*)state,key,key_len);
}

#endif

[ Back ]
Name
Size
Last Modified
Owner / Group
Permissions
Options
..
--
May 30 2024 07:43:02
0 / root
0755
EXTERN.h
1.592 KB
April 03 2024 14:35:12
0 / root
0644
INTERN.h
1.278 KB
April 03 2024 14:35:12
0 / root
0644
XSUB.h
24.03 KB
April 03 2024 14:35:12
0 / root
0644
av.h
3.274 KB
April 03 2024 14:35:12
0 / root
0644
bitcount.h
0.83 KB
April 03 2024 14:35:12
0 / root
0644
charclass_invlists.h
4.15 MB
April 03 2024 14:35:12
0 / root
0644
config.h
160.343 KB
April 03 2024 14:35:12
0 / root
0644
cop.h
41.013 KB
April 03 2024 14:35:12
0 / root
0644
cv.h
12.043 KB
April 03 2024 14:35:12
0 / root
0644
dosish.h
5.297 KB
April 03 2024 14:35:12
0 / root
0644
ebcdic_tables.h
48.597 KB
April 03 2024 14:35:12
0 / root
0644
embed.h
98.864 KB
April 03 2024 14:35:12
0 / root
0644
embedvar.h
21.321 KB
April 03 2024 14:35:12
0 / root
0644
fakesdio.h
3.135 KB
April 03 2024 14:35:12
0 / root
0644
feature.h
10.795 KB
April 03 2024 14:35:12
0 / root
0644
form.h
1.429 KB
April 03 2024 14:35:12
0 / root
0644
git_version.h
0.349 KB
April 03 2024 14:35:12
0 / root
0644
gv.h
10.46 KB
April 03 2024 14:35:12
0 / root
0644
handy.h
126.719 KB
April 03 2024 14:35:12
0 / root
0644
hv.h
24.993 KB
April 03 2024 14:35:12
0 / root
0644
hv_func.h
11.26 KB
April 03 2024 14:35:12
0 / root
0644
hv_macro.h
3.036 KB
April 03 2024 14:35:12
0 / root
0644
inline.h
72.992 KB
April 03 2024 14:35:12
0 / root
0644
intrpvar.h
31.472 KB
April 03 2024 14:35:12
0 / root
0644
invlist_inline.h
7.255 KB
April 03 2024 14:35:12
0 / root
0644
iperlsys.h
48.234 KB
April 03 2024 14:35:12
0 / root
0644
keywords.h
6.454 KB
April 03 2024 14:35:12
0 / root
0644
l1_char_class_tab.h
119.641 KB
April 03 2024 14:35:12
0 / root
0644
libperl.so
3.56 MB
April 03 2024 14:35:42
0 / root
0755
malloc_ctl.h
1.488 KB
April 03 2024 14:35:12
0 / root
0644
metaconfig.h
0.676 KB
April 03 2024 14:35:12
0 / root
0644
mg.h
2.942 KB
April 03 2024 14:35:12
0 / root
0644
mg_data.h
4.903 KB
April 03 2024 14:35:12
0 / root
0644
mg_raw.h
4.274 KB
April 03 2024 14:35:12
0 / root
0644
mg_vtable.h
9.338 KB
April 03 2024 14:35:12
0 / root
0644
mydtrace.h
1.653 KB
April 03 2024 14:35:12
0 / root
0644
nostdio.h
3.313 KB
April 03 2024 14:35:12
0 / root
0644
op.h
37.352 KB
April 03 2024 14:35:12
0 / root
0644
op_reg_common.h
5.772 KB
April 03 2024 14:35:12
0 / root
0644
opcode.h
91.727 KB
April 03 2024 14:35:12
0 / root
0644
opnames.h
8.718 KB
April 03 2024 14:35:12
0 / root
0644
overload.h
3.199 KB
April 03 2024 14:35:12
0 / root
0644
pad.h
16.828 KB
April 03 2024 14:35:12
0 / root
0644
parser.h
6.829 KB
April 03 2024 14:35:12
0 / root
0644
patchlevel.h
8.851 KB
April 03 2024 14:35:12
0 / root
0644
perl.h
276.921 KB
April 03 2024 14:35:12
0 / root
0644
perl_inc_macro.h
6.077 KB
April 03 2024 14:35:12
0 / root
0644
perl_langinfo.h
2.846 KB
April 03 2024 14:35:12
0 / root
0644
perlapi.h
7.5 KB
April 03 2024 14:35:12
0 / root
0644
perldtrace.h
3.224 KB
April 03 2024 14:35:12
0 / root
0644
perlio.h
9.331 KB
April 03 2024 14:35:12
0 / root
0644
perliol.h
13.438 KB
April 03 2024 14:35:12
0 / root
0644
perlsdio.h
0.515 KB
April 03 2024 14:35:12
0 / root
0644
perlvars.h
12.631 KB
April 03 2024 14:35:12
0 / root
0644
perly.h
4.579 KB
April 03 2024 14:35:12
0 / root
0644
pp.h
28.302 KB
April 03 2024 14:35:12
0 / root
0644
pp_proto.h
11.784 KB
April 03 2024 14:35:12
0 / root
0644
proto.h
270.998 KB
April 03 2024 14:35:12
0 / root
0644
reentr.h
84.608 KB
April 03 2024 14:35:12
0 / root
0644
regcharclass.h
163.816 KB
April 03 2024 14:35:12
0 / root
0644
regcomp.h
51.811 KB
April 03 2024 14:35:12
0 / root
0644
regexp.h
35.751 KB
April 03 2024 14:35:12
0 / root
0644
regnodes.h
39.404 KB
April 03 2024 14:35:12
0 / root
0644
sbox32_hash.h
55.951 KB
April 03 2024 14:35:12
0 / root
0644
scope.h
11.614 KB
April 03 2024 14:35:12
0 / root
0644
stadtx_hash.h
9.005 KB
April 03 2024 14:35:12
0 / root
0644
sv.h
86.815 KB
April 03 2024 14:35:12
0 / root
0644
thread.h
11.812 KB
April 03 2024 14:35:12
0 / root
0644
time64.h
1.141 KB
April 03 2024 14:35:12
0 / root
0644
time64_config.h
2 KB
April 03 2024 14:35:12
0 / root
0644
uconfig.h
160.08 KB
April 03 2024 14:35:12
0 / root
0644
uni_keywords.h
541.71 KB
April 03 2024 14:35:12
0 / root
0644
unicode_constants.h
7.843 KB
April 03 2024 14:35:12
0 / root
0644
unixish.h
5.146 KB
April 03 2024 14:35:12
0 / root
0644
utf8.h
49.249 KB
April 03 2024 14:35:12
0 / root
0644
utfebcdic.h
64.098 KB
April 03 2024 14:35:12
0 / root
0644
util.h
10.327 KB
April 03 2024 14:35:12
0 / root
0644
uudmap.h
0.883 KB
April 03 2024 14:35:12
0 / root
0644
vutil.h
7.806 KB
April 03 2024 14:35:12
0 / root
0644
warnings.h
11.195 KB
April 03 2024 14:35:12
0 / root
0644
zaphod32_hash.h
9.432 KB
April 03 2024 14:35:12
0 / root
0644

GRAYBYTE WORDPRESS FILE MANAGER @ 2025
CONTACT ME
Static GIF