Function at 0x41c100
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 ebx, dword [eax + 4]
mov edx, 0xfffffffe
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov eax, edx
cmp word [ebx + edx + 2], 0
lea edx, [edx + 2]
jne 0x41c120
mov edi, dword [ecx + 4]
mov eax, 0xfffffffe
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
cmp word [edi + eax + 2], 0
lea eax, [eax + 2]
jne 0x41c140
sar edx, 1
sar eax, 1
lea ecx, [edx + eax]
mov dword [esp + 0x4c], eax
add eax, edx
add eax, 0x1b
test eax, eax
mov dword [esp + 0x50], edx
mov dword [esp + 0x48], ecx
jns 0x41c16e
mov eax, 0xffffffff
jmp 0x41c175
lea eax, [ecx*2 + 0x36]
push eax
call fcn.0040cc80
add esp, 4
mov dword [esp + 0x44], eax
mov dword [esp + 8], 0x438e41bc
mov dword [esp + 0xc], 0x47a545ab
mov dword [esp + 0x10], 0x4ba649a9
mov dword [esp + 0x14], 0x4f8b4d6c
mov dword [esp + 0x18], 0x73e671e8
mov dword [esp + 0x1c], 0x77987591
mov dword [esp + 0x20], 0x7b9379eb
mov dword [esp + 0x24], 0x7f907d93
mov dword [esp + 0x28], 0x63916140
mov dword [esp + 0x2c], 0x67f26581
mov dword [esp + 0x30], 0x6b8369fc
mov dword [esp + 0x34], 0x6f896d82
mov dword [esp + 0x38], 0x13ee1183
mov word [esp + 0x3c], 0x1514
mov dword [esp + 0x3e], 0
mov byte [esp + 0x42], 0
mov eax, 0x10
mov esi, 0xef
nop
nop
nop
nop
nop
nop
nop
nop
movzx edx, byte [esp + eax - 8]
lea ecx, [edx + edx]
not ecx
add ecx, edx
and ecx, 0x46
and edx, 0xffffffb9
or edx, ecx
mov ebp, eax
and ebp, 0x46
mov ecx, esi
and ecx, 0xb9
or ecx, ebp
xor ecx, edx
mov dl, 0xaf
sub dl, cl
mov byte [esp + eax - 8], dl
inc eax
dec esi
cmp eax, 0x4b
jne 0x41c210
movzx ecx, word [ebx]
mov edx, dword [esp + 0x44]
mov eax, edx
test cx, cx
je 0x41c271
add ebx, 2
mov eax, edx
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov word [eax], cx
add eax, 2
movzx ecx, word [ebx]
add ebx, 2
test cx, cx
jne 0x41c260
mov word [eax], 0
movzx ecx, word [esp + 8]
test cx, cx
je 0x41c2a1
lea edx, [esp + 0xa]
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 0x41c290
mov word [eax], 0
movzx ecx, word [edi]
test cx, cx
je 0x41c2d1
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 0x41c2c0
mov word [eax], 0
mov eax, dword [esp + 0x6c]
mov esi, dword [eax]
mov eax, 0xfffffffe
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
cmp word [esi + eax + 2], 0
lea eax, [eax + 2]
jne 0x41c2f0
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 0x41c310
mov edx, dword [esp + 0x70]
mov edi, dword [edx]
mov edx, 0xfffffffe
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
cmp word [edi + edx + 2], 0
lea edx, [edx + 2]
jne 0x41c330
sar eax, 1
sar ecx, 1
sar edx, 1
add ecx, eax
lea eax, [edx + ecx]
add eax, 0x13
test eax, eax
jns 0x41c354
mov eax, 0xffffffff
jmp 0x41c35d
add ecx, edx
lea eax, [ecx*2 + 0x26]
mov dword [esp], edi
push eax
call fcn.0040cc80
add esp, 4
mov ebx, eax
movzx eax, word [esi]
mov dword [esp + 4], ebx
test ax, ax
je 0x41c391
add esi, 2
mov ebx, dword [esp + 4]
nop
nop
mov word [ebx], ax
add ebx, 2
movzx eax, word [esi]
add esi, 2
test ax, ax
jne 0x41c380
mov word [ebx], 0x2f
mov dword [esp + 8], 0x11d91fcd
mov dword [esp + 0xc], 0x15861398
mov dword [esp + 0x10], 0x98817f3
mov dword [esp + 0x14], 0xd910b9d
mov dword [esp + 0x18], 0x1900f9d
mov dword [esp + 0x1c], 0x5d30395
mov word [esp + 0x20], 0x704
mov dword [esp + 0x22], 0
xor eax, eax
xor edi, edi
nop
nop
nop
nop
nop
nop
nop
movzx edx, byte [esp + edi + 8]
mov esi, eax
and esi, 0xa
mov ecx, edi
xor ecx, 0xf9a52045
add ecx, esi
xor ecx, edx
mov esi, ecx
mov edx, ecx
xor edx, 0xa6
add edx, ecx
and ecx, 0xa6
and esi, 0x59
add edx, ecx
sub edx, esi
inc dl
mov byte [esp + edi + 8], dl
inc edi
add eax, 2
cmp edi, 0x1e
jne 0x41c3e0
add ebx, 2
movzx eax, word [ebp]
test ax, ax
mov edx, dword [esp]
je 0x41c442
add ebp, 2
mov word [ebx], ax
add ebx, 2
movzx eax, word [ebp]
add ebp, 2
test ax, ax
jne 0x41c430
mov word [ebx], 0
movzx eax, word [esp + 8]
test ax, ax
je 0x41c471
lea ecx, [esp + 0xa]
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov word [ebx], ax
add ebx, 2
movzx eax, word [ecx]
add ecx, 2
test ax, ax
jne 0x41c460
mov word [ebx], 0
movzx eax, word [edx]
test ax, ax
je 0x41c4a1
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 0x41c490
mov word [ebx], 0
mov dword [esp + 8], 0x111e1fc6
mov dword [esp + 0xc], 0
xor eax, eax
xor ecx, ecx
nop
nop
nop
nop
nop
nop
mov esi, eax
and esi, 0xa
mov edx, ecx
xor edx, 0xc5
add edx, esi
xor dl, byte [esp + ecx + 8]
add dl, 0x27
mov byte [esp + ecx + 8], dl
inc ecx
add eax, 2
cmp ecx, 8
jne 0x41c4c0
lea eax, [esp + 8]
push 0
push 0
push 0xc00000
push eax
mov esi, dword [esp + 0x54]
push esi
push dword [esp + 0x18]
push dword [esp + 0x80]
call fcn.0041f9c0
add esp, 0x1c
mov byte [esp], al
jmp dword [0x445ce8]