Function at 0x40882c
Capabilities:
Encrypt data using rc4 prga

Disassembly:
mov esi, dword [ebp + 0x10]
mov dword [ebp - 0x40], 0
mov dword [ebp - 0x3c], 0
mov eax, dword [esi]
mov ecx, dword [esi + 0x50]
mov dword [ebp - 0x28], ecx
cmp eax, dword [esi + 4]
jae 0x44e68f
mov edx, dword [ebp - 8]
inc eax
mov dword [esi], eax
mov eax, dword [ebp + 0x18]
cmp eax, dword [esi + 8]
jae 0x44e685
cmp dword [esi + 0x9c], 2
je 0x446579
movzx ecx, word [ebx]
mov edi, ecx
mov dword [ebp - 0x2c], 0
mov dword [ebp - 0x10], 0
mov dword [ebp - 0x38], edi
cmp edi, 0xa1
ja case.0x408896.98
movzx eax, byte [edi + 0x409110]
jmp dword [eax*4 + 0x408fc4]
movzx eax, word [ebx + 2]
mov edi, ebx
add eax, eax
sub edi, eax
mov eax, 0x88
mov dword [ebp - 0x20], edi
movzx ecx, word [edi]
cmp cx, ax
jae 0x4472d4
mov eax, 0x81
cmp cx, ax
je 0x4472d4
mov dword [ebp - 0x2c], 0
cmp ecx, 0x7d
jb 0x4088e3
mov eax, 0x80
cmp cx, ax
jbe 0x44ca6a
mov eax, 0x82
cmp cx, ax
je 0x44ca6a
test byte [ecx + 0x41], bh
add al, 0
mov eax, 0x85
cmp cx, ax
je 0x408ca6
mov eax, 0x8a
cmp cx, ax
je 0x408ca6
mov eax, 0x86
cmp cx, ax
je 0x408ca6
mov eax, 0x8b
cmp cx, ax
je 0x408ca6
mov ecx, dword [ebp + 0xc]
movzx eax, word [ebx]
cmp eax, 0x78
jne 0x44734c
mov eax, 0x81
cmp word [edi], ax
je 0x44ca15
add ebx, 4
mov dword [ebp - 0x30], ebx
jmp 0x40886d
cmp edi, 0x88
jae 0x44c893
add byte [eax], al
add byte [edi], cl
xor dword [esi], 0x3f
add al, 0
cmp edi, 0x81
je 0x44c893
add byte [edi], cl
test byte [edx], ch
aas
add al, 0
cmp dword [esi + 0x70], 0
jne 0x44c89d
movzx eax, word [ebx + 2]
cmp word [ebx + eax*2], 0x77
je 0x44c89d
movzx eax, word [ebx]
movzx eax, byte [eax + 0x4c2140]
lea ebx, [ebx + eax*2]
mov dword [ebp - 0x30], ebx
mov edx, dword [ebp - 8]
mov eax, dword [esi + 0x50]
mov dword [ebp - 0x28], eax
mov eax, dword [esi]
cmp eax, dword [esi + 4]
jb 0x408851
jmp 0x44e68f
mov edx, dword [ebp - 8]
mov ebx, dword [ebp + 8]
cmp edx, ebx
je 0x44e62b
mov eax, dword [ebp + 0xc]
mov dword [esi + 0x84], edx
mov dword [esi + 0x90], eax
mov dword [esi + 0x80], ebx
test edi, edi
jne 0x44e671
add al, 0
mov eax, 1
mov ecx, dword [esi + 0x7c]
mov eax, dword [ebp - 8]
mov dword [ebp - 0x24], ecx
cmp eax, ecx
jae 0x44cdc7
add byte [edi], cl
mov bh, 0x10
movzx edx, word [eax]
add eax, 2
cmp dword [ebp - 0x28], 0
mov ecx, edx
mov dword [ebp - 8], eax
rol byte [edx], 0x83
jge 0x4089d4
add byte [ebx - 0x7ba7636], cl
mov edi, eax
je 0x408a18
mov eax, edx
and eax, 0xfc00
cmp eax, 0xd800
je 0x44820e
mov eax, ecx
and ecx, 0x7f
shr eax, 7
movzx eax, byte [eax + 0x4bff40]
shl eax, 7
add eax, ecx
movzx eax, word [eax*2 + 0x4b1c40]
movzx eax, byte [eax*8 + 0x4af3f2]
mov dword [ebp - 0x34], eax
mov eax, dword [esi + 0x7c]
cmp edi, eax
jae 0x408ab6
sbb al, 0x4b
add byte [edi], cl
mov dh, 4
invalid
mov esi, dword [ebp - 8]
mov ebx, edi
jmp 0x408a50
cmp dword [ebp - 0x28], 0
mov edx, 1
movzx ecx, word [esi]
je 0x408a70
mov eax, ecx
and eax, 0xfc00
cmp eax, 0xd800
je 0x44823a
mov esi, dword [ebp - 0x34]
mov eax, ecx
shr eax, 7
and ecx, 0x7f
mov edi, ebx
movzx eax, byte [eax + 0x4bff40]
shl eax, 7
add eax, ecx
movzx eax, word [eax*2 + 0x4b1c40]
movzx ecx, byte [eax*8 + 0x4af3f2]
mov eax, 1
shl eax, cl
test dword [esi*4 + 0x4c21f0], eax
mov eax, dword [ebp - 0x24]
jne 0x408b81
inc ebp
inc eax
sbb al, 0x4b
add byte [edi], cl
mov dh, 0xc
invalid
mov esi, dword [ebp + 0x10]
mov ebx, dword [ebp - 0x30]
cmp dword [esi + 0x8c], 0
jne 0x44825e
mov edx, dword [ebp - 8]
add ebx, 2
mov dword [ebp - 0x30], ebx
jmp 0x40886d
movzx edx, word [ebx + 0x22]
lea eax, [ebx + 2]
add ebx, 0x22
mov dword [ebp - 0xc], eax
mov ecx, edx
mov dword [ebp - 0x30], ebx
cmp ecx, 0x6d
jbe 0x4484d2
retf 0x5d89
mov edx, 1
mov dword [ebp - 0x20], 1
mov dword [ebp - 0x18], edx
cmp dword [ebp - 0x28], 0
mov ecx, 1
mov dword [ebp - 0x24], ecx
je 0x4485a0
cmp edx, ecx
jl 0x408b6d
mov eax, dword [ebp - 8]
cmp eax, dword [esi + 0x7c]
jae 0x44cdc7
movzx edx, word [eax]
add eax, 2
mov dword [ebp - 8], eax
mov eax, edx
and eax, 0xfc00
cmp eax, 0xd800
je 0x44856d
cmp edx, 0xff
ja 0x448592
mov ecx, edx
mov eax, 1
and ecx, 7
shr edx, 3
shl eax, cl
mov ecx, dword [ebp - 0xc]
test byte [edx + ecx], al
je case.0x408896.157
dec ebp
hlt
mov ecx, dword [ebp - 0x24]
mov edx, dword [ebp - 0x18]
inc ecx
mov dword [ebp - 0x24], ecx
cmp ecx, edx
jle 0x408b11
mov eax, dword [ebp - 8]
cmp edx, dword [ebp - 0x20]
jne 0x448602
mov edx, dword [ebp - 8]
jmp 0x40886d
lea esi, [ebx + edx*2]
mov dword [ebp - 0x34], ecx
mov dword [ebp - 8], esi
mov ebx, esi
mov edi, esi
cmp esi, eax
jb 0x408a50
invalid
jmp 0x408ab0
mov eax, dword [ebp - 8]
cmp eax, dword [esi + 0x7c]
jae 0x44cdc7
cmp dword [ebp - 0x28], 0
je 0x448b6d
movzx ecx, word [ebx + 2]
add ebx, 2
mov eax, ecx
mov dword [ebp - 0x34], 1
and eax, 0xfc00
mov edx, ecx
mov dword [ebp - 0x24], edx
cmp eax, 0xd800
je 0x448abe
mov eax, dword [ebp - 8]
cmp edx, 0x80
jae 0x448ae9
movzx edx, word [eax]
mov eax, dword [esi + 0x3c]
cmp edx, 0xff
ja 0x408bf7
add al, 0xf
mov dh, 0x14
adc byte [edi], cl
mov dh, 4
or byte [ebx], bh
ret 0x850f
movzx edx, byte [eax + edx]
movzx eax, byte [eax + ecx]
cmp eax, edx
jne case.0x408896.157
add ebx, 2
add dword [ebp - 8], 2
mov dword [ebp - 0x30], ebx
mov edx, dword [ebp - 8]
jmp 0x40886d
mov eax, dword [ebp - 8]
cmp eax, dword [esi + 0x7c]
jae 0x44cdc7
movzx edx, word [eax]
add eax, 2
cmp dword [ebp - 0x28], 0
mov ecx, edx
mov dword [ebp - 8], eax
mov dword [ebp - 0x20], ecx
je 0x408c4a
mov eax, edx
mov dword [ebp - 0x20], ecx
and eax, 0xfc00
cmp eax, 0xd800
je 0x447fd6
mov eax, ecx
shr eax, 7
movzx ecx, byte [eax + 0x4bff40]
mov eax, edx
shl ecx, 7
and eax, 0x7f
add ecx, eax
movzx eax, word [ebx + 2]
movzx ecx, word [ecx*2 + 0x4b1c40]
cmp eax, 9
jne 0x448000
or al, 0x4d
inc eax
sbb al, 0x4b
add byte [ebx - 0x7af0f608], al
mov esi, ebx
add eax, dword [eax]
movzx eax, word [ebx + 4]
mov ecx, dword [eax*4 + 0x4b0a70]
lea eax, [eax*4 + 0x4b0a70]
cmp dword [ebp - 0x20], ecx
jb 0x448200
lea eax, [eax + 4]
cmp edx, ecx
je 0x408d21
mov ecx, dword [eax]
cmp edx, ecx
jae 0x408c90
jmp 0x448200
movzx eax, word [edi + 4]
mov dword [ebp - 0x24], eax
lea edi, [eax + eax]
mov eax, dword [esi + 0xa8]
mov dword [ebp - 0x34], edi
mov ecx, edi
test eax, eax
jne 0x4472ec
mov eax, dword [esi + 0x94]
and eax, 0xffff0000
or eax, dword [ebp - 0x24]
mov dword [esi + 0x94], eax
cmp ecx, dword [esi + 0x14]
jge 0x447318
mov edx, dword [ebp + 0xc]
cmp ecx, edx
jg 0x44732b
mov eax, dword [esi + 0x10]
mov ecx, dword [esi + 0xc]
sub eax, dword [ebp - 0x24]
mov edx, dword [ebp - 8]
mov eax, dword [ecx + eax*4]
mov dword [ecx + edi*4], eax
mov ecx, dword [ebp - 8]
sub ecx, dword [esi + 0x78]
mov eax, dword [esi + 0xc]
sar ecx, 1
stc
mov dword [eax + edi*4 + 4], ecx
mov ecx, dword [ebp + 0xc]
cmp ecx, edi
jg 0x408d19
lea ecx, [edi + 2]
mov dword [ebp + 0xc], ecx
mov edi, dword [ebp - 0x20]
jmp 0x40892c
cmp edi, 0x10
jne case.0x408896.157
add ebx, 6
mov dword [ebp - 0x30], ebx
mov edx, dword [ebp - 8]
jmp 0x40886d
cmp dword [ebp - 0x28], 0
je 0x448a8c
mov ax, word [ebx + 2]
add ebx, 2
mov ecx, 0xfc00
mov edi, 1
and ax, cx
mov dword [ebp - 0x34], edi
mov ecx, 0xd800
cmp ax, cx
je 0x448a7f
mov ecx, dword [esi + 0x7c]
mov eax, ecx
mov edx, dword [ebp - 8]
sub eax, edx
sar eax, 1
cmp dword [ebp - 0x34], eax
jg 0x44cd8f
lea esp, [esp]
movzx ecx, word [ebx]
dec edi
movzx eax, word [edx]
add ebx, 2
add edx, 2
mov dword [ebp - 0x30], ebx
mov dword [ebp - 8], edx
cmp cx, ax
jne case.0x408896.157
test edi, edi
jle 0x408b79
jmp 0x408d80
lea ecx, [edi - 0x55]
add ebx, 2
mov eax, ebx
test cl, 1
je 0x4498e4
mov edx, 1
movsx edi, byte [ecx + 0x4b1c2c]
mov dword [ebp - 0xc], edi
movsx edi, byte [ecx + 0x4b1c20]
mov ecx, dword [ebp - 0xc]
mov dword [ebp - 0x10], edx
mov dword [ebp - 0x14], edi
test edi, edi
jne 0x408de1
mov dword [ebp - 0x14], 0x7fffffff
movzx edi, word [ebx]
lea ebx, [eax + 2]
mov dword [ebp - 0x20], edi
mov dword [ebp - 0x30], ebx
cmp edi, 0x10
je 0x4498eb
cmp edi, 0xf
je 0x4498eb
or eax, 0xffffffff
mov dword [ebp - 0x18], eax
test ecx, ecx
jg 0x449912
add al, 0
mov edi, dword [ebp - 8]
cmp ecx, dword [ebp - 0x14]
je 0x408b79
test edx, edx
je 0x44ae4f
test eax, eax
jns 0x44d1b2
mov eax, dword [ebp + 0x18]
mov edx, ebx
inc eax
mov ecx, edi
push eax
push dword [ebp + 0x14]
push esi
push dword [ebp + 0xc]
push dword [ebp + 8]
call fcn.00408810
add esp, 0x14
cmp dword [ebp - 0x20], 0x16
je 0x44da81
cmp dword [ebp - 0x28], 0
invalid
movzx edx, word [ebx + 4]
mov dword [ebp - 0x30], edx
lea eax, [edx + edx]
mov dword [ebp - 0x20], eax
cmp eax, dword [esi + 0x14]
jge case.0x408896.129
mov ecx, dword [esi + 0xc]
lea edi, [edx + edx]
mov eax, dword [ecx + eax*4]
mov dword [ebp - 0x24], eax
mov eax, dword [ecx + edi*4 + 4]
mov edi, dword [ebp - 0x38]
mov dword [ebp - 0x40], eax
mov eax, dword [esi + 0x10]
sub eax, edx
lea ecx, [ecx + eax*4]
mov eax, dword [ecx]
mov dword [ebp - 0x3c], eax
mov eax, dword [esi + 0x94]
mov dword [ebp - 0x1c], eax
mov eax, dword [esi + 0xb0]
mov dword [ebp - 0x34], eax
mov eax, dword [ebp - 8]
sub eax, dword [esi + 0x78]
sar eax, 1
mov dword [ecx], eax
nop
cmp edi, 0x88
jae 0x44e35b
mov eax, dword [ebp + 0x18]
mov ecx, dword [ebp - 8]
inc eax
push eax
push dword [ebp + 0x14]
movzx eax, word [ebx]
push esi
push dword [ebp + 0xc]
movzx eax, byte [eax + 0x4c2140]
push dword [ebp + 8]
lea edx, [ebx + eax*2]
call fcn.00408810
add esp, 0x14
mov dword [ebp - 0x2c], eax
cmp eax, 0xfffffc1b
je 0x44e3af
cmp eax, 0xfffffc20
je 0x44e36a
test eax, eax
jne 0x4089db
jmp 0x44e38c
jne 0x40901b
add bh, bl
jns 0x40901f
add byte [edx + 0x7a], cl
inc esp
add byte [ebp + 0x2000447a], dh
jnp 0x40902b
add byte [ebx - 0x9ffbb85], cl
jnp 0x409033
add dl, dl
js 0x409037
add byte [ecx + 0x79], bh
inc esp
add dl, al
jns 0x40903f
add byte [0x6100408c], dl
jl 0x409047
add byte [0xfa00447d], ah
jge 0x40904f
add bh, cl
jle 0x409053
add byte [edx + 0x7f], bl
inc esp
add dl, ah
mov dword [eax], eax
push edi
jne 4231263
add byte [ecx + 0x75], cl
inc esp
add byte [ecx], bh
jne 0x409067
add byte [ebp + 0x74], cl
inc esp
add byte [ecx + 0x73], ch
inc esp
add byte [esi + 0x38004473], cl
lea eax, [eax]
wait
mov eax, dword [eax]
xor dword [ecx - 0x73bfffbc], edx
add byte [ebx + 0x3100408b], bl
add byte [ecx], dh
xchg ecx, eax
inc esp
add byte [eax - 0x74], al
inc esp
add dh, dl
mov eax, dword [eax + eax - 0x47]
mov eax, dword [eax + eax - 3]
add ch, bh
mov eax, dword [eax + eax + 0x10]
mov word [eax + eax + 0x26], es
add byte [esi], ah
mov word [eax + eax - 0x31], es
add bh, cl
mov eax, dword [eax + eax - 8]
xchg edx, eax
inc esp
add byte [ecx - 0x6e], dh
inc esp
add byte [ebx - 0x6e], bl
inc esp
add byte [ebx - 0x51ffbb6e], bl
xchg edx, eax
inc esp
add ah, al
add byte [esi - 0x3bffbb6e], ch
xchg edx, eax
inc esp
add dh, bl
xchg edx, eax
inc esp
add byte [esi + 0x7f00408d], ah
cwde
inc esp
add byte [ecx - 0x68], ah
inc esp
add byte [eax + ebx*4 - 0x6757ffbc], ah
inc esp
add byte [esi - 0x3bffbb68], dh
cwde
inc esp
add cl, dl
mov al, byte [eax]
or al, 0x88
inc esp
add byte [0x8b004483], al
add byte [eax + eax + 0x2e], 0x6e
inc esp
add byte [esi + 0x6d], cl
inc esp
add ah, ah
outsd dx, dword [esi]
inc esp
add byte [ebp - 0x2dffbf78], bl
insb byte es:[edi], dx
inc esp
add byte [esi], ah
imul eax, dword [eax + eax - 1], 0x6b
inc esp
add byte [ecx - 0x77], dl
inc eax
add ah, al
inc esp
add ah, dl
inc sp
add byte [edx], cl
pop dword [eax]
enter 0x4466, 0
jb 4231481
inc esp
add dl, bh
outsd dx, dword [esi]
inc esp
add byte [edx], bh
jo 0x40911f
add byte [esi - 0x23ffbb90], dl
jecxz 0x409127
add byte [edx - 0x25ffbb1c], ch
in al, 0x44
add byte [edi - 0x1b], al
inc esp
add byte [edx - 0x77ffbb9b], bl
in eax, 0x44
add byte [eax + 0x710044e5], bh
in al, 0x44
add byte [ecx - 0x60ffbf71], bh
push 0x44
add byte [edx + 0x70], bh
inc esp
add byte [ebx - 0x1a], bh
inc esp
add byte [eax], al
add dword [edx], eax
add eax, dword [esp + eax]
add eax, 151521030
or cl, byte [ebx]
or al, 13
push cs
push cs
movups xmm2, xmmword [ecx]
adc dl, byte [ebx]
adc al, 21
push ss
pop ss
sbb byte [ecx], bl
adc eax, 0x19181716
sbb bl, byte [ebx]
sbb al, 29
sbb eax, 505290270
push ds
push ds
pop ds
pop ds
and byte [ecx], ah
and ah, byte [ebx]
and al, 30
push ds
push ds
push ds
push ds
push ds
pop ds
pop ds
and byte [ecx], ah
and ah, byte [ebx]
and al, 37
and eax, 623191333
daa
sub byte [ecx], ch
sub ch, byte [ebx]
and eax, 623191333
and eax, 673654310
sub dword [edx], ebp
sub ebp, dword [esp + ebp]
sub al, 44
sub al, 44
sub eax, 808398381
xor dword [edx], esi
push edx
push edx
push edx
push edx
push edx
push edx
push edx
push edx
push edx
push edx
push edx
push edx
xor esi, dword [ebx]
xor al, 53
xor eax, 943142454
cmp dword [edx], edi
cmp bh, byte [edx]
cmp bh, byte [ebx]
cmp al, 61
cmp al, 61
aas
inc eax
inc ecx
inc edx
inc ebx
inc eax
inc ecx
inc edx
inc ebx
push edx
push edx
push edx
push edx
push edx
inc esp
inc ebp
inc esi
inc edi
dec eax
dec ecx
dec edx
dec ebx
dec esp
dec ebp
dec esi
dec edi
add byte [eax], al
push eax
push ecx
push ebp
mov ebp, esp
pop ebp
jmp fcn.0042ea0c
cmp ecx, edi
call 0x7fc3f1e4
sbb byte [eax], al
je 0x40a762
push dword [edi + 0x18]
mov ecx, dword [edi + 0xc]
inc esp
adc byte [ecx - 1], dl
invalid
je 0x40a7e3
sbb al, 0
jne 0x40a7b8