Function at 0x100040f0
Capabilities:
Get file version info

Disassembly:
sub esp, 0xf4
mov eax, dword [0x1001703c]
xor eax, esp
mov dword [esp + 0xf0], eax
push ebp
push esi
push edi
lea eax, [esp + 0x2c]
mov edi, ecx
push eax
xor ebp, ebp
push edi
mov dword [esp + 0x34], ebp
call sub.VERSION.dll_GetFileVersionInfoSizeW
mov esi, eax
cmp esi, ebp
ja 0x1000413a
pop edi
pop esi
xor eax, eax
pop ebp
mov ecx, dword [esp + 0xf0]
xor ecx, esp
call fcn.1000536e
add esp, 0xf4
ret
push ebx
push esi
call fcn.100053f2
add esp, 4
mov ebx, eax
push ebx
push esi
push ebp
push edi
mov dword [esp + 0x2c], ebx
call sub.VERSION.dll_GetFileVersionInfoW
lea ecx, [esp + 0x2c]
push ecx
lea edx, [esp + 0x38]
push edx
push str.VarFileInfoTranslation
push ebx
call sub.VERSION.dll_VerQueryValueA
test dword [esp + 0x2c], 0xfffffffc
mov dword [esp + 0x14], ebp
mov dword [esp + 0x28], ebp
mov dword [esp + 0x20], ebp
mov dword [esp + 0x24], 1
mov dword [esp + 0x18], ebp
jbe 0x1000443f
mov edi, edi
mov dword [esp + 0x10], 0
jmp 0x100041a0
mov esi, dword [esp + 0x10]
mov eax, dword [esi*4 + 0x10017f90]
mov ecx, dword [esp + 0x18]
push eax
mov eax, dword [esp + 0x38]
movzx edx, word [eax + ecx*4 + 2]
movzx eax, word [eax + ecx*4]
push edx
push eax
push str.StringFileInfo_04x_04x_s
mov ecx, 0x64
lea edi, [esp + 0xac]
call fcn.10001100
add esp, 0x10
lea ecx, [esp + 0x14]
push ecx
mov ecx, dword [esp + 0x20]
lea edx, [esp + 0x2c]
push edx
mov eax, edi
push eax
push ecx
call sub.VERSION.dll_VerQueryValueA
test esi, esi
jne 0x10004206
cmp dword [esp + 0x14], esi
ja 0x10004415
mov dword [esp + 0x24], esi
jmp 0x10004415
cmp esi, 1
je 0x10004214
cmp esi, 2
jne 0x10004415
cmp dword [esp + 0x14], 0
jbe 0x10004415
mov esi, dword [esp + 0x28]
lea eax, [esp + 0x38]
mov ecx, eax
mov edx, 0x64
sub esi, ecx
lea ecx, [edx + 0x7fffff9a]
test ecx, ecx
je 0x1000424b
mov cl, byte [esi + eax]
test cl, cl
je 0x1000424b
mov byte [eax], cl
inc eax
sub edx, 1
jne 0x10004230
jmp 0x1000424f
test edx, edx
jne 0x10004250
dec eax
mov byte [eax], 0
mov ecx, 0x64
lea eax, [esp + 0x38]
lea esp, [esp]
cmp byte [eax], 0
je 0x1000446d
inc eax
sub ecx, 1
jne 0x10004260
xor ebp, ebp
mov ecx, 0x64
mov eax, str.Setup
jmp 0x10004280
cmp byte [eax], 0
je 0x10004481
inc eax
sub ecx, 1
jne 0x10004280
xor ebx, ebx
push ebp
call fcn.100053f2
push ebx
mov esi, eax
call fcn.100053f2
push ebp
lea edx, [esp + 0x44]
push edx
push esi
mov edi, eax
call fcn.1000c670
push ebx
push str.Setup
push edi
call fcn.1000c670
add esp, 0x20
xor ecx, ecx
xor edx, edx
test ebp, ebp
jbe 0x100042e2
mov al, byte [ecx + esi]
cmp al, 0x20
jb 0x100042dd
cmp al, 0x7f
jae 0x100042dd
cmp al, 0x61
jb 0x100042d9
cmp al, 0x7a
ja 0x100042d9
sub al, 0x20
mov byte [edx + esi], al
inc edx
inc ecx
cmp ecx, ebp
jb 0x100042c4
xor ebp, ebp
xor ecx, ecx
test ebx, ebx
jbe 0x1000430e
lea ebx, [ebx]
mov al, byte [edi + ebp]
cmp al, 0x20
jb 0x10004309
cmp al, 0x7f
jae 0x10004309
cmp al, 0x61
jb 0x10004305
cmp al, 0x7a
ja 0x10004305
sub al, 0x20
mov byte [ecx + edi], al
inc ecx
inc ebp
cmp ebp, ebx
jb 0x100042f0
push ecx
push edi
push edx
mov eax, esi
call fcn.10004930
push esi
mov ebp, eax
call fcn.1000537d
push edi
call fcn.1000537d
add esp, 0x14
test ebp, ebp
ja 0x1000440d
mov ecx, 0x64
lea eax, [esp + 0x38]
lea ebx, [ebx]
cmp byte [eax], 0
je 0x10004495
inc eax
sub ecx, 1
jne 0x10004340
xor ebp, ebp
mov ecx, 0x64
mov eax, str.Install
jmp 0x10004360
cmp byte [eax], 0
je 0x100044a9
inc eax
sub ecx, 1
jne 0x10004360
xor ebx, ebx
push ebp
call fcn.100053f2
push ebx
mov esi, eax
call fcn.100053f2
mov edi, eax
push ebp
lea eax, [esp + 0x44]
push eax
push esi
call fcn.1000c670
push ebx
push str.Install
push edi
call fcn.1000c670
add esp, 0x20
xor ecx, ecx
xor edx, edx
test ebp, ebp
jbe 0x100043c2
mov al, byte [ecx + esi]
cmp al, 0x20
jb 0x100043bd
cmp al, 0x7f
jae 0x100043bd
cmp al, 0x61
jb 0x100043b9
cmp al, 0x7a
ja 0x100043b9
sub al, 0x20
mov byte [edx + esi], al
inc edx
inc ecx
cmp ecx, ebp
jb 0x100043a4
xor ebp, ebp
xor ecx, ecx
test ebx, ebx
jbe 0x100043ee
lea ebx, [ebx]
mov al, byte [edi + ebp]
cmp al, 0x20
jb 0x100043e9
cmp al, 0x7f
jae 0x100043e9
cmp al, 0x61
jb 0x100043e5
cmp al, 0x7a
ja 0x100043e5
sub al, 0x20
mov byte [ecx + edi], al
inc ecx
inc ebp
cmp ebp, ebx
jb 0x100043d0
push ecx
push edi
push edx
mov eax, esi
call fcn.10004930
push esi
mov ebp, eax
call fcn.1000537d
push edi
call fcn.1000537d
add esp, 0x14
test ebp, ebp
jbe 0x10004415
mov dword [esp + 0x20], 1
mov eax, dword [esp + 0x10]
inc eax
mov dword [esp + 0x10], eax
cmp eax, 0xc
jb 0x100041a0
mov eax, dword [esp + 0x18]
mov ecx, dword [esp + 0x2c]
inc eax
shr ecx, 2
mov dword [esp + 0x18], eax
cmp eax, ecx
jb 0x10004190
mov edx, dword [esp + 0x1c]
push edx
call fcn.1000537d
mov ecx, dword [esp + 0x104]
mov eax, dword [esp + 0x28]
and eax, dword [esp + 0x24]
add esp, 4
pop ebx
pop edi
pop esi
pop ebp
xor ecx, esp
call fcn.1000536e
add esp, 0xf4
ret
test ecx, ecx
je 0x1000426f
mov ebp, 0x64
sub ebp, ecx
jmp 0x10004271
test ecx, ecx
je 0x1000428f
mov ebx, 0x64
sub ebx, ecx
jmp 0x10004291
test ecx, ecx
je 0x1000434f
mov ebp, 0x64
sub ebp, ecx
jmp 0x10004351
test ecx, ecx
je 0x1000436f
mov ebx, 0x64
sub ebx, ecx
jmp 0x10004371