Function at 0x101abc30
Capabilities:
Encode data using xor
Hash data using murmur2

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
sub esp, 0x44
mov eax, dword [0x102b0014]
xor eax, ebp
mov dword [ebp - 0x10], eax
mov esi, dword [0x102ba364]
cmp esi, 1
ja 0x101abc8f
push 0x102ba364
call fcn.1014e090
add esp, 4
test al, al
je 0x101abc89
mov dword [0x102ba368], 0
push 0x102ba364
push 0
push 0x102ba368
push 0x102ba364
call fcn.1014e150
add esp, 0x10
mov esi, 0x102ba368
jmp 0x101abc8f
mov esi, dword [0x102ba364]
mov edi, dword [ebp + 8]
push esi
call dword [sym.imp.kernel32.dll_TryAcquireSRWLockExclusive]
test al, al
je 0x101ac610
mov dword [ebp - 0x44], esi
call fcn.101abaa0
mov ecx, dword [edi + 4]
mov eax, dword [0x102ba36c]
mov dword [ebp - 0x24], eax
xor esi, esi
test ecx, ecx
mov dword [ebp - 0x30], ecx
je 0x101abd20
push dword [ebp - 0x30]
call fcn.1021d3a0
add esp, 4
mov dword [ebp - 0x20], 0
test eax, eax
je 0x101abdb7
lea edx, [eax - 1]
mov ecx, eax
and ecx, 7
cmp edx, 7
jae 0x101abd2c
mov dword [ebp - 0x20], 0
mov edx, dword [ebp - 0x30]
test ecx, ecx
je 0x101abdb5
xor esi, esi
mov ebx, dword [ebp - 0x20]
nop
nop
nop
nop
nop
movsx edi, byte [edx + esi]
imul ebx, ebx, 0x83
add ebx, edi
add esi, 1
cmp ecx, esi
jne 0x101abd00
mov dword [ebp - 0x20], ebx
mov esi, eax
mov edi, dword [ebp + 8]
jmp 0x101abdb7
mov dword [ebp - 0x20], 0
jmp 0x101abdb7
mov esi, eax
and esi, 0xfffffff8
neg esi
mov edx, dword [ebp - 0x30]
xor ebx, ebx
nop
nop
nop
nop
nop
nop
nop
nop
movsx edi, byte [edx]
imul ebx, ebx, 0x83
add ebx, edi
movsx edi, byte [edx + 1]
imul ebx, ebx, 0x83
add ebx, edi
movsx edi, byte [edx + 2]
imul ebx, ebx, 0x83
add ebx, edi
movsx edi, byte [edx + 3]
imul ebx, ebx, 0x83
add ebx, edi
movsx edi, byte [edx + 4]
imul ebx, ebx, 0x83
add ebx, edi
movsx edi, byte [edx + 5]
imul ebx, ebx, 0x83
add ebx, edi
movsx edi, byte [edx + 6]
imul ebx, ebx, 0x83
add ebx, edi
movsx edi, byte [edx + 7]
imul ebx, ebx, 0x83
add ebx, edi
add edx, 8
add esi, 8
jne 0x101abd40
mov dword [ebp - 0x20], ebx
mov edi, dword [ebp + 8]
test ecx, ecx
jne 0x101abcf6
mov esi, eax
mov eax, dword [ebp - 0x24]
mov ebx, dword [eax + 4]
test ebx, ebx
mov dword [ebp - 0x28], ebx
je 0x101abe05
mov eax, ebx
shr eax, 1
and eax, 0x55555555
mov ecx, ebx
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 edi, eax, 0x1010101
shr edi, 0x18
cmp edi, 1
ja 0x101abe11
lea edx, [ebx - 1]
and edx, dword [ebp - 0x20]
jmp 0x101abe22
mov dword [ebp - 0x2c], 0xffffffff
jmp 0x101abeae
mov eax, dword [ebp - 0x20]
mov edx, eax
cmp eax, ebx
jb 0x101abe22
mov eax, dword [ebp - 0x20]
xor edx, edx
div dword [ebp - 0x28]
mov eax, dword [ebp - 0x24]
mov eax, dword [eax]
mov dword [ebp - 0x2c], edx
mov eax, dword [eax + edx*4]
test eax, eax
je 0x101abeab
mov ecx, dword [eax]
test ecx, ecx
je 0x101abeab
mov eax, dword [ebp - 0x28]
add eax, 0xffffffff
mov dword [ebp - 0x3c], eax
jmp 0x101abe56
mov ecx, dword [ecx]
test ecx, ecx
je 0x101abeab
mov eax, dword [ecx + 4]
cmp eax, dword [ebp - 0x20]
je 0x101abe86
cmp edi, 1
ja 0x101abe70
and eax, dword [ebp - 0x3c]
cmp eax, dword [ebp - 0x2c]
je 0x101abe86
jmp 0x101abeab
mov ebx, edi
mov edi, dword [ebp - 0x28]
cmp eax, edi
jb 0x101abe7f
xor edx, edx
div edi
mov eax, edx
mov edi, ebx
cmp eax, dword [ebp - 0x2c]
jne 0x101abeab
cmp dword [ecx + 0xc], esi
jne 0x101abe50
push esi
mov eax, dword [ebp - 0x30]
push eax
push dword [ecx + 8]
mov ebx, ecx
call fcn.10216dd3
mov ecx, ebx
add esp, 0xc
test eax, eax
jne 0x101abe50
mov edi, dword [ebp + 8]
jmp 0x101ac339
mov edi, dword [ebp + 8]
push 0x14
call fcn.10216dd3
add esp, 4
mov ecx, eax
mov eax, dword [ebp - 0x30]
mov dword [ecx + 8], eax
mov dword [ecx + 0xc], esi
mov dword [ecx + 0x10], 0
mov eax, dword [ebp - 0x20]
mov dword [ecx + 4], eax
mov dword [ebp - 0x40], ecx
mov dword [ecx], 0
mov ecx, dword [ebp - 0x24]
mov eax, dword [ecx + 0xc]
add eax, 1
movd xmm0, eax
movq xmm1, qword [0x10253170]
por xmm0, xmm1
subsd xmm0, xmm1
cvtsd2ss xmm0, xmm0
mov esi, dword [ebp - 0x28]
movd xmm2, esi
por xmm2, xmm1
subsd xmm2, xmm1
cvtsd2ss xmm2, xmm2
movss xmm1, dword [ecx + 0x10]
mulss xmm2, xmm1
ucomiss xmm0, xmm2
ja 0x101abf27
test esi, esi
je 0x101abf27
mov edx, dword [ebp - 0x2c]
jmp 0x101ac2d7
divss xmm0, xmm1
cvtss2sd xmm0, xmm0
sub esp, 8
movsd qword [esp], xmm0
call fcn.102300f0
add esp, 8
fstp dword [ebp - 0x50]
movss xmm0, dword [ebp - 0x50]
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 0x101abf7f
lea edx, [esi - 1]
xor ebx, ebx
test esi, edx
setne bl
or eax, ebx
jmp 0x101abf82
or eax, 1
mov edi, dword [ebp - 0x24]
cmp eax, ecx
cmovb eax, ecx
mov ecx, 2
cmp eax, 1
je 0x101abf9d
lea ecx, [eax - 1]
test eax, ecx
jne 0x101abfa6
mov ecx, eax
cmp ecx, esi
jbe 0x101abfbc
jmp 0x101ac0a1
push eax
call fcn.1012aef8
add esp, 4
mov ecx, eax
mov esi, dword [edi + 4]
cmp ecx, esi
ja 0x101ac0a1
jae 0x101ac2b0
mov edi, ecx
mov eax, dword [ebp - 0x24]
movss xmm0, dword [eax + 0xc]
orpd xmm0, xmmword [0x1025a6d0]
subsd xmm0, qword [0x10253170]
cvtsd2ss xmm0, xmm0
divss xmm0, dword [eax + 0x10]
cvtss2sd xmm0, xmm0
sub esp, 8
movsd qword [esp], xmm0
call fcn.102300f0
add esp, 8
fstp dword [ebp - 0x4c]
movss xmm0, dword [ebp - 0x4c]
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 esi, 3
jb 0x101ac07e
mov ecx, esi
shr ecx, 1
and ecx, 0x55555555
mov edx, esi
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 0x101ac07e
cmp eax, 2
jb 0x101ac087
add eax, 0xffffffff
bsr ecx, eax
xor ecx, 0x1f
neg cl
mov eax, 1
shl eax, cl
jmp 0x101ac087
push eax
call fcn.1012aef8
add esp, 4
mov ecx, edi
cmp edi, eax
cmovb ecx, eax
cmp ecx, esi
jae 0x101ac2b0
test ecx, ecx
mov edi, dword [ebp - 0x24]
je 0x101ac294
cmp ecx, 0x40000000
jae 0x101ac624
mov dword [ebp - 0x38], ecx
lea eax, [ecx*4]
push eax
call fcn.10216dd3
add esp, 4
mov ecx, dword [edi]
mov dword [edi], eax
test ecx, ecx
je 0x101ac0d1
push ecx
call fcn.10205096
add esp, 4
mov eax, dword [ebp - 0x38]
mov dword [edi + 4], eax
lea edx, [eax - 1]
and eax, 3
xor ecx, ecx
mov dword [ebp - 0x48], edx
cmp edx, 3
jb 0x101ac11e
mov edx, dword [ebp - 0x38]
and edx, 0xfffffffc
xor ecx, ecx
nop
mov esi, dword [edi]
mov dword [esi + ecx*4], 0
mov esi, dword [edi]
mov dword [esi + ecx*4 + 4], 0
mov esi, dword [edi]
mov dword [esi + ecx*4 + 8], 0
mov esi, dword [edi]
mov dword [esi + ecx*4 + 0xc], 0
add ecx, 4
cmp edx, ecx
jne 0x101ac0f0
test eax, eax
je 0x101ac141
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov edx, dword [edi]
mov dword [edx + ecx*4], 0
add ecx, 1
add eax, 0xffffffff
jne 0x101ac130
mov ebx, dword [edi + 8]
test ebx, ebx
mov edi, dword [ebp - 0x38]
je 0x101ac2b0
mov esi, dword [ebp - 0x24]
lea eax, [esi + 8]
mov dword [ebp - 0x28], eax
mov eax, edi
shr eax, 1
and eax, 0x55555555
mov edx, edi
sub edx, eax
mov eax, edx
and eax, 0x33333333
shr edx, 2
and edx, 0x33333333
add edx, eax
mov eax, edx
shr eax, 4
add eax, edx
mov ecx, ebx
mov ebx, dword [ebx + 4]
and eax, 0xf0f0f0f
imul edx, eax, 0x1010101
shr edx, 0x18
cmp edx, 1
ja 0x101ac19b
and ebx, dword [ebp - 0x48]
jmp 0x101ac1ad
cmp ebx, edi
jb 0x101ac1ad
mov eax, ebx
mov dword [ebp - 0x34], edx
xor edx, edx
div edi
mov ebx, edx
mov edx, dword [ebp - 0x34]
mov eax, dword [esi]
mov esi, dword [ebp - 0x28]
mov dword [eax + ebx*4], esi
mov edi, dword [ecx]
test edi, edi
mov eax, dword [ebp - 0x38]
je 0x101ac2b0
mov esi, ecx
mov dword [ebp - 0x34], edx
jmp 0x101ac1dc
mov esi, edi
mov edi, dword [esi]
test edi, edi
je 0x101ac2b0
mov ecx, dword [edi + 4]
cmp edx, 1
ja 0x101ac1f0
and ecx, dword [ebp - 0x48]
jmp 0x101ac209
cmp ecx, eax
jb 0x101ac209
mov dword [ebp - 0x28], ebx
mov ebx, eax
mov eax, ecx
xor edx, edx
div ebx
mov eax, ebx
mov ecx, edx
mov ebx, dword [ebp - 0x28]
mov edx, dword [ebp - 0x34]
cmp ecx, ebx
je 0x101ac1d0
mov dword [ebp - 0x28], ebx
mov dword [ebp - 0x2c], esi
mov eax, dword [ebp - 0x24]
mov eax, dword [eax]
mov dword [ebp - 0x3c], ecx
cmp dword [eax + ecx*4], 0
mov esi, edi
je 0x101ac27e
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov ebx, esi
mov esi, dword [esi]
test esi, esi
je 0x101ac253
mov eax, dword [esi + 0xc]
cmp dword [edi + 0xc], eax
jne 0x101ac253
push eax
push dword [esi + 8]
push dword [edi + 8]
call fcn.10216dd3
add esp, 0xc
test eax, eax
je 0x101ac230
mov eax, dword [ebp - 0x2c]
mov dword [eax], esi
mov esi, eax
mov ecx, dword [ebp - 0x24]
mov eax, dword [ecx]
mov edx, dword [ebp - 0x3c]
mov eax, dword [eax + edx*4]
mov eax, dword [eax]
mov dword [ebx], eax
mov eax, dword [ecx]
mov eax, dword [eax + edx*4]
mov dword [eax], edi
mov eax, dword [ebp - 0x38]
mov edx, dword [ebp - 0x34]
mov ebx, dword [ebp - 0x28]
jmp 0x101ac1d2
mov ecx, dword [ebp - 0x2c]
mov ebx, dword [ebp - 0x3c]
mov dword [eax + ebx*4], ecx
mov esi, edi
mov eax, dword [ebp - 0x38]
mov edx, dword [ebp - 0x34]
jmp 0x101ac1d2
mov eax, dword [edi]
mov dword [edi], 0
test eax, eax
je 0x101ac2a9
push eax
call fcn.10205096
add esp, 4
mov dword [edi + 4], 0
mov eax, dword [ebp - 0x24]
mov esi, dword [eax + 4]
lea edx, [esi - 1]
test esi, edx
jne 0x101ac2c5
and edx, dword [ebp - 0x20]
mov edi, dword [ebp + 8]
jmp 0x101ac2d7
mov eax, dword [ebp - 0x20]
cmp eax, esi
mov edi, dword [ebp + 8]
jae 0x101ac2d3
mov edx, eax
jmp 0x101ac2d7
xor edx, edx
div esi
mov ebx, dword [ebp - 0x24]
mov eax, dword [ebx]
mov ecx, dword [eax + edx*4]
test ecx, ecx
je 0x101ac2ee
mov eax, dword [ecx]
mov edx, dword [ebp - 0x40]
mov dword [edx], eax
mov dword [ecx], edx
jmp 0x101ac330
mov dword [ebp - 0x28], esi
mov ecx, dword [ebx + 8]
mov esi, dword [ebp - 0x40]
mov dword [esi], ecx
lea ecx, [ebx + 8]
mov dword [ebx + 8], esi
mov dword [eax + edx*4], ecx
mov ecx, esi
mov eax, dword [esi]
test eax, eax
je 0x101ac332
mov eax, dword [eax + 4]
mov esi, dword [ebp - 0x28]
lea ecx, [esi - 1]
test esi, ecx
jne 0x101ac31b
and eax, ecx
jmp 0x101ac325
cmp eax, esi
jb 0x101ac325
xor edx, edx
div esi
mov eax, edx
mov ecx, dword [ebp - 0x24]
mov ecx, dword [ecx]
mov edx, dword [ebp - 0x40]
mov dword [ecx + eax*4], edx
mov ecx, edx
mov eax, dword [ebp - 0x24]
add dword [eax + 0xc], 1
mov esi, dword [ecx + 0x10]
test esi, esi
je 0x101ac364
cmp esi, edi
je 0x101ac5f3
push dword [ebp - 0x44]
call dword [sym.imp.kernel32.dll_ReleaseSRWLockExclusive]
test edi, edi
je 0x101ac35d
mov eax, dword [edi]
mov ecx, edi
push 1
call dword [eax]
mov edi, esi
jmp 0x101ac5fc
mov dword [ecx + 0x10], edi
mov esi, dword [0x102ba36c]
push dword [ebp - 0x30]
call fcn.1021d3a0
add esp, 4
cmp eax, 0xfffffff0
jae 0x101ac61c
mov ebx, eax
mov dword [ebp - 0x2c], esi
cmp eax, 0xb
jae 0x101ac397
lea esi, [ebp - 0x1c]
mov byte [ebp - 0x11], bl
test ebx, ebx
jne 0x101ac3b9
jmp 0x101ac3c6
mov edi, ebx
add edi, 0x10
and edi, 0xfffffff0
push edi
call fcn.10216dd3
add esp, 4
mov esi, eax
mov dword [ebp - 0x1c], eax
or edi, 0x80000000
mov dword [ebp - 0x14], edi
mov dword [ebp - 0x18], ebx
push ebx
push dword [ebp - 0x30]
push esi
call fcn.10208400
add esp, 0xc
mov byte [esi + ebx], 0
movzx edx, byte [ebp - 0x11]
mov ecx, dword [ebp - 0x1c]
mov eax, dword [ebp - 0x18]
mov dword [ebp - 0x20], eax
add eax, ecx
test dl, dl
mov dword [ebp - 0x28], edx
lea edx, [ebp + edx - 0x1c]
cmovs edx, eax
lea esi, [ebp - 0x1c]
mov dword [ebp - 0x38], ecx
cmovs esi, ecx
sub edx, esi
cmp edx, 4
mov dword [ebp - 0x24], esi
jb 0x101ac44c
mov ecx, esi
mov eax, edx
nop
nop
nop
nop
imul esi, dword [ecx], 0x5bd1e995
mov edi, esi
shr edi, 0x18
xor edi, esi
imul esi, edi, 0x5bd1e995
imul eax, eax, 0x5bd1e995
xor eax, esi
add ecx, 4
add edx, 0xfffffffc
cmp edx, 3
ja 0x101ac400
cmp edx, 1
je 0x101ac455
cmp edx, 2
mov esi, dword [ebp - 0x2c]
je 0x101ac441
cmp edx, 3
jne 0x101ac463
movzx edx, byte [ecx + 2]
shl edx, 0x10
xor eax, edx
movzx edx, byte [ecx + 1]
shl edx, 8
xor eax, edx
jmp 0x101ac458
mov eax, edx
mov ecx, esi
cmp edx, 1
jne 0x101ac42b
mov esi, dword [ebp - 0x2c]
movzx ecx, byte [ecx]
xor ecx, eax
imul eax, ecx, 0x5bd1e995
mov edi, dword [esi + 0x18]
xor ecx, ecx
test edi, edi
je 0x101ac5d2
mov ecx, eax
shr ecx, 0xd
xor ecx, eax
imul eax, ecx, 0x5bd1e995
mov ebx, eax
shr ebx, 0xf
xor ebx, eax
mov eax, edi
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 eax, eax, 0x1010101
shr eax, 0x18
mov dword [ebp - 0x2c], eax
cmp eax, 1
ja 0x101ac4c7
lea edx, [edi - 1]
and edx, ebx
jmp 0x101ac4d3
mov edx, ebx
cmp ebx, edi
jb 0x101ac4d3
mov eax, ebx
xor edx, edx
div edi
mov eax, dword [esi + 0x14]
mov eax, dword [eax + edx*4]
test eax, eax
je 0x101ac5d0
mov dword [ebp - 0x3c], edx
mov dword [ebp - 0x34], edi
mov ecx, dword [ebp - 0x28]
test cl, cl
mov edx, dword [ebp - 0x20]
cmovns edx, ecx
mov dword [ebp - 0x20], edx
mov edi, dword [eax]
test edi, edi
mov ecx, 0
je 0x101ac5d2
mov eax, dword [ebp - 0x34]
add eax, 0xffffffff
mov dword [ebp - 0x40], eax
jmp 0x101ac526
and eax, dword [ebp - 0x40]
cmp eax, dword [ebp - 0x3c]
jne 0x101ac5d0
mov edi, dword [edi]
test edi, edi
je 0x101ac5d0
mov eax, dword [edi + 4]
cmp ebx, eax
jne 0x101ac590
movzx eax, byte [edi + 0x13]
mov ecx, eax
mov esi, eax
test al, al
jns 0x101ac53c
mov ecx, dword [edi + 0xc]
cmp ecx, dword [ebp - 0x20]
jne 0x101ac51c
lea ecx, [edi + 8]
mov edx, dword [ecx]
mov eax, esi
test al, al
cmovs ecx, edx
js 0x101ac5b0
cmp dword [ebp - 0x20], 0
je 0x101ac5cc
mov ecx, dword [ebp - 0x24]
cmp byte [ecx], dl
jne 0x101ac51c
add esi, 0xffffffff
mov dword [ebp - 0x30], esi
xor ecx, ecx
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
cmp dword [ebp - 0x30], ecx
je 0x101ac5cc
movzx edx, byte [edi + ecx + 9]
mov eax, ebx
lea ebx, [ecx + 1]
mov esi, dword [ebp - 0x24]
cmp dl, byte [esi + ecx + 1]
mov ecx, ebx
mov ebx, eax
je 0x101ac570
jmp 0x101ac51c
cmp dword [ebp - 0x2c], 1
jbe 0x101ac510
mov ecx, dword [ebp - 0x34]
cmp eax, ecx
jb 0x101ac513
xor edx, edx
div ecx
mov eax, edx
jmp 0x101ac513
mov eax, dword [ebp - 0x20]
test eax, eax
je 0x101ac5cc
push eax
push dword [ebp - 0x24]
push ecx
call fcn.10216dd3
add esp, 0xc
test eax, eax
jne 0x101ac51c
mov ecx, edi
jmp 0x101ac5d2
xor ecx, ecx
cmp byte [ebp - 0x28], 0
jns 0x101ac5e7
push dword [ebp - 0x38]
mov esi, ecx
call fcn.10205096
mov ecx, esi
add esp, 4
test ecx, ecx
mov edi, dword [ebp + 8]
je 0x101ac5f3
lock or dword [edi + 8], 0x20
push dword [ebp - 0x44]
call dword [sym.imp.kernel32.dll_ReleaseSRWLockExclusive]
mov ecx, dword [ebp - 0x10]
xor ecx, ebp
call fcn.10205d16
mov eax, edi
add esp, 0x44
pop esi
pop edi
pop ebx
pop ebp
ret
mov ecx, esi
call fcn.1016d1b0
jmp 0x101abca1
lea ecx, [ebp - 0x1c]
call fcn.101407c4
call fcn.102177d0
int3