Function at 0x40c4f3
Capabilities:
Encode data using xor

Disassembly:
push ecx
push ebx
push ebp
push esi
mov esi, dword [esp + 0x14]
mov eax, ecx
shr esi, 2
xor ebp, ebp
mov dword [esp + 0xc], eax
mov ebx, ebp
push edi
mov edi, dword [eax + 8]
test esi, esi
je 0x40c540
add edx, 2
movzx ecx, byte [edx + 1]
movzx eax, byte [edx]
lea edx, [edx + 4]
shl ecx, 8
or ecx, eax
movzx eax, byte [edx - 5]
shl ecx, 8
or ecx, eax
movzx eax, byte [edx - 6]
shl ecx, 8
or ecx, eax
mov dword [edi + ebx*4], ecx
inc ebx
cmp ebx, esi
jb 0x40c513
mov eax, dword [esp + 0x10]
mov eax, dword [eax + 4]
sub eax, 0xa
je 0x40c6af
dec eax
sub eax, 1
je 0x40c62f
dec eax
sub eax, 1
jne 0x40c71d
mov ecx, dword [edi]
add edi, 0x1f
mov ebx, dword [edi - 3]
movzx eax, bl
mov edx, dword [edi - 0x13]
movzx esi, byte [eax + 0x4c6a88]
movzx eax, byte [edi]
lea edi, [edi + 0x20]
shl esi, 8
movzx eax, byte [eax + 0x4c6a88]
xor esi, eax
movzx eax, byte [edi - 0x21]
shl esi, 8
movzx eax, byte [eax + 0x4c6a88]
xor esi, eax
movzx eax, byte [edi - 0x22]
shl esi, 8
movzx eax, byte [eax + 0x4c6a88]
xor esi, eax
mov eax, dword [edi - 0x3b]
xor esi, dword [ebp + 0x4c6b88]
add ebp, 4
xor esi, ecx
mov ecx, dword [edi - 0x37]
xor eax, esi
mov dword [edi - 0x1f], esi
xor ecx, eax
mov dword [edi - 0x1b], eax
xor edx, ecx
mov dword [edi - 0x17], ecx
mov dword [edi - 0x13], edx
movzx eax, byte [edi - 0x10]
movzx ecx, byte [eax + 0x4c6a88]
movzx eax, byte [edi - 0x11]
shl ecx, 8
movzx eax, byte [eax + 0x4c6a88]
xor ecx, eax
movzx eax, byte [edi - 0x12]
shl ecx, 8
movzx eax, byte [eax + 0x4c6a88]
xor ecx, eax
movzx eax, dl
shl ecx, 8
movzx eax, byte [eax + 0x4c6a88]
xor ecx, eax
mov eax, dword [edi - 0x2b]
xor ecx, dword [edi - 0x2f]
xor eax, ecx
mov dword [edi - 0xf], ecx
mov ecx, dword [edi - 0x27]
xor ecx, eax
mov dword [edi - 0xb], eax
xor ebx, ecx
mov dword [edi - 7], ecx
mov dword [edi - 3], ebx
mov ecx, esi
cmp ebp, 0x1c
jb 0x40c565
jmp 0x40c71d
mov ecx, dword [edi]
add edi, 0x17
mov edx, dword [edi - 3]
movzx eax, dl
movzx esi, byte [eax + 0x4c6a88]
movzx eax, byte [edi]
lea edi, [edi + 0x18]
shl esi, 8
movzx eax, byte [eax + 0x4c6a88]
xor esi, eax
movzx eax, byte [edi - 0x19]
shl esi, 8
movzx eax, byte [eax + 0x4c6a88]
xor esi, eax
movzx eax, byte [edi - 0x1a]
shl esi, 8
movzx eax, byte [eax + 0x4c6a88]
xor esi, eax
mov eax, dword [edi - 0x2b]
xor esi, dword [ebp + 0x4c6b88]
add ebp, 4
xor esi, ecx
mov ecx, dword [edi - 0x27]
xor eax, esi
mov dword [edi - 0x17], esi
xor ecx, eax
mov dword [edi - 0x13], eax
mov eax, dword [edi - 0x23]
xor eax, ecx
mov dword [edi - 0xf], ecx
mov ecx, dword [edi - 0x1f]
xor ecx, eax
mov dword [edi - 0xb], eax
xor edx, ecx
mov dword [edi - 7], ecx
mov dword [edi - 3], edx
mov ecx, esi
cmp ebp, 0x20
jb 0x40c634
jmp 0x40c71d
mov ecx, dword [edi]
add edi, 0xf
mov edx, dword [edi - 3]
movzx eax, dl
movzx esi, byte [eax + 0x4c6a88]
movzx eax, byte [edi]
lea edi, [edi + 0x10]
shl esi, 8
movzx eax, byte [eax + 0x4c6a88]
xor esi, eax
movzx eax, byte [edi - 0x11]
shl esi, 8
movzx eax, byte [eax + 0x4c6a88]
xor esi, eax
movzx eax, byte [edi - 0x12]
shl esi, 8
movzx eax, byte [eax + 0x4c6a88]
xor esi, eax
mov eax, dword [edi - 0x1b]
xor esi, dword [ebp + 0x4c6b88]
add ebp, 4
xor esi, ecx
mov ecx, dword [edi - 0x17]
xor eax, esi
mov dword [edi - 0xf], esi
xor ecx, eax
mov dword [edi - 0xb], eax
xor edx, ecx
mov dword [edi - 7], ecx
mov dword [edi - 3], edx
mov ecx, esi
cmp ebp, 0x28
jb 0x40c6b4
pop edi
pop esi
pop ebp
xor eax, eax
pop ebx
pop ecx
ret