Function at 0x4389f0
Capabilities:
Check if file exists
Check os version
Create shortcut via ishelllink

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x45c8d4
mov eax, dword fs:[0]
push eax
sub esp, 0x108
mov eax, dword [0x47800c]
xor eax, ebp
mov dword [ebp - 0x10], eax
push ebx
push esi
push edi
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov eax, dword [ebp + 8]
mov dword [ebp - 0x18], eax
mov eax, dword [ebp + 0xc]
mov dword [ebp - 0x114], eax
call fcn.0040f730
mov ecx, eax
test ecx, ecx
jne 0x438a42
push 0x80004005
call fcn.0041ffc0
mov eax, dword [ecx]
call dword [eax + 0xc]
add eax, 0x10
mov dword [ebp - 0x4c], eax
mov dword [ebp - 4], 0
call fcn.0040f730
mov ecx, eax
test ecx, ecx
jne 0x438a69
push 0x80004005
call fcn.0041ffc0
mov eax, dword [ecx]
call dword [eax + 0xc]
add eax, 0x10
mov dword [ebp - 0x54], eax
mov byte [ebp - 4], 1
call fcn.0040f730
mov ecx, eax
test ecx, ecx
jne 0x438a8d
push 0x80004005
call fcn.0041ffc0
mov eax, dword [ecx]
call dword [eax + 0xc]
add eax, 0x10
mov dword [ebp - 0x20], eax
mov byte [ebp - 4], 2
call fcn.0040f730
mov ecx, eax
test ecx, ecx
jne 0x438ab1
push 0x80004005
call fcn.0041ffc0
mov eax, dword [ecx]
call dword [eax + 0xc]
lea esi, [eax + 0x10]
mov dword [ebp - 0x34], esi
mov byte [ebp - 4], 3
call fcn.0040f730
mov ecx, eax
test ecx, ecx
jne 0x438ad5
push 0x80004005
call fcn.0041ffc0
mov eax, dword [ecx]
call dword [eax + 0xc]
add eax, 0x10
mov dword [ebp - 0x44], eax
mov byte [ebp - 4], 4
call fcn.0040f730
mov ecx, eax
test ecx, ecx
jne 0x438af9
push 0x80004005
call fcn.0041ffc0
mov eax, dword [ecx]
call dword [eax + 0xc]
add eax, 0x10
mov dword [ebp - 0x40], eax
mov byte [ebp - 4], 5
call fcn.0040f730
mov ecx, eax
test ecx, ecx
jne 0x438b1d
push 0x80004005
call fcn.0041ffc0
mov eax, dword [ecx]
call dword [eax + 0xc]
lea ebx, [eax + 0x10]
mov dword [ebp - 0x48], ebx
mov byte [ebp - 4], 6
call fcn.0040f730
mov ecx, eax
test ecx, ecx
jne 0x438b41
push 0x80004005
call fcn.0041ffc0
mov eax, dword [ecx]
call dword [eax + 0xc]
lea edi, [eax + 0x10]
mov dword [ebp - 0x50], edi
mov byte [ebp - 4], 7
mov ecx, dword [ebp - 0x18]
push str.filePath
mov byte [ebp - 0x10d], 0
call fcn.004497b0
cmp eax, 0x47ae10
je 0x43a418
mov eax, dword [ebp - 0x18]
cmp byte [eax + 8], 0
jne 0x438b82
mov eax, 0x47ae10
jmp 0x438c04
lea ecx, [ebp - 0x30]
xorps xmm0, xmm0
push ecx
lea ecx, [ebp - 0x24]
movq qword [ebp - 0x30], xmm0
push ecx
mov ecx, dword [eax]
mov dword [ebp - 0x30], str.filePath
mov dword [ebp - 0x2c], 0
call fcn.00449b10
mov ecx, dword [ebp - 0x18]
mov eax, dword [eax]
mov ecx, dword [ecx]
cmp eax, dword [ecx]
jne 0x438bd8
mov byte [ebp - 4], 8
cmp dword [ebp - 0x30], 0
je 0x438bd1
cmp dword [ebp - 0x2c], 1
jne 0x438bd1
call fcn.004489d0
push dword [ebp - 0x30]
mov ecx, dword [eax]
mov eax, dword [ecx]
call dword [eax + 8]
mov eax, 0x47ae10
jmp 0x438c00
add eax, 0x18
mov dword [ebp - 0x14], eax
mov byte [ebp - 4], 9
cmp dword [ebp - 0x30], 0
je 0x438c00
cmp dword [ebp - 0x2c], 1
jne 0x438c00
call fcn.004489d0
push dword [ebp - 0x30]
mov ecx, dword [eax]
mov eax, dword [ecx]
call dword [eax + 8]
mov eax, dword [ebp - 0x14]
mov byte [ebp - 4], 7
cmp byte [eax + 8], 4
jne 0x43a418
mov esi, dword [ebp - 0x18]
cmp byte [esi + 8], 0
jne 0x438c1e
mov eax, 0x47ae10
jmp 0x438c9d
mov ecx, dword [esi]
lea eax, [ebp - 0x28]
push eax
lea eax, [ebp - 0x18]
xorps xmm0, xmm0
movq qword [ebp - 0x28], xmm0
push eax
mov dword [ebp - 0x28], str.filePath
mov dword [ebp - 0x24], 0
call fcn.00449b10
mov ecx, dword [esi]
mov eax, dword [eax]
cmp eax, dword [ecx]
jne 0x438c71
mov byte [ebp - 4], 0xa
cmp dword [ebp - 0x28], 0
je 0x438c6a
cmp dword [ebp - 0x24], 1
jne 0x438c6a
call fcn.004489d0
push dword [ebp - 0x28]
mov ecx, dword [eax]
mov eax, dword [ecx]
call dword [eax + 8]
mov eax, 0x47ae10
jmp 0x438c99
add eax, 0x18
mov dword [ebp - 0x14], eax
mov byte [ebp - 4], 0xb
cmp dword [ebp - 0x28], 0
je 0x438c99
cmp dword [ebp - 0x24], 1
jne 0x438c99
call fcn.004489d0
push dword [ebp - 0x28]
mov ecx, dword [eax]
mov eax, dword [ecx]
call dword [eax + 8]
mov eax, dword [ebp - 0x14]
mov byte [ebp - 4], 7
mov edx, dword [eax]
test edx, edx
jne 0x438ca7
xor ecx, ecx
jmp 0x438cba
mov ecx, edx
lea eax, [ecx + 1]
mov dword [ebp - 0x14], eax
nop
mov al, byte [ecx]
inc ecx
test al, al
jne 0x438cb0
sub ecx, dword [ebp - 0x14]
push ecx
push edx
lea ecx, [ebp - 0x4c]
call fcn.004410c0
lea edx, [ebp - 0x34]
lea ecx, [ebp - 0x4c]
call fcn.00453880
push str.type
mov ecx, esi
call fcn.004497b0
cmp eax, 0x47ae10
je 0x43a35c
cmp byte [esi + 8], 0
jne 0x438cf3
mov eax, 0x47ae10
jmp 0x438d72
mov ecx, dword [esi]
lea eax, [ebp - 0x28]
push eax
lea eax, [ebp - 0x18]
xorps xmm0, xmm0
movq qword [ebp - 0x28], xmm0
push eax
mov dword [ebp - 0x28], str.type
mov dword [ebp - 0x24], 0
call fcn.00449b10
mov ecx, dword [esi]
mov eax, dword [eax]
cmp eax, dword [ecx]
jne 0x438d46
mov byte [ebp - 4], 0xc
cmp dword [ebp - 0x28], 0
je 0x438d3f
cmp dword [ebp - 0x24], 1
jne 0x438d3f
call fcn.004489d0
push dword [ebp - 0x28]
mov ecx, dword [eax]
mov eax, dword [ecx]
call dword [eax + 8]
mov eax, 0x47ae10
jmp 0x438d6e
add eax, 0x18
mov dword [ebp - 0x14], eax
mov byte [ebp - 4], 0xd
cmp dword [ebp - 0x28], 0
je 0x438d6e
cmp dword [ebp - 0x24], 1
jne 0x438d6e
call fcn.004489d0
push dword [ebp - 0x28]
mov ecx, dword [eax]
mov eax, dword [ecx]
call dword [eax + 8]
mov eax, dword [ebp - 0x14]
mov byte [ebp - 4], 7
mov al, byte [eax + 8]
cmp al, 1
je 0x438d89
cmp al, 2
je 0x438d89
cmp al, 5
je 0x438d89
cmp al, 3
jne 0x43a35c
cmp byte [esi + 8], 0
jne 0x438d96
mov eax, 0x47ae10
jmp 0x438e15
mov ecx, dword [esi]
lea eax, [ebp - 0x28]
push eax
lea eax, [ebp - 0x18]
xorps xmm0, xmm0
movq qword [ebp - 0x28], xmm0
push eax
mov dword [ebp - 0x28], str.type
mov dword [ebp - 0x24], 0
call fcn.00449b10
mov ecx, dword [esi]
mov eax, dword [eax]
cmp eax, dword [ecx]
jne 0x438de9
mov byte [ebp - 4], 0xe
cmp dword [ebp - 0x28], 0
je 0x438de2
cmp dword [ebp - 0x24], 1
jne 0x438de2
call fcn.004489d0
push dword [ebp - 0x28]
mov ecx, dword [eax]
mov eax, dword [ecx]
call dword [eax + 8]
mov eax, 0x47ae10
jmp 0x438e11
add eax, 0x18
mov dword [ebp - 0x14], eax
mov byte [ebp - 4], 0xf
cmp dword [ebp - 0x28], 0
je 0x438e11
cmp dword [ebp - 0x24], 1
jne 0x438e11
call fcn.004489d0
push dword [ebp - 0x28]
mov ecx, dword [eax]
mov eax, dword [ecx]
call dword [eax + 8]
mov eax, dword [ebp - 0x14]
mov byte [ebp - 4], 7
mov ecx, eax
call fcn.00448fa0
push str.name
mov ecx, esi
mov dword [ebp - 0x24], eax
call fcn.004497b0
cmp eax, 0x47ae10
je 0x43a2a0
cmp byte [esi + 8], 0
jne 0x438e43
mov eax, 0x47ae10
jmp 0x438ec2
mov ecx, dword [esi]
lea eax, [ebp - 0x30]
push eax
lea eax, [ebp - 0x18]
xorps xmm0, xmm0
movq qword [ebp - 0x30], xmm0
push eax
mov dword [ebp - 0x30], str.name
mov dword [ebp - 0x2c], 0
call fcn.00449b10
mov ecx, dword [esi]
mov eax, dword [eax]
cmp eax, dword [ecx]
jne 0x438e96
mov byte [ebp - 4], 0x10
cmp dword [ebp - 0x30], 0
je 0x438e8f
cmp dword [ebp - 0x2c], 1
jne 0x438e8f
call fcn.004489d0
push dword [ebp - 0x30]
mov ecx, dword [eax]
mov eax, dword [ecx]
call dword [eax + 8]
mov eax, 0x47ae10
jmp 0x438ebe
add eax, 0x18
mov dword [ebp - 0x14], eax
mov byte [ebp - 4], 0x11
cmp dword [ebp - 0x30], 0
je 0x438ebe
cmp dword [ebp - 0x2c], 1
jne 0x438ebe
call fcn.004489d0
push dword [ebp - 0x30]
mov ecx, dword [eax]
mov eax, dword [ecx]
call dword [eax + 8]
mov eax, dword [ebp - 0x14]
mov byte [ebp - 4], 7
cmp byte [eax + 8], 4
jne 0x43a2a0
cmp byte [esi + 8], 0
jne 0x438ed9
mov edi, 0x47ae10
jmp 0x438f50
mov ecx, dword [esi]
lea eax, [ebp - 0x1c]
push eax
lea eax, [ebp - 0x14]
xorps xmm0, xmm0
movq qword [ebp - 0x1c], xmm0
push eax
mov dword [ebp - 0x1c], str.name
mov dword [ebp - 0x18], 0
call fcn.00449b10
mov ecx, dword [esi]
mov eax, dword [eax]
cmp eax, dword [ecx]
jne 0x438f2b
mov byte [ebp - 4], 0x12
mov edi, dword [ebp - 0x1c]
test edi, edi
je 0x438f24
cmp dword [ebp - 0x18], 1
jne 0x438f24
call fcn.004489d0
push edi
mov ecx, dword [eax]
mov eax, dword [ecx]
call dword [eax + 8]
mov edi, 0x47ae10
jmp 0x438f4c
lea edi, [eax + 0x18]
mov byte [ebp - 4], 0x13
mov ebx, dword [ebp - 0x1c]
test ebx, ebx
je 0x438f4c
cmp dword [ebp - 0x18], 1
jne 0x438f4c
call fcn.004489d0
push ebx
mov ecx, dword [eax]
mov eax, dword [ecx]
call dword [eax + 8]
mov byte [ebp - 4], 7
mov edx, dword [edi]
test edx, edx
jne 0x438f5a
xor ecx, ecx
jmp 0x438f69
mov ecx, edx
lea edi, [ecx + 1]
nop
mov al, byte [ecx]
inc ecx
test al, al
jne 0x438f60
sub ecx, edi
push ecx
push edx
lea ecx, [ebp - 0x4c]
call fcn.004410c0
lea edx, [ebp - 0x50]
lea ecx, [ebp - 0x4c]
call fcn.00453880
push str.description
mov ecx, esi
call fcn.004497b0
cmp eax, 0x47ae10
je 0x4390d4
cmp byte [esi + 8], 0
jne 0x438fa2
mov edi, 0x47ae10
jmp 0x439019
mov ecx, dword [esi]
lea eax, [ebp - 0x1c]
push eax
lea eax, [ebp - 0x14]
xorps xmm0, xmm0
movq qword [ebp - 0x1c], xmm0
push eax
mov dword [ebp - 0x1c], str.description
mov dword [ebp - 0x18], 0
call fcn.00449b10
mov ecx, dword [esi]
mov eax, dword [eax]
cmp eax, dword [ecx]
jne 0x438ff4
mov byte [ebp - 4], 0x14
mov edi, dword [ebp - 0x1c]
test edi, edi
je 0x438fed
cmp dword [ebp - 0x18], 1
jne 0x438fed
call fcn.004489d0
push edi
mov ecx, dword [eax]
mov eax, dword [ecx]
call dword [eax + 8]
mov edi, 0x47ae10
jmp 0x439015
lea edi, [eax + 0x18]
mov byte [ebp - 4], 0x15
mov ebx, dword [ebp - 0x1c]
test ebx, ebx
je 0x439015
cmp dword [ebp - 0x18], 1
jne 0x439015
call fcn.004489d0
push ebx
mov ecx, dword [eax]
mov eax, dword [ecx]
call dword [eax + 8]
mov byte [ebp - 4], 7
cmp byte [edi + 8], 4
jne 0x4390d4
cmp byte [esi + 8], 0
jne 0x439030
mov edi, 0x47ae10
jmp 0x4390a7
mov ecx, dword [esi]
lea eax, [ebp - 0x1c]
push eax
lea eax, [ebp - 0x14]
xorps xmm0, xmm0
movq qword [ebp - 0x1c], xmm0
push eax
mov dword [ebp - 0x1c], str.description
mov dword [ebp - 0x18], 0
call fcn.00449b10
mov ecx, dword [esi]
mov eax, dword [eax]
cmp eax, dword [ecx]
jne 0x439082
mov byte [ebp - 4], 0x16
mov edi, dword [ebp - 0x1c]
test edi, edi
je 0x43907b
cmp dword [ebp - 0x18], 1
jne 0x43907b
call fcn.004489d0
push edi
mov ecx, dword [eax]
mov eax, dword [ecx]
call dword [eax + 8]
mov edi, 0x47ae10
jmp 0x4390a3
lea edi, [eax + 0x18]
mov byte [ebp - 4], 0x17
mov ebx, dword [ebp - 0x1c]
test ebx, ebx
je 0x4390a3
cmp dword [ebp - 0x18], 1
jne 0x4390a3
call fcn.004489d0
push ebx
mov ecx, dword [eax]
mov eax, dword [ecx]
call dword [eax + 8]
mov byte [ebp - 4], 7
mov edx, dword [edi]
test edx, edx
jne 0x4390b1
xor ecx, ecx
jmp 0x4390bf
mov ecx, edx
lea edi, [ecx + 1]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x4390b6
sub ecx, edi
push ecx
push edx
lea ecx, [ebp - 0x4c]
call fcn.004410c0
lea edx, [ebp - 0x44]
lea ecx, [ebp - 0x4c]
call fcn.00453880
push str.iconPath
mov ecx, esi
call fcn.004497b0
cmp eax, 0x47ae10
je 0x43922e
cmp byte [esi + 8], 0
jne 0x4390f8
mov edi, 0x47ae10
jmp 0x43916f
mov ecx, dword [esi]
lea eax, [ebp - 0x1c]
push eax
lea eax, [ebp - 0x14]
xorps xmm0, xmm0
movq qword [ebp - 0x1c], xmm0
push eax
mov dword [ebp - 0x1c], str.iconPath
mov dword [ebp - 0x18], 0
call fcn.00449b10
mov ecx, dword [esi]
mov eax, dword [eax]
cmp eax, dword [ecx]
jne 0x43914a
mov byte [ebp - 4], 0x18
mov edi, dword [ebp - 0x1c]
test edi, edi
je 0x439143
cmp dword [ebp - 0x18], 1
jne 0x439143
call fcn.004489d0
push edi
mov ecx, dword [eax]
mov eax, dword [ecx]
call dword [eax + 8]
mov edi, 0x47ae10
jmp 0x43916b
lea edi, [eax + 0x18]
mov byte [ebp - 4], 0x19
mov ebx, dword [ebp - 0x1c]
test ebx, ebx
je 0x43916b
cmp dword [ebp - 0x18], 1
jne 0x43916b
call fcn.004489d0
push ebx
mov ecx, dword [eax]
mov eax, dword [ecx]
call dword [eax + 8]
mov byte [ebp - 4], 7
cmp byte [edi + 8], 4
jne 0x43922e
cmp byte [esi + 8], 0
jne 0x439186
mov edi, 0x47ae10
jmp 0x4391fd
mov ecx, dword [esi]
lea eax, [ebp - 0x1c]
push eax
lea eax, [ebp - 0x14]
xorps xmm0, xmm0
movq qword [ebp - 0x1c], xmm0
push eax
mov dword [ebp - 0x1c], str.iconPath
mov dword [ebp - 0x18], 0
call fcn.00449b10
mov ecx, dword [esi]
mov eax, dword [eax]
cmp eax, dword [ecx]
jne 0x4391d8
mov byte [ebp - 4], 0x1a
mov edi, dword [ebp - 0x1c]
test edi, edi
je 0x4391d1
cmp dword [ebp - 0x18], 1
jne 0x4391d1
call fcn.004489d0
push edi
mov ecx, dword [eax]
mov eax, dword [ecx]
call dword [eax + 8]
mov edi, 0x47ae10
jmp 0x4391f9
lea edi, [eax + 0x18]
mov byte [ebp - 4], 0x1b
mov ebx, dword [ebp - 0x1c]
test ebx, ebx
je 0x4391f9
cmp dword [ebp - 0x18], 1
jne 0x4391f9
call fcn.004489d0
push ebx
mov ecx, dword [eax]
mov eax, dword [ecx]
call dword [eax + 8]
mov byte [ebp - 4], 7
mov edx, dword [edi]
test edx, edx
jne 0x439207
xor ecx, ecx
jmp 0x439219
mov ecx, edx
lea edi, [ecx + 1]
nop dword [eax]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x439210
sub ecx, edi
push ecx
push edx
lea ecx, [ebp - 0x4c]
call fcn.004410c0
lea edx, [ebp - 0x40]
lea ecx, [ebp - 0x4c]
call fcn.00453880
push str.commandLine
mov ecx, esi
call fcn.004497b0
cmp eax, 0x47ae10
je 0x439384
cmp byte [esi + 8], 0
jne 0x439252
mov edi, 0x47ae10
jmp 0x4392c9
mov ecx, dword [esi]
lea eax, [ebp - 0x1c]
push eax
lea eax, [ebp - 0x14]
xorps xmm0, xmm0
movq qword [ebp - 0x1c], xmm0
push eax
mov dword [ebp - 0x1c], str.commandLine
mov dword [ebp - 0x18], 0
call fcn.00449b10
mov ecx, dword [esi]
mov eax, dword [eax]
cmp eax, dword [ecx]
jne 0x4392a4
mov byte [ebp - 4], 0x1c
mov edi, dword [ebp - 0x1c]
test edi, edi
je 0x43929d
cmp dword [ebp - 0x18], 1
jne 0x43929d
call fcn.004489d0
push edi
mov ecx, dword [eax]
mov eax, dword [ecx]
call dword [eax + 8]
mov edi, 0x47ae10
jmp 0x4392c5
lea edi, [eax + 0x18]
mov byte [ebp - 4], 0x1d
mov ebx, dword [ebp - 0x1c]
test ebx, ebx
je 0x4392c5
cmp dword [ebp - 0x18], 1
jne 0x4392c5
call fcn.004489d0
push ebx
mov ecx, dword [eax]
mov eax, dword [ecx]
call dword [eax + 8]
mov byte [ebp - 4], 7
cmp byte [edi + 8], 4
jne 0x439384
cmp byte [esi + 8], 0
jne 0x4392e0
mov edi, 0x47ae10
jmp 0x439357
mov ecx, dword [esi]
lea eax, [ebp - 0x1c]
push eax
lea eax, [ebp - 0x14]
xorps xmm0, xmm0
movq qword [ebp - 0x1c], xmm0
push eax
mov dword [ebp - 0x1c], str.commandLine
mov dword [ebp - 0x18], 0
call fcn.00449b10
mov ecx, dword [esi]
mov eax, dword [eax]
cmp eax, dword [ecx]
jne 0x439332
mov byte [ebp - 4], 0x1e
mov edi, dword [ebp - 0x1c]
test edi, edi
je 0x43932b
cmp dword [ebp - 0x18], 1
jne 0x43932b
call fcn.004489d0
push edi
mov ecx, dword [eax]
mov eax, dword [ecx]
call dword [eax + 8]
mov edi, 0x47ae10
jmp 0x439353
lea edi, [eax + 0x18]
mov byte [ebp - 4], 0x1f
mov ebx, dword [ebp - 0x1c]
test ebx, ebx
je 0x439353
cmp dword [ebp - 0x18], 1
jne 0x439353
call fcn.004489d0
push ebx
mov ecx, dword [eax]
mov eax, dword [ecx]
call dword [eax + 8]
mov byte [ebp - 4], 7
mov edx, dword [edi]
test edx, edx
jne 0x439361
xor ecx, ecx
jmp 0x43936f
mov ecx, edx
lea edi, [ecx + 1]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x439366
sub ecx, edi
push ecx
push edx
lea ecx, [ebp - 0x4c]
call fcn.004410c0
lea edx, [ebp - 0x48]
lea ecx, [ebp - 0x4c]
call fcn.00453880
push str.public
mov ecx, esi
call fcn.004497b0
cmp eax, 0x47ae10
je 0x4394fd
cmp byte [esi + 8], 0
jne 0x4393a8
mov edi, 0x47ae10
jmp 0x43941f
mov ecx, dword [esi]
lea eax, [ebp - 0x1c]
push eax
lea eax, [ebp - 0x14]
xorps xmm0, xmm0
movq qword [ebp - 0x1c], xmm0
push eax
mov dword [ebp - 0x1c], str.public
mov dword [ebp - 0x18], 0
call fcn.00449b10
mov ecx, dword [esi]
mov eax, dword [eax]
cmp eax, dword [ecx]
jne 0x4393fa
mov byte [ebp - 4], 0x20
mov edi, dword [ebp - 0x1c]
test edi, edi
je 0x4393f3
cmp dword [ebp - 0x18], 1
jne 0x4393f3
call fcn.004489d0
push edi
mov ecx, dword [eax]
mov eax, dword [ecx]
call dword [eax + 8]
mov edi, 0x47ae10
jmp 0x43941b
lea edi, [eax + 0x18]
mov byte [ebp - 4], 0x21
mov ebx, dword [ebp - 0x1c]
test ebx, ebx
je 0x43941b
cmp dword [ebp - 0x18], 1
jne 0x43941b
call fcn.004489d0
push ebx
mov ecx, dword [eax]
mov eax, dword [ecx]
call dword [eax + 8]
mov byte [ebp - 4], 7
cmp byte [edi + 8], 5
jne 0x4394fd
cmp byte [esi + 8], 0
jne 0x439436
mov esi, 0x47ae10
jmp 0x4394ad
mov ecx, dword [esi]
lea eax, [ebp - 0x1c]
push eax
lea eax, [ebp - 0x14]
xorps xmm0, xmm0
movq qword [ebp - 0x1c], xmm0
push eax
mov dword [ebp - 0x1c], str.public
mov dword [ebp - 0x18], 0
call fcn.00449b10
mov ecx, dword [esi]
mov eax, dword [eax]
cmp eax, dword [ecx]
jne 0x439488
mov byte [ebp - 4], 0x22
mov esi, dword [ebp - 0x1c]
test esi, esi
je 0x439481
cmp dword [ebp - 0x18], 1
jne 0x439481
call fcn.004489d0
push esi
mov ecx, dword [eax]
mov eax, dword [ecx]
call dword [eax + 8]
mov esi, 0x47ae10
jmp 0x4394a9
lea esi, [eax + 0x18]
mov byte [ebp - 4], 0x23
mov edi, dword [ebp - 0x1c]
test edi, edi
je 0x4394a9
cmp dword [ebp - 0x18], 1
jne 0x4394a9
call fcn.004489d0
push edi
mov ecx, dword [eax]
mov eax, dword [ecx]
call dword [eax + 8]
mov byte [ebp - 4], 7
movsx eax, byte [esi + 8]
cmp eax, 7
ja case.0x4394b6.0
jmp dword [eax*4 + 0x43a5fc]
xor bl, bl
jmp 0x439503
cmp dword [esi], 0
setne bl
jmp 0x439503
movsd xmm0, qword [esi]
ucomisd xmm0, qword [0x468318]
lahf
test ah, 0x44
jnp case.0x4394b6.0
mov bl, 1
jmp 0x439503
mov bl, byte [esi]
jmp 0x439503
mov eax, dword [esi]
test eax, eax
je case.0x4394b6.0
cmp byte [eax], 0
je case.0x4394b6.0
mov bl, 1
jmp 0x439503
mov eax, dword [esi]
cmp dword [eax + 4], 0
setne bl
jmp 0x439503
mov bl, byte [ebp - 0x10d]
call fcn.0040f730
mov ecx, eax
test ecx, ecx
jne 0x439518
push 0x80004005
call fcn.0041ffc0
mov eax, dword [ecx]
call dword [eax + 0xc]
add eax, 0x10
mov dword [ebp - 0x18], eax
mov byte [ebp - 4], 0x24
call dword [sym.imp.KERNEL32.dll_GetVersion]
cmp al, 5
setbe byte [ebp - 0x10d]
call fcn.0040f730
mov ecx, eax
test ecx, ecx
jne 0x43954b
push 0x80004005
call fcn.0041ffc0
mov eax, dword [ecx]
call dword [eax + 0xc]
lea edi, [eax + 0x10]
mov dword [ebp - 0x38], edi
mov byte [ebp - 4], 0x25
test bl, bl
je 0x43973b
mov eax, dword [ebp - 0x24]
or ebx, 0xffffffff
test eax, eax
jne 0x4395e5
call fcn.0040f730
cmp byte [ebp - 0x10d], 0
mov ecx, eax
jne 0x4395be
test ecx, ecx
jne 0x43958a
push 0x80004005
call fcn.0041ffc0
mov eax, dword [ecx]
call dword [eax + 0xc]
add eax, 0x10
mov dword [ebp - 0x14], eax
push ecx
mov ecx, esp
mov byte [ebp - 4], 0x26
push str.PUBLIC
lea esi, [ebp - 0x14]
call fcn.0042c540
mov ecx, esi
call fcn.00452150
mov esi, dword [ebp - 0x14]
push esi
push str._sDesktop
jmp 0x439717
test ecx, ecx
jne 0x4395cc
push 0x80004005
call fcn.0041ffc0
mov eax, dword [ecx]
call dword [eax + 0xc]
add eax, 0x10
mov dword [ebp - 0x14], eax
push ecx
mov ecx, esp
mov byte [ebp - 4], 0x27
push str.ALLUSERSPROFILE
jmp 0x4395a1
cmp eax, 1
jne 0x439682
call fcn.0040f730
cmp byte [ebp - 0x10d], 0
mov ecx, eax
jne 0x439640
test ecx, ecx
jne 0x43960c
push 0x80004005
call fcn.0041ffc0
mov eax, dword [ecx]
call dword [eax + 0xc]
add eax, 0x10
mov dword [ebp - 0x14], eax
push ecx
mov ecx, esp
mov byte [ebp - 4], 0x28
push str.PROGRAMDATA
lea esi, [ebp - 0x14]
call fcn.0042c540
mov ecx, esi
call fcn.00452150
mov esi, dword [ebp - 0x14]
push esi
push str._sMicrosoftWindowsStart_MenuPrograms
jmp 0x439717
test ecx, ecx
jne 0x43964e
push 0x80004005
call fcn.0041ffc0
mov eax, dword [ecx]
call dword [eax + 0xc]
add eax, 0x10
mov dword [ebp - 0x14], eax
push ecx
mov ecx, esp
mov byte [ebp - 4], 0x29
push str.ALLUSERSPROFILE
lea esi, [ebp - 0x14]
call fcn.0042c540
mov ecx, esi
call fcn.00452150
mov esi, dword [ebp - 0x14]
push esi
push str._sStart_MenuPrograms
jmp 0x439717
cmp eax, 2
jne 0x439775
call fcn.0040f730
cmp byte [ebp - 0x10d], 0
mov ecx, eax
jne 0x4396da
test ecx, ecx
jne 0x4396a9
push 0x80004005
call fcn.0041ffc0
mov eax, dword [ecx]
call dword [eax + 0xc]
add eax, 0x10
mov dword [ebp - 0x14], eax
push ecx
mov ecx, esp
mov byte [ebp - 4], 0x2a
push str.PROGRAMDATA
lea esi, [ebp - 0x14]
call fcn.0042c540
mov ecx, esi
call fcn.00452150
mov esi, dword [ebp - 0x14]
push esi
push str._sMicrosoftWindowsStart_MenuProgramsStartup
jmp 0x439717
test ecx, ecx
jne 0x4396e8
push 0x80004005
call fcn.0041ffc0
mov eax, dword [ecx]
call dword [eax + 0xc]
add eax, 0x10
mov dword [ebp - 0x14], eax
push ecx
mov ecx, esp
mov byte [ebp - 4], 0x2b
push str.ALLUSERSPROFILE
lea esi, [ebp - 0x14]
call fcn.0042c540
mov ecx, esi
call fcn.00452150
mov esi, dword [ebp - 0x14]
push esi
push str._sStart_MenuProgramsStartup
lea eax, [ebp - 0x38]
push eax
call fcn.0042e6b0
add esp, 0x10
mov byte [ebp - 4], 0x25
add esi, 0xfffffff0
mov eax, ebx
lock xadd dword [esi + 0xc], eax
dec eax
test eax, eax
jg 0x439772
mov ecx, dword [esi]
push esi
jmp 0x43976d
mov edx, dword [ebp - 0x24]
lea ecx, [ebp - 0x14]
call fcn.00453b00
push eax
lea ecx, [ebp - 0x38]
mov byte [ebp - 4], 0x2c
call fcn.0042d300
mov byte [ebp - 4], 0x25
or eax, 0xffffffff
mov edx, dword [ebp - 0x14]
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x439772
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov edi, dword [ebp - 0x38]
mov ebx, dword [ebp - 0x50]
lea eax, [ebp - 0x18]
push ebx
push edi
push str._s_s.lnk
push eax
call fcn.0042e6b0
mov esi, dword [ebp - 0x18]
add esp, 0x10
push esi
push str.CDispatcherHandler::CreateShortcut
push str._s_Shortcut_link___s_
push 0
push 5
call fcn.004506f0
add esp, 0x14
mov byte [ebp - 0x2c], 0
push edi
call dword [sym.imp.KERNEL32.dll_GetFileAttributesW]
cmp eax, 0xffffffff
je 0x4397c8
test al, 0x10
mov ecx, 1
mov eax, dword [ebp - 0x2c]
movzx eax, al
cmovne eax, ecx
mov dword [ebp - 0x2c], eax
push 0xb8
lea eax, [ebp - 0x10c]
push 0
push eax
call sub.VCRUNTIME140.dll_memset
push dword [ebp - 0x34]
lea ecx, [ebp - 0x10c]
call fcn.0044f330
mov eax, dword [ebp - 0x10c]
lea ecx, [ebp - 0x9c]
mov eax, dword [eax + 4]
mov eax, dword [ebp + eax - 0x100]
mov dword [ebp - 0x14], eax
call fcn.0044f280
lea ecx, [ebp - 0x9c]
call dword [sym.imp.MSVCP140.dll_public_virtual:_void___thiscall_std::basic_ios_char__struct_std::char_traits_char__::destructor_void_]
cmp dword [ebp - 0x14], 0
mov dword [ebp - 0x3c], 0
sete byte [ebp - 0x10d]
lea eax, [ebp - 0x3c]
mov byte [ebp - 4], 0x2d
push eax
push 0x45f7a0
push 0x17
push 0
push 0x45f800
call dword [sym.imp.ole32.dll_CoCreateInstance]
mov edx, eax
test edx, edx
js 0x43a188
mov eax, dword [ebp - 0x3c]
push dword [ebp - 0x34]
push eax
mov ecx, dword [eax]
call dword [ecx + 0x50]
test eax, eax
jns 0x43997d
movzx ecx, byte [ebp - 0x10d]
push ecx
mov ecx, dword [ebp - 0x2c]
movzx ecx, cl
push ecx
push dword [ebp - 0x34]
push eax
push dword [ebp - 0x24]
lea eax, [ebp - 0x20]
push str.createShortcut_SetPath__d__d__s__d__d
push eax
call fcn.0042e6b0
push dword [ebp - 0x20]
push str.CDispatcherHandler::CreateShortcut
push str._s_createShortcut___s_
push 3
push 5
call fcn.004506f0
mov byte [ebp - 4], 0x25
add esp, 0x30
mov eax, dword [ebp - 0x3c]
test eax, eax
je 0x4398ad
mov ecx, dword [eax]
push eax
call dword [ecx + 8]
lea edx, [edi - 0x10]
mov byte [ebp - 4], 0x24
or edi, 0xffffffff
mov eax, edi
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x4398cb
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov byte [ebp - 4], 7
add esi, 0xfffffff0
mov eax, edi
lock xadd dword [esi + 0xc], eax
dec eax
test eax, eax
jg 0x4398e6
mov ecx, dword [esi]
push esi
mov eax, dword [ecx]
call dword [eax + 4]
mov byte [ebp - 4], 6
add ebx, 0xfffffff0
mov eax, edi
lock xadd dword [ebx + 0xc], eax
dec eax
test eax, eax
jg 0x439901
mov ecx, dword [ebx]
push ebx
mov eax, dword [ecx]
call dword [eax + 4]
mov byte [ebp - 4], 5
mov eax, edi
mov edx, dword [ebp - 0x48]
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x43991f
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov byte [ebp - 4], 4
mov eax, edi
mov edx, dword [ebp - 0x40]
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x43993d
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov byte [ebp - 4], 3
mov eax, edi
mov edx, dword [ebp - 0x44]
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x43995b
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov byte [ebp - 4], 2
mov eax, edi
mov edx, dword [ebp - 0x34]
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x43a4cd
mov ecx, dword [edx]
push edx
jmp 0x43a4c8
mov eax, dword [ebp - 0x3c]
mov ecx, dword [ebp - 0x44]
push ecx
push eax
mov edx, dword [eax]
call dword [edx + 0x1c]
test eax, eax
jns 0x439ab0
movzx ecx, byte [ebp - 0x10d]
push ecx
mov ecx, dword [ebp - 0x2c]
movzx ecx, cl
push ecx
push dword [ebp - 0x44]
push eax
push dword [ebp - 0x24]
lea eax, [ebp - 0x20]
push str.createShortcut_SetDescription__d__d__s__d__d
push eax
call fcn.0042e6b0
push dword [ebp - 0x20]
push str.CDispatcherHandler::CreateShortcut
push str._s_createShortcut___s_
push 3
push 5
call fcn.004506f0
mov byte [ebp - 4], 0x25
add esp, 0x30
mov eax, dword [ebp - 0x3c]
test eax, eax
je 0x4399e0
mov ecx, dword [eax]
push eax
call dword [ecx + 8]
lea edx, [edi - 0x10]
mov byte [ebp - 4], 0x24
or edi, 0xffffffff
mov eax, edi
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x4399fe
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov byte [ebp - 4], 7
add esi, 0xfffffff0
mov eax, edi
lock xadd dword [esi + 0xc], eax
dec eax
test eax, eax
jg 0x439a19
mov ecx, dword [esi]
push esi
mov eax, dword [ecx]
call dword [eax + 4]
mov byte [ebp - 4], 6
add ebx, 0xfffffff0
mov eax, edi
lock xadd dword [ebx + 0xc], eax
dec eax
test eax, eax
jg 0x439a34
mov ecx, dword [ebx]
push ebx
mov eax, dword [ecx]
call dword [eax + 4]
mov byte [ebp - 4], 5
mov eax, edi
mov edx, dword [ebp - 0x48]
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x439a52
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov byte [ebp - 4], 4
mov eax, edi
mov edx, dword [ebp - 0x40]
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x439a70
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov byte [ebp - 4], 3
mov eax, edi
mov edx, dword [ebp - 0x44]
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x439a8e
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov byte [ebp - 4], 2
mov eax, edi
mov edx, dword [ebp - 0x34]
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x43a4cd
mov ecx, dword [edx]
push edx
jmp 0x43a4c8
mov ecx, dword [ebp - 0x40]
mov eax, dword [ebp - 0x3c]
push 0
cmp dword [ecx - 0xc], 0
jne 0x439bf1
push dword [ebp - 0x34]
mov ecx, dword [eax]
push eax
call dword [ecx + 0x44]
test eax, eax
jns 0x439d21
movzx ecx, byte [ebp - 0x10d]
push ecx
mov ecx, dword [ebp - 0x2c]
movzx ecx, cl
push ecx
push dword [ebp - 0x34]
push eax
push dword [ebp - 0x24]
lea eax, [ebp - 0x20]
push str.createShortcut_SetIconLocation_Exec__d__d__s__d__d
push eax
call fcn.0042e6b0
push dword [ebp - 0x20]
push str.CDispatcherHandler::CreateShortcut
push str._s_createShortcut___s_
push 3
push 5
call fcn.004506f0
mov byte [ebp - 4], 0x25
add esp, 0x30
mov eax, dword [ebp - 0x3c]
test eax, eax
je 0x439b21
mov ecx, dword [eax]
push eax
call dword [ecx + 8]
lea edx, [edi - 0x10]
mov byte [ebp - 4], 0x24
or edi, 0xffffffff
mov eax, edi
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x439b3f
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov byte [ebp - 4], 7
add esi, 0xfffffff0
mov eax, edi
lock xadd dword [esi + 0xc], eax
dec eax
test eax, eax
jg 0x439b5a
mov ecx, dword [esi]
push esi
mov eax, dword [ecx]
call dword [eax + 4]
mov byte [ebp - 4], 6
add ebx, 0xfffffff0
mov eax, edi
lock xadd dword [ebx + 0xc], eax
dec eax
test eax, eax
jg 0x439b75
mov ecx, dword [ebx]
push ebx
mov eax, dword [ecx]
call dword [eax + 4]
mov byte [ebp - 4], 5
mov eax, edi
mov edx, dword [ebp - 0x48]
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x439b93
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov byte [ebp - 4], 4
mov eax, edi
mov edx, dword [ebp - 0x40]
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x439bb1
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov byte [ebp - 4], 3
mov eax, edi
mov edx, dword [ebp - 0x44]
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x439bcf
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov byte [ebp - 4], 2
mov eax, edi
mov edx, dword [ebp - 0x34]
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x43a4cd
mov ecx, dword [edx]
push edx
jmp 0x43a4c8
mov edx, dword [eax]
push ecx
push eax
call dword [edx + 0x44]
mov edx, eax
test edx, edx
jns 0x439d21
movzx ecx, byte [ebp - 0x10d]
mov eax, dword [ebp - 0x40]
push ecx
mov ecx, dword [ebp - 0x2c]
movzx ecx, cl
push ecx
push eax
push edx
push dword [ebp - 0x24]
lea eax, [ebp - 0x20]
push str.createShortcut_SetIconLocation_Icon__d__d__s__d__d
push eax
call fcn.0042e6b0
push dword [ebp - 0x20]
push str.CDispatcherHandler::CreateShortcut
push str._s_createShortcut___s_
push 3
push 5
call fcn.004506f0
mov byte [ebp - 4], 0x25
add esp, 0x30
mov eax, dword [ebp - 0x3c]
test eax, eax
je 0x439c51
mov ecx, dword [eax]
push eax
call dword [ecx + 8]
lea edx, [edi - 0x10]
mov byte [ebp - 4], 0x24
or edi, 0xffffffff
mov eax, edi
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x439c6f
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov byte [ebp - 4], 7
add esi, 0xfffffff0
mov eax, edi
lock xadd dword [esi + 0xc], eax
dec eax
test eax, eax
jg 0x439c8a
mov ecx, dword [esi]
push esi
mov eax, dword [ecx]
call dword [eax + 4]
mov byte [ebp - 4], 6
add ebx, 0xfffffff0
mov eax, edi
lock xadd dword [ebx + 0xc], eax
dec eax
test eax, eax
jg 0x439ca5
mov ecx, dword [ebx]
push ebx
mov eax, dword [ecx]
call dword [eax + 4]
mov byte [ebp - 4], 5
mov eax, edi
mov edx, dword [ebp - 0x48]
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x439cc3
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov byte [ebp - 4], 4
mov eax, edi
mov edx, dword [ebp - 0x40]
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x439ce1
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov byte [ebp - 4], 3
mov eax, edi
mov edx, dword [ebp - 0x44]
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x439cff
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov byte [ebp - 4], 2
mov eax, edi
mov edx, dword [ebp - 0x34]
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x43a4cd
mov ecx, dword [edx]
push edx
jmp 0x43a4c8
mov ecx, dword [ebp - 0x48]
cmp dword [ecx - 0xc], 0
je 0x439e61
mov eax, dword [ebp - 0x3c]
push ecx
push eax
mov edx, dword [eax]
call dword [edx + 0x2c]
mov edx, eax
test edx, edx
jns 0x439e61
movzx ecx, byte [ebp - 0x10d]
mov eax, dword [ebp - 0x48]
push ecx
mov ecx, dword [ebp - 0x2c]
movzx ecx, cl
push ecx
push eax
push edx
push dword [ebp - 0x24]
lea eax, [ebp - 0x20]
push str.createShortcut_SetArguments__d__d__s__d__d
push eax
call fcn.0042e6b0
push dword [ebp - 0x20]
push str.CDispatcherHandler::CreateShortcut
push str._s_createShortcut___s_
push 3
push 5
call fcn.004506f0
mov byte [ebp - 4], 0x25
add esp, 0x30
mov eax, dword [ebp - 0x3c]
test eax, eax
je 0x439d91
mov ecx, dword [eax]
push eax
call dword [ecx + 8]
lea edx, [edi - 0x10]
mov byte [ebp - 4], 0x24
or edi, 0xffffffff
mov eax, edi
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x439daf
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov byte [ebp - 4], 7
add esi, 0xfffffff0
mov eax, edi
lock xadd dword [esi + 0xc], eax
dec eax
test eax, eax
jg 0x439dca
mov ecx, dword [esi]
push esi
mov eax, dword [ecx]
call dword [eax + 4]
mov byte [ebp - 4], 6
add ebx, 0xfffffff0
mov eax, edi
lock xadd dword [ebx + 0xc], eax
dec eax
test eax, eax
jg 0x439de5
mov ecx, dword [ebx]
push ebx
mov eax, dword [ecx]
call dword [eax + 4]
mov byte [ebp - 4], 5
mov eax, edi
mov edx, dword [ebp - 0x48]
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x439e03
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov byte [ebp - 4], 4
mov eax, edi
mov edx, dword [ebp - 0x40]
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x439e21
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov byte [ebp - 4], 3
mov eax, edi
mov edx, dword [ebp - 0x44]
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x439e3f
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov byte [ebp - 4], 2
mov eax, edi
mov edx, dword [ebp - 0x34]
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x43a4cd
mov ecx, dword [edx]
push edx
jmp 0x43a4c8
mov dword [ebp - 0x14], 0
mov byte [ebp - 4], 0x2e
lea edx, [ebp - 0x14]
mov eax, dword [ebp - 0x3c]
push edx
push 0x45f7f0
push eax
mov ecx, dword [eax]
call dword [ecx]
mov edx, eax
test edx, edx
js 0x43a05f
mov eax, dword [ebp - 0x14]
push 1
push esi
push eax
mov ecx, dword [eax]
call dword [ecx + 0x18]
test eax, eax
jns 0x439f4f
movzx ecx, byte [ebp - 0x10d]
push ecx
mov ecx, dword [ebp - 0x2c]
movzx ecx, cl
push ecx
push eax
push dword [ebp - 0x24]
lea eax, [ebp - 0x20]
push str.createShortcut_Save__d__d__d__d
push eax
call fcn.0042e6b0
mov ecx, dword [ebp - 0x20]
lea ecx, [ecx - 0x10]
call fcn.0042d8f0
add eax, 0x10
mov dword [ebp - 0x24], eax
lea eax, [ebp - 0x18]
mov byte [ebp - 4], 0x2f
push eax
mov edx, 0x460864
lea ecx, [ebp - 0x2c]
call fcn.0042bc90
add esp, 0x1c
mov byte [ebp - 4], 0x30
lea ecx, [ebp - 0x24]
mov eax, dword [eax]
push dword [eax - 0xc]
push eax
call fcn.0042d230
mov byte [ebp - 4], 0x2f
or eax, 0xffffffff
mov edx, dword [ebp - 0x2c]
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x439f16
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov esi, dword [ebp - 0x24]
push esi
push str.CDispatcherHandler::CreateShortcut
push str._s_createShortcut___s_
push 3
push 5
call fcn.004506f0
add esp, 0x14
mov byte [ebp - 4], 0x2e
add esi, 0xfffffff0
or eax, 0xffffffff
lock xadd dword [esi + 0xc], eax
dec eax
test eax, eax
jg 0x439f4c
mov ecx, dword [esi]
push esi
mov eax, dword [ecx]
call dword [eax + 4]
mov esi, dword [ebp - 0x18]
mov byte [ebp - 4], 0x2d
mov eax, dword [ebp - 0x14]
test eax, eax
je 0x439f60
mov ecx, dword [eax]
push eax
call dword [ecx + 8]
lea eax, [ebp - 0x18]
push eax
lea ecx, [ebp - 0x54]
call fcn.0042d300
push 0x461f50
push 0x461168
lea ecx, [ebp - 0x54]
call fcn.0042c0f0
mov byte [ebp - 4], 0x25
mov eax, dword [ebp - 0x3c]
test eax, eax
je 0x439f8f
mov ecx, dword [eax]
push eax
call dword [ecx + 8]
lea edx, [edi - 0x10]
mov byte [ebp - 4], 0x24
or edi, 0xffffffff
mov eax, edi
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x439fad
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov byte [ebp - 4], 7
add esi, 0xfffffff0
mov eax, edi
lock xadd dword [esi + 0xc], eax
dec eax
test eax, eax
jg 0x439fc8
mov ecx, dword [esi]
push esi
mov eax, dword [ecx]
call dword [eax + 4]
mov byte [ebp - 4], 6
add ebx, 0xfffffff0
mov eax, edi
lock xadd dword [ebx + 0xc], eax
dec eax
test eax, eax
jg 0x439fe3
mov ecx, dword [ebx]
push ebx
mov eax, dword [ecx]
call dword [eax + 4]
mov byte [ebp - 4], 5
mov eax, edi
mov edx, dword [ebp - 0x48]
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x43a001
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov byte [ebp - 4], 4
mov eax, edi
mov edx, dword [ebp - 0x40]
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x43a01f
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov byte [ebp - 4], 3
mov eax, edi
mov edx, dword [ebp - 0x44]
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x43a03d
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov byte [ebp - 4], 2
mov eax, edi
mov edx, dword [ebp - 0x34]
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x43a4cd
mov ecx, dword [edx]
push edx
jmp 0x43a4c8
movzx eax, byte [ebp - 0x10d]
mov ecx, dword [ebp - 0x2c]
push eax
movzx eax, cl
push eax
push edx
lea eax, [ebp - 0x20]
push str.createShortcut_QueryInterface__d__d__d
push eax
call fcn.0042e6b0
push dword [ebp - 0x20]
push str.CDispatcherHandler::CreateShortcut
push str._s_createShortcut___s_
push 3
push 5
call fcn.004506f0
mov byte [ebp - 4], 0x2d
add esp, 0x28
mov eax, dword [ebp - 0x14]
test eax, eax
je 0x43a0a7
mov ecx, dword [eax]
push eax
call dword [ecx + 8]
mov byte [ebp - 4], 0x25
mov eax, dword [ebp - 0x3c]
test eax, eax
je 0x43a0b8
mov ecx, dword [eax]
push eax
call dword [ecx + 8]
lea edx, [edi - 0x10]
mov byte [ebp - 4], 0x24
or edi, 0xffffffff
mov eax, edi
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x43a0d6
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov byte [ebp - 4], 7
add esi, 0xfffffff0
mov eax, edi
lock xadd dword [esi + 0xc], eax
dec eax
test eax, eax
jg 0x43a0f1
mov ecx, dword [esi]
push esi
mov eax, dword [ecx]
call dword [eax + 4]
mov byte [ebp - 4], 6
add ebx, 0xfffffff0
mov eax, edi
lock xadd dword [ebx + 0xc], eax
dec eax
test eax, eax
jg 0x43a10c
mov ecx, dword [ebx]
push ebx
mov eax, dword [ecx]
call dword [eax + 4]
mov byte [ebp - 4], 5
mov eax, edi
mov edx, dword [ebp - 0x48]
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x43a12a
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov byte [ebp - 4], 4
mov eax, edi
mov edx, dword [ebp - 0x40]
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x43a148
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov byte [ebp - 4], 3
mov eax, edi
mov edx, dword [ebp - 0x44]
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x43a166
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov byte [ebp - 4], 2
mov eax, edi
mov edx, dword [ebp - 0x34]
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x43a4cd
mov ecx, dword [edx]
push edx
jmp 0x43a4c8
movzx eax, byte [ebp - 0x10d]
mov ecx, dword [ebp - 0x2c]
push eax
movzx eax, cl
push eax
push edx
lea eax, [ebp - 0x20]
push str.createShortcut_CoCreateInstance__d__d__d
push eax
call fcn.0042e6b0
push dword [ebp - 0x20]
push str.CDispatcherHandler::CreateShortcut
push str._s_createShortcut___s_
push 3
push 5
call fcn.004506f0
mov byte [ebp - 4], 0x25
add esp, 0x28
mov eax, dword [ebp - 0x3c]
test eax, eax
je 0x43a1d0
mov ecx, dword [eax]
push eax
call dword [ecx + 8]
lea edx, [edi - 0x10]
mov byte [ebp - 4], 0x24
or edi, 0xffffffff
mov eax, edi
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x43a1ee
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov byte [ebp - 4], 7
add esi, 0xfffffff0
mov eax, edi
lock xadd dword [esi + 0xc], eax
dec eax
test eax, eax
jg 0x43a209
mov ecx, dword [esi]
push esi
mov eax, dword [ecx]
call dword [eax + 4]
mov byte [ebp - 4], 6
add ebx, 0xfffffff0
mov eax, edi
lock xadd dword [ebx + 0xc], eax
dec eax
test eax, eax
jg 0x43a224
mov ecx, dword [ebx]
push ebx
mov eax, dword [ecx]
call dword [eax + 4]
mov byte [ebp - 4], 5
mov eax, edi
mov edx, dword [ebp - 0x48]
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x43a242
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov byte [ebp - 4], 4
mov eax, edi
mov edx, dword [ebp - 0x40]
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x43a260
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov byte [ebp - 4], 3
mov eax, edi
mov edx, dword [ebp - 0x44]
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x43a27e
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov byte [ebp - 4], 2
mov eax, edi
mov edx, dword [ebp - 0x34]
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x43a4cd
mov ecx, dword [edx]
push edx
jmp 0x43a4c8
push 0x1b
push str.createShortcut_name_missing
lea ecx, [ebp - 0x20]
call fcn.0042d9b0
push str.CDispatcherHandler::CreateShortcut
push str._s_name_error
push 3
push 5
call fcn.004506f0
lea edx, [edi - 0x10]
mov byte [ebp - 4], 6
or edi, 0xffffffff
add esp, 0x10
mov eax, edi
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x43a2e3
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov byte [ebp - 4], 5
add ebx, 0xfffffff0
mov eax, edi
lock xadd dword [ebx + 0xc], eax
dec eax
test eax, eax
jg 0x43a2fe
mov ecx, dword [ebx]
push ebx
mov eax, dword [ecx]
call dword [eax + 4]
mov byte [ebp - 4], 4
mov eax, edi
mov edx, dword [ebp - 0x40]
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x43a31c
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov byte [ebp - 4], 3
mov eax, edi
mov edx, dword [ebp - 0x44]
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x43a33a
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov byte [ebp - 4], 2
mov eax, edi
mov edx, dword [ebp - 0x34]
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x43a4cd
mov ecx, dword [edx]
push edx
jmp 0x43a4c8
push 0x1b
push str.createShortcut_type_missing
lea ecx, [ebp - 0x20]
call fcn.0042d9b0
push str.CDispatcherHandler::CreateShortcut
push str._s_type_error
push 3
push 5
call fcn.004506f0
lea edx, [edi - 0x10]
mov byte [ebp - 4], 6
or edi, 0xffffffff
add esp, 0x10
mov eax, edi
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x43a39f
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov byte [ebp - 4], 5
add ebx, 0xfffffff0
mov eax, edi
lock xadd dword [ebx + 0xc], eax
dec eax
test eax, eax
jg 0x43a3ba
mov ecx, dword [ebx]
push ebx
mov eax, dword [ecx]
call dword [eax + 4]
mov byte [ebp - 4], 4
mov eax, edi
mov edx, dword [ebp - 0x40]
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x43a3d8
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov byte [ebp - 4], 3
mov eax, edi
mov edx, dword [ebp - 0x44]
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x43a3f6
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov byte [ebp - 4], 2
mov eax, edi
mov edx, dword [ebp - 0x34]
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x43a4cd
mov ecx, dword [edx]
push edx
jmp 0x43a4c8
push 0x1f
push str.createShortcut_filePath_missing
lea ecx, [ebp - 0x20]
call fcn.0042d9b0
push str.CDispatcherHandler::CreateShortcut
push str._s_filePath_error
push 3
push 5
call fcn.004506f0
lea edx, [edi - 0x10]
mov byte [ebp - 4], 6
or edi, 0xffffffff
add esp, 0x10
mov eax, edi
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x43a45b
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov byte [ebp - 4], 5
add ebx, 0xfffffff0
mov eax, edi
lock xadd dword [ebx + 0xc], eax
dec eax
test eax, eax
jg 0x43a476
mov ecx, dword [ebx]
push ebx
mov eax, dword [ecx]
call dword [eax + 4]
mov byte [ebp - 4], 4
mov eax, edi
mov edx, dword [ebp - 0x40]
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x43a494
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov byte [ebp - 4], 3
mov eax, edi
mov edx, dword [ebp - 0x44]
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x43a4b2
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov byte [ebp - 4], 2
add esi, 0xfffffff0
mov eax, edi
lock xadd dword [esi + 0xc], eax
dec eax
test eax, eax
jg 0x43a4cd
mov ecx, dword [esi]
push esi
mov eax, dword [ecx]
call dword [eax + 4]
mov ebx, dword [ebp - 0x114]
test ebx, ebx
je 0x43a57d
mov eax, 8
mov word [ebx], ax
call fcn.0040f730
mov ecx, eax
test ecx, ecx
jne 0x43a4f8
push 0x80004005
call fcn.0041ffc0
mov eax, dword [ecx]
call dword [eax + 0xc]
add eax, 0x10
mov dword [ebp - 0x50], eax
mov byte [ebp - 4], 0x31
mov edx, 0x461c94
mov eax, dword [ebp - 0x20]
mov ecx, 0x461c88
mov edi, dword [ebp - 0x54]
push eax
cmp dword [eax - 0xc], 0
lea eax, [ebp - 0x50]
cmovne ecx, edx
push ecx
push edi
push str.__path__:___s_____result__:__s____error__:___s_
push eax
call fcn.0042e6b0
add esp, 0x14
lea ecx, [ebp - 0x50]
push 0x461f50
push 0x461168
call fcn.0042c0f0
mov esi, dword [ebp - 0x50]
push dword [esi - 0xc]
push esi
call dword [sym.imp.OLEAUT32.dll_SysReAllocStringLen]
test eax, eax
jne 0x43a55a
call fcn.0042d8e0
mov dword [ebx + 8], eax
add esi, 0xfffffff0
or ebx, 0xffffffff
mov byte [ebp - 4], 2
mov eax, ebx
lock xadd dword [esi + 0xc], eax
dec eax
test eax, eax
jg 0x43a583
mov ecx, dword [esi]
push esi
mov eax, dword [ecx]
call dword [eax + 4]
jmp 0x43a583
mov edi, dword [ebp - 0x54]
or ebx, 0xffffffff
mov byte [ebp - 4], 1
mov eax, ebx
mov edx, dword [ebp - 0x20]
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x43a5a1
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov byte [ebp - 4], 0
add edi, 0xfffffff0
mov eax, ebx
lock xadd dword [edi + 0xc], eax
dec eax
test eax, eax
jg 0x43a5bc
mov ecx, dword [edi]
push edi
mov eax, dword [ecx]
call dword [eax + 4]
mov dword [ebp - 4], 0xffffffff
mov edx, dword [ebp - 0x4c]
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], ebx
dec ebx
test ebx, ebx
jg 0x43a5db
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 0x10]
xor ecx, ebp
call fcn.004568f7
mov esp, ebp
pop ebp
ret 8