Function at 0x1013a870
Capabilities:
Check if file exists
Get common file path
Get file attributes
Get memory capacity

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
push 0xffffffffffffffff
push 0x10175042
mov eax, dword fs:[0]
push eax
sub esp, 0x528
mov eax, dword [0x10206870]
xor eax, esp
mov dword [esp + 0x520], eax
push ebx
push esi
push edi
mov eax, dword [0x10206870]
xor eax, esp
push eax
lea eax, [esp + 0x538]
mov dword fs:[0], eax
mov eax, dword [ebp + 8]
mov edx, dword [ebp + 0x14]
mov edi, ecx
mov ecx, dword [ebp + 0xc]
mov dword [esp + 0x20], eax
mov eax, dword [ebp + 0x18]
push 0x101eee60
mov dword [esp + 0x2c], ecx
mov dword [esp + 0x18], edx
mov dword [esp + 0x14], eax
call dword [sym.imp.KERNEL32.dll_LoadLibraryA]
test eax, eax
je 0x1013a8f4
push 0x101eee70
push eax
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
test eax, eax
je 0x1013a8f4
push 0x8001
call eax
mov ecx, dword [esp + 0x14]
mov edx, dword [esp + 0x10]
push 0x9c
lea eax, [esp + 0x90]
push 0
mov dword [ecx], 0
push eax
mov dword [edx], 0
mov dword [esp + 0x30], 0
call fcn.1003f7d0
mov esi, dword [sym.imp.KERNEL32.dll_GetVersionExA]
add esp, 0xc
lea ecx, [esp + 0x8c]
push ecx
mov dword [esp + 0x90], 0x9c
call esi
mov ebx, eax
test ebx, ebx
jne 0x1013a975
push 0x94
push eax
lea edx, [esp + 0x94]
push edx
call fcn.1003f7d0
add esp, 0xc
lea eax, [esp + 0x8c]
push eax
mov dword [esp + 0x90], 0x94
call esi
mov ebx, eax
push 0xd60
call fcn.1003ddbb
add esp, 4
mov dword [esp + 0x1c], eax
mov dword [esp + 0x540], 0
test eax, eax
je 0x1013a99e
mov ecx, eax
call fcn.10018d4b
jmp 0x1013a9a0
xor eax, eax
mov dword [esp + 0x540], 0xffffffff
mov esi, dword [sym.imp.KERNEL32.dll_GetCurrentDirectoryA]
test ebx, ebx
mov ebx, dword [sym.imp.KERNEL32.dll_GetLastError]
mov dword [edi + 8], eax
je 0x1013aa52
mov eax, dword [esp + 0x9c]
sub eax, 1
je 0x1013aa39
push 0x200
lea ecx, [esp + 0x330]
push ecx
call dword [sym.imp.KERNEL32.dll_GetSystemWindowsDirectoryA]
lea edx, [esp + 0x32c]
test eax, eax
jbe 0x1013aa2b
push str._temp
push 0x200
push edx
call fcn.1013b3b0
add esp, 0xc
lea eax, [esp + 0x32c]
push eax
call dword [sym.imp.KERNEL32.dll_GetFileAttributesA]
cmp eax, 0xffffffff
je 0x1013aa16
test al, 0x10
jne 0x1013aa52
lea ecx, [esp + 0x32c]
push ecx
push 0x200
call dword [sym.imp.KERNEL32.dll_GetTempPathA]
jmp 0x1013aa52
push edx
push 0x200
call dword [sym.imp.KERNEL32.dll_GetTempPathA]
jmp 0x1013aa4c
lea eax, [esp + 0x32c]
push eax
push 0x200
call esi
test eax, eax
jne 0x1013aa52
call ebx
mov dword [esp + 0x18], eax
mov eax, dword [esp + 0x20]
test eax, eax
je 0x1013aab7
cmp byte [eax], 0
je 0x1013aab7
mov ecx, dword [esp + 0x28]
test ecx, ecx
je 0x1013aa88
push ecx
push eax
push str._s_s
lea ecx, [esp + 0x138]
push 0x200
push ecx
call fcn.1003de20
add esp, 0x14
jmp 0x1013ab1b
push eax
lea edx, [esp + 0x130]
push 0x200
push edx
call fcn.1003dc98
add esp, 0xc
push 0x101eee94
lea eax, [esp + 0x130]
push 0x200
push eax
call fcn.1003e21c
jmp 0x1013ab18
lea ecx, [esp + 0x12c]
push ecx
push 0x200
call esi
mov esi, dword [esp + 0x28]
mov dword [esp + 0x18], eax
test esi, esi
je 0x1013ab01
push 0x101eeea4
lea edx, [esp + 0x130]
push 0x200
push edx
call fcn.1003e21c
add esp, 0xc
push esi
lea eax, [esp + 0x130]
push 0x200
push eax
call fcn.1003e21c
jmp 0x1013ab18
push 0x101eeea8
lea ecx, [esp + 0x130]
push 0x200
push ecx
call fcn.1003dc98
add esp, 0xc
lea edx, [esp + 0x12c]
push edx
call dword [sym.imp.KERNEL32.dll_GetModuleHandleA]
mov ecx, dword [edi + 8]
mov dword [edi + 4], eax
lea eax, [esp + 0x12c]
push eax
call fcn.10018e76
mov ecx, dword [edi + 8]
mov ebx, dword [ebp + 0x10]
mov dword [ecx + 0xd48], 0x6a
mov edx, dword [edi + 8]
mov dword [edx + 0xd4c], 0x6b
mov eax, dword [edi + 8]
mov dword [eax + 0xd50], 0x6c
mov ecx, dword [edi + 8]
mov dword [ecx + 0xd54], 0x6d
mov edx, dword [edi + 8]
mov dword [edx + 0xd58], 0x6e
mov eax, dword [edi + 8]
mov dword [eax + 0xd5c], 0x6f
test ebx, 0x20000000
je 0x1013abb0
push 1
lea ecx, [esp + 0x1c]
push ecx
mov ecx, dword [edi + 8]
lea edx, [esp + 0x334]
push edx
call fcn.100191b8
mov dword [esp + 0x24], eax
call fcn.1013c470
cmp dword [esp + 0x24], 0
mov dword [edi + 0xc], eax
mov dword [eax + 0x14], ebx
mov eax, dword [edi + 8]
mov ecx, dword [edi + 0xc]
mov dword [ecx + 0x20], eax
jne 0x1013abdf
mov eax, dword [esp + 0x14]
mov ecx, dword [esp + 0x18]
mov edx, dword [esp + 0x10]
mov dword [eax], 2
mov dword [edx], ecx
mov esi, dword [edi + 0xc]
mov eax, dword [esi + 0xc]
push 0x2710
push eax
call dword [sym.imp.KERNEL32.dll_WaitForSingleObject]
mov dword [esp + 0x18], eax
test eax, eax
je 0x1013ac53
cmp eax, 0x80
je 0x1013ac43
cmp eax, 0xffffffff
jne 0x1013ac0b
call dword [sym.imp.KERNEL32.dll_GetLastError]
mov ecx, dword [esp + 0x14]
mov edx, dword [esp + 0x10]
mov dword [ecx], 8
mov dword [edx], eax
xor eax, eax
mov ecx, dword [esp + 0x538]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov ecx, dword [esp + 0x520]
xor ecx, esp
call fcn.1003dc89
mov esp, ebp
pop ebp
ret 0x14
mov ecx, dword [esi + 0xc]
push ecx
call dword [sym.imp.KERNEL32.dll_ReleaseMutex]
mov eax, dword [esp + 0x18]
jmp 0x1013ac0b
mov ecx, dword [edi + 8]
push 0x1388
lea edx, [esp + 0x1c]
push edx
call fcn.10018f30
test bl, 2
je 0x1013ac9b
mov eax, dword [edi + 0xc]
push eax
call fcn.1013b740
test eax, eax
je 0x1013ac9b
mov ecx, dword [edi + 0xc]
mov eax, dword [ecx + 0x5c]
mov dword [edi + 0x14], eax
test ebx, 0x1000000
je 0x1013ac9b
mov eax, dword [eax + 0x34]
dec eax
cmp eax, 1
ja 0x1013ac9b
mov edx, dword [esp + 0x14]
mov dword [edx], 4
xor eax, eax
mov dword [esp + 0x14], eax
mov dword [esp + 0x10], eax
test bl, 4
je 0x1013acc8
mov esi, dword [edi + 0xc]
call fcn.1013b890
mov ecx, dword [edi + 0xc]
lea eax, [esp + 0x10]
push eax
push ecx
lea ecx, [esp + 0x1c]
call fcn.1013cea0
test eax, eax
jne 0x1013ace9
push 0x11c
call fcn.1003ddbb
mov esi, eax
add esp, 4
test esi, esi
je 0x1013ace7
mov eax, str.Mainboard
call fcn.1006ab60
jmp 0x1013ace9
xor eax, eax
mov ecx, dword [esp + 0x14]
mov edx, dword [esp + 0x10]
mov dword [eax + 0x110], edx
mov dword [eax + 0x114], ecx
mov ecx, dword [edi + 0xc]
cmp dword [ecx + 0x74], 0
jne 0x1013ad12
mov dword [ecx + 0x74], eax
mov ecx, dword [ecx + 0x30]
push eax
call fcn.100014e0
mov esi, dword [edi + 0xc]
call fcn.1013b7e0
mov eax, ebx
and eax, 0x200
mov dword [esp + 0x20], eax
je 0x1013ad62
test ebx, 0x1000
je 0x1013ad62
push 0x504
call fcn.1003ddbb
add esp, 4
test eax, eax
je 0x1013ad4d
xor ecx, ecx
mov esi, eax
call fcn.100d2ca0
mov esi, eax
jmp 0x1013ad4f
xor esi, esi
mov edx, dword [esi]
mov eax, dword [edx + 0x10]
mov ecx, esi
call eax
mov edx, dword [esi]
mov eax, dword [edx]
push 1
mov ecx, esi
call eax
test bl, 8
je 0x1013ad7f
mov ecx, dword [edi + 0xc]
push ecx
call fcn.1013c9c0
test eax, eax
je 0x1013ad7f
mov edx, dword [edi + 0xc]
mov ecx, dword [edx + 0x3c]
call fcn.10075700
mov eax, dword [edi + 0xc]
push eax
call fcn.1013c530
mov esi, dword [esp + 0x10]
test bl, 0x10
je 0x1013ada1
mov ecx, dword [esp + 0x14]
mov edx, dword [edi + 0xc]
push ebx
push ecx
push esi
push edx
call fcn.1013c910
test ebx, 0x800
je 0x1013adbf
mov eax, ebx
and eax, 0x10000
or eax, 0x8400
push eax
mov eax, dword [edi + 0xc]
push eax
call fcn.1013c870
test bl, 0x20
je 0x1013ade0
xor eax, eax
test ebx, 0x100000
je 0x1013add3
mov eax, 0x100000
mov esi, dword [edi + 0xc]
push eax
call fcn.1013b940
mov esi, dword [esp + 0x10]
test bl, 0x40
je 0x1013ae8f
mov ecx, dword [edi + 0xc]
push esi
push ecx
call fcn.1013c790
test eax, eax
je 0x1013ae8f
push 0x1c
call fcn.1003ddbb
add esp, 4
mov dword [esp + 0x1c], eax
mov dword [esp + 0x540], 1
test eax, eax
je 0x1013ae21
mov ecx, eax
call fcn.10007bed
jmp 0x1013ae23
xor eax, eax
mov dword [esp + 0x540], 0xffffffff
mov edx, dword [edi + 0xc]
mov dword [edi + 0x18], eax
mov ecx, dword [edx + 0x48]
test ecx, ecx
je 0x1013ae63
push 0
call fcn.10080660
test eax, eax
je 0x1013ae63
mov ecx, eax
call fcn.10063e10
sub eax, 0x1000805
je 0x1013ae59
sub eax, 5
jne 0x1013ae63
mov eax, dword [edi + 0x18]
mov dword [eax + 0x14], 4
mov ecx, dword [edi + 0x18]
mov dword [ecx + 0x10], esi
mov eax, dword [edi + 0x18]
mov edx, ebx
and edx, 0x100000
or dword [eax + 4], edx
mov ecx, dword [edi + 0x18]
push 0
call fcn.10009daf
test eax, eax
je 0x1013ae8f
mov ecx, dword [edi + 0x18]
push 0
call fcn.10009db4
test ebx, 0x100
je 0x1013aec3
mov eax, 0x4000000
test ebx, 0x2000000
je 0x1013aea9
mov eax, 0x6000000
mov edx, dword [esp + 0x14]
mov ecx, ebx
and ecx, 0x40000
or eax, ecx
push eax
mov eax, dword [edi + 0xc]
push edx
push esi
push eax
call fcn.1013c6f0
cmp dword [esp + 0x20], 0
je 0x1013aedf
mov ecx, dword [edi + 0xc]
mov eax, ebx
and eax, 0x20000
or eax, 0xffff
push eax
call fcn.1013c650
test ebx, 0x400
je 0x1013af09
xor eax, eax
test ebx, 0x10000000
je 0x1013aef6
mov eax, 0x10080000
test ebx, ebx
jns 0x1013aeff
or eax, 0x80000000
mov ecx, dword [edi + 0xc]
push eax
push ecx
call fcn.1013c5b0
push 0x19
push 0xffffffffffffffff
push 0xffffffffffffffff
call fcn.1013c470
mov ecx, eax
call fcn.1013cc30
test eax, eax
jne 0x1013af62
push 0x14
call fcn.1003ddbb
add esp, 4
mov dword [esp + 0x1c], eax
mov dword [esp + 0x540], 2
test eax, eax
je 0x1013af47
mov esi, eax
call fcn.101405b0
mov esi, eax
jmp 0x1013af49
xor esi, esi
mov dword [esp + 0x540], 0xffffffff
call fcn.1013c470
mov ecx, dword [eax + 0x28]
push esi
call fcn.10001610
mov ecx, dword [edi + 8]
call fcn.10018fd5
mov edx, dword [edi + 0xc]
mov eax, dword [edx + 0xc]
push eax
call dword [sym.imp.KERNEL32.dll_ReleaseMutex]
push 0x3e8
call dword [sym.imp.KERNEL32.dll_Sleep]
push str.GlobalMemoryStatusEx
push 0x101eeedc
xor ebx, ebx
call dword [sym.imp.KERNEL32.dll_GetModuleHandleA]
push eax
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
push 0x40
lea ecx, [esp + 0x30]
push ebx
push ecx
mov esi, eax
call fcn.1003f7d0
add esp, 0xc
mov dword [esp + 0x2c], 0x40
test esi, esi
je 0x1013aff2
lea edx, [esp + 0x2c]
push edx
call esi
test eax, eax
je 0x1013aff2
mov eax, dword [esp + 0x38]
fild dword [esp + 0x38]
test eax, eax
jge 0x1013afd6
fadd qword [0x101f6c58]
mov ecx, dword [esp + 0x34]
fmul qword [0x101f6c58]
fild dword [esp + 0x34]
test ecx, ecx
jge 0x1013afee
fadd qword [0x101f6c58]
faddp st(1)
jmp 0x1013b00f
lea edx, [esp + 0x6c]
push edx
call dword [sym.imp.KERNEL32.dll_GlobalMemoryStatus]
fild dword [esp + 0x74]
mov eax, dword [esp + 0x74]
test eax, eax
jge 0x1013b00f
fadd qword [0x101f6c58]
fmul qword [0x101f7238]
fadd qword [0x101f7230]
call fcn.1003f8e0
test al, 1
je 0x1013b025
inc eax
mov ecx, dword [edi + 0x18]
test ecx, ecx
je 0x1013b055
mov edx, dword [ecx + 8]
test edx, edx
jle 0x1013b055
mov ecx, dword [ecx + 0xc]
mov edx, dword [edi + 0x18]
mov esi, dword [edx + 8]
add ecx, 0x2e0
mov edx, dword [ecx]
test edx, edx
jle 0x1013b04a
add ebx, edx
add ecx, 0x3bc
sub esi, 1
jne 0x1013b042
cmp ebx, eax
jle 0x1013b06e
mov eax, dword [edi]
mov edx, dword [eax + 0xc]
mov ecx, edi
mov dword [edi + 0x1c], ebx
call edx
mov eax, dword [esp + 0x24]
jmp 0x1013ac1d
mov dword [edi + 0x1c], eax
mov eax, dword [edi]
mov edx, dword [eax + 0xc]
mov ecx, edi
call edx
mov eax, dword [esp + 0x24]
jmp 0x1013ac1d