Function at 0x556230
Capabilities:
Encode data using xor
Encrypt data using xtea

Disassembly:
push ebx
mov ebx, esp
sub esp, 8
and esp, 0xfffffff8
add esp, 4
push ebp
mov ebp, dword [ebx + 4]
mov dword [esp + 4], ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x5b2de1
mov eax, dword fs:[0]
push eax
push ebx
sub esp, 0x30
mov eax, dword [0x62700c]
xor eax, ebp
mov dword [ebp - 0x14], eax
push esi
push edi
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov esi, ecx
mov dword [ebp - 0x30], esi
mov dword [ebp - 4], 0
cmp byte [esi + 0x18], 0
jne 0x556432
mov ecx, dword [ebx + 8]
mov edi, dword [sym.imp.api_ms_win_crt_runtime_l1_1_0.dll__wassert]
test ecx, ecx
jne 0x5562a8
push 0x312
push str.C:_vcpkginstalledx86_windowsinclude_boost_smart_ptr_shared_ptr.hpp
push str.px___0
call edi
mov ecx, dword [ebx + 8]
add esp, 0xc
movzx eax, word [ecx + 4]
push eax
call fcn.0044e9a0
cmp byte [esi + 0x19], 0
je 0x5563e1
cmp dword [ebx + 8], 0
jne 0x5562d6
push 0x30c
push str.C:_vcpkginstalledx86_windowsinclude_boost_smart_ptr_shared_ptr.hpp
push str.px___0
call edi
add esp, 0xc
mov edi, dword [ebx + 8]
movups xmm0, xmmword [esi + 0x1c]
movzx edx, word [edi + 4]
mov eax, edx
mov dword [ebp - 0x28], edx
movups xmmword [ebp - 0x24], xmm0
and eax, 7
je 0x556327
mov ecx, 8
sub ecx, eax
movzx eax, word [edi + 6]
add eax, ecx
mov dword [ebp - 0x2c], ecx
cmp eax, 0x3bf0
jge 0x556325
movzx eax, word [edi + 6]
push ecx
add eax, 8
add eax, edi
push 0x33
push eax
call sub.VCRUNTIME140.dll_memset
mov ecx, dword [ebp - 0x2c]
add esp, 0xc
add word [edi + 4], cx
mov edx, dword [ebp - 0x28]
add edx, ecx
mov ecx, dword [edi + 0x3c20]
mov eax, edx
cdq
add edi, 8
and edx, 3
add edi, ecx
mov dword [ebp - 0x40], edi
lea ecx, [edx + eax]
xor eax, eax
sar ecx, 2
mov dword [ebp - 0x3c], ecx
mov dword [ebp - 0x2c], eax
test ecx, ecx
jle 0x5563db
mov esi, dword [edi + eax*4]
lea ecx, [edi + eax*4]
lea eax, [eax + 1]
mov dword [ebp - 0x34], ecx
lea eax, [edi + eax*4]
mov dword [ebp - 0x28], 0x20
mov edi, dword [eax]
xor edx, edx
mov dword [ebp - 0x38], eax
nop
mov ecx, edi
mov eax, edi
shl eax, 4
shr ecx, 5
xor ecx, eax
mov eax, edx
and eax, 3
add ecx, edi
mov eax, dword [ebp + eax*4 - 0x24]
add eax, edx
sub edx, 0x61c88647
xor ecx, eax
add esi, ecx
mov ecx, esi
mov eax, esi
shl eax, 4
shr ecx, 5
xor ecx, eax
mov eax, edx
shr eax, 0xb
add ecx, esi
and eax, 3
mov eax, dword [ebp + eax*4 - 0x24]
add eax, edx
xor ecx, eax
add edi, ecx
sub dword [ebp - 0x28], 1
jne 0x556370
mov eax, dword [ebp - 0x34]
mov dword [eax], esi
mov eax, dword [ebp - 0x38]
mov dword [eax], edi
mov eax, dword [ebp - 0x2c]
mov edi, dword [ebp - 0x40]
add eax, 2
mov dword [ebp - 0x2c], eax
cmp eax, dword [ebp - 0x3c]
jl 0x556351
mov esi, dword [ebp - 0x30]
mov edi, dword [sym.imp.api_ms_win_crt_runtime_l1_1_0.dll__wassert]
cmp byte [esi + 0x1a], 0
je 0x556432
cmp dword [ebx + 8], 0
jne 0x556401
push 0x312
push str.C:_vcpkginstalledx86_windowsinclude_boost_smart_ptr_shared_ptr.hpp
push str.px___0
call edi
add esp, 0xc
cmp byte [esi + 0x1a], 0
mov edi, dword [ebx + 8]
je 0x556426
mov ecx, dword [edi + 0x3c20]
movzx edx, word [edi + 4]
add ecx, 8
add ecx, edi
call fcn.00592460
push eax
mov ecx, edi
call fcn.0044ea20
movzx eax, word [edi + 4]
mov ecx, edi
push eax
call fcn.0044e9a0
mov eax, dword [ebx + 8]
or edi, 0xffffffff
cmp eax, dword [esi + 4]
jne 0x55647f
mov eax, dword [ebp - 0x30]
mov dword [esi + 4], 0
mov esi, dword [esi + 8]
mov dword [eax + 8], 0
test esi, esi
je 0x55647f
mov ecx, edi
lea eax, [esi + 4]
lock xadd dword [eax], ecx
cmp ecx, 1
jne 0x55647f
mov eax, dword [esi]
mov ecx, esi
call dword [eax + 4]
mov edx, edi
lea eax, [esi + 8]
lock xadd dword [eax], edx
cmp edx, 1
jne 0x55647f
mov eax, dword [esi]
mov ecx, esi
call dword [eax + 8]
mov esi, dword [ebx + 0xc]
test esi, esi
je 0x5564ae
mov ecx, edi
lea eax, [esi + 4]
lock xadd dword [eax], ecx
cmp ecx, 1
jne 0x5564ae
mov eax, dword [esi]
mov ecx, esi
call dword [eax + 4]
lea eax, [esi + 8]
lock xadd dword [eax], edi
cmp edi, 1
jne 0x5564ae
mov eax, dword [esi]
mov ecx, esi
call dword [eax + 8]
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
mov ecx, dword [ebp - 0x14]
xor ecx, ebp
call fcn.0045ad9e
mov esp, ebp
pop ebp
mov esp, ebx
pop ebx
ret 8