Function at 0x45b010
Capabilities:
Authenticate hmac
Encode data using xor
Resolve function by parsing pe exports

Disassembly:
mov eax, 0x33c
call fcn.00525ec0
mov eax, dword [0x5af1b4]
xor eax, esp
mov dword [esp + 0x334], eax
cmp dword [esp + 0x350], 0x100000
mov eax, dword [esp + 0x340]
push ebx
push ebp
mov dword [esp + 0x68], ecx
mov ecx, dword [esp + 0x34c]
push esi
mov dword [esp + 0x70], edx
mov edx, dword [esp + 0x354]
mov dword [esp + 0x64], ecx
mov ecx, dword [esp + 0x360]
mov ebp, 8
push edi
mov dword [esp + 0x7c], eax
mov dword [esp + 0x60], edx
mov dword [esp + 0x6c], ecx
mov edi, 0x40
mov dword [esp + 0x5c], 0x28
mov dword [esp + 0x2c], ebp
mov byte [esp + 0x13], 1
jae 0x45b828
test eax, eax
je 0x45b092
mov eax, dword [eax]
mov eax, dword [eax]
cmp eax, 0x2a0
jg 0x45b136
je 0x45b10d
cmp eax, 4
je 0x45b0d7
cmp eax, edi
jne 0x45b147
lea esi, [esp + 0x98]
call fcn.0046df00
mov dword [esp + 0x30], 0x45add0
mov dword [esp + 0x14], 0x46dd90
mov dword [esp + 0x1c], 0x14
jmp 0x45b1cd
lea esi, [esp + 0x98]
call fcn.0045fe40
mov dword [esp + 0x30], 0x45ad40
mov dword [esp + 0x14], 0x45fcf0
mov dword [esp + 0x1c], 0x10
mov dword [esp + 0x5c], 0x30
mov byte [esp + 0x13], 0
jmp 0x45b1cd
lea esi, [esp + 0x98]
call fcn.00485910
mov dword [esp + 0x30], 0x45ae80
mov dword [esp + 0x14], 0x485a50
mov dword [esp + 0x1c], 0x20
jmp 0x45b1cd
sub eax, 0x2a1
je 0x45b194
sub eax, 1
je 0x45b181
sub eax, 1
je 0x45b15b
push 0x58b560
mov ecx, 0x202
mov edx, str.._ssl_s3_cbc.c
call fcn.00461970
lea esi, [esp + 0x98]
call fcn.004858b0
mov dword [esp + 0x30], 0x45ae80
mov dword [esp + 0x14], 0x485a50
mov dword [esp + 0x1c], 0x1c
jmp 0x45b1cd
lea edx, [esp + 0x98]
push edx
call fcn.00485230
mov dword [esp + 0x20], edi
jmp 0x45b1a9
lea eax, [esp + 0x98]
push eax
call fcn.00485190
mov dword [esp + 0x20], 0x30
mov dword [esp + 0x30], 0x10
mov ebp, dword [esp + 0x30]
mov edi, 0x80
mov dword [esp + 0x18], 0x485890
mov dword [esp + 0x34], 0x45af80
add esp, 4
mov bl, byte [esp + 0x36c]
mov dword [esp + 0x3c], 0xd
test bl, bl
je 0x45b1f3
mov ecx, dword [esp + 0x5c]
mov edx, dword [esp + 0x368]
lea eax, [ecx + edx + 0xb]
mov dword [esp + 0x3c], eax
mov eax, dword [esp + 0x360]
xor ecx, ecx
test bl, bl
sete cl
lea ecx, [ecx*4 + 2]
mov dword [esp + 0x38], ecx
mov ecx, dword [esp + 0x3c]
sub ecx, dword [esp + 0x1c]
lea edx, [ecx + ebp]
add edx, edi
lea eax, [edx + eax - 1]
xor edx, edx
div edi
mov edx, dword [esp + 0x35c]
add ecx, edx
xor edx, edx
mov esi, eax
xor eax, eax
mov dword [esp + 0x24], eax
mov dword [esp + 0x34], eax
mov eax, ecx
div edi
mov dword [esp + 0x58], edx
xor edx, edx
mov dword [esp + 0x90], eax
lea eax, [ecx + ebp]
div edi
xor edx, edx
test bl, bl
setne dl
mov dword [esp + 0x80], eax
mov eax, dword [esp + 0x38]
add edx, eax
cmp esi, edx
jbe 0x45b275
sub esi, eax
mov eax, esi
mov dword [esp + 0x24], eax
imul eax, edi
mov dword [esp + 0x34], eax
cmp byte [esp + 0x36c], 0
lea ebx, [ecx*8]
jne 0x45b2f4
push edi
lea eax, [esp + 0x1c4]
push 0
push eax
lea ebx, [ebx + edi*8]
call fcn.00516180
mov eax, dword [esp + 0x374]
add esp, 0xc
cmp eax, 0x80
ja 0x45b335
mov ecx, dword [esp + 0x6c]
push eax
push ecx
lea edx, [esp + 0x1c8]
push edx
call fcn.005165f0
add esp, 0xc
xor eax, eax
test edi, edi
jbe 0x45b2dd
lea ebx, [ebx]
xor byte [esp + eax + 0x1c0], 0x36
inc eax
cmp eax, edi
jb 0x45b2d0
lea eax, [esp + 0x1c0]
push eax
lea ecx, [esp + 0x9c]
push ecx
call dword [esp + 0x1c]
add esp, 8
cmp byte [esp + 0x13], 0
je 0x45b349
lea edx, [ebp - 4]
push edx
lea eax, [esp + 0x174]
push 0
push eax
call fcn.00516180
lea ebp, [esp + ebp + 0x17c]
mov ecx, ebx
mov edx, ebx
shr ecx, 0x18
shr edx, 0x10
mov eax, ebx
add esp, 0xc
shr eax, 8
mov byte [ebp - 4], cl
mov byte [ebp - 3], dl
mov byte [ebp - 2], al
mov byte [ebp - 1], bl
jmp 0x45b37e
push str.mac_secret_length___sizeof_hmac_pad_
mov ecx, 0x26a
mov edx, str.._ssl_s3_cbc.c
call fcn.00461970
push ebp
lea ecx, [esp + 0x174]
push 0
push ecx
call fcn.00516180
lea ebp, [esp + ebp + 0x17c]
mov edx, ebx
mov eax, ebx
shr edx, 0x18
shr eax, 0x10
mov ecx, ebx
add esp, 0xc
shr ecx, 8
mov byte [ebp - 5], dl
mov byte [ebp - 6], al
mov byte [ebp - 7], cl
mov byte [ebp - 8], bl
mov ebx, dword [esp + 0x34]
test ebx, ebx
jbe 0x45b4b7
cmp byte [esp + 0x36c], 0
je 0x45b42c
mov ebx, dword [esp + 0x68]
mov esi, dword [esp + 0x3c]
mov ebp, dword [esp + 0x14]
lea edx, [esp + 0x98]
push ebx
push edx
sub esi, edi
call ebp
push esi
add ebx, edi
lea eax, [esp + 0x24c]
push ebx
push eax
call fcn.005165f0
mov ebx, dword [esp + 0x74]
add esp, 0x14
mov ecx, edi
sub ecx, esi
push ecx
lea edx, [esp + esi + 0x244]
push ebx
push edx
call fcn.005165f0
add esp, 0xc
lea eax, [esp + 0x240]
push eax
lea ecx, [esp + 0x9c]
push ecx
call ebp
mov eax, dword [esp + 0x3c]
xor edx, edx
div edi
add esp, 8
dec eax
cmp eax, 1
jbe 0x45b4b7
sub ebx, esi
add ebx, edi
lea esi, [eax - 1]
lea ecx, [ecx]
lea edx, [esp + 0x98]
push ebx
push edx
call dword [esp + 0x1c]
add esp, 8
add ebx, edi
sub esi, 1
jne 0x45b410
jmp 0x45b4b7
mov eax, dword [esp + 0x68]
mov ecx, dword [eax]
mov edx, dword [eax + 4]
mov esi, dword [esp + 0x60]
mov dword [esp + 0x240], ecx
mov ecx, dword [eax + 8]
mov dword [esp + 0x244], edx
mov dl, byte [eax + 0xc]
lea eax, [edi - 0xd]
push eax
mov dword [esp + 0x24c], ecx
lea ecx, [esp + 0x251]
push esi
push ecx
mov byte [esp + 0x258], dl
call fcn.005165f0
add esp, 0xc
lea edx, [esp + 0x240]
push edx
lea eax, [esp + 0x9c]
push eax
call dword [esp + 0x1c]
xor edx, edx
mov eax, ebx
div edi
add esp, 8
cmp eax, 1
jbe 0x45b4b7
lea esi, [esi + edi - 0xd]
lea ebx, [eax - 1]
lea esp, [esp]
lea ecx, [esp + 0x98]
push esi
push ecx
call dword [esp + 0x1c]
add esp, 8
add esi, edi
sub ebx, 1
jne 0x45b4a0
push 0x40
lea edx, [esp + 0x184]
push 0
push edx
call fcn.00516180
mov esi, dword [esp + 0x30]
mov eax, dword [esp + 0x44]
mov ecx, esi
add eax, ecx
add esp, 0xc
mov dword [esp + 0x64], esi
mov dword [esp + 0x8c], eax
cmp ecx, eax
ja 0x45b6bb
jmp 0x45b4f4
mov esi, dword [esp + 0x64]
mov ecx, esi
xor ecx, dword [esp + 0x90]
xor esi, dword [esp + 0x80]
lea eax, [ecx - 1]
not ecx
shr ecx, 0x1f
shr eax, 0x1f
and al, cl
mov ecx, esi
lea ebx, [esi - 1]
shr ebx, 0x1f
not ecx
shr ecx, 0x1f
and bl, cl
neg al
neg bl
xor esi, esi
mov byte [esp + 0x23], al
mov byte [esp + 0x1b], bl
test edi, edi
jbe 0x45b652
mov ecx, dword [esp + 0x58]
movzx ebp, al
lea edx, [ecx + 1]
shr edx, 0x1f
not bl
or bl, al
mov dword [esp + 0x88], ebp
mov ebp, dword [esp + 0x58]
mov dword [esp + 0x38], edx
mov edx, dword [esp + 0x2c]
mov eax, edi
sub eax, dword [esp + 0x2c]
shr ecx, 0x1f
neg ebp
sub edx, edi
mov dword [esp + 0x84], eax
lea eax, [esp + edx + 0x170]
mov dword [esp + 0x78], ecx
mov byte [esp + 0x2b], bl
mov dword [esp + 0x24], eax
jmp 0x45b587
mov ecx, dword [esp + 0x78]
mov eax, dword [esp + 0x34]
mov edx, dword [esp + 0x3c]
mov byte [esp + 0x13], 0
cmp eax, edx
jae 0x45b5a1
mov edx, dword [esp + 0x68]
mov dl, byte [edx + eax]
jmp 0x45b5b7
mov ebx, dword [esp + 0x360]
add ebx, edx
cmp eax, ebx
jae 0x45b5bb
mov ebx, dword [esp + 0x60]
sub ebx, edx
mov dl, byte [ebx + eax]
mov byte [esp + 0x13], dl
inc eax
mov ebx, dword [esp + 0x58]
mov dword [esp + 0x34], eax
mov eax, ebp
shr eax, 0x1f
xor al, cl
mov edx, esi
shr edx, 0x1f
xor cl, dl
or al, cl
xor al, dl
dec al
movzx ecx, al
and ecx, dword [esp + 0x88]
inc ebx
mov dword [esp + 0x94], edx
xor dl, byte [esp + 0x38]
mov eax, esi
sub eax, ebx
mov bl, byte [esp + 0x1b]
shr eax, 0x1f
xor al, byte [esp + 0x38]
or al, dl
xor al, byte [esp + 0x94]
mov dl, cl
dec al
and al, byte [esp + 0x23]
not dl
and dl, byte [esp + 0x13]
and cl, 0x80
not al
or dl, cl
and al, dl
and al, byte [esp + 0x2b]
cmp esi, dword [esp + 0x84]
jb 0x45b63d
movzx ecx, bl
mov dl, cl
not dl
and dl, al
mov eax, dword [esp + 0x24]
mov al, byte [eax]
and al, cl
or al, dl
inc dword [esp + 0x24]
mov byte [esp + esi + 0x2c0], al
inc esi
inc ebp
cmp esi, edi
jb 0x45b583
lea ecx, [esp + 0x2c0]
push ecx
lea edx, [esp + 0x9c]
push edx
call dword [esp + 0x1c]
lea eax, [esp + 0x2c8]
push eax
lea ecx, [esp + 0xa4]
push ecx
call dword [esp + 0x40]
mov esi, dword [esp + 0x2c]
add esp, 0x10
xor eax, eax
test esi, esi
jbe 0x45b6a5
jmp 0x45b690
mov dl, byte [esp + eax + 0x2c0]
and dl, bl
or byte [esp + eax + 0x180], dl
inc eax
cmp eax, esi
jb 0x45b690
mov eax, dword [esp + 0x64]
inc eax
mov dword [esp + 0x64], eax
cmp eax, dword [esp + 0x8c]
jbe 0x45b4f0
xor eax, eax
mov dword [esp + 0x40], eax
mov dword [esp + 0x44], eax
mov dword [esp + 0x48], eax
mov dword [esp + 0x4c], eax
mov dword [esp + 0x50], eax
mov dword [esp + 0x54], eax
mov eax, dword [esp + 0x7c]
mov ecx, dword [eax]
push ecx
lea edx, [esp + 0x44]
push edx
xor ecx, ecx
call fcn.00473e30
add esp, 8
cmp byte [esp + 0x36c], 0
je 0x45b74e
mov esi, dword [esp + 0x5c]
push esi
lea eax, [esp + 0x1c4]
push 0x5c
push eax
call fcn.00516180
mov ecx, dword [esp + 0x374]
mov edx, dword [esp + 0x78]
add esp, 0xc
push ecx
push edx
lea eax, [esp + 0x48]
push eax
call dword [esp + 0x60]
add esp, 0xc
push esi
lea ecx, [esp + 0x1c4]
push ecx
lea edx, [esp + 0x48]
push edx
call dword [esp + 0x60]
mov eax, dword [esp + 0x28]
add esp, 0xc
push eax
lea ecx, [esp + 0x184]
push ecx
lea edx, [esp + 0x48]
push edx
jmp 0x45b788
xor eax, eax
test edi, edi
jbe 0x45b761
xor byte [esp + eax + 0x1c0], 0x6a
inc eax
cmp eax, edi
jb 0x45b754
push edi
lea eax, [esp + 0x1c4]
push eax
lea ecx, [esp + 0x48]
push ecx
call dword [esp + 0x60]
mov edx, dword [esp + 0x28]
add esp, 0xc
push edx
lea eax, [esp + 0x184]
push eax
lea ecx, [esp + 0x48]
push ecx
call dword [esp + 0x60]
mov eax, dword [esp + 0x4c]
add esp, 0xc
cmp dword [eax + 8], 0x40
jg 0x45b814
mov edx, dword [esp + 0x70]
push edx
mov edx, dword [eax + 0x18]
lea ecx, [esp + 0x44]
push ecx
call edx
mov eax, dword [esp + 0x48]
mov ecx, dword [eax + 0x20]
mov esi, dword [eax + 8]
add esp, 8
test ecx, ecx
je 0x45b7cc
lea eax, [esp + 0x40]
push eax
call ecx
mov eax, dword [esp + 0x44]
add esp, 4
or dword [esp + 0x48], 2
mov ecx, dword [eax + 0x44]
mov edx, dword [esp + 0x4c]
push ecx
push 0
push edx
call fcn.00516180
add esp, 0xc
lea edi, [esp + 0x40]
call fcn.00474260
mov eax, dword [esp + 0x74]
test eax, eax
je 0x45b7f2
mov dword [eax], esi
lea edi, [esp + 0x40]
call fcn.00474260
mov ecx, dword [esp + 0x344]
pop edi
pop esi
pop ebp
pop ebx
xor ecx, esp
call fcn.00511c1b
add esp, 0x33c
ret
push str.ctx__digest__md_size___EVP_MAX_MD_SIZE
mov ecx, 0x115
mov edx, str..cryptoevpdigest.c
call fcn.00461970
push str.data_plus_mac_plus_padding_size___1024__1024
mov ecx, 0x1c6
mov edx, str.._ssl_s3_cbc.c
call fcn.00461970
int3