Function at 0x412780
Capabilities:
Get file version info

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x230
mov eax, dword [0x439004]
xor eax, ebp
mov dword [ebp - 4], eax
push ebx
push esi
push edi
lea eax, [ebp - 0x230]
mov ebx, ecx
push eax
push ebx
mov edi, edx
call dword [sym.imp.VERSION.dll_GetFileVersionInfoSizeW]
mov esi, eax
test esi, esi
je 0x412a9b
push esi
call fcn.00414f63
add esp, 4
mov dword [ebp - 0x220], eax
push eax
push esi
push 0
push ebx
call dword [sym.imp.VERSION.dll_GetFileVersionInfoW]
push 0x4a
call fcn.00414f63
add esp, 4
mov ebx, eax
push 0x434d40
push 0x25
push ebx
call fcn.00418211
add esp, 0xc
mov edx, 0x434d40
mov ecx, 0x4354dc
mov ax, word [ecx]
cmp ax, word [edx]
jne 0x412818
test ax, ax
je 0x412814
mov ax, word [ecx + 2]
cmp ax, word [edx + 2]
jne 0x412818
add ecx, 4
add edx, 4
test ax, ax
jne 0x4127f2
xor eax, eax
jmp 0x41281d
sbb eax, eax
or eax, 1
mov esi, dword [sym.imp.VERSION.dll_VerQueryValueW]
test eax, eax
je 0x4128cb
push str.StringFileInfo_
push 0x25
push ebx
call fcn.00419b0f
add esp, 0xc
push 0x434d40
push 0x4354dc
call fcn.00416454
add esp, 8
test eax, eax
jne 0x4128bb
lea eax, [ebp - 0x22c]
push eax
lea eax, [ebp - 0x228]
push eax
push str.VarFileInfoTranslation
push dword [ebp - 0x220]
call esi
test eax, eax
je 0x41289b
mov eax, dword [ebp - 0x228]
lea edx, [ebx + 0x20]
push ecx
mov esi, dword [eax]
mov ecx, esi
call fcn.00412f60
shr esi, 0x10
lea edx, [ebx + 0x28]
mov ecx, esi
call fcn.00412f60
mov esi, dword [sym.imp.VERSION.dll_VerQueryValueW]
add esp, 4
jmp 0x4128ab
push str.04090000
push 0x25
push ebx
call fcn.00419b0f
add esp, 0xc
push 0x434d40
push 0x25
push ebx
call fcn.00419b0f
add esp, 0xc
push 0x4354dc
push 0x25
push ebx
call fcn.00419b0f
add esp, 0xc
push str.DefaultLangCodepage
push 0x4354dc
call fcn.00419e7c
add esp, 8
test eax, eax
jne 0x4129a7
push 8
lea eax, [ebx + 0x20]
push eax
lea eax, [ebp - 0x218]
push 0x104
push eax
call fcn.0041a0be
add esp, 0x10
lea ecx, [ebp - 0x218]
xor eax, eax
lea edx, [ecx + 2]
mov word [ebp - 0x208], ax
mov ax, word [ecx]
add ecx, 2
test ax, ax
jne 0x412911
sub ecx, edx
mov edx, dword [edi + 0x14]
sar ecx, 1
cmp ecx, edx
ja 0x412961
mov dword [ebp - 0x21c], edi
mov eax, edi
cmp edx, 8
jb 0x41293c
mov eax, dword [edi]
mov dword [ebp - 0x21c], eax
lea esi, [ecx + ecx]
mov dword [edi + 0x10], ecx
push esi
lea ecx, [ebp - 0x218]
push ecx
push eax
call fcn.00415ee0
mov eax, dword [ebp - 0x21c]
add esp, 0xc
xor ecx, ecx
mov word [esi + eax], cx
jmp 0x41297d
lea eax, [ebp - 0x218]
mov byte [ebp - 0x21c], 0
push eax
push dword [ebp - 0x21c]
push ecx
mov ecx, edi
call fcn.004042b0
push dword [ebp - 0x220]
call fcn.00414f6c
add esp, 4
push ebx
call fcn.00414f6c
add esp, 4
mov al, 1
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.00414df1
mov esp, ebp
pop ebp
ret
lea eax, [ebp - 0x22c]
push eax
lea eax, [ebp - 0x224]
push eax
push ebx
push dword [ebp - 0x220]
call esi
test eax, eax
je 0x412a70
mov ecx, 0x434d40
mov eax, 0x4354dc
mov dx, word [eax]
cmp dx, word [ecx]
jne 0x4129f6
test dx, dx
je 0x4129f2
mov dx, word [eax + 2]
cmp dx, word [ecx + 2]
jne 0x4129f6
add eax, 4
add ecx, 4
test dx, dx
jne 0x4129d0
xor eax, eax
jmp 0x4129fb
sbb eax, eax
or eax, 1
test eax, eax
jne 0x412a36
mov eax, dword [ebp - 0x224]
mov edx, dword [eax + 8]
mov ecx, dword [eax + 0xc]
movzx eax, cx
push eax
shr ecx, 0x10
push ecx
movzx eax, dx
push eax
shr edx, 0x10
lea eax, [ebp - 0x218]
push edx
push str._u._u._u._u
push 0x104
push eax
call fcn.004019c0
add esp, 0x1c
jmp 0x412a55
push 0x104
push dword [ebp - 0x224]
lea eax, [ebp - 0x218]
push 0x104
push eax
call fcn.0041a0be
add esp, 0x10
lea ecx, [ebp - 0x218]
lea edx, [ecx + 2]
nop
mov ax, word [ecx]
add ecx, 2
test ax, ax
jne 0x412a60
jmp 0x41291c
cmp dword [edi + 0x14], 8
mov dword [edi + 0x10], 0
jb 0x412a7f
mov edi, dword [edi]
push dword [ebp - 0x220]
xor eax, eax
mov word [edi], ax
call fcn.00414f6c
add esp, 4
push ebx
call fcn.00414f6c
add esp, 4
mov ecx, dword [ebp - 4]
xor al, al
pop edi
pop esi
xor ecx, ebp
pop ebx
call fcn.00414df1
mov esp, ebp
pop ebp
ret