Function at 0x41ce10
Capabilities:
Encode data using xor

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0x54
mov eax, dword [esp + 0x70]
mov esi, dword [esp + 0x6c]
mov ebp, dword [eax]
mov ecx, 0xfffffffe
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov eax, ecx
cmp word [ebp + ecx + 2], 0
lea ecx, [ecx + 2]
jne 0x41ce30
mov eax, dword [esp + 0x74]
mov edi, dword [eax + 4]
mov eax, 0xfffffffe
nop
nop
nop
nop
nop
nop
nop
cmp word [edi + eax + 2], 0
lea eax, [eax + 2]
jne 0x41ce50
sar ecx, 1
sar eax, 1
lea edx, [ecx + eax]
mov dword [esp + 0x4c], eax
add eax, ecx
add eax, 0x1b
test eax, eax
mov dword [esp + 0x50], ecx
mov dword [esp + 0x48], edx
jns 0x41ce7e
mov eax, 0xffffffff
jmp 0x41ce85
lea eax, [edx*2 + 0x36]
push eax
call fcn.004095c0
add esp, 4
mov dword [esp + 0xc], 0x31e23fd0
mov dword [esp + 0x10], 0x35d733c1
mov dword [esp + 0x14], 0xc9ca37d7
mov dword [esp + 0x18], 0xcd0dcbe8
mov dword [esp + 0x1c], 0xc13acf44
mov dword [esp + 0x20], 0xc53cc327
mov dword [esp + 0x24], 0xd93dc731
mov dword [esp + 0x28], 0xdd24db29
mov dword [esp + 0x2c], 0xd10bdffc
mov dword [esp + 0x30], 0xd526d337
mov dword [esp + 0x34], 0xe92dd720
mov dword [esp + 0x38], 0xed13eb16
mov dword [esp + 0x3c], 0xe102ef19
mov dword [esp + 0x40], 0xe3e0
mov byte [esp + 0x44], 0
xor edx, edx
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov ecx, edx
add cl, 0xf5
xor cl, byte [esp + edx + 0xc]
add cl, 0x37
mov byte [esp + edx + 0xc], cl
mov ecx, edx
and ecx, 0x25
xor ecx, 0x9cd0f0a5
and edx, 0x1a
sub edx, ecx
inc edx
mov ecx, edx
and ecx, 0x10a5
xor edx, 0x9cd0f0a5
lea edx, [edx + ecx*2]
cmp edx, 0x39
jb 0x41cf10
movzx ecx, word [ebp]
mov ebx, eax
test cx, cx
je 0x41cf72
add ebp, 2
mov ebx, eax
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov word [ebx], cx
add ebx, 2
movzx ecx, word [ebp]
add ebp, 2
test cx, cx
jne 0x41cf60
mov word [ebx], 0
movzx ecx, word [esp + 0xc]
test cx, cx
je 0x41cfa1
lea edx, [esp + 0xe]
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov word [ebx], cx
add ebx, 2
movzx ecx, word [edx]
add edx, 2
test cx, cx
jne 0x41cf90
mov word [ebx], 0
movzx ecx, word [edi]
test cx, cx
mov dword [esp], eax
je 0x41cfd1
add edi, 2
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov word [ebx], cx
add ebx, 2
movzx ecx, word [edi]
add edi, 2
test cx, cx
jne 0x41cfc0
mov word [ebx], 0
mov ebx, dword [esi]
mov eax, 0xfffffffe
nop
nop
nop
cmp word [ebx + eax + 2], 0
lea eax, [eax + 2]
jne 0x41cfe0
mov ecx, dword [esp + 0x70]
mov ebp, dword [ecx + 4]
mov ecx, 0xfffffffe
nop
nop
nop
nop
nop
nop
nop
nop
nop
cmp word [ebp + ecx + 2], 0
lea ecx, [ecx + 2]
jne 0x41d000
mov edx, dword [esp + 0x74]
mov esi, dword [edx]
mov edx, 0xfffffffe
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
cmp word [esi + edx + 2], 0
lea edx, [edx + 2]
jne 0x41d020
sar eax, 1
sar ecx, 1
sar edx, 1
add ecx, eax
lea eax, [edx + ecx]
add eax, 0x13
test eax, eax
mov dword [esp + 4], esi
jns 0x41d048
mov eax, 0xffffffff
jmp 0x41d051
add ecx, edx
lea eax, [ecx*2 + 0x26]
push eax
call fcn.004095c0
add esp, 4
movzx ecx, word [ebx]
mov esi, eax
test cx, cx
je 0x41d081
add ebx, 2
mov esi, eax
nop
nop
nop
nop
nop
nop
nop
mov word [esi], cx
add esi, 2
movzx ecx, word [ebx]
add ebx, 2
test cx, cx
jne 0x41d070
mov dword [esp + 8], eax
mov word [esi], 0x2f
mov dword [esp + 0xc], 0xfcb093b
mov dword [esp + 0x10], 0x3f60d84
mov dword [esp + 0x14], 0x7f401e5
mov dword [esp + 0x18], 0x1be305f3
mov dword [esp + 0x1c], 0x1fec19eb
mov dword [esp + 0x20], 0x13211deb
mov word [esp + 0x24], 0x1110
mov dword [esp + 0x26], 0
mov byte [esp + 0x2a], 0
xor edi, edi
xor ecx, ecx
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx ebx, byte [esp + ecx + 0xc]
mov eax, edi
and eax, 4
mov edx, ecx
xor edx, 0x5414c042
add edx, eax
mov eax, edx
or eax, ebx
not edx
or ebx, edx
sub edx, ebx
add edx, eax
mov eax, edx
not eax
or eax, 0x5b983eb5
add eax, edx
lea eax, [eax*2 + 2]
xor edx, 0x5b983eb5
mov ebx, eax
and ebx, edx
xor edx, eax
lea eax, [edx + ebx*2]
inc al
mov byte [esp + ecx + 0xc], al
inc ecx
add edi, 2
cmp ecx, 0x1f
jne 0x41d0e0
add esi, 2
movzx eax, word [ebp]
test ax, ax
je 0x41d164
add ebp, 2
mov edi, dword [esp + 8]
mov ebx, dword [esp]
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov word [esi], ax
add esi, 2
movzx eax, word [ebp]
add ebp, 2
test ax, ax
jne 0x41d150
jmp 0x41d16b
mov edi, dword [esp + 8]
mov ebx, dword [esp]
mov word [esi], 0
movzx eax, word [esp + 0xc]
test ax, ax
je 0x41d191
lea ecx, [esp + 0xe]
nop
nop
mov word [esi], ax
add esi, 2
movzx eax, word [ecx]
add ecx, 2
test ax, ax
jne 0x41d180
mov word [esi], 0
mov ecx, dword [esp + 4]
movzx eax, word [ecx]
test ax, ax
je 0x41d1c1
add ecx, 2
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov word [esi], ax
add esi, 2
movzx eax, word [ecx]
add ecx, 2
test ax, ax
jne 0x41d1b0
mov word [esi], 0
mov dword [esp + 0xc], 0x6362615a
mov dword [esp + 0x10], 0
mov eax, 0xaef68b68
nop
nop
nop
nop
nop
movzx ecx, byte [esp + eax + 0x510974a4]
mov edx, ecx
and edx, eax
add dl, dl
sub cl, dl
movzx ecx, cl
add ecx, eax
add cl, 0xf8
mov byte [esp + eax + 0x510974a4], cl
inc eax
cmp eax, 0xaef68b70
jne 0x41d1e0
lea ebp, [esp + 0xc]
push 0
push 0
push 0xc00000
push ebp
push ebx
push edi
push dword [esp + 0x80]
call fcn.00421780
add esp, 0x1c
mov byte [esp + 4], al
jmp dword [0x445f20]