Function at 0x14003d100
Capabilities:
Encrypt data using speck

Disassembly:
push r15
push r14
push r13
push r12
push rbp
push rdi
push rsi
push rbx
sub rsp, 0x248
mov rax, qword [0x140121580]
xor esi, esi
xor edi, edi
xor ebp, ebp
xor r12d, r12d
xor r13d, r13d
movdqa xmm1, xmmword [0x1400eb190]
movdqa xmm0, xmmword [0x1400eb1a0]
mov word [0x140143940], di
xor r8d, r8d
mov word [0x140143942], bp
mov word [rax + 0xda], si
mov rax, qword [0x1401214a0]
mov word [0x140143944], r12w
mov word [0x140143946], r13w
mov qword [rsp + 0x98], rax
lea rcx, [rax + 0x7c4]
lea rdx, [rcx - 0x7c4]
lea rax, [rcx - 0x7b4]
nop word [rax + rax]
xor r11d, r11d
xor ebx, ebx
movups xmmword [rdx], xmm1
add rax, 0x44
mov byte [rax - 0x3e], 0
add rdx, 0x44
movups xmmword [rdx - 0x14], xmm0
mov dword [rax - 0x30], 0
mov dword [rdx - 0x1c], 0
mov word [rax - 0x28], r11w
mov dword [rax - 0x44], 0
mov word [rax - 0x40], bx
cmp rax, rcx
jne 0x14003d188
lea rcx, [rax + 0x7b4]
add r8, 1
cmp r8, 0x4f
jne 0x14003d174
call fcn.140065130
mov rcx, qword [0x140120fb0]
mov r10d, 0xcccccccd
mov rbx, rax
mov rdx, qword [0x140121080]
mov rax, qword [rcx]
mov rdx, qword [rdx]
mov qword [rsp + 0x160], rax
mov rax, qword [rcx + 8]
mov r9d, dword [rdx + 0x3c]
movd xmm0, dword [rsp + 0x160]
mov qword [rsp + 0x168], rax
movzx eax, word [rcx + 0x10]
sub r9d, 1
mov word [rsp + 0x170], ax
mov rax, qword [0x140121580]
movsx eax, word [rax + 2]
mov r8d, eax
sub eax, 1
imul eax, eax, 0x64
cdq
idiv r9d
xor edx, edx
mov r9d, 0x64
test eax, eax
cmovs eax, edx
mov edx, 0x64
cmp eax, edx
cmovg eax, edx
sub r9d, eax
mov edx, r9d
imul rdx, r10
mov rsi, rdx
shr rdx, 0x23
shr rsi, 0x22
shl edx, 0x10
movzx r10d, si
or edx, r10d
movd xmm2, edx
lea edx, [r9*8]
paddw xmm2, xmm0
sub edx, r9d
imul rdx, rdx, 0x51eb851f
movd dword [rsp + 0x160], xmm2
shr rdx, 0x25
add word [rsp + 0x166], dx
movzx edx, ax
imul edx, edx, 0xcccd
shr edx, 0x13
add word [rsp + 0x16a], dx
lea edx, [r9 + r9*4]
shl edx, 4
imul rdx, rdx, 0x51eb851f
shr rdx, 0x25
add word [rsp + 0x170], dx
cmp r8w, 1
mov rdx, qword [rcx + 0x12]
mov qword [rsp + 0x1a0], rdx
mov rdx, qword [rcx + 0x1a]
mov qword [rsp + 0x1a8], rdx
movzx edx, word [rcx + 0x22]
mov word [rsp + 0x1b0], dx
je 0x14003eaa8
sar ax, 1
add word [rsp + 0x1ac], ax
xor r8d, r8d
xor edx, edx
lea rax, [rsp + 0x1a0]
mov rcx, rbx
mov r14, rbx
mov r9, rax
mov qword [rsp + 0x138], rax
call fcn.1400364d0
lea rax, [rsp + 0x160]
mov r9d, 0x23
mov rcx, rbx
mov rdx, rax
mov r8d, 0x23
mov qword [rsp + 0x130], rax
call fcn.140038010
mov edx, 0x14
mov rcx, rbx
call fcn.140036120
mov rax, qword [rsp + 0x98]
lea rsi, [rax + 0x7b4]
lea rdi, [rax + 0x26840]
mov r13, rsi
lea rbp, [r13 - 0x7b4]
xor r12d, r12d
jmp 0x14003d3a7
cmp ax, 2
je 0x14003d710
add rbp, 0x44
add r12, 2
cmp r13, rbp
je 0x14003d3c9
mov rax, qword [r14]
movzx eax, word [rax + r12]
cmp ax, 1
jne 0x14003d390
mov dword [rbp], 2
add rbp, 0x44
add r12, 2
cmp r13, rbp
jne 0x14003d3a7
add r13, 0x7b4
add r14, 8
cmp r13, rdi
jne 0x14003d37c
mov rcx, rbx
mov r13d, 0xf
call fcn.1400651a0
xor ecx, ecx
mov ebp, r13d
call fcn.140035a90
lea r15, [rsp + 0x15e]
call fcn.140065130
mov rdi, rax
mov qword [rsp + 0x78], rax
call fcn.140065130
xor edx, edx
mov rcx, rdi
mov qword [rsp + 0x80], rax
call fcn.140065210
lea rax, [rsp + 0x15c]
mov qword [rsp + 0xe0], rax
mov rdi, qword [rsp + 0x80]
xor edx, edx
mov r14d, 0x14
mov rcx, rdi
call fcn.140065210
lea rax, [0x1400eb100]
mov r8, r15
mov r9, qword [rsp + 0x130]
mov qword [rsp + 0x60], rax
lea rax, str.ffffftttt
mov rdx, qword [rsp + 0xe0]
mov rcx, rdi
mov qword [rsp + 0x58], rax
lea eax, [rbp + rbp]
mov dword [rsp + 0x40], eax
mov rax, qword [rsp + 0x138]
mov dword [rsp + 0x50], 0x37
mov dword [rsp + 0x48], ebp
mov dword [rsp + 0x38], 4
mov dword [rsp + 0x30], 4
mov dword [rsp + 0x28], 5
mov qword [rsp + 0x20], rax
call fcn.140065e40
mov qword [rsp + 0xc0], rsi
mov word [rsp + 0xe8], r14w
mov dword [rsp + 0xc8], ebp
mov qword [rsp + 0xd0], r15
jmp 0x14003d5f6
mov rax, qword [r13]
cmp word [rax + rsi*2], 0
jne 0x14003d6e3
mov eax, r12d
sub eax, ebx
cmp ax, 0x1c
ja 0x14003d504
cmp di, 0x4e
jbe 0x14003dc49
movsx ecx, bp
movzx ebp, word [rsp + 0x90]
mov edi, r14d
mov eax, dword [rsp + 0xa0]
movsx edx, di
xor edi, edi
mov r13d, ebp
mov r9, qword [rsp + 0x80]
mov r14d, edi
mov r8, qword [rsp + 0xa8]
mov dword [rsp + 0x30], eax
mov eax, dword [rsp + 0xb8]
mov dword [rsp + 0x28], eax
mov rax, qword [rsp + 0x78]
mov qword [rsp + 0x20], rax
call fcn.140035e20
xor eax, eax
mov ebp, eax
cmp r14b, 1
je 0x14003d7b8
mov rax, qword [rsp + 0x78]
movsx rbx, bp
xor esi, esi
movzx r15d, bp
movzx r12d, word [rsp + 0xb0]
shl rbx, 3
lea rdi, [rax + rbx]
mov rax, qword [rsp + 0xa8]
add rbx, rax
nop dword [rax + rax]
mov ecx, esi
shl ecx, 0x10
or ecx, r15d
call fcn.140019980
test eax, 0x829c1
jne 0x14003d788
mov rdx, qword [rdi]
movsx rax, si
cmp word [rdx + rax*2], 0
jne 0x14003d788
mov rdx, qword [rbx]
cmp word [rdx + rax*2], 0
jne 0x14003d788
cmp r12w, 0x1c
ja 0x14003d5da
cmp r13w, 0x4e
jbe 0x14003d74f
mov rcx, qword [rsp + 0xa8]
call fcn.1400651a0
sub word [rsp + 0xe8], 1
je 0x14003dc82
movsx ecx, word [rsp + 0x160]
mov edx, 0x4f
xor r13d, r13d
movsx eax, word [rsp + 0x15c]
sub edx, ecx
mov ecx, 1
sub edx, eax
sub ecx, eax
sub edx, 2
call fcn.140064c70
movsx ecx, word [rsp + 0x1a0]
mov edx, 0x1d
mov edi, eax
mov dword [rsp + 0xd8], eax
movsx eax, word [rsp + 0x15e]
mov ebp, edi
neg ebp
sub edx, ecx
mov ecx, 1
mov edi, ebp
sub edx, eax
sub ecx, eax
sub edx, 2
call fcn.140064c70
mov edx, eax
mov dword [rsp + 0xf0], eax
mov r15d, eax
movsx eax, bp
neg edx
mov dword [rsp + 0xb8], eax
movsx esi, dx
mov word [rsp + 0xb0], dx
mov dword [rsp + 0xa0], esi
add r15d, esi
call fcn.140065130
xor edx, edx
mov ebx, r15d
mov rcx, rax
mov qword [rsp + 0xa8], rax
call fcn.140065210
mov word [rsp + 0x90], bp
mov ebp, r13d
mov rdx, qword [rsp + 0x78]
movsx rax, bp
xor esi, esi
movzx r15d, bp
mov r12d, dword [rsp + 0xa0]
lea r13, [rdx + rax*8]
nop dword [rax]
mov ecx, esi
mov r14d, esi
shl ecx, 0x10
or ecx, r15d
call fcn.140019980
test eax, 0x829c1
je 0x14003d4e0
add rsi, 1
add r12d, 1
cmp rsi, 0x1d
jne 0x14003d6c8
add ebp, 1
add edi, 1
cmp bp, 0x4e
jle 0x14003d6aa
movzx ebp, word [rsp + 0x90]
or edi, 0xffffffff
or ecx, 0xffffffff
jmp 0x14003d512
mov ecx, 0x3c
call fcn.140064bb0
mov edx, eax
mov eax, 2
test dl, dl
je 0x14003d747
mov rax, qword [0x140121580]
movsx edx, word [rax + 2]
mov rax, qword [0x140121080]
mov rax, qword [rax]
cmp edx, dword [rax + 0x38]
setl al
movzx eax, al
lea eax, [rax + rax*4 + 2]
mov dword [rbp], eax
jmp 0x14003d39a
mov eax, dword [rsp + 0xb8]
movsx edx, bp
mov ecx, dword [rsp + 0xa0]
add edx, eax
movsx eax, si
add eax, ecx
mov rcx, qword [rsp + 0x80]
movsxd rdx, edx
cdqe
mov rdx, qword [rcx + rdx*8]
cmp word [rdx + rax*2], 0
sete r14b
nop dword [rax]
add esi, 1
mov eax, r14d
add r12d, 1
xor eax, 1
cmp si, 0x1c
jg 0x14003d7a3
test al, al
jne 0x14003d590
add ebp, 1
add r13d, 1
cmp bp, 0x4e
jg 0x14003d7b8
test al, al
jne 0x14003d556
mov rcx, qword [rsp + 0xa8]
call fcn.1400651a0
test r14b, r14b
jne 0x14003d5e7
cmp word [rsp + 0x160], 0
mov ebx, dword [rsp + 0xf0]
mov rsi, qword [rsp + 0xc0]
mov ebp, dword [rsp + 0xc8]
mov r15, qword [rsp + 0xd0]
jle 0x14003d8e9
movsx r12d, word [rsp + 0xd8]
xor edi, edi
movsx r14d, bx
cmp word [rsp + 0x1a0], 0
jle 0x14003d8d8
movsx r10d, word [rsp + 0x15c]
movsx r13d, di
xor edx, edx
mov qword [rsp + 0x90], rsi
movsx r9d, word [rsp + 0x15e]
mov rsi, qword [rsp + 0x80]
lea r8d, [r10 + r13]
movsx eax, dx
lea ecx, [r9 + rax]
movsxd r11, r8d
movsxd rbx, ecx
mov r11, qword [rsi + r11*8]
cmp word [r11 + rbx*2], 0
je 0x14003d8bf
mov rsi, qword [rsp + 0x78]
add r8d, r12d
add ecx, r14d
mov r9d, 1
movsxd r8, r8d
movsxd rcx, ecx
mov r8, qword [rsi + r8*8]
mov rsi, qword [rsp + 0x98]
mov word [r8 + rcx*2], r9w
movsx r9d, word [rsp + 0x15e]
movsx r10d, word [rsp + 0x15c]
add eax, r9d
lea ecx, [r10 + r13]
add eax, r14d
add ecx, r12d
cdqe
imul rax, rax, 0x44
movsxd rcx, ecx
imul rcx, rcx, 0x7b4
add rax, rcx
mov dword [rsi + rax], 2
add edx, 1
cmp dx, word [rsp + 0x1a0]
jl 0x14003d839
mov rsi, qword [rsp + 0x90]
add edi, 1
cmp di, word [rsp + 0x160]
jl 0x14003d80a
sub ebp, 1
cmp ebp, 9
jne 0x14003d42d
mov rcx, qword [rsp + 0x80]
call fcn.1400651a0
mov rdi, qword [rsp + 0x78]
mov rcx, rdi
call fcn.140037390
mov rcx, rdi
call fcn.1400651a0
xor ecx, ecx
call fcn.14003ce60
mov r11, qword [0x140121660]
mov r9d, 0x44
mov r8, qword [rsp + 0x98]
mov r15d, 1
mov r10, rsi
xor ebx, ebx
mov edx, r15d
mov r13d, 0xffffffff
mov byte [rsp + 0xb8], 0
mov r15, r8
nop word [rax + rax]
mov word [rsp + 0x90], bx
xor ebp, ebp
xor r12d, r12d
mov r8, rsi
mov qword [rsp + 0x78], rbx
nop dword [rax]
mov rbx, r15
mov rdi, r10
mov esi, edx
lea r14d, [r12 + 1]
sub rbx, rbp
sub rdi, rbp
mov eax, dword [rbx]
shl rax, 8
test byte [r11 + rax + 0x2c], 1
jne 0x14003d9a8
mov eax, dword [rdi]
shl rax, 8
mov eax, dword [r11 + rax + 0x2c]
and eax, 0x21
cmp eax, 0x21
je 0x14003dcb0
sub esi, 1
add rbx, 0x7b4
sub rdi, 0x7b4
cmp r13w, si
jne 0x14003d983
sub rbp, 0x44
cmp r14d, 0x1c
mov r12d, r14d
jne 0x14003d970
mov rbx, qword [rsp + 0x78]
add r13d, 1
add edx, 1
mov rsi, r8
add r15, 0x7b4
add r10, 0x7b4
add rbx, 1
cmp r13w, 0x4d
jne 0x14003d958
cmp byte [rsp + 0xb8], 1
je 0x14003d92b
mov ecx, 1
call fcn.140037950
mov rax, qword [0x140121580]
movsx ecx, word [rax + 2]
mov rax, qword [0x140121080]
mov rdx, qword [rax]
mov eax, dword [rdx + 0x3c]
cmp ecx, eax
je 0x14003ead4
cmp eax, ecx
mov r8d, dword [rdx + 0x64]
jl 0x14003eb3a
mov rax, qword [0x140121580]
mov esi, ecx
xor ebx, ebx
mov r10d, dword [rdx + 0x5c]
imul esi, r8d
mov r11d, dword [rdx + 0x60]
movsx r9d, word [rax + 0xd8]
mov eax, r9d
imul eax, r10d
add eax, r11d
cmp esi, eax
jle 0x14003da7d
add ebx, 1
movsx eax, bx
add eax, r9d
imul eax, r10d
add eax, r11d
cmp eax, esi
jl 0x14003da69
cmp dword [rdx + 0x68], ecx
mov eax, 0xf
jl 0x14003dac1
mov rax, qword [0x140121580]
movsx edx, bx
movsx eax, word [rax + 0xd8]
add eax, edx
cmp eax, 1
sbb eax, eax
and eax, 0x19
add eax, 0xf
jmp 0x14003dac1
test al, al
je 0x14003dade
mov rax, qword [0x140121080]
add ebx, 1
mov rax, qword [rax]
mov r8d, dword [rax + 0x64]
mov eax, 0xf
mov edx, r8d
cwde
shl edx, 4
sub edx, r8d
cmp edx, eax
cmovl edx, eax
movsx ecx, dx
call fcn.140064bb0
cmp bx, 0x63
jle 0x14003daa7
test bx, bx
mov esi, 0x32
jne 0x14003daf5
jmp 0x14003db49
test si, si
je 0x14003db49
mov r9d, pe_nt_image_headers64
mov edx, 0xffffffff
mov ecx, 0xffffffff
mov qword [rsp + 0x30], 0
mov qword [rsp + 0x28], 0
mov r8d, 0xffffffff
mov qword [rsp + 0x20], 0
call fcn.14003a580
test al, al
je 0x14003db41
mov rax, qword [0x140121580]
sub ebx, 1
add word [rax + 0xd8], 1
sub esi, 1
test bx, bx
jne 0x14003daf0
mov ecx, 1
mov esi, 1
mov ebx, 0x64
call fcn.14003ce60
movzx eax, byte [rsp + 0xb8]
lea edi, [rbx - 1]
mov r14d, esi
xor esi, 1
cmp r14b, 1
mov word [rsp + 0xb0], di
sbb r13d, r13d
and r13d, 0x1a
add r13d, 1
cmp r14b, 1
mov byte [rsp + 0xa0], al
mov eax, esi
sbb r15d, r15d
mov esi, r14d
and r15d, 0x4c
add r15d, 1
mov r14d, r15d
mov ebx, r13d
movzx ebp, r14w
mov word [rsp + 0x78], r14w
mov r15d, r13d
mov word [rsp + 0x80], r14w
shl ebx, 0x10
mov r14d, edi
mov r12d, eax
or ebx, ebp
mov edi, ebx
movsx rax, word [rsp + 0x80]
mov ebx, r13d
mov qword [rsp + 0xd0], rax
imul rax, rax, 0x7b4
mov qword [rsp + 0xd8], rax
mov ecx, edi
mov r13d, edi
mov edi, ebx
call fcn.140019980
test eax, 0x21c1
jne 0x14003de23
test sil, sil
jne 0x14003ddec
lea ebx, [rdi - 1]
mov edi, ebx
shl edi, 0x10
or edi, ebp
test bx, bx
jg 0x14003dbec
sub word [rsp + 0x78], 1
movzx eax, word [rsp + 0x78]
test ax, ax
mov word [rsp + 0x80], ax
jle 0x14003e017
movzx ebp, word [rsp + 0x78]
mov edi, r15d
mov r13d, r15d
shl edi, 0x10
or edi, ebp
jmp 0x14003dbc9
mov eax, dword [rsp + 0xb8]
movsx ecx, bp
mov r9, qword [rsp + 0x80]
lea edx, [rcx + rax]
movsxd rax, r12d
movsxd rdx, edx
mov rdx, qword [r9 + rdx*8]
cmp word [rdx + rax*2], 0
jne 0x14003d6e3
movzx ebp, word [rsp + 0x90]
mov edi, esi
jmp 0x14003d512
mov ebp, dword [rsp + 0xc8]
mov rsi, qword [rsp + 0xc0]
mov r15, qword [rsp + 0xd0]
sub ebp, 1
cmp ebp, 9
jne 0x14003d42d
jmp 0x14003d8f5
mov eax, dword [rbx + r9]
mov rcx, r9
sub rcx, rbp
shl rax, 8
mov eax, dword [r11 + rax + 0x2c]
and eax, 0x21
cmp eax, 0x21
jne 0x14003d9a8
add rcx, rdi
mov eax, dword [rcx + rbp]
shl rax, 8
test byte [r11 + rax + 0x2c], 1
jne 0x14003d9a8
mov ecx, 0x32
mov qword [rsp + 0xb0], r8
mov dword [rsp + 0xa8], edx
mov qword [rsp + 0xa0], r10
call fcn.140064bb0
mov r11, qword [0x140121660]
movsx rcx, si
movzx edx, word [rsp + 0x90]
mov r9d, eax
mov r10, qword [rsp + 0xa0]
mov r8, qword [rsp + 0xb0]
lea eax, [rdx + rdx + 1]
mov edx, dword [rsp + 0xa8]
sub eax, esi
test r9b, r9b
mov r9d, 0x44
mov word [rsp + 0x80], ax
movsxd rax, r12d
jne 0x14003dd63
movsx rcx, word [rsp + 0x80]
movsxd rax, r14d
mov word [rsp + 0x80], si
imul rax, rax, 0x44
imul rcx, rcx, 0x7b4
mov qword [rsp + 0xa0], rax
add rcx, rax
mov rax, qword [rsp + 0x98]
mov qword [rsp + 0xa8], rcx
add rcx, rax
test byte [rcx + 0x10], 8
jne 0x14003d9a8
cmp byte [rcx + 0x16], 0
jne 0x14003d9a8
mov rax, qword [rsp + 0xa0]
mov byte [rsp + 0xb8], 1
movsx rcx, word [rsp + 0x80]
imul rcx, rcx, 0x7b4
add rax, rcx
mov rcx, qword [rsp + 0x98]
movdqu xmm3, xmmword [rax + rcx]
mov rax, rcx
mov rcx, qword [rsp + 0xa8]
movaps xmmword [rsp + 0x80], xmm3
movups xmmword [rcx + rax], xmm3
jmp 0x14003d9a8
lea ebx, [rdi + 1]
mov edi, ebx
shl edi, 0x10
or edi, ebp
cmp bx, 0x1b
jle 0x14003dbec
mov edi, r14d
movzx r14d, word [rsp + 0x78]
mov eax, r12d
add r14d, 1
cmp r14w, 0x4d
jg 0x14003e393
mov r13d, r15d
jmp 0x14003dba3
mov ecx, r13d
call fcn.1400199e0
test al, 1
jne 0x14003dc03
movsx rax, bx
mov rdx, qword [rsp + 0xd8]
mov qword [rsp + 0xc8], rax
imul rax, rax, 0x44
add rax, rdx
mov rdx, qword [rsp + 0x98]
test byte [rdx + rax + 0x13], 8
jne 0x14003dc03
mov ecx, r13d
call fcn.140019980
mov edx, ebx
mov r13d, eax
movzx eax, word [rsp + 0x78]
shl edx, 0x10
mov dword [rsp + 0xc0], edx
sub eax, 1
movzx eax, ax
or edx, eax
mov ecx, edx
mov dword [rsp + 0xa8], edx
call fcn.140019980
mov ecx, r13d
and ecx, 0x21c1
not ecx
and eax, ecx
mov dword [rsp + 0x90], ecx
test eax, 0x21c0
je 0x14003dec2
mov ecx, dword [rsp + 0xa8]
call fcn.1400199e0
test al, 1
je 0x14003dfa8
lea eax, [rbx - 1]
shl eax, 0x10
or eax, ebp
mov ecx, eax
mov r13d, eax
call fcn.140019980
mov edx, dword [rsp + 0x90]
and eax, edx
test eax, 0x21c0
je 0x14003dc03
mov ecx, r13d
call fcn.1400199e0
test al, 1
jne 0x14003dc03
add ebx, 1
mov eax, ebx
shl eax, 0x10
or eax, ebp
mov ecx, eax
mov dword [rsp + 0xa8], eax
call fcn.1400199e0
test al, 1
jne 0x14003dc03
mov ecx, r13d
call fcn.140019980
mov ecx, dword [rsp + 0xa8]
mov r13d, eax
call fcn.140019980
mov edx, dword [rsp + 0x90]
xor eax, r13d
and eax, edx
test eax, 0x21c0
jne 0x14003dc03
movzx r13d, word [rsp + 0x80]
test r13w, r13w
je 0x14003dc03
movsx rdx, bx
movsx rax, r13w
mov rcx, qword [rsp + 0x98]
mov byte [rsp + 0xa0], 1
imul rdx, rdx, 0x44
imul rax, rax, 0x7b4
add rax, rdx
movdqu xmm0, xmmword [rax + rcx]
imul rdx, qword [rsp + 0xd0], 0x7b4
imul rax, qword [rsp + 0xc8], 0x44
add rax, rdx
movups xmmword [rax + rcx], xmm0
jmp 0x14003dc03
movzx eax, word [rsp + 0x78]
mov edx, dword [rsp + 0xc0]
lea r13d, [rax + 1]
movzx eax, r13w
or edx, eax
mov ecx, edx
mov dword [rsp + 0xc0], edx
call fcn.1400199e0
test al, 1
jne 0x14003dec2
mov ecx, dword [rsp + 0xa8]
call fcn.140019980
mov ecx, dword [rsp + 0xc0]
mov dword [rsp + 0xa8], eax
call fcn.140019980
mov edx, dword [rsp + 0xa8]
xor edx, eax
mov eax, edx
mov edx, dword [rsp + 0x90]
and eax, edx
test eax, 0x21c0
je 0x14003df4f
jmp 0x14003dec2
movzx ebx, word [rsp + 0xb0]
mov esi, r12d
mov edi, r14d
test di, di
jle 0x14003e038
test byte [rsp + 0xa0], 1
jne 0x14003db5d
lea rax, [rsp + 0x23c]
mov qword [rsp + 0x110], rax
lea rax, [rsp + 0x162]
mov qword [rsp + 0x118], rax
lea rax, [rsp + 0x198]
lea r12, [rsp + 0x1a2]
mov qword [rsp + 0x80], rax
mov rax, qword [0x140121080]
mov ecx, 0xa
mov rdx, qword [0x140121580]
mov rax, qword [rax]
movsx edx, word [rdx + 2]
imul edx, dword [rax + 0x40]
imul edx, edx, 0x64
movsxd rax, edx
sar edx, 0x1f
imul rax, rax, 0x38e38e39
sar rax, 0x21
sub eax, edx
mov edx, 0x14
lea ebx, [rax + 0x64]
call fcn.140064c70
mov ecx, 0xa
imul eax, ebx
movsxd rdx, eax
sar eax, 0x1f
imul rdx, rdx, 0x66666667
sar rdx, 0x22
sub edx, eax
lea eax, [rdx + 0x64]
mov word [rsp + 0x14a], ax
mov rax, qword [0x140121080]
mov rdx, qword [rax]
mov rax, qword [0x140121580]
movsx eax, word [rax + 2]
imul eax, dword [rdx + 0x40]
imul eax, eax, 0x64
movsxd rdx, eax
sar eax, 0x1f
imul rdx, rdx, 0x38e38e39
sar rdx, 0x22
sub edx, eax
lea ebx, [rdx + 0x190]
mov edx, 0x14
call fcn.140064c70
mov rsi, qword [rsp + 0x138]
mov edx, 0x4f
imul eax, ebx
movsxd rbx, eax
mov rcx, rsi
sar eax, 0x1f
imul rbx, rbx, 0x66666667
sar rbx, 0x22
sub ebx, eax
call fcn.140064c50
mov rcx, rsi
mov edx, 0x4f
add ebx, 0x64
call fcn.140064bf0
mov rsi, qword [rsp + 0x130]
mov edx, 0x1d
mov rcx, rsi
call fcn.140064c50
mov rcx, rsi
mov edx, 0x1d
mov rsi, r12
call fcn.140064bf0
movsx eax, bx
mov qword [rsp + 0x140], r12
mov dword [rsp + 0x14c], eax
movsx eax, word [rsi]
mov qword [rsp + 0x100], rsi
mov rbx, qword [rsp + 0x118]
lea r10d, [rax + 1]
mov r8d, eax
mov dword [rsp + 0xf4], eax
movsx rdi, r10w
movsx r9, r8w
mov r12, rbx
mov word [rsp + 0xf0], r8w
imul rax, rdi, 0x7b4
mov qword [rsp + 0x128], rdi
mov word [rsp + 0xb0], r10w
mov qword [rsp + 0x108], r9
mov qword [rsp + 0xe0], rax
movsx rax, r8w
imul r13, rax, 0x7b4
movzx eax, r8w
mov dword [rsp + 0x78], eax
lea rax, [r13 + 0x16]
mov qword [rsp + 0xa8], r13
mov qword [rsp + 0xe8], rax
mov qword [rsp + 0x120], r13
jmp 0x14003e232
add r12, 2
cmp qword [rsp + 0x80], r12
je 0x14003e58b
movzx r13d, word [r12]
mov eax, dword [rsp + 0x78]
mov ecx, r13d
mov esi, r13d
shl ecx, 0x10
or ecx, eax
call fcn.140019980
test eax, 0x829c1
jne 0x14003e220
movsx rax, r13w
mov rdx, qword [rsp + 0xa8]
movsx r11d, r13w
mov qword [rsp + 0xa0], rax
imul rax, rax, 0x44
add rax, rdx
mov rdx, qword [rsp + 0x98]
cmp byte [rdx + rax + 0x16], 0
jne 0x14003e220
movzx r14d, word [rsp + 0xb0]
cmp r14w, 0x4e
jg 0x14003e428
mov rdx, qword [rsp + 0xe0]
lea r15d, [r13 - 1]
movsx rax, r13w
mov dword [rsp + 0xc0], r11d
imul rax, rax, 0x44
shl r15d, 0x10
mov qword [rsp + 0xc8], r12
lea rbp, [rax + rdx + 0x16]
mov qword [rsp + 0xd0], rax
mov rax, qword [rsp + 0x98]
add rbp, rax
movzx eax, byte [rsp + 0xb8]
mov byte [rsp + 0x90], al
jmp 0x14003e2fe
add r14d, 1
add rbp, 0x7b4
cmp r14w, 0x4f
je 0x14003ea30
mov ebx, r13d
movzx edi, r14w
shl ebx, 0x10
or ebx, edi
cmp byte [rbp], 0
jne 0x14003e3a8
mov ecx, ebx
call fcn.140019980
test al, 0x80
je 0x14003e3a8
mov ecx, ebx
call fcn.1400199e0
test al, 1
jne 0x14003e3a8
mov ecx, ebx
call fcn.140019980
test al, 1
jne 0x14003e3a8
mov r12d, r15d
or r12d, edi
mov ecx, r12d
call fcn.140019980
test al, 0x81
je 0x14003e3a8
lea ebx, [rsi + 1]
shl ebx, 0x10
or ebx, edi
mov ecx, ebx
call fcn.140019980
test al, 0x81
je 0x14003e3a8
mov ecx, r12d
call fcn.140019980
test al, 1
jne 0x14003e2e8
mov ecx, ebx
call fcn.140019980
mov edx, 1
test al, 1
movzx eax, byte [rsp + 0x90]
cmove eax, edx
mov byte [rsp + 0x90], al
jmp 0x14003e2e8
movzx ebx, word [rsp + 0xb0]
mov esi, r12d
jmp 0x14003e025
mov eax, dword [rsp + 0xf4]
movsx r15d, r14w
mov ebp, r15d
mov r11d, dword [rsp + 0xc0]
mov r12, qword [rsp + 0xc8]
sub ebp, eax
cmp ebp, 3
jle 0x14003e428
test byte [rsp + 0x90], 1
je 0x14003e428
mov ecx, r13d
mov dword [rsp + 0x90], r11d
shl ecx, 0x10
or ecx, edi
call fcn.140019980
mov r11d, dword [rsp + 0x90]
test eax, 0x829c1
jne 0x14003e428
imul rax, qword [rsp + 0xa0], 0x44
movsxd rbx, r15d
imul rdx, rbx, 0x7b4
add rax, rdx
mov rdx, qword [rsp + 0x98]
cmp byte [rdx + rax + 0x16], 0
je 0x14003e7b9
nop dword [rax]
lea r10d, [rsi + 1]
cmp r10w, 0x1c
jg 0x14003e220
movsx rax, r10w
movzx esi, byte [rsp + 0xb8]
mov r15d, r10d
mov dword [rsp + 0xc8], r11d
imul rdi, rax, 0x44
mov qword [rsp + 0xf8], rax
mov rax, qword [rsp + 0xe8]
movzx r14d, word [rsp + 0xb0]
mov qword [rsp + 0xc0], r12
mov word [rsp + 0xd0], r10w
lea rbp, [rax + rdi]
mov rax, qword [rsp + 0x98]
mov qword [rsp + 0xd8], rdi
add rbp, rax
movzx eax, word [rsp + 0xf0]
lea r13d, [rax - 1]
movzx eax, r13w
mov dword [rsp + 0x90], eax
jmp 0x14003e4c3
add r15d, 1
add rbp, 0x44
cmp r15w, 0x1d
je 0x14003e571
mov r12d, dword [rsp + 0x78]
mov edi, r15d
movzx ebx, r15w
shl edi, 0x10
mov r13d, edi
or r13d, r14d
or r12d, edi
cmp byte [rbp], 0
jne 0x14003e8b0
mov ecx, r12d
call fcn.140019980
test al, 0x80
je 0x14003e8b0
mov ecx, r12d
call fcn.1400199e0
test al, 1
jne 0x14003e8b0
mov ecx, r12d
call fcn.140019980
test al, 1
jne 0x14003e8b0
mov eax, dword [rsp + 0x90]
or edi, eax
mov ecx, edi
call fcn.140019980
test al, 0x81
je 0x14003e8b0
mov ecx, r13d
call fcn.140019980
test al, 0x81
je 0x14003e8b0
mov ecx, edi
call fcn.140019980
test al, 1
jne 0x14003e4b0
mov ecx, r13d
call fcn.140019980
test al, 1
mov eax, 1
cmove esi, eax
add r15d, 1
add rbp, 0x44
cmp r15w, 0x1d
jne 0x14003e4c3
mov r12, qword [rsp + 0xc0]
add r12, 2
cmp qword [rsp + 0x80], r12
jne 0x14003e232
mov rsi, qword [rsp + 0x100]
add rsi, 2
cmp qword [rsp + 0x110], rsi
jne 0x14003e188
mov rax, qword [0x140121580]
mov esi, 1
mov rdx, qword [0x140121080]
mov rdi, qword [rsp + 0x98]
movsx eax, word [rax + 2]
mov rdx, qword [rdx]
sub eax, 1
mov ecx, dword [rdx + 0x3c]
imul eax, eax, 0x43
cdq
sub ecx, 1
idiv ecx
xor edx, edx
test eax, eax
cmovns edx, eax
mov eax, 0x43
cmp edx, eax
mov r11d, edx
cmovg r11d, eax
add rdi, 0x7f8
xor edx, edx
mov r15d, esi
mov r13d, 1
mov word [rsp + 0xa0], dx
lea ebp, [rsi + 1]
mov dword [rsp + 0xa8], r11d
movzx eax, bp
mov word [rsp + 0xc0], bp
mov rbp, rdi
mov esi, eax
mov dword [rsp + 0x98], eax
movzx eax, r15w
mov dword [rsp + 0x78], eax
mov word [rsp + 0xb0], si
mov dword [rsp + 0x90], edx
mov qword [rsp + 0xb8], rdi
jmp 0x14003e65e
add rbp, 0x44
cmp di, 0x1c
je 0x14003e761
cmp dword [rbp], 7
mov r15d, r13d
mov esi, r13d
lea edi, [r15 + 1]
mov r13d, edi
jne 0x14003e650
cmp byte [rbp + 0x16], 0
jne 0x14003e650
mov ebx, dword [rsp + 0x98]
mov r12d, r15d
mov r14d, r13d
mov eax, dword [rsp + 0x78]
shl r12d, 0x10
shl r14d, 0x10
or ebx, r12d
mov ecx, ebx
or r14d, eax
call fcn.140019980
test al, 1
je 0x14003ea45
movzx eax, word [rsp + 0xa0]
mov ecx, r12d
mov word [rsp + 0x80], ax
movzx eax, word [rsp + 0x90]
or ecx, eax
call fcn.140019980
test al, 1
je 0x14003ea45
lea eax, [r15 - 1]
movzx r15d, ax
mov eax, dword [rsp + 0x78]
mov r10d, esi
mov ecx, ebx
shl r15d, 0x10
movzx r12d, word [rsp + 0x80]
shl r10d, 0x10
or r15d, eax
or r12d, r10d
call fcn.140019980
mov ecx, r12d
mov ebx, eax
call fcn.140019980
and ebx, 0x829c1
mov ecx, r14d
setne bl
and eax, 0x829c1
cmp eax, 1
movzx ebx, bl
sbb ebx, 0xffffffff
call fcn.140019980
mov ecx, r15d
and eax, 0x829c1
cmp eax, 1
sbb ebx, 0xffffffff
call fcn.140019980
and eax, 0x829c1
cmp eax, 1
sbb ebx, 0xffffffff
cmp ebx, 2
jle 0x14003ea88
mov dword [rbp], 2
add rbp, 0x44
cmp di, 0x1c
jne 0x14003e65e
mov edx, dword [rsp + 0x90]
mov rdi, qword [rsp + 0xb8]
movzx ebp, word [rsp + 0xc0]
mov r11d, dword [rsp + 0xa8]
add edx, 1
movzx esi, word [rsp + 0xb0]
add rdi, 0x7b4
cmp bp, 0x4e
jne 0x14003e5f4
mov ecx, 1
add rsp, 0x248
pop rbx
pop rsi
pop rdi
pop rbp
pop r12
pop r13
pop r14
pop r15
jmp fcn.140035a90
mov ecx, dword [rsp + 0xf4]
mov edx, r11d
mov r9d, r11d
mov r8d, r15d
mov dword [rsp + 0x20], 0x829c1
call fcn.140008a40
mov r11d, dword [rsp + 0x90]
cwde
imul eax, eax, 0x64
cdq
idiv ebp
movsx edx, word [rsp + 0x14a]
cmp eax, edx
jle 0x14003e428
movzx r8d, word [rsp + 0xb0]
mov rbp, rbx
mov r15, qword [rsp + 0xd0]
mov rcx, qword [rsp + 0x128]
mov r11, qword [rsp + 0xa0]
cmp r8w, r14w
mov r12, qword [rsp + 0x140]
mov r9, qword [rsp + 0x108]
jge 0x14003e871
mov eax, r14d
mov rsi, qword [rsp + 0x98]
sub eax, r8d
mov rdx, qword [rsp + 0xe0]
movzx eax, ax
add rax, rcx
imul rax, rax, 0x7b4
add rdx, r15
add r15, rsi
add rdx, rsi
add rax, r15
mov dword [rdx + 4], 0x65
add rdx, 0x7b4
cmp rdx, rax
jne 0x14003e85e
imul rax, r11, 0x44
mov rsi, qword [rsp + 0x98]
imul rdx, r9, 0x7b4
add rdx, rax
mov dword [rsi + rdx + 0xc], 0x67
imul rdx, rbp, 0x7b4
add rax, rdx
mov dword [rsi + rax + 0xc], 0x67
jmp 0x14003e070
mov r11d, dword [rsp + 0xc8]
movsx r13d, r15w
mov ebp, r13d
mov r12, qword [rsp + 0xc0]
movzx r10d, word [rsp + 0xd0]
mov rdi, qword [rsp + 0xd8]
sub ebp, r11d
cmp ebp, 3
jle 0x14003e220
and esi, 1
je 0x14003e220
mov eax, dword [rsp + 0x78]
mov ecx, ebx
mov dword [rsp + 0xc0], r10d
shl ecx, 0x10
mov dword [rsp + 0x90], r11d
or ecx, eax
call fcn.140019980
test eax, 0x829c1
jne 0x14003e220
movsxd r14, r13d
mov r11d, dword [rsp + 0x90]
imul rax, r14, 0x44
mov r10d, dword [rsp + 0xc0]
imul rdx, qword [rsp + 0x108], 0x7b4
add rax, rdx
mov rdx, qword [rsp + 0x98]
cmp byte [rdx + rax + 0x16], 0
jne 0x14003e220
mov ecx, dword [rsp + 0xf4]
mov edx, r11d
mov r9d, r13d
mov dword [rsp + 0x20], 0x829c1
mov dword [rsp + 0x90], r10d
mov r8d, ecx
call fcn.140008a40
mov r10d, dword [rsp + 0x90]
cwde
imul eax, eax, 0x64
cdq
idiv ebp
mov edx, dword [rsp + 0x14c]
cmp eax, edx
jle 0x14003e220
cmp r10w, r15w
mov rax, rdi
mov r11, qword [rsp + 0xa0]
mov ebp, r10d
mov rdi, qword [rsp + 0x120]
mov r12, qword [rsp + 0x140]
mov r9, qword [rsp + 0x108]
jge 0x14003e9fe
mov rcx, qword [rsp + 0xf8]
mov rdx, rax
mov eax, r15d
sub eax, ebp
mov rsi, qword [rsp + 0x98]
add rdx, rdi
movzx eax, ax
add rax, rcx
imul rax, rax, 0x44
add rdi, rsi
add rdx, rsi
add rax, rdi
mov dword [rdx + 4], 0x65
add rdx, 0x44
cmp rdx, rax
jne 0x14003e9ee
imul rdx, r9, 0x7b4
mov rsi, qword [rsp + 0x98]
imul rax, r11, 0x44
add rax, rdx
mov dword [rsi + rax + 0xc], 0x67
imul rax, r14, 0x44
add rax, rdx
mov dword [rsi + rax + 0xc], 0x67
jmp 0x14003e070
mov r11d, dword [rsp + 0xc0]
mov r12, qword [rsp + 0xc8]
jmp 0x14003e428
mov ecx, r14d
call fcn.140019980
test al, 1
je 0x14003e74c
mov ecx, dword [rsp + 0x78]
lea eax, [r15 - 1]
movzx r15d, ax
shl eax, 0x10
or ecx, eax
call fcn.140019980
test al, 1
je 0x14003e74c
movzx eax, word [rsp + 0x90]
mov word [rsp + 0x80], ax
jmp 0x14003e6d7
mov ecx, dword [rsp + 0xa8]
call fcn.140064bb0
test al, al
je 0x14003e650
mov dword [rbp], 9
jmp 0x14003e650
mov r10d, 1
mov qword [rsp + 0x1a8], 0
mov qword [rsp + 0x1a0], 0
mov word [rsp + 0x1ae], r10w
jmp 0x14003d30c
mov ebx, 0x32
jmp 0x14003eae6
sub bx, 1
je 0x14003eb1d
xor r9d, r9d
mov r8d, 0xffffffff
mov qword [rsp + 0x30], 0
mov edx, 0xffffffff
mov qword [rsp + 0x28], 0
mov ecx, 0xf
mov qword [rsp + 0x20], 0
call fcn.14003a580
test al, al
je 0x14003eae0
mov rax, qword [0x140121080]
mov rsi, qword [0x140121580]
mov rdx, qword [rax]
movsx ecx, word [rsi + 2]
mov eax, dword [rdx + 0x3c]
jmp 0x14003da30
xor ebx, ebx
jmp 0x14003da7d