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

Disassembly:
sub esp, 0x868
lea eax, [esp + 4]
push eax
push 0x800
call dword [sym.imp.KERNEL32.dll_GetCurrentDirectoryA]
lea eax, [esp + 4]
add eax, 0xffffffff
lea ecx, [ecx]
mov cl, byte [eax + 1]
add eax, 1
test cl, cl
jne 0x402e60
mov ecx, dword [str.CONFIG.INI]
mov edx, dword [0x4972a4]
push ebx
push ebp
push edi
mov edi, dword [sym.imp.KERNEL32.dll_GetPrivateProfileIntA]
mov dword [eax], ecx
mov ecx, dword [0x4972a8]
mov dword [eax + 4], edx
lea edx, [esp + 0x10]
push edx
push 0x270f
push str.BUTTON0
push str.KEYCONFIG
mov dword [eax + 8], ecx
mov ebx, 0x5a
call edi
cmp eax, 0x270f
je 0x402eb1
mov ebx, eax
lea eax, [esp + 0x10]
push eax
push 0x270f
push str.BUTTON1
mov dword [esi + 0x4916c], ebx
push str.KEYCONFIG
mov ebx, 0x58
call edi
cmp eax, 0x270f
je 0x402edb
mov ebx, eax
lea ecx, [esp + 0x10]
push ecx
push 0x270f
push str.BUTTON2
mov dword [esi + 0x49170], ebx
push str.KEYCONFIG
mov ebx, 0x43
call edi
cmp eax, 0x270f
je 0x402f05
mov ebx, eax
lea edx, [esp + 0x10]
push edx
push 0x270f
push str.BUTTON3
mov dword [esi + 0x49174], ebx
push str.KEYCONFIG
mov ebx, 0x56
call edi
cmp eax, 0x270f
je 0x402f2f
mov ebx, eax
lea eax, [esp + 0x10]
push eax
push 0x270f
push str.BUTTON4
mov dword [esi + 0x49178], ebx
push str.KEYCONFIG
mov ebx, 0x41
call edi
cmp eax, 0x270f
je 0x402f59
mov ebx, eax
lea ecx, [esp + 0x10]
push ecx
push 0x270f
push str.BUTTON5
mov dword [esi + 0x4917c], ebx
push str.KEYCONFIG
mov ebx, 0x53
call edi
cmp eax, 0x270f
je 0x402f83
mov ebx, eax
lea edx, [esp + 0x10]
push edx
push 0x270f
push str.BUTTON6
mov dword [esi + 0x49180], ebx
push str.KEYCONFIG
mov ebx, 0x20
call edi
cmp eax, 0x270f
je 0x402fad
mov ebx, eax
lea eax, [esp + 0x10]
push eax
push 0x270f
push str.BUTTON7
mov dword [esi + 0x49184], ebx
push str.KEYCONFIG
mov ebx, 8
call edi
cmp eax, 0x270f
je 0x402fd7
mov ebx, eax
lea ecx, [esp + 0x10]
push ecx
push 0x270f
push str.BUTTON8
mov dword [esi + 0x49188], ebx
push str.KEYCONFIG
mov ebx, 0x10
call edi
cmp eax, 0x270f
je 0x403001
mov ebx, eax
lea edx, [esp + 0x10]
push edx
push 0x270f
push str.BUTTON9
mov dword [esi + 0x4918c], ebx
push str.KEYCONFIG
mov ebx, 0x11
call edi
cmp eax, 0x270f
je 0x40302b
mov ebx, eax
lea eax, [esp + 0x10]
push eax
push 0x270f
push str.EXCHANGE
mov dword [esi + 0x49190], ebx
push str.KEYCONFIG
mov ebx, 0xd
call edi
cmp eax, 0x270f
je 0x403055
mov ebx, eax
lea ecx, [esp + 0x10]
push ecx
push 0x270f
push str.EXIT
mov dword [esi + 0x4919c], ebx
push str.KEYCONFIG
mov ebx, 0x1b
call edi
cmp eax, 0x270f
je 0x40307f
mov ebx, eax
lea edx, [esp + 0x10]
push edx
push 0x270f
push str.DIRU
mov dword [esi + 0x491a0], ebx
push str.KEYCONFIG
mov ebx, 0x68
call edi
cmp eax, 0x270f
je 0x4030a9
mov ebx, eax
lea eax, [esp + 0x10]
push eax
push 0x270f
push str.DIRD
mov dword [esi + 0x491a4], ebx
push str.KEYCONFIG
mov ebx, 0x62
call edi
cmp eax, 0x270f
je 0x4030d3
mov ebx, eax
lea ecx, [esp + 0x10]
push ecx
push 0x270f
push str.DIRL
mov dword [esi + 0x491a8], ebx
push str.KEYCONFIG
mov ebx, 0x64
call edi
cmp eax, 0x270f
je 0x4030fd
mov ebx, eax
lea edx, [esp + 0x10]
push edx
push 0x270f
push str.DIRR
mov dword [esi + 0x491ac], ebx
push str.KEYCONFIG
mov ebx, 0x66
call edi
cmp eax, 0x270f
je 0x403127
mov ebx, eax
lea eax, [esp + 0x10]
push eax
push 0x270f
push str.BUTTON0
mov dword [esi + 0x491b0], ebx
push str.PADCONFIG
xor ebx, ebx
call edi
cmp eax, 0x270f
je 0x40314e
mov ebx, eax
lea ecx, [esp + 0x10]
push ecx
push 0x270f
push str.BUTTON1
mov dword [esi + 0x491c4], ebx
mov ebp, 1
push str.PADCONFIG
mov ebx, ebp
call edi
cmp eax, 0x270f
je 0x40317a
mov ebx, eax
lea edx, [esp + 0x10]
push edx
push 0x270f
push str.BUTTON2
mov dword [esi + 0x491c8], ebx
push str.PADCONFIG
mov ebx, 2
call edi
cmp eax, 0x270f
je 0x4031a4
mov ebx, eax
lea eax, [esp + 0x10]
push eax
push 0x270f
push str.BUTTON3
mov dword [esi + 0x491cc], ebx
push str.PADCONFIG
mov ebx, 3
call edi
cmp eax, 0x270f
je 0x4031ce
mov ebx, eax
lea ecx, [esp + 0x10]
push ecx
push 0x270f
push str.BUTTON4
mov dword [esi + 0x491d0], ebx
push str.PADCONFIG
mov ebx, 4
call edi
cmp eax, 0x270f
je 0x4031f8
mov ebx, eax
lea edx, [esp + 0x10]
push edx
push 0x270f
push str.BUTTON5
mov dword [esi + 0x491d4], ebx
push str.PADCONFIG
mov ebx, 5
call edi
cmp eax, 0x270f
je 0x403222
mov ebx, eax
lea eax, [esp + 0x10]
push eax
push 0x270f
push str.BUTTON6
mov dword [esi + 0x491d8], ebx
push str.PADCONFIG
mov ebx, 6
call edi
cmp eax, 0x270f
je 0x40324c
mov ebx, eax
lea ecx, [esp + 0x10]
push ecx
push 0x270f
push str.BUTTON7
mov dword [esi + 0x491dc], ebx
push str.PADCONFIG
mov ebx, 7
call edi
cmp eax, 0x270f
je 0x403276
mov ebx, eax
lea edx, [esp + 0x10]
push edx
push 0x270f
push str.BUTTON8
mov dword [esi + 0x491e0], ebx
push str.PADCONFIG
mov ebx, 8
call edi
cmp eax, 0x270f
je 0x4032a0
mov ebx, eax
lea eax, [esp + 0x10]
push eax
push 0x270f
push str.BUTTON9
mov dword [esi + 0x491e4], ebx
push str.PADCONFIG
mov ebx, 9
call edi
cmp eax, 0x270f
je 0x4032ca
mov ebx, eax
lea ecx, [esp + 0x10]
push ecx
push 0x270f
push str.BUTTON10
mov dword [esi + 0x491e8], ebx
push str.PADCONFIG
mov ebx, 0xa
call edi
cmp eax, 0x270f
je 0x4032f4
mov ebx, eax
lea edx, [esp + 0x10]
push edx
push 0x270f
push str.BUTTON11
mov dword [esi + 0x491ec], ebx
push str.PADCONFIG
mov ebx, 0xb
call edi
cmp eax, 0x270f
je 0x40331e
mov ebx, eax
lea eax, [esp + 0x10]
push eax
push 0x270f
push str.FULL
mov dword [esi + 0x491f0], ebx
push str.SCREEN
xor ebx, ebx
call edi
cmp eax, 0x270f
je 0x403345
mov ebx, eax
lea ecx, [esp + 0x10]
push ecx
push 0x270f
push str.TIMER
mov dword [esi + 0x49208], ebx
push str.SCREEN
mov ebx, ebp
call edi
cmp eax, 0x270f
je 0x40336c
mov ebx, eax
lea edx, [esp + 0x10]
push edx
push 0x270f
push str.SKIP
mov dword [esi + 0x4920c], ebx
push str.SCREEN
xor ebx, ebx
call edi
cmp eax, 0x270f
je 0x403393
mov ebx, eax
lea eax, [esp + 0x10]
push eax
push 0x270f
push str.FILTER
mov dword [esi + 0x49218], ebx
push str.SCREEN
xor ebx, ebx
call edi
cmp eax, 0x270f
je 0x4033ba
mov ebx, eax
lea ecx, [esp + 0x10]
push ecx
push 0x270f
push str.SIZE
mov dword [esi + 0x49214], ebx
push str.SCREEN
xor ebx, ebx
call edi
cmp eax, 0x270f
je 0x4033e1
mov ebx, eax
lea edx, [esp + 0x10]
push edx
push 0x270f
push str.MSAA_TYPE
mov dword [esi + 0x49234], ebx
push str.SCREEN
xor ebx, ebx
call edi
cmp eax, 0x270f
je 0x403408
mov ebx, eax
lea eax, [esp + 0x10]
push eax
push 0x270f
push str.MSAA_QUALITY
mov dword [esi + 0x4929c], ebx
push str.SCREEN
xor ebx, ebx
call edi
cmp eax, 0x270f
je 0x40342f
mov ebx, eax
lea ecx, [esp + 0x10]
push ecx
push 0x270f
push str.VOLUMEBGM
mov dword [esi + 0x492a0], ebx
push str.SOUND
mov ebx, 0x32
call edi
cmp eax, 0x270f
je 0x403459
mov ebx, eax
lea edx, [esp + 0x10]
push edx
push 0x270f
push str.VOLUMESE
mov dword [esi + 0x49238], ebx
push str.SOUND
mov ebx, 0x32
call edi
cmp eax, 0x270f
je 0x403483
mov ebx, eax
mov eax, dword [esi + 0x49218]
test eax, eax
mov dword [esi + 0x4923c], ebx
jle 0x403498
cmp eax, 3
jle 0x4034a2
mov dword [esi + 0x49218], 0
mov edi, dword [esi + 0x49218]
mov eax, 0x3c
lea ecx, [edi + 1]
cdq
idiv ecx
cmp edi, 3
mov dword [esp + 0xc], ecx
mov dword [esi + 0x49228], ebp
mov dword [esi + 0x49224], ebp
fild dword [esp + 0xc]
mov dword [esi + 0x49220], ecx
fmul qword [0x499ad8]
fstp qword [esi + 0x49240]
mov dword [esi + 0x4921c], eax
ja case.default.0x4034e4
jmp dword [edi*4 + 0x40352c]
mov dword [esi + 0x49230], ebp
jmp case.default.0x4034e4
mov dword [esi + 0x49230], 2
jmp case.default.0x4034e4
mov dword [esi + 0x49230], 4
jmp case.default.0x4034e4
mov dword [esi + 0x49230], 8
test edi, edi
jle 0x40351f
mov dword [0x4ebb64], ebp
pop edi
pop ebp
pop ebx
add esp, 0x868
ret