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

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff0
sub esp, 0xa30
mov esi, esp
push 0x1000
call fcn.00408fc0
add esp, 4
mov dword [esi + 0x5c], eax
mov dword [esi + 0x530], 0xd300f61c
mov dword [esi + 0x534], 0x154451c1
mov word [esi + 0x538], 0xd9fe
mov dword [esi + 0x53a], 0
mov dword [esi + 0x53e], 0
mov word [esi + 0x542], 0
xor eax, eax
xor ecx, ecx
nop
mov dword [esi], eax
movzx edi, byte [esi + ecx + 0x530]
mov eax, ecx
xor eax, 0x89fb0485
mov edx, dword [esi]
and edx, 0x34
sub edx, eax
mov eax, edx
not eax
mov ebx, edx
and ebx, edi
and eax, edi
xor edx, edi
add edx, edi
not edx
add edx, eax
or edx, ebx
not edx
mov dword [esi + 0xc0], edx
mov edi, dword [esi + 0xc0]
mov eax, edi
xor eax, 0xa2
mov edx, edi
and edx, 0xa0
and edi, 2
mov ebx, edi
xor ebx, 2
imul ebx, edx
add ebx, eax
or edx, 2
imul edx, edi
add edx, ebx
inc dl
mov byte [esi + ecx + 0x530], dl
mov eax, dword [esi]
inc ecx
add eax, 2
cmp ecx, 0x14
jne 0x4285b0
mov eax, dword [0x446ac4]
mov dword [esi + 8], eax
mov dword [esi + 0x820], 0xf0d2ccaa
mov dword [esi + 0x824], 0xe100b0b
mov dword [esi + 0x828], 0x2a383c2f
mov dword [esi + 0x82c], 0x31313438
mov word [esi + 0x830], 0xe1ca
mov byte [esi + 0x832], 0x82
mov dword [esi + 0x833], 0
mov byte [esi + 0x837], 0
mov edx, 0x792b8b18
mov ecx, 0x6d474e7
nop
nop
nop
mov dword [esi], ecx
movzx edi, byte [esi + edx - 0x792b82f8]
lea eax, [edi + edi]
not eax
add eax, edi
or eax, ecx
mov ecx, edx
or ecx, edi
and ecx, eax
not ecx
and ecx, edx
lea eax, [ecx + ecx]
not eax
add eax, ecx
mov ebx, ecx
and ebx, 0x39018a25
and eax, 0xc23a1198
or eax, ebx
xor eax, 0xc23a1198
mov ebx, ecx
or ebx, 0xfffffffd
inc ebx
imul ebx, eax
mov eax, ecx
and eax, 2
or ecx, 2
imul ecx, eax
add ebx, edi
sub ebx, ecx
add ebx, edx
mov dword [esi + 0xc0], ebx
mov eax, dword [esi + 0xc0]
mov ecx, eax
and ecx, 0xafcf3257
or eax, 0xafcf3257
add eax, ecx
add eax, 0xe4d62c4e
mov ecx, eax
xor ecx, 0x4d
and eax, 0x32
add eax, eax
sub eax, ecx
mov ecx, dword [esi]
mov byte [esi + edx - 0x792b82f8], al
inc edx
dec ecx
cmp edx, 0x792b8b30
jne 0x428680
mov eax, dword [str.K8DY38__ner]
mov dword [esi + 4], eax
mov dword [esi + 0xc0], 0xf82a050b
mov dword [esi + 0xc4], 0xfef201e5
mov dword [esi + 0xc8], 0xd70c2bf7
mov dword [esi + 0xcc], 0xc3280923
mov dword [esi + 0xd0], 0xfcc7c6cd
mov dword [esi + 0xd4], 0xcec9c0c0
mov dword [esi + 0xd8], 0x362ac8c0
mov dword [esi + 0xdc], 0xc0c3173a
mov dword [esi + 0xe0], 0xd7eff82c
mov dword [esi + 0xe4], 0xded421d6
mov dword [esi + 0xe8], 0x2b0ad0e7
mov dword [esi + 0xec], 0x24d3dd0a
mov dword [esi + 0xf0], 0x1c271a25
mov dword [esi + 0xf4], 0x231b242c
mov dword [esi + 0xf8], 0xcd202c10
mov dword [esi + 0xfc], 0x3c0cd9e9
mov dword [esi + 0x100], 0xee0b3635
mov dword [esi + 0x104], 0x34eec1fc
mov dword [esi + 0x108], 0xed003939
mov dword [esi + 0x10c], 0x3e33e6ca
mov dword [esi + 0x110], 0xf3cbcaf6
mov dword [esi + 0x114], 0xc3cec1cc
mov dword [esi + 0x118], 0x2ffccee8
mov dword [esi + 0x11c], 0xe7ded52d
mov byte [esi + 0x120], 0x86
mov byte [esi + 0x129], 0
mov dword [esi + 0x125], 0
mov dword [esi + 0x121], 0
mov eax, 0x4b875151
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov dword [esi], eax
mov eax, dword [esi]
movzx eax, byte [esi + eax - 0x4b875091]
xor eax, dword [esi]
mov dword [esi + 0x450], eax
mov edi, dword [esi + 0x450]
mov ecx, edi
and ecx, 0x10b33935
or ecx, 2
mov eax, edi
and eax, 2
imul ecx, eax
xor eax, 2
mov ebx, edi
and ebx, 0x35
imul ebx, eax
mov edx, edi
sub ebx, edi
xor edi, 0xef4cc6c8
lea eax, [edi + edi]
not eax
add eax, edi
or edx, 0xef4cc6c8
and eax, edx
mov edi, eax
and edi, 0xfd
mov edx, eax
and edx, 2
or eax, 2
imul eax, edx
xor edx, 2
imul edx, edi
add ebx, ecx
add ebx, eax
mov eax, dword [esi]
add ebx, edx
add bl, 0xc9
mov byte [esi + eax - 0x4b875091], bl
inc eax
cmp eax, 0x4b8751bb
jne 0x428840
movzx eax, byte [esi + 0xc0]
mov edx, dword [esi + 0x5c]
mov edi, edx
test al, al
je 0x4288eb
lea ecx, [esi + 0xc1]
mov edi, edx
mov byte [edi], al
inc edi
movzx eax, byte [ecx]
inc ecx
test al, al
jne 0x4288e0
mov byte [edi], 0
mov ecx, dword [esi + 4]
movzx eax, byte [ecx]
test al, al
je 0x42890b
inc ecx
nop
nop
nop
nop
nop
nop
nop
mov byte [edi], al
inc edi
movzx eax, byte [ecx]
inc ecx
test al, al
jne 0x428900
mov byte [edi], 0
movzx eax, byte [esi + 0x820]
test al, al
je 0x42892b
lea ecx, [esi + 0x821]
nop
mov byte [edi], al
inc edi
movzx eax, byte [ecx]
inc ecx
test al, al
jne 0x428920
mov byte [edi], 0
mov ecx, dword [esi + 8]
movzx eax, byte [ecx]
test al, al
je 0x42894b
inc ecx
nop
nop
nop
nop
nop
nop
nop
mov byte [edi], al
inc edi
movzx eax, byte [ecx]
inc ecx
test al, al
jne 0x428940
mov byte [edi], 0
movzx eax, byte [esi + 0x530]
test al, al
je 0x42896b
lea ecx, [esi + 0x531]
nop
mov byte [edi], al
inc edi
movzx eax, byte [ecx]
inc ecx
test al, al
jne 0x428960
mov byte [edi], 0
push 0
call fcn.0043f910
add esp, 4
xor ecx, ecx
test eax, eax
setne cl
jmp dword [ecx*4 + 0x44a0f8]