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

Disassembly:
sub esp, 0x2c
push ebx
push ebp
push esi
push edi
push 0x5a5bd4
push 0x47b
mov ebx, str.srclibmbedtlslibrary_ssl_srv.c
mov edi, ecx
push ebx
xor eax, eax
push 2
push edi
mov dword [esp + 0x40], eax
mov dword [esp + 0x2c], eax
call fcn.004c6a21
add esp, 0x14
mov dword [esp + 0x24], 4
xor eax, eax
push 5
pop ecx
push 0xd
pop ebp
cmp dword [edi + 8], eax
jne 0x4c9c68
mov edx, ecx
mov ecx, edi
call fcn.004bf6f5
mov esi, eax
test esi, esi
jne 0x4c9da5
push 5
pop ecx
mov eax, dword [edi]
mov esi, dword [edi + 0x6c]
mov dword [esp + 0x30], esi
cmp byte [eax + 5], 1
cmove ecx, ebp
push ecx
push esi
push str.record_header
push 0x493
push ebx
push 4
pop eax
mov edx, eax
mov ecx, edi
call fcn.004c6b7e
movzx eax, byte [esi]
add esp, 0x14
push eax
push str.client_hello__message_type:__d
push 0x49f
push ebx
push 3
push edi
call fcn.004c6a21
add esp, 0x18
cmp byte [esi], 0x16
jne 0x4caa89
lea ebp, [edi + 0x70]
mov eax, dword [ebp]
movzx ecx, byte [eax + 1]
movzx eax, byte [eax]
shl eax, 8
or ecx, eax
push ecx
push str.client_hello__message_len.:__d
push 0x4a8
push ebx
push 3
push edi
call fcn.004c6a21
mov eax, dword [esp + 0x48]
inc esi
movzx eax, byte [eax + 2]
push eax
movzx eax, byte [esi]
push eax
push str.client_hello__protocol_version:___d:_d_
push 0x4ab
push ebx
push 3
push edi
call fcn.004c6a21
mov eax, dword [edi]
lea edx, [esp + 0x6c]
add esp, 0x34
lea ecx, [esp + 0x28]
mov al, byte [eax + 5]
mov byte [esp + 0x17], al
movzx eax, al
push esi
push eax
call fcn.004c2e3d
cmp dword [esp + 0x30], 3
pop ecx
pop ecx
jl 0x4caa6f
xor ecx, ecx
inc ecx
cmp byte [esp + 0x17], cl
jne 0x4c9dd2
cmp dword [edi + 8], 0
jne 0x4c9dd2
mov eax, dword [edi + 0x68]
cmp byte [eax], 0
jne 0x4c9def
cmp byte [eax + 1], 0
jne 0x4c9def
add eax, 2
push 6
push eax
lea eax, [edi + 0xe6]
push eax
call fcn.0051c650
add esp, 0xc
mov ecx, edi
call fcn.004c0c05
test eax, eax
je 0x4c9dc5
push str.replayed_record__discarding
push 0x4cf
push ebx
push 1
push edi
call fcn.004c6a21
add esp, 0x14
xor eax, eax
mov dword [edi + 0x90], eax
mov dword [edi + 0x88], eax
push 0xd
pop ebp
push 5
pop ecx
jmp 0x4c9c4d
push esi
push str.mbedtls_ssl_fetch_input
push 0x48c
xor edx, edx
mov ecx, edi
push ebx
inc edx
call fcn.004c6af7
add esp, 0x10
mov eax, esi
jmp 0x4caaa4
mov ecx, edi
call fcn.004c0c72
xor ecx, ecx
lea ebp, [edi + 0x70]
inc ecx
mov eax, dword [ebp]
movzx ebp, byte [eax + 1]
movzx eax, byte [eax]
shl eax, 8
or ebp, eax
cmp dword [edi + 8], 0
je 0x4c9e0b
mov ebp, dword [edi + 0xa8]
jmp 0x4c9e67
push str.bad_client_hello_message
push 0x4c5
push ebx
push ecx
push edi
call fcn.004c6a21
mov eax, 0xffff9a00
jmp 0x4caaa1
cmp ebp, 0x4000
jbe 0x4c9e1f
push str.bad_client_hello_message
push 0x4e8
jmp 0x4c9df9
mov eax, dword [edi]
push 0xd
cmp byte [eax + 5], cl
pop eax
push 5
pop ecx
cmovne eax, ecx
mov ecx, edi
lea edx, [eax + ebp]
call fcn.004bf6f5
mov esi, eax
test esi, esi
je 0x4c9e4d
push esi
push str.mbedtls_ssl_fetch_input
push 0x4ef
jmp 0x4c9db0
mov eax, dword [edi]
cmp byte [eax + 5], 1
jne 0x4c9e60
lea eax, [ebp + 0xd]
mov dword [edi + 0x90], eax
jmp 0x4c9e67
and dword [edi + 0x88], 0
mov esi, dword [edi + 0x78]
mov ecx, edi
push ebp
push esi
push str.record_contents
push 0x4fe
push ebx
push 4
pop eax
mov edx, eax
call fcn.004c6b7e
mov eax, dword [edi + 0x44]
add esp, 0x14
push ebp
push esi
push edi
call dword [eax + 0x14]
mov eax, dword [edi]
add esp, 0xc
xor edx, edx
inc edx
cmp byte [eax + 5], dl
push 0xc
pop ecx
push 4
pop eax
cmovne ecx, eax
cmp ebp, ecx
jae 0x4c9ec3
push str.bad_client_hello_message
push 0x50c
push ebx
push edx
push edi
call fcn.004c6a21
mov eax, 0xffff8d00
jmp 0x4caaa1
movzx eax, byte [esi]
push eax
push str.client_hello_v3__handshake_type:__d
push 0x510
push ebx
push 3
push edi
call fcn.004c6a21
xor eax, eax
add esp, 0x18
inc eax
cmp byte [esi], al
je 0x4c9ef5
push str.bad_client_hello_message
push 0x514
push ebx
push eax
jmp 0x4caa96
movzx ecx, byte [esi + 1]
movzx eax, byte [esi + 2]
shl ecx, 8
or ecx, eax
movzx eax, byte [esi + 3]
shl ecx, 8
or ecx, eax
push ecx
push str.client_hello_v3__handshake_len.:__d
push 0x519
push ebx
push 3
push edi
call fcn.004c6a21
xor edx, edx
add esp, 0x18
inc edx
cmp byte [esi + 1], 0
jne 0x4caa60
mov eax, dword [edi]
movzx ecx, byte [esi + 2]
shl ecx, 8
push 0xc
mov al, byte [eax + 5]
mov byte [esp + 0x1b], al
movzx eax, byte [esi + 3]
or ecx, eax
cmp byte [esp + 0x1b], dl
pop eax
cmovne eax, dword [esp + 0x24]
add ecx, eax
cmp ebp, ecx
jne 0x4caa60
cmp byte [esp + 0x17], dl
jne 0x4ca012
mov eax, dword [edi + 0x78]
mov cl, byte [eax + 4]
mov al, byte [eax + 5]
movzx ecx, cl
movzx eax, al
shl ecx, 8
or ecx, eax
mov eax, dword [edi + 0x44]
cmp dword [edi + 8], edx
jne 0x4c9fb8
mov eax, dword [eax + 0x1f4]
cmp ecx, eax
je 0x4c9fac
push eax
push ecx
push str.bad_client_hello_message_seq:__u__expected__u_
push 0x535
push ebx
push edx
push edi
call fcn.004c6a21
add esp, 0x1c
mov eax, 0xffff8d00
jmp 0x4caaa4
mov ecx, dword [edi + 0x44]
inc eax
mov dword [ecx + 0x1f4], eax
jmp 0x4c9fc8
mov dword [eax + 0x1f0], ecx
inc ecx
mov eax, dword [edi + 0x44]
mov dword [eax + 0x1f4], ecx
mov ecx, dword [edi + 0x78]
cmp byte [ecx + 6], 0
jne 0x4c9ff6
cmp byte [ecx + 7], 0
jne 0x4c9ff6
cmp byte [ecx + 8], 0
jne 0x4c9ff6
lea eax, [ecx + 9]
push 3
push eax
lea eax, [ecx + 1]
push eax
call fcn.0051cbd0
xor edx, edx
add esp, 0xc
inc edx
test eax, eax
je 0x4ca012
push str.ClientHello_fragmentation_not_supported
push 0x54b
push ebx
push edx
push edi
call fcn.004c6a21
mov eax, 0xffff8f80
jmp 0x4caaa1
mov eax, dword [edi]
push 0xc
pop ecx
push 4
cmp byte [eax + 5], dl
pop eax
cmovne ecx, eax
add esi, ecx
sub ebp, ecx
mov dword [esp + 0x24], esi
cmp ebp, 0x26
jae 0x4ca03c
push str.bad_client_hello_message
push 0x56b
jmp 0x4c9eb1
push 2
push esi
push str.client_hello__version
push 0x572
push ebx
push 3
pop edx
mov ecx, edi
call fcn.004c6b7e
mov eax, dword [edi]
lea edx, [edi + 0x14]
add esp, 0x14
lea ecx, [edi + 0x10]
movzx eax, byte [eax + 5]
push esi
push eax
call fcn.004c2e3d
mov al, byte [edi + 0x14]
lea edx, [edi + 0x40]
pop ecx
pop ecx
mov ecx, dword [edx]
mov dword [esp + 0x28], edx
mov byte [ecx + 2], al
mov ecx, dword [edi + 0x44]
mov al, byte [edi + 0x10]
mov byte [ecx], al
mov ecx, dword [edi + 0x44]
mov al, byte [edi + 0x14]
mov byte [ecx + 1], al
mov eax, dword [edi]
movzx ecx, byte [eax + 2]
mov dword [esp + 0x30], ecx
lea ecx, [eax + 3]
mov eax, dword [esp + 0x30]
cmp dword [edi + 0x10], eax
jl 0x4caa29
movzx eax, byte [ecx]
cmp dword [edi + 0x14], eax
jl 0x4caa29
mov eax, dword [edi]
movzx ecx, byte [eax]
cmp dword [edi + 0x10], ecx
jle 0x4ca0c8
mov dword [edi + 0x10], ecx
movzx eax, byte [eax + 1]
mov dword [edi + 0x14], eax
jmp 0x4ca0df
movzx eax, byte [eax + 1]
mov dword [esp + 0x28], edx
cmp dword [edi + 0x14], eax
jle 0x4ca0df
mov dword [edi + 0x14], eax
lea eax, [edi + 0x40]
mov dword [esp + 0x28], eax
push 0x20
add esi, 2
mov ecx, edi
push esi
push str.client_hello__random_bytes
push 0x592
push ebx
push 3
pop edx
call fcn.004c6b7e
mov eax, dword [edi + 0x44]
add esp, 0x14
add eax, 0x3b0
push 0x20
push esi
push eax
call fcn.0051c650
mov esi, dword [esp + 0x30]
add esp, 0xc
movzx ecx, byte [esi + 0x22]
mov dword [esp + 0x30], ecx
cmp ecx, 0x20
ja 0x4caa02
lea eax, [ecx + 0x24]
cmp eax, ebp
ja 0x4caa02
push ecx
add esi, 0x23
mov ecx, edi
push esi
push str.client_hello__session_id
push 0x5a4
push ebx
push 3
pop edx
call fcn.004c6b7e
mov edx, dword [esp + 0x3c]
add esp, 0x14
mov ecx, dword [esp + 0x30]
mov eax, dword [edx]
push 0x20
push 0
mov dword [eax + 0x18], ecx
mov eax, dword [edx]
add eax, 0x1c
push eax
call fcn.0051c010
mov eax, dword [esp + 0x34]
add esp, 0xc
mov eax, dword [eax]
push dword [eax + 0x18]
add eax, 0x1c
push esi
push eax
call fcn.0051c650
mov eax, dword [edi]
xor ecx, ecx
mov edx, dword [esp + 0x3c]
inc ecx
mov esi, dword [esp + 0x30]
add edx, 0x23
add esp, 0xc
mov dword [esp + 0x28], edx
cmp byte [eax + 5], cl
jne 0x4ca299
movzx eax, byte [edx + esi]
mov dword [esp + 0x28], eax
add eax, edx
mov dword [esp + 0x24], eax
add eax, 3
cmp eax, ebp
jbe 0x4ca1c6
push str.bad_client_hello_message
push 0x5b7
push ebx
push ecx
jmp 0x4caa0f
push dword [esp + 0x28]
lea eax, [esi + 1]
mov ecx, edi
add eax, edx
push eax
push str.client_hello__cookie
push 0x5be
push ebx
push 3
pop edx
mov dword [esp + 0x44], eax
call fcn.004c6b7e
mov eax, dword [edi]
add esp, 0x14
mov ecx, dword [eax + 0x4c]
test ecx, ecx
je 0x4ca25e
cmp dword [edi + 8], 0
jne 0x4ca25e
push dword [edi + 0x100]
push dword [edi + 0xfc]
push dword [esp + 0x30]
push dword [esp + 0x3c]
push dword [eax + 0x50]
call ecx
add esp, 0x14
test eax, eax
je 0x4ca23f
push str.cookie_verification_failed
push 0x5cb
push ebx
push 2
push edi
call fcn.004c6a21
mov eax, dword [edi + 0x44]
xor ecx, ecx
add esp, 0x14
inc ecx
mov byte [eax + 0x1fc], cl
jmp 0x4ca290
push str.cookie_verification_passed
push 0x5d0
push ebx
push 2
push edi
call fcn.004c6a21
mov eax, dword [edi + 0x44]
mov byte [eax + 0x1fc], 0
jmp 0x4ca28a
cmp dword [esp + 0x28], 0
je 0x4ca277
push str.bad_client_hello_message
push 0x5db
push ebx
push 1
jmp 0x4c9eb3
push str.cookie_verification_skipped
push 0x5df
push ebx
push 2
push edi
call fcn.004c6a21
xor ecx, ecx
add esp, 0x14
inc ecx
mov edx, dword [esp + 0x24]
inc edx
mov dword [esp + 0x28], edx
movzx eax, byte [edx + esi + 1]
mov dword [esp + 0x24], eax
movzx eax, byte [edx + esi]
shl eax, 8
or dword [esp + 0x24], eax
mov eax, dword [esp + 0x24]
cmp eax, 2
jb 0x4ca9f3
add eax, 3
add eax, edx
cmp eax, ebp
ja 0x4ca9f3
mov eax, dword [esp + 0x24]
test cl, al
jne 0x4ca9f3
push eax
lea eax, [edx + 2]
mov ecx, edi
add eax, esi
push eax
push str.client_hello__ciphersuitelist
push 0x5f9
push ebx
push 3
pop edx
call fcn.004c6b7e
mov ecx, dword [esp + 0x38]
add esp, 0x14
add ecx, dword [esp + 0x28]
movzx edx, byte [ecx + esi + 2]
lea eax, [edx - 1]
cmp eax, 0xf
ja 0x4ca9e7
lea eax, [ecx + 3]
add eax, edx
mov dword [esp + 0x1c], eax
cmp eax, ebp
ja 0x4ca9e7
push edx
lea eax, [ecx + 3]
mov ecx, edi
add eax, esi
push eax
push str.client_hello__compression
push 0x60d
push ebx
push 3
pop edx
call fcn.004c6b7e
mov eax, dword [edi + 0x40]
xor edx, edx
xor ecx, ecx
add esp, 0x14
inc ecx
mov dword [eax + 0x14], edx
mov eax, dword [edi]
cmp byte [eax + 5], cl
jne 0x4ca353
mov eax, dword [edi + 0x40]
mov dword [eax + 0x14], edx
cmp ebp, dword [esp + 0x1c]
jbe 0x4ca3a3
mov edx, dword [esp + 0x1c]
lea eax, [edx + 2]
cmp ebp, eax
jae 0x4ca373
push str.bad_client_hello_message
push 0x61d
jmp 0x4ca1bf
movzx eax, byte [edx + esi + 1]
mov dword [esp + 0x20], eax
movzx eax, byte [edx + esi]
shl eax, 8
or dword [esp + 0x20], eax
mov eax, dword [esp + 0x20]
add eax, 2
add eax, edx
cmp ebp, eax
je 0x4ca3af
push str.bad_client_hello_message
push 0x628
jmp 0x4ca1bf
mov eax, edx
mov edx, dword [esp + 0x1c]
mov dword [esp + 0x20], eax
jmp 0x4ca3b3
mov eax, dword [esp + 0x20]
push eax
lea ebp, [edx + 2]
mov ecx, edi
add ebp, esi
push ebp
push str.client_hello_extensions
push 0x632
push ebx
push 3
pop edx
mov dword [esp + 0x30], ebp
call fcn.004c6b7e
mov edx, dword [esp + 0x34]
add esp, 0x14
test edx, edx
je 0x4ca66f
push 4
pop eax
cmp edx, eax
jb 0x4ca6ea
movzx ecx, byte [ebp]
movzx eax, byte [ebp + 1]
movzx ebp, byte [ebp + 2]
shl ecx, 8
or ecx, eax
shl ebp, 8
mov eax, dword [esp + 0x1c]
movzx eax, byte [eax + 3]
or ebp, eax
lea eax, [ebp + 4]
cmp eax, edx
ja 0x4ca6db
cmp ecx, 0x10
ja 0x4ca56c
je 0x4ca542
mov eax, ecx
sub eax, 0
je 0x4ca50c
sub eax, 1
je 0x4ca4e2
sub eax, 9
je 0x4ca4b8
sub eax, 1
je 0x4ca487
dec eax
sub eax, 1
jne 0x4ca588
push str.found_signature_algorithms_extension
push 0x664
push ebx
push 3
push edi
call fcn.004c6a21
mov edx, dword [esp + 0x30]
add esp, 0x14
mov ecx, edi
push ebp
lea edx, [edx + 4]
call fcn.004c92da
pop ecx
test eax, eax
jne 0x4caaa4
xor ecx, ecx
inc ecx
mov dword [esp + 0x18], ecx
jmp 0x4ca645
push 0x5a5f10
push 0x67a
push ebx
push 3
push edi
call fcn.004c6a21
mov eax, dword [edi + 0x44]
add esp, 0x14
mov edx, dword [esp + 0x1c]
mov ecx, edi
or byte [eax + 3], 1
push ebp
lea edx, [edx + 4]
call fcn.004c951d
jmp 0x4ca638
push str.found_supported_elliptic_curves_extension
push 0x672
push ebx
push 3
push edi
call fcn.004c6a21
mov edx, dword [esp + 0x30]
add esp, 0x14
mov ecx, edi
push ebp
lea edx, [edx + 4]
call fcn.004c9403
jmp 0x4ca638
push 0x5a5f38
push 0x690
push ebx
push 3
push edi
call fcn.004c6a21
mov edx, dword [esp + 0x30]
add esp, 0x14
mov ecx, edi
push ebp
lea edx, [edx + 4]
call fcn.004c95a7
jmp 0x4ca638
push str.found_ServerName_extension
push 0x64c
push ebx
push 3
push edi
call fcn.004c6a21
mov eax, dword [edi]
add esp, 0x14
cmp dword [eax + 0x30], 0
je 0x4ca641
mov edx, dword [esp + 0x1c]
mov ecx, edi
push ebp
lea edx, [edx + 4]
call fcn.004c9121
jmp 0x4ca638
push str.found_alpn_extension
push 0x6c2
push ebx
push 3
push edi
call fcn.004c6a21
mov edx, dword [esp + 0x30]
add esp, 0x14
mov ecx, edi
push ebp
lea edx, [edx + 4]
call fcn.004c980d
jmp 0x4ca638
mov eax, ecx
sub eax, 0x16
je 0x4ca61a
sub eax, 1
je 0x4ca5fa
sub eax, 0xc
je 0x4ca5d3
sub eax, 0xfede
je 0x4ca5a4
push ecx
push str.unknown_extension_found:__u__ignoring_
push 0x6d6
push ebx
push 3
push edi
call fcn.004c6a21
add esp, 0x18
jmp 0x4ca641
push str.found_renegotiation_extension
push 0x657
push ebx
push 3
push edi
call fcn.004c6a21
mov edx, dword [esp + 0x30]
add esp, 0x14
mov ecx, edi
mov dword [esp + 0x2c], 1
push ebp
lea edx, [edx + 4]
call fcn.004c924c
jmp 0x4ca638
push 0x5a5fa8
push 0x6b8
push ebx
push 3
push edi
call fcn.004c6a21
mov edx, dword [esp + 0x30]
add esp, 0x14
mov ecx, edi
push ebp
lea edx, [edx + 4]
call fcn.004c968e
jmp 0x4ca638
push 0x5a5f80
push 0x6ae
push ebx
push 3
push edi
call fcn.004c6a21
add esp, 0x14
mov ecx, edi
push ebp
call fcn.004c9642
jmp 0x4ca638
push 0x5a5f5c
push 0x6a4
push ebx
push 3
push edi
call fcn.004c6a21
add esp, 0x14
mov ecx, edi
push ebp
call fcn.004c95f0
pop ecx
test eax, eax
jne 0x4caaa4
mov ecx, dword [esp + 0x18]
mov edx, dword [esp + 0x20]
push 0xfffffffffffffffc
pop eax
sub eax, ebp
add edx, eax
mov eax, dword [esp + 0x1c]
mov dword [esp + 0x20], edx
lea eax, [eax + 4]
lea eax, [eax + ebp]
mov dword [esp + 0x1c], eax
je 0x4ca66b
mov ebp, eax
jmp 0x4ca3e2
test ecx, ecx
jne 0x4ca68b
push 2
pop edx
mov ecx, edi
call fcn.004b971b
mov ecx, dword [edi + 0x44]
neg eax
sbb eax, eax
and eax, 0xfffffffe
add eax, edx
mov dword [ecx + 0x24], eax
mov dword [ecx + 0x28], eax
mov ebp, dword [esp + 0x28]
xor ecx, ecx
add ebp, esi
mov eax, ecx
lea edx, [ebp + 3]
cmp byte [eax + ebp + 2], cl
jne 0x4ca6a3
cmp byte [edx], 0xff
je 0x4ca6f9
add eax, 2
add edx, 2
cmp eax, dword [esp + 0x24]
jb 0x4ca698
xor edx, edx
inc edx
mov ebp, dword [edi + 0x104]
cmp ebp, edx
je 0x4ca74f
mov eax, dword [edi]
cmp byte [eax + 7], 2
jne 0x4ca74f
mov ecx, 0x70e
mov esi, str.legacy_renegotiation__breaking_off_handshake
jmp 0x4ca861
push str.bad_client_hello_message
push 0x643
jmp 0x4caa0c
push str.bad_client_hello_message
push 0x639
jmp 0x4caa0c
push str.received_TLS_EMPTY_RENEGOTIATION_INFO
push 0x6f8
push ebx
push 3
push edi
call fcn.004c6a21
xor edx, edx
add esp, 0x14
inc edx
cmp dword [edi + 8], edx
jne 0x4ca742
push str.received_RENEGOTIATION_SCSV_during_renegotiation
push 0x6fd
push ebx
push edx
push edi
call fcn.004c6a21
add esp, 0x14
mov dl, 2
mov ecx, edi
push 0x28
call fcn.004c237b
pop ecx
mov eax, 0xffff9200
jmp 0x4caaa4
mov dword [edi + 0x104], edx
xor ecx, ecx
jmp 0x4ca6b2
cmp dword [edi + 8], edx
jne 0x4ca79a
cmp ebp, edx
jne 0x4ca76f
mov eax, dword [esp + 0x2c]
test eax, eax
jne 0x4ca792
mov ecx, 0x716
mov esi, str.renegotiation_info_extension_missing__secure_
jmp 0x4ca861
test ebp, ebp
jne 0x4ca78e
mov eax, dword [edi]
cmp byte [eax + 7], 0
jne 0x4ca84b
mov ecx, 0x71d
mov esi, str.legacy_renegotiation_not_allowed
jmp 0x4ca861
mov eax, dword [esp + 0x2c]
test ebp, ebp
je 0x4ca84f
mov eax, dword [edi]
mov dword [esp + 0x20], ecx
mov dword [esp + 0x2c], ecx
mov ebp, dword [eax + 0x10]
mov dword [esp + 0x30], ebp
cmp byte [eax + 0xf], dl
jne 0x4ca86d
mov eax, dword [esp + 0x28]
add eax, 2
mov dword [esp + 0x1c], ecx
add eax, esi
mov dword [esp + 0x28], eax
mov eax, ebp
mov esi, dword [eax]
mov ebp, ecx
test esi, esi
je 0x4ca81b
mov eax, dword [esp + 0x28]
movzx ecx, byte [eax]
movzx eax, byte [eax + 1]
shl ecx, 8
or ecx, eax
cmp ecx, esi
jne 0x4ca80d
lea eax, [esp + 0x2c]
mov dword [esp + 0x20], edx
push eax
mov edx, esi
mov ecx, edi
call fcn.004c9a98
pop ecx
test eax, eax
jne 0x4caaa4
mov esi, dword [esp + 0x2c]
test esi, esi
jne 0x4ca924
xor edx, edx
inc edx
mov eax, dword [esp + 0x30]
inc ebp
mov esi, dword [eax + ebp*4]
test esi, esi
jne 0x4ca7cf
xor ecx, ecx
mov ebp, dword [esp + 0x1c]
add dword [esp + 0x28], 2
add ebp, 2
mov dword [esp + 0x1c], ebp
cmp ebp, dword [esp + 0x24]
jb 0x4ca7c7
cmp dword [esp + 0x20], 0
je 0x4ca9d8
push str.got_ciphersuites_in_common__but_none_of_them_usable
push 0x75f
jmp 0x4ca721
mov eax, dword [esp + 0x2c]
cmp eax, edx
jne 0x4ca79a
mov ecx, 0x724
mov esi, str.renegotiation_info_extension_present__legacy_
push esi
push ecx
push ebx
mov eax, edi
push edx
push eax
jmp 0x4ca724
cmp dword [ebp], ecx
je 0x4ca9d8
mov eax, dword [esp + 0x28]
add eax, 2
mov dword [esp + 0x1c], ebp
add eax, esi
mov dword [esp + 0x20], ecx
mov esi, ecx
mov dword [esp + 0x38], eax
mov dword [esp + 0x28], esi
mov ebp, ecx
mov dword [esp + 0x18], eax
mov ecx, dword [esp + 0x1c]
mov ecx, dword [ecx]
mov dword [esp + 0x34], ecx
movzx ecx, byte [eax]
movzx eax, byte [eax + 1]
shl ecx, 8
or ecx, eax
mov eax, dword [esp + 0x34]
cmp ecx, eax
jne 0x4ca8df
lea ecx, [esp + 0x2c]
mov dword [esp + 0x20], edx
push ecx
mov edx, eax
mov ecx, edi
call fcn.004c9a98
pop ecx
test eax, eax
jne 0x4caaa4
mov esi, dword [esp + 0x2c]
test esi, esi
jne 0x4ca924
mov esi, dword [esp + 0x28]
xor edx, edx
inc edx
mov eax, dword [esp + 0x18]
add esi, 2
add eax, 2
mov dword [esp + 0x28], esi
mov dword [esp + 0x18], eax
cmp esi, dword [esp + 0x24]
jb 0x4ca897
mov eax, dword [esp + 0x1c]
xor ecx, ecx
add eax, 4
inc ebp
mov dword [esp + 0x1c], eax
cmp dword [eax], ecx
je 0x4ca831
mov esi, dword [esp + 0x20]
mov eax, dword [esp + 0x38]
mov dword [esp + 0x20], esi
mov esi, ecx
mov dword [esp + 0x28], ecx
jmp 0x4ca893
push dword [esi + 4]
push str.selected_ciphersuite:__s
push 0x76d
push ebx
push 2
push edi
call fcn.004c6a21
mov ecx, dword [edi + 0x40]
add esp, 0x18
mov eax, dword [esp + 0x30]
mov eax, dword [eax + ebp*4]
mov dword [ecx + 0x10], eax
mov eax, dword [edi + 0x44]
mov dword [eax + 0x10], esi
mov eax, dword [edi]
inc dword [edi + 4]
cmp byte [eax + 5], 1
jne 0x4ca962
mov ecx, edi
call fcn.004c017e
push 3
pop edx
cmp dword [edi + 0x14], edx
jne 0x4ca9bb
mov ecx, esi
call fcn.004c4f18
test eax, eax
je 0x4ca9a4
mov ecx, dword [edi + 0x44]
sub eax, 1
je 0x4ca98a
sub eax, edx
je 0x4ca985
xor eax, eax
jmp 0x4ca98d
mov eax, dword [ecx + 0x28]
jmp 0x4ca98d
mov eax, dword [ecx + 0x24]
mov ecx, eax
call fcn.004b9698
movzx eax, al
push eax
push str.client_hello_v3__signature_algorithm_ext:__d
push 0x785
jmp 0x4ca9b0
push 0
push str.no_hash_algorithm_for_signature_algorithm__u___should_not_happen
push 0x78a
push ebx
push edx
push edi
call fcn.004c6a21
add esp, 0x18
push str.__parse_client_hello
push 0x78f
push ebx
push 2
push edi
call fcn.004c6a21
add esp, 0x14
xor eax, eax
jmp 0x4caaa4
push str.got_no_ciphersuites_in_common
push 0x766
jmp 0x4ca721
push str.bad_client_hello_message
push 0x606
jmp 0x4caa0c
push str.bad_client_hello_message
push 0x5f2
jmp 0x4ca1bf
push str.bad_client_hello_message
push 0x59e
push ebx
push 1
push edi
call fcn.004c6a21
add esp, 0x14
mov dl, 2
mov ecx, edi
push 0x32
call fcn.004c237b
pop ecx
jmp 0x4c9fa2
movzx eax, byte [ecx]
push eax
push dword [esp + 0x34]
push dword [edi + 0x14]
push dword [edi + 0x10]
push str.client_only_supports_ssl_smaller_than_minimum___d:_d______d:_d_
push 0x581
push ebx
push 1
push edi
call fcn.004c6a21
add esp, 0x24
mov dl, 2
mov ecx, edi
push 0x46
call fcn.004c237b
pop ecx
mov eax, 0xffff9180
jmp 0x4caaa4
push str.bad_client_hello_message
push 0x51f
jmp 0x4c9eb1
push str.bad_client_hello_message
push 0x4b5
push ebx
push 1
push edi
call fcn.004c6a21
mov eax, 0xffff9180
jmp 0x4caaa1
push str.bad_client_hello_message
push 0x4a3
push ebx
push 1
push edi
call fcn.004c6a21
mov eax, 0xffff8900
add esp, 0x14
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x2c
ret