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

Disassembly:
push ebx
push ebp
push esi
push edi
mov ebx, ecx
push 0x104
call sub.MFC42.DLL_operatornew
add esp, 4
mov ebp, eax
push 0x100
push ebp
call dword [sym.imp.KERNEL32.dll_GetWindowsDirectoryA]
mov edi, ebp
or ecx, 0xffffffff
xor eax, eax
repne scasb al, byte es:[edi]
not ecx
dec ecx
je 0x41d732
push 0x424220
push ebp
call dword [sym.imp.MSVCRT.dll_strstr]
add esp, 8
test eax, eax
jne 0x41d73e
push ebp
push 0x100
call dword [sym.imp.KERNEL32.dll_GetCurrentDirectoryA]
mov edi, str._setdz.mdb
or ecx, 0xffffffff
xor eax, eax
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov esi, edi
mov edx, ecx
mov edi, ebp
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
mov ecx, edx
dec edi
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov eax, dword [esp + 0x14]
mov ecx, edx
and ecx, 3
test eax, eax
rep movsb byte es:[edi], byte [esi]
jne 0x41d89f
push 2
call sub.MFC42.DLL_operatornew
add esp, 4
mov esi, dword [sym.imp.KERNEL32.dll_GetPrivateProfileStringA]
mov edi, eax
push ebp
push 2
push edi
push 0
push str.playmode
push str.PLAYSET
call esi
cmp byte [edi], 0x31
jne 0x41d7bd
mov dword [0x4253b8], 1
mov eax, dword [ebx + 0x3c8]
push 0
push 1
push 0xf1
push eax
call dword [sym.imp.USER32.dll_SendMessageA]
push 0x104
call sub.MFC42.DLL_operatornew
add esp, 4
mov edi, eax
mov dword [esp + 0x14], edi
push ebp
push 0x104
push edi
push 0
push str.playpath
push str.PLAYSET
call esi
push 0x3a
push edi
call dword [sym.imp.MSVCRT.dll_strchr]
add esp, 8
test eax, eax
je 0x41d884
or ecx, 0xffffffff
xor eax, eax
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov edx, ecx
mov esi, edi
mov edi, 0x4253d0
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov edi, dword [esp + 0x14]
lea esi, [ebx + 0x634]
push edi
mov ecx, esi
call fcn.00418ea0
push 0
push 0
push 0
push 0xe1
push 0x4b
push 0
mov ecx, esi
call sub.MFC42.DLL_CWnd::SetWindowPos
push 0
push 0xf
push 0x82
push 0xe1
push 0x4b
push 0
mov ecx, esi
call sub.MFC42.DLL_CWnd::SetWindowPos
push edi
mov ecx, ebx
call fcn.0041cc60
push ebp
mov dword [ebx + 0x70], 0
call sub.MFC42.DLL_operatordelete
push edi
call sub.MFC42.DLL_operatordelete
add esp, 8
mov eax, 1
pop edi
pop esi
pop ebp
pop ebx
ret 4
push edi
call sub.MFC42.DLL_operatordelete
add esp, 4
push ebp
call sub.MFC42.DLL_operatordelete
add esp, 4
xor eax, eax
pop edi
pop esi
pop ebp
pop ebx
ret 4
cmp eax, 1
jne 0x41dbba
push 2
call sub.MFC42.DLL_operatornew
add esp, 4
mov edi, dword [sym.imp.KERNEL32.dll_GetPrivateProfileStringA]
mov esi, eax
push ebp
push 2
push esi
push 0
push str.playListMemory
push str.PLAYSET
mov dword [esp + 0x2c], esi
call edi
cmp byte [esi], 0x31
jne 0x41db98
mov esi, dword [sym.imp.USER32.dll_SendMessageA]
mov dword [ebx + 0x82c], 1
mov eax, dword [ebx + 0x33c]
push 0
push 1
push 0xf1
push eax
call esi
push ebp
push 0x104
push 0x104
lea ecx, [ebx + 0xa0]
mov dword [0x4253cc], 7
call sub.MFC42.DLL_CString::GetBuffer
push eax
push 0
push str.playList1
push str.PLAYSET
call edi
push ebp
push 0x104
push 0x104
lea ecx, [ebx + 0xa4]
call sub.MFC42.DLL_CString::GetBuffer
push eax
push 0
push str.playList2
push str.PLAYSET
call edi
push ebp
push 0x104
push 0x104
lea ecx, [ebx + 0xa8]
call sub.MFC42.DLL_CString::GetBuffer
push eax
push 0
push str.playList3
push str.PLAYSET
call edi
push ebp
push 0x104
push 0x104
lea ecx, [ebx + 0xac]
call sub.MFC42.DLL_CString::GetBuffer
push eax
push 0
push str.playList4
push str.PLAYSET
call edi
push ebp
push 0x104
push 0x104
lea ecx, [ebx + 0xb0]
call sub.MFC42.DLL_CString::GetBuffer
push eax
push 0
push str.playList5
push str.PLAYSET
call edi
push ebp
push 0x104
push 0x104
lea ecx, [ebx + 0xb4]
call sub.MFC42.DLL_CString::GetBuffer
push eax
push 0
push str.playList6
push str.PLAYSET
call edi
push ebp
push 0x104
push 0x104
lea ecx, [ebx + 0xb8]
call sub.MFC42.DLL_CString::GetBuffer
push eax
push 0
push str.playList7
push str.PLAYSET
call edi
push ebp
push 0x104
push 0x104
lea ecx, [ebx + 0xbc]
call sub.MFC42.DLL_CString::GetBuffer
push eax
push 0
push str.playListname1
push str.PLAYSET
call edi
push ebp
push 0x104
push 0x104
lea ecx, [ebx + 0xc0]
call sub.MFC42.DLL_CString::GetBuffer
push eax
push 0
push str.playListname2
push str.PLAYSET
call edi
push ebp
push 0x104
push 0x104
lea ecx, [ebx + 0xc4]
call sub.MFC42.DLL_CString::GetBuffer
push eax
push 0
push str.playListname3
push str.PLAYSET
call edi
push ebp
push 0x104
push 0x104
lea ecx, [ebx + 0xc8]
call sub.MFC42.DLL_CString::GetBuffer
push eax
push 0
push str.playListname4
push str.PLAYSET
call edi
push ebp
push 0x104
push 0x104
lea ecx, [ebx + 0xcc]
call sub.MFC42.DLL_CString::GetBuffer
push eax
push 0
push str.playListname5
push str.PLAYSET
call edi
push ebp
push 0x104
push 0x104
lea ecx, [ebx + 0xd0]
call sub.MFC42.DLL_CString::GetBuffer
push eax
push 0
push str.playListname6
push str.PLAYSET
call edi
push ebp
push 0x104
push 0x104
lea ecx, [ebx + 0xd4]
call sub.MFC42.DLL_CString::GetBuffer
push eax
push 0
push str.playListname7
push str.PLAYSET
call edi
xor eax, eax
mov dword [ebx + 0x9c], eax
mov dword [ebx + 0x80], eax
cmp dword [0x4253cc], eax
jle 0x41db79
mov ecx, dword [ebx + 0x80]
xor eax, eax
mov edi, dword [ebx + ecx*4 + 0xbc]
lea edx, [ebx + ecx*4 + 0xbc]
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
not ecx
dec ecx
je 0x41db60
mov ecx, dword [ebx + 0x9c]
inc ecx
mov dword [ebx + 0x9c], ecx
mov edx, dword [edx]
push edx
push eax
mov eax, dword [ebx + 0x6ec]
push 0x180
push eax
call esi
mov edx, dword [ebx + 0x80]
inc edx
mov dword [ebx + 0x80], edx
mov ecx, dword [0x4253cc]
mov eax, edx
cmp eax, ecx
jl 0x41db21
mov esi, dword [esp + 0x14]
push ebp
call sub.MFC42.DLL_operatordelete
push esi
call sub.MFC42.DLL_operatordelete
add esp, 8
mov eax, 1
pop edi
pop esi
pop ebp
pop ebx
ret 4
mov dword [ebx + 0x82c], 0
mov ecx, dword [ebx + 0x33c]
push 0
push 0
push 0xf1
push ecx
call dword [sym.imp.USER32.dll_SendMessageA]
jmp 0x41db7d
cmp eax, 2
jne 0x41dbe7
push ebp
push 0x4253d0
push str.playpath
push str.PLAYSET
call dword [sym.imp.KERNEL32.dll_WritePrivateProfileStringA]
push ebp
call sub.MFC42.DLL_operatordelete
add esp, 4
xor eax, eax
pop edi
pop esi
pop ebp
pop ebx
ret 4
cmp eax, 3
jne 0x41dc14
push ebp
push 0x4242ac
push str.playmode
push str.PLAYSET
call dword [sym.imp.KERNEL32.dll_WritePrivateProfileStringA]
push ebp
call sub.MFC42.DLL_operatordelete
add esp, 4
xor eax, eax
pop edi
pop esi
pop ebp
pop ebx
ret 4
cmp eax, 4
jne 0x41dc41
push ebp
push 0x424330
push str.playmode
push str.PLAYSET
call dword [sym.imp.KERNEL32.dll_WritePrivateProfileStringA]
push ebp
call sub.MFC42.DLL_operatordelete
add esp, 4
xor eax, eax
pop edi
pop esi
pop ebp
pop ebx
ret 4
cmp eax, 5
jne 0x41dc4e
push ebp
push 0x4242ac
jmp 0x41dc59
cmp eax, 6
jne 0x41dc7b
push ebp
push 0x424330
push str.playListMemory
push str.PLAYSET
call dword [sym.imp.KERNEL32.dll_WritePrivateProfileStringA]
push ebp
call sub.MFC42.DLL_operatordelete
add esp, 4
xor eax, eax
pop edi
pop esi
pop ebp
pop ebx
ret 4
cmp eax, 7
jne 0x41dd9b
mov edx, dword [ebx + 0xa0]
mov esi, dword [sym.imp.KERNEL32.dll_WritePrivateProfileStringA]
push ebp
push edx
push str.playList1
push str.PLAYSET
call esi
mov eax, dword [ebx + 0xa4]
push ebp
push eax
push str.playList2
push str.PLAYSET
call esi
mov ecx, dword [ebx + 0xa8]
push ebp
push ecx
push str.playList3
push str.PLAYSET
call esi
mov edx, dword [ebx + 0xac]
push ebp
push edx
push str.playList4
push str.PLAYSET
call esi
mov eax, dword [ebx + 0xb0]
push ebp
push eax
push str.playList5
push str.PLAYSET
call esi
mov ecx, dword [ebx + 0xb4]
push ebp
push ecx
push str.playList6
push str.PLAYSET
call esi
mov edx, dword [ebx + 0xb8]
push ebp
push edx
push str.playList7
push str.PLAYSET
call esi
mov eax, dword [ebx + 0xbc]
push ebp
push eax
push str.playListname1
push str.PLAYSET
call esi
mov ecx, dword [ebx + 0xc0]
push ebp
push ecx
push str.playListname2
push str.PLAYSET
call esi
mov edx, dword [ebx + 0xc4]
push ebp
push edx
push str.playListname3
push str.PLAYSET
call esi
mov eax, dword [ebx + 0xc8]
push ebp
push eax
push str.playListname4
push str.PLAYSET
call esi
mov ecx, dword [ebx + 0xcc]
push ebp
push ecx
push str.playListname5
push str.PLAYSET
call esi
mov edx, dword [ebx + 0xd0]
push ebp
push edx
push str.playListname6
push str.PLAYSET
call esi
mov eax, dword [ebx + 0xd4]
push ebp
push eax
jmp 0x41de9a
cmp eax, 8
jne 0x41dea6
mov esi, dword [sym.imp.KERNEL32.dll_WritePrivateProfileStringA]
push ebp
push 0x4253a8
push str.playList1
push str.PLAYSET
call esi
push ebp
push 0x4253a8
push str.playList2
push str.PLAYSET
call esi
push ebp
push 0x4253a8
push str.playList3
push str.PLAYSET
call esi
push ebp
push 0x4253a8
push str.playList4
push str.PLAYSET
call esi
push ebp
push 0x4253a8
push str.playList5
push str.PLAYSET
call esi
push ebp
push 0x4253a8
push str.playList6
push str.PLAYSET
call esi
push ebp
push 0x4253a8
push str.playList7
push str.PLAYSET
call esi
push ebp
push 0x4253a8
push str.playListname1
push str.PLAYSET
call esi
push ebp
push 0x4253a8
push str.playListname2
push str.PLAYSET
call esi
push ebp
push 0x4253a8
push str.playListname3
push str.PLAYSET
call esi
push ebp
push 0x4253a8
push str.playListname4
push str.PLAYSET
call esi
push ebp
push 0x4253a8
push str.playListname5
push str.PLAYSET
call esi
push ebp
push 0x4253a8
push str.playListname6
push str.PLAYSET
call esi
push ebp
push 0x4253a8
push str.playListname7
push str.PLAYSET
call esi
push ebp
call sub.MFC42.DLL_operatordelete
add esp, 4
xor eax, eax
pop edi
pop esi
pop ebp
pop ebx
ret 4