Function at 0x41873c
Capabilities:
Create directory
Get common file path
Get startup folder
Read .ini file

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x744
mov eax, dword [0x601ff0]
xor eax, ebp
mov dword [ebp - 4], eax
push ebx
push esi
push edi
call fcn.00418f74
xor ebx, ebx
lea eax, [ebp - 0x110]
push eax
push ebx
push ebx
push 0x2e
push ebx
mov byte [ebp - 0x110], bl
call dword [sym.imp.SHELL32.dll_SHGetFolderPathA]
push 0x5db458
mov edi, 0x104
lea eax, [ebp - 0x110]
push edi
push eax
call fcn.0057c7e2
add esp, 0xc
lea eax, [ebp - 0x110]
push eax
call fcn.0057ceee
mov dword [esp], 0x5db464
lea eax, [ebp - 0x110]
push edi
push eax
call fcn.0057c7e2
add esp, 0xc
lea eax, [ebp - 0x110]
push eax
call fcn.0057ceee
mov dword [esp], str.Custom
lea eax, [ebp - 0x110]
push edi
push eax
call fcn.0057c7e2
add esp, 0xc
lea eax, [ebp - 0x110]
push eax
call fcn.0057ceee
mov dword [esp], str.Custom.sfx
lea eax, [ebp - 0x110]
push edi
push eax
call fcn.0057c7e2
add esp, 0xc
lea eax, [ebp - 0x110]
push eax
push 0x5dc384
push str.MinVersion
push 0x5db498
call dword [sym.imp.KERNEL32.dll_WritePrivateProfileStringA]
sub esp, 0x18
mov ecx, esp
push str.Custom_shadow
call fcn.004027d2
lea ecx, [ebp - 0x740]
call fcn.004272fe
mov ecx, eax
add esp, 0x18
cmp dword [ecx + 0x14], 8
jb 0x418837
mov ecx, dword [ecx]
lea edx, [ebp - 0x520]
movzx eax, word [ecx]
lea ecx, [ecx + 2]
mov word [edx], ax
lea edx, [edx + 2]
test ax, ax
jne 0x41883d
push ebx
push 1
lea ecx, [ebp - 0x740]
call fcn.0040285e
lea ecx, [ebp - 0x110]
lea edx, [ecx + 1]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x418865
sub ecx, edx
mov edx, ebx
test ecx, ecx
jle 0x418889
movzx eax, byte [ebp + edx - 0x110]
mov word [ebp + edx*2 - 0x728], ax
inc edx
cmp edx, ecx
jl 0x418874
add ecx, ecx
cmp ecx, 0x208
jae 0x418f6e
mov esi, dword [sym.imp.KERNEL32.dll_WritePrivateProfileStringW]
xor eax, eax
mov word [ebp + ecx - 0x728], ax
lea eax, [ebp - 0x728]
push eax
lea eax, [ebp - 0x520]
push eax
push str.ShadowName
push str.ShadowFX
call esi
sub esp, 0x18
mov ecx, esp
push str.Adjust_on_create_page
call fcn.004027d2
lea ecx, [ebp - 0x740]
call fcn.004272fe
mov ecx, eax
add esp, 0x18
cmp dword [ecx + 0x14], 8
jb 0x4188e8
mov ecx, dword [ecx]
lea edx, [ebp - 0x520]
movzx eax, word [ecx]
lea ecx, [ecx + 2]
mov word [edx], ax
lea edx, [edx + 2]
test ax, ax
jne 0x4188ee
push ebx
push 1
lea ecx, [ebp - 0x740]
call fcn.0040285e
lea eax, [ebp - 0x728]
push eax
lea eax, [ebp - 0x520]
push eax
push str.ShadowBlurb
push str.ShadowFX
call esi
push edi
lea eax, [ebp - 0x320]
mov dword [0x60d818], ebx
push ebx
push eax
call fcn.005744c0
mov ebx, dword [sym.imp.KERNEL32.dll_GetPrivateProfileIntA]
lea eax, [ebp - 0x110]
add esp, 0xc
mov edi, str.Shadow.Data
push eax
push 0xa
pop esi
push esi
push str.ActiveLeft
push edi
call ebx
mov dword [0x61d980], eax
lea eax, [ebp - 0x110]
push eax
push esi
push str.ActiveRight
push edi
call ebx
mov dword [0x61d984], eax
lea eax, [ebp - 0x110]
push eax
push 5
push str.ActiveTop
push edi
call ebx
mov dword [0x61d988], eax
lea eax, [ebp - 0x110]
push eax
push esi
push str.ActiveBottom
push edi
call ebx
mov dword [0x61d98c], eax
lea eax, [ebp - 0x110]
push eax
push esi
push str.InactiveLeft
push edi
call ebx
mov dword [0x61d990], eax
lea eax, [ebp - 0x110]
push eax
push esi
push str.InactiveRight
push edi
call ebx
mov dword [0x61d994], eax
lea eax, [ebp - 0x110]
push eax
push 5
push str.InactiveTop
push edi
call ebx
mov dword [0x61d998], eax
lea eax, [ebp - 0x110]
push eax
push esi
push str.InactiveBottom
push edi
call ebx
mov dword [0x61d99c], eax
lea eax, [ebp - 0x110]
push eax
push 0x64
push str.ActiveAlpha
push edi
call ebx
mov byte [0x61d9a8], al
lea eax, [ebp - 0x110]
push eax
push 0x50
push str.InactiveAlpha
push edi
call ebx
mov byte [0x61d9a9], al
lea eax, [ebp - 0x110]
push eax
push esi
push str.ActiveBlur
push edi
call ebx
mov dword [0x61d9ac], eax
lea eax, [ebp - 0x110]
push eax
push esi
push str.InactiveBlur
push edi
call ebx
mov dword [0x61d9b0], eax
lea eax, [ebp - 0x110]
push eax
push 6
push str.ActiveBlurExtra
push edi
call ebx
mov dword [0x61d9b4], eax
lea eax, [ebp - 0x110]
push eax
push 6
push str.InactiveBlurExtra
push edi
call ebx
mov dword [0x61d9b8], eax
lea eax, [ebp - 0x110]
push eax
push 0
push str.ActiveColour
push edi
call ebx
mov dword [0x61d9a0], eax
lea eax, [ebp - 0x110]
push eax
push 0
push str.InactiveColour
push edi
call ebx
mov dword [0x61d9a4], eax
mov edi, 0x104
lea eax, [ebp - 0x110]
mov esi, str.Shadow.top
push eax
push edi
lea eax, [ebp - 0x320]
push eax
push 0x5d9201
push str.Image
push esi
call dword [sym.imp.KERNEL32.dll_GetPrivateProfileStringA]
lea eax, [ebp - 0x110]
push eax
push 0
push str.Left
push esi
call ebx
mov dword [0x60d88c], eax
lea eax, [ebp - 0x110]
push eax
push 0
push str.Right
push esi
call ebx
mov dword [0x60d894], eax
lea eax, [ebp - 0x110]
push eax
push 0
push 0x5db56c
push esi
call ebx
mov dword [0x60d890], eax
lea eax, [ebp - 0x110]
push eax
push 0
push str.Bottom
push esi
call ebx
push edi
mov dword [0x60d898], eax
lea eax, [ebp - 0x218]
push 0
push eax
call fcn.005744c0
add esp, 0xc
xor ecx, ecx
mov al, byte [ebp + ecx - 0x110]
mov byte [ebp + ecx - 0x218], al
inc ecx
test al, al
jne 0x418b3a
lea eax, [ebp - 0x218]
push 0x5c
push eax
call fcn.00573e00
pop ecx
pop ecx
test eax, eax
je 0x418b64
mov byte [eax], 0
lea edi, [ebp - 0x218]
dec edi
mov al, byte [edi + 1]
inc edi
test al, al
jne 0x418b6b
mov ax, word [0x5db1fc]
lea edx, [ebp - 0x320]
mov word [edi], ax
mov esi, edx
mov al, byte [edx]
inc edx
test al, al
jne 0x418b84
lea edi, [ebp - 0x218]
sub edx, esi
dec edi
mov al, byte [edi + 1]
inc edi
test al, al
jne 0x418b94
mov ecx, edx
lea eax, [ebp - 0x218]
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
and ecx, 3
rep movsb byte es:[edi], byte [esi]
push ecx
mov ecx, esp
push eax
call fcn.00409b36
call fcn.004113fa
pop ecx
mov edi, 0x104
mov dword [0x60d888], eax
push edi
lea eax, [ebp - 0x320]
push 0
push eax
call fcn.005744c0
add esp, 0xc
lea eax, [ebp - 0x110]
mov esi, str.Shadow.left
push eax
push edi
lea eax, [ebp - 0x320]
push eax
push 0x5d9201
push str.Image
push esi
call dword [sym.imp.KERNEL32.dll_GetPrivateProfileStringA]
lea eax, [ebp - 0x110]
push eax
push 0
push str.Left
push esi
call ebx
mov dword [0x60d868], eax
lea eax, [ebp - 0x110]
push eax
push 0
push str.Right
push esi
call ebx
mov dword [0x60d870], eax
lea eax, [ebp - 0x110]
push eax
push 0
push 0x5db56c
push esi
call ebx
mov dword [0x60d86c], eax
lea eax, [ebp - 0x110]
push eax
push 0
push str.Bottom
push esi
call ebx
push edi
mov dword [0x60d874], eax
lea eax, [ebp - 0x218]
push 0
push eax
call fcn.005744c0
add esp, 0xc
xor ecx, ecx
mov al, byte [ebp + ecx - 0x110]
mov byte [ebp + ecx - 0x218], al
inc ecx
test al, al
jne 0x418c6c
lea eax, [ebp - 0x218]
push 0x5c
push eax
call fcn.00573e00
pop ecx
pop ecx
test eax, eax
je 0x418c96
mov byte [eax], 0
lea edi, [ebp - 0x218]
dec edi
mov al, byte [edi + 1]
inc edi
test al, al
jne 0x418c9d
mov ax, word [0x5db1fc]
lea edx, [ebp - 0x320]
mov word [edi], ax
mov esi, edx
mov al, byte [edx]
inc edx
test al, al
jne 0x418cb6
lea edi, [ebp - 0x218]
sub edx, esi
dec edi
mov al, byte [edi + 1]
inc edi
test al, al
jne 0x418cc6
mov ecx, edx
lea eax, [ebp - 0x218]
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
and ecx, 3
rep movsb byte es:[edi], byte [esi]
push ecx
mov ecx, esp
push eax
call fcn.00409b36
call fcn.004113fa
pop ecx
mov edi, 0x104
mov dword [0x60d864], eax
push edi
lea eax, [ebp - 0x320]
push 0
push eax
call fcn.005744c0
add esp, 0xc
lea eax, [ebp - 0x110]
mov esi, str.Shadow.right
push eax
push edi
lea eax, [ebp - 0x320]
push eax
push 0x5d9201
push str.Image
push esi
call dword [sym.imp.KERNEL32.dll_GetPrivateProfileStringA]
lea eax, [ebp - 0x110]
push eax
push 0
push str.Left
push esi
call ebx
mov dword [0x60d844], eax
lea eax, [ebp - 0x110]
push eax
push 0
push str.Right
push esi
call ebx
mov dword [0x60d84c], eax
lea eax, [ebp - 0x110]
push eax
push 0
push 0x5db56c
push esi
call ebx
mov dword [0x60d848], eax
lea eax, [ebp - 0x110]
push eax
push 0
push str.Bottom
push esi
call ebx
push edi
mov dword [0x60d850], eax
lea eax, [ebp - 0x218]
push 0
push eax
call fcn.005744c0
add esp, 0xc
xor ecx, ecx
mov al, byte [ebp + ecx - 0x110]
mov byte [ebp + ecx - 0x218], al
inc ecx
test al, al
jne 0x418d9e
lea eax, [ebp - 0x218]
push 0x5c
push eax
call fcn.00573e00
pop ecx
pop ecx
test eax, eax
je 0x418dc8
mov byte [eax], 0
lea edi, [ebp - 0x218]
dec edi
mov al, byte [edi + 1]
inc edi
test al, al
jne 0x418dcf
mov ax, word [0x5db1fc]
lea edx, [ebp - 0x320]
mov word [edi], ax
mov esi, edx
mov al, byte [edx]
inc edx
test al, al
jne 0x418de8
lea edi, [ebp - 0x218]
sub edx, esi
dec edi
mov al, byte [edi + 1]
inc edi
test al, al
jne 0x418df8
mov ecx, edx
lea eax, [ebp - 0x218]
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
and ecx, 3
rep movsb byte es:[edi], byte [esi]
push ecx
mov ecx, esp
push eax
call fcn.00409b36
call fcn.004113fa
pop ecx
mov edi, 0x104
mov dword [0x60d840], eax
push edi
lea eax, [ebp - 0x320]
push 0
push eax
call fcn.005744c0
add esp, 0xc
lea eax, [ebp - 0x110]
mov esi, str.Shadow.bottom
push eax
push edi
lea eax, [ebp - 0x320]
push eax
push 0x5d9201
push str.Image
push esi
call dword [sym.imp.KERNEL32.dll_GetPrivateProfileStringA]
lea eax, [ebp - 0x110]
push eax
push 0
push str.Left
push esi
call ebx
mov dword [0x60d820], eax
lea eax, [ebp - 0x110]
push eax
push 0
push str.Right
push esi
call ebx
mov dword [0x60d828], eax
lea eax, [ebp - 0x110]
push eax
push 0
push 0x5db56c
push esi
call ebx
mov dword [0x60d824], eax
lea eax, [ebp - 0x110]
push eax
push 0
push str.Bottom
push esi
call ebx
push edi
mov dword [0x60d82c], eax
lea eax, [ebp - 0x218]
push 0
push eax
call fcn.005744c0
add esp, 0xc
xor ecx, ecx
mov al, byte [ebp + ecx - 0x110]
mov byte [ebp + ecx - 0x218], al
inc ecx
test al, al
jne 0x418ed0
lea eax, [ebp - 0x218]
push 0x5c
push eax
call fcn.00573e00
pop ecx
pop ecx
test eax, eax
je 0x418efa
mov byte [eax], 0
lea edi, [ebp - 0x218]
dec edi
mov al, byte [edi + 1]
inc edi
test al, al
jne 0x418f01
mov ax, word [0x5db1fc]
lea edx, [ebp - 0x320]
mov word [edi], ax
mov esi, edx
mov al, byte [edx]
inc edx
test al, al
jne 0x418f1a
lea edi, [ebp - 0x218]
sub edx, esi
dec edi
mov al, byte [edi + 1]
inc edi
test al, al
jne 0x418f2a
mov ecx, edx
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
lea edx, [ebp - 0x218]
and ecx, 3
rep movsb byte es:[edi], byte [esi]
push ecx
mov ecx, esp
push edx
call fcn.00409b36
call fcn.004113fa
pop ecx
mov ecx, dword [ebp - 4]
pop edi
mov dword [0x60d81c], eax
xor ecx, ebp
xor eax, eax
pop esi
inc eax
pop ebx
call fcn.00570fd6
mov esp, ebp
pop ebp
ret
call fcn.0057112d
int3