Function at 0x14003fc30
Capabilities:
Encrypt data using chaskey

Disassembly:
push rbp
push r15
push r14
push r13
push r12
push rsi
push rdi
push rbx
mov eax, 0x1d78
call fcn.140060da0
sub rsp, rax
lea rbp, [rsp + 0x80]
and rsp, 0xffffffffffffffc0
mov r14d, r9d
mov r15d, r8d
mov rsi, rdx
mov r12, rcx
test r8d, r8d
jns 0x14003fca5
mov rax, qword [r12 + 0x358]
cmp dword [rax + 0x1c], 3
jl 0x14003fca5
mov edx, dword [rsi + 0x10]
mov rcx, r12
call fcn.140033f50
test al, al
je 0x14003fca5
mov rax, qword [r12 + 0x350]
mov rax, qword [rax + 0x138]
and eax, 2
lea r15d, [rax - 1]
mov ebx, r15d
cmp eax, r14d
jg 0x14003fd6e
mov r13d, dword [rbp + 0x1d60]
test r13d, r13d
jle 0x14003fd06
mov rax, qword [r12 + 0x358]
cmp qword [rax + 0x30], 0
mov rdi, qword [r12 + 0x350]
setne byte [rsi + 0x30]
mov rax, qword [r12 + 0x358]
mov ebx, dword [rax + 0xa0]
movsxd rax, dword [r12 + 0x364]
mov qword [rsp + 0x108], rax
mov dword [rsi + 0x2c], 0
mov rax, qword [0x1401e1ac0]
cmp rdi, qword [rax]
je 0x14003fd21
test byte [0x1401e1ab0], 1
je 0x14003fd32
jmp 0x14003fd4b
mov dword [rsp + 0x20], 0
mov rcx, r12
mov rdx, rsi
mov r8d, r15d
mov r9d, r14d
call fcn.14003f480
jmp 0x14003fd70
mov rcx, rdi
call fcn.14003de50
test byte [0x1401e1ab0], 1
jne 0x14003fd4b
mov edx, dword [rsi + 0x10]
mov rcx, r12
call fcn.140033ea0
test al, al
jne 0x14003fd4b
mov eax, dword [rsi + 0x10]
cmp eax, 0xf6
jl 0x14003fd92
cmp dword [rsi + 0x10], 0xf6
jl 0x14003fd5a
cmp byte [rsi + 0x30], 0
je 0x14003fd84
mov rax, qword [r12 + 0x350]
mov rbx, qword [rax + 0x138]
and ebx, 2
dec ebx
mov eax, ebx
lea rsp, [rbp + 0x1cf8]
pop rbx
pop rdi
pop rsi
pop r12
pop r13
pop r14
pop r15
pop rbp
ret
mov rcx, r12
xor edx, edx
call fcn.140013890
mov ebx, eax
jmp 0x14003fd6e
lea ecx, [rax - 0x7d00]
cmp ecx, r15d
cmovg r15d, ecx
mov edx, 0x7cff
sub edx, eax
cmp edx, r14d
cmovge edx, r14d
mov eax, edx
sub eax, r15d
jle 0x14003fef4
mov dword [rsp + 0xe0], eax
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 ecx, 0x40
test eax, eax
mov qword [rsp + 0x98], rdx
je 0x14003fdff
cmp eax, 0x41
je 0x14003fdff
and eax, 0x3f
mov ecx, eax
mov dword [rsp + 0xd8], ecx
mov dword [rsi + 0x28], 0
mov rax, qword [r12 + 0x358]
mov rdx, qword [rax + 0x28]
mov eax, dword [rax + 0x1c]
cmp eax, 0xe
jl 0x14003fe45
add eax, 0xfffffff2
shr eax, 3
movabs rcx, 0x5851f42d4c957f2d
imul rcx, rax
movabs rax, 0x14057b7ef767814f
add rax, rcx
xor rdx, rax
lea rax, [rsi - 0x40]
mov qword [rsp + 0x188], rax
mov r14d, dword [rsi + 0x18]
lea r8, [rsi + 0x32]
lea rcx, [0x1401e1af8]
mov qword [rsp + 0x148], rdx
mov qword [rsp + 0xe8], r8
call fcn.140057c10
mov r9, rax
cmp byte [rsi + 0x32], 0
mov qword [rsp + 0x90], rax
mov dword [rsp + 0x8c], ebx
mov dword [rsp + 0x134], r14d
je 0x14003fefc
movsx eax, word [r9 + 6]
mov ebx, 0x7d02
cmp eax, 0x7d02
je 0x14003ff65
mov rcx, qword [r12 + 0x358]
mov edx, dword [rcx + 0x1c]
mov ecx, dword [rsi + 0x10]
cmp eax, 0x7b14
jl 0x14003ff27
movzx r8d, ax
cmp r8d, 0x7c0a
jb 0x14003fef0
mov r8d, 0x7d00
sub r8d, eax
mov r9d, 0x63
sub r9d, edx
mov ebx, 0x7c09
cmp r8d, r9d
mov r9, qword [rsp + 0x90]
jg 0x14003ff65
sub eax, ecx
jmp 0x14003ff63
mov ebx, r15d
jmp 0x14003fd6e
test r14d, r14d
je 0x1400400e8
mov dword [rsp + 0xc0], 0
mov ecx, 0x7d02
mov al, 1
xor r11d, r11d
mov byte [rsp + 0x83], 1
jmp 0x140040213
cmp eax, 0xffff84ec
jg 0x14003ff63
movzx r8d, ax
cmp r8d, 0x83f6
ja 0x14003ff5d
lea r8d, [rax + 0x7d00]
mov r9d, 0x63
sub r9d, edx
mov ebx, 0xffff83f7
cmp r8d, r9d
mov r9, qword [rsp + 0x90]
jg 0x14003ff65
add ecx, eax
mov ebx, ecx
jmp 0x14003ff65
mov ebx, eax
movzx r11d, word [r9 + 4]
test r11d, r11d
sete byte [rsp + 0x83]
je 0x14003ffc4
mov eax, r11d
and eax, 0x3f
cmp dword [r12 + rax*4], 0
setne al
mov edx, r11d
and edx, 0xc000
cmp edx, 0xc000
setne cl
mov r8b, 1
mov dword [rsp + 0xc0], r8d
cmp edx, 0x8000
je 0x14003ffcf
and cl, al
jne 0x14003ffcf
mov eax, r11d
not eax
test eax, 0x3000
sete al
mov dword [rsp + 0xc0], eax
jmp 0x14003ffcf
mov dword [rsp + 0xc0], 0
mov al, 1
test r14d, r14d
jne 0x14004020a
movzx eax, byte [r9 + 3]
shr al, 2
and al, 1
mov byte [rsi + 0x31], al
movzx eax, byte [r9 + 3]
and eax, 3
xor ecx, ecx
cmp eax, 3
sete dl
cmp ebx, 0x7d02
je 0x1400401c7
movzx r8d, byte [r9 + 2]
add r8d, 0xfffffff9
mov cl, dl
mov edx, r13d
sub edx, ecx
cmp r8d, edx
jle 0x1400401c7
xor ecx, ecx
cmp ebx, dword [rsp + 0x98]
setl cl
mov edx, 2
sub edx, ecx
test edx, eax
je 0x1400401c7
test r11, r11
je 0x1400401b5
cmp ebx, dword [rsp + 0x98]
jge 0x14004010c
cmp byte [rsp + 0xc0], 0
jne 0x1400401b5
imul eax, r13d, 0x155
cmp eax, 0x884
mov ecx, 0x884
cmovl ecx, eax
mov r9d, 0x1d6
sub r9d, ecx
mov rax, qword [rsp + 0x108]
shl rax, 0xd
add rax, rdi
mov ecx, r11d
and ecx, 0xfff
movsx edx, word [rax + rcx*2 + 0x26a4]
mov r8d, r9d
neg r8d
cmovs r8d, r9d
imul r8d, edx
movsxd r8, r8d
imul r8, r8, 0xffffffffb70287c9
mov r10, r8
shr r10, 0x3f
shr r8, 0x2b
add r8d, r10d
add edx, r9d
add edx, r8d
mov word [rax + rcx*2 + 0x26a4], dx
mov r8d, r11d
and r8d, 0x3f
mov eax, r11d
shr eax, 6
and eax, 0x3f
mov edx, dword [r12 + rax*4]
mov rcx, rsi
jmp 0x1400401a2
mov byte [rsi + 0x31], 0
mov ebx, 0x7d02
xor r11d, r11d
mov byte [rsp + 0x83], 1
mov dword [rsp + 0xc0], 0
jmp 0x1400401c7
cmp byte [rsp + 0xc0], 0
jne 0x14004014f
imul eax, r13d, 0x155
cmp eax, 0x884
mov r9d, 0x884
cmovl r9d, eax
add r9d, 0xfffffe2a
mov rcx, r12
mov rdx, rsi
mov r8d, r11d
mov r14, r11
call fcn.140043940
mov r11, r14
mov r9, qword [rsp + 0x90]
cmp dword [rsp + 0xd8], 0x40
je 0x1400401b5
cmp dword [rsp + 0x8c], 0
jne 0x1400401b5
cmp dword [rsi - 0x14], 2
jg 0x1400401b5
imul eax, r13d, 0x155
add eax, 0x155
cmp eax, 0x884
mov ecx, 0x884
cmovl ecx, eax
mov r9d, 0x1d6
sub r9d, ecx
mov r8d, dword [rsp + 0xd8]
mov eax, r8d
mov edx, dword [r12 + rax*4]
mov rcx, qword [rsp + 0x188]
mov r14, r11
call fcn.140041b30
mov r11, r14
mov r9, qword [rsp + 0x90]
mov rax, qword [r12 + 0x358]
cmp dword [rax + 0x1c], 0x5a
jl 0x14003fd6e
mov eax, dword [0x1401c7bd8]
test eax, eax
je 0x140040208
mov ecx, dword [r12 + 0x170]
add ecx, dword [r12 + 0x150]
cmp ecx, eax
jg 0x140040208
jl 0x1400401f0
cmp dword [0x1401c7be0], r13d
jg 0x140040208
mov rax, qword [r12 + 0x358]
cmp dword [rax + 0x1c], 0
jne 0x140040208
test byte [rax + 0x18], 0xf
je 0x1400418b3
xor eax, eax
mov ecx, ebx
mov ebx, dword [rsp + 0x8c]
mov dword [rsp + 0xa4], ecx
lea rcx, [rsi + 0x40]
mov qword [rsp + 0x120], rcx
lea rcx, [rdi + 0x66a4]
mov qword [rsp + 0x158], rcx
cmp byte [rsi + 0x30], 0
mov qword [rsp + 0xa8], r11
mov dword [rsp + 0xb4], eax
je 0x14004026c
mov dword [rsi + 0x24], 0x7d02
mov dword [rsp + 0xdc], 0
mov al, 1
mov dword [rsp + 0xe8], eax
xor eax, eax
jmp 0x14004097d
test al, al
je 0x1400402ba
mov rcx, r12
call fcn.140027e10
mov r11, qword [rsp + 0xa8]
mov r14d, dword [rsi + 0x24]
mov eax, 0x8000
add eax, dword [r12 + 0x368]
sar eax, 0x10
mov ecx, eax
neg ecx
cmp dword [r12 + 0x364], 0
cmovne ecx, eax
add ecx, r14d
mov eax, ecx
neg eax
cmovs eax, ecx
mov dword [rsp + 0xdc], eax
jmp 0x1400403be
mov rcx, qword [rsp + 0xe8]
cmp byte [rcx], 0
je 0x140040308
movsx r14d, word [r9 + 8]
mov dword [rsi + 0x24], r14d
cmp r14d, 0x7d02
jne 0x140040369
lea rdx, [rsp + 0xdc]
mov rcx, r12
call fcn.140013890
mov r11, qword [rsp + 0xa8]
mov r9, qword [rsp + 0x90]
mov r14d, eax
mov dword [rsi + 0x24], eax
jmp 0x14004039a
lea rdx, [rsp + 0xdc]
mov rcx, r12
mov rbx, r9
call fcn.140013890
mov r14d, eax
mov dword [rsi + 0x24], eax
movzx r9d, byte [rsi + 0x31]
mov dword [rsp + 0x38], eax
mov dword [rsp + 0x30], 0
mov dword [rsp + 0x28], 0xfffffffa
mov dword [rsp + 0x20], 0
mov rcx, rbx
mov ebx, dword [rsp + 0x8c]
mov rdx, qword [rsp + 0x148]
mov r8d, 0x7d02
call fcn.140057400
mov r11, qword [rsp + 0xa8]
jmp 0x1400403be
mov eax, 0x8000
add eax, dword [r12 + 0x368]
sar eax, 0x10
mov ecx, eax
neg ecx
cmp dword [r12 + 0x364], 0
cmovne ecx, eax
add ecx, r14d
mov eax, ecx
neg eax
cmovs eax, ecx
mov dword [rsp + 0xdc], eax
mov edx, dword [rsp + 0xa4]
cmp edx, 0x7d02
je 0x1400403be
movzx eax, byte [r9 + 3]
xor ecx, ecx
cmp edx, r14d
setg cl
inc ecx
test eax, ecx
cmovne r14d, edx
mov eax, dword [rsi - 0x2c]
test rax, rax
je 0x140040454
cmp eax, 0x41
je 0x140040454
test ebx, ebx
jne 0x140040454
cmp byte [rsi - 0x10], 0
jne 0x140040454
mov ecx, dword [rsi - 0x1c]
add ecx, dword [rsi + 0x24]
imul edx, ecx, 0xffffffed
cmp ecx, 0x66
mov r8d, 0xfffff880
cmovl r8d, edx
cmp ecx, 0xffffff9b
mov ecx, 0x780
cmovge ecx, r8d
mov rdx, qword [rsp + 0x108]
xor rdx, 1
shl rdx, 0xd
add rdx, rdi
and eax, 0xfff
movsx r8d, word [rdx + rax*2 + 0x26a4]
mov r9d, ecx
neg r9d
cmovs r9d, ecx
imul r9d, r8d
movsxd r9, r9d
imul r9, r9, 0xffffffffb70287c9
mov r10, r9
shr r10, 0x3f
shr r9, 0x2b
add r9d, r10d
add ecx, r8d
add ecx, r9d
mov word [rdx + rax*2 + 0x26a4], cx
mov eax, dword [rsi - 0x5c]
cmp eax, 0x7d02
mov r9, qword [rsp + 0x90]
jne 0x140040479
mov eax, dword [rsi - 0xdc]
mov r10d, 0x9c
cmp eax, 0x7d02
je 0x140040480
mov r10d, dword [rsi + 0x24]
sub r10d, eax
mov eax, r13d
imul eax, r13d
shl eax, 8
mov ecx, r15d
sub ecx, eax
add ecx, 0xfffffe56
cmp r14d, ecx
jge 0x1400404d5
lea r8d, [r15 - 1]
mov dword [rsp + 0x20], 0
mov rcx, r12
mov rdx, rsi
mov r9d, r15d
mov ebx, r10d
call fcn.14003f480
mov r10d, ebx
mov r11, qword [rsp + 0xa8]
mov r9, qword [rsp + 0x90]
mov ebx, eax
cmp eax, r15d
jl 0x14003fd6e
cmp r13d, 8
ja 0x140040538
cmp byte [rsi + 0x31], 0
jne 0x140040538
xor eax, eax
test r10d, r10d
setg al
movsxd rcx, dword [rsi - 0x18]
imul rdx, rcx, 0x15f15f15
shr rdx, 0x20
sub edx, ecx
mov ecx, edx
shr ecx, 0x1f
sar edx, 8
add edx, ecx
mov ecx, r13d
sub ecx, eax
imul eax, ecx, 0xffffff66
add eax, r14d
add eax, edx
cmp eax, dword [rsp + 0x98]
jl 0x140040538
cmp r14d, dword [rsp + 0x98]
jl 0x140040538
cmp r14d, 0x6228
jge 0x140040538
mov ebx, r14d
jmp 0x14003fd6e
cmp dword [rsi - 0x2c], 0x41
je 0x14004070f
cmp dword [rsi - 0x18], 0x4942
jg 0x14004070f
mov ecx, r14d
sub ecx, dword [rsp + 0x98]
jl 0x14004070f
mov edx, dword [rsi + 0x24]
cmp r14d, edx
jl 0x14004070f
movsxd rax, dword [rsp + 0xdc]
imul r8, rax, 0x51eb851f
mov r9, r8
shr r9, 0x3f
sar r8, 0x23
add r8d, r9d
movsxd r9, r10d
imul r9, r9, 0xffffffffb13b13b1
mov dword [rsp + 0x84], r10d
mov r10, r9
shr r10, 0x3f
sar r9, 0x22
add r9d, r10d
lea r10d, [r13*4]
lea r10d, [r10 + r10*4]
mov r11, qword [rsp + 0x98]
sub r11d, r10d
mov r10d, dword [rsp + 0x84]
add r11d, r9d
mov r9, qword [rsp + 0x90]
add r8d, r11d
add r8d, 0xfd
mov r11, qword [rsp + 0xa8]
cmp edx, r8d
setl dl
or dl, byte [rsp + 0xb4]
jne 0x14004070f
mov rdx, qword [r12 + 0x358]
mov r8, qword [rsp + 0x108]
cmp dword [rdx + r8*4 + 0x10], 0
je 0x14004070f
mov edx, dword [rsi + 0x10]
cmp edx, dword [rdi + 0x154]
jl 0x14004070f
movsxd rcx, ecx
imul rcx, rcx, 0x2fa0be83
mov rdx, rcx
shr rdx, 0x3f
sar rcx, 0x25
add ecx, edx
cmp ecx, 6
mov edx, 6
cmovl edx, ecx
mov dword [rsp + 0xb8], edx
mov ecx, r13d
mov r14d, 0xaaaaaaab
imul r14, rcx
shr r14, 0x21
xor ebx, ebx
cmp eax, 0x33a
setge bl
mov dword [rsi + 0x14], 0x41
lea rax, [rdi + 0xa6a4]
mov qword [rsi + 8], rax
lea rdx, [rsp + 0xbc0]
mov rcx, r12
call fcn.1400338b0
movzx eax, byte [rbp + 0x1d68]
xor al, 1
add r14d, dword [rsp + 0xb8]
mov ecx, r13d
sub ecx, r14d
add ecx, ebx
add ecx, 0xfffffffc
mov r14, qword [rsp + 0x98]
mov r8d, r14d
neg r8d
mov r9d, 1
sub r9d, r14d
mov byte [rsp + 0x28], al
mov qword [rsp + 0xf8], rcx
mov dword [rsp + 0x20], ecx
mov rcx, r12
mov rdx, qword [rsp + 0x120]
call fcn.14003fc30
mov dword [rsp + 0xb8], eax
mov ebx, eax
neg ebx
mov rcx, r12
call fcn.140033a60
mov r10d, dword [rsp + 0x84]
mov r11, qword [rsp + 0xa8]
mov r9, qword [rsp + 0x90]
cmp r14d, ebx
jle 0x14004193a
mov rcx, qword [rsp + 0x98]
lea eax, [rcx - 0x36]
test r10d, r10d
cmovle eax, ecx
mov dword [rsp + 0xb8], eax
mov eax, ecx
neg eax
cmovs eax, ecx
cmp r13d, 5
jb 0x140040943
cmp eax, 0x7b13
ja 0x140040943
add dword [rsp + 0xb8], 0xba
mov rax, qword [rsp + 0xe8]
cmp byte [rax], 0
je 0x140040789
mov eax, dword [rsp + 0xb8]
cmp dword [rsp + 0xa4], eax
jge 0x140040789
cmp dword [rsp + 0xa4], 0x7d02
je 0x140040789
movzx eax, byte [r9 + 2]
add eax, 0xfffffffc
cmp eax, r13d
jge 0x140040943
mov dword [rsp + 0x84], r10d
mov r9d, dword [rsp + 0xb8]
sub r9d, dword [rsi + 0x24]
mov rax, qword [rsp + 0x158]
mov qword [rsp + 0x20], rax
lea rbx, [rsp + 0x358]
mov rcx, rbx
mov rdx, r12
mov r8d, r11d
call fcn.1400271f0
mov rcx, rbx
xor edx, edx
call fcn.140027290
test eax, eax
je 0x140040923
mov r14d, eax
mov eax, dword [rsp + 0xb8]
mov ecx, eax
neg ecx
mov dword [rsp + 0xe8], ecx
mov ecx, 1
sub ecx, eax
mov dword [rsp + 0xf8], ecx
movzx eax, byte [rbp + 0x1d68]
xor al, 1
mov byte [rsp + 0x11c], al
lea eax, [r13 - 4]
mov dword [rsp + 0xd4], eax
jmp 0x140040844
mov rcx, r12
mov edx, r14d
call fcn.140033440
cmp ebx, dword [rsp + 0xb8]
jge 0x14004186f
lea rcx, [rsp + 0x358]
xor edx, edx
call fcn.140027290
mov r14d, eax
test eax, eax
je 0x140040923
cmp r14d, dword [rsp + 0x134]
je 0x14004082a
mov rcx, r12
mov edx, r14d
call fcn.140032000
test al, al
je 0x14004082a
mov dword [rsi + 0x14], r14d
movzx eax, byte [rsi + 0x30]
shl rax, 0x16
add rax, rdi
mov ecx, r14d
shr ecx, 6
and ecx, 0x3f
movsxd rcx, dword [r12 + rcx*4]
shl rcx, 0x11
add rcx, rax
mov eax, r14d
and eax, 0x3f
shl rax, 0xb
add rax, rcx
add rax, 0x20a6a4
mov qword [rsi + 8], rax
mov rcx, r12
mov edx, r14d
lea r8, [rsp + 0xbc0]
call fcn.14003e1f0
mov dword [rsp + 0x20], 0
mov rcx, r12
mov rdx, qword [rsp + 0x120]
mov r8d, dword [rsp + 0xe8]
mov r9d, dword [rsp + 0xf8]
call fcn.14003f480
mov ebx, eax
neg ebx
cmp dword [rsp + 0xb8], ebx
jg 0x140040812
movzx eax, byte [rsp + 0x11c]
mov byte [rsp + 0x28], al
mov eax, dword [rsp + 0xd4]
mov dword [rsp + 0x20], eax
mov rcx, r12
mov rdx, qword [rsp + 0x120]
mov r8d, dword [rsp + 0xe8]
mov r9d, dword [rsp + 0xf8]
call fcn.14003fc30
mov ebx, eax
neg ebx
jmp 0x140040812
mov rcx, r12
call fcn.140027e10
mov r9, qword [rsp + 0x90]
mov r11, qword [rsp + 0xa8]
mov r10d, dword [rsp + 0x84]
test r10d, r10d
setle al
mov dword [rsp + 0xe8], eax
lea ecx, [r13 - 2]
cmp byte [rsp + 0x83], 0
cmove ecx, r13d
cmp byte [rbp + 0x1d68], 0
cmove ecx, r13d
cmp r13d, 7
cmovl ecx, r13d
cmp byte [rsi + 0x30], 0
sete al
mov r13d, ecx
mov ecx, dword [rsp + 0xc0]
mov r10d, ecx
xor r10b, 1
test al, al
jne 0x1400409ec
cmp r13d, 2
jl 0x1400409ec
test r10b, r10b
jne 0x1400409ec
test byte [r9 + 3], 2
je 0x1400409ec
mov rdx, qword [rsp + 0x98]
lea ebx, [rdx + 0x187]
mov r8d, dword [rsp + 0xa4]
mov eax, r8d
neg eax
cmovs eax, r8d
mov ecx, edx
neg ecx
cmovs ecx, edx
cmp r8d, ebx
jl 0x1400409ec
movzx edx, byte [r9 + 2]
add edx, 0xfffffffc
cmp edx, r13d
jl 0x1400409ec
cmp eax, 0x2710
ja 0x1400409ec
cmp ecx, 0x2711
jb 0x14003fd6e
mov byte [rsp + 0xf8], r10b
mov rax, qword [rsi - 0x38]
mov qword [rsp + 0x190], rax
mov rax, qword [rsi - 0x78]
mov qword [rsp + 0x198], rax
mov qword [rsp + 0x1a0], 0
mov rax, qword [rsi - 0xf8]
mov qword [rsp + 0x1a8], rax
mov qword [rsp + 0x1b0], 0
mov rax, qword [rsi - 0x178]
mov qword [rsp + 0x1b8], rax
xor eax, eax
mov ecx, dword [rsp + 0xd8]
cmp ecx, 0x40
je 0x140040a64
mov eax, ecx
movsxd rcx, dword [r12 + rax*4]
shl rcx, 8
add rcx, rdi
mov eax, dword [rcx + rax*4 + 0x16a4]
lea rcx, [rsi + 0x1c]
mov qword [rsp + 0x100], rdi
add rdi, 0x26a4
mov qword [rsp + 0x40], rcx
mov dword [rsp + 0x38], eax
lea rax, [rsp + 0x190]
mov qword [rsp + 0x30], rax
mov rax, qword [rsp + 0x158]
mov qword [rsp + 0x28], rax
mov qword [rsp + 0x20], rdi
lea rbx, [rsp + 0x358]
mov rcx, rbx
mov rdx, r12
mov r8d, r11d
mov r9d, r13d
call fcn.1400270e0
mov rcx, rbx
xor edx, edx
call fcn.140027290
test eax, eax
je 0x1400417ac
mov r14d, eax
imul eax, dword [rsp + 0xe0], 0x3a9
mov dword [rsp + 0x11c], eax
mov rcx, qword [rsp + 0x108]
mov rax, rcx
shl rax, 0xd
add rdi, rax
mov qword [rsp + 0x178], rdi
mov eax, ecx
xor eax, 1
cdqe
mov qword [rsp + 0x170], rax
mov eax, dword [rsp + 0xa4]
mov ecx, eax
neg ecx
cmovs ecx, eax
mov dword [rsp + 0x168], ecx
movzx eax, byte [rsp + 0xc0]
mov dword [rsp + 0x16c], eax
movzx eax, byte [rbp + 0x1d68]
and byte [rsp + 0x83], al
xor al, 1
mov byte [rsp + 0x8b], al
mov eax, r15d
neg eax
mov dword [rsp + 0x118], eax
mov eax, r15d
not eax
mov dword [rsp + 0x114], eax
lea eax, [r15 + 0x3a]
mov qword [rsp + 0x1c8], rax
lea eax, [r15 + 0x24c]
mov dword [rsp + 0x164], eax
mov eax, 0xffff82ff
mov qword [rsp + 0xe0], rax
xor ecx, ecx
xor ebx, ebx
xor eax, eax
mov qword [rsp + 0x140], rax
xor eax, eax
mov qword [rsp + 0xb8], rax
mov dword [rsp + 0xd4], 0
mov dword [rsp + 0x110], 0
mov rdi, qword [rsp + 0x100]
mov qword [rsp + 0xc0], rcx
jmp 0x140040bed
mov edx, ebx
and dl, 1
lea rcx, [rsp + 0x358]
call fcn.140027290
mov r14d, eax
test eax, eax
je 0x14004170e
cmp r14d, dword [rsp + 0x134]
je 0x140040bd0
mov rcx, r12
mov edx, r14d
call fcn.140032000
test al, al
je 0x140040bd0
mov rax, qword [rsp + 0xc0]
inc rax
mov qword [rsp + 0x180], rax
mov dword [rsi + 0x2c], eax
mov eax, r14d
and eax, 0x3f
mov qword [rsp + 0x128], rax
cmp dword [r12 + rax*4], 0
setne al
mov edx, r14d
and edx, 0xc000
cmp edx, 0xc000
setne cl
mov r8b, 1
cmp edx, 0x8000
je 0x140040c61
and cl, al
jne 0x140040c61
mov eax, r14d
not eax
test eax, 0x3000
sete r8b
mov byte [rsp + 0x84], r8b
mov eax, r14d
shr eax, 6
and eax, 0x3f
movsxd rax, dword [r12 + rax*4]
mov qword [rsp + 0x138], rax
mov rcx, r12
mov edx, r14d
call fcn.140032710
mov r11d, eax
lea r10d, [r13 - 1]
movsxd rax, r13d
lea rdx, [0x1401c7bf0]
mov r9, qword [rsp + 0x180]
mov ecx, dword [rdx + r9*4]
imul ecx, dword [rdx + rax*4]
mov eax, dword [rsp + 0x11c]
cdq
idiv dword [rdi + 0x16a0]
mov edx, ecx
sub edx, eax
neg eax
add eax, ecx
add eax, 0x5a9
add edx, 0x9a8
test eax, eax
cmovns edx, eax
sar edx, 0xa
cmp ecx, 0x3ae
setge al
and al, byte [rsp + 0xe8]
movzx ebx, al
add ebx, edx
mov rax, qword [r12 + 0x358]
mov rcx, qword [rsp + 0x108]
cmp dword [rax + rcx*4 + 0x10], 0
mov byte [rsp + 0x8a], r11b
mov qword [rsp + 0x1c0], rbx
je 0x140040e47
cmp dword [rsp + 0xe0], 0xffff84ed
mov rdx, qword [rsp + 0x90]
mov r8, qword [rsp + 0xa8]
jl 0x140040e57
mov eax, r13d
imul eax, r13d
add eax, 3
mov ecx, dword [rsp + 0xe8]
shrx eax, eax, ecx
cmp r9, rax
setae al
mov qword [rsp + 0xb8], rax
mov eax, r10d
sub eax, ebx
mov ecx, eax
sar ecx, 0x1f
andn eax, ecx, eax
movzx ecx, byte [rsp + 0x84]
or cl, r11b
cmp cl, 1
jne 0x1400411fb
cmp eax, 6
setae cl
or cl, r11b
jne 0x140040df2
cmp byte [rsi + 0x30], 0
jne 0x140040df2
mov rcx, qword [rsp + 0x138]
shl rcx, 0xa
mov r8, qword [rsp + 0x128]
mov rdx, r8
shl rdx, 4
add rdx, qword [rsp + 0x158]
add rdx, rcx
movsxd rcx, dword [r12 + r8*4]
imul eax, eax, 0xe6
lea r8, [0x14008f480]
add eax, dword [r8 + rcx*4 + 0x40]
and ecx, 7
movsx ecx, word [rdx + rcx*2]
imul ecx, ecx, 0x4925
mov edx, ecx
shr edx, 0x1f
sar ecx, 0x11
add ecx, edx
add eax, dword [rsi + 0x24]
add eax, ecx
add eax, 0xb6
cmp eax, r15d
jl 0x1400411c9
mov qword [rsp + 0xf0], r10
imul r9d, r13d, 0xffffff32
mov rcx, r12
mov edx, r14d
lea r8, [rsp + 0x150]
call fcn.140033b30
test al, al
je 0x140041458
mov rdx, qword [rsp + 0x90]
mov r8, qword [rsp + 0xa8]
mov r10, qword [rsp + 0xf0]
movzx r11d, byte [rsp + 0x8a]
mov rdi, qword [rsp + 0x100]
jmp 0x140040e57
mov rdx, qword [rsp + 0x90]
mov r8, qword [rsp + 0xa8]
mov eax, dword [rdi + 0x1698]
add eax, eax
xor r9d, r9d
cmp dword [rsi + 0x10], eax
jge 0x140040ed2
xor eax, eax
cmp dword [rdi + 0x169c], 0x16
setl al
add eax, 3
cmp r13d, eax
setl al
cmp r14d, r8d
setne cl
or cl, byte [rsp + 0xb4]
or cl, al
jne 0x140040eb0
cmp dword [rsp + 0x168], 0x270f
ja 0x140040eb0
test byte [rdx + 3], 2
je 0x140040eb0
movzx eax, byte [rdx + 2]
add eax, 0xfffffffc
cmp eax, r13d
jge 0x14004158a
cmp r13d, 0xb
setge al
and al, r11b
cmp al, 1
jne 0x140040ed2
mov eax, dword [rsi + 0x24]
mov ecx, eax
neg ecx
cmovs ecx, eax
xor r9d, r9d
cmp ecx, 0x59
setae r9b
mov eax, r13d
mov qword [rsp + 0xc8], rax
add r10d, r9d
mov qword [rsp + 0xf0], r10
xor eax, eax
mov dword [rsp + 0x160], r9d
cmp r9d, 2
sete al
add eax, dword [rsi - 0xc]
mov dword [rsi + 0x34], eax
mov rcx, r12
mov edx, r14d
call fcn.140033a80
mov rdx, qword [0x1401e1af8]
mov r8d, eax
shr rax, 0x20
mov r9d, edx
shr rdx, 0x20
mov rcx, r9
imul rcx, r8
shr rcx, 0x20
imul r9, rax
add r9, rcx
imul r8, rdx
mov ecx, r9d
add rcx, r8
imul rdx, rax
shr r9, 0x20
add r9, rdx
shr rcx, 0x20
add rcx, r9
shl rcx, 5
add rcx, qword [0x1401e1b00]
call fcn.140004f00
mov dword [rsi + 0x14], r14d
movzx eax, byte [rsi + 0x30]
movzx ecx, byte [rsp + 0x84]
shl rax, 0x16
shl rcx, 0x15
add rcx, rdi
mov rbx, qword [rsp + 0x138]
mov rdx, rbx
shl rdx, 0x11
add rdx, rcx
add rdx, rax
mov rdi, qword [rsp + 0x128]
mov rax, rdi
shl rax, 0xb
add rax, rdx
add rax, 0xa6a4
mov qword [rsi + 8], rax
mov rcx, r12
mov edx, r14d
lea r8, [rsp + 0xbc0]
movzx r9d, byte [rsp + 0x8a]
call fcn.1400329a0
movzx ecx, byte [rsi + 0x31]
mov rdx, qword [rsp + 0x1c0]
lea eax, [rdx - 2]
test cl, cl
cmove eax, edx
mov r8d, dword [rsi - 0x14]
xor edx, edx
cmp r8d, 8
setge dl
sub eax, edx
lea edx, [rax + 2]
cmp byte [rbp + 0x1d68], 0
cmove edx, eax
mov rax, qword [rsp + 0x140]
and al, 1
neg al
xor r10d, r10d
cmp dword [rsi + 0x78], 4
setge r10b
mov r9d, r14d
and r9d, 0xfff
mov r11, qword [rsp + 0x178]
movsx r9d, word [r11 + r9*2]
mov r11, rbx
shl r11, 7
mov rbx, qword [rsp + 0x190]
add rbx, r11
movsx ebx, word [rbx + rdi*2]
lea ebx, [rbx + r9*2]
mov r9, qword [rsp + 0x198]
add r9, r11
movsx r9d, word [r9 + rdi*2]
add ebx, r9d
movsx r9d, al
add r11, qword [rsp + 0x1a8]
movsx eax, word [r11 + rdi*2]
add eax, ebx
add eax, 0xfffff00e
mov rdi, qword [rsp + 0xc8]
lea r11d, [rdi - 7]
cmp r11d, 0xc
mov r11d, 0x2b47
mov ebx, 0x3d59
cmovb r11d, ebx
add r9d, dword [rsp + 0x16c]
add r9d, r10d
mov dword [rsi + 0x28], eax
add r9d, edx
cdq
idiv r11d
sub r9d, eax
cmp edi, 2
jl 0x1400410db
cmp qword [rsp + 0xc0], 0
je 0x1400410db
cmp r8d, 2
setge al
test cl, cl
je 0x140041315
movzx ecx, byte [rsp + 0x84]
xor cl, 1
jne 0x140041315
and al, byte [rbp + 0x1d68]
jne 0x140041315
lea eax, [r9 + 2]
cmp byte [rsp + 0x83], 0
cmove eax, r9d
xor ecx, ecx
cmp eax, 5
setge cl
mov rdx, qword [rsp + 0xf0]
sub edx, ecx
movzx eax, byte [rsp + 0x8b]
mov byte [rsp + 0x28], al
mov dword [rsp + 0x20], edx
mov rcx, r12
mov rdx, qword [rsp + 0x120]
mov r8d, dword [rsp + 0x114]
mov r9d, dword [rsp + 0x118]
call fcn.14003fc30
mov ebx, eax
neg ebx
mov rdi, qword [rsp + 0x100]
mov rcx, r12
mov edx, r14d
call fcn.140033440
test byte [0x1401e1ab0], 1
jne 0x140041933
cmp ebx, dword [rsp + 0xe0]
movzx edx, byte [rsp + 0x84]
mov r13, qword [rsp + 0xc8]
jle 0x14004117b
cmp ebx, r15d
jg 0x1400419f8
mov qword [rsp + 0xe0], rbx
mov ecx, dword [rsp + 0xd4]
cmp ecx, 0x20
setl al
and al, dl
cmp al, 1
jne 0x1400411a4
movsxd rax, ecx
inc ecx
mov dword [rsp + 0xd4], ecx
mov dword [rsp + rax*4 + 0x1d0], r14d
jmp 0x1400411c9
mov ecx, dword [rsp + 0x110]
cmp ecx, 0x40
setge al
or dl, al
jne 0x1400411c9
movsxd rax, ecx
inc ecx
mov dword [rsp + 0x110], ecx
mov dword [rsp + rax*4 + 0x250], r14d
mov rbx, qword [rsp + 0xb8]
and bl, 1
lea rcx, [rsp + 0x358]
mov edx, ebx
call fcn.140027290
mov r14d, eax
test eax, eax
mov rcx, qword [rsp + 0x180]
jne 0x140040bb8
jmp 0x14004171c
mov rcx, qword [rsp + 0x138]
shl rcx, 7
mov rdx, qword [rsp + 0x190]
add rdx, rcx
mov r9, qword [rsp + 0x128]
movsx edx, word [rdx + r9*2]
mov r8, qword [rsp + 0x198]
add r8, rcx
movsx r8d, word [r8 + r9*2]
add rcx, qword [rsp + 0x1a8]
add r8d, edx
movsx ecx, word [rcx + r9*2]
add ecx, r8d
cmp eax, 4
ja 0x140041256
imul edx, r10d, 0xffffeecb
cmp ecx, edx
jl 0x1400411c9
mov edx, r14d
and edx, 0xfff
mov r8, qword [rsp + 0x178]
movsx edx, word [r8 + rdx*2]
lea ecx, [rcx + rdx*2]
movsxd rcx, ecx
imul rdx, rcx, 0xffffffff9013228b
shr rdx, 0x20
add ecx, edx
mov edx, ecx
shr edx, 0x1f
sar ecx, 0xc
add ecx, edx
add ecx, eax
cmp ecx, 0xffffffff
mov eax, 0xfffffffe
cmovge eax, ecx
cmp byte [rsi + 0x30], 0
jne 0x1400412b8
cmp eax, 0xc
jg 0x1400412b8
imul eax, eax, 0x8a
mov edx, dword [rsi + 0x24]
add eax, edx
add eax, 0x67
cmp eax, r15d
jle 0x1400411c9
mov eax, ecx
sar eax, 0x1f
andn eax, eax, ecx
lea ecx, [rax*8]
lea ecx, [rcx + rcx*2]
mov r8d, 0xfffffff0
sub r8d, ecx
imul r8d, eax
mov rcx, r12
mov edx, r14d
mov rdi, r10
mov ebx, r11d
call fcn.140033e80
mov r11d, ebx
mov r10, rdi
mov rdi, qword [rsp + 0x100]
test al, al
mov rdx, qword [rsp + 0x90]
mov r8, qword [rsp + 0xa8]
jne 0x140040e57
jmp 0x1400411c9
mov ecx, dword [rsp + 0x160]
add ecx, r13d
mov rdi, qword [rsp + 0xf0]
mov eax, edi
sub eax, r9d
cmp eax, 2
mov r13d, 1
cmovge r13d, eax
cmp ecx, eax
cmovl r13d, ecx
mov dword [rsp + 0x20], r13d
mov byte [rsp + 0x28], 1
mov rcx, r12
mov rdx, qword [rsp + 0x120]
mov r8d, dword [rsp + 0x114]
mov r9d, dword [rsp + 0x118]
call fcn.14003fc30
mov ebx, eax
neg ebx
cmp r15d, ebx
mov r10, qword [rsp + 0x100]
jge 0x140041582
mov eax, edi
sub eax, r13d
jle 0x140041582
lea eax, [rax + rax*2]
mov rcx, qword [rsp + 0x1c8]
lea eax, [rcx + rax*4]
xor r11d, r11d
cmp eax, ebx
setl r11b
cmp dword [rsp + 0x164], ebx
setl al
mov ecx, dword [rsi + 0x34]
cmp ecx, 6
setl dl
and dl, al
mov rax, qword [rsp + 0xe0]
add eax, edi
xor r8d, r8d
cmp eax, ebx
setg r8b
movzx eax, dl
add ecx, eax
mov dword [rsi + 0x34], ecx
add r11d, edi
sub r11d, r8d
add r11d, eax
cmp r11d, r13d
mov rdi, r10
jle 0x14004141c
movzx eax, byte [rsp + 0x8b]
mov byte [rsp + 0x28], al
mov dword [rsp + 0x20], r11d
mov rcx, r12
mov rdx, qword [rsp + 0x120]
mov r8d, dword [rsp + 0x114]
mov r9d, dword [rsp + 0x118]
mov ebx, r11d
call fcn.14003fc30
mov r11d, ebx
mov ebx, eax
neg ebx
cmp ebx, r15d
jle 0x140041661
xor r9d, r9d
cmp ebx, dword [rsp + 0x98]
jl 0x14004167e
imul r9d, r11d, 0x155
cmp r9d, 0x884
mov eax, 0x884
cmovge r9d, eax
add r9d, 0xfffffe2a
jmp 0x14004167e
movzx eax, byte [rsp + 0x84]
mov ecx, 2
sub ecx, eax
cmp r13d, ecx
jl 0x140041575
mov r8, qword [r12 + 0x128]
or r8, qword [r12 + 0x120]
or r8, qword [r12 + 0x130]
mov rax, qword [rsp + 0x170]
and r8, qword [r12 + rax*8 + 0x140]
mov rax, qword [rsp + 0x150]
mov rcx, rax
mov rdx, qword [rsp + 0x128]
bts rcx, rdx
mov qword [rsp + 0x150], rcx
and r8, rax
je 0x140041575
mov rax, r8
mov qword [rsp + 0xc8], rax
tzcnt rdx, rax
mov r8, qword [rsp + 0x150]
mov rcx, r12
mov rdi, rdx
call fcn.140031f40
mov rbx, rax
mov rax, qword [rsp + 0x108]
and rbx, qword [r12 + rax*8 + 0x140]
and rbx, qword [rsp + 0x150]
je 0x140041552
mov rax, qword [r12 + 0x130]
mov rcx, qword [rsp + 0x170]
and rax, qword [r12 + rcx*8 + 0x140]
tzcnt rax, rax
cmp eax, edi
je 0x140040e1c
mov r8, qword [r12 + 0x100]
mov rcx, r12
mov edx, edi
call fcn.140031f40
mov rcx, qword [rsp + 0x108]
test qword [r12 + rcx*8 + 0x140], rax
mov eax, 0
cmovne rbx, rax
jmp 0x140041554
xor ebx, ebx
mov rax, qword [rsp + 0xc8]
blsr rax, rax
je 0x14004156c
test rbx, rbx
je 0x1400414c3
test rbx, rbx
jne 0x140040e1c
mov rdi, qword [rsp + 0x100]
jmp 0x1400411c9
mov rdi, r10
jmp 0x140041139
movzx eax, byte [rsi + 0x31]
lea eax, [rax*2 + 3]
imul eax, r13d
mov ecx, eax
shr ecx, 0x1f
add ecx, eax
sar ecx, 1
mov eax, dword [rsp + 0xa4]
mov ebx, eax
sub ebx, ecx
mov eax, r10d
shr eax, 0x1f
mov qword [rsp + 0xf0], r10
add eax, r10d
sar eax, 1
mov dword [rsi + 0x18], r8d
lea r8d, [rbx - 1]
movzx ecx, byte [rbp + 0x1d68]
mov byte [rsp + 0x28], cl
mov dword [rsp + 0x20], eax
mov rcx, r12
mov rdx, rsi
mov r9d, ebx
call fcn.14003fc30
mov dword [rsi + 0x18], 0
cmp eax, ebx
jge 0x14004169b
add ebx, 0xffffffe7
mov r9d, 1
cmp eax, ebx
jge 0x1400416e6
cmp dword [rsi + 0x34], 0xa
movzx eax, byte [rsp + 0xf8]
mov qword [rsp + 0x140], rax
mov eax, r13d
mov qword [rsp + 0xc8], rax
mov r10, qword [rsp + 0xf0]
jg 0x140040edd
xor eax, eax
cmp r13d, 0xd
setl al
add eax, r13d
mov qword [rsp + 0xc8], rax
mov r9d, 2
movzx eax, byte [rsp + 0xf8]
mov qword [rsp + 0x140], rax
jmp 0x140040edd
imul eax, r11d, 0x155
cmp eax, 0x884
mov ecx, 0x884
cmovge eax, ecx
mov r9d, 0x1d6
sub r9d, eax
mov rcx, rsi
mov rdx, qword [rsp + 0x138]
mov r8, qword [rsp + 0x128]
call fcn.140041b30
jmp 0x140041139
mov rcx, qword [rsp + 0x98]
cmp ebx, ecx
jge 0x14003fd6e
mov r9d, 0xfffffffd
cmp dword [rsp + 0xa4], ecx
mov r10, qword [rsp + 0xf0]
jge 0x140040ed2
mov edx, dword [rsp + 0xa4]
cmp edx, r15d
setle cl
cmp edx, eax
setle al
or al, cl
movzx r9d, al
neg r9d
jmp 0x140040ed2
movzx eax, byte [rsp + 0xf8]
mov qword [rsp + 0x140], rax
mov eax, r13d
mov qword [rsp + 0xc8], rax
mov r10, qword [rsp + 0xf0]
jmp 0x140040edd
cmp dword [rsp + 0xc0], 0
je 0x1400417ac
xor r14d, r14d
cmp dword [rsp + 0x8c], 0
jne 0x1400417d2
mov r8d, dword [rsp + 0xd8]
cmp r8d, 0x40
je 0x1400417d2
xor eax, eax
cmp r13d, 6
setge al
movzx ecx, byte [rbp + 0x1d68]
add ecx, eax
imul eax, r13d, 0xffffff9f
add eax, r15d
xor edx, edx
mov rbx, qword [rsp + 0xe0]
cmp ebx, eax
setl dl
add edx, ecx
xor eax, eax
cmp dword [rsi - 0x14], 0xb
setge al
add eax, edx
imul ecx, r13d, 0x155
cmp ecx, 0x884
mov r9d, 0x884
cmovl r9d, ecx
add r9d, 0xfffffe2a
imul r9d, eax
mov eax, r8d
mov edx, dword [r12 + rax*4]
mov rcx, qword [rsp + 0x188]
call fcn.140041b30
jmp 0x1400417da
xor r14d, r14d
mov edx, dword [rsp + 0xb4]
test dl, dl
je 0x1400417bf
mov ebx, r15d
jmp 0x1400417ea
xor r14d, r14d
cmp byte [rsi + 0x30], 0
je 0x1400417e3
mov ebx, 0xffff8300
add ebx, dword [rsi + 0x10]
jmp 0x1400417e5
mov rbx, qword [rsp + 0xe0]
mov edx, dword [rsp + 0xb4]
jmp 0x1400417e5
xor ebx, ebx
cmp ebx, r15d
jg 0x140041805
mov al, 1
cmp byte [rsi + 0x31], 0
jne 0x140041802
cmp byte [rsi - 0xf], 0
setne cl
cmp r13d, 4
setge al
and al, cl
mov byte [rsi + 0x31], al
test dl, dl
jne 0x14003fd6e
mov eax, dword [rsi + 0x10]
mov ecx, dword [rsi + 0x24]
xor edx, edx
cmp ebx, dword [rsp + 0x98]
setge dl
inc edx
movzx r9d, byte [rsi + 0x31]
xor r8d, r8d
cmp ebx, 0xffff84ed
cmovl r8d, eax
neg r8d
cmp ebx, 0x7b14
cmovge r8d, eax
add r8d, ebx
mov dword [rsp + 0x38], ecx
mov dword [rsp + 0x30], r14d
mov dword [rsp + 0x28], r13d
mov dword [rsp + 0x20], edx
mov rcx, qword [rsp + 0x90]
mov rdx, qword [rsp + 0x148]
call fcn.140057400
jmp 0x14003fd6e
mov eax, dword [rsi + 0x10]
mov ecx, dword [rsi + 0x24]
add r13d, 0xfffffffd
movzx r9d, byte [rsi + 0x31]
xor r8d, r8d
cmp ebx, 0xffff84ed
cmovl r8d, eax
neg r8d
cmp ebx, 0x7b14
cmovge r8d, eax
add r8d, ebx
mov dword [rsp + 0x38], ecx
mov dword [rsp + 0x30], r14d
mov dword [rsp + 0x28], r13d
mov dword [rsp + 0x20], 2
jmp 0x140041855
mov qword [rsp + 0xa8], r11
lea rdx, [rsp + 0xbc0]
mov rcx, r12
call fcn.140049e00
mov r14d, eax
mov rax, qword [0x1401e1ac0]
cmp rdi, qword [rax]
jne 0x1400418e4
mov dword [rdi + 0x80a6e8], 0
cmp dword [rsp + 0xbc0], 0
mov r11, qword [rsp + 0xa8]
je 0x140041a8c
lock inc qword [rdi + 0x140]
movzx eax, byte [0x1401c7bdd]
mov ecx, eax
neg ecx
cmp r14d, ecx
jge 0x140041a66
mov r14d, 0xffff83f7
add r14d, dword [rsi + 0x10]
mov eax, 1
cmp r14d, r15d
jg 0x140041a8c
jmp 0x140041aa9
xor ebx, ebx
jmp 0x14003fd6e
cmp dword [rsp + 0xb8], 0xffff84ed
cmovl ebx, dword [rsp + 0x98]
cmp dword [rdi + 0x154], 0
jne 0x14003fd6e
mov rdx, rdi
mov rcx, qword [rsp + 0x98]
mov eax, ecx
neg eax
cmovs eax, ecx
cmp r13d, 0xd
ja 0x14004197d
cmp eax, 0x2710
jb 0x14003fd6e
mov r9, qword [rsp + 0xf8]
lea eax, [r9 + r9*2]
lea ecx, [r9 + r9*2]
add ecx, 3
test eax, eax
cmovns ecx, eax
sar ecx, 2
add ecx, dword [rsi + 0x10]
mov rdi, rdx
mov dword [rdx + 0x154], ecx
mov r14, qword [rsp + 0x98]
lea r8d, [r14 - 1]
mov dword [rsp + 0x20], r9d
mov byte [rsp + 0x28], 0
mov rcx, r12
mov rdx, rsi
mov r9d, r14d
call fcn.14003fc30
mov dword [rdi + 0x154], 0
cmp eax, r14d
mov r9, qword [rsp + 0x90]
mov r11, qword [rsp + 0xa8]
mov r10d, dword [rsp + 0x84]
jge 0x14003fd6e
jmp 0x14004070f
inc dword [rsi + 0x38]
test r14d, r14d
je 0x140041b18
mov dword [rsp + 0x50], r13d
mov eax, dword [rsp + 0xd4]
mov dword [rsp + 0x48], eax
lea rax, [rsp + 0x1d0]
mov qword [rsp + 0x40], rax
mov eax, dword [rsp + 0x110]
mov dword [rsp + 0x38], eax
lea rax, [rsp + 0x250]
mov qword [rsp + 0x30], rax
mov eax, dword [rsp + 0xd8]
mov dword [rsp + 0x28], eax
mov rax, qword [rsp + 0x98]
mov dword [rsp + 0x20], eax
mov rcx, r12
mov rdx, rsi
mov r8d, r14d
mov r9d, ebx
call fcn.1400435b0
jmp 0x1400417da
cmp r14d, eax
jle 0x140041a9d
mov r14d, 0x7c09
sub r14d, dword [rsi + 0x10]
mov eax, 2
cmp r14d, dword [rsp + 0x98]
mov r11, qword [rsp + 0xa8]
jge 0x140041aa9
xor eax, eax
mov ecx, ebx
mov r9, qword [rsp + 0x90]
jmp 0x14004020c
imul r14d, eax
add r14d, r14d
mov eax, 3
cmp r13d, 0xef
mov ecx, 0xef
cmovb ecx, r13d
add ecx, 6
movzx r9d, byte [rsi + 0x31]
mov edx, dword [rsi + 0x10]
xor r8d, r8d
cmp r14d, 0xffff84ed
cmovl r8d, edx
neg r8d
cmp r14d, 0x7b14
cmovge r8d, edx
add r8d, r14d
mov dword [rsp + 0x28], ecx
mov dword [rsp + 0x20], eax
mov dword [rsp + 0x38], 0x7d02
mov dword [rsp + 0x30], 0
mov rcx, qword [rsp + 0x90]
mov rdx, qword [rsp + 0x148]
call fcn.140057400
mov ebx, r14d
jmp 0x14003fd6e
mov qword [rsp + 0xe0], rbx
jmp 0x14004171c