Function at 0x530780
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 0x5312e4
mov esi, dword [ebp + 0xc]
push edi
call fcn.0057d4d0
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 0x530835
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 0x53101b
mov dword [esp + 0xa8], eax
push eax
push ecx
push ebx
call fcn.00567460
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 0x530fe5
cmp eax, 0x38
je 0x530873
mov ecx, 0x38
sub ecx, eax
add eax, ebx
push ecx
push 0
push eax
call fcn.005679e0
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.004e3440
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 0x530913
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 0x531046
cmp eax, 0x40
jb 0x530913
mov edx, eax
and edx, 7
jne 0x530913
mov esi, eax
add esi, 0x10
jb 0x530913
mov edx, dword [ecx + 0xc]
cmp esi, edx
ja 0x530913
mov ecx, dword [ecx + 4]
mov esi, dword [ecx + eax + 4]
cmp esi, 0xc8799269
jne 0x530913
add ecx, eax
mov esi, dword [ecx]
cmp esi, 0x10
jb 0x530913
mov esi, dword [ecx]
add esi, eax
jb 0x530913
cmp esi, edx
ja 0x530913
test ecx, ecx
je 0x530913
mov ebx, dword [ecx + 0xc]
cmp ebx, 0x30
jne 0x530b52
mov esi, dword [0x64a744]
cmp esi, 1
jbe 0x5311d5
push esi
call dword [sym.imp.KERNEL32.dll_TryAcquireSRWLockExclusive]
test al, al
je 0x5310c3
mov dword [esp + 8], esi
mov edi, dword [0x64a74c]
test edi, edi
je 0x530c22
mov eax, dword [0x64a744]
cmp eax, 1
jbe 0x531204
mov esi, dword [edi + 4]
test esi, esi
je 0x530c22
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 0x5310b9
mov ebx, ecx
cmp ecx, esi
jb 0x530a08
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 0x530c22
mov edi, dword [eax]
test edi, edi
je 0x530c22
mov eax, dword [edi + 4]
cmp ecx, eax
jne 0x530b08
mov eax, dword [edi + 8]
xor eax, dword [esp + 0xc]
mov edx, dword [edi + 0xc]
xor edx, dword [esp + 4]
or edx, eax
jne 0x530b2d
mov edi, dword [edi + 0x10]
push dword [esp + 8]
call dword [sym.imp.KERNEL32.dll_ReleaseSRWLockExclusive]
mov ebx, 2
test edi, edi
je 0x530c2c
mov eax, dword [edi]
mov esi, dword [eax + 0xc]
xor eax, eax
cmp esi, fcn.005607d0
je 0x530a75
mov ecx, esi
call dword [0x63e19c]
mov ecx, edi
call esi
cmp ebx, eax
jne 0x5312ab
mov ebx, dword [esp + 0x44]
test ebx, ebx
je 0x530af0
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, 0x5607e0
jne 0x530b34
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 0x5312ab
cmp esi, 2
jb 0x5312f3
cmp edx, 1
jbe 0x531302
mov edx, dword [esp + 0xc]
cmp dword [eax + 4], edx
jne 0x5312ab
mov eax, dword [eax + ecx - 8]
cmp eax, dword [esp + 4]
jne 0x5312ab
mov ecx, dword [esp + 0xb0]
xor ecx, ebp
call fcn.00566245
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 0x5310af
cmp eax, esi
jb 0x530b21
xor edx, edx
div esi
mov eax, edx
mov ebx, dword [esp + 0x14]
cmp eax, ebx
jne 0x530c22
mov edi, dword [edi]
jmp 0x530a17
mov ecx, esi
call dword [0x63e19c]
mov ecx, edi
push ebx
push dword [esp + 8]
push dword [esp + 0x14]
call esi
test al, al
jne 0x530af0
jmp 0x5312ab
mov esi, dword [edi + 0x34]
cmp ebx, 0x40
mov dword [esp + 0x10], esi
jb 0x53129b
mov ecx, ebx
and ecx, 7
jne 0x53129b
mov edx, ebx
add edx, 0x10
jb 0x53129b
mov ecx, esi
mov esi, dword [esi + 0xc]
cmp edx, esi
ja 0x53129b
mov edx, dword [ecx + 4]
mov ecx, dword [edx + ebx + 4]
cmp ecx, 0xc8799269
jne 0x53129b
mov dword [esp + 0x14], edi
add edx, ebx
mov ecx, dword [edx]
cmp ecx, 0x10
jb 0x53129b
mov edi, dword [edx]
add edi, ebx
setb cl
test edx, edx
je 0x53129b
test cl, cl
jne 0x53129b
cmp edi, esi
mov edi, dword [esp + 0x14]
ja 0x53129b
lock cmpxchg dword [edi + 0x38], ebx
jne 0x5308bb
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 0x53129b
lock inc dword [edi + 0x3c]
cmp esi, 0xf1645914
jne 0x5308b1
cmp ebx, dword [esp + 0x18]
je 0x5308b1
jmp 0x5310cf
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 0x530ca5
lea eax, [edi*8]
mov ecx, edi
shr ecx, 0x1d
mov dword [esp + 0x64], ecx
mov dword [esp + 0x60], eax
cmp edi, 0x40
jae 0x531051
mov eax, edi
mov dword [esp + 0xa8], eax
push eax
push esi
push ebx
call fcn.00567460
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 0x530de4
cmp eax, 0x38
je 0x530cdf
mov ecx, 0x38
sub ecx, eax
add eax, ebx
push ecx
push 0
push eax
call fcn.005679e0
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.004e3440
add esp, 0xc
mov eax, dword [esp + 0x50]
bswap eax
push eax
call fcn.00531360
add esp, 4
test al, al
je 0x53131b
mov eax, fcn.00532210
cmp eax, 0x52b2a0
je 0x530e1a
lea ecx, [esp + 0x2c]
call fcn.00532210
mov ebx, eax
push ebx
call fcn.00531530
add esp, 4
mov edi, eax
cmp dword [esp + 0x44], 0
je 0x531257
mov dword [esp + 0x50], 0
mov esi, dword [0x6550b0]
test esi, esi
je 0x53107a
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.005323b0
mov ebx, dword [ebx]
test ebx, ebx
je 0x53107a
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 0x530dad
mov ecx, edi
call dword [0x63e19c]
lea ecx, [esp + 0x2c]
push ebx
call edi
push ebx
call fcn.00531ad0
add esp, 4
mov edi, eax
mov eax, dword [esp + 0x50]
test eax, eax
je 0x530dd0
xor edx, edx
cmp edi, ebx
sete dl
mov ecx, esi
push edx
push eax
call fcn.005313f0
mov ebx, dword [esp + 0x38]
jmp 0x530a5a
mov byte [eax + 2], 0
mov word [eax], 0
jmp 0x530e03
cmp ecx, 0x3f
je 0x530e03
add eax, ebx
cmp ecx, 0x3c
je 0x530dd9
mov edx, 0x3f
sub edx, ecx
push edx
push 0
push eax
call fcn.005679e0
add esp, 0xc
push 1
push ebx
lea eax, [esp + 0x58]
push eax
call fcn.004e3440
add esp, 0xc
xor eax, eax
jmp 0x530cca
push 0x14
call fcn.00562f65
add esp, 4
mov ebx, eax
mov ecx, eax
push 4
call fcn.0052b4d0
mov eax, dword [ebx]
mov ecx, dword [ebx + 4]
sub ecx, eax
cmp ecx, 4
jbe 0x5312d5
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 0x530f3a
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.0058fd10
add esp, 8
fstp qword [esp + 0x50]
lea eax, [esp + 0x50]
push eax
call fcn.005017e0
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 0x5312d5
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.0058fd60
fstp qword [esp]
call fcn.0058fcbd
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 0x530e80
mov ebx, dword [esp + 8]
mov ecx, dword [ebx]
mov eax, dword [ebx + 4]
cmp eax, ecx
je 0x5312d5
mov dword [eax - 4], 0x7fffffff
mov esi, dword [ebx]
mov eax, dword [ebx + 4]
mov edi, eax
sub edi, esi
je 0x531311
js 0x531318
mov ecx, edi
shr ecx, 2
mov edx, esi
and edi, 3
jne 0x531232
sub esi, eax
cmp esi, 0xfffffffc
ja 0x530fd2
nop word cs:[eax + eax]
movzx esi, cl
movzx edi, byte [edx]
xor edi, esi
shr ecx, 8
xor ecx, dword [edi*4 + 0x62fe80]
movzx esi, cl
movzx edi, byte [edx + 1]
xor edi, esi
shr ecx, 8
xor ecx, dword [edi*4 + 0x62fe80]
movzx esi, cl
movzx edi, byte [edx + 2]
xor edi, esi
shr ecx, 8
xor ecx, dword [edi*4 + 0x62fe80]
movzx esi, cl
movzx edi, byte [edx + 3]
xor edi, esi
shr ecx, 8
xor ecx, dword [edi*4 + 0x62fe80]
add edx, 4
cmp edx, eax
jne 0x530f80
mov dword [ebx + 0xc], ecx
jmp 0x530d2f
mov byte [eax + 2], 0
mov word [eax], 0
jmp 0x531004
cmp ecx, 0x3f
je 0x531004
add eax, ebx
cmp ecx, 0x3c
je 0x530fda
mov edx, 0x3f
sub edx, ecx
push edx
push 0
push eax
call fcn.005679e0
add esp, 0xc
lea eax, [esp + 0x50]
push 1
push ebx
push eax
call fcn.004e3440
add esp, 0xc
xor eax, eax
jmp 0x53085e
mov eax, esi
shr eax, 6
lea ecx, [esp + 0x50]
push eax
push edi
push ecx
call fcn.004e3440
add esp, 0xc
mov eax, esi
and eax, 0x3f
je 0x530835
mov ecx, esi
and ecx, 0xffffffc0
add ecx, edi
jmp 0x530823
mov ecx, dword [ecx + 4]
add ecx, 0x30
jmp 0x530903
mov eax, edi
shr eax, 6
push eax
push esi
lea eax, [esp + 0x58]
push eax
call fcn.004e3440
add esp, 0xc
mov eax, edi
and eax, 0x3f
je 0x530ca5
and edi, 0xffffffc0
add esi, edi
jmp 0x530c93
lea eax, [esp + 0x2c]
and byte [eax + 0x1c], 0xbf
mov eax, dword [eax]
mov ebx, dword [eax + 4]
mov ecx, ebx
call dword [0x63e19c]
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 0x530d8f
lea edx, [esi - 1]
and eax, edx
jmp 0x530b21
lea ebx, [esi - 1]
and ebx, ecx
jmp 0x530a08
push esi
call dword [sym.imp.KERNEL32.dll_AcquireSRWLockExclusive]
jmp 0x530931
mov esi, dword [edi + 0x30]
mov ecx, dword [esi + 4]
push 0x68
push 0xf1645914
push ebx
call fcn.0052d9c0
mov dword [esp + 8], esi
mov ecx, dword [esi + 4]
push ebx
mov ebx, eax
call fcn.0052da30
test ebx, ebx
je 0x530913
cmp byte [ebx + 0x60], 0
je 0x530913
cmp byte [ebx + eax - 1], 0
jne 0x530913
mov eax, dword [ebx + 0x20]
mov ecx, dword [ebx + 0x24]
mov edx, eax
or edx, ecx
je 0x530913
mov esi, dword [ebx + 0x40]
mov edx, dword [ebx + 0x44]
mov edi, esi
or edi, edx
je 0x530913
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 0x530913
mov esi, ebx
add esi, 0x60
push esi
call fcn.0057d4d0
add esp, 4
push eax
push esi
call fcn.004fde30
add esp, 8
xor edx, dword [ebx + 0x24]
xor eax, dword [ebx + 0x20]
or eax, edx
jne 0x530913
mov ecx, dword [esp + 8]
push ebx
lea eax, [esp + 0x54]
push eax
call fcn.0052f500
mov eax, dword [esp + 0x50]
test eax, eax
je 0x530913
xor esi, esi
mov dword [esp + 0x50], esi
push eax
call fcn.00531ad0
add esp, 4
mov ebx, dword [esp + 0x50]
mov dword [esp + 0x50], esi
test ebx, ebx
je 0x5308a9
mov eax, dword [ebx]
mov esi, dword [eax]
mov ecx, esi
call dword [0x63e19c]
mov ecx, ebx
push 1
call esi
jmp 0x5308a9
push 0x64a744
call fcn.00408d30
add esp, 4
test al, al
je 0x531337
mov dword [0x64a748], 0
mov esi, 0x64a748
mov dword [0x64a744], esi
jmp 0x530922
push 0x64a744
call fcn.00408d30
add esp, 4
test al, al
je 0x531342
mov dword [0x64a748], 0
mov eax, 0x64a748
mov dword [0x64a744], eax
jmp 0x530951
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 + 0x62fe80]
mov ebx, dword [esp + 8]
inc edx
dec edi
jne 0x531232
jmp 0x530f6e
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 0x531302
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 0x531302
mov eax, dword [ecx + eax*4 - 8]
mov dword [esp + 0x40], eax
jmp 0x530d45
mov ecx, dword [esp + 0x10]
push 1
call fcn.005908a0
jmp 0x530913
push dword [esp + 0x34]
push dword [esp + 0x34]
call fcn.004fde30
add esp, 8
push eax
push str.Histogram.MismatchedConstructionArguments
call fcn.00402cd0
add esp, 8
call fcn.005c5a20
mov edi, eax
jmp 0x530af0
push str....._third_partylibc_srcinclude_vector:1411:_assertion___n___size___failed:_vector___index_out_of_bounds_n
push 0x622e92
call fcn.00590170
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.00590170
cmp dword [esp + 0xc], 0xffffffff
jne 0x5312ab
xor eax, eax
dec eax
jmp 0x530ae6
push str....._third_partylibc_srcinclude_vector:1418:_assertion___n___size___failed:_vector___index_out_of_bounds_n
push 0x622e92
call fcn.00590170
xor ecx, ecx
jmp 0x530fd2
int3
call fcn.005c5a20
mov esi, eax
mov ecx, dword [esp + 0xb0]
xor ecx, ebp
call fcn.00566245
mov eax, esi
jmp 0x530b00
mov esi, dword [0x64a744]
jmp 0x530922
mov eax, dword [0x64a744]
jmp 0x530951