Function at 0x140086970
Capabilities:
Encrypt data using rc4 ksa

Disassembly:
push r15
push r14
push r13
push r12
push rsi
push rdi
push rbp
push rbx
mov eax, 0x89b8
call fcn.1400f4eb0
sub rsp, rax
mov qword [rsp + 0xa8], r9
mov qword [rsp + 0xc8], r8
mov qword [rsp + 0xc0], rdx
mov r14, rcx
mov edi, dword [rsp + 0x8a30]
mov rbx, qword [rsp + 0x8a28]
mov ebp, dword [rsp + 0x8a20]
mov rax, qword [0x140206880]
xor rax, rsp
mov qword [rsp + 0x89b0], rax
mov qword [rbx], 8
mov dword [rbx + 8], 0
lea r12, [rcx + 0x38]
lea rsi, [rcx + 0x39]
mov rcx, qword [rcx + 0xc0]
mov rax, qword [r14 + 0xc8]
xor r15d, r15d
lea r13, [0x14011a6d8]
nop word [rax + rax]
cmp rcx, rax
jae 0x140086a20
lea r8, [rcx + 1]
mov qword [r14 + 0xc0], r8
movzx edx, byte [rcx]
mov rcx, r8
jmp 0x140086a82
cmp dword [r14 + 0x30], 0
je 0x140086a5b
mov r8d, dword [r14 + 0x34]
mov rcx, qword [r14 + 0x28]
mov rdx, r12
call qword [r14 + 0x10]
mov ecx, dword [r14 + 0xc0]
sub ecx, dword [r14 + 0xd0]
add dword [r14 + 0xb8], ecx
test eax, eax
je 0x140086a5f
cdqe
add rax, r12
movzx edx, byte [r12]
jmp 0x140086a71
xor edx, edx
jmp 0x140086a82
mov dword [r14 + 0x30], 0
mov byte [r14 + 0x38], 0
xor edx, edx
mov rax, rsi
mov qword [r14 + 0xc8], rax
mov qword [r14 + 0xc0], rsi
mov rcx, rsi
cmp dl, byte [r15 + r13]
jne 0x140086ade
inc r15
cmp r15, 8
jne 0x140086a00
vmovups xmm0, xmmword [r14 + 0xd0]
vmovups xmmword [r14 + 0xc0], xmm0
mov qword [rsp + 0x140], r14
cmp ebp, 5
jb 0x140086b8b
mov eax, dword [0x140210b70]
mov rcx, qword gs:[0x58]
mov rax, qword [rcx + rax*8]
lea rcx, str.bad_req_comp
mov qword [rax + 8], rcx
jmp 0x1400876ce
mov eax, dword [0x140210b70]
mov rcx, qword gs:[0x58]
mov rax, qword [rcx + rax*8]
lea r13, [rax + 8]
lea rcx, str.bad_png_sig
mov qword [rax + 8], rcx
mov rcx, qword [r14 + 0xd0]
mov rax, qword [r14 + 0xd8]
mov qword [r14 + 0xc0], rcx
mov qword [r14 + 0xc8], rax
cmp rcx, rax
jae 0x140086b43
lea r8, [rcx + 1]
mov qword [r14 + 0xc0], r8
movzx edx, byte [rcx]
cmp dl, 0x42
je 0x140086c44
jmp 0x140086dc3
cmp dword [r14 + 0x30], 0
je 0x140086dc3
mov r8d, dword [r14 + 0x34]
mov rcx, qword [r14 + 0x28]
mov rdx, r12
call qword [r14 + 0x10]
mov edx, dword [r14 + 0xc0]
mov rcx, qword [r14 + 0xd0]
sub edx, ecx
add dword [r14 + 0xb8], edx
test eax, eax
je 0x140086c18
cdqe
add rax, r12
movzx edx, byte [r12]
jmp 0x140086c2a
lea rcx, [rsp + 0x140]
xor edx, edx
mov r8d, ebp
call fcn.14008f050
test eax, eax
je 0x140086c08
mov eax, dword [rsp + 0x160]
mov ecx, 8
cmp eax, 9
jl 0x140086bc0
mov ecx, 0x10
cmp eax, 0x10
jne 0x140086ca7
mov dword [rbx], ecx
mov rsi, qword [rsp + 0x140]
mov r15, qword [rsp + 0x158]
test ebp, ebp
je 0x140087020
mov edx, dword [rsi + 0xc]
cmp edx, ebp
je 0x140087020
mov r9d, dword [rsi]
mov ecx, dword [rsi + 4]
cmp eax, 8
jg 0x140087002
mov dword [rsp + 0x20], ecx
mov rcx, r15
mov r8d, ebp
call fcn.1400912e0
jmp 0x140087011
mov rcx, qword [rsp + 0x158]
xor r15d, r15d
jmp 0x14008704d
mov dword [r14 + 0x30], 0
mov byte [r14 + 0x38], 0
xor edx, edx
mov rax, rsi
mov qword [r14 + 0xc8], rax
mov qword [r14 + 0xc0], rsi
mov r8, rsi
cmp dl, 0x42
jne 0x140086dc3
cmp r8, rax
jae 0x140086c65
lea rax, [r8 + 1]
mov qword [r14 + 0xc0], rax
movzx eax, byte [r8]
cmp al, 0x4d
jne 0x140086dc3
jmp 0x140086cf5
cmp dword [r14 + 0x30], 0
je 0x140086dc3
mov r8d, dword [r14 + 0x34]
mov rcx, qword [r14 + 0x28]
mov rdx, r12
call qword [r14 + 0x10]
mov edx, dword [r14 + 0xc0]
mov rcx, qword [r14 + 0xd0]
sub edx, ecx
add dword [r14 + 0xb8], edx
test eax, eax
je 0x140086ccd
movsxd rdx, eax
add rdx, r12
movzx eax, byte [r12]
jmp 0x140086cdf
mov eax, dword [0x140210b70]
mov rcx, qword gs:[0x58]
mov rax, qword [rcx + rax*8]
lea rcx, str.bad_bits_per_channel
mov qword [rax + 8], rcx
jmp 0x1400876ce
mov dword [r14 + 0x30], 0
mov byte [r14 + 0x38], 0
xor eax, eax
mov rdx, rsi
mov qword [r14 + 0xc8], rdx
mov qword [r14 + 0xc0], rsi
cmp al, 0x4d
jne 0x140086dc3
mov rcx, r14
call fcn.140098e00
mov rcx, r14
call fcn.140098e00
mov rcx, r14
call fcn.140098e00
mov rcx, r14
call fcn.140098e00
mov rcx, r14
call fcn.140098e00
mov rcx, r14
call fcn.140098e00
mov rcx, r14
call fcn.140098e00
mov r15d, eax
mov rcx, r14
call fcn.140098e00
shl eax, 0x10
or eax, r15d
cmp eax, 0x38
ja 0x140086d53
movabs rcx, 0x100010000001000
bt rcx, rax
jb 0x140086d5c
cmp eax, 0x6c
jne 0x14008706f
vmovups xmm0, xmmword [r14 + 0xd0]
vmovups xmmword [r14 + 0xc0], xmm0
mov dword [rsp + 0x138], 0xff
lea rdx, [rsp + 0x11c]
mov rcx, r14
call fcn.140098f30
test rax, rax
je 0x1400876ce
mov r15d, dword [r14 + 4]
mov eax, r15d
neg eax
cmovs eax, r15d
mov dword [r14 + 4], eax
cmp eax, 0x1000001
jae 0x140086db7
cmp dword [r14], 0x1000001
jb 0x14008708f
lea rax, str.too_large
jmp 0x1400876ca
mov qword [r14 + 0xc0], rcx
mov rax, qword [r14 + 0xd8]
mov qword [r14 + 0xc8], rax
mov rcx, r14
call fcn.140088de0
test eax, eax
je 0x140086e77
lea r15, [rsp + 0x140]
mov r8d, 0x8870
mov rcx, r15
xor edx, edx
call sub.VCRUNTIME140.dll_memset
mov rcx, r14
mov rdx, r15
mov r8, qword [rsp + 0xa8]
xor r9d, r9d
call fcn.1400995c0
cmp rax, r14
je 0x140086f29
mov r15, rax
test rax, rax
je 0x140086f29
mov r9d, dword [rsp + 0x140]
mov rax, qword [rsp + 0xc0]
mov dword [rax], r9d
mov eax, dword [rsp + 0x144]
mov rcx, qword [rsp + 0xc8]
mov dword [rcx], eax
test ebp, 0xfffffffb
je 0x140086f3f
mov dword [rsp + 0x20], eax
mov rcx, r15
mov edx, 4
mov r8d, ebp
call fcn.1400912e0
mov r15, rax
jmp 0x140086f3f
mov rcx, r14
call fcn.140095790
mov r15d, eax
shl r15d, 0x10
mov rcx, r14
call fcn.140095790
or eax, r15d
vmovups xmm0, xmmword [r14 + 0xd0]
vmovups xmmword [r14 + 0xc0], xmm0
mov rcx, r14
cmp eax, 0x38425053
jne 0x140086f5f
call fcn.140095790
mov r15d, eax
shl r15d, 0x10
mov rcx, r14
call fcn.140095790
or eax, r15d
cmp eax, 0x38425053
jne 0x140086fab
mov rcx, r14
call fcn.140095790
cmp eax, 1
jne 0x140086ff6
cmp qword [r14 + 0x10], 0
je 0x140087166
mov rax, qword [r14 + 0xc0]
mov rcx, qword [r14 + 0xc8]
mov r8d, ecx
sub r8d, eax
cmp r8d, 5
jg 0x14008716d
mov qword [r14 + 0xc0], rcx
mov edx, 6
sub edx, r8d
mov rcx, qword [r14 + 0x28]
call qword [r14 + 0x18]
jmp 0x140087178
mov rcx, qword [rsp + 0x148]
test rcx, rcx
je 0x140086f3c
call qword [sym.imp.api_ms_win_crt_heap_l1_1_0.dll_free]
xor r15d, r15d
mov rcx, qword [rsp + 0x158]
mov rsi, qword [sym.imp.api_ms_win_crt_heap_l1_1_0.dll_free]
call rsi
mov rcx, qword [rsp + 0x150]
call rsi
jmp 0x1400876d1
call fcn.140089120
test eax, eax
je 0x140086fb7
mov rcx, qword [rsp + 0x89b0]
xor rcx, rsp
call fcn.1400f4f10
mov rcx, r14
mov rdx, qword [rsp + 0xc0]
mov r8, qword [rsp + 0xc8]
mov r9, qword [rsp + 0xa8]
add rsp, 0x89b8
pop rbx
pop rbp
pop rdi
pop rsi
pop r12
pop r13
pop r14
pop r15
jmp 0x1400895a0
lea rax, str.not_PSD
jmp 0x1400876ca
mov rcx, r14
call fcn.14008a050
test eax, eax
mov rsi, qword [rsp + 0xc8]
mov r15, qword [rsp + 0xc0]
je 0x14008711c
mov dword [rsp + 0x20], ebp
mov rcx, r14
mov rdx, r15
mov r8, rsi
mov r9, qword [rsp + 0xa8]
call fcn.14008a180
jmp 0x14008714b
lea rax, str.wrong_version
jmp 0x1400876ca
mov dword [rsp + 0x20], ecx
mov rcx, r15
mov r8d, ebp
call fcn.140093cd0
mov r15, rax
mov dword [rsi + 0xc], ebp
test rax, rax
je 0x1400876ce
mov eax, dword [rsi]
mov rcx, qword [rsp + 0xc0]
mov dword [rcx], eax
mov eax, dword [rsi + 4]
mov rcx, qword [rsp + 0xc8]
mov dword [rcx], eax
mov rcx, qword [rsp + 0xa8]
test rcx, rcx
je 0x14008704b
mov eax, dword [rsi + 8]
mov dword [rcx], eax
xor ecx, ecx
mov rsi, qword [sym.imp.api_ms_win_crt_heap_l1_1_0.dll_free]
call rsi
mov rcx, qword [rsp + 0x150]
call rsi
mov rcx, qword [rsp + 0x148]
call rsi
jmp 0x1400876d1
vmovups xmm0, xmmword [r14 + 0xd0]
vmovups xmmword [r14 + 0xc0], xmm0
cmp eax, 0x7c
jne 0x140086dd8
jmp 0x140086d6e
mov eax, dword [rsp + 0x128]
mov dword [rsp + 0x88], eax
mov eax, dword [rsp + 0x12c]
mov dword [rsp + 0x80], eax
mov eax, dword [rsp + 0x130]
mov dword [rsp + 0x70], eax
mov edx, dword [rsp + 0x134]
mov r11d, dword [rsp + 0x138]
mov ebx, dword [rsp + 0x11c]
mov r8d, dword [rsp + 0x124]
cmp r8d, 0xc
mov dword [rsp + 0x48], edx
jne 0x1400871f3
cmp ebx, 0x17
jg 0x140087344
mov ecx, dword [rsp + 0x120]
mov eax, dword [rsp + 0x13c]
neg eax
add eax, ecx
add eax, 0xffffffe8
cdqe
imul r9, rax, 0x55555556
mov rax, r9
shr rax, 0x3f
shr r9, 0x20
add r9d, eax
jmp 0x140087217
mov rcx, r14
call fcn.14008c940
test eax, eax
je 0x14008741b
mov qword [rsp + 0x28], rbx
mov dword [rsp + 0x20], ebp
mov rcx, r14
mov rdx, r15
mov r8, rsi
mov r9, qword [rsp + 0xa8]
call fcn.14008ca80
mov rsi, rax
mov rcx, qword [rsp + 0x89b0]
xor rcx, rsp
call fcn.1400f4f10
mov rax, rsi
jmp 0x1400876e7
mov rax, qword [r14 + 0xc0]
add rax, 6
mov qword [r14 + 0xc0], rax
mov rcx, r14
call fcn.140095790
cmp eax, 0x11
jb 0x140087191
lea rax, str.wrong_channel_count
jmp 0x1400876ca
mov qword [rsp + 0x50], r13
mov dword [rsp + 0x88], eax
mov rcx, r14
call fcn.140095790
mov r15d, eax
shl r15d, 0x10
mov rcx, r14
call fcn.140095790
mov r13d, eax
or r13d, r15d
mov rcx, r14
call fcn.140095790
mov r15d, eax
mov rcx, r14
call fcn.140095790
mov dword [rsp + 0x48], r13d
cmp r13d, 0x1000001
jl 0x14008737a
lea rax, str.too_large
mov rcx, qword [rsp + 0x50]
mov qword [rcx], rax
jmp 0x1400876ce
cmp ebx, 0xf
jg 0x140087344
mov ecx, dword [rsp + 0x120]
mov eax, dword [rsp + 0x13c]
add eax, r8d
mov r9d, ecx
sub r9d, eax
sar r9d, 2
test r9d, r9d
je 0x140087344
mov qword [rsp + 0x40], r9
mov qword [rsp + 0x78], rcx
mov dword [rsp + 0x68], r8d
cmp edx, 0xff000000
sete al
xor edi, edi
mov ecx, edi
mov byte [rsp + 0x5c], dil
cmp edx, 1
mov r10d, 4
sbb r10d, 0
mov edi, eax
mov dword [r14 + 8], r10d
cmp ebp, 3
cmovge r10d, ebp
mov r9d, dword [r14]
mov eax, r9d
or eax, r10d
js 0x140086db7
mov ecx, dword [r14 + 4]
test r9d, r9d
je 0x140087286
mov eax, 0x7fffffff
xor edx, edx
div r9d
cmp eax, r10d
jb 0x140086db7
mov r8d, r9d
imul r8d, r10d
mov eax, r8d
or eax, ecx
js 0x140086db7
test ecx, ecx
je 0x1400872ae
mov eax, 0x7fffffff
xor edx, edx
div ecx
cmp eax, r8d
jl 0x140086db7
mov dword [rsp + 0xd4], r15d
test r9d, r9d
je 0x1400872ce
mov eax, 0x7fffffff
xor edx, edx
div r9d
cmp eax, r10d
jb 0x1400876c3
test ecx, ecx
je 0x1400872e4
mov eax, 0x7fffffff
xor edx, edx
div ecx
cmp eax, r8d
jl 0x1400876c3
imul r8d, ecx
movsxd rcx, r8d
mov dword [rsp + 0x38], r10d
mov dword [rsp + 0x98], r11d
call qword [sym.imp.api_ms_win_crt_heap_l1_1_0.dll_malloc]
test rax, rax
je 0x1400876c3
mov r15, rax
cmp ebx, 0xf
mov dword [rsp + 0x60], ebx
jg 0x1400876fb
mov rcx, qword [rsp + 0x40]
cmp ecx, 0x101
setge al
or byte [rsp + 0x5c], al
je 0x140087759
mov rcx, r15
call qword [sym.imp.api_ms_win_crt_heap_l1_1_0.dll_free]
lea rax, str.invalid
jmp 0x1400876ca
mov eax, dword [r14 + 0xb8]
mov ecx, dword [r14 + 0xc0]
sub ecx, dword [r14 + 0xd0]
lea edx, [rax + rcx]
add edx, 0xfffffbff
cmp edx, 0xfffffbff
ja 0x140087489
lea rax, str.bad_header
jmp 0x1400876ca
shl r15d, 0x10
or r15d, eax
cmp r15d, 0x1000001
mov r13, qword [rsp + 0x50]
jge 0x140086db7
mov dword [rsp + 0x40], r15d
mov rcx, r14
call fcn.140095790
mov r15d, eax
cmp r15w, 8
je 0x1400873b7
movzx eax, r15w
cmp eax, 0x10
jne 0x140087540
mov rcx, r14
call fcn.140095790
cmp eax, 3
jne 0x14008754c
mov rcx, r14
call fcn.140095760
mov rcx, r14
mov edx, eax
call fcn.140095700
mov rcx, r14
call fcn.140095760
mov rcx, r14
mov edx, eax
call fcn.140095700
mov rcx, r14
call fcn.140095760
mov rcx, r14
mov edx, eax
call fcn.140095700
mov rcx, r14
call fcn.140095790
cmp eax, 2
jb 0x140087564
lea rax, str.bad_compression
jmp 0x1400876ca
mov rcx, r14
call fcn.1400836a0
test eax, eax
je 0x1400874ac
mov dword [rsp + 0x20], ebp
mov rcx, r14
mov rdx, r15
mov r8, rsi
mov rdi, qword [rsp + 0xa8]
mov r9, rdi
call fcn.14008cd10
mov r14, rax
test ebp, ebp
jne 0x140087451
mov ebp, dword [rdi]
mov esi, dword [rsi]
mov edi, dword [r15]
mov rcx, qword [rsp + 0x89b0]
xor rcx, rsp
call fcn.1400f4f10
mov rcx, r14
mov edx, edi
mov r8d, esi
mov r9d, ebp
add rsp, 0x89b8
pop rbx
pop rbp
pop rdi
pop rsi
pop r12
pop r13
pop r14
pop r15
jmp 0x14008d8c0
add eax, ecx
mov ecx, dword [rsp + 0x120]
mov edx, ecx
sub edx, eax
jl 0x1400874a0
cmp edx, 0x401
jl 0x1400874db
lea rax, str.bad_offset
jmp 0x1400876ca
mov rcx, r14
call fcn.14008dd40
test eax, eax
je 0x140087558
mov dword [rsp + 0x20], ebp
mov rcx, r14
mov rdx, r15
mov r8, rsi
mov r9, qword [rsp + 0xa8]
call fcn.14008e110
jmp 0x14008714b
mov qword [rsp + 0x78], rcx
mov dword [rsp + 0x68], r8d
mov dword [rsp + 0x98], r11d
mov rcx, r14
call fcn.140095700
mov edx, dword [rsp + 0x48]
cmp edx, 0xff000000
sete al
xor ecx, ecx
mov qword [rsp + 0x40], rcx
mov dil, 1
mov ecx, ebx
cmp ebx, 0x18
jne 0x1400875be
cmp edx, 0xff000000
mov r11d, dword [rsp + 0x98]
jne 0x1400875c6
mov r10d, 3
mov ebx, 0x18
mov byte [rsp + 0x5c], 1
jmp 0x140087250
lea rax, str.unsupported_bit_depth
jmp 0x1400876ca
lea rax, str.wrong_color_format
jmp 0x1400876ca
lea rax, str.unknown_image_type
jmp 0x1400876ca
mov dword [rsp + 0x38], eax
mov ecx, 4
mov edx, dword [rsp + 0x40]
mov r8d, dword [rsp + 0x48]
xor r9d, r9d
call fcn.140098d20
test eax, eax
je 0x140086db7
cmp edi, 0x10
mov r8d, dword [rsp + 0x48]
mov dword [rsp + 0x5c], r15d
jne 0x1400875cd
cmp r15d, 0x10
jne 0x1400875cd
cmp dword [rsp + 0x38], 0
jne 0x1400875cd
mov ecx, 8
mov edx, dword [rsp + 0x40]
xor r9d, r9d
call fcn.140098cc0
mov r15, rax
mov dword [rbx], 0x10
jmp 0x1400875e4
mov r11d, dword [rsp + 0x98]
mov ebx, ecx
jmp 0x14008723a
mov eax, r8d
imul eax, dword [rsp + 0x40]
shl eax, 2
movsxd rcx, eax
call qword [sym.imp.api_ms_win_crt_heap_l1_1_0.dll_malloc]
mov r15, rax
test r15, r15
mov edx, dword [rsp + 0x88]
je 0x1400876c3
mov r8d, dword [rsp + 0x40]
mov eax, dword [rsp + 0x48]
imul r8d, eax
mov ecx, edx
mov qword [rsp + 0x68], rcx
cmp dword [rsp + 0x38], 0
mov dword [rsp + 0x80], r8d
je 0x1400879e3
imul edx, eax
add edx, edx
mov rcx, r14
call fcn.140095700
mov r8d, dword [rsp + 0x80]
mov esi, r8d
and esi, 0xfffffff8
mov edi, r8d
and edi, 7
xor r12d, r12d
jmp 0x14008766e
mov rcx, r14
mov r8d, dword [rsp + 0x80]
call fcn.14009ad10
mov r8d, dword [rsp + 0x80]
test eax, eax
je 0x140087d02
inc r12
cmp r12, 4
je 0x140087c59
lea rdx, [r15 + r12]
cmp r12, qword [rsp + 0x68]
jb 0x140087641
test r8d, r8d
jle 0x140087661
cmp r12, 3
sete al
neg al
cmp r8d, 8
jb 0x1400876af
mov ecx, esi
mov byte [rdx], al
mov byte [rdx + 4], al
mov byte [rdx + 8], al
mov byte [rdx + 0xc], al
mov byte [rdx + 0x10], al
mov byte [rdx + 0x14], al
mov byte [rdx + 0x18], al
mov byte [rdx + 0x1c], al
add rdx, 0x20
add ecx, 0xfffffff8
jne 0x14008768f
test r8b, 7
je 0x140087661
xor ecx, ecx
mov byte [rdx + rcx*4], al
inc rcx
cmp edi, ecx
jne 0x1400876b7
jmp 0x140087661
lea rax, str.outofmem
mov qword [r13], rax
xor r15d, r15d
mov rcx, qword [rsp + 0x89b0]
xor rcx, rsp
vzeroupper
call fcn.1400f4f10
mov rax, r15
add rsp, 0x89b8
pop rbx
pop rbp
pop rdi
pop rsi
pop r12
pop r13
pop r14
pop r15
ret
mov eax, dword [rsp + 0x68]
add eax, dword [rsp + 0x13c]
mov r9, qword [rsp + 0x78]
sub r9d, eax
je 0x140088351
js 0x140087e36
cmp qword [r14 + 0x10], 0
je 0x140088339
mov rax, qword [r14 + 0xc0]
mov rcx, qword [r14 + 0xc8]
mov r8d, ecx
sub r8d, eax
mov edx, r9d
sub edx, r8d
jle 0x140088340
mov qword [r14 + 0xc0], rcx
mov rcx, qword [r14 + 0x28]
call qword [r14 + 0x18]
jmp 0x14008834d
test ecx, ecx
jle 0x14008798c
mov eax, dword [rsp + 0x40]
mov qword [rsp + 0x48], rax
mov rcx, qword [r14 + 0xc0]
mov rax, qword [r14 + 0xc8]
xor edi, edi
jmp 0x14008779c
inc rcx
mov qword [r14 + 0xc0], rcx
mov byte [rsp + rdi*4 + 0x143], 0xff
inc rdi
cmp qword [rsp + 0x48], rdi
je 0x14008798c
cmp rcx, rax
jae 0x1400877b4
lea r8, [rcx + 1]
mov qword [r14 + 0xc0], r8
movzx edx, byte [rcx]
mov rcx, r8
jmp 0x140087816
cmp dword [r14 + 0x30], 0
je 0x1400877ef
mov r8d, dword [r14 + 0x34]
mov rcx, qword [r14 + 0x28]
mov rdx, r12
call qword [r14 + 0x10]
mov ecx, dword [r14 + 0xc0]
sub ecx, dword [r14 + 0xd0]
add dword [r14 + 0xb8], ecx
test eax, eax
je 0x1400877f3
cdqe
add rax, r12
movzx edx, byte [r12]
jmp 0x140087805
xor edx, edx
jmp 0x140087816
mov dword [r14 + 0x30], 0
mov byte [r14 + 0x38], 0
xor edx, edx
mov rax, rsi
mov qword [r14 + 0xc8], rax
mov qword [r14 + 0xc0], rsi
mov rcx, rsi
mov byte [rsp + rdi*4 + 0x142], dl
cmp rcx, rax
jae 0x140087835
lea r8, [rcx + 1]
mov qword [r14 + 0xc0], r8
movzx edx, byte [rcx]
mov rcx, r8
jmp 0x140087897
cmp dword [r14 + 0x30], 0
je 0x140087870
mov r8d, dword [r14 + 0x34]
mov rcx, qword [r14 + 0x28]
mov rdx, r12
call qword [r14 + 0x10]
mov ecx, dword [r14 + 0xc0]
sub ecx, dword [r14 + 0xd0]
add dword [r14 + 0xb8], ecx
test eax, eax
je 0x140087874
cdqe
add rax, r12
movzx edx, byte [r12]
jmp 0x140087886
xor edx, edx
jmp 0x140087897
mov dword [r14 + 0x30], 0
mov byte [r14 + 0x38], 0
xor edx, edx
mov rax, rsi
mov qword [r14 + 0xc8], rax
mov qword [r14 + 0xc0], rsi
mov rcx, rsi
mov byte [rsp + rdi*4 + 0x141], dl
cmp rcx, rax
jae 0x1400878b6
lea r8, [rcx + 1]
mov qword [r14 + 0xc0], r8
movzx edx, byte [rcx]
mov rcx, r8
jmp 0x140087918
cmp dword [r14 + 0x30], 0
je 0x1400878f1
mov r8d, dword [r14 + 0x34]
mov rcx, qword [r14 + 0x28]
mov rdx, r12
call qword [r14 + 0x10]
mov ecx, dword [r14 + 0xc0]
sub ecx, dword [r14 + 0xd0]
add dword [r14 + 0xb8], ecx
test eax, eax
je 0x1400878f5
cdqe
add rax, r12
movzx edx, byte [r12]
jmp 0x140087907
xor edx, edx
jmp 0x140087918
mov dword [r14 + 0x30], 0
mov byte [r14 + 0x38], 0
xor edx, edx
mov rax, rsi
mov qword [r14 + 0xc8], rax
mov qword [r14 + 0xc0], rsi
mov rcx, rsi
mov byte [rsp + rdi*4 + 0x140], dl
cmp dword [rsp + 0x68], 0xc
je 0x140087786
cmp rcx, rax
jb 0x14008777c
cmp dword [r14 + 0x30], 0
je 0x140087786
mov r8d, dword [r14 + 0x34]
mov rcx, qword [r14 + 0x28]
mov rdx, r12
call qword [r14 + 0x10]
mov ecx, dword [r14 + 0xc0]
sub ecx, dword [r14 + 0xd0]
add dword [r14 + 0xb8], ecx
test eax, eax
je 0x14008796d
cdqe
add rax, r12
jmp 0x14008797d
mov dword [r14 + 0x30], 0
mov byte [r14 + 0x38], 0
mov rax, rsi
mov qword [r14 + 0xc8], rax
mov rcx, rsi
jmp 0x14008777f
xor eax, eax
mov ecx, dword [rsp + 0x68]
cmp ecx, 0xc
sete al
or eax, 0xfffffffc
mov rdx, qword [rsp + 0x40]
imul edx, eax
add edx, dword [rsp + 0x78]
add ecx, dword [rsp + 0x13c]
sub edx, ecx
mov rcx, r14
call fcn.140095700
cmp ebx, 1
je 0x140087e49
cmp dword [rsp + 0x60], 8
je 0x140088088
cmp dword [rsp + 0x60], 4
jne 0x140088324
mov eax, dword [r14]
inc eax
shr eax, 1
jmp 0x14008808b
xor edi, 0x10
mov eax, dword [rsp + 0x5c]
xor eax, 0x10
or eax, edi
sete byte [rsp + 0x78]
mov eax, r8d
and eax, 0xfffffff8
mov dword [rsp + 0xb0], eax
mov eax, r8d
and eax, 7
mov qword [rsp + 0x98], rax
mov eax, r8d
mov qword [rsp + 0x38], rax
xor ecx, ecx
mov qword [rsp + 0x50], r15
mov qword [rsp + 0x60], r15
jmp 0x140087a4a
mov rcx, qword [rsp + 0x70]
inc rcx
inc qword [rsp + 0x60]
add qword [rsp + 0x50], 2
cmp rcx, 4
mov r8d, dword [rsp + 0x80]
je 0x140087c59
cmp rcx, qword [rsp + 0x68]
mov qword [rsp + 0x70], rcx
jae 0x140087a85
cmp dword [rbx], 0x10
jne 0x140087b09
test r8d, r8d
jle 0x140087a25
xor r13d, r13d
mov rcx, r14
call fcn.140095790
mov rcx, qword [rsp + 0x50]
mov word [rcx + r13*8], ax
inc r13
cmp dword [rsp + 0x38], r13d
jne 0x140087a67
jmp 0x140087a25
cmp byte [rsp + 0x78], 0
je 0x140087b3d
xor eax, eax
cmp rcx, 3
sete cl
test r8d, r8d
jle 0x140087a25
mov al, cl
neg eax
mov rcx, qword [rsp + 0x70]
lea rcx, [r15 + rcx*2]
mov r8d, dword [rsp + 0x80]
cmp r8d, 8
jb 0x140087ae8
mov edx, dword [rsp + 0xb0]
mov word [rcx], ax
mov word [rcx + 8], ax
mov word [rcx + 0x10], ax
mov word [rcx + 0x18], ax
mov word [rcx + 0x20], ax
mov word [rcx + 0x28], ax
mov word [rcx + 0x30], ax
mov word [rcx + 0x38], ax
add rcx, 0x40
add edx, 0xfffffff8
jne 0x140087ac0
test r8b, 7
je 0x140087a25
xor edx, edx
mov word [rcx + rdx*8], ax
inc rdx
cmp dword [rsp + 0x98], edx
jne 0x140087af4
jmp 0x140087a25
cmp dword [rsp + 0x5c], 0x10
jne 0x140087bac
test r8d, r8d
jle 0x140087a25
xor edi, edi
mov rcx, r14
call fcn.140095790
mov rcx, qword [rsp + 0x60]
mov byte [rcx + rdi*4], ah
inc rdi
cmp dword [rsp + 0x38], edi
jne 0x140087b1f
jmp 0x140087a25
cmp rcx, 3
sete al
test r8d, r8d
jle 0x140087a25
neg al
mov rcx, qword [rsp + 0x70]
add rcx, r15
mov r8d, dword [rsp + 0x80]
cmp r8d, 8
jb 0x140087b8c
mov edx, dword [rsp + 0xb0]
mov byte [rcx], al
mov byte [rcx + 4], al
mov byte [rcx + 8], al
mov byte [rcx + 0xc], al
mov byte [rcx + 0x10], al
mov byte [rcx + 0x14], al
mov byte [rcx + 0x18], al
mov byte [rcx + 0x1c], al
add rcx, 0x20
add edx, 0xfffffff8
jne 0x140087b6c
test r8b, 7
je 0x140087a25
xor edx, edx
mov byte [rcx + rdx*4], al
inc rdx
cmp dword [rsp + 0x98], edx
jne 0x140087b98
jmp 0x140087a25
test r8d, r8d
jle 0x140087a25
mov rcx, qword [r14 + 0xc0]
mov rax, qword [r14 + 0xc8]
xor r13d, r13d
jmp 0x140087bf0
lea r8, [rcx + 1]
mov qword [r14 + 0xc0], r8
movzx edx, byte [rcx]
mov rcx, r8
mov r8, qword [rsp + 0x60]
mov byte [r8 + r13*4], dl
inc r13
cmp dword [rsp + 0x38], r13d
je 0x140087a25
cmp rcx, rax
jb 0x140087bc8
cmp dword [r14 + 0x30], 0
je 0x140087c30
mov r8d, dword [r14 + 0x34]
mov rcx, qword [r14 + 0x28]
mov rdx, r12
call qword [r14 + 0x10]
mov ecx, dword [r14 + 0xc0]
sub ecx, dword [r14 + 0xd0]
add dword [r14 + 0xb8], ecx
test eax, eax
je 0x140087c34
cdqe
add rax, r12
movzx edx, byte [r12]
jmp 0x140087c46
xor edx, edx
jmp 0x140087bd9
mov dword [r14 + 0x30], 0
mov byte [r14 + 0x38], 0
xor edx, edx
mov rax, rsi
mov qword [r14 + 0xc8], rax
mov qword [r14 + 0xc0], rsi
mov rcx, rsi
jmp 0x140087bd9
cmp dword [rsp + 0x88], 4
jb 0x140087dad
cmp dword [rbx], 0x10
jne 0x140087d17
test r8d, r8d
jle 0x140087dad
mov eax, r8d
xor ecx, ecx
vmovss xmm0, dword [0x14011acb4]
jmp 0x140087c94
inc rcx
cmp rax, rcx
je 0x140087dad
movzx edx, word [r15 + rcx*8 + 6]
test edx, edx
je 0x140087c88
cmp edx, 0xffff
je 0x140087c88
movzx edx, dx
vcvtsi2ss xmm1, xmm6, edx
vdivss xmm1, xmm0, xmm1
vmovaps xmm2, xmm0
vfnmadd213ss xmm2, xmm1, xmm0
vmovd xmm3, dword [r15 + rcx*8]
vpmovzxwd xmm3, xmm3
vcvtdq2ps xmm3, xmm3
vbroadcastss xmm4, xmm1
vbroadcastss xmm5, xmm2
vfmadd231ps xmm5, xmm3, xmm4
vcvttps2dq xmm3, xmm5
vpshuflw xmm3, xmm3, 0xe8
vmovd dword [r15 + rcx*8], xmm3
movzx edx, word [r15 + rcx*8 + 4]
vcvtsi2ss xmm3, xmm6, edx
vfmadd213ss xmm3, xmm1, xmm2
vcvttss2si edx, xmm3
mov word [r15 + rcx*8 + 4], dx
jmp 0x140087c88
mov rcx, r15
call qword [sym.imp.api_ms_win_crt_heap_l1_1_0.dll_free]
lea rax, [0x14011d5ae]
jmp 0x1400871e6
test r8d, r8d
jle 0x140087dad
mov eax, r8d
xor ecx, ecx
vmovss xmm0, dword [0x14011acb0]
vmovss xmm1, dword [0x14010f668]
jmp 0x140087d3f
inc rcx
cmp rax, rcx
je 0x140087dad
movzx edx, byte [r15 + rcx*4 + 3]
test edx, edx
je 0x140087d37
cmp edx, 0xff
je 0x140087d37
movzx edx, dl
vcvtsi2ss xmm2, xmm5, edx
vdivss xmm2, xmm0, xmm2
vmovaps xmm3, xmm1
vfnmadd213ss xmm3, xmm2, xmm1
movzx edx, byte [r15 + rcx*4]
vcvtsi2ss xmm4, xmm5, edx
vfmadd213ss xmm4, xmm2, xmm3
vcvttss2si edx, xmm4
mov byte [r15 + rcx*4], dl
movzx edx, byte [r15 + rcx*4 + 1]
vcvtsi2ss xmm4, xmm5, edx
vfmadd213ss xmm4, xmm2, xmm3
vcvttss2si edx, xmm4
mov byte [r15 + rcx*4 + 1], dl
movzx edx, byte [r15 + rcx*4 + 2]
vcvtsi2ss xmm4, xmm5, edx
vfmadd213ss xmm4, xmm2, xmm3
vcvttss2si edx, xmm4
mov byte [r15 + rcx*4 + 2], dl
jmp 0x140087d37
test ebp, 0xfffffffb
je 0x140087e02
cmp dword [rbx], 0x10
jne 0x140087dd9
mov eax, dword [rsp + 0x48]
mov dword [rsp + 0x20], eax
mov rcx, r15
mov edx, 4
mov r8d, ebp
mov r9d, dword [rsp + 0x40]
call fcn.140093cd0
jmp 0x140087df6
mov eax, dword [rsp + 0x48]
mov dword [rsp + 0x20], eax
mov rcx, r15
mov edx, 4
mov r8d, ebp
mov r9d, dword [rsp + 0x40]
call fcn.1400912e0
mov r15, rax
test rax, rax
je 0x1400876ce
mov rax, qword [rsp + 0xa8]
test rax, rax
je 0x140087e15
mov dword [rax], 4
mov rax, qword [rsp + 0xc8]
mov ecx, dword [rsp + 0x48]
mov dword [rax], ecx
mov rax, qword [rsp + 0xc0]
mov ecx, dword [rsp + 0x40]
mov dword [rax], ecx
jmp 0x1400876d1
mov rax, qword [r14 + 0xc8]
mov qword [r14 + 0xc0], rax
jmp 0x14008834d
mov eax, dword [r14 + 4]
test eax, eax
jle 0x140088dcc
mov eax, dword [r14]
add eax, 7
shr eax, 3
neg eax
and eax, 3
mov dword [rsp + 0x48], eax
mov eax, eax
mov qword [rsp + 0x88], rax
xor ebx, ebx
xor eax, eax
jmp 0x140087e98
add rcx, qword [rsp + 0x88]
mov qword [r14 + 0xc0], rcx
mov eax, dword [rsp + 0x60]
inc eax
mov ecx, dword [r14 + 4]
cmp eax, ecx
jge 0x140088aa4
mov rcx, qword [r14 + 0xc0]
mov r9, qword [r14 + 0xc8]
cmp rcx, r9
mov dword [rsp + 0x60], eax
jae 0x140087ec3
lea rdx, [rcx + 1]
mov qword [r14 + 0xc0], rdx
movzx r8d, byte [rcx]
mov rcx, rdx
jmp 0x140087f28
cmp dword [r14 + 0x30], 0
je 0x140087eff
mov r8d, dword [r14 + 0x34]
mov rcx, qword [r14 + 0x28]
mov rdx, r12
call qword [r14 + 0x10]
mov ecx, dword [r14 + 0xc0]
sub ecx, dword [r14 + 0xd0]
add dword [r14 + 0xb8], ecx
test eax, eax
je 0x140087f04
movsxd r9, eax
add r9, r12
movzx r8d, byte [r12]
jmp 0x140087f17
xor r8d, r8d
jmp 0x140087f28
mov dword [r14 + 0x30], 0
mov byte [r14 + 0x38], 0
xor r8d, r8d
mov r9, rsi
mov qword [r14 + 0xc8], r9
mov qword [r14 + 0xc0], rsi
mov rcx, rsi
mov qword [rsp + 0x50], r9
mov edx, dword [r14]
test edx, edx
jle 0x140088048
movzx r8d, r8b
xor edi, edi
mov r9d, 7
mov r10d, ebx
jmp 0x140087f57
dec r9d
mov r10d, ebx
cmp edi, edx
jge 0x140088048
shrx r11d, r8d, r9d
and r11d, 1
movsxd r13, r10d
lea rbx, [r13 + 3]
movzx eax, byte [rsp + r11*4 + 0x140]
mov byte [r15 + r13], al
movzx eax, byte [rsp + r11*4 + 0x141]
mov byte [r15 + r13 + 1], al
movzx eax, byte [rsp + r11*4 + 0x142]
mov byte [r15 + r13 + 2], al
cmp dword [rsp + 0x38], 4
jne 0x140087fa3
add r10d, 4
mov byte [r15 + rbx], 0xff
mov ebx, r10d
inc edi
cmp edi, edx
je 0x140088048
test r9d, r9d
jg 0x140087f49
cmp rcx, qword [rsp + 0x50]
jae 0x140087fcd
lea rax, [rcx + 1]
mov qword [r14 + 0xc0], rax
movzx r8d, byte [rcx]
mov rcx, rax
jmp 0x140088039
cmp dword [r14 + 0x30], 0
je 0x140088008
mov r8d, dword [r14 + 0x34]
mov rcx, qword [r14 + 0x28]
mov rdx, r12
call qword [r14 + 0x10]
mov ecx, dword [r14 + 0xc0]
sub ecx, dword [r14 + 0xd0]
add dword [r14 + 0xb8], ecx
test eax, eax
je 0x14008800d
cdqe
add rax, r12
movzx r8d, byte [r12]
jmp 0x140088020
xor r8d, r8d
jmp 0x140088039
mov dword [r14 + 0x30], 0
mov byte [r14 + 0x38], 0
xor r8d, r8d
mov rax, rsi
mov qword [rsp + 0x50], rax
mov qword [r14 + 0xc8], rax
mov qword [r14 + 0xc0], rsi
mov edx, dword [r14]
mov rcx, rsi
movzx r8d, r8b
mov r9d, 7
jmp 0x140087f4c
cmp dword [rsp + 0x48], 0
je 0x140087e86
cmp qword [r14 + 0x10], 0
mov r8, qword [rsp + 0x50]
je 0x140087e77
mov eax, r8d
sub eax, ecx
mov edx, dword [rsp + 0x48]
sub edx, eax
jle 0x140087e77
mov qword [r14 + 0xc0], r8
mov rcx, qword [r14 + 0x28]
call qword [r14 + 0x18]
jmp 0x140087e86
mov eax, dword [r14]
mov edx, dword [r14 + 4]
test edx, edx
jle 0x140088aa1
neg eax
and eax, 3
mov dword [rsp + 0x48], eax
mov eax, eax
mov qword [rsp + 0x88], rax
xor ebx, ebx
xor eax, eax
mov r11d, dword [rsp + 0x38]
jmp 0x1400880db
mov qword [r14 + 0xc0], rcx
mov rcx, qword [r14 + 0x28]
call qword [r14 + 0x18]
mov r11d, dword [rsp + 0x38]
mov eax, dword [rsp + 0x50]
inc eax
mov ecx, dword [r14 + 4]
cmp eax, ecx
jge 0x140088aa9
mov dword [rsp + 0x50], eax
cmp dword [r14], 0
jle 0x1400882d4
mov rcx, qword [r14 + 0xc0]
mov rax, qword [r14 + 0xc8]
xor edi, edi
jmp 0x140088107
add edi, 2
cmp edi, dword [r14]
jge 0x1400882d4
cmp rcx, rax
jae 0x14008811f
lea r8, [rcx + 1]
mov qword [r14 + 0xc0], r8
movzx edx, byte [rcx]
mov rcx, r8
jmp 0x140088186
cmp dword [r14 + 0x30], 0
je 0x14008815a
mov r8d, dword [r14 + 0x34]
mov rcx, qword [r14 + 0x28]
mov rdx, r12
call qword [r14 + 0x10]
mov ecx, dword [r14 + 0xc0]
sub ecx, dword [r14 + 0xd0]
add dword [r14 + 0xb8], ecx
test eax, eax
je 0x14008815e
cdqe
add rax, r12
movzx edx, byte [r12]
jmp 0x140088170
xor edx, edx
jmp 0x140088186
mov dword [r14 + 0x30], 0
mov byte [r14 + 0x38], 0
xor edx, edx
mov rax, rsi
mov r11d, dword [rsp + 0x38]
mov qword [r14 + 0xc8], rax
mov qword [r14 + 0xc0], rsi
mov rcx, rsi
movzx r8d, dl
mov edx, r8d
and edx, 0xf
mov r9d, r8d
shr r9d, 4
cmp dword [rsp + 0x60], 4
cmovne r9d, r8d
mov r8d, 0
cmovne edx, r8d
movsxd r8, ebx
lea r13, [r8 + 3]
movzx r10d, byte [rsp + r9*4 + 0x140]
mov byte [r15 + r8], r10b
movzx r10d, byte [rsp + r9*4 + 0x141]
mov byte [r15 + r8 + 1], r10b
movzx r9d, byte [rsp + r9*4 + 0x142]
mov byte [r15 + r8 + 2], r9b
cmp r11d, 4
jne 0x1400881eb
add ebx, 4
mov byte [r15 + r13], 0xff
mov r13d, ebx
lea r8d, [rdi + 1]
cmp r8d, dword [r14]
je 0x1400882d1
cmp dword [rsp + 0x60], 8
jne 0x140088285
cmp rcx, rax
jae 0x14008821b
lea r8, [rcx + 1]
mov qword [r14 + 0xc0], r8
movzx edx, byte [rcx]
mov rcx, r8
jmp 0x140088282
cmp dword [r14 + 0x30], 0
je 0x140088256
mov r8d, dword [r14 + 0x34]
mov rcx, qword [r14 + 0x28]
mov rdx, r12
call qword [r14 + 0x10]
mov ecx, dword [r14 + 0xc0]
sub ecx, dword [r14 + 0xd0]
add dword [r14 + 0xb8], ecx
test eax, eax
je 0x14008825a
cdqe
add rax, r12
movzx edx, byte [r12]
jmp 0x14008826c
xor edx, edx
jmp 0x140088282
mov dword [r14 + 0x30], 0
mov byte [r14 + 0x38], 0
xor edx, edx
mov rax, rsi
mov r11d, dword [rsp + 0x38]
mov qword [r14 + 0xc8], rax
mov qword [r14 + 0xc0], rsi
mov rcx, rsi
movzx edx, dl
movsxd r8, r13d
lea rbx, [r8 + 3]
mov edx, edx
movzx r9d, byte [rsp + rdx*4 + 0x140]
mov byte [r15 + r8], r9b
movzx r9d, byte [rsp + rdx*4 + 0x141]
mov byte [r15 + r8 + 1], r9b
movzx edx, byte [rsp + rdx*4 + 0x142]
mov byte [r15 + r8 + 2], dl
cmp r11d, 4
jne 0x1400880fb
add r13d, 4
mov byte [r15 + rbx], 0xff
mov ebx, r13d
jmp 0x1400880fb
mov ebx, r13d
cmp dword [rsp + 0x48], 0
je 0x1400880c9
cmp qword [r14 + 0x10], 0
je 0x140088309
mov rax, qword [r14 + 0xc0]
mov rcx, qword [r14 + 0xc8]
mov r8d, ecx
sub r8d, eax
mov edx, dword [rsp + 0x48]
sub edx, r8d
jg 0x1400880b5
jmp 0x140088310
mov rax, qword [r14 + 0xc0]
add rax, qword [rsp + 0x88]
mov qword [r14 + 0xc0], rax
jmp 0x1400880c9
mov rcx, r15
call qword [sym.imp.api_ms_win_crt_heap_l1_1_0.dll_free]
lea rax, str.bad_bpp
jmp 0x1400876ca
mov rax, qword [r14 + 0xc0]
mov ecx, r9d
add rcx, rax
mov qword [r14 + 0xc0], rcx
mov ebx, dword [rsp + 0x60]
cmp ebx, 0x10
mov qword [rsp + 0x50], r13
je 0x14008838b
cmp ebx, 0x20
je 0x14008839f
mov dword [rsp + 0x94], 0
cmp ebx, 0x18
jne 0x140088423
mov eax, dword [r14]
and eax, 3
mov dword [rsp + 0x94], eax
mov dword [rsp + 0x5c], 0
jmp 0x1400883de
mov eax, dword [r14]
add eax, eax
and eax, 2
mov dword [rsp + 0x94], eax
jmp 0x140088423
mov eax, dword [rsp + 0x70]
xor eax, 0xff
mov ecx, dword [rsp + 0x80]
xor ecx, 0xff00
or ecx, eax
mov eax, dword [rsp + 0x88]
xor eax, 0xff0000
or eax, ecx
sete al
mov dword [rsp + 0x94], 0
test al, dil
je 0x140088423
mov al, 1
mov dword [rsp + 0x5c], eax
mov dword [rsp + 0xb4], 0
mov dword [rsp + 0x68], 0
mov dword [rsp + 0x40], 0
mov dword [rsp + 0x78], 0
mov dword [rsp + 0xa4], 0
xor ebx, ebx
xor r13d, r13d
mov dword [rsp + 0xb8], 0
xor eax, eax
jmp 0x140088509
cmp dword [rsp + 0x88], 0
je 0x140088a8c
cmp dword [rsp + 0x80], 0
je 0x140088a8c
cmp dword [rsp + 0x70], 0
je 0x140088a8c
mov edi, dword [rsp + 0x88]
mov ecx, edi
call fcn.1400994b0
mov dword [rsp + 0x68], eax
mov ecx, edi
call fcn.140099520
mov ebx, eax
mov edi, dword [rsp + 0x80]
mov ecx, edi
call fcn.1400994b0
mov dword [rsp + 0x40], eax
mov ecx, edi
call fcn.140099520
mov r13d, eax
mov edi, dword [rsp + 0x70]
mov ecx, edi
call fcn.1400994b0
mov dword [rsp + 0x78], eax
mov ecx, edi
call fcn.140099520
mov dword [rsp + 0xb8], eax
mov edi, dword [rsp + 0x48]
mov ecx, edi
call fcn.1400994b0
mov dword [rsp + 0xa4], eax
mov ecx, edi
call fcn.140099520
cmp ebx, 8
ja 0x140088a8c
cmp r13d, 8
ja 0x140088a8c
cmp dword [rsp + 0xb8], 8
ja 0x140088a8c
cmp eax, 9
jae 0x140088a8c
add dword [rsp + 0x68], 0xfffffff9
add dword [rsp + 0x40], 0xfffffff9
add dword [rsp + 0x78], 0xfffffff9
add dword [rsp + 0xa4], 0xfffffff9
mov dword [rsp + 0x5c], 0
mov cl, 1
mov dword [rsp + 0xb4], ecx
mov edx, dword [r14 + 4]
test edx, edx
jle 0x140088aa1
mov ecx, dword [rsp + 0x68]
neg ecx
mov dword [rsp + 0xb0], ecx
mov ecx, 8
mov edx, 8
sub edx, ebx
mov dword [rsp + 0xf4], edx
mov edx, ebx
mov qword [rsp + 0x110], rdx
mov edx, dword [rsp + 0x40]
neg edx
mov dword [rsp + 0xf0], edx
mov edx, 8
sub edx, r13d
mov dword [rsp + 0xec], edx
mov edx, r13d
mov qword [rsp + 0x108], rdx
mov edx, dword [rsp + 0x78]
neg edx
mov dword [rsp + 0xe8], edx
mov edx, 8
mov r8d, dword [rsp + 0xb8]
sub edx, r8d
mov dword [rsp + 0xe4], edx
mov edx, r8d
mov qword [rsp + 0xb8], rdx
mov edx, dword [rsp + 0xa4]
neg edx
mov dword [rsp + 0xdc], edx
sub ecx, eax
mov dword [rsp + 0xe0], ecx
mov eax, eax
mov qword [rsp + 0x100], rax
mov eax, dword [rsp + 0x94]
mov qword [rsp + 0xf8], rax
xor edi, edi
xor ebx, ebx
mov r11d, dword [rsp + 0x38]
jmp 0x1400885f6
mov rax, qword [r14 + 0xc0]
add rax, qword [rsp + 0xf8]
mov qword [r14 + 0xc0], rax
inc ebx
mov ecx, dword [r14 + 4]
cmp ebx, ecx
jge 0x140088aa9
mov eax, dword [r14]
cmp byte [rsp + 0xb4], 0
mov dword [rsp + 0xd8], ebx
je 0x1400887c8
test eax, eax
jle 0x140088a2f
xor ebx, ebx
mov eax, edi
jmp 0x140088630
or dword [rsp + 0x98], eax
inc ebx
mov eax, edi
cmp ebx, dword [r14]
jge 0x140088a2f
mov dword [rsp + 0x50], eax
mov rcx, r14
call fcn.140098e00
mov r13d, eax
cmp dword [rsp + 0x60], 0x10
je 0x140088654
mov rcx, r14
call fcn.140098e00
shl eax, 0x10
or r13d, eax
mov eax, r13d
and eax, dword [rsp + 0x88]
mov edx, dword [rsp + 0x68]
test edx, edx
mov ecx, dword [rsp + 0xb0]
shlx ecx, eax, ecx
shrx eax, eax, edx
cmovs eax, ecx
mov ecx, dword [rsp + 0xf4]
shrx eax, eax, ecx
mov r10, qword [rsp + 0x110]
lea rdi, [0x14011a780]
imul eax, dword [rdi + r10*4]
mov ecx, r13d
and ecx, dword [rsp + 0x80]
mov r8d, dword [rsp + 0x40]
test r8d, r8d
mov edx, dword [rsp + 0xf0]
shlx edx, ecx, edx
shrx ecx, ecx, r8d
cmovs ecx, edx
mov edx, dword [rsp + 0xec]
shrx ecx, ecx, edx
mov r11, qword [rsp + 0x108]
imul ecx, dword [rdi + r11*4]
mov edx, r13d
and edx, dword [rsp + 0x70]
mov r9d, dword [rsp + 0x78]
test r9d, r9d
mov r8d, dword [rsp + 0xe8]
shlx r8d, edx, r8d
shrx edx, edx, r9d
cmovs edx, r8d
lea r9, [0x14011a7b0]
movzx r8d, byte [r9 + r10*4]
mov r10, rdi
sarx eax, eax, r8d
mov r8d, dword [rsp + 0x50]
movsxd rdi, r8d
mov byte [r15 + rdi], al
movzx eax, byte [r9 + r11*4]
sarx eax, ecx, eax
mov ecx, dword [rsp + 0xe4]
shrx ecx, edx, ecx
mov rdx, qword [rsp + 0xb8]
imul ecx, dword [r10 + rdx*4]
mov byte [r15 + rdi + 1], al
movzx eax, byte [r9 + rdx*4]
sarx eax, ecx, eax
mov byte [r15 + rdi + 2], al
mov eax, dword [rsp + 0x48]
test eax, eax
mov r11d, dword [rsp + 0x38]
je 0x1400887a5
and r13d, eax
mov ecx, dword [rsp + 0xa4]
test ecx, ecx
mov eax, dword [rsp + 0xdc]
shlx eax, r13d, eax
shrx ecx, r13d, ecx
cmovs ecx, eax
mov eax, dword [rsp + 0xe0]
shrx eax, ecx, eax
mov rcx, qword [rsp + 0x100]
imul eax, dword [r10 + rcx*4]
movzx ecx, byte [r9 + rcx*4]
sarx eax, eax, ecx
jmp 0x1400887aa
mov eax, 0xff
add rdi, 3
cmp r11d, 4
jne 0x14008861c
add r8d, 4
mov byte [r15 + rdi], al
mov edi, r8d
jmp 0x14008861c
test eax, eax
jle 0x140088a2f
mov rcx, qword [r14 + 0xc0]
mov rax, qword [r14 + 0xc8]
xor r13d, r13d
mov ebx, edi
jmp 0x1400887fd
movzx edx, dl
or dword [rsp + 0x98], edx
inc r13d
mov ebx, edi
cmp r13d, dword [r14]
jge 0x140088a2f
cmp rcx, rax
jae 0x140088815
lea r8, [rcx + 1]
mov qword [r14 + 0xc0], r8
movzx edx, byte [rcx]
mov rcx, r8
jmp 0x14008887c
cmp dword [r14 + 0x30], 0
je 0x140088850
mov r8d, dword [r14 + 0x34]
mov rcx, qword [r14 + 0x28]
mov rdx, r12
call qword [r14 + 0x10]
mov ecx, dword [r14 + 0xc0]
sub ecx, dword [r14 + 0xd0]
add dword [r14 + 0xb8], ecx
test eax, eax
je 0x140088854
cdqe
add rax, r12
movzx edx, byte [r12]
jmp 0x140088866
xor edx, edx
jmp 0x14008887c
mov dword [r14 + 0x30], 0
mov byte [r14 + 0x38], 0
xor edx, edx
mov rax, rsi
mov qword [r14 + 0xc8], rax
mov qword [r14 + 0xc0], rsi
mov rcx, rsi
mov r11d, dword [rsp + 0x38]
movsxd rdi, ebx
mov byte [rdi + r15 + 2], dl
cmp rcx, rax
jae 0x14008889c
lea r8, [rcx + 1]
mov qword [r14 + 0xc0], r8
movzx edx, byte [rcx]
mov rcx, r8
jmp 0x140088903
cmp dword [r14 + 0x30], 0
je 0x1400888d7
mov r8d, dword [r14 + 0x34]
mov rcx, qword [r14 + 0x28]
mov rdx, r12
call qword [r14 + 0x10]
mov ecx, dword [r14 + 0xc0]
sub ecx, dword [r14 + 0xd0]
add dword [r14 + 0xb8], ecx
test eax, eax
je 0x1400888db
cdqe
add rax, r12
movzx edx, byte [r12]
jmp 0x1400888ed
xor edx, edx
jmp 0x140088903
mov dword [r14 + 0x30], 0
mov byte [r14 + 0x38], 0
xor edx, edx
mov rax, rsi
mov r11d, dword [rsp + 0x38]
mov qword [r14 + 0xc8], rax
mov qword [r14 + 0xc0], rsi
mov rcx, rsi
mov byte [rdi + r15 + 1], dl
cmp rcx, rax
jae 0x140088920
lea r8, [rcx + 1]
mov qword [r14 + 0xc0], r8
movzx edx, byte [rcx]
mov rcx, r8
jmp 0x140088987
cmp dword [r14 + 0x30], 0
je 0x14008895b
mov r8d, dword [r14 + 0x34]
mov rcx, qword [r14 + 0x28]
mov rdx, r12
call qword [r14 + 0x10]
mov ecx, dword [r14 + 0xc0]
sub ecx, dword [r14 + 0xd0]
add dword [r14 + 0xb8], ecx
test eax, eax
je 0x14008895f
cdqe
add rax, r12
movzx edx, byte [r12]
jmp 0x140088971
xor edx, edx
jmp 0x140088987
mov dword [r14 + 0x30], 0
mov byte [r14 + 0x38], 0
xor edx, edx
mov rax, rsi
mov r11d, dword [rsp + 0x38]
mov qword [r14 + 0xc8], rax
mov qword [r14 + 0xc0], rsi
mov rcx, rsi
mov byte [r15 + rdi], dl
mov dl, 0xff
cmp byte [rsp + 0x5c], 0
je 0x140088a13
cmp rcx, rax
jae 0x1400889ac
lea r8, [rcx + 1]
mov qword [r14 + 0xc0], r8
movzx edx, byte [rcx]
mov rcx, r8
jmp 0x140088a13
cmp dword [r14 + 0x30], 0
je 0x1400889e7
mov r8d, dword [r14 + 0x34]
mov rcx, qword [r14 + 0x28]
mov rdx, r12
call qword [r14 + 0x10]
mov ecx, dword [r14 + 0xc0]
sub ecx, dword [r14 + 0xd0]
add dword [r14 + 0xb8], ecx
test eax, eax
je 0x1400889eb
cdqe
add rax, r12
movzx edx, byte [r12]
jmp 0x1400889fd
xor edx, edx
jmp 0x140088a13
mov dword [r14 + 0x30], 0
mov byte [r14 + 0x38], 0
xor edx, edx
mov rax, rsi
mov r11d, dword [rsp + 0x38]
mov qword [r14 + 0xc8], rax
mov qword [r14 + 0xc0], rsi
mov rcx, rsi
add rdi, 3
cmp r11d, 4
jne 0x1400887e5
add ebx, 4
mov byte [r15 + rdi], dl
mov edi, ebx
jmp 0x1400887e5
cmp dword [rsp + 0x94], 0
mov ebx, dword [rsp + 0xd8]
je 0x1400885e8
cmp qword [r14 + 0x10], 0
je 0x1400885d2
mov rax, qword [r14 + 0xc0]
mov rcx, qword [r14 + 0xc8]
mov r8d, ecx
sub r8d, eax
mov edx, dword [rsp + 0x94]
sub edx, r8d
jle 0x1400885d9
mov qword [r14 + 0xc0], rcx
mov rcx, qword [r14 + 0x28]
call qword [r14 + 0x18]
mov r11d, dword [rsp + 0x38]
jmp 0x1400885e8
mov rcx, r15
call qword [sym.imp.api_ms_win_crt_heap_l1_1_0.dll_free]
lea rax, str.bad_masks
jmp 0x1400871e6
mov rcx, rdx
mov r11d, dword [rsp + 0x38]
cmp r11d, 4
jne 0x140088b2d
cmp dword [rsp + 0x98], 0
jne 0x140088b2d
mov edx, dword [r14]
imul edx, ecx
shl edx, 2
dec edx
js 0x140088b2d
mov r8d, edx
shr r8d, 2
inc r8d
mov rax, rdx
and r8d, 7
je 0x140088aea
mov rax, rdx
mov byte [r15 + rax], 0xff
add rax, 0xfffffffffffffffc
dec r8
jne 0x140088adc
cmp edx, 0x1c
jb 0x140088b2d
add rax, 4
mov byte [r15 + rax - 4], 0xff
mov byte [r15 + rax - 8], 0xff
mov byte [r15 + rax - 0xc], 0xff
mov byte [r15 + rax - 0x10], 0xff
mov byte [r15 + rax - 0x14], 0xff
mov byte [r15 + rax - 0x18], 0xff
mov byte [r15 + rax - 0x1c], 0xff
mov byte [r15 + rax - 0x20], 0xff
add rax, 0xffffffffffffffe0
cmp rax, 3
ja 0x140088af3
cmp dword [rsp + 0xd4], 0
mov qword [rsp + 0x60], rcx
jle 0x140088d54
mov eax, dword [r14]
mov dword [rsp + 0x70], eax
cmp ecx, 2
jl 0x140088d5b
mov rcx, qword [rsp + 0x60]
mov eax, ecx
shr eax, 1
mov qword [rsp + 0x98], rax
mov eax, dword [rsp + 0x70]
mov edx, eax
imul edx, dword [rsp + 0x38]
lea rax, [r15 + rdx]
mov qword [rsp + 0x88], rax
mov r12d, edx
and r12d, 0xffffffc0
mov eax, edx
and eax, 0xfffffff0
mov qword [rsp + 0x68], rax
mov rax, rdx
neg rax
mov qword [rsp + 0x48], rax
lea rax, [r15 + 0x20]
mov qword [rsp + 0x78], rax
lea ebx, [rcx - 1]
imul ebx, edx
lea rax, [r15 + 1]
mov qword [rsp + 0x80], rax
xor r13d, r13d
xor edi, edi
mov qword [rsp + 0x40], r12
jmp 0x140088bd1
inc rdi
add r13d, edx
sub ebx, edx
cmp rdi, qword [rsp + 0x98]
je 0x140088d5b
test edx, edx
jle 0x140088bbb
mov r8d, ebx
mov r9d, r13d
mov eax, edx
imul eax, edi
lea rcx, [r15 + rax]
mov esi, edi
not esi
add esi, dword [rsp + 0x60]
cmp edx, 0x10
mov qword [rsp + 0x50], rcx
jb 0x140088c21
mov r10d, edx
imul r10d, esi
mov r12, qword [rsp + 0x88]
lea r11, [r12 + r10]
cmp rcx, r11
jae 0x140088ca2
add rax, r12
add r10, r15
cmp r10, rax
jae 0x140088ca2
xor r11d, r11d
mov rax, r11
test dl, 1
je 0x140088c50
imul esi, edx
add rsi, r15
mov rcx, qword [rsp + 0x50]
movzx eax, byte [rcx + r11]
movzx r10d, byte [rsi + r11]
mov byte [rcx + r11], r10b
mov byte [rsi + r11], al
mov rax, r11
or rax, 1
not r11
cmp r11, qword [rsp + 0x48]
je 0x140088bbb
mov r10, qword [rsp + 0x80]
add r8, r10
add r9, r10
movzx r10d, byte [r9 + rax - 1]
movzx r11d, byte [r8 + rax - 1]
mov byte [r9 + rax - 1], r11b
mov byte [r8 + rax - 1], r10b
movzx r10d, byte [r9 + rax]
movzx r11d, byte [r8 + rax]
mov byte [r9 + rax], r11b
mov byte [r8 + rax], r10b
add rax, 2
cmp rdx, rax
jne 0x140088c6c
jmp 0x140088bbb
cmp edx, 0x40
jae 0x140088cab
xor eax, eax
jmp 0x140088d15
mov r10, qword [rsp + 0x78]
lea rax, [r10 + r9]
lea r11, [r10 + r8]
xor r10d, r10d
mov r12, qword [rsp + 0x40]
vmovups ymm0, ymmword [rax + r10 - 0x20]
vmovups ymm1, ymmword [rax + r10]
vmovups ymm2, ymmword [r11 + r10 - 0x20]
vmovups ymm3, ymmword [r11 + r10]
vmovups ymmword [rax + r10 - 0x20], ymm2
vmovups ymmword [rax + r10], ymm3
vmovups ymmword [r11 + r10 - 0x20], ymm0
vmovups ymmword [r11 + r10], ymm1
add r10, 0x40
cmp r12, r10
jne 0x140088cc0
cmp r12, rdx
je 0x140088bbb
mov rax, r12
mov r11, r12
test dl, 0x30
je 0x140088c24
lea r10, [r15 + r9]
lea r11, [r15 + r8]
mov r12, qword [rsp + 0x68]
vmovups xmm0, xmmword [r10 + rax]
vmovups xmm1, xmmword [r11 + rax]
vmovups xmmword [r10 + rax], xmm1
vmovups xmmword [r11 + rax], xmm0
add rax, 0x10
cmp r12, rax
jne 0x140088d22
mov r11, r12
cmp r12, rdx
je 0x140088bbb
jmp 0x140088c24
mov eax, dword [r14]
mov dword [rsp + 0x70], eax
test ebp, ebp
je 0x140088d94
mov edx, dword [rsp + 0x38]
cmp edx, ebp
je 0x140088d94
mov rax, qword [rsp + 0x60]
mov dword [rsp + 0x20], eax
mov rcx, r15
mov r8d, ebp
mov r9d, dword [rsp + 0x70]
vzeroupper
call fcn.1400912e0
test rax, rax
je 0x1400876ce
mov r15, rax
mov ecx, dword [r14]
jmp 0x140088d98
mov ecx, dword [rsp + 0x70]
mov rax, qword [rsp + 0xc0]
mov dword [rax], ecx
mov eax, dword [r14 + 4]
mov rcx, qword [rsp + 0xc8]
mov dword [rcx], eax
mov rcx, qword [rsp + 0xa8]
test rcx, rcx
je 0x1400876d1
mov eax, dword [r14 + 8]
mov dword [rcx], eax
jmp 0x1400876d1
mov rcx, rax
jmp 0x140088aa4
push r15
push r14
push r13
push r12
push rsi
push rdi
push rbp
push rbx
sub rsp, 0xb8
mov rdi, r9
mov r14, r8
mov r13, rdx
mov r15, rcx
mov rax, qword [0x140206880]
xor rax, rsp
mov qword [rsp + 0xb0], rax
lea r12, [rcx + 0x38]
lea rbx, [rcx + 0x39]
mov rcx, qword [rcx + 0xc0]
mov rax, qword [r15 + 0xc8]
mov esi, 0x5c
jmp 0x1400895fe
inc rcx
mov qword [r15 + 0xc0], rcx
dec esi
je 0x140089655
cmp rcx, rax
jb 0x1400895f0
cmp dword [r15 + 0x30], 0
je 0x1400895fa
mov r8d, dword [r15 + 0x34]
mov rcx, qword [r15 + 0x28]
mov rdx, r12
call qword [r15 + 0x10]
mov ecx, dword [r15 + 0xc0]
sub ecx, dword [r15 + 0xd0]
add dword [r15 + 0xb8], ecx
test eax, eax
je 0x140089639
cdqe
add rax, r12
jmp 0x140089649
mov dword [r15 + 0x30], 0
mov byte [r15 + 0x38], 0
mov rax, rbx
mov qword [r15 + 0xc8], rax
mov rcx, rbx
jmp 0x1400895f3
mov rcx, r15
call fcn.140095790
mov esi, eax
mov rcx, r15
call fcn.140095790
mov ebp, eax
cmp qword [r15 + 0x10], 0
je 0x140089683
mov rcx, qword [r15 + 0x28]
call qword [r15 + 0x20]
test eax, eax
je 0x140089693
cmp dword [r15 + 0x30], 0
je 0x1400896fc
mov rax, qword [r15 + 0xc0]
cmp rax, qword [r15 + 0xc8]
jae 0x1400896fc
test ebp, ebp
je 0x14008971b
mov eax, 0x7fffffff
xor edx, edx
div ebp
cmp eax, esi
jb 0x140089f15
mov eax, ebp
imul eax, esi
cmp eax, 0x20000000
jae 0x140089f15
mov qword [rsp + 0x38], r13
mov qword [rsp + 0x40], r14
mov rcx, r15
call fcn.140095790
mov rcx, r15
call fcn.140095790
mov rcx, r15
call fcn.140095790
mov rcx, r15
call fcn.140095790
test ebp, ebp
je 0x140089745
mov eax, 0x7fffffff
xor edx, edx
div ebp
cmp eax, esi
jae 0x140089745
jmp 0x140089ef9
mov eax, dword [0x140210b70]
mov rcx, qword gs:[0x58]
mov rax, qword [rcx + rax*8]
lea rcx, [0x14011ed15]
jmp 0x140089f2f
mov qword [rsp + 0x38], r13
mov qword [rsp + 0x40], r14
mov rcx, r15
call fcn.140095790
mov rcx, r15
call fcn.140095790
mov rcx, r15
call fcn.140095790
mov rcx, r15
call fcn.140095790
mov r13d, ebp
imul r13d, esi
cmp r13d, 0x1fffffff
ja 0x140089ef9
shl r13d, 2
mov rcx, r13
call qword [sym.imp.api_ms_win_crt_heap_l1_1_0.dll_malloc]
test rax, rax
je 0x140089ef9
mov qword [rsp + 0x28], rsi
mov qword [rsp + 0x50], rdi
mov qword [rsp + 0x48], rax
mov rcx, rax
mov dl, 0xff
mov r8, r13
call sub.VCRUNTIME140.dll_memset
xor esi, esi
lea rdi, [rsp + 0x92]
xor r13d, r13d
mov dword [rsp + 0x5c], ebp
nop dword [rax]
cmp rsi, 0xa
je 0x140089f5f
mov rcx, qword [r15 + 0xc0]
mov rax, qword [r15 + 0xc8]
cmp rcx, rax
jae 0x140089800
lea rdx, [rcx + 1]
mov qword [r15 + 0xc0], rdx
movzx ecx, byte [rcx]
mov dword [rsp + 0x34], ecx
mov rcx, rdx
cmp rcx, rax
jae 0x140089880
lea rdx, [rcx + 1]
mov qword [r15 + 0xc0], rdx
movzx ebp, byte [rcx]
mov rcx, rdx
jmp 0x1400898e2
cmp dword [r15 + 0x30], 0
je 0x14008983f
mov r8d, dword [r15 + 0x34]
mov rcx, qword [r15 + 0x28]
mov rdx, r12
call qword [r15 + 0x10]
mov ecx, dword [r15 + 0xc0]
sub ecx, dword [r15 + 0xd0]
add dword [r15 + 0xb8], ecx
test eax, eax
je 0x14008984e
cdqe
add rax, r12
movzx ecx, byte [r12]
mov dword [rsp + 0x34], ecx
jmp 0x140089866
mov dword [rsp + 0x34], 0
cmp rcx, rax
jb 0x1400897db
jmp 0x140089880
mov dword [r15 + 0x30], 0
mov byte [r15 + 0x38], 0
mov dword [rsp + 0x34], 0
mov rax, rbx
mov qword [r15 + 0xc8], rax
mov qword [r15 + 0xc0], rbx
mov rcx, rbx
cmp rcx, rax
jb 0x1400897db
cmp dword [r15 + 0x30], 0
je 0x1400898bb
mov r8d, dword [r15 + 0x34]
mov rcx, qword [r15 + 0x28]
mov rdx, r12
call qword [r15 + 0x10]
mov ecx, dword [r15 + 0xc0]
sub ecx, dword [r15 + 0xd0]
add dword [r15 + 0xb8], ecx
test eax, eax
je 0x1400898bf
cdqe
add rax, r12
movzx ebp, byte [r12]
jmp 0x1400898d1
xor ebp, ebp
jmp 0x1400898e2
mov dword [r15 + 0x30], 0
mov byte [r15 + 0x38], 0
xor ebp, ebp
mov rax, rbx
mov qword [r15 + 0xc8], rax
mov qword [r15 + 0xc0], rbx
mov rcx, rbx
mov byte [rdi - 2], bpl
cmp rcx, rax
jae 0x140089900
lea r8, [rcx + 1]
mov qword [r15 + 0xc0], r8
movzx edx, byte [rcx]
mov rcx, r8
jmp 0x140089962
cmp dword [r15 + 0x30], 0
je 0x14008993b
mov r8d, dword [r15 + 0x34]
mov rcx, qword [r15 + 0x28]
mov rdx, r12
call qword [r15 + 0x10]
mov ecx, dword [r15 + 0xc0]
sub ecx, dword [r15 + 0xd0]
add dword [r15 + 0xb8], ecx
test eax, eax
je 0x14008993f
cdqe
add rax, r12
movzx edx, byte [r12]
jmp 0x140089951
xor edx, edx
jmp 0x140089962
mov dword [r15 + 0x30], 0
mov byte [r15 + 0x38], 0
xor edx, edx
mov rax, rbx
mov qword [r15 + 0xc8], rax
mov qword [r15 + 0xc0], rbx
mov rcx, rbx
mov byte [rdi - 1], dl
cmp rcx, rax
jae 0x140089980
lea rdx, [rcx + 1]
mov qword [r15 + 0xc0], rdx
movzx r14d, byte [rcx]
mov rcx, rdx
jmp 0x1400899e4
cmp dword [r15 + 0x30], 0
je 0x1400899bb
mov r8d, dword [r15 + 0x34]
mov rcx, qword [r15 + 0x28]
mov rdx, r12
call qword [r15 + 0x10]
mov ecx, dword [r15 + 0xc0]
sub ecx, dword [r15 + 0xd0]
add dword [r15 + 0xb8], ecx
test eax, eax
je 0x1400899c0
cdqe
add rax, r12
movzx r14d, byte [r12]
jmp 0x1400899d3
xor r14d, r14d
jmp 0x1400899e4
mov dword [r15 + 0x30], 0
mov byte [r15 + 0x38], 0
xor r14d, r14d
mov rax, rbx
mov qword [r15 + 0xc8], rax
mov qword [r15 + 0xc0], rbx
mov rcx, rbx
mov byte [rdi], r14b
cmp qword [r15 + 0x10], 0
je 0x140089a13
mov rcx, qword [r15 + 0x28]
call qword [r15 + 0x20]
test eax, eax
je 0x140089a1c
cmp dword [r15 + 0x30], 0
je 0x140089f7b
mov rcx, qword [r15 + 0xc0]
mov rax, qword [r15 + 0xc8]
cmp rcx, rax
jae 0x140089f7b
cmp bpl, 8
jne 0x140089f5f
movzx eax, r14b
or r13d, eax
add rdi, 3
inc rsi
cmp byte [rsp + 0x34], 0
mov eax, dword [rsp + 0x5c]
jne 0x1400897a0
and r13d, 0x10
cmp r13d, 1
mov r8d, 4
sbb r8d, 0
mov rdi, qword [rsp + 0x50]
test rdi, rdi
je 0x140089a62
mov dword [rdi], r8d
test eax, eax
mov r14, qword [rsp + 0x40]
mov ebp, dword [rsp + 0x120]
mov r13, qword [rsp + 0x38]
je 0x140089eea
mov ecx, eax
mov rax, qword [rsp + 0x28]
lea eax, [rax*4]
mov ecx, ecx
mov qword [rsp + 0x70], rcx
xor ecx, ecx
mov dword [rsp + 0x34], r8d
mov qword [rsp + 0x40], r14
mov qword [rsp + 0x38], r13
mov dword [rsp + 0x6c], eax
mov qword [rsp + 0x78], rcx
imul eax, ecx
cdqe
add rax, qword [rsp + 0x48]
mov qword [rsp + 0x60], rax
xor edx, edx
jmp 0x140089aec
mov rdx, qword [rsp + 0x80]
inc rdx
cmp rsi, rdx
mov rdi, qword [rsp + 0x50]
mov r14, qword [rsp + 0x40]
mov ebp, dword [rsp + 0x120]
mov r13, qword [rsp + 0x38]
mov r8d, dword [rsp + 0x34]
je 0x140089ed3
lea rax, [rdx + rdx*2]
movzx ecx, byte [rsp + rax + 0x91]
test ecx, ecx
mov qword [rsp + 0x80], rdx
je 0x140089ced
cmp ecx, 1
je 0x140089d31
cmp ecx, 2
jne 0x14008a029
cmp dword [rsp + 0x28], 0
je 0x140089abd
lea rdi, [rsp + rax]
add rdi, 0x92
mov rax, qword [rsp + 0x28]
mov r14d, eax
mov r13, qword [rsp + 0x60]
mov rcx, qword [r15 + 0xc0]
mov rax, qword [r15 + 0xc8]
cmp rcx, rax
jae 0x140089b5f
lea rdx, [rcx + 1]
mov qword [r15 + 0xc0], rdx
movzx ebp, byte [rcx]
mov rcx, rdx
jmp 0x140089bc1
cmp dword [r15 + 0x30], 0
je 0x140089b9a
mov r8d, dword [r15 + 0x34]
mov rcx, qword [r15 + 0x28]
mov rdx, r12
call qword [r15 + 0x10]
mov ecx, dword [r15 + 0xc0]
sub ecx, dword [r15 + 0xd0]
add dword [r15 + 0xb8], ecx
test eax, eax
je 0x140089b9e
cdqe
add rax, r12
movzx ebp, byte [r12]
jmp 0x140089bb0
xor ebp, ebp
jmp 0x140089bc1
mov dword [r15 + 0x30], 0
mov byte [r15 + 0x38], 0
xor ebp, ebp
mov rax, rbx
mov qword [r15 + 0xc8], rax
mov qword [r15 + 0xc0], rbx
mov rcx, rbx
cmp qword [r15 + 0x10], 0
je 0x140089bed
mov rcx, qword [r15 + 0x28]
call qword [r15 + 0x20]
test eax, eax
je 0x140089bf6
cmp dword [r15 + 0x30], 0
je 0x14008a003
mov rcx, qword [r15 + 0xc0]
mov rax, qword [r15 + 0xc8]
cmp rcx, rax
jae 0x14008a003
movzx eax, bpl
test al, al
js 0x140089c39
lea ebp, [rax + 1]
mov ecx, r14d
mov dword [rsp + 0x68], ebp
cmp r14d, eax
jbe 0x14008a003
movzx edx, byte [rdi]
mov rcx, r15
mov r8, r13
call fcn.14009aff0
test rax, rax
je 0x140089f9c
add r13, 4
dec ebp
jne 0x140089c11
mov ebp, dword [rsp + 0x68]
jmp 0x140089cdf
cmp eax, 0x80
jne 0x140089c4c
mov rcx, r15
call fcn.140095790
mov ebp, eax
jmp 0x140089c51
add eax, 0xffffff81
mov ebp, eax
cmp ebp, r14d
jg 0x14008a003
movzx edx, byte [rdi]
mov rcx, r15
lea r8, [rsp + 0x8c]
call fcn.14009aff0
test rax, rax
je 0x140089f9c
test ebp, ebp
jle 0x140089cdf
mov eax, ebp
jmp 0x140089c86
add r13, 4
dec eax
je 0x140089cdf
movzx ecx, byte [rdi]
test cl, cl
js 0x140089c9e
test cl, 0x40
jne 0x140089caf
test cl, 0x20
jne 0x140089cc0
test cl, 0x10
je 0x140089c7e
jmp 0x140089cd1
movzx edx, byte [rsp + 0x8c]
mov byte [r13], dl
test cl, 0x40
je 0x140089c92
movzx edx, byte [rsp + 0x8d]
mov byte [r13 + 1], dl
test cl, 0x20
je 0x140089c97
movzx edx, byte [rsp + 0x8e]
mov byte [r13 + 2], dl
test cl, 0x10
je 0x140089c7e
movzx ecx, byte [rsp + 0x8f]
mov byte [r13 + 3], cl
jmp 0x140089c7e
sub r14d, ebp
jg 0x140089b39
jmp 0x140089abd
cmp dword [rsp + 0x28], 0
je 0x140089abd
movzx r13d, byte [rsp + rax + 0x92]
mov rax, qword [rsp + 0x28]
mov ebp, eax
mov rdi, qword [rsp + 0x60]
mov rcx, r15
mov edx, r13d
mov r8, rdi
call fcn.14009aff0
test rax, rax
je 0x140089f9c
add rdi, 4
dec ebp
jne 0x140089d0d
jmp 0x140089abd
cmp dword [rsp + 0x28], 0
je 0x140089abd
lea rdi, [rsp + rax]
add rdi, 0x92
mov rax, qword [rsp + 0x28]
mov ebp, eax
mov r14, qword [rsp + 0x60]
jmp 0x140089d5d
sub ebp, eax
jle 0x140089abd
mov rcx, qword [r15 + 0xc0]
mov rax, qword [r15 + 0xc8]
cmp rcx, rax
jae 0x140089d84
lea rdx, [rcx + 1]
mov qword [r15 + 0xc0], rdx
movzx r13d, byte [rcx]
mov rcx, rdx
jmp 0x140089de8
cmp dword [r15 + 0x30], 0
je 0x140089dbf
mov r8d, dword [r15 + 0x34]
mov rcx, qword [r15 + 0x28]
mov rdx, r12
call qword [r15 + 0x10]
mov ecx, dword [r15 + 0xc0]
sub ecx, dword [r15 + 0xd0]
add dword [r15 + 0xb8], ecx
test eax, eax
je 0x140089dc4
cdqe
add rax, r12
movzx r13d, byte [r12]
jmp 0x140089dd7
xor r13d, r13d
jmp 0x140089de8
mov dword [r15 + 0x30], 0
mov byte [r15 + 0x38], 0
xor r13d, r13d
mov rax, rbx
mov qword [r15 + 0xc8], rax
mov qword [r15 + 0xc0], rbx
mov rcx, rbx
cmp qword [r15 + 0x10], 0
je 0x140089e14
mov rcx, qword [r15 + 0x28]
call qword [r15 + 0x20]
test eax, eax
je 0x140089e1d
cmp dword [r15 + 0x30], 0
je 0x14008a003
mov rcx, qword [r15 + 0xc0]
mov rax, qword [r15 + 0xc8]
cmp rcx, rax
jae 0x14008a003
movzx edx, byte [rdi]
mov rcx, r15
lea r8, [rsp + 0x8c]
call fcn.14009aff0
test rax, rax
je 0x140089f9c
movzx eax, r13b
cmp ebp, eax
cmovb eax, ebp
movzx eax, al
test al, al
je 0x140089d55
mov ecx, eax
jmp 0x140089e6c
add r14, 4
dec ecx
je 0x140089d55
movzx edx, byte [rdi]
test dl, dl
js 0x140089e90
test dl, 0x40
jne 0x140089ea1
test dl, 0x20
jne 0x140089eb3
test dl, 0x10
je 0x140089e60
jmp 0x140089ec5
movzx r8d, byte [rsp + 0x8c]
mov byte [r14], r8b
test dl, 0x40
je 0x140089e78
movzx r8d, byte [rsp + 0x8d]
mov byte [r14 + 1], r8b
test dl, 0x20
je 0x140089e7d
movzx r8d, byte [rsp + 0x8e]
mov byte [r14 + 2], r8b
test dl, 0x10
je 0x140089e60
movzx edx, byte [rsp + 0x8f]
mov byte [r14 + 3], dl
jmp 0x140089e60
mov rcx, qword [rsp + 0x78]
inc rcx
cmp rcx, qword [rsp + 0x70]
mov eax, dword [rsp + 0x6c]
jne 0x140089aa5
mov rsi, qword [rsp + 0x28]
mov rcx, qword [rsp + 0x48]
jmp 0x140089fc9
mov eax, dword [0x140210b70]
mov rcx, qword gs:[0x58]
mov rax, qword [rcx + rax*8]
lea rcx, str.outofmem
jmp 0x140089f2f
mov eax, dword [0x140210b70]
mov rcx, qword gs:[0x58]
mov rax, qword [rcx + rax*8]
lea rcx, str.too_large
mov qword [rax + 8], rcx
xor esi, esi
mov rcx, qword [rsp + 0xb0]
xor rcx, rsp
call fcn.1400f4f10
mov rax, rsi
add rsp, 0xb8
pop rbx
pop rbp
pop rdi
pop rsi
pop r12
pop r13
pop r14
pop r15
ret
mov eax, dword [0x140210b70]
mov rcx, qword gs:[0x58]
mov rax, qword [rcx + rax*8]
lea rcx, str.bad_format
jmp 0x140089f95
mov eax, dword [0x140210b70]
mov rcx, qword gs:[0x58]
mov rax, qword [rcx + rax*8]
lea rcx, [0x14011ed15]
mov qword [rax + 8], rcx
mov rdi, qword [rsp + 0x50]
mov r14, qword [rsp + 0x40]
mov ebp, dword [rsp + 0x120]
mov r13, qword [rsp + 0x38]
mov rsi, qword [rsp + 0x28]
mov rcx, qword [rsp + 0x48]
call qword [sym.imp.api_ms_win_crt_heap_l1_1_0.dll_free]
xor ecx, ecx
mov r8d, dword [rsp + 0x34]
test ebp, ebp
cmovne r8d, ebp
mov dword [r13], esi
mov eax, dword [rsp + 0x5c]
mov dword [r14], eax
test rdi, rdi
je 0x140089fe6
test ebp, ebp
jne 0x140089fe6
mov r8d, dword [rdi]
mov eax, dword [rsp + 0x5c]
mov dword [rsp + 0x20], eax
mov edx, 4
mov r9d, esi
call fcn.1400912e0
mov rsi, rax
jmp 0x140089f38
mov eax, dword [0x140210b70]
mov rcx, qword gs:[0x58]
mov rax, qword [rcx + rax*8]
lea rcx, [0x14011ed15]
mov qword [rax + 8], rcx
jmp 0x140089f9c
mov eax, dword [0x140210b70]
mov rcx, qword gs:[0x58]
mov rax, qword [rcx + rax*8]
lea rcx, str.bad_format
mov qword [rax + 8], rcx
jmp 0x140089fb2
push r15
push r14
push r13
push r12
push rsi
push rdi
push rbp
push rbx
sub rsp, 0x198
vmovapd xmmword [rsp + 0x180], xmm15
vmovaps xmmword [rsp + 0x170], xmm14
vmovaps xmmword [rsp + 0x160], xmm13
vmovaps xmmword [rsp + 0x150], xmm12
vmovdqa xmmword [rsp + 0x140], xmm11
vmovaps xmmword [rsp + 0x130], xmm10
vmovaps xmmword [rsp + 0x120], xmm9
vmovaps xmmword [rsp + 0x110], xmm8
vmovaps xmmword [rsp + 0x100], xmm7
vmovaps xmmword [rsp + 0xf0], xmm6
test rcx, rcx
je 0x14008dcb3
mov ebp, r8d
mov r8d, edx
mov r15, rcx
mov eax, ebp
or eax, edx
js 0x14008dc89
test ebp, ebp
je 0x14008d95f
mov eax, 0x7fffffff
xor edx, edx
div ebp
cmp eax, r8d
jl 0x14008dc89
imul ebp, r8d
mov eax, ebp
or eax, r9d
js 0x14008dc89
test r9d, r9d
je 0x14008d985
mov eax, 0x7fffffff
xor edx, edx
div r9d
cmp eax, ebp
jl 0x14008dc89
mov eax, ebp
imul eax, r9d
movsxd rcx, eax
mov qword [rsp + 0x30], r9
call qword [sym.imp.api_ms_win_crt_heap_l1_1_0.dll_malloc]
mov rdx, qword [rsp + 0x30]
test rax, rax
je 0x14008dc89
mov qword [rsp + 0x28], rax
test ebp, ebp
jle 0x14008dd23
mov eax, edx
and eax, 1
lea r14d, [rdx + rax]
dec r14d
vbroadcastss xmm6, dword [0x1401ef9d8]
vbroadcastss ymm1, dword [0x1401ef9dc]
movsxd rax, edx
mov ecx, ebp
mov qword [rsp + 0x48], rcx
mov r13d, r14d
mov ebp, r13d
and ebp, 0xfffffff8
mov qword [rsp + 0x38], rax
lea rax, [rax*4]
mov qword [rsp + 0x40], rax
xor r12d, r12d
vmovss xmm8, dword [0x14010f668]
vmovss xmm9, dword [0x14010e058]
vxorps xmm10, xmm10, xmm10
vmovshdup xmm7, xmm6
vbroadcastss ymm0, dword [0x14010f668]
vmovups ymmword [rsp + 0xd0], ymm0
vpbroadcastd ymm0, dword [0x14010e058]
vmovdqu ymmword [rsp + 0xb0], ymm0
vpbroadcastd xmm11, dword [0x14011ad00]
mov rsi, r15
mov rbx, qword [rsp + 0x28]
vmovups ymmword [rsp + 0x90], ymm1
vmovaps xmmword [rsp + 0x70], xmm7
jmp 0x14008da78
inc r12
add rbx, qword [rsp + 0x38]
add rsi, qword [rsp + 0x40]
cmp r12, qword [rsp + 0x48]
je 0x14008dd23
mov eax, 0
test r14d, r14d
jle 0x14008dc4e
xor edi, edi
cmp r14d, 8
jb 0x14008dc10
nop word cs:[rax + rax]
vmulps ymm0, ymm1, ymmword [rsi + rdi*4]
vmovups ymmword [rsp + 0x50], ymm0
vmovaps xmm1, xmm6
vzeroupper
call sub.api_ms_win_crt_math_l1_1_0.dll_powf
vmovaps xmmword [rsp + 0x80], xmm0
vmovshdup xmm0, xmmword [rsp + 0x50]
vmovaps xmm1, xmm6
call sub.api_ms_win_crt_math_l1_1_0.dll_powf
vmovaps xmm9, xmm0
vpermilpd xmm0, xmmword [rsp + 0x50], 1
vmovaps xmm1, xmm6
call sub.api_ms_win_crt_math_l1_1_0.dll_powf
vmovapd xmm10, xmm0
vpermilps xmm0, xmmword [rsp + 0x50], 0xff
vmovaps xmm1, xmm6
call sub.api_ms_win_crt_math_l1_1_0.dll_powf
vmovdqa xmm7, xmm11
vmovaps xmm11, xmm0
vmovups ymm0, ymmword [rsp + 0x50]
vextractf128 xmm12, ymm0, 1
vmovshdup xmm0, xmm12
vmovaps xmm8, xmmword [rsp + 0x70]
vmovaps xmm1, xmm8
vzeroupper
call sub.api_ms_win_crt_math_l1_1_0.dll_powf
vmovaps xmm13, xmm0
vmovaps xmm0, xmm12
vmovaps xmm1, xmm6
call sub.api_ms_win_crt_math_l1_1_0.dll_powf
vmovaps xmm14, xmm0
vshufpd xmm15, xmm12, xmm12, 1
vshufps xmm0, xmm12, xmm12, 0xff
vmovaps xmm1, xmm8
call sub.api_ms_win_crt_math_l1_1_0.dll_powf
vmovaps xmm12, xmm0
vmovapd xmm0, xmm15
vmovaps xmm1, xmm6
call sub.api_ms_win_crt_math_l1_1_0.dll_powf
vxorps xmm3, xmm3, xmm3
vmovups ymm2, ymmword [rsp + 0xd0]
vinsertps xmm1, xmm14, xmm13, 0x10
vinsertps xmm0, xmm1, xmm0, 0x20
vinsertps xmm0, xmm0, xmm12, 0x30
vmovaps xmm1, xmmword [rsp + 0x80]
vinsertps xmm1, xmm1, xmm9, 0x10
vinsertps xmm1, xmm1, xmm10, 0x20
vinsertps xmm1, xmm1, xmm11, 0x30
vmovdqa xmm11, xmm7
vinsertf128 ymm0, ymm1, xmm0, 1
vfmadd213ps ymm0, ymm2, ymmword [rsp + 0xb0]
vmaxps ymm0, ymm0, ymm3
vminps ymm0, ymm0, ymm2
vcvttps2dq ymm0, ymm0
vextracti128 xmm1, ymm0, 1
vpshufb xmm1, xmm1, xmm7
vpshufb xmm0, xmm0, xmm7
vpunpckldq xmm0, xmm0, xmm1
vmovups ymm1, ymmword [rsp + 0x90]
vmovq qword [rbx + rdi], xmm0
add rdi, 8
cmp rbp, rdi
jne 0x14008daa0
mov rdi, rbp
mov eax, r14d
cmp rbp, r13
mov rdx, qword [rsp + 0x30]
vmovss xmm8, dword [0x14010f668]
vmovss xmm9, dword [0x14010e058]
vxorps xmm10, xmm10, xmm10
je 0x14008dc4e
nop dword [rax]
vmulss xmm0, xmm1, dword [rsi + rdi*4]
vmovaps xmm1, xmm6
vzeroupper
call sub.api_ms_win_crt_math_l1_1_0.dll_powf
vmovups ymm1, ymmword [rsp + 0x90]
vfmadd213ss xmm0, xmm8, xmm9
vmaxss xmm0, xmm10, xmm0
vminss xmm0, xmm8, xmm0
vcvttss2si eax, xmm0
mov byte [rbx + rdi], al
inc rdi
cmp r13, rdi
jne 0x14008dc10
mov eax, r14d
mov rdx, qword [rsp + 0x30]
cmp eax, edx
jge 0x14008da60
mov rcx, r12
imul rcx, qword [rsp + 0x38]
cdqe
add rax, rcx
vmovss xmm0, dword [r15 + rax*4]
vfmadd132ss xmm0, xmm9, xmm8
vmaxss xmm0, xmm10, xmm0
vminss xmm0, xmm8, xmm0
vcvttss2si ecx, xmm0
mov r8, qword [rsp + 0x28]
mov byte [r8 + rax], cl
jmp 0x14008da60
mov rcx, r15
call qword [sym.imp.api_ms_win_crt_heap_l1_1_0.dll_free]
mov eax, dword [0x140210b70]
mov rcx, qword gs:[0x58]
mov rax, qword [rcx + rax*8]
lea rcx, str.outofmem
mov qword [rax + 8], rcx
xor eax, eax
vmovaps xmm6, xmmword [rsp + 0xf0]
vmovaps xmm7, xmmword [rsp + 0x100]
vmovaps xmm8, xmmword [rsp + 0x110]
vmovaps xmm9, xmmword [rsp + 0x120]
vmovaps xmm10, xmmword [rsp + 0x130]
vmovaps xmm11, xmmword [rsp + 0x140]
vmovaps xmm12, xmmword [rsp + 0x150]
vmovaps xmm13, xmmword [rsp + 0x160]
vmovaps xmm14, xmmword [rsp + 0x170]
vmovaps xmm15, xmmword [rsp + 0x180]
add rsp, 0x198
pop rbx
pop rbp
pop rdi
pop rsi
pop r12
pop r13
pop r14
pop r15
ret
mov rcx, r15
vzeroupper
call qword [sym.imp.api_ms_win_crt_heap_l1_1_0.dll_free]
mov rax, qword [rsp + 0x28]
jmp 0x14008dcb5