Function at 0x803ef0
Capabilities:
Encode data using xor

Disassembly:
push ebp
push ebx
push edi
push esi
test edx, edx
jne 0x803eff
xor eax, eax
jmp 0x8042e7
mov esi, ecx
mov ecx, dword [edx]
xor eax, eax
test ecx, ecx
jle 0x8042e7
xor ebx, ebx
lea edi, [ebx + ebx*4]
test byte [edx + edi*4 + 0x10], 0x20
je 0x8042de
mov ebx, 0x7c6d90
movzx ecx, byte [0xbb1727]
xor eax, eax
imul ebx, ebx
and ebx, 3
cmp ebx, 2
setne al
bt ecx, eax
jb 0x80400f
mov al, byte [0xbb1727]
cmp ebx, 2
mov ah, 1
setne cl
xor cl, 7
shl ah, cl
or ah, al
lock cmpxchg byte [0xbb1727], ah
jne 0x803f45
mov ecx, 0x7c6d90
movzx ebx, al
imul ecx, ecx
and ecx, 3
cmp ecx, 2
setne ah
xor ah, 7
movzx eax, ah
bt ebx, eax
jae 0x803f93
movzx ebx, byte [0xbb1727]
xor eax, eax
cmp ecx, 2
setne al
bt ebx, eax
jae 0x803f7d
jmp 0x80400f
movzx ebx, byte [0xbb1727]
xor eax, eax
cmp ecx, 2
setne al
bt ebx, eax
jb 0x803ff1
mov eax, 0x7c6d90
xor ecx, ecx
imul eax, eax
and eax, 3
cmp eax, 2
mov eax, dword [0xbb171c]
sete cl
xor ecx, 0x49880451
add ecx, 0x1318
mov ebx, ecx
xor eax, ecx
shr ebx, 0x1f
mov dword [0xbb171c], eax
not eax
or ebx, ecx
and cl, 7
imul ebx, eax
mov ah, 1
xor dword [0xbb1720], ebx
shl ah, cl
or byte [0xbb1727], ah
mov eax, 0x7c6d90
imul eax, eax
and eax, 3
cmp eax, 2
mov al, 0xfe
setne cl
xor cl, 7
rol al, cl
and byte [0xbb1727], al
mov ebx, fcn.007a18c0
xor eax, eax
and ebx, 1
inc ebx
mov ecx, ebx
xor ecx, fcn.007a18c0
movzx ecx, byte [0xbb1733]
setne al
bt ecx, eax
jb 0x80410d
mov al, byte [0xbb1733]
mov ecx, ebx
mov ah, 1
xor ecx, fcn.007a18c0
setne cl
xor cl, 7
shl ah, cl
or ah, al
lock cmpxchg byte [0xbb1733], ah
jne 0x80403a
mov ecx, fcn.007a18c0
and ecx, 1
inc ecx
mov ebx, ecx
xor ebx, fcn.007a18c0
movzx ebx, al
setne ah
xor ah, 7
movzx eax, ah
bt ebx, eax
jae 0x804095
mov ebx, ecx
xor eax, eax
xor ebx, fcn.007a18c0
movzx ebx, byte [0xbb1733]
setne al
bt ebx, eax
jae 0x80407a
jmp 0x80410d
xor eax, eax
xor ecx, fcn.007a18c0
movzx ecx, byte [0xbb1733]
setne al
bt ecx, eax
jb 0x8040ef
mov eax, fcn.007a18c0
xor ecx, ecx
and eax, 1
inc eax
xor eax, fcn.007a18c0
mov eax, dword [0xbb1728]
sete cl
xor ecx, 0x2c159c1
add ecx, 0xc70
xor eax, ecx
mov dword [0xbb1728], eax
not eax
imul eax, ecx
and cl, 7
xor dword [0xbb172c], eax
mov ah, 1
shl ah, cl
or byte [0xbb1733], ah
mov eax, fcn.007a18c0
and eax, 1
inc eax
xor eax, fcn.007a18c0
mov al, 0xfe
setne cl
xor cl, 7
rol al, cl
and byte [0xbb1733], al
mov ebx, fcn.00803720
movzx ecx, byte [0xbb1763]
xor eax, eax
imul ebx, ebx
and ebx, 3
cmp ebx, 3
setne al
bt ecx, eax
jb 0x8042b0
mov al, byte [0xbb1763]
cmp ebx, 3
mov ah, 1
setne cl
xor cl, 7
shl ah, cl
or ah, al
lock cmpxchg byte [0xbb1763], ah
jne 0x804135
mov ecx, fcn.00803720
movzx ebx, al
imul ecx, ecx
and ecx, 3
cmp ecx, 3
setne ah
xor ah, 7
movzx eax, ah
bt ebx, eax
jae 0x804186
movzx ebx, byte [0xbb1763]
xor eax, eax
cmp ecx, 3
setne al
bt ebx, eax
jae 0x80416d
jmp 0x8042b0
movzx ebx, byte [0xbb1763]
xor eax, eax
cmp ecx, 3
setne al
bt ebx, eax
jb 0x804292
mov eax, fcn.00803720
xor ecx, ecx
imul eax, eax
and eax, 3
cmp eax, 3
mov eax, dword [0xbb1740]
sete cl
xor ecx, 0xed0eb039
add ecx, 0xb08
mov ebx, ecx
xor eax, ecx
shr ebx, 0x1f
mov dword [0xbb1740], eax
not eax
or ebx, ecx
and cl, 7
imul ebx, eax
mov eax, dword [0xbb1744]
lea ebp, [ebx + ebx]
xor eax, ebx
shr ebx, 0x1e
mov dword [0xbb1744], eax
or ebp, ebx
not eax
mov ebx, dword [0xbb1748]
imul eax, ebp
lea ebp, [eax*4]
xor ebx, eax
shr eax, 0x1d
mov dword [0xbb1748], ebx
or ebp, eax
not ebx
mov eax, dword [0xbb174c]
imul ebx, ebp
lea ebp, [ebx*8]
xor eax, ebx
shr ebx, 0x1c
mov dword [0xbb174c], eax
or ebp, ebx
not eax
mov ebx, dword [0xbb1750]
imul eax, ebp
mov ebp, eax
shl ebp, 4
xor ebx, eax
shr eax, 0x1b
mov dword [0xbb1750], ebx
or eax, ebp
not ebx
imul ebx, eax
mov eax, dword [0xbb1754]
mov ebp, ebx
shl ebp, 5
xor eax, ebx
shr ebx, 0x1a
mov dword [0xbb1754], eax
or ebx, ebp
not eax
imul eax, ebx
mov ebx, dword [0xbb1758]
mov ebp, eax
shl ebp, 6
xor ebx, eax
shr eax, 0x19
mov dword [0xbb1758], ebx
or eax, ebp
not ebx
imul ebx, eax
mov ah, 1
xor dword [0xbb175c], ebx
shl ah, cl
or byte [0xbb1763], ah
mov eax, fcn.00803720
imul eax, eax
and eax, 3
cmp eax, 3
mov al, 0xfe
setne cl
xor cl, 7
rol al, cl
and byte [0xbb1763], al
mov al, byte [edx + edi*4 + 0xc]
mov ecx, 0xbb171c
mov edx, 0xbb1728
cmp al, 3
cmove edx, ecx
test al, al
cmove edx, ecx
push edx
push 0xbb1740
push esi
call fcn.00782570
add esp, 0xc
mov eax, 1
jmp 0x8042e7
inc ebx
cmp ebx, ecx
jl 0x803f0f
pop esi
pop edi
pop ebx
pop ebp
ret