Function at 0x51bcb0
Capabilities:
Access peb ldr_data
Check os version
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x5fdbab
mov eax, dword fs:[0]
push eax
sub esp, 0x160
mov eax, dword [0x6baac0]
xor eax, ebp
mov dword [ebp - 0x10], eax
push esi
push edi
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov esi, ecx
mov dword [ebp - 0x154], esi
mov eax, dword [ebp + 8]
lea ecx, [ebp - 0x124]
mov edi, dword [ebp + 0x18]
xorps xmm0, xmm0
mov dword [ebp - 0x14c], eax
mov eax, dword [ebp + 0xc]
mov dword [ebp - 0x148], eax
mov eax, dword [ebp + 0x14]
mov dword [ebp - 0x144], eax
mov eax, dword [ebp + 0x1c]
mov dword [ebp - 0x140], eax
movzx eax, byte [edi + 0xae]
push eax
push str.readTlsRecord
push edi
mov dword [ebp - 0x16c], edi
movq qword [ebp - 0x124], xmm0
mov dword [ebp - 0x11c], 0
call fcn.00430cf0
mov ecx, dword [ebp - 0x140]
lea eax, [ecx + 4]
mov dword [ebp - 4], 0
mov dword [ebp - 0x168], eax
mov dword [eax], 0
mov dword [ecx + 8], 0
mov dword [ecx + 0xc], 0
mov byte [ecx + 0x10], 0
add ecx, 0x30
call fcn.004132b0
mov ecx, dword [ebp - 0x140]
lea ecx, [ecx + 0x14]
call fcn.004132b0
mov ecx, dword [ebp - 0x140]
lea ecx, [ecx + 0x4c]
call fcn.004132b0
add esi, 0x78
mov dword [ebp - 0x13c], 0
mov ecx, esi
mov dword [ebp - 0x150], esi
call fcn.004132b0
mov ecx, dword [ebp - 0x148]
lea eax, [ebp - 0x13c]
push eax
push edi
push dword [ebp - 0x144]
push dword [ebp + 0x10]
push esi
push 5
call fcn.00527950
mov byte [ebp - 0x113], al
test al, al
je 0x51cd57
mov ecx, esi
call fcn.00401c90
cmp eax, 5
jne 0x51cd57
mov ecx, esi
call fcn.00414910
mov esi, eax
mov al, byte [esi]
test al, al
jns 0x51c3c3
cmp byte [esi + 2], 1
jne 0x51c3c3
mov edx, dword [edi]
mov ecx, edi
push str.Received_SSL_2.0_ClientHello.
call dword [edx + 0x18]
cmp byte [esi + 2], 1
jne 0x51be4b
mov eax, dword [edi]
mov ecx, edi
push str.Cannot_accept_SSL_2.0_connections.
call dword [eax + 0x14]
mov esi, dword [ebp - 0x144]
mov ecx, dword [ebp - 0x14c]
push edi
push dword [ebp - 0x148]
push 0x47
push esi
call fcn.0051e910
mov dword [esi + 0x24], 0x7d
jmp 0x51cdcb
movzx ecx, byte [esi]
movzx eax, byte [esi + 1]
and ecx, 0x7f
shl ecx, 8
or ecx, eax
cmp byte [edi + 0xae], 0
mov dword [ebp - 0x18], ecx
je 0x51be76
push ecx
push str.recLen
mov ecx, edi
call fcn.00431470
mov ecx, dword [ebp - 0x18]
cmp byte [esi], 0
mov dword [ebp - 0x118], 2
jl 0x51bed3
cmp byte [edi + 0xae], 0
mov al, byte [esi + 3]
mov byte [ebp - 0x128], al
mov al, byte [esi + 4]
mov byte [ebp - 0x127], al
movzx eax, byte [esi + 2]
lea esi, [ecx - 2]
mov dword [ebp - 0x15c], eax
mov dword [ebp - 0x158], esi
je 0x51bf23
mov eax, dword [edi]
mov ecx, edi
push str.3_byte_record_header...
call dword [eax + 0x18]
push dword [ebp - 0x15c]
mov ecx, edi
push str.paddingLen
call fcn.00431470
jmp 0x51bf16
cmp byte [edi + 0xae], 0
mov al, byte [esi + 2]
mov byte [ebp - 0x128], al
mov al, byte [esi + 3]
mov byte [ebp - 0x127], al
mov al, byte [esi + 4]
lea esi, [ecx - 3]
mov byte [ebp - 0x126], al
mov dword [ebp - 0x158], esi
mov dword [ebp - 0x118], 3
je 0x51bf23
mov eax, dword [edi]
mov ecx, edi
push str.2_byte_record_header...
call dword [eax + 0x18]
push esi
push str.nToRead
mov ecx, edi
call fcn.00431470
mov esi, dword [ebp - 0x150]
mov ecx, esi
call fcn.004132b0
push dword [ebp - 0x118]
lea eax, [ebp - 0x128]
mov ecx, esi
push eax
call fcn.00412010
mov ecx, dword [ebp - 0x148]
lea eax, [ebp - 0x13c]
push eax
mov eax, dword [ebp + 0x10]
push edi
push dword [ebp - 0x144]
push eax
push esi
push dword [ebp - 0x158]
call fcn.00527950
mov byte [ebp - 0x113], al
test al, al
je 0x51c382
mov ecx, esi
call fcn.00401c90
cmp eax, dword [ebp - 0x18]
jne 0x51c382
mov ecx, esi
call fcn.00414910
mov ecx, dword [ebp - 0x14c]
mov dword [ebp - 0x160], eax
add ecx, 0x1d0
mov eax, dword [ebp - 0x140]
push esi
mov byte [eax + 0x68], 1
call fcn.00411fb0
cmp byte [edi + 0xae], 0
je 0x51bfd4
mov ecx, esi
call fcn.00401c90
push eax
mov ecx, esi
call fcn.00414910
push eax
push str.fullRecord
mov ecx, edi
call fcn.004312f0
mov eax, dword [ebp - 0x168]
mov ecx, dword [ebp - 0x160]
mov edx, dword [ebp - 0x140]
mov dword [eax], 0x16
movzx eax, byte [ecx + 1]
mov dword [edx + 8], eax
movzx eax, byte [ecx + 2]
mov dword [edx + 0xc], eax
call fcn.005156c0
mov esi, eax
mov dword [ebp - 0x164], esi
test esi, esi
je 0x51cdcb
xorps xmm0, xmm0
mov dword [ebp - 0x28], 0
lea ecx, [ebp - 0x30]
movq qword [ebp - 0x30], xmm0
call fcn.00411220
mov ecx, dword [ebp - 0x140]
mov dword [ebp - 0x28], esi
mov byte [ebp - 4], 1
mov eax, dword [ecx + 8]
mov dword [esi + 0x2c], eax
mov eax, dword [ecx + 0xc]
mov ecx, dword [ebp - 0x160]
add ecx, 3
mov dword [esi + 0x30], eax
mov dword [ebp - 0x160], ecx
movzx edx, byte [ecx]
movzx eax, byte [ecx + 1]
shl edx, 8
or edx, eax
movzx eax, byte [ecx + 2]
shl eax, 8
mov dword [ebp - 0x158], eax
movzx eax, byte [ecx + 3]
or dword [ebp - 0x158], eax
movzx eax, byte [ecx + 4]
shl eax, 8
mov dword [ebp - 0x118], eax
movzx eax, byte [ecx + 5]
or dword [ebp - 0x118], eax
cmp byte [edi + 0xae], 0
mov dword [ebp - 0x18], edx
je 0x51c0c8
push edx
push str.cipherListLen
mov ecx, edi
call fcn.00431470
push dword [ebp - 0x158]
mov ecx, edi
push str.sessionIdLen
call fcn.00431470
push dword [ebp - 0x118]
mov ecx, edi
push str.challengeLen
call fcn.00431470
mov edx, dword [ebp - 0x18]
lea eax, [edx - 3]
cmp eax, 0xbd
ja 0x51c378
mov ecx, dword [ebp - 0x18]
mov eax, 0xaaaaaaab
mul edx
shr edx, 1
mov dword [ebp - 0x150], edx
lea eax, [edx + edx*2]
sub ecx, eax
jne 0x51c378
cmp dword [ebp - 0x158], 0x20
jbe 0x51c12f
push str.Invalid_session_ID_length
mov eax, dword [edi]
mov ecx, edi
call dword [eax + 0x14]
mov ecx, dword [ebp - 0x14c]
push edi
push dword [ebp - 0x148]
push 0xa
push dword [ebp - 0x144]
call fcn.0051e910
lea ecx, [ebp - 0x30]
call fcn.004112f0
jmp 0x51cdcb
mov eax, dword [ebp - 0x118]
add eax, 0xfffffff8
cmp eax, 0x18
ja 0x51c36e
mov eax, dword [ebp - 0x160]
add eax, 6
mov dword [ebp - 0x160], eax
test edx, edx
je 0x51c2cc
inc eax
mov dword [ebp - 0x15c], eax
nop
movzx esi, byte [eax - 1]
movzx ecx, byte [eax + 1]
movzx eax, byte [eax]
shl esi, 8
or esi, eax
mov dword [ebp - 0x20], ecx
cmp byte [edi + 0xae], 0
je 0x51c19f
push ecx
push str.cipherKind
mov ecx, edi
call fcn.00431470
push esi
push str.key_len
mov ecx, edi
call fcn.00431470
mov ecx, dword [ebp - 0x20]
mov edx, dword [ebp - 0x150]
mov word [ebp - 0x114], 0x400
mov word [ebp - 0x12c], 0x500
mov word [ebp - 0x130], 0xa00
mov word [ebp - 0x134], 0x2f00
mov word [ebp - 0x138], 0x3500
test esi, esi
jne 0x51c2a2
cmp ecx, 4
jne 0x51c1fb
mov esi, dword [ebp - 0x164]
lea eax, [ebp - 0x114]
push 2
push eax
lea ecx, [esi + 0x6c]
call fcn.00412010
mov edx, dword [ebp - 0x150]
jmp 0x51c2a8
test esi, esi
jne 0x51c2a2
cmp ecx, 5
jne 0x51c22a
mov esi, dword [ebp - 0x164]
lea eax, [ebp - 0x12c]
push 2
push eax
lea ecx, [esi + 0x6c]
call fcn.00412010
mov edx, dword [ebp - 0x150]
jmp 0x51c2a8
test esi, esi
jne 0x51c2a2
cmp ecx, 0xa
jne 0x51c252
mov esi, dword [ebp - 0x164]
lea eax, [ebp - 0x130]
push 2
push eax
lea ecx, [esi + 0x6c]
call fcn.00412010
mov edx, dword [ebp - 0x150]
jmp 0x51c2a8
test esi, esi
jne 0x51c2a2
cmp ecx, 0x2f
jne 0x51c27a
mov esi, dword [ebp - 0x164]
lea eax, [ebp - 0x134]
push 2
push eax
lea ecx, [esi + 0x6c]
call fcn.00412010
mov edx, dword [ebp - 0x150]
jmp 0x51c2a8
test esi, esi
jne 0x51c2a2
mov esi, dword [ebp - 0x164]
cmp ecx, 0x35
jne 0x51c2a8
push 2
lea eax, [ebp - 0x138]
push eax
lea ecx, [esi + 0x6c]
call fcn.00412010
mov edx, dword [ebp - 0x150]
jmp 0x51c2a8
mov esi, dword [ebp - 0x164]
mov eax, dword [ebp - 0x15c]
add eax, 3
sub edx, 1
mov dword [ebp - 0x15c], eax
mov dword [ebp - 0x150], edx
jne 0x51c160
mov eax, dword [ebp - 0x160]
add eax, dword [ebp - 0x18]
lea ecx, [esi + 0x50]
push dword [ebp - 0x158]
mov dword [ebp - 0x160], eax
push eax
call fcn.00412010
mov eax, dword [ebp - 0x160]
lea ecx, [esi + 0x34]
push dword [ebp - 0x118]
add eax, dword [ebp - 0x158]
push eax
call fcn.00412010
push 0
lea ecx, [esi + 0x88]
call fcn.00412270
xorps xmm0, xmm0
mov dword [ebp - 0x34], 0
lea ecx, [ebp - 0x4c]
movq qword [ebp - 0x3c], xmm0
movups xmmword [ebp - 0x4c], xmm0
call fcn.004118f0
mov ecx, dword [ebp - 0x14c]
mov eax, dword [ebp - 0x140]
push edi
add eax, 0x14
mov byte [ebp - 4], 2
push eax
movzx eax, byte [ecx + 0x7e]
push eax
lea eax, [ecx + 0xf4]
mov ecx, esi
push eax
lea eax, [ebp - 0x4c]
push eax
push 0
call fcn.00511270
lea ecx, [ebp - 0x4c]
call fcn.00411b10
lea ecx, [ebp - 0x30]
mov byte [ebp - 4], 0
call fcn.004112f0
jmp 0x51c54c
push str.Invalid_challenge_length
jmp 0x51c101
push str.Invalid_cipher_list_length
jmp 0x51c101
mov eax, dword [edi]
mov ecx, edi
push str.Failed_to_read_TLS_record__1_
call dword [eax + 0x14]
movzx eax, byte [ebp - 0x113]
mov ecx, edi
push eax
push 0x604328
call fcn.00431470
push dword [ebp - 0x18]
mov ecx, edi
push str.recLen
call fcn.00431470
mov ecx, esi
call fcn.00401c90
push eax
push str.dbSize
jmp 0x51cdc4
mov ecx, dword [ebp - 0x140]
movzx eax, al
mov dword [ecx + 4], eax
movzx eax, byte [esi + 1]
mov dword [ecx + 8], eax
movzx edx, byte [esi + 2]
mov dword [ecx + 0xc], edx
movzx ecx, byte [esi + 3]
and ecx, 0x7f
mov dword [ebp - 0x20], eax
movzx eax, byte [esi + 4]
shl ecx, 8
or ecx, eax
cmp byte [edi + 0xae], 0
mov dword [ebp - 0x118], ecx
je 0x51c4f7
cmp dword [ebp - 0x20], 3
jne 0x51c414
test edx, edx
jne 0x51c414
mov esi, str.SSL_3.0
jmp 0x51c46d
mov esi, dword [ebp - 0x140]
mov eax, dword [esi + 8]
lea ecx, [esi + 8]
cmp eax, 3
jne 0x51c452
cmp edx, 1
jne 0x51c431
mov esi, str.TLS_1.0
jmp 0x51c46d
cmp eax, 3
jne 0x51c452
cmp edx, 2
jne 0x51c442
mov esi, str.TLS_1.1
jmp 0x51c46d
cmp eax, 3
jne 0x51c452
cmp edx, eax
jne 0x51c452
mov esi, str.TLS_1.2
jmp 0x51c46d
lea eax, [esi + 0xc]
push eax
push ecx
push str.v_d._d
lea eax, [ebp - 0x50]
push 0x20
push eax
call fcn.0042fc50
add esp, 0x14
lea esi, [ebp - 0x50]
mov ecx, dword [ebp - 0x168]
mov eax, dword [ecx]
cmp eax, 0x14
jne 0x51c481
mov eax, str.ChangeCipherSpec
jmp 0x51c4c2
cmp eax, 0x15
jne 0x51c48d
mov eax, str.Alert
jmp 0x51c4c2
cmp eax, 0x16
jne 0x51c499
mov eax, str.Handshake
jmp 0x51c4c2
cmp eax, 0x17
jne 0x51c4a5
mov eax, str.Application
jmp 0x51c4c2
push ecx
push str.ct_d
lea eax, [ebp - 0x70]
push 0x20
push eax
call fcn.0042fc10
mov ecx, dword [ebp - 0x168]
lea eax, [ebp - 0x70]
add esp, 0x10
cmp dword [ecx], 0x17
je 0x51c4f7
lea ecx, [ebp - 0x118]
push ecx
push eax
push esi
push str._s___s__sz_d
lea eax, [ebp - 0x110]
push 0x80
push eax
call fcn.0042fca0
mov eax, dword [edi]
lea ecx, [ebp - 0x110]
add esp, 0x18
push ecx
mov ecx, edi
call dword [eax + 0x18]
mov esi, dword [ebp - 0x140]
add esi, 0x14
mov ecx, esi
call fcn.004132b0
mov ecx, dword [ebp - 0x148]
lea eax, [ebp - 0x13c]
push eax
mov eax, dword [ebp + 0x10]
push edi
push dword [ebp - 0x144]
push eax
push esi
push dword [ebp - 0x118]
call fcn.00527950
mov byte [ebp - 0x113], al
test al, al
je 0x51cd04
mov ecx, esi
call fcn.00401c90
cmp eax, dword [ebp - 0x118]
jne 0x51cd04
mov esi, dword [ebp - 0x154]
cmp byte [esi + 0x98], 0
je 0x51ca3b
xorps xmm0, xmm0
mov dword [ebp - 0x34], 0
lea ecx, [ebp - 0x4c]
movq qword [ebp - 0x3c], xmm0
movups xmmword [ebp - 0x4c], xmm0
call fcn.004118f0
mov eax, dword [esi + 0xac]
mov byte [ebp - 4], 3
cmp eax, 6
jne 0x51c710
mov ecx, dword [ebp - 0x140]
lea ecx, [ecx + 0x14]
call fcn.00401c90
lea ecx, [esi + 0x10684]
mov dword [ebp - 0x15c], eax
call fcn.004132b0
push 8
lea ecx, [esi + 0xec]
push ecx
lea ecx, [esi + 0x10684]
call fcn.00412010
cmp dword [ebp - 0x15c], 0x18
jae 0x51c5fc
push str.GCM_fragment_not_large_enough.
mov eax, dword [edi]
mov ecx, edi
call dword [eax + 0x14]
push edi
push dword [ebp - 0x148]
mov ecx, dword [ebp - 0x14c]
push 0x14
push dword [ebp - 0x144]
call fcn.0051e910
lea ecx, [ebp - 0x4c]
call fcn.00411b10
jmp 0x51cdcb
mov ecx, dword [ebp - 0x140]
lea ecx, [ecx + 0x14]
call fcn.00401c90
mov ecx, dword [ebp - 0x168]
sub eax, 0x18
mov edx, dword [ebp - 0x140]
mov byte [ebp - 0x1c], al
push 5
movzx ecx, byte [ecx]
mov byte [ebp - 0x20], cl
movzx ecx, byte [edx + 8]
mov dl, byte [edx + 0xc]
mov byte [ebp - 0x1e], dl
mov edx, eax
lea eax, [ebp - 0x20]
mov byte [ebp - 0x1f], cl
shr edx, 8
lea ecx, [esi + 0x10684]
push eax
mov byte [ebp - 0x1d], dl
call fcn.00412010
lea ecx, [esi + 0xd0]
call fcn.00401c90
cmp eax, 4
je 0x51c662
push str.GCM_fixed_IV_not_equal_to_4.
jmp 0x51c5ce
lea ecx, [esi + 0xd0]
call fcn.00414910
mov edi, dword [ebp - 0x140]
mov eax, dword [eax]
lea ecx, [edi + 0x14]
mov dword [ebp - 0x30], eax
call fcn.00414910
push 0xc
mov ecx, dword [eax]
mov dword [ebp - 0x2c], ecx
lea ecx, [ebp - 0x30]
mov eax, dword [eax + 4]
push ecx
lea ecx, [esi + 0x10638]
mov dword [ebp - 0x28], eax
call fcn.004784b0
lea ecx, [edi + 0x14]
call fcn.00414910
mov edi, dword [ebp - 0x15c]
lea ecx, [esi + 0x106a0]
add edi, 0xfffffff0
add edi, eax
call fcn.004132b0
push 0x10
push edi
lea ecx, [esi + 0x106a0]
call fcn.00412010
mov ecx, dword [ebp - 0x140]
push 0x10
lea ecx, [ecx + 0x14]
call fcn.00415e20
mov esi, dword [ebp - 0x154]
mov edi, dword [ebp - 0x16c]
push edi
mov ecx, dword [esi + 0x106c8]
lea eax, [esi + 0x10638]
push eax
lea eax, [esi + 0xf8]
push eax
call fcn.004d2940
test al, al
jne 0x51c8d1
push str.GCM_decrypt_setup_failed.
jmp 0x51c5ce
cmp eax, 7
jne 0x51c8d1
mov ecx, dword [ebp - 0x140]
lea ecx, [ecx + 0x14]
call fcn.00401c90
mov dword [ebp - 0x15c], eax
cmp eax, 0x10
jae 0x51c73c
push str.AEAD_fragment_not_large_enough.
jmp 0x51c5ce
mov ecx, dword [ebp - 0x140]
lea ecx, [ecx + 0x14]
call fcn.00401c90
sub eax, 0x10
add esi, 0x10684
mov ecx, esi
mov dword [ebp - 0x20], eax
call fcn.004132b0
mov edi, dword [ebp - 0x154]
mov ecx, esi
push 8
add edi, 0xec
push edi
call fcn.00412010
mov ecx, dword [ebp - 0x168]
mov edx, dword [ebp - 0x20]
push 5
mov byte [ebp - 0x14], dl
mov al, byte [ecx]
mov ecx, dword [ebp - 0x140]
mov byte [ebp - 0x18], al
mov al, byte [ecx + 8]
mov byte [ebp - 0x17], al
mov al, byte [ecx + 0xc]
mov ecx, esi
mov byte [ebp - 0x16], al
mov eax, edx
shr eax, 8
mov byte [ebp - 0x15], al
lea eax, [ebp - 0x18]
push eax
call fcn.00412010
mov esi, dword [ebp - 0x154]
mov eax, dword [edi]
mov dword [ebp - 0x2c], eax
mov eax, dword [edi + 4]
lea ecx, [esi + 0xd0]
mov dword [ebp - 0x30], 0
mov dword [ebp - 0x28], eax
call fcn.00401c90
cmp eax, 0xc
je 0x51c7f0
mov ecx, dword [ebp - 0x16c]
push str.m_fixedIv_should_be_12_bytes
mov eax, dword [ecx]
call dword [eax + 0x14]
lea ecx, [ebp - 0x4c]
call fcn.00411b10
jmp 0x51cdcb
lea ecx, [esi + 0xd0]
call fcn.00414910
lea ecx, [ebp - 0x30]
xor esi, esi
sub eax, ecx
lea edx, [ebp - 0x30]
add edx, esi
inc esi
mov cl, byte [edx + eax]
xor byte [edx], cl
cmp esi, 0xc
jl 0x51c802
mov esi, dword [ebp - 0x154]
lea ecx, [ebp - 0x30]
push 0xc
push ecx
lea ecx, [esi + 0x10638]
call fcn.004784b0
mov ecx, dword [ebp - 0x140]
lea ecx, [ecx + 0x14]
call fcn.00414910
mov edi, dword [ebp - 0x15c]
lea ecx, [esi + 0x106a0]
add edi, 0xfffffff0
add edi, eax
call fcn.004132b0
push 0x10
push edi
lea ecx, [esi + 0x106a0]
call fcn.00412010
mov ecx, dword [ebp - 0x140]
push 0x10
lea ecx, [ecx + 0x14]
call fcn.00415e20
push dword [ebp - 0x16c]
mov edx, esi
mov ecx, dword [edx + 0x106c8]
lea esi, [edx + 0xf8]
push esi
lea edi, [edx + 0x10638]
push edi
mov eax, dword [ecx]
push 0
call dword [eax + 0xc]
mov eax, dword [ebp - 0x154]
push dword [ebp - 0x16c]
push edi
mov ecx, dword [eax + 0x106c8]
push esi
mov eax, dword [ecx]
mov eax, dword [eax + 0x2c]
call eax
test al, al
jne 0x51c8c5
mov esi, dword [ebp - 0x16c]
mov ecx, esi
push str.AEAD_decrypt_setup_failed.
mov eax, dword [esi]
call dword [eax + 0x14]
push esi
jmp 0x51c5d6
mov edi, dword [ebp - 0x16c]
mov esi, dword [ebp - 0x154]
mov al, byte [edi + 0xad]
mov ecx, dword [ebp - 0x140]
mov byte [ebp - 0x113], al
mov al, byte [edi + 0xae]
mov byte [edi + 0xad], al
lea eax, [ebp - 0x4c]
cmp dword [esi + 0xac], 6
lea ecx, [ecx + 0x14]
push edi
push eax
jne 0x51c91c
call fcn.00401c90
mov ecx, dword [ebp - 0x140]
sub eax, 8
push eax
lea ecx, [ecx + 0x14]
call fcn.00414910
add eax, 8
jmp 0x51c930
call fcn.00401c90
mov ecx, dword [ebp - 0x140]
push eax
lea ecx, [ecx + 0x14]
call fcn.00414910
mov ecx, dword [esi + 0x106c8]
push eax
lea eax, [esi + 0x10638]
push eax
lea eax, [esi + 0xf8]
push eax
call fcn.00476040
mov cl, byte [ebp - 0x113]
mov byte [edi + 0xad], cl
test al, al
jne 0x51c964
push str.Failed_to_decrypt_SSL_TLS_record.
jmp 0x51c5ce
mov eax, dword [esi + 0xac]
cmp eax, 6
jne 0x51c997
mov ecx, dword [esi + 0x106c8]
lea eax, [esi + 0x10638]
push edi
push eax
lea eax, [esi + 0xf8]
push eax
call fcn.004d2880
test al, al
jne 0x51c9c6
push str.GCM_decrypt_finalize_failed.
jmp 0x51c5ce
cmp eax, 7
jne 0x51c9c6
mov ecx, dword [esi + 0x106c8]
lea edx, [esi + 0x10638]
push edi
push edx
lea edx, [esi + 0xf8]
mov eax, dword [ecx]
push edx
mov eax, dword [eax + 0x30]
call eax
test al, al
jne 0x51c9c6
push str.AEAD_decrypt_finalize_failed.
jmp 0x51c5ce
mov ecx, dword [ebp - 0x140]
lea eax, [ebp - 0x4c]
push eax
lea ecx, [ecx + 0x14]
call fcn.00415ef0
mov ecx, dword [ebp - 0x140]
mov byte [ecx + 0x10], 1
mov eax, dword [esi + 0xac]
cmp eax, 6
je 0x51ca2f
cmp eax, 0x63
je 0x51ca2f
cmp eax, 7
je 0x51ca2f
push edi
lea ecx, [ecx + 0x14]
call fcn.004162d0
test al, al
jne 0x51ca0e
push str.Invalid_block_cipher_padding_detected.
jmp 0x51c5ce
mov ecx, dword [ebp - 0x140]
lea ecx, [ecx + 0x14]
call fcn.00414cb0
mov ecx, dword [ebp - 0x140]
movzx eax, al
inc eax
push eax
lea ecx, [ecx + 0x14]
call fcn.00415e20
lea ecx, [ebp - 0x4c]
mov byte [ebp - 4], 0
call fcn.00411b10
mov eax, dword [esi + 0xac]
cmp eax, 6
je 0x51ccd8
cmp eax, 7
je 0x51ccd8
mov ecx, dword [esi + 0xb0]
test ecx, ecx
je 0x51ccd8
mov eax, 0x10
cmp ecx, 1
jne 0x51ca77
mov dword [ebp - 0x150], 0x14
jmp 0x51ca99
cmp ecx, 7
jne 0x51ca88
mov dword [ebp - 0x150], 0x20
jmp 0x51ca99
cmp ecx, 2
mov edx, 0x30
cmove eax, edx
mov dword [ebp - 0x150], eax
mov ecx, dword [ebp - 0x140]
lea ecx, [ecx + 0x14]
call fcn.00401c90
mov dword [ebp - 0x20], eax
cmp eax, dword [ebp - 0x150]
jae 0x51cadd
mov eax, dword [edi]
mov ecx, edi
push str.SSL_TLS_record_shorter_than_MAC_length_
call dword [eax + 0x14]
mov ecx, dword [ebp - 0x14c]
push edi
push dword [ebp - 0x148]
push 0x14
push dword [ebp - 0x144]
call fcn.0051e910
jmp 0x51cdcb
xorps xmm0, xmm0
mov dword [ebp - 0x34], 0
lea ecx, [ebp - 0x4c]
movq qword [ebp - 0x3c], xmm0
movups xmmword [ebp - 0x4c], xmm0
call fcn.004118f0
mov eax, dword [ebp - 0x150]
mov ecx, dword [ebp - 0x20]
push eax
sub ecx, eax
mov byte [ebp - 4], 4
mov eax, dword [ebp - 0x140]
push ecx
add eax, 0x14
lea ecx, [ebp - 0x4c]
push eax
call fcn.00412e00
mov ecx, dword [ebp - 0x140]
push dword [ebp - 0x150]
lea ecx, [ecx + 0x14]
call fcn.00415e20
mov ecx, dword [ebp - 0x140]
mov dword [ebp - 0x18], 0
cmp dword [ecx + 8], 3
jne 0x51cbe5
cmp dword [ecx + 0xc], 2
jl 0x51cbe5
cmp dword [esi + 0xc4], 0
jbe 0x51cbe5
lea ecx, [ecx + 0x14]
call fcn.00401c90
cmp eax, dword [esi + 0xc4]
jb 0x51cbaa
mov ecx, dword [ebp - 0x140]
lea eax, [ebp - 0x90]
mov esi, dword [esi + 0xc4]
push edi
push eax
lea ecx, [ecx + 0x14]
call fcn.00401c90
sub eax, esi
push eax
push esi
mov esi, dword [ebp - 0x140]
lea ecx, [esi + 0x14]
call fcn.00414920
mov ecx, dword [ebp - 0x154]
push eax
push dword [esi + 0xc]
push dword [esi + 8]
jmp 0x51cc13
mov eax, dword [edi]
mov ecx, edi
push str.Message_not_long_enough_for_the_MAC.
call dword [eax + 0x14]
mov ecx, dword [ebp - 0x140]
lea ecx, [ecx + 0x14]
call fcn.00401c90
push eax
push str.tlsMsgSize
mov ecx, edi
call fcn.00431470
push dword [esi + 0xc4]
mov ecx, edi
push str.cipherSuiteRecordIvLen
call fcn.00431470
jmp 0x51cc25
push edi
lea eax, [ebp - 0x90]
push eax
lea ecx, [ecx + 0x14]
call fcn.00401c90
mov ecx, dword [ebp - 0x140]
push eax
lea ecx, [ecx + 0x14]
call fcn.00414910
mov ecx, dword [ebp - 0x140]
push eax
push dword [ecx + 0xc]
push dword [ecx + 8]
mov ecx, esi
mov eax, dword [ebp - 0x168]
push dword [eax]
push 0
call fcn.005129d0
mov dword [ebp - 0x18], eax
lea ecx, [ebp - 0x4c]
call fcn.00414910
mov esi, dword [ebp - 0x150]
lea edx, [ebp - 0x90]
mov ecx, eax
sub esi, 4
jb 0x51cc51
mov eax, dword [ecx]
cmp eax, dword [edx]
jne 0x51cc56
add ecx, 4
add edx, 4
sub esi, 4
jae 0x51cc40
cmp esi, 0xfffffffc
je 0x51ccca
mov al, byte [ecx]
cmp al, byte [edx]
jne 0x51cc83
cmp esi, 0xfffffffd
je 0x51ccca
mov al, byte [ecx + 1]
cmp al, byte [edx + 1]
jne 0x51cc83
cmp esi, 0xfffffffe
je 0x51ccca
mov al, byte [ecx + 2]
cmp al, byte [edx + 2]
jne 0x51cc83
cmp esi, 0xffffffff
je 0x51ccca
mov al, byte [ecx + 3]
cmp al, byte [edx + 3]
je 0x51ccca
mov eax, dword [edi]
mov ecx, edi
push str.Invalid_MAC
call dword [eax + 0x14]
push dword [ebp - 0x150]
mov ecx, edi
push str.macLen
call fcn.00431470
push dword [ebp - 0x18]
mov ecx, edi
push str.macLen2
call fcn.00431470
lea ecx, [ebp - 0x4c]
call fcn.00401c90
push eax
push str.dbMacSize
mov ecx, edi
call fcn.00431470
jmp 0x51c5d5
lea ecx, [ebp - 0x4c]
call fcn.00411b10
mov esi, dword [ebp - 0x154]
mov edx, 0xffffff14
lea ecx, [esi + 0xf3]
sub edx, esi
add byte [ecx], 1
jne 0x51ccf2
dec ecx
lea eax, [edx + ecx]
test eax, eax
jns 0x51cce5
lea ecx, [ebp - 0x124]
call fcn.00430db0
mov al, 1
jmp 0x51cdd8
mov eax, dword [edi]
mov ecx, edi
push str.Failed_to_read_TLS_record__2_
call dword [eax + 0x14]
mov ecx, esi
call fcn.00401c90
push eax
push str.tlsRec_msg
mov ecx, edi
call fcn.00431470
push dword [ebp - 0x118]
mov ecx, edi
push str.msgLen
call fcn.00431470
push dword [ebp - 0x13c]
mov ecx, edi
push str.nReadNBytes
call fcn.00431470
movzx eax, byte [ebp - 0x113]
push eax
push 0x6464f0
jmp 0x51cdc4
mov ecx, dword [ebp - 0x144]
call fcn.004efd00
test al, al
je 0x51cd75
mov eax, dword [ebp - 0x144]
cmp byte [eax + 0xa8], 0
je 0x51cdcb
mov eax, dword [edi]
mov ecx, edi
push str.Failed_to_read_beginning_of_SSL_TLS_record.
call dword [eax + 0x14]
movzx eax, byte [ebp - 0x113]
mov ecx, edi
push eax
push 0x604328
call fcn.00431470
mov ecx, esi
call fcn.00401c90
push eax
push str.dbSize
mov ecx, edi
call fcn.00431470
push dword [ebp - 0x13c]
mov ecx, edi
push str.nReadNBytes
call fcn.00431470
mov eax, dword [ebp + 0x10]
push eax
push str.idleTimeoutMs
mov ecx, edi
call fcn.00431470
lea ecx, [ebp - 0x124]
call fcn.00430db0
xor al, al
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
mov ecx, dword [ebp - 0x10]
xor ecx, ebp
call fcn.005ebe04
mov esp, ebp
pop ebp
ret 0x18