Function at 0x52fe70
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 [0x646040]
xor eax, ebp
mov dword [esp + 0xb0], eax
test edi, edi
je 0x530b90
mov esi, dword [ebp + 0xc]
push edi
call fcn.0057e5c0
add esp, 4
mov dword [esp + 0x2c], edi
mov dword [esp + 0x30], eax
movaps xmm0, xmmword [0x630d40]
movups xmmword [esp + 0x34], xmm0
mov dword [esp + 0x44], esi
mov esi, eax
mov dword [esp + 0x28], 0x623254
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 [0x630720]
movupd xmmword [ebx - 0x18], xmm0
test eax, eax
je 0x52ff25
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 0x5308a2
mov dword [esp + 0xa8], eax
push eax
push ecx
push ebx
call fcn.00568550
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 0x53086c
cmp eax, 0x38
je 0x52ff63
mov ecx, 0x38
sub ecx, eax
add eax, ebx
push ecx
push 0
push eax
call fcn.00568ad0
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.004e2300
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 [0x6570b0]
test edi, edi
je 0x530003
mov eax, dword [edi + 0x2c]
mov dword [esp + 0x10], 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 0x5308cd
cmp eax, 0x40
jb 0x530003
mov edx, eax
and edx, 7
jne 0x530003
mov esi, eax
add esi, 0x10
jb 0x530003
mov edx, dword [ecx + 0xc]
cmp esi, edx
ja 0x530003
mov ecx, dword [ecx + 4]
mov esi, dword [ecx + eax + 4]
cmp esi, 0xc8799269
jne 0x530003
add ecx, eax
mov esi, dword [ecx]
cmp esi, 0x10
jb 0x530003
mov esi, dword [ecx]
add esi, eax
jb 0x530003
cmp esi, edx
ja 0x530003
test ecx, ecx
je 0x530003
mov ebx, dword [ecx + 0xc]
cmp ebx, 0x30
jne 0x53026c
mov esi, dword [0x64c744]
cmp esi, 1
jbe 0x530a81
push esi
call dword [sym.imp.KERNEL32.dll_TryAcquireSRWLockExclusive]
test al, al
je 0x53094a
mov dword [esp + 8], esi
mov edi, dword [0x64c74c]
test edi, edi
je 0x53033c
mov eax, dword [0x64c744]
cmp eax, 1
jbe 0x530ab0
mov esi, dword [edi + 4]
test esi, esi
je 0x53033c
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 + 0x10], eax
cmp eax, 1
jbe 0x530940
mov ebx, ecx
cmp ecx, esi
jb 0x5300f8
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 0x53033c
mov edi, dword [eax]
test edi, edi
je 0x53033c
mov eax, dword [edi + 4]
cmp ecx, eax
jne 0x530222
mov eax, dword [edi + 8]
xor eax, dword [esp + 0xc]
mov edx, dword [edi + 0xc]
xor edx, dword [esp + 4]
or edx, eax
jne 0x530247
mov edi, dword [edi + 0x10]
push dword [esp + 8]
call dword [sym.imp.KERNEL32.dll_ReleaseSRWLockExclusive]
mov ebx, 2
test edi, edi
je 0x530346
mov eax, dword [edi]
mov esi, dword [eax + 0xc]
xor eax, eax
cmp esi, fcn.005616f0
je 0x53017d
cmp esi, 0x561760
je 0x530210
cmp esi, 0x52c900
je 0x53021a
mov ecx, esi
call dword [0x6401dc]
mov ecx, edi
call esi
cmp ebx, eax
jne 0x530b57
mov ebx, dword [esp + 0x40]
test ebx, ebx
je 0x5301f8
mov eax, dword [esp + 0x38]
mov dword [esp + 0xc], eax
mov eax, dword [esp + 0x3c]
mov dword [esp + 4], eax
mov eax, dword [edi]
mov esi, dword [eax + 0x10]
cmp esi, 0x561700
jne 0x53024e
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 0x530b57
cmp esi, 2
jb 0x530b9f
cmp edx, 1
jbe 0x530bae
mov edx, dword [esp + 0xc]
cmp dword [eax + 4], edx
jne 0x530b57
mov eax, dword [eax + ecx - 8]
cmp eax, dword [esp + 4]
jne 0x530b57
mov ecx, dword [esp + 0xb0]
xor ecx, ebp
call fcn.00567335
mov eax, edi
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret
mov eax, 2
jmp 0x53017d
xor eax, eax
inc eax
jmp 0x53017d
cmp dword [esp + 0x10], 1
mov dword [esp + 0x18], ebx
jbe 0x530936
cmp eax, esi
jb 0x53023b
xor edx, edx
div esi
mov eax, edx
mov ebx, dword [esp + 0x18]
cmp eax, ebx
jne 0x53033c
mov edi, dword [edi]
jmp 0x530107
mov ecx, esi
call dword [0x6401dc]
mov ecx, edi
push ebx
push dword [esp + 8]
push dword [esp + 0x14]
call esi
test al, al
jne 0x5301f8
jmp 0x530b57
mov esi, dword [edi + 0x34]
cmp ebx, 0x40
mov dword [esp + 0x14], esi
jb 0x530b47
mov ecx, ebx
and ecx, 7
jne 0x530b47
mov edx, ebx
add edx, 0x10
jb 0x530b47
mov ecx, esi
mov esi, dword [esi + 0xc]
cmp edx, esi
ja 0x530b47
mov edx, dword [ecx + 4]
mov ecx, dword [edx + ebx + 4]
cmp ecx, 0xc8799269
jne 0x530b47
mov dword [esp + 0x18], edi
add edx, ebx
mov ecx, dword [edx]
cmp ecx, 0x10
jb 0x530b47
mov edi, dword [edx]
add edi, ebx
setb cl
test edx, edx
je 0x530b47
test cl, cl
jne 0x530b47
cmp edi, esi
mov edi, dword [esp + 0x18]
ja 0x530b47
lock cmpxchg dword [edi + 0x38], ebx
jne 0x52ffab
mov esi, dword [edx + 8]
mov ecx, dword [edi + 0x34]
mov eax, dword [ecx + 4]
mov eax, dword [eax + 0x28]
mov dword [esp + 0x14], 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 0x530b47
lock inc dword [edi + 0x3c]
cmp esi, 0xf1645914
jne 0x52ffa1
cmp ebx, dword [esp + 0x10]
je 0x52ffa1
jmp 0x530956
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 [0x630720]
movupd xmmword [esp + 0x50], xmm0
mov edi, dword [esp + 0x1c]
test edi, edi
lea ebx, [esp + 0x68]
mov esi, dword [ebp + 8]
je 0x5303bf
lea eax, [edi*8]
mov ecx, edi
shr ecx, 0x1d
mov dword [esp + 0x64], ecx
mov dword [esp + 0x60], eax
cmp edi, 0x40
jae 0x5308d8
mov eax, edi
mov dword [esp + 0xa8], eax
push eax
push esi
push ebx
call fcn.00568550
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 0x530460
cmp eax, 0x38
je 0x5303f9
mov ecx, 0x38
sub ecx, eax
add eax, ebx
push ecx
push 0
push eax
call fcn.00568ad0
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.004e2300
add esp, 0xc
mov eax, dword [esp + 0x50]
bswap eax
push eax
call fcn.00530c80
add esp, 4
test al, al
je 0x530bc7
mov eax, fcn.00531b30
cmp eax, 0x529fe0
je 0x530496
cmp eax, 0x55bf50
je 0x53071c
lea ecx, [esp + 0x28]
call fcn.00531b30
mov ebx, eax
jmp 0x530645
mov byte [eax + 2], 0
mov word [eax], 0
jmp 0x53047f
cmp ecx, 0x3f
je 0x53047f
add eax, ebx
cmp ecx, 0x3c
je 0x530455
mov edx, 0x3f
sub edx, ecx
push edx
push 0
push eax
call fcn.00568ad0
add esp, 0xc
push 1
push ebx
lea eax, [esp + 0x58]
push eax
call fcn.004e2300
add esp, 0xc
xor eax, eax
jmp 0x5303e4
push 0x14
call fcn.00564055
add esp, 4
mov ebx, eax
mov ecx, eax
push 4
call fcn.0052a210
mov eax, dword [ebx]
mov ecx, dword [ebx + 4]
sub ecx, eax
cmp ecx, 4
jbe 0x530b81
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 0x5305aa
add esi, 0xfffffffd
mov dword [esp + 4], esi
xor esi, esi
inc esi
mov ebx, 2
nop dword [eax]
xorps xmm0, xmm0
cvtsi2sd xmm0, esi
sub esp, 8
movsd qword [esp], xmm0
call fcn.00590e00
add esp, 8
fstp qword [esp + 0x50]
lea eax, [esp + 0x50]
push eax
call fcn.004ffdf0
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 0x530b81
movsd xmm0, qword [esp + 0x50]
movsd xmm1, qword [0x617a80]
subsd xmm1, xmm0
mov edi, dword [esp + 4]
movd xmm2, edi
por xmm2, xmmword [0x628540]
subsd xmm2, qword [0x628550]
divsd xmm1, xmm2
addsd xmm1, xmm0
sub esp, 8
movsd qword [esp], xmm1
call fcn.00590e50
fstp qword [esp]
call fcn.00590dad
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 0x5304f0
mov ebx, dword [esp + 8]
mov ecx, dword [ebx]
mov eax, dword [ebx + 4]
cmp eax, ecx
je 0x530b81
mov dword [eax - 4], 0x7fffffff
mov esi, dword [ebx]
mov eax, dword [ebx + 4]
mov edi, eax
sub edi, esi
je 0x530bbd
js 0x530bc4
mov ecx, edi
shr ecx, 2
mov edx, esi
and edi, 3
jne 0x530a5c
sub esi, eax
cmp esi, 0xfffffffc
ja 0x530642
nop word cs:[eax + eax]
movzx esi, cl
movzx edi, byte [edx]
xor edi, esi
shr ecx, 8
xor ecx, dword [edi*4 + 0x631d30]
movzx esi, cl
movzx edi, byte [edx + 1]
xor edi, esi
shr ecx, 8
xor ecx, dword [edi*4 + 0x631d30]
movzx esi, cl
movzx edi, byte [edx + 2]
xor edi, esi
shr ecx, 8
xor ecx, dword [edi*4 + 0x631d30]
movzx esi, cl
movzx edi, byte [edx + 3]
xor edi, esi
shr ecx, 8
xor ecx, dword [edi*4 + 0x631d30]
add edx, 4
cmp edx, eax
jne 0x5305f0
mov dword [ebx + 0xc], ecx
push ebx
call fcn.00530e50
add esp, 4
mov edi, eax
cmp dword [esp + 0x40], 0
je 0x530ade
mov dword [esp + 0x48], 0
mov ebx, dword [0x6570b0]
test ebx, ebx
je 0x530901
lea eax, [esp + 0x48]
mov ecx, ebx
push eax
push dword [esp + 0x48]
push edi
push dword [esp + 0x48]
push dword [esp + 0x48]
push dword [esp + 0x44]
push dword [esp + 0x44]
push dword [esp + 0x50]
lea eax, [esp + 0x70]
push eax
call fcn.00531cd0
mov esi, dword [esp + 0x50]
test esi, esi
je 0x530901
mov eax, dword [esp + 0x28]
mov edi, dword [eax + 8]
cmp edi, 0x4f0f90
je 0x5306cd
cmp edi, 0x409010
je 0x5306f9
mov ecx, edi
call dword [0x6401dc]
lea ecx, [esp + 0x28]
push esi
call edi
push esi
call fcn.005313f0
add esp, 4
mov edi, eax
mov eax, dword [esp + 0x48]
test eax, eax
je 0x5306f0
xor edx, edx
cmp edi, esi
sete dl
mov ecx, ebx
push edx
push eax
call fcn.00530d10
mov ebx, dword [esp + 0x34]
jmp 0x53014a
mov eax, dword [esi]
mov edi, dword [eax + 0xc]
mov ecx, edi
call dword [0x6401dc]
mov ecx, esi
call edi
cmp eax, 5
je 0x5306cd
mov eax, dword [esp + 0x48]
test eax, eax
je 0x5306cd
jmp 0x530bed
push 0x14
call fcn.00564055
add esp, 4
mov ebx, eax
mov ecx, eax
push 4
call fcn.0052a210
mov esi, dword [ebx]
mov edx, dword [ebx + 4]
mov eax, edx
sub eax, esi
sar eax, 2
lea ecx, [eax - 1]
cmp ecx, 2
jb 0x5307be
add eax, 0xfffffffd
movd xmm0, eax
por xmm0, xmmword [0x628540]
subsd xmm0, qword [0x628550]
xor edx, edx
inc edx
movq xmm1, qword [0x628550]
movsd xmm2, qword [0x617998]
mov esi, dword [ebx]
mov edi, dword [ebx + 4]
sub edi, esi
sar edi, 2
cmp edi, edx
jbe 0x530b81
movd xmm3, eax
por xmm3, xmm1
subsd xmm3, xmm1
lea edi, [edx - 1]
movd xmm4, edi
por xmm4, xmm1
subsd xmm4, xmm1
addsd xmm4, xmm4
addsd xmm4, xmm3
divsd xmm4, xmm0
addsd xmm4, xmm2
cvttsd2si edi, xmm4
mov dword [esi + edx*4], edi
dec eax
inc edx
cmp edx, ecx
jne 0x53076f
mov esi, dword [ebx]
mov edx, dword [ebx + 4]
cmp edx, esi
je 0x530b81
mov dword [edx - 4], 0x7fffffff
mov esi, dword [ebx]
mov eax, dword [ebx + 4]
mov edi, eax
sub edi, esi
mov dword [esp + 8], ebx
je 0x530be3
js 0x530bea
mov ecx, edi
shr ecx, 2
mov edx, esi
and edi, 3
jne 0x530b26
sub esi, eax
cmp esi, 0xfffffffc
ja 0x530858
mov esi, 0xff
mov edi, ecx
and edi, esi
movzx ebx, byte [edx]
xor ebx, edi
shr ecx, 8
xor ecx, dword [ebx*4 + 0x631d30]
mov edi, ecx
and edi, esi
movzx ebx, byte [edx + 1]
xor ebx, edi
shr ecx, 8
xor ecx, dword [ebx*4 + 0x631d30]
mov edi, ecx
and edi, esi
movzx ebx, byte [edx + 2]
xor ebx, edi
shr ecx, 8
xor ecx, dword [ebx*4 + 0x631d30]
mov edi, ecx
and edi, esi
movzx ebx, byte [edx + 3]
xor ebx, edi
shr ecx, 8
xor ecx, dword [ebx*4 + 0x631d30]
add edx, 4
cmp edx, eax
jne 0x530802
mov ebx, dword [esp + 8]
jmp 0x530642
mov byte [eax + 2], 0
mov word [eax], 0
jmp 0x53088b
cmp ecx, 0x3f
je 0x53088b
add eax, ebx
cmp ecx, 0x3c
je 0x530861
mov edx, 0x3f
sub edx, ecx
push edx
push 0
push eax
call fcn.00568ad0
add esp, 0xc
lea eax, [esp + 0x50]
push 1
push ebx
push eax
call fcn.004e2300
add esp, 0xc
xor eax, eax
jmp 0x52ff4e
mov eax, esi
shr eax, 6
lea ecx, [esp + 0x50]
push eax
push edi
push ecx
call fcn.004e2300
add esp, 0xc
mov eax, esi
and eax, 0x3f
je 0x52ff25
mov ecx, esi
and ecx, 0xffffffc0
add ecx, edi
jmp 0x52ff13
mov ecx, dword [ecx + 4]
add ecx, 0x30
jmp 0x52fff3
mov eax, edi
shr eax, 6
push eax
push esi
lea eax, [esp + 0x58]
push eax
call fcn.004e2300
add esp, 0xc
mov eax, edi
and eax, 0x3f
je 0x5303bf
and edi, 0xffffffc0
add esi, edi
jmp 0x5303ad
lea eax, [esp + 0x28]
and byte [eax + 0x1c], 0xbf
mov eax, dword [eax]
mov esi, dword [eax + 4]
mov ecx, esi
call dword [0x6401dc]
lea ecx, [esp + 0x28]
push edi
lea eax, [esp + 0x54]
push eax
call esi
mov esi, dword [esp + 0x50]
lea eax, [esp + 0x28]
mov eax, dword [eax + 0x1c]
lock or dword [esi + 8], eax
jmp 0x5306a7
lea edx, [esi - 1]
and eax, edx
jmp 0x53023b
lea ebx, [esi - 1]
and ebx, ecx
jmp 0x5300f8
push esi
call dword [sym.imp.KERNEL32.dll_AcquireSRWLockExclusive]
jmp 0x530021
mov esi, dword [edi + 0x30]
mov ecx, dword [esi + 4]
push 0x68
push 0xf1645914
push ebx
call fcn.0052c910
mov dword [esp + 8], esi
mov ecx, dword [esi + 4]
push ebx
mov ebx, eax
call fcn.0052c980
test ebx, ebx
je 0x530003
cmp byte [ebx + 0x60], 0
je 0x530003
cmp byte [ebx + eax - 1], 0
jne 0x530003
mov eax, dword [ebx + 0x20]
mov ecx, dword [ebx + 0x24]
mov edx, eax
or edx, ecx
je 0x530003
mov esi, dword [ebx + 0x40]
mov edx, dword [ebx + 0x44]
mov edi, esi
or edi, edx
je 0x530003
mov edi, esi
xor edi, eax
mov dword [esp + 0x14], ebx
mov ebx, edx
xor ebx, ecx
or ebx, edi
mov edi, dword [esp + 0x18]
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 + 0x14]
jne 0x530003
mov esi, ebx
add esi, 0x60
push esi
call fcn.0057e5c0
add esp, 4
push eax
push esi
call fcn.00539f60
add esp, 8
xor edx, dword [ebx + 0x24]
xor eax, dword [ebx + 0x20]
or eax, edx
jne 0x530003
mov ecx, dword [esp + 8]
push ebx
lea eax, [esp + 0x54]
push eax
call fcn.0053ad60
mov eax, dword [esp + 0x50]
test eax, eax
je 0x530003
xor esi, esi
mov dword [esp + 0x50], esi
push eax
call fcn.005313f0
add esp, 4
mov ebx, dword [esp + 0x50]
mov dword [esp + 0x50], esi
test ebx, ebx
je 0x52ff99
mov eax, dword [ebx]
mov esi, dword [eax]
mov ecx, esi
call dword [0x6401dc]
mov ecx, ebx
push 1
call esi
jmp 0x52ff99
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 + 0x631d30]
mov ebx, dword [esp + 8]
inc edx
dec edi
jne 0x530a5c
jmp 0x5305de
push 0x64c744
call fcn.0040ea60
add esp, 4
test al, al
je 0x530c6b
mov dword [0x64c748], 0
mov esi, 0x64c748
mov dword [0x64c744], esi
jmp 0x530012
push 0x64c744
call fcn.0040ea60
add esp, 4
test al, al
je 0x530c76
mov dword [0x64c748], 0
mov eax, 0x64c748
mov dword [0x64c744], eax
jmp 0x530041
mov eax, dword [edi + 4]
sub eax, dword [edi]
sar eax, 2
lea ecx, [eax - 1]
mov dword [esp + 0x40], ecx
mov ecx, dword [edi]
mov edx, dword [edi + 4]
sub edx, ecx
cmp edx, 4
jbe 0x530bae
mov ecx, dword [ecx + 4]
mov dword [esp + 0x38], ecx
lea edx, [eax - 2]
mov ecx, dword [edi]
mov esi, dword [edi + 4]
sub esi, ecx
sar esi, 2
cmp esi, edx
jbe 0x530bae
mov eax, dword [ecx + eax*4 - 8]
mov dword [esp + 0x3c], eax
jmp 0x53065b
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 + 0x631d30]
inc edx
dec edi
jne 0x530b26
jmp 0x5307f6
mov ecx, dword [esp + 0x14]
push 1
call fcn.00591c90
jmp 0x530003
push dword [esp + 0x30]
push dword [esp + 0x30]
call fcn.00539f60
add esp, 8
push eax
push str.Histogram.MismatchedConstructionArguments
call fcn.0053a370
add esp, 8
call fcn.005c6df0
mov edi, eax
jmp 0x5301f8
push str....._third_partylibc_srcinclude_vector:1411:_assertion___n___size___failed:_vector___index_out_of_bounds_n
push 0x624e92
call fcn.005912b0
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 0x624e92
call fcn.005912b0
cmp dword [esp + 0xc], 0xffffffff
jne 0x530b57
xor eax, eax
dec eax
jmp 0x5301ee
push str....._third_partylibc_srcinclude_vector:1418:_assertion___n___size___failed:_vector___index_out_of_bounds_n
push 0x624e92
call fcn.005912b0
xor ecx, ecx
jmp 0x530642
int3
call fcn.005c6df0
mov esi, eax
mov ecx, dword [esp + 0xb0]
xor ecx, ebp
call fcn.00567335
mov eax, esi
jmp 0x530208
xor ecx, ecx
jmp 0x530858
int3
mov ecx, dword [eax + 4]
mov dword [esp + 4], ecx
test ecx, ecx
je 0x5306cd
lea ecx, [esi + 0x14]
mov dword [esp + 0x10], ecx
mov dword [esp + 0xc], 0
mov dword [esp + 8], 0xc
mov dword [esp + 0x4c], eax
mov ecx, dword [esp + 0x10]
lea edx, [esp + 0x50]
lea edi, [esp + 0x4c]
push edi
push eax
call fcn.005bab10
add esp, 8
mov ecx, dword [esp + 0x50]
add ecx, 0x14
push dword [esp + 4]
call fcn.00433160
mov ecx, dword [esp + 0x48]
mov edx, dword [esp + 0xc]
lea eax, [ecx + edx*8]
add eax, 8
inc edx
mov dword [esp + 0xc], edx
mov edx, dword [esp + 8]
mov ecx, dword [ecx + edx]
add edx, 8
mov dword [esp + 8], edx
mov dword [esp + 4], ecx
test ecx, ecx
jne 0x530c13
jmp 0x5306cd
mov esi, dword [0x64c744]
jmp 0x530012
mov eax, dword [0x64c744]
jmp 0x530041