Function at 0x402cec
Capabilities:
Check mutex on windows
Enumerate pe sections
Read .ini file

Disassembly:
push ebp
mov ebp, esp
push edi
push esi
push ebx
lea ebx, [ebp - 0x924]
sub esp, 0x99c
mov dword [esp + 4], 1
mov dword [esp], ebx
call dword [sym.imp.ADVAPI32.dll_InitializeSecurityDescriptor]
push eax
push eax
mov dword [esp + 0xc], 0
mov dword [esp + 8], 0
mov dword [esp + 4], 1
mov dword [esp], ebx
call dword [sym.imp.ADVAPI32.dll_SetSecurityDescriptorDacl]
lea eax, [ebp - 0x944]
sub esp, 0x10
mov dword [ebp - 0x944], 0xc
mov dword [ebp - 0x940], ebx
mov dword [ebp - 0x93c], 1
mov dword [esp + 8], str.Global_
mov dword [esp + 4], 1
mov dword [esp], eax
call dword [sym.imp.KERNEL32.dll_CreateMutexA]
sub esp, 0xc
test eax, eax
mov dword [ebp - 0x95c], eax
je 0x402f87
call dword [sym.imp.KERNEL32.dll_GetLastError]
cmp eax, 0xb7
jne 0x402da1
mov eax, dword [ebp - 0x95c]
mov dword [esp], eax
call dword [sym.imp.KERNEL32.dll_CloseHandle]
push eax
jmp 0x402f87
mov dword [esp + 4], str..OCP
mov dword [esp], 0
call sub.msvcrt.dll_setlocale
lea edx, [ebp - 0x510]
xor eax, eax
mov ecx, 0x13e
mov dword [ebp - 0x960], eax
mov edi, edx
rep stosd dword es:[edi], eax
lea edi, [ebp - 0x910]
call dword [sym.imp.COMCTL32.DLL_InitCommonControls]
mov dword [esp], 8
call fcn.00405e23
mov eax, dword [ebp - 0x960]
mov ecx, 0xa
mov dword [0x40c01c], 0x4018d8
rep stosd dword es:[edi], eax
mov eax, dword [ebp + 8]
mov dword [ebp - 0x910], 3
mov dword [ebp - 0x904], 0x1e
mov dword [esp + 4], str.whisky
mov dword [ebp - 0x900], eax
mov dword [esp], eax
call dword [sym.imp.USER32.dll_LoadIconA]
push edx
push edx
mov dword [ebp - 0x8fc], eax
mov dword [esp + 4], 0x7f00
mov dword [esp], 0
call dword [sym.imp.USER32.dll_LoadCursorA]
push ecx
push ecx
mov dword [ebp - 0x8f8], eax
mov dword [esp], 4
call dword [sym.imp.USER32.dll_GetSysColor]
push ebx
mov dword [esp], eax
call dword [sym.imp.GDI32.dll_CreateSolidBrush]
push esi
lea esi, [ebp - 0x910]
mov dword [ebp - 0x8f4], eax
mov dword [ebp - 0x90c], 0x401a59
mov dword [ebp - 0x8ec], str.main
mov dword [esp], esi
mov ebx, dword [sym.imp.USER32.dll_RegisterClassA]
call ebx
test ax, ax
push edi
je 0x402f87
mov dword [ebp - 0x90c], 0x4061ac
mov dword [ebp - 0x8ec], str.progr
mov dword [esp], esi
call ebx
test ax, ax
push edi
je 0x402f87
mov dword [ebp - 0x90c], 0x40642c
mov dword [ebp - 0x8ec], 0x40d373
mov dword [esp], esi
call ebx
test ax, ax
push ecx
je 0x402f87
mov dword [ebp - 0x90c], 0x406818
mov dword [ebp - 0x8ec], 0x40d379
mov dword [esp], esi
call ebx
test ax, ax
push edx
je 0x402f87
mov dword [ebp - 0x90c], 0x406bf6
mov dword [ebp - 0x8ec], str.idchg
mov dword [esp], esi
call ebx
test ax, ax
push edi
je 0x402f87
mov dword [ebp - 0x90c], 0x4070f0
mov dword [ebp - 0x8ec], 0x40d2b4
mov dword [esp], esi
call ebx
test ax, ax
push ecx
je 0x402f87
mov dword [ebp - 0x90c], 0x407150
mov dword [ebp - 0x8ec], str.readersel
mov dword [esp], esi
call ebx
test ax, ax
push edx
je 0x402f87
lea esi, [ebp - 0x324]
mov dword [esp + 8], 0x104
mov dword [esp], 0
mov dword [esp + 4], esi
call dword [sym.imp.KERNEL32.dll_GetModuleFileNameA]
sub esp, 0xc
test eax, eax
jne 0x402f8f
or eax, 0xffffffff
jmp 0x40338f
lea edi, [ebp - 0x220]
mov ecx, 0x41
mov eax, dword [sym.imp.SHLWAPI.dll_PathRemoveFileSpecA]
rep movsd dword es:[edi], dword [esi]
lea ebx, [ebp - 0x220]
lea esi, [ebp - 0x324]
mov dword [ebp - 0x960], eax
mov dword [esp], ebx
call eax
mov edx, dword [sym.imp.SHLWAPI.dll_PathAppendA]
push edi
lea edi, [ebp - 0x11c]
mov dword [ebp - 0x97c], edx
mov dword [esp + 4], str.CardTool.ini
mov dword [esp], ebx
call edx
mov ecx, 0x41
push eax
push eax
rep movsd dword es:[edi], dword [esi]
lea esi, [ebp - 0x11c]
mov dword [esp], esi
call dword [ebp - 0x960]
push eax
mov edx, dword [ebp - 0x97c]
mov dword [esp], esi
mov dword [esp + 4], str.bsi.txt
call edx
push eax
push eax
mov esi, dword [sym.imp.KERNEL32.dll_GetPrivateProfileIntA]
mov dword [esp + 0xc], ebx
mov dword [esp + 8], 0
mov dword [esp + 4], str.AdditionalKeyOnly
mov dword [esp], 0x40d3b1
call esi
sub esp, 0x10
mov dword [ebp - 0x434], eax
mov dword [esp + 0xc], ebx
mov dword [esp + 8], 0
mov dword [esp + 4], str.EnableSafetynet
mov dword [esp], 0x40d3b1
call esi
sub esp, 0x10
mov dword [ebp - 0x430], eax
mov dword [esp + 0xc], ebx
mov dword [esp + 8], 0
mov dword [esp + 4], str.InvalidateMethod
mov dword [esp], 0x40d3b1
call esi
sub esp, 0x10
cmp dword [ebp - 0x434], 0
mov dword [ebp - 0x42c], eax
je 0x40308c
call fcn.00409479
xor ebx, ebx
lea eax, [ebp - 0x94c]
mov dword [esp + 0xc], ebx
mov dword [esp + 8], str.k_02d
mov dword [esp + 4], 8
lea edi, [ebp - 0x910]
lea esi, [ebp - 0x950]
mov dword [esp], eax
call fcn.0040be20
lea eax, [ebp - 0x220]
mov dword [esp + 0xc], edi
mov dword [esp + 0x10], 0x400
mov dword [esp + 8], 0x40d21c
mov dword [esp], str.additional_key
mov dword [esp + 0x14], eax
lea eax, [ebp - 0x94c]
mov dword [esp + 4], eax
call dword [sym.imp.KERNEL32.dll_GetPrivateProfileStringA]
mov dword [ebp - 0x950], edi
lea edi, [ebp - 0x938]
sub esp, 0x18
mov dword [esp + 8], esi
mov dword [esp + 4], 1
mov dword [esp], edi
call fcn.004059b8
test al, al
je 0x403206
lea eax, [ebp - 0x937]
mov dword [esp + 8], esi
mov dword [esp + 4], 1
mov dword [esp], eax
call fcn.004059b8
test al, al
je 0x403206
lea eax, [ebp - 0x930]
mov dword [esp + 8], esi
mov dword [esp + 4], 8
mov dword [esp], eax
call fcn.004059b8
test al, al
je 0x403206
mov eax, dword [ebp - 0x930]
movzx ecx, byte [ebp - 0x92c]
xor edx, edx
mov dword [esp], edi
bswap eax
shld edx, eax, 8
shl eax, 8
or ecx, eax
mov dword [ebp - 0x964], edx
mov edx, dword [ebp - 0x964]
mov dword [ebp - 0x968], ecx
movzx ecx, byte [ebp - 0x92b]
mov eax, dword [ebp - 0x968]
shld edx, eax, 8
shl eax, 8
or ecx, eax
mov dword [ebp - 0x96c], edx
mov edx, dword [ebp - 0x96c]
mov dword [ebp - 0x970], ecx
movzx ecx, byte [ebp - 0x92a]
mov eax, dword [ebp - 0x970]
shld edx, eax, 8
shl eax, 8
or ecx, eax
mov dword [ebp - 0x974], edx
mov edx, dword [ebp - 0x974]
mov dword [ebp - 0x978], ecx
movzx ecx, byte [ebp - 0x929]
mov eax, dword [ebp - 0x978]
shld edx, eax, 8
shl eax, 8
or eax, ecx
mov dword [ebp - 0x92c], edx
mov dword [ebp - 0x930], eax
call fcn.00409490
inc ebx
cmp ebx, 0x40
jne 0x40308e
lea eax, [ebp - 0x11c]
lea ebx, [ebp - 0x910]
lea esi, [ebp - 0x220]
mov dword [esp], eax
call fcn.00405a5f
mov edi, dword [0x40f400]
test edi, edi
je 0x403286
movzx eax, word [edi + 8]
mov dword [esp + 0x10], eax
movzx eax, word [edi + 6]
mov dword [esp + 8], str._04x__03d
mov dword [esp + 4], 0x20
mov dword [esp], ebx
mov dword [esp + 0xc], eax
call fcn.0040be20
mov dword [esp + 0xc], esi
mov dword [esp + 8], 1
mov dword [esp + 4], ebx
mov dword [esp], str.bitmap
call dword [sym.imp.KERNEL32.dll_GetPrivateProfileIntA]
sub esp, 0x10
test eax, eax
setne byte [edi + 4]
mov edi, dword [edi]
jmp 0x403230
call fcn.0040a56a
test eax, eax
mov dword [ebp - 0x50c], eax
je 0x402f87
mov dword [esp], eax
call dword [eax + 8]
test eax, eax
jg 0x4032d0
mov dword [esp + 0xc], 0x10
mov dword [esp + 8], 0x40d3ee
mov dword [esp + 4], 0x40d3f7
mov dword [esp], 0
invalid