Function at 0x40f5e7
Capabilities:
Check if file exists
Get disk information
Query environment variable

Disassembly:
push ebp
lea ebp, [esp - 0x2870]
mov eax, 0x2870
call fcn.004b0a70
push 0xffffffffffffffff
push 0x4d7001
mov eax, dword fs:[0]
push eax
sub esp, 0x50
mov eax, dword [0x55f6c0]
xor eax, ebp
mov dword [ebp + 0x286c], eax
push ebx
push esi
push edi
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov dword [ebp - 0x10], esp
mov esi, edx
mov eax, dword [esi]
mov dword [ebp - 0x34], ecx
mov ecx, dword [eax - 0xc]
cmp ecx, 4
mov dword [ebp - 0x30], esi
jl 0x4108f4
test ecx, ecx
jge 0x40f64b
push 0x80070057
call fcn.004029b5
movzx edx, word [eax]
cmp dx, 0x2e
jne 0x40f667
cmp ecx, 1
jl 0x40f641
movzx eax, word [eax + 2]
cmp ax, 0x5c
je 0x4108f4
mov eax, dword [ebp - 0x34]
call fcn.0040cdbe
test eax, eax
jne 0x4108f4
call fcn.0048b151
push eax
lea ecx, [ebp - 0x40]
call fcn.00402821
and dword [ebp - 4], 0
mov eax, dword [esi]
lea ecx, [ebp - 0x40]
push ecx
push eax
mov ecx, 0x5687b0
call fcn.004994a5
test eax, eax
jne 0x4108e9
mov byte [ebp - 4], 1
call fcn.0048b151
push eax
lea ecx, [ebp - 0x14]
call fcn.00402821
mov byte [ebp - 4], 2
call fcn.0048b151
push eax
lea ecx, [ebp - 0x24]
call fcn.00402821
mov byte [ebp - 4], 3
call fcn.0048b151
push eax
lea ecx, [ebp - 0x18]
call fcn.00402821
mov byte [ebp - 4], 4
call fcn.0048b151
push eax
lea ecx, [ebp - 0x1c]
call fcn.00402821
mov byte [ebp - 4], 5
call fcn.0048b151
push eax
lea ecx, [ebp - 0x20]
call fcn.00402821
push esi
lea ecx, [ebp - 0x14]
mov byte [ebp - 4], 6
call fcn.0040260d
lea edi, [ebp - 0x14]
call fcn.00411b13
mov ebx, edi
call fcn.0040c56d
call fcn.0040c520
mov ebx, dword [ebp - 0x14]
push ebx
call dword [sym.imp.SHLWAPI.dll_PathFileExistsW]
test eax, eax
je 0x40f77c
push dword [esi]
mov ecx, 0x5687b0
call fcn.004995a1
push 0x52380c
mov ecx, eax
call fcn.0040274c
mov ecx, dword [ebp - 0x20]
add ecx, 0xfffffff0
call fcn.00402883
mov ecx, dword [ebp - 0x1c]
add ecx, 0xfffffff0
call fcn.00402883
mov ecx, dword [ebp - 0x18]
add ecx, 0xfffffff0
call fcn.00402883
mov ecx, dword [ebp - 0x24]
add ecx, 0xfffffff0
call fcn.00402883
lea ecx, [ebx - 0x10]
call fcn.00402883
jmp 0x4108e9
cmp dword [ebx - 0xc], 4
jl 0x40f72b
xor edi, edi
mov dword [ebp - 0x2c], edi
cmp edi, 4
jge 0x40f7ce
mov eax, edi
sub eax, 0
je 0x40f7b1
dec eax
je 0x40f7aa
dec eax
je 0x40f7a3
dec eax
jne 0x40f7cb
push str.architecture
jmp 0x40f7b6
push str.token
jmp 0x40f7b6
push str.version
jmp 0x40f7b6
push str.type
xor ecx, ecx
lea esi, [ebp - 0x14]
call fcn.004077ca
cmp eax, 0xffffffff
je 0x40f7c8
inc dword [ebp - 0x2c]
mov esi, dword [ebp - 0x30]
inc edi
jmp 0x40f787
cmp dword [ebp - 0x2c], 1
jle 0x40f829
push ebx
call dword [sym.imp.SHLWAPI.dll_PathIsFileSpecW]
test eax, eax
setne al
test al, al
jne 0x40f72b
cmp dword [ebx - 0xc], 0
jl 0x40f641
movzx eax, word [ebx]
push eax
call fcn.004ac620
pop ecx
test eax, eax
je 0x40f72b
cmp dword [ebp - 0x2c], 2
jg 0x40f72b
xor edi, edi
push edi
push 0x2e
lea ecx, [ebp - 0x14]
call fcn.00411abf
cmp eax, 0xffffffff
jne 0x40f88e
cmp edi, 4
jg 0x40f72b
push str.rundll32
xor ecx, ecx
lea esi, [ebp - 0x14]
call fcn.004077ca
mov esi, eax
mov eax, dword [ebp - 0x34]
call fcn.0040cdbe
test eax, eax
je 0x40f896
mov ecx, dword [ebp - 0x20]
add ecx, 0xfffffff0
call fcn.00402883
mov ecx, dword [ebp - 0x1c]
add ecx, 0xfffffff0
call fcn.00402883
mov ecx, dword [ebp - 0x18]
add ecx, 0xfffffff0
call fcn.00402883
mov ecx, dword [ebp - 0x24]
add ecx, 0xfffffff0
call fcn.00402883
lea ecx, [ebx - 0x10]
call fcn.00402883
mov bl, 1
mov ecx, dword [ebp - 0x40]
add ecx, 0xfffffff0
call fcn.00402883
mov al, bl
jmp 0x4108f6
inc edi
inc eax
push eax
jmp 0x40f811
test esi, esi
je 0x41082f
cmp esi, 1
jne 0x40f8ba
cmp dword [ebx - 0xc], 0
jl 0x40f641
movzx eax, word [ebx]
cmp ax, 0x22
je 0x41082f
push 0x526008
xor ecx, ecx
lea esi, [ebp - 0x14]
call fcn.004077ca
mov esi, eax
lea eax, [esi - 3]
cmp eax, 3
ja 0x40f97e
mov ecx, dword [ebp - 0x30]
push esi
lea eax, [ebp - 0x44]
push eax
call fcn.004078c2
lea edi, [ebp - 0x44]
mov byte [ebp - 4], 7
call fcn.00411b13
push 0x526010
mov ecx, edi
call fcn.0040c68e
xor edi, edi
cmp eax, edi
je 0x40f93e
push str.file
lea ecx, [ebp - 0x44]
call fcn.0040c68e
cmp eax, edi
je 0x40f93e
mov eax, dword [ebp - 0x30]
push dword [eax]
mov ecx, 0x5687b0
call fcn.004995a1
push 0x52380c
mov ecx, eax
call fcn.0040274c
mov ecx, dword [ebp - 0x44]
add ecx, 0xfffffff0
call fcn.00402883
jmp 0x40f846
push edi
lea ecx, [ebp - 0x14]
lea eax, [esi + 3]
push ecx
call fcn.00407198
mov eax, dword [ebp - 0x14]
cmp dword [eax - 0xc], edi
jl 0x40f641
movzx eax, word [eax]
cmp ax, 0x2f
je 0x40f9af
push 0x5c
push 0x2f
lea ebx, [ebp - 0x14]
call fcn.00411908
mov byte [ebp - 4], 6
mov ecx, dword [ebp - 0x44]
add ecx, 0xfffffff0
call fcn.00402883
mov ebx, dword [ebp - 0x14]
push 0
push 0x3b
lea ecx, [ebp - 0x14]
call fcn.00411abf
cmp eax, 0xffffffff
je 0x40f9b9
mov eax, dword [ebp - 0x30]
push dword [eax]
mov ecx, 0x5687b0
call fcn.004995a1
push 0x52380c
mov ecx, eax
call fcn.0040274c
jmp 0x40f846
lea eax, [ebp - 0x14]
push edi
push eax
xor eax, eax
inc eax
jmp 0x40f946
mov eax, dword [ebp - 0x34]
call fcn.0040cdbe
test eax, eax
jne 0x40f846
push eax
push 0x2a
lea ecx, [ebp - 0x14]
call fcn.00411abf
mov dword [ebp - 0x38], eax
cmp eax, 0xffffffff
je 0x40fa7b
mov edi, dword [ebx - 0xc]
push 0x526024
xor ecx, ecx
lea esi, [ebp - 0x14]
call fcn.004077ca
add edi, 0xfffffffe
cmp eax, edi
je 0x40fa0f
mov edi, dword [ebx - 0xc]
push 0x52602c
xor ecx, ecx
call fcn.004077ca
add edi, 0xfffffffe
cmp eax, edi
jne 0x40fa23
mov ebx, dword [ebx - 0xc]
dec ebx
push ebx
lea eax, [ebp - 0x14]
push eax
xor eax, eax
inc eax
call fcn.00407198
mov ebx, dword [ebp - 0x14]
mov esi, dword [ebp - 0x38]
inc esi
push esi
push 0x5c
lea ecx, [ebp - 0x14]
call fcn.00411abf
or edi, 0xffffffff
cmp eax, edi
jne 0x40f98f
push esi
push 0x2a
lea ecx, [ebp - 0x14]
call fcn.00411abf
cmp eax, edi
jne 0x40f98f
push 0
push 0x3f
lea ecx, [ebp - 0x14]
call fcn.00411abf
cmp eax, edi
jne 0x40f98f
push 0x526034
xor ecx, ecx
lea esi, [ebp - 0x14]
call fcn.004077ca
cmp eax, edi
jne 0x40f98f
mov eax, dword [ebp - 0x34]
call fcn.0040cdbe
test eax, eax
jne 0x40f846
mov edx, dword [ebx - 0xc]
xor edi, edi
cmp edx, edi
jl 0x40f641
movzx eax, word [ebx]
cmp ax, 0x40
jne 0x40fade
cmp edx, 1
jl 0x40f641
movzx eax, word [ebx + 2]
movzx ecx, ax
cmp cx, 0x25
je 0x40face
cmp edx, 1
jl 0x40f641
movzx eax, ax
push eax
call fcn.004ac620
pop ecx
test eax, eax
je 0x40fade
push edi
lea eax, [ebp - 0x14]
push eax
xor eax, eax
inc eax
call fcn.00407198
mov ebx, dword [ebp - 0x14]
cmp byte [ebp + 0x2890], 0
jne 0x40fb06
mov eax, dword [ebp - 0x34]
call fcn.0040cdbe
test eax, eax
jne 0x40f846
push ebx
call dword [sym.imp.SHLWAPI.dll_PathIsNetworkPathW]
test eax, eax
jne 0x40f98f
mov eax, dword [ebp - 0x34]
call fcn.0040cdbe
test eax, eax
jne 0x40f846
cmp byte [ebp + 0x287c], al
je 0x40fb2f
lea eax, [ebp - 0x14]
push eax
call fcn.0040ea1b
test al, al
jne 0x40f98f
cmp byte [ebp + 0x288c], 0
je 0x40fd5e
lea eax, [ebp - 0x14]
push eax
lea ecx, [ebp - 0x2c]
call fcn.00402582
mov byte [ebp - 4], 8
mov edi, dword [ebp - 0x2c]
mov eax, dword [ebp - 0x34]
call fcn.0040cdbe
test eax, eax
je 0x40fb63
lea ecx, [edi - 0x10]
jmp 0x40f934
push edi
call dword [sym.imp.SHLWAPI.dll_PathGetArgsW]
push eax
lea ecx, [ebp - 0x2c]
call fcn.0040274c
mov edi, dword [ebp - 0x2c]
cmp dword [edi - 0xc], 0
je 0x40fc0a
push edi
call fcn.00410d4b
test eax, eax
jge 0x40fb4f
push edi
call fcn.0040ee05
pop ecx
lea edi, [ebp - 0x2c]
mov byte [ebp - 0x25], al
call fcn.00411b13
push str..exe
xor ecx, ecx
mov esi, edi
call fcn.004077ca
test eax, eax
jg 0x40fbbe
push 0x523fe8
xor ecx, ecx
call fcn.004077ca
test eax, eax
jge 0x40fb4c
cmp byte [ebp - 0x25], 0
jne 0x40fb4c
mov ecx, dword [ebp - 0x2c]
add ecx, 0xfffffff0
call fcn.00402883
mov ecx, dword [ebp - 0x20]
add ecx, 0xfffffff0
call fcn.00402883
mov ecx, dword [ebp - 0x1c]
add ecx, 0xfffffff0
call fcn.00402883
mov ecx, dword [ebp - 0x18]
add ecx, 0xfffffff0
call fcn.00402883
mov ecx, dword [ebp - 0x24]
add ecx, 0xfffffff0
call fcn.00402883
lea ecx, [ebx - 0x10]
call fcn.00402883
xor bl, bl
jmp 0x40f87c
mov eax, dword [ebp - 0x34]
call fcn.0040cdbe
test eax, eax
jne 0x40fb5b
push 0x52603c
xor ecx, ecx
lea esi, [ebp - 0x14]
call fcn.004077ca
mov dword [ebp - 0x3c], eax
mov byte [ebp - 0x25], 1
test eax, eax
jne 0x40fc62
xor ecx, ecx
push 0x52603c
inc ecx
call fcn.004077ca
mov dword [ebp - 0x3c], eax
cmp eax, 0xffffffff
je 0x40fc62
mov ecx, eax
inc ecx
push 0x52603c
call fcn.004077ca
mov dword [ebp - 0x3c], eax
cmp eax, 0xffffffff
jne 0x40fc62
mov byte [ebp - 0x25], 0
mov eax, dword [ebp - 0x34]
call fcn.0040cdbe
test eax, eax
jne 0x40fb5b
cmp byte [ebp - 0x25], al
je 0x40fd4d
mov ecx, dword [ebp - 0x3c]
inc ecx
push 0x52603c
lea esi, [ebp - 0x14]
mov dword [ebp - 0x38], ecx
call fcn.004077ca
cmp eax, dword [ebp - 0x3c]
jle 0x40fd4d
sub eax, dword [ebp - 0x3c]
mov ecx, esi
dec eax
push eax
push dword [ebp - 0x38]
lea eax, [ebp - 0x34]
push eax
call fcn.00407844
mov byte [ebp - 4], 9
push dword [ebp - 0x34]
call fcn.00410d4b
test eax, eax
setge byte [ebp - 0x25]
cmp byte [ebp - 0x25], 0
jne 0x40fcfe
push dword [ebp - 0x34]
call fcn.0040ee05
pop ecx
mov byte [ebp - 0x25], al
test al, al
je 0x40fcfe
mov eax, dword [ebp - 0x30]
push dword [eax]
mov ecx, 0x5687b0
call fcn.004995a1
push 0x52380c
mov ecx, eax
call fcn.0040274c
mov ecx, dword [ebp - 0x34]
add ecx, 0xfffffff0
call fcn.00402883
jmp 0x40fb5b
mov ecx, dword [ebp - 0x34]
add ecx, 0xfffffff0
call fcn.00402883
lea ecx, [edi - 0x10]
call fcn.00402883
mov ecx, dword [ebp - 0x20]
add ecx, 0xfffffff0
call fcn.00402883
mov ecx, dword [ebp - 0x1c]
add ecx, 0xfffffff0
call fcn.00402883
mov ecx, dword [ebp - 0x18]
add ecx, 0xfffffff0
call fcn.00402883
mov ecx, dword [ebp - 0x24]
add ecx, 0xfffffff0
call fcn.00402883
lea ecx, [ebx - 0x10]
call fcn.00402883
mov bl, byte [ebp - 0x25]
jmp 0x40f87c
lea ecx, [edi - 0x10]
mov byte [ebp - 4], 6
call fcn.00402883
jmp 0x40fdf1
push str..exe
lea ecx, [ebp - 0x5c]
call fcn.0040253e
push str..dll
lea ecx, [ebp - 0x58]
mov byte [ebp - 4], 0xa
call fcn.0040253e
push str..ocx
lea ecx, [ebp - 0x54]
mov byte [ebp - 4], 0xb
call fcn.0040253e
push 0x526040
lea ecx, [ebp - 0x50]
mov byte [ebp - 4], 0xc
call fcn.0040253e
push 0x526048
lea ecx, [ebp - 0x4c]
mov byte [ebp - 4], 0xd
call fcn.0040253e
mov byte [ebp - 4], 0xe
cmp edi, 5
jae 0x40fddb
push ecx
lea eax, [ebp + edi*4 - 0x5c]
mov dword [ebp - 0x38], esp
mov ecx, esp
push eax
call fcn.00402582
lea ecx, [ebp - 0x14]
call fcn.0040f58f
mov ebx, dword [ebp - 0x14]
pop ecx
test al, al
jne 0x40fddb
inc edi
jmp 0x40fdb3
push 0x40285a
push 5
push 4
lea eax, [ebp - 0x5c]
push eax
mov byte [ebp - 4], 6
call fcn.004ab503
cmp dword [ebx - 0xc], 0
jl 0x40f641
movzx eax, word [ebx]
cmp ax, 0x22
jne 0x40fe37
push 1
push 0x22
lea ecx, [ebp - 0x14]
call fcn.00411abf
cmp eax, 0xffffffff
je 0x40f98f
push 0
push 0x22
lea ecx, [ebp - 0x14]
call fcn.00411abf
cmp eax, 0xffffffff
je 0x40fe37
push 0x20
push eax
lea ecx, [ebp - 0x14]
call fcn.00411b6d
jmp 0x40fe19
lea ebx, [ebp - 0x14]
call fcn.0040c56d
call fcn.0040c520
mov eax, dword [ebp - 0x34]
call fcn.0040cdbe
test eax, eax
je 0x40fe87
mov ecx, dword [ebp - 0x20]
add ecx, 0xfffffff0
call fcn.00402883
mov ecx, dword [ebp - 0x1c]
add ecx, 0xfffffff0
call fcn.00402883
mov ecx, dword [ebp - 0x18]
add ecx, 0xfffffff0
call fcn.00402883
mov ecx, dword [ebp - 0x24]
add ecx, 0xfffffff0
call fcn.00402883
mov ecx, dword [ebp - 0x14]
add ecx, 0xfffffff0
jmp 0x40f875
mov edi, dword [ebp - 0x14]
xor ebx, ebx
cmp byte [ebp + 0x2878], bl
je 0x40feee
push edi
call fcn.0043059b
pop ecx
test al, al
jne 0x40feee
mov eax, dword [ebp - 0x30]
push dword [eax]
mov ecx, 0x5687b0
call fcn.004995a1
push 0x52380c
mov ecx, eax
call fcn.0040274c
mov ecx, dword [ebp - 0x20]
add ecx, 0xfffffff0
call fcn.00402883
mov ecx, dword [ebp - 0x1c]
add ecx, 0xfffffff0
call fcn.00402883
mov ecx, dword [ebp - 0x18]
add ecx, 0xfffffff0
call fcn.00402883
mov ecx, dword [ebp - 0x24]
add ecx, 0xfffffff0
call fcn.00402883
lea ecx, [edi - 0x10]
jmp 0x40f875
mov eax, dword [ebp - 0x34]
call fcn.0040cdbe
test eax, eax
jne 0x40feba
push ebx
push 0x25
lea ecx, [ebp - 0x14]
call fcn.00411abf
cmp eax, 0xffffffff
je 0x40ff6f
inc eax
push eax
push 0x25
lea ecx, [ebp - 0x14]
call fcn.00411abf
cmp eax, 0xffffffff
je 0x40ff6f
xor eax, eax
push 0xffe
mov word [ebp + 0x104c], ax
lea eax, [ebp + 0x104e]
push ebx
push eax
call fcn.004ae4c0
add esp, 0xc
mov esi, 0x800
push esi
lea eax, [ebp + 0x104c]
push eax
push edi
call dword [sym.imp.KERNEL32.dll_ExpandEnvironmentStringsW]
cmp eax, ebx
je 0x40ff6f
cmp eax, esi
jae 0x40ff6f
lea eax, [ebp + 0x104c]
push eax
lea ecx, [ebp - 0x14]
call fcn.0040274c
lea edi, [ebp - 0x14]
call fcn.00411b13
mov edi, dword [ebp - 0x14]
push str.rundll32
xor ecx, ecx
lea esi, [ebp - 0x14]
call fcn.004077ca
cmp eax, ebx
jne 0x40ffd7
push 7
push 0x20
mov ecx, esi
call fcn.00411abf
cmp eax, 0xffffffff
je 0x40ffd7
push ebx
mov ecx, esi
push ecx
call fcn.00407198
mov ebx, esi
call fcn.0040c56d
push 0
push 0x2c
mov ecx, esi
call fcn.00411abf
mov ecx, eax
cmp ecx, 0xffffffff
je 0x40ffc5
mov eax, dword [ebp - 0x14]
mov eax, dword [eax - 0xc]
push ecx
sub eax, ecx
mov ecx, esi
push ecx
call fcn.00407198
mov edi, dword [ebp - 0x14]
push edi
call dword [sym.imp.SHLWAPI.dll_PathFileExistsW]
test eax, eax
jne 0x40fe9f
mov eax, dword [ebp - 0x34]
call fcn.0040cdbe
test eax, eax
jne 0x40feba
lea edi, [ebp - 0x14]
call fcn.00411b13
mov edi, dword [ebp - 0x14]
mov eax, dword [edi - 0xc]
mov ebx, 0x40f
cmp eax, ebx
jle 0x41009c
push 0
push 0x5c
lea ecx, [ebp - 0x14]
call fcn.00411abf
test eax, eax
jl 0x40fe9f
inc eax
push eax
push 0x5c
lea ecx, [ebp - 0x14]
call fcn.00411abf
test eax, eax
jl 0x40fe9f
push edi
call dword [sym.imp.SHLWAPI.dll_PathIsNetworkPathW]
test eax, eax
jne 0x40fe9f
push edi
call fcn.00410d4b
test eax, eax
setge bl
test bl, bl
je 0x410063
mov eax, dword [ebp - 0x30]
push dword [eax]
mov ecx, 0x5687b0
call fcn.004995a1
push 0x52380c
mov ecx, eax
call fcn.0040274c
mov ecx, dword [ebp - 0x20]
add ecx, 0xfffffff0
call fcn.00402883
mov ecx, dword [ebp - 0x1c]
add ecx, 0xfffffff0
call fcn.00402883
mov ecx, dword [ebp - 0x18]
add ecx, 0xfffffff0
call fcn.00402883
mov ecx, dword [ebp - 0x24]
add ecx, 0xfffffff0
call fcn.00402883
lea ecx, [edi - 0x10]
call fcn.00402883
jmp 0x40f87c
cmp eax, 0x104
jg 0x40fe9f
mov eax, dword [ebp - 0x34]
call fcn.0040cdbe
test eax, eax
jne 0x40feba
push 0x82c
push eax
lea eax, [ebp]
push eax
call fcn.004ae4c0
add esp, 0xc
push edi
lea eax, [ebp]
mov byte [ebp - 4], 0xf
call fcn.0040c81f
push 0x820
lea eax, [ebp + 0x204c]
push 0
push eax
call fcn.004ae4c0
add esp, 0xc
push 0x5257e8
xor ecx, ecx
lea esi, [ebp - 0x14]
call fcn.004077ca
cmp eax, 0xffffffff
je 0x410380
lea eax, [ebp + 4]
lea edx, [eax + 2]
mov cx, word [eax]
inc eax
inc eax
test cx, cx
jne 0x41010a
sub eax, edx
sar eax, 1
je 0x4101a1
lea eax, [ebp - 0x2c]
push eax
call fcn.00411892
push eax
lea eax, [ebp + 4]
push eax
lea eax, [ebp - 0x38]
push eax
mov byte [ebp - 4], 0x10
call fcn.0040c60b
add esp, 0xc
push dword [eax]
call dword [sym.imp.KERNEL32.dll_GetDriveTypeW]
mov ecx, dword [ebp - 0x38]
add ecx, 0xfffffff0
mov esi, eax
call fcn.00402883
mov byte [ebp - 4], 0xf
mov ecx, dword [ebp - 0x2c]
add ecx, 0xfffffff0
call fcn.00402883
cmp dword [0x56222c], 0
je 0x4101a1
cmp esi, 3
je 0x4101a1
mov eax, dword [ebp - 0x30]
push dword [eax]
mov ecx, 0x5687b0
call fcn.004995a1
push 0x52380c
mov ecx, eax
call fcn.0040274c
push 0x82c
lea eax, [ebp]
push 0
push eax
call fcn.004ae4c0
add esp, 0xc
jmp 0x40feba
mov ebx, dword [sym.imp.SHLWAPI.dll_PathFileExistsW]
push edi
call ebx
test eax, eax
je 0x4101d0
mov eax, dword [ebp - 0x30]
mov eax, dword [eax]
push 0x52380c
push eax
mov ecx, 0x5687b0
call fcn.00411f0c
lea ecx, [ebp]
call fcn.0040c808
jmp 0x40feba
mov eax, dword [ebp - 0x34]
call fcn.0040cdbe
test eax, eax
jne 0x4101c3
mov edx, edi
lea ecx, [ebp + 0x204c]
movzx eax, word [edx]
inc edx
mov word [ecx], ax
inc edx
inc ecx
inc ecx
test ax, ax
jne 0x4101e4
push 0
lea eax, [ebp + 0x204c]
push eax
call dword [sym.imp.SHLWAPI.dll_PathFindOnPathW]
test eax, eax
jne 0x4101ae
call fcn.00460c64
test al, al
je 0x410233
cmp byte [ebp + 0x2884], 0
je 0x410233
push str.program_files
xor ecx, ecx
lea esi, [ebp - 0x14]
call fcn.004077ca
cmp eax, 0xffffffff
je 0x410233
mov byte [ebp + 0x2884], 0
call fcn.00460c64
test al, al
je 0x410253
cmp byte [ebp + 0x2884], 0
jne 0x410253
push dword [ebp + 0x2888]
push edi
call fcn.0040eca7
jmp 0x410259
push edi
call fcn.00410d4b
mov esi, eax
mov eax, dword [ebp - 0x34]
call fcn.0040cdbe
test eax, eax
jne 0x4101c3
cmp esi, 0xffffffff
jne 0x4102bb
push edi
call fcn.0040ee05
pop ecx
test al, al
jne 0x4101ae
lea ecx, [ebp]
call fcn.0040c808
mov ecx, dword [ebp - 0x20]
add ecx, 0xfffffff0
call fcn.00402883
mov ecx, dword [ebp - 0x1c]
add ecx, 0xfffffff0
call fcn.00402883
mov ecx, dword [ebp - 0x18]
add ecx, 0xfffffff0
call fcn.00402883
mov ecx, dword [ebp - 0x24]
add ecx, 0xfffffff0
call fcn.00402883
lea ecx, [edi - 0x10]
jmp 0x40fbfe
test esi, esi
jne 0x4101ae
push esi
push 0x2e
lea ecx, [ebp - 0x14]
call fcn.00411abf
cmp eax, 0xffffffff
jne 0x410350
push edi
call ebx
test eax, eax
jne 0x4101ae
push str..exe
lea eax, [ebp - 0x14]
push eax
lea eax, [ebp - 0x38]
push eax
call fcn.004021ba
add esp, 0xc
mov byte [ebp - 4], 0x11
push dword [ebp - 0x38]
call ebx
test eax, eax
je 0x410325
mov eax, dword [ebp - 0x30]
mov eax, dword [eax]
push 0x52380c
push eax
mov ecx, 0x5687b0
call fcn.00411f0c
mov ecx, dword [ebp - 0x38]
add ecx, 0xfffffff0
call fcn.00402883
jmp 0x4101c3
lea eax, [ebp - 0x14]
push eax
lea ecx, [ebp - 0x38]
call fcn.0040265a
push str._system32
xor ecx, ecx
lea esi, [ebp - 0x14]
call fcn.004077ca
cmp eax, 0xffffffff
jne 0x410300
mov ecx, dword [ebp - 0x38]
add ecx, 0xfffffff0
call fcn.00402883
mov eax, dword [ebp - 0x34]
call fcn.0040cdbe
test eax, eax
jne 0x4101c3
push edi
call ebx
test eax, eax
jne 0x410371
push edi
call fcn.0040f146
mov bl, al
jmp 0x410373
mov bl, 1
lea ecx, [ebp]
call fcn.0040c808
jmp 0x410063
mov eax, dword [ebp - 0x34]
call fcn.0040cdbe
test eax, eax
jne 0x4101c3
lea edi, [ebp - 0x14]
call fcn.00411b13
mov edi, dword [ebp - 0x14]
mov edx, edi
lea ecx, [ebp + 0x204c]
xor esi, esi
movzx eax, word [edx]
inc edx
mov word [ecx], ax
inc edx
inc ecx
inc ecx
cmp ax, si
jne 0x4103a5
push esi
lea eax, [ebp + 0x204c]
push eax
call dword [sym.imp.SHLWAPI.dll_PathFindOnPathW]
test eax, eax
je 0x4103e0
lea eax, [ebp + 0x204c]
push eax
call dword [sym.imp.SHLWAPI.dll_PathFileExistsW]
test eax, eax
jne 0x410371
lea eax, [ebp + 0x204c]
push eax
jmp 0x410368
mov eax, dword [ebp - 0x34]
call fcn.0040cdbe
test eax, eax
jne 0x4101c3
push 0x81e
mov word [ebp + 0x82c], ax
lea eax, [ebp + 0x82e]
push esi
push eax
call fcn.004ae4c0
add esp, 0xc
lea eax, [ebp - 0x48]
push eax
lea eax, [ebp + 0x82c]
push eax
push ebx
lea eax, [ebp + 0x41a]
push eax
lea eax, [ebp + 0x212]
push eax
push esi
call dword [sym.imp.KERNEL32.dll_SearchPathW]
test eax, eax
jne 0x4101ae
push str..dll
xor ecx, ecx
lea esi, [ebp - 0x14]
call fcn.004077ca
or ebx, 0xffffffff
cmp eax, ebx
jne 0x41047f
push str..ocx
xor ecx, ecx
call fcn.004077ca
cmp eax, ebx
jne 0x41047f
push str..exe
xor ecx, ecx
call fcn.004077ca
cmp eax, ebx
jne 0x41047f
push 0x526040
xor ecx, ecx
call fcn.004077ca
cmp eax, ebx
je 0x4107f8
push 0x52225c
xor ecx, ecx
lea esi, [ebp - 0x14]
call fcn.004077ca
cmp eax, ebx
jne 0x4107f8
mov eax, dword [ebp - 0x34]
add eax, 0x202c
push eax
lea ecx, [ebp - 0x2c]
call fcn.004025a0
xor esi, esi
push esi
push 0x5c
lea ecx, [ebp - 0x14]
mov byte [ebp - 4], 0x12
call fcn.00411abf
mov ebx, eax
cmp ebx, 0xffffffff
je 0x410524
lea esi, [ebx + 1]
push esi
push 0x5c
lea ecx, [ebp - 0x14]
call fcn.00411abf
cmp eax, 0xffffffff
je 0x4104ef
mov eax, dword [ebp - 0x30]
mov eax, dword [eax]
push 0x52380c
push eax
mov ecx, 0x5687b0
call fcn.00411f0c
mov ecx, dword [ebp - 0x2c]
jmp 0x410318
cmp esi, dword [edi - 0xc]
jl 0x4104f6
mov esi, ebx
push esi
lea eax, [ebp - 0x38]
push eax
lea ecx, [ebp - 0x14]
call fcn.00407821
push eax
lea ecx, [ebp - 0x14]
mov byte [ebp - 4], 0x13
call fcn.0040265a
mov byte [ebp - 4], 0x12
mov ecx, dword [ebp - 0x38]
add ecx, 0xfffffff0
call fcn.00402883
mov edi, dword [ebp - 0x14]
xor esi, esi
push esi
push 0x2f
lea ecx, [ebp - 0x14]
call fcn.00411abf
cmp eax, 0xffffffff
je 0x4105ba
mov eax, dword [ebp - 0x34]
call fcn.0040cdbe
test eax, eax
jne 0x4104e7
lea ecx, [ebp - 0x38]
call fcn.00402846
mov ebx, 0x104
push ebx
lea ecx, [ebp - 0x38]
mov byte [ebp - 4], 0x14
call fcn.0040298b
push ebx
push eax
push edi
call dword [sym.imp.SHLWAPI.dll_PathSearchAndQualifyW]
push 0xffffffffffffffff
lea ecx, [ebp - 0x38]
test eax, eax
je 0x4105aa
call fcn.00411fe7
mov esi, dword [ebp - 0x38]
push esi
call fcn.00410d4b
test eax, eax
jge 0x410590
push esi
call fcn.0040ee05
test al, al
pop ecx
setne bl
jmp 0x410592
mov bl, 1
lea ecx, [esi - 0x10]
call fcn.00402883
mov ecx, dword [ebp - 0x2c]
add ecx, 0xfffffff0
call fcn.00402883
jmp 0x410373
call fcn.00411fe7
mov ecx, dword [ebp - 0x38]
add ecx, 0xfffffff0
call fcn.00402883
push 0x82c
lea eax, [ebp + 0x1820]
push esi
push eax
call fcn.004ae4c0
add esp, 0xc
cmp edi, esi
je 0x4105e0
push edi
lea eax, [ebp + 0x1820]
push eax
call fcn.0040c7f4
lea eax, [ebp - 0x14]
push eax
lea ecx, [ebp - 0x3c]
mov byte [ebp - 4], 0x15
call fcn.004025a0
lea eax, [ebp + 0x41a]
mov byte [ebp - 4], 0x16
lea edx, [eax + 2]
mov cx, word [eax]
inc eax
inc eax
cmp cx, si
jne 0x4105fd
sub eax, edx
sar eax, 1
je 0x410699
lea eax, [ebp + 0x1c3a]
push eax
lea ecx, [ebp - 0x3c]
call fcn.00402769
push esi
push 0x20
lea ecx, [ebp - 0x3c]
call fcn.00411abf
cmp eax, 0xffffffff
je 0x410645
push esi
push 0x20
lea ecx, [ebp - 0x3c]
call fcn.00411abf
xor ecx, ecx
mov word [ebp + eax*2 + 0x1c3a], cx
lea eax, [ebp + 0x1c3a]
lea edx, [eax + 2]
mov cx, word [eax]
inc eax
inc eax
cmp cx, si
jne 0x41064e
sub eax, edx
sar eax, 1
mov ebx, eax
lea eax, [ebp + 0x1c3a]
push eax
xor ecx, ecx
lea esi, [ebp - 0x14]
call fcn.004077ca
add eax, ebx
push eax
lea eax, [ebp - 0x38]
push eax
mov ecx, esi
call fcn.004078c2
push eax
lea ecx, [ebp - 0x3c]
mov byte [ebp - 4], 0x17
call fcn.0040265a
mov byte [ebp - 4], 0x16
mov ecx, dword [ebp - 0x38]
add ecx, 0xfffffff0
call fcn.00402883
lea ebx, [ebp - 0x3c]
call fcn.0040c56d
call fcn.0040c520
mov eax, dword [ebp - 0x34]
call fcn.0040cdbe
test eax, eax
je 0x4106cd
mov ecx, dword [ebp - 0x3c]
add ecx, 0xfffffff0
call fcn.00402883
lea ecx, [ebp + 0x1820]
call fcn.0040c808
jmp 0x4104e7
lea ecx, [ebp - 0x3c]
call fcn.0040f158
test al, al
je 0x4106f0
mov eax, dword [ebp - 0x30]
mov eax, dword [eax]
push 0x52380c
push eax
mov ecx, 0x5687b0
call fcn.00411f0c
jmp 0x4106b2
push ecx
lea eax, [ebp - 0x3c]
mov ecx, esp
mov dword [ebp - 0x38], esp
push eax
call fcn.004025a0
lea ecx, [ebp - 0x2c]
call fcn.00406d1b
push dword [ebp - 0x2c]
mov esi, dword [sym.imp.SHLWAPI.dll_PathFileExistsW]
call esi
test eax, eax
jne 0x4107d3
call fcn.00460c64
test al, al
je 0x410761
push 0x5687ac
lea ecx, [ebp - 0x2c]
call fcn.0040265a
push ecx
lea eax, [ebp - 0x3c]
mov ecx, esp
mov dword [ebp - 0x38], esp
push eax
call fcn.004025a0
lea ecx, [ebp - 0x2c]
call fcn.00406d1b
push dword [ebp - 0x2c]
call esi
test eax, eax
jne 0x4106d9
push dword [ebp - 0x2c]
call fcn.0040ee05
pop ecx
test al, al
jne 0x4106d9
mov ecx, dword [ebp - 0x3c]
lea edx, [ebp + 0x204c]
movzx eax, word [ecx]
inc ecx
mov word [edx], ax
inc ecx
inc edx
inc edx
test ax, ax
jne 0x41076a
push 0
lea eax, [ebp + 0x204c]
push eax
call dword [sym.imp.SHLWAPI.dll_PathFindOnPathW]
test eax, eax
je 0x4107c6
lea eax, [ebp + 0x204c]
push eax
call esi
test eax, eax
jne 0x4107a9
lea eax, [ebp + 0x204c]
push eax
call fcn.0040f146
mov bl, al
jmp 0x4107ab
mov bl, 1
mov ecx, dword [ebp - 0x3c]
add ecx, 0xfffffff0
call fcn.00402883
lea ecx, [ebp + 0x1820]
call fcn.0040c808
jmp 0x41059a
mov ebx, dword [ebp - 0x2c]
push ebx
call esi
test eax, eax
jne 0x4107a9
push ebx
jmp 0x4107a0
mov ecx, dword [ebp - 0x3c]
add ecx, 0xfffffff0
call fcn.00402883
lea ecx, [ebp + 0x1820]
call fcn.0040c808
mov byte [ebp - 4], 0xf
mov ecx, dword [ebp - 0x2c]
add ecx, 0xfffffff0
call fcn.00402883
mov eax, dword [ebp - 0x34]
call fcn.0040cdbe
test eax, eax
jne 0x4101c3
cmp byte [ebp + 0x2890], al
je 0x4101ae
push edi
call dword [sym.imp.SHLWAPI.dll_PathIsNetworkPathW]
test eax, eax
je 0x4101ae
push edi
call dword [sym.imp.SHLWAPI.dll_PathFileExistsW]
jmp 0x410363
push dword [ebp + 0x2890]
mov esi, dword [ebp - 0x30]
push dword [ebp + 0x288c]
push dword [ebp + 0x2888]
push dword [ebp + 0x2884]
push dword [ebp + 0x2880]
push dword [ebp + 0x287c]
push dword [ebp + 0x2878]
push ecx
mov dword [ebp - 0x48], esp
mov ecx, esp
push esi
call fcn.00402582
push dword [ebp - 0x34]
call fcn.0040ee17
mov byte [ebp - 0x25], al
test al, al
je 0x41088f
push dword [esi]
mov ecx, 0x5687b0
call fcn.004995a1
push 0x52380c
mov ecx, eax
call fcn.0040274c
mov ecx, dword [ebp - 0x20]
add ecx, 0xfffffff0
call fcn.00402883
mov ecx, dword [ebp - 0x1c]
add ecx, 0xfffffff0
call fcn.00402883
mov ecx, dword [ebp - 0x18]
add ecx, 0xfffffff0
call fcn.00402883
mov ecx, dword [ebp - 0x24]
add ecx, 0xfffffff0
call fcn.00402883
lea ecx, [ebx - 0x10]
call fcn.00402883
mov bl, byte [ebp - 0x25]
jmp 0x40f87c
mov ecx, dword [ebp - 0x40]
add ecx, 0xfffffff0
call fcn.00402883
mov al, 1
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov ecx, dword [ebp + 0x286c]
xor ecx, ebp
call fcn.004aa923
add ebp, 0x2870
leave
ret 0x1c