Function at 0x4015b0
Capabilities:
Check for time delay via queryperformancecounter
Get common file path
Print debug messages
Read .ini file

Disassembly:
mov al, byte [0x4140b3]
sub esp, 0xc28
push ebx
xor ebx, ebx
push ebp
mov ebp, dword [sym.imp.KERNEL32.dll_QueryPerformanceCounter]
push esi
cmp al, bl
push edi
je 0x4018fe
mov ecx, 0x40
xor eax, eax
lea edi, [esp + 0x335]
mov byte [esp + 0x334], bl
rep stosd dword es:[edi], eax
stosw word es:[edi], ax
stosb byte es:[edi], al
lea eax, [esp + 0x334]
push 0x103
push eax
push ebx
call dword [sym.imp.KERNEL32.dll_GetModuleFileNameA]
lea ecx, [esp + 0x334]
push 0x5c
push ecx
call fcn.004047b0
mov byte [eax], bl
mov ecx, 0x40
xor eax, eax
lea edi, [esp + 0x239]
mov byte [esp + 0x238], bl
add esp, 8
rep stosd dword es:[edi], eax
stosw word es:[edi], ax
lea edx, [esp + 0x334]
stosb byte es:[edi], al
push edx
push 0x414358
lea eax, [esp + 0x238]
push 0xff
push eax
call fcn.00404753
mov esi, dword [sym.imp.KERNEL32.dll_GetPrivateProfileIntA]
add esp, 0x10
lea ecx, [esp + 0x230]
push ecx
push ebx
push 0x414350
push 0x41434c
call esi
test eax, eax
setne al
cmp al, bl
jne 0x401680
mov al, byte [0x4140b2]
mov byte [0x417830], bl
cmp al, bl
je 0x401687
mov byte [0x417830], 1
lea edx, [esp + 0x230]
push edx
push ebx
push 0x414344
push 0x41434c
call esi
mov cl, byte [0x417830]
test eax, eax
setne al
cmp cl, bl
mov byte [0x417831], al
jne 0x4016c5
cmp al, bl
jne 0x4016c5
pop edi
pop esi
mov byte [0x4140b3], bl
pop ebp
pop ebx
add esp, 0xc28
ret
mov ecx, 0x40
xor eax, eax
lea edi, [esp + 0x12d]
mov byte [esp + 0x12c], bl
rep stosd dword es:[edi], eax
stosw word es:[edi], ax
stosb byte es:[edi], al
mov ecx, 0x3f
xor eax, eax
lea edi, [esp + 0x2d]
mov byte [esp + 0x2c], bl
rep stosd dword es:[edi], eax
mov cl, byte [0x414340]
push 1
stosw word es:[edi], ax
lea edx, [esp + 0x30]
push 0x1a
stosb byte es:[edi], al
mov eax, dword [0x41433c]
push edx
push ebx
mov dword [esp + 0x20], eax
mov byte [esp + 0x24], cl
call dword [sym.imp.SHELL32.dll_SHGetSpecialFolderPathA]
lea eax, [esp + 0x2c]
lea ecx, [esp + 0x12c]
push eax
push 0x414330
push 0x103
push ecx
call fcn.00404753
lea edx, [esp + 0x13c]
push edx
call fcn.00404727
add esp, 0x14
lea eax, [esp + 0x2c]
lea ecx, [esp + 0x12c]
push eax
push 0x41431c
push 0x103
push ecx
call fcn.00404753
lea edx, [esp + 0x13c]
push edx
call fcn.00404727
add esp, 0x14
lea eax, [esp + 0x10]
lea ecx, [esp + 0x2c]
lea edx, [esp + 0x12c]
push eax
push ecx
push 0x414304
push 0x103
push edx
call fcn.00404753
lea eax, [esp + 0x140]
push eax
call fcn.00404727
add esp, 0x18
lea ecx, [esp + 0x10]
lea edx, [esp + 0x12c]
lea eax, [esp + 0x2c]
push ecx
push edx
push 0x4142f4
push 0xff
push eax
call fcn.00404753
add esp, 0x14
lea ecx, [esp + 0x230]
lea edx, [esp + 0x2c]
push ecx
push 0x103
push 0x417848
push edx
push 0x4142ec
push 0x41434c
call dword [sym.imp.KERNEL32.dll_GetPrivateProfileStringA]
push 0x417838
call dword [sym.imp.KERNEL32.dll_QueryPerformanceFrequency]
push 0x417840
call ebp
lea eax, [esp + 0x10]
lea ecx, [esp + 0x12c]
push eax
push ecx
push 0x4142d8
push 0xff
push 0x41794c
call fcn.00404753
mov edx, dword [0x417844]
add esp, 0x14
lea eax, [esp + 0x2c]
push edx
push 0x4142d4
push 0xff
push eax
call fcn.00404753
mov esi, dword [sym.imp.KERNEL32.dll_WritePrivateProfileStringA]
add esp, 0x10
lea ecx, [esp + 0x2c]
push 0x41794c
push ecx
push 0x4142cc
push 0x4142c4
call esi
mov edx, dword [0x417840]
lea eax, [esp + 0x2c]
push edx
push 0x4142d4
push 0xff
push eax
call fcn.00404753
add esp, 0x10
lea ecx, [esp + 0x2c]
push 0x41794c
push ecx
push 0x4142bc
push 0x4142c4
call esi
mov edx, dword [0x41783c]
lea eax, [esp + 0x2c]
push edx
push 0x4142d4
push 0xff
push eax
call fcn.00404753
add esp, 0x10
lea ecx, [esp + 0x2c]
push 0x41794c
push ecx
push 0x4142b4
push 0x4142c4
call esi
mov edx, dword [0x417838]
lea eax, [esp + 0x2c]
push edx
push 0x4142d4
push 0xff
push eax
call fcn.00404753
add esp, 0x10
lea ecx, [esp + 0x2c]
push 0x41794c
push ecx
push 0x4142ac
push 0x4142c4
call esi
mov byte [0x4140b3], bl
jmp 0x401974
cmp byte [0x417830], bl
jne 0x401912
cmp byte [0x417831], bl
je 0x401afb
mov esi, dword [sym.imp.KERNEL32.dll_GetPrivateProfileIntA]
push 0x41794c
push ebx
push 0x4142cc
push 0x4142c4
call esi
push 0x41794c
push ebx
push 0x4142bc
push 0x4142c4
mov dword [0x417844], eax
call esi
push 0x41794c
push ebx
push 0x4142b4
push 0x4142c4
mov dword [0x417840], eax
call esi
push 0x41794c
push ebx
push 0x4142ac
push 0x4142c4
mov dword [0x41783c], eax
call esi
mov dword [0x417838], eax
push 0x417a50
call ebp
mov edi, dword [0x417838]
mov ebp, dword [0x41783c]
xor esi, esi
cmp edi, ebx
jne 0x401991
cmp ebp, ebx
je 0x4019c3
mov edx, dword [0x417a50]
mov eax, dword [0x417840]
mov esi, dword [0x417844]
sub edx, eax
mov eax, dword [0x417a54]
push ebx
sbb eax, esi
push 0x3e8
push eax
push edx
call fcn.00404670
push ebp
push edi
push edx
push eax
call fcn.004045c0
mov esi, eax
mov ecx, 0xff
xor eax, eax
lea edi, [esp + 0x839]
mov byte [esp + 0x838], bl
rep stosd dword es:[edi], eax
stosw word es:[edi], ax
stosb byte es:[edi], al
mov ecx, 0xff
xor eax, eax
lea edi, [esp + 0x439]
mov byte [esp + 0x438], bl
rep stosd dword es:[edi], eax
mov ecx, dword [esp + 0xc40]
mov edx, dword [esp + 0xc3c]
stosw word es:[edi], ax
stosb byte es:[edi], al
push ecx
push edx
lea eax, [esp + 0x840]
push 0x3ff
push eax
call fcn.004046d7
add esp, 0x10
lea ecx, [esp + 0x18]
push ecx
call dword [sym.imp.KERNEL32.dll_GetLocalTime]
mov eax, dword [esp + 0x26]
mov ecx, dword [esp + 0x24]
lea edx, [esp + 0x838]
and eax, 0xffff
push edx
mov edx, dword [esp + 0x26]
push esi
push eax
mov eax, dword [esp + 0x2c]
and ecx, 0xffff
and edx, 0xffff
push ecx
mov ecx, dword [esp + 0x2e]
and eax, 0xffff
push edx
mov edx, dword [esp + 0x2e]
push eax
mov eax, dword [esp + 0x30]
and ecx, 0xffff
and edx, 0xffff
push ecx
and eax, 0xffff
push edx
push eax
push 0x414298
push 0x414278
lea ecx, [esp + 0x464]
push 0x3ff
push ecx
call fcn.00404753
mov al, byte [0x417830]
add esp, 0x34
cmp al, bl
je 0x401ae5
push 0x414274
push 0x417848
call fcn.004046c4
mov esi, eax
add esp, 8
cmp esi, ebx
je 0x401ae5
lea edi, [esp + 0x438]
or ecx, 0xffffffff
xor eax, eax
push esi
repne scasb al, byte es:[edi]
not ecx
dec ecx
lea edx, [esp + 0x43c]
push ecx
push 1
push edx
call fcn.004042ea
push esi
call fcn.00404294
add esp, 0x14
cmp byte [0x417831], bl
je 0x401afb
lea eax, [esp + 0x438]
push eax
call dword [sym.imp.KERNEL32.dll_OutputDebugStringA]
pop edi
pop esi
pop ebp
pop ebx
add esp, 0xc28
ret