Function at 0x22dafd800
Capabilities:
Encrypt data using rc4 ksa
Inspect section memory permissions
Resolve function by parsing pe exports

Disassembly:
push r15
mov eax, 0x1878
push r14
push r13
push r12
push rbp
push rdi
push rsi
push rbx
call fcn.22dcea7d0
sub rsp, rax
movaps xmmword [rsp + 0x17f0], xmm6
movaps xmmword [rsp + 0x1800], xmm7
movaps xmmword [rsp + 0x1810], xmm8
movaps xmmword [rsp + 0x1820], xmm9
movaps xmmword [rsp + 0x1830], xmm10
movaps xmmword [rsp + 0x1840], xmm11
movaps xmmword [rsp + 0x1850], xmm12
movaps xmmword [rsp + 0x1860], xmm13
pxor xmm0, xmm0
xor r10d, r10d
mov r15, qword [rcx]
mov qword [rcx + 0x18], 0
mov r13, rcx
movups xmmword [rcx + 8], xmm0
mov rax, qword [r15 + 0xc8]
mov dword [rsp + 0x18c8], edx
mov rdx, qword [r15 + 0xc0]
mov dword [rsp + 0x18d0], r8d
mov word [rsp + 0x387], r10w
mov byte [rsp + 0x389], 0
cmp rdx, rax
jb 0x22dafd940
mov r9d, dword [r15 + 0x30]
test r9d, r9d
jne 0x22dafe7a0
nop dword [rax]
lea rcx, [0x22dd0c480]
lea rdi, [0x22dd76de0]
xor r14d, r14d
call fcn.22dcfcd40
mov qword [rax], rdi
movaps xmm6, xmmword [rsp + 0x17f0]
mov eax, r14d
movaps xmm7, xmmword [rsp + 0x1800]
movaps xmm8, xmmword [rsp + 0x1810]
movaps xmm9, xmmword [rsp + 0x1820]
movaps xmm10, xmmword [rsp + 0x1830]
movaps xmm11, xmmword [rsp + 0x1840]
movaps xmm12, xmmword [rsp + 0x1850]
movaps xmm13, xmmword [rsp + 0x1860]
add rsp, 0x1878
pop rbx
pop rsi
pop rdi
pop rbp
pop r12
pop r13
pop r14
pop r15
ret
lea rcx, [rdx + 1]
mov qword [r15 + 0xc0], rcx
movzx edx, byte [rdx]
cmp dl, 0x89
jne 0x22dafd8c0
cmp rcx, rax
jb 0x22dafd9c0
mov r8d, dword [r15 + 0x30]
test r8d, r8d
je 0x22dafd8c0
lea rbx, [r15 + 0x38]
mov rcx, qword [r15 + 0x28]
mov r8d, dword [r15 + 0x34]
mov rdx, rbx
call qword [r15 + 0x10]
mov rdx, qword [r15 + 0xc0]
sub rdx, qword [r15 + 0xd0]
add dword [r15 + 0xb8], edx
lea rdx, [r15 + 0x39]
test eax, eax
je 0x22dafe750
cdqe
movq xmm0, rdx
movzx ecx, byte [r15 + 0x38]
add rax, rbx
movq xmm2, rax
punpcklqdq xmm0, xmm2
movups xmmword [r15 + 0xc0], xmm0
jmp 0x22dafd9ce
lea rdx, [rcx + 1]
mov qword [r15 + 0xc0], rdx
movzx ecx, byte [rcx]
cmp cl, 0x50
jne 0x22dafd8c0
cmp rdx, rax
jb 0x22dafda40
mov ecx, dword [r15 + 0x30]
test ecx, ecx
je 0x22dafd8c0
lea rbx, [r15 + 0x38]
mov rcx, qword [r15 + 0x28]
mov r8d, dword [r15 + 0x34]
mov rdx, rbx
call qword [r15 + 0x10]
mov rdx, qword [r15 + 0xc0]
lea rcx, [r15 + 0x39]
sub rdx, qword [r15 + 0xd0]
add dword [r15 + 0xb8], edx
test eax, eax
je 0x22dafdc20
cdqe
movq xmm0, rcx
movzx edx, byte [r15 + 0x38]
add rax, rbx
movq xmm3, rax
punpcklqdq xmm0, xmm3
movups xmmword [r15 + 0xc0], xmm0
jmp 0x22dafda4e
lea rcx, [rdx + 1]
mov qword [r15 + 0xc0], rcx
movzx edx, byte [rdx]
cmp dl, 0x4e
jne 0x22dafd8c0
cmp rcx, rax
jb 0x22dafdac0
mov edx, dword [r15 + 0x30]
test edx, edx
je 0x22dafd8c0
lea rbx, [r15 + 0x38]
mov rcx, qword [r15 + 0x28]
mov r8d, dword [r15 + 0x34]
mov rdx, rbx
call qword [r15 + 0x10]
mov rdx, qword [r15 + 0xc0]
sub rdx, qword [r15 + 0xd0]
add dword [r15 + 0xb8], edx
lea rdx, [r15 + 0x39]
test eax, eax
je 0x22dafe750
cdqe
movq xmm0, rdx
movzx ecx, byte [r15 + 0x38]
add rax, rbx
movq xmm4, rax
punpcklqdq xmm0, xmm4
movups xmmword [r15 + 0xc0], xmm0
jmp 0x22dafdace
lea rdx, [rcx + 1]
mov qword [r15 + 0xc0], rdx
movzx ecx, byte [rcx]
cmp cl, 0x47
jne 0x22dafd8c0
cmp rdx, rax
jb 0x22dafdb40
mov eax, dword [r15 + 0x30]
test eax, eax
je 0x22dafd8c0
lea rbx, [r15 + 0x38]
mov rcx, qword [r15 + 0x28]
mov r8d, dword [r15 + 0x34]
mov rdx, rbx
call qword [r15 + 0x10]
mov rdx, qword [r15 + 0xc0]
lea rcx, [r15 + 0x39]
sub rdx, qword [r15 + 0xd0]
add dword [r15 + 0xb8], edx
test eax, eax
je 0x22dafdc20
cdqe
movq xmm0, rcx
movzx edx, byte [r15 + 0x38]
add rax, rbx
movq xmm2, rax
punpcklqdq xmm0, xmm2
movups xmmword [r15 + 0xc0], xmm0
jmp 0x22dafdb4e
lea rcx, [rdx + 1]
mov qword [r15 + 0xc0], rcx
movzx edx, byte [rdx]
cmp dl, 0xd
jne 0x22dafd8c0
cmp rcx, rax
jb 0x22dafdbc0
mov eax, dword [r15 + 0x30]
test eax, eax
je 0x22dafd8c0
lea rbx, [r15 + 0x38]
mov rcx, qword [r15 + 0x28]
mov r8d, dword [r15 + 0x34]
mov rdx, rbx
call qword [r15 + 0x10]
mov rdx, qword [r15 + 0xc0]
sub rdx, qword [r15 + 0xd0]
add dword [r15 + 0xb8], edx
lea rdx, [r15 + 0x39]
test eax, eax
je 0x22dafe750
cdqe
movq xmm0, rdx
movzx ecx, byte [r15 + 0x38]
add rax, rbx
movq xmm3, rax
punpcklqdq xmm0, xmm3
movups xmmword [r15 + 0xc0], xmm0
jmp 0x22dafdbce
lea rdx, [rcx + 1]
mov qword [r15 + 0xc0], rdx
movzx ecx, byte [rcx]
cmp cl, 0xa
jne 0x22dafd8c0
cmp rdx, rax
jb 0x22dafdc48
mov eax, dword [r15 + 0x30]
test eax, eax
je 0x22dafd8c0
lea rbx, [r15 + 0x38]
mov rcx, qword [r15 + 0x28]
mov r8d, dword [r15 + 0x34]
mov rdx, rbx
call qword [r15 + 0x10]
mov rdx, qword [r15 + 0xc0]
lea rcx, [r15 + 0x39]
sub rdx, qword [r15 + 0xd0]
add dword [r15 + 0xb8], edx
test eax, eax
jne 0x22dafe928
nop dword [rax]
movq xmm0, rcx
mov dword [r15 + 0x30], 0
punpcklqdq xmm0, xmm0
mov byte [r15 + 0x38], 0
movups xmmword [r15 + 0xc0], xmm0
jmp 0x22dafd8c0
lea rcx, [rdx + 1]
mov qword [r15 + 0xc0], rcx
movzx edx, byte [rdx]
cmp dl, 0x1a
jne 0x22dafd8c0
cmp rcx, rax
jb 0x22dafdcc8
mov eax, dword [r15 + 0x30]
test eax, eax
je 0x22dafd8c0
lea rbx, [r15 + 0x38]
mov rcx, qword [r15 + 0x28]
mov r8d, dword [r15 + 0x34]
mov rdx, rbx
call qword [r15 + 0x10]
mov rdx, qword [r15 + 0xc0]
lea rcx, [r15 + 0x39]
sub rdx, qword [r15 + 0xd0]
add dword [r15 + 0xb8], edx
test eax, eax
je 0x22dafdc20
cdqe
movq xmm0, rcx
movzx edx, byte [r15 + 0x38]
add rbx, rax
movq xmm4, rbx
punpcklqdq xmm0, xmm4
movups xmmword [r15 + 0xc0], xmm0
jmp 0x22dafdcd6
lea rax, [rcx + 1]
mov qword [r15 + 0xc0], rax
movzx edx, byte [rcx]
cmp dl, 0xa
jne 0x22dafd8c0
xor r12d, r12d
mov dword [rsp + 0x5c], 0
mov r14d, 1
xor edi, edi
mov dword [rsp + 0x54], 0
mov dword [rsp + 0x58], 0
mov dword [rsp + 0x48], 0
mov dword [rsp + 0x50], 0
mov byte [rsp + 0xa3], 0
mov byte [rsp + 0x40], r12b
nop
mov rcx, r15
call fcn.22dafaf50
mov rcx, r15
mov ebx, eax
call fcn.22dafaf50
mov rcx, r15
movzx ebp, al
call fcn.22dafaf50
mov rcx, r15
movzx esi, al
call fcn.22dafaf50
movzx r9d, bl
shl esi, 8
mov rcx, r15
shl r9d, 8
movzx eax, al
add r9d, ebp
add esi, eax
shl r9d, 0x10
lea r12d, [r9 + rsi]
call fcn.22dafaf50
mov rcx, r15
mov ebx, eax
call fcn.22dafaf50
mov rcx, r15
movzx ebp, al
call fcn.22dafaf50
mov rcx, r15
movzx esi, al
call fcn.22dafaf50
shl esi, 8
movzx r8d, al
movzx eax, bl
shl eax, 8
add esi, r8d
add eax, ebp
shl eax, 0x10
add eax, esi
cmp eax, 0x49484452
je 0x22dafe448
ja 0x22dafe2b0
cmp eax, 0x49444154
je 0x22dafe3a8
cmp eax, 0x49454e44
jne 0x22dafe350
movzx r12d, byte [rsp + 0x40]
test r14d, r14d
jne 0x22dafe778
mov eax, dword [rsp + 0x18c8]
test eax, eax
jne 0x22dafe658
mov rbx, qword [r13 + 8]
test rbx, rbx
je 0x22dafe8d0
mov eax, dword [r15 + 4]
mov esi, dword [r15]
mov edx, dword [r15 + 8]
imul esi, dword [r13 + 0x20]
mov edi, dword [rsp + 0x5c]
imul edx, eax
add esi, 7
xor edi, 1
shr esi, 3
imul esi, edx
add esi, eax
movsxd rsi, esi
mov rcx, rsi
call sub.msvcrt.dll_malloc
movq xmm1, rax
punpcklqdq xmm1, xmm1
test rax, rax
je 0x22daff8e5
movsxd rdx, dword [rsp + 0x50]
add rax, rsi
movq xmm0, rbx
mov dword [rsp + 0x820], 1
mov qword [rsp + 0x818], rax
lea rax, [rsp + 0x7f0]
add rdx, rbx
mov rcx, rax
mov qword [rsp + 0x70], rax
movq xmm5, rdx
mov edx, edi
movups xmmword [rsp + 0x808], xmm1
punpcklqdq xmm0, xmm5
movaps xmmword [rsp + 0x7f0], xmm0
call fcn.22daf6650
mov r14d, eax
test eax, eax
je 0x22dafede1
mov rax, qword [rsp + 0x810]
mov rsi, qword [rsp + 0x808]
sub rsi, rax
mov qword [r13 + 0x10], rax
mov dword [rsp + 0xb0], esi
test rax, rax
je 0x22dafe8c8
mov rcx, qword [r13 + 8]
call sub.msvcrt.dll_free
mov qword [r13 + 8], 0
mov eax, dword [r15 + 8]
mov dword [rsp + 0xa4], eax
add eax, 1
cmp eax, dword [rsp + 0x18d0]
je 0x22dafeda4
cmp byte [rsp + 0xa3], 0
cmove eax, dword [rsp + 0xa4]
mov dword [rsp + 0xa4], eax
mov edx, eax
mov dword [r15 + 0xc], edx
mov edi, dword [r13 + 0x20]
mov rax, qword [r13 + 0x10]
mov r14, qword [r13]
cmp edi, 0x10
mov ebp, dword [rsp + 0x58]
mov dword [rsp + 0xb4], edi
mov r8d, dword [r14 + 4]
mov ebx, dword [r14]
mov qword [rsp + 0xa8], rax
lea eax, [rdx + rdx]
cmovne eax, edx
mov edi, eax
test ebp, ebp
je 0x22dafe88e
mov eax, r8d
or eax, ebx
js 0x22dafe6e0
test r8d, r8d
je 0x22dafdf5e
mov eax, 0x7fffffff
cdq
idiv r8d
cmp ebx, eax
jg 0x22dafe6e0
test edi, edi
js 0x22dafe6e0
mov ecx, r8d
imul ecx, ebx
test edi, edi
je 0x22dafdf80
mov eax, 0x7fffffff
cdq
idiv edi
cmp ecx, eax
jg 0x22dafe6e0
imul ecx, edi
mov dword [rsp + 0x50], r8d
movsxd rcx, ecx
call sub.msvcrt.dll_malloc
mov qword [rsp + 0x40], rax
test rax, rax
je 0x22dafe6e0
lea rax, [rsp + 0x390]
movsxd rdi, edi
mov rcx, r14
mov r8d, dword [rsp + 0x50]
mov qword [rsp + 0x88], rax
lea rax, [rsp + 0x3d0]
mov r14, rdi
movdqa xmm13, xmmword [0x22dd77930]
mov qword [rsp + 0x98], rax
lea rax, [rsp + 0x3b0]
movq xmm12, qword [0x22dd77940]
mov qword [rsp + 0x18c0], r13
movdqa xmm7, xmmword [0x22dd77990]
mov r13d, edi
mov qword [rsp + 0x48], 0
movdqa xmm11, xmmword [0x22dd77950]
mov qword [rsp + 0x90], rax
movq xmm10, qword [0x22dd77960]
mov byte [rsp + 0xc7], r12b
movdqa xmm9, xmmword [0x22dd77970]
mov qword [rsp + 0xc8], r15
movq xmm8, qword [0x22dd77980]
movq xmm6, qword [0x22dd779b8]
jmp 0x22dafe076
add qword [rsp + 0x48], 4
mov rax, qword [rsp + 0x48]
cmp rax, 0x1c
je 0x22dafe94d
mov rax, qword [rsp + 0x18c0]
mov rcx, qword [rax]
mov ebx, dword [rcx]
mov r8d, dword [rcx + 4]
mov rdi, qword [rsp + 0x48]
xor edx, edx
mov rax, qword [rsp + 0x88]
mov dword [rsp + 0x3a8], 0
movaps xmmword [rsp + 0x390], xmm13
movq qword [rsp + 0x3a0], xmm12
mov r12d, dword [rax + rdi]
mov rax, qword [rsp + 0x98]
mov dword [rsp + 0x3e8], 1
movaps xmmword [rsp + 0x3d0], xmm9
movq qword [rsp + 0x3e0], xmm8
mov esi, dword [rax + rdi]
mov dword [rsp + 0x3c8], 1
lea eax, [rsi + rbx - 1]
movaps xmmword [rsp + 0x3b0], xmm11
sub eax, r12d
movaps xmmword [rsp + 0x7f0], xmm7
div esi
movq qword [rsp + 0x3c0], xmm10
mov dword [rsp + 0x808], 2
movq qword [rsp + 0x800], xmm6
xor edx, edx
mov ebx, eax
mov rax, qword [rsp + 0x90]
mov ebp, dword [rax + rdi]
mov rax, qword [rsp + 0x70]
mov edi, dword [rax + rdi]
lea eax, [r8 + rdi - 1]
mov dword [rsp + 0x6c], edi
sub eax, ebp
div edi
mov dword [rsp + 0x68], eax
test ebx, ebx
je 0x22dafe050
test eax, eax
je 0x22dafe050
mov edi, eax
mov eax, dword [rcx + 8]
mov edx, dword [rsp + 0xb4]
mov dword [rsp + 0x20], ebx
mov dword [rsp + 0x28], edi
mov r9d, dword [rsp + 0xa4]
imul eax, ebx
mov dword [rsp + 0x30], edx
mov r8d, dword [rsp + 0xb0]
mov rcx, qword [rsp + 0x18c0]
imul eax, edx
mov rdx, qword [rsp + 0xa8]
add eax, 7
sar eax, 3
add eax, 1
imul eax, edi
mov dword [rsp + 0xc0], eax
mov eax, dword [rsp + 0x54]
mov dword [rsp + 0x38], eax
call fcn.22daf0d50
test eax, eax
je 0x22daff7a8
mov rax, qword [rsp + 0x18c0]
mov rdx, qword [rax + 0x18]
mov qword [rsp + 0xb8], rdx
test edi, edi
jle 0x22dafe288
test ebx, ebx
jle 0x22dafe288
imul r12d, r13d
mov eax, r13d
mov qword [rsp + 0x60], rdx
imul eax, ebx
mov dword [rsp + 0x58], 0
imul esi, r13d
mov dword [rsp + 0x50], ebx
movsxd rdx, r12d
cdqe
mov qword [rsp + 0x78], rdx
mov qword [rsp + 0x80], rax
movsxd rax, esi
mov r12, rax
nop dword [rax]
mov rax, qword [rsp + 0x18c0]
mov rdi, qword [rsp + 0x60]
xor r15d, r15d
mov rbx, qword [rsp + 0x78]
mov rsi, qword [rax]
mov rax, r14
mov r14, rdi
mov rdi, rbx
mov rbx, rax
nop dword [rax]
mov ecx, dword [rsi]
mov rdx, r14
mov r8, rbx
add r15d, 1
add r14, rbx
imul ecx, r13d
imul ecx, ebp
add rcx, rdi
add rcx, qword [rsp + 0x40]
add rdi, r12
call sub.msvcrt.dll_memcpy
cmp dword [rsp + 0x50], r15d
jne 0x22dafe238
add dword [rsp + 0x58], 1
mov rdx, qword [rsp + 0x80]
mov r14, rbx
add qword [rsp + 0x60], rdx
mov eax, dword [rsp + 0x58]
add ebp, dword [rsp + 0x6c]
cmp dword [rsp + 0x68], eax
jne 0x22dafe210
mov rcx, qword [rsp + 0xb8]
call sub.msvcrt.dll_free
mov eax, dword [rsp + 0xc0]
add qword [rsp + 0xa8], rax
sub dword [rsp + 0xb0], eax
jmp 0x22dafe050
cmp eax, 0x504c5445
je 0x22dafe500
cmp eax, 0x74524e53
jne 0x22dafe4c0
test r14d, r14d
jne 0x22dafe778
cmp qword [r13 + 8], 0
jne 0x22daff157
cmp byte [rsp + 0x40], 0
jne 0x22dafe830
mov eax, dword [r15 + 8]
test al, 1
je 0x22daff2d9
lea edx, [rax + rax]
cmp edx, r12d
jne 0x22daff1df
cmp dword [r13 + 0x20], 0x10
je 0x22dafe690
xor ebx, ebx
lea rsi, [rsp + 0x387]
test eax, eax
jle 0x22dafe341
mov rcx, r15
call fcn.22dafaf50
mov rcx, r15
call fcn.22dafaf50
movsxd rdx, dword [r13 + 0x20]
lea rcx, [0x22dd774a8]
mul byte [rcx + rdx]
mov byte [rsi + rbx], al
add rbx, 1
cmp dword [r15 + 8], ebx
jg 0x22dafe316
mov byte [rsp + 0xa3], 1
jmp 0x22dafe380
cmp eax, 0x43674249
jne 0x22dafe4c0
mov dword [rsp + 0x5c], 1
test r12d, r12d
je 0x22dafe380
js 0x22dafe4e3
mov edx, r12d
mov rcx, r15
call fcn.22db167a0
nop dword [rax]
mov rcx, r15
call fcn.22dafaf50
mov rcx, r15
call fcn.22dafaf50
mov rcx, r15
call fcn.22dafaf50
mov rcx, r15
call fcn.22dafaf50
jmp 0x22dafdd20
test r14d, r14d
jne 0x22dafe778
cmp byte [rsp + 0x40], 0
je 0x22dafe3c0
test edi, edi
je 0x22daff172
cmp dword [rsp + 0x18c8], 2
je 0x22daff1cb
mov eax, dword [rsp + 0x50]
lea ebx, [rax + r12]
cmp ebx, eax
jl 0x22dafe8c8
mov eax, dword [rsp + 0x48]
mov rcx, qword [r13 + 8]
cmp ebx, eax
ja 0x22dafe700
mov eax, dword [rsp + 0x50]
mov rdx, qword [r15 + 0xc0]
add rcx, rax
cmp qword [r15 + 0x10], 0
mov rax, qword [r15 + 0xc8]
je 0x22dafe419
mov rsi, rax
sub rsi, rdx
cmp r12d, esi
jg 0x22dafe8eb
movsxd r12, r12d
lea r8, [rdx + r12]
cmp rax, r8
jae 0x22dafe818
lea rcx, [0x22dd0c480]
lea rdi, str.outofdata
call fcn.22dcfcd40
mov qword [rax], rdi
jmp 0x22dafd8d9
test r14d, r14d
je 0x22daff18d
cmp r12d, 0xd
jne 0x22daff0c8
mov rcx, r15
call fcn.22daeec70
mov rcx, r15
mov dword [r15], eax
call fcn.22daeec70
mov dword [r15 + 4], eax
cmp eax, 0x1000000
ja 0x22dafeecf
cmp dword [r15], 0x1000000
ja 0x22dafeeed
mov rcx, r15
call fcn.22dafaf50
movzx edx, al
mov dword [r13 + 0x20], edx
cmp al, 0x10
jbe 0x22dafe580
lea rcx, [0x22dd0c480]
lea rdi, str.1_2_4_8_16_bit_only
xor r14d, r14d
call fcn.22dcfcd40
mov qword [rax], rdi
jmp 0x22dafd8d9
test r14d, r14d
jne 0x22dafedfb
test eax, 0x20000000
je 0x22daff1a8
test r12d, r12d
je 0x22dafe380
jns 0x22dafe36e
mov rax, qword [r15 + 0xc8]
mov qword [r15 + 0xc0], rax
jmp 0x22dafe380
test r14d, r14d
jne 0x22dafedfb
cmp r12d, 0x300
ja 0x22daff13c
mov eax, 0xaaaaaaab
mov edi, r12d
imul rdi, rax
shr rdi, 0x21
lea eax, [rdi + rdi*2]
cmp eax, r12d
jne 0x22daff1fa
xor ebx, ebx
lea rsi, [rsp + 0x3f0]
cmp eax, 2
jbe 0x22dafed9d
nop dword [rax]
mov rcx, r15
call fcn.22dafaf50
mov rcx, r15
mov byte [rsi + rbx*4], al
call fcn.22dafaf50
mov rcx, r15
mov byte [rsi + rbx*4 + 1], al
call fcn.22dafaf50
mov byte [rsi + rbx*4 + 3], 0xff
mov byte [rsi + rbx*4 + 2], al
add rbx, 1
cmp edi, ebx
ja 0x22dafe548
jmp 0x22dafe380
mov rdx, 0xfffffffffffefee9
bt rdx, rax
jb 0x22dafe4a1
mov rcx, r15
call fcn.22dafaf50
mov ebx, eax
movzx eax, al
mov dword [rsp + 0x54], eax
cmp eax, 6
jg 0x22dafee34
cmp dword [rsp + 0x54], 3
je 0x22dafe800
test bl, 1
jne 0x22dafee34
mov rcx, r15
call fcn.22dafaf50
test al, al
jne 0x22daff215
mov rcx, r15
call fcn.22dafaf50
test al, al
jne 0x22daff233
mov rcx, r15
call fcn.22dafaf50
movzx eax, al
mov dword [rsp + 0x58], eax
cmp eax, 1
jg 0x22daff251
mov ecx, dword [r15]
test ecx, ecx
je 0x22dafee16
mov r8d, dword [r15 + 4]
test r8d, r8d
je 0x22dafee16
cmp byte [rsp + 0x40], 0
jne 0x22dafe668
and ebx, 2
mov eax, 3
mov r9d, dword [rsp + 0x54]
cmovne r14d, eax
mov eax, 0x40000000
xor edx, edx
sar r9d, 2
div ecx
add r9d, r14d
xor edx, edx
mov dword [r15 + 8], r9d
div r9d
cmp r8d, eax
ja 0x22dafeeed
cmp dword [rsp + 0x18c8], 2
jne 0x22dafe682
nop dword [rax + rax]
mov r14d, 1
jmp 0x22dafd8d9
mov eax, 0x10000000
xor edx, edx
mov dword [r15 + 8], 1
div ecx
cmp r8d, eax
ja 0x22dafeecf
xor r14d, r14d
jmp 0x22dafe380
mov byte [rsp + 0xa3], 1
test eax, eax
jle 0x22dafe380
xor ebp, ebp
lea rsi, [rsp + 0x38a]
mov rcx, r15
call fcn.22dafaf50
mov rcx, r15
movzx ebx, al
call fcn.22dafaf50
shl ebx, 8
movzx eax, al
add ebx, eax
mov word [rsi + rbp*2], bx
add rbp, 1
cmp dword [r15 + 8], ebp
jg 0x22dafe6aa
jmp 0x22dafe341
lea rcx, [0x22dd0c480]
xor r14d, r14d
call fcn.22dcfcd40
lea rdx, [0x22dd76af6]
mov qword [rax], rdx
jmp 0x22dafd8d9
test eax, eax
jne 0x22dafe720
mov eax, 0x1000
cmp r12d, eax
cmovae eax, r12d
mov dword [rsp + 0x48], eax
cmp ebx, eax
jbe 0x22dafe72a
nop dword [rax + rax]
add eax, eax
cmp ebx, eax
ja 0x22dafe720
mov dword [rsp + 0x48], eax
mov edx, dword [rsp + 0x48]
call sub.msvcrt.dll_realloc
mov rcx, rax
test rax, rax
je 0x22daff8c3
mov qword [r13 + 8], rax
jmp 0x22dafe3ee
movq xmm0, rdx
mov dword [r15 + 0x30], 0
punpcklqdq xmm0, xmm0
mov byte [r15 + 0x38], 0
movups xmmword [r15 + 0xc0], xmm0
jmp 0x22dafd8c0
lea rcx, [0x22dd0c480]
lea rdi, str.first_not_IHDR
xor r14d, r14d
call fcn.22dcfcd40
mov qword [rax], rdi
jmp 0x22dafd8d9
lea rbx, [r15 + 0x38]
mov rcx, qword [r15 + 0x28]
mov r8d, dword [r15 + 0x34]
mov rdx, rbx
call qword [r15 + 0x10]
mov rdx, qword [r15 + 0xc0]
lea rcx, [r15 + 0x39]
sub rdx, qword [r15 + 0xd0]
add dword [r15 + 0xb8], edx
test eax, eax
je 0x22dafdc20
cdqe
movq xmm0, rcx
movzx edx, byte [r15 + 0x38]
add rax, rbx
movq xmm4, rax
punpcklqdq xmm0, xmm4
movups xmmword [r15 + 0xc0], xmm0
jmp 0x22dafd94e
cmp dword [r13 + 0x20], 0x10
je 0x22daff7cd
mov byte [rsp + 0x40], 3
jmp 0x22dafe5bf
mov r8, r12
call sub.msvcrt.dll_memcpy
add qword [r15 + 0xc0], r12
mov dword [rsp + 0x50], ebx
jmp 0x22dafe380
cmp dword [rsp + 0x18c8], 2
je 0x22daff7ba
test edi, edi
je 0x22daff7eb
cmp edi, r12d
jb 0x22daff1df
test r12d, r12d
je 0x22dafe884
lea eax, [r12 - 1]
lea rbx, [rsp + 0x3f3]
lea rsi, [rsp + rax*4 + 0x3f7]
nop dword [rax]
mov rcx, r15
add rbx, 4
call fcn.22dafaf50
mov byte [rbx - 4], al
cmp rsi, rbx
jne 0x22dafe870
mov byte [rsp + 0x40], 4
jmp 0x22dafe380
mov eax, dword [rsp + 0x54]
mov dword [rsp + 0x28], r8d
mov r9d, edx
mov r8d, esi
mov dword [rsp + 0x20], ebx
mov rdx, qword [rsp + 0xa8]
mov rcx, r13
mov dword [rsp + 0x38], eax
mov eax, dword [rsp + 0xb4]
mov dword [rsp + 0x30], eax
call fcn.22daf0d50
test eax, eax
jne 0x22dafe96f
xor r14d, r14d
jmp 0x22dafd8d9
lea rcx, [0x22dd0c480]
call fcn.22dcfcd40
lea rdx, str.no_IDAT
mov qword [rax], rdx
jmp 0x22dafd8d9
movsxd rbp, esi
sub r12d, esi
mov r8, rbp
call sub.msvcrt.dll_memcpy
mov rcx, qword [r15 + 0x28]
mov r8d, r12d
lea rdx, [rax + rbp]
call qword [r15 + 0x10]
mov rdx, qword [r15 + 0xc8]
mov qword [r15 + 0xc0], rdx
cmp r12d, eax
je 0x22dafe827
jmp 0x22dafe429
cdqe
movq xmm0, rcx
movzx edx, byte [r15 + 0x38]
add rax, rbx
movq xmm5, rax
punpcklqdq xmm0, xmm5
movups xmmword [r15 + 0xc0], xmm0
jmp 0x22dafdc56
mov r13, qword [rsp + 0x18c0]
mov rax, qword [rsp + 0x40]
movzx r12d, byte [rsp + 0xc7]
mov r15, qword [rsp + 0xc8]
mov qword [r13 + 0x18], rax
cmp byte [rsp + 0xa3], 0
je 0x22dafec93
mov ecx, dword [r15 + 0xc]
mov rdx, qword [r13]
mov rbx, qword [r13 + 0x18]
lea eax, [rcx - 2]
mov esi, dword [rdx]
and eax, 0xfffffffd
imul esi, dword [rdx + 4]
cmp dword [r13 + 0x20], 0x10
je 0x22dafef0b
test eax, eax
jne 0x22dafee52
cmp ecx, 2
jne 0x22dafee6c
test esi, esi
je 0x22dafec93
lea r8d, [rsi - 1]
movzx edx, byte [rsp + 0x387]
cmp r8d, 0xf
jbe 0x22dafeb5b
mov ecx, r8d
movd xmm0, edx
pxor xmm4, xmm4
mov rax, rbx
shr ecx, 4
punpcklbw xmm0, xmm0
movdqa xmm3, xmmword [0x22dd77860]
sub ecx, 1
punpcklwd xmm0, xmm0
shl rcx, 5
pshufd xmm2, xmm0, 0
lea r9, [rbx + rcx + 0x20]
movdqu xmm0, xmmword [rax]
movdqu xmm1, xmmword [rax + 0x10]
add rax, 0x20
pand xmm0, xmm3
pand xmm1, xmm3
packuswb xmm0, xmm1
pcmpeqb xmm0, xmm2
pcmpeqb xmm0, xmm4
movd ecx, xmm0
mov byte [rax - 0x1f], cl
movaps xmmword [rsp + 0x370], xmm0
movzx ecx, byte [rsp + 0x371]
mov byte [rax - 0x1d], cl
movaps xmmword [rsp + 0x360], xmm0
movzx ecx, byte [rsp + 0x362]
mov byte [rax - 0x1b], cl
movaps xmmword [rsp + 0x350], xmm0
movzx ecx, byte [rsp + 0x353]
mov byte [rax - 0x19], cl
movaps xmmword [rsp + 0x340], xmm0
movzx ecx, byte [rsp + 0x344]
mov byte [rax - 0x17], cl
movaps xmmword [rsp + 0x330], xmm0
movzx ecx, byte [rsp + 0x335]
mov byte [rax - 0x15], cl
movaps xmmword [rsp + 0x320], xmm0
movzx ecx, byte [rsp + 0x326]
mov byte [rax - 0x13], cl
movaps xmmword [rsp + 0x310], xmm0
movzx ecx, byte [rsp + 0x317]
mov byte [rax - 0x11], cl
movaps xmmword [rsp + 0x300], xmm0
movzx ecx, byte [rsp + 0x308]
mov byte [rax - 0xf], cl
movaps xmmword [rsp + 0x2f0], xmm0
movzx ecx, byte [rsp + 0x2f9]
mov byte [rax - 0xd], cl
movaps xmmword [rsp + 0x2e0], xmm0
movzx ecx, byte [rsp + 0x2ea]
mov byte [rax - 0xb], cl
movaps xmmword [rsp + 0x2d0], xmm0
movzx ecx, byte [rsp + 0x2db]
mov byte [rax - 9], cl
movaps xmmword [rsp + 0x2c0], xmm0
movzx ecx, byte [rsp + 0x2cc]
mov byte [rax - 7], cl
movaps xmmword [rsp + 0x2b0], xmm0
movzx ecx, byte [rsp + 0x2bd]
mov byte [rax - 5], cl
movaps xmmword [rsp + 0x2a0], xmm0
movzx ecx, byte [rsp + 0x2ae]
mov byte [rax - 3], cl
movaps xmmword [rsp + 0x290], xmm0
movzx ecx, byte [rsp + 0x29f]
mov byte [rax - 1], cl
cmp rax, r9
jne 0x22dafea01
mov eax, r8d
and eax, 0xfffffff0
mov ecx, eax
lea rbx, [rbx + rcx*2]
cmp byte [rbx], dl
setne cl
neg ecx
mov byte [rbx + 1], cl
lea ecx, [rax + 1]
cmp esi, ecx
jbe 0x22dafec93
cmp byte [rbx + 2], dl
setne cl
neg ecx
mov byte [rbx + 3], cl
lea ecx, [rax + 2]
cmp esi, ecx
jbe 0x22dafec93
cmp byte [rbx + 4], dl
setne cl
neg ecx
mov byte [rbx + 5], cl
lea ecx, [rax + 3]
cmp esi, ecx
jbe 0x22dafec93
cmp byte [rbx + 6], dl
setne cl
neg ecx
mov byte [rbx + 7], cl
lea ecx, [rax + 4]
cmp esi, ecx
jbe 0x22dafec93
cmp byte [rbx + 8], dl
setne cl
neg ecx
mov byte [rbx + 9], cl
lea ecx, [rax + 5]
cmp esi, ecx
jbe 0x22dafec93
cmp byte [rbx + 0xa], dl
setne cl
neg ecx
mov byte [rbx + 0xb], cl
lea ecx, [rax + 6]
cmp esi, ecx
jbe 0x22dafec93
cmp byte [rbx + 0xc], dl
setne cl
neg ecx
mov byte [rbx + 0xd], cl
lea ecx, [rax + 7]
cmp esi, ecx
jbe 0x22dafec93
cmp byte [rbx + 0xe], dl
setne cl
neg ecx
mov byte [rbx + 0xf], cl
lea ecx, [rax + 8]
cmp esi, ecx
jbe 0x22dafec93
cmp byte [rbx + 0x10], dl
setne cl
neg ecx
mov byte [rbx + 0x11], cl
lea ecx, [rax + 9]
cmp esi, ecx
jbe 0x22dafec93
cmp byte [rbx + 0x12], dl
setne cl
neg ecx
mov byte [rbx + 0x13], cl
lea ecx, [rax + 0xa]
cmp esi, ecx
jbe 0x22dafec93
cmp byte [rbx + 0x14], dl
setne cl
neg ecx
mov byte [rbx + 0x15], cl
lea ecx, [rax + 0xb]
cmp esi, ecx
jbe 0x22dafec93
cmp byte [rbx + 0x16], dl
setne cl
neg ecx
mov byte [rbx + 0x17], cl
lea ecx, [rax + 0xc]
cmp esi, ecx
jbe 0x22dafec93
cmp byte [rbx + 0x18], dl
setne cl
neg ecx
mov byte [rbx + 0x19], cl
lea ecx, [rax + 0xd]
cmp esi, ecx
jbe 0x22dafec93
cmp byte [rbx + 0x1a], dl
setne cl
neg ecx
mov byte [rbx + 0x1b], cl
lea ecx, [rax + 0xe]
cmp esi, ecx
jbe 0x22dafec93
cmp byte [rbx + 0x1c], dl
setne cl
add eax, 0xf
neg ecx
mov byte [rbx + 0x1d], cl
cmp esi, eax
jbe 0x22dafec93
cmp byte [rbx + 0x1e], dl
setne al
neg eax
mov byte [rbx + 0x1f], al
mov ebx, dword [rsp + 0x5c]
test ebx, ebx
je 0x22dafecd2
lea rcx, [0x22dd0c3a0]
call fcn.22dcfcd40
mov r10d, dword [rax]
test r10d, r10d
je 0x22dafeeba
lea rcx, [0x22dd0c3c0]
call fcn.22dcfcd40
mov r9d, dword [rax]
test r9d, r9d
je 0x22dafecd2
cmp dword [r15 + 0xc], 2
jg 0x22daff2f4
test r12b, r12b
je 0x22dafedd0
movzx edi, r12b
cmp dword [rsp + 0x18d0], 3
mov dword [r15 + 8], edi
cmovge edi, dword [rsp + 0x18d0]
mov dword [r15 + 0xc], edi
mov rdx, qword [r13]
mov r12, qword [r13 + 0x18]
mov eax, dword [rdx + 4]
imul eax, dword [rdx]
mov esi, eax
test eax, eax
js 0x22dafe6e0
mov eax, 0x7fffffff
cdq
idiv edi
cmp eax, esi
jl 0x22dafe6e0
mov ecx, esi
imul ecx, edi
movsxd rcx, ecx
call sub.msvcrt.dll_malloc
mov rbx, rax
test rax, rax
je 0x22dafe6e0
cmp edi, 3
je 0x22daff0e6
mov ecx, esi
xor edx, edx
test esi, esi
je 0x22dafed6d
nop dword [rax]
movzx eax, byte [r12 + rdx]
shl eax, 2
cdqe
mov eax, dword [rsp + rax + 0x3f0]
mov dword [rbx + rdx*4], eax
add rdx, 1
cmp rdx, rcx
jne 0x22dafed50
mov rcx, r12
call sub.msvcrt.dll_free
mov qword [r13 + 0x18], rbx
mov rcx, qword [r13 + 0x10]
mov r14d, 1
call sub.msvcrt.dll_free
mov qword [r13 + 0x10], 0
mov rcx, r15
call fcn.22daeec70
jmp 0x22dafd8d9
xor edi, edi
jmp 0x22dafe380
cmp dword [rsp + 0x18d0], 3
je 0x22dafdee7
test r12b, r12b
jne 0x22dafdee7
mov eax, dword [rsp + 0x18d0]
mov dword [rsp + 0xa4], eax
mov edx, eax
jmp 0x22dafdf00
cmp byte [rsp + 0xa3], 0
je 0x22dafed79
add dword [r15 + 8], 1
jmp 0x22dafed79
mov rcx, qword [rsp + 0x810]
call sub.msvcrt.dll_free
mov qword [r13 + 0x10], 0
jmp 0x22dafd8d9
lea rcx, [0x22dd0c480]
call fcn.22dcfcd40
lea rdx, str.first_not_IHDR
mov qword [rax], rdx
jmp 0x22dafe8c8
lea rcx, [0x22dd0c480]
xor r14d, r14d
call fcn.22dcfcd40
lea rdx, str.0_pixel_image
mov qword [rax], rdx
jmp 0x22dafd8d9
lea rcx, [0x22dd0c480]
xor r14d, r14d
call fcn.22dcfcd40
lea rdx, str.bad_ctype
mov qword [rax], rdx
jmp 0x22dafd8d9
mov r8d, 0x12fb
lea rdx, [0x22dd76a38]
lea rcx, str.out_n__2__out_n__4
call qword [sym.imp.msvcrt.dll__assert]
test esi, esi
je 0x22dafec93
movzx edx, byte [rsp + 0x387]
movzx ecx, byte [rsp + 0x388]
lea rax, [rbx + rsi*4]
movzx r8d, byte [rsp + 0x389]
jmp 0x22dafeea5
add rbx, 4
cmp rbx, rax
je 0x22dafec93
cmp byte [rbx], dl
jne 0x22dafee98
cmp byte [rbx + 1], cl
jne 0x22dafee98
cmp byte [rbx + 2], r8b
jne 0x22dafee98
mov byte [rbx + 3], 0
jmp 0x22dafee98
mov r8d, dword [0x22dddb6c4]
test r8d, r8d
je 0x22dafecd2
jmp 0x22dafecc7
lea rcx, [0x22dd0c480]
lea rdi, [0x22dd76b29]
xor r14d, r14d
call fcn.22dcfcd40
mov qword [rax], rdi
jmp 0x22dafd8d9
lea rcx, [0x22dd0c480]
xor r14d, r14d
call fcn.22dcfcd40
lea rdx, [0x22dd76b29]
mov qword [rax], rdx
jmp 0x22dafd8d9
test eax, eax
jne 0x22daff26f
cmp ecx, 2
jne 0x22daff289
test esi, esi
je 0x22dafec93
lea ecx, [rsi - 1]
movzx edx, word [rsp + 0x38a]
cmp ecx, 7
jbe 0x22dafefff
movd xmm0, edx
lea rax, [rbx + 2]
pxor xmm4, xmm4
mov r8d, ecx
shr r8d, 3
punpcklwd xmm0, xmm0
sub r8d, 1
pshufd xmm1, xmm0, 0
shl r8, 5
lea r9, [rbx + r8 + 0x22]
movdqu xmm0, xmmword [rax - 2]
movdqu xmm5, xmmword [rax + 0xe]
add rax, 0x20
movdqa xmm2, xmm0
punpcklwd xmm0, xmm5
punpckhwd xmm2, xmm5
movdqa xmm3, xmm0
punpckhwd xmm3, xmm2
punpcklwd xmm0, xmm2
punpcklwd xmm0, xmm3
pcmpeqw xmm0, xmm1
pcmpeqw xmm0, xmm4
pextrw r8d, xmm0, 0
mov word [rax - 0x20], r8w
pextrw r8d, xmm0, 1
mov word [rax - 0x1c], r8w
pextrw r8d, xmm0, 2
mov word [rax - 0x18], r8w
pextrw r8d, xmm0, 3
mov word [rax - 0x14], r8w
pextrw r8d, xmm0, 4
mov word [rax - 0x10], r8w
pextrw r8d, xmm0, 5
mov word [rax - 0xc], r8w
pextrw r8d, xmm0, 6
mov word [rax - 8], r8w
pextrw r8d, xmm0, 7
mov word [rax - 4], r8w
cmp rax, r9
jne 0x22dafef61
mov eax, ecx
and eax, 0xfffffff8
mov ecx, eax
lea rbx, [rbx + rcx*4]
xor ecx, ecx
cmp word [rbx], dx
setne cl
neg ecx
mov word [rbx + 2], cx
lea ecx, [rax + 1]
cmp esi, ecx
jbe 0x22dafec93
xor ecx, ecx
cmp word [rbx + 4], dx
setne cl
neg ecx
mov word [rbx + 6], cx
lea ecx, [rax + 2]
cmp esi, ecx
jbe 0x22dafec93
xor ecx, ecx
cmp word [rbx + 8], dx
setne cl
neg ecx
mov word [rbx + 0xa], cx
lea ecx, [rax + 3]
cmp esi, ecx
jbe 0x22dafec93
xor ecx, ecx
cmp word [rbx + 0xc], dx
setne cl
neg ecx
mov word [rbx + 0xe], cx
lea ecx, [rax + 4]
cmp esi, ecx
jbe 0x22dafec93
xor ecx, ecx
cmp word [rbx + 0x10], dx
setne cl
neg ecx
mov word [rbx + 0x12], cx
lea ecx, [rax + 5]
cmp esi, ecx
jbe 0x22dafec93
xor ecx, ecx
cmp word [rbx + 0x14], dx
setne cl
neg ecx
mov word [rbx + 0x16], cx
lea ecx, [rax + 6]
cmp esi, ecx
jbe 0x22dafec93
xor ecx, ecx
cmp word [rbx + 0x18], dx
setne cl
add eax, 7
neg ecx
mov word [rbx + 0x1a], cx
cmp esi, eax
jbe 0x22dafec93
xor eax, eax
cmp word [rbx + 0x1c], dx
setne al
neg eax
mov word [rbx + 0x1e], ax
jmp 0x22dafec93
lea rcx, [0x22dd0c480]
xor r14d, r14d
call fcn.22dcfcd40
lea rdx, str.bad_IHDR_len
mov qword [rax], rdx
jmp 0x22dafd8d9
test esi, esi
je 0x22dafed6d
mov eax, esi
mov r9, r12
mov rdx, rbx
lea r8, [rax + rax*2]
add r8, rbx
nop dword [rax]
movzx eax, byte [r9]
add rdx, 3
add r9, 1
shl eax, 2
cdqe
movzx ecx, byte [rsp + rax + 0x3f0]
mov byte [rdx - 3], cl
movzx ecx, byte [rsp + rax + 0x3f1]
movzx eax, byte [rsp + rax + 0x3f2]
mov byte [rdx - 2], cl
mov byte [rdx - 1], al
cmp rdx, r8
jne 0x22daff100
jmp 0x22dafed6d
lea rcx, [0x22dd0c480]
lea rdi, str.invalid_PLTE
call fcn.22dcfcd40
mov qword [rax], rdi
jmp 0x22dafd8d9
lea rcx, [0x22dd0c480]
call fcn.22dcfcd40
lea rdx, str.tRNS_after_IDAT
mov qword [rax], rdx
jmp 0x22dafd8d9
lea rcx, [0x22dd0c480]
call fcn.22dcfcd40
lea rdx, str.no_PLTE
mov qword [rax], rdx
jmp 0x22dafd8d9
lea rcx, [0x22dd0c480]
lea rdi, str.multiple_IHDR
call fcn.22dcfcd40
mov qword [rax], rdi
jmp 0x22dafd8d9
lea rcx, [0x22dd0c480]
bswap eax
lea rdi, str.XXXX_PNG_chunk_not_known
mov dword [str.XXXX_PNG_chunk_not_known], eax
call fcn.22dcfcd40
mov qword [rax], rdi
jmp 0x22dafd8d9
movzx eax, byte [rsp + 0x40]
mov r14d, 1
mov dword [r15 + 8], eax
jmp 0x22dafd8d9
lea rcx, [0x22dd0c480]
call fcn.22dcfcd40
lea rdx, str.bad_tRNS_len
mov qword [rax], rdx
jmp 0x22dafd8d9
lea rcx, [0x22dd0c480]
call fcn.22dcfcd40
lea rdx, str.invalid_PLTE
mov qword [rax], rdx
jmp 0x22dafd8d9
lea rcx, [0x22dd0c480]
lea rdi, str.bad_comp_method
xor r14d, r14d
call fcn.22dcfcd40
mov qword [rax], rdi
jmp 0x22dafd8d9
lea rcx, [0x22dd0c480]
xor r14d, r14d
call fcn.22dcfcd40
lea rdx, str.bad_filter_method
mov qword [rax], rdx
jmp 0x22dafd8d9
lea rcx, [0x22dd0c480]
lea rdi, str.bad_interlace_method
xor r14d, r14d
call fcn.22dcfcd40
mov qword [rax], rdi
jmp 0x22dafd8d9
mov r8d, 0x1314
lea rdx, [0x22dd76a38]
lea rcx, str.out_n__2__out_n__4
call qword [sym.imp.msvcrt.dll__assert]
test esi, esi
je 0x22dafec93
movzx edx, word [rsp + 0x38a]
movzx ecx, word [rsp + 0x38c]
lea rax, [rbx + rsi*8]
movzx r8d, word [rsp + 0x38e]
jmp 0x22daff2bd
add rbx, 8
cmp rbx, rax
je 0x22dafec93
cmp word [rbx], dx
jne 0x22daff2b0
cmp word [rbx + 2], cx
jne 0x22daff2b0
cmp word [rbx + 4], r8w
jne 0x22daff2b0
xor r11d, r11d
mov word [rbx + 6], r11w
jmp 0x22daff2b0
lea rcx, [0x22dd0c480]
lea rdi, str.tRNS_with_alpha
call fcn.22dcfcd40
mov qword [rax], rdi
jmp 0x22dafd8d9
mov rax, qword [r13]
mov rbx, qword [r13 + 0x18]
mov esi, dword [rax]
imul esi, dword [rax + 4]
mov eax, dword [rax + 0xc]
cmp eax, 3
je 0x22daff899
cmp eax, 4
je 0x22daff32d
mov r8d, 0x1380
lea rdx, [0x22dd76a38]
lea rcx, str.s__img_out_n__4
call qword [sym.imp.msvcrt.dll__assert]
lea rcx, [0x22dd0c3e0]
call fcn.22dcfcd40
mov ecx, dword [rax]
test ecx, ecx
je 0x22daff806
lea rcx, [0x22dd0c400]
call fcn.22dcfcd40
mov edx, dword [rax]
test edx, edx
jne 0x22daff814
test esi, esi
je 0x22dafecd2
lea edx, [rsi - 1]
cmp edx, 0xf
jbe 0x22daff8de
mov ecx, edx
mov rax, rbx
shr ecx, 4
sub ecx, 1
shl rcx, 6
lea rcx, [rbx + rcx + 0x40]
movdqu xmm3, xmmword [rax]
movdqu xmm2, xmmword [rax + 0x10]
add rax, 0x40
movdqu xmm0, xmmword [rax - 0x10]
movdqu xmm1, xmmword [rax - 0x20]
movaps xmmword [rsp + 0x280], xmm3
movzx r8d, byte [rsp + 0x282]
mov byte [rax - 0x40], r8b
movaps xmmword [rsp + 0x270], xmm3
movzx r8d, byte [rsp + 0x276]
mov byte [rax - 0x3c], r8b
movaps xmmword [rsp + 0x260], xmm3
movzx r8d, byte [rsp + 0x26a]
mov byte [rax - 0x38], r8b
movaps xmmword [rsp + 0x250], xmm3
movzx r8d, byte [rsp + 0x25e]
mov byte [rax - 0x34], r8b
movaps xmmword [rsp + 0x240], xmm2
movzx r8d, byte [rsp + 0x242]
mov byte [rax - 0x30], r8b
movaps xmmword [rsp + 0x230], xmm2
movzx r8d, byte [rsp + 0x236]
mov byte [rax - 0x2c], r8b
movaps xmmword [rsp + 0x220], xmm2
movzx r8d, byte [rsp + 0x22a]
mov byte [rax - 0x28], r8b
movaps xmmword [rsp + 0x210], xmm2
movzx r8d, byte [rsp + 0x21e]
mov byte [rax - 0x24], r8b
movaps xmmword [rsp + 0x200], xmm1
movzx r8d, byte [rsp + 0x202]
mov byte [rax - 0x20], r8b
movaps xmmword [rsp + 0x1f0], xmm1
movzx r8d, byte [rsp + 0x1f6]
mov byte [rax - 0x1c], r8b
movaps xmmword [rsp + 0x1e0], xmm1
movzx r8d, byte [rsp + 0x1ea]
mov byte [rax - 0x18], r8b
movaps xmmword [rsp + 0x1d0], xmm1
movzx r8d, byte [rsp + 0x1de]
mov byte [rax - 0x14], r8b
movaps xmmword [rsp + 0x1c0], xmm0
movzx r8d, byte [rsp + 0x1c2]
mov byte [rax - 0x10], r8b
movaps xmmword [rsp + 0x1b0], xmm0
movzx r8d, byte [rsp + 0x1b6]
mov byte [rax - 0xc], r8b
movaps xmmword [rsp + 0x1a0], xmm0
movzx r8d, byte [rsp + 0x1aa]
mov byte [rax - 8], r8b
movaps xmmword [rsp + 0x190], xmm0
movzx r8d, byte [rsp + 0x19e]
mov byte [rax - 4], r8b
movd r8d, xmm3
mov byte [rax - 0x3e], r8b
movaps xmmword [rsp + 0x180], xmm3
movzx r8d, byte [rsp + 0x184]
mov byte [rax - 0x3a], r8b
movaps xmmword [rsp + 0x170], xmm3
movzx r8d, byte [rsp + 0x178]
mov byte [rax - 0x36], r8b
movaps xmmword [rsp + 0x160], xmm3
movzx r8d, byte [rsp + 0x16c]
mov byte [rax - 0x32], r8b
movd r8d, xmm2
mov byte [rax - 0x2e], r8b
movaps xmmword [rsp + 0x150], xmm2
movzx r8d, byte [rsp + 0x154]
mov byte [rax - 0x2a], r8b
movaps xmmword [rsp + 0x140], xmm2
movzx r8d, byte [rsp + 0x148]
mov byte [rax - 0x26], r8b
movaps xmmword [rsp + 0x130], xmm2
movzx r8d, byte [rsp + 0x13c]
mov byte [rax - 0x22], r8b
movd r8d, xmm1
mov byte [rax - 0x1e], r8b
movaps xmmword [rsp + 0x120], xmm1
movzx r8d, byte [rsp + 0x124]
mov byte [rax - 0x1a], r8b
movaps xmmword [rsp + 0x110], xmm1
movzx r8d, byte [rsp + 0x118]
mov byte [rax - 0x16], r8b
movaps xmmword [rsp + 0x100], xmm1
movzx r8d, byte [rsp + 0x10c]
mov byte [rax - 0x12], r8b
movd r8d, xmm0
mov byte [rax - 0xe], r8b
movaps xmmword [rsp + 0xf0], xmm0
movzx r8d, byte [rsp + 0xf4]
mov byte [rax - 0xa], r8b
movaps xmmword [rsp + 0xe0], xmm0
movzx r8d, byte [rsp + 0xe8]
mov byte [rax - 6], r8b
movaps xmmword [rsp + 0xd0], xmm0
movzx r8d, byte [rsp + 0xdc]
mov byte [rax - 2], r8b
cmp rcx, rax
jne 0x22daff381
mov eax, edx
and eax, 0xfffffff0
mov edx, eax
lea rbx, [rbx + rdx*4]
movzx edx, byte [rbx]
movzx ecx, byte [rbx + 2]
mov byte [rbx + 2], dl
lea edx, [rax + 1]
mov byte [rbx], cl
cmp edx, esi
jae 0x22dafecd2
movzx edx, byte [rbx + 4]
movzx ecx, byte [rbx + 6]
mov byte [rbx + 6], dl
lea edx, [rax + 2]
mov byte [rbx + 4], cl
cmp edx, esi
jae 0x22dafecd2
movzx edx, byte [rbx + 8]
movzx ecx, byte [rbx + 0xa]
mov byte [rbx + 0xa], dl
lea edx, [rax + 3]
mov byte [rbx + 8], cl
cmp esi, edx
jbe 0x22dafecd2
movzx edx, byte [rbx + 0xc]
movzx ecx, byte [rbx + 0xe]
mov byte [rbx + 0xe], dl
lea edx, [rax + 4]
mov byte [rbx + 0xc], cl
cmp esi, edx
jbe 0x22dafecd2
movzx edx, byte [rbx + 0x10]
movzx ecx, byte [rbx + 0x12]
mov byte [rbx + 0x12], dl
lea edx, [rax + 5]
mov byte [rbx + 0x10], cl
cmp esi, edx
jbe 0x22dafecd2
movzx edx, byte [rbx + 0x14]
movzx ecx, byte [rbx + 0x16]
mov byte [rbx + 0x16], dl
lea edx, [rax + 6]
mov byte [rbx + 0x14], cl
cmp esi, edx
jbe 0x22dafecd2
movzx edx, byte [rbx + 0x18]
movzx ecx, byte [rbx + 0x1a]
mov byte [rbx + 0x1a], dl
lea edx, [rax + 7]
mov byte [rbx + 0x18], cl
cmp esi, edx
jbe 0x22dafecd2
movzx edx, byte [rbx + 0x1c]
movzx ecx, byte [rbx + 0x1e]
mov byte [rbx + 0x1e], dl
lea edx, [rax + 8]
mov byte [rbx + 0x1c], cl
cmp esi, edx
jbe 0x22dafecd2
movzx edx, byte [rbx + 0x20]
movzx ecx, byte [rbx + 0x22]
mov byte [rbx + 0x22], dl
lea edx, [rax + 9]
mov byte [rbx + 0x20], cl
cmp esi, edx
jbe 0x22dafecd2
movzx edx, byte [rbx + 0x24]
movzx ecx, byte [rbx + 0x26]
mov byte [rbx + 0x26], dl
lea edx, [rax + 0xa]
mov byte [rbx + 0x24], cl
cmp esi, edx
jbe 0x22dafecd2
movzx edx, byte [rbx + 0x28]
movzx ecx, byte [rbx + 0x2a]
mov byte [rbx + 0x2a], dl
lea edx, [rax + 0xb]
mov byte [rbx + 0x28], cl
cmp esi, edx
jbe 0x22dafecd2
movzx edx, byte [rbx + 0x2c]
movzx ecx, byte [rbx + 0x2e]
mov byte [rbx + 0x2e], dl
lea edx, [rax + 0xc]
mov byte [rbx + 0x2c], cl
cmp esi, edx
jbe 0x22dafecd2
movzx edx, byte [rbx + 0x30]
movzx ecx, byte [rbx + 0x32]
mov byte [rbx + 0x32], dl
lea edx, [rax + 0xd]
mov byte [rbx + 0x30], cl
cmp esi, edx
jbe 0x22dafecd2
movzx edx, byte [rbx + 0x34]
movzx ecx, byte [rbx + 0x36]
mov byte [rbx + 0x36], dl
lea edx, [rax + 0xe]
mov byte [rbx + 0x34], cl
cmp esi, edx
jbe 0x22dafecd2
movzx edx, byte [rbx + 0x38]
movzx ecx, byte [rbx + 0x3a]
add eax, 0xf
mov byte [rbx + 0x38], cl
mov byte [rbx + 0x3a], dl
cmp esi, eax
jbe 0x22dafecd2
movzx eax, byte [rbx + 0x3c]
movzx edx, byte [rbx + 0x3e]
mov byte [rbx + 0x3e], al
mov byte [rbx + 0x3c], dl
jmp 0x22dafecd2
mov rcx, qword [rsp + 0x40]
mov r14d, eax
call sub.msvcrt.dll_free
jmp 0x22dafd8d9
mov dword [r15 + 8], 4
mov r14d, 1
jmp 0x22dafd8d9
lea rcx, [0x22dd0c480]
lea rdi, str.bad_ctype
xor r14d, r14d
call fcn.22dcfcd40
mov qword [rax], rdi
jmp 0x22dafd8d9
lea rcx, [0x22dd0c480]
lea rdi, str.tRNS_before_PLTE
call fcn.22dcfcd40
mov qword [rax], rdi
jmp 0x22dafd8d9
mov eax, dword [0x22dddb6c8]
test eax, eax
je 0x22daff359
mov eax, esi
lea r8, [rbx + rax*4]
test esi, esi
je 0x22dafecd2
movzx ecx, byte [rbx + 3]
movzx r11d, byte [rbx]
movzx r10d, byte [rbx + 2]
test cl, cl
je 0x22daff883
movzx edx, byte [rbx + 1]
mov r9d, ecx
add rbx, 4
shr r9b, 1
mov eax, edx
movzx r9d, r9b
shl eax, 8
sub eax, edx
add eax, r9d
cdq
idiv ecx
mov byte [rbx - 3], al
mov eax, r11d
shl eax, 8
sub eax, r11d
add eax, r9d
cdq
idiv ecx
mov byte [rbx - 2], al
mov eax, r10d
shl eax, 8
sub eax, r10d
add eax, r9d
cdq
idiv ecx
mov byte [rbx - 4], al
cmp rbx, r8
jne 0x22daff822
jmp 0x22dafecd2
mov byte [rbx + 2], r11b
add rbx, 4
mov byte [rbx - 4], r10b
cmp rbx, r8
jne 0x22daff822
jmp 0x22dafecd2
test esi, esi
je 0x22dafecd2
lea rax, [rsi + rsi*2]
add rax, rbx
movzx edx, byte [rbx]
movzx ecx, byte [rbx + 2]
add rbx, 3
mov byte [rbx - 3], cl
mov byte [rbx - 1], dl
cmp rbx, rax
jne 0x22daff8a8
jmp 0x22dafecd2
lea rcx, [0x22dd0c480]
lea rdi, [0x22dd76af6]
call fcn.22dcfcd40
mov qword [rax], rdi
jmp 0x22dafd8d9
xor eax, eax
jmp 0x22daff61c
mov qword [r13 + 0x10], 0
jmp 0x22dafd8d9