Function at 0x14003ecd0
Capabilities:
Encode data using xor

Disassembly:
push rbp
push rdi
push r12
push r14
push r15
lea rbp, [rsp - 0x3260]
mov eax, 0x3360
call fcn.140247340
sub rsp, rax
mov qword [rsp + 0x40], 0xfffffffffffffffe
mov qword [rsp + 0x3398], rbx
mov qword [rsp + 0x33a0], rsi
mov r14, rdx
mov rbx, rcx
add rcx, 0xda0
call fcn.140004820
lea r8, str.LPRSINFO
mov rdx, rbx
lea rcx, [rsp + 0x50]
call fcn.14003b830
nop
lea rax, [rbx + 0xd70]
mov qword [rbp + 0x3290], rax
lea rcx, [rbx + 0xd78]
call qword [sym.imp.KERNEL32.dll_EnterCriticalSection]
nop
mov rax, qword [rbx + 0xd50]
mov qword [rsp + 0x20], rax
xor r9d, r9d
xor r8d, r8d
mov rdx, r14
lea rcx, [rbp + 0x1a0]
call fcn.140054cb0
nop
xor esi, esi
mov qword [rsp + 0x30], rsi
mov qword [rsp + 0x28], rsi
mov r15d, 0x80
mov dword [rsp + 0x20], r15d
mov edx, 0x80000000
mov r9d, 3
mov r8d, r9d
lea rcx, [rbp + 0x1a0]
call fcn.1400557a0
test eax, eax
jne 0x14003ec6f
xor edx, edx
mov r8d, 0x2018
lea rcx, [rbp + 0x1240]
call fcn.140249b10
lea r9, [rsi - 1]
mov r8d, 0x2018
lea rdx, [rbp + 0x1240]
lea rcx, [rbp + 0x1a0]
call fcn.140055820
mov edi, eax
lea rcx, [rbp + 0x1a0]
call fcn.140055260
test edi, edi
je 0x14003eb32
mov rcx, qword [rbx + 0xd68]
test rcx, rcx
je 0x14003ea16
mov r8, qword [rcx]
lea rdx, str.Failed_To_Read_Rule_Set_File
call qword [r8 + reloc.OLEAUT32.dll_SafeArrayGetElement]
cmp edi, 3
jne 0x14003ea50
mov rcx, qword [rbx + 0xd68]
test rcx, rcx
je 0x14003ea34
mov rax, qword [rcx]
lea rdx, str.Memory_Failure
call qword [rax + reloc.OLEAUT32.dll_SafeArrayGetElement]
mov rcx, qword [rbx + 0xd68]
test rcx, rcx
je 0x14003ec89
lea rdx, str.CPLM::LPRSINFO___Unknown_Failure
jmp 0x14003ec82
cmp edi, 9
jne 0x14003ea6d
mov rcx, qword [rbx + 0xd68]
test rcx, rcx
je 0x14003ea34
mov rax, qword [rcx]
lea rdx, str.Empty_File
jmp 0x14003ea31
cmp edi, 8
jne 0x14003eacd
xor edx, edx
mov r8d, 0x100
lea rcx, [rbp - 0x60]
call fcn.140249b10
call qword [sym.imp.KERNEL32.dll_GetLastError]
mov r8d, eax
lea rdx, str.CPLM::LPRSINFO___Failed_To_Seek_Rule_Set____d
lea rcx, [rbp - 0x60]
call fcn.140006bc0
mov rcx, qword [rbx + 0xd68]
test rcx, rcx
je 0x14003ea34
mov rax, qword [rcx]
lea rdx, [rbp - 0x60]
call qword [rax + reloc.OLEAUT32.dll_SafeArrayGetElement]
mov rcx, qword [rbx + 0xd68]
test rcx, rcx
je 0x14003ea34
mov rax, qword [rcx]
mov rdx, r14
jmp 0x14003ea31
cmp edi, 4
jne 0x14003ea34
xor edx, edx
mov r8d, 0x100
lea rcx, [rbp - 0x60]
call fcn.140249b10
call qword [sym.imp.KERNEL32.dll_GetLastError]
mov r8d, eax
lea rdx, str.CPLM::LPRSINFO___Failed_To_Read_Rule_Set____d
lea rcx, [rbp - 0x60]
call fcn.140006bc0
mov rcx, qword [rbx + 0xd68]
test rcx, rcx
je 0x14003ec89
mov rax, qword [rcx]
lea rdx, [rbp - 0x60]
call qword [rax + reloc.OLEAUT32.dll_SafeArrayGetElement]
mov rcx, qword [rbx + 0xd68]
test rcx, rcx
je 0x14003ec89
mov rdx, r14
jmp 0x14003ec82
movdqa xmm2, xmmword [str.NNNNNNNNNNNNNNNNFILEDATAMD5]
movdqa xmm3, xmmword [0x14028cb60]
lea rax, [rbp + 0x1260]
nop dword [rax]
movdqu xmm0, xmmword [rax - 0x20]
pxor xmm0, xmm2
pxor xmm0, xmm3
movdqu xmmword [rax - 0x20], xmm0
movdqu xmm0, xmmword [rax - 0x10]
movdqa xmm1, xmm2
pxor xmm1, xmm0
pxor xmm1, xmm3
movdqu xmmword [rax - 0x10], xmm1
movdqu xmm0, xmmword [rax]
movdqa xmm1, xmm2
pxor xmm1, xmm0
pxor xmm1, xmm3
movdqu xmmword [rax], xmm1
movdqu xmm0, xmmword [rax + 0x10]
movdqa xmm1, xmm2
pxor xmm1, xmm0
pxor xmm1, xmm3
movdqu xmmword [rax + 0x10], xmm1
lea rax, [rax + 0x40]
sub r15, 1
jne 0x14003eb50
lea rax, [rbp + 0x3240]
mov ecx, reloc.OLEAUT32.dll_SafeArrayGetElement
nop dword [rax + rax]
xor byte [rax], 0x6d
lea rax, [rax + 1]
sub rcx, 1
jne 0x14003ebc0
xor edx, edx
mov r8d, 0x100
lea rcx, [rbp + 0xa0]
call fcn.140249b10
mov eax, dword [rbp + 0x1250]
mov dword [rsp + 0x28], eax
mov eax, dword [rbp + 0x1244]
mov dword [rsp + 0x20], eax
mov r9d, dword [rbp + 0x124c]
mov r8d, dword [rbp + 0x1240]
lea rdx, str._x___x___x___x
lea rcx, [rbp + 0xa0]
call fcn.140006bc0
mov rcx, qword [rbx + 0xd68]
test rcx, rcx
je 0x14003ec2f
mov rax, qword [rcx]
lea rdx, [rbp + 0xa0]
call qword [rax + reloc.OLEAUT32.dll_SafeArrayGetElement]
cmp dword [rbp + 0x1240], 0x696a6b69
jne 0x14003ec5a
cmp dword [rbp + 0x1244], 0x1312d02
jne 0x14003ec5a
mov eax, dword [rbp + 0x124c]
mov dword [rbx + 0xd44], eax
mov esi, 1
jmp 0x14003ec89
mov rcx, qword [rbx + 0xd68]
test rcx, rcx
je 0x14003ec89
lea rdx, str.CPLM::LPRSINFO___Invalid_Key_or_Version
jmp 0x14003ec82
mov rcx, qword [rbx + 0xd68]
test rcx, rcx
je 0x14003ec89
lea rdx, str.CPLM::LPRSINFO___Failed_To_Open_File
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_SafeArrayGetElement]
nop
lea rcx, [rbp + 0x1a0]
call fcn.140055000
nop
lea rcx, [rbx + 0xd78]
call qword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
nop
lea rcx, [rsp + 0x50]
call fcn.14003bdb0
mov eax, esi
lea r11, [rsp + 0x3360]
mov rbx, qword [r11 + 0x38]
mov rsi, qword [r11 + 0x40]
mov rsp, r11
pop r15
pop r14
pop r12
pop rdi
pop rbp
ret
jmp 0x14003e8e0