Function at 0x833290
Capabilities:
Encode data using xor

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0x9c
mov eax, dword [0xbd33e0]
mov esi, dword [esp + 0xb0]
mov edi, edx
xor eax, esp
mov dword [esp + 0x98], eax
mov dword [esp + 0x2c], 0
mov dword [esp + 0x28], 0
mov dword [esp + 0x24], 0
mov dword [esp + 0x20], 0
mov dword [esp + 0x1c], 0
mov dword [esp + 0x18], 0
mov dword [esp + 0x10], ecx
mov dword [esp + 0x14], edx
mov dword [esp + 8], ecx
lea ecx, [esp + 0x10]
mov edx, dword [esi]
call fcn.00802580
test eax, eax
jne 0x8335a6
mov edx, dword [esi + 4]
lea ecx, [esp + 0x10]
call fcn.008024c0
test eax, eax
jne 0x8335a6
mov edx, dword [edi + 0x18]
mov eax, dword [edi + 0x34]
mov ecx, dword [esi]
cmp byte [edx + 0x24], 0
mov dword [esp + 4], eax
js 0x83333e
cmp dword [ecx], 1
jne 0x83333e
mov eax, dword [ecx + 4]
cmp byte [eax], 0xa4
jne 0x83333e
cmp word [eax + 0x20], 0xffff
je 0x8335a6
mov dword [esp], ecx
lea edi, [esp + 0x30]
xor eax, eax
mov ecx, 0x1a
rep stosd dword es:[edi], eax
lea edi, [esp + 0x64]
mov byte [esp + 0x30], 0x6f
mov esi, dword [esp + 4]
mov dword [esp + 0x3c], edi
mov byte [esp + 0x64], 0xa4
mov ecx, dword [esp]
mov dword [esp + 0x80], esi
mov edi, dword [edx + 8]
test edi, edi
je 0x833482
cmp byte [edi + 0x36], 0
je 0x83347a
mov esi, dword [ecx]
movzx eax, word [edi + 0x32]
cmp esi, eax
jne 0x83347a
mov ebx, dword [edi + 0x24]
test ebx, ebx
je 0x8333ce
mov eax, dword [esp + 0xb0]
mov edx, dword [eax + 4]
test edx, edx
je 0x83347a
mov ecx, dword [esp + 8]
push dword [esp + 4]
push ebx
call fcn.007fd4a0
mov ecx, dword [esp + 8]
add esp, 8
test eax, eax
jne 0x83347a
movzx eax, word [edi + 0x32]
movzx esi, ax
test ax, ax
je 0x83346b
xor edx, edx
mov eax, dword [edi + 0x20]
mov dword [esp + 0xc], edx
mov eax, dword [eax + edx*4]
mov dword [esp + 0x38], eax
mov eax, dword [edi + 4]
cmp word [eax + edx*2], 0xfffe
jne 0x833416
mov eax, dword [edi + 0x28]
lea ecx, [edx + edx*4]
mov ebx, dword [eax + ecx*4 + 4]
cmp byte [ebx], 0x6f
jne 0x833407
mov ecx, dword [esp]
xor ebp, ebp
jmp 0x83343d
mov ecx, dword [esp]
mov dword [esp + 0x3c], ebx
lea ebx, [esp + 0x30]
xor ebp, ebp
jmp 0x83343d
lea eax, [esp + 0x64]
lea ebx, [esp + 0x30]
xor ebp, ebp
mov dword [esp + 0x3c], eax
mov eax, dword [edi + 4]
movzx eax, word [eax + edx*2]
mov word [esp + 0x84], ax
jmp 0x83343d
mov ecx, dword [esp]
inc ebp
cmp ebp, esi
jae 0x83347a
lea eax, [ebp + ebp*4]
mov edx, dword [ecx + eax*4 + 4]
mov ecx, dword [esp + 8]
push dword [esp + 4]
push ebx
call fcn.007fd4a0
add esp, 8
cmp eax, 1
jg 0x833435
mov edx, dword [esp + 0xc]
mov ecx, dword [esp]
inc edx
cmp edx, esi
jb 0x8333d9
mov eax, dword [esp + 0xb0]
mov dword [eax + 0x10], edi
jmp 0x8335a6
mov edi, dword [edi + 0x14]
jmp 0x833371
mov edx, fcn.00789930
movzx ecx, byte [0xbba7cb]
imul edx, edx
and edx, 3
cmp edx, 3
sete al
or al, 4
movzx eax, al
bt ecx, eax
jb 0x833595
mov al, byte [0xbba7cb]
cmp edx, 3
mov ah, 1
sete cl
or cl, 4
xor cl, 7
shl ah, cl
or ah, al
lock cmpxchg byte [0xbba7cb], ah
jne 0x8334ad
mov ecx, fcn.00789930
movzx eax, al
imul ecx, ecx
and ecx, 3
cmp ecx, 3
sete dl
or dl, 4
xor dl, 7
movzx edx, dl
bt eax, edx
jae 0x833507
cmp ecx, 3
movzx edx, byte [0xbba7cb]
sete al
or al, 4
movzx eax, al
bt edx, eax
jae 0x8334eb
jmp 0x833595
xor edx, edx
cmp ecx, 3
movzx ecx, byte [0xbba7cb]
sete dl
or edx, 0x876196fc
add edx, 0x1200
mov eax, edx
and al, 7
movzx eax, al
bt ecx, eax
jb 0x833574
mov esi, 0xbba780
xor eax, eax
mov edi, dword [esi]
mov ecx, eax
mov ebx, edx
inc eax
shl ebx, cl
xor cl, 0x1f
xor edi, edx
shr edx, cl
mov dword [esi], edi
or edx, ebx
not edi
add esi, 4
imul edx, edi
cmp eax, 0x12
jne 0x833535
mov eax, fcn.00789930
imul eax, eax
and eax, 3
cmp eax, 3
mov al, 1
sete cl
or cl, 4
shl al, cl
or byte [0xbba7cb], al
mov eax, fcn.00789930
imul eax, eax
and eax, 3
cmp eax, 3
mov al, 0xfe
sete cl
or cl, 4
xor cl, 7
rol al, cl
and byte [0xbba7cb], al
push 0xbba780
push dword [esp + 0xc]
call fcn.0078de60
add esp, 8
mov ecx, dword [esp + 0x98]
xor ecx, esp
call fcn.00989fe9
add esp, 0x9c
pop esi
pop edi
pop ebx
pop ebp
ret