Function at 0x8076f0
Capabilities:
Encode data using xor

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0x1c
mov ebx, dword [esp + 0x30]
mov eax, edx
mov edi, ecx
mov esi, dword [ebx]
test esi, esi
je 0x80778a
cmp byte [ebx + 0x10], 0
jne 0x80778a
mov ebp, ebx
mov ecx, edi
mov edx, eax
push esi
call fcn.008088a0
add esp, 4
test eax, eax
je 0x807d52
mov edx, dword [eax + 8]
mov ecx, dword [edi]
mov ebx, eax
push 0
call fcn.007ff8b0
add esp, 4
mov dword [ebp + 8], eax
mov edx, dword [ebx + 0xc]
mov ecx, dword [edi]
push 0
call fcn.007ff8b0
add esp, 4
mov dword [ebp + 0xc], eax
mov edx, dword [ebx + 0x18]
mov ecx, dword [edi]
push 0
call fcn.007fc000
add esp, 4
mov dword [ebp + 0x18], eax
mov edx, dword [ebx + 0x1c]
mov ecx, dword [edi]
push 0
call fcn.007fc000
add esp, 4
mov dword [ebp + 0x1c], eax
mov al, byte [ebx + 0x11]
mov byte [ebp + 0x11], al
mov al, byte [ebx + 0x12]
mov byte [ebp + 0x12], al
mov al, byte [ebx + 0x10]
mov byte [ebp + 0x10], al
mov cl, byte [ebx + 0x14]
mov byte [ebp + 0x14], cl
jmp 0x80779c
mov ecx, edi
mov edx, ebx
push eax
call fcn.007f7040
add esp, 4
mov al, byte [ebx + 0x10]
mov ebp, ebx
mov ebx, dword [esp + 0x34]
cmp al, 0x59
jne 0x807902
cmp dword [ebp + 0x18], 0
jne 0x8077b8
cmp dword [ebp + 0x1c], 0
je 0x807902
mov eax, dword [ebp + 0xc]
test eax, eax
je 0x8077c8
cmp dword [eax], 1
je 0x807902
mov edx, fcn.00782e40
movzx ecx, byte [0xbb873b]
imul edx, edx
and edx, 3
cmp edx, 2
sete al
not al
and al, 3
movzx eax, al
bt ecx, eax
jb 0x8078ef
mov al, byte [0xbb873b]
cmp edx, 2
mov ah, 1
sete cl
not cl
and cl, 3
xor cl, 7
shl ah, cl
or ah, al
lock cmpxchg byte [0xbb873b], ah
jne 0x8077f5
mov ecx, fcn.00782e40
movzx eax, al
imul ecx, ecx
and ecx, 3
cmp ecx, 2
sete dl
not dl
and dl, 3
xor dl, 7
movzx edx, dl
bt eax, edx
jae 0x807855
cmp ecx, 2
movzx edx, byte [0xbb873b]
sete al
not al
and al, 3
movzx eax, al
bt edx, eax
jae 0x807837
jmp 0x8078ef
xor edx, edx
cmp ecx, 2
movzx ecx, byte [0xbb873b]
sete dl
xor edx, 0x4dd39f8b
add edx, 0xc8
mov eax, edx
and al, 7
movzx eax, al
bt ecx, eax
jb 0x8078cc
mov esi, 0xbb86f0
xor eax, eax
mov ebx, dword [esi]
mov ecx, eax
mov ebp, edx
inc eax
shl ebp, cl
xor cl, 0x1f
xor ebx, edx
shr edx, cl
mov dword [esi], ebx
or edx, ebp
not ebx
add esi, 4
imul edx, ebx
cmp eax, 0x12
jne 0x807883
mov eax, fcn.00782e40
mov ebp, dword [esp + 0x30]
mov ebx, dword [esp + 0x34]
imul eax, eax
and eax, 3
cmp eax, 2
mov al, 1
sete cl
not cl
and cl, 3
shl al, cl
or byte [0xbb873b], al
mov eax, fcn.00782e40
imul eax, eax
and eax, 3
cmp eax, 2
mov al, 0xfe
sete cl
not cl
and cl, 3
xor cl, 7
rol al, cl
and byte [0xbb873b], al
push 0xbb86f0
push edi
call fcn.0078de60
add esp, 8
jmp 0x807d4f
test byte [ebx + 6], 1
je 0x807d4f
cmp dword [ebp + 0x28], 0
jne 0x807b40
mov eax, dword [edi]
mov edx, fcn.007a2bb0
xor ecx, ecx
and edx, 1
inc edx
mov dword [esp + 0x10], edx
mov dword [esp + 4], eax
mov eax, dword [esp + 0x10]
xor edx, edx
mov edi, dword [ecx*4 + 0xb572e0]
mov ebp, dword [ecx*4 + 0xb57300]
mov dword [esp + 0x18], ecx
xor eax, fcn.007a2bb0
mov eax, 1
sete dl
or edx, 0xc2fca3f2
add edx, 0x1010
xor edx, dword [ecx*4 + 0xb57320]
mov ecx, edx
and cl, 7
movzx ebx, cl
shl eax, cl
xor cl, 7
mov dword [esp], ebx
mov ebx, 1
shl ebx, cl
movzx ecx, byte [edi + ebp - 1]
mov esi, dword [esp]
bt ecx, esi
jb 0x807a0e
mov dword [esp + 8], eax
mov al, byte [edi + ebp - 1]
mov ecx, eax
or cl, bl
lock cmpxchg byte [edi + ebp - 1], cl
jne 0x807993
mov ecx, dword [esp + 8]
movzx eax, al
test ebx, eax
je 0x8079b5
movzx eax, byte [edi + ebp - 1]
test ecx, eax
je 0x8079aa
jmp 0x807a0e
mov dword [esp + 0xc], ebx
movzx eax, byte [edi + ebp - 1]
test ecx, eax
jne 0x807a04
lea ecx, [ebp - 4]
shr ecx, 2
je 0x8079fc
xor eax, eax
mov ebx, edi
mov dword [esp + 0x14], ecx
mov esi, dword [ebx]
mov ecx, eax
mov dword [esp], edx
inc eax
shl dword [esp], cl
and cl, 0x1f
xor cl, 0x1f
xor esi, edx
shr edx, cl
mov ecx, dword [esp + 0x14]
or edx, dword [esp]
mov dword [ebx], esi
not esi
add ebx, 4
imul edx, esi
cmp eax, ecx
jne 0x8079d2
mov eax, dword [esp + 8]
or byte [edi + ebp - 1], al
mov eax, dword [esp + 0xc]
not al
and byte [edi + ebp - 1], al
mov ecx, dword [esp + 0x18]
inc ecx
cmp ecx, 8
jne 0x80792b
mov ebx, dword [esp + 0x34]
mov eax, dword [ebx + 0x20]
cmp eax, 0xbb8784
jne 0x807d5a
xor esi, esi
mov edi, dword [esp + 4]
mov eax, dword [esp + 0x30]
mov ecx, edi
mov edx, dword [eax + 0x18]
mov ebp, eax
call fcn.007cb9e0
mov edx, dword [ebp + 0x1c]
mov ecx, edi
call fcn.007cb9e0
shl esi, 4
mov dword [ebp + 0x18], 0
mov dword [ebp + 0x1c], 0
mov dl, byte [esi + 0xb50588]
mov al, byte [esi + 0xb50584]
mov cl, byte [esi + 0xb5058c]
cmp dl, 0x56
mov byte [ebp + 0x10], al
mov byte [ebp + 0x11], dl
mov byte [ebp + 0x12], cl
mov byte [ebp + 0x14], 0
jne 0x807d4f
mov edx, 0x80b0f0
xor eax, eax
movzx esi, byte [0xbb87ff]
and edx, 1
inc edx
mov ecx, edx
xor ecx, 0x80b0f0
sete al
mov ecx, eax
xor ecx, 3
lea eax, [eax + ecx*2]
bt esi, eax
jb 0x807d38
mov al, byte [0xbb87ff]
mov esi, edx
xor ecx, ecx
mov ah, 1
xor esi, 0x80b0f0
sete cl
mov esi, ecx
not esi
and esi, 3
lea ecx, [ecx + esi*2]
xor cl, 7
shl ah, cl
or ah, al
lock cmpxchg byte [0xbb87ff], ah
jne 0x807aba
mov ecx, 0x80b0f0
xor edx, edx
movzx eax, al
and ecx, 1
inc ecx
mov esi, ecx
xor esi, 0x80b0f0
sete dl
mov esi, edx
not esi
and esi, 3
lea edx, [edx + esi*2]
xor dl, 7
movzx edx, dl
bt eax, edx
jae 0x807cb2
mov ebp, dword [esp + 0x30]
mov edx, ecx
xor eax, eax
movzx esi, byte [0xbb87ff]
xor edx, 0x80b0f0
sete al
mov edx, eax
xor edx, 3
lea eax, [eax + edx*2]
bt esi, eax
jae 0x807b1a
jmp 0x807d38
mov edx, fcn.0078c360
xor eax, eax
movzx esi, byte [0xbb8783]
imul edx, edx
and edx, 3
cmp edx, 2
sete al
mov ecx, eax
xor ecx, 5
lea eax, [ecx + eax*2 + 4]
and al, 7
movzx eax, al
bt esi, eax
jb 0x807ca8
mov al, byte [0xbb8783]
xor ecx, ecx
cmp edx, 2
mov ah, 1
sete cl
mov ebx, ecx
xor ebx, 5
lea ecx, [ebx + ecx*2 + 4]
and cl, 7
xor cl, 7
shl ah, cl
or ah, al
lock cmpxchg byte [0xbb8783], ah
jne 0x807b76
mov ecx, fcn.0078c360
xor edx, edx
movzx eax, al
imul ecx, ecx
and ecx, 3
cmp ecx, 2
sete dl
mov ebx, edx
xor ebx, 5
lea edx, [ebx + edx*2 + 4]
and dl, 7
xor dl, 7
movzx edx, dl
bt eax, edx
jae 0x807bf5
mov ebx, dword [esp + 0x34]
xor eax, eax
cmp ecx, 2
movzx esi, byte [0xbb8783]
sete al
mov edx, eax
xor edx, 5
lea eax, [edx + eax*2 + 4]
and al, 7
movzx eax, al
bt esi, eax
jae 0x807bce
jmp 0x807ca8
xor eax, eax
cmp ecx, 2
movzx esi, byte [0xbb8783]
mov ebx, dword [esp + 0x34]
sete al
mov ecx, eax
xor ecx, 0xe01b01a5
lea edx, [ecx + eax*2 + 0x1084]
mov eax, edx
and al, 7
movzx eax, al
bt esi, eax
jb 0x807c7c
mov esi, 0xbb8740
xor eax, eax
mov ebx, dword [esi]
mov ecx, eax
mov ebp, edx
inc eax
shl ebp, cl
xor cl, 0x1f
xor ebx, edx
shr edx, cl
mov dword [esi], ebx
or edx, ebp
not ebx
add esi, 4
imul edx, ebx
cmp eax, 0x10
jne 0x807c2a
mov eax, fcn.0078c360
xor ecx, ecx
mov ebp, dword [esp + 0x30]
mov ebx, dword [esp + 0x34]
imul eax, eax
and eax, 3
cmp eax, 2
sete cl
mov eax, ecx
xor eax, 5
lea ecx, [eax + ecx*2 + 4]
mov al, 1
and cl, 7
shl al, cl
or byte [0xbb8783], al
mov eax, fcn.0078c360
xor ecx, ecx
imul eax, eax
and eax, 3
cmp eax, 2
sete cl
mov eax, ecx
xor eax, 5
lea ecx, [eax + ecx*2 + 4]
mov al, 0xfe
and cl, 7
xor cl, 7
rol al, cl
and byte [0xbb8783], al
push 0xbb8740
jmp 0x8078f4
xor eax, eax
xor ecx, 0x80b0f0
movzx edx, byte [0xbb87ff]
mov ebp, dword [esp + 0x30]
sete al
mov ecx, eax
xor ecx, 3
lea eax, [eax + ecx*2]
bt edx, eax
jb 0x807d0d
mov ecx, 0x80b0f0
xor eax, eax
and ecx, 1
inc ecx
xor ecx, 0x80b0f0
sete al
mov ecx, eax
not ecx
and ecx, 0x6a3
lea ecx, [eax + ecx*2 + 0x1e780958]
mov al, 1
xor dword [0xbb87f8], ecx
and cl, 7
shl al, cl
or byte [0xbb87ff], al
mov ecx, 0x80b0f0
xor eax, eax
and ecx, 1
inc ecx
xor ecx, 0x80b0f0
sete al
mov ecx, eax
not ecx
and ecx, 3
lea ecx, [eax + ecx*2]
mov al, 0xfe
xor cl, 7
rol al, cl
and byte [0xbb87ff], al
mov ecx, edi
mov edx, 0x98
push 0xbb87f8
call fcn.007e44c0
add esp, 4
mov dword [ebp + 0x18], eax
mov dword [ebp + 0x2c], ebx
add esp, 0x1c
pop esi
pop edi
pop ebx
pop ebp
ret
cmp eax, 0xbb8794
jne 0x807d6b
mov esi, 1
jmp 0x807a30
mov edi, dword [esp + 4]
cmp eax, 0xbb87a4
jne 0x807d80
mov esi, 2
jmp 0x807a34
cmp eax, 0xbb87b0
jne 0x807d91
mov esi, 3
jmp 0x807a34
cmp eax, 0xbb87c4
jne 0x807da2
mov esi, 4
jmp 0x807a34
cmp eax, 0xbb87d4
jne 0x807db3
mov esi, 5
jmp 0x807a34
cmp eax, 0xbb87e0
jne 0x807dc4
mov esi, 6
jmp 0x807a34
mov ebp, dword [esp + 0x30]
cmp eax, 0xbb87ec
jne 0x807d4f
mov esi, 7
jmp 0x807a34