Function at 0x10021f25
Capabilities:
Encode data using xor

Disassembly:
mov eax, 0x1005d8b8
call fcn.1005c610
sub esp, 0x30
push ebx
push esi
mov byte [ebp - 0x14], cl
xor esi, esi
mov dword [ebp - 0x30], 0x476d
cmp dword [ebp - 0x30], 0x4936
push edi
mov dword [ebp - 0x10], esp
jle 0x10021f8b
mov ebx, esi
mov edi, esi
mov dword [ebp - 0x24], esi
mov esi, edi
mov edi, 0x6311
mov eax, esi
mov ecx, 0x10078098
xor eax, ebx
cdq
push edx
push eax
call fcn.10003fb2
dec esi
dec edi
jne 0x10021f5b
mov edi, dword [ebp - 0x24]
inc edi
mov dword [ebp - 0x24], edi
cmp edi, 0x7139
jl 0x10021f54
inc ebx
push 0
pop esi
cmp ebx, 0x784b
jl 0x10021f4f
mov dword [ebp - 0x2c], 0x3f17
cmp dword [ebp - 0x2c], 0x3ffe
jle 0x10021ffc
mov edi, esi
mov dword [ebp - 0x18], esi
mov ebx, esi
mov dword [ebp - 0x1c], esi
mov ecx, ebx
mov dword [ebp - 0x28], edi
mov dword [ebp - 0x24], esi
shl edi, cl
mov ebx, esi
mov esi, dword [ebp - 0x24]
lea eax, [ebx + esi]
mov ecx, 0x10078098
or eax, edi
cdq
push edx
push eax
call fcn.10003fb2
inc ebx
cmp ebx, 0x139e
jl 0x10021fb4
inc esi
push 0
mov dword [ebp - 0x24], esi
cmp esi, 0x4ee9
pop esi
jl 0x10021faf
mov ebx, dword [ebp - 0x1c]
mov edi, dword [ebp - 0x18]
inc ebx
mov dword [ebp - 0x1c], ebx
cmp ebx, 0x4706
jl 0x10021fa5
inc edi
mov dword [ebp - 0x18], edi
cmp edi, 0x897
jl 0x10021fa0
cmp byte [ebp - 0x14], 0
je 0x1002202a
mov edx, dword [ebp + 8]
mov dword [edx], esi
cmp dword [edx], 4
jge 0x100220ea
mov edi, dword [ebp + 0x14]
mov ecx, dword [edx]
mov eax, dword [edi]
mov dword [eax + ecx*4], 0x6b46
inc dword [edx]
cmp dword [edx], 4
jl 0x10022013
jmp 0x100220ea
push 4
lea ecx, [ebp - 0x3c]
call fcn.10004264
push 0xfffffffffffffff7
pop ebx
mov dword [ebp - 0x18], ebx
mov dword [ebp - 0x18], esi
jmp 0x1002204f
mov ecx, dword [ebp - 0x18]
mov eax, dword [ebp - 0x3c]
mov dword [eax + ecx*4], 0xfffffff6
inc dword [ebp - 0x18]
cmp dword [ebp - 0x18], 4
jl 0x1002203f
mov dword [ebp - 0x18], esi
jmp 0x10022068
mov eax, dword [ebp - 0x18]
mov dword [ebp + eax*4 - 0x20], 0xffff
inc dword [ebp - 0x18]
cmp dword [ebp - 0x18], 1
jl 0x1002205a
mov edi, dword [ebp - 0x3c]
mov dword [edi + 8], 0xd
mov dword [ebp - 0x28], esi
cmp dword [ebp - 0x28], esi
jne 0x10022089
inc dword [edi + 8]
cmp dword [edi + 8], 0x17
jl 0x10022078
mov dword [ebp - 0x18], 0xfffffff5
jmp 0x100220dc
mov dword [ebp - 0x24], 0xfffffff9
mov dword [ebp - 0x1c], ebx
mov dword [ebp - 0x28], 0xffffffff
cmp dword [edi + 8], esi
jne 0x100220be
mov dword [ebp - 0x24], esi
xor edx, edx
mov ecx, dword [ebp - 0x1c]
mov eax, dword [ebp - 0x24]
cmp eax, ecx
setle dl
mov dword [ebp - 0x1c], edx
mov eax, dword [ebp - 0x1c]
mov eax, dword [ebp - 0x20]
cmp dword [ebp - 0x20], esi
jne 0x100220c9
mov eax, dword [ebp - 0x20]
mov eax, dword [ebp - 0x28]
mov ecx, dword [ebp - 0x24]
sub ecx, eax
neg ecx
sbb ecx, ecx
inc ecx
mov dword [ebp - 0x28], ecx
dec dword [ebp - 0x18]
cmp dword [ebp - 0x18], 0xffffffe5
jg 0x10022092
lea ecx, [ebp - 0x3c]
call fcn.100042e7
mov dword [ebp - 4], esi
cmp dword [ebp - 0x2c], 0x3c94
jge 0x10022105
mov edx, str.vcmb_quhyw_ovv_xxdqxpewc_vxolqdyov_hfezn_ekmibtzcr_divoeh_wwyaa_ypjjuegn_otdwikouc_yenmhskxb_ehfqnsnbu
mov ecx, 0x10078098
call fcn.100065fc
mov dword [ebp - 4], 2
cmp dword [ebp - 0x30], 0x45a4
jge 0x10022124
mov edx, str.ipok_zlxvoe_tjijydsar_vwbacpf_ofwtkok_kvz_gkkeqp_subppxqjw_shtog_qzseffgc_mnh_urgyxwjsx
mov ecx, 0x10078098
call fcn.100065fc
mov ecx, dword [ebp - 0xc]
pop edi
pop esi
mov dword fs:[0], ecx
pop ebx
mov esp, ebp
pop ebp
ret