Function at 0x530f40
Capabilities:
Encode data using xor
Hash data with crc32

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff8
sub esp, 0xb8
mov edi, dword [ebp + 8]
mov eax, dword [0x644040]
xor eax, ebp
mov dword [esp + 0xb0], eax
test edi, edi
je 0x531aa4
mov esi, dword [ebp + 0xc]
push edi
call fcn.0057d130
add esp, 4
mov dword [esp + 0x30], edi
mov dword [esp + 0x34], eax
movaps xmm0, xmmword [0x62ed40]
movups xmmword [esp + 0x38], xmm0
mov dword [esp + 0x48], esi
mov esi, eax
mov dword [esp + 0x2c], 0x621254
xorps xmm0, xmm0
lea ebx, [esp + 0x68]
movups xmmword [ebx + 0x34], xmm0
movups xmmword [ebx + 0x28], xmm0
movups xmmword [ebx + 0x18], xmm0
movups xmmword [ebx + 8], xmm0
movups xmmword [ebx - 8], xmm0
movapd xmm0, xmmword [0x62e720]
movupd xmmword [ebx - 0x18], xmm0
test eax, eax
je 0x530ff5
lea eax, [esi*8]
mov ecx, esi
shr ecx, 0x1d
mov dword [esp + 0x64], ecx
mov dword [esp + 0x60], eax
mov eax, esi
mov ecx, edi
cmp esi, 0x40
jae 0x5317db
mov dword [esp + 0xa8], eax
push eax
push ecx
push ebx
call fcn.005670c0
add esp, 0xc
mov dword [esp + 0x1c], esi
mov ecx, dword [esp + 0xa8]
mov esi, dword [esp + 0x60]
mov edi, dword [esp + 0x64]
mov byte [esp + ecx + 0x68], 0x80
lea eax, [ecx + 1]
cmp eax, 0x39
jae 0x5317a5
cmp eax, 0x38
je 0x531033
mov ecx, 0x38
sub ecx, eax
add eax, ebx
push ecx
push 0
push eax
call fcn.00567640
add esp, 0xc
mov eax, ebx
lea ebx, [esp + 0x50]
mov dword [ebx + 0x50], esi
mov dword [ebx + 0x54], edi
push 1
push eax
push ebx
call fcn.004e3480
add esp, 0xc
mov eax, dword [ebx]
mov dword [esp + 4], eax
mov eax, dword [ebx + 4]
mov dword [esp + 0xc], eax
mov edi, dword [0x6550b0]
test edi, edi
je 0x5310d3
mov eax, dword [edi + 0x2c]
mov dword [esp + 0x18], eax
mov dword [esp + 0x50], 0xffffffff
mov eax, dword [edi + 0x3c]
mov dword [esp + 8], eax
mov eax, dword [edi + 0x38]
mov ecx, dword [edi + 0x34]
cmp eax, 0x30
je 0x531806
cmp eax, 0x40
jb 0x5310d3
mov edx, eax
and edx, 7
jne 0x5310d3
mov esi, eax
add esi, 0x10
jb 0x5310d3
mov edx, dword [ecx + 0xc]
cmp esi, edx
ja 0x5310d3
mov ecx, dword [ecx + 4]
mov esi, dword [ecx + eax + 4]
cmp esi, 0xc8799269
jne 0x5310d3
add ecx, eax
mov esi, dword [ecx]
cmp esi, 0x10
jb 0x5310d3
mov esi, dword [ecx]
add esi, eax
jb 0x5310d3
cmp esi, edx
ja 0x5310d3
test ecx, ecx
je 0x5310d3
mov ebx, dword [ecx + 0xc]
cmp ebx, 0x30
jne 0x531312
mov esi, dword [0x64a744]
cmp esi, 1
jbe 0x531995
push esi
call dword [sym.imp.KERNEL32.dll_TryAcquireSRWLockExclusive]
test al, al
je 0x531883
mov dword [esp + 8], esi
mov edi, dword [0x64a74c]
test edi, edi
je 0x5313e2
mov eax, dword [0x64a744]
cmp eax, 1
jbe 0x5319c4
mov esi, dword [edi + 4]
test esi, esi
je 0x5313e2
mov edx, dword [esp + 4]
bswap edx
mov eax, dword [esp + 0xc]
bswap eax
mov dword [esp + 0xc], eax
imul eax, eax, 0x5bd1e995
mov ecx, eax
shr ecx, 0x18
xor ecx, eax
imul eax, ecx, 0x5bd1e995
xor eax, 0xde8f4ca8
mov dword [esp + 4], edx
imul ecx, edx, 0x5bd1e995
mov edx, ecx
shr edx, 0x18
xor edx, ecx
imul ecx, edx, 0x5bd1e995
imul eax, eax, 0x5bd1e995
xor eax, ecx
mov ecx, eax
shr ecx, 0xd
xor ecx, eax
imul eax, ecx, 0x5bd1e995
mov ecx, eax
shr ecx, 0xf
xor ecx, eax
mov edx, esi
shr edx, 1
and edx, 0x55555555
mov eax, esi
sub eax, edx
mov edx, eax
and edx, 0x33333333
shr eax, 2
and eax, 0x33333333
add eax, edx
mov edx, eax
shr edx, 4
add edx, eax
and edx, 0xf0f0f0f
imul eax, edx, 0x1010101
shr eax, 0x18
mov dword [esp + 0x18], eax
cmp eax, 1
jbe 0x531879
mov ebx, ecx
cmp ecx, esi
jb 0x5311c8
mov eax, ecx
xor edx, edx
div esi
mov ebx, edx
mov eax, dword [edi]
mov eax, dword [eax + ebx*4]
test eax, eax
je 0x5313e2
mov edi, dword [eax]
test edi, edi
je 0x5313e2
mov eax, dword [edi + 4]
cmp ecx, eax
jne 0x5312c8
mov eax, dword [edi + 8]
xor eax, dword [esp + 0xc]
mov edx, dword [edi + 0xc]
xor edx, dword [esp + 4]
or edx, eax
jne 0x5312ed
mov edi, dword [edi + 0x10]
push dword [esp + 8]
call dword [sym.imp.KERNEL32.dll_ReleaseSRWLockExclusive]
mov ebx, 2
test edi, edi
je 0x5313ec
mov eax, dword [edi]
mov esi, dword [eax + 0xc]
xor eax, eax
cmp esi, fcn.00560430
je 0x531235
mov ecx, esi
call dword [0x63e1cc]
mov ecx, edi
call esi
cmp ebx, eax
jne 0x531a6b
mov ebx, dword [esp + 0x44]
test ebx, ebx
je 0x5312b0
mov eax, dword [esp + 0x3c]
mov dword [esp + 0xc], eax
mov eax, dword [esp + 0x40]
mov dword [esp + 4], eax
mov eax, dword [edi]
mov esi, dword [eax + 0x10]
cmp esi, 0x560440
jne 0x5312f4
mov eax, dword [edi + 0xc]
mov ecx, dword [eax + 0xc]
mov eax, dword [ecx]
mov ecx, dword [ecx + 4]
sub ecx, eax
mov edx, ecx
sar edx, 2
lea esi, [edx - 1]
cmp esi, ebx
jne 0x531a6b
cmp esi, 2
jb 0x531ab3
cmp edx, 1
jbe 0x531ac2
mov edx, dword [esp + 0xc]
cmp dword [eax + 4], edx
jne 0x531a6b
mov eax, dword [eax + ecx - 8]
cmp eax, dword [esp + 4]
jne 0x531a6b
mov ecx, dword [esp + 0xb0]
xor ecx, ebp
call fcn.00565ea5
mov eax, edi
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret
cmp dword [esp + 0x18], 1
mov dword [esp + 0x14], ebx
jbe 0x53186f
cmp eax, esi
jb 0x5312e1
xor edx, edx
div esi
mov eax, edx
mov ebx, dword [esp + 0x14]
cmp eax, ebx
jne 0x5313e2
mov edi, dword [edi]
jmp 0x5311d7
mov ecx, esi
call dword [0x63e1cc]
mov ecx, edi
push ebx
push dword [esp + 8]
push dword [esp + 0x14]
call esi
test al, al
jne 0x5312b0
jmp 0x531a6b
mov esi, dword [edi + 0x34]
cmp ebx, 0x40
mov dword [esp + 0x10], esi
jb 0x531a5b
mov ecx, ebx
and ecx, 7
jne 0x531a5b
mov edx, ebx
add edx, 0x10
jb 0x531a5b
mov ecx, esi
mov esi, dword [esi + 0xc]
cmp edx, esi
ja 0x531a5b
mov edx, dword [ecx + 4]
mov ecx, dword [edx + ebx + 4]
cmp ecx, 0xc8799269
jne 0x531a5b
mov dword [esp + 0x14], edi
add edx, ebx
mov ecx, dword [edx]
cmp ecx, 0x10
jb 0x531a5b
mov edi, dword [edx]
add edi, ebx
setb cl
test edx, edx
je 0x531a5b
test cl, cl
jne 0x531a5b
cmp edi, esi
mov edi, dword [esp + 0x14]
ja 0x531a5b
lock cmpxchg dword [edi + 0x38], ebx
jne 0x53107b
mov esi, dword [edx + 8]
mov ecx, dword [edi + 0x34]
mov eax, dword [ecx + 4]
mov eax, dword [eax + 0x28]
mov dword [esp + 0x10], ecx
mov ecx, dword [ecx + 0xc]
cmp ecx, eax
cmovb eax, ecx
mov ecx, 0xaaaaaaab
mul ecx
shr edx, 4
cmp dword [esp + 8], edx
ja 0x531a5b
lock inc dword [edi + 0x3c]
cmp esi, 0xf1645914
jne 0x531071
cmp ebx, dword [esp + 0x18]
je 0x531071
jmp 0x53188f
push dword [esp + 8]
call dword [sym.imp.KERNEL32.dll_ReleaseSRWLockExclusive]
xorpd xmm0, xmm0
movupd xmmword [esp + 0x9c], xmm0
movupd xmmword [esp + 0x90], xmm0
movupd xmmword [esp + 0x80], xmm0
movupd xmmword [esp + 0x70], xmm0
movupd xmmword [esp + 0x60], xmm0
movapd xmm0, xmmword [0x62e720]
movupd xmmword [esp + 0x50], xmm0
mov edi, dword [esp + 0x1c]
test edi, edi
lea ebx, [esp + 0x68]
mov esi, dword [ebp + 8]
je 0x531465
lea eax, [edi*8]
mov ecx, edi
shr ecx, 0x1d
mov dword [esp + 0x64], ecx
mov dword [esp + 0x60], eax
cmp edi, 0x40
jae 0x531811
mov eax, edi
mov dword [esp + 0xa8], eax
push eax
push esi
push ebx
call fcn.005670c0
add esp, 0xc
mov ecx, dword [esp + 0xa8]
mov esi, dword [esp + 0x60]
mov edi, dword [esp + 0x64]
mov byte [esp + ecx + 0x68], 0x80
lea eax, [ecx + 1]
cmp eax, 0x39
jae 0x5315a4
cmp eax, 0x38
je 0x53149f
mov ecx, 0x38
sub ecx, eax
add eax, ebx
push ecx
push 0
push eax
call fcn.00567640
add esp, 0xc
mov dword [esp + 0xa0], esi
mov dword [esp + 0xa4], edi
push 1
push ebx
lea eax, [esp + 0x58]
push eax
call fcn.004e3480
add esp, 0xc
mov eax, dword [esp + 0x50]
bswap eax
push eax
call fcn.00531b20
add esp, 4
test al, al
je 0x531adb
mov eax, fcn.005329d0
cmp eax, 0x52afc0
je 0x5315da
lea ecx, [esp + 0x2c]
call fcn.005329d0
mov ebx, eax
push ebx
call fcn.00531cf0
add esp, 4
mov edi, eax
cmp dword [esp + 0x44], 0
je 0x531a17
mov dword [esp + 0x50], 0
mov esi, dword [0x6550b0]
test esi, esi
je 0x53183a
lea ebx, [esp + 0x4c]
mov ecx, esi
lea eax, [esp + 0x50]
push eax
push dword [esp + 0x4c]
push edi
push dword [esp + 0x4c]
push dword [esp + 0x4c]
push dword [esp + 0x48]
push dword [esp + 0x48]
push dword [esp + 0x54]
push ebx
call fcn.00532b70
mov ebx, dword [ebx]
test ebx, ebx
je 0x53183a
mov eax, dword [esp + 0x2c]
mov edi, dword [eax + 8]
cmp edi, method.std::__Cr::basic_streambuf_char__struct_std::__Cr::char_traits_char__.virtual_4
je 0x53156d
mov ecx, edi
call dword [0x63e1cc]
lea ecx, [esp + 0x2c]
push ebx
call edi
push ebx
call fcn.00532290
add esp, 4
mov edi, eax
mov eax, dword [esp + 0x50]
test eax, eax
je 0x531590
xor edx, edx
cmp edi, ebx
sete dl
mov ecx, esi
push edx
push eax
call fcn.00531bb0
mov ebx, dword [esp + 0x38]
jmp 0x53121a
mov byte [eax + 2], 0
mov word [eax], 0
jmp 0x5315c3
cmp ecx, 0x3f
je 0x5315c3
add eax, ebx
cmp ecx, 0x3c
je 0x531599
mov edx, 0x3f
sub edx, ecx
push edx
push 0
push eax
call fcn.00567640
add esp, 0xc
push 1
push ebx
lea eax, [esp + 0x58]
push eax
call fcn.004e3480
add esp, 0xc
xor eax, eax
jmp 0x53148a
push 0x14
call fcn.00562bc5
add esp, 4
mov ebx, eax
mov ecx, eax
push 4
call fcn.0052b1f0
mov eax, dword [ebx]
mov ecx, dword [ebx + 4]
sub ecx, eax
cmp ecx, 4
jbe 0x531a95
mov dword [eax + 4], 1
mov ecx, dword [ebx]
mov eax, dword [ebx + 4]
mov esi, eax
sub esi, ecx
sar esi, 2
lea edx, [esi - 1]
cmp edx, 3
mov dword [esp + 8], ebx
jb 0x5316fa
add esi, 0xfffffffd
mov dword [esp + 4], esi
xor esi, esi
inc esi
mov ebx, 2
nop word cs:[eax + eax]
xorps xmm0, xmm0
cvtsi2sd xmm0, esi
sub esp, 8
movsd qword [esp], xmm0
call fcn.0058f970
add esp, 8
fstp qword [esp + 0x50]
lea eax, [esp + 0x50]
push eax
call fcn.00501440
add esp, 4
mov eax, dword [esp + 8]
mov ecx, dword [eax]
mov eax, dword [eax + 4]
mov dword [esp + 0xc], ecx
sub eax, ecx
sar eax, 2
cmp eax, ebx
jbe 0x531a95
movsd xmm0, qword [esp + 0x50]
movsd xmm1, qword [0x615a80]
subsd xmm1, xmm0
mov edi, dword [esp + 4]
movd xmm2, edi
por xmm2, xmmword [0x626540]
subsd xmm2, qword [0x626550]
divsd xmm1, xmm2
addsd xmm1, xmm0
sub esp, 8
movsd qword [esp], xmm1
call fcn.0058f9c0
fstp qword [esp]
call fcn.0058f91d
add esp, 8
fstp qword [esp + 0x20]
cvttsd2si eax, qword [esp + 0x20]
cmp esi, eax
lea esi, [esi + 1]
cmovl esi, eax
mov eax, dword [esp + 0xc]
mov dword [eax + ebx*4], esi
inc ebx
dec edi
mov dword [esp + 4], edi
jne 0x531640
mov ebx, dword [esp + 8]
mov ecx, dword [ebx]
mov eax, dword [ebx + 4]
cmp eax, ecx
je 0x531a95
mov dword [eax - 4], 0x7fffffff
mov esi, dword [ebx]
mov eax, dword [ebx + 4]
mov edi, eax
sub edi, esi
je 0x531ad1
js 0x531ad8
mov ecx, edi
shr ecx, 2
mov edx, esi
and edi, 3
jne 0x5319f2
sub esi, eax
cmp esi, 0xfffffffc
ja 0x531792
nop word cs:[eax + eax]
movzx esi, cl
movzx edi, byte [edx]
xor edi, esi
shr ecx, 8
xor ecx, dword [edi*4 + 0x62fd30]
movzx esi, cl
movzx edi, byte [edx + 1]
xor edi, esi
shr ecx, 8
xor ecx, dword [edi*4 + 0x62fd30]
movzx esi, cl
movzx edi, byte [edx + 2]
xor edi, esi
shr ecx, 8
xor ecx, dword [edi*4 + 0x62fd30]
movzx esi, cl
movzx edi, byte [edx + 3]
xor edi, esi
shr ecx, 8
xor ecx, dword [edi*4 + 0x62fd30]
add edx, 4
cmp edx, eax
jne 0x531740
mov dword [ebx + 0xc], ecx
jmp 0x5314ef
mov byte [eax + 2], 0
mov word [eax], 0
jmp 0x5317c4
cmp ecx, 0x3f
je 0x5317c4
add eax, ebx
cmp ecx, 0x3c
je 0x53179a
mov edx, 0x3f
sub edx, ecx
push edx
push 0
push eax
call fcn.00567640
add esp, 0xc
lea eax, [esp + 0x50]
push 1
push ebx
push eax
call fcn.004e3480
add esp, 0xc
xor eax, eax
jmp 0x53101e
mov eax, esi
shr eax, 6
lea ecx, [esp + 0x50]
push eax
push edi
push ecx
call fcn.004e3480
add esp, 0xc
mov eax, esi
and eax, 0x3f
je 0x530ff5
mov ecx, esi
and ecx, 0xffffffc0
add ecx, edi
jmp 0x530fe3
mov ecx, dword [ecx + 4]
add ecx, 0x30
jmp 0x5310c3
mov eax, edi
shr eax, 6
push eax
push esi
lea eax, [esp + 0x58]
push eax
call fcn.004e3480
add esp, 0xc
mov eax, edi
and eax, 0x3f
je 0x531465
and edi, 0xffffffc0
add esi, edi
jmp 0x531453
lea eax, [esp + 0x2c]
and byte [eax + 0x1c], 0xbf
mov eax, dword [eax]
mov ebx, dword [eax + 4]
mov ecx, ebx
call dword [0x63e1cc]
lea eax, [esp + 0x4c]
lea ecx, [esp + 0x2c]
push edi
mov edi, eax
push eax
call ebx
mov ebx, dword [edi]
lea eax, [esp + 0x2c]
mov eax, dword [eax + 0x1c]
lock or dword [ebx + 8], eax
jmp 0x53154f
lea edx, [esi - 1]
and eax, edx
jmp 0x5312e1
lea ebx, [esi - 1]
and ebx, ecx
jmp 0x5311c8
push esi
call dword [sym.imp.KERNEL32.dll_AcquireSRWLockExclusive]
jmp 0x5310f1
mov esi, dword [edi + 0x30]
mov ecx, dword [esi + 4]
push 0x68
push 0xf1645914
push ebx
call fcn.0052d6e0
mov dword [esp + 8], esi
mov ecx, dword [esi + 4]
push ebx
mov ebx, eax
call fcn.0052d750
test ebx, ebx
je 0x5310d3
cmp byte [ebx + 0x60], 0
je 0x5310d3
cmp byte [ebx + eax - 1], 0
jne 0x5310d3
mov eax, dword [ebx + 0x20]
mov ecx, dword [ebx + 0x24]
mov edx, eax
or edx, ecx
je 0x5310d3
mov esi, dword [ebx + 0x40]
mov edx, dword [ebx + 0x44]
mov edi, esi
or edi, edx
je 0x5310d3
mov edi, esi
xor edi, eax
mov dword [esp + 0x10], ebx
mov ebx, edx
xor ebx, ecx
or ebx, edi
mov edi, dword [esp + 0x14]
setne bl
add eax, 1
adc ecx, 0
xor eax, esi
xor ecx, edx
or ecx, eax
setne al
test bl, al
mov ebx, dword [esp + 0x10]
jne 0x5310d3
mov esi, ebx
add esi, 0x60
push esi
call fcn.0057d130
add esp, 4
push eax
push esi
call fcn.004fda90
add esp, 8
xor edx, dword [ebx + 0x24]
xor eax, dword [ebx + 0x20]
or eax, edx
jne 0x5310d3
mov ecx, dword [esp + 8]
push ebx
lea eax, [esp + 0x54]
push eax
call fcn.0052f220
mov eax, dword [esp + 0x50]
test eax, eax
je 0x5310d3
xor esi, esi
mov dword [esp + 0x50], esi
push eax
call fcn.00532290
add esp, 4
mov ebx, dword [esp + 0x50]
mov dword [esp + 0x50], esi
test ebx, ebx
je 0x531069
mov eax, dword [ebx]
mov esi, dword [eax]
mov ecx, esi
call dword [0x63e1cc]
mov ecx, ebx
push 1
call esi
jmp 0x531069
push 0x64a744
call fcn.00408d30
add esp, 4
test al, al
je 0x531af7
mov dword [0x64a748], 0
mov esi, 0x64a748
mov dword [0x64a744], esi
jmp 0x5310e2
push 0x64a744
call fcn.00408d30
add esp, 4
test al, al
je 0x531b02
mov dword [0x64a748], 0
mov eax, 0x64a748
mov dword [0x64a744], eax
jmp 0x531111
movzx ebx, cl
mov dword [esp + 4], ebx
movzx ebx, byte [edx]
xor ebx, dword [esp + 4]
shr ecx, 8
xor ecx, dword [ebx*4 + 0x62fd30]
mov ebx, dword [esp + 8]
inc edx
dec edi
jne 0x5319f2
jmp 0x53172e
mov eax, dword [edi + 4]
sub eax, dword [edi]
sar eax, 2
lea ecx, [eax - 1]
mov dword [esp + 0x44], ecx
mov ecx, dword [edi]
mov edx, dword [edi + 4]
sub edx, ecx
cmp edx, 4
jbe 0x531ac2
mov ecx, dword [ecx + 4]
mov dword [esp + 0x3c], ecx
lea edx, [eax - 2]
mov ecx, dword [edi]
mov esi, dword [edi + 4]
sub esi, ecx
sar esi, 2
cmp esi, edx
jbe 0x531ac2
mov eax, dword [ecx + eax*4 - 8]
mov dword [esp + 0x40], eax
jmp 0x531505
mov ecx, dword [esp + 0x10]
push 1
call fcn.00590500
jmp 0x5310d3
push dword [esp + 0x34]
push dword [esp + 0x34]
call fcn.004fda90
add esp, 8
push eax
push str.Histogram.MismatchedConstructionArguments
call fcn.00402cd0
add esp, 8
call fcn.005c56a0
mov edi, eax
jmp 0x5312b0
push str....._third_partylibc_srcinclude_vector:1411:_assertion___n___size___failed:_vector___index_out_of_bounds_n
push 0x622e92
call fcn.0058fdd0
push str....._third_partylibc_srcinclude_string_view:268:_assertion___s___nullptr_failed:_null_pointer_passed_to_non_null_argument_of_char_traits_..._::length_n
push 0x622e92
call fcn.0058fdd0
cmp dword [esp + 0xc], 0xffffffff
jne 0x531a6b
xor eax, eax
dec eax
jmp 0x5312a6
push str....._third_partylibc_srcinclude_vector:1418:_assertion___n___size___failed:_vector___index_out_of_bounds_n
push 0x622e92
call fcn.0058fdd0
xor ecx, ecx
jmp 0x531792
int3
call fcn.005c56a0
mov esi, eax
mov ecx, dword [esp + 0xb0]
xor ecx, ebp
call fcn.00565ea5
mov eax, esi
jmp 0x5312c0
mov esi, dword [0x64a744]
jmp 0x5310e2
mov eax, dword [0x64a744]
jmp 0x531111