Function at 0x10008f50
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff8
mov eax, 0x14c0
call fcn.100101e0
lea edi, [ebp + 8]
mov eax, dword [0x1005a900]
xor eax, ebp
mov dword [esp + 0x14b8], eax
cmp dword [ebp + 0x1c], 0x10
mov eax, edi
jb 0x10008f7f
mov eax, dword [ebp + 8]
mov ecx, esp
push 1
push 0x40
push 0x20
push eax
call fcn.1000f3b0
cmp dword [esp + 0x5c], 0
je 0x100091a9
movdqa xmm0, xmmword [0x1004cda0]
xor eax, eax
movdqa xmm1, xmmword [0x1004cdb0]
movdqa xmm2, xmmword [0x1004cdc0]
nop word cs:[eax + eax]
movdqa xmm3, xmm0
movdqa xmm4, xmm0
pslld xmm4, 0x1f
psrad xmm4, 0x1f
psrld xmm3, 1
movdqa xmm5, xmm4
pandn xmm5, xmm3
pxor xmm3, xmm1
pand xmm3, xmm4
por xmm3, xmm5
movdqa xmm4, xmm3
pslld xmm3, 0x1f
psrld xmm4, 1
psrad xmm3, 0x1f
movdqa xmm5, xmm3
pandn xmm5, xmm4
pxor xmm4, xmm1
pand xmm4, xmm3
por xmm4, xmm5
movdqa xmm3, xmm4
psrld xmm3, 1
pslld xmm4, 0x1f
psrad xmm4, 0x1f
movdqa xmm5, xmm4
pandn xmm5, xmm3
pxor xmm3, xmm1
pand xmm3, xmm4
por xmm3, xmm5
movdqa xmm4, xmm3
psrld xmm4, 1
pslld xmm3, 0x1f
psrad xmm3, 0x1f
movdqa xmm5, xmm3
pandn xmm5, xmm4
pxor xmm4, xmm1
pand xmm4, xmm3
por xmm4, xmm5
movdqa xmm3, xmm4
pslld xmm4, 0x1f
psrad xmm4, 0x1f
psrld xmm3, 1
movdqa xmm5, xmm4
pandn xmm5, xmm3
pxor xmm3, xmm1
pand xmm3, xmm4
por xmm3, xmm5
movdqa xmm4, xmm3
pslld xmm3, 0x1f
psrld xmm4, 1
psrad xmm3, 0x1f
movdqa xmm5, xmm3
pandn xmm5, xmm4
pxor xmm4, xmm1
pand xmm4, xmm3
por xmm4, xmm5
movdqa xmm3, xmm4
psrld xmm3, 1
pslld xmm4, 0x1f
psrad xmm4, 0x1f
movdqa xmm5, xmm4
pandn xmm5, xmm3
pxor xmm3, xmm1
pand xmm3, xmm4
por xmm3, xmm5
movdqa xmm4, xmm3
psrld xmm4, 1
pslld xmm3, 0x1f
psrad xmm3, 0x1f
movdqa xmm5, xmm3
pandn xmm5, xmm4
pxor xmm4, xmm1
pand xmm4, xmm3
por xmm4, xmm5
movdqu xmmword [esp + eax*4 + 0x10b8], xmm4
add eax, 4
paddd xmm0, xmm2
cmp eax, 0x100
jne 0x10008fc0
lea edi, [esp + 0xb8]
mov ecx, esp
push 0
push 0x1000
push edi
call fcn.100092a0
mov ecx, dword [eax]
mov ecx, dword [ecx + 4]
xor ebx, ebx
test byte [eax + ecx + 0xc], 6
jne 0x10009191
mov ebx, 0xffffffff
xor eax, eax
mov esi, esp
nop word cs:[eax + eax]
movzx ecx, byte [esp + eax + 0xb8]
xor cl, bl
movzx ecx, cl
shr ebx, 8
xor ebx, dword [esp + ecx*4 + 0x10b8]
inc eax
cmp eax, 0x1000
jne 0x10009150
mov ecx, esi
push 0
push 0x1000
push edi
call fcn.100092a0
mov ecx, dword [eax]
mov ecx, dword [ecx + 4]
test byte [eax + ecx + 0xc], 6
mov eax, 0
je 0x10009150
not ebx
mov edx, dword [esp + 8]
test edx, edx
lea edi, [ebp + 8]
jle 0x10009214
not ebx
cmp edx, 1
jne 0x100091ad
mov esi, edx
xor ecx, ecx
jmp 0x100091f5
xor ebx, ebx
jmp 0x10009214
mov esi, edx
and edx, 0xfffffffe
xor ecx, ecx
nop word cs:[eax + eax]
movzx eax, byte [esp + ecx + 0xb8]
xor al, bl
movzx eax, al
shr ebx, 8
xor ebx, dword [esp + eax*4 + 0x10b8]
movzx eax, byte [esp + ecx + 0xb9]
xor al, bl
movzx eax, al
shr ebx, 8
xor ebx, dword [esp + eax*4 + 0x10b8]
add ecx, 2
cmp edx, ecx
jne 0x100091c0
mov eax, esi
test al, 1
je 0x10009212
movzx eax, byte [esp + ecx + 0xb8]
xor al, bl
movzx eax, al
shr ebx, 8
xor ebx, dword [esp + eax*4 + 0x10b8]
not ebx
lea esi, [esp + 0x70]
mov eax, dword [esp]
mov eax, dword [eax + 4]
mov dword [esp + eax], vtable.std::basic_ifstream_char__struct_std::char_traits_char__.0
mov eax, dword [esp]
mov eax, dword [eax + 4]
lea ecx, [eax - 0x70]
mov dword [esp + eax - 4], ecx
lea ecx, [esp + 0x10]
call fcn.1000b790
mov dword [esp + 0x70], vtable.std::ios_base.0
push esi
call fcn.10010716
add esp, 4
mov eax, dword [edi + 0x14]
cmp eax, 0x10
jb 0x1000927f
mov ecx, dword [edi]
lea esi, [eax + 1]
cmp esi, 0x1000
jb 0x10009275
mov edx, dword [ecx - 4]
add ecx, 0xfffffffc
sub ecx, edx
cmp ecx, 0x20
jae 0x10009297
add eax, 0x24
mov esi, eax
mov ecx, edx
push esi
push ecx
call fcn.10010071
add esp, 8
mov ecx, dword [esp + 0x14b8]
xor ecx, ebp
call fcn.100100a7
mov eax, ebx
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret
call fcn.10031671
int3