Function at 0x140002410
Capabilities:
Get file version info
Identify system language via api

Disassembly:
push rbp
push rsi
push rdi
push r12
push r13
push r14
push r15
lea rbp, [rsp - 0xfb0]
mov eax, 0x10b0
call fcn.1400e2af0
sub rsp, rax
mov qword [rbp - 0x80], 0xfffffffffffffffe
mov qword [rsp + 0x1100], rbx
mov rax, qword [0x14017c430]
xor rax, rsp
mov qword [rbp + 0xfa0], rax
mov rbx, rdx
mov r13, rcx
mov qword [rsp + 0x40], 0x100
lea rax, [rbp + 0x3a0]
mov qword [rsp + 0x38], rax
mov qword [rsp + 0x30], 0x100
lea rax, [rbp + 0x1a0]
mov qword [rsp + 0x28], rax
mov qword [rsp + 0x20], 0x100
lea r9, [rbp + 0x5a0]
mov r8d, 3
lea rdx, [rbp - 0x78]
call fcn.1400d567c
mov r8d, 0x104
lea rdx, [rbp + 0x1a0]
lea rcx, [rbp - 0x70]
call fcn.1400d5930
lea rdx, [rsp + 0x64]
mov rcx, r13
call qword [sym.imp.VERSION.dll_GetFileVersionInfoSizeW]
mov r12d, eax
test eax, eax
jne 0x14000251a
mov edx, 0x400
lea rcx, [rbp - 0x70]
sub rcx, rbx
nop dword [rax + rax]
lea rax, [rdx + 0x7ffffbfe]
test rax, rax
je 0x140002503
movzx eax, word [rcx + rbx]
test ax, ax
je 0x140002503
mov word [rbx], ax
add rbx, 2
dec rdx
jne 0x1400024e0
jmp 0x140002508
test rdx, rdx
jne 0x14000250c
sub rbx, 2
xor r12d, r12d
mov word [rbx], r12w
xor eax, eax
jmp 0x1400027ff
call qword [sym.imp.KERNEL32.dll_GetProcessHeap]
mov rcx, rax
mov r8, r12
mov edx, 8
call qword [sym.imp.KERNEL32.dll_HeapAlloc]
mov rsi, rax
mov qword [rsp + 0x58], rax
mov r9, rax
mov r8d, r12d
mov edx, dword [rsp + 0x64]
mov rcx, r13
call qword [sym.imp.VERSION.dll_GetFileVersionInfoW]
test eax, eax
jne 0x1400025aa
call qword [sym.imp.KERNEL32.dll_GetProcessHeap]
mov rcx, rax
mov r8, rsi
xor edx, edx
call qword [sym.imp.KERNEL32.dll_HeapFree]
mov edx, 0x400
lea rcx, [rbp - 0x70]
sub rcx, rbx
lea rax, [rdx + 0x7ffffbfe]
test rax, rax
je 0x140002593
movzx eax, word [rcx + rbx]
test ax, ax
je 0x140002593
mov word [rbx], ax
add rbx, 2
dec rdx
jne 0x140002570
jmp 0x140002598
test rdx, rdx
jne 0x14000259c
sub rbx, 2
xor r12d, r12d
mov word [rbx], r12w
xor eax, eax
jmp 0x1400027ff
lea r9, [rsp + 0x60]
lea r8, [rsp + 0x70]
lea rdx, [0x140129ab8]
mov rcx, rsi
call qword [sym.imp.VERSION.dll_VerQueryValueW]
test eax, eax
jne 0x14000262a
call qword [sym.imp.KERNEL32.dll_GetProcessHeap]
mov rcx, rax
mov r8, rsi
xor edx, edx
call qword [sym.imp.KERNEL32.dll_HeapFree]
mov edx, 0x400
lea rcx, [rbp - 0x70]
sub rcx, rbx
nop dword [rax + rax]
lea rax, [rdx + 0x7ffffbfe]
test rax, rax
je 0x140002613
movzx eax, word [rcx + rbx]
test ax, ax
je 0x140002613
mov word [rbx], ax
add rbx, 2
dec rdx
jne 0x1400025f0
jmp 0x140002618
test rdx, rdx
jne 0x14000261c
sub rbx, 2
xor r12d, r12d
mov word [rbx], r12w
xor eax, eax
jmp 0x1400027ff
mov r15d, 0x409
xor r12d, r12d
movzx ecx, r12w
mov word [rsp + 0x50], cx
mov esi, r12d
test dword [rsp + 0x60], 0xfffffffc
jbe 0x1400026bb
mov edi, r12d
mov eax, 0x3ff
mov r13, qword [rsp + 0x70]
movzx r14d, word [rdi + r13]
and r14w, ax
call qword [sym.imp.KERNEL32.dll_GetUserDefaultLangID]
mov ecx, 0x3ff
and ax, cx
cmp r14w, ax
je 0x1400026a9
cmp r14w, 9
jne 0x14000268c
movzx r15d, word [rdi + r13]
movzx ecx, word [rdi + r13 + 2]
mov word [rsp + 0x50], cx
jmp 0x140002691
movzx ecx, word [rsp + 0x50]
inc esi
add rdi, 4
mov eax, dword [rsp + 0x60]
shr eax, 2
cmp esi, eax
mov eax, 0x3ff
jb 0x140002651
jmp 0x1400026bb
movsxd rcx, esi
mov rax, qword [rsp + 0x70]
movzx r15d, word [rax + rcx*4]
movzx ecx, word [rax + rcx*4 + 2]
movzx eax, cx
movzx r9d, r15w
mov dword [rsp + 0x20], eax
lea r8, str.StringFileInfo_04x_04xFileDescription
mov edx, 0x400
lea rcx, [rbp + 0x7a0]
call fcn.140002390
lea r9, [rsp + 0x68]
lea r8, [rsp + 0x78]
lea rdx, [rbp + 0x7a0]
mov r14, qword [rsp + 0x58]
mov rcx, r14
call qword [sym.imp.VERSION.dll_VerQueryValueW]
or r13, 0xffffffffffffffff
test eax, eax
jne 0x140002728
lea rsi, [rbp - 0x70]
mov qword [rsp + 0x78], rsi
xor eax, eax
mov rcx, r13
lea rdi, [rbp - 0x70]
repne scasw ax, word [rdi]
not rcx
dec rcx
add ecx, ecx
mov dword [rsp + 0x68], ecx
jmp 0x14000272d
mov rsi, qword [rsp + 0x78]
lea rcx, [0x14017bd30]
mov rax, qword [0x14017bd30]
call qword [rax + 0x18]
lea rdi, [rax + 0x18]
mov qword [rsp + 0x58], rdi
test rsi, rsi
je 0x140002788
test rsi, 0xffffffffffff0000
jne 0x140002776
movzx esi, si
mov ecx, esi
call fcn.140002830
test rax, rax
je 0x14000279d
mov r8d, esi
mov rdx, rax
lea rcx, [rsp + 0x58]
call fcn.1400029f0
jmp 0x140002798
xor eax, eax
mov rcx, r13
mov rdi, rsi
repne scasw ax, word [rdi]
not rcx
lea r12, [rcx - 1]
mov r8d, r12d
mov rdx, rsi
lea rcx, [rsp + 0x58]
call fcn.140002120
mov rdi, qword [rsp + 0x58]
movsxd rsi, dword [rdi - 0x10]
cmp dword [rdi - 8], 1
jle 0x1400027b9
mov edx, dword [rdi - 0x10]
lea rcx, [rsp + 0x58]
call fcn.140001fb0
mov rdi, qword [rsp + 0x58]
mov r8, rsi
add r8, r8
mov rdx, rdi
mov rcx, rbx
call fcn.140002310
call qword [sym.imp.KERNEL32.dll_GetProcessHeap]
mov rcx, rax
mov r8, r14
xor edx, edx
call qword [sym.imp.KERNEL32.dll_HeapFree]
nop
lea rdx, [rdi - 0x18]
lock xadd dword [rdx + 0x10], r13d
dec r13d
test r13d, r13d
jg 0x1400027fa
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + VariantCopy]
mov eax, 1
mov rcx, qword [rbp + 0xfa0]
xor rcx, rsp
call fcn.1400d4d90
mov rbx, qword [rsp + 0x1100]
add rsp, 0x10b0
pop r15
pop r14
pop r13
pop r12
pop rdi
pop rsi
pop rbp
ret