Function at 0x4121b0
Capabilities:
Get common file path
Resolve function by parsing pe exports

Disassembly:
push 0xffffffffffffffff
push 0x42ffc3
mov eax, dword fs:[0]
push eax
mov dword fs:[0], esp
sub esp, 0xc20
mov al, byte [esp + 3]
push ebx
push ebp
push esi
push edi
push 0
lea ecx, [esp + 0x1c]
mov dword [esp + 0x18], 0
mov byte [esp + 0x1c], al
call fcn.0040aae0
mov cl, byte [esp + 0x13]
push 0
mov byte [esp + 0x78], cl
lea ecx, [esp + 0x78]
mov dword [esp + 0xc3c], 0
call fcn.0040aae0
lea edx, [esp + 0x820]
push 0x104
push edx
mov byte [esp + 0xc40], 1
call dword [sym.imp.KERNEL32.DLL_GetWindowsDirectoryA]
lea eax, [esp + 0x924]
push 0x104
push eax
call dword [sym.imp.KERNEL32.DLL_GetSystemDirectoryA]
lea ecx, [esp + 0x514]
push 0x104
push ecx
call fcn.00418aa0
add esp, 8
lea edx, [esp + 0xb2c]
push edx
push 0x104
call dword [sym.imp.KERNEL32.DLL_GetTempPathA]
lea eax, [esp + 0xa28]
push 0x104
push eax
push 0
call dword [sym.imp.KERNEL32.DLL_GetModuleFileNameA]
mov cl, byte [esp + 0x13]
push 0
mov byte [esp + 0x3c], cl
lea ecx, [esp + 0x3c]
call fcn.0040aae0
mov bl, 2
mov byte [esp + 0xc38], bl
call fcn.004159f0
test eax, eax
je 0x41232d
mov dl, byte [esp + 0x13]
push 0
lea ecx, [esp + 0x2c]
mov byte [esp + 0x2c], dl
call fcn.0040aae0
mov edi, str.Documents
or ecx, 0xffffffff
xor eax, eax
repne scasb al, byte es:[edi]
not ecx
dec ecx
push ecx
push str.Documents
lea ecx, [esp + 0x30]
call fcn.0040ad80
lea eax, [esp + 0x28]
lea ecx, [esp + 0x84]
push eax
push ecx
mov byte [esp + 0xc40], 3
call fcn.00418bb0
add esp, 8
mov edx, dword [0x4313b0]
lea ecx, [esp + 0x38]
push edx
push 0
push eax
mov byte [esp + 0xc44], 4
call fcn.0040a8e0
push 1
lea ecx, [esp + 0x88]
mov byte [esp + 0xc3c], 3
call fcn.0040aae0
mov byte [esp + 0xc38], bl
push 1
lea ecx, [esp + 0x2c]
jmp 0x412406
mov ecx, 0x81
xor eax, eax
lea edi, [esp + 0x619]
mov byte [esp + 0x618], 0
rep stosd dword es:[edi], eax
stosw word es:[edi], ax
stosb byte es:[edi], al
lea eax, [esp + 0x618]
push str.Personal
push eax
call fcn.00418950
lea ecx, [esp + 0x620]
push ecx
call fcn.004185f0
add esp, 0xc
test eax, eax
jne 0x412380
push eax
lea edx, [esp + 0x61c]
push 5
push edx
push eax
call dword [sym.imp.SHELL32.dll_SHGetSpecialFolderPathA]
mov al, byte [esp + 0x13]
push 0
lea ecx, [esp + 0x2c]
mov byte [esp + 0x2c], al
call fcn.0040aae0
lea edi, [esp + 0x618]
or ecx, 0xffffffff
xor eax, eax
push 1
repne scasb al, byte es:[edi]
not ecx
dec ecx
mov ebp, ecx
lea ecx, [esp + 0x2c]
push ebp
call fcn.0040af60
test al, al
je 0x4123db
mov edi, dword [esp + 0x2c]
mov ecx, ebp
mov edx, ecx
lea esi, [esp + 0x618]
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
push ebp
and ecx, 3
rep movsb byte es:[edi], byte [esi]
lea ecx, [esp + 0x2c]
call fcn.0040af40
mov eax, dword [0x4313b0]
lea ecx, [esp + 0x28]
push eax
push 0
push ecx
lea ecx, [esp + 0x44]
mov byte [esp + 0xc44], 5
call fcn.0040a8e0
mov byte [esp + 0xc38], bl
push 1
lea ecx, [esp + 0x2c]
call fcn.0040aae0
lea edx, [esp + 0x64]
push edx
call fcn.00419350
add esp, 4
mov edi, 0x43e7b0
or ecx, 0xffffffff
xor eax, eax
mov byte [esp + 0xc38], 6
repne scasb al, byte es:[edi]
mov eax, dword [esp + 0x6c]
not ecx
dec ecx
push ecx
push 0x43e7b0
push eax
push 0
lea ecx, [esp + 0x74]
call fcn.0040c0c0
test eax, eax
jne 0x41245f
mov ecx, dword [0x4313b0]
lea edx, [esp + 0x38]
push ecx
push eax
push edx
lea ecx, [esp + 0x70]
call fcn.0040a8e0
mov esi, dword [esp + 0xc44]
push 0
lea ecx, [esp + 0x2c]
mov al, byte [esi]
mov byte [esp + 0x2c], al
call fcn.0040aae0
mov ecx, dword [0x4313b0]
push ecx
push 0
push esi
lea ecx, [esp + 0x34]
call fcn.0040a8e0
mov edx, dword [0x4313b0]
lea eax, [esp + 0x28]
push edx
push 0
push eax
lea ecx, [esp + 0x24]
mov byte [esp + 0xc44], 7
call fcn.0040a8e0
push 1
lea ecx, [esp + 0x2c]
mov byte [esp + 0xc3c], 6
call fcn.0040aae0
mov edi, str._SYS_DIR
or ecx, 0xffffffff
xor eax, eax
repne scasb al, byte es:[edi]
not ecx
dec ecx
push ecx
push eax
push str._SYS_DIR
lea ecx, [esp + 0x24]
call fcn.004146b0
mov edx, eax
test edx, edx
jl 0x412507
lea edi, [esp + 0x924]
or ecx, 0xffffffff
xor eax, eax
repne scasb al, byte es:[edi]
not ecx
dec ecx
push ecx
lea ecx, [esp + 0x928]
push ecx
push 8
push edx
lea ecx, [esp + 0x28]
call fcn.00414520
mov edi, str._WIN_DIR
or ecx, 0xffffffff
xor eax, eax
repne scasb al, byte es:[edi]
not ecx
dec ecx
push ecx
push eax
push str._WIN_DIR
lea ecx, [esp + 0x24]
call fcn.004146b0
mov edx, eax
test edx, edx
jl 0x412552
lea edi, [esp + 0x820]
or ecx, 0xffffffff
xor eax, eax
repne scasb al, byte es:[edi]
not ecx
dec ecx
lea eax, [esp + 0x820]
push ecx
push eax
push 8
push edx
lea ecx, [esp + 0x28]
call fcn.00414520
mov edi, str._PROG_DIR
or ecx, 0xffffffff
xor eax, eax
repne scasb al, byte es:[edi]
not ecx
dec ecx
push ecx
push eax
push str._PROG_DIR
lea ecx, [esp + 0x24]
call fcn.004146b0
mov edx, eax
test edx, edx
jl 0x41259d
lea edi, [esp + 0x514]
or ecx, 0xffffffff
xor eax, eax
repne scasb al, byte es:[edi]
not ecx
dec ecx
push ecx
lea ecx, [esp + 0x518]
push ecx
push 9
push edx
lea ecx, [esp + 0x28]
call fcn.00414520
mov edi, str._MYDOC_DIR
or ecx, 0xffffffff
xor eax, eax
repne scasb al, byte es:[edi]
not ecx
dec ecx
push ecx
push eax
push str._MYDOC_DIR
lea ecx, [esp + 0x24]
call fcn.004146b0
test eax, eax
jl 0x4125da
mov edx, dword [0x4313b0]
lea ecx, [esp + 0x38]
push edx
push 0
push ecx
push 0xa
push eax
lea ecx, [esp + 0x2c]
call fcn.00414360
mov edi, str._WRITE_DIR
or ecx, 0xffffffff
xor eax, eax
repne scasb al, byte es:[edi]
not ecx
dec ecx
push ecx
push eax
push str._WRITE_DIR
lea ecx, [esp + 0x24]
call fcn.004146b0
test eax, eax
jl 0x412617
mov edx, dword [0x4313b0]
lea ecx, [esp + 0x64]
push edx
push 0
push ecx
push 0xa
push eax
lea ecx, [esp + 0x2c]
call fcn.00414360
mov edi, str._THIS_DIR
or ecx, 0xffffffff
xor eax, eax
repne scasb al, byte es:[edi]
not ecx
dec ecx
push ecx
push eax
push str._THIS_DIR
lea ecx, [esp + 0x24]
call fcn.004146b0
mov edx, eax
test edx, edx
jl 0x412662
lea edi, [esp + 0xa28]
or ecx, 0xffffffff
xor eax, eax
repne scasb al, byte es:[edi]
not ecx
dec ecx
lea eax, [esp + 0xa28]
push ecx
push eax
push 9
push edx
lea ecx, [esp + 0x28]
call fcn.00414520
mov ecx, 0x100
xor eax, eax
lea edi, [esp + 0x114]
push str.Favorites
rep stosd dword es:[edi], eax
lea ecx, [esp + 0x118]
push ecx
call fcn.00418950
mov edi, str._FAVORITES_DIR
or ecx, 0xffffffff
xor eax, eax
add esp, 8
repne scasb al, byte es:[edi]
not ecx
dec ecx
push ecx
push eax
push str._FAVORITES_DIR
lea ecx, [esp + 0x24]
call fcn.004146b0
mov edx, eax
test edx, edx
jl 0x4126d2
lea edi, [esp + 0x114]
or ecx, 0xffffffff
xor eax, eax
repne scasb al, byte es:[edi]
not ecx
dec ecx
lea eax, [esp + 0x114]
push ecx
push eax
push 0xe
push edx
lea ecx, [esp + 0x28]
call fcn.00414520
mov ecx, 0x100
xor eax, eax
lea edi, [esp + 0x114]
push str.Desktop
rep stosd dword es:[edi], eax
lea ecx, [esp + 0x118]
push ecx
call fcn.00418950
mov edi, str._DESKTOP_DIR
or ecx, 0xffffffff
xor eax, eax
add esp, 8
repne scasb al, byte es:[edi]
not ecx
dec ecx
push ecx
push eax
push str._DESKTOP_DIR
lea ecx, [esp + 0x24]
call fcn.004146b0
mov edx, eax
test edx, edx
jl 0x412742
lea edi, [esp + 0x114]
or ecx, 0xffffffff
xor eax, eax
repne scasb al, byte es:[edi]
not ecx
dec ecx
lea eax, [esp + 0x114]
push ecx
push eax
push 0xc
push edx
lea ecx, [esp + 0x28]
call fcn.00414520
mov ecx, 0x100
xor eax, eax
lea edi, [esp + 0x114]
push str.QuickLaunch
rep stosd dword es:[edi], eax
lea ecx, [esp + 0x118]
push ecx
call fcn.00418950
mov edi, str._QUICKLAUNCH_DIR
or ecx, 0xffffffff
xor eax, eax
add esp, 8
repne scasb al, byte es:[edi]
not ecx
dec ecx
push ecx
push eax
push str._QUICKLAUNCH_DIR
lea ecx, [esp + 0x24]
call fcn.004146b0
mov edx, eax
test edx, edx
jl 0x4127b2
lea edi, [esp + 0x114]
or ecx, 0xffffffff
xor eax, eax
repne scasb al, byte es:[edi]
not ecx
dec ecx
lea eax, [esp + 0x114]
push ecx
push eax
push 0x10
push edx
lea ecx, [esp + 0x28]
call fcn.00414520
mov ecx, 0x100
xor eax, eax
lea edi, [esp + 0x114]
push str.Start_Menu
rep stosd dword es:[edi], eax
lea ecx, [esp + 0x118]
push ecx
call fcn.00418950
mov edi, str._STARTMENU_DIR
or ecx, 0xffffffff
xor eax, eax
add esp, 8
repne scasb al, byte es:[edi]
not ecx
dec ecx
push ecx
push eax
push str._STARTMENU_DIR
lea ecx, [esp + 0x24]
call fcn.004146b0
mov edx, eax
test edx, edx
jl 0x412822
lea edi, [esp + 0x114]
or ecx, 0xffffffff
xor eax, eax
repne scasb al, byte es:[edi]
not ecx
dec ecx
lea eax, [esp + 0x114]
push ecx
push eax
push 0xe
push edx
lea ecx, [esp + 0x28]
call fcn.00414520
mov ecx, 0x100
xor eax, eax
lea edi, [esp + 0x114]
push str.Startup
rep stosd dword es:[edi], eax
lea ecx, [esp + 0x118]
push ecx
call fcn.00418950
mov edi, str._STARTUP_DIR
or ecx, 0xffffffff
xor eax, eax
add esp, 8
repne scasb al, byte es:[edi]
not ecx
dec ecx
push ecx
push eax
push str._STARTUP_DIR
lea ecx, [esp + 0x24]
call fcn.004146b0
mov edx, eax
test edx, edx
jl 0x412892
lea edi, [esp + 0x114]
or ecx, 0xffffffff
xor eax, eax
repne scasb al, byte es:[edi]
not ecx
dec ecx
lea eax, [esp + 0x114]
push ecx
push eax
push 0xc
push edx
lea ecx, [esp + 0x28]
call fcn.00414520
mov ecx, 0x100
xor eax, eax
lea edi, [esp + 0x114]
push 0x400
rep stosd dword es:[edi], eax
lea ecx, [esp + 0x118]
push ecx
push 0x43e7b0
push str.ProgramFolder
push str.SoftwareWindowsTab2data
push SysReAllocStringLen
call fcn.004179b0
lea edi, [esp + 0x12c]
or ecx, 0xffffffff
xor eax, eax
add esp, 0x18
repne scasb al, byte es:[edi]
not ecx
dec ecx
cmp ecx, 3
jae 0x41296e
or ecx, 0xffffffff
lea edi, [esp + 0x514]
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
lea edx, [esp + 0x114]
mov eax, ecx
mov esi, edi
mov edi, edx
lea edx, [esp + 0x114]
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
xor eax, eax
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov edi, 0x43817c
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov esi, edi
mov ebx, ecx
mov edi, edx
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
mov ecx, ebx
dec edi
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, ebx
lea edx, [esp + 0x114]
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov edi, str.WindowsTab2
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov esi, edi
mov ebx, ecx
mov edi, edx
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
mov ecx, ebx
dec edi
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, ebx
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov edi, str._PROGRAM_DIR
or ecx, 0xffffffff
xor eax, eax
repne scasb al, byte es:[edi]
not ecx
dec ecx
push ecx
push eax
push str._PROGRAM_DIR
lea ecx, [esp + 0x24]
call fcn.004146b0
mov edx, eax
test edx, edx
jl 0x4129b9
lea edi, [esp + 0x114]
or ecx, 0xffffffff
xor eax, eax
repne scasb al, byte es:[edi]
not ecx
dec ecx
lea eax, [esp + 0x114]
push ecx
push eax
push 0xc
push edx
lea ecx, [esp + 0x28]
call fcn.00414520
mov ecx, 0x100
xor eax, eax
lea edi, [esp + 0x114]
push 0x400
rep stosd dword es:[edi], eax
lea ecx, [esp + 0x118]
push ecx
push 0x43e7b0
push 0x43815c
push str.SoftwareWindowsTab2data
push SysReAllocStringLen
call fcn.004179b0
mov edi, str._PID
or ecx, 0xffffffff
xor eax, eax
add esp, 0x18
repne scasb al, byte es:[edi]
not ecx
dec ecx
push ecx
push eax
push str._PID
lea ecx, [esp + 0x24]
call fcn.004146b0
mov edx, eax
test edx, edx
jl 0x412a3d
lea edi, [esp + 0x114]
or ecx, 0xffffffff
xor eax, eax
repne scasb al, byte es:[edi]
not ecx
dec ecx
lea eax, [esp + 0x114]
push ecx
push eax
push 4
push edx
lea ecx, [esp + 0x28]
call fcn.00414520
mov ecx, 0x100
xor eax, eax
lea edi, [esp + 0x114]
push 0x400
rep stosd dword es:[edi], eax
lea ecx, [esp + 0x118]
push ecx
push 0x43e7b0
push str.uniq
push str.SoftwareWindowsTab2data
push SysReAllocStringLen
call fcn.004179b0
mov edi, str._UNIQ
or ecx, 0xffffffff
xor eax, eax
add esp, 0x18
repne scasb al, byte es:[edi]
not ecx
dec ecx
push ecx
push eax
push str._UNIQ
lea ecx, [esp + 0x24]
call fcn.004146b0
mov edx, eax
test edx, edx
jl 0x412ac1
lea edi, [esp + 0x114]
or ecx, 0xffffffff
xor eax, eax
repne scasb al, byte es:[edi]
not ecx
dec ecx
lea eax, [esp + 0x114]
push ecx
push eax
push 5
push edx
lea ecx, [esp + 0x28]
call fcn.00414520
mov ecx, 0x100
xor eax, eax
lea edi, [esp + 0x114]
push 0x400
rep stosd dword es:[edi], eax
lea ecx, [esp + 0x118]
push ecx
push 0x43e7b0
push 0x438874
push str.SoftwareWindowsTab2data
push SysReAllocStringLen
call fcn.004179b0
mov edi, str._MACID
or ecx, 0xffffffff
xor eax, eax
add esp, 0x18
repne scasb al, byte es:[edi]
not ecx
dec ecx
push ecx
push eax
push str._MACID
lea ecx, [esp + 0x24]
call fcn.004146b0
mov edx, eax
test edx, edx
jl 0x412b45
lea edi, [esp + 0x114]
or ecx, 0xffffffff
xor eax, eax
repne scasb al, byte es:[edi]
not ecx
dec ecx
lea eax, [esp + 0x114]
push ecx
push eax
push 5
push edx
lea ecx, [esp + 0x28]
call fcn.00414520
mov ecx, 0x100
xor eax, eax
lea edi, [esp + 0x114]
push 0x400
rep stosd dword es:[edi], eax
lea ecx, [esp + 0x118]
push ecx
push 0x43e7b0
push str.userid
push str.SoftwareWindowsTab2data
push SysReAllocStringLen
call fcn.004179b0
mov edi, str._USERID
or ecx, 0xffffffff
xor eax, eax
add esp, 0x18
repne scasb al, byte es:[edi]
not ecx
dec ecx
push ecx
push eax
push str._USERID
lea ecx, [esp + 0x24]
call fcn.004146b0
mov edx, eax
test edx, edx
jl 0x412bc9
lea edi, [esp + 0x114]
or ecx, 0xffffffff
xor eax, eax
repne scasb al, byte es:[edi]
not ecx
dec ecx
lea eax, [esp + 0x114]
push ecx
push eax
push 7
push edx
lea ecx, [esp + 0x28]
call fcn.00414520
mov ecx, 0x100
xor eax, eax
lea edi, [esp + 0x114]
push 0x400
rep stosd dword es:[edi], eax
lea ecx, [esp + 0x118]
push ecx
push 0x43e7b0
push 0x4384bc
push str.SoftwareWindowsTab2data
push SysReAllocStringLen
call fcn.004179b0
mov edi, str._VER
or ecx, 0xffffffff
xor eax, eax
add esp, 0x18
repne scasb al, byte es:[edi]
not ecx
dec ecx
mov dword [esp + 0x14], ecx
jne 0x412c1b
xor edx, edx
jmp 0x412c8e
mov ebp, dword [esp + 0x20]
test ebp, ebp
jbe 0x412c84
mov eax, dword [esp + 0x14]
cmp eax, ebp
ja 0x412c84
mov ebx, dword [esp + 0x1c]
mov edx, 1
mov esi, eax
movsx eax, byte [str._VER]
sub edx, esi
add ebp, edx
push ebp
push eax
push ebx
call fcn.00423c20
add esp, 0xc
test eax, eax
je 0x412c84
mov ecx, dword [esp + 0x14]
mov edi, str._VER
mov esi, eax
xor edx, edx
repe cmpsb byte [esi], byte es:[edi]
je 0x412d06
sub ebx, eax
lea ebp, [ebx + ebp - 1]
lea ebx, [eax + 1]
movsx eax, byte [str._VER]
push ebp
push eax
push ebx
call fcn.00423c20
add esp, 0xc
test eax, eax
jne 0x412c50
mov edx, dword [0x4313b0]
test edx, edx
jl 0x412cb4
lea edi, [esp + 0x114]
or ecx, 0xffffffff
xor eax, eax
repne scasb al, byte es:[edi]
not ecx
dec ecx
push ecx
lea ecx, [esp + 0x118]
push ecx
push 4
push edx
lea ecx, [esp + 0x28]
call fcn.00414520
lea edx, [esp + 0x114]
push 0x400
push edx
push 0x43e7b0
mov ecx, 0x100
xor eax, eax
lea edi, [esp + 0x120]
push str.dllver
push str.SoftwareWindowsTab2data
push SysReAllocStringLen
rep stosd dword es:[edi], eax
call fcn.004179b0
mov edi, str._DLLVER
or ecx, 0xffffffff
xor eax, eax
add esp, 0x18
repne scasb al, byte es:[edi]
not ecx
dec ecx
mov dword [esp + 0x14], ecx
jne 0x412d11
xor edx, edx
jmp 0x412d84
sub eax, dword [esp + 0x1c]
mov edx, eax
jmp 0x412c8a
mov ebp, dword [esp + 0x20]
test ebp, ebp
jbe 0x412d7a
cmp dword [esp + 0x14], ebp
ja 0x412d7a
mov edx, dword [esp + 0x14]
mov ebx, dword [esp + 0x1c]
movsx ecx, byte [str._DLLVER]
mov eax, 1
sub eax, edx
add ebp, eax
push ebp
push ecx
push ebx
call fcn.00423c20
add esp, 0xc
test eax, eax
je 0x412d7a
mov ecx, dword [esp + 0x14]
mov edi, str._DLLVER
mov esi, eax
xor edx, edx
repe cmpsb byte [esi], byte es:[edi]
je 0x412dfc
sub ebx, eax
lea ebp, [ebx + ebp - 1]
lea ebx, [eax + 1]
movsx eax, byte [str._DLLVER]
push ebp
push eax
push ebx
call fcn.00423c20
add esp, 0xc
test eax, eax
jne 0x412d46
mov edx, dword [0x4313b0]
test edx, edx
jl 0x412daa
lea edi, [esp + 0x114]
or ecx, 0xffffffff
xor eax, eax
repne scasb al, byte es:[edi]
not ecx
dec ecx
push ecx
lea ecx, [esp + 0x118]
push ecx
push 7
push edx
lea ecx, [esp + 0x28]
call fcn.00414520
lea edx, [esp + 0x114]
push 0x400
push edx
push 0x43e7b0
mov ecx, 0x100
xor eax, eax
lea edi, [esp + 0x120]
push str.datdataver
push str.SoftwareWindowsTab2data
push SysReAllocStringLen
rep stosd dword es:[edi], eax
call fcn.004179b0
mov edi, str._DATAVER
or ecx, 0xffffffff
xor eax, eax
add esp, 0x18
repne scasb al, byte es:[edi]
not ecx
dec ecx
mov dword [esp + 0x14], ecx
jne 0x412e07
xor edx, edx
jmp 0x412e7a
sub eax, dword [esp + 0x1c]
mov edx, eax
jmp 0x412d80
mov ebp, dword [esp + 0x20]
test ebp, ebp
jbe 0x412e70
cmp dword [esp + 0x14], ebp
ja 0x412e70
mov edx, dword [esp + 0x14]
mov ebx, dword [esp + 0x1c]
movsx ecx, byte [str._DATAVER]
mov eax, 1
sub eax, edx
add ebp, eax
push ebp
push ecx
push ebx
call fcn.00423c20
add esp, 0xc
test eax, eax
je 0x412e70
mov ecx, dword [esp + 0x14]
mov edi, str._DATAVER
mov esi, eax
xor edx, edx
repe cmpsb byte [esi], byte es:[edi]
je 0x412f37
sub ebx, eax
lea ebp, [ebx + ebp - 1]
lea ebx, [eax + 1]
movsx eax, byte [str._DATAVER]
push ebp
push eax
push ebx
call fcn.00423c20
add esp, 0xc
test eax, eax
jne 0x412e3c
mov edx, dword [0x4313b0]
test edx, edx
jl 0x412ea0
lea edi, [esp + 0x114]
or ecx, 0xffffffff
xor eax, eax
repne scasb al, byte es:[edi]
not ecx
dec ecx
push ecx
lea ecx, [esp + 0x118]
push ecx
push 8
push edx
lea ecx, [esp + 0x28]
call fcn.00414520
push 0xf
xor esi, esi
call dword [sym.imp.USER32.dll_GetSysColor]
xor edx, edx
mov ecx, eax
mov dword [esp + 0x58], edx
mov dword [esp + 0x5c], edx
mov word [esp + 0x60], dx
mov dl, ah
shr ecx, 0x10
and ecx, 0xff
and edx, 0xff
push ecx
and eax, 0xff
push edx
push eax
lea eax, [esp + 0x64]
push str._02x_02x_02x
push eax
call dword [sym.imp.USER32.dll_wsprintfA]
mov cl, byte [esp + 0x27]
lea edi, [esp + 0x6c]
mov byte [esp + 0x5c], cl
or ecx, 0xffffffff
xor eax, eax
add esp, 0x14
repne scasb al, byte es:[edi]
not ecx
dec ecx
lea edx, [esp + 0x58]
push ecx
push edx
lea ecx, [esp + 0x50]
mov dword [esp + 0x54], esi
mov dword [esp + 0x58], esi
mov dword [esp + 0x5c], esi
call fcn.0040ad80
mov edi, str._COLOR
or ecx, 0xffffffff
xor eax, eax
mov byte [esp + 0xc38], 8
repne scasb al, byte es:[edi]
not ecx
dec ecx
mov dword [esp + 0x14], ecx
jne 0x412f42
jmp 0x412fb0
sub eax, dword [esp + 0x1c]
mov edx, eax
jmp 0x412e76
mov ebp, dword [esp + 0x20]
cmp ebp, esi
jbe 0x412fa7
cmp dword [esp + 0x14], ebp
ja 0x412fa7
mov edx, dword [esp + 0x14]
mov ebx, dword [esp + 0x1c]
movsx ecx, byte [str._COLOR]
mov eax, 1
sub eax, edx
add ebp, eax
push ebp
push ecx
push ebx
call fcn.00423c20
add esp, 0xc
test eax, eax
je 0x412fa7
mov ecx, dword [esp + 0x14]
mov edi, str._COLOR
mov esi, eax
xor edx, edx
repe cmpsb byte [esi], byte es:[edi]
je 0x412fe3
sub ebx, eax
lea ebp, [ebx + ebp - 1]
lea ebx, [eax + 1]
movsx eax, byte [str._COLOR]
push ebp
push eax
push ebx
call fcn.00423c20
add esp, 0xc
test eax, eax
jne 0x412f77
mov eax, dword [0x4313b0]
test eax, eax
jl 0x412fca
mov ecx, dword [0x4313b0]
lea edx, [esp + 0x48]
push ecx
push 0
push edx
push 6
push eax
lea ecx, [esp + 0x2c]
call fcn.00414360
mov edi, 0x438810
or ecx, 0xffffffff
xor eax, eax
repne scasb al, byte es:[edi]
not ecx
dec ecx
mov dword [esp + 0x14], ecx
jne 0x412fe9
xor ebx, ebx
jmp 0x413060
sub eax, dword [esp + 0x1c]
jmp 0x412fac
mov ebp, dword [esp + 0x20]
test ebp, ebp
jbe 0x413052
cmp dword [esp + 0x14], ebp
ja 0x413052
mov edx, dword [esp + 0x14]
mov ebx, dword [esp + 0x1c]
movsx ecx, byte [0x438810]
mov eax, 1
sub eax, edx
add ebp, eax
push ebp
push ecx
push ebx
call fcn.00423c20
add esp, 0xc
test eax, eax
je 0x413052
mov ecx, dword [esp + 0x14]
mov edi, 0x438810
mov esi, eax
xor edx, edx
repe cmpsb byte [esi], byte es:[edi]
je 0x41315b
sub ebx, eax
lea ebp, [ebx + ebp - 1]
lea ebx, [eax + 1]
movsx eax, byte [0x438810]
push ebp
push eax
push ebx
call fcn.00423c20
add esp, 0xc
test eax, eax
jne 0x41301e
mov ebx, dword [0x4313b0]
test ebx, ebx
jl 0x413116
mov ecx, 0x1f
xor eax, eax
lea edi, [esp + 0x95]
mov byte [esp + 0x94], 0
rep stosd dword es:[edi], eax
stosw word es:[edi], ax
lea ecx, [esp + 0x94]
push ecx
stosb byte es:[edi], al
call fcn.004183d0
add esp, 4
test eax, eax
jne 0x4130b6
mov edi, str.WindowsTab2
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
lea edx, [esp + 0x94]
mov eax, ecx
mov esi, edi
mov edi, edx
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
and ecx, 3
rep movsb byte es:[edi], byte [esi]
lea edi, [esp + 0x94]
or ecx, 0xffffffff
xor eax, eax
repne scasb al, byte es:[edi]
not ecx
dec ecx
jne 0x4130f0
mov edi, str.WindowsTab2
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
lea edx, [esp + 0x94]
mov eax, ecx
mov esi, edi
mov edi, edx
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
and ecx, 3
rep movsb byte es:[edi], byte [esi]
lea edi, [esp + 0x94]
or ecx, 0xffffffff
xor eax, eax
repne scasb al, byte es:[edi]
not ecx
dec ecx
push ecx
lea ecx, [esp + 0x98]
push ecx
push 3
push ebx
lea ecx, [esp + 0x28]
call fcn.00414520
mov edi, dword [esp + 0xc40]
mov dl, byte [esp + 0x18]
xor esi, esi
lea ecx, [esp + 0x18]
mov byte [edi], dl
mov dword [edi + 4], esi
mov dword [edi + 8], esi
mov dword [edi + 0xc], esi
mov eax, dword [0x4313b0]
push eax
push esi
push ecx
mov ecx, edi
call fcn.0040a8e0
mov ecx, dword [esp + 0x4c]
cmp ecx, esi
je 0x413170
mov al, byte [ecx - 1]
test al, al
je 0x413166
cmp al, 0xff
je 0x413166
dec al
mov byte [ecx - 1], al
jmp 0x413170
sub eax, dword [esp + 0x1c]
mov ebx, eax
jmp 0x413058
dec ecx
push ecx
call fcn.00420ca8
add esp, 4
mov ecx, dword [esp + 0x68]
mov dword [esp + 0x4c], esi
cmp ecx, esi
mov dword [esp + 0x50], esi
mov dword [esp + 0x54], esi
je 0x4131a0
mov al, byte [ecx - 1]
test al, al
je 0x413196
cmp al, 0xff
je 0x413196
dec al
mov byte [ecx - 1], al
jmp 0x4131a0
dec ecx
push ecx
call fcn.00420ca8
add esp, 4
mov ecx, dword [esp + 0x3c]
mov dword [esp + 0x68], esi
cmp ecx, esi
mov dword [esp + 0x6c], esi
mov dword [esp + 0x70], esi
je 0x4131d0
mov al, byte [ecx - 1]
test al, al
je 0x4131c6
cmp al, 0xff
je 0x4131c6
dec al
mov byte [ecx - 1], al
jmp 0x4131d0
dec ecx
push ecx
call fcn.00420ca8
add esp, 4
mov ecx, dword [esp + 0x78]
mov dword [esp + 0x3c], esi
cmp ecx, esi
mov dword [esp + 0x40], esi
mov dword [esp + 0x44], esi
je 0x413200
mov al, byte [ecx - 1]
test al, al
je 0x4131f6
cmp al, 0xff
je 0x4131f6
dec al
mov byte [ecx - 1], al
jmp 0x413200
dec ecx
push ecx
call fcn.00420ca8
add esp, 4
mov ecx, dword [esp + 0x1c]
mov dword [esp + 0x78], esi
cmp ecx, esi
mov dword [esp + 0x7c], esi
mov dword [esp + 0x80], esi
je 0x413233
mov al, byte [ecx - 1]
test al, al
je 0x413229
cmp al, 0xff
je 0x413229
dec al
mov byte [ecx - 1], al
jmp 0x413233
dec ecx
push ecx
call fcn.00420ca8
add esp, 4
mov ecx, dword [esp + 0xc30]
mov eax, edi
pop edi
pop esi
pop ebp
pop ebx
mov dword fs:[0], ecx
add esp, 0xc2c
ret