Function at 0x4ff3c0
Capabilities:
Encode data using xor

Disassembly:
push ecx
mov edx, dword [esp + 0xc]
cmp edx, 0x10
je 0x4ff3d8
cmp edx, 0x18
je 0x4ff3d8
cmp edx, 0x20
je 0x4ff3d8
xor eax, eax
pop ecx
ret
mov al, byte [esp + 0x10]
push ebx
push ebp
push esi
mov esi, dword [esp + 0x20]
and al, 3
or byte [esi + 0x208], al
shr edx, 2
push edi
mov dword [esi], edx
mov eax, edx
cmp edx, 4
ja 0x4ff3fd
mov eax, 4
mov ecx, dword [esp + 0x18]
lea edi, [eax + 6]
mov dword [esi + 4], edi
mov ebx, dword [ecx]
lea eax, [esi + 8]
mov dword [eax], ebx
mov ebx, dword [ecx + 4]
mov dword [esi + 0xc], ebx
mov ebx, dword [ecx + 8]
mov dword [esi + 0x10], ebx
mov ebx, dword [ecx + 0xc]
lea edi, [edi*4 + 4]
sub edi, edx
sub edx, 4
mov dword [esi + 0x14], ebx
lea ebx, [eax + edi*4]
mov edi, 0x5abb58
je 0x4ff5c0
sub edx, 2
je 0x4ff531
sub edx, 2
jne 0x4ff62d
mov edx, dword [ecx + 0x10]
mov dword [esi + 0x18], edx
mov edx, dword [ecx + 0x14]
mov dword [esi + 0x1c], edx
mov edx, dword [ecx + 0x18]
mov dword [esi + 0x20], edx
mov ecx, dword [ecx + 0x1c]
mov dword [esi + 0x24], ecx
mov ebp, dword [eax + 0x1c]
mov ecx, ebp
rol ecx, 0x18
mov edx, ecx
shr edx, 0x18
mov edx, dword [edx*4 + 0x5ae7d0]
mov dword [esp + 0x10], ebx
mov ebx, ecx
shr ebx, 0x10
movzx esi, bl
xor edx, dword [esi*4 + 0x5ae3d0]
mov ebx, ecx
movzx ecx, cl
shr ebx, 8
movzx esi, bl
xor edx, dword [esi*4 + 0x5adfd0]
mov esi, dword [eax + 0xc]
xor edx, dword [ecx*4 + str.cwko0]
mov ecx, dword [eax + 4]
xor edx, dword [eax]
mov ebx, dword [esp + 0x10]
xor edx, dword [edi]
add eax, 0x20
xor ecx, edx
mov dword [eax], edx
mov edx, dword [eax - 0x18]
xor edx, ecx
xor esi, edx
mov dword [eax + 4], ecx
mov dword [eax + 8], edx
mov ecx, esi
shr ecx, 0x10
movzx ecx, cl
mov dword [esp + 0x1c], ecx
mov dword [eax + 0xc], esi
mov edx, esi
shr edx, 0x18
mov ecx, dword [edx*4 + 0x5ae7d0]
mov edx, dword [esp + 0x1c]
xor ecx, dword [edx*4 + 0x5ae3d0]
mov edx, esi
shr edx, 8
movzx edx, dl
xor ecx, dword [edx*4 + 0x5adfd0]
movzx edx, byte [eax + 0xc]
xor ecx, dword [edx*4 + str.cwko0]
mov edx, dword [eax - 0xc]
xor ecx, dword [eax - 0x10]
add edi, 4
xor edx, ecx
mov dword [eax + 0x10], ecx
mov ecx, dword [eax - 8]
xor ecx, edx
xor ebp, ecx
mov dword [eax + 0x14], edx
mov dword [eax + 0x18], ecx
mov dword [eax + 0x1c], ebp
cmp eax, ebx
jb 0x4ff464
jmp 0x4ff629
mov edx, dword [ecx + 0x10]
mov dword [esi + 0x18], edx
mov ecx, dword [ecx + 0x14]
mov dword [esi + 0x1c], ecx
lea ecx, [ecx]
mov esi, dword [eax + 0x14]
mov ecx, esi
rol ecx, 0x18
mov dword [esp + 0x1c], ebx
mov ebx, ecx
mov edx, ecx
shr edx, 0x18
mov edx, dword [edx*4 + 0x5ae7d0]
shr ebx, 0x10
movzx ebp, bl
xor edx, dword [ebp*4 + 0x5ae3d0]
mov ebx, ecx
shr ebx, 8
movzx ebp, bl
xor edx, dword [ebp*4 + 0x5adfd0]
mov ebx, dword [esp + 0x1c]
movzx ecx, cl
xor edx, dword [ecx*4 + str.cwko0]
mov ecx, dword [eax + 4]
xor edx, dword [eax]
add eax, 0x18
xor edx, dword [edi]
add edi, 4
xor ecx, edx
mov dword [eax], edx
mov edx, dword [eax - 0x10]
xor edx, ecx
mov dword [eax + 4], ecx
mov ecx, dword [eax - 0xc]
xor ecx, edx
mov dword [eax + 8], edx
mov edx, dword [eax - 8]
xor edx, ecx
xor esi, edx
mov dword [eax + 0xc], ecx
mov dword [eax + 0x10], edx
mov dword [eax + 0x14], esi
cmp eax, ebx
jb 0x4ff540
jmp 0x4ff629
mov esi, dword [eax + 0xc]
mov ecx, esi
rol ecx, 0x18
mov dword [esp + 0x1c], ebx
mov ebx, ecx
shr ebx, 0x10
mov edx, ecx
shr edx, 0x18
mov edx, dword [edx*4 + 0x5ae7d0]
movzx ebp, bl
xor edx, dword [ebp*4 + 0x5ae3d0]
mov ebx, ecx
shr ebx, 8
movzx ebp, bl
xor edx, dword [ebp*4 + 0x5adfd0]
mov ebx, dword [esp + 0x1c]
movzx ecx, cl
xor edx, dword [ecx*4 + str.cwko0]
mov ecx, dword [eax + 4]
xor edx, dword [eax]
add eax, 0x10
xor edx, dword [edi]
add edi, 4
xor ecx, edx
mov dword [eax], edx
mov edx, dword [eax - 8]
xor edx, ecx
xor esi, edx
mov dword [eax + 4], ecx
mov dword [eax + 8], edx
mov dword [eax + 0xc], esi
cmp eax, ebx
jb 0x4ff5c0
mov esi, dword [esp + 0x24]
cmp byte [esi + 0x208], 1
je 0x4ff903
mov eax, dword [esi + 8]
mov dword [esi + 0x108], eax
lea edx, [esi + 8]
mov eax, dword [edx + 4]
add edx, 4
lea ecx, [esi + 0x108]
mov dword [ecx + 4], eax
mov eax, dword [edx + 4]
add ecx, 4
add edx, 4
add ecx, 4
mov dword [ecx], eax
mov eax, dword [edx + 4]
add edx, 4
add ecx, 4
mov dword [ecx], eax
mov eax, 1
add ecx, 4
add edx, 4
mov dword [esp + 0x10], eax
cmp dword [esi + 4], eax
jbe 0x4ff8e3
mov esi, dword [edx]
mov edi, esi
and edi, 0x80808080
mov eax, edi
shr eax, 7
sub edi, eax
and edi, 0x1b1b1b1b
mov eax, esi
and eax, 0xff7f7f7f
add eax, eax
xor edi, eax
mov eax, edi
mov ebx, eax
and ebx, 0x80808080
mov edi, ebx
shr edi, 7
sub ebx, edi
mov edi, eax
and edi, 0xff7f7f7f
add edi, edi
and ebx, 0x1b1b1b1b
xor ebx, edi
mov edi, ebx
and edi, 0x80808080
mov ebp, edi
shr ebp, 7
sub edi, ebp
and edi, 0x1b1b1b1b
mov ebp, ebx
and ebp, 0xff7f7f7f
add ebp, ebp
xor edi, ebp
xor esi, edi
mov dword [esp + 0x1c], edi
mov edi, ebx
xor edi, esi
mov ebp, eax
xor ebp, esi
add edx, 4
rol edi, 0x10
rol ebp, 0x18
xor edi, ebp
rol esi, 8
xor edi, esi
xor edi, dword [esp + 0x1c]
add ecx, 4
xor edi, ebx
xor edi, eax
mov dword [ecx - 4], edi
mov esi, dword [edx]
mov edi, esi
and edi, 0x80808080
mov eax, edi
shr eax, 7
sub edi, eax
and edi, 0x1b1b1b1b
mov eax, esi
and eax, 0xff7f7f7f
add eax, eax
xor edi, eax
mov eax, edi
mov ebx, eax
and ebx, 0x80808080
mov edi, ebx
shr edi, 7
sub ebx, edi
mov edi, eax
and edi, 0xff7f7f7f
add edi, edi
and ebx, 0x1b1b1b1b
xor ebx, edi
mov edi, ebx
and edi, 0x80808080
mov ebp, edi
shr ebp, 7
sub edi, ebp
mov ebp, ebx
and ebp, 0xff7f7f7f
add edx, 4
and edi, 0x1b1b1b1b
add ebp, ebp
xor edi, ebp
xor esi, edi
mov dword [esp + 0x1c], edi
mov ebp, eax
xor ebp, esi
mov edi, ebx
xor edi, esi
rol edi, 0x10
rol ebp, 0x18
xor edi, ebp
rol esi, 8
xor edi, esi
xor edi, dword [esp + 0x1c]
add ecx, 4
xor edi, ebx
xor edi, eax
mov dword [ecx - 4], edi
mov esi, dword [edx]
mov edi, esi
and edi, 0x80808080
mov eax, edi
shr eax, 7
sub edi, eax
and edi, 0x1b1b1b1b
mov eax, esi
and eax, 0xff7f7f7f
add eax, eax
xor edi, eax
mov eax, edi
mov ebx, eax
and ebx, 0x80808080
mov edi, ebx
shr edi, 7
sub ebx, edi
mov edi, eax
and edi, 0xff7f7f7f
add edi, edi
and ebx, 0x1b1b1b1b
xor ebx, edi
mov edi, ebx
and edi, 0x80808080
mov ebp, edi
shr ebp, 7
sub edi, ebp
and edi, 0x1b1b1b1b
mov ebp, ebx
and ebp, 0xff7f7f7f
add ebp, ebp
xor edi, ebp
xor esi, edi
mov dword [esp + 0x1c], edi
mov ebp, eax
add edx, 4
mov edi, ebx
xor edi, esi
rol edi, 0x10
xor ebp, esi
rol ebp, 0x18
xor edi, ebp
rol esi, 8
xor edi, esi
xor edi, dword [esp + 0x1c]
add ecx, 4
xor edi, ebx
xor edi, eax
mov dword [ecx - 4], edi
mov esi, dword [edx]
mov edi, esi
and edi, 0x80808080
mov eax, edi
shr eax, 7
sub edi, eax
mov eax, esi
and eax, 0xff7f7f7f
add eax, eax
and edi, 0x1b1b1b1b
xor edi, eax
mov eax, edi
mov ebx, eax
add edx, 4
and ebx, 0x80808080
mov edi, ebx
shr edi, 7
sub ebx, edi
mov edi, eax
and edi, 0xff7f7f7f
add edi, edi
and ebx, 0x1b1b1b1b
xor ebx, edi
mov edi, ebx
and edi, 0x80808080
mov ebp, edi
shr ebp, 7
sub edi, ebp
and edi, 0x1b1b1b1b
mov ebp, ebx
and ebp, 0xff7f7f7f
add ebp, ebp
xor edi, ebp
xor esi, edi
mov dword [esp + 0x1c], edi
mov ebp, eax
mov edi, ebx
xor edi, esi
rol edi, 0x10
xor ebp, esi
rol ebp, 0x18
xor edi, ebp
rol esi, 8
xor edi, esi
xor edi, dword [esp + 0x1c]
mov esi, dword [esp + 0x24]
xor edi, ebx
xor edi, eax
mov eax, dword [esp + 0x10]
mov dword [ecx], edi
inc eax
add ecx, 4
mov dword [esp + 0x10], eax
cmp eax, dword [esi + 4]
jb 0x4ff686
mov eax, dword [edx]
mov dword [ecx], eax
mov eax, dword [edx + 4]
add edx, 4
add ecx, 4
mov dword [ecx], eax
mov eax, dword [edx + 4]
add ecx, 4
add edx, 4
mov dword [ecx], eax
mov edx, dword [edx + 4]
mov dword [ecx + 4], edx
pop edi
pop esi
pop ebp
mov eax, 1
pop ebx
pop ecx
ret