Function at 0x402370
Capabilities:
Read file on windows

Disassembly:
push rbp
push r15
push r14
push r13
push r12
push rdi
push rsi
push rbx
sub rsp, 0xb8
lea rbp, [rsp + 0x80]
mov rax, qword [r9]
mov qword [rbp + 0x20], rax
mov rax, qword [rbp + 0xa0]
mov r13, r8
mov esi, ecx
lea rdi, [rbp + 0x18]
mov qword [rbp + 0x98], r9
mov rbx, rdx
lea r12, [rbp - 4]
mov r9, rdi
lea r8, str.__GNU_LTO
mov eax, dword [rax]
mov qword [rsp + 0x20], r12
mov dword [rbp], eax
call fcn.0046d8d0
test rax, rax
mov r15, rax
mov qword [rbp - 0x40], rax
je 0x402bf0
mov rcx, r13
call sub.msvcrt.dll_strlen
mov r14, rax
lea rax, [rax + 0x15]
and rax, 0xfffffffffffffff0
call fcn.0047f5f0
sub rsp, rax
mov r8, r14
mov rdx, r13
lea r10, [rsp + 0x30]
mov r13d, 0x73
mov rcx, r10
call sub.msvcrt.dll_memcpy
lea r9, [rbp + 0x10]
mov rcx, r15
lea r8, [rbp + 8]
add r14, rax
mov rdx, rax
mov dword [r14], 0x74706f2e
mov word [r14 + 4], r13w
mov qword [rsp + 0x28], r12
mov qword [rsp + 0x20], rdi
call fcn.0046d9c0
test eax, eax
je 0x402653
add rbx, qword [rbp + 8]
xor r8d, r8d
mov ecx, esi
mov r14, rbp
mov rdx, rbx
call fcn.004805c0
mov rcx, qword [rbp + 0x10]
call fcn.00474400
mov r8d, dword [rbp + 0x10]
mov ecx, esi
mov rdx, rax
mov r15, rax
mov qword [rbp - 0x20], rax
call sub.msvcrt.dll__read_1
lea rax, [rbp + 4]
mov qword [rbp - 0x28], rax
lea rax, [rbp + 0x28]
mov qword [rbp - 0x30], rax
mov r9, qword [rbp - 0x28]
mov rdx, r15
mov r8, qword [rbp - 0x30]
mov rcx, qword [rbp + 0xa8]
call fcn.00402110
cmp qword [rbp + 0x20], 0
je 0x402b31
mov eax, dword [rbp + 4]
mov rbx, qword [rbp + 0x28]
test eax, eax
je 0x402c40
sub eax, 1
xor r12d, r12d
xor edi, edi
mov qword [rbp - 0x38], r15
lea rax, [rax + rax*4]
lea r13, [rbp + 0x20]
shl rax, 4
lea rax, [rbx + rax + 0x50]
mov qword [rbp - 0x18], rax
mov rax, qword [rbx]
cmp rax, 0x355
je 0x402940
jbe 0x4028b0
cmp rax, 0x370
je 0x4028a0
ja 0x402870
cmp rax, 0x358
je 0x4026d8
jbe 0x402660
cmp rax, 0x359
jne 0x4026d0
mov r8d, dword [rbp]
test r8d, r8d
je 0x402560
mov rax, qword [rbp + 0x20]
cmp qword [rax], 0x359
je 0x402840
lea rdx, [rax + 0x50]
xor ecx, ecx
jmp 0x402555
mov rax, rdx
add rdx, 0x50
cmp qword [rdx - 0x50], 0x359
je 0x402840
add ecx, 1
cmp ecx, r8d
jne 0x402540
nop dword [rax]
mov r8, rbx
mov rdx, r14
mov rcx, r13
call fcn.00401700
nop
add rbx, 0x50
cmp qword [rbp - 0x18], rbx
jne 0x4024d5
mov r15, qword [rbp - 0x38]
mov r8d, dword [rbp]
xor ebx, ebx
nop dword [rax + rax]
cmp ebx, r8d
jae 0x4025f3
mov rcx, qword [rbp + 0x20]
mov eax, ebx
lea rax, [rax + rax*4]
shl rax, 4
add rax, rcx
mov rdx, qword [rax]
cmp rdx, 0x370
sete r9b
cmp rdx, 0x1de
je 0x402750
test r9b, r9b
jne 0x402750
cmp rdx, 0x371
sete r9b
cmp rdx, 0x1df
je 0x402720
test r9b, r9b
jne 0x402720
add ebx, 1
cmp ebx, r8d
jb 0x402595
mov rcx, r15
call sub.msvcrt.dll_strlen
lea r15, [r15 + rax + 1]
mov rax, r15
sub rax, qword [rbp - 0x20]
cmp rax, qword [rbp + 0x10]
jl 0x402483
mov rcx, qword [rbp - 0x20]
call sub.msvcrt.dll_free
mov rcx, qword [rbp - 0x40]
call fcn.0046da60
mov rax, qword [rbp + 0x20]
mov rsi, qword [rbp + 0x98]
mov qword [rsi], rax
mov eax, dword [rbp]
mov rsi, qword [rbp + 0xa0]
mov dword [rsi], eax
mov eax, 1
lea rsp, [rbp + 0x38]
pop rbx
pop rsi
pop rdi
pop r12
pop r13
pop r14
pop r15
pop rbp
ret
mov rcx, qword [rbp - 0x40]
call fcn.0046da60
xor eax, eax
jmp 0x402642
cmp rax, 0x356
je 0x402560
nop dword [rax]
mov rsi, qword [0x005b9230]
lea rdx, [rax + rax*2]
shl rdx, 5
test byte [rsi + rdx + 0x3e], 0x10
je 0x402570
nop word [rax + rax]
mov r8d, dword [rbp]
test r8d, r8d
je 0x402560
mov rdx, qword [rbp + 0x20]
cmp rax, qword [rdx]
je 0x402570
add rdx, 0x50
xor ecx, ecx
jmp 0x4026c0
add rdx, 0x50
cmp rax, qword [rdx - 0x50]
je 0x402570
add ecx, 1
cmp ecx, r8d
jne 0x4026b2
jmp 0x402560
cmp rax, 0x35a
jne 0x402670
mov r9d, dword [rbp]
test r9d, r9d
je 0x402560
mov rdx, qword [rbp + 0x20]
cmp rax, qword [rdx]
je 0x4027e0
lea rcx, [rdx + 0x50]
xor r8d, r8d
jmp 0x402711
mov rdx, rcx
add rcx, 0x50
cmp rax, qword [rcx - 0x50]
je 0x4027e0
add r8d, 1
cmp r8d, r9d
jne 0x402700
jmp 0x402560
test r12, r12
je 0x402733
mov esi, dword [rax + 0x48]
cmp dword [r12 + 0x48], esi
je 0x402b54
mov r8, r14
mov edx, ebx
call fcn.00401bc0
mov r8d, dword [rbp]
jmp 0x402590
test rdi, rdi
je 0x402733
mov edx, dword [rdi + 0x48]
mov r11d, dword [rax + 0x48]
test edx, edx
setg r10b
test r11d, r11d
setg dl
cmp r10b, dl
jne 0x402733
add ebx, 1
cmp qword [rdi], 0x1de
jne 0x402590
test r9b, r9b
je 0x402590
mov rdx, qword [rdi]
mov qword [rax], rdx
mov rdx, qword [rdi + 8]
mov qword [rax + 8], rdx
mov rdx, qword [rdi + 0x10]
mov qword [rax + 0x10], rdx
mov rdx, qword [rdi + 0x18]
mov qword [rax + 0x18], rdx
mov rdx, qword [rdi + 0x20]
mov qword [rax + 0x20], rdx
mov rdx, qword [rdi + 0x28]
mov qword [rax + 0x28], rdx
mov rdx, qword [rdi + 0x30]
mov qword [rax + 0x30], rdx
mov rdx, qword [rdi + 0x38]
mov qword [rax + 0x38], rdx
mov rdx, qword [rdi + 0x40]
mov qword [rax + 0x40], rdx
mov rdx, qword [rdi + 0x48]
mov qword [rax + 0x48], rdx
jmp 0x402590
mov eax, dword [rdx + 0x48]
cmp dword [rbx + 0x48], eax
jle 0x402570
mov rax, qword [rbx]
mov qword [rdx], rax
mov rax, qword [rbx + 8]
mov qword [rdx + 8], rax
mov rax, qword [rbx + 0x10]
mov qword [rdx + 0x10], rax
mov rax, qword [rbx + 0x18]
mov qword [rdx + 0x18], rax
mov rax, qword [rbx + 0x20]
mov qword [rdx + 0x20], rax
mov rax, qword [rbx + 0x28]
mov qword [rdx + 0x28], rax
mov rax, qword [rbx + 0x30]
mov qword [rdx + 0x30], rax
mov rax, qword [rbx + 0x38]
mov qword [rdx + 0x38], rax
mov rax, qword [rbx + 0x40]
mov qword [rdx + 0x40], rax
mov rax, qword [rbx + 0x48]
mov qword [rdx + 0x48], rax
jmp 0x402570
mov rdx, qword [rbx + 0x10]
mov rcx, qword [rax + 0x10]
call sub.msvcrt.dll_strcmp
test eax, eax
je 0x402570
mov rax, qword [0x005b92d0]
lea rdx, str.Option__s_with_different_values
mov r8, qword [rbx + 0x18]
mov ecx, dword [rax]
call fcn.00419f70
nop
cmp rax, 0x3d6
je 0x402690
jbe 0x402a50
lea rdx, [rax - 0x5d4]
cmp rdx, 3
jbe 0x402570
jmp 0x402670
mov rdi, rbx
jmp 0x402570
cmp rax, 0x21a
je 0x4026d8
ja 0x402a71
cmp rax, 0x1de
je 0x4028a0
ja 0x402a64
lea rdx, [rax - 0x80]
cmp rdx, 3
ja 0x402670
mov r9d, dword [rbp]
test r9d, r9d
je 0x402560
mov rdx, qword [rbp + 0x20]
mov r8, qword [rdx]
lea rcx, [r8 - 0x80]
cmp rcx, 3
jbe 0x402992
mov esi, 0x50
xor ecx, ecx
jmp 0x402929
mov r8, qword [rdx + rsi]
lea r10, [rdx + rsi]
lea r11, [rsi + 0x50]
lea r15, [r8 - 0x80]
cmp r15, 3
jbe 0x4029a0
mov rsi, r11
add ecx, 1
cmp ecx, r9d
jne 0x402910
jmp 0x402560
mov r8d, dword [rbp]
test r8d, r8d
je 0x402560
mov rax, qword [rbp + 0x20]
cmp qword [rax], 0x355
je 0x402aa0
lea rdx, [rax + 0x50]
xor ecx, ecx
jmp 0x402985
mov rax, rdx
add rdx, 0x50
cmp qword [rdx - 0x50], 0x355
je 0x402aa0
add ecx, 1
cmp ecx, r8d
jne 0x402970
jmp 0x402560
mov r10, rdx
xor esi, esi
nop word [rax + rax]
cmp rax, r8
jne 0x4029b1
cmp rax, 0x80
jne 0x402570
cmp rax, 0x82
mov edx, 1
je 0x4029f0
cmp rax, 0x83
mov edx, 2
je 0x4029f0
cmp rax, 0x81
mov edx, 3
je 0x4029f0
mov rcx, qword [rbx + 0x10]
mov edx, 1
cmp byte [rcx], 0
jne 0x402bd0
nop word [rax + rax]
cmp r8, 0x81
je 0x402b44
jbe 0x402ae2
cmp r8, 0x82
jne 0x402ac5
test edx, edx
mov eax, 1
cmovle edx, eax
mov qword [r10], pe_nt_image_headers64
lea rcx, str._O_d
call fcn.00474340
add rsi, qword [rbp + 0x20]
lea rdx, [rax + 2]
mov qword [rsi + 0x10], rdx
mov qword [rsi + 0x20], rax
mov dword [rsi + 0x48], 1
jmp 0x402570
cmp rax, 0x371
jne 0x402670
mov r12, rbx
jmp 0x402570
cmp rax, 0x1df
je 0x402a5c
jmp 0x402670
cmp rax, 0x26b
ja 0x402b20
cmp rax, 0x269
jae 0x402690
cmp rax, 0x234
je 0x402690
jmp 0x402670
mov eax, dword [rax + 0x48]
cmp dword [rbx + 0x48], eax
je 0x402570
mov rax, qword [0x005b92d0]
lea rdx, str.Option__s_not_used_consistently_in_all_LTO_input_files
mov r8, qword [rbx + 0x18]
mov ecx, dword [rax]
call fcn.00419f70
cmp r8, 0x83
jne 0x402c4a
cmp edx, 2
mov eax, 2
cmovl edx, eax
jmp 0x402a1a
add r8, 0xffffffffffffff80
jne 0x402c4a
mov rcx, qword [r10 + 0x10]
cmp byte [rcx], 0
je 0x402a10
mov dword [rbp - 0x44], edx
call sub.msvcrt.dll_atoi
mov edx, dword [rbp - 0x44]
cmp edx, eax
jle 0x402c20
mov r10, qword [rbp + 0x20]
add r10, rsi
jmp 0x402a1a
cmp rax, 0x2bb
je 0x402690
jmp 0x402670
mov rax, qword [rbp + 0x28]
mov qword [rbp + 0x20], rax
mov eax, dword [rbp + 4]
mov dword [rbp], eax
jmp 0x4025f3
cmp edx, 3
mov eax, 3
cmovl edx, eax
jmp 0x402a1a
add ebx, 1
cmp qword [r12], 0x1df
jne 0x402590
test r9b, r9b
je 0x402590
mov rdx, qword [r12]
mov qword [rax], rdx
mov rdx, qword [r12 + 8]
mov qword [rax + 8], rdx
mov rdx, qword [r12 + 0x10]
mov qword [rax + 0x10], rdx
mov rdx, qword [r12 + 0x18]
mov qword [rax + 0x18], rdx
mov rdx, qword [r12 + 0x20]
mov qword [rax + 0x20], rdx
mov rdx, qword [r12 + 0x28]
mov qword [rax + 0x28], rdx
mov rdx, qword [r12 + 0x30]
mov qword [rax + 0x30], rdx
mov rdx, qword [r12 + 0x38]
mov qword [rax + 0x38], rdx
mov rdx, qword [r12 + 0x40]
mov qword [rax + 0x40], rdx
mov rdx, qword [r12 + 0x48]
mov qword [rax + 0x48], rdx
jmp 0x402590
call sub.msvcrt.dll_atoi
test eax, eax
jns 0x402c00
mov r10, qword [rbp + 0x20]
xor edx, edx
add r10, rsi
mov r8, qword [r10]
jmp 0x4029f0
xor eax, eax
jmp 0x402642
mov rcx, qword [rbx + 0x10]
call sub.msvcrt.dll_atoi
mov r10, qword [rbp + 0x20]
mov edx, eax
add r10, rsi
mov r8, qword [r10]
jmp 0x4029f0
mov rax, qword [rbp + 0x20]
mov rcx, qword [rax + rsi + 0x10]
call sub.msvcrt.dll_atoi
mov r10, qword [rbp + 0x20]
mov edx, eax
add r10, rsi
jmp 0x402a1a
xor r12d, r12d
xor edi, edi
jmp 0x402582
lea r8, str.merge_and_complain
mov edx, 0x174
lea rcx, str..._.._.._.._src_gcc_8.1.0_gcc_lto_wrapper.c
call fcn.00490e20
nop
nop dword [rax]
nop word cs:[rax + rax]