Function at 0x4cc170
Capabilities:
Check os version
Resolve function by parsing pe exports

Disassembly:
push 0xffffffffffffffff
push 0x57c6b7
mov eax, dword fs:[0]
push eax
sub esp, 0x130
mov eax, dword [0x641030]
xor eax, esp
mov dword [esp + 0x12c], eax
push ebx
push ebp
push esi
push edi
mov eax, dword [0x641030]
xor eax, esp
push eax
lea eax, [esp + 0x144]
mov dword fs:[0], eax
mov esi, dword [esp + 0x164]
movzx edx, byte [esi + 0x122]
mov eax, dword [esp + 0x158]
mov ebx, dword [esp + 0x154]
mov ebp, ecx
mov ecx, dword [esp + 0x160]
push edx
push str.readTlsRecord
mov dword [esp + 0x24], ecx
push esi
lea ecx, [esp + 0x50]
mov dword [esp + 0x24], ebx
mov dword [esp + 0x2c], eax
call fcn.00437770
xor edi, edi
lea ecx, [ebx + 0x498]
mov dword [esp + 0x14c], edi
mov dword [ebx + 0x46c], edi
mov dword [ebx + 0x470], edi
mov dword [ebx + 0x474], edi
mov byte [ebx + 0x478], 0
call fcn.00446f40
lea ecx, [ebx + 0x47c]
call fcn.00446f40
lea ecx, [ebx + 0x4b4]
call fcn.00446f40
lea ebx, [ebp + 0x78]
mov ecx, ebx
mov dword [esp + 0x58], edi
call fcn.00446f40
mov edi, dword [esp + 0x1c]
mov ecx, dword [esp + 0x15c]
lea eax, [esp + 0x58]
push eax
push esi
push edi
push ecx
mov ecx, dword [esp + 0x30]
push ebx
push 5
call fcn.00508940
mov byte [esp + 0x14], al
test al, al
je 0x4cd4f9
mov ecx, ebx
call fcn.0051d090
cmp eax, 5
jne 0x4cd4f9
mov ecx, ebx
call fcn.00446f60
mov edi, eax
mov cl, byte [edi]
test cl, cl
jns 0x4cc7de
cmp byte [edi + 2], 1
jne 0x4cc7de
mov edx, dword [esi]
mov eax, dword [edx + 0x18]
push str.Received_SSL_2.0_ClientHello.
mov ecx, esi
call eax
cmp byte [edi + 2], 1
jne 0x4cc2d9
mov edx, dword [esi]
mov eax, dword [edx + 0x14]
push str.Cannot_accept_SSL_2.0_connections.
mov ecx, esi
call eax
mov ecx, dword [esp + 0x20]
push esi
mov esi, dword [esp + 0x20]
push ecx
mov ecx, dword [esp + 0x20]
push 0x47
push esi
call fcn.004c2300
mov dword [esi + 0x28], 0x7d
jmp 0x4cd566
movzx eax, byte [edi]
movzx edx, byte [edi + 1]
and eax, 0x7f
shl eax, 8
or eax, edx
cmp byte [esi + 0x122], 0
mov dword [esp + 0x2c], eax
je 0x4cc306
push eax
push str.recLen
mov ecx, esi
call fcn.004373b0
mov eax, dword [esp + 0x2c]
test byte [edi], 0x80
mov cl, byte [edi + 3]
mov dword [esp + 0x34], 2
jne 0x4cc356
cmp byte [esi + 0x122], 0
mov dl, byte [edi + 4]
mov byte [esp + 0x50], cl
movzx ecx, byte [edi + 2]
mov byte [esp + 0x51], dl
mov dword [esp + 0x6c], ecx
lea edi, [eax - 2]
je 0x4cc399
mov edx, dword [esi]
mov eax, dword [edx + 0x18]
push str.3_byte_record_header...
mov ecx, esi
call eax
mov ecx, dword [esp + 0x6c]
push ecx
push str.paddingLen
mov ecx, esi
call fcn.004373b0
jmp 0x4cc38c
cmp byte [esi + 0x122], 0
movzx edx, byte [edi + 2]
mov byte [esp + 0x50], dl
movzx edx, byte [edi + 4]
mov byte [esp + 0x51], cl
mov byte [esp + 0x52], dl
lea edi, [eax - 3]
mov dword [esp + 0x34], 3
je 0x4cc399
mov eax, dword [esi]
mov edx, dword [eax + 0x18]
push str.2_byte_record_header...
mov ecx, esi
call edx
push edi
push str.nToRead
mov ecx, esi
call fcn.004373b0
mov ecx, ebx
call fcn.00446f40
mov eax, dword [esp + 0x34]
push eax
lea ecx, [esp + 0x54]
push ecx
mov ecx, ebx
call fcn.00448260
mov eax, dword [esp + 0x1c]
mov ecx, dword [esp + 0x15c]
lea edx, [esp + 0x58]
push edx
push esi
push eax
push ecx
mov ecx, dword [esp + 0x30]
push ebx
push edi
call fcn.00508940
mov byte [esp + 0x14], al
test al, al
je 0x4cc79b
mov ecx, ebx
call fcn.0051d090
cmp eax, dword [esp + 0x2c]
jne 0x4cc79b
mov ecx, ebx
call fcn.00446f60
mov edi, eax
mov eax, dword [esp + 0x18]
push ebx
lea ecx, [eax + 0x2e4]
mov byte [eax + 0x4d0], 1
call fcn.00449d90
cmp byte [esi + 0x122], 0
je 0x4cc431
mov ecx, ebx
call fcn.0051d090
push eax
mov ecx, ebx
call fcn.00446f60
push eax
push str.fullRecord
mov ecx, esi
call fcn.00436910
mov ebx, dword [esp + 0x18]
lea eax, [ebx + 0x46c]
mov dword [eax], 0x16
movzx edx, byte [edi + 1]
mov dword [esp + 0x38], eax
lea eax, [ebx + 0x470]
mov dword [eax], edx
movzx ecx, byte [edi + 2]
mov dword [esp + 0x3c], eax
lea eax, [ebx + 0x474]
mov dword [esp + 0x30], eax
mov dword [eax], ecx
call fcn.004c3cb0
mov dword [esp + 0x24], eax
test eax, eax
je 0x4cd566
lea ecx, [esp + 0x74]
call fcn.00412830
mov eax, dword [esp + 0x24]
mov edx, dword [esp + 0x3c]
mov ecx, dword [edx]
mov edx, dword [esp + 0x30]
mov dword [esp + 0x7c], eax
mov dword [eax + 0x2c], ecx
mov ecx, dword [edx]
mov dword [eax + 0x30], ecx
movzx eax, byte [edi + 3]
movzx edx, byte [edi + 4]
movzx ecx, byte [edi + 6]
add edi, 3
shl eax, 8
or eax, edx
movzx edx, byte [edi + 5]
mov dword [esp + 0x64], eax
movzx eax, byte [edi + 2]
shl eax, 8
or eax, ecx
mov dword [esp + 0x2c], eax
movzx eax, byte [edi + 4]
shl eax, 8
or eax, edx
cmp byte [esi + 0x122], 0
mov byte [esp + 0x14c], 1
mov dword [esp + 0x34], eax
je 0x4cc513
mov eax, dword [esp + 0x64]
push eax
push str.cipherListLen
mov ecx, esi
call fcn.004373b0
mov ecx, dword [esp + 0x2c]
push ecx
push str.sessionIdLen
mov ecx, esi
call fcn.004373b0
mov edx, dword [esp + 0x34]
push edx
push str.challengeLen
mov ecx, esi
call fcn.004373b0
mov ecx, dword [esp + 0x64]
lea eax, [ecx - 3]
cmp eax, 0xbd
ja 0x4cc763
mov eax, 0xaaaaaaab
mul ecx
shr edx, 1
lea eax, [edx + edx*2]
sub ecx, eax
jne 0x4cc763
cmp dword [esp + 0x2c], 0x20
jbe 0x4cc578
mov edx, dword [esi]
mov eax, dword [edx + 0x14]
push str.Invalid_session_ID_length
mov ecx, esi
call eax
mov ecx, dword [esp + 0x20]
mov edx, dword [esp + 0x1c]
push esi
push ecx
push 0xa
push edx
mov ecx, ebx
call fcn.004c2300
lea ecx, [esp + 0x74]
mov byte [esp + 0x14c], 0
call fcn.00412a90
jmp 0x4cd566
mov eax, dword [esp + 0x34]
add eax, 0xfffffff8
cmp eax, 0x18
ja 0x4cc72b
add edi, 6
test edx, edx
jbe 0x4cc682
mov dword [esp + 0x68], edi
mov dword [esp + 0x6c], edx
jmp 0x4cc5a0
mov edx, dword [esp + 0x68]
mov ecx, 1
movzx ebx, byte [ecx + edx]
movzx ecx, byte [edx]
mov eax, 2
movzx eax, byte [eax + edx]
shl ecx, 8
or ebx, ecx
cmp byte [esi + 0x122], 0
mov dword [esp + 0x54], eax
je 0x4cc5eb
mov edx, eax
push edx
push str.cipherKind
mov ecx, esi
call fcn.004373b0
push ebx
push str.key_len
mov ecx, esi
call fcn.004373b0
mov eax, dword [esp + 0x54]
mov byte [esp + 0x40], 0
mov byte [esp + 0x41], 4
mov byte [esp + 0x28], 0
mov byte [esp + 0x29], 5
mov byte [esp + 0x14], 0
mov byte [esp + 0x15], 0xa
mov byte [esp + 0x5c], 0
mov byte [esp + 0x5d], 0x2f
mov byte [esp + 0x60], 0
mov byte [esp + 0x61], 0x35
test ebx, ebx
jne 0x4cc66e
cmp eax, 4
jne 0x4cc62f
push 2
lea eax, [esp + 0x44]
push eax
jmp 0x4cc662
cmp eax, 5
jne 0x4cc63a
lea ecx, [esp + 0x28]
jmp 0x4cc65f
cmp eax, 0xa
jne 0x4cc648
push 2
lea edx, [esp + 0x18]
push edx
jmp 0x4cc662
cmp eax, 0x2f
jne 0x4cc656
push 2
lea eax, [esp + 0x60]
push eax
jmp 0x4cc662
cmp eax, 0x35
jne 0x4cc66e
lea ecx, [esp + 0x60]
push 2
push ecx
mov ecx, dword [esp + 0x2c]
add ecx, 0x6c
call fcn.00448260
add dword [esp + 0x68], 3
sub dword [esp + 0x6c], 1
jne 0x4cc5a0
mov ebx, dword [esp + 0x18]
mov edx, dword [esp + 0x2c]
add edi, dword [esp + 0x64]
mov ecx, dword [esp + 0x24]
push edx
push edi
add ecx, 0x50
call fcn.00448260
mov eax, dword [esp + 0x34]
add edi, dword [esp + 0x2c]
push eax
push edi
mov edi, dword [esp + 0x2c]
lea ecx, [edi + 0x34]
call fcn.00448260
push 0
lea ecx, [edi + 0x88]
call fcn.00447e40
lea ecx, [esp + 0x80]
call fcn.00447240
movzx ecx, byte [ebx + 0x7d]
movzx edx, byte [ebx + 0xaf]
push esi
lea edi, [ebx + 0x47c]
push edi
push ecx
push edx
lea eax, [ebx + 0x128]
push eax
lea ecx, [esp + 0x94]
push ecx
mov ecx, dword [esp + 0x3c]
push 0
push 0
push ebx
mov byte [esp + 0x170], 2
call fcn.004c0590
lea ecx, [esp + 0x80]
mov byte [esp + 0x14c], 1
call fcn.004479b0
lea ecx, [esp + 0x74]
mov byte [esp + 0x14c], 0
call fcn.00412a90
jmp 0x4cc984
mov edx, dword [esi]
mov eax, dword [edx + 0x14]
push str.Invalid_challenge_length
mov ecx, esi
call eax
mov ecx, dword [esp + 0x20]
mov edx, dword [esp + 0x1c]
push esi
push ecx
push 0xa
push edx
mov ecx, ebx
call fcn.004c2300
lea ecx, [esp + 0x74]
mov byte [esp + 0x14c], 0
call fcn.00412a90
jmp 0x4cd566
mov eax, dword [esi]
mov edx, dword [eax + 0x14]
push str.Invalid_cipher_list_length
mov ecx, esi
call edx
mov eax, dword [esp + 0x20]
mov ecx, dword [esp + 0x1c]
push esi
push eax
push 0xa
push ecx
mov ecx, ebx
call fcn.004c2300
lea ecx, [esp + 0x74]
mov byte [esp + 0x14c], 0
call fcn.00412a90
jmp 0x4cd566
mov edx, dword [esi]
mov eax, dword [edx + 0x14]
push str.Failed_to_read_TLS_record__1_
mov ecx, esi
call eax
movzx ecx, byte [esp + 0x14]
push ecx
push 0x5c58d4
mov ecx, esi
call fcn.004373b0
mov edx, dword [esp + 0x2c]
push edx
push str.recLen
mov ecx, esi
call fcn.004373b0
mov ecx, ebx
call fcn.0051d090
push eax
push str.dbSize
jmp 0x4cd55f
mov eax, dword [esp + 0x18]
lea edx, [eax + 0x46c]
movzx ecx, cl
mov dword [edx], ecx
lea ebx, [eax + 0x470]
mov dword [esp + 0x38], edx
movzx edx, byte [edi + 1]
mov dword [ebx], edx
movzx ecx, byte [edi + 2]
add eax, 0x474
mov dword [eax], ecx
movzx edx, byte [edi + 4]
mov dword [esp + 0x30], eax
movzx eax, byte [edi + 3]
and eax, 0x7f
shl eax, 8
or eax, edx
cmp byte [esi + 0x122], 0
mov dword [esp + 0x3c], ebx
mov dword [esp + 0x2c], eax
je 0x4cc936
mov eax, dword [ebx]
cmp eax, 3
jne 0x4cc886
test ecx, ecx
jne 0x4cc843
mov edi, str.SSL_3.0
jmp 0x4cc8aa
cmp eax, 3
jne 0x4cc886
cmp ecx, 1
jne 0x4cc854
mov edi, str.TLS_1.0
jmp 0x4cc8aa
cmp eax, 3
jne 0x4cc886
cmp ecx, 2
jne 0x4cc865
mov edi, str.TLS_1.1
jmp 0x4cc8aa
cmp eax, 3
jne 0x4cc886
cmp ecx, eax
jne 0x4cc875
mov edi, str.TLS_1.2
jmp 0x4cc8aa
cmp eax, 3
jne 0x4cc886
cmp ecx, 4
jne 0x4cc886
mov edi, str.TLS_1.3
jmp 0x4cc8aa
mov eax, dword [esp + 0x30]
push eax
push ebx
push str.v_d._d
lea ecx, [esp + 0xac]
push 0x20
push ecx
call fcn.00435f50
add esp, 0x14
lea edi, [esp + 0xa0]
mov ebx, dword [esp + 0x38]
mov eax, dword [ebx]
cmp eax, 0x14
jne 0x4cc8bc
mov eax, str.ChangeCipherSpec
jmp 0x4cc8ff
cmp eax, 0x15
jne 0x4cc8c8
mov eax, str.Alert
jmp 0x4cc8ff
cmp eax, 0x16
jne 0x4cc8d4
mov eax, str.Handshake
jmp 0x4cc8ff
cmp eax, 0x17
jne 0x4cc8e0
mov eax, str.Application
jmp 0x4cc8ff
push ebx
push str.ct_d
lea edx, [esp + 0x88]
push 0x20
push edx
call fcn.00435f30
add esp, 0x10
lea eax, [esp + 0x80]
cmp dword [ebx], 0x17
je 0x4cc936
lea ecx, [esp + 0x2c]
push ecx
push eax
push edi
push str._s___s__sz_d
lea edx, [esp + 0xd0]
push 0x80
push edx
call fcn.00435f90
mov eax, dword [esi]
mov edx, dword [eax + 0x18]
add esp, 0x18
lea ecx, [esp + 0xc0]
push ecx
mov ecx, esi
call edx
mov edi, dword [esp + 0x18]
add edi, 0x47c
mov ecx, edi
call fcn.00446f40
mov ecx, dword [esp + 0x1c]
mov edx, dword [esp + 0x15c]
lea eax, [esp + 0x58]
push eax
mov eax, dword [esp + 0x30]
push esi
push ecx
mov ecx, dword [esp + 0x2c]
push edx
push edi
push eax
call fcn.00508940
mov bl, al
test bl, bl
je 0x4cd4aa
mov ecx, edi
call fcn.0051d090
cmp eax, dword [esp + 0x2c]
jne 0x4cd4aa
mov ecx, dword [esp + 0x38]
cmp dword [ecx], 0x14
mov ebx, dword [esp + 0x18]
jne 0x4cc9a1
cmp dword [ebx + 0x3c], 3
jne 0x4cc9a1
cmp dword [ebx + 0x40], 4
je 0x4cd48f
cmp byte [ebp + 0x98], 0
je 0x4cd1de
lea ecx, [esp + 0x80]
call fcn.00447240
cmp dword [ebx + 0x3c], 3
mov byte [esp + 0x14c], 3
jne 0x4cc9d6
cmp dword [ebx + 0x40], 4
jne 0x4cc9d6
mov bl, 1
mov byte [esp + 0x14], bl
jmp 0x4cc9df
mov byte [esp + 0x14], 0
mov bl, byte [esp + 0x14]
mov eax, dword [ebp + 0xac]
cmp eax, 6
jne 0x4cccb6
mov dword [esp + 0x6c], 0x18
test bl, bl
je 0x4cca02
mov dword [esp + 0x6c], 0x10
mov ecx, edi
call fcn.0051d090
mov ebx, eax
lea ecx, [ebp + 0x694]
mov dword [esp + 0x54], ebx
call fcn.00446f40
cmp ebx, dword [esp + 0x6c]
jae 0x4cca6a
mov edx, dword [esi]
mov eax, dword [edx + 0x14]
push str.GCM_fragment_not_large_enough.
mov ecx, esi
call eax
push ebx
push str.tlsMsgLen
mov ecx, esi
call fcn.004373b0
mov ecx, dword [esp + 0x20]
mov edx, dword [esp + 0x1c]
push esi
push ecx
push 0x14
push edx
mov ecx, dword [esp + 0x28]
call fcn.004c2300
lea ecx, [esp + 0x80]
mov byte [esp + 0x14c], 0
call fcn.004479b0
jmp 0x4cd566
mov ecx, edi
call fcn.0051d090
cmp byte [esp + 0x14], 0
mov ebx, eax
jne 0x4cca91
push 8
lea eax, [ebp + 0xec]
push eax
lea ecx, [ebp + 0x694]
sub ebx, 0x18
call fcn.00448260
mov ecx, dword [esp + 0x38]
mov dl, byte [ecx]
mov eax, dword [esp + 0x3c]
mov cl, byte [eax]
mov byte [esp + 0x6d], cl
mov byte [esp + 0x6c], dl
mov edx, dword [esp + 0x30]
mov al, byte [edx]
mov ecx, ebx
shr ecx, 8
push 5
lea edx, [esp + 0x70]
mov byte [esp + 0x73], cl
push edx
lea ecx, [ebp + 0x694]
mov byte [esp + 0x76], al
mov byte [esp + 0x78], bl
call fcn.00448260
cmp byte [esi + 0x123], 0
je 0x4ccaea
lea eax, [ebp + 0x694]
push eax
push str.aesGcmAad
mov ecx, esi
call fcn.00437980
mov eax, dword [esp + 0x18]
cmp dword [eax + 0x3c], 3
jne 0x4ccbdc
cmp dword [eax + 0x40], 4
jne 0x4ccbdc
mov ecx, dword [ebp + 0xf0]
mov eax, dword [ebp + 0xec]
mov dword [esp + 0x7c], ecx
lea ebx, [ebp + 0xd0]
mov ecx, ebx
mov byte [esp + 0x74], 0
mov byte [esp + 0x75], 0
mov byte [esp + 0x76], 0
mov byte [esp + 0x77], 0
mov dword [esp + 0x78], eax
call fcn.0051d090
cmp eax, 0xc
je 0x4ccb63
mov edx, dword [esi]
mov eax, dword [edx + 0x14]
push str.m_fixedIv_for_TLS_1.3_GCM_should_be_12_bytes
mov ecx, esi
call eax
lea ecx, [esp + 0x80]
mov byte [esp + 0x14c], 0
call fcn.004479b0
jmp 0x4cd566
mov ecx, ebx
call fcn.00446f60
mov ebx, eax
lea ecx, [esp + 0x74]
xor edx, edx
sub ebx, ecx
mov dword [esp + 0x6c], ebx
jmp 0x4ccb84
mov ebx, dword [esp + 0x6c]
lea ecx, [esp + edx + 0x74]
movzx ebx, byte [ebx + ecx]
xor byte [ecx], bl
movzx ebx, byte [edx + eax + 1]
xor byte [ecx + 1], bl
movzx ebx, byte [edx + eax + 2]
xor byte [ecx + 2], bl
movzx ebx, byte [edx + eax + 3]
xor byte [ecx + 3], bl
movzx ebx, byte [edx + eax + 4]
xor byte [ecx + 4], bl
movzx ebx, byte [edx + eax + 5]
xor byte [ecx + 5], bl
add edx, 6
cmp edx, 0xc
jl 0x4ccb80
cmp byte [esi + 0x123], 0
je 0x4ccc22
push 0xc
lea edx, [esp + 0x78]
push edx
push str.aesGcmNonce
mov ecx, esi
call fcn.00436910
jmp 0x4ccc22
lea ebx, [ebp + 0xd0]
mov ecx, ebx
call fcn.0051d090
cmp eax, 4
je 0x4ccc01
mov edx, dword [esi]
mov eax, dword [edx + 0x14]
push str.GCM_fixed_IV_not_equal_to_4.
mov ecx, esi
call eax
jmp 0x4cca3b
mov ecx, ebx
call fcn.00446f60
mov eax, dword [eax]
mov ecx, edi
mov dword [esp + 0x74], eax
call fcn.00446f60
mov ecx, dword [eax]
mov dword [esp + 0x78], ecx
mov edx, dword [eax + 4]
mov dword [esp + 0x7c], edx
push 0xc
lea eax, [esp + 0x78]
push eax
lea ecx, [ebp + 0x648]
call fcn.004da560
mov ecx, edi
call fcn.00446f60
mov ecx, dword [esp + 0x54]
lea edx, [eax + ecx - 0x10]
lea ebx, [ebp + 0x6b0]
mov ecx, ebx
mov dword [esp + 0x6c], edx
call fcn.00446f40
mov eax, dword [esp + 0x6c]
push 0x10
push eax
mov ecx, ebx
call fcn.00448260
cmp byte [esi + 0x123], 0
je 0x4ccc78
push ebx
push str.expected_aesGcmAuthTag
mov ecx, esi
call fcn.00437980
push 0x10
mov ecx, edi
call fcn.004471a0
push esi
lea eax, [ebp + 0x648]
push eax
lea ecx, [ebp + 0xf8]
push ecx
mov ecx, dword [ebp + 0x6d8]
call fcn.00543320
test al, al
jne 0x4ccea3
mov edx, dword [esi]
mov eax, dword [edx + 0x14]
push str.GCM_decrypt_setup_failed.
mov ecx, esi
call eax
jmp 0x4cca3b
cmp eax, 7
jne 0x4ccea7
mov ecx, edi
call fcn.0051d090
mov dword [esp + 0x54], eax
cmp eax, 0x10
jae 0x4cccef
push str.AEAD_fragment_not_large_enough.
mov eax, dword [esi]
mov edx, dword [eax + 0x14]
mov ecx, esi
call edx
mov eax, dword [esp + 0x20]
mov ecx, dword [esp + 0x1c]
push esi
push eax
push 0x14
push ecx
jmp 0x4cca48
lea ecx, [ebp + 0x694]
call fcn.00446f40
mov ecx, edi
call fcn.0051d090
test bl, bl
mov ebx, eax
jne 0x4ccd1e
push 8
lea edx, [ebp + 0xec]
push edx
lea ecx, [ebp + 0x694]
sub ebx, 0x10
call fcn.00448260
mov eax, dword [esp + 0x38]
mov cl, byte [eax]
mov edx, dword [esp + 0x3c]
mov al, byte [edx]
mov byte [esp + 0x6c], cl
mov ecx, dword [esp + 0x30]
mov dl, byte [ecx]
mov byte [esp + 0x6d], al
push 5
lea ecx, [esp + 0x70]
mov eax, ebx
shr eax, 8
push ecx
lea ecx, [ebp + 0x694]
mov byte [esp + 0x76], dl
mov byte [esp + 0x77], al
mov byte [esp + 0x78], bl
call fcn.00448260
mov edx, dword [ebp + 0xec]
mov eax, dword [ebp + 0xf0]
lea ebx, [ebp + 0xd0]
mov ecx, ebx
mov byte [esp + 0x74], 0
mov byte [esp + 0x75], 0
mov byte [esp + 0x76], 0
mov byte [esp + 0x77], 0
mov dword [esp + 0x78], edx
mov dword [esp + 0x7c], eax
call fcn.0051d090
cmp eax, 0xc
je 0x4ccdbc
mov edx, dword [esi]
mov eax, dword [edx + 0x14]
push str.m_fixedIv_should_be_12_bytes
mov ecx, esi
call eax
lea ecx, [esp + 0x80]
mov byte [esp + 0x14c], 0
call fcn.004479b0
jmp 0x4cd566
mov ecx, ebx
call fcn.00446f60
mov ebx, eax
lea ecx, [esp + 0x74]
xor edx, edx
sub ebx, ecx
mov dword [esp + 0x6c], ebx
jmp 0x4ccdd7
mov ebx, dword [esp + 0x6c]
lea ecx, [esp + edx + 0x74]
movzx ebx, byte [ecx + ebx]
xor byte [ecx], bl
movzx ebx, byte [edx + eax + 1]
xor byte [ecx + 1], bl
movzx ebx, byte [edx + eax + 2]
xor byte [ecx + 2], bl
movzx ebx, byte [edx + eax + 3]
xor byte [ecx + 3], bl
movzx ebx, byte [edx + eax + 4]
xor byte [ecx + 4], bl
movzx ebx, byte [edx + eax + 5]
xor byte [ecx + 5], bl
add edx, 6
cmp edx, 0xc
jl 0x4ccdd3
push 0xc
lea edx, [esp + 0x78]
lea ebx, [ebp + 0x648]
push edx
mov ecx, ebx
call fcn.004da560
mov ecx, edi
call fcn.00446f60
mov ecx, dword [esp + 0x54]
lea edx, [eax + ecx - 0x10]
lea ecx, [ebp + 0x6b0]
mov dword [esp + 0x6c], edx
call fcn.00446f40
mov eax, dword [esp + 0x6c]
push 0x10
push eax
lea ecx, [ebp + 0x6b0]
call fcn.00448260
push 0x10
mov ecx, edi
call fcn.004471a0
mov ecx, dword [ebp + 0x6d8]
mov edx, dword [ecx]
push esi
lea eax, [ebp + 0xf8]
push eax
mov eax, dword [edx + 0xc]
push ebx
push 0
call eax
mov ecx, dword [ebp + 0x6d8]
mov edx, dword [ecx]
push esi
push ebx
lea eax, [ebp + 0xf8]
push eax
mov eax, dword [edx + 0x2c]
call eax
test al, al
jne 0x4ccea3
mov edx, dword [esi]
mov eax, dword [edx + 0x14]
push str.AEAD_decrypt_setup_failed.
mov ecx, esi
call eax
jmp 0x4cca3b
mov bl, byte [esp + 0x14]
mov al, byte [esi + 0x121]
mov cl, byte [esi + 0x122]
mov byte [esi + 0x121], cl
cmp dword [ebp + 0xac], 6
mov byte [esp + 0x40], al
push esi
jne 0x4ccfbc
test bl, bl
lea ebx, [ebp + 0x648]
je 0x4ccf9a
lea edx, [esp + 0x84]
push edx
mov ecx, edi
call fcn.0051d090
push eax
mov ecx, edi
call fcn.00446f60
mov ecx, dword [ebp + 0x6d8]
push eax
push ebx
lea eax, [ebp + 0xf8]
push eax
call fcn.004da880
lea ecx, [esp + 0x80]
mov byte [esp + 0x14], al
call fcn.0051d090
test eax, eax
jbe 0x4ccf4e
jmp 0x4ccf20
lea ecx, [esp + 0x80]
call fcn.00446ff0
test al, al
jne 0x4ccf4e
push 1
lea ecx, [esp + 0x84]
call fcn.004471a0
lea ecx, [esp + 0x80]
call fcn.0051d090
test eax, eax
ja 0x4ccf20
lea ecx, [esp + 0x80]
call fcn.00446ff0
mov byte [esp + 0x28], al
sub al, 0x14
cmp al, 3
jbe 0x4cd054
push str.Invalid_TLS_1.3_actual_content_type..
mov edx, dword [esi]
mov eax, dword [edx + 0x14]
mov ecx, esi
call eax
movzx ecx, byte [esp + 0x28]
push ecx
push str.actualContentType
mov ecx, esi
call fcn.004373b0
mov edx, dword [esp + 0x20]
mov eax, dword [esp + 0x1c]
push esi
push edx
push 0x14
push eax
jmp 0x4cca48
lea ecx, [esp + 0x84]
push ecx
mov ecx, edi
call fcn.0051d090
sub eax, 8
push eax
mov ecx, edi
call fcn.00446f60
add eax, 8
jmp 0x4cd0a4
test bl, bl
lea ebx, [ebp + 0x648]
je 0x4cd08d
lea edx, [esp + 0x84]
push edx
mov ecx, edi
call fcn.0051d090
push eax
mov ecx, edi
call fcn.00446f60
mov ecx, dword [ebp + 0x6d8]
push eax
push ebx
lea eax, [ebp + 0xf8]
push eax
call fcn.004da880
lea ecx, [esp + 0x80]
mov byte [esp + 0x14], al
call fcn.0051d090
test eax, eax
jbe 0x4cd03e
lea esp, [esp]
lea ecx, [esp + 0x80]
call fcn.00446ff0
test al, al
jne 0x4cd03e
push 1
lea ecx, [esp + 0x84]
call fcn.004471a0
lea ecx, [esp + 0x80]
call fcn.0051d090
test eax, eax
ja 0x4cd010
lea ecx, [esp + 0x80]
call fcn.00446ff0
mov byte [esp + 0x28], al
sub al, 0x14
cmp al, 3
ja 0x4cd083
push 1
lea ecx, [esp + 0x84]
call fcn.004471a0
movzx eax, byte [esp + 0x28]
mov ecx, dword [esp + 0x38]
mov edx, dword [esp + 0x3c]
mov dword [ecx], eax
mov eax, dword [esp + 0x30]
mov dword [edx], 3
mov dword [eax], 4
jmp 0x4cd0bc
push str.Invalid_TLS_1.3_actual_content_type.
jmp 0x4ccf6d
lea ecx, [esp + 0x84]
push ecx
mov ecx, edi
call fcn.0051d090
push eax
mov ecx, edi
call fcn.00446f60
mov ecx, dword [ebp + 0x6d8]
push eax
push ebx
lea eax, [ebp + 0xf8]
push eax
call fcn.004da880
mov byte [esp + 0x14], al
cmp byte [esp + 0x14], 0
mov dl, byte [esp + 0x40]
mov byte [esi + 0x121], dl
jne 0x4cd0d7
push str.Failed_to_decrypt_SSL_TLS_record.
jmp 0x4cccd4
mov eax, dword [ebp + 0xac]
cmp eax, 6
jne 0x4cd185
mov ecx, dword [ebp + 0x6d8]
push esi
push ebx
lea eax, [ebp + 0xf8]
push eax
call fcn.005433a0
test al, al
jne 0x4cd111
mov edx, dword [esi]
mov eax, dword [edx + 0x14]
push str.GCM_decrypt_finalize_failed.
mov ecx, esi
call eax
jmp 0x4cca3b
cmp byte [esi + 0x123], 0
je 0x4cd128
mov eax, dword [esi]
mov edx, dword [eax + 0x18]
push str.gcm_decrypt_finalize_success.
mov ecx, esi
call edx
lea eax, [esp + 0x80]
push eax
mov ecx, edi
call fcn.00447d50
mov ebx, dword [esp + 0x18]
mov byte [ebx + 0x478], 1
mov eax, dword [ebp + 0xac]
cmp eax, 6
je 0x4cd1ca
cmp eax, 0x63
je 0x4cd1ca
cmp eax, 7
je 0x4cd1ca
push esi
mov ecx, edi
call fcn.00448aa0
test al, al
jne 0x4cd1b7
mov edx, dword [esi]
mov eax, dword [edx + 0x14]
push str.Invalid_block_cipher_padding_detected.
mov ecx, esi
call eax
mov ecx, dword [esp + 0x20]
mov edx, dword [esp + 0x1c]
push esi
push ecx
push 0x14
push edx
mov ecx, ebx
jmp 0x4cca4c
cmp eax, 7
jne 0x4cd128
mov ecx, dword [ebp + 0x6d8]
mov edx, dword [ecx]
push esi
push ebx
lea eax, [ebp + 0xf8]
push eax
mov eax, dword [edx + 0x30]
call eax
test al, al
jne 0x4cd128
mov edx, dword [esi]
mov eax, dword [edx + 0x14]
push str.AEAD_decrypt_finalize_failed.
mov ecx, esi
call eax
jmp 0x4cca3b
mov ecx, edi
call fcn.00446ff0
movzx eax, al
inc eax
push eax
mov ecx, edi
call fcn.004471a0
lea ecx, [esp + 0x80]
mov byte [esp + 0x14c], 0
call fcn.004479b0
mov eax, dword [ebp + 0xac]
cmp eax, 6
je 0x4cd475
cmp eax, 7
je 0x4cd475
mov eax, dword [ebp + 0xb0]
test eax, eax
je 0x4cd475
mov dword [esp + 0x24], 0x10
cmp eax, 1
jne 0x4cd21b
mov dword [esp + 0x24], 0x14
jmp 0x4cd237
cmp eax, 7
jne 0x4cd22a
mov dword [esp + 0x24], 0x20
jmp 0x4cd237
cmp eax, 2
jne 0x4cd237
mov dword [esp + 0x24], 0x30
mov ecx, edi
call fcn.0051d090
mov ebx, eax
cmp ebx, dword [esp + 0x24]
jae 0x4cd26f
mov eax, dword [esi]
mov edx, dword [eax + 0x14]
push str.SSL_TLS_record_shorter_than_MAC_length_
mov ecx, esi
call edx
mov eax, dword [esp + 0x20]
mov ecx, dword [esp + 0x1c]
push esi
push eax
push 0x14
push ecx
mov ecx, dword [esp + 0x28]
call fcn.004c2300
jmp 0x4cd566
lea ecx, [esp + 0xa0]
call fcn.00447240
mov eax, dword [esp + 0x24]
push eax
sub ebx, eax
push ebx
push edi
lea ecx, [esp + 0xac]
mov byte [esp + 0x158], 4
call fcn.00449db0
mov edx, dword [esp + 0x24]
push edx
mov ecx, edi
call fcn.004471a0
mov eax, dword [esp + 0x3c]
cmp dword [eax], 3
mov dword [esp + 0x34], 0
jne 0x4cd34e
mov ecx, dword [esp + 0x30]
cmp dword [ecx], 2
jl 0x4cd34e
cmp dword [ebp + 0xc4], 0
jbe 0x4cd34e
mov ecx, edi
call fcn.0051d090
cmp eax, dword [ebp + 0xc4]
jb 0x4cd317
mov ebx, dword [ebp + 0xc4]
push esi
lea edx, [esp + 0xc4]
push edx
mov ecx, edi
call fcn.0051d090
sub eax, ebx
push eax
push ebx
mov ecx, edi
call fcn.00446f90
mov edx, dword [esp + 0x48]
push eax
mov eax, dword [esp + 0x40]
mov ecx, dword [eax]
mov eax, dword [edx]
push ecx
mov ecx, dword [esp + 0x4c]
mov edx, dword [ecx]
push eax
push edx
jmp 0x4cd37c
mov eax, dword [esi]
mov edx, dword [eax + 0x14]
push str.Message_not_long_enough_for_the_MAC.
mov ecx, esi
call edx
mov ecx, edi
call fcn.0051d090
push eax
push str.tlsMsgSize
mov ecx, esi
call fcn.004373b0
mov eax, dword [ebp + 0xc4]
push eax
push str.cipherSuiteRecordIvLen
mov ecx, esi
call fcn.004373b0
jmp 0x4cd389
push esi
lea ecx, [esp + 0xc4]
push ecx
mov ecx, edi
call fcn.0051d090
push eax
mov ecx, edi
call fcn.00446f60
mov edx, dword [esp + 0x3c]
mov ecx, dword [esp + 0x48]
push eax
mov eax, dword [edx]
mov edx, dword [ecx]
push eax
mov eax, dword [esp + 0x4c]
mov ecx, dword [eax]
push edx
push ecx
push 0
mov ecx, ebp
call fcn.004c14b0
mov dword [esp + 0x34], eax
mov edi, dword [esp + 0x24]
lea ecx, [esp + 0xa0]
lea ebx, [esp + 0xc0]
call fcn.00446f60
cmp edi, 4
jb 0x4cd3b9
mov edx, dword [eax]
cmp edx, dword [ebx]
jne 0x4cd3e9
sub edi, 4
add ebx, 4
add eax, 4
cmp edi, 4
jae 0x4cd3a5
test edi, edi
je 0x4cd461
mov cl, byte [ebx]
cmp cl, byte [eax]
jne 0x4cd3e9
cmp edi, 1
jbe 0x4cd461
mov dl, byte [ebx + 1]
cmp dl, byte [eax + 1]
jne 0x4cd3e9
cmp edi, 2
jbe 0x4cd461
mov cl, byte [ebx + 2]
cmp cl, byte [eax + 2]
je 0x4cd461
mov edx, dword [esi]
mov eax, dword [edx + 0x14]
push str.Invalid_MAC
mov ecx, esi
call eax
mov ecx, dword [esp + 0x24]
push ecx
push str.macLen
mov ecx, esi
call fcn.004373b0
mov edx, dword [esp + 0x34]
push edx
push str.macLen2
mov ecx, esi
call fcn.004373b0
lea ecx, [esp + 0xa0]
call fcn.0051d090
push eax
push str.dbMacSize
mov ecx, esi
call fcn.004373b0
mov eax, dword [esp + 0x20]
mov ecx, dword [esp + 0x1c]
push esi
push eax
push 0x14
push ecx
mov ecx, dword [esp + 0x28]
call fcn.004c2300
lea ecx, [esp + 0xa0]
mov byte [esp + 0x14c], 0
call fcn.004479b0
jmp 0x4cd566
lea ecx, [esp + 0xa0]
mov byte [esp + 0x14c], 0
call fcn.004479b0
mov ecx, 0xffffff14
lea eax, [ebp + 0xf3]
sub ecx, ebp
add byte [eax], 1
jne 0x4cd48f
dec eax
lea edx, [ecx + eax]
test edx, edx
jge 0x4cd482
lea ecx, [esp + 0x44]
mov dword [esp + 0x14c], 0xffffffff
call fcn.004377b0
mov al, 1
jmp 0x4cd57c
mov eax, dword [esi]
mov edx, dword [eax + 0x14]
push str.Failed_to_read_TLS_record__2_
mov ecx, esi
call edx
mov ecx, edi
call fcn.0051d090
push eax
push str.tlsRec_msg
mov ecx, esi
call fcn.004373b0
mov eax, dword [esp + 0x2c]
push eax
push str.msgLen
mov ecx, esi
call fcn.004373b0
mov ecx, dword [esp + 0x58]
push ecx
push str.nReadNBytes
mov ecx, esi
call fcn.004373b0
movzx edx, bl
push edx
push str.status
jmp 0x4cd55f
mov ecx, edi
call fcn.00472570
test al, al
je 0x4cd50d
cmp byte [edi + 0xac], 0
je 0x4cd566
mov eax, dword [esi]
mov edx, dword [eax + 0x14]
push str.Failed_to_read_beginning_of_SSL_TLS_record.
mov ecx, esi
call edx
movzx eax, byte [esp + 0x14]
push eax
push 0x5c58d4
mov ecx, esi
call fcn.004373b0
mov ecx, ebx
call fcn.0051d090
push eax
push str.dbSize
mov ecx, esi
call fcn.004373b0
mov ecx, dword [esp + 0x58]
push ecx
push str.nReadNBytes
mov ecx, esi
call fcn.004373b0
mov edx, dword [esp + 0x15c]
push edx
push str.idleTimeoutMs
mov ecx, esi
call fcn.004373b0
lea ecx, [esp + 0x44]
mov dword [esp + 0x14c], 0xffffffff
call fcn.004377b0
xor al, al
mov ecx, dword [esp + 0x144]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebp
pop ebx
mov ecx, dword [esp + 0x12c]
xor ecx, esp
call fcn.005550b0
add esp, 0x13c
ret 0x14