Function at 0x140072670
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, 0x158
mov rax, qword [rcx + 0x20]
mov rbx, qword [rax + 0x660]
mov r10d, dword [rbx]
mov rdi, rcx
mov rcx, qword [rbx + 0x10]
mov rsi, rdx
test r10d, r10d
sete r8b
xor edx, edx
movzx r8d, r8b
call sym.Curl_timeleft
test rax, rax
js 0x140072710
mov rbp, qword [sym.imp.msvcrt.dll__time64]
xor ecx, ecx
call rbp
mov rdx, rax
movsxd rax, dword [rbx + 0x24]
add rax, qword [rbx + 0x30]
cmp rdx, rax
jle 0x14007271d
xor ecx, ecx
call rbp
mov edx, 7
mov qword [rbx + 0x30], rax
mov byte [rsi], 0
mov rcx, rbx
call sym.tftp_state_machine
mov ebp, eax
test eax, eax
jne 0x1400726f9
cmp dword [rbx], 3
sete byte [rsi]
je 0x140072800
xor ebp, ebp
mov eax, ebp
add rsp, 0x158
pop rbx
pop rsi
pop rdi
pop rbp
pop r12
pop r13
pop r14
pop r15
ret
mov dword [rbx + 8], 0xffffff9d
mov dword [rbx], 3
mov byte [rsi], 0
mov rcx, qword [rbx + 0x18]
xor r9d, r9d
mov r8, 0xffffffffffffffff
mov rdx, 0xffffffffffffffff
call sym.Curl_socket_check
cmp eax, 0xffffffff
je 0x140072810
test eax, eax
je 0x1400726f7
mov rax, qword [rdi + 0x20]
lea r8, [rsp + 0x4c]
lea rbp, [rsp + 0x50]
xor r9d, r9d
mov dword [rsp + 0x4c], pe_nt_image_headers64
mov r15, qword [rax + 0x660]
mov eax, dword [r15 + 0x144]
mov rdx, qword [r15 + 0x150]
mov rcx, qword [r15 + 0x18]
mov qword [rsp + 0x28], r8
mov qword [rsp + 0x20], rbp
lea r8d, [rax + 4]
call qword [sym.imp.WS2_32.dll_recvfrom]
mov r9d, dword [r15 + 0x138]
mov dword [r15 + 0x13c], eax
test r9d, r9d
je 0x1400728f0
cmp eax, 3
jle 0x1400728d0
mov rbp, qword [r15 + 0x150]
movzx edx, word [rbp]
rol dx, 8
movzx ecx, dx
mov dword [r15 + 0xc], ecx
cmp dx, 5
je 0x140072850
jg 0x140072920
cmp dx, 3
je 0x140072b70
cmp dx, 4
jne 0x140072bd0
mov rcx, rdi
call sym.Curl_pgrsUpdate
test eax, eax
jne 0x140072beb
mov edx, dword [rbx + 0xc]
jmp 0x1400726dd
mov rcx, rdi
xor ebp, ebp
call sym.Curl_xfer_setup_nop
jmp 0x1400726f9
call qword [sym.imp.WS2_32.dll_WSAGetLastError]
lea rdx, [rsp + 0x50]
mov r8d, 0x100
xor ebp, ebp
mov ecx, eax
call sym.Curl_strerror
lea rdx, [0x14010c425]
mov rcx, rdi
mov r8, rax
call sym.Curl_failf
mov dword [rbx + 0xc], 5
jmp 0x1400726f9
sub eax, 4
lea r13, [rbp + 4]
xor edx, edx
movsxd r12, eax
movzx eax, word [rbp + 2]
mov rcx, r13
mov r8, r12
rol ax, 8
movzx eax, ax
mov dword [r15 + 8], eax
call sym.memchr
test rax, rax
je 0x1400727e7
sub rax, r13
cmp rax, r12
jae 0x1400727e7
test byte [rdi + 0xa37], 0x10
je 0x1400727e7
mov rax, qword [rdi + 0x11e8]
test rax, rax
je 0x1400728b1
mov r8d, dword [rax + 8]
test r8d, r8d
jle 0x1400727e7
mov r8, r13
lea rdx, str.TFTP_error:__s
mov rcx, rdi
call sym.Curl_infof
jmp 0x1400727e7
lea rdx, str.Received_too_short_packet
mov rcx, rdi
call sym.Curl_failf
mov dword [r15 + 0xc], 7
jmp 0x1400727f7
movsxd r8, dword [rsp + 0x4c]
lea rcx, [r15 + 0xb8]
mov rdx, rbp
mov r12, r8
call sym.memcpy
mov dword [r15 + 0x138], r12d
mov eax, dword [r15 + 0x13c]
jmp 0x1400727a4
cmp dx, 6
jne 0x140072bd0
sub eax, 2
mov rdx, qword [r15 + 0x10]
add rbp, 2
mov dword [r15 + 0x144], 0x200
cdqe
lea r12, [rbp + rax]
mov qword [rsp + 0x30], rdx
cmp rbp, r12
jae 0x1400727e7
test rdx, rdx
je 0x140072c02
mov qword [rsp + 0x38], rbx
mov r14, rdx
mov qword [rsp + 0x1a0], rdi
mov qword [rsp + 0x1a8], rsi
jmp 0x140072a1c
mov r8d, 0xa
xor edx, edx
mov rcx, r13
call sym.strtol
mov r9d, eax
test eax, eax
je 0x140072da5
cmp eax, 0xffb8
jg 0x140072d85
cmp eax, 7
jle 0x140072dd5
mov eax, dword [r15 + 0x148]
cmp r9d, eax
jg 0x140072dbb
mov dword [r15 + 0x144], r9d
test byte [r14 + 0xa37], 0x10
je 0x140072a10
mov rdx, qword [r14 + 0x11e8]
test rdx, rdx
je 0x1400729e3
mov edx, dword [rdx + 8]
test edx, edx
jle 0x140072a10
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 dword [rax]
cmp rbx, r12
jae 0x140072d6b
mov rbp, rbx
mov r13, r12
xor edx, edx
mov rcx, rbp
sub r13, rbp
mov r8, r13
call sym.memchr
test rax, rax
je 0x140072d50
sub rax, rbp
lea rbx, [rax + 1]
mov rdi, rax
cmp rbx, r13
jae 0x140072d50
mov rsi, r13
xor edx, edx
sub rsi, rbx
add rbx, rbp
mov r8, rsi
mov rcx, rbx
call sym.memchr
mov rdx, rax
sub rdx, rbx
test rax, rax
cmovne rsi, rdx
lea rbx, [rdi + rsi + 2]
cmp r13, rbx
jb 0x140072d50
mov rcx, rbp
add rbx, rbp
call sym.strlen
lea r13, [rbp + rax + 1]
test byte [r14 + 0xa37], 0x10
je 0x140072abe
mov rax, qword [r14 + 0x11e8]
test rax, rax
je 0x140072aa9
mov ecx, dword [rax + 8]
test ecx, ecx
jle 0x140072abe
mov r9, r13
mov r8, rbp
lea rdx, str.got_option__s__value__s_
mov rcx, r14
call sym.Curl_infof
mov r8d, 7
lea rdx, str.blksize
mov rcx, rbp
call sym.curl_strnequal
test eax, eax
jne 0x140072980
mov r8d, 5
lea rdx, str.tsize
mov rcx, rbp
call sym.curl_strnequal
test eax, eax
je 0x140072a10
mov r8d, 0xa
xor edx, edx
mov rcx, r13
call sym.strtol
mov ebp, eax
test byte [r14 + 0xa37], 0x10
je 0x140072b40
mov rax, qword [r14 + 0x11e8]
test rax, rax
je 0x140072b27
mov eax, dword [rax + 8]
test eax, eax
jle 0x140072b40
mov r9d, ebp
lea r8, str.tsize_parsed_from_OACK
lea rdx, str._s___ld_
mov rcx, r14
call sym.Curl_infof
test byte [r14 + 0x1266], 2
jne 0x140072a10
test ebp, ebp
je 0x140072e0a
movsxd rdx, ebp
mov rcx, r14
call sym.Curl_pgrsSetDownloadSize
jmp 0x140072a10
cmp eax, 4
je 0x1400727e7
movzx edx, word [r15 + 0x14c]
movzx ecx, word [rbp + 2]
add edx, 1
rol cx, 8
cmp cx, dx
jne 0x1400727e7
sub eax, 4
lea r8, [rbp + 4]
mov edx, 1
mov rcx, rdi
movsxd r9, eax
call sym.Curl_client_write
mov ebp, eax
test eax, eax
je 0x1400727e7
mov edx, 5
mov rcx, r15
call sym.tftp_state_machine
jmp 0x1400726f9
lea r8, str.Internal_error:_Unexpected_packet
lea rdx, [0x14010c425]
mov rcx, rdi
call sym.Curl_failf
jmp 0x1400727e7
mov edx, 5
mov rcx, r15
mov ebp, 0x2a
call sym.tftp_state_machine
jmp 0x1400726f9
mov qword [rsp + 0x38], rbx
mov qword [rsp + 0x1a8], rsi
jmp 0x140072c41
mov r8d, 5
lea rdx, str.tsize
mov rcx, rbp
call sym.curl_strnequal
test eax, eax
jne 0x140072d15
cmp r14, r12
jae 0x140072df8
mov rbp, r14
mov r13, r12
xor edx, edx
mov rcx, rbp
sub r13, rbp
mov r8, r13
call sym.memchr
test rax, rax
je 0x140072d50
sub rax, rbp
mov r14, rax
lea rax, [rax + 1]
cmp rax, r13
jae 0x140072d50
mov rbx, r13
lea rsi, [rbp + rax]
xor edx, edx
sub rbx, rax
mov rcx, rsi
mov r8, rbx
call sym.memchr
mov rdx, rax
sub rdx, rsi
test rax, rax
cmovne rbx, rdx
lea r14, [r14 + rbx + 2]
cmp r13, r14
jb 0x140072d50
mov rcx, rbp
add r14, rbp
call sym.strlen
mov r8d, 7
lea rdx, str.blksize
mov rcx, rbp
lea r13, [rbp + rax + 1]
call sym.curl_strnequal
test eax, eax
je 0x140072c18
xor edx, edx
mov r8d, 0xa
mov rcx, r13
call sym.strtol
test eax, eax
je 0x140072da5
cmp eax, 0xffb8
jg 0x140072d85
cmp eax, 7
jle 0x140072dd5
cmp dword [r15 + 0x148], eax
jl 0x140072db8
mov dword [r15 + 0x144], eax
jmp 0x140072c35
xor edx, edx
mov r8d, 0xa
mov rcx, r13
call sym.strtol
test byte [0x1266], 2
jne 0x140072c35
test eax, eax
je 0x140072e0a
movsxd rdx, eax
xor ecx, ecx
call sym.Curl_pgrsSetDownloadSize
jmp 0x140072c35
mov rcx, qword [rsp + 0x30]
lea rdx, str.Malformed_ACK_packet__rejecting
call sym.Curl_failf
mov ebp, 0x47
jmp 0x1400726f9
mov rbx, qword [rsp + 0x38]
mov rdi, qword [rsp + 0x1a0]
mov rsi, qword [rsp + 0x1a8]
jmp 0x1400727e7
mov rcx, qword [rsp + 0x30]
mov r9d, 0xffb8
lea r8, str.blksize_is_larger_than_max_supported
lea rdx, str._s___d_
call sym.Curl_failf
jmp 0x140072d61
mov rcx, qword [rsp + 0x30]
lea rdx, str.invalid_blocksize_value_in_OACK_packet
call sym.Curl_failf
jmp 0x140072d61
mov r9d, eax
mov rcx, qword [rsp + 0x30]
lea r8, str.server_requested_blksize_larger_than_allocated
lea rdx, str._s___ld_
call sym.Curl_failf
jmp 0x140072d61
mov rcx, qword [rsp + 0x30]
mov r9d, 8
lea r8, str.blksize_is_smaller_than_min_supported
lea rdx, str._s___d_
call sym.Curl_failf
jmp 0x140072d61
mov rbx, qword [rsp + 0x38]
mov rsi, qword [rsp + 0x1a8]
jmp 0x1400727e7
mov rcx, qword [rsp + 0x30]
mov r8, r13
lea rdx, str.invalid_tsize__:_s:__value_in_OACK_packet
call sym.Curl_failf
jmp 0x140072d61