Function at 0x403590
Capabilities:
Encode data using xor

Disassembly:
add byte [eax - 0x1a76aa70], dl
push ebp
mov ebp, esp
push esi
push ebx
sub esp, 0x10
mov al, byte [0x414008]
mov ebx, dword [ebp + 8]
test al, al
jne 0x403691
xchg ebp, eax
push eax
loop 0x40358d
cmpsd dword [esi], dword es:[edi]
sbb al, 0xe0
cld
lodsd eax, dword [esi]
sub ebx, edx
sub al, 6
sub dl, byte [ebp + 0x134bf023]
mov al, byte [0xcc1e9dbe]
invalid
test ebx, ebx
je 0x4042c8
test al, al
jne 0x403796
cli
or edi, esi
les eax, [edx + edi*8 - 0x6a989c10]
xchg byte [ecx + edx], ah
lds ebp, [edi - 0x7ced218d]
pop ebp
test eax, 0x1798f388
lodsd eax, dword [esi]
fnstcw word [ecx]
jne 0x403729
push ecx
outsd dx, dword [esi]
jne 0x403713
push eax
xor edi, ecx
dec edx
and ebx, dword [edx + esi*4 - 0x48]
loop 0x4036a2
leave
cmpsd dword [esi], dword es:[edi]
test dword [0xe3c09886], edi
inc ecx
dec eax
salc
ficomp dword [edi - 0x7d]
mov bl, 0x98
clc
sbb eax, 0x3a9267ea
lcall 0x7636, 0xe8be848b
retf 0x400c
in al, 0xdc
salc
retf 0xcf11
clc
pop ss
cmp bl, byte [ecx]
pushaw
js 0x4036c2
int1
pop esp
insd dword es:[edi], dx
invalid
cmp dword [ebx + 0x10], 0
je 0x403a67
test al, al
jne 0x4038ab
xchg ebx, eax
dec edi
jbe 0x4037f8
jbe 0x4037f8
inc ebp
mov byte [edx], dl
sbb dword [ecx + 0x64], ebp
cmp byte [ecx + 0x3d], 0x4c
sub eax, 0xc56467d5
xor cl, byte [edx - 0x6883936a]
cli
xchg ecx, eax
mov cl, 0x2f
loopne 0x40380c
jle 0x4037d8
mov ebx, 0xdc4354c9
insd dword es:[edi], dx
lodsd eax, dword [esi]
inc eax
in eax, dx
jge 0x403810
push ebx
push edx
mov eax, dword [0x42d318b7]
scasb al, byte es:[edi]
aas
mov esi, 0xf64f3945
push 0x3ee73b30
div byte [eax - 0x73c66e]
out 0xcc, al
in eax, dx
or al, 0x49
daa
pushal
pushfd
enter 0xffffffffffffb417, 0xffffffffffffff9b
pop ss
mov ah, 0x9b
pop ecx
invalid
lahf
out dx, eax
insb byte es:[edi], dx
push esp
sti
mov ch, 0x7b
pop ebx
push ecx
inc ebx
jae 0x40381e
fmulp st(4)
mov eax, 0x4bcb0fe4
in al, 0xf
retf
bswap ebx
dec ebx
lodsd eax, dword [esi]
inc edi
loop 0x4037ab
test eax, 0x1fbc55b7
pop ebp
pop esp
xchg dword [eax + ecx*8 - 0x25], ecx
dec eax
jge 0x40388a
mov dword [0xd4169acf], eax
jns 0x40381d
cmp al, 0x31
invalid
adc bh, al
inc esp
hlt
xor ecx, eax
test eax, 0x19c8dc9a
retf
loope 0x40383f
stosb byte es:[edi], al
adc dh, byte [esp + edx*2 - 0x54]
push eax
sbb al, 0xc5
sbb edi, dword [ebp + 0x40]
adc dword [edi - 0x3c68821c], esp
push edi
xchg edx, eax
rcr dword [0x1aa2ba85], 1
dec eax
pop ss
push edi
int 0xf8
or cl, byte [ebx - 0x743f7bf5]
push ebx
add al, 0x8b
dec ecx
sub byte [edi], cl
test esp, ebp
add byte [eax], al
add byte [edx], cl
jg 0x40388a
mov ecx, dword [ebx]
test al, al
mov edx, dword [ebx + 4]
mov ecx, dword [ecx + 0x28]
jne 0x4039a7
or bh, byte [edi - 0x34]
mov bh, 0xcf
call 0xbda62441
cld
or al, 0xa1
jp 0x40386e
sal dword gs:[esi], 1
out dx, eax
mov esp, 0x38d691f0
test al, 0x2e
push es
mov al, byte [0xb7ab7e38]
dec edx
bound eax, qword [edi - 0x678d21ce]
wait
outsb dx, byte [esi]
movsb byte es:[edi], byte [esi]
cmp eax, 0xbaa248e8
jg 0x4038c5
test eax, 0x113ac93b
add ebx, esp
aas
pop es
cmp dword [eax - 0x7b], 0x2e
das
iretd
lea eax, [edx + ecx]
mov dword [esp + 8], 0
mov dword [esp + 4], 0
mov dword [esp], edx
call eax
mov al, byte [0x414008]
sub esp, 0xc
test al, al
jne 0x403a30
or byte [edi + 0x641aeb9d], 0x8f
jmp 0xeef83f1c
test al, al
mov dword [ebx + 0x10], 0
jne 0x403a67
mov cl, 0xb7
xchg esp, eax
int1
invalid
mov al, byte [0x414008]
test al, al
jne 0x403ab4
stc
movsd dword es:[edi], dword [esi]
outsd dx, dword [esi]
out 0x7d, eax
sbb ebx, dword [ebx]
int3
cmp dword [ebx + 8], 0
je 0x403f13
xor esi, esi
test al, al
jne 0x403d97
aaa
push ebx
cli
dec edi
jae 0x403acd
inc dword [ebx]
xchg edi, eax
mov word [esp + edi + 0x69], es
add edx, dword [edi + 0x693c448c]
wait
rcl dword [eax - 0x63]
comiss xmm4, dword [eax + 0x15489149]
movsb byte es:[edi], byte [esi]
mov ss, word [edi]
xlatb
pop ebx
into
inc esp
enter 0xffffffffffff9705, 0xffffffffffffffc3
push esp
or al, dl
push edi
mov eax, dword [0xb7de9c4e]
aaa
scasd eax, dword es:[edi]
pop es
aam 0xbf
je 0x403b03
enter 0x1dbc, 0x6c
dec edx
xor eax, 0x8703a543
outsb dx, byte [esi]
or byte [edi], bl
xor dword [ecx + ebp - 0xd], ebx
add eax, dword [edi + 0x311f086e]
pop esp
sub ebx, esi
mov ah, 0xcb
inc ecx
push eax
test eax, 0x5887f8
pop ebx
pop ss
iretd
mov dl, byte [0x414008]
test dl, dl
jne 0x403bef
sbb dh, byte [edx]
invalid
mov eax, dword [ebx + 8]
mov eax, dword [eax + esi*4]
cmp eax, 0xffffffff
je 0x403cf0
test dl, dl
jne 0x403c3d
and byte [esi - 0x1c88af29], 0x3b
frstor dword [esi - 0x41]
sbb al, 0xde
jnp 0x403c47
cdq
push ebx
add bh, dh
test eax, 0xe684c9e7
int 0x23
aaa
mov gs, ecx
sbb dh, bl
stosb byte es:[edi], al
lcall 0x2565, 0x10ea8299
out dx, al
retf
mov dword [esp], eax
call sub.KERNEL32.dll_FreeLibrary
cmp byte [0x414008], 0
or byte [eax + 0x41], al
add byte [eax], al
push eax
jne 0x403cf0
pop eax
xchg edi, eax
std
int1
sbb edi, esp
add bh, byte [esi + 0xc]
invalid
cmp byte [0x414008], 0
jne 0x403d96
mov esp, edi
push ecx
test eax, 0x7f9a6cec
xlatb
dec ecx
test eax, 0x46cd03
jmp 0x403d8a
and eax, 0xc7dc6d57
sbb esp, dword [edx + 0x4706d2fe]
push es
inc edi
add dword [ebp + 0x6a], edi
mov dword [0x9325a567], eax
lahf
test eax, 0xc733b46
inc esi
cmp esi, dword [ebx + 0xc]
jl 0x403baa
cmp byte [0x414008], 0
inc eax
inc ecx
add byte [eax], al
jne 0x403e22
sbb dword [edx - 0x8cfc2e8], edx
or bl, byte [eax - 0x73]
xor byte [eax + 0x16770cfb], dh
scasb al, byte es:[edi]
jne 0x403da3
mov ah, 0xbc
jmp 0x98cd63f3
jbe 0x403ddd
cld
pop es
or byte [ebp + 0x512b61d], bl
push 0xffffffffffffffcf
out dx, eax
wait
cmc
jl 0x403e14
shr dword [esi], 0x5e
sub al, 0x8a
int 0xb0
ja 0x403e3e
jb 0x403d81
sar dword [esi], cl
or ebx, edi
cmp dh, byte [ecx]
out 0x42, al
into
add edi, eax
loopne 0x403e01
bound ebp, qword [edi + 0x73a5fdf7]
xor byte [esi - 0x5e], ah
mov ss, word [edx - 0x5cbda4d4]
scasd eax, dword es:[edi]
mov ah, 0x38
xor dl, 0x43
mov byte [0x5b2c928e], al
inc edx
mov dword [0x8238b4af], eax
inc ebx
popal
sub al, 0x74
inc edi
outsb dx, byte [esi]
inc edx
dec edx
and dx, word [ebx - 0x38]
ror byte [edx - 0x3b], cl
ja 0x403ddc
cmc
frstor dword [eax - 0x7d]
mov eax, dword [ebx + 8]
test eax, eax
je 0x403e31
mov dword [esp], eax
call fcn.0040a690
add byte [eax + 0x4140083d], al
add byte [eax], al
cmp byte [0x414008], 0
jne 0x403f13
mov esi, ds
mov dl, 0x2f
mov fs, word [esi + 0x68]
adc byte [ecx - 0x55], bl
jb 0x403dcf
and byte [ecx + 0x5a0462f4], bh
test dword [edi + 0x23], edx
pop eax
mov eax, dword [0xde5fcfe8]
lodsd eax, dword [esi]
mov edi, 0x404b1c61
into
jnp 0x403e30
xor eax, 0x8e8edee3
push eax
adc ebp, dword [esi + 0xe11070a]
bound edx, qword [esi + 0x6ee8565]
insd dword es:[edi], dx
mov esi, 0x256b4b66
lodsd eax, dword [esi]
xchg dword [ecx - 0x13], esi
push esi
in al, dx
mov ebx, 0x1999cf8b
pop ebp
ljmp 0x21d
mov dl, byte [0x414008]
test dl, dl
jne 0x403fcd
add byte [eax], al
dec esi
mov ch, 0x65
or byte [ebx], bh
add eax, 0x2f6f3587
jg 0x403f1f
je 0x403f92
ret
xchg esi, eax
sub byte [0x7c7c7d0], 0x8d
or byte [eax - 0x1a], 0xc5
push edx
dec ebx
or dword [ecx], esp
cdq
enter 0xffffffffffffe238, 0xffffffffffffffea
dec ecx
mov bh, 0x4a
jl 0x403fb7
xchg byte [eax], dh
jl 0x403fb8
lds edx, [edx]
mov dl, dh
loop 0x404006
mov edx, 0x323addea
invalid
ljmp 0x84ff:0xc4323add
fnstsw word [edx]
xor al, ah
inc dword [edi + ecx - 0x2e565af7]
fisttp qword [ebx + 0x54326bb]
mov dword [0x8bd38b4e], eax
inc ebx
add al, 0x85
ror byte [edi], 0x84
fild word [eax]
add byte [eax], al
mov edi, dword [ebx - 0x5cfabcda]
dec esi
mov edx, ebx
mov eax, dword [ebx + 4]
test eax, eax
je 0x4040b7
test dl, dl
jne 0x403feb
xchg ebx, eax
cwde
fstp qword [ebx]
mov eax, eax
imul eax, dword [ebp - 0x56], 0x49
jg 0x403fc4
or eax, 0x44c7607f
and al, 8
add byte [eax + 0x44c70000], al
and al, 4
add byte [eax], al
add byte [eax], al
mov dword [esp + 8], 0x8000
mov dword [esp + 4], 0
mov dword [esp], eax
call sub.KERNEL32.dll_VirtualFree
sub esp, 0xc
cmp byte [0x414008], 0
jne 0x4040b7
mov byte [0x51e259c5], al
adc al, 8
xchg esp, eax
sbb dword [ebx - 0x52805b1e], ebp
aaa
pop ss
mov edx, dword [edx - 0x5e]
dec ebx
mov esi, 0x6707f5e7
rcl dword [esi]
xor dword [eax], esi
outsb dx, byte [esi]
test bh, 0x18
inc edi
invalid
cmp byte [0x414008], 0
jne 0x4041a2
in eax, dx
lahf
pop ds
jbe 0x404120
cld
cwde
or byte [ebx], ch
cmpsd dword [esi], dword es:[edi]
fist dword [ebx - 0x766a483]
push cs
fidiv dword [eax]
cmpsd dword [esi], dword es:[edi]
sahf
stosb byte es:[edi], al
neg dword [eax + 0x3bc63973]
ljmp 0xff1c
retf 0xd6ce
call sub.KERNEL32.dll_GetProcessHeap
mov dword [esp + 8], ebx
mov dword [esp + 4], 0
mov dword [esp], eax
call sub.KERNEL32.dll_HeapFree
sub esp, 0xc
cmp byte [0x414008], 0
jne 0x4042c8
sbb ecx, dword [esi]
int3
dec ecx
inc ebp
push edi
outsb dx, byte [esi]
test al, 0x27
retf 0x7bd2
cmp byte [0x414008], 0
jne 0x40431b
dec esi
sub byte [ebp + 0x56], dh
jge 0x40428b
sub dword [edi + ebp*2 - 0x43f31294], esp
invalid
lea esp, [ebp - 8]
pop ebx
pop esi
pop ebp
ret