Function at 0x100244d5
Capabilities:
Encrypt data using rc4 prga

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x2c
push ebx
push esi
mov eax, dword [0x10040390]
mov esi, str.Undo_last_action
push edi
push 8
pop ecx
lea edi, [ebp - 0x2c]
xor eax, 0xf7f34257
rep movsd dword es:[edi], dword [esi]
and eax, 0x2d2dfda8
xor ebx, ebx
mov dword [ebp - 8], eax
mov edx, ebx
xor eax, 0xcd6f46e9
push 0x30
mov dword [ebp - 4], eax
pop eax
movsw word es:[edi], word [esi]
cmp ax, word [ebp - 0x2c]
jne 0x10024536
mov ecx, eax
mov eax, ebx
test cx, cx
je 0x10024536
cmp word [ebp + eax - 0x2c], bx
je 0x10024536
inc edx
lea eax, [edx + edx]
movzx ecx, word [eax + str.00_090G0P0]
cmp cx, word [ebp + eax - 0x2c]
je 0x10024518
movzx ecx, byte [edx*2 + str.00_090G0P0]
movzx eax, byte [ebp + edx*2 - 0x2c]
sub ecx, eax
cmp ecx, 0x14ab
jne 0x1002455a
mov eax, dword [ebp - 8]
add eax, 0xb5cc3417
mov dword [ebp - 4], eax
jmp 0x1002455d
mov eax, dword [ebp - 4]
push 5
pop ecx
mov esi, str.citrix.com
lea edi, [ebp - 0x20]
rep movsd dword es:[edi], dword [esi]
mov edx, eax
mov eax, ebx
and edx, 0xf1f4febf
push 0x37
movsw word es:[edi], word [esi]
or edx, 0x7034dcaf
pop esi
cmp si, word [ebp - 0x20]
jne 0x100245cd
mov ecx, ebx
test si, si
je 0x100245a5
cmp word [ebp + ecx - 0x20], bx
je 0x100245a5
inc eax
lea ecx, [eax + eax]
movzx esi, word [ecx + str.7F8U8m8r8]
cmp si, word [ebp + ecx - 0x20]
je 0x10024587
mov dword [ebp - 8], eax
mov eax, dword [ebp - 8]
mov esi, dword [ebp - 8]
cmp eax, esi
jae 0x100245cd
mov ecx, dword [ebp - 4]
cmp eax, 0xc7d
jne 0x100245c2
lea edx, [ecx - 0x421afb34]
imul ecx, edx, 0x22481a24
inc eax
cmp eax, esi
jb 0x100245b5
push 5
pop ecx
mov esi, str.from_start_outofband
lea edi, [ebp - 0x20]
rep movsd dword es:[edi], dword [esi]
mov eax, ebx
movsb byte es:[edi], byte [esi]
cmp byte [ebp - 0x20], 0x65
jne 0x100245fc
mov cl, 0x65
test cl, cl
je 0x100245fc
cmp byte [ebp + eax - 0x20], bl
je 0x100245fc
mov cl, byte [eax + 0x1003b841]
inc eax
cmp cl, byte [ebp + eax - 0x20]
je 0x100245e5
movzx ecx, byte [eax + str.eCant_get_direct_access_to_initialized_pointer]
movzx eax, byte [ebp + eax - 0x20]
sub ecx, eax
cmp ecx, 0x5d5
jbe 0x10024618
or edx, 0xbd901a2d
mov esi, str.0_0_00080D0d0l0t0
lea edi, [ebp - 0x1c]
mov eax, ebx
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
movsw word es:[edi], word [esi]
cmp byte [ebp - 0x1c], 0x64
jne 0x1002465f
mov cl, 0x64
test cl, cl
je 0x10024647
cmp byte [ebp + eax - 0x1c], bl
je 0x10024647
mov cl, byte [eax + 0x1003bb31]
inc eax
cmp cl, byte [ebp + eax - 0x1c]
je 0x10024630
mov ecx, dword [ebp - 8]
jmp 0x1002465b
cmp ecx, 0x22ce
jne 0x1002465a
imul edx, edx, 0x5ab59b03
inc ecx
cmp ecx, eax
jb 0x1002464c
mov esi, str.virginia
mov dword [ebp - 8], ebx
lea edi, [ebp - 0x1c]
add edx, 0x48b737bf
push 0x30
mov dword [0x10040390], edx
mov ecx, ebx
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
movsw word es:[edi], word [esi]
pop esi
cmp si, word [ebp - 0x1c]
jne 0x100246aa
mov eax, ebx
test si, si
je 0x100246a7
cmp word [ebp + eax - 0x1c], bx
je 0x100246a7
inc ecx
lea eax, [ecx + ecx]
movzx esi, word [eax + str.00_090G0P0]
cmp si, word [ebp + eax - 0x1c]
je 0x10024689
mov dword [ebp - 8], ecx
mov eax, dword [ebp - 8]
movzx ecx, byte [ecx*2 + str.00_090G0P0]
movzx eax, byte [ebp + eax*2 - 0x1c]
sub ecx, eax
cmp ecx, 0x234b
jb 0x100246d0
add edx, 0x491e2dff
mov dword [0x10040390], edx
xor edx, 0x3b547129
mov dword [0x100402e8], edx
inc ebx
cmp byte [ebx + str.eCant_get_direct_access_to_initialized_pointer], 0
jne 0x100246dc
pop edi
pop esi
cmp ebx, 0x427
pop ebx
jae 0x100246ff
or edx, 0xec6952e3
mov dword [0x100402e8], edx
leave
ret
imul eax, edx, 0x838c1946
mov dword [0x10040390], eax
leave
ret