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

Disassembly:
push r15
push r14
push r13
push r12
push rsi
push rdi
push rbp
push rbx
sub rsp, 0x98
mov r15, rcx
mov rax, qword [0x14054b938]
xor rax, rsp
mov qword [rsp + 0x90], rax
mov dword [rsp + 0x38], 0x1aeee96c
mov dword [rsp + 0x30], 0xa737c276
mov dword [rsp + 0x28], 0xabc03b15
mov dword [rsp + 0x20], 0
mov ecx, 1
xor edx, edx
xor r8d, r8d
xor r9d, r9d
call fcn.140375b50
mov rdi, rax
xor ecx, ecx
mov edx, 0x584cb33d
mov r8d, 0x2afcee11
call fcn.1400a9630
test al, 1
je 0x140375275
movsxd rbx, dword [0x14044df78]
mov eax, dword [0x14055f200]
cmp eax, 0xd
jle 0x14037527d
mov eax, dword [0x14044df78]
jmp 0x140375263
xor esi, esi
nop
mov eax, dword [0x14055f200]
cmp eax, 0x3c
jg 0x140375290
test sil, sil
je 0x1403752b0
mov ecx, dword [0x14055f1fc]
lea edx, [rcx - 1]
mov r8d, 0xa6831194
mov r9d, 0x9b50c913
call fcn.140375ac0
test al, 1
je 0x140375280
jmp 0x14037528b
lea r14, [rsp + 0x80]
xor esi, esi
nop word [rax + rax]
mov rcx, rbx
mov rdx, r14
mov r8d, 0x3cb36266
mov r9d, 0x6dc1594d
call fcn.140375b40
test sil, sil
jne 0x1403752c0
mov r12, qword [rsp + 0x80]
mov eax, dword [0x14055f200]
cmp eax, 0x60
jg 0x140375300
mov ebp, dword [0x14044df74]
mov eax, dword [0x14055f200]
cmp eax, 0x2c
jl 0x140375313
mov eax, dword [0x14044df74]
mov eax, dword [0x14055f200]
cmp eax, 0x61
jge 0x140375300
jmp 0x1403752ef
test rdi, rdi
je 0x14037542b
mov rax, qword [rdi + 0x20]
test rax, rax
je 0x14037542b
test r15, r15
je 0x14037542b
mov qword [rsp + 0x60], r15
mov rdi, qword [rax + 0x80]
test rdi, rdi
mov r15d, 0
je 0x14037542e
xor ebx, ebx
mov rsi, qword [rsp + 0x60]
cmp word [rsi], 0
je 0x14037542b
nop
mov eax, ebx
xor ecx, ecx
cmp word [rsi + rax*2], 0
setne cl
mov eax, ecx
xor eax, eax
not eax
and eax, ebx
xor eax, ecx
and ebx, ecx
lea ebx, [rax + rbx*2]
mov ecx, ebx
mov rdx, rsi
mov r8d, 0x8714920e
mov r9d, 0xcb8a1841
call fcn.140375d50
test al, 1
je 0x140375360
test ebx, ebx
je 0x14037542b
mov eax, ebx
mov qword [rsp + 0x70], rax
mov eax, dword [0x14055f200]
nop word [rax + rax]
mov esi, dword [0x1405447f0]
mov eax, dword [0x14055f1fc]
lea ecx, [rax + 1]
imul ecx, eax
test cl, 1
jne 0x1403753b0
lea eax, [rsi - 0x7183c4c9]
lea r14d, [rax + rax]
sub r14d, eax
inc r14d
add r14d, 0x7183c4c9
mov ecx, r14d
mov edx, 0x1ff1c64c
mov r8d, 0xd9daf6d9
call fcn.140375d40
mov ecx, 0xb816651
mov edx, 0x792d705f
call fcn.140088af0
mov eax, dword [0x14055f1fc]
mov dword [rsp + 0x54], r14d
xor esi, r14d
not esi
mov ecx, 0x89bde744
mov edx, 0x7df243ce
call fcn.140375bb0
test al, 1
je 0x140375410
xor eax, eax
test al, al
jne 0x140375466
jmp 0x140375455
xor r15d, r15d
mov rcx, qword [rsp + 0x90]
xor rcx, rsp
call fcn.1403e4d80
mov rax, r15
add rsp, 0x98
pop rbx
pop rbp
pop rdi
pop rsi
pop r12
pop r13
pop r14
pop r15
ret
mov eax, dword [0x14055f1fc]
lea ecx, [rax - 1]
imul ecx, eax
test cl, 1
je 0x140375476
mov al, 1
nop dword [rax + rax]
test al, al
je 0x140375470
jmp 0x140375455
mov eax, dword [rsp + 0x54]
xor esi, eax
not esi
mov dword [rsp + 0x40], 0
test esi, eax
mov qword [rsp + 0x78], rsi
jne 0x140375493
test ebp, ebp
jg 0x1403754be
lea rcx, [rsp + 0x80]
mov edx, 0x1d924e64
mov r8d, 0xd89e3739
call fcn.140375ba0
cmp dword [rsp + 0x80], 0x5c
jg 0x140375a90
jmp 0x140375a70
xor esi, esi
lea r15, [rsp + 0x80]
lea rax, [fcn.1403751f0]
add eax, eax
add eax, 0x2880
mov ecx, eax
not ecx
and ecx, eax
mov dword [rsp + 0x58], ecx
mov r14b, 1
xor r13d, r13d
mov dword [rsp + 0x40], 0
mov qword [rsp + 0x48], r12
jmp 0x14037550f
test byte [rsp + 0x80], 1
mov r12, qword [rsp + 0x48]
jne 0x140375493
mov rcx, r15
mov edx, 0x9e2e089d
mov r8d, 0xd960a53d
call fcn.140375ba0
mov ecx, dword [rsp + 0x80]
mov edx, 0x9b50c913
mov r8d, 0x1762bbb8
call fcn.140375d20
nop dword [rax]
test sil, sil
jne 0x140375540
movsxd r15, r13d
add r15, r12
nop dword [rax + rax]
test sil, sil
jne 0x140375570
mov r12d, dword [r15]
mov ecx, dword [rsp + 0x58]
mov edx, 0x2afcee11
mov r8d, 0xb685fa54
call fcn.1400a9630
test al, 1
jne 0x140375580
mov eax, dword [r15]
test r14b, r14b
je 0x140375550
jmp 0x140375555
mov dword [rsp + 0x28], 0xfad5fb59
mov dword [rsp + 0x20], 0xad73286a
mov ecx, dword [rsp + 0x40]
mov edx, r12d
lea r8, [rsp + 0x8c]
lea r15, [rsp + 0x80]
mov r9, r15
call fcn.140375ce0
mov eax, dword [rsp + 0x8c]
or eax, dword [rsp + 0x80]
mov dword [rsp + 0x40], eax
mov eax, 0xd9ee15c1
sub eax, r13d
mov ecx, eax
xor ecx, 0xfffffffc
and eax, 0x7ffffffc
lea r12d, [rcx + rax*2]
neg r12d
nop word [rax + rax]
mov eax, dword [0x14055f200]
cmp eax, 0x57
jg 0x140375616
lea r13d, [r12 - 0x2611ea3f]
mov dword [rsp + 0x20], 0xa737c276
mov ecx, r13d
mov edx, ebp
mov r8, r15
mov r9d, 0x7df243ce
call fcn.140375b80
test al, 1
jne 0x140375500
test r14b, r14b
je 0x1403755e0
jmp 0x1403755eb
mov eax, r13d
xor eax, 1
and r13d, 1
lea r13d, [rax + r13*2]
mov dword [rsp + 0x20], 0x2f858fd1
mov ecx, ebp
mov edx, r13d
mov r8, r12
mov r9d, 0xf5a4a654
call fcn.14015b700
mov eax, dword [rsp + 0x80]
movzx eax, word [rdi + rax*2]
test eax, eax
je 0x14037565d
cmp eax, 0x3d
jne 0x140375620
mov eax, r13d
xor eax, ebp
mov ecx, r13d
not ecx
mov edx, ebp
not edx
and edx, ecx
or edx, eax
not edx
add edx, edx
mov ecx, eax
xor ecx, edx
and edx, eax
lea eax, [rcx + rdx*2]
mov qword [rsp + 0x58], rax
movzx eax, word [rdi + rax*2]
test eax, eax
je 0x140375890
cmp eax, 0x3d
jne 0x140375926
cmp r13d, ebx
jne 0x140375926
mov qword [rsp + 0x48], r15
mov dword [rsp + 0x44], r14d
mov eax, ebp
movzx r14d, word [rdi + rax*2]
mov dword [rsp + 0x6c], r14d
mov rax, qword [rsp + 0x60]
movzx r15d, word [rax]
xor eax, eax
mov ecx, dword [rsp + 0x54]
test dword [rsp + 0x78], ecx
setne al
mov ecx, eax
neg ecx
dec eax
mov edx, dword [rsp + 0x40]
sub edx, dword [0x14044df70]
mov r8d, edx
neg r8d
dec edx
and edx, ecx
and r8d, eax
or r8d, edx
mov edx, r8d
not edx
xor r8d, eax
and edx, ecx
or edx, r8d
cmp edx, 0xffffffff
setne dl
movzx ecx, byte [0x14055c3e0]
mov dword [rsp + 0x28], 0x584cb33d
mov dword [rsp + 0x20], 0xa501c234
lea r8, [rsp + 0x8c]
mov r9, r12
call fcn.140375c40
movzx eax, byte [rsp + 0x8c]
or al, byte [rsp + 0x80]
and al, 1
mov byte [0x14055c3e0], al
mov dword [rsp + 0x28], 0x613c6282
mov dword [rsp + 0x20], 0xce86a396
mov ecx, r14d
mov edx, r15d
lea r8, [rsp + 0x8c]
mov r9, r12
call fcn.140375cc0
movzx r14d, word [rsp + 0x80]
add r14d, 0xffffb3d9
cmp byte [rsp + 0x8c], 0
cmove r14d, dword [rsp + 0x6c]
mov dword [rsp + 0x20], 0x5ff80145
mov ecx, r15d
lea rdx, [rsp + 0x8c]
mov r8, r12
mov r9d, 0x1a13b42c
call fcn.140375d60
movzx ecx, word [rsp + 0x80]
add ecx, 0xffffdbf8
cmp byte [rsp + 0x8c], 0
cmove ecx, r15d
mov al, 1
cmp r14w, cx
jne 0x1403758d9
mov r15d, 1
cmp qword [rsp + 0x70], r15
je 0x14037588b
nop dword [rax + rax]
mov eax, ebp
neg eax
mov ecx, eax
xor ecx, 0x29136107
and eax, 0x29136107
lea eax, [rcx + rax*2]
mov ecx, r15d
sub ecx, eax
add ecx, 0x29136107
movzx eax, word [rdi + rcx*2]
mov rcx, qword [rsp + 0x60]
movzx r8d, word [rcx + r15*2]
lea r14d, [rax - 0x20]
cmp r8w, 0x7b
cmovae r14d, eax
cmp ax, 0x61
cmovb r14d, eax
mov eax, r8d
not eax
and eax, 0xffffff9f
mov ecx, r8d
xor ecx, 0x60
or ecx, eax
not ecx
or ecx, eax
mov eax, r8d
and eax, 0x7f9f
lea eax, [rcx + rax*2]
mov ecx, r8d
xor ecx, 0xffffffe0
mov edx, r8d
and edx, 0x7fe0
lea edx, [rcx + rdx*2]
cmp ax, 0x1a
setb cl
mov dword [rsp + 0x28], 0xbc22e3ea
mov dword [rsp + 0x20], 0xb3113bff
mov r9, r12
call fcn.140375de0
cmp r14w, word [rsp + 0x80]
jne 0x1403758e0
inc r15
cmp qword [rsp + 0x70], r15
jne 0x1403757e0
mov r14b, 1
jmp 0x1403758e5
mov dword [rsp + 0x20], 0xad73286a
mov rcx, qword [rsp + 0x58]
lea rdx, [rsp + 0x8c]
mov r8, r12
mov r9d, 0x881874e0
call fcn.140375c70
mov eax, dword [rsp + 0x8c]
mov ecx, dword [rsp + 0x80]
mov edx, eax
xor edx, ecx
and eax, ecx
lea eax, [rdx + rax*2]
cmp word [rdi + rax*2], 0
movzx r14d, r14b
cmove r14d, esi
jmp 0x140375926
mov r14d, dword [rsp + 0x44]
jmp 0x1403758ed
mov r14d, dword [rsp + 0x44]
cmp r15, qword [rsp + 0x70]
setb al
mov r15, qword [rsp + 0x48]
mov r8, qword [rsp + 0x58]
mov ecx, r8d
xor ecx, 0x997cae82
add r8d, r8d
and r8d, 0x32f95d04
mov edx, ecx
xor edx, r8d
and r8d, ecx
lea ecx, [rdx + r8*2]
add ecx, 0x6683517f
lea rcx, [rdi + rcx*2]
test al, al
cmove r15, rcx
mov rcx, r15
mov edx, 0x46a7418e
mov r8d, 0x46a7418e
call fcn.1400abda0
test al, 1
je 0x140375a3a
mov dword [rsp + 0x44], r14d
mov qword [rsp + 0x48], r15
neg r13d
neg ebp
mov dword [rsp + 0x20], 0x1450be1c
mov ecx, r13d
mov edx, ebp
mov r8, r12
mov r9d, 0x9e5d2439
call fcn.14014fd00
mov ebp, 1
sub ebp, dword [rsp + 0x80]
xor r15d, r15d
nop word [rax + rax]
mov r14d, ebp
mov ecx, ebp
mov rdx, r12
mov r8d, 0xc3626386
mov r9d, 0xc7e7a237
call fcn.1401f3a60
mov rax, qword [rsp + 0x80]
xor ebp, ebp
cmp word [rdi + rax*2], 0
setne bpl
movzx r15d, r15b
cmove r15d, esi
add ebp, r14d
mov eax, r15d
not al
mov ecx, r15d
xor cl, 1
mov edx, r15d
and dl, 0xfe
mov r8d, eax
and r8b, 1
or r8b, dl
and al, 0xfe
or al, cl
not al
or al, r8b
not al
or al, cl
cmp al, 0xff
je 0x140375980
mov dword [rsp + 0x28], 0x9cfcbd6e
mov dword [rsp + 0x20], 0x1c935232
mov ecx, ebp
mov rdx, rdi
lea r8, [rsp + 0x8c]
mov r9, r12
call fcn.140375d00
mov rax, qword [rsp + 0x80]
cmp word [rax], 0
cmovne ebp, dword [rsp + 0x8c]
mov r14d, dword [rsp + 0x44]
movzx r14d, r14b
cmove r14d, esi
cmp word [rdi + rbp*2], 0
cmove r14d, esi
xor r13d, r13d
mov r15, qword [rsp + 0x48]
movzx ecx, byte [0x14055c3e0]
test r14b, 1
sete dl
mov eax, ecx
and al, dl
xor cl, dl
mov edx, eax
not dl
xor al, cl
not cl
and cl, dl
or cl, al
test cl, 1
je 0x14037562e
test al, al
jne 0x14037562e
jmp 0x14037542e
mov ecx, 0xfe11234f
mov edx, 0x5c0f60c2
call fcn.1402b14a0
test al, 1
jne 0x140375a9d
nop word cs:[rax + rax]
mov eax, dword [0x14055f200]
cmp eax, 0x36
jge 0x140375a90
jmp 0x140375a70
xor r15d, r15d
lea r12, [rsp + 0x80]
mov esi, 1
xor ebp, ebp
xor r13d, r13d
xor r14d, r14d
jmp 0x14037562e