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

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x5fdad0
mov eax, dword fs:[0]
push eax
sub esp, 0x3c
mov eax, dword [0x6baac0]
xor eax, ebp
mov dword [ebp - 0x10], eax
push ebx
push esi
push edi
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov dword [ebp - 0x30], ecx
mov eax, dword [ebp + 0x10]
lea ecx, [ebp - 0x1c]
mov edi, dword [ebp + 0x18]
xorps xmm0, xmm0
mov ebx, dword [ebp + 8]
push str.processServerHello
mov dword [ebp - 0x3c], eax
mov eax, dword [ebp + 0x14]
push edi
mov dword [ebp - 0x40], eax
movq qword [ebp - 0x1c], xmm0
mov dword [ebp - 0x14], 0
call fcn.00430cc0
mov dword [ebp - 4], 0
test ebx, ebx
je 0x51b33d
mov esi, dword [ebp + 0xc]
test esi, esi
je 0x51b33d
call fcn.00515ad0
mov dword [ebp - 0x38], eax
test eax, eax
je 0x51b35a
xorps xmm0, xmm0
mov dword [ebp - 0x20], 0
lea ecx, [ebp - 0x28]
movq qword [ebp - 0x28], xmm0
call fcn.00411220
mov ecx, dword [ebp - 0x38]
mov dword [ebp - 0x20], ecx
mov byte [ebp - 4], 1
mov dword [ecx + 0x28], 2
movzx eax, byte [ebx]
mov dword [ecx + 0x2c], eax
movzx eax, byte [ebx + 1]
mov dword [ecx + 0x30], eax
mov ecx, dword [ebp - 0x30]
call fcn.00512bb0
test al, al
je 0x51afab
cmp byte [edi + 0xae], 0
mov ecx, dword [ebp - 0x30]
jne 0x51af7f
cmp byte [edi + 0xad], 0
je 0x51af79
mov eax, dword [ecx + 0x78]
cmp byte [eax + 0xf12], 0
je 0x51af7f
mov byte [ebp - 0x31], 0
jmp 0x51af83
mov byte [ebp - 0x31], 1
sub esi, 2
add ebx, 2
mov dword [ebp + 0xc], esi
cmp esi, 0x20
jae 0x51afba
push edi
push dword [ebp - 0x3c]
push 0x2f
push dword [ebp - 0x40]
call fcn.0051e910
mov eax, dword [edi]
mov ecx, edi
push str.ServerHello_too_short__1_.
call dword [eax + 0x14]
lea ecx, [ebp - 0x28]
xor bl, bl
call fcn.004112f0
jmp 0x51b35c
mov esi, dword [ebp - 0x38]
lea ecx, [esi + 0x34]
call fcn.004132b0
push 0x20
push ebx
lea ecx, [esi + 0x34]
call fcn.00412010
mov esi, dword [ebp + 0xc]
add ebx, 0x20
sub esi, 0x20
cmp esi, 1
jae 0x51b00a
mov ecx, dword [ebp - 0x30]
push edi
push dword [ebp - 0x3c]
push 0x2f
push dword [ebp - 0x40]
call fcn.0051e910
mov eax, dword [edi]
mov ecx, edi
push str.ServerHello_too_short__2_.
call dword [eax + 0x14]
lea ecx, [ebp - 0x28]
xor bl, bl
call fcn.004112f0
jmp 0x51b35c
cmp byte [edi + 0xae], 0
mov al, byte [ebx]
mov byte [ebp - 0x29], al
je 0x51b028
movzx eax, al
mov ecx, edi
push eax
push str.SessionIdLen
call fcn.00431470
mov eax, dword [ebp - 0x38]
inc ebx
add eax, 0x50
dec esi
mov ecx, eax
mov dword [ebp - 0x44], eax
call fcn.004132b0
mov al, byte [ebp - 0x29]
test al, al
je 0x51b08b
movzx eax, al
mov dword [ebp - 0x48], eax
cmp esi, eax
jae 0x51b077
mov ecx, dword [ebp - 0x30]
push edi
push dword [ebp - 0x3c]
push 0x2f
push dword [ebp - 0x40]
call fcn.0051e910
mov eax, dword [edi]
mov ecx, edi
push str.ServerHello_too_short__3_.
call dword [eax + 0x14]
lea ecx, [ebp - 0x28]
xor bl, bl
call fcn.004112f0
jmp 0x51b35c
mov ecx, dword [ebp - 0x44]
push eax
push ebx
call fcn.00412010
add ebx, dword [ebp - 0x48]
mov ecx, esi
sub ecx, dword [ebp - 0x48]
jmp 0x51b08d
mov ecx, esi
cmp ecx, 3
jae 0x51b0be
mov ecx, dword [ebp - 0x30]
push edi
push dword [ebp - 0x3c]
push 0x2f
push dword [ebp - 0x40]
call fcn.0051e910
mov eax, dword [edi]
mov ecx, edi
push str.ServerHello_too_short__4_.
call dword [eax + 0x14]
lea ecx, [ebp - 0x28]
xor bl, bl
call fcn.004112f0
jmp 0x51b35c
mov edx, dword [ebp - 0x38]
sub ecx, 3
mov al, byte [ebx]
lea esi, [edx + 0x6c]
mov byte [esi], al
mov al, byte [ebx + 1]
mov byte [edx + 0x6d], al
mov al, byte [ebx + 2]
add ebx, 3
mov byte [edx + 0x6e], al
mov dword [ebp + 0xc], ecx
cmp ecx, 2
jbe 0x51b21d
movzx eax, byte [ebx]
movzx esi, byte [ebx + 1]
shl eax, 8
or esi, eax
cmp byte [edi + 0xae], 0
mov dword [ebp - 0x44], esi
je 0x51b10e
push esi
push str.serverHelloExtensionsLen
mov ecx, edi
call fcn.00431470
mov ecx, dword [ebp + 0xc]
sub ecx, 2
add ebx, 2
cmp esi, ecx
jbe 0x51b144
mov ecx, dword [ebp - 0x30]
push edi
push dword [ebp - 0x3c]
push 0x2f
push dword [ebp - 0x40]
call fcn.0051e910
mov eax, dword [edi]
mov ecx, edi
push str.ServerHello_extensions_length_too_long.
call dword [eax + 0x14]
lea ecx, [ebp - 0x28]
xor bl, bl
call fcn.004112f0
jmp 0x51b35c
cmp esi, 4
jae 0x51b175
mov ecx, dword [ebp - 0x30]
push edi
push dword [ebp - 0x3c]
push 0x2f
push dword [ebp - 0x40]
call fcn.0051e910
mov eax, dword [edi]
mov ecx, edi
push str.ServerHello_extensions_length_too_short.
call dword [eax + 0x14]
lea ecx, [ebp - 0x28]
xor bl, bl
call fcn.004112f0
jmp 0x51b35c
movzx eax, byte [ebx]
sub ecx, 4
movzx edx, byte [ebx + 1]
movzx esi, byte [ebx + 3]
shl eax, 8
or edx, eax
mov dword [ebp + 0xc], ecx
movzx eax, byte [ebx + 2]
add ebx, 4
shl eax, 8
or esi, eax
mov dword [ebp - 0x48], edx
mov eax, dword [ebp - 0x44]
sub eax, 4
cmp byte [edi + 0xae], 0
mov dword [ebp - 0x44], eax
je 0x51b1c0
mov ecx, dword [ebp - 0x30]
push edi
push esi
push edx
call fcn.00518690
mov ecx, dword [ebp + 0xc]
mov edx, dword [ebp - 0x48]
mov eax, dword [ebp - 0x44]
cmp esi, eax
ja 0x51b26d
cmp edx, 5
jne 0x51b1d6
mov edx, dword [ebp - 0x38]
mov byte [edx + 0x6f], 1
jmp 0x51b208
cmp edx, 0xff01
jne 0x51b25c
mov edx, dword [ebp - 0x38]
mov byte [edx + 0x70], 1
test esi, esi
je 0x51b208
movzx eax, byte [ebx]
lea ecx, [esi - 1]
cmp eax, ecx
je 0x51b24d
mov eax, dword [edi]
mov ecx, edi
push str.Error_in_renegotiate_extension_data.
call dword [eax + 0x14]
mov ecx, dword [ebp + 0xc]
mov eax, dword [ebp - 0x44]
mov edx, dword [ebp - 0x38]
sub eax, esi
sub ecx, esi
add ebx, esi
mov dword [ebp - 0x44], eax
cmp eax, 4
jae 0x51b175
lea esi, [edx + 0x6c]
push edi
test ecx, ecx
je 0x51b299
push dword [ebp - 0x3c]
mov ecx, dword [ebp - 0x30]
push 0x2f
push dword [ebp - 0x40]
call fcn.0051e910
mov eax, dword [edi]
mov ecx, edi
push str.ServerHello_too_long.
call dword [eax + 0x14]
lea ecx, [ebp - 0x28]
xor bl, bl
call fcn.004112f0
jmp 0x51b35c
push ecx
lea eax, [ebx + 1]
push eax
lea ecx, [edx + 0x74]
call fcn.00412010
jmp 0x51b1ff
cmp edx, 0xd
jne 0x51b205
mov edx, dword [ebp - 0x38]
mov byte [edx + 0x90], 1
jmp 0x51b208
mov ecx, dword [ebp - 0x30]
push edi
push dword [ebp - 0x3c]
push 0x2f
push dword [ebp - 0x40]
call fcn.0051e910
mov eax, dword [edi]
mov ecx, edi
push str.Specific_ServerHello_extension_length_too_long.
call dword [eax + 0x14]
lea ecx, [ebp - 0x28]
xor bl, bl
call fcn.004112f0
jmp 0x51b35c
mov ebx, dword [ebp - 0x30]
mov ecx, ebx
mov eax, dword [edx + 0x2c]
push esi
mov dword [ebx + 0x3c], eax
mov eax, dword [edx + 0x30]
mov dword [ebx + 0x40], eax
call fcn.0051fab0
cmp byte [ebp - 0x31], 0
mov byte [ebp - 0x29], al
je 0x51b2f1
mov esi, dword [edi]
mov ecx, ebx
call fcn.00517780
push eax
push str.negotiatedTlsVersion
mov ecx, edi
call dword [esi + 0x2c]
push dword [ebx + 0x48]
mov eax, dword [edi]
mov ecx, edi
push str.negotiatedCipherSuite
call dword [eax + 0x2c]
mov eax, dword [ebx + 0x78]
mov ecx, edi
push dword [eax + 0xf0c]
push str.minAcceptableRsaKeySize
call fcn.00431470
cmp byte [edi + 0xae], 0
je 0x51b306
mov eax, dword [edi]
mov ecx, edi
push str.Queueing_ServerHello_message.
call dword [eax + 0x18]
push dword [ebp - 0x38]
lea ecx, [ebx + 0x28c]
mov dword [ebp - 0x20], 0
call fcn.004411e0
cmp byte [edi + 0xae], 0
je 0x51b330
mov eax, dword [edi]
mov ecx, edi
push str.ServerHello_is_OK.
call dword [eax + 0x18]
mov bl, byte [ebp - 0x29]
lea ecx, [ebp - 0x28]
call fcn.004112f0
jmp 0x51b35c
mov ecx, dword [ebp - 0x30]
push edi
push dword [ebp - 0x3c]
push 0x2f
push dword [ebp - 0x40]
call fcn.0051e910
mov eax, dword [edi]
mov ecx, edi
push str.Zero_length_ServerHello
call dword [eax + 0x14]
xor bl, bl
lea ecx, [ebp - 0x1c]
call fcn.00430db0
mov al, bl
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 0x10]
xor ecx, ebp
call fcn.005ebe04
mov esp, ebp
pop ebp
ret 0x14