Function at 0x403ba2
Capabilities:
Resolve function by parsing pe exports

Disassembly:
pushal
popal
push ebp
mov ebp, esp
and esp, 0xfffffff8
sub esp, 0x194
mov eax, dword [0x408004]
xor eax, esp
mov dword [esp + 0x190], eax
push ebx
push esi
xor esi, esi
and dword [0x409124], esi
push edi
xor edi, edi
mov dword [esp + 0x20], esi
mov dword [esp + 0x24], edi
cmp dword [0x408a28], esi
jne 0x403bfd
push 4
mov edx, 0x409a2c
mov ecx, 0x4012c8
call fcn.0040468f
or eax, eax
je 0x403d13
cmp eax, 4
ja 0x403d13
sub ebx, ebx
mov dword [esp + 0x1c], ebx
and dword [esp + 0x14], 0
lea eax, [esp + 0x48]
push 0x44
push 0
push eax
call sub.msvcrt.dll_memset
add esp, 0xc
mov dword [esp + 0x48], 0x44
cmp byte [0x408c42], 0
jne 0x403d35
push 4
lea edx, [esp + 0x1c]
mov ecx, 0x4012d0
call fcn.0040468f
or eax, eax
je 0x403d13
cmp eax, 4
ja 0x403d13
xor eax, eax
inc eax
cmp dword [esp + 0x18], eax
jne 0x403c60
mov dword [esp + 0x74], eax
xor eax, eax
jmp 0x403c6e
cmp dword [esp + 0x18], 2
jne 0x403c75
push 6
mov dword [esp + 0x78], eax
pop eax
mov word [esp + 0x78], ax
jmp 0x403c87
push 3
pop ecx
cmp dword [esp + 0x18], ecx
jne 0x403c87
mov dword [esp + 0x74], eax
mov word [esp + 0x78], cx
or ebx, ebx
jne 0x403d4d
mov ax, word [0x408a38]
test ax, ax
je 0x403cf1
test al, 1
je 0x403ca5
mov ecx, 0x4012dc
jmp 0x403cb2
test al, 2
je 0x403f4d
mov ecx, 0x4012e4
push 0x104
lea edx, [esp + 0x94]
call fcn.0040468f
or eax, eax
je 0x403d13
push 0xffffffffffffffff
push 0x4012c0
push 0xffffffffffffffff
lea eax, [esp + 0x9c]
push eax
push 1
push 0x7f
call dword [sym.imp.KERNEL32.dll_CompareStringA]
sub eax, 2
cmp eax, 0xfffffffe
je 0x403cf1
sub esi, esi
inc esi
mov dword [esp + 0x20], esi
test esi, esi
jne 0x403d9e
push 0x104
lea edx, [esp + 0x94]
mov ecx, 0x4012ec
call fcn.0040468f
or eax, eax
jne 0x403d4d
xor eax, eax
mov edx, 0x4b1
push eax
push 0x10
push eax
push eax
sub ecx, ecx
call fcn.004044b9
mov dword [0x409124], 0x80070714
jmp 0x403f4d
push ecx
push 0x408c42
push ecx
mov edx, 0x104
lea ecx, [esp + 0x9c]
call fcn.00401781
xor esi, esi
inc esi
cmp ebx, esi
jne 0x403d9e
push 0x104
lea edx, [esp + 0x94]
mov ecx, 0x4012f8
call fcn.0040468f
or eax, eax
je 0x403d13
cmp byte [0x408c42], 0
jne 0x403fda
push 0xffffffffffffffff
push 0x4012c0
push 0xffffffffffffffff
lea eax, [esp + 0x9c]
push eax
push esi
push 0x7f
call dword [sym.imp.KERNEL32.dll_CompareStringA]
dec eax
sub eax, esi
je 0x403fda
lea eax, [esp + 0x14]
push eax
lea eax, [esp + 0x14]
push eax
lea ecx, [esp + 0x98]
call fcn.00401ae8
test eax, eax
je 0x403f4d
mov esi, dword [esp + 0x14]
or edi, edi
jne 0x403de6
sub eax, eax
inc eax
cmp word [0x409a40], ax
je 0x403de6
cmp dword [0x408a20], 0
je 0x403de6
or esi, esi
jne 0x403dee
mov dword [esp + 0x24], eax
call fcn.0040202a
or esi, esi
je 0x403f0b
cmp dword [0x408180], 0
je 0x403fab
or esi, esi
je 0x403f0b
test byte [0x409a34], 4
je 0x403f0b
call 0x406495
mov ebx, eax
or ebx, ebx
je 0x403f92
mov esi, str.DoInfInstall
push esi
push ebx
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
mov edx, eax
xor eax, eax
mov dword [esp + 0x14], edx
or edx, edx
je 0x403f64
cmp dword [0x408a30], 0
mov edi, dword [esp + 0x10]
mov dword [esp + 0x28], eax
lea eax, [esp + 0x90]
mov dword [esp + 0x38], eax
mov ax, word [0x409a40]
mov word [esp + 0x3c], ax
movzx eax, word [0x408a38]
mov dword [esp + 0x2c], 0x409154
mov dword [esp + 0x30], edi
mov dword [esp + 0x34], 0x4091e4
mov dword [esp + 0x40], eax
je 0x403e8b
or eax, 0x10000
mov dword [esp + 0x40], eax
mov ecx, dword [0x409a34]
test cl, 8
je 0x403e9f
or eax, 0x20000
mov dword [esp + 0x40], eax
test cl, 0x10
je 0x403ead
or eax, 0x40000
mov dword [esp + 0x40], eax
mov ecx, dword [0x408d48]
test cl, 0x40
je 0x403ec1
or eax, 0x80000
mov dword [esp + 0x40], eax
test cl, cl
jns 0x403ece
or eax, 0x100000
mov dword [esp + 0x40], eax
mov eax, dword [0x409a38]
push esp
pop esi
mov dword [esp + 0x44], eax
push edx
pop ecx
lea eax, [esp + 0x28]
push eax
call dword [0x40a288]
call dword [esp + 0x18]
cmp esi, esp
je 0x403ef5
pushal
popal
push 4
pop ecx
int 0x29
mov dword [0x409124], eax
push ebx
or eax, eax
js 0x403f40
call dword [sym.imp.KERNEL32.dll_FreeLibrary]
mov ebx, dword [esp + 0x1c]
jmp 0x403f1e
mov edi, dword [esp + 0x10]
lea edx, [esp + 0x48]
mov ecx, edi
call fcn.00403fef
or eax, eax
je 0x403f46
push edi
call dword [sym.imp.KERNEL32.dll_LocalFree]
inc ebx
mov dword [esp + 0x1c], ebx
cmp ebx, 2
jae 0x403fd7
mov esi, dword [esp + 0x20]
mov edi, dword [esp + 0x24]
jmp 0x403c03
call dword [sym.imp.KERNEL32.dll_FreeLibrary]
push edi
call dword [sym.imp.KERNEL32.dll_LocalFree]
sub eax, eax
mov ecx, dword [esp + 0x19c]
pop edi
pop esi
pop ebx
xor ecx, esp
call fcn.00406ce0
mov esp, ebp
pop ebp
ret
push eax
push 0x10
push eax
push esi
mov edx, 0x4c9
xor ecx, ecx
call fcn.004044b9
push ebx
call dword [sym.imp.KERNEL32.dll_FreeLibrary]
push dword [esp + 0x10]
call dword [sym.imp.KERNEL32.dll_LocalFree]
call fcn.00406285
mov dword [0x409124], eax
jmp 0x403f4d
sub eax, eax
mov edx, 0x4c8
push eax
push 0x10
push eax
push 0x4011d8
xor ecx, ecx
call fcn.004044b9
jmp 0x403f7c
xor eax, eax
mov edx, 0x4c7
push eax
push 0x10
push eax
push eax
xor ecx, ecx
call fcn.004044b9
push dword [esp + 0x10]
call dword [sym.imp.KERNEL32.dll_LocalFree]
mov dword [0x409124], 0x8007042b
jmp 0x403f4d
sub esi, esi
inc esi
cmp dword [0x408580], 0
je 0x403fe8
call fcn.00402267
push esi
pop eax
jmp 0x403f4f