Function at 0x14007a340
Capabilities:
Authenticate hmac

Disassembly:
push rsi
push rdi
push r12
mov r12, r12
push r13
push r15
sub rsp, 0x30
mov r12, r12
movsd xmm0, qword [r8]
xor r15d, r15d
movsd qword [rsp + 0x20], xmm0
mov dword [rsp - 0x20], 0x4c269c7e
mov r13, r8
mov eax, dword [rsp + 0x20]
mov rsi, rdx
xchg rdx, rdx
mov rdi, rcx
cmp eax, 2
jne 0x14007a38b
mov dword [rsp - 0xc], 0x6886e88
xor r12d, r12d
jmp 0x14007a3eb
mov r8, qword [rsp + 0x20]
test eax, eax
jne 0x14007a3ae
mov r14, r14
mov rcx, r8
shr rcx, 0x20
shr ecx, 2
and ecx, 8
mov dword [rsp - 0x20], 0xe161302
jmp 0x14007a3d5
mov rax, r8
shr rax, 0x20
mov edx, eax
shr edx, 2
mov dword [rsp - 0x2c], esi
not edx
and edx, 1
mov ecx, edx
xchg r14, r14
test al, 8
jne 0x14007a3d5
or edx, 2
mov dword [rsp - 0x44], esi
mov ecx, edx
mov r12d, ecx
shr r8, 0x20
xchg rdi, rdi
or r12d, 4
test r8b, 0x10
cmovne r12d, ecx
test r12b, 8
mov dword [rsp - 0x28], ebp
pushf
mov edx, 0x2dff731d
xor edx, 0x13e008d1
sub edx, 0x2c0df681
xchg r10, r10
xor edx, 0x7aba4e4e
add edx, 0xc2c8c65
sub edx, 0x74d8574a
mov dword [rsp - 0x30], ebx
popf
pushf
mov eax, 0x256d9ce
mov dword [rsp - 0x10], esi
add eax, 0x40ee4971
xor eax, 0x5e3e4810
xor eax, 0x1942b80c
xchg r11, r11
add eax, 0x2b4b7f53
xor eax, 0x2f85527f
popf
cmovne edx, eax
mov dword [rsp - 0x34], 0x18c9f770
mov dword [rsp + 0x60], edx
test rsi, rsi
je 0x14007af32
mov qword [rsp + 0x68], rbx
mov dword [rsp - 0x44], 0x295166f4
lea r8, [0x140000000]
mov qword [rsp + 0x70], rbp
movabs r9, 0xcccccccc7529f292
xchg rdi, rdi
xor r9, 0x4d8f4e9e
sub r9, 0x28601c6b
xor r9, 0x3d557b52
mov dword [rsp - 0x28], ebp
add r9, 0x7fffffff
xor r9, 0x61df283f
mov qword [rsp + 0x78], r14
mov r13, r13
movabs r10, 0x6666666612e40845
add r10, 0x6c665ff5
sub r10, 0x5ffc99a7
xchg r9, r9
add r10, 0x2038ee87
sub r10, 0x294586f5
xor r10, 0x70275042
mov eax, dword [rsi + 8]
mov r9, r9
dec eax
cmp eax, 6
ja case.default.0x14007a509
cdqe
mov dword [rsp - 0x40], ebp
mov ecx, dword [r8 + rax*4 + 0x7af4a]
add rcx, r8
jmp rcx
cmp qword [rsi + 0x38], 0
jne 0x14007a628
mov rdi, rdi
cmp qword [rsi + 0x10], 0
jne 0x14007a54d
mov word [rdi], 0x1da4
mov r13, r13
sub word [rdi], 0x18bb
xor word [rdi], 0x3f0
xor word [rdi], 0x6505
xor word [rdi], 0x3f47
mov dword [rsp - 0x18], 0x412d05e0
add rdi, 2
jmp case.default.0x14007a509
mov byte [rdi], 0x20
xor byte [rdi], 0x64
sub byte [rdi], 0x20
xchg rsp, rsp
add byte [rdi], 0x4c
sub byte [rdi], 8
sub byte [rdi], 0xd
mov ebp, r12d
mov dword [rsp - 0x14], ebp
inc rdi
and ebp, 1
je 0x14007a58e
mov rbp, rbp
mov byte [rdi], 0x3c
add byte [rdi], 0x23
sub byte [rdi], 0x42
mov dword [rsp - 0x44], 0x2bce3d64
sub byte [rdi], 0x16
add byte [rdi], 0x19
inc rdi
add r15d, dword [r13 + 8]
mov dword [rsp - 0x44], 0x632f32fb
cmp dword [r13], 0
jne 0x14007a62e
test byte [r13 + 4], 2
mov dword [rsp - 0x34], 0x74db96d9
je 0x14007a5d4
mov byte [rdi], 0x43
sub byte [rdi], 0x12
sub byte [rdi], 0x28
mov dword [rsp - 0x38], esi
xor byte [rdi], 0x42
xor byte [rdi], 0x22
sub byte [rdi], 0x38
mov dword [rsp - 0xc], ebx
sub byte [rdi], 0x24
inc rdi
mov byte [rdi], 0x63
add byte [rdi], 0x12
mov dword [rsp - 0x30], ecx
sub byte [rdi], 0x28
xor byte [rdi], 0x4e
xor byte [rdi], 0x20
add byte [rdi], 0x52
mov dword [rsp - 0x10], 0x48d82167
sub byte [rdi], 0x6b
inc rdi
test r15d, r15d
mov dword [rsp - 0x20], 0xb2f72db
jle 0x14007a62e
movsxd rbx, r15d
mov rcx, rdi
mov r8, rbx
mov dword [rsp - 0x1c], edi
call fcn.140072650
mov edx, dword [rsp + 0x60]
add rdi, rbx
mov dword [rsp - 0x14], 0x259f56f7
jmp 0x14007a62e
mov ebp, r12d
and ebp, 1
mov rax, qword [rsi + 0x38]
mov rdx, rdx
cmp rax, qword [rsi + 0x10]
jne 0x14007a72b
sub r15d, dword [r13 + 8]
mov rbx, rbx
cmp dword [r13], 0
jne 0x14007a6a9
test byte [r13 + 4], 2
je 0x14007a670
mov dword [rsp - 0x18], edi
mov byte [rdi], 0x13
add byte [rdi], 0x65
sub byte [rdi], 0x45
mov rbx, rbx
sub byte [rdi], 0xf
xor byte [rdi], 0x29
inc rdi
mov rdx, rdx
mov byte [rdi], 0x42
xor byte [rdi], 0x24
sub byte [rdi], 0x17
sub byte [rdi], 0x2e
xchg rdi, rdi
sub byte [rdi], 9
xor byte [rdi], 0x12
inc rdi
xchg r13, r13
test r15d, r15d
jle 0x14007a6a9
movsxd rbx, r15d
mov rcx, rdi
mov dword [rsp - 0x10], 0x4d8c02d2
mov r8, rbx
call fcn.140072650
add rdi, rbx
test ebp, ebp
mov rsp, rsp
je 0x14007a6d4
mov byte [rdi], 0x23
add byte [rdi], 0x59
sub byte [rdi], 0x4f
mov dword [rsp - 0x38], edi
xor byte [rdi], 0x15
sub byte [rdi], 0x13
sub byte [rdi], 9
mov dword [rsp - 0x14], 0x123640f8
add byte [rdi], 4
inc rdi
mov byte [rdi], 0xe
mov r9, r9
xor byte [rdi], 0x15
xor byte [rdi], 0x50
add byte [rdi], 0x22
sub byte [rdi], 0x62
mov dword [rsp - 0x24], 0x21ab0a8f
add byte [rdi], 0x53
sub byte [rdi], 1
inc rdi
mov r13, r13
mov qword [rsi + 0x38], 0x4d0c1028
add qword [rsi + 0x38], 0x2d99d3bb
sub qword [rsi + 0x38], 0x1eba3b32
sub qword [rsi + 0x38], 0x3a203f12
mov dword [rsp - 0x14], esp
sub qword [rsi + 0x38], 0x21cb699f
jmp case.default.0x14007a509
test rax, rax
je 0x14007a7e6
mov byte [rdi], 0
add byte [rdi], 0x47
xchg r13, r13
add byte [rdi], 0x16
xor byte [rdi], 0x57
xor byte [rdi], 0x26
mov dword [rsp - 0x3c], esi
inc rdi
test r12b, 2
je 0x14007a774
mov byte [rdi], 0x45
xchg r14, r14
sub byte [rdi], 0x2c
add byte [rdi], 0x4a
xor byte [rdi], 0x38
xor byte [rdi], 0x59
mov rdi, rdi
xor byte [rdi], 0x29
xor byte [rdi], 0xb
inc rdi
mov rbx, rbx
cmp dword [r13], 0
jne 0x14007a7e6
test byte [r13 + 4], 2
mov dword [rsp - 0x3c], 0x1975cd50
je 0x14007a7aa
mov byte [rdi], 0x73
xor byte [rdi], 0x32
add byte [rdi], 0x26
mov dword [rsp - 0x20], 0x21b849bc
sub byte [rdi], 0x3a
add byte [rdi], 0x12
xor byte [rdi], 0x32
mov r13, r13
inc rdi
mov byte [rdi], 0x31
xor byte [rdi], 0x7e
sub byte [rdi], 0x2d
mov dword [rsp - 0x44], edi
add byte [rdi], 0x3c
sub byte [rdi], 0x4c
sub byte [rdi], 7
xchg rdx, rdx
sub byte [rdi], 1
inc rdi
test r15d, r15d
mov rdi, rdi
jle 0x14007a7e6
movsxd rbx, r15d
mov rcx, rdi
mov r8, rbx
mov dword [rsp - 0x40], edi
call fcn.140072650
add rdi, rbx
inc qword [rsi + 0x38]
mov dword [rsp - 0x2c], 0x17d37720
mov rcx, qword [rsi + 0x38]
mov rax, qword [rsi + 0x18]
mov rsi, qword [rax + rcx*8 - 8]
jmp 0x14007ae70
cmp qword [rsi + 0x38], 0
jne 0x14007a908
cmp qword [rsi + 0x10], 0
jne 0x14007a844
mov dword [rsp - 0x20], 0x4f161f18
mov word [rdi], 0x1602
xor word [rdi], 0x1691
add word [rdi], 0x3320
xor word [rdi], 0x3d15
mov dword [rsp - 0x10], ebx
xor word [rdi], 0x73dd
add rdi, 2
jmp case.default.0x14007a509
mov byte [rdi], 0x41
xor byte [rdi], 0x70
add byte [rdi], 0x47
sub byte [rdi], 0x64
mov r11, r11
add byte [rdi], 0x67
mov ebp, r12d
inc rdi
mov dword [rsp - 0x38], 0x60996651
and ebp, 1
je 0x14007a887
mov byte [rdi], 0x2c
sub byte [rdi], 0x24
mov dword [rsp - 0x18], 0x5e76ca95
add byte [rdi], 0x2a
xor byte [rdi], 0x2f
add byte [rdi], 3
mov dword [rsp - 0x38], esp
inc rdi
add r15d, dword [r13 + 8]
cmp dword [r13], 0
mov rsi, rsi
jne 0x14007a90e
test byte [r13 + 4], 2
je 0x14007a8ba
mov dword [rsp - 0x44], esi
mov byte [rdi], 0x5c
add byte [rdi], 6
sub byte [rdi], 3
sub byte [rdi], 0x45
mov dword [rsp - 0x14], 0x5248bca1
xor byte [rdi], 0x17
inc rdi
mov byte [rdi], 0x20
sub byte [rdi], 8
mov dword [rsp - 0x1c], 0x307e0d56
add byte [rdi], 0x46
add byte [rdi], 0x1a
sub byte [rdi], 0xb
mov dword [rsp - 0x30], 0x8756186
sub byte [rdi], 0x52
xor byte [rdi], 0x11
inc rdi
test r15d, r15d
xchg r10, r10
jle 0x14007a90e
movsxd rbx, r15d
mov rcx, rdi
mov r8, rbx
xchg rbp, rbp
call fcn.140072650
mov edx, dword [rsp + 0x60]
add rdi, rbx
mov dword [rsp - 0x18], edi
jmp 0x14007a90e
mov ebp, r12d
and ebp, 1
mov rax, qword [rsi + 0x38]
mov dword [rsp - 0x3c], esp
cmp rax, qword [rsi + 0x10]
jne 0x14007aa22
sub r15d, dword [r13 + 8]
mov dword [rsp - 0x34], 0x18bfd02a
cmp dword [r13], 0
jne 0x14007a993
test byte [r13 + 4], 2
je 0x14007a959
mov r8, r8
mov byte [rdi], 0x75
sub byte [rdi], 0x4f
add byte [rdi], 0x24
xchg r14, r14
sub byte [rdi], 0x30
sub byte [rdi], 0xd
add byte [rdi], 0
inc rdi
mov dword [rsp - 0x38], esi
mov byte [rdi], 2
add byte [rdi], 0x33
add byte [rdi], 0xf
add byte [rdi], 0xf
mov dword [rsp - 0x44], 0x2ab22e61
sub byte [rdi], 0x31
sub byte [rdi], 0x18
inc rdi
test r15d, r15d
mov rbp, rbp
jle 0x14007a993
movsxd rbx, r15d
mov rcx, rdi
mov r8, rbx
mov dword [rsp - 0x3c], edi
call fcn.140072650
add rdi, rbx
test ebp, ebp
je 0x14007a9b7
mov dword [rsp - 0x34], ebp
mov byte [rdi], 0x68
xor byte [rdi], 0x65
add byte [rdi], 0x4e
xchg r10, r10
sub byte [rdi], 0x45
xor byte [rdi], 0x54
xor byte [rdi], 0x62
inc rdi
mov dword [rsp - 0x14], edi
mov byte [rdi], 0x2c
add byte [rdi], 0x26
sub byte [rdi], 0x4e
add byte [rdi], 0x28
mov r10, r10
xor byte [rdi], 0x5b
sub byte [rdi], 0x16
add byte [rdi], 0x1c
inc rdi
mov r10, r10
mov qword [rsi + 0x38], 0x3145e345
sub qword [rsi + 0x38], 0x12f90959
sub qword [rsi + 0x38], 0x1e03b02b
mov dword [rsp - 0x34], 0x4ca29c1b
add qword [rsi + 0x38], 0x47553cf0
xor qword [rsi + 0x38], 0x6269f07c
xor qword [rsi + 0x38], 0x435878d7
mov dword [rsp - 0x44], 0x7d65037a
sub qword [rsi + 0x38], 0x66afee1a
jmp case.default.0x14007a509
test rax, rax
je 0x14007aad5
mov r10, r10
mov byte [rdi], 0xc
add byte [rdi], 0x31
sub byte [rdi], 0x1f
xor byte [rdi], 0x1f
mov dword [rsp - 0x40], 0x7e5ce171
add byte [rdi], 0x5b
sub byte [rdi], 0x30
inc rdi
test r12b, 2
xchg r8, r8
je 0x14007aa71
mov byte [rdi], 0x4e
sub byte [rdi], 0x36
xchg r9, r9
add byte [rdi], 0x27
sub byte [rdi], 0x34
add byte [rdi], 0x15
inc rdi
mov dword [rsp - 0x14], 0x65c58be0
cmp dword [r13], 0
jne 0x14007aad5
test byte [r13 + 4], 2
mov dword [rsp - 0x38], ebp
je 0x14007aa9c
mov byte [rdi], 0x1e
xor byte [rdi], 0xb
mov dword [rsp - 0x20], ebx
xor byte [rdi], 0x22
add byte [rdi], 0x41
xor byte [rdi], 0x75
inc rdi
xchg rdx, rdx
mov byte [rdi], 0x78
sub byte [rdi], 0x5f
add byte [rdi], 0x5c
mov dword [rsp - 0x38], esi
xor byte [rdi], 0x20
xor byte [rdi], 0x4f
sub byte [rdi], 0x10
mov rbp, rbp
inc rdi
test r15d, r15d
jle 0x14007aad5
movsxd rbx, r15d
mov r12, r12
mov rcx, rdi
mov r8, rbx
call fcn.140072650
add rdi, rbx
mov dword [rsp - 0x14], ecx
mov rax, qword [rsi + 0x38]
mov r14, qword [rsi + 0x18]
lea rbx, [rax + rax*2]
inc rax
mov dword [rsp - 0x34], 0x6e259767
mov qword [rsi + 0x38], rax
mov byte [rdi], 0x70
sub byte [rdi], 0x57
mov dword [rsp - 0x20], 0x4d86a610
xor byte [rdi], 0x34
add byte [rdi], 0x22
xor byte [rdi], 0x1d
sub byte [rdi], 0x30
mov dword [rsp - 0x14], 0x71f0bd3a
inc rdi
mov r8, qword [r14 + rbx*8]
mov rcx, rdi
mov rdx, qword [r14 + rbx*8 + 8]
mov dword [rsp - 0x28], ebx
call fcn.14007b1d0
add rdi, rax
mov word [rdi], 0x2376
add word [rdi], 0x3a3a
mov dword [rsp - 0x3c], ecx
sub word [rdi], 0x4cfd
xor word [rdi], 0x33e5
add word [rdi], 0x349b
sub word [rdi], 0x1dcf
mov dword [rsp - 0x28], 0x14d7713b
add rdi, 2
test r12b, 4
je 0x14007ab89
mov dword [rsp - 0x44], 0x4000519d
mov byte [rdi], 0x19
add byte [rdi], 0
add byte [rdi], 0x29
xor byte [rdi], 0x78
xchg rcx, rcx
xor byte [rdi], 0x70
sub byte [rdi], 0x2a
inc rdi
mov dword [rsp - 0x44], 0x35224ede
mov rsi, qword [r14 + rbx*8 + 0x10]
jmp 0x14007ae70
mov byte [rdi], 0x1b
xor byte [rdi], 0x62
sub byte [rdi], 0x24
mov dword [rsp - 0x10], 0xbb040b3
sub byte [rdi], 3
sub byte [rdi], 0x32
add byte [rdi], 0x2c
xchg rcx, rcx
xor byte [rdi], 0x6e
inc rdi
mov r8, qword [rsi + 0x18]
mov dword [rsp - 0x28], 0x37780ea6
mov rcx, rdi
mov rdx, qword [rsi + 0x10]
call fcn.14007b1d0
mov r15, r15
add rdi, rax
mov byte [rdi], 0x1d
add byte [rdi], 0x36
sub byte [rdi], 0x3b
mov r13, r13
xor byte [rdi], 3
add byte [rdi], 7
inc rdi
mov rcx, rcx
jmp case.default.0x14007a509
mov rdx, qword [rsi + 0x10]
test rdx, rdx
jns 0x14007ac1e
mov byte [rdi], 0x28
mov r11, r11
add byte [rdi], 0x18
xor byte [rdi], 0x65
add byte [rdi], 0x55
xchg rbp, rbp
sub byte [rdi], 0x75
add byte [rdi], 0x42
xor byte [rdi], 0x6a
xchg r12, r12
inc rdi
neg rdx
inc rdi
mov r8, rdx
xchg r11, r11
cmp rdx, 0xa
jl 0x14007ac56
nop word [rax + rax]
mov dword [rsp - 0x24], esi
mov rax, r9
inc rdi
mul rdx
shr rdx, 3
mov dword [rsp - 0x28], 0x7ec77666
cmp rdx, 0xa
jge 0x14007ac3b
mov r9, rdi
mov dword [rsp - 0x40], 0x398c0240
nop word [rax + rax]
mov rax, r10
lea r9, [r9 - 1]
imul r8
mov dword [rsp - 0x10], ebp
sar rdx, 2
mov rax, rdx
shr rax, 0x3f
add rdx, rax
mov dword [rsp - 0x2c], edi
movzx eax, dl
shl al, 2
lea ecx, [rax + rdx]
add cl, cl
mov rdx, rdx
sub r8b, cl
add r8b, 0x30
mov byte [r9], r8b
mov r8, rdx
mov dword [rsp - 0x3c], 0x2e8fa9e3
test rdx, rdx
jg 0x14007ac6b
jmp case.default.0x14007a509
movsd xmm2, qword [rsi + 0x10]
lea rdx, [0x140002994]
movq r8, xmm2
mov dword [rsp - 0x28], ebp
mov rcx, rdi
mov rbx, rdi
call fcn.14007b300
movsxd rcx, eax
mov r13, r13
mov edx, 0x1e889a3f
add edx, 0x3d079e52
sub edx, 0x5854e2d0
mov dword [rsp - 0x38], esi
add edx, 0x1a232fa5
add edx, 0x3fee600a
sub edx, 0x468a1009
mov dword [rsp - 0x30], ebp
sub edx, 0x16c2d53b
add rdi, rcx
mov rcx, rbx
mov dword [rsp - 0x24], 0x2d84b3e0
call fcn.140072fe0
test rax, rax
je 0x14007ad4a
mov dword [rsp - 0x10], ecx
mov byte [rax], 0x3b
add byte [rax], 3
xor byte [rax], 0x6c
sub byte [rax], 0x48
mov dword [rsp - 0xc], 0x2aac2dfa
add byte [rax], 0xb
add byte [rax], 0x19
jmp case.default.0x14007a509
mov edx, 0x1c1e5201
sub edx, 0x1351c5ff
add edx, 0x1b3c0e33
add edx, 0x3c807bf4
mov dword [rsp - 0x38], ebx
add edx, 0x28a52be
sub edx, 0x631368b9
mov rcx, rbx
mov dword [rsp - 0x34], ebx
call fcn.140072fe0
test rax, rax
jne case.default.0x14007a509
mov word [rdi], 0x1d2a
mov dword [rsp - 0x3c], 0x22c3b8bf
xor word [rdi], 0x810
add word [rdi], 0x41b1
xor word [rdi], 0x30bc
mov dword [rsp - 0xc], ecx
xor word [rdi], 0x759d
xor word [rdi], 0x23e4
add rdi, 2
xchg rdx, rdx
jmp case.default.0x14007a509
cmp dword [rsi + 0x10], 0
je 0x14007ae0c
mov eax, 0xccfb1e8
add eax, 0x3379e920
mov dword [rsp - 0x18], 0x3526b9bc
sub eax, 0x361163bb
xor eax, 0x617f8bc0
sub eax, 0x6b47bc89
mov dword [rdi], 0x708be5c
xchg rbp, rbp
add dword [rdi], 0x48212896
xor dword [rdi], 0x6fbcd757
xor dword [rdi], 0x3f8e8295
xchg rdx, rdx
add dword [rdi], 0x4659bf44
add rdi, rax
jmp case.default.0x14007a509
mov eax, dword [0x140002998]
mov dword [rdi], eax
mov dword [rsp - 0x18], ecx
movzx eax, byte [0x14000299c]
mov byte [rdi + 4], al
mov eax, 0x4020b3de
add eax, 0x10091cb4
xchg rsp, rsp
sub eax, 0x28465d59
add eax, 0x16f77903
sub eax, 0x3edaec37
mov dword [rsp - 0x38], edi
add rdi, rax
jmp case.default.0x14007a509
mov dword [rdi], 0x477ef043
sub dword [rdi], 0x28673634
xor dword [rdi], 0x353c0f8c
add dword [rdi], 0x958831a
mov dword [rsp - 0xc], ecx
xor dword [rdi], 0x5fe84df3
add rdi, 4
mov rsi, qword [rsi]
mov edx, dword [rsp + 0x60]
mov rsi, rsi
movabs r9, 0xcccccccc22d7ec3b
add r9, 0x3d9c918b
sub r9, 0x5fc1693
sub r9, 0x47767445
mov r10, r10
add r9, 0x7fffffff
add r9, 0x39cad9e0
lea r8, [0x140000000]
movabs r10, 0x6666666672980cc5
mov dword [rsp - 0x20], esp
sub r10, 0x6d21262f
add r10, 0x5ad52ef4
sub r10, 0x5e63287c
mov dword [rsp - 0x30], esp
add r10, 0x22d3b493
add r10, 0x165f61ed
xor r10, 0x5d7a65e9
test rsi, rsi
mov rbp, rbp
jne 0x14007a4e7
mov r14, qword [rsp + 0x78]
mov rbp, qword [rsp + 0x70]
xchg rdi, rdi
mov rbx, qword [rsp + 0x68]
mov byte [rdi], 0x76
xor byte [rdi], 0x3c
sub byte [rdi], 2
mov dword [rsp - 0x28], 0x407dc1ad
sub byte [rdi], 0x19
xor byte [rdi], 0x2f
add rsp, 0x30
pop r15
mov rbx, rbx
pop r13
pop r12
pop rdi
pop rsi
xchg rbp, rbp
ret
mov byte [rdi], r15b
add rsp, 0x30
mov rsp, rsp
pop r15
pop r13
pop r12
mov r11, r11
pop rdi
pop rsi
ret