Function at 0x403540
Capabilities:
Get file size
Get file version info

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x46a000
push 0x459fe8
mov eax, dword fs:[0]
push eax
mov dword fs:[0], esp
sub esp, 0x234
push ebx
push esi
push edi
mov dword [ebp - 0x18], esp
mov dword [ebp - 0x24], 0
mov eax, dword [ebp + 8]
test eax, eax
je 0x403aea
mov edi, dword [ebp + 0xc]
test edi, edi
je 0x403aea
mov esi, dword [ebp + 0x14]
test esi, esi
je 0x403aea
mov eax, dword [ebp + 0x1c]
test eax, eax
je 0x403aea
mov eax, dword [ebp + 0x24]
test eax, eax
je 0x403aea
mov eax, dword [ebp + 0x2c]
test eax, eax
je 0x403aea
mov edx, dword [ebp + 0x34]
test edx, edx
je 0x403aea
mov ecx, dword [ebp + 0x10]
xor eax, eax
mov ebx, ecx
shr ecx, 2
rep stosd dword es:[edi], eax
mov ecx, ebx
and ecx, 3
rep stosb byte es:[edi], al
mov ecx, dword [ebp + 0x18]
xor eax, eax
mov edi, esi
mov esi, ecx
shr ecx, 2
rep stosd dword es:[edi], eax
mov ecx, esi
and ecx, 3
rep stosb byte es:[edi], al
mov esi, dword [ebp + 0x20]
mov ecx, esi
xor eax, eax
mov edi, dword [ebp + 0x1c]
mov ebx, ecx
shr ecx, 2
rep stosd dword es:[edi], eax
mov ecx, ebx
and ecx, 3
rep stosb byte es:[edi], al
mov ecx, dword [ebp + 0x28]
xor eax, eax
mov edi, dword [ebp + 0x24]
mov ebx, ecx
shr ecx, 2
rep stosd dword es:[edi], eax
mov ecx, ebx
and ecx, 3
rep stosb byte es:[edi], al
mov ecx, dword [ebp + 0x30]
xor eax, eax
mov edi, dword [ebp + 0x2c]
mov ebx, ecx
shr ecx, 2
rep stosd dword es:[edi], eax
mov ecx, ebx
and ecx, 3
rep stosb byte es:[edi], al
mov ecx, dword [ebp + 0x38]
xor eax, eax
mov edi, edx
mov edx, ecx
shr ecx, 2
rep stosd dword es:[edi], eax
mov ecx, edx
and ecx, 3
rep stosb byte es:[edi], al
push 0
push 0x80
push 3
push 0
push 3
push 0x80000000
mov eax, dword [ebp + 8]
push eax
mov ebx, dword [sym.imp.KERNEL32.dll_CreateFileA]
call ebx
mov edi, eax
cmp edi, 0xffffffff
jne 0x403683
push 0
push 0x80
push 3
push 0
push 3
push 0
mov ecx, dword [ebp + 8]
push ecx
call ebx
mov edi, eax
cmp edi, 0xffffffff
je 0x403ad4
push 0
push edi
call dword [sym.imp.KERNEL32.dll_GetFileSize]
mov ebx, eax
lea edx, [ebp - 0x40]
push edx
push 0
push 0
push edi
call dword [sym.imp.KERNEL32.dll_GetFileTime]
lea eax, [ebp - 0x30]
push eax
lea ecx, [ebp - 0x40]
push ecx
call fcn.00423c50
add esp, 8
push edi
call dword [sym.imp.KERNEL32.dll_CloseHandle]
push ebx
push 0x4696c0
lea edx, [ebp - 0x244]
push edx
call fcn.00458ee7
mov eax, dword [ebp + 0x28]
dec eax
push eax
lea ecx, [ebp - 0x244]
push ecx
mov edx, dword [ebp + 0x24]
push edx
call fcn.00458f80
movzx eax, byte [ebp - 0x2a]
push eax
mov eax, dword [ebp - 0x2c]
movzx ecx, ah
push ecx
movzx edx, al
push edx
movzx eax, byte [ebp - 0x2f]
push eax
movzx ecx, byte [ebp - 0x30]
push ecx
movzx edx, byte [ebp - 0x2d]
push edx
movzx eax, byte [ebp - 0x2e]
push eax
push str._02d__02d__02d_02d___02d:_02d:_02d
lea ecx, [ebp - 0x244]
push ecx
call fcn.00458ee7
dec esi
push esi
lea edx, [ebp - 0x244]
push edx
mov eax, dword [ebp + 0x1c]
push eax
call fcn.00458f80
add esp, 0x48
mov dword [ebp - 4], 0
lea ecx, [ebp - 0x24]
push ecx
mov edx, dword [ebp + 8]
push edx
call sub.VERSION.dll_GetFileVersionInfoSizeA
mov dword [ebp - 0x1c], eax
mov dword [ebp - 4], 0xffffffff
jmp 0x403757
test eax, eax
ja 0x403771
mov eax, 1
mov ecx, dword [ebp - 0x10]
mov dword fs:[0], ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
shl eax, 2
mov dword [ebp - 0x24], eax
push eax
call fcn.00459619
add esp, 4
mov ebx, eax
mov dword [ebp - 0x28], ebx
test ebx, ebx
jne 0x40379f
mov eax, 2
mov ecx, dword [ebp - 0x10]
mov dword fs:[0], ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
mov ecx, dword [ebp - 0x24]
xor eax, eax
mov edi, ebx
mov edx, ecx
shr ecx, 2
rep stosd dword es:[edi], eax
mov ecx, edx
and ecx, 3
rep stosb byte es:[edi], al
mov dword [ebp - 4], 1
push ebx
mov eax, dword [ebp - 0x1c]
push eax
push 0
mov ecx, dword [ebp + 8]
push ecx
call sub.VERSION.dll_GetFileVersionInfoA
mov dword [ebp - 0x34], eax
mov dword [ebp - 4], 0xffffffff
jmp 0x4037ec
test eax, eax
jne 0x40380f
push ebx
call fcn.0045932f
add esp, 4
mov eax, 3
mov ecx, dword [ebp - 0x10]
mov dword fs:[0], ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
mov dword [ebp - 4], 2
lea edx, [ebp - 0x1c]
push edx
lea eax, [ebp - 0x38]
push eax
push 0x469b10
push ebx
call sub.VERSION.dll_VerQueryValueA
mov dword [ebp - 0x34], eax
mov dword [ebp - 4], 0xffffffff
jmp 0x40384a
test eax, eax
je 0x4038dc
cmp dword [ebp - 0x1c], 0x34
jne 0x4038dc
mov ecx, dword [ebp - 0x38]
cmp dword [ecx], 0xfeef04bd
jne 0x4038dc
mov eax, dword [ecx + 8]
test eax, eax
jne 0x403875
mov eax, dword [ecx + 0xc]
test eax, eax
je 0x4038dc
mov eax, dword [ecx + 0xc]
mov ecx, dword [ecx + 8]
mov edx, eax
and edx, 0xffff
push edx
shr eax, 0x10
push eax
mov eax, ecx
and eax, 0xffff
push eax
shr ecx, 0x10
push ecx
push str._d._d._d._d
lea ecx, [ebp - 0x244]
push ecx
call fcn.00458ee7
add esp, 0x18
lea eax, [ebp - 0x244]
lea edx, [eax + 1]
mov cl, byte [eax]
inc eax
test cl, cl
jne 0x4038b1
sub eax, edx
mov ecx, dword [ebp + 0x10]
mov esi, dword [ebp + 0xc]
cmp ecx, eax
jle 0x4038df
lea eax, [ebp - 0x244]
mov edx, esi
mov ecx, eax
sub edx, ecx
mov cl, byte [eax]
mov byte [edx + eax], cl
inc eax
test cl, cl
jne 0x4038d0
jmp 0x4038df
mov esi, dword [ebp + 0xc]
mov dword [ebp - 4], 3
lea edx, [ebp - 0x1c]
push edx
lea eax, [ebp - 0x20]
push eax
push str.VarFileInfoTranslation
push ebx
call sub.VERSION.dll_VerQueryValueA
mov dword [ebp - 0x34], eax
mov dword [ebp - 4], 0xffffffff
jmp 0x40391d
mov ecx, dword [ebp - 0x1c]
test ecx, ecx
jbe 0x403a81
test eax, eax
je 0x403a81
cmp byte [esi], 0
jne 0x403a08
mov ecx, dword [ebp + 0x10]
push ecx
push str.ProductVersion
mov eax, dword [ebp - 0x20]
xor edx, edx
mov dx, word [eax + 2]
push edx
push ebx
mov ax, word [eax]
call fcn.00402ae0
add esp, 0x10
test eax, eax
je 0x4039e9
lea eax, [ebp - 0x44]
push eax
push 0x4696c0
push esi
call fcn.00458f3f
add esp, 0xc
cmp eax, 1
je 0x403a08
push 0x1ff
push esi
lea ecx, [ebp - 0x244]
push ecx
call fcn.00458f80
mov byte [ebp - 0x45], 0
mov edx, dword [ebp + 0x10]
mov ecx, edx
xor eax, eax
mov edi, esi
mov esi, ecx
shr ecx, 2
rep stosd dword es:[edi], eax
mov ecx, esi
and ecx, 3
rep stosb byte es:[edi], al
push edx
push str.FileVersion
mov eax, dword [ebp - 0x20]
xor edx, edx
mov dx, word [eax + 2]
push edx
push ebx
mov esi, dword [ebp + 0xc]
mov ax, word [eax]
call fcn.00402ae0
add esp, 0x1c
test eax, eax
jne 0x403a08
mov edi, dword [ebp + 0x10]
lea eax, [edi - 1]
push eax
lea ecx, [ebp - 0x244]
push ecx
push esi
call fcn.00458f80
add esp, 0xc
mov byte [esi + edi - 1], 0
jmp 0x403a08
mov edx, dword [ebp + 0x10]
push edx
push str.FileVersion
mov eax, dword [ebp - 0x20]
xor ecx, ecx
mov cx, word [eax + 2]
push ecx
push ebx
mov ax, word [eax]
call fcn.00402ae0
add esp, 0x10
mov edx, dword [ebp + 0x30]
push edx
push str.FileDescription
mov eax, dword [ebp - 0x20]
xor ecx, ecx
mov cx, word [eax + 2]
push ecx
push ebx
mov esi, dword [ebp + 0x2c]
mov ax, word [eax]
call fcn.00402ae0
mov edx, dword [ebp + 0x18]
push edx
push str.CompanyName
mov eax, dword [ebp - 0x20]
xor ecx, ecx
mov cx, word [eax + 2]
push ecx
push ebx
mov esi, dword [ebp + 0x14]
mov ax, word [eax]
call fcn.00402ae0
mov edx, dword [ebp + 0x38]
push edx
push str.ProductName
mov eax, dword [ebp - 0x20]
xor ecx, ecx
mov cx, word [eax + 2]
push ecx
push ebx
mov esi, dword [ebp + 0x34]
mov ax, word [eax]
call fcn.00402ae0
push ebx
call fcn.0045932f
add esp, 0x34
xor eax, eax
mov ecx, dword [ebp - 0x10]
mov dword fs:[0], ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
mov dword [ebp - 4], 4
push ebx
call fcn.0045932f
add esp, 4
mov dword [ebp - 4], 0xffffffff
mov eax, 4
mov ecx, dword [ebp - 0x10]
mov dword fs:[0], ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
mov eax, 0xfffffffe
mov ecx, dword [ebp - 0x10]
mov dword fs:[0], ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
or eax, 0xffffffff
mov ecx, dword [ebp - 0x10]
mov dword fs:[0], ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret