Function at 0x140157920
Capabilities:
Authenticate hmac
Check for software breakpoints
Encode data using xor

Disassembly:
push rsi
push rdi
sub rsp, 0x28
test ecx, ecx
je 0x140157979
test edx, edx
je 0x1401579c9
test r8d, r8d
je 0x140157a09
test r9d, r9d
je 0x140157a89
movzx eax, byte [0x14049add2]
cmp al, 0x7e
je 0x140157c39
mov cl, 0x37
nop word cs:[rax + rax]
mov al, 0xd9
lock cmpxchg byte [0x14049add2], cl
je 0x140157c09
cmp al, 0x7e
jne 0x140157960
jmp 0x140157c39
test edx, edx
je 0x140157a49
test r8d, r8d
je 0x140157ab9
test r9d, r9d
je 0x140157b39
movzx eax, byte [0x14049ac30]
cmp al, 0xcc
je 0x140157d09
mov cl, 9
nop word cs:[rax + rax]
mov al, 0x32
lock cmpxchg byte [0x14049ac30], cl
je 0x140157cd9
cmp al, 0xcc
jne 0x1401579b0
jmp 0x140157d09
test r8d, r8d
je 0x140157af9
test r9d, r9d
je 0x140157b69
movzx eax, byte [0x14049ad1c]
cmp al, 0x3c
je 0x140157d49
mov cl, 0xcf
nop dword [rax]
mov al, 0x6b
lock cmpxchg byte [0x14049ad1c], cl
je 0x140157d15
cmp al, 0x3c
jne 0x1401579f0
jmp 0x140157d49
test r9d, r9d
je 0x140157b99
movzx eax, byte [0x14049ae2d]
cmp al, 0xd3
je 0x140157d89
mov cl, 0x96
nop word cs:[rax + rax]
mov al, 0x76
lock cmpxchg byte [0x14049ae2d], cl
je 0x140157d55
cmp al, 0xd3
jne 0x140157a30
jmp 0x140157d89
test r8d, r8d
je 0x140157bc9
test r9d, r9d
je 0x140157c45
movzx eax, byte [0x14049ae07]
cmp al, 0xf5
je 0x140157e29
mov cl, 0x51
nop dword [rax]
mov al, 0x82
lock cmpxchg byte [0x14049ae07], cl
je 0x140157dff
cmp al, 0xf5
jne 0x140157a70
jmp 0x140157e29
movzx eax, byte [0x14049aba5]
cmp al, 0x31
je 0x140157dc9
mov cl, 0x5e
nop word [rax + rax]
mov al, 0x15
lock cmpxchg byte [0x14049aba5], cl
je 0x140157d95
cmp al, 0x31
jne 0x140157aa0
jmp 0x140157dc9
test r9d, r9d
je 0x140157c79
movzx eax, byte [0x14049ac43]
cmp al, 0xcd
je 0x140157e69
mov cl, 0x23
nop word cs:[rax + rax]
mov al, 0x1d
lock cmpxchg byte [0x14049ac43], cl
je 0x140157e35
cmp al, 0xcd
jne 0x140157ae0
jmp 0x140157e69
test r9d, r9d
je 0x140157ca9
movzx eax, byte [0x14049adc2]
cmp al, 0xfd
je 0x140157ea9
mov cl, 0x18
nop word cs:[rax + rax]
mov al, 0x96
lock cmpxchg byte [0x14049adc2], cl
je 0x140157e75
cmp al, 0xfd
jne 0x140157b20
jmp 0x140157ea9
movzx eax, byte [0x14049ad8f]
cmp al, 0x54
je 0x140157ee9
mov cl, 0x6d
nop word [rax + rax]
mov al, 0xf5
lock cmpxchg byte [0x14049ad8f], cl
je 0x140157eb5
cmp al, 0x54
jne 0x140157b50
jmp 0x140157ee9
movzx eax, byte [0x14049adeb]
cmp al, 0xb8
je 0x140157f29
mov cl, 0x2b
nop word [rax + rax]
mov al, 0xd6
lock cmpxchg byte [0x14049adeb], cl
je 0x140157ef5
cmp al, 0xb8
jne 0x140157b80
jmp 0x140157f29
movzx eax, byte [0x14049acb9]
cmp al, 0x5a
je 0x140157fc9
mov esi, dword [rsp + 0x60]
mov cl, 0x97
nop
mov al, 0xb6
lock cmpxchg byte [0x14049acb9], cl
je 0x140157f35
cmp al, 0x5a
jne 0x140157bb0
jmp 0x140157fc9
test r9d, r9d
je 0x140157dd5
movzx eax, byte [0x14049ab62]
cmp al, 0x14
je 0x140158009
mov cl, 0x20
nop word cs:[rax + rax]
mov al, 0xd6
lock cmpxchg byte [0x14049ab62], cl
je 0x140157fd5
cmp al, 0x14
jne 0x140157bf0
jmp 0x140158009
xor eax, eax
lea rcx, [0x14049add0]
lea rdx, [0x1403bdc80]
nop dword [rax]
movzx r8d, byte [rax + rdx]
xor byte [rax + rcx], r8b
inc rax
cmp eax, 2
jl 0x140157c20
mov al, 0x7e
xchg byte [0x14049add2], al
lea rax, [0x14049add0]
jmp 0x140158102
movzx eax, byte [0x14049ad63]
cmp al, 0x36
je 0x140158049
mov cl, 0xa2
nop word cs:[rax + rax]
mov al, 0xdf
lock cmpxchg byte [0x14049ad63], cl
je 0x140158015
cmp al, 0x36
jne 0x140157c60
jmp 0x140158049
movzx eax, byte [0x14049ae55]
cmp al, 0x6f
je 0x140158089
mov cl, 0xac
nop word [rax + rax]
mov al, 0x10
lock cmpxchg byte [0x14049ae55], cl
je 0x140158055
cmp al, 0x6f
jne 0x140157c90
jmp 0x140158089
movzx eax, byte [0x14049ad7b]
cmp al, 0x47
je 0x1401580c9
mov cl, 0x63
nop word [rax + rax]
mov al, 0x2b
lock cmpxchg byte [0x14049ad7b], cl
je 0x140158092
cmp al, 0x47
jne 0x140157cc0
jmp 0x1401580c9
xor eax, eax
lea rcx, [0x14049ac20]
lea rdx, [0x1403bdac0]
nop dword [rax]
movzx r8d, byte [rax + rdx]
add byte [rax + rcx], r8b
inc rax
cmp eax, 0x10
jl 0x140157cf0
mov al, 0xcc
xchg byte [0x14049ac30], al
lea rax, [0x14049ac20]
jmp 0x140158102
xor eax, eax
lea rcx, [0x14049ad00]
lea rdx, [0x1403bdbb0]
nop word cs:[rax + rax]
movzx r8d, byte [rax + rdx]
add byte [rax + rcx], r8b
inc rax
cmp eax, 0x1c
jl 0x140157d30
mov al, 0x3c
xchg byte [0x14049ad1c], al
lea rax, [0x14049ad00]
jmp 0x140158102
xor eax, eax
lea rcx, [0x14049ae20]
lea rdx, [0x1403bdcd0]
nop word cs:[rax + rax]
movzx r8d, byte [rax + rdx]
add byte [rax + rcx], r8b
inc rax
cmp eax, 0xd
jl 0x140157d70
mov al, 0xd3
xchg byte [0x14049ae2d], al
lea rax, [0x14049ae20]
jmp 0x140158102
xor eax, eax
lea rcx, [0x14049ab90]
lea rdx, [0x1403bda30]
nop word cs:[rax + rax]
movzx r8d, byte [rax + rdx]
xor byte [rax + rcx], r8b
inc rax
cmp eax, 0x15
jl 0x140157db0
mov al, 0x31
xchg byte [0x14049aba5], al
lea rax, [0x14049ab90]
jmp 0x140158102
movzx eax, byte [0x14049ae6d]
cmp al, 7
je 0x1401580fb
mov cl, 0x5c
mov al, 0xc
lock cmpxchg byte [0x14049ae6d], cl
je 0x1401580d2
cmp al, 7
jne 0x140157de6
jmp 0x1401580fb
xor eax, eax
lea rcx, [0x14049ae00]
lea rdx, [0x1403bdcb0]
nop
movzx r8d, byte [rax + rdx]
xor byte [rax + rcx], r8b
inc rax
cmp eax, 7
jl 0x140157e10
mov al, 0xf5
xchg byte [0x14049ae07], al
lea rax, [0x14049ae00]
jmp 0x140158102
xor eax, eax
lea rcx, [0x14049ac40]
lea rdx, [0x1403bdad0]
nop word cs:[rax + rax]
movzx r8d, byte [rax + rdx]
add byte [rax + rcx], r8b
inc rax
cmp eax, 3
jl 0x140157e50
mov al, 0xcd
xchg byte [0x14049ac43], al
lea rax, [0x14049ac40]
jmp 0x140158102
xor eax, eax
lea rcx, [0x14049adc0]
lea rdx, [0x1403bdc70]
nop word cs:[rax + rax]
movzx r8d, byte [rax + rdx]
xor byte [rax + rcx], r8b
inc rax
cmp eax, 2
jl 0x140157e90
mov al, 0xfd
xchg byte [0x14049adc2], al
lea rax, [0x14049adc0]
jmp 0x140158102
xor eax, eax
lea rcx, [0x14049ad80]
lea rdx, [0x1403bdc30]
nop word cs:[rax + rax]
movzx r8d, byte [rax + rdx]
add byte [rax + rcx], r8b
inc rax
cmp eax, 0xf
jl 0x140157ed0
mov al, 0x54
xchg byte [0x14049ad8f], al
lea rax, [0x14049ad80]
jmp 0x140158102
xor eax, eax
lea rcx, [0x14049ade0]
lea rdx, [0x1403bdc90]
nop word cs:[rax + rax]
movzx r8d, byte [rax + rdx]
xor byte [rax + rcx], r8b
inc rax
cmp eax, 0xb
jl 0x140157f10
mov al, 0xb8
xchg byte [0x14049adeb], al
lea rax, [0x14049ade0]
jmp 0x140158102
cmp qword [0x1404ee8c0], 0
jne 0x140157f94
mov r9d, esi
xor r9d, 0xb5ab6a3d
mov ecx, 1
mov edx, 1
mov r8d, 4
call fcn.140156490
mov rdi, rax
mov qword [0x1404ee8c0], rax
xor esi, 0x199920d0
lea rcx, [0x140156350]
mov edx, esi
call fcn.140137f30
xor eax, eax
lea rcx, [0x1403bdb40]
movzx edx, byte [rax + rcx]
mov byte [rdi + rax], dl
inc rax
cmp eax, 2
jle 0x140157f85
mov rax, qword [0x1404ee8c0]
xor ecx, ecx
lea rdx, [0x1403bdb50]
nop word cs:[rax + rax]
movzx r8d, byte [rcx + rdx]
add byte [rax + rcx], r8b
inc rcx
cmp ecx, 3
jl 0x140157fb0
mov al, 0x5a
xchg byte [0x14049acb9], al
mov rax, qword [0x1404ee8c0]
jmp 0x140158102
xor eax, eax
lea rcx, [0x14049ab50]
lea rdx, [0x1403bd9f0]
nop word cs:[rax + rax]
movzx r8d, byte [rax + rdx]
xor byte [rax + rcx], r8b
inc rax
cmp eax, 0x12
jl 0x140157ff0
mov al, 0x14
xchg byte [0x14049ab62], al
lea rax, [0x14049ab50]
jmp 0x140158102
xor eax, eax
lea rcx, [0x14049ad40]
lea rdx, [0x1403bdbf0]
nop word cs:[rax + rax]
movzx r8d, byte [rax + rdx]
xor byte [rax + rcx], r8b
inc rax
cmp eax, 0x23
jl 0x140158030
mov al, 0x36
xchg byte [0x14049ad63], al
lea rax, [0x14049ad40]
jmp 0x140158102
xor eax, eax
lea rcx, [0x14049ae40]
lea rdx, [0x1403bdcf0]
nop word cs:[rax + rax]
movzx r8d, byte [rax + rdx]
xor byte [rax + rcx], r8b
inc rax
cmp eax, 0x15
jl 0x140158070
mov al, 0x6f
xchg byte [0x14049ae55], al
lea rax, [0x14049ae40]
jmp 0x140158102
xor eax, eax
lea rcx, [0x14049ad70]
lea rdx, [0x1403bdc20]
nop word cs:[rax + rax]
movzx r8d, byte [rax + rdx]
add byte [rax + rcx], r8b
inc rax
cmp eax, 0xb
jl 0x1401580b0
mov al, 0x47
xchg byte [0x14049ad7b], al
lea rax, [0x14049ad70]
jmp 0x140158102
xor eax, eax
lea rcx, [0x14049ae60]
lea rdx, [0x1403bdd10]
movzx r8d, byte [rax + rdx]
xor byte [rax + rcx], r8b
inc rax
cmp eax, 0xd
jl 0x1401580e2
mov al, 7
xchg byte [0x14049ae6d], al
lea rax, [0x14049ae60]
add rsp, 0x28
pop rdi
pop rsi
ret