def murmur_hash3_x86_32(data, offset, size, seed=<NUM_LIT>):
key = bytearray(data[offset: offset + size])<EOL>length = len(key)<EOL>nblocks = int(length / <NUM_LIT:4>)<EOL>h1 = seed<EOL>c1 = <NUM_LIT><EOL>c2 = <NUM_LIT><EOL>for block_start in range(<NUM_LIT:0>, nblocks * <NUM_LIT:4>, <NUM_LIT:4>):<EOL><INDENT>k1 = key[block_start + <NUM_LIT:3>] << <NUM_LIT> |key[block_start + <NUM_LIT:2>] << <NUM_LIT:16> |key[block_start + <NUM_LIT:1>] << <NUM_LIT:8> |key[block_start + <NUM_LIT:0>]<EOL>k1 = c1 * k1 & <NUM_LIT><EOL>k1 = (k1 << <NUM_LIT:15> | k1 >> <NUM_LIT>) & <NUM_LIT>  <EOL>k1 = (c2 * k1) & <NUM_LIT><EOL>h1 ^= k1<EOL>h1 = (h1 << <NUM_LIT> | h1 >> <NUM_LIT>) & <NUM_LIT>  <EOL>h1 = (h1 * <NUM_LIT:5> + <NUM_LIT>) & <NUM_LIT><EOL><DEDENT>tail_index = nblocks * <NUM_LIT:4><EOL>k1 = <NUM_LIT:0><EOL>tail_size = length & <NUM_LIT:3><EOL>if tail_size >= <NUM_LIT:3>:<EOL><INDENT>k1 ^= key[tail_index + <NUM_LIT:2>] << <NUM_LIT:16><EOL><DEDENT>if tail_size >= <NUM_LIT:2>:<EOL><INDENT>k1 ^= key[tail_index + <NUM_LIT:1>] << <NUM_LIT:8><EOL><DEDENT>if tail_size >= <NUM_LIT:1>:<EOL><INDENT>k1 ^= key[tail_index + <NUM_LIT:0>]<EOL><DEDENT>if tail_size != <NUM_LIT:0>:<EOL><INDENT>k1 = (k1 * c1) & <NUM_LIT><EOL>k1 = (k1 << <NUM_LIT:15> | k1 >> <NUM_LIT>) & <NUM_LIT>  <EOL>k1 = (k1 * c2) & <NUM_LIT><EOL>h1 ^= k1<EOL><DEDENT>result = _fmix(h1 ^ length)<EOL>return -(result & <NUM_LIT>) | (result & <NUM_LIT>)<EOL>
murmur3 hash function to determine partition

:param data: (byte array), input byte array
:param offset: (long), offset.
:param size: (long), byte length.
:param seed: murmur hash seed hazelcast uses 0x01000193
:return: (int32), calculated hash value.