Function at 0x40c91d
Capabilities:
Check if file exists
Get file attributes
Read .ini file

Disassembly:
push ebp
mov ebp, esp
add esp, 0xfffffeec
push ebx
push esi
push edi
push str.SetHiliteWords
push dword [0x45ee1a]
call sub.kernel32.dll_GetProcAddress
or eax, eax
je 0x40cade
mov edi, eax
push 0
push 0
call edi
push 0x45cd1a
call sub.kernel32.dll_GetFileAttributesA
cmp eax, 0xffffffff
je 0x40cade
mov dword [ebp - 0x10], 0
jmp 0x40c9b8
mov byte [ebp - 0x110], 0x43
lea eax, [ebp - 0x10f]
push eax
push dword [ebp - 0x10]
call fcn.004011b7
push 0x45cd1a
push 0x4000
push 0x463932
push 0x44ef8c
lea eax, [ebp - 0x110]
push eax
push str.KeyWords
call sub.kernel32.dll_GetPrivateProfileStringA
or eax, eax
je 0x40c9b5
mov eax, dword [ebp - 0x10]
push 0x463932
push dword [eax*4 + 0x45ed12]
call edi
inc dword [ebp - 0x10]
cmp dword [ebp - 0x10], 0x10
jb 0x40c965
mov esi, dword [0x44f371]
mov eax, esi
add eax, dword [0x44f375]
mov dword [ebp - 0x114], eax
jmp 0x40cacd
movzx eax, byte [esi + 8]
cmp eax, 0x43
jne 0x40ca46
lea ebx, [esi + 9]
push ebx
call fcn.004010ef
lea ebx, [eax + ebx + 1]
jmp 0x40ca3c
lea edx, [ebp - 0x110]
mov word [edx], 0x5e
inc edx
mov ecx, edx
jmp 0x40ca05
mov al, byte [ebx]
mov byte [edx], al
inc ebx
inc edx
cmp byte [ebx], 0x2c
je 0x40ca0f
cmp byte [ebx], 0
jne 0x40c9ff
cmp byte [ebx], 0x2c
jne 0x40ca15
inc ebx
mov byte [edx], 0
sub ecx, edx
neg ecx
cmp ecx, 1
ja 0x40ca2d
cmp byte [edx - 1], 0x30
jb 0x40ca2d
cmp byte [edx - 1], 0x39
jbe 0x40ca3c
lea edx, [ebp - 0x110]
push edx
push dword [0x45ed46]
call edi
cmp byte [ebx], 0
jne 0x40c9ef
jmp 0x40cac7
cmp eax, 0x41
jne 0x40ca70
lea edx, [ebp - 0x110]
mov byte [edx], 0x5e
inc edx
lea eax, [esi + 9]
push eax
push edx
call fcn.004010a7
lea edx, [ebp - 0x110]
push edx
push dword [0x45ed4a]
call edi
jmp 0x40cac7
cmp eax, 0x53
jne 0x40ca9a
lea edx, [ebp - 0x110]
mov byte [edx], 0x5e
inc edx
lea eax, [esi + 9]
push eax
push edx
call fcn.004010a7
lea edx, [ebp - 0x110]
push edx
push dword [0x45ed4e]
call edi
jmp 0x40cac7
cmp eax, 0x4d
je 0x40caa4
cmp eax, 0x57
jne 0x40cac7
lea edx, [ebp - 0x110]
mov byte [edx], 0x5e
inc edx
lea eax, [esi + 9]
push eax
push edx
call fcn.004010a7
lea edx, [ebp - 0x110]
push edx
push dword [0x45ed46]
call edi
mov edx, dword [esi]
lea esi, [edx + esi + 9]
cmp dword [esi], 0
je 0x40cade
cmp esi, dword [ebp - 0x114]
jb 0x40c9d7
cmp dword [0x45ee26], 0
je 0x40caf2
push dword [0x45ee26]
call sub.kernel32.dll_HeapDestroy
push 0x100000
push 0x40
push 1
call sub.kernel32.dll_HeapCreate
mov dword [0x45ee26], eax
push 0x400
push 0x45ee4e
call sub.kernel32.dll_RtlZeroMemory
push 0x45cd1a
call sub.kernel32.dll_GetFileAttributesA
cmp eax, 0xffffffff
je 0x40cbba
mov dword [ebp - 8], 0x2800
push dword [ebp - 8]
push 0
push dword [0x45ee26]
call fcn.0040106a
mov dword [ebp - 4], eax
mov dword [ebp - 0x10], 0
jmp 0x40cba4
mov byte [ebp - 0x110], 0x43
lea eax, [ebp - 0x10f]
push eax
push dword [ebp - 0x10]
call fcn.004011b7
push 0x45cd1a
push 0x4000
push 0x463932
push 0x44ef8c
lea eax, [ebp - 0x110]
push eax
push str.KeyWords
call sub.kernel32.dll_GetPrivateProfileStringA
or eax, eax
je 0x40cba1
mov eax, dword [ebp - 0x10]
lea eax, [eax*4 + 0x45c67e]
mov dword [ebp - 0xc], eax
lea edi, [ebp - 0x110]
call fcn.0040cbbf
inc dword [ebp - 0x10]
cmp dword [ebp - 0x10], 0x10
jb 0x40cb4a
push dword [ebp - 4]
push 0
push dword [0x45ee26]
call sub.kernel32.dll_HeapFree
pop edi
pop esi
pop ebx
leave
ret