Function at 0x140085f40
Capabilities:
Check if file exists

Disassembly:
mov rax, rsp
push rbp
push rsi
push rdi
push r12
push r13
push r14
push r15
lea rbp, [rax - 0x768]
sub rsp, 0x830
mov qword [rbp - 0x60], 0xfffffffffffffffe
mov qword [rax + 0x18], rbx
movaps xmmword [rax - 0x48], xmm6
mov rax, qword [0x14024a080]
xor rax, rsp
mov qword [rbp + 0x710], rax
mov rbx, rdx
mov r14, rcx
mov qword [rsp + 0x48], rcx
xor r13d, r13d
mov dword [rsp + 0x40], r13d
lea edi, [r13 + 2]
mov rcx, qword [0x14025a8e8]
test rcx, rcx
je 0x140085fbb
mov r9, rdx
cmp qword [rdx + 0x18], 8
jb 0x140085fad
mov r9, qword [rdx]
lea r8, str.Get_file_content__s.
mov edx, edi
call fcn.14009f570
mov r15d, 0x104
mov r8d, r15d
xor edx, edx
lea rcx, [rbp + 0x600]
call fcn.140159570
mov rcx, rbx
cmp qword [rbx + 0x18], 8
jb 0x140085fdf
mov rcx, qword [rbx]
call qword [sym.imp.SHLWAPI.dll_PathFileExistsW]
mov rsi, 0xffffffffffffffff
test eax, eax
jne 0x1400860cd
mov rdi, rbx
cmp qword [rbx + 0x18], 8
jb 0x140086001
mov rdi, qword [rbx]
mov qword [rsp + 0x38], r13
mov qword [rsp + 0x30], r13
mov dword [rsp + 0x28], r13d
mov qword [rsp + 0x20], r13
mov r9d, esi
mov r8, rdi
xor edx, edx
mov ecx, 0xfde9
call qword [sym.imp.KERNEL32.dll_WideCharToMultiByte]
cmp eax, r15d
mov r15d, eax
jg 0x14008605d
mov qword [rsp + 0x38], r13
mov qword [rsp + 0x30], r13
mov dword [rsp + 0x28], eax
lea rax, [rbp + 0x600]
mov qword [rsp + 0x20], rax
mov r9d, esi
mov r8, rdi
xor edx, edx
mov ecx, 0xfde9
call qword [sym.imp.KERNEL32.dll_WideCharToMultiByte]
mov rcx, qword [0x14025a8e8]
mov edi, 2
test rcx, rcx
je 0x14008607c
lea r8, str.Check_if_utf_formate.
mov edx, edi
call fcn.14009f570
lea rcx, [rbp + 0x600]
call qword [sym.imp.SHLWAPI.dll_PathFileExistsA]
test eax, eax
jne 0x1400860cd
mov rcx, qword [0x14025a8e8]
test rcx, rcx
je 0x1400860a7
lea r8, str.File_inexistence.
mov edx, edi
call fcn.14009f570
mov qword [r14 + 0x10], r13
mov qword [r14 + 0x18], send
mov byte [r14], r13b
xor r8d, r8d
lea rdx, [0x1401f2178]
mov rcx, r14
call fcn.1400776a0
jmp 0x1400869ea
xor eax, eax
mov qword [rbp + 0xd0], rax
xor ecx, ecx
call fcn.1400aa42c
mov qword [rbp + 0xd8], rax
movdqa xmm0, xmmword [0x140201f00]
movdqu xmmword [rsp + 0x68], xmm0
mov byte [rsp + 0x58], r13b
mov r8d, reloc.WS2_32.dll_inet_addr
lea rdx, str.zh_CN.UTF_8
lea rcx, [rsp + 0x58]
call fcn.1400776a0
nop
lea rdx, [rsp + 0x58]
lea rcx, [rbp + 0xd0]
call fcn.140096100
nop
lea rcx, [rsp + 0x58]
call fcn.1400779e0
nop
xor edx, edx
mov r8d, 0x118
lea rcx, [rbp - 0x50]
call fcn.140159570
mov r12, rbx
cmp qword [rbx + 0x18], 8
jb 0x14008614a
mov r12, qword [rbx]
lea rax, [0x1401f2160]
mov qword [rbp - 0x50], rax
lea rax, [0x1401f2158]
mov qword [rbp - 0x40], rax
lea rax, vtable.std::basic_ios_char__struct_std::char_traits_char__.0
mov qword [rbp + 0x68], rax
mov dword [rsp + 0x40], edi
lea rdx, [rbp - 0x38]
lea rcx, [rbp - 0x50]
call fcn.1400896d0
nop
mov rax, qword [rbp - 0x50]
movsxd rcx, dword [rax + 4]
lea rax, vtable.std::basic_fstream_char__struct_std::char_traits_char__.0
mov qword [rbp + rcx - 0x50], rax
mov rax, qword [rbp - 0x50]
movsxd rcx, dword [rax + 4]
lea edx, [rcx - 0xb8]
mov dword [rbp + rcx - 0x54], edx
lea rcx, [rbp - 0x38]
call fcn.140089d20
lea rax, vtable.std::basic_filebuf_char__struct_std::char_traits_char__.0
mov qword [rbp - 0x38], rax
xor r8d, r8d
xor edx, edx
lea rcx, [rbp - 0x38]
call fcn.1400894a0
nop
mov edi, 6
cmp qword [rbp + 0x48], 0
jne 0x140086246
lea edx, [rdi - 5]
lea r8d, [rdi + 0x3a]
mov rcx, r12
call fcn.1400aae64
test rax, rax
je 0x140086246
lea r8d, [rdi - 5]
mov rdx, rax
lea rcx, [rbp - 0x38]
call fcn.1400894a0
nop
mov rax, qword [rbp + 0x28]
mov rcx, qword [rax + 8]
mov qword [rsp + 0x50], rcx
mov rax, qword [rcx]
call qword [rax + htons]
nop
lea rcx, [rsp + 0x48]
call fcn.14008aa10
mov rdx, rax
lea rcx, [rbp - 0x38]
call fcn.140089120
nop
mov rcx, qword [rsp + 0x50]
test rcx, rcx
je 0x140086244
mov rax, qword [rcx]
call qword [rax + reloc.WS2_32.dll_recv]
test rax, rax
je 0x140086244
mov r8, qword [rax]
lea edx, [rdi - 5]
mov rcx, rax
call qword [r8]
nop
jmp 0x140086270
mov rax, qword [rbp - 0x50]
movsxd rcx, dword [rax + 4]
lea rax, [rbp - 0x50]
add rcx, rax
mov edx, edi
cmp qword [rcx + 0x48], 0
mov eax, 2
cmovne edx, eax
or edx, dword [rcx + 0x10]
xor r8d, r8d
call fcn.140095c50
nop
mov rax, qword [rbp - 0x50]
movsxd rcx, dword [rax + 4]
test byte [rbp + rcx - 0x40], 6
je 0x1400864ad
mov r12, rbx
cmp qword [rbx + 0x18], 8
jb 0x140086290
mov r12, qword [rbx]
mov qword [rsp + 0x38], r13
mov qword [rsp + 0x30], r13
mov dword [rsp + 0x28], r13d
mov qword [rsp + 0x20], r13
mov r9d, esi
mov r8, r12
xor edx, edx
mov ecx, 0xfde9
call qword [sym.imp.KERNEL32.dll_WideCharToMultiByte]
cmp eax, r15d
jg 0x1400862e9
mov qword [rsp + 0x38], r13
mov qword [rsp + 0x30], r13
mov dword [rsp + 0x28], eax
lea rax, [rbp + 0x600]
mov qword [rsp + 0x20], rax
mov r9d, esi
mov r8, r12
xor edx, edx
mov ecx, 0xfde9
call qword [sym.imp.KERNEL32.dll_WideCharToMultiByte]
mov rcx, qword [0x14025a8e8]
mov r15d, 2
test rcx, rcx
je 0x14008630a
lea r8, str.Check_if_utf_formate.
mov edx, r15d
call fcn.14009f570
xor edx, edx
mov r8d, 0x118
lea rcx, [rbp + 0x100]
call fcn.140159570
lea rax, [0x1401f2160]
mov qword [rbp + 0x100], rax
lea rax, [0x1401f2158]
mov qword [rbp + 0x110], rax
lea rax, vtable.std::basic_ios_char__struct_std::char_traits_char__.0
mov qword [rbp + 0x1b8], rax
mov dword [rsp + 0x40], edi
lea rdx, [rbp + 0x118]
lea rcx, [rbp + 0x100]
call fcn.1400896d0
nop
mov rax, qword [rbp + 0x100]
movsxd rcx, dword [rax + 4]
lea rax, vtable.std::basic_fstream_char__struct_std::char_traits_char__.0
mov qword [rbp + rcx + 0x100], rax
mov rax, qword [rbp + 0x100]
movsxd rcx, dword [rax + 4]
lea edx, [rcx - 0xb8]
mov dword [rbp + rcx + 0xfc], edx
lea rcx, [rbp + 0x118]
call fcn.140089d20
lea rax, vtable.std::basic_filebuf_char__struct_std::char_traits_char__.0
mov qword [rbp + 0x118], rax
xor r8d, r8d
xor edx, edx
lea rcx, [rbp + 0x118]
call fcn.1400894a0
nop
mov r8d, 1
lea rdx, [rbp + 0x600]
lea rcx, [rbp + 0x118]
call fcn.140089620
test rax, rax
jne 0x140086408
mov rax, qword [rbp + 0x100]
movsxd rcx, dword [rax + 4]
lea rax, [rbp + 0x100]
add rcx, rax
mov edx, edi
cmp qword [rcx + 0x48], 0
cmovne edx, r15d
or edx, dword [rcx + 0x10]
xor r8d, r8d
call fcn.140095c50
nop
mov rax, qword [rbp + 0x100]
movsxd rcx, dword [rax + 4]
test byte [rbp + rcx + 0x110], 6
je 0x1400864a1
mov rcx, qword [0x14025a8e8]
test rcx, rcx
je 0x14008643c
lea r8, str.Cannot_open_file.
mov edx, r15d
call fcn.14009f570
mov qword [r14 + 0x10], r13
mov qword [r14 + 0x18], send
mov byte [r14], 0
xor r8d, r8d
lea rdx, [0x1401f2178]
mov rcx, r14
call fcn.1400776a0
nop
lea rcx, [rbp + 0x100]
call fcn.140086a20
nop
lea rcx, [rbp - 0x50]
call fcn.140086a20
nop
mov rcx, qword [rbp + 0xd8]
test rcx, rcx
je 0x14008649c
mov rax, qword [rcx]
call qword [rax + reloc.WS2_32.dll_recv]
test rax, rax
je 0x14008649c
mov r8, qword [rax]
mov edx, 1
mov rcx, rax
call qword [r8]
nop
jmp 0x1400869ea
lea rcx, [rbp + 0x100]
call fcn.140086a20
lea rax, [rbp - 0x40]
mov qword [rsp + 0x48], rax
mov rdx, qword [rbp - 0x40]
movsxd rax, dword [rdx + 4]
mov rcx, qword [rbp + rax + 8]
test rcx, rcx
je 0x1400864d2
mov rax, qword [rcx]
call qword [rax + htons]
mov rdx, qword [rbp - 0x40]
movsxd rcx, dword [rdx + 4]
cmp dword [rbp + rcx - 0x30], 0
jne 0x1400864f9
mov rcx, qword [rbp + rcx + 0x10]
test rcx, rcx
je 0x1400864f9
lea rax, [rbp - 0x40]
cmp rcx, rax
je 0x1400864f9
call fcn.140089a70
mov rdx, qword [rbp - 0x40]
movsxd rcx, dword [rdx + 4]
mov eax, dword [rbp + rcx - 0x30]
test eax, eax
sete byte [rsp + 0x50]
mov r15d, 2
test al, 6
jne 0x140086560
mov rcx, qword [rbp + rcx + 8]
mov rax, qword [rcx]
mov dword [rsp + 0x20], r15d
mov r9d, r15d
xor r8d, r8d
lea rdx, [rbp - 0x80]
call qword [rax + 0x50]
mov rcx, qword [rbp - 0x78]
add rcx, qword [rbp - 0x80]
cmp rcx, 0xffffffffffffffff
jne 0x140086560
mov rax, qword [rbp - 0x40]
movsxd rcx, dword [rax + 4]
lea rax, [rbp - 0x40]
add rcx, rax
mov edx, edi
cmp qword [rcx + 0x48], 0
cmovne edx, r15d
or edx, dword [rcx + 0x10]
xor r8d, r8d
call fcn.140095c50
nop
call fcn.1400aac44
test al, al
jne 0x140086573
lea rcx, [rbp - 0x40]
call fcn.140089b30
nop
mov rax, qword [rbp - 0x40]
movsxd rcx, dword [rax + 4]
mov rcx, qword [rbp + rcx + 8]
test rcx, rcx
je 0x14008658c
mov rax, qword [rcx]
call qword [rax + reloc.WS2_32.dll_recv]
nop
lea rdx, [rsp + 0x58]
lea rcx, [rbp - 0x40]
call fcn.1400885d0
mov rcx, qword [rax + 8]
add rcx, qword [rax]
cmp rcx, 0x80
jbe 0x14008661d
mov rcx, qword [0x14025a8e8]
test rcx, rcx
je 0x1400865c5
lea r8, str.File_size_exceed_128_bytes.
mov edx, r15d
call fcn.14009f570
mov qword [r14 + 0x10], r13
mov qword [r14 + 0x18], send
mov byte [r14], 0
xor r8d, r8d
lea rdx, [0x1401f2178]
mov rcx, r14
call fcn.1400776a0
nop
lea rcx, [rbp - 0x50]
call fcn.140086a20
nop
mov rcx, qword [rbp + 0xd8]
test rcx, rcx
je 0x140086618
mov rax, qword [rcx]
call qword [rax + reloc.WS2_32.dll_recv]
test rax, rax
je 0x140086618
mov r8, qword [rax]
mov edx, 1
mov rcx, rax
call qword [r8]
nop
jmp 0x1400869ea
movdqa xmm0, xmmword [0x140201f00]
movdqu xmmword [rbp + 0xf0], xmm0
mov byte [rbp + 0xe0], 0
mov rax, qword [rbp - 0x50]
movsxd rcx, dword [rax + 4]
lea rax, [rbp - 0x50]
add rcx, rax
mov edx, 4
cmp qword [rcx + 0x48], 0
cmovne edx, r13d
xor r8d, r8d
call fcn.140095c50
xorps xmm6, xmm6
xor eax, eax
mov qword [rsp + 0x68], rax
mov rax, qword [rbp - 0x50]
movsxd rcx, dword [rax + 4]
mov eax, dword [rbp + rcx - 0x40]
and eax, 0xfffffffe
lea r9, [rbp - 0x50]
add rcx, r9
mov edx, eax
or edx, 4
cmp qword [rcx + 0x48], 0
cmovne edx, eax
xor r8d, r8d
call fcn.140095c50
lea rax, [rbp - 0x50]
mov qword [rsp + 0x48], rax
mov rax, qword [rbp - 0x50]
movsxd rcx, dword [rax + 4]
mov rcx, qword [rbp + rcx - 8]
test rcx, rcx
je 0x1400866b0
mov rax, qword [rcx]
call qword [rax + htons]
nop
mov dl, 1
lea rcx, [rbp - 0x50]
call fcn.140089b90
mov byte [rsp + 0x50], al
mov rax, qword [rbp - 0x50]
movsxd rcx, dword [rax + 4]
test byte [rbp + rcx - 0x40], 6
jne 0x14008672d
mov rcx, qword [rbp + rcx - 8]
movaps xmmword [rbp - 0x80], xmm6
movsd xmm0, qword [rsp + 0x68]
movsd qword [rbp - 0x70], xmm0
mov rax, qword [rcx]
mov r9d, 1
lea r8, [rbp - 0x80]
lea rdx, [rsp + 0x58]
call qword [rax + 0x58]
mov rcx, qword [rsp + 0x60]
add rcx, qword [rsp + 0x58]
cmp rcx, 0xffffffffffffffff
jne 0x14008672d
mov rax, qword [rbp - 0x50]
movsxd rcx, dword [rax + 4]
lea rax, [rbp - 0x50]
add rcx, rax
mov edx, edi
cmp qword [rcx + 0x48], 0
cmovne edx, r15d
or edx, dword [rcx + 0x10]
xor r8d, r8d
call fcn.140095c50
nop
mov rax, qword [rbp - 0x50]
movsxd rcx, dword [rax + 4]
mov rcx, qword [rbp + rcx - 8]
test rcx, rcx
je 0x140086746
mov rax, qword [rcx]
call qword [rax + reloc.WS2_32.dll_recv]
nop
xor edx, edx
mov r8d, 0x100
lea rcx, [rbp + 0x500]
call fcn.140159570
mov rax, qword [rbp - 0x50]
movsxd rcx, dword [rax + 4]
test byte [rbp + rcx - 0x40], 1
jne 0x1400867d0
nop dword [rax]
xor edx, edx
mov r8d, 0x100
lea rcx, [rbp + 0x500]
call fcn.140159570
mov r8d, 0x100
lea rdx, [rbp + 0x500]
lea rcx, [rbp - 0x50]
call fcn.140088720
lea rax, [rbp + 0x500]
mov r8, rsi
inc r8
cmp byte [rax + r8], 0
jne 0x1400867a4
lea rdx, [rbp + 0x500]
lea rcx, [rbp + 0xe0]
call fcn.140096620
mov rax, qword [rbp - 0x50]
movsxd rcx, dword [rax + 4]
test byte [rbp + rcx - 0x40], 1
je 0x140086770
lea rcx, [rbp - 0x38]
call fcn.1400895b0
test rax, rax
jne 0x140086803
mov rax, qword [rbp - 0x50]
movsxd rcx, dword [rax + 4]
lea rax, [rbp - 0x50]
add rcx, rax
cmp qword [rcx + 0x48], 0
cmovne edi, r15d
or edi, dword [rcx + 0x10]
xor r8d, r8d
mov edx, edi
call fcn.140095c50
mov rdx, rbx
lea rcx, [rsp + 0x58]
call fcn.1400855f0
nop
cmp qword [rax + 0x18], 0x10
jb 0x14008681b
mov rax, qword [rax]
mov rcx, rax
call fcn.140085cb0
movzx ebx, al
lea rcx, [rsp + 0x58]
call fcn.1400779e0
test bl, bl
jne 0x14008697f
xor edx, edx
mov r8d, 0x400
lea rcx, [rbp + 0x100]
call fcn.140159570
lea rdi, [rbp + 0xe0]
cmp qword [rbp + 0xf8], 0x10
cmovae rdi, qword [rbp + 0xe0]
mov dword [rsp + 0x28], r13d
mov qword [rsp + 0x20], r13
mov r9d, esi
mov r8, rdi
xor edx, edx
xor ecx, ecx
call qword [sym.imp.KERNEL32.dll_MultiByteToWideChar]
mov ebx, eax
add eax, 0xfff
cdq
and edx, 0xfff
add eax, edx
and eax, 0xfffff000
movsxd rcx, eax
mov rax, r15
mul rcx
cmovo rax, rsi
mov rcx, rax
call fcn.1400c7368
mov r15, rax
mov dword [rsp + 0x28], ebx
mov qword [rsp + 0x20], rax
mov r9d, esi
mov r8, rdi
xor edx, edx
xor ecx, ecx
call qword [sym.imp.KERNEL32.dll_MultiByteToWideChar]
mov qword [rsp + 0x38], r13
mov qword [rsp + 0x30], r13
mov dword [rsp + 0x28], r13d
mov qword [rsp + 0x20], r13
mov r9d, esi
mov r8, r15
xor edx, edx
mov ecx, 0xfde9
call qword [sym.imp.KERNEL32.dll_WideCharToMultiByte]
cmp eax, 0x400
jg 0x14008694e
mov qword [rsp + 0x38], r13
mov qword [rsp + 0x30], r13
mov dword [rsp + 0x28], r13d
mov qword [rsp + 0x20], r13
mov r9d, esi
mov r8, r15
xor edx, edx
mov ecx, 0xfde9
call qword [sym.imp.KERNEL32.dll_WideCharToMultiByte]
cmp eax, 0x400
jg 0x140086956
mov qword [rsp + 0x38], r13
mov qword [rsp + 0x30], r13
mov dword [rsp + 0x28], eax
lea rax, [rbp + 0x100]
mov qword [rsp + 0x20], rax
mov r9d, esi
mov r8, r15
xor edx, edx
mov ecx, 0xfde9
call qword [sym.imp.KERNEL32.dll_WideCharToMultiByte]
jmp 0x140086956
mov rcx, r15
call fcn.1400c7360
lea rax, [rbp + 0x100]
nop dword [rax]
inc rsi
cmp byte [rax + rsi], 0
jne 0x140086960
mov r8, rsi
lea rdx, [rbp + 0x100]
lea rcx, [rbp + 0xe0]
call fcn.1400776a0
movups xmm0, xmmword [rbp + 0xe0]
movups xmmword [r14], xmm0
movups xmm1, xmmword [rbp + 0xf0]
movups xmmword [r14 + 0x10], xmm1
movdqa xmm0, xmmword [0x140201f00]
movdqu xmmword [rbp + 0xf0], xmm0
mov byte [rbp + 0xe0], 0
lea rcx, [rbp + 0xe0]
call fcn.1400779e0
nop
lea rcx, [rbp - 0x50]
call fcn.140086a20
nop
mov rcx, qword [rbp + 0xd8]
test rcx, rcx
je 0x1400869ea
mov rax, qword [rcx]
call qword [rax + reloc.WS2_32.dll_recv]
test rax, rax
je 0x1400869ea
mov r8, qword [rax]
mov edx, 1
mov rcx, rax
call qword [r8]
nop
mov rax, r14
mov rcx, qword [rbp + 0x710]
xor rcx, rsp
call fcn.1400c7300
mov rbx, qword [rsp + 0x880]
movaps xmm6, xmmword [rsp + 0x820]
add rsp, 0x830
pop r15
pop r14
pop r13
pop r12
pop rdi
pop rsi
pop rbp
ret