Function at 0x40e120
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x2c
cmp byte [ecx + 0x169], 0
push ebx
lea edx, [ecx + 0x160]
push esi
push edi
mov dword [ebp - 0x28], 0
mov dword [ebp - 0x20], 0
mov dword [ebp - 0x1c], 1
mov dword [ebp - 4], edx
jne 0x477c16
mov ebx, dword [edx + 4]
cmp dword [ebx + 0x2c], 8
mov edi, dword [ebx + 0xc]
mov dword [ebp - 8], edi
je 0x477c21
mov eax, dword [ebx + 0x1c]
cmp eax, 5
je 0x477c5a
cmp eax, 0xf
je 0x477ce6
mov eax, dword [edi + 0xc]
lea esi, [ebx + 0x20]
cmp eax, 1
jne 0x40e315
mov eax, dword [esi + 0xc]
cmp eax, 1
jne 0x477e9e
mov ecx, dword [edi]
mov eax, dword [esi]
lea edx, [eax + ecx]
mov dword [ebp - 0xc], edx
cdq
mov dword [ebp - 8], eax
mov eax, ecx
mov dword [ebp - 0x14], edx
mov ecx, dword [ebp - 0x14]
cdq
add dword [ebp - 8], eax
mov eax, dword [ebp - 0xc]
adc ecx, edx
cdq
cmp eax, dword [ebp - 8]
jne 0x477e8a
cmp edx, ecx
jne 0x477e8a
mov eax, dword [ebp - 0xc]
mov dword [edi], eax
mov edx, dword [ebp - 4]
mov ecx, dword [edi + 8]
test ecx, ecx
jne 0x477ec0
mov ecx, dword [ebp - 0x20]
test ecx, ecx
jne 0x477ed5
mov eax, dword [ebp - 0x1c]
cmp eax, 5
jge 0x477eea
fldz
mov dword [ebp - 0x1c], 3
fst qword [ebp - 0x28]
mov ecx, dword [esi + 0xc]
mov eax, ecx
shl eax, 6
mov eax, dword [eax + 0x4bb81c]
cmp eax, 3
jne 0x477fb7
cmp ecx, 1
jne 0x478069
fild dword [esi]
fcompp
fnstsw ax
test ah, 5
jnp 0x478384
mov ecx, dword [ebx + 0x1c]
mov eax, ecx
shl eax, 4
add eax, dword [edi + 0xc]
mov eax, dword [eax*4 + 0x4bb810]
cmp eax, 1
jne 0x40e2dc
cmp ecx, 1
jne 0x478214
mov eax, dword [ebx + 0x10]
mov dword [ebp - 8], eax
mov esi, eax
mov eax, dword [edi + 0xc]
cmp eax, 1
jne 0x4782c5
mov eax, dword [edi]
cmp esi, eax
jl 0x40e297
mov ecx, dword [ebx + 4]
mov eax, dword [ebp + 0xc]
inc ecx
mov dword [eax], ecx
mov ecx, dword [ebp - 0x20]
test ecx, ecx
jne 0x4783a4
mov eax, dword [ebp - 0x1c]
cmp eax, 5
jge 0x4783b6
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 8
mov edx, dword [ebp - 4]
cmp byte [edx + 9], 0
jne 0x478365
cmp byte [edx + 8], 0
jne 0x40e34f
mov esi, dword [edx + 4]
mov edi, dword [esi + 0x30]
test esi, esi
je 0x40e2d1
lea ecx, [esi + 0x20]
call fcn.00412c20
lea ecx, [esi + 0x10]
call fcn.00412c20
push esi
call fcn.0041f55e
mov edx, dword [ebp - 4]
add esp, 4
dec dword [edx]
mov dword [edx + 4], edi
mov byte [edx + 9], 0
jmp 0x40e274
sub eax, 2
cmp eax, 7
ja case.0x40e2e4.5
jmp dword [eax*4 + 0x40e35c]
lea ecx, [ebx + 0x10]
call fcn.00412cd0
fstp qword [ebp - 0x18]
mov ecx, edi
call fcn.00412cd0
fcomp qword [ebp - 0x18]
fnstsw ax
test ah, 0x41
je 0x40e294
mov ecx, dword [ebx + 4]
mov eax, dword [ebp + 0xc]
inc ecx
mov dword [eax], ecx
jmp 0x40e274
sub eax, 2
cmp eax, 9
ja case.0x40e321.5
jmp dword [eax*4 + 0x40e37c]
mov ecx, esi
call fcn.00412cd0
fadd qword [edi]
fstp qword [edi]
jmp 0x40e1cd
mov ecx, edi
call fcn.0041d332
mov ecx, esi
call fcn.00412cd0
fadd qword [edi]
fstp qword [edi]
jmp 0x40e1cd
dec dword [edx]
mov byte [edx + 9], 1
jmp 0x40e274
cmp bl, byte [edi + 0x6ec26f8c]
pop es
ja 0x477cef
mov al, 0x81
leave
pushfd
mov edi, 0xfb0cf27e
push 0xe25b99a
and esp, dword [ebx + 0x3d]
popal
mov cl, 0xe4
imul ecx, dword [ebx - 0x4b], 0xfcd3931f
pop ds
xchg ebx, eax
sar esp, cl
and ch, dh
jp 0x477cd5
add dword [esi + 0x6b3e658d], edi
imul esi, dword ds:[edi], 0x62
mov ch, 0x6a
pop ebp
xchg ebx, eax
fmul dword [ecx + 0x60]
aaa
bound esi, qword [ebp - 0x276ca296]
dec ecx
pushal
loopne 0x477d7f
int1
test al, 0x11
jle 0x477d49
salc
invalid
daa
jb 0x477cfb
outsb dx, byte [esi]
and ah, dl
ljmp 0xbbc
fcomp qword [edi - 0x78f443eb]
pop ebp
std
inc esp
jle 0x477cfd
outsd dx, dword [esi]
sbb al, 6
stosd dword es:[edi], eax
insd dword es:[edi], dx
test dword [edx], 0x80e1cf8a
mov byte [0xa6c4edcb], al
add al, 0xaf
or cl, byte [edx - 0x5d7f1e31]
retf
iretd
scasd eax, dword es:[edi]
jmp 0x477d4b
fisubr word [ebx - 0x28]
pop edi
push 0x3c0ff10d
inc edi
mov ch, 0xf6
push ebp
shr byte [edx + 0x5e], 1
jo 0x477d38
insb byte es:[edi], dx
jo 0x477da9
bound edx, qword [edx]
bswap edx
jbe 0x477d55
invalid
and ch, ch
out 0xa4, al
je 0x477d30
push edx
mov esp, 0xccfc41ef
into
push eax
and edx, dword [ebx + esi]
ljmp 0xacb8
inc edx
aaa
das
or byte [eax - 0x36], bl
pop ebp
iretd
push esi
imul ecx, ecx, 0xffffffb6
test eax, 0x60e4a029
pop ecx
xor ecx, edx
inc edx
sub ecx, dword [ecx + 0x1ce5641c]
mov dword [0x126b24b9], eax
xchg ch, bl
das
jnp 0x477e3e
jae 0x477e1d
jnp 0x477e97
push cs
in al, dx
nop
out 0xcc, eax
inc edi
sub ecx, dword [esi - 0x19a1e6e6]
sbb bh, byte [edi]
pop edi
cmpsd dword [esi], dword es:[edi]
lea esi, [eax + 0x30526c19]
and eax, 0x8e162ec0
insb byte es:[edi], dx
push edx
xor byte [0x8e162ec0], ah
push ss
mov cs, word [ecx - 0x66]
lcall 0x5ca7, 0xd987d8b8
dec ecx
lcall 0x5ca7, 0xd987d8b8
mov byte [0x23cef8ec], al
sbb bh, ch
aad 0xab
xchg ebp, eax
wait
neg dword [ebp - 0x21]
aas
popal
pop ds
pop edx
inc esi
out dx, al
dec ecx
xchg esp, eax
mov ch, 0x86
lodsb al, byte [esi]
sub eax, 0xe0e1b856
xchg byte [ebp + ebp - 0x1f1e47aa], ch
dec ebx
rcl byte [edi + eax]
mov byte [ecx + edx + 0x28], ah
inc edx
mov ebx, 0xc472e0de
fsubrp st(0)
jb 0x477e52
push 0x86bb187e
outsd dx, dword [esi]
cmc
cmpxchg byte [edi + 0x77], bh
mov ebx, 0xff56f86
mov al, 0x7f
ja 0x477e21
jg 0x477f10
xchg dword [ecx - 0x70], ebx
pop ecx
nop
std
in eax, 0x8e
xchg byte [eax + 0x4b], dl
push ds
fistp word [ebx + 0x6e]
cmc
xchg ecx, eax
cmpsd dword [esi], dword es:[edi]
bound esi, qword [ebx]
pop dword [ebp + 0x2401bf5e]
daa
pop ds
fnsave dword [edx - 0x47]
inc eax
pushfd
mov dword [0xb14f82ed], eax
xor byte [ebx - 0xd335b39], bl
sub bl, al
jle 0x477f07
invalid
loope 0x477f1c
jl 0x477e79
jno 0x477ee2
jb 0x477e57
movsd dword es:[edi], dword [esi]
sbb bh, dh
das
popal
push es
sub al, byte [ebx - 0x77849315]
dec esi
jp 0x477e91
test esp, edi
xchg esi, eax
sysenter
pop edx
stc
les esi, [ebx]
test ch, bl
or byte [eax + 0x4c], dl
pop es
xor dword [ecx], ebx
paddusw mm4, qword [edx]
sbb ebx, dword [ecx + esi*4 - 0x5d]
or eax, 0x124ecbfb
mov dword [ecx], ecx
aam 0xf5
xor eax, 0x9d1ea4ff
push eax
cmpsb byte [esi], byte es:[edi]
push esp
or al, 0x9c
fisub word [edi + 8]
sbb byte [ebp + 0x1d], cl
push esi
faddp st(4)
cdq
dec ebp
sbb eax, 0x99c4de56
pop ecx
ljmp 0xbe40
inc eax
mov esi, 0xa8db804e
ljmp 0x5594
je 0x477fe4
mov word [ebx - 0x11360bdb], es
jg 0x47802d
ficom dword [eax]
dec ebx
sbb dword [eax], 0xffffffe1
retf 0x4b27
sbb dword [esi], ebp
call 0x6f0258a
mov bl, 0x5f
fst qword [ebx]
fimul dword [edi + 0x1c8c734d]
cmp dword [ecx - 0x6f], esp
mov cl, 0x40
fld qword [0x333b6a60]
in al, dx
xor dl, 0xef
jns 0x477fc3
mov eax, 0xc7a3b677
std
add edi, dword [esi]
xchg bh, bh
pop ds
xchg edi, eax
sub byte [eax], bl
add ch, bl
jb 0x478023
je 0x47806c
mov esi, 0x8fb1734c
cwde
bound edx, qword [ebx + 0x157c497b]
xchg ebx, eax
jnp 0x47806f
jl 0x47803d
shl dword [0x98716507], cl
cwde
add byte [ebx + 0x3d], dl
push ds
adc esi, dword [eax]
sbb byte [ebp - 0x59], dh
jno 0x478095
mov byte [ecx + 0x76], dh
iretd
adc ebp, ebx
int 0xf9
pop ebx
jle 0x4780b2
inc ebp
fdiv dword [ecx + 0x3b8dbfc0]
mov ah, 0x7b
sub dword [ecx + 0x4914a645], 0x9f675535
test eax, 0x205321d7
jle 0x4780da
ja 0x477ffa
cmp al, byte [edx + edx + 0x6645645]
and al, 0x2e
invalid
retf 0x9e84
test byte [esi - 0x73051c24], bl
ror dword [ebx], 1
out 0xce, eax
jecxz 0x47806b
mov ecx, ss
or esp, edi
into
add ax, 0x9a4c
salc
mov dl, 0x25
add eax, 0x1659aad4
stosb byte es:[edi], al
pop ecx
push ss
inc ebp
div byte [0x91989483]
pop ebx
sub eax, 0x9ccf4249
cmp eax, 0xe7745204
push ebp
xchg esi, eax
sti
fmul dword [ebx + 0x241138ab]
and cl, al
invalid
lodsd eax, dword [esi]
invalid
pop ebx
and al, 0xaf
mov byte [0x4fa4bc68], al
xor bl, al
js 0x47807f
pop edx
inc ebp
sal byte [ebx - 0x50dab824], cl
dec edi
and byte [edi + 0x29e2cd27], ah
clc
jl 0x4780a9
out dx, al
fistp dword [ecx]
push es
ja 0x4780b2
pop ss
xor dword [ebx + ebp*8 - 0x225e02f0], ebx
sahf
insd dword es:[edi], dx
hlt
adc ch, bh
mov eax, dword [0xf46d9edd]
cdq
and eax, 0xd1e69812
jnp 0x47808a
salc
popfd
dec eax
push ds
and eax, 0xb7c60492
or eax, 0x2aace818
movsb byte es:[edi], byte [esi]
sti
pop edi
movsb byte es:[edi], byte [esi]
mov dword [ebx - 0x20], 0xa23b5faa
sahf
and ecx, dword [ecx - 0x21]
ficom word [ebx - 0x61]
insb byte es:[edi], dx
bound eax, qword [ebx - 0x70133184]
jmp [ecx]
mov eax, dword [0x4fe8753e]
jl 0x4781f7
cmc
arpl ax, dx
invalid
xchg esp, eax
add al, 0xba
sar byte [ecx - 0x50], 0xc6
mov dh, 0xac
inc ebp
invalid
mov ah, 0x6d
pop ebx
ljmp 0xf040
add byte [edi - 0x23], bh
xor ah, byte [ebp - 0x44]
pop esi
mov dword [ecx], edi
mov edx, 0x116df021
sbb byte [ecx + ecx*4 + 0x7d], ah
mov dword [0xf4046a5], eax
dec ebp
adc byte [esi + 0x78], cl
mov eax, dword [0x7ae337d8]
or eax, 0x8ae90b49
mov edi, 0x2c424985
lds esp, [ecx]
loope 0x478180
wait
fistp dword [edi*8 - 0x70f10ccd]
sbb al, 0xfd
xor esi, ebx
push cs
invalid
or dword [ebp - 0x76b30bcc], ebx
fimul dword es:[ecx + 0x10]
xor esp, ebp
rcr byte [edx + 0x4ed558e0], 0xe
or eax, 0xfd160e5b
sbb al, 0xfd
std
xor esi, ebx
push cs
invalid
xor esp, esi
jno 0x4781b0
or ebp, ebp
jb 0x4781f7
mov ss, word [edi - 0x7c]
into
jae 0x478270
sahf
shl byte [edx - 0x6a], cl
test dword [ecx + 0x4cd603c2], esi
sar dword [esi - 0x33], 1
pop ebx
popal
aad 0x9a
mov ah, 0x48
mov ah, 0xe4
mov ebp, dword [edi + ebx - 0x63]
push ss
rcr ah, 0xc5
aaa
les esi, [eax - 0x51]
lodsd eax, dword [esi]
sub edi, dword [ebx]
xchg esi, eax
pop ds
invalid
sal byte [ecx - 0x772395dd], 0x91
fisubr word [ebx - 0xd]
sbb dword [ebx], edi
enter 0xffffffffffff81c7, 0xffffffffffffffb4
test eax, 0x974a1a52
cmp dword [edi + 0x6934a5e2], esp
sub byte [esi + 0x669d96a9], al
mov edi, 0x42351ef6
cmc
call 0x731d2b7a
mov dl, 0x94
and dword gs:[ecx - 0x54], ebx
push 0x5c
int1
sub ebp, dword [0x867668c0]
and al, 0x49
cmpsd dword [esi], dword es:[edi]
jecxz 0x47832d
pop esi
and al, 0x3a
add eax, 0x5224cfb6
cmpsd dword es:[esi], dword es:[edi]
cmp al, 0xc6
out 0x5e, al
push ecx
inc ecx
push ebp
out 0xb, eax
scasb al, byte es:[edi]
xor bh, 0xf6
mov ebp, 0x1da6f6a0
hlt
outsd dx, dword [esi]
add eax, 0xaef67d73
test eax, 0x46dad068
out dx, al
mov ebx, 0x33024cd7
leave
mov eax, dword [0xab5a3854]
jmp [ecx]
pushal
aas
push ds
lds edx, [eax + 0x213a84a0]
insd dword es:[edi], dx
pop ds
pop esi
mov word [ebx], gs
jp 0x4783b3
xlatb
jmp dword [ecx]
cmpsb byte [esi], byte es:[edi]
sub eax, 0x6e28c2d3
cmpsb byte [esi], byte es:[edi]
wait
push ebx
xchg esp, eax
cmpsd dword [esi], dword es:[edi]
mov edi, dword [ebp + 0x66]
wait
push esi
hlt
cmp byte [esp + edx*4 + 0x2bad39a3], ch
add eax, 0x9043aaf9
invalid
iretd
aad 0xf2
xor eax, 0x59253a12
les edi, [edi]
xchg esp, eax
jmp 0x4105f23a