Function at 0x10126510
Capabilities:
Check os version

Disassembly:
push 0xffffffffffffffff
push 0x101a5360
mov eax, dword fs:[0]
push eax
sub esp, 0x1c
push ebx
push ebp
push esi
push edi
mov eax, dword [0x1026d48c]
xor eax, esp
push eax
lea eax, [esp + 0x30]
mov dword fs:[0], eax
mov ebx, ecx
mov dword [esp + 0x14], ebx
mov edi, dword [esp + 0x48]
push str.processServerKeyExchange
push edi
lea ecx, [esp + 0x20]
call fcn.10061630
mov esi, dword [esp + 0x40]
test esi, esi
mov dword [esp + 0x38], 0
je 0x10126917
mov ebp, dword [esp + 0x44]
cmp ebp, 3
jb 0x10126917
cmp dword [ebx + 0x3f4], 0
jne 0x101265b6
cmp byte [edi + 0x127], 0
je 0x10126591
mov eax, dword [edi]
mov edx, dword [eax + 0x18]
push str.Need_to_get_SERVER_HELLO_from_incoming_queue..
mov ecx, edi
call edx
push edi
mov ecx, ebx
call fcn.10123a80
test eax, eax
mov dword [ebx + 0x3f4], eax
jne 0x101265b6
mov eax, dword [edi]
mov edx, dword [eax + 0x14]
push str.No_server_hello_received_yet.
mov ecx, edi
call edx
jmp 0x10126925
mov ecx, ebx
call fcn.1011e7b0
test al, al
je 0x10126925
mov eax, dword [ebx + 0x80]
push eax
mov ecx, ebx
call fcn.1011f780
mov eax, dword [ebx + 0x54]
cmp eax, 8
je 0x101268f6
cmp eax, 0xa
je 0x101268f6
cmp eax, 3
je 0x101265fc
cmp eax, 5
je 0x101265fc
push str.Unexpected_ServerKeyExchange_message.
jmp 0x1012691c
call fcn.10124540
mov ebx, eax
test ebx, ebx
mov dword [esp + 0x48], ebx
je 0x10126925
lea ecx, [esp + 0x24]
call fcn.100490e0
mov dword [esp + 0x2c], ebx
xor ebx, ebx
cmp byte [edi + 0x127], 0
mov bh, byte [esi]
mov byte [esp + 0x38], 1
mov dword [esp + 0x44], esi
mov bl, byte [esi + 1]
je 0x10126642
push ebx
push str.dh_p_len
mov ecx, edi
call fcn.100612a0
sub ebp, 2
add esi, 2
cmp ebp, ebx
jae 0x1012666d
mov edx, dword [edi]
mov eax, dword [edx + 0x14]
push str.ServerKeyExchange_message_too_short
mov ecx, edi
call eax
lea ecx, [esp + 0x24]
mov byte [esp + 0x38], 0
call fcn.10049340
jmp 0x10126925
mov ecx, dword [esp + 0x48]
push ebx
add ecx, 0x50
push esi
call fcn.10019380
test al, al
je 0x1012665a
cmp byte [edi + 0x127], 0
je 0x101266ae
mov ecx, dword [esp + 0x48]
add ecx, 0x50
call fcn.100f6330
mov ecx, dword [esp + 0x48]
push eax
add ecx, 0x50
call fcn.1008bea0
push eax
push str.dh_p
mov ecx, edi
call fcn.100606d0
sub ebp, ebx
add esi, ebx
cmp ebp, 2
jb 0x1012664c
xor ebx, ebx
cmp byte [edi + 0x127], 0
mov bh, byte [esi]
mov bl, byte [esi + 1]
je 0x101266d4
push ebx
push str.dh_g_len
mov ecx, edi
call fcn.100612a0
sub ebp, 2
add esi, 2
cmp ebp, ebx
jb 0x1012664c
mov ecx, dword [esp + 0x48]
push ebx
add ecx, 0x6c
push esi
mov dword [esp + 0x48], ecx
call fcn.10019380
test al, al
je 0x1012665a
cmp byte [edi + 0x127], 0
je 0x10126725
mov ecx, dword [esp + 0x40]
call fcn.100f6330
mov ecx, dword [esp + 0x40]
push eax
call fcn.1008bea0
push eax
push str.dh_g
mov ecx, edi
call fcn.100606d0
sub ebp, ebx
add esi, ebx
cmp ebp, 2
jb 0x1012664c
xor ebx, ebx
cmp byte [edi + 0x127], 0
mov bh, byte [esi]
mov bl, byte [esi + 1]
je 0x1012674f
push ebx
push str.dh_Ys_len
mov ecx, edi
call fcn.100612a0
sub ebp, 2
add esi, 2
cmp ebp, ebx
jb 0x1012664c
mov ecx, dword [esp + 0x48]
push ebx
add ecx, 0x88
push esi
call fcn.10019380
test al, al
je 0x1012665a
cmp byte [edi + 0x127], 0
je 0x101267ab
mov ecx, dword [esp + 0x48]
add ecx, 0x88
call fcn.100f6330
mov ecx, dword [esp + 0x48]
push eax
add ecx, 0x88
call fcn.1008bea0
push eax
push str.dh_Ys
mov ecx, edi
call fcn.100606d0
mov eax, dword [esp + 0x44]
add esi, ebx
mov ecx, esi
sub ecx, eax
push ecx
sub ebp, ebx
mov ebx, dword [esp + 0x4c]
push eax
lea ecx, [ebx + 0x34]
call fcn.10019380
test al, al
je 0x1012665a
mov eax, dword [esp + 0x14]
mov ecx, 3
cmp dword [eax + 0x44], ecx
jne 0x1012682d
cmp dword [eax + 0x48], ecx
jne 0x1012682d
cmp ebp, 2
jb 0x1012664c
movzx ecx, byte [esi]
mov dword [ebx + 0x2c], ecx
movzx edx, byte [esi + 1]
mov dword [ebx + 0x30], edx
cmp byte [edi + 0x127], 0
je 0x10126827
mov eax, ecx
push eax
push str.selectHashAlg
mov ecx, edi
call fcn.100612a0
cmp byte [edi + 0x127], 0
je 0x10126827
mov ecx, dword [ebx + 0x30]
push ecx
push str.selectSignAlg
mov ecx, edi
call fcn.100612a0
add esi, 2
sub ebp, 2
xor ebx, ebx
cmp byte [edi + 0x127], 0
mov bh, byte [esi]
mov bl, byte [esi + 1]
je 0x1012684a
push ebx
push str.signatureLen
mov ecx, edi
call fcn.100612a0
cmp ebp, 2
jb 0x1012664c
sub ebp, 2
add esi, 2
cmp ebx, ebp
je 0x1012688b
mov edx, dword [edi]
mov eax, dword [edx + 0x14]
push str.Invalid_signature_length.
mov ecx, edi
call eax
push ebp
push str.msgLen
mov ecx, edi
call fcn.100612a0
lea ecx, [esp + 0x24]
mov byte [esp + 0x38], 0
call fcn.10049340
jmp 0x10126925
push ebp
push esi
mov esi, dword [esp + 0x50]
lea ecx, [esi + 0xa4]
call fcn.10019380
test al, al
je 0x1012665a
cmp byte [edi + 0x127], 0
mov dword [esp + 0x2c], 0
je 0x101268c3
mov edx, dword [edi]
mov eax, dword [edx + 0x18]
push str.Queueing_ServerKeyExchange_message.
mov ecx, edi
call eax
mov ecx, dword [esp + 0x14]
push esi
add ecx, 0x450
call fcn.10032f00
lea ecx, [esp + 0x24]
mov byte [esp + 0x38], 0
call fcn.10049340
lea ecx, [esp + 0x18]
mov dword [esp + 0x38], 0xffffffff
call fcn.100616a0
mov al, 1
jmp 0x10126938
push edi
push ebp
push esi
mov ecx, ebx
call fcn.10126140
lea ecx, [esp + 0x18]
mov bl, al
mov dword [esp + 0x38], 0xffffffff
call fcn.100616a0
mov al, bl
jmp 0x10126938
push str.Invalid_ServerKeyExchange_message
mov edx, dword [edi]
mov eax, dword [edx + 0x14]
mov ecx, edi
call eax
lea ecx, [esp + 0x18]
mov dword [esp + 0x38], 0xffffffff
call fcn.100616a0
xor al, al
mov ecx, dword [esp + 0x30]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x28
ret 0xc