Function at 0x417090
Capabilities:
Check for time delay via queryperformancecounter
Create directory
Get common file path
Print debug messages
Read .ini file
Write file on windows

Disassembly:
mov al, byte [0x4a233d]
sub esp, 0xc2c
push ebx
xor ebx, ebx
push ebp
mov ebp, dword [sym.imp.KERNEL32.dll_QueryPerformanceCounter]
push esi
mov esi, dword [sym.imp.MSVCRT.dll__snprintf]
cmp al, bl
push edi
je 0x4173ca
mov ecx, 0x40
xor eax, eax
lea edi, [esp + 0x339]
mov byte [esp + 0x338], bl
rep stosd dword es:[edi], eax
stosw word es:[edi], ax
stosb byte es:[edi], al
lea eax, [esp + 0x338]
push 0x103
push eax
push ebx
call dword [sym.imp.KERNEL32.dll_GetModuleFileNameA]
lea ecx, [esp + 0x338]
push 0x5c
push ecx
call dword [sym.imp.MSVCRT.dll_strrchr]
mov byte [eax], bl
mov ecx, 0x40
xor eax, eax
lea edi, [esp + 0x23d]
mov byte [esp + 0x23c], bl
add esp, 8
rep stosd dword es:[edi], eax
stosw word es:[edi], ax
lea edx, [esp + 0x338]
stosb byte es:[edi], al
push edx
push 0x4a25dc
lea eax, [esp + 0x23c]
push 0xff
push eax
call esi
mov edi, dword [sym.imp.KERNEL32.dll_GetPrivateProfileIntA]
add esp, 0x10
lea ecx, [esp + 0x234]
push ecx
push ebx
push 0x4a25d4
push 0x4a25d0
call edi
test eax, eax
setne al
cmp al, bl
jne 0x417164
mov al, byte [0x4a9188]
mov byte [0x4a9189], bl
cmp al, bl
je 0x41716b
mov byte [0x4a9189], 1
lea edx, [esp + 0x234]
push edx
push ebx
push 0x4a25c8
push 0x4a25d0
call edi
mov cl, byte [0x4a9189]
test eax, eax
setne al
cmp cl, bl
mov byte [0x4a918a], al
jne 0x4171a9
cmp al, bl
jne 0x4171a9
pop edi
pop esi
mov byte [0x4a233d], bl
pop ebp
pop ebx
add esp, 0xc2c
ret
mov ecx, 0x40
xor eax, eax
lea edi, [esp + 0x131]
mov byte [esp + 0x130], 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 + 0x31]
mov byte [esp + 0x30], bl
rep stosd dword es:[edi], eax
stosw word es:[edi], ax
mov ecx, dword [0x4a1e40]
mov dl, byte [0x4a1e44]
stosb byte es:[edi], al
mov eax, dword [0x4a1e3c]
push 1
mov dword [esp + 0x14], eax
lea eax, [esp + 0x34]
push 0x1a
push eax
push ebx
mov dword [esp + 0x24], ecx
mov byte [esp + 0x28], dl
call dword [sym.imp.SHELL32.dll_SHGetSpecialFolderPathA]
lea ecx, [esp + 0x30]
lea edx, [esp + 0x130]
push ecx
push 0x4a25bc
push 0x103
push edx
call esi
mov edi, dword [sym.imp.MSVCRT.dll__mkdir]
lea eax, [esp + 0x140]
push eax
call edi
add esp, 0x14
lea ecx, [esp + 0x30]
lea edx, [esp + 0x130]
push ecx
push 0x4a25a8
push 0x103
push edx
call esi
lea eax, [esp + 0x140]
push eax
call edi
add esp, 0x14
lea ecx, [esp + 0x10]
lea edx, [esp + 0x30]
lea eax, [esp + 0x130]
push ecx
push edx
push 0x4a2590
push 0x103
push eax
call esi
lea ecx, [esp + 0x144]
push ecx
call edi
add esp, 0x18
lea edx, [esp + 0x10]
lea eax, [esp + 0x130]
lea ecx, [esp + 0x30]
push edx
push eax
push 0x4a2580
push 0xff
push ecx
call esi
add esp, 0x14
lea edx, [esp + 0x234]
lea eax, [esp + 0x30]
push edx
push 0x103
push 0x4a91a0
push eax
push 0x4a166c
push 0x4a25d0
call dword [sym.imp.KERNEL32.dll_GetPrivateProfileStringA]
push 0x4a9190
call dword [sym.imp.KERNEL32.dll_QueryPerformanceFrequency]
push 0x4a9198
call ebp
lea ecx, [esp + 0x10]
lea edx, [esp + 0x130]
push ecx
push edx
push 0x4a256c
push 0xff
push 0x4a92a4
call esi
mov eax, dword [0x4a919c]
add esp, 0x14
lea ecx, [esp + 0x30]
push eax
push 0x4a22fc
push 0xff
push ecx
call esi
mov edi, dword [sym.imp.KERNEL32.dll_WritePrivateProfileStringA]
add esp, 0x10
lea edx, [esp + 0x30]
push 0x4a92a4
push edx
push 0x4a2564
push 0x4a255c
call edi
mov eax, dword [0x4a9198]
lea ecx, [esp + 0x30]
push eax
push 0x4a22fc
push 0xff
push ecx
call esi
add esp, 0x10
lea edx, [esp + 0x30]
push 0x4a92a4
push edx
push 0x4a2554
push 0x4a255c
call edi
mov eax, dword [0x4a9194]
lea ecx, [esp + 0x30]
push eax
push 0x4a22fc
push 0xff
push ecx
call esi
add esp, 0x10
lea edx, [esp + 0x30]
push 0x4a92a4
push edx
push 0x4a254c
push 0x4a255c
call edi
mov eax, dword [0x4a9190]
lea ecx, [esp + 0x30]
push eax
push 0x4a22fc
push 0xff
push ecx
call esi
add esp, 0x10
lea edx, [esp + 0x30]
push 0x4a92a4
push edx
push 0x4a2544
push 0x4a255c
call edi
mov byte [0x4a233d], bl
jmp 0x417440
cmp byte [0x4a9189], bl
jne 0x4173de
cmp byte [0x4a918a], bl
je 0x4175ce
mov edi, dword [sym.imp.KERNEL32.dll_GetPrivateProfileIntA]
push 0x4a92a4
push ebx
push 0x4a2564
push 0x4a255c
call edi
push 0x4a92a4
push ebx
push 0x4a2554
push 0x4a255c
mov dword [0x4a919c], eax
call edi
push 0x4a92a4
push ebx
push 0x4a254c
push 0x4a255c
mov dword [0x4a9198], eax
call edi
push 0x4a92a4
push ebx
push 0x4a2544
push 0x4a255c
mov dword [0x4a9194], eax
call edi
mov dword [0x4a9190], eax
push 0x4a93a8
call ebp
mov edi, dword [0x4a9190]
xor ebp, ebp
cmp edi, ebx
jne 0x41745b
cmp dword [0x4a9194], ebx
je 0x417494
mov eax, dword [0x4a93a8]
mov ecx, dword [0x4a9198]
mov ebp, dword [0x4a919c]
sub eax, ecx
mov ecx, dword [0x4a93ac]
push ebx
sbb ecx, ebp
push 0x3e8
push ecx
push eax
call fcn.0045df50
mov ecx, dword [0x4a9194]
push ecx
push edi
push edx
push eax
call fcn.0045dea0
mov ebp, eax
mov ecx, 0xff
xor eax, eax
lea edi, [esp + 0x83d]
mov byte [esp + 0x83c], 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 + 0x43d]
mov byte [esp + 0x43c], bl
rep stosd dword es:[edi], eax
mov edx, dword [esp + 0xc44]
lea ecx, [esp + 0x83c]
stosw word es:[edi], ax
stosb byte es:[edi], al
mov eax, dword [esp + 0xc40]
push edx
push eax
push 0x3ff
push ecx
call dword [sym.imp.MSVCRT.dll__vsnprintf]
add esp, 0x10
lea edx, [esp + 0x1c]
push edx
call dword [sym.imp.KERNEL32.dll_GetLocalTime]
mov ecx, dword [esp + 0x2a]
mov edx, dword [esp + 0x28]
lea eax, [esp + 0x83c]
and ecx, 0xffff
push eax
mov eax, dword [esp + 0x2a]
push ebp
push ecx
mov ecx, dword [esp + 0x30]
and edx, 0xffff
and eax, 0xffff
push edx
mov edx, dword [esp + 0x32]
and ecx, 0xffff
push eax
mov eax, dword [esp + 0x32]
push ecx
mov ecx, dword [esp + 0x34]
and edx, 0xffff
and eax, 0xffff
push edx
and ecx, 0xffff
push eax
push ecx
push 0x4a252c
push 0x4a250c
lea edx, [esp + 0x468]
push 0x3ff
push edx
call esi
mov al, byte [0x4a9189]
add esp, 0x34
cmp al, bl
je 0x4175b8
push 0x4a2508
push 0x4a91a0
call dword [sym.imp.MSVCRT.dll_fopen]
mov esi, eax
add esp, 8
cmp esi, ebx
je 0x4175b8
lea edi, [esp + 0x43c]
or ecx, 0xffffffff
xor eax, eax
push esi
repne scasb al, byte es:[edi]
not ecx
dec ecx
lea eax, [esp + 0x440]
push ecx
push 1
push eax
call dword [sym.imp.MSVCRT.dll_fwrite]
push esi
call dword [sym.imp.MSVCRT.dll_fclose]
add esp, 0x14
cmp byte [0x4a918a], bl
je 0x4175ce
lea ecx, [esp + 0x43c]
push ecx
call dword [sym.imp.KERNEL32.dll_OutputDebugStringA]
pop edi
pop esi
pop ebp
pop ebx
add esp, 0xc2c
ret