Function at 0x10004850
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x2c
mov eax, dword [0x1001a028]
xor eax, ebp
mov dword [ebp - 4], eax
mov eax, dword [ebp + 0x18]
push ebx
push esi
mov esi, dword [ebp + 8]
push edi
push esi
push 0x1f80
mov dword [ebp - 0x2c], eax
call fcn.10001a40
push esi
push 0x1fa0
mov dword [ebp - 0x20], eax
call fcn.10001a40
push esi
push 0x1fc0
mov edi, eax
call fcn.10001a40
mov ecx, dword [ebp - 0x20]
mov ebx, eax
mov eax, edi
add esp, 0x18
xor esi, esi
sub eax, ecx
mov dword [ebp - 0x1c], eax
add ecx, esi
mov dl, byte [ecx + eax]
xor dl, byte [ecx]
mov ecx, dword [ebp - 0x20]
cmp dl, 0xff
jne 0x100048ee
mov al, byte [edi + esi + 1]
xor al, byte [ecx + esi + 1]
cmp al, dl
jne 0x100048ed
mov al, byte [edi + esi + 2]
xor al, byte [ecx + esi + 2]
cmp al, dl
jne 0x100048e8
mov al, byte [edi + esi + 3]
xor al, byte [ecx + esi + 3]
cmp al, dl
jne 0x100048e3
mov eax, dword [ebp - 0x1c]
add esi, 4
cmp esi, 0x10
jb 0x100048a3
jmp 0x100048f7
add esi, 3
jmp 0x100048ee
add esi, 2
jmp 0x100048ee
inc esi
cmp esi, 0x10
jb 0x10004b5e
mov esi, ebx
xor edx, edx
sub esi, ecx
nop dword [eax]
lea eax, [ecx + edx]
mov cl, byte [eax + esi]
xor cl, byte [eax]
cmp cl, 0xaa
mov ecx, dword [ebp - 0x20]
jne 0x10004949
mov al, byte [ebx + edx + 1]
xor al, byte [ecx + edx + 1]
cmp al, 0xaa
jne 0x10004948
mov al, byte [ebx + edx + 2]
xor al, byte [ecx + edx + 2]
cmp al, 0xaa
jne 0x10004943
mov al, byte [ebx + edx + 3]
xor al, byte [ecx + edx + 3]
cmp al, 0xaa
jne 0x1000493e
add edx, 4
cmp edx, 0x10
jb 0x10004900
jmp 0x10004952
add edx, 3
jmp 0x10004949
add edx, 2
jmp 0x10004949
inc edx
cmp edx, 0x10
jb 0x10004b5e
mov eax, dword [ebp + 0x14]
xor edi, edi
mov dword [ebp - 0x1c], edi
add eax, 0xfffffff0
je 0x10004b5e
mov edx, dword [ebp + 0x10]
lea eax, [ecx + 0xf]
mov dword [ebp - 0x28], eax
nop dword [eax]
lea ebx, [ebp - 0x14]
xor esi, esi
cmp ebx, eax
mov ebx, dword [ebp + 0x14]
ja 0x100049a8
lea eax, [ebp - 5]
cmp eax, ecx
jb 0x100049a8
mov edi, ecx
lea eax, [ebp - 0x14]
sub edi, eax
nop word [eax + eax]
lea ecx, [ebp - 0x14]
add ecx, esi
mov al, byte [ecx + edi]
xor al, byte [edx + esi]
inc esi
mov byte [ecx], al
cmp esi, 0x10
jb 0x10004990
mov edi, dword [ebp - 0x1c]
jmp 0x100049b6
movups xmm1, xmmword [edx]
movups xmm0, xmmword [ecx]
pxor xmm1, xmm0
movups xmmword [ebp - 0x14], xmm1
xor ecx, ecx
nop dword [eax + eax]
mov al, byte [ebp + ecx - 0x14]
cmp al, byte [ebp + ecx - 0xc]
jne 0x100049d2
inc ecx
cmp ecx, 8
jb 0x100049c0
jmp 0x100049db
cmp ecx, 8
jb 0x10004ad6
mov eax, ebx
sub eax, edi
sub eax, 0x10
cmp eax, 0x10
jb 0x10004ad6
xor ebx, ebx
add eax, 0xfffffff0
mov dword [ebp - 0x24], eax
je 0x10004ad3
mov esi, dword [ebp + 0x10]
mov cl, byte [edx]
add esi, 0x12
add esi, edi
cmp byte [esi - 2], cl
lea edi, [esi - 2]
jne 0x10004b0b
mov ecx, 1
mov al, byte [edi + ecx]
cmp al, byte [edx + ecx]
jne 0x10004afd
mov al, byte [esi + ecx - 1]
cmp al, byte [edx + ecx + 1]
jne 0x10004afc
mov al, byte [esi + ecx]
cmp al, byte [edx + ecx + 2]
jne 0x10004af7
mov al, byte [esi + ecx + 1]
cmp al, byte [edx + ecx + 3]
jne 0x10004af2
mov al, byte [esi + ecx + 2]
cmp al, byte [edx + ecx + 4]
jne 0x10004aed
add ecx, 5
cmp ecx, 0x10
jb 0x10004a14
test edi, edi
je 0x10004ad0
mov eax, edi
sub eax, dword [ebp + 0x10]
sub eax, 0x10
cmp eax, 0x10
jb 0x10004ad0
xor ebx, ebx
add eax, 0xfffffff0
mov dword [ebp - 0x24], eax
je 0x10004ad0
mov ch, byte [edx]
lea esi, [edi + 0x12]
nop
cmp byte [esi - 2], ch
lea edi, [esi - 2]
jne 0x10004b2f
mov eax, 1
mov cl, byte [edi + eax]
cmp cl, byte [edx + eax]
jne 0x10004b27
mov cl, byte [esi + eax - 1]
cmp cl, byte [edx + eax + 1]
jne 0x10004b26
mov cl, byte [esi + eax]
cmp cl, byte [edx + eax + 2]
jne 0x10004b21
mov cl, byte [esi + eax + 1]
cmp cl, byte [edx + eax + 3]
jne 0x10004b1c
mov cl, byte [esi + eax + 2]
cmp cl, byte [edx + eax + 4]
jne 0x10004b17
add eax, 5
cmp eax, 0x10
jb 0x10004a91
test edi, edi
jne 0x10004b3b
mov edi, dword [ebp - 0x1c]
mov ebx, dword [ebp + 0x14]
inc edi
lea eax, [ebx - 0x10]
inc edx
mov dword [ebp - 0x1c], edi
cmp edi, eax
jae 0x10004b5e
mov ecx, dword [ebp - 0x20]
mov eax, dword [ebp - 0x28]
jmp 0x10004970
add ecx, 4
jmp 0x10004afd
add ecx, 3
jmp 0x10004afd
add ecx, 2
jmp 0x10004afd
inc ecx
cmp ecx, 0x10
jae 0x10004a5f
mov eax, dword [ebp - 0x24]
mov cl, byte [edx]
inc ebx
inc esi
cmp ebx, eax
jb 0x10004a03
jmp 0x10004ad0
add eax, 4
jmp 0x10004b27
add eax, 3
jmp 0x10004b27
add eax, 2
jmp 0x10004b27
inc eax
cmp eax, 0x10
jae 0x10004acc
mov eax, dword [ebp - 0x24]
inc ebx
inc esi
cmp ebx, eax
jb 0x10004a80
jmp 0x10004ad0
mov eax, dword [ebp - 0x1c]
mov ecx, dword [ebp + 0x10]
pop edi
pop esi
pop ebx
movups xmm0, xmmword [eax + ecx]
mov eax, dword [ebp - 0x2c]
movups xmmword [eax], xmm0
mov al, 1
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.10008251
mov esp, ebp
pop ebp
ret
mov ecx, dword [ebp - 4]
xor al, al
pop edi
pop esi
xor ecx, ebp
pop ebx
call fcn.10008251
mov esp, ebp
pop ebp
ret