Function at 0x41b910
Capabilities:
Encode data using xor

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0x2c
mov edi, dword [esp + 0x40]
mov esi, 0xffffffff
cmp byte [edi + esi + 1], 0
lea esi, [esi + 1]
jne 0x41b920
mov eax, esi
and eax, 3
mov edx, esi
or edx, 3
imul edx, eax
xor eax, 3
mov dword [esp], esi
mov ecx, dword [esp]
and ecx, 0xfffffffc
imul ecx, eax
add edx, ecx
mov ecx, dword [esp]
shr edx, 2
movzx eax, byte [edi + ecx - 1]
cmp eax, 0x3d
je 0x41b95d
cmp eax, 0x2e
jne 0x41b95e
dec edx
movzx eax, byte [edi + ecx - 2]
cmp eax, 0x3d
je 0x41b96d
cmp eax, 0x2e
jne 0x41b96e
dec edx
mov dword [esp + 8], edx
mov edx, 0
test ecx, ecx
je 0x41ba76
xor esi, esi
mov ebp, 2
jmp 0x41b9a2
lea eax, [ebp + 4]
add ebp, 2
mov esi, edx
cmp ebp, ecx
mov ebp, eax
jae 0x41ba76
mov edi, dword [esp + 0x40]
movzx eax, byte [edi + ebp - 2]
push eax
call fcn.0041ea70
add esp, 4
mov ebx, eax
movzx eax, byte [edi + ebp - 1]
push eax
call fcn.0041ea70
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
mov ecx, dword [esp]
cmp ebp, ecx
jae 0x41b990
mov eax, dword [esp + 0x40]
movzx eax, byte [eax + ebp]
push eax
mov dword [esp + 8], edx
call fcn.0041ea70
mov ecx, dword [esp + 4]
mov edx, dword [esp + 8]
add esp, 4
cmp al, 0x40
je 0x41b990
mov bl, al
shl bh, 4
xor al, 0xc0
mov ecx, ebx
or cl, 0x3c
and cl, al
shr cl, 2
add cl, bh
lea edx, [esi + 2]
mov eax, dword [esp + 0x44]
mov byte [eax + esi + 1], cl
mov ecx, dword [esp]
lea eax, [ebp + 1]
cmp eax, ecx
jae 0x41b990
mov eax, dword [esp + 0x40]
movzx eax, byte [eax + ebp + 1]
push eax
mov dword [esp + 8], edx
call fcn.0041ea70
mov ecx, dword [esp + 4]
mov edx, dword [esp + 8]
add esp, 4
cmp al, 0x40
je 0x41b990
shl bl, 6
mov ecx, eax
xor cl, bl
and bl, al
add bl, bl
add bl, cl
mov ecx, dword [esp]
mov eax, dword [esp + 0x44]
mov byte [eax + esi + 2], bl
add esi, 3
mov edx, esi
jmp 0x41b990
mov ebx, dword [esp + 8]
cmp edx, ebx
mov eax, 0
jne 0x41bb8f
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 0x41bb8b
lea ecx, [ebx - 0x41]
xor edi, edi
cmp ecx, 0xffffffe7
jb 0x41bb33
xor edi, edi
cmp eax, 0x20
jb 0x41bafd
mov edi, eax
and edi, 0xffffffe0
movups xmm0, xmmword [esp + 0xc]
movups xmm1, xmmword [esp + 0x1c]
xor ecx, ecx
nop dword [eax + 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 0x41bad0
cmp eax, edi
je 0x41bb8b
test bl, 0x18
je 0x41bb33
mov ecx, edi
mov edi, eax
and edi, 0xfffffff8
nop word cs:[eax + eax]
mov edx, ecx
and edx, 0x18
movsd xmm0, qword [esi + ecx + 0x20]
movsd xmm1, qword [esp + edx + 0xc]
xorps xmm1, xmm0
movlps qword [esi + ecx], xmm1
add ecx, 8
cmp edi, ecx
jne 0x41bb10
cmp eax, edi
je 0x41bb8b
lea edx, [ebx - 0x21]
mov ecx, edi
test bl, 1
je 0x41bb53
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 0x41bb8b
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 0x41bb60
mov byte [esi + eax], 0
add esp, 0x2c
pop esi
pop edi
pop ebx
pop ebp
ret