Function at 0x401af0
Capabilities:
Check if file exists
Get file attributes

Disassembly:
sub esp, 0x30
mov eax, dword [0x42f140]
xor eax, esp
mov dword [esp + 0x2c], eax
push ebx
mov ebx, dword [sym.imp.KERNEL32.dll_GetFileAttributesA]
push esi
push edi
push str.utils.dll
call ebx
cmp eax, 0xffffffff
je 0x401b37
mov eax, dword [0x430284]
cmp dword [eax], 0
jne 0x401b37
push str.utils.dll
push str.freedom_utils.cs
call fcn.00402d30
add esp, 8
test eax, eax
je 0x401bc7
push 0
push str.freedom_utils.cs
push str._out:utils.dll
push str._target:library
push str._optimize
push str._nologo
push 0x425c54
call fcn.00402590
mov esi, edx
mov edi, eax
push esi
push edi
push 0x425788
call fcn.00402440
push eax
push str.CMD:__s
call fcn.004010a0
push 0
push 0
push esi
push edi
call fcn.00402310
add esp, 0x40
push eax
call fcn.004035c0
add esp, 4
push 1
push 0
push 0
push str.utils_dll
push 0
push str.baked_utils_dll.h
push str.include
call fcn.00402590
push edx
push eax
push 0x4257d8
call fcn.00402440
add esp, 0x18
push eax
push str.utils.dll
call fcn.004017b0
add esp, 0x18
push str.freedom_injector.exe
call ebx
cmp eax, 0xffffffff
je 0x401bf3
mov eax, dword [0x430284]
cmp dword [eax], 0
jne 0x401bf3
push str.freedom_injector.exe
push str.injector.cpp
call fcn.00402d30
add esp, 8
test eax, eax
je 0x401c6d
push 0
push str._MACHINE:x86
push str._link
push str.injector.cpp
push str._Fe:freedom_injector.exe
push str._nologo
push str._EHsc
push 0x425cc4
push 0x425cc8
push str._std:clatest
push str._DUNICODE
push str._DNDEBUG
push str._DWIN32_LEAN_AND_MEAN
push 0x425d0c
call fcn.00402590
mov esi, edx
mov edi, eax
push esi
push edi
push 0x425788
call fcn.00402440
add esp, 0x44
push eax
push str.CMD:__s
call fcn.004010a0
push 0
push 0
push esi
push edi
call fcn.00402310
push eax
call fcn.004035c0
add esp, 0x1c
push 0
push str.vendor_imgui_backends_
push str.vendor_imgui_
push str.freedom_ui_
push str.freedom_features_
push str.freedom_
push str.freedom_dll_
call fcn.004016b0
add esp, 0x1c
cmp dword [0x430294], 0
je 0x401f52
push 0
call fcn.00402590
add esp, 4
mov dword [esp + 0xc], eax
mov edi, edx
mov dword [esp + 0x20], str.freedom_dll_
xor esi, esi
mov dword [esp + 0x10], edi
mov dword [esp + 0x24], str.freedom_
mov dword [esp + 0x28], str.freedom_features_
mov dword [esp + 0x2c], str.freedom_ui_
mov dword [esp + 0x30], str.vendor_imgui_
mov dword [esp + 0x34], str.vendor_imgui_backends_
mov dword [esp + 0x14], esi
push ebp
nop dword [eax]
mov esi, dword [esp + esi*4 + 0x24]
push esi
mov dword [esp + 0x24], esi
call fcn.00403180
add esp, 4
mov ebx, eax
mov dword [esp + 0x1c], ebx
call fcn.0040a6ed
test ebx, ebx
je 0x401f64
mov dword [eax], 0
nop word [eax + eax]
cmp dword [ebx + 0x144], 0
jne 0x401d40
push 0x105
push 1
call fcn.0040a974
add esp, 8
mov dword [ebx + 0x144], eax
jmp 0x401d54
lea eax, [ebx + 4]
push eax
push dword [ebx]
call dword [sym.imp.KERNEL32.dll_FindNextFileA]
test eax, eax
je 0x401e70
push 0x105
push 0
push dword [ebx + 0x144]
call fcn.004088c0
push 0x104
lea eax, [ebx + 0x30]
push eax
push dword [ebx + 0x144]
call fcn.0040a850
mov ebp, dword [ebx + 0x144]
add esp, 0x18
test ebp, ebp
je 0x401e86
mov ecx, ebp
lea edx, [ecx + 1]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x401d90
sub ecx, edx
cmp ecx, 4
jb 0x401d20
lea eax, [ebp - 4]
mov edx, str..cpp
add eax, ecx
mov cl, byte [eax]
cmp cl, byte [edx]
jne 0x401dc8
test cl, cl
je 0x401dc4
mov cl, byte [eax + 1]
cmp cl, byte [edx + 1]
jne 0x401dc8
add eax, 2
add edx, 2
test cl, cl
jne 0x401da8
xor eax, eax
jmp 0x401dcd
sbb eax, eax
or eax, 1
test eax, eax
jne 0x401d20
mov esi, ebp
lea ecx, [esi + 1]
nop word [eax + eax]
mov al, byte [esi]
inc esi
test al, al
jne 0x401de0
sub esi, ecx
je 0x401dfc
nop dword [eax + eax]
cmp byte [esi + ebp - 1], 0x2e
je 0x401e56
sub esi, 1
jne 0x401df0
mov edi, ebp
push 0
push str..obj
push edi
call fcn.00402590
push edx
push eax
push 0x4256fe
call fcn.00402440
mov esi, dword [esp + 0x2c]
mov ebx, eax
lea ebp, [esi + 1]
lea ecx, [ebp*4]
push ecx
call fcn.0040a99a
shl esi, 2
mov edi, eax
push esi
push dword [esp + 0x30]
push edi
call fcn.00408340
mov dword [esi + edi], ebx
add esp, 0x28
mov ebx, dword [esp + 0x1c]
mov dword [esp + 0x10], edi
mov edi, ebp
mov dword [esp + 0x14], edi
jmp 0x401d20
push esi
call fcn.0040a99a
push esi
mov edi, eax
push ebp
push edi
call fcn.00408340
add esp, 0x10
mov byte [edi + esi - 1], 0
jmp 0x401dfe
call dword [sym.imp.KERNEL32.dll_GetLastError]
cmp eax, 0x12
je 0x401e86
call fcn.0040a6ed
mov dword [eax], 0x28
call fcn.0040a6ed
cmp dword [eax], 0
jg 0x401f7a
push dword [ebx]
call dword [sym.imp.KERNEL32.dll_FindClose]
test eax, eax
jne 0x401ead
call fcn.0040a6ed
mov dword [eax], 0x28
jmp 0x401ec9
mov eax, dword [ebx + 0x144]
test eax, eax
je 0x401ec0
push eax
call fcn.0040a97f
add esp, 4
push ebx
call fcn.0040a97f
add esp, 4
mov esi, dword [esp + 0x18]
inc esi
mov dword [esp + 0x18], esi
cmp esi, 6
jb 0x401cf0
mov eax, dword [0x430280]
push 0
push str._MACHINE:x86
cmp dword [eax], 0
je 0x401ef3
push str._DEBUG
jmp 0x401ef8
push str._LTCG
push str._OUT:freedom.dll
push str._DLL
push edi
push dword [esp + 0x28]
push 0x425788
call fcn.00402440
add esp, 0xc
push eax
push str.LINK
call fcn.00402590
mov esi, edx
mov edi, eax
push esi
push edi
push 0x425788
call fcn.00402440
push eax
push str.CMD:__s
call fcn.004010a0
push 0
push 0
push esi
push edi
call fcn.00402310
add esp, 0x40
push eax
call fcn.004035c0
add esp, 4
pop ebp
mov ecx, dword [esp + 0x38]
pop edi
pop esi
pop ebx
xor ecx, esp
call fcn.00407506
add esp, 0x30
ret
push dword [eax]
call fcn.0040a83a
add esp, 4
push eax
push esi
push str.could_not_open_directory__s:__s
call fcn.004010f0
call fcn.0040a6ed
push dword [eax]
call fcn.0040a83a
add esp, 4
push eax
push dword [esp + 0x24]
push str.could_not_read_directory__s:__s
call fcn.004010f0
int3