Function at 0x1400a2b90
Capabilities:
Encode data using base64
Encrypt data using speck

Disassembly:
push r15
push r14
push r13
push r12
push rsi
push rdi
push rbp
push rbx
sub rsp, 0x2d8
movapd xmmword [rsp + 0x2c0], xmm15
movapd xmmword [rsp + 0x2b0], xmm14
movapd xmmword [rsp + 0x2a0], xmm13
movapd xmmword [rsp + 0x290], xmm12
movapd xmmword [rsp + 0x280], xmm11
movapd xmmword [rsp + 0x270], xmm10
movapd xmmword [rsp + 0x260], xmm9
movdqa xmmword [rsp + 0x250], xmm8
movapd xmmword [rsp + 0x240], xmm7
movdqa xmmword [rsp + 0x230], xmm6
mov qword [rsp + 0x68], rdx
mov rdi, rcx
mov ebx, dword [rsp + 0x348]
mov ebp, dword [rsp + 0x340]
mov eax, ebx
or eax, ebp
cmp eax, 0x10000
jae 0x1400a2c85
mov rsi, r8
mov qword [rsp + 0x88], r9
test r9, r9
je 0x1400a2ca7
js 0x1400a75d1
movzx eax, byte [0x14034be90]
mov rcx, qword [0x14034bdf0]
test rcx, rcx
jne 0x1400a2c68
call qword [sym.imp.kernel32.dll_GetProcessHeap]
test rax, rax
je 0x1400a75d1
mov rcx, rax
mov qword [0x14034bdf0], rax
xor edx, edx
mov r8, qword [rsp + 0x88]
call qword [sym.imp.kernel32.dll_HeapAlloc]
mov rcx, rax
test rax, rax
jne 0x1400a2cac
jmp 0x1400a75d1
movabs rax, 0x8000000000000000
lea rcx, [rax + 6]
mov qword [rdi], rcx
mov qword [rdi + 8], rax
mov qword [rdi + 0x20], 0
jmp 0x1400a61d5
mov ecx, 1
mov qword [rsp + 0x138], rcx
mov rdx, rsi
mov rsi, qword [rsp + 0x88]
mov r8, rsi
call sub.VCRUNTIME140.dll_memcpy
movzx eax, bx
movzx ecx, bp
shl ecx, 2
imul rcx, rax
cmp rcx, rsi
jne 0x1400a75d1
and rsi, 0xfffffffffffffffc
je 0x1400a2d65
xor eax, eax
movdqa xmm0, xmmword [0x14027cfc0]
movdqa xmm1, xmmword [0x14027cfd0]
xor ecx, ecx
mov r8, qword [rsp + 0x138]
jmp 0x1400a2d4c
movzx ecx, byte [r8 + rax]
movzx edx, word [r8 + rax + 1]
movd xmm2, edx
movd xmm3, ecx
pand xmm3, xmm1
pslld xmm2, 8
movdqa xmm4, xmm0
pandn xmm4, xmm2
por xmm4, xmm3
movd dword [rsp + 0x134], xmm4
mov cl, 1
add rax, 4
cmp rsi, rax
je 0x1400a2d67
cmp byte [r8 + rax + 3], 0
je 0x1400a2d10
mov byte [r8 + rax + 3], 0xff
add rax, 4
cmp rsi, rax
jne 0x1400a2d4c
jmp 0x1400a2d67
xor ecx, ecx
mov qword [rsp + 0x140], rsi
mov qword [rsp + 0x148], rcx
mov qword [rsp + 0x118], rdi
mov eax, dword [0x14034be94]
mov rcx, qword gs:[0x58]
mov rax, qword [rcx + rax*8]
cmp byte [rax + 0x78], 0
jne 0x1400a2da2
xor ecx, ecx
call fcn.1401856c0
mov eax, dword [0x14034be94]
mov rcx, qword gs:[0x58]
mov rax, qword [rcx + rax*8]
mov rcx, qword [rax + 0x80]
mov rdx, qword [rax + 0x88]
lea r8, [rcx + 1]
mov qword [rax + 0x80], r8
mov qword [rsp + 0x180], rcx
mov qword [rsp + 0x188], rdx
movdqu xmm6, xmmword [str.p_a1_]
movdqa xmmword [rsp + 0x160], xmm6
movupd xmm7, xmmword [0x140310790]
movapd xmmword [rsp + 0x170], xmm7
lea rsi, [0x140310770]
xor r12d, r12d
pcmpeqd xmm8, xmm8
xor eax, eax
mov rdi, qword [rsp + 0x138]
mov r8, qword [rsp + 0x140]
nop word cs:[rax + rax]
test r8, r8
je 0x1400a311d
mov r12d, dword [rdi]
mov r13, qword [rsp + 0x180]
mov rbp, qword [rsp + 0x188]
cmp qword [rsp + 0x170], 0
je 0x1400a30ed
mov r10, r13
movabs rcx, 0x736f6d6570736575
xor r10, rcx
mov r9, rbp
movabs rcx, 0x646f72616e646f6d
xor r9, rcx
movabs rcx, 0x6c7967656e657261
xor r13, rcx
mov rcx, r12
movabs rdx, 0x400000000000000
or rcx, rdx
add r10, r9
rol r9, 0xd
movabs rdx, 0x7465646279746573
xor rbp, rdx
xor r9, r10
rol r10, 0x20
xor rbp, rcx
add r13, rbp
rol rbp, 0x10
xor rbp, r13
add r10, rbp
rol rbp, 0x15
add rdi, 4
mov qword [rsp + 0x38], rdi
add r13, r9
rol r9, 0x11
xor rbp, r10
xor r9, r13
rol r13, 0x20
xor r10, rcx
add r10, r9
rol r9, 0xd
add r8, 0xfffffffffffffffc
mov qword [rsp + 0x48], r8
xor r9, r10
rol r10, 0x20
xor r13, 0xff
add r13, rbp
rol rbp, 0x10
xor rbp, r13
add r10, rbp
rol rbp, 0x15
mov ecx, r12d
add r13, r9
rol r9, 0x11
shr ecx, 8
xor r9, r13
rol r13, 0x20
xor rbp, r10
add r10, r9
rol r9, 0xd
mov edx, r12d
xor r9, r10
rol r10, 0x20
shr edx, 0x10
add r13, rbp
rol rbp, 0x10
xor rbp, r13
add r10, rbp
rol rbp, 0x15
mov r8d, r12d
add r13, r9
rol r9, 0x11
shr r8d, 0x18
xor r9, r13
rol r13, 0x20
xor rbp, r10
add r10, r9
rol r9, 0xd
xor r9, r10
add r13, rbp
rol rbp, 0x10
xor rbp, r13
rol rbp, 0x15
add r13, r9
rol r9, 0x11
xor r9, rbp
mov r11, r13
rol r11, 0x20
xor r11, r13
xor r11, r9
mov r9, r11
shr r9, 0x39
mov qword [rsp + 0x40], r9
movd xmm0, r9d
punpcklbw xmm0, xmm0
pshuflw xmm0, xmm0, 0
pshufd xmm0, xmm0, 0
xor ebp, ebp
xor r9d, r9d
nop word [rax + rax]
and r11, rax
movdqu xmm1, xmmword [rsi + r11]
movdqa xmm2, xmm1
pcmpeqb xmm2, xmm0
pmovmskb ebx, xmm2
nop word cs:[rax + rax]
mov r13d, ebx
test bx, bx
je 0x1400a3030
tzcnt edi, r13d
lea ebx, [r13 - 1]
and ebx, r13d
add rdi, r11
and rdi, rax
lea r15, [rdi*4]
mov r14, rsi
sub r14, r15
cmp byte [r14 - 4], r12b
jne 0x1400a2fe0
neg rdi
cmp byte [rsi + rdi*4 - 3], cl
jne 0x1400a2fe0
cmp byte [rsi + rdi*4 - 2], dl
jne 0x1400a2fe0
cmp byte [rsi + rdi*4 - 1], r8b
jne 0x1400a2fe0
jmp 0x1400a30bf
cmp r9, 1
mov r9d, 1
je 0x1400a3056
pmovmskb r10d, xmm1
xor r9d, r9d
test r10d, r10d
setne r9b
tzcnt r10d, r10d
add r10, r11
and r10, rax
pcmpeqb xmm1, xmm8
pmovmskb edi, xmm1
test edi, edi
jne 0x1400a3073
add r11, rbp
add r11, 0x10
add rbp, 0x10
jmp 0x1400a2fc0
cmp byte [rsi + r10], 0
js 0x1400a3087
movdqa xmm0, xmmword [rsi]
pmovmskb ecx, xmm0
tzcnt r10d, ecx
movzx ecx, byte [rsi + r10]
and ecx, 1
sub qword [rsp + 0x170], rcx
lea rcx, [r10 - 0x10]
and rcx, rax
mov rdx, qword [rsp + 0x40]
mov byte [rsi + r10], dl
mov byte [rcx + rsi + 0x10], dl
inc qword [rsp + 0x178]
shl r10, 2
neg r10
mov dword [rsi + r10 - 4], r12d
mov rdi, qword [rsp + 0x38]
mov r8, qword [rsp + 0x48]
mov r12, qword [rsp + 0x178]
test r13w, r13w
jne 0x1400a2e30
cmp r12, 0x101
jb 0x1400a2e30
jmp 0x1400a3328
lea rcx, [rsp + 0x160]
lea rdx, [rsp + 0x180]
mov rsi, r8
call fcn.14026edd0
mov r8, rsi
mov rsi, qword [rsp + 0x160]
mov rax, qword [rsp + 0x168]
jmp 0x1400a2e5b
mov rbx, qword [rsp + 0x168]
test rbx, rbx
je 0x1400a37ef
lea rax, [rbx + 1]
mov rcx, rax
shr rcx, 0x3e
jne 0x1400a3169
shl rax, 2
add rax, 0xf
jb 0x1400a3169
and rax, 0xfffffffffffffff0
add rbx, 0x11
add rbx, rax
jb 0x1400a3169
movabs rcx, 0x8000000000000000
add rcx, 0xfffffffffffffff0
cmp rbx, rcx
jbe 0x1400a6787
xor edx, edx
mov r8, rsi
sub r8, rax
test r12, r12
je 0x1400a37fa
mov qword [rsp + 0x48], r8
movdqa xmm0, xmmword [rsi]
pmovmskb edi, xmm0
lea r13, [rsi + 0x10]
cmp edi, 0xffff
jne 0x1400a31ba
nop word cs:[rax + rax]
movdqa xmm0, xmmword [r13]
pmovmskb edi, xmm0
add rsi, 0xffffffffffffffc0
add r13, 0x10
cmp edi, 0xffff
je 0x1400a31a0
dec r12
mov rax, r12
inc rax
mov rcx, 0xffffffffffffffff
cmovne rcx, rax
cmp rcx, 5
mov ebp, 4
cmovae rbp, rcx
mov rax, rbp
shr rax, 0x3d
jne 0x1400a75d1
mov qword [rsp + 0x38], rdx
mov r15d, edi
not r15d
tzcnt eax, r15d
shl rax, 2
mov rcx, rsi
sub rcx, rax
mov r14d, dword [rcx - 4]
movzx eax, byte [0x14034be90]
mov rcx, qword [0x14034bdf0]
test rcx, rcx
jne 0x1400a3232
call qword [sym.imp.kernel32.dll_GetProcessHeap]
test rax, rax
je 0x1400a75d1
mov rcx, rax
mov qword [0x14034bdf0], rax
lea r8, [rbp*4]
xor edx, edx
call qword [sym.imp.kernel32.dll_HeapAlloc]
test rax, rax
je 0x1400a75d1
mov ecx, 0xfffffffe
sub ecx, edi
and ecx, r15d
mov dword [rax], r14d
mov qword [rsp + 0x90], rbp
mov qword [rsp + 0x98], rax
mov edx, 1
lea rdi, [rsp + 0x90]
jmp 0x1400a32aa
lea ebp, [rcx - 1]
and ebp, ecx
tzcnt ecx, ecx
shl rcx, 2
mov r8, rsi
sub r8, rcx
mov r14d, dword [r8 - 4]
cmp rdx, qword [rsp + 0x90]
je 0x1400a32fc
mov dword [rax + rdx*4], r14d
inc rdx
mov ecx, ebp
mov qword [rsp + 0xa0], rdx
sub r12, 1
jb 0x1400a3782
test cx, cx
jne 0x1400a3280
nop word cs:[rax + rax]
movdqa xmm0, xmmword [r13]
pmovmskb ecx, xmm0
add rsi, 0xffffffffffffffc0
add r13, 0x10
cmp ecx, 0xffff
je 0x1400a32d0
mov r8d, 0xfffffffe
sub r8d, ecx
not ecx
mov ebp, ecx
and ebp, r8d
jmp 0x1400a3285
mov r8, r12
inc r8
mov rax, 0xffffffffffffffff
cmove r8, rax
mov rcx, rdi
mov r15, rdx
call fcn.14026f570
mov rdx, r15
mov rax, qword [rsp + 0x98]
jmp 0x1400a32a1
movzx eax, byte [0x14034be90]
mov rcx, qword [0x14034bdf0]
test rcx, rcx
jne 0x1400a3354
call qword [sym.imp.kernel32.dll_GetProcessHeap]
test rax, rax
je 0x1400a75d1
mov rcx, rax
mov qword [0x14034bdf0], rax
mov r8d, 0x2000
xor edx, edx
call qword [sym.imp.kernel32.dll_HeapAlloc]
test rax, rax
je 0x1400a75d1
mov rsi, rax
movzx eax, byte [0x14034be90]
mov rcx, qword [0x14034bdf0]
test rcx, rcx
jne 0x1400a339a
call qword [sym.imp.kernel32.dll_GetProcessHeap]
test rax, rax
je 0x1400a75d1
mov rcx, rax
mov qword [0x14034bdf0], rax
mov r8d, 0x1000
xor edx, edx
call qword [sym.imp.kernel32.dll_HeapAlloc]
test rax, rax
je 0x1400a75d1
mov rdi, rax
mov rcx, qword [0x14034bdf0]
test rcx, rcx
jne 0x1400a33d9
call qword [sym.imp.kernel32.dll_GetProcessHeap]
test rax, rax
je 0x1400a75d1
mov rcx, rax
mov qword [0x14034bdf0], rax
mov r8d, 0x800
mov edx, 8
call qword [sym.imp.kernel32.dll_HeapAlloc]
test rax, rax
je 0x1400a75d1
mov rbx, rax
movzx eax, byte [0x14034be90]
mov rcx, qword [0x14034bdf0]
test rcx, rcx
jne 0x1400a3422
call qword [sym.imp.kernel32.dll_GetProcessHeap]
test rax, rax
je 0x1400a75d1
mov rcx, rax
mov qword [0x14034bdf0], rax
mov r8d, 0x800
xor edx, edx
call qword [sym.imp.kernel32.dll_HeapAlloc]
test rax, rax
je 0x1400a75d1
mov r14, rax
movzx eax, byte [0x14034be90]
mov rcx, qword [0x14034bdf0]
test rcx, rcx
jne 0x1400a3468
call qword [sym.imp.kernel32.dll_GetProcessHeap]
test rax, rax
je 0x1400a75d1
mov rcx, rax
mov qword [0x14034bdf0], rax
mov r8d, 0x800
xor edx, edx
call qword [sym.imp.kernel32.dll_HeapAlloc]
test rax, rax
je 0x1400a75d1
mov qword [rsp + 0x90], pe_nt_image_headers64
mov qword [rsp + 0x98], rsi
lea rsi, [rsp + 0xa8]
mov qword [rsp + 0xa8], pe_nt_image_headers64
mov qword [rsp + 0xb0], rdi
mov qword [rsp + 0xc0], pe_nt_image_headers64
mov qword [rsp + 0xc8], rbx
mov qword [rsp + 0xd0], pe_nt_image_headers64
lea rdi, [rsp + 0xd8]
mov qword [rsp + 0xd8], pe_nt_image_headers64
mov qword [rsp + 0xe0], r14
lea rbx, [rsp + 0xf0]
mov qword [rsp + 0xf0], pe_nt_image_headers64
mov qword [rsp + 0xf8], rax
mov dword [rsp + 0x110], 1
mov qword [rsp + 0x108], pe_nt_image_headers64
mov qword [rsp + 0xa0], 0
mov qword [rsp + 0xb8], 0
mov qword [rsp + 0xe8], 0
mov qword [rsp + 0x100], 0
xor r15d, r15d
movdqa xmm6, xmmword [0x14027cf70]
movapd xmm7, xmmword [0x14027cf80]
movsd xmm8, qword [0x14027cfe0]
movsd xmm9, qword [0x14027cfe8]
movsd xmm10, qword [0x14027cff0]
lea r14, [rsp + 0x90]
movapd xmm11, xmmword [0x14027d000]
movabs r13, 0x3f70000000000000
jmp 0x1400a35cb
inc r15
mov r12, qword [rsp + 0xe0]
mov qword [r12 + r8*8], 0
inc r8
mov qword [rsp + 0xe8], r8
cmp r15, 0x100
je 0x1400a3729
movq xmm0, r15
punpckldq xmm0, xmm6
subpd xmm0, xmm7
movapd xmm12, xmm0
unpckhpd xmm12, xmm0
addsd xmm12, xmm0
movapd xmm13, xmm12
mulsd xmm13, xmm8
mulsd xmm12, xmm9
cmp r15, 0x10
jb 0x1400a3601
movapd xmm12, xmm10
movq xmm14, qword [rsp + 0x108]
mov rdx, qword [rsp + 0xa0]
cmp rdx, qword [rsp + 0x90]
jne 0x1400a362d
mov rcx, r14
call fcn.1400c5ba0
mov rdx, qword [rsp + 0xa0]
punpckldq xmm14, xmm6
subpd xmm14, xmm7
movapd xmm0, xmm14
unpckhpd xmm0, xmm14
addsd xmm0, xmm14
divsd xmm13, xmm0
mov rax, qword [rsp + 0x98]
mov rcx, rdx
shl rcx, 5
movsd qword [rax + rcx], xmm13
movsd qword [rax + rcx + 8], xmm13
movsd qword [rax + rcx + 0x10], xmm13
movsd qword [rax + rcx + 0x18], xmm12
inc rdx
mov qword [rsp + 0xa0], rdx
mov rdx, qword [rsp + 0xb8]
cmp rdx, qword [rsp + 0xa8]
jne 0x1400a36a2
mov rcx, rsi
call fcn.140039e80
mov rdx, qword [rsp + 0xb8]
mov rax, qword [rsp + 0xb0]
mov rcx, rdx
shl rcx, 4
movupd xmmword [rax + rcx], xmm11
inc rdx
mov qword [rsp + 0xb8], rdx
mov rdx, qword [rsp + 0x100]
cmp rdx, qword [rsp + 0xf0]
jne 0x1400a36e4
mov rcx, rbx
call fcn.1400ac500
mov rdx, qword [rsp + 0x100]
mov rax, qword [rsp + 0xf8]
mov qword [rax + rdx*8], r13
inc rdx
mov qword [rsp + 0x100], rdx
mov r8, qword [rsp + 0xe8]
cmp r8, qword [rsp + 0xd8]
jne 0x1400a35a0
mov rcx, rdi
mov rdx, r8
call fcn.1400ac500
mov r8, qword [rsp + 0xe8]
jmp 0x1400a35a0
mov rsi, qword [rsp + 0x108]
movsxd rcx, dword [rsp + 0x110]
lea r10d, [rsi + 7]
test esi, esi
cmovns r10d, esi
mov r9d, ecx
sub r9d, 1
jb 0x1400a75d1
sar r10d, 3
mov rax, qword [rsp + 0x88]
shr rax, 2
mov rdx, rax
or rdx, rcx
shr rdx, 0x20
mov qword [rsp + 0x50], rax
je 0x1400a382a
xor edx, edx
div rcx
mov rbx, rax
jmp 0x1400a3830
cmp qword [rsp + 0x38], 0
je 0x1400a37ab
test rbx, rbx
je 0x1400a37ab
mov rcx, qword [0x14034bdf0]
xor edx, edx
mov r8, qword [rsp + 0x48]
call qword [sym.imp.kernel32.dll_HeapFree]
mov rdx, qword [rsp + 0xa0]
mov rax, qword [rsp + 0x90]
mov qword [rsp + 0x158], rax
mov r15, qword [rsp + 0x98]
cmp rdx, 0x15
mov qword [rsp + 0x58], rdx
jae 0x1400a387c
cmp rdx, 1
jbe 0x1400a40bc
mov r8d, 1
mov rcx, r15
call fcn.1400457f0
jmp 0x1400a40b7
xor edx, edx
test r12, r12
jne 0x1400a317a
test rdx, rdx
je 0x1400a3813
test rbx, rbx
je 0x1400a3813
mov rcx, qword [0x14034bdf0]
xor edx, edx
call qword [sym.imp.kernel32.dll_HeapFree]
mov r15d, 1
xor eax, eax
mov qword [rsp + 0x158], rax
xor edx, edx
jmp 0x1400a40bc
xor edx, edx
div ecx
mov ebx, eax
mov edi, r10d
shl edi, 6
mov rax, rsi
shr rax, 1
cmp rsi, 0xca
mov r11d, 0x64
cmovae r11, rax
mov r15d, 1
cmp r11, rbx
ja 0x1400a4858
mov rax, rbx
or rax, r11
shr rax, 0x20
je 0x1400a484e
mov rax, rbx
xor edx, edx
div r11
mov r15, rax
jmp 0x1400a4858
movzx eax, byte [0x14034be90]
mov rcx, qword [0x14034bdf0]
test rcx, rcx
jne 0x1400a38ad
call qword [sym.imp.kernel32.dll_GetProcessHeap]
test rax, rax
je 0x1400a75d1
mov rcx, rax
mov qword [0x14034bdf0], rax
mov rdx, qword [rsp + 0x58]
lea r8, [rdx + rdx]
movabs rax, 0x8000000000000000
add rax, 0xfffffffffffffffc
and r8, rax
xor edx, edx
call qword [sym.imp.kernel32.dll_HeapAlloc]
test rax, rax
je 0x1400a75d1
mov r14, rax
movzx eax, byte [0x14034be90]
mov rcx, qword [0x14034bdf0]
test rcx, rcx
jne 0x1400a3902
call qword [sym.imp.kernel32.dll_GetProcessHeap]
test rax, rax
je 0x1400a75d1
mov rcx, rax
mov qword [0x14034bdf0], rax
mov r8d, pe_nt_image_headers64
xor edx, edx
call qword [sym.imp.kernel32.dll_HeapAlloc]
test rax, rax
je 0x1400a75d1
lea rcx, [r15 - 0x10]
mov qword [rsp + 0x198], rcx
lea rcx, [r15 + 0x10]
mov qword [rsp + 0x190], rcx
lea rcx, [r15 - 4]
mov qword [rsp + 0x80], rcx
mov ecx, 0x10
mov qword [rsp + 0x150], rcx
xor ebp, ebp
xor r13d, r13d
mov r10, qword [rsp + 0x58]
mov qword [rsp + 0x50], r15
jmp 0x1400a3977
mov r13d, 1
mov rbp, qword [rsp + 0x120]
cmp rbp, r10
jae 0x1400a4094
mov r11, r10
sub r11, rbp
lea rcx, [r15 + rbp*4]
cmp r11, 2
jae 0x1400a3a00
mov r8, r11
lea r11, [r8 + rbp]
mov rdi, r11
sub rdi, rbp
jb 0x1400a75d1
cmp r11, r10
ja 0x1400a75d1
jae 0x1400a3ad0
cmp r8, 0xa
jae 0x1400a3ad0
lea rdi, [rbp + 0xa]
cmp rdi, r10
cmovae rdi, r10
mov qword [rsp + 0x120], rdi
sub rdi, rbp
jb 0x1400a75d1
mov rsi, rax
cmp r8, 1
adc r8, 0
mov rdx, rdi
call fcn.1400457f0
mov r10, qword [rsp + 0x58]
mov rax, rsi
cmp r13, qword [rsp + 0x150]
je 0x1400a3ae6
jmp 0x1400a3b6e
movzx edx, byte [rcx + 4]
cmp dl, byte [rcx]
setb r8b
jne 0x1400a3ee0
movzx r8d, byte [r15 + rbp*4 + 5]
cmp r8b, byte [r15 + rbp*4 + 1]
setb r8b
jne 0x1400a3ee0
movzx r8d, byte [r15 + rbp*4 + 6]
cmp r8b, byte [r15 + rbp*4 + 2]
setb r8b
jne 0x1400a3ee0
movzx r8d, byte [r15 + rbp*4 + 7]
cmp r8b, byte [r15 + rbp*4 + 3]
jb 0x1400a3ee9
nop dword [rax + rax]
mov r8d, 2
cmp r11, 3
jb 0x1400a398a
mov r9d, edx
movzx edx, byte [rcx + r8*4]
cmp dl, r9b
setb r9b
jne 0x1400a3ab0
movzx r9d, byte [rcx + r8*4 + 1]
cmp r9b, byte [rcx + r8*4 - 3]
setb r9b
jne 0x1400a3ab0
movzx r9d, byte [rcx + r8*4 + 2]
cmp r9b, byte [rcx + r8*4 - 2]
setb r9b
jne 0x1400a3ab0
movzx r9d, byte [rcx + r8*4 + 3]
cmp r9b, byte [rcx + r8*4 - 1]
jae 0x1400a3ab9
jmp 0x1400a398a
test r9b, r9b
jne 0x1400a398a
inc r8
cmp r11, r8
jne 0x1400a3a60
jmp 0x1400a3987
mov qword [rsp + 0x120], r11
cmp r13, qword [rsp + 0x150]
jne 0x1400a3b6e
mov rsi, rax
movzx eax, byte [0x14034be90]
mov rax, qword [0x14034bdf0]
test rax, rax
jne 0x1400a3b12
call qword [sym.imp.kernel32.dll_GetProcessHeap]
test rax, rax
je 0x1400a75d1
mov qword [0x14034bdf0], rax
mov r8, r13
shl r8, 5
mov rcx, rax
xor edx, edx
call qword [sym.imp.kernel32.dll_HeapAlloc]
test rax, rax
je 0x1400a75d1
mov rbx, r13
mov r13, rax
lea rax, [rbx + rbx]
mov qword [rsp + 0x150], rax
mov r8, rbx
shl r8, 4
mov rcx, r13
mov rdx, rsi
call sub.VCRUNTIME140.dll_memcpy
mov rcx, qword [0x14034bdf0]
xor edx, edx
mov r8, rsi
call qword [sym.imp.kernel32.dll_HeapFree]
mov rax, r13
mov r10, qword [rsp + 0x58]
mov r13, rbx
mov rcx, r13
shl rcx, 4
mov qword [rax + rcx], rdi
mov qword [rax + rcx + 8], rbp
inc r13
mov rcx, r13
cmp r13, 2
mov qword [rsp + 0x128], rax
jae 0x1400a3c01
jmp 0x1400a3966
mov rbp, rdi
mov rdx, r14
sub r8, rdx
mov rcx, rbp
call sub.VCRUNTIME140.dll_memcpy
mov rax, qword [rsp + 0x70]
add rax, qword [rsp + 0x38]
mov qword [rbx], rax
mov rax, qword [rsp + 0x78]
mov qword [rbx + 8], rax
lea rdx, [rsi + 0x10]
mov rax, qword [rsp + 0x40]
not rax
add r12, rax
shl r12, 4
mov rcx, rsi
mov r8, r12
call sub.VCRUNTIME140.dll_memmove
mov rcx, qword [rsp + 0x48]
cmp rcx, 1
mov r10, qword [rsp + 0x58]
mov rax, qword [rsp + 0x128]
jbe 0x1400a3960
mov r13, rcx
lea rdi, [rcx - 1]
mov rcx, rdi
shl rcx, 4
mov r11, qword [rax + rcx]
mov rcx, qword [rax + rcx + 8]
add rcx, r11
cmp rcx, r10
je 0x1400a3c70
mov rdx, r13
shl rdx, 4
mov r8, qword [rdx + rax - 0x20]
cmp r8, r11
jbe 0x1400a3c70
cmp r13, 2
jbe 0x1400a3f95
lea rbp, [r13 - 3]
mov rcx, rbp
shl rcx, 4
mov rcx, qword [rax + rcx]
lea r9, [r8 + r11]
cmp rcx, r9
jbe 0x1400a3c85
cmp r13, 3
jbe 0x1400a4089
add r8, rcx
cmp qword [rdx + rax - 0x40], r8
jbe 0x1400a3c85
jmp 0x1400a3966
cmp r13, 3
jb 0x1400a3c8a
lea rbp, [r13 - 3]
mov rcx, rbp
shl rcx, 4
mov rcx, qword [rax + rcx]
cmp rcx, r11
jb 0x1400a3c8e
lea rbp, [r13 - 2]
cmp r13, rbp
jbe 0x1400a75d1
lea rbx, [rbp + 1]
cmp r13, rbx
jbe 0x1400a75d1
mov r12, r14
mov rsi, r13
mov rcx, rbp
shl rcx, 4
mov rdx, qword [rax + rcx + 8]
shl rbx, 4
mov r8, qword [rax + rbx]
mov r13, qword [rax + rbx + 8]
add r13, r8
mov r14, r13
sub r14, rdx
jb 0x1400a75d1
mov qword [rsp + 0x40], rbp
mov qword [rsp + 0x48], rdi
cmp r13, r10
ja 0x1400a75d1
mov qword [rsp + 0x70], r8
lea r8, [rax + rcx]
mov qword [rsp + 0x60], r8
mov rcx, qword [rax + rcx]
add rbx, rax
mov qword [rsp + 0x78], rdx
lea rbp, [r15 + rdx*4]
lea rdi, [rcx*4]
add rdi, rbp
mov r15, r14
sub r15, rcx
cmp r15, rcx
mov qword [rsp + 0x38], rcx
jae 0x1400a3df0
lea r8, [r15*4]
mov r14, r12
mov rcx, r12
mov rdx, rdi
call sub.VCRUNTIME140.dll_memcpy
lea r8, [r12 + r15*4]
cmp qword [rsp + 0x38], 0
jle 0x1400a3eb0
test r15, r15
jle 0x1400a3eb0
mov rax, qword [rsp + 0x80]
lea rax, [rax + r13*4]
mov r15, qword [rsp + 0x50]
mov r12, rsi
mov rsi, qword [rsp + 0x60]
nop word [rax + rax]
movzx ecx, byte [r8 - 4]
cmp cl, byte [rdi - 4]
setb cl
jne 0x1400a3db0
movzx ecx, byte [r8 - 3]
cmp cl, byte [rdi - 3]
setb cl
jne 0x1400a3db0
movzx ecx, byte [r8 - 2]
cmp cl, byte [rdi - 2]
setb cl
jne 0x1400a3db0
movzx ecx, byte [r8 - 1]
cmp cl, byte [rdi - 1]
setb cl
nop word cs:[rax + rax]
movzx ecx, cl
lea rdx, [rcx*4]
sub rdi, rdx
lea r8, [r8 + rcx*4]
add r8, 0xfffffffffffffffc
test cl, cl
mov rcx, r8
cmovne rcx, rdi
mov ecx, dword [rcx]
mov dword [rax], ecx
cmp rdi, rbp
jbe 0x1400a3ba0
add rax, 0xfffffffffffffffc
cmp r8, r14
ja 0x1400a3d70
jmp 0x1400a3ba0
lea r8, [rcx*4]
mov r15, r12
mov rcx, r12
mov rdx, rbp
call sub.VCRUNTIME140.dll_memcpy
mov rax, qword [rsp + 0x38]
lea r8, [r12 + rax*4]
test rax, rax
jle 0x1400a3eb8
cmp r14, rax
mov r15, qword [rsp + 0x50]
jle 0x1400a3ec5
lea rax, [r15 + r13*4]
mov r14, r12
mov rdx, r12
mov r12, rsi
mov rsi, qword [rsp + 0x60]
nop dword [rax + rax]
movzx ecx, byte [rdi]
cmp cl, byte [rdx]
setb cl
jne 0x1400a3e70
movzx ecx, byte [rdi + 1]
cmp cl, byte [rdx + 1]
setb cl
jne 0x1400a3e70
movzx ecx, byte [rdi + 2]
cmp cl, byte [rdx + 2]
setb cl
jne 0x1400a3e70
movzx ecx, byte [rdi + 3]
cmp cl, byte [rdx + 3]
setb cl
nop dword [rax]
test cl, cl
mov r9, rdx
cmovne r9, rdi
mov r9d, dword [r9]
mov dword [rbp], r9d
add rbp, 4
mov r9d, ecx
xor r9b, 1
movzx r9d, r9b
lea rdx, [rdx + r9*4]
cmp rdx, r8
jae 0x1400a3ba6
movzx ecx, cl
lea rdi, [rdi + rcx*4]
cmp rdi, rax
jb 0x1400a3e40
jmp 0x1400a3ba6
mov rbp, rdi
mov rdx, r14
jmp 0x1400a3ebe
mov r14, r12
mov rdx, r12
mov r15, qword [rsp + 0x50]
jmp 0x1400a3ecb
mov r14, r12
mov rdx, r12
mov r12, rsi
mov rsi, qword [rsp + 0x60]
jmp 0x1400a3ba6
test r8b, r8b
je 0x1400a3a50
mov r8d, 2
cmp r11, 3
jb 0x1400a3f60
nop word cs:[rax + rax]
mov r9d, edx
movzx edx, byte [rcx + r8*4]
cmp dl, r9b
setb r9b
jne 0x1400a3f50
movzx r9d, byte [rcx + r8*4 + 1]
cmp r9b, byte [rcx + r8*4 - 3]
setb r9b
jne 0x1400a3f50
movzx r9d, byte [rcx + r8*4 + 2]
cmp r9b, byte [rcx + r8*4 - 2]
setb r9b
jne 0x1400a3f50
movzx r9d, byte [rcx + r8*4 + 3]
cmp r9b, byte [rcx + r8*4 - 1]
jb 0x1400a3f55
jmp 0x1400a3f60
test r9b, r9b
je 0x1400a3f60
inc r8
cmp r11, r8
jne 0x1400a3f00
mov r8, r11
mov r11, r8
add r11, rbp
jb 0x1400a75d1
cmp r11, r10
ja 0x1400a75d1
cmp r8, 2
jb 0x1400a398e
mov rdi, rax
mov rax, r8
shr rax, 1
cmp r8, 0x10
jae 0x1400a3fa0
xor edx, edx
jmp 0x1400a4036
mov r13d, 2
jmp 0x1400a3966
movabs rdx, 0x8000000000000000
add rdx, 0xfffffffffffffff8
and rdx, rax
mov r9, qword [rsp + 0x198]
mov rsi, r11
lea r9, [r9 + r11*4]
mov r10, qword [rsp + 0x190]
lea r10, [r10 + rbp*4]
xor r11d, r11d
nop
movdqu xmm0, xmmword [r10 + r11*4 - 0x10]
movdqu xmm1, xmmword [r10 + r11*4]
movdqu xmm2, xmmword [r9 - 0x10]
movdqu xmm3, xmmword [r9]
pshufd xmm3, xmm3, 0x1b
pshufd xmm2, xmm2, 0x1b
movdqu xmmword [r10 + r11*4 - 0x10], xmm3
movdqu xmmword [r10 + r11*4], xmm2
pshufd xmm0, xmm0, 0x1b
movdqu xmmword [r9], xmm0
pshufd xmm0, xmm1, 0x1b
movdqu xmmword [r9 - 0x10], xmm0
add r11, 8
add r9, 0xffffffffffffffe0
cmp rdx, r11
jne 0x1400a3fd0
cmp rax, rdx
mov r11, rsi
jne 0x1400a4036
mov r10, qword [rsp + 0x58]
mov rax, rdi
jmp 0x1400a398e
neg rax
mov r9, rdx
neg r9
shl rdx, 2
lea rdx, [rdx + rbp*4]
add rdx, r15
mov r10, qword [rsp + 0x80]
mov rbx, r11
lea r10, [r10 + r11*4]
nop dword [rax]
mov r11d, dword [rdx]
mov esi, dword [r10 + r9*4]
mov dword [rdx], esi
mov dword [r10 + r9*4], r11d
dec r9
add rdx, 4
cmp rax, r9
jne 0x1400a4060
mov r10, qword [rsp + 0x58]
mov rax, rdi
mov r11, rbx
jmp 0x1400a398e
mov r13d, 3
jmp 0x1400a3966
mov rcx, qword [0x14034bdf0]
xor edx, edx
mov r8, rax
mov rsi, qword [sym.imp.kernel32.dll_HeapFree]
call rsi
mov rcx, qword [0x14034bdf0]
xor edx, edx
mov r8, r14
call rsi
mov rdx, qword [rsp + 0x58]
test r15, r15
lea rsi, [rdx + rdx*2]
mov rdi, rsi
cmove rdi, r15
test rdi, rdi
mov r14, rdx
je 0x1400a4119
js 0x1400a75d1
movzx eax, byte [0x14034be90]
mov rcx, qword [0x14034bdf0]
test rcx, rcx
jne 0x1400a4104
call qword [sym.imp.kernel32.dll_GetProcessHeap]
test rax, rax
je 0x1400a75d1
mov rcx, rax
mov qword [0x14034bdf0], rax
xor edx, edx
mov r8, rdi
call qword [sym.imp.kernel32.dll_HeapAlloc]
test rax, rax
jne 0x1400a411e
jmp 0x1400a75d1
mov eax, 1
test r15, r15
mov qword [rsp + 0x90], rdi
mov qword [rsp + 0x98], rax
mov qword [rsp + 0xa0], 0
cmove rsi, r15
cmp rdi, rsi
jb 0x1400a63c1
xor esi, esi
mov r9, r14
test r15, r15
je 0x1400a41cd
test r9, r9
je 0x1400a41cd
cmp r9, 1
jne 0x1400a4163
xor ecx, ecx
jmp 0x1400a41b3
mov rdx, r9
and rdx, 0xfffffffffffffffe
xor ecx, ecx
nop dword [rax]
movzx r8d, byte [r15 + rcx*4]
movzx ebx, word [r15 + rcx*4 + 1]
mov byte [rax + rsi], r8b
mov byte [rax + rsi + 1], bl
mov byte [rax + rsi + 2], bh
movzx r8d, byte [r15 + rcx*4 + 4]
movzx ebx, word [r15 + rcx*4 + 5]
mov byte [rax + rsi + 3], r8b
mov byte [rax + rsi + 4], bl
mov byte [rax + rsi + 5], bh
add rsi, 6
add rcx, 2
cmp rdx, rcx
jne 0x1400a4170
test r9b, 1
je 0x1400a41cd
movzx edx, byte [r15 + rcx*4]
movzx ecx, word [r15 + rcx*4 + 1]
mov byte [rax + rsi], dl
mov byte [rax + rsi + 1], cl
mov byte [rax + rsi + 2], ch
add rsi, 3
mov rax, qword [rsp + 0x90]
mov qword [rsp + 0x80], rax
mov rax, qword [rsp + 0x98]
mov qword [rsp + 0x120], rax
mov eax, dword [0x14034be94]
mov rcx, qword gs:[0x58]
mov rax, qword [rcx + rax*8]
cmp byte [rax + 0x78], 0
jne 0x1400a4213
xor ecx, ecx
call fcn.1401856c0
mov r9, r14
mov eax, dword [0x14034be94]
mov rcx, qword gs:[0x58]
mov rax, qword [rcx + rax*8]
mov rcx, qword [rax + 0x80]
mov rdx, qword [rax + 0x88]
lea r8, [rcx + 1]
mov qword [rax + 0x80], r8
movdqa xmmword [rsp + 0x90], xmm6
movapd xmmword [rsp + 0xa0], xmm7
mov qword [rsp + 0xb0], rcx
mov qword [rsp + 0xb8], rdx
cmp r9, 0x100
mov eax, pe_nt_image_headers64
cmovb rax, r9
mov qword [rsp + 0x70], rax
test rax, rax
jne 0x1400a63f2
cmp qword [rsp + 0x158], 0
je 0x1400a429c
mov rcx, qword [0x14034bdf0]
xor edx, edx
mov r8, r15
call qword [sym.imp.kernel32.dll_HeapFree]
mov r14, qword [rsp + 0x90]
mov rdi, qword [rsp + 0x98]
mov rax, qword [rsp + 0xa8]
mov qword [rsp + 0x48], rax
mov rbx, qword [rsp + 0xb0]
mov rax, qword [rsp + 0xb8]
mov qword [rsp + 0x38], rax
mov rax, qword [rsp + 0x88]
shr rax, 2
cmp qword [rsp + 0x140], 0
mov qword [rsp + 0x50], rax
je 0x1400a45e4
movzx eax, byte [0x14034be90]
mov rcx, qword [0x14034bdf0]
test rcx, rcx
jne 0x1400a431a
call qword [sym.imp.kernel32.dll_GetProcessHeap]
test rax, rax
je 0x1400a75d1
mov rcx, rax
mov qword [0x14034bdf0], rax
xor edx, edx
mov r8, qword [rsp + 0x50]
call qword [sym.imp.kernel32.dll_HeapAlloc]
test rax, rax
je 0x1400a75d1
mov r15, rax
mov qword [rsp + 0x150], rsi
mov rax, qword [rsp + 0x88]
add rax, 0xfffffffffffffffc
shr rax, 2
mov qword [rsp + 0x58], rax
mov rcx, rbx
movabs rax, 0x736f6d6570736575
xor rcx, rax
mov rdx, qword [rsp + 0x38]
movabs rax, 0x646f72616e646f6d
xor rdx, rax
mov qword [rsp + 0x140], rbx
add rcx, rdx
rol rdx, 0xd
movabs rax, 0x6c7967656e657261
xor rbx, rax
mov qword [rsp + 0x70], rbx
xor rdx, rcx
rol rcx, 0x20
mov qword [rsp + 0x40], rcx
mov qword [rsp + 0x78], rdx
rol rdx, 0x11
mov qword [rsp + 0x60], rdx
lea r10, [r14 - 5]
lea rax, [r14 - 1]
mov qword [rsp + 0x128], rax
xor r13d, r13d
pcmpeqd xmm0, xmm0
mov r8, qword [rsp + 0x138]
jmp 0x1400a43f6
mov rax, qword [rsp + 0x128]
movzx eax, byte [rax + r15]
mov r15, rsi
mov byte [rsi + r13], al
lea r12, [r13 + 1]
cmp r13, qword [rsp + 0x58]
mov r13, r12
je 0x1400a45d2
cmp qword [rsp + 0x48], 0
je 0x1400a75d1
mov rsi, r15
movzx r12d, byte [r8]
movzx ebx, byte [r8 + 1]
movzx eax, byte [r8 + 2]
movzx r11d, byte [r8 + 3]
mov rcx, r11
shl rcx, 0x18
mov rdx, rax
shl rdx, 0x10
or rdx, rcx
mov rcx, rbx
shl rcx, 8
or rcx, rdx
or rcx, r12
movabs rdx, 0x400000000000000
or rcx, rdx
mov rbp, qword [rsp + 0x38]
movabs rdx, 0x7465646279746573
xor rbp, rdx
xor rbp, rcx
mov rdx, qword [rsp + 0x70]
add rdx, rbp
rol rbp, 0x10
xor rbp, rdx
mov r9, qword [rsp + 0x40]
lea r15, [r9 + rbp]
rol rbp, 0x15
add rdx, qword [rsp + 0x78]
mov r9, rdx
xor r9, qword [rsp + 0x60]
rol rdx, 0x20
xor rcx, r15
add rcx, r9
rol r9, 0xd
xor rbp, r15
xor r9, rcx
rol rcx, 0x20
xor rdx, 0xff
add rdx, rbp
rol rbp, 0x10
xor rbp, rdx
add rcx, rbp
rol rbp, 0x15
add rdx, r9
rol r9, 0x11
xor r9, rdx
rol rdx, 0x20
xor rbp, rcx
add rcx, r9
rol r9, 0xd
xor r9, rcx
rol rcx, 0x20
add rdx, rbp
rol rbp, 0x10
xor rbp, rdx
add rcx, rbp
rol rbp, 0x15
add rdx, r9
rol r9, 0x11
xor r9, rdx
rol rdx, 0x20
xor rbp, rcx
add rcx, r9
rol r9, 0xd
xor r9, rcx
add rdx, rbp
rol rbp, 0x10
xor rbp, rdx
add rdx, r9
rol r9, 0x11
mov rcx, rdx
rol rcx, 0x20
xor rcx, r9
rol rbp, 0x15
xor rcx, rbp
add r8, 4
xor rcx, rdx
mov rdx, rcx
shr rdx, 0x39
movd xmm1, edx
punpcklbw xmm1, xmm1
pshuflw xmm1, xmm1, 0
pshufd xmm1, xmm1, 0
xor edx, edx
and rcx, rdi
movdqu xmm2, xmmword [r14 + rcx]
movdqa xmm3, xmm2
pcmpeqb xmm3, xmm1
pmovmskb r9d, xmm3
nop word cs:[rax + rax]
test r9w, r9w
je 0x1400a45b0
tzcnt r15d, r9d
lea ebp, [r9 - 1]
and ebp, r9d
mov r9d, ebp
add r15, rcx
and r15, rdi
neg r15
lea r15, [r15 + r15*4]
cmp r12b, byte [r10 + r15]
jne 0x1400a4560
lea rbp, [r10 + r15]
cmp bl, byte [rbp + 1]
jne 0x1400a4560
cmp al, byte [rbp + 2]
jne 0x1400a4560
cmp r11b, byte [rbp + 3]
jne 0x1400a4560
jmp 0x1400a43d0
pcmpeqb xmm2, xmm0
pmovmskb r9d, xmm2
test r9d, r9d
jne 0x1400a75d1
add rcx, rdx
add rcx, 0x10
add rdx, 0x10
jmp 0x1400a4540
mov rsi, qword [rsp + 0x150]
mov rbx, qword [rsp + 0x140]
jmp 0x1400a45ed
mov r15d, 1
xor r12d, r12d
mov qword [rsp + 0x40], rax
mov rax, qword [rsp + 0x148]
and al, 1
mov qword [rsp + 0x148], rax
je 0x1400a4810
cmp qword [rsp + 0x48], 0
je 0x1400a75d1
mov r13, r15
movabs r8, 0x736f6d6570736575
xor r8, rbx
movabs r10, 0x646f72616e646f6d
mov r11, qword [rsp + 0x38]
xor r10, r11
movabs r9, 0x6c7967656e657261
xor r9, rbx
mov edx, dword [rsp + 0x134]
mov eax, edx
movabs rcx, 0x400000000000000
or rax, rcx
add r8, r10
rol r10, 0xd
xor r11, rax
xor r10, r8
rol r8, 0x20
movabs rcx, 0x7465646279746573
xor r11, rcx
add r9, r11
rol r11, 0x10
xor r11, r9
add r8, r11
rol r11, 0x15
add r9, r10
rol r10, 0x11
xor r11, r8
xor r10, r9
rol r9, 0x20
xor r8, rax
add r8, r10
rol r10, 0xd
xor r10, r8
rol r8, 0x20
xor r9, 0xff
add r9, r11
rol r11, 0x10
xor r11, r9
add r8, r11
rol r11, 0x15
add r9, r10
rol r10, 0x11
xor r10, r9
rol r9, 0x20
xor r11, r8
add r8, r10
rol r10, 0xd
xor r10, r8
rol r8, 0x20
mov eax, edx
add r9, r11
rol r11, 0x10
xor r11, r9
add r8, r11
rol r11, 0x15
shr eax, 8
add r9, r10
rol r10, 0x11
mov ecx, edx
xor r10, r9
rol r9, 0x20
xor r11, r8
add r8, r10
rol r10, 0xd
shr ecx, 0x10
add r9, r11
rol r11, 0x10
xor r11, r9
rol r11, 0x15
xor r10, r8
add r9, r10
rol r10, 0x11
shr edx, 0x18
mov r8, r9
rol r8, 0x20
xor r8, r10
xor r8, r11
xor r8, r9
mov r9, r8
shr r9, 0x39
movd xmm0, r9d
punpcklbw xmm0, xmm0
pshuflw xmm0, xmm0, 0
pshufd xmm0, xmm0, 0
lea r9, [r14 - 5]
xor r10d, r10d
pcmpeqd xmm1, xmm1
nop word cs:[rax + rax]
and r8, rdi
movdqu xmm2, xmmword [r14 + r8]
movdqa xmm3, xmm2
pcmpeqb xmm3, xmm0
pmovmskb r11d, xmm3
nop word cs:[rax + rax]
test r11w, r11w
je 0x1400a47e0
tzcnt ebx, r11d
lea ebp, [r11 - 1]
and ebp, r11d
mov r11d, ebp
add rbx, r8
and rbx, rdi
neg rbx
lea rbx, [rbx + rbx*4]
mov ebp, dword [rsp + 0x134]
cmp byte [r9 + rbx], bpl
jne 0x1400a4790
lea r15, [r9 + rbx]
cmp byte [r15 + 1], al
jne 0x1400a4790
cmp byte [r15 + 2], cl
jne 0x1400a4790
cmp byte [r15 + 3], dl
jne 0x1400a4790
jmp 0x1400a4802
pcmpeqb xmm2, xmm1
pmovmskb r11d, xmm2
test r11d, r11d
jne 0x1400a75d1
add r8, r10
add r8, 0x10
add r10, 0x10
jmp 0x1400a4770
movzx eax, byte [r14 + rbx - 1]
mov qword [rsp + 0x40], rax
mov r15, r13
test rdi, rdi
je 0x1400a58b7
lea rax, [rdi + 1]
mov ecx, 5
mul rcx
add rax, 0xf
and rax, 0xfffffffffffffff0
add rdi, rax
cmp rdi, 0xffffffffffffffef
je 0x1400a58b7
sub r14, rax
mov rcx, qword [0x14034bdf0]
xor edx, edx
mov r8, r14
jmp 0x1400a58b1
mov eax, ebx
xor edx, edx
div r11d
mov r15d, eax
and r10d, 0x3ffffff
xor eax, eax
cmp edi, 0x80
cmovge eax, r10d
mov qword [rsp + 0x38], rax
movabs rax, 0xad671e44bed87f3b
mov r10, qword [rsp + 0x50]
imul rax, r10
movabs rdx, 0x8355ace3c897db
cmp rax, rdx
mov qword [rsp + 0x58], rdi
jbe 0x1400a48aa
lea rax, [0x14027f748]
cmp qword [rsp + 0x50], rcx
jb 0x1400a491a
jmp 0x1400a4a68
movabs rax, 0xe994983e90f1ec3
imul rax, r10
movabs rdx, 0x85797b917765ab
cmp rax, rdx
jbe 0x1400a48db
lea rax, [0x14027f750]
cmp qword [rsp + 0x50], rcx
jae 0x1400a4a68
jmp 0x1400a491a
movabs rax, 0x64afaa4f437b2e0f
imul rax, r10
ror rax, 1
movabs rdx, 0x891ac73ae9819c
xor r10d, r10d
cmp rax, rdx
setb r10b
lea rax, [0x14027f748]
lea rax, [rax + r10*8]
add rax, 0x10
cmp qword [rsp + 0x50], rcx
jae 0x1400a4a68
test rsi, rsi
je 0x1400a51da
mov r14, qword [rsp + 0x98]
mov r15, qword [rsp + 0xa0]
mov rbx, qword [rsp + 0xb8]
mov rdi, qword [rsp + 0xb0]
cmp r15, rbx
jbe 0x1400a5211
mov r12d, 0xc
xor r13d, r13d
movsd xmm6, qword [0x14027d048]
movsd xmm7, qword [0x14027d050]
xor ebp, ebp
jmp 0x1400a4984
inc r13
mov dword [rdi + r12], eax
add r12, 0x10
cmp rsi, r13
je 0x1400a532c
cmp rbx, r13
je 0x1400a75d1
movsd xmm0, qword [r14 + r12*2 - 8]
call sub.api_ms_win_crt_math_l1_1_0.dll_round
ucomisd xmm0, xmm0
maxsd xmm0, xmm6
minsd xmm0, xmm7
cvttsd2si eax, xmm0
cmovp eax, ebp
cmp eax, 0xff
jl 0x1400a49b8
mov eax, 0xff
test eax, eax
jg 0x1400a49be
xor eax, eax
mov dword [rdi + r12 - 4], eax
movsd xmm0, qword [r14 + r12*2 - 0x10]
call sub.api_ms_win_crt_math_l1_1_0.dll_round
ucomisd xmm0, xmm0
maxsd xmm0, xmm6
minsd xmm0, xmm7
cvttsd2si eax, xmm0
cmovp eax, ebp
cmp eax, 0xff
jl 0x1400a49ee
mov eax, 0xff
test eax, eax
jg 0x1400a49f4
xor eax, eax
mov dword [rdi + r12 - 8], eax
movsd xmm0, qword [r14 + r12*2 - 0x18]
call sub.api_ms_win_crt_math_l1_1_0.dll_round
ucomisd xmm0, xmm0
maxsd xmm0, xmm6
minsd xmm0, xmm7
cvttsd2si eax, xmm0
cmovp eax, ebp
cmp eax, 0xff
jl 0x1400a4a24
mov eax, 0xff
test eax, eax
jg 0x1400a4a2a
xor eax, eax
mov dword [rdi + r12 - 0xc], eax
movsd xmm0, qword [r14 + r12*2]
call sub.api_ms_win_crt_math_l1_1_0.dll_round
ucomisd xmm0, xmm0
maxsd xmm0, xmm6
minsd xmm0, xmm7
cvttsd2si eax, xmm0
cmovp eax, ebp
cmp eax, 0xff
jl 0x1400a4a59
mov eax, 0xff
test eax, eax
jg 0x1400a4970
xor eax, eax
jmp 0x1400a4970
movsxd rcx, r9d
imul rcx, rcx, 0x55555556
mov rdx, rcx
shr rdx, 0x3f
shr rcx, 0x20
add ecx, edx
add ecx, 0x1e
mov dword [rsp + 0x80], ecx
mov r14, qword [rsp + 0x98]
mov r13, qword [rsp + 0xa0]
mov rbp, qword [rsp + 0x100]
mov rcx, qword [rsp + 0xf8]
cmp rbx, 1
adc rbx, 0
lea rdx, [r14 + 0x18]
mov qword [rsp + 0x128], rdx
mov rax, qword [rax]
add rax, qword [rsp + 0x50]
mov qword [rsp + 0x60], rax
mov dword [rsp + 0x40], 0x400
pxor xmm0, xmm0
movsd xmm1, qword [0x14027d038]
movapd xmm4, xmmword [0x14027d020]
movapd xmm5, xmmword [0x14027d020]
movsd xmm6, qword [0x14027d030]
xor r11d, r11d
xor r9d, r9d
mov qword [rsp + 0x78], rbx
mov qword [rsp + 0x70], r15
jmp 0x1400a4b78
mov r10d, eax
mov rdi, r11
mov r11d, dword [rsp + 0x40]
mov eax, r11d
cdq
idiv r10d
sub r11d, eax
mov dword [rsp + 0x40], r11d
mov r11, rdi
movsxd rax, dword [rsp + 0x58]
imul r10, rax, 0x77777777
shr r10, 0x20
sub r10d, eax
mov edx, r10d
shr edx, 0x1f
sar r10d, 4
add r10d, edx
add r10d, eax
mov eax, r10d
sar eax, 6
mov qword [rsp + 0x58], r10
cmp r10d, 0x80
mov edx, 0
cmovl eax, edx
mov qword [rsp + 0x38], rax
cmp r11, rbx
je 0x1400a491a
lea rax, [r9*4]
mov rdx, qword [rsp + 0x88]
sub rdx, rax
jb 0x1400a75d1
cmp rdx, 3
jbe 0x1400a75d1
mov r10, qword [rsp + 0x138]
movzx edx, word [r10 + rax]
movd xmm2, edx
punpcklbw xmm2, xmm0
punpcklwd xmm2, xmm0
cvtdq2pd xmm7, xmm2
movzx eax, word [r10 + rax + 2]
movd xmm2, eax
punpcklbw xmm2, xmm0
punpcklwd xmm2, xmm0
cvtdq2pd xmm8, xmm2
test rsi, rsi
mov qword [rsp + 0x48], r11
je 0x1400a4d10
movapd xmm9, xmm8
unpcklpd xmm9, xmm7
movapd xmm10, xmm7
unpckhpd xmm10, xmm7
movapd xmm11, xmm8
unpckhpd xmm11, xmm8
mov edx, 0xffffffff
cmp r8, r13
jbe 0x1400a4d20
mov r10, qword [rsp + 0x128]
movsd xmm12, qword [0x14027d010]
movapd xmm13, xmm12
mov eax, 0xffffffff
xor r11d, r11d
nop word [rax + rax]
cmp r13, r11
je 0x1400a75d1
movsd xmm14, qword [r12 + r11*8]
movsd xmm2, qword [r10 - 8]
movhpd xmm2, qword [r10 - 0x18]
subpd xmm2, xmm9
andpd xmm2, xmm4
pshufd xmm15, xmm2, 0xee
addsd xmm15, xmm2
ucomisd xmm13, xmm15
ja 0x1400a4c77
movapd xmm2, xmm12
addsd xmm2, xmm14
ucomisd xmm2, xmm15
jbe 0x1400a4cca
movsd xmm3, qword [r10 - 0x10]
movsd xmm2, qword [r10]
subsd xmm3, xmm10
andpd xmm3, xmm5
addsd xmm15, xmm3
subsd xmm2, xmm11
andpd xmm2, xmm5
addsd xmm2, xmm15
ucomisd xmm13, xmm2
cmova edx, r11d
movapd xmm15, xmm2
minsd xmm15, xmm13
subsd xmm2, xmm14
ucomisd xmm12, xmm2
jbe 0x1400a4cc5
mov eax, r11d
movapd xmm12, xmm2
movapd xmm13, xmm15
cmp rbp, r11
je 0x1400a75d1
movsd xmm2, qword [rcx + r11*8]
movapd xmm3, xmm2
mulsd xmm3, xmm6
addsd xmm3, xmm2
movsd qword [rcx + r11*8], xmm3
addsd xmm3, qword [r12 + r11*8]
movsd qword [r12 + r11*8], xmm3
lea rdi, [r11 + 1]
add r10, 0x20
mov r11, rdi
cmp rsi, rdi
jne 0x1400a4c30
jmp 0x1400a4e30
mov eax, 0xffffffff
mov edx, 0xffffffff
jmp 0x1400a4e30
cmp r8, rbp
jbe 0x1400a50bc
mov r10, qword [rsp + 0x128]
movsd xmm12, qword [0x14027d010]
movapd xmm13, xmm12
mov eax, 0xffffffff
xor r11d, r11d
nop word [rax + rax]
movsd xmm14, qword [r12 + r11*8]
movsd xmm2, qword [r10 - 8]
movhpd xmm2, qword [r10 - 0x18]
subpd xmm2, xmm9
andpd xmm2, xmm4
pshufd xmm15, xmm2, 0xee
addsd xmm15, xmm2
ucomisd xmm13, xmm15
ja 0x1400a4d8e
movapd xmm2, xmm12
addsd xmm2, xmm14
ucomisd xmm2, xmm15
jbe 0x1400a4de1
movsd xmm3, qword [r10 - 0x10]
movsd xmm2, qword [r10]
subsd xmm3, xmm10
andpd xmm3, xmm5
addsd xmm15, xmm3
subsd xmm2, xmm11
andpd xmm2, xmm5
addsd xmm2, xmm15
ucomisd xmm13, xmm2
cmova edx, r11d
movapd xmm15, xmm2
minsd xmm15, xmm13
subsd xmm2, xmm14
ucomisd xmm12, xmm2
jbe 0x1400a4ddc
mov eax, r11d
movapd xmm12, xmm2
movapd xmm13, xmm15
cmp rbp, r11
je 0x1400a75d1
movsd xmm2, qword [rcx + r11*8]
movapd xmm3, xmm2
mulsd xmm3, xmm6
addsd xmm3, xmm2
movsd qword [rcx + r11*8], xmm3
addsd xmm3, qword [r12 + r11*8]
movsd qword [r12 + r11*8], xmm3
lea rdi, [r11 + 1]
add r10, 0x20
mov r11, rdi
cmp rsi, rdi
jne 0x1400a4d50
nop word cs:[rax + rax]
movsxd rdx, edx
cmp rbp, rdx
jbe 0x1400a75d1
movsd xmm2, qword [rcx + rdx*8]
addsd xmm2, xmm1
movsd qword [rcx + rdx*8], xmm2
cmp r8, rdx
jbe 0x1400a75d1
movsd xmm2, qword [r12 + rdx*8]
addsd xmm2, qword [0x14027d040]
xorps xmm9, xmm9
cvtsi2sd xmm9, dword [rsp + 0x40]
movsd qword [r12 + rdx*8], xmm2
mulsd xmm9, xmm1
movsxd rdx, eax
cmp r13, rdx
jbe 0x1400a75d1
shl rdx, 5
movupd xmm2, xmmword [r14 + rdx]
movupd xmm3, xmmword [r14 + rdx + 0x10]
movapd xmm10, xmm2
subpd xmm10, xmm7
movapd xmm11, xmm9
unpcklpd xmm11, xmm9
mulpd xmm10, xmm11
subpd xmm2, xmm10
movupd xmmword [r14 + rdx], xmm2
movapd xmm2, xmm3
subpd xmm2, xmm8
mulpd xmm2, xmm11
subpd xmm3, xmm2
movupd xmmword [r14 + rdx + 0x10], xmm3
cmp dword [rsp + 0x38], 0
jle 0x1400a5032
mov edx, eax
mov r10, qword [rsp + 0x38]
sub edx, r10d
test edx, edx
mov r11d, 0
cmovle edx, r11d
add r10d, eax
cmp r10d, esi
cmovge r10d, esi
lea ebx, [rax + 1]
dec eax
cmp eax, edx
setg dil
cmp ebx, r10d
setl r15b
jl 0x1400a4f18
cmp eax, edx
jle 0x1400a5032
xorps xmm10, xmm10
cvtsi2sd xmm10, dword [rsp + 0x38]
mulsd xmm10, xmm10
xor r11d, r11d
nop dword [rax + rax]
xorps xmm2, xmm2
cvtsi2sd xmm2, r11d
mulsd xmm2, xmm2
movapd xmm11, xmm10
subsd xmm11, xmm2
mulsd xmm11, xmm9
divsd xmm11, xmm10
test r15b, 1
je 0x1400a4fb5
movsxd rbx, ebx
cmp r13, rbx
jbe 0x1400a75d1
mov r15, rbx
shl r15, 5
movupd xmm2, xmmword [r14 + r15]
movupd xmm3, xmmword [r14 + r15 + 0x10]
movapd xmm12, xmm2
subpd xmm12, xmm7
movapd xmm13, xmm11
unpcklpd xmm13, xmm11
mulpd xmm12, xmm13
subpd xmm2, xmm12
movupd xmmword [r14 + r15], xmm2
movapd xmm2, xmm3
subpd xmm2, xmm8
mulpd xmm2, xmm13
subpd xmm3, xmm2
movupd xmmword [r14 + r15 + 0x10], xmm3
inc ebx
test dil, 1
je 0x1400a5014
cdqe
cmp r13, rax
jbe 0x1400a75d1
mov rdi, rax
shl rdi, 5
movupd xmm2, xmmword [r14 + rdi]
movupd xmm3, xmmword [r14 + rdi + 0x10]
movapd xmm12, xmm2
subpd xmm12, xmm7
unpcklpd xmm11, xmm11
mulpd xmm12, xmm11
subpd xmm2, xmm12
movupd xmmword [r14 + rdi], xmm2
movapd xmm2, xmm3
subpd xmm2, xmm8
mulpd xmm2, xmm11
subpd xmm3, xmm2
movupd xmmword [r14 + rdi + 0x10], xmm3
dec eax
cmp eax, edx
setg dil
inc r11d
cmp ebx, r10d
setl r15b
jl 0x1400a4f30
cmp eax, edx
jg 0x1400a4f30
add r9, qword [rsp + 0x60]
mov rax, qword [rsp + 0x50]
nop dword [rax]
sub r9, rax
cmp r9, rax
jae 0x1400a5040
mov r11, qword [rsp + 0x48]
inc r11
mov rax, r11
mov r15, qword [rsp + 0x70]
or rax, r15
shr rax, 0x20
mov rbx, qword [rsp + 0x78]
je 0x1400a5080
mov rax, r11
xor edx, edx
div r15
test rdx, rdx
jne 0x1400a4b6f
jmp 0x1400a5091
mov eax, r11d
xor edx, edx
div r15d
test rdx, rdx
jne 0x1400a4b6f
mov eax, dword [rsp + 0x80]
test eax, eax
je 0x1400a75d1
cmp eax, 0xffffffff
jne 0x1400a4b10
cmp dword [rsp + 0x40], 0x80000000
jne 0x1400a4b10
jmp 0x1400a75d1
mov r10, qword [rsp + 0x128]
movsd xmm12, qword [0x14027d010]
movapd xmm13, xmm12
mov eax, 0xffffffff
xor r11d, r11d
jmp 0x1400a512f
movapd xmm14, xmm12
movapd xmm2, xmm13
movsd xmm3, qword [rcx + r11*8]
movapd xmm12, xmm3
mulsd xmm12, xmm6
addsd xmm12, xmm3
movsd qword [rcx + r11*8], xmm12
addsd xmm12, qword [r12 + r11*8]
movsd qword [r12 + r11*8], xmm12
lea rdi, [r11 + 1]
add r10, 0x20
movapd xmm13, xmm2
movapd xmm12, xmm14
mov r11, rdi
cmp rsi, rdi
je 0x1400a4e30
cmp r8, r11
je 0x1400a75d1
movsd xmm15, qword [r12 + r11*8]
movsd xmm14, qword [r10 - 8]
movhpd xmm14, qword [r10 - 0x18]
subpd xmm14, xmm9
andpd xmm14, xmm4
pshufd xmm2, xmm14, 0xee
addsd xmm2, xmm14
ucomisd xmm13, xmm2
ja 0x1400a517b
movapd xmm14, xmm12
addsd xmm14, xmm15
ucomisd xmm14, xmm2
jbe 0x1400a50e0
movsd xmm3, qword [r10 - 0x10]
movsd xmm14, qword [r10]
subsd xmm3, xmm10
andpd xmm3, xmm5
addsd xmm2, xmm3
subsd xmm14, xmm11
andpd xmm14, xmm5
addsd xmm14, xmm2
ucomisd xmm13, xmm14
cmova edx, r11d
movapd xmm2, xmm14
minsd xmm2, xmm13
subsd xmm14, xmm15
ucomisd xmm12, xmm14
jbe 0x1400a51d0
mov eax, r11d
jmp 0x1400a50ea
movapd xmm14, xmm12
jmp 0x1400a50ea
mov rax, qword [rsp + 0xd0]
test rax, rax
je 0x1400a75d1
mov rcx, qword [rsp + 0xc8]
movabs rdx, 0x8000000000000000
dec rdx
mov qword [rcx], rdx
mov rsi, 0xffffffffffffffff
xor edx, edx
jmp 0x1400a54c1
mov r13d, 0xc
xor ebp, ebp
movsd xmm6, qword [0x14027d048]
movsd xmm7, qword [0x14027d050]
xor r12d, r12d
jmp 0x1400a5244
lea rcx, [rsp + 0x90]
mov rdx, rsi
call fcn.14026f620
mov rax, qword [rsp + 0x98]
mov rsi, qword [rsp + 0xa0]
mov r9, r14
test r15, r15
jne 0x1400a4154
jmp 0x1400a41cd
lea rax, [r15 + r9*4]
mov qword [rsp + 0x58], rax
lea r8, [rsp + 0xb0]
lea rcx, [rsp + 0x90]
mov rdx, qword [rsp + 0x70]
call fcn.14026e590
xor r14d, r14d
pcmpeqd xmm6, xmm6
mov rax, r15
xor ebx, ebx
mov qword [rsp + 0x50], r15
jmp 0x1400a6459
mov rax, qword [rsp + 0x78]
mov byte [rcx - 1], al
mov r15, qword [rsp + 0x50]
mov rbx, qword [rsp + 0x38]
mov rax, qword [rsp + 0x48]
mov ecx, dword [rsp + 0x40]
mov r14d, ecx
cmp rbx, qword [rsp + 0x70]
je 0x1400a427f
mov rcx, qword [rsp + 0x58]
mov rdx, rcx
cmp rax, rcx
je 0x1400a646f
mov ebp, dword [rax]
add rax, 4
mov rdx, rax
mov qword [rsp + 0x48], rdx
mov eax, r14d
inc al
movzx ecx, al
mov eax, 0xff
cmove ecx, eax
mov dword [rsp + 0x40], ecx
mov rdi, qword [rsp + 0xb0]
mov r13, qword [rsp + 0xb8]
cmp qword [rsp + 0xa0], 0
je 0x1400a6768
movzx eax, r14b
shl rbp, 0x20
shrd rbp, rax, 0x20
mov rax, rbp
movabs rcx, 0xffffffffff
and rax, rcx
mov rdx, rax
shr rdx, 8
mov r8, rax
shr r8, 0x10
shr rax, 0x18
mov r11, rdi
movabs rcx, 0x736f6d6570736575
xor r11, rcx
mov r10, r13
movabs rcx, 0x646f72616e646f6d
xor r10, rcx
movabs rcx, 0x6c7967656e657261
xor rdi, rcx
mov ecx, eax
shl ecx, 0x18
movzx r9d, r8b
shl r9d, 0x10
or r9d, ecx
mov ecx, edx
shl ecx, 8
movzx ecx, cx
or ecx, r9d
movzx r9d, bpl
or r9d, ecx
mov qword [rsp + 0x60], r9
movabs rcx, 0x400000000000000
or r9, rcx
add r11, r10
rol r10, 0xd
movabs rcx, 0x7465646279746573
xor r13, rcx
xor r10, r11
rol r11, 0x20
xor r13, r9
add rdi, r13
rol r13, 0x10
xor r13, rdi
add r11, r13
rol r13, 0x15
add rdi, r10
rol r10, 0x11
xor r13, r11
xor r10, rdi
rol rdi, 0x20
xor r11, r9
add r11, r10
rol r10, 0xd
xor r10, r11
rol r11, 0x20
xor rdi, 0xff
add rdi, r13
rol r13, 0x10
xor r13, rdi
add r11, r13
rol r13, 0x15
add rdi, r10
rol r10, 0x11
xor r10, rdi
rol rdi, 0x20
xor r13, r11
add r11, r10
rol r10, 0xd
xor r10, r11
rol r11, 0x20
add rdi, r13
rol r13, 0x10
xor r13, rdi
add r11, r13
rol r13, 0x15
add rdi, r10
rol r10, 0x11
inc rbx
mov qword [rsp + 0x38], rbx
xor r10, rdi
rol rdi, 0x20
xor r13, r11
add r11, r10
rol r10, 0xd
mov rcx, rbp
add rdi, r13
rol r13, 0x10
shr rcx, 0x20
mov qword [rsp + 0x78], rcx
xor r13, rdi
rol r13, 0x15
xor r10, r11
add rdi, r10
rol r10, 0x11
mov r12, rdi
rol r12, 0x20
xor r12, r10
xor r12, r13
xor r12, rdi
mov r10, qword [rsp + 0x90]
mov r11, qword [rsp + 0x98]
mov rdi, r12
shr rdi, 0x39
movd xmm0, edi
punpcklbw xmm0, xmm0
pshuflw xmm0, xmm0, 0
pshufd xmm0, xmm0, 0
xor r14d, r14d
xor r15d, r15d
nop word cs:[rax + rax]
and r12, r11
movdqu xmm1, xmmword [r10 + r12]
movdqa xmm2, xmm1
pcmpeqb xmm2, xmm0
pmovmskb ebx, xmm2
nop word cs:[rax + rax]
test bx, bx
je 0x1400a66c0
tzcnt ecx, ebx
lea r9d, [rbx - 1]
and r9d, ebx
mov ebx, r9d
add rcx, r12
and rcx, r11
neg rcx
lea rcx, [rcx + rcx*4]
cmp byte [r10 + rcx - 5], bpl
jne 0x1400a6680
add rcx, r10
cmp byte [rcx - 4], dl
jne 0x1400a6680
cmp byte [rcx - 3], r8b
jne 0x1400a6680
cmp byte [rcx - 2], al
jne 0x1400a6680
jmp 0x1400a6430
cmp r15, 1
mov r15d, 1
je 0x1400a66e4
pmovmskb ecx, xmm1
xor r15d, r15d
test ecx, ecx
setne r15b
tzcnt r13d, ecx
add r13, r12
and r13, r11
pcmpeqb xmm1, xmm6
pmovmskb ecx, xmm1
test ecx, ecx
jne 0x1400a6700
add r12, r14
add r12, 0x10
add r14, 0x10
jmp 0x1400a6660
movzx eax, byte [r10 + r13]
test al, al
js 0x1400a671c
movdqa xmm0, xmmword [r10]
pmovmskb eax, xmm0
tzcnt r13d, eax
movzx eax, byte [r10 + r13]
and al, 1
movzx eax, al
sub qword [rsp + 0xa0], rax
lea rax, [r13 - 0x10]
and r11, rax
mov byte [r10 + r13], dil
mov byte [r11 + r10 + 0x10], dil
inc qword [rsp + 0xa8]
neg r13
lea rax, [r13*4]
add rax, r13
mov rcx, qword [rsp + 0x78]
mov byte [r10 + rax - 1], cl
mov rcx, qword [rsp + 0x60]
mov dword [r10 + rax - 5], ecx
jmp 0x1400a6438
mov edx, 1
lea rcx, [rsp + 0x90]
lea r8, [rsp + 0xb0]
call fcn.14026e590
jmp 0x1400a64a7
mov edx, 0x10
mov r8, rsi
sub r8, rax
test r12, r12
jne 0x1400a317a
jmp 0x1400a37fa