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

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
sub esp, 0x3c
mov eax, dword [0x101b9014]
xor eax, ebp
mov dword [ebp - 0x10], eax
mov esi, dword [0x101bee98]
cmp esi, 1
ja 0x1006eadc
push 0x101bee98
call fcn.10065310
add esp, 4
test al, al
je 0x1006ead6
mov dword [0x101bee9c], 0
mov esi, 0x101bee9c
mov dword [0x101bee98], esi
jmp 0x1006eadc
mov esi, dword [0x101bee98]
push esi
call dword [sym.imp.KERNEL32.dll_TryAcquireSRWLockExclusive]
test al, al
je 0x1006f3fe
mov eax, dword [0x101bee98]
cmp eax, 1
ja 0x1006eb21
push 0x101bee98
call fcn.10065310
add esp, 4
test al, al
je 0x1006eb1c
mov dword [0x101bee9c], 0
mov eax, 0x101bee9c
mov dword [0x101bee98], eax
jmp 0x1006eb21
mov eax, dword [0x101bee98]
mov edi, dword [ebp + 8]
mov eax, dword [0x101beea0]
mov dword [ebp - 0x28], eax
test eax, eax
jne 0x1006eb49
push 0x54
call fcn.10145ba4
add esp, 4
mov ecx, eax
call fcn.1006e920
mov eax, dword [0x101beea0]
mov dword [ebp - 0x28], eax
mov edi, dword [edi + 4]
test edi, edi
je 0x1006f414
push edi
call fcn.10163870
add esp, 4
test eax, eax
mov dword [ebp - 0x3c], esi
mov dword [ebp - 0x34], edi
mov dword [ebp - 0x20], eax
je 0x1006eb80
mov ecx, eax
and ecx, 7
mov dword [ebp - 0x24], ecx
cmp eax, 8
jae 0x1006eb87
xor ebx, ebx
mov ecx, edi
jmp 0x1006ebf7
xor ebx, ebx
jmp 0x1006ec11
mov edx, eax
and edx, 0xfffffff8
xor ebx, ebx
mov ecx, edi
movsx esi, byte [ecx]
imul edi, ebx, 0x83
add edi, esi
movsx esi, byte [ecx + 1]
imul edi, edi, 0x83
add edi, esi
movsx esi, byte [ecx + 2]
imul edi, edi, 0x83
add edi, esi
movsx esi, byte [ecx + 3]
imul edi, edi, 0x83
add edi, esi
movsx esi, byte [ecx + 4]
imul edi, edi, 0x83
add edi, esi
movsx esi, byte [ecx + 5]
imul edi, edi, 0x83
add edi, esi
movsx esi, byte [ecx + 6]
imul edi, edi, 0x83
add edi, esi
movsx esi, byte [ecx + 7]
imul ebx, edi, 0x83
add ebx, esi
add ecx, 8
add edx, 0xfffffff8
jne 0x1006eb90
mov eax, dword [ebp - 0x24]
test eax, eax
je 0x1006ec11
xor edx, edx
movsx esi, byte [ecx + edx]
imul ebx, ebx, 0x83
add ebx, esi
inc edx
cmp eax, edx
jne 0x1006ec00
mov edi, dword [ebp - 0x28]
mov esi, dword [edi + 4]
test esi, esi
mov dword [ebp - 0x24], esi
je 0x1006ec63
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 eax, ecx, 0x1010101
shr eax, 0x18
mov dword [ebp - 0x38], eax
cmp eax, 1
ja 0x1006ec6f
lea edx, [esi - 1]
and edx, ebx
jmp 0x1006ec7e
mov dword [ebp - 0x2c], 0xffffffff
jmp 0x1006ed06
mov edx, ebx
cmp ebx, esi
mov edi, dword [ebp - 0x20]
jb 0x1006ec81
mov eax, ebx
xor edx, edx
div esi
mov edi, dword [ebp - 0x20]
mov eax, dword [ebp - 0x28]
mov eax, dword [eax]
mov dword [ebp - 0x2c], edx
mov eax, dword [eax + edx*4]
test eax, eax
je 0x1006ed03
mov ecx, dword [eax]
test ecx, ecx
je 0x1006ed03
lea eax, [esi - 1]
mov dword [ebp - 0x30], eax
jmp 0x1006eca6
mov ecx, dword [ecx]
test ecx, ecx
je 0x1006ed03
mov eax, dword [ecx + 4]
cmp eax, ebx
je 0x1006ecd2
cmp dword [ebp - 0x38], 1
ja 0x1006ecc0
and eax, dword [ebp - 0x30]
jmp 0x1006eccd
cmp eax, esi
jb 0x1006eccd
xor edx, edx
div esi
mov eax, edx
mov edi, dword [ebp - 0x20]
cmp eax, dword [ebp - 0x2c]
jne 0x1006ed03
cmp dword [ecx + 0xc], edi
jne 0x1006eca0
test edi, edi
je 0x1006ecf8
push edi
push dword [ebp - 0x34]
push dword [ecx + 8]
mov esi, ecx
call fcn.10147f9d
mov edi, dword [ebp - 0x20]
mov ecx, esi
mov esi, dword [ebp - 0x24]
add esp, 0xc
test eax, eax
jne 0x1006eca0
mov esi, dword [ebp - 0x3c]
mov ebx, dword [ebp + 8]
jmp 0x1006f126
mov edi, dword [ebp - 0x28]
push 0x14
call fcn.10145ba4
add esp, 4
mov ecx, eax
mov eax, dword [ebp - 0x34]
mov dword [ecx + 8], eax
mov eax, dword [ebp - 0x20]
mov dword [ecx + 0xc], eax
mov dword [ecx + 0x10], 0
mov dword [ecx + 4], ebx
mov dword [ebp - 0x30], ecx
mov dword [ecx], 0
mov eax, dword [edi + 0xc]
inc eax
movd xmm0, eax
movq xmm2, qword [0x1019d9f8]
por xmm0, xmm2
subsd xmm0, xmm2
cvtsd2ss xmm0, xmm0
movss xmm1, dword [edi + 0x10]
test esi, esi
je 0x1006ed7a
movd xmm3, esi
por xmm3, xmm2
subsd xmm3, xmm2
xorps xmm2, xmm2
cvtsd2ss xmm2, xmm3
mulss xmm2, xmm1
ucomiss xmm0, xmm2
ja 0x1006ed7a
mov edx, dword [ebp - 0x2c]
jmp 0x1006f0c6
divss xmm0, xmm1
cvtss2sd xmm0, xmm0
sub esp, 8
movsd qword [esp], xmm0
call fcn.10177120
add esp, 8
fstp dword [ebp - 0x48]
movss xmm0, dword [ebp - 0x48]
cvttss2si eax, xmm0
mov edx, eax
subss xmm0, dword [0x1018b960]
sar edx, 0x1f
cvttss2si ecx, xmm0
and ecx, edx
or ecx, eax
lea eax, [esi + esi]
mov edx, 1
cmp esi, 3
jb 0x1006edd5
mov edx, eax
mov eax, dword [ebp - 0x24]
lea esi, [eax - 1]
mov eax, edx
xor edx, edx
test dword [ebp - 0x24], esi
mov esi, dword [ebp - 0x24]
setne dl
or edx, eax
cmp edx, ecx
cmovbe edx, ecx
mov eax, 2
cmp edx, 1
je 0x1006edf3
lea ecx, [edx - 1]
test edx, ecx
jne 0x1006ef04
mov eax, edx
cmp eax, esi
jbe 0x1006ef18
mov esi, eax
cmp esi, 0x40000000
jae 0x1006f40f
lea eax, [esi*4]
push eax
call fcn.10145ba4
add esp, 4
mov ecx, dword [edi]
mov dword [edi], eax
test ecx, ecx
je 0x1006ee2a
push ecx
call fcn.10145bd4
add esp, 4
mov dword [edi + 4], esi
lea edx, [esi - 1]
mov dword [ebp - 0x2c], esi
mov eax, esi
and eax, 3
xor ecx, ecx
mov dword [ebp - 0x40], edx
cmp edx, 3
jb 0x1006ee7e
mov edx, dword [ebp - 0x2c]
and edx, 0xfffffffc
xor ecx, ecx
nop word [eax + eax]
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 0x1006ee50
test eax, eax
je 0x1006ee9d
nop word cs:[eax + eax]
mov edx, dword [edi]
mov dword [edx + ecx*4], 0
inc ecx
dec eax
jne 0x1006ee90
mov eax, dword [edi + 8]
mov dword [ebp - 0x20], eax
test eax, eax
mov esi, dword [ebp - 0x2c]
je 0x1006f0a4
mov eax, dword [ebp - 0x28]
lea edi, [eax + 8]
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 edx, eax
shr edx, 4
add edx, eax
mov eax, dword [ebp - 0x20]
mov ecx, dword [eax + 4]
and edx, 0xf0f0f0f
imul eax, edx, 0x1010101
shr eax, 0x18
mov dword [ebp - 0x24], eax
cmp eax, 1
ja 0x1006efdd
and ecx, dword [ebp - 0x40]
jmp 0x1006efe9
push edx
call fcn.1003cf14
add esp, 4
mov esi, dword [edi + 4]
cmp eax, esi
ja 0x1006edfb
jae 0x1006f0a4
mov dword [ebp - 0x20], eax
mov eax, dword [ebp - 0x28]
movss xmm0, dword [eax + 0xc]
orpd xmm0, xmmword [0x1019da00]
subsd xmm0, qword [0x1019d9f8]
cvtsd2ss xmm0, xmm0
divss xmm0, dword [eax + 0x10]
cvtss2sd xmm0, xmm0
sub esp, 8
movsd qword [esp], xmm0
call fcn.10177120
add esp, 8
fstp dword [ebp - 0x44]
movss xmm0, dword [ebp - 0x44]
cvttss2si ecx, xmm0
mov edx, ecx
subss xmm0, dword [0x1018b960]
cvttss2si edi, xmm0
sar edx, 0x1f
and edi, edx
or edi, ecx
cmp esi, 3
jb 0x1006f066
mov edx, esi
shr edx, 1
and edx, 0x55555555
mov ecx, esi
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 0x1006f066
lea ecx, [edi - 1]
bsr ecx, ecx
xor ecx, 0x1f
neg cl
mov eax, 1
shl eax, cl
cmp edi, 2
cmovb eax, edi
jmp 0x1006f06f
cmp ecx, esi
jb 0x1006efe9
mov eax, ecx
xor edx, edx
div esi
mov ecx, edx
mov eax, dword [ebp - 0x28]
mov eax, dword [eax]
mov dword [eax + ecx*4], edi
mov eax, dword [ebp - 0x20]
mov edi, dword [eax]
jmp 0x1006f009
mov eax, ecx
mov dword [ebp - 0x20], edi
mov edi, dword [edi]
mov ecx, eax
test edi, edi
je 0x1006f0a4
mov eax, dword [edi + 4]
cmp dword [ebp - 0x24], 1
ja 0x1006f020
and eax, dword [ebp - 0x40]
jmp 0x1006f02a
cmp eax, esi
jb 0x1006f02a
xor edx, edx
div esi
mov eax, edx
cmp eax, ecx
je 0x1006f000
mov esi, dword [ebp - 0x28]
mov edx, dword [esi]
cmp dword [edx + eax*4], 0
je 0x1006f05b
mov edx, dword [edi]
mov dword [ebp - 0x38], ecx
mov ecx, dword [ebp - 0x20]
mov dword [ecx], edx
mov edx, dword [esi]
mov edx, dword [edx + eax*4]
mov edx, dword [edx]
mov dword [edi], edx
mov edx, dword [esi]
mov eax, dword [edx + eax*4]
mov dword [eax], edi
mov edi, dword [ebp - 0x20]
mov eax, dword [ebp - 0x38]
jmp 0x1006f061
mov ecx, dword [ebp - 0x20]
mov dword [edx + eax*4], ecx
mov esi, dword [ebp - 0x2c]
jmp 0x1006f002
push edi
call fcn.1003cf14
add esp, 4
mov ecx, dword [ebp - 0x20]
cmp ecx, eax
cmova eax, ecx
cmp eax, esi
jae 0x1006f0a4
mov esi, eax
test eax, eax
mov edi, dword [ebp - 0x28]
jne 0x1006edfd
mov eax, dword [edi]
mov dword [edi], 0
test eax, eax
je 0x1006f09d
push eax
call fcn.10145bd4
add esp, 4
mov dword [edi + 4], 0
mov edi, dword [ebp - 0x28]
mov ecx, dword [edi + 4]
lea edx, [ecx - 1]
test ecx, edx
mov dword [ebp - 0x24], ecx
jne 0x1006f0b8
and edx, ebx
jmp 0x1006f0c6
cmp ebx, ecx
jae 0x1006f0c0
mov edx, ebx
jmp 0x1006f0c6
mov eax, ebx
xor edx, edx
div ecx
mov ecx, dword [edi]
mov eax, dword [ecx + edx*4]
test eax, eax
mov esi, dword [ebp - 0x3c]
mov ebx, dword [ebp + 8]
je 0x1006f0e0
mov ecx, dword [eax]
mov edx, dword [ebp - 0x30]
mov dword [edx], ecx
mov ecx, edx
jmp 0x1006f121
mov eax, dword [edi + 8]
mov esi, edx
mov edx, dword [ebp - 0x30]
mov dword [edx], eax
lea eax, [edi + 8]
mov dword [edi + 8], edx
mov dword [ecx + esi*4], eax
mov esi, dword [ebp - 0x3c]
mov ecx, edx
mov eax, dword [edx]
test eax, eax
je 0x1006f123
mov eax, dword [eax + 4]
mov ecx, dword [ebp - 0x24]
lea edx, [ecx - 1]
test ecx, edx
jne 0x1006f10f
and eax, edx
jmp 0x1006f119
cmp eax, ecx
jb 0x1006f119
xor edx, edx
div ecx
mov eax, edx
mov ecx, dword [ebp - 0x30]
shl eax, 2
add eax, dword [edi]
mov dword [eax], ecx
inc dword [edi + 0xc]
mov edi, dword [ecx + 0x10]
test edi, edi
je 0x1006f159
cmp edi, ebx
je 0x1006f3d4
push esi
call dword [sym.imp.KERNEL32.dll_ReleaseSRWLockExclusive]
test ebx, ebx
je 0x1006f152
mov eax, dword [ebx]
mov esi, dword [eax]
mov ecx, esi
call dword [section..00cfg]
mov ecx, ebx
push 1
call esi
mov ebx, edi
jmp 0x1006f3db
mov dword [ecx + 0x10], ebx
mov eax, dword [0x101beea0]
mov dword [ebp - 0x28], eax
mov edi, dword [ebp - 0x34]
push edi
call fcn.10163870
add esp, 4
cmp eax, 0x7ffffff0
jae 0x1006f40a
mov ebx, eax
cmp eax, 0xa
ja 0x1006f18a
mov byte [ebp - 0x11], bl
lea eax, [ebp - 0x1c]
jmp 0x1006f1a8
mov esi, ebx
or esi, 0xf
inc esi
push esi
call fcn.10145ba4
add esp, 4
mov dword [ebp - 0x1c], eax
or esi, 0x80000000
mov dword [ebp - 0x14], esi
mov dword [ebp - 0x18], ebx
lea esi, [eax + ebx]
cmp eax, edi
ja 0x1006f1b7
cmp esi, edi
ja 0x1006f417
test ebx, ebx
je 0x1006f1c6
push ebx
push edi
push eax
call fcn.10148eb0
add esp, 0xc
mov byte [esi], 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 - 0x34], edx
lea edx, [ebp + edx - 0x1c]
cmovs edx, eax
lea ebx, [ebp - 0x1c]
mov dword [ebp - 0x38], ecx
cmovs ebx, ecx
sub edx, ebx
cmp edx, 4
jb 0x1006f24c
mov ecx, ebx
mov eax, edx
nop dword [eax + eax]
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 0x1006f200
cmp edx, 1
je 0x1006f255
cmp edx, 2
mov esi, dword [ebp - 0x28]
je 0x1006f241
cmp edx, 3
jne 0x1006f263
movzx edx, byte [ecx + 2]
shl edx, 0x10
xor eax, edx
movzx edx, byte [ecx + 1]
shl edx, 8
xor eax, edx
jmp 0x1006f258
mov eax, edx
mov ecx, ebx
cmp edx, 1
jne 0x1006f22b
mov esi, dword [ebp - 0x28]
movzx ecx, byte [ecx]
xor ecx, eax
imul eax, ecx, 0x5bd1e995
mov edi, dword [esi + 0x18]
mov dword [ebp - 0x24], 0
test edi, edi
je 0x1006f3b2
mov ecx, eax
shr ecx, 0xd
xor ecx, eax
imul eax, ecx, 0x5bd1e995
mov esi, eax
shr esi, 0xf
xor esi, eax
mov ecx, edi
shr ecx, 1
and ecx, 0x55555555
mov eax, edi
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 eax, ecx, 0x1010101
shr eax, 0x18
mov dword [ebp - 0x2c], eax
cmp eax, 1
ja 0x1006f2d0
lea edx, [edi - 1]
and edx, esi
mov ecx, edi
jmp 0x1006f2de
mov edx, esi
cmp esi, edi
mov ecx, edi
jb 0x1006f2de
mov eax, esi
xor edx, edx
div ecx
mov eax, dword [ebp - 0x28]
mov eax, dword [eax + 0x14]
mov eax, dword [eax + edx*4]
test eax, eax
je 0x1006f3b2
mov dword [ebp - 0x28], edx
mov edi, dword [eax]
test edi, edi
je 0x1006f3b2
mov dword [ebp - 0x24], ecx
lea eax, [ecx - 1]
mov dword [ebp - 0x30], eax
mov eax, dword [ebp - 0x34]
test al, al
mov ecx, dword [ebp - 0x20]
cmovns ecx, eax
mov dword [ebp - 0x20], ecx
jmp 0x1006f32b
and eax, dword [ebp - 0x30]
cmp eax, dword [ebp - 0x28]
jne 0x1006f3ef
mov edi, dword [edi]
test edi, edi
je 0x1006f3ef
mov eax, dword [edi + 4]
cmp esi, eax
jne 0x1006f380
movzx eax, byte [edi + 0x13]
mov ecx, eax
test al, al
jns 0x1006f33f
mov ecx, dword [edi + 0xc]
cmp ecx, dword [ebp - 0x20]
jne 0x1006f321
lea ecx, [edi + 8]
test al, al
jns 0x1006f34d
mov ecx, dword [ecx]
js 0x1006f395
cmp dword [ebp - 0x20], 0
je 0x1006f3af
xor ecx, ecx
nop word [eax + eax]
movzx edx, byte [edi + ecx + 8]
cmp dl, byte [ebx + ecx]
jne 0x1006f321
inc ecx
cmp eax, ecx
jne 0x1006f360
jmp 0x1006f3af
cmp dword [ebp - 0x2c], 1
jbe 0x1006f315
mov ecx, dword [ebp - 0x24]
cmp eax, ecx
jb 0x1006f318
xor edx, edx
div ecx
mov eax, edx
jmp 0x1006f318
mov eax, dword [ebp - 0x20]
test eax, eax
je 0x1006f3af
push eax
push ebx
push ecx
call fcn.10147f9d
add esp, 0xc
test eax, eax
jne 0x1006f321
mov dword [ebp - 0x24], edi
cmp byte [ebp - 0x34], 0
jns 0x1006f3c3
push dword [ebp - 0x38]
call fcn.10145bd4
add esp, 4
cmp dword [ebp - 0x24], 0
mov esi, dword [ebp - 0x3c]
mov ebx, dword [ebp + 8]
je 0x1006f3d4
lock or dword [ebx + 8], 0x20
push esi
call dword [sym.imp.KERNEL32.dll_ReleaseSRWLockExclusive]
mov ecx, dword [ebp - 0x10]
xor ecx, ebp
call fcn.101465a3
mov eax, ebx
add esp, 0x3c
pop esi
pop edi
pop ebx
pop ebp
ret
mov dword [ebp - 0x24], 0
cmp byte [ebp - 0x34], 0
jns 0x1006f3c3
jmp 0x1006f3b8
mov ecx, esi
call fcn.10083990
jmp 0x1006eaeb
call fcn.1015b4f0
call fcn.10034a48
int3
int3