Function at 0x4026a0
Capabilities:
Get file version info

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x405575
mov eax, dword fs:[0]
push eax
sub esp, 0x20
push ebx
push esi
push edi
mov eax, dword [0x409008]
xor eax, ebp
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
call fcn.00401210
mov ecx, eax
test ecx, ecx
je 0x402c3e
mov eax, dword [ecx]
call dword [eax + 0xc]
lea esi, [eax + 0x10]
mov dword [ebp - 0x14], esi
mov dword [ebp - 4], 0
mov ecx, 1
mov eax, dword [esi - 8]
sub ecx, dword [esi - 4]
sub eax, 0x104
or eax, ecx
jge 0x40270d
push 0x104
lea ecx, [ebp - 0x14]
call fcn.00403d80
mov esi, dword [ebp - 0x14]
push 0x104
push esi
push 0
call dword [sym.imp.KERNEL32.dll_GetModuleFileNameA]
test eax, eax
jne 0x402853
push ecx
mov edi, esp
mov dword [ebp - 0x24], esp
mov dword [ebp - 0x28], edi
call fcn.00401210
mov ecx, eax
test ecx, ecx
je 0x402c84
mov eax, dword [ecx]
call dword [eax + 0xc]
add eax, 0x10
mov dword [edi], eax
mov eax, 0x4064b4
mov byte [ebp - 4], 1
shr eax, 0x10
mov ecx, 0x4064b4
movzx ebx, cx
mov ecx, edi
mov dword [ebp - 0x10], eax
test eax, eax
jne 0x40276a
push ebx
call fcn.00403c00
jmp 0x402776
push 0
push 0x4064b4
call fcn.00403f20
push ecx
mov byte [ebp - 4], 2
mov edi, esp
mov dword [ebp - 0x28], esp
mov dword [ebp - 0x2c], edi
call fcn.00401210
mov ecx, eax
test ecx, ecx
je 0x402c48
mov eax, dword [ecx]
call dword [eax + 0xc]
add eax, 0x10
mov dword [edi], eax
mov byte [ebp - 4], 3
mov ecx, edi
cmp dword [ebp - 0x10], 0
jne 0x4027b0
push ebx
call fcn.00403c00
jmp 0x4027bc
push 0
push 0x4064b4
call fcn.00403f20
push ecx
mov byte [ebp - 4], 4
mov edi, esp
mov dword [ebp - 0x2c], edi
call fcn.00401210
mov ecx, eax
test ecx, ecx
je 0x402c52
mov eax, dword [ecx]
call dword [eax + 0xc]
add eax, 0x10
mov dword [edi], eax
mov eax, str.GetModuleFileName
mov byte [ebp - 4], 5
mov ecx, edi
test eax, 0xffff0000
jne 0x4027fc
movzx eax, ax
push eax
call fcn.00403c00
jmp 0x402808
push 0x11
push str.GetModuleFileName
call fcn.00403f20
mov byte [ebp - 4], 4
call dword [sym.imp.KERNEL32.dll_GetLastError]
push eax
mov byte [ebp - 4], 0
call fcn.00402fb0
call fcn.00401210
mov ecx, eax
test ecx, ecx
je 0x402c84
mov eax, dword [ecx]
call dword [eax + 0xc]
mov edi, dword [ebp + 8]
add eax, 0x10
mov dword [edi], eax
mov byte [ebp - 4], 6
mov ecx, edi
cmp dword [ebp - 0x10], 0
jne 0x4029b4
push ebx
call fcn.00403c00
jmp 0x4029c0
push dword [esi - 8]
push esi
call dword [sym.imp.api_ms_win_crt_string_l1_1_0.dll_strnlen]
add esp, 8
test eax, eax
js 0x402c34
cmp eax, dword [esi - 8]
jg 0x402c34
push 0
mov dword [esi - 0xc], eax
push esi
mov byte [eax + esi], 0
call dword [sym.imp.VERSION.dll_GetFileVersionInfoSizeA]
mov ebx, eax
test ebx, ebx
jne 0x4029e8
push ecx
mov edi, esp
mov dword [ebp - 0x2c], esp
mov dword [ebp - 0x28], edi
call fcn.00401210
mov ecx, eax
test ecx, ecx
je 0x402c84
mov eax, dword [ecx]
call dword [eax + 0xc]
add eax, 0x10
mov dword [edi], eax
mov eax, 0x4064b4
mov byte [ebp - 4], 7
shr eax, 0x10
mov ecx, 0x4064b4
movzx ebx, cx
mov ecx, edi
mov dword [ebp - 0x10], eax
test eax, eax
jne 0x4028d2
push ebx
call fcn.00403c00
jmp 0x4028de
push 0
push 0x4064b4
call fcn.00403f20
push ecx
mov byte [ebp - 4], 8
mov edi, esp
mov dword [ebp - 0x28], esp
mov dword [ebp - 0x24], edi
call fcn.00401210
mov ecx, eax
test ecx, ecx
je 0x402c5c
mov eax, dword [ecx]
call dword [eax + 0xc]
add eax, 0x10
mov dword [edi], eax
mov byte [ebp - 4], 9
mov ecx, edi
cmp dword [ebp - 0x10], 0
jne 0x402918
push ebx
call fcn.00403c00
jmp 0x402924
push 0
push 0x4064b4
call fcn.00403f20
push ecx
mov byte [ebp - 4], 0xa
mov edi, esp
mov dword [ebp - 0x24], edi
call fcn.00401210
mov ecx, eax
test ecx, ecx
je 0x402c66
mov eax, dword [ecx]
call dword [eax + 0xc]
add eax, 0x10
mov dword [edi], eax
mov eax, str.GetFileVersionInfoSize
mov byte [ebp - 4], 0xb
mov ecx, edi
test eax, 0xffff0000
jne 0x402964
movzx eax, ax
push eax
call fcn.00403c00
jmp 0x402970
push 0x16
push str.GetFileVersionInfoSize
call fcn.00403f20
mov byte [ebp - 4], 0xa
call dword [sym.imp.KERNEL32.dll_GetLastError]
push eax
mov byte [ebp - 4], 0
call fcn.00402fb0
call fcn.00401210
mov ecx, eax
test ecx, ecx
je 0x402c84
mov eax, dword [ecx]
call dword [eax + 0xc]
mov edi, dword [ebp + 8]
add eax, 0x10
mov dword [edi], eax
mov byte [ebp - 4], 0xc
mov ecx, edi
cmp dword [ebp - 0x10], 0
jne 0x4029b4
push ebx
call fcn.00403c00
jmp 0x4029c0
push 0
push 0x4064b4
call fcn.00403f20
mov dword [ebp - 4], 0xffffffff
add esi, 0xfffffff0
or eax, 0xffffffff
lock xadd dword [esi + 0xc], eax
dec eax
test eax, eax
jg 0x402b77
mov ecx, dword [esi]
push esi
mov eax, dword [ecx]
call dword [eax + 4]
jmp 0x402b77
push ebx
call fcn.004047b7
add esp, 4
mov edi, eax
push edi
push ebx
push 0
push esi
call dword [sym.imp.VERSION.dll_GetFileVersionInfoA]
lea eax, [ebp - 0x1c]
mov dword [ebp - 0x18], 0
push eax
lea eax, [ebp - 0x18]
mov dword [ebp - 0x1c], 0
push eax
push 0x406590
push edi
call dword [sym.imp.VERSION.dll_VerQueryValueA]
test eax, eax
jne 0x402b8d
push ecx
mov edi, esp
mov dword [ebp - 0x2c], esp
mov dword [ebp - 0x28], edi
call fcn.00401210
mov ecx, eax
test ecx, ecx
je 0x402c84
mov eax, dword [ecx]
call dword [eax + 0xc]
add eax, 0x10
mov dword [edi], eax
mov eax, 0x4064b4
mov byte [ebp - 4], 0xd
shr eax, 0x10
mov ecx, 0x4064b4
movzx ebx, cx
mov ecx, edi
mov dword [ebp - 0x10], eax
test eax, eax
jne 0x402a6f
push ebx
call fcn.00403c00
jmp 0x402a7b
push 0
push 0x4064b4
call fcn.00403f20
push ecx
mov byte [ebp - 4], 0xe
mov edi, esp
mov dword [ebp - 0x28], esp
mov dword [ebp - 0x24], edi
call fcn.00401210
mov ecx, eax
test ecx, ecx
je 0x402c70
mov eax, dword [ecx]
call dword [eax + 0xc]
add eax, 0x10
mov dword [edi], eax
mov byte [ebp - 4], 0xf
mov ecx, edi
cmp dword [ebp - 0x10], 0
jne 0x402ab5
push ebx
call fcn.00403c00
jmp 0x402ac1
push 0
push 0x4064b4
call fcn.00403f20
push ecx
mov byte [ebp - 4], 0x10
mov edi, esp
mov dword [ebp - 0x24], edi
call fcn.00401210
mov ecx, eax
test ecx, ecx
je 0x402c7a
mov eax, dword [ecx]
call dword [eax + 0xc]
add eax, 0x10
mov dword [edi], eax
mov eax, str.VerQueryValue
mov byte [ebp - 4], 0x11
mov ecx, edi
test eax, 0xffff0000
jne 0x402b01
movzx eax, ax
push eax
call fcn.00403c00
jmp 0x402b0d
push 0xd
push str.VerQueryValue
call fcn.00403f20
mov byte [ebp - 4], 0x10
push 0
mov byte [ebp - 4], 0
call fcn.00402fb0
call fcn.00401210
mov ecx, eax
test ecx, ecx
je 0x402c84
mov eax, dword [ecx]
call dword [eax + 0xc]
mov edi, dword [ebp + 8]
add eax, 0x10
mov dword [edi], eax
mov byte [ebp - 4], 0x12
mov ecx, edi
cmp dword [ebp - 0x10], 0
jne 0x402b4c
push ebx
call fcn.00403c00
jmp 0x402b58
push 0
push 0x4064b4
call fcn.00403f20
mov dword [ebp - 4], 0xffffffff
add esi, 0xfffffff0
or eax, 0xffffffff
lock xadd dword [esi + 0xc], eax
dec eax
test eax, eax
jg 0x402b77
mov ecx, dword [esi]
push esi
mov edx, dword [ecx]
call dword [edx + 4]
mov eax, edi
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 4
call fcn.00401210
mov ecx, eax
test ecx, ecx
je 0x402c84
mov eax, dword [ecx]
call dword [eax + 0xc]
add eax, 0x10
mov dword [ebp - 0x10], eax
mov byte [ebp - 4], 0x13
mov ecx, dword [ebp - 0x18]
movzx eax, word [ecx + 0x14]
push eax
movzx eax, word [ecx + 0x16]
push eax
movzx eax, word [ecx + 0x10]
push eax
movzx eax, word [ecx + 0x12]
push eax
lea eax, [ebp - 0x10]
push str._d._d._d._d
push eax
call fcn.00404070
mov ebx, dword [ebp + 8]
lea eax, [ebp - 0x10]
add esp, 0x18
mov ecx, ebx
push eax
call fcn.00403a60
mov byte [ebp - 4], 0
or edi, 0xffffffff
mov edx, dword [ebp - 0x10]
mov eax, edi
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x402c02
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov dword [ebp - 4], 0xffffffff
add esi, 0xfffffff0
lock xadd dword [esi + 0xc], edi
dec edi
test edi, edi
jg 0x402c1e
mov ecx, dword [esi]
push esi
mov edx, dword [ecx]
call dword [edx + 4]
mov eax, ebx
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 4
push 0x80070057
call fcn.004010e0
push 0x80004005
call fcn.004010e0
push 0x80004005
call fcn.004010e0
push 0x80004005
call fcn.004010e0
push 0x80004005
call fcn.004010e0
push 0x80004005
call fcn.004010e0
push 0x80004005
call fcn.004010e0
push 0x80004005
call fcn.004010e0
push 0x80004005
call fcn.004010e0
int3