Function at 0x429770
Capabilities:
Authenticate hmac

Disassembly:
push rdi
push rsi
push rbx
mov r8, qword [rcx + 0x90]
xor eax, eax
cmp dword [r8 + 0xc], 0xffffffff
je 0x429790
pop rbx
pop rsi
pop rdi
ret
mov r9d, dword [rdx + 0xc]
test r9d, r9d
js 0x429783
mov rcx, qword [rcx + 0x98]
mov rax, qword [rdx + 0x90]
lea rbx, [rdx + 0x90]
mov rdx, qword [rdx + 0x98]
lea r10, [rcx + 0x90]
xor rax, qword [rcx + 0x90]
xor rdx, qword [r10 + 8]
or rdx, rax
jne 0x42a003
mov rsi, qword [rbx + 0x10]
mov rdi, qword [rbx + 0x18]
xor rsi, qword [r10 + 0x10]
xor rdi, qword [r10 + 0x18]
or rdi, rsi
jne 0x42a003
mov r11, qword [rbx + 0x20]
mov r9, qword [rbx + 0x28]
xor r11, qword [r10 + 0x20]
xor r9, qword [r10 + 0x28]
or r9, r11
jne 0x42a003
mov rax, qword [rbx + 0x30]
mov rbx, qword [rbx + 0x38]
xor rax, qword [r10 + 0x30]
xor rbx, qword [r10 + 0x38]
or rbx, rax
jne 0x42a003
movzx edx, byte [rcx]
mov byte [r8], dl
movzx esi, byte [rcx + 1]
mov byte [r8 + 1], sil
movzx edi, byte [rcx + 2]
mov byte [r8 + 2], dil
movzx r11d, byte [rcx + 3]
mov byte [r8 + 3], r11b
movzx r9d, byte [rcx + 4]
mov byte [r8 + 4], r9b
movzx eax, byte [rcx + 5]
mov byte [r8 + 5], al
mov ebx, dword [rcx + 8]
mov dword [r8 + 8], ebx
mov edx, dword [rcx + 0xc]
mov dword [r8 + 0xc], edx
mov esi, dword [rcx + 0x10]
lea rdx, [rcx + 0x30]
mov dword [r8 + 0x10], esi
mov rdi, qword [rcx + 0x18]
mov qword [r8 + 0x18], rdi
mov r11, qword [rcx + 0x20]
mov qword [r8 + 0x20], r11
mov r9, qword [rcx + 0x28]
lea r11, [rcx + 0x40]
mov qword [r8 + 0x28], r9
lea r9, [r8 + 0x30]
cmp r11, r9
jbe 0x429896
lea rax, [r8 + 0x40]
cmp rdx, rax
jb 0x42a080
mov rax, rdx
neg rax
and eax, 0xf
je 0x42a0f2
movzx r9d, byte [rcx + 0x30]
cmp rax, 1
lea rdx, [rcx + 0x31]
mov byte [r8 + 0x30], r9b
lea r9, [r8 + 0x31]
je 0x42a11e
movzx edx, byte [rcx + 0x31]
cmp rax, 2
lea r9, [r8 + 0x32]
mov byte [r8 + 0x31], dl
lea rdx, [rcx + 0x32]
je 0x42a114
movzx r11d, byte [rcx + 0x32]
cmp rax, 3
lea r9, [r8 + 0x33]
lea rdx, [rcx + 0x33]
mov byte [r8 + 0x32], r11b
je 0x42a1aa
movzx edi, byte [rcx + 0x33]
cmp rax, 4
lea r9, [r8 + 0x34]
lea rdx, [rcx + 0x34]
mov byte [r8 + 0x33], dil
je 0x42a1a0
movzx ebx, byte [rcx + 0x34]
cmp rax, 5
lea r9, [r8 + 0x35]
lea rdx, [rcx + 0x35]
mov byte [r8 + 0x34], bl
je 0x42a196
movzx esi, byte [rcx + 0x35]
cmp rax, 6
lea r9, [r8 + 0x36]
lea rdx, [rcx + 0x36]
mov byte [r8 + 0x35], sil
je 0x42a18c
movzx r9d, byte [rcx + 0x36]
cmp rax, 7
lea rdx, [rcx + 0x37]
mov byte [r8 + 0x36], r9b
lea r9, [r8 + 0x37]
je 0x42a238
movzx edx, byte [rcx + 0x37]
cmp rax, 8
lea r9, [r8 + 0x38]
mov byte [r8 + 0x37], dl
lea rdx, [rcx + 0x38]
je 0x42a22e
movzx r11d, byte [rcx + 0x38]
cmp rax, 9
lea r9, [r8 + 0x39]
lea rdx, [rcx + 0x39]
mov byte [r8 + 0x38], r11b
je 0x42a224
movzx edi, byte [rcx + 0x39]
cmp rax, 0xa
lea r9, [r8 + 0x3a]
lea rdx, [rcx + 0x3a]
mov byte [r8 + 0x39], dil
je 0x42a21a
movzx ebx, byte [rcx + 0x3a]
cmp rax, 0xb
lea r9, [r8 + 0x3b]
lea rdx, [rcx + 0x3b]
mov byte [r8 + 0x3a], bl
je 0x42a210
movzx esi, byte [rcx + 0x3b]
cmp rax, 0xc
lea r9, [r8 + 0x3c]
lea rdx, [rcx + 0x3c]
mov byte [r8 + 0x3b], sil
je 0x42a263
movzx r9d, byte [rcx + 0x3c]
cmp rax, 0xd
lea rdx, [rcx + 0x3d]
mov byte [r8 + 0x3c], r9b
lea r9, [r8 + 0x3d]
je 0x42a277
movzx edx, byte [rcx + 0x3d]
cmp rax, 0xe
lea r9, [r8 + 0x3e]
mov byte [r8 + 0x3d], dl
lea rdx, [rcx + 0x3e]
je 0x42a26d
movzx r11d, byte [rcx + 0x3e]
lea r9, [r8 + 0x3f]
lea rdx, [rcx + 0x3f]
mov esi, 0x51
mov byte [r8 + 0x3e], r11b
mov ebx, 0x60
mov edi, 5
sub rbx, rax
add rax, 0x30
lea r11, [rcx + rax]
add rax, r8
add rax, 0x10
movdqa xmm1, xmmword [r11]
add r11, 0x10
movups xmmword [rax - 0x10], xmm1
cmp rdi, 5
movdqa xmm2, xmmword [r11]
movups xmmword [rax], xmm2
movdqa xmm3, xmmword [r11 + 0x10]
movups xmmword [rax + 0x10], xmm3
movdqa xmm4, xmmword [r11 + 0x20]
movups xmmword [rax + 0x20], xmm4
movdqa xmm5, xmmword [r11 + 0x30]
movups xmmword [rax + 0x30], xmm5
je 0x42a0e1
add rdx, 0x60
add r9, 0x60
cmp rbx, 0x60
movdqa xmm0, xmmword [r11 + 0x40]
movups xmmword [rax + 0x40], xmm0
lea rax, [rsi - 0x60]
je 0x429b86
cmp rax, 1
movzx edi, byte [rdx]
mov byte [r9], dil
je 0x429b86
movzx ebx, byte [rdx + 1]
cmp rax, 2
mov byte [r9 + 1], bl
je 0x429b86
movzx esi, byte [rdx + 2]
cmp rax, 3
mov byte [r9 + 2], sil
je 0x429b86
movzx r11d, byte [rdx + 3]
cmp rax, 4
mov byte [r9 + 3], r11b
je 0x429b86
movzx edi, byte [rdx + 4]
cmp rax, 5
mov byte [r9 + 4], dil
je 0x429b86
movzx ebx, byte [rdx + 5]
cmp rax, 6
mov byte [r9 + 5], bl
je 0x429b86
movzx esi, byte [rdx + 6]
cmp rax, 7
mov byte [r9 + 6], sil
je 0x429b86
movzx r11d, byte [rdx + 7]
cmp rax, 8
mov byte [r9 + 7], r11b
je 0x429b86
movzx edi, byte [rdx + 8]
cmp rax, 9
mov byte [r9 + 8], dil
je 0x429b86
movzx ebx, byte [rdx + 9]
cmp rax, 0xa
mov byte [r9 + 9], bl
je 0x429b86
movzx esi, byte [rdx + 0xa]
cmp rax, 0xb
mov byte [r9 + 0xa], sil
je 0x429b86
movzx r11d, byte [rdx + 0xb]
cmp rax, 0xc
mov byte [r9 + 0xb], r11b
je 0x429b86
movzx edi, byte [rdx + 0xc]
cmp rax, 0xd
mov byte [r9 + 0xc], dil
je 0x429b86
movzx ebx, byte [rdx + 0xd]
cmp rax, 0xe
mov byte [r9 + 0xd], bl
je 0x429b86
movzx edx, byte [rdx + 0xe]
mov byte [r9 + 0xe], dl
movdqu xmm1, xmmword [rcx + 0x90]
lea rdi, [r8 + 0xe0]
lea rbx, [rcx + 0xf0]
lea rdx, [rcx + 0xe0]
movups xmmword [r8 + 0x90], xmm1
cmp rdi, rbx
movdqu xmm2, xmmword [r10 + 0x10]
movups xmmword [r8 + 0xa0], xmm2
movdqu xmm3, xmmword [r10 + 0x20]
movups xmmword [r8 + 0xb0], xmm3
mov r9, qword [r10 + 0x30]
mov r10, qword [r10 + 0x38]
mov qword [r8 + 0xc0], r9
mov qword [r8 + 0xc8], r10
mov eax, dword [rcx + 0xd0]
mov dword [r8 + 0xd0], eax
mov esi, dword [rcx + 0xd8]
mov dword [r8 + 0xd8], esi
mov r11d, dword [rcx + 0xdc]
mov dword [r8 + 0xdc], r11d
jae 0x429c1a
lea r9, [r8 + 0xf0]
cmp rdx, r9
jb 0x42a010
mov rax, rdx
neg rax
and eax, 0xf
je 0x42a133
movzx edi, byte [rcx + 0xe0]
cmp rax, 1
lea rdx, [rcx + 0xe1]
mov byte [r8 + 0xe0], dil
lea rdi, [r8 + 0xe1]
je 0x42a128
movzx edx, byte [rcx + 0xe1]
cmp rax, 2
lea rdi, [r8 + 0xe2]
mov byte [r8 + 0xe1], dl
lea rdx, [rcx + 0xe2]
je 0x42a160
movzx r9d, byte [rcx + 0xe2]
cmp rax, 3
lea rdi, [r8 + 0xe3]
lea rdx, [rcx + 0xe3]
mov byte [r8 + 0xe2], r9b
je 0x42a16b
movzx esi, byte [rcx + 0xe3]
cmp rax, 4
lea rdi, [r8 + 0xe4]
lea rdx, [rcx + 0xe4]
mov byte [r8 + 0xe3], sil
je 0x42a181
movzx ebx, byte [rcx + 0xe4]
cmp rax, 5
lea rdi, [r8 + 0xe5]
lea rdx, [rcx + 0xe5]
mov byte [r8 + 0xe4], bl
je 0x42a176
movzx r11d, byte [rcx + 0xe5]
cmp rax, 6
lea rdi, [r8 + 0xe6]
lea rdx, [rcx + 0xe6]
mov byte [r8 + 0xe5], r11b
je 0x42a1b4
movzx r10d, byte [rcx + 0xe6]
cmp rax, 7
lea rdi, [r8 + 0xe7]
lea rdx, [rcx + 0xe7]
mov byte [r8 + 0xe6], r10b
je 0x42a1bf
movzx edi, byte [rcx + 0xe7]
cmp rax, 8
lea rdx, [rcx + 0xe8]
mov byte [r8 + 0xe7], dil
lea rdi, [r8 + 0xe8]
je 0x42a1ef
movzx edx, byte [rcx + 0xe8]
cmp rax, 9
lea rdi, [r8 + 0xe9]
mov byte [r8 + 0xe8], dl
lea rdx, [rcx + 0xe9]
je 0x42a1e4
movzx r9d, byte [rcx + 0xe9]
cmp rax, 0xa
lea rdi, [r8 + 0xea]
lea rdx, [rcx + 0xea]
mov byte [r8 + 0xe9], r9b
je 0x42a205
movzx esi, byte [rcx + 0xea]
cmp rax, 0xb
lea rdi, [r8 + 0xeb]
lea rdx, [rcx + 0xeb]
mov byte [r8 + 0xea], sil
je 0x42a1fa
movzx ebx, byte [rcx + 0xeb]
cmp rax, 0xc
lea rdi, [r8 + 0xec]
lea rdx, [rcx + 0xec]
mov byte [r8 + 0xeb], bl
je 0x42a24d
movzx r11d, byte [rcx + 0xec]
cmp rax, 0xd
lea rdi, [r8 + 0xed]
lea rdx, [rcx + 0xed]
mov byte [r8 + 0xec], r11b
je 0x42a242
movzx r10d, byte [rcx + 0xed]
cmp rax, 0xe
lea rdi, [r8 + 0xee]
lea rdx, [rcx + 0xee]
mov byte [r8 + 0xed], r10b
je 0x42a258
movzx edi, byte [rcx + 0xee]
lea rdx, [rcx + 0xef]
mov r10d, 0x99
mov byte [r8 + 0xee], dil
lea rdi, [r8 + 0xef]
mov r11d, 0xa8
sub r11, rax
add rax, 0xe0
add rcx, rax
add r8, rax
mov rbx, r11
movdqa xmm5, xmmword [rcx]
lea rsi, [rcx + 0x10]
shr rbx, 4
add r8, 0x10
movups xmmword [r8 - 0x10], xmm5
cmp rbx, 9
movdqa xmm0, xmmword [rsi]
movups xmmword [r8], xmm0
movdqa xmm1, xmmword [rsi + 0x10]
movups xmmword [r8 + 0x10], xmm1
movdqa xmm2, xmmword [rsi + 0x20]
movups xmmword [r8 + 0x20], xmm2
movdqa xmm3, xmmword [rsi + 0x30]
movups xmmword [r8 + 0x30], xmm3
movdqa xmm4, xmmword [rsi + 0x40]
movups xmmword [r8 + 0x40], xmm4
movdqa xmm5, xmmword [rsi + 0x50]
movups xmmword [r8 + 0x50], xmm5
movdqa xmm0, xmmword [rsi + 0x60]
movups xmmword [r8 + 0x60], xmm0
movdqa xmm1, xmmword [rsi + 0x70]
movups xmmword [r8 + 0x70], xmm1
je 0x42a1ca
add rdx, 0xa0
add rdi, 0xa0
cmp r11, 0xa0
movdqa xmm2, xmmword [rsi + 0x80]
movups xmmword [r8 + 0x80], xmm2
lea r8, [r10 - 0xa0]
je 0x429ff9
cmp r8, 1
movzx ecx, byte [rdx]
mov byte [rdi], cl
je 0x429ff9
movzx eax, byte [rdx + 1]
cmp r8, 2
mov byte [rdi + 1], al
je 0x429ff9
movzx r9d, byte [rdx + 2]
cmp r8, 3
mov byte [rdi + 2], r9b
je 0x429ff9
movzx esi, byte [rdx + 3]
cmp r8, 4
mov byte [rdi + 3], sil
je 0x429ff9
movzx ebx, byte [rdx + 4]
cmp r8, 5
mov byte [rdi + 4], bl
je 0x429ff9
movzx r11d, byte [rdx + 5]
cmp r8, 6
mov byte [rdi + 5], r11b
je 0x429ff9
movzx r10d, byte [rdx + 6]
cmp r8, 7
mov byte [rdi + 6], r10b
je 0x429ff9
movzx ecx, byte [rdx + 7]
cmp r8, 8
mov byte [rdi + 7], cl
je 0x429ff9
movzx eax, byte [rdx + 8]
cmp r8, 9
mov byte [rdi + 8], al
je 0x429ff9
movzx r9d, byte [rdx + 9]
cmp r8, 0xa
mov byte [rdi + 9], r9b
je 0x429ff9
movzx esi, byte [rdx + 0xa]
cmp r8, 0xb
mov byte [rdi + 0xa], sil
je 0x429ff9
movzx ebx, byte [rdx + 0xb]
cmp r8, 0xc
mov byte [rdi + 0xb], bl
je 0x429ff9
movzx r11d, byte [rdx + 0xc]
cmp r8, 0xd
mov byte [rdi + 0xc], r11b
je 0x429ff9
movzx r10d, byte [rdx + 0xd]
cmp r8, 0xe
mov byte [rdi + 0xd], r10b
je 0x429ff9
movzx edx, byte [rdx + 0xe]
mov byte [rdi + 0xe], dl
mov eax, 1
jmp 0x429783
xor eax, eax
pop rbx
pop rsi
pop rdi
ret
xor r8d, r8d
movzx ecx, byte [rdx + r8]
mov byte [rdi + r8], cl
movzx r10d, byte [rdx + r8 + 1]
mov byte [rdi + r8 + 1], r10b
movzx eax, byte [rdx + r8 + 2]
mov byte [rdi + r8 + 2], al
movzx esi, byte [rdx + r8 + 3]
mov byte [rdi + r8 + 3], sil
movzx r11d, byte [rdx + r8 + 4]
mov byte [rdi + r8 + 4], r11b
movzx ebx, byte [rdx + r8 + 5]
mov byte [rdi + r8 + 5], bl
movzx r9d, byte [rdx + r8 + 6]
mov byte [rdi + r8 + 6], r9b
movzx ecx, byte [rdx + r8 + 7]
mov byte [rdi + r8 + 7], cl
add r8, 8
cmp r8, 0xa8
jne 0x42a013
jmp 0x429ff9
xor ebx, ebx
movzx esi, byte [rdx + rbx]
mov byte [r9 + rbx], sil
movzx edi, byte [rdx + rbx + 1]
mov byte [r9 + rbx + 1], dil
movzx r11d, byte [rdx + rbx + 2]
mov byte [r9 + rbx + 2], r11b
movzx eax, byte [rdx + rbx + 3]
mov byte [r9 + rbx + 3], al
movzx esi, byte [rdx + rbx + 4]
mov byte [r9 + rbx + 4], sil
movzx edi, byte [rdx + rbx + 5]
mov byte [r9 + rbx + 5], dil
movzx r11d, byte [rdx + rbx + 6]
mov byte [r9 + rbx + 6], r11b
movzx eax, byte [rdx + rbx + 7]
mov byte [r9 + rbx + 7], al
add rbx, 8
cmp rbx, 0x60
jne 0x42a082
jmp 0x429b86
add rdx, 0x50
add r9, 0x50
lea rax, [rsi - 0x50]
jmp 0x429aa5
movdqa xmm0, xmmword [rcx + 0x30]
lea rax, [r8 + 0x40]
mov edi, 6
mov ebx, 0x60
mov esi, 0x60
movups xmmword [r8 + 0x30], xmm0
jmp 0x429a55
mov esi, 0x5e
jmp 0x429a2c
mov esi, 0x5f
jmp 0x429a2c
mov r10d, 0xa7
jmp 0x429e65
movdqa xmm4, xmmword [rcx + 0xe0]
mov rsi, rbx
add r8, 0xf0
mov ebx, 0xa
mov r11d, 0xa8
movups xmmword [r8 - 0x10], xmm4
mov r10d, 0xa8
jmp 0x429e92
mov r10d, 0xa6
jmp 0x429e65
mov r10d, 0xa5
jmp 0x429e65
mov r10d, 0xa3
jmp 0x429e65
mov r10d, 0xa4
jmp 0x429e65
mov esi, 0x5a
jmp 0x429a2c
mov esi, 0x5b
jmp 0x429a2c
mov esi, 0x5c
jmp 0x429a2c
mov esi, 0x5d
jmp 0x429a2c
mov r10d, 0xa2
jmp 0x429e65
mov r10d, 0xa1
jmp 0x429e65
add rdx, 0x90
add rdi, 0x90
lea r8, [r10 - 0x90]
jmp 0x429f1c
mov r10d, 0x9f
jmp 0x429e65
mov r10d, 0xa0
jmp 0x429e65
mov r10d, 0x9d
jmp 0x429e65
mov r10d, 0x9e
jmp 0x429e65
mov esi, 0x55
jmp 0x429a2c
mov esi, 0x56
jmp 0x429a2c
mov esi, 0x57
jmp 0x429a2c
mov esi, 0x58
jmp 0x429a2c
mov esi, 0x59
jmp 0x429a2c
mov r10d, 0x9b
jmp 0x429e65
mov r10d, 0x9c
jmp 0x429e65
mov r10d, 0x9a
jmp 0x429e65
mov esi, 0x54
jmp 0x429a2c
mov esi, 0x52
jmp 0x429a2c
mov esi, 0x53
jmp 0x429a2c