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

Disassembly:
push ebp
mov ebp, esp
add esp, 0xfffffe78
push dword [ebp + 8]
call fcn.0049daf8
pop ecx
mov dword [ebp - 8], eax
push dword [ebp + 0xc]
call fcn.0049daf8
pop ecx
mov dword [ebp - 0xc], eax
push 0x21
push 0
push dword [ebp + 0x10]
call fcn.0049d948
add esp, 0xc
mov eax, dword [ebp - 0xc]
cmp eax, 0x40
jle 0x46e9c0
lea edx, [ebp - 0x188]
push edx
call fcn.0046e558
pop ecx
push dword [ebp - 0xc]
push dword [ebp + 0xc]
lea ecx, [ebp - 0x188]
push ecx
call fcn.0046e594
add esp, 0xc
lea eax, [ebp - 0x188]
push eax
lea edx, [ebp - 0x130]
push edx
call fcn.0046e67c
add esp, 8
lea ecx, [ebp - 0x130]
mov dword [ebp + 0xc], ecx
mov dword [ebp - 0xc], 0x10
xor eax, eax
mov dword [ebp - 4], eax
mov edx, dword [ebp - 4]
mov byte [ebp + edx - 0xdc], 0
inc dword [ebp - 4]
mov ecx, dword [ebp - 4]
cmp ecx, 0x41
jl 0x46e9c5
xor eax, eax
mov dword [ebp - 4], eax
mov edx, dword [ebp - 4]
mov byte [ebp + edx - 0x120], 0
inc dword [ebp - 4]
mov ecx, dword [ebp - 4]
cmp ecx, 0x41
jl 0x46e9e0
xor eax, eax
mov dword [ebp - 4], eax
mov edx, dword [ebp - 4]
mov ecx, dword [ebp - 0xc]
cmp edx, ecx
jge 0x46ea38
mov eax, dword [ebp - 4]
mov edx, dword [ebp - 4]
mov ecx, dword [ebp + 0xc]
mov dl, byte [ecx + edx]
mov byte [ebp + eax - 0xdc], dl
mov eax, dword [ebp - 4]
mov ecx, dword [ebp - 4]
mov edx, dword [ebp + 0xc]
mov cl, byte [edx + ecx]
mov byte [ebp + eax - 0x120], cl
inc dword [ebp - 4]
mov eax, dword [ebp - 4]
mov edx, dword [ebp - 0xc]
cmp eax, edx
jl 0x46ea05
xor eax, eax
mov dword [ebp - 4], eax
mov ecx, dword [ebp - 4]
xor byte [ebp + ecx - 0xdc], 0x36
mov eax, dword [ebp - 4]
xor byte [ebp + eax - 0x120], 0x5c
inc dword [ebp - 4]
mov edx, dword [ebp - 4]
cmp edx, 0x40
jl 0x46ea3d
lea ecx, [ebp - 0x98]
push ecx
call fcn.0046e558
pop ecx
push 0x40
lea eax, [ebp - 0xdc]
push eax
lea edx, [ebp - 0x98]
push edx
call fcn.0046e594
add esp, 0xc
push dword [ebp - 8]
push dword [ebp + 8]
lea ecx, [ebp - 0x98]
push ecx
call fcn.0046e594
add esp, 0xc
lea eax, [ebp - 0x98]
push eax
lea edx, [ebp - 0x1c]
push edx
call fcn.0046e67c
add esp, 8
lea ecx, [ebp - 0x98]
push ecx
call fcn.0046e558
pop ecx
push 0x40
lea eax, [ebp - 0x120]
push eax
lea edx, [ebp - 0x98]
push edx
call fcn.0046e594
add esp, 0xc
push 0x10
lea ecx, [ebp - 0x1c]
push ecx
lea eax, [ebp - 0x98]
push eax
call fcn.0046e594
add esp, 0xc
lea edx, [ebp - 0x98]
push edx
lea ecx, [ebp - 0x1c]
push ecx
call fcn.0046e67c
add esp, 8
xor eax, eax
mov dword [ebp - 4], eax
mov edx, dword [ebp - 4]
xor ecx, ecx
mov cl, byte [ebp + edx - 0x1c]
push ecx
push 0x4d449e
mov eax, dword [ebp - 4]
add eax, eax
lea edx, [ebp - 0x40]
add eax, edx
push eax
call fcn.004a16bc
add esp, 0xc
mov ecx, dword [ebp - 4]
mov al, byte [ebp + ecx - 0x1c]
shl eax, 4
xor edx, edx
mov dl, al
push edx
push 0x4d44a3
mov ecx, dword [ebp - 4]
add ecx, ecx
lea eax, [ebp - 0x3f]
add ecx, eax
push ecx
call fcn.004a16bc
add esp, 0xc
inc dword [ebp - 4]
mov edx, dword [ebp - 4]
cmp edx, 0x10
jl 0x46eafd
xor ecx, ecx
mov dword [ebp - 4], ecx
mov eax, dword [ebp - 4]
mov dl, byte [ebp + eax - 0x40]
mov ecx, dword [ebp + 0x10]
mov eax, dword [ebp - 4]
mov byte [ecx + eax], dl
inc dword [ebp - 4]
mov edx, dword [ebp - 4]
cmp edx, 0x20
jl 0x46eb56
mov eax, dword [ebp + 0x10]
mov esp, ebp
pop ebp
ret