Function at 0x4ae678
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.0x4ae453.4
jmp dword [eax*4 + 0x4ae700]
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 0x4ae48a
mov dword [esi + 0x18], 0
jmp 0x4ae4a1
cmp ecx, edi
jne 0x4ae531
push edi
push str.Received_last_DATA_packet_block__d_again._n
push ebp
call fcn.00499d60
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 0x4ae644
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.004d846d
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.00499d60
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 0x4ae5b9
push 0x100
lea eax, [esp + 0x10]
push eax
jmp 0x4ae64e
mov dword [esi], 1
add esi, 0x38
push esi
call fcn.004d846d
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.00499d60
mov edx, dword [esi + 0x18]
add esp, 0x10
cmp edx, dword [esi + 0x20]
jle 0x4ae619
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 0x4ae6cf
push 0x100
lea ecx, [esp + 0x10]
push ecx
call dword [sym.imp.WS2_32.dll_WSAGetLastError]
push eax
call fcn.0048f4e0
push eax
push 0x51c264
push ebp
call fcn.00499e30
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 0x51c264
push ebp
call fcn.00499e30
add esp, 0xc
pop edi
pop esi
mov eax, 0x47
pop ebp
add esp, 0x100
ret