Function at 0x140199f20
Capabilities:
Hash data with md5

Disassembly:
push rbp
push rbx
push rsi
push rdi
push r12
push r13
push r14
push r15
lea rbp, [rsp - 0x158]
sub rsp, 0x258
mov rax, qword [0x1404c39e8]
xor rax, rsp
mov qword [rbp + 0x140], rax
mov qword [rbp - 0x48], r9
mov rbx, r8
mov qword [rbp - 0x60], rbx
mov qword [rbp - 0x40], rdx
mov qword [rbp - 0x58], rcx
mov rax, qword [rbp + 0x1c0]
mov qword [rbp - 0x50], rax
xor eax, eax
mov dword [rsp + 0x50], eax
mov qword [rsp + 0x30], rax
mov qword [rsp + 0x40], rax
mov qword [rsp + 0x48], reloc.WS2_32.dll_ntohs
lea edx, [rax + 0x20]
lea rcx, [rsp + 0x30]
call fcn.140129fc0
mov rcx, rax
mov qword [rsp + 0x30], rax
mov qword [rsp + 0x40], reloc.WS2_32.dll_select
mov qword [rsp + 0x48], 0x1f
movups xmm0, xmmword [str.Sec_WebSocket_Key1]
movups xmmword [rax], xmm0
movzx eax, word [0x1403c8dd0]
mov word [rcx + 0x10], ax
mov byte [rcx + 0x12], 0
lea r14, [rbx + 0x20]
mov qword [rsp + 0x50], r14
lea r8, [rsp + 0x30]
lea rdx, [rsp + 0x58]
mov rcx, r14
call fcn.14013d200
lea r13, [0x1404bb0a8]
mov rsi, qword [rsp + 0x68]
cmp byte [rsi + 0x19], 0
jne 0x14019a0a1
add rsi, 0x20
lea rax, [rsi + 0x10]
cmp qword [rsi + 0x18], 0x10
jb 0x14019a00f
mov r12, qword [rsi]
mov rsi, r12
add r12, qword [rax]
jmp 0x14019a015
mov r12, qword [rax]
add r12, rsi
lea rcx, [rsp + 0x30]
mov r15, qword [rsp + 0x40]
cmp qword [rsp + 0x48], 0x10
jb 0x14019a031
mov r14, qword [rsp + 0x30]
add r15, r14
jmp 0x14019a039
add r15, rcx
lea r14, [rsp + 0x30]
cmp r14, r15
je 0x14019a082
nop
cmp rsi, r12
je 0x14019a087
movzx edi, byte [rsi]
movzx ecx, byte [r14]
call fcn.140395678
mov ebx, eax
mov ecx, edi
call fcn.140395678
cmp ebx, eax
jl 0x14019a09c
movzx edi, byte [r14]
movzx ecx, byte [rsi]
call fcn.140395678
mov ebx, eax
mov ecx, edi
call fcn.140395678
cmp ebx, eax
jl 0x14019a087
inc r14
inc rsi
cmp r14, r15
jne 0x14019a040
cmp rsi, r12
jne 0x14019a09c
mov rax, qword [rsp + 0x68]
mov r14, qword [rsp + 0x50]
cmp rax, qword [r14]
je 0x14019a0a1
lea rdx, [rax + 0x40]
jmp 0x14019a0a4
mov r14, qword [rsp + 0x50]
mov rdx, r13
lea r8, [rbp + 0x130]
mov rcx, qword [rbp - 0x58]
call fcn.140175ff0
nop
mov rdx, qword [rsp + 0x48]
cmp rdx, 0x10
jb 0x14019a0f2
inc rdx
mov rcx, qword [rsp + 0x30]
mov rax, rcx
cmp rdx, 0x1000
jb 0x14019a0ed
add rdx, 0x27
mov rcx, qword [rcx - 8]
sub rax, rcx
add rax, 0xfffffffffffffff8
cmp rax, 0x1f
ja 0x14019aae0
call fcn.140382774
xor eax, eax
mov qword [rsp + 0x30], rax
mov qword [rsp + 0x40], rax
mov qword [rsp + 0x48], reloc.WS2_32.dll_ntohs
lea edx, [rax + 0x20]
lea rcx, [rsp + 0x30]
call fcn.140129fc0
mov rcx, rax
mov qword [rsp + 0x30], rax
mov qword [rsp + 0x40], reloc.WS2_32.dll_select
mov qword [rsp + 0x48], 0x1f
movups xmm0, xmmword [str.Sec_WebSocket_Key2]
movups xmmword [rax], xmm0
movzx eax, word [0x1403c8de8]
mov word [rcx + 0x10], ax
mov byte [rcx + 0x12], 0
lea r8, [rsp + 0x30]
lea rdx, [rsp + 0x58]
mov rcx, r14
call fcn.14013d200
mov rsi, qword [rsp + 0x68]
cmp byte [rsi + 0x19], 0
jne 0x14019a212
add rsi, 0x20
lea rax, [rsi + 0x10]
cmp qword [rsi + 0x18], 0x10
jb 0x14019a182
mov r12, qword [rsi]
mov rsi, r12
add r12, qword [rax]
jmp 0x14019a188
mov r12, qword [rax]
add r12, rsi
lea rcx, [rsp + 0x30]
mov r15, qword [rsp + 0x40]
cmp qword [rsp + 0x48], 0x10
jb 0x14019a1a4
mov r14, qword [rsp + 0x30]
add r15, r14
jmp 0x14019a1ac
add r15, rcx
lea r14, [rsp + 0x30]
cmp r14, r15
je 0x14019a1f3
cmp rsi, r12
je 0x14019a1f8
movzx edi, byte [rsi]
movzx ecx, byte [r14]
call fcn.140395678
mov ebx, eax
mov ecx, edi
call fcn.140395678
cmp ebx, eax
jl 0x14019a20d
movzx edi, byte [r14]
movzx ecx, byte [rsi]
call fcn.140395678
mov ebx, eax
mov ecx, edi
call fcn.140395678
cmp ebx, eax
jl 0x14019a1f8
inc r14
inc rsi
cmp r14, r15
jne 0x14019a1b1
cmp rsi, r12
jne 0x14019a20d
mov rax, qword [rsp + 0x68]
mov r14, qword [rsp + 0x50]
cmp rax, qword [r14]
je 0x14019a212
lea rdx, [rax + 0x40]
jmp 0x14019a215
mov r14, qword [rsp + 0x50]
mov rdx, r13
lea r8, [rbp + 0x134]
mov rcx, qword [rbp - 0x58]
call fcn.140175ff0
nop
mov rdx, qword [rsp + 0x48]
cmp rdx, 0x10
jb 0x14019a263
inc rdx
mov rcx, qword [rsp + 0x30]
mov rax, rcx
cmp rdx, 0x1000
jb 0x14019a25e
add rdx, 0x27
mov rcx, qword [rcx - 8]
sub rax, rcx
add rax, 0xfffffffffffffff8
cmp rax, 0x1f
ja 0x14019aae6
call fcn.140382774
xor eax, eax
mov qword [rsp + 0x30], rax
mov qword [rsp + 0x40], rax
mov qword [rsp + 0x48], reloc.WS2_32.dll_ntohs
lea edx, [rax + 0x20]
lea rcx, [rsp + 0x30]
call fcn.140129fc0
mov rcx, rax
mov qword [rsp + 0x30], rax
mov qword [rsp + 0x40], reloc.WS2_32.dll_select
mov qword [rsp + 0x48], 0x1f
movups xmm0, xmmword [str.Sec_WebSocket_Key3]
movups xmmword [rax], xmm0
movzx eax, word [0x1403c8db8]
mov word [rcx + 0x10], ax
mov byte [rcx + 0x12], 0
lea r8, [rsp + 0x30]
lea rdx, [rsp + 0x58]
mov rcx, r14
call fcn.14013d200
mov rdx, qword [rsp + 0x68]
cmp byte [rdx + 0x19], 0
jne 0x14019a385
lea rsi, [rdx + 0x20]
lea rax, [rsi + 0x10]
cmp qword [rsi + 0x18], 0x10
jb 0x14019a2f3
mov r12, qword [rsi]
mov rsi, r12
add r12, qword [rax]
jmp 0x14019a2f9
mov r12, qword [rax]
add r12, rsi
lea rcx, [rsp + 0x30]
mov r15, qword [rsp + 0x40]
cmp qword [rsp + 0x48], 0x10
jb 0x14019a315
mov r14, qword [rsp + 0x30]
add r15, r14
jmp 0x14019a31d
add r15, rcx
lea r14, [rsp + 0x30]
cmp r14, r15
je 0x14019a369
cmp rsi, r12
je 0x14019a37e
movzx edi, byte [rsi]
movzx ecx, byte [r14]
call fcn.140395678
mov ebx, eax
mov ecx, edi
call fcn.140395678
cmp ebx, eax
jl 0x14019a385
movzx edi, byte [r14]
movzx ecx, byte [rsi]
call fcn.140395678
mov ebx, eax
mov ecx, edi
call fcn.140395678
cmp ebx, eax
jl 0x14019a37e
inc r14
inc rsi
cmp r14, r15
jne 0x14019a322
mov rdx, qword [rsp + 0x68]
cmp rsi, r12
jne 0x14019a385
mov r15, qword [rbp - 0x60]
cmp rdx, qword [r15 + 0x20]
je 0x14019a389
lea r13, [rdx + 0x40]
jmp 0x14019a389
mov rdx, qword [rsp + 0x68]
jmp 0x14019a36e
mov r15, qword [rbp - 0x60]
mov rdx, qword [rsp + 0x48]
cmp rdx, 0x10
jb 0x14019a3c6
inc rdx
mov rcx, qword [rsp + 0x30]
mov rax, rcx
cmp rdx, 0x1000
jb 0x14019a3c1
add rdx, 0x27
mov rcx, qword [rcx - 8]
sub rax, rcx
add rax, 0xfffffffffffffff8
cmp rax, 0x1f
ja 0x14019aaec
call fcn.140382774
xor r12d, r12d
mov qword [rsp + 0x40], r12
mov qword [rsp + 0x48], reloc.WS2_32.dll_ntohs
mov byte [rsp + 0x30], r12b
mov rax, qword [r13 + 0x10]
lea r8d, [r12 + 8]
cmp qword [r13 + 0x18], 0x10
jb 0x14019a3fd
cmp rax, r8
cmovb r8, rax
add r8, qword [r13]
mov r13, qword [r13]
jmp 0x14019a407
cmp rax, r8
cmovb r8, rax
add r8, r13
sub r8, r13
mov rdx, r13
lea rcx, [rbp + 0x138]
call fcn.140384a00
mov edx, 0x20
lea rcx, [rbp - 0x80]
call fcn.140129fc0
mov qword [rbp - 0x80], rax
mov qword [rbp - 0x70], reloc.WS2_32.dll_recv
mov qword [rbp - 0x68], 0x1f
movups xmm0, xmmword [rbp + 0x130]
movups xmmword [rax], xmm0
mov byte [rax + 0x10], r12b
mov qword [rbp - 0x30], r12
mov dword [rbp - 0x28], 0x67452301
mov dword [rbp - 0x24], 0xefcdab89
mov dword [rbp - 0x20], 0x98badcfe
mov dword [rbp - 0x1c], 0x10325476
mov r8d, reloc.WS2_32.dll_recv
mov rdx, rax
lea rcx, [rbp - 0x30]
call fcn.140192a80
lea rdx, [rbp + 0x130]
lea rcx, [rbp - 0x30]
call fcn.140192b90
mov qword [rsp + 0x30], r12
mov qword [rsp + 0x40], r12
mov qword [rsp + 0x48], reloc.WS2_32.dll_ntohs
mov byte [rsp + 0x30], 0
mov dword [rsp + 0x50], 1
mov byte [rsp + 0x20], 0
mov r9d, reloc.WS2_32.dll_recv
movzx r8d, byte [rsp + 0x78]
mov edx, r9d
lea rcx, [rsp + 0x30]
call fcn.14012b150
lea rax, [rsp + 0x30]
cmp qword [rsp + 0x48], 0x10
cmovae rax, qword [rsp + 0x30]
movups xmm0, xmmword [rbp + 0x130]
movups xmmword [rax], xmm0
mov qword [rsp + 0x58], r12
xorps xmm1, xmm1
movdqu xmmword [rsp + 0x68], xmm1
mov r8d, reloc.WS2_32.dll_select
lea rdx, str.Sec_WebSocket_Key3
lea rcx, [rsp + 0x58]
call fcn.14012aa00
nop
lea r8, [rsp + 0x30]
lea rdx, [rsp + 0x58]
mov r14, qword [rbp - 0x50]
mov rcx, r14
call fcn.14016eaf0
nop
mov rdx, qword [rsp + 0x70]
cmp rdx, 0x10
jb 0x14019a55e
inc rdx
mov rcx, qword [rsp + 0x58]
mov rax, rcx
cmp rdx, 0x1000
jb 0x14019a559
add rdx, 0x27
mov rcx, qword [rcx - 8]
sub rax, rcx
add rax, 0xfffffffffffffff8
cmp rax, 0x1f
ja 0x14019aaf2
call fcn.140382774
movdqa xmm0, xmmword [0x1403c0a10]
movdqu xmmword [rsp + 0x68], xmm0
mov byte [rsp + 0x58], 0
mov rdx, qword [rsp + 0x48]
cmp rdx, 0x10
jb 0x14019a5ae
inc rdx
mov rcx, qword [rsp + 0x30]
mov rax, rcx
cmp rdx, 0x1000
jb 0x14019a5a9
add rdx, 0x27
mov rcx, qword [rcx - 8]
sub rax, rcx
add rax, 0xfffffffffffffff8
cmp rax, 0x1f
ja 0x14019aaf8
call fcn.140382774
mov qword [rsp + 0x40], r12
mov qword [rsp + 0x48], reloc.WS2_32.dll_ntohs
mov byte [rsp + 0x30], 0
mov rdx, qword [rbp - 0x68]
cmp rdx, 0x10
jb 0x14019a5fc
inc rdx
mov rcx, qword [rbp - 0x80]
mov rax, rcx
cmp rdx, 0x1000
jb 0x14019a5f7
add rdx, 0x27
mov rcx, qword [rcx - 8]
sub rax, rcx
add rax, 0xfffffffffffffff8
cmp rax, 0x1f
ja 0x14019aada
call fcn.140382774
mov qword [rsp + 0x58], r12
xorps xmm0, xmm0
movdqu xmmword [rsp + 0x68], xmm0
mov r8d, 9
lea rdx, str.WebSocket
lea rcx, [rsp + 0x58]
call fcn.14012aa00
nop
mov qword [rsp + 0x30], r12
xorps xmm0, xmm0
movdqu xmmword [rsp + 0x40], xmm0
mov r8d, 7
lea rdx, str.Upgrade
lea rcx, [rsp + 0x30]
call fcn.14012aa00
nop
lea r8, [rsp + 0x58]
lea rdx, [rsp + 0x30]
mov rcx, r14
call fcn.14016eaf0
nop
mov r8, qword [rsp + 0x48]
cmp r8, 0x10
jb 0x14019a678
inc r8
mov rdx, qword [rsp + 0x30]
lea rcx, [rsp + 0x30]
call fcn.140136570
movdqa xmm0, xmmword [0x1403c0a10]
movdqu xmmword [rsp + 0x40], xmm0
mov byte [rsp + 0x30], 0
mov r8, qword [rsp + 0x70]
cmp r8, 0x10
jb 0x14019a6a8
inc r8
mov rdx, qword [rsp + 0x58]
lea rcx, [rsp + 0x58]
call fcn.140136570
mov qword [rsp + 0x58], r12
xorps xmm0, xmm0
movdqu xmmword [rsp + 0x68], xmm0
mov r8d, 7
lea rdx, str.Upgrade
lea rcx, [rsp + 0x58]
call fcn.14012aa00
nop
mov qword [rsp + 0x30], r12
xorps xmm0, xmm0
movdqu xmmword [rsp + 0x40], xmm0
mov r8d, 0xa
lea rdx, str.Connection
lea rcx, [rsp + 0x30]
call fcn.14012aa00
nop
lea r8, [rsp + 0x58]
lea rdx, [rsp + 0x30]
mov rcx, r14
call fcn.14016eaf0
nop
mov r8, qword [rsp + 0x48]
cmp r8, 0x10
jb 0x14019a724
inc r8
mov rdx, qword [rsp + 0x30]
lea rcx, [rsp + 0x30]
call fcn.140136570
movdqa xmm0, xmmword [0x1403c0a10]
movdqu xmmword [rsp + 0x40], xmm0
mov byte [rsp + 0x30], 0
mov r8, qword [rsp + 0x70]
cmp r8, 0x10
jb 0x14019a754
inc r8
mov rdx, qword [rsp + 0x58]
lea rcx, [rsp + 0x58]
call fcn.140136570
mov qword [rsp + 0x30], r12
xorps xmm0, xmm0
movdqu xmmword [rsp + 0x40], xmm0
mov r8d, socket
lea rdx, str.Sec_WebSocket_Origin
lea rcx, [rsp + 0x30]
call fcn.14012aa00
lea r8, [rsp + 0x30]
lea rdx, [rsp + 0x58]
lea rcx, [r14 + 0x20]
call fcn.14013d200
lea rsi, [0x1404bb0b8]
mov rbx, qword [rsp + 0x68]
cmp byte [rbx + 0x19], 0
jne 0x14019a7c0
lea r8, [rbx + 0x20]
lea rdx, [rsp + 0x30]
lea rcx, [r14 + 0x20]
call fcn.140164650
test al, al
jne 0x14019a7c0
cmp rbx, qword [r14 + 0x20]
je 0x14019a7c0
add rbx, 0x50
jmp 0x14019a7c3
mov rbx, rsi
mov rbx, qword [rbx]
mov r8, qword [rsp + 0x48]
cmp r8, 0x10
jb 0x14019a7e3
inc r8
mov rdx, qword [rsp + 0x30]
lea rcx, [rsp + 0x30]
call fcn.140136570
test rbx, rbx
jne 0x14019a867
mov qword [rsp + 0x30], r12
xorps xmm0, xmm0
movdqu xmmword [rsp + 0x40], xmm0
lea r8d, [rbx + 6]
lea rdx, str.Origin
lea rcx, [rsp + 0x30]
call fcn.14012aa00
nop
lea rdx, [rsp + 0x30]
mov rcx, r15
call fcn.140181820
mov rbx, rax
mov qword [rbp - 0x80], r12
xorps xmm0, xmm0
movdqu xmmword [rbp - 0x70], xmm0
mov r8d, socket
lea rdx, str.Sec_WebSocket_Origin
lea rcx, [rbp - 0x80]
call fcn.14012aa00
nop
mov r8, rbx
lea rdx, [rbp - 0x80]
mov rcx, r14
call fcn.14016eaf0
nop
lea rcx, [rbp - 0x80]
call fcn.140129eb0
nop
lea rcx, [rsp + 0x30]
call fcn.140129eb0
mov qword [rsp + 0x30], r12
xorps xmm0, xmm0
movdqu xmmword [rsp + 0x40], xmm0
mov r8d, reloc.WS2_32.dll_shutdown
lea rdx, str.Sec_WebSocket_Location
lea rcx, [rsp + 0x30]
call fcn.14012aa00
lea r8, [rsp + 0x30]
lea rdx, [rsp + 0x58]
lea rcx, [r14 + 0x20]
call fcn.14013d200
mov rbx, qword [rsp + 0x68]
cmp byte [rbx + 0x19], 0
jne 0x14019a8ca
lea r8, [rbx + 0x20]
lea rdx, [rsp + 0x30]
lea rcx, [r14 + 0x20]
call fcn.140164650
test al, al
jne 0x14019a8ca
cmp rbx, qword [r14 + 0x20]
je 0x14019a8ca
lea rsi, [rbx + 0x50]
mov rbx, qword [rsi]
mov r8, qword [rsp + 0x48]
cmp r8, 0x10
jb 0x14019a8ea
inc r8
mov rdx, qword [rsp + 0x30]
lea rcx, [rsp + 0x30]
call fcn.140136570
test rbx, rbx
jne 0x14019aa42
xorps xmm0, xmm0
movups xmmword [rbp + 0x130], xmm0
mov rcx, qword [rbp - 0x58]
mov rax, qword [rcx]
mov r8, r15
lea rdx, [rbp + 0x130]
call qword [rax + 0x60]
nop
mov rbx, qword [rbp + 0x130]
xor edx, edx
mov r8d, 0xf8
lea rcx, [rbp + 0x30]
call fcn.1403850b0
mov edx, 1
lea rcx, [rbp + 0x30]
call fcn.140154c90
nop
mov rdx, rbx
cmp qword [rbx + 0x18], 0x10
jb 0x14019a946
mov rdx, qword [rbx]
mov r8, qword [rbx + 0x10]
lea rcx, [rbp + 0x40]
call fcn.14013d7d0
lea rsi, [rbx + 0x20]
lea rdx, [0x1403c5864]
mov rcx, rax
call fcn.1401399d0
mov r8, qword [rsi + 0x10]
cmp qword [rsi + 0x18], 0x10
jb 0x14019a974
mov rsi, qword [rsi]
mov rdx, rsi
mov rcx, rax
call fcn.14013d7d0
mov eax, 0x50
mov ecx, 0x1bb
cmp byte [rbx + 0x62], 0
cmovne ax, cx
cmp word [rbx + 0x60], ax
je 0x14019a9b3
lea rdx, [0x1403c5860]
lea rcx, [rbp + 0x40]
call fcn.1401399d0
movzx edx, word [rbx + 0x60]
mov rcx, rax
call fcn.14015f7a0
lea rdx, [rbx + 0x40]
mov r8, qword [rdx + 0x10]
cmp qword [rdx + 0x18], 0x10
jb 0x14019a9c5
mov rdx, qword [rdx]
lea rcx, [rbp + 0x40]
call fcn.14013d7d0
lea rdx, [rsp + 0x30]
lea rcx, [rbp + 0x48]
call fcn.1401a71e0
nop
lea rcx, [rbp + 0x30]
call fcn.1401647e0
nop
mov qword [rbp - 0x80], r12
xorps xmm0, xmm0
movdqu xmmword [rbp - 0x70], xmm0
mov r8d, reloc.WS2_32.dll_shutdown
lea rdx, str.Sec_WebSocket_Location
lea rcx, [rbp - 0x80]
call fcn.14012aa00
nop
lea r8, [rsp + 0x30]
lea rdx, [rbp - 0x80]
mov rcx, r14
call fcn.14016eaf0
nop
lea rcx, [rbp - 0x80]
call fcn.140129eb0
nop
lea rcx, [rsp + 0x30]
call fcn.140129eb0
nop
mov rcx, qword [rbp + 0x138]
test rcx, rcx
je 0x14019aa42
call fcn.140169620
mov rbx, qword [rbp - 0x48]
cmp qword [rbx + 0x10], 0
je 0x14019aaa5
mov qword [rbp - 0x80], r12
xorps xmm0, xmm0
movdqu xmmword [rbp - 0x70], xmm0
mov r8d, reloc.WS2_32.dll_shutdown
lea rdx, str.Sec_WebSocket_Protocol
lea rcx, [rbp - 0x80]
call fcn.14012aa00
nop
lea rdx, [rbp - 0x80]
lea rcx, [r14 + 0x20]
call fcn.140160310
cmp rax, rbx
je 0x14019aa9c
mov r8, qword [rbx + 0x10]
cmp qword [rbx + 0x18], 0x10
jb 0x14019aa90
mov rbx, qword [rbx]
mov rdx, rbx
mov rcx, rax
call fcn.140136390
nop
lea rcx, [rbp - 0x80]
call fcn.140129eb0
mov rax, qword [rbp - 0x40]
mov dword [rax], r12d
lea rcx, [0x1404bb338]
mov qword [rax + 8], rcx
mov rcx, qword [rbp + 0x140]
xor rcx, rsp
call fcn.140382da0
add rsp, 0x258
pop r15
pop r14
pop r13
pop r12
pop rdi
pop rsi
pop rbx
pop rbp
ret
call fcn.140389824
int3
call fcn.140389824
int3
call fcn.140389824
int3
call fcn.140389824
nop
call fcn.140389824
nop
call fcn.140389824
int3