Function at 0x22dc02280
Capabilities:
Resolve function by parsing pe exports

Disassembly:
push r15
mov eax, 0x204d8
push r14
push r13
push r12
push rbp
push rdi
push rsi
push rbx
call fcn.22dcea7d0
sub rsp, rax
movaps xmmword [rsp + 0x20430], xmm6
movaps xmmword [rsp + 0x20440], xmm7
movaps xmmword [rsp + 0x20450], xmm8
movaps xmmword [rsp + 0x20460], xmm9
movaps xmmword [rsp + 0x20470], xmm10
movaps xmmword [rsp + 0x20480], xmm11
movaps xmmword [rsp + 0x20490], xmm12
movaps xmmword [rsp + 0x204a0], xmm13
movaps xmmword [rsp + 0x204b0], xmm14
movaps xmmword [rsp + 0x204c0], xmm15
mov qword [rsp + 0x20520], rcx
mov rax, qword [rsp + 0x20520]
mov ecx, r9d
mov qword [rsp + 0x20528], rdx
cmp qword [rax + 0x58], 0
mov dword [rsp + 0x20530], r8d
je 0x22dc0399c
mov eax, 0x10
mov esi, dword [rsp + 0x20540]
cmp r9d, eax
cmovg ecx, eax
mov eax, 1
test ecx, ecx
cmovle ecx, eax
mov rax, qword [rsp + 0x20520]
test esi, esi
mov r12d, dword [rax + 0x68]
lea eax, [r12*4]
cmovne eax, dword [rsp + 0x20540]
mov dword [rsp + 0x20540], eax
mov rax, qword [rsp + 0x20520]
mov edi, dword [rsp + 0x20540]
mov eax, dword [rax + 0x6c]
mov dword [rsp + 0x60], eax
test edi, edi
js 0x22dc036b6
mov rax, qword [rsp + 0x20520]
lea r14d, [r12 - 3]
mov rbx, qword [rsp + 0x20520]
movdqa xmm15, xmmword [0x22dd93f50]
mov r8d, dword [rax + 0x1c]
mov eax, 1
test r8d, r8d
cmovle r8d, eax
mov eax, 0xa0
cdq
idiv r8d
lea rdx, [0x22dd93ec0]
add eax, dword [rbx + 0x18]
mov ebx, dword [0x22dde33a8]
cmp eax, ecx
cmovg eax, ecx
lea rcx, [0x22dd93e60]
test ebx, ebx
mov rbx, rcx
cmovne rbx, rdx
cdqe
cmovne rdx, rcx
mov rsi, rax
mov qword [rsp + 0x98], rax
mov qword [rsp + 0xc8], rbx
mov rbx, qword [rsp + 0x20520]
lea rax, [0x22dd93e00]
lea rax, [rax + rsi*4]
mov qword [rsp + 0xc0], rdx
mov r15, qword [rbx + 0x30]
mov ebx, dword [rsp + 0x60]
mov qword [rsp + 0xa0], rax
lea eax, [r12 - 4]
shr eax, 2
imul ebx, r12d
lea eax, [rax*4 + 4]
mov qword [rsp + 0x30], r15
mov dword [rsp + 0x90], eax
mov dword [rsp + 0xdc], ebx
lea eax, [rbx - 1]
lea rbx, [r15 + 4]
mov r15d, r14d
lea rax, [rbx + rax*4]
mov qword [rsp + 0xe8], rbx
mov qword [rsp + 0xe0], rax
lea rax, [rsp + 0x410]
mov qword [rsp + 0xb0], rax
nop word [rax + rax]
mov rbx, qword [rsp + 0x98]
mov rsi, qword [rsp + 0xc8]
xor edx, edx
lea rax, [rbx*4]
mov r14d, dword [rsi + rbx*4]
mov dword [rsp + 0xa8], ebx
lea rdi, [rsi + rax]
mov rsi, qword [rsp + 0xa0]
mov qword [rsp + 0xd0], rdi
mov rdi, qword [rsp + 0xc0]
mov esi, dword [rsi]
add rax, rdi
mov edi, dword [rdi + rbx*4]
mov ebx, 1
lea ecx, [r14 + rsi]
mov qword [rsp + 0xb8], rax
mov eax, ebx
add ecx, edi
mov dword [rsp + 0xd8], edi
shl eax, cl
mov rcx, qword [rsp + 0xb0]
lea r8d, [rax + 1]
mov dword [rsp + 0x20], eax
movsxd r8, r8d
call sub.msvcrt.dll_memset
mov eax, 8
mov edx, ebx
pxor xmm1, xmm1
mov ecx, eax
movss xmm0, dword [0x22dd93f20]
mov r11d, dword [rsp + 0x60]
sub ecx, r14d
shl edx, cl
mov ecx, eax
sub eax, edi
sub edx, 1
sub ecx, esi
cvtsi2ss xmm1, edx
subss xmm0, xmm1
mulss xmm0, dword [0x22dd93f24]
pxor xmm1, xmm1
cvttss2si edx, xmm0
movss xmm0, dword [0x22dd93f20]
mov dword [rsp + 0x88], edx
mov edx, ebx
shl edx, cl
sub edx, 1
cvtsi2ss xmm1, edx
subss xmm0, xmm1
mulss xmm0, dword [0x22dd93f24]
pxor xmm1, xmm1
cvttss2si ecx, xmm0
movss xmm0, dword [0x22dd93f20]
mov dword [rsp + 0x3c], ecx
mov ecx, eax
mov eax, ebx
shl eax, cl
mov ecx, esi
sub eax, 1
cvtsi2ss xmm1, eax
subss xmm0, xmm1
mulss xmm0, dword [0x22dd93f24]
cvttss2si eax, xmm0
mov dword [rsp + 0x94], eax
mov eax, ebx
shl eax, cl
mov ecx, r14d
sub eax, 1
shl eax, cl
mov ecx, edi
shl ebx, cl
mov dword [rsp + 0x40], eax
mov ecx, r14d
lea eax, [rbx - 1]
shl eax, cl
mov ecx, esi
shl eax, cl
mov dword [rsp + 0x48], eax
test r11d, r11d
jle 0x22dc02c08
mov eax, r14d
xor r13d, r13d
xor edx, edx
movdqa xmm6, xmmword [0x22dd93f10]
mov qword [rsp + 0x68], rax
mov eax, 0x20
mov ebp, r13d
xor ebx, ebx
sub eax, r14d
movd xmm14, edi
mov r13d, r14d
xor r10d, r10d
sub eax, esi
mov r14d, edx
movd xmm8, dword [rsp + 0x88]
movq qword [rsp + 0x70], xmm14
pinsrw xmm8, word [rsp + 0x94], 1
sub eax, edi
mov dword [rsp + 0x7c], eax
punpckldq xmm8, xmm8
punpcklqdq xmm8, xmm8
nop word [rax + rax]
movq xmm7, qword [rsp + 0x70]
movdqa xmm0, xmm6
mov eax, r10d
movdqa xmm5, xmm6
and eax, 3
psrld xmm0, xmm7
movq xmm7, qword [rsp + 0x68]
shl eax, 2
mov dword [rsp + 0x4c], eax
psrld xmm5, xmm7
pslld xmm0, 0x10
por xmm5, xmm0
test r15d, r15d
jle 0x22dc02ea8
movd xmm7, dword [rsp + 0x48]
movsx eax, word [rsp + 0x3c]
movd xmm0, esi
mov r8d, 0x10
mov rdi, qword [rsp + 0x30]
sub r8d, r13d
psrld xmm6, xmm0
movsxd rdx, ebx
pshufd xmm14, xmm7, 0
movd xmm7, eax
movsxd rax, r14d
movd xmm3, dword [rsp + 0x40]
lea rcx, [rdi + rax*4]
movd xmm4, dword [rsp + 0x20]
mov edi, r8d
xor eax, eax
sub edi, esi
pshufd xmm7, xmm7, 0
movd xmm11, r8d
movd xmm10, dword [rsp + 0x7c]
pshufd xmm13, xmm3, 0
pshufd xmm12, xmm4, 0
movq xmm9, rdi
add rdx, qword [rsp + 0x20528]
nop dword [rax]
movdqu xmm3, xmmword [rdx + rax*4]
movdqa xmm0, xmmword [0x22dd93f30]
movd xmm4, dword [0x22dde33a4]
movdqa xmm2, xmmword [0x22dd93f40]
movdqa xmm1, xmm3
pand xmm0, xmm3
psrld xmm1, 8
pmullw xmm0, xmm8
pshufd xmm4, xmm4, 0
pand xmm1, xmm15
psrld xmm3, 0x18
pmullw xmm1, xmm7
pcmpgtd xmm4, xmm3
paddusw xmm0, xmm5
pand xmm2, xmm0
psrld xmm0, xmm10
paddusw xmm1, xmm6
psrld xmm2, xmm11
psrld xmm1, xmm9
pand xmm0, xmm14
pand xmm1, xmm13
por xmm0, xmm1
movdqa xmm1, xmm4
por xmm0, xmm2
pandn xmm1, xmm0
movdqa xmm0, xmm4
pand xmm0, xmm12
por xmm0, xmm1
movups xmmword [rcx + rax*4], xmm0
add rax, 4
cmp r15d, eax
jg 0x22dc026d8
mov r11d, dword [rsp + 0x90]
cmp r11d, r12d
jge 0x22dc02bd0
lea eax, [r11*4]
mov rdi, qword [rsp + 0x30]
lea r8d, [rbx + rax]
mov dword [rsp + 0x80], eax
lea eax, [rbp + r11]
movsxd r8, r8d
cdqe
add r8, qword [rsp + 0x20528]
lea rax, [rdi + rax*4]
movzx edx, byte [r8 + 3]
cmp dword [0x22dde33a4], edx
mov qword [rsp + 0x58], rax
mov eax, dword [rsp + 0x20]
jg 0x22dc02881
mov edi, 0x10
mov eax, dword [rsp + 0x4c]
lea rdx, [0x22dd93dc0]
sub edi, r13d
mov ecx, edi
mov eax, dword [rdx + rax*4]
movsx edx, word [rsp + 0x94]
mov dword [rsp + 0x78], edi
sub ecx, esi
mov edi, dword [rsp + 0xd8]
mov dword [rsp + 0x50], ecx
movzx ecx, byte [r8 + 2]
mov r9d, eax
imul edx, ecx
mov ecx, edi
sar r9d, cl
mov ecx, dword [rsp + 0x50]
add r9d, edx
mov edx, 0xffff
cmp r9d, edx
cmovg r9d, edx
sub ecx, edi
movsx edx, word [rsp + 0x3c]
mov edi, eax
sar r9d, cl
movzx ecx, byte [r8 + 1]
and r9d, dword [rsp + 0x48]
imul edx, ecx
mov ecx, esi
sar edi, cl
mov ecx, 0xffff
add edx, edi
cmp edx, ecx
cmovg edx, ecx
movzx ecx, byte [rsp + 0x50]
sar edx, cl
movzx ecx, byte [r8]
and edx, dword [rsp + 0x40]
movsx r8d, word [rsp + 0x88]
or edx, r9d
imul r8d, ecx
mov ecx, r13d
sar eax, cl
mov ecx, 0xffff
add eax, r8d
cmp eax, ecx
cmovg eax, ecx
movzx ecx, byte [rsp + 0x78]
sar eax, cl
or eax, edx
mov rdi, qword [rsp + 0x58]
mov dword [rdi], eax
lea eax, [r11 + 1]
cmp eax, r12d
jge 0x22dc02bd0
mov edi, dword [rsp + 0x80]
lea edx, [rbp + rax]
movsxd rdx, edx
lea r8d, [rdi + rbx + 4]
mov rdi, qword [rsp + 0x30]
movsxd r8, r8d
add r8, qword [rsp + 0x20528]
movzx ecx, byte [r8 + 3]
cmp dword [0x22dde33a4], ecx
lea rdi, [rdi + rdx*4]
mov edx, dword [rsp + 0x20]
jg 0x22dc0299e
and eax, 3
add eax, dword [rsp + 0x4c]
lea rdx, [0x22dd93dc0]
movsx r9d, word [rsp + 0x94]
cdqe
mov eax, dword [rdx + rax*4]
mov edx, 0x10
sub edx, r13d
mov dword [rsp + 0x58], edx
mov ecx, edx
movzx edx, byte [r8 + 2]
sub ecx, esi
imul r9d, edx
mov dword [rsp + 0x50], ecx
movzx ecx, byte [rsp + 0xd8]
mov edx, eax
sar edx, cl
mov ecx, 0xffff
add edx, r9d
mov r9d, dword [rsp + 0x48]
cmp edx, ecx
cmovg edx, ecx
mov ecx, dword [rsp + 0x50]
sub ecx, dword [rsp + 0xd8]
sar edx, cl
mov ecx, esi
and r9d, edx
movzx edx, byte [r8 + 1]
mov dword [rsp + 0x78], r9d
movsx r9d, word [rsp + 0x3c]
imul r9d, edx
mov edx, eax
sar edx, cl
mov ecx, 0xffff
add edx, r9d
cmp edx, ecx
cmovg edx, ecx
movzx ecx, byte [rsp + 0x50]
mov r9d, edx
movsx edx, word [rsp + 0x88]
sar r9d, cl
movzx ecx, byte [r8]
and r9d, dword [rsp + 0x40]
or r9d, dword [rsp + 0x78]
imul edx, ecx
mov ecx, r13d
sar eax, cl
movzx ecx, byte [rsp + 0x58]
add edx, eax
mov eax, 0xffff
cmp edx, eax
cmovg edx, eax
sar edx, cl
or edx, r9d
lea eax, [r11 + 2]
mov dword [rdi], edx
cmp eax, r12d
jge 0x22dc02bd0
mov edi, dword [rsp + 0x80]
lea edx, [rdi + rbx + 8]
mov rdi, qword [rsp + 0x30]
movsxd rdx, edx
add rdx, qword [rsp + 0x20528]
mov r8, rdx
lea edx, [rbp + rax]
movsxd rdx, edx
movzx ecx, byte [r8 + 3]
cmp dword [0x22dde33a4], ecx
lea rdi, [rdi + rdx*4]
mov edx, dword [rsp + 0x20]
mov qword [rsp + 0x58], rdi
jg 0x22dc02ab1
and eax, 3
add eax, dword [rsp + 0x4c]
lea rdx, [0x22dd93dc0]
movzx ecx, byte [rsp + 0xd8]
cdqe
mov r9d, dword [rdx + rax*4]
mov eax, 0x10
movsx edx, word [rsp + 0x94]
sub eax, r13d
mov dword [rsp + 0x50], eax
mov edi, eax
movzx eax, byte [r8 + 2]
sub edi, esi
imul eax, edx
mov edx, r9d
sar edx, cl
mov ecx, edi
add eax, edx
mov edx, 0xffff
cmp eax, edx
cmovg eax, edx
sub ecx, dword [rsp + 0xd8]
movsx edx, word [rsp + 0x3c]
sar eax, cl
mov ecx, dword [rsp + 0x48]
and ecx, eax
movzx eax, byte [r8 + 1]
mov dword [rsp + 0x78], ecx
mov ecx, esi
imul eax, edx
mov edx, r9d
sar edx, cl
mov ecx, edi
add eax, edx
mov edx, 0xffff
cmp eax, edx
cmovg eax, edx
movzx edx, byte [r8]
sar eax, cl
mov ecx, dword [rsp + 0x78]
and eax, dword [rsp + 0x40]
or ecx, eax
movsx eax, word [rsp + 0x88]
mov edi, ecx
mov ecx, r13d
imul edx, eax
sar r9d, cl
movzx ecx, byte [rsp + 0x50]
mov eax, r9d
add eax, edx
mov edx, 0xffff
cmp eax, edx
cmovg eax, edx
sar eax, cl
or edi, eax
mov edx, edi
mov rax, qword [rsp + 0x58]
mov dword [rax], edx
lea edx, [r11 + 3]
cmp edx, r12d
jge 0x22dc02bd0
mov eax, dword [rsp + 0x80]
mov rdi, qword [rsp + 0x30]
lea eax, [rax + rbx + 0xc]
cdqe
add rax, qword [rsp + 0x20528]
mov r8, rax
lea eax, [rbp + rdx]
cdqe
lea rax, [rdi + rax*4]
mov qword [rsp + 0x50], rax
movzx eax, byte [r8 + 3]
cmp eax, dword [0x22dde33a4]
jl 0x22dc03b49
mov eax, edx
lea rdx, [0x22dd93dc0]
movzx ecx, byte [rsp + 0xd8]
and eax, 3
add eax, dword [rsp + 0x4c]
cdqe
mov r9d, dword [rdx + rax*4]
mov eax, 0x10
movsx edx, word [rsp + 0x94]
sub eax, r13d
mov edi, eax
mov r11d, eax
movzx eax, byte [r8 + 2]
sub r11d, esi
imul eax, edx
mov edx, r9d
sar edx, cl
mov ecx, r11d
add eax, edx
mov edx, 0xffff
cmp eax, edx
cmovg eax, edx
sub ecx, dword [rsp + 0xd8]
movsx edx, word [rsp + 0x3c]
sar eax, cl
and eax, dword [rsp + 0x48]
mov ecx, esi
mov dword [rsp + 0x4c], eax
movzx eax, byte [r8 + 1]
imul eax, edx
mov edx, r9d
sar edx, cl
mov ecx, r11d
mov r11d, dword [rsp + 0x4c]
add eax, edx
mov edx, 0xffff
cmp eax, edx
cmovg eax, edx
movzx edx, byte [r8]
sar eax, cl
and eax, dword [rsp + 0x40]
mov ecx, r13d
or r11d, eax
movsx eax, word [rsp + 0x88]
imul edx, eax
mov eax, r9d
sar eax, cl
mov ecx, edi
add eax, edx
mov edx, 0xffff
cmp eax, edx
cmovg eax, edx
sar eax, cl
or eax, r11d
mov rdi, qword [rsp + 0x50]
mov dword [rdi], eax
nop word [rax + rax]
add r10d, 1
add ebx, dword [rsp + 0x20540]
add ebp, r12d
add r14d, r12d
cmp r10d, dword [rsp + 0x60]
je 0x22dc02c08
lea rax, [r10*4]
lea rdx, [0x22dd93dc0]
and eax, 0xc
movdqu xmm6, xmmword [rdx + rax*4]
jmp 0x22dc02628
mov r10d, dword [rsp + 0xdc]
mov rax, qword [rsp + 0x30]
mov rcx, qword [rsp + 0xe0]
test r10d, r10d
jle 0x22dc02c3b
nop word [rax + rax]
mov edx, dword [rax]
add rax, 4
mov byte [rsp + rdx + 0x410], 1
cmp rax, rcx
jne 0x22dc02c28
mov r9d, dword [rsp + 0x20]
test r9d, r9d
jle 0x22dc02eb0
mov ebx, dword [rsp + 0x20]
lea eax, [rbx - 1]
cmp eax, 0xe
jbe 0x22dc036ad
pxor xmm0, xmm0
shr ebx, 4
pxor xmm5, xmm5
pxor xmm4, xmm4
mov edx, ebx
mov rax, qword [rsp + 0xb0]
sub edx, 1
shl rdx, 4
lea rdx, [rsp + rdx + 0x420]
nop dword [rax]
movdqa xmm1, xmmword [rax]
add rax, 0x10
movdqa xmm2, xmm1
punpckhbw xmm1, xmm5
punpcklbw xmm2, xmm5
movdqa xmm3, xmm2
punpckhwd xmm2, xmm4
punpcklwd xmm3, xmm4
paddd xmm0, xmm3
paddd xmm0, xmm2
movdqa xmm2, xmm1
punpckhwd xmm1, xmm4
punpcklwd xmm2, xmm4
paddd xmm0, xmm2
paddd xmm0, xmm1
cmp rax, rdx
jne 0x22dc02c88
movdqa xmm1, xmm0
mov esi, dword [rsp + 0x20]
psrldq xmm1, 8
paddd xmm0, xmm1
mov edx, esi
movdqa xmm1, xmm0
and edx, 0xfffffff0
and esi, 0xf
psrldq xmm1, 4
paddd xmm0, xmm1
movd eax, xmm0
je 0x22dc02e48
movsxd rcx, edx
mov esi, dword [rsp + 0x20]
movzx ecx, byte [rsp + rcx + 0x410]
add eax, ecx
lea ecx, [rdx + 1]
cmp esi, ecx
jle 0x22dc02e48
movsxd rcx, ecx
movzx ecx, byte [rsp + rcx + 0x410]
add eax, ecx
lea ecx, [rdx + 2]
cmp esi, ecx
jle 0x22dc02e48
movsxd rcx, ecx
movzx ecx, byte [rsp + rcx + 0x410]
add eax, ecx
lea ecx, [rdx + 3]
cmp esi, ecx
jle 0x22dc02e48
movsxd rcx, ecx
movzx ecx, byte [rsp + rcx + 0x410]
add eax, ecx
lea ecx, [rdx + 4]
cmp esi, ecx
jle 0x22dc02e48
movsxd rcx, ecx
movzx ecx, byte [rsp + rcx + 0x410]
add eax, ecx
lea ecx, [rdx + 5]
cmp esi, ecx
jle 0x22dc02e48
movsxd rcx, ecx
movzx ecx, byte [rsp + rcx + 0x410]
add eax, ecx
lea ecx, [rdx + 6]
cmp esi, ecx
jle 0x22dc02e48
movsxd rcx, ecx
movzx ecx, byte [rsp + rcx + 0x410]
add eax, ecx
lea ecx, [rdx + 7]
cmp esi, ecx
jle 0x22dc02e48
movsxd rcx, ecx
movzx ecx, byte [rsp + rcx + 0x410]
add eax, ecx
lea ecx, [rdx + 8]
cmp esi, ecx
jle 0x22dc02e48
movsxd rcx, ecx
movzx ecx, byte [rsp + rcx + 0x410]
add eax, ecx
lea ecx, [rdx + 9]
cmp esi, ecx
jle 0x22dc02e48
movsxd rcx, ecx
movzx ecx, byte [rsp + rcx + 0x410]
add eax, ecx
lea ecx, [rdx + 0xa]
cmp esi, ecx
jle 0x22dc02e48
movsxd rcx, ecx
movzx ecx, byte [rsp + rcx + 0x410]
add eax, ecx
lea ecx, [rdx + 0xb]
cmp esi, ecx
jle 0x22dc02e48
movsxd rcx, ecx
movzx ecx, byte [rsp + rcx + 0x410]
add eax, ecx
lea ecx, [rdx + 0xc]
cmp esi, ecx
jle 0x22dc02e48
movsxd rcx, ecx
movzx ecx, byte [rsp + rcx + 0x410]
add eax, ecx
lea ecx, [rdx + 0xd]
cmp esi, ecx
jle 0x22dc02e48
movsxd rcx, ecx
add edx, 0xe
movzx ecx, byte [rsp + rcx + 0x410]
add eax, ecx
cmp esi, edx
jle 0x22dc02e48
movsxd rdx, edx
movzx edx, byte [rsp + rdx + 0x410]
add eax, edx
nop word [rax + rax]
cmp eax, 0xff
jle 0x22dc03ab1
sub qword [rsp + 0x98], 1
mov rbx, qword [rsp + 0x98]
sub qword [rsp + 0xa0], 4
mov dword [rsp + 0xa8], ebx
test ebx, ebx
jne 0x22dc02478
mov rbx, qword [rsp + 0xc0]
mov rsi, qword [rsp + 0xc8]
mov r15, qword [rsp + 0x30]
mov qword [rsp + 0xb8], rbx
xor ebx, ebx
mov qword [rsp + 0xd0], rsi
jmp 0x22dc02ec1
xor r11d, r11d
jmp 0x22dc02779
mov rax, qword [rsp + 0xa0]
mov r15, qword [rsp + 0x30]
mov ebx, dword [rax]
xor eax, eax
mov rsi, qword [rsp + 0xd0]
movd xmm6, ebx
movd xmm7, eax
mov rax, qword [rsp + 0xb8]
mov rdi, qword [rsp + 0x20520]
mov esi, dword [rsi]
mov r14d, dword [rax]
mov rax, qword [rsp + 0x20520]
movd xmm0, esi
punpckldq xmm0, xmm6
mov qword [rax + 0x30], r15
mov r13, qword [rax + 0x50]
movd xmm6, dword [rsp + 0xa8]
mov dword [rax + 0x48], r14d
punpckldq xmm6, xmm7
punpcklqdq xmm6, xmm0
movups xmmword [rax + 0x38], xmm6
mov eax, dword [rax + 0x6c]
mov edi, dword [rdi + 0x68]
mov dword [rsp + 0xd8], eax
imul eax, edi
mov dword [rsp + 0x98], edi
mov dword [rsp + 0x68], eax
lea eax, [rax + rax*2]
mov ecx, eax
shr ecx, 0x1f
add ecx, eax
sar ecx, 1
add ecx, 0x330
movsxd rcx, ecx
call sub.msvcrt.dll_malloc
mov qword [rsp + 0x60], rax
test rax, rax
je 0x22dc03acf
add rax, 0x10
mov r8d, 1
lea rdi, [rsp + 0x110]
mov qword [rsp + 0x70], rax
lea eax, [rsi + rbx]
mov edx, r8d
lea ecx, [rax + r14]
mov dword [rsp + 0x20], eax
xor eax, eax
shl edx, cl
mov ecx, 0x60
mov qword [rsp + 0xa0], rdi
rep stosq qword [rdi], rax
movsxd r9, edx
mov byte [rsp + r9 + 0x10420], 0
test edx, edx
jle 0x22dc03a17
mov eax, r8d
mov ecx, esi
mov edx, 8
mov r12d, 1
shl eax, cl
mov ecx, ebx
mov edi, edx
sub eax, 1
shl r8d, cl
sub edi, esi
mov dword [rsp + 0x30], eax
lea eax, [rsi + rsi]
lea ebp, [r8 - 1]
mov r8d, dword [0x22dde33a8]
mov dword [rsp + 0x3c], eax
add eax, esi
mov dword [rsp + 0x4c], eax
lea eax, [rbx + rbx]
mov dword [rsp + 0x40], eax
add eax, ebx
mov dword [rsp + 0x50], eax
lea eax, [r14 + r14]
mov dword [rsp + 0x48], eax
add eax, r14d
mov dword [rsp + 0x58], eax
xor eax, eax
test r8d, r8d
mov dword [rsp + 0x78], edi
mov edi, edx
jne 0x22dc036d0
sub edi, ebx
sub edx, r14d
mov qword [rsp + 0x88], r15
mov dword [rsp + 0x7c], edi
mov dword [rsp + 0x90], edx
mov qword [rsp + 0x80], r13
mov r13, qword [rsp + 0xb0]
cmp byte [r13 + rax], 0
je 0x22dc0310c
mov ecx, esi
mov edx, eax
mov r10d, dword [rsp + 0x30]
mov r8d, eax
sar edx, cl
movzx ecx, byte [rsp + 0x20]
mov byte [rsp + rax + 0x10420], r12b
and r10d, eax
and edx, ebp
sar r8d, cl
movzx ecx, byte [rsp + 0x78]
shl r10d, cl
movzx ecx, byte [rsp + 0x7c]
mov r11d, r10d
mov r15d, r10d
shl edx, cl
movzx ecx, byte [rsp + 0x90]
shl r8d, cl
movsxd rcx, r12d
add r12d, 1
lea rdi, [rcx + rcx*2]
movzx ecx, byte [rsp + 0x3c]
sar r11d, cl
mov ecx, esi
sar r15d, cl
movzx ecx, byte [rsp + 0x4c]
or r11d, r15d
or r11d, r10d
sar r10d, cl
movzx ecx, byte [rsp + 0x40]
or r11d, r10d
mov r10d, edx
sar r10d, cl
mov byte [rsp + rdi + 0x110], r11b
mov ecx, ebx
mov r11d, edx
sar r11d, cl
movzx ecx, byte [rsp + 0x50]
or r10d, r11d
mov r11d, r8d
or r10d, edx
sar edx, cl
movzx ecx, byte [rsp + 0x48]
or r10d, edx
mov edx, r8d
sar edx, cl
mov ecx, r14d
mov byte [rsp + rdi + 0x111], r10b
sar r11d, cl
movzx ecx, byte [rsp + 0x58]
or edx, r11d
or edx, r8d
sar r8d, cl
or edx, r8d
mov byte [rsp + rdi + 0x112], dl
add rax, 1
cmp rax, r9
jne 0x22dc03036
lea eax, [r12 - 1]
mov r10d, 0x20
mov ebp, 0x28
mov r13, qword [rsp + 0x80]
bsr eax, eax
mov ecx, r10d
mov r15, qword [rsp + 0x88]
xor eax, 0x1f
sub ecx, eax
mov eax, 2
cmp ecx, eax
cmovl ecx, eax
mov eax, 1
shl eax, cl
mov edi, ecx
sub ecx, 1
movsxd rdx, eax
or ecx, 0xffffff80
mov dword [rsp + 0x7c], eax
lea rbx, [rdx + rdx*2]
mov edx, r12d
mov r8d, ecx
mov byte [rsp + 0x80], al
shl edx, 0xc
movsxd rdx, edx
lea rsi, [rdx + rdx]
mov qword [rsp + 0x40], rsi
lea esi, [rax + 2]
mov dword [rsp + 0x3c], esi
lea esi, [rax + 1]
bsr ecx, esi
mov dword [rsp + 0x90], esi
movzx esi, ah
shr eax, 0x10
xor ecx, 0x1f
mov byte [rsp + 0x94], al
sub ebp, ecx
sub r10d, ecx
mov dword [rsp + 0x88], esi
mov eax, ebp
mov dword [rsp + 0x4c], r10d
mov r10d, ebp
shr eax, 3
and r10d, 7
mov dword [rsp + 0x48], ecx
mov esi, eax
mov eax, 8
sub eax, r10d
mov qword [rsp + 0x20], rsi
lea r11, [rsi + 1]
mov dword [rsp + 0x30], eax
lea rax, [rsi + 2]
mov qword [rsp + 0x50], rax
mov eax, 0x10
sub eax, r10d
mov dword [rsp + 0x58], eax
mov rax, qword [rsp + 0x20520]
psrldq xmm6, 8
mov rsi, qword [rsp + 0x20520]
mov byte [rsp + 0x102], 0
movzx edx, byte [rsp + r9 + 0x410]
cmp dword [rax + 0x28], r14d
mov r9, qword [rax + 0x10]
movq rax, xmm6
sete cl
cmp qword [rsi + 0x20], rax
mov esi, edx
sete al
and eax, ecx
test edx, edx
mov edx, 0x2c
sete cl
mov qword [rsp + 0xf8], rdx
and eax, ecx
mov ecx, 0xffff8000
mov byte [rsp + 0x78], al
mov eax, 0x504f921
mov qword [rsp + 0xf0], rax
mov word [rsp + 0x100], cx
test esi, esi
je 0x22dc03283
mov rax, qword [rsp + 0x20520]
mov edx, dword [rax + 0x78]
test edx, edx
jle 0x22dc03283
mov rax, qword [rax + 0x60]
mov byte [rax + 0x13], 9
movzx eax, word [rsp + 0x20530]
mov rsi, qword [rsp + 0x60]
mov byte [rsp + 0x101], r8b
mov r8, rbx
mov rcx, qword [rsp + 0x70]
mov rdx, qword [rsp + 0xa0]
mov qword [rsp + 0xb8], r11
mov word [rsp + 0xf4], ax
movzx eax, word [rsp + 0x98]
add rsi, 0x22
mov dword [rsp + 0xb0], r10d
mov word [rsp + 0xfd], ax
movzx eax, word [rsp + 0xd8]
mov qword [rsp + 0xa8], r9
mov word [rsp + 0xff], ax
movdqa xmm6, xmmword [rsp + 0xf0]
movups xmmword [rsi - 0x12], xmm6
movzx eax, word [rsp + 0x100]
mov word [rcx + 0x10], ax
mov rcx, rsi
add rsi, rbx
lea rbx, [rsi + 1]
call sub.msvcrt.dll_memcpy
mov byte [rsi], dil
lea rdi, [rsi + 9]
mov rcx, rbx
and rdi, 0xfffffffffffffff8
xor eax, eax
mov qword [rsi + 1], 0
mov edx, 0xff
mov qword [rsi + 0xfd], 0
sub rcx, rdi
add ecx, 0x104
shr ecx, 3
rep stosq qword [rdi], rax
mov byte [rsi + 1], 0xff
mov rcx, r13
mov r8, qword [rsp + 0x40]
call sub.msvcrt.dll_memset
movzx eax, byte [rsp + 0x80]
or byte [rsi + 2], al
movzx eax, byte [rsp + 0x88]
or byte [rsi + 3], al
movzx eax, byte [rsp + 0x94]
or byte [rsi + 4], al
cmp byte [rsp + 0x78], 0
mov edx, dword [r15]
mov r9, qword [rsp + 0xa8]
mov r10d, dword [rsp + 0xb0]
mov r11, qword [rsp + 0xb8]
je 0x22dc033a6
xor eax, eax
cmp edx, dword [r9]
je 0x22dc033ae
movzx eax, byte [rsp + rdx + 0x10420]
cmp dword [rsp + 0x68], 1
jle 0x22dc03a09
mov edi, dword [rsp + 0x68]
lea r14, [r9 + 4]
mov r9d, dword [rsp + 0x3c]
mov r11d, r12d
mov rsi, qword [rsp + 0xe8]
mov r10d, dword [rsp + 0x48]
lea edx, [rdi - 2]
mov dword [rsp + 0x30], r9d
movzx r12d, byte [rsp + 0x78]
lea rdi, [r15 + rdx*4 + 8]
mov qword [rsp + 0x20], rdi
jmp 0x22dc03405
mov eax, ecx
add rsi, 4
add r14, 4
cmp rsi, qword [rsp + 0x20]
je 0x22dc034cb
mov edx, dword [rsi]
test r12b, r12b
je 0x22dc03415
cmp dword [r14], edx
je 0x22dc037de
movzx r15d, byte [rsp + rdx + 0x10420]
mov rcx, r15
mov edx, eax
imul edx, r11d
movsxd rdx, edx
add rdx, rcx
lea r8, [r13 + rdx*2]
mov edx, 0x20
movsx ecx, word [r8]
sub edx, r10d
test ecx, ecx
jns 0x22dc033f0
mov edi, ebp
mov r10d, ebp
mov r9d, eax
add ebp, edx
and edi, 7
shr r10d, 3
mov ecx, edi
shl r9d, cl
mov ecx, 8
or byte [rbx + r10], r9b
mov r9d, eax
sub ecx, edi
shr r9d, cl
mov ecx, 0x10
or byte [rbx + r10 + 1], r9b
sub ecx, edi
shr eax, cl
or byte [rbx + r10 + 2], al
cmp ebp, 0x7ff
ja 0x22dc0386a
cmp dword [rsp + 0x30], 0xfff
jg 0x22dc037e8
mov eax, dword [rsp + 0x30]
mov edx, 0x20
add rsi, 4
add r14, 4
bsr r10d, eax
mov word [r8], ax
add eax, 1
xor r10d, 0x1f
mov dword [rsp + 0x30], eax
mov eax, r15d
sub edx, r10d
cmp rsi, qword [rsp + 0x20]
jne 0x22dc03405
mov ecx, ebp
mov r10d, ebp
mov r9d, dword [rsp + 0x30]
shr ecx, 3
and r10d, 7
mov esi, ecx
mov ecx, 8
sub ecx, r10d
mov qword [rsp + 0x20], rsi
lea r11, [rsi + 1]
add rsi, 2
mov dword [rsp + 0x30], ecx
mov ecx, 0x10
sub ecx, r10d
mov qword [rsp + 0x50], rsi
mov dword [rsp + 0x58], ecx
mov esi, eax
mov ecx, r10d
shl esi, cl
mov ecx, esi
mov rsi, qword [rsp + 0x20]
or byte [rbx + rsi], cl
movzx ecx, byte [rsp + 0x30]
mov esi, eax
shr esi, cl
movzx ecx, byte [rsp + 0x58]
or byte [rbx + r11], sil
mov rsi, qword [rsp + 0x50]
shr eax, cl
or byte [rbx + rsi], al
mov eax, 0xc
cmp edx, eax
cmovg edx, eax
add edx, ebp
cmp edx, 0x7ff
ja 0x22dc03936
mov esi, dword [rsp + 0x90]
mov r8d, edx
mov eax, edx
bsr r9d, r9d
and r8d, 7
shr eax, 3
xor r9d, 0x1f
mov edi, esi
mov ecx, r8d
shl edi, cl
mov ecx, 8
or byte [rbx + rax], dil
mov edi, esi
sub ecx, r8d
shr edi, cl
mov ecx, 0x10
or byte [rbx + rax + 1], dil
sub ecx, r8d
shr esi, cl
or byte [rbx + rax + 2], sil
mov eax, 0x20
mov ecx, 0xc
sub eax, r9d
cmp eax, ecx
cmovg eax, ecx
add edx, eax
cmp edx, 0x7ff
ja 0x22dc038d0
cmp edx, 8
jbe 0x22dc035c6
lea eax, [rdx + 7]
shr eax, 3
lea edx, [rax - 1]
mov byte [rbx], dl
add rbx, rax
mov rsi, qword [rsp + 0x60]
lea rax, [rbx + 1]
sub rax, qword [rsp + 0x70]
mov byte [rbx], 0
lea rdx, [rax + 0x10]
mov qword [rsi], 0
mov rcx, rsi
mov qword [rsi + 8], rax
call sub.msvcrt.dll_realloc
test rax, rax
je 0x22dc03ac5
mov rbx, qword [rsp + 0x20520]
mov rdx, qword [rbx + 0x60]
mov qword [rdx], rax
movdqu xmm6, xmmword [rbx + 0x30]
mov rdx, qword [rbx + 0x10]
movdqu xmm0, xmmword [rbx + 0x18]
mov qword [rbx + 0x60], rax
add dword [rbx + 0x78], 1
mov eax, dword [rbx + 0x28]
movups xmmword [rbx + 0x10], xmm6
movdqu xmm6, xmmword [rbx + 0x40]
mov qword [rbx + 0x30], rdx
mov dword [rbx + 0x48], eax
mov eax, 1
movaps xmmword [rsp + 0x20], xmm6
movups xmmword [rbx + 0x20], xmm6
movups xmmword [rbx + 0x38], xmm0
movaps xmm6, xmmword [rsp + 0x20430]
movaps xmm7, xmmword [rsp + 0x20440]
movaps xmm8, xmmword [rsp + 0x20450]
movaps xmm9, xmmword [rsp + 0x20460]
movaps xmm10, xmmword [rsp + 0x20470]
movaps xmm11, xmmword [rsp + 0x20480]
movaps xmm12, xmmword [rsp + 0x20490]
movaps xmm13, xmmword [rsp + 0x204a0]
movaps xmm14, xmmword [rsp + 0x204b0]
movaps xmm15, xmmword [rsp + 0x204c0]
add rsp, 0x204d8
pop rbx
pop rsi
pop rdi
pop rbp
pop r12
pop r13
pop r14
pop r15
ret
xor eax, eax
xor edx, edx
jmp 0x22dc02cf9
sub eax, 1
imul eax, dword [rsp + 0x20540]
cdqe
sub qword [rsp + 0x20528], rax
jmp 0x22dc0237e
sub edi, ebx
sub edx, r14d
mov qword [rsp + 0x88], r15
mov dword [rsp + 0x7c], edi
mov dword [rsp + 0x90], edx
mov qword [rsp + 0x80], r13
mov r13, qword [rsp + 0xb0]
cmp byte [r13 + rax], 0
je 0x22dc037cc
mov ecx, esi
mov edx, eax
mov r8d, dword [rsp + 0x30]
mov r10d, eax
sar edx, cl
movzx ecx, byte [rsp + 0x20]
mov byte [rsp + rax + 0x10420], r12b
and r8d, eax
and edx, ebp
sar r10d, cl
movzx ecx, byte [rsp + 0x78]
shl r8d, cl
movzx ecx, byte [rsp + 0x7c]
shl edx, cl
movzx ecx, byte [rsp + 0x90]
mov r11d, edx
mov r15d, edx
shl r10d, cl
movsxd rcx, r12d
add r12d, 1
lea rdi, [rcx + rcx*2]
mov ecx, ebx
sar r11d, cl
movzx ecx, byte [rsp + 0x40]
sar r15d, cl
movzx ecx, byte [rsp + 0x50]
or r11d, r15d
or r11d, edx
sar edx, cl
mov ecx, r14d
or r11d, edx
mov edx, r10d
sar edx, cl
movzx ecx, byte [rsp + 0x48]
mov byte [rsp + rdi + 0x111], r11b
mov r11d, r10d
sar r11d, cl
movzx ecx, byte [rsp + 0x58]
or edx, r11d
mov r11d, r8d
or edx, r10d
sar r10d, cl
mov ecx, esi
or edx, r10d
mov byte [rsp + rdi + 0x110], dl
mov edx, r8d
sar edx, cl
movzx ecx, byte [rsp + 0x3c]
sar r11d, cl
movzx ecx, byte [rsp + 0x4c]
or edx, r11d
or edx, r8d
sar r8d, cl
or edx, r8d
mov byte [rsp + rdi + 0x112], dl
add rax, 1
cmp rax, r9
jne 0x22dc036f8
jmp 0x22dc03119
xor ecx, ecx
xor r15d, r15d
jmp 0x22dc03421
mov edi, dword [rsp + 0x7c]
mov r8d, ebp
mov eax, ebp
add ebp, edx
and r8d, 7
shr eax, 3
mov r9d, edi
mov ecx, r8d
shl r9d, cl
mov ecx, 8
or byte [rbx + rax], r9b
mov r9d, edi
sub ecx, r8d
shr r9d, cl
mov ecx, 0x10
or byte [rbx + rax + 1], r9b
sub ecx, r8d
shr edi, cl
or byte [rbx + rax + 2], dil
cmp ebp, 0x7ff
ja 0x22dc039a3
mov r8, qword [rsp + 0x40]
mov edx, 0xff
mov rcx, r13
mov dword [rsp + 0x50], r11d
call sub.msvcrt.dll_memset
mov eax, dword [rsp + 0x3c]
mov edx, dword [rsp + 0x4c]
mov r10d, dword [rsp + 0x48]
mov r11d, dword [rsp + 0x50]
mov dword [rsp + 0x30], eax
mov eax, r15d
jmp 0x22dc033f2
movzx eax, byte [rbx + 0x101]
lea rdi, [rbx + 0x10c]
mov qword [rbx + 0x104], 0
sub ebp, 0x7f8
mov qword [rbx + 0x1fc], 0
and rdi, 0xfffffffffffffff8
mov byte [rbx + 0x102], al
movzx eax, byte [rbx + 0x100]
mov byte [rbx + 0x100], 0xff
mov byte [rbx + 0x101], al
mov eax, ebx
add rbx, 0x100
sub eax, edi
lea ecx, [rax + 0x204]
xor eax, eax
shr ecx, 3
rep stosq qword [rdi], rax
jmp 0x22dc03488
movzx eax, byte [rbx + 0x101]
lea rdi, [rbx + 0x10c]
mov qword [rbx + 0x104], 0
sub edx, 0x7f8
mov qword [rbx + 0x1fc], 0
and rdi, 0xfffffffffffffff8
mov byte [rbx + 0x102], al
movzx eax, byte [rbx + 0x100]
mov byte [rbx + 0x100], 0xff
mov byte [rbx + 0x101], al
mov eax, ebx
add rbx, 0x100
sub eax, edi
lea ecx, [rax + 0x204]
xor eax, eax
shr ecx, 3
rep stosq qword [rdi], rax
jmp 0x22dc035b3
movzx eax, byte [rbx + 0x101]
lea rdi, [rbx + 0x10c]
mov qword [rbx + 0x104], 0
sub edx, 0x7f8
mov qword [rbx + 0x1fc], 0
and rdi, 0xfffffffffffffff8
mov byte [rbx + 0x102], al
movzx eax, byte [rbx + 0x100]
mov byte [rbx + 0x100], 0xff
mov byte [rbx + 0x101], al
mov eax, ebx
add rbx, 0x100
sub eax, edi
lea ecx, [rax + 0x204]
xor eax, eax
shr ecx, 3
rep stosq qword [rdi], rax
jmp 0x22dc0354d
xor eax, eax
jmp 0x22dc03641
movzx eax, byte [rbx + 0x101]
lea rdi, [rbx + 0x10c]
mov qword [rbx + 0x104], 0
sub ebp, 0x7f8
mov qword [rbx + 0x1fc], 0
and rdi, 0xfffffffffffffff8
mov byte [rbx + 0x102], al
movzx eax, byte [rbx + 0x100]
mov byte [rbx + 0x100], 0xff
mov byte [rbx + 0x101], al
mov eax, ebx
add rbx, 0x100
sub eax, edi
lea ecx, [rax + 0x204]
xor eax, eax
shr ecx, 3
rep stosq qword [rdi], rax
jmp 0x22dc03835
mov edx, dword [rsp + 0x4c]
mov r9d, dword [rsp + 0x3c]
jmp 0x22dc03508
mov dword [rsp + 0x58], 0xd
mov r11d, 2
mov r10d, 3
mov ebp, 0xb
mov qword [rsp + 0x50], 3
mov ebx, 0xc
mov r8d, 0xffffff81
mov edi, 2
mov dword [rsp + 0x30], 5
mov r12d, 1
mov qword [rsp + 0x20], 1
mov dword [rsp + 0x4c], 3
mov byte [rsp + 0x94], 0
mov byte [rsp + 0x88], 0
mov byte [rsp + 0x80], 4
mov dword [rsp + 0x48], 0x1d
mov dword [rsp + 0x90], 5
mov dword [rsp + 0x7c], 4
mov dword [rsp + 0x3c], 6
mov qword [rsp + 0x40], 0x2000
jmp 0x22dc031f5
mov rbx, qword [rsp + 0xa0]
mov r15, qword [rsp + 0x30]
mov ebx, dword [rbx]
jmp 0x22dc02ec1
mov rcx, qword [rsp + 0x60]
call sub.msvcrt.dll_free
mov rax, qword [rsp + 0x20520]
mov rcx, qword [rax + 0x10]
test rcx, rcx
je 0x22dc03ae5
call sub.msvcrt.dll_free
mov rax, qword [rsp + 0x20520]
mov rcx, qword [rax + 0x30]
test rcx, rcx
je 0x22dc03afb
call sub.msvcrt.dll_free
mov rax, qword [rsp + 0x20520]
mov rcx, qword [rax + 0x50]
test rcx, rcx
je 0x22dc03b11
call sub.msvcrt.dll_free
mov rax, qword [rsp + 0x20520]
mov rbx, qword [rax + 0x58]
test rbx, rbx
je 0x22dc03b32
mov rcx, rbx
mov rbx, qword [rbx]
call sub.msvcrt.dll_free
test rbx, rbx
jne 0x22dc03b22
mov rax, qword [rsp + 0x20520]
mov qword [rax + 0x58], 0
xor eax, eax
jmp 0x22dc03641
mov eax, dword [rsp + 0x20]
jmp 0x22dc02bc0