Function at 0x41f910
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x2c
push esi
mov eax, edx
mov esi, ecx
mov edx, dword [ebp + 8]
mov dword [ebp - 0x14], esi
test dl, 0xf
je 0x41f930
mov eax, 0xffffffda
pop esi
mov esp, ebp
pop ebp
ret
push ebx
push edi
test eax, eax
jne 0x41fbc6
test edx, edx
je 0x41fc7a
mov eax, dword [ebp + 0xc]
lea ecx, [eax + 0xf]
mov dword [ebp - 0x1c], ecx
mov ecx, dword [ebp + 0x14]
sub eax, ecx
mov dword [ebp - 8], eax
mov eax, dword [ebp + 0x10]
lea edi, [ecx + 2]
sub ecx, eax
lea ebx, [eax + 2]
mov dword [ebp + 8], ebx
lea eax, [ecx - 2]
mov dword [ebp - 0x18], eax
lea eax, [edx - 1]
shr eax, 4
inc eax
mov dword [ebp - 0x10], eax
movzx ecx, byte [ebx - 1]
mov eax, dword [esi]
movzx edx, byte [ebx + 2]
mov dword [ebp - 0xc], eax
movzx eax, byte [ebx - 2]
movups xmm2, xmmword [ebx - 2]
shl eax, 8
or ecx, eax
shl edx, 8
movzx eax, byte [ebx]
shl ecx, 8
or ecx, eax
movzx eax, byte [ebx + 1]
shl ecx, 8
or ecx, eax
movzx eax, byte [ebx + 3]
or edx, eax
mov dword [ebp - 4], ecx
movzx eax, byte [ebx + 4]
mov ecx, dword [ebp + 8]
shl edx, 8
or edx, eax
movzx eax, byte [ebx + 5]
movzx ebx, byte [ebx + 6]
shl ebx, 8
shl edx, 8
or edx, eax
movzx eax, byte [ecx + 7]
or ebx, eax
xor edx, dword [esi + 8]
movzx eax, byte [ecx + 8]
shl ebx, 8
or ebx, eax
mov dword [ebp - 0x28], edx
movzx eax, byte [ecx + 9]
movzx ecx, byte [ecx + 0xa]
shl ebx, 8
or ebx, eax
shl ecx, 8
mov eax, dword [ebp + 8]
xor ebx, dword [esi + 0xc]
mov dword [ebp - 0x24], ebx
movzx eax, byte [eax + 0xb]
or ecx, eax
mov eax, dword [ebp + 8]
shl ecx, 8
movzx eax, byte [eax + 0xc]
or ecx, eax
mov eax, dword [ebp + 8]
shl ecx, 8
movzx eax, byte [eax + 0xd]
or ecx, eax
mov eax, dword [ebp - 4]
xor eax, dword [esi + 4]
xor ecx, dword [esi + 0x10]
add esi, 0x14
cmp dword [ebp - 0xc], 0
mov dword [ebp - 0x2c], eax
mov dword [ebp - 0x20], ecx
je 0x41fadf
mov ebx, dword [ebp - 0xc]
nop
lea eax, [ebp - 0x24]
mov edx, esi
push eax
lea ecx, [ebp - 0x2c]
call fcn.0041e9a0
lea eax, [ebp - 0x2c]
push eax
lea edx, [esi + 8]
lea ecx, [ebp - 0x24]
call fcn.0041e9a0
lea eax, [ebp - 0x24]
push eax
lea edx, [esi + 0x10]
lea ecx, [ebp - 0x2c]
call fcn.0041e9a0
lea eax, [ebp - 0x2c]
push eax
lea edx, [esi + 0x18]
lea ecx, [ebp - 0x24]
call fcn.0041e9a0
lea eax, [ebp - 0x24]
push eax
lea edx, [esi + 0x20]
lea ecx, [ebp - 0x2c]
call fcn.0041e9a0
lea eax, [ebp - 0x2c]
push eax
lea edx, [esi + 0x28]
lea ecx, [ebp - 0x24]
call fcn.0041e9a0
add esp, 0x18
add esi, 0x30
sub ebx, 1
je 0x41fad3
mov eax, dword [esi]
mov edx, dword [ebp - 0x2c]
and eax, edx
mov ecx, dword [ebp - 0x28]
rol eax, 1
xor ecx, eax
mov eax, dword [esi + 4]
or eax, ecx
mov dword [ebp - 0x28], ecx
mov ecx, dword [ebp - 0x24]
xor edx, eax
mov eax, dword [esi + 0xc]
mov dword [ebp - 0x2c], edx
mov edx, dword [ebp - 0x20]
or eax, edx
xor ecx, eax
mov eax, dword [esi + 8]
and eax, ecx
mov dword [ebp - 0x24], ecx
rol eax, 1
xor edx, eax
add esi, 0x10
mov dword [ebp - 0x20], edx
jmp 0x41fa30
mov ecx, dword [ebp - 0x20]
mov ebx, dword [ebp - 0x24]
mov edx, dword [ebp - 0x28]
mov eax, dword [ebp - 0x2c]
xor eax, dword [esi + 8]
xor ecx, dword [esi + 4]
xor ebx, dword [esi]
xor edx, dword [esi + 0xc]
mov dword [ebp - 4], eax
mov eax, ebx
shr eax, 0x18
mov dword [ebp - 0xc], ecx
mov ecx, dword [ebp - 0x18]
add ecx, dword [ebp + 8]
mov byte [edi + 1], bl
mov byte [edi + 0xd], dl
mov byte [ecx], al
mov eax, ebx
shr eax, 0x10
mov byte [edi - 1], al
mov eax, ebx
mov ebx, dword [ebp - 0xc]
shr eax, 8
mov byte [edi], al
mov eax, ebx
shr eax, 0x18
mov byte [edi + 2], al
mov eax, ebx
shr eax, 0x10
mov byte [edi + 3], al
mov eax, ebx
shr eax, 8
mov byte [edi + 4], al
mov byte [edi + 5], bl
mov ebx, dword [ebp - 4]
mov eax, ebx
shr eax, 0x18
mov byte [edi + 6], al
mov eax, ebx
shr eax, 0x10
mov byte [edi + 7], al
mov eax, ebx
shr eax, 8
mov byte [edi + 8], al
mov eax, edx
shr eax, 0x18
mov byte [edi + 0xa], al
mov eax, edx
shr eax, 0x10
mov byte [edi + 0xb], al
mov eax, edx
shr eax, 8
mov byte [edi + 0xc], al
lea eax, [edi + 0xd]
mov byte [edi + 9], bl
mov ebx, dword [ebp + 0xc]
cmp ecx, dword [ebp - 0x1c]
ja 0x41fb90
cmp eax, ebx
jb 0x41fb90
mov esi, dword [ebp - 8]
mov edx, 0x10
nop dword [eax]
mov al, byte [ecx + esi]
lea ecx, [ecx + 1]
xor byte [ecx - 1], al
sub edx, 1
jne 0x41fb80
jmp 0x41fb9d
movups xmm1, xmmword [ebx]
movups xmm0, xmmword [ecx]
pxor xmm1, xmm0
movups xmmword [ecx], xmm1
sub dword [ebp - 8], 0x10
add edi, 0x10
mov esi, dword [ebp - 0x14]
movups xmmword [ebx], xmm2
mov ebx, dword [ebp + 8]
add ebx, 0x10
sub dword [ebp - 0x10], 1
mov dword [ebp + 8], ebx
jne 0x41f971
pop edi
pop ebx
xor eax, eax
pop esi
mov esp, ebp
pop ebp
ret
test edx, edx
je 0x41fc7a
mov ecx, dword [ebp + 0xc]
dec edx
mov edi, dword [ebp + 0x10]
mov eax, ecx
mov esi, dword [ebp + 0x14]
sub eax, edi
shr edx, 4
inc edx
mov dword [ebp + 8], eax
mov dword [ebp - 0xc], edx
mov dword [ebp - 0x10], esi
nop dword [eax]
lea eax, [edi + 0xf]
cmp esi, eax
ja 0x41fbfe
lea eax, [esi + 0xf]
cmp eax, edi
jae 0x41fc0c
lea eax, [ecx + 0xf]
cmp esi, eax
ja 0x41fc40
lea eax, [esi + 0xf]
cmp eax, ecx
jb 0x41fc40
mov ebx, esi
mov ecx, edi
mov esi, dword [ebp + 8]
sub ebx, edi
mov edx, 0x10
nop word [eax + eax]
mov al, byte [esi + ecx]
lea ecx, [ecx + 1]
xor al, byte [ecx - 1]
mov byte [ecx + ebx - 1], al
sub edx, 1
jne 0x41fc20
mov esi, dword [ebp - 0x10]
jmp 0x41fc4d
movups xmm1, xmmword [ecx]
movups xmm0, xmmword [edi]
pxor xmm1, xmm0
movups xmmword [esi], xmm1
mov ecx, dword [ebp - 0x14]
push esi
push esi
call fcn.0041f700
movups xmm0, xmmword [esi]
mov ecx, dword [ebp + 0xc]
add esi, 0x10
sub dword [ebp + 8], 0x10
add esp, 8
add edi, 0x10
mov dword [ebp - 0x10], esi
sub dword [ebp - 0xc], 1
movups xmmword [ecx], xmm0
jne 0x41fbf0
pop edi
pop ebx
xor eax, eax
pop esi
mov esp, ebp
pop ebp
ret