Function at 0x421cc0
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
sub esp, 0xf8
push esi
mov esi, dword [ebp + 8]
mov ecx, esi
push edi
mov edi, dword [ebp + 0xc]
mov edx, edi
mov dword [ebp - 0x7c], 0
mov dword [ebp - 0x78], 0
mov dword [ebp - 0x74], 0
mov dword [ebp - 0x70], 0
mov dword [ebp - 0x6c], 0
mov dword [ebp - 0x68], 0
mov dword [ebp - 0x64], 0
mov dword [ebp - 0x60], 0
mov dword [ebp - 0x5c], 0
mov dword [ebp - 0x58], 0
mov dword [ebp - 0x54], 0
mov dword [ebp - 0x50], 0
mov dword [ebp - 0x4c], 0
mov dword [ebp - 0x48], 0
mov dword [ebp - 0x44], 0
mov dword [ebp - 0x40], 0
mov eax, dword [ecx]
lea ecx, [ecx + 4]
inc dword [ebp + eax*4 - 0x7c]
sub edx, 1
jne 0x421d45
cmp dword [ebp - 0x7c], edi
jne 0x421d6a
mov eax, dword [ebp + 0x1c]
pop edi
pop esi
mov dword [eax], edx
mov eax, dword [ebp + 0x20]
mov dword [eax], edx
xor eax, eax
mov esp, ebp
pop ebp
ret
push ebx
mov ebx, dword [ebp + 0x20]
mov ecx, 1
mov edx, dword [ebx]
mov dword [ebp + 8], edx
cmp dword [ebp + ecx*4 - 0x7c], 0
jne 0x421d85
inc ecx
cmp ecx, 0xf
jbe 0x421d78
mov dword [ebp + 0xc], ecx
cmp edx, ecx
jae 0x421d91
mov edx, ecx
mov dword [ebp + 8], edx
mov eax, 0xf
cmp dword [ebp + eax*4 - 0x7c], 0
jne 0x421da2
sub eax, 1
jne 0x421d96
mov dword [ebp - 0x18], eax
cmp edx, eax
jbe 0x421dae
mov edx, eax
mov dword [ebp + 8], edx
mov dword [ebx], edx
mov edx, 1
shl edx, cl
cmp ecx, eax
jae 0x421dcd
jmp 0x421dc0
sub edx, dword [ebp + ecx*4 - 0x7c]
js 0x421de2
inc ecx
add edx, edx
cmp ecx, eax
jb 0x421dc0
lea ebx, [eax*4]
mov ecx, edx
sub edx, dword [ebp + ebx - 0x7c]
mov dword [ebp - 0x1c], ebx
mov dword [ebp - 0x3c], edx
jns 0x421dee
pop ebx
pop edi
mov eax, 0xfffffffd
pop esi
mov esp, ebp
pop ebp
ret
xor edx, edx
mov dword [ebp + ebx - 0x7c], ecx
mov dword [ebp - 0xb8], edx
sub eax, 1
je 0x421e14
xor ecx, ecx
add edx, dword [ebp + ecx - 0x78]
lea ecx, [ecx + 4]
mov dword [ebp + ecx - 0xb8], edx
sub eax, 1
jne 0x421e01
mov ebx, dword [ebp + 0x2c]
xor ecx, ecx
lea esp, [esp]
mov edx, dword [esi]
lea esi, [esi + 4]
test edx, edx
je 0x421e3b
mov eax, dword [ebp + edx*4 - 0xbc]
mov dword [ebx + eax*4], ecx
inc eax
mov dword [ebp + edx*4 - 0xbc], eax
inc ecx
cmp ecx, edi
jb 0x421e20
mov ebx, dword [ebp - 0x1c]
or edx, 0xffffffff
mov ecx, dword [ebp + 8]
xor edi, edi
mov esi, dword [ebp + 0xc]
mov dword [ebp - 0xc], 0
mov eax, dword [ebp + ebx - 0xbc]
mov ebx, ecx
mov dword [ebp - 0x38], eax
neg ebx
mov eax, dword [ebp + 0x2c]
mov dword [ebp - 0x28], eax
mov eax, dword [ebp - 0x18]
mov dword [ebp - 0xbc], 0
mov dword [ebp - 4], edx
mov dword [ebp - 0x10], ebx
mov dword [ebp - 0xf8], 0
mov dword [ebp - 0x30], 0
cmp esi, eax
jg 0x4220d9
lea eax, [ebp - 0x7c]
lea eax, [eax + esi*4]
mov dword [ebp - 0x14], eax
mov eax, dword [ebp - 0x20]
mov dword [ebp - 8], eax
mov eax, dword [ebp - 0x14]
jmp 0x421eb0
mov eax, dword [eax]
test eax, eax
je 0x4220c0
lea ebx, [ebx]
mov dword [ebp - 0x34], eax
dec eax
mov dword [ebp - 0x1c], eax
lea eax, [ebx + ecx]
cmp esi, eax
jle 0x421fb9
sub ebx, ecx
mov esi, ebx
mov edi, dword [ebp - 0x18]
mov ebx, eax
inc edx
mov dword [ebp - 0x10], ebx
add esi, ecx
mov dword [ebp - 4], edx
sub edi, ebx
mov dword [ebp - 0x2c], esi
cmp edi, ecx
jbe 0x421eef
mov edi, ecx
mov edx, dword [ebp + 0xc]
mov eax, 1
sub edx, ebx
mov ecx, edx
shl eax, cl
cmp eax, dword [ebp - 0x34]
jbe 0x421f29
mov esi, dword [ebp - 0x14]
or ecx, 0xffffffff
sub ecx, dword [ebp - 0x1c]
add eax, ecx
cmp edx, edi
jae 0x421f29
inc edx
cmp edx, edi
jae 0x421f29
mov ecx, dword [esi + 4]
lea esi, [esi + 4]
add eax, eax
cmp eax, ecx
jbe 0x421f29
inc edx
sub eax, ecx
cmp edx, edi
jb 0x421f16
mov eax, dword [ebp + 0x28]
mov ecx, edx
mov edi, 1
shl edi, cl
mov eax, dword [eax]
lea ecx, [eax + edi]
cmp ecx, 0x5a0
ja 0x4220f0
mov ebx, dword [ebp + 0x24]
lea esi, [ebx + eax*8]
mov eax, dword [ebp - 4]
mov ebx, dword [ebp + 0x28]
mov dword [ebp - 0x30], esi
mov dword [ebp + eax*4 - 0xf8], esi
mov dword [ebx], ecx
test eax, eax
je 0x421f9c
mov ecx, dword [ebp - 0xc]
mov dword [ebp + eax*4 - 0xbc], ecx
mov eax, dword [ebp + 8]
mov byte [ebp - 0x24], dl
mov edx, ecx
mov ecx, dword [ebp - 0x2c]
shr edx, cl
mov ecx, dword [ebp - 4]
mov byte [ebp - 0x23], al
mov eax, dword [ebp - 0x24]
mov ecx, dword [ebp + ecx*4 - 0xfc]
sub esi, ecx
sar esi, 3
sub esi, edx
mov dword [ebp - 8], esi
mov dword [ecx + edx*8], eax
mov dword [ecx + edx*8 + 4], esi
jmp 0x421fa1
mov eax, dword [ebp + 0x1c]
mov dword [eax], esi
mov ebx, dword [ebp - 0x10]
mov ecx, dword [ebp + 8]
mov edx, dword [ebp - 4]
mov esi, dword [ebp - 0x2c]
lea eax, [ebx + ecx]
cmp dword [ebp + 0xc], eax
jg 0x421ed6
mov edx, dword [ebp + 0xc]
mov al, dl
mov ecx, dword [ebp - 0x38]
sub al, bl
mov esi, dword [ebp - 0x28]
mov byte [ebp - 0x23], al
mov eax, dword [ebp + 0x2c]
lea eax, [eax + ecx*4]
cmp esi, eax
jb 0x421fd9
mov byte [ebp - 0x24], 0xc0
jmp 0x422015
mov ecx, dword [esi]
add esi, 4
mov eax, dword [ebp + 0x10]
mov dword [ebp - 8], ecx
mov dword [ebp - 0x28], esi
cmp ecx, eax
jae 0x421ffc
cmp ecx, 0x100
sbb al, al
and al, 0xa0
add al, 0x60
mov byte [ebp - 0x24], al
jmp 0x422015
sub ecx, eax
mov dword [ebp - 0x28], esi
mov eax, dword [ebp + 0x18]
mov al, byte [eax + ecx*4]
add al, 0x50
mov byte [ebp - 0x24], al
mov eax, dword [ebp + 0x14]
mov ecx, dword [eax + ecx*4]
mov dword [ebp - 8], ecx
mov ecx, edx
mov esi, 1
mov edx, dword [ebp - 0xc]
sub ecx, ebx
shl esi, cl
mov ecx, ebx
shr edx, cl
cmp edx, edi
jae 0x42204e
mov eax, dword [ebp - 0x30]
mov ebx, dword [ebp - 0x24]
lea eax, [eax + edx*8]
mov ecx, dword [ebp - 8]
add edx, esi
mov dword [eax + 4], ecx
lea ecx, [esi*8]
mov dword [eax], ebx
add eax, ecx
cmp edx, edi
jb 0x422034
mov ebx, dword [ebp - 0x10]
mov ecx, dword [ebp + 0xc]
mov eax, 1
mov esi, dword [ebp - 0xc]
lea ecx, [ecx - 1]
shl eax, cl
test esi, eax
je 0x42206a
xor esi, eax
shr eax, 1
test esi, eax
jne 0x422062
mov edx, dword [ebp - 4]
xor esi, eax
mov eax, 1
mov dword [ebp - 0xc], esi
mov ecx, ebx
shl eax, cl
dec eax
and eax, esi
cmp eax, dword [ebp + edx*4 - 0xbc]
je 0x4220af
jmp 0x422090
sub ebx, dword [ebp + 8]
mov eax, 1
mov ecx, ebx
dec edx
shl eax, cl
dec eax
and eax, esi
cmp eax, dword [ebp + edx*4 - 0xbc]
jne 0x422090
mov dword [ebp - 4], edx
mov dword [ebp - 0x10], ebx
mov eax, dword [ebp - 0x1c]
mov ecx, dword [ebp + 8]
mov esi, dword [ebp + 0xc]
test eax, eax
jne 0x421ec0
mov eax, dword [ebp - 0x14]
inc esi
add eax, 4
mov dword [ebp + 0xc], esi
mov dword [ebp - 0x14], eax
cmp esi, dword [ebp - 0x18]
jle 0x421eb0
mov eax, dword [ebp - 0x18]
cmp dword [ebp - 0x3c], 0
je 0x4220fc
cmp eax, 1
je 0x4220fc
pop ebx
pop edi
mov eax, 0xfffffffb
pop esi
mov esp, ebp
pop ebp
ret
pop ebx
pop edi
mov eax, 0xfffffffc
pop esi
mov esp, ebp
pop ebp
ret
pop ebx
pop edi
xor eax, eax
pop esi
mov esp, ebp
pop ebp
ret