Function at 0x101f4660
Capabilities:
Hash data using murmur2

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
sub esp, 0x58
mov dword [ebp - 0x40], edx
mov edi, ecx
mov eax, dword [0x102b0014]
xor eax, ebp
mov dword [ebp - 0x10], eax
lea esi, [ecx + 0xc]
push esi
call dword [sym.imp.kernel32.dll_TryAcquireSRWLockExclusive]
test al, al
je 0x101f4da0
call fcn.10160ec0
mov edx, dword [eax]
test edx, edx
je 0x101f46ad
lock add dword [edx + 4], 1
mov eax, dword [edi + 0x10]
add eax, 1
mov dword [ebp - 0x4c], eax
mov dword [edi + 0x10], eax
lock add dword [edx + 4], 1
jmp 0x101f46b9
mov eax, dword [edi + 0x10]
add eax, 1
mov dword [ebp - 0x4c], eax
mov dword [edi + 0x10], eax
imul eax, dword [ebp - 0x40], 0x5bd1e995
mov ecx, eax
shr ecx, 0x18
xor ecx, eax
imul eax, ecx, 0x5bd1e995
xor eax, 0x6f47a654
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 - 0x30], ecx
mov eax, dword [edi + 0x18]
test eax, eax
mov dword [ebp - 0x38], edi
mov dword [ebp - 0x34], eax
mov dword [ebp - 0x5c], esi
mov dword [ebp - 0x54], edx
je 0x101f473f
mov edi, eax
shr eax, 1
and eax, 0x55555555
mov ecx, edi
sub ecx, eax
mov eax, ecx
and eax, 0x33333333
shr ecx, 2
and ecx, 0x33333333
add ecx, eax
mov eax, ecx
shr eax, 4
add eax, ecx
and eax, 0xf0f0f0f
imul ecx, eax, 0x1010101
shr ecx, 0x18
cmp ecx, 1
ja 0x101f4749
lea ebx, [edi - 1]
mov edx, dword [ebp - 0x30]
and ebx, edx
jmp 0x101f475e
mov ebx, 0xffffffff
mov esi, dword [ebp - 0x40]
jmp 0x101f47c1
mov edx, dword [ebp - 0x30]
mov ebx, edx
cmp edx, edi
jb 0x101f475e
mov eax, edx
xor edx, edx
div dword [ebp - 0x34]
mov ebx, edx
mov edx, dword [ebp - 0x30]
mov eax, dword [ebp - 0x38]
mov eax, dword [eax + 0x14]
mov edi, dword [eax + ebx*4]
test edi, edi
mov esi, dword [ebp - 0x40]
je 0x101f47c1
mov eax, dword [ebp - 0x34]
add eax, 0xffffffff
mov dword [ebp - 0x48], eax
mov dword [ebp - 0x44], ecx
jmp 0x101f4790
and eax, dword [ebp - 0x48]
cmp eax, ebx
jne 0x101f47c1
cmp dword [edi + 8], esi
je 0x101f4c0e
mov edi, dword [edi]
test edi, edi
je 0x101f47c1
mov eax, dword [edi + 4]
cmp eax, edx
je 0x101f4787
cmp ecx, 1
jbe 0x101f4780
mov ecx, ebx
mov ebx, esi
mov esi, dword [ebp - 0x34]
cmp eax, esi
jb 0x101f47b6
xor edx, edx
div esi
mov eax, edx
mov edx, dword [ebp - 0x30]
mov esi, ebx
mov ebx, ecx
mov ecx, dword [ebp - 0x44]
cmp eax, ebx
je 0x101f4787
push 0x14
call fcn.1020d865
add esp, 4
mov edi, eax
mov dword [eax + 8], esi
mov dword [eax + 0x10], 0
mov dword [eax + 0xc], 0
mov eax, dword [ebp - 0x30]
mov dword [edi + 4], eax
mov dword [edi], 0
mov ecx, dword [ebp - 0x38]
mov eax, dword [ecx + 0x20]
add eax, 1
movd xmm0, eax
movq xmm1, qword [0x10253170]
por xmm0, xmm1
subsd xmm0, xmm1
cvtsd2ss xmm0, xmm0
mov esi, dword [ebp - 0x34]
movd xmm2, esi
por xmm2, xmm1
subsd xmm2, xmm1
cvtsd2ss xmm2, xmm2
movss xmm1, dword [ecx + 0x24]
mulss xmm2, xmm1
ucomiss xmm0, xmm2
ja 0x101f4834
test esi, esi
jne 0x101f4bb6
divss xmm0, xmm1
cvtss2sd xmm0, xmm0
sub esp, 8
movsd qword [esp], xmm0
call fcn.102300f0
add esp, 8
fstp dword [ebp - 0x64]
movss xmm0, dword [ebp - 0x64]
movss xmm2, dword [0x10245cf0]
movaps xmm1, xmm0
subss xmm1, xmm2
cvttss2si eax, xmm1
xor eax, 0x80000000
cvttss2si ecx, xmm0
ucomiss xmm0, xmm2
cmovae ecx, eax
lea eax, [esi + esi]
cmp esi, 2
jbe 0x101f488c
lea edx, [esi - 1]
xor ebx, ebx
test esi, edx
setne bl
or eax, ebx
jmp 0x101f488f
or eax, 1
mov ebx, dword [ebp - 0x38]
cmp eax, ecx
cmovb eax, ecx
mov ecx, 2
cmp eax, 1
mov esi, dword [ebp - 0x30]
je 0x101f48ad
lea ecx, [eax - 1]
test eax, ecx
jne 0x101f48b9
mov ecx, eax
mov eax, dword [ebp - 0x34]
cmp ecx, eax
jbe 0x101f48d2
jmp 0x101f49be
push eax
call fcn.1012aef8
mov esi, dword [ebp - 0x30]
add esp, 4
mov ecx, eax
mov eax, dword [ebx + 0x18]
cmp ecx, eax
ja 0x101f49be
jae 0x101f4b90
mov dword [ebp - 0x3c], ecx
mov ebx, eax
mov eax, dword [ebp - 0x38]
movss xmm0, dword [eax + 0x20]
orpd xmm0, xmmword [0x1025a6d0]
subsd xmm0, qword [0x10253170]
cvtsd2ss xmm0, xmm0
divss xmm0, dword [eax + 0x24]
cvtss2sd xmm0, xmm0
sub esp, 8
movsd qword [esp], xmm0
call fcn.102300f0
add esp, 8
fstp dword [ebp - 0x60]
movss xmm0, dword [ebp - 0x60]
movaps xmm1, xmm0
movss xmm2, dword [0x10245cf0]
subss xmm1, xmm2
cvttss2si ecx, xmm1
xor ecx, 0x80000000
cvttss2si eax, xmm0
ucomiss xmm0, xmm2
cmovae eax, ecx
cmp ebx, 3
jb 0x101f4997
mov ecx, ebx
shr ecx, 1
and ecx, 0x55555555
mov edx, ebx
sub edx, ecx
mov ecx, edx
and ecx, 0x33333333
shr edx, 2
and edx, 0x33333333
add edx, ecx
mov ecx, edx
shr ecx, 4
add ecx, edx
and ecx, 0xf0f0f0f
imul ecx, ecx, 0x1010101
shr ecx, 0x18
cmp ecx, 1
ja 0x101f4997
cmp eax, 2
jb 0x101f49a0
add eax, 0xffffffff
bsr ecx, eax
xor ecx, 0x1f
neg cl
mov eax, 1
shl eax, cl
jmp 0x101f49a0
push eax
call fcn.1012aef8
add esp, 4
mov esi, dword [ebp - 0x30]
mov ecx, dword [ebp - 0x3c]
cmp ecx, eax
cmovb ecx, eax
cmp ecx, ebx
jae 0x101f4b90
test ecx, ecx
mov ebx, dword [ebp - 0x38]
je 0x101f4b6f
cmp ecx, 0x40000000
jae 0x101f4dac
mov dword [ebp - 0x3c], ecx
lea eax, [ecx*4]
push eax
call fcn.1020d865
add esp, 4
mov ecx, dword [ebx + 0x14]
mov dword [ebx + 0x14], eax
test ecx, ecx
je 0x101f49f0
push ecx
call fcn.10205096
add esp, 4
mov eax, dword [ebp - 0x3c]
mov dword [ebx + 0x18], eax
lea edx, [eax - 1]
and eax, 3
xor ecx, ecx
mov dword [ebp - 0x50], edx
cmp edx, 3
jb 0x101f4a42
mov edx, dword [ebp - 0x3c]
and edx, 0xfffffffc
xor ecx, ecx
nop
nop
mov esi, dword [ebx + 0x14]
mov dword [esi + ecx*4], 0
mov esi, dword [ebx + 0x14]
mov dword [esi + ecx*4 + 4], 0
mov esi, dword [ebx + 0x14]
mov dword [esi + ecx*4 + 8], 0
mov esi, dword [ebx + 0x14]
mov dword [esi + ecx*4 + 0xc], 0
add ecx, 4
cmp edx, ecx
jne 0x101f4a10
test eax, eax
je 0x101f4a62
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov edx, dword [ebx + 0x14]
mov dword [edx + ecx*4], 0
add ecx, 1
add eax, 0xffffffff
jne 0x101f4a50
mov eax, dword [ebx + 0x1c]
mov dword [ebp - 0x34], eax
test eax, eax
mov esi, dword [ebp - 0x30]
mov ecx, dword [ebp - 0x3c]
je 0x101f4b90
mov eax, dword [ebp - 0x38]
add eax, 0x1c
mov dword [ebp - 0x58], eax
mov eax, ecx
shr eax, 1
and eax, 0x55555555
mov edx, ecx
sub edx, eax
mov eax, edx
and eax, 0x33333333
shr edx, 2
and edx, 0x33333333
add edx, eax
mov ebx, edx
shr ebx, 4
add ebx, edx
mov edx, dword [ebp - 0x34]
mov eax, dword [edx + 4]
and ebx, 0xf0f0f0f
imul edx, ebx, 0x1010101
shr edx, 0x18
mov dword [ebp - 0x44], edx
cmp edx, 1
ja 0x101f4ac9
and eax, dword [ebp - 0x50]
mov edx, eax
jmp 0x101f4ad5
cmp eax, ecx
jae 0x101f4ad1
mov edx, eax
jmp 0x101f4ad5
xor edx, edx
div ecx
mov esi, dword [ebp - 0x30]
mov eax, dword [ebp - 0x38]
mov eax, dword [eax + 0x14]
mov dword [ebp - 0x48], edx
mov ebx, dword [ebp - 0x58]
mov dword [eax + edx*4], ebx
mov eax, dword [ebp - 0x34]
mov ebx, dword [eax]
jmp 0x101f4b02
mov ecx, dword [ebp - 0x34]
mov dword [esi + eax*4], ecx
mov dword [ebp - 0x48], eax
mov esi, dword [ebp - 0x30]
mov ecx, dword [ebp - 0x3c]
mov dword [ebp - 0x34], ebx
mov ebx, dword [ebx]
test ebx, ebx
je 0x101f4b90
mov eax, dword [ebx + 4]
cmp dword [ebp - 0x44], 1
ja 0x101f4b20
and eax, dword [ebp - 0x50]
jmp 0x101f4b2d
cmp eax, ecx
jb 0x101f4b2d
xor edx, edx
div ecx
mov eax, edx
mov esi, dword [ebp - 0x30]
cmp eax, dword [ebp - 0x48]
je 0x101f4afd
mov ecx, dword [ebp - 0x38]
mov esi, dword [ecx + 0x14]
cmp dword [esi + eax*4], 0
mov edx, ebx
je 0x101f4aee
mov esi, edx
mov edx, dword [edx]
test edx, edx
je 0x101f4b50
mov ecx, dword [ebx + 8]
cmp ecx, dword [edx + 8]
je 0x101f4b40
mov ecx, dword [ebp - 0x34]
mov dword [ecx], edx
mov edx, dword [ebp - 0x38]
mov ecx, dword [edx + 0x14]
mov ecx, dword [ecx + eax*4]
mov ecx, dword [ecx]
mov dword [esi], ecx
mov ecx, dword [edx + 0x14]
mov eax, dword [ecx + eax*4]
mov dword [eax], ebx
mov ebx, dword [ebp - 0x34]
jmp 0x101f4af7
mov eax, dword [ebx + 0x14]
mov dword [ebx + 0x14], 0
test eax, eax
je 0x101f4b89
push eax
call fcn.10205096
mov esi, dword [ebp - 0x30]
add esp, 4
mov dword [ebx + 0x18], 0
mov eax, dword [ebp - 0x38]
mov eax, dword [eax + 0x18]
lea ebx, [eax - 1]
test eax, ebx
mov dword [ebp - 0x34], eax
jne 0x101f4ba4
and ebx, esi
jmp 0x101f4bb6
cmp esi, eax
jae 0x101f4bac
mov ebx, esi
jmp 0x101f4bb6
mov ecx, eax
mov eax, esi
xor edx, edx
div ecx
mov ebx, edx
mov esi, dword [ebp - 0x40]
mov edx, dword [ebp - 0x38]
mov eax, dword [edx + 0x14]
mov ecx, dword [eax + ebx*4]
test ecx, ecx
je 0x101f4bd0
mov eax, dword [ecx]
mov dword [edi], eax
mov dword [ecx], edi
mov ebx, edx
jmp 0x101f4c0a
mov ecx, dword [edx + 0x1c]
mov dword [edi], ecx
lea ecx, [edx + 0x1c]
mov dword [edx + 0x1c], edi
mov dword [eax + ebx*4], ecx
mov eax, dword [edi]
test eax, eax
mov ebx, edx
je 0x101f4c0a
mov eax, dword [eax + 4]
mov esi, dword [ebp - 0x34]
lea ecx, [esi - 1]
test esi, ecx
jne 0x101f4bf7
and eax, ecx
jmp 0x101f4c01
cmp eax, esi
jb 0x101f4c01
xor edx, edx
div esi
mov eax, edx
mov ecx, dword [ebx + 0x14]
mov dword [ecx + eax*4], edi
mov esi, dword [ebp - 0x40]
add dword [ebx + 0x20], 1
mov eax, dword [edi + 0xc]
mov ebx, dword [ebp - 0x54]
mov dword [edi + 0xc], ebx
test eax, eax
je 0x101f4c31
lock sub dword [eax + 4], 1
jne 0x101f4c31
add eax, 4
add eax, 0xfffffffc
push eax
call fcn.10160280
add esp, 4
mov eax, dword [ebp - 0x4c]
mov dword [edi + 0x10], eax
mov eax, dword [ebp - 0x38]
cmp dword [eax + 8], 0
je 0x101f4c75
test ebx, ebx
je 0x101f4c5a
lock sub dword [ebx + 4], 1
jne 0x101f4c5a
add ebx, 4
add ebx, 0xfffffffc
push ebx
call fcn.10160280
add esp, 4
push dword [ebp - 0x5c]
call dword [sym.imp.kernel32.dll_ReleaseSRWLockExclusive]
mov ecx, dword [ebp - 0x10]
xor ecx, ebp
call fcn.10205d16
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret
mov edi, dword [0x102ba434]
cmp edi, 1
ja 0x101f4cd7
push 0x102ba434
call fcn.1014e090
add esp, 4
test al, al
je 0x101f4cd1
mov dword [0x102ba43c], 0
mov dword [0x102ba438], 0
mov edi, 0x102ba438
mov ecx, 0x102ba438
push 0
call fcn.101620c0
push 0x102ba434
push 0
push 0x102ba438
push 0x102ba434
call fcn.1014e150
add esp, 0x10
jmp 0x101f4cd7
mov edi, dword [0x102ba434]
mov ecx, edi
call fcn.10162050
test eax, eax
mov ecx, dword [ebp - 0x38]
je 0x101f4c40
cmp dword [eax], ecx
jne 0x101f4c40
mov dword [ebp - 0x30], esp
sub esp, 8
mov dword [ebp - 0x34], esp
lea edx, [eax + 0x14]
mov ebx, eax
add ebx, 4
mov dword [ebp - 0x2c], ecx
movups xmm0, xmmword [eax + 4]
movups xmmword [ebp - 0x28], xmm0
lea ecx, [ebp - 0x18]
push edx
call fcn.10145e00
mov eax, dword [ebp - 0x4c]
mov dword [ebp - 0x14], eax
push 0x40
call fcn.1020d865
add esp, 4
mov edi, eax
mov ecx, eax
push 0x101f5390
push 0x101f5370
call fcn.10145d00
mov eax, dword [ebp - 0x38]
mov dword [edi + 0x10], 0x101f5180
mov dword [edi + 0x14], 0
mov dword [edi + 0x18], eax
test eax, eax
je 0x101f4d56
lock add dword [eax + 4], 1
mov dword [edi + 0x1c], esi
mov eax, dword [ebp - 0x2c]
mov dword [edi + 0x20], eax
lea eax, [ebp - 0x28]
movups xmm0, xmmword [eax]
movups xmmword [edi + 0x24], xmm0
lea esi, [ebp - 0x18]
mov eax, dword [ebp - 0x18]
mov dword [edi + 0x34], eax
mov dword [ebp - 0x18], 0
mov eax, dword [ebp - 0x14]
mov dword [edi + 0x38], eax
mov eax, dword [ebp - 0x34]
mov dword [eax + 4], edi
mov dword [eax], ebx
mov ebx, dword [ebp - 0x54]
mov ecx, ebx
call fcn.10160180
mov esp, dword [ebp - 0x30]
mov ecx, esi
call fcn.10145de0
jmp 0x101f4c40
mov ecx, esi
call fcn.1016d1b0
jmp 0x101f468a
call fcn.102177d0
int3