Function at 0x8858e0
Capabilities:
Encode data using xor

Disassembly:
push ebx
push edi
push esi
test ecx, ecx
jne 0x8858f1
mov eax, 6
jmp 0x886129
mov eax, fcn.00885600
mov edx, 3
mov esi, ecx
movzx edi, byte [0xbc31df]
sub edx, eax
xor eax, eax
mov ecx, edx
xor ecx, fcn.00885600
sete al
mov ecx, eax
xor ecx, 1
lea eax, [eax + ecx*2 + 2]
bt edi, eax
jb 0x885a5b
mov al, byte [0xbc31df]
mov edi, edx
xor ecx, ecx
mov ah, 1
xor edi, fcn.00885600
sete cl
mov ebx, ecx
xor ebx, 1
lea ecx, [ecx + ebx*2 + 2]
xor cl, 7
shl ah, cl
or ah, al
lock cmpxchg byte [0xbc31df], ah
jne 0x88592a
mov edx, fcn.00885600
mov ecx, 3
movzx eax, al
sub ecx, edx
xor edx, edx
mov edi, ecx
xor edi, fcn.00885600
sete dl
mov ebx, edx
xor ebx, 1
lea edx, [edx + ebx*2 + 2]
xor dl, 7
movzx edx, dl
bt eax, edx
jae 0x8859aa
mov edx, ecx
xor eax, eax
movzx edi, byte [0xbc31df]
xor edx, fcn.00885600
sete al
mov edx, eax
xor edx, 1
lea eax, [eax + edx*2 + 2]
bt edi, eax
jae 0x885983
jmp 0x885a5b
xor eax, eax
xor ecx, fcn.00885600
movzx edx, byte [0xbc31df]
sete al
mov ecx, eax
xor ecx, 1
lea eax, [eax + ecx*2 + 2]
bt edx, eax
jb 0x885a2e
mov eax, fcn.00885600
mov ecx, 3
sub ecx, eax
xor eax, eax
xor ecx, fcn.00885600
sete al
mov ecx, eax
not ecx
and ecx, 5
lea ecx, [eax + ecx*2 + 0x587f5d2]
mov eax, dword [0xbc31d0]
xor eax, ecx
mov dword [0xbc31d0], eax
not eax
mov edx, dword [0xbc31d4]
imul eax, ecx
and cl, 7
lea edi, [eax + eax]
xor edx, eax
shr eax, 0x1e
mov dword [0xbc31d4], edx
or eax, edi
not edx
imul edx, eax
xor dword [str.___rZ], edx
mov dl, 1
shl dl, cl
or byte [0xbc31df], dl
mov eax, fcn.00885600
mov ecx, 3
sub ecx, eax
xor eax, eax
xor ecx, fcn.00885600
sete al
mov ecx, eax
xor ecx, 1
lea ecx, [eax + ecx*2 + 2]
mov al, 0xfe
xor cl, 7
rol al, cl
and byte [0xbc31df], al
mov ecx, esi
mov edx, 0xbc31d0
call fcn.0088ced0
mov ecx, eax
xor eax, eax
test ecx, ecx
jne 0x886129
mov edx, 0x887b00
xor eax, eax
movzx edi, byte [0xbc31ef]
imul edx, edx
and edx, 3
cmp edx, 3
sete al
mov ecx, eax
xor ecx, 1
lea eax, [eax + ecx*2 + 6]
and al, 7
movzx eax, al
bt edi, eax
jb 0x885bd2
mov al, byte [0xbc31ef]
xor ecx, ecx
cmp edx, 3
mov ah, 1
sete cl
mov ebx, ecx
xor ebx, 1
lea ecx, [ecx + ebx*2 + 6]
and cl, 7
xor cl, 7
shl ah, cl
or ah, al
lock cmpxchg byte [0xbc31ef], ah
jne 0x885aa9
mov ecx, 0x887b00
xor edx, edx
movzx eax, al
imul ecx, ecx
and ecx, 3
cmp ecx, 3
sete dl
mov ebx, edx
xor ebx, 1
lea edx, [edx + ebx*2 + 6]
and dl, 7
xor dl, 7
movzx edx, dl
bt eax, edx
jae 0x885b24
xor eax, eax
cmp ecx, 3
movzx edi, byte [0xbc31ef]
sete al
mov edx, eax
xor edx, 1
lea eax, [eax + edx*2 + 6]
and al, 7
movzx eax, al
bt edi, eax
jae 0x885afd
jmp 0x885bd2
xor eax, eax
cmp ecx, 3
movzx edx, byte [0xbc31ef]
sete al
mov ecx, eax
xor ecx, 1
lea eax, [eax + ecx*2 + 6]
and al, 7
movzx eax, al
bt edx, eax
jb 0x885ba6
mov ecx, 0x887b00
xor eax, eax
imul ecx, ecx
and ecx, 3
cmp ecx, 3
sete al
mov ecx, eax
not ecx
and ecx, 9
lea ecx, [eax + ecx*2 + 0x34145d66]
mov eax, dword [0xbc31e0]
xor eax, ecx
mov dword [0xbc31e0], eax
not eax
mov edx, dword [0xbc31e4]
imul eax, ecx
and cl, 7
lea edi, [eax + eax]
xor edx, eax
shr eax, 0x1e
mov dword [0xbc31e4], edx
or edi, eax
not edx
mov al, 1
imul edx, edi
shl al, cl
xor dword [0xbc31e8], edx
or byte [0xbc31ef], al
mov eax, 0x887b00
xor ecx, ecx
imul eax, eax
and eax, 3
cmp eax, 3
sete cl
mov eax, ecx
xor eax, 1
lea ecx, [ecx + eax*2 + 6]
mov al, 0xfe
and cl, 7
xor cl, 7
rol al, cl
and byte [0xbc31ef], al
mov ecx, esi
mov edx, 0xbc31e0
call fcn.0088ced0
mov ecx, eax
mov eax, 1
test ecx, ecx
jne 0x886129
mov edx, 0x885800
mov edi, 0x885800
movzx ecx, byte [0xbc31fb]
or edx, 2
xor edi, 2
mov eax, edx
add eax, edi
setne al
or al, 4
movzx eax, al
bt ecx, eax
jb 0x885d09
mov al, byte [0xbc31fb]
mov ecx, edx
mov ah, 1
add ecx, edi
setne cl
or cl, 4
xor cl, 7
shl ah, cl
or ah, al
lock cmpxchg byte [0xbc31fb], ah
jne 0x885c1e
mov ecx, 0x885800
mov edx, 0x885800
or ecx, 2
xor edx, 2
mov edi, ecx
add edi, edx
setne ah
or ah, 4
xor ah, 7
movzx edi, ah
movzx eax, al
bt eax, edi
jae 0x885c80
mov eax, ecx
movzx edi, byte [0xbc31fb]
add eax, edx
setne al
or al, 4
movzx eax, al
bt edi, eax
jae 0x885c63
jmp 0x885d09
add ecx, edx
movzx ecx, byte [0xbc31fb]
setne al
or al, 4
movzx eax, al
bt ecx, eax
jb 0x885ce4
mov eax, 0x885800
mov edx, 0x885800
xor ecx, ecx
xor edx, 2
or eax, 2
add eax, edx
mov eax, dword [0xbc31f0]
sete cl
xor ecx, 0xdc2888f1
add ecx, 0x21c
mov edx, ecx
xor eax, ecx
shr edx, 0x1f
mov dword [0xbc31f0], eax
not eax
or edx, ecx
and cl, 7
imul edx, eax
xor dword [0xbc31f4], edx
mov dl, 1
shl dl, cl
or byte [0xbc31fb], dl
mov eax, 0x885800
mov ecx, 0x885800
xor ecx, 2
or eax, 2
add eax, ecx
mov al, 0xfe
setne cl
or cl, 4
xor cl, 7
rol al, cl
and byte [0xbc31fb], al
mov ecx, esi
mov edx, 0xbc31f0
call fcn.0088ced0
mov ecx, eax
mov eax, 2
test ecx, ecx
jne 0x886129
mov edx, 0x885710
movzx ecx, byte [0xbc3207]
and edx, 1
inc edx
mov eax, edx
xor eax, 0x885710
sete al
or al, 6
movzx eax, al
bt ecx, eax
jb 0x885e3c
mov al, byte [0xbc3207]
mov ecx, edx
mov ah, 1
xor ecx, 0x885710
sete cl
or cl, 6
xor cl, 7
shl ah, cl
or ah, al
lock cmpxchg byte [0xbc3207], ah
jne 0x885d51
mov ecx, 0x885710
movzx eax, al
and ecx, 1
inc ecx
mov edx, ecx
xor edx, 0x885710
sete dl
or dl, 6
xor dl, 7
movzx edx, dl
bt eax, edx
jae 0x885db7
mov eax, ecx
movzx edx, byte [0xbc3207]
xor eax, 0x885710
sete al
or al, 6
movzx eax, al
bt edx, eax
jae 0x885d97
jmp 0x885e3c
xor ecx, 0x885710
movzx ecx, byte [0xbc3207]
sete al
or al, 6
movzx eax, al
bt ecx, eax
jb 0x885e1b
mov eax, 0x885710
xor ecx, ecx
and eax, 1
inc eax
xor eax, 0x885710
mov eax, dword [0xbc31fc]
sete cl
or ecx, 0x7e2d253e
add ecx, 0x480
mov edx, ecx
xor eax, ecx
shr edx, 0x1f
mov dword [0xbc31fc], eax
not eax
or edx, ecx
and cl, 7
imul edx, eax
xor dword [0xbc3200], edx
mov dl, 1
shl dl, cl
or byte [0xbc3207], dl
mov eax, 0x885710
and eax, 1
inc eax
xor eax, 0x885710
mov al, 0xfe
sete cl
or cl, 6
xor cl, 7
rol al, cl
and byte [0xbc3207], al
mov ecx, esi
mov edx, 0xbc31fc
call fcn.0088ced0
mov ecx, eax
mov eax, 3
test ecx, ecx
jne 0x886129
mov edx, 0x886ca0
mov eax, 0x886ca0
movzx edi, byte [0xbc3217]
and edx, 1
xor edx, eax
xor eax, eax
cmp edx, 0xffffffff
sete al
mov ecx, eax
not ecx
lea eax, [ecx + eax*2]
and al, 7
movzx eax, al
bt edi, eax
jb 0x885fc4
mov al, byte [0xbc3217]
xor ecx, ecx
cmp edx, 0xffffffff
mov ah, 1
sete cl
mov ebx, ecx
not ebx
lea ecx, [ebx + ecx*2]
and cl, 7
xor cl, 7
shl ah, cl
or ah, al
lock cmpxchg byte [0xbc3217], ah
jne 0x885e8f
mov ecx, 0x886ca0
mov edx, 0x886ca0
movzx eax, al
and ecx, 1
xor ecx, edx
xor edx, edx
cmp ecx, 0xffffffff
sete dl
mov ebx, edx
not ebx
lea edx, [ebx + edx*2]
and dl, 7
xor dl, 7
movzx edx, dl
bt eax, edx
jae 0x885f08
xor eax, eax
cmp ecx, 0xffffffff
movzx edi, byte [0xbc3217]
sete al
mov edx, eax
not edx
lea eax, [edx + eax*2]
and al, 7
movzx eax, al
bt edi, eax
jae 0x885ee3
jmp 0x885fc4
xor eax, eax
cmp ecx, 0xffffffff
movzx edx, byte [0xbc3217]
sete al
mov ecx, eax
not ecx
lea eax, [ecx + eax*2]
and al, 7
movzx eax, al
bt edx, eax
jb 0x885f96
mov ecx, 0x886ca0
mov eax, 0x886ca0
mov edi, dword [0xbc3208]
and ecx, 1
xor ecx, eax
xor eax, eax
cmp ecx, 0xffffffff
sete al
mov ecx, eax
xor ecx, 0xf95d8c2f
lea ecx, [ecx + eax*2 + 0x600]
xor edi, ecx
mov edx, ecx
mov dword [0xbc3208], edi
shr edx, 0x1f
not edi
mov ebx, dword [0xbc320c]
or edx, ecx
and cl, 7
imul edx, edi
lea edi, [edx + edx]
xor ebx, edx
shr edx, 0x1e
mov dword [0xbc320c], ebx
or edi, edx
not ebx
mov dl, 1
imul ebx, edi
shl dl, cl
xor dword [0xbc3210], ebx
or byte [0xbc3217], dl
mov ecx, 0x886ca0
mov eax, 0x886ca0
and ecx, 1
xor ecx, eax
xor eax, eax
cmp ecx, 0xffffffff
sete al
mov ecx, eax
not ecx
lea ecx, [ecx + eax*2]
mov al, 0xfe
and cl, 7
xor cl, 7
rol al, cl
and byte [0xbc3217], al
mov ecx, esi
mov edx, 0xbc3208
call fcn.0088ced0
mov ecx, eax
mov eax, 4
test ecx, ecx
jne 0x886129
mov edx, 0x88b4f0
mov eax, 0x88b4f0
movzx ecx, byte [0xbc3227]
and edx, 1
xor edx, eax
cmp edx, 0xffffffff
sete al
or al, 2
movzx eax, al
bt ecx, eax
jb 0x886111
mov al, byte [0xbc3227]
cmp edx, 0xffffffff
mov ah, 1
sete cl
or cl, 2
xor cl, 7
shl ah, cl
or ah, al
lock cmpxchg byte [0xbc3227], ah
jne 0x88600e
mov ecx, 0x88b4f0
mov edx, 0x88b4f0
movzx eax, al
and ecx, 1
xor ecx, edx
cmp ecx, 0xffffffff
sete dl
or dl, 2
xor dl, 7
movzx edx, dl
bt eax, edx
jae 0x88606c
cmp ecx, 0xffffffff
movzx edx, byte [0xbc3227]
sete al
or al, 2
movzx eax, al
bt edx, eax
jae 0x886050
jmp 0x886111
cmp ecx, 0xffffffff
movzx edx, byte [0xbc3227]
sete al
or al, 2
movzx eax, al
bt edx, eax
jb 0x8860ec
mov edx, 0x88b4f0
mov eax, 0x88b4f0
xor ecx, ecx
and edx, 1
xor edx, eax
mov eax, dword [0xbc3218]
cmp edx, 0xffffffff
sete cl
or ecx, 0x58c7e412
add ecx, 0x4d0
xor eax, ecx
mov edx, ecx
mov dword [0xbc3218], eax
shr edx, 0x1f
not eax
mov ebx, dword [0xbc321c]
or edx, ecx
and cl, 7
imul edx, eax
lea edi, [edx + edx]
xor ebx, edx
shr edx, 0x1e
mov dword [0xbc321c], ebx
or edi, edx
not ebx
mov dl, 1
imul ebx, edi
shl dl, cl
xor dword [0xbc3220], ebx
or byte [0xbc3227], dl
mov ecx, 0x88b4f0
mov eax, 0x88b4f0
and ecx, 1
xor ecx, eax
mov al, 0xfe
cmp ecx, 0xffffffff
sete cl
or cl, 2
xor cl, 7
rol al, cl
and byte [0xbc3227], al
mov ecx, esi
mov edx, 0xbc3218
call fcn.0088ced0
xor ecx, ecx
cmp eax, 1
sbb ecx, ecx
or ecx, 5
mov eax, ecx
pop esi
pop edi
pop ebx
ret