Function at 0x645510
Capabilities:
Encode data using xor

Disassembly:
jne 0x614c0a
les ebp, [0xa8a5089f]
and eax, dword [edx]
jns 0x614c2b
xor al, 0x37
sub dl, byte [ecx - 0x7b]
xchg esp, eax
ja 0x614c1e
push ebp
xchg ebp, eax
sub byte [edi + 0x11e489ca], bh
aas
xchg esp, eax
mov bl, 0xbc
cmpsb byte [esi], byte es:[edi]
dec eax
push cs
push ecx
enter 0x4838, 0x38
xchg esp, eax
sub bl, byte [esi + 0x56]
or bh, dh
pop edi
mov dword [edx - 0x574ff0d2], esp
cmp dword [eax + 0x34975044], edx
scasd eax, dword es:[edi]
xchg esp, eax
and byte [eax + edx*2 - 0x69], al
xor al, 0xaf
sub byte [edx], 0x51
xchg edi, eax
js 0x614c55
push ecx
xchg edi, eax
pop ss
dec ebp
jg 0x614c7d
stosb byte es:[edi], al
cmp dl, byte [eax]
and ch, byte [eax - 0x6abf68bc]
sub byte [edx + 0x34], cl
xchg edi, eax
and bh, cl
add byte [edi], al
adc byte [edi + 0x4a1d544], bl
clc
stosd dword es:[edi], eax
cmp ebp, dword [eax + 0x2bc00da9]
daa
mov eax, esp
push dword [ebp - 0x64ef6bf9]
adc byte [edi + 0x5f], bl
dec eax
push ecx
cdq
or ebx, dword [ecx + 0x4f]
or ecx, eax
cmp byte [eax], 0xcf
test byte [eax], ah
push ebp
adc al, 0x32
ja 0x614c85
xchg esp, eax
add byte [esi], 0x1f
call dword [esi + 0x5e]
je 0x614c9a
aaa
hlt
cld
push ecx
push ecx
inc ebx
movsb byte es:[edi], byte [esi]
pop ss
inc edx
inc esi
test dword [ecx + ebx + 0x3d], edi
dec eax
in eax, 0x1b
test eax, 0xf3700c2e
push ebx
or al, 0x70
push ebx
enter 0xffffffffffff89ca, 0xffffffffffffffa8
scasd eax, dword es:[edi]
push 0xa72186a
push 0x18
jb 0x614ca8
add dword [eax], 0x839da3f
pop esp
lodsd eax, dword [esi]
pop ebx
mov ecx, 0x40e2022f
das
add ah, dl
inc eax
sub al, 0xf4
loope 0x614cea
sub ecx, dword [edx - 0x58f4a5fb]
dec eax
cmp byte [edx + ebx*8 + 0x483a4aef], 0xc0
dec esi
fdivr qword [0x14df3a51]
jne 0x614cdd
fdivr qword [edi]
dec eax
movsd dword es:[edi], dword [esi]
mov dl, byte [eax - 0x5fd6dfa9]
nop
scasd eax, dword es:[edi]
and bh, byte [ecx - 0x3c]
pop eax
daa
add al, 0x33
inc ebx
adc al, 0xb2
jb 0x614c8e
mov cl, 0x40
sbb byte [eax + 0x12], al
xor eax, 0x46490aa
sub al, 0x82
wait
shld dword [ebp - 0x16], esp, cl
adc eax, 0x5f97d4af
add al, 0x2c
sbb byte [ebx - 0x159a5af1], 0x15
scasd eax, dword es:[edi]
aam 0x97
pop edi
je 0x614d4a
sar byte [ecx], 0xcb
pop ecx
sbb byte gs:[ecx], ch
push ecx
invalid
test al, 0xb5
inc ebx
shr byte [edi + 0x2f], cl
xchg esp, eax
nop
pop ss
movsb byte es:[edi], byte [esi]
aaa
outsb dx, byte [esi]
pop es
invalid
pushal
mov esi, section.UPX1
lea edi, [esi - 0x19f000]
mov dword [edi + 0x215c10], 0xf9285310
push edi
or ebp, 0xffffffff
jmp 0x64553a
mov al, byte [esi]
inc esi
mov byte [edi], al
inc edi
add ebx, ebx
jne 0x645541
mov ebx, dword [esi]
sub esi, 0xfffffffc
adc ebx, ebx
jb 0x645530
mov eax, 1
add ebx, ebx
jne 0x645553
mov ebx, dword [esi]
sub esi, 0xfffffffc
adc ebx, ebx
adc eax, eax
add ebx, ebx
jae 0x645564
jne 0x645583
mov ebx, dword [esi]
sub esi, 0xfffffffc
adc ebx, ebx
jb 0x645583
dec eax
add ebx, ebx
jne 0x645570
mov ebx, dword [esi]
sub esi, 0xfffffffc
adc ebx, ebx
adc eax, eax
jmp 0x645548
add ebx, ebx
jne 0x64557f
mov ebx, dword [esi]
sub esi, 0xfffffffc
adc ebx, ebx
adc ecx, ecx
jmp 0x6455d5
xor ecx, ecx
sub eax, 3
jb 0x64559b
shl eax, 8
mov al, byte [esi]
inc esi
xor eax, 0xffffffff
je 0x64560a
sar eax, 1
mov ebp, eax
jmp 0x6455a6
add ebx, ebx
jne 0x6455a6
mov ebx, dword [esi]
sub esi, 0xfffffffc
adc ebx, ebx
jb 0x645574
inc ecx
add ebx, ebx
jne 0x6455b4
mov ebx, dword [esi]
sub esi, 0xfffffffc
adc ebx, ebx
jb 0x645574
add ebx, ebx
jne 0x6455c1
mov ebx, dword [esi]
sub esi, 0xfffffffc
adc ebx, ebx
adc ecx, ecx
add ebx, ebx
jae 0x6455b6
jne 0x6455d2
mov ebx, dword [esi]
sub esi, 0xfffffffc
adc ebx, ebx
jae 0x6455b6
add ecx, 2
cmp ebp, 0xfffffb00
adc ecx, 2
lea edx, [edi + ebp]
cmp ebp, 0xfffffffc
jbe 0x6455f4
mov al, byte [edx]
inc edx
mov byte [edi], al
inc edi
dec ecx
jne 0x6455e6
jmp 0x645536
mov eax, dword [edx]
add edx, 4
mov dword [edi], eax
add edi, 4
sub ecx, 4
ja 0x6455f4
add edi, ecx
jmp 0x645536
pop esi
mov edi, esi
mov ecx, 0xa781
mov al, byte [edi]
inc edi
sub al, 0xe8
cmp al, 1
ja 0x645612
cmp byte [edi], 0x2a
jne 0x645612
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 0x645617
lea edi, [esi + 0x241000]
mov eax, dword [edi]
or eax, eax
je 0x645686
mov ebx, dword [edi + 4]
lea eax, [eax + esi + 0x24d0a4]
add ebx, esi
push eax
add edi, 8
call dword [esi + 0x24d1dc]
xchg ebp, eax
mov al, byte [edi]
inc edi
or al, al
je 0x645644
mov ecx, edi
push edi
dec eax
repne scasb al, byte es:[edi]
push ebp
call dword [esi + 0x24d1e4]
or eax, eax
je 0x645680
mov dword [ebx], eax
add ebx, 4
jmp 0x645661
call dword [esi + 0x24d1e0]
mov ebp, dword [esi + 0x24d1e8]
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 0x6456ba
sub esp, 0xffffff80
jmp 0x614be8