Function at 0x7adfa0
Capabilities:
Encode data using xor

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0x28
mov eax, dword [0xbd33e0]
xor eax, esp
mov dword [esp + 0x24], eax
mov dword [esp + 4], ecx
call fcn.007af320
mov ebx, eax
test eax, eax
jne 0x7ae9c0
xor esi, esi
mov dword [esp + 8], 0
mov dword [esp], 0
mov ebx, dword [esp + 4]
cmp esi, dword [ebx + 0x14]
jge 0x7ae055
mov eax, dword [ebx + 0x10]
mov ebp, esi
shl ebp, 4
mov edi, dword [eax + ebp + 4]
mov ecx, edi
call fcn.00793f10
test eax, eax
jne 0x7adffa
xor ebx, ebx
jmp 0x7ae04b
mov ecx, edi
call fcn.00787c60
mov ecx, edi
call fcn.00780670
mov edx, dword [ebx + 0x10]
mov ecx, eax
cmp byte [edx + ebp + 8], 1
je 0x7ae036
mov ebx, ecx
call fcn.00787f40
mov ecx, 0xb
bt ecx, eax
jae 0x7ae034
mov ecx, ebx
call fcn.007ab1a0
cmp eax, 1
adc dword [esp + 8], 0
mov ecx, ebx
call fcn.007a59c0
mov ecx, edi
mov ebx, eax
call fcn.00788700
mov dword [esp], 1
inc esi
test ebx, ebx
je 0x7adfd6
jmp 0x7ae9c0
cmp dword [esp], 0
je 0x7ae085
mov eax, dword [esp + 4]
mov eax, dword [eax + 0xe0]
test eax, eax
je 0x7ae085
mov ecx, dword [esp + 4]
push dword [ecx + 0xdc]
call eax
add esp, 4
mov ebx, 0x213
test eax, eax
jne 0x7ae9c0
mov eax, dword [esp + 4]
mov eax, dword [eax + 0x10]
mov ecx, dword [eax + 4]
call fcn.00798910
mov ecx, eax
mov edi, eax
call fcn.00783170
xor ebp, ebp
cmp dword [esp + 8], 2
jl 0x7ae0aa
test eax, eax
jne 0x7ae113
mov edi, dword [esp + 4]
mov eax, dword [edi + 0x14]
cmp ebp, eax
jl 0x7ae0e1
test eax, eax
jle 0x7ae9b7
xor esi, esi
mov eax, dword [edi + 0x10]
mov ecx, esi
shl ecx, 4
mov ecx, dword [eax + ecx + 4]
test ecx, ecx
je 0x7ae108
xor edx, edx
call fcn.00788630
test eax, eax
je 0x7ae108
mov ebx, eax
jmp 0x7ae9c0
mov eax, dword [edi + 0x10]
mov ecx, ebp
shl ecx, 4
mov ecx, dword [eax + ecx + 4]
test ecx, ecx
jne 0x7ae0f5
xor ebx, ebx
jmp 0x7ae0fe
xor edx, edx
call fcn.00788690
mov ebx, eax
inc ebp
test ebx, ebx
je 0x7ae0aa
jmp 0x7ae9c0
inc esi
cmp esi, dword [edi + 0x14]
jl 0x7ae0bf
jmp 0x7ae9b7
mov ebp, fcn.007a5f50
mov ebx, fcn.007a5f50
mov dword [esp + 0x10], eax
xor eax, eax
or ebp, 2
xor ebx, 2
movzx edx, byte [0xbb4e3b]
mov ecx, ebp
add ecx, ebx
sete al
mov ecx, eax
xor ecx, 1
lea eax, [ecx + eax*2]
or al, 4
movzx eax, al
bt edx, eax
jb 0x7ae2e9
mov al, byte [0xbb4e3b]
mov esi, ebp
xor edx, edx
add esi, ebx
sete dl
mov ecx, edx
xor ecx, 1
lea ecx, [ecx + edx*2]
mov dl, 1
or cl, 4
xor cl, 7
shl dl, cl
or dl, al
lock cmpxchg byte [0xbb4e3b], dl
jne 0x7ae152
mov ecx, fcn.007a5f50
mov edx, fcn.007a5f50
xor ebx, ebx
movzx eax, al
or ecx, 2
xor edx, 2
mov esi, ecx
add esi, edx
sete bl
mov esi, ebx
xor ebx, 1
lea ebx, [ebx + esi*2]
or bl, 4
xor bl, 7
movzx esi, bl
bt eax, esi
jae 0x7ae1d2
mov esi, ecx
xor eax, eax
add esi, edx
movzx esi, byte [0xbb4e3b]
sete al
mov ebx, eax
xor ebx, 1
lea eax, [ebx + eax*2]
or al, 4
movzx eax, al
bt esi, eax
jae 0x7ae1ab
jmp 0x7ae2e9
xor eax, eax
add ecx, edx
movzx edx, byte [0xbb4e3b]
sete al
mov ecx, eax
xor ecx, 1
lea eax, [ecx + eax*2]
or al, 4
movzx eax, al
bt edx, eax
jb 0x7ae2ba
mov eax, fcn.007a5f50
mov ecx, fcn.007a5f50
xor edx, edx
xor ecx, 2
or eax, 2
add eax, ecx
sete dl
mov eax, edx
xor eax, 0x7b5dbaa1
lea ecx, [eax + edx*2 + 0x81c]
mov eax, dword [0xbb4e20]
mov edx, ecx
shr edx, 0x1f
or edx, ecx
xor eax, ecx
and cl, 7
mov dword [0xbb4e20], eax
not eax
imul edx, eax
mov eax, dword [0xbb4e24]
lea esi, [edx + edx]
xor eax, edx
shr edx, 0x1e
mov dword [0xbb4e24], eax
or edx, esi
not eax
imul eax, edx
mov edx, dword [0xbb4e28]
lea esi, [eax*4]
xor edx, eax
shr eax, 0x1d
mov dword [0xbb4e28], edx
or eax, esi
not edx
mov ebx, dword [0xbb4e2c]
imul edx, eax
lea esi, [edx*8]
xor ebx, edx
shr edx, 0x1c
mov dword [0xbb4e2c], ebx
or edx, esi
not ebx
imul ebx, edx
mov edx, dword [0xbb4e30]
mov esi, ebx
shl esi, 4
xor edx, ebx
shr ebx, 0x1b
mov dword [0xbb4e30], edx
or ebx, esi
not edx
imul edx, ebx
xor dword [0xbb4e34], edx
mov dl, 1
shl dl, cl
or byte [0xbb4e3b], dl
mov eax, fcn.007a5f50
mov ecx, fcn.007a5f50
xor edx, edx
xor ecx, 2
or eax, 2
add eax, ecx
sete dl
mov eax, edx
xor eax, 1
lea ecx, [eax + edx*2]
mov al, 0xfe
or cl, 4
xor cl, 7
rol al, cl
and byte [0xbb4e3b], al
mov eax, dword [esp + 4]
mov ecx, dword [eax]
mov dword [esp + 0x20], 0
mov dword [esp + 8], ecx
push 0
push 0
push edi
push 0xbb4e20
push eax
call fcn.0078df10
add esp, 0x14
test eax, eax
mov dword [esp], eax
jne 0x7ae31f
mov ebx, 7
jmp 0x7ae9c0
mov eax, dword [esp]
mov ebp, fcn.00827d10
mov ecx, 3
xor edi, edi
imul ebp, ebp
and ebp, 3
add dword [esp + 0x10], eax
mov eax, fcn.007c5760
sub ecx, eax
mov dword [esp + 0x14], ecx
mov ebx, dword [esp + 0x14]
test edi, edi
je 0x7ae495
cmp edi, 0x64
ja 0x7ae52c
cmp edi, 1
jne 0x7ae495
mov ecx, ebx
xor eax, eax
xor ecx, fcn.007c5760
movzx ecx, byte [0xbb4e73]
setne al
bt ecx, eax
jb 0x7ae483
mov al, byte [0xbb4e73]
mov ecx, ebx
mov dl, 1
xor ecx, fcn.007c5760
setne cl
xor cl, 7
shl dl, cl
or dl, al
lock cmpxchg byte [0xbb4e73], dl
jne 0x7ae383
mov ecx, ebx
movzx eax, al
xor ecx, fcn.007c5760
setne cl
xor cl, 7
movzx ecx, cl
bt eax, ecx
jae 0x7ae3d8
mov ecx, ebx
xor eax, eax
xor ecx, fcn.007c5760
movzx ecx, byte [0xbb4e73]
setne al
bt ecx, eax
jae 0x7ae3ba
jmp 0x7ae483
mov ecx, ebx
xor eax, eax
xor ecx, fcn.007c5760
movzx ecx, byte [0xbb4e73]
setne al
bt ecx, eax
jb 0x7ae46c
mov eax, ebx
xor ecx, ecx
xor eax, fcn.007c5760
mov eax, dword [0xbb4e60]
sete cl
xor ecx, 0xbd941269
add ecx, 0x1020
mov edx, ecx
xor eax, ecx
shr edx, 0x1f
mov dword [0xbb4e60], eax
not eax
or edx, ecx
and cl, 7
imul edx, eax
mov eax, dword [0xbb4e64]
lea esi, [edx + edx]
xor eax, edx
shr edx, 0x1e
mov dword [0xbb4e64], eax
or esi, edx
not eax
mov edx, dword [0xbb4e68]
imul eax, esi
lea esi, [eax*4]
xor edx, eax
shr eax, 0x1d
mov dword [0xbb4e68], edx
or esi, eax
not edx
mov al, 1
imul edx, esi
shl al, cl
xor dword [0xbb4e6c], edx
or byte [0xbb4e73], al
mov eax, ebx
xor eax, fcn.007c5760
mov al, 0xfe
setne cl
xor cl, 7
rol al, cl
and byte [0xbb4e73], al
push dword [esp]
push 0xbb4e60
push 0xd
call fcn.00783470
add esp, 0xc
xor eax, eax
cmp ebp, 3
movzx edx, byte [0xbb4e93]
sete al
mov ecx, eax
not ecx
lea eax, [eax + ecx*2]
and al, 7
movzx eax, al
bt edx, eax
jb 0x7ae790
mov al, byte [0xbb4e93]
xor ecx, ecx
cmp ebp, 3
sete cl
mov edx, ecx
not edx
lea ecx, [ecx + edx*2]
mov dl, 1
and cl, 7
xor cl, 7
shl dl, cl
or dl, al
lock cmpxchg byte [0xbb4e93], dl
jne 0x7ae4be
xor ecx, ecx
cmp ebp, 3
movzx eax, al
sete cl
mov edx, ecx
not edx
lea ecx, [ecx + edx*2]
and cl, 7
xor cl, 7
movzx ecx, cl
bt eax, ecx
jae 0x7ae6d5
xor eax, eax
cmp ebp, 3
movzx edx, byte [0xbb4e93]
sete al
mov ecx, eax
not ecx
lea eax, [eax + ecx*2]
and al, 7
movzx eax, al
bt edx, eax
jae 0x7ae507
jmp 0x7ae790
mov edx, fcn.00793890
xor eax, eax
movzx esi, byte [0xbb4e53]
mov edi, dword [esp + 4]
imul edx, edx
and edx, 3
cmp edx, 3
sete al
mov ecx, eax
not ecx
lea eax, [eax + ecx*2 + 4]
and al, 7
movzx eax, al
bt esi, eax
jb 0x7ae6ad
mov al, byte [0xbb4e53]
xor ecx, ecx
cmp edx, 3
mov ah, 1
sete cl
mov ebx, ecx
not ebx
lea ecx, [ecx + ebx*2 + 4]
and cl, 7
xor cl, 7
shl ah, cl
or ah, al
lock cmpxchg byte [0xbb4e53], ah
jne 0x7ae565
mov ecx, fcn.00793890
xor edx, edx
movzx eax, al
imul ecx, ecx
and ecx, 3
cmp ecx, 3
sete dl
mov ebx, edx
not ebx
lea edx, [edx + ebx*2 + 4]
and dl, 7
xor dl, 7
movzx edx, dl
bt eax, edx
jae 0x7ae5dd
xor eax, eax
cmp ecx, 3
movzx esi, byte [0xbb4e53]
sete al
mov edx, eax
not edx
lea eax, [eax + edx*2 + 4]
and al, 7
movzx eax, al
bt esi, eax
jae 0x7ae5b7
jmp 0x7ae6ad
xor eax, eax
cmp ecx, 3
movzx edx, byte [0xbb4e53]
sete al
mov ecx, eax
not ecx
lea eax, [eax + ecx*2 + 4]
and al, 7
movzx eax, al
bt edx, eax
jb 0x7ae682
mov ecx, fcn.00793890
xor eax, eax
imul ecx, ecx
and ecx, 3
cmp ecx, 3
sete al
mov ecx, eax
not ecx
and ecx, 0x463
lea ecx, [eax + ecx*2 + 0x4a99a9c]
mov eax, dword [0xbb4e40]
xor eax, ecx
mov dword [0xbb4e40], eax
not eax
mov edx, dword [0xbb4e44]
imul eax, ecx
and cl, 7
lea esi, [eax + eax]
xor edx, eax
shr eax, 0x1e
mov dword [0xbb4e44], edx
or esi, eax
not edx
mov eax, dword [0xbb4e48]
imul edx, esi
lea esi, [edx*4]
xor eax, edx
shr edx, 0x1d
mov dword [0xbb4e48], eax
or esi, edx
not eax
mov dl, 1
imul eax, esi
shl dl, cl
xor dword [0xbb4e4c], eax
or byte [0xbb4e53], dl
mov eax, fcn.00793890
xor ecx, ecx
imul eax, eax
and eax, 3
cmp eax, 3
sete cl
mov eax, ecx
not eax
lea ecx, [ecx + eax*2 + 4]
mov al, 0xfe
and cl, 7
xor cl, 7
rol al, cl
and byte [0xbb4e53], al
mov esi, dword [esp]
push esi
push 0xbb4e40
push 0xd
call fcn.00783470
add esp, 0xc
mov ecx, dword [esp + 8]
mov edx, esi
push 0
call fcn.007a82f0
add esp, 4
jmp 0x7ae7f3
xor eax, eax
cmp ebp, 3
movzx edx, byte [0xbb4e93]
sete al
mov ecx, eax
not ecx
lea eax, [eax + ecx*2]
and al, 7
movzx eax, al
bt edx, eax
jb 0x7ae771
xor eax, eax
cmp ebp, 3
sete al
mov ecx, eax
not ecx
and ecx, 0x657
lea ecx, [eax + ecx*2 - 0x50b44e60]
mov eax, dword [0xbb4e80]
mov edx, ecx
shr edx, 0x1f
or edx, ecx
xor eax, ecx
and cl, 7
mov dword [0xbb4e80], eax
not eax
imul edx, eax
mov eax, dword [0xbb4e84]
lea esi, [edx + edx]
xor eax, edx
shr edx, 0x1e
mov dword [0xbb4e84], eax
or esi, edx
not eax
mov edx, dword [0xbb4e88]
imul eax, esi
lea esi, [eax*4]
xor edx, eax
shr eax, 0x1d
mov dword [0xbb4e88], edx
or esi, eax
not edx
mov al, 1
imul edx, esi
shl al, cl
xor dword [0xbb4e8c], edx
or byte [0xbb4e93], al
xor eax, eax
cmp ebp, 3
sete al
mov ecx, eax
not ecx
lea ecx, [eax + ecx*2]
mov al, 0xfe
and cl, 7
xor cl, 7
rol al, cl
and byte [0xbb4e93], al
lea eax, [esp + 0x18]
push eax
push 4
call fcn.00783570
add esp, 8
mov eax, dword [esp + 0x18]
movzx ecx, al
shr eax, 8
push ecx
push eax
push 0xbb4e80
push dword [esp + 0x1c]
push 0xd
call fcn.00783420
add esp, 0x14
mov ecx, dword [esp + 8]
mov edx, dword [esp]
lea eax, [esp + 0x1c]
push eax
push 0
call fcn.007a7ed0
add esp, 8
mov ebx, eax
test eax, eax
jne 0x7ae7e7
mov eax, dword [esp + 0x1c]
inc edi
test eax, eax
jne 0x7ae343
mov edi, dword [esp + 4]
test ebx, ebx
jne 0x7ae947
mov ecx, dword [esp + 8]
mov edx, dword [esp]
lea eax, [esp + 0x20]
push 0
push 0x4016
push eax
call fcn.007af3a0
add esp, 0xc
mov ebx, eax
test eax, eax
jne 0x7ae947
mov ecx, dword [edi + 0x14]
mov eax, dword [esp + 0x20]
test ecx, ecx
mov dword [esp + 0xc], eax
jle 0x7ae8c2
xor edi, edi
xor ebp, ebp
mov dword [esp + 0x10], 0
mov eax, dword [esp + 4]
mov esi, ecx
mov ecx, edi
shl ecx, 4
mov eax, dword [eax + 0x10]
mov ebx, dword [eax + ecx + 4]
mov ecx, ebx
call fcn.00793f10
test eax, eax
jne 0x7ae858
mov ecx, esi
jmp 0x7ae8b9
mov ecx, ebx
call fcn.007af400
test eax, eax
jne 0x7ae867
mov ecx, esi
jmp 0x7ae8b9
mov ecx, eax
mov ebx, eax
call fcn.00783170
mov ecx, dword [esp + 0xc]
inc eax
mov esi, ebp
mov dword [esp + 0x14], ebx
mov edx, ebx
push ebp
mov ebp, dword [esp + 0x14]
push ebp
push eax
call fcn.00788560
add esp, 0xc
test eax, eax
jne 0x7ae9d5
mov ecx, dword [esp + 0x14]
call fcn.00783170
mov ecx, eax
sar ecx, 0x1f
add ebp, eax
adc esi, ecx
mov ecx, dword [esp + 4]
add ebp, 1
adc esi, 0
mov dword [esp + 0x10], ebp
mov ebp, esi
mov ecx, dword [ecx + 0x14]
inc edi
cmp edi, ecx
jl 0x7ae837
mov edi, dword [esp + 0xc]
mov ecx, edi
call fcn.007a2480
test eax, 0x400
je 0x7ae8f3
mov edi, dword [esp + 4]
xor esi, esi
cmp esi, dword [edi + 0x14]
jge 0x7ae953
mov eax, dword [edi + 0x10]
mov ecx, esi
shl ecx, 4
mov ecx, dword [eax + ecx + 4]
test ecx, ecx
jne 0x7ae92f
xor ebx, ebx
jmp 0x7ae939
mov ecx, edi
mov edx, 2
call fcn.007a3b60
test eax, eax
je 0x7ae8d4
mov ebx, eax
mov ecx, edi
call fcn.007af170
mov esi, dword [esp]
mov ecx, dword [esp + 8]
mov edx, esi
push 0
call fcn.007a82f0
add esp, 4
mov ecx, dword [esp + 4]
mov edx, esi
call fcn.00780810
jmp 0x7ae9c0
mov edx, dword [esp]
call fcn.00788690
mov ebx, eax
inc esi
test ebx, ebx
je 0x7ae8da
mov ecx, dword [esp + 0xc]
call fcn.007af170
mov edx, dword [esp]
mov ecx, edi
call fcn.00780810
jmp 0x7ae9c0
mov ecx, dword [esp + 0xc]
call fcn.007af170
mov esi, dword [esp]
mov ecx, dword [esp + 8]
mov edx, esi
push 1
call fcn.007a82f0
add esp, 4
mov ecx, edi
mov edx, esi
mov ebx, eax
call fcn.00780810
test ebx, ebx
jne 0x7ae9c0
call fcn.0079d240
mov edi, dword [esp + 4]
mov eax, dword [edi + 0x14]
test eax, eax
jle 0x7ae9b2
xor esi, esi
mov ecx, dword [edi + 0x10]
mov edx, esi
shl edx, 4
mov ecx, dword [ecx + edx + 4]
test ecx, ecx
je 0x7ae9ad
mov edx, 1
call fcn.00788630
mov eax, dword [edi + 0x14]
inc esi
cmp esi, eax
jl 0x7ae990
call fcn.0079d250
mov ecx, edi
call fcn.007af390
xor ebx, ebx
mov ecx, dword [esp + 0x24]
xor ecx, esp
call fcn.00989fe9
mov eax, ebx
add esp, 0x28
pop esi
pop edi
pop ebx
pop ebp
ret
mov ecx, dword [esp + 0xc]
mov ebx, eax
jmp 0x7ae907