Function at 0x41bcc0
Capabilities:
Encode data using xor

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0x2c
mov edx, dword [esp + 0x40]
lea eax, [edx - 1]
mov ecx, edx
inc eax
cmp byte [ecx], 0
lea ecx, [ecx + 1]
jne 0x41bcd0
mov ebp, edx
not ebp
and ebp, eax
add ebp, ebp
xor eax, edx
mov ecx, ebp
sub ecx, eax
mov edx, ecx
not edx
mov esi, edx
and esi, 3
mov edi, ecx
and edi, 0xfffffffc
imul edi, esi
mov esi, ecx
and esi, 3
mov ebx, ecx
or ebx, 3
imul ebx, esi
add ebx, edi
mov edi, dword [esp + 0x40]
shr ebx, 2
mov dword [esp + 4], ecx
movzx esi, byte [ecx + edi - 1]
cmp esi, 0x3d
je 0x41bd21
cmp esi, 0x2e
jne 0x41bd28
mov esi, ebx
not esi
lea ebx, [esi + ebx*2]
mov ecx, dword [esp + 4]
cmp byte [ecx + edi - 2], 0x3d
je 0x41bd45
mov esi, dword [esp + 4]
and esi, 0xfffffffd
and edx, 2
sub esi, edx
cmp byte [edi + esi], 0x2e
jne 0x41bd46
dec ebx
mov dword [esp + 8], ebx
cmp ebp, eax
mov ebp, 0
mov edi, dword [esp + 4]
jne 0x41be99
mov eax, dword [esp + 8]
cmp ebp, eax
mov ebp, eax
mov eax, 0
jne 0x41be91
mov eax, ebp
xor eax, 0xffffffdf
add ebp, ebp
and ebp, 0xffffffbe
add ebp, eax
lea edi, [esp + 0xc]
mov ebx, dword [esp + 0x44]
mov edx, ebx
mov ecx, 8
xchg esi, edx
rep movsd dword es:[edi], dword [esi]
xchg esi, edx
mov ecx, ebp
inc ecx
je 0x41be8b
xor edi, edi
mov dword [esp], ecx
cmp ecx, 8
jb 0x41be36
cmp ebp, 0x1f
mov ecx, dword [esp]
ja 0x41be36
xor edi, edi
cmp ecx, 0x20
jb 0x41be00
mov edi, ecx
and edi, 0xffffffe0
movups xmm0, xmmword [esp + 0xc]
movups xmm1, xmmword [esp + 0x1c]
xor edx, edx
nop word [eax + eax]
movups xmm2, xmmword [ebx + edx + 0x20]
xorps xmm2, xmm0
movups xmm3, xmmword [ebx + edx + 0x30]
xorps xmm3, xmm1
movups xmmword [ebx + edx], xmm2
movups xmmword [ebx + edx + 0x10], xmm3
add edx, 0x20
cmp edi, edx
jne 0x41bdd0
mov ecx, dword [esp]
cmp ecx, edi
je 0x41be8b
test cl, 0x18
je 0x41be36
mov edx, edi
mov edi, ecx
and edi, 0xfffffff8
nop word [eax + eax]
movsd xmm0, qword [ebx + edx + 0x20]
mov esi, edx
and esi, 0x18
movsd xmm1, qword [esp + esi + 0xc]
xorps xmm1, xmm0
movlps qword [ebx + edx], xmm1
add edx, 8
cmp edi, edx
jne 0x41be10
mov ecx, dword [esp]
cmp ecx, edi
je 0x41be8b
mov edx, edi
test al, 1
jne 0x41be52
mov eax, edi
and eax, 0x18
movzx eax, byte [esp + eax + 0xc]
xor al, byte [ebx + edi + 0x20]
mov byte [ebx + edi], al
mov edx, edi
or edx, 1
cmp ebp, edi
mov ecx, dword [esp]
je 0x41be8b
nop dword [eax]
mov eax, edx
and eax, 0x1f
movzx eax, byte [esp + eax + 0xc]
xor al, byte [ebx + edx + 0x20]
mov byte [ebx + edx], al
lea eax, [edx + 1]
and eax, 0x1f
movzx eax, byte [esp + eax + 0xc]
xor al, byte [ebx + edx + 0x21]
mov byte [ebx + edx + 1], al
add edx, 2
cmp ecx, edx
jne 0x41be60
mov byte [ebx + ecx], 0
mov eax, ecx
add esp, 0x2c
pop esi
pop edi
pop ebx
pop ebp
ret
xor ecx, ecx
mov esi, 2
jmp 0x41bec6
mov edx, edi
lea eax, [esi + 4]
add esi, 2
mov ecx, ebp
cmp esi, edx
mov esi, eax
mov edi, edx
jae 0x41bd5b
mov dword [esp], ecx
mov ebp, dword [esp + 0x40]
movzx eax, byte [ebp + esi - 2]
push eax
call fcn.00422dc0
add esp, 4
mov bh, al
movzx eax, byte [ebp + esi - 1]
push eax
call fcn.00422dc0
add esp, 4
mov bl, al
shl bh, 2
shr al, 4
and al, 3
or al, bh
mov edx, dword [esp]
lea ebp, [edx + 1]
mov ecx, dword [esp + 0x44]
mov byte [ecx + edx], al
cmp esi, edi
jae 0x41beb0
mov eax, dword [esp + 0x40]
movzx eax, byte [eax + esi]
push eax
call fcn.00422dc0
mov edx, dword [esp + 8]
add esp, 4
cmp al, 0x40
je 0x41beb2
mov bh, al
shl bl, 4
shr al, 2
and al, 0xf
or al, bl
mov edi, dword [esp]
lea ebp, [edi + 2]
mov ecx, dword [esp + 0x44]
mov byte [ecx + edi + 1], al
lea eax, [esi + 1]
cmp eax, edx
jae 0x41beb2
mov eax, dword [esp + 0x40]
movzx eax, byte [eax + esi + 1]
push eax
call fcn.00422dc0
mov edx, dword [esp + 8]
add esp, 4
cmp al, 0x40
je 0x41beb2
movzx edx, bh
mov ecx, edx
not ecx
or ecx, 3
add ecx, edx
shl ecx, 6
add ecx, 0x40
movzx eax, al
mov edx, ecx
xor edx, eax
and ecx, eax
lea eax, [edx + ecx*2]
mov edx, dword [esp + 4]
mov ecx, dword [esp + 0x44]
mov ebp, dword [esp]
mov byte [ecx + ebp + 2], al
add ebp, 3
jmp 0x41beb2