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

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0x44
mov ecx, dword [esp + 0x58]
mov esi, 0xffffaf00
test ecx, ecx
je 0x426d58
mov eax, dword [ecx]
test eax, eax
je 0x426d58
mov ebp, dword [ecx + 8]
test ebp, ebp
je 0x426d58
mov edi, dword [esp + 0x60]
mov ebx, dword [esp + 0x5c]
movzx edx, byte [eax + 5]
cmp edx, edi
jae 0x426a0d
mov eax, dword [eax]
cmp eax, 0xa
je 0x42697f
cmp eax, 9
jne 0x426d49
push 0
mov ebp, ecx
push dword [ecx + 4]
call fcn.00439a00
jmp 0x42698b
push 1
mov ebp, ecx
push dword [ecx + 4]
call fcn.0043a950
add esp, 8
mov esi, eax
test eax, eax
jne 0x426d49
mov eax, dword [ebp]
test eax, eax
je 0x4269c4
mov ecx, ebp
mov eax, dword [eax]
cmp eax, 0xa
je 0x4269ce
mov esi, 0xffffaf00
cmp eax, 9
jne 0x426d49
mov ebp, ecx
push edi
push ebx
push dword [ecx + 4]
call fcn.0043a5f0
jmp 0x4269da
mov esi, 0xffffaf00
jmp 0x426d49
push edi
push ebx
mov ebp, ecx
push dword [ecx + 4]
call fcn.0043bb50
add esp, 0xc
mov esi, eax
test eax, eax
jne 0x426d49
lea ebx, [esp + 0x14]
push ebx
push ebp
call fcn.00426630
add esp, 8
mov esi, eax
test eax, eax
jne 0x426d49
mov eax, dword [ebp]
mov ebp, dword [ebp + 8]
movzx edi, byte [eax + 4]
movzx edx, byte [eax + 5]
lea esi, [edx + ebp]
mov dword [esp + 0xc], edx
push edx
push 0x36
push ebp
call sub.msvcrt.dll_memset
add esp, 0xc
mov eax, dword [esp + 0x58]
mov eax, dword [eax]
movzx eax, byte [eax + 5]
push eax
push 0x5c
mov dword [esp + 0x18], esi
push esi
call sub.msvcrt.dll_memset
add esp, 0xc
xor eax, eax
cmp edi, 4
jb 0x426a63
xor ecx, ecx
nop word cs:[eax + eax]
mov eax, dword [ebx + ecx]
xor dword [ebp + ecx], eax
lea eax, [ecx + 4]
add ecx, 8
cmp ecx, edi
mov ecx, eax
jbe 0x426a50
mov ecx, edi
sub ecx, eax
mov esi, dword [esp + 0xc]
jbe 0x426b8a
cmp ecx, 8
jb 0x426b27
mov dword [esp], ecx
lea edx, [eax + ebp]
lea esi, [ebx + eax]
lea ecx, [ebx + edi]
cmp edx, ecx
jae 0x426a95
lea ecx, [edi + ebp]
cmp esi, ecx
jb 0x426b27
mov dword [esp + 8], esi
xor ecx, ecx
cmp dword [esp], 0x10
jb 0x426ae9
mov dword [esp + 4], edi
mov ecx, dword [esp]
and ecx, 0xfffffff0
xor esi, esi
nop dword [eax]
movups xmm0, xmmword [edx + esi]
mov edi, edx
mov edx, dword [esp + 8]
movups xmm1, xmmword [edx + esi]
mov edx, edi
xorps xmm1, xmm0
movups xmmword [edi + esi], xmm1
add esi, 0x10
cmp ecx, esi
jne 0x426ab0
cmp dword [esp], ecx
mov esi, dword [esp + 0xc]
mov edi, dword [esp + 4]
je 0x426b8a
test byte [esp], 8
jne 0x426ae9
add eax, ecx
jmp 0x426b27
mov esi, dword [esp]
and esi, 0xfffffff8
mov dword [esp + 4], esi
add eax, esi
mov esi, dword [esp + 8]
nop dword [eax]
movsd xmm0, qword [edx + ecx]
movsd xmm1, qword [esi + ecx]
xorps xmm1, xmm0
movlps qword [edx + ecx], xmm1
add ecx, 8
cmp dword [esp + 4], ecx
jne 0x426b00
mov ecx, dword [esp + 4]
cmp dword [esp], ecx
mov esi, dword [esp + 0xc]
je 0x426b8a
mov edx, edi
sub edx, eax
mov esi, eax
not esi
add esi, edi
and edx, 3
je 0x426b4c
nop word cs:[eax + eax]
movzx ecx, byte [ebx + eax]
xor byte [ebp + eax], cl
inc eax
dec edx
jne 0x426b40
cmp esi, 3
mov esi, dword [esp + 0xc]
jb 0x426b8a
nop word cs:[eax + eax]
movzx ecx, byte [ebx + eax]
xor byte [ebp + eax], cl
movzx ecx, byte [ebx + eax + 1]
xor byte [ebp + eax + 1], cl
movzx ecx, byte [ebx + eax + 2]
xor byte [ebp + eax + 2], cl
movzx ecx, byte [ebx + eax + 3]
xor byte [ebp + eax + 3], cl
add eax, 4
cmp edi, eax
jne 0x426b60
xor eax, eax
cmp edi, 4
mov edx, dword [esp + 0x10]
jb 0x426bb2
xor ecx, ecx
nop word [eax + eax]
mov eax, dword [ebx + ecx]
xor dword [edx + ecx], eax
lea eax, [ecx + 4]
add ecx, 8
cmp ecx, edi
mov ecx, eax
jbe 0x426ba0
mov ecx, edi
sub ecx, eax
jbe 0x426cd9
cmp ecx, 8
jb 0x426c73
mov dword [esp], ecx
lea edx, [esi + eax]
add edx, ebp
lea ecx, [ebx + eax]
mov dword [esp + 8], ecx
lea ecx, [ebx + edi]
cmp edx, ecx
jae 0x426bea
lea ecx, [esi + edi]
add ecx, ebp
cmp dword [esp + 8], ecx
jb 0x426c73
xor ecx, ecx
cmp dword [esp], 0x10
jb 0x426c35
mov dword [esp + 4], edi
mov ecx, dword [esp]
and ecx, 0xfffffff0
xor esi, esi
nop
movups xmm0, xmmword [edx + esi]
mov edi, edx
mov edx, dword [esp + 8]
movups xmm1, xmmword [edx + esi]
mov edx, edi
xorps xmm1, xmm0
movups xmmword [edi + esi], xmm1
add esi, 0x10
cmp ecx, esi
jne 0x426c00
cmp dword [esp], ecx
mov edi, dword [esp + 4]
je 0x426cd9
test byte [esp], 8
jne 0x426c35
add eax, ecx
jmp 0x426c73
mov esi, dword [esp]
and esi, 0xfffffff8
mov dword [esp + 4], esi
add eax, esi
mov esi, dword [esp + 8]
nop word cs:[eax + eax]
movsd xmm0, qword [edx + ecx]
movsd xmm1, qword [esi + ecx]
xorps xmm1, xmm0
movlps qword [edx + ecx], xmm1
add ecx, 8
cmp dword [esp + 4], ecx
jne 0x426c50
mov ecx, dword [esp + 4]
cmp dword [esp], ecx
je 0x426cd9
mov edx, edi
sub edx, eax
mov ecx, eax
not ecx
add ecx, edi
and edx, 3
mov dword [esp + 4], ecx
je 0x426c9b
mov esi, dword [esp + 0x10]
nop word [eax + eax]
movzx ecx, byte [ebx + eax]
xor byte [esi + eax], cl
inc eax
dec edx
jne 0x426c90
cmp dword [esp + 4], 3
mov ecx, dword [esp + 0xc]
jb 0x426cd9
add ecx, ebp
add ecx, 3
nop dword [eax + eax]
movzx edx, byte [ebx + eax]
xor byte [ecx + eax - 3], dl
movzx edx, byte [ebx + eax + 1]
xor byte [ecx + eax - 2], dl
movzx edx, byte [ebx + eax + 2]
xor byte [ecx + eax - 1], dl
movzx edx, byte [ebx + eax + 3]
xor byte [ecx + eax], dl
add eax, 4
cmp edi, eax
jne 0x426cb0
mov ecx, dword [esp + 0x58]
mov eax, dword [ecx]
mov esi, 0xffffaf00
test eax, eax
je 0x426d49
mov eax, dword [eax]
cmp eax, 0xa
je 0x426d02
cmp eax, 9
jne 0x426d49
push 0
mov edi, ecx
push dword [ecx + 4]
call fcn.00439a00
jmp 0x426d0e
push 1
mov edi, ecx
push dword [ecx + 4]
call fcn.0043a950
add esp, 8
mov esi, eax
test eax, eax
jne 0x426d49
mov ecx, dword [edi]
movzx eax, byte [ecx + 5]
mov ecx, dword [ecx]
cmp ecx, 0xa
je 0x426d3a
mov esi, 0xffffaf00
cmp ecx, 9
jne 0x426d49
push eax
push ebp
push dword [edi + 4]
call fcn.0043a5f0
jmp 0x426d44
push eax
push ebp
push dword [edi + 4]
call fcn.0043bb50
add esp, 0xc
mov esi, eax
lea eax, [esp + 0x14]
push 0x30
push eax
call fcn.00426070
add esp, 8
mov eax, esi
add esp, 0x44
pop esi
pop edi
pop ebx
pop ebp
ret