Function at 0x49bc20
Capabilities:
Encode data using xor

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0x44
mov edi, dword [esp + 0x68]
mov edx, dword [esp + 0x64]
mov ecx, dword [esp + 0x60]
mov ebx, dword [esp + 0x5c]
mov ebp, dword [esp + 0x58]
cmp dword [esp + 0x6c], 0
je 0x49bcba
cmp ecx, 0x10
jb 0x49bd64
mov eax, edi
mov edi, ecx
mov esi, ecx
nop word cs:[eax + eax]
nop dword [eax + eax]
mov ecx, dword [eax]
xor ecx, dword [ebp]
mov dword [ebx], ecx
mov ecx, dword [eax + 4]
xor ecx, dword [ebp + 4]
mov dword [ebx + 4], ecx
mov ecx, dword [eax + 8]
xor ecx, dword [ebp + 8]
mov dword [ebx + 8], ecx
mov eax, dword [eax + 0xc]
xor eax, dword [ebp + 0xc]
mov dword [ebx + 0xc], eax
push edx
push ebx
push ebx
call fcn.0049aa10
mov edx, dword [esp + 0x70]
add esp, 0xc
add esi, 0xfffffff0
add ebp, 0x10
mov eax, ebx
add ebx, 0x10
cmp esi, 0xf
ja 0x49bc60
mov ecx, edi
mov edi, dword [esp + 0x68]
lea eax, [ebx - 0x10]
and ecx, 0xf
test ecx, ecx
jne 0x49bd6e
jmp 0x49bfa4
cmp ebp, 0x20
jb 0x49bfbe
cmp ebp, ebx
jb 0x49bfc6
lea eax, [ebp - 0x20]
cmp eax, ebx
jae 0x49bfc6
cmp ecx, 0x10
jb 0x49c02b
mov esi, edi
mov edi, ecx
nop word cs:[eax + eax]
nop dword [eax]
push edx
lea eax, [esp + 0x34]
push eax
push ebp
call fcn.0049adf0
mov edx, dword [esp + 0x70]
add esp, 0xc
mov ecx, dword [esi]
mov eax, dword [ebp]
add edi, 0xfffffff0
xor ecx, dword [esp + 0x30]
mov dword [ebx], ecx
mov dword [esi], eax
mov ecx, dword [esi + 4]
mov eax, dword [ebp + 4]
xor ecx, dword [esp + 0x34]
mov dword [ebx + 4], ecx
mov dword [esi + 4], eax
mov ecx, dword [esi + 8]
mov eax, dword [ebp + 8]
xor ecx, dword [esp + 0x38]
mov dword [ebx + 8], ecx
mov dword [esi + 8], eax
mov ecx, dword [esi + 0xc]
mov eax, dword [ebp + 0xc]
add ebp, 0x10
xor ecx, dword [esp + 0x3c]
mov dword [ebx + 0xc], ecx
add ebx, 0x10
cmp edi, 0xf
mov dword [esi + 0xc], eax
ja 0x49bcf0
mov ecx, dword [esp + 0x60]
mov edi, esi
and ecx, 0xf
test ecx, ecx
jne 0x49c02f
jmp 0x49bfb6
mov eax, edi
test ecx, ecx
je 0x49bfa4
xor esi, esi
mov dword [esp + 0x24], ebp
mov edi, ebp
mov dword [esp + 0x20], ebx
mov ebp, ebx
mov ebx, ecx
mov dword [esp + 0x2c], ecx
nop word cs:[eax + eax]
nop dword [eax]
cmp ebx, 1
mov edx, 1
mov dword [esp + 0x18], ebx
mov dword [esp + 0x28], esi
cmova edx, ebx
mov ebx, 0xf
dec edx
cmp edx, 0xf
cmovae edx, ebx
mov ebx, esi
mov esi, dword [esp + 0x20]
shl ebx, 4
sub ecx, ebx
mov dword [esp + 0xc], ebx
cmp ecx, 1
lea esi, [esi + ebx]
mov ebx, dword [esp + 0x18]
mov dword [esp + 0x10], esi
mov esi, 1
cmovbe ecx, esi
mov esi, 0xf
dec ecx
cmp ecx, 0xf
cmovae ecx, esi
lea esi, [ecx + 1]
mov dword [esp + 4], esi
cmp esi, 0xf
mov esi, 0
ja 0x49bea0
nop word cs:[eax + eax]
nop
movzx ecx, byte [eax + esi]
xor cl, byte [edi + esi]
mov byte [ebp + esi], cl
inc esi
cmp esi, 0x10
setb cl
cmp esi, 0xf
ja 0x49be1b
cmp esi, ebx
jb 0x49be00
test cl, cl
je 0x49be6c
mov ecx, 0x10
sub ecx, esi
cmp ecx, 0x1f
jbe 0x49be57
mov edx, dword [esp + 0x10]
mov dword [esp + 4], ecx
lea ecx, [eax + 0x10]
add edx, esi
cmp edx, ecx
jae 0x49bf5c
mov ecx, dword [esp + 0x20]
mov edx, dword [esp + 0xc]
lea ecx, [ecx + edx + 0x10]
lea edx, [eax + esi]
cmp edx, ecx
jae 0x49bf5c
mov ecx, esi
add ecx, 0xfffffff0
nop dword [eax]
movzx edx, byte [eax + ecx + 0x10]
mov byte [ebp + ecx + 0x10], dl
inc ecx
jne 0x49be60
push dword [esp + 0x64]
push ebp
push ebp
call fcn.0049aa10
add esp, 0xc
cmp ebx, 0x11
jb 0x49bf9e
mov esi, dword [esp + 0x28]
mov ecx, dword [esp + 0x2c]
mov eax, ebp
add ebx, 0xfffffff0
add edi, 0x10
add ebp, 0x10
inc esi
jmp 0x49bd90
mov ebx, dword [esp + 0xc]
lea esi, [ebx + 1]
mov dword [esp + 0x1c], esi
mov esi, dword [esp + 0x20]
lea esi, [esi + ebx + 1]
mov ebx, dword [esp + 0x24]
add esi, ecx
mov dword [esp + 8], esi
mov esi, dword [esp + 0x1c]
add esi, ebx
add esi, ecx
lea ecx, [eax + ecx + 1]
cmp dword [esp + 0x10], esi
mov esi, dword [esp + 0xc]
lea esi, [ebx + esi]
setb byte [esp + 0x1c]
mov ebx, dword [esp + 0x18]
cmp esi, dword [esp + 8]
mov esi, 0
setb byte [esp + 3]
cmp dword [esp + 0x10], ecx
mov ch, byte [esp + 3]
setb cl
cmp eax, dword [esp + 8]
setb byte [esp + 8]
test byte [esp + 0x1c], ch
jne 0x49be00
and cl, byte [esp + 8]
mov esi, 0
jne 0x49be00
mov esi, dword [esp + 4]
inc edx
xor ecx, ecx
and edx, 0x10
and esi, 0x10
nop word cs:[eax + eax]
nop
movups xmm0, xmmword [edi + ecx]
movups xmm1, xmmword [eax + ecx]
xorps xmm1, xmm0
movups xmmword [ebp + ecx], xmm1
add ecx, 0x10
cmp edx, ecx
jne 0x49bf30
cmp ecx, 0x10
setb cl
cmp dword [esp + 4], esi
jne 0x49be00
jmp 0x49be1b
mov edx, dword [esp + 4]
and edx, 0xffffffe0
lea ecx, [esi + edx]
add esi, 0x10
mov dword [esp + 0x10], edx
nop dword [eax]
movups xmm0, xmmword [eax + esi - 0x10]
movups xmm1, xmmword [eax + esi]
movups xmmword [ebp + esi - 0x10], xmm0
movups xmmword [ebp + esi], xmm1
add esi, 0x20
add edx, 0xffffffe0
jne 0x49bf70
mov edx, dword [esp + 0x10]
cmp dword [esp + 4], edx
jne 0x49be59
jmp 0x49be6c
mov edi, dword [esp + 0x68]
mov eax, ebp
movsd xmm0, qword [eax]
movsd xmm1, qword [eax + 8]
movsd qword [edi + 8], xmm1
movsd qword [edi], xmm0
add esp, 0x44
pop esi
pop edi
pop ebx
pop ebp
ret
cmp ebp, ebx
jae 0x49bcd6
cmp ecx, 0x10
jb 0x49c017
mov esi, ecx
nop dword [eax]
push edx
push ebx
push ebp
call fcn.0049adf0
mov edx, dword [esp + 0x70]
add esp, 0xc
mov eax, dword [edi]
add esi, 0xfffffff0
xor dword [ebx], eax
mov eax, dword [edi + 4]
xor dword [ebx + 4], eax
mov eax, dword [edi + 8]
xor dword [ebx + 8], eax
mov eax, dword [edi + 0xc]
mov edi, ebp
xor dword [ebx + 0xc], eax
lea eax, [ebp + 0x10]
add ebx, 0x10
cmp esi, 0xf
mov ebp, eax
ja 0x49bfd0
mov ecx, dword [esp + 0x60]
mov edi, dword [esp + 0x68]
lea eax, [ebp - 0x10]
and ecx, 0xf
jmp 0x49c019
mov eax, edi
movsd xmm0, qword [eax]
movsd xmm1, qword [eax + 8]
movsd qword [edi + 8], xmm1
movsd qword [edi], xmm0
test ecx, ecx
je 0x49bfb6
lea eax, [edi + 1]
mov dword [esp + 0x24], ebp
mov edi, ebp
mov ebp, ecx
mov dword [esp + 0x20], ebx
mov dword [esp + 0x2c], ecx
mov dword [esp + 0x40], eax
xor eax, eax
nop dword [eax + eax]
cmp ebp, 1
mov esi, 1
mov edx, 0xf
mov dword [esp + 0x10], eax
cmova esi, ebp
dec esi
cmp esi, 0xf
cmovae esi, edx
shl eax, 4
mov dword [esp + 0x1c], esi
mov esi, ecx
mov dword [esp + 0xc], eax
sub esi, eax
mov eax, 1
cmp esi, 1
cmovbe esi, eax
dec esi
cmp esi, 0xf
cmovae esi, edx
lea eax, [esi + 1]
mov dword [esp + 0x18], eax
push dword [esp + 0x64]
lea eax, [esp + 0x34]
push eax
push edi
call fcn.0049adf0
add esp, 0xc
cmp dword [esp + 0x18], 0x10
mov eax, 0
jb 0x49c1e0
mov eax, dword [esp + 0x20]
mov ecx, dword [esp + 0xc]
lea edx, [eax + ecx]
mov dword [esp + 8], edx
lea edx, [eax + ecx + 1]
mov eax, dword [esp + 0x40]
add edx, esi
add eax, esi
mov dword [esp + 0x28], eax
mov eax, dword [esp + 0x24]
lea eax, [eax + ecx]
mov dword [esp + 4], eax
mov eax, dword [esp + 0x24]
lea eax, [eax + ecx + 1]
lea ecx, [esp + 0x31]
add eax, esi
add esi, ecx
mov ecx, dword [esp + 8]
cmp ecx, dword [esp + 0x28]
mov ecx, dword [esp + 0x68]
setb byte [esp + 0xc]
cmp edx, ecx
mov ecx, dword [esp + 8]
seta byte [esp + 3]
cmp ecx, eax
setb byte [esp + 0x17]
cmp dword [esp + 4], edx
setb byte [esp + 0x16]
cmp ecx, esi
lea ecx, [esp + 0x30]
setb byte [esp + 8]
cmp edx, ecx
mov ecx, dword [esp + 0x68]
seta byte [esp + 0x15]
cmp eax, ecx
mov eax, dword [esp + 0x28]
seta dl
cmp dword [esp + 4], eax
setb byte [esp + 4]
cmp esi, ecx
lea ecx, [esp + 0x30]
seta dh
cmp eax, ecx
mov al, byte [esp + 3]
seta cl
test byte [esp + 0xc], al
mov eax, 0
jne 0x49c1e0
mov al, byte [esp + 0x16]
and byte [esp + 0x17], al
mov eax, 0
jne 0x49c1e0
mov al, byte [esp + 0x15]
and byte [esp + 8], al
mov eax, 0
jne 0x49c1e0
and dl, byte [esp + 4]
mov eax, 0
jne 0x49c1e0
and dh, cl
mov eax, 0
jne 0x49c1e0
mov esi, dword [esp + 0x1c]
mov eax, dword [esp + 0x18]
mov edx, dword [esp + 0x68]
xor ecx, ecx
inc esi
and eax, 0x10
and esi, 0x10
nop dword [eax + eax]
movups xmm1, xmmword [esp + ecx + 0x30]
movups xmm2, xmmword [edx + ecx]
movups xmm0, xmmword [edi + ecx]
xorps xmm2, xmm1
movups xmmword [ebx + ecx], xmm2
movups xmmword [edx + ecx], xmm0
add ecx, 0x10
cmp esi, ecx
jne 0x49c1b0
cmp ecx, 0x10
setb cl
cmp dword [esp + 0x18], eax
je 0x49c208
nop dword [eax + eax]
mov edx, dword [esp + 0x68]
movzx ecx, byte [edi + eax]
mov esi, edx
movzx edx, byte [edx + eax]
xor dl, byte [esp + eax + 0x30]
mov byte [ebx + eax], dl
mov byte [esi + eax], cl
inc eax
cmp eax, 0x10
setb cl
cmp eax, 0xf
ja 0x49c208
cmp eax, ebp
jb 0x49c1e0
cmp ebp, 0x10
jbe 0x49c224
mov eax, dword [esp + 0x10]
mov ecx, dword [esp + 0x2c]
add ebp, 0xfffffff0
add edi, 0x10
add ebx, 0x10
inc eax
jmp 0x49c050
mov ebp, dword [esp + 0x68]
test cl, cl
je 0x49bfb6
mov edx, 0x10
sub edx, eax
cmp edx, 0x20
jae 0x49c240
mov ecx, eax
jmp 0x49c2a0
lea ecx, [ebp + eax]
lea esi, [edi + 0x10]
cmp ecx, esi
jae 0x49c259
lea ecx, [ebp + 0x10]
lea esi, [edi + eax]
cmp esi, ecx
jae 0x49c259
mov ecx, eax
jmp 0x49c2a0
mov esi, edx
and esi, 0xffffffe0
lea ecx, [eax + esi]
add eax, 0x10
mov ebx, esi
nop word cs:[eax + eax]
movups xmm0, xmmword [edi + eax - 0x10]
movups xmm1, xmmword [edi + eax]
movups xmmword [ebp + eax - 0x10], xmm0
movups xmmword [ebp + eax], xmm1
add eax, 0x20
add ebx, 0xffffffe0
jne 0x49c270
cmp edx, esi
je 0x49bfb6
nop word cs:[eax + eax]
nop dword [eax]
movzx eax, byte [edi + ecx]
mov byte [ebp + ecx], al
inc ecx
cmp ecx, 0x10
jne 0x49c2a0
jmp 0x49bfb6