Function at 0x1009cdb0
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x28
push esi
mov esi, dword [ebp + 8]
cmp dword [esi], 0
push edi
mov edi, ecx
je 0x1009cdcd
pop edi
mov eax, 0xfffffffb
pop esi
mov esp, ebp
pop ebp
ret
cmp dword [esi + 8], 0
je 0x1009cdde
pop edi
mov eax, 0xfffffffa
pop esi
mov esp, ebp
pop ebp
ret
test edi, edi
je 0x1009d0a6
test eax, eax
jle 0x1009d0a6
cdq
and edx, 0x7f
push ebx
lea ebx, [edx + eax]
mov eax, dword [esi + 4]
sar ebx, 7
sub eax, 0
mov dword [ebp - 8], ebx
je 0x1009d072
dec eax
je 0x1009cfdf
dec eax
je 0x1009ce1c
pop ebx
pop edi
or eax, 0xffffffff
pop esi
mov esp, ebp
pop ebp
ret
mov eax, dword [esi + 0xc]
mov ecx, dword [esi + 0x10]
mov edx, dword [esi + 0x14]
mov dword [ebp - 0x18], eax
mov eax, dword [esi + 0x18]
mov dword [ebp - 0x14], ecx
mov dword [ebp - 0x10], edx
mov dword [ebp - 0xc], eax
mov dword [ebp - 4], ebx
test ebx, ebx
jle 0x1009d09a
xor edi, edi
jmp 0x1009ce53
mov esi, dword [ebp + 8]
xor edi, edi
jmp 0x1009ce53
mov esi, dword [ebp + 8]
mov edx, dword [ebp - 0x14]
mov ecx, dword [ebp - 0x18]
mov eax, dword [ebp - 0x10]
mov dword [ebp - 0x24], edx
lea edx, [ebp - 0x28]
mov dword [ebp - 0x28], ecx
mov ecx, dword [ebp - 0xc]
mov dword [ebp - 0x20], eax
push edx
mov eax, edx
mov dword [ebp - 0x1c], ecx
call fcn.1009d660
movzx eax, byte [ebp - 0x28]
movzx ebx, byte [ebp - 0x18]
add bl, bl
mov edx, edi
and edx, 7
and al, 0x80
mov cl, dl
shr al, cl
movzx ecx, byte [ebp - 0x17]
shr cl, 7
or cl, bl
movzx ebx, byte [ebp - 0x17]
mov byte [ebp - 0x18], cl
movzx ecx, byte [ebp - 0x16]
shr cl, 7
add bl, bl
or cl, bl
movzx ebx, byte [ebp - 0x16]
mov byte [ebp - 0x17], cl
movzx ecx, byte [ebp - 0x15]
shr cl, 7
add bl, bl
or cl, bl
movzx ebx, byte [ebp - 0x15]
mov byte [ebp - 0x16], cl
movzx ecx, byte [ebp - 0x14]
shr cl, 7
add bl, bl
or cl, bl
movzx ebx, byte [ebp - 0x14]
mov byte [ebp - 0x15], cl
movzx ecx, byte [ebp - 0x13]
shr cl, 7
add bl, bl
or cl, bl
movzx ebx, byte [ebp - 0x13]
mov byte [ebp - 0x14], cl
movzx ecx, byte [ebp - 0x12]
shr cl, 7
add bl, bl
or cl, bl
movzx ebx, byte [ebp - 0x12]
mov byte [ebp - 0x13], cl
movzx ecx, byte [ebp - 0x11]
shr cl, 7
add bl, bl
or cl, bl
movzx ebx, byte [ebp - 0x11]
mov byte [ebp - 0x12], cl
movzx ecx, byte [ebp - 0x10]
shr cl, 7
add bl, bl
or cl, bl
movzx ebx, byte [ebp - 0x10]
mov byte [ebp - 0x11], cl
movzx ecx, byte [ebp - 0xf]
shr cl, 7
add bl, bl
or cl, bl
movzx ebx, byte [ebp - 0xf]
mov esi, edi
shr esi, 3
add esi, dword [ebp + 0xc]
mov byte [ebp - 0x10], cl
movzx ecx, byte [ebp - 0xe]
xor byte [esi], al
mov al, byte [esi]
add esp, 4
shr cl, 7
add bl, bl
or cl, bl
movzx ebx, byte [ebp - 0xe]
mov byte [ebp - 0xf], cl
movzx ecx, byte [ebp - 0xd]
shr cl, 7
add bl, bl
or cl, bl
movzx ebx, byte [ebp - 0xd]
mov byte [ebp - 0xe], cl
movzx ecx, byte [ebp - 0xc]
shr cl, 7
add bl, bl
or cl, bl
movzx ebx, byte [ebp - 0xc]
mov byte [ebp - 0xd], cl
movzx ecx, byte [ebp - 0xb]
shr cl, 7
add bl, bl
or cl, bl
movzx ebx, byte [ebp - 0xb]
mov byte [ebp - 0xc], cl
movzx ecx, byte [ebp - 0xa]
shr cl, 7
add bl, bl
or cl, bl
movzx ebx, byte [ebp - 0xa]
mov byte [ebp - 0xb], cl
movzx ecx, byte [ebp - 9]
shr cl, 7
add bl, bl
or cl, bl
mov byte [ebp - 0xa], cl
mov cl, 7
sub cl, dl
mov dl, byte [ebp - 9]
shr al, cl
add dl, dl
inc edi
and al, 1
or al, dl
mov byte [ebp - 9], al
cmp edi, 0x80
jl 0x1009ce50
mov eax, dword [ebp - 4]
dec eax
mov dword [ebp - 4], eax
test eax, eax
jg 0x1009ce43
mov ebx, dword [ebp - 8]
mov eax, ebx
pop ebx
pop edi
shl eax, 7
pop esi
mov esp, ebp
pop ebp
ret
mov eax, dword [esi + 0xc]
xor eax, dword [edi]
mov ecx, dword [esi + 0x10]
xor ecx, dword [edi + 4]
mov edx, dword [esi + 0x14]
xor edx, dword [edi + 8]
mov dword [ebp - 0x28], eax
mov eax, dword [esi + 0x18]
xor eax, dword [edi + 0xc]
mov dword [ebp - 0x24], ecx
lea ecx, [ebp - 0x28]
mov dword [ebp - 0x1c], eax
mov eax, dword [ebp + 0xc]
push ecx
mov dword [ebp - 0x20], edx
call fcn.1009d660
lea ecx, [ebx - 1]
add esp, 4
add edi, 0x10
mov dword [ebp - 4], ecx
test ecx, ecx
jle 0x1009d09a
lea ebx, [eax + 8]
mov edx, dword [ebx - 8]
xor edx, dword [edi]
mov ecx, dword [edi + 8]
xor ecx, dword [ebx]
mov eax, dword [ebx - 4]
xor eax, dword [edi + 4]
mov dword [ebp - 0x28], edx
mov edx, dword [ebx + 4]
xor edx, dword [edi + 0xc]
mov dword [ebp - 0x20], ecx
lea ecx, [ebp - 0x28]
mov dword [ebp - 0x24], eax
add ebx, 0x10
lea eax, [ebx - 8]
push ecx
mov dword [ebp - 0x1c], edx
call fcn.1009d660
mov eax, dword [ebp - 4]
dec eax
add esp, 4
add edi, 0x10
mov dword [ebp - 4], eax
test eax, eax
jg 0x1009d021
mov ebx, dword [ebp - 8]
mov eax, ebx
pop ebx
pop edi
shl eax, 7
pop esi
mov esp, ebp
pop ebp
ret
mov dword [ebp - 4], ebx
test ebx, ebx
jle 0x1009d09a
mov eax, dword [ebp + 0xc]
sub edi, eax
mov edi, edi
lea edx, [edi + eax]
push edx
call fcn.1009d660
mov ecx, dword [ebp - 4]
dec ecx
add esp, 4
add eax, 0x10
mov dword [ebp - 4], ecx
test ecx, ecx
jg 0x1009d080
mov eax, ebx
pop ebx
pop edi
shl eax, 7
pop esi
mov esp, ebp
pop ebp
ret
pop edi
xor eax, eax
pop esi
mov esp, ebp
pop ebp
ret