Function at 0x4010b0
Capabilities:
Check os version
Create process on windows
Get file attributes
Get file size
Read file on windows
Set file attributes
Write and execute a file
Write file on windows

Disassembly:
push ebp
mov ebp, esp
sub esp, 0xb60
mov eax, dword [0x43c400]
xor eax, ebp
mov dword [ebp - 4], eax
push 0x94
push 0
lea eax, [ebp - 0x1a8]
push eax
call fcn.0041f300
add esp, 0xc
mov dword [ebp - 0x1a8], 0x94
lea ecx, [ebp - 0x1a8]
push ecx
call dword [sym.imp.KERNEL32.dll_GetVersionExA]
lea edx, [ebp - 0x110]
push edx
call fcn.00405e20
add esp, 4
test eax, eax
jne 0x40111f
push 0x10
push 0x4323e0
push 0x4323e8
push 0
call dword [sym.imp.USER32.dll_MessageBoxA]
or eax, 0xffffffff
jmp 0x40175e
cmp dword [ebp - 0x1a4], 6
jb 0x401136
call dword [sym.imp.SHELL32.dll_IsUserAnAdmin]
test eax, eax
je 0x4013bf
push 0x432404
lea eax, [ebp - 0x110]
push eax
push 0x432410
lea ecx, [ebp - 0x2b0]
push ecx
call fcn.0041f20c
add esp, 0x10
push 0x3e6
lea edx, [ebp - 0x2b0]
push edx
mov eax, dword [ebp + 8]
push eax
call fcn.00409220
add esp, 0xc
test eax, eax
jne 0x4011d3
lea ecx, [ebp - 0x4d4]
call fcn.004018e0
call dword [sym.imp.KERNEL32.dll_GetLastError]
push eax
push str.Cannot_Load_Dll____d_
lea ecx, [ebp - 0x4d4]
push ecx
call fcn.00401e00
add esp, 0xc
push 0x10
push 0x432430
lea ecx, [ebp - 0x4d4]
call fcn.0040d820
push eax
push 0
call dword [sym.imp.USER32.dll_MessageBoxA]
mov dword [ebp - 0xb54], 0xffffffff
lea ecx, [ebp - 0x4d4]
call fcn.00401900
mov eax, dword [ebp - 0xb54]
jmp 0x40175e
cmp dword [ebp - 0x1a4], 5
jne 0x40121d
cmp dword [ebp - 0x1a0], 0
jne 0x40121d
push 0x432438
lea edx, [ebp - 0x110]
push edx
push 0x432444
lea eax, [ebp - 0x4d0]
push eax
call fcn.0041f20c
add esp, 0x10
push 0x3e3
lea ecx, [ebp - 0x4d0]
push ecx
mov edx, dword [ebp + 8]
push edx
call fcn.00409220
add esp, 0xc
push 0x43244c
lea eax, [ebp - 0x110]
push eax
push 0x43245c
lea ecx, [ebp - 0x4d0]
push ecx
call fcn.0041f20c
add esp, 0x10
push 0x3e5
lea edx, [ebp - 0x4d0]
push edx
mov eax, dword [ebp + 8]
push eax
call fcn.00409220
add esp, 0xc
push 0x432464
lea ecx, [ebp - 0x110]
push ecx
push 0x432470
lea edx, [ebp - 0x4d0]
push edx
call fcn.0041f20c
add esp, 0x10
push 0x3e4
lea eax, [ebp - 0x4d0]
push eax
mov ecx, dword [ebp + 8]
push ecx
call fcn.00409220
add esp, 0xc
cmp dword [0x43c130], 0
jbe 0x4012f0
mov edx, dword [0x43c130]
push edx
lea eax, [ebp - 0x110]
push eax
push str._s_d.dat
lea ecx, [ebp - 0x3c0]
push ecx
call fcn.0041f20c
add esp, 0x10
push 0x3e7
lea edx, [ebp - 0x3c0]
push edx
mov eax, dword [ebp + 8]
push eax
call fcn.00409220
add esp, 0xc
test eax, eax
jne 0x4012f0
push 0x10
push 0x432484
push str.Cannot_Load_Game_Data_
push 0
call dword [sym.imp.USER32.dll_MessageBoxA]
or eax, 0xffffffff
jmp 0x40175e
lea ecx, [ebp - 0x2b0]
push ecx
call dword [sym.imp.KERNEL32.dll_LoadLibraryA]
mov dword [ebp - 0x3c8], eax
cmp dword [ebp - 0x3c8], 0
jne 0x401334
call dword [sym.imp.KERNEL32.dll_GetLastError]
mov dword [ebp - 0x4d8], eax
mov edx, dword [ebp - 0x4d8]
push edx
push 0x4324a4
call section..text
add esp, 8
or eax, 0xffffffff
jmp 0x40175e
push 0x4324bc
mov eax, dword [ebp - 0x3c8]
push eax
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
mov dword [ebp - 0x3c4], eax
cmp dword [ebp - 0x3c4], 0
jne 0x40137d
call dword [sym.imp.KERNEL32.dll_GetLastError]
mov dword [ebp - 0x4dc], eax
mov ecx, dword [ebp - 0x4dc]
push ecx
push 0x4324cc
call section..text
add esp, 8
or eax, 0xffffffff
jmp 0x40175e
push str.1234567890_mom_ABCDEFGHIJ
mov edx, dword [ebp + 0x10]
push edx
mov eax, dword [ebp + 8]
push eax
call dword [ebp - 0x3c4]
add esp, 0xc
mov dword [ebp - 0x2b4], eax
mov ecx, dword [ebp - 0x3c8]
push ecx
call dword [sym.imp.KERNEL32.dll_FreeLibrary]
mov eax, dword [ebp - 0x2b4]
neg eax
sbb eax, eax
neg eax
sub eax, 1
jmp 0x40175e
cmp dword [0x43c130], 0
jbe 0x4013ed
cmp dword [0x43c124], 0
jne 0x4013ed
push 0x10
push 0x4324e4
push str.Invalid_offset_
push 0
call dword [sym.imp.USER32.dll_MessageBoxA]
or eax, 0xffffffff
jmp 0x40175e
push str._sfxpath
mov edx, dword [ebp + 0x10]
push edx
call fcn.0040c9f0
add esp, 8
test eax, eax
jbe 0x40141e
push 0x10
push 0x432508
push str.You_need_Admin_rights_to_continue_
push 0
call dword [sym.imp.USER32.dll_MessageBoxA]
or eax, 0xffffffff
jmp 0x40175e
mov eax, dword [0x43c124]
mov dword [ebp - 0xb48], eax
push 0x104
lea ecx, [ebp - 0x630]
push ecx
push 0
call dword [sym.imp.KERNEL32.dll_GetModuleFileNameA]
push 0x432534
lea edx, [ebp - 0x110]
push edx
push 0x432544
lea eax, [ebp - 0x740]
push eax
call fcn.0041f20c
add esp, 0x10
lea ecx, [ebp - 0x740]
push ecx
call fcn.00406020
add esp, 4
test eax, eax
je 0x4014a6
lea edx, [ebp - 0x740]
push edx
call dword [sym.imp.KERNEL32.dll_GetFileAttributesA]
and eax, 1
jne 0x401494
lea eax, [ebp - 0x740]
push eax
call dword [sym.imp.KERNEL32.dll_GetFileAttributesA]
and eax, 4
je 0x4014a6
push 0x80
lea ecx, [ebp - 0x740]
push ecx
call dword [sym.imp.KERNEL32.dll_SetFileAttributesA]
push 0
push 0x80
push 3
call fcn.00401920
mov ecx, eax
call fcn.004030a0
push eax
push 1
push SysReAllocString
lea edx, [ebp - 0x630]
push edx
call dword [sym.imp.KERNEL32.dll_CreateFileA]
mov dword [ebp - 0xb50], eax
push 0
push 0x80
push 2
call fcn.00401920
mov ecx, eax
call fcn.004030a0
push eax
push 1
push 0x40000000
lea eax, [ebp - 0x740]
push eax
call dword [sym.imp.KERNEL32.dll_CreateFileA]
mov dword [ebp - 0xb4c], eax
cmp dword [ebp - 0xb50], 0xffffffff
je 0x401518
cmp dword [ebp - 0xb4c], 0xffffffff
jne 0x401534
push 0x10
push 0x43254c
push str.Cannot_make_temporary_file_
push 0
call dword [sym.imp.USER32.dll_MessageBoxA]
or eax, 0xffffffff
jmp 0x40175e
cmp dword [ebp - 0xb48], 0
jne 0x401552
push 0
mov ecx, dword [ebp - 0xb50]
push ecx
call dword [sym.imp.KERNEL32.dll_GetFileSize]
mov dword [ebp - 0xb48], eax
lea ecx, [ebp - 0xb55]
call fcn.0040e930
push eax
lea ecx, [ebp - 0x4ec]
call fcn.004019e0
lea ecx, [ebp - 0xb55]
call fcn.00401ae0
mov byte [ebp - 0xb56], 0
lea edx, [ebp - 0xb56]
push edx
mov eax, dword [ebp - 0xb48]
push eax
lea ecx, [ebp - 0x4ec]
call fcn.00401a80
mov dword [ebp - 0x634], 0
mov dword [ebp - 0xb44], 0
push 0
lea ecx, [ebp - 0x634]
push ecx
mov edx, dword [ebp - 0xb48]
push edx
push 0
lea ecx, [ebp - 0x4ec]
call fcn.004019c0
push eax
mov eax, dword [ebp - 0xb50]
push eax
call dword [sym.imp.KERNEL32.dll_ReadFile]
test eax, eax
je 0x401622
mov ecx, dword [ebp - 0x634]
cmp ecx, dword [ebp - 0xb48]
jb 0x401622
push 0
lea edx, [ebp - 0xb44]
push edx
mov eax, dword [ebp - 0xb48]
push eax
push 0
lea ecx, [ebp - 0x4ec]
call fcn.004019c0
push eax
mov ecx, dword [ebp - 0xb4c]
push ecx
call dword [sym.imp.KERNEL32.dll_WriteFile]
test eax, eax
je 0x401622
mov edx, dword [ebp - 0xb44]
cmp edx, dword [ebp - 0xb48]
jae 0x401656
push 0x10
push 0x432570
push str.Cannot_copy_temporary_file_
push 0
call dword [sym.imp.USER32.dll_MessageBoxA]
mov dword [ebp - 0xb5c], 0xffffffff
lea ecx, [ebp - 0x4ec]
call fcn.00401a00
mov eax, dword [ebp - 0xb5c]
jmp 0x40175e
mov eax, dword [ebp - 0xb50]
push eax
call dword [sym.imp.KERNEL32.dll_CloseHandle]
mov ecx, dword [ebp - 0xb4c]
push ecx
call dword [sym.imp.KERNEL32.dll_CloseHandle]
mov dword [ebp - 0x4e0], 0xffffffff
push 0x3c
push 0
lea edx, [ebp - 0x528]
push edx
call fcn.0041f300
add esp, 0xc
mov eax, dword [ebp + 0x10]
push eax
lea ecx, [ebp - 0x630]
push ecx
push str._sfxpath:_s__s
push 0x400
lea edx, [ebp - 0xb40]
push edx
call fcn.00402c70
add esp, 0x14
mov dword [ebp - 0x528], 0x3c
mov dword [ebp - 0x520], 0
mov dword [ebp - 0x524], 0x540
mov dword [ebp - 0x51c], 0x4325a8
lea eax, [ebp - 0x740]
mov dword [ebp - 0x518], eax
lea ecx, [ebp - 0xb40]
mov dword [ebp - 0x514], ecx
mov dword [ebp - 0x50c], 1
lea edx, [ebp - 0x528]
push edx
call dword [sym.imp.SHELL32.dll_ShellExecuteExA]
test eax, eax
je 0x40173c
cmp dword [ebp - 0x4f0], 0
je 0x40173c
push 0xffffffffffffffff
mov eax, dword [ebp - 0x4f0]
push eax
call dword [sym.imp.KERNEL32.dll_WaitForSingleObject]
test eax, eax
jne 0x40173c
lea ecx, [ebp - 0x4e0]
push ecx
mov edx, dword [ebp - 0x4f0]
push edx
call dword [sym.imp.KERNEL32.dll_GetExitCodeProcess]
mov eax, dword [ebp - 0x4e0]
mov dword [ebp - 0xb60], eax
lea ecx, [ebp - 0x4ec]
call fcn.00401a00
mov eax, dword [ebp - 0xb60]
jmp 0x40175e
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.0041f2bc
mov esp, ebp
pop ebp
ret 0x10