Function at 0x451070
Capabilities:
Get file version info

Disassembly:
push 0xffffffffffffffff
push 0x4714ad
mov eax, dword fs:[0]
push eax
sub esp, 0x2c4
mov eax, dword [0x48e4f0]
xor eax, esp
mov dword [esp + 0x2c0], eax
push ebx
push ebp
push esi
push edi
mov eax, dword [0x48e4f0]
xor eax, esp
push eax
lea eax, [esp + 0x2d8]
mov dword fs:[0], eax
push 0x10e
xor ebp, ebp
lea eax, [esp + 0xbc]
push eax
mov dword [esp + 0x2e8], ebp
mov edi, ecx
push ebp
mov dword [esp + 0x20], edi
mov dword [esp + 0x34], ebp
call dword [sym.imp.KERNEL32.dll_GetModuleFileNameW]
lea eax, [esp + 0xb8]
lea edx, [eax + 2]
lea esp, [esp]
mov cx, word [eax]
add eax, 2
cmp cx, bp
jne 0x4510e0
sub eax, edx
sar eax, 1
xor ecx, ecx
inc eax
mov edx, 2
mul edx
seto cl
neg ecx
or ecx, eax
push ecx
call fcn.004576a9
mov esi, eax
lea eax, [esp + 0xbc]
mov edx, esi
mov ecx, eax
add esp, 4
mov dword [esp + 0x1c], esi
sub edx, ecx
lea esp, [esp]
movzx ecx, word [eax]
mov word [edx + eax], cx
add eax, 2
cmp cx, bp
jne 0x451120
lea edx, [esp + 0x2c]
push edx
push esi
mov dword [esp + 0x34], ebp
call dword [sym.imp.VERSION.dll_GetFileVersionInfoSizeW]
mov esi, eax
push esi
call fcn.004576a9
add esp, 4
mov ebx, eax
mov eax, dword [esp + 0x1c]
push ebx
push esi
push ebp
push eax
mov dword [esp + 0x30], ebx
call dword [sym.imp.VERSION.dll_GetFileVersionInfoW]
xor ecx, ecx
mov dword [esp + 0x4c], 7
mov dword [esp + 0x48], ebp
mov word [esp + 0x38], cx
lea edx, [esp + 0x34]
push edx
lea eax, [esp + 0x28]
push eax
push 0x4857b8
mov dword [esp + 0x2ec], 1
mov esi, dword [sym.imp.VERSION.dll_VerQueryValueW]
push ebx
call esi
test eax, eax
je 0x4511de
mov eax, dword [esp + 0x24]
movzx ecx, word [eax + 2]
movzx edx, word [eax]
push ecx
push edx
lea eax, [esp + 0x5c]
push str.StringFileInfo_04x_04xProductName
push eax
call fcn.0045a4b8
add esp, 0x10
lea ecx, [esp + 0x30]
push ecx
lea edx, [esp + 0x1c]
push edx
lea eax, [esp + 0x5c]
push eax
push ebx
call esi
test eax, eax
je 0x4511de
mov ecx, dword [esp + 0x18]
push ecx
lea ebx, [esp + 0x3c]
call fcn.00406760
add esp, 4
xor edx, edx
mov dword [edi + 0x14], 7
mov dword [edi + 0x10], ebp
mov word [edi], dx
mov edx, dword [esp + 0x20]
lea eax, [esp + 0x30]
push eax
lea ecx, [esp + 0x1c]
push ecx
push 0x47c9bc
push edx
mov dword [esp + 0x38], 1
call esi
test eax, eax
je 0x451408
mov ecx, dword [esp + 0x18]
mov esi, dword [ecx + 8]
test esi, 0xffff0000
je 0x451302
mov eax, dword [ecx + 0xc]
mov ecx, dword [ecx + 8]
mov esi, eax
and esi, 0xffff
je 0x4512a6
test eax, 0xffff0000
je 0x451279
mov ebx, dword [esp + 0x38]
mov edx, eax
shr edx, 0x10
add edx, 0x60
movzx esi, cx
shr ecx, 0x10
cmp dword [esp + 0x4c], 8
movzx edx, dx
movzx eax, ax
jae 0x451260
lea ebx, [esp + 0x38]
push eax
push edx
push esi
push ecx
push ebx
push str._s_version__d._d_c_test_release__d_
mov edx, edi
call fcn.0041ee70
add esp, 0x18
jmp 0x451408
mov edx, dword [esp + 0x38]
movzx eax, cx
shr ecx, 0x10
cmp dword [esp + 0x4c], 8
jae 0x45128e
lea edx, [esp + 0x38]
push esi
push eax
push ecx
push edx
push str._s_version__d._d_test_release__d
mov edx, edi
call fcn.0041ee70
add esp, 0x14
jmp 0x451408
shr eax, 0x10
cmp eax, ebp
je 0x4512e0
mov esi, dword [esp + 0x38]
add eax, 0x60
movzx edx, cx
shr ecx, 0x10
cmp dword [esp + 0x4c], 8
movzx eax, ax
jae 0x4512c8
lea esi, [esp + 0x38]
push eax
push edx
push ecx
push esi
push str._s_version__d._d_c_final
mov edx, edi
call fcn.0041ee70
add esp, 0x14
jmp 0x451408
mov edx, dword [esp + 0x38]
movzx eax, cx
shr ecx, 0x10
cmp dword [esp + 0x4c], 8
jae 0x4512f5
lea edx, [esp + 0x38]
push eax
push ecx
push edx
push str._s_version__d._d_final
jmp 0x4513fe
mov edi, dword [ecx + 0xc]
mov ebx, edi
and ebx, 0xffff
xor edx, edx
mov eax, ebx
mov ebp, 0x64
div ebp
test eax, eax
je 0x4513a6
mov ecx, edi
test edx, edx
je 0x451368
mov eax, ecx
and eax, 0xffff
xor edx, edx
mov edi, ebp
div edi
mov edi, dword [esp + 0x38]
shr ecx, 0x10
movzx esi, si
add eax, 0x60
cmp dword [esp + 0x4c], 8
jae 0x45134b
lea edi, [esp + 0x38]
push edx
push eax
push ecx
push esi
push edi
mov edi, dword [esp + 0x28]
push str._s_version_0._d._d_c_beta_test_release__d
mov edx, edi
call fcn.0041ee70
add esp, 0x18
jmp 0x451408
movzx edx, cx
mov eax, 0x51eb851f
mul edx
shr edx, 5
add edx, 0x60
shr ecx, 0x10
cmp dword [esp + 0x4c], 8
movzx eax, si
mov esi, dword [esp + 0x38]
jae 0x45138d
lea esi, [esp + 0x38]
mov edi, dword [esp + 0x14]
push edx
push ecx
push eax
push esi
push str._s_version_0._d._d_c_beta
mov edx, edi
call fcn.0041ee70
add esp, 0x14
jmp 0x451408
test ebx, ebx
je 0x4513dd
mov ecx, edi
movzx eax, cx
shr ecx, 0x10
cmp dword [esp + 0x4c], 8
movzx edx, si
mov esi, dword [esp + 0x38]
jae 0x4513c4
lea esi, [esp + 0x38]
mov edi, dword [esp + 0x14]
push eax
push ecx
push edx
push esi
push str._s_version_0._d._d_beta_test_release__d
mov edx, edi
call fcn.0041ee70
add esp, 0x14
jmp 0x451408
mov ecx, dword [esp + 0x38]
shr edi, 0x10
cmp dword [esp + 0x4c], 8
movzx eax, si
jae 0x4513f2
lea ecx, [esp + 0x38]
push edi
mov edi, dword [esp + 0x18]
push eax
push ecx
push str._s_version_0._d._d_beta
mov edx, edi
call fcn.0041ee70
add esp, 0x10
mov eax, dword [esp + 0x1c]
push eax
call fcn.00459522
mov ecx, dword [esp + 0x24]
push ecx
call fcn.00459522
add esp, 8
cmp dword [esp + 0x4c], 8
jb 0x451433
mov edx, dword [esp + 0x38]
push edx
call fcn.004593e2
add esp, 4
mov eax, edi
mov ecx, dword [esp + 0x2d8]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebp
pop ebx
mov ecx, dword [esp + 0x2c0]
xor ecx, esp
call fcn.004593ed
add esp, 0x2d0
ret