Function at 0x10088890
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff8
sub esp, 0x120
mov esi, esp
mov dword [esi + 0x108], ebp
mov dword [esi + 4], ecx
mov dword [esi + 0x10c], esp
mov dword [esi + 0x118], 0xffffffff
mov dword [esi + 0x114], 0x1009b820
mov eax, dword fs:[0]
mov dword [esi + 0x110], eax
lea eax, [esi + 0x110]
mov dword fs:[0], eax
mov eax, dword [ebp + 8]
mov dword [esi + 0x38], eax
mov eax, dword [ebp + 0xc]
mov dword [esi + 0x3c], eax
call fcn.100ea989
lea edi, [esi + 0x58]
push 7
push str.shack24
push eax
push edi
call fcn.1008b4c0
add esp, 0x10
mov dword [esi + 0x118], 0
lea eax, [esi + 0x38]
mov dword [esi], edi
mov ecx, edi
push eax
call fcn.10088d20
lea ecx, [esi + 0x40]
push eax
call fcn.10024080
mov eax, dword [esi + 0x6c]
cmp eax, 8
jb 0x1008895f
mov ecx, dword [esi + 0x58]
lea edi, [eax*2 + 2]
cmp edi, 0x1000
jb 0x10088955
mov edx, dword [ecx - 4]
add ecx, 0xfffffffc
sub ecx, edx
cmp ecx, 0x20
jae 0x10088c3b
add eax, eax
add eax, 0x25
mov edi, eax
mov ecx, edx
push edi
push ecx
call fcn.100ea090
add esp, 8
call fcn.100ea989
mov dword [esi + 0x118], 1
push 7
push str.shack24
push eax
lea eax, [esi + 0x58]
push eax
call fcn.1008b4c0
add esp, 0x10
cmp dword [esi + 0x6c], 8
jb 0x1008898d
mov eax, dword [esi + 0x58]
mov dword [esi], eax
push dword [esi]
call fcn.100eaa4a
test edx, edx
jne 0x10088c1f
mov eax, dword [esi + 0x6c]
cmp eax, 8
jb 0x100889da
mov ecx, dword [esi + 0x58]
lea edi, [eax*2 + 2]
cmp edi, 0x1000
jb 0x100889d0
mov edx, dword [ecx - 4]
add ecx, 0xfffffffc
sub ecx, edx
cmp ecx, 0x20
jae 0x10088c3b
add eax, eax
add eax, 0x25
mov edi, eax
mov ecx, edx
push edi
push ecx
call fcn.100ea090
add esp, 8
mov byte [esi + 8], 0
mov dword [esi + 0x10], 0
mov dword [esi + 0x118], 2
lea ecx, [esi + 8]
push str.shack24
call fcn.10088e60
mov dword [esi + 0x1c], eax
mov eax, dword [esi + 4]
mov ecx, dword [eax + 4]
mov eax, dword [eax + 8]
mov dword [esi + 4], eax
cmp ecx, dword [esi + 4]
je 0x10088a25
mov dword [esi], ecx
mov ecx, dword [ecx]
mov eax, dword [ecx]
push dword [esi + 0x1c]
call dword [eax]
mov ecx, dword [esi]
add ecx, 4
cmp ecx, dword [esi + 4]
jne 0x10088a10
sub esp, 0x14
movdqa xmm0, xmmword [0x1014ab50]
movdqu xmmword [esp + 4], xmm0
lea eax, [esi + 0x20]
mov dword [esp], eax
lea ecx, [esi + 8]
call fcn.10089100
mov eax, dword [esi + 0x30]
cmp dword [esi + 0x34], 0x10
lea edi, [esi + 0x20]
jb 0x10088a53
mov edi, dword [esi + 0x20]
test eax, eax
je 0x10088af7
mov edx, edi
cmp eax, 8
jb 0x10088adf
xor ecx, ecx
cmp eax, 0x20
jb 0x10088aad
mov ecx, eax
and ecx, 0xffffffe0
xor edx, edx
pcmpeqd xmm0, xmm0
nop word cs:[eax + eax]
movdqu xmm1, xmmword [edi + edx]
movdqu xmm2, xmmword [edi + edx + 0x10]
pxor xmm1, xmm0
pxor xmm2, xmm0
movdqu xmmword [edi + edx], xmm1
movdqu xmmword [edi + edx + 0x10], xmm2
add edx, 0x20
cmp ecx, edx
jne 0x10088a80
cmp eax, ecx
je 0x10088af7
test al, 0x18
je 0x10088adb
mov ebx, eax
and ebx, 0xfffffff8
lea edx, [edi + ebx]
pcmpeqd xmm0, xmm0
nop dword [eax]
movq xmm1, qword [edi + ecx]
pxor xmm1, xmm0
movq qword [edi + ecx], xmm1
add ecx, 8
cmp ebx, ecx
jne 0x10088ac0
cmp eax, ebx
jne 0x10088adf
jmp 0x10088af7
add ecx, edi
mov edx, ecx
add edi, eax
nop word cs:[eax + eax]
not byte [edx]
inc edx
cmp edx, edi
jne 0x10088af0
cmp dword [esi + 0x54], 8
lea eax, [esi + 0x40]
jb 0x10088b03
mov eax, dword [esi + 0x40]
mov dword [esi + 0x118], 3
lea ecx, [esi + 0x58]
push 1
push 0x40
push 0x12
push eax
call fcn.1008e9e0
mov eax, dword [esi + 0x58]
mov ecx, dword [eax + 4]
lea edi, [esi + 0x58]
add ecx, edi
call dword [sym.imp.MSVCP140.dll_public:_bool___thiscall_std::ios_base::fail_void_const]
test al, al
jne 0x10088b59
mov edx, edi
mov eax, dword [esi + 0x30]
cmp dword [esi + 0x34], 0x10
jb 0x10088b41
mov ecx, dword [esi + 0x20]
jmp 0x10088b44
lea ecx, [esi + 0x20]
mov dword [esi + 0x118], 4
push eax
push ecx
push edx
call fcn.1002fa10
add esp, 0xc
lea edi, [esi + 0xc0]
mov eax, dword [esi + 0x58]
mov eax, dword [eax + 4]
mov dword [esi + eax + 0x58], vtable.std::basic_ofstream_char__struct_std::char_traits_char__.0
mov eax, dword [esi + 0x58]
mov eax, dword [eax + 4]
lea ecx, [eax - 0x68]
mov dword [esi + eax + 0x54], ecx
lea ecx, [esi + 0x5c]
call fcn.1005c910
mov ecx, edi
call dword [sym.imp.MSVCP140.dll_public_virtual:_void___thiscall_std::ios_base::destructor_void_]
mov eax, dword [esi + 0x34]
cmp eax, 0x10
jb 0x10088bc2
mov ecx, dword [esi + 0x20]
lea edi, [eax + 1]
cmp edi, 0x1000
jb 0x10088bb8
mov edx, dword [ecx - 4]
add ecx, 0xfffffffc
sub ecx, edx
cmp ecx, 0x20
jae 0x10088c3b
add eax, 0x24
mov edi, eax
mov ecx, edx
push edi
push ecx
call fcn.100ea090
add esp, 8
movzx eax, byte [esi + 8]
lea ecx, [esi + 0x10]
push eax
call fcn.100197c0
mov eax, dword [esi + 0x54]
cmp eax, 8
jb 0x10088c09
mov ecx, dword [esi + 0x40]
lea edi, [eax*2 + 2]
cmp edi, 0x1000
jb 0x10088bff
mov edx, dword [ecx - 4]
add ecx, 0xfffffffc
sub ecx, edx
cmp ecx, 0x20
jae 0x10088c3b
add eax, eax
add eax, 0x25
mov edi, eax
mov ecx, edx
push edi
push ecx
call fcn.100ea090
add esp, 8
mov eax, dword [esi + 0x110]
mov dword fs:[0], eax
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret 8
mov dword [esi + 0x118], 5
lea eax, [esi + 0x58]
push eax
push edx
push str.create_directory
call fcn.10089e40
add esp, 0xc
call dword [sym.imp.api_ms_win_crt_runtime_l1_1_0.dll__invalid_parameter_noinfo_noreturn]
nop word cs:[eax + eax]
push ebp
sub esp, 0x14
lea esi, [ebp - 0x11c]
mov ebp, dword [esi + 0x108]
lea ecx, [esi + 0x58]
call fcn.10088e00
add esp, 0x14
pop ebp
ret