Function at 0x40107d
Capabilities:
Accept command line arguments
Check if file exists
Get file attributes

Disassembly:
sub esp, 0x58
and dword [esp], 0
push ebx
push ebp
push esi
push edi
lea eax, [esp + 0x10]
push eax
call dword [sym.imp.KERNEL32.dll_GetCommandLineW]
push eax
call dword [sym.imp.SHELL32.dll_CommandLineToArgvW]
mov edi, dword [sym.imp.SHLWAPI.dll_StrCmpW]
or ebx, 0xffffffff
cmp dword [esp + 0x10], 3
mov esi, eax
mov ebp, str._runtime
jl 0x4010be
push ebp
push dword [esi + 4]
call edi
test eax, eax
jne 0x4010be
push 2
pop ebx
cmp dword [esp + 0x10], 5
jl 0x4010d2
push ebp
push dword [esi + 0xc]
call edi
test eax, eax
jne 0x4010d2
push 4
pop ebx
test byte [esp + 0x70], 1
mov edi, dword [sym.imp.KERNEL32.dll_GetProcessHeap]
je 0x401191
cmp ebx, 0xffffffff
je 0x401191
mov ebx, dword [esi + ebx*4]
xor ecx, ecx
xor eax, eax
xor ebp, ebp
cmp word [ebx], cx
mov dword [esp + 0x14], eax
je 0x401105
inc ebp
cmp word [ebx + ebp*2], cx
jne 0x4010fe
cmp word [str.Adobe_AIRVersions1.0Adobe_AIR.dll], cx
je 0x40111d
inc eax
cmp word [eax*2 + str.Adobe_AIRVersions1.0Adobe_AIR.dll], cx
jne 0x40110e
mov dword [esp + 0x14], eax
add eax, ebp
lea eax, [eax + eax + 2]
push eax
push ecx
call edi
push eax
call dword [sym.imp.KERNEL32.dll_HeapAlloc]
mov esi, eax
xor eax, eax
test ebp, ebp
jbe 0x401148
mov ecx, esi
sub ebx, esi
mov eax, ebp
mov dx, word [ebx + ecx]
mov word [ecx], dx
inc ecx
inc ecx
dec ebp
jne 0x40113c
xor ecx, ecx
cmp dword [esp + 0x14], ecx
jbe 0x401164
mov dx, word [ecx*2 + str.Adobe_AIRVersions1.0Adobe_AIR.dll]
inc ecx
mov word [esi + eax*2], dx
inc eax
cmp ecx, dword [esp + 0x14]
jb 0x401150
and word [esi + eax*2], 0
push esi
call dword [sym.imp.KERNEL32.dll_GetFileAttributesW]
cmp eax, 0xffffffff
jne 0x401189
push esi
push 0
call edi
push eax
call dword [sym.imp.KERNEL32.dll_HeapFree]
push 3
pop eax
jmp 0x401318
test esi, esi
jne 0x4012db
test byte [esp + 0x70], 2
mov ebp, 0x20a
mov ebx, 0x105
je 0x4011ea
push ebp
push 0
call edi
push eax
call dword [sym.imp.KERNEL32.dll_HeapAlloc]
push 0
push str.Adobe_AIRVersions1.0Adobe_AIR.dll
mov esi, eax
push ebx
push esi
call section..text
add esp, 0x10
test al, al
jne 0x4011c9
push 4
jmp 0x401183
push esi
call dword [sym.imp.KERNEL32.dll_GetFileAttributesW]
cmp eax, 0xffffffff
jne 0x4011e2
push esi
xor esi, esi
push esi
call edi
push eax
call dword [sym.imp.KERNEL32.dll_HeapFree]
test esi, esi
jne 0x4012db
test byte [esp + 0x70], 4
je 0x401254
push ebp
push 0
call edi
push eax
call dword [sym.imp.KERNEL32.dll_HeapAlloc]
push 1
push str.runtimeAdobe_AIRVersions1.0Adobe_AIR.dll
mov esi, eax
push ebx
push esi
call section..text
add esp, 0x10
test al, al
je 0x4011c5
mov ebp, dword [sym.imp.KERNEL32.dll_GetFileAttributesW]
push esi
call ebp
cmp eax, 0xffffffff
jne 0x40124c
push 1
push str.runtimes_airwinAdobe_AIRVersions1.0Adobe_AIR.dll
push ebx
push esi
call section..text
add esp, 0x10
test al, al
je 0x4011c5
push esi
call ebp
cmp eax, 0xffffffff
jne 0x40124c
push esi
xor esi, esi
push esi
call edi
push eax
call dword [sym.imp.KERNEL32.dll_HeapFree]
test esi, esi
jne 0x4012db
test byte [esp + 0x70], 8
je 0x401181
lea eax, [esp + 0x18]
push eax
push 0
push 0
push str.8DA920D5_C41C_42E0_BF31_87BA49984EE4
call sub.msi.dll_MsiSourceListClearAllW
test eax, eax
jne 0x401181
lea eax, [esp + 0x70]
push eax
xor ebp, ebp
push ebp
mov ebx, str.701D2A09_14BE_45F8_9233_1CE0ED0023A9
push ebx
lea eax, [esp + 0x24]
push eax
mov dword [esp + 0x80], ebp
call sub.msi.dll_MsiAdvertiseScriptW
inc dword [esp + 0x70]
mov eax, dword [esp + 0x70]
add eax, eax
push eax
push ebp
call edi
push eax
call dword [sym.imp.KERNEL32.dll_HeapAlloc]
mov esi, eax
cmp esi, ebp
je 0x4011c5
lea eax, [esp + 0x70]
push eax
push esi
push ebx
lea eax, [esp + 0x24]
push eax
call sub.msi.dll_MsiAdvertiseScriptW
cmp eax, 3
jl 0x4011c5
cmp eax, 4
jg 0x4011c5
push esi
call dword [sym.imp.KERNEL32.dll_LoadLibraryW]
test eax, eax
mov ebx, dword [esp + 0x78]
mov dword [ebx], eax
je 0x4011c5
push esi
push 0
call edi
push eax
call dword [sym.imp.KERNEL32.dll_HeapFree]
push dword [esp + 0x6c]
push dword [ebx]
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
mov ecx, dword [esp + 0x74]
mov dword [ecx], eax
neg eax
sbb eax, eax
and eax, 0xfffffffc
add eax, 4
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x58
ret