Function at 0x403100
Capabilities:
Read file on windows
Read pipe
Terminate process
Write file on windows

Disassembly:
push r15
push r14
push r13
push r12
push rbp
push rdi
push rsi
push rbx
sub rsp, 0xa8
mov r14d, ecx
mov rdi, rdx
call fcn.00401ab0
call fcn.004018e0
test eax, eax
je 0x403560
cmp r14d, 1
jle 0x40354c
xor esi, esi
xor ebx, ebx
mov dword [rsp + 0x48], 0xa
xor edx, edx
mov ebp, 0x40
mov r12d, 0xbb8
mov r13d, 0xc8
lea r15, [0x00405408]
jmp 0x40316c
lea eax, [rsi + 2]
cmp r14d, eax
jle 0x4031a4
add rsi, 1
mov rax, qword [rdi + rsi*8 + 8]
cmp byte [rax], 0x2d
jne 0x403160
movzx eax, byte [rax + 1]
sub eax, 0x62
cmp al, 0x12
ja case.0x40318f.1
movzx eax, al
movsxd rax, dword [r15 + rax*4]
add rax, r15
jmp rax
mov ebx, 1
jmp 0x403160
lea eax, [rsi + 2]
cmp r14d, eax
jg 0x4034c3
test rdx, rdx
je 0x40354c
mov rcx, rdx
call qword [0x00408970]
cmp ebx, 1
mov dword [rsp + 0x4c], eax
jne 0x4034df
call qword [0x00408978]
mov qword [rsp + 0x40], rax
add rax, 1
je 0x403588
mov esi, ebp
mov edx, 1
add rsi, 0x30
mov rcx, rsi
call sub.msvcrt.dll_calloc
mov edx, 1
mov rcx, rsi
mov r14, rax
call sub.msvcrt.dll_calloc
test r14, r14
mov rdi, rax
je 0x403574
test rax, rax
je 0x403574
lea rax, [rsp + 0x64]
test ebx, ebx
sete r15b
mov qword [rsp + 0x50], rax
xor esi, esi
jmp 0x4032d1
lea r10, [rsp + 0x68]
xor r9d, r9d
xor r8d, r8d
mov rcx, qword [rsp + 0x70]
xor edx, edx
mov dword [rsp + 0x68], 0
mov qword [rsp + 0x28], 0
mov qword [rsp + 0x20], r10
mov qword [rsp + 0x58], r10
call qword [sym.imp.KERNEL32.dll_PeekNamedPipe]
test eax, eax
je 0x403468
mov r9d, dword [rsp + 0x68]
mov r10, qword [rsp + 0x58]
test r9d, r9d
jne 0x40348c
nop
mov rax, qword [rsp + 0x50]
mov dword [rsp + 0x38], r12d
mov r8, rdi
add esi, 1
mov edx, dword [rsp + 0x4c]
mov dword [rsp + 0x30], ebp
mov rcx, qword [rsp + 0x40]
mov qword [rsp + 0x20], r14
mov qword [rsp + 0x28], rax
call fcn.004017f0
cmp eax, 1
je 0x4033f4
mov ecx, r13d
call qword [sym.imp.KERNEL32.dll_Sleep]
cmp esi, dword [rsp + 0x48]
jge 0x403459
test r15b, r15b
je 0x403459
cmp ebx, 1
je 0x403430
cmp ebx, 2
jne 0x403230
movabs rax, 0x20737365636f7250
mov byte [rdi + 0x18], 0
mov r9d, 0x18
mov qword [rdi], rax
movabs rax, 0x20746f6e20736177
mov qword [rdi + 8], rax
movabs rax, 0xa64657461657263
mov qword [rdi + 0x10], rax
mov dword [rsp + 0x68], 0x18
jmp 0x403280
mov rcx, qword [rdi]
xor ebx, ebx
call fcn.00401720
mov eax, ebx
add rsp, 0xa8
pop rbx
pop rsi
pop rdi
pop rbp
pop r12
pop r13
pop r14
pop r15
ret
lea eax, [rsi + 2]
cmp r14d, eax
jle 0x4031a4
mov rcx, qword [rdi + rsi*8 + 0x10]
mov qword [rsp + 0x40], rdx
call sub.msvcrt.dll_atol
mov rdx, qword [rsp + 0x40]
mov r13d, eax
jmp 0x403168
lea eax, [rsi + 2]
cmp r14d, eax
jle 0x4031a4
mov rcx, qword [rdi + rsi*8 + 0x10]
mov qword [rsp + 0x40], rdx
call sub.msvcrt.dll_atol
mov rdx, qword [rsp + 0x40]
mov dword [rsp + 0x48], eax
jmp 0x403168
lea eax, [rsi + 2]
cmp r14d, eax
jle 0x4031a4
mov rdx, qword [rdi + rsi*8 + 0x10]
jmp 0x403168
lea eax, [rsi + 2]
cmp r14d, eax
jle 0x4031a4
mov rcx, qword [rdi + rsi*8 + 0x10]
mov qword [rsp + 0x40], rdx
call sub.msvcrt.dll_atol
mov rdx, qword [rsp + 0x40]
mov ebp, eax
jmp 0x403168
mov rax, qword [rdi + 8]
lea rcx, str.unrecognized_option___c_n
or ebx, 0xffffffff
movsx edx, byte [rax]
call sub.msvcrt.dll_printf
mov rcx, qword [rdi]
call fcn.00401720
jmp 0x40332d
xor esi, esi
test ebx, ebx
jne 0x4032b5
lea r9, [rsp + 0x6c]
mov r8d, dword [rsp + 0x64]
mov rdx, r14
mov esi, ebx
mov qword [rsp + 0x20], 0
mov rcx, qword [rsp + 0x78]
call qword [sym.imp.KERNEL32.dll_WriteFile]
jmp 0x4032b5
movabs rax, 0x3433323174736554
mov dword [rsp + 0x68], 9
mov r9d, 9
mov qword [rdi], rax
mov eax, 0xa
mov word [rdi + 8], ax
jmp 0x403280
test ebx, ebx
je 0x403537
xor ebx, ebx
jmp 0x40332d
call qword [sym.imp.KERNEL32.dll_GetLastError]
lea rdx, str.Error:_PeekNamedPipe_failed_with__i_n
mov rcx, rdi
mov r8d, eax
call sub.msvcrt.dll_sprintf
mov r9d, eax
mov dword [rsp + 0x68], eax
jmp 0x403280
mov r9, r10
mov r8d, ebp
mov rdx, rdi
mov rcx, qword [rsp + 0x70]
mov dword [rsp + 0x68], 0
mov qword [rsp + 0x20], 0
call qword [sym.imp.KERNEL32.dll_ReadFile]
test eax, eax
mov dword [rsp + 0x6c], eax
je 0x4034fd
mov r9d, dword [rsp + 0x68]
jmp 0x403280
mov rcx, qword [rdi + rsi*8 + 0x10]
mov qword [rsp + 0x40], rdx
call sub.msvcrt.dll_atol
mov rdx, qword [rsp + 0x40]
mov r12d, eax
jmp 0x403168
lea rdx, [rsp + 0x70]
lea rcx, [rsp + 0x80]
lea r8, [rsp + 0x78]
call fcn.00401550
mov ebx, eax
jmp 0x4031c3
mov rdx, qword [sym.imp.KERNEL32.dll_GetLastError]
mov qword [rsp + 0x58], rdx
call rdx
mov rdx, qword [rsp + 0x58]
cmp eax, 0x3e5
je 0x4034b9
call rdx
lea rdx, str.Error:_ReadFile_failed_with__i_n
mov rcx, rdi
mov r8d, eax
call sub.msvcrt.dll_sprintf
mov r9d, eax
mov dword [rsp + 0x68], eax
jmp 0x403280
xor edx, edx
mov rcx, qword [rsp + 0x80]
call qword [sym.imp.KERNEL32.dll_TerminateProcess]
jmp 0x40332d
lea rcx, str.you_need_to_specify_a_host_with__t._Try__h_for_more_options
or ebx, 0xffffffff
call sub.msvcrt.dll_puts
jmp 0x40332d
lea rcx, str.failed_to_load_ICMP_library
or ebx, 0xffffffff
call sub.msvcrt.dll_puts
jmp 0x40332d
lea rcx, str.failed_to_allocate_memory_for_transfer_buffers
or ebx, 0xffffffff
call sub.msvcrt.dll_puts
jmp 0x40332d
call qword [sym.imp.KERNEL32.dll_GetLastError]
lea rcx, str.unable_to_create_ICMP_file:__u_n
mov edx, eax
call sub.msvcrt.dll_printf
mov ebx, dword [rsp + 0x40]
jmp 0x40332d