Function at 0x431560
Capabilities:
Get file version info

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
sub esp, 0xa24
mov eax, dword [0x451050]
xor eax, esp
mov dword [esp + 0xa20], eax
mov eax, dword [ebp + 8]
push ebx
push esi
push edi
mov esi, edx
test ecx, ecx
jne 0x4319b7
cmp eax, 0xc1e
jg 0x4317fa
je 0x4317dc
sub eax, 1
je 0x4315b4
sub eax, 1
je 0x4317dc
sub eax, 0xc1b
jne 0x431a13
xor eax, eax
push 0x1fe
push eax
lea ecx, [esp + 0x32]
push ecx
mov word [esp + 0x34], ax
call fcn.00437610
mov edi, dword [sym.imp.USER32.dll_GetDlgItem]
add esp, 0xc
push 0xc7e
lea edx, [esp + 0x2c]
push esi
mov dword [esp + 0x20], 0x10
mov dword [esp + 0x24], 0x447354
mov dword [esp + 0x28], edx
mov dword [esp + 0x2c], 3
call edi
push eax
call dword [sym.imp.USER32.dll_GetWindowTextLengthW]
test eax, eax
jg 0x431678
lea eax, [esp + 0x28]
push eax
push 0x7d30
mov ebx, 0x100
call fcn.0040af30
add esp, 8
test dword [0x459f88], 0x10000000
je 0x43165a
lea ecx, [esp + 0x18]
push ecx
push 0
push 0x1503
push 0xc7e
push esi
call edi
push eax
call dword [sym.imp.USER32.dll_SendMessageW]
pop edi
pop esi
pop ebx
mov ecx, dword [esp + 0xa20]
xor ecx, esp
call fcn.00433c32
mov esp, ebp
pop ebp
ret
lea edi, [esp + 0x28]
call fcn.004088d0
pop edi
pop esi
pop ebx
mov ecx, dword [esp + 0xa20]
xor ecx, esp
call fcn.00433c32
mov esp, ebp
pop ebp
ret
mov ebx, dword [sym.imp.USER32.dll_GetDlgItemTextW]
push 0x400
lea edx, [esp + 0x22c]
push edx
push 0xc7e
push esi
call ebx
mov eax, dword [0x45a3a4]
add eax, 0xc
push eax
lea eax, [esp + 0x22c]
call fcn.004034d0
push 0x400
lea ecx, [esp + 0x22c]
push ecx
push 0xc7d
push esi
call ebx
mov edx, dword [0x45a3a4]
add edx, 0x28
push edx
lea eax, [esp + 0x22c]
call fcn.004034d0
push 0x400
lea eax, [esp + 0x22c]
push eax
push 0xc7c
push esi
call ebx
mov ecx, dword [0x45a3a4]
add ecx, 0x44
push ecx
lea eax, [esp + 0x22c]
call fcn.004034d0
push 0x400
lea edx, [esp + 0x22c]
push edx
push 0xc7b
push esi
call ebx
mov eax, dword [0x45a3a4]
add eax, 0x7c
push eax
lea eax, [esp + 0x22c]
call fcn.004034d0
push 0x400
lea ecx, [esp + 0x22c]
push ecx
push 0xc7a
push esi
call ebx
mov edx, dword [0x45a3a4]
add edx, 0x98
push edx
lea eax, [esp + 0x22c]
call fcn.004034d0
push 0
push 0
push 0x147
push 0xc79
push esi
call edi
push eax
call dword [sym.imp.USER32.dll_SendMessageW]
mov edx, dword [0x45a3a8]
mov edi, dword [sym.imp.USER32.dll_IsDlgButtonChecked]
mov ecx, eax
mov eax, dword [0x45a3a4]
push 0xc2b
inc ecx
push esi
mov dword [eax + 4], ecx
mov dword [eax + 8], edx
mov dword [eax], 0
call edi
cmp eax, 1
jne 0x4317a6
mov eax, dword [0x45a3a4]
or dword [eax], 0x80000000
push 0xc2c
push esi
call edi
cmp eax, 1
jne 0x4317be
mov eax, dword [0x45a3a4]
or dword [eax], 0x40000000
push 1
push esi
call dword [sym.imp.USER32.dll_EndDialog]
pop edi
pop esi
pop ebx
mov ecx, dword [esp + 0xa20]
xor ecx, esp
call fcn.00433c32
mov esp, ebp
pop ebp
ret
push 0
push esi
call dword [sym.imp.USER32.dll_EndDialog]
pop edi
pop esi
pop ebx
mov ecx, dword [esp + 0xa20]
xor ecx, esp
call fcn.00433c32
mov esp, ebp
pop ebp
ret
sub eax, 0xc29
je 0x4318ca
sub eax, 9
je 0x43185c
sub eax, 3
jne 0x431a13
mov edx, dword [0x459f78]
mov eax, dword [0x45a3a8]
lea ecx, [esp + 0xc]
push ecx
push 0x42adb0
push esi
push 0x6b
push edx
mov dword [esp + 0x20], eax
call dword [sym.imp.USER32.dll_DialogBoxParamW]
test eax, eax
je 0x431a13
mov eax, dword [esp + 0xc]
mov dword [0x45a3a8], eax
pop edi
pop esi
pop ebx
mov ecx, dword [esp + 0xa20]
xor ecx, esp
call fcn.00433c32
mov esp, ebp
pop ebp
ret
push 0x400
lea ecx, [esp + 0x22c]
push ecx
push 0xc7b
push esi
call dword [sym.imp.USER32.dll_GetDlgItemTextW]
lea edx, [esp + 0x28]
push edx
push 0x54c3
mov ebx, 0x100
call fcn.0040af30
lea eax, [esp + 0x30]
push eax
push esi
lea edi, [esp + 0x238]
call fcn.00408f70
add esp, 0x10
test eax, eax
je 0x431a13
mov ecx, edi
push ecx
push 0xc7b
push esi
call dword [sym.imp.USER32.dll_SetDlgItemTextW]
pop edi
pop esi
pop ebx
mov ecx, dword [esp + 0xa20]
xor ecx, esp
call fcn.00433c32
mov esp, ebp
pop ebp
ret
lea edi, [esp + 0x228]
mov ecx, esi
call fcn.00431410
test eax, eax
je 0x431a13
mov edx, edi
push edx
push 0xc7d
push esi
call dword [sym.imp.USER32.dll_SetDlgItemTextW]
lea eax, [esp + 0xc]
push eax
mov ecx, edi
push ecx
call sub.VERSION.dll_GetFileVersionInfoSizeW
mov ebx, eax
test ebx, ebx
je 0x4319ab
push ebx
push 0
call dword [sym.imp.KERNEL32.dll_GetProcessHeap]
push eax
call dword [sym.imp.KERNEL32.dll_HeapAlloc]
mov edi, eax
push edi
push ebx
push 0
lea edx, [esp + 0x234]
push edx
call sub.VERSION.dll_GetFileVersionInfoW
test eax, eax
je 0x43199b
lea eax, [esp + 0xc]
push eax
lea ecx, [esp + 0x18]
push ecx
push str.VarFileInfoTranslation
push edi
call sub.VERSION.dll_VerQueryValueW
test eax, eax
je 0x43199b
cmp dword [esp + 0xc], 4
jb 0x43199b
mov eax, dword [esp + 0x14]
movzx edx, word [eax + 2]
movzx eax, word [eax]
push edx
push eax
push str.StringFileInfo_04x_04xFileDescription
mov ecx, 0x400
lea ebx, [esp + 0x234]
call fcn.00401250
add esp, 0xc
lea ecx, [esp + 0xc]
push ecx
lea edx, [esp + 0x14]
push edx
mov eax, ebx
push eax
push edi
call sub.VERSION.dll_VerQueryValueW
test eax, eax
je 0x43199b
mov ecx, dword [esp + 0x10]
push ecx
push 0xc7e
push esi
call dword [sym.imp.USER32.dll_SetDlgItemTextW]
push edi
push 0
call dword [sym.imp.KERNEL32.dll_GetProcessHeap]
push eax
call dword [sym.imp.KERNEL32.dll_HeapFree]
push 0
lea edx, [esp + 0x22c]
push edx
jmp 0x4319e9
cmp ecx, 0x200
jne 0x431a13
cmp eax, 0xc7d
jne 0x431a13
push 0x400
lea eax, [esp + 0x22c]
push eax
push 0xc7d
push esi
call dword [sym.imp.USER32.dll_GetDlgItemTextW]
push 0
lea ecx, [esp + 0x22c]
push ecx
call fcn.00430e40
add esp, 8
push 0
push eax
push 0x170
push 0xc7f
push esi
call dword [sym.imp.USER32.dll_GetDlgItem]
push eax
call dword [sym.imp.USER32.dll_SendMessageW]
push eax
call dword [sym.imp.USER32.dll_DestroyIcon]
mov ecx, dword [esp + 0xa2c]
pop edi
pop esi
pop ebx
xor ecx, esp
call fcn.00433c32
mov esp, ebp
pop ebp
ret