Function at 0x421612
Capabilities:
Encode data using xor
Encrypt data using rc4 prga

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff8
sub esp, 0x468
mov dword [esp + 0x50], 0
mov dword [esp + 0x4c], 0
mov dword [esp + 0x48], 0
mov dword [esp + 0x60], 0x2b902593
mov dword [esp + 0x64], 0x2f8f2981
mov dword [esp + 0x68], 0x335e2d9d
mov dword [esp + 0x6c], 0x37883199
mov dword [esp + 0x70], 0x3b34359d
mov dword [esp + 0x74], 0
mov dword [esp + 0x78], 0
mov dword [esp + 0x7b], 0
mov dword [esp + 8], 0
mov eax, dword [esp + 8]
cmp eax, 0x1e
ja 0x4211aa
nop
nop
nop
nop
nop
nop
nop
nop
mov eax, dword [esp + 8]
mov ecx, dword [esp + 8]
movzx edx, byte [esp + ecx + 0x60]
lea ecx, [eax + edx]
add ecx, 0xc8dd9c85
add eax, 0x85
and eax, edx
add eax, eax
mov edx, ecx
not edx
and edx, eax
not eax
and eax, ecx
sub eax, edx
mov dword [esp + 0x28], eax
mov eax, dword [esp + 0x28]
add al, 0x5d
mov ecx, dword [esp + 8]
mov byte [esp + ecx + 0x60], al
inc dword [esp + 8]
mov eax, dword [esp + 8]
cmp eax, 0x1f
jb 0x421160
lea edi, [esp + 0x60]
lea ecx, [esp + 0x48]
push edi
call fcn.004366b0
shr eax, 0x1f
xor ebx, ebx
jmp dword [eax*4 + 0x4446f0]
lea ecx, [esp + 0x48]
push 0x410
call fcn.00436930
not eax
shr eax, 0x1f
xor ebx, ebx
jmp dword [eax*4 + 0x4446f8]
mov dword [esp + 0x60], 0xcaf3b8d5
mov dword [esp + 0x64], 0xc0caedd0
mov dword [esp + 0x68], 0x2c353311
mov dword [esp + 0x6c], 0x273e3615
mov dword [esp + 0x70], 0x301b0216
mov dword [esp + 0x74], 0x3f1c061d
mov dword [esp + 0x78], 0x22391e3a
mov dword [esp + 0x7c], 0x261f2403
mov dword [esp + 0x80], 0x16000602
mov dword [esp + 0x84], 0x2e13e501
mov dword [esp + 0x88], 0xebda3131
mov dword [esp + 0x8c], 0
mov byte [esp + 0x90], 0
mov dword [esp + 8], 0
mov eax, dword [esp + 8]
cmp eax, 0x30
ja 0x4212ba
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov eax, dword [esp + 8]
mov ecx, dword [esp + 8]
movzx ecx, byte [esp + ecx + 0x60]
lea edx, [eax - 0x18477d88]
add eax, 0x78
and eax, ecx
or edx, ecx
sub edx, eax
mov dword [esp + 0x28], edx
mov eax, dword [esp + 0x28]
add al, 0xb8
mov ecx, dword [esp + 8]
mov byte [esp + ecx + 0x60], al
mov eax, dword [esp + 8]
mov ecx, eax
and ecx, 1
xor eax, 1
lea eax, [eax + ecx*2]
mov dword [esp + 8], eax
mov eax, dword [esp + 8]
cmp eax, 0x31
jb 0x421270
lea eax, [esp + 8]
lea ecx, [esp + 0x48]
push 0
push 0x2b
push edi
push eax
call fcn.00436f10
mov ebx, dword [esp + 8]
mov esi, dword [esp + 0xc]
xor eax, eax
cmp ebx, esi
sete al
jmp dword [eax*4 + 0x444700]
mov eax, esi
sub eax, ebx
sar eax, 2
mov ecx, eax
and ecx, 0x421
mov edx, eax
or eax, 0x421
imul eax, ecx
xor ecx, 0x421
and edx, 0xfffffbde
imul edx, ecx
add eax, edx
push eax
call fcn.00408c60
add esp, 4
mov dword [esp + 0x40], 0
xor ecx, ecx
mov dword [esp + 0x58], esi
cmp ebx, esi
setne cl
mov dword [esp + 0x3c], eax
mov dword [esp + 0x14], eax
jmp dword [ecx*4 + 0x444708]
mov esi, dword [ebx]
push 0x400
push 0
push edi
call fcn.00408ce0
add esp, 0xc
lea eax, [esp + 0x28]
lea ecx, [esp + 0x48]
push eax
push 0x400
push edi
push esi
call fcn.00436d80
xor ecx, ecx
cmp eax, 0xc0000000
setae cl
mov dword [esp + 0x5c], ebx
jmp dword [ecx*4 + 0x444710]
xor eax, eax
cmp dword [esp + 0x28], 0
sete al
jmp dword [eax*4 + 0x444718]
mov eax, 1
jmp 0x4213a2
xor eax, eax
mov ecx, dword [case.0x4212dc.10]
nop
nop
nop
nop
nop
nop
nop
nop
jmp ecx
jmp dword [eax*4 + 0x444730]
mov byte [esp + 0x45f], 0
movzx eax, byte [esp + 0x60]
xor ebx, ebx
test al, al
je 0x4213e1
lea ecx, [esp + 0x60]
cmp al, 0x2e
je 0x4213df
movzx eax, byte [ecx + 1]
inc ecx
test al, al
jne 0x4213d0
jmp 0x4213e1
mov ebx, ecx
xor eax, eax
test ebx, ebx
setne al
jmp dword [eax*4 + 0x444738]
jmp dword [0x444744]
inc ebx
jmp case.0x4213e8.3
jmp dword [0x44474c]
mov esi, ebx
inc ebx
movzx eax, byte [esi + 1]
xor edx, edx
test al, al
je 0x421400
mov ecx, ebx
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
cmp al, 0x2e
je 0x421430
movzx eax, byte [ecx + 1]
inc ecx
test al, al
jne 0x421420
jmp 0x421400
mov edx, ecx
jmp dword [0x44474c]
xor eax, eax
test edx, edx
setne al
jmp dword [eax*4 + 0x444750]
mov dword [esp + 0x24], esi
mov ecx, edx
sub ecx, ebx
lea eax, [ecx + 0x1d821c69]
lea esi, [eax + eax*2]
add esi, 0xa779aac5
shr esi, 2
movzx ecx, byte [ecx + ebx - 1]
cmp ecx, 0x3d
je 0x42146f
cmp ecx, 0x2e
jne 0x421474
mov ecx, esi
dec ecx
jmp 0x421476
mov ecx, esi
movzx eax, byte [eax + ebx - 0x1d821c6b]
cmp eax, 0x3d
je 0x421488
cmp eax, 0x2e
jne 0x42148d
mov esi, edx
dec ecx
jmp 0x42148f
mov esi, edx
mov dword [esp + 0x54], ecx
lea eax, [ecx + 1]
push eax
call fcn.00408c60
add esp, 4
mov dword [esp + 0x18], eax
mov edx, esi
sub edx, ebx
je 0x4215a7
xor edi, edi
mov esi, 2
mov dword [esp + 0x20], edx
jmp 0x4214d2
mov ecx, dword [esp + 0x44]
nop
nop
lea eax, [esi + 4]
add esi, 2
mov edi, ecx
cmp esi, edx
mov esi, eax
jae 0x4215a7
mov ebx, dword [esp + 0x24]
movzx eax, byte [ebx + esi - 1]
push eax
call fcn.00417f30
add esp, 4
mov byte [esp + 0x1c], al
movzx eax, byte [ebx + esi]
push eax
call fcn.00417f30
mov edx, dword [esp + 0x24]
add esp, 4
mov bh, al
movzx ecx, byte [esp + 0x1c]
shl cl, 2
shr al, 4
and al, 3
or al, cl
mov ecx, dword [esp + 0x18]
mov byte [ecx + edi], al
lea ecx, [edi + 1]
cmp esi, edx
jae 0x4214c0
mov dword [esp + 0x1c], edi
mov eax, dword [esp + 0x24]
movzx eax, byte [eax + esi + 1]
push eax
mov edi, ecx
call fcn.00417f30
mov ecx, edi
mov edx, dword [esp + 0x24]
add esp, 4
cmp al, 0x40
je 0x4214c0
mov bl, al
shl bh, 4
shr al, 2
and al, 0xf
or al, bh
mov edi, dword [esp + 0x1c]
lea ecx, [edi + 2]
mov dword [esp + 0x44], ecx
mov ecx, dword [esp + 0x18]
mov byte [ecx + edi + 1], al
lea eax, [esi + 1]
cmp eax, edx
jae 0x4214ba
mov eax, dword [esp + 0x24]
movzx eax, byte [eax + esi + 2]
push eax
call fcn.00417f30
mov edx, dword [esp + 0x24]
add esp, 4
cmp al, 0x40
mov ecx, dword [esp + 0x44]
je 0x4214c0
shl bl, 6
mov ecx, eax
and cl, bl
add cl, cl
xor bl, al
add bl, cl
mov eax, dword [esp + 0x18]
mov ecx, dword [esp + 0x1c]
mov byte [eax + ecx + 2], bl
add ecx, 3
jmp 0x4214c0
mov eax, dword [esp + 0x54]
mov esi, dword [esp + 0x18]
mov byte [esi + eax], 0
push esi
call fcn.00401f20
add esp, 4
mov ebx, eax
jmp dword [0x444758]
push esi
call fcn.00408c70
add esp, 4
jmp dword [0x444760]
jmp dword [0x444760]
push ebx
call fcn.00402800
add esp, 4
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
push ebx
call fcn.00402800
add esp, 4
jmp dword [0x444768]
xor ecx, ecx
test eax, eax
setne cl
jmp dword [ecx*4 + 0x444770]
jmp 0x421709
mov dword [esp + 0x28], 0xb3ca3e3b
lea ecx, [esp + 0x2c]
mov byte [ecx + 8], 0
mov dword [ecx + 4], 0
mov dword [ecx], 0
mov dword [esp + 4], 0
mov ecx, dword [esp + 4]
cmp ecx, 0xc
ja 0x42168f
mov ecx, dword [esp + 4]
mov edx, dword [esp + 4]
movzx edx, byte [esp + edx + 0x28]
mov esi, ecx
and esi, 0x3fc8fdb9
xor ecx, 0x3fc8fdb9
lea ecx, [ecx + esi*2]
lea esi, [ecx + edx]
and ecx, edx
add ecx, ecx
mov edx, esi
not edx
and edx, ecx
not ecx
and ecx, esi
sub ecx, edx
mov dword [esp], ecx
mov ecx, dword [esp]
add cl, 0xf1
mov edx, dword [esp + 4]
mov byte [esp + edx + 0x28], cl
inc dword [esp + 4]
mov ecx, dword [esp + 4]
cmp ecx, 0xd
jb case.default.0x4216a4
lea ecx, [esp + 0x28]
push ecx
push eax
call fcn.00402750
add esp, 8
xor ecx, ecx
test eax, eax
setne cl
jmp dword [ecx*4 + 0x444778]
mov edx, dword [esp + 0x14]
jmp 0x4216dc
movzx ecx, byte [eax]
test cl, cl
je 0x4216cd
inc eax
mov edx, dword [esp + 0x14]
nop
nop
nop
mov byte [edx], cl
inc edx
movzx ecx, byte [eax]
inc eax
test cl, cl
jne 0x4216c0
jmp 0x4216d1
mov edx, dword [esp + 0x14]
mov byte [edx], 0
mov word [edx], 0x203a
add edx, 2
movzx eax, byte [esp + 0x60]
test al, al
je 0x4216fb
lea ecx, [esp + 0x61]
nop
nop
nop
nop
nop
nop
nop
mov byte [edx], al
inc edx
movzx eax, byte [ecx]
inc ecx
test al, al
jne 0x4216f0
mov byte [edx], 0xa
inc edx
mov dword [esp + 0x14], edx
mov al, 1
mov dword [esp + 0x40], eax
push ebx
call fcn.00402a90
add esp, 4
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov eax, dword [case.0x4216a4.4]
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
jmp eax
mov ebx, dword [esp + 0x5c]
add ebx, 4
xor eax, eax
cmp ebx, dword [esp + 0x58]
setne al
lea edi, [esp + 0x60]
jmp dword [eax*4 + 0x444708]
mov ebx, dword [esp + 0x40]
mov eax, ebx
and al, 1
movzx eax, al
jmp dword [eax*4 + 0x4447a0]
mov esi, dword [esp + 0x3c]
jmp dword [0x4447a8]
xor edi, edi
test ebx, ebx
jne 0x42186a
jmp 0x421877
mov edi, dword [esp + 0x14]
mov byte [edi], 0
mov esi, dword [esp + 0x3c]
sub edi, esi
mov dword [esp + 0x60], 0xfffafdad
mov dword [esp + 0x64], 0xebc7f6f1
mov dword [esp + 0x68], 0xecf0f6fd
mov dword [esp + 0x6c], 0xc2d2ceb3
mov dword [esp + 0x70], 0xf789c8fd
mov dword [esp + 0x74], 0xc5cbcecb
mov dword [esp + 0x78], 0xdbde87db
mov word [esp + 0x7c], 0x51dc
mov dword [esp + 0x7e], 0
mov word [esp + 0x82], 0
mov dword [esp], 0
mov eax, dword [esp]
cmp eax, 0x23
ja 0x421839
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov eax, dword [esp]
mov ecx, dword [esp]
movzx ecx, byte [esp + ecx + 0x60]
lea edx, [eax + ecx]
add edx, 0xa33a8f12
add eax, 0xa33a8f12
and eax, ecx
add eax, eax
sub edx, eax
mov dword [esp + 0x28], edx
mov eax, dword [esp + 0x28]
mov ecx, eax
xor ecx, 0x81
and eax, 1
lea eax, [ecx + eax*2]
inc al
mov ecx, dword [esp]
mov byte [esp + ecx + 0x60], al
inc dword [esp]
mov eax, dword [esp]
cmp eax, 0x24
jb 0x4217f0
lea eax, [esp + 0x60]
mov ecx, dword [ebp + 8]
push edi
push esi
push eax
call fcn.00409480
mov ebx, eax
jmp dword [0x4447a8]
push esi
call fcn.00408c70
add esp, 4
and bl, 1
mov edi, ebx
mov ebx, dword [esp + 8]
mov esi, dword [esp + 0xc]
test ebx, ebx
je 0x421877
cmp ebx, esi
je 0x421877
push ebx
call fcn.00408c70
add esp, 4
mov ebx, edi
lea ecx, [esp + 0x48]
call fcn.00436a70
mov eax, ebx
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret
mov eax, dword [case.0x4213e8.34]
nop
nop
nop
nop
nop
nop
nop
nop
nop
jmp eax
mov eax, dword [case.0x4213e8.38]
nop
nop
nop
nop
nop
nop
nop
nop
nop
jmp eax
xor eax, eax
test ebx, ebx
sete al
jmp dword [eax*4 + 0x444880]
jmp dword [0x4447dc]
mov dword [esp + 0x28], 0x9bc899fc
mov dword [esp + 0x2c], 0x97c995c9
mov dword [esp + 0x30], 0x93c191c9
mov dword [esp + 0x34], 0xaffcadc0
mov dword [esp + 0x38], 0xabcea9c1
mov dword [esp + 0x3c], 0xa7e7a5f1
mov dword [esp + 0x40], 0xa3faa1e3
mov dword [esp + 0x44], 0xbfe8bde5
mov dword [esp + 0x48], 0xbbdeb9e5
mov dword [esp + 0x4c], 0xb7e1b5e7
mov dword [esp + 0x50], 0xb3deb1ee
mov dword [esp + 0x54], 0xcf8fcda3
mov dword [esp + 0x58], 0xcb97c99a
mov dword [esp + 0x5c], 0xc7a8c5a0
mov dword [esp + 0x60], 0xc3b6c1a1
mov dword [esp + 0x64], 0xdfa3dd52
mov dword [esp + 0x68], 0xdb89d9bc
mov dword [esp + 0x6c], 0xd7abd558
mov dword [esp + 0x70], 0xd3a7d1b1
mov word [esp + 0x74], 0xedec
mov dword [esp + 0x76], 0
mov dword [esp + 0xa8], 0
mov eax, dword [esp + 0xa8]
cmp eax, 0x51
ja 0x421b84
nop
nop
mov eax, dword [esp + 0xa8]
mov ecx, dword [esp + 0xa8]
movzx ecx, byte [esp + ecx + 0x28]
lea edx, [eax + 0x94]
and edx, ecx
add eax, ecx
add edx, edx
sub eax, edx
add eax, 0x33933b94
mov dword [esp + 0xdc], eax
mov eax, dword [esp + 0xdc]
add al, 0xf4
mov ecx, dword [esp + 0xa8]
mov byte [esp + ecx + 0x28], al
inc dword [esp + 0xa8]
mov eax, dword [esp + 0xa8]
cmp eax, 0x52
jb 0x421b30
mov eax, esp
lea ecx, [esp + 0x28]
push 0
push 0
push esi
push eax
push ecx
call fcn.0043ba60
add esp, 0x14
mov dword [esp + 0x28], 0x9bc899fc
mov dword [esp + 0x2c], 0x97c995c9
mov dword [esp + 0x30], 0x93c191c9
mov dword [esp + 0x34], 0xaffcadc0
mov dword [esp + 0x38], 0xabcea9c1
mov dword [esp + 0x3c], 0xa7e7a5f1
mov dword [esp + 0x40], 0xa3faa1e3
mov dword [esp + 0x44], 0xbfe8bde5
mov dword [esp + 0x48], 0xbbdeb9e5
mov dword [esp + 0x4c], 0xb7e1b5e7
mov dword [esp + 0x50], 0xb3deb1ee
mov dword [esp + 0x54], 0xcf8fcda3
mov dword [esp + 0x58], 0xcb97c99a
mov dword [esp + 0x5c], 0xc7a8c5a0
mov dword [esp + 0x60], 0xc3b6c1a1
mov dword [esp + 0x64], 0xdfa3dd52
mov dword [esp + 0x68], 0xdb89d9bc
mov dword [esp + 0x6c], 0xd7abd558
mov dword [esp + 0x70], 0xd3a7d1b1
mov word [esp + 0x74], 0xedec
mov dword [esp + 0x76], 0
mov dword [esp + 0xa8], 0
mov eax, dword [esp + 0xa8]
cmp eax, 0x51
ja 0x421cb4
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov eax, dword [esp + 0xa8]
mov ecx, dword [esp + 0xa8]
movzx ecx, byte [esp + ecx + 0x28]
lea edx, [eax + 0x94]
and edx, ecx
add eax, ecx
add edx, edx
sub eax, edx
add eax, 0x33933b94
mov dword [esp + 0xdc], eax
mov eax, dword [esp + 0xdc]
add al, 0xf4
mov ecx, dword [esp + 0xa8]
mov byte [esp + ecx + 0x28], al
inc dword [esp + 0xa8]
mov eax, dword [esp + 0xa8]
cmp eax, 0x52
jb 0x421c60
mov eax, esp
lea ecx, [esp + 0x28]
push 0
push 0
push esi
push eax
push ecx
call fcn.0043ba60
add esp, 0x14
jmp dword [0x4447e0]
shr eax, 0x1f
jmp dword [eax*4 + 0x4447e8]
mov edi, ebx
lea ebx, [esp + 0x90]
lea eax, [esp + 0xc]
push ebx
push eax
push 0
push 0
push 0
push 0
push 0
push 0
push dword [esp + 0x20]
call fcn.0043bea0
add esp, 0x24
not eax
shr eax, 0x1f
jmp dword [eax*4 + 0x4447f0]
mov eax, dword [esp]
mov dword [esp + 0x28], 0x12111017
lea ecx, [esp + 0x2c]
mov word [ecx + 8], 0
mov dword [ecx + 4], 0
mov dword [ecx], 0
mov dword [esp + 0xa8], 0
mov ecx, dword [esp + 0xa8]
cmp ecx, 0xd
ja 0x421ec5
nop
nop
nop
nop
nop
nop
nop
mov ecx, dword [esp + 0xa8]
mov edx, dword [esp + 0xa8]
movzx edx, byte [esp + edx + 0x28]
lea esi, [ecx - 0x52f3f3fd]
add ecx, 3
or ecx, esi
and ecx, edx
or esi, edx
sub esi, ecx
mov dword [esp + 0xdc], esi
mov ecx, dword [esp + 0xdc]
add cl, 0xeb
mov edx, dword [esp + 0xa8]
mov byte [esp + edx + 0x28], cl
mov ecx, dword [esp + 0xa8]
mov edx, ecx
and edx, 1
xor ecx, 1
lea ecx, [ecx + edx*2]
mov dword [esp + 0xa8], ecx
mov ecx, dword [esp + 0xa8]
cmp ecx, 0xe
jb 0x421e60
mov ecx, dword [0x4498f8]
test ecx, ecx
je 0x421f50
mov edx, dword [esp + 0x28]
xor esi, esi
mov ebx, dword [0x4498fc]
nop
cmp dword [ebx + esi*8], 0x11081610
je 0x421f2d
inc esi
cmp ecx, esi
jne 0x421ee0
jmp 0x421f50
mov esi, 4
xor eax, eax
cmp esi, 4
setb al
jmp dword [eax*4 + 0x444858]
mov ecx, dword [ebx + esi*8 + 4]
cmp ecx, edx
je 0x421f50
push eax
push 1
push dword [0x449900]
push ecx
call fcn.00438640
add esp, 0x10
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov eax, dword [0x444814]
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
jmp eax