Function at 0x50fe90
Capabilities:
Authenticate hmac
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
push edi
push esi
push ebx
sub esp, 0xac
mov ebx, dword [ebp + 8]
mov esi, dword [ebp + 0xc]
mov eax, dword [ebp + 0x14]
test eax, eax
je 0x5100f1
mov eax, dword [ebp + 0x14]
mov dword [ebx], eax
mov eax, 1
test esi, esi
je 0x50ff5c
mov eax, dword [ebp + 0x14]
mov dword [esp], eax
call fcn.00503cbc
cmp eax, 0x80
jg 0x50ff85
cmp eax, dword [ebp + 0x10]
jl 0x50ffb6
mov eax, dword [ebp + 0x10]
cmp eax, 0x80
ja 0x5100c4
lea edx, [ebx + 0x50]
mov edi, edx
mov ecx, dword [ebp + 0x10]
rep movsb byte es:[edi], byte [esi]
mov ecx, dword [ebp + 0x10]
mov dword [ebx + 0x4c], ecx
cmp eax, 0x80
je 0x50ff12
mov ecx, 0x80
sub ecx, eax
add edx, eax
xor eax, eax
mov edi, edx
rep stosb byte es:[edi], al
xor eax, eax
lea esi, [ebp - 0x98]
nop
mov dl, byte [ebx + eax + 0x50]
xor edx, 0x36
mov byte [esi + eax], dl
inc eax
cmp eax, 0x80
jne 0x50ff1c
lea edi, [ebx + 0x1c]
mov eax, dword [ebp + 0x18]
mov dword [esp + 8], eax
mov ecx, dword [ebp + 0x14]
mov dword [esp + 4], ecx
mov dword [esp], edi
call fcn.004fdb10
test eax, eax
jne 0x510028
xor eax, eax
add esp, 0xac
pop ebx
pop esi
pop edi
leave
ret
test eax, eax
jne 0x50ff12
lea edi, [ebx + 0x1c]
mov dword [esp + 4], edi
add ebx, 4
mov dword [esp], ebx
call fcn.004fdfb4
test eax, eax
setne al
movzx eax, al
add esp, 0xac
pop ebx
pop esi
pop edi
leave
ret
mov dword [esp + 8], str.j____int_sizeof_ctx__key_
mov dword [esp + 4], 0x52
mov dword [esp], str.crypto_hmac_hmac.c
mov dword [ebp - 0xa0], eax
call fcn.004f4924
mov eax, dword [ebp - 0xa0]
cmp eax, dword [ebp + 0x10]
jge 0x50fede
lea edi, [ebx + 4]
mov ecx, dword [ebp + 0x18]
mov dword [esp + 8], ecx
mov eax, dword [ebp + 0x14]
mov dword [esp + 4], eax
mov dword [esp], edi
call fcn.004fdb10
test eax, eax
je 0x50ff4f
mov ecx, dword [ebp + 0x10]
mov dword [esp + 8], ecx
mov dword [esp + 4], esi
mov dword [esp], edi
call fcn.004fddac
test eax, eax
je 0x50ff4f
lea eax, [ebx + 0x4c]
mov dword [esp + 8], eax
lea edx, [ebx + 0x50]
mov dword [esp + 4], edx
mov dword [esp], edi
mov dword [ebp - 0xa0], edx
call fcn.004fddbc
mov ecx, eax
xor eax, eax
test ecx, ecx
mov edx, dword [ebp - 0xa0]
je 0x50ff51
mov eax, dword [ebx + 0x4c]
jmp 0x50fefc
mov eax, dword [ebp + 0x14]
mov dword [esp], eax
call fcn.00503cbc
mov dword [esp + 8], eax
mov dword [esp + 4], esi
mov dword [esp], edi
call fcn.004fddac
test eax, eax
je 0x50ff4f
xor eax, eax
lea esi, [esi]
mov dl, byte [ebx + eax + 0x50]
xor edx, 0x5c
mov byte [esi + eax], dl
inc eax
cmp eax, 0x80
jne 0x510050
lea ecx, [ebx + 0x34]
mov dword [ebp - 0x9c], ecx
mov eax, dword [ebp + 0x18]
mov dword [esp + 8], eax
mov ecx, dword [ebp + 0x14]
mov dword [esp + 4], ecx
mov eax, dword [ebp - 0x9c]
mov dword [esp], eax
call fcn.004fdb10
test eax, eax
je 0x50ff4f
mov ecx, dword [ebp + 0x14]
mov dword [esp], ecx
call fcn.00503cbc
mov dword [esp + 8], eax
mov dword [esp + 4], esi
mov eax, dword [ebp - 0x9c]
mov dword [esp], eax
call fcn.004fddac
mov edx, eax
xor eax, eax
test edx, edx
je 0x50ff51
jmp 0x50ff63
mov dword [esp + 8], str.len_0__len__int_sizeof_ctx__key_
mov dword [esp + 4], 0x5f
mov dword [esp], str.crypto_hmac_hmac.c
mov dword [ebp - 0xa0], eax
call fcn.004f4924
mov eax, dword [ebp - 0xa0]
jmp 0x50feec
mov ecx, dword [ebx]
mov dword [ebp + 0x14], ecx
xor eax, eax
jmp 0x50feb7