Function at 0x54f970
Capabilities:
Encode data using xor

Disassembly:
push eax
add al, 0x5c
or byte [edx], cl
cwde
push ebx
mov cl, 0xe2
push ss
scasb al, byte es:[edi]
xor dword [esi - 0x41], esp
mov edi, 0x45085c88
dec ebp
jns 0x50ce4e
jo 0x50ce3f
clc
mov eax, dword [0xdf5277c3]
add dl, byte [edi + 0x61]
push esi
pop esi
push cs
clc
clc
pop esi
xor byte es:[edx], ch
pop edi
or byte [edx + 5], ch
pop ds
push es
push es
jbe 0x50cdf2
pop esi
pop ebx
ror byte [esp + eax*2 + 0x2c], cl
stosb byte es:[edi], al
sbb ch, bl
scasb al, byte es:[edi]
or ah, byte [esi]
adc byte [edx - 0x1ff5d41a], bl
sbb dword [edi], esp
sbb dword [ecx + 0x5b259542], ecx
fisub word [esi]
pop ds
fsubr qword [ecx - 0x41]
fcmove st(0), st(6)
pop ebp
or al, 0x33
dec dword [ecx - 0x6bf7cdc5]
imul edx, dword gs:[eax], 0x1af9f458
ret 0x8273
xor dh, byte [ebx + ebx*4 + 0x16]
retf
mov esi, 0x2b8024e
jb 0x50ce69
add eax, 0xb303290c
stosd dword es:[edi], eax
jl 0x50ce56
or al, 0x29
add esi, dword [ebx + 0x3df97cab]
or al, 0x14
cmp dword [ecx], 1
mov bh, byte [0x4ab5a008]
cmp eax, 0x3983140c
add dword [edx - 0x4a5ff7c3], ecx
dec edx
cmp ch, ch
les eax, [ecx]
dec edx
lahf
retf
pushal
mov esi, section.UPX1
lea edi, [esi - 0xe0000]
lea eax, [edi + 0x10c7bc]
push dword [eax]
mov dword [eax], 0xfa797612
push eax
push edi
or ebp, 0xffffffff
jmp 0x54f9a2
mov al, byte [esi]
inc esi
mov byte [edi], al
inc edi
add ebx, ebx
jne 0x54f9a9
mov ebx, dword [esi]
sub esi, 0xfffffffc
adc ebx, ebx
jb 0x54f998
mov eax, 1
add ebx, ebx
jne 0x54f9bb
mov ebx, dword [esi]
sub esi, 0xfffffffc
adc ebx, ebx
adc eax, eax
add ebx, ebx
jae 0x54f9cc
jne 0x54f9eb
mov ebx, dword [esi]
sub esi, 0xfffffffc
adc ebx, ebx
jb 0x54f9eb
dec eax
add ebx, ebx
jne 0x54f9d8
mov ebx, dword [esi]
sub esi, 0xfffffffc
adc ebx, ebx
adc eax, eax
jmp 0x54f9b0
add ebx, ebx
jne 0x54f9e7
mov ebx, dword [esi]
sub esi, 0xfffffffc
adc ebx, ebx
adc ecx, ecx
jmp 0x54fa3d
xor ecx, ecx
sub eax, 3
jb 0x54fa03
shl eax, 8
mov al, byte [esi]
inc esi
xor eax, 0xffffffff
je 0x54fa72
sar eax, 1
mov ebp, eax
jmp 0x54fa0e
add ebx, ebx
jne 0x54fa0e
mov ebx, dword [esi]
sub esi, 0xfffffffc
adc ebx, ebx
jb 0x54f9dc
inc ecx
add ebx, ebx
jne 0x54fa1c
mov ebx, dword [esi]
sub esi, 0xfffffffc
adc ebx, ebx
jb 0x54f9dc
add ebx, ebx
jne 0x54fa29
mov ebx, dword [esi]
sub esi, 0xfffffffc
adc ebx, ebx
adc ecx, ecx
add ebx, ebx
jae 0x54fa1e
jne 0x54fa3a
mov ebx, dword [esi]
sub esi, 0xfffffffc
adc ebx, ebx
jae 0x54fa1e
add ecx, 2
cmp ebp, 0xfffffb00
adc ecx, 2
lea edx, [edi + ebp]
cmp ebp, 0xfffffffc
jbe 0x54fa5c
mov al, byte [edx]
inc edx
mov byte [edi], al
inc edi
dec ecx
jne 0x54fa4e
jmp 0x54f99e
mov eax, dword [edx]
add edx, 4
mov dword [edi], eax
add edi, 4
sub ecx, 4
ja 0x54fa5c
add edi, ecx
jmp 0x54f99e
pop esi
pop edi
pop eax
mov dword [edi], eax
mov edi, esi
mov ecx, 0x7972
mov al, byte [edi]
inc edi
sub al, 0xe8
cmp al, 1
ja 0x54fa7e
cmp byte [edi], 0x2d
jne 0x54fa7e
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 al, bl
loop 0x54fa83
lea edi, [esi + 0x14b000]
mov eax, dword [edi]
or eax, eax
je 0x54faf2
mov ebx, dword [edi + 4]
lea eax, [eax + esi + 0x154620]
add ebx, esi
push eax
add edi, 8
call dword [esi + 0x15471c]
xchg ebp, eax
mov al, byte [edi]
inc edi
or al, al
je 0x54fab0
mov ecx, edi
push edi
dec eax
repne scasb al, byte es:[edi]
push ebp
call dword [esi + 0x154724]
or eax, eax
je 0x54faec
mov dword [ebx], eax
add ebx, 4
jmp 0x54facd
call dword [esi + 0x154720]
mov ebp, dword [esi + 0x154728]
lea edi, [esi - 0x1000]
mov ebx, 0x1000
push eax
push esp
push 4
push ebx
push edi
call ebp
lea eax, [edi + 0x21f]
and byte [eax], 0x7f
and byte [eax + 0x28], 0x7f
pop eax
push eax
push esp
push eax
push ebx
push edi
call ebp
pop eax
popal
lea eax, [esp - 0x80]
push 0
cmp esp, eax
jne 0x54fb26
sub esp, 0xffffff80
jmp 0x50cdcc