Function at 0x100bc340
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff0
sub esp, 0x2e8
mov eax, dword [0x1029912c]
xor eax, esp
mov dword [esp + 0x2e4], eax
mov eax, dword [ebp + 0x10]
push esi
mov esi, ecx
mov dword [esp + 8], eax
mov ecx, dword [ebp + 8]
mov dword [esp + 4], ecx
push edi
mov edi, dword [ebp + 0x14]
test esi, esi
je 0x100bc5f7
test ecx, ecx
je 0x100bc5f7
test eax, eax
je 0x100bc5f7
test edi, edi
je 0x100bc5f7
mov dword [eax], 0
cmp edx, 0x40
jne 0x100bc5f7
test byte [esi + 0x3f], 0xe0
jne 0x100bc5f7
mov edx, edi
lea ecx, [esp + 0x100]
call fcn.100dcc20
test eax, eax
jne 0x100bc5f7
lea ecx, [esp + 0x1a0]
mov dword [esp + 0x278], eax
call fcn.100c5ec0
test eax, eax
jne 0x100bc5fc
push 0x20
mov edx, esi
call fcn.100c9460
add esp, 4
test eax, eax
jne 0x100bc5fc
push 0x20
mov edx, edi
lea ecx, [esp + 0x1a4]
call fcn.100c9460
add esp, 4
test eax, eax
jne 0x100bc5fc
push dword [ebp + 0xc]
mov edx, dword [esp + 0xc]
lea ecx, [esp + 0x1a4]
call fcn.100c9460
add esp, 4
test eax, eax
jne 0x100bc5fc
lea ecx, [esp + 0x1a0]
call fcn.100c9650
test eax, eax
jne 0x100bc5fc
movups xmm0, xmmword [esp + 0x1a0]
lea ecx, [esp + 0x1a0]
movups xmmword [esp + 0x2a0], xmm0
movups xmm0, xmmword [esp + 0x1b0]
movups xmmword [esp + 0x2b0], xmm0
movups xmm0, xmmword [esp + 0x1c0]
movups xmmword [esp + 0x2c0], xmm0
movups xmm0, xmmword [esp + 0x1d0]
movups xmmword [esp + 0x2d0], xmm0
call fcn.100c5ec0
test eax, eax
jne 0x100bc5fc
lea ecx, [esp + 0x2a0]
call fcn.100d7bb0
lea eax, [esi + 0x20]
push eax
lea eax, [esp + 0x104]
push eax
lea edx, [esp + 0x2a8]
lea ecx, [esp + 0x90]
call fcn.100dbdb0
add esp, 8
test eax, eax
jne 0x100bc5fc
lea edx, [esp + 0xd8]
lea ecx, [esp + 0x10]
call fcn.100d6100
lea eax, [esp + 0x10]
push eax
lea edx, [esp + 0x8c]
lea ecx, [esp + 0x64]
call fcn.100d63c0
add esp, 4
lea eax, [esp + 0x10]
lea edx, [esp + 0xb0]
lea ecx, [esp + 0x38]
push eax
call fcn.100d63c0
add esp, 4
lea edx, [esp + 0x38]
lea ecx, [esp + 0x280]
call fcn.100d5990
lea edx, [esp + 0x60]
lea ecx, [esp + 0x10]
call fcn.100d5990
mov al, byte [esp + 0x10]
mov edx, esi
shl al, 7
xor ecx, ecx
xor byte [esp + 0x29f], al
xorps xmm4, xmm4
lea eax, [esp + 0x280]
xorps xmm3, xmm3
sub edx, eax
lea eax, [esp + 0x280]
xorps xmm0, xmm0
add eax, ecx
movd xmm2, dword [edx + eax]
movd xmm1, dword [eax]
punpcklbw xmm2, xmm0
punpcklbw xmm1, xmm0
punpcklwd xmm2, xmm0
punpcklwd xmm1, xmm0
pxor xmm2, xmm1
movd xmm1, dword [eax + 4]
por xmm4, xmm2
punpcklbw xmm1, xmm0
movd xmm2, dword [esi + ecx + 4]
add ecx, 8
punpcklbw xmm2, xmm0
punpcklwd xmm2, xmm0
punpcklwd xmm1, xmm0
pxor xmm2, xmm1
por xmm3, xmm2
cmp ecx, 0x20
jl 0x100bc542
por xmm3, xmm4
movaps xmm0, xmm3
psrldq xmm0, 8
por xmm3, xmm0
movups xmm0, xmm3
psrldq xmm0, 4
por xmm3, xmm0
movd eax, xmm3
test eax, eax
je 0x100bc5d7
mov eax, 0xffffff1b
pop edi
pop esi
mov ecx, dword [esp + 0x2e4]
xor ecx, esp
call fcn.101d506b
mov esp, ebp
pop ebp
ret
mov eax, dword [esp + 0xc]
mov dword [eax], 1
xor eax, eax
pop edi
pop esi
mov ecx, dword [esp + 0x2e4]
xor ecx, esp
call fcn.101d506b
mov esp, ebp
pop ebp
ret
mov eax, 0xffffff53
mov ecx, dword [esp + 0x2ec]
pop edi
pop esi
xor ecx, esp
call fcn.101d506b
mov esp, ebp
pop ebp
ret