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

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0x48
cmp byte [esp + 0x60], 0
je 0x422ad0
mov eax, dword [esp + 0x68]
mov ebx, dword [esp + 0x5c]
mov ebp, dword [eax + 4]
mov eax, 0xfffffffe
nop
nop
cmp word [ebp + eax + 2], 0
lea eax, [eax + 2]
jne 0x422aa0
mov ecx, 0xfffffffe
cmp word [ebx + ecx + 2], 0
lea ecx, [ecx + 2]
jne 0x422ab0
sar eax, 1
sar ecx, 1
lea edx, [eax + ecx]
add edx, 0x1f
test edx, edx
jns 0x422ad7
mov eax, 0xffffffff
jmp 0x422ae0
xor ebx, ebx
jmp 0x422d64
add eax, ecx
lea eax, [eax*2 + 0x3e]
push eax
call fcn.00408330
add esp, 4
mov esi, eax
movzx ecx, word [ebp]
test cx, cx
je 0x422b12
add ebp, 2
mov eax, esi
nop
nop
nop
nop
nop
nop
nop
mov word [eax], cx
add eax, 2
movzx ecx, word [ebp]
add ebp, 2
test cx, cx
jne 0x422b00
mov word [eax], 0x5c
mov dword [esp], 0x490447fa
mov dword [esp + 4], 0x4def4be5
mov dword [esp + 8], 0xb11c4fef
mov dword [esp + 0xc], 0xb520b301
mov dword [esp + 0x10], 0xb92cb717
mov dword [esp + 0x14], 0xbd00bb1f
mov dword [esp + 0x18], 0xa10ebff7
mov dword [esp + 0x1c], 0xa501a306
mov dword [esp + 0x20], 0xa90da73e
mov dword [esp + 0x24], 0xad10ab0e
mov dword [esp + 0x28], 0x9139afe2
mov dword [esp + 0x2c], 0x95319304
mov dword [esp + 0x30], 0x993797d5
mov dword [esp + 0x34], 0x9d319b37
mov dword [esp + 0x38], 0x81809f22
xor ebp, ebp
mov ecx, ebp
xor ecx, 0xa5d6fe09
mov edx, ebp
or edx, 0x36
and edx, ecx
mov edi, ebp
and edi, 9
mov ecx, ebp
xor ecx, 0x5a2901f6
sub ecx, edi
add ecx, ebp
mov edi, ecx
and edi, edx
xor ecx, edx
lea ecx, [ecx + edi*2]
xor cl, byte [esp + ebp]
add cl, 0x50
mov byte [esp + ebp], cl
inc ebp
cmp ebp, 0x3c
jne 0x422b90
add eax, 2
movzx ecx, word [ebx]
test cx, cx
je 0x422bf1
add ebx, 2
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov word [eax], cx
add eax, 2
movzx ecx, word [ebx]
add ebx, 2
test cx, cx
jne 0x422be0
mov word [eax], 0
movzx ecx, word [esp]
test cx, cx
je 0x422c21
lea edx, [esp + 2]
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov word [eax], cx
add eax, 2
movzx ecx, word [edx]
add edx, 2
test cx, cx
jne 0x422c10
mov word [eax], 0
mov dword [esp + 0x3c], 0x618e7f94
mov dword [esp + 0x40], 0x65c963c7
mov dword [esp + 0x44], 0x696867ca
mov eax, 0x172660e
mov ecx, 0xd99f1
nop
nop
nop
nop
nop
nop
nop
nop
movzx edx, byte [esp + eax - 0x17265d2]
lea edi, [eax - 0x1726600]
not edi
mov ebx, ecx
and ebx, 0x8996f
and edi, 0xf
mov ebp, eax
and ebp, 0x1524610
or ebp, ebx
or ebp, edi
xor edx, 0x8828b96f
mov edi, edx
and edi, ebp
add edx, ebp
add edi, edi
sub edx, edi
add dl, 0x90
mov byte [esp + eax - 0x17265d2], dl
inc eax
dec ecx
cmp eax, 0x172661a
jne 0x422c50
mov dword [esp], 0x7b9b79b5
mov dword [esp + 4], 0x7f927d95
mov dword [esp + 8], 0x32d01f3
mov dword [esp + 0xc], 0x7ef05d3
mov dword [esp + 0x10], 0xbee09e6
mov dword [esp + 0x14], 0xff90de3
mov dword [esp + 0x18], 0x133211e3
mov dword [esp + 0x1c], 0x17f715d9
mov dword [esp + 0x20], 0x1bf619f1
mov word [esp + 0x24], 0x1d1c
mov eax, 0x635685f7
nop
nop
nop
movzx ecx, byte [esp + eax - 0x635685f7]
lea ebx, [eax - 0x6356853f]
and ebx, ecx
mov edi, ebx
and edi, 2
mov ebp, ebx
or ebp, 0xfffffffd
inc ebp
mov edx, ebx
and edx, 0xfffffffd
imul edx, ebp
or ebx, 2
imul ebx, edi
sub edx, ebx
add ecx, eax
add edx, ecx
and ecx, 1
or edx, 1
add edx, ecx
mov byte [esp + eax - 0x635685f7], dl
inc eax
cmp eax, 0x6356861d
jne 0x422cf0
lea eax, [esp + 0x3c]
mov ecx, esp
push 0
push 4
push 0xc00000
push eax
push esi
push ecx
mov eax, dword [esp + 0x80]
push dword [eax]
call fcn.0041e6c0
add esp, 0x1c
mov ebx, eax
push esi
call fcn.00408340
add esp, 4
mov eax, ebx
add esp, 0x48
pop esi
pop edi
pop ebx
pop ebp
ret 0x10