Function at 0x40b9d0
Capabilities:
Hash data using murmur2

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
sub esp, 0x34
mov edi, dword [ebp + 8]
mov eax, dword [edi]
mov esi, dword [eax + 8]
mov ecx, esi
call dword [0x4b1788]
mov ecx, edi
call esi
mov dword [ebp - 0x20], eax
mov dword [ebp - 0x1c], edx
mov esi, dword [0x4c4478]
cmp esi, 1
jbe 0x40bf4f
mov edi, esi
shr edi, 0xe
mov eax, esi
shr eax, 0x13
mov dword [ebp - 0x28], eax
mov eax, dword [eax*4 + 0x4bbc00]
bt eax, edi
jae 0x40bb1c
mov dword [esp], esi
call fcn.00401010
test esi, esi
je 0x40bffb
mov dword [esp], esi
call dword [sym.imp.KERNEL32.dll_TryAcquireSRWLockExclusive]
sub esp, 4
test al, al
jne 0x40ba4b
mov dword [esp], esi
call dword [sym.imp.KERNEL32.dll_AcquireSRWLockExclusive]
sub esp, 4
mov eax, dword [0x4c4478]
cmp eax, 1
jbe 0x40bf7d
mov ebx, dword [0x4c4480]
test ebx, ebx
je 0x40bf31
imul eax, dword [ebp - 0x20], 0x5bd1e995
mov ecx, eax
shr ecx, 0x18
xor ecx, eax
imul eax, dword [ebp - 0x1c], 0x5bd1e995
mov edx, eax
shr edx, 0x18
xor edx, eax
imul eax, ecx, 0x5bd1e995
xor eax, 0xde8f4ca8
imul ecx, edx, 0x5bd1e995
imul eax, eax, 0x5bd1e995
xor eax, ecx
mov ecx, eax
shr ecx, 0xd
xor ecx, eax
imul eax, ecx, 0x5bd1e995
mov ecx, eax
shr ecx, 0xf
xor ecx, eax
mov dword [ebp - 0x18], ecx
mov dword [ebp - 0x10], ebx
mov edx, dword [ebx + 4]
test edx, edx
mov dword [ebp - 0x30], esi
mov dword [ebp - 0x14], edx
mov dword [ebp - 0x2c], edi
je 0x40bbad
mov ecx, edx
shr ecx, 1
and ecx, 0x55555555
mov eax, edx
sub eax, ecx
mov ecx, eax
and ecx, 0x33333333
shr eax, 2
and eax, 0x33333333
add eax, ecx
mov ecx, eax
shr ecx, 4
add ecx, eax
and ecx, 0xf0f0f0f
imul ecx, ecx, 0x1010101
shr ecx, 0x18
cmp ecx, 1
jbe 0x40bb2d
mov esi, dword [ebp - 0x18]
mov edi, esi
cmp esi, edx
jb 0x40bb35
mov eax, esi
xor edx, edx
div dword [ebp - 0x14]
mov edi, edx
mov edx, dword [ebp - 0x14]
jmp 0x40bb35
mov eax, esi
shr eax, 0x15
mov byte [eax + 0x4c3c00], 1
jmp 0x40ba27
lea edi, [edx - 1]
mov esi, dword [ebp - 0x18]
and edi, esi
mov eax, dword [ebp - 0x10]
mov eax, dword [eax]
mov eax, dword [eax + edi*4]
test eax, eax
je 0x40bbb3
mov ebx, dword [eax]
test ebx, ebx
je 0x40bbb3
cmp ecx, 2
jae 0x40bb67
lea eax, [edx - 1]
jmp 0x40bb8e
mov eax, dword [ebx + 8]
xor eax, dword [ebp - 0x20]
mov ecx, dword [ebx + 0xc]
xor ecx, dword [ebp - 0x1c]
or ecx, eax
je 0x40bba5
mov ebx, dword [ebx]
test ebx, ebx
je 0x40bbb3
mov eax, dword [ebx + 4]
cmp eax, esi
je 0x40bb51
cmp eax, edx
jb 0x40bb7c
xor edx, edx
div dword [ebp - 0x14]
mov eax, edx
mov edx, dword [ebp - 0x14]
cmp eax, edi
je 0x40bb61
jmp 0x40bbb3
and ecx, eax
cmp ecx, edi
jne 0x40bbb3
mov ebx, dword [ebx]
test ebx, ebx
je 0x40bbb3
mov ecx, dword [ebx + 4]
cmp ecx, esi
jne 0x40bb82
mov ecx, dword [ebx + 8]
xor ecx, dword [ebp - 0x20]
mov edx, dword [ebx + 0xc]
xor edx, dword [ebp - 0x1c]
or edx, ecx
jne 0x40bb88
mov esi, dword [ebp + 8]
jmp 0x40bc42
xor edi, edi
dec edi
mov esi, dword [ebp - 0x18]
mov dword [esp], 0x18
call fcn.0045e423
mov ebx, eax
xor eax, eax
mov dword [ebx], eax
mov dword [ebx + 4], esi
mov ecx, dword [ebp - 0x1c]
mov dword [ebx + 0xc], ecx
mov ecx, dword [ebp - 0x20]
mov dword [ebx + 8], ecx
mov dword [ebx + 0x10], eax
mov esi, dword [ebp - 0x10]
mov eax, dword [esi + 0xc]
inc eax
movd xmm0, eax
movq xmm2, qword [0x4a73e0]
por xmm0, xmm2
subsd xmm0, xmm2
cvtsd2ss xmm0, xmm0
movss xmm1, dword [esi + 0x10]
mov edx, dword [ebp - 0x14]
test edx, edx
je 0x40bd92
movd xmm3, edx
por xmm3, xmm2
subsd xmm3, xmm2
xorps xmm2, xmm2
cvtsd2ss xmm2, xmm3
mulss xmm2, xmm1
ucomiss xmm0, xmm2
ja 0x40bd92
mov ecx, dword [esi]
mov eax, dword [ecx + edi*4]
test eax, eax
je 0x40bcb8
mov ecx, dword [eax]
mov dword [ebx], ecx
mov esi, dword [ebp + 8]
mov dword [eax], ebx
mov eax, dword [ebp - 0x10]
inc dword [eax + 0xc]
mov edi, dword [ebx + 0x10]
test edi, edi
je 0x40bca1
xor ebx, ebx
cmp edi, esi
cmovne ebx, esi
mov esi, dword [ebp - 0x30]
mov dword [esp], esi
call dword [sym.imp.KERNEL32.dll_ReleaseSRWLockExclusive]
sub esp, 4
mov eax, dword [ebp - 0x28]
mov eax, dword [eax*4 + 0x4bbc00]
mov ecx, dword [ebp - 0x2c]
bt eax, ecx
jae 0x40bc79
mov dword [esp], esi
call fcn.004012c0
test ebx, ebx
je 0x40bc97
mov eax, dword [ebx]
mov esi, dword [eax]
mov ecx, esi
call dword [0x4b1788]
mov dword [esp], 1
mov ecx, ebx
call esi
sub esp, 4
mov eax, edi
add esp, 0x34
pop esi
pop edi
pop ebx
pop ebp
ret
mov dword [ebx + 0x10], esi
mov edi, dword [0x4c4480]
mov esi, dword [edi + 0x18]
xor ebx, ebx
test esi, esi
jne 0x40bcfa
mov edi, dword [ebp + 8]
jmp 0x40bc50
mov eax, dword [esi + 8]
mov dword [ebx], eax
lea eax, [esi + 8]
mov dword [esi + 8], ebx
mov dword [ecx + edi*4], eax
mov eax, dword [ebx]
test eax, eax
mov esi, dword [ebp + 8]
je 0x40bc3c
mov eax, dword [eax + 4]
lea ecx, [edx - 1]
test edx, ecx
jne 0x40bcec
and eax, ecx
shl eax, 2
mov ecx, dword [ebp - 0x10]
add eax, dword [ecx]
jmp 0x40bc3a
cmp eax, edx
jb 0x40bcdf
mov ecx, edx
xor edx, edx
div ecx
mov eax, edx
jmp 0x40bcdf
mov ecx, esi
shr ecx, 1
and ecx, 0x55555555
mov eax, esi
sub eax, ecx
mov ecx, eax
and ecx, 0x33333333
shr eax, 2
and eax, 0x33333333
add eax, ecx
mov ecx, eax
shr ecx, 4
add ecx, eax
and ecx, 0xf0f0f0f
imul ecx, ecx, 0x1010101
shr ecx, 0x18
cmp ecx, 1
jbe 0x40c001
mov eax, dword [ebp - 0x18]
mov edx, eax
cmp eax, esi
jb 0x40bd46
xor edx, edx
div esi
mov eax, dword [edi + 0x14]
mov eax, dword [eax + edx*4]
test eax, eax
je 0x40bcb3
mov edi, dword [eax]
test edi, edi
je 0x40bcb3
cmp ecx, 2
mov dword [ebp - 0x10], edx
jb 0x40c00c
mov eax, dword [edi + 4]
cmp dword [ebp - 0x18], eax
je 0x40bf10
cmp eax, esi
jb 0x40bd80
xor edx, edx
div esi
mov eax, edx
cmp eax, dword [ebp - 0x10]
jne 0x40bd8b
mov edi, dword [edi]
test edi, edi
jne 0x40bd6a
xor ebx, ebx
jmp 0x40bcb3
divss xmm0, xmm1
cvtss2sd xmm0, xmm0
movsd qword [esp], xmm0
call fcn.00484950
fstp dword [ebp - 0x38]
movss xmm0, dword [ebp - 0x38]
cvttss2si ecx, xmm0
mov edx, ecx
sar edx, 0x1f
subss xmm0, dword [0x4a73e8]
cvttss2si eax, xmm0
and eax, edx
mov edx, dword [ebp - 0x14]
or eax, ecx
lea edi, [edx + edx]
cmp edx, 3
jae 0x40bddc
xor ecx, ecx
inc ecx
jmp 0x40bdeb
mov ecx, 2
jmp 0x40be0b
mov edx, dword [ebp - 0x14]
dec edx
xor ecx, ecx
test dword [ebp - 0x14], edx
mov edx, dword [ebp - 0x14]
setne cl
or ecx, edi
cmp ecx, eax
cmovbe ecx, eax
cmp ecx, 1
je 0x40bdd5
lea eax, [ecx - 1]
test ecx, eax
je 0x40be0b
mov dword [esp], ecx
call fcn.0045c510
mov ecx, eax
mov edx, dword [esi + 4]
cmp ecx, edx
mov dword [ebp - 0x24], ebx
jbe 0x40c041
mov edi, ecx
cmp edi, 0x40000000
jae 0x40bffe
lea eax, [edi*4]
mov dword [esp], eax
call fcn.0045e423
mov ecx, dword [esi]
mov dword [esi], eax
test ecx, ecx
je 0x40be43
mov dword [esp], ecx
call fcn.0045e41e
mov dword [esi + 4], edi
xor eax, eax
mov ecx, dword [esi]
mov dword [ecx + eax*4], 0
inc eax
cmp edi, eax
jne 0x40be48
mov esi, dword [esi + 8]
test esi, esi
je 0x40be90
mov eax, dword [ebp - 0x10]
lea ebx, [eax + 8]
mov ecx, dword [esi + 4]
lea eax, [edi - 1]
test edi, eax
je 0x40bfaa
cmp ecx, edi
jb 0x40be7d
mov eax, ecx
xor edx, edx
div edi
mov ecx, edx
mov eax, dword [ebp - 0x10]
mov eax, dword [eax]
mov dword [eax + ecx*4], ebx
mov ebx, dword [esi]
test ebx, ebx
je 0x40be90
mov dword [ebp - 0x14], edi
jmp 0x40beb5
mov esi, dword [ebp - 0x10]
mov edx, dword [esi + 4]
lea edi, [edx - 1]
test edx, edi
jne 0x40bef1
and edi, dword [ebp - 0x18]
mov ebx, dword [ebp - 0x24]
jmp 0x40bc26
mov dword [edx + eax*4], esi
mov esi, ebx
mov ebx, dword [ebx]
mov ecx, eax
test ebx, ebx
je 0x40be90
mov eax, dword [ebx + 4]
cmp eax, edi
jb 0x40bec2
xor edx, edx
div edi
mov eax, edx
cmp eax, ecx
je 0x40beed
mov edx, dword [ebp - 0x10]
mov edx, dword [edx]
cmp dword [edx + eax*4], 0
je 0x40bea8
mov edx, dword [ebx]
mov dword [esi], edx
mov edi, dword [ebp - 0x10]
mov edx, dword [edi]
mov edx, dword [edx + eax*4]
mov edx, dword [edx]
mov dword [ebx], edx
mov edx, dword [edi]
mov edi, dword [ebp - 0x14]
mov eax, dword [edx + eax*4]
mov dword [eax], ebx
mov ebx, esi
mov eax, ecx
jmp 0x40beab
mov edi, dword [ebp - 0x18]
cmp edi, edx
mov ebx, dword [ebp - 0x24]
jb 0x40bc26
mov eax, edi
mov ecx, edx
xor edx, edx
div ecx
mov edi, edx
mov edx, ecx
jmp 0x40bc26
mov eax, dword [edi + 8]
xor eax, dword [ebp - 0x20]
mov ecx, dword [edi + 0xc]
xor ecx, dword [ebp - 0x1c]
or ecx, eax
jne 0x40bd85
mov edi, dword [ebp + 8]
lock or dword [edi + 8], 0x20
jmp 0x40bc50
mov dword [esp], 0x58
call fcn.0045e423
mov ecx, eax
call fcn.0040c160
mov ebx, dword [0x4c4480]
jmp 0x40ba67
mov dword [esp], 0x4c4478
call fcn.00413480
test al, al
je 0x40c13f
mov dword [0x4c447c], 0
mov esi, 0x4c447c
mov dword [0x4c4478], esi
jmp 0x40ba02
mov dword [esp], 0x4c4478
call fcn.00413480
test al, al
je 0x40c14a
mov dword [0x4c447c], 0
mov eax, 0x4c447c
mov dword [0x4c4478], eax
jmp 0x40ba59
and ecx, eax
mov edx, dword [ebp - 0x10]
mov edx, dword [edx]
mov dword [edx + ecx*4], ebx
jmp 0x40bfc1
mov esi, edx
jmp 0x40bfc1
mov dword [ebx + edi*4], esi
mov esi, edx
mov ecx, edi
mov edx, dword [esi]
test edx, edx
je 0x40be90
mov edi, dword [edx + 4]
and edi, eax
cmp edi, ecx
je 0x40bfb6
mov ebx, dword [ebp - 0x10]
mov ebx, dword [ebx]
cmp dword [ebx + edi*4], 0
je 0x40bfba
mov ebx, dword [edx]
mov dword [esi], ebx
mov ebx, dword [ebp - 0x10]
mov ebx, dword [ebx]
mov ebx, dword [ebx + edi*4]
mov ebx, dword [ebx]
mov dword [edx], ebx
mov ebx, dword [ebp - 0x10]
mov ebx, dword [ebx]
mov edi, dword [ebx + edi*4]
mov dword [edi], edx
jmp 0x40bfc1
int3
int3
lea edx, [esi - 1]
and edx, dword [ebp - 0x18]
jmp 0x40bd46
dec esi
mov eax, dword [edi + 4]
cmp dword [ebp - 0x18], eax
je 0x40c02b
and eax, esi
cmp eax, dword [ebp - 0x10]
jne 0x40bcb3
mov edi, dword [edi]
test edi, edi
jne 0x40c00d
jmp 0x40bcb3
mov eax, dword [edi + 8]
xor eax, dword [ebp - 0x20]
mov ecx, dword [edi + 0xc]
xor ecx, dword [ebp - 0x1c]
or ecx, eax
je 0x40bf24
jmp 0x40c020
mov dword [ebp - 0x14], ecx
jae 0x40be90
mov esi, edx
mov eax, dword [ebp - 0x10]
movss xmm0, dword [eax + 0xc]
orpd xmm0, xmmword [0x4a73f0]
subsd xmm0, qword [0x4a73e0]
cvtsd2ss xmm0, xmm0
divss xmm0, dword [eax + 0x10]
cvtss2sd xmm0, xmm0
movsd qword [esp], xmm0
call fcn.00484950
fstp dword [ebp - 0x34]
movss xmm0, dword [ebp - 0x34]
cvttss2si ecx, xmm0
mov edx, ecx
subss xmm0, dword [0x4a73e8]
cvttss2si eax, xmm0
sar edx, 0x1f
and eax, edx
or eax, ecx
cmp esi, 3
jb 0x40c0f7
mov ecx, esi
mov edx, esi
shr edx, 1
and edx, 0x55555555
sub ecx, edx
mov edx, ecx
and edx, 0x33333333
shr ecx, 2
and ecx, 0x33333333
add ecx, edx
mov edx, ecx
shr edx, 4
add edx, ecx
and edx, 0xf0f0f0f
imul ecx, edx, 0x1010101
shr ecx, 0x18
cmp ecx, 1
ja 0x40c0f7
lea ecx, [eax - 1]
bsr ecx, ecx
xor ecx, 0x1f
neg cl
xor edx, edx
inc edx
shl edx, cl
cmp eax, 2
cmovb edx, eax
mov eax, edx
jmp 0x40c0ff
mov dword [esp], eax
call fcn.0045c510
mov ecx, dword [ebp - 0x14]
mov edi, eax
cmp ecx, eax
cmova edi, ecx
cmp edi, esi
jae 0x40be90
test edi, edi
mov esi, dword [ebp - 0x10]
jne 0x40be18
mov eax, dword [esi]
mov dword [esi], 0
test eax, eax
je 0x40c130
mov dword [esp], eax
call fcn.0045e41e
mov eax, dword [ebp - 0x10]
mov dword [eax + 4], 0
jmp 0x40be90
mov esi, dword [0x4c4478]
jmp 0x40ba02
mov eax, dword [0x4c4478]
jmp 0x40ba59