Function at 0x7002f6a0
Capabilities:
Encode data using xor

Disassembly:
push ebp
push edi
push esi
push ebx
sub esp, 0x14
test ecx, ecx
lea edi, [ecx - 1]
mov dword [esp + 0xc], eax
mov dword [esp + 4], ecx
mov byte [eax + 0x11b], 0
mov byte [eax + 0x11a], 0
mov byte [eax + 0x119], 0
mov byte [eax + 0x118], 0
mov dword [esp + 0x10], edi
je 0x7002f8d5
xor esi, esi
mov ebp, 0xffffffff
mov dword [esp], 0xffffffff
xor eax, eax
xor edi, edi
mov dword [esp + 8], 0
mov ecx, dword [edx + esi*4]
lea ebp, [ebp + ebp*8]
add esi, 1
and dword [esp], ecx
mov ebx, ecx
or eax, ecx
shr ebx, 0x10
add ebp, ebx
movzx ebx, cx
lea ebx, [ebx + ebx*2]
add ebp, ebx
mov ebx, ecx
sar ebx, 0x1f
xor ebx, ecx
or edi, ebx
mov ebx, ecx
and ebx, 1
neg ebx
xor ebx, ecx
or dword [esp + 8], ebx
cmp esi, dword [esp + 4]
jne 0x7002f6f4
mov ecx, dword [esp + 0xc]
mov esi, dword [ecx + 0x18]
mov dword [ecx + 0xb0], ebp
and esi, 0xff83ffff
test edi, edi
mov dword [ecx + 0x18], esi
je 0x7002f763
add esi, 0x40000
jmp 0x7002f752
mov esi, ecx
shr edi, 1
lea ecx, [esi + 0x40000]
jne 0x7002f750
mov edi, dword [esp + 0xc]
mov dword [edi + 0x18], esi
mov ebx, esi
and ebx, 0x7c0000
shr ebx, 0x12
test ebx, ebx
je 0x7002f882
test al, 1
jne 0x7002f820
mov edi, dword [esp + 0xc]
sub esi, 0x40000
mov ebx, 1
mov dword [esp], edx
movzx ecx, byte [edi + 0x119]
mov edi, ecx
jmp 0x7002f7a2
mov esi, edx
shr eax, 1
mov ecx, ebx
test al, 1
lea ebp, [edi + ebx]
lea edx, [esi - 0x40000]
lea ebx, [ebx + 1]
je 0x7002f7a0
mov eax, dword [esp + 0xc]
mov ebx, esi
mov edx, dword [esp]
and ebx, 0x7c0000
shr ebx, 0x12
mov dword [eax + 0x18], esi
mov edi, eax
mov eax, ebp
mov byte [edi + 0x119], al
cmp ebx, 0x17
ja 0x7002f8b2
nop
mov eax, dword [esp + 0xc]
or esi, 0x100
mov dword [eax + 0x18], esi
mov eax, dword [esp + 4]
test eax, eax
je 0x7002f80d
mov eax, dword [esp + 0x10]
lea esi, [esi]
sub eax, 1
sar dword [edx], cl
add edx, 4
cmp eax, 0xffffffff
jne 0x7002f800
mov eax, dword [esp + 0xc]
movzx eax, byte [eax + 0x118]
add esp, 0x14
pop ebx
pop esi
pop edi
pop ebp
ret
test byte [esp], 1
je 0x7002f8a0
mov eax, dword [esp + 0xc]
sub esi, 0x40000
mov dword [esp + 8], edx
mov edx, dword [esp]
movzx ebp, byte [eax + 0x11a]
mov eax, 1
jmp 0x7002f847
mov esi, ebx
shr edx, 1
mov ecx, eax
test dl, 1
lea edi, [ebp + eax]
lea ebx, [esi - 0x40000]
lea eax, [eax + 1]
jne 0x7002f845
mov eax, dword [esp + 0xc]
mov edx, dword [esp + 8]
mov ebx, eax
mov dword [eax + 0x18], esi
mov eax, edi
mov byte [ebx + 0x11a], al
mov ebx, esi
and ebx, 0x7c0000
shr ebx, 0x12
jmp 0x7002f7d5
mov eax, dword [esp + 0xc]
and esi, 0xfffffeff
mov dword [eax + 0x18], esi
add esp, 0x14
xor eax, eax
pop ebx
pop esi
pop edi
pop ebp
ret
test byte [esp + 8], 2
je 0x7002f905
cmp ebx, 0x17
jbe 0x7002f80d
xor ecx, ecx
mov eax, dword [esp + 0xc]
sub ebx, 0x17
and esi, 0xff83ffff
add esi, 0x5c0000
mov byte [eax + 0x118], bl
movzx ebx, bl
add ecx, ebx
jmp 0x7002f7e0
mov eax, dword [esp + 0xc]
mov dword [esp], 0xffffffff
mov dword [esp + 8], 0
mov esi, dword [eax + 0x18]
mov dword [eax + 0xb0], 0xffffffff
and esi, 0xff83ffff
mov dword [eax + 0x18], esi
xor eax, eax
jmp 0x7002f763
mov eax, dword [esp + 0xc]
sub esi, 0x40000
mov dword [esp], edx
mov edx, dword [esp + 8]
movzx ebp, byte [eax + 0x11b]
mov eax, 1
jmp 0x7002f926
mov esi, ebx
shr edx, 1
mov ecx, eax
lea edi, [ebp + eax]
add eax, 1
test dl, 2
lea ebx, [esi - 0x40000]
je 0x7002f924
mov eax, dword [esp + 0xc]
mov edx, dword [esp]
mov ebx, eax
mov dword [eax + 0x18], esi
mov eax, edi
mov byte [ebx + 0x11b], al
mov ebx, esi
and ebx, 0x7c0000
shr ebx, 0x12
jmp 0x7002f7d5