Function at 0x7d8f90
Capabilities:
Encode data using xor

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0x1c
mov eax, dword [0xbcbae0]
mov edi, ecx
mov esi, dword [esp + 0x34]
mov ecx, dword [esp + 0x30]
xor ebx, ebx
xor eax, esp
test edx, edx
mov dword [esp + 0x18], eax
mov dword [esp + 0xc], edx
mov dword [esp + 0x10], ecx
mov dword [esp + 0x14], esi
mov dword [esp + 4], edx
je 0x7d91f3
mov eax, fcn.007a02d0
mov esi, 3
sub esi, eax
xor eax, eax
mov dword [esp + 8], eax
mov eax, esi
xor eax, fcn.007a02d0
movzx ecx, byte [0xbb29d7]
sete al
or al, 6
movzx eax, al
bt ecx, eax
jb 0x7d9198
mov al, byte [0xbb29d7]
mov ecx, esi
mov ah, 1
xor ecx, fcn.007a02d0
sete cl
or cl, 6
xor cl, 7
shl ah, cl
or ah, al
lock cmpxchg byte [0xbb29d7], ah
jne 0x7d8ffc
mov ecx, esi
movzx eax, al
xor ecx, fcn.007a02d0
sete cl
or cl, 6
xor cl, 7
movzx ecx, cl
bt eax, ecx
jae 0x7d9059
mov eax, esi
movzx ecx, byte [0xbb29d7]
xor eax, fcn.007a02d0
sete al
or al, 6
movzx eax, al
bt ecx, eax
jae 0x7d9039
jmp 0x7d9198
mov eax, esi
movzx ecx, byte [0xbb29d7]
xor eax, fcn.007a02d0
sete al
or al, 6
movzx eax, al
bt ecx, eax
jb 0x7d917e
mov eax, esi
xor ecx, ecx
mov dword [esp], edi
xor eax, fcn.007a02d0
sete cl
mov eax, ecx
or cl, 6
or eax, 0xff8f6aa6
xor eax, dword [0xbb29b0]
mov dword [0xbb29b0], eax
not eax
mov ebp, dword [0xbb29b4]
imul eax, eax, 0xff8f6aa7
lea edi, [eax + eax]
xor ebp, eax
shr eax, 0x1e
mov dword [0xbb29b4], ebp
or eax, edi
not ebp
imul ebp, eax
mov eax, dword [0xbb29b8]
lea edi, [ebp*4]
xor eax, ebp
shr ebp, 0x1d
mov dword [0xbb29b8], eax
or ebp, edi
not eax
mov edi, dword [0xbb29bc]
imul eax, ebp
lea ebp, [eax*8]
xor edi, eax
shr eax, 0x1c
mov dword [0xbb29bc], edi
or eax, ebp
not edi
imul edi, eax
mov eax, dword [0xbb29c0]
mov ebp, edi
shl ebp, 4
xor eax, edi
shr edi, 0x1b
mov dword [0xbb29c0], eax
or edi, ebp
not eax
imul eax, edi
mov edi, dword [0xbb29c4]
mov ebp, eax
shl ebp, 5
xor edi, eax
shr eax, 0x1a
mov dword [0xbb29c4], edi
or eax, ebp
not edi
imul edi, eax
mov eax, dword [0xbb29c8]
mov ebp, edi
shl ebp, 6
xor eax, edi
shr edi, 0x19
mov dword [0xbb29c8], eax
or edi, ebp
not eax
imul eax, edi
mov edi, dword [0xbb29cc]
mov ebp, eax
shl ebp, 7
xor edi, eax
shr eax, 0x18
mov dword [0xbb29cc], edi
or eax, ebp
not edi
imul edi, eax
mov ah, 1
xor dword [0xbb29d0], edi
mov edi, dword [esp]
shl ah, cl
or byte [0xbb29d7], ah
mov eax, esi
xor eax, fcn.007a02d0
mov al, 0xfe
sete cl
or cl, 6
xor cl, 7
rol al, cl
and byte [0xbb29d7], al
mov eax, dword [edx + 4]
cmp eax, 4
je 0x7d9822
cmp eax, 5
je 0x7d9842
cmp eax, 7
jne 0x7d98d2
push 7
push 0xbb29b0
push dword [edx]
call fcn.00777e50
add esp, 0xc
xor ecx, ecx
test eax, eax
jne 0x7d98d2
movzx eax, byte [ecx + ecx*2 + 0xb48032]
mov ecx, dword [esp + 8]
or ebx, eax
lea eax, [ecx + 1]
cmp eax, 2
ja 0x7d91f3
mov edx, dword [esp + ecx*4 + 0x10]
test edx, edx
jne 0x7d8fd4
mov eax, ebx
and eax, 0x21
cmp eax, 0x21
je 0x7d9208
mov eax, ebx
and eax, 0x40
je 0x7d9574
mov edx, fcn.007c8640
movzx ecx, byte [0xbb29df]
imul edx, edx
and edx, 3
cmp edx, 3
sete al
not al
and al, 7
movzx eax, al
bt ecx, eax
jb 0x7d9300
mov al, byte [0xbb29df]
cmp edx, 3
mov ah, 1
sete cl
not cl
and cl, 7
xor cl, 7
shl ah, cl
or ah, al
lock cmpxchg byte [0xbb29df], ah
jne 0x7d9235
mov ecx, fcn.007c8640
movzx eax, al
imul ecx, ecx
and ecx, 3
cmp ecx, 3
sete dl
not dl
and dl, 7
xor dl, 7
movzx edx, dl
bt eax, edx
jae 0x7d9292
cmp ecx, 3
movzx edx, byte [0xbb29df]
sete al
not al
and al, 7
movzx eax, al
bt edx, eax
jae 0x7d9277
jmp 0x7d9300
cmp ecx, 3
movzx ecx, byte [0xbb29df]
sete al
not al
and al, 7
movzx eax, al
bt ecx, eax
jb 0x7d92dd
mov eax, fcn.007c8640
xor ecx, ecx
imul eax, eax
and eax, 3
cmp eax, 3
mov al, 1
sete cl
xor ecx, 0x3af5835f
add ecx, 0x900
xor dword [0xbb29d8], ecx
and cl, 7
shl al, cl
or byte [0xbb29df], al
mov eax, fcn.007c8640
imul eax, eax
and eax, 3
cmp eax, 3
mov al, 0xfe
sete cl
not cl
and cl, 7
xor cl, 7
rol al, cl
and byte [0xbb29df], al
mov edx, fcn.00775570
mov eax, fcn.00775570
movzx ecx, byte [0xbb2a13]
and edx, 1
xor edx, eax
cmp edx, 0xffffffff
sete al
not al
and al, 7
movzx eax, al
bt ecx, eax
jb 0x7d9542
mov al, byte [0xbb2a13]
cmp edx, 0xffffffff
mov ah, 1
sete cl
not cl
and cl, 7
xor cl, 7
shl ah, cl
or ah, al
lock cmpxchg byte [0xbb2a13], ah
jne 0x7d9331
mov ecx, fcn.00775570
mov edx, fcn.00775570
movzx eax, al
and ecx, 1
xor ecx, edx
cmp ecx, 0xffffffff
sete dl
not dl
and dl, 7
xor dl, 7
movzx edx, dl
bt eax, edx
jae 0x7d9395
cmp ecx, 0xffffffff
movzx edx, byte [0xbb2a13]
sete al
not al
and al, 7
movzx eax, al
bt edx, eax
jae 0x7d9377
jmp 0x7d9542
cmp ecx, 0xffffffff
movzx ecx, byte [0xbb2a13]
sete al
not al
and al, 7
movzx eax, al
bt ecx, eax
jb 0x7d951b
mov edx, fcn.00775570
mov eax, dword [0xbb29e0]
mov ecx, fcn.00775570
and edx, 1
xor edx, ecx
xor ecx, ecx
cmp edx, 0xffffffff
sete cl
mov edx, eax
xor edx, ecx
xor ecx, 0x78cabbbf
xor eax, ecx
xor edx, 0x87354440
mov dword [0xbb29e0], eax
imul edx, ecx
and cl, 7
mov eax, dword [0xbb29e4]
lea esi, [edx + edx]
xor eax, edx
shr edx, 0x1e
mov dword [0xbb29e4], eax
or esi, edx
not eax
mov edx, dword [0xbb29e8]
imul eax, esi
lea esi, [eax*4]
xor edx, eax
shr eax, 0x1d
mov dword [0xbb29e8], edx
or esi, eax
not edx
mov eax, dword [0xbb29ec]
imul edx, esi
lea esi, [edx*8]
xor eax, edx
shr edx, 0x1c
mov dword [0xbb29ec], eax
or esi, edx
not eax
mov edx, dword [0xbb29f0]
imul eax, esi
mov esi, eax
shl esi, 4
xor edx, eax
shr eax, 0x1b
mov dword [0xbb29f0], edx
or eax, esi
not edx
mov ebx, dword [0xbb29f4]
imul edx, eax
mov esi, edx
shl esi, 5
xor ebx, edx
shr edx, 0x1a
mov dword [0xbb29f4], ebx
or edx, esi
not ebx
imul ebx, edx
mov edx, dword [0xbb29f8]
mov esi, ebx
shl esi, 6
xor edx, ebx
shr ebx, 0x19
mov dword [0xbb29f8], edx
or ebx, esi
not edx
mov ebp, dword [0xbb29fc]
imul edx, ebx
mov esi, edx
shl esi, 7
xor ebp, edx
shr edx, 0x18
mov dword [0xbb29fc], ebp
or edx, esi
not ebp
imul ebp, edx
mov edx, dword [0xbb2a00]
mov esi, ebp
shl esi, 8
xor edx, ebp
shr ebp, 0x17
mov dword [0xbb2a00], edx
or ebp, esi
not edx
mov ebx, dword [0xbb2a04]
imul edx, ebp
mov esi, edx
shl esi, 9
xor ebx, edx
shr edx, 0x16
mov dword [0xbb2a04], ebx
or edx, esi
not ebx
imul ebx, edx
mov edx, dword [0xbb2a08]
mov esi, ebx
shl esi, 0xa
xor edx, ebx
shr ebx, 0x15
mov dword [0xbb2a08], edx
or ebx, esi
not edx
imul edx, ebx
xor dword [0xbb2a0c], edx
mov dl, 1
shl dl, cl
or byte [0xbb2a13], dl
mov ecx, fcn.00775570
mov eax, fcn.00775570
and ecx, 1
xor ecx, eax
mov al, 0xfe
cmp ecx, 0xffffffff
sete cl
not cl
and cl, 7
xor cl, 7
rol al, cl
and byte [0xbb2a13], al
mov eax, dword [esp + 0x34]
mov esi, 0xbb29d8
mov ecx, 0xbb29d9
mov edx, eax
test eax, eax
cmovne ecx, esi
push edx
push ecx
push dword [esp + 0x38]
push dword [esp + 0x10]
push 0xbb29e0
push edi
call fcn.00782570
add esp, 0x18
jmp 0x7d9808
test bl, 0x20
je 0x7d980d
mov eax, ebx
and eax, 0x18
cmp eax, 8
je 0x7d980d
mov edx, fcn.00834e20
movzx ecx, byte [0xbb2a5b]
and edx, 1
inc edx
mov eax, edx
xor eax, fcn.00834e20
sete al
or al, 4
movzx eax, al
bt ecx, eax
jb 0x7d97fa
mov al, byte [0xbb2a5b]
mov ecx, edx
mov ah, 1
xor ecx, fcn.00834e20
sete cl
or cl, 4
xor cl, 7
shl ah, cl
or ah, al
lock cmpxchg byte [0xbb2a5b], ah
jne 0x7d95b8
mov ecx, fcn.00834e20
movzx eax, al
and ecx, 1
inc ecx
mov edx, ecx
xor edx, fcn.00834e20
sete dl
or dl, 4
xor dl, 7
movzx edx, dl
bt eax, edx
jae 0x7d961e
mov eax, ecx
movzx edx, byte [0xbb2a5b]
xor eax, fcn.00834e20
sete al
or al, 4
movzx eax, al
bt edx, eax
jae 0x7d95fe
jmp 0x7d97fa
xor ecx, fcn.00834e20
movzx ecx, byte [0xbb2a5b]
sete al
or al, 4
movzx eax, al
bt ecx, eax
jb 0x7d97d9
mov eax, fcn.00834e20
xor ecx, ecx
and eax, 1
inc eax
xor eax, fcn.00834e20
mov eax, dword [0xbb2a20]
sete cl
or ecx, 0x39a91d4c
add ecx, 0x400
xor eax, ecx
mov dword [0xbb2a20], eax
not eax
mov edx, dword [0xbb2a24]
imul eax, ecx
and cl, 7
lea esi, [eax + eax]
xor edx, eax
shr eax, 0x1e
mov dword [0xbb2a24], edx
or esi, eax
not edx
mov eax, dword [0xbb2a28]
imul edx, esi
lea esi, [edx*4]
xor eax, edx
shr edx, 0x1d
mov dword [0xbb2a28], eax
or esi, edx
not eax
mov edx, dword [0xbb2a2c]
imul eax, esi
lea esi, [eax*8]
xor edx, eax
shr eax, 0x1c
mov dword [0xbb2a2c], edx
or esi, eax
not edx
mov eax, dword [0xbb2a30]
imul edx, esi
mov esi, edx
shl esi, 4
xor eax, edx
shr edx, 0x1b
mov dword [0xbb2a30], eax
or edx, esi
not eax
imul eax, edx
mov edx, dword [0xbb2a34]
mov esi, eax
shl esi, 5
xor edx, eax
shr eax, 0x1a
mov dword [0xbb2a34], edx
or eax, esi
not edx
mov ebp, dword [0xbb2a38]
imul edx, eax
mov esi, edx
shl esi, 6
xor ebp, edx
shr edx, 0x19
mov dword [0xbb2a38], ebp
or edx, esi
not ebp
imul ebp, edx
mov edx, dword [0xbb2a3c]
mov esi, ebp
shl esi, 7
xor edx, ebp
shr ebp, 0x18
mov dword [0xbb2a3c], edx
or ebp, esi
not edx
mov ebx, dword [0xbb2a40]
imul edx, ebp
mov esi, edx
shl esi, 8
xor ebx, edx
shr edx, 0x17
mov dword [0xbb2a40], ebx
or edx, esi
not ebx
imul ebx, edx
mov edx, dword [0xbb2a44]
mov esi, ebx
shl esi, 9
xor edx, ebx
shr ebx, 0x16
mov dword [0xbb2a44], edx
or ebx, esi
not edx
mov ebp, dword [0xbb2a48]
imul edx, ebx
mov esi, edx
shl esi, 0xa
xor ebp, edx
shr edx, 0x15
mov dword [0xbb2a48], ebp
or edx, esi
not ebp
imul ebp, edx
mov edx, dword [0xbb2a4c]
mov esi, ebp
shl esi, 0xb
xor edx, ebp
shr ebp, 0x14
mov dword [0xbb2a4c], edx
or ebp, esi
not edx
mov ebx, dword [0xbb2a50]
imul edx, ebp
mov esi, edx
shl esi, 0xc
xor ebx, edx
shr edx, 0x13
mov dword [0xbb2a50], ebx
or edx, esi
not ebx
imul ebx, edx
mov dl, 1
xor dword [0xbb2a54], ebx
shl dl, cl
or byte [0xbb2a5b], dl
mov eax, fcn.00834e20
and eax, 1
inc eax
xor eax, fcn.00834e20
mov al, 0xfe
sete cl
or cl, 4
xor cl, 7
rol al, cl
and byte [0xbb2a5b], al
push 0xbb2a20
push edi
call fcn.00782570
add esp, 8
mov ebx, 1
mov ecx, dword [esp + 0x18]
xor ecx, esp
call fcn.00980459
mov eax, ebx
add esp, 0x1c
pop esi
pop edi
pop ebx
pop ebp
ret
mov ebp, dword [edx]
push 4
push 0xbb29b6
push ebp
call fcn.00777e50
add esp, 0xc
test eax, eax
jne 0x7d9880
mov ecx, 1
jmp 0x7d91d1
mov ebp, dword [edx]
push 5
push 0xbb29ba
push ebp
call fcn.00777e50
add esp, 0xc
test eax, eax
jne 0x7d9862
mov ecx, 2
jmp 0x7d91d1
push 5
push 0xbb29be
push ebp
call fcn.00777e50
add esp, 0xc
test eax, eax
jne 0x7d989a
mov ecx, 3
jmp 0x7d91d1
push 4
push 0xbb29c3
push ebp
call fcn.00777e50
add esp, 0xc
mov ecx, 4
jmp 0x7d91c9
push 5
push 0xbb29c7
push ebp
call fcn.00777e50
add esp, 0xc
test eax, eax
jne 0x7d98b8
mov ecx, 5
jmp 0x7d91d1
push 5
push 0xbb29cc
push ebp
call fcn.00777e50
add esp, 0xc
mov ecx, 6
jmp 0x7d91c9
or ebx, 0x40
jmp 0x7d91f3