Function at 0x10002cb0
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x34
push ebx
push esi
mov esi, dword [ebp + 0x10]
push edi
mov edi, dword [ebp + 0xc]
cmp byte [edi], 0x23
jne 0x10003155
cmp byte [edi + esi - 1], 0x21
jne 0x10003155
mov al, byte [edi + 6]
mov cl, 0x42
cmp al, 0x3c
jne 0x10002d12
cmp byte [edi + 7], cl
jne 0x10002cff
cmp byte [edi + 8], 0x4c
jne 0x10002cff
mov eax, dword [ebp + 0x14]
mov ecx, dword [ebp + 8]
push eax
push esi
push edi
push ecx
call fcn.10003170
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x10
cmp al, 0x3c
jne 0x10002d12
cmp byte [edi + 7], cl
jne 0x10002d12
cmp byte [edi + 8], 0x58
je 0x10003155
inc esi
mov eax, esi
and eax, 0x8000000f
mov dword [ebp - 0x14], esi
jns 0x10002d24
dec eax
or eax, 0xfffffff0
inc eax
je 0x10002d32
mov ecx, 0x10
sub ecx, eax
add esi, ecx
mov dword [ebp - 0x14], esi
push esi
call fcn.10022dc4
mov ebx, eax
add esp, 4
mov dword [ebp - 8], ebx
test ebx, ebx
jne 0x10002d5f
mov edx, dword [ebp + 0x14]
mov eax, dword [ebp + 0x10]
mov ecx, dword [ebp + 8]
push edx
push eax
push edi
push ecx
call fcn.10003170
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x10
push esi
push 0
push ebx
call fcn.10029b30
mov ecx, dword [ebp + 0x10]
add ecx, 0xfffffffd
add esp, 0xc
xor eax, eax
mov dword [ebx], ecx
test ecx, ecx
jle 0x10002d8d
lea esp, [esp]
mov dl, byte [edi + eax + 2]
mov byte [ebx + eax + 4], dl
inc eax
cmp eax, ecx
jl 0x10002d80
push 0x10
call fcn.10022dc4
mov edi, eax
add esp, 4
mov dword [ebp - 0x34], edi
test edi, edi
jne 0x10002dc7
push ebx
call fcn.10022e8e
mov eax, dword [ebp + 0x14]
mov ecx, dword [ebp + 0x10]
mov edx, dword [ebp + 0xc]
add esp, 4
push eax
mov eax, dword [ebp + 8]
push ecx
push edx
push eax
call fcn.10003170
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x10
mov ecx, dword [0x10035efc]
mov edx, dword [0x10035f00]
mov eax, dword [0x10035f04]
mov dword [edi], ecx
mov cx, word [0x10035f08]
mov dword [edi + 4], edx
mov dword [edi + 8], eax
mov eax, dword [ebp + 0xc]
mov dl, byte [eax]
mov al, byte [eax + 1]
mov word [edi + 0xc], cx
mov byte [edi + 0xf], al
mov byte [edi + 0xe], dl
lea eax, [edi + 3]
mov dword [ebp - 0x10], 4
movzx edx, byte [eax]
mov cl, byte [eax - 3]
mov byte [eax - 3], dl
movzx edx, byte [eax - 1]
mov byte [eax], cl
mov cl, byte [eax - 2]
mov byte [eax - 2], dl
mov byte [eax - 1], cl
add eax, 4
sub dword [ebp - 0x10], 1
jne 0x10002e03
lea ecx, [esi - 4]
test ecx, ecx
jle 0x10002e63
dec ecx
shr ecx, 2
lea eax, [ebx + 7]
inc ecx
movzx edx, byte [eax - 3]
mov byte [ebp - 1], dl
movzx edx, byte [eax]
mov byte [eax - 3], dl
movzx edx, byte [ebp - 1]
mov byte [eax], dl
movzx edx, byte [eax - 2]
mov byte [ebp - 1], dl
movzx edx, byte [eax - 1]
mov byte [eax - 2], dl
movzx edx, byte [ebp - 1]
mov byte [eax - 1], dl
add eax, 4
sub ecx, 1
jne 0x10002e33
xor ecx, ecx
mov dword [ebp - 0xc], ecx
test esi, esi
jle 0x10002ff2
lea eax, [edi + 2]
mov dword [ebp - 0x24], eax
mov eax, edi
sub eax, 0x10035eed
mov dword [ebp - 0x2c], eax
mov eax, 0x10035eed
sub eax, edi
mov dword [ebp - 0x30], eax
mov esi, edi
sub esi, 0x10035eec
mov eax, 0x10035edd
sub eax, edi
mov dword [ebp - 0x18], esi
mov dword [ebp - 0x20], 0x10035eec
mov dword [ebp - 0x1c], 0x10035edc
mov dword [ebp - 0x28], eax
jmp 0x10002eb3
mov esi, dword [ebp - 0x18]
xor eax, eax
add ecx, ebx
jmp 0x10002ec0
movzx edx, byte [eax + esi + 0x10035eec]
mov byte [eax + 0x10035eec], dl
movzx edx, byte [ecx + eax]
mov byte [eax + 0x10035edc], dl
inc eax
cmp eax, 0x10
jl 0x10002ec0
mov dword [ebp - 0x10], 0
pushal
pushfd
push dword [ebp - 0x20]
push 1
push dword [ebp - 0x1c]
xor eax, eax
mov ecx, eax
mov edx, eax
mov ebx, 0x20
mov esi, eax
mov edi, 4
push eax
popfd
call fcn.10002b80
mov dword [ebp - 0x10], eax
popfd
popal
mov edx, dword [ebp - 8]
mov esi, dword [ebp - 0xc]
mov ecx, dword [ebp - 0x24]
mov edi, dword [ebp - 0x28]
lea esi, [esi + edx + 1]
mov edx, dword [ebp - 0x2c]
xor eax, eax
movzx ebx, byte [eax + 0x10035edc]
mov byte [esi + eax - 1], bl
movzx ebx, byte [eax + 0x10035eec]
xor bl, byte [eax + 0x10035edc]
add eax, 4
mov byte [eax + edx + 0x10035ee9], bl
movzx ebx, byte [eax + 0x10035ed9]
mov byte [esi + eax - 4], bl
movzx ebx, byte [eax + 0x10035ed9]
xor bl, byte [eax + 0x10035ee9]
add ecx, 4
mov byte [ecx - 5], bl
movzx ebx, byte [eax + 0x10035eda]
mov byte [esi + eax - 3], bl
movzx ebx, byte [eax + 0x10035eea]
xor bl, byte [eax + 0x10035eda]
mov byte [ecx - 4], bl
movzx ebx, byte [edi + ecx - 4]
mov byte [esi + eax - 2], bl
mov ebx, dword [ebp - 0x30]
movzx ebx, byte [ebx + ecx - 4]
xor bl, byte [edi + ecx - 4]
cmp eax, 0x10
mov byte [ecx - 3], bl
jl 0x10002f22
mov ecx, dword [ebp - 0xc]
mov esi, dword [ebp - 0x14]
mov ebx, dword [ebp - 8]
add ecx, 0x10
cmp ecx, esi
mov dword [ebp - 0xc], ecx
jl 0x10002eb0
mov edi, dword [ebp - 0x34]
test esi, esi
jle 0x10002ff2
lea ecx, [esi - 1]
shr ecx, 2
lea eax, [ebx + 3]
inc ecx
movzx edx, byte [eax - 3]
mov byte [ebp - 1], dl
movzx edx, byte [eax]
mov byte [eax - 3], dl
movzx edx, byte [ebp - 1]
mov byte [eax], dl
movzx edx, byte [eax - 2]
mov byte [ebp - 1], dl
movzx edx, byte [eax - 1]
mov byte [eax - 2], dl
movzx edx, byte [ebp - 1]
mov byte [eax - 1], dl
add eax, 4
sub ecx, 1
jne 0x10002fc2
mov eax, 0x55555556
imul esi
mov eax, edx
shr eax, 0x1f
add eax, edx
lea ecx, [eax + esi + 1]
push ecx
call fcn.10022dc4
add esp, 4
mov dword [ebp - 0x10], eax
test eax, eax
jne 0x10003041
push edi
call fcn.10022e8e
push ebx
call fcn.10022e8e
mov edx, dword [ebp + 0x14]
mov eax, dword [ebp + 0x10]
mov ecx, dword [ebp + 0xc]
add esp, 8
push edx
mov edx, dword [ebp + 8]
push eax
push ecx
push edx
call fcn.10003170
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x10
push esi
push eax
push ebx
call fcn.10001320
mov ecx, eax
mov eax, dword [0x10037180]
add esp, 0xc
xor esi, esi
cmp byte [eax], 0
mov dword [ebp - 0xc], ecx
je 0x10003067
lea ecx, [ecx]
inc esi
cmp byte [eax + esi], 0
jne 0x10003060
mov ebx, dword [0x10037184]
test ebx, ebx
jne 0x100030c0
lea eax, [esi + ecx + 3]
push eax
call fcn.10022dc4
mov ecx, dword [ebp - 0xc]
mov ebx, eax
add esp, 4
test ebx, ebx
jne 0x100030c0
mov ecx, dword [ebp - 0x10]
push ecx
call fcn.10022e8e
push edi
call fcn.10022e8e
mov edx, dword [ebp - 8]
push edx
call fcn.10022e8e
mov eax, dword [ebp + 0x14]
mov ecx, dword [ebp + 0x10]
mov edx, dword [ebp + 0xc]
add esp, 0xc
push eax
mov eax, dword [ebp + 8]
push ecx
push edx
push eax
call fcn.10003170
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x10
mov eax, dword [ebp + 0xc]
mov dl, byte [eax]
mov byte [ebx], dl
mov al, byte [eax + 1]
mov byte [ebx + 1], al
test ecx, ecx
jle 0x100030e5
push ecx
mov ecx, dword [ebp - 0x10]
lea eax, [ebx + 2]
push ecx
push eax
call fcn.1002a540
mov ecx, dword [ebp - 0xc]
add esp, 0xc
xor eax, eax
mov byte [ebx + ecx + 2], 0x21
test esi, esi
jle 0x10003108
lea ecx, [ebx + ecx + 3]
mov edx, dword [0x10037180]
mov dl, byte [edx + eax]
mov byte [ecx + eax], dl
inc eax
cmp eax, esi
jl 0x100030f4
mov ecx, dword [ebp - 0xc]
mov eax, dword [ebp + 0x14]
mov edx, dword [ebp + 8]
push eax
lea ecx, [esi + ecx + 3]
push ecx
push ebx
push edx
call fcn.10003170
cmp dword [0x10037184], 0
mov esi, eax
jne 0x1000312f
push ebx
call fcn.10022e8e
add esp, 4
mov eax, dword [ebp - 0x10]
push eax
call fcn.10022e8e
push edi
call fcn.10022e8e
mov ecx, dword [ebp - 8]
push ecx
call fcn.10022e8e
add esp, 0xc
mov eax, esi
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x10
mov edx, dword [ebp + 0x14]
mov eax, dword [ebp + 8]
push edx
push esi
push edi
push eax
call fcn.10003170
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x10