Function at 0x1400786b0
Capabilities:
Receive data
Receive data on socket

Disassembly:
push r15
push r14
push r13
push r12
push rbp
push rdi
push rsi
push rbx
sub rsp, 0x148
mov rax, qword [rcx + 0x18]
mov rbp, qword [rax + 0x650]
mov r9d, dword [rbp]
mov r12, rcx
mov rcx, qword [rbp + 0x10]
mov rbx, rdx
test r9d, r9d
sete r8b
xor edx, edx
movzx r8d, r8b
call sym.Curl_timeleft
test rax, rax
js 0x140078760
mov rsi, qword [sym.imp.msvcrt.dll__time64]
xor ecx, ecx
call rsi
mov r8, rax
movsxd rax, dword [rbp + 0x24]
add rax, qword [rbp + 0x30]
cmp r8, rax
jle 0x140078850
xor ecx, ecx
call rsi
mov edx, 7
mov qword [rbp + 0x30], rax
mov byte [rbx], 0
mov rcx, rbp
call sym.tftp_state_machine
mov r14d, eax
test eax, eax
jne 0x140078741
cmp dword [rbp], 3
sete byte [rbx]
je 0x140078af8
xor r14d, r14d
mov eax, r14d
add rsp, 0x148
pop rbx
pop rsi
pop rdi
pop rbp
pop r12
pop r13
pop r14
pop r15
ret
mov dword [rbp + 8], 0xffffff9d
mov dword [rbp], 3
mov byte [rbx], 0
mov rcx, qword [rbp + 0x18]
xor r9d, r9d
mov r8, 0xffffffffffffffff
mov rdx, 0xffffffffffffffff
call sym.Curl_socket_check
cmp eax, 0xffffffff
je 0x140078860
test eax, eax
je 0x14007873e
mov rax, qword [r12 + 0x18]
lea r8, [rsp + 0x40]
xor r9d, r9d
mov r13, qword [rax + 0x650]
mov dword [rsp + 0x40], pe_nt_image_headers64
mov eax, dword [r13 + 0x144]
mov rdx, qword [r13 + 0x150]
mov rcx, qword [r13 + 0x18]
mov qword [rsp + 0x28], r8
lea r8, [r13 + 0xb8]
mov qword [rsp + 0x20], r8
lea r8d, [rax + 4]
call qword [sym.imp.WS2_32.dll_recvfrom]
mov dword [r13 + 0x13c], eax
mov edx, dword [rsp + 0x40]
mov dword [r13 + 0x138], edx
cmp eax, 3
jle 0x140078c30
mov r11, qword [r13 + 0x150]
movzx edx, word [r11]
rol dx, 8
movzx ecx, dx
mov dword [r13 + 0xc], ecx
cmp dx, 5
je 0x140078bb0
jg 0x1400788a0
cmp dx, 3
je 0x140078b08
cmp dx, 4
jne 0x140078b68
mov rcx, r12
call sym.Curl_pgrsUpdate
test eax, eax
jne 0x140078b8e
mov edx, dword [rbp + 0xc]
jmp 0x140078722
mov byte [rbx], 0
jmp 0x140078771
call qword [sym.imp.WS2_32.dll_WSAGetLastError]
lea rdx, [rsp + 0x40]
mov r8d, 0x100
xor r14d, r14d
mov ecx, eax
call sym.Curl_strerror
lea rdx, [0x140168b05]
mov rcx, r12
mov r8, rax
call sym.Curl_failf
mov dword [rbp + 0xc], 5
jmp 0x140078741
cmp dx, 6
jne 0x140078b68
sub eax, 2
lea rsi, [r11 + 2]
mov r14, qword [r13 + 0x10]
mov dword [r13 + 0x144], 0x200
cdqe
lea r15, [rsi + rax]
cmp rsi, r15
jae 0x140078836
mov qword [rsp + 0x38], r13
mov r13, rsi
mov qword [rsp + 0x190], r12
mov qword [rsp + 0x198], rbx
jmp 0x14007899c
mov r8d, 0xa
xor edx, edx
mov rcx, r12
call sym.strtol
mov r9d, eax
test eax, eax
je 0x140078cf3
cmp eax, 0xffb8
jg 0x140078ccc
cmp eax, 7
jle 0x140078ca5
mov rax, qword [rsp + 0x38]
mov eax, dword [rax + 0x148]
cmp r9d, eax
jg 0x140078c84
mov rsi, qword [rsp + 0x38]
mov dword [rsi + 0x144], r9d
test r14, r14
je 0x140078990
test byte [r14 + 0xa47], 0x10
je 0x140078990
mov rdx, qword [r14 + 0x1270]
test rdx, rdx
je 0x140078961
mov edx, dword [rdx + 8]
test edx, edx
jle 0x140078990
mov dword [rsp + 0x28], eax
lea rax, str.requested
lea r8, str.blksize_parsed_from_OACK
mov rcx, r14
mov qword [rsp + 0x20], rax
lea rdx, str._s___d___s___d_
call sym.Curl_infof
nop word [rax + rax]
cmp r15, rdi
jbe 0x140078c6a
mov r13, rdi
mov r12, r15
xor edx, edx
mov rcx, r13
sub r12, r13
mov r8, r12
call sym.memchr
mov r9, rax
sub r9, r13
test rax, rax
mov rsi, r9
cmove rsi, r12
lea rdi, [rsi + 1]
cmp r12, rdi
jbe 0x140078c50
mov rbx, r12
xor edx, edx
sub rbx, rdi
add rdi, r13
mov r8, rbx
mov rcx, rdi
call sym.memchr
mov rdx, rax
sub rdx, rdi
test rax, rax
cmovne rbx, rdx
lea rdi, [rsi + rbx + 2]
cmp r12, rdi
jb 0x140078c50
mov rcx, r13
add rdi, r13
call sym.strlen
lea r12, [r13 + rax + 1]
test r14, r14
je 0x140078a44
test byte [r14 + 0xa47], 0x10
je 0x140078a44
mov rax, qword [r14 + 0x1270]
test rax, rax
je 0x140078a2f
mov ecx, dword [rax + 8]
test ecx, ecx
jle 0x140078a44
mov r9, r12
mov r8, r13
lea rdx, str.got_option__s__value__s_
mov rcx, r14
call sym.Curl_infof
mov r8d, 7
lea rdx, str.blksize
mov rcx, r13
call sym.curl_strnequal
test eax, eax
jne 0x1400788f0
mov r8d, 5
lea rdx, str.tsize
mov rcx, r13
call sym.curl_strnequal
test eax, eax
je 0x140078990
mov r8d, 0xa
xor edx, edx
mov rcx, r12
call sym.strtol
mov r13d, eax
test r14, r14
je 0x140078acc
test byte [r14 + 0xa47], 0x10
je 0x140078acc
mov rdx, qword [r14 + 0x1270]
test rdx, rdx
je 0x140078ab3
mov eax, dword [rdx + 8]
test eax, eax
jle 0x140078acc
mov r9d, r13d
lea r8, str.tsize_parsed_from_OACK
lea rdx, str._s___ld_
mov rcx, r14
call sym.Curl_infof
test byte [r14 + 0x131e], 8
jne 0x140078990
test r13d, r13d
je 0x140078d0d
movsxd rdx, r13d
mov rcx, r14
call sym.Curl_pgrsSetDownloadSize
jmp 0x140078990
mov rcx, r12
call sym.Curl_xfer_setup_nop
jmp 0x14007873e
cmp eax, 4
je 0x140078836
movzx edx, word [r13 + 0x14c]
movzx ecx, word [r11 + 2]
add edx, 1
rol cx, 8
cmp cx, dx
jne 0x140078836
sub eax, 4
lea r8, [r11 + 4]
mov edx, 1
mov rcx, r12
movsxd r9, eax
call sym.Curl_client_write
mov r14d, eax
test eax, eax
je 0x140078836
mov edx, 5
mov rcx, r13
call sym.tftp_state_machine
jmp 0x140078741
mov rcx, r12
lea r8, str.Internal_error:_Unexpected_packet
lea rdx, [0x140168b05]
call sym.Curl_failf
mov rcx, r12
call sym.Curl_pgrsUpdate
test eax, eax
je 0x140078846
mov edx, 5
mov rcx, r13
mov r14d, 0x2a
call sym.tftp_state_machine
jmp 0x140078741
sub eax, 4
lea rdi, [r11 + 4]
xor edx, edx
movsxd rsi, eax
movzx eax, word [r11 + 2]
mov rcx, rdi
mov r8, rsi
rol ax, 8
movzx eax, ax
mov dword [r13 + 8], eax
call sym.memchr
test rax, rax
je 0x140078836
sub rax, rdi
cmp rsi, rax
jbe 0x140078836
test byte [r12 + 0xa47], 0x10
je 0x140078836
mov rax, qword [r12 + 0x1270]
test rax, rax
je 0x140078c15
mov r8d, dword [rax + 8]
test r8d, r8d
jle 0x140078836
mov r8, rdi
lea rdx, str.TFTP_error:__s
mov rcx, r12
call sym.Curl_infof
jmp 0x140078836
lea rdx, str.Received_too_short_packet
mov rcx, r12
call sym.Curl_failf
mov dword [r13 + 0xc], 7
jmp 0x140078846
mov rcx, r14
lea rdx, str.Malformed_ACK_packet__rejecting
mov r14d, 0x47
call sym.Curl_failf
jmp 0x140078741
mov r13, qword [rsp + 0x38]
mov r12, qword [rsp + 0x190]
mov rbx, qword [rsp + 0x198]
jmp 0x140078836
mov rcx, r14
lea r8, str.server_requested_blksize_larger_than_allocated
lea rdx, str._s___ld_
mov r14d, 0x47
call sym.Curl_failf
jmp 0x140078741
mov rcx, r14
mov r9d, 8
lea r8, str.blksize_is_smaller_than_min_supported
mov r14d, 0x47
lea rdx, str._s___d_
call sym.Curl_failf
jmp 0x140078741
mov rcx, r14
mov r9d, 0xffb8
lea r8, str.blksize_is_larger_than_max_supported
mov r14d, 0x47
lea rdx, str._s___d_
call sym.Curl_failf
jmp 0x140078741
mov rcx, r14
lea rdx, str.invalid_blocksize_value_in_OACK_packet
mov r14d, 0x47
call sym.Curl_failf
jmp 0x140078741
mov rcx, r14
mov r8, r12
lea rdx, str.invalid_tsize__:_s:__value_in_OACK_packet
mov r14d, 0x47
call sym.Curl_failf
jmp 0x140078741