Function at 0x404340
Capabilities:
Read file on windows

Disassembly:
push r15
push r14
push r13
push r12
push rbp
push rdi
push rsi
push rbx
sub rsp, 0x88
mov rax, qword [0x0058b1a0]
mov r12, rcx
mov ecx, dword [rax + 0x1750]
mov byte [rsp + 0x36], dl
mov byte [rsp + 0x37], r8b
test ecx, ecx
jne 0x404a8a
xor r8d, r8d
xor edx, edx
mov rcx, r12
call sub.msvcrt.dll__open
test eax, eax
mov edi, eax
js 0x404bc1
lea rdx, [rsp + 0x40]
mov rcx, r12
call qword [sym.imp.msvcrt.dll__stat64]
test eax, eax
js 0x404bc1
mov rax, qword [rsp + 0x58]
lea rcx, [rax + 1]
call fcn.0048c870
mov r8d, dword [rsp + 0x58]
mov ecx, edi
mov rdx, rax
mov rsi, rax
call sub.msvcrt.dll__read_1
test eax, eax
mov ebx, eax
js 0x404bc1
cdqe
mov ecx, edi
mov byte [rsi + rax], 0
call sub.msvcrt.dll__close_1
lea ecx, [rbx + 1]
movsxd rcx, ecx
call fcn.0048c870
movzx edx, byte [rsi]
mov rbx, rax
mov r8, rax
test dl, dl
je 0x404437
mov rax, rsi
cmp dl, 0xd
movzx ecx, byte [rax + 1]
je 0x40441a
nop dword [rax]
mov byte [r8], dl
add r8, 1
add rax, 1
test cl, cl
je 0x404437
mov edx, ecx
cmp dl, 0xd
movzx ecx, byte [rax + 1]
jne 0x404400
cmp rsi, rax
jae 0x404425
cmp byte [rax - 1], 0xa
je 0x404407
cmp cl, 0xa
mov edx, 0xa
jne 0x404400
add rax, 1
mov edx, ecx
jmp 0x404411
mov byte [r8], 0
mov rcx, rsi
mov r15, rbx
call fcn.004a6450
mov rbp, qword [0x0058b0e0]
mov qword [rsp + 0x38], r12
nop word [rax + rax]
mov rcx, r15
call fcn.00401530
mov rsi, rax
movzx eax, byte [rax]
test al, al
je 0x404a2a
cmp al, 0x25
jne 0x40447d
cmp byte [rsp + 0x36], 0
je 0x404690
mov r14, rsi
jmp 0x4044a1
cmp al, 0xa
je 0x404ac8
movzx eax, byte [r14 + 1]
add r14, 1
test al, al
je 0x404ac8
cmp al, 0x3a
jne 0x404488
cmp rbx, r14
mov r8, r14
jae 0x4044c6
nop dword [rax]
movzx eax, byte [r8 - 1]
cmp al, 9
je 0x4044bd
cmp al, 0x20
jne 0x4044c6
sub r8, 1
cmp r8, rbx
jne 0x4044b0
sub r8, rsi
lea ecx, [r8 + 1]
mov r13, r8
movsxd rcx, ecx
movsxd r13, r13d
call fcn.0048c870
mov rdx, rsi
mov r8, r13
mov rdi, rax
mov rcx, rax
call sub.msvcrt.dll_memcpy
lea rcx, [r14 + 1]
mov byte [rdi + r13], 0
call fcn.00401530
cmp byte [rax + 1], 0
mov r14, rax
je 0x404ac8
movzx eax, byte [rax]
xor r13d, r13d
mov r15, r14
mov ecx, 1
test al, al
jne 0x40452d
jmp 0x40454e
movzx eax, byte [r15 + 1]
add r15, 1
test al, al
je 0x40453e
cmp al, 0xa
jne 0x404520
movzx eax, byte [r15 + 1]
test al, al
je 0x40453e
cmp al, 0xa
jne 0x404520
mov r13, r15
sub r13, r14
lea ecx, [r13 + 1]
movsxd r13, r13d
movsxd rcx, ecx
call fcn.0048c870
mov r8, r13
mov rdx, r14
mov rsi, rax
mov rcx, rax
call sub.msvcrt.dll_memcpy
mov byte [rsi + r13], 0
movzx eax, byte [rsi]
mov rcx, rsi
test al, al
je 0x4045b0
mov rdx, rsi
jmp 0x404595
cmp al, 0x23
je 0x4045e0
mov byte [rcx], al
add rdx, 1
movzx eax, byte [rdx]
add rcx, 1
test al, al
je 0x4045b0
cmp al, 0x5c
jne 0x404580
cmp byte [rdx + 1], 0xa
jne 0x404584
movzx eax, byte [rdx + 2]
add rdx, 2
test al, al
jne 0x404595
nop dword [rax + rax]
cmp byte [rdi], 0x2a
mov byte [rcx], 0
jne 0x404610
lea rdx, str.link_command
mov rcx, rdi
call sub.msvcrt.dll_strcmp
test eax, eax
jne 0x4048c8
mov qword [str.__fsyntax_only:__c:__M:__MM:__E:__S:______linker___fuse_linker_plugin:_____e_fuse_linker_plugin_is_not_supported_in_this_configuration_fltoflto:__fcompare_debug______flto__fno_lto__flto__l__staticsharedr:_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:__r:__nostartfiles:_S______staticno_piestatic_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:__r:__nodefaultlibs:__:sanitize_address_:_______:sanitize_hwaddress_:_______:sanitize_thread_:_______:sanitize_leak_:__o_______fopenaccfopenmp_:gt__ftree_parallelize_loops:__1_:_t_:include_libgomp.spec___link_gomp______fgnu_tm:_:include_libitm.spec___link_itm_______mflib____fsplit_stack:___wrappthread_create_____fprofile_arcsfprofile_generatecoverage:_lgcov___nostdlib:__r:__nodefaultlibs:__:sanitize_address_:_static_libasan:_Bstatic__lasan__static_libasan:_Bdynamic__static_libasanstatic:_:include_libsanitizer.spec___link_libasan______static:_ecannot_specify__static_with__fsanitizeaddress______:sanitize_hwaddress_:_static_libhwasan:_Bstatic__lhwasan__static_libhwasan:_Bdynamic__static_libhwasanstatic:_:include_libsanitizer.spec___link_libhwasan__t_static:_ecannot_specify__static_with__fsanitizehwaddress______:sanitize_thread_:_static_libtsan:_Bstatic__ltsan__static_libtsan:_Bdynamic__static_libtsanstatic:_:include_libsanitizer.spec___link_libtsan______static:_ecannot_specify__static_with__fsanitizethread______:sanitize_undefined_:_static_libubsan:_Bstatic__lubsan__static_libubsan:_Bdynamic__static_libubsanstatic:_:include_libsanitizer.spec___link_libubsan_______:sanitize_leak_:_static_liblsan:_Bstatic__llsan__static_liblsan:_Bdynamic__static_liblsanstatic:_:include_libsanitizer.spec___link_liblsan________nostdlib:__r:__nodefaultlibs:__link_ssp____link_gcc_c_sequence_______nostdlib:__r:__nostartfiles:_E__T___n__post_link__], rsi
jmp 0x404458
movzx eax, byte [rdx]
cmp al, 0xa
je 0x4048e7
test al, al
jne 0x4045fc
jmp 0x4045b0
cmp al, 0xa
je 0x404591
movzx eax, byte [rdx + 1]
add rdx, 1
test al, al
jne 0x4045f8
cmp byte [rdi], 0x2a
mov byte [rcx], 0
je 0x4045b8
mov eax, dword [0x0059d230]
mov rcx, qword [0x0059d238]
lea edx, [rax + 2]
movsxd rdx, edx
shl rdx, 5
call fcn.0048c8f0
movq xmm0, rdi
movq xmm1, rsi
movsxd rdx, dword [0x0059d230]
mov qword [0x0059d238], rax
punpcklqdq xmm0, xmm1
mov rcx, rdx
shl rdx, 5
movups xmmword [rax + rdx], xmm0
lea rax, [rax + rdx + 0x20]
add ecx, 1
mov dword [0x0059d230], ecx
mov qword [rax], 0
mov qword [rax + 8], 0
mov qword [rax + 0x10], 0
mov qword [rax + 0x18], 0
cmp byte [rdi], 0
je 0x4045cf
jmp 0x404458
mov r15, rsi
jmp 0x40469c
cmp al, 0xa
je 0x4046ac
mov rdi, r15
movzx eax, byte [r15 + 1]
add r15, 1
test al, al
jne 0x404698
lea rdx, [0x004c07d0]
mov r8d, 8
mov rcx, rsi
call sub.msvcrt.dll_strncmp
test eax, eax
jne 0x4046d9
movzx eax, byte [rsi + 8]
cmp al, 9
je 0x4048f9
cmp al, 0x20
je 0x4048f9
lea rdx, str._include_noerr
mov r8d, 0xe
mov rcx, rsi
call sub.msvcrt.dll_strncmp
test eax, eax
jne 0x404706
movzx eax, byte [rsi + 0xe]
cmp al, 9
je 0x404976
cmp al, 0x20
je 0x404976
lea rdx, str._rename
mov r8d, 7
mov rcx, rsi
call sub.msvcrt.dll_strncmp
test eax, eax
jne 0x404bd9
movzx eax, byte [rsi + 7]
cmp al, 9
je 0x404733
cmp al, 0x20
jne 0x404bd9
movzx eax, byte [rsi + 8]
lea r14, [rsi + 8]
cmp al, 9
jne 0x40474d
nop
movzx eax, byte [r14 + 1]
add r14, 1
cmp al, 9
je 0x404740
cmp al, 0x20
je 0x404740
test byte [rbp + rax*2], 0x88
je 0x404b91
movzx eax, byte [r14]
mov r8, r14
test al, al
jne 0x404781
jmp 0x404b79
movzx eax, byte [r8 + 1]
add r8, 1
test al, al
je 0x404b79
movzx edx, al
test byte [rbp + rdx*2], 0x40
je 0x404770
cmp al, 9
je 0x404797
cmp al, 0x20
jne 0x404b79
movzx eax, byte [r8 + 1]
lea r12, [r8 + 1]
mov r13d, r8d
mov byte [r8], 0
sub r13d, r14d
cmp al, 9
jne 0x4047be
nop
movzx eax, byte [r12 + 1]
add r12, 1
cmp al, 9
je 0x4047b0
cmp al, 0x20
je 0x4047b0
test byte [rbp + rax*2], 0x88
je 0x404b5e
movzx eax, byte [r12]
mov r8, r12
test al, al
jne 0x4047ed
jmp 0x4047f4
movzx eax, byte [r8 + 1]
add r8, 1
test al, al
je 0x4047f4
test byte [rbp + rax*2], 0x40
je 0x4047e0
cmp r15, r8
jne 0x404b46
mov byte [r15], 0
mov r15, qword [0x0059d1d8]
test r15, r15
je 0x404aac
mov rsi, r15
jmp 0x40482d
mov rsi, qword [rsi + 0x18]
test rsi, rsi
je 0x404aac
cmp dword [rsi + 0x20], r13d
jne 0x404820
mov rcx, qword [rsi]
mov rdx, r14
call sub.msvcrt.dll_strcmp
test eax, eax
jne 0x404820
mov rdx, r12
mov rcx, r14
call sub.msvcrt.dll_strcmp
test eax, eax
jne 0x404860
lea r15, [rdi + 2]
jmp 0x404458
mov rcx, qword [r15]
mov rdx, r12
call sub.msvcrt.dll_strcmp
test eax, eax
je 0x404ae3
mov r15, qword [r15 + 0x18]
test r15, r15
jne 0x404860
mov rax, qword [0x0058b1a0]
mov eax, dword [rax + 0x1750]
test eax, eax
jne 0x404a05
mov rax, qword [rsi + 0x10]
mov rcx, r12
movzx r8d, byte [rsp + 0x37]
mov rdx, qword [rax]
call fcn.00402460
cmp byte [rsi + 0x25], 0
jne 0x4049f4
mov rax, qword [rsi + 0x10]
lea rcx, [0x004c0061]
mov qword [rax], rcx
mov byte [rsi + 0x25], 0
jmp 0x404851
movzx r8d, byte [rsp + 0x37]
lea rcx, [rdi + 1]
mov rdx, rsi
call fcn.00402460
mov rcx, rsi
call fcn.004a6450
jmp 0x404680
test al, al
je 0x4045b0
mov eax, 0xa
jmp 0x404584
movzx edx, byte [rsi + 9]
lea rax, [rsi + 9]
cmp dl, 0x20
je 0x404910
cmp dl, 9
jne 0x404922
nop dword [rax + rax]
movzx edx, byte [rax + 1]
add rax, 1
cmp dl, 9
je 0x404910
cmp dl, 0x20
je 0x404910
lea rsi, [rax + 1]
cmp dl, 0x3c
jne 0x404b27
cmp byte [r15 - 1], 0x3e
jne 0x404b27
mov rdx, rsi
mov byte [r15 - 1], 0
mov r9d, 1
mov r8d, 4
lea rcx, [0x004bf8d0]
call fcn.00402250
movzx r8d, byte [rsp + 0x37]
test rax, rax
mov rcx, rax
cmove rcx, rsi
xor edx, edx
call fcn.00404340
jmp 0x404851
movzx edx, byte [rsi + 0xf]
lea rax, [rsi + 0xf]
cmp dl, 9
je 0x404990
cmp dl, 0x20
jne 0x4049a2
nop dword [rax + rax]
movzx edx, byte [rax + 1]
add rax, 1
cmp dl, 0x20
je 0x404990
cmp dl, 9
je 0x404990
lea rsi, [rax + 1]
cmp dl, 0x3c
jne 0x404b0b
cmp byte [r15 - 1], 0x3e
jne 0x404b0b
mov byte [r15 - 1], 0
mov r9d, 1
mov r8d, 4
mov rdx, rsi
lea rcx, [0x004bf8d0]
call fcn.00402250
test rax, rax
je 0x404a53
movzx r8d, byte [rsp + 0x37]
xor edx, edx
mov rcx, rax
call fcn.00404340
jmp 0x404851
mov rax, qword [rsi + 0x10]
mov rcx, qword [rax]
call fcn.004a6450
jmp 0x4048b0
mov ecx, 2
call qword [fcn.004a5d20]
mov r9, r12
mov r8, r14
lea rdx, str.rename_spec__s_to__s_n
mov rcx, rax
call fcn.00430660
jmp 0x404891
cmp qword [str.__fsyntax_only:__c:__M:__MM:__E:__S:______linker___fuse_linker_plugin:_____e_fuse_linker_plugin_is_not_supported_in_this_configuration_fltoflto:__fcompare_debug______flto__fno_lto__flto__l__staticsharedr:_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:__r:__nostartfiles:_S______staticno_piestatic_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:__r:__nodefaultlibs:__:sanitize_address_:_______:sanitize_hwaddress_:_______:sanitize_thread_:_______:sanitize_leak_:__o_______fopenaccfopenmp_:gt__ftree_parallelize_loops:__1_:_t_:include_libgomp.spec___link_gomp______fgnu_tm:_:include_libitm.spec___link_itm_______mflib____fsplit_stack:___wrappthread_create_____fprofile_arcsfprofile_generatecoverage:_lgcov___nostdlib:__r:__nodefaultlibs:__:sanitize_address_:_static_libasan:_Bstatic__lasan__static_libasan:_Bdynamic__static_libasanstatic:_:include_libsanitizer.spec___link_libasan______static:_ecannot_specify__static_with__fsanitizeaddress______:sanitize_hwaddress_:_static_libhwasan:_Bstatic__lhwasan__static_libhwasan:_Bdynamic__static_libhwasanstatic:_:include_libsanitizer.spec___link_libhwasan__t_static:_ecannot_specify__static_with__fsanitizehwaddress______:sanitize_thread_:_static_libtsan:_Bstatic__ltsan__static_libtsan:_Bdynamic__static_libtsanstatic:_:include_libsanitizer.spec___link_libtsan______static:_ecannot_specify__static_with__fsanitizethread______:sanitize_undefined_:_static_libubsan:_Bstatic__lubsan__static_libubsan:_Bdynamic__static_libubsanstatic:_:include_libsanitizer.spec___link_libubsan_______:sanitize_leak_:_static_liblsan:_Bstatic__llsan__static_liblsan:_Bdynamic__static_liblsanstatic:_:include_libsanitizer.spec___link_liblsan________nostdlib:__r:__nodefaultlibs:__link_ssp____link_gcc_c_sequence_______nostdlib:__r:__nostartfiles:_E__T___n__post_link__], 0
je 0x404bac
mov rcx, rbx
add rsp, 0x88
pop rbx
pop rsi
pop rdi
pop rbp
pop r12
pop r13
pop r14
pop r15
jmp fcn.004a6450
mov rax, qword [0x0058b1a0]
mov edx, dword [rax + 0x1750]
test edx, edx
je 0x404851
mov ecx, 2
call qword [fcn.004a5d20]
lea rdx, str.could_not_find_specs_file__s_n
mov r8, rsi
mov rcx, rax
call fcn.00430660
jmp 0x404851
mov ecx, 2
call qword [fcn.004a5d20]
lea rdx, str.Reading_specs_from__s_n
mov r8, r12
mov rcx, rax
call fcn.00430660
jmp 0x404374
mov rax, qword [0x0058b1e0]
mov r8, r14
lea rdx, str.specs__s_spec_was_not_found_to_be_renamed
mov ecx, dword [rax]
call fcn.00432e40
nop dword [rax]
mov rax, qword [0x0058b1e0]
mov r8d, r14d
lea rdx, str.specs_file_malformed_after__ld_characters
sub r8d, ebx
mov ecx, dword [rax]
call fcn.00432e40
mov rax, qword [0x0058b1e0]
mov r15, r12
mov r9, r14
mov r12, qword [rsp + 0x38]
lea rdx, str._s:_attempt_to_rename_spec__qs_to_already_defined_spec__qs
mov ecx, dword [rax]
mov qword [rsp + 0x20], r15
mov r8, r12
call fcn.00432e40
mov rax, qword [0x0058b1e0]
sub rsi, rbx
lea r8d, [rsi + 1]
lea rdx, str.specs___include_syntax_malformed_after__ld_characters
mov ecx, dword [rax]
call fcn.00432e40
mov rdx, qword [0x0058b1e0]
mov rax, rsi
sub rax, rbx
lea r8d, [rax + 1]
mov ecx, dword [rdx]
lea rdx, str.specs___include_syntax_malformed_after__ld_characters
call fcn.00432e40
mov rax, qword [0x0058b1e0]
sub r8d, ebx
lea rdx, str.specs___rename_syntax_malformed_after__ld_characters
mov ecx, dword [rax]
call fcn.00432e40
mov rax, qword [0x0058b1e0]
mov r8d, r12d
lea rdx, str.specs___rename_syntax_malformed_after__ld_characters
sub r8d, ebx
mov ecx, dword [rax]
call fcn.00432e40
mov rdx, qword [0x0058b1e0]
sub r8d, ebx
mov ecx, dword [rdx]
lea rdx, str.specs___rename_syntax_malformed_after__ld_characters
call fcn.00432e40
mov rax, qword [0x0058b1e0]
mov r8d, r14d
lea rdx, str.specs___rename_syntax_malformed_after__ld_characters
sub r8d, ebx
mov ecx, dword [rax]
call fcn.00432e40
mov rax, qword [0x0058b1e0]
lea rdx, str.spec_file_has_no_spec_for_linking
mov ecx, dword [rax]
call fcn.00432e40
mov rax, qword [0x0058b1e0]
mov r8, r12
lea rdx, str.cannot_read_spec_file__qs:__m
mov ecx, dword [rax]
call fcn.00432e40
mov rax, qword [0x0058b1e0]
mov r8d, esi
lea rdx, str.specs_unknown____command_after__ld_characters
sub r8d, ebx
mov ecx, dword [rax]
call fcn.00432e40
nop
nop word cs:[rax + rax]
push rbx
sub rsp, 0x20
cmp ecx, 1
mov rbx, rdx
jne 0x4bbdda
mov rdx, qword [rdx]
lea rcx, [0x004bf8d0]
mov r9d, 1
mov r8d, 4
call fcn.00402250
test rax, rax
mov rcx, rax
je 0x404c50
xor r8d, r8d
xor edx, edx
call fcn.00404340
xor eax, eax
add rsp, 0x20
pop rbx
ret
mov rcx, qword [rbx]
jmp 0x404c34