Function at 0x426665
Capabilities:
Encrypt data using rc4 prga

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff8
sub esp, 0x458
mov dword [esp + 0x40], 0
mov dword [esp + 0x3c], 0
mov dword [esp + 0x38], 0
mov dword [esp + 0x34], 0
mov dword [esp + 0x54], 0x23b621b3
mov dword [esp + 0x58], 0x27472541
mov dword [esp + 0x5c], 0x5b0459c5
mov dword [esp + 0x60], 0x5fd65d39
mov dword [esp + 0x64], 0x53525135
mov dword [esp + 0x68], 0
xor eax, eax
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx ecx, byte [esp + eax + 0x54]
lea edx, [eax + 0x4253f838]
and edx, ecx
lea esi, [eax + ecx]
add esi, 0x4253f838
not esi
lea edx, [esi + edx*2]
mov esi, 0x47
sub esi, eax
or esi, edx
add esi, eax
add esi, esi
mov edx, eax
sub edx, esi
add dl, cl
add dl, 0xae
mov byte [esp + eax + 0x54], dl
mov ecx, eax
and ecx, 1
xor eax, 1
lea eax, [eax + ecx*2]
cmp eax, 0x18
jb case.default.0x426268
lea eax, [esp + 0x54]
lea ecx, [esp + 0x34]
push eax
call fcn.00439d70
shr eax, 0x1f
xor ebx, ebx
jmp dword [eax*4 + 0x447cf4]
jmp dword [0x447cfc]
xor ebx, ebx
test edi, edi
je case.0x426268.1
cmp edi, dword [esp + 0xc]
je case.0x426268.1
push edi
call fcn.0040cc50
add esp, 4
lea ecx, [esp + 0x34]
call fcn.0043a1b0
mov eax, ebx
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret
mov edi, dword [esp + 0x14]
add edi, 8
xor eax, eax
cmp edi, dword [esp + 0xc]
setne al
jmp dword [eax*4 + 0x447d2c]
mov esi, dword [edi]
mov dword [esp + 0x14], edi
mov edi, dword [edi + 4]
push 0x400
push 0
lea ebx, [esp + 0x5c]
push ebx
call fcn.0040ccd0
add esp, 0xc
lea eax, [esp + 0x20]
lea ecx, [esp + 0x34]
push eax
push 0
push 0x400
push ebx
push edi
push esi
call fcn.0043aa60
cmp eax, 0xc0000000
setae al
mov ecx, dword [esp + 0x20]
or ecx, dword [esp + 0x24]
sete cl
or cl, al
movzx eax, cl
jmp dword [eax*4 + 0x447d4c]
mov eax, 1
jmp dword [eax*4 + 0x447d54]
xor eax, eax
jmp dword [eax*4 + 0x447d54]
mov byte [esp + 0x453], 0
movzx eax, byte [esp + 0x54]
xor edx, edx
test al, al
je 0x426351
lea ecx, [esp + 0x54]
cmp al, 0x2e
je 0x42634f
movzx eax, byte [ecx + 1]
inc ecx
test al, al
jne 0x426340
jmp 0x426351
mov edx, ecx
xor eax, eax
test edx, edx
setne al
mov dword [esp + 0x10], edx
jmp dword [eax*4 + 0x447d5c]
jmp dword [0x447d70]
lea ebx, [edx + 1]
movzx eax, byte [edx + 1]
xor edi, edi
test al, al
je 0x426370
mov ecx, ebx
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
cmp al, 0x2e
je 0x4263a0
movzx eax, byte [ecx + 1]
inc ecx
test al, al
jne 0x426390
jmp 0x426370
mov edi, ecx
jmp dword [0x447d70]
xor eax, eax
test edi, edi
setne al
jmp dword [eax*4 + 0x447d74]
mov ecx, edi
sub ecx, ebx
mov eax, ecx
and eax, 3
mov esi, ecx
or esi, 3
imul esi, eax
xor eax, 3
mov dword [esp + 0x1c], ecx
and ecx, 0xfffffffc
imul ecx, eax
add esi, ecx
shr esi, 2
movzx eax, byte [edi - 1]
cmp eax, 0x3d
je 0x4263e7
cmp eax, 0x2e
jne 0x4263e8
dec esi
mov eax, dword [esp + 0x1c]
movzx eax, byte [ebx + eax - 2]
cmp eax, 0x3d
je 0x4263fb
cmp eax, 0x2e
jne 0x4263fc
dec esi
mov dword [esp + 0x44], esi
lea eax, [esi + 1]
push eax
call fcn.0040cc40
add esp, 4
mov dword [esp + 0x18], eax
cmp edi, ebx
je 0x42650a
xor edx, edx
mov edi, 2
jmp 0x426440
mov edx, dword [esp + 0x30]
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
lea eax, [edi + 4]
add edi, 2
cmp edi, ecx
mov edi, eax
jae 0x42650a
mov dword [esp + 4], edx
mov esi, dword [esp + 0x10]
movzx eax, byte [esi + edi - 1]
push eax
call fcn.0041ce50
add esp, 4
mov ebx, eax
movzx eax, byte [esi + edi]
push eax
call fcn.0041ce50
add esp, 4
mov bh, al
shl bl, 2
shr al, 4
and al, 3
or al, bl
mov ecx, dword [esp + 0x18]
mov edx, dword [esp + 4]
mov byte [ecx + edx], al
inc edx
mov ecx, dword [esp + 0x1c]
cmp edi, ecx
jae 0x426430
mov eax, dword [esp + 0x10]
movzx eax, byte [eax + edi + 1]
push eax
mov esi, edx
call fcn.0041ce50
mov edx, esi
mov ecx, dword [esp + 0x20]
add esp, 4
cmp al, 0x40
je 0x426430
mov bl, al
shl bh, 4
shr al, 2
and al, 0xf
or al, bh
mov esi, dword [esp + 4]
lea edx, [esi + 2]
mov dword [esp + 0x30], edx
mov edx, dword [esp + 0x18]
mov byte [edx + esi + 1], al
lea eax, [edi + 1]
cmp eax, ecx
jae 0x426421
mov eax, dword [esp + 0x10]
movzx eax, byte [eax + edi + 2]
push eax
call fcn.0041ce50
mov ecx, dword [esp + 0x20]
add esp, 4
cmp al, 0x40
mov edx, dword [esp + 0x30]
je 0x426430
shl bl, 6
add al, bl
mov edx, dword [esp + 0x18]
mov esi, dword [esp + 4]
mov byte [edx + esi + 2], al
add esi, 3
mov edx, esi
jmp 0x426430
mov eax, dword [esp + 0x44]
mov edi, dword [esp + 0x18]
mov byte [edi + eax], 0
push edi
call fcn.00403e40
add esp, 4
mov esi, eax
jmp dword [0x447d7c]
push edi
call fcn.0040cc50
add esp, 4
push esi
call fcn.00404900
add esp, 4
xor ecx, ecx
test eax, eax
setne cl
jmp dword [ecx*4 + 0x447d84]
mov edi, dword [esp + 0x14]
jmp 0x426649
mov dword [esp + 0x10], eax
mov dword [esp + 4], esi
mov dword [esp + 0x20], 0x298c9091
mov byte [esp + 0x24], 0
xor ecx, ecx
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx esi, byte [esp + ecx + 0x20]
mov edx, ecx
and edx, 1
mov eax, edx
xor eax, 0x8ce1279
mov ebx, ecx
and ebx, 6
sub ebx, eax
mov eax, ebx
and eax, esi
mov edi, ebx
xor edi, esi
not esi
and esi, ebx
add edi, ebx
sub edi, esi
not eax
and eax, edi
add al, 0x5d
mov byte [esp + ecx + 0x20], al
or ecx, 1
add ecx, edx
add ecx, 0x9afe2fe4
mov eax, ecx
xor eax, 0x9afe2fe4
and ecx, 0x1b
add ecx, ecx
sub ecx, eax
cmp ecx, 5
jb case.default.0x4265d8
lea eax, [esp + 0x20]
push eax
push dword [esp + 0x14]
call fcn.004046c0
add esp, 8
xor ecx, ecx
test eax, eax
setne cl
jmp dword [ecx*4 + 0x447d8c]
mov edi, dword [esp + 0x14]
mov edx, dword [esp + 8]
jmp 0x426617
movzx ecx, byte [eax]
test cl, cl
mov edx, dword [esp + 8]
je 0x42660b
inc eax
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov byte [edx], cl
inc edx
movzx ecx, byte [eax]
inc eax
test cl, cl
jne 0x426600
mov word [edx], 0x203a
add edx, 2
mov edi, dword [esp + 0x14]
mov esi, dword [esp + 4]
movzx eax, byte [esp + 0x54]
test al, al
je 0x42663b
lea ecx, [esp + 0x55]
nop
nop
nop
nop
nop
nop
nop
nop
mov byte [edx], al
inc edx
movzx eax, byte [ecx]
inc ecx
test al, al
jne 0x426630
mov byte [edx], 0xa
inc edx
mov dword [esp + 8], edx
mov al, 1
mov dword [esp + 0x2c], eax
push esi
call fcn.00404eb0
add esp, 4
add edi, 8
xor eax, eax
cmp edi, dword [esp + 0xc]
setne al
jmp dword [eax*4 + 0x447d2c]
mov esi, dword [esp + 0xc]
mov eax, esi
sub eax, edi
sar eax, 3
mov ecx, eax
and ecx, 0xfffffbde
mov edx, eax
and edx, 0x421
or eax, 0x421
imul eax, edx
xor edx, 0x421
imul edx, ecx
add eax, edx
push eax
call fcn.0040cc40
add esp, 4
mov dword [esp + 0x2c], 0
xor ecx, ecx
cmp edi, esi
setne cl
mov dword [esp + 0x28], eax
mov dword [esp + 8], eax
jmp dword [ecx*4 + 0x447d2c]
jmp dword [0x447d3c]
mov ebx, dword [esp + 0x2c]
mov eax, ebx
and al, 1
movzx eax, al
jmp dword [eax*4 + 0x447d44]
jmp dword [0x447d94]
mov eax, dword [esp + 8]
mov byte [eax], 0
mov dword [esp + 0x54], 0x535e5989
mov dword [esp + 0x58], 0x57a3aa55
mov dword [esp + 0x5c], 0x50545259
mov dword [esp + 0x60], 0x9e6eb297
mov dword [esp + 0x64], 0x8bad6499
mov dword [esp + 0x68], 0x6197626f
mov dword [esp + 0x6c], 0x7f62a367
mov word [esp + 0x70], 0xf560
mov dword [esp + 0x72], 0
mov word [esp + 0x76], 0
mov eax, 0x10b294d2
nop
nop
nop
nop
nop
nop
nop
nop
movzx ecx, byte [esp + eax - 0x10b2947e]
xor ecx, eax
neg ecx
lea edx, [ecx + ecx]
and edx, 0x36
xor ecx, 0xe4
sub ecx, edx
add cl, 2
mov byte [esp + eax - 0x10b2947e], cl
inc eax
cmp eax, 0x10b294f6
jne 0x426740
mov edx, dword [esp + 0x28]
mov esi, dword [esp + 8]
sub esi, edx
lea eax, [esp + 0x54]
mov ecx, dword [ebp + 8]
push esi
push edx
push eax
call fcn.0040d5e0
mov ebx, eax
jmp dword [0x447d94]
push dword [esp + 0x28]
call fcn.0040cc50
add esp, 4
and bl, 1
mov edi, dword [esp + 0x48]
mov eax, dword [esp + 0x4c]
mov dword [esp + 0xc], eax
test edi, edi
jne 0x42627b
jmp case.0x426268.1
mov dword [esp + 0x54], 0x5e771065
mov dword [esp + 0x58], 0x28267d58
mov dword [esp + 0x5c], 0x542d2779
mov dword [esp + 0x60], 0x432a2a75
mov dword [esp + 0x64], 0x386f7642
mov dword [esp + 0x68], 0x4b546a6d
mov dword [esp + 0x6c], 0x46416a4e
mov dword [esp + 0x70], 0x426b445f
mov dword [esp + 0x74], 0x9aa85256
mov dword [esp + 0x78], 0xba9f85a9
mov dword [esp + 0x7c], 0x5f8e9999
mov word [esp + 0x80], 0
mov byte [esp + 0x82], 0
nop
mov eax, ebx
add al, 0xde
xor al, byte [esp + ebx + 0x54]
add al, 0xaa
mov byte [esp + ebx + 0x54], al
inc ebx
cmp ebx, 0x2f
jne case.default.0x42685e
lea eax, [esp + 0x48]
lea ecx, [esp + 0x34]
push 0
push 0x2b
lea edx, [esp + 0x5c]
push edx
push eax
call fcn.0043abf0
mov edi, dword [esp + 0x48]
mov ecx, dword [esp + 0x4c]
xor eax, eax
mov dword [esp + 0xc], ecx
cmp edi, ecx
sete al
jmp dword [eax*4 + 0x447d14]
jmp dword [0x447d28]
lea ecx, [esp + 0x34]
push 0x410
call fcn.0043a030
lea ecx, [esp + 0x34]
push 0x410
call fcn.0043a030
jmp dword [0x447d04]
not eax
shr eax, 0x1f
xor ebx, ebx
jmp dword [eax*4 + 0x447d0c]