Function at 0x180027de0
Capabilities:
Check os version

Disassembly:
mov rax, rsp
mov qword [rax + 8], rbx
mov qword [rax + 0x10], rbp
mov qword [rax + 0x18], rsi
mov qword [rax + 0x20], rdi
push r12
sub rsp, 0x20
mov rax, qword [0x180035c60]
lea r12, [0x180000000]
mov dword [0x180034154], 0xa
lea rbx, [rax + r12 + 0x39756]
mov rcx, rbx
call qword [sym.imp.kERNEL32.dll_LoadLibraryA]
mov rdi, rax
test rax, rax
jne 0x180027e52
mov rax, qword [0x180035c60]
lea rbx, [rax + r12 + 0x39417]
mov rcx, rbx
call qword [sym.imp.kERNEL32.dll_LoadLibraryA]
mov rdi, rax
test rax, rax
jne 0x180027e52
lea esi, [rax + 0x7e]
jmp 0x18002800b
mov rax, qword [0x180035c60]
lea rcx, [rax + r12 + 0x399a2]
call qword [sym.imp.kERNEL32.dll_LoadLibraryA]
mov rax, qword [0x180035c60]
mov rcx, rdi
lea rdx, [rax + r12 + 0x3a160]
call qword [sym.imp.kERNEL32.dll_GetProcAddress]
mov rcx, rdi
mov qword [0x180035ba0], rax
mov rax, qword [0x180035c60]
lea rdx, [rax + r12 + 0x3a16c]
call qword [sym.imp.kERNEL32.dll_GetProcAddress]
mov r8, qword [0x180035c60]
mov ebp, 3
lea rcx, [0x180034ca0]
mov rdx, rbp
mov qword [0x180035ba8], rax
mov rax, qword [rcx]
mov qword [rax], rbx
mov rax, qword [rcx]
add rcx, 0x18
add qword [rax + 8], r8
sub rdx, 1
jne 0x180027ebb
cmp byte [0x180035c70], 6
jne 0x180027efc
cmp byte [0x180035c71], 2
jb 0x180027efc
lea rax, [0x180034cb0]
mov rcx, rbp
btr dword [rax], 9
add rax, 0x18
sub rcx, 1
jne 0x180027eee
mov rax, qword [0x180035bd0]
lea rbx, [0x180034c30]
lea r8, [0x180034ca0]
or dword [rax + 0x34], 1
mov rcx, rbx
mov r9d, ebp
mov edx, ebp
call fcn.180021298
mov rcx, qword [0x180035a68]
xor edx, edx
lea r8d, [rdx + 0x28]
mov esi, eax
call qword [sym.imp.kERNEL32.dll_HeapAlloc]
mov rdi, rax
test rax, rax
je 0x180027fd3
lea rcx, [0x180035f80]
mov qword [rax + 8], rax
mov qword [rax], rax
mov qword [rax + 0x18], rbx
mov dword [rax + 0x20], ebp
call qword [sym.imp.kERNEL32.dll_EnterCriticalSection]
call qword [sym.imp.kERNEL32.dll_GetVersion]
cmp al, 6
jb 0x180028028
mov rax, qword [0x180035c60]
lea rcx, [rax + r12 + 0x397f6]
lea rbx, [rax + r12 + 0x3a184]
call qword [sym.imp.kERNEL32.dll_GetModuleHandleA]
mov rdx, rbx
mov rcx, rax
call qword [sym.imp.kERNEL32.dll_GetProcAddress]
test rax, rax
je 0x180027fb4
lea r9, [rdi + 0x10]
lea rdx, [0x18001ebec]
mov r8, rdi
xor ecx, ecx
call rax
test eax, eax
je 0x180028096
mov rcx, qword [0x180035a68]
mov r8, rdi
xor edx, edx
call qword [sym.imp.kERNEL32.dll_HeapFree]
lea rcx, [0x180035f80]
call qword [sym.imp.kERNEL32.dll_LeaveCriticalSection]
mov rax, qword [0x180034c00]
mov qword [0x180035b80], rax
mov rax, qword [0x180034bb0]
mov qword [0x180035b88], rax
mov rax, qword [0x180034bd8]
mov qword [0x180035b90], rax
mov rax, qword [0x180034c28]
mov qword [0x180035b98], rax
mov rbx, qword [rsp + 0x30]
mov rbp, qword [rsp + 0x38]
mov rdi, qword [rsp + 0x48]
mov eax, esi
mov rsi, qword [rsp + 0x40]
add rsp, 0x20
pop r12
ret
cmp qword [0x180035d18], 0
jne 0x180028047
call fcn.18001f128
mov qword [0x180035d18], rax
test rax, rax
je 0x180027fb4
mov rcx, qword [0x180035a68]
xor edx, edx
lea r8d, [rdx + 0x20]
call qword [sym.imp.kERNEL32.dll_HeapAlloc]
test rax, rax
je 0x180027fb4
mov rdx, qword [0x180035d18]
mov qword [rax + 8], rax
mov qword [rax], rax
mov qword [rax + 0x18], rdi
lea rcx, [0x18001ebec]
mov qword [rax + 0x10], rcx
mov qword [rdi + 0x10], rax
mov rcx, qword [rdx + 8]
mov qword [rax + 8], rcx
mov qword [rax], rdx
mov qword [rcx], rax
mov qword [rdx + 8], rax
mov rax, qword [0x180035f68]
lea rcx, [0x180035f60]
mov qword [rdi + 8], rax
mov qword [rdi], rcx
mov qword [rax], rdi
mov qword [0x180035f68], rdi
jmp 0x180027fc6