Function at 0x10021bb5
Capabilities:
Encode data using xor

Disassembly:
mov edi, dword [ebp - 0x80]
mov ecx, dword [ebp - 0x104]
xor eax, eax
or ecx, ecx
je 0x10021be0
mov dword [edi], eax
jns 0x10021bd2
add edi, 0
and dword [esp - 0x4b], edi
lea edi, [edi + 4]
dec ecx
jne 0x10021bc8
mov edi, dword [ebp - 0x100]
call fcn.10021e46
lea edi, [edi + ebx*4 - 0x705fb118]
and edi, dword [ebp - 0x80]
or edi, dword [ebp - 0x80]
mov ecx, dword [ebp - 0x104]
clc
push edx
mov edx, 0
rcl edx, 1
rcr edx, 1
rcl dword [edi]
mov edx, 0
rcl edx, 1
lea edi, [edi + 4]
dec ecx
jne 0x10021c07
rcr edx, 1
pop edx
jb 0x10021c5b
shl edi, 5
or dword [esp - 0x46], ebx
shl edi, 0x1b
xor edi, dword [ebp - 0x80]
mov esi, dword [ebp + 0x18]
xchg ecx, ebp
mov ebp, ecx
add ecx, 0xfffffefc
mov ecx, dword [ecx]
dec ecx
mov eax, dword [edi + ecx*4]
cmp eax, dword [esi + ecx*4]
jb 0x10021cb3
ja 0x10021c5b
dec ecx
jns 0x10021c42
mov edi, dword [ebp - 0x80]
mov esi, dword [ebp + 0x18]
add ebp, 0xfffffefc
mov ecx, dword [ebp]
sub ebp, 0xfffffefc
xchg ecx, ebp
or ebp, ebx
mov ebp, ecx
add ecx, 0xfffffefc
mov ecx, dword [ecx]
clc
push edx
mov edx, 0
rcl edx, 1
rcr edx, 1
mov eax, dword [esi]
sbb dword [edi], eax
mov edx, 0
rcl edx, 1
lea esi, [esi + 4]
cmp dword [esp - 0x54], ecx
xor ecx, 0
lea edi, [edi + 4]
dec ecx
jne 0x10021c87
rcr edx, 1
mov edx, dword [esp]
add esp, 4
add ebp, 0xffffff00
mov eax, dword [ebp]
sub ebp, 0xffffff00
xchg eax, ebp
mov ebp, eax
add eax, 0xffffff00
mov eax, dword [eax]
bt dword [eax], ebx
jae 0x10021e08
mov edi, dword [ebp - 0x80]
or esi, 0xffffffff
not esi
sub esi, edx
dec esi
not esi
mov ecx, dword [ebp - 0x104]
clc
lea esp, [esp - 4]
xchg dword [esp], edx
mov edx, dword [esp]
lea esp, [esp + 4]
lea esp, [esp - 4]
mov edx, 0
rcl edx, 1
rcr edx, 1
mov eax, dword [esi]
adc dword [edi], eax
mov edx, 0
rcl edx, 1
lea esi, [esi + 4]
jmp 0x10021d1e
push ecx
not ecx
mov ecx, esp
xor dword [ecx - 0x58], ebx
pop ecx
lea edi, [edi + 4]
dec ecx
jne 0x10021d04
rcr edx, 1
pop edx
jb 0x10021d62
mov edi, dword [ebp - 0x80]
sub esi, esi
or esi, dword [ebp + 0x18]
mov ecx, dword [ebp - 0x104]
dec ecx
mov eax, dword [edi + ecx*4]
cmp eax, dword [esi + ecx*4]
jb 0x10021e08
ja 0x10021d62
dec ecx
jns 0x10021d49
mov edi, dword [ebp - 0x80]
inc esi
push dword [ebp + 0x18]
sub esi, esi
je 0x10021d78
push ebx
nop
mov dword [esi - 0x7eba4351], ecx
idiv bh
invalid
xor esi, 0xffffffff
sub esp, 0x37
and esi, dword [esp + 0x37]
add esp, 0x3b
mov ecx, dword [ebp - 0x104]
jne 0x10021d93
xor edx, 0
push 0x25ae2f2
xor dword [esp], 0x25ae2f2
add edi, dword [esp]
lea esp, [esp + 4]
clc
lea esp, [esp - 0x48]
mov dword [esp + 0x44], edx
lea esp, [esp + 0x44]
mov edx, 0
rcl edx, 1
rcr edx, 1
mov eax, dword [esi]
sbb dword [edi], eax
mov edx, 0
rcl edx, 1
push esi
inc esi
mov esi, esp
and dword [esi - 0x1b], ebx
pop esi
lea esi, [esi + 4]
lea edi, [edi + 4]
dec ecx
jne 0x10021dba
rcr edx, 1
xor edx, edx
je 0x10021de7
imul ebp, esi, 0xc1251c8f
loop 0x10021df7
shl edx, 0xd
push edx
lea edx, [ecx - 0xda47e5f]
mov edx, esp
mov dword [edx - 0x2f], eax
pop edx
jae 0x10021dff
xor edx, 0
shl edx, 0x13
add edx, dword [esp]
add esp, 4
dec ebx
jns 0x10021beb
or edi, 0xffffffff
not edi
add edi, edx
mov esi, dword [ebp - 0x80]
mov ecx, dword [ebp - 0x104]
rep movsd dword es:[edi], dword [esi]
push dword [esp]
mov dword [esp + 4], 0xf60004c2
mov dword [esp - 0x3b], edx
jmp 0x10021e38
ret 4
jmp 0x10021e28