Function at 0x40abf0
Capabilities:
Get file size
Get local ipv4 addresses
Get socket information

Disassembly:
sub esp, 0x440
mov eax, dword [0x42a2e4]
xor eax, esp
mov dword [esp + 0x438], eax
movzx eax, word [edi + 0x4278]
push ebx
push ebp
push esi
xor esi, esi
push eax
mov dword [esp + 0x1c], esi
mov byte [edi + 0x4475], 0
call dword [sym.imp.WS2_32.dll_ntohs]
movzx ebp, ax
mov dword [esp + 0x14], ebp
cmp ebp, 1
je 0x40ac63
cmp ebp, 2
je 0x40ac63
push ebp
push str.Unexpected_request__d_from_peer
push esi
call fcn.004010eb
add esp, 0xc
push str.Returning_EBADOP_to_Peer
push esi
call fcn.004010eb
push 4
mov ebx, edi
call fcn.0040a85c
add esp, 0xc
mov eax, 0x3ec
jmp 0x40b2d6
mov ebx, dword [sym.imp.KERNEL32.dll_lstrlenA]
lea esi, [edi + 0x427a]
push esi
call ebx
cmp eax, 0x104
jl 0x40ac82
push str.File_name_too_long__return_EBADOP_to_peer
push 0
jmp 0x40ac48
push 0x25
push esi
call fcn.0040f1e0
pop ecx
pop ecx
test eax, eax
je 0x40aca0
push str.Error:_Tftpd32_does_not_handle_filenames_with_a_percent_sign
push 1
call fcn.004010eb
push 2
jmp 0x40ac4f
push esi
push str.FileName_is___s_
push 9
call fcn.004010eb
add esp, 0xc
cmp ebp, 1
jne 0x40acc3
cmp dword [0x42b5cc], 0
je 0x40acc3
call fcn.0040be13
push esi
call ebx
mov esi, eax
inc esi
push str.netascii
lea ebp, [esi + edi + 0x427a]
push ebp
call dword [sym.imp.KERNEL32.dll_lstrcmpiA]
test eax, eax
je 0x40ad49
push str.ascii
push ebp
call dword [sym.imp.KERNEL32.dll_lstrcmpiA]
test eax, eax
je 0x40ad49
push str.mail
push ebp
call dword [sym.imp.KERNEL32.dll_lstrcmpiA]
test eax, eax
jne 0x40ad09
mov dword [edi + 0x50], 2
jmp 0x40ad50
push str.octet
push ebp
call dword [sym.imp.KERNEL32.dll_lstrcmpiA]
test eax, eax
je 0x40ad43
push str.binary
push ebp
call dword [sym.imp.KERNEL32.dll_lstrcmpiA]
test eax, eax
je 0x40ad43
push str.OCTET
push ebp
call dword [sym.imp.KERNEL32.dll_lstrcmpiA]
test eax, eax
je 0x40ad43
push str.Uncorrect_message
jmp 0x40ac7e
and dword [edi + 0x50], 0
jmp 0x40ad50
mov dword [edi + 0x50], 1
push ebp
push str.Mode_is___s_
push 0xc
call fcn.004010eb
add esp, 0xc
push ebp
call ebx
cmp dword [esp + 0x14], 1
lea eax, [esi + eax + 1]
mov dword [esp + 0xc], eax
mov eax, str.Read
je 0x40ad7c
mov eax, str.Write
push ebp
lea esi, [edi + 0x427a]
push esi
push eax
push str._s_request_for_file___s_._Mode__s
push 1
call fcn.004010eb
add esp, 0x14
call fcn.0040a8f0
push dword [esp + 0x14]
push esi
call fcn.0040a7a8
pop ecx
pop ecx
test eax, eax
jne 0x40adcd
call fcn.0040cc32
push eax
push esi
push str.Error_EACCESS_on_file__s._Ext_error__s
push 1
call fcn.004010eb
push 2
mov ebx, edi
call fcn.0040a85c
add esp, 0x14
jmp 0x40ac59
mov ebp, dword [sym.imp.KERNEL32.dll_lstrcpyA]
push 0x42b858
lea eax, [esp + 0x3c]
push eax
call ebp
lea eax, [esp + 0x38]
push eax
call ebx
test eax, eax
jle 0x40adf7
cmp byte [esp + eax + 0x37], 0x5c
je 0x40adf7
mov byte [esp + eax + 0x38], 0x5c
inc eax
push esi
lea eax, [esp + eax + 0x3c]
push eax
call ebp
lea eax, [esp + 0x38]
push eax
push str.final_name_:___s_
push 0xa
call fcn.004010eb
add esp, 0xc
lea eax, [esp + 0x38]
push eax
call ebx
cmp eax, 0x104
jge 0x40ac79
mov esi, dword [esp + 0x14]
xor ebp, ebp
push ebp
mov eax, esi
dec eax
neg eax
sbb eax, eax
add eax, 3
push 0x8000020
push eax
mov eax, esi
dec eax
neg eax
sbb eax, eax
push ebp
and eax, 0xc0000000
push 1
add eax, 0x80000000
push eax
lea eax, [esp + 0x50]
push eax
call dword [sym.imp.KERNEL32.dll_CreateFileA]
mov dword [edi + 0x24], eax
cmp eax, 0xffffffff
jne 0x40ae81
xor eax, eax
cmp esi, 1
setne al
push str.CreateFile
inc eax
push eax
mov eax, edi
call fcn.0040ab4f
pop ecx
pop ecx
jmp 0x40ac59
push ebp
push eax
call dword [sym.imp.KERNEL32.dll_GetFileSize]
push 0x204
lea esi, [edi + 0x4064]
push ebp
push esi
mov dword [edi + 0x448c], eax
call fcn.00411820
add esp, 0xc
push 6
call dword [sym.imp.WS2_32.dll_htons]
lea ebp, [esi + 2]
mov word [esi], ax
mov dword [esp + 0x24], ebp
xor esi, esi
cmp dword [0x42b5c0], esi
jne 0x40aecc
cmp dword [0x42b5c4], esi
je 0x40b1e7
cmp dword [esp + 0xc], 0x200
jge 0x40b1e7
mov eax, dword [esp + 0xc]
lea esi, [edi + eax + 0x427a]
cmp byte [esi], 0
jne 0x40aef0
inc dword [esp + 0xc]
jmp 0x40aeb6
push esi
push str.Option_is___s_
push 0xc
call fcn.004010eb
add esp, 0xc
mov eax, dword [esp + 0xc]
cmp byte [edi + eax + 0x427a], 0
je 0x40af1a
inc eax
cmp eax, 0x200
mov dword [esp + 0xc], eax
jl 0x40af00
lea ecx, [eax + edi + 0x427b]
inc eax
cmp eax, 0x200
mov dword [esp + 0x10], ecx
mov dword [esp + 0xc], eax
jge 0x40aeb6
mov eax, dword [esp + 0xc]
cmp byte [edi + eax + 0x427a], 0
je 0x40af4b
inc eax
cmp eax, 0x200
mov dword [esp + 0xc], eax
jl 0x40af31
cmp eax, 0x200
jge 0x40aeb6
mov eax, dword [esp + 0xc]
cmp byte [edi + eax + 0x427a], 0
jne 0x40aeb6
push ecx
push esi
push str.Option___s_:_value___s_
push 0xc
call fcn.004010eb
add esp, 0x10
cmp dword [0x42b5c4], 0
jne 0x40b0b4
push str.blksize
push esi
call dword [sym.imp.KERNEL32.dll_lstrcmpiA]
test eax, eax
jne 0x40b041
push dword [esp + 0x10]
call fcn.0040f43c
pop ecx
mov dword [esp + 0x1c], eax
cmp eax, 8
jae 0x40afc2
push eax
push esi
push str.__s__proposed_by_client__d__refused_by_Tftpd32
push 9
call fcn.004010eb
mov eax, dword [esp + 0x2c]
add esp, 0x10
mov ecx, 0x4000
cmp eax, ecx
jbe 0x40afed
push ecx
push eax
push esi
push str.__s__proposed_by_client__d__reply_with__d
push 2
call fcn.004010eb
mov eax, dword [esp + 0x30]
add esp, 0x14
mov dword [edi + 0x48], 0x4000
mov ecx, 0x4000
cmp eax, 8
jb 0x40b041
cmp eax, ecx
ja 0x40b011
push dword [esp + 0x10]
push esi
push str.__s__changed_to___s_
push 9
call fcn.004010eb
mov eax, dword [esp + 0x2c]
add esp, 0x10
mov dword [edi + 0x48], eax
push esi
push ebp
call dword [sym.imp.KERNEL32.dll_lstrcpyA]
push ebp
call ebx
push dword [edi + 0x48]
lea ebp, [eax + ebp + 1]
push 0x426574
push ebp
call dword [sym.imp.USER32.dll_wsprintfA]
add esp, 0xc
push ebp
call ebx
lea ebp, [eax + ebp + 1]
mov dword [esp + 0x18], 1
cmp dword [0x42b5c4], 0
jne 0x40b0b4
push str.timeout
push esi
call dword [sym.imp.KERNEL32.dll_lstrcmpiA]
test eax, eax
jne 0x40b0b4
push dword [esp + 0x10]
call fcn.0040f43c
mov dword [esp + 0x20], eax
dec eax
pop ecx
cmp eax, 0xfe
ja 0x40b0b4
push dword [esp + 0x10]
push esi
push str.__s__changed_to___s_
push 9
call fcn.004010eb
add esp, 0x10
push esi
push ebp
call dword [sym.imp.KERNEL32.dll_lstrcpyA]
push ebp
call ebx
push dword [esp + 0x10]
lea ebp, [eax + ebp + 1]
push ebp
call dword [sym.imp.KERNEL32.dll_lstrcpyA]
push ebp
call ebx
lea ebp, [eax + ebp + 1]
mov eax, dword [esp + 0x1c]
mov dword [esp + 0x18], 1
mov dword [edi + 0x4c], eax
push str.tsize
push esi
call dword [sym.imp.KERNEL32.dll_lstrcmpiA]
test eax, eax
jne 0x40b141
push esi
push ebp
call dword [sym.imp.KERNEL32.dll_lstrcpyA]
push esi
call ebx
cmp dword [esp + 0x14], 1
lea ebp, [eax + ebp + 1]
jne 0x40b0fe
push dword [edi + 0x448c]
push 0x426574
push ebp
call dword [sym.imp.USER32.dll_wsprintfA]
add esp, 0xc
push ebp
call ebx
lea ebp, [eax + ebp + 1]
mov eax, dword [edi + 0x448c]
jmp 0x40b120
push dword [esp + 0x10]
push ebp
call dword [sym.imp.KERNEL32.dll_lstrcpyA]
push ebp
call ebx
push dword [esp + 0x10]
lea ebp, [eax + ebp + 1]
call fcn.0040f43c
pop ecx
mov dword [edi + 0x448c], eax
push dword [edi + 0x448c]
mov dword [edi + 0x58], eax
push esi
push str.__s__changed_to___u_
push 0xa
call fcn.004010eb
add esp, 0x10
mov dword [esp + 0x18], 1
cmp dword [0x42b848], 0
je 0x40aeb6
push str.udpport
push esi
call dword [sym.imp.KERNEL32.dll_lstrcmpiA]
test eax, eax
jne 0x40aeb6
lea eax, [esp + 0x20]
push eax
lea eax, [esp + 0x2c]
push eax
push dword [edi + 0x20]
mov dword [esp + 0x2c], 0x10
call dword [sym.imp.WS2_32.dll_getsockname]
test eax, eax
jl 0x40aeb6
push dword [esp + 0x2a]
call dword [sym.imp.WS2_32.dll_htons]
movzx eax, ax
push eax
push str.using_udpport_option______d
call fcn.0040cc99
pop ecx
pop ecx
push esi
push ebp
call dword [sym.imp.KERNEL32.dll_lstrcpyA]
push esi
call ebx
push dword [esp + 0x2a]
lea ebp, [eax + ebp + 1]
call dword [sym.imp.WS2_32.dll_htons]
movzx eax, ax
push eax
push 0x426574
push ebp
call dword [sym.imp.USER32.dll_wsprintfA]
add esp, 0xc
push ebp
call ebx
lea ebp, [eax + ebp + 1]
mov eax, dword [0x42b5b8]
mov dword [edi + 0x44], eax
mov dword [esp + 0x18], 1
jmp 0x40aeb6
lea eax, [edi + 0x4064]
sub ebp, eax
xor eax, eax
inc eax
lea ebx, [ebp - 2]
mov dword [edi + 0x38], ebx
cmp dword [esp + 0x14], eax
jne 0x40b204
cmp dword [esp + 0x18], esi
je 0x40b206
xor eax, eax
mov ecx, dword [edi + 0x48]
mov dword [edi + 0x34], eax
mov dword [edi + 0x2c], eax
mov eax, dword [edi + 0x448c]
xor edx, edx
div ecx
xor edx, edx
inc eax
mov dword [edi + 0x30], eax
mov eax, dword [0x42b5b0]
div ecx
mov dword [edi + 0x54], eax
cmp dword [esp + 0x18], esi
je 0x40b2c7
push 0x200
lea eax, [esp + 0x244]
push esi
push eax
call fcn.00411820
add esp, 0xc
push ebx
push dword [esp + 0x28]
lea eax, [esp + 0x248]
push eax
call fcn.004118a0
lea eax, [ebp - 2]
add esp, 0xc
xor ecx, ecx
cmp eax, esi
jle 0x40b28d
lea ebp, [esp + ecx + 0x240]
cmp byte [ebp], 0
jne 0x40b288
mov edx, esi
and dl, 1
inc esi
test dl, dl
je 0x40b282
push 0x2c
jmp 0x40b284
push 0x3d
pop edx
mov byte [ebp], dl
inc ecx
cmp ecx, eax
jl 0x40b267
lea eax, [esp + 0x240]
push eax
push str.OACK:___s_
push 3
call fcn.004010eb
add esp, 0xc
push dword [edi + 0x38]
push str.Size_of_OACK_string_:___d_
push 0xd
call fcn.004010eb
xor eax, eax
add esp, 0xc
cmp dword [esp + 0x14], 1
setne al
add eax, 0x3e8
jmp 0x40b2d6
xor eax, eax
cmp dword [esp + 0x14], 1
setne al
add eax, 0x3ea
mov ecx, dword [esp + 0x444]
pop esi
pop ebp
pop ebx
xor ecx, esp
call fcn.0040e92f
add esp, 0x440
ret