Function at 0xd21a4
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
add esp, 0xffffffe0
push ebx
push esi
push edi
mov dword [ebp - 8], ecx
mov dword [ebp - 4], edx
cmp dword [ebp + 0xc], 0
je 0xd23f3
mov eax, dword [ebp - 8]
cmp byte [eax + 0x15], 0
je 0xd21cf
mov eax, dword [ebp - 8]
cmp byte [eax + 0x16], 2
jne 0xd21de
mov eax, dword [ebp - 8]
cmp byte [eax + 0x16], 2
sete al
and al, byte [ebp + 8]
je 0xd2214
mov eax, dword [ebp - 8]
cmp byte [eax + 0x15], 0
je 0xd2203
cmp dword [ebp + 0x14], 0
jne 0xd2203
mov ecx, 0xd243c
mov dl, 1
mov eax, dword [0x17b94]
call fcn.0001bcf8
call fcn.0001375c
mov dl, 1
mov eax, dword [0xbb378]
call fcn.000c04fc
mov dword [ebp - 0x1c], eax
jmp 0xd221a
mov eax, dword [ebp + 0xc]
mov dword [ebp - 0x1c], eax
xor eax, eax
push ebp
push 0xd23c9
push dword fs:[eax]
mov dword fs:[eax], esp
mov eax, dword [ebp - 8]
cmp byte [eax + 0x16], 2
jne 0xd22ae
cmp byte [ebp + 8], 0
jne 0xd22ae
mov edx, dword [ebp + 0xc]
mov eax, dword [ebp - 0x1c]
mov ecx, dword [eax]
call dword [ecx + 8]
mov dl, 1
mov eax, dword [0x7b500]
call fcn.0007b7b0
mov dword [ebp - 0x20], eax
xor eax, eax
push ebp
push 0xd22a7
push dword fs:[eax]
mov dword fs:[eax], esp
mov edx, dword [ebp - 0x20]
mov eax, dword [ebp - 0x1c]
call fcn.000c0094
mov eax, dword [ebp - 8]
mov al, byte [eax + 0x25]
mov edx, dword [ebp - 0x20]
mov byte [edx + 0x37], al
mov eax, dword [ebp - 0x20]
call fcn.0007bcd4
mov eax, dword [ebp + 0x10]
call fcn.00023448
mov edx, dword [ebp + 0x10]
mov eax, dword [ebp - 0x20]
mov ecx, dword [eax]
call dword [ecx + 0x54]
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
push 0xd23ab
mov eax, dword [ebp - 0x20]
call fcn.00013004
ret
mov eax, dword [ebp - 0x1c]
cmp eax, dword [ebp + 0xc]
je 0xd2354
mov edx, dword [ebp + 0xc]
mov eax, dword [ebp - 0x1c]
mov ecx, dword [eax]
call dword [ecx + 8]
mov ecx, dword [ebp + 0x14]
mov dl, 1
mov eax, dword [0xd10f8]
call fcn.000d1150
mov dword [ebp - 0x18], eax
xor eax, eax
push ebp
push 0xd234d
push dword fs:[eax]
mov dword fs:[eax], esp
mov eax, dword [ebp + 0xc]
mov edx, dword [eax + 0x40]
mov eax, dword [ebp - 0x18]
call fcn.000d11cc
mov eax, dword [ebp + 0xc]
mov ebx, dword [eax + 0x40]
dec ebx
test ebx, ebx
jl 0xd2337
inc ebx
xor esi, esi
mov eax, dword [ebp - 0x18]
call fcn.000d1204
mov edx, eax
mov eax, dword [ebp + 0xc]
call fcn.00067380
push eax
mov edx, esi
mov eax, dword [ebp - 0x1c]
call fcn.00067380
push eax
mov eax, dword [ebp + 0xc]
mov eax, dword [eax + 0x44]
cdq
xor eax, edx
sub eax, edx
mov ecx, eax
pop eax
pop edx
call fcn.00017620
inc esi
dec ebx
jne 0xd2301
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
push 0xd2354
mov eax, dword [ebp - 0x18]
call fcn.00013004
ret
mov eax, dword [ebp - 0x1c]
mov eax, dword [eax + 0x44]
mov dword [ebp - 0xc], eax
mov eax, dword [ebp - 0xc]
cdq
xor eax, edx
sub eax, edx
mov esi, eax
mov eax, dword [ebp - 0x1c]
mov edx, dword [eax + 0x40]
imul edx, esi
mov eax, dword [ebp + 0x10]
mov ecx, dword [eax]
call dword [ecx]
mov eax, dword [ebp + 0x10]
mov eax, dword [eax + 4]
mov dword [ebp - 0x14], eax
mov eax, dword [ebp - 0x1c]
call fcn.00067450
mov edi, eax
mov eax, dword [ebp - 0x1c]
mov ebx, dword [eax + 0x40]
dec ebx
test ebx, ebx
jl 0xd23ab
inc ebx
mov ecx, esi
mov edx, edi
mov eax, dword [ebp - 0x14]
call fcn.00017620
add dword [ebp - 0x14], esi
add edi, dword [ebp - 0xc]
dec ebx
jne 0xd2396
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
push 0xd23d0
mov eax, dword [ebp - 0x1c]
cmp eax, dword [ebp + 0xc]
je 0xd23c8
mov eax, dword [ebp - 0x1c]
call fcn.00013004
ret
mov eax, dword [ebp + 0x10]
call fcn.00023448
mov eax, dword [ebp + 0x10]
call fcn.0002303c
mov dword [ebp - 0x10], eax
lea edx, [ebp - 0x10]
mov ecx, 4
mov eax, dword [ebp - 4]
mov ebx, dword [eax]
call dword [ebx + 8]
cmp dword [ebp - 0x10], 0
jle 0xd2429
xor ecx, ecx
mov edx, dword [ebp + 0x10]
mov eax, dword [ebp - 4]
call fcn.000230e4
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x10