Function at 0x10021610
Capabilities:
Get file version info

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x28c
mov eax, dword [0x10069700]
xor eax, ebp
mov dword [ebp - 8], eax
mov eax, dword [ebp + 8]
push ebx
mov dword [ebp - 0x268], eax
mov eax, dword [ebp + 0xc]
push edi
mov ebx, ecx
push eax
mov dword [ebp - 0x280], eax
mov dword [ebp - 0x284], ebx
call fcn.1002a414
add esp, 4
push ebx
mov edi, eax
call fcn.1002a414
add esp, 4
mov ebx, eax
mov dword [ebp - 0x27c], ebx
mov dword [ebp - 0x258], 0
test edi, edi
je 0x1002169b
test ebx, ebx
je 0x1002169b
mov ecx, dword [ebp + 0x18]
mov edx, dword [ebp + 0x14]
mov eax, dword [ebp + 0x10]
push ecx
mov ecx, dword [ebp - 0x268]
push edx
mov edx, dword [esi + 0x30]
push eax
push ebx
push edi
push 0
push ecx
call edx
or eax, edx
jne 0x100216a5
call dword [sym.imp.KERNEL32.dll_GetLastError]
mov dword [ebp - 0x258], eax
jmp 0x100216a5
mov dword [ebp - 0x258], 8
mov eax, dword [esi]
xor ecx, ecx
mov dword [ebp - 0x274], ecx
mov dword [ebp - 0x270], ecx
cmp eax, ecx
je 0x10021837
cmp edi, ecx
je 0x10021844
test byte [eax + 0x1c], 8
je 0x1002177d
lea eax, [ebp - 0x278]
push eax
push edi
mov dword [ebp - 0x25c], ecx
call dword [sym.imp.VERSION.dll_GetFileVersionInfoSizeA]
mov ebx, eax
test ebx, ebx
je 0x1002177d
push ebx
call fcn.10029186
add esp, 4
mov dword [ebp - 0x264], eax
test eax, eax
je 0x1002177d
mov ecx, dword [ebp - 0x278]
push eax
push ebx
push ecx
push edi
call dword [sym.imp.VERSION.dll_GetFileVersionInfoA]
test eax, eax
je 0x1002176e
lea eax, [ebp - 0x288]
push eax
mov eax, dword [ebp - 0x264]
mov edx, 0x5c
lea ecx, [ebp - 0x25c]
mov word [ebp - 0x260], dx
push ecx
lea edx, [ebp - 0x260]
push edx
push eax
call dword [sym.imp.VERSION.dll_VerQueryValueA]
test eax, eax
jne 0x1002174e
mov dword [ebp - 0x25c], eax
jmp 0x1002176e
mov edx, dword [ebp - 0x25c]
mov ecx, dword [edx + 8]
mov edx, dword [edx + 0xc]
xor eax, eax
xor ebx, ebx
add eax, edx
adc ecx, ebx
mov dword [ebp - 0x274], eax
mov dword [ebp - 0x270], ecx
mov eax, dword [ebp - 0x264]
push eax
call fcn.10028891
add esp, 4
mov edx, dword [ebp + 0x14]
mov eax, dword [ebp + 0x10]
lea ecx, [ebp - 0x254]
push ecx
mov ecx, dword [ebp - 0x268]
push edx
push eax
push ecx
push esi
mov ebx, str._unknown_
call fcn.100218a0
test eax, eax
je case.0x100217ad.7
mov eax, dword [ebp - 0x234]
cmp eax, 9
ja case.0x100217ad.7
jmp dword [eax*4 + 0x1002186c]
mov ebx, str._nosymbols_
jmp case.0x100217ad.7
mov ebx, str.COFF
jmp case.0x100217ad.7
mov ebx, 0x1005e300
jmp case.0x100217ad.7
mov ebx, 0x1005e304
jmp case.0x100217ad.7
mov ebx, str._exported_
jmp case.0x100217ad.7
mov ebx, str._deferred_
jmp case.0x100217ad.7
mov ebx, 0x1005e320
jmp case.0x100217ad.7
mov ebx, str.Virtual
jmp case.0x100217ad.7
mov ebx, 0x1005e32c
mov eax, dword [ebp - 0x270]
push eax
mov eax, dword [ebp - 0x274]
mov ecx, dword [esi]
push eax
mov edx, dword [ecx]
mov edx, dword [edx + 8]
lea eax, [ebp - 0x110]
push eax
mov eax, dword [ebp - 0x258]
push ebx
push eax
mov eax, dword [ebp + 0x18]
push eax
mov eax, dword [ebp + 0x14]
push eax
mov eax, dword [ebp + 0x10]
push eax
mov eax, dword [ebp - 0x284]
push eax
mov eax, dword [ebp - 0x280]
push eax
call edx
mov ebx, dword [ebp - 0x27c]
test edi, edi
je 0x10021844
push edi
call fcn.10028891
add esp, 4
test ebx, ebx
je 0x10021851
push ebx
call fcn.10028891
add esp, 4
mov ecx, dword [ebp - 8]
mov eax, dword [ebp - 0x258]
pop edi
xor ecx, ebp
pop ebx
call fcn.100282cc
mov esp, ebp
pop ebp
ret 0x14