Function at 0x487a70
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 [0x557008]
xor eax, ebp
mov dword [ebp - 0x10], eax
mov esi, dword [0x56c15c]
cmp esi, 1
jbe 0x4881e6
mov ecx, esi
call fcn.0045c640
mov ecx, dword [0x56c15c]
cmp ecx, 1
jbe 0x488221
mov edi, dword [ebp + 8]
call fcn.0045c750
mov eax, dword [0x56c164]
mov dword [ebp - 0x30], eax
test eax, eax
je 0x4881c8
mov dword [ebp - 0x3c], esi
mov esi, dword [edi + 4]
test esi, esi
je 0x488258
push esi
call fcn.004c1530
add esp, 4
mov ebx, eax
mov dword [ebp - 0x20], esi
mov ecx, esi
mov edx, eax
mov dword [ebp - 0x34], eax
cmp eax, 4
jb 0x487b26
mov eax, dword [ebp - 0x34]
mov edx, eax
mov ecx, dword [ebp - 0x20]
mov ebx, eax
nop word cs:[eax + eax]
imul esi, dword [ecx], 0x5bd1e995
mov edi, esi
shr edi, 0x18
xor edi, esi
imul esi, edi, 0x5bd1e995
imul ebx, ebx, 0x5bd1e995
xor ebx, esi
add ecx, 4
add edx, 0xfffffffc
cmp edx, 3
ja 0x487b00
cmp edx, 3
je 0x487c0e
cmp edx, 2
je 0x487c17
cmp edx, 1
mov edi, dword [ebp - 0x20]
je 0x487c23
mov ecx, ebx
shr ecx, 0xd
xor ecx, ebx
imul eax, ecx, 0x5bd1e995
mov ecx, eax
shr ecx, 0xf
xor ecx, eax
mov dword [ebp - 0x28], ecx
mov eax, dword [ebp - 0x30]
mov esi, dword [eax + 4]
test esi, esi
mov dword [ebp - 0x24], esi
je 0x4881bd
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 0x4881ae
mov ebx, dword [ebp - 0x28]
mov edx, ebx
cmp ebx, esi
mov ecx, esi
jb 0x487bbd
mov eax, ebx
xor edx, edx
div ecx
mov ebx, dword [ebp - 0x28]
mov eax, dword [ebp - 0x30]
mov eax, dword [eax]
mov dword [ebp - 0x2c], edx
mov eax, dword [eax + edx*4]
test eax, eax
je 0x487c5b
mov esi, dword [eax]
test esi, esi
je 0x487c5b
lea eax, [ecx - 1]
mov dword [ebp - 0x38], eax
mov eax, dword [esi + 4]
cmp eax, ebx
je 0x487bfe
cmp edi, 1
jbe 0x487c33
cmp eax, ecx
jb 0x487bf6
xor edx, edx
div ecx
mov eax, edx
mov ebx, dword [ebp - 0x28]
cmp eax, dword [ebp - 0x2c]
jne 0x487c5b
mov eax, dword [ebp - 0x34]
cmp dword [esi + 0xc], eax
je 0x487c38
mov esi, dword [esi]
test esi, esi
jne 0x487be0
jmp 0x487c5b
movzx edx, byte [ecx + 2]
shl edx, 0x10
xor ebx, edx
movzx edx, byte [ecx + 1]
shl edx, 8
xor ebx, edx
mov edi, dword [ebp - 0x20]
movzx ecx, byte [ecx]
xor ecx, ebx
imul ebx, ecx, 0x5bd1e995
jmp 0x487b44
and eax, dword [ebp - 0x38]
jmp 0x487bf9
push dword [ebp - 0x34]
push dword [ebp - 0x20]
push dword [esi + 8]
call fcn.004aaedd
mov ebx, dword [ebp - 0x28]
mov ecx, dword [ebp - 0x24]
add esp, 0xc
test eax, eax
jne 0x487c06
mov ebx, dword [ebp + 8]
jmp 0x487d28
mov edi, dword [ebp - 0x20]
push 0x14
call fcn.004a8ae0
add esp, 4
cmp eax, 0xfffffff8
je 0x488276
mov esi, eax
mov dword [eax + 8], edi
mov eax, dword [ebp - 0x34]
mov dword [esi + 0xc], eax
xor eax, eax
mov dword [esi + 0x10], eax
mov ecx, dword [ebp - 0x28]
mov dword [esi + 4], ecx
mov dword [esi], eax
mov edi, dword [ebp - 0x30]
mov eax, dword [edi + 0xc]
inc eax
movd xmm0, eax
movq xmm2, qword [0x53e2d8]
por xmm0, xmm2
subsd xmm0, xmm2
cvtsd2ss xmm0, xmm0
movss xmm1, dword [edi + 0x10]
mov ebx, dword [ebp - 0x24]
test ebx, ebx
je 0x4880f6
movd xmm3, ebx
por xmm3, xmm2
subsd xmm3, xmm2
xorps xmm2, xmm2
cvtsd2ss xmm2, xmm3
mulss xmm2, xmm1
ucomiss xmm0, xmm2
ja 0x4880f6
mov ebx, dword [ebp + 8]
mov edx, dword [ebp - 0x2c]
mov ecx, dword [edi]
mov eax, dword [ecx + edx*4]
test eax, eax
jne 0x487d1f
mov eax, dword [edi + 8]
mov dword [esi], eax
lea eax, [edi + 8]
mov dword [edi + 8], esi
mov dword [ecx + edx*4], eax
mov eax, dword [esi]
test eax, eax
je 0x487d25
mov eax, dword [eax + 4]
mov edx, dword [ebp - 0x24]
lea ecx, [edx - 1]
test edx, ecx
je 0x487fd9
cmp eax, edx
jb 0x487d18
mov ecx, edx
xor edx, edx
div ecx
mov eax, edx
shl eax, 2
add eax, dword [edi]
jmp 0x487d23
mov ecx, dword [eax]
mov dword [esi], ecx
mov dword [eax], esi
inc dword [edi + 0xc]
mov edi, dword [esi + 0x10]
test edi, edi
jne 0x487d7d
mov dword [esi + 0x10], ebx
mov eax, dword [0x56c164]
mov dword [ebp - 0x28], eax
mov edi, dword [ebp - 0x20]
push edi
call fcn.004c1530
add esp, 4
cmp eax, 0x7ffffff0
jae 0x487ffe
mov ebx, eax
cmp eax, 0xa
jbe 0x487daa
mov edi, ebx
or edi, 0xf
inc edi
push edi
call fcn.004a8ae0
add esp, 4
mov esi, eax
mov dword [ebp - 0x1c], eax
or edi, 0x80000000
mov dword [ebp - 0x14], edi
mov edi, dword [ebp - 0x20]
mov dword [ebp - 0x18], ebx
jmp 0x487db0
cmp edi, ebx
je 0x487e64
mov ecx, dword [ebp - 0x3c]
call fcn.0045c6e0
test ebx, ebx
je 0x487da3
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 0x487e6c
lea esi, [ebp - 0x1c]
mov byte [esi + 0xb], bl
cmp esi, edi
ja 0x487dc0
mov eax, ebx
add eax, esi
cmp eax, edi
ja 0x487fe0
push ebx
push edi
push esi
call fcn.004ac560
add esp, 0xc
mov byte [esi + ebx], 0
movzx ebx, byte [ebp - 0x11]
mov eax, dword [ebp - 0x1c]
test bl, bl
mov dword [ebp - 0x30], eax
mov dword [ebp - 0x34], ebx
js 0x487de8
lea ecx, [ebp - 0x1c]
and ebx, 0x7f
jmp 0x487ded
mov ebx, dword [ebp - 0x18]
mov ecx, eax
mov eax, ebx
mov dword [ebp - 0x2c], ecx
mov edx, ebx
cmp ebx, 4
jb 0x487e26
mov edx, ebx
mov ecx, dword [ebp - 0x2c]
mov eax, ebx
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 0x487e00
cmp edx, 3
je 0x487e80
cmp edx, 2
je 0x487e89
cmp edx, 1
je 0x487e92
mov ecx, dword [ebp - 0x28]
mov edi, dword [ecx + 0x18]
mov dword [ebp - 0x20], 0
test edi, edi
jne 0x487e9f
cmp byte [ebp - 0x34], 0
jns 0x487e57
push dword [ebp - 0x30]
call fcn.004a8b10
add esp, 4
cmp dword [ebp - 0x20], 0
mov ebx, dword [ebp + 8]
jne 0x487fcb
mov ecx, dword [ebp - 0x3c]
call fcn.0045c6e0
mov ecx, dword [ebp - 0x10]
xor ecx, ebp
call fcn.004a927c
mov eax, ebx
add esp, 0x3c
pop esi
pop edi
pop ebx
pop ebp
ret
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
jmp 0x487e35
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 edx, 0x33333333
mov ecx, eax
and ecx, edx
shr eax, 2
and eax, edx
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
mov dword [ebp - 0x24], esi
jbe 0x48800e
mov edx, esi
cmp esi, edi
mov ecx, esi
jb 0x487f07
mov eax, ecx
xor edx, edx
div edi
mov ecx, dword [ebp - 0x24]
mov eax, dword [ebp - 0x28]
mov eax, dword [eax + 0x14]
mov eax, dword [eax + edx*4]
test eax, eax
je 0x487e46
mov dword [ebp - 0x28], edx
mov esi, dword [eax]
test esi, esi
je 0x487e46
lea eax, [edi - 1]
mov dword [ebp - 0x40], eax
mov eax, dword [esi + 4]
cmp ecx, eax
je 0x487f6c
cmp dword [ebp - 0x38], 1
jbe 0x488006
cmp eax, edi
jb 0x487f46
xor edx, edx
div edi
mov eax, edx
cmp eax, dword [ebp - 0x28]
mov ecx, dword [ebp - 0x24]
jne 0x487f60
mov esi, dword [esi]
mov dword [ebp - 0x20], 0
test esi, esi
jne 0x487f2b
jmp 0x487e46
mov dword [ebp - 0x20], 0
jmp 0x487e46
movzx eax, byte [esi + 0x13]
mov edx, eax
and edx, 0x7f
mov dword [ebp - 0x20], edx
test al, al
jns 0x487f7f
mov edx, dword [esi + 0xc]
cmp edx, ebx
mov ecx, dword [ebp - 0x24]
jne 0x487f4e
test al, al
js 0x487fb3
cmp byte [ebp - 0x20], 0
je 0x487fab
xor eax, eax
mov dl, byte [esi + eax + 8]
mov ecx, esi
mov esi, dword [ebp - 0x2c]
cmp dl, byte [esi + eax]
mov esi, ecx
mov ecx, dword [ebp - 0x24]
jne 0x487f4e
inc eax
cmp dword [ebp - 0x20], eax
jne 0x487f92
mov dword [ebp - 0x20], esi
jmp 0x487e46
push ebx
push dword [ebp - 0x2c]
push dword [esi + 8]
call fcn.004aaedd
mov ecx, dword [ebp - 0x24]
add esp, 0xc
test eax, eax
je 0x487fab
jmp 0x487f4e
mov ecx, ebx
push 0x20
call fcn.00487630
jmp 0x487e64
and eax, ecx
jmp 0x487d18
push str.char_traits::copy_overlapped_range
push str.__s2_____s1____s2_____s1__n
push 0x102
push str....._third_partylibc_srcinclude__stringchar_traits.h
push str._s:_d:_assertion__s_failed:__s_n
call fcn.004d6920
lea ecx, [ebp - 0x1c]
call fcn.004d4010
and eax, dword [ebp - 0x40]
jmp 0x487f46
lea edx, [edi - 1]
and edx, esi
mov ecx, esi
jmp 0x487f07
mov dword [ebp - 0x24], eax
jae 0x488175
mov ebx, edx
movss xmm0, dword [edi + 0xc]
orpd xmm0, xmmword [0x53ec10]
subsd xmm0, qword [0x53e2d8]
cvtsd2ss xmm0, xmm0
divss xmm0, dword [edi + 0x10]
cvtss2sd xmm0, xmm0
sub esp, 8
movsd qword [esp], xmm0
call fcn.004d3260
add esp, 8
fstp dword [ebp - 0x44]
movss xmm0, dword [ebp - 0x44]
cvttss2si eax, xmm0
mov ecx, eax
subss xmm0, dword [0x53ec04]
cvttss2si edx, xmm0
sar ecx, 0x1f
and edx, ecx
or edx, eax
cmp dword [ebp - 0x24], 3
jb 0x4880d0
mov eax, dword [ebp - 0x24]
mov ecx, eax
shr ecx, 1
and ecx, 0x55555555
sub eax, ecx
mov ecx, 0x33333333
mov edi, eax
and edi, ecx
shr eax, 2
and eax, ecx
add eax, edi
mov ecx, eax
shr ecx, 4
add ecx, eax
and ecx, 0xf0f0f0f
imul eax, ecx, 0x1010101
shr eax, 0x18
cmp eax, 1
ja 0x4880d0
lea eax, [edx - 1]
bsr ecx, eax
xor ecx, 0x1f
neg cl
xor eax, eax
inc eax
shl eax, cl
cmp edx, 2
cmovb eax, edx
jmp 0x4880d9
push edx
call fcn.004684e0
add esp, 4
mov edx, ebx
cmp ebx, eax
cmovbe edx, eax
cmp edx, dword [ebp - 0x24]
mov edi, dword [ebp - 0x30]
jb 0x48816d
jmp 0x488175
xor edx, edx
inc edx
jmp 0x488144
divss xmm0, xmm1
cvtss2sd xmm0, xmm0
sub esp, 8
movsd qword [esp], xmm0
call fcn.004d3260
add esp, 8
fstp dword [ebp - 0x48]
movss xmm0, dword [ebp - 0x48]
cvttss2si ecx, xmm0
mov edx, ecx
sar edx, 0x1f
subss xmm0, dword [0x53ec04]
cvttss2si eax, xmm0
and eax, edx
or eax, ecx
lea ecx, [ebx + ebx]
cmp ebx, 3
jb 0x4880f1
lea edx, [ebx - 1]
test ebx, edx
mov edx, 0
setne dl
or edx, ecx
cmp edx, eax
cmovbe edx, eax
cmp edx, 1
je 0x488199
lea eax, [edx - 1]
test edx, eax
je 0x48819e
push edx
call fcn.004684e0
add esp, 4
mov edx, eax
mov eax, dword [edi + 4]
cmp edx, eax
jbe 0x48801a
mov ecx, edi
push edx
call fcn.00488640
mov ecx, dword [edi + 4]
lea edx, [ecx - 1]
test ecx, edx
mov dword [ebp - 0x24], ecx
je 0x4881a3
mov eax, dword [ebp - 0x28]
cmp eax, ecx
mov ebx, dword [ebp + 8]
jb 0x488291
xor edx, edx
div ecx
jmp 0x487cde
mov edx, 2
mov eax, dword [ebp - 0x24]
jmp 0x488165
and edx, dword [ebp - 0x28]
mov ebx, dword [ebp + 8]
jmp 0x487cde
lea edx, [esi - 1]
mov ebx, dword [ebp - 0x28]
and edx, ebx
mov ecx, esi
jmp 0x487bbd
xor eax, eax
dec eax
mov dword [ebp - 0x2c], eax
jmp 0x487c5e
push 0x54
call fcn.004a8ae0
add esp, 4
mov ecx, eax
call fcn.0044d2d0
mov eax, dword [0x56c164]
mov dword [ebp - 0x30], eax
jmp 0x487ac0
push 0x56c15c
call fcn.004470f0
add esp, 4
test al, al
je 0x488298
xor eax, eax
mov dword [0x56c160], eax
mov ecx, 0x56c15c
push ecx
push eax
push 0x56c160
push ecx
call fcn.004471c0
add esp, 0x10
mov esi, 0x56c160
jmp 0x487a92
push 0x56c15c
call fcn.004470f0
add esp, 4
test al, al
je 0x4882a3
xor eax, eax
mov dword [0x56c160], eax
mov ecx, 0x56c15c
push ecx
push eax
push 0x56c160
push ecx
call fcn.004471c0
add esp, 0x10
mov ecx, 0x56c160
jmp 0x487aa8
push str.null_pointer_passed_to_non_null_argument_of_char_traits_..._::length
push str.__s___nullptr
push 0x109
push str....._third_partylibc_srcinclude_string_view
push str._s:_d:_assertion__s_failed:__s_n
call fcn.004d6920
push str.null_pointer_given_to_construct_at
push str.__location___nullptr
push 0x25
push str....._third_partylibc_srcinclude__memoryconstruct_at.h
push str._s:_d:_assertion__s_failed:__s_n
call fcn.004d6920
mov edx, eax
jmp 0x487cde
mov esi, dword [0x56c15c]
jmp 0x487a92
mov ecx, dword [0x56c15c]
jmp 0x487aa8