Function at 0x1400a8a30
Capabilities:
Encrypt data using chaskey

Disassembly:
push rbp
push r15
push r14
push r13
push r12
push rsi
push rdi
push rbx
mov eax, 0x1d38
call fcn.140060680
sub rsp, rax
lea rbp, [rsp + 0x80]
and rsp, 0xffffffffffffffc0
mov edi, r9d
mov r12d, r8d
mov rsi, rdx
mov r15, rcx
mov ebx, dword [rbp + 0x1d20]
test ebx, ebx
jle 0x1400a8af2
mov rax, qword [r15 + 0x258]
mov rcx, qword [rax + 0x30]
or rcx, qword [rax + 0x38]
mov r14, qword [r15 + 0x250]
setne byte [rsi + 0x30]
mov eax, dword [rax + 0x114]
mov dword [rsp + 0xfc], eax
mov r13d, dword [r15 + 0x264]
mov dword [rsi + 0x2c], 0
mov rax, qword [0x142236118]
cmp r14, qword [rax]
jne 0x1400a8ab8
mov rcx, r14
call fcn.1400aba90
mov r8d, dword [rsi + 0x10]
cmp dword [r14 + 0x58], r8d
jg 0x1400a8aca
lea eax, [r8 + 1]
mov dword [r14 + 0x58], eax
lea rdx, [rsp + 0xb00]
mov rcx, r15
call fcn.14009ef90
test al, al
je 0x1400a8b10
mov edi, dword [rsp + 0xb00]
test edi, edi
jne 0x1400a8c92
jmp 0x1400a8c82
mov dword [rsp + 0x20], 0
mov rcx, r15
mov rdx, rsi
mov r8d, r12d
mov r9d, edi
call fcn.1400a61e0
jmp 0x1400a8c94
movzx ecx, byte [0x142236108]
mov eax, dword [rsi + 0x10]
test cl, 1
jne 0x1400a8c75
cmp eax, 0xf5
jg 0x1400a8c7c
mov qword [rsp + 0x120], r13
lea ecx, [rax - 0x7d00]
cmp ecx, r12d
cmovg r12d, ecx
mov r13d, 0x7cff
sub r13d, eax
cmp r13d, edi
cmovge r13d, edi
cmp r12d, r13d
jge 0x1400a8cb4
mov dword [rsi + 0x58], 0
mov qword [rsi + 0x9c], 0
mov dword [rsi + 0xb8], 0
mov eax, dword [rsi - 0x2c]
mov ecx, dword [rsi - 0xc]
mov dword [rsi + 0x34], ecx
mov dword [rsp + 0xc4], 0x5a
test eax, eax
je 0x1400a8ba1
cmp eax, 0x81
je 0x1400a8ba1
and eax, 0x7f
mov dword [rsp + 0xc4], eax
mov dword [rsi + 0x28], 0
mov rax, qword [r15 + 0x258]
mov rcx, qword [rax + 0x20]
mov eax, dword [rax + 0x14]
cmp eax, 0xe
jl 0x1400a8bdf
add eax, 0xfffffff2
shr eax, 3
movabs rdx, 0x5851f42d4c957f2d
imul rdx, rax
movabs rax, 0x14057b7ef767814f
add rax, rdx
xor rcx, rax
mov edi, dword [rsi + 0x18]
lea rdx, [rsi + 0x32]
mov qword [rsp + 0x128], rcx
mov qword [rsp + 0xb8], rdx
call fcn.1400af550
mov r8, rax
movzx eax, byte [rsi + 0x32]
mov cl, 1
mov dword [rsp + 0xb4], ecx
test al, al
mov qword [rsp + 0xa8], r8
je 0x1400a8cb9
movsx ecx, word [r8 + 6]
mov dword [rsp + 0x8c], 0x7d02
cmp ecx, 0x7d02
je 0x1400a8cf9
mov edx, dword [rsi + 0x10]
mov r8, qword [r15 + 0x258]
mov r8d, dword [r8 + 0x14]
cmp ecx, 0x7c0a
jl 0x1400a8cc6
mov r9d, 0x7d00
sub r9d, ecx
mov r10d, 0x77
sub r10d, r8d
sub ecx, edx
cmp r9d, r10d
mov edx, 0x7c09
cmovle edx, ecx
mov dword [rsp + 0x8c], edx
jmp 0x1400a8cf1
cmp eax, 0xf6
jl 0x1400a8c82
cmp byte [rsi + 0x30], 0
je 0x1400a8ca8
mov rax, qword [r15 + 0x250]
mov rdi, qword [rax + 0x40]
and edi, 2
dec edi
mov eax, edi
lea rsp, [rbp + 0x1cb8]
pop rbx
pop rdi
pop rsi
pop r12
pop r13
pop r14
pop r15
pop rbp
ret
mov rcx, r15
call fcn.140087ae0
mov edi, eax
jmp 0x1400a8c92
mov edi, r12d
jmp 0x1400a8c92
mov dword [rsp + 0x8c], 0x7d02
jmp 0x1400a8d24
cmp ecx, 0xffff83f6
jg 0x1400a8cea
mov r9d, 0x77
sub r9d, r8d
add edx, ecx
add ecx, 0x7d00
cmp ecx, r9d
mov ecx, 0xffff83f7
cmovle ecx, edx
mov dword [rsp + 0x8c], ecx
mov r8, qword [rsp + 0xa8]
movzx edx, word [r8 + 4]
test edx, edx
je 0x1400a8d24
mov ecx, edx
and ecx, 0x7f
cmp dword [r15 + rcx*4], 0
setne cl
mov qword [rsp + 0xe0], rcx
mov dword [rsp + 0xb4], 0
jmp 0x1400a8d30
xor edx, edx
xor ecx, ecx
mov qword [rsp + 0xe0], rcx
test edi, edi
mov dword [rsp + 0x98], edi
mov qword [rsp + 0x118], rdx
mov dword [rsp + 0x78], r13d
je 0x1400a8e9b
lea rdi, [r14 + 0x16ce8]
cmp byte [rsi + 0x30], 0
jne 0x1400a8eb0
mov rcx, r15
call fcn.1400bc030
mov r13d, dword [rsi + 0x24]
movsxd rcx, dword [rsi - 0x2c]
test rcx, rcx
je 0x1400a8d7e
cmp ecx, 0x81
jne 0x1400a9d6a
mov qword [rsp + 0x110], rdi
mov eax, dword [rsi - 0x5c]
cmp eax, 0x7d02
jne 0x1400a8da6
mov eax, dword [rsi - 0xdc]
mov cl, 1
mov dword [rsp + 0x9c], ecx
cmp eax, 0x7d02
je 0x1400a8db3
cmp dword [rsi + 0x24], eax
setg al
mov dword [rsp + 0x9c], eax
cmp dword [rsi + 0x78], 4
mov eax, 0xffffffa0
mov ecx, 0xfffffed3
cmovge ecx, eax
mov eax, ebx
imul eax, eax
imul eax, ecx
add eax, r12d
add eax, 0xfffffdf4
cmp r13d, eax
jge 0x1400a8dff
lea r8d, [r12 - 1]
mov dword [rsp + 0x20], 0
mov rcx, r15
mov rdx, rsi
mov r9d, r12d
call fcn.1400a58f0
mov edi, eax
cmp eax, r12d
jl 0x1400a8c92
cmp ebx, 6
ja 0x1400a8e46
cmp byte [rsi + 0x31], 0
jne 0x1400a8e46
movzx eax, byte [rsp + 0x9c]
mov ecx, ebx
sub ecx, eax
imul eax, ecx, 0xffffff7b
add eax, r13d
movsxd rcx, dword [rsi - 0x18]
imul rdx, rcx, 0x7c66cfad
shr rdx, 0x20
sub edx, ecx
mov ecx, edx
shr ecx, 0x1f
sar edx, 7
add edx, ecx
add edx, eax
cmp edx, dword [rsp + 0x78]
jge 0x1400a9f6d
cmp byte [rsp + 0xb4], 0
je 0x1400a9e95
mov rax, qword [rsp + 0xb8]
cmp byte [rax], 0
mov r13d, dword [rsp + 0x78]
mov r8, qword [rsp + 0xa8]
mov rdx, qword [rsp + 0x118]
mov rdi, qword [rsp + 0x110]
je 0x1400aa001
movzx ecx, byte [r8 + 2]
add ecx, 0xfffffff9
xor eax, eax
cmp ecx, ebx
setl al
add eax, eax
or eax, 0xfffffffc
jmp 0x1400aa006
mov byte [rsi + 0x31], 1
lea rdi, [r14 + 0x16ce8]
cmp byte [rsi + 0x30], 0
je 0x1400a9d39
mov dword [rsi + 0x24], 0x7d02
mov dword [rsp + 0x9c], 0
mov qword [rsp + 0x90], r12
mov rax, qword [rsi - 0x38]
mov qword [rsp + 0x150], rax
mov rax, qword [rsi - 0x78]
mov qword [rsp + 0x158], rax
mov rax, qword [rsi - 0xb8]
mov qword [rsp + 0x160], rax
mov rax, qword [rsi - 0xf8]
mov qword [rsp + 0x168], rax
mov qword [rsp + 0x170], 0
mov rax, qword [rsi - 0x178]
mov qword [rsp + 0x178], rax
xor eax, eax
mov ecx, dword [rsp + 0xc4]
cmp ecx, 0x5a
je 0x1400a8f40
mov eax, ecx
mov ecx, dword [r15 + rax*4]
imul rcx, rcx, 0x168
add rcx, r14
mov eax, dword [rcx + rax*4 + 0x5668]
lea rcx, [r14 + 0x6ce8]
lea r9, [r14 + 0xfee6e8]
mov qword [rsp + 0x2b0], r15
mov qword [rsp + 0x148], rcx
mov qword [rsp + 0x2b8], rcx
mov qword [rsp + 0x110], rdi
mov qword [rsp + 0x2c0], rdi
lea rcx, [rsp + 0x150]
mov qword [rsp + 0x2c8], rcx
mov qword [rsp + 0x1a0], r9
mov qword [rsp + 0x2d0], r9
mov dword [rsp + 0x2d8], edx
mov ecx, dword [rsi + 0x1c]
mov dword [rsp + 0x2dc], ecx
mov dword [rsp + 0x2e0], 0
mov ecx, dword [rsi + 0x20]
mov dword [rsp + 0x2e4], ecx
mov dword [rsp + 0x2e8], 0
mov dword [rsp + 0x2ec], eax
mov dword [rsp + 0x2f0], 0
mov dword [rsp + 0x31c], ebx
mov rax, qword [r15 + 0x258]
mov rdi, qword [rax + 0x30]
mov r12, qword [rax + 0x38]
test edx, edx
je 0x1400a900a
mov rcx, r15
call fcn.14009c200
mov r8, qword [rsp + 0xa8]
xor al, 1
movzx eax, al
jmp 0x1400a900f
mov eax, 1
lea ecx, [rax + 7]
or rdi, r12
cmove ecx, eax
mov dword [rsp + 0x310], ecx
mov eax, 0
cmp byte [rsp + 0xb4], 0
mov edi, dword [rsp + 0x98]
jne 0x1400a904d
test byte [r8 + 3], 1
jne 0x1400a9040
xor eax, eax
jmp 0x1400a904d
movzx eax, byte [r8 + 2]
add eax, 0xfffffff9
cmp eax, ebx
setge al
mov qword [rsp + 0x1a8], rax
lea rax, [rsi + 0x40]
mov qword [rsp + 0x108], rax
mov eax, dword [rsp + 0x9c]
xor al, 1
mov dword [rsp + 0x9c], eax
mov rax, qword [rsp + 0x120]
shl rax, 0xf
add rax, qword [rsp + 0x148]
mov qword [rsp + 0x140], rax
mov eax, dword [rsp + 0x8c]
mov ecx, eax
neg ecx
cmovs ecx, eax
mov dword [rsp + 0x134], ecx
lea rax, [rsi - 0x40]
mov qword [rsp + 0x198], rax
mov rax, qword [rsp + 0xe0]
movzx ecx, al
mov dword [rsp + 0x13c], ecx
xor al, 1
mov qword [rsp + 0xe0], rax
neg r13d
mov dword [rsp + 0x138], r13d
mov eax, 0xffff82ff
mov qword [rsp + 0xc8], rax
xor r10d, r10d
mov dword [rsp + 0xd0], 0
mov dword [rsp + 0xd4], 0
xor r12d, r12d
xor eax, eax
mov qword [rsp + 0x80], rax
mov dword [rsp + 0xc0], 0
mov qword [rsp + 0xb8], r10
nop dword [rax + rax]
mov edx, r12d
and dl, 1
lea rcx, [rsp + 0x2b0]
call fcn.140096280
test eax, eax
je 0x1400a9b9d
mov r13d, eax
cmp eax, edi
je 0x1400a9120
mov rcx, r15
mov edx, r13d
call fcn.14009bf30
test al, al
je 0x1400a9120
mov rax, qword [rsp + 0xb8]
inc rax
mov qword [rsp + 0x100], rax
mov dword [rsi + 0x2c], eax
mov qword [rsi + 0x40], 0
mov eax, r13d
and eax, 0x7f
mov qword [rsp + 0xe8], rax
mov eax, dword [r15 + rax*4]
mov qword [rsp + 0xf0], rax
mov eax, r13d
sar eax, 7
cdqe
mov eax, dword [r15 + rax*4]
mov qword [rsp + 0xd8], rax
mov rcx, r15
mov edx, r13d
call fcn.14009c330
mov r9d, eax
mov eax, dword [rsp + 0x78]
movsxd rcx, ebx
lea rdx, [0x1400f81e0]
mov r8, qword [rsp + 0xb8]
mov r8d, dword [rdx + r8*4 + 4]
imul r8d, dword [rdx + rcx*4]
sub eax, dword [rsp + 0x90]
imul eax, eax, 0x494
cdq
idiv dword [r14 + 0x5660]
neg eax
add eax, r8d
add eax, 0x739
cdqe
imul rax, rax, 0x758da937
mov rcx, rax
shr rcx, 0x3f
sar rax, 0x29
add eax, ecx
lea r11d, [rbx - 1]
cmp r8d, 0x372
setge cl
and cl, byte [rsp + 0x9c]
movzx r8d, cl
add r8d, eax
mov rcx, qword [r15 + 0x258]
mov rax, qword [rsp + 0x120]
cmp dword [rcx + rax*4 + 8], 0
mov byte [rsp + 0xb0], r9b
mov qword [rsp + 0x190], r8
je 0x1400a9474
cmp dword [rsp + 0xc8], 0xffff83f7
jl 0x1400a9474
test r12b, 1
mov r10, qword [rsp + 0x100]
jne 0x1400a9280
mov eax, ebx
imul eax, ebx
add eax, 3
mov edx, dword [rsp + 0x9c]
shrx eax, eax, edx
cmp r10, rax
setae r12b
cmp qword [rsp + 0xf0], 0
sete dl
mov eax, r11d
sub eax, r8d
mov r8d, r9d
xor r8b, 1
test dl, r8b
mov qword [rsp + 0xa0], r11
jne 0x1400a933d
cmp eax, 0xb
setge cl
or cl, r9b
jne 0x1400a932b
cmp byte [rsi + 0x30], 0
jne 0x1400a932b
imul eax, eax, 0xc7
imul rcx, qword [rsp + 0xd8], 0x5a0
mov rdx, qword [rsp + 0xe8]
shl rdx, 4
add rdx, qword [rsp + 0x110]
add rdx, rcx
mov r8, qword [rsp + 0xf0]
mov ecx, r8d
and ecx, 7
movsx ecx, word [rdx + rcx*2]
imul ecx, ecx, 0x2aab
mov edx, ecx
shr edx, 0x1f
shr ecx, 0x10
add ecx, edx
movsx ecx, cx
add eax, dword [rsi + 0x24]
lea rdx, [0x1400d8770]
add eax, dword [rdx + r8*4]
add eax, ecx
add eax, 0x132
cmp eax, dword [rsp + 0x90]
jl 0x1400a9113
mov r8d, ebx
shl r8d, 8
add r8d, ebx
neg r8d
jmp 0x1400a9448
imul rdx, qword [rsp + 0xd8], 0xb4
mov r8, qword [rsp + 0x150]
add r8, rdx
mov r11, qword [rsp + 0xe8]
movsx r8d, word [r8 + r11*2]
mov r9, qword [rsp + 0x158]
add r9, rdx
movsx r9d, word [r9 + r11*2]
add r9d, r8d
mov r8, qword [rsp + 0x1a0]
add r8, rdx
add rdx, qword [rsp + 0x168]
movsx edx, word [rdx + r11*2]
mov rcx, qword [rcx]
and ecx, 0x1ff
imul rcx, rcx, 0xb40
add rcx, r8
movsx ecx, word [rcx + r11*2]
add ecx, edx
add ecx, r9d
cmp eax, 5
jg 0x1400a93bc
imul edx, ebx, 0xfffff25d
cmp ecx, edx
jl 0x1400a9113
movsxd rdx, r13d
mov r8, qword [rsp + 0x140]
movsx edx, word [r8 + rdx*2]
lea ecx, [rcx + rdx*2]
movsxd rcx, ecx
imul rcx, rcx, 0x590f00a7
mov rdx, rcx
shr rdx, 0x3f
sar rcx, 0x2b
add ecx, edx
add ecx, eax
cmp ecx, 0xffffffff
mov eax, 0xfffffffe
cmovge eax, ecx
cmp byte [rsi + 0x30], 0
jne 0x1400a9437
cmp eax, 0xa
jg 0x1400a9437
mov edx, dword [rsi + 0x24]
lea r8d, [rdx - 0x3e]
mov r9d, eax
shl r9d, 7
add r9d, eax
cmp dword [rsp + 0xc8], r8d
lea eax, [rdx + r9 + 0x81]
lea edx, [rdx + r9 + 0x8b]
cmovl edx, eax
cmp edx, dword [rsp + 0x90]
jle 0x1400a9113
mov eax, ecx
sar eax, 0x1f
andn eax, eax, ecx
imul eax, eax
imul r8d, eax, 0xffffffdd
mov rcx, r15
mov edx, r13d
call fcn.14009cd80
movzx r9d, byte [rsp + 0xb0]
mov r11, qword [rsp + 0xa0]
mov r10, qword [rsp + 0x100]
test al, al
je 0x1400a9113
mov eax, dword [r14 + 0x5658]
add eax, eax
xor r10d, r10d
cmp dword [rsi + 0x10], eax
jge 0x1400a95d3
test edi, edi
mov r8, qword [rsp + 0x118]
jne 0x1400a94e8
cmp r13d, r8d
jne 0x1400a94e8
xor eax, eax
cmp dword [r14 + 0x565c], 0x21
setge dl
mov rcx, qword [rsp + 0xa8]
movzx ecx, byte [rcx + 3]
test cl, 2
je 0x1400a94e8
mov al, dl
shr ecx, 1
and ecx, 2
sub ecx, eax
add ecx, 4
cmp ebx, ecx
jl 0x1400a94e8
cmp dword [rsp + 0x134], 0x7c09
ja 0x1400a94e8
mov rax, qword [rsp + 0xa8]
movzx eax, byte [rax + 2]
add eax, 0xfffffffc
cmp eax, ebx
jge 0x1400a954c
cmp ebx, 9
setge al
test r9b, al
je 0x1400a9508
mov rax, qword [rsp + 0x80]
mov ecx, eax
mov r10d, 1
jmp 0x1400a95dd
cmp r13d, r8d
jne 0x1400a95d3
cmp r8d, dword [rsi + 0x1c]
jne 0x1400a95d3
imul rax, qword [rsp + 0xd8], 0xb4
add rax, qword [rsp + 0x150]
mov rcx, qword [rsp + 0xe8]
movsx eax, word [rax + rcx*2]
xor r10d, r10d
cmp eax, 0x19e5
setge r10b
jmp 0x1400a95d3
mov eax, dword [rsp + 0x8c]
mov edi, eax
sub edi, ebx
mov eax, r11d
shr eax, 0x1f
add eax, r11d
sar eax, 1
mov dword [rsi + 0x18], r8d
lea r8d, [rdi - 1]
mov dword [rsp + 0x20], eax
mov byte [rsp + 0x28], 0
mov rcx, r15
mov rdx, rsi
mov r9d, edi
mov qword [rsp + 0xa0], r11
call fcn.1400a6ad0
mov r11, qword [rsp + 0xa0]
mov dword [rsi + 0x18], 0
mov r10d, 1
mov rcx, qword [rsp + 0xe0]
cmp eax, edi
jl 0x1400a95dd
mov ecx, dword [rsp + 0x78]
cmp edi, ecx
jge 0x1400a8c92
mov r10d, 0xfffffffe
mov edx, dword [rsp + 0x8c]
cmp edx, ecx
jge 0x1400a95d3
xor r10d, r10d
cmp edx, eax
setle r10b
neg r10d
mov rax, qword [rsp + 0x80]
mov ecx, eax
mov byte [rsp + 0x7f], cl
xor edi, edi
cmp qword [rsp + 0xf0], 0
setne dil
mov dword [rsp + 0x80], r10d
add r11d, r10d
mov qword [rsp + 0xa0], r11
mov eax, dword [rsi - 0xc]
mov dword [rsi + 0x34], eax
mov rcx, r15
mov edx, r13d
call fcn.14009cce0
mov rcx, qword [0x142208560]
mov rdx, rax
mulx rax, rax, qword [0x142208558]
shl rax, 5
prefetcht0 byte [rcx + rax]
mov dword [rsi + 0x14], r13d
movzx eax, byte [rsi + 0x30]
imul rax, rax, 0x7e9000
add rax, r14
imul rcx, rdi, 0x3f4800
mov rdx, qword [rsp + 0xd8]
imul rdx, rdx, 0x3f480
add rdx, rax
add rdx, rcx
mov rdi, qword [rsp + 0xe8]
imul rax, rdi, 0xb40
add rax, rdx
add rax, 0x1c6e8
mov qword [rsi + 8], rax
mov rcx, r15
mov edx, r13d
lea r8, [rsp + 0xb00]
movzx r9d, byte [rsp + 0xb0]
call fcn.14009c610
movzx ecx, byte [rsi + 0x31]
mov rdx, qword [rsp + 0x190]
lea eax, [rdx - 2]
test cl, cl
cmove eax, edx
cmp byte [rsp + 0x1a8], 0
cmovne eax, edx
xor edx, edx
cmp dword [rsi - 0x14], 9
setge dl
movzx r8d, byte [rsp + 0x7f]
and r8b, 1
movzx r8d, r8b
not r8d
add r8d, dword [rsp + 0x13c]
sub r8d, edx
lea edx, [r8 + rax]
cmp r13d, dword [rsp + 0x118]
mov r9d, 0
cmove edx, r9d
cmp dword [rsi + 0x78], 4
lea r10d, [r8 + rax + 1]
cmovl r10d, edx
movsxd rax, r13d
mov rdx, qword [rsp + 0x140]
movsx eax, word [rdx + rax*2]
imul rdx, qword [rsp + 0xd8], 0xb4
mov r8, qword [rsp + 0x150]
add r8, rdx
movsx r8d, word [r8 + rdi*2]
lea eax, [r8 + rax*2]
mov r8, qword [rsp + 0x158]
add r8, rdx
add rdx, qword [rsp + 0x168]
movsx r8d, word [r8 + rdi*2]
movsx edx, word [rdx + rdi*2]
add eax, r8d
add eax, edx
add eax, 0xfffff11f
mov dword [rsi + 0x28], eax
lea edx, [rbx - 9]
cmp edx, 8
mov r8d, 0x2df8
mov edx, 0x3f57
cmovb r8d, edx
cdq
idiv r8d
sub r10d, eax
cmp ebx, 2
mov qword [rsp + 0x188], r12
jl 0x1400a991c
test cl, cl
sete al
cmp qword [rsp + 0xf0], 0
sete cl
xor edx, edx
cmp dword [rsi + 0x10], 2
setl dl
inc rdx
cmp qword [rsp + 0xb8], rdx
jb 0x1400a991c
or al, cl
je 0x1400a991c
mov rax, qword [rsp + 0xa0]
sub eax, r10d
mov edi, dword [rsp + 0x80]
add edi, ebx
cmp edi, eax
cmovge edi, eax
test eax, eax
mov eax, 1
cmovle edi, eax
mov rax, qword [rsp + 0x90]
mov r8d, eax
not r8d
mov r9d, eax
neg r9d
mov dword [rsp + 0x20], edi
mov byte [rsp + 0x28], 1
mov rcx, r15
mov rdx, qword [rsp + 0x108]
mov dword [rsp + 0x80], r8d
mov dword [rsp + 0xb0], r9d
call fcn.1400a6ad0
neg eax
cmp dword [rsp + 0x90], eax
jge 0x1400a9969
mov r10, qword [rsp + 0xa0]
mov ecx, r10d
sub ecx, edi
jle 0x1400a9969
lea ecx, [rcx + rcx*4]
mov r9, qword [rsp + 0xc8]
lea ecx, [r9 + rcx*2]
add ecx, 0x40
xor r11d, r11d
cmp ecx, eax
setl r11b
mov rcx, qword [rsp + 0x90]
add ecx, 0x298
cmp ecx, eax
setl cl
mov edx, dword [rsi + 0x34]
cmp edx, 6
setl r8b
and r8b, cl
lea ecx, [r10 + r9]
xor r9d, r9d
cmp ecx, eax
setg r9b
movzx ecx, r8b
add edx, ecx
mov dword [rsi + 0x34], edx
add r11d, r10d
sub r11d, r9d
mov edx, r11d
add edx, ecx
cmp edx, edi
mov edi, dword [rsp + 0x98]
mov qword [rsp + 0xa0], rdx
jle 0x1400a98d8
mov dword [rsp + 0x20], edx
mov byte [rsp + 0x28], 1
mov rcx, r15
mov rdx, qword [rsp + 0x108]
mov r8d, dword [rsp + 0x80]
mov r9d, dword [rsp + 0xb0]
call fcn.1400a6ad0
mov rdx, qword [rsp + 0xa0]
neg eax
cmp eax, dword [rsp + 0x90]
mov dword [rsp + 0x80], eax
jle 0x1400a9b4e
xor r9d, r9d
cmp eax, dword [rsp + 0x78]
jl 0x1400a9b6a
imul r9d, edx, 0x188
cmp r9d, 0x915
mov eax, 0x915
cmovge r9d, eax
add r9d, 0xfffffe2d
jmp 0x1400a9b6a
cmp qword [rsp + 0xb8], 0
je 0x1400a998e
mov rax, qword [rsp + 0x90]
mov r8d, eax
not r8d
mov r9d, eax
neg r9d
xor eax, eax
cmp r10d, 5
setge al
mov rcx, qword [rsp + 0xa0]
sub ecx, eax
mov dword [rsp + 0x20], ecx
mov byte [rsp + 0x28], 1
mov rcx, r15
mov rdx, qword [rsp + 0x108]
call fcn.1400a6ad0
neg eax
mov edi, dword [rsp + 0x98]
cmp qword [rsp + 0xb8], 0
je 0x1400a9995
cmp eax, dword [rsp + 0x90]
mov rcx, qword [rsp + 0xa0]
jle 0x1400a99df
jmp 0x1400a999d
mov edi, dword [rsp + 0x98]
mov rcx, qword [rsp + 0xa0]
mov rdx, qword [rsp + 0x108]
lea rax, [rsp + 0x720]
mov qword [rdx], rax
mov dword [rsp + 0x720], 0
mov rax, qword [rsp + 0x90]
mov r9d, eax
neg r9d
mov dword [rsp + 0x20], ecx
mov rcx, r15
mov r8d, dword [rsp + 0x138]
call fcn.1400a8a30
neg eax
mov r12d, eax
mov rcx, r15
mov edx, r13d
call fcn.14009ca90
movzx eax, byte [0x142236108]
test al, 1
jne 0x1400aa090
mov r11d, r12d
cmp r12d, dword [rsp + 0xc8]
mov r10, qword [rsp + 0x100]
movzx r8d, byte [rsp + 0x7f]
mov r12, qword [rsp + 0x188]
jle 0x1400a9ac8
cmp r11d, dword [rsp + 0x90]
jle 0x1400a9abd
mov rax, qword [rsi]
mov rcx, qword [rsi + 0x40]
mov dword [rax], r13d
add rax, 4
test rcx, rcx
je 0x1400a9a5e
mov edx, dword [rcx]
test edx, edx
je 0x1400a9a5e
add rcx, 4
mov dword [rax], edx
add rax, 4
mov edx, dword [rcx]
add rcx, 4
test edx, edx
jne 0x1400a9a4e
mov dword [rax], 0
mov edx, dword [rsp + 0x78]
cmp r11d, edx
jge 0x1400aa097
lea eax, [rbx - 2]
cmp r11d, 0xffffcbd9
cmovl eax, ebx
lea ecx, [rbx - 3]
cmp ecx, 8
cmovae eax, ebx
cmp edx, 0x30f9
cmovge eax, ebx
mov ecx, r11d
mov qword [rsp + 0xc8], rcx
mov qword [rsp + 0x90], rcx
mov ecx, r8d
mov qword [rsp + 0x80], rcx
mov dword [rsp + 0xc0], r13d
mov ebx, eax
jmp 0x1400a9113
mov eax, r11d
mov qword [rsp + 0xc8], rax
mov eax, r8d
mov qword [rsp + 0x80], rax
cmp r13d, dword [rsp + 0xc0]
je 0x1400a9113
mov eax, r8d
mov qword [rsp + 0x80], rax
cmp qword [rsp + 0xb8], 0x1f
ja 0x1400a9113
cmp qword [rsp + 0xf0], 0
je 0x1400a9b23
mov ecx, dword [rsp + 0xd4]
movsxd rax, ecx
inc ecx
mov dword [rsp + 0xd4], ecx
mov dword [rsp + rax*4 + 0x230], r13d
jmp 0x1400a9b3e
mov ecx, dword [rsp + 0xd0]
movsxd rax, ecx
inc ecx
mov dword [rsp + 0xd0], ecx
mov dword [rsp + rax*4 + 0x1b0], r13d
mov eax, r8d
mov qword [rsp + 0x80], rax
jmp 0x1400a9113
imul eax, edx, 0x188
cmp eax, 0x915
mov ecx, 0x915
cmovge eax, ecx
mov r9d, 0x1d3
sub r9d, eax
mov rcx, rsi
mov rdx, qword [rsp + 0xd8]
mov r8, qword [rsp + 0xe8]
call fcn.1400a8790
mov eax, dword [rsp + 0x80]
cmp qword [rsp + 0xb8], 0
jne 0x1400a997b
jmp 0x1400a9995
cmp dword [rsp + 0xb8], 0
je 0x1400a9c32
mov r13d, dword [rsp + 0xc0]
mov rax, qword [rsp + 0xc8]
mov r11d, eax
mov r14, qword [rsp + 0x90]
test r13d, r13d
mov r8d, dword [rsp + 0xc4]
je 0x1400a9c52
mov dword [rsp + 0x50], ebx
mov eax, dword [rsp + 0xd4]
mov dword [rsp + 0x48], eax
lea rax, [rsp + 0x230]
mov qword [rsp + 0x40], rax
mov eax, dword [rsp + 0xd0]
mov dword [rsp + 0x38], eax
lea rax, [rsp + 0x1b0]
mov qword [rsp + 0x30], rax
mov dword [rsp + 0x28], r8d
mov r12d, dword [rsp + 0x78]
mov dword [rsp + 0x20], r12d
mov rcx, r15
mov rdx, rsi
mov r8d, r13d
mov r9d, r11d
mov edi, r11d
call fcn.1400aa0b0
mov r11d, edi
jmp 0x1400a9ec6
test edi, edi
mov r14, qword [rsp + 0x90]
mov r13d, dword [rsp + 0xc0]
je 0x1400a9eb7
mov r11d, r14d
jmp 0x1400a9ec1
xor r13d, r13d
cmp dword [rsp + 0xfc], 0
jne 0x1400a9ec1
cmp r8d, 0x5a
mov r12d, dword [rsp + 0x78]
je 0x1400a9ec6
xor eax, eax
cmp ebx, 6
setge al
lea ecx, [r14 - 0x1bc]
xor edx, edx
cmp r11d, ecx
setl dl
add edx, eax
xor eax, eax
cmp dword [rsi - 0x14], 0xb
setge al
add eax, edx
inc eax
mov ecx, r8d
mov edx, dword [r15 + rcx*4]
imul ecx, ebx, 0x188
cmp ecx, 0x915
mov edi, 0x915
cmovl edi, ecx
add edi, 0xfffffe2d
imul edi, eax
mov rcx, qword [rsp + 0x198]
mov r9d, edi
mov r15d, r11d
call fcn.1400a8790
mov r11d, r15d
mov rax, qword [rsp + 0x120]
xor eax, 1
shl rax, 0xf
mov r10, qword [rsp + 0x148]
add r10, rax
movsxd rax, dword [rsi - 0x2c]
mov ecx, edi
shr ecx, 0x1f
add ecx, edi
sar ecx, 1
imul edx, ecx, 0x1c0f
movsx r8d, word [r10 + rax*2]
mov r9d, ecx
neg r9d
cmovs r9d, ecx
imul r9d, r8d
sub edx, r9d
movsxd rcx, edx
imul rcx, rcx, 0x1d32cfed
mov rdx, rcx
shr rdx, 0x3f
shr rcx, 0x2a
add ecx, edx
add ecx, r8d
mov word [r10 + rax*2], cx
jmp 0x1400a9ec6
test al, al
je 0x1400a9fa3
movsx r13d, word [r8 + 8]
mov dword [rsi + 0x24], r13d
mov rcx, r15
cmp r13d, 0x7d02
jne 0x1400aa02e
call fcn.140087ae0
mov r13d, eax
mov dword [rsi + 0x24], eax
jmp 0x1400aa033
cmp dword [rsp + 0xfc], 0
jne 0x1400a8d7e
cmp byte [rsi - 0x10], 0
jne 0x1400a8d7e
mov eax, dword [rsi + 0x24]
add eax, dword [rsi - 0x1c]
imul edx, eax, 0xfffffff2
cmp edx, 0x86c
mov r8d, 0x86c
cmovl r8d, edx
cmp eax, 0x71
mov eax, 0xfffff9db
cmovl eax, r8d
mov rdx, qword [rsp + 0x120]
xor rdx, 1
shl rdx, 0xf
add rdx, r14
imul r8d, eax, 0x1c0f
mov r9d, eax
neg r9d
cmovs r9d, eax
movsx r10d, word [rdx + rcx*2 + 0x6ce8]
imul r9d, r10d
sub r8d, r9d
movsxd r8, r8d
imul r8, r8, 0x1d32cfed
mov r9, r8
shr r9, 0x3f
shr r8, 0x2a
add r8d, r9d
add r8d, r10d
mov word [rdx + rcx*2 + 0x6ce8], r8w
mov ecx, dword [rsp + 0xc4]
mov edx, dword [r15 + rcx*4]
mov r8d, edx
and r8d, 7
cmp r8d, 4
je 0x1400a8d7e
mov r8, qword [r15 + 0x258]
mov r8, qword [r8]
and r8d, 0x1ff
imul r8, r8, 0xb40
imul rdx, rdx, 0xb4
add rdx, r14
add rdx, r8
lea r8d, [rax + 3]
test eax, eax
cmovns r8d, eax
sar r8d, 2
mov eax, r8d
shl eax, 0xd
movsx r9d, word [rdx + rcx*2 + 0xfee6e8]
mov r10d, r8d
neg r10d
cmovs r10d, r8d
imul r10d, r9d
sub eax, r10d
cdqe
imul rax, rax, 0x66666667
mov r8, rax
shr r8, 0x3f
shr rax, 0x2c
add eax, r8d
add eax, r9d
mov word [rdx + rcx*2 + 0xfee6e8], ax
jmp 0x1400a8d7e
mov r13d, dword [rsp + 0x78]
mov r8, qword [rsp + 0xa8]
mov rdx, qword [rsp + 0x118]
mov rdi, qword [rsp + 0x110]
jmp 0x1400a8ec2
mov r11d, 0xffff8300
add r11d, dword [rsi + 0x10]
mov r12d, dword [rsp + 0x78]
cmp r11d, 0x7d01
mov edi, 0x7d01
cmovl edi, r11d
cmp edi, r14d
jg 0x1400a9ef5
mov al, 1
cmp byte [rsi + 0x31], 0
jne 0x1400a9ef2
cmp byte [rsi - 0xf], 0
setne cl
cmp ebx, 4
setge al
and al, cl
mov byte [rsi + 0x31], al
cmp dword [rsp + 0x98], 0
jne 0x1400a8c92
xor r8d, r8d
cmp edi, 0xffff83f7
mov eax, dword [rsi + 0x10]
mov ecx, dword [rsi + 0x24]
cmovl r8d, eax
neg r8d
cmp edi, 0x7c0a
cmovge r8d, eax
add r8d, edi
movzx r9d, byte [rsi + 0x31]
xor eax, eax
test r13d, r13d
setne al
cmp edi, r12d
lea eax, [rax + rax + 1]
mov edx, 2
cmovl edx, eax
mov dword [rsp + 0x38], ecx
mov dword [rsp + 0x30], r13d
mov dword [rsp + 0x28], ebx
mov dword [rsp + 0x20], edx
mov rcx, qword [rsp + 0xa8]
mov rdx, qword [rsp + 0x128]
call fcn.1400aeda0
jmp 0x1400a8c92
mov eax, dword [rsp + 0xb4]
or al, byte [rsp + 0xe0]
cmp al, 1
jne 0x1400a8e46
cmp r13d, dword [rsp + 0x78]
jl 0x1400a8e46
mov edi, r13d
cmp r13d, 0x6589
jl 0x1400a8c92
jmp 0x1400a8e46
mov rcx, r15
call fcn.140087ae0
mov rdx, qword [rsp + 0xa8]
mov r13d, eax
mov dword [rsi + 0x24], eax
movzx eax, byte [rsi + 0x31]
mov rcx, qword [rsp + 0x128]
cmp word [rdx], cx
jne 0x1400aa067
movzx ecx, al
lea ecx, [rcx*2 + 1]
mov rdx, qword [rsp + 0xa8]
movzx edx, byte [rdx + 2]
add edx, 0xfffffffc
cmp ecx, edx
mov rdx, qword [rsp + 0xa8]
mov rcx, qword [rsp + 0x128]
jle 0x1400a8d69
jmp 0x1400aa06d
mov eax, 0xfffffffe
add eax, ebx
mov ebx, eax
jg 0x1400a8ec2
mov dword [rsp + 0x20], 0
mov rcx, r15
mov rdx, rsi
mov r8d, r12d
mov r9d, r13d
call fcn.1400a61e0
jmp 0x1400a8c94
call fcn.1400bc030
mov edx, dword [rsp + 0x8c]
cmp edx, 0x7d02
je 0x1400a8d69
mov rax, qword [rsp + 0xa8]
movzx eax, byte [rax + 3]
xor ecx, ecx
cmp edx, r13d
setg cl
inc ecx
test eax, ecx
cmovne r13d, edx
jmp 0x1400a8d69
mov word [rdx + 4], 0
mov word [rdx], cx
mov byte [rdx + 2], 1
shl al, 2
or al, byte [0x142208568]
mov byte [rdx + 3], al
mov word [rdx + 6], 0x7d02
mov word [rdx + 8], r13w
jmp 0x1400a8d69
xor edi, edi
jmp 0x1400a8c92
movzx eax, byte [rsp + 0xb4]
mov ecx, dword [rsi + 0x38]
add eax, ecx
inc eax
mov dword [rsi + 0x38], eax
jmp 0x1400a9bbe