Function at 0x47d1a0
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 [0x511014]
xor eax, ebp
mov dword [ebp - 0x10], eax
mov eax, dword [0x526058]
cmp eax, 1
jbe 0x47d8bf
mov dword [ebp - 0x38], eax
push eax
call dword [sym.imp.KERNEL32.dll_TryAcquireSRWLockExclusive]
test al, al
je 0x47d8ab
mov eax, dword [0x526058]
cmp eax, 1
jbe 0x47d8ed
mov esi, dword [ebp + 8]
mov edi, dword [0x526060]
test edi, edi
je 0x47d976
mov esi, dword [esi + 4]
test esi, esi
je 0x47d9bc
push esi
call fcn.004acda0
add esp, 4
test eax, eax
mov dword [ebp - 0x34], esi
mov dword [ebp - 0x20], edi
mov dword [ebp - 0x24], eax
je 0x47d6da
mov edx, eax
and eax, 7
cmp edx, 8
jae 0x47d227
xor ebx, ebx
mov ecx, esi
jmp 0x47d297
and edx, 0xfffffff8
xor ebx, ebx
mov ecx, esi
nop
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 0x47d230
test eax, eax
mov edi, dword [ebp - 0x20]
je 0x47d2b1
xor edx, edx
movsx esi, byte [ecx + edx]
imul ebx, ebx, 0x83
add ebx, esi
inc edx
cmp eax, edx
jne 0x47d2a0
mov esi, dword [edi + 4]
test esi, esi
je 0x47d896
mov ecx, esi
shr ecx, 1
and ecx, 0x55555555
mov eax, esi
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 edi, ecx, 0x1010101
shr edi, 0x18
cmp edi, 1
jbe 0x47d88c
mov edx, ebx
cmp ebx, esi
jb 0x47d305
mov eax, ebx
xor edx, edx
div esi
mov eax, dword [ebp - 0x20]
mov eax, dword [eax]
mov eax, dword [eax + edx*4]
test eax, eax
mov dword [ebp - 0x2c], edx
je 0x47d37c
mov ecx, dword [eax]
test ecx, ecx
je 0x47d37c
lea eax, [esi - 1]
mov dword [ebp - 0x30], eax
mov eax, dword [ecx + 4]
cmp eax, ebx
je 0x47d341
cmp edi, 1
jbe 0x47d87c
cmp eax, esi
jb 0x47d33a
xor edx, edx
div esi
mov eax, edx
mov edx, dword [ebp - 0x2c]
cmp eax, edx
jne 0x47d37c
mov eax, dword [ebp - 0x24]
cmp dword [ecx + 0xc], eax
je 0x47d351
mov ecx, dword [ecx]
test ecx, ecx
jne 0x47d320
jmp 0x47d37c
mov eax, dword [ebp - 0x24]
test eax, eax
je 0x47d374
push eax
push dword [ebp - 0x34]
push dword [ecx + 8]
mov dword [ebp - 0x28], ecx
call fcn.00494bf2
mov ecx, dword [ebp - 0x28]
add esp, 0xc
test eax, eax
mov edx, dword [ebp - 0x2c]
jne 0x47d349
mov ebx, dword [ebp + 8]
jmp 0x47d44d
mov edi, dword [ebp - 0x20]
push 0x14
call fcn.00494aa6
add esp, 4
mov ecx, eax
mov eax, dword [ebp - 0x34]
mov dword [ecx + 8], eax
mov eax, dword [ebp - 0x24]
mov dword [ecx + 0xc], eax
mov dword [ecx + 0x10], 0
mov dword [ebp - 0x28], ecx
mov dword [ecx + 4], ebx
mov eax, dword [edi + 0xc]
inc eax
movd xmm0, eax
movq xmm2, qword [0x500408]
por xmm0, xmm2
subsd xmm0, xmm2
cvtsd2ss xmm0, xmm0
movss xmm1, dword [edi + 0x10]
test esi, esi
je 0x47d6e1
movd xmm3, esi
por xmm3, xmm2
subsd xmm3, xmm2
xorps xmm2, xmm2
cvtsd2ss xmm2, xmm3
mulss xmm2, xmm1
ucomiss xmm0, xmm2
ja 0x47d6e1
mov edx, dword [ebp - 0x2c]
mov ecx, dword [edi]
mov eax, dword [ecx + edx*4]
test eax, eax
mov ebx, dword [ebp + 8]
je 0x47d407
mov ecx, dword [eax]
mov edx, dword [ebp - 0x28]
mov dword [edx], ecx
mov ecx, edx
jmp 0x47d448
mov dword [ebp - 0x20], esi
mov eax, dword [edi + 8]
mov esi, edx
mov edx, dword [ebp - 0x28]
mov dword [edx], eax
lea eax, [edi + 8]
mov dword [edi + 8], edx
mov dword [ecx + esi*4], eax
mov ecx, edx
mov eax, dword [edx]
test eax, eax
je 0x47d44a
mov eax, dword [eax + 4]
mov esi, dword [ebp - 0x20]
lea ecx, [esi - 1]
test esi, ecx
je 0x47d8b8
cmp eax, esi
jb 0x47d440
xor edx, edx
div esi
mov eax, edx
mov ecx, dword [ebp - 0x28]
shl eax, 2
add eax, dword [edi]
mov dword [eax], ecx
inc dword [edi + 0xc]
mov edi, dword [ecx + 0x10]
test edi, edi
jne 0x47d6a4
mov dword [ecx + 0x10], ebx
mov eax, dword [0x526060]
mov dword [ebp - 0x20], eax
mov edi, dword [ebp - 0x34]
push edi
call fcn.004acda0
add esp, 4
cmp eax, 0x7ffffff0
jae 0x47d9ac
mov ebx, eax
cmp eax, 0xa
ja 0x47d489
lea eax, [ebp - 0x1c]
mov byte [eax + 0xb], bl
jmp 0x47d4a7
mov esi, ebx
or esi, 0xf
inc esi
push esi
call fcn.00494aa6
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 0x47d4b6
cmp esi, edi
ja 0x47d9bf
test ebx, ebx
je 0x47d4c5
push ebx
push edi
push eax
call fcn.00498400
add esp, 0xc
mov byte [esi], 0
movzx ebx, byte [ebp - 0x11]
mov eax, dword [ebp - 0x1c]
test bl, bl
mov dword [ebp - 0x2c], eax
mov dword [ebp - 0x34], ebx
jns 0x47d4e0
mov ebx, dword [ebp - 0x18]
mov ecx, eax
jmp 0x47d4e6
and ebx, 0x7f
lea ecx, [ebp - 0x1c]
mov eax, ebx
mov dword [ebp - 0x24], ecx
mov edx, ebx
cmp ebx, 4
jb 0x47d56f
lea edx, [ebx - 4]
test dl, 4
jne 0x47d51f
mov esi, dword [ebp - 0x24]
imul eax, dword [esi], 0x5bd1e995
mov ecx, eax
shr ecx, 0x18
xor ecx, eax
imul ecx, ecx, 0x5bd1e995
imul eax, ebx, 0x5bd1e995
xor eax, ecx
lea ecx, [esi + 4]
mov esi, edx
jmp 0x47d526
mov esi, ebx
mov ecx, dword [ebp - 0x24]
mov eax, ebx
cmp edx, 4
jb 0x47d56f
mov edx, esi
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
imul esi, dword [ecx + 4], 0x5bd1e995
mov edi, esi
shr edi, 0x18
xor edi, esi
imul esi, edi, 0x5bd1e995
imul eax, eax, 0x5bd1e995
xor eax, esi
add ecx, 8
add edx, 0xfffffff8
cmp edx, 3
ja 0x47d52d
cmp edx, 1
je 0x47d590
cmp edx, 2
je 0x47d587
cmp edx, 3
jne 0x47d59b
movzx edx, byte [ecx + 2]
shl edx, 0x10
xor eax, edx
movzx edx, byte [ecx + 1]
shl edx, 8
xor eax, edx
movzx ecx, byte [ecx]
xor ecx, eax
imul eax, ecx, 0x5bd1e995
mov ecx, dword [ebp - 0x20]
mov edx, dword [ecx + 0x18]
xor esi, esi
test edx, edx
jne 0x47d5e1
cmp byte [ebp - 0x34], 0
jns 0x47d5b8
push dword [ebp - 0x2c]
call fcn.00494aa1
add esp, 4
test esi, esi
mov eax, dword [ebp - 0x38]
mov ebx, dword [ebp + 8]
jne 0x47d96c
push eax
call dword [sym.imp.KERNEL32.dll_ReleaseSRWLockExclusive]
mov ecx, dword [ebp - 0x10]
xor ecx, ebp
call fcn.00496ce3
mov eax, ebx
add esp, 0x3c
pop esi
pop edi
pop ebx
pop ebp
ret
mov ecx, eax
shr ecx, 0xd
xor ecx, eax
imul eax, ecx, 0x5bd1e995
mov edi, eax
shr edi, 0xf
xor edi, eax
mov ecx, edx
shr ecx, 1
and ecx, 0x55555555
mov dword [ebp - 0x28], edx
mov eax, edx
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 - 0x30], eax
cmp eax, 1
jbe 0x47d9c2
mov edx, edi
cmp edi, dword [ebp - 0x28]
mov ecx, dword [ebp - 0x20]
jb 0x47d649
mov eax, edi
xor edx, edx
div dword [ebp - 0x28]
mov eax, dword [ecx + 0x14]
mov eax, dword [eax + edx*4]
test eax, eax
je 0x47d5a7
mov dword [ebp - 0x40], edx
mov ecx, dword [eax]
test ecx, ecx
je 0x47d5a7
mov dword [ebp - 0x3c], edi
mov eax, dword [ecx + 4]
cmp edi, eax
mov dword [ebp - 0x20], ecx
je 0x47d91b
cmp dword [ebp - 0x30], 1
jbe 0x47d9d2
mov esi, dword [ebp - 0x28]
cmp eax, esi
jb 0x47d68c
xor edx, edx
div esi
mov eax, edx
cmp eax, dword [ebp - 0x40]
jne 0x47d6d3
mov ecx, dword [ebp - 0x20]
mov ecx, dword [ecx]
xor esi, esi
test ecx, ecx
mov edi, dword [ebp - 0x3c]
jne 0x47d667
jmp 0x47d5a7
cmp edi, ebx
mov eax, dword [ebp - 0x38]
je 0x47d5c6
push eax
call dword [sym.imp.KERNEL32.dll_ReleaseSRWLockExclusive]
test ebx, ebx
je 0x47d6cc
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 0x47d5cd
xor esi, esi
jmp 0x47d5a7
xor ebx, ebx
jmp 0x47d2b1
divss xmm0, xmm1
cvtss2sd xmm0, xmm0
sub esp, 8
movsd qword [esp], xmm0
call fcn.004bd750
add esp, 8
fstp dword [ebp - 0x48]
movss xmm0, dword [ebp - 0x48]
cvttss2si eax, xmm0
mov edx, eax
sar edx, 0x1f
subss xmm0, dword [0x500410]
cvttss2si ecx, xmm0
and ecx, edx
or ecx, eax
lea edx, [esi + esi]
cmp esi, 3
jb 0x47d884
lea eax, [esi - 1]
test esi, eax
mov eax, 0
setne al
or eax, edx
cmp eax, ecx
cmovbe eax, ecx
cmp eax, 1
je 0x47d8a1
lea ecx, [eax - 1]
test eax, ecx
je 0x47d756
push eax
call fcn.00481e70
add esp, 4
mov esi, dword [edi + 4]
cmp eax, esi
jbe 0x47d9dd
mov esi, eax
cmp esi, 0x40000000
jae 0x47da94
lea eax, [esi*4]
push eax
call fcn.00494aa6
add esp, 4
mov ecx, dword [edi]
mov dword [edi], eax
test ecx, ecx
je 0x47d78d
push ecx
call fcn.00494aa1
add esp, 4
mov dword [edi + 4], esi
xor eax, eax
mov ecx, dword [edi]
mov dword [ecx + eax*4], 0
inc eax
cmp esi, eax
jne 0x47d792
mov dword [ebp - 0x24], esi
mov edi, dword [edi + 8]
test edi, edi
je 0x47dae9
mov eax, dword [ebp - 0x24]
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
mov ecx, dword [ebp - 0x20]
add ecx, 8
add eax, edx
mov edx, eax
shr edx, 4
add edx, eax
mov esi, dword [edi + 4]
and edx, 0xf0f0f0f
imul eax, edx, 0x1010101
shr eax, 0x18
mov dword [ebp - 0x30], eax
cmp eax, 1
mov dword [ebp - 0x2c], ecx
jbe 0x47da99
cmp esi, dword [ebp - 0x24]
jb 0x47d809
mov eax, esi
xor edx, edx
div dword [ebp - 0x24]
mov esi, edx
mov eax, dword [ebp - 0x20]
mov eax, dword [eax]
mov ecx, esi
mov edx, dword [ebp - 0x2c]
mov dword [eax + esi*4], edx
mov esi, dword [edi]
test esi, esi
je 0x47dae9
mov dword [ebp - 0x2c], edi
mov eax, dword [esi + 4]
cmp dword [ebp - 0x30], 1
jbe 0x47d9b1
mov edi, dword [ebp - 0x24]
cmp eax, edi
jb 0x47d83d
xor edx, edx
div edi
mov eax, edx
mov edi, ecx
cmp eax, ecx
mov ecx, dword [ebp - 0x2c]
je 0x47d878
mov edx, dword [ebp - 0x20]
mov edx, dword [edx]
cmp dword [edx + eax*4], 0
jne 0x47d85c
mov dword [edx + eax*4], ecx
mov edi, esi
mov esi, dword [esi]
mov ecx, eax
jmp 0x47d818
mov edx, dword [esi]
mov dword [ecx], edx
mov edx, dword [ebp - 0x20]
mov edx, dword [edx]
mov edx, dword [edx + eax*4]
mov edx, dword [edx]
mov dword [esi], edx
mov edx, dword [ebp - 0x20]
mov edx, dword [edx]
mov eax, dword [edx + eax*4]
mov dword [eax], esi
mov esi, ecx
mov eax, edi
jmp 0x47d854
and eax, dword [ebp - 0x30]
jmp 0x47d33d
xor eax, eax
inc eax
jmp 0x47d733
lea edx, [esi - 1]
and edx, ebx
jmp 0x47d305
xor eax, eax
dec eax
mov dword [ebp - 0x2c], eax
jmp 0x47d37f
mov eax, 2
jmp 0x47d756
mov ecx, dword [ebp - 0x38]
call fcn.004597a0
jmp 0x47d1d3
and eax, ecx
jmp 0x47d440
push 0x526058
call fcn.004099e0
add esp, 4
test al, al
je 0x47db13
mov dword [0x52605c], 0
mov eax, 0x52605c
mov dword [0x526058], eax
jmp 0x47d1c1
push 0x526058
call fcn.004099e0
add esp, 4
test al, al
je 0x47db1d
mov dword [0x52605c], 0
mov eax, 0x52605c
mov dword [0x526058], eax
jmp 0x47d1e1
movzx edx, byte [ecx + 0x13]
mov eax, edx
and eax, 0x7f
mov ecx, eax
test dl, dl
jns 0x47d930
mov ecx, dword [ebp - 0x20]
mov ecx, dword [ecx + 0xc]
cmp ecx, ebx
jne 0x47d691
mov ecx, dword [ebp - 0x20]
add ecx, 8
test dl, dl
jns 0x47d944
mov ecx, dword [ecx]
js 0x47d992
test al, al
je 0x47d964
xor ecx, ecx
mov edx, dword [ebp - 0x20]
mov dl, byte [edx + ecx + 8]
mov esi, dword [ebp - 0x24]
cmp dl, byte [esi + ecx]
jne 0x47d691
inc ecx
cmp eax, ecx
jne 0x47d94c
mov esi, dword [ebp - 0x20]
jmp 0x47d5a7
lock or dword [ebx + 8], 0x20
jmp 0x47d5c6
push 0x54
call fcn.00494aa6
add esp, 4
mov ecx, eax
call fcn.0040f740
mov edi, dword [0x526060]
jmp 0x47d1f2
test ebx, ebx
je 0x47d964
push ebx
push dword [ebp - 0x24]
push ecx
call fcn.00494bf2
add esp, 0xc
test eax, eax
je 0x47d964
jmp 0x47d691
call fcn.004a8580
mov edx, dword [ebp - 0x24]
dec edx
and eax, edx
jmp 0x47d83d
int3
int3
mov eax, dword [ebp - 0x28]
lea edx, [eax - 1]
and edx, edi
mov ecx, dword [ebp - 0x20]
jmp 0x47d649
mov ecx, dword [ebp - 0x28]
dec ecx
and eax, ecx
jmp 0x47d68c
mov dword [ebp - 0x2c], eax
jae 0x47dae9
mov eax, dword [ebp - 0x20]
movss xmm0, dword [eax + 0xc]
orpd xmm0, xmmword [0x500420]
subsd xmm0, qword [0x500408]
cvtsd2ss xmm0, xmm0
divss xmm0, dword [eax + 0x10]
cvtss2sd xmm0, xmm0
sub esp, 8
movsd qword [esp], xmm0
call fcn.004bd750
add esp, 8
fstp dword [ebp - 0x44]
movss xmm0, dword [ebp - 0x44]
cvttss2si ecx, xmm0
mov edx, ecx
subss xmm0, dword [0x500410]
cvttss2si eax, xmm0
sar edx, 0x1f
and eax, edx
or eax, ecx
cmp esi, 3
jb 0x47daa4
mov ecx, esi
mov edx, esi
shr edx, 1
and edx, 0x55555555
sub ecx, edx
mov edx, 0x33333333
mov edi, ecx
and edi, edx
shr ecx, 2
and ecx, edx
add ecx, edi
mov edx, ecx
shr edx, 4
add edx, ecx
and edx, 0xf0f0f0f
imul ecx, edx, 0x1010101
shr ecx, 0x18
cmp ecx, 1
ja 0x47daa4
lea ecx, [eax - 1]
bsr ecx, ecx
xor ecx, 0x1f
neg cl
xor edx, edx
inc edx
shl edx, cl
cmp eax, 2
cmovb edx, eax
mov eax, edx
jmp 0x47daad
call fcn.004bfb30
mov eax, dword [ebp - 0x24]
dec eax
and esi, eax
jmp 0x47d809
push eax
call fcn.00481e70
add esp, 4
mov ecx, eax
mov eax, dword [ebp - 0x2c]
cmp eax, ecx
cmova ecx, eax
cmp ecx, esi
jae 0x47dae9
mov eax, ecx
mov esi, ecx
test eax, eax
mov edi, dword [ebp - 0x20]
jne 0x47d760
mov eax, dword [edi]
mov dword [edi], 0
test eax, eax
je 0x47dadf
push eax
call fcn.00494aa1
add esp, 4
mov eax, dword [ebp - 0x20]
mov dword [eax + 4], 0
mov edi, dword [ebp - 0x20]
mov esi, dword [edi + 4]
lea edx, [esi - 1]
test esi, edx
je 0x47db05
cmp ebx, esi
jb 0x47db0c
mov eax, ebx
xor edx, edx
div esi
jmp 0x47d3f0
and edx, ebx
jmp 0x47d3f0
mov edx, ebx
jmp 0x47d3f0
mov eax, dword [0x526058]
jmp 0x47d1c1
mov eax, dword [0x526058]
jmp 0x47d1e1