Function at 0x100906a0
Capabilities:
Encode data using xor

Disassembly:
sub esp, 0x308
cmp dword [0x101fc75c], 0
jne 0x100908ff
push ebx
push ebp
push esi
push edi
xor ebx, ebx
mov eax, 1
nop
mov ecx, eax
mov byte [esp + ebx + 0x118], al
and cl, 0x80
mov byte [esp + ebx + 0x217], al
mov byte [esp + eax + 0x18], bl
inc ebx
movzx edx, cl
lea ecx, [eax + eax]
neg edx
sbb edx, edx
and edx, 0x11b
xor edx, ecx
xor eax, edx
cmp eax, 1
jne 0x100906c0
xor ecx, ecx
mov dword [ecx + 0x101f8fe0], eax
test eax, eax
je 0x1009070c
movzx eax, byte [esp + eax + 0x18]
movzx eax, byte [esp + eax + 0x131]
jmp 0x1009070e
xor eax, eax
add ecx, 4
cmp ecx, 0x28
jb 0x100906f3
xor ebx, ebx
test bl, bl
je 0x10090731
movzx eax, bl
lea ecx, [esp + 0x217]
movzx eax, byte [esp + eax + 0x18]
sub ecx, eax
mov al, byte [ecx]
jmp 0x10090733
xor al, al
movzx eax, al
lea ecx, [eax + eax]
xor ecx, eax
add ecx, ecx
xor ecx, eax
add ecx, ecx
xor ecx, eax
add ecx, ecx
xor ecx, eax
mov edx, ecx
shr edx, 8
xor dl, cl
xor dl, 0x63
je 0x1009076d
movzx eax, dl
movzx eax, byte [esp + eax + 0x18]
movzx esi, byte [esp + eax + 0x119]
movzx eax, byte [esp + eax + 0x131]
jmp 0x10090771
xor esi, esi
xor eax, eax
movzx ecx, dl
shl esi, 8
or esi, ecx
mov dword [ebx*4 + 0x101f6fe0], ecx
shl esi, 8
or esi, ecx
shl esi, 8
or esi, eax
mov eax, esi
mov dword [ebx*4 + 0x101f7fe0], esi
rol eax, 8
mov dword [ebx*4 + 0x101f83e0], eax
mov eax, esi
rol eax, 0x10
mov dword [ebx*4 + 0x101f87e0], eax
mov eax, ecx
rol eax, 8
mov dword [ebx*4 + 0x101f73e0], eax
mov eax, ecx
ror ecx, 8
rol eax, 0x10
mov dword [ebx*4 + 0x101f7be0], ecx
movzx ecx, bl
mov dword [ebx*4 + 0x101f77e0], eax
ror esi, 8
mov dword [ebx*4 + 0x101f8be0], esi
lea eax, [ecx*8]
xor eax, ecx
shl eax, 2
xor eax, ecx
lea edx, [eax + eax]
mov ecx, edx
shr ecx, 8
mov al, cl
xor al, dl
cmp al, 5
je 0x10090851
movzx eax, dl
xor eax, 5
xor eax, ecx
lea ecx, [esp + 0x217]
movzx eax, byte [esp + eax + 0x18]
sub ecx, eax
mov cl, byte [ecx]
mov byte [esp + 0x13], cl
test cl, cl
je 0x10090856
movzx edi, cl
mov byte [esp + 0x13], cl
movzx eax, byte [esp + edi + 0x18]
movzx edx, byte [esp + eax + 0x206]
movzx ebp, byte [esp + eax + 0x1df]
movzx eax, byte [esp + eax + 0x1f7]
mov dword [esp + 0x14], eax
movzx eax, byte [esp + edi + 0x18]
movzx esi, byte [esp + eax + 0x180]
mov eax, dword [esp + 0x14]
jmp 0x10090860
mov byte [esp + 0x13], 0
xor edx, edx
xor ebp, ebp
xor eax, eax
xor esi, esi
xor edi, edi
shl esi, 8
or esi, edx
shl esi, 8
or esi, ebp
shl esi, 8
or esi, eax
mov ecx, esi
mov dword [ebx*4 + 0x101f5fe0], esi
rol ecx, 0x10
mov eax, esi
ror eax, 8
mov edx, esi
mov dword [ebx*4 + 0x101f67e0], ecx
mov dword [ebx*4 + 0x101f6be0], eax
mov dword [edi*4 + 0x101f47e0], ecx
movzx ecx, byte [esp + 0x13]
mov dword [edi*4 + 0x101f4be0], eax
mov eax, ecx
rol eax, 8
mov dword [ebx*4 + 0x101f53e0], eax
mov eax, ecx
rol edx, 8
mov dword [ebx*4 + 0x101f4fe0], ecx
rol eax, 0x10
ror ecx, 8
mov dword [ebx*4 + 0x101f63e0], edx
mov dword [ebx*4 + 0x101f57e0], eax
mov dword [ebx*4 + 0x101f5be0], ecx
inc ebx
mov dword [edi*4 + 0x101f3fe0], esi
mov dword [edi*4 + 0x101f43e0], edx
cmp ebx, 0x100
jb 0x10090718
pop edi
pop esi
pop ebp
mov dword [0x101fc75c], 1
pop ebx
xor eax, eax
add esp, 0x308
ret