Function at 0x100847f0
Capabilities:
Encode data using xor

Disassembly:
sub esp, 0x30
mov eax, dword [0x103b2018]
xor eax, esp
mov dword [esp + 0x2c], eax
mov eax, dword [esp + 0x34]
push ebx
push esi
push edi
mov edi, dword [esp + 0x44]
mov esi, ecx
cmp dword [esi], 0
mov ebx, edx
mov dword [esp + 0x14], edi
je 0x1008482d
pop edi
pop esi
mov eax, 0xfffffffb
pop ebx
mov ecx, dword [esp + 0x2c]
xor ecx, esp
call fcn.10126cba
add esp, 0x30
ret
cmp dword [esi + 8], 0
je 0x1008484a
pop edi
pop esi
mov eax, 0xfffffffa
pop ebx
mov ecx, dword [esp + 0x2c]
xor ecx, esp
call fcn.10126cba
add esp, 0x30
ret
test ebx, ebx
je 0x10084b57
test eax, eax
jle 0x10084b57
cdq
and edx, 0x7f
add eax, edx
push ebp
mov ebp, eax
mov eax, dword [esi + 4]
sar ebp, 7
sub eax, 0
mov dword [esp + 0x14], ebp
je 0x10084b29
sub eax, 1
je 0x10084aa8
sub eax, 1
je 0x1008489a
pop ebp
pop edi
pop esi
or eax, 0xffffffff
pop ebx
mov ecx, dword [esp + 0x2c]
xor ecx, esp
call fcn.10126cba
add esp, 0x30
ret
mov eax, dword [esi + 0xc]
mov ecx, dword [esi + 0x10]
mov edx, dword [esi + 0x14]
mov dword [esp + 0x1c], eax
mov eax, dword [esi + 0x18]
mov dword [esp + 0x20], ecx
mov dword [esp + 0x24], edx
mov dword [esp + 0x28], eax
mov dword [esp + 0x10], ebp
test ebp, ebp
jle 0x10084a90
xor ebp, ebp
jmp 0x100848d4
mov edi, dword [esp + 0x18]
xor ebp, ebp
jmp 0x100848d4
mov edi, dword [esp + 0x18]
mov edx, dword [esp + 0x20]
mov eax, dword [esp + 0x24]
mov ecx, dword [esp + 0x1c]
mov dword [esp + 0x30], edx
lea edx, [esp + 0x2c]
mov dword [esp + 0x34], eax
mov dword [esp + 0x2c], ecx
mov ecx, dword [esp + 0x28]
push edx
mov eax, edx
push eax
mov dword [esp + 0x40], ecx
call fcn.100851d0
movzx eax, byte [esp + 0x34]
movzx ebx, byte [esp + 0x24]
add bl, bl
mov ecx, ebp
shr ecx, 3
add edi, ecx
mov edx, ebp
and edx, 7
and al, 0x80
mov cl, dl
shr al, cl
movzx ecx, byte [esp + 0x25]
shr cl, 7
or cl, bl
movzx ebx, byte [esp + 0x25]
mov byte [esp + 0x24], cl
movzx ecx, byte [esp + 0x26]
shr cl, 7
add bl, bl
or cl, bl
movzx ebx, byte [esp + 0x26]
mov byte [esp + 0x25], cl
movzx ecx, byte [esp + 0x27]
shr cl, 7
add bl, bl
or cl, bl
movzx ebx, byte [esp + 0x27]
mov byte [esp + 0x26], cl
movzx ecx, byte [esp + 0x28]
shr cl, 7
add bl, bl
or cl, bl
movzx ebx, byte [esp + 0x28]
mov byte [esp + 0x27], cl
movzx ecx, byte [esp + 0x29]
shr cl, 7
add bl, bl
or cl, bl
movzx ebx, byte [esp + 0x29]
mov byte [esp + 0x28], cl
movzx ecx, byte [esp + 0x2a]
shr cl, 7
add bl, bl
or cl, bl
movzx ebx, byte [esp + 0x2a]
mov byte [esp + 0x29], cl
movzx ecx, byte [esp + 0x2b]
shr cl, 7
xor byte [edi], al
mov al, byte [edi]
add bl, bl
or cl, bl
movzx ebx, byte [esp + 0x2b]
mov byte [esp + 0x2a], cl
movzx ecx, byte [esp + 0x2c]
shr cl, 7
add bl, bl
or cl, bl
movzx ebx, byte [esp + 0x2c]
mov byte [esp + 0x2b], cl
movzx ecx, byte [esp + 0x2d]
shr cl, 7
add bl, bl
or cl, bl
mov byte [esp + 0x2c], cl
movzx ecx, byte [esp + 0x2e]
add esp, 8
shr cl, 7
movzx ebx, byte [esp + 0x25]
add bl, bl
or cl, bl
movzx ebx, byte [esp + 0x26]
mov byte [esp + 0x25], cl
movzx ecx, byte [esp + 0x27]
shr cl, 7
add bl, bl
or cl, bl
movzx ebx, byte [esp + 0x27]
mov byte [esp + 0x26], cl
movzx ecx, byte [esp + 0x28]
shr cl, 7
add bl, bl
or cl, bl
movzx ebx, byte [esp + 0x28]
mov byte [esp + 0x27], cl
movzx ecx, byte [esp + 0x29]
shr cl, 7
add bl, bl
or cl, bl
movzx ebx, byte [esp + 0x29]
mov byte [esp + 0x28], cl
movzx ecx, byte [esp + 0x2a]
shr cl, 7
add bl, bl
or cl, bl
movzx ebx, byte [esp + 0x2a]
mov byte [esp + 0x29], cl
movzx ecx, byte [esp + 0x2b]
shr cl, 7
add bl, bl
or cl, bl
mov byte [esp + 0x2a], cl
mov cl, 7
sub cl, dl
mov dl, byte [esp + 0x2b]
shr al, cl
add dl, dl
inc ebp
and al, 1
or al, dl
cmp ebp, 0x80
mov byte [esp + 0x2b], al
jl 0x100848d0
mov eax, dword [esp + 0x10]
dec eax
mov dword [esp + 0x10], eax
test eax, eax
jg 0x100848c6
mov ebp, dword [esp + 0x14]
mov eax, ebp
pop ebp
pop edi
pop esi
shl eax, 7
pop ebx
mov ecx, dword [esp + 0x2c]
xor ecx, esp
call fcn.10126cba
add esp, 0x30
ret
mov eax, dword [esi + 0xc]
xor eax, dword [ebx]
mov ecx, dword [ebx + 4]
xor ecx, dword [esi + 0x10]
mov edx, dword [ebx + 8]
xor edx, dword [esi + 0x14]
mov dword [esp + 0x2c], eax
mov eax, dword [ebx + 0xc]
xor eax, dword [esi + 0x18]
mov dword [esp + 0x30], ecx
lea ecx, [esp + 0x2c]
push edi
push ecx
mov dword [esp + 0x3c], edx
mov dword [esp + 0x40], eax
call fcn.100851d0
dec ebp
add esp, 8
add ebx, 0x10
test ebp, ebp
jle 0x10084a8c
mov edx, dword [edi]
xor edx, dword [ebx]
mov eax, dword [edi + 4]
xor eax, dword [ebx + 4]
mov ecx, dword [edi + 8]
xor ecx, dword [ebx + 8]
mov dword [esp + 0x2c], edx
mov edx, dword [edi + 0xc]
xor edx, dword [ebx + 0xc]
mov dword [esp + 0x30], eax
add edi, 0x10
lea eax, [esp + 0x2c]
push edi
push eax
mov dword [esp + 0x3c], ecx
mov dword [esp + 0x40], edx
call fcn.100851d0
dec ebp
add esp, 8
add ebx, 0x10
test ebp, ebp
jg 0x10084ae5
jmp 0x10084a8c
mov dword [esp + 0x10], ebp
test ebp, ebp
jle 0x10084a90
push edi
push ebx
call fcn.100851d0
mov eax, dword [esp + 0x18]
dec eax
add esp, 8
add ebx, 0x10
add edi, 0x10
mov dword [esp + 0x10], eax
test eax, eax
jg 0x10084b35
jmp 0x10084a90
mov ecx, dword [esp + 0x38]
pop edi
pop esi
pop ebx
xor ecx, esp
xor eax, eax
call fcn.10126cba
add esp, 0x30
ret