Function at 0x10009170
Capabilities:
Check os version
Get common file path
Read .ini file

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x7c4
push ebx
push esi
push edi
lea eax, [ebp - 0x1bc]
push 0x105
mov esi, ecx
push eax
call dword [sym.imp.KERNEL32.dll_GetWindowsDirectoryA]
push 0x10002754
lea ecx, [ebp - 0x1bc]
push 0x5c
push ecx
call dword [sym.imp.MSVCRT.dll_strchr]
add esp, 8
inc eax
push eax
call dword [sym.imp.KERNEL32.dll_lstrcpyA]
mov edx, dword [esi + 0x14]
mov edi, dword [sym.imp.KERNEL32.dll_lstrcatA]
lea eax, [ebp - 0x1bc]
push edx
push eax
call edi
lea ecx, [ebp - 0x1bc]
push 0x10002710
push ecx
call edi
push 0
lea edx, [ebp - 0x2c4]
push 0x23
push edx
push 0
call dword [sym.imp.SHELL32.dll_SHGetSpecialFolderPathA]
lea eax, [ebp - 0x2c4]
push 0x100026e0
push eax
lea ecx, [ebp - 0x2c4]
push 0x100026d8
push ecx
call dword [sym.imp.USER32.dll_wsprintfA]
add esp, 0x10
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
lea ecx, [ebp - 0xb4]
lea edx, [ebp - 0x1bc]
lea eax, [ebp - 0x2c4]
push ecx
mov dword [ebp - 0x20], edx
mov dword [ebp - 0x1c], eax
mov dword [ebp - 0xb4], 0x94
call dword [sym.imp.KERNEL32.dll_GetVersionExA]
mov eax, dword [ebp - 0xa4]
mov edi, 2
cmp eax, edi
jne 0x10009261
cmp dword [ebp - 0xb0], 5
jb 0x10009261
mov ecx, esi
call fcn.10009080
push 0x1000
call sub.MSVCRT.dll_void____cdecl_operator_new_unsigned_int_
mov ebx, eax
lea edx, [ebp - 0x20]
add esp, 4
mov dword [ebp - 0xc], ebx
mov dword [ebp - 8], edx
mov dword [ebp - 0x14], edi
jmp 0x10009281
mov ebx, dword [ebp - 0xc]
mov ecx, 0x400
xor eax, eax
mov edi, ebx
rep stosd dword es:[edi], eax
mov eax, dword [ebp - 8]
mov eax, dword [eax]
push eax
push 0x1000
push ebx
mov dword [ebp - 0x10], eax
call dword [sym.imp.KERNEL32.dll_GetPrivateProfileSectionNamesA]
mov ecx, dword [ebp - 0xc]
cmp byte [ecx], 0
je 0x10009477
push ebx
mov ecx, esi
call fcn.10009910
mov dword [ebp - 0x18], eax
mov ecx, 0x40
xor eax, eax
lea edi, [ebp - 0x3c4]
rep stosd dword es:[edi], eax
mov ecx, 0x40
lea edi, [ebp - 0x5c4]
rep stosd dword es:[edi], eax
mov ecx, 0x40
lea edi, [ebp - 0x6c4]
rep stosd dword es:[edi], eax
mov ecx, 0x40
lea edi, [ebp - 0x4c4]
rep stosd dword es:[edi], eax
mov ecx, 0x40
lea edi, [ebp - 0x7c4]
rep stosd dword es:[edi], eax
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov edx, dword [ebp - 0x10]
lea eax, [ebp - 0x3c4]
push edx
push pe_nt_image_headers32
push eax
push 0
push 0x100027d8
push ebx
call dword [sym.imp.KERNEL32.dll_GetPrivateProfileStringA]
test eax, eax
jle 0x100093cc
mov eax, dword [esi + 0x10]
xor edi, edi
test eax, eax
mov dword [ebp - 4], edi
jle 0x100093cc
mov dword [ebp - 4], edi
mov ecx, dword [ebp - 4]
mov eax, dword [esi + 0x1c]
add ecx, eax
lea edx, [ebp - 0x3c4]
push ecx
push edx
call dword [sym.imp.KERNEL32.dll_lstrcmpA]
test eax, eax
je 0x1000937c
mov ecx, dword [ebp - 4]
mov eax, dword [esi + 0x10]
inc edi
add ecx, 0x301
cmp edi, eax
mov dword [ebp - 4], ecx
jl 0x10009349
mov dword [ebp - 4], edi
jmp 0x100093cc
mov dword [ebp - 4], edi
lea edi, [edi + edi*2]
mov eax, dword [ebp - 4]
lea edx, [ebp - 0x5c4]
shl edi, 8
add edi, eax
mov eax, dword [esi + 0x1c]
lea ecx, [edi + eax + 0x200]
push ecx
push edx
call dword [sym.imp.KERNEL32.dll_lstrcpyA]
mov eax, dword [esi + 0x1c]
lea edx, [ebp - 0x6c4]
lea ecx, [edi + eax + 0x100]
push ecx
push edx
call dword [sym.imp.KERNEL32.dll_lstrcpyA]
mov eax, dword [esi + 0x1c]
mov byte [edi + eax + 0x300], 1
mov eax, dword [esi + 8]
inc eax
mov dword [esi + 8], eax
mov edi, dword [ebp - 0x10]
lea ecx, [ebp - 0x4c4]
push edi
push pe_nt_image_headers32
push ecx
push 0
push 0x100027cc
push ebx
call dword [sym.imp.KERNEL32.dll_GetPrivateProfileStringA]
push edi
lea edx, [ebp - 0x7c4]
push pe_nt_image_headers32
push edx
push 0
push 0x100027c4
push ebx
call dword [sym.imp.KERNEL32.dll_GetPrivateProfileStringA]
lea eax, [ebp - 0x7c4]
mov ecx, esi
push eax
call fcn.10009910
lea ecx, [ebp - 0x5c4]
mov edi, eax
push ecx
mov ecx, esi
call fcn.10009910
lea edx, [ebp - 0x4c4]
push edi
lea ecx, [ebp - 0x6c4]
push edx
mov edx, dword [ebp - 0x18]
push ecx
mov dword [ebp - 4], eax
push eax
lea eax, [ebp - 0x3c4]
push edx
push eax
mov ecx, esi
call fcn.100094b0
mov ecx, dword [ebp - 0x18]
push ecx
call sub.MSVCRT.dll_void___cdecl_operator_delete_void__
mov edx, dword [ebp - 4]
push edx
call sub.MSVCRT.dll_void___cdecl_operator_delete_void__
push edi
call sub.MSVCRT.dll_void___cdecl_operator_delete_void__
add esp, 0xc
push ebx
call dword [sym.imp.KERNEL32.dll_lstrlenA]
lea ebx, [ebx + eax + 1]
cmp byte [ebx], 0
jne 0x100092ad
mov ecx, dword [ebp - 8]
mov eax, dword [ebp - 0x14]
add ecx, 4
dec eax
mov dword [ebp - 8], ecx
mov dword [ebp - 0x14], eax
jne 0x1000927e
mov eax, dword [ebp - 0xc]
push eax
call sub.MSVCRT.dll_void___cdecl_operator_delete_void__
add esp, 4
mov al, 1
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret