Function at 0x4087c0
Capabilities:
Read file on windows

Disassembly:
push ebp
push edi
push esi
push ebx
sub esp, 0x7c
mov ebx, dword [0x4c7ae0]
mov dword [esp + 0x34], eax
mov byte [esp + 0x32], dl
mov byte [esp + 0x33], cl
test ebx, ebx
je 0x4087f9
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.004217d0
mov eax, dword [esp + 0x34]
mov dword [esp + 8], 0
mov dword [esp + 4], 0
mov dword [esp], eax
call sub.msvcrt.dll__open
test eax, eax
mov esi, eax
js 0x408f44
lea eax, [esp + 0x4c]
mov dword [esp + 4], eax
mov eax, dword [esp + 0x34]
mov dword [esp], eax
call sub.msvcrt.dll__stat
test eax, eax
js 0x408f44
mov eax, dword [esp + 0x60]
add eax, 1
mov dword [esp], eax
call fcn.00444470
mov ebx, eax
mov eax, dword [esp + 0x60]
mov dword [esp], esi
mov dword [esp + 4], ebx
mov dword [esp + 8], eax
call sub.msvcrt.dll__read
test eax, eax
mov edi, eax
js 0x408f44
mov byte [ebx + eax], 0
add edi, 1
mov dword [esp], esi
call sub.msvcrt.dll__close
mov dword [esp], edi
call fcn.00444470
mov dword [esp + 0x28], eax
mov ecx, eax
mov eax, ebx
jmp 0x408895
mov byte [ecx], dl
add ecx, 1
add eax, 1
je 0x4088bb
movzx edx, byte [eax]
test dl, dl
je 0x4088bb
cmp dl, 0xd
jne 0x40888b
cmp ebx, eax
jae 0x4088ab
cmp byte [eax - 1], 0xa
je 0x408890
cmp byte [eax + 1], 0xa
mov edx, 0xa
jne 0x40888b
add eax, 1
jne 0x408895
mov byte [ecx], 0
mov dword [esp], ebx
call sub.msvcrt.dll_free
mov eax, dword [sym.imp.msvcrt.dll__iob]
mov ebp, dword [esp + 0x28]
add eax, 0x40
mov dword [esp + 0x3c], eax
lea esi, [esi]
lea edi, [edi]
mov eax, ebp
call fcn.00401350
movzx ecx, byte [eax]
test cl, cl
je 0x408b27
cmp cl, 0x25
jne 0x408a00
cmp byte [esp + 0x32], 0
mov edx, eax
je 0x408915
jmp 0x408a00
cmp cl, 0xa
je 0x40891f
add edx, 1
movzx ecx, byte [edx]
test cl, cl
jne 0x408910
mov edi, 0x47ba3b
mov ecx, 8
mov esi, eax
repe cmpsb byte [esi], byte es:[edi]
lea ebp, [edx + 1]
jne 0x408948
movzx ecx, byte [eax + 8]
cmp cl, 9
je 0x408d85
cmp cl, 0x20
je 0x408d85
mov edi, str._include_noerr
mov ecx, 0xe
mov esi, eax
repe cmpsb byte [esi], byte es:[edi]
jne 0x40896e
movzx ecx, byte [eax + 0xe]
cmp cl, 0x20
je 0x408de5
cmp cl, 9
je 0x408de5
mov edi, str._rename
mov ecx, 7
mov esi, eax
repe cmpsb byte [esi], byte es:[edi]
jne 0x408f50
movzx ecx, byte [eax + 7]
cmp cl, 9
je 0x408994
cmp cl, 0x20
jne 0x408f50
lea edi, [eax + 8]
movzx eax, byte [eax + 8]
cmp al, 0x20
jne 0x4089aa
nop
add edi, 1
movzx eax, byte [edi]
cmp al, 0x20
je 0x4089a0
cmp al, 9
je 0x4089a0
test byte [eax + eax + 0x4bdf60], 0x88
je 0x408ec4
movzx ecx, byte [edi]
test cl, cl
je 0x408ec4
movzx eax, cl
test byte [eax + eax + 0x4bdf60], 0x40
mov eax, edi
je 0x4089f1
jmp 0x408c22
movzx ebx, cl
test byte [ebx + ebx + 0x4bdf60], 0x40
jne 0x408c22
add eax, 1
movzx ecx, byte [eax]
test cl, cl
jne 0x4089e0
jmp 0x408ec6
cmp cl, 0xa
je 0x408bfa
cmp cl, 0x3a
mov esi, eax
je 0x408bfa
add esi, 1
movzx ecx, byte [esi]
test cl, cl
setne bl
cmp cl, 0x3a
setne dl
test bl, dl
je 0x408a2e
cmp cl, 0xa
jne 0x408a14
cmp cl, 0x3a
jne 0x408c05
cmp dword [esp + 0x28], esi
jae 0x408a4b
movzx edx, byte [esi - 1]
cmp dl, 9
je 0x408aa0
cmp dl, 0x20
je 0x408aa0
mov edx, esi
sub edx, eax
call fcn.00401550
mov ebx, eax
lea eax, [esi + 1]
call fcn.00401350
movzx edx, byte [eax + 1]
test dl, dl
je 0x408f6d
movzx ecx, byte [eax]
mov ebp, eax
test cl, cl
jne 0x408a8d
jmp 0x408b62
add ebp, 1
test dl, dl
je 0x408ac0
mov ecx, edx
movzx edx, byte [ebp + 1]
cmp cl, 0xa
jne 0x408a80
cmp dl, 0xa
je 0x408ac0
test dl, dl
je 0x408ac0
add ebp, 1
jmp 0x408a87
mov edx, esi
sub edx, 1
cmp edx, dword [esp + 0x28]
je 0x408a4d
movzx ecx, byte [edx - 1]
cmp cl, 0x20
je 0x408aa2
cmp cl, 9
jne 0x408a4d
jmp 0x408aa2
mov edx, ebp
sub edx, eax
call fcn.00401550
mov edx, eax
mov dword [esp + 0x2c], eax
movzx eax, byte [eax]
mov ecx, edx
test al, al
je 0x408af0
cmp al, 0x5c
je 0x408b50
cmp al, 0x23
je 0x408b44
mov byte [ecx], al
movzx eax, byte [edx + 1]
add ecx, 1
add edx, 1
test al, al
jne 0x408ad8
mov byte [ecx], 0
cmp byte [ebx], 0x2a
jne 0x408b70
mov edi, str.link_command
mov ecx, 0xe
mov esi, ebx
repe cmpsb byte [esi], byte es:[edi]
jne 0x408be7
mov eax, dword [esp + 0x2c]
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__pie:_pie__fuse_ld:_fuse_ld____gz:_e_gz_is_not_supported_in_this_configuration__X__o__e__N__n__r_____s__t__u__z__Z___nostdlib:__nostartfiles:_S___nostdlib:_fvtable_verifystd:__lvtv__u_vtable_map_vars_start__u_vtable_map_vars_end_____fvtable_verifypreinit:__lvtv__u_vtable_map_vars_start__u_vtable_map_vars_end______static:__L___mfwrap____link_libgcc____nostdlib:__nodefaultlibs:__:sanitize_address_:_______:sanitize_thread_:_______:sanitize_leak_:__o__________fopenaccfopenmpftree_parallelize_loops:_: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_], eax
mov eax, ebp
call fcn.00401350
movzx ecx, byte [eax]
test cl, cl
jne 0x4088f2
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__pie:_pie__fuse_ld:_fuse_ld____gz:_e_gz_is_not_supported_in_this_configuration__X__o__e__N__n__r_____s__t__u__z__Z___nostdlib:__nostartfiles:_S___nostdlib:_fvtable_verifystd:__lvtv__u_vtable_map_vars_start__u_vtable_map_vars_end_____fvtable_verifypreinit:__lvtv__u_vtable_map_vars_start__u_vtable_map_vars_end______static:__L___mfwrap____link_libgcc____nostdlib:__nodefaultlibs:__:sanitize_address_:_______:sanitize_thread_:_______:sanitize_leak_:__o__________fopenaccfopenmpftree_parallelize_loops:_: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_]
test eax, eax
je 0x408f0a
add esp, 0x7c
pop ebx
pop esi
pop edi
pop ebp
ret
cmp al, 0xa
je 0x408ad4
add edx, 1
movzx eax, byte [edx]
test al, al
jne 0x408b40
jmp 0x408ad4
cmp byte [edx + 1], 0xa
jne 0x408ae0
movzx eax, byte [edx + 2]
add edx, 2
jmp 0x408ad4
xor edx, edx
jmp 0x408ac4
mov eax, dword [0x4c613c]
lea eax, [eax + eax*4 + 0xa]
shl eax, 2
mov dword [esp + 4], eax
mov eax, dword [0x4c6140]
mov dword [esp], eax
call fcn.004444f0
mov edx, dword [0x4c613c]
mov edi, dword [esp + 0x2c]
mov dword [0x4c6140], eax
lea ecx, [edx + edx*4]
add edx, 1
mov dword [0x4c613c], edx
shl ecx, 2
lea esi, [eax + ecx]
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
cmp byte [ebx], 0
je 0x408b0c
jmp 0x4088e0
movzx ecx, byte [esp + 0x33]
mov edx, dword [esp + 0x2c]
lea eax, [ebx + 1]
call fcn.00402210
jmp 0x408bd9
cmp cl, 0x3a
mov esi, eax
je 0x408a37
sub esi, dword [esp + 0x28]
mov eax, dword [0x4c7b9c]
mov dword [esp + 4], str.specs_file_malformed_after__ld_characters
mov dword [esp], eax
mov dword [esp + 8], esi
call fcn.00422700
cmp cl, 0x20
je 0x408c30
cmp cl, 9
jne 0x408ec6
mov ebx, eax
mov byte [eax], 0
sub ebx, edi
mov dword [esp + 0x2c], ebx
lea ebx, [eax + 1]
movzx eax, byte [eax + 1]
cmp al, 0x20
jne 0x408c5a
lea esi, [esi]
lea edi, [edi]
add ebx, 1
movzx eax, byte [ebx]
cmp al, 0x20
je 0x408c50
cmp al, 9
je 0x408c50
test byte [eax + eax + 0x4bdf60], 0x88
je 0x408f8a
movzx eax, byte [ebx]
test al, al
je 0x408ee3
test byte [eax + eax + 0x4bdf60], 0x40
mov ecx, ebx
je 0x408c8f
jmp 0x408c99
test byte [eax + eax + 0x4bdf60], 0x40
jne 0x408c99
add ecx, 1
movzx eax, byte [ecx]
test al, al
jne 0x408c85
cmp edx, ecx
jne 0x408eed
mov byte [edx], 0
mov edx, dword [0x4c6110]
test edx, edx
je 0x408d6c
mov dword [esp + 0x38], ebx
mov esi, edx
mov ebx, dword [esp + 0x2c]
mov dword [esp + 0x2c], edx
jmp 0x408ccd
mov esi, dword [esi + 0xc]
test esi, esi
je 0x408d6c
cmp ebx, dword [esi + 0x10]
jne 0x408cc2
mov dword [esp + 4], edi
mov eax, dword [esi]
mov dword [esp], eax
call sub.msvcrt.dll_strcmp
test eax, eax
jne 0x408cc2
mov ebx, dword [esp + 0x38]
mov dword [esp], edi
mov dword [esp + 4], ebx
call sub.msvcrt.dll_strcmp
test eax, eax
je 0x4088e0
mov edx, dword [esp + 0x2c]
mov dword [esp + 0x38], esi
mov esi, edx
lea esi, [esi]
lea edi, [edi]
mov dword [esp + 4], ebx
mov eax, dword [esi]
mov dword [esp], eax
call sub.msvcrt.dll_strcmp
test eax, eax
je 0x408f1f
mov esi, dword [esi + 0xc]
test esi, esi
jne 0x408d10
mov edx, dword [0x4c7ae0]
mov esi, dword [esp + 0x38]
test edx, edx
jne 0x408e52
mov eax, dword [esi + 8]
movzx ecx, byte [esp + 0x33]
mov edx, dword [eax]
mov eax, ebx
call fcn.00402210
cmp byte [esi + 0x15], 0
jne 0x408e40
mov eax, dword [esi + 8]
mov dword [eax], 0x47a040
mov byte [esi + 0x15], 0
jmp 0x4088e0
mov eax, dword [0x4c7b9c]
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.00422700
lea ecx, [eax + 9]
movzx eax, byte [eax + 9]
cmp al, 0x20
jne 0x408d9a
add ecx, 1
movzx eax, byte [ecx]
cmp al, 0x20
je 0x408d90
cmp al, 9
je 0x408d90
cmp al, 0x3c
lea ebx, [ecx + 1]
jne 0x408e73
cmp byte [edx - 1], 0x3e
jne 0x408e73
mov byte [edx - 1], 0
mov ecx, 4
mov edx, ebx
mov dword [esp], 1
mov eax, 0x479420
call fcn.00403c00
movzx ecx, byte [esp + 0x33]
test eax, eax
cmove eax, ebx
xor edx, edx
call fcn.004087c0
jmp 0x4088e0
lea ecx, [eax + 0xf]
movzx eax, byte [eax + 0xf]
cmp al, 9
je 0x408df4
cmp al, 0x20
jne 0x408e02
add ecx, 1
movzx eax, byte [ecx]
cmp al, 0x20
je 0x408df4
cmp al, 9
je 0x408df4
cmp al, 0x3c
lea ebx, [ecx + 1]
jne 0x408e73
cmp byte [edx - 1], 0x3e
jne 0x408e73
mov byte [edx - 1], 0
mov ecx, 4
mov dword [esp], 1
mov edx, ebx
mov eax, 0x479420
call fcn.00403c00
test eax, eax
je 0x408e95
movzx ecx, byte [esp + 0x33]
xor edx, edx
call fcn.004087c0
jmp 0x4088e0
mov eax, dword [esi + 8]
mov eax, dword [eax]
mov dword [esp], eax
call sub.msvcrt.dll_free
jmp 0x408d5a
mov eax, dword [esp + 0x3c]
mov dword [esp + 0xc], ebx
mov dword [esp + 8], edi
mov dword [esp + 4], str.rename_spec__s_to__s_n
mov dword [esp], eax
call fcn.004217d0
jmp 0x408d3f
mov eax, ebx
sub eax, dword [esp + 0x28]
mov dword [esp + 4], str.specs___include_syntax_malformed_after__ld_characters
add eax, 1
mov dword [esp + 8], eax
mov eax, dword [0x4c7b9c]
mov dword [esp], eax
call fcn.00422700
mov ecx, dword [0x4c7ae0]
test ecx, ecx
je 0x4088e0
mov eax, dword [sym.imp.msvcrt.dll__iob]
mov dword [esp + 8], ebx
mov dword [esp + 4], str.could_not_find_specs_file__s_n
add eax, 0x40
mov dword [esp], eax
call fcn.004217d0
jmp 0x4088e0
mov eax, edi
sub eax, dword [esp + 0x28]
mov dword [esp + 4], str.specs___rename_syntax_malformed_after__ld_characters
mov dword [esp + 8], eax
mov eax, dword [0x4c7b9c]
mov dword [esp], eax
call fcn.00422700
mov ecx, ebx
cmp edx, ecx
je 0x408ca1
sub ecx, dword [esp + 0x28]
mov eax, dword [0x4c7b9c]
mov dword [esp + 4], str.specs___rename_syntax_malformed_after__ld_characters
mov dword [esp], eax
mov dword [esp + 8], ecx
call fcn.00422700
mov eax, dword [0x4c7b9c]
mov dword [esp + 4], str.spec_file_has_no_spec_for_linking
mov dword [esp], eax
call fcn.00422700
mov eax, dword [esp + 0x34]
mov dword [esp + 0x10], ebx
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 [0x4c7b9c]
mov dword [esp], eax
call fcn.00422700
mov eax, dword [esp + 0x34]
mov dword [esp], eax
call fcn.00408770
sub eax, dword [esp + 0x28]
mov dword [esp + 4], str.specs_unknown____command_after__ld_characters
mov dword [esp + 8], eax
mov eax, dword [0x4c7b9c]
mov dword [esp], eax
call fcn.00422700
sub eax, dword [esp + 0x28]
mov dword [esp + 4], str.specs_file_malformed_after__ld_characters
mov dword [esp + 8], eax
mov eax, dword [0x4c7b9c]
mov dword [esp], eax
call fcn.00422700
sub ebx, dword [esp + 0x28]
mov eax, dword [0x4c7b9c]
mov dword [esp + 4], str.specs___rename_syntax_malformed_after__ld_characters
mov dword [esp], eax
mov dword [esp + 8], ebx
call fcn.00422700
mov esi, esi
lea edi, [edi]
push ebx
sub esp, 0x18
cmp dword [esp + 0x20], 1
mov ebx, dword [esp + 0x24]
jne 0x409002
mov dword [esp], 1
mov edx, dword [ebx]
mov ecx, 4
mov eax, 0x479420
call fcn.00403c00
test eax, eax
je 0x408ff0
xor ecx, ecx
xor edx, edx
call fcn.004087c0
add esp, 0x18
xor eax, eax
pop ebx
ret
mov eax, dword [ebx]
xor ecx, ecx
xor edx, edx
call fcn.004087c0
add esp, 0x18
xor eax, eax
pop ebx
ret
mov dword [esp + 8], str.include_spec_function
mov dword [esp + 4], 0x2368
mov dword [esp], str..._.._.._.._src_gcc_5.1.0_gcc_gcc.c
call fcn.00421800
nop