Function at 0x41cd20
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x44
movsx ax, byte [edx]
push ebx
mov ebx, ecx
mov dword [ebp - 0x24], edx
push esi
movzx ecx, ax
mov esi, 1
mov al, byte [edx + 1]
mov dword [ebp - 0x1c], ebx
mov dword [ebp - 0xc], ecx
push edi
cmp al, 0x30
jl 0x41cd6c
cbw
add ecx, ecx
inc esi
xor cx, ax
movzx eax, cx
movzx ecx, al
shr ax, 8
xor cx, ax
movsx eax, si
movzx ecx, cx
mov al, byte [eax + edx]
cmp al, 0x30
jge 0x41cd47
mov dword [ebp - 0xc], ecx
mov eax, ebx
xor edx, edx
and eax, 0x7fff
mov ecx, 3
div ecx
movzx edi, dx
mov ecx, edi
mov dword [ebp - 8], ecx
lea ebx, [eax + eax]
mov dword [ebp - 4], ebx
movzx eax, bx
mov word [ebp - 0x30], bx
test cx, cx
je 0x41cdc5
movzx esi, bx
mov eax, esi
shr eax, 1
lea ecx, [eax*2 + 0x467578]
add ecx, eax
movzx edx, byte [ecx + 2]
movzx eax, byte [ecx + 1]
shl edx, 8
add edx, eax
movzx eax, byte [ecx]
shl edx, 8
mov ecx, edi
add edx, eax
mov dword [ebp - 8], ecx
mov dword [ebp - 0x34], edx
jmp 0x41cdc7
mov esi, eax
test cl, cl
jne 0x41cdfa
shr esi, 1
movzx ecx, byte [esi + esi*2 + 0x46757a]
movzx eax, byte [esi + esi*2 + 0x467579]
shl ecx, 8
add ecx, eax
movzx eax, byte [esi + esi*2 + 0x467578]
shl ecx, 8
lea esi, [edi + 1]
add ecx, eax
mov dword [ebp - 0x34], ecx
mov ecx, dword [ebp - 8]
jmp 0x41ce10
cmp cl, 2
jae 0x41ce04
lea esi, [edi + 1]
jmp 0x41ce10
lea eax, [ebx + 2]
xor esi, esi
mov dword [ebp - 4], eax
mov word [ebp - 0x30], ax
movzx eax, cl
xor edx, edx
mov word [ebp - 0x2e], si
mov ecx, 3
movzx ebx, byte [ebp + eax - 0x34]
mov eax, dword [ebp - 0x1c]
inc eax
add eax, ebx
and eax, 0x7fff
div ecx
movzx edi, dx
add eax, eax
mov word [ebp - 0x36], di
mov dword [ebp - 8], eax
mov word [ebp - 0x38], ax
test di, di
je 0x41ce6b
movzx eax, ax
shr eax, 1
lea ecx, [eax*2 + 0x467578]
add ecx, eax
movzx edx, byte [ecx + 2]
movzx eax, byte [ecx + 1]
shl edx, 8
add edx, eax
movzx eax, byte [ecx]
shl edx, 8
add edx, eax
mov dword [ebp - 0x3c], edx
mov eax, ebx
mov dword [ebp - 0x10], 0
mov dword [ebp - 0x28], eax
test eax, eax
je 0x41d085
nop
mov bl, byte [ebp - 0x2e]
test bl, bl
jne 0x41cebb
mov eax, dword [ebp - 4]
movzx eax, ax
shr eax, 1
lea ecx, [eax*2 + 0x467578]
add ecx, eax
movzx edx, byte [ecx + 2]
movzx eax, byte [ecx + 1]
shl edx, 8
add edx, eax
movzx eax, byte [ecx]
shl edx, 8
add edx, eax
inc si
mov dword [ebp - 0x34], edx
mov dword [ebp - 0x14], esi
mov word [ebp - 0x2e], si
jmp 0x41cee2
cmp bl, 2
jae 0x41cecb
inc si
mov dword [ebp - 0x14], esi
mov word [ebp - 0x2e], si
jmp 0x41cee2
mov eax, dword [ebp - 4]
add ax, 2
mov dword [ebp - 4], eax
mov word [ebp - 0x30], ax
xor eax, eax
mov dword [ebp - 0x14], eax
mov word [ebp - 0x2e], ax
movzx eax, bl
mov bl, byte [ebp - 0x36]
movzx ecx, byte [ebp + eax - 0x34]
mov dword [ebp - 0x1c], ecx
test bl, bl
jne 0x41cf2b
mov eax, dword [ebp - 8]
movzx eax, ax
shr eax, 1
lea ecx, [eax*2 + 0x467578]
add ecx, eax
movzx edx, byte [ecx + 2]
movzx eax, byte [ecx + 1]
shl edx, 8
add edx, eax
movzx eax, byte [ecx]
mov ecx, dword [ebp - 0x1c]
shl edx, 8
add edx, eax
inc di
mov dword [ebp - 0x3c], edx
mov dword [ebp - 0x18], edi
mov word [ebp - 0x36], di
jmp 0x41cf52
cmp bl, 2
jae 0x41cf3b
inc di
mov dword [ebp - 0x18], edi
mov word [ebp - 0x36], di
jmp 0x41cf52
mov eax, dword [ebp - 8]
add ax, 2
mov dword [ebp - 8], eax
mov word [ebp - 0x38], ax
xor eax, eax
mov dword [ebp - 0x18], eax
mov word [ebp - 0x36], ax
movzx eax, bl
movzx eax, byte [ebp + eax - 0x3c]
cmp ax, word [ebp - 0xc]
jne 0x41d056
lea eax, [ecx*2 + 0x52]
movzx eax, ax
shr eax, 1
lea edx, [eax*2 + 0x467578]
add edx, eax
movzx ecx, byte [edx + 2]
movzx eax, byte [edx + 1]
shl ecx, 8
add ecx, eax
movzx eax, byte [edx]
shl ecx, 8
xor edx, edx
add eax, ecx
mov ecx, 3
mov dword [ebp - 0x2c], eax
and eax, 0x7fff
div ecx
movzx ecx, dx
mov bl, cl
lea edi, [eax + eax]
mov word [ebp - 0x40], di
test cx, cx
je 0x41cfd6
movzx eax, di
shr eax, 1
lea edx, [eax*2 + 0x467578]
add edx, eax
movzx esi, byte [edx + 2]
movzx eax, byte [edx + 1]
shl esi, 8
add esi, eax
movzx eax, byte [edx]
shl esi, 8
add esi, eax
mov dword [ebp - 0x44], esi
or esi, 0xffffffff
nop dword [eax]
inc esi
mov dword [ebp - 0x20], esi
test bl, bl
jne 0x41d017
movzx eax, di
shr eax, 1
lea edx, [eax*2 + 0x467578]
add edx, eax
movzx esi, byte [edx + 2]
movzx eax, byte [edx + 1]
shl esi, 8
add esi, eax
movzx eax, byte [edx]
shl esi, 8
add esi, eax
inc cx
mov dword [ebp - 0x44], esi
mov dh, cl
mov esi, dword [ebp - 0x20]
jmp 0x41d02e
cmp bl, 2
jae 0x41d022
inc cx
mov dh, cl
jmp 0x41d02e
add di, 2
xor ecx, ecx
mov word [ebp - 0x40], di
xor dh, dh
movzx eax, bl
mov ebx, dword [ebp - 0x24]
mov word [ebp - 0x3e], cx
mov dl, byte [ebp + eax - 0x44]
movsx eax, si
mov al, byte [eax + ebx]
cmp dl, al
jne 0x41d04e
mov bl, dh
test dl, dl
jne 0x41cfe0
jmp 0x41d052
test dl, dl
jne 0x41d056
cmp al, 0x30
jl 0x41d070
mov ecx, dword [ebp - 0x10]
inc ecx
movsx eax, cx
mov dword [ebp - 0x10], ecx
cmp eax, dword [ebp - 0x28]
jge 0x41d085
mov esi, dword [ebp - 0x14]
mov edi, dword [ebp - 0x18]
jmp 0x41ce80
mov edx, dword [ebp + 8]
mov cx, word [ebp - 0x2a]
mov ax, word [ebp - 0x1c]
mov word [edx], cx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
pop edi
pop esi
or eax, 0xffffffff
pop ebx
mov esp, ebp
pop ebp
ret