Function at 0x4246da
Capabilities:
Send data
Send data on socket

Disassembly:
sub esp, 0x100
push ebp
push esi
mov esi, eax
mov eax, dword [esi + 0x10]
mov ebp, dword [eax]
mov eax, dword [esp + 0x10c]
add eax, 0xfffffffd
push edi
cmp eax, 4
ja case.0x4246d3.4
jmp dword [eax*4 + 0x424980]
mov eax, dword [esi + 0x15c]
movzx ecx, byte [eax + 2]
movzx edx, byte [eax + 3]
shl cx, 8
movzx edi, cx
movzx ecx, word [esi + 0x40]
lea eax, [ecx + 1]
or edi, edx
and eax, 0xffff
cmp eax, edi
jne 0x42470a
mov dword [esi + 0x18], 0
jmp 0x424721
cmp ecx, edi
jne 0x4247b1
push edi
push str.Received_last_DATA_packet_block__d_again._n
push ebp
call fcn.0040ffc0
add esp, 0xc
mov word [esi + 0x40], di
mov eax, dword [esi + 0x160]
mov byte [eax], 0
mov ecx, dword [esi + 0x160]
mov byte [ecx + 1], 4
movzx eax, word [esi + 0x40]
mov ecx, dword [esi + 0x160]
mov edx, eax
shr edx, 8
mov byte [ecx + 2], dl
mov edx, dword [esi + 0x160]
mov byte [edx + 3], al
mov eax, dword [esi + 0x148]
mov edx, dword [esi + 0x160]
push eax
mov eax, dword [esi + 0x14]
lea ecx, [esi + 0xc8]
push ecx
push 0
push 4
push edx
push eax
call dword [sym.imp.WS2_32.dll_sendto]
test eax, eax
js 0x4248c4
mov edx, dword [esi + 0x154]
xor eax, eax
add edx, 4
cmp dword [esi + 0x14c], edx
setl al
add esi, 0x38
push esi
lea eax, [eax + eax + 1]
mov dword [esi - 0x38], eax
call fcn.00504fee
add esp, 4
pop edi
pop esi
xor eax, eax
pop ebp
add esp, 0x100
ret
push eax
push edi
push str.Received_unexpected_DATA_packet_block__d__expecting_block__d_n
push ebp
call fcn.0040ffc0
add esp, 0x10
pop edi
pop esi
xor eax, eax
pop ebp
add esp, 0x100
ret
xor ecx, ecx
mov word [esi + 0x40], cx
mov dword [esi + 0x18], ecx
mov edx, dword [esi + 0x160]
mov byte [edx], cl
mov eax, dword [esi + 0x160]
mov byte [eax + 1], 4
movzx eax, word [esi + 0x40]
mov edx, dword [esi + 0x160]
mov ecx, eax
shr ecx, 8
mov byte [edx + 2], cl
mov ecx, dword [esi + 0x160]
mov byte [ecx + 3], al
mov edx, dword [esi + 0x148]
mov ecx, dword [esi + 0x160]
push edx
mov edx, dword [esi + 0x14]
lea eax, [esi + 0xc8]
push eax
push 0
push 4
push ecx
push edx
call dword [sym.imp.WS2_32.dll_sendto]
test eax, eax
jns 0x424839
push 0x100
lea eax, [esp + 0x10]
push eax
jmp 0x4248ce
mov dword [esi], 1
add esi, 0x38
push esi
call fcn.00504fee
add esp, 4
pop edi
pop esi
xor eax, eax
pop ebp
add esp, 0x100
ret
movzx ecx, word [esi + 0x40]
inc dword [esi + 0x18]
mov eax, dword [esi + 0x18]
push eax
inc ecx
and ecx, 0xffff
push ecx
push str.Timeout_waiting_for_block__d_ACK.__Retries___d_n
push ebp
call fcn.0040ffc0
mov edx, dword [esi + 0x18]
add esp, 0x10
cmp edx, dword [esi + 0x20]
jle 0x424899
pop edi
mov dword [esi + 8], 0xffffff9d
mov dword [esi], 3
pop esi
xor eax, eax
pop ebp
add esp, 0x100
ret
mov eax, dword [esi + 0x148]
mov edx, dword [esi + 0x160]
push eax
mov eax, dword [esi + 0x14]
lea ecx, [esi + 0xc8]
push ecx
push 0
push 4
push edx
push eax
call dword [sym.imp.WS2_32.dll_sendto]
test eax, eax
jns 0x42494f
push 0x100
lea ecx, [esp + 0x10]
push ecx
call dword [sym.imp.WS2_32.dll_WSAGetLastError]
push eax
call fcn.00405770
push eax
push 0x54d2a4
push ebp
call fcn.00410090
add esp, 0x18
pop edi
pop esi
mov eax, 0x37
pop ebp
add esp, 0x100
ret
mov edx, dword [esi + 0x160]
mov byte [edx], 0
mov eax, dword [esi + 0x160]
mov byte [eax + 1], 5
movzx eax, word [esi + 0x40]
mov edx, dword [esi + 0x160]
mov ecx, eax
shr ecx, 8
mov byte [edx + 2], cl
mov ecx, dword [esi + 0x160]
mov byte [ecx + 3], al
mov edx, dword [esi + 0x148]
mov ecx, dword [esi + 0x160]
push edx
mov edx, dword [esi + 0x14]
lea eax, [esi + 0xc8]
push eax
push 0
push 4
push ecx
push edx
call dword [sym.imp.WS2_32.dll_sendto]
mov dword [esi], 3
pop edi
pop esi
xor eax, eax
pop ebp
add esp, 0x100
ret
push str.tftp_rx:_internal_error
push 0x54d2a4
push ebp
call fcn.00410090
add esp, 0xc
pop edi
pop esi
mov eax, 0x47
pop ebp
add esp, 0x100
ret