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

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
sub esp, 0x34
mov eax, dword [0x521014]
xor eax, ebp
mov dword [ebp - 0x10], eax
mov edi, dword [0x529cd8]
cmp edi, 1
jbe 0x4815a5
push edi
call dword [sym.imp.KERNEL32.dll_TryAcquireSRWLockExclusive]
test al, al
je 0x48153b
mov eax, dword [0x529cd8]
cmp eax, 1
jbe 0x4815e4
mov ebx, dword [ebp + 8]
mov eax, dword [0x529ce0]
test eax, eax
je 0x481547
mov dword [ebp - 0x34], edi
mov edi, dword [ebx + 4]
test edi, edi
je 0x481660
mov dword [ebp - 0x20], eax
push edi
call fcn.004a43f0
add esp, 4
mov ebx, eax
test eax, eax
je 0x4814b7
xor eax, eax
xor esi, esi
nop word [eax + eax]
movsx ecx, byte [edi + eax]
imul esi, esi, 0x83
add esi, ecx
add eax, 1
cmp ebx, eax
jne 0x481160
mov eax, dword [ebp - 0x20]
mov eax, dword [eax + 4]
test eax, eax
mov dword [ebp - 0x24], eax
mov dword [ebp - 0x30], edi
je 0x481504
mov ecx, eax
shr ecx, 1
and ecx, 0x55555555
sub eax, ecx
mov ecx, 0x33333333
mov edx, eax
and edx, ecx
shr eax, 2
and eax, ecx
add eax, edx
mov ecx, eax
shr ecx, 4
add ecx, eax
and ecx, 0xf0f0f0f
imul eax, ecx, 0x1010101
shr eax, 0x18
mov dword [ebp - 0x3c], eax
cmp eax, 1
jbe 0x4814cb
mov edx, esi
mov ecx, dword [ebp - 0x24]
cmp esi, ecx
jb 0x4811d4
mov eax, esi
xor edx, edx
div ecx
mov eax, dword [ebp - 0x20]
mov eax, dword [eax]
mov eax, dword [eax + edx*4]
test eax, eax
mov dword [ebp - 0x28], edx
je 0x481228
mov edi, dword [eax]
test edi, edi
je 0x481228
mov eax, dword [ebp - 0x24]
dec eax
mov dword [ebp - 0x38], eax
mov eax, dword [edi + 4]
cmp eax, esi
je 0x481219
cmp dword [ebp - 0x3c], 1
jbe 0x4814be
mov ecx, edi
mov edi, dword [ebp - 0x24]
cmp eax, edi
jb 0x481210
xor edx, edx
div edi
mov eax, edx
mov edi, ecx
mov edx, dword [ebp - 0x28]
cmp eax, edx
jne 0x481228
cmp dword [edi + 0xc], ebx
je 0x4814d8
mov edi, dword [edi]
test edi, edi
jne 0x4811f0
push 0x14
call fcn.0048b346
add esp, 4
mov edi, eax
mov eax, dword [ebp - 0x30]
mov dword [edi + 8], eax
mov dword [edi + 0xc], ebx
xor eax, eax
mov dword [edi + 0x10], eax
mov dword [edi + 4], esi
mov dword [edi], eax
mov ecx, dword [ebp - 0x20]
mov eax, dword [ecx + 0xc]
inc eax
movd xmm0, eax
movq xmm1, qword [0x504c70]
por xmm0, xmm1
subsd xmm0, xmm1
cvtsd2ss xmm0, xmm0
mov ebx, dword [ebp - 0x24]
movd xmm2, ebx
por xmm2, xmm1
subsd xmm2, xmm1
cvtsd2ss xmm2, xmm2
movss xmm1, dword [ecx + 0x10]
mulss xmm2, xmm1
ucomiss xmm0, xmm2
ja 0x481431
test ebx, ebx
je 0x481431
mov ebx, dword [ebp + 8]
mov edx, dword [ebp - 0x28]
mov esi, dword [ebp - 0x20]
mov eax, dword [esi]
mov ecx, dword [eax + edx*4]
test ecx, ecx
je 0x481387
mov eax, dword [ecx]
mov dword [edi], eax
mov dword [ecx], edi
inc dword [esi + 0xc]
mov esi, dword [edi + 0x10]
test esi, esi
jne 0x48150f
mov dword [edi + 0x10], ebx
mov esi, dword [0x529ce0]
mov edi, dword [ebp - 0x30]
push edi
call fcn.004a43f0
add esp, 4
cmp eax, 0xfffffff0
jae 0x48161e
mov ebx, eax
mov dword [ebp - 0x24], esi
cmp eax, 0xb
jae 0x4812f1
lea esi, [ebp - 0x1c]
mov byte [esi + 0xb], bl
test ebx, ebx
jne 0x48131a
jmp 0x481325
mov dword [ebp - 0x20], ebx
mov ebx, dword [ebp - 0x20]
add ebx, 0x10
and ebx, 0xfffffff0
push ebx
call fcn.0048b346
add esp, 4
mov esi, eax
mov dword [ebp - 0x1c], eax
or ebx, 0x80000000
mov dword [ebp - 0x14], ebx
mov ebx, dword [ebp - 0x20]
mov dword [ebp - 0x18], ebx
push ebx
push edi
push esi
call fcn.0048e490
add esp, 0xc
mov byte [esi + ebx], 0
movzx ebx, byte [ebp - 0x11]
mov ecx, ebx
test bl, bl
jns 0x48133b
mov eax, dword [ebp - 0x1c]
mov ebx, dword [ebp - 0x18]
jmp 0x48133e
lea eax, [ebp - 0x1c]
mov edx, ebx
cmp ebx, 4
jb 0x481376
nop word cs:[eax + eax]
nop
imul esi, dword [eax], 0x5bd1e995
mov edi, esi
shr edi, 0x18
xor edi, esi
imul esi, edi, 0x5bd1e995
imul edx, edx, 0x5bd1e995
xor edx, esi
add eax, 4
add ebx, 0xfffffffc
cmp ebx, 3
ja 0x481350
cmp ebx, 3
je 0x4813cc
cmp ebx, 2
je 0x4813d5
cmp ebx, 1
jne 0x4813e9
jmp 0x4813de
mov ecx, dword [esi + 8]
mov dword [edi], ecx
lea ecx, [esi + 8]
mov dword [esi + 8], edi
mov dword [eax + edx*4], ecx
mov eax, dword [edi]
test eax, eax
je 0x4812af
mov dword [ebp - 0x2c], edi
mov eax, dword [eax + 4]
mov edx, dword [ebp - 0x24]
lea ecx, [edx - 1]
test edx, ecx
je 0x481534
cmp eax, edx
jb 0x4813bf
mov ecx, edx
xor edx, edx
div ecx
mov eax, edx
mov ecx, dword [esi]
mov edi, dword [ebp - 0x2c]
mov dword [ecx + eax*4], edi
jmp 0x4812af
movzx esi, byte [eax + 2]
shl esi, 0x10
xor edx, esi
movzx esi, byte [eax + 1]
shl esi, 8
xor edx, esi
movzx eax, byte [eax]
xor eax, edx
imul edx, eax, 0x5bd1e995
mov eax, dword [ebp - 0x24]
mov edi, dword [eax + 0x18]
xor ebx, ebx
test edi, edi
jne 0x481663
test cl, cl
jns 0x481408
push dword [ebp - 0x1c]
call fcn.0048b376
add esp, 4
test ebx, ebx
mov edi, dword [ebp - 0x34]
mov ebx, dword [ebp + 8]
jne 0x481723
push edi
call dword [sym.imp.KERNEL32.dll_ReleaseSRWLockExclusive]
mov ecx, dword [ebp - 0x10]
xor ecx, ebp
call fcn.0048b980
mov eax, ebx
add esp, 0x34
pop esi
pop edi
pop ebx
pop ebp
ret
mov dword [ebp - 0x2c], edi
divss xmm0, xmm1
cvtss2sd xmm0, xmm0
sub esp, 8
movsd qword [esp], xmm0
call fcn.004b4880
add esp, 8
fstp dword [ebp - 0x40]
movss xmm0, dword [ebp - 0x40]
cvttss2si ecx, xmm0
mov edx, ecx
sar edx, 0x1f
subss xmm0, dword [0x5099d0]
cvttss2si eax, xmm0
and eax, edx
or eax, ecx
lea ecx, [ebx + ebx]
cmp ebx, 3
jb 0x4814c6
lea edi, [ebx - 1]
xor edx, edx
test ebx, edi
setne dl
mov ebx, dword [ebp + 8]
or edx, ecx
cmp edx, eax
cmovb edx, eax
mov edi, dword [ebp - 0x20]
mov ecx, edi
push edx
call fcn.0045f020
mov ecx, dword [edi + 4]
lea edx, [ecx - 1]
test ecx, edx
mov dword [ebp - 0x24], ecx
je 0x481500
cmp esi, ecx
jb 0x481758
mov eax, esi
xor edx, edx
div ecx
mov edi, dword [ebp - 0x2c]
jmp 0x481299
xor esi, esi
jmp 0x481173
and eax, dword [ebp - 0x38]
jmp 0x481215
xor edx, edx
inc edx
jmp 0x48147f
mov ecx, dword [ebp - 0x24]
lea edx, [ecx - 1]
and edx, esi
jmp 0x4811d4
push ebx
push dword [ebp - 0x30]
push dword [edi + 8]
mov dword [ebp - 0x2c], edi
call fcn.0048d57d
mov edx, dword [ebp - 0x28]
mov edi, dword [ebp - 0x2c]
add esp, 0xc
test eax, eax
jne 0x481222
mov ebx, dword [ebp + 8]
jmp 0x4812b2
and edx, esi
jmp 0x4814af
xor eax, eax
dec eax
mov dword [ebp - 0x28], eax
jmp 0x481228
cmp esi, ebx
mov edi, dword [ebp - 0x34]
je 0x481416
push edi
call dword [sym.imp.KERNEL32.dll_ReleaseSRWLockExclusive]
test ebx, ebx
je 0x48152d
mov eax, dword [ebx]
mov ecx, ebx
push 1
call dword [eax]
mov ebx, esi
jmp 0x48141d
and eax, ecx
jmp 0x4813bf
mov ecx, edi
call fcn.00471200
jmp 0x481111
push 0x50
call fcn.0048b346
add esp, 4
mov esi, eax
xorps xmm0, xmm0
movups xmmword [eax], xmm0
mov eax, 0x3f800000
mov dword [esi + 0x10], eax
movups xmmword [esi + 0x14], xmm0
mov dword [esi + 0x24], eax
movups xmmword [esi + 0x28], xmm0
mov dword [esi + 0x38], eax
movups xmmword [esi + 0x3c], xmm0
mov dword [esi + 0x4c], 0
mov eax, dword [0x529cd8]
cmp eax, 1
jbe 0x481626
mov eax, dword [0x529ce0]
mov dword [esi + 0x4c], eax
mov dword [0x529ce0], esi
call fcn.0045efa0
mov eax, dword [0x529ce0]
jmp 0x48112f
push 0x529cd8
call fcn.00442570
add esp, 4
test al, al
je 0x48175f
mov edi, 0x529cdc
mov ecx, 0x529cdc
call fcn.004711f0
mov eax, 0x529cd8
push eax
push 0
push 0x529cdc
push eax
call fcn.00442620
add esp, 0x10
jmp 0x481102
push 0x529cd8
call fcn.00442570
add esp, 4
test al, al
je 0x48176a
mov ecx, 0x529cdc
call fcn.004711f0
mov eax, 0x529cd8
push eax
push 0
push 0x529cdc
push eax
call fcn.00442620
add esp, 0x10
jmp 0x48111f
lea ecx, [ebp - 0x1c]
call fcn.004cb7c0
push 0x529cd8
call fcn.00442570
add esp, 4
test al, al
je 0x481774
mov ecx, 0x529cdc
call fcn.004711f0
mov eax, 0x529cd8
push eax
push 0
push 0x529cdc
push eax
call fcn.00442620
add esp, 0x10
jmp 0x481588
int3
mov eax, edx
shr eax, 0xd
xor eax, edx
imul eax, eax, 0x5bd1e995
mov edx, eax
shr edx, 0xf
xor edx, eax
mov dword [ebp - 0x20], edx
mov edx, edi
shr edx, 1
and edx, 0x55555555
mov eax, edi
sub eax, edx
mov edx, 0x33333333
mov esi, eax
and esi, edx
shr eax, 2
and eax, edx
add eax, esi
mov edx, eax
shr edx, 4
add edx, eax
and edx, 0xf0f0f0f
imul eax, edx, 0x1010101
shr eax, 0x18
mov dword [ebp - 0x30], eax
cmp eax, 1
ja 0x481731
lea eax, [edi - 1]
and eax, dword [ebp - 0x20]
mov dword [ebp - 0x28], eax
mov eax, dword [ebp - 0x24]
mov eax, dword [eax + 0x14]
mov edx, dword [ebp - 0x28]
mov eax, dword [eax + edx*4]
test eax, eax
je 0x4813f9
mov esi, dword [eax]
test esi, esi
je 0x4813f9
lea ebx, [edi - 1]
add dword [ebp - 0x24], 0x28
mov eax, dword [esi + 4]
cmp dword [ebp - 0x20], eax
je 0x48170d
cmp dword [ebp - 0x30], 1
ja 0x481701
and eax, ebx
cmp eax, dword [ebp - 0x28]
jne 0x48174c
mov esi, dword [esi]
test esi, esi
jne 0x4816e4
jmp 0x48174c
cmp eax, edi
jb 0x4816f4
xor edx, edx
div edi
mov eax, edx
jmp 0x4816f4
lea eax, [esi + 8]
mov ecx, dword [ebp - 0x24]
lea edx, [ebp - 0x1c]
push edx
push eax
call fcn.004f3c20
test al, al
je 0x4816f9
jmp 0x48174e
mov ecx, ebx
push 0x20
call fcn.004798e0
jmp 0x481416
mov eax, dword [ebp - 0x20]
mov edx, eax
mov dword [ebp - 0x28], eax
cmp eax, edi
jb 0x4816bf
mov eax, dword [ebp - 0x20]
xor edx, edx
div edi
mov dword [ebp - 0x28], edx
jmp 0x4816bf
xor esi, esi
mov cl, byte [ebp - 0x11]
mov ebx, esi
jmp 0x4813f9
mov edx, esi
jmp 0x4814af
mov edi, dword [0x529cd8]
jmp 0x481102
mov eax, dword [0x529cd8]
jmp 0x48111f
mov eax, dword [0x529cd8]
jmp 0x481588