Function at 0x402830
Capabilities:
Get file version info

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x960
push ebx
push esi
mov esi, ecx
lea eax, [ebp - 0x6ac]
push edi
lea ecx, [ebp - 0x8b0]
push eax
lea edx, [ebp - 0x5ac]
push ecx
lea eax, [ebp - 0x24]
push edx
lea ecx, [esi + 0x60]
push eax
push ecx
mov dword [ebp - 4], esi
mov dword [ebp - 0x34], 0
call fcn.0040bc9f
push 0
lea edx, [ebp - 0x5ac]
push 0
lea eax, [ebp - 0x24]
push edx
lea ecx, [ebp - 0x4ac]
push eax
push ecx
call fcn.0040bc0e
lea edx, [ebp - 0x6ac]
lea eax, [ebp - 0x8b0]
push edx
push eax
push 0
lea ecx, [ebp - 0x3a8]
push 0
push ecx
call fcn.0040bc0e
mov eax, dword [0x4232f0]
add esp, 0x3c
lea ecx, [ebp - 0x14]
mov dword [ebp - 0x14], eax
push 0x68
mov dword [ebp - 0x10], eax
mov dword [ebp - 0x18], eax
call fcn.00418b01
push 0x6e
lea ecx, [ebp - 0x10]
call fcn.00418b01
push 0x69
lea ecx, [ebp - 0x18]
call fcn.00418b01
mov eax, dword [ebp - 0x14]
lea edx, [ebp - 0x3a8]
push edx
push eax
call fcn.0040be40
add esp, 8
test eax, eax
je 0x402954
mov edx, dword [ebp - 0x10]
lea ecx, [ebp - 0x3a8]
push ecx
push edx
call fcn.0040be40
add esp, 8
test eax, eax
je 0x402954
mov ecx, dword [ebp - 0x18]
lea eax, [ebp - 0x3a8]
push eax
push ecx
call fcn.0040be40
add esp, 8
test eax, eax
je 0x402954
mov edx, dword [0x4232f0]
push 0x4263f0
lea eax, [ebp - 4]
push 0x6c
push eax
mov dword [ebp - 4], edx
call fcn.0041a244
mov ecx, dword [ebp - 4]
push 0
push 0
push ecx
call fcn.00419fd2
mov edx, dword [esi]
mov ecx, esi
call dword [edx + 0xc8]
lea ecx, [ebp - 4]
call fcn.004189ec
jmp 0x402e4c
mov ecx, dword [ebp - 0x14]
lea eax, [ebp - 0x3a8]
push eax
push ecx
call fcn.0040be40
add esp, 8
test eax, eax
je 0x40299a
mov eax, dword [ebp - 0x10]
lea edx, [ebp - 0x3a8]
push edx
push eax
call fcn.0040be40
add esp, 8
test eax, eax
je 0x40299a
push 0x3ea
push 0x3eb
push 0x3ea
mov ecx, esi
call fcn.00418583
jmp 0x4029d5
push 0x3eb
push 0x3eb
push 0x3ea
mov ecx, esi
call fcn.00418583
mov edx, dword [ebp - 0x10]
lea ecx, [ebp - 0x3a8]
push ecx
push edx
call fcn.0040be40
add esp, 8
test eax, eax
jne 0x4029d5
push 1
push 0x3fa
mov ecx, esi
call fcn.00418557
lea edi, [ebp - 0x4ac]
or ecx, 0xffffffff
xor eax, eax
repne scasb al, byte es:[edi]
not ecx
dec ecx
jne 0x402a0d
lea eax, [ebp - 0x960]
lea ecx, [ebp - 0x7b0]
push eax
push 0
push ecx
call fcn.00402f90
add esp, 0xc
lea edx, [ebp - 0x7b0]
neg al
sbb eax, eax
and eax, edx
jmp 0x402a13
lea eax, [ebp - 0x4ac]
lea ecx, [ebp - 0x34]
lea edx, [ebp - 0x1a8]
push ecx
push edx
push 0x103
lea ecx, [ebp - 0x3a8]
push 0
push ecx
push eax
call dword [sym.imp.KERNEL32.dll_SearchPathA]
test eax, eax
jne 0x402a74
mov edx, dword [0x4232f0]
push 0x4263f0
lea eax, [ebp - 4]
push 0x6a
push eax
mov dword [ebp - 4], edx
call fcn.0041a244
mov ecx, dword [ebp - 4]
push 0
push 0
push ecx
call fcn.00419fd2
mov edx, dword [esi]
mov ecx, esi
call dword [edx + 0xc8]
lea ecx, [ebp - 4]
call fcn.004189ec
jmp 0x402e4c
lea eax, [ebp - 0x1a8]
mov ecx, esi
push eax
push 0x3f9
call fcn.004185df
lea ecx, [ebp - 0x50]
lea edx, [ebp - 0x1a8]
push ecx
push edx
call sub.VERSION.dll_GetFileVersionInfoSizeA
mov edi, eax
test edi, edi
je 0x402e08
push edi
push 1
call dword [sym.imp.KERNEL32.dll_GetProcessHeap]
push eax
call dword [sym.imp.KERNEL32.dll_HeapAlloc]
mov ebx, eax
test ebx, ebx
jne 0x402ad2
push eax
push eax
push str.not_enough_memory___abort_
call fcn.00419fd2
mov eax, dword [esi]
mov ecx, esi
call dword [eax + 0xc8]
jmp 0x402e4c
push ebx
push edi
lea ecx, [ebp - 0x1a8]
push 0
push ecx
call sub.VERSION.dll_GetFileVersionInfoA
lea edx, [ebp - 0x20]
lea eax, [ebp - 0x1c]
push edx
push eax
xor esi, esi
push str.VarFileInfoTranslation
push ebx
mov dword [ebp - 0x1c], esi
mov dword [ebp - 0x20], esi
call sub.VERSION.dll_VerQueryValueA
mov al, byte [0x42216c]
mov ecx, dword [str.040904E4]
mov edx, dword [0x422168]
mov byte [ebp - 0x28], al
mov eax, dword [ebp - 0x20]
mov dword [ebp - 0x30], ecx
cmp eax, esi
mov dword [ebp - 0x2c], edx
je 0x402b40
mov ecx, dword [ebp - 0x1c]
mov eax, dword [ecx]
mov edx, eax
and eax, 0xffff
shr edx, 0x10
push edx
push eax
lea eax, [ebp - 0x30]
push str._.4X_.4X
push eax
call fcn.0040bde6
add esp, 0x10
or ecx, 0xffffffff
mov edi, str.StringFileInfo_
xor eax, eax
lea edx, [ebp - 0xa4]
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov eax, ecx
mov esi, edi
shr ecx, 2
mov edi, edx
lea edx, [ebp - 0xa4]
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
xor eax, eax
and ecx, 3
mov dword [ebp - 0xc], eax
rep movsb byte es:[edi], byte [esi]
or ecx, 0xffffffff
lea edi, [ebp - 0x30]
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov dword [ebp - 8], eax
mov esi, edi
mov edi, edx
mov edx, ecx
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
mov ecx, edx
dec edi
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
lea edx, [ebp - 0x84]
and ecx, 3
rep movsb byte es:[edi], byte [esi]
lea edi, [ebp - 0xa4]
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov eax, ecx
mov esi, edi
mov edi, edx
lea edx, [ebp - 0x84]
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
xor eax, eax
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov edi, 0x422134
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov esi, edi
mov edi, edx
mov edx, ecx
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
mov ecx, edx
dec edi
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
lea eax, [ebp - 8]
and ecx, 3
push eax
rep movsb byte es:[edi], byte [esi]
lea ecx, [ebp - 0xc]
lea edx, [ebp - 0x84]
push ecx
push edx
push ebx
call sub.VERSION.dll_VerQueryValueA
mov eax, dword [ebp - 8]
test eax, eax
je 0x402c31
push eax
mov eax, dword [ebp - 0xc]
lea ecx, [ebp - 0x4c]
push eax
push ecx
call fcn.0040bb10
mov ecx, dword [ebp - 4]
add esp, 0xc
lea edx, [ebp - 0x4c]
push edx
push 0x3ed
call fcn.004185df
lea edi, [ebp - 0xa4]
or ecx, 0xffffffff
xor eax, eax
lea edx, [ebp - 0x84]
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov eax, ecx
mov esi, edi
mov edi, edx
lea edx, [ebp - 0x84]
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
xor eax, eax
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov edi, 0x422124
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov esi, edi
mov edi, edx
mov edx, ecx
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
mov ecx, edx
dec edi
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
lea eax, [ebp - 8]
and ecx, 3
push eax
rep movsb byte es:[edi], byte [esi]
lea ecx, [ebp - 0xc]
lea edx, [ebp - 0x84]
push ecx
push edx
push ebx
call sub.VERSION.dll_VerQueryValueA
mov eax, dword [ebp - 8]
test eax, eax
je 0x402cc8
push eax
mov eax, dword [ebp - 0xc]
lea ecx, [ebp - 0x4c]
push eax
push ecx
call fcn.0040bb10
mov ecx, dword [ebp - 4]
add esp, 0xc
lea edx, [ebp - 0x4c]
push edx
push 0x3f5
call fcn.004185df
lea edi, [ebp - 0xa4]
or ecx, 0xffffffff
xor eax, eax
lea edx, [ebp - 0x84]
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov eax, ecx
mov esi, edi
mov edi, edx
lea edx, [ebp - 0x84]
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
xor eax, eax
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov edi, 0x422114
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov esi, edi
mov edi, edx
mov edx, ecx
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
mov ecx, edx
dec edi
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
lea eax, [ebp - 8]
and ecx, 3
push eax
rep movsb byte es:[edi], byte [esi]
lea ecx, [ebp - 0xc]
lea edx, [ebp - 0x84]
push ecx
push edx
push ebx
call sub.VERSION.dll_VerQueryValueA
mov eax, dword [ebp - 8]
test eax, eax
je 0x402d5f
push eax
mov eax, dword [ebp - 0xc]
lea ecx, [ebp - 0x4c]
push eax
push ecx
call fcn.0040bb10
mov ecx, dword [ebp - 4]
add esp, 0xc
lea edx, [ebp - 0x4c]
push edx
push 0x3f6
call fcn.004185df
lea edi, [ebp - 0xa4]
or ecx, 0xffffffff
xor eax, eax
lea edx, [ebp - 0x84]
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov eax, ecx
mov esi, edi
mov edi, edx
lea edx, [ebp - 0x84]
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
xor eax, eax
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov edi, 0x422100
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov esi, edi
mov edi, edx
mov edx, ecx
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
mov ecx, edx
dec edi
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
lea eax, [ebp - 8]
and ecx, 3
push eax
rep movsb byte es:[edi], byte [esi]
lea ecx, [ebp - 0xc]
lea edx, [ebp - 0x84]
push ecx
push edx
push ebx
call sub.VERSION.dll_VerQueryValueA
mov eax, dword [ebp - 8]
test eax, eax
je 0x402df6
push eax
mov eax, dword [ebp - 0xc]
lea ecx, [ebp - 0x4c]
push eax
push ecx
call fcn.0040bb10
mov ecx, dword [ebp - 4]
add esp, 0xc
lea edx, [ebp - 0x4c]
push edx
push 0x3f7
call fcn.004185df
push ebx
push 1
call dword [sym.imp.KERNEL32.dll_GetProcessHeap]
push eax
call dword [sym.imp.KERNEL32.dll_HeapFree]
jmp 0x402e4c
push 0x4264f4
push 0x3ed
mov ecx, esi
call fcn.004185df
push 0x4264f4
push 0x3f5
mov ecx, esi
call fcn.004185df
push 0x4264f4
push 0x3f6
mov ecx, esi
call fcn.004185df
push 0x4264f4
push 0x3f7
mov ecx, esi
call fcn.004185df
lea ecx, [ebp - 0x18]
call fcn.004189ec
lea ecx, [ebp - 0x10]
call fcn.004189ec
lea ecx, [ebp - 0x14]
call fcn.004189ec
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret