Function at 0x14009cf50
Capabilities:
Get file version info

Disassembly:
mov rax, rsp
push rsi
push r15
sub rsp, 0x148
xor r15d, r15d
mov rsi, rcx
mov rcx, qword [rcx + 0x100]
cmp qword [0x140185f28], rcx
mov dword [rax + 8], r15d
mov qword [rax + 0x20], r15
mov dword [rax + 0x18], r15d
jne 0x14009cf96
mov eax, edx
lea rcx, [0x140185f20]
mov eax, dword [rcx + rax*4]
add rsp, 0x148
pop r15
pop rsi
ret
mov qword [rsp + 0x130], r14
movzx r14d, cx
mov qword [0x140185f28], rcx
cmp dword [rsi + 0x140], r15d
je 0x14009cfde
cmp r14d, 0x404
jne 0x14009cfde
mov r14, qword [rsp + 0x130]
mov eax, 0x7000404
mov qword [0x140185f20], 0x7000404
add rsp, 0x148
pop r15
pop rsi
ret
mov qword [rsp + 0x168], rbx
mov eax, 0xe0080404
mov qword [rsp + 0x140], rbp
mov qword [rsp + 0x138], rdi
cmp rcx, rax
je 0x14009d02c
mov eax, 0xe0090404
cmp rcx, rax
je 0x14009d02c
mov eax, 0xe00a0404
cmp rcx, rax
je 0x14009d02c
mov eax, 0xe00b0404
cmp rcx, rax
je 0x14009d02c
mov eax, 0xe00e0804
cmp rcx, rax
jne 0x14009d238
mov r8d, 0xff
lea rdx, [rsp + 0x30]
call qword [sym.imp.IMM32.dll_ImmGetIMEFileNameA]
test eax, eax
je 0x14009d238
cmp qword [rsi + 0x110], r15
jne 0x14009d238
mov ebx, 0xffffffff
lea rax, str.TINTLGNT.IME
mov dword [rsp + 0x28], ebx
lea r8, [rsp + 0x30]
mov r9d, ebx
mov qword [rsp + 0x20], rax
mov ecx, 0x409
lea edx, [rbx + 2]
call qword [sym.imp.KERNEL32.dll_CompareStringA]
cmp eax, 2
je 0x14009d13a
lea rax, str.CINTLGNT.IME
mov dword [rsp + 0x28], ebx
mov r9d, ebx
mov qword [rsp + 0x20], rax
lea r8, [rsp + 0x30]
mov ecx, 0x409
lea edx, [rbx + 2]
call qword [sym.imp.KERNEL32.dll_CompareStringA]
cmp eax, 2
je 0x14009d13a
lea rax, str.MSTCIPHA.IME
mov dword [rsp + 0x28], ebx
mov r9d, ebx
mov qword [rsp + 0x20], rax
lea r8, [rsp + 0x30]
mov ecx, 0x409
lea edx, [rbx + 2]
call qword [sym.imp.KERNEL32.dll_CompareStringA]
cmp eax, 2
je 0x14009d13a
lea rax, str.PINTLGNT.IME
mov dword [rsp + 0x28], ebx
mov r9d, ebx
mov qword [rsp + 0x20], rax
lea r8, [rsp + 0x30]
mov ecx, 0x409
lea edx, [rbx + 2]
call qword [sym.imp.KERNEL32.dll_CompareStringA]
cmp eax, 2
je 0x14009d13a
lea rax, str.MSSCIPYA.IME
mov dword [rsp + 0x28], ebx
mov r9d, ebx
mov qword [rsp + 0x20], rax
lea r8, [rsp + 0x30]
mov ecx, 0x409
lea edx, [rbx + 2]
call qword [sym.imp.KERNEL32.dll_CompareStringA]
cmp eax, 2
jne 0x14009d238
lea rdx, [rsp + 0x160]
lea rcx, [rsp + 0x30]
call qword [sym.imp.VERSION.dll_GetFileVersionInfoSizeA]
mov ebp, eax
test eax, eax
je 0x14009d238
mov ecx, ebp
call fcn.140061d30
mov rdi, rax
test rax, rax
je 0x14009d238
mov edx, dword [rsp + 0x160]
lea rcx, [rsp + 0x30]
mov r9, rax
mov r8d, ebp
call qword [sym.imp.VERSION.dll_GetFileVersionInfoA]
test eax, eax
je 0x14009d227
lea r9, [rsp + 0x170]
mov rcx, rdi
lea r8, [rsp + 0x178]
lea rdx, [0x14015c958]
call qword [sym.imp.VERSION.dll_VerQueryValueA]
test eax, eax
je 0x14009d227
mov rdx, qword [rsp + 0x178]
mov eax, dword [rdx + 8]
movzx ecx, al
and eax, 0xffff0000
shl ecx, 8
or ecx, eax
shl ecx, 8
cmp qword [rsi + 0x110], r15
jne 0x14009d28d
cmp r14d, 0x404
jne 0x14009d26c
cmp ecx, 0x4020000
je 0x14009d28d
cmp ecx, 0x4030000
je 0x14009d28d
cmp ecx, 0x4040000
je 0x14009d28d
cmp ecx, 0x5000000
je 0x14009d28d
cmp ecx, 0x5010000
je 0x14009d28d
cmp ecx, 0x5020000
je 0x14009d28d
cmp ecx, 0x6000000
je 0x14009d28d
mov rcx, rdi
call qword [fcn.1400614b0]
lock xadd dword [0x140181b40], ebx
mov qword [0x140185f20], r15
xor eax, eax
mov rdi, qword [rsp + 0x138]
mov rbp, qword [rsp + 0x140]
mov rbx, qword [rsp + 0x168]
mov r14, qword [rsp + 0x130]
add rsp, 0x148
pop r15
pop rsi
ret
cmp r14d, 0x804
jne 0x14009d227
cmp ecx, 0x4010000
je 0x14009d28d
cmp ecx, 0x4020000
je 0x14009d28d
cmp ecx, 0x5030000
jne 0x14009d227
or ecx, r14d
mov dword [0x140185f20], ecx
mov rcx, rdi
mov eax, dword [rdx + 0xc]
mov dword [0x140185f24], eax
call qword [fcn.1400614b0]
lock xadd dword [0x140181b40], ebx
mov eax, dword [0x140185f20]
jmp 0x14009d241