Function at 0x48af40
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 0x48af60
mov eax, 0xffffffda
pop esi
mov esp, ebp
pop ebp
ret
push ebx
push edi
test eax, eax
jne 0x48b1f9
test edx, edx
je 0x48b2ae
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]
movdqu 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 0x48b10d
mov ebx, dword [ebp - 0xc]
lea eax, [ebp - 0x24]
mov edx, esi
push eax
lea ecx, [ebp - 0x2c]
call fcn.00489fe0
lea eax, [ebp - 0x2c]
push eax
lea edx, [esi + 8]
lea ecx, [ebp - 0x24]
call fcn.00489fe0
lea eax, [ebp - 0x24]
push eax
lea edx, [esi + 0x10]
lea ecx, [ebp - 0x2c]
call fcn.00489fe0
lea eax, [ebp - 0x2c]
push eax
lea edx, [esi + 0x18]
lea ecx, [ebp - 0x24]
call fcn.00489fe0
lea eax, [ebp - 0x24]
push eax
lea edx, [esi + 0x20]
lea ecx, [ebp - 0x2c]
call fcn.00489fe0
lea eax, [ebp - 0x2c]
push eax
lea edx, [esi + 0x28]
lea ecx, [ebp - 0x24]
call fcn.00489fe0
add esp, 0x18
add esi, 0x30
dec ebx
je 0x48b101
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 0x48b060
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 0x48b1c0
cmp eax, ebx
jb 0x48b1c0
mov esi, dword [ebp - 8]
mov edx, 0x10
jmp 0x48b1b0
mov al, byte [esi + ecx]
lea ecx, [ecx + 1]
xor byte [ecx - 1], al
dec edx
jne 0x48b1b0
jmp 0x48b1d0
movdqu xmm1, xmmword [ecx]
movdqu xmm0, xmmword [ebx]
pxor xmm1, xmm0
movdqu xmmword [ecx], xmm1
sub dword [ebp - 8], 0x10
add edi, 0x10
mov esi, dword [ebp - 0x14]
movdqu xmmword [ebx], xmm2
mov ebx, dword [ebp + 8]
add ebx, 0x10
dec dword [ebp - 0x10]
mov dword [ebp + 8], ebx
jne 0x48afa1
pop edi
pop ebx
xor eax, eax
pop esi
mov esp, ebp
pop ebp
ret
test edx, edx
je 0x48b2ae
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
lea esp, [esp]
lea eax, [edi + 0xf]
cmp esi, eax
ja 0x48b22e
lea eax, [esi + 0xf]
cmp eax, edi
jae 0x48b23c
lea eax, [ecx + 0xf]
cmp esi, eax
ja 0x48b270
lea eax, [esi + 0xf]
cmp eax, ecx
jb 0x48b270
mov ebx, esi
mov ecx, edi
mov esi, dword [ebp + 8]
sub ebx, edi
mov edx, 0x10
lea ebx, [ebx]
mov al, byte [esi + ecx]
lea ecx, [ecx + 1]
xor al, byte [ecx - 1]
mov byte [ecx + ebx - 1], al
dec edx
jne 0x48b250
mov esi, dword [ebp - 0x10]
jmp 0x48b280
movdqu xmm1, xmmword [ecx]
movdqu xmm0, xmmword [edi]
pxor xmm1, xmm0
movdqu xmmword [esi], xmm1
mov ecx, dword [ebp - 0x14]
push esi
push esi
call fcn.0048ad30
movdqu 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
dec dword [ebp - 0xc]
movdqu xmmword [ecx], xmm0
jne 0x48b220
pop edi
pop ebx
xor eax, eax
pop esi
mov esp, ebp
pop ebp
ret