Function at 0x10090930
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], 0x100a34f0
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.100f2219
lea edi, [esi + 0x58]
push 7
push str.shack24
push eax
push edi
call fcn.10093560
add esp, 0x10
mov dword [esi + 0x118], 0
lea eax, [esi + 0x38]
mov dword [esi], edi
mov ecx, edi
push eax
call fcn.10090dc0
lea ecx, [esi + 0x40]
push eax
call fcn.10024d80
mov eax, dword [esi + 0x6c]
cmp eax, 8
jb 0x100909ff
mov ecx, dword [esi + 0x58]
lea edi, [eax*2 + 2]
cmp edi, 0x1000
jb 0x100909f5
mov edx, dword [ecx - 4]
add ecx, 0xfffffffc
sub ecx, edx
cmp ecx, 0x20
jae 0x10090cdb
add eax, eax
add eax, 0x25
mov edi, eax
mov ecx, edx
push edi
push ecx
call fcn.100f14b0
add esp, 8
call fcn.100f2219
mov dword [esi + 0x118], 1
push 7
push str.shack24
push eax
lea eax, [esi + 0x58]
push eax
call fcn.10093560
add esp, 0x10
cmp dword [esi + 0x6c], 8
jb 0x10090a2d
mov eax, dword [esi + 0x58]
mov dword [esi], eax
push dword [esi]
call fcn.100f22da
test edx, edx
jne 0x10090cbf
mov eax, dword [esi + 0x6c]
cmp eax, 8
jb 0x10090a7a
mov ecx, dword [esi + 0x58]
lea edi, [eax*2 + 2]
cmp edi, 0x1000
jb 0x10090a70
mov edx, dword [ecx - 4]
add ecx, 0xfffffffc
sub ecx, edx
cmp ecx, 0x20
jae 0x10090cdb
add eax, eax
add eax, 0x25
mov edi, eax
mov ecx, edx
push edi
push ecx
call fcn.100f14b0
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.10090f00
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 0x10090ac5
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 0x10090ab0
sub esp, 0x14
movdqa xmm0, xmmword [0x10145700]
movdqu xmmword [esp + 4], xmm0
lea eax, [esi + 0x20]
mov dword [esp], eax
lea ecx, [esi + 8]
call fcn.100911a0
mov eax, dword [esi + 0x30]
cmp dword [esi + 0x34], 0x10
lea edi, [esi + 0x20]
jb 0x10090af3
mov edi, dword [esi + 0x20]
test eax, eax
je 0x10090b97
mov edx, edi
cmp eax, 8
jb 0x10090b7f
xor ecx, ecx
cmp eax, 0x20
jb 0x10090b4d
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 0x10090b20
cmp eax, ecx
je 0x10090b97
test al, 0x18
je 0x10090b7b
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 0x10090b60
cmp eax, ebx
jne 0x10090b7f
jmp 0x10090b97
add ecx, edi
mov edx, ecx
add edi, eax
nop word cs:[eax + eax]
not byte [edx]
inc edx
cmp edx, edi
jne 0x10090b90
cmp dword [esi + 0x54], 8
lea eax, [esi + 0x40]
jb 0x10090ba3
mov eax, dword [esi + 0x40]
mov dword [esi + 0x118], 3
lea ecx, [esi + 0x58]
push 1
push 0x40
push 0x12
push eax
call fcn.100966b0
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 0x10090bf9
mov edx, edi
mov eax, dword [esi + 0x30]
cmp dword [esi + 0x34], 0x10
jb 0x10090be1
mov ecx, dword [esi + 0x20]
jmp 0x10090be4
lea ecx, [esi + 0x20]
mov dword [esi + 0x118], 4
push eax
push ecx
push edx
call fcn.10032190
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.1005f2d0
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 0x10090c62
mov ecx, dword [esi + 0x20]
lea edi, [eax + 1]
cmp edi, 0x1000
jb 0x10090c58
mov edx, dword [ecx - 4]
add ecx, 0xfffffffc
sub ecx, edx
cmp ecx, 0x20
jae 0x10090cdb
add eax, 0x24
mov edi, eax
mov ecx, edx
push edi
push ecx
call fcn.100f14b0
add esp, 8
movzx eax, byte [esi + 8]
lea ecx, [esi + 0x10]
push eax
call fcn.100199a0
mov eax, dword [esi + 0x54]
cmp eax, 8
jb 0x10090ca9
mov ecx, dword [esi + 0x40]
lea edi, [eax*2 + 2]
cmp edi, 0x1000
jb 0x10090c9f
mov edx, dword [ecx - 4]
add ecx, 0xfffffffc
sub ecx, edx
cmp ecx, 0x20
jae 0x10090cdb
add eax, eax
add eax, 0x25
mov edi, eax
mov ecx, edx
push edi
push ecx
call fcn.100f14b0
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.10091ee0
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.10090ea0
add esp, 0x14
pop ebp
ret