Function at 0x41bc70
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff8
sub esp, 0x110
movaps xmm0, xmmword [0x43af60]
movups xmmword [esp + 0x28], xmm0
movsd xmm0, qword [0x43af70]
movsd qword [esp + 0x38], xmm0
mov dword [esp + 0x40], 0x432741ed
lea eax, [esp + 0x44]
mov word [esp + 0x44], 0x4542
mov dword [esp + 0x4a], 0
mov dword [esp + 0x46], 0
mov word [esp + 0x4e], 0
mov dword [esp + 0x8c], 0
mov ecx, dword [esp + 0x8c]
cmp ecx, 0x27
ja 0x41bd38
nop word [eax + eax]
mov ecx, dword [esp + 0x8c]
mov edx, dword [esp + 0x8c]
movzx edx, byte [esp + edx + 0x28]
add ecx, 0x49ab4dcf
mov esi, ecx
and esi, edx
mov edi, ecx
xor edi, edx
not edx
or ecx, edx
add edx, edi
add ecx, esi
sub edx, ecx
lea ecx, [edx + esi*2]
mov edx, ecx
or edx, 0x56
and ecx, 0x56
add ecx, edx
inc cl
mov edx, dword [esp + 0x8c]
mov byte [esp + edx + 0x28], cl
inc dword [esp + 0x8c]
mov ecx, dword [esp + 0x8c]
cmp ecx, 0x28
jb 0x41bce0
lea edi, [esp + 0xee]
lea edx, [esp + 0x28]
mov ecx, 7
mov esi, edi
xchg esi, edx
rep movsd dword es:[edi], dword [esi]
xchg esi, edx
lea edi, [esp + 0x10a]
mov ecx, 1
xchg esi, eax
rep movsw word es:[edi], word [esi]
xchg esi, eax
lea edi, [esp + 0xc]
push edi
push 0
push 0
push 0xe
push esi
push 0
call dword [0x446390]
mov esi, dword [esp + 0xc]
lea eax, [esi + esi]
test esi, esi
mov ebx, 0xffffffff
cmovs eax, ebx
push eax
call fcn.004088f0
add esp, 4
push edi
push esi
mov dword [esp + 0x10], eax
push eax
push 0xe
lea eax, [esp + 0xfe]
push eax
push 0
call dword [0x446390]
movaps xmm0, xmmword [0x43af80]
movups xmmword [esp + 0x28], xmm0
mov dword [esp + 0x38], 0xa3a0a11b
lea eax, [esp + 0x3c]
mov dword [esp + 0x40], 0
mov dword [esp + 0x3c], 0
mov dword [esp + 0x8c], 0
mov ecx, dword [esp + 0x8c]
cmp ecx, 0x1b
ja 0x41be54
nop word [eax + eax]
mov ecx, dword [esp + 0x8c]
mov edx, dword [esp + 0x8c]
movzx edx, byte [esp + edx + 0x28]
lea esi, [ecx + 0x73]
and esi, edx
add ecx, edx
add esi, esi
sub ecx, esi
add ecx, 0x61924673
mov edx, ecx
xor edx, 0xda
and ecx, 0x5a
lea ecx, [edx + ecx*2]
inc cl
mov edx, dword [esp + 0x8c]
mov byte [esp + edx + 0x28], cl
mov ecx, dword [esp + 0x8c]
mov edx, ecx
and edx, 1
xor ecx, 1
lea ecx, [ecx + edx*2]
mov dword [esp + 0x8c], ecx
mov ecx, dword [esp + 0x8c]
cmp ecx, 0x1c
jb 0x41bdf0
lea edi, [esp + 0xda]
lea edx, [esp + 0x28]
mov ecx, 5
xchg esi, edx
rep movsd dword es:[edi], dword [esi]
xchg esi, edx
lea edi, [esp + 0xee]
xor ecx, ecx
xchg esi, eax
rep movsw word es:[edi], word [esi]
xchg esi, eax
mov eax, dword [esp + 0xc]
mov ecx, eax
add ecx, 9
lea eax, [eax + eax + 0x12]
cmovns ebx, eax
push ebx
call fcn.004088f0
add esp, 4
mov esi, eax
mov eax, dword [esp + 8]
movzx ecx, word [eax]
mov eax, esi
test cx, cx
je 0x41bec1
mov eax, dword [esp + 8]
lea edx, [eax + 2]
mov eax, esi
nop word [eax + eax]
mov word [eax], cx
add eax, 2
movzx ecx, word [edx]
add edx, 2
test cx, cx
jne 0x41beb0
mov word [eax], 0
movzx ecx, word [esp + 0xda]
test cx, cx
je 0x41bef1
lea edx, [esp + 0xdc]
nop word [eax + eax]
mov word [eax], cx
add eax, 2
movzx ecx, word [edx]
add edx, 2
test cx, cx
jne 0x41bee0
mov edi, dword [ebp + 8]
mov word [eax], 0
lea eax, [esp + 0x88]
push eax
push esi
call fcn.004379d0
add esp, 8
not eax
shr eax, 0x1f
mov eax, dword [eax*4 + 0x4407c8]
mov ecx, 0x1592e09e
xor ecx, dword [0x4407d0]
add eax, ecx
inc eax
jmp eax
xor eax, eax
xor ecx, ecx
test ecx, ecx
sete al
mov eax, dword [eax*4 + 0x445ddc]
add eax, dword [esp + 8]
jmp eax
test edi, edi
je 0x437420
dec edi
movzx ecx, byte [ebx]
mov dh, 0xb
mov dh, 0xb
inc ebx
movzx edx, byte [eax]
inc eax
cmp cl, dl
je 0x437470
xor eax, eax
sub ecx, edx
sete al
mov eax, dword [eax*4 + 0x445ddc]
add eax, dword [esp + 8]
jmp eax
pop ds
test byte [eax], al
add byte [eax], al
add byte [eax], al
mov eax, dword [0x445df4]
mov ecx, 0x5331bad5
xor ecx, dword [0x445dfc]
add eax, ecx
inc eax
jmp eax