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

Disassembly:
sub esp, 0x824
mov al, byte [0x43796c]
push ebx
push ebp
push esi
push edi
mov byte [esp + 0x730], al
mov ecx, 0x40
xor eax, eax
lea edi, [esp + 0x731]
push 0x104
rep stosd dword es:[edi], eax
stosw word es:[edi], ax
lea ecx, [esp + 0x734]
push ecx
stosb byte es:[edi], al
call dword [sym.imp.KERNEL32.dll_GetWindowsDirectoryA]
mov dl, byte [0x43796c]
mov ecx, 0x40
xor eax, eax
lea edi, [esp + 0x119]
mov byte [esp + 0x118], dl
rep stosd dword es:[edi], eax
stosw word es:[edi], ax
stosb byte es:[edi], al
lea eax, [esp + 0x10]
push eax
call fcn.00405b00
mov ecx, dword [eax]
add esp, 4
lea edx, [esp + 0x118]
push ecx
push str._sSetup_.dll
push edx
call fcn.0040dd65
add esp, 0xc
lea ecx, [esp + 0x10]
call fcn.0041c43b
mov al, byte [0x43796c]
mov ecx, 0x40
mov byte [esp + 0x21c], al
xor eax, eax
lea edi, [esp + 0x21d]
push str.Cmicnfg.ini
rep stosd dword es:[edi], eax
lea ecx, [esp + 0x734]
lea edx, [esp + 0x220]
stosw word es:[edi], ax
push ecx
push str._s_system_s
push edx
stosb byte es:[edi], al
call fcn.0040dd65
mov dl, byte [0x43796c]
mov ecx, 0x40
xor eax, eax
lea edi, [esp + 0x25]
mov byte [esp + 0x24], dl
mov byte [esp + 0x330], dl
rep stosd dword es:[edi], eax
stosw word es:[edi], ax
stosb byte es:[edi], al
mov ecx, 0x40
xor eax, eax
lea edi, [esp + 0x331]
mov edx, dword [0x437b50]
rep stosd dword es:[edi], eax
stosw word es:[edi], ax
add esp, 0x10
mov ebx, dword [sym.imp.KERNEL32.dll_GetPrivateProfileStringA]
stosb byte es:[edi], al
lea eax, [esp + 0x118]
lea ecx, [esp + 0x320]
push eax
push 0x104
push ecx
push 0
push edx
push str.CHANGEMAP
call ebx
mov ebp, dword [sym.imp.KERNEL32.dll_WritePrivateProfileStringA]
test eax, eax
je 0x40346a
lea eax, [esp + 0x118]
lea ecx, [esp + 0x14]
push eax
push 0x104
push ecx
push 0
lea edx, [esp + 0x330]
push str.BMPPATH
push edx
call ebx
test eax, eax
je 0x402d69
mov dl, byte [0x43796c]
mov ecx, 0x40
xor eax, eax
lea edi, [esp + 0x529]
mov byte [esp + 0x528], dl
mov byte [esp + 0x424], dl
rep stosd dword es:[edi], eax
stosw word es:[edi], ax
stosb byte es:[edi], al
mov ecx, 0x40
xor eax, eax
lea edi, [esp + 0x425]
rep stosd dword es:[edi], eax
stosw word es:[edi], ax
stosb byte es:[edi], al
lea eax, [esp + 0x10]
push eax
call fcn.00405b00
mov edx, dword [eax]
add esp, 4
lea ecx, [esp + 0x14]
lea eax, [esp + 0x528]
push ecx
push edx
push str._s_s
push eax
call fcn.0040dd65
add esp, 0x10
lea ecx, [esp + 0x10]
call fcn.0041c43b
lea ecx, [esp + 0x14]
push 0x5c
push ecx
call fcn.0040e670
add esp, 8
test eax, eax
je 0x402d16
inc eax
jmp 0x402d1a
lea eax, [esp + 0x14]
lea edx, [esp + 0x730]
push eax
push edx
lea eax, [esp + 0x42c]
push str._s_s
push eax
call fcn.0040dd65
lea ecx, [esp + 0x434]
lea edx, [esp + 0x538]
push ecx
push edx
call fcn.00402520
add esp, 0x18
lea eax, [esp + 0x21c]
lea ecx, [esp + 0x424]
push eax
push ecx
push str.BMPPATH
push str.MEDIOM
call ebp
lea edx, [esp + 0x118]
lea eax, [esp + 0x14]
push edx
push 0x104
push eax
push 0
lea ecx, [esp + 0x330]
push str.BMPPATH8CH
push ecx
call ebx
test eax, eax
je 0x402e6a
mov dl, byte [0x43796c]
mov ecx, 0x40
xor eax, eax
lea edi, [esp + 0x529]
mov byte [esp + 0x528], dl
mov byte [esp + 0x424], dl
rep stosd dword es:[edi], eax
stosw word es:[edi], ax
stosb byte es:[edi], al
mov ecx, 0x40
xor eax, eax
lea edi, [esp + 0x425]
lea edx, [esp + 0x10]
rep stosd dword es:[edi], eax
stosw word es:[edi], ax
push edx
stosb byte es:[edi], al
call fcn.00405b00
mov edx, dword [eax]
add esp, 4
lea ecx, [esp + 0x14]
lea eax, [esp + 0x528]
push ecx
push edx
push str._s_s
push eax
call fcn.0040dd65
add esp, 0x10
lea ecx, [esp + 0x10]
call fcn.0041c43b
lea ecx, [esp + 0x14]
push 0x5c
push ecx
call fcn.0040e670
add esp, 8
test eax, eax
je 0x402e17
inc eax
jmp 0x402e1b
lea eax, [esp + 0x14]
lea edx, [esp + 0x730]
push eax
push edx
lea eax, [esp + 0x42c]
push str._s_s
push eax
call fcn.0040dd65
lea ecx, [esp + 0x434]
lea edx, [esp + 0x538]
push ecx
push edx
call fcn.00402520
add esp, 0x18
lea eax, [esp + 0x21c]
lea ecx, [esp + 0x424]
push eax
push ecx
push str.BMPPATH8CH
push str.MEDIOM
call ebp
lea edx, [esp + 0x118]
lea eax, [esp + 0x14]
push edx
push 0x104
push eax
push 0
lea ecx, [esp + 0x330]
push str.RearLeft_left
push ecx
call ebx
test eax, eax
je 0x402eaa
lea edx, [esp + 0x21c]
lea eax, [esp + 0x14]
push edx
push eax
push str.RearLeft_left
push str.MEDIOM
call ebp
lea ecx, [esp + 0x118]
lea edx, [esp + 0x14]
push ecx
push 0x104
push edx
push 0
lea eax, [esp + 0x330]
push str.RearLeft_right
push eax
call ebx
test eax, eax
je 0x402eea
lea ecx, [esp + 0x21c]
lea edx, [esp + 0x14]
push ecx
push edx
push str.RearLeft_right
push str.MEDIOM
call ebp
lea eax, [esp + 0x118]
lea ecx, [esp + 0x14]
push eax
push 0x104
push ecx
push 0
lea edx, [esp + 0x330]
push str.RearLeft_bottom
push edx
call ebx
test eax, eax
je 0x402f2a
lea eax, [esp + 0x21c]
lea ecx, [esp + 0x14]
push eax
push ecx
push str.RearLeft_bottom
push str.MEDIOM
call ebp
lea edx, [esp + 0x118]
lea eax, [esp + 0x14]
push edx
push 0x104
push eax
push 0
lea ecx, [esp + 0x330]
push str.RearLeft_top
push ecx
call ebx
test eax, eax
je 0x402f6a
lea edx, [esp + 0x21c]
lea eax, [esp + 0x14]
push edx
push eax
push str.RearLeft_top
push str.MEDIOM
call ebp
lea ecx, [esp + 0x118]
lea edx, [esp + 0x14]
push ecx
push 0x104
push edx
push 0
lea eax, [esp + 0x330]
push str.RearRight_left
push eax
call ebx
test eax, eax
je 0x402faa
lea ecx, [esp + 0x21c]
lea edx, [esp + 0x14]
push ecx
push edx
push str.RearRight_left
push str.MEDIOM
call ebp
lea eax, [esp + 0x118]
lea ecx, [esp + 0x14]
push eax
push 0x104
push ecx
push 0
lea edx, [esp + 0x330]
push str.RearRight_right
push edx
call ebx
test eax, eax
je 0x402fea
lea eax, [esp + 0x21c]
lea ecx, [esp + 0x14]
push eax
push ecx
push str.RearRight_right
push str.MEDIOM
call ebp
lea edx, [esp + 0x118]
lea eax, [esp + 0x14]
push edx
push 0x104
push eax
push 0
lea ecx, [esp + 0x330]
push str.RearRight_bottom
push ecx
call ebx
test eax, eax
je 0x40302a
lea edx, [esp + 0x21c]
lea eax, [esp + 0x14]
push edx
push eax
push str.RearRight_bottom
push str.MEDIOM
call ebp
lea ecx, [esp + 0x118]
lea edx, [esp + 0x14]
push ecx
push 0x104
push edx
push 0
lea eax, [esp + 0x330]
push str.RearRight_top
push eax
call ebx
test eax, eax
je 0x40306a
lea ecx, [esp + 0x21c]
lea edx, [esp + 0x14]
push ecx
push edx
push str.RearRight_top
push str.MEDIOM
call ebp
lea eax, [esp + 0x118]
lea ecx, [esp + 0x14]
push eax
push 0x104
push ecx
push 0
lea edx, [esp + 0x330]
push str.Center_left
push edx
call ebx
test eax, eax
je 0x4030aa
lea eax, [esp + 0x21c]
lea ecx, [esp + 0x14]
push eax
push ecx
push str.Center_left
push str.MEDIOM
call ebp
lea edx, [esp + 0x118]
lea eax, [esp + 0x14]
push edx
push 0x104
push eax
push 0
lea ecx, [esp + 0x330]
push str.Center_right
push ecx
call ebx
test eax, eax
je 0x4030ea
lea edx, [esp + 0x21c]
lea eax, [esp + 0x14]
push edx
push eax
push str.Center_right
push str.MEDIOM
call ebp
lea ecx, [esp + 0x118]
lea edx, [esp + 0x14]
push ecx
push 0x104
push edx
push 0
lea eax, [esp + 0x330]
push str.Center_bottom
push eax
call ebx
test eax, eax
je 0x40312a
lea ecx, [esp + 0x21c]
lea edx, [esp + 0x14]
push ecx
push edx
push str.Center_bottom
push str.MEDIOM
call ebp
lea eax, [esp + 0x118]
lea ecx, [esp + 0x14]
push eax
push 0x104
push ecx
push 0
lea edx, [esp + 0x330]
push str.Center_top
push edx
call ebx
test eax, eax
je 0x40316a
lea eax, [esp + 0x21c]
lea ecx, [esp + 0x14]
push eax
push ecx
push str.Center_top
push str.MEDIOM
call ebp
lea edx, [esp + 0x118]
lea eax, [esp + 0x14]
push edx
push 0x104
push eax
push 0
lea ecx, [esp + 0x330]
push str.Bass_left
push ecx
call ebx
test eax, eax
je 0x4031aa
lea edx, [esp + 0x21c]
lea eax, [esp + 0x14]
push edx
push eax
push str.Bass_left
push str.MEDIOM
call ebp
lea ecx, [esp + 0x118]
lea edx, [esp + 0x14]
push ecx
push 0x104
push edx
push 0
lea eax, [esp + 0x330]
push str.Bass_right
push eax
call ebx
test eax, eax
je 0x4031ea
lea ecx, [esp + 0x21c]
lea edx, [esp + 0x14]
push ecx
push edx
push str.Bass_right
push str.MEDIOM
call ebp
lea eax, [esp + 0x118]
lea ecx, [esp + 0x14]
push eax
push 0x104
push ecx
push 0
lea edx, [esp + 0x330]
push str.Bass_bottom
push edx
call ebx
test eax, eax
je 0x40322a
lea eax, [esp + 0x21c]
lea ecx, [esp + 0x14]
push eax
push ecx
push str.Bass_bottom
push str.MEDIOM
call ebp
lea edx, [esp + 0x118]
lea eax, [esp + 0x14]
push edx
push 0x104
push eax
push 0
lea ecx, [esp + 0x330]
push str.Bass_top
push ecx
call ebx
test eax, eax
je 0x40326a
lea edx, [esp + 0x21c]
lea eax, [esp + 0x14]
push edx
push eax
push str.Bass_top
push str.MEDIOM
call ebp
lea ecx, [esp + 0x118]
lea edx, [esp + 0x14]
push ecx
push 0x104
push edx
push 0
lea eax, [esp + 0x330]
push str.BackLeft_left
push eax
call ebx
test eax, eax
je 0x4032aa
lea ecx, [esp + 0x21c]
lea edx, [esp + 0x14]
push ecx
push edx
push str.BackLeft_left
push str.MEDIOM
call ebp
lea eax, [esp + 0x118]
lea ecx, [esp + 0x14]
push eax
push 0x104
push ecx
push 0
lea edx, [esp + 0x330]
push str.BackLeft_right
push edx
call ebx
test eax, eax
je 0x4032ea
lea eax, [esp + 0x21c]
lea ecx, [esp + 0x14]
push eax
push ecx
push str.BackLeft_right
push str.MEDIOM
call ebp
lea edx, [esp + 0x118]
lea eax, [esp + 0x14]
push edx
push 0x104
push eax
push 0
lea ecx, [esp + 0x330]
push str.BackLeft_bottom
push ecx
call ebx
test eax, eax
je 0x40332a
lea edx, [esp + 0x21c]
lea eax, [esp + 0x14]
push edx
push eax
push str.BackLeft_bottom
push str.MEDIOM
call ebp
lea ecx, [esp + 0x118]
lea edx, [esp + 0x14]
push ecx
push 0x104
push edx
push 0
lea eax, [esp + 0x330]
push str.BackLeft_top
push eax
call ebx
test eax, eax
je 0x40336a
lea ecx, [esp + 0x21c]
lea edx, [esp + 0x14]
push ecx
push edx
push str.BackLeft_top
push str.MEDIOM
call ebp
lea eax, [esp + 0x118]
lea ecx, [esp + 0x14]
push eax
push 0x104
push ecx
push 0
lea edx, [esp + 0x330]
push str.BackRight_left
push edx
call ebx
test eax, eax
je 0x4033aa
lea eax, [esp + 0x21c]
lea ecx, [esp + 0x14]
push eax
push ecx
push str.BackRight_left
push str.MEDIOM
call ebp
lea edx, [esp + 0x118]
lea eax, [esp + 0x14]
push edx
push 0x104
push eax
push 0
lea ecx, [esp + 0x330]
push str.BackRight_right
push ecx
call ebx
test eax, eax
je 0x4033ea
lea edx, [esp + 0x21c]
lea eax, [esp + 0x14]
push edx
push eax
push str.BackRight_right
push str.MEDIOM
call ebp
lea ecx, [esp + 0x118]
lea edx, [esp + 0x14]
push ecx
push 0x104
push edx
push 0
lea eax, [esp + 0x330]
push str.BackRight_bottom
push eax
call ebx
test eax, eax
je 0x40342a
lea ecx, [esp + 0x21c]
lea edx, [esp + 0x14]
push ecx
push edx
push str.BackRight_bottom
push str.MEDIOM
call ebp
lea eax, [esp + 0x118]
lea ecx, [esp + 0x14]
push eax
push 0x104
push ecx
push 0
lea edx, [esp + 0x330]
push str.BackRight_top
push edx
call ebx
test eax, eax
je 0x40346a
lea eax, [esp + 0x21c]
lea ecx, [esp + 0x14]
push eax
push ecx
push str.BackRight_top
push str.MEDIOM
call ebp
mov dl, byte [0x43796c]
mov ecx, 0x40
xor eax, eax
lea edi, [esp + 0x62d]
mov byte [esp + 0x62c], dl
rep stosd dword es:[edi], eax
stosw word es:[edi], ax
stosb byte es:[edi], al
lea eax, [esp + 0x118]
lea ecx, [esp + 0x62c]
push eax
push 0x104
push ecx
push 0
push str.NAME
push str.HELP
call ebx
test eax, eax
je 0x40359a
mov dl, byte [0x43796c]
mov ecx, 0x40
xor eax, eax
lea edi, [esp + 0x529]
mov byte [esp + 0x528], dl
mov byte [esp + 0x424], dl
rep stosd dword es:[edi], eax
stosw word es:[edi], ax
stosb byte es:[edi], al
mov ecx, 0x40
xor eax, eax
lea edi, [esp + 0x425]
lea edx, [esp + 0x62c]
rep stosd dword es:[edi], eax
stosw word es:[edi], ax
push 0x5c
push edx
stosb byte es:[edi], al
call fcn.0040e670
mov esi, eax
lea eax, [esp + 0x18]
push eax
call fcn.00405b00
mov edx, dword [eax]
add esp, 0xc
lea ecx, [esp + 0x62c]
lea eax, [esp + 0x424]
push ecx
push edx
push str._s_s
push eax
call fcn.0040dd65
add esp, 0x10
lea ecx, [esp + 0x10]
call fcn.0041c43b
test esi, esi
lea eax, [esi + 1]
jne 0x403544
lea eax, [esp + 0x62c]
lea ecx, [esp + 0x730]
push eax
push ecx
lea edx, [esp + 0x530]
push str._s_s
push edx
call fcn.0040dd65
lea eax, [esp + 0x538]
lea ecx, [esp + 0x434]
push eax
push ecx
call fcn.00402520
add esp, 0x18
lea eax, [esi + 1]
test esi, esi
jne 0x403585
lea eax, [esp + 0x62c]
lea edx, [esp + 0x21c]
push edx
push eax
push str.NAME
push str.HELP
call ebp
lea eax, [esp + 0x118]
lea ecx, [esp + 0x62c]
push eax
push 0x104
push ecx
push 0
push str.CANCELPOPUP
push str.JACK
call ebx
test eax, eax
je 0x4035dd
lea edx, [esp + 0x21c]
lea eax, [esp + 0x62c]
push edx
push eax
push str.NONOTIFY
push str.SMARTJACK
call ebp
mov edi, 0x43796c
or ecx, 0xffffffff
xor eax, eax
lea edx, [esp + 0x62c]
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov eax, ecx
mov esi, edi
mov edi, edx
lea edx, [esp + 0x62c]
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
and ecx, 3
rep movsb byte es:[edi], byte [esi]
lea ecx, [esp + 0x118]
push ecx
push 0x104
push edx
push 0
push str.NAME
push str.PRHOOK
call ebx
test eax, eax
je 0x403716
mov dl, byte [0x43796c]
mov ecx, 0x40
xor eax, eax
lea edi, [esp + 0x529]
mov byte [esp + 0x528], dl
mov byte [esp + 0x424], dl
rep stosd dword es:[edi], eax
stosw word es:[edi], ax
stosb byte es:[edi], al
mov ecx, 0x40
xor eax, eax
lea edi, [esp + 0x425]
push 0x5c
rep stosd dword es:[edi], eax
stosw word es:[edi], ax
stosb byte es:[edi], al
lea eax, [esp + 0x630]
push eax
call fcn.0040e670
lea ecx, [esp + 0x18]
mov esi, eax
push ecx
call fcn.00405b00
mov eax, dword [eax]
add esp, 0xc
lea edx, [esp + 0x62c]
lea ecx, [esp + 0x424]
push edx
push eax
push str._s_s
push ecx
call fcn.0040dd65
add esp, 0x10
lea ecx, [esp + 0x10]
call fcn.0041c43b
test esi, esi
lea eax, [esi + 1]
jne 0x4036c0
lea eax, [esp + 0x62c]
lea edx, [esp + 0x730]
push eax
push edx
lea eax, [esp + 0x530]
push str._sSystem_s
push eax
call fcn.0040dd65
lea ecx, [esp + 0x538]
lea edx, [esp + 0x434]
push ecx
push edx
call fcn.00402520
add esp, 0x18
lea eax, [esi + 1]
test esi, esi
jne 0x403701
lea eax, [esp + 0x62c]
lea ecx, [esp + 0x21c]
push ecx
push eax
push str.NAME
push str.HELP
call ebp
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x824
ret