Function at 0x80f750
Capabilities:
Encode data using xor

Disassembly:
push ebp
push ebx
push edi
push esi
test edx, edx
jne 0x80f75f
xor eax, eax
jmp 0x80fb47
mov esi, ecx
mov ecx, dword [edx]
xor eax, eax
test ecx, ecx
jle 0x80fb47
xor ebx, ebx
lea edi, [ebx + ebx*4]
test byte [edx + edi*4 + 0x10], 0x20
je 0x80fb3e
mov ebx, 0x7d2680
movzx ecx, byte [0xbb9087]
xor eax, eax
imul ebx, ebx
and ebx, 3
cmp ebx, 2
setne al
bt ecx, eax
jb 0x80f86f
mov al, byte [0xbb9087]
cmp ebx, 2
mov ah, 1
setne cl
xor cl, 7
shl ah, cl
or ah, al
lock cmpxchg byte [0xbb9087], ah
jne 0x80f7a5
mov ecx, 0x7d2680
movzx ebx, al
imul ecx, ecx
and ecx, 3
cmp ecx, 2
setne ah
xor ah, 7
movzx eax, ah
bt ebx, eax
jae 0x80f7f3
movzx ebx, byte [0xbb9087]
xor eax, eax
cmp ecx, 2
setne al
bt ebx, eax
jae 0x80f7dd
jmp 0x80f86f
movzx ebx, byte [0xbb9087]
xor eax, eax
cmp ecx, 2
setne al
bt ebx, eax
jb 0x80f851
mov eax, 0x7d2680
xor ecx, ecx
imul eax, eax
and eax, 3
cmp eax, 2
mov eax, dword [0xbb907c]
sete cl
xor ecx, 0x49880451
add ecx, 0x1318
mov ebx, ecx
xor eax, ecx
shr ebx, 0x1f
mov dword [0xbb907c], eax
not eax
or ebx, ecx
and cl, 7
imul ebx, eax
mov ah, 1
xor dword [0xbb9080], ebx
shl ah, cl
or byte [0xbb9087], ah
mov eax, 0x7d2680
imul eax, eax
and eax, 3
cmp eax, 2
mov al, 0xfe
setne cl
xor cl, 7
rol al, cl
and byte [0xbb9087], al
mov ebx, fcn.007ad1c0
xor eax, eax
and ebx, 1
inc ebx
mov ecx, ebx
xor ecx, fcn.007ad1c0
movzx ecx, byte [0xbb9093]
setne al
bt ecx, eax
jb 0x80f96d
mov al, byte [0xbb9093]
mov ecx, ebx
mov ah, 1
xor ecx, fcn.007ad1c0
setne cl
xor cl, 7
shl ah, cl
or ah, al
lock cmpxchg byte [0xbb9093], ah
jne 0x80f89a
mov ecx, fcn.007ad1c0
and ecx, 1
inc ecx
mov ebx, ecx
xor ebx, fcn.007ad1c0
movzx ebx, al
setne ah
xor ah, 7
movzx eax, ah
bt ebx, eax
jae 0x80f8f5
mov ebx, ecx
xor eax, eax
xor ebx, fcn.007ad1c0
movzx ebx, byte [0xbb9093]
setne al
bt ebx, eax
jae 0x80f8da
jmp 0x80f96d
xor eax, eax
xor ecx, fcn.007ad1c0
movzx ecx, byte [0xbb9093]
setne al
bt ecx, eax
jb 0x80f94f
mov eax, fcn.007ad1c0
xor ecx, ecx
and eax, 1
inc eax
xor eax, fcn.007ad1c0
mov eax, dword [0xbb9088]
sete cl
xor ecx, 0x2c159c1
add ecx, 0xc70
xor eax, ecx
mov dword [0xbb9088], eax
not eax
imul eax, ecx
and cl, 7
xor dword [0xbb908c], eax
mov ah, 1
shl ah, cl
or byte [0xbb9093], ah
mov eax, fcn.007ad1c0
and eax, 1
inc eax
xor eax, fcn.007ad1c0
mov al, 0xfe
setne cl
xor cl, 7
rol al, cl
and byte [0xbb9093], al
mov ebx, fcn.0080ef80
movzx ecx, byte [0xbb90c3]
xor eax, eax
imul ebx, ebx
and ebx, 3
cmp ebx, 3
setne al
bt ecx, eax
jb 0x80fb10
mov al, byte [0xbb90c3]
cmp ebx, 3
mov ah, 1
setne cl
xor cl, 7
shl ah, cl
or ah, al
lock cmpxchg byte [0xbb90c3], ah
jne 0x80f995
mov ecx, fcn.0080ef80
movzx ebx, al
imul ecx, ecx
and ecx, 3
cmp ecx, 3
setne ah
xor ah, 7
movzx eax, ah
bt ebx, eax
jae 0x80f9e6
movzx ebx, byte [0xbb90c3]
xor eax, eax
cmp ecx, 3
setne al
bt ebx, eax
jae 0x80f9cd
jmp 0x80fb10
movzx ebx, byte [0xbb90c3]
xor eax, eax
cmp ecx, 3
setne al
bt ebx, eax
jb 0x80faf2
mov eax, fcn.0080ef80
xor ecx, ecx
imul eax, eax
and eax, 3
cmp eax, 3
mov eax, dword [0xbb90a0]
sete cl
xor ecx, 0xed0eb039
add ecx, 0xb08
mov ebx, ecx
xor eax, ecx
shr ebx, 0x1f
mov dword [0xbb90a0], eax
not eax
or ebx, ecx
and cl, 7
imul ebx, eax
mov eax, dword [0xbb90a4]
lea ebp, [ebx + ebx]
xor eax, ebx
shr ebx, 0x1e
mov dword [0xbb90a4], eax
or ebp, ebx
not eax
mov ebx, dword [0xbb90a8]
imul eax, ebp
lea ebp, [eax*4]
xor ebx, eax
shr eax, 0x1d
mov dword [0xbb90a8], ebx
or ebp, eax
not ebx
mov eax, dword [0xbb90ac]
imul ebx, ebp
lea ebp, [ebx*8]
xor eax, ebx
shr ebx, 0x1c
mov dword [0xbb90ac], eax
or ebp, ebx
not eax
mov ebx, dword [0xbb90b0]
imul eax, ebp
mov ebp, eax
shl ebp, 4
xor ebx, eax
shr eax, 0x1b
mov dword [0xbb90b0], ebx
or eax, ebp
not ebx
imul ebx, eax
mov eax, dword [0xbb90b4]
mov ebp, ebx
shl ebp, 5
xor eax, ebx
shr ebx, 0x1a
mov dword [0xbb90b4], eax
or ebx, ebp
not eax
imul eax, ebx
mov ebx, dword [0xbb90b8]
mov ebp, eax
shl ebp, 6
xor ebx, eax
shr eax, 0x19
mov dword [0xbb90b8], ebx
or eax, ebp
not ebx
imul ebx, eax
mov ah, 1
xor dword [0xbb90bc], ebx
shl ah, cl
or byte [0xbb90c3], ah
mov eax, fcn.0080ef80
imul eax, eax
and eax, 3
cmp eax, 3
mov al, 0xfe
setne cl
xor cl, 7
rol al, cl
and byte [0xbb90c3], al
mov al, byte [edx + edi*4 + 0xc]
mov ecx, 0xbb907c
mov edx, 0xbb9088
cmp al, 3
cmove edx, ecx
test al, al
cmove edx, ecx
push edx
push 0xbb90a0
push esi
call fcn.0078de60
add esp, 0xc
mov eax, 1
jmp 0x80fb47
inc ebx
cmp ebx, ecx
jl 0x80f76f
pop esi
pop edi
pop ebx
pop ebp
ret