Function at 0x7920b0
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff8
sub esp, 0x40
mov eax, dword [0xbcbae0]
mov esi, dword [ebp + 8]
xor ebx, ebx
xor eax, ebp
mov dword [esp + 0x38], eax
mov dword [esp + 0x34], esi
mov dword [esp + 0x30], edx
cmp dword [ecx + 0x24], 0
jg 0x7925aa
mov edi, ecx
test esi, esi
jns 0x792107
lea eax, [esp + 0x30]
push eax
push edi
call fcn.0078f760
add esp, 8
mov ebx, 0x70a
test eax, eax
jne 0x7925aa
mov edx, dword [esp + 0x30]
mov esi, dword [esp + 0x34]
mov eax, dword [edi + 0x38]
mov ecx, dword [edi + 0x3c]
mov ebx, esi
cmp eax, edx
mov esi, ecx
sbb esi, ebx
mov esi, ebx
jge 0x792125
mov edx, eax
mov esi, ecx
mov dword [esp + 0x30], eax
mov dword [esp + 0x34], ecx
mov ebx, dword [0xc1f194]
mov dword [esp + 0x34], esi
dec ebx
not ebx
and ebx, edx
mov eax, ebx
mov dword [esp + 0x30], ebx
or eax, esi
jne 0x792151
mov eax, dword [edi + 0x34]
cmp dword [edi + 0x30], 1
sbb eax, 0
jl 0x792151
mov ecx, edi
call fcn.00790ce0
mov eax, dword [edi + 0x30]
mov ecx, dword [edi + 0x34]
mov dword [esp + 0x14], ebx
xor eax, ebx
xor ecx, esi
xor ebx, ebx
or ecx, eax
je 0x7925aa
mov eax, fcn.0078ccd0
mov dword [esp + 0xc], esi
xor esi, esi
mov dword [esp + 0x10], edi
imul eax, eax
and eax, 3
mov dword [esp + 0x1c], eax
xor ebx, ebx
cmp dword [esp + 0x1c], 1
mov edi, dword [esi*4 + 0xb4d370]
mov dword [esp + 0x28], esi
mov eax, 1
seta bl
mov dword [esp + 0x24], edi
xor ebx, 0x93f90637
add ebx, 0x1090
xor ebx, dword [esi*4 + 0xb4bf10]
mov esi, dword [esi*4 + 0xb4d4b0]
mov ecx, ebx
and cl, 7
movzx edx, cl
shl eax, cl
xor cl, 7
mov dword [esp + 4], edx
mov edx, 1
shl edx, cl
movzx ecx, byte [edi + esi - 1]
mov edi, dword [esp + 4]
bt ecx, edi
mov edi, dword [esp + 0x24]
jb 0x792274
mov dword [esp + 8], eax
mov al, byte [edi + esi - 1]
mov ecx, eax
or cl, dl
lock cmpxchg byte [edi + esi - 1], cl
jne 0x7921f0
mov ecx, dword [esp + 8]
movzx eax, al
test edx, eax
je 0x792212
movzx eax, byte [edi + esi - 1]
test ecx, eax
je 0x792207
jmp 0x792274
mov dword [esp + 0x18], edx
movzx eax, byte [edi + esi - 1]
test ecx, eax
jne 0x79226a
lea eax, [esi - 4]
shr eax, 2
mov dword [esp + 0x20], eax
je 0x792262
xor eax, eax
mov ecx, edi
mov edx, dword [ecx]
mov dword [esp + 0x2c], ecx
mov ecx, eax
mov dword [esp + 4], ebx
inc eax
shl dword [esp + 4], cl
and cl, 0x1f
xor cl, 0x1f
xor edx, ebx
shr ebx, cl
mov ecx, dword [esp + 0x2c]
or ebx, dword [esp + 4]
mov dword [ecx], edx
not edx
add ecx, 4
imul ebx, edx
cmp eax, dword [esp + 0x20]
jne 0x79222f
mov eax, dword [esp + 8]
or byte [edi + esi - 1], al
mov eax, dword [esp + 0x18]
not al
and byte [edi + esi - 1], al
mov esi, dword [esp + 0x28]
inc esi
cmp esi, 0x50
jne 0x792182
mov edi, dword [esp + 0x10]
mov ecx, edi
call fcn.00790ce0
push 0
mov ebx, dword [esp + 0x18]
push ebx
mov esi, dword [esp + 0x14]
push esi
push 2
push 0
push dword [edi + 8]
call dword [0xbabb74]
test eax, eax
mov dword [edi + 0x28], eax
jne 0x79241a
mov edx, fcn.00791da0
movzx ecx, byte [0xbacf63]
mov ebx, 0
imul edx, edx
and edx, 3
cmp edx, 2
sete al
xor al, 5
movzx eax, al
bt ecx, eax
jb 0x7923f0
mov al, byte [0xbacf63]
cmp edx, 2
mov ah, 1
sete cl
or cl, 0xfa
add cl, 8
shl ah, cl
or ah, al
lock cmpxchg byte [0xbacf63], ah
jne 0x7922e1
mov ecx, fcn.00791da0
movzx eax, al
imul ecx, ecx
and ecx, 3
cmp ecx, 2
sete dl
or dl, 0xfa
add dl, 8
movzx edx, dl
bt eax, edx
jae 0x79233b
cmp ecx, 2
movzx edx, byte [0xbacf63]
sete al
xor al, 5
movzx eax, al
bt edx, eax
jae 0x79231f
jmp 0x7923f0
cmp ecx, 2
movzx edx, byte [0xbacf63]
sete al
xor al, 5
movzx eax, al
bt edx, eax
jb 0x7923cf
mov eax, fcn.00791da0
xor ecx, ecx
mov edx, dword [0xbacf50]
imul eax, eax
and eax, 3
cmp eax, 2
sete cl
xor ecx, 0x1721a7fd
lea eax, [ecx + 0x1000]
and cl, 5
xor edx, eax
mov dword [0xbacf50], edx
not edx
imul edx, eax
mov eax, dword [0xbacf54]
lea esi, [edx + edx]
xor eax, edx
shr edx, 0x1e
mov dword [0xbacf54], eax
or esi, edx
not eax
mov edx, dword [0xbacf58]
imul eax, esi
lea esi, [eax*4]
xor edx, eax
shr eax, 0x1d
mov dword [0xbacf58], edx
or esi, eax
not edx
mov al, 1
imul edx, esi
shl al, cl
xor dword [0xbacf5c], edx
or byte [0xbacf63], al
mov eax, fcn.00791da0
imul eax, eax
and eax, 3
cmp eax, 2
mov al, 0xfe
sete cl
or cl, 0xfa
add cl, 8
rol al, cl
and byte [0xbacf63], al
call dword [0xbabc58]
mov ecx, 0x180a
mov edx, eax
mov dword [edi + 0x14], eax
push 0x33aa
push dword [edi + 0x1c]
push 0xbacf50
call fcn.007911b0
add esp, 0xc
jmp 0x7925aa
push ebx
push 0
push 0
push 4
push eax
call dword [0xbabd6c]
test eax, eax
jne 0x79259f
mov edx, fcn.007a51c0
movzx ecx, byte [0xbacf83]
mov ebx, 0
imul edx, edx
and edx, 3
cmp edx, 2
sete al
or al, 6
movzx eax, al
bt ecx, eax
jb 0x79256d
mov al, byte [0xbacf83]
cmp edx, 2
mov ah, 1
sete cl
or cl, 6
xor cl, 7
shl ah, cl
or ah, al
lock cmpxchg byte [0xbacf83], ah
jne 0x792460
mov ecx, fcn.007a51c0
movzx eax, al
imul ecx, ecx
and ecx, 3
cmp ecx, 2
sete dl
or dl, 6
xor dl, 7
movzx edx, dl
bt eax, edx
jae 0x7924ba
cmp ecx, 2
movzx edx, byte [0xbacf83]
sete al
or al, 6
movzx eax, al
bt edx, eax
jae 0x79249e
jmp 0x79256d
cmp ecx, 2
movzx edx, byte [0xbacf83]
sete al
or al, 6
movzx eax, al
bt edx, eax
jb 0x79254c
mov eax, fcn.007a51c0
xor ecx, ecx
imul eax, eax
and eax, 3
cmp eax, 2
mov eax, dword [0xbacf70]
sete cl
or ecx, 0x134b0546
add ecx, 0x1160
xor eax, ecx
mov dword [0xbacf70], eax
not eax
mov edx, dword [0xbacf74]
imul eax, ecx
and cl, 7
lea esi, [eax + eax]
xor edx, eax
shr eax, 0x1e
mov dword [0xbacf74], edx
or esi, eax
not edx
mov eax, dword [0xbacf78]
imul edx, esi
lea esi, [edx*4]
xor eax, edx
shr edx, 0x1d
mov dword [0xbacf78], eax
or esi, edx
not eax
mov dl, 1
imul eax, esi
shl dl, cl
xor dword [0xbacf7c], eax
or byte [0xbacf83], dl
mov eax, fcn.007a51c0
imul eax, eax
and eax, 3
cmp eax, 2
mov al, 0xfe
sete cl
or cl, 6
xor cl, 7
rol al, cl
and byte [0xbacf83], al
push dword [edi + 0x28]
call dword [0xbabb44]
mov dword [edi + 0x28], 0
call dword [0xbabc58]
mov ecx, 0x180a
mov edx, eax
mov dword [edi + 0x14], eax
push 0x33bc
push dword [edi + 0x1c]
push 0xbacf70
jmp 0x79240d
mov dword [edi + 0x2c], eax
mov dword [edi + 0x30], ebx
xor ebx, ebx
mov dword [edi + 0x34], esi
mov ecx, dword [esp + 0x38]
xor ecx, ebp
call fcn.00980459
mov eax, ebx
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret