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

Disassembly:
mov ecx, dword fs:[0x14]
mov ecx, dword [ecx]
lea eax, [esp - 0x54]
cmp eax, dword [ecx + 8]
jbe 0x516582
sub esp, 0xd4
mov eax, dword [esp + 0xd8]
mov ecx, dword [eax + 0x1c]
mov edx, dword [eax + 0x20]
test ecx, ecx
je 0x516506
lea ebx, [eax + 0x24]
test byte [ebx], al
mov ebp, dword [esp + 0xdc]
mov esi, dword [ebp + 4]
mov edi, dword [ebp]
mov ebp, dword [ebp + 8]
cmp ebp, 5
jb 0x51657b
mov dword [esp + 0xd0], edx
mov edx, dword [esp + 0xe0]
add edx, 5
cmp edx, esi
ja 0x51657b
mov dword [esp + 0x80], esi
mov ecx, dword [ecx + 0x14]
mov dword [esp + 0x7c], ecx
mov ecx, dword [eax + 0x64]
mov esi, dword [eax + 0x60]
mov eax, dword [eax + 0x5c]
mov dword [esp + 4], eax
mov dword [esp + 8], esi
mov dword [esp + 0xc], ecx
mov dword [esp + 0x10], ebx
mov dword [esp + 0x14], 8
mov dword [esp + 0x18], 8
mov dword [esp + 0x1c], edi
mov dword [esp + 0x20], 5
mov dword [esp + 0x24], ebp
sub ebp, edx
mov eax, ebp
xchg ebp, ebx
neg ebx
xchg ebp, ebx
sar ebp, 0x1f
and ebp, edx
lea ecx, [edi + ebp]
mov dword [esp + 0x28], ecx
mov ecx, dword [esp + 0x80]
sub ecx, edx
mov dword [esp + 0x2c], ecx
mov dword [esp + 0x30], eax
mov dword [esp + 0x34], 0
mov dword [esp + 0x38], 0
mov dword [esp + 0x3c], 0
mov eax, dword [esp + 0xd0]
mov dword [esp], eax
mov eax, dword [esp + 0x7c]
call eax
mov eax, dword [esp + 0x48]
mov dword [esp + 0x68], eax
mov ecx, dword [esp + 0x44]
mov dword [esp + 0x64], ecx
mov edx, dword [esp + 0x40]
mov dword [esp + 0xac], edx
mov ebx, dword [esp + 0xdc]
mov ebp, dword [ebx + 4]
mov dword [esp + 0x80], ebp
mov dword [esp], ebx
lea esi, [ecx + ebp]
mov dword [esp + 4], esi
call dbg.crypto/tls.(*block).resize
mov eax, dword [esp + 0xd8]
lea ecx, [eax + 0x5c]
mov edx, dword [esp + 0xdc]
mov ebx, dword [edx + 8]
mov ebp, dword [edx + 4]
mov esi, dword [edx]
mov edi, dword [esp + 0x80]
cmp edi, ebp
ja 0x516574
mov dword [esp + 0xcc], ecx
sub ebp, edi
sub ebx, edi
neg ebx
sar ebx, 0x1f
and ebx, edi
add ebx, esi
mov esi, dword [esp + 0x64]
cmp ebp, esi
jle 0x5164ff
mov dword [esp], ebx
mov eax, dword [esp + 0xac]
mov dword [esp + 4], eax
mov dword [esp + 8], esi
call dbg.runtime.memmove
mov eax, dword [esp + 0x64]
mov ecx, dword [esp + 0xd8]
mov dword [ecx + 0x60], eax
mov eax, dword [esp + 0x68]
mov dword [ecx + 0x64], eax
mov eax, dword [0x79b700]
test eax, eax
jne 0x5164d9
mov eax, dword [esp + 0xac]
mov dword [ecx + 0x5c], eax
mov eax, dword [esp + 0xdc]
mov edx, dword [eax]
mov ebx, dword [eax + 4]
mov ebp, dword [eax + 8]
cmp ebx, 5
jb 0x51656d
add ebp, 0xfffffffb
mov esi, ebp
xchg ebp, ebx
neg ebx
xchg ebp, ebx
sar ebp, 0x1f
and ebp, 5
add edx, ebp
mov ebp, dword [ecx + 0x14]
mov edi, dword [ecx + 0x18]
test ebp, ebp
je 0x515ff8
je 0x516553
mov dword [esp + 0x80], esi
mov dword [esp + 0xa0], edx
mov dword [esp + 0xd0], ebp
mov dword [esp + 0x78], ebx
mov dword [esp + 0xc8], edi
lea eax, [0x60c700]
mov dword [esp], eax
mov dword [esp + 4], ebp
mov dword [esp + 8], edi
call dbg.runtime.assertE2I2
mov eax, dword [esp + 0x78]
add eax, 0xfffffffb
movzx ecx, byte [esp + 0x14]
mov edx, dword [esp + 0x10]
mov ebx, dword [esp + 0xc]
test cl, cl
je 0x51604f
mov ecx, dword [ebx + 0x14]
mov ebx, dword [esp + 0xa0]
mov dword [esp + 4], ebx
mov dword [esp + 8], eax
mov ebp, dword [esp + 0x80]
mov dword [esp + 0xc], ebp
mov dword [esp + 0x10], ebx
mov dword [esp + 0x14], eax
mov dword [esp + 0x18], ebp
mov dword [esp], edx
call ecx
mov eax, dword [esp + 0xdc]
mov ecx, dword [eax + 4]
mov edx, dword [eax]
cmp ecx, 3
jbe 0x516514
add ecx, 0xfffffffb
mov ebx, ecx
sar ecx, 8
mov byte [edx + 3], cl
mov ecx, dword [eax]
mov eax, dword [eax + 4]
cmp eax, 4
jbe 0x51650d
mov byte [ecx + 4], bl
mov eax, dword [esp + 0xd8]
mov dword [esp], eax
call dbg.crypto/tls.(*halfConn).incSeq
mov byte [esp + 0xe4], 1
mov byte [esp + 0xe5], 0
add esp, 0xd4
ret
mov dword [esp + 0x54], eax
lea eax, [0x620780]
mov dword [esp], eax
mov eax, dword [esp + 0xd0]
mov dword [esp + 4], eax
mov ecx, dword [esp + 0xc8]
mov dword [esp + 8], ecx
call dbg.runtime.assertE2I2
movzx eax, byte [esp + 0x14]
mov ecx, dword [esp + 0x10]
mov edx, dword [esp + 0xc]
test al, al
je 0x5162a0
mov dword [esp + 0xbc], ecx
mov dword [esp + 0xb8], edx
mov eax, dword [esp + 0xdc]
mov ebx, dword [eax + 4]
mov dword [esp + 0x80], ebx
mov ebp, dword [edx + 0x1c]
mov dword [esp], ecx
call ebp
mov eax, dword [esp + 4]
mov ecx, dword [esp + 0xdc]
mov dword [esp], ecx
mov edx, dword [esp + 0x80]
add eax, edx
mov dword [esp + 4], eax
call dbg.crypto/tls.(*block).resize
mov eax, dword [esp + 0x80]
add eax, 0xfffffffb
mov ecx, dword [esp + 0xe0]
sub eax, ecx
mov edx, dword [esp + 0xdc]
mov ebx, dword [edx + 8]
mov ebp, dword [edx + 4]
mov esi, dword [edx]
lea edi, [ecx + 5]
cmp edi, 5
jb 0x51654c
cmp edi, ebx
ja 0x51654c
lea edx, [ebx - 5]
mov dword [esp + 0x60], edx
neg edx
sar edx, 0x1f
and edx, 5
add edx, esi
test ecx, ecx
jne 0x51627b
mov ecx, dword [esp + 0xd8]
lea edx, [ecx + 0x24]
test byte [edx], al
mov dword [esp + 0x94], eax
mov eax, 8
mov dword [esp + 0x5c], eax
mov dword [esp + 0x8c], ecx
mov ecx, 8
mov dword [esp + 0x60], ecx
mov eax, dword [esp + 0x94]
mov ecx, dword [esp + 0x8c]
cmp edi, ebp
ja 0x516545
sub ebx, edi
mov ebp, ebx
neg ebx
sar ebx, 0x1f
and ebx, edi
add ebx, esi
cmp eax, ebp
ja 0x51653e
mov dword [esp + 0x58], eax
mov dword [esp + 0x80], ebp
mov dword [esp + 0xa4], ebx
mov dword [esp + 0xa8], edx
lea eax, [ecx + 0x30]
mov dword [esp + 0xc4], eax
test byte [eax], al
lea edx, [ecx + 0x24]
test byte [edx], al
mov dword [esp], eax
mov dword [esp + 4], edx
mov dword [esp + 8], 8
call dbg.runtime.memmove
mov eax, dword [esp + 0xdc]
mov ecx, dword [eax]
mov edx, dword [eax + 8]
cmp edx, 3
jb 0x516537
mov eax, dword [esp + 0xd8]
lea edx, [eax + 0x38]
mov dword [esp], edx
mov dword [esp + 4], ecx
mov dword [esp + 8], 3
call dbg.runtime.memmove
mov eax, dword [esp + 0x58]
mov ecx, eax
sar eax, 8
mov edx, dword [esp + 0xd8]
mov byte [edx + 0x3b], al
mov byte [edx + 0x3c], cl
mov eax, dword [esp + 0xb8]
mov eax, dword [eax + 0x20]
mov ebx, dword [esp + 0xa4]
mov dword [esp + 4], ebx
mov dword [esp + 8], 0
mov ebp, dword [esp + 0x80]
mov dword [esp + 0xc], ebp
mov esi, dword [esp + 0xa8]
mov dword [esp + 0x10], esi
mov esi, dword [esp + 0x5c]
mov dword [esp + 0x14], esi
mov esi, dword [esp + 0x60]
mov dword [esp + 0x18], esi
mov dword [esp + 0x1c], ebx
mov dword [esp + 0x20], ecx
mov dword [esp + 0x24], ebp
mov ecx, dword [esp + 0xc4]
mov dword [esp + 0x28], ecx
mov dword [esp + 0x2c], 0xd
mov dword [esp + 0x30], 0xd
mov ecx, dword [esp + 0xbc]
mov dword [esp], ecx
call eax
jmp 0x515ff8
mov ecx, dword [esp + 0xd8]
mov dword [esp + 0x84], eax
mov eax, dword [esp + 0xe0]
mov dword [esp + 0x5c], eax
mov eax, dword [esp + 0x84]
jmp 0x51615c
lea eax, [0x614bc0]
mov dword [esp], eax
mov eax, dword [esp + 0xd0]
mov dword [esp + 4], eax
mov eax, dword [esp + 0xc8]
mov dword [esp + 8], eax
call dbg.runtime.assertE2I2
movzx eax, byte [esp + 0x14]
mov ecx, dword [esp + 0x10]
mov edx, dword [esp + 0xc]
test al, al
je 0x516553
mov dword [esp + 0xc0], ecx
mov dword [esp + 0xb4], edx
mov eax, dword [edx + 0x14]
mov dword [esp], ecx
call eax
mov eax, dword [esp + 4]
mov dword [esp + 0x74], eax
mov ecx, dword [esp + 0xe0]
test ecx, ecx
jle 0x5164c2
mov edx, dword [esp + 0x80]
cmp ecx, edx
ja 0x516530
mov eax, dword [esp + 0xb4]
mov ebx, dword [eax + 0x1c]
mov ebp, dword [esp + 0xa0]
mov dword [esp + 4], ebp
mov dword [esp + 8], ecx
mov dword [esp + 0xc], edx
mov esi, dword [esp + 0xc0]
mov dword [esp], esi
call ebx
mov eax, dword [esp + 0xe0]
mov ecx, dword [esp + 0x54]
cmp eax, ecx
ja 0x516529
sub ecx, eax
mov edx, dword [esp + 0x80]
sub edx, eax
mov ebx, edx
neg edx
sar edx, 0x1f
and edx, eax
mov ebp, dword [esp + 0xa0]
add edx, ebp
mov dword [esp], edx
mov dword [esp + 4], ecx
mov dword [esp + 8], ebx
mov eax, dword [esp + 0x74]
mov dword [esp + 0xc], eax
call dbg.crypto/tls.padToBlockSize
mov eax, dword [esp + 0x24]
mov dword [esp + 0x70], eax
mov ecx, dword [esp + 0x18]
mov dword [esp + 0x50], ecx
mov edx, dword [esp + 0x20]
mov dword [esp + 0x6c], edx
mov ebx, dword [esp + 0x1c]
mov dword [esp + 0xb0], ebx
mov ebp, dword [esp + 0x14]
mov dword [esp + 0x4c], ebp
mov esi, dword [esp + 0x10]
mov dword [esp + 0x9c], esi
mov edi, dword [esp + 0xdc]
mov dword [esp], edi
mov eax, dword [esp + 0xe0]
lea ebx, [ebp + eax]
lea ebx, [ebx + edx + 5]
mov dword [esp + 4], ebx
call dbg.crypto/tls.(*block).resize
mov eax, dword [esp + 0xdc]
mov ecx, dword [eax + 4]
mov edx, dword [eax]
mov ebx, dword [eax + 8]
mov ebp, dword [esp + 0xe0]
lea esi, [ebp + 5]
cmp esi, ecx
ja 0x516522
mov eax, dword [esp + 0xb4]
mov ebp, dword [eax + 0x18]
sub ebx, esi
mov edi, ebx
neg ebx
sar ebx, 0x1f
and ebx, esi
add edx, ebx
mov dword [esp + 4], edx
sub ecx, esi
mov dword [esp + 8], ecx
mov dword [esp + 0xc], edi
mov ecx, dword [esp + 0x9c]
mov dword [esp + 0x10], ecx
mov ecx, dword [esp + 0x4c]
mov dword [esp + 0x14], ecx
mov edx, dword [esp + 0x50]
mov dword [esp + 0x18], edx
mov edx, dword [esp + 0xc0]
mov dword [esp], edx
call ebp
mov eax, dword [esp + 0xdc]
mov ecx, dword [eax]
mov edx, dword [eax + 4]
mov ebx, dword [eax + 8]
mov ebp, dword [esp + 0xe0]
mov esi, dword [esp + 0x4c]
lea ebp, [esi + ebp + 5]
cmp ebp, edx
ja 0x51651b
mov eax, dword [esp + 0xb4]
mov eax, dword [eax + 0x18]
sub ebx, ebp
mov esi, ebx
neg ebx
sar ebx, 0x1f
and ebx, ebp
add ecx, ebx
mov dword [esp + 4], ecx
sub edx, ebp
mov dword [esp + 8], edx
mov dword [esp + 0xc], esi
mov ecx, dword [esp + 0xb0]
mov dword [esp + 0x10], ecx
mov ecx, dword [esp + 0x6c]
mov dword [esp + 0x14], ecx
mov ecx, dword [esp + 0x70]
mov dword [esp + 0x18], ecx
mov ecx, dword [esp + 0xc0]
mov dword [esp], ecx
call eax
jmp 0x515ff8
mov edx, dword [esp + 0xa0]
mov ebx, dword [esp + 0x80]
mov ecx, dword [esp + 0x54]
jmp 0x51636e
mov eax, dword [esp + 0xcc]
mov dword [esp], eax
mov eax, dword [esp + 0xac]
mov dword [esp + 4], eax
call dbg.runtime.writebarrierptr
mov ecx, dword [esp + 0xd8]
jmp 0x515f39
mov esi, ebp
jmp 0x515ef5
mov ecx, eax
jmp 0x515f39
call dbg.runtime.panicindex
ud2
call dbg.runtime.panicindex
ud2
call dbg.runtime.panicslice
ud2
call dbg.runtime.panicslice
ud2
call dbg.runtime.panicslice
ud2
call dbg.runtime.panicslice
ud2
call dbg.runtime.panicslice
ud2
call dbg.runtime.panicslice
ud2
call dbg.runtime.panicslice
ud2
call dbg.runtime.panicslice
ud2
lea eax, [0x604c20]
mov dword [esp], eax
lea eax, [0x67aee0]
mov dword [esp + 4], eax
call dbg.runtime.gopanic
ud2
call dbg.runtime.panicslice
ud2
call dbg.runtime.panicslice
ud2
call dbg.runtime.panicslice
ud2
call dbg.runtime.morestack_noctxt
jmp dbg.crypto/tls.(*halfConn).encrypt