Function at 0x180023770
Capabilities:
Encode data using xor

Disassembly:
push rbp
push rbx
push rsi
push rdi
push r12
push r13
push r14
push r15
lea rbp, [rsp - 0x38]
sub rsp, 0x138
mov qword [rsp + 0x78], 0xfffffffffffffffe
mov rax, qword [0x180067008]
xor rax, rsp
mov qword [rbp + 0x28], rax
mov r12, r9
mov rbx, r8
mov rdi, rdx
mov r15, rcx
mov r13, qword [rbp + 0xa0]
cmp qword [rdx + 0x10], 0
je 0x180024197
cmp qword [r8 + 0x10], 0
je 0x180024197
mov qword [rbp - 0x48], reloc.WS2_32.dll_ntohs
xor esi, esi
mov qword [rbp - 0x50], rsi
mov byte [rbp - 0x60], sil
movups xmm0, xmmword [str._Q_U]
movups xmmword [rbp - 0x10], xmm0
movups xmm1, xmmword [0x180059330]
movups xmmword [rbp], xmm1
movups xmm0, xmmword [str._Q4e]
movups xmmword [rbp + 0x10], xmm0
movzx eax, byte [0x180059350]
mov byte [rbp + 0x20], al
mov ecx, gethostbyaddr
nop dword [rax + rax]
movzx eax, byte [rbp + rcx - 0x11]
xor byte [rbp + rcx - 0x10], al
dec rcx
test rcx, rcx
jg 0x180023810
xor byte [rbp - 0x10], 0x4d
jne 0x18002382c
mov r8, rsi
jmp 0x18002383e
lea rax, [rbp - 0x10]
or r8, 0xffffffffffffffff
inc r8
cmp byte [rax + r8], 0
jne 0x180023834
lea rdx, [rbp - 0x10]
lea rcx, [rbp - 0x60]
call fcn.1800020b0
or r9, 0xffffffffffffffff
xor r8d, r8d
mov rdx, rdi
lea rcx, [rbp - 0x60]
call fcn.180006290
mov r14d, 1
mov r8d, r14d
lea rdx, [0x180058bb8]
lea rcx, [rbp - 0x60]
call fcn.180006140
or r9, 0xffffffffffffffff
xor r8d, r8d
mov rdx, rbx
lea rcx, [rbp - 0x60]
call fcn.180006290
movsd xmm0, qword [0x180059358]
movsd qword [rbp - 0x40], xmm0
movzx eax, word [0x180059360]
mov word [rbp - 0x38], ax
movzx eax, byte [rbp - 0x39]
xor byte [rbp - 0x38], al
movzx ecx, byte [rbp - 0x3a]
xor al, cl
mov byte [rbp - 0x39], al
movzx eax, byte [rbp - 0x3b]
xor cl, al
mov byte [rbp - 0x3a], cl
movzx ecx, byte [rbp - 0x3c]
xor al, cl
mov byte [rbp - 0x3b], al
movzx eax, byte [rbp - 0x3d]
xor cl, al
mov byte [rbp - 0x3c], cl
movzx ecx, byte [rbp - 0x3e]
xor al, cl
mov byte [rbp - 0x3d], al
movzx edx, byte [rbp - 0x3f]
xor cl, dl
mov byte [rbp - 0x3e], cl
movzx eax, byte [rbp - 0x40]
xor dl, al
mov byte [rbp - 0x3f], dl
xor al, 0xfc
mov byte [rbp - 0x40], al
jne 0x1800238f4
mov r8, rsi
jmp 0x18002390a
lea rax, [rbp - 0x40]
or r8, 0xffffffffffffffff
nop dword [rax]
inc r8
cmp byte [rax + r8], 0
jne 0x180023900
lea rdx, [rbp - 0x40]
lea rcx, [rbp - 0x60]
call fcn.180006140
mov qword [rbp - 0x80], rsi
mov qword [rbp - 0x78], rsi
call fcn.18000f420
mov qword [rbp - 0x80], rax
mov qword [rbp - 0x70], rsi
mov qword [rbp - 0x68], rsi
call fcn.18000f420
mov qword [rbp - 0x70], rax
movsd xmm0, qword [0x180059368]
movsd qword [rbp - 0x30], xmm0
movzx eax, word [0x180059370]
mov word [rbp - 0x28], ax
movzx eax, byte [0x180059372]
mov byte [rbp - 0x26], al
movzx eax, byte [rbp - 0x28]
xor byte [rbp - 0x27], al
movzx ecx, byte [rbp - 0x29]
xor al, cl
mov byte [rbp - 0x28], al
movzx eax, byte [rbp - 0x2a]
xor cl, al
mov byte [rbp - 0x29], cl
movzx ecx, byte [rbp - 0x2b]
xor al, cl
mov byte [rbp - 0x2a], al
movzx eax, byte [rbp - 0x2c]
xor cl, al
mov byte [rbp - 0x2b], cl
movzx ecx, byte [rbp - 0x2d]
xor al, cl
mov byte [rbp - 0x2c], al
movzx eax, byte [rbp - 0x2e]
xor cl, al
mov byte [rbp - 0x2d], cl
movzx ecx, byte [rbp - 0x2f]
xor al, cl
mov byte [rbp - 0x2e], al
movzx edx, byte [rbp - 0x30]
xor cl, dl
mov byte [rbp - 0x2f], cl
xor dl, 0xfe
mov byte [rbp - 0x30], dl
movsd xmm0, qword [0x180059378]
movsd qword [rbp - 0x40], xmm0
movzx eax, word [0x180059380]
mov word [rbp - 0x38], ax
movzx eax, byte [0x180059382]
mov byte [rbp - 0x36], al
movzx eax, byte [rbp - 0x38]
xor byte [rbp - 0x37], al
movzx ecx, byte [rbp - 0x39]
xor al, cl
mov byte [rbp - 0x38], al
movzx eax, byte [rbp - 0x3a]
xor cl, al
mov byte [rbp - 0x39], cl
movzx ecx, byte [rbp - 0x3b]
xor al, cl
mov byte [rbp - 0x3a], al
movzx eax, byte [rbp - 0x3c]
xor cl, al
mov byte [rbp - 0x3b], cl
movzx ecx, byte [rbp - 0x3d]
xor al, cl
mov byte [rbp - 0x3c], al
movzx eax, byte [rbp - 0x3e]
xor cl, al
mov byte [rbp - 0x3d], cl
movzx ecx, byte [rbp - 0x3f]
xor al, cl
mov byte [rbp - 0x3e], al
movzx eax, byte [rbp - 0x40]
xor cl, al
mov byte [rbp - 0x3f], cl
xor al, 0xbc
mov byte [rbp - 0x40], al
mov qword [rsp + 0x70], reloc.WS2_32.dll_ntohs
mov qword [rsp + 0x68], rsi
mov byte [rsp + 0x58], 0
test dl, dl
jne 0x180023a42
mov r8, rsi
jmp 0x180023a5a
lea rax, [rbp - 0x30]
or r8, 0xffffffffffffffff
nop word [rax + rax]
inc r8
cmp byte [rax + r8], 0
jne 0x180023a50
lea rdx, [rbp - 0x30]
lea rcx, [rsp + 0x58]
call fcn.1800020b0
nop
mov rsi, qword [rbp - 0x80]
mov rdi, qword [rsi + 8]
mov rbx, rsi
cmp byte [rdi + 0x19], 0
jne 0x180023abb
nop word [rax + rax]
lea rdx, [rdi + 0x20]
lea r8, [rsp + 0x58]
call fcn.18000c790
test al, al
je 0x180023a98
mov rdi, qword [rdi + 0x10]
jmp 0x180023a9e
mov rbx, rdi
mov rdi, qword [rdi]
cmp byte [rdi + 0x19], 0
je 0x180023a80
cmp rbx, rsi
je 0x180023abb
lea r8, [rbx + 0x20]
lea rdx, [rsp + 0x58]
call fcn.18000c790
test al, al
je 0x180023af2
lea rax, [rsp + 0x58]
mov qword [rsp + 0x50], rax
lea r8, [rsp + 0x50]
lea rcx, [rbp - 0x80]
call fcn.1800156a0
lea r9, [rax + 0x20]
mov qword [rsp + 0x20], rax
mov r8, rbx
lea rdx, [rsp + 0x50]
lea rcx, [rbp - 0x80]
call fcn.180015710
mov rbx, qword [rsp + 0x50]
cmp byte [rbp - 0x40], 0
jne 0x180023afd
xor r8d, r8d
jmp 0x180023b0f
lea rax, [rbp - 0x40]
or r8, 0xffffffffffffffff
inc r8
cmp byte [rax + r8], 0
jne 0x180023b05
lea rcx, [rbx + 0x40]
lea rdx, [rbp - 0x40]
call fcn.1800020b0
nop
mov rax, qword [rsp + 0x70]
cmp rax, 0x10
jb 0x180023b75
inc rax
mov rcx, qword [rsp + 0x58]
cmp rax, 0x1000
jb 0x180023b70
test cl, 0x1f
je 0x180023b43
call fcn.18003835c
int3
mov rax, qword [rcx - 8]
cmp rax, rcx
jb 0x180023b52
call fcn.18003835c
int3
sub rcx, rax
cmp rcx, 8
jae 0x180023b61
call fcn.18003835c
int3
cmp rcx, 0x27
jbe 0x180023b6d
call fcn.18003835c
int3
mov rcx, rax
call fcn.180033ed0
movups xmm0, xmmword [0x180059388]
movups xmmword [rbp - 0x30], xmm0
movsd xmm1, qword [0x180059398]
movsd qword [rbp - 0x20], xmm1
movzx eax, byte [0x1800593a0]
mov byte [rbp - 0x18], al
mov ecx, reloc.WS2_32.dll_socket
nop dword [rax]
movzx eax, byte [rbp + rcx - 0x31]
xor byte [rbp + rcx - 0x30], al
dec rcx
test rcx, rcx
jg 0x180023ba0
xor byte [rbp - 0x30], 0x62
movsd xmm0, qword [0x1800593a8]
movsd qword [rbp - 0x40], xmm0
mov eax, dword [0x1800593b0]
mov dword [rbp - 0x38], eax
movzx eax, byte [0x1800593b4]
mov byte [rbp - 0x34], al
mov ecx, reloc.WS2_32.dll_inet_addr
nop word [rax + rax]
movzx eax, byte [rbp + rcx - 0x41]
xor byte [rbp + rcx - 0x40], al
dec rcx
test rcx, rcx
jg 0x180023be0
xor byte [rbp - 0x40], 0x3f
mov qword [rsp + 0x70], reloc.WS2_32.dll_ntohs
mov qword [rsp + 0x68], 0
mov byte [rsp + 0x58], 0
jne 0x180023c13
xor r8d, r8d
jmp 0x180023c2a
lea rax, [rbp - 0x40]
or r8, 0xffffffffffffffff
nop dword [rax + rax]
inc r8
cmp byte [rax + r8], 0
jne 0x180023c20
lea rdx, [rbp - 0x40]
lea rcx, [rsp + 0x58]
call fcn.1800020b0
nop
mov rsi, qword [rbp - 0x80]
mov rdi, qword [rsi + 8]
mov rbx, rsi
cmp byte [rdi + 0x19], 0
jne 0x180023c8b
nop word [rax + rax]
lea rdx, [rdi + 0x20]
lea r8, [rsp + 0x58]
call fcn.18000c790
test al, al
je 0x180023c68
mov rdi, qword [rdi + 0x10]
jmp 0x180023c6e
mov rbx, rdi
mov rdi, qword [rdi]
cmp byte [rdi + 0x19], 0
je 0x180023c50
cmp rbx, rsi
je 0x180023c8b
lea r8, [rbx + 0x20]
lea rdx, [rsp + 0x58]
call fcn.18000c790
test al, al
je 0x180023cc2
lea rax, [rsp + 0x58]
mov qword [rsp + 0x50], rax
lea r8, [rsp + 0x50]
lea rcx, [rbp - 0x80]
call fcn.1800156a0
lea r9, [rax + 0x20]
mov qword [rsp + 0x20], rax
mov r8, rbx
lea rdx, [rsp + 0x50]
lea rcx, [rbp - 0x80]
call fcn.180015710
mov rbx, qword [rsp + 0x50]
cmp byte [rbp - 0x30], 0
jne 0x180023ccf
xor esi, esi
mov r8d, esi
jmp 0x180023cec
lea rax, [rbp - 0x30]
or r8, 0xffffffffffffffff
nop word [rax + rax]
inc r8
cmp byte [rax + r8], 0
jne 0x180023ce0
xor esi, esi
lea rcx, [rbx + 0x40]
lea rdx, [rbp - 0x30]
call fcn.1800020b0
nop
mov rax, qword [rsp + 0x70]
cmp rax, 0x10
jb 0x180023d52
inc rax
mov rcx, qword [rsp + 0x58]
cmp rax, 0x1000
jb 0x180023d4d
test cl, 0x1f
je 0x180023d20
call fcn.18003835c
int3
mov rax, qword [rcx - 8]
cmp rax, rcx
jb 0x180023d2f
call fcn.18003835c
int3
sub rcx, rax
cmp rcx, 8
jae 0x180023d3e
call fcn.18003835c
int3
cmp rcx, 0x27
jbe 0x180023d4a
call fcn.18003835c
int3
mov rcx, rax
call fcn.180033ed0
xor eax, eax
mov qword [rbp - 0x28], rax
mov dword [rbp - 0x28], esi
mov dword [rbp - 0x24], 0x400
call qword [sym.imp.KERNEL32.dll_GetProcessHeap]
mov rcx, rax
xor edx, edx
mov r8d, 0x400
call qword [sym.imp.KERNEL32.dll_HeapAlloc]
mov qword [rbp - 0x30], rax
lea rdx, [rbp - 0x80]
call fcn.1800207a0
mov qword [rbp + 8], reloc.WS2_32.dll_ntohs
mov qword [rbp], rsi
mov byte [rbp - 0x10], 0
mov r8d, 3
lea rdx, [0x180058d94]
lea rcx, [rbp - 0x10]
call fcn.1800020b0
nop
lea rdx, [rbp - 0x60]
cmp qword [rbp - 0x48], 0x10
cmovae rdx, qword [rbp - 0x60]
mov qword [rsp + 0x70], reloc.WS2_32.dll_ntohs
mov qword [rsp + 0x68], rsi
mov byte [rsp + 0x58], 0
cmp byte [rdx], 0
jne 0x180023dd8
mov r8, rsi
jmp 0x180023dea
or r8, 0xffffffffffffffff
nop dword [rax]
inc r8
cmp byte [rdx + r8], 0
jne 0x180023de0
lea rcx, [rsp + 0x58]
call fcn.1800020b0
nop
lea rax, [rbp - 0x30]
mov qword [rsp + 0x40], rax
lea rax, [rbp - 0x70]
mov qword [rsp + 0x38], rax
lea rax, [rsp + 0x50]
mov qword [rsp + 0x30], rax
lea rax, [rbp - 0x80]
mov qword [rsp + 0x28], rax
lea rax, [rbp - 0x10]
mov qword [rsp + 0x20], rax
mov r9d, dword [r13]
mov r8, r12
lea rdx, [rsp + 0x58]
mov rcx, r15
call fcn.18001f590
mov edi, eax
mov rcx, qword [rsp + 0x70]
cmp rcx, 0x10
jb 0x180023e95
inc rcx
mov rdx, qword [rsp + 0x58]
cmp rcx, 0x1000
jb 0x180023e8d
test dl, 0x1f
je 0x180023e60
call fcn.18003835c
int3
mov rax, qword [rdx - 8]
cmp rax, rdx
jb 0x180023e6f
call fcn.18003835c
int3
sub rdx, rax
cmp rdx, 8
jae 0x180023e7e
call fcn.18003835c
int3
cmp rdx, 0x27
jbe 0x180023e8a
call fcn.18003835c
int3
mov rdx, rax
mov rcx, rdx
call fcn.180033ed0
mov qword [rsp + 0x70], reloc.WS2_32.dll_ntohs
mov qword [rsp + 0x68], rsi
mov byte [rsp + 0x58], 0
mov rax, qword [rbp + 8]
cmp rax, 0x10
jb 0x180023efe
inc rax
mov rcx, qword [rbp - 0x10]
cmp rax, 0x1000
jb 0x180023ef9
test cl, 0x1f
je 0x180023ecc
call fcn.18003835c
int3
mov rax, qword [rcx - 8]
cmp rax, rcx
jb 0x180023edb
call fcn.18003835c
int3
sub rcx, rax
cmp rcx, 8
jae 0x180023eea
call fcn.18003835c
int3
cmp rcx, 0x27
jbe 0x180023ef6
call fcn.18003835c
int3
mov rcx, rax
call fcn.180033ed0
mov ebx, esi
test edi, edi
je 0x1800240c0
mov ecx, 0xbb8
call qword [sym.imp.KERNEL32.dll_Sleep]
mov qword [rbp + 8], reloc.WS2_32.dll_ntohs
mov qword [rbp], rsi
mov byte [rbp - 0x10], 0
mov r8d, 3
lea rdx, [0x180058d94]
lea rcx, [rbp - 0x10]
call fcn.1800020b0
nop
lea rdx, [rbp - 0x60]
cmp qword [rbp - 0x48], 0x10
cmovae rdx, qword [rbp - 0x60]
mov qword [rsp + 0x70], reloc.WS2_32.dll_ntohs
mov qword [rsp + 0x68], rsi
mov byte [rsp + 0x58], 0
cmp byte [rdx], 0
jne 0x180023f65
mov r8, rsi
jmp 0x180023f7a
or r8, 0xffffffffffffffff
nop dword [rax]
inc r8
cmp byte [rdx + r8], 0
jne 0x180023f70
lea rcx, [rsp + 0x58]
call fcn.1800020b0
nop
lea rax, [rbp - 0x30]
mov qword [rsp + 0x40], rax
lea rax, [rbp - 0x70]
mov qword [rsp + 0x38], rax
lea rax, [rsp + 0x50]
mov qword [rsp + 0x30], rax
lea rax, [rbp - 0x80]
mov qword [rsp + 0x28], rax
lea rax, [rbp - 0x10]
mov qword [rsp + 0x20], rax
mov r9d, dword [r13]
mov r8, r12
lea rdx, [rsp + 0x58]
mov rcx, r15
call fcn.18001f590
mov edi, eax
mov rax, qword [rsp + 0x70]
cmp rax, 0x10
jb 0x180024011
inc rax
mov rcx, qword [rsp + 0x58]
cmp rax, 0x1000
jb 0x18002400c
test cl, 0x1f
jne 0x180024080
mov rax, qword [rcx - 8]
cmp rax, rcx
jae 0x18002407a
sub rcx, rax
cmp rcx, 8
jb 0x180024074
cmp rcx, 0x27
ja 0x18002406e
mov rcx, rax
call fcn.180033ed0
mov qword [rsp + 0x70], reloc.WS2_32.dll_ntohs
mov qword [rsp + 0x68], rsi
mov byte [rsp + 0x58], 0
mov rax, qword [rbp + 8]
cmp rax, 0x10
jb 0x180024062
inc rax
mov rcx, qword [rbp - 0x10]
cmp rax, 0x1000
jb 0x18002405d
test cl, 0x1f
jne 0x180024098
mov rax, qword [rcx - 8]
cmp rax, rcx
jae 0x180024092
sub rcx, rax
cmp rcx, 8
jb 0x18002408c
cmp rcx, 0x27
ja 0x180024086
mov rcx, rax
call fcn.180033ed0
inc ebx
cmp ebx, 3
jge 0x18002409e
jmp 0x180023f00
call fcn.18003835c
int3
call fcn.18003835c
int3
call fcn.18003835c
int3
call fcn.18003835c
nop
call fcn.18003835c
int3
call fcn.18003835c
int3
call fcn.18003835c
int3
call fcn.18003835c
int3
test edi, edi
je 0x1800240c0
lea eax, [rdi - 2]
test eax, 0xfffffffd
je 0x1800240b8
lea eax, [rdi - 1]
test eax, 0xfffffffd
jne 0x1800240c0
jmp 0x1800240da
mov r14d, 3
jmp 0x1800240da
mov eax, 0x51eb851f
mul dword [rsp + 0x50]
shr edx, 5
cmp edx, 2
mov r14d, 4
jne 0x1800240da
mov r14d, esi
mov rbx, qword [rbp - 0x30]
test rbx, rbx
je 0x1800240f8
call qword [sym.imp.KERNEL32.dll_GetProcessHeap]
mov rcx, rax
mov r8, rbx
xor edx, edx
call qword [sym.imp.KERNEL32.dll_HeapFree]
nop
mov r8, qword [rbp - 0x70]
mov r9, r8
mov r8, qword [r8]
lea rdx, [rsp + 0x50]
lea rcx, [rbp - 0x70]
call fcn.18000e170
mov rcx, qword [rbp - 0x70]
call fcn.180033ed0
nop
mov r8, qword [rbp - 0x80]
mov r9, r8
mov r8, qword [r8]
lea rdx, [rsp + 0x50]
lea rcx, [rbp - 0x80]
call fcn.18000e170
mov rcx, qword [rbp - 0x80]
call fcn.180033ed0
nop
mov rax, qword [rbp - 0x48]
cmp rax, 0x10
jb 0x180024192
inc rax
mov rcx, qword [rbp - 0x60]
cmp rax, 0x1000
jb 0x18002418d
test cl, 0x1f
je 0x180024160
call fcn.18003835c
int3
mov rax, qword [rcx - 8]
cmp rax, rcx
jb 0x18002416f
call fcn.18003835c
int3
sub rcx, rax
cmp rcx, 8
jae 0x18002417e
call fcn.18003835c
int3
cmp rcx, 0x27
jbe 0x18002418a
call fcn.18003835c
int3
mov rcx, rax
call fcn.180033ed0
mov eax, r14d
jmp 0x18002419c
mov eax, 6
mov rcx, qword [rbp + 0x28]
xor rcx, rsp
call fcn.180033e70
add rsp, 0x138
pop r15
pop r14
pop r13
pop r12
pop rdi
pop rsi
pop rbx
pop rbp
ret