Function at 0x41f504
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0xcf2552
mov eax, dword fs:[0]
push eax
mov dword fs:[0], esp
sub esp, 0xcc
mov dword [ebp - 0x10], esp
mov dword [ebp - 0x1c], edi
mov dword [ebp - 0x18], esi
mov dword [ebp - 0x14], ebx
mov edx, dword [ebp + 0x10]
movsx eax, byte [edx + 0x15]
mov dword [ebp - 0x20], ecx
test eax, eax
je 0x41f62f
push 0xd27f00
lea ecx, [ebp - 0x64]
call fcn.0041e9c8
mov dword [ebp - 4], 0
lea ecx, [ebp - 0x8c]
mov dword [ebp - 0x38], ecx
mov dword [ebp - 0x34], ecx
call 0xcd2981
mov dword [ebp - 4], 1
mov dword [ebp - 0x8c], 0xe442a8
lea esi, [ebp - 0x80]
xor eax, eax
mov dword [ebp - 0x68], 0xf
mov dword [ebp - 0x6c], eax
mov byte [ebp - 0x7c], al
mov ebx, dword [ebp - 0x50]
mov dword [ebp - 0x30], esi
test ebx, ebx
lea edi, [ebp - 0x64]
mov dword [ebp - 0x2c], edi
mov dword [ebp - 0x28], eax
jae 0x41f5a3
call 0xd05525
mov ebx, dword [ebp - 0x50]
lea eax, [ebp - 0x80]
lea edx, [ebp - 0x64]
cmp ebx, 0xffffffff
jbe 0x41f5b3
mov ebx, 0xffffffff
mov dword [ebp - 0x3c], ebx
cmp eax, edx
je 0x41facc
mov dword [ebp - 0x40], ebx
cmp ebx, 0xfffffffe
jbe 0x41f5ce
call 0xd054e6
mov ebx, dword [ebp - 0x40]
mov esi, dword [ebp - 0x68]
cmp esi, ebx
jb 0x41f9c4
test ebx, ebx
je 0x41f9a5
test ebx, ebx
ja 0x41f942
mov dword [ebp - 4], 0
push 0xe4a780
mov eax, dword [ebp - 0x38]
lea edx, [ebp - 0x8c]
mov dword [eax], 0xe442cc
push edx
call 0xcd2bfe
mov dword [ebp - 4], 0xffffffff
mov eax, dword [ebp - 0x4c]
cmp eax, 0x10
jae 0x41f934
mov edx, dword [ebp + 0x10]
mov dword [ebp - 0x4c], 0xf
xor eax, eax
mov dword [ebp - 0x50], eax
mov byte [ebp - 0x60], al
mov eax, dword [ebp + 0xc]
mov ebx, edx
test eax, eax
je 0x41ffe3
movsx eax, byte [edx + 0x15]
test eax, eax
je 0x41f64b
call 0xcd2968
jmp 0x41f683
mov eax, dword [edx + 8]
movsx ecx, byte [eax + 0x15]
test ecx, ecx
je 0x41f66a
mov ecx, dword [edx + 4]
movsx eax, byte [ecx + 0x15]
test eax, eax
je 0x41fbb3
mov dword [ebp + 0x10], ecx
jmp 0x41f683
mov edx, dword [eax]
movsx ecx, byte [edx + 0x15]
test ecx, ecx
jne 0x41f680
mov eax, dword [eax]
mov edx, dword [eax]
movsx ecx, byte [edx + 0x15]
test ecx, ecx
je 0x41f674
mov dword [ebp + 0x10], eax
mov eax, dword [ebx]
movsx edx, byte [eax + 0x15]
mov edi, ebx
test edx, edx
je 0x41f694
mov esi, dword [ebx + 8]
jmp 0x41f6a9
mov edx, dword [ebx + 8]
movsx ecx, byte [edx + 0x15]
test ecx, ecx
je 0x41f6a3
mov esi, eax
jmp 0x41f6a9
mov edi, dword [ebp + 0x10]
mov esi, dword [edi + 8]
cmp edi, ebx
je 0x41ff03
mov dword [eax + 4], edi
mov eax, dword [ebx]
mov dword [edi], eax
cmp edi, dword [ebx + 8]
jne 0x41f6c1
mov ecx, edi
jmp 0x41f6de
mov ecx, dword [edi + 4]
movsx eax, byte [esi + 0x15]
test eax, eax
je 0x41fefb
mov dword [ecx], esi
mov eax, dword [ebx + 8]
mov dword [edi + 8], eax
mov edx, dword [ebx + 8]
mov dword [edx + 4], edi
mov eax, dword [ebp - 0x20]
mov dword [ebp - 0x24], eax
mov eax, dword [eax + 4]
cmp ebx, dword [eax + 4]
je 0x41fef3
mov eax, dword [ebx + 4]
cmp ebx, dword [eax]
je 0x41f6fc
mov dword [eax + 8], edi
jmp 0x41f6fe
mov dword [eax], edi
mov eax, dword [ebx + 4]
mov dword [edi + 4], eax
movzx eax, byte [edi + 0x14]
movzx edx, byte [ebx + 0x14]
mov byte [edi + 0x14], dl
mov byte [ebx + 0x14], al
movsx eax, byte [ebx + 0x14]
cmp eax, 1
je 0x41fbda
push ebx
call 0xcd11f9
pop ecx
mov edx, dword [ebp - 0x20]
mov eax, dword [edx + 8]
test eax, eax
je 0x41f736
add eax, 0xffffffff
mov dword [edx + 8], eax
mov eax, dword [ebp + 8]
mov edx, dword [ebp + 0xc]
mov ecx, dword [ebp + 0x10]
mov edi, dword [ebp - 0x1c]
mov esi, dword [ebp - 0x18]
mov ebx, dword [ebp - 0x14]
mov dword [eax], edx
mov dword [eax + 4], ecx
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
mov esp, ebp
pop ebp
ret 0xc
mov edx, dword [ebp - 0x94]
test edx, edx
ja 0x41f84f
mov edx, dword [ebp - 0x98]
mov eax, dword [edx + 0x18]
cmp eax, 0x10
jae 0x41f83b
mov dword [edx + 0x18], 0xf
mov eax, dword [ebp - 0x98]
mov dword [eax + 0x14], 0
mov eax, dword [ebp - 0x98]
mov edx, dword [eax + 0x18]
cmp edx, 0x10
jb 0x41f7e0
mov eax, dword [eax + 4]
jmp 0x41f7e3
add eax, 4
mov ecx, dword [ebp - 0xa0]
mov byte [eax], 0
mov edx, dword [ebp - 0x98]
mov eax, dword [ebp - 0x9c]
mov dword [edx + 4], eax
mov ebx, dword [ebp - 0x98]
mov dword [ebx + 0x18], ecx
mov edi, dword [ebp - 0x98]
mov esi, dword [ebp - 0x94]
mov dword [edi + 0x14], esi
mov edx, dword [ebp - 0x98]
mov eax, dword [edx + 0x18]
cmp eax, 0x10
jb 0x41f826
mov edx, dword [edx + 4]
jmp 0x41f829
add edx, 4
mov eax, dword [ebp - 0x94]
mov byte [edx + eax], 0
mov ebx, dword [ebp - 0x40]
jmp 0x41f5e1
push dword [edx + 4]
call 0xcd11f9
pop ecx
mov edx, dword [ebp - 0x98]
jmp 0x41f7b9
mov ecx, dword [ebp - 0x98]
mov eax, dword [ecx + 0x18]
cmp eax, 0x10
jb 0x41f862
mov ecx, dword [ecx + 4]
jmp 0x41f865
add ecx, 4
mov ebx, dword [ebp - 0xa0]
movzx eax, byte [ebp - 0xb4]
mov byte [ebp - 0xb8], al
push edx
add ebx, 1
push ecx
push ebx
push dword [ebp - 0x9c]
call 0xcd2c48
add esp, 0x10
jmp 0x41f7a7
push dword [ebp - 0x60]
call 0xcd11f9
pop ecx
jmp 0x41f61d
mov ebx, dword [ebp - 0x30]
mov ecx, dword [ebx + 0x18]
cmp ecx, 0x10
jb 0x41f952
mov ebx, dword [ebx + 4]
jmp 0x41f955
add ebx, 4
mov edx, dword [ebp - 0x2c]
mov eax, dword [edx + 0x18]
cmp eax, 0x10
jb 0x41f965
mov edx, dword [edx + 4]
jmp 0x41f968
add edx, 4
add edx, dword [ebp - 0x28]
push dword [ebp - 0x3c]
movzx eax, byte [ebp - 0x44]
mov byte [ebp - 0x48], al
push edx
push ecx
push ebx
call 0xcd2c48
add esp, 0x10
mov ecx, dword [ebp - 0x3c]
mov eax, dword [ebp - 0x30]
mov dword [eax + 0x14], ecx
mov eax, dword [ebp - 0x30]
mov edx, dword [eax + 0x18]
cmp edx, 0x10
jb 0x41f999
mov eax, dword [eax + 4]
jmp 0x41f99c
add eax, 4
mov byte [eax + ecx], 0
jmp 0x41f5e9
mov dword [ebp - 0x6c], 0
cmp esi, 0x10
jb 0x41f9b6
mov eax, dword [ebp - 0x7c]
jmp 0x41f9b9
lea eax, [ebp - 0x7c]
mov byte [eax], 0
mov ebx, dword [ebp - 0x40]
jmp 0x41f5e1
mov edx, dword [ebp - 0x6c]
mov dword [ebp - 0xac], ebx
mov ecx, ebx
lea eax, [ebp - 0x80]
or ecx, 0xf
cmp ecx, 0xfffffffe
mov dword [ebp - 0x98], eax
mov dword [ebp - 0x94], edx
mov dword [ebp - 0xb0], ecx
mov dword [ebp - 0xa0], ecx
jbe 0x41fa00
mov dword [ebp - 0xb0], ebx
mov dword [ebp - 0xa0], ebx
jmp 0x41fa17
mov ebx, ecx
mov ecx, esi
shr ecx, 1
mov eax, 0xaaaaaaab
mul ebx
shr edx, 1
cmp ecx, edx
ja 0x41faa9
mov dword [ebp - 0x9c], 0
mov dword [ebp - 4], 2
mov eax, dword [ebp - 0xb0]
add eax, 1
mov dword [ebp - 0xb0], eax
jne 0x41fa43
xor eax, eax
mov dword [ebp - 0xb0], eax
jmp 0x41fa8a
mov ecx, eax
xor edx, edx
mov eax, 0xffffffff
div ecx
cmp eax, 1
jae 0x41fa8a
mov dword [ebp - 0xbc], 0
lea eax, [ebp - 0xbc]
push eax
lea ecx, [ebp - 0xcc]
call 0xcd2992
mov dword [ebp - 0xcc], 0xe40cb4
lea eax, [ebp - 0xcc]
push 0xe4a720
push eax
call 0xcd2bfe
mov eax, dword [ebp - 0xb0]
push eax
call 0xcd118f
pop ecx
mov dword [ebp - 0x9c], eax
mov dword [ebp - 4], 1
jmp 0x41f799
mov eax, ecx
neg eax
add eax, 0xfffffffe
cmp esi, eax
ja 0x41fa17
lea eax, [esi + ecx]
mov dword [ebp - 0xb0], eax
mov dword [ebp - 0xa0], eax
jmp 0x41fa17
mov edx, dword [ebp - 0x6c]
cmp edx, ebx
jae 0x41fadb
call 0xd05525
mov edx, dword [ebp - 0x6c]
mov eax, edx
sub eax, ebx
cmp eax, 0xffffffff
mov esi, eax
jb 0x41faeb
mov esi, 0xffffffff
test esi, esi
ja 0x41fb5c
test edx, edx
jae 0x41fafb
call 0xd05525
mov edx, dword [ebp - 0x6c]
test edx, edx
mov ebx, edx
jb 0x41fb06
mov ebx, 0
test ebx, ebx
jbe 0x41f5e9
mov ecx, dword [ebp - 0x68]
cmp ecx, 0x10
jb 0x41fb1e
mov esi, dword [ebp - 0x7c]
mov eax, dword [ebp - 0x7c]
jmp 0x41fb24
lea esi, [ebp - 0x7c]
lea eax, [ebp - 0x7c]
mov byte [ebp - 0xa8], 0
add eax, ebx
sub edx, ebx
push edx
push eax
push ecx
push esi
call 0xcd2cc3
add esp, 0x10
mov edx, dword [ebp - 0x6c]
mov eax, dword [ebp - 0x68]
sub edx, ebx
mov dword [ebp - 0x6c], edx
cmp eax, 0x10
jb 0x41fb50
mov eax, dword [ebp - 0x7c]
jmp 0x41fb53
lea eax, [ebp - 0x7c]
mov byte [eax + edx], 0
jmp 0x41f5e9
mov ecx, dword [ebp - 0x68]
cmp ecx, 0x10
jb 0x41fb6c
mov edi, dword [ebp - 0x7c]
mov edx, dword [ebp - 0x7c]
jmp 0x41fb72
lea edi, [ebp - 0x7c]
lea edx, [ebp - 0x7c]
mov byte [ebp - 0xa4], 0
add edi, ebx
sub ecx, ebx
add ebx, esi
add ebx, edx
sub eax, esi
push eax
push ebx
push ecx
push edi
call 0xcd2cc3
add esp, 0x10
mov edx, dword [ebp - 0x6c]
mov eax, dword [ebp - 0x68]
sub edx, esi
mov dword [ebp - 0x6c], edx
cmp eax, 0x10
jb 0x41fba4
mov eax, dword [ebp - 0x7c]
jmp 0x41fba7
lea eax, [ebp - 0x7c]
mov byte [eax + edx], 0
mov edx, dword [ebp - 0x6c]
jmp 0x41faef
cmp edx, dword [ecx + 8]
jne 0x41f665
mov dword [ebp + 0x10], ecx
mov edx, ecx
mov ecx, dword [ecx + 4]
movsx eax, byte [ecx + 0x15]
test eax, eax
jne 0x41f665
cmp edx, dword [ecx + 8]
je 0x41fbbc
jmp 0x41f665
mov eax, dword [ebp - 0x24]
mov edx, dword [eax + 4]
cmp esi, dword [edx + 4]
je 0x41fbee
movsx eax, byte [esi + 0x14]
cmp eax, 1
je 0x41fbf7
mov byte [esi + 0x14], 1
jmp 0x41f71f
mov edi, dword [ecx]
cmp esi, edi
je 0x41fd85
movsx eax, byte [edi + 0x14]
test eax, eax
je 0x41fd34
movsx eax, byte [edi + 0x15]
test eax, eax
jne 0x41fc3a
mov eax, dword [edi + 8]
movsx edx, byte [eax + 0x14]
mov dword [ebp - 0xb0], eax
cmp edx, 1
jne 0x41fcb0
mov eax, dword [edi]
movsx edx, byte [eax + 0x14]
cmp edx, 1
jne 0x41fc55
mov byte [edi + 0x14], 0
mov eax, dword [ebp - 0x24]
mov edx, dword [eax + 4]
mov esi, ecx
mov ecx, dword [ecx + 4]
cmp esi, dword [edx + 4]
je 0x41fbee
movsx eax, byte [esi + 0x14]
cmp eax, 1
je 0x41fbf7
jmp 0x41fbee
movzx eax, byte [ecx + 0x14]
mov byte [edi + 0x14], al
mov edx, 1
mov byte [ecx + 0x14], dl
mov edi, dword [edi]
mov byte [edi + 0x14], dl
mov eax, dword [ecx]
mov edx, dword [eax + 8]
mov dword [ecx], edx
mov edi, dword [eax + 8]
movsx edx, byte [edi + 0x15]
test edx, edx
je 0x41fcab
mov edi, dword [ebp - 0x24]
mov edx, dword [ecx + 4]
mov dword [eax + 4], edx
mov edx, dword [edi + 4]
cmp ecx, dword [edx + 4]
je 0x41fca6
mov edx, dword [ecx + 4]
cmp ecx, dword [edx + 8]
je 0x41fc98
mov dword [edx], eax
jmp 0x41fc9b
mov dword [edx + 8], eax
mov dword [eax + 8], ecx
mov dword [ecx + 4], eax
jmp 0x41fbee
mov dword [edx + 4], eax
jmp 0x41fc9b
mov dword [edi + 4], ecx
jmp 0x41fc7b
mov eax, dword [edi]
movsx edx, byte [eax + 0x14]
cmp edx, 1
jne 0x41fc55
mov eax, dword [ebp - 0xb0]
mov byte [eax + 0x14], 1
mov eax, dword [edi + 8]
mov byte [edi + 0x14], 0
mov edx, dword [eax]
mov dword [edi + 8], edx
mov edx, dword [eax]
mov dword [ebp - 0xb0], eax
movsx eax, byte [edx + 0x15]
test eax, eax
je 0x41fd2f
mov edx, dword [ebp - 0xb0]
mov eax, dword [edi + 4]
mov dword [edx + 4], eax
mov eax, dword [ebp - 0x24]
mov edx, dword [eax + 4]
cmp edi, dword [edx + 4]
je 0x41fd24
mov eax, dword [edi + 4]
cmp edi, dword [eax]
je 0x41fd0a
mov edx, dword [ebp - 0xb0]
mov dword [eax + 8], edx
jmp 0x41fd12
mov edx, dword [ebp - 0xb0]
mov dword [eax], edx
mov eax, dword [ebp - 0xb0]
mov dword [eax], edi
mov dword [edi + 4], eax
mov edi, dword [ecx]
jmp 0x41fc55
mov eax, dword [ebp - 0xb0]
mov dword [edx + 4], eax
jmp 0x41fd12
mov dword [edx + 4], edi
jmp 0x41fce1
mov byte [edi + 0x14], 1
mov eax, dword [ecx]
mov byte [ecx + 0x14], 0
mov edx, dword [eax + 8]
mov dword [ecx], edx
mov edx, dword [eax + 8]
movsx edi, byte [edx + 0x15]
test edi, edi
je 0x41fd80
mov edi, dword [ebp - 0x24]
mov edx, dword [ecx + 4]
mov dword [eax + 4], edx
mov edx, dword [edi + 4]
cmp ecx, dword [edx + 4]
je 0x41fd7b
mov edx, dword [ecx + 4]
cmp ecx, dword [edx + 8]
je 0x41fd6b
mov dword [edx], eax
jmp 0x41fd6e
mov dword [edx + 8], eax
mov dword [eax + 8], ecx
mov edi, dword [ecx]
mov dword [ecx + 4], eax
jmp 0x41fc0d
mov dword [edx + 4], eax
jmp 0x41fd6e
mov dword [edx + 4], ecx
jmp 0x41fd4e
mov edi, dword [ecx + 8]
movsx eax, byte [edi + 0x14]
test eax, eax
je 0x41fea3
movsx eax, byte [edi + 0x15]
test eax, eax
jne 0x41fc3a
mov eax, dword [edi]
movsx edx, byte [eax + 0x14]
mov dword [ebp - 0xb0], eax
cmp edx, 1
jne 0x41fe1b
mov eax, dword [edi + 8]
movsx edx, byte [eax + 0x14]
cmp edx, 1
je 0x41fc36
movzx eax, byte [ecx + 0x14]
mov byte [edi + 0x14], al
mov edx, 1
mov byte [ecx + 0x14], dl
mov edi, dword [edi + 8]
mov byte [edi + 0x14], dl
mov eax, dword [ecx + 8]
mov edx, dword [eax]
mov dword [ecx + 8], edx
mov edi, dword [eax]
invalid
xor dword [esi + 0x70], eax
insd dword es:[edi], dx
shr byte [esi], cl
movsb byte es:[edi], byte [esi]
shl byte [eax], cl
or eax, 0xab03ba32
pop ds
sub ebx, edx
dec edi
mov dword [ebx - 0x15b5da5], 0x36b0620c
inc edi
mov bl, 0xe4
and byte [ebx + 0x2a1fa2cd], dh
mov byte [0xd9eab59e], al
invalid
sal dl, 0x66
ret 0x137f
and byte [ebx], ch
wait
mov ss, word [edi - 0x5a]
push ds
or ebp, dword [ebx]
mov bl, 1
iretd
ja 0x41fece
inc ecx
mov esi, 0x6ff6417e
inc eax
mov bh, 0x20
sar dword [ecx + 0x70], 0xe1
scasd eax, dword es:[edi]
dec eax
and dword [ecx + 0x40], eax
jl 0x41ff10
scasb al, byte es:[edi]
cmp esp, dword [edx + 0x73038f32]
push esi
jae 0x41fef0
dec esi
dec esp
mov byte ds:[0x134617c9], al
adc bh, byte [ebx - 0x5057f382]
mov ebx, 0xafa80c7e
jno 0x41fe7c
test dword [ecx], esp
sahf
js 0x41febf
jns 0x41fe6d
out dx, al
xor eax, 0xc33e9e3e
add al, byte [ecx]
jb 0x41fe98
sahf
ret
jno 0x41fe5b
neg byte [esi - 0x69]
xchg edi, eax
adc edx, 0x6e
pop eax
add edi, dword [edi + ebx*2 + 0x6ecfd333]
sbb dword [ecx + 0x7a2f4efc], edi
or byte [esi], bh
adc byte [edx], 0x7f
dec esi
das
jp 0x41feda
adc byte ds:[edx], 0x7f
cdq
cmp al, 0xff
unpckhps xmm5, xmmword [esi - 0x7f]
sahf
aad 0xa8
dec dword [ecx + 0x50]
adc eax, 0xd59e816e
test al, 0xff
dec ecx
push eax
cdq
in al, dx
fild word [esp + esi*4 + 0x85ee1ef]
inc ebp
sbb al, 0x52
jg 0x41feef
inc byte [edx + 0xf0590ef]
rcr byte [edx - 0x5100cbd3], 0xca
imul dword [esi]
cld
sahf
sub byte [edi], 0xf9
sub bh, 0x90
nop
add eax, 0x2d9ac00f
xor al, 0xff
scasb al, byte es:[edi]
retf 0x2ef7
stc
clc
loope 0x41ff35
nop
push cs
aas
mov edi, 0x1ad5c3f6
test dword [0x17c49d94], ebp
add byte [eax], dl
loop 0x41ff7f
jne 0x41feb3
xchg ecx, eax
dec edi
fisub dword [edi - 0x48ccf88a]
sbb cl, byte [edi + 0x66f6987e]
jle 0x41ffab
jbe 0x41ff29
pop es
xor esi, dword [edi - 0x678170e6]
mul byte [esi + 0x7e]
jg 0x41ff43
jle 0x41ffab
push ss
or edx, dword [edx - 0x25]
jg 0x41ff20
inc esi
jns 0x41fec3
adc byte [esi + 0x16f2302e], al
xor dl, dh
push ss
and byte [edi], bh
pop edi
push esi
mov al, byte [0xab3b7a26]
stosd dword es:[edi], eax
push cs
maxps xmm0, xmm0
cli
mov cl, byte [eax - 0x71]
scasd eax, dword es:[edi]
leave
int1
ja 0x41ff21
inc edx
or eax, esi
adc eax, 0xd73dcc42
imul edx, esi, 0x6eb6aacf
push ecx
sub bh, byte [edi]
int1
jno 0x41ff7a
scasd eax, dword es:[edi]
out dx, al
and al, 0x7e
dec ecx
pushal
mov ecx, dword [ecx - 0x61]
neg byte [edi]
outsd dx, dword [esi]
neg dword [esi + 0x5c619d81]
das
std
hlt
jae 0x41ff37
xchg edi, esi
mov eax, dword [0xbe0e93dd]
inc edx
sbb eax, ebx
push edi
vmulps xmm5, xmm1, xmmword [edi]
test eax, 0x7e31cf2e
or byte [ecx + 0x7d035841], al
insd dword es:[edi], dx
cmc
xor dword [esi + 8], edi
add dword [ecx + 0x58], 0xf56d7d03
invalid
out 0x53, eax
inc edx
push edx
jb 0x41ff93
pop edx
pushfd
retf 0x6785
out dx, al
xchg edx, eax
invalid