Function at 0x4022b4
Capabilities:
Get file version info

Disassembly:
push ebp
mov ebp, esp
push ecx
mov ecx, 0xa
push 0
push 0
dec ecx
jne 0x4022bd
xchg dword [ebp - 4], ecx
push ebx
push esi
push edi
mov dword [ebp - 4], ecx
mov ebx, edx
mov esi, eax
mov eax, dword [ebp - 4]
call sub.rtl70.bpl__System__LStrAddRef_qqrpv
xor eax, eax
push ebp
push 0x40266a
push dword fs:[eax]
mov dword fs:[eax], esp
xor eax, eax
mov dword [ebp - 0x20], eax
mov byte [ebp - 5], 0
lea eax, [ebp - 0x20]
push eax
mov eax, esi
call sub.rtl70.bpl__System__LStrToPChar_qqrx17System_AnsiString
mov edi, eax
push edi
call sub.version.dll_GetFileVersionInfoSizeA
mov dword [ebp - 0x10], eax
cmp dword [ebp - 0x10], 0
jbe 0x40263f
mov eax, dword [ebp - 0x10]
call sub.rtl70.bpl__System__GetMem_qqri
mov dword [ebp - 0xc], eax
mov eax, dword [ebp - 0xc]
push eax
mov eax, dword [ebp - 0x10]
push eax
push 0
push edi
call sub.version.dll_GetFileVersionInfoA
cmp eax, 1
sbb eax, eax
inc eax
mov byte [ebp - 5], al
cmp byte [ebp - 5], 0
je 0x402637
xor eax, eax
push ebp
push 0x40262d
push dword fs:[eax]
mov dword fs:[eax], esp
lea eax, [ebp - 0x10]
push eax
lea eax, [ebp - 0x18]
push eax
push 0x40267c
mov eax, dword [ebp - 0xc]
push eax
call sub.version.dll_VerQueryValueA
push 0x4026a0
lea ecx, [ebp - 0x24]
mov eax, dword [ebp - 0x18]
movzx eax, word [eax]
mov edx, 4
call sub.rtl70.bpl__Sysutils_IntToHex_qqrii
push dword [ebp - 0x24]
mov eax, dword [ebp - 0x18]
mov eax, dword [eax]
call fcn.004013e8
movzx eax, ax
lea ecx, [ebp - 0x28]
mov edx, 4
call sub.rtl70.bpl__Sysutils_IntToHex_qqrii
push dword [ebp - 0x28]
push 0x4026bc
lea eax, [ebp - 0x1c]
mov edx, 4
call sub.rtl70.bpl__System__LStrCatN_qqrv
lea eax, [ebp - 0x10]
push eax
lea eax, [ebp - 0x14]
push eax
lea eax, [ebp - 0x2c]
mov ecx, 0x4026c8
mov edx, dword [ebp - 0x1c]
call sub.rtl70.bpl__System__LStrCat3_qqrv
mov eax, dword [ebp - 0x2c]
call sub.rtl70.bpl__System__LStrToPChar_qqrx17System_AnsiString
push eax
mov eax, dword [ebp - 0xc]
push eax
call sub.version.dll_VerQueryValueA
mov eax, ebx
mov edx, dword [ebp - 0x14]
call sub.rtl70.bpl__System__LStrFromPChar_qqrr17System_AnsiStringpc
lea eax, [ebp - 0x10]
push eax
lea eax, [ebp - 0x14]
push eax
lea eax, [ebp - 0x30]
mov ecx, 0x4026dc
mov edx, dword [ebp - 0x1c]
call sub.rtl70.bpl__System__LStrCat3_qqrv
mov eax, dword [ebp - 0x30]
call sub.rtl70.bpl__System__LStrToPChar_qqrx17System_AnsiString
push eax
mov eax, dword [ebp - 0xc]
push eax
call sub.version.dll_VerQueryValueA
lea eax, [ebx + 4]
mov edx, dword [ebp - 0x14]
call sub.rtl70.bpl__System__LStrFromPChar_qqrr17System_AnsiStringpc
lea eax, [ebp - 0x10]
push eax
lea eax, [ebp - 0x14]
push eax
lea eax, [ebp - 0x34]
mov ecx, 0x4026f4
mov edx, dword [ebp - 0x1c]
call sub.rtl70.bpl__System__LStrCat3_qqrv
mov eax, dword [ebp - 0x34]
call sub.rtl70.bpl__System__LStrToPChar_qqrx17System_AnsiString
push eax
mov eax, dword [ebp - 0xc]
push eax
call sub.version.dll_VerQueryValueA
lea eax, [ebx + 8]
mov edx, dword [ebp - 0x14]
call sub.rtl70.bpl__System__LStrFromPChar_qqrr17System_AnsiStringpc
lea eax, [ebp - 0x10]
push eax
lea eax, [ebp - 0x14]
push eax
lea eax, [ebp - 0x38]
mov ecx, 0x402708
mov edx, dword [ebp - 0x1c]
call sub.rtl70.bpl__System__LStrCat3_qqrv
mov eax, dword [ebp - 0x38]
call sub.rtl70.bpl__System__LStrToPChar_qqrx17System_AnsiString
push eax
mov eax, dword [ebp - 0xc]
push eax
call sub.version.dll_VerQueryValueA
lea eax, [ebx + 0xc]
mov edx, dword [ebp - 0x14]
call sub.rtl70.bpl__System__LStrFromPChar_qqrr17System_AnsiStringpc
lea eax, [ebp - 0x10]
push eax
lea eax, [ebp - 0x14]
push eax
lea eax, [ebp - 0x3c]
mov ecx, 0x402720
mov edx, dword [ebp - 0x1c]
call sub.rtl70.bpl__System__LStrCat3_qqrv
mov eax, dword [ebp - 0x3c]
call sub.rtl70.bpl__System__LStrToPChar_qqrx17System_AnsiString
push eax
mov eax, dword [ebp - 0xc]
push eax
call sub.version.dll_VerQueryValueA
lea eax, [ebx + 0x10]
mov edx, dword [ebp - 0x14]
call sub.rtl70.bpl__System__LStrFromPChar_qqrr17System_AnsiStringpc
lea eax, [ebp - 0x10]
push eax
lea eax, [ebp - 0x14]
push eax
lea eax, [ebp - 0x40]
mov ecx, 0x402738
mov edx, dword [ebp - 0x1c]
call sub.rtl70.bpl__System__LStrCat3_qqrv
mov eax, dword [ebp - 0x40]
call sub.rtl70.bpl__System__LStrToPChar_qqrx17System_AnsiString
push eax
mov eax, dword [ebp - 0xc]
push eax
call sub.version.dll_VerQueryValueA
lea eax, [ebx + 0x14]
mov edx, dword [ebp - 0x14]
call sub.rtl70.bpl__System__LStrFromPChar_qqrr17System_AnsiStringpc
lea eax, [ebp - 0x10]
push eax
lea eax, [ebp - 0x14]
push eax
lea eax, [ebp - 0x44]
mov ecx, 0x402750
mov edx, dword [ebp - 0x1c]
call sub.rtl70.bpl__System__LStrCat3_qqrv
mov eax, dword [ebp - 0x44]
call sub.rtl70.bpl__System__LStrToPChar_qqrx17System_AnsiString
push eax
mov eax, dword [ebp - 0xc]
push eax
call sub.version.dll_VerQueryValueA
lea eax, [ebx + 0x18]
mov edx, dword [ebp - 0x14]
call sub.rtl70.bpl__System__LStrFromPChar_qqrr17System_AnsiStringpc
lea eax, [ebp - 0x10]
push eax
lea eax, [ebp - 0x14]
push eax
lea eax, [ebp - 0x48]
mov ecx, 0x40276c
mov edx, dword [ebp - 0x1c]
call sub.rtl70.bpl__System__LStrCat3_qqrv
mov eax, dword [ebp - 0x48]
call sub.rtl70.bpl__System__LStrToPChar_qqrx17System_AnsiString
push eax
mov eax, dword [ebp - 0xc]
push eax
call sub.version.dll_VerQueryValueA
lea eax, [ebx + 0x1c]
mov edx, dword [ebp - 0x14]
call sub.rtl70.bpl__System__LStrFromPChar_qqrr17System_AnsiStringpc
lea eax, [ebp - 0x10]
push eax
lea eax, [ebp - 0x14]
push eax
lea eax, [ebp - 0x4c]
mov ecx, 0x402780
mov edx, dword [ebp - 0x1c]
call sub.rtl70.bpl__System__LStrCat3_qqrv
mov eax, dword [ebp - 0x4c]
call sub.rtl70.bpl__System__LStrToPChar_qqrx17System_AnsiString
push eax
mov eax, dword [ebp - 0xc]
push eax
call sub.version.dll_VerQueryValueA
lea eax, [ebx + 0x20]
mov edx, dword [ebp - 0x14]
call sub.rtl70.bpl__System__LStrFromPChar_qqrr17System_AnsiStringpc
lea eax, [ebp - 0x10]
push eax
lea eax, [ebp - 0x14]
push eax
lea eax, [ebp - 0x50]
mov ecx, 0x402798
mov edx, dword [ebp - 0x1c]
call sub.rtl70.bpl__System__LStrCat3_qqrv
mov eax, dword [ebp - 0x50]
call sub.rtl70.bpl__System__LStrToPChar_qqrx17System_AnsiString
push eax
mov eax, dword [ebp - 0xc]
push eax
call sub.version.dll_VerQueryValueA
lea eax, [ebx + 0x24]
mov edx, dword [ebp - 0x14]
call sub.rtl70.bpl__System__LStrFromPChar_qqrr17System_AnsiStringpc
lea eax, [ebp - 0x10]
push eax
lea eax, [ebp - 0x14]
push eax
push 0x4027a4
mov eax, dword [ebp - 0xc]
push eax
call sub.version.dll_VerQueryValueA
test eax, eax
je 0x4025e6
mov eax, dword [ebp - 0x14]
mov esi, eax
lea edi, [ebx + 0x28]
mov ecx, 0xd
rep movsd dword es:[edi], dword [esi]
cmp dword [ebp - 4], 0
je 0x402623
lea eax, [ebp - 0x10]
push eax
lea eax, [ebp - 0x14]
push eax
lea eax, [ebp - 0x54]
mov ecx, dword [ebp - 4]
mov edx, dword [ebp - 0x1c]
call sub.rtl70.bpl__System__LStrCat3_qqrv
mov eax, dword [ebp - 0x54]
call sub.rtl70.bpl__System__LStrToPChar_qqrx17System_AnsiString
push eax
mov eax, dword [ebp - 0xc]
push eax
call sub.version.dll_VerQueryValueA
test eax, eax
je 0x402623
lea eax, [ebx + 0x5c]
mov edx, dword [ebp - 0x14]
call sub.rtl70.bpl__System__LStrFromPChar_qqrr17System_AnsiStringpc
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
jmp 0x402637
mov eax, dword [ebp - 0xc]
call sub.rtl70.bpl__System__FreeMem_qqrpv
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
push 0x402671
lea eax, [ebp - 0x54]
mov edx, 0xd
call sub.rtl70.bpl__System__LStrArrayClr_qqrpvi
lea eax, [ebp - 0x1c]
call sub.rtl70.bpl__System__LStrClr_qqrpv
lea eax, [ebp - 4]
call sub.rtl70.bpl__System__LStrClr_qqrpv
ret