Function at 0x41c390
Capabilities:
Encode data using xor

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0x4c
mov ecx, dword [esp + 0x6c]
mov eax, dword [esp + 0x68]
mov ebx, dword [esp + 0x64]
mov ebp, dword [eax + 4]
mov edx, 0xfffffffe
nop
nop
nop
nop
nop
mov eax, edx
cmp word [ebp + edx + 2], 0
lea edx, [edx + 2]
jne 0x41c3b0
mov edi, dword [ecx + 4]
mov ecx, 0xfffffffe
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov eax, ecx
cmp word [edi + ecx + 2], 0
lea ecx, [ecx + 2]
jne 0x41c3d0
sar edx, 1
sar ecx, 1
lea eax, [edx + ecx]
add eax, 0x1b
test eax, eax
mov dword [esp + 0x48], edx
mov dword [esp + 0x44], ecx
jns 0x41c3fa
mov eax, 0xffffffff
jmp 0x41c404
lea eax, [edx + ecx]
lea eax, [eax*2 + 0x36]
push eax
call fcn.004084d0
add esp, 4
mov dword [esp + 0x40], eax
mov dword [esp + 8], 0x175a1548
mov dword [esp + 0xc], 0x1bb919b7
mov dword [esp + 0x10], 0x1fb21dbd
mov dword [esp + 0x14], 0x63276100
mov dword [esp + 0x18], 0x67d265dc
mov dword [esp + 0x1c], 0x6bc469cd
mov dword [esp + 0x20], 0x6fc76ddf
mov dword [esp + 0x24], 0x73dc71df
mov dword [esp + 0x28], 0x77257514
mov dword [esp + 0x2c], 0x7bce79dd
mov dword [esp + 0x30], 0x7fd77dc8
mov dword [esp + 0x34], 0x43e541ee
mov dword [esp + 0x38], 0x471a45f7
mov dword [esp + 0x3c], 0x4948
xor eax, eax
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx edx, byte [esp + eax + 8]
lea esi, [eax + 0xb4]
mov ecx, 0x4b
sub ecx, eax
xor ecx, esi
and ecx, edx
xor ecx, esi
add cl, 0x60
mov byte [esp + eax + 8], cl
mov edx, eax
xor edx, 0xfffffffe
mov ecx, eax
or ecx, 1
and ecx, edx
mov esi, ecx
and esi, 2
mov edx, ecx
or ecx, 2
imul ecx, esi
xor esi, 2
and edx, 0x3d
imul edx, esi
xor eax, 1
add eax, ecx
add eax, edx
cmp eax, 0x38
jb 0x41c490
movzx ecx, word [ebp]
mov eax, dword [esp + 0x40]
test cx, cx
je 0x41c512
add ebp, 2
mov eax, dword [esp + 0x40]
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov word [eax], cx
add eax, 2
movzx ecx, word [ebp]
add ebp, 2
test cx, cx
jne 0x41c500
mov word [eax], 0
movzx ecx, word [esp + 8]
test cx, cx
je 0x41c541
lea edx, [esp + 0xa]
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov word [eax], cx
add eax, 2
movzx ecx, word [edx]
add edx, 2
test cx, cx
jne 0x41c530
mov word [eax], 0
movzx ecx, word [edi]
test cx, cx
je 0x41c571
add edi, 2
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov word [eax], cx
add eax, 2
movzx ecx, word [edi]
add edi, 2
test cx, cx
jne 0x41c560
mov word [eax], 0
mov esi, dword [ebx]
mov eax, 0xfffffffe
nop
nop
nop
cmp word [esi + eax + 2], 0
lea eax, [eax + 2]
jne 0x41c580
sar eax, 1
mov ecx, dword [esp + 0x68]
mov ebp, dword [ecx]
mov ecx, 0xfffffffe
nop
nop
nop
nop
nop
nop
nop
nop
cmp word [ebp + ecx + 2], 0
lea ecx, [ecx + 2]
jne 0x41c5a0
inc eax
sar ecx, 1
mov edx, ecx
and edx, eax
add edx, edx
mov edi, dword [esp + 0x6c]
mov edi, dword [edi]
mov ebx, 0xfffffffe
nop
cmp word [edi + ebx + 2], 0
lea ebx, [ebx + 2]
jne 0x41c5c0
xor ecx, eax
sar ebx, 1
add ecx, edx
lea eax, [ebx + ecx]
add eax, 0x12
test eax, eax
jns 0x41c5e2
mov eax, 0xffffffff
jmp 0x41c5eb
add ecx, ebx
lea eax, [ecx*2 + 0x24]
push eax
call fcn.004084d0
add esp, 4
mov ebx, eax
movzx eax, word [esi]
mov dword [esp + 4], ebx
test ax, ax
je 0x41c621
add esi, 2
mov ebx, dword [esp + 4]
nop
nop
nop
nop
nop
nop
nop
mov word [ebx], ax
add ebx, 2
movzx eax, word [esi]
add esi, 2
test ax, ax
jne 0x41c610
mov word [ebx], 0x2f
mov dword [esp + 8], 0x4b8f4967
mov dword [esp + 0xc], 0x4fba4db4
mov dword [esp + 0x10], 0x53bc51b5
mov dword [esp + 0x14], 0x57bf55a7
mov dword [esp + 0x18], 0x5bb459b7
mov dword [esp + 0x1c], 0x5f715daf
mov dword [esp + 0x20], 0x6160
xor eax, eax
movzx edx, byte [esp + eax + 8]
lea esi, [eax + 0x19edfa08]
mov ecx, 0xf7
sub ecx, eax
xor ecx, esi
and ecx, edx
xor ecx, esi
mov edx, ecx
and edx, 0x3f
add edx, edx
xor ecx, 0x40
sub edx, ecx
mov byte [esp + eax + 8], dl
mov ecx, eax
and ecx, 1
xor eax, 1
lea eax, [eax + ecx*2]
cmp eax, 0x1c
jb 0x41c660
add ebx, 2
movzx eax, word [ebp]
test ax, ax
je 0x41c6c4
add ebp, 2
mov esi, dword [esp + 0x6c]
nop
nop
nop
nop
nop
mov word [ebx], ax
add ebx, 2
movzx eax, word [ebp]
add ebp, 2
test ax, ax
jne 0x41c6b0
jmp 0x41c6c8
mov esi, dword [esp + 0x6c]
mov word [ebx], 0
movzx eax, word [esp + 8]
test ax, ax
je 0x41c6f3
lea ecx, [esp + 0xa]
mov ebp, dword [esp + 0x60]
nop
mov word [ebx], ax
add ebx, 2
movzx eax, word [ecx]
add ecx, 2
test ax, ax
jne 0x41c6e0
jmp 0x41c6f7
mov ebp, dword [esp + 0x60]
mov word [ebx], 0
movzx eax, word [edi]
test ax, ax
je 0x41c721
add edi, 2
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov word [ebx], ax
add ebx, 2
movzx eax, word [edi]
add edi, 2
test ax, ax
jne 0x41c710
mov word [ebx], 0
mov dword [esp + 8], 0xdedddc81
mov byte [esp + 0xc], 0
mov eax, 0xa915a9c3
nop
nop
nop
nop
nop
nop
nop
nop
movzx ecx, byte [esp + eax + 0x56ea5645]
xor ecx, eax
add ecx, 0xb752b1e7
mov edx, ecx
and edx, 1
xor ecx, 1
lea ecx, [ecx + edx*2]
mov byte [esp + eax + 0x56ea5645], cl
inc eax
cmp eax, 0xa915a9c8
jne 0x41c740
lea eax, [esp + 8]
push 0
push 0
push 0xc00000
push eax
mov edi, dword [esp + 0x50]
push edi
push dword [esp + 0x18]
push ebp
call fcn.004203b0
add esp, 0x1c
mov byte [esp + 3], al
jmp dword [0x444170]