Function at 0x41c9c0
Capabilities:
Encode data using xor

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0x54
mov ecx, dword [esp + 0x70]
mov eax, dword [esp + 0x6c]
mov esi, dword [eax + 4]
mov edx, 0xfffffffe
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov eax, edx
cmp word [esi + edx + 2], 0
lea edx, [edx + 2]
jne 0x41c9e0
mov dword [esp], esi
mov edi, dword [ecx + 4]
mov esi, 0xfffffffe
nop
nop
nop
nop
nop
nop
nop
nop
mov eax, esi
cmp word [edi + esi + 2], 0
lea esi, [esi + 2]
jne 0x41ca00
mov ecx, edx
sar ecx, 1
sar esi, 1
lea eax, [ecx + esi]
add eax, 0x1b
test eax, eax
mov dword [esp + 0x50], edx
mov dword [esp + 0x4c], ecx
mov dword [esp + 0x48], esi
mov dword [esp + 4], edi
jns 0x41ca34
mov eax, 0xffffffff
jmp 0x41ca3e
lea eax, [ecx + esi]
lea eax, [eax*2 + 0x36]
push eax
call fcn.0040c8c0
add esp, 4
mov dword [esp + 8], eax
mov dword [esp + 0xc], 0xb946bb68
mov dword [esp + 0x10], 0xbd5bbf29
mov dword [esp + 0x14], 0xb12eb35b
mov dword [esp + 0x18], 0xb54db790
mov dword [esp + 0x1c], 0xa93eab3c
mov dword [esp + 0x20], 0xad3caf33
mov dword [esp + 0x24], 0xa13da339
mov dword [esp + 0x28], 0xa534a731
mov dword [esp + 0x2c], 0x59af5b84
mov dword [esp + 0x30], 0x5dca5fc3
mov dword [esp + 0x34], 0x51cd53c8
mov dword [esp + 0x38], 0x55cf57c2
mov dword [esp + 0x3c], 0x49a64bc1
mov dword [esp + 0x40], 0x4f48
mov byte [esp + 0x44], 0
mov edi, 0x5e
mov eax, 0xb108aea1
nop
nop
nop
nop
nop
nop
movzx ebp, byte [esp + edi - 0x52]
lea esi, [edi + 1]
mov edx, esi
and edx, ebp
lea ebx, [eax + edx*2]
add edx, edx
xor ebx, ebp
mov ecx, edi
sub ecx, edx
and ecx, ebp
add ecx, ecx
sub ecx, ebx
mov edx, ecx
xor edx, 0xdc
and ecx, 0x23
add ecx, ecx
sub ecx, edx
inc cl
mov byte [esp + edi - 0x52], cl
dec eax
mov edi, esi
cmp esi, 0x97
jne 0x41cad0
mov edi, dword [esp]
movzx ecx, word [edi]
mov edx, dword [esp + 8]
mov eax, edx
test cx, cx
mov esi, dword [esp + 4]
je 0x41cb41
add edi, 2
mov eax, edx
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 0x41cb30
mov word [eax], 0
movzx ecx, word [esp + 0xc]
test cx, cx
je 0x41cb71
lea edx, [esp + 0xe]
nop
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 0x41cb60
mov word [eax], 0
movzx ecx, word [esi]
test cx, cx
je 0x41cba1
add esi, 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 [esi]
add esi, 2
test cx, cx
jne 0x41cb90
mov word [eax], 0
mov eax, dword [esp + 0x6c]
mov edi, dword [eax]
mov eax, 0xfffffffe
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
cmp word [edi + eax + 2], 0
lea eax, [eax + 2]
jne 0x41cbc0
mov ecx, dword [esp + 0x6c]
mov ebp, dword [ecx + 8]
mov ecx, 0xfffffffe
nop
nop
nop
nop
nop
nop
nop
nop
nop
cmp word [ebp + ecx + 2], 0
lea ecx, [ecx + 2]
jne 0x41cbe0
sar eax, 1
sar ecx, 1
lea esi, [eax + ecx]
lea edx, [eax + ecx]
inc edx
lea eax, [esi*2 + 2]
xor edx, 0xc
mov ecx, dword [esp + 0x70]
mov esi, dword [ecx]
mov ecx, 0xfffffffe
nop
nop
nop
nop
nop
cmp word [esi + ecx + 2], 0
lea ecx, [ecx + 2]
jne 0x41cc10
and eax, 0x18
add eax, edx
sar ecx, 1
add ecx, eax
mov eax, ecx
and eax, 6
xor ecx, 6
lea eax, [ecx + eax*2]
test eax, eax
jns 0x41cc3a
mov eax, 0xffffffff
jmp 0x41cc3c
add eax, eax
mov dword [esp], esi
push eax
call fcn.0040c8c0
add esp, 4
mov ebx, eax
movzx eax, word [edi]
mov dword [esp + 4], ebx
test ax, ax
je 0x41cc71
add edi, 2
mov ebx, dword [esp + 4]
nop
nop
nop
mov word [ebx], ax
add ebx, 2
movzx eax, word [edi]
add edi, 2
test ax, ax
jne 0x41cc60
mov word [ebx], 0x2f
mov dword [esp + 0xc], 0x29612b75
mov dword [esp + 0x10], 0x2dba2fb0
mov dword [esp + 0x14], 0x51c05347
mov dword [esp + 0x18], 0x553957c5
mov dword [esp + 0x1c], 0x59c85bc5
mov dword [esp + 0x20], 0x5d0f5fcd
mov word [esp + 0x24], 0x435c
mov dword [esp + 0x26], 0
mov byte [esp + 0x2a], 0
xor eax, eax
nop
nop
nop
nop
movzx ecx, byte [esp + eax + 0xc]
lea edx, [eax + 0x594f8eb7]
mov edi, ecx
not edi
and edx, edi
mov esi, 0x48
sub esi, eax
or esi, edi
add ecx, esi
inc ecx
or ecx, edx
mov edx, ecx
and edx, 0x6c
xor ecx, 0x6c
lea ecx, [ecx + edx*2]
inc cl
mov byte [esp + eax + 0xc], cl
mov ecx, eax
and ecx, 1
xor eax, 1
lea eax, [eax + ecx*2]
cmp eax, 0x1f
jb 0x41ccc0
add ebx, 2
movzx eax, word [ebp]
test ax, ax
je 0x41cd34
add ebp, 2
mov edx, dword [esp]
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov word [ebx], ax
add ebx, 2
movzx eax, word [ebp]
add ebp, 2
test ax, ax
jne 0x41cd20
jmp 0x41cd37
mov edx, dword [esp]
mov word [ebx], 0
movzx eax, word [esp + 0xc]
test ax, ax
je 0x41cd61
lea ecx, [esp + 0xe]
nop
nop
nop
nop
nop
nop
mov word [ebx], ax
add ebx, 2
movzx eax, word [ecx]
add ecx, 2
test ax, ax
jne 0x41cd50
mov word [ebx], 0
movzx eax, word [edx]
test ax, ax
je 0x41cd91
add edx, 2
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov word [ebx], ax
add ebx, 2
movzx eax, word [edx]
add edx, 2
test ax, ax
jne 0x41cd80
mov word [ebx], 0
mov dword [esp + 0xc], 0x3736390e
mov dword [esp + 0x10], 0
xor eax, eax
nop
nop
nop
nop
nop
nop
nop
nop
movzx ecx, byte [esp + eax + 0xc]
mov edx, eax
and edx, 2
xor edx, 0x615c48ca
mov esi, eax
and esi, 5
sub esi, edx
mov edx, esi
and edx, ecx
mov ebp, edx
and ebp, 2
mov edi, edx
or edx, 2
imul edx, ebp
xor ebp, 2
and edi, 0xfffffffd
imul edi, ebp
sub edx, esi
add edx, edi
mov esi, ecx
not esi
and esi, edx
not edx
and edx, ecx
sub edx, esi
add dl, 0xf2
mov byte [esp + eax + 0xc], dl
inc eax
cmp eax, 8
jne 0x41cdb0
lea eax, [esp + 0xc]
push 0
push 0
push 0xc00000
push eax
mov esi, dword [esp + 0x18]
push esi
push dword [esp + 0x18]
push dword [esp + 0x80]
call fcn.00420380
add esp, 0x1c
mov byte [esp], al
jmp dword [0x447e30]