Function at 0x52c070
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, 0xf8
mov ecx, dword [ebp + 8]
mov eax, dword [0x644040]
xor eax, ebp
mov dword [esp + 0xf0], eax
test ecx, ecx
je 0x52c804
mov ebx, dword [ebp + 0x14]
mov edi, dword [ebp + 0x10]
mov esi, dword [ebp + 0xc]
push ecx
call fcn.0057f420
add esp, 4
mov edx, eax
cmp edi, 1
jne 0x52c0bd
cmp ebx, 2
mov ecx, ebx
jne 0x52c0bf
jmp 0x52c8df
mov ecx, ebx
cmp edi, esi
jl 0x52c82b
mov al, 1
mov dword [esp], eax
mov eax, edi
mov edi, esi
test edi, edi
jle 0x52c6fb
cmp eax, 0x7fffffff
je 0x52c821
mov ebx, eax
cmp ecx, 0x3eb
jae 0x52c780
mov esi, ecx
cmp ebx, edi
je 0x52c839
cmp esi, 3
jb 0x52c848
mov eax, ebx
sub eax, edi
add eax, 2
cmp esi, eax
ja 0x52c848
cmp byte [esp], 0
je 0x52c848
mov ecx, dword [ebp + 8]
mov dword [esp + 0x24], ecx
mov dword [esp + 0x28], edx
mov dword [esp + 0x2c], 1
mov dword [esp + 0x30], edi
mov dword [esp + 0x34], ebx
mov dword [esp + 0x38], esi
mov eax, dword [ebp + 0x18]
mov dword [esp + 0x3c], eax
mov dword [esp + 0x20], 0x6222d8
mov dword [esp + 0x40], 0
push edx
push ecx
call fcn.0052c9c0
add esp, 8
mov esi, eax
test eax, eax
je 0x52c29d
mov ebx, dword [esp + 0x2c]
mov eax, dword [esi]
mov edi, dword [eax + 0xc]
xor eax, eax
cmp edi, fcn.00562fa0
je 0x52c186
mov ecx, edi
call dword [0x63e63c]
mov ecx, esi
call edi
mov dword [esp], esi
cmp ebx, eax
jne 0x52c899
mov ebx, dword [esp + 0x38]
test ebx, ebx
je 0x52c201
mov esi, dword [esp + 0x30]
mov eax, dword [esp + 0x34]
mov dword [esp + 4], eax
mov ecx, dword [esp]
mov eax, dword [ecx]
mov edi, dword [eax + 0x10]
cmp edi, 0x562fb0
jne 0x52c240
mov eax, dword [ecx + 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 edi, [edx - 1]
cmp edi, ebx
mov ebx, dword [esp + 4]
jne 0x52c899
cmp edi, 2
jb 0x52c8d2
cmp edx, 1
jbe 0x52c7fd
cmp dword [eax + 4], esi
jne 0x52c899
mov eax, dword [eax + ecx - 8]
cmp eax, ebx
jne 0x52c899
mov dword [esp + 0x20], 0x6222d8
mov eax, dword [esp + 0x40]
mov ecx, eax
shr ecx, 0xe
mov edx, eax
shr edx, 0x13
mov edx, dword [edx*4 + 0x64c804]
bt edx, ecx
jb 0x52c8c4
mov ecx, dword [esp + 0xf0]
xor ecx, ebp
call fcn.00568175
mov eax, dword [esp]
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret
mov ecx, edi
call dword [0x63e63c]
mov ecx, dword [esp]
push ebx
push dword [esp + 8]
push esi
call edi
test al, al
jne 0x52c201
jmp 0x52c899
mov byte [eax + 2], 0
mov word [eax], 0
jmp 0x52c286
cmp ecx, 0x3f
je 0x52c286
add eax, esi
cmp ecx, 0x3c
je 0x52c25c
mov edx, 0x3f
sub edx, ecx
push edx
push 0
push eax
call fcn.00569910
add esp, 0xc
lea eax, [esp + 0x48]
push 1
push esi
push eax
call fcn.004dde80
add esp, 0xc
xor eax, eax
jmp 0x52c32a
mov edi, dword [esp + 0x24]
mov ebx, dword [esp + 0x28]
xorps xmm0, xmm0
lea esi, [esp + 0x60]
movups xmmword [esi + 0x34], xmm0
movups xmmword [esi + 0x28], xmm0
movups xmmword [esi + 0x18], xmm0
movups xmmword [esi + 8], xmm0
movups xmmword [esi - 8], xmm0
movapd xmm0, xmmword [0x62f520]
movupd xmmword [esi - 0x18], xmm0
test ebx, ebx
je 0x52c302
lea eax, [ebx*8]
mov ecx, ebx
shr ecx, 0x1d
mov dword [esp + 0x5c], ecx
mov dword [esp + 0x58], eax
cmp ebx, 0x40
jae 0x52c69d
mov eax, ebx
mov dword [esp + 0xa0], eax
push eax
push edi
push esi
call fcn.00569390
add esp, 0xc
mov ecx, dword [esp + 0xa0]
mov eax, dword [esp + 0x58]
mov dword [esp], eax
mov ebx, dword [esp + 0x5c]
mov byte [esp + ecx + 0x60], 0x80
lea eax, [ecx + 1]
cmp eax, 0x39
jae 0x52c267
cmp eax, 0x38
je 0x52c33f
mov ecx, 0x38
sub ecx, eax
add eax, esi
push ecx
push 0
push eax
call fcn.00569910
add esp, 0xc
lea edi, [esp + 0x48]
mov eax, dword [esp]
mov dword [edi + 0x50], eax
mov dword [edi + 0x54], ebx
push 1
push esi
push edi
call fcn.004dde80
add esp, 0xc
mov ebx, dword [edi]
mov edi, dword [0x64a734]
cmp edi, 1
jbe 0x52c7ce
push edi
call dword [sym.imp.KERNEL32.dll_TryAcquireSRWLockExclusive]
test al, al
je 0x52c774
mov eax, dword [0x64a73c]
test eax, eax
je 0x52c38c
mov esi, dword [eax + 0x50]
test esi, esi
jne 0x52c86f
push edi
call dword [sym.imp.KERNEL32.dll_ReleaseSRWLockExclusive]
mov eax, dword [esp + 0x20]
mov esi, dword [eax]
cmp esi, 0x558840
je 0x52c45d
mov ecx, esi
call dword [0x63e63c]
lea ecx, [esp + 0x20]
call esi
push eax
call fcn.004f7340
add esp, 4
mov esi, eax
cmp dword [esp + 0x38], 0
je 0x52c72c
mov dword [esp + 0x48], 0
mov edi, dword [0x655080]
test edi, edi
je 0x52c6c6
lea ebx, [esp + 0x44]
mov ecx, edi
lea eax, [esp + 0x48]
push eax
push dword [esp + 0x40]
push esi
push dword [esp + 0x40]
push dword [esp + 0x40]
push dword [esp + 0x3c]
push dword [esp + 0x3c]
push dword [esp + 0x48]
push ebx
call fcn.004f8080
mov ebx, dword [ebx]
test ebx, ebx
je 0x52c6c6
mov eax, dword [esp + 0x20]
mov esi, dword [eax + 8]
cmp esi, method.std::__Cr::basic_streambuf_char__struct_std::__Cr::char_traits_char__.virtual_4
je 0x52c431
mov ecx, esi
call dword [0x63e63c]
lea ecx, [esp + 0x20]
push ebx
call esi
push ebx
call fcn.004f78e0
add esp, 4
mov esi, eax
mov eax, dword [esp + 0x48]
test eax, eax
je 0x52c167
xor edx, edx
cmp esi, ebx
sete dl
mov ecx, edi
push edx
push eax
call fcn.00540400
jmp 0x52c167
push 0x14
call fcn.00564ea5
add esp, 4
mov ebx, eax
mov ecx, dword [esp + 0x38]
xor eax, eax
mov esi, ecx
mov dword [ebx], eax
mov dword [ebx + 4], eax
mov dword [ebx + 8], eax
mov edi, 0
mov edx, 0
inc esi
mov dword [esp + 4], ebx
je 0x52c4e4
mov dword [esp], ecx
cmp esi, 0x40000000
jae 0x52c8f8
lea eax, [esi*4]
push eax
call fcn.00564ea5
add esp, 4
mov edi, eax
mov ebx, dword [esp + 4]
mov dword [ebx], eax
mov dword [ebx + 4], eax
lea esi, [eax + esi*4]
mov dword [ebx + 8], esi
mov eax, dword [esp]
lea eax, [eax*4 + 4]
xor ecx, ecx
mov edx, edi
add edx, ecx
je 0x52c80b
mov dword [edx], 0
add ecx, 4
cmp eax, ecx
jne 0x52c4c6
mov dword [ebx + 4], esi
xor eax, eax
mov edx, esi
mov dword [ebx + 0xc], eax
mov dword [ebx + 0x10], eax
xorps xmm0, xmm0
cvtsi2sd xmm0, dword [esp + 0x34]
sub esp, 8
movsd qword [esp], xmm0
mov esi, edx
call fcn.00591c60
add esp, 8
fstp qword [esp + 0x18]
sub esi, edi
cmp esi, 4
jbe 0x52c812
movsd xmm0, qword [esp + 0x18]
movsd qword [esp + 8], xmm0
mov eax, dword [esp + 0x30]
mov dword [esp], eax
mov dword [edi + 4], eax
mov ecx, dword [ebx]
mov eax, dword [ebx + 4]
mov edi, eax
sub edi, ecx
sar edi, 2
lea edx, [edi - 1]
cmp edx, 3
jb 0x52c5fb
add edi, 0xfffffffd
mov esi, 2
mov ecx, dword [esp]
mov dword [esp], ecx
xorps xmm0, xmm0
cvtsi2sd xmm0, ecx
sub esp, 8
movsd qword [esp], xmm0
call fcn.00591c60
add esp, 8
fstp qword [esp + 0x48]
lea eax, [esp + 0x48]
push eax
call fcn.004ef3c0
add esp, 4
mov eax, dword [esp + 4]
mov ebx, dword [eax]
mov eax, dword [eax + 4]
sub eax, ebx
sar eax, 2
cmp eax, esi
jbe 0x52c812
movsd xmm0, qword [esp + 0x48]
movsd xmm1, qword [esp + 8]
subsd xmm1, xmm0
movd xmm2, edi
por xmm2, xmmword [0x627190]
subsd xmm2, qword [0x6271a0]
divsd xmm1, xmm2
addsd xmm1, xmm0
sub esp, 8
movsd qword [esp], xmm1
call fcn.00591cb0
fstp qword [esp]
call fcn.00591c0d
add esp, 8
fstp qword [esp + 0x10]
cvttsd2si eax, qword [esp + 0x10]
mov ecx, dword [esp]
cmp ecx, eax
lea ecx, [ecx + 1]
cmovl ecx, eax
mov dword [ebx + esi*4], ecx
inc esi
dec edi
jne 0x52c54d
mov ebx, dword [esp + 4]
mov ecx, dword [ebx]
mov eax, dword [ebx + 4]
cmp eax, ecx
je 0x52c812
mov dword [eax - 4], 0x7fffffff
mov esi, dword [ebx]
mov eax, dword [ebx + 4]
mov edi, eax
sub edi, esi
je 0x52c8ee
js 0x52c8f5
mov ecx, edi
shr ecx, 2
mov edx, esi
and edi, 3
jne 0x52c70d
sub esi, eax
cmp esi, 0xfffffffc
ja 0x52c691
mov esi, 0xff
movzx edi, byte [edx]
mov ebx, ecx
and ebx, esi
xor ebx, edi
shr ecx, 8
xor ecx, dword [ebx*4 + 0x630a84]
movzx edi, byte [edx + 1]
mov ebx, ecx
and ebx, esi
xor ebx, edi
shr ecx, 8
xor ecx, dword [ebx*4 + 0x630a84]
movzx edi, byte [edx + 2]
mov ebx, ecx
and ebx, esi
xor ebx, edi
shr ecx, 8
xor ecx, dword [ebx*4 + 0x630a84]
movzx edi, byte [edx + 3]
mov ebx, ecx
and ebx, esi
xor ebx, edi
shr ecx, 8
xor ecx, dword [ebx*4 + 0x630a84]
add edx, 4
cmp edx, eax
jne 0x52c63b
mov eax, dword [esp + 4]
mov dword [eax + 0xc], ecx
jmp 0x52c3b3
mov eax, ebx
shr eax, 6
lea ecx, [esp + 0x48]
push eax
push edi
push ecx
call fcn.004dde80
add esp, 0xc
mov eax, ebx
and eax, 0x3f
je 0x52c302
and ebx, 0xffffffc0
add edi, ebx
jmp 0x52c2f0
lea eax, [esp + 0x20]
and byte [eax + 0x1c], 0xbf
mov eax, dword [eax]
mov ebx, dword [eax + 4]
mov ecx, ebx
call dword [0x63e63c]
lea eax, [esp + 0x44]
lea ecx, [esp + 0x20]
push esi
mov esi, eax
push eax
call ebx
mov ebx, dword [esi]
lea eax, [esp + 0x20]
mov eax, dword [eax + 0x1c]
lock or dword [ebx + 8], eax
jmp 0x52c413
xor edi, edi
inc edi
mov ebx, edi
test eax, eax
jg 0x52c0d8
jmp 0x52c0e5
movzx ebx, byte [edx]
mov dword [esp], ebx
movzx ebx, cl
xor ebx, dword [esp]
shr ecx, 8
xor ecx, dword [ebx*4 + 0x630a84]
inc edx
dec edi
jne 0x52c70d
jmp 0x52c62f
mov eax, dword [esi + 4]
sub eax, dword [esi]
sar eax, 2
lea ecx, [eax - 1]
mov dword [esp + 0x38], ecx
mov ecx, dword [esi]
mov edx, dword [esi + 4]
sub edx, ecx
cmp edx, 4
jbe 0x52c7fd
mov ecx, dword [ecx + 4]
mov dword [esp + 0x30], ecx
lea edx, [eax - 2]
mov ecx, dword [esi]
mov edi, dword [esi + 4]
sub edi, ecx
sar edi, 2
cmp edi, edx
jbe 0x52c7fd
mov eax, dword [ecx + eax*4 - 8]
mov dword [esp + 0x34], eax
jmp 0x52c3c9
push edi
call dword [sym.imp.KERNEL32.dll_AcquireSRWLockExclusive]
jmp 0x52c378
mov dword [esp + 8], ecx
push edx
mov esi, dword [ebp + 8]
push esi
mov dword [esp + 0xc], edx
call fcn.0052b630
add esp, 8
push eax
push str.Histogram.TooManyBuckets.1000
call fcn.004faec0
add esp, 8
push 0
push 0x10
push str.Blink.UseCounter
push dword [esp + 0x10]
push esi
call fcn.005357f0
add esp, 0x14
test al, al
je 0x52c90c
mov esi, dword [esp + 8]
mov edx, dword [esp + 4]
jmp 0x52c0f3
push 0x64a734
call fcn.00409590
add esp, 4
test al, al
je 0x52c901
mov dword [0x64a738], 0
mov edi, 0x64a738
mov dword [0x64a734], edi
jmp 0x52c369
push str....._third_partylibc_srcinclude_vector:1418:_assertion___n___size___failed:_vector___index_out_of_bounds_n
jmp 0x52c817
push str....._third_partylibc_srcinclude_string_view:267:_assertion___s___nullptr_failed:_null_pointer_passed_to_non_null_argument_of_char_traits_..._::length_n
jmp 0x52c817
push str....._third_partylibc_srcinclude__memoryconstruct_at.h:40:_assertion___location___nullptr_failed:_null_pointer_given_to_construct_at_n
jmp 0x52c817
push str....._third_partylibc_srcinclude_vector:1411:_assertion___n___size___failed:_vector___index_out_of_bounds_n
push 0x624173
call fcn.00591ed0
mov ebx, 0x7ffffffe
jmp 0x52c0e5
mov dword [esp], 0
mov eax, esi
jmp 0x52c0d0
lea ebx, [edi + 1]
mov dword [esp], 0
jmp 0x52c0fb
push edx
push dword [ebp + 8]
call fcn.0052b630
add esp, 8
push eax
push str.Histogram.BadConstructionArguments
call fcn.004faec0
add esp, 8
call fcn.005c7650
mov dword [esp], eax
jmp 0x52c227
bswap ebx
mov eax, dword [esi]
mov ecx, dword [eax + 4]
mov dword [esp], ecx
call dword [0x63e63c]
mov ecx, esi
push ebx
call dword [esp + 4]
mov ebx, eax
push edi
call dword [sym.imp.KERNEL32.dll_ReleaseSRWLockExclusive]
test bl, bl
jne 0x52c393
jmp 0x52c8b7
push dword [esp + 0x28]
push dword [esp + 0x28]
call fcn.0052b630
add esp, 8
push eax
push 0x62fb00
call fcn.004faec0
add esp, 8
call fcn.005c7650
mov dword [esp], eax
jmp 0x52c201
push eax
call fcn.004f0f10
add esp, 4
jmp 0x52c227
cmp esi, 0xffffffff
jne 0x52c899
xor eax, eax
dec eax
jmp 0x52c1f9
mov edi, 2
mov ecx, 3
jmp 0x52c0bf
xor ecx, ecx
jmp 0x52c691
int3
mov ecx, dword [esp + 4]
call fcn.00591ed0
mov edi, dword [0x64a734]
jmp 0x52c369
push 0
push 0x14
push str.PageLoad.Clients.Ads
push dword [esp + 0x10]
push dword [ebp + 8]
call fcn.005357f0
add esp, 0x14
test al, al
jne 0x52c7c1
mov esi, 0x66
push 2
call fcn.00563020
add esp, 4
test al, al
jne 0x52c94b
mov dword [esp], 0
jmp 0x52c7c5
lea ecx, [esp + 0x48]
push 2
push 0x1bf
push str.histogram.cc
call fcn.0040a9f0
lea eax, [esp + 0x50]
push 0xb
push str.Histogram:
push eax
call fcn.005320d0
add esp, 0xc
push dword [esp + 4]
push dword [ebp + 8]
push eax
call fcn.005320d0
add esp, 0xc
push 0x1c
push str._has_too_many_bucket_count:
push eax
call fcn.005320d0
add esp, 0xc
mov ecx, eax
push dword [esp + 8]
call fcn.00451d70
lea ecx, [esp + 0x48]
call fcn.00407a90
mov edx, dword [esp + 4]
mov dword [esp], 0
jmp 0x52c0f3