Function at 0x41aec0
Capabilities:
Encode data using xor

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0x2c
mov ebx, dword [esp + 0x40]
mov esi, 0xffffffff
mov eax, 0xfffffffe
nop word cs:[eax + eax]
add eax, 2
cmp byte [ebx + esi + 1], 0
lea esi, [esi + 1]
jne 0x41aee0
mov ecx, esi
and ecx, 3
mov edi, esi
or edi, 3
imul edi, ecx
xor ecx, 3
mov edx, esi
and edx, 0xfffffffc
imul edx, ecx
add edi, edx
shr edi, 2
mov dword [esp], esi
movzx ecx, byte [ebx + esi - 1]
cmp ecx, 0x3d
je 0x41af1c
cmp ecx, 0x2e
jne 0x41af1d
dec edi
mov ecx, dword [esp]
xor ecx, 0xfffffffd
and eax, 0xfffffffa
add eax, ecx
cmp byte [ebx + eax + 1], 0x3d
je 0x41af43
mov ecx, dword [esp]
mov eax, ecx
or eax, 0xfffffffd
and ecx, 0xfffffffd
add ecx, eax
cmp byte [ebx + ecx + 1], 0x2e
jne 0x41af44
dec edi
mov dword [esp + 8], edi
mov edx, 0
cmp dword [esp], 0
je 0x41b037
xor esi, esi
mov ebp, 2
jmp 0x41af92
shl bl, 6
add al, bl
mov ecx, esi
and ecx, 1
mov edx, dword [esp + 4]
xor edx, 1
lea edx, [edx + ecx*2]
mov ecx, dword [esp + 0x44]
mov byte [ecx + esi + 2], al
nop dword [eax]
lea eax, [ebp + 4]
add ebp, 2
mov esi, edx
cmp ebp, edi
mov ebp, eax
jae 0x41b037
mov edi, dword [esp + 0x40]
movzx eax, byte [edi + ebp - 2]
push eax
call fcn.00420670
add esp, 4
mov ebx, eax
movzx eax, byte [edi + ebp - 1]
mov edi, dword [esp]
push eax
call fcn.00420670
add esp, 4
mov bh, al
shl bl, 2
shr al, 4
and al, 3
or al, bl
lea edx, [esi + 1]
mov ecx, dword [esp + 0x44]
mov byte [ecx + esi], al
cmp ebp, edi
jae 0x41af80
mov eax, dword [esp + 0x40]
movzx eax, byte [eax + ebp]
push eax
mov dword [esp + 8], edx
call fcn.00420670
mov edx, dword [esp + 8]
add esp, 4
cmp al, 0x40
je 0x41af80
mov bl, al
shl bh, 4
shr al, 2
and al, 0xf
or al, bh
lea edx, [esi + 2]
mov ecx, dword [esp + 0x44]
mov byte [ecx + esi + 1], al
lea eax, [ebp + 1]
cmp eax, edi
jae 0x41af80
mov dword [esp + 4], edx
mov eax, dword [esp + 0x40]
movzx eax, byte [eax + ebp + 1]
push eax
call fcn.00420670
add esp, 4
cmp al, 0x40
jne 0x41af60
mov edx, dword [esp + 4]
jmp 0x41af80
mov ebx, dword [esp + 8]
cmp edx, ebx
mov eax, 0
jne 0x41b14f
lea edi, [esp + 0xc]
mov esi, dword [esp + 0x44]
mov eax, esi
mov ecx, 8
xchg esi, eax
rep movsd dword es:[edi], dword [esi]
xchg esi, eax
mov eax, ebx
add eax, 0xffffffe0
je 0x41b14b
lea ecx, [ebx - 0x41]
xor edi, edi
cmp ecx, 0xffffffe7
jb 0x41b0f3
xor edi, edi
cmp eax, 0x20
jb 0x41b0bd
mov edi, eax
and edi, 0xffffffe0
movups xmm0, xmmword [esp + 0xc]
movups xmm1, xmmword [esp + 0x1c]
xor ecx, ecx
nop dword [eax]
movups xmm2, xmmword [esi + ecx + 0x20]
xorps xmm2, xmm0
movups xmm3, xmmword [esi + ecx + 0x30]
xorps xmm3, xmm1
movups xmmword [esi + ecx], xmm2
movups xmmword [esi + ecx + 0x10], xmm3
add ecx, 0x20
cmp edi, ecx
jne 0x41b090
cmp eax, edi
je 0x41b14b
test bl, 0x18
je 0x41b0f3
mov ecx, edi
mov edi, eax
and edi, 0xfffffff8
nop word cs:[eax + eax]
movsd xmm0, qword [esi + ecx + 0x20]
mov edx, ecx
and edx, 0x18
movsd xmm1, qword [esp + edx + 0xc]
xorps xmm1, xmm0
movlps qword [esi + ecx], xmm1
add ecx, 8
cmp edi, ecx
jne 0x41b0d0
cmp eax, edi
je 0x41b14b
lea edx, [ebx - 0x21]
mov ecx, edi
test bl, 1
je 0x41b113
mov ecx, edi
and ecx, 0x18
movzx ecx, byte [esp + ecx + 0xc]
xor cl, byte [esi + edi + 0x20]
mov byte [esi + edi], cl
mov ecx, edi
or ecx, 1
cmp edx, edi
je 0x41b14b
nop word [eax + eax]
mov edx, ecx
and edx, 0x1f
movzx edx, byte [esp + edx + 0xc]
xor dl, byte [esi + ecx + 0x20]
mov byte [esi + ecx], dl
lea edx, [ecx + 1]
and edx, 0x1f
movzx edx, byte [esp + edx + 0xc]
xor dl, byte [esi + ecx + 0x21]
mov byte [esi + ecx + 1], dl
add ecx, 2
cmp eax, ecx
jne 0x41b120
mov byte [esi + eax], 0
add esp, 0x2c
pop esi
pop edi
pop ebx
pop ebp
ret