Function at 0x140020180
Capabilities:
Check if file exists
Encode data using xor
Read file on windows

Disassembly:
push rbp
push rbx
push rsi
push rdi
push r12
push r13
push r14
push r15
lea rbp, [rsp - 0x478]
sub rsp, 0x578
mov rax, qword [0x14036e3c8]
xor rax, rsp
mov qword [rbp + 0x460], rax
mov rdi, r9
mov qword [rsp + 0x48], r9
mov r13, r8
mov qword [rsp + 0x70], rdx
mov r12, rcx
xor ebx, ebx
mov dword [rsp + 0x40], ebx
xor r8d, r8d
lea rdx, [0x1402844d8]
mov rcx, r13
call fcn.1400079c0
xor r8d, r8d
lea rdx, [0x1402844d8]
mov rcx, rdi
call fcn.1400079c0
xor r15b, r15b
mov rsi, 0xffffffffffffffff
mov dword [rbp + 0x40], esi
mov qword [rbp + 0x48], rbx
mov qword [rbp + 0x60], reloc.WS2_32.dll_ntohs
mov qword [rbp + 0x58], rbx
mov byte [rbp + 0x48], bl
mov dword [rbp + 0x68], ebx
mov qword [rbp + 0x70], rbx
mov qword [rbp + 0x88], reloc.WS2_32.dll_ntohs
mov qword [rbp + 0x80], rbx
mov byte [rbp + 0x70], r15b
mov qword [rbp + 0x90], rbx
mov qword [rbp + 0xa8], reloc.WS2_32.dll_ntohs
mov qword [rbp + 0xa0], rbx
mov byte [rbp + 0x90], r15b
mov qword [rbp + 0xb0], rbx
mov qword [rbp + 0xc8], reloc.WS2_32.dll_ntohs
mov qword [rbp + 0xc0], rbx
mov byte [rbp + 0xb0], r15b
mov qword [rbp + 0xd0], rbx
movdqa xmm0, xmmword [0x1402865c0]
movdqa xmmword [rbp + 0xe0], xmm0
mov byte [rbp + 0xd0], r15b
mov qword [rbp + 0xf0], rbx
mov qword [rbp + 0x108], reloc.WS2_32.dll_ntohs
mov qword [rbp + 0x100], rbx
mov byte [rbp + 0xf0], r15b
mov dword [rbp + 0x110], ebx
lea rcx, [rsp + 0x68]
call fcn.140037670
nop
lea r8, str.proxyproxy.cfg
mov rdx, rax
lea rcx, [rsp + 0x30]
call fcn.14000c810
nop
mov rdx, qword [rsp + 0x68]
add rdx, 0xffffffffffffffe8
mov eax, esi
lock xadd dword [rdx + 0x10], eax
sub eax, 1
jg 0x1400202e9
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + ioctlsocket]
mov rcx, qword [rsp + 0x30]
call qword [sym.imp.SHLWAPI.dll_PathFileExistsW]
mov r14d, 1
test eax, eax
jne 0x140020372
call fcn.140004ca0
mov rcx, rax
test rax, rax
je 0x140020db3
mov rax, qword [rax]
call qword [rax + Ordinal_26]
add rax, 0x18
mov qword [rsp + 0x50], rax
mov r8, qword [rsp + 0x30]
lea rdx, str.Cant_find___s___so_use_browser_proxy_
lea rcx, [rsp + 0x50]
call fcn.140012910
lea r8, [0x140284a60]
lea rdx, str.GetCurrentProxy
mov rbx, qword [rsp + 0x50]
mov rcx, rbx
call fcn.140039ff0
nop
lea rdx, [rbx - 0x18]
mov eax, esi
lock xadd dword [rdx + 0x10], eax
sub eax, r14d
jg 0x140020b2f
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + ioctlsocket]
jmp 0x140020b2f
cmp byte [r12 + 0x6b], 0
je 0x1400207c6
mov qword [rsp + 0x78], rbx
mov qword [rbp - 0x78], rbx
mov qword [rbp - 0x70], reloc.WS2_32.dll_ntohs
mov byte [rsp + 0x78], 0
mov qword [rbp + 0x120], rbx
mov qword [rbp + 0x130], rbx
mov qword [rbp + 0x138], 7
mov word [rbp + 0x120], bx
mov rdx, qword [rsp + 0x30]
mov r8, rsi
nop dword [rax]
inc r8
cmp word [rdx + r8*2], 0
jne 0x1400203c0
lea rcx, [rbp + 0x120]
call fcn.14000a430
nop
mov dword [rsp + 0x40], r14d
xor r8d, r8d
lea rdx, [rsp + 0x78]
lea rcx, [rbp + 0x120]
call fcn.1400531c0
test al, al
je 0x140020400
cmp qword [rbp - 0x78], 0
je 0x140020400
mov bl, 1
jmp 0x140020402
xor bl, bl
mov rdx, qword [rbp + 0x138]
cmp rdx, 8
jb 0x140020448
lea rdx, [rdx*2 + 2]
mov rcx, qword [rbp + 0x120]
mov rax, rcx
cmp rdx, 0x1000
jb 0x140020443
add rdx, 0x27
mov rcx, qword [rcx - 8]
sub rax, rcx
add rax, 0xfffffffffffffff8
cmp rax, 0x1f
ja 0x140020dbe
call fcn.1402434a4
test bl, bl
je 0x14002063c
mov ecx, 0x40
call fcn.140242f80
mov r10, rax
movups xmm0, xmmword [str.PROXY_SETTING_KEY_5D95F5F8_8C42_427D_A0A1_79016036E373]
movups xmmword [rax], xmm0
movups xmm1, xmmword [0x14028abf0]
movups xmmword [rax + 0x10], xmm1
movups xmm0, xmmword [0x14028ac00]
movups xmmword [rax + 0x20], xmm0
mov ecx, dword [0x14028ac10]
mov dword [rax + 0x30], ecx
movzx ecx, word [0x14028ac14]
mov word [rax + 0x34], cx
mov byte [rax + 0x36], 0
mov r11, qword [rbp - 0x78]
xor ebx, ebx
mov r9d, ebx
test r11, r11
je 0x1400204ea
movabs rdi, 0x97b425ed097b425f
nop dword [rax]
mov rax, rdi
mul r9
shr rdx, 5
imul rax, rdx, 0x36
mov rcx, r9
sub rcx, rax
movzx r8d, byte [rcx + r10]
lea rax, [rsp + 0x78]
cmp qword [rbp - 0x70], 0x10
cmovae rax, qword [rsp + 0x78]
xor byte [r9 + rax], r8b
inc r9
cmp r9, r11
jne 0x1400204b0
mov rdi, qword [rsp + 0x48]
mov edx, 0x40
mov rcx, r10
call fcn.1402434a4
lea rdx, [rsp + 0x78]
lea rcx, [rbp + 0x40]
call fcn.140005d80
lea rcx, [rbp + 0x40]
call fcn.140005660
test al, al
jne 0x14002062a
mov qword [rbp + 0x140], rbx
mov qword [rbp + 0x150], rbx
mov qword [rbp + 0x158], 7
mov word [rbp + 0x140], bx
mov r8d, reloc.WS2_32.dll_socket
lea rdx, str.proxy_data_is_not_valid
lea rcx, [rbp + 0x140]
call fcn.14000a430
nop
mov qword [rbp - 0x68], rbx
mov qword [rbp - 0x58], rbx
mov qword [rbp - 0x50], 7
mov word [rbp - 0x68], bx
mov r8d, Ordinal_27
lea rdx, str.Updater::GetCurrentProxy
lea rcx, [rbp - 0x68]
call fcn.14000a430
nop
lea rdx, [rbp + 0x140]
lea rcx, [rbp - 0x68]
call fcn.140037cb0
nop
mov rdx, qword [rbp - 0x50]
cmp rdx, 8
jb 0x1400205cc
lea rdx, [rdx*2 + 2]
mov rcx, qword [rbp - 0x68]
mov rax, rcx
cmp rdx, 0x1000
jb 0x1400205c7
add rdx, 0x27
mov rcx, qword [rcx - 8]
sub rax, rcx
add rax, 0xfffffffffffffff8
cmp rax, 0x1f
ja 0x140020dc4
call fcn.1402434a4
mov qword [rbp - 0x58], rbx
mov qword [rbp - 0x50], 7
mov word [rbp - 0x68], bx
mov rdx, qword [rbp + 0x158]
cmp rdx, 8
jb 0x140020781
lea rdx, [rdx*2 + 2]
mov rcx, qword [rbp + 0x140]
mov rax, rcx
cmp rdx, 0x1000
jb 0x14002077b
add rdx, 0x27
mov rcx, qword [rcx - 8]
sub rax, rcx
add rax, 0xfffffffffffffff8
cmp rax, 0x1f
ja 0x140020dad
jmp 0x14002077b
cmp dword [rbp + 0x40], 3
jne 0x140020781
mov r15b, 1
jmp 0x140020781
mov r15b, 1
xor eax, eax
mov qword [rbp + 0x160], rax
mov qword [rbp + 0x170], rax
mov qword [rbp + 0x178], 7
mov word [rbp + 0x160], ax
lea r8d, [rax + 0x22]
lea rdx, str.fail_to_load_proxy_configure_from
lea rcx, [rbp + 0x160]
call fcn.14000a430
nop
mov rdx, qword [rsp + 0x30]
mov r8, rsi
inc r8
cmp word [rdx + r8*2], 0
jne 0x140020681
lea rcx, [rbp + 0x160]
call fcn.14000a2b0
mov r8d, reloc.WS2_32.dll_send
lea rdx, str.._use_browser_proxy
mov rcx, rax
call fcn.14000a2b0
mov rbx, rax
xor eax, eax
mov qword [rbp - 0x48], rax
mov qword [rbp - 0x38], rax
mov qword [rbp - 0x30], 7
mov word [rbp - 0x48], ax
lea r8d, [rax + 0x18]
lea rdx, str.Updater::GetCurrentProxy
lea rcx, [rbp - 0x48]
call fcn.14000a430
nop
mov rdx, rbx
lea rcx, [rbp - 0x48]
call fcn.140037cb0
nop
mov rdx, qword [rbp - 0x30]
cmp rdx, 8
jb 0x140020728
lea rdx, [rdx*2 + 2]
mov rcx, qword [rbp - 0x48]
mov rax, rcx
cmp rdx, 0x1000
jb 0x140020723
add rdx, 0x27
mov rcx, qword [rcx - 8]
sub rax, rcx
add rax, 0xfffffffffffffff8
cmp rax, 0x1f
ja 0x140020dca
call fcn.1402434a4
xor eax, eax
mov qword [rbp - 0x38], rax
mov qword [rbp - 0x30], 7
mov word [rbp - 0x48], ax
mov rdx, qword [rbp + 0x178]
cmp rdx, 8
jb 0x140020781
lea rdx, [rdx*2 + 2]
mov rcx, qword [rbp + 0x160]
mov rax, rcx
cmp rdx, 0x1000
jb 0x14002077b
add rdx, 0x27
mov rcx, qword [rcx - 8]
sub rax, rcx
add rax, 0xfffffffffffffff8
cmp rax, 0x1f
ja 0x140020dd0
call fcn.1402434a4
nop
mov rdx, qword [rbp - 0x70]
cmp rdx, 0x10
jb 0x140020b26
inc rdx
mov rcx, qword [rsp + 0x78]
mov rax, rcx
cmp rdx, 0x1000
jb 0x1400207bc
add rdx, 0x27
mov rcx, qword [rcx - 8]
sub rax, rcx
add rax, 0xfffffffffffffff8
cmp rax, 0x1f
ja 0x140020dd6
call fcn.1402434a4
jmp 0x140020b26
lea rax, [rbp + 0x1e8]
mov qword [rbp + 0x1e0], rax
mov r8d, 3
mov rdx, qword [rsp + 0x30]
lea rcx, [rbp + 0x1e0]
call fcn.1400053f0
nop
mov qword [rbp - 0x28], rbx
mov qword [rbp - 0x18], rbx
mov qword [rbp - 0x10], reloc.WS2_32.dll_ntohs
mov byte [rbp - 0x28], 0
mov rdx, qword [rbp + 0x1e0]
mov r8, rsi
nop word [rax + rax]
inc r8
cmp byte [rdx + r8], 0
jne 0x140020810
lea rcx, [rbp - 0x28]
call fcn.1400079c0
nop
lea rax, [rbp + 0x1e8]
mov rcx, qword [rbp + 0x1e0]
cmp rcx, rax
je 0x14002083c
call fcn.140255ce0
mov qword [rbp + 0x18], rbx
mov qword [rbp + 0x28], rbx
mov qword [rbp + 0x30], reloc.WS2_32.dll_ntohs
mov byte [rbp + 0x18], 0
mov qword [rsp + 0x38], rbx
lea rdx, [rbp - 0x28]
cmp qword [rbp - 0x10], 0x10
cmovae rdx, qword [rbp - 0x28]
lea r8, [0x140289630]
lea rcx, [rsp + 0x38]
call fcn.140257240
mov rcx, qword [rsp + 0x38]
test rcx, rcx
je 0x140020a32
xor edx, edx
lea r8d, [rdx + 2]
call fcn.140258110
mov rcx, qword [rsp + 0x38]
call fcn.140258668
movsxd rbx, eax
xor r8d, r8d
xor edx, edx
mov rcx, qword [rsp + 0x38]
call fcn.140258110
mov rcx, rbx
call fcn.140243670
mov rdi, rax
mov r9, qword [rsp + 0x38]
mov r8, rbx
mov rdx, r14
mov rcx, rax
call fcn.140257e00
mov r8, rbx
mov rdx, rdi
lea rcx, [rbp + 0x18]
call fcn.1400079c0
mov rcx, rdi
call fcn.1402434a4
mov rcx, qword [rsp + 0x38]
call fcn.14025750c
cmp qword [rbp + 0x28], 0
je 0x140020a32
lea rdx, [rbp + 0x18]
lea rcx, [rbp - 8]
call fcn.140003520
nop
xor ebx, ebx
mov qword [rbp + 0x180], rbx
mov qword [rbp + 0x190], rbx
mov qword [rbp + 0x198], reloc.WS2_32.dll_ntohs
lea r8d, [rbx + 0x36]
lea rdx, str.PROXY_SETTING_KEY_5D95F5F8_8C42_427D_A0A1_79016036E373
lea rcx, [rbp + 0x180]
call fcn.1400079c0
mov r11, qword [rbp + 8]
mov r9d, ebx
mov r10, qword [rbp + 0x198]
mov r8, qword [rbp + 0x180]
test r11, r11
je 0x14002099b
mov rbx, qword [rbp + 0x190]
nop dword [rax]
nop dword [rax + rax]
lea rcx, [rbp + 0x180]
cmp r10, 0x10
cmovae rcx, r8
xor edx, edx
mov rax, r9
div rbx
add rdx, rcx
lea rcx, [rbp - 8]
cmp qword [rbp + 0x10], 0x10
cmovae rcx, qword [rbp - 8]
movzx eax, byte [rcx + r9]
xor al, byte [rdx]
mov byte [rcx + r9], al
inc r9
cmp r9, r11
jne 0x140020960
cmp r10, 0x10
jb 0x1400209d2
lea rdx, [r10 + 1]
mov rax, r8
cmp rdx, 0x1000
jb 0x1400209ca
add rdx, 0x27
mov r8, qword [r8 - 8]
sub rax, r8
add rax, 0xfffffffffffffff8
cmp rax, 0x1f
ja 0x140020ddc
mov rcx, r8
call fcn.1402434a4
lea rdx, [rbp - 8]
lea rcx, [rbp + 0x40]
call fcn.140005d80
lea rcx, [rbp + 0x40]
call fcn.140005660
test al, al
je 0x1400209f7
cmp dword [rbp + 0x40], 3
jne 0x140020a12
mov r15b, 1
jmp 0x140020a12
lea r8, [0x140284a60]
lea rdx, str.GetCurrentProxy
lea rcx, str.proxySetting_is_not_valid
call fcn.140039ff0
nop
mov r8, qword [rbp + 0x10]
cmp r8, 0x10
jb 0x140020aaa
inc r8
mov rdx, qword [rbp - 8]
lea rcx, [rbp - 8]
call fcn.140007d10
jmp 0x140020aaa
mov r15b, 1
call fcn.140004ca0
mov rcx, rax
test rax, rax
je 0x140020de2
mov rax, qword [rax]
call qword [rax + Ordinal_26]
add rax, 0x18
mov qword [rsp + 0x58], rax
call qword [sym.imp.KERNEL32.dll_GetLastError]
mov r9d, eax
mov r8, qword [rsp + 0x30]
lea rdx, str.Open_file___s__failed__last_error___d
lea rcx, [rsp + 0x58]
call fcn.140012910
lea r8, [0x140284a60]
lea rdx, str.GetCurrentProxy
mov rbx, qword [rsp + 0x58]
mov rcx, rbx
call fcn.140039ff0
nop
lea rdx, [rbx - 0x18]
mov eax, esi
lock xadd dword [rdx + 0x10], eax
sub eax, 1
jg 0x140020aaa
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + ioctlsocket]
nop
mov rdx, qword [rbp + 0x30]
cmp rdx, 0x10
jb 0x140020ae6
inc rdx
mov rcx, qword [rbp + 0x18]
mov rax, rcx
cmp rdx, 0x1000
jb 0x140020ae0
add rdx, 0x27
mov rcx, qword [rcx - 8]
sub rax, rcx
add rax, 0xfffffffffffffff8
cmp rax, 0x1f
ja 0x140020ded
call fcn.1402434a4
nop
mov rdx, qword [rbp - 0x10]
cmp rdx, 0x10
jb 0x140020b21
inc rdx
mov rcx, qword [rbp - 0x28]
mov rax, rcx
cmp rdx, 0x1000
jb 0x140020b1c
add rdx, 0x27
mov rcx, qword [rcx - 8]
sub rax, rcx
add rax, 0xfffffffffffffff8
cmp rax, 0x1f
ja 0x140020df3
call fcn.1402434a4
mov rdi, qword [rsp + 0x48]
test r15b, r15b
je 0x140020bec
lea rdx, [rbp + 0x380]
mov rcx, r12
call fcn.14001fe80
mov rbx, rax
mov ecx, dword [rax]
mov dword [rbp + 0x40], ecx
lea rdx, [rax + 8]
lea rcx, [rbp + 0x48]
call fcn.140012320
mov ecx, dword [rbx + 0x28]
mov dword [rbp + 0x68], ecx
lea rdx, [rbx + 0x30]
lea rcx, [rbp + 0x70]
call fcn.140012320
lea rdx, [rbx + 0x50]
lea rcx, [rbp + 0x90]
call fcn.140012320
lea rdx, [rbx + 0x70]
lea rcx, [rbp + 0xb0]
call fcn.140012320
lea rdx, [rbx + 0x90]
lea rcx, [rbp + 0xd0]
call fcn.140012320
lea rdx, [rbx + 0xb0]
lea rcx, [rbp + 0xf0]
call fcn.140012320
movzx eax, byte [rbx + 0xd0]
mov byte [rbp + 0x110], al
movzx eax, byte [rbx + 0xd1]
mov byte [rbp + 0x111], al
movzx eax, byte [rbx + 0xd2]
mov byte [rbp + 0x112], al
movzx eax, byte [rbx + 0xd3]
mov byte [rbp + 0x113], al
lea rcx, [rbp + 0x380]
call fcn.14001c720
cmp dword [rbp + 0x40], 0
jne 0x140020c14
lea r8, [0x140284a60]
lea rdx, str.GetCurrentProxy
lea rcx, str.No_proxy_detected_
call fcn.140039ff0
xor r14d, r14d
jmp 0x140020d55
lea rcx, [rbp + 0x40]
call fcn.1400053e0
test al, al
je 0x140020c91
lea rcx, [rbp + 0x40]
call fcn.140005640
test al, al
je 0x140020c91
lea rcx, [rbp + 0x40]
call fcn.140004dc0
mov rcx, qword [rsp + 0x70]
mov dword [rcx], eax
lea rdx, [rbp + 0x1a0]
lea rcx, [rbp + 0x40]
call fcn.140005b00
mov rdx, rax
mov rcx, r13
call fcn.140012320
lea rcx, [rbp + 0x1a0]
call fcn.140004000
lea rdx, [rbp + 0x1c0]
lea rcx, [rbp + 0x40]
call fcn.140005bb0
mov rdx, rax
mov rcx, rdi
call fcn.140012320
lea rcx, [rbp + 0x1c0]
call fcn.140004000
jmp 0x140020d55
call fcn.140004ca0
mov rcx, rax
test rax, rax
je 0x140020da2
mov rax, qword [rax]
call qword [rax + Ordinal_26]
add rax, 0x18
mov qword [rsp + 0x60], rax
lea rdx, [rbp + 0x48]
cmp qword [rbp + 0x60], 0x10
cmovae rdx, qword [rbp + 0x48]
lea rax, [rbp + 0x278]
mov qword [rbp + 0x270], rax
mov r8d, 0xfde9
lea rcx, [rbp + 0x270]
call fcn.14000ac10
nop
mov eax, dword [rbp + 0x68]
mov dword [rsp + 0x20], eax
mov r9, qword [rbp + 0x270]
mov r8d, dword [rbp + 0x40]
lea rdx, str.Invalid_proxy__type_d__proxy_s__port_d
lea rcx, [rsp + 0x60]
call fcn.140012910
nop
lea rax, [rbp + 0x278]
mov rcx, qword [rbp + 0x270]
cmp rcx, rax
je 0x140020d1c
call fcn.140255ce0
lea r8, [0x140284a60]
lea rdx, str.GetCurrentProxy
mov rbx, qword [rsp + 0x60]
mov rcx, rbx
call fcn.140039ff0
nop
lea rdx, [rbx - 0x18]
xor r14d, r14d
mov eax, esi
lock xadd dword [rdx + 0x10], eax
sub eax, 1
jg 0x140020d55
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + ioctlsocket]
nop
mov rdx, qword [rsp + 0x30]
add rdx, 0xffffffffffffffe8
lock xadd dword [rdx + 0x10], esi
sub esi, 1
jg 0x140020d73
mov rcx, qword [rdx]
mov r8, qword [rcx]
call qword [rioctlsocket + 8]
nop
lea rcx, [rbp + 0x40]
call fcn.14001c720
mov eax, r14d
mov rcx, qword [rbp + 0x460]
xor rcx, rsp
call fcn.1402435c0
add rsp, 0x578
pop r15
pop r14
pop r13
pop r12
pop rdi
pop rsi
pop rbx
pop rbp
ret
mov ecx, 0x80004005
call fcn.140004b20
nop
call fcn.14024a84c
nop
mov ecx, 0x80004005
call fcn.140004b20
nop
call fcn.14024a84c
nop
call fcn.14024a84c
nop
call fcn.14024a84c
nop
call fcn.14024a84c
nop
call fcn.14024a84c
nop
call fcn.14024a84c
nop
mov ecx, 0x80004005
call fcn.140004b20
nop
call fcn.14024a84c
nop
call fcn.14024a84c
int3