Function at 0x52ab12
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x20
push esi
mov esi, dword [ebp + 8]
test byte [esi + 0x24], 1
je 0x52aed8
cmp byte [ebp + 0x10], 1
push edi
jne 0x52ab51
mov eax, dword [esi + 0x14]
add eax, 0xfffffffe
cmp eax, 5
ja 0x52aed7
jmp dword [eax*4 + 0x407a9c]
mov edi, dword [ebp + 0xc]
test edi, edi
jle 0x52aed7
cmp edi, 0xd
jge 0x52aed7
mov eax, dword [edi*4 + 0x768270]
dec edi
push ebx
push 0x1b7
mov dword [ebp - 0x18], edi
mov dword [ebp - 0x20], 0
mov dword [ebp - 0x10], eax
mov dword [ebp - 0x1c], 0
call fcn.005e8af6
mov bl, byte [ebp + 0x14]
cmp eax, 1
je 0x52ab9d
cmp bl, 1
jne 0x52ae53
mov eax, dword [edi*4 + 0x7682a4]
cmp eax, 8
jg 0x52abae
cmp dword [esi + 0x14], eax
jg 0x52abb7
cmp bl, 1
jne 0x52ae53
mov eax, dword [ebp - 0x10]
mov dword [ebp - 0x1c], eax
mov eax, dword [0x7682f0]
mov dword [0x779070], 0
mov dword [0x779074], 0xffffff
mov ecx, 0xff
mov edi, 0x779078
rep stosd dword es:[edi], eax
lea eax, [ebp - 4]
push eax
push esi
push 0x6c1be0
push 0x316
push 0x6c1b38
mov ecx, 0x77c500
mov dword [ebp - 0x20], 0x779070
call fcn.00528442
cmp bl, 1
jne 0x52ac9c
cmp dword [ebp - 4], 0x7d0
jbe 0x52ac4a
push 0
push 0
push 0
push 0
push 0
push 0x10006
push 8
push 0xa4
push esi
push esi
push 0x6c1be0
push 0x323
push 0x6c1b38
mov ecx, 0x77c340
call fcn.00527d72
cmp dword [esi + 0x14], 0x18
je 0x52ac7e
push 0
push 0
push 0
push 0
push 0
push 4
push 0x18
push 0xa9ac5ba4
mov dh, 0x21
xor byte [ecx], 0xf5
xor ebx, dword [eax - 0x6f9423c1]
jo 0x52accf
sub byte [ecx + eax*4], 0x2a
sti
add dword [ebx - 0x2a9279e2], esi
jl 0x52acde
insd dword es:[edi], dx
aad 0x7c
popal
cmp al, ah
pop esp
loopne 0x52acdc
push es
mov dl, byte [ecx - 0x1b3d5e31]
jle 0x52acd0
cmp al, 0x4e
retf
jmp 0x52ac79
dec ebp
add dword [ebx], ebp
push ecx
mov dh, 0xe6
xchg byte [ebp + 0x5bed8038], dl
test byte [ecx + ebp - 0x2c], 0xfe
aam 0xfe
or byte [esi - 0x3cab130], al
mov ebx, 0xcef7c3de
adc eax, 0x4c65ba0b
adc dword [0x8d90acb7], ecx
xor byte [ebp + esi + 0x44ba4f18], ch
sahf
popfd
ret
dec ecx
sbb dword [ebp*8 - 0x28151734], 0xfd2ae33d
push 0x764c6d7b
jbe 0x52ad4e
jnp 0x52ad4b
dec esp
jbe 0x52ad57
insb byte es:[edi], dx
fisttp dword [eax - 0x7c7784b3]
inc edx
xchg esp, eax
call 0xb29493fc
adc al, 0x59
hlt
mov dword [edx + 0x1213b09e], eax
pushal
movsb byte es:[edi], byte [esi]
mov byte [0x93e5bbd7], al
jecxz 0x52acb8
loope 0x52acae
push es
insb byte es:[edi], dx
arpl ax, bx
dec esi
mov dl, 0x97
cld
loop 0x52ad45
cmp esi, ecx
xchg byte [ecx], bl
push ds
cmp al, 0x38
jnp 0x52ac9e
push ebx
mov bl, 0x1e
inc ebx
mov al, 0xb9
ror byte [eax - 0x3e77dad2], 1
jle 0x52ad70
call 0xd51ebbd0
in eax, dx
push es
mov ebp, 0xa5462d54
pop ebp
inc eax
inc byte [esi]
push 0x4ddc6df5
adc byte [esi], bh
add eax, 0x109835a8
mov ebp, 0xfd8b3b39
cwde
adc byte [ebp - 0x274c4c7], bh
std
loope 0x52ad1b
insb byte es:[edi], dx
dec esp
aad 0xa5
mov cl, 0x2d
add eax, 0xa075f3cd
jne 0x52acf9
movsb byte es:[edi], byte [esi]
das
salc
jecxz 0x52ad8d
and al, 0x4e
adc byte [eax + 1], bl
jmp 0x73b7bc3f
imul ecx, dword [ecx], 0x13
sub eax, 0x76d22cca
out dx, eax
dec ebp
rcr dword [ebp - 0xb], 0xe
ror byte [ebp + 0x10], 1
mov ebp, 0x9857d400
fistp word [esi]
push ebp
pop eax
xlatb
fdivr qword [ecx - 0x5ab772cc]
xor al, 0x8d
dec eax
movsd dword es:[edi], dword [esi]
push eax
xor dword [eax + 0x4f], 0xb70abd72
lds ebp, [edi - 0x1ffb3ef7]
popfd
std
dec bh
out dx, eax
lds edx, [edx - 0x26]
xor eax, 0x3b960c2c
add ebx, dword [edi - 0x7b08f3bb]
sub eax, 0x63f2a44a
push ecx
invalid
fisubr dword [esi + 0x29922439]
dec esi
push ebx
jns 0x52ae6f
rcl dword [edi + ebx*2 - 0xa161b90]
rcl ch, cl
out dx, al
push ebp
mov edi, 0x7c012ea1
aas
mov eax, dword [0x5d00cd0b]
mov dword [ebp + 0x54a2ce88], ebx
popfd
adc dl, ah
mov dh, cl
into
mov byte [0xe2109d54], al
dec esi
scasb al, byte es:[edi]
mov eax, 0x54ae3133
xor ch, byte [ebp + 0xc456017]
mov eax, dword [0x4e18108e]
adc byte [eax], bl
dec esi
jg 0x52ae52
je 0x52ae30
sar byte [edi], cl
test al, 0x1a
invalid
push 0x66613fdc
jle 0x52ae68
fdivr qword [edi]
popal
jle 0x52ae68
loope 0x52aeec
insb byte es:[edi], dx
ret
push 0xc0d36ee2
invalid