Function at 0x100522e0
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x2a4
mov eax, dword [0x101165b0]
xor eax, ebp
mov dword [ebp - 4], eax
mov eax, dword [ebp + 8]
push ebx
push esi
push edi
mov edi, dword [ebp + 0x18]
mov dword [ebp - 0x2a0], eax
mov eax, dword [ebp + 0xc]
mov dword [ebp - 0x298], ecx
mov ecx, dword [edi]
mov esi, eax
mov dword [ebp - 0x290], edx
lea edx, [ecx + ecx]
sub eax, ecx
sub esi, edx
sub esi, dword [ebp + 0x10]
mov dword [ebp - 0x2a4], eax
dec eax
push eax
mov dword [ebp - 0x288], 0
mov dword [ebp - 0x294], ecx
sub esi, 2
mov dword [ebp - 0x29c], eax
call fcn.10085e5d
mov ebx, eax
mov eax, dword [ebp - 0x29c]
push eax
call fcn.10085e5d
lea ecx, [ebp - 0x284]
push edi
push ecx
mov dword [ebp - 0x28c], eax
call sym.cis_cc_3.2.dll_HASH_Initialize
mov edx, dword [ebp + 0x14]
mov eax, dword [ebp - 0x290]
push edx
push eax
lea ecx, [ebp - 0x284]
push ecx
call sym.cis_cc_3.2.dll_HASH_Update_PCIS
lea edx, [ebp - 0x284]
push edx
lea eax, [ebp - 0x288]
push eax
push ebx
call sym.cis_cc_3.2.dll_HASH_Finalize
mov ecx, dword [ebp - 0x288]
push esi
lea edx, [ebx + ecx]
push 0
push edx
call fcn.10086410
mov eax, dword [ebp - 0x288]
mov ecx, dword [ebp - 0x298]
add eax, esi
mov esi, dword [ebp + 0x10]
mov dword [ebp - 0x288], eax
mov byte [ebx + eax], 1
mov eax, dword [ebp - 0x288]
inc eax
push esi
push ecx
lea edx, [ebx + eax]
push edx
mov dword [ebp - 0x288], eax
call fcn.10086490
add dword [ebp - 0x288], esi
mov eax, dword [ebp - 0x294]
mov esi, dword [ebp - 0x2a0]
add esp, 0x40
push eax
inc esi
push 0
push esi
call fcn.10086410
mov ecx, dword [ebp - 0x294]
mov edx, dword [ebp - 0x29c]
mov eax, dword [ebp - 0x28c]
push ecx
push edx
push eax
mov ecx, esi
call fcn.1004d750
add esp, 0x18
mov dword [ebp - 0x298], eax
test eax, eax
je 0x1005244a
push ebx
call fcn.10085a2f
mov ecx, dword [ebp - 0x28c]
push ecx
call fcn.10085a2f
mov eax, dword [ebp - 0x298]
add esp, 8
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.1008600b
mov esp, ebp
pop ebp
ret
mov edx, dword [ebp - 0x2a4]
dec edx
test edx, edx
jle 0x10052473
mov ecx, dword [ebp - 0x28c]
mov eax, ebx
sub ecx, ebx
mov dword [ebp - 0x290], edx
mov dl, byte [ecx + eax]
xor byte [eax], dl
inc eax
dec dword [ebp - 0x290]
jne 0x10052465
mov eax, dword [ebp - 0x288]
mov ecx, dword [ebp - 0x294]
mov edx, dword [ebp - 0x28c]
push eax
push ecx
push edx
mov ecx, ebx
call fcn.1004d750
mov edi, eax
add esp, 0xc
test edi, edi
je 0x100524c0
push ebx
call fcn.10085a2f
mov eax, dword [ebp - 0x28c]
push eax
call fcn.10085a2f
add esp, 8
mov eax, edi
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.1008600b
mov esp, ebp
pop ebp
ret
mov edi, dword [ebp - 0x294]
xor eax, eax
test edi, edi
je 0x100524e1
lea esp, [esp]
mov ecx, dword [ebp - 0x28c]
mov dl, byte [eax + ecx]
xor byte [esi + eax], dl
inc eax
cmp eax, edi
jb 0x100524d0
mov eax, dword [ebp - 0x29c]
mov esi, dword [ebp - 0x2a0]
push eax
lea ecx, [esi + edi + 1]
push ebx
push ecx
call fcn.10086490
push ebx
mov byte [esi], 0
call fcn.10085a2f
mov edx, dword [ebp - 0x28c]
push edx
call fcn.10085a2f
mov ecx, dword [ebp - 4]
add esp, 0x14
pop edi
pop esi
xor ecx, ebp
xor eax, eax
pop ebx
call fcn.1008600b
mov esp, ebp
pop ebp
ret