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

Disassembly:
mov edi, edi
push ebp
mov ebp, esp
and esp, 0xfffffff8
sub esp, 0x194
mov eax, dword [section..data]
xor eax, esp
mov dword [esp + 0x190], eax
push ebx
xor ebx, ebx
push esi
push edi
push ebx
pop edi
mov dword [esp + 0x24], ebx
mov dword [esp + 0x18], edi
mov dword [0x409a88], ebx
cmp dword [0x408948], ebx
jne 0x403974
push 4
mov edx, 0x409a6c
mov ecx, 0x401218
call fcn.004043c1
or eax, eax
je 0x403954
cmp eax, 4
jbe 0x403974
push ebx
push 0x10
push ebx
push ebx
mov edx, 0x4b1
sub ecx, ecx
call fcn.004041b0
mov dword [0x409a88], 0x80070714
jmp 0x403ca1
push ebx
pop esi
mov ebx, dword [sym.imp.KERNEL32.dll_LocalFree]
mov dword [esp + 0x1c], esi
and dword [esp + 0x20], 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 [0x408b62], 0
jne 0x403a9c
push 4
lea edx, [esp + 0x18]
mov ecx, 0x401220
call fcn.004043c1
or eax, eax
je 0x403a90
cmp eax, 4
ja 0x403a90
sub eax, eax
inc eax
cmp dword [esp + 0x14], eax
jne 0x4039dd
mov dword [esp + 0x74], eax
sub eax, eax
jmp 0x4039eb
cmp dword [esp + 0x14], 2
jne 0x4039f2
push 6
mov dword [esp + 0x78], eax
pop eax
mov word [esp + 0x78], ax
jmp 0x403a04
push 3
pop ecx
cmp dword [esp + 0x14], ecx
jne 0x403a04
mov dword [esp + 0x74], eax
mov word [esp + 0x78], cx
test esi, esi
jne 0x403ab4
mov ax, word [0x408958]
test ax, ax
je 0x403a6e
test al, 1
je 0x403a22
mov ecx, 0x40122c
jmp 0x403a2f
test al, 2
je 0x403ca1
mov ecx, 0x401234
push 0x104
lea edx, [esp + 0x94]
call fcn.004043c1
test eax, eax
je 0x403a90
push 0xffffffffffffffff
push 0x401210
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 0x403a6e
sub edi, edi
inc edi
mov dword [esp + 0x18], edi
or edi, edi
jne 0x403b07
push 0x104
lea edx, [esp + 0x94]
mov ecx, 0x40123c
call fcn.004043c1
or eax, eax
jne 0x403ab4
xor eax, eax
push eax
push 0x10
push eax
push eax
jmp 0x403959
push ecx
push 0x408b62
push ecx
mov edx, 0x104
lea ecx, [esp + 0x9c]
call fcn.0040150c
xor eax, eax
inc eax
cmp esi, eax
jne 0x403b07
push 0x104
lea edx, [esp + 0x94]
mov ecx, 0x401248
call fcn.004043c1
or eax, eax
je 0x403a90
xor esi, esi
inc esi
cmp byte [0x408b62], 0
jne 0x403c86
push 0xffffffffffffffff
push 0x401210
push 0xffffffffffffffff
lea eax, [esp + 0x9c]
push eax
push esi
push 0x7f
call dword [sym.imp.KERNEL32.dll_CompareStringA]
dec eax
dec eax
je 0x403c86
lea eax, [esp + 0x20]
push eax
lea eax, [esp + 0x14]
push eax
lea ecx, [esp + 0x98]
call fcn.00401869
test eax, eax
je 0x403ca1
cmp dword [esp + 0x24], 0
mov esi, dword [esp + 0x20]
jne 0x403b52
xor eax, eax
inc eax
cmp word [0x409a80], ax
je 0x403b52
cmp dword [0x408940], 0
je 0x403b52
or esi, esi
jne 0x403b5a
mov dword [esp + 0x24], eax
call fcn.00401dc2
test esi, esi
je 0x403c5b
cmp dword [0x4081c4], 0
je 0x403cfd
test esi, esi
je 0x403c5b
test byte [0x409a74], 4
je 0x403c5b
call fcn.00406172
push eax
pop edi
test edi, edi
je 0x403ce4
mov esi, str.DoInfInstall
push esi
push edi
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
push eax
pop edx
or edx, edx
je 0x403cb8
and dword [esp + 0x28], 0
lea eax, [esp + 0x90]
cmp dword [0x408950], 0
mov esi, dword [esp + 0x10]
mov dword [esp + 0x38], eax
mov ax, word [0x409a80]
mov word [esp + 0x3c], ax
movzx eax, word [0x408958]
mov dword [esp + 0x2c], 0x409194
mov dword [esp + 0x30], esi
mov dword [esp + 0x34], 0x409224
mov dword [esp + 0x40], eax
je 0x403bf2
or eax, 0x10000
mov dword [esp + 0x40], eax
mov ecx, dword [0x409a74]
test cl, 8
je 0x403c06
or eax, 0x20000
mov dword [esp + 0x40], eax
test cl, 0x10
je 0x403c14
or eax, 0x40000
mov dword [esp + 0x40], eax
mov ecx, dword [0x408c68]
test cl, 0x40
je 0x403c28
or eax, 0x80000
mov dword [esp + 0x40], eax
test cl, cl
jns 0x403c35
or eax, 0x100000
mov dword [esp + 0x40], eax
mov eax, dword [0x409a78]
mov dword [esp + 0x44], eax
lea eax, [esp + 0x28]
push eax
call edx
mov dword [0x409a88], eax
push edi
test eax, eax
js 0x403c98
call dword [sym.imp.KERNEL32.dll_FreeLibrary]
mov edi, dword [esp + 0x18]
jmp 0x403c6e
mov esi, dword [esp + 0x10]
lea edx, [esp + 0x48]
push esi
pop ecx
call fcn.00403d2a
or eax, eax
je 0x403c9e
push esi
call ebx
mov esi, dword [esp + 0x1c]
inc esi
mov dword [esp + 0x1c], esi
cmp esi, 2
jb 0x403980
xor esi, esi
inc esi
cmp dword [0x40856c], 0
je 0x403c94
call fcn.0040200e
mov eax, esi
jmp 0x403ca3
call dword [sym.imp.KERNEL32.dll_FreeLibrary]
push esi
call ebx
xor eax, eax
mov ecx, dword [esp + 0x19c]
pop edi
pop esi
pop ebx
xor ecx, esp
call fcn.004069ed
mov esp, ebp
pop ebp
ret
push 0
push 0x10
push 0
push esi
mov edx, 0x4c9
xor ecx, ecx
call fcn.004041b0
push edi
call dword [sym.imp.KERNEL32.dll_FreeLibrary]
push dword [esp + 0x10]
call ebx
call fcn.00405f71
mov dword [0x409a88], eax
jmp 0x403ca1
push 0
push 0x10
push 0
push 0x401128
mov edx, 0x4c8
sub ecx, ecx
call fcn.004041b0
jmp 0x403cd2
xor eax, eax
mov edx, 0x4c7
push eax
push 0x10
push eax
push eax
sub ecx, ecx
call fcn.004041b0
push dword [esp + 0x10]
call ebx
mov dword [0x409a88], 0x8007042b
jmp 0x403ca1