Function at 0x510970
Capabilities:
Encode data using xor

Disassembly:
xchg esp, eax
in al, dx
push esp
call 0x71628a32
dec edx
inc edx
mov dl, cl
mov ecx, 0xc946f1b
pop ds
pop edx
and cl, cl
jb 0x4d8a68
or eax, 0xe1210087
add al, 0x8d
or byte [ecx + esi - 0x76bbf9c4], bh
ror byte [esi + 0x225003b1], cl
and dword [edx + 0x32], ecx
inc esp
test eax, 0x254c2325
inc ebx
mov ebx, ds
and al, 0x25
rcr dword [eax], 0x32
xchg ebp, eax
adc eax, 0x7d062190
daa
push 0x44
xchg byte [eax], bl
movsd dword es:[edi], dword [esi]
sub byte [esi + 0x40], bl
dec edx
sbb byte [ebp + 0x4a405e28], ah
enter 0x2faa, 0xffffffffffffffcc
pop esp
into
xor byte [ecx + 0x9d1e351], al
mov ecx, 0x607e4842
jle 0x4d8aca
int1
call 0xf10f908d
add dword [ebx - 0x28911e], 0x112a5706
xor byte fs:[ecx - 0x22], dh
xor byte fs:[ecx - 0x22], dh
add al, 0xdc
mov al, byte [eax]
jno 0x4d8a53
sbb eax, dword [ecx + 0x78]
inc esp
js 0x4d8acd
jno 0x4d8a87
dec esi
sbb dword [esi + 0x34], ecx
sbb byte [eax + 0x34ce2065], dl
sub ebx, dword [ebp + 4]
movsb byte es:[edi], byte [esi]
loop 0x4d8a7b
cwde
in al, 0x2d
dec esp
sub eax, 0x1ca060a9
in al, 0x2c
inc edx
out dx, eax
mov dword [0x54777776], eax
adc edx, edi
dec eax
movsb byte es:[edi], byte [esi]
iretd
sub al, 0x8c
push cs
invalid
pushal
mov esi, section.UPX1
lea edi, [esi - 0xad000]
mov dword [edi + 0xd80a0], 0xab9c1
push edi
or ebp, 0xffffffff
jmp 0x51099a
mov al, byte [esi]
inc esi
mov byte [edi], al
inc edi
add ebx, ebx
jne 0x5109a1
mov ebx, dword [esi]
sub esi, 0xfffffffc
adc ebx, ebx
jb 0x510990
mov eax, 1
add ebx, ebx
jne 0x5109b3
mov ebx, dword [esi]
sub esi, 0xfffffffc
adc ebx, ebx
adc eax, eax
add ebx, ebx
jae 0x5109c4
jne 0x5109d4
mov ebx, dword [esi]
sub esi, 0xfffffffc
adc ebx, ebx
jb 0x5109d4
dec eax
add ebx, ebx
jne 0x5109d0
mov ebx, dword [esi]
sub esi, 0xfffffffc
adc ebx, ebx
adc eax, eax
jmp 0x5109a8
xor ecx, ecx
sub eax, 3
jb 0x5109ec
shl eax, 8
mov al, byte [esi]
inc esi
xor eax, 0xffffffff
je 0x510a5e
sar eax, 1
mov ebp, eax
jmp 0x5109f7
add ebx, ebx
jne 0x5109f7
mov ebx, dword [esi]
sub esi, 0xfffffffc
adc ebx, ebx
adc ecx, ecx
add ebx, ebx
jne 0x510a04
mov ebx, dword [esi]
sub esi, 0xfffffffc
adc ebx, ebx
adc ecx, ecx
jne 0x510a28
inc ecx
add ebx, ebx
jne 0x510a14
mov ebx, dword [esi]
sub esi, 0xfffffffc
adc ebx, ebx
adc ecx, ecx
add ebx, ebx
jae 0x510a09
jne 0x510a25
mov ebx, dword [esi]
sub esi, 0xfffffffc
adc ebx, ebx
jae 0x510a09
add ecx, 2
cmp ebp, 0xfffffb00
adc ecx, 1
lea edx, [edi + ebp]
cmp ebp, 0xfffffffc
jbe 0x510a48
mov al, byte [edx]
inc edx
mov byte [edi], al
inc edi
dec ecx
jne 0x510a39
jmp 0x510996
mov eax, dword [edx]
add edx, 4
mov dword [edi], eax
add edi, 4
sub ecx, 4
ja 0x510a48
add edi, ecx
jmp 0x510996
pop esi
mov edi, esi
mov ecx, 0x64f9
mov al, byte [edi]
inc edi
sub al, 0xe8
cmp al, 1
ja 0x510a66
cmp byte [edi], 0x1d
jne 0x510a66
mov eax, dword [edi]
mov bl, byte [edi + 4]
shr ax, 8
rol eax, 0x10
xchg ah, al
sub eax, edi
sub bl, 0xe8
add eax, esi
mov dword [edi], eax
add edi, 5
mov eax, ebx
loop 0x510a6b
lea edi, [esi + 0x10c000]
mov eax, dword [edi]
or eax, eax
je 0x510af3
mov ebx, dword [edi + 4]
lea eax, [eax + esi + 0x112ac0]
add ebx, esi
push eax
add edi, 8
call dword [esi + 0x112bb0]
xchg ebp, eax
mov al, byte [edi]
inc edi
or al, al
je 0x510a98
mov ecx, edi
jns 0x510ad7
jp 0x510ad0
mov eax, dword [edi]
add edi, 4
mov eax, dword [eax + esi + 0x112ac0]
jmp 0x510ae6
movzx eax, word [edi]
inc edi
push eax
inc edi
mov ecx, 0xaef24857
push edi
dec eax
repne scasb al, byte es:[edi]
push ebp
call dword [esi + 0x112bb4]
or eax, eax
je 0x510aed
mov dword [ebx], eax
add ebx, 4
jmp 0x510ab5
call dword [esi + 0x112bb8]
popal
jmp 0x4d8a0c