Function at 0x40cb50
Capabilities:
Encode data using xor

Disassembly:
sub esp, 0x1c
push ebx
push esi
mov esi, dword [esp + 0x28]
xor ebx, ebx
push edi
mov al, byte [esi + 2]
mov cl, byte [esi]
mov byte [esp + 0x1c], al
mov al, byte [esi + 3]
mov byte [esp + 0x10], al
mov al, byte [esi + 4]
mov byte [esp + 0x18], al
mov al, byte [esi + 5]
mov byte [esp + 0x14], al
mov al, byte [esi + 6]
mov dl, byte [esi + 1]
mov byte [esp + 0xc], al
mov al, byte [esi + 7]
mov byte [esp + 0x20], al
mov eax, dword [esp + 0x30]
mov bl, byte [eax]
mov esi, ebx
cmp esi, 0xd
jbe 0x40cb9d
mov esi, 0xd
mov edi, esi
dec esi
test edi, edi
je 0x40cddb
mov bl, byte [esp + 0x10]
inc esi
xor cl, byte [eax + 1]
inc eax
inc eax
mov byte [esp + 0x24], cl
mov cl, byte [eax]
add dl, cl
mov cl, byte [eax + 1]
inc eax
mov byte [esp + 0x30], dl
mov dl, byte [esp + 0x1c]
add dl, cl
inc eax
mov byte [esp + 0x1c], dl
mov dl, byte [eax]
mov edi, dword [esp + 0x1c]
xor bl, dl
mov dl, byte [eax + 1]
inc eax
mov byte [esp + 0x10], bl
mov bl, byte [esp + 0x18]
and edi, 0xff
mov cl, byte [eax + 1]
xor bl, dl
mov dl, byte [esp + 0x14]
inc eax
add dl, cl
inc eax
mov byte [esp + 0x18], bl
mov bl, byte [esp + 0xc]
mov cl, byte [eax + 1]
mov byte [esp + 0x14], dl
mov dl, byte [eax]
add bl, dl
mov dl, byte [esp + 0x20]
inc eax
xor dl, cl
mov byte [esp + 0x20], dl
mov edx, dword [esp + 0x24]
and edx, 0xff
inc eax
mov byte [esp + 0xc], bl
mov cl, byte [edx + 0x438898]
mov dl, byte [eax]
mov bl, byte [eax + 1]
add cl, dl
mov edx, dword [esp + 0x30]
inc eax
and edx, 0xff
mov dl, byte [edx + 0x438798]
xor dl, bl
mov bl, byte [edi + 0x438798]
mov edi, dword [esp + 0x10]
xor bl, byte [eax + 1]
inc eax
and edi, 0xff
mov byte [esp + 0x1c], bl
inc eax
mov bl, byte [edi + 0x438898]
mov edi, dword [esp + 0x18]
add bl, byte [eax]
and edi, 0xff
inc eax
mov byte [esp + 0x10], bl
mov bl, byte [edi + 0x438898]
mov edi, dword [esp + 0x14]
add bl, byte [eax]
and edi, 0xff
inc eax
mov byte [esp + 0x18], bl
mov bl, byte [edi + 0x438798]
mov edi, dword [esp + 0xc]
xor bl, byte [eax]
and edi, 0xff
inc eax
mov byte [esp + 0x14], bl
mov bl, byte [edi + 0x438798]
xor bl, byte [eax]
inc eax
add dl, cl
mov byte [esp + 0xc], bl
mov byte [esp + 0x30], dl
mov bl, byte [esp + 0x10]
add cl, dl
mov dl, byte [esp + 0x1c]
add bl, dl
mov dl, byte [esp + 0x18]
mov byte [esp + 0x10], bl
mov bl, byte [esp + 0x14]
add bl, dl
add dl, bl
mov byte [esp + 0x14], bl
mov bl, byte [eax]
mov byte [esp + 0x18], dl
mov edx, dword [esp + 0x20]
and edx, 0xff
mov dl, byte [edx + 0x438898]
add dl, bl
mov bl, byte [esp + 0xc]
add dl, bl
mov bl, byte [esp + 0x10]
mov byte [esp + 0x20], dl
mov dl, byte [esp + 0x1c]
add bl, cl
add dl, bl
mov bl, byte [esp + 0x18]
mov byte [esp + 0x1c], dl
add cl, dl
mov dl, byte [esp + 0x20]
add dl, bl
mov bl, byte [esp + 0xc]
add bl, dl
mov dl, byte [esp + 0x30]
mov byte [esp + 0xc], bl
mov bl, byte [esp + 0x10]
add bl, dl
add dl, bl
mov byte [esp + 0x10], bl
mov bl, byte [esp + 0x20]
mov byte [esp + 0x30], dl
mov dl, byte [esp + 0x14]
add bl, dl
mov dl, byte [esp + 0x18]
mov byte [esp + 0x20], bl
mov bl, byte [esp + 0xc]
add bl, cl
add dl, bl
mov bl, byte [esp + 0x30]
mov byte [esp + 0x18], dl
add cl, dl
mov dl, byte [esp + 0x20]
add dl, bl
mov bl, byte [esp + 0x14]
add bl, dl
mov dl, byte [esp + 0x1c]
mov byte [esp + 0x14], bl
mov bl, byte [esp + 0xc]
add bl, dl
mov dl, byte [esp + 0x10]
mov byte [esp + 0xc], bl
mov bl, byte [esp + 0x20]
add bl, dl
mov dl, byte [esp + 0x14]
mov byte [esp + 0x20], bl
mov bl, byte [esp + 0x30]
add dl, bl
mov bl, byte [esp + 0x1c]
mov byte [esp + 0x2c], dl
mov dl, byte [esp + 0x18]
mov byte [esp + 0x30], dl
mov dl, byte [esp + 0xc]
add dl, bl
mov bl, byte [esp + 0x10]
mov byte [esp + 0x18], dl
mov dl, byte [esp + 0x2c]
mov byte [esp + 0x1c], dl
mov dl, byte [esp + 0x20]
add dl, bl
mov bl, byte [esp + 0x14]
mov byte [esp + 0x2c], dl
mov dl, byte [esp + 0xc]
mov byte [esp + 0x10], bl
mov byte [esp + 0x14], dl
mov dl, byte [esp + 0x2c]
dec esi
mov byte [esp + 0xc], dl
mov dl, byte [esp + 0x30]
jne 0x40cbad
mov bl, byte [eax + 1]
inc eax
xor cl, bl
inc eax
pop edi
pop esi
mov bl, byte [eax]
add dl, bl
mov bl, byte [eax + 1]
add byte [esp + 0x14], bl
inc eax
inc eax
mov bl, byte [eax]
xor byte [esp + 8], bl
mov bl, byte [eax + 1]
xor byte [esp + 0x10], bl
inc eax
inc eax
mov bl, byte [eax]
add byte [esp + 0xc], bl
mov bl, byte [eax + 1]
add byte [esp + 4], bl
mov bl, byte [esp + 0x18]
inc eax
xor bl, byte [eax + 1]
mov eax, dword [esp + 0x2c]
mov byte [eax], cl
mov cl, byte [esp + 0x14]
mov byte [eax + 1], dl
mov dl, byte [esp + 8]
mov byte [eax + 2], cl
mov cl, byte [esp + 0x10]
mov byte [eax + 3], dl
mov dl, byte [esp + 0xc]
mov byte [eax + 4], cl
mov cl, byte [esp + 4]
mov byte [eax + 7], bl
mov byte [eax + 5], dl
mov byte [eax + 6], cl
pop ebx
add esp, 0x1c
ret