Function at 0x408bf0
Capabilities:
Read file on windows

Disassembly:
push ebp
push edi
push esi
push ebx
mov ebx, ecx
sub esp, 0x6c
mov esi, dword [0x4d9094]
mov dword [esp + 0x28], eax
mov byte [esp + 0x23], dl
test esi, esi
je 0x408c27
mov dword [esp + 8], eax
mov eax, dword [sym.imp.msvcrt.dll__iob]
mov dword [esp + 4], str.Reading_specs_from__s_n
add eax, 0x40
mov dword [esp], eax
call fcn.004244d0
mov eax, dword [esp + 0x28]
mov dword [esp + 8], 0
mov dword [esp + 4], 0
mov dword [esp], eax
call sub.msvcrt.dll__open_1
test eax, eax
mov esi, eax
js 0x4093e7
lea eax, [esp + 0x30]
mov dword [esp + 4], eax
mov eax, dword [esp + 0x28]
mov dword [esp], eax
call dword [sym.imp.msvcrt.dll__stati64]
test eax, eax
js 0x4093e7
mov eax, dword [esp + 0x48]
add eax, 1
mov dword [esp], eax
call fcn.00452ed0
mov dword [esp], esi
mov edi, eax
mov eax, dword [esp + 0x48]
mov dword [esp + 4], edi
mov dword [esp + 8], eax
call sub.msvcrt.dll__read_1
test eax, eax
mov ebp, eax
js 0x4093e7
mov byte [edi + eax], 0
add ebp, 1
mov dword [esp], esi
call sub.msvcrt.dll__close_1
mov dword [esp], ebp
call fcn.00452ed0
test edi, edi
mov ecx, eax
mov dword [esp + 0x18], eax
je 0x4093f3
movzx eax, byte [edi]
test al, al
je 0x4093f3
mov edx, edi
jmp 0x408cde
mov byte [ecx], al
add ecx, 1
add edx, 1
je 0x408cfc
movzx eax, byte [edx]
test al, al
je 0x408cfc
cmp al, 0xd
jne 0x408ccd
cmp edi, edx
jae 0x408cec
cmp byte [edx - 1], 0xa
je 0x408cd2
cmp byte [edx + 1], 0xa
mov eax, 0xa
jne 0x408ccd
add edx, 1
jne 0x408cd7
mov byte [ecx], 0
mov dword [esp], edi
call sub.msvcrt.dll_free
mov ebp, dword [esp + 0x18]
movzx eax, bl
mov dword [esp + 0x24], eax
mov eax, ebp
call fcn.00401560
movzx edx, byte [eax]
test dl, dl
je 0x408e6f
cmp dl, 0x25
je 0x408f40
cmp dl, 0x3a
mov esi, eax
je 0x408d62
cmp dl, 0xa
je 0x408dde
mov esi, eax
jmp 0x408d4e
test dl, dl
je 0x408d59
cmp dl, 0xa
je 0x408de0
add esi, 1
movzx edx, byte [esi]
cmp dl, 0x3a
jne 0x408d41
cmp dl, 0x3a
jne 0x408de0
cmp esi, dword [esp + 0x18]
jbe 0x408d76
movzx edx, byte [esi - 1]
cmp dl, 0x20
je 0x408dc3
cmp dl, 9
je 0x408dc3
mov edx, esi
sub edx, eax
call fcn.004015c0
mov ebx, eax
lea eax, [esi + 1]
call fcn.00401560
movzx edx, byte [eax + 1]
test dl, dl
je 0x4093ca
movzx ecx, byte [eax]
mov ebp, eax
test cl, cl
jne 0x408db0
jmp 0x40905e
add ebp, 1
test dl, dl
je 0x408e00
mov ecx, edx
movzx edx, byte [ebp + 1]
cmp cl, 0xa
jne 0x408da3
test dl, dl
je 0x408e00
cmp dl, 0xa
je 0x408e00
add ebp, 1
jmp 0x408daa
mov edx, esi
sub edx, 1
cmp edx, dword [esp + 0x18]
je 0x408d78
movzx ecx, byte [edx - 1]
cmp cl, 9
je 0x408dc5
cmp cl, 0x20
jne 0x408d78
jmp 0x408dc5
mov esi, eax
mov eax, dword [0x4d9188]
sub esi, dword [esp + 0x18]
mov dword [esp + 4], str.specs_file_malformed_after__ld_characters
mov dword [esp + 8], esi
mov dword [esp], eax
call fcn.00425a80
lea esi, [esi]
mov edx, ebp
sub edx, eax
call fcn.004015c0
mov edx, eax
mov dword [esp + 0x1c], eax
movzx eax, byte [eax]
mov ecx, edx
test al, al
je 0x408e34
cmp al, 0x5c
je 0x408ea3
cmp al, 0x23
je 0x408e94
mov byte [ecx], al
movzx eax, byte [edx + 1]
add ecx, 1
add edx, 1
test al, al
jne 0x408e18
mov byte [ecx], 0
cmp byte [ebx], 0x2a
jne 0x408ec0
mov edi, str.link_command
mov esi, ebx
mov ecx, 0xe
repe cmpsb byte [esi], byte es:[edi]
jne 0x40903c
mov eax, dword [esp + 0x1c]
mov dword [str.__fsyntax_only:__c:__M:__MM:__E:__S:______linker____fno_use_linker_plugin:__fno_lto:______plugin___linker_plugin_file_______plugin_opt__lto_wrapper_______plugin_opt_fresolution_u.res_______nostdlib:__nodefaultlibs:_:pass_through_libs___link_gcc_c_sequence________fltoflto:__fcompare_debug______flto__fno_lto__flto__l__staticsharedr:_pie:_pie__fuse_ld:_fuse_ld____gzgzzlib:__compress_debug_sectionszlib__gznone:__compress_debug_sectionsnone__gzzlib_gnu:__compress_debug_sectionszlib_gnu__X__o__e__N__n__r_____s__t__u__z__Z___nostdlib:__nostartfiles:_S______staticno_pie:__L___mfwrap____link_libgcc___fvtable_verifynone:__fvtable_verifystd:____e_fvtable_verifystd_is_not_supported_in_this_configuration__fvtable_verifypreinit:____e_fvtable_verifypreinit_is_not_supported_in_this_configuration___nostdlib:__nodefaultlibs:__:sanitize_address_:_______:sanitize_thread_:_______:sanitize_leak_:__o_______fopenaccfopenmp_:gt__ftree_parallelize_loops:__1_:_t_:include_libgomp.spec___link_gomp______fcilkplus:_:include_libcilkrts.spec___link_cilkrts______fgnu_tm:_:include_libitm.spec___link_itm_______mflib____fsplit_stack:___wrappthread_create_____fprofile_arcsfprofile_generatecoverage:_lgcov___nostdlib:__nodefaultlibs:__:sanitize_address_:_static_libasan:_Bstatic__lasan__static_libasan:_Bdynamic__static_libasan:_:include_libsanitizer.spec___link_libasan______static:_ecannot_specify__static_with__fsanitizeaddress______:sanitize_thread_:_static_libtsan:_Bstatic__ltsan__static_libtsan:_Bdynamic__static_libtsan:_:include_libsanitizer.spec___link_libtsan______static:_ecannot_specify__static_with__fsanitizethread______:sanitize_undefined_:_static_libubsan:_Bstatic__lubsan__static_libubsan:_Bdynamic__static_libubsan:_:include_libsanitizer.spec___link_libubsan_______:sanitize_leak_:_static_liblsan:_Bstatic__llsan__static_liblsan:_Bdynamic__static_liblsan:_:include_libsanitizer.spec___link_liblsan________nostdlib:__nodefaultlibs:__link_ssp____link_gcc_c_sequence_______nostdlib:__nostartfiles:_E__T___n__post_link__], eax
mov eax, ebp
call fcn.00401560
movzx edx, byte [eax]
test dl, dl
jne 0x408d24
mov eax, dword [str.__fsyntax_only:__c:__M:__MM:__E:__S:______linker____fno_use_linker_plugin:__fno_lto:______plugin___linker_plugin_file_______plugin_opt__lto_wrapper_______plugin_opt_fresolution_u.res_______nostdlib:__nodefaultlibs:_:pass_through_libs___link_gcc_c_sequence________fltoflto:__fcompare_debug______flto__fno_lto__flto__l__staticsharedr:_pie:_pie__fuse_ld:_fuse_ld____gzgzzlib:__compress_debug_sectionszlib__gznone:__compress_debug_sectionsnone__gzzlib_gnu:__compress_debug_sectionszlib_gnu__X__o__e__N__n__r_____s__t__u__z__Z___nostdlib:__nostartfiles:_S______staticno_pie:__L___mfwrap____link_libgcc___fvtable_verifynone:__fvtable_verifystd:____e_fvtable_verifystd_is_not_supported_in_this_configuration__fvtable_verifypreinit:____e_fvtable_verifypreinit_is_not_supported_in_this_configuration___nostdlib:__nodefaultlibs:__:sanitize_address_:_______:sanitize_thread_:_______:sanitize_leak_:__o_______fopenaccfopenmp_:gt__ftree_parallelize_loops:__1_:_t_:include_libgomp.spec___link_gomp______fcilkplus:_:include_libcilkrts.spec___link_cilkrts______fgnu_tm:_:include_libitm.spec___link_itm_______mflib____fsplit_stack:___wrappthread_create_____fprofile_arcsfprofile_generatecoverage:_lgcov___nostdlib:__nodefaultlibs:__:sanitize_address_:_static_libasan:_Bstatic__lasan__static_libasan:_Bdynamic__static_libasan:_:include_libsanitizer.spec___link_libasan______static:_ecannot_specify__static_with__fsanitizeaddress______:sanitize_thread_:_static_libtsan:_Bstatic__ltsan__static_libtsan:_Bdynamic__static_libtsan:_:include_libsanitizer.spec___link_libtsan______static:_ecannot_specify__static_with__fsanitizethread______:sanitize_undefined_:_static_libubsan:_Bstatic__lubsan__static_libubsan:_Bdynamic__static_libubsan:_:include_libsanitizer.spec___link_libubsan_______:sanitize_leak_:_static_liblsan:_Bstatic__llsan__static_liblsan:_Bdynamic__static_liblsan:_:include_libsanitizer.spec___link_liblsan________nostdlib:__nodefaultlibs:__link_ssp____link_gcc_c_sequence_______nostdlib:__nostartfiles:_E__T___n__post_link__]
test eax, eax
je 0x4093b5
mov eax, dword [esp + 0x18]
mov dword [esp], eax
call sub.msvcrt.dll_free
add esp, 0x6c
pop ebx
pop esi
pop edi
pop ebp
ret
test al, al
je 0x408e14
add edx, 1
movzx eax, byte [edx]
cmp al, 0xa
jne 0x408e90
jmp 0x408e14
cmp byte [edx + 1], 0xa
jne 0x408e24
movzx eax, byte [edx + 2]
add edx, 2
jmp 0x408e14
mov eax, dword [0x4d7148]
lea eax, [eax + eax*4 + 0xa]
shl eax, 2
mov dword [esp + 4], eax
mov eax, dword [0x4d714c]
mov dword [esp], eax
call fcn.00452f50
mov edx, dword [0x4d7148]
mov edi, dword [esp + 0x1c]
lea ecx, [edx + edx*4]
add edx, 1
shl ecx, 2
lea esi, [eax + ecx]
mov dword [0x4d714c], eax
lea eax, [eax + ecx + 0x14]
mov dword [esi], ebx
mov dword [esi + 4], edi
mov dword [eax], 0
mov dword [eax + 4], 0
mov dword [eax + 8], 0
mov dword [eax + 0xc], 0
mov dword [eax + 0x10], 0
movzx eax, byte [ebx]
mov dword [0x4d7148], edx
test al, al
je 0x408e54
jmp 0x408d12
cmp byte [esp + 0x23], 0
jne 0x408d3d
mov ebx, eax
lea esi, [esi]
jmp 0x408f56
test dl, dl
je 0x408f61
add ebx, 1
movzx edx, byte [ebx]
cmp dl, 0xa
jne 0x408f52
mov edi, 0x48ac2f
mov ecx, 8
mov esi, eax
repe cmpsb byte [esi], byte es:[edi]
lea ebp, [ebx + 1]
jne 0x408f8a
movzx edx, byte [eax + 8]
cmp dl, 0x20
je 0x4091b4
cmp dl, 9
je 0x4091b4
mov edi, str._include_noerr
mov esi, eax
mov ecx, 0xe
repe cmpsb byte [esi], byte es:[edi]
jne 0x408fb0
movzx edx, byte [eax + 0xe]
cmp dl, 0x20
je 0x409217
cmp dl, 9
je 0x409217
mov edi, str._rename
mov ecx, 7
mov esi, eax
repe cmpsb byte [esi], byte es:[edi]
jne 0x4093fc
movzx edx, byte [eax + 7]
cmp dl, 0x20
je 0x408fd6
cmp dl, 9
jne 0x4093fc
lea edi, [eax + 8]
movzx eax, byte [eax + 8]
cmp al, 9
jne 0x408feb
add edi, 1
movzx eax, byte [edi]
cmp al, 9
je 0x408fe1
cmp al, 0x20
je 0x408fe1
test byte [eax + eax + 0x4d0720], 0x88
je 0x409365
movzx edx, byte [edi]
test dl, dl
je 0x409324
movzx ecx, dl
mov eax, edi
test byte [ecx + ecx + 0x4d0720], 0x40
je 0x40902d
jmp 0x409065
movzx ecx, dl
test byte [ecx + ecx + 0x4d0720], 0x40
jne 0x409065
add eax, 1
movzx edx, byte [eax]
test dl, dl
jne 0x409020
jmp 0x409326
mov edi, dword [esp + 0x1c]
lea eax, [ebx + 1]
mov ecx, dword [esp + 0x24]
mov edx, edi
call fcn.004020c0
mov dword [esp], edi
call sub.msvcrt.dll_free
movzx eax, byte [ebx]
jmp 0x408f2c
xor edx, edx
jmp 0x408e04
cmp dl, 9
jne 0x4093a7
mov edx, eax
lea esi, [eax + 1]
sub edx, edi
mov byte [eax], 0
movzx eax, byte [eax + 1]
cmp al, 0x20
jne 0x4092f1
add esi, 1
movzx eax, byte [esi]
cmp al, 9
je 0x409084
cmp al, 0x20
je 0x409084
test byte [eax + eax + 0x4d0720], 0x88
je 0x409307
movzx ecx, byte [esi]
mov eax, esi
test cl, cl
jne 0x4090ba
jmp 0x4090c4
add eax, 1
movzx ecx, byte [eax]
test cl, cl
je 0x4090c4
test byte [ecx + ecx + 0x4d0720], 0x40
je 0x4090b0
cmp ebx, eax
jne 0x409326
mov ecx, dword [0x4d711c]
mov byte [ebx], 0
test ecx, ecx
je 0x40919b
mov dword [esp + 0x1c], esi
mov ebx, edx
mov esi, ecx
mov dword [esp + 0x2c], ecx
jmp 0x4090fb
mov esi, dword [esi + 0xc]
test esi, esi
je 0x40919b
cmp dword [esi + 0x10], ebx
jne 0x4090f0
mov dword [esp + 4], edi
mov eax, dword [esi]
mov dword [esp], eax
call sub.msvcrt.dll_strcmp
test eax, eax
jne 0x4090f0
mov ebx, esi
mov esi, dword [esp + 0x1c]
mov ecx, dword [esp + 0x2c]
mov dword [esp], edi
mov dword [esp + 4], esi
mov dword [esp + 0x1c], ecx
call sub.msvcrt.dll_strcmp
mov ecx, dword [esp + 0x1c]
test eax, eax
je 0x408d12
mov dword [esp + 0x1c], ebx
mov ebx, ecx
nop
mov dword [esp + 4], esi
mov eax, dword [ebx]
mov dword [esp], eax
call sub.msvcrt.dll_strcmp
test eax, eax
je 0x409382
mov ebx, dword [ebx + 0xc]
test ebx, ebx
jne 0x409140
mov edx, dword [0x4d9094]
mov ebx, dword [esp + 0x1c]
test edx, edx
jne 0x4092aa
mov eax, dword [ebx + 8]
mov ecx, dword [esp + 0x24]
mov edx, dword [eax]
mov eax, esi
call fcn.004020c0
cmp byte [ebx + 0x15], 0
jne 0x409298
mov eax, dword [ebx + 8]
mov dword [eax], 0x489040
mov byte [ebx + 0x15], 0
jmp 0x408d12
mov eax, dword [0x4d9188]
mov dword [esp + 8], edi
mov dword [esp + 4], str.specs__s_spec_was_not_found_to_be_renamed
mov dword [esp], eax
call fcn.00425a80
lea edx, [eax + 9]
movzx eax, byte [eax + 9]
cmp al, 0x20
jne 0x409350
add edx, 1
movzx eax, byte [edx]
cmp al, 9
je 0x4091c3
cmp al, 0x20
je 0x4091c3
cmp al, 0x3c
lea esi, [edx + 1]
jne 0x4092cf
cmp byte [ebx - 1], 0x3e
jne 0x4092cf
mov byte [ebx - 1], 0
mov ecx, 4
mov edx, esi
mov dword [esp], 1
mov eax, 0x483508
call fcn.004038d0
test eax, eax
cmove eax, esi
mov ecx, dword [esp + 0x24]
xor edx, edx
call fcn.00408bf0
jmp 0x408d12
lea edx, [eax + 0xf]
movzx eax, byte [eax + 0xf]
cmp al, 0x20
jne 0x409343
add edx, 1
movzx eax, byte [edx]
cmp al, 9
je 0x409226
cmp al, 0x20
je 0x409226
cmp al, 0x3c
lea esi, [edx + 1]
jne 0x4092cf
cmp byte [ebx - 1], 0x3e
jne 0x4092cf
mov byte [ebx - 1], 0
mov ecx, 4
mov edx, esi
mov dword [esp], 1
mov eax, 0x483508
call fcn.004038d0
test eax, eax
jne 0x409207
mov ecx, dword [0x4d9094]
test ecx, ecx
je 0x408d12
mov eax, dword [sym.imp.msvcrt.dll__iob]
mov dword [esp + 8], esi
mov dword [esp + 4], str.could_not_find_specs_file__s_n
add eax, 0x40
mov dword [esp], eax
call fcn.004244d0
jmp 0x408d12
mov eax, dword [ebx + 8]
mov eax, dword [eax]
mov dword [esp], eax
call sub.msvcrt.dll_free
jmp 0x409189
mov eax, dword [sym.imp.msvcrt.dll__iob]
mov dword [esp + 0xc], esi
mov dword [esp + 8], edi
mov dword [esp + 4], str.rename_spec__s_to__s_n
add eax, 0x40
mov dword [esp], eax
call fcn.004244d0
jmp 0x40916f
mov eax, esi
sub eax, dword [esp + 0x18]
mov dword [esp + 4], str.specs___include_syntax_malformed_after__ld_characters
add eax, 1
mov dword [esp + 8], eax
mov eax, dword [0x4d9188]
mov dword [esp], eax
call fcn.00425a80
cmp al, 9
je 0x409084
test byte [eax + eax + 0x4d0720], 0x88
jne 0x4090a0
mov eax, dword [0x4d9188]
sub esi, dword [esp + 0x18]
mov dword [esp + 4], str.specs___rename_syntax_malformed_after__ld_characters
mov dword [esp + 8], esi
mov dword [esp], eax
call fcn.00425a80
mov eax, edi
sub eax, dword [esp + 0x18]
mov dword [esp + 4], str.specs___rename_syntax_malformed_after__ld_characters
mov dword [esp + 8], eax
mov eax, dword [0x4d9188]
mov dword [esp], eax
call fcn.00425a80
cmp al, 9
je 0x409226
jmp 0x409234
cmp al, 9
je 0x4091c3
nop
lea esi, [esi]
jmp 0x4091d1
mov eax, dword [0x4d9188]
sub edi, dword [esp + 0x18]
mov dword [esp + 4], str.specs___rename_syntax_malformed_after__ld_characters
mov dword [esp + 8], edi
mov dword [esp], eax
call fcn.00425a80
mov eax, dword [esp + 0x28]
mov dword [esp + 0x10], esi
mov dword [esp + 0xc], edi
mov dword [esp + 4], str._s:_attempt_to_rename_spec__qs_to_already_defined_spec__qs
mov dword [esp + 8], eax
mov eax, dword [0x4d9188]
mov dword [esp], eax
call fcn.00425a80
cmp dl, 0x20
je 0x40906e
jmp 0x409326
mov eax, dword [0x4d9188]
mov dword [esp + 4], str.spec_file_has_no_spec_for_linking
mov dword [esp], eax
call fcn.00425a80
sub eax, dword [esp + 0x18]
mov dword [esp + 4], str.specs_file_malformed_after__ld_characters
mov dword [esp + 8], eax
mov eax, dword [0x4d9188]
mov dword [esp], eax
call fcn.00425a80
mov eax, dword [esp + 0x28]
mov dword [esp], eax
call fcn.00408bc0
mov ecx, dword [esp + 0x18]
jmp 0x408cfc
sub eax, dword [esp + 0x18]
mov dword [esp + 4], str.specs_unknown____command_after__ld_characters
mov dword [esp + 8], eax
mov eax, dword [0x4d9188]
mov dword [esp], eax
call fcn.00425a80
lea esi, [esi]
push ebx
sub esp, 0x18
cmp dword [esp + 0x20], 1
mov ebx, dword [esp + 0x24]
jne 0x409472
mov edx, dword [ebx]
mov ecx, 4
mov eax, 0x483508
mov dword [esp], 1
call fcn.004038d0
test eax, eax
je 0x409460
xor ecx, ecx
xor edx, edx
call fcn.00408bf0
add esp, 0x18
xor eax, eax
pop ebx
ret
mov eax, dword [ebx]
xor ecx, ecx
xor edx, edx
call fcn.00408bf0
add esp, 0x18
xor eax, eax
pop ebx
ret
mov dword [esp + 8], str.include_spec_function
mov dword [esp + 4], 0x2541
mov dword [esp], str..._.._gcc_gcc_gcc.c
call fcn.00424560
nop
push ebp
mov ebp, ecx
push edi
push esi
mov esi, eax
push ebx
sub esp, 0x3c
mov ecx, dword [esp + 0x50]
test ecx, ecx
jne 0x409544
mov eax, dword [esi]
cmp dword [esp + 0x54], 1
mov dword [esp + 8], 0
mov dword [esp], 2
mov dword [esp + 4], eax
sbb ebx, ebx
mov dword [esp + 0x1c], edx
and ebx, 0xfffffd00
call fcn.0045b460
add ebx, 0x303
mov edx, dword [esp + 0x1c]
test eax, eax
mov edi, eax
je 0x4095c5
mov eax, dword [esi]
lea ecx, [esp + 0x2c]
add esi, 4
mov dword [esp + 4], ebx
mov dword [esp + 0x18], ecx
mov dword [esp + 0x14], ebp
mov dword [esp + 0x10], edx
mov dword [esp + 0xc], esi
mov dword [esp + 8], eax
mov dword [esp], edi
call fcn.0045bd20
test eax, eax
mov ebx, eax
je 0x409580
mov eax, dword [esp + 0x2c]
test eax, eax
jne 0x409530
mov eax, dword [0x4d9188]
mov dword [esp + 4], ebx
mov dword [esp], eax
call fcn.00425a80
nop
call dword [sym.imp.msvcrt.dll__errno]
mov edx, dword [esp + 0x2c]
mov dword [eax], edx
mov dword [esp], ebx
call fcn.00408bc0
mov dword [esp + 4], 0x489571
mov dword [esp], ebp
mov dword [esp + 0x1c], edx
call sub.msvcrt.dll_fopen
mov ebx, eax
call fcn.00401a70
mov dword [esp + 4], ebx
mov dword [esp], 0xa
call sub.msvcrt.dll_fputc
mov dword [esp], ebx
call sub.msvcrt.dll_fclose
mov edx, dword [esp + 0x1c]
jmp 0x4094a7
lea eax, [esp + 0x28]
xor ebx, ebx
mov dword [esp + 8], eax
mov dword [esp + 4], 1
mov dword [esp], edi
call fcn.0045bfe0
test eax, eax
je 0x4095b3
movzx eax, byte [esp + 0x29]
mov bl, 1
test eax, eax
je 0x4095b3
xor ebx, ebx
cmp eax, 4
sete bl
add ebx, ebx
mov dword [esp], edi
call fcn.0045c0f0
add esp, 0x3c
mov eax, ebx
pop ebx
pop esi
pop edi
pop ebp
ret
mov eax, dword [0x4d9188]
mov dword [esp + 4], str.pex_init_failed:__m
mov dword [esp], eax
call fcn.00425a80
lea esi, [esi]