Function at 0x14008ae40
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.14010bd10
sub rsp, rax
mov qword [rsp + 0xa8], r9
mov qword [rsp + 0xd0], r8
mov qword [rsp + 0xc8], rdx
mov r14, rcx
mov eax, dword [rsp + 0x8a30]
mov dword [rsp + 0x48], eax
mov r13, qword [rsp + 0x8a28]
mov eax, dword [rsp + 0x8a20]
mov dword [rsp + 0x5c], eax
mov rax, qword [0x140208a80]
xor rax, rsp
mov qword [rsp + 0x89b0], rax
mov qword [r13], 8
mov dword [r13 + 8], 0
lea rsi, [rcx + 0xc0]
lea rax, [rcx + 0xc8]
mov qword [rsp + 0x40], rax
lea rdi, [rcx + 0x30]
lea r12, [rcx + 0x38]
lea rbp, [rcx + 0x39]
mov rcx, qword [rcx + 0xc0]
mov rax, qword [r14 + 0xc8]
xor r15d, r15d
lea rbx, [0x14011f978]
nop dword [rax + rax]
cmp rcx, rax
jae 0x14008af10
lea r8, [rcx + 1]
mov qword [rsi], r8
movzx edx, byte [rcx]
mov rcx, r8
jmp 0x14008af6b
cmp dword [rdi], 0
je 0x14008af49
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 0x14008af4d
cdqe
add rax, r12
movzx edx, byte [r12]
jmp 0x14008af5d
xor edx, edx
jmp 0x14008af6b
mov dword [rdi], 0
mov byte [r12], 0
xor edx, edx
mov rax, rbp
mov rcx, qword [rsp + 0x40]
mov qword [rcx], rax
mov qword [rsi], rbp
mov rcx, rbp
cmp dl, byte [r15 + rbx]
jne 0x14008afcc
inc r15
cmp r15, 8
jne 0x14008aef0
movups xmm0, xmmword [r14 + 0xd0]
movups xmmword [r14 + 0xc0], xmm0
mov qword [rsp + 0x140], r14
mov edi, dword [rsp + 0x5c]
cmp edi, 5
jb 0x14008b073
mov eax, dword [0x140212b68]
mov rcx, qword gs:[0x58]
mov rax, qword [rcx + rax*8]
lea rcx, str.bad_req_comp
mov qword [rax + 8], rcx
xor r15d, r15d
jmp 0x14008b5cf
mov eax, dword [0x140212b68]
mov rcx, qword gs:[0x58]
mov rax, qword [rcx + rax*8]
lea rbx, [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 0x14008b02d
lea r8, [rcx + 1]
mov qword [rsi], r8
movzx edx, byte [rcx]
cmp dl, 0x42
je 0x14008b129
jmp 0x14008b31f
cmp dword [rdi], 0
je 0x14008b31f
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 0x14008b102
cdqe
add rax, r12
movzx edx, byte [r12]
jmp 0x14008b112
lea rcx, [rsp + 0x140]
xor edx, edx
mov r8d, edi
call fcn.140093640
test eax, eax
je 0x14008b0f2
mov eax, dword [rsp + 0x160]
mov ecx, 8
cmp eax, 9
jl 0x14008b0a8
mov ecx, 0x10
cmp eax, 0x10
jne 0x14008b186
mov dword [r13], ecx
mov rsi, qword [rsp + 0x140]
mov r15, qword [rsp + 0x158]
test edi, edi
je 0x14008b585
mov edx, dword [rsi + 0xc]
cmp edx, edi
je 0x14008b585
mov r9d, dword [rsi]
mov ecx, dword [rsi + 4]
cmp eax, 8
jg 0x14008b567
mov dword [rsp + 0x20], ecx
mov rcx, r15
mov r8d, edi
call fcn.140094e00
jmp 0x14008b576
mov rcx, qword [rsp + 0x158]
xor r15d, r15d
jmp 0x14008b5b2
mov dword [rdi], 0
mov byte [r12], 0
xor edx, edx
mov rax, rbp
mov r8, qword [rsp + 0x40]
mov qword [r8], rax
mov qword [rsi], rbp
mov r8, rbp
cmp dl, 0x42
jne 0x14008b31f
cmp r8, rax
jae 0x14008b146
lea rax, [r8 + 1]
mov qword [rsi], rax
movzx eax, byte [r8]
cmp al, 0x4d
jne 0x14008b31f
jmp 0x14008b1c8
cmp dword [rdi], 0
je 0x14008b31f
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 0x14008b1a5
movsxd rdx, eax
add rdx, r12
movzx eax, byte [r12]
jmp 0x14008b1b5
mov eax, dword [0x140212b68]
mov rcx, qword gs:[0x58]
mov rax, qword [rcx + rax*8]
lea rcx, str.bad_bits_per_channel
jmp 0x14008afbd
mov dword [rdi], 0
mov byte [r12], 0
xor eax, eax
mov rdx, rbp
mov r8, qword [rsp + 0x40]
mov qword [r8], rdx
mov qword [rsi], rbp
cmp al, 0x4d
jne 0x14008b31f
mov rcx, r14
call fcn.14009a0f0
mov rcx, r14
call fcn.14009a0f0
mov rcx, r14
call fcn.14009a0f0
mov rcx, r14
call fcn.14009a0f0
mov rcx, r14
call fcn.14009a0f0
mov rcx, r14
call fcn.14009a0f0
mov rcx, r14
call fcn.14009a0f0
mov r15d, eax
mov rcx, r14
call fcn.14009a0f0
shl eax, 0x10
or eax, r15d
cmp eax, 0x38
ja 0x14008b226
movabs rcx, 0x100010000001000
bt rcx, rax
jb 0x14008b22f
cmp eax, 0x6c
jne 0x14008b5f6
movups xmm0, xmmword [r14 + 0xd0]
movups xmmword [r14 + 0xc0], xmm0
mov dword [rsp + 0x134], 0xff
lea rdx, [rsp + 0x118]
mov rcx, r14
call fcn.14009a220
test rax, rax
je 0x14008afc4
mov r15d, dword [r14 + 4]
mov eax, r15d
neg eax
cmovs eax, r15d
mov dword [r14 + 4], eax
cmp eax, 0x1000001
jae 0x14008b6e1
cmp dword [r14], 0x1000001
jae 0x14008b6e1
mov qword [rsp + 0x38], rbx
mov eax, dword [rsp + 0x124]
mov dword [rsp + 0x78], eax
mov eax, dword [rsp + 0x128]
mov dword [rsp + 0x80], eax
mov eax, dword [rsp + 0x12c]
mov dword [rsp + 0x98], eax
mov ecx, dword [rsp + 0x130]
mov ebx, dword [rsp + 0x134]
mov r10d, dword [rsp + 0x118]
mov r8d, dword [rsp + 0x120]
cmp r8d, 0xc
mov dword [rsp + 0x50], ecx
jne 0x14008b6f0
cmp r10d, 0x17
jg 0x14008b7b4
mov edx, dword [rsp + 0x11c]
mov eax, dword [rsp + 0x138]
neg eax
add eax, edx
add eax, 0xffffffe8
cdqe
imul r11, rax, 0x55555556
mov rax, r11
shr rax, 0x3f
shr r11, 0x20
add r11d, eax
jmp 0x14008b715
mov qword [r14 + 0xc0], rcx
mov rax, qword [r14 + 0xd8]
mov qword [r14 + 0xc8], rax
mov rcx, r14
call fcn.14008d310
test eax, eax
je 0x14008b3d6
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.14009a8b0
cmp rax, r14
je 0x14008b483
mov r15, rax
test rax, rax
je 0x14008b483
mov r9d, dword [rsp + 0x140]
mov rax, qword [rsp + 0xc8]
mov dword [rax], r9d
mov eax, dword [rsp + 0x144]
mov rcx, qword [rsp + 0xd0]
mov dword [rcx], eax
mov r8d, dword [rsp + 0x5c]
test r8d, 0xfffffffb
je 0x14008b499
mov dword [rsp + 0x20], eax
mov rcx, r15
mov edx, 4
call fcn.140094e00
mov r15, rax
jmp 0x14008b499
mov rcx, r14
call fcn.140096b70
mov r15d, eax
shl r15d, 0x10
mov rcx, r14
call fcn.140096b70
or eax, r15d
movups xmm0, xmmword [r14 + 0xd0]
movups xmmword [r14 + 0xc0], xmm0
mov rcx, r14
cmp eax, 0x38425053
jne 0x14008b4b7
call fcn.140096b70
mov r15d, eax
shl r15d, 0x10
mov rcx, r14
call fcn.140096b70
or eax, r15d
cmp eax, 0x38425053
jne 0x14008b503
mov rcx, r14
call fcn.140096b70
cmp eax, 1
jne 0x14008b558
cmp qword [r14 + 0x10], 0
je 0x14008b65f
mov rax, qword [rsp + 0x40]
mov rcx, qword [rax]
mov rax, qword [rsi]
mov r8d, ecx
sub r8d, eax
cmp r8d, 5
jg 0x14008b662
mov qword [r14 + 0xc0], rcx
mov edx, 6
sub edx, r8d
mov rcx, qword [r14 + 0x28]
call qword [r14 + 0x18]
jmp 0x14008b669
mov rcx, qword [rsp + 0x148]
test rcx, rcx
je 0x14008b496
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]
jmp 0x14008b5cd
call fcn.14008d650
test eax, eax
je 0x14008b512
mov rcx, qword [rsp + 0x89b0]
xor rcx, rsp
call fcn.14010bb50
mov rcx, r14
mov rdx, qword [rsp + 0xc8]
mov r8, qword [rsp + 0xd0]
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 0x14008dad0
lea rax, str.not_PSD
mov qword [rbx], rax
jmp 0x14008afc4
mov rdi, rbx
mov rcx, r14
call fcn.14008e5c0
test eax, eax
mov rsi, qword [rsp + 0xd0]
mov rbx, qword [rsp + 0xc8]
je 0x14008b614
mov eax, dword [rsp + 0x5c]
mov dword [rsp + 0x20], eax
mov rcx, r14
mov rdx, rbx
mov r8, rsi
mov r9, qword [rsp + 0xa8]
call fcn.14008e6f0
jmp 0x14008b647
lea rax, str.wrong_version
mov qword [rbx], rax
jmp 0x14008afc4
mov dword [rsp + 0x20], ecx
mov rcx, r15
mov r8d, edi
call fcn.140095cc0
mov r15, rax
mov dword [rsi + 0xc], edi
test rax, rax
je 0x14008afc4
mov eax, dword [rsi]
mov rcx, qword [rsp + 0xc8]
mov dword [rcx], eax
mov eax, dword [rsi + 4]
mov rcx, qword [rsp + 0xd0]
mov dword [rcx], eax
mov rcx, qword [rsp + 0xa8]
test rcx, rcx
je 0x14008b5b0
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
mov rcx, qword [rsp + 0x89b0]
xor rcx, rsp
call fcn.14010bb50
mov rax, r15
add rsp, 0x89b8
pop rbx
pop rbp
pop rdi
pop rsi
pop r12
pop r13
pop r14
pop r15
ret
movups xmm0, xmmword [r14 + 0xd0]
movups xmmword [r14 + 0xc0], xmm0
cmp eax, 0x7c
jne 0x14008b334
jmp 0x14008b23f
mov rcx, r14
call fcn.140090f20
test eax, eax
je 0x14008b7e6
mov qword [rsp + 0x28], r13
mov eax, dword [rsp + 0x5c]
mov dword [rsp + 0x20], eax
mov rcx, r14
mov rdx, rbx
mov r8, rsi
mov r9, qword [rsp + 0xa8]
call fcn.140091060
mov rsi, rax
mov rcx, qword [rsp + 0x89b0]
xor rcx, rsp
call fcn.14010bb50
mov rax, rsi
jmp 0x14008b5e2
mov rax, qword [rsi]
add rax, 6
mov qword [rsi], rax
mov rcx, r14
call fcn.140096b70
cmp eax, 0x11
jb 0x14008b685
lea rax, str.wrong_channel_count
mov qword [rbx], rax
jmp 0x14008afc4
mov dword [rsp + 0x80], eax
mov rcx, r14
call fcn.140096b70
mov r15d, eax
shl r15d, 0x10
mov rcx, r14
call fcn.140096b70
or eax, r15d
mov dword [rsp + 0x88], eax
mov rcx, r14
call fcn.140096b70
mov r15d, eax
mov rcx, r14
call fcn.140096b70
cmp dword [rsp + 0x88], 0x1000001
jge 0x14008b6e1
shl r15d, 0x10
or r15d, eax
cmp r15d, 0x1000001
jl 0x14008b886
lea rax, str.too_large
mov qword [rbx], rax
jmp 0x14008afc4
cmp r10d, 0xf
jg 0x14008b7b4
mov edx, dword [rsp + 0x11c]
mov eax, dword [rsp + 0x138]
add eax, r8d
mov r11d, edx
sub r11d, eax
sar r11d, 2
test r11d, r11d
je 0x14008b7b4
mov qword [rsp + 0x68], rdx
mov dword [rsp + 0x70], r8d
mov dword [rsp + 0x88], ebx
cmp ecx, 0xff000000
sete al
xor r13d, r13d
mov edx, r13d
mov byte [rsp + 0x58], r13b
cmp ecx, 1
mov ebx, 4
sbb ebx, 0
mov r13d, eax
mov dword [r14 + 8], ebx
mov eax, dword [rsp + 0x5c]
cmp eax, 3
cmovge ebx, eax
mov r9d, dword [r14]
mov eax, r9d
or eax, ebx
js 0x14008b7a8
mov ecx, dword [r14 + 4]
test r9d, r9d
je 0x14008b780
mov eax, 0x7fffffff
xor edx, edx
div r9d
cmp eax, ebx
jb 0x14008b7a8
mov r8d, r9d
imul r8d, ebx
mov eax, r8d
or eax, ecx
js 0x14008b7a8
test ecx, ecx
je 0x14008b99e
mov eax, 0x7fffffff
xor edx, edx
div ecx
cmp eax, r8d
jge 0x14008b99e
lea rax, str.too_large
jmp 0x14008b879
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 0x14008b857
lea rax, str.bad_header
jmp 0x14008b879
mov rcx, r14
call fcn.140087b00
test eax, eax
je 0x14008b90e
mov ebp, dword [rsp + 0x5c]
mov dword [rsp + 0x20], ebp
mov rcx, r14
mov rdx, rbx
mov r8, rsi
mov rdi, qword [rsp + 0xa8]
mov r9, rdi
call fcn.1400912f0
mov r14, rax
test ebp, ebp
jne 0x14008b820
mov ebp, dword [rdi]
mov esi, dword [rsi]
mov edi, dword [rbx]
mov rcx, qword [rsp + 0x89b0]
xor rcx, rsp
call fcn.14010bb50
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 0x140091ed0
add eax, ecx
mov ecx, dword [rsp + 0x11c]
mov edx, ecx
sub edx, eax
jl 0x14008b872
cmp edx, 0x401
jl 0x14008b941
lea rax, str.bad_offset
mov rcx, qword [rsp + 0x38]
mov qword [rcx], rax
jmp 0x14008afc4
mov dword [rsp + 0x68], r15d
mov rcx, r14
call fcn.140096b70
mov r15d, eax
cmp r15w, 8
je 0x14008b8a7
cmp r15d, 0x10
jne 0x14008ba32
mov rcx, r14
call fcn.140096b70
cmp eax, 3
jne 0x14008ba41
mov rcx, r14
call fcn.140096b40
mov rcx, r14
mov edx, eax
call fcn.140096ae0
mov rcx, r14
call fcn.140096b40
mov rcx, r14
mov edx, eax
call fcn.140096ae0
mov rcx, r14
call fcn.140096b40
mov rcx, r14
mov edx, eax
call fcn.140096ae0
mov rcx, r14
call fcn.140096b70
cmp eax, 2
jb 0x14008ba6b
lea rax, str.bad_compression
mov qword [rbx], rax
jmp 0x14008afc4
mov rcx, r14
call fcn.140092290
test eax, eax
je 0x14008ba5c
mov eax, dword [rsp + 0x5c]
mov dword [rsp + 0x20], eax
mov rcx, r14
mov rdx, rbx
mov r8, rsi
mov r9, qword [rsp + 0xa8]
call fcn.140092660
jmp 0x14008b647
mov qword [rsp + 0x68], rcx
mov dword [rsp + 0x70], r8d
mov rcx, r14
mov r13d, r10d
call fcn.140096ae0
mov ecx, dword [rsp + 0x50]
mov r10d, r13d
cmp ecx, 0xff000000
sete al
xor r11d, r11d
mov r13b, 1
cmp r10d, 0x18
mov dword [rsp + 0x88], ebx
jne 0x14008b73b
cmp ecx, 0xff000000
jne 0x14008b73b
mov ebx, 3
mov r10d, 0x18
mov byte [rsp + 0x58], 1
jmp 0x14008b751
mov qword [rsp + 0x90], r11
mov dword [rsp + 0xdc], r15d
test r9d, r9d
je 0x14008b9c5
mov eax, 0x7fffffff
xor edx, edx
div r9d
cmp eax, ebx
jb 0x14008ba50
test ecx, ecx
je 0x14008b9d7
mov eax, 0x7fffffff
xor edx, edx
div ecx
cmp eax, r8d
jl 0x14008ba50
imul r8d, ecx
movsxd rcx, r8d
mov dword [rsp + 0x60], r10d
call qword [sym.imp.api_ms_win_crt_heap_l1_1_0.dll_malloc]
mov ecx, dword [rsp + 0x60]
test rax, rax
je 0x14008ba50
mov r15, rax
cmp ecx, 0xf
mov dword [rsp + 0x48], ebx
jg 0x14008bbc3
mov rdx, qword [rsp + 0x90]
cmp edx, 0x101
setge al
or byte [rsp + 0x58], al
je 0x14008bc2d
mov rcx, r15
call qword [sym.imp.api_ms_win_crt_heap_l1_1_0.dll_free]
lea rax, str.invalid
jmp 0x14008b879
lea rax, str.unsupported_bit_depth
mov qword [rbx], rax
jmp 0x14008afc4
lea rax, str.wrong_color_format
mov qword [rbx], rax
jmp 0x14008afc4
lea rax, str.outofmem
jmp 0x14008b879
lea rax, str.unknown_image_type
mov qword [rdi], rax
jmp 0x14008afc4
mov dword [rsp + 0x50], eax
mov ecx, 4
mov edx, dword [rsp + 0x68]
mov r8d, dword [rsp + 0x88]
xor r9d, r9d
call fcn.14009a010
test eax, eax
je 0x14008b6e1
cmp dword [rsp + 0x48], 0x10
mov r8d, dword [rsp + 0x88]
mov dword [rsp + 0x90], r15d
jne 0x14008bad2
cmp r15d, 0x10
jne 0x14008bad2
cmp dword [rsp + 0x50], 0
jne 0x14008bad2
mov ecx, 8
mov edx, dword [rsp + 0x68]
xor r9d, r9d
call fcn.140099fb0
mov r15, rax
mov dword [r13], 0x10
jmp 0x14008bae9
mov eax, r8d
imul eax, dword [rsp + 0x68]
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 + 0x80]
je 0x14008bc1e
mov qword [rsp + 0x38], rbx
mov eax, dword [rsp + 0x68]
mov r9d, eax
mov eax, dword [rsp + 0x88]
imul r9d, eax
mov ecx, edx
mov qword [rsp + 0x60], rcx
cmp dword [rsp + 0x50], 0
mov qword [rsp + 0x70], r9
je 0x14008beb3
imul edx, eax
add edx, edx
mov rcx, r14
call fcn.140096ae0
mov r9, qword [rsp + 0x70]
mov esi, r9d
and esi, 0xfffffff8
mov edi, r9d
and edi, 7
xor ebx, ebx
jmp 0x14008bb6e
mov rcx, r14
mov r8d, r9d
call fcn.14009bfb0
mov r9, qword [rsp + 0x70]
test eax, eax
je 0x14008c1e7
inc rbx
cmp rbx, 4
je 0x14008c11c
lea rdx, [r15 + rbx]
cmp rbx, qword [rsp + 0x60]
jb 0x14008bb49
test r9d, r9d
jle 0x14008bb61
cmp rbx, 3
sete al
neg al
cmp r9d, 8
jb 0x14008bbaf
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 0x14008bb8f
test r9b, 7
je 0x14008bb61
xor ecx, ecx
mov byte [rdx + rcx*4], al
inc rcx
cmp edi, ecx
jne 0x14008bbb7
jmp 0x14008bb61
mov eax, dword [rsp + 0x70]
add eax, dword [rsp + 0x138]
mov r9, qword [rsp + 0x68]
sub r9d, eax
je 0x14008c89b
js 0x14008c345
cmp qword [r14 + 0x10], 0
je 0x14008c88b
mov rax, qword [rsp + 0x40]
mov rcx, qword [rax]
mov rax, qword [rsi]
mov r8d, ecx
sub r8d, eax
mov edx, r9d
sub edx, r8d
jle 0x14008c88e
mov qword [r14 + 0xc0], rcx
mov rcx, qword [r14 + 0x28]
call qword [r14 + 0x18]
jmp 0x14008c897
lea rax, str.outofmem
mov qword [rbx], rax
jmp 0x14008afc4
test edx, edx
mov ebx, dword [rsp + 0x70]
jle 0x14008be63
mov eax, edx
mov qword [rsp + 0x50], rax
mov rcx, qword [rsi]
mov rax, qword [rsp + 0x40]
mov rax, qword [rax]
xor r13d, r13d
jmp 0x14008bc6d
inc rcx
mov qword [rsi], rcx
mov byte [rsp + r13*4 + 0x143], 0xff
inc r13
cmp qword [rsp + 0x50], r13
je 0x14008be63
cmp rcx, rax
jae 0x14008bc82
lea r8, [rcx + 1]
mov qword [rsi], r8
movzx r9d, byte [rcx]
mov rcx, r8
jmp 0x14008bce7
cmp dword [rdi], 0
je 0x14008bcbb
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 0x14008bcc0
cdqe
add rax, r12
movzx r9d, byte [r12]
jmp 0x14008bcd1
xor r9d, r9d
jmp 0x14008bce7
mov dword [rdi], 0
mov byte [r12], 0
xor r9d, r9d
mov rax, rbp
mov rcx, qword [rsp + 0x40]
mov qword [rcx], rax
mov qword [rsi], rbp
mov rcx, rbp
mov rdx, qword [rsp + 0x90]
mov byte [rsp + r13*4 + 0x142], r9b
cmp rcx, rax
jae 0x14008bd04
lea r8, [rcx + 1]
mov qword [rsi], r8
movzx r9d, byte [rcx]
mov rcx, r8
jmp 0x14008bd69
cmp dword [rdi], 0
je 0x14008bd3d
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 0x14008bd42
cdqe
add rax, r12
movzx r9d, byte [r12]
jmp 0x14008bd53
xor r9d, r9d
jmp 0x14008bd69
mov dword [rdi], 0
mov byte [r12], 0
xor r9d, r9d
mov rax, rbp
mov rcx, qword [rsp + 0x40]
mov qword [rcx], rax
mov qword [rsi], rbp
mov rcx, rbp
mov rdx, qword [rsp + 0x90]
mov byte [rsp + r13*4 + 0x141], r9b
cmp rcx, rax
jae 0x14008bd86
lea r8, [rcx + 1]
mov qword [rsi], r8
movzx r9d, byte [rcx]
mov rcx, r8
jmp 0x14008bdeb
cmp dword [rdi], 0
je 0x14008bdbf
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 0x14008bdc4
cdqe
add rax, r12
movzx r9d, byte [r12]
jmp 0x14008bdd5
xor r9d, r9d
jmp 0x14008bdeb
mov dword [rdi], 0
mov byte [r12], 0
xor r9d, r9d
mov rax, rbp
mov rdx, qword [rsp + 0x90]
mov rcx, qword [rsp + 0x40]
mov qword [rcx], rax
mov qword [rsi], rbp
mov rcx, rbp
mov byte [rsp + r13*4 + 0x140], r9b
cmp ebx, 0xc
je 0x14008bc56
cmp rcx, rax
jb 0x14008bc50
cmp dword [rdi], 0
je 0x14008bc56
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 0x14008be3d
cdqe
add rax, r12
jmp 0x14008be4b
mov dword [rdi], 0
mov byte [r12], 0
mov rax, rbp
mov rcx, qword [rsp + 0x40]
mov qword [rcx], rax
mov rcx, rbp
mov rdx, qword [rsp + 0x90]
jmp 0x14008bc53
xor eax, eax
cmp ebx, 0xc
sete al
or eax, 0xfffffffc
imul edx, eax
add edx, dword [rsp + 0x68]
add ebx, dword [rsp + 0x138]
sub edx, ebx
mov rcx, r14
call fcn.140096ae0
cmp dword [rsp + 0x60], 1
je 0x14008c355
cmp dword [rsp + 0x60], 8
je 0x14008c5a3
cmp dword [rsp + 0x60], 4
jne 0x14008c876
mov edx, dword [r14]
inc edx
shr edx, 1
jmp 0x14008c5a6
mov ecx, dword [rsp + 0x48]
xor ecx, 0x10
mov eax, dword [rsp + 0x90]
xor eax, 0x10
or eax, ecx
sete byte [rsp + 0x58]
mov eax, r9d
and eax, 0xfffffff8
mov dword [rsp + 0xb0], eax
mov eax, r9d
and eax, 7
mov qword [rsp + 0x38], rax
mov eax, r9d
mov qword [rsp + 0x48], rax
xor ecx, ecx
mov qword [rsp + 0x50], r15
mov qword [rsp + 0x78], r15
jmp 0x14008bf1e
mov rcx, qword [rsp + 0x98]
inc rcx
inc qword [rsp + 0x78]
add qword [rsp + 0x50], 2
cmp rcx, 4
mov r9, qword [rsp + 0x70]
je 0x14008c11c
cmp rcx, qword [rsp + 0x60]
mov qword [rsp + 0x98], rcx
jae 0x14008bf5b
cmp dword [r13], 0x10
jne 0x14008bfdc
test r9d, r9d
jle 0x14008bef9
xor ebx, ebx
mov rcx, r14
call fcn.140096b70
mov rcx, qword [rsp + 0x50]
mov word [rcx + rbx*8], ax
inc rbx
cmp dword [rsp + 0x48], ebx
jne 0x14008bf3f
jmp 0x14008bef9
cmp byte [rsp + 0x58], 0
je 0x14008c013
xor eax, eax
cmp rcx, 3
sete cl
test r9d, r9d
jle 0x14008bef9
mov al, cl
neg eax
mov rcx, qword [rsp + 0x98]
lea rcx, [r15 + rcx*2]
mov r8, qword [rsp + 0x70]
cmp r8d, 8
jb 0x14008bfbe
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 0x14008bf96
test r8b, 7
je 0x14008bef9
xor edx, edx
mov word [rcx + rdx*8], ax
inc rdx
cmp dword [rsp + 0x38], edx
jne 0x14008bfca
jmp 0x14008bef9
cmp dword [rsp + 0x90], 0x10
jne 0x14008c07f
test r9d, r9d
jle 0x14008bef9
xor ebx, ebx
mov rcx, r14
call fcn.140096b70
mov rcx, qword [rsp + 0x78]
mov byte [rcx + rbx*4], ah
inc rbx
cmp dword [rsp + 0x48], ebx
jne 0x14008bff5
jmp 0x14008bef9
cmp rcx, 3
sete al
test r9d, r9d
jle 0x14008bef9
neg al
mov rcx, qword [rsp + 0x98]
add rcx, r15
mov r8, qword [rsp + 0x70]
cmp r8d, 8
jb 0x14008c062
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 0x14008c042
test r8b, 7
je 0x14008bef9
xor edx, edx
mov byte [rcx + rdx*4], al
inc rdx
cmp dword [rsp + 0x38], edx
jne 0x14008c06e
jmp 0x14008bef9
test r9d, r9d
jle 0x14008bef9
mov rcx, qword [rsi]
mov rax, qword [rsp + 0x40]
mov rax, qword [rax]
xor ebx, ebx
jmp 0x14008c0ba
lea r8, [rcx + 1]
mov qword [rsi], r8
movzx edx, byte [rcx]
mov rcx, r8
mov r8, qword [rsp + 0x78]
mov byte [r8 + rbx*4], dl
inc rbx
cmp dword [rsp + 0x48], ebx
je 0x14008bef9
cmp rcx, rax
jb 0x14008c097
cmp dword [rdi], 0
je 0x14008c0f8
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 0x14008c0fc
cdqe
add rax, r12
movzx edx, byte [r12]
jmp 0x14008c10c
xor edx, edx
jmp 0x14008c0a4
mov dword [rdi], 0
mov byte [r12], 0
xor edx, edx
mov rax, rbp
mov rcx, qword [rsp + 0x40]
mov qword [rcx], rax
mov qword [rsi], rbp
mov rcx, rbp
jmp 0x14008c0a4
cmp dword [rsp + 0x80], 4
mov r8d, dword [rsp + 0x5c]
jb 0x14008c2b6
cmp dword [r13], 0x10
jne 0x14008c1fc
test r9d, r9d
jle 0x14008c2b6
mov eax, r9d
xor ecx, ecx
movss xmm0, dword [0x14011f764]
pxor xmm1, xmm1
jmp 0x14008c162
inc rcx
cmp rax, rcx
je 0x14008c2b6
movzx edx, word [r15 + rcx*8 + 6]
test edx, edx
je 0x14008c156
cmp edx, 0xffff
je 0x14008c156
movzx edx, dx
xorps xmm2, xmm2
cvtsi2ss xmm2, edx
movaps xmm3, xmm0
divss xmm3, xmm2
movaps xmm2, xmm3
mulss xmm2, xmm0
movaps xmm4, xmm0
subss xmm4, xmm2
movd xmm2, dword [r15 + rcx*8]
punpcklwd xmm2, xmm1
cvtdq2ps xmm2, xmm2
movaps xmm5, xmm3
shufps xmm5, xmm3, 0
mulps xmm5, xmm2
movaps xmm2, xmm4
shufps xmm2, xmm4, 0
addps xmm2, xmm5
cvttps2dq xmm2, xmm2
pshuflw xmm2, xmm2, 0xe8
movd dword [r15 + rcx*8], xmm2
movzx edx, word [r15 + rcx*8 + 4]
xorps xmm2, xmm2
cvtsi2ss xmm2, edx
mulss xmm2, xmm3
addss xmm2, xmm4
cvttss2si edx, xmm2
mov word [r15 + rcx*8 + 4], dx
jmp 0x14008c156
mov rcx, r15
call qword [sym.imp.api_ms_win_crt_heap_l1_1_0.dll_free]
lea rax, str.corrupt
jmp 0x14008b879
test r9d, r9d
jle 0x14008c2b6
mov eax, r9d
xor ecx, ecx
movss xmm0, dword [0x14011f760]
movss xmm1, dword [0x140112b60]
jmp 0x14008c228
inc rcx
cmp rax, rcx
je 0x14008c2b6
movzx edx, byte [r15 + rcx*4 + 3]
test edx, edx
je 0x14008c21c
cmp edx, 0xff
je 0x14008c21c
movzx edx, dl
xorps xmm2, xmm2
cvtsi2ss xmm2, edx
movaps xmm3, xmm0
divss xmm3, xmm2
movaps xmm2, xmm3
mulss xmm2, xmm1
movaps xmm4, xmm1
subss xmm4, xmm2
movzx edx, byte [r15 + rcx*4]
xorps xmm2, xmm2
cvtsi2ss xmm2, edx
mulss xmm2, xmm3
addss xmm2, xmm4
cvttss2si edx, xmm2
mov byte [r15 + rcx*4], dl
movzx edx, byte [r15 + rcx*4 + 1]
xorps xmm2, xmm2
cvtsi2ss xmm2, edx
mulss xmm2, xmm3
addss xmm2, xmm4
cvttss2si edx, xmm2
mov byte [r15 + rcx*4 + 1], dl
movzx edx, byte [r15 + rcx*4 + 2]
xorps xmm2, xmm2
cvtsi2ss xmm2, edx
mulss xmm2, xmm3
addss xmm2, xmm4
cvttss2si edx, xmm2
mov byte [r15 + rcx*4 + 2], dl
jmp 0x14008c21c
test r8d, 0xfffffffb
je 0x14008c30e
cmp dword [r13], 0x10
jne 0x14008c2e5
mov eax, dword [rsp + 0x88]
mov dword [rsp + 0x20], eax
mov rcx, r15
mov edx, 4
mov r9d, dword [rsp + 0x68]
call fcn.140095cc0
jmp 0x14008c302
mov eax, dword [rsp + 0x88]
mov dword [rsp + 0x20], eax
mov rcx, r15
mov edx, 4
mov r9d, dword [rsp + 0x68]
call fcn.140094e00
mov r15, rax
test rax, rax
je 0x14008afc4
mov rax, qword [rsp + 0xa8]
test rax, rax
je 0x14008c321
mov dword [rax], 4
mov rax, qword [rsp + 0xd0]
mov ecx, dword [rsp + 0x88]
mov dword [rax], ecx
mov rax, qword [rsp + 0xc8]
mov ecx, dword [rsp + 0x68]
mov dword [rax], ecx
jmp 0x14008b5cf
mov rax, qword [rsp + 0x40]
mov rax, qword [rax]
mov qword [rsi], rax
jmp 0x14008c897
mov ecx, dword [r14 + 4]
test ecx, ecx
jle 0x14008c869
mov eax, dword [r14]
add eax, 7
shr eax, 3
neg eax
and eax, 3
mov dword [rsp + 0x80], eax
mov eax, eax
mov qword [rsp + 0x98], rax
xor ebx, ebx
xor edx, edx
jmp 0x14008c3a3
add r8, qword [rsp + 0x98]
mov qword [rsi], r8
mov edx, dword [rsp + 0x78]
inc edx
mov eax, dword [r14 + 4]
cmp edx, eax
jge 0x14008c86c
mov r8, qword [rsi]
mov rax, qword [rsp + 0x40]
mov rcx, qword [rax]
cmp r8, rcx
mov dword [rsp + 0x78], edx
jae 0x14008c3c9
lea rdx, [r8 + 1]
mov qword [rsi], rdx
movzx r8d, byte [r8]
mov qword [rsp + 0x38], rdx
jmp 0x14008c42e
mov qword [rsp + 0x38], r8
cmp dword [rdi], 0
je 0x14008c408
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 0x14008c40d
movsxd rcx, eax
add rcx, r12
movzx r8d, byte [r12]
jmp 0x14008c41e
xor r8d, r8d
jmp 0x14008c42e
mov dword [rdi], 0
mov byte [r12], 0
xor r8d, r8d
mov rcx, rbp
mov rax, qword [rsp + 0x40]
mov qword [rax], rcx
mov qword [rsi], rbp
mov qword [rsp + 0x38], rbp
mov qword [rsp + 0x50], rcx
mov edx, dword [r14]
test edx, edx
jle 0x14008c558
movzx r8d, r8b
xor r13d, r13d
mov r9d, 7
mov r10d, ebx
jmp 0x14008c45f
dec r9d
mov r10d, ebx
cmp r13d, edx
jge 0x14008c558
xor r11d, r11d
bt r8d, r9d
setb r11b
movsxd rbx, r10d
lea rcx, [rbx + 3]
movzx eax, byte [rsp + r11*4 + 0x140]
mov byte [r15 + rbx], al
movzx eax, byte [rsp + r11*4 + 0x141]
mov byte [r15 + rbx + 1], al
movzx eax, byte [rsp + r11*4 + 0x142]
mov byte [r15 + rbx + 2], al
mov rbx, rcx
cmp dword [rsp + 0x48], 4
jne 0x14008c4b0
add r10d, 4
mov byte [r15 + rbx], 0xff
mov ebx, r10d
inc r13d
cmp r13d, edx
je 0x14008c558
test r9d, r9d
jg 0x14008c450
mov rcx, qword [rsp + 0x38]
cmp rcx, qword [rsp + 0x50]
jae 0x14008c4df
lea rax, [rcx + 1]
mov qword [rsi], rax
movzx r8d, byte [rcx]
mov qword [rsp + 0x38], rax
jmp 0x14008c549
cmp dword [rdi], 0
je 0x14008c518
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 0x14008c51d
cdqe
add rax, r12
movzx r8d, byte [r12]
jmp 0x14008c52e
xor r8d, r8d
jmp 0x14008c549
mov dword [rdi], 0
mov byte [r12], 0
xor r8d, r8d
mov rax, rbp
mov qword [rsp + 0x50], rax
mov qword [r14 + 0xc8], rax
mov qword [r14 + 0xc0], rbp
mov edx, dword [r14]
mov qword [rsp + 0x38], rbp
movzx r8d, r8b
mov r9d, 7
jmp 0x14008c453
cmp dword [rsp + 0x80], 0
je 0x14008c391
cmp qword [r14 + 0x10], 0
mov rcx, qword [rsp + 0x50]
mov r8, qword [rsp + 0x38]
je 0x14008c386
mov eax, ecx
sub eax, r8d
mov edx, dword [rsp + 0x80]
sub edx, eax
jle 0x14008c386
mov qword [r14 + 0xc0], rcx
mov rcx, qword [r14 + 0x28]
call qword [r14 + 0x18]
jmp 0x14008c391
mov edx, dword [r14]
mov ecx, dword [r14 + 4]
test ecx, ecx
jle 0x14008c869
neg edx
and edx, 3
mov dword [rsp + 0x78], edx
mov eax, edx
mov qword [rsp + 0x80], rax
xor r11d, r11d
xor ecx, ecx
mov r9d, dword [rsp + 0x60]
jmp 0x14008c5fd
mov qword [r14 + 0xc0], rcx
mov rcx, qword [r14 + 0x28]
mov r13, r11
call qword [r14 + 0x18]
mov r11, r13
mov r9d, dword [rsp + 0x60]
mov ecx, dword [rsp + 0x50]
inc ecx
mov eax, dword [r14 + 4]
cmp ecx, eax
jge 0x14008c86c
mov dword [rsp + 0x50], ecx
cmp dword [r14], 0
jle 0x14008c817
mov rcx, qword [rsi]
mov rax, qword [rsp + 0x40]
mov rdx, qword [rax]
xor r13d, r13d
mov eax, r9d
jmp 0x14008c630
add r13d, 2
cmp r13d, dword [r14]
mov rdx, qword [rsp + 0x38]
jge 0x14008c821
cmp rcx, rdx
jae 0x14008c649
mov qword [rsp + 0x38], rdx
lea r8, [rcx + 1]
mov qword [rsi], r8
movzx edx, byte [rcx]
mov rcx, r8
jmp 0x14008c6bd
cmp dword [rdi], 0
je 0x14008c688
mov qword [rsp + 0x38], r11
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 0x14008c691
movsxd r8, eax
add r8, r12
movzx edx, byte [r12]
jmp 0x14008c6a1
mov qword [rsp + 0x38], rdx
xor edx, edx
jmp 0x14008c6bd
mov dword [rdi], 0
mov byte [r12], 0
xor edx, edx
mov r8, rbp
mov eax, dword [rsp + 0x60]
mov r11, qword [rsp + 0x38]
mov rcx, qword [rsp + 0x40]
mov qword [rsp + 0x38], r8
mov qword [rcx], r8
mov qword [rsi], rbp
mov rcx, rbp
movzx r8d, dl
mov edx, r8d
and edx, 0xf
mov r9d, r8d
shr r9d, 4
mov ebx, eax
cmp eax, 4
cmovne r9d, r8d
mov r8d, 0
cmovne edx, r8d
movsxd r8, r11d
lea rax, [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
mov r10, rax
cmp dword [rsp + 0x48], 4
jne 0x14008c727
add r11d, 4
mov byte [r15 + r10], 0xff
mov r10d, r11d
lea r8d, [r13 + 1]
cmp r8d, dword [r14]
je 0x14008c81c
mov eax, ebx
cmp ebx, 8
jne 0x14008c755
cmp rcx, qword [rsp + 0x38]
mov ebx, dword [rsp + 0x48]
jae 0x14008c75b
lea r8, [rcx + 1]
mov qword [rsi], r8
movzx edx, byte [rcx]
mov rcx, r8
jmp 0x14008c7c9
mov ebx, dword [rsp + 0x48]
jmp 0x14008c7cc
cmp dword [rdi], 0
je 0x14008c799
mov qword [rsp + 0x38], r10
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 0x14008c79d
cdqe
add rax, r12
movzx edx, byte [r12]
jmp 0x14008c7ad
xor edx, edx
jmp 0x14008c7c9
mov dword [rdi], 0
mov byte [r12], 0
xor edx, edx
mov rax, rbp
mov r10, qword [rsp + 0x38]
mov rcx, qword [rsp + 0x40]
mov qword [rsp + 0x38], rax
mov qword [rcx], rax
mov qword [rsi], rbp
mov rcx, rbp
mov eax, dword [rsp + 0x60]
movzx edx, dl
movsxd r8, r10d
lea r11, [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 ebx, 4
jne 0x14008c61e
add r10d, 4
mov byte [r15 + r11], 0xff
mov r11d, r10d
jmp 0x14008c61e
mov eax, r9d
jmp 0x14008c821
mov r11d, r10d
mov eax, ebx
mov r9d, eax
cmp dword [rsp + 0x78], 0
je 0x14008c5eb
cmp qword [r14 + 0x10], 0
je 0x14008c856
mov rax, qword [rsp + 0x40]
mov rcx, qword [rax]
mov rax, qword [rsi]
mov r8d, ecx
sub r8d, eax
mov edx, dword [rsp + 0x78]
sub edx, r8d
jg 0x14008c5d1
jmp 0x14008c859
mov rax, qword [rsi]
add rax, qword [rsp + 0x80]
mov qword [rsi], rax
jmp 0x14008c5eb
mov rax, rcx
mov r11d, dword [rsp + 0x48]
jmp 0x14008d000
mov rcx, r15
call qword [sym.imp.api_ms_win_crt_heap_l1_1_0.dll_free]
lea rax, str.bad_bpp
jmp 0x14008b879
mov rax, qword [rsi]
mov ecx, r9d
add rcx, rax
mov qword [rsi], rcx
mov ecx, dword [rsp + 0x60]
cmp ecx, 0x10
je 0x14008c8d3
cmp ecx, 0x20
je 0x14008c8e7
mov dword [rsp + 0xa0], 0
cmp ecx, 0x18
jne 0x14008c977
mov eax, dword [r14]
and eax, 3
mov dword [rsp + 0xa0], eax
mov dword [rsp + 0x90], 0
jmp 0x14008c929
mov eax, dword [r14]
add eax, eax
and eax, 2
mov dword [rsp + 0xa0], eax
jmp 0x14008c977
mov eax, dword [rsp + 0x98]
xor eax, 0xff
mov ecx, dword [rsp + 0x80]
xor ecx, 0xff00
or ecx, eax
mov eax, dword [rsp + 0x78]
xor eax, 0xff0000
or eax, ecx
sete al
mov dword [rsp + 0xa0], 0
test al, r13b
je 0x14008c977
mov al, 1
mov dword [rsp + 0x90], eax
mov dword [rsp + 0xb4], 0
mov dword [rsp + 0x70], 0
mov dword [rsp + 0x68], 0
mov dword [rsp + 0x58], 0
mov dword [rsp + 0xa4], 0
xor r13d, r13d
mov dword [rsp + 0xc0], 0
mov dword [rsp + 0xb8], 0
xor eax, eax
jmp 0x14008ca6a
cmp dword [rsp + 0x78], 0
je 0x14008cfe0
cmp dword [rsp + 0x80], 0
je 0x14008cfe0
cmp dword [rsp + 0x98], 0
je 0x14008cfe0
mov ebx, dword [rsp + 0x78]
mov ecx, ebx
call fcn.14009a7a0
mov dword [rsp + 0x70], eax
mov ecx, ebx
call fcn.14009a810
mov r13d, eax
mov ebx, dword [rsp + 0x80]
mov ecx, ebx
call fcn.14009a7a0
mov dword [rsp + 0x68], eax
mov ecx, ebx
call fcn.14009a810
mov dword [rsp + 0xc0], eax
mov ebx, dword [rsp + 0x98]
mov ecx, ebx
call fcn.14009a7a0
mov dword [rsp + 0x58], eax
mov ecx, ebx
call fcn.14009a810
mov dword [rsp + 0xb8], eax
mov ebx, dword [rsp + 0x50]
mov ecx, ebx
call fcn.14009a7a0
mov dword [rsp + 0xa4], eax
mov ecx, ebx
call fcn.14009a810
cmp r13d, 8
ja 0x14008cfe0
cmp dword [rsp + 0xc0], 8
ja 0x14008cfe0
cmp dword [rsp + 0xb8], 8
ja 0x14008cfe0
cmp eax, 9
jae 0x14008cfe0
add dword [rsp + 0x70], 0xfffffff9
add dword [rsp + 0x68], 0xfffffff9
add dword [rsp + 0x58], 0xfffffff9
add dword [rsp + 0xa4], 0xfffffff9
mov dword [rsp + 0x90], 0
mov cl, 1
mov dword [rsp + 0xb4], ecx
mov edx, dword [r14 + 4]
test edx, edx
jle 0x14008cff5
mov ecx, dword [rsp + 0x70]
neg ecx
mov dword [rsp + 0xb0], ecx
mov ecx, 8
mov edx, 8
sub edx, r13d
mov dword [rsp + 0xfc], edx
mov edx, r13d
mov qword [rsp + 0x110], rdx
mov edx, dword [rsp + 0x68]
neg edx
mov dword [rsp + 0xf8], edx
mov edx, 8
mov r8d, dword [rsp + 0xc0]
sub edx, r8d
mov dword [rsp + 0xf4], edx
mov edx, r8d
mov qword [rsp + 0xc0], rdx
mov edx, dword [rsp + 0x58]
neg edx
mov dword [rsp + 0xf0], edx
mov edx, 8
mov r8d, dword [rsp + 0xb8]
sub edx, r8d
mov dword [rsp + 0xec], edx
mov edx, r8d
mov qword [rsp + 0xb8], rdx
mov edx, dword [rsp + 0xa4]
neg edx
mov dword [rsp + 0xe4], edx
sub ecx, eax
mov dword [rsp + 0xe8], ecx
mov eax, eax
mov qword [rsp + 0x108], rax
mov eax, dword [rsp + 0xa0]
mov qword [rsp + 0x100], rax
xor r9d, r9d
xor ecx, ecx
mov r11d, dword [rsp + 0x48]
jmp 0x14008cb61
mov rax, qword [rsi]
add rax, qword [rsp + 0x100]
mov qword [rsi], rax
mov ecx, dword [rsp + 0xe0]
inc ecx
mov eax, dword [r14 + 4]
cmp ecx, eax
jge 0x14008d000
mov eax, dword [r14]
cmp byte [rsp + 0xb4], 0
mov dword [rsp + 0xe0], ecx
je 0x14008cd1b
test eax, eax
jle 0x14008cf87
xor ebx, ebx
mov eax, r9d
mov dword [rsp + 0x38], r9d
jmp 0x14008cba8
or dword [rsp + 0x88], r13d
inc ebx
mov eax, r9d
mov dword [rsp + 0x38], r9d
cmp ebx, dword [r14]
jge 0x14008cf87
mov rcx, r14
call fcn.14009a0f0
mov r13d, eax
cmp dword [rsp + 0x60], 0x10
je 0x14008cbc8
mov rcx, r14
call fcn.14009a0f0
shl eax, 0x10
or r13d, eax
mov eax, r13d
and eax, dword [rsp + 0x78]
mov edx, eax
mov ecx, dword [rsp + 0xb0]
shl edx, cl
mov ecx, dword [rsp + 0x70]
shr eax, cl
test ecx, ecx
cmovs eax, edx
mov ecx, dword [rsp + 0xfc]
shr eax, cl
mov rcx, qword [rsp + 0x110]
lea r10, [0x14011fa20]
imul eax, dword [r10 + rcx*4]
lea r11, [0x14011fa50]
movzx ecx, byte [r11 + rcx*4]
sar eax, cl
mov edx, r13d
and edx, dword [rsp + 0x80]
mov r8d, edx
mov ecx, dword [rsp + 0xf8]
shl r8d, cl
mov ecx, dword [rsp + 0x68]
shr edx, cl
test ecx, ecx
cmovs edx, r8d
mov ecx, dword [rsp + 0xf4]
shr edx, cl
mov rcx, qword [rsp + 0xc0]
imul edx, dword [r10 + rcx*4]
movzx ecx, byte [r11 + rcx*4]
sar edx, cl
mov r8d, r13d
and r8d, dword [rsp + 0x98]
mov r9d, r8d
mov ecx, dword [rsp + 0xf0]
shl r9d, cl
mov ecx, dword [rsp + 0x58]
shr r8d, cl
test ecx, ecx
cmovs r8d, r9d
movsxd r9, dword [rsp + 0x38]
mov ecx, dword [rsp + 0xec]
shr r8d, cl
mov byte [r15 + r9], al
mov rax, qword [rsp + 0xb8]
imul r8d, dword [r10 + rax*4]
movzx ecx, byte [r11 + rax*4]
sar r8d, cl
mov byte [r15 + r9 + 1], dl
mov byte [r15 + r9 + 2], r8b
add r9, 3
mov eax, dword [rsp + 0x50]
test eax, eax
je 0x14008ccf3
and r13d, eax
mov eax, r13d
mov ecx, dword [rsp + 0xe4]
shl eax, cl
mov ecx, dword [rsp + 0xa4]
shr r13d, cl
test ecx, ecx
cmovs r13d, eax
mov ecx, dword [rsp + 0xe8]
shr r13d, cl
mov rax, qword [rsp + 0x108]
imul r13d, dword [r10 + rax*4]
movzx ecx, byte [r11 + rax*4]
sar r13d, cl
jmp 0x14008ccf9
mov r13d, 0xff
mov r11d, dword [rsp + 0x48]
cmp r11d, 4
jne 0x14008cb8d
mov eax, dword [rsp + 0x38]
add eax, 4
mov byte [r15 + r9], r13b
mov r9d, eax
jmp 0x14008cb8d
test eax, eax
jle 0x14008cf87
mov rcx, qword [rsi]
mov rax, qword [rsp + 0x40]
mov rax, qword [rax]
xor r13d, r13d
mov ebx, r9d
jmp 0x14008cd4f
movzx edx, dl
or dword [rsp + 0x88], edx
inc r13d
mov ebx, r9d
cmp r13d, dword [r14]
jge 0x14008cf87
cmp rcx, rax
jae 0x14008cd63
lea r8, [rcx + 1]
mov qword [rsi], r8
movzx edx, byte [rcx]
mov rcx, r8
jmp 0x14008cdc3
cmp dword [rdi], 0
je 0x14008cd9c
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 0x14008cda0
cdqe
add rax, r12
movzx edx, byte [r12]
jmp 0x14008cdb0
xor edx, edx
jmp 0x14008cdc3
mov dword [rdi], 0
mov byte [r12], 0
xor edx, edx
mov rax, rbp
mov rcx, qword [rsp + 0x40]
mov qword [rcx], rax
mov qword [rsi], rbp
mov rcx, rbp
mov r11d, dword [rsp + 0x48]
movsxd r9, ebx
mov byte [r9 + r15 + 2], dl
cmp rcx, rax
jae 0x14008cddf
lea r8, [rcx + 1]
mov qword [rsi], r8
movzx edx, byte [rcx]
mov rcx, r8
jmp 0x14008ce4d
cmp dword [rdi], 0
je 0x14008ce1f
mov dword [rsp + 0x38], ebx
mov rbx, r9
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 0x14008ce23
cdqe
add rax, r12
movzx edx, byte [r12]
jmp 0x14008ce33
xor edx, edx
jmp 0x14008ce4d
mov dword [rdi], 0
mov byte [r12], 0
xor edx, edx
mov rax, rbp
mov r9, rbx
mov rcx, qword [rsp + 0x40]
mov qword [rcx], rax
mov qword [rsi], rbp
mov rcx, rbp
mov r11d, dword [rsp + 0x48]
mov ebx, dword [rsp + 0x38]
mov byte [r9 + r15 + 1], dl
cmp rcx, rax
jae 0x14008ce66
lea r8, [rcx + 1]
mov qword [rsi], r8
movzx edx, byte [rcx]
mov rcx, r8
jmp 0x14008ced4
cmp dword [rdi], 0
je 0x14008cea6
mov dword [rsp + 0x38], ebx
mov rbx, r9
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 0x14008ceaa
cdqe
add rax, r12
movzx edx, byte [r12]
jmp 0x14008ceba
xor edx, edx
jmp 0x14008ced4
mov dword [rdi], 0
mov byte [r12], 0
xor edx, edx
mov rax, rbp
mov r9, rbx
mov rcx, qword [rsp + 0x40]
mov qword [rcx], rax
mov qword [rsi], rbp
mov rcx, rbp
mov r11d, dword [rsp + 0x48]
mov ebx, dword [rsp + 0x38]
mov byte [r15 + r9], dl
add r9, 3
mov dl, 0xff
cmp byte [rsp + 0x90], 0
je 0x14008cf6e
cmp rcx, rax
jae 0x14008cf00
lea r8, [rcx + 1]
mov qword [rsi], r8
movzx edx, byte [rcx]
mov rcx, r8
jmp 0x14008cf6e
cmp dword [rdi], 0
je 0x14008cf40
mov dword [rsp + 0x38], ebx
mov rbx, r9
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 0x14008cf44
cdqe
add rax, r12
movzx edx, byte [r12]
jmp 0x14008cf54
xor edx, edx
jmp 0x14008cf6e
mov dword [rdi], 0
mov byte [r12], 0
xor edx, edx
mov rax, rbp
mov r9, rbx
mov ebx, dword [rsp + 0x38]
mov rcx, qword [rsp + 0x40]
mov qword [rcx], rax
mov qword [rsi], rbp
mov rcx, rbp
mov r11d, dword [rsp + 0x48]
cmp r11d, 4
jne 0x14008cd36
add ebx, 4
mov byte [r15 + r9], dl
mov r9d, ebx
jmp 0x14008cd36
cmp dword [rsp + 0xa0], 0
je 0x14008cb4c
cmp qword [r14 + 0x10], 0
je 0x14008cb3e
mov rax, qword [rsp + 0x40]
mov rcx, qword [rax]
mov rax, qword [rsi]
mov r8d, ecx
sub r8d, eax
mov edx, dword [rsp + 0xa0]
sub edx, r8d
jle 0x14008cb41
mov qword [r14 + 0xc0], rcx
mov rcx, qword [r14 + 0x28]
mov rbx, r9
call qword [r14 + 0x18]
mov r9, rbx
mov r11d, dword [rsp + 0x48]
jmp 0x14008cb4c
mov rcx, r15
call qword [sym.imp.api_ms_win_crt_heap_l1_1_0.dll_free]
lea rax, str.bad_masks
jmp 0x14008b879
mov rcx, rdx
mov r11d, dword [rsp + 0x48]
mov rax, rdx
mov qword [rsp + 0x50], rax
cmp r11d, 4
jne 0x14008d08f
cmp dword [rsp + 0x88], 0
jne 0x14008d08f
mov edx, dword [r14]
imul edx, dword [rsp + 0x50]
shl edx, 2
dec edx
js 0x14008d08f
mov r8d, edx
shr r8d, 2
inc r8d
mov rax, rdx
and r8, 7
je 0x14008d04c
mov rax, rdx
mov byte [r15 + rax], 0xff
add rax, 0xfffffffffffffffc
dec r8
jne 0x14008d03e
cmp edx, 0x1c
jb 0x14008d08f
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 0x14008d055
cmp dword [rsp + 0xdc], 0
jle 0x14008d29a
cmp dword [rsp + 0x50], 2
jl 0x14008d29a
mov r8, qword [rsp + 0x50]
mov eax, r8d
shr eax, 1
mov qword [rsp + 0x40], rax
mov edx, dword [r14]
imul edx, dword [rsp + 0x48]
lea rax, [r15 + rdx]
mov qword [rsp + 0x78], rax
mov eax, edx
and eax, 0xffffffe0
mov qword [rsp + 0x98], rax
mov eax, edx
and eax, 0xfffffff8
mov rcx, rdx
neg rcx
mov qword [rsp + 0x88], rcx
lea rcx, [r15 + 0x10]
mov qword [rsp + 0x60], rcx
lea edi, [r8 - 1]
imul edi, edx
lea rcx, [r15 + 1]
mov qword [rsp + 0x80], rcx
xor r12d, r12d
xor r13d, r13d
jmp 0x14008d11f
inc r13
add r12d, edx
sub edi, edx
cmp r13, qword [rsp + 0x40]
je 0x14008d29a
test edx, edx
jle 0x14008d10c
mov ebp, edi
mov esi, r12d
mov r10d, edx
imul r10d, r13d
lea r9, [r15 + r10]
mov ebx, r13d
not ebx
add ebx, dword [rsp + 0x50]
cmp edx, 8
mov qword [rsp + 0x38], r9
jb 0x14008d16e
mov r8d, edx
imul r8d, ebx
mov rcx, qword [rsp + 0x78]
lea r11, [rcx + r8]
cmp r9, r11
jae 0x14008d1f4
add r10, rcx
add r8, r15
cmp r8, r10
jae 0x14008d1f4
xor r10d, r10d
mov r11, r10
test dl, 1
je 0x14008d19d
imul ebx, edx
add rbx, r15
mov r9, qword [rsp + 0x38]
movzx ecx, byte [r9 + r10]
movzx r8d, byte [rbx + r10]
mov byte [r9 + r10], r8b
mov byte [rbx + r10], cl
mov r11, r10
or r11, 1
not r10
cmp r10, qword [rsp + 0x88]
je 0x14008d10c
mov rcx, qword [rsp + 0x80]
add rbp, rcx
add rsi, rcx
movzx ecx, byte [rsi + r11 - 1]
movzx r8d, byte [rbp + r11 - 1]
mov byte [rsi + r11 - 1], r8b
mov byte [rbp + r11 - 1], cl
movzx ecx, byte [rsi + r11]
movzx r8d, byte [rbp + r11]
mov byte [rsi + r11], r8b
mov byte [rbp + r11], cl
add r11, 2
cmp rdx, r11
jne 0x14008d1bc
jmp 0x14008d10c
cmp edx, 0x20
jae 0x14008d1fe
xor r11d, r11d
jmp 0x14008d268
mov rcx, qword [rsp + 0x60]
lea r10, [rcx + rsi]
lea r11, [rcx + rbp]
xor r8d, r8d
mov rcx, qword [rsp + 0x98]
movups xmm0, xmmword [r10 + r8 - 0x10]
movups xmm1, xmmword [r10 + r8]
movups xmm2, xmmword [r11 + r8 - 0x10]
movups xmm3, xmmword [r11 + r8]
movups xmmword [r10 + r8 - 0x10], xmm2
movups xmmword [r10 + r8], xmm3
movups xmmword [r11 + r8 - 0x10], xmm0
movups xmmword [r11 + r8], xmm1
add r8, 0x20
cmp rcx, r8
jne 0x14008d216
cmp rcx, rdx
je 0x14008d10c
mov r10, qword [rsp + 0x98]
mov r11, r10
test dl, 0x18
je 0x14008d171
lea r8, [r15 + rsi]
lea r10, [r15 + rbp]
mov r9, qword [r8 + r11]
mov rcx, qword [r10 + r11]
mov qword [r8 + r11], rcx
mov qword [r10 + r11], r9
add r11, 8
cmp rax, r11
jne 0x14008d270
mov r10, rax
cmp rax, rdx
je 0x14008d10c
jmp 0x14008d171
mov r8d, dword [rsp + 0x5c]
test r8d, r8d
je 0x14008d2cd
mov edx, dword [rsp + 0x48]
cmp edx, r8d
je 0x14008d2cd
mov r9d, dword [r14]
mov rax, qword [rsp + 0x50]
mov dword [rsp + 0x20], eax
mov rcx, r15
call fcn.140094e00
mov r15, rax
test rax, rax
je 0x14008afc4
mov eax, dword [r14]
mov rcx, qword [rsp + 0xc8]
mov dword [rcx], eax
mov eax, dword [r14 + 4]
mov rcx, qword [rsp + 0xd0]
mov dword [rcx], eax
mov rcx, qword [rsp + 0xa8]
test rcx, rcx
je 0x14008b5cf
mov eax, dword [r14 + 8]
mov dword [rcx], eax
jmp 0x14008b5cf
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 [0x140208a80]
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 0x14008db2e
inc rcx
mov qword [r15 + 0xc0], rcx
dec esi
je 0x14008db85
cmp rcx, rax
jb 0x14008db20
cmp dword [r15 + 0x30], 0
je 0x14008db2a
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 0x14008db69
cdqe
add rax, r12
jmp 0x14008db79
mov dword [r15 + 0x30], 0
mov byte [r15 + 0x38], 0
mov rax, rbx
mov qword [r15 + 0xc8], rax
mov rcx, rbx
jmp 0x14008db23
mov rcx, r15
call fcn.140096b70
mov esi, eax
mov rcx, r15
call fcn.140096b70
mov ebp, eax
cmp qword [r15 + 0x10], 0
je 0x14008dbb3
mov rcx, qword [r15 + 0x28]
call qword [r15 + 0x20]
test eax, eax
je 0x14008dbc3
cmp dword [r15 + 0x30], 0
je 0x14008dc2c
mov rax, qword [r15 + 0xc0]
cmp rax, qword [r15 + 0xc8]
jae 0x14008dc2c
test ebp, ebp
je 0x14008dc4b
mov eax, 0x7fffffff
xor edx, edx
div ebp
cmp eax, esi
jb 0x14008e455
mov eax, ebp
imul eax, esi
cmp eax, 0x20000000
jae 0x14008e455
mov qword [rsp + 0x38], r13
mov qword [rsp + 0x40], r14
mov rcx, r15
call fcn.140096b70
mov rcx, r15
call fcn.140096b70
mov rcx, r15
call fcn.140096b70
mov rcx, r15
call fcn.140096b70
test ebp, ebp
je 0x14008dc75
mov eax, 0x7fffffff
xor edx, edx
div ebp
cmp eax, esi
jae 0x14008dc75
jmp 0x14008e439
mov eax, dword [0x140212b68]
mov rcx, qword gs:[0x58]
mov rax, qword [rcx + rax*8]
lea rcx, [0x14012019f]
jmp 0x14008e46f
mov qword [rsp + 0x38], r13
mov qword [rsp + 0x40], r14
mov rcx, r15
call fcn.140096b70
mov rcx, r15
call fcn.140096b70
mov rcx, r15
call fcn.140096b70
mov rcx, r15
call fcn.140096b70
mov r13d, ebp
imul r13d, esi
cmp r13d, 0x1fffffff
ja 0x14008e439
shl r13d, 2
mov rcx, r13
call qword [sym.imp.api_ms_win_crt_heap_l1_1_0.dll_malloc]
test rax, rax
je 0x14008e439
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 0x14008e49f
mov rcx, qword [r15 + 0xc0]
mov rax, qword [r15 + 0xc8]
cmp rcx, rax
jae 0x14008dd30
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 0x14008ddb0
lea rdx, [rcx + 1]
mov qword [r15 + 0xc0], rdx
movzx ebp, byte [rcx]
mov rcx, rdx
jmp 0x14008de12
cmp dword [r15 + 0x30], 0
je 0x14008dd6f
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 0x14008dd7e
cdqe
add rax, r12
movzx ecx, byte [r12]
mov dword [rsp + 0x34], ecx
jmp 0x14008dd96
mov dword [rsp + 0x34], 0
cmp rcx, rax
jb 0x14008dd0b
jmp 0x14008ddb0
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 0x14008dd0b
cmp dword [r15 + 0x30], 0
je 0x14008ddeb
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 0x14008ddef
cdqe
add rax, r12
movzx ebp, byte [r12]
jmp 0x14008de01
xor ebp, ebp
jmp 0x14008de12
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 0x14008de30
lea r8, [rcx + 1]
mov qword [r15 + 0xc0], r8
movzx edx, byte [rcx]
mov rcx, r8
jmp 0x14008de92
cmp dword [r15 + 0x30], 0
je 0x14008de6b
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 0x14008de6f
cdqe
add rax, r12
movzx edx, byte [r12]
jmp 0x14008de81
xor edx, edx
jmp 0x14008de92
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 0x14008deb0
lea rdx, [rcx + 1]
mov qword [r15 + 0xc0], rdx
movzx r14d, byte [rcx]
mov rcx, rdx
jmp 0x14008df14
cmp dword [r15 + 0x30], 0
je 0x14008deeb
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 0x14008def0
cdqe
add rax, r12
movzx r14d, byte [r12]
jmp 0x14008df03
xor r14d, r14d
jmp 0x14008df14
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 0x14008df43
mov rcx, qword [r15 + 0x28]
call qword [r15 + 0x20]
test eax, eax
je 0x14008df4c
cmp dword [r15 + 0x30], 0
je 0x14008e4bb
mov rcx, qword [r15 + 0xc0]
mov rax, qword [r15 + 0xc8]
cmp rcx, rax
jae 0x14008e4bb
cmp bpl, 8
jne 0x14008e49f
movzx eax, r14b
or r13d, eax
add rdi, 3
inc rsi
cmp byte [rsp + 0x34], 0
mov eax, dword [rsp + 0x5c]
jne 0x14008dcd0
and r13d, 0x10
cmp r13d, 1
mov r8d, 4
sbb r8d, 0
mov rdi, qword [rsp + 0x50]
test rdi, rdi
je 0x14008df92
mov dword [rdi], r8d
test eax, eax
mov r14, qword [rsp + 0x40]
mov ebp, dword [rsp + 0x120]
mov r13, qword [rsp + 0x38]
je 0x14008e42a
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 0x14008e01c
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 0x14008e413
lea rax, [rdx + rdx*2]
movzx ecx, byte [rsp + rax + 0x91]
test ecx, ecx
mov qword [rsp + 0x80], rdx
je 0x14008e234
cmp ecx, 1
je 0x14008e278
cmp ecx, 2
jne 0x14008e569
cmp dword [rsp + 0x28], 0
je 0x14008dfed
lea r14, [rsp + rax]
add r14, 0x92
mov rax, qword [rsp + 0x28]
mov ebp, eax
mov r13, qword [rsp + 0x60]
mov rcx, qword [r15 + 0xc0]
mov rax, qword [r15 + 0xc8]
cmp rcx, rax
jae 0x14008e08e
lea rdx, [rcx + 1]
mov qword [r15 + 0xc0], rdx
movzx edi, byte [rcx]
mov rcx, rdx
jmp 0x14008e0f0
cmp dword [r15 + 0x30], 0
je 0x14008e0c9
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 0x14008e0cd
cdqe
add rax, r12
movzx edi, byte [r12]
jmp 0x14008e0df
xor edi, edi
jmp 0x14008e0f0
mov dword [r15 + 0x30], 0
mov byte [r15 + 0x38], 0
xor edi, edi
mov rax, rbx
mov qword [r15 + 0xc8], rax
mov qword [r15 + 0xc0], rbx
mov rcx, rbx
cmp qword [r15 + 0x10], 0
je 0x14008e11c
mov rcx, qword [r15 + 0x28]
call qword [r15 + 0x20]
test eax, eax
je 0x14008e125
cmp dword [r15 + 0x30], 0
je 0x14008e543
mov rcx, qword [r15 + 0xc0]
mov rax, qword [r15 + 0xc8]
cmp rcx, rax
jae 0x14008e543
movzx eax, dil
test al, al
mov dword [rsp + 0x58], ebp
js 0x14008e171
cmp ebp, eax
jbe 0x14008e543
inc eax
movzx edi, byte [r14]
mov dword [rsp + 0x68], eax
mov ebp, eax
mov rcx, r15
mov edx, edi
mov r8, r13
call fcn.14009c290
test rax, rax
je 0x14008e4dc
add r13, 4
dec ebp
jne 0x14008e145
mov ebp, dword [rsp + 0x58]
mov r8d, dword [rsp + 0x68]
jmp 0x14008e226
cmp dil, 0x80
jne 0x14008e181
mov rcx, r15
call fcn.140096b70
jmp 0x14008e184
add eax, 0xffffff81
mov rdi, qword [rsp + 0x50]
cmp eax, ebp
jg 0x14008e58f
mov ebp, eax
movzx edx, byte [r14]
mov rcx, r15
lea r8, [rsp + 0x8c]
call fcn.14009c290
test rax, rax
je 0x14008e4e1
mov r8d, ebp
test ebp, ebp
jle 0x14008e222
mov eax, r8d
mov ebp, dword [rsp + 0x58]
jmp 0x14008e1c8
add r13, 4
dec eax
je 0x14008e226
movzx ecx, byte [r14]
test cl, cl
js 0x14008e1e1
test cl, 0x40
jne 0x14008e1f2
test cl, 0x20
jne 0x14008e203
test cl, 0x10
je 0x14008e1c0
jmp 0x14008e214
movzx edx, byte [rsp + 0x8c]
mov byte [r13], dl
test cl, 0x40
je 0x14008e1d5
movzx edx, byte [rsp + 0x8d]
mov byte [r13 + 1], dl
test cl, 0x20
je 0x14008e1da
movzx edx, byte [rsp + 0x8e]
mov byte [r13 + 2], dl
test cl, 0x10
je 0x14008e1c0
movzx ecx, byte [rsp + 0x8f]
mov byte [r13 + 3], cl
jmp 0x14008e1c0
mov ebp, dword [rsp + 0x58]
sub ebp, r8d
jg 0x14008e068
jmp 0x14008dfed
cmp dword [rsp + 0x28], 0
je 0x14008dfed
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.14009c290
test rax, rax
je 0x14008e4dc
add rdi, 4
dec ebp
jne 0x14008e254
jmp 0x14008dfed
cmp dword [rsp + 0x28], 0
je 0x14008dfed
lea rdi, [rsp + rax]
add rdi, 0x92
mov rax, qword [rsp + 0x28]
mov ebp, eax
mov r14, qword [rsp + 0x60]
jmp 0x14008e2a4
sub ebp, eax
jle 0x14008dfed
mov rcx, qword [r15 + 0xc0]
mov rax, qword [r15 + 0xc8]
cmp rcx, rax
jae 0x14008e2cb
lea rdx, [rcx + 1]
mov qword [r15 + 0xc0], rdx
movzx r13d, byte [rcx]
mov rcx, rdx
jmp 0x14008e32f
cmp dword [r15 + 0x30], 0
je 0x14008e306
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 0x14008e30b
cdqe
add rax, r12
movzx r13d, byte [r12]
jmp 0x14008e31e
xor r13d, r13d
jmp 0x14008e32f
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 0x14008e35b
mov rcx, qword [r15 + 0x28]
call qword [r15 + 0x20]
test eax, eax
je 0x14008e364
cmp dword [r15 + 0x30], 0
je 0x14008e543
mov rcx, qword [r15 + 0xc0]
mov rax, qword [r15 + 0xc8]
cmp rcx, rax
jae 0x14008e543
movzx edx, byte [rdi]
mov rcx, r15
lea r8, [rsp + 0x8c]
call fcn.14009c290
test rax, rax
je 0x14008e4dc
movzx eax, r13b
cmp ebp, eax
cmovb eax, ebp
movzx eax, al
test al, al
je 0x14008e29c
mov ecx, eax
jmp 0x14008e3ac
add r14, 4
dec ecx
je 0x14008e29c
movzx edx, byte [rdi]
test dl, dl
js 0x14008e3d0
test dl, 0x40
jne 0x14008e3e1
test dl, 0x20
jne 0x14008e3f3
test dl, 0x10
je 0x14008e3a0
jmp 0x14008e405
movzx r8d, byte [rsp + 0x8c]
mov byte [r14], r8b
test dl, 0x40
je 0x14008e3b8
movzx r8d, byte [rsp + 0x8d]
mov byte [r14 + 1], r8b
test dl, 0x20
je 0x14008e3bd
movzx r8d, byte [rsp + 0x8e]
mov byte [r14 + 2], r8b
test dl, 0x10
je 0x14008e3a0
movzx edx, byte [rsp + 0x8f]
mov byte [r14 + 3], dl
jmp 0x14008e3a0
mov rcx, qword [rsp + 0x78]
inc rcx
cmp rcx, qword [rsp + 0x70]
mov eax, dword [rsp + 0x6c]
jne 0x14008dfd5
mov rsi, qword [rsp + 0x28]
mov rcx, qword [rsp + 0x48]
jmp 0x14008e509
mov eax, dword [0x140212b68]
mov rcx, qword gs:[0x58]
mov rax, qword [rcx + rax*8]
lea rcx, str.outofmem
jmp 0x14008e46f
mov eax, dword [0x140212b68]
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.14010bb50
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 [0x140212b68]
mov rcx, qword gs:[0x58]
mov rax, qword [rcx + rax*8]
lea rcx, str.bad_format
jmp 0x14008e4d5
mov eax, dword [0x140212b68]
mov rcx, qword gs:[0x58]
mov rax, qword [rcx + rax*8]
lea rcx, [0x14012019f]
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 0x14008e526
test ebp, ebp
jne 0x14008e526
mov r8d, dword [rdi]
mov eax, dword [rsp + 0x5c]
mov dword [rsp + 0x20], eax
mov edx, 4
mov r9d, esi
call fcn.140094e00
mov rsi, rax
jmp 0x14008e478
mov eax, dword [0x140212b68]
mov rcx, qword gs:[0x58]
mov rax, qword [rcx + rax*8]
lea rcx, [0x14012019f]
mov qword [rax + 8], rcx
jmp 0x14008e4dc
mov eax, dword [0x140212b68]
mov rcx, qword gs:[0x58]
mov rax, qword [rcx + rax*8]
lea rcx, str.bad_format
mov qword [rax + 8], rcx
jmp 0x14008e4f2
mov eax, dword [0x140212b68]
mov rcx, qword gs:[0x58]
mov rax, qword [rcx + rax*8]
lea rcx, [0x14012019f]
mov qword [rax + 8], rcx
jmp 0x14008e4e1
push r15
push r14
push r13
push r12
push rsi
push rdi
push rbp
push rbx
sub rsp, 0x108
movaps xmmword [rsp + 0xf0], xmm15
movaps xmmword [rsp + 0xe0], xmm14
movaps xmmword [rsp + 0xd0], xmm13
movaps xmmword [rsp + 0xc0], xmm12
movaps xmmword [rsp + 0xb0], xmm11
movdqa xmmword [rsp + 0xa0], xmm10
movaps xmmword [rsp + 0x90], xmm9
movaps xmmword [rsp + 0x80], xmm8
movaps xmmword [rsp + 0x70], xmm7
movaps xmmword [rsp + 0x60], xmm6
test rcx, rcx
je 0x140092217
mov ebp, r8d
mov r8d, edx
mov rsi, rcx
mov eax, ebp
or eax, edx
js 0x1400921ed
test ebp, ebp
je 0x140091f68
mov eax, 0x7fffffff
xor edx, edx
div ebp
cmp eax, r8d
jl 0x1400921ed
imul ebp, r8d
mov eax, ebp
or eax, r9d
js 0x1400921ed
test r9d, r9d
je 0x140091f8e
mov eax, 0x7fffffff
xor edx, edx
div r9d
cmp eax, ebp
jl 0x1400921ed
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 0x1400921ed
mov rdi, rax
mov qword [rsp + 0x28], rsi
test ebp, ebp
jle 0x140092282
mov eax, edx
and eax, 1
lea r14d, [rdx + rax]
dec r14d
movss xmm6, dword [0x1401f09c8]
movss xmm11, dword [0x1401f09cc]
movsxd rax, edx
mov ecx, ebp
mov qword [rsp + 0x48], rcx
mov r13d, r14d
mov ebp, r13d
and ebp, 0xfffffffc
movaps xmm12, xmm11
shufps xmm12, xmm11, 0
mov qword [rsp + 0x38], rax
lea rax, [rax*4]
mov qword [rsp + 0x40], rax
xor r12d, r12d
movss xmm13, dword [0x140112b60]
movss xmm7, dword [0x140111760]
xorps xmm9, xmm9
movaps xmm14, xmmword [0x14011f0a0]
movaps xmm15, xmmword [0x140114740]
movdqa xmm10, xmmword [0x140117cf0]
mov rsi, qword [rsp + 0x28]
mov rbx, rdi
movaps xmmword [rsp + 0x50], xmm11
jmp 0x140092068
inc r12
add rbx, qword [rsp + 0x38]
add rsi, qword [rsp + 0x40]
cmp r12, qword [rsp + 0x48]
je 0x140092282
mov eax, 0
test r14d, r14d
jle 0x1400921ae
xor r15d, r15d
cmp r14d, 4
jb 0x140092170
nop word cs:[rax + rax]
movups xmm8, xmmword [rsi + r15*4]
mulps xmm8, xmm12
movaps xmm0, xmm8
movaps xmm1, xmm6
call sub.api_ms_win_crt_math_l1_1_0.dll_powf
movaps xmm7, xmm0
movaps xmm0, xmm8
shufps xmm0, xmm8, 0x55
movaps xmm1, xmm6
call sub.api_ms_win_crt_math_l1_1_0.dll_powf
movaps xmm9, xmm0
movaps xmm0, xmm8
unpckhpd xmm0, xmm8
movaps xmm1, xmm6
call sub.api_ms_win_crt_math_l1_1_0.dll_powf
movaps xmm11, xmm14
movaps xmm14, xmm12
movdqa xmm12, xmm10
movaps xmm10, xmm0
shufps xmm8, xmm8, 0xff
movaps xmm0, xmm8
movaps xmm1, xmm6
call sub.api_ms_win_crt_math_l1_1_0.dll_powf
unpcklps xmm10, xmm0
unpcklps xmm7, xmm9
movlhps xmm7, xmm10
movdqa xmm10, xmm12
movaps xmm12, xmm14
movaps xmm14, xmm11
xorps xmm0, xmm0
mulps xmm7, xmm11
addps xmm7, xmm15
maxps xmm7, xmm0
minps xmm7, xmm11
cvttps2dq xmm0, xmm7
pand xmm0, xmm10
packuswb xmm0, xmm0
packuswb xmm0, xmm0
movd dword [rbx + r15], xmm0
add r15, 4
cmp rbp, r15
jne 0x140092090
mov r15, rbp
mov eax, r14d
cmp rbp, r13
mov rdx, qword [rsp + 0x30]
movss xmm7, dword [0x140111760]
xorps xmm9, xmm9
movaps xmm11, xmmword [rsp + 0x50]
je 0x1400921ae
nop word cs:[rax + rax]
movss xmm0, dword [rsi + r15*4]
mulss xmm0, xmm11
movaps xmm1, xmm6
call sub.api_ms_win_crt_math_l1_1_0.dll_powf
mulss xmm0, xmm13
addss xmm0, xmm7
maxss xmm0, xmm9
minss xmm0, xmm13
cvttss2si eax, xmm0
mov byte [rbx + r15], al
inc r15
cmp r13, r15
jne 0x140092170
mov eax, r14d
mov rdx, qword [rsp + 0x30]
cmp eax, edx
jge 0x140092050
mov rcx, r12
imul rcx, qword [rsp + 0x38]
cdqe
add rax, rcx
mov rcx, qword [rsp + 0x28]
movss xmm0, dword [rcx + rax*4]
mulss xmm0, xmm13
addss xmm0, xmm7
maxss xmm0, xmm9
minss xmm0, xmm13
cvttss2si ecx, xmm0
mov byte [rdi + rax], cl
jmp 0x140092050
mov rcx, rsi
call qword [sym.imp.api_ms_win_crt_heap_l1_1_0.dll_free]
mov eax, dword [0x140212b68]
mov rcx, qword gs:[0x58]
mov rax, qword [rcx + rax*8]
lea rcx, str.outofmem
mov qword [rax + 8], rcx
xor edi, edi
mov rax, rdi
movaps xmm6, xmmword [rsp + 0x60]
movaps xmm7, xmmword [rsp + 0x70]
movaps xmm8, xmmword [rsp + 0x80]
movaps xmm9, xmmword [rsp + 0x90]
movaps xmm10, xmmword [rsp + 0xa0]
movaps xmm11, xmmword [rsp + 0xb0]
movaps xmm12, xmmword [rsp + 0xc0]
movaps xmm13, xmmword [rsp + 0xd0]
movaps xmm14, xmmword [rsp + 0xe0]
movaps xmm15, xmmword [rsp + 0xf0]
add rsp, 0x108
pop rbx
pop rbp
pop rdi
pop rsi
pop r12
pop r13
pop r14
pop r15
ret
mov rcx, qword [rsp + 0x28]
call qword [sym.imp.api_ms_win_crt_heap_l1_1_0.dll_free]
jmp 0x140092219