Function at 0x40103c
Capabilities:
Get common file path
Read .ini file

Disassembly:
jmp 0x404490
push ecx
push ebx
push esi
xor eax, eax
push edi
mov word [esp + 0xc], ax
mov esi, 0x42d228
mov ecx, dword [esi - 8]
mov ebx, dword [sym.imp.KERNEL32.dll_GetPrivateProfileStringA]
push 0x42f308
push 0xfa
push 0x42eb68
push str.undefined
push ecx
push str.ComponentSelect
call ebx
mov ecx, str.TRUE
mov eax, 0x42eb68
nop
mov dl, byte [eax]
cmp dl, byte [ecx]
jne 0x4044f0
test dl, dl
je 0x4044ec
mov dl, byte [eax + 1]
cmp dl, byte [ecx + 1]
jne 0x4044f0
add eax, 2
add ecx, 2
test dl, dl
jne 0x4044d0
xor eax, eax
jmp 0x4044f5
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
jne 0x4044ff
mov dword [esi], 1
add esi, 0xc
cmp esi, 0x42d2c4
jl 0x4044a0
mov edi, 8
mov esi, section..data
sub edi, 0x42eb68
lea ebx, [ebx]
mov edx, dword [esi]
push 0x42f308
push 0xfa
push 0x42eb68
push str.undefined
push edx
push str.General
call ebx
mov ecx, str.undefined
mov eax, 0x42eb68
mov dl, byte [eax]
cmp dl, byte [ecx]
jne 0x404568
test dl, dl
je 0x404564
mov dl, byte [eax + 1]
cmp dl, byte [ecx + 1]
jne 0x404568
add eax, 2
add ecx, 2
test dl, dl
jne 0x404548
xor eax, eax
jmp 0x40456d
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
je 0x40458a
mov eax, 0x42eb68
lea edx, [edi + esi]
lea esp, [esp]
mov cl, byte [eax]
mov byte [edx + eax], cl
inc eax
test cl, cl
jne 0x404580
add esi, 0x3c
cmp esi, 0x42d21c
jl 0x404520
push 0x4300b8
push 0xc8
call dword [sym.imp.KERNEL32.dll_GetCurrentDirectoryA]
push str.ck_setup.ini
push 0x4300b8
push str._s_s
push 0x42f308
call fcn.00405c5a
add esp, 0x10
push 0x42f308
push 0x3e8
push 0x430548
push str.undefined
push 0
push str.CopyFiles
call ebx
test eax, eax
jle 0x404689
lea eax, [esp + 0xc]
push eax
mov ebx, 0x430548
push ebx
call fcn.004063eb
add esp, 8
test eax, eax
je 0x404689
mov esi, dword [0x430994]
imul esi, esi, 0x190
mov edx, esi
sub edx, eax
mov ecx, eax
lea edi, [edx + 0x430b98]
lea esp, [esp]
mov dl, byte [ecx]
mov byte [edi + ecx], dl
inc ecx
test dl, dl
jne 0x404620
push 0x42f308
push 0xc8
lea ecx, [esi + 0x430c60]
push ecx
push str.undefined
push eax
push str.CopyFiles
call dword [sym.imp.KERNEL32.dll_GetPrivateProfileStringA]
mov eax, dword [0x430994]
imul eax, eax, 0x190
add eax, 0x430b98
lea ecx, [eax + 1]
nop
mov dl, byte [eax]
inc eax
test dl, dl
jne 0x404660
sub eax, ecx
lea edx, [esp + 0xc]
lea ebx, [ebx + eax + 1]
push edx
push ebx
call fcn.004063eb
inc dword [0x430994]
add esp, 8
test eax, eax
jne 0x404601
push ebp
mov ebp, dword [sym.imp.KERNEL32.dll_GetPrivateProfileSectionA]
push 0x42f308
push 0x3e8
push 0x42fc08
push str.RegFiles
call ebp
test eax, eax
jle 0x40471c
lea eax, [esp + 0x10]
push eax
mov edi, 0x42fc08
push edi
call fcn.004063eb
add esp, 8
test eax, eax
je 0x40471c
mov edx, dword [0x43637c]
jmp 0x4046d0
imul edx, edx, 0x32
lea ebx, [edx + 0x4359b8]
mov esi, ebx
mov ecx, eax
sub esi, eax
nop
mov dl, byte [ecx]
mov byte [esi + ecx], dl
inc ecx
test dl, dl
jne 0x4046e0
mov eax, ebx
lea edx, [eax + 1]
nop
mov cl, byte [eax]
inc eax
test cl, cl
jne 0x4046f0
sub eax, edx
lea ecx, [esp + 0x10]
lea edi, [edi + eax + 1]
push ecx
push edi
call fcn.004063eb
mov edx, dword [0x43637c]
inc edx
add esp, 8
mov dword [0x43637c], edx
test eax, eax
jne 0x4046d0
push 0x42f308
push 0x7d0
push 0x42f438
push str.Applications
call ebp
pop ebp
test eax, eax
jle 0x4047ad
lea edx, [esp + 0xc]
push edx
mov edi, 0x42f438
push edi
call fcn.004063eb
add esp, 8
test eax, eax
je 0x4047ad
mov edx, dword [0x438e78]
jmp 0x404760
imul edx, edx, 0xc8
lea ebx, [edx + 0x436380]
mov esi, ebx
mov ecx, eax
sub esi, eax
mov dl, byte [ecx]
mov byte [esi + ecx], dl
inc ecx
test dl, dl
jne 0x404772
mov eax, ebx
lea edx, [eax + 1]
mov cl, byte [eax]
inc eax
test cl, cl
jne 0x404781
sub eax, edx
lea edi, [edi + eax + 1]
lea eax, [esp + 0xc]
push eax
push edi
call fcn.004063eb
mov edx, dword [0x438e78]
inc edx
add esp, 8
mov dword [0x438e78], edx
test eax, eax
jne 0x404760
call fcn.0040101e
mov dword [0x42f204], eax
call fcn.00401028
pop edi
pop esi
mov dword [0x42ec64], eax
pop ebx
test eax, eax
je 0x404812
call fcn.00401041
test eax, eax
je 0x404809
push 0x42efa8
push 0xfa
push 0x42eb68
push str.undefined
push str.Msg_Identify_Components
push 0x42ed04
call dword [sym.imp.KERNEL32.dll_GetPrivateProfileStringA]
push 0x30
push str.Error
push 0x42eb68
push 0
call dword [sym.imp.USER32.dll_MessageBoxA]
push 0
push 0x401005
jmp 0x404819
push 0
push 0x40107d
push 0
push 0x7d
push 0
call dword [sym.imp.KERNEL32.dll_GetModuleHandleA]
push eax
call dword [sym.imp.USER32.dll_DialogBoxParamA]
xor eax, eax
pop ecx
ret