Function at 0x1c2c900
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 [0x1cef298]
mov ecx, edi
call esi
mov dword [ebp - 0x20], eax
mov dword [ebp - 0x1c], edx
mov esi, dword [0x1d060d4]
cmp esi, 1
jbe 0x1c2ce7f
mov edi, esi
shr edi, 0xe
mov eax, esi
shr eax, 0x13
mov dword [ebp - 0x28], eax
mov eax, dword [eax*4 + 0x1cfae94]
bt eax, edi
jae 0x1c2ca4c
mov dword [esp], esi
call section..text
test esi, esi
je 0x1c2cf2b
mov dword [esp], esi
call dword [sym.imp.progwrp.dll_TryAcquireSRWLockExclusive]
sub esp, 4
test al, al
jne 0x1c2c97b
mov dword [esp], esi
call dword [sym.imp.progwrp.dll_AcquireSRWLockExclusive]
sub esp, 4
mov eax, dword [0x1d060d4]
cmp eax, 1
jbe 0x1c2cead
mov ebx, dword [0x1d060dc]
test ebx, ebx
je 0x1c2ce61
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 0x1c2cadd
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 0x1c2ca5d
mov esi, dword [ebp - 0x18]
mov edi, esi
cmp esi, edx
jb 0x1c2ca65
mov eax, esi
xor edx, edx
div dword [ebp - 0x14]
mov edi, edx
mov edx, dword [ebp - 0x14]
jmp 0x1c2ca65
mov eax, esi
shr eax, 0x15
mov byte [eax + 0x1d02e94], 1
jmp 0x1c2c957
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 0x1c2cae3
mov ebx, dword [eax]
test ebx, ebx
je 0x1c2cae3
cmp ecx, 2
jae 0x1c2ca97
lea eax, [edx - 1]
jmp 0x1c2cabe
mov eax, dword [ebx + 8]
xor eax, dword [ebp - 0x20]
mov ecx, dword [ebx + 0xc]
xor ecx, dword [ebp - 0x1c]
or ecx, eax
je 0x1c2cad5
mov ebx, dword [ebx]
test ebx, ebx
je 0x1c2cae3
mov eax, dword [ebx + 4]
cmp eax, esi
je 0x1c2ca81
cmp eax, edx
jb 0x1c2caac
xor edx, edx
div dword [ebp - 0x14]
mov eax, edx
mov edx, dword [ebp - 0x14]
cmp eax, edi
je 0x1c2ca91
jmp 0x1c2cae3
and ecx, eax
cmp ecx, edi
jne 0x1c2cae3
mov ebx, dword [ebx]
test ebx, ebx
je 0x1c2cae3
mov ecx, dword [ebx + 4]
cmp ecx, esi
jne 0x1c2cab2
mov ecx, dword [ebx + 8]
xor ecx, dword [ebp - 0x20]
mov edx, dword [ebx + 0xc]
xor edx, dword [ebp - 0x1c]
or edx, ecx
jne 0x1c2cab8
mov esi, dword [ebp + 8]
jmp 0x1c2cb72
xor edi, edi
dec edi
mov esi, dword [ebp - 0x18]
mov dword [esp], 0x18
call fcn.01c9515a
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 [0x1ce1860]
por xmm0, xmm2
subsd xmm0, xmm2
cvtsd2ss xmm0, xmm0
movss xmm1, dword [esi + 0x10]
mov edx, dword [ebp - 0x14]
test edx, edx
je 0x1c2ccc2
movd xmm3, edx
por xmm3, xmm2
subsd xmm3, xmm2
xorps xmm2, xmm2
cvtsd2ss xmm2, xmm3
mulss xmm2, xmm1
ucomiss xmm0, xmm2
ja 0x1c2ccc2
mov ecx, dword [esi]
mov eax, dword [ecx + edi*4]
test eax, eax
je 0x1c2cbe8
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 0x1c2cbd1
xor ebx, ebx
cmp edi, esi
cmovne ebx, esi
mov esi, dword [ebp - 0x30]
mov dword [esp], esi
call dword [sym.imp.progwrp.dll_ReleaseSRWLockExclusive]
sub esp, 4
mov eax, dword [ebp - 0x28]
mov eax, dword [eax*4 + 0x1cfae94]
mov ecx, dword [ebp - 0x2c]
bt eax, ecx
jae 0x1c2cba9
mov dword [esp], esi
call fcn.01c212b0
test ebx, ebx
je 0x1c2cbc7
mov eax, dword [ebx]
mov esi, dword [eax]
mov ecx, esi
call dword [0x1cef298]
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 [0x1d060dc]
mov esi, dword [edi + 0x18]
xor ebx, ebx
test esi, esi
jne 0x1c2cc2a
mov edi, dword [ebp + 8]
jmp 0x1c2cb80
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 0x1c2cb6c
mov eax, dword [eax + 4]
lea ecx, [edx - 1]
test edx, ecx
jne 0x1c2cc1c
and eax, ecx
shl eax, 2
mov ecx, dword [ebp - 0x10]
add eax, dword [ecx]
jmp 0x1c2cb6a
cmp eax, edx
jb 0x1c2cc0f
mov ecx, edx
xor edx, edx
div ecx
mov eax, edx
jmp 0x1c2cc0f
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 0x1c2cf31
mov eax, dword [ebp - 0x18]
mov edx, eax
cmp eax, esi
jb 0x1c2cc76
xor edx, edx
div esi
mov eax, dword [edi + 0x14]
mov eax, dword [eax + edx*4]
test eax, eax
je 0x1c2cbe3
mov edi, dword [eax]
test edi, edi
je 0x1c2cbe3
cmp ecx, 2
mov dword [ebp - 0x10], edx
jb 0x1c2cf3c
mov eax, dword [edi + 4]
cmp dword [ebp - 0x18], eax
je 0x1c2ce40
cmp eax, esi
jb 0x1c2ccb0
xor edx, edx
div esi
mov eax, edx
cmp eax, dword [ebp - 0x10]
jne 0x1c2ccbb
mov edi, dword [edi]
test edi, edi
jne 0x1c2cc9a
xor ebx, ebx
jmp 0x1c2cbe3
divss xmm0, xmm1
cvtss2sd xmm0, xmm0
movsd qword [esp], xmm0
call fcn.01cbd1e0
fstp dword [ebp - 0x38]
movss xmm0, dword [ebp - 0x38]
cvttss2si ecx, xmm0
mov edx, ecx
sar edx, 0x1f
subss xmm0, dword [0x1ce1868]
cvttss2si eax, xmm0
and eax, edx
mov edx, dword [ebp - 0x14]
or eax, ecx
lea edi, [edx + edx]
cmp edx, 3
jae 0x1c2cd0c
xor ecx, ecx
inc ecx
jmp 0x1c2cd1b
mov ecx, 2
jmp 0x1c2cd3b
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 0x1c2cd05
lea eax, [ecx - 1]
test ecx, eax
je 0x1c2cd3b
mov dword [esp], ecx
call fcn.01c933d0
mov ecx, eax
mov edx, dword [esi + 4]
cmp ecx, edx
mov dword [ebp - 0x24], ebx
jbe 0x1c2cf71
mov edi, ecx
cmp edi, 0x40000000
jae 0x1c2cf2e
lea eax, [edi*4]
mov dword [esp], eax
call fcn.01c9515a
mov ecx, dword [esi]
mov dword [esi], eax
test ecx, ecx
je 0x1c2cd73
mov dword [esp], ecx
call fcn.01c95155
mov dword [esi + 4], edi
xor eax, eax
mov ecx, dword [esi]
mov dword [ecx + eax*4], 0
inc eax
cmp edi, eax
jne 0x1c2cd78
mov esi, dword [esi + 8]
test esi, esi
je 0x1c2cdc0
mov eax, dword [ebp - 0x10]
lea ebx, [eax + 8]
mov ecx, dword [esi + 4]
lea eax, [edi - 1]
test edi, eax
je 0x1c2ceda
cmp ecx, edi
jb 0x1c2cdad
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 0x1c2cdc0
mov dword [ebp - 0x14], edi
jmp 0x1c2cde5
mov esi, dword [ebp - 0x10]
mov edx, dword [esi + 4]
lea edi, [edx - 1]
test edx, edi
jne 0x1c2ce21
and edi, dword [ebp - 0x18]
mov ebx, dword [ebp - 0x24]
jmp 0x1c2cb56
mov dword [edx + eax*4], esi
mov esi, ebx
mov ebx, dword [ebx]
mov ecx, eax
test ebx, ebx
je 0x1c2cdc0
mov eax, dword [ebx + 4]
cmp eax, edi
jb 0x1c2cdf2
xor edx, edx
div edi
mov eax, edx
cmp eax, ecx
je 0x1c2ce1d
mov edx, dword [ebp - 0x10]
mov edx, dword [edx]
cmp dword [edx + eax*4], 0
je 0x1c2cdd8
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 0x1c2cddb
mov edi, dword [ebp - 0x18]
cmp edi, edx
mov ebx, dword [ebp - 0x24]
jb 0x1c2cb56
mov eax, edi
mov ecx, edx
xor edx, edx
div ecx
mov edi, edx
mov edx, ecx
jmp 0x1c2cb56
mov eax, dword [edi + 8]
xor eax, dword [ebp - 0x20]
mov ecx, dword [edi + 0xc]
xor ecx, dword [ebp - 0x1c]
or ecx, eax
jne 0x1c2ccb5
mov edi, dword [ebp + 8]
lock or dword [edi + 8], 0x20
jmp 0x1c2cb80
mov dword [esp], 0x58
call fcn.01c9515a
mov ecx, eax
call fcn.01c2d090
mov ebx, dword [0x1d060dc]
jmp 0x1c2c997
mov dword [esp], 0x1d060d4
call fcn.01c33540
test al, al
je 0x1c2d06f
mov dword [0x1d060d8], 0
mov esi, 0x1d060d8
mov dword [0x1d060d4], esi
jmp 0x1c2c932
mov dword [esp], 0x1d060d4
call fcn.01c33540
test al, al
je 0x1c2d07a
mov dword [0x1d060d8], 0
mov eax, 0x1d060d8
mov dword [0x1d060d4], eax
jmp 0x1c2c989
and ecx, eax
mov edx, dword [ebp - 0x10]
mov edx, dword [edx]
mov dword [edx + ecx*4], ebx
jmp 0x1c2cef1
mov esi, edx
jmp 0x1c2cef1
mov dword [ebx + edi*4], esi
mov esi, edx
mov ecx, edi
mov edx, dword [esi]
test edx, edx
je 0x1c2cdc0
mov edi, dword [edx + 4]
and edi, eax
cmp edi, ecx
je 0x1c2cee6
mov ebx, dword [ebp - 0x10]
mov ebx, dword [ebx]
cmp dword [ebx + edi*4], 0
je 0x1c2ceea
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 0x1c2cef1
int3
int3
lea edx, [esi - 1]
and edx, dword [ebp - 0x18]
jmp 0x1c2cc76
dec esi
mov eax, dword [edi + 4]
cmp dword [ebp - 0x18], eax
je 0x1c2cf5b
and eax, esi
cmp eax, dword [ebp - 0x10]
jne 0x1c2cbe3
mov edi, dword [edi]
test edi, edi
jne 0x1c2cf3d
jmp 0x1c2cbe3
mov eax, dword [edi + 8]
xor eax, dword [ebp - 0x20]
mov ecx, dword [edi + 0xc]
xor ecx, dword [ebp - 0x1c]
or ecx, eax
je 0x1c2ce54
jmp 0x1c2cf50
mov dword [ebp - 0x14], ecx
jae 0x1c2cdc0
mov esi, edx
mov eax, dword [ebp - 0x10]
movss xmm0, dword [eax + 0xc]
orpd xmm0, xmmword [0x1ce1870]
subsd xmm0, qword [0x1ce1860]
cvtsd2ss xmm0, xmm0
divss xmm0, dword [eax + 0x10]
cvtss2sd xmm0, xmm0
movsd qword [esp], xmm0
call fcn.01cbd1e0
fstp dword [ebp - 0x34]
movss xmm0, dword [ebp - 0x34]
cvttss2si ecx, xmm0
mov edx, ecx
subss xmm0, dword [0x1ce1868]
cvttss2si eax, xmm0
sar edx, 0x1f
and eax, edx
or eax, ecx
cmp esi, 3
jb 0x1c2d027
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 0x1c2d027
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 0x1c2d02f
mov dword [esp], eax
call fcn.01c933d0
mov ecx, dword [ebp - 0x14]
mov edi, eax
cmp ecx, eax
cmova edi, ecx
cmp edi, esi
jae 0x1c2cdc0
test edi, edi
mov esi, dword [ebp - 0x10]
jne 0x1c2cd48
mov eax, dword [esi]
mov dword [esi], 0
test eax, eax
je 0x1c2d060
mov dword [esp], eax
call fcn.01c95155
mov eax, dword [ebp - 0x10]
mov dword [eax + 4], 0
jmp 0x1c2cdc0
mov esi, dword [0x1d060d4]
jmp 0x1c2c932
mov eax, dword [0x1d060d4]
jmp 0x1c2c989