Function at 0x52abd2
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
sub esp, 0x4c
mov eax, dword [ebp + 8]
xor edx, edx
mov dword [esp + 0x20], ecx
inc edx
mov ecx, dword [ebp + 0xc]
push ebx
push esi
xor ebx, ebx
mov dword [esp + 0x38], edx
mov esi, dword [ecx + 8]
and dword [esp + 0x10], ebx
and dword [esp + 0x34], ebx
push edi
mov dword [esp + 0x10], esi
xor edi, edi
or esi, 0xffffffff
mov dword [esp + 0x20], esi
mov dword [esp + 0x28], esi
mov dword [esp + 0x24], esi
mov dword [esp + 0x1c], esi
mov dword [esp + 0x18], esi
mov dword [esp + 0x30], esi
cmp eax, 0x15
je 0x569491
cmp eax, 0x1d
ja 0x52ac41
movzx eax, byte [eax + 0x405ac0]
jmp dword [eax*4 + 0x405a8c]
mov eax, dword [esp + 0x10]
lea edx, [ebx + 6]
cmp eax, edx
ja 0x56957c
lea edx, [ebx + 5]
cmp eax, edx
ja 0x569594
lea edx, [ebx + 4]
cmp eax, edx
jbe 0x52ac78
mov eax, dword [ebp + 0xc]
mov ecx, dword [eax + 4]
mov ecx, dword [ecx + edx*4]
call fcn.00530825
mov dword [esp + 0x20], eax
mov eax, dword [esp + 0x10]
lea edx, [ebx + 3]
cmp eax, edx
jbe 0x52ac93
mov eax, dword [ebp + 0xc]
mov ecx, dword [eax + 4]
mov ecx, dword [ecx + edx*4]
call fcn.00530825
mov esi, eax
mov eax, dword [esp + 0x10]
lea ecx, [ebx + 2]
cmp eax, ecx
jbe 0x52acb0
mov eax, dword [ebp + 0xc]
mov eax, dword [eax + 4]
mov ecx, dword [eax + ecx*4]
call fcn.00530825
mov dword [esp + 0x24], eax
mov eax, dword [esp + 0x10]
lea ecx, [ebx + 1]
cmp eax, ecx
jbe 0x52acca
mov eax, dword [ebp + 0xc]
mov ecx, dword [eax + 4]
mov ecx, dword [ecx + ebx*4 + 4]
call fcn.00530825
mov dword [esp + 0x28], eax
sub esp, 0x10
lea eax, [esp + 0x40]
mov ecx, esp
push eax
and dword [ecx + 8], 0
call fcn.0053539e
mov ebx, dword [esp + 0x24]
push edi
push dword [esp + 0x2c]
push dword [esp + 0x34]
push dword [esp + 0x3c]
push esi
push dword [esp + 0x48]
push dword [esp + 0x50]
push ebx
push dword [ebp + 8]
call fcn.0052ad9c
mov edi, dword [ebp + 0x10]
mov esi, eax
mov ecx, edi
call fcn.0053225e
mov ecx, edi
mov dword [edi + 0xc], 1
mov dword [edi], esi
call fcn.00530825
test eax, eax
je 0x5695af
cmp dword [ebp + 8], 0x1d
je 0x52ad31
push ebx
call fcn.005450d2
pop ecx
xor esi, esi
lea ecx, [esp + 0x30]
call fcn.0053225e
pop edi
mov eax, esi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0xc
sbb al, byte [edx + 0x65]
and dl, al
and al, 0xa6
stc
mov bh, 0xa4
mov byte [0x31a5f4a3], al
push eax
ror byte [eax - 0x2ed40df7], cl
mov byte [ecx], cl
sub edx, ecx
sbb eax, 0xc255b120
call 0xb087b809
mov es, word [ecx + 0x58]
push ecx
mov byte [0xcd967436], al
cmp ecx, dword [edx + edi*4]
insb byte es:[edi], dx
pop eax
xchg esp, eax
mov dword [eax + 0x18], ecx
stc
jbe 0x569428
adc eax, 0x620b5023
pop esi
sbb cl, byte [eax]
mov byte [0x1c18fd52], al
jle 0x56941d
sal dword ss:[esi - 0x24], 0xb8
sal dword [esi - 0x24], 0xb8
adc ebx, dword [edx + eax*8 + 0x64032ae]
fcmovbe st(0), st(2)
xor dl, bh
dec eax
xchg ecx, eax
cmpsb byte [esi], byte es:[edi]
fmul dword fs:[edi - 6]
loope 0x56945d
outsb dx, byte [esi]
push cs
jmp 0x7de15bf2
xchg edx, eax
je 0x569416
int 0x58
add al, 0xf2
inc esi
dec esp
dec eax
mov dh, 0xcb
pop eax
xchg esp, ebx
stosd dword es:[edi], eax
cmpsb byte [esi], byte es:[edi]
ret 0xfe75
imul edi, dword [eax - 0x510576fc], 0xf6bc5a9d
mov ch, 0x16
pop ecx
add al, 0x89
cli
scasb al, byte es:[edi]
popfd
pop edx
mov esp, 0x5916b5f6
fdiv st(2), st(0)
sbb eax, dword [ebp - 0x5b002802]
loopne 0x5695ae
iretd
xchg ecx, eax
ret 0x31
inc esi
hlt
adc dword [edx + 0x70], eax
mov bl, 0xa3
add al, 0x2f
or byte [eax], 0x96
inc edx
jo 0x569565
mov dword [0x8802f04], eax
xchg esi, eax
mov byte [0xc84760b1], al
and al, 0x7d
out dx, eax
in eax, dx
jg 0x569563
jb 0x569633
push ss
sbb byte [esi + ecx*8 + 0x75], dl
stosd dword es:[edi], eax
sub dword [edi], edx
movsb byte es:[edi], byte [esi]
in al, dx
les edx, [0x896bf313]
fcomp qword [edi + 0x4d]
push 0xc80e1f25
int1
stc
enter 0x7a06, 8
pop esp
pop edi
jo 0x56960d
int3
stc
sub ecx, dword [eax]
aam 0x92
cmpsd dword [esi], dword es:[edi]
aad 0x58
xor al, 0x28
cmpsb byte [esi], byte es:[edi]
xor ecx, dword [ebx + ebx*2 - 0xf]
imul esi, dword [ecx + 0xd], 0xe975e829
insb byte es:[edi], dx
outsd dx, dword [esi]
daa
adc byte [ecx], ch
cmc
mov al, byte [edi]
popfd
scasd eax, dword es:[edi]
bound ebp, qword [ebp - 0x383a3fd0]
shl byte [ebx + 0x4de034b8], 1
xchg esp, eax
and eax, 0x5169f074
call 0xbd031c59
and al, dl
push edx
cld
mov dh, 0xc7
pop esp
test dword [edx + ecx*2 + 0x7573f474], ebp
clc
mov eax, dword [0x14d4c4a6]
dec eax
std
insb byte es:[edi], dx
jl 0x5696a0
invalid
aad 0xfb
cmc
scasb al, byte es:[edi]
lahf
mov ah, 0xf2
pop esi
sbb ah, dh
inc edx
dec ebx
jge 0x569667
jl 0x5696b7
test dword [edi - 0x27], esp
sbb eax, 0x3dc09e95
scasd eax, dword es:[edi]
aad 0xe4
mov byte [edx - 0x4e], 0xb8
cdq
xor eax, 0x6302691d
push edi
sbb eax, 0x57630269
popfd
in al, 0x7a
lodsd eax, dword [esi]
wait
sub al, 0xf8
mov dl, dl
rcl dword [esi - 0x39], 0xb8
leave
pop ebp
mov dl, 0x2b
jo 0x569681
and eax, 0xac995286
ja 0x5696a3
jno 0x5696eb
out dx, al
xor al, 0xd3
cmp byte [ecx + edx*8 + 0x52f24598], bh
aas
sbb edi, dword [eax + 2]
test eax, 0xfe425bf6
add al, 0x35
mov ch, byte [eax]
insb byte es:[edi], dx
mov dh, byte [edx]
imul eax, edx, 0x71
call 0x3cfcc521
dec eax
or al, 0xc8
xor dword [edx + eax], ebp
xchg esp, eax
popal
test eax, 0xa3588d03
sbb byte [ecx], 0xad
invalid
dec esi
loope 0x569729
enter 0xffffffffffffe948, 0x40
fsubr dword [eax - 0x3b97ed78]
xchg ebp, eax
jmp 0x5696f2
push cs
push es
or byte [ebx], al
push ebx
and byte [esi], ch
adc dword [edi + 0x1096df90], edi
fsubr qword ds:[edx + esi*2]
xor dword [eax], esp
xchg dword [ecx], ecx
cmp al, 0x42
adc byte [edx + 0x42], 0x92
push edx
jecxz 0x569702
cwde
mov byte [0x54e76a3e], al
mov byte [esp + ecx*8 + 0x5a], dl
pop edx
inc ebp
pop es
sbb byte [edx], bl
rcl byte [ecx], 0xb
xor bh, al
push edi
adc dl, byte [edx + 0x2eebf28b]
popal
lds ebp, [eax - 0x19]
xchg edi, eax
loop 0x569781
add esi, ebp
pop es
lodsd eax, dword [esi]
mov ecx, 0x279a8fc9
jno 0x569704
mov bh, 0x47
inc edi
xchg byte [edx + 0x18], al
dec ebx
nop
jno 0x56974c
mov byte [0xa272aa78], al
push ds
pop esp
or eax, 0x82eb66f3
mov cl, 0x2c
wait
xor dl, bl
popal
xlatb
push eax
stosd dword es:[edi], eax
mov esp, 0x72a38e76
sbb al, 0xac
daa
adc dword [esi - 0x46], ecx
and eax, 0xdebb1ca2
or eax, 0xce579944
add eax, 0x90db9769
jl 0x56979b
imul edx, dword [edi + 0x147c90db], 0xd8131b3a
cmp bl, byte [ebx]
adc ebx, eax
push esp
ljmp 0x15ef
push 0x951b015d
inc esp
mov ah, 0x73
jmp 0x5697b7
lahf
pushal
in al, dx
into
and ecx, dword [edx]
xchg edx, eax
sub bl, byte [ebx]
stosb byte es:[edi], al
dec eax
movsb byte es:[edi], byte [esi]
aaa
mov eax, dword [0xec15c073]
mov byte [edx + 0x25], dh
add byte [edx], al
mov dword ds:[0xaeeb929d], eax
push edx
mov ch, 0x48
daa
ret 0x5828