Function at 0x48e0c2
Capabilities:
Encode data using xor

Disassembly:
push r15
push r14
push r13
push r12
push rsi
push rdi
push rbp
push rbx
sub rsp, 0xd8
mov rsi, rcx
cmp r8, 0xc
jbe 0x48e39b
mov r12, r8
mov r15, rdx
mov rdi, qword [rdx]
mov rax, qword [rdx + 5]
mov qword [rsp + 0x3d], rax
mov qword [rsp + 0x38], rdi
mov eax, 1
xor byte [rsp + rax + 0x38], dil
inc rax
cmp rax, 0xd
jne 0x48e0fe
cmp byte [rsp + 0x39], 0x64
jne 0x48e3ac
cmp byte [rsp + 0x3a], 0x77
jne 0x48e3ac
cmp byte [rsp + 0x3b], 0x73
jne 0x48e3ac
mov qword [rsp + 0x30], rsi
lea r13, [r15 + 0xd]
lea r14, [r12 - 0xd]
mov rsi, qword [rsp + 0x3d]
movzx ebp, byte [rsp + 0x3c]
cmp ebp, 2
jb 0x48e233
cmp ebp, 0xa
je 0x48e233
cmp ebp, 0xb
jne 0x48e51e
cmp r14, 0x10
jb 0x48e551
movups xmm0, xmmword [r13]
movaps xmmword [rsp + 0xa0], xmm0
xor eax, eax
xor byte [rsp + rax + 0xa0], dil
inc rax
cmp rax, 0x10
jne 0x48e179
lea r13, [rsp + 0x50]
lea rdx, [rsp + 0xa0]
mov r8d, 0x10
mov rcx, r13
call fcn.00418170
cmp qword [r13], 0
mov rbp, qword [r13 + 0x10]
mov rbx, qword [r13 + 8]
cmovne rbx, rbp
cmovne rbp, qword [r13 + 0x18]
mov r14d, ebp
not r14d
mov rcx, rbp
call fcn.005162fd
mov qword [rsp + 0x48], rax
mov eax, ebp
and eax, 1
neg rax
and r14d, 1
mov rcx, rbp
and rcx, 0xfffffffffffffffe
imul rcx, r14
mov qword [rsp + 0x98], rbp
or rbp, 1
and rbp, rax
add rbp, rcx
mov qword [rsp + 0x28], rdx
mov rcx, rdx
mov rdx, rbx
mov r8, rbp
call sub.msvcrt.dll_memcpy
cmp qword [r13], 0
je 0x48e220
mov rcx, qword [rsp + 0x58]
mov rdx, qword [rsp + 0x60]
call fcn.004c9843
add r15, 0x1d
add r12, 0xffffffffffffffe3
mov bpl, 0xb
mov r14, r12
mov r13, r15
jmp 0x48e23a
xor eax, eax
mov qword [rsp + 0x28], rax
mov rbx, rsi
bswap rbx
mov rcx, rbx
mov dl, 1
call fcn.00516634
mov r12, rax
mov r15, rdx
cmp r14, rbx
jb 0x48e4f6
movabs rax, 0x100000000000000
cmp rsi, rax
jne 0x48e271
mov al, byte [r13]
mov byte [r15], al
jmp 0x48e27f
mov rcx, r15
mov rdx, r13
mov r8, rbx
call sub.msvcrt.dll_memcpy
lea rdx, [rsp + 0xa0]
mov qword [rdx], r12
mov qword [rdx + 8], r15
mov qword [rdx + 0x10], rbx
lea rbx, [rsp + 0x50]
mov rcx, rbx
mov r8d, ebp
call fcn.004a130e
mov bpl, byte [rbx + 0x3c]
mov rbx, qword [rbx]
cmp bpl, 0xc
mov rsi, qword [rsp + 0x30]
jne 0x48e2d8
mov qword [rsi], rbx
mov byte [rsi + 0x3c], 0xc
mov rdx, qword [rsp + 0x28]
test rdx, rdx
mov rcx, qword [rsp + 0x48]
je 0x48e4e2
call fcn.004c9843
jmp 0x48e4e2
mov rcx, qword [rsp + 0x58]
mov rdx, qword [rsp + 0x60]
mov r14, qword [rsp + 0x70]
mov r15, qword [rsp + 0x78]
mov r12, qword [rsp + 0x80]
movzx eax, word [rsp + 0x89]
mov word [rsp + 0x24], ax
mov al, byte [rsp + 0x8b]
mov byte [rsp + 0x26], al
movzx eax, word [rsp + 0x8d]
mov word [rsp + 0x20], ax
mov al, byte [rsp + 0x8f]
mov byte [rsp + 0x22], al
test r12, r12
je 0x48e337
xor eax, eax
xor byte [r15 + rax], dil
inc rax
cmp r12, rax
jne 0x48e32b
test rdx, rdx
je 0x48e341
call fcn.004c9843
mov qword [rsi], rbx
mov rax, qword [rsp + 0x48]
mov qword [rsi + 8], rax
mov rax, qword [rsp + 0x28]
mov qword [rsi + 0x10], rax
mov rax, qword [rsp + 0x98]
mov qword [rsi + 0x18], rax
mov qword [rsi + 0x20], r14
mov qword [rsi + 0x28], r15
mov qword [rsi + 0x30], r12
mov byte [rsi + 0x38], dil
movzx eax, word [rsp + 0x24]
mov word [rsi + 0x39], ax
mov al, byte [rsp + 0x26]
mov byte [rsi + 0x3b], al
mov byte [rsi + 0x3c], bpl
movzx eax, word [rsp + 0x20]
mov word [rsi + 0x3d], ax
mov al, byte [rsp + 0x22]
mov byte [rsi + 0x3f], al
jmp 0x48e4e2
lea rcx, str.failed_to_fill_whole_buffer
call fcn.0044542c
jmp 0x48e4db
lea rax, [0x005dbdb3]
lea rdi, [rsp + 0x50]
mov qword [rdi], rax
mov rcx, qword [rdi]
movabs rax, 0x476d4ec37396fb88
mov qword [rdi], rax
mov rdx, qword [rdi]
call fcn.004785af
xorps xmm0, xmm0
movaps xmmword [rdi], xmm0
mov cl, 1
xor edx, edx
lea r8, [0x005dbe0a]
mov r9, qword [rax + rdx]
movzx r11d, byte [rdx + r8]
mov r10, rdx
or r10, 1
movzx r10d, byte [r10 + r8]
mov rdi, rdx
or rdi, 2
movzx edi, byte [rdi + r8]
mov rbx, rdx
or rbx, 3
movzx ebx, byte [rbx + r8]
mov r14, rdx
or r14, 4
movzx r14d, byte [r14 + r8]
mov r15, rdx
or r15, 5
movzx r15d, byte [r15 + r8]
mov r12, rdx
or r12, 6
mov r13, rdx
or r13, 7
movzx r12d, byte [r12 + r8]
movzx r13d, byte [r13 + r8]
shl r13, 0x38
shl r12, 0x30
or r12, r13
shl r15, 0x28
shl r14, 0x20
shl rbx, 0x18
shl rdi, 0x10
shl r10, 8
or r10, r11
or r10, rdi
or r10, rbx
or r10, r14
or r10, r15
or r10, r12
mov r11, r10
and r11, r9
add r10, r9
add r11, r11
sub r10, r11
mov qword [rsp + rdx + 0x50], r10
mov edx, 8
test cl, 1
mov ecx, 0
jne 0x48e3e4
mov ecx, 0xd349dbc6
xor ecx, dword [rax + 0x10]
mov dword [rsp + 0x60], ecx
mov ecx, 0x14
call fcn.005162fd
lea rcx, [rsp + 0xc0]
mov qword [rcx], rax
mov qword [rcx + 8], rdx
movaps xmm0, xmmword [rsp + 0x50]
movups xmmword [rdx], xmm0
mov eax, dword [rsp + 0x60]
mov dword [rdx + 0x10], eax
mov qword [rcx + 0x10], 0x14
call fcn.004554b3
mov qword [rsi], rax
mov byte [rsi + 0x3c], 0xc
add rsp, 0xd8
pop rbx
pop rbp
pop rdi
pop rsi
pop r12
pop r13
pop r14
pop r15
ret
lea rcx, str.failed_to_fill_whole_buffer
call fcn.0044542c
mov rcx, qword [rsp + 0x30]
mov qword [rcx], rax
mov byte [rcx + 0x3c], 0xc
mov rcx, r12
mov rdx, r15
call fcn.004c9843
jmp 0x48e2bb
lea rax, str.invalid_type
lea rcx, [rsp + 0x50]
mov qword [rcx + 0x10], rax
mov qword [rcx + 0x18], 1
xor eax, eax
mov qword [rcx], rax
lea rdx, str.combase.dll
mov qword [rcx + 0x20], rdx
mov qword [rcx + 0x28], rax
call fcn.00447b10
jmp 0x48e55d
lea rcx, str.failed_to_fill_whole_buffer
call fcn.0044542c
mov rcx, qword [rsp + 0x30]
mov qword [rcx], rax
mov byte [rcx + 0x3c], 0xc
jmp 0x48e4e2