Function at 0x422020
Capabilities:
Check if file exists

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x884
mov eax, dword [0x4b3630]
xor eax, ebp
mov dword [ebp - 4], eax
push ebx
mov ebx, dword [ebp + 8]
lea eax, [ebp - 0x61c]
push esi
push edi
push 0x208
push 0
push eax
mov dword [ebp - 0x830], ebx
call fcn.0044a6c0
add esp, 0xc
lea eax, [ebp - 0x61c]
push 0x104
push eax
push 0
call dword [sym.imp.KERNEL32.dll_GetModuleFileNameW]
lea eax, [ebp - 0x61c]
push eax
call dword [sym.imp.SHLWAPI.dll_PathRemoveFileSpecW]
push 0x208
lea eax, [ebp - 0x414]
push 0
push eax
call fcn.0044a6c0
mov edi, dword [sym.imp.KERNEL32.dll_GetProcAddress]
add esp, 0xc
cmp dword [0x4b3168], 0
mov esi, dword [sym.imp.KERNEL32.dll_GetModuleHandleW]
je 0x422172
push str.GetNativeSystemInfo
push 0x48e718
call esi
push eax
call edi
test eax, eax
je 0x422168
xorps xmm0, xmm0
mov dword [ebp - 0x844], 0
lea ecx, [ebp - 0x864]
push ecx
movups xmmword [ebp - 0x864], xmm0
movups xmmword [ebp - 0x854], xmm0
call eax
mov ax, word [ebp - 0x864]
cmp ax, 9
je 0x42215e
cmp ax, 6
je 0x42215e
cmp ax, 0xc
je 0x42215e
push 0x48ed90
push 0x48eda0
mov dword [ebp - 0x82c], 0
mov dword [ebp - 0x828], 0
call esi
push eax
call edi
mov esi, eax
test esi, esi
je 0x422155
lea eax, [ebp - 0x828]
push eax
lea eax, [ebp - 0x82c]
push eax
call dword [sym.imp.KERNEL32.dll_GetCurrentProcess]
push eax
call esi
test eax, eax
je 0x422155
xor eax, eax
mov ecx, 0xaa64
cmp word [ebp - 0x828], cx
sete al
mov dword [0x4b6f64], eax
jmp 0x422168
xor eax, eax
mov dword [0x4b6f64], eax
jmp 0x422168
mov dword [0x4b6f64], 1
mov dword [0x4b3168], 0
cmp dword [0x4b6f64], 0
lea eax, [ebp - 0x61c]
je 0x422188
push str.JianDesk64.exe
jmp 0x42218d
push str.JianDesk.exe
push eax
lea eax, [ebp - 0x414]
push eax
call dword [sym.imp.SHLWAPI.dll_PathCombineW]
lea eax, [ebp - 0x414]
push eax
call dword [sym.imp.SHLWAPI.dll_PathFileExistsW]
test eax, eax
je 0x422498
lea eax, [ebp - 0x414]
push eax
call dword [sym.imp.SHLWAPI.dll_PathQuoteSpacesW]
push 8
lea eax, [ebp - 0x61c]
push eax
push ebx
lea eax, [ebp - 0x414]
push eax
push 0x48e124
call fcn.004148f0
add esp, 0x14
test eax, eax
jne 0x422498
push 0x208
push eax
lea eax, [ebp - 0x20c]
push eax
call fcn.0044a6c0
lea ecx, [ebp - 0x20c]
add esp, 0xc
lea esi, [ebp - 0x414]
mov eax, ecx
mov edx, 0x104
sub esi, eax
nop dword [eax]
lea eax, [edx + 0x7ffffefa]
test eax, eax
je 0x42222e
movzx eax, word [esi + ecx]
test ax, ax
je 0x42222e
mov word [ecx], ax
add ecx, 2
sub edx, 1
jne 0x422210
test edx, edx
lea eax, [ecx - 2]
cmovne eax, ecx
xor ecx, ecx
mov word [eax], cx
test ebx, ebx
je 0x42231e
mov ecx, 0x104
lea eax, [ebp - 0x20c]
nop
cmp word [eax], 0
je 0x42225e
add eax, 2
sub ecx, 1
jne 0x422250
mov edx, 0x104
mov edi, ecx
mov eax, edx
sub eax, ecx
neg edi
sbb edi, edi
and edi, eax
test ecx, ecx
je 0x4222bc
mov esi, edx
lea ecx, [ebp - 0x20c]
lea ecx, [ecx + edi*2]
sub esi, edi
je 0x4222af
mov ebx, 0x490124
mov eax, SysReAllocString
sub ebx, ecx
nop
test eax, eax
je 0x4222a9
movzx edi, word [ebx + ecx]
test di, di
je 0x4222a9
mov word [ecx], di
dec eax
add ecx, 2
sub esi, 1
jne 0x422290
mov ebx, dword [ebp - 0x830]
test esi, esi
lea eax, [ecx - 2]
cmovne eax, ecx
xor ecx, ecx
mov word [eax], cx
mov ecx, edx
lea eax, [ebp - 0x20c]
cmp word [eax], 0
je 0x4222d2
add eax, 2
sub ecx, 1
jne 0x4222c4
mov eax, edx
mov esi, ecx
sub eax, ecx
neg esi
sbb esi, esi
and esi, eax
test ecx, ecx
je 0x42231e
lea ecx, [ebp - 0x20c]
lea ecx, [ecx + esi*2]
sub edx, esi
je 0x422311
mov edi, ebx
mov eax, SysReAllocString
sub edi, ecx
test eax, eax
je 0x422311
movzx esi, word [edi + ecx]
test si, si
je 0x422311
mov word [ecx], si
dec eax
add ecx, 2
sub edx, 1
jne 0x4222f8
test edx, edx
lea eax, [ecx - 2]
cmovne eax, ecx
xor ecx, ecx
mov word [eax], cx
xorps xmm0, xmm0
mov dword [ebp - 0x828], 0
xor eax, eax
movlpd qword [ebp - 0x880], xmm0
mov word [ebp - 0x842], ax
mov eax, 8
movlpd qword [ebp - 0x878], xmm0
movlpd qword [ebp - 0x870], xmm0
movlpd qword [ebp - 0x868], xmm0
movlpd qword [ebp - 0x860], xmm0
movlpd qword [ebp - 0x852], xmm0
movlpd qword [ebp - 0x84a], xmm0
movups xmmword [ebp - 0x840], xmm0
mov dword [ebp - 0x884], 0x44
mov dword [ebp - 0x858], 0x81
mov word [ebp - 0x854], ax
call fcn.0041e7b0
mov edi, eax
test edi, edi
je 0x422422
push 0x48e218
call dword [sym.imp.KERNEL32.dll_GetModuleHandleW]
mov esi, dword [sym.imp.KERNEL32.dll_CloseHandle]
test eax, eax
jne 0x4223c6
push 0x48e218
call dword [sym.imp.KERNEL32.dll_LoadLibraryW]
test eax, eax
je 0x422416
push str.CreateProcessWithTokenW
push eax
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
test eax, eax
je 0x422416
lea ecx, [ebp - 0x840]
push ecx
lea ecx, [ebp - 0x884]
push ecx
push 0
push 0
push 0
lea ecx, [ebp - 0x20c]
push ecx
push 0
push 0
push edi
call eax
test eax, eax
je 0x422416
push dword [ebp - 0x83c]
call esi
push dword [ebp - 0x840]
call esi
mov dword [ebp - 0x828], 1
push edi
call esi
cmp dword [ebp - 0x828], 0
jne 0x422498
push 0x208
lea eax, [ebp - 0x824]
push 0
push eax
call fcn.0044a6c0
add esp, 0xc
test ebx, ebx
je 0x42247b
lea ecx, [ebp - 0x824]
mov edx, 0x104
mov eax, ecx
sub ebx, eax
nop dword [eax + eax]
lea eax, [edx + 0x7ffffefa]
test eax, eax
je 0x42246e
movzx eax, word [ecx + ebx]
test ax, ax
je 0x42246e
mov word [ecx], ax
add ecx, 2
sub edx, 1
jne 0x422450
test edx, edx
lea eax, [ecx - 2]
cmovne eax, ecx
xor ecx, ecx
mov word [eax], cx
lea eax, [ebp - 0x61c]
push eax
lea eax, [ebp - 0x824]
push eax
lea eax, [ebp - 0x414]
push eax
call fcn.00429270
add esp, 0xc
mov ecx, dword [ebp - 4]
pop edi
pop esi
xor ecx, ebp
pop ebx
call fcn.00442126
mov esp, ebp
pop ebp
ret 4