Function at 0x40e420
Capabilities:
Encode data using xor

Disassembly:
dec eax
add byte [ebx], dh
test bh, 0x45
in al, 0
add byte [eax], al
add byte [ecx + 0x7589e84d], cl
in al, dx
jmp 0x40dfe0
mov ebx, dword [edx + edi*4]
lea edi, [edi + 1]
cmp ecx, esi
je 0x40e095
push 0xc
call fcn.00420db6
mov esi, eax
add esp, 4
test esi, esi
je 0x40e3c1
movzx ecx, word [ebx + 8]
mov word [esi + 8], cx
movzx eax, word [esi + 8]
movzx ecx, word [ebx + 0xa]
mov word [esi + 0xa], cx
cmp ax, 0x3f
jle 0x40e05d
cmp ax, 0x10
je 0x443735
cmp ax, 0x20
je 0x40e3b8
mov eax, dword [ebx]
mov dword [esi], eax
mov ecx, dword [ebp - 0x18]
mov eax, dword [ebp - 0x1c]
mov ebx, dword [ebp + 8]
mov dword [eax + ecx*4], esi
mov ecx, dword [ebp - 0x18]
mov edx, dword [ebx + 4]
inc ecx
mov dword [ebp - 0x18], ecx
mov eax, dword [edx + edi*4]
cmp word [eax + 8], 0x7f
je 0x40e0ef
mov esi, dword [ebp - 0x14]
jmp 0x40dfe0
cmp ax, 0x30
jl 0x40e01c
push 0x10
call fcn.00420db6
mov edx, eax
add esp, 4
test edx, edx
je 0x40e3b1
mov eax, dword [ebx]
mov ecx, dword [eax]
mov dword [edx], ecx
mov ecx, dword [eax + 4]
mov dword [edx + 4], ecx
mov ecx, dword [eax + 8]
mov dword [edx + 8], ecx
mov eax, dword [eax + 0xc]
mov dword [edx + 0xc], eax
inc dword [eax]
mov dword [esi], edx
jmp 0x40e034
lea eax, [esi + esi]
cmp eax, 8
jae 0x40e0a2
mov eax, 8
xor ecx, ecx
mov dword [ebp - 0x14], eax
mov edx, 4
mul edx
seto cl
neg ecx
or ecx, eax
push ecx
call fcn.00420db6
mov esi, eax
add esp, 4
mov eax, dword [ebp - 0x1c]
test eax, eax
je 0x40e0e7
mov ecx, dword [ebp - 0x18]
test ecx, ecx
je 0x40e0e7
shl ecx, 2
push ecx
push eax
push esi
call fcn.00420e40
add esp, 0xc
push dword [ebp - 0x1c]
call fcn.00420e2c
add esp, 4
mov dword [ebp - 0x1c], esi
jmp 0x40dfee
mov edi, eax
mov eax, dword [ebp - 0x14]
cmp ecx, eax
je 0x443744
push 0xc
call fcn.00420db6
mov esi, eax
add esp, 4
test esi, esi
je 0x40e3d1
movzx ecx, word [edi + 8]
mov word [esi + 8], cx
movzx eax, word [esi + 8]
movzx ecx, word [edi + 0xa]
mov word [esi + 0xa], cx
cmp ax, 0x3f
or ah, byte [esi - 0x7d]
clc
aas
jle 0x44379d
cmp ax, 0x10
je 0x4437dc
cmp ax, 0x20
je 0x40e3c8
mov eax, dword [edi]
mov dword [esi], eax
mov ecx, dword [ebp - 0x18]
mov eax, dword [ebp - 0x1c]
push dword [ebp + 0xc]
mov dword [eax + ecx*4], esi
lea eax, [ebp - 0x20]
mov ecx, dword [ebp - 0xc]
inc dword [ebp - 0x18]
push eax
call fcn.004116ae
xor esi, esi
mov dword [ebp - 0x20], 0x48fb78
cmp dword [ebp - 0x18], esi
jbe 0x40e19d
nop
mov eax, dword [ebp - 0x1c]
mov edi, dword [eax + esi*4]
test edi, edi
je 0x40e190
movzx eax, word [edi + 8]
cmp ax, 0x3f
jle 0x40e1b8
push edi
call fcn.00420e2c
mov eax, dword [ebp - 0x1c]
add esp, 4
mov dword [eax + esi*4], 0
inc esi
cmp esi, dword [ebp - 0x18]
jb 0x40e170
push dword [ebp - 0x1c]
mov dword [ebp - 0x18], 0
call fcn.00420e2c
add esp, 4
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 8
cmp ax, 0x30
jl 0x40e184
mov ebx, dword [edi]
test ebx, ebx
je 0x40e184
mov eax, dword [ebx + 0xc]
dec dword [eax]
mov eax, dword [ebx + 0xc]
cmp dword [eax], 0
je 0x4437eb
push ebx
call fcn.00420e2c
add esp, 4
jmp 0x40e184
mov dword [ebp + 0xc], eax
mov esi, dword [edi]
lea edx, [esi + 1]
mov dword [edi], edx
cmp esi, dword [0x4c62a0]
jg 0x40e28a
test esi, esi
jle 0x40e28a
shl esi, 4
add esi, dword [0x4c62dc]
je 0x40e28a
test bh, bh
jne 0x40e28a
mov ecx, dword [esi + 4]
mov eax, dword [ecx]
cmp word [eax + 8], 0
jne 0x40e230
mov eax, dword [eax]
cmp eax, 8
jne 0x40e31f
mov eax, dword [ebp + 0xc]
test eax, eax
jne 0x40e3d8
lea eax, [edx - 1]
mov bh, 1
mov dword [ebp - 0x48], eax
test bl, bl
jne 0x40e230
cmp byte [ebp + 0xb], bl
jne 0x40e230
mov dword [ebp - 8], eax
jmp 0x40e230
mov ebx, dword [ebp - 0xc]
mov eax, dword [ebp - 8]
mov dword [edi], eax
cmp byte [ebx + 0x165], 0
jne 0x4438dd
push 0x38
call fcn.00420db6
mov esi, eax
add esp, 4
test esi, esi
je 0x40e3de
mov eax, dword [ebp - 0x4c]
mov ecx, dword [ebp - 0x44]
mov dword [esi + 4], eax
mov eax, dword [ebp - 0x48]
mov dword [esi + 8], eax
lea eax, [ebp - 0x40]
mov dword [esi + 0xc], ecx
lea ecx, [esi + 0x10]
mov dword [esi], 0
push eax
mov dword [ecx + 8], 0
call fcn.00409960
lea eax, [ebp - 0x30]
mov dword [esi + 0x28], 0
lea ecx, [esi + 0x20]
push eax
call fcn.00409960
mov eax, dword [ebx + 0x160]
mov dword [esi + 0x30], eax
mov dword [ebx + 0x160], esi
inc dword [ebx + 0x15c]
lea ecx, [ebp - 0x30]
call fcn.004098c0
lea ecx, [ebp - 0x40]
call fcn.004098c0
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 8
sub eax, 4
je 0x40e375
sub eax, 2
jne 0x40e369
cmp dword [ebp + 0xc], eax
jne 0x40e230
test esi, edi
invalid
cmp byte [ebp + 0xb], 1
je 0x4438cc
mov byte [ebp + 0xb], 1
test bl, bl
jne 0x40e230
mov dword [ebp - 8], edx
jmp 0x40e230
dec eax
jne 0x40e230
jmp 0x443805
mov esi, dword [esi + 8]
mov edx, 1
cmp esi, edx
jbe 0x40e230
mov eax, dword [ecx + edx*4]
cmp word [eax + 8], 0
je 0x40e399
inc edx
cmp edx, esi
jb 0x40e385
jmp 0x40e230
cmp dword [eax], 5
jne 0x40e38f
mov eax, dword [ecx + edx*4 + 4]
cmp word [eax + 8], 0x7f
jne 0x40e38f
inc dword [ebp + 0xc]
jmp 0x40e230
xor edx, edx
jmp 0x40e091
fld qword [ebx]
fstp qword [esi]
jmp 0x40e034
xor esi, esi
jmp 0x40e034
fld qword [edi]
fstp qword [esi]
jmp 0x40e146
xor esi, esi
jmp 0x40e146
dec eax
jmp 0x40e22d
xor esi, esi
jmp 0x40e2f1
push ebp
mov ebp, esp
push ecx
mov edx, dword [ebp + 8]
push ebx
push esi
push edi
mov edi, dword [edx + 4]
mov esi, ecx
xor ecx, ecx
mov dword [ebp - 4], ecx
mov eax, dword [edi]
mov eax, dword [eax]
cmp eax, 4
jne 0x40e451
push dword [ebp + 0xc]
mov ecx, esi
push edx
call fcn.0040df00
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 8
sub eax, 4
cmp eax, 0x28
ja case.0x40e45d.5
jmp dword [eax*4 + 0x40e5f0]
push dword [ebp + 0xc]
push ecx
mov ecx, esi
call fcn.0040d590
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 8
push dword [ebp + 0xc]
mov ecx, esi
push edx
call fcn.0040d7b0
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 8
lea eax, [ebp - 4]
mov ecx, esi
push eax
push edx
call fcn.0040ccba
mov byte [esi + 0x144], 1
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 8
push 1
lea eax, [ebp - 4]
mov ecx, esi
push eax
push edx
call fcn.0040d100
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 8
cmp byte [esi + 0x165], cl
jne 0x443948
cmp byte [esi + 0x164], 0
jne 0x44396d
mov edi, dword [esi + 0x160]
mov ebx, dword [edi + 0x30]
test edi, edi
je 0x40e4fe
lea ecx, [edi + 0x20]
call fcn.004098c0
lea ecx, [edi + 0x10]
call fcn.004098c0
push edi
call fcn.00420e2c
mov bl, 0xff
call dword [edi - 0x18]
xor dword [ecx], ebp
add dword [eax], eax
add esp, 4
mov dword [esi + 0x160], ebx
mov byte [esi + 0x165], 0
dec dword [esi + 0x15c]
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 8
push dword [ebp + 0xc]
mov ecx, esi
push edx
call fcn.0040dcce
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 8
cmp byte [esi + 0x165], 0
lea ecx, [esi + 0x15c]
jne 0x44393d
mov edx, dword [ecx + 4]
mov edx, dword [edx + 8]
mov eax, dword [ebp + 0xc]
inc edx
mov dword [eax], edx
call fcn.0041fb8f
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 8
push dword [ebp + 0xc]
mov ecx, esi
push edx
call fcn.0040dbce
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 8
push dword [ebp + 0xc]
mov ecx, esi
call fcn.0040ddac
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 8
push dword [ebp + 0xc]
push ecx
mov ecx, esi
call fcn.0040dc30
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 8
lea eax, [ebp - 4]
mov ecx, esi
push eax
push edx
call fcn.0040cc74
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 8
push 2
lea eax, [ebp - 4]
mov ecx, esi
push eax
push edx
call fcn.0040d100
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 8
push dword [ebp + 0xc]
mov ecx, esi
push edx
call fcn.0040de0b
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 8
push 0
lea eax, [ebp - 4]
mov ecx, esi
push eax
push edx
call fcn.0040d100
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 8
aaa
invalid
dec dword [ebx + 0x21dfe8c8]
cld
invalid
dec ebp
call 0x19b90128
shl ecx, 2
push ecx
push eax
push esi
call fcn.00420e67
add byte [ebp - 0x1b8a00f4], al
call fcn.00420e53
add byte [ebp - 0x1b8a76fc], al
jmp 0x40e123
je 0x4437fa
mov eax, dword [edi]
mov ecx, dword [eax]
mov dword [edx], ecx
mov ecx, dword [eax + 4]
mov dword [edx + 4], ecx
mov ecx, dword [eax + 8]
mov dword [edx + 8], ecx
mov eax, dword [eax + 0xc]
mov dword [edx + 0xc], eax
inc dword [eax]
jmp 0x4437fc
dec eax
or byte [ecx + 0x408b084a], cl
or al, 0x89
inc edx
or al, 0xff
add bl, ch
add dh, byte [ebx]
ror byte [ecx - 0x569516ea], cl
cld
dec dword [ebx - 0x74f976f9]
inc edi
add al, 0x89
inc esi
add al, 0xe9
pop ebx
test eax, 0x33fffffc
call fcn.00420e53
add byte [ebp + 0xc73ff04], al
call fcn.00420e53
add byte [ebp - 0x562f16fc], al
cld
inc dword [ebx + 0xf000c7d]
test dword [ecx], esp
stosb byte es:[edi], al
cld
inc dword [eax + 0xf010b7d]
test byte [ebx - 0x7bff6008], dh
fisttp dword [edi]
test dword [edi], ecx
stosb byte es:[edi], al
cld
dec dword [ebx + 0x428df44d]
inc edi
inc ebp
invalid
xor edx, edx
mov dword [esi], edx
jmp 0x40e16d
mov dword [esi], eax
mov eax, dword [edi + 4]
mov dword [esi + 4], eax
jmp 0x40e16d
mov ebx, 0x8bfffca9
pop ss
mov dword [ebp - 8], edx
jmp 0x40e257
push ebp
hlt
mov ecx, edx
movsx eax, word [eax + 0xa]
push eax
push 0x9ff800a1
call 0x40469e71
jmp 0x40e32d
stosb byte es:[edi], al
cld
dec dword [ebx + 0x1608b]
loopne 0x443898
inc ebp
mov al, 0x50
call fcn.0047a2c0
mov byte [ebx - 0x3f7a0f9b], 0
jmp 0x40e327
inc eax
or cl, byte [ebx + 0x6850f44d]
mov eax, dword [0xe89ff800]
inc eax
add al, byte gs:[eax - 0x17]
xchg esp, eax
cmpsb byte [esi], byte es:[edi]
cld
dec dword [ebx + 0x4436c7ff]
add byte [edx - 0x21], dh
inc eax
add byte [edx - 0x21], dh
add al, bh
lahf
call 0x40469e71
jmp 0x40dfca
fild word [eax]
jb 0x443921
inc eax
add byte [esi + 0x72004436], ah
fild word [eax]
mov edx, 0xdc004436
jb 0x443929
inc eax
add byte [edx - 0x23ffbbca], bh
inc esp
add ah, ch
inc esp
add byte [esi], dl
aaa
inc esp
add byte [esi], dl
aaa
inc esp
add byte [ecx], al
aaa
inc esp
add byte [ebx + 0x508b0441], cl
xor cl, ch
cld
stosd dword es:[edi], eax
cld
dec dword [ebx + 0x1608e]
loopne 0x443901
jns 0x4439a8
test ecx, ecx
leave
je 0x443982
push ecx
call 0xff45663f
mov dword [esi - 0x1ffffea0], edi
mov byte [esi - 0x3f7a0f9b], 0
xchg byte [ebp - 0x10], ah
test eax, eax
add cl, ch
pop esi
stosd dword es:[edi], eax
cld
invalid
xchg byte [ebp - 0x10], ah
test eax, eax
add cl, ch
pop esi
stosd dword es:[edi], eax
cld
inc esi
xchg byte [ebp - 0x10], ah
test eax, eax
rol byte [ecx], 0xe9
rol byte [ecx], 0xe9
xchg edx, eax
stosd dword es:[edi], eax
cld
invalid
jb 0x4439ad
add cl, ch
mov edi, 0xfffffcaa
stosb byte es:[edi], al
cld
invalid
jne 0x4439bf
push ecx
mov ecx, esi
call fcn.0047ad37
jmp 0x40e46f
dec dword [ebp + 0x15c8e]
mov ds, word [ecx + eax]
loopne 0x4439af
xor al, 0xc2
std
dec dword [ebx + 0x458b0848]
or al, 0x89
mov dword [eax], ecx
jmp 0x40e46f
lea ecx, [esi - 0x1ffffea4]
invalid
mov dword [eax], ecx
jmp 0x40e46f
rol ecx, cl
std
invalid
stosb byte es:[edi], al
cld
invalid
push dword [ebp + 0xc]
lea eax, [ebp - 4]
mov ecx, esi
push eax
push edx
call fcn.0047a66f
jmp 0x40e46f
invalid
jmp [edx]
jmp [edx]
jmp [edx + 4]
add al, 0x8d
inc ebp
cld
mov ecx, esi
push eax
push edx
call fcn.0040d127
jmp 0x40e46f
mov ecx, esi
push eax
push edx
call fcn.0047aec9
jmp 0x40e46f
mov ecx, esi
push dword [eax]
call fcn.00409e84
mov ecx, dword [eax + 0x1c]
mov eax, dword [ebp + 0xc]
inc ecx
mov dword [eax], ecx
or cl, ch
jecxz 0x443a33
cld
invalid
or cl, ch
jecxz 0x443a33
cld
jmp [edx - 1]
inc eax
jmp 0x40e46f