Function at 0x403630
Capabilities:
Check if file exists
Get file attributes
Get file version info

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x5b9d39
mov eax, dword fs:[0]
push eax
sub esp, 0x308
mov eax, dword [0x6877f0]
xor eax, ebp
mov dword [ebp - 0x10], eax
push ebx
push esi
push edi
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov dword [ebp - 0x194], ecx
mov eax, dword [ebp + 8]
mov dword [ebp - 0x1b0], eax
mov dword [ebp - 0x19c], 0
test eax, eax
je 0x40400d
push eax
call dword [sym.imp.KERNEL32.dll_lstrlenA]
test eax, eax
jle 0x40400d
push 0
push 0x671c3e
lea ecx, [ebp - 0x15c]
mov dword [ebp - 0x14c], 0
mov dword [ebp - 0x148], 0xf
mov byte [ebp - 0x15c], 0
call fcn.0040a020
mov dword [ebp - 4], 0
mov dword [ebp - 0x314], 0x672378
mov dword [ebp - method.std::basic_ios_char__struct_std::char_traits_char__.virtual_0], vtable.std::basic_ios_char__struct_std::char_traits_char__.0
push 0
push 0
lea eax, [ebp - 0x304]
mov byte [ebp - 4], 1
mov ebx, 1
lea ecx, [ebp - 0x314]
push eax
mov dword [ebp - 0x190], ebx
mov dword [ebp - 0x19c], ebx
call fcn.0040a7e0
mov dword [ebp - 4], 2
mov eax, dword [ebp - 0x314]
push ebx
mov eax, dword [eax + 4]
mov dword [ebp + eax - method.std::basic_istringstream_char__struct_std::char_traits_char___class_std::allocator_char__.virtual_0], vtable.std::basic_istringstream_char__struct_std::char_traits_char___class_std::allocator_char__.0
mov eax, dword [ebp - 0x314]
mov ecx, dword [eax + 4]
lea eax, [ecx - 0x60]
mov dword [ebp + ecx - 0x318], eax
lea eax, [ebp - 0x15c]
push eax
lea ecx, [ebp - 0x304]
call fcn.0040a600
mov byte [ebp - 4], 4
mov edx, dword [ebp - 0x148]
cmp edx, 0x10
jb 0x403780
mov ecx, dword [ebp - 0x15c]
inc edx
mov eax, ecx
cmp edx, 0x1000
jb 0x403776
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x40402d
push edx
push ecx
call fcn.00575155
add esp, 8
mov dword [ebp - 0x134], 0
mov dword [ebp - 0x130], 0xf
mov byte [ebp - 0x144], 0
push 0x3b
lea eax, [ebp - 0x144]
mov byte [ebp - 4], 5
push eax
lea eax, [ebp - 0x314]
push eax
call fcn.0040d050
add esp, 0xc
mov ecx, dword [eax]
mov ecx, dword [ecx + 4]
test byte [ecx + eax + 0xc], 6
jne 0x403fa8
nop word [eax + eax]
cmp dword [ebp - 0x130], 0x10
lea edi, [ebp - 0x144]
mov eax, dword [ebp - 0x134]
cmovae edi, dword [ebp - 0x144]
mov dword [ebp - 0x1bc], ebx
cmp eax, 1
jb 0x40384b
lea ebx, [eax + edi]
mov eax, ebx
sub eax, edi
push eax
push 0x7c
push edi
call fcn.0058e3c0
mov esi, eax
add esp, 0xc
test esi, esi
je 0x40383f
nop
movzx eax, byte [esi]
cmp al, 0x7c
jne 0x40381b
xor eax, eax
jmp 0x403820
sbb eax, eax
or eax, 1
test eax, eax
je 0x403b99
inc esi
mov eax, ebx
sub eax, esi
push eax
push 0x7c
push esi
call fcn.0058e3c0
mov esi, eax
add esp, 0xc
test esi, esi
jne 0x403810
mov eax, dword [ebp - 0x134]
mov ebx, dword [ebp - 0x190]
or esi, 0xffffffff
cmp eax, esi
mov dword [ebp - 0x164], 0
mov ecx, esi
mov dword [ebp - 0x160], 0xf
cmovb ecx, eax
mov byte [ebp - 0x174], 0
cmp dword [ebp - 0x130], 0x10
lea eax, [ebp - 0x144]
push ecx
cmovae eax, dword [ebp - 0x144]
lea ecx, [ebp - 0x174]
push eax
call fcn.0040a020
mov byte [ebp - 4], 6
inc esi
mov eax, dword [ebp - 0x134]
mov dword [ebp - 0x11c], 0
mov dword [ebp - 0x118], 0xf
mov byte [ebp - 0x12c], 0
cmp eax, esi
jb 0x404046
sub eax, esi
or ecx, 0xffffffff
cmp eax, 0xffffffff
cmovb ecx, eax
cmp dword [ebp - 0x130], 0x10
lea eax, [ebp - 0x144]
cmovae eax, dword [ebp - 0x144]
push ecx
add eax, esi
lea ecx, [ebp - 0x12c]
push eax
call fcn.0040a020
push 0x104
lea eax, [ebp - 0x114]
mov byte [ebp - 4], 7
push 0
push eax
call fcn.0058db90
cmp dword [ebp - 0x160], 0x10
lea eax, [ebp - 0x174]
cmovae eax, dword [ebp - 0x174]
push eax
push dword [ebp - 0x1b0]
lea eax, [ebp - 0x114]
push str._s_s
push eax
call dword [sym.imp.USER32.dll_wsprintfA]
add esp, 0x1c
lea eax, [ebp - 0x114]
push eax
call dword [sym.imp.KERNEL32.dll_GetFileAttributesA]
cmp eax, 0xffffffff
je 0x403efb
lea eax, [ebp - 0x1b4]
mov dword [ebp - 0x1b4], 0
push eax
lea eax, [ebp - 0x114]
push eax
call dword [sym.imp.VERSION.dll_GetFileVersionInfoSizeA]
mov esi, eax
test esi, esi
je 0x403eed
lea eax, [ebp - 0x195]
push eax
push esi
lea ecx, [ebp - 0x1ac]
call fcn.00406600
mov byte [ebp - 4], 8
lea eax, [ebp - 0x114]
mov edi, dword [ebp - 0x1ac]
push edi
push esi
push 0
push eax
call dword [sym.imp.VERSION.dll_GetFileVersionInfoA]
test eax, eax
je 0x403e9d
lea eax, [ebp - 0x1b8]
mov dword [ebp - 0x1b8], 0
push eax
lea eax, [ebp - 0x1a0]
mov dword [ebp - 0x1a0], 0
push eax
push 0x671d44
push edi
call dword [sym.imp.VERSION.dll_VerQueryValueA]
test eax, eax
je 0x403e8f
mov dword [ebp - 0x26c], 0x672380
mov dword [ebp - 0x25c], 0x67234c
mov dword [ebp - method.std::basic_ios_char__struct_std::char_traits_char__.virtual_0], vtable.std::basic_ios_char__struct_std::char_traits_char__.0
push 0
push 0
lea eax, [ebp - 0x254]
mov byte [ebp - 4], 9
or ebx, 0xe
lea ecx, [ebp - 0x26c]
push eax
mov dword [ebp - 0x19c], ebx
call fcn.0040a7e0
lea eax, [ebp - 0x25c]
mov dword [ebp - 0x190], eax
mov eax, dword [ebp - 0x25c]
mov eax, dword [eax + 4]
mov dword [ebp + eax - method.std::basic_ostream_char__struct_std::char_traits_char__.virtual_0], vtable.std::basic_ostream_char__struct_std::char_traits_char__.0
mov eax, dword [ebp - 0x25c]
mov ecx, dword [eax + 4]
lea eax, [ecx - 8]
mov dword [ebp + ecx - 0x260], eax
mov eax, dword [ebp - 0x26c]
mov eax, dword [eax + 4]
mov dword [ebp + eax - method.std::basic_iostream_char__struct_std::char_traits_char__.virtual_0], vtable.std::basic_iostream_char__struct_std::char_traits_char__.0
mov eax, dword [ebp - 0x26c]
mov ecx, dword [eax + 4]
lea eax, [ecx - 0x20]
mov dword [ebp + ecx - 0x270], eax
mov dword [ebp - 4], 0xd
mov eax, dword [ebp - 0x26c]
mov eax, dword [eax + 4]
mov dword [ebp + eax - method.std::basic_stringstream_char__struct_std::char_traits_char___class_std::allocator_char__.virtual_0], vtable.std::basic_stringstream_char__struct_std::char_traits_char___class_std::allocator_char__.0
mov eax, dword [ebp - 0x26c]
mov ecx, dword [eax + 4]
lea eax, [ecx - 0x68]
mov dword [ebp + ecx - 0x270], eax
lea ecx, [ebp - 0x254]
call fcn.0040ba60
mov dword [ebp - method.std::basic_stringbuf_char__struct_std::char_traits_char___class_std::allocator_char__.virtual_0], vtable.std::basic_stringbuf_char__struct_std::char_traits_char___class_std::allocator_char__.0
mov dword [ebp - 0x21c], 0
mov dword [ebp - 0x218], 0
mov byte [ebp - 4], 0xe
mov ecx, dword [ebp - 0x1a0]
movzx eax, word [ecx + 0xc]
push eax
movzx eax, word [ecx + 0xe]
push 0x671dfc
push eax
movzx eax, word [ecx + 8]
push 0x671dfc
push eax
movzx eax, word [ecx + 0xa]
lea ecx, [ebp - 0x25c]
push 0x671dfc
push eax
call fcn.00408330
push eax
call fcn.0040c330
add esp, 8
mov ecx, eax
call fcn.00408330
push eax
call fcn.0040c330
add esp, 8
mov ecx, eax
call fcn.00408330
push eax
call fcn.0040c330
add esp, 8
mov ecx, eax
call fcn.00408330
mov ebx, dword [ebp - 0x1bc]
mov byte [ebp - 4], 0xf
mov dword [ebp - 0x14c], 0
mov dword [ebp - 0x148], 0xf
mov byte [ebp - 0x15c], 0
mov ecx, dword [ebp - 0x218]
or ebx, 0x8e
mov dword [ebp - 0x19c], ebx
test cl, 2
jne 0x403bac
mov eax, dword [ebp - 0x234]
mov edx, dword [eax]
test edx, edx
je 0x403bac
mov eax, dword [ebp - 0x244]
cmp edx, dword [ebp - 0x21c]
cmovb edx, dword [ebp - 0x21c]
mov ecx, dword [eax]
sub edx, ecx
jmp 0x403bcf
mov eax, dword [ebp - 0x134]
sub esi, edi
mov ebx, dword [ebp - 0x190]
jmp 0x40384e
test cl, 4
jne 0x403bdc
mov eax, dword [ebp - 0x238]
mov edx, dword [eax]
test edx, edx
je 0x403bdc
mov eax, dword [ebp - 0x248]
mov ecx, dword [eax]
sub edx, ecx
mov eax, dword [ebp - 0x228]
add edx, dword [eax]
push edx
push ecx
lea ecx, [ebp - 0x15c]
call fcn.0040a020
and ebx, 0xffffff7f
mov dword [ebp - 4], 0xe
mov esi, dword [ebp - 0x11c]
lea ecx, [ebp - 0x15c]
mov eax, dword [ebp - 0x14c]
lea edx, [ebp - 0x12c]
or ebx, 0x40
cmp dword [ebp - 0x148], 0x10
mov dword [ebp - 0x190], ebx
mov ebx, dword [ebp - 0x15c]
cmovae ecx, ebx
cmp dword [ebp - 0x118], 0x10
cmovae edx, dword [ebp - 0x12c]
cmp eax, esi
cmovb esi, eax
sub esi, 4
jb 0x403c43
mov eax, dword [edx]
cmp eax, dword [ecx]
jne 0x403c48
add edx, 4
add ecx, 4
sub esi, 4
jae 0x403c32
cmp esi, 0xfffffffc
je 0x403c7c
mov al, byte [edx]
cmp al, byte [ecx]
jne 0x403c75
cmp esi, 0xfffffffd
je 0x403c7c
mov al, byte [edx + 1]
cmp al, byte [ecx + 1]
jne 0x403c75
cmp esi, 0xfffffffe
je 0x403c7c
mov al, byte [edx + 2]
cmp al, byte [ecx + 2]
jne 0x403c75
cmp esi, 0xffffffff
je 0x403c7c
mov al, byte [edx + 3]
cmp al, byte [ecx + 3]
je 0x403c7c
sbb esi, esi
or esi, 1
jmp 0x403c7e
xor esi, esi
test esi, esi
jne 0x403c9b
mov eax, dword [ebp - 0x14c]
mov ecx, dword [ebp - 0x11c]
cmp eax, ecx
jbe 0x403c97
or esi, 0xffffffff
jmp 0x403c9b
sbb esi, esi
neg esi
mov eax, dword [ebp - 0x148]
cmp eax, 0x10
jb 0x403cd1
lea ecx, [eax + 1]
mov eax, ebx
cmp ecx, 0x1000
jb 0x403cc7
mov ebx, dword [ebx - 4]
add ecx, 0x23
sub eax, ebx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x40402d
push ecx
push ebx
call fcn.00575155
add esp, 8
lea ecx, [ebp - 0x26c]
test esi, esi
jne 0x403e04
call fcn.00404060
mov byte [ebp - 4], 7
test edi, edi
je 0x403d3a
mov ecx, dword [ebp - 0x1a4]
mov eax, edi
sub ecx, edi
cmp ecx, 0x1000
jb 0x403d12
mov edi, dword [edi - 4]
add ecx, 0x23
sub eax, edi
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x40402d
push ecx
push edi
call fcn.00575155
add esp, 8
mov dword [ebp - 0x1ac], 0
mov dword [ebp - 0x1a8], 0
mov dword [ebp - 0x1a4], 0
mov byte [ebp - 4], 6
mov edx, dword [ebp - 0x118]
cmp edx, 0x10
jb 0x403d78
mov ecx, dword [ebp - 0x12c]
inc edx
mov eax, ecx
cmp edx, 0x1000
jb 0x403d6e
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x40402d
push edx
push ecx
call fcn.00575155
add esp, 8
mov byte [ebp - 4], 5
mov edx, dword [ebp - 0x160]
mov dword [ebp - 0x11c], 0
mov dword [ebp - 0x118], 0xf
mov byte [ebp - 0x12c], 0
cmp edx, 0x10
jb 0x403dd1
mov ecx, dword [ebp - 0x174]
inc edx
mov eax, ecx
cmp edx, 0x1000
jb 0x403dc7
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x40402d
push edx
push ecx
call fcn.00575155
add esp, 8
push 0x3b
lea eax, [ebp - 0x144]
push eax
lea eax, [ebp - 0x314]
push eax
call fcn.0040d050
add esp, 0xc
mov ecx, dword [eax]
mov ecx, dword [ecx + 4]
test byte [ecx + eax + 0xc], 6
jne 0x403fa8
mov ebx, dword [ebp - 0x190]
jmp 0x4037d0
lea eax, [ebp - 0x18c]
push eax
call fcn.00407bf0
cmp dword [eax + 0x14], 0x10
jb 0x403e18
mov eax, dword [eax]
cmp dword [ebp - 0x118], 0x10
lea edx, [ebp - 0x114]
push edx
lea ecx, [ebp - 0x12c]
cmovae ecx, dword [ebp - 0x12c]
push eax
push ecx
push str.ComponentVersion_failed:_Incorrect_version___expected:_s_actual:_s_file:_s
push dword [ebp - 0x194]
call fcn.00406510
mov edx, dword [ebp - 0x178]
add esp, 0x14
cmp edx, 0x10
jb 0x403e82
mov ecx, dword [ebp - 0x18c]
inc edx
mov eax, ecx
cmp edx, 0x1000
jb 0x403e78
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x404032
push edx
push ecx
call fcn.00575155
add esp, 8
lea ecx, [ebp - 0x26c]
call fcn.00404060
jmp 0x403eb7
lea eax, [ebp - 0x114]
push eax
push str.ComponentVersion_failed:_Failed_to_verify_query____s
jmp 0x403ea9
lea eax, [ebp - 0x114]
push eax
push str.ComponentVersion_failed:_unable_to_get_version_info____s
push dword [ebp - 0x194]
call fcn.00406510
add esp, 0xc
test edi, edi
je 0x403f15
mov ecx, dword [ebp - 0x1a4]
mov eax, edi
sub ecx, edi
cmp ecx, 0x1000
jb 0x403ee1
mov edi, dword [edi - 4]
add ecx, 0x23
sub eax, edi
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x404037
push ecx
push edi
call fcn.00575155
add esp, 8
jmp 0x403f15
lea eax, [ebp - 0x114]
push eax
push str.ComponentVersion_failed:_unable_to_get_version_info_size____s
jmp 0x403f07
lea eax, [ebp - 0x114]
push eax
push str.ComponentVersion_failed:_File_does_not_exist____s
push dword [ebp - 0x194]
call fcn.00406510
add esp, 0xc
mov edx, dword [ebp - 0x118]
cmp edx, 0x10
jb 0x403f4f
mov ecx, dword [ebp - 0x12c]
inc edx
mov eax, ecx
cmp edx, 0x1000
jb 0x403f45
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x40403c
push edx
push ecx
call fcn.00575155
add esp, 8
mov edx, dword [ebp - 0x160]
mov dword [ebp - 0x11c], 0
mov dword [ebp - 0x118], 0xf
mov byte [ebp - 0x12c], 0
cmp edx, 0x10
jb 0x403fa4
mov ecx, dword [ebp - 0x174]
inc edx
mov eax, ecx
cmp edx, 0x1000
jb 0x403f9a
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x404041
push edx
push ecx
call fcn.00575155
add esp, 8
xor esi, esi
jmp 0x403fad
mov esi, 1
mov edx, dword [ebp - 0x130]
cmp edx, 0x10
jb 0x403fe3
mov ecx, dword [ebp - 0x144]
inc edx
mov eax, ecx
cmp edx, 0x1000
jb 0x403fd9
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x40404b
push edx
push ecx
call fcn.00575155
add esp, 8
lea ecx, [ebp - 0x314]
mov dword [ebp - 0x134], 0
mov dword [ebp - 0x130], 0xf
mov byte [ebp - 0x144], 0
call fcn.004035a0
mov eax, esi
jmp 0x40400f
xor eax, eax
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 0x10]
xor ecx, ebp
call fcn.00574c7a
mov esp, ebp
pop ebp
ret 8
call fcn.0059b248
call fcn.0059b248
call fcn.0059b248
call fcn.0059b248
call fcn.0059b248
call fcn.0040bc90
call fcn.0059b248
int3