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

Disassembly:
mov ecx, dword [0x8993fc]
mov ecx, dword fs:[ecx]
mov ecx, dword [ecx]
lea eax, [esp - 0x124]
cmp eax, dword [ecx + 8]
jbe 0x60cc80
sub esp, 0x1a4
mov eax, dword [esp + 0x1a8]
mov ecx, dword [eax]
mov edx, dword [ecx + 0x2c]
movzx edx, byte [edx + 0x61]
test dl, dl
jne 0x60c0d8
mov edx, dword [eax + 0xc]
mov ebx, dword [edx + 0xd8]
mov ebp, dword [edx + 0xdc]
xor esi, esi
jmp 0x60c0f6
mov dword [esp + 0x1ac], 0
mov dword [esp + 0x1b0], 0
add esp, 0x1a4
ret
inc esi
cmp esi, ebp
jge 0x60c199
lea edi, [ebx + esi]
cmp byte [edi], 1
jne 0x60c0f5
mov ebx, dword [edx + 0xe8]
cmp dword [edx + 0xf4], ebx
jne 0x60c150
test ebx, ebx
je 0x60c133
mov dword [esp + 0xf0], ecx
mov dword [esp + 0xa0], ebx
mov edx, dword [edx + 0xe4]
xor ebp, ebp
jmp 0x60c1df
mov dword [esp + 0x1ac], 0
mov dword [esp + 0x1b0], 0
add esp, 0x1a4
ret
mov dword [esp], ecx
mov byte [esp + 4], 0x2f
call sym.crypto_tls._Conn_.sendAlert
lea eax, [0x669360]
mov dword [esp], eax
call sym.runtime.newobject
mov eax, dword [esp + 4]
mov dword [eax + 4], 0x23
lea ecx, [0x69de6b]
mov dword [eax], ecx
lea ecx, [0x6f6df8]
mov dword [esp + 0x1ac], ecx
mov dword [esp + 0x1b0], eax
add esp, 0x1a4
ret
mov dword [esp + 0x1ac], 0
mov dword [esp + 0x1b0], 0
add esp, 0x1a4
ret
mov esi, dword [esp + 0x188]
lea edx, [esi + 0x10]
mov esi, dword [esp + 0x80]
lea ebp, [esi + 1]
mov ebx, dword [esp + 0xa0]
mov ecx, dword [esp + 0xf0]
mov eax, dword [esp + 0x1a8]
cmp ebp, ebx
jge 0x60c428
cmp ebp, 5
jge 0x60c428
mov dword [esp + 0x80], ebp
mov dword [esp + 0x188], edx
mov esi, dword [ecx + 0x2c]
mov edi, dword [esi + 0x8c]
mov eax, dword [edx]
mov ebx, dword [edx + 4]
mov ebp, dword [edx + 8]
test edi, edi
jne 0x60c27e
mov edx, dword [ecx + 0x94]
mov edi, dword [ecx + 0x98]
mov ecx, dword [ecx + 0x90]
mov dword [esp], esi
mov dword [esp + 4], eax
mov dword [esp + 8], ebx
mov dword [esp + 0xc], ebp
mov dword [esp + 0x10], ecx
mov dword [esp + 0x14], edx
mov dword [esp + 0x18], edi
call sym.crypto_tls._Config_.decryptTicket
mov eax, dword [esp + 0x1c]
test eax, eax
je 0x60c1b6
mov ecx, dword [esp + 0x20]
mov edx, dword [esp + 0x24]
mov dword [esp], eax
mov dword [esp + 4], ecx
mov dword [esp + 8], edx
call sym.crypto_tls.ParseSessionState
mov eax, dword [esp + 0x10]
test eax, eax
jne 0x60c1b6
mov ecx, dword [esp + 0xc]
jmp 0x60c315
mov dword [esp + 0x9c], ebx
mov dword [esp + 0x184], eax
mov dword [esp + 0x98], ebp
mov dword [esp], ecx
call sym.crypto_tls._Conn_.connectionStateLocked
lea edi, [esp + 0x120]
lea esi, [esp + 4]
call fcn.0046f44a
mov eax, dword [esp + 0xf0]
mov ecx, dword [eax + 0x2c]
mov edx, dword [ecx + 0x8c]
mov ecx, dword [edx]
mov dword [esp + 0x94], ecx
mov ebx, dword [esp + 0x184]
mov dword [esp], ebx
mov ebx, dword [esp + 0x9c]
mov dword [esp + 4], ebx
mov ebx, dword [esp + 0x98]
mov dword [esp + 8], ebx
lea edi, [esp + 0xc]
lea esi, [esp + 0x120]
call fcn.0046f44a
mov ecx, dword [esp + 0x94]
call ecx
mov eax, dword [esp + 0x6c]
test eax, eax
jne 0x60c40f
mov ecx, dword [esp + 0x68]
test ecx, ecx
je 0x60c1b6
cmp word [ecx + 0xe], 0x304
jne 0x60c1b6
mov dword [esp + 0xd4], ecx
mov ebx, dword [ecx + 0x18]
mov ebp, dword [ecx + 0x14]
lea edi, [esp + 0xa4]
xor eax, eax
call fcn.0046f01b
mov dword [esp + 0xa8], 0
add ebp, 0x7791f700
mov dword [esp + 0xac], ebp
adc ebx, 0xe
mov dword [esp + 0xb0], ebx
mov ecx, dword [0x853694]
mov dword [esp + 0xb4], ecx
lea edi, [esp + 0xdc]
lea esi, [esp + 0xa4]
call fcn.0046f4fe
mov ecx, dword [esp + 0xf0]
mov ebx, dword [ecx + 0x2c]
mov ebx, dword [ebx + 8]
test ebx, ebx
jne 0x60c395
lea ebx, [0x6aca5c]
mov eax, dword [ebx]
mov edx, ebx
call eax
lea edi, [esp + 0x10c]
lea esi, [esp]
call fcn.0046f4fe
lea edi, [esp]
lea esi, [esp + 0x10c]
call fcn.0046f4fe
lea edi, [esp + 0x14]
lea esi, [esp + 0xdc]
call fcn.0046f4fe
call sym.time.Time.Sub
mov eax, dword [esp + 0x2c]
cmp dword [esp + 0x28], 0xf9290000
seta cl
cmp eax, 0x2260f
sete al
setg bl
and eax, ecx
or ebx, eax
test bl, bl
jne 0x60c1b6
mov eax, dword [esp + 0xd4]
movzx ecx, word [eax + 0x12]
mov ebx, dword [0x8542f0]
mov ebp, dword [0x8542f4]
xor edx, edx
jmp 0x60c446
mov ecx, dword [esp + 0x70]
mov dword [esp + 0x1ac], eax
mov dword [esp + 0x1b0], ecx
add esp, 0x1a4
ret
mov dword [esp + 0x1ac], 0
mov dword [esp + 0x1b0], 0
add esp, 0x1a4
ret
inc edx
cmp edx, ebp
jge 0x60c454
mov esi, dword [ebx + edx*4]
cmp word [esi], cx
jne 0x60c445
jmp 0x60c456
xor esi, esi
test esi, esi
je 0x60c7f1
mov ecx, dword [esi + 0xc]
mov ebx, dword [esp + 0x1a8]
mov ebp, dword [ebx + 0x18]
cmp dword [ebp + 0xc], ecx
jne 0x60c1b6
mov ecx, dword [eax + 0x30]
mov ebp, dword [esp + 0xf0]
mov esi, dword [ebp + 0x2c]
mov edi, dword [esi + 0x48]
test ecx, ecx
cmp edi, 2
jne 0x60c48f
test ecx, ecx
jmp 0x60c496
cmp edi, 4
jne 0x60c49d
test ecx, ecx
jne 0x60c4a5
jmp 0x60c1b6
test ecx, ecx
je 0x60c568
test edi, edi
je 0x60c1b6
test ecx, ecx
jne 0x60c4b8
xor edx, edx
jmp 0x60c56a
mov dword [esp + 0x9c], ecx
mov esi, dword [esi + 8]
test esi, esi
jne 0x60c4cc
lea esi, [0x6aca5c]
mov eax, dword [esi]
mov edx, esi
call eax
lea edi, [esp + 0x10c]
lea esi, [esp]
call fcn.0046f4fe
lea edi, [esp + 0xb8]
lea esi, [esp + 0x10c]
call fcn.0046f4fe
mov eax, dword [esp + 0xd4]
mov ecx, dword [eax + 0x30]
test ecx, ecx
jbe 0x60cc76
mov ecx, dword [eax + 0x2c]
mov ecx, dword [ecx]
test byte [ecx], al
lea esi, [ecx + 0x16c]
lea edi, [esp + 0xf8]
call fcn.0046f4fe
lea edi, [esp]
lea esi, [esp + 0xb8]
call fcn.0046f4fe
lea edi, [esp + 0x14]
lea esi, [esp + 0xf8]
call fcn.0046f4fe
call sym.time.Time.After
movzx eax, byte [esp + 0x28]
mov ecx, dword [esp + 0x9c]
mov ebx, dword [esp + 0x1a8]
mov ebp, dword [esp + 0xf0]
mov edx, eax
mov eax, dword [esp + 0xd4]
jmp 0x60c56a
xor edx, edx
test dl, dl
jne 0x60c1b6
test ecx, ecx
je 0x60c58a
mov ecx, dword [ebp + 0x2c]
cmp dword [ecx + 0x48], 3
jl 0x60c58a
mov ecx, dword [eax + 0x60]
test ecx, ecx
je 0x60c1b6
mov ecx, dword [ebx + 0x18]
mov edx, dword [eax + 0x1c]
mov ebp, dword [eax + 0x20]
mov esi, dword [eax + 0x24]
mov dword [esp], ecx
mov dword [esp + 4], edx
mov dword [esp + 8], ebp
mov dword [esp + 0xc], esi
mov dword [esp + 0x10], 0
mov dword [esp + 0x14], 0
mov dword [esp + 0x18], 0
call sym.crypto_tls._cipherSuiteTLS13_.extract
mov eax, dword [esp + 0x20]
mov ecx, dword [esp + 0x24]
mov edx, dword [esp + 0x1c]
mov ebx, dword [esp + 0x1a8]
mov dword [ebx + 0x28], eax
mov dword [ebx + 0x2c], ecx
mov ebp, dword [0x899508]
test ebp, ebp
je 0x60c5f2
call sym.runtime.gcWriteBarrier2
mov dword [edi], edx
mov ebp, dword [ebx + 0x24]
mov dword [edi + 4], ebp
mov dword [ebx + 0x24], edx
mov ebp, dword [ebx + 0x18]
mov dword [esp], ebp
mov dword [esp + 4], edx
mov dword [esp + 8], eax
mov dword [esp + 0xc], ecx
lea eax, [0x6939f4]
mov dword [esp + 0x10], eax
mov dword [esp + 0x14], 0xa
mov dword [esp + 0x18], 0
mov dword [esp + 0x1c], 0
call sym.crypto_tls._cipherSuiteTLS13_.deriveSecret
mov eax, dword [esp + 0x1a8]
mov ecx, dword [eax + 0x60]
mov edx, dword [eax + 0x64]
mov ebx, dword [eax + 0x18]
mov ebx, dword [ebx + 0xc]
mov ebp, dword [esp + 0x20]
mov dword [esp + 0xf4], ebp
mov esi, dword [esp + 0x24]
mov dword [esp + 0x8c], esi
mov edi, dword [esp + 0x28]
mov dword [esp + 0x90], edi
mov dword [esp], ecx
mov dword [esp + 4], edx
mov dword [esp + 8], ebx
call sym.crypto_tls.cloneHash
mov eax, dword [esp + 0xc]
mov ecx, dword [esp + 0x10]
test eax, eax
je 0x60c7a1
mov dword [esp + 0x7c], eax
mov dword [esp + 0xd0], ecx
mov eax, dword [esp + 0x1a8]
mov ecx, dword [eax + 0xc]
mov dword [esp], ecx
call sym.crypto_tls._clientHelloMsg_.marshalWithoutBinders
mov eax, dword [esp + 0x10]
test eax, eax
jne 0x60c758
mov eax, dword [esp + 0x7c]
mov ecx, dword [eax + 0x20]
mov edx, dword [esp + 0xd0]
mov dword [esp], edx
call ecx
mov eax, dword [esp + 0x1a8]
mov ecx, dword [eax + 0x18]
mov dword [esp], ecx
mov ecx, dword [esp + 0xf4]
mov dword [esp + 4], ecx
mov ecx, dword [esp + 0x8c]
mov dword [esp + 8], ecx
mov ecx, dword [esp + 0x90]
mov dword [esp + 0xc], ecx
mov ecx, dword [esp + 0x7c]
mov dword [esp + 0x10], ecx
mov ecx, dword [esp + 0xd0]
mov dword [esp + 0x14], ecx
call sym.crypto_tls._cipherSuiteTLS13_.finishedHash
mov eax, dword [esp + 0x1a8]
mov ecx, dword [eax + 0xc]
mov edx, dword [ecx + 0xf4]
mov ebx, dword [esp + 0x80]
cmp ebx, edx
jae 0x60cc6d
mov edx, dword [esp + 0x1c]
mov ebp, dword [ecx + 0xf0]
lea esi, [ebx + ebx*2]
mov edi, dword [ebp + esi*4 + 4]
mov ebp, dword [ebp + esi*4]
cmp edi, edx
jne 0x60c751
mov edx, dword [esp + 0x18]
xor esi, esi
xor esi, esi
xchg esi, eax
mov byte [esp + 0x77], al
xchg esi, eax
xor esi, esi
jmp 0x60cc54
xor edx, edx
jmp 0x60c7fd
mov dword [esp + 0x84], eax
mov eax, dword [esp + 0x14]
mov dword [esp + 0xd8], eax
mov ecx, dword [esp + 0xf0]
mov dword [esp], ecx
mov byte [esp + 4], 0x50
call sym.crypto_tls._Conn_.sendAlert
mov eax, dword [esp + 0x84]
mov dword [esp + 0x1ac], eax
mov eax, dword [esp + 0xd8]
mov dword [esp + 0x1b0], eax
add esp, 0x1a4
ret
mov eax, dword [esp + 0xf0]
mov dword [esp], eax
mov byte [esp + 4], 0x50
call sym.crypto_tls._Conn_.sendAlert
lea eax, [0x669360]
mov dword [esp], eax
call sym.runtime.newobject
mov eax, dword [esp + 4]
mov dword [eax + 4], 0x29
lea ecx, [0x6a066c]
mov dword [eax], ecx
lea ecx, [0x6f6df8]
mov dword [esp + 0x1ac], ecx
mov dword [esp + 0x1b0], eax
add esp, 0x1a4
ret
mov ebx, dword [esp + 0x1a8]
jmp 0x60c1b6
cmp edx, 1
jne 0x60cbe0
mov edx, dword [esp + 0xf0]
mov ebp, dword [edx + 0x10]
test ebp, ebp
je 0x60c8b3
movzx ecx, byte [ecx + 0xd4]
test cl, cl
je 0x60c8a8
test ebx, ebx
jne 0x60c89d
mov ecx, dword [esp + 0xd4]
movzx ebp, byte [ecx + 0xc]
xchg ebp, eax
test al, al
xchg ebp, eax
je 0x60c899
movzx ebp, word [ecx + 0x12]
mov esi, dword [eax + 0x18]
cmp word [esi], bp
jne 0x60c895
mov ebp, dword [ecx + 0x6c]
cmp dword [edx + 0xc8], ebp
je 0x60c857
xor ebp, ebp
jmp 0x60c8bc
mov eax, dword [ecx + 0x68]
mov ebx, dword [edx + 0xc4]
mov dword [esp], eax
mov dword [esp + 4], ebx
mov dword [esp + 8], ebp
call sym.runtime.memequal
movzx eax, byte [esp + 0xc]
mov ecx, dword [esp + 0xd4]
mov edx, dword [esp + 0xf0]
mov ebx, dword [esp + 0x80]
mov ebp, eax
mov eax, dword [esp + 0x1a8]
jmp 0x60c8bc
xor ebp, ebp
jmp 0x60c8bc
xor ebp, ebp
jmp 0x60c8bc
mov ecx, dword [esp + 0xd4]
xor ebp, ebp
jmp 0x60c8bc
mov ecx, dword [esp + 0xd4]
xor ebp, ebp
jmp 0x60c8bc
mov ecx, dword [esp + 0xd4]
xor ebp, ebp
xchg ebp, eax
test al, al
xchg ebp, eax
je 0x60cae4
mov byte [eax + 0x16], 1
mov ecx, dword [eax + 0x18]
mov ecx, dword [ecx + 0xc]
mov dword [esp], ecx
call sym.crypto.Hash.New
mov eax, dword [esp + 4]
mov dword [esp + 0x78], eax
mov ecx, dword [esp + 8]
mov dword [esp + 0xcc], ecx
test eax, eax
je 0x60c90f
mov ecx, dword [eax + 4]
lea edx, [0x854830]
mov dword [esp], edx
mov dword [esp + 4], ecx
call sym.runtime.typeAssert
mov eax, dword [esp + 8]
mov ecx, dword [esp + 0xcc]
mov edx, dword [esp + 0x1a8]
mov ebx, dword [edx + 0xc]
lea ebp, [0x6f7644]
mov dword [esp], ebp
mov dword [esp + 4], ebx
mov dword [esp + 8], eax
mov dword [esp + 0xc], ecx
call sym.crypto_tls.transcriptMsg
mov eax, dword [esp + 0x10]
test eax, eax
jne 0x60cbc7
mov eax, dword [esp + 0x1a8]
mov ecx, dword [eax + 0x18]
mov edx, dword [eax + 0x24]
mov ebx, dword [eax + 0x28]
mov ebp, dword [eax + 0x2c]
mov dword [esp], ecx
mov dword [esp + 4], edx
mov dword [esp + 8], ebx
mov dword [esp + 0xc], ebp
lea ecx, [0x693e3a]
mov dword [esp + 0x10], ecx
mov dword [esp + 0x14], 0xb
mov ecx, dword [esp + 0x78]
mov dword [esp + 0x18], ecx
mov ecx, dword [esp + 0xcc]
mov dword [esp + 0x1c], ecx
call sym.crypto_tls._cipherSuiteTLS13_.deriveSecret
mov eax, dword [esp + 0x20]
mov ecx, dword [esp + 0x24]
mov dword [esp + 0x88], ecx
mov edx, dword [esp + 0x28]
mov ebx, dword [esp + 0x1a8]
mov ebp, dword [ebx + 0x18]
movzx ebp, word [ebp]
lea edi, [esp + 0x18c]
mov esi, eax
xor eax, eax
call fcn.0046f01a
mov dword [esp + 0x18c], 1
mov dword [esp + 0x190], 1
mov word [esp + 0x1a0], bp
mov dword [esp + 0x194], esi
mov eax, dword [esp + 0x88]
mov dword [esp + 0x198], eax
mov dword [esp + 0x19c], edx
mov eax, dword [esp + 0xf0]
mov ecx, dword [eax + 0x10]
mov edx, dword [ecx + 8]
mov ebp, dword [ecx + 4]
inc ebp
mov esi, dword [ecx]
cmp edx, ebp
jae 0x60ca78
mov dword [esp + 0x180], ecx
mov dword [esp], esi
mov dword [esp + 4], ebp
mov dword [esp + 8], edx
mov dword [esp + 0xc], 1
lea eax, [0x677560]
mov dword [esp + 0x10], eax
call sym.runtime.growslice
mov eax, dword [esp + 0x1c]
mov ecx, dword [esp + 0x14]
mov edx, dword [esp + 0x18]
mov ebx, dword [esp + 0x180]
mov dword [ebx + 8], eax
mov eax, dword [0x899508]
test eax, eax
je 0x60ca62
call sym.runtime.gcWriteBarrier2
mov dword [edi], ecx
mov eax, dword [ebx]
mov dword [edi + 4], eax
mov dword [ebx], ecx
mov eax, dword [esp + 0xf0]
mov ebp, edx
mov esi, ecx
mov ecx, ebx
mov ebx, dword [esp + 0x1a8]
mov dword [ecx + 4], ebp
mov ecx, dword [0x899508]
lea edx, [ebp + ebp*2]
lea edi, [esi + edx*8 - 0x18]
test ecx, ecx
je 0x60cac6
mov dword [esp + 0x17c], edi
lea eax, [0x677560]
mov dword [esp], eax
mov dword [esp + 4], edi
lea eax, [esp + 0x18c]
mov dword [esp + 8], eax
call sym.runtime.wbMove
mov eax, dword [esp + 0xf0]
mov ebx, dword [esp + 0x1a8]
mov edi, dword [esp + 0x17c]
lea esi, [esp + 0x18c]
call fcn.0046f4f4
mov ecx, dword [esp + 0xd4]
mov edx, eax
mov eax, ebx
mov ebx, dword [esp + 0x80]
mov byte [edx + 0x35], 1
mov ebp, dword [ecx + 0x30]
mov esi, dword [ecx + 0x34]
mov edi, dword [ecx + 0x2c]
mov dword [edx + 0x54], ebp
mov dword [edx + 0x58], esi
mov ebp, dword [0x899508]
test ebp, ebp
je 0x60cb12
mov ebp, edi
call sym.runtime.gcWriteBarrier2
mov dword [edi], ebp
mov esi, dword [edx + 0x50]
mov dword [edi + 4], esi
mov edi, ebp
mov dword [edx + 0x50], edi
mov ebp, dword [ecx + 0x48]
mov esi, dword [ecx + 0x4c]
mov edi, dword [ecx + 0x44]
mov dword [edx + 0x3c], ebp
mov dword [edx + 0x40], esi
mov ebp, dword [0x899508]
test ebp, ebp
je 0x60cb3f
mov ebp, edi
call sym.runtime.gcWriteBarrier2
mov dword [edi], ebp
mov esi, dword [edx + 0x38]
mov dword [edi + 4], esi
mov edi, ebp
mov dword [edx + 0x38], edi
mov ebp, dword [ecx + 0x54]
mov esi, dword [ecx + 0x58]
mov edi, dword [ecx + 0x50]
mov dword [edx + 0x48], ebp
mov dword [edx + 0x4c], esi
mov ebp, dword [0x899508]
test ebp, ebp
je 0x60cb6c
mov ebp, edi
call sym.runtime.gcWriteBarrier2
mov dword [edi], ebp
mov esi, dword [edx + 0x44]
mov dword [edi + 4], esi
mov edi, ebp
mov dword [edx + 0x44], edi
mov ebp, dword [ecx + 0x60]
mov esi, dword [ecx + 0x64]
mov ecx, dword [ecx + 0x5c]
mov dword [edx + 0x6c], ebp
mov dword [edx + 0x70], esi
mov ebp, dword [0x899508]
test ebp, ebp
je 0x60cb95
call sym.runtime.gcWriteBarrier2
mov dword [edi], ecx
mov ebp, dword [edx + 0x68]
mov dword [edi + 4], ebp
mov dword [edx + 0x68], ecx
mov ecx, dword [eax + 0x10]
mov byte [ecx + 0x68], 1
mov ecx, dword [eax + 0x10]
mov word [ecx + 0x6a], bx
mov byte [eax + 0x15], 1
mov dword [esp + 0x1ac], 0
mov dword [esp + 0x1b0], 0
add esp, 0x1a4
ret
mov ecx, dword [esp + 0x14]
mov dword [esp + 0x1ac], eax
mov dword [esp + 0x1b0], ecx
add esp, 0x1a4
ret
mov eax, dword [esp + 0xf0]
mov dword [esp], eax
mov byte [esp + 4], 0x33
call sym.crypto_tls._Conn_.sendAlert
lea eax, [0x669360]
mov dword [esp], eax
call sym.runtime.newobject
mov eax, dword [esp + 4]
mov dword [eax + 4], 0x17
lea ecx, [0x698948]
mov dword [eax], ecx
lea ecx, [0x6f6df8]
mov dword [esp + 0x1ac], ecx
mov dword [esp + 0x1b0], eax
add esp, 0x1a4
ret
movzx eax, byte [esi + ebp]
movzx ebx, byte [edx + esi]
xor eax, ebx
inc esi
movzx ebx, byte [esp + 0x77]
or ebx, eax
mov eax, dword [esp + 0x1a8]
mov byte [esp + 0x77], bl
mov ebx, dword [esp + 0x80]
cmp esi, edi
jl 0x60cc30
movzx ebp, byte [esp + 0x77]
xchg ebp, eax
movzx eax, al
xchg ebp, eax
lea edx, [ebp - 1]
shr edx, 0x1f
jmp 0x60c7fd
mov eax, ebx
mov ecx, edx
call sym.runtime.panicIndex
xor eax, eax
mov ecx, eax
call sym.runtime.panicIndex
nop
call sym.runtime.morestack_noctxt
jmp sym.crypto_tls._serverHandshakeStateTLS13_.checkForResumption