Function at 0x47d4ab
Capabilities:
Encode data using xor

Disassembly:
push esp
daa
push es
add byte [eax], cl
pop edx
add byte [esi + 0x2e005402], bh
add bl, byte [ecx]
sbb dword [eax + eax], eax
or dh, byte [ecx + ecx]
add byte [edx], cl
push edx
push es
jo 0x47d4ad
add dword [esi], eax
add al, dl
outsb dx, byte [esi]
pop es
add byte [edx], ch
add byte [eax], al
add byte [eax], ch
cmp dword [edi + 7], esp
add cl, bl
outsb dx, byte [esi]
pop es
add byte [edx + ecx*8], al
add cl, byte [eax]
add byte [eax], al
adc dword [edx], ecx
add al, byte [eax]
or dl, byte [edx + 6]
xor byte [esi - 0xffffa13], cl
outsb dx, byte [esi]
pop es
add byte [eax], ch
stc
outsb dx, byte [esi]
pop es
add bh, bh
outsb dx, byte [esi]
pop es
add byte [edx], al
push cs
daa
push es
add byte [edx], al
dec esi
add al, byte [eax]
add byte [ecx], dl
add al, 1
add byte [edx + eax*2], al
add byte [eax], al
mov gs, ebp
add eax, 0x76f1400
add byte [eax], ch
sbb eax, 0xdf00076f
adc byte [edi], al
add byte [esi], al
push cs
mov ah, byte [edi]
push es
add byte [eax], ch
sub al, byte [eax]
add byte [eax + 0x2aa064], dl
add byte [eax + 0x1041100], dl
add byte [edx], al
add byte [eax], al
mov gs, ebp
add eax, 0x76f4000
add byte [eax], ch
dec ecx
outsd dx, dword [esi]
pop es
add bh, bl
adc byte [edi], al
add byte [esi], al
push cs
das
or dword [esi], eax
add byte [eax], ch
sub al, byte [eax]
add byte [eax + 0x64], al
mov al, byte [0x4000002a]
add byte [ecx], dl
add al, 1
add byte [edx], al
add byte [eax], al
mov gs, ebp
add eax, 0x76f6c00
add byte [eax], ch
jne 0x47d5de
pop es
add bh, bl
adc byte [edi], al
add byte [esi], al
push cs
mov byte [0x2c000622], al
mov al, byte [0x5000002a]
mov al, byte fs:[0x5000002a]
add byte [ecx], bl
sbb al, byte [esi]
add byte [ebx], cl
jb 0x47d596
loopne 0x47d596
jo 0x47d597
pushal
add edx, dword [eax + 2]
add dh, byte [eax]
call 0xa447db9e
outsd dx, dword [esi]
pop es
add byte [edx], dh
add byte [eax], al
add byte [eax], ch
lodsd eax, dword [esi]
outsd dx, dword [esi]
pop es
add dh, dl
xor al, ch
add dword [esi], eax
add byte [edi + ebp*2 + 0x320007], ah
add byte [eax], al
sub byte [ebp - 0x29fff891], ch
outsd dx, dword [esi]
pop es
add byte [eax], dl
push cs
cmpsd dword [esi], dword es:[edi]
daa
push es
add byte [esi], ch
jne 0x47d5dc
push es
add byte [esi], ch
mov byte [esi], ah
push es
add byte [esi], ch
wait
push es
add byte [esi], ch
scasb al, byte es:[edi]
push es
add byte [esi], ch
shl dword [esi], 6
add byte [esi], ch
xlatb
push es
add byte [esi], ch
in eax, dx
push es
add byte [eax], dl
pop esi
add dh, dl
add dh, byte [edx]
add al, 0x32
xor cl, byte [eax + ecx*4]
or al, 0x88
push cs
adc byte [esi], ah
and al, 0xc
add byte [ecx], bl
sbb dword [eax + eax], eax
or dh, byte [ecx + ecx]
add byte [edx], cl
push edx
push es
jo 0x47d5dd
add dword [esi], eax
add byte [eax], al
jo 0x47d602
add byte [edx], ch
add byte [eax], al
add byte [eax], ch
cmp dword [edi + 7], esp
pop es
add byte [ecx], cl
jo 0x47d60f
add byte [esi + edx*8], al
add cl, byte [eax]
add byte [eax], al
adc dword [eax], edx
add al, 0
add byte [ecx], dl
adc byte [eax + eax], al
adc byte [eax + ecx], dh
add byte [eax], dl
push edx
or al, 0x70
mov gs, ebp
add eax, 0x7702400
add byte [eax], ch
stc
outsb dx, byte [esi]
pop es
add byte [0x2000770], ch
bound eax, qword [edx]
adc dword [ecx + eax], eax
add byte [edx + eax*2], al
add byte [eax], al
mov gs, ebp
add eax, 0x7704000
add byte [eax], ch
lds eax, [edi + eax]
add byte [ecx + 0x70], cl
pop es
add byte [edx], al
sbb byte [eax], al
adc dword [ecx + eax], eax
add byte [edx + eax*2], al
add byte [eax], al
mov gs, ebp
add eax, 0x7705c00
add byte [eax], ch
lds eax, [edi + eax]
add byte [ebp + 0x70], ah
pop es
add byte [edx], al
push ds
add byte [ecx], bl
sbb eax, dword [esi]
add byte [esp + esi], cl
adc byte [eax], al
or al, 0x92
or byte [eax + 7], dh
pushal
push es
push eax
call 0x8447dc7e
jo 0x47d686
add byte [edx], al
add byte [eax], al
sub byte [ebp - 0x65fff890], cl
jo 0x47d693
jo 0x47d68f
add byte [edx + 0x4000770], bl
or al, 0xb0
push 0x34500001
mov al, byte [0x7000002a]
or dl, byte [ebp + 3]
add bh, byte [eax]
add al, 0x2c
add byte [esp + ecx], al
mov al, 0x68
add dword [eax], eax
push eax
xor al, 0xa0
sub al, byte [eax]
add byte [eax + 0xa], dh
push ebp
add eax, dword [edx]
cmp byte [esp + ebp], al
add cl, byte [eax + eax + 0x2e]
add al, byte [eax]
add byte [ecx], dl
add al, 1
add byte [edx + eax*2], al
add byte [eax], al
mov gs, ebp
add eax, 0x770b800
add byte [eax], ch
lds eax, [edi + eax]
add byte [esi], dl
sbb eax, 7
add byte [ecx], dl
adc al, 8
add byte [esp], dl
or dword [eax], eax
adc al, 0x54
or byte [eax], al
adc al, 0x34
pop es
add byte [edx + esi], dl
adc byte [eax - 0x72], dh
in eax, dx
add eax, 0x770e000
add byte [eax], ch
jmp 0x247de56