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

Disassembly:
mov ecx, dword fs:[0x14]
mov ecx, dword [ecx]
lea eax, [esp - 0x40]
cmp eax, dword [ecx + 8]
jbe 0x515c0e
sub esp, 0xc0
mov eax, dword [esp + 0xc8]
mov ecx, dword [eax + 8]
mov edx, dword [eax + 4]
mov ebx, dword [eax]
cmp edx, 5
jb 0x515c07
add ecx, 0xfffffffb
mov dword [esp + 0x6c], ecx
mov ebp, ecx
neg ecx
sar ecx, 0x1f
and ecx, 5
add ecx, ebx
mov dword [esp + 0x9c], ecx
mov ebx, dword [esp + 0xc4]
mov esi, dword [ebx + 0x20]
mov edi, dword [ebx + 0x1c]
test edi, edi
jne 0x515b68
xor esi, esi
mov dword [esp + 0x50], esi
add edx, 0xfffffffb
mov edi, dword [ebx + 0x18]
mov eax, dword [ebx + 0x14]
test eax, eax
je 0x515b4f
je 0x515bed
mov dword [esp + 0x5c], edx
mov dword [esp + 0xbc], edi
mov dword [esp + 0xb8], eax
lea ecx, [0x60c700]
mov dword [esp], ecx
mov dword [esp + 4], eax
mov dword [esp + 8], edi
call dbg.runtime.assertE2I2
movzx eax, byte [esp + 0x14]
mov ecx, dword [esp + 0x10]
mov edx, dword [esp + 0xc]
test al, al
je 0x515688
mov eax, dword [edx + 0x14]
mov edx, dword [esp + 0x9c]
mov dword [esp + 4], edx
mov ebx, dword [esp + 0x5c]
mov dword [esp + 8], ebx
mov ebp, dword [esp + 0x6c]
mov dword [esp + 0xc], ebp
mov dword [esp + 0x10], edx
mov dword [esp + 0x14], ebx
mov dword [esp + 0x18], ebp
mov dword [esp], ecx
call eax
mov eax, dword [esp + 0x5c]
mov ecx, dword [esp + 0x6c]
mov edx, dword [esp + 0x9c]
xor ebx, ebx
mov ebp, 0xffffffff
xor esi, esi
xchg ebp, eax
mov byte [esp + 0x4f], al
xchg ebp, eax
mov dword [esp + 0x78], esi
mov edi, dword [esp + 0xc4]
mov ebp, dword [edi + 0x1c]
test ebp, ebp
je 0x51561d
mov ebp, dword [esp + 0x50]
cmp eax, ebp
jl 0x515666
mov dword [esp + 0x5c], eax
mov dword [esp + 0x94], edx
sub eax, ebp
sub eax, ebx
mov ebx, eax
shr eax, 0x1f
mov esi, dword [esp + 0xc8]
mov edx, dword [esi + 4]
mov edi, dword [esi]
dec eax
and eax, ebx
cmp edx, 3
jbe 0x515bb5
mov edx, eax
sar eax, 8
mov byte [edi + 3], al
mov eax, dword [esi + 4]
mov ebx, dword [esi]
cmp eax, 4
jbe 0x515bae
mov byte [ebx + 4], dl
lea eax, [ebp + edx]
cmp edx, eax
ja 0x515ba7
cmp eax, ecx
ja 0x515ba7
mov dword [esp + 0x64], ecx
mov ebx, dword [esp + 0xc4]
lea edi, [ebx + 0x24]
test byte [edi], al
sub ecx, edx
mov dword [esp + 0x54], ecx
neg ecx
sar ecx, 0x1f
and ecx, edx
mov ebp, dword [esp + 0x94]
add ecx, ebp
mov dword [esp + 0x90], ecx
mov ecx, dword [esi + 8]
mov esi, dword [esi]
cmp ecx, 5
jb 0x515ba0
mov ebp, dword [esp + 0x64]
cmp edx, ebp
ja 0x515ba0
mov ebp, dword [esp + 0x5c]
cmp eax, ebp
ja 0x515ba0
mov dword [esp + 0x84], edx
mov dword [esp + 0x80], eax
mov ebp, dword [ebx + 0x20]
mov dword [esp + 0xbc], ebp
mov ebp, dword [ebx + 0x1c]
mov ebp, dword [ebp + 0x14]
mov dword [esp + 0x7c], ebp
mov ebp, dword [ebx + 0x58]
mov eax, dword [ebx + 0x54]
mov ebx, dword [ebx + 0x50]
mov dword [esp + 4], ebx
mov dword [esp + 8], eax
mov dword [esp + 0xc], ebp
mov dword [esp + 0x10], edi
mov dword [esp + 0x14], 8
mov dword [esp + 0x18], 8
mov dword [esp + 0x1c], esi
mov dword [esp + 0x20], 5
mov dword [esp + 0x24], ecx
mov eax, dword [esp + 0x94]
mov dword [esp + 0x28], eax
mov dword [esp + 0x2c], edx
mov ecx, dword [esp + 0x64]
mov dword [esp + 0x30], ecx
mov ebx, dword [esp + 0x80]
sub ecx, ebx
mov ebp, ecx
neg ecx
sar ecx, 0x1f
and ecx, ebx
add eax, ecx
mov dword [esp + 0x34], eax
mov eax, dword [esp + 0x5c]
sub eax, ebx
mov dword [esp + 0x38], eax
mov dword [esp + 0x3c], ebp
mov eax, dword [esp + 0xbc]
mov dword [esp], eax
mov eax, dword [esp + 0x7c]
call eax
mov eax, dword [esp + 0x48]
mov dword [esp + 0x74], eax
mov ecx, dword [esp + 0x44]
mov dword [esp + 0x70], ecx
mov edx, dword [esp + 0x40]
mov dword [esp + 0xa0], edx
mov dword [esp], edx
mov dword [esp + 4], ecx
mov dword [esp + 8], eax
mov ebx, dword [esp + 0x90]
mov dword [esp + 0xc], ebx
mov ebx, dword [esp + 0x50]
mov dword [esp + 0x10], ebx
mov ebx, dword [esp + 0x54]
mov dword [esp + 0x14], ebx
call dbg.crypto/subtle.ConstantTimeCompare
mov eax, dword [esp + 0xc4]
lea ecx, [eax + 0x50]
mov edx, dword [esp + 0x18]
cmp edx, 1
je 0x5155cf
mov byte [esp + 0xcc], 0
mov dword [esp + 0xd0], 0
mov byte [esp + 0xd4], 0x14
add esp, 0xc0
ret
movzx edx, byte [esp + 0x4f]
cmp dl, 0xff
jne 0x5155ad
mov edx, dword [esp + 0x70]
mov dword [eax + 0x54], edx
mov edx, dword [esp + 0x74]
mov dword [eax + 0x58], edx
mov edx, dword [0x79b700]
test edx, edx
jne 0x515651
mov ecx, dword [esp + 0xa0]
mov dword [eax + 0x50], ecx
mov eax, dword [esp + 0xc8]
mov dword [esp], eax
mov eax, dword [esp + 0x84]
mov ecx, dword [esp + 0x78]
lea eax, [ecx + eax + 5]
mov dword [esp + 4], eax
call dbg.crypto/tls.(*block).resize
mov eax, dword [esp + 0xc4]
mov dword [esp], eax
call dbg.crypto/tls.(*halfConn).incSeq
mov byte [esp + 0xcc], 1
mov eax, dword [esp + 0x78]
add eax, 5
mov dword [esp + 0xd0], eax
mov byte [esp + 0xd4], 0
add esp, 0xc0
ret
mov dword [esp], ecx
mov eax, dword [esp + 0xa0]
mov dword [esp + 4], eax
call dbg.runtime.writebarrierptr
jmp 0x5155fb
mov byte [esp + 0xcc], 0
mov dword [esp + 0xd0], 0
mov byte [esp + 0xd4], 0x14
add esp, 0xc0
ret
lea eax, [0x620780]
mov dword [esp], eax
mov eax, dword [esp + 0xb8]
mov dword [esp + 4], eax
mov ecx, dword [esp + 0xbc]
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 0x51590a
mov dword [esp + 0xac], ecx
mov dword [esp + 0xa4], edx
mov eax, dword [edx + 0x24]
mov dword [esp], ecx
call eax
mov eax, dword [esp + 4]
mov ecx, dword [esp + 0x5c]
cmp ecx, eax
jl 0x5158e8
mov edx, dword [esp + 0x6c]
cmp eax, edx
ja 0x515be6
cmp eax, ecx
ja 0x515bdf
mov dword [esp + 0x68], eax
sub ecx, eax
mov dword [esp + 0x5c], ecx
sub edx, eax
mov dword [esp + 0x64], edx
neg edx
sar edx, 0x1f
and edx, eax
mov esi, dword [esp + 0x9c]
add edx, esi
mov dword [esp + 0x94], edx
test eax, eax
jne 0x5158da
mov ebx, dword [esp + 0xc4]
lea esi, [ebx + 0x24]
test byte [esi], al
mov edi, 8
mov dword [esp + 0x88], eax
mov eax, 8
mov dword [esp + 0x6c], eax
mov dword [esp + 0x84], edi
mov dword [esp + 0x9c], esi
lea eax, [ebx + 0x30]
mov dword [esp + 0xb4], eax
test byte [eax], al
lea ecx, [ebx + 0x24]
test byte [ecx], al
mov dword [esp], eax
mov dword [esp + 4], ecx
mov dword [esp + 8], 8
call dbg.runtime.memmove
mov eax, dword [esp + 0xc8]
mov ecx, dword [eax]
mov edx, dword [eax + 8]
cmp edx, 3
jb 0x515bd8
mov eax, dword [esp + 0xc4]
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 + 0xa4]
mov ecx, dword [eax + 0x1c]
mov edx, dword [esp + 0xac]
mov dword [esp], edx
call ecx
mov eax, dword [esp + 4]
mov ecx, dword [esp + 0x5c]
mov edx, ecx
sub ecx, eax
mov eax, ecx
sar ecx, 8
mov ebx, dword [esp + 0xc4]
mov byte [ebx + 0x3b], cl
mov byte [ebx + 0x3c], al
mov eax, dword [esp + 0xa4]
mov eax, dword [eax + 0x18]
mov ecx, dword [esp + 0x94]
mov dword [esp + 4], ecx
mov dword [esp + 8], 0
mov ebp, dword [esp + 0x64]
mov dword [esp + 0xc], ebp
mov esi, dword [esp + 0x9c]
mov dword [esp + 0x10], esi
mov esi, dword [esp + 0x84]
mov dword [esp + 0x14], esi
mov esi, dword [esp + 0x6c]
mov dword [esp + 0x18], esi
mov dword [esp + 0x1c], ecx
mov dword [esp + 0x20], edx
mov dword [esp + 0x24], ebp
mov ecx, dword [esp + 0xb4]
mov dword [esp + 0x28], ecx
mov dword [esp + 0x2c], 0xd
mov dword [esp + 0x30], 0xd
mov ecx, dword [esp + 0xac]
mov dword [esp], ecx
call eax
mov eax, dword [esp + 0x40]
mov ecx, dword [esp + 0x3c]
mov edx, dword [esp + 0x38]
mov ebx, dword [esp + 0x34]
test eax, eax
jne 0x5158b8
mov dword [esp + 0x64], ecx
mov dword [esp + 0x5c], edx
mov dword [esp + 0x94], ebx
mov eax, dword [esp + 0xc8]
mov dword [esp], eax
mov ecx, dword [esp + 0x68]
lea ebx, [edx + ecx + 5]
mov dword [esp + 4], ebx
call dbg.crypto/tls.(*block).resize
mov eax, dword [esp + 0x5c]
mov ecx, dword [esp + 0x64]
mov edx, dword [esp + 0x94]
xor ebx, ebx
mov ebp, 0xffffffff
mov esi, dword [esp + 0x68]
jmp 0x5153d8
mov byte [esp + 0xcc], 0
mov dword [esp + 0xd0], 0
mov byte [esp + 0xd4], 0x14
add esp, 0xc0
ret
mov ebx, dword [esp + 0xc4]
mov edi, eax
jmp 0x51574b
mov byte [esp + 0xcc], 0
mov dword [esp + 0xd0], 0
mov byte [esp + 0xd4], 0x14
add esp, 0xc0
ret
lea eax, [0x614bc0]
mov dword [esp], eax
mov eax, dword [esp + 0xb8]
mov dword [esp + 4], eax
mov eax, dword [esp + 0xbc]
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 0x515bed
mov dword [esp + 0xb0], ecx
mov dword [esp + 0xa8], edx
mov eax, dword [edx + 0x14]
mov dword [esp], ecx
call eax
mov eax, dword [esp + 4]
mov ecx, dword [esp + 0xc4]
movzx edx, word [ecx + 0x10]
cmp dx, 0x302
jb 0x515b46
mov edx, eax
test edx, edx
je 0x515bd1
mov ebx, eax
mov eax, dword [esp + 0x5c]
mov ebp, edx
cmp ebp, 0xffffffff
je 0x51598f
cdq
idiv ebp
jmp 0x515991
xor edx, edx
test edx, edx
je 0x5159b7
mov byte [esp + 0xcc], 0
mov dword [esp + 0xd0], 0
mov byte [esp + 0xd4], 0x14
add esp, 0xc0
ret
mov edx, dword [esp + 0x50]
lea esi, [ebx + edx]
lea eax, [ebx + edx + 1]
cmp ebp, 0xffffffff
je 0x5159cc
cdq
idiv ebp
jmp 0x5159ce
xor edx, edx
mov eax, ebp
sub eax, edx
cmp ebp, 0xffffffff
je 0x5159dc
cdq
idiv ebp
jmp 0x5159de
xor edx, edx
lea edx, [edx + esi + 1]
mov ebp, dword [esp + 0x5c]
cmp ebp, edx
jl 0x515995
mov dword [esp + 0x84], ebx
test ebx, ebx
jle 0x515b34
mov eax, dword [esp + 0x6c]
cmp ebx, eax
ja 0x515bca
mov ecx, dword [esp + 0xa8]
mov edx, dword [ecx + 0x1c]
mov ebp, dword [esp + 0x9c]
mov dword [esp + 4], ebp
mov dword [esp + 8], ebx
mov dword [esp + 0xc], eax
mov esi, dword [esp + 0xb0]
mov dword [esp], esi
call edx
mov eax, dword [esp + 0x84]
mov ecx, dword [esp + 0x5c]
cmp eax, ecx
ja 0x515bc3
sub ecx, eax
mov edx, dword [esp + 0x6c]
sub edx, eax
mov ebx, edx
neg edx
sar edx, 0x1f
and edx, eax
mov ebp, dword [esp + 0x9c]
add edx, ebp
mov dword [esp + 0x58], ecx
mov dword [esp + 0x60], ebx
mov dword [esp + 0x98], edx
mov eax, dword [esp + 0xa8]
mov eax, dword [eax + 0x18]
mov dword [esp + 4], edx
mov dword [esp + 8], ecx
mov dword [esp + 0xc], ebx
mov dword [esp + 0x10], edx
mov dword [esp + 0x14], ecx
mov dword [esp + 0x18], ebx
mov ebp, dword [esp + 0xb0]
mov dword [esp], ebp
call eax
mov eax, dword [esp + 0xc4]
movzx ecx, word [eax + 0x10]
cmp cx, 0x300
jne 0x515aff
mov ecx, dword [esp + 0x58]
cmp ecx, 1
jge 0x515ad4
xor edx, edx
xor ebx, ebx
mov eax, ecx
mov ecx, dword [esp + 0x60]
mov ebp, ebx
mov esi, dword [esp + 0x84]
mov ebx, edx
mov edx, dword [esp + 0x98]
jmp 0x5153d8
lea edx, [ecx - 1]
cmp edx, ecx
jae 0x515bbc
mov edx, dword [esp + 0x98]
movzx ebx, byte [ecx + edx - 1]
inc ebx
cmp ebx, ecx
jle 0x515af6
xor edx, edx
xor ebx, ebx
jmp 0x515ab7
mov edx, ebx
mov ebx, 0xffffffff
jmp 0x515ab7
mov eax, dword [esp + 0x98]
mov dword [esp], eax
mov ecx, dword [esp + 0x58]
mov dword [esp + 4], ecx
mov edx, dword [esp + 0x60]
mov dword [esp + 8], edx
call dbg.crypto/tls.extractPadding
mov edx, dword [esp + 0xc]
movzx ebx, byte [esp + 0x10]
mov eax, dword [esp + 0xc4]
mov ecx, dword [esp + 0x58]
jmp 0x515ab7
mov ecx, ebp
mov ebx, dword [esp + 0x6c]
mov edx, dword [esp + 0x9c]
jmp 0x515a5b
mov edx, eax
xor eax, eax
jmp 0x515975
mov ecx, ebp
mov eax, edx
mov edx, dword [esp + 0x9c]
xor ebx, ebx
mov ebp, 0xffffffff
xor esi, esi
jmp 0x5153d8
mov dword [esp + 0x84], edx
mov eax, dword [edi + 0x18]
mov dword [esp], esi
call eax
mov esi, dword [esp + 4]
mov eax, dword [esp + 0xc8]
mov ecx, dword [esp + 0x9c]
mov edx, dword [esp + 0x84]
mov ebx, dword [esp + 0xc4]
mov ebp, dword [esp + 0x6c]
jmp 0x515339
call dbg.runtime.panicslice
ud2
call dbg.runtime.panicslice
ud2
call dbg.runtime.panicindex
ud2
call dbg.runtime.panicindex
ud2
call dbg.runtime.panicindex
ud2
call dbg.runtime.panicslice
ud2
call dbg.runtime.panicslice
ud2
call dbg.runtime.panicdivide
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, [0x67aed8]
mov dword [esp + 4], eax
call dbg.runtime.gopanic
ud2
call dbg.runtime.panicslice
ud2
call dbg.runtime.morestack_noctxt
jmp dbg.crypto/tls.(*halfConn).decrypt