Function at 0x1001d5f0
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x160
mov eax, dword [0x1003a008]
xor eax, ebp
mov dword [ebp - 4], eax
mov eax, dword [ebp + 8]
xorps xmm0, xmm0
mov dword [ebp - 0x15c], ecx
xor ecx, ecx
mov dword [ebp - 0x158], eax
movups xmmword [ebp - 0xc4], xmm0
mov dword [ebp - 0xf4], 0xd4e3e6d0
movups xmmword [ebp - 0xb4], xmm0
mov word [ebp - 0xf0], 0xe2f3
mov byte [ebp - 0xee], 0
nop
lea eax, [ecx - 0x7e]
xor byte [ebp + ecx - 0xf4], al
inc ecx
cmp ecx, 6
jb 0x1001d640
xor eax, eax
mov byte [ebp - 0xee], 0
cmp byte [ebp - 0xc4], al
je 0x1001d66c
inc eax
cmp byte [ebp + eax - 0xc4], 0
jne 0x1001d661
push ebx
push esi
push edi
lea edi, [ebp - 0xc4]
mov dword [ebp - 0x14c], 0
add edi, eax
mov dword [ebp - 0x118], 0xb1beb3b0
xorps xmm0, xmm0
mov dword [ebp - 0x150], edi
lea esi, [ebp - 0xf4]
mov dword [ebp - 0x114], 0xb9bbbdb7
movups xmmword [ebp - 0x24], xmm0
mov byte [ebp - 0x110], 0
xor ecx, ecx
movups xmmword [ebp - 0x14], xmm0
lea eax, [ecx - 0x7e]
xor byte [ebp + ecx - 0x118], al
inc ecx
cmp ecx, 8
jb 0x1001d6b5
mov al, byte [ebp - 0x118]
mov byte [ebp - 0x110], 0
mov byte [ebp - 0x24], al
test al, al
je 0x1001d6f2
xor ecx, ecx
nop dword [eax + eax]
lea ecx, [ecx + 1]
mov al, byte [ebp + ecx - 0x118]
mov byte [ebp + ecx - 0x24], al
test al, al
jne 0x1001d6e0
movsx ebx, byte [ebp - 0xf4]
mov al, bl
add al, al
lea ecx, [eax + ebx]
add cl, byte [ebp - 0x24]
inc cl
mov byte [ebp - 0x24], cl
mov ecx, 0xc
movsx eax, byte [ebp - 0x24]
cdq
idiv ecx
movzx eax, byte [ebp - 0x23]
or edx, ebx
add al, dl
mov byte [ebp - 0x23], al
movzx eax, byte [ebp - 0x23]
mov cl, byte [ebp - 0x24]
and cl, al
add cl, cl
dec cl
add cl, byte [ebp - 0x21]
mov byte [ebp - 0x21], cl
movsx ecx, byte [ebp - 0x21]
movzx eax, byte [ebp - 0x20]
sar ecx, 6
add al, cl
xor edi, edi
mov byte [ebp - 0x20], al
mov eax, 3
nop dword [eax]
movsx edx, byte [ebp + eax - 0x24]
movsx ecx, byte [ebp + eax - 0x25]
add edx, edx
add ecx, edx
inc eax
lea edi, [edi + ecx*2]
cmp eax, 0x11
jl 0x1001d750
mov ecx, dword [ebp - 0x14c]
mov eax, edi
cdq
mov edi, dword [ebp - 0x150]
lea ecx, [ecx*2 + 0x31]
idiv ecx
test edx, edx
jne 0x1001d7cf
mov eax, dword [ebp - 0x14c]
mov dword [ebp - 0x14c], eax
cmp dword [ebp - 0x14c], 0xe
jle 0x1001d7a2
mov dword [ebp - 0x14c], 1
mov al, byte [ebp - 0xf4]
lea ecx, [ebp - 0xf4]
mov byte [edi], al
test al, al
je 0x1001d7f0
mov eax, ecx
sub edi, eax
nop dword [eax + eax]
mov al, byte [ecx + 1]
lea ecx, [ecx + 1]
mov byte [edi + ecx], al
test al, al
jne 0x1001d7c0
jmp 0x1001d7f0
mov al, byte [ebp - 0xf4]
mov byte [edi], al
test al, al
je 0x1001d7f0
lea eax, [ebp - 0xf4]
sub edi, eax
mov al, byte [esi + 1]
lea esi, [esi + 1]
mov byte [edi + esi], al
test al, al
jne 0x1001d7e3
mov dword [ebp - 0xfc], 0xe4d2faf0
xor ecx, ecx
mov word [ebp - 0xf8], 0xf2ea
mov byte [ebp - 0xf6], 0
nop dword [eax]
lea eax, [ecx - 0x7e]
xor byte [ebp + ecx - 0xfc], al
inc ecx
cmp ecx, 6
jb 0x1001d810
xor eax, eax
mov byte [ebp - 0xf6], 0
cmp byte [ebp - 0xc4], al
je 0x1001d83c
inc eax
cmp byte [ebp + eax - 0xc4], 0
jne 0x1001d831
lea edi, [ebp - 0xc4]
mov dword [ebp - 0x14c], 0
add edi, eax
mov dword [ebp - 0x124], 0xb1beb3b0
xorps xmm0, xmm0
mov dword [ebp - 0x150], edi
lea esi, [ebp - 0xfc]
mov dword [ebp - 0x120], 0xb9bbbdb7
movups xmmword [ebp - 0x44], xmm0
mov byte [ebp - 0x11c], 0
xor ecx, ecx
movups xmmword [ebp - 0x34], xmm0
lea eax, [ecx - 0x7e]
xor byte [ebp + ecx - 0x124], al
inc ecx
cmp ecx, 8
jb 0x1001d882
mov al, byte [ebp - 0x124]
mov byte [ebp - 0x11c], 0
mov byte [ebp - 0x44], al
test al, al
je 0x1001d8c2
xor ecx, ecx
nop dword [eax + eax]
lea ecx, [ecx + 1]
mov al, byte [ebp + ecx - 0x124]
mov byte [ebp + ecx - 0x44], al
test al, al
jne 0x1001d8b0
movsx ebx, byte [ebp - 0xfc]
mov al, bl
add al, al
lea ecx, [eax + ebx]
add cl, byte [ebp - 0x44]
inc cl
mov byte [ebp - 0x44], cl
mov ecx, 0xc
movsx eax, byte [ebp - 0x44]
cdq
idiv ecx
movzx eax, byte [ebp - 0x43]
or edx, ebx
add al, dl
mov byte [ebp - 0x43], al
movzx eax, byte [ebp - 0x43]
mov cl, byte [ebp - 0x44]
and cl, al
add cl, cl
dec cl
add cl, byte [ebp - 0x41]
mov byte [ebp - 0x41], cl
movsx ecx, byte [ebp - 0x41]
movzx eax, byte [ebp - 0x40]
sar ecx, 6
add al, cl
xor edi, edi
mov byte [ebp - 0x40], al
mov eax, 3
nop dword [eax]
movsx edx, byte [ebp + eax - 0x44]
movsx ecx, byte [ebp + eax - 0x45]
add edx, edx
add ecx, edx
inc eax
lea edi, [edi + ecx*2]
cmp eax, 0x11
jl 0x1001d920
mov ecx, dword [ebp - 0x14c]
mov eax, edi
cdq
mov edi, dword [ebp - 0x150]
lea ecx, [ecx*2 + 0x31]
idiv ecx
test edx, edx
jne 0x1001d99f
mov eax, dword [ebp - 0x14c]
mov dword [ebp - 0x14c], eax
cmp dword [ebp - 0x14c], 0xe
jle 0x1001d972
mov dword [ebp - 0x14c], 1
mov al, byte [ebp - 0xfc]
lea ecx, [ebp - 0xfc]
mov byte [edi], al
test al, al
je 0x1001d9c0
mov eax, ecx
sub edi, eax
nop dword [eax + eax]
mov al, byte [ecx + 1]
lea ecx, [ecx + 1]
mov byte [edi + ecx], al
test al, al
jne 0x1001d990
jmp 0x1001d9c0
mov al, byte [ebp - 0xfc]
mov byte [edi], al
test al, al
je 0x1001d9c0
lea eax, [ebp - 0xfc]
sub edi, eax
mov al, byte [esi + 1]
lea esi, [esi + 1]
mov byte [edi + esi], al
test al, al
jne 0x1001d9b3
mov dword [ebp - 0xec], 0xd2fcc6e7
xor ecx, ecx
mov byte [ebp - 0xe8], 0
lea eax, [ecx - 0x7e]
xor byte [ebp + ecx - 0xec], al
inc ecx
cmp ecx, 4
jb 0x1001d9d3
xor eax, eax
mov byte [ebp - 0xe8], 0
cmp byte [ebp - 0xc4], al
je 0x1001d9ff
inc eax
cmp byte [ebp + eax - 0xc4], 0
jne 0x1001d9f4
lea edi, [ebp - 0xc4]
mov dword [ebp - 0x14c], 0
add edi, eax
mov dword [ebp - 0x130], 0xb1beb3b0
xorps xmm0, xmm0
mov dword [ebp - 0x150], edi
lea esi, [ebp - 0xec]
mov dword [ebp - 0x12c], 0xb9bbbdb7
movups xmmword [ebp - 0x64], xmm0
mov byte [ebp - 0x128], 0
xor ecx, ecx
movups xmmword [ebp - 0x54], xmm0
lea eax, [ecx - 0x7e]
xor byte [ebp + ecx - 0x130], al
inc ecx
cmp ecx, 8
jb 0x1001da45
mov al, byte [ebp - 0x130]
mov byte [ebp - 0x128], 0
mov byte [ebp - 0x64], al
test al, al
je 0x1001da82
xor ecx, ecx
nop dword [eax + eax]
lea ecx, [ecx + 1]
mov al, byte [ebp + ecx - 0x130]
mov byte [ebp + ecx - 0x64], al
test al, al
jne 0x1001da70
movsx ebx, byte [ebp - 0xec]
mov al, bl
add al, al
lea ecx, [eax + ebx]
add cl, byte [ebp - 0x64]
inc cl
mov byte [ebp - 0x64], cl
mov ecx, 0xc
movsx eax, byte [ebp - 0x64]
cdq
idiv ecx
movzx eax, byte [ebp - 0x63]
or edx, ebx
add al, dl
mov byte [ebp - 0x63], al
movzx eax, byte [ebp - 0x63]
mov cl, byte [ebp - 0x64]
and cl, al
add cl, cl
dec cl
add cl, byte [ebp - 0x61]
mov byte [ebp - 0x61], cl
movsx ecx, byte [ebp - 0x61]
movzx eax, byte [ebp - 0x60]
sar ecx, 6
add al, cl
xor edi, edi
mov byte [ebp - 0x60], al
mov eax, 3
nop dword [eax]
movsx edx, byte [ebp + eax - 0x64]
movsx ecx, byte [ebp + eax - 0x65]
add edx, edx
add ecx, edx
inc eax
lea edi, [edi + ecx*2]
cmp eax, 0x11
jl 0x1001dae0
mov ecx, dword [ebp - 0x14c]
mov eax, edi
cdq
mov edi, dword [ebp - 0x150]
lea ecx, [ecx*2 + 0x31]
idiv ecx
test edx, edx
jne 0x1001db5f
mov eax, dword [ebp - 0x14c]
mov dword [ebp - 0x14c], eax
cmp dword [ebp - 0x14c], 0xe
jle 0x1001db32
mov dword [ebp - 0x14c], 1
mov al, byte [ebp - 0xec]
lea ecx, [ebp - 0xec]
mov byte [edi], al
test al, al
je 0x1001db80
mov eax, ecx
sub edi, eax
nop dword [eax + eax]
mov al, byte [ecx + 1]
lea ecx, [ecx + 1]
mov byte [edi + ecx], al
test al, al
jne 0x1001db50
jmp 0x1001db80
mov al, byte [ebp - 0xec]
mov byte [edi], al
test al, al
je 0x1001db80
lea eax, [ebp - 0xec]
sub edi, eax
mov al, byte [esi + 1]
lea esi, [esi + 1]
mov byte [edi + esi], al
test al, al
jne 0x1001db73
xorps xmm0, xmm0
mov dword [ebp - 0x104], 0xe4f2e7e3
movups xmmword [ebp - 0xe4], xmm0
mov word [ebp - 0x100], 0xeef6
xor ecx, ecx
movups xmmword [ebp - 0xd4], xmm0
mov byte [ebp - 0xfe], 0
nop dword [eax]
lea eax, [ecx - 0x7e]
xor byte [ebp + ecx - 0x104], al
inc ecx
cmp ecx, 6
jb 0x1001dbb0
xor eax, eax
mov byte [ebp - 0xfe], 0
cmp byte [ebp - 0xe4], al
je 0x1001dbdc
inc eax
cmp byte [ebp + eax - 0xe4], 0
jne 0x1001dbd1
lea edi, [ebp - 0xe4]
mov dword [ebp - 0x14c], 0
add edi, eax
mov dword [ebp - 0x13c], 0xb1beb3b0
xorps xmm0, xmm0
mov dword [ebp - 0x150], edi
lea esi, [ebp - 0x104]
mov dword [ebp - 0x138], 0xb9bbbdb7
movups xmmword [ebp - 0x84], xmm0
mov byte [ebp - 0x134], 0
xor ecx, ecx
movups xmmword [ebp - 0x74], xmm0
lea eax, [ecx - 0x7e]
xor byte [ebp + ecx - 0x13c], al
inc ecx
cmp ecx, 8
jb 0x1001dc25
mov al, byte [ebp - 0x13c]
mov byte [ebp - 0x134], 0
mov byte [ebp - 0x84], al
test al, al
je 0x1001dc65
xor ecx, ecx
nop
lea ecx, [ecx + 1]
mov al, byte [ebp + ecx - 0x13c]
mov byte [ebp + ecx - 0x84], al
test al, al
jne 0x1001dc50
movsx ebx, byte [ebp - 0x104]
mov al, bl
add al, al
lea ecx, [eax + ebx]
add cl, byte [ebp - 0x84]
inc cl
mov byte [ebp - 0x84], cl
mov ecx, 0xc
movsx eax, byte [ebp - 0x84]
cdq
idiv ecx
movzx eax, byte [ebp - 0x83]
or edx, ebx
add al, dl
mov byte [ebp - 0x83], al
movzx eax, byte [ebp - 0x83]
mov cl, byte [ebp - 0x84]
and cl, al
add cl, cl
dec cl
add cl, byte [ebp - 0x81]
mov byte [ebp - 0x81], cl
movsx ecx, byte [ebp - 0x81]
movzx eax, byte [ebp - 0x80]
sar ecx, 6
add al, cl
xor edi, edi
mov byte [ebp - 0x80], al
mov eax, 3
nop word [eax + eax]
movsx edx, byte [ebp + eax - 0x84]
movsx ecx, byte [ebp + eax - 0x85]
add edx, edx
add ecx, edx
inc eax
lea edi, [edi + ecx*2]
cmp eax, 0x11
jl 0x1001dce0
mov ecx, dword [ebp - 0x14c]
mov eax, edi
cdq
mov edi, dword [ebp - 0x150]
lea ecx, [ecx*2 + 0x31]
idiv ecx
test edx, edx
jne 0x1001dd5f
mov eax, dword [ebp - 0x14c]
mov dword [ebp - 0x14c], eax
cmp dword [ebp - 0x14c], 0xe
jle 0x1001dd38
mov dword [ebp - 0x14c], 1
mov al, byte [ebp - 0x104]
lea ecx, [ebp - 0x104]
mov byte [edi], al
test al, al
je 0x1001dd80
mov eax, ecx
sub edi, eax
nop
mov al, byte [ecx + 1]
lea ecx, [ecx + 1]
mov byte [ecx + edi], al
test al, al
jne 0x1001dd50
jmp 0x1001dd80
mov al, byte [ebp - 0x104]
mov byte [edi], al
test al, al
je 0x1001dd80
lea eax, [ebp - 0x104]
sub edi, eax
mov al, byte [esi + 1]
lea esi, [esi + 1]
mov byte [esi + edi], al
test al, al
jne 0x1001dd73
mov dword [ebp - 0x10c], 0xe1aab1b1
xor ecx, ecx
mov word [ebp - 0x108], 0xebea
mov byte [ebp - 0x106], 0
nop dword [eax]
lea eax, [ecx - 0x7e]
xor byte [ebp + ecx - 0x10c], al
inc ecx
cmp ecx, 6
jb 0x1001dda0
xor eax, eax
mov byte [ebp - 0x106], 0
cmp byte [ebp - 0xe4], al
je 0x1001ddcc
inc eax
cmp byte [ebp + eax - 0xe4], 0
jne 0x1001ddc1
lea edi, [ebp - 0xe4]
mov dword [ebp - 0x14c], 0
add edi, eax
mov dword [ebp - 0x148], 0xb1beb3b0
xorps xmm0, xmm0
mov dword [ebp - 0x150], edi
lea esi, [ebp - 0x10c]
mov dword [ebp - 0x144], 0xb9bbbdb7
movups xmmword [ebp - 0xa4], xmm0
mov byte [ebp - 0x140], 0
xor ecx, ecx
movups xmmword [ebp - 0x94], xmm0
nop dword [eax + eax]
lea eax, [ecx - 0x7e]
xor byte [ebp + ecx - 0x148], al
inc ecx
cmp ecx, 8
jb 0x1001de20
mov al, byte [ebp - 0x148]
mov byte [ebp - 0x140], 0
mov byte [ebp - 0xa4], al
test al, al
je 0x1001de65
xor ecx, ecx
nop dword [eax]
lea ecx, [ecx + 1]
mov al, byte [ebp + ecx - 0x148]
mov byte [ebp + ecx - 0xa4], al
test al, al
jne 0x1001de50
movsx ebx, byte [ebp - 0x10c]
mov al, bl
add al, al
lea ecx, [eax + ebx]
add cl, byte [ebp - 0xa4]
inc cl
mov byte [ebp - 0xa4], cl
mov ecx, 0xc
movsx eax, byte [ebp - 0xa4]
cdq
idiv ecx
movzx eax, byte [ebp - 0xa3]
or edx, ebx
add al, dl
mov byte [ebp - 0xa3], al
movzx eax, byte [ebp - 0xa3]
mov cl, byte [ebp - 0xa4]
and cl, al
add cl, cl
dec cl
add cl, byte [ebp - 0xa1]
mov byte [ebp - 0xa1], cl
movsx ecx, byte [ebp - 0xa1]
movzx eax, byte [ebp - 0xa0]
sar ecx, 6
add al, cl
xor edi, edi
mov byte [ebp - 0xa0], al
mov eax, 3
movsx edx, byte [ebp + eax - 0xa4]
movsx ecx, byte [ebp + eax - 0xa5]
add edx, edx
add ecx, edx
inc eax
lea edi, [edi + ecx*2]
cmp eax, 0x11
jl 0x1001dee0
mov ecx, dword [ebp - 0x14c]
mov eax, edi
cdq
mov edi, dword [ebp - 0x150]
lea ecx, [ecx*2 + 0x31]
idiv ecx
test edx, edx
jne 0x1001df5f
mov eax, dword [ebp - 0x14c]
mov dword [ebp - 0x14c], eax
cmp dword [ebp - 0x14c], 0xe
jle 0x1001df38
mov dword [ebp - 0x14c], 1
mov al, byte [ebp - 0x10c]
lea ecx, [ebp - 0x10c]
mov byte [edi], al
test al, al
je 0x1001df80
mov eax, ecx
sub edi, eax
nop
mov al, byte [ecx + 1]
lea ecx, [ecx + 1]
mov byte [ecx + edi], al
test al, al
jne 0x1001df50
jmp 0x1001df80
mov al, byte [ebp - 0x10c]
mov byte [edi], al
test al, al
je 0x1001df80
lea eax, [ebp - 0x10c]
sub edi, eax
mov al, byte [esi + 1]
lea esi, [esi + 1]
mov byte [esi + edi], al
test al, al
jne 0x1001df73
lea edx, [ebp - 0xc4]
lea ecx, [ebp - 0xe4]
call fcn.1001ce80
mov esi, eax
test esi, esi
je 0x1001e02a
mov edi, dword [ebp - 0x158]
lea eax, [ebp - 0x154]
mov ebx, dword [ebp - 0x15c]
push eax
push 0
lea eax, [ebp - 0x160]
mov dword [edi], 0
push eax
push 0
push str.ProductName
push ebx
call esi
test eax, eax
jne 0x1001e02a
mov eax, dword [ebp - 0x154]
inc eax
push 1
push eax
call fcn.100215c0
add esp, 8
mov dword [edi], eax
test eax, eax
jne 0x1001dff9
pop edi
pop esi
mov eax, 0xfffffffe
pop ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.1001e319
mov esp, ebp
pop ebp
ret
lea ecx, [ebp - 0x154]
push ecx
push eax
lea eax, [ebp - 0x160]
push eax
push 0
push str.ProductName
push ebx
call esi
neg eax
pop edi
sbb eax, eax
pop esi
and eax, 0xfffffffd
pop ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.1001e319
mov esp, ebp
pop ebp
ret
mov ecx, dword [ebp - 4]
or eax, 0xffffffff
pop edi
pop esi
xor ecx, ebp
pop ebx
call fcn.1001e319
mov esp, ebp
pop ebp
ret