Function at 0x180001060
Capabilities:
Get file version info

Disassembly:
mov rax, rsp
mov qword [rax + 0x18], r8
mov qword [rax + 0x10], rdx
sub rsp, 0x158
cmp byte [0x180008248], 0
jne 0x1800012f6
mov qword [rax + 8], rbx
lea rcx, [0x180008220]
mov qword [rax - 8], rbp
mov qword [rax - 0x10], rsi
mov qword [rax - 0x18], rdi
call qword [sym.imp.KERNEL32.dll_InitializeCriticalSection]
lea rcx, [0x180008220]
call qword [sym.imp.KERNEL32.dll_EnterCriticalSection]
xor ebp, ebp
mov byte [0x180008248], 1
mov ebx, ebp
xor eax, eax
mov edi, 1
lock cmpxchg dword [0x180008668], edi
je 0x1800010e6
cmp rbx, 0x20
jae 0x1800010cf
xor ecx, ecx
jmp 0x1800010d1
mov ecx, edi
call qword [sym.imp.KERNEL32.dll_Sleep]
inc rbx
xor eax, eax
lock cmpxchg dword [0x180008668], edi
jne 0x1800010c5
cmp qword [0x180008a88], rbp
jne 0x180001103
xor r8d, r8d
xor edx, edx
xor ecx, ecx
call qword [sym.imp.KERNEL32.dll_HeapCreate]
mov qword [0x180008a88], rax
mov eax, ebp
lea rcx, [rsp + 0x30]
xchg dword [0x180008668], eax
xor edx, edx
mov r8d, 0x104
movzx ebx, bp
call sub.msvcrt.dll_memset
mov r8d, 0x104
lea rdx, [rsp + 0x30]
xor ecx, ecx
call qword [sym.imp.KERNEL32.dll_GetModuleFileNameA]
xor edx, edx
lea rcx, [rsp + 0x30]
call qword [sym.imp.VERSION.dll_GetFileVersionInfoSizeA]
mov esi, eax
test eax, eax
je 0x180001201
mov ecx, esi
call qword [sym.imp.msvcrt.dll_void____ptr64___cdecl_operator_new_unsigned_long_long_unsigned___int64__]
mov rdi, rax
test rax, rax
je 0x180001201
mov r9, rax
lea rcx, [rsp + 0x30]
mov r8d, esi
xor edx, edx
call qword [sym.imp.VERSION.dll_GetFileVersionInfoA]
test eax, eax
je 0x1800011b4
lea r9, [rsp + 0x170]
mov qword [rsp + 0x168], rbp
lea r8, [rsp + 0x168]
mov dword [rsp + 0x170], ebp
lea rdx, [0x180006270]
mov rcx, rdi
call qword [sym.imp.VERSION.dll_VerQueryValueA]
test eax, eax
je 0x1800011b4
mov rax, qword [rsp + 0x168]
movzx ebx, word [rax + 0xa]
mov rcx, rdi
call qword [sym.imp.msvcrt.dll_void___cdecl_operator_delete_void____ptr64_]
cmp bx, 0x10
jne 0x1800011e7
call fcn.180001dc0
test eax, eax
jne 0x1800012c9
call fcn.1800017a0
test eax, eax
jne 0x1800012c9
call fcn.1800023d0
jmp 0x1800012c9
cmp bx, 0xf
jne 0x1800011f7
call fcn.180001dc0
jmp 0x1800012c9
cmp bx, 0xe
je 0x1800012c4
call fcn.1800023d0
test eax, eax
jne 0x1800012c9
call fcn.180001dc0
test eax, eax
jne 0x1800012c9
call fcn.1800017a0
test eax, eax
jne 0x1800012c9
mov rcx, qword [0x18000baa8]
test rcx, rcx
jne 0x18000125a
lea ecx, [rax + 0x10]
call qword [sym.imp.msvcrt.dll_void____ptr64___cdecl_operator_new_unsigned_long_long_unsigned___int64__]
mov rcx, rax
test rax, rax
je 0x180001274
mov qword [rax + 8], rbp
lea rax, [0x180006530]
mov qword [rcx], rax
mov qword [0x18000baa8], rcx
mov rax, qword [rcx]
mov rdx, qword [rax + 8]
lea rax, [fcn.180002ab0]
cmp rdx, rax
jne 0x18000127d
call fcn.180002ab0
jmp 0x18000127f
mov qword [0x18000baa8], rbp
jmp 0x1800012c4
call rdx
test eax, eax
je 0x1800012c4
mov rcx, qword [0x18000baa8]
lea r8, [0x180008880]
lea rdx, [0x180008250]
mov rax, qword [rcx]
mov r9, qword [rax + 0x18]
lea rax, [0x180002cf0]
cmp r9, rax
jne 0x1800012bd
lea r9, str.HOOK_D3D9
mov dword [rsp + 0x20], ebp
call fcn.180001610
jmp 0x1800012c0
call r9
test eax, eax
jne 0x1800012c9
call fcn.1800030f0
lea rcx, [0x180008220]
call qword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
mov rdi, qword [rsp + 0x140]
mov rsi, qword [rsp + 0x148]
mov rbp, qword [rsp + 0x150]
mov rbx, qword [rsp + 0x160]
add rsp, 0x158
ret