Function at 0x4a2840
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 [0x597010]
xor eax, ebp
mov dword [ebp - 0x10], eax
mov esi, dword [0x5aabc0]
cmp esi, 1
ja 0x4a288c
push 0x5aabc0
call fcn.00473460
add esp, 4
test al, al
je 0x4a2886
mov dword [0x5aabc4], 0
mov esi, 0x5aabc4
mov dword [0x5aabc0], esi
jmp 0x4a288c
mov esi, dword [0x5aabc0]
push esi
call dword [sym.imp.KERNEL32.dll_TryAcquireSRWLockExclusive]
test al, al
jne 0x4a289e
push esi
call dword [sym.imp.KERNEL32.dll_AcquireSRWLockExclusive]
mov eax, dword [0x5aabc0]
cmp eax, 1
ja 0x4a28d4
push 0x5aabc0
call fcn.00473460
add esp, 4
test al, al
je 0x4a28cf
mov dword [0x5aabc4], 0
mov eax, 0x5aabc4
mov dword [0x5aabc0], eax
jmp 0x4a28d4
mov eax, dword [0x5aabc0]
mov edi, dword [ebp + 8]
mov eax, dword [0x5aabc8]
mov dword [ebp - 0x28], eax
test eax, eax
jne 0x4a28fc
push 0x54
call fcn.005283f4
add esp, 4
mov ecx, eax
call fcn.004a26d0
mov eax, dword [0x5aabc8]
mov dword [ebp - 0x28], eax
mov eax, dword [edi + 4]
test eax, eax
je 0x4a31df
mov dword [ebp - 0x24], eax
push eax
call fcn.005429e0
add esp, 4
test eax, eax
mov dword [ebp - 0x20], eax
mov dword [ebp - 0x40], esi
je 0x4a292e
mov ebx, eax
and ebx, 7
cmp eax, 8
jae 0x4a2935
xor edi, edi
mov ecx, dword [ebp - 0x24]
jmp 0x4a29a7
xor edi, edi
jmp 0x4a29c1
mov edx, eax
and edx, 0xfffffff8
xor edi, edi
mov ecx, dword [ebp - 0x24]
nop
movsx esi, byte [ecx]
imul edi, edi, 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 edi, edi, 0x83
add edi, esi
add ecx, 8
add edx, 0xfffffff8
jne 0x4a2940
test ebx, ebx
je 0x4a29c1
xor edx, edx
nop dword [eax]
movsx esi, byte [ecx + edx]
imul edi, edi, 0x83
add edi, esi
inc edx
cmp ebx, edx
jne 0x4a29b0
mov eax, dword [ebp - 0x28]
mov esi, dword [eax + 4]
test esi, esi
mov dword [ebp - 0x2c], esi
je 0x4a2a18
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
mov eax, esi
imul ecx, ecx, 0x1010101
shr ecx, 0x18
mov dword [ebp - 0x38], ecx
cmp ecx, 1
mov ebx, dword [ebp + 8]
ja 0x4a2a27
lea edx, [eax - 1]
and edx, edi
jmp 0x4a2a37
mov dword [ebp - 0x30], 0xffffffff
mov ebx, dword [ebp + 8]
jmp 0x4a2acb
mov edx, edi
cmp edi, eax
mov esi, dword [ebp - 0x20]
jb 0x4a2a3a
mov eax, edi
xor edx, edx
div dword [ebp - 0x2c]
mov esi, dword [ebp - 0x20]
mov eax, dword [ebp - 0x28]
mov eax, dword [eax]
mov dword [ebp - 0x30], edx
mov eax, dword [eax + edx*4]
test eax, eax
je 0x4a2ac8
mov ecx, dword [eax]
test ecx, ecx
je 0x4a2ac8
mov eax, dword [ebp - 0x2c]
dec eax
mov dword [ebp - 0x34], eax
jmp 0x4a2a66
mov ecx, dword [ecx]
test ecx, ecx
je 0x4a2ac5
mov eax, dword [ecx + 4]
cmp eax, edi
je 0x4a2a95
cmp dword [ebp - 0x38], 1
ja 0x4a2a80
and eax, dword [ebp - 0x34]
jmp 0x4a2a90
mov ebx, dword [ebp - 0x2c]
cmp eax, ebx
jb 0x4a2a90
xor edx, edx
div ebx
mov eax, edx
mov esi, dword [ebp - 0x20]
cmp eax, dword [ebp - 0x30]
jne 0x4a2ac5
cmp dword [ecx + 0xc], esi
jne 0x4a2a60
test esi, esi
mov eax, dword [ebp - 0x24]
je 0x4a31be
push esi
push eax
push dword [ecx + 8]
mov ebx, ecx
call fcn.0052a60d
mov esi, dword [ebp - 0x20]
mov ecx, ebx
add esp, 0xc
test eax, eax
jne 0x4a2a60
mov ebx, dword [ebp + 8]
jmp 0x4a2ee8
mov ebx, dword [ebp + 8]
mov esi, dword [ebp - 0x2c]
push 0x14
call fcn.005283f4
add esp, 4
mov ecx, eax
mov eax, dword [ebp - 0x24]
mov dword [ecx + 8], eax
mov eax, dword [ebp - 0x20]
mov dword [ecx + 0xc], eax
mov dword [ecx + 0x10], 0
mov dword [ecx + 4], edi
mov dword [ebp - 0x34], ecx
mov dword [ecx], 0
mov ecx, dword [ebp - 0x28]
mov eax, dword [ecx + 0xc]
inc eax
movd xmm0, eax
movq xmm2, qword [0x57cf98]
por xmm0, xmm2
subsd xmm0, xmm2
cvtsd2ss xmm0, xmm0
movss xmm1, dword [ecx + 0x10]
test esi, esi
je 0x4a2b42
movd xmm3, esi
por xmm3, xmm2
subsd xmm3, xmm2
xorps xmm2, xmm2
cvtsd2ss xmm2, xmm3
mulss xmm2, xmm1
ucomiss xmm0, xmm2
ja 0x4a2b42
mov edi, dword [ebp - 0x30]
jmp 0x4a2e87
divss xmm0, xmm1
cvtss2sd xmm0, xmm0
sub esp, 8
movsd qword [esp], xmm0
call fcn.00556560
add esp, 8
fstp dword [ebp - 0x48]
movss xmm0, dword [ebp - 0x48]
cvttss2si eax, xmm0
mov edx, eax
subss xmm0, dword [0x56b4f8]
sar edx, 0x1f
cvttss2si ecx, xmm0
and ecx, edx
or ecx, eax
lea ebx, [esi + esi]
mov edx, 1
cmp esi, 3
jb 0x4a2b99
mov eax, dword [ebp - 0x2c]
lea esi, [eax - 1]
xor edx, edx
test dword [ebp - 0x2c], esi
mov esi, dword [ebp - 0x2c]
setne dl
or edx, ebx
cmp edx, ecx
cmovbe edx, ecx
mov eax, 2
cmp edx, 1
mov ebx, dword [ebp - 0x28]
je 0x4a2bba
lea ecx, [edx - 1]
test edx, ecx
jne 0x4a2cc4
mov eax, edx
cmp eax, esi
jbe 0x4a2cd8
cmp eax, 0x40000000
jae 0x4a31da
mov dword [ebp - 0x30], eax
lea eax, [eax*4]
push eax
call fcn.005283f4
add esp, 4
mov ecx, dword [ebx]
mov dword [ebx], eax
test ecx, ecx
je 0x4a2bf1
push ecx
call fcn.00528424
add esp, 4
mov eax, dword [ebp - 0x30]
mov dword [ebx + 4], eax
lea edx, [eax - 1]
and eax, 3
xor ecx, ecx
mov dword [ebp - 0x3c], edx
cmp edx, 3
jb 0x4a2c3e
mov edx, dword [ebp - 0x30]
and edx, 0xfffffffc
xor ecx, ecx
nop
mov esi, dword [ebx]
mov dword [esi + ecx*4], 0
mov esi, dword [ebx]
mov dword [esi + ecx*4 + 4], 0
mov esi, dword [ebx]
mov dword [esi + ecx*4 + 8], 0
mov esi, dword [ebx]
mov dword [esi + ecx*4 + 0xc], 0
add ecx, 4
cmp edx, ecx
jne 0x4a2c10
test eax, eax
je 0x4a2c5d
nop word cs:[eax + eax]
mov edx, dword [ebx]
mov dword [edx + ecx*4], 0
inc ecx
dec eax
jne 0x4a2c50
mov eax, dword [ebx + 8]
mov dword [ebp - 0x20], eax
test eax, eax
mov ebx, dword [ebp - 0x30]
je 0x4a2e62
mov eax, dword [ebp - 0x28]
lea esi, [eax + 8]
mov ecx, ebx
shr ecx, 1
and ecx, 0x55555555
mov eax, ebx
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 - 0x2c], eax
cmp eax, 1
ja 0x4a2d9d
and ecx, dword [ebp - 0x3c]
jmp 0x4a2da9
push edx
call fcn.004352a4
add esp, 4
mov esi, dword [ebx + 4]
cmp eax, esi
ja 0x4a2bc2
jae 0x4a2e62
mov dword [ebp - 0x20], eax
mov eax, dword [ebp - 0x28]
movss xmm0, dword [eax + 0xc]
orpd xmm0, xmmword [0x57cfa0]
subsd xmm0, qword [0x57cf98]
cvtsd2ss xmm0, xmm0
divss xmm0, dword [eax + 0x10]
cvtss2sd xmm0, xmm0
sub esp, 8
movsd qword [esp], xmm0
call fcn.00556560
add esp, 8
fstp dword [ebp - 0x44]
movss xmm0, dword [ebp - 0x44]
cvttss2si ecx, xmm0
mov edx, ecx
subss xmm0, dword [0x56b4f8]
cvttss2si ebx, xmm0
sar edx, 0x1f
and ebx, edx
or ebx, ecx
cmp esi, 3
jb 0x4a2e26
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 0x4a2e26
lea ecx, [ebx - 1]
bsr ecx, ecx
xor ecx, 0x1f
neg cl
mov eax, 1
shl eax, cl
cmp ebx, 2
cmovb eax, ebx
jmp 0x4a2e2f
cmp ecx, ebx
jb 0x4a2da9
mov eax, ecx
xor edx, edx
div ebx
mov ecx, edx
mov eax, dword [ebp - 0x28]
mov eax, dword [eax]
mov dword [eax + ecx*4], esi
mov eax, dword [ebp - 0x20]
mov esi, dword [eax]
jmp 0x4a2dc9
mov eax, ecx
mov dword [ebp - 0x20], esi
mov esi, dword [esi]
mov ecx, eax
test esi, esi
je 0x4a2e62
mov eax, dword [esi + 4]
cmp dword [ebp - 0x2c], 1
ja 0x4a2de0
and eax, dword [ebp - 0x3c]
jmp 0x4a2dea
cmp eax, ebx
jb 0x4a2dea
xor edx, edx
div ebx
mov eax, edx
cmp eax, ecx
je 0x4a2dc0
mov ebx, dword [ebp - 0x28]
mov edx, dword [ebx]
cmp dword [edx + eax*4], 0
je 0x4a2e1b
mov edx, dword [esi]
mov dword [ebp - 0x38], ecx
mov ecx, dword [ebp - 0x20]
mov dword [ecx], edx
mov edx, dword [ebx]
mov edx, dword [edx + eax*4]
mov edx, dword [edx]
mov dword [esi], edx
mov edx, dword [ebx]
mov eax, dword [edx + eax*4]
mov dword [eax], esi
mov esi, dword [ebp - 0x20]
mov eax, dword [ebp - 0x38]
jmp 0x4a2e21
mov ecx, dword [ebp - 0x20]
mov dword [edx + eax*4], ecx
mov ebx, dword [ebp - 0x30]
jmp 0x4a2dc2
push ebx
call fcn.004352a4
add esp, 4
mov ecx, dword [ebp - 0x20]
cmp ecx, eax
cmova eax, ecx
cmp eax, esi
jae 0x4a2e62
test eax, eax
mov ebx, dword [ebp - 0x28]
jne 0x4a2bc2
mov eax, dword [ebx]
mov dword [ebx], 0
test eax, eax
je 0x4a2e5b
push eax
call fcn.00528424
add esp, 4
mov dword [ebx + 4], 0
mov eax, dword [ebp - 0x28]
mov esi, dword [eax + 4]
lea eax, [esi - 1]
test esi, eax
jne 0x4a2e78
and eax, edi
mov ebx, dword [ebp + 8]
mov edi, eax
jmp 0x4a2e87
cmp edi, esi
mov ebx, dword [ebp + 8]
jb 0x4a2e87
mov eax, edi
xor edx, edx
div esi
mov edi, edx
mov edx, dword [ebp - 0x28]
mov ecx, dword [edx]
mov eax, dword [ecx + edi*4]
test eax, eax
je 0x4a2e9e
mov ecx, dword [eax]
mov edx, dword [ebp - 0x34]
mov dword [edx], ecx
mov ecx, edx
jmp 0x4a2ee0
mov dword [ebp - 0x2c], esi
mov eax, dword [edx + 8]
mov esi, dword [ebp - 0x34]
mov dword [esi], eax
lea eax, [edx + 8]
mov dword [edx + 8], esi
mov dword [ecx + edi*4], eax
mov ecx, esi
mov eax, dword [esi]
test eax, eax
je 0x4a2ee2
mov eax, dword [eax + 4]
mov esi, dword [ebp - 0x2c]
lea ecx, [esi - 1]
test esi, ecx
jne 0x4a2ecb
and eax, ecx
jmp 0x4a2ed5
cmp eax, esi
jb 0x4a2ed5
xor edx, edx
div esi
mov eax, edx
shl eax, 2
mov ecx, dword [ebp - 0x28]
add eax, dword [ecx]
mov ecx, dword [ebp - 0x34]
mov dword [eax], ecx
mov eax, dword [ebp - 0x28]
inc dword [eax + 0xc]
mov eax, dword [ebp - 0x24]
mov edi, dword [ecx + 0x10]
test edi, edi
je 0x4a2f20
cmp edi, ebx
je 0x4a31a1
push dword [ebp - 0x40]
call dword [sym.imp.KERNEL32.dll_ReleaseSRWLockExclusive]
test ebx, ebx
je 0x4a2f19
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 0x4a31aa
mov dword [ecx + 0x10], ebx
mov esi, dword [0x5aabc8]
push eax
call fcn.005429e0
add esp, 4
cmp eax, 0x7ffffff0
jae 0x4a31d5
mov ebx, eax
lea edi, [ebp - 0x1c]
cmp eax, 0xa
mov dword [ebp - 0x20], esi
ja 0x4a2f51
mov byte [ebp - 0x11], bl
mov esi, edi
jmp 0x4a2f76
mov edi, ebx
or ebx, 0xf
inc ebx
push ebx
call fcn.005283f4
add esp, 4
mov esi, eax
mov dword [ebp - 0x1c], eax
or ebx, 0x80000000
mov dword [ebp - 0x14], ebx
mov ebx, edi
lea edi, [ebp - 0x1c]
mov dword [ebp - 0x18], ebx
mov eax, dword [ebp - 0x24]
cmp esi, eax
ja 0x4a2f8d
mov eax, ebx
add eax, esi
cmp eax, dword [ebp - 0x24]
mov eax, dword [ebp - 0x24]
ja 0x4a31e2
push ebx
push eax
push esi
call fcn.0052bc90
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 - 0x28], eax
add eax, ecx
test dl, dl
mov dword [ebp - 0x2c], edx
lea edx, [ebp + edx - 0x1c]
cmovs edx, eax
mov dword [ebp - 0x38], ecx
cmovs edi, ecx
sub edx, edi
cmp edx, 4
jb 0x4a301c
mov ecx, edi
mov eax, edx
nop dword [eax + eax]
imul esi, dword [ecx], 0x5bd1e995
mov ebx, esi
shr ebx, 0x18
xor ebx, esi
imul esi, ebx, 0x5bd1e995
imul eax, eax, 0x5bd1e995
xor eax, esi
add ecx, 4
add edx, 0xfffffffc
cmp edx, 3
ja 0x4a2fd0
cmp edx, 1
je 0x4a3025
cmp edx, 2
mov esi, dword [ebp - 0x20]
je 0x4a3011
cmp edx, 3
jne 0x4a3033
movzx edx, byte [ecx + 2]
shl edx, 0x10
xor eax, edx
movzx edx, byte [ecx + 1]
shl edx, 8
xor eax, edx
jmp 0x4a3028
mov eax, edx
mov ecx, edi
cmp edx, 1
jne 0x4a2ffb
mov esi, dword [ebp - 0x20]
movzx ecx, byte [ecx]
xor ecx, eax
imul eax, ecx, 0x5bd1e995
mov ebx, dword [esi + 0x18]
mov dword [ebp - 0x24], 0
test ebx, ebx
je 0x4a3182
mov ecx, eax
shr ecx, 0xd
xor ecx, eax
imul eax, ecx, 0x5bd1e995
mov esi, eax
shr esi, 0xf
xor esi, eax
mov ecx, ebx
shr ecx, 1
and ecx, 0x55555555
mov eax, ebx
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 - 0x30], eax
cmp eax, 1
ja 0x4a30a0
lea edx, [ebx - 1]
and edx, esi
mov ecx, ebx
jmp 0x4a30ae
mov edx, esi
cmp esi, ebx
mov ecx, ebx
jb 0x4a30ae
mov eax, esi
xor edx, edx
div ecx
mov eax, dword [ebp - 0x20]
mov eax, dword [eax + 0x14]
mov eax, dword [eax + edx*4]
test eax, eax
je 0x4a3182
mov dword [ebp - 0x20], edx
mov ebx, dword [eax]
test ebx, ebx
je 0x4a3182
mov dword [ebp - 0x24], ecx
lea eax, [ecx - 1]
mov dword [ebp - 0x34], eax
mov eax, dword [ebp - 0x2c]
test al, al
mov ecx, dword [ebp - 0x28]
cmovns ecx, eax
mov dword [ebp - 0x28], ecx
jmp 0x4a30fb
and eax, dword [ebp - 0x34]
cmp eax, dword [ebp - 0x20]
jne 0x4a31c6
mov ebx, dword [ebx]
test ebx, ebx
je 0x4a31c6
mov eax, dword [ebx + 4]
cmp esi, eax
jne 0x4a3150
movzx eax, byte [ebx + 0x13]
mov ecx, eax
test al, al
jns 0x4a310f
mov ecx, dword [ebx + 0xc]
cmp ecx, dword [ebp - 0x28]
jne 0x4a30f1
lea ecx, [ebx + 8]
test al, al
jns 0x4a311d
mov ecx, dword [ecx]
js 0x4a3165
cmp dword [ebp - 0x28], 0
je 0x4a317f
xor ecx, ecx
nop word [eax + eax]
movzx edx, byte [ebx + ecx + 8]
cmp dl, byte [edi + ecx]
jne 0x4a30f1
inc ecx
cmp eax, ecx
jne 0x4a3130
jmp 0x4a317f
cmp dword [ebp - 0x30], 1
jbe 0x4a30e5
mov ecx, dword [ebp - 0x24]
cmp eax, ecx
jb 0x4a30e8
xor edx, edx
div ecx
mov eax, edx
jmp 0x4a30e8
mov eax, dword [ebp - 0x28]
test eax, eax
je 0x4a317f
push eax
push edi
push ecx
call fcn.0052a60d
add esp, 0xc
test eax, eax
jne 0x4a30f1
mov dword [ebp - 0x24], ebx
cmp byte [ebp - 0x2c], 0
jns 0x4a3193
push dword [ebp - 0x38]
call fcn.00528424
add esp, 4
cmp dword [ebp - 0x24], 0
mov ebx, dword [ebp + 8]
je 0x4a31a1
lock or dword [ebx + 8], 0x20
push dword [ebp - 0x40]
call dword [sym.imp.KERNEL32.dll_ReleaseSRWLockExclusive]
mov ecx, dword [ebp - 0x10]
xor ecx, ebp
call fcn.00528e13
mov eax, ebx
add esp, 0x3c
pop esi
pop edi
pop ebx
pop ebp
ret
mov ebx, dword [ebp + 8]
jmp 0x4a2eeb
mov dword [ebp - 0x24], 0
cmp byte [ebp - 0x2c], 0
jns 0x4a3193
jmp 0x4a3188
call fcn.0053bf0b
call fcn.0042d55a
int3
int3