Function at 0x101d3500
Capabilities:
Encode data using xor

Disassembly:
mov eax, 0xe0
call fcn.1005b330
mov eax, dword [0x102db074]
xor eax, esp
mov dword [esp + 0xdc], eax
mov edx, dword [esp + 0xe4]
mov eax, dword [esp + 0x104]
push ebx
mov ebx, dword [esp + 0x100]
push ebp
mov ebp, dword [esp + 0xf8]
push esi
mov esi, dword [esp + 0x100]
mov dword [esp + 0x10], eax
mov eax, dword [edx]
mov ecx, eax
push edi
sub ecx, ebx
mov dword [esp + 0x18], ebp
xor edi, edi
mov dword [esp + 0x1c], eax
mov dword [esp + 0x24], ecx
mov dword [esp + 0x10], edi
cmp dword [esp + 0xf8], ebx
jb 0x101d357a
cmp ebx, 0x40
ja 0x101d357a
test ebx, ebx
jne 0x101d3595
cmp dword [esp + 0x110], edi
jne 0x101d3777
xor eax, eax
mov ecx, dword [esp + 0xec]
pop edi
pop esi
pop ebp
pop ebx
xor ecx, esp
call fcn.1005a1f2
add esp, 0xe0
ret
cmp dword [esp + 0x108], 1
mov dword [edx], ecx
jne 0x101d35c2
test ebp, ebp
je 0x101d35b1
mov eax, dword [esp + 0xfc]
add eax, ecx
mov dword [ebp], eax
test esi, esi
je 0x101d3777
mov dword [esi], edi
mov eax, 1
jmp 0x101d357c
push 0
push ebx
lea eax, [esp + 0x34]
push eax
push dword [esp + 0x20]
call fcn.100bc950
add esp, 0x10
test eax, eax
jle 0x101d357a
test ebp, ebp
je 0x101d357a
test esi, esi
je 0x101d357a
push 0x103
push 0x102be090
push ebx
call fcn.100a5c30
mov ebp, eax
add esp, 0xc
mov eax, dword [esp + 0x18]
mov dword [esp + 0x28], ebp
mov dword [eax], ebp
test ebp, ebp
je 0x101d357a
mov edx, dword [esp + 0xf8]
lea ecx, [esp + 0x6c]
neg ecx
mov dword [esi], 1
and ecx, 0x3f
lea eax, [esp + 0x6c]
add ecx, eax
lea eax, [ebx + 0x100]
mov dword [esp + 0x18], ecx
cmp edx, eax
jbe 0x101d3641
mov edi, edx
sub edi, ebx
sub edi, 0x100
mov dword [esp + 0x10], edi
push ebx
xor esi, esi
mov dword [esp + 0x18], 0
push esi
push ecx
call fcn.10215950
add esp, 0xc
mov dword [esp + 0x20], esi
cmp edi, dword [esp + 0xf8]
jae 0x101d36fb
mov ebp, dword [esp + 0x10]
mov ecx, ebp
sub ecx, dword [esp + 0x1c]
mov dword [esp + 0x10], ecx
mov eax, ebp
mov edx, ecx
xor eax, dword [esp + 0x24]
xor edx, dword [esp + 0x1c]
lea edi, [eax - 1]
not eax
shr eax, 0x1f
shr edi, 0x1f
and edi, eax
mov eax, ebp
xor eax, dword [esp + 0x1c]
neg edi
or edx, eax
mov eax, dword [esp + 0xfc]
xor edx, ebp
shr edx, 0x1f
neg edx
mov cl, byte [eax + ebp]
mov eax, edi
or eax, dword [esp + 0x14]
inc ebp
and edi, dword [esp + 0x20]
and eax, edx
mov edx, dword [esp + 0x18]
or esi, edi
mov edi, dword [esp + 0x20]
mov dword [esp + 0x14], eax
and al, cl
or byte [edi + edx], al
inc edi
mov ecx, edi
mov eax, ebx
sub ecx, ebx
xor eax, edi
xor ecx, ebx
or ecx, eax
xor ecx, edi
shr ecx, 0x1f
neg ecx
and edi, ecx
mov ecx, dword [esp + 0x10]
inc ecx
mov dword [esp + 0x20], edi
mov dword [esp + 0x10], ecx
cmp ebp, dword [esp + 0xf8]
jb 0x101d3675
mov ebp, dword [esp + 0x28]
jmp 0x101d36ff
mov edx, dword [esp + 0x18]
test ebx, ebx
je 0x101d3777
movzx eax, byte [esp + 0x110]
mov edi, ebx
mov ecx, eax
mov dword [esp + 0x28], eax
lea eax, [esp + 0x2c]
not ecx
sub eax, ebp
mov dword [esp + 0x10], ecx
mov dword [esp + 0x14], eax
mov eax, esi
lea ebp, [ebp + 1]
xor eax, 0x20
mov al, byte [eax + edx]
mov dl, byte [esi + edx]
inc esi
mov eax, dword [esp + 0x28]
mov dword [esp + 0x1c], eax
mov eax, dword [esp + 0x14]
mov dword [esp + 0x24], ecx
mov ecx, dword [esp + 0x24]
and cl, byte [eax + ebp - 1]
mov eax, dword [esp + 0x1c]
and al, dl
mov edx, dword [esp + 0x18]
or al, cl
mov ecx, esi
sub ecx, ebx
mov byte [ebp - 1], al
xor ecx, ebx
mov eax, ebx
xor eax, esi
or ecx, eax
xor ecx, esi
shr ecx, 0x1f
neg ecx
and esi, ecx
mov ecx, dword [esp + 0x10]
sub edi, 1
jne 0x101d3723
mov eax, 1
jmp 0x101d357c