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

Disassembly:
push ebp
lea ebp, [esp - 0x2870]
mov eax, 0x2870
call fcn.004c0a30
push 0xffffffffffffffff
push 0x4e23c4
mov eax, dword fs:[0]
push eax
sub esp, 0x50
mov eax, dword [0x57b750]
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 0x414a5b
test ecx, ecx
jge 0x4137b0
push 0x80070057
call fcn.004028d7
movzx edx, word [eax]
cmp dx, 0x2e
jne 0x4137cc
cmp ecx, 1
jl 0x4137a6
movzx eax, word [eax + 2]
cmp ax, 0x5c
je 0x414a5b
mov eax, dword [ebp - 0x34]
call fcn.00410f23
test eax, eax
jne 0x414a5b
call fcn.00499991
push eax
lea ecx, [ebp - 0x40]
call fcn.004727f7
and dword [ebp - 4], 0
mov eax, dword [esi]
lea ecx, [ebp - 0x40]
push ecx
push eax
mov ecx, 0x584ae0
call fcn.004a7c0b
test eax, eax
jne 0x414a50
mov byte [ebp - 4], 1
call fcn.00499991
push eax
lea ecx, [ebp - 0x14]
call fcn.004727f7
mov byte [ebp - 4], 2
call fcn.00499991
push eax
lea ecx, [ebp - 0x24]
call fcn.004727f7
mov byte [ebp - 4], 3
call fcn.00499991
push eax
lea ecx, [ebp - 0x18]
call fcn.004727f7
mov byte [ebp - 4], 4
call fcn.00499991
push eax
lea ecx, [ebp - 0x1c]
call fcn.004727f7
mov byte [ebp - 4], 5
call fcn.00499991
push eax
lea ecx, [ebp - 0x20]
call fcn.004727f7
push esi
lea ecx, [ebp - 0x14]
mov byte [ebp - 4], 6
call fcn.0040257e
lea edi, [ebp - 0x14]
call fcn.00415c5a
mov ebx, edi
call fcn.0040f613
call fcn.0040f5c6
mov ebx, dword [ebp - 0x14]
push ebx
call dword [sym.imp.SHLWAPI.dll_PathFileExistsW]
test eax, eax
je 0x4138e1
push dword [esi]
mov ecx, 0x584ae0
call fcn.004a7d87
push 0x527d6c
mov ecx, eax
call fcn.004026bd
mov ecx, dword [ebp - 0x20]
add ecx, 0xfffffff0
call fcn.004027b0
mov ecx, dword [ebp - 0x1c]
add ecx, 0xfffffff0
call fcn.004027b0
mov ecx, dword [ebp - 0x18]
add ecx, 0xfffffff0
call fcn.004027b0
mov ecx, dword [ebp - 0x24]
add ecx, 0xfffffff0
call fcn.004027b0
lea ecx, [ebx - 0x10]
call fcn.004027b0
jmp 0x414a50
cmp dword [ebx - 0xc], 4
jl 0x413890
xor edi, edi
mov dword [ebp - 0x2c], edi
cmp edi, 4
jge 0x413933
mov eax, edi
sub eax, 0
je 0x413916
dec eax
je 0x41390f
dec eax
je 0x413908
dec eax
jne 0x413930
push str.architecture
jmp 0x41391b
push 0x527d90
jmp 0x41391b
push str.version
jmp 0x41391b
push 0x527d70
xor ecx, ecx
lea esi, [ebp - 0x14]
call fcn.004072a5
cmp eax, 0xffffffff
je 0x41392d
inc dword [ebp - 0x2c]
mov esi, dword [ebp - 0x30]
inc edi
jmp 0x4138ec
cmp dword [ebp - 0x2c], 1
jle 0x41398e
push ebx
call dword [sym.imp.SHLWAPI.dll_PathIsFileSpecW]
test eax, eax
setne al
test al, al
jne 0x413890
cmp dword [ebx - 0xc], 0
jl 0x4137a6
movzx eax, word [ebx]
push eax
call fcn.004bb689
pop ecx
test eax, eax
je 0x413890
cmp dword [ebp - 0x2c], 2
jg 0x413890
xor edi, edi
push edi
push 0x2e
lea ecx, [ebp - 0x14]
call fcn.00415c06
cmp eax, 0xffffffff
jne 0x4139f3
cmp edi, 4
jg 0x413890
push str.rundll32
xor ecx, ecx
lea esi, [ebp - 0x14]
call fcn.004072a5
mov esi, eax
mov eax, dword [ebp - 0x34]
call fcn.00410f23
test eax, eax
je 0x4139fb
mov ecx, dword [ebp - 0x20]
add ecx, 0xfffffff0
call fcn.004027b0
mov ecx, dword [ebp - 0x1c]
add ecx, 0xfffffff0
call fcn.004027b0
mov ecx, dword [ebp - 0x18]
add ecx, 0xfffffff0
call fcn.004027b0
mov ecx, dword [ebp - 0x24]
add ecx, 0xfffffff0
call fcn.004027b0
lea ecx, [ebx - 0x10]
call fcn.004027b0
mov bl, 1
mov ecx, dword [ebp - 0x40]
add ecx, 0xfffffff0
call fcn.004027b0
mov al, bl
jmp 0x414a5d
inc edi
inc eax
push eax
jmp 0x413976
test esi, esi
je 0x414996
cmp esi, 1
jne 0x413a1f
cmp dword [ebx - 0xc], 0
jl 0x4137a6
movzx eax, word [ebx]
cmp ax, 0x22
je 0x414996
push 0x527dbc
xor ecx, ecx
lea esi, [ebp - 0x14]
call fcn.004072a5
mov esi, eax
lea eax, [esi - 3]
cmp eax, 3
ja 0x413ae3
mov ecx, dword [ebp - 0x30]
push esi
lea eax, [ebp - 0x44]
push eax
call fcn.0040739d
lea edi, [ebp - 0x44]
mov byte [ebp - 4], 7
call fcn.00415c5a
push 0x527dc4
mov ecx, edi
call fcn.004107fc
xor edi, edi
cmp eax, edi
je 0x413aa3
push str.file
lea ecx, [ebp - 0x44]
call fcn.004107fc
cmp eax, edi
je 0x413aa3
mov eax, dword [ebp - 0x30]
push dword [eax]
mov ecx, 0x584ae0
call fcn.004a7d87
push 0x527d6c
mov ecx, eax
call fcn.004026bd
mov ecx, dword [ebp - 0x44]
add ecx, 0xfffffff0
call fcn.004027b0
jmp 0x4139ab
push edi
lea ecx, [ebp - 0x14]
lea eax, [esi + 3]
push ecx
call fcn.00406c5a
mov eax, dword [ebp - 0x14]
cmp dword [eax - 0xc], edi
jl 0x4137a6
movzx eax, word [eax]
cmp ax, 0x2f
je 0x413b14
push 0x5c
push 0x2f
lea ebx, [ebp - 0x14]
call fcn.00415a4f
mov byte [ebp - 4], 6
mov ecx, dword [ebp - 0x44]
add ecx, 0xfffffff0
call fcn.004027b0
mov ebx, dword [ebp - 0x14]
push 0
push 0x3b
lea ecx, [ebp - 0x14]
call fcn.00415c06
cmp eax, 0xffffffff
je 0x413b1e
mov eax, dword [ebp - 0x30]
push dword [eax]
mov ecx, 0x584ae0
call fcn.004a7d87
push 0x527d6c
mov ecx, eax
call fcn.004026bd
jmp 0x4139ab
lea eax, [ebp - 0x14]
push edi
push eax
xor eax, eax
inc eax
jmp 0x413aab
mov eax, dword [ebp - 0x34]
call fcn.00410f23
test eax, eax
jne 0x4139ab
push eax
push 0x2a
lea ecx, [ebp - 0x14]
call fcn.00415c06
mov dword [ebp - 0x38], eax
cmp eax, 0xffffffff
je 0x413be0
mov edi, dword [ebx - 0xc]
push 0x527dd8
xor ecx, ecx
lea esi, [ebp - 0x14]
call fcn.004072a5
add edi, 0xfffffffe
cmp eax, edi
je 0x413b74
mov edi, dword [ebx - 0xc]
push 0x527de0
xor ecx, ecx
call fcn.004072a5
add edi, 0xfffffffe
cmp eax, edi
jne 0x413b88
mov ebx, dword [ebx - 0xc]
dec ebx
push ebx
lea eax, [ebp - 0x14]
push eax
xor eax, eax
inc eax
call fcn.00406c5a
mov ebx, dword [ebp - 0x14]
mov esi, dword [ebp - 0x38]
inc esi
push esi
push 0x5c
lea ecx, [ebp - 0x14]
call fcn.00415c06
or edi, 0xffffffff
cmp eax, edi
jne 0x413af4
push esi
push 0x2a
lea ecx, [ebp - 0x14]
call fcn.00415c06
cmp eax, edi
jne 0x413af4
push 0
push 0x3f
lea ecx, [ebp - 0x14]
call fcn.00415c06
cmp eax, edi
jne 0x413af4
push 0x527de8
xor ecx, ecx
lea esi, [ebp - 0x14]
call fcn.004072a5
cmp eax, edi
jne 0x413af4
mov eax, dword [ebp - 0x34]
call fcn.00410f23
test eax, eax
jne 0x4139ab
mov edx, dword [ebx - 0xc]
xor edi, edi
cmp edx, edi
jl 0x4137a6
movzx eax, word [ebx]
cmp ax, 0x40
jne 0x413c43
cmp edx, 1
jl 0x4137a6
movzx eax, word [ebx + 2]
movzx ecx, ax
cmp cx, 0x25
je 0x413c33
cmp edx, 1
jl 0x4137a6
movzx eax, ax
push eax
call fcn.004bb689
pop ecx
test eax, eax
je 0x413c43
push edi
lea eax, [ebp - 0x14]
push eax
xor eax, eax
inc eax
call fcn.00406c5a
mov ebx, dword [ebp - 0x14]
cmp byte [ebp + 0x2890], 0
jne 0x413c6b
mov eax, dword [ebp - 0x34]
call fcn.00410f23
test eax, eax
jne 0x4139ab
push ebx
call dword [sym.imp.SHLWAPI.dll_PathIsNetworkPathW]
test eax, eax
jne 0x413af4
mov eax, dword [ebp - 0x34]
call fcn.00410f23
test eax, eax
jne 0x4139ab
cmp byte [ebp + 0x287c], al
je 0x413c94
lea eax, [ebp - 0x14]
push eax
call fcn.00412b80
test al, al
jne 0x413af4
cmp byte [ebp + 0x288c], 0
je 0x413ec3
lea eax, [ebp - 0x14]
push eax
lea ecx, [ebp - 0x2c]
call fcn.0040228a
mov byte [ebp - 4], 8
mov edi, dword [ebp - 0x2c]
mov eax, dword [ebp - 0x34]
call fcn.00410f23
test eax, eax
je 0x413cc8
lea ecx, [edi - 0x10]
jmp 0x413a99
push edi
call dword [sym.imp.SHLWAPI.dll_PathGetArgsW]
push eax
lea ecx, [ebp - 0x2c]
call fcn.004026bd
mov edi, dword [ebp - 0x2c]
cmp dword [edi - 0xc], 0
je 0x413d6f
push edi
call fcn.00414eb2
test eax, eax
jge 0x413cb4
push edi
call fcn.00412f6a
pop ecx
lea edi, [ebp - 0x2c]
mov byte [ebp - 0x25], al
call fcn.00415c5a
push 0x527594
xor ecx, ecx
mov esi, edi
call fcn.004072a5
test eax, eax
jg 0x413d23
push 0x525554
xor ecx, ecx
call fcn.004072a5
test eax, eax
jge 0x413cb1
cmp byte [ebp - 0x25], 0
jne 0x413cb1
mov ecx, dword [ebp - 0x2c]
add ecx, 0xfffffff0
call fcn.004027b0
mov ecx, dword [ebp - 0x20]
add ecx, 0xfffffff0
call fcn.004027b0
mov ecx, dword [ebp - 0x1c]
add ecx, 0xfffffff0
call fcn.004027b0
mov ecx, dword [ebp - 0x18]
add ecx, 0xfffffff0
call fcn.004027b0
mov ecx, dword [ebp - 0x24]
add ecx, 0xfffffff0
call fcn.004027b0
lea ecx, [ebx - 0x10]
call fcn.004027b0
xor bl, bl
jmp 0x4139e1
mov eax, dword [ebp - 0x34]
call fcn.00410f23
test eax, eax
jne 0x413cc0
push 0x527df0
xor ecx, ecx
lea esi, [ebp - 0x14]
call fcn.004072a5
mov dword [ebp - 0x3c], eax
mov byte [ebp - 0x25], 1
test eax, eax
jne 0x413dc7
xor ecx, ecx
push 0x527df0
inc ecx
call fcn.004072a5
mov dword [ebp - 0x3c], eax
cmp eax, 0xffffffff
je 0x413dc7
mov ecx, eax
inc ecx
push 0x527df0
call fcn.004072a5
mov dword [ebp - 0x3c], eax
cmp eax, 0xffffffff
jne 0x413dc7
mov byte [ebp - 0x25], 0
mov eax, dword [ebp - 0x34]
call fcn.00410f23
test eax, eax
jne 0x413cc0
cmp byte [ebp - 0x25], al
je 0x413eb2
mov ecx, dword [ebp - 0x3c]
inc ecx
push 0x527df0
lea esi, [ebp - 0x14]
mov dword [ebp - 0x38], ecx
call fcn.004072a5
cmp eax, dword [ebp - 0x3c]
jle 0x413eb2
sub eax, dword [ebp - 0x3c]
mov ecx, esi
dec eax
push eax
push dword [ebp - 0x38]
lea eax, [ebp - 0x34]
push eax
call fcn.0040731f
mov byte [ebp - 4], 9
push dword [ebp - 0x34]
call fcn.00414eb2
test eax, eax
setge byte [ebp - 0x25]
cmp byte [ebp - 0x25], 0
jne 0x413e63
push dword [ebp - 0x34]
call fcn.00412f6a
pop ecx
mov byte [ebp - 0x25], al
test al, al
je 0x413e63
mov eax, dword [ebp - 0x30]
push dword [eax]
mov ecx, 0x584ae0
call fcn.004a7d87
push 0x527d6c
mov ecx, eax
call fcn.004026bd
mov ecx, dword [ebp - 0x34]
add ecx, 0xfffffff0
call fcn.004027b0
jmp 0x413cc0
mov ecx, dword [ebp - 0x34]
add ecx, 0xfffffff0
call fcn.004027b0
lea ecx, [edi - 0x10]
call fcn.004027b0
mov ecx, dword [ebp - 0x20]
add ecx, 0xfffffff0
call fcn.004027b0
mov ecx, dword [ebp - 0x1c]
add ecx, 0xfffffff0
call fcn.004027b0
mov ecx, dword [ebp - 0x18]
add ecx, 0xfffffff0
call fcn.004027b0
mov ecx, dword [ebp - 0x24]
add ecx, 0xfffffff0
call fcn.004027b0
lea ecx, [ebx - 0x10]
call fcn.004027b0
mov bl, byte [ebp - 0x25]
jmp 0x4139e1
lea ecx, [edi - 0x10]
mov byte [ebp - 4], 6
call fcn.004027b0
jmp 0x413f56
push 0x527594
lea ecx, [ebp - 0x5c]
call fcn.004024df
push str..dll
lea ecx, [ebp - 0x58]
mov byte [ebp - 4], 0xa
call fcn.004024df
push str..ocx
lea ecx, [ebp - 0x54]
mov byte [ebp - 4], 0xb
call fcn.004024df
push 0x527df4
lea ecx, [ebp - 0x50]
mov byte [ebp - 4], 0xc
call fcn.004024df
push 0x527dfc
lea ecx, [ebp - 0x4c]
mov byte [ebp - 4], 0xd
call fcn.004024df
mov byte [ebp - 4], 0xe
cmp edi, 5
jae 0x413f40
push ecx
lea eax, [ebp + edi*4 - 0x5c]
mov dword [ebp - 0x38], esp
mov ecx, esp
push eax
call fcn.0040228a
lea ecx, [ebp - 0x14]
call fcn.004136f4
mov ebx, dword [ebp - 0x14]
pop ecx
test al, al
jne 0x413f40
inc edi
jmp 0x413f18
push 0x4027a6
push 5
push 4
lea eax, [ebp - 0x5c]
push eax
mov byte [ebp - 4], 6
call fcn.004ba2d3
cmp dword [ebx - 0xc], 0
jl 0x4137a6
movzx eax, word [ebx]
cmp ax, 0x22
jne 0x413f9c
push 1
push 0x22
lea ecx, [ebp - 0x14]
call fcn.00415c06
cmp eax, 0xffffffff
je 0x413af4
push 0
push 0x22
lea ecx, [ebp - 0x14]
call fcn.00415c06
cmp eax, 0xffffffff
je 0x413f9c
push 0x20
push eax
lea ecx, [ebp - 0x14]
call fcn.00415cb4
jmp 0x413f7e
lea ebx, [ebp - 0x14]
call fcn.0040f613
call fcn.0040f5c6
mov eax, dword [ebp - 0x34]
call fcn.00410f23
test eax, eax
je 0x413fec
mov ecx, dword [ebp - 0x20]
add ecx, 0xfffffff0
call fcn.004027b0
mov ecx, dword [ebp - 0x1c]
add ecx, 0xfffffff0
call fcn.004027b0
mov ecx, dword [ebp - 0x18]
add ecx, 0xfffffff0
call fcn.004027b0
mov ecx, dword [ebp - 0x24]
add ecx, 0xfffffff0
call fcn.004027b0
mov ecx, dword [ebp - 0x14]
add ecx, 0xfffffff0
jmp 0x4139da
mov edi, dword [ebp - 0x14]
xor ebx, ebx
cmp byte [ebp + 0x2878], bl
je 0x414053
push edi
call fcn.0043946b
pop ecx
test al, al
jne 0x414053
mov eax, dword [ebp - 0x30]
push dword [eax]
mov ecx, 0x584ae0
call fcn.004a7d87
push 0x527d6c
mov ecx, eax
call fcn.004026bd
mov ecx, dword [ebp - 0x20]
add ecx, 0xfffffff0
call fcn.004027b0
mov ecx, dword [ebp - 0x1c]
add ecx, 0xfffffff0
call fcn.004027b0
mov ecx, dword [ebp - 0x18]
add ecx, 0xfffffff0
call fcn.004027b0
mov ecx, dword [ebp - 0x24]
add ecx, 0xfffffff0
call fcn.004027b0
lea ecx, [edi - 0x10]
jmp 0x4139da
mov eax, dword [ebp - 0x34]
call fcn.00410f23
test eax, eax
jne 0x41401f
push ebx
push 0x25
lea ecx, [ebp - 0x14]
call fcn.00415c06
cmp eax, 0xffffffff
je 0x4140d4
inc eax
push eax
push 0x25
lea ecx, [ebp - 0x14]
call fcn.00415c06
cmp eax, 0xffffffff
je 0x4140d4
xor eax, eax
push 0xffe
mov word [ebp + 0x104c], ax
lea eax, [ebp + 0x104e]
push ebx
push eax
call fcn.004be850
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 0x4140d4
cmp eax, esi
jae 0x4140d4
lea eax, [ebp + 0x104c]
push eax
lea ecx, [ebp - 0x14]
call fcn.004026bd
lea edi, [ebp - 0x14]
call fcn.00415c5a
mov edi, dword [ebp - 0x14]
push str.rundll32
xor ecx, ecx
lea esi, [ebp - 0x14]
call fcn.004072a5
cmp eax, ebx
jne 0x41413c
push 7
push 0x20
mov ecx, esi
call fcn.00415c06
cmp eax, 0xffffffff
je 0x41413c
push ebx
mov ecx, esi
push ecx
call fcn.00406c5a
mov ebx, esi
call fcn.0040f613
push 0
push 0x2c
mov ecx, esi
call fcn.00415c06
mov ecx, eax
cmp ecx, 0xffffffff
je 0x41412a
mov eax, dword [ebp - 0x14]
mov eax, dword [eax - 0xc]
push ecx
sub eax, ecx
mov ecx, esi
push ecx
call fcn.00406c5a
mov edi, dword [ebp - 0x14]
push edi
call dword [sym.imp.SHLWAPI.dll_PathFileExistsW]
test eax, eax
jne 0x414004
mov eax, dword [ebp - 0x34]
call fcn.00410f23
test eax, eax
jne 0x41401f
lea edi, [ebp - 0x14]
call fcn.00415c5a
mov edi, dword [ebp - 0x14]
mov eax, dword [edi - 0xc]
mov ebx, 0x40f
cmp eax, ebx
jle 0x414201
push 0
push 0x5c
lea ecx, [ebp - 0x14]
call fcn.00415c06
test eax, eax
jl 0x414004
inc eax
push eax
push 0x5c
lea ecx, [ebp - 0x14]
call fcn.00415c06
test eax, eax
jl 0x414004
push edi
call dword [sym.imp.SHLWAPI.dll_PathIsNetworkPathW]
test eax, eax
jne 0x414004
push edi
call fcn.00414eb2
test eax, eax
setge bl
test bl, bl
je 0x4141c8
mov eax, dword [ebp - 0x30]
push dword [eax]
mov ecx, 0x584ae0
call fcn.004a7d87
push 0x527d6c
mov ecx, eax
call fcn.004026bd
mov ecx, dword [ebp - 0x20]
add ecx, 0xfffffff0
call fcn.004027b0
mov ecx, dword [ebp - 0x1c]
add ecx, 0xfffffff0
call fcn.004027b0
mov ecx, dword [ebp - 0x18]
add ecx, 0xfffffff0
call fcn.004027b0
mov ecx, dword [ebp - 0x24]
add ecx, 0xfffffff0
call fcn.004027b0
lea ecx, [edi - 0x10]
call fcn.004027b0
jmp 0x4139e1
cmp eax, 0x104
jg 0x414004
mov eax, dword [ebp - 0x34]
call fcn.00410f23
test eax, eax
jne 0x41401f
push 0x82c
push eax
lea eax, [ebp]
push eax
call fcn.004be850
add esp, 0xc
push edi
lea eax, [ebp]
mov byte [ebp - 4], 0xf
call fcn.00410984
push 0x820
lea eax, [ebp + 0x204c]
push 0
push eax
call fcn.004be850
add esp, 0xc
push 0x527584
xor ecx, ecx
lea esi, [ebp - 0x14]
call fcn.004072a5
cmp eax, 0xffffffff
je 0x4144e7
lea eax, [ebp + 4]
lea edx, [eax + 2]
mov cx, word [eax]
inc eax
inc eax
test cx, cx
jne 0x41426f
sub eax, edx
sar eax, 1
je 0x414308
push 0x5c
lea eax, [ebp - 0x2c]
push eax
call fcn.004159f9
push eax
lea eax, [ebp + 4]
push eax
lea eax, [ebp - 0x38]
push eax
mov byte [ebp - 4], 0x10
call fcn.0040f56d
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.004027b0
mov byte [ebp - 4], 0xf
mov ecx, dword [ebp - 0x2c]
add ecx, 0xfffffff0
call fcn.004027b0
cmp dword [0x57da14], 0
je 0x414308
cmp esi, 3
je 0x414308
mov eax, dword [ebp - 0x30]
push dword [eax]
mov ecx, 0x584ae0
call fcn.004a7d87
push 0x527d6c
mov ecx, eax
call fcn.004026bd
push 0x82c
lea eax, [ebp]
push 0
push eax
call fcn.004be850
add esp, 0xc
jmp 0x41401f
mov ebx, dword [sym.imp.SHLWAPI.dll_PathFileExistsW]
push edi
call ebx
test eax, eax
je 0x414337
mov eax, dword [ebp - 0x30]
mov eax, dword [eax]
push 0x527d6c
push eax
mov ecx, 0x584ae0
call fcn.0040fbfa
lea ecx, [ebp]
call fcn.0041096d
jmp 0x41401f
mov eax, dword [ebp - 0x34]
call fcn.00410f23
test eax, eax
jne 0x41432a
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 0x41434b
push 0
lea eax, [ebp + 0x204c]
push eax
call dword [sym.imp.SHLWAPI.dll_PathFindOnPathW]
test eax, eax
jne 0x414315
call fcn.0047380a
test al, al
je 0x41439a
cmp byte [ebp + 0x2884], 0
je 0x41439a
push str.program_files
xor ecx, ecx
lea esi, [ebp - 0x14]
call fcn.004072a5
cmp eax, 0xffffffff
je 0x41439a
mov byte [ebp + 0x2884], 0
call fcn.0047380a
test al, al
je 0x4143ba
cmp byte [ebp + 0x2884], 0
jne 0x4143ba
push dword [ebp + 0x2888]
push edi
call fcn.00412e0c
jmp 0x4143c0
push edi
call fcn.00414eb2
mov esi, eax
mov eax, dword [ebp - 0x34]
call fcn.00410f23
test eax, eax
jne 0x41432a
cmp esi, 0xffffffff
jne 0x414422
push edi
call fcn.00412f6a
pop ecx
test al, al
jne 0x414315
lea ecx, [ebp]
call fcn.0041096d
mov ecx, dword [ebp - 0x20]
add ecx, 0xfffffff0
call fcn.004027b0
mov ecx, dword [ebp - 0x1c]
add ecx, 0xfffffff0
call fcn.004027b0
mov ecx, dword [ebp - 0x18]
add ecx, 0xfffffff0
call fcn.004027b0
mov ecx, dword [ebp - 0x24]
add ecx, 0xfffffff0
call fcn.004027b0
lea ecx, [edi - 0x10]
jmp 0x413d63
test esi, esi
jne 0x414315
push esi
push 0x2e
lea ecx, [ebp - 0x14]
call fcn.00415c06
cmp eax, 0xffffffff
jne 0x4144b7
push edi
call ebx
test eax, eax
jne 0x414315
push 0x527594
lea eax, [ebp - 0x14]
push eax
lea eax, [ebp - 0x38]
push eax
call fcn.0040210c
add esp, 0xc
mov byte [ebp - 4], 0x11
push dword [ebp - 0x38]
call ebx
test eax, eax
je 0x41448c
mov eax, dword [ebp - 0x30]
mov eax, dword [eax]
push 0x527d6c
push eax
mov ecx, 0x584ae0
call fcn.0040fbfa
mov ecx, dword [ebp - 0x38]
add ecx, 0xfffffff0
call fcn.004027b0
jmp 0x41432a
lea eax, [ebp - 0x14]
push eax
lea ecx, [ebp - 0x38]
call fcn.004025cb
push str._system32
xor ecx, ecx
lea esi, [ebp - 0x14]
call fcn.004072a5
cmp eax, 0xffffffff
jne 0x414467
mov ecx, dword [ebp - 0x38]
add ecx, 0xfffffff0
call fcn.004027b0
mov eax, dword [ebp - 0x34]
call fcn.00410f23
test eax, eax
jne 0x41432a
push edi
call ebx
test eax, eax
jne 0x4144d8
push edi
call fcn.004132ab
mov bl, al
jmp 0x4144da
mov bl, 1
lea ecx, [ebp]
call fcn.0041096d
jmp 0x4141c8
mov eax, dword [ebp - 0x34]
call fcn.00410f23
test eax, eax
jne 0x41432a
lea edi, [ebp - 0x14]
call fcn.00415c5a
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 0x41450c
push esi
lea eax, [ebp + 0x204c]
push eax
call dword [sym.imp.SHLWAPI.dll_PathFindOnPathW]
test eax, eax
je 0x414547
lea eax, [ebp + 0x204c]
push eax
call dword [sym.imp.SHLWAPI.dll_PathFileExistsW]
test eax, eax
jne 0x4144d8
lea eax, [ebp + 0x204c]
push eax
jmp 0x4144cf
mov eax, dword [ebp - 0x34]
call fcn.00410f23
test eax, eax
jne 0x41432a
push 0x81e
mov word [ebp + 0x82c], ax
lea eax, [ebp + 0x82e]
push esi
push eax
call fcn.004be850
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 0x414315
push str..dll
xor ecx, ecx
lea esi, [ebp - 0x14]
call fcn.004072a5
or ebx, 0xffffffff
cmp eax, ebx
jne 0x4145e6
push str..ocx
xor ecx, ecx
call fcn.004072a5
cmp eax, ebx
jne 0x4145e6
push 0x527594
xor ecx, ecx
call fcn.004072a5
cmp eax, ebx
jne 0x4145e6
push 0x527df4
xor ecx, ecx
call fcn.004072a5
cmp eax, ebx
je 0x41495f
push 0x523214
xor ecx, ecx
lea esi, [ebp - 0x14]
call fcn.004072a5
cmp eax, ebx
jne 0x41495f
mov eax, dword [ebp - 0x34]
add eax, 0x202c
push eax
lea ecx, [ebp - 0x2c]
call fcn.004022a8
xor esi, esi
push esi
push 0x5c
lea ecx, [ebp - 0x14]
mov byte [ebp - 4], 0x12
call fcn.00415c06
mov ebx, eax
cmp ebx, 0xffffffff
je 0x41468b
lea esi, [ebx + 1]
push esi
push 0x5c
lea ecx, [ebp - 0x14]
call fcn.00415c06
cmp eax, 0xffffffff
je 0x414656
mov eax, dword [ebp - 0x30]
mov eax, dword [eax]
push 0x527d6c
push eax
mov ecx, 0x584ae0
call fcn.0040fbfa
mov ecx, dword [ebp - 0x2c]
jmp 0x41447f
cmp esi, dword [edi - 0xc]
jl 0x41465d
mov esi, ebx
push esi
lea eax, [ebp - 0x38]
push eax
lea ecx, [ebp - 0x14]
call fcn.004072fc
push eax
lea ecx, [ebp - 0x14]
mov byte [ebp - 4], 0x13
call fcn.004025cb
mov byte [ebp - 4], 0x12
mov ecx, dword [ebp - 0x38]
add ecx, 0xfffffff0
call fcn.004027b0
mov edi, dword [ebp - 0x14]
xor esi, esi
push esi
push 0x2f
lea ecx, [ebp - 0x14]
call fcn.00415c06
cmp eax, 0xffffffff
je 0x414721
mov eax, dword [ebp - 0x34]
call fcn.00410f23
test eax, eax
jne 0x41464e
lea ecx, [ebp - 0x38]
call fcn.00402792
mov ebx, 0x104
push ebx
lea ecx, [ebp - 0x38]
mov byte [ebp - 4], 0x14
call fcn.004028ad
push ebx
push eax
push edi
call dword [sym.imp.SHLWAPI.dll_PathSearchAndQualifyW]
push 0xffffffffffffffff
lea ecx, [ebp - 0x38]
test eax, eax
je 0x414711
call fcn.004160af
mov esi, dword [ebp - 0x38]
push esi
call fcn.00414eb2
test eax, eax
jge 0x4146f7
push esi
call fcn.00412f6a
test al, al
pop ecx
setne bl
jmp 0x4146f9
mov bl, 1
lea ecx, [esi - 0x10]
call fcn.004027b0
mov ecx, dword [ebp - 0x2c]
add ecx, 0xfffffff0
call fcn.004027b0
jmp 0x4144da
call fcn.004160af
mov ecx, dword [ebp - 0x38]
add ecx, 0xfffffff0
call fcn.004027b0
push 0x82c
lea eax, [ebp + 0x1820]
push esi
push eax
call fcn.004be850
add esp, 0xc
cmp edi, esi
je 0x414747
push edi
lea eax, [ebp + 0x1820]
push eax
call fcn.00410959
lea eax, [ebp - 0x14]
push eax
lea ecx, [ebp - 0x3c]
mov byte [ebp - 4], 0x15
call fcn.004022a8
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 0x414764
sub eax, edx
sar eax, 1
je 0x414800
lea eax, [ebp + 0x1c3a]
push eax
lea ecx, [ebp - 0x3c]
call fcn.004026da
push esi
push 0x20
lea ecx, [ebp - 0x3c]
call fcn.00415c06
cmp eax, 0xffffffff
je 0x4147ac
push esi
push 0x20
lea ecx, [ebp - 0x3c]
call fcn.00415c06
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 0x4147b5
sub eax, edx
sar eax, 1
mov ebx, eax
lea eax, [ebp + 0x1c3a]
push eax
xor ecx, ecx
lea esi, [ebp - 0x14]
call fcn.004072a5
add eax, ebx
push eax
lea eax, [ebp - 0x38]
push eax
mov ecx, esi
call fcn.0040739d
push eax
lea ecx, [ebp - 0x3c]
mov byte [ebp - 4], 0x17
call fcn.004025cb
mov byte [ebp - 4], 0x16
mov ecx, dword [ebp - 0x38]
add ecx, 0xfffffff0
call fcn.004027b0
lea ebx, [ebp - 0x3c]
call fcn.0040f613
call fcn.0040f5c6
mov eax, dword [ebp - 0x34]
call fcn.00410f23
test eax, eax
je 0x414834
mov ecx, dword [ebp - 0x3c]
add ecx, 0xfffffff0
call fcn.004027b0
lea ecx, [ebp + 0x1820]
call fcn.0041096d
jmp 0x41464e
lea ecx, [ebp - 0x3c]
call fcn.004132bd
test al, al
je 0x414857
mov eax, dword [ebp - 0x30]
mov eax, dword [eax]
push 0x527d6c
push eax
mov ecx, 0x584ae0
call fcn.0040fbfa
jmp 0x414819
push ecx
lea eax, [ebp - 0x3c]
mov ecx, esp
mov dword [ebp - 0x38], esp
push eax
call fcn.004022a8
lea ecx, [ebp - 0x2c]
call fcn.004067db
push dword [ebp - 0x2c]
mov esi, dword [sym.imp.SHLWAPI.dll_PathFileExistsW]
call esi
test eax, eax
jne 0x41493a
call fcn.0047380a
test al, al
je 0x4148c8
push 0x584adc
lea ecx, [ebp - 0x2c]
call fcn.004025cb
push ecx
lea eax, [ebp - 0x3c]
mov ecx, esp
mov dword [ebp - 0x38], esp
push eax
call fcn.004022a8
lea ecx, [ebp - 0x2c]
call fcn.004067db
push dword [ebp - 0x2c]
call esi
test eax, eax
jne 0x414840
push dword [ebp - 0x2c]
call fcn.00412f6a
pop ecx
test al, al
jne 0x414840
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 0x4148d1
push 0
lea eax, [ebp + 0x204c]
push eax
call dword [sym.imp.SHLWAPI.dll_PathFindOnPathW]
test eax, eax
je 0x41492d
lea eax, [ebp + 0x204c]
push eax
call esi
test eax, eax
jne 0x414910
lea eax, [ebp + 0x204c]
push eax
call fcn.004132ab
mov bl, al
jmp 0x414912
mov bl, 1
mov ecx, dword [ebp - 0x3c]
add ecx, 0xfffffff0
call fcn.004027b0
lea ecx, [ebp + 0x1820]
call fcn.0041096d
jmp 0x414701
mov ebx, dword [ebp - 0x2c]
push ebx
call esi
test eax, eax
jne 0x414910
push ebx
jmp 0x414907
mov ecx, dword [ebp - 0x3c]
add ecx, 0xfffffff0
call fcn.004027b0
lea ecx, [ebp + 0x1820]
call fcn.0041096d
mov byte [ebp - 4], 0xf
mov ecx, dword [ebp - 0x2c]
add ecx, 0xfffffff0
call fcn.004027b0
mov eax, dword [ebp - 0x34]
call fcn.00410f23
test eax, eax
jne 0x41432a
cmp byte [ebp + 0x2890], al
je 0x414315
push edi
call dword [sym.imp.SHLWAPI.dll_PathIsNetworkPathW]
test eax, eax
je 0x414315
push edi
call dword [sym.imp.SHLWAPI.dll_PathFileExistsW]
jmp 0x4144ca
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.0040228a
push dword [ebp - 0x34]
call fcn.00412f7c
mov byte [ebp - 0x25], al
test al, al
je 0x4149f6
push dword [esi]
mov ecx, 0x584ae0
call fcn.004a7d87
push 0x527d6c
mov ecx, eax
call fcn.004026bd
mov ecx, dword [ebp - 0x20]
add ecx, 0xfffffff0
call fcn.004027b0
mov ecx, dword [ebp - 0x1c]
add ecx, 0xfffffff0
call fcn.004027b0
mov ecx, dword [ebp - 0x18]
add ecx, 0xfffffff0
call fcn.004027b0
mov ecx, dword [ebp - 0x24]
add ecx, 0xfffffff0
call fcn.004027b0
lea ecx, [ebx - 0x10]
call fcn.004027b0
mov bl, byte [ebp - 0x25]
jmp 0x4139e1
mov ecx, dword [ebp - 0x40]
add ecx, 0xfffffff0
call fcn.004027b0
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.004b96ff
add ebp, 0x2870
leave
ret 0x1c