Function at 0x478a70
Capabilities:
Encode data using xor

Disassembly:
push ebp
je 0x47933d
jne 0x47933d
mov dword [ebp - 0x28c], 1
push 0xad3770
push 0x1003ed48
push 0x51afb0
movsx eax, word [esi + 0x697e5cd2]
mov dword [0x111d04cc], ecx
push 0x114c3c68
mov dword [0x477bfc], eax
push 0xb399a8
adc dword [edx - 0x7d], ebx
mov eax, 0x4cd9c8
mov esi, dword [0x697b86b4]
mov al, byte [0xd2ab5f]
push 0xa57aec
xchg ecx, eax
movsd dword es:[edi], dword [esi]
scasd eax, dword es:[edi]
jb 0x478b45
scasd eax, dword es:[edi]
test al, 0x84
mov edx, esi
inc ecx
retf 0x54c2
jmp 0x478b45
mov cx, word [eax]
add eax, 2
test cx, cx
je 0x478c6d
jne 0x478c6d
push 0x697daae0
mov eax, 0x1058d01c
cmp byte [0xcf889e], 0
mov ebx, 0xbb721125
add ecx, 0x510
push 0x8c4af0
push 0x1001b9f0
mov dword [esi], 0x697a4944
cmp eax, 0x5e6280
mov dword [0xdac4b4], ecx
mov ecx, dword [eax + 0x220]
and byte [edx], al
add byte [eax], al
mov dword [0x10032598], eax
mov dword [ebp - 0x14], 0x10046ff5
and byte [eax - 0x865d815], dh
xor edi, dword [edx]
loope 0x478b93
pop edx
and eax, 0xe8bca542
cmp byte [ebp - 0x3b7d0000], al
or cl, ch
or al, byte [esi]
add byte [eax], al
push 0x1050f7bc
mov eax, dword [0x11553268]
imul ecx, ecx, 0xc
push 0x697db6b0
mov dword [0x418f94], eax
mov byte [edx + 0x14], bl
fadd qword [0x425d20]
movsx eax, byte [ebp + ebx - 0xc]
mov esp, 0xce0078da
mov eax, 0xca8e2b
mov dl, 0xad
mov word [esi + 0x78], gs
mov ecx, 0x30246784
pop ebp
pop ebp
push 0x478dd7
ret
jne 0x478b45
je 0x4790fa
jne 0x4790fa
mov ecx, 0x9c9cec
mov word [esi - 0x71735a00], cs
cmp dword [ebx + 0x42418], eax
mov eax, dword [ebp - 0x2c]
mov dword [0x4db020], edx
push 0x100d2854
push 0x56f478
mov dword [0x43e6cc], ecx
sub ecx, 0xbdc
mov ecx, dword [0x1152a10c]
push 0x114513e8
adc eax, dword [ebp + 0x11]
push 0xbf36f4
mov dword [esi + 0x10], 0x1115a1f0
mov eax, 0x1154b93c
mov eax, 0x114c64ec
push 0xa9bd60
mov dword [ebp - 0x45c], 3
mov eax, 0xa2fd94
mov dword [0x4aecd0], eax
ror dword [ecx + 0x4d], 1
jmp 0x478d2f
je 0x478cb7
sub edx, dword [ecx]
mov eax, 0xfccd3c
mov eax, dword [0x1032f720]
imul esi, dword [0xde184c]
mov eax, 0xfce1d4
mov ecx, 0x109e220
and edx, dword [0x1011f9e8]
call dword [0x10009540]
and dword [0x10047064], 0
ljmp 0x24c2
mov edx, dword [edx - 8]
sub edx, ecx
je 0x479238
jne 0x479238
mov dword [esi + 0x14], 0x7ffff0
mov dword [ebp - 0x10], 0x4a19c0
push 0x9b3
mov eax, 0x455cd4
push 0xb33b48
mov eax, 0xf41cd4
add byte [eax + 0xf41cd4], bh
mov ecx, 0x103f6b4c
mov ecx, dword [0x4ae8a0]
mov eax, 0x4b1a04
push 0xa3b6c8
push 0x10288884
add dword [ebp - 4], 0x28
or byte [eax + 0x8060408], al
movsb byte es:[edi], byte [esi]
stosb byte es:[edi], al
cmpsd dword [esi], dword es:[edi]
aaa
fisttp word [0xadbad383]
push edx
wait
add al, 0x2c
sti
push 0xa30004c2
xor dh, 0x11
adc byte [eax - 0x48], ch
mov edx, 0xe0680045
popfd
pushal
add bh, al
add al, 0x24
push 0xb8000001
xchg esp, eax
xchg byte [ebp + 0x10], dl
loop 0x478d9c
cmp al, 6
mov edx, 0xcbaf144e
mov al, byte [0xe8a3a6d0]
js 0x478dd5
clc
invalid
push 0x80070057
je 0x478f8f
jne 0x478f8f
mov dword [0x111fbff0], eax
mov esi, 0x1007a068
sar byte [edi - 0x33333400], 1
push 0xbbaa9c
push 0x434798
push 0x646490
push 0x494538
cmp edx, 0x189c
mov ecx, 0x100f7aa0
call dword [0x100b2358]
mov dword [0x1061e68c], eax
mov dword [0xe6b558], 0xa54130
mov ecx, dword [0xd02858]
mov eax, dword [0x112b372c]
and dword [ebx + 0x74], 0
push 0x65c
adc dword [eax - 0x2eeed286], ebp
push 0x114b23f8
push 0xaa0fc8
xchg edi, eax
add byte [ecx], al
cmp eax, 0x5b11c100
push edi
adc al, 0x9e
pop dword [eax + edi*8 + 0x230e990]
add byte [eax], al
jmp 0x4790fe
mov eax, edi
jmp 0x4793db
mov eax, 1
sub eax, dword [edx - 4]
je 0x478d6f
jne 0x478d6f
mov byte [0x52c3f2], al
mov dword [esi], 0x1146e398
mov dword [esi], 0xacde58
push 0x100fcee4
mov edx, dword [0xd122a8]
push 0xad6f4c
push 0x506c60
mov eax, 0x1056f708
mov dword [eax + 0x28c], ecx
mov dword [ebp - 0xfc], 0x69792940
mov byte [ebx + 0x64], al
push 0x10040f74
sbb dword [ecx + 0x54], 0x1f
cli
push 0xffffffffffffffe8
sbb al, 0xd3
clc
jmp [eax + 0x32]
call fcn.004062b0
push 0x478f32
ret
sub eax, edx
sar eax, 1
mov edx, dword [esi]
mov ecx, dword [edx - 0xc]
add ecx, eax
jns 0x478f32
jmp 0x478e40
push esi
push edi
mov edi, dword [ebp + 8]
mov esi, ecx
test edi, edi
jne 0x478ece
je 0x479385
jne 0x479385
mov dword [esi + 0x10], 0x111528b0
cmp ecx, dword [eax*8 + 0x411ec0]
push 0x103e39e8
push 0x11541f00
mov ecx, dword [0xf36cb8]
push 0xd86220
push 0xd78
fld dword [0x699b08ac]
push 0xad4210
push 0x875f30
cmp dword [0x4393a8], ebx
sub dword [0x69974b14], esi
lodsd eax, dword [esi]
sub al, byte [ecx + 0x44]
xchg esp, eax
or ch, byte [edx]
sub eax, 0xf1922a
and dword [ecx + 0x46], 0x8527f9f6
shr byte [eax - 0x27], 0x8a
inc edi
add bl, al
mov dword [0x459678], 0xc0000409
call dword [0xdf2768]
push 0x104b4160
mov eax, 0x1035eb3c
and dword [ebp - 0x18], 0xffbfffff
push edi
xor eax, 0x5f7217cc
pop esi
je 0x478bf9
jne 0x478bf9
push 0xad1d88
push 0x10091364
mov dword [0xe48efc], eax
add cl, byte [ebp - 0x18]
mov eax, dword [0x1153d180]
mov dword [ebp - 4], 0x697c6648
push 0x1003f4f0
add al, 0xc5
pop ecx
add eax, dword [0x3a4b8072]
out dx, al
cld
inc esp
inc edi
sbb dl, al
or eax, edx
push 0x479069
ret
mov ebp, esp
jmp 0x479158
lea eax, [edi + 4]
jmp 0x478ec9
lea edx, [eax + 2]
jmp 0x478b3a