Function at 0x10089330
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff0
sub esp, 0x130
mov esi, esp
mov dword [esi + 0x118], ebp
mov dword [esi + 0xc], ecx
mov dword [esi + 0x11c], esp
mov dword [esi + 0x128], 0xffffffff
mov dword [esi + 0x124], 0x1009b830
mov eax, dword fs:[0]
mov dword [esi + 0x120], eax
lea eax, [esi + 0x120]
mov dword fs:[0], eax
mov eax, dword [ebp + 8]
mov dword [esi + 0x40], eax
mov eax, dword [ebp + 0xc]
mov dword [esi + 0x44], eax
call fcn.100ea989
lea edi, [esi + 0x60]
push 7
push str.shack24
push eax
push edi
call fcn.1008b4c0
add esp, 0x10
mov dword [esi + 0x128], 0
lea eax, [esi + 0x40]
mov dword [esi + 8], edi
mov ecx, edi
push eax
call fcn.10088d20
lea ecx, [esi + 0x48]
push eax
call fcn.10024080
mov eax, dword [esi + 0x74]
cmp eax, 8
jb 0x10089400
mov ecx, dword [esi + 0x60]
lea edi, [eax*2 + 2]
cmp edi, 0x1000
jb 0x100893f6
mov edx, dword [ecx - 4]
add ecx, 0xfffffffc
sub ecx, edx
cmp ecx, 0x20
jae 0x10089783
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 + 0x128], 1
push 7
push str.shack24
push eax
lea eax, [esi + 0x60]
push eax
call fcn.1008b4c0
add esp, 0x10
cmp dword [esi + 0x74], 8
jb 0x1008942f
mov eax, dword [esi + 0x60]
mov dword [esi + 8], eax
push dword [esi + 8]
call fcn.100eaa4a
test edx, edx
jne 0x10089767
mov eax, dword [esi + 0x74]
cmp eax, 8
jb 0x1008947d
mov ecx, dword [esi + 0x60]
lea edi, [eax*2 + 2]
cmp edi, 0x1000
jb 0x10089473
mov edx, dword [ecx - 4]
add ecx, 0xfffffffc
sub ecx, edx
cmp ecx, 0x20
jae 0x10089783
add eax, eax
add eax, 0x25
mov edi, eax
mov ecx, edx
push edi
push ecx
call fcn.100ea090
add esp, 8
pxor xmm0, xmm0
movdqa xmmword [esi + 0x10], xmm0
mov dword [esi + 0x20], 0
mov dword [esi + 0x24], 0xf
cmp dword [esi + 0x5c], 8
lea eax, [esi + 0x48]
jb 0x100894a0
mov eax, dword [esi + 0x48]
mov dword [esi + 0x128], 3
lea ecx, [esi + 0x60]
push 1
push 0x40
push 1
push eax
call fcn.1008ede0
mov eax, dword [esi + 0x60]
mov ecx, dword [eax + 4]
lea edi, [esi + 0x60]
add ecx, edi
call dword [sym.imp.MSVCP140.dll_public:_bool___thiscall_std::ios_base::fail_void_const]
test al, al
je 0x10089504
lea edi, [esi + 0xd0]
mov eax, dword [esi + 0x60]
mov eax, dword [eax + 4]
mov dword [esi + eax + 0x60], vtable.std::basic_ifstream_char__struct_std::char_traits_char__.0
mov eax, dword [esi + 0x60]
mov eax, dword [eax + 4]
lea ecx, [eax - 0x70]
mov dword [esi + eax + 0x5c], ecx
lea ecx, [esi + 0x70]
call fcn.1005c910
mov ecx, edi
call dword [sym.imp.MSVCP140.dll_public_virtual:_void___thiscall_std::ios_base::destructor_void_]
jmp 0x100896d8
mov dword [esi + 0x128], 5
lea ecx, [esi + 0x10]
push ecx
push edi
call fcn.10089860
add esp, 8
lea edi, [esi + 0xd0]
mov eax, dword [esi + 0x60]
mov eax, dword [eax + 4]
mov dword [esi + eax + 0x60], vtable.std::basic_ifstream_char__struct_std::char_traits_char__.0
mov eax, dword [esi + 0x60]
mov eax, dword [eax + 4]
lea ecx, [eax - 0x70]
mov dword [esi + eax + 0x5c], ecx
lea ecx, [esi + 0x70]
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 + 0x20]
test eax, eax
je 0x100896d8
cmp dword [esi + 0x24], 0x10
lea ebx, [esi + 0x10]
jb 0x10089563
mov ebx, dword [esi + 0x10]
mov edx, ebx
cmp eax, 8
lea edi, [esi + 0x60]
jb 0x100895e4
xor ecx, ecx
cmp eax, 0x20
jb 0x100895ad
mov ecx, eax
and ecx, 0xffffffe0
xor edx, edx
pcmpeqd xmm0, xmm0
nop
movdqu xmm1, xmmword [ebx + edx]
movdqu xmm2, xmmword [ebx + edx + 0x10]
pxor xmm1, xmm0
pxor xmm2, xmm0
movdqu xmmword [ebx + edx], xmm1
movdqu xmmword [ebx + edx + 0x10], xmm2
add edx, 0x20
cmp ecx, edx
jne 0x10089580
cmp eax, ecx
je 0x100895f7
test al, 0x18
je 0x100895e0
mov edi, eax
and eax, 0xfffffff8
lea edx, [ebx + eax]
pcmpeqd xmm0, xmm0
nop dword [eax]
movq xmm1, qword [ebx + ecx]
pxor xmm1, xmm0
movq qword [ebx + ecx], xmm1
add ecx, 8
cmp eax, ecx
jne 0x100895c0
cmp edi, eax
mov eax, edi
lea edi, [esi + 0x60]
jne 0x100895e4
jmp 0x100895f7
add ecx, ebx
mov edx, ecx
add ebx, eax
nop word cs:[eax + eax]
not byte [edx]
inc edx
cmp edx, ebx
jne 0x100895f0
mov dword [esi + 8], esp
push eax
sub esp, 0x34
mov eax, esp
mov dword [eax + 0x2c], 0
mov dword [eax], edi
lea ecx, [esi + 0x10]
mov dword [eax + 4], ecx
mov byte [eax + 0x30], 1
mov byte [eax + 0x34], 0
mov dword [esi + 0x128], 3
call fcn.10089bb0
add esp, 0x38
mov esp, dword [esi + 8]
movzx eax, byte [esi + 0x60]
cmp al, 1
jne 0x100896cc
lea eax, [esi + 0x60]
mov dword [esi + 0x30], eax
mov dword [esi + 0x38], 0
mov dword [esi + 0x34], 0
mov dword [esi + 0x3c], Ordinal_2
mov ecx, dword [esi + 0x68]
mov dword [esi + 0x128], 4
push str.shack24
call fcn.1009b740
mov dword [esi + 0x34], eax
movzx ecx, byte [esi + 0x60]
cmp ecx, 2
je 0x10089686
cmp ecx, 1
jne 0x10089693
mov ecx, dword [esi + 0x68]
cmp eax, dword [ecx]
jne 0x10089693
mov al, 1
jmp 0x100896cc
mov eax, dword [esi + 0x68]
cmp dword [eax + 4], 0
je 0x10089760
lea ecx, [esi + 0x30]
call fcn.1001acf0
mov dword [esi + 0x2c], eax
mov eax, dword [esi + 0xc]
mov ecx, dword [eax + 4]
mov eax, dword [eax + 8]
mov dword [esi + 0xc], eax
cmp ecx, dword [esi + 0xc]
je 0x100896c8
nop
mov dword [esi + 8], ecx
mov ecx, dword [ecx]
mov eax, dword [ecx]
push dword [esi + 0x2c]
call dword [eax + 4]
mov ecx, dword [esi + 8]
add ecx, 4
cmp ecx, dword [esi + 0xc]
jne 0x100896b0
movzx eax, byte [esi + 0x60]
lea ecx, [esi + 0x68]
movzx eax, al
push eax
call fcn.100197c0
mov eax, dword [esi + 0x24]
cmp eax, 0x10
jb 0x10089710
mov ecx, dword [esi + 0x10]
lea edi, [eax + 1]
cmp edi, 0x1000
jb 0x10089706
mov edx, dword [ecx - 4]
add ecx, 0xfffffffc
sub ecx, edx
cmp ecx, 0x20
jae 0x10089783
add eax, 0x24
mov edi, eax
mov ecx, edx
push edi
push ecx
call fcn.100ea090
add esp, 8
mov eax, dword [esi + 0x5c]
cmp eax, 8
jb 0x1008974a
mov ecx, dword [esi + 0x48]
lea edi, [eax*2 + 2]
cmp edi, 0x1000
jb 0x10089740
mov edx, dword [ecx - 4]
add ecx, 0xfffffffc
sub ecx, edx
cmp ecx, 0x20
jae 0x10089783
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 + 0x120]
mov dword fs:[0], eax
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret 8
mov al, 2
jmp 0x100896cc
mov dword [esi + 0x128], 2
lea eax, [esi + 0x60]
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 dword [eax]
push ebp
sub esp, 0x38
lea esi, [ebp - 0x12c]
mov ebp, dword [esi + 0x118]
lea ecx, [esi + 0x60]
call fcn.10088e00
add esp, 0x38
pop ebp
ret