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

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff8
sub esp, 0xe0
mov dword [esp + 0x10], edx
mov dword [esp + 0x14], ecx
mov esi, dword [ebp + 0xc]
mov eax, dword [0x102b0014]
xor eax, ebp
mov dword [esp + 0xd8], eax
push 0x102b6088
call dword [sym.imp.kernel32.dll_TryAcquireSRWLockExclusive]
test al, al
je 0x1017761c
mov dword [esp + 0xcc], 0
mov dword [esp + 0xc8], 0
test esi, esi
je 0x10176e6a
mov eax, dword [esi + 0x70]
jmp 0x10176e70
call dword [sym.imp.kernel32.dll_GetCurrentThreadId]
mov dword [esp + 0xc4], eax
cmp byte [esp + 0x10], 0x45
jne 0x10176f27
lea esi, [esp + 0xc4]
mov dword [esp + 0xb8], esi
lea edi, [esp + 0xb8]
lea ecx, [esp + 0x30]
mov edx, esi
push edi
call fcn.101783f0
add esp, 4
mov ecx, dword [esp + 0x30]
mov edx, dword [ecx + 0x10]
mov eax, dword [ecx + 0x18]
test eax, eax
cmove eax, edx
lea ebx, [eax - 1]
cmp edx, ebx
jb 0x1017762b
mov ecx, dword [ecx + 0xc]
mov ebx, dword [ebp + 8]
mov edx, dword [ebx]
sub edx, dword [ecx + eax*8 - 8]
mov ebx, dword [ebx + 4]
sbb ebx, dword [ecx + eax*8 - 4]
mov dword [esp + 0xc8], edx
mov dword [esp + 0xcc], ebx
mov dword [esp + 0xb8], esi
lea ecx, [esp + 0x30]
mov edx, esi
push edi
call fcn.101783f0
add esp, 4
mov ecx, dword [esp + 0x30]
mov eax, dword [ecx + 0x10]
mov esi, dword [ecx + 0x18]
test esi, esi
je 0x101771d6
lea edx, [esi - 1]
mov dword [ecx + 0x18], edx
cmp eax, esi
jb 0x1017762e
cmp eax, edx
jb 0x101771e4
add ecx, 0xc
call fcn.1003278c
mov dword [esp + 0xb8], 0xffffffff
mov dword [esp + 0xbc], 0xffffffff
mov dword [esp + 0xc0], 0xffffffff
lea edx, [esp + 0xc4]
mov dword [esp + 0x24], edx
lea esi, [esp + 0xd4]
lea edi, [esp + 0x24]
lea eax, [esp + 0x30]
mov ecx, 0x102b6108
push esi
push edi
push 0x10266c24
push edx
push eax
call fcn.1003219c
mov eax, dword [esp + 0x30]
cmp byte [eax + 0x17], 0
js 0x10176f9b
add eax, 0xc
mov ecx, dword [eax + 8]
mov dword [esp + 0xc0], ecx
movq xmm0, qword [eax]
movq qword [esp + 0xb8], xmm0
jmp 0x10176fad
lea ecx, [esp + 0xb8]
push dword [eax + 0x10]
push dword [eax + 0xc]
call fcn.10140cd4
movzx ecx, byte [esp + 0xc3]
mov ebx, dword [esp + 0xb8]
mov eax, dword [esp + 0xbc]
mov dword [esp], eax
add eax, ebx
test cl, cl
mov dword [esp + 8], ecx
lea esi, [esp + ecx + 0xb8]
cmovs esi, eax
lea eax, [esp + 0xb8]
cmovns ebx, eax
sub esi, ebx
cmp esi, 4
jb 0x10177018
mov edx, ebx
mov eax, esi
nop
nop
nop
imul ecx, dword [edx], 0x5bd1e995
mov edi, ecx
shr edi, 0x18
xor edi, ecx
imul ecx, edi, 0x5bd1e995
imul eax, eax, 0x5bd1e995
xor eax, ecx
add edx, 4
add esi, 0xfffffffc
cmp esi, 3
ja 0x10176ff0
jmp 0x1017701c
mov eax, esi
mov edx, ebx
cmp esi, 1
mov dword [esp + 4], ebx
je 0x10177041
cmp esi, 2
je 0x10177038
cmp esi, 3
jne 0x1017704c
movzx ecx, byte [edx + 2]
shl ecx, 0x10
xor eax, ecx
movzx ecx, byte [edx + 1]
shl ecx, 8
xor eax, ecx
movzx ecx, byte [edx]
xor ecx, eax
imul eax, ecx, 0x5bd1e995
mov ecx, dword [0x102b6134]
mov dword [esp + 0xc], ecx
test ecx, ecx
je 0x101771eb
mov ecx, eax
shr ecx, 0xd
xor ecx, eax
imul eax, ecx, 0x5bd1e995
mov edi, eax
shr edi, 0xf
xor edi, eax
mov esi, dword [esp + 0xc]
mov eax, esi
shr eax, 1
and eax, 0x55555555
mov ecx, esi
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 [esp + 0x20], eax
cmp eax, 1
mov dword [esp + 0x18], edi
ja 0x101770be
lea edx, [esi - 1]
and edx, edi
jmp 0x101770cc
mov edx, edi
cmp edi, esi
jb 0x101770cc
mov eax, dword [esp + 0x18]
xor edx, edx
div esi
mov eax, dword [0x102b6130]
mov dword [esp + 0x1c], edx
mov eax, dword [eax + edx*4]
test eax, eax
je 0x101771eb
mov edx, dword [esp + 8]
test dl, dl
mov ecx, dword [esp]
cmovns ecx, edx
mov dword [esp], ecx
mov esi, dword [eax]
test esi, esi
je 0x101771eb
mov eax, dword [esp + 0xc]
add eax, 0xffffffff
mov dword [esp + 8], eax
mov edi, dword [esp + 4]
jmp 0x10177128
and eax, dword [esp + 8]
cmp eax, dword [esp + 0x1c]
jne 0x101771eb
mov esi, dword [esi]
test esi, esi
je 0x101771eb
mov eax, dword [esi + 4]
cmp eax, dword [esp + 0x18]
jne 0x10177190
movzx eax, byte [esi + 0x13]
mov ecx, eax
test al, al
jns 0x1017713e
mov ecx, dword [esi + 0xc]
cmp ecx, dword [esp]
jne 0x1017711e
lea ecx, [esi + 8]
mov edx, dword [ecx]
test al, al
cmovs ecx, edx
js 0x101771b2
cmp dword [esp], 0
je 0x1017723e
mov ecx, dword [esp + 4]
cmp byte [ecx], dl
jne 0x1017711e
add eax, 0xffffffff
xor ecx, ecx
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
cmp eax, ecx
je 0x101771e7
movzx edx, byte [esi + ecx + 9]
lea ebx, [ecx + 1]
cmp dl, byte [edi + ecx + 1]
mov ecx, ebx
je 0x10177170
jmp 0x1017711e
cmp dword [esp + 0x20], 1
jbe 0x10177110
mov ecx, dword [esp + 0xc]
cmp eax, ecx
jb 0x10177114
xor edx, edx
div ecx
mov eax, edx
jmp 0x10177114
cmp dword [esp], 0
je 0x1017723e
push dword [esp]
push dword [esp + 8]
push ecx
call fcn.1020d865
add esp, 0xc
test eax, eax
jne 0x1017711e
jmp 0x1017723e
lea edx, [eax - 1]
mov dword [ecx + 0x18], edx
cmp eax, edx
jae 0x10176f1f
int3
test esi, esi
jne 0x1017723e
mov ecx, dword [0x102b613c]
mov edx, 0xaaaaaaab
mov eax, ecx
mul edx
shr edx, 1
and edx, 0xfffffffe
lea eax, [edx + edx*2]
neg eax
lea esi, [ecx + eax]
add esi, 1
lea eax, [esp + 0xb8]
mov dword [esp + 0x24], eax
lea edx, [esp + 0x24]
mov ecx, 0x102b6130
lea edi, [esp + 0xd4]
push edi
push edx
push 0x10266c24
push eax
lea eax, [esp + 0x40]
push eax
call fcn.10031bcc
mov eax, dword [esp + 0x30]
mov dword [eax + 0x14], esi
lea esi, [esp + 0x34]
pcmpeqd xmm0, xmm0
movdqu xmmword [esp + 0x64], xmm0
movdqu xmmword [esp + 0xa4], xmm0
movdqu xmmword [esp + 0x94], xmm0
movdqu xmmword [esp + 0x84], xmm0
movdqu xmmword [esp + 0x74], xmm0
movdqu xmmword [esp + 0x54], xmm0
movdqu xmmword [esp + 0x44], xmm0
movdqu xmmword [esp + 0x34], xmm0
mov dword [esp + 0xb4], 0xffffffff
mov dword [esp + 0x30], 0x1025a44c
lea ecx, [esp + 0x68]
mov dword [esp + 0x68], 0x10259ec8
push esi
call fcn.1012b99c
mov dword [esp + 0xb0], 0
mov dword [esp + 0xb4], 0xffffffff
mov eax, dword [esp + 0x30]
mov eax, dword [eax + 4]
mov dword [esp + eax + 0x30], 0x10259e84
mov ecx, esi
call fcn.1002a528
mov dword [esp + 0x34], 0x10259e90
pxor xmm0, xmm0
movdqu xmmword [esp + 0x54], xmm0
mov dword [esp + 0x64], 0x10
lea edi, [esp + 0xb8]
mov dword [esp + 0xd4], edi
lea eax, [esp + 0xd0]
mov ecx, 0x102b6130
push eax
lea eax, [esp + 0xd8]
push eax
push 0x10266c24
push edi
lea esi, [esp + 0x34]
push esi
call fcn.10031bcc
mov eax, dword [esp + 0x24]
mov eax, dword [eax + 0x14]
cmp byte [esp + 0xc3], 0
jns 0x10177335
mov edi, dword [esp + 0xb8]
push eax
push edi
push str._s:_e_0_3_dm
push esi
call fcn.1015e100
add esp, 0x10
movzx eax, byte [esp + 0x2f]
test al, al
lea ecx, [esp + 0x30]
jns 0x1017735a
mov eax, dword [esp + 0x28]
mov esi, dword [esp + 0x24]
push eax
push esi
push ecx
call fcn.1002e338
add esp, 0xc
cmp byte [esp + 0x2f], 0
jns 0x10177378
push dword [esp + 0x24]
call fcn.10205096
add esp, 4
mov ebx, dword [0x102b6120]
test ebx, ebx
je 0x10177479
mov ecx, dword [esp + 0xc4]
mov eax, ebx
shr eax, 1
and eax, 0x55555555
mov edx, ebx
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
and eax, 0xf0f0f0f
imul edx, eax, 0x1010101
shr edx, 0x18
cmp edx, 1
ja 0x101773cd
lea esi, [ebx - 1]
and esi, ecx
jmp 0x101773df
mov esi, ecx
cmp ecx, ebx
jb 0x101773df
mov eax, ecx
mov edi, edx
xor edx, edx
div ebx
mov esi, edx
mov edx, edi
mov eax, dword [0x102b611c]
mov eax, dword [eax + esi*4]
test eax, eax
je 0x10177479
mov edi, dword [eax]
test edi, edi
je 0x10177479
lea eax, [ebx - 1]
mov dword [esp + 4], eax
mov dword [esp], edx
jmp 0x1017741b
cmp dword [edi + 8], ecx
je 0x10177443
mov edi, dword [edi]
test edi, edi
je 0x10177479
mov eax, dword [edi + 4]
cmp eax, ecx
je 0x10177410
cmp edx, 1
ja 0x10177430
and eax, dword [esp + 4]
jmp 0x1017743d
cmp eax, ebx
jb 0x1017743d
xor edx, edx
div ebx
mov eax, edx
mov edx, dword [esp]
cmp eax, esi
je 0x10177415
jmp 0x10177479
mov ecx, dword [edi + 0x14]
mov eax, dword [edi + 0x18]
mov esi, eax
sub esi, ecx
jae 0x10177456
sub eax, ecx
add eax, dword [edi + 0x10]
mov esi, eax
test esi, esi
je 0x10177479
nop
nop
nop
nop
nop
nop
push 2
push 0x10266b98
lea eax, [esp + 0x38]
push eax
call fcn.1002e338
add esp, 0xc
add esi, 0xffffffff
jne 0x10177460
mov ecx, dword [ebp + 0xc]
test ecx, ecx
lea edi, [esp + 0x30]
je 0x1017748a
push edi
call fcn.101c0e40
mov eax, dword [esp + 0x10]
cmp al, 0x45
jne 0x10177500
lea ecx, [esp + 0xc8]
call fcn.101624c0
sub esp, 0x10
fstp qword [esp + 8]
lea esi, [esp + 0x34]
mov dword [esp], esi
mov dword [esp + 4], str.___.3f_ms_
call fcn.1015e100
add esp, 0x10
movzx eax, byte [esp + 0x2f]
test al, al
jns 0x101774cd
mov eax, dword [esp + 0x28]
mov esi, dword [esp + 0x24]
push eax
push esi
push edi
call fcn.1002e338
add esp, 0xc
cmp byte [esp + 0x2f], 0
jns 0x101774eb
push dword [esp + 0x24]
call fcn.10205096
add esp, 4
push 5
push str.e_0_m
push edi
call fcn.1002e338
add esp, 0xc
jmp 0x1017758a
push 5
push str.e_0_m
push edi
mov ebx, eax
call fcn.1002e338
add esp, 0xc
cmp bl, 0x42
jne 0x1017758a
lea edx, [esp + 0xc4]
mov dword [esp + 0xd4], edx
lea ecx, [esp + 0x24]
lea eax, [esp + 0xd4]
push eax
call fcn.101783f0
add esp, 4
mov esi, dword [esp + 0x24]
lea ecx, [esi + 0xc]
push 1
call fcn.100329f4
mov eax, dword [esi + 0x18]
cmp dword [esi + 0x10], eax
jb 0x10177631
mov ecx, dword [esi + 0xc]
mov edx, dword [ebp + 8]
movq xmm0, qword [edx]
movq qword [ecx + eax*8], xmm0
mov eax, dword [esi + 0x10]
mov edx, dword [esi + 0x18]
lea ecx, [eax - 1]
cmp edx, ecx
jne 0x10177578
mov dword [esi + 0x18], 0
jmp 0x10177580
mov edi, edx
inc edi
mov dword [esi + 0x18], edi
jne 0x10177582
mov edx, ecx
cmp eax, edx
jb 0x10177634
lea ecx, [esp + 0x34]
push dword [esp + 0x14]
call fcn.1002b5cc
lea esi, [esp + 0x68]
mov eax, dword [esp + 0x30]
mov eax, dword [eax + 4]
mov dword [esp + eax + 0x30], 0x10259e84
lea edi, [esp + 0x34]
mov dword [esp + 0x34], 0x10259e90
cmp byte [esp + 0x5f], 0
jns 0x101775c9
push dword [esp + 0x54]
call fcn.10205096
add esp, 4
mov ecx, edi
call fcn.1002a32a
mov ecx, edi
call fcn.1002a710
mov ecx, esi
call fcn.1002a320
cmp byte [esp + 0xc3], 0
jns 0x101775f7
push dword [esp + 0xb8]
call fcn.10205096
add esp, 4
push 0x102b6088
call dword [sym.imp.kernel32.dll_ReleaseSRWLockExclusive]
mov ecx, dword [esp + 0xd8]
xor ecx, ebp
call fcn.10205d16
mov eax, dword [esp + 0x14]
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret
mov ecx, 0x102b6088
call fcn.1016d1b0
jmp 0x10176e4b
int3
int3
int3
int3