Function at 0x526290
Capabilities:
Encode data using xor

Disassembly:
sub esp, 0x34
push ebp
mov ebp, dword [esp + 0x3c]
xor ecx, ecx
push esi
test ebp, ebp
je 0x52667f
mov esi, dword [esp + 0x48]
test esi, esi
je 0x52667f
cmp dword [ebp], ecx
jne 0x5262bf
pop esi
mov eax, 0xffffe121
pop ebp
add esp, 0x34
ret
mov eax, dword [esp + 0x4c]
test eax, eax
jg 0x5262d5
mov eax, dword [esp + 0x54]
pop esi
mov dword [eax], ecx
mov eax, ecx
pop ebp
add esp, 0x34
ret
mov ecx, dword [ebp + 4]
cdq
and edx, 0x7f
add eax, edx
sar eax, 7
dec ecx
push ebx
push edi
mov dword [esp + 0x14], eax
cmp ecx, 4
ja case.0x5262f1.3
jmp dword [ecx*4 + 0x52668c]
mov edi, eax
test eax, eax
jle 0x52665f
mov ebx, dword [esp + 0x58]
mov ecx, dword [ebp + 0xc]
push ebx
push esi
push ecx
lea eax, [ebp + 0x10]
push eax
call fcn.005255d0
dec edi
add esp, 0x10
add esi, 0x10
add ebx, 0x10
test edi, edi
jg 0x526306
mov eax, dword [esp + 0x14]
mov edx, dword [esp + 0x5c]
pop edi
pop ebx
shl eax, 7
pop esi
mov dword [edx], eax
xor eax, eax
pop ebp
add esp, 0x34
ret
mov ebx, dword [esp + 0x4c]
test ebx, ebx
je 0x526499
mov edx, ebx
or edx, esi
mov dword [esp + 0x10], eax
test dl, 3
je 0x526416
test eax, eax
jle 0x52665f
lea edi, [esp + 0x34]
mov ecx, ebx
lea eax, [esp + 0x34]
sub edi, esi
sub ecx, eax
mov dword [esp + 0x48], ecx
jmp 0x526377
mov ecx, dword [esp + 0x48]
add ecx, edi
mov dword [esp + 0x18], ecx
lea eax, [ebx + 2]
mov ecx, 4
mov edx, dword [esp + 0x18]
movzx edx, byte [edx + esi]
xor dl, byte [esi]
add esi, 4
mov byte [edi + esi - 4], dl
movzx edx, byte [esi - 3]
xor dl, byte [eax - 1]
add eax, 4
mov byte [edi + esi - 3], dl
movzx edx, byte [esi - 2]
xor dl, byte [eax - 4]
mov byte [edi + esi - 2], dl
movzx edx, byte [esi - 1]
xor dl, byte [eax - 3]
sub ecx, 1
mov byte [edi + esi - 1], dl
jne 0x526385
mov eax, dword [esp + 0x58]
mov edx, dword [ebp + 0xc]
push eax
lea ecx, [esp + 0x38]
push ecx
push edx
lea eax, [ebp + 0x10]
push eax
call fcn.005255d0
mov eax, dword [esp + 0x68]
push 0x10
push eax
push ebx
call fcn.005216e0
mov eax, dword [esp + 0x2c]
add dword [esp + 0x74], 0x10
dec eax
add esp, 0x1c
sub edi, 0x10
mov dword [esp + 0x10], eax
test eax, eax
jg 0x526373
mov eax, dword [esp + 0x14]
mov edx, dword [esp + 0x5c]
pop edi
pop ebx
shl eax, 7
pop esi
mov dword [edx], eax
xor eax, eax
pop ebp
add esp, 0x34
ret
test eax, eax
jle 0x52665f
mov edi, dword [esp + 0x58]
mov edx, dword [esi + 4]
xor edx, dword [ebx + 4]
mov eax, dword [esi + 8]
xor eax, dword [ebx + 8]
mov ecx, dword [ebx]
xor ecx, dword [esi]
mov dword [esp + 0x38], edx
push edi
mov dword [esp + 0x40], eax
mov eax, dword [ebp + 0xc]
lea edx, [esp + 0x38]
mov dword [esp + 0x38], ecx
mov ecx, dword [esi + 0xc]
xor ecx, dword [ebx + 0xc]
push edx
push eax
lea eax, [ebp + 0x10]
push eax
mov dword [esp + 0x50], ecx
call fcn.005255d0
push 0x10
push edi
push ebx
call fcn.005216e0
mov eax, dword [esp + 0x2c]
dec eax
add esp, 0x1c
add esi, 0x10
add edi, 0x10
mov dword [esp + 0x10], eax
test eax, eax
jg 0x526422
mov eax, dword [esp + 0x14]
mov edx, dword [esp + 0x5c]
pop edi
pop ebx
shl eax, 7
pop esi
mov dword [edx], eax
xor eax, eax
pop ebp
add esp, 0x34
ret
mov ebx, dword [esp + 0x4c]
test ebx, ebx
jne 0x5264a6
pop edi
pop ebx
pop esi
mov eax, 0xffffe88f
pop ebp
add esp, 0x34
ret
mov dword [esp + 0x10], eax
test eax, eax
jle 0x52665f
lea eax, [esp + 0x34]
sub eax, ebx
mov dword [esp + 0x18], eax
lea eax, [esp + 0x35]
sub eax, ebx
mov dword [esp + 0x1c], eax
lea eax, [esp + 0x36]
sub eax, ebx
mov dword [esp + 0x20], eax
mov edi, ebx
lea eax, [esp + 0x37]
sub edi, esi
sub eax, ebx
mov dword [esp + 0x24], eax
jmp 0x5264e4
mov ebp, dword [esp + 0x48]
mov edx, dword [ebp + 0xc]
lea ecx, [esp + 0x34]
push ecx
push ebx
push edx
lea eax, [ebp + 0x10]
push eax
call fcn.005255d0
mov edx, dword [esp + 0x2c]
mov ecx, dword [esp + 0x28]
add edx, edi
mov dword [esp + 0x38], edx
mov edx, dword [esp + 0x30]
add edx, edi
mov dword [esp + 0x3c], edx
mov edx, dword [esp + 0x34]
add esp, 0x10
add ecx, edi
add edx, edi
lea eax, [ebx + 2]
mov dword [esp + 0x30], edx
mov ebp, 4
movzx edx, byte [ecx + esi]
xor dl, byte [esi]
add esi, 4
mov byte [edi + esi - 4], dl
mov edx, dword [esp + 0x28]
movzx edx, byte [edx + esi - 4]
xor dl, byte [esi - 3]
add eax, 4
mov byte [eax - 5], dl
mov edx, dword [esp + 0x2c]
movzx edx, byte [edx + esi - 4]
xor dl, byte [esi - 2]
mov byte [eax - 4], dl
mov edx, dword [esp + 0x30]
movzx edx, byte [edx + esi - 4]
xor dl, byte [esi - 1]
sub ebp, 1
mov byte [eax - 3], dl
jne 0x526526
mov ebp, dword [esp + 0x58]
push 0x10
push ebx
push ebp
call fcn.005216e0
mov eax, dword [esp + 0x1c]
dec eax
add ebp, 0x10
add esp, 0xc
sub edi, 0x10
mov dword [esp + 0x58], ebp
mov dword [esp + 0x10], eax
test eax, eax
jg 0x5264e0
mov eax, dword [esp + 0x14]
mov edx, dword [esp + 0x5c]
pop edi
pop ebx
shl eax, 7
pop esi
mov dword [edx], eax
xor eax, eax
pop ebp
add esp, 0x34
ret
mov dword [esp + 0x10], eax
test eax, eax
jle 0x52665f
mov ebx, dword [esp + 0x58]
lea edi, [esp + 0x35]
sub edi, esi
mov ecx, dword [esp + 0x4c]
mov edx, dword [ebp + 0xc]
lea eax, [esp + 0x34]
push eax
push ecx
push edx
lea eax, [ebp + 0x10]
push eax
call fcn.005255d0
mov ecx, dword [esp + 0x5c]
push 0x10
lea eax, [esp + 0x48]
push eax
push ecx
call fcn.005216e0
mov edx, ebx
add esp, 0x1c
lea ecx, [ebx + 2]
mov eax, esi
sub edx, esi
mov dword [esp + 0x48], 4
lea esp, [esp]
movzx ebx, byte [eax + edi - 1]
xor bl, byte [eax]
add eax, 4
mov byte [edx + eax - 4], bl
movzx ebx, byte [eax + edi - 4]
xor bl, byte [eax - 3]
add ecx, 4
mov byte [ecx - 5], bl
movzx ebx, byte [eax + edi - 3]
xor bl, byte [eax - 2]
mov byte [ecx - 4], bl
movzx ebx, byte [eax + edi - 2]
xor bl, byte [eax - 1]
sub dword [esp + 0x48], 1
mov byte [ecx - 3], bl
jne 0x526600
mov eax, dword [esp + 0x10]
mov ebx, dword [esp + 0x58]
dec eax
add ebx, 0x10
add esi, 0x10
sub edi, 0x10
mov dword [esp + 0x58], ebx
mov dword [esp + 0x10], eax
test eax, eax
jg 0x5265c0
mov eax, dword [esp + 0x14]
mov edx, dword [esp + 0x5c]
pop edi
pop ebx
shl eax, 7
pop esi
mov dword [edx], eax
xor eax, eax
pop ebp
add esp, 0x34
ret
pop edi
pop ebx
pop esi
mov eax, 0xffffe11d
pop ebp
add esp, 0x34
ret
pop esi
mov eax, 0xffffe88f
pop ebp
add esp, 0x34
ret