Function at 0x4bd630
Capabilities:
Get file version info

Disassembly:
mov eax, dword [esp + 4]
sub esp, 0x14
push ebx
mov ebx, dword [esp + 0x20]
push esi
push edi
mov edi, dword [esp + 0x2c]
mov dword [edi], 0
mov dword [ebx], 0
mov eax, dword [eax]
test eax, eax
je 0x4bd659
add eax, 4
jmp 0x4bd65b
xor eax, eax
push eax
lea ecx, [esp + 0x30]
call fcn.004a03e0
mov eax, dword [esp + 0x2c]
test eax, eax
mov dword [esp + 0x28], 0
je 0x4bd67a
add eax, 4
jmp 0x4bd67c
xor eax, eax
lea ecx, [esp + 0x28]
push ecx
push eax
call sub.VERSION.dll_GetFileVersionInfoSizeW
mov esi, eax
test esi, esi
jne 0x4bd700
mov eax, dword [esp + 0x2c]
test eax, eax
je 0x4bd87d
mov edx, dword [eax]
and edx, 0xff
cmp edx, 0x80
mov esi, eax
jae 0x4bd87d
push eax
call dword [sym.imp.KERNEL32.dll_InterlockedDecrement]
and eax, 0xff
cmp eax, 0x7f
jne 0x4bd6e1
mov eax, dword [esi]
and eax, 0xff
cmp eax, 0x80
jae 0x4bd6dc
push esi
call dword [sym.imp.KERNEL32.dll_InterlockedIncrement]
and eax, 0xff
jmp 0x4bd6e1
mov eax, 0xff
test eax, eax
jne 0x4bd87d
mov ecx, dword [esp + 0x2c]
push ecx
call fcn.00499410
add esp, 4
pop edi
pop esi
or eax, 0xffffffff
pop ebx
add esp, 0x14
ret
push esi
lea ecx, [esp + 0x1c]
call fcn.00499690
mov eax, dword [esp + 0x2c]
test eax, eax
je 0x4bd717
add eax, 4
jmp 0x4bd719
xor eax, eax
mov edx, dword [esp + 0x1c]
push edx
push esi
push 0
push eax
call sub.VERSION.dll_GetFileVersionInfoW
test eax, eax
jne 0x4bd790
lea ecx, [esp + 0x18]
call fcn.004996f0
mov eax, dword [esp + 0x2c]
test eax, eax
je 0x4bd87d
mov ecx, dword [eax]
and ecx, 0xff
cmp ecx, 0x80
mov esi, eax
jae 0x4bd87d
push eax
call dword [sym.imp.KERNEL32.dll_InterlockedDecrement]
and eax, 0xff
cmp eax, 0x7f
jne 0x4bd86c
mov edx, dword [esi]
and edx, 0xff
cmp edx, 0x80
jae 0x4bd867
push esi
call dword [sym.imp.KERNEL32.dll_InterlockedIncrement]
and eax, 0xff
jmp 0x4bd86c
mov eax, dword [esp + 0x1c]
lea ecx, [esp + 0x14]
push ecx
lea edx, [esp + 0x28]
push edx
push 0x660efc
push eax
call sub.VERSION.dll_VerQueryValueA
test eax, eax
je 0x4bd72b
mov eax, dword [esp + 0x24]
movzx ecx, word [eax + 0xe]
mov edx, dword [eax + 0xc]
mov dword [esp + 0xc], ecx
mov ecx, dword [eax + 8]
and edx, 0xffff
fild dword [esp + 0xc]
mov dword [esp + 0xc], edx
movzx edx, word [eax + 0xa]
mov dword [esp + 0x10], 0
and ecx, 0xffff
fild qword [esp + 0xc]
mov dword [esp + 0xc], ecx
mov dword [esp + 0x10], 0
lea ecx, [esp + 0x18]
fild qword [esp + 0xc]
mov dword [esp + 0xc], edx
fmul dword [0x660260]
fild dword [esp + 0xc]
faddp st(1)
fstp dword [ebx]
fmul dword [0x660260]
fadd st(1)
fstp dword [edi]
fstp st(0)
call fcn.004996f0
mov eax, dword [esp + 0x2c]
test eax, eax
je 0x4bd89d
mov ecx, dword [eax]
and ecx, 0xff
cmp ecx, 0x80
mov esi, eax
jae 0x4bd89d
push eax
call dword [sym.imp.KERNEL32.dll_InterlockedDecrement]
and eax, 0xff
cmp eax, 0x7f
jne 0x4bd88c
mov edx, dword [esi]
and edx, 0xff
cmp edx, 0x80
jae 0x4bd887
push esi
call dword [sym.imp.KERNEL32.dll_InterlockedIncrement]
and eax, 0xff
jmp 0x4bd88c
mov eax, 0xff
test eax, eax
jne 0x4bd87d
mov eax, dword [esp + 0x2c]
push eax
call fcn.00499410
add esp, 4
pop edi
pop esi
or eax, 0xffffffff
pop ebx
add esp, 0x14
ret
mov eax, 0xff
test eax, eax
jne 0x4bd89d
mov eax, dword [esp + 0x2c]
push eax
call fcn.00499410
add esp, 4
pop edi
pop esi
xor eax, eax
pop ebx
add esp, 0x14
ret