Function at 0x10028158
Capabilities:
Encode data using xor

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0x62c
xor ebx, ebx
lea eax, [esp + 0x24]
mov dword [eax], ebx
mov word [eax + 4], bx
mov ebp, 0x200
lea eax, [esp + 0x22c]
push ebp
push ebx
push eax
call fcn.10031f20
add esp, 0xc
lea edi, [esp + 0x42c]
push ebp
push ebx
push edi
call fcn.10031f20
add esp, 0xc
lea esi, [esp + 0x2c]
push ebp
push ebx
push esi
call fcn.10031f20
add esp, 0xc
mov eax, 0x100
push eax
push esi
push eax
push edi
push eax
lea eax, [esp + 0x240]
push eax
push 3
lea eax, [esp + 0x40]
push eax
push dword [esp + 0x660]
call fcn.10032461
add esp, 0x24
mov eax, 0xefbdefb2
lea edi, [esp + 4]
mov dword [edi + 4], eax
mov word [edi + 8], 0xefdf
mov word [edi + 0x12], bx
mov ebp, 0xefb8002e
mov dword [edi], ebp
movups xmm0, xmmword [edi + 2]
xorps xmm0, xmmword [0x10041fa0]
movups xmmword [edi + 2], xmm0
push edi
push esi
call fcn.100326e3
add esp, 8
mov dword [esp], eax
mov eax, 0xefbdefb2
mov dword [edi + 4], eax
mov dword [edi + 8], 0xefe0efa7
mov word [edi + 0x16], bx
mov dword [edi], ebp
xor eax, eax
inc eax
lea ecx, [eax - 0x1025]
xor word [esp + eax*2 + 4], cx
inc eax
cmp eax, 0xb
jne 0x1002821f
xor esi, esi
mov word [esp + 0x1a], si
push edi
lea eax, [esp + 0x30]
push eax
call fcn.100326e3
add esp, 8
mov dword [esp + 0x1c], eax
mov ebx, 0xefadefb1
mov dword [esp + 8], ebx
mov word [esp + 0xc], 0xefdf
mov word [esp + 0x16], si
mov ebp, 0xefa4002e
mov dword [esp + 4], ebp
movups xmm0, xmmword [esp + 6]
xorps xmm0, xmmword [0x10041fa0]
movups xmmword [esp + 6], xmm0
push edi
lea eax, [esp + 0x30]
push eax
call fcn.100326e3
add esp, 8
mov dword [esp + 0x20], eax
mov dword [esp + 8], ebx
mov dword [esp + 0xc], 0xefe0efa7
mov word [esp + 0x1a], si
mov dword [esp + 4], ebp
xor eax, eax
inc eax
lea ecx, [eax - 0x1025]
xor word [esp + eax*2 + 4], cx
inc eax
cmp eax, 0xb
jne 0x100282a2
xor eax, eax
cmp dword [esp], 0
sete al
mov ebp, eax
xor esi, esi
mov word [esp + 0x1a], si
push edi
lea eax, [esp + 0x30]
push eax
call fcn.100326e3
add esp, 8
mov dword [esp], eax
cmp dword [esp + 0x1c], 0
mov eax, 0xefaaefad
mov dword [esp + 8], eax
mov word [esp + 0xc], 0xefdf
mov word [esp + 0x16], si
mov eax, 0xefac002e
mov dword [esp + 4], eax
movups xmm0, xmmword [esp + 6]
xorps xmm0, xmmword [0x10041fa0]
movups xmmword [esp + 6], xmm0
mov ebx, 2
cmovne ebx, ebp
push edi
lea eax, [esp + 0x30]
push eax
call fcn.100326e3
add esp, 8
mov dword [esp + 0x1c], eax
mov eax, 0xefaaefad
mov dword [esp + 8], eax
mov dword [esp + 0xc], 0xefe0efa7
mov word [esp + 0x1a], si
mov eax, 0xefac002e
mov dword [esp + 4], eax
xor eax, eax
inc eax
lea ecx, [eax - 0x1025]
xor word [esp + eax*2 + 4], cx
inc eax
cmp eax, 0xb
jne 0x10028346
xor esi, esi
mov word [esp + 0x1a], si
push edi
lea ebp, [esp + 0x30]
push ebp
call fcn.100326e3
add esp, 8
cmp dword [esp + 0x20], 0
mov ecx, 4
cmove ebx, ecx
cmp dword [esp], 0
mov dword [esp + 8], 0xefb8efb9
mov word [esp + 0xc], 0xefdf
mov word [esp + 0x16], si
mov dword [esp + 4], 0xefac002e
mov ecx, 8
cmovne ecx, ebx
cmp dword [esp + 0x1c], 0
movups xmm0, xmmword [esp + 6]
xorps xmm0, xmmword [0x10041fa0]
movups xmmword [esp + 6], xmm0
mov edx, 0x10
cmovne edx, ecx
test eax, eax
mov ebx, 0x20
cmovne ebx, edx
push edi
push ebp
call fcn.100326e3
add esp, 8
test eax, eax
mov edi, 0x40
cmovne edi, ebx
call fcn.10023e58
test edi, eax
je 0x1002846c
push dword [esp + 0x640]
call fcn.10014c3e
add esp, 4
mov dword [esp + 0x20], eax
mov ebx, edx
push 0
call fcn.10032b53
add esp, 4
mov ebp, eax
mov dword [esp], edx
call fcn.10023e64
mov ecx, eax
mov edi, edx
mov edx, 0xfffeae80
mul edx
sub edx, ecx
imul ecx, edi, 0xfffeae80
add ecx, edx
add eax, ebp
adc ecx, dword [esp]
cmp dword [esp + 0x20], eax
sbb ebx, ecx
jl 0x1002846c
call fcn.10023e70
mov edi, eax
or eax, edx
je 0x10028469
mov esi, edx
push dword [esp + 0x640]
call fcn.10014bd8
add esp, 4
test eax, eax
setg cl
mov edx, eax
sar edx, 0x1f
cmp edi, eax
sbb esi, edx
setge al
and al, cl
movzx esi, al
jmp 0x1002846c
xor esi, esi
inc esi
mov eax, esi
add esp, 0x62c
pop esi
pop edi
pop ebx
pop ebp
ret