Function at 0x14003b800
Capabilities:
Check for time delay via gettickcount

Disassembly:
mov qword [rsp + 0x18], rbx
push rbp
push rsi
push rdi
push r12
push r13
push r14
push r15
lea rbp, [rsp - 0x3a0]
sub rsp, 0x4a0
mov rax, qword [0x1401f0010]
xor rax, rsp
mov qword [rbp + 0x390], rax
mov byte [rsp + 0x23], r8b
mov qword [rsp + 0x60], rdx
mov r14, rcx
xorps xmm0, xmm0
movdqu xmmword [rsp + 0x28], xmm0
xor r15d, r15d
mov qword [rsp + 0x38], r15
mov rsi, qword [rdx + 8]
mov qword [rsp + 0x50], rsi
mov rdi, qword [rdx]
mov rbx, rsi
sub rbx, rdi
mov r8, rbx
lea edx, [r15 + 0x73]
mov rcx, rdi
call fcn.140167f20
mov r13, rsi
test rax, rax
cmovne r13, rax
mov r8, rbx
lea edx, [r15 + 0x68]
mov rcx, rdi
call fcn.140167f20
mov rbx, rsi
test rax, rax
cmovne rbx, rax
mov qword [rsp + 0x68], rbx
cmp rdi, rsi
jne 0x14003b8ea
mov byte [rsp + 0x20], setsockopt
lea r8, [rsp + 0x20]
xor edx, edx
lea rcx, [rsp + 0x28]
call fcn.140048ca0
mov byte [rsp + 0x20], 0x75
mov rsi, qword [rsp + 0x30]
mov r15, qword [rsp + 0x38]
cmp rsi, r15
je 0x14003b8d3
mov byte [rsi], 0x75
inc rsi
mov qword [rsp + 0x30], rsi
jmp 0x14003b8ef
lea r8, [rsp + 0x20]
mov rdx, rsi
lea rcx, [rsp + 0x28]
call fcn.140048ca0
mov r15, qword [rsp + 0x38]
mov rsi, qword [rsp + 0x30]
mov rdi, 0xffffffffffffffff
lea r12d, [rdi + 2]
mov rcx, qword [rsp + 0x50]
cmp r13, rcx
jne 0x14003b98b
mov rax, qword [r14 + 0x2b8]
cmp byte [rax + 0x30], 0
je 0x14003b98b
mov rcx, qword [r14 + 0x2c0]
mov rax, qword [rcx]
call qword [rax + 0x210]
cmp byte [rax + 0x39], 0
je 0x14003b986
mov rax, qword [r14 + 0x2b8]
cmp qword [rax + 8], 0
je 0x14003b986
mov byte [rsp + 0x20], reloc.WS2_32.dll_WSAStartup
cmp rsi, r15
je 0x14003b950
mov byte [rsi], reloc.WS2_32.dll_WSAStartup
inc rsi
mov qword [rsp + 0x30], rsi
jmp 0x14003b96c
lea r8, [rsp + 0x20]
mov rdx, rsi
lea rcx, [rsp + 0x28]
call fcn.140048ca0
mov r15, qword [rsp + 0x38]
mov rsi, qword [rsp + 0x30]
mov byte [rsp + 0x20], WSACleanup
cmp rsi, r15
je 0x14003b9c3
mov byte [rsi], WSACleanup
inc rsi
mov qword [rsp + 0x30], rsi
jmp 0x14003bae0
mov rcx, qword [rsp + 0x50]
mov rax, qword [0x1401fef68]
cmp byte [rax + 0xe2d], 0
jne 0x14003b9a4
cmp byte [rax + 0xe2c], 0
je 0x14003b9e4
cmp rbx, rcx
jne 0x14003b9e4
mov byte [rsp + 0x20], 0x68
cmp rsi, r15
je 0x14003b9c3
mov byte [rsi], 0x68
inc rsi
mov qword [rsp + 0x30], rsi
jmp 0x14003bae0
lea r8, [rsp + 0x20]
mov rdx, rsi
lea rcx, [rsp + 0x28]
call fcn.140048ca0
mov r15, qword [rsp + 0x38]
mov rsi, qword [rsp + 0x30]
jmp 0x14003bae0
mov ebx, dword [rax + 0x7a8]
lea rdi, [rax + 0x734]
mov ecx, 9
call fcn.14013abf8
mov r13, rax
lea rax, [0x1401f0c48]
lea rcx, [0x1401f0d50]
test ebx, ebx
cmove rcx, rax
mov edx, r12d
call fcn.140018750
mov rdx, r13
mov rcx, rdi
call fcn.1400194c0
mov byte [r13 + 8], 0
mov qword [rsp + 0x40], r13
cmp dword [r14 + 0x2d0], 0
jne 0x14003ba87
cmp dword [r14 + 0x2d8], 0
je 0x14003ba5a
mov byte [rsp + 0x20], WSACleanup
cmp rsi, r15
je 0x14003ba9e
mov byte [rsi], WSAStartup
inc rsi
mov qword [rsp + 0x30], rsi
jmp 0x14003baba
mov rax, 0xffffffffffffffff
inc rax
cmp byte [rax + r13], 0
jne 0x14003ba61
test rax, rax
je 0x14003ba87
mov byte [rsp + 0x20], 2
cmp rsi, r15
je 0x14003ba9e
mov byte [rsi], 2
inc rsi
mov qword [rsp + 0x30], rsi
jmp 0x14003baba
mov byte [rsp + 0x20], 1
cmp rsi, r15
je 0x14003ba9e
mov byte [rsi], 1
inc rsi
mov qword [rsp + 0x30], rsi
jmp 0x14003baba
lea r8, [rsp + 0x20]
mov rdx, rsi
lea rcx, [rsp + 0x28]
call fcn.140048ca0
mov r15, qword [rsp + 0x38]
mov rsi, qword [rsp + 0x30]
mov rdi, 0xffffffffffffffff
mov r8, rdi
inc r8
cmp byte [r8 + r13], 0
jne 0x14003bac4
xor edx, edx
mov rcx, r13
call fcn.1401348e0
mov rcx, r13
call fcn.140138b40
mov rax, rsi
mov r13, qword [rsp + 0x28]
sub rax, r13
mov qword [rsp + 0x40], rax
mov byte [rsp + 0x20], al
mov r8d, r12d
lea rdx, [rsp + 0x20]
mov rcx, qword [r14 + 0x2b8]
call fcn.140087b90
test eax, eax
je 0x14003bf93
cmp r13, rsi
je 0x14003bb4b
mov rbx, r13
nop dword [rax + rax]
movzx eax, byte [rbx]
mov byte [rsp + 0x22], al
mov r8d, r12d
lea rdx, [rsp + 0x22]
mov rcx, qword [r14 + 0x2b8]
call fcn.140087b90
test eax, eax
je 0x14003bf93
inc rbx
cmp rbx, rsi
jne 0x14003bb20
mov rbx, qword [r14 + 0x2b8]
cmp qword [rbx + 0x10], 0xffffffffffffffff
je 0x14003bf93
cmp dword [rbx + 0x23ec], 0
je 0x14003bb98
call qword [sym.imp.KERNEL32.dll_GetTickCount]
mov dword [rbx + 0x18], eax
lea rdx, [rbx + 0xc4]
mov r8d, dword [rbx + 0x23ec]
mov rcx, qword [rbx + 0x10]
call fcn.140088080
test al, al
je 0x14003bf93
mov dword [rbx + 0x23ec], 0
mov rax, qword [0x1401fef68]
mov ecx, dword [rax + 0xd14]
mov dword [rbx + 0x23f0], ecx
mov byte [rsp + 0x21], 0
mov r8d, r12d
lea rdx, [rsp + 0x21]
mov rcx, qword [r14 + 0x2b8]
call fcn.140087d80
test eax, eax
je 0x14003bf93
movzx ebx, byte [rsp + 0x21]
mov r8, qword [rsp + 0x40]
mov edx, ebx
mov rcx, r13
call fcn.140167f20
mov rcx, rsi
test rax, rax
cmovne rcx, rax
cmp rcx, rsi
je 0x14003bf93
xor r8d, r8d
mov esi, r8d
mov qword [rsp + 0x70], r8
mov qword [rbp - 0x80], r8
mov qword [rbp - 0x78], setsockopt
mov byte [rsp + 0x70], sil
lea eax, [rbx - 1]
cmp eax, 0x72
ja case.0x14003bc36.3
cdqe
lea rdx, [0x140000000]
movzx eax, byte [rdx + rax + 0x3c020]
mov ecx, dword [rdx + rax*4 + 0x3c000]
add rcx, rdx
jmp rcx
mov rcx, qword [r14 + 0x2c8]
mov rax, qword [rcx]
mov dl, 1
call qword [rax + 0xf0]
mov ebx, r12d
jmp 0x14003bd49
lea rdx, [rsp + 0x70]
mov rcx, r14
call fcn.14003c450
mov ebx, eax
jmp 0x14003bd49
lea rdx, [rsp + 0x70]
mov rcx, r14
call fcn.14003c960
xor ebx, ebx
mov esi, r12d
jmp 0x14003bd49
mov rcx, r14
call fcn.14003cc40
mov ebx, eax
test eax, eax
je 0x14003bd49
jmp 0x14003bd5c
mov rcx, r14
call fcn.14003d390
mov ebx, eax
jmp 0x14003bd49
lea rcx, [rbp - 0x70]
call fcn.14001cc20
lea rax, [rbp - 0x70]
inc rdi
cmp byte [rax + rdi], 0
jne 0x14003bcb0
mov dword [rsp + 0x48], edi
mov r8d, 4
lea rdx, [rsp + 0x48]
mov rcx, qword [r14 + 0x2b8]
call fcn.140087b90
test eax, eax
jne 0x14003bcdc
xor ebx, ebx
jmp 0x14003bd49
mov r8d, dword [rsp + 0x48]
lea rdx, [rbp - 0x70]
mov rcx, qword [r14 + 0x2b8]
call fcn.140087a70
test eax, eax
jne 0x14003bcf9
xor ebx, ebx
jmp 0x14003bd49
mov dword [rsp + 0x40], 0
mov r8d, 4
lea rdx, [rsp + 0x40]
mov rcx, qword [r14 + 0x2b8]
call fcn.140087d80
test eax, eax
jne 0x14003bd20
xor ebx, ebx
jmp 0x14003bd49
cmp dword [rsp + 0x40], 0
jne case.0x14003bc36.1
mov r8d, 0x19
lea rdx, str.Viewer_refused_connection
lea rcx, [rsp + 0x70]
call fcn.1400172c0
xor ebx, ebx
jmp 0x14003bd49
mov ebx, r8d
test ebx, ebx
setne dl
movzx r8d, byte [rsp + 0x23]
mov rcx, r14
call fcn.14003aea0
mov edi, r12d
cmp ebx, r12d
jne 0x14003be00
mov rcx, qword [rsp + 0x60]
mov rdx, qword [rcx + 8]
cmp rdx, qword [rcx + 0x10]
je 0x14003bd84
movzx eax, byte [rsp + 0x21]
mov byte [rdx], al
inc qword [rcx + 8]
jmp 0x14003bd8e
lea r8, [rsp + 0x21]
call fcn.140048e30
movzx eax, byte [rsp + 0x21]
cmp dword [r14 + 0x2d8], 0
je 0x14003bdb6
cmp al, 0x73
jne 0x14003bdb6
mov rax, qword [r14 + 0x2b8]
cmp qword [rax + 8], 0
je 0x14003bdc1
mov edi, 0xffffffff
jmp 0x14003be00
cmp al, 0x11
jne 0x14003bdc1
mov edi, 0xffffffff
jmp 0x14003be00
mov rax, qword [0x1401fef68]
cmp byte [rax + 0xe2d], 0
jne 0x14003bdda
cmp byte [rax + 0xe2c], 0
je 0x14003bded
mov rax, qword [rsp + 0x68]
cmp rax, qword [rsp + 0x50]
jne 0x14003bded
mov edi, 0xffffffff
jmp 0x14003be00
xor edi, edi
mov rcx, r14
call fcn.14003a9d0
test eax, eax
jne 0x14003be00
mov edi, r12d
xor ebx, ebx
mov eax, edi
bswap eax
mov dword [rsp + 0x58], eax
mov r8d, 4
lea rdx, [rsp + 0x58]
mov rcx, qword [r14 + 0x2b8]
call fcn.140087b90
test eax, eax
je 0x14003bf84
test ebx, ebx
jne 0x14003be34
cmp byte [rsp + 0x21], 0x72
jne 0x14003be5d
jmp 0x14003be3f
cmp byte [rsp + 0x21], 0x72
jne 0x14003bf10
mov rax, qword [r14 + 0x2b8]
mov rcx, qword [rax + 8]
test rcx, rcx
je 0x14003be55
mov rax, qword [rcx]
call qword [rax + 0x30]
test ebx, ebx
jne 0x14003bf10
mov rdx, qword [rbp - 0x80]
test esi, esi
jne 0x14003befb
test rdx, rdx
jne 0x14003be87
lea r8d, [rdx + 0x17]
lea rdx, str.authentication_rejected
lea rcx, [rsp + 0x70]
call fcn.1400172c0
mov rdx, qword [rbp - 0x80]
mov rax, rdx
shr rax, 0x18
movzx ecx, al
mov rax, rdx
shl rax, 8
and eax, 0xff0000
or ecx, eax
mov rax, rdx
shr rax, 8
and eax, 0xff00
or ecx, eax
shl rdx, 0x18
or ecx, edx
mov dword [rsp + 0x40], ecx
mov r8d, 4
lea rdx, [rsp + 0x40]
mov rcx, qword [r14 + 0x2b8]
call fcn.140087b90
test eax, eax
je 0x14003bf84
lea rdx, [rsp + 0x70]
cmp qword [rbp - 0x78], 0x10
cmovae rdx, qword [rsp + 0x70]
mov r8d, dword [rbp - 0x80]
mov rcx, qword [r14 + 0x2b8]
call fcn.140087a70
jmp 0x14003bf84
test rdx, rdx
jne 0x14003be87
lea r8d, [rdx + 0x27]
lea rdx, str.Server_require_a_higher_viewer_version.
jmp 0x14003be79
mov rbx, qword [r14 + 0x2b8]
cmp qword [rbx + 0x10], 0xffffffffffffffff
je 0x14003bf84
cmp dword [rbx + 0x23ec], 0
je 0x14003bf55
call qword [sym.imp.KERNEL32.dll_GetTickCount]
mov dword [rbx + 0x18], eax
lea rdx, [rbx + 0xc4]
mov r8d, dword [rbx + 0x23ec]
mov rcx, qword [rbx + 0x10]
call fcn.140088080
test al, al
je 0x14003bf84
mov dword [rbx + 0x23ec], 0
mov rax, qword [0x1401fef68]
mov r8d, dword [rax + 0xd14]
mov dword [rbx + 0x23f0], r8d
cmp edi, 0xffffffff
jne 0x14003bf87
mov rax, qword [r14]
mov r8b, 1
mov rdx, qword [rsp + 0x60]
mov rcx, r14
call qword [rax + 0x30]
test eax, eax
jne 0x14003bf87
xor r12d, r12d
lea rcx, [rsp + 0x70]
call fcn.140017260
jmp 0x14003bf96
xor r12d, r12d
test r13, r13
je 0x14003bfca
sub r15, r13
mov rax, r13
cmp r15, 0x1000
jb 0x14003bfbf
add r15, 0x27
mov r13, qword [r13 - 8]
sub rax, r13
add rax, 0xfffffffffffffff8
cmp rax, 0x1f
ja 0x14003bff7
mov rdx, r15
mov rcx, r13
call fcn.140131f54
mov eax, r12d
mov rcx, qword [rbp + 0x390]
xor rcx, rsp
call fcn.140131ef0
mov rbx, qword [rsp + 0x4f0]
add rsp, 0x4a0
pop r15
pop r14
pop r13
pop r12
pop rdi
pop rsi
pop rbp
ret
call fcn.140138ac8
int3