Function at 0x487ea0
Capabilities:
Authenticate hmac

Disassembly:
mov eax, 0x5c
call fcn.00602270
mov ax, word [0x64af57]
push ebx
push ebp
push esi
push edi
mov edi, dword [esp + 0x74]
push edi
push eax
mov esi, ecx
call fcn.0050273c
mov ebp, dword [esp + 0x78]
xor ebx, ebx
push ebp
lea ecx, [esp + 0x24]
mov dword [esi], 0x62abb0
mov dword [esp + 0x78], ebx
mov dword [esp + 0x14], ebx
call fcn.00513fa0
mov cl, byte [esi + 9]
push ebp
or cl, 0x10
mov dword [esp + 0x18], ebx
mov byte [esi + 9], cl
mov ecx, esi
mov dword [esp + 0x1c], ebx
mov dword [esp + 0x20], ebx
call fcn.004ee460
mov dl, byte [esi + 9]
mov dword [esi + 0x4a], edi
mov cl, byte [edi + 9]
xor cl, dl
and cl, 8
xor dl, cl
mov al, dl
mov byte [esi + 9], dl
test al, 8
je 0x487f3c
push 1
push 0x36
mov ecx, 0x74c070
call fcn.004e2a04
cmp eax, ebx
je 0x487f37
push esi
push ebx
push 0xc17
mov ecx, eax
call fcn.00501884
jmp 0x487f39
xor eax, eax
mov dword [esi + 0x4e], eax
push 0x814
mov ecx, edi
call fcn.004ef864
mov ecx, dword [eax + 0x17]
mov ebx, dword [esp + 0x70]
xor edx, edx
cmp ecx, 2
sete dl
test ebx, ebx
mov dword [esi + 0x62], edx
je 0x48808f
mov al, byte [ebx + 0x10]
push 0
test al, 2
push 0x84
jne 0x487f79
mov eax, dword [ebx]
mov ecx, ebx
call dword [eax + 8]
jmp 0x487f81
mov ecx, dword [ebx + 8]
call fcn.004ebda0
xor ecx, ecx
test eax, eax
setne cl
mov edx, ecx
mov dword [esi + 0x62], ecx
push edx
push 0x814
mov ecx, esi
call fcn.004f9cf4
push 0x3ff
push 4
push esi
mov ecx, eax
mov dword [esi + 0x5e], eax
call fcn.004eea90
test byte [ebx + 0x10], 2
jne 0x487fbe
mov eax, dword [ebx]
push 0xe1
mov ecx, ebx
call dword [eax + 0x10]
mov ecx, dword [ebx + 8]
push 0xe1
call fcn.004ec004
mov ebp, eax
test ebp, ebp
je 0x48808b
mov al, byte [ebp + 0x10]
push 0
test al, 2
push 0xe1
jne 0x487fed
mov edx, dword [ebp]
mov ecx, ebp
call dword [edx + 8]
jmp 0x487ff5
mov ecx, dword [ebp + 8]
call fcn.004ebda0
mov edi, eax
mov eax, dword [esp + 0x74]
test eax, eax
jne 0x488038
mov al, byte [edi + 0x10]
push 0
test al, 2
push 0x82
jne 0x488016
mov eax, dword [edi]
mov ecx, edi
call dword [eax + 8]
jmp 0x48801e
mov ecx, dword [edi + 8]
call fcn.004ebda0
test eax, eax
je 0x488038
push 1
push 0x101b
mov ecx, esi
call fcn.004f9cf4
mov dword [esp + 0x74], 1
mov eax, dword [esp + 0x10]
test eax, eax
jne 0x488050
push edi
mov ecx, esi
call fcn.004ef820
mov dword [esp + 0x10], 1
mov eax, dword [esp + 0x78]
lea ecx, [esp + 0x14]
lea edx, [esp + 0x20]
push ecx
push edx
push eax
push edi
mov ecx, esi
call fcn.004879a0
test byte [ebx + 0x10], 2
jne 0x488078
mov eax, dword [ebp + 4]
mov edx, dword [ebx]
push eax
mov ecx, ebx
call dword [edx + 0x10]
mov ecx, dword [ebx + 8]
push ebp
call fcn.004ec0cc
mov ebp, eax
test ebp, ebp
jne 0x487fd5
mov ebp, dword [esp + 0x78]
lea ecx, [esp + 0x14]
lea edx, [esp + 0x20]
push ecx
push ebx
push edx
mov ecx, esi
call fcn.004878c0
test ebx, ebx
je 0x488190
test byte [ebx + 0x10], 2
jne 0x4880bb
mov eax, dword [ebx]
push 0xe1
mov ecx, ebx
call dword [eax + 0x10]
mov ecx, dword [ebx + 8]
push 0xe1
call fcn.004ec004
mov edi, eax
test edi, edi
je 0x4881a1
mov al, byte [edi + 0x10]
push 0
test al, 2
push 0xe2
jne 0x4880e9
mov edx, dword [edi]
mov ecx, edi
call dword [edx + 8]
jmp 0x4880f1
mov ecx, dword [edi + 8]
call fcn.004ebda0
test eax, eax
jne 0x488100
push ebp
push edi
mov ecx, esi
call fcn.004870e0
jmp 0x488160
push 1
push 0x6a
mov ecx, 0x65c654
call fcn.004e2a04
test eax, eax
je 0x488120
push ebp
push esi
push edi
mov ecx, eax
call fcn.0048aee0
mov ebp, eax
jmp 0x488122
xor ebp, ebp
mov eax, dword [esi + 0x4e]
test eax, eax
jne 0x488151
push 1
push 0x36
mov ecx, 0x74c070
call fcn.004e2a04
test eax, eax
je 0x48814c
push esi
push 0
push 0xc17
mov ecx, eax
call fcn.00501884
jmp 0x48814e
xor eax, eax
mov dword [esi + 0x4e], eax
mov ecx, dword [esi + 0x4e]
push 0
push ebp
mov eax, dword [ecx]
call dword [eax + 0x60]
mov ebp, dword [esp + 0x78]
test byte [ebx + 0x10], 2
jne 0x488171
mov eax, dword [edi + 4]
mov edx, dword [ebx]
push eax
mov ecx, ebx
call dword [edx + 0x10]
mov ecx, dword [ebx + 8]
push edi
call fcn.004ec0cc
mov edi, eax
test edi, edi
jne 0x4880d2
mov eax, esi
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x5c
ret 0xc
mov ecx, dword [esi + 0x5e]
push 0
call fcn.0050fc84
mov eax, dword [esi + 0x5e]
and byte [eax + 9], 0xfe
mov eax, esi
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x5c
ret 0xc