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

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
sub esp, 0x38
mov eax, dword [0x5f3418]
xor eax, ebp
mov dword [ebp - 0x10], eax
mov edi, dword [0x6ceb50]
cmp edi, 1
jbe 0x4f2692
mov eax, dword [edi]
test al, 0x19
jne 0x4f264b
mov ecx, eax
or ecx, 8
lock cmpxchg dword [edi], ecx
jne 0x4f264b
mov esi, dword [0x6ceb50]
cmp esi, 1
jbe 0x4f26c1
mov eax, dword [esi]
test al, 8
je 0x4f270e
mov esi, dword [ebp + 8]
mov eax, dword [0x6ceb58]
mov dword [ebp - 0x20], eax
test eax, eax
je 0x4f25df
mov esi, dword [esi + 4]
test esi, esi
je 0x4f2742
push esi
call fcn.005338e0
add esp, 4
test eax, eax
mov dword [ebp - 0x28], esi
mov dword [ebp - 0x38], edi
mov dword [ebp - 0x34], eax
je 0x4f259d
mov edx, eax
and eax, 7
cmp edx, 8
jae 0x4f1ffc
xor ebx, ebx
mov ecx, esi
jmp 0x4f2077
and edx, 0xfffffff8
xor ebx, ebx
mov ecx, esi
nop word cs:[eax + eax]
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 0x4f2010
test eax, eax
je 0x4f208e
xor edx, edx
movsx esi, byte [ecx + edx]
imul ebx, ebx, 0x83
add ebx, esi
inc edx
cmp eax, edx
jne 0x4f207d
mov eax, dword [ebp - 0x20]
mov edi, dword [eax + 4]
test edi, edi
mov dword [ebp - 0x24], edi
je 0x4f25be
mov ecx, edi
shr ecx, 1
and ecx, 0x55555555
mov eax, edi
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 esi, ecx, 0x1010101
shr esi, 0x18
cmp esi, 1
jbe 0x4f25a4
mov edx, ebx
cmp ebx, edi
jb 0x4f20e8
mov eax, ebx
xor edx, edx
div edi
mov edi, dword [ebp - 0x20]
mov eax, dword [edi]
mov eax, dword [eax + edx*4]
test eax, eax
mov dword [ebp - 0x2c], edx
je 0x4f213d
mov ecx, dword [eax]
test ecx, ecx
je 0x4f213d
mov eax, dword [ebp - 0x24]
dec eax
mov dword [ebp - 0x3c], eax
mov edi, dword [ebp - 0x24]
mov eax, dword [ecx + 4]
cmp eax, ebx
je 0x4f2128
cmp esi, 1
jbe 0x4f25b6
cmp eax, edi
jb 0x4f2121
xor edx, edx
div edi
mov eax, edx
mov edx, dword [ebp - 0x2c]
cmp eax, edx
jne 0x4f213a
mov eax, dword [ebp - 0x34]
cmp dword [ecx + 0xc], eax
je 0x4f256b
mov ecx, dword [ecx]
test ecx, ecx
jne 0x4f2107
mov edi, dword [ebp - 0x20]
push 0x14
call fcn.00510d64
add esp, 4
mov esi, dword [ebp - 0x28]
mov dword [eax + 8], esi
mov ecx, dword [ebp - 0x34]
mov dword [eax + 0xc], ecx
xor ecx, ecx
mov dword [eax + 0x10], ecx
mov dword [eax + 4], ebx
mov dword [ebp - 0x30], eax
mov dword [eax], ecx
mov eax, dword [edi + 0xc]
inc eax
movd xmm0, eax
movq xmm2, qword [0x5db288]
por xmm0, xmm2
subsd xmm0, xmm2
cvtsd2ss xmm0, xmm0
movss xmm1, dword [edi + 0x10]
mov eax, dword [ebp - 0x24]
test eax, eax
je 0x4f23c6
movd xmm3, eax
por xmm3, xmm2
subsd xmm3, xmm2
xorps xmm2, xmm2
cvtsd2ss xmm2, xmm3
mulss xmm2, xmm1
ucomiss xmm0, xmm2
ja 0x4f23c6
mov edx, dword [ebp - 0x2c]
mov ecx, dword [edi]
mov eax, dword [ecx + edx*4]
test eax, eax
mov ebx, dword [ebp + 8]
jne 0x4f2204
mov eax, dword [edi + 8]
mov ebx, esi
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, ebx
mov ebx, dword [ebp + 8]
mov ecx, edx
mov eax, dword [edx]
test eax, eax
je 0x4f220f
mov eax, dword [eax + 4]
mov edx, dword [ebp - 0x24]
lea ecx, [edx - 1]
test edx, ecx
je 0x4f25d8
cmp eax, edx
jb 0x4f21fa
mov ecx, edx
xor edx, edx
div ecx
mov eax, edx
mov ecx, dword [ebp - 0x30]
shl eax, 2
add eax, dword [edi]
jmp 0x4f220d
mov ecx, dword [eax]
mov edx, dword [ebp - 0x30]
mov dword [edx], ecx
mov ecx, edx
mov dword [eax], ecx
inc dword [edi + 0xc]
mov edi, dword [ecx + 0x10]
test edi, edi
jne 0x4f25fd
mov dword [ecx + 0x10], ebx
mov edi, dword [0x6ceb58]
push esi
call fcn.005338e0
add esp, 4
cmp eax, 0x7ffffff0
jae 0x4f26f0
mov ebx, eax
cmp eax, 0xa
ja 0x4f2249
lea eax, [ebp - 0x1c]
mov byte [eax + 0xb], bl
jmp 0x4f2267
mov esi, ebx
or esi, 0xf
inc esi
push esi
call fcn.00510d64
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, dword [ebp - 0x28]
ja 0x4f2278
cmp esi, dword [ebp - 0x28]
ja 0x4f2745
test ebx, ebx
je 0x4f2289
push ebx
push dword [ebp - 0x28]
push eax
call fcn.00518c30
add esp, 0xc
mov byte [esi], 0
movzx ecx, byte [ebp - 0x11]
test cl, cl
mov dword [ebp - 0x20], edi
jns 0x4f229f
mov eax, dword [ebp - 0x1c]
mov esi, dword [ebp - 0x18]
jmp 0x4f22a7
mov esi, ecx
and esi, 0x7f
lea eax, [ebp - 0x1c]
cmp esi, 4
jb 0x4f23bd
lea ebx, [esi - 4]
test bl, 4
jne 0x4f22da
imul edi, dword [eax], 0x5bd1e995
mov edx, edi
shr edx, 0x18
xor edx, edi
imul edi, edx, 0x5bd1e995
imul edx, esi, 0x5bd1e995
xor edx, edi
add eax, 4
mov esi, ebx
jmp 0x4f22dc
mov edx, esi
cmp ebx, 4
jb 0x4f2325
mov ebx, esi
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
imul esi, dword [eax + 4], 0x5bd1e995
mov edi, esi
shr edi, 0x18
xor edi, esi
imul esi, edi, 0x5bd1e995
imul edx, edx, 0x5bd1e995
xor edx, esi
add eax, 8
add ebx, 0xfffffff8
cmp ebx, 3
ja 0x4f22e3
cmp ebx, 2
je 0x4f2342
cmp ebx, 1
mov edi, dword [ebp - 0x20]
je 0x4f234e
cmp ebx, 3
jne 0x4f2359
movzx esi, byte [eax + 2]
shl esi, 0x10
xor edx, esi
jmp 0x4f2345
mov edi, dword [ebp - 0x20]
movzx esi, byte [eax + 1]
shl esi, 8
xor edx, esi
movzx eax, byte [eax]
xor eax, edx
imul edx, eax, 0x5bd1e995
mov ebx, dword [edi + 0x18]
xor esi, esi
test ebx, ebx
jne 0x4f2748
test cl, cl
jns 0x4f2375
push dword [ebp - 0x1c]
call fcn.0050fc7c
add esp, 4
test esi, esi
mov esi, dword [ebp - 0x38]
mov ebx, dword [ebp + 8]
jne 0x4f2812
mov eax, dword [esi]
mov ecx, eax
xor ecx, 0xc
mov edx, ecx
and edx, 0x18
and ecx, 6
cmp edx, ecx
jae 0x4f26f5
mov ecx, eax
and ecx, 0xffffffd7
lock cmpxchg dword [esi], ecx
jne 0x4f26f5
mov ecx, dword [ebp - 0x10]
xor ecx, ebp
call fcn.00512ee3
mov eax, ebx
add esp, 0x38
pop esi
pop edi
pop ebx
pop ebp
ret
mov edx, esi
mov ebx, esi
jmp 0x4f2325
divss xmm0, xmm1
cvtss2sd xmm0, xmm0
sub esp, 8
movsd qword [esp], xmm0
mov esi, eax
call fcn.00546e60
add esp, 8
fstp dword [ebp - 0x44]
movss xmm0, dword [ebp - 0x44]
cvttss2si eax, xmm0
mov edx, eax
sar edx, 0x1f
subss xmm0, dword [0x5c6a08]
cvttss2si ecx, xmm0
and ecx, edx
or ecx, eax
lea edx, [esi + esi]
cmp esi, 3
jb 0x4f25ae
mov eax, edx
lea edx, [esi - 1]
test esi, edx
mov edx, eax
mov eax, 0
setne al
or eax, edx
cmp eax, ecx
cmovbe eax, ecx
cmp eax, 1
je 0x4f25c9
lea ecx, [eax - 1]
test eax, ecx
je 0x4f291c
push eax
call fcn.004f0a70
add esp, 4
mov ecx, edi
mov edi, dword [edi + 4]
cmp eax, edi
jbe 0x4f2860
mov esi, eax
cmp esi, 0x40000000
jae 0x4f2917
mov edi, ecx
lea eax, [esi*4]
push eax
call fcn.00510d64
add esp, 4
mov ecx, dword [edi]
mov dword [edi], eax
test ecx, ecx
je 0x4f2480
push ecx
call fcn.0050fc7c
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 0x4f2485
mov dword [ebp - 0x2c], esi
mov edi, dword [edi + 8]
test edi, edi
je 0x4f2971
mov esi, dword [ebp - 0x2c]
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
mov ecx, dword [ebp - 0x20]
add ecx, 8
mov dword [ebp - 0x24], ecx
add eax, edx
mov edx, eax
shr edx, 4
add edx, eax
mov ecx, dword [edi + 4]
and edx, 0xf0f0f0f
imul eax, edx, 0x1010101
shr eax, 0x18
mov dword [ebp - 0x34], eax
cmp eax, 1
jbe 0x4f2926
cmp ecx, esi
jb 0x4f24fc
mov eax, ecx
xor edx, edx
div esi
mov ecx, edx
mov eax, dword [ebp - 0x20]
mov eax, dword [eax]
mov edx, dword [ebp - 0x24]
mov dword [eax + ecx*4], edx
mov esi, dword [edi]
test esi, esi
je 0x4f2971
mov dword [ebp - 0x24], edi
mov eax, dword [esi + 4]
cmp dword [ebp - 0x34], 1
jbe 0x4f2703
mov edi, dword [ebp - 0x2c]
cmp eax, edi
jb 0x4f252e
xor edx, edx
div edi
mov eax, edx
cmp eax, ecx
mov edi, dword [ebp - 0x24]
je 0x4f2567
mov edx, dword [ebp - 0x20]
mov edx, dword [edx]
cmp dword [edx + eax*4], 0
jne 0x4f254b
mov dword [edx + eax*4], edi
mov edi, esi
mov esi, dword [esi]
mov ecx, eax
jmp 0x4f2509
mov edx, dword [esi]
mov dword [edi], 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, edi
mov eax, ecx
jmp 0x4f2543
mov eax, dword [ebp - 0x34]
test eax, eax
je 0x4f2592
push eax
push dword [ebp - 0x28]
push dword [ecx + 8]
mov dword [ebp - 0x30], ecx
call fcn.0050fd3d
mov ecx, dword [ebp - 0x30]
add esp, 0xc
test eax, eax
mov edx, dword [ebp - 0x2c]
jne 0x4f2134
mov ebx, dword [ebp + 8]
mov esi, dword [ebp - 0x28]
jmp 0x4f2212
xor ebx, ebx
jmp 0x4f208e
lea edx, [edi - 1]
and edx, ebx
jmp 0x4f20e8
xor eax, eax
inc eax
jmp 0x4f241e
and eax, dword [ebp - 0x3c]
jmp 0x4f2124
xor eax, eax
dec eax
mov dword [ebp - 0x2c], eax
jmp 0x4f213a
mov ecx, edi
mov eax, 2
mov edi, dword [ebp - 0x24]
jmp 0x4f2447
and eax, ecx
jmp 0x4f21fa
push 0x54
call fcn.00510d64
add esp, 4
mov ecx, eax
call fcn.004054b0
mov eax, dword [0x6ceb58]
mov dword [ebp - 0x20], eax
jmp 0x4f1fc7
cmp edi, ebx
mov esi, dword [ebp - 0x38]
je 0x4f2383
mov eax, dword [esi]
mov ecx, eax
xor ecx, 0xc
mov edx, ecx
and edx, 0x18
and ecx, 6
cmp edx, ecx
jae 0x4f29a4
mov ecx, eax
and ecx, 0xffffffd7
lock cmpxchg dword [esi], ecx
jne 0x4f29a4
test ebx, ebx
je 0x4f2644
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 0x4f23a9
mov eax, dword [0x6be040]
cmp eax, 0xdd
je 0x4f2661
mov ecx, 0x6be040
call fcn.0041baf0
mov ecx, dword [0x6be044]
inc ecx
mov eax, dword [edi]
test al, 0x11
jne 0x4f284b
test al, 8
je 0x4f2681
dec ecx
cmp ecx, 1
jg 0x4f2668
jmp 0x4f284b
mov edx, eax
or edx, 8
lock cmpxchg dword [edi], edx
je 0x4f1f9b
jmp 0x4f2676
push 0x6ceb50
call fcn.00408860
add esp, 4
test al, al
je 0x4f29b2
mov dword [0x6ceb54], 0
mov edi, 0x6ceb54
mov dword [0x6ceb50], edi
jmp 0x4f1f82
push 0x6ceb50
call fcn.00408860
add esp, 4
test al, al
je 0x4f29bd
mov dword [0x6ceb54], 0
mov esi, 0x6ceb54
mov dword [0x6ceb50], esi
jmp 0x4f1faa
call fcn.0052ce30
mov ecx, esi
push 0
call fcn.00548e22
jmp 0x4f23a9
mov edx, dword [ebp - 0x2c]
dec edx
and eax, edx
jmp 0x4f252e
mov ecx, esi
call fcn.00552a50
lea ecx, [eax + 0x15]
test eax, eax
mov eax, 0x5da01a
cmovne eax, ecx
push eax
push esi
push str.thread_should_hold_write_lock_on_Mutex__p__s
push 0x98f
push 0x5da2a9
push 3
call fcn.00551c90
add esp, 0x18
jmp 0x4f1fb4
int3
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 - 0x24], edx
mov edx, ebx
shr edx, 1
and edx, 0x55555555
mov eax, ebx
sub eax, edx
mov edx, 0x33333333
mov edi, eax
and edi, edx
shr eax, 2
and eax, edx
add eax, edi
mov edx, eax
shr edx, 4
add edx, eax
and edx, 0xf0f0f0f
imul eax, edx, 0x1010101
shr eax, 0x18
mov dword [ebp - 0x2c], eax
cmp eax, 1
ja 0x4f2820
lea eax, [ebx - 1]
and eax, dword [ebp - 0x24]
mov dword [ebp - 0x28], eax
mov eax, dword [ebp - 0x20]
mov eax, dword [eax + 0x14]
mov edx, dword [ebp - 0x28]
mov eax, dword [eax + edx*4]
test eax, eax
je 0x4f2366
mov eax, dword [eax]
test eax, eax
je 0x4f2366
mov edi, eax
lea esi, [ebx - 1]
add dword [ebp - 0x20], 0x28
mov eax, dword [edi + 4]
cmp dword [ebp - 0x24], eax
je 0x4f27fc
cmp dword [ebp - 0x2c], 1
ja 0x4f27f0
and eax, esi
cmp eax, dword [ebp - 0x28]
jne 0x4f283f
mov eax, edi
mov eax, dword [edi]
mov edi, eax
test eax, eax
jne 0x4f27cf
jmp 0x4f283f
cmp eax, ebx
jb 0x4f27df
xor edx, edx
div ebx
mov eax, edx
jmp 0x4f27df
lea eax, [edi + 8]
mov ecx, dword [ebp - 0x20]
lea edx, [ebp - 0x1c]
push edx
push eax
call fcn.005536c0
test al, al
je 0x4f27e4
jmp 0x4f2841
mov ecx, ebx
push 0x20
call fcn.0050f3d0
jmp 0x4f2383
mov eax, dword [ebp - 0x24]
mov edx, eax
mov dword [ebp - 0x28], eax
cmp eax, ebx
jb 0x4f27a8
mov eax, dword [ebp - 0x24]
xor edx, edx
div ebx
mov dword [ebp - 0x28], edx
jmp 0x4f27a8
xor edi, edi
mov cl, byte [ebp - 0x11]
mov esi, edi
jmp 0x4f2366
xor eax, eax
mov ecx, edi
push eax
push eax
push 0x5da30c
call fcn.00548636
jmp 0x4f1f9b
mov dword [ebp - 0x24], eax
jae 0x4f2971
mov eax, dword [ebp - 0x20]
movss xmm0, dword [eax + 0xc]
orpd xmm0, xmmword [0x5db290]
subsd xmm0, qword [0x5db288]
cvtsd2ss xmm0, xmm0
divss xmm0, dword [eax + 0x10]
cvtss2sd xmm0, xmm0
sub esp, 8
movsd qword [esp], xmm0
call fcn.00546e60
add esp, 8
fstp dword [ebp - 0x40]
movss xmm0, dword [ebp - 0x40]
cvttss2si ecx, xmm0
mov edx, ecx
subss xmm0, dword [0x5c6a08]
cvttss2si eax, xmm0
sar edx, 0x1f
and eax, edx
or eax, ecx
cmp edi, 3
jb 0x4f2930
mov ecx, edi
mov edx, edi
shr edx, 1
and edx, 0x55555555
sub ecx, edx
mov edx, 0x33333333
mov esi, ecx
and esi, edx
shr ecx, 2
and ecx, edx
add ecx, esi
mov edx, ecx
shr edx, 4
add edx, ecx
and edx, 0xf0f0f0f
imul ecx, edx, 0x1010101
shr ecx, 0x18
cmp ecx, 1
ja 0x4f2930
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 0x4f2939
call fcn.00549f00
mov ecx, edi
mov edi, dword [ebp - 0x24]
jmp 0x4f2447
lea eax, [esi - 1]
and ecx, eax
jmp 0x4f24fc
push eax
call fcn.004f0a70
add esp, 4
mov ecx, dword [ebp - 0x24]
cmp ecx, eax
cmova eax, ecx
cmp eax, edi
jae 0x4f2971
mov esi, eax
test eax, eax
mov ecx, dword [ebp - 0x20]
jne 0x4f2451
mov eax, dword [ecx]
mov dword [ecx], 0
test eax, eax
je 0x4f2967
push eax
call fcn.0050fc7c
add esp, 4
mov eax, dword [ebp - 0x20]
mov dword [eax + 4], 0
mov edi, dword [ebp - 0x20]
mov ecx, dword [edi + 4]
lea edx, [ecx - 1]
test ecx, edx
mov dword [ebp - 0x24], ecx
je 0x4f2993
cmp ebx, ecx
mov esi, dword [ebp - 0x28]
jb 0x4f299d
mov eax, ebx
xor edx, edx
div ecx
jmp 0x4f21af
and edx, ebx
mov esi, dword [ebp - 0x28]
jmp 0x4f21af
mov edx, ebx
jmp 0x4f21af
mov ecx, esi
push 0
call fcn.00548e22
jmp 0x4f262e
mov edi, dword [0x6ceb50]
jmp 0x4f1f82
mov esi, dword [0x6ceb50]
jmp 0x4f1faa