Function at 0x140003bbd
Capabilities:
Encrypt data using rc4 prga

Disassembly:
push rbp
sub rsp, 0x120
lea rbp, [rsp + 0x80]
mov qword [rbp + 0xb0], rcx
mov dword [rbp + 0xb8], edx
mov qword [rbp + 0xc0], r8
mov dword [rbp + 0x24], 0x365f7227
cmp qword [rbp + 0xc0], 0
je 0x140003c4f
movabs rax, 0xe2442d182e85f4c1
cmp qword [rbp + 0xc0], rax
jne 0x140004018
call fcn.1400c881f
lea rax, [rbp - 0x20]
mov edx, 1
mov rcx, rax
mov rax, qword [sym.imp.ole32.dll_OleGetIconOfFile]
call rax
mov qword [rbp - 0x38], rax
mov dword [rbp + 0xb8], 0xd381fc9e
lea rax, [rbp - 0x38]
mov edx, 0xe2
mov rcx, rax
mov rax, qword [sym.imp.ole32.dll_CoTaskMemRealloc]
call rax
mov qword [rbp - 0x30], rax
jmp 0x140004018
mov eax, dword [rbp + 0xb8]
mov dword [rbp - 0x24], eax
mov eax, dword [0x1400dd310]
add eax, 0x21df7795
mov dword [rbp + 0x24], eax
mov eax, dword [rbp + 0x24]
lea edx, [rax - 0x5d620f76]
mov eax, dword [0x1400dd310]
cmp edx, eax
jg 0x140003f0d
mov word [rbp + 0x4e], 0xb52
mov byte [rbp + 0x23], 0x26
mov eax, dword [rbp - 0x24]
mov edx, 0x3ed70f8
mov ecx, edx
shl eax, cl
mov edx, eax
mov eax, dword [rbp + 0xb8]
cmp edx, eax
jb 0x140003d43
mov rax, qword [rbp + 0xb0]
mov qword [rbp + 0x10], rax
mov eax, dword [rbp - 0x24]
test eax, eax
jne 0x140003d2d
mov eax, dword [rbp + 0x24]
mov dword [rbp + 0x84], eax
lea rax, [rbp - 0x24]
mov qword [rbp + 0x28], rax
movzx eax, word [rbp + 0x4e]
mov word [rbp + 0x8e], ax
movzx eax, byte [rbp + 0x23]
movsx eax, al
cmp eax, 0x26
jne 0x140003d19
movzx eax, word [rbp + 0x4e]
movzx eax, ax
cmp eax, 0xd98
jne 0x140003d0b
mov rax, qword [rbp + 0x28]
mov ecx, dword [rax]
mov edx, dword [rbp + 0xb8]
mov rax, qword [rbp + 0x28]
add edx, ecx
mov dword [rax], edx
movzx eax, byte [rbp + 0x23]
sub eax, 0x6c
mov byte [rbp + 0x23], al
jmp 0x140003d17
lea rax, [rbp + 0xb8]
mov qword [rbp + 0x68], rax
nop
jmp 0x140003d2b
mov edx, dword [rbp - 0x24]
mov eax, dword [rbp + 0xb8]
and edx, eax
mov rax, qword [rbp + 0x68]
mov dword [rax], edx
nop
jmp 0x140003d43
mov rdx, qword [rbp + 0xb0]
mov rax, qword [rbp + 0xc0]
add rax, rdx
mov qword [rbp + 0x10], rax
nop
mov byte [rbp - 1], 0xbb
lea rax, [rbp + 0x4e]
mov qword [rbp + 0x50], rax
mov eax, dword [rbp + 0x24]
sub eax, dword [rbp + 0x84]
mov edx, eax
mov eax, dword [0x1400dd310]
cmp edx, eax
jg 0x140003dac
call fcn.1400c881f
lea r8, [rbp + 0x50]
lea rcx, [rbp + 0x28]
lea rax, [rbp - 0x24]
lea rdx, [rbp - 0x3c]
mov qword [rsp + 0x20], rdx
mov r9, r8
mov r8, rcx
mov edx, 0x56
mov rcx, rax
mov rax, qword [sym.imp.ole32.dll_CoInstall]
call rax
mov dword [rbp + 0x64], eax
mov rax, qword [rbp + 0x50]
movzx edx, word [rax]
movzx eax, word [rbp + 0x4e]
add eax, edx
mov word [rbp + 0x8e], ax
cmp qword [rbp + 0xc0], 0
je 0x140003ddd
movabs rax, 0xf4d8c2e2d8c6fbaf
cmp qword [rbp + 0xc0], rax
jne 0x140003e39
movzx edx, word [rbp + 0x4e]
mov rax, qword [rbp + 0x50]
sub dx, word [rbp + 0x8e]
mov word [rax], dx
jmp 0x140003e39
lea rax, [rbp + 0x24]
mov qword [rbp + 0x98], rax
mov eax, dword [rbp - 0x24]
test eax, eax
jne 0x140003e1b
mov eax, dword [rbp + 0xb8]
mov dword [rbp + 0x88], eax
lea rax, [rbp + 0x10]
mov qword [rbp + 0x90], rax
mov rax, qword [rbp + 0x50]
movzx eax, word [rax]
mov word [rbp + 0x62], ax
lea rax, [rbp - 1]
mov qword [rbp + 0x70], rax
jmp 0x140003e30
mov rax, qword [rbp + 0x98]
mov edx, dword [rax]
mov eax, dword [rbp + 0x24]
or eax, edx
mov dword [rbp + 0x84], eax
nop
lea rax, [rbp + 0x23]
mov qword [rbp + 0x78], rax
nop
mov rax, qword [rbp + 0x70]
movzx eax, byte [rax]
movzx eax, al
mov edx, 0xe6
mov ecx, edx
sar eax, cl
mov edx, eax
movzx eax, byte [rbp - 1]
movzx eax, al
cmp edx, eax
jle 0x140003ed5
mov rax, qword [rbp + 0x70]
movzx eax, byte [rax]
xor eax, 0xffffffc3
mov byte [rbp - 1], al
mov rax, qword [sym.imp.ole32.dll_CoTestCancel]
call rax
mov dword [rbp + 0x1c], eax
movzx eax, byte [rbp - 1]
movzx eax, al
cmp eax, 7
jne 0x140003ebf
mov eax, dword [rbp + 0x24]
and eax, dword [rbp + 0x84]
mov edx, eax
mov rax, qword [rbp + 0x98]
mov dword [rax], edx
mov r8, qword [rbp + 0x10]
mov rax, qword [rbp + 0x98]
mov edx, dword [rax]
mov r9, qword [rbp + 0xb0]
mov eax, dword [rbp + 0x84]
mov ecx, dword [rbp + 0x88]
mov dword [rsp + 0x20], ecx
mov ecx, eax
call fcn.1400033f0
jmp 0x140003f0d
mov rax, qword [rbp + 0x98]
mov edx, dword [rax]
mov eax, dword [rbp + 0x24]
add eax, edx
mov dword [rbp + 0x84], eax
jmp 0x140003f0d
mov rax, qword [rbp + 0x78]
movzx eax, byte [rax]
movsx eax, al
mov edx, 0x21
mov ecx, edx
shl eax, cl
mov edx, eax
movzx eax, byte [rbp + 0x23]
movsx eax, al
cmp edx, eax
jge 0x140003f0d
mov rax, qword [rbp + 0x10]
sub rax, qword [rbp + 0xb0]
mov rdx, rax
mov rax, qword [rbp + 0x90]
mov qword [rax], rdx
mov edx, dword [rbp + 0xb8]
mov rcx, qword [rbp + 0xb0]
mov rax, qword [rbp + 0xc0]
mov r8, rcx
mov rcx, rax
call fcn.140003bbd
movabs rax, 0xcbe271282009226
and rax, qword [rbp + 0xb0]
cmp qword [rbp + 0xc0], rax
jae 0x140003ffe
mov eax, dword [rbp + 0x24]
cmp eax, 0x7ca7e049
jne 0x140003fee
lea r8, [rbp + 0x1c]
lea rdx, [rbp - 0x24]
lea rax, [rbp - 0x20]
lea rcx, [rbp + 0x1c]
mov qword [rsp + 0x30], rcx
mov dword [rsp + 0x28], 0x26
lea rcx, [rbp - 0x24]
mov qword [rsp + 0x20], rcx
mov r9d, 0x7c
mov rcx, rax
mov rax, qword [sym.imp.ole32.dll_CoGetInstanceFromIStorage]
call rax
mov dword [rbp + 0x5c], eax
mov eax, dword [rbp + 0xb8]
shr eax, 0x12
mov dword [rbp - 0x24], eax
mov eax, dword [rbp + 0x24]
cmp eax, 0xc891bbd
je 0x140003fd4
cmp eax, 0x577d9ddc
jne 0x140004016
mov ecx, dword [rbp - 0x24]
mov edx, dword [rbp + 0x24]
mov eax, dword [rbp + 0x24]
mov r9, qword [rbp + 0xb0]
mov r8, qword [rbp + 0xc0]
mov dword [rsp + 0x20], ecx
mov ecx, eax
call fcn.1400033f0
jmp 0x140003fec
lea rdx, [rbp - 0x30]
lea rax, [rbp + 0x30]
mov rcx, rax
mov rax, qword [sym.imp.ole32.dll_OleGetAutoConvert]
call rax
mov dword [rbp + 0x64], eax
nop
jmp 0x140004016
mov eax, dword [rbp + 0xb8]
or eax, 0xdc02288c
mov dword [rbp - 0x24], eax
jmp 0x140004017
lea rdx, [rbp + 0x24]
mov rax, rbp
mov rcx, rax
mov rax, qword [sym.imp.ole32.dll_StringFromCLSID]
call rax
mov dword [rbp + 0x64], eax
jmp 0x140004017
nop
nop
lea rax, [rbp + 0x1c]
mov rcx, rax
mov rax, qword [sym.imp.ole32.dll_CoFileTimeNow]
call rax
mov dword [rbp + 0x1c], eax
mov dword [rbp + 0xb8], 0x108600f9
call fcn.1400c881f
lea rax, [rbp - 0x20]
mov rdx, rax
lea rax, str.Archbishops_Unassailed
mov rcx, rax
mov rax, qword [sym.imp.ole32.dll_CLSIDFromProgIDEx]
call rax
mov dword [rbp - 0x3c], eax
mov rax, qword [rbp + 0xc0]
mov qword [rbp + 0xb0], rax
mov eax, dword [0x1400dd310]
add rsp, 0x120
pop rbp
ret