Function at 0x61521d
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x1c
push ebx
mov ebx, dword [ebp + 8]
push edi
mov edi, dword [ebp + 0xc]
test edi, edi
jne 0x61523a
cmp dword [ebx + 0x2c], 0
jne 0x61523f
mov edi, ebx
mov dword [ebp + 0xc], edi
cmp dword [edi + 0x1c], ebx
je 0x615247
pop edi
xor eax, eax
pop ebx
mov esp, ebp
pop ebp
ret
push esi
push 0x40
mov dword [ebp - 8], edi
mov dword [ebp - 0xc], 0
mov dword [ebp - 0x18], 0
mov dword [ebx + 0x2e4], 0
mov dword [ebx + 0x2e8], 0
mov dword [ebp - 0x10], 0x40
call fcn.006119fd
mov esi, eax
add esp, 4
mov dword [ebp + 8], esi
test esi, esi
jne 0x61529d
push 0x660558
call fcn.006140dd
add esp, 4
xor eax, eax
pop esi
pop edi
pop ebx
mov esp, ebp
pop ebp
ret
mov eax, dword [ebx + 0x3c]
push edi
push ebx
mov dword [ebp - 4], esi
call eax
add esp, 8
mov dword [ebp - 0x14], eax
mov eax, dword [ebx + 0x2f0]
push ebx
call eax
mov edi, dword [ebp + 8]
add esp, 4
mov dword [ebp - 0x1c], eax
cmp esi, edi
jbe 0x6153db
cmp eax, 0x3c
je 0x6152d5
cmp eax, 0xffffffff
jne 0x6153e4
mov edi, dword [ebp - 0x14]
mov byte [esi], 0
cmp edi, 2
je 0x6152e5
cmp edi, 0xffffffff
jne 0x6152f3
push dword [ebp + 8]
call fcn.0061345d
add esp, 4
mov dword [ebp - 4], eax
push dword [ebp + 8]
xor esi, esi
call fcn.0061280d
add esp, 4
test eax, eax
je 0x6153ca
mov eax, edi
sub eax, 1
je 0x615378
sub eax, 1
je 0x61535c
sub eax, 1
jne 0x6153ca
cmp dword [ebx + 0x44], esi
je 0x6159ca
mov edi, dword [ebp - 8]
mov dword [edi + 0x18], 3
push dword [ebp + 8]
mov eax, dword [ebx + 0x44]
push edi
push ebx
call eax
add esp, 0xc
test eax, eax
jne 0x6153ca
push dword [edi]
push dword [ebp + 8]
push 0x6605a0
call fcn.006140dd
add esp, 0xc
jmp 0x615b09
mov edi, dword [ebp - 8]
push 1
mov dword [edi + 0x18], 2
push dword [ebp + 8]
push edi
call fcn.00616afd
add esp, 0xc
test eax, eax
jmp 0x6153c4
cmp dword [ebx + 0x2e8], esi
je 0x6153af
push dword [ebp + 8]
call fcn.00612a8d
mov edi, dword [ebp - 8]
add esp, 4
cmp byte [eax], 0
je 0x6153b2
cmp dword [edi + 0x18], esi
jne 0x6153b2
mov dword [edi + 0x18], 1
push dword [ebp + 8]
push edi
call fcn.00614f6d
add esp, 8
test eax, eax
jmp 0x6153c4
mov edi, dword [ebp - 8]
push dword [ebp + 8]
push 0
push edi
call fcn.00614f0d
mov esi, eax
add esp, 0xc
test esi, esi
je 0x6159dc
mov eax, dword [ebp - 0xc]
test eax, eax
mov edi, dword [ebp + 8]
cmove eax, esi
mov dword [ebp - 0xc], eax
mov eax, dword [ebp - 0x1c]
cmp eax, 0xffffffff
je 0x615adb
cmp eax, 0x3c
jne 0x61598b
mov eax, dword [ebx + 0x2f0]
push ebx
mov dword [ebp - 4], edi
call eax
mov esi, eax
add esp, 4
cmp esi, 0xffffffff
je 0x615516
nop word [eax + eax]
push esi
call fcn.00613a2d
add esp, 4
test eax, eax
jne 0x615516
cmp esi, 0x3e
je 0x615516
cmp esi, 0x2f
jne 0x615437
cmp edi, dword [ebp + 8]
ja 0x615516
jmp 0x615497
cmp esi, 0x3c
je 0x6159f4
cmp esi, 0x26
jne 0x61547f
push dword [ebp - 8]
push ebx
call fcn.00615fcd
add esp, 8
cmp eax, 0xffffffff
je 0x615b09
lea ecx, [ebp - 0x10]
push ecx
lea ecx, [ebp + 8]
push ecx
lea ecx, [ebp - 4]
push ecx
push eax
call fcn.006150fd
add esp, 0x10
test eax, eax
je 0x615b09
mov edi, dword [ebp - 4]
jmp 0x6154ff
cmp esi, 0x30
jge 0x615497
cmp esi, 0x21
je 0x615497
cmp esi, 0x2d
je 0x615497
cmp esi, 0x2e
jne 0x615b09
jb 0x61549b
add byte [eax], al
lea eax, [ebp - 0x10]
push eax
lea eax, [ebp + 8]
push eax
lea eax, [ebp - 4]
push eax
push esi
call fcn.006150fd
add esp, 0x10
test eax, eax
je 0x615b09
mov edi, dword [ebp - 4]
mov eax, edi
mov ecx, dword [ebp + 8]
sub eax, ecx
cmp eax, 1
jne 0x6154c8
dec ebp
or byte [ebx], ch
rol dword [ebx + 0x57501f8], 0x80
cmp dword [edi], edi
cmp byte [ecx], 0x3f
je 0x615516
cmp eax, 3
jne 0x6154e3
push eax
push 0x660610
push ecx
call 0x811f6d
add esp, 0xc
test eax, eax
je 0x615516
mov ecx, dword [ebp + 8]
mov eax, edi
sub eax, ecx
cmp eax, 8
jne 0x6154ff
push eax
push 0x4fb002cc
xor al, 0xef
out dx, eax
jo 0x615493
jg 0x6154ba
das
nop
dec eax
movsb byte es:[edi], byte [esi]
das
cdq
outsb dx, byte [esi]
dec esi
sub eax, 0x7eb2ef40
out dx, eax
mov dl, 0x7e
and byte [edi - 0x4dfb1bd0], cl
adc ah, byte [esi - 9]
dec esp
jmp 0x6154fa
in al, 4
mov dl, 0x12
test word [ebx + ebp*8 - 0x1a], 0x1e86
xor ebp, dword [edi - 0x1b]
dec edx
push eax
cmp ch, dl
jg 0x61556f
leave
and ah, byte [esi + 0x60]
fild qword [edi + 0x2e]
jno 0x615505
aas
push cs
cmp bl, byte [esi + 0x10]
movsd dword es:[edi], dword [esi]
sbb byte [ebx + 0xf31e4e6], bl
push esp
ror byte cs:[edi], 0x38
fnsave dword [eax + 0x1e]
sub dword [edx], edi
xor byte [edi + 0x6a], 0xc5
jp 0x6155b5
cmpsd dword [esi], dword es:[edi]
mov edi, 0xacee19d1
cmp byte [edi + 0xa], 0x27
dec eax
xor edx, esp
retf
sahf
and al, 0x9e
stosb byte es:[edi], al
mov edi, 0x5b5d5a38
pop edx
pop ebp
pop ebx
loop 0x61550b
or eax, 0xf2beb4ef
inc ebx
pop si
xchg esp, eax
cmp eax, dword [ebx + ebp*4 - 0x7059128c]
in eax, dx
ja 0x6155a3
sbb al, 0xa9
jg 0x6155e6
test eax, 0xf0f95c7f
sbb ebx, dword [esi]
stc
sbb ebx, dword [esi]
ficomp word [ebx - 0x1c]
sbb eax, 0x2d2d238a
mov al, byte [0x3b2fa00e]
invalid
in eax, 0xba
aad 0x8b
invalid
jnp 0x615568
jg 0x615586
sbb esi, dword [ecx - 0x43d71ea2]
cwde
cmc
xchg ebx, eax
push edx
pop ebx
and eax, 0xe92fd2ce
wait
jns 0x6155ea
shr ebp, 2
jmp 0x615645
mov al, 0xc1
jns 0x615585
cmp al, 0x8b
inc esp
jle 0x61561f
inc ebx
dec eax
fimul dword [eax + 0x4b]
retf
salc
mov al, byte [0x8189b0ad]
dec ebp
mov bl, 0xf3
push eax
mov ch, 0xc2
pop es
in al, 0x9b
and byte [ebx + 0x52], ch
in al, 0x74
wait
fdivr st(7)
sbb al, 0xf5
fsubr qword [esi - 0xddddf23]
nop
inc ebx
out 0x86, al
push esi
xor al, 0xaf
sub dword [esi + eax*2 + 0x5c], esi
sti
adc dh, dl
sub eax, 0xcbd38f1
mov dl, 0x92
push esi
mov byte gs:[0x6099be03], al
fbld tbyte [eax + 0x3e91655d]
ficomp dword gs:[esi]
jl 0x6155fb
inc bl
leave
cmp ah, byte [edi - 0x1c08bcc0]
cmpsd dword [esi], dword es:[edi]
inc eax
inc ebx
mul ebx
dec esp
pop eax
xchg ecx, eax
sub bl, byte [esi + 0x51657010]
test eax, 0xc8283ad2
xor byte [edi + 0x58523bf6], ch
or dword [eax], ecx
mov bh, 0x95
popal
pop edx
jno 0x615646
or byte [edi + 0x715a6195], dh
fiadd word [edi + ebx*8 + 0x46]
pop eax
inc esp
fild word [esi + 0x58]
and dword [ebp + 0x3fca331], ebp
sar dword [esi + 4], 1
imul edi, dword [edx + 9], 0xffffffe6
outsd dx, dword [esi]
fstp dword [eax + 0x47]
bnd jo 0x6156e1
out dx, eax
jno 0x615661
rol byte [ecx], 0x4c
inc dword [ecx + 0xaf728f]
movsb byte es:[edi], byte [esi]
adc byte [edx - 0x100adc9e], al
fsub dword [edi]
adc al, 0x97
xchg ecx, eax
sal byte [edi + 0x2f919253], 0xf2
pushal
pop edi
nop
dec ebp
push ecx
cmp bh, bl
test eax, 0xdcf73c4f
lahf
aam 0xc2
adc dl, ch
cld
salc
shl dh, 0x95
jle 0x615719
out 0xb8, al
add eax, 0x3fdaf78
push 0xbff1b041
jmp 0x6156d7
pop ss
adc byte [edi], al
sbb bh, 0x82
cmp edx, dword [eax + 0x4c47e507]
inc edi
dec esp
outsd dx, dword [esi]
dec ecx
sub eax, eax
outsb dx, byte [esi]
and dword [ebx - 0x37], 0x106b8916
mov edi, 0x1498ca20
sbb ch, 0x65
test al, 0x1f
invalid
aaa
and bh, dh
add byte [edi + 0x5f30614f], cl
sahf
xchg edi, eax
adc esp, esp
fsubr dword [ebp + 0x37f0fba0]
pushfd
xchg ebx, eax
dec esp
invalid
cmp dword [ebp - 0x2f06bf55], eax
jmp dword [eax - 0x3f4dc0ec]
std
push 0xffffffffffffff84
inc byte [ebx - 0x6d]
mov ebx, 0x406fad9e
mov edx, esi
dec esp
in al, 0x36
popal
stosb byte es:[edi], al
salc
jl 0x615a4a
lea edi, cs:[esi + 3]
inc ecx
sbb edi, dword [esp]
add eax, dword [ecx + 0x1b]
cmp al, 0x24
xchg edx, eax
nop
fimul word [eax - 0x47]
leave
push ebx
mov dword [0x9dbbd7], eax
jle 0x615a21
invalid
push cs
pop edx
inc ebx
and al, 0x81
in al, 0xc5
imul ebx, eax, 0x94d090e1
pminsw mm2, qword [edx]
out dx, eax
dec esi
jl 0x615a0a
cli
invalid
lahf
jo 0x6159df
cmp cl, ch
cmp byte [esi], ah
pushfd
jecxz 0x6159c4
bound esp, qword [eax + 0x1c]
cwde
jge 0x615a28
mov dword [0x74269a7], eax
pop esi
mov edi, 0x56df66ca
mov byte [ecx], dh
cwde
retf 0xdf66
pop edi
iretd
mov dh, 0x68
xor esp, esi
mov bh, dh
bound ecx, qword [ebx - 0x7a]
push eax
fsubr dword [ecx + 0x79]
and byte [eax - 0x7d], ah
int1
dec edi
outsb dx, byte [esi]
xor bl, cl
adc eax, 0x2b0012cb
add esi, ebx
inc esp
ljmp 0x5db1
push ds
inc ebp
jge 0x615aeb
xor eax, 0x74be6077
pushfd
inc eax
dec eax
mov dl, 0x91
push 0x62f7a31e
lcall 0xf58b, 0xc22047e3
aaa
mov bl, 0xb7
jle 0x615aac
xor ah, ah
jmp 0x78761af3
mov edi, 0x59aadd7
stosb byte es:[edi], al
adc dh, byte [edi]
push eax
lahf
xlatb
lodsd eax, dword [esi]
lcall 0x9f50, 0x3712aa05
jo 0x615a8b
inc ebp
retf
add dword [edi + 0x406253e5], esi
mov byte [ecx], al
invalid
xchg edx, eax
in eax, 0x27
bound ebx, qword [esi - 0x1d]
int 0x78
push cs
inc ebp
ljmp 0xda15
add cl, byte [edx - 0x554aa42e]
stosb byte es:[edi], al
adc byte [edi - 0x41f1e9f8], bl
loope 0x615ab9
call 0x80a26c9e
dec edx
test dword [ecx + 0x2620175c], esp
and byte [esi + 0x4a], ch
sub bl, bh
daa
aas
push 0xb01467d3
or ah, cl
loopne 0x615ab8
inc edi
sub byte [ebp + 0x46de94fe], ah
out dx, eax
daa
mov esi, 0x2fae0c6d
out dx, eax
das
sub byte [ebx + 0x6e], 0xc9
jne 0x615b04
das
ljmp 0x2ec