Function at 0x14001dd00
Capabilities:
Create thread

Disassembly:
mov qword [rsp + 0x10], rbx
push rbp
push rsi
push rdi
push r12
push r13
push r14
push r15
sub rsp, 0x4c0
mov rax, qword [0x14005b040]
xor rax, rsp
mov qword [rsp + 0x4b0], rax
mov r15, qword [rsp + 0x520]
xor ebp, ebp
xor r12d, r12d
movsxd rdi, r9d
xor r14d, r14d
mov qword [rsp + 0x30], rcx
xor r13d, r13d
mov qword [rsp + 0x38], r15
mov qword [rsp + 0x40], rbp
mov rbx, r8
mov qword [rsp + 0x48], r12
mov rax, 0xffffffffffffffff
cmp edi, 2
jle 0x14001e499
movzx ecx, word [r8]
call qword [sym.imp.WS2_32.dll_ntohs]
movzx ecx, ax
mov edx, ecx
mov dword [rsp + 0x60], ecx
sub edx, 1
je 0x14001de63
cmp edx, 1
je 0x14001ddeb
mov rcx, qword [rsp + 0x30]
lea rdx, str.TFTP_failure:_unexpected_message_r_n
mov rcx, qword [rcx + 0x5a8]
call fcn.140019c40
mov ecx, 5
call qword [sym.imp.WS2_32.dll_htons]
mov ecx, 4
mov word [r15], ax
call qword [sym.imp.WS2_32.dll_htons]
mov word [r15 + 2], ax
movups xmm0, xmmword [str.unexpected_message]
movups xmmword [r15 + 4], xmm0
movzx eax, word [0x140053d80]
mov word [r15 + 0x14], ax
movzx eax, byte [0x140053d82]
mov byte [r15 + 0x16], al
mov eax, reloc.WS2_32.dll_socket
jmp 0x14001e499
mov rsi, qword [rsp + 0x30]
lea r8, str.WritePermission
xor r9d, r9d
lea rdx, str.TFTP_SETTINGS
mov rcx, qword [rsi + 0x5a8]
call fcn.140019450
test eax, eax
jne 0x14001de63
mov rcx, qword [rsi + 0x5a8]
lea rdx, str.TFTP_failure:_no_write_permission_r_n
call fcn.140019c40
mov ecx, 5
call qword [sym.imp.WS2_32.dll_htons]
mov ecx, 2
mov word [r15], ax
call qword [sym.imp.WS2_32.dll_htons]
mov word [r15 + 2], ax
movups xmm0, xmmword [str.no_write_permission]
movups xmmword [r15 + 4], xmm0
mov eax, dword [0x140053bb8]
mov dword [r15 + 0x14], eax
mov eax, 0x18
jmp 0x14001e499
add rbx, 2
lea rcx, [rdi - 3]
add rcx, rbx
mov qword [rsp + 0x50], rcx
mov byte [rcx], bpl
cmp rbx, rcx
jae 0x14001e436
mov r15, 0xffffffffffffffff
test rbp, rbp
jne 0x14001de9b
mov rsi, rbx
mov qword [rsp + 0x40], rbx
mov rbp, rbx
jmp 0x14001df77
test r12, r12
jne 0x14001deb0
mov rsi, rbx
mov qword [rsp + 0x48], rbx
mov r12, rbx
jmp 0x14001df77
mov rax, r15
inc rax
cmp byte [rbx + rax], 0
jne 0x14001deb3
lea rsi, [rbx + 1]
add rsi, rax
cmp rsi, rcx
jae 0x14001df77
test rbx, rbx
je 0x14001dee1
mov rdi, r15
inc rdi
cmp byte [rbx + rdi], 0
jne 0x14001ded4
inc edi
jmp 0x14001dee6
mov edi, 1
lea ebp, [rdi + r13]
mov rcx, r14
movsxd r12, ebp
mov rdx, r12
call fcn.140026cb0
movsxd rcx, r13d
mov r14, rax
add rcx, rax
movsxd r8, edi
test rbx, rbx
je 0x14001df13
mov rdx, rbx
call fcn.140045d50
jmp 0x14001df1a
xor edx, edx
call fcn.140045990
test rsi, rsi
je 0x14001df50
mov rbx, r15
inc rbx
cmp byte [rsi + rbx], 0
jne 0x14001df22
inc ebx
mov rcx, r14
lea r13d, [rbx + rbp]
movsxd rdx, r13d
call fcn.140026cb0
movsxd r8, ebx
mov rdx, rsi
mov r14, rax
lea rcx, [rax + r12]
call fcn.140045d50
jmp 0x14001df68
lea r13d, [rbp + 1]
mov rcx, r14
movsxd rdx, r13d
call fcn.140026cb0
mov r14, rax
xor eax, eax
mov byte [r14 + r12], al
mov rbp, qword [rsp + 0x40]
mov r12, qword [rsp + 0x48]
mov rcx, qword [rsp + 0x50]
mov rax, r15
nop word [rax + rax]
inc rax
cmp byte [rsi + rax], 0
jne 0x14001df80
lea rbx, [rsi + 1]
add rbx, rax
cmp rbx, rcx
jb 0x14001de86
mov r15, qword [rsp + 0x38]
test r14, r14
je 0x14001dfbe
lea eax, [r13 + 1]
mov rcx, r14
movsxd rdx, eax
call fcn.140026cb0
mov r14, rax
xor ecx, ecx
movsxd rax, r13d
mov byte [rax + r14], cl
test rbp, rbp
je 0x14001e436
cmp byte [rbp], 0
je 0x14001e436
test r12, r12
je 0x14001e436
cmp byte [r12], 0
je 0x14001e436
mov rsi, qword [rsp + 0x30]
lea rax, [rsp + 0x290]
mov dword [rsp + 0x28], 0x104
lea r9, [0x1400501f0]
lea r8, str.Root
mov qword [rsp + 0x20], rax
lea rdx, str.TFTP_SETTINGS
mov rcx, qword [rsi + 0x5a8]
call fcn.140019080
lea r8, [rsp + 0x290]
movsxd rbx, eax
mov edx, 0x104
lea rcx, [rsp + 0x70]
call fcn.1400270dc
test ebx, ebx
jle 0x14001e05b
cmp byte [rsp + rbx + 0x6f], 0x5c
je 0x14001e05b
lea r8, [0x140051e70]
mov edx, 0x104
lea rcx, [rsp + 0x70]
call fcn.14002dcb0
mov r8, rbp
lea rcx, [rsp + 0x70]
mov edx, 0x104
call fcn.14002dcb0
lea r9, [rsp + 0x58]
mov edx, 0x104
lea r8, [rsp + 0x180]
lea rcx, [rsp + 0x70]
call qword [sym.imp.KERNEL32.dll_GetFullPathNameA]
lea r9, [rsp + 0x58]
mov edx, 0x104
lea r8, [rsp + 0x3a0]
lea rcx, [rsp + 0x290]
call qword [sym.imp.KERNEL32.dll_GetFullPathNameA]
test eax, eax
je 0x14001e3bf
lea rdx, [rsp + 0x180]
lea rcx, [rsp + 0x3a0]
call fcn.140011010
test eax, eax
je 0x14001e3bf
mov ebp, dword [rsp + 0x60]
cmp ebp, 1
jne 0x14001e111
mov ecx, 0x28
call fcn.140021130
mov rdi, rax
xor r13d, r13d
xorps xmm0, xmm0
movups xmmword [rax], xmm0
movups xmmword [rax + 0x10], xmm0
lea rax, vtable.CMyMappedFile.0
mov qword [rdi + 0x10], r13
mov qword [rdi], rax
lea rax, [0x140053dc0]
mov qword [rdi + 0x18], r13
mov qword [rdi + 0x20], r13
jmp 0x14001e138
mov ecx, reloc.WS2_32.dll_recv
call fcn.140021130
mov rdi, rax
xorps xmm0, xmm0
xor r13d, r13d
movups xmmword [rax], xmm0
lea rax, vtable.CMyFile.0
mov qword [rdi], rax
lea rax, [0x140053e00]
mov r12, 0xffffffffffffffff
mov qword [rsp + 0x38], rdi
mov r8d, ebp
mov qword [rdi + 8], r12
lea rdx, [rsp + 0x180]
mov rcx, rdi
call qword [rax]
test eax, eax
jne 0x14001e1e7
mov r9d, dword [rsi + 0x5a0]
lea r8, [rsp + 0x180]
mov rcx, qword [rsi + 0x5a8]
lea rdx, str.TFTP_failure:_file_operation_CreateFile__s_failed__0x_x_r_n
call fcn.140019c40
test r14, r14
je 0x14001e18f
mov rcx, r14
call fcn.1400272e4
mov rax, qword [rdi]
mov edx, 1
mov rcx, rdi
call qword [rax]
mov ecx, 5
call qword [sym.imp.WS2_32.dll_htons]
mov ecx, 1
mov word [r15], ax
call qword [sym.imp.WS2_32.dll_htons]
mov word [r15 + 2], ax
movups xmm0, xmmword [str.file_operation_failed]
movups xmmword [r15 + 4], xmm0
mov eax, dword [0x140053cc0]
mov dword [r15 + 0x14], eax
movzx eax, word [0x140053cc4]
mov word [r15 + 0x18], ax
mov eax, 0x1a
jmp 0x14001e499
call fcn.14001d520
mov ebx, eax
test eax, eax
jns 0x14001e2ee
cmp dword [reloc.WS2_32.dll_accept], 0
je 0x14001e283
mov edx, dword [0x14005d884]
mov ecx, dword [0x14005d888]
lea eax, [rdx + 1]
cmp eax, ecx
jle 0x14001e252
add ecx, 0x101
mov eax, 0x50
mov dword [0x14005d888], ecx
movsxd rcx, ecx
mul rcx
mov rcx, qword [0x14005d890]
cmovb rax, r12
mov rdx, rax
call fcn.140026cb0
mov edx, dword [0x14005d884]
mov r8, rax
mov qword [0x14005d890], rax
jmp 0x14001e259
mov r8, qword [0x14005d890]
movsxd rax, edx
inc edx
mov dword [0x14005d884], edx
lea rcx, [rax + rax*4]
add rcx, rcx
mov qword [r8 + rcx*8], 0
mov qword [r8 + rcx*8 + 0x38], r13
call fcn.14001d520
mov ebx, eax
test eax, eax
jns 0x14001e2ee
mov rax, qword [rdi]
mov edx, 1
mov rcx, rdi
call qword [rax]
mov rcx, qword [rsi + 0x5a8]
lea rdx, str.TFTP_failure:_no_communication_port_available_r_n
call fcn.140019c40
test r14, r14
je 0x14001e2b0
mov rcx, r14
call fcn.1400272e4
mov ecx, 5
call qword [sym.imp.WS2_32.dll_htons]
xor ecx, ecx
mov word [r15], ax
call qword [sym.imp.WS2_32.dll_htons]
mov word [r15 + 2], ax
mov eax, 0x24
movups xmm0, xmmword [str.no_communication_port_available]
movups xmmword [r15 + 4], xmm0
movups xmm1, xmmword [0x140053d08]
movups xmmword [r15 + 0x14], xmm1
jmp 0x14001e499
mov rcx, qword [rsi + 0x5a8]
lea rax, [0x140053d18]
cmp ebp, 1
lea r8, [0x140053d1c]
mov r9d, ebx
lea rdx, str.TFTP__s_started_on_port_index_d:__s_r_n
cmove r8, rax
lea rax, [rsp + 0x180]
mov qword [rsp + 0x20], rax
call fcn.140019c40
mov r9, qword [0x14005d890]
lea r8, [0x14001cfe0]
mov eax, ebx
lea rbx, [rax + rax*4]
mov eax, dword [rsp + 0x530]
shl rbx, 4
add r9, rbx
cmp ebp, 1
mov dword [r9 + 0x18], eax
movzx eax, word [rsp + 0x538]
mov word [r9 + 0x20], ax
mov qword [r9 + 8], rdi
mov eax, dword [rsi + 0x564]
mov dword [r9 + 0x1c], eax
mov qword [r9 + 0x38], r14
mov rax, qword [rsi + 0x5a8]
mov qword [r9 + 0x40], rax
mov rax, qword [rsi + 0x9b0]
mov qword [r9 + 0x48], rax
lea rax, [0x14001c5a0]
cmove r8, rax
lea rax, [rsp + 0x60]
mov qword [rsp + 0x28], rax
xor edx, edx
xor ecx, ecx
mov dword [rsp + 0x20], r13d
call fcn.14002dfa0
mov rcx, qword [0x14005d890]
mov qword [rbx + rcx + 0x10], rax
mov rax, 0xffffffffffffffff
jmp 0x14001e499
mov rcx, qword [rsi + 0x5a8]
lea rdx, str.TFTP_failure:_access_outside_of_defined_root_directory_r_n
call fcn.140019c40
test r14, r14
je 0x14001e3df
mov rcx, r14
call fcn.1400272e4
mov ecx, 5
call qword [sym.imp.WS2_32.dll_htons]
mov ecx, 2
mov word [r15], ax
call qword [sym.imp.WS2_32.dll_htons]
mov word [r15 + 2], ax
movups xmm0, xmmword [str.access_outside_of_defined_root_directory]
movups xmmword [r15 + 4], xmm0
movups xmm1, xmmword [0x140053c50]
movups xmmword [r15 + 0x14], xmm1
movsd xmm0, qword [0x140053c60]
movsd qword [r15 + 0x24], xmm0
movzx eax, byte [0x140053c68]
mov byte [r15 + 0x2c], al
mov eax, 0x2d
jmp 0x14001e499
mov rcx, qword [rsp + 0x30]
lea rdx, str.TFTP_failure:_incomplete_tftp_request_r_n
mov rcx, qword [rcx + 0x5a8]
call fcn.140019c40
test r14, r14
je 0x14001e45b
mov rcx, r14
call fcn.1400272e4
mov ecx, 5
call qword [sym.imp.WS2_32.dll_htons]
mov ecx, 4
mov word [r15], ax
call qword [sym.imp.WS2_32.dll_htons]
mov word [r15 + 2], ax
mov eax, 0x1c
movups xmm0, xmmword [str.incomplete_tftp_request]
movups xmmword [r15 + 4], xmm0
movsd xmm0, qword [0x140053bf8]
movsd qword [r15 + 0x14], xmm0
mov rcx, qword [rsp + 0x4b0]
xor rcx, rsp
call fcn.140020e70
mov rbx, qword [rsp + 0x508]
add rsp, 0x4c0
pop r15
pop r14
pop r13
pop r12
pop rdi
pop rsi
pop rbp
ret