Function at 0x518de0
Capabilities:
Resolve function by parsing pe exports

Disassembly:
mov ecx, dword fs:[0x14]
mov ecx, dword [ecx]
cmp esp, dword [ecx + 8]
jbe 0x5194c4
sub esp, 0x68
mov eax, dword [esp + 0x6c]
lea ecx, [eax + 0x178]
test byte [ecx], al
mov ecx, dword [eax + 0x184]
mov edx, dword [eax + 0x17c]
mov ebx, edx
sub edx, ecx
mov ebp, dword [eax + 0x180]
mov esi, dword [eax + 0x178]
cmp edx, 4
jge 0x518e87
mov ecx, dword [eax + 0xac]
mov edx, dword [eax + 0xa8]
test edx, edx
jne 0x518e6b
mov dword [esp], eax
mov byte [esp + 4], 0x16
call dbg.crypto/tls.(*Conn).readRecord
mov eax, dword [esp + 0xc]
mov ecx, dword [esp + 8]
test ecx, ecx
je 0x518df9
mov dword [esp + 0x70], 0
mov dword [esp + 0x74], 0
mov dword [esp + 0x78], ecx
mov dword [esp + 0x7c], eax
add esp, 0x68
ret
mov dword [esp + 0x70], 0
mov dword [esp + 0x74], 0
mov dword [esp + 0x78], edx
mov dword [esp + 0x7c], ecx
add esp, 0x68
ret
cmp ecx, ebx
ja 0x5194bd
sub ebp, ecx
xchg ebp, ebx
neg ebx
xchg ebp, ebx
sar ebp, 0x1f
and ecx, ebp
cmp edx, 1
jbe 0x5194b6
movzx ebx, byte [esi + ecx + 1]
cmp edx, 2
jbe 0x5194b6
shl ebx, 0x10
movzx ebp, byte [esi + ecx + 2]
shl ebp, 8
or ebp, ebx
cmp edx, 3
jbe 0x5194b6
movzx ecx, byte [esi + ecx + 3]
or ecx, ebp
mov dword [esp + 0x20], ecx
cmp ecx, 0x10000
jg 0x51939a
jmp 0x518eea
mov eax, dword [esp + 0x6c]
mov ecx, dword [esp + 0x20]
lea edx, [ecx + 4]
mov ebx, dword [eax + 0x184]
mov ebp, dword [eax + 0x17c]
sub ebp, ebx
cmp ebp, edx
jge 0x518f60
mov edx, dword [eax + 0xa8]
mov ebx, dword [eax + 0xac]
test edx, edx
jne 0x518f44
mov dword [esp], eax
mov byte [esp + 4], 0x16
call dbg.crypto/tls.(*Conn).readRecord
mov eax, dword [esp + 8]
mov ecx, dword [esp + 0xc]
test eax, eax
je 0x518ee2
mov dword [esp + 0x70], 0
mov dword [esp + 0x74], 0
mov dword [esp + 0x78], eax
mov dword [esp + 0x7c], ecx
add esp, 0x68
ret
mov dword [esp + 0x70], 0
mov dword [esp + 0x74], 0
mov dword [esp + 0x78], edx
mov dword [esp + 0x7c], ebx
add esp, 0x68
ret
mov dword [eax + 0x188], 0
mov ecx, dword [eax + 0x184]
mov ebx, dword [eax + 0x17c]
sub ebx, ecx
mov ebp, dword [eax + 0x178]
mov esi, dword [eax + 0x180]
cmp edx, ebx
jle 0x519393
lea edx, [ebx + ecx]
cmp ecx, edx
ja 0x5194af
cmp edx, esi
ja 0x5194af
mov dword [eax + 0x184], edx
sub esi, ecx
xchg esi, ebx
neg ebx
xchg esi, ebx
sar esi, 0x1f
and ecx, esi
lea edx, [ebp + ecx]
test ebx, ebx
jle 0x518fc4
mov dword [eax + 0x188], 0xffffffff
jbe 0x5194a8
mov dword [esp + 0x24], ebx
mov dword [esp + 0x50], edx
movzx ecx, byte [ebp + ecx]
cmp cl, 0xc
ja 0x51926e
cmp cl, 2
ja 0x519189
test cl, cl
je 0x51916c
cmp cl, 1
jne 0x51914f
lea eax, [0x639040]
mov dword [esp], eax
call dbg.runtime.newobject
mov eax, dword [esp + 4]
lea ecx, [0x759330]
mov dword [esp + 0x4c], eax
mov dword [esp + 0x48], ecx
lea edx, [0x604e20]
mov dword [esp], edx
mov dword [esp + 4], 0
mov dword [esp + 8], 0
mov dword [esp + 0xc], 0
mov edx, dword [esp + 0x24]
mov dword [esp + 0x10], edx
call dbg.runtime.growslice
mov eax, dword [esp + 0x14]
mov ecx, dword [esp + 0x1c]
mov edx, dword [esp + 0x24]
cmp edx, ecx
ja 0x5194a1
mov dword [esp + 0x54], eax
mov dword [esp + 0x28], ecx
mov dword [esp], eax
mov ecx, dword [esp + 0x50]
mov dword [esp + 4], ecx
mov dword [esp + 8], edx
call dbg.runtime.memmove
mov eax, dword [esp + 0x48]
mov ecx, dword [eax + 0x18]
mov edx, dword [esp + 0x54]
mov dword [esp + 4], edx
mov edx, dword [esp + 0x24]
mov dword [esp + 8], edx
mov edx, dword [esp + 0x28]
mov dword [esp + 0xc], edx
mov edx, dword [esp + 0x4c]
mov dword [esp], edx
call ecx
movzx eax, byte [esp + 0x10]
test al, al
je 0x5190d4
mov eax, dword [esp + 0x48]
test eax, eax
je 0x5190b4
mov eax, dword [eax + 4]
mov dword [esp + 0x70], eax
mov eax, dword [esp + 0x4c]
mov dword [esp + 0x74], eax
mov dword [esp + 0x78], 0
mov dword [esp + 0x7c], 0
add esp, 0x68
ret
mov eax, dword [esp + 0x6c]
mov dword [esp], eax
mov byte [esp + 4], 0xa
call dbg.crypto/tls.(*Conn).sendAlert
mov eax, dword [esp + 0x6c]
lea ecx, [eax + 0xa0]
test byte [ecx], al
mov ecx, dword [esp + 8]
mov edx, dword [esp + 0xc]
mov dword [eax + 0xa8], ecx
mov ebx, dword [0x79b700]
lea ebp, [eax + 0xac]
test ebx, ebx
jne 0x519131
mov dword [eax + 0xac], edx
mov dword [esp + 0x70], 0
mov dword [esp + 0x74], 0
mov dword [esp + 0x78], ecx
mov dword [esp + 0x7c], edx
add esp, 0x68
ret
mov dword [esp + 0x34], ecx
mov dword [esp + 0x3c], edx
mov dword [esp], ebp
mov dword [esp + 4], edx
call dbg.runtime.writebarrierptr
mov ecx, dword [esp + 0x34]
mov edx, dword [esp + 0x3c]
jmp 0x519115
lea eax, [0x6370a0]
mov dword [esp], eax
call dbg.runtime.newobject
mov eax, dword [esp + 4]
lea ecx, [0x759410]
jmp 0x519012
lea eax, [0x608340]
mov dword [esp], eax
call dbg.runtime.newobject
mov eax, dword [esp + 4]
lea ecx, [0x759390]
jmp 0x519012
cmp cl, 4
je 0x519251
cmp cl, 0xb
je 0x519234
cmp cl, 0xc
je 0x519217
mov dword [esp], eax
mov byte [esp + 4], 0xa
call dbg.crypto/tls.(*Conn).sendAlert
mov eax, dword [esp + 0x6c]
lea ecx, [eax + 0xa0]
test byte [ecx], al
mov ecx, dword [esp + 8]
mov edx, dword [esp + 0xc]
mov dword [eax + 0xa8], ecx
mov ebx, dword [0x79b700]
lea ebp, [eax + 0xac]
test ebx, ebx
jne 0x5191f9
mov dword [eax + 0xac], edx
mov dword [esp + 0x70], 0
mov dword [esp + 0x74], 0
mov dword [esp + 0x78], ecx
mov dword [esp + 0x7c], edx
add esp, 0x68
ret
mov dword [esp + 0x38], ecx
mov dword [esp + 0x44], edx
mov dword [esp], ebp
mov dword [esp + 4], edx
call dbg.runtime.writebarrierptr
mov ecx, dword [esp + 0x38]
mov edx, dword [esp + 0x44]
jmp 0x5191dd
lea eax, [0x614ec0]
mov dword [esp], eax
call dbg.runtime.newobject
mov eax, dword [esp + 4]
lea ecx, [0x759430]
jmp 0x519012
lea eax, [0x614c20]
mov dword [esp], eax
call dbg.runtime.newobject
mov eax, dword [esp + 4]
lea ecx, [0x7592b0]
jmp 0x519012
lea eax, [0x614e00]
mov dword [esp], eax
call dbg.runtime.newobject
mov eax, dword [esp + 4]
lea ecx, [0x7593b0]
jmp 0x519012
cmp cl, 0xf
ja 0x5192fe
cmp cl, 0xd
je 0x5192ce
cmp cl, 0xe
jne 0x51929e
lea eax, [0x608380]
mov dword [esp], eax
call dbg.runtime.newobject
mov eax, dword [esp + 4]
lea ecx, [0x7593f0]
jmp 0x519012
lea eax, [0x622080]
mov dword [esp], eax
call dbg.runtime.newobject
mov eax, dword [esp + 4]
mov ecx, dword [esp + 0x6c]
movzx edx, word [ecx + 0x20]
cmp dx, 0x303
setae dl
mov byte [eax + 0xc], dl
lea ecx, [0x759310]
jmp 0x519012
lea eax, [0x626140]
mov dword [esp], eax
call dbg.runtime.newobject
mov eax, dword [esp + 4]
mov ecx, dword [esp + 0x6c]
movzx edx, word [ecx + 0x20]
cmp dx, 0x303
setae dl
mov byte [eax + 0xc], dl
lea ecx, [0x7592d0]
jmp 0x519012
cmp cl, 0x14
ja 0x51934b
cmp cl, 0x10
je 0x51932e
cmp cl, 0x14
jne 0x5191a0
lea eax, [0x614d40]
mov dword [esp], eax
call dbg.runtime.newobject
mov eax, dword [esp + 4]
lea ecx, [0x759370]
jmp 0x519012
lea eax, [0x614c80]
mov dword [esp], eax
call dbg.runtime.newobject
mov eax, dword [esp + 4]
lea ecx, [0x759350]
jmp 0x519012
cmp cl, 0x16
je 0x519376
cmp cl, 0x43
jne 0x5191a0
lea eax, [0x614e60]
mov dword [esp], eax
call dbg.runtime.newobject
mov eax, dword [esp + 4]
lea ecx, [0x7593d0]
jmp 0x519012
lea eax, [0x61d660]
mov dword [esp], eax
call dbg.runtime.newobject
mov eax, dword [esp + 4]
lea ecx, [0x7592f0]
jmp 0x519012
mov ebx, edx
jmp 0x518f8c
mov dword [esp], eax
mov byte [esp + 4], 0x50
call dbg.crypto/tls.(*Conn).sendAlertLocked
mov eax, dword [esp + 0x20]
mov dword [esp + 0x2c], eax
mov dword [esp + 0x58], 0
mov dword [esp + 0x5c], 0
mov dword [esp + 0x60], 0
mov dword [esp + 0x64], 0
lea eax, [0x6043e0]
mov dword [esp], eax
lea ecx, [esp + 0x2c]
mov dword [esp + 4], ecx
call dbg.runtime.convT2E32
mov eax, dword [esp + 0xc]
mov ecx, dword [esp + 8]
mov dword [esp + 0x58], ecx
mov dword [esp + 0x5c], eax
lea eax, [0x6043e0]
mov dword [esp + 0x60], eax
lea eax, [0x67aa54]
mov dword [esp + 0x64], eax
lea eax, [0x6562f9]
mov dword [esp], eax
mov dword [esp + 4], 0x45
lea eax, [esp + 0x58]
mov dword [esp + 8], eax
mov dword [esp + 0xc], 2
mov dword [esp + 0x10], 2
call dbg.fmt.Errorf
mov eax, dword [esp + 0x14]
mov ecx, dword [esp + 0x18]
mov edx, dword [esp + 0x6c]
lea ebx, [edx + 0xa0]
test byte [ebx], al
mov dword [edx + 0xa8], eax
mov ebx, dword [0x79b700]
lea ebp, [edx + 0xac]
test ebx, ebx
jne 0x519483
mov dword [edx + 0xac], ecx
mov dword [esp + 0x70], 0
mov dword [esp + 0x74], 0
mov dword [esp + 0x78], eax
mov dword [esp + 0x7c], ecx
add esp, 0x68
ret
mov dword [esp + 0x30], eax
mov dword [esp + 0x40], ecx
mov dword [esp], ebp
mov dword [esp + 4], ecx
call dbg.runtime.writebarrierptr
mov eax, dword [esp + 0x30]
mov ecx, dword [esp + 0x40]
jmp 0x519467
call dbg.runtime.panicslice
ud2
call dbg.runtime.panicindex
ud2
call dbg.runtime.panicslice
ud2
call dbg.runtime.panicindex
ud2
call dbg.runtime.panicslice
ud2
call dbg.runtime.morestack_noctxt
jmp dbg.crypto/tls.(*Conn).readHandshake