Function at 0x402d40
Capabilities:
Get common file path
Get startup folder

Disassembly:
push 0xffffffffffffffff
push 0x40b090
mov eax, dword fs:[0]
push eax
mov dword fs:[0], esp
sub esp, 0x28
push ebx
push ebp
mov ebp, ecx
lea ecx, [esp + 0x18]
call fcn.00401590
lea ecx, [esp + 0x10]
mov dword [esp + 0x38], 0
call fcn.004011c0
mov ebx, dword [esp + 0x40]
test ebx, ebx
mov byte [esp + 0x38], 1
je 0x403b94
mov eax, dword [esp + 0x48]
test eax, eax
je 0x403b94
mov eax, dword [ebp + 8]
cmp eax, dword [ebp + 4]
push esi
jl 0x402dde
mov ecx, ebp
call fcn.004023e0
mov esi, eax
test esi, esi
je 0x402dde
lea ecx, [esp + 0x14]
mov byte [esp + 0x3c], 0
call fcn.004011d0
lea ecx, [esp + 0x1c]
mov dword [esp + 0x3c], 0xffffffff
call fcn.00401800
mov eax, esi
pop esi
pop ebp
pop ebx
mov ecx, dword [esp + 0x28]
mov dword fs:[0], ecx
add esp, 0x34
ret 0x10
mov edx, dword [ebp]
push edi
mov edi, dword [ebp + 8]
imul edi, edi, 0x108
xor eax, eax
add edi, edx
mov ecx, 0x42
rep stosd dword es:[edi], eax
cmp byte [ebx], 0
je 0x403b38
nop
push 0x25
push ebx
call fcn.00405410
mov esi, eax
add esp, 8
test esi, esi
je 0x403ad9
inc esi
push 0x25
push esi
call fcn.00405410
add esp, 8
test eax, eax
mov dword [esp + 0x48], eax
je 0x403b02
push str.INSTPATH
push esi
mov byte [eax], 0
call fcn.004048bf
add esp, 8
test eax, eax
jne 0x402f25
mov eax, dword [ebp + 0x14]
test eax, eax
jne 0x402ee4
push 0x104
call fcn.004052d2
mov edi, eax
xor eax, eax
mov ecx, 0x41
mov dword [ebp + 0x14], edi
mov dword [esp + 0x14], 0x104
rep stosd dword es:[edi], eax
mov eax, dword [esp + 0x58]
add esp, 4
test eax, eax
je 0x402e9e
mov ecx, dword [esp + 0x50]
mov edx, dword [ebp + 0x14]
push 0x104
push ecx
push edx
call fcn.00405020
mov eax, dword [ebp + 0x14]
add esp, 0xc
mov byte [eax + 0x103], 0
jmp 0x402ee4
mov ecx, dword [ebp + 0x10]
mov eax, dword [ebp + 0x14]
push ecx
push 0
push 0
push 0
push 0
push 0
push 0
lea edx, [esp + 0x2c]
push edx
push eax
lea ecx, [esp + 0x3c]
call fcn.004011e0
mov eax, dword [ebp + 0x14]
cmp byte [eax], 0
jne 0x402ee4
mov ecx, dword [str.C:MSSQL7]
mov dword [eax], ecx
mov edx, dword [0x40c4f0]
mov dword [eax + 4], edx
mov cx, word [0x40c4f4]
mov word [eax + 8], cx
mov eax, dword [ebp + 0x14]
mov edx, eax
lea esp, [esp]
mov cl, byte [eax]
inc eax
test cl, cl
jne 0x402ef0
mov edi, dword [ebp + 8]
mov esi, dword [ebp]
imul edi, edi, 0x108
add edi, esi
sub eax, edx
dec edi
mov cl, byte [edi + 1]
inc edi
test cl, cl
jne 0x402f08
mov ecx, eax
shr ecx, 2
mov esi, edx
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
and ecx, 3
rep movsb byte es:[edi], byte [esi]
jmp 0x403ac7
push str.CLNTPATH
push esi
call fcn.004048bf
add esp, 8
test eax, eax
jne 0x403045
mov eax, dword [ebp + 0x18]
test eax, eax
jne 0x403017
push 0x104
call fcn.004052d2
mov edi, eax
add esp, 4
xor eax, eax
mov dword [ebp + 0x18], edi
mov dword [esp + 0x10], 0x104
mov ecx, 0x41
push str.SOFTWAREMicrosoftMSSQLServerClientSetup
rep stosd dword es:[edi], eax
push 0x80000002
lea ecx, [esp + 0x28]
call fcn.00401840
test al, al
lea ecx, [esp + 0x20]
je 0x402fb5
push 0
push 0x400
push str.C:MSSQL7
push str.SQLPath
call fcn.004016e0
mov edx, dword [ebp + 0x18]
lea ecx, [ecx]
mov cl, byte [eax]
inc eax
mov byte [edx], cl
inc edx
test cl, cl
jne 0x402fa0
lea ecx, [esp + 0x20]
call fcn.004015b0
jmp 0x403017
push str.SOFTWAREMicrosoftMSSQLServerSetup
push 0x80000002
call fcn.00401840
test al, al
je 0x402ffa
push 0
push 0x400
push str.C:MSSQL7
push str.SQLPath
lea ecx, [esp + 0x30]
call fcn.004016e0
mov edx, dword [ebp + 0x18]
mov cl, byte [eax]
inc eax
mov byte [edx], cl
inc edx
test cl, cl
jne 0x402fe5
lea ecx, [esp + 0x20]
call fcn.004015b0
jmp 0x403017
mov eax, dword [str.C:MSSQL7]
mov edx, dword [ebp + 0x18]
mov dword [edx], eax
mov ecx, dword [0x40c4f0]
mov dword [edx + 4], ecx
mov ax, word [0x40c4f4]
mov word [edx + 8], ax
mov eax, dword [ebp + 0x18]
mov edx, eax
lea esp, [esp]
mov cl, byte [eax]
inc eax
test cl, cl
jne 0x403020
mov edi, dword [ebp + 8]
mov esi, dword [ebp]
imul edi, edi, 0x108
add edi, esi
sub eax, edx
dec edi
mov cl, byte [edi + 1]
inc edi
test cl, cl
jne 0x403038
jmp 0x402f10
push str.DATAPATH
push esi
call fcn.004048bf
add esp, 8
test eax, eax
jne 0x4030f5
mov eax, dword [ebp + 0x1c]
test eax, eax
jne 0x4030c7
push 0x104
call fcn.004052d2
add esp, 4
mov edi, eax
xor eax, eax
mov dword [ebp + 0x1c], edi
mov dword [esp + 0x10], 0x104
mov ecx, 0x41
rep stosd dword es:[edi], eax
mov ecx, dword [ebp + 0x10]
push ecx
push eax
push eax
push eax
push eax
mov eax, dword [ebp + 0x1c]
lea edx, [esp + 0x24]
push edx
push eax
push 0
push 0
lea ecx, [esp + 0x3c]
call fcn.004011e0
mov eax, dword [ebp + 0x1c]
cmp byte [eax], 0
jne 0x4030c7
mov ecx, dword [str.C:MSSQL7]
mov dword [eax], ecx
mov edx, dword [0x40c4f0]
mov dword [eax + 4], edx
mov cx, word [0x40c4f4]
mov word [eax + 8], cx
mov eax, dword [ebp + 0x1c]
mov edx, eax
lea esp, [esp]
mov cl, byte [eax]
inc eax
test cl, cl
jne 0x4030d0
mov edi, dword [ebp + 8]
mov esi, dword [ebp]
imul edi, edi, 0x108
add edi, esi
sub eax, edx
dec edi
mov cl, byte [edi + 1]
inc edi
test cl, cl
jne 0x4030e8
jmp 0x402f10
push str.INSTKEYS
push esi
call fcn.004048bf
add esp, 8
test eax, eax
jne 0x40316d
mov eax, dword [ebp + 0x20]
test eax, eax
jne 0x40313e
push 0x104
call fcn.004052d2
mov edi, eax
xor eax, eax
mov dword [ebp + 0x20], edi
mov dword [esp + 0x14], 0x104
mov ecx, 0x41
rep stosd dword es:[edi], eax
mov edx, dword [ebp + 0x10]
mov eax, dword [ebp + 0x20]
push edx
push eax
call fcn.00401010
add esp, 0xc
mov eax, dword [ebp + 0x20]
mov edx, eax
mov cl, byte [eax]
inc eax
test cl, cl
jne 0x403143
mov edi, dword [ebp + 8]
mov esi, dword [ebp]
imul edi, edi, 0x108
add edi, esi
sub eax, edx
dec edi
jmp 0x403160
mov cl, byte [edi + 1]
inc edi
test cl, cl
jne 0x403160
jmp 0x402f10
push str.WINDIR
push esi
call fcn.004048bf
add esp, 8
test eax, eax
jne 0x4032c5
mov eax, dword [ebp + 0x24]
test eax, eax
jne 0x403295
push 0x104
call fcn.004052d2
mov edi, eax
xor eax, eax
mov dword [ebp + 0x24], edi
mov dword [esp + 0x14], 0x104
mov ecx, 0x41
add esp, 4
rep stosd dword es:[edi], eax
call dword [sym.imp.KERNEL32.dll_GetVersion]
cmp eax, 0x80000000
lea ecx, [esp + 0x20]
jae 0x403228
push str.SOFTWAREMicrosoftWindows_NTCurrentVersion
push 0x80000002
call fcn.00401840
test al, al
je 0x40320a
push 0
push 0x400
push str.C:WINNT
push str.SystemRoot
lea ecx, [esp + 0x30]
call fcn.004016e0
mov edx, dword [ebp + 0x24]
mov cl, byte [eax]
inc eax
mov byte [edx], cl
inc edx
test cl, cl
jne 0x4031f2
lea ecx, [esp + 0x20]
call fcn.004015b0
jmp 0x403295
mov edx, dword [str.C:WINNT]
mov ecx, dword [ebp + 0x24]
mov dword [ecx], edx
mov eax, dword [0x40c434]
mov dword [ecx + 4], eax
mov dl, byte [0x40c438]
mov byte [ecx + 8], dl
jmp 0x403295
push str.SOFTWAREMicrosoftWindowsCurrentVersion
push 0x80000002
call fcn.00401840
test al, al
je 0x40326d
push 0
push 0x400
push str.C:Windows
push str.SystemRoot
lea ecx, [esp + 0x30]
call fcn.004016e0
mov edx, dword [ebp + 0x24]
mov cl, byte [eax]
inc eax
mov byte [edx], cl
inc edx
test cl, cl
jne 0x403258
lea ecx, [esp + 0x20]
call fcn.004015b0
jmp 0x403295
mov ecx, dword [str.C:Windows]
mov eax, dword [ebp + 0x24]
mov dword [eax], ecx
mov edx, dword [0x40c3f0]
mov dword [eax + 4], edx
mov cx, word [0x40c3f4]
mov word [eax + 8], cx
mov dl, byte [0x40c3f6]
mov byte [eax + 0xa], dl
mov eax, dword [ebp + 0x24]
mov edx, eax
lea ebx, [ebx]
mov cl, byte [eax]
inc eax
test cl, cl
jne 0x4032a0
mov edi, dword [ebp + 8]
mov esi, dword [ebp]
imul edi, edi, 0x108
add edi, esi
sub eax, edx
dec edi
mov cl, byte [edi + 1]
inc edi
test cl, cl
jne 0x4032b8
jmp 0x402f10
push str.WINSYSDIR
push esi
call fcn.004048bf
add esp, 8
test eax, eax
jne 0x40348d
mov eax, dword [ebp + 0x28]
test eax, eax
jne 0x40345d
push 0x104
call fcn.004052d2
mov edi, eax
xor eax, eax
mov ecx, 0x41
mov dword [ebp + 0x28], edi
mov dword [esp + 0x14], 0x104
rep stosd dword es:[edi], eax
mov ecx, dword [ebp + 0x24]
add esp, 4
test ecx, ecx
je 0x403322
mov edx, dword [ebp + 0x28]
mov al, byte [ecx]
inc ecx
mov byte [edx], al
inc edx
test al, al
jne 0x403313
jmp 0x40340b
call dword [sym.imp.KERNEL32.dll_GetVersion]
cmp eax, 0x80000000
lea ecx, [esp + 0x20]
jae 0x40339a
push str.SOFTWAREMicrosoftWindows_NTCurrentVersion
push 0x80000002
call fcn.00401840
test al, al
je 0x40337b
push 0
push 0x400
push str.C:WINNT
push str.SystemRoot
lea ecx, [esp + 0x30]
call fcn.004016e0
mov edx, dword [ebp + 0x28]
mov cl, byte [eax]
inc eax
mov byte [edx], cl
inc edx
test cl, cl
jne 0x403363
lea ecx, [esp + 0x20]
call fcn.004015b0
jmp 0x40340b
mov ecx, dword [str.C:WINNT]
mov eax, dword [ebp + 0x28]
mov dword [eax], ecx
mov edx, dword [0x40c434]
mov dword [eax + 4], edx
mov cl, byte [0x40c438]
mov byte [eax + 8], cl
jmp 0x40340b
push str.SOFTWAREMicrosoftWindowsCurrentVersion
push 0x80000002
call fcn.00401840
test al, al
je 0x4033e5
push 0
push 0x400
push str.C:Windows
push str.SystemRoot
lea ecx, [esp + 0x30]
call fcn.004016e0
mov edx, dword [ebp + 0x28]
lea ebx, [ebx]
mov cl, byte [eax]
inc eax
mov byte [edx], cl
inc edx
test cl, cl
jne 0x4033d0
lea ecx, [esp + 0x20]
call fcn.004015b0
jmp 0x40340b
mov eax, dword [str.C:Windows]
mov edx, dword [ebp + 0x28]
mov dword [edx], eax
mov ecx, dword [0x40c3f0]
mov dword [edx + 4], ecx
mov ax, word [0x40c3f4]
mov word [edx + 8], ax
mov cl, byte [0x40c3f6]
mov byte [edx + 0xa], cl
call dword [sym.imp.KERNEL32.dll_GetVersion]
mov edi, dword [ebp + 0x28]
dec edi
cmp eax, 0x80000000
jae 0x403445
lea esp, [esp]
mov al, byte [edi + 1]
inc edi
test al, al
jne 0x403420
mov edx, dword [str.System32]
mov dword [edi], edx
mov eax, dword [0x40c3d8]
mov dword [edi + 4], eax
mov cx, word [0x40c3dc]
mov word [edi + 8], cx
jmp 0x40345d
mov al, byte [edi + 1]
inc edi
test al, al
jne 0x403445
mov edx, dword [str.System]
mov dword [edi], edx
mov eax, dword [0x40c3d0]
mov dword [edi + 4], eax
mov eax, dword [ebp + 0x28]
mov edx, eax
mov cl, byte [eax]
inc eax
test cl, cl
jne 0x403462
mov edi, dword [ebp + 8]
mov esi, dword [ebp]
imul edi, edi, 0x108
add edi, esi
sub eax, edx
dec edi
lea ebx, [ebx]
mov cl, byte [edi + 1]
inc edi
test cl, cl
jne 0x403480
jmp 0x402f10
push str.PROGRAMFILES
push esi
call fcn.004048bf
add esp, 8
test eax, eax
jne 0x403575
mov eax, dword [ebp + 0x2c]
test eax, eax
jne 0x403547
push 0x104
call fcn.004052d2
mov edi, eax
add esp, 4
xor eax, eax
mov dword [ebp + 0x2c], edi
mov dword [esp + 0x10], 0x104
mov ecx, 0x41
push str.SOFTWAREMicrosoftWindowsCurrentVersion
rep stosd dword es:[edi], eax
push 0x80000002
lea ecx, [esp + 0x28]
call fcn.00401840
test al, al
je 0x40351a
push 0
push 0x400
push str.C:Program_Files
push str.ProgramFilesDir
lea ecx, [esp + 0x30]
call fcn.004016e0
mov edx, dword [ebp + 0x2c]
mov cl, byte [eax]
inc eax
mov byte [edx], cl
inc edx
test cl, cl
jne 0x403505
lea ecx, [esp + 0x20]
call fcn.004015b0
jmp 0x403547
mov edx, dword [str.C:Program_Files]
mov ecx, dword [ebp + 0x2c]
mov dword [ecx], edx
mov eax, dword [0x40c3ac]
mov dword [ecx + 4], eax
mov edx, dword [0x40c3b0]
mov dword [ecx + 8], edx
mov eax, dword [0x40c3b4]
mov dword [ecx + 0xc], eax
mov dl, byte [0x40c3b8]
mov byte [ecx + 0x10], dl
mov eax, dword [ebp + 0x2c]
mov edx, eax
lea esp, [esp]
mov cl, byte [eax]
inc eax
test cl, cl
jne 0x403550
mov edi, dword [ebp + 8]
mov esi, dword [ebp]
imul edi, edi, 0x108
add edi, esi
sub eax, edx
dec edi
mov cl, byte [edi + 1]
inc edi
test cl, cl
jne 0x403568
jmp 0x402f10
push str.COMMONFILES
push esi
call fcn.004048bf
add esp, 8
test eax, eax
jne 0x403645
mov eax, dword [ebp + 0x30]
test eax, eax
jne 0x403616
push 0x104
call fcn.004052d2
mov edi, eax
add esp, 4
xor eax, eax
mov dword [ebp + 0x30], edi
mov dword [esp + 0x10], 0x104
mov ecx, 0x41
push str.SOFTWAREMicrosoftWindowsCurrentVersion
rep stosd dword es:[edi], eax
push 0x80000002
lea ecx, [esp + 0x28]
call fcn.00401840
test al, al
je 0x403605
push 0
push 0x400
push str.C:Program_FilesCommon_Files
push str.CommonFilesDir
lea ecx, [esp + 0x30]
call fcn.004016e0
mov edx, dword [ebp + 0x30]
lea ecx, [ecx]
mov cl, byte [eax]
inc eax
mov byte [edx], cl
inc edx
test cl, cl
jne 0x4035f0
lea ecx, [esp + 0x20]
call fcn.004015b0
jmp 0x403616
mov edi, dword [ebp + 0x30]
mov ecx, 7
mov esi, str.C:Program_FilesCommon_Files
rep movsd dword es:[edi], dword [esi]
movsw word es:[edi], word [esi]
mov eax, dword [ebp + 0x30]
mov edx, eax
jmp 0x403620
mov cl, byte [eax]
inc eax
test cl, cl
jne 0x403620
mov edi, dword [ebp + 8]
mov esi, dword [ebp]
imul edi, edi, 0x108
add edi, esi
sub eax, edx
dec edi
mov cl, byte [edi + 1]
inc edi
test cl, cl
jne 0x403638
jmp 0x402f10
push str.PROGGRP
push esi
call fcn.004048bf
add esp, 8
test eax, eax
jne 0x403865
mov eax, dword [ebp + 0x34]
test eax, eax
jne 0x40383b
push 0x104
call fcn.004052d2
mov edi, eax
mov dword [ebp + 0x34], edi
xor eax, eax
mov dword [esp + 0x14], 0x104
mov ecx, 0x41
rep stosd dword es:[edi], eax
mov edi, dword [sym.imp.KERNEL32.dll_GetVersion]
add esp, 4
call edi
cmp eax, 0x80000000
sbb eax, eax
and eax, 0x15
lea ecx, [esp + 0x14]
add eax, 2
push ecx
push eax
call dword [sym.imp.USER32.dll_GetDesktopWindow]
push eax
call dword [sym.imp.SHELL32.dll_SHGetSpecialFolderLocation]
mov esi, eax
test esi, esi
jne 0x4036f5
mov edx, dword [ebp + 0x34]
mov eax, dword [esp + 0x14]
push edx
push eax
call dword [sym.imp.SHELL32.dll_SHGetPathFromIDListA]
test eax, eax
jne 0x4036cf
mov esi, 0x80004005
lea ecx, [esp + 0x1c]
push ecx
call dword [sym.imp.SHELL32.dll_SHGetMalloc]
test eax, eax
jne 0x4036ed
mov ecx, dword [esp + 0x14]
mov eax, dword [esp + 0x1c]
mov edx, dword [eax]
push ecx
push eax
call dword [edx + 0x14]
test esi, esi
je 0x40383b
call edi
cmp eax, 0x80000000
lea ecx, [esp + 0x20]
jae 0x403789
push str.SOFTWAREMicrosoftWindows_NTCurrentVersion
push 0x80000002
call fcn.00401840
test al, al
je 0x40374b
push 0
push 0x400
push str.C:WINNT
push str.SystemRoot
lea ecx, [esp + 0x30]
call fcn.004016e0
mov edx, dword [ebp + 0x34]
mov cl, byte [eax]
inc eax
mov byte [edx], cl
inc edx
test cl, cl
jne 0x403736
lea ecx, [esp + 0x20]
call fcn.004015b0
jmp 0x403766
mov eax, dword [str.C:WINNT]
mov edx, dword [ebp + 0x34]
mov dword [edx], eax
mov ecx, dword [0x40c434]
mov dword [edx + 4], ecx
mov al, byte [0x40c438]
mov byte [edx + 8], al
mov edi, dword [ebp + 0x34]
dec edi
lea ebx, [ebx]
mov al, byte [edi + 1]
inc edi
test al, al
jne 0x403770
mov ecx, 0xa
mov esi, str.ProfilesAll_UsersStart_MenuPrograms
rep movsd dword es:[edi], dword [esi]
jmp 0x40383b
push str.SOFTWAREMicrosoftWindowsCurrentVersion
push 0x80000002
call fcn.00401840
test al, al
je 0x4037d5
push 0
push 0x400
push str.C:WINDOWS
push str.SystemRoot
lea ecx, [esp + 0x30]
call fcn.004016e0
mov edx, dword [ebp + 0x34]
lea esp, [esp]
mov cl, byte [eax]
inc eax
mov byte [edx], cl
inc edx
test cl, cl
jne 0x4037c0
lea ecx, [esp + 0x20]
call fcn.004015b0
jmp 0x4037fb
mov edx, dword [str.C:WINDOWS]
mov ecx, dword [ebp + 0x34]
mov dword [ecx], edx
mov eax, dword [0x40c324]
mov dword [ecx + 4], eax
mov dx, word [0x40c328]
mov word [ecx + 8], dx
mov al, byte [0x40c32a]
mov byte [ecx + 0xa], al
mov edi, dword [ebp + 0x34]
dec edi
nop
mov al, byte [edi + 1]
inc edi
test al, al
jne 0x403800
mov ecx, dword [str.Start_MenuPrograms]
mov dword [edi], ecx
mov edx, dword [0x40c30c]
mov dword [edi + 4], edx
mov eax, dword [0x40c310]
mov dword [edi + 8], eax
mov ecx, dword [0x40c314]
mov dword [edi + 0xc], ecx
mov edx, dword [0x40c318]
mov dword [edi + 0x10], edx
mov al, byte [0x40c31c]
mov byte [edi + 0x14], al
mov eax, dword [ebp + 0x34]
mov edx, eax
mov cl, byte [eax]
inc eax
test cl, cl
jne 0x403840
mov edi, dword [ebp + 8]
mov esi, dword [ebp]
imul edi, edi, 0x108
add edi, esi
sub eax, edx
dec edi
mov cl, byte [edi + 1]
inc edi
test cl, cl
jne 0x403858
jmp 0x402f10
push str.STARTUP
push esi
call fcn.004048bf
add esp, 8
test eax, eax
jne 0x403a45
mov eax, dword [ebp + 0x38]
test eax, eax
jne 0x403a15
push 0x104
call fcn.004052d2
mov edi, eax
xor eax, eax
mov dword [ebp + 0x38], edi
mov dword [esp + 0x14], 0x104
mov ecx, 0x41
add esp, 4
rep stosd dword es:[edi], eax
lea ecx, [esp + 0x14]
push ecx
push 7
call dword [sym.imp.USER32.dll_GetDesktopWindow]
push eax
call dword [sym.imp.SHELL32.dll_SHGetSpecialFolderLocation]
mov esi, eax
test esi, esi
jne 0x403901
mov edx, dword [ebp + 0x38]
mov eax, dword [esp + 0x14]
push edx
push eax
call dword [sym.imp.SHELL32.dll_SHGetPathFromIDListA]
test eax, eax
jne 0x4038db
mov esi, 0x80004005
lea ecx, [esp + 0x1c]
push ecx
call dword [sym.imp.SHELL32.dll_SHGetMalloc]
test eax, eax
jne 0x4038f9
mov ecx, dword [esp + 0x14]
mov eax, dword [esp + 0x1c]
mov edx, dword [eax]
push ecx
push eax
call dword [edx + 0x14]
test esi, esi
je 0x403a15
call dword [sym.imp.KERNEL32.dll_GetVersion]
cmp eax, 0x80000000
lea ecx, [esp + 0x20]
jae 0x40398f
push str.SOFTWAREMicrosoftWindows_NTCurrentVersion
push 0x80000002
call fcn.00401840
test al, al
je 0x403957
push 0
push 0x400
push str.C:WINNT
push str.SystemRoot
lea ecx, [esp + 0x30]
call fcn.004016e0
mov edx, dword [ebp + 0x38]
mov cl, byte [eax]
inc eax
mov byte [edx], cl
inc edx
test cl, cl
jne 0x403942
lea ecx, [esp + 0x20]
call fcn.004015b0
jmp 0x403972
mov eax, dword [str.C:WINNT]
mov edx, dword [ebp + 0x38]
mov dword [edx], eax
mov ecx, dword [0x40c434]
mov dword [edx + 4], ecx
mov al, byte [0x40c438]
mov byte [edx + 8], al
mov edi, dword [ebp + 0x38]
dec edi
mov al, byte [edi + 1]
inc edi
test al, al
jne 0x403976
mov ecx, 0xc
mov esi, str.ProfilesAll_UsersStart_MenuProgramsStartup
rep movsd dword es:[edi], dword [esi]
jmp 0x403a15
push str.SOFTWAREMicrosoftWindowsCurrentVersion
push 0x80000002
call fcn.00401840
test al, al
je 0x4039d5
push 0
push 0x400
push str.C:WINDOWS
push str.SystemRoot
lea ecx, [esp + 0x30]
call fcn.004016e0
mov edx, dword [ebp + 0x38]
nop
mov cl, byte [eax]
inc eax
mov byte [edx], cl
inc edx
test cl, cl
jne 0x4039c0
lea ecx, [esp + 0x20]
call fcn.004015b0
jmp 0x4039fb
mov edx, dword [str.C:WINDOWS]
mov ecx, dword [ebp + 0x38]
mov dword [ecx], edx
mov eax, dword [0x40c324]
mov dword [ecx + 4], eax
mov dx, word [0x40c328]
mov word [ecx + 8], dx
mov al, byte [0x40c32a]
mov byte [ecx + 0xa], al
mov edi, dword [ebp + 0x38]
dec edi
nop
mov al, byte [edi + 1]
inc edi
test al, al
jne 0x403a00
mov ecx, 7
mov esi, str.Start_MenuProgramsStartup
rep movsd dword es:[edi], dword [esi]
movsb byte es:[edi], byte [esi]
mov eax, dword [ebp + 0x38]
mov edx, eax
lea ebx, [ebx]
mov cl, byte [eax]
inc eax
test cl, cl
jne 0x403a20
mov edi, dword [ebp + 8]
mov esi, dword [ebp]
imul edi, edi, 0x108
add edi, esi
sub eax, edx
dec edi
mov cl, byte [edi + 1]
inc edi
test cl, cl
jne 0x403a38
jmp 0x402f10
mov edi, dword [ebp + 8]
mov ecx, dword [ebp]
imul edi, edi, 0x108
add edi, ecx
dec edi
mov al, byte [edi + 1]
inc edi
test al, al
jne 0x403a54
mov cx, word [0x40c2ac]
mov eax, esi
mov word [edi], cx
mov ecx, eax
lea ebx, [ebx]
mov dl, byte [eax]
inc eax
test dl, dl
jne 0x403a70
mov edi, dword [ebp + 8]
mov edx, dword [ebp]
imul edi, edi, 0x108
add edi, edx
sub eax, ecx
mov esi, ecx
dec edi
lea ebx, [ebx]
mov cl, byte [edi + 1]
inc edi
test cl, cl
jne 0x403a90
mov ecx, eax
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov edi, dword [ebp + 8]
mov ecx, dword [ebp]
imul edi, edi, 0x108
add edi, ecx
dec edi
mov al, byte [edi + 1]
inc edi
test al, al
jne 0x403ab5
mov dx, word [0x40c2ac]
mov word [edi], dx
mov ebx, dword [esp + 0x48]
mov al, byte [ebx + 1]
inc ebx
test al, al
jne 0x402e00
jmp 0x403b38
mov eax, ebx
mov edx, ebx
lea ecx, [ecx]
mov cl, byte [eax]
inc eax
test cl, cl
jne 0x403ae0
mov edi, dword [ebp + 8]
mov esi, dword [ebp]
imul edi, edi, 0x108
add edi, esi
sub eax, edx
dec edi
mov cl, byte [edi + 1]
inc edi
test cl, cl
jne 0x403af8
jmp 0x403b28
mov eax, ebx
mov edx, ebx
mov cl, byte [eax]
inc eax
test cl, cl
jne 0x403b06
mov edi, dword [ebp + 8]
mov esi, dword [ebp]
imul edi, edi, 0x108
add edi, esi
sub eax, edx
dec edi
mov edi, edi
mov cl, byte [edi + 1]
inc edi
test cl, cl
jne 0x403b20
mov ecx, eax
shr ecx, 2
mov esi, edx
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov eax, dword [ebp + 8]
mov ecx, dword [ebp]
imul eax, eax, 0x108
mov edx, dword [esp + 0x4c]
mov dword [eax + ecx + 0x104], edx
mov ecx, dword [ebp + 8]
inc ecx
push 0
mov dword [ebp + 8], ecx
call dword [sym.imp.KERNEL32.dll_SetLastError]
lea ecx, [esp + 0x18]
mov byte [esp + 0x40], 0
call fcn.004011d0
lea ecx, [esp + 0x20]
mov dword [esp + 0x40], 0xffffffff
call fcn.00401800
pop edi
pop esi
pop ebp
xor eax, eax
pop ebx
mov ecx, dword [esp + 0x28]
mov dword fs:[0], ecx
add esp, 0x34
ret 0x10
lea ecx, [esp + 0x10]
mov byte [esp + 0x38], 0
call fcn.004011d0
lea ecx, [esp + 0x18]
mov dword [esp + 0x38], 0xffffffff
call fcn.00401800
mov ecx, dword [esp + 0x30]
pop ebp
mov eax, 0x57
pop ebx
mov dword fs:[0], ecx
add esp, 0x34
ret 0x10