Function at 0x10021d60
Capabilities:
Encode data using xor

Disassembly:
mov eax, 0x4c
call fcn.100d6420
mov eax, dword [0x10151618]
xor eax, esp
mov dword [esp + 0x48], eax
mov eax, dword [esp + 0x58]
cmp eax, 0x10
mov ecx, dword [esp + 0x5c]
mov edx, dword [esp + 0x64]
push ebx
mov ebx, dword [esp + 0x64]
push esi
mov esi, dword [esp + 0x58]
push edi
mov edi, dword [esp + 0x60]
mov dword [esp + 0x14], esi
mov dword [esp + 0x1c], eax
mov dword [esp + 0x18], ecx
mov dword [esp + 0x10], edx
jae 0x10021db9
pop edi
pop esi
xor eax, eax
pop ebx
mov ecx, dword [esp + 0x48]
xor ecx, esp
call fcn.100d6528
add esp, 0x4c
ret
push ebp
mov ebp, eax
and ebp, 0xf
jne 0x10021de6
push edx
push ebx
push ecx
push eax
push edi
push esi
call sym.LIBEAY32.dll_CRYPTO_cbc128_decrypt
mov eax, dword [esp + 0x38]
add esp, 0x18
pop ebp
pop edi
pop esi
pop ebx
mov ecx, dword [esp + 0x48]
xor ecx, esp
call fcn.100d6528
add esp, 0x4c
ret
mov edx, 0xfffffff0
sub edx, ebp
add eax, edx
mov dword [esp + 0x20], eax
je 0x10021e17
mov edx, dword [esp + 0x14]
push edx
push ebx
push ecx
push eax
push edi
push esi
call sym.LIBEAY32.dll_CRYPTO_cbc128_decrypt
mov eax, dword [esp + 0x38]
mov ecx, dword [esp + 0x34]
add esi, eax
add esp, 0x18
mov dword [esp + 0x18], esi
add edi, eax
push ecx
lea ecx, [esp + 0x4c]
lea eax, [esi + ebp]
push ecx
push eax
mov dword [esp + 0x38], eax
call dword [esp + 0x20]
mov eax, dword [esp + 0x58]
mov edx, dword [esp + 0x54]
mov ecx, dword [esp + 0x5c]
push ebp
mov dword [esp + 0x4c], eax
mov dword [esp + 0x48], edx
mov edx, dword [esp + 0x64]
lea eax, [esp + 0x48]
push esi
push eax
mov dword [esp + 0x58], ecx
mov dword [esp + 0x5c], edx
call fcn.100d73f0
mov ecx, dword [esp + 0x34]
push ecx
lea edx, [esp + 0x54]
push edx
mov eax, edx
push eax
call dword [esp + 0x38]
mov edx, dword [esp + 0x3c]
sub edx, edi
mov dword [esp + 0x54], edx
mov edx, edi
sub edx, ebx
mov dword [esp + 0x40], edx
lea edx, [esp + 0x5c]
sub edx, ebx
mov dword [esp + 0x38], edx
lea edx, [esp + 0x5d]
sub edx, ebx
mov dword [esp + 0x48], edx
lea edx, [esp + 0x5e]
sub edx, ebx
mov dword [esp + 0x4c], edx
lea edx, [esp + 0x5f]
sub edx, ebx
mov dword [esp + 0x58], edx
mov edx, edi
add esp, 0x24
xor ecx, ecx
add esi, 1
sub edx, dword [esp + 0x18]
mov eax, ebx
mov dword [esp + 0x18], edx
mov edx, dword [esp + 0x1c]
mov ebx, dword [esp + 0x30]
add edx, eax
movzx edx, byte [edx + ebx]
movzx ebx, byte [eax]
mov byte [esp + 0x13], dl
mov edx, dword [esp + 0x14]
xor bl, byte [edx + eax]
mov edx, dword [esp + 0x1c]
mov byte [edx + eax], bl
mov ebx, dword [esp + 0x14]
add edx, eax
movzx edx, byte [esi + ebp - 1]
mov byte [eax], dl
movzx edx, byte [esp + 0x13]
mov byte [ebx + eax], dl
movzx edx, byte [esi]
mov ebx, dword [esp + 0x18]
mov byte [esp + 0x13], dl
mov edx, dword [esp + 0x24]
movzx edx, byte [edx + eax]
xor dl, byte [eax + 1]
add ecx, 4
mov byte [ebx + esi], dl
movzx edx, byte [esi + ebp]
mov ebx, dword [esp + 0x24]
mov byte [eax + 1], dl
movzx edx, byte [esp + 0x13]
mov byte [ebx + eax], dl
mov ebx, dword [esp + 0x28]
movzx ebx, byte [ebx + eax]
xor bl, byte [eax + 2]
mov dl, byte [esi + 1]
mov byte [edi + ecx - 2], bl
mov ebx, dword [esp + 0x2c]
movzx ebx, byte [ebx + ecx - 2]
mov byte [eax + 2], bl
mov ebx, dword [esp + 0x28]
mov byte [ebx + eax], dl
movzx edx, byte [esi + 2]
movzx ebx, byte [eax + 3]
mov byte [esp + 0x13], dl
mov edx, dword [esp + 0x34]
xor bl, byte [edx + eax]
add eax, 4
mov byte [edi + ecx - 1], bl
mov ebx, dword [esp + 0x2c]
movzx ebx, byte [ebx + ecx - 1]
mov byte [eax - 1], bl
movzx ebx, byte [esp + 0x13]
mov byte [edx + eax - 4], bl
add esi, 4
cmp ecx, 0x10
jb 0x10021eb4
add ebp, 0x10
cmp ecx, ebp
jae 0x10021fa6
lea eax, [esp + 0x38]
sub edi, eax
jmp 0x10021f90
mov dl, byte [esp + ecx + 0x28]
xor dl, byte [esp + ecx + 0x38]
lea eax, [edi + ecx]
add ecx, 1
cmp ecx, ebp
mov byte [esp + eax + 0x38], dl
jb 0x10021f90
mov ecx, dword [esp + 0x20]
lea eax, [ecx + ebp + 0x10]
mov ecx, dword [esp + 0x58]
pop ebp
pop edi
pop esi
pop ebx
xor ecx, esp
call fcn.100d6528
add esp, 0x4c
ret