Function at 0x100ca250
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
sub esp, 0x14
mov edi, ecx
mov dword [ebp - 0x18], ecx
mov ecx, dword [ebp + 8]
mov dword [ecx + 0x94], 0xffffffff
mov eax, 0x94
push eax
push 0
push ecx
call fcn.101db130
add esp, 0xc
mov ecx, dword [edi]
mov eax, dword [ecx + 0x16344]
test eax, eax
je 0x100ca2a0
cmp byte [eax + 0x248], 0
je 0x100ca2a0
cmp byte [0x102478b7], 0
setne al
mov dword [ebp - 0x14], eax
jmp 0x100ca2a7
mov dword [ebp - 0x14], 0
xor esi, esi
inc esi
push esi
call fcn.100bb4de
mov ebx, eax
mov edi, dword [ebp - 0x18]
mov ecx, dword [edi]
push esi
call fcn.100bb506
mov bh, al
add bh, al
or bh, bl
mov ecx, dword [edi]
push 0
call fcn.100bb534
mov bl, al
shl bl, 2
or bl, bh
mov ecx, dword [edi]
push esi
call fcn.100bb534
mov bh, al
shl bh, 3
or bh, bl
mov ecx, dword [edi]
call fcn.100bb902
test al, al
jne 0x100ca302
mov ecx, dword [edi]
call fcn.100bb8c0
test eax, eax
sete al
mov ecx, dword [ebp - 0x14]
not cl
test cl, al
jne 0x100ca306
mov al, 0x10
jmp 0x100ca308
xor eax, eax
mov esi, dword [ebp + 8]
or al, bh
mov dword [ebp - 0x1c], eax
mov edi, dword [ebp - 0x18]
mov ecx, dword [edi]
call fcn.100bc15a
mov ebx, dword [ebp - 0x14]
or bl, al
shl bl, 5
add bl, byte [ebp - 0x1c]
mov ecx, dword [edi]
call fcn.100bc15a
shl al, 6
or al, bl
mov ebx, eax
mov ecx, dword [edi]
call fcn.100bba7c
shl al, 7
or al, bl
mov byte [esi], al
mov ecx, dword [edi]
mov ebx, dword [ecx + 0x54]
and ebx, 3
call fcn.100bb956
mov ecx, dword [edi]
test al, al
je 0x100ca359
mov dl, byte [ecx + 0x24]
jmp 0x100ca35b
xor edx, edx
shl ebx, 0xc
xorps xmm0, xmm0
ucomiss xmm0, dword [ecx + 0x64]
setp ah
setne al
or al, ah
add al, al
or al, dl
mov edx, dword [ecx + 0x16344]
test edx, edx
je 0x100ca386
mov dl, byte [edx + 0x249]
shl dl, 2
jmp 0x100ca388
xor edx, edx
or dl, al
mov byte [esi + 8], dl
mov eax, ebx
or eax, 0x880
mov dword [esi + 4], eax
call fcn.100bc552
and eax, 7
mov dword [esi + 0xc], eax
mov eax, dword [ebp - 0x18]
mov ecx, dword [eax]
mov al, byte [ecx + 0x163e0]
mov byte [esi + 0x10], al
mov edx, dword [ecx + 0x16348]
test edx, edx
je 0x100ca3d5
mov eax, dword [edx + 0x308]
mov ecx, dword [edx + 0x30c]
and eax, 0x3f
and ecx, 0x3f
shl ecx, 6
or eax, ebx
or eax, ecx
jmp 0x100ca3e6
call fcn.100bb848
test al, al
je 0x100ca3e9
or ebx, 0x2c0
mov eax, ebx
mov dword [esi + 4], eax
movaps xmm0, xmmword [str.________________]
movups xmmword [esi + 0x81], xmm0
movups xmmword [esi + 0x71], xmm0
movups xmmword [esi + 0x61], xmm0
movups xmmword [esi + 0x51], xmm0
movups xmmword [esi + 0x41], xmm0
movups xmmword [esi + 0x31], xmm0
movups xmmword [esi + 0x21], xmm0
movups xmmword [esi + 0x11], xmm0
mov edi, dword [ebp - 0x18]
mov ecx, dword [edi]
push 1
call fcn.100bb4de
mov ebx, eax
mov ecx, dword [edi]
call fcn.100bba7c
mov bh, al
mov ecx, dword [edi]
cmp dword [ecx + 0x50], 0
sete al
mov byte [ebp - 0xd], bl
or al, bl
mov byte [ebp - 0xf], al
cmp dword [ecx + 0x16348], 0
je 0x100ca525
cmp dword [ecx + 0x16344], 0
je 0x100ca525
xor bh, 1
and bh, byte [ebp - 0xd]
mov byte [ebp - 0xe], bh
xor eax, eax
mov dword [ebp - 0x14], eax
add eax, 0xfffffffe
mov dword [ebp - 0x20], eax
xor ebx, ebx
mov edi, dword [ebp - 0x18]
mov ecx, dword [edi]
push ebx
push dword [ebp - 0x20]
call fcn.100bba9e
mov ecx, dword [edi]
mov ecx, dword [ecx + 0x16344]
movzx eax, al
mov edi, ebx
sub edi, eax
push edi
push dword [ebp - 0x14]
call fcn.1011b282
cmp byte [eax], 0xff
je 0x100ca509
mov esi, eax
mov dword [ebp - 0x1c], ebx
xor ebx, ebx
mov eax, dword [ebp - 0x18]
mov eax, dword [eax]
mov ecx, dword [eax + 0x16348]
push edi
push ebx
call fcn.10184bfa
mov cl, byte [esi]
cmp cl, byte [eax]
jne 0x100ca4bd
mov dl, byte [esi + 1]
cmp dl, byte [eax + 1]
je 0x100ca4ca
inc ebx
cmp ebx, 0x22
jne 0x100ca49d
mov edx, dword [ebp - 0x14]
mov ebx, edx
jmp 0x100ca4cd
mov edx, dword [ebp - 0x14]
cmp cl, 0xa
mov edi, dword [ebp - 0x1c]
je 0x100ca4e2
mov al, byte [ebp - 0xd]
cmp cl, 5
jne 0x100ca4ec
mov al, byte [ebp - 0xe]
jmp 0x100ca4ec
cmp byte [esi + 3], 0
setne al
or al, byte [ebp - 0xf]
and bl, 0x3f
shl al, 6
or al, bl
mov ecx, dword [ebp + 8]
lea ecx, [ecx + edx*4]
mov dl, byte [edi + ecx + 0x11]
and dl, 0x80
or al, dl
mov byte [edi + ecx + 0x11], al
mov ebx, edi
inc ebx
cmp ebx, 4
jne 0x100ca46b
mov eax, dword [ebp - 0x14]
inc eax
cmp eax, 0x20
jne 0x100ca460
jmp 0x100ca669
cmp byte [ecx + 0x16274], 0
je 0x100ca5a4
cmp dword [ecx + 0x16344], 0
je 0x100ca5a4
xor bh, 1
and bh, byte [ebp - 0xd]
mov byte [ebp - 0xe], bh
add esi, 0x11
xor ebx, ebx
xor edi, edi
mov eax, dword [ebp - 0x18]
mov eax, dword [eax]
mov ecx, dword [eax + 0x16344]
push edi
push ebx
call fcn.1011b282
mov cl, byte [eax]
cmp cl, 5
je 0x100ca56c
cmp cl, 0xa
jne 0x100ca590
mov cl, 1
mov dl, byte [ebp - 0xf]
jmp 0x100ca571
mov cl, 3
mov dl, byte [ebp - 0xe]
add cl, byte [eax + 1]
mov ch, byte [esi + edi]
and cl, 0x3f
and ch, 0x80
or ch, cl
cmp byte [eax + 3], 0
setne al
or al, dl
shl al, 6
or al, ch
mov byte [esi + edi], al
inc edi
cmp edi, 4
jne 0x100ca547
inc ebx
add esi, 4
cmp ebx, 0x20
jne 0x100ca545
jmp 0x100ca669
call fcn.100bb830
movzx eax, ax
cmp eax, 0x2ff
ja 0x100ca669
xor bh, 1
and bh, byte [ebp - 0xd]
shl bh, 6
mov byte [ebp - 0xe], bh
mov eax, dword [ebp + 8]
lea edi, [eax + 0x19]
xor ebx, ebx
mov eax, ebx
add al, 3
and al, 0x3f
or al, byte [ebp - 0xe]
mov byte [ebp - 0x14], al
xor esi, esi
mov eax, dword [ebp - 0x18]
mov ecx, dword [eax]
push esi
push ebx
call fcn.100bc410
test al, al
je 0x100ca605
mov eax, dword [ebp - 0x18]
mov eax, dword [eax]
movzx eax, byte [eax + ebx + 0x16281]
bt eax, esi
setb al
shl al, 7
add al, byte [ebp - 0x14]
mov byte [edi + esi], al
inc esi
cmp esi, 4
jne 0x100ca5d9
inc ebx
add edi, 4
cmp ebx, 8
jne 0x100ca5cb
shl byte [ebp - 0xf], 6
mov eax, dword [ebp + 8]
add eax, 0x11
mov dword [ebp - 0x20], eax
xor ebx, ebx
mov al, 1
mov dword [ebp - 0x1c], eax
mov eax, ebx
inc al
or al, byte [ebp - 0xf]
mov byte [ebp - 0x14], al
mov eax, dword [ebp - 0x20]
lea esi, [eax + ebx*4]
xor edi, edi
mov eax, dword [ebp - 0x18]
mov ecx, dword [eax]
push edi
push ebx
call fcn.100bc3f0
test al, al
je 0x100ca655
mov al, byte [esi + edi]
and al, 0x80
or al, byte [ebp - 0x14]
mov byte [esi + edi], al
inc edi
cmp edi, 4
jne 0x100ca63a
xor ebx, ebx
inc ebx
test byte [ebp - 0x1c], 1
mov eax, 0
jne 0x100ca625
mov eax, dword [ebp - 0x18]
mov ecx, dword [eax]
call fcn.100bb778
test al, al
mov eax, dword [ebp + 8]
je 0x100ca68e
mov cl, byte [eax + 0x39]
and cl, 0x80
mov dl, byte [ebp - 0xd]
shl dl, 6
or dl, cl
or dl, 0xb
mov byte [eax + 0x39], dl
xor edx, edx
xor ecx, ecx
xor ecx, dword [eax + edx*4]
inc edx
cmp edx, 0x25
jne 0x100ca692
mov dword [eax + 0x94], ecx
add esp, 0x14
pop esi
pop edi
pop ebx
pop ebp
ret 4