Function at 0x47d51c
Capabilities:
Encrypt data using rc4 ksa

Disassembly:
push ebp
mov ebp, esp
add esp, 0xffffff3c
push ebx
push esi
push edi
mov esi, dword [ebp + 0x10]
lea edi, [ebp - 0xc0]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
mov esi, edx
lea edi, [ebp - 0xb0]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
mov dword [ebp - 8], ecx
mov dword [ebp - 4], eax
mov ebx, dword [ebp + 0xc]
lea eax, [ebp - 0xb0]
push eax
call sub.user32.dll_IsRectEmpty
test eax, eax
jne 0x47df3c
mov eax, dword [ebp - 4]
mov edx, dword [eax]
call dword [edx + 0x2c]
cmp eax, dword [ebp - 0xa8]
jge 0x47d57c
mov eax, dword [ebp - 4]
mov edx, dword [eax]
call dword [edx + 0x2c]
mov dword [ebp - 0xa8], eax
mov eax, dword [ebp - 4]
mov edx, dword [eax]
call dword [edx + 0x20]
cmp eax, dword [ebp - 0xa4]
jge 0x47d59a
mov eax, dword [ebp - 4]
mov edx, dword [eax]
call dword [edx + 0x20]
mov dword [ebp - 0xa4], eax
cmp dword [ebp - 0xb0], 0
jge 0x47d5ab
xor eax, eax
mov dword [ebp - 0xb0], eax
cmp dword [ebp - 0xac], 0
jge 0x47d5bc
xor eax, eax
mov dword [ebp - 0xac], eax
mov al, byte [ebp + 8]
mov byte [ebp - 0x71], al
mov al, byte [ebp + 8]
mov byte [ebp - 0x79], al
lea eax, [ebp - 0xc0]
push eax
call sub.user32.dll_IsRectEmpty
test eax, eax
je 0x47d5fb
mov eax, dword [ebp + 0x14]
mov edx, dword [eax]
call dword [edx + 0x20]
push eax
lea eax, [ebp - 0xc0]
push eax
mov eax, dword [ebp + 0x14]
mov edx, dword [eax]
call dword [edx + 0x2c]
mov ecx, eax
xor edx, edx
xor eax, eax
call fcn.004181cc
lea eax, [ebp - 0xc0]
mov dl, 1
call fcn.00505e68
mov dword [ebp - 0x34], eax
lea eax, [ebp - 0xc0]
mov dl, 1
call fcn.00505e7c
mov dword [ebp - 0x38], eax
mov eax, dword [ebp + 0x14]
mov edx, dword [eax]
call dword [edx + 0x20]
dec eax
mov edx, dword [ebp - 0xbc]
add edx, dword [ebp - 0x38]
cmp eax, edx
jge 0x47d643
mov eax, dword [ebp + 0x14]
mov edx, dword [eax]
call dword [edx + 0x20]
dec eax
sub eax, dword [ebp - 0xbc]
mov dword [ebp - 0x38], eax
mov eax, dword [ebp + 0x14]
mov edx, dword [eax]
call dword [edx + 0x2c]
dec eax
mov edx, dword [ebp - 0xc0]
add edx, dword [ebp - 0x34]
cmp eax, edx
jge 0x47d66b
mov eax, dword [ebp + 0x14]
mov edx, dword [eax]
call dword [edx + 0x2c]
dec eax
sub eax, dword [ebp - 0xc0]
mov dword [ebp - 0x34], eax
cmp dword [ebp - 0x38], 0
jl 0x47df3c
cmp dword [ebp - 0x34], 0
jl 0x47df3c
mov eax, dword [ebp - 8]
call fcn.0040585c
dec eax
mov dword [ebp - 0x80], eax
cmp dword [ebp - 0x80], 0
jl 0x47df3c
mov eax, dword [ebp - 8]
mov eax, dword [eax + 9]
sub eax, 1
jb 0x47d6ab
je 0x47da2d
jmp 0x47df3c
mov eax, dword [ebp - 0xac]
mov dword [ebp - 0x88], eax
mov eax, dword [ebp - 0x80]
test eax, eax
jl 0x47df3c
inc eax
mov dword [ebp - 0x98], eax
mov dword [ebp - 0x20], 0
mov eax, dword [ebp - 0x20]
mov edx, eax
shl eax, 4
add eax, edx
mov edx, dword [ebp - 8]
mov eax, dword [edx + eax]
mov dword [ebp - 0x6c], eax
mov eax, dword [ebp - 0x20]
mov edx, eax
shl eax, 4
add eax, edx
mov edx, dword [ebp - 8]
mov eax, dword [edx + eax + 4]
mov dword [ebp - 0x70], eax
mov eax, dword [ebp - 0x20]
mov edx, eax
shl eax, 4
add eax, edx
mov edx, dword [ebp - 8]
movzx eax, byte [edx + eax + 8]
mov dword [ebp - 0x84], eax
mov edi, dword [ebp - 0x88]
lea eax, [ebp - 0xb0]
xor edx, edx
call fcn.00505e7c
imul dword [ebp - 0x84]
mov ecx, 0x64
cdq
idiv ecx
add eax, edi
mov dword [ebp - 0x88], eax
mov eax, dword [ebp - 0x20]
cmp eax, dword [ebp - 0x80]
jne 0x47d75e
mov eax, dword [ebp - 4]
mov edx, dword [eax]
call dword [edx + 0x20]
mov edx, eax
mov eax, dword [ebp - 0xa4]
call fcn.0042bd5c
dec eax
mov dword [ebp - 0x88], eax
jmp 0x47d787
mov eax, dword [ebp - 4]
mov edx, dword [eax]
call dword [edx + 0x20]
mov edx, eax
mov eax, dword [ebp - 0xa4]
call fcn.0042bd5c
mov edx, eax
dec edx
mov eax, dword [ebp - 0x88]
call fcn.0042bd5c
mov dword [ebp - 0x88], eax
mov eax, dword [ebp - 0x88]
sub eax, edi
test eax, eax
jle 0x47da19
xor eax, eax
mov al, byte [ebp - 0x6c]
mov dword [ebp - 0xc4], eax
fild dword [ebp - 0xc4]
fstp dword [ebp - 0x3c]
wait
xor eax, eax
mov al, byte [ebp - 0x6b]
mov dword [ebp - 0xc4], eax
fild dword [ebp - 0xc4]
fstp dword [ebp - 0x40]
wait
xor eax, eax
mov al, byte [ebp - 0x6a]
mov dword [ebp - 0xc4], eax
fild dword [ebp - 0xc4]
fstp dword [ebp - 0x44]
wait
mov eax, dword [ebp - 0x20]
cmp eax, dword [ebp - 0x80]
je 0x47d7ef
mov eax, dword [ebp - 4]
mov edx, dword [eax]
call dword [edx + 0x20]
dec eax
cmp eax, dword [ebp - 0x88]
jge 0x47d80c
mov eax, dword [ebp - 4]
mov edx, dword [eax]
call dword [edx + 0x20]
mov edx, eax
dec edx
mov eax, dword [ebp - 0xa4]
dec eax
call fcn.0042bd5c
mov dword [ebp - 0x88], eax
mov eax, dword [ebp - 0x88]
sub eax, edi
mov dword [ebp - 0x30], eax
cmp dword [ebp - 0x30], 0
je 0x47df3c
xor eax, eax
mov al, byte [ebp - 0x70]
xor edx, edx
mov dl, byte [ebp - 0x6c]
sub eax, edx
mov dword [ebp - 0xc4], eax
fild dword [ebp - 0xc4]
fild dword [ebp - 0x30]
fdivp st(1)
fstp qword [ebp - 0x50]
wait
xor eax, eax
mov al, byte [ebp - 0x6f]
xor edx, edx
mov dl, byte [ebp - 0x6b]
sub eax, edx
mov dword [ebp - 0xc4], eax
fild dword [ebp - 0xc4]
fild dword [ebp - 0x30]
fdivp st(1)
fstp qword [ebp - 0x58]
wait
xor eax, eax
mov al, byte [ebp - 0x6e]
xor edx, edx
mov dl, byte [ebp - 0x6a]
sub eax, edx
mov dword [ebp - 0xc4], eax
fild dword [ebp - 0xc4]
fild dword [ebp - 0x30]
fdivp st(1)
fstp qword [ebp - 0x60]
wait
lea ecx, [ebp - 0x90]
lea edx, [ebp - 0xc]
mov eax, dword [ebp - 4]
call fcn.004c6314
test al, al
je 0x47df3c
lea ecx, [ebp - 0x94]
lea edx, [ebp - 0x18]
mov eax, dword [ebp + 0x14]
call fcn.004c6314
test al, al
je 0x47df3c
mov eax, dword [ebp - 0x88]
sub eax, edi
jl 0x47da19
inc eax
mov dword [ebp - 0x9c], eax
mov dword [ebp - 0x8c], edi
fld dword [ebp - 0x3c]
call fcn.00402c00
mov byte [ebp - 0x72], al
fld dword [ebp - 0x40]
call fcn.00402c00
mov byte [ebp - 0x73], al
fld dword [ebp - 0x44]
call fcn.00402c00
mov byte [ebp - 0x74], al
mov eax, dword [ebp - 0x90]
imul dword [ebp - 0x8c]
add eax, dword [ebp - 0xc]
mov dword [ebp - 0x14], eax
mov eax, dword [ebp - 0x8c]
cdq
idiv dword [ebp - 0x38]
add edx, dword [ebp - 0xbc]
imul edx, dword [ebp - 0x94]
add edx, dword [ebp - 0x18]
mov dword [ebp - 0x1c], edx
mov esi, dword [ebp - 0xb0]
mov eax, dword [ebp - 0xa8]
dec eax
sub eax, esi
jl 0x47d9e9
inc eax
mov dword [ebp - 0xa0], eax
mov eax, esi
cdq
idiv dword [ebp - 0x34]
add edx, dword [ebp - 0xc0]
mov eax, dword [ebp - 0x1c]
mov eax, dword [eax + edx*4]
mov dword [ebp - 0x78], eax
mov eax, dword [ebp - 0x14]
lea eax, [eax + esi*4]
xor ecx, ecx
mov cl, byte [ebp - 0x76]
mov dl, byte [ebp - 0x72]
mov edi, edx
and edi, 0xff
sub ecx, edi
mov edi, ebx
and edi, 0xff
imul ecx, edi
and edx, 0xff
shl edx, 8
add ecx, edx
shr ecx, 8
mov byte [eax + 2], cl
xor ecx, ecx
mov cl, byte [ebp - 0x77]
mov dl, byte [ebp - 0x73]
mov edi, edx
and edi, 0xff
sub ecx, edi
mov edi, ebx
and edi, 0xff
imul ecx, edi
and edx, 0xff
shl edx, 8
add ecx, edx
shr ecx, 8
mov byte [eax + 1], cl
xor edx, edx
mov dl, byte [ebp - 0x78]
xor ecx, ecx
mov cl, byte [ebp - 0x74]
sub edx, ecx
xor ecx, ecx
mov cl, bl
imul edx, ecx
xor ecx, ecx
mov cl, byte [ebp - 0x74]
shl ecx, 8
add edx, ecx
shr edx, 8
mov byte [eax], dl
mov dl, byte [ebp + 8]
mov byte [eax + 3], dl
inc esi
dec dword [ebp - 0xa0]
jne 0x47d93d
fld dword [ebp - 0x3c]
fadd qword [ebp - 0x50]
fstp dword [ebp - 0x3c]
wait
fld dword [ebp - 0x40]
fadd qword [ebp - 0x58]
fstp dword [ebp - 0x40]
wait
fld dword [ebp - 0x44]
fadd qword [ebp - 0x60]
fstp dword [ebp - 0x44]
wait
inc dword [ebp - 0x8c]
dec dword [ebp - 0x9c]
jne 0x47d8d1
inc dword [ebp - 0x20]
dec dword [ebp - 0x98]
jne 0x47d6d0
jmp 0x47df3c
lea ecx, [ebp - 0x90]
lea edx, [ebp - 0xc]
mov eax, dword [ebp - 4]
call fcn.004c6314
test al, al
je 0x47df3c
lea ecx, [ebp - 0x94]
lea edx, [ebp - 0x18]
mov eax, dword [ebp + 0x14]
call fcn.004c6314
test al, al
je 0x47df3c
lea eax, [ebp - 0xb0]
xor edx, edx
call fcn.00505e68
mov dword [ebp - 0xc4], eax
fild dword [ebp - 0xc4]
fdiv dword [0x47df48]
fstp qword [ebp - 0x68]
wait
mov eax, dword [ebp - 0x90]
imul dword [ebp - 0xac]
add eax, dword [ebp - 0xc]
mov dword [ebp - 0x10], eax
mov edi, dword [ebp - 0xb0]
mov eax, dword [ebp - 0x80]
test eax, eax
jl 0x47dc77
inc eax
mov dword [ebp - 0x98], eax
mov dword [ebp - 0x20], 0
mov eax, dword [ebp - 0x20]
mov edx, eax
shl eax, 4
add eax, edx
mov edx, dword [ebp - 8]
mov eax, dword [edx + eax]
mov dword [ebp - 0x6c], eax
mov eax, dword [ebp - 0x20]
mov edx, eax
shl eax, 4
add eax, edx
mov edx, dword [ebp - 8]
mov eax, dword [edx + eax + 4]
mov dword [ebp - 0x70], eax
mov eax, dword [ebp - 0x20]
mov edx, eax
shl eax, 4
add eax, edx
mov edx, dword [ebp - 8]
movzx eax, byte [edx + eax + 8]
mov dword [ebp - 0x84], eax
mov esi, edi
fild dword [ebp - 0x84]
fmul qword [ebp - 0x68]
mov dword [ebp - 0xc4], esi
fild dword [ebp - 0xc4]
faddp st(1)
call fcn.00402c00
mov edi, eax
mov eax, dword [ebp - 0x20]
cmp eax, dword [ebp - 0x80]
jne 0x47db34
mov eax, dword [ebp - 4]
mov edx, dword [eax]
call dword [edx + 0x2c]
mov edx, eax
mov eax, dword [ebp - 0xa8]
call fcn.0042bd5c
mov edi, eax
dec edi
jmp 0x47db55
mov eax, dword [ebp - 4]
mov edx, dword [eax]
call dword [edx + 0x2c]
mov edx, eax
mov eax, dword [ebp - 0xa8]
call fcn.0042bd5c
mov edx, eax
dec edx
mov eax, edi
call fcn.0042bd5c
mov edi, eax
mov eax, edi
sub eax, esi
test eax, eax
jle 0x47dc68
mov eax, edi
sub eax, esi
mov dword [ebp - 0x2c], eax
xor eax, eax
mov al, byte [ebp - 0x6c]
mov dword [ebp - 0xc4], eax
fild dword [ebp - 0xc4]
fstp dword [ebp - 0x3c]
wait
xor eax, eax
mov al, byte [ebp - 0x6b]
mov dword [ebp - 0xc4], eax
fild dword [ebp - 0xc4]
fstp dword [ebp - 0x40]
wait
xor eax, eax
mov al, byte [ebp - 0x6a]
mov dword [ebp - 0xc4], eax
fild dword [ebp - 0xc4]
fstp dword [ebp - 0x44]
wait
xor eax, eax
mov al, byte [ebp - 0x70]
xor edx, edx
mov dl, byte [ebp - 0x6c]
sub eax, edx
mov dword [ebp - 0xc4], eax
fild dword [ebp - 0xc4]
fild dword [ebp - 0x2c]
fdivp st(1)
fstp qword [ebp - 0x50]
wait
xor eax, eax
mov al, byte [ebp - 0x6f]
xor edx, edx
mov dl, byte [ebp - 0x6b]
sub eax, edx
mov dword [ebp - 0xc4], eax
fild dword [ebp - 0xc4]
fild dword [ebp - 0x2c]
fdivp st(1)
fstp qword [ebp - 0x58]
wait
xor eax, eax
mov al, byte [ebp - 0x6e]
xor edx, edx
mov dl, byte [ebp - 0x6a]
sub eax, edx
mov dword [ebp - 0xc4], eax
fild dword [ebp - 0xc4]
fild dword [ebp - 0x2c]
fdivp st(1)
fstp qword [ebp - 0x60]
wait
mov eax, edi
sub eax, esi
jl 0x47dc68
inc eax
mov dword [ebp - 0x9c], eax
fld dword [ebp - 0x3c]
call fcn.00402c00
mov byte [ebp - 0x72], al
fld dword [ebp - 0x40]
call fcn.00402c00
mov byte [ebp - 0x73], al
fld dword [ebp - 0x44]
call fcn.00402c00
mov byte [ebp - 0x74], al
mov eax, dword [ebp - 0x10]
mov edx, dword [ebp - 0x74]
mov dword [eax + esi*4], edx
fld dword [ebp - 0x3c]
fadd qword [ebp - 0x50]
fstp dword [ebp - 0x3c]
wait
fld dword [ebp - 0x40]
fadd qword [ebp - 0x58]
fstp dword [ebp - 0x40]
wait
fld dword [ebp - 0x44]
fadd qword [ebp - 0x60]
fstp dword [ebp - 0x44]
wait
inc esi
dec dword [ebp - 0x9c]
jne 0x47dc17
inc dword [ebp - 0x20]
dec dword [ebp - 0x98]
jne 0x47dab3
lea eax, [ebp - 0xb0]
mov dl, 1
call fcn.00505e7c
mov edx, eax
mov eax, dword [ebp - 0x38]
call fcn.0042bd5c
dec eax
mov dword [ebp - 0x28], eax
mov edi, dword [ebp - 0xac]
inc edi
mov eax, dword [ebp - 0x28]
add eax, dword [ebp - 0xac]
sub eax, edi
jl 0x47dda0
inc eax
mov dword [ebp - 0x98], eax
mov eax, dword [ebp - 0x90]
imul edi
add eax, dword [ebp - 0xc]
mov dword [ebp - 0x14], eax
mov eax, edi
cdq
idiv dword [ebp - 0x38]
add edx, dword [ebp - 0xbc]
imul edx, dword [ebp - 0x94]
add edx, dword [ebp - 0x18]
mov dword [ebp - 0x1c], edx
mov esi, dword [ebp - 0xb0]
mov eax, dword [ebp - 0xa8]
dec eax
sub eax, esi
jl 0x47dd93
inc eax
mov dword [ebp - 0x9c], eax
mov eax, esi
cdq
idiv dword [ebp - 0x34]
add edx, dword [ebp - 0xc0]
mov eax, dword [ebp - 0x1c]
mov eax, dword [eax + edx*4]
mov dword [ebp - 0x78], eax
mov eax, dword [ebp - 0x10]
mov eax, dword [eax + esi*4]
mov dword [ebp - 0x74], eax
mov eax, dword [ebp - 0x14]
lea eax, [eax + esi*4]
xor edx, edx
mov dl, byte [ebp - 0x76]
xor ecx, ecx
mov cl, byte [ebp - 0x72]
sub edx, ecx
xor ecx, ecx
mov cl, bl
imul edx, ecx
xor ecx, ecx
mov cl, byte [ebp - 0x72]
shl ecx, 8
add edx, ecx
shr edx, 8
mov byte [eax + 2], dl
xor edx, edx
mov dl, byte [ebp - 0x77]
xor ecx, ecx
mov cl, byte [ebp - 0x73]
sub edx, ecx
xor ecx, ecx
mov cl, bl
imul edx, ecx
xor ecx, ecx
mov cl, byte [ebp - 0x73]
shl ecx, 8
add edx, ecx
shr edx, 8
mov byte [eax + 1], dl
xor edx, edx
mov dl, byte [ebp - 0x78]
xor ecx, ecx
mov cl, byte [ebp - 0x74]
sub edx, ecx
xor ecx, ecx
mov cl, bl
imul edx, ecx
xor ecx, ecx
mov cl, byte [ebp - 0x74]
shl ecx, 8
add edx, ecx
shr edx, 8
mov byte [eax], dl
mov dl, byte [ebp + 8]
mov byte [eax + 3], dl
inc esi
dec dword [ebp - 0x9c]
jne 0x47dcf4
inc edi
dec dword [ebp - 0x98]
jne 0x47dcb1
mov edi, dword [ebp - 0xac]
mov eax, edi
cdq
idiv dword [ebp - 0x38]
add edx, dword [ebp - 0xbc]
imul edx, dword [ebp - 0x94]
add edx, dword [ebp - 0x18]
mov dword [ebp - 0x1c], edx
mov esi, dword [ebp - 0xb0]
mov eax, dword [ebp - 0xa8]
dec eax
sub eax, esi
jl 0x47de75
inc eax
mov dword [ebp - 0x98], eax
mov eax, esi
cdq
idiv dword [ebp - 0x34]
add edx, dword [ebp - 0xc0]
mov eax, dword [ebp - 0x1c]
mov eax, dword [eax + edx*4]
mov dword [ebp - 0x78], eax
mov eax, dword [ebp - 0x10]
mov eax, dword [eax + esi*4]
mov dword [ebp - 0x74], eax
xor eax, eax
mov al, byte [ebp - 0x76]
xor edx, edx
mov dl, byte [ebp - 0x72]
sub eax, edx
xor edx, edx
mov dl, bl
imul edx
xor edx, edx
mov dl, byte [ebp - 0x72]
shl edx, 8
add eax, edx
shr eax, 8
mov byte [ebp - 0x72], al
xor eax, eax
mov al, byte [ebp - 0x77]
xor edx, edx
mov dl, byte [ebp - 0x73]
sub eax, edx
xor edx, edx
mov dl, bl
imul edx
xor edx, edx
mov dl, byte [ebp - 0x73]
shl edx, 8
add eax, edx
shr eax, 8
mov byte [ebp - 0x73], al
xor eax, eax
mov al, byte [ebp - 0x78]
xor edx, edx
mov dl, byte [ebp - 0x74]
sub eax, edx
xor edx, edx
mov dl, bl
imul edx
xor edx, edx
mov dl, byte [ebp - 0x74]
shl edx, 8
add eax, edx
shr eax, 8
mov byte [ebp - 0x74], al
mov eax, dword [ebp - 0x10]
mov edx, dword [ebp - 0x74]
mov dword [eax + esi*4], edx
inc esi
dec dword [ebp - 0x98]
jne 0x47dddb
mov edi, dword [ebp - 0xac]
add edi, dword [ebp - 0x28]
lea eax, [ebp - 0xb0]
xor edx, edx
call fcn.00505e68
mov dword [ebp - 0x24], eax
cmp dword [ebp - 0x24], 0
jle 0x47deeb
jmp 0x47dedd
push 0xcc0020
mov eax, dword [ebp - 0xac]
push eax
mov eax, dword [ebp - 0xb0]
push eax
mov eax, dword [ebp - 4]
call fcn.00429a18
call fcn.00424f0c
push eax
mov eax, dword [ebp - 0x28]
push eax
mov eax, dword [ebp - 0x24]
push eax
push edi
mov eax, dword [ebp - 0xb0]
push eax
mov eax, dword [ebp - 4]
call fcn.00429a18
call fcn.00424f0c
push eax
call sub.gdi32.dll_BitBlt
add edi, dword [ebp - 0x28]
mov eax, dword [ebp - 0xa4]
dec eax
sub eax, dword [ebp - 0x28]
cmp edi, eax
jl 0x47de96
cmp edi, dword [ebp - 0xa4]
jge 0x47df3c
push 0xcc0020
mov eax, dword [ebp - 0xac]
push eax
mov eax, dword [ebp - 0xb0]
push eax
mov eax, dword [ebp - 4]
call fcn.00429a18
call fcn.00424f0c
push eax
mov eax, dword [ebp - 0xa4]
sub eax, edi
push eax
mov eax, dword [ebp - 0x24]
push eax
push edi
mov eax, dword [ebp - 0xb0]
push eax
mov eax, dword [ebp - 4]
call fcn.00429a18
call fcn.00424f0c
push eax
call sub.gdi32.dll_BitBlt
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x10