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

Disassembly:
movzx eax, byte [0x42b9a7]
sub esp, 0x2c
movzx ecx, word [0x42b9b4]
and eax, 0xa0489ae4
and ecx, 0x1d87dcc8
mov dword [0x42b9ac], eax
mov eax, ecx
and ecx, 0xee9e
push ebx
push ebp
push esi
push edi
sub ecx, 0x2a95
xor eax, 0xe4fe9a
mov word [0x42b9b4], cx
push 4
pop ecx
mov dword [0x42b994], eax
call fcn.0041e241
mov edi, eax
test edi, edi
je 0x415f1b
movzx ecx, byte [0x42b9a7]
imul ecx, ecx, 0x524c91c1
push 0x428f14
push edi
mov dword [0x42b9ac], ecx
add ecx, 0xffffeebe
mov word [0x42b9b4], cx
mov cl, byte [0x42b994]
or cl, 0xc1
mov byte [0x42b9a7], cl
call fcn.00405af6
pop ecx
pop ecx
test eax, eax
je 0x415f03
mov ecx, dword [0x42b994]
mov al, cl
and al, 0xa3
mov byte [0x42b9a7], al
imul eax, ecx, 0xef78
push 0x1000
mov word [0x42b9b4], ax
call fcn.0040570b
pop ecx
movzx ecx, byte [0x42b9a7]
mov esi, eax
and ecx, 0xfc40e4cd
mov dword [0x42b994], ecx
movzx ecx, byte [0x42b9ac]
imul ecx, ecx, 0x8c
mov byte [0x42b9a7], cl
test esi, esi
je 0x415f03
push 0x7c
pop eax
mov word [esp + 0x1c], ax
and cl, 4
xor eax, eax
and dword [esp + 0x20], 0
mov word [esp + 0x1e], ax
sub cl, 0x4f
mov byte [0x42b9a7], cl
mov eax, 0xddda
or ax, word [0x42b9b4]
mov ecx, 0x5ec
xor ax, cx
movzx ecx, ax
mov word [0x42b9b4], ax
mov eax, ecx
and eax, 0x17b2ed4b
sub eax, 0x4630ae06
mov dword [0x42b9ac], eax
lea eax, [ecx - 0x56a516f0]
mov dword [0x42b994], eax
lea eax, [esp + 0x20]
push eax
lea eax, [esp + 0x20]
push eax
push edi
call fcn.004057dc
mov dl, byte [0x42b9a7]
mov ebx, eax
movzx ecx, dl
add esp, 0xc
sub ecx, 0x404c4c0a
mov dword [0x42b9ac], ecx
test ebx, ebx
je 0x415ed4
mov word [esp + 0x14], 0xd39a
mov byte [esp + 0x16], 0xcc
xor ecx, ecx
mov al, byte [esp + ecx + 0x14]
xor al, 0xbf
movzx eax, al
mov word [esp + ecx*2 + 0x28], ax
inc ecx
cmp ecx, 3
jl 0x415bc3
xor eax, eax
mov ecx, 0x5a82
mov word [esp + 0x2e], ax
movzx eax, dl
add dl, 0x36
xor ax, cx
mov byte [0x42b9a7], dl
mov word [0x42b9b4], ax
movzx eax, dl
sub eax, 0x4b779f45
mov dword [0x42b994], eax
lea eax, [esp + 0x28]
push ebx
push eax
call fcn.00422def
mov dx, word [0x42b9b4]
mov ebp, eax
movzx eax, dx
pop ecx
pop ecx
lea ecx, [eax - 0x7115b49c]
mov dword [0x42b994], ecx
test ebp, ebp
je 0x415ea3
imul eax, eax, 0x77b05a01
and dl, 0xc5
mov byte [0x42b9a7], dl
mov dword [0x42b994], eax
lea eax, [esp + 0x20]
push eax
lea eax, [esp + 0x20]
push eax
push 0
call fcn.004057dc
mov cl, byte [0x42b994]
add esp, 0xc
xor cl, 0xc0
mov edx, 0x5060ff33
mov byte [0x42b9a7], cl
xor ecx, ecx
inc ecx
push 0x800
push esi
push eax
call fcn.00415084
call eax
test eax, eax
je 0x415e7a
mov word [esp + 0x18], 0x4d06
xor ecx, ecx
mov byte [esp + 0x1a], 0x54
movzx eax, byte [esp + ecx + 0x18]
mov edx, 0xff
add ax, 0x1f
and ax, dx
mov word [esp + ecx*2 + 0x30], ax
inc ecx
cmp ecx, 3
jl 0x415c95
mov cx, word [0x42b9b4]
xor eax, eax
add dword [0x42b994], 0x3320f9fe
mov word [esp + 0x36], ax
lea eax, [edx - 0x17]
add cx, ax
mov al, byte [0x42b9ac]
and al, 0x3d
mov word [0x42b9b4], cx
mov byte [0x42b9a7], al
movzx eax, cx
imul eax, eax, 0x4885d15b
push esi
mov dword [0x42b9ac], eax
call fcn.0040581e
mov edx, dword [0x42b994]
mov ebx, eax
pop ecx
movzx eax, word [esi + ebx*2 - 2]
lea ecx, [edx - 0x1bf40273]
mov dword [0x42b9ac], ecx
mov cl, dl
xor cl, 0xc3
cmp eax, 0x5c
je 0x415d28
cmp eax, 0x2f
je 0x415d28
mov dx, word [0x42b9b4]
jmp 0x415d53
mov cx, word [0x42b9b4]
add edx, 0x137b
movzx eax, cx
add eax, 0x7650577b
mov word [0x42b9b4], dx
mov dword [0x42b9ac], eax
xor eax, eax
mov word [esi + ebx*2 - 2], ax
xor cl, 0x1e
movzx eax, cl
and dl, 0xf5
and eax, 0xa9840079
mov byte [0x42b9a7], dl
mov dword [0x42b994], eax
lea eax, [esp + 0x20]
push eax
lea eax, [esp + 0x20]
push eax
push 0
call fcn.004057dc
mov edx, dword [0x42b9ac]
add esp, 0xc
lea ecx, [edx + 0x68b8]
and edx, 0xa0193aae
push eax
mov dword [0x42b994], edx
lea eax, [esp + 0x34]
sub dl, 0x22
mov word [0x42b9b4], cx
push eax
mov byte [0x42b9a7], dl
call fcn.00422def
mov ebx, eax
pop ecx
pop ecx
test ebx, ebx
je 0x415e86
mov eax, dword [0x42b9ac]
mov byte [esp + 0x24], 0
lea ecx, [eax + 0x5f]
add eax, 0x7493cd5
mov byte [0x42b9a7], cl
mov ecx, dword [0x42b994]
mov dword [0x42b994], eax
add ecx, 0x1db3
lea eax, [esp + 0x20]
and ecx, 0x5e14
push eax
lea eax, [esp + 0x20]
mov word [0x42b9b4], cx
push eax
push 0
call fcn.004057dc
mov edx, dword [0x42b994]
add esp, 0xc
xor edx, 0xe78351bc
cmp word [eax], 0x31
jne 0x415e27
mov ecx, edx
mov byte [esp + 0x24], 1
or ecx, 0x79f7
jmp 0x415e2e
mov cx, word [0x42b9b4]
push dword [esp + 0x24]
lea eax, [edx - 0x3a437419]
mov edx, ebp
mov dword [0x42b9ac], eax
movzx eax, cx
mov ecx, esi
xor eax, 0x5d2dbde9
mov dword [0x42b994], eax
or eax, 0x7508
push ebx
mov word [0x42b9b4], ax
call fcn.00415f2f
mov eax, dword [0x42b994]
add eax, 0x6134
push ebx
mov word [0x42b9b4], ax
call fcn.004056f0
add esp, 0xc
jmp 0x415e86
mov al, byte [0x42b9b4]
add al, 0x40
mov byte [0x42b9a7], al
mov eax, dword [0x42b994]
add eax, 0xffffd3ad
push ebp
mov word [0x42b9b4], ax
call fcn.004056f0
pop ecx
mov ecx, dword [0x42b994]
lea eax, [esp + 0x20]
xor ecx, 0x8b9d1a28
push eax
lea eax, [esp + 0x20]
mov dword [0x42b9ac], ecx
push eax
push 0
call fcn.004057dc
mov ebx, eax
add esp, 0xc
test ebx, ebx
je 0x415ed4
mov dl, byte [0x42b9a7]
jmp 0x415bc1
movzx ecx, word [0x42b9b4]
and ecx, 0xad303078
mov al, cl
mov dword [0x42b9ac], ecx
or al, 0x5e
mov byte [0x42b9a7], al
lea eax, [ecx + 0x4d12]
push esi
mov word [0x42b9b4], ax
call fcn.004056f0
pop ecx
mov eax, dword [0x42b994]
add eax, 0xf1c83019
push edi
mov dword [0x42b9ac], eax
call fcn.004056f0
pop ecx
jmp 0x415f27
mov al, byte [0x42b9b4]
or al, 0x6e
mov byte [0x42b9a7], al
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x2c
ret