Function at 0x1003bdb0
Capabilities:
Check if file exists
Get common file path
Get system information on windows
Set current directory

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x1008f1c1
mov eax, dword fs:[0]
push eax
sub esp, 0x66c
mov eax, dword [0x100ab080]
xor eax, ebp
mov dword [ebp - 0x10], eax
push esi
push edi
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov edi, ecx
mov esi, dword [ebp + 8]
xorps xmm0, xmm0
mov eax, dword [ebp + 0xc]
mov ecx, esi
mov dword [ebp - 0x670], eax
mov eax, dword [ebp + 0x10]
mov dword [ebp - 0x674], eax
mov eax, dword [ebp + 0x14]
lea edx, [ecx + 1]
mov dword [ebp - 0x668], esi
mov dword [ebp - 0x66c], eax
movups xmmword [ebp - 0x658], xmm0
mov dword [ebp - 0x648], 0
mov dword [ebp - 0x644], 0
mov al, byte [ecx]
inc ecx
test al, al
jne 0x1003be26
sub ecx, edx
push ecx
push esi
lea ecx, [ebp - 0x658]
call fcn.10003200
lea eax, [ebp - 0x658]
push eax
lea ecx, [edi + 0x9c]
call fcn.10003030
mov ecx, dword [ebp - 0x644]
cmp ecx, 0xf
jbe 0x1003be88
mov edx, dword [ebp - 0x658]
inc ecx
mov eax, edx
cmp ecx, 0x1000
jb 0x1003be7e
mov edx, dword [eax - 4]
add ecx, 0x23
sub eax, edx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x1003c60f
push ecx
push edx
call fcn.100666c9
add esp, 8
call fcn.1003c620
test al, al
jne 0x1003c4af
push 0x208
lea eax, [ebp - 0x218]
push 0
push eax
call fcn.10068810
add esp, 0xc
lea eax, [ebp - 0x218]
push 0x104
push eax
push 0
call dword [sym.imp.KERNEL32.dll_GetModuleFileNameW]
lea eax, [ebp - 0x218]
push eax
call dword [sym.imp.SHLWAPI.dll_PathRemoveFileSpecW]
mov esi, dword [sym.imp.SHLWAPI.dll_PathAppendW]
lea eax, [ebp - 0x218]
push 0x1009cef0
push eax
call esi
lea eax, [ebp - 0x218]
push eax
call dword [sym.imp.SHLWAPI.dll_PathFileExistsW]
test eax, eax
jne 0x1003bf2c
call dword [0x101250b4]
test al, al
je 0x1003c55e
call dword [0x101250b0]
cmp eax, 3
jg 0x1003c55e
push str.tap_driver
push 3
push 0x37
push str.COpenvpnHelper.cpp
call dword [0x101250b8]
add esp, 0x10
xor al, al
jmp 0x1003c5f2
xorps xmm0, xmm0
mov dword [ebp - 0x644], 0
push str.GetNativeSystemInfo
push str.kernel32.dll
movups xmmword [ebp - 0x664], xmm0
movups xmmword [ebp - 0x654], xmm0
call dword [sym.imp.KERNEL32.dll_GetModuleHandleW]
push eax
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
test eax, eax
je 0x1003bf6d
lea ecx, [ebp - 0x664]
push ecx
call eax
jmp 0x1003bf7a
lea eax, [ebp - 0x664]
push eax
call dword [sym.imp.KERNEL32.dll_GetSystemInfo]
xor eax, eax
cmp word [ebp - 0x664], 9
sete al
test eax, eax
lea eax, [ebp - 0x218]
je 0x1003c215
push 0x1009cf2c
push eax
call esi
xorps xmm0, xmm0
mov dword [ebp - 0x648], 0
lea ecx, [ebp - 0x218]
mov dword [ebp - 0x644], 0
movups xmmword [ebp - 0x658], xmm0
lea edx, [ecx + 2]
mov ax, word [ecx]
add ecx, 2
test ax, ax
jne 0x1003bfc4
sub ecx, edx
lea eax, [ebp - 0x218]
sar ecx, 1
push ecx
push eax
lea ecx, [ebp - 0x658]
call fcn.10003c90
push 0x208
lea eax, [ebp - 0x420]
mov dword [ebp - 4], 0
push 0
push eax
call fcn.10068810
add esp, 0xc
lea eax, [ebp - 0x420]
push eax
push 0x104
call dword [sym.imp.KERNEL32.dll_GetCurrentDirectoryW]
cmp dword [ebp - 0x644], 7
lea eax, [ebp - 0x658]
mov esi, dword [sym.imp.KERNEL32.dll_SetCurrentDirectoryW]
cmova eax, dword [ebp - 0x658]
push eax
call esi
push 0xf
push str._tapinstall.exe
lea ecx, [ebp - 0x658]
call fcn.1001d490
push 0x1c
xorps xmm0, xmm0
mov dword [ebp - 0x630], 0
push str.install_OemVista.inf_tap0901
lea ecx, [ebp - 0x640]
mov dword [ebp - 0x62c], 0
movups xmmword [ebp - 0x640], xmm0
call fcn.10003c90
push 1
sub esp, 0x18
mov byte [ebp - 4], 1
mov ecx, esp
xorps xmm0, xmm0
push 0
movups xmmword [ecx], xmm0
push 0x1009ac58
mov dword [ecx + 0x10], 0
mov dword [ecx + 0x14], 0
call fcn.10003c90
sub esp, 8
lea eax, [ebp - 0x640]
lea edx, [ebp - 0x658]
push eax
call fcn.1003b1e0
add esp, 0x28
test al, al
lea eax, [ebp - 0x420]
push eax
jne 0x1003c17f
call esi
call dword [0x101250b4]
test al, al
je 0x1003c0f4
call dword [0x101250b0]
cmp eax, 3
jg 0x1003c0f4
push str.x64_
push 3
push 0x49
push str.COpenvpnHelper.cpp
call dword [0x101250b8]
add esp, 0x10
mov ecx, dword [ebp - 0x62c]
cmp ecx, 7
jbe 0x1003c134
mov edx, dword [ebp - 0x640]
lea ecx, [ecx*2 + 2]
mov eax, edx
cmp ecx, 0x1000
jb 0x1003c12a
mov edx, dword [eax - 4]
add ecx, 0x23
sub eax, edx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x1003c614
push ecx
push edx
call fcn.100666c9
add esp, 8
mov ecx, dword [ebp - 0x644]
cmp ecx, 7
jbe 0x1003c55e
mov edx, dword [ebp - 0x658]
lea ecx, [ecx*2 + 2]
mov eax, edx
cmp ecx, 0x1000
jb 0x1003c16e
mov edx, dword [eax - 4]
add ecx, 0x23
sub eax, edx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x1003c614
push ecx
push edx
call fcn.100666c9
add esp, 8
xor al, al
jmp 0x1003c5f2
call esi
mov byte [ebp - 4], 0
mov ecx, dword [ebp - 0x62c]
cmp ecx, 7
jbe 0x1003c1c5
mov edx, dword [ebp - 0x640]
lea ecx, [ecx*2 + 2]
mov eax, edx
cmp ecx, 0x1000
jb 0x1003c1bb
mov edx, dword [eax - 4]
add ecx, 0x23
sub eax, edx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x1003c614
push ecx
push edx
call fcn.100666c9
add esp, 8
mov dword [ebp - 4], 0xffffffff
mov ecx, dword [ebp - 0x644]
cmp ecx, 7
jbe 0x1003c4a9
mov edx, dword [ebp - 0x658]
lea ecx, [ecx*2 + 2]
mov eax, edx
cmp ecx, 0x1000
jb 0x1003c206
mov edx, dword [eax - 4]
add ecx, 0x23
sub eax, edx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x1003c614
push ecx
push edx
call fcn.100666c9
add esp, 8
jmp 0x1003c4a9
push 0x1009cfac
push eax
call esi
xorps xmm0, xmm0
mov dword [ebp - 0x630], 0
lea ecx, [ebp - 0x218]
mov dword [ebp - 0x62c], 0
movups xmmword [ebp - 0x640], xmm0
lea edx, [ecx + 2]
mov ax, word [ecx]
add ecx, 2
test ax, ax
jne 0x1003c244
sub ecx, edx
lea eax, [ebp - 0x218]
sar ecx, 1
push ecx
push eax
lea ecx, [ebp - 0x640]
call fcn.10003c90
push 0x208
lea eax, [ebp - 0x628]
mov dword [ebp - 4], 2
push 0
push eax
call fcn.10068810
add esp, 0xc
lea eax, [ebp - 0x628]
push eax
push 0x104
call dword [sym.imp.KERNEL32.dll_GetCurrentDirectoryW]
cmp dword [ebp - 0x62c], 7
lea eax, [ebp - 0x640]
mov esi, dword [sym.imp.KERNEL32.dll_SetCurrentDirectoryW]
cmova eax, dword [ebp - 0x640]
push eax
call esi
push 0xf
push str._tapinstall.exe
lea ecx, [ebp - 0x640]
call fcn.1001d490
push 0x1c
xorps xmm0, xmm0
mov dword [ebp - 0x648], 0
push str.install_OemWin2k.inf_tap0901
lea ecx, [ebp - 0x658]
mov dword [ebp - 0x644], 0
movups xmmword [ebp - 0x658], xmm0
call fcn.10003c90
push 1
sub esp, 0x18
mov byte [ebp - 4], 3
mov ecx, esp
xorps xmm0, xmm0
push 0
movups xmmword [ecx], xmm0
push 0x1009ac58
mov dword [ecx + 0x10], 0
mov dword [ecx + 0x14], 0
call fcn.10003c90
sub esp, 8
lea eax, [ebp - 0x658]
lea edx, [ebp - 0x640]
push eax
call fcn.1003b1e0
add esp, 0x28
test al, al
lea eax, [ebp - 0x628]
push eax
jne 0x1003c3ff
call esi
call dword [0x101250b4]
test al, al
je 0x1003c374
call dword [0x101250b0]
cmp eax, 3
jg 0x1003c374
push str.x86_
push 3
push 0x5e
push str.COpenvpnHelper.cpp
call dword [0x101250b8]
add esp, 0x10
mov ecx, dword [ebp - 0x644]
cmp ecx, 7
jbe 0x1003c3b4
mov edx, dword [ebp - 0x658]
lea ecx, [ecx*2 + 2]
mov eax, edx
cmp ecx, 0x1000
jb 0x1003c3aa
mov edx, dword [eax - 4]
add ecx, 0x23
sub eax, edx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x1003c619
push ecx
push edx
call fcn.100666c9
add esp, 8
mov ecx, dword [ebp - 0x62c]
cmp ecx, 7
jbe 0x1003c55e
mov edx, dword [ebp - 0x640]
lea ecx, [ecx*2 + 2]
mov eax, edx
cmp ecx, 0x1000
jb 0x1003c3ee
mov edx, dword [eax - 4]
add ecx, 0x23
sub eax, edx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x1003c619
push ecx
push edx
call fcn.100666c9
add esp, 8
xor al, al
jmp 0x1003c5f2
call esi
mov byte [ebp - 4], 2
mov ecx, dword [ebp - 0x644]
cmp ecx, 7
jbe 0x1003c445
mov edx, dword [ebp - 0x658]
lea ecx, [ecx*2 + 2]
mov eax, edx
cmp ecx, 0x1000
jb 0x1003c43b
mov edx, dword [eax - 4]
add ecx, 0x23
sub eax, edx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x1003c619
push ecx
push edx
call fcn.100666c9
add esp, 8
mov dword [ebp - 4], 0xffffffff
mov ecx, dword [ebp - 0x62c]
cmp ecx, 7
jbe 0x1003c48c
mov edx, dword [ebp - 0x640]
lea ecx, [ecx*2 + 2]
mov eax, edx
cmp ecx, 0x1000
jb 0x1003c482
mov edx, dword [eax - 4]
add ecx, 0x23
sub eax, edx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x1003c619
push ecx
push edx
call fcn.100666c9
add esp, 8
xor eax, eax
mov dword [ebp - 0x630], 0
mov dword [ebp - 0x62c], 7
mov word [ebp - 0x640], ax
mov esi, dword [ebp - 0x668]
call fcn.1003c620
test al, al
jne 0x1003c4f3
call dword [0x101250b4]
test al, al
je 0x1003c55e
call dword [0x101250b0]
cmp eax, 3
jg 0x1003c55e
push 0x1009d00c
push 3
push 0x6b
push str.COpenvpnHelper.cpp
call dword [0x101250b8]
add esp, 0x10
xor al, al
jmp 0x1003c5f2
call dword [0x101250b4]
test al, al
je 0x1003c51f
call dword [0x101250b0]
cmp eax, 1
jg 0x1003c51f
push 0x1009d020
push 1
push 0x6f
push str.COpenvpnHelper.cpp
call dword [0x101250b8]
add esp, 0x10
push dword [ebp - 0x66c]
mov eax, dword [edi + 0x98]
push dword [ebp - 0x670]
push dword [ebp - 0x674]
push esi
call eax
xor esi, esi
nop dword [eax]
push 0xa
inc esi
call dword [sym.imp.KERNEL32.dll_Sleep]
mov eax, dword [edi + 0x90]
call eax
cmp eax, 4
je 0x1003c565
cmp esi, 0x7d0
jl 0x1003c540
xor al, al
jmp 0x1003c5f2
call dword [0x101250b4]
test al, al
je 0x1003c591
call dword [0x101250b0]
cmp eax, 1
jg 0x1003c591
push 0x1009d040
push 1
push 0x7d
push str.COpenvpnHelper.cpp
call dword [0x101250b8]
add esp, 0x10
cmp dword [edi + 0x4c], 0xf
lea esi, [edi + 0x38]
mov eax, esi
jbe 0x1003c59e
mov eax, dword [esi]
push eax
push ecx
push dword [ebp - 0x668]
call fcn.1003d160
cmp dword [edi + 0x60], 0
je 0x1003c5cc
cmp dword [esi + 0x14], 0xf
jbe 0x1003c5b9
mov esi, dword [esi]
cmp dword [edi + 0x64], 0xf
lea eax, [edi + 0x50]
jbe 0x1003c5c4
mov eax, dword [eax]
push esi
push ecx
push eax
call fcn.1003d160
cmp dword [edi + 0x78], 0
je 0x1003c5f0
cmp dword [edi + 0x4c], 0xf
lea eax, [edi + 0x38]
jbe 0x1003c5dd
mov eax, dword [eax]
add edi, 0x68
cmp dword [edi + 0x14], 0xf
jbe 0x1003c5e8
mov edi, dword [edi]
push eax
push ecx
push edi
call fcn.1003d160
mov al, 1
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
mov ecx, dword [ebp - 0x10]
xor ecx, ebp
call fcn.1006636c
mov esp, ebp
pop ebp
ret 0x10
call fcn.10070c0f
call fcn.10070c0f
call fcn.10070c0f
int3