Function at 0x7cb270
Capabilities:
Encode data using xor

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0xc
mov esi, ecx
test edx, edx
jle 0x7cb2d2
mov al, byte [esi]
test al, al
je 0x7cb2d2
mov edi, edx
xor ebp, ebp
mov ecx, eax
add cl, 0xd0
cmp cl, 9
mov ecx, 0
ja 0x7cb2af
movsx eax, al
lea ecx, [ecx + ecx*4]
lea ecx, [eax + ecx*2 - 0x30]
movzx eax, byte [esi + 1]
inc esi
mov edx, eax
add dl, 0xd0
cmp dl, 0xa
jb 0x7cb296
xor edx, edx
mov ebx, esi
call fcn.007bdf50
mov ecx, dword [esp + 0x20]
inc esi
mov word [ecx + ebp*2], ax
cmp byte [ebx], 0x20
cmovne esi, ebx
inc ebp
cmp ebp, edi
jge 0x7cb2d2
mov al, byte [esi]
test al, al
jne 0x7cb287
mov eax, dword [esp + 0x24]
and byte [eax + 0x38], 0xbb
cmp byte [esi], 0
je 0x7cb734
mov ebx, fcn.007d30a0
mov edi, fcn.007a2600
mov ebp, fcn.007a2600
not ebx
xor ebp, 2
or edi, 2
and ebx, 1
mov eax, edi
movzx ecx, byte [0xbb614f]
add eax, ebp
setne al
or al, 4
movzx eax, al
bt ecx, eax
jb 0x7cb406
mov al, byte [0xbb614f]
mov ecx, edi
mov dl, 1
add ecx, ebp
setne cl
or cl, 4
xor cl, 7
shl dl, cl
or dl, al
lock cmpxchg byte [0xbb614f], dl
jne 0x7cb31e
mov ecx, edi
movzx eax, al
add ecx, ebp
setne cl
or cl, 4
xor cl, 7
movzx ecx, cl
bt eax, ecx
jae 0x7cb370
mov eax, edi
movzx ecx, byte [0xbb614f]
add eax, ebp
setne al
or al, 4
movzx eax, al
bt ecx, eax
jae 0x7cb353
jmp 0x7cb406
mov eax, edi
movzx ecx, byte [0xbb614f]
add eax, ebp
setne al
or al, 4
movzx eax, al
bt ecx, eax
jb 0x7cb3ef
mov eax, edi
xor ecx, ecx
add eax, ebp
mov eax, dword [0xbb6140]
sete cl
xor ecx, 0xad1a3d09
add ecx, 0x404
mov edx, ecx
xor eax, ecx
mov dword [esp], ecx
shr edx, 0x1f
mov dword [0xbb6140], eax
not eax
or edx, ecx
mov ecx, dword [0xbb6144]
imul edx, eax
lea eax, [edx + edx]
mov dword [esp + 4], eax
mov al, 1
xor ecx, edx
shr edx, 0x1e
or edx, dword [esp + 4]
mov dword [0xbb6144], ecx
not ecx
imul ecx, edx
xor dword [str.YDf], ecx
mov ecx, dword [esp]
and cl, 7
shl al, cl
or byte [0xbb614f], al
mov eax, edi
add eax, ebp
mov al, 0xfe
setne cl
or cl, 4
xor cl, 7
rol al, cl
and byte [0xbb614f], al
push esi
push 0xbb6140
call fcn.0078f440
add esp, 8
test eax, eax
jne 0x7cb425
mov eax, dword [esp + 0x24]
or byte [eax + 0x38], 4
jmp 0x7cb715
mov ecx, ebx
xor eax, eax
movzx edx, byte [0xbb615f]
add ecx, fcn.007d30a0
sete al
mov ecx, eax
xor ecx, 1
lea eax, [eax + ecx*2 + 2]
bt edx, eax
jb 0x7cb573
mov al, byte [0xbb615f]
mov edx, ebx
xor ecx, ecx
add edx, fcn.007d30a0
sete cl
mov edx, ecx
xor edx, 1
lea ecx, [ecx + edx*2 + 2]
mov dl, 1
xor cl, 7
shl dl, cl
or dl, al
lock cmpxchg byte [0xbb615f], dl
jne 0x7cb450
mov edx, ebx
xor ecx, ecx
movzx eax, al
add edx, fcn.007d30a0
sete cl
mov edx, ecx
xor edx, 1
lea ecx, [ecx + edx*2 + 2]
xor cl, 7
movzx ecx, cl
bt eax, ecx
jae 0x7cb4c4
mov ecx, ebx
xor eax, eax
movzx edx, byte [0xbb615f]
add ecx, fcn.007d30a0
sete al
mov ecx, eax
xor ecx, 1
lea eax, [eax + ecx*2 + 2]
bt edx, eax
jae 0x7cb49d
jmp 0x7cb573
mov ecx, ebx
xor eax, eax
movzx edx, byte [0xbb615f]
add ecx, fcn.007d30a0
sete al
mov ecx, eax
xor ecx, 1
lea eax, [eax + ecx*2 + 2]
bt edx, eax
jb 0x7cb550
mov ecx, ebx
xor eax, eax
add ecx, fcn.007d30a0
sete al
mov ecx, eax
not ecx
and ecx, 0x145
lea ecx, [eax + ecx*2 + 0x5d55f63a]
mov eax, dword [0xbb6150]
mov edx, ecx
mov dword [esp + 4], ecx
shr edx, 0x1f
or edx, ecx
xor eax, ecx
mov dword [0xbb6150], eax
not eax
imul edx, eax
mov eax, dword [0xbb6154]
lea ecx, [edx + edx]
xor eax, edx
shr edx, 0x1e
mov dword [0xbb6154], eax
or ecx, edx
not eax
imul eax, ecx
mov ecx, dword [esp + 4]
xor dword [str._IM], eax
mov al, 1
and cl, 7
shl al, cl
or byte [0xbb615f], al
mov ecx, ebx
xor eax, eax
add ecx, fcn.007d30a0
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 [0xbb615f], al
push esi
push 0xbb6150
call fcn.0078f440
add esp, 8
test eax, eax
jne 0x7cb5ae
lea ecx, [esi + 3]
call fcn.007ca350
cmp eax, 1
mov ecx, 2
cmovle eax, ecx
xor edx, edx
mov ecx, eax
call fcn.007bdf50
mov ecx, dword [esp + 0x24]
mov word [ecx + 0x30], ax
jmp 0x7cb715
mov edx, fcn.007fa6f0
mov eax, fcn.007fa6f0
movzx ecx, byte [0xbb6173]
and edx, 1
xor edx, eax
cmp edx, 0xffffffff
sete al
or al, 4
movzx eax, al
bt ecx, eax
jb 0x7cb6fb
mov al, byte [0xbb6173]
cmp edx, 0xffffffff
mov ah, 1
sete cl
or cl, 4
xor cl, 7
shl ah, cl
or ah, al
lock cmpxchg byte [0xbb6173], ah
jne 0x7cb5dd
cmp edx, 0xffffffff
movzx eax, al
sete cl
or cl, 4
xor cl, 7
movzx ecx, cl
bt eax, ecx
jae 0x7cb62c
cmp edx, 0xffffffff
movzx ecx, byte [0xbb6173]
sete al
or al, 4
movzx eax, al
bt ecx, eax
jae 0x7cb610
jmp 0x7cb6fb
cmp edx, 0xffffffff
movzx ecx, byte [0xbb6173]
sete al
or al, 4
movzx eax, al
bt ecx, eax
jb 0x7cb6e5
xor ecx, ecx
cmp edx, 0xffffffff
mov eax, dword [0xbb6160]
sete cl
or ecx, 0xd8baafb8
add ecx, 0xc
mov dword [esp + 4], ecx
xor eax, ecx
mov ecx, dword [esp + 4]
mov dword [0xbb6160], eax
not eax
shr ecx, 0x1f
or ecx, dword [esp + 4]
imul ecx, eax
mov eax, dword [0xbb6164]
mov dword [esp + 8], ecx
xor eax, ecx
mov ecx, dword [esp + 8]
mov dword [0xbb6164], eax
not eax
lea ecx, [ecx + ecx]
mov dword [esp], ecx
mov ecx, dword [esp + 8]
shr ecx, 0x1e
or dword [esp], ecx
mov ecx, dword [0xbb6168]
imul eax, dword [esp]
xor ecx, eax
mov dword [esp + 8], ecx
mov dword [0xbb6168], ecx
lea ecx, [eax*4]
shr eax, 0x1d
mov dword [esp], ecx
or dword [esp], eax
mov eax, dword [esp + 8]
mov ecx, dword [esp + 4]
not eax
and cl, 7
imul eax, dword [esp]
xor dword [0xbb616c], eax
mov ah, 1
shl ah, cl
or byte [0xbb6173], ah
cmp edx, 0xffffffff
mov al, 0xfe
sete cl
or cl, 4
xor cl, 7
rol al, cl
and byte [0xbb6173], al
push esi
push 0xbb6160
call fcn.0078f440
add esp, 8
test eax, eax
jne 0x7cb715
mov eax, dword [esp + 0x24]
or byte [eax + 0x38], 0x40
movzx eax, byte [esi]
test al, al
je 0x7cb734
cmp al, 0x20
je 0x7cb723
inc esi
jmp 0x7cb715
movzx eax, byte [esi + 1]
inc esi
cmp al, 0x20
je 0x7cb723
test al, al
jne 0x7cb2fd
add esp, 0xc
pop esi
pop edi
pop ebx
pop ebp
ret