Function at 0x1002a7c0
Capabilities:
Encrypt data using rc4 prga

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x20
push edi
mov edi, dword [ebp + 0x10]
cmp edi, 0x20
jne 0x1002a802
push dword [ebp + 0x3c]
push dword [ebp + 0x38]
push dword [ebp + 0x34]
push dword [ebp + 0x30]
push dword [ebp + 0x2c]
push dword [ebp + 0x28]
push dword [ebp + 0x24]
push dword [ebp + 0x20]
push dword [ebp + 0x1c]
push dword [ebp + 0x18]
push dword [ebp + 0x14]
push dword [ebp + 0xc]
push dword [ebp + 8]
call fcn.1002b1f0
pop edi
mov esp, ebp
pop ebp
ret 0x38
cmp byte [ebp + 0x20], 0
mov ecx, dword [ebp + 0x1c]
push ebx
push esi
je 0x1002a9e9
cmp ecx, 8
jg 0x1002ae0a
lea eax, [edi - 3]
cmp eax, 0x1d
ja case.0x1002a82d.4
movzx eax, byte [eax + 0x1002af00]
jmp dword [eax*4 + 0x1002aee8]
mov al, byte [edi + edi*2 + 0x10050778]
mov byte [ebp - 3], al
movzx eax, al
push eax
push 0x18
call fcn.1002a7a0
mov dword [ebp - 0x20], eax
mov al, byte [edi + edi*2 + 0x10050779]
movzx ecx, al
push ecx
push 0x10
mov byte [ebp - 2], al
call fcn.1002a7a0
mov dword [ebp - 0x1c], eax
mov al, byte [edi + edi*2 + 0x1005077a]
movzx ecx, al
push ecx
push 8
mov byte [ebp - 1], al
call fcn.1002a7a0
mov ebx, dword [ebp + 0x3c]
mov dword [ebp - 0x18], eax
mov eax, dword [ebp + 0x18]
mov ecx, eax
imul ecx, dword [ebp + 0x2c]
imul eax, dword [ebp + 0x34]
mov dword [ebp - 0x14], ebx
add ecx, dword [ebp + 0x14]
add eax, dword [ebp + 8]
add ecx, dword [ebp + 0x28]
add eax, dword [ebp + 0x30]
mov dword [ebp - 0xc], ecx
mov dword [ebp - 0x10], eax
test ebx, ebx
je 0x1002a90b
mov edx, dword [ebp + 0x38]
test edx, edx
je 0x1002a8f7
mov edi, ecx
mov dword [ebp - 8], edx
mov esi, eax
sub edi, eax
movzx eax, byte [edi + esi]
lea esi, [esi + 1]
mov ecx, dword [ebp + 0x24]
mov edx, dword [ecx + eax*4]
mov ebx, edx
mov ecx, dword [ebp - 0x18]
mov eax, edx
shr ebx, cl
mov ecx, dword [ebp - 0x1c]
and bl, byte [ebp - 1]
shr eax, cl
and al, byte [ebp - 2]
mov ecx, dword [ebp - 0x20]
or bl, al
shr edx, cl
and dl, byte [ebp - 3]
or bl, dl
sub dword [ebp - 8], 1
mov byte [esi - 1], bl
jne 0x1002a8b5
mov eax, dword [ebp - 0x10]
mov ecx, dword [ebp - 0xc]
mov edx, dword [ebp + 0x38]
mov ebx, dword [ebp - 0x14]
add ecx, dword [ebp + 0x18]
add eax, dword [ebp + 0xc]
sub ebx, 1
mov dword [ebp - 0xc], ecx
mov dword [ebp - 0x10], eax
mov dword [ebp - 0x14], ebx
jne 0x1002a8a8
pop esi
pop ebx
pop edi
mov esp, ebp
pop ebp
ret 0x38
push 3
push 6
push 9
push 0x1f
push 0x3e0
push 0x7c00
jmp 0x1002a93a
push 3
push 5
push 8
push 0x1f
push 0x7e0
push 0xf800
push dword [ebp + 0x3c]
push dword [ebp + 0x38]
push dword [ebp + 0x34]
push dword [ebp + 0x30]
push dword [ebp + 0x2c]
push dword [ebp + 0x28]
push dword [ebp + 0x24]
push dword [ebp + 0x18]
push dword [ebp + 0x14]
push dword [ebp + 0xc]
push dword [ebp + 8]
call fcn.1002a350
pop esi
pop ebx
pop edi
mov esp, ebp
pop ebp
ret 0x38
mov ecx, dword [ebp + 0x18]
imul ecx, dword [ebp + 0x34]
mov edi, dword [ebp + 0x18]
imul edi, dword [ebp + 0x2c]
mov eax, dword [ebp + 0x30]
add ecx, dword [ebp + 8]
add edi, dword [ebp + 0x14]
lea eax, [eax + eax*2]
add edi, dword [ebp + 0x28]
add eax, ecx
mov ecx, dword [ebp + 0x3c]
mov dword [ebp - 0x14], eax
mov dword [ebp - 0x10], ecx
test ecx, ecx
je 0x1002a90b
mov ebx, dword [ebp + 0x38]
nop dword [eax]
xor esi, esi
test ebx, ebx
je 0x1002a9cf
movzx ecx, byte [esi + edi]
lea eax, [eax + 3]
mov edx, dword [ebp + 0x24]
inc esi
mov edx, dword [edx + ecx*4]
mov ecx, edx
mov byte [eax - 3], dl
shr ecx, 8
shr edx, 0x10
mov byte [eax - 2], cl
mov byte [eax - 1], dl
cmp esi, ebx
jb 0x1002a9a6
mov eax, dword [ebp - 0x14]
mov ecx, dword [ebp - 0x10]
add eax, dword [ebp + 0xc]
add edi, dword [ebp + 0x18]
sub ecx, 1
mov dword [ebp - 0x14], eax
mov dword [ebp - 0x10], ecx
jne 0x1002a9a0
pop esi
pop ebx
pop edi
mov esp, ebp
pop ebp
ret 0x38
cmp ecx, edi
jne 0x1002aa1a
push dword [ebp + 0x3c]
push dword [ebp + 0x38]
push dword [ebp + 0x34]
push dword [ebp + 0x30]
push dword [ebp + 0x2c]
push dword [ebp + 0x28]
push edi
push dword [ebp + 0x18]
push dword [ebp + 0x14]
push dword [ebp + 0xc]
push dword [ebp + 8]
call fcn.1002a750
pop esi
pop ebx
pop edi
mov esp, ebp
pop ebp
ret 0x38
lea eax, [ecx - 0xf]
cmp eax, 0x11
ja case.0x1002aa2d.17
movzx eax, byte [eax + 0x1002af34]
jmp dword [eax*4 + 0x1002af20]
lea eax, [edi - 3]
cmp eax, 0x1d
ja case.0x1002aa47.4
movzx eax, byte [eax + 0x1002af60]
jmp dword [eax*4 + 0x1002af48]
movzx edx, byte [edi + edi*2 + 0x1005077a]
movzx esi, byte [edi + edi*2 + 0x10050779]
movzx edi, byte [edi + edi*2 + 0x10050778]
push edx
push 5
call fcn.1002a7a0
push eax
push esi
push 0xa
call fcn.1002a7a0
push eax
push edi
push 0xf
jmp 0x1002ab76
mov ecx, dword [ebp + 0x18]
imul ecx, dword [ebp + 0x2c]
mov eax, dword [ebp + 0x28]
add ecx, dword [ebp + 0x14]
lea edx, [ecx + eax*2]
mov ecx, dword [ebp + 0xc]
imul ecx, dword [ebp + 0x34]
mov eax, dword [ebp + 0x30]
mov dword [ebp - 0x14], edx
add ecx, dword [ebp + 8]
lea eax, [ecx + eax*2]
mov ecx, dword [ebp + 0x3c]
mov dword [ebp - 0x10], eax
mov dword [ebp - 0xc], ecx
test ecx, ecx
je 0x1002a90b
mov edi, dword [ebp + 0x38]
test edi, edi
je 0x1002aaf5
mov ebx, edx
mov esi, eax
sub ebx, eax
movzx edx, word [ebx + esi]
lea esi, [esi + 2]
mov ecx, edx
mov eax, edx
shr ecx, 4
and eax, 0xffe0
and ecx, 0x20
add eax, eax
or ecx, eax
and edx, 0x1f
or ecx, edx
mov word [esi - 2], cx
sub edi, 1
jne 0x1002aac1
mov eax, dword [ebp - 0x10]
mov edx, dword [ebp - 0x14]
mov ecx, dword [ebp - 0xc]
mov edi, dword [ebp + 0x38]
add edx, dword [ebp + 0x18]
add eax, dword [ebp + 0xc]
sub ecx, 1
mov dword [ebp - 0x14], edx
mov dword [ebp - 0x10], eax
mov dword [ebp - 0xc], ecx
jne 0x1002aab7
pop esi
pop ebx
pop edi
mov esp, ebp
pop ebp
ret 0x38
push 2
push 3
push 7
push 2
push 0xc
push 7
push 0x1f
push 0x3e0
push 0x7c00
jmp 0x1002ac49
lea eax, [edi - 3]
cmp eax, 0x1d
ja case.0x1002ab42.4
movzx eax, byte [eax + 0x1002af98]
jmp dword [eax*4 + 0x1002af80]
movzx edx, byte [edi + edi*2 + 0x1005077a]
movzx esi, byte [edi + edi*2 + 0x10050779]
movzx edi, byte [edi + edi*2 + 0x10050778]
push edx
push 5
call fcn.1002a7a0
push eax
push esi
push 0xb
call fcn.1002a7a0
push eax
push edi
push 0x10
call fcn.1002a7a0
push eax
push edx
push esi
push edi
push dword [ebp + 0x3c]
push dword [ebp + 0x38]
push dword [ebp + 0x34]
push dword [ebp + 0x30]
push dword [ebp + 0x2c]
push dword [ebp + 0x28]
push dword [ebp + 0x18]
push dword [ebp + 0x14]
push dword [ebp + 0xc]
push dword [ebp + 8]
call fcn.10029d00
pop esi
pop ebx
pop edi
mov esp, ebp
pop ebp
ret 0x38
mov ecx, dword [ebp + 0x18]
imul ecx, dword [ebp + 0x2c]
mov eax, dword [ebp + 0x28]
add ecx, dword [ebp + 0x14]
lea esi, [ecx + eax*2]
mov ecx, dword [ebp + 0xc]
imul ecx, dword [ebp + 0x34]
mov eax, dword [ebp + 0x30]
mov dword [ebp - 0x14], esi
add ecx, dword [ebp + 8]
lea ebx, [ecx + eax*2]
mov eax, dword [ebp + 0x3c]
mov dword [ebp - 0x10], eax
test eax, eax
je 0x1002a90b
mov ecx, dword [ebp + 0x38]
nop
test ecx, ecx
je 0x1002ac17
mov edi, esi
mov edx, ebx
sub edi, ebx
mov esi, ecx
nop dword [eax]
movzx ecx, word [edi + edx]
lea edx, [edx + 2]
mov eax, ecx
and ecx, 0x1f
shr eax, 1
and eax, 0x7fe0
or eax, ecx
mov word [edx - 2], ax
sub esi, 1
jne 0x1002abf0
mov esi, dword [ebp - 0x14]
mov eax, dword [ebp - 0x10]
mov ecx, dword [ebp + 0x38]
add esi, dword [ebp + 0x18]
add ebx, dword [ebp + 0xc]
sub eax, 1
mov dword [ebp - 0x14], esi
mov dword [ebp - 0x10], eax
jne 0x1002abe0
pop esi
pop ebx
pop edi
mov esp, ebp
pop ebp
ret 0x38
push 2
push 3
push 9
push 3
push 0xd
push 8
push 0x1f
push 0x7e0
push 0xf800
push dword [ebp + 0x3c]
push dword [ebp + 0x38]
push dword [ebp + 0x34]
push dword [ebp + 0x30]
push dword [ebp + 0x2c]
push dword [ebp + 0x28]
push dword [ebp + 0x18]
push dword [ebp + 0x14]
push dword [ebp + 0xc]
push dword [ebp + 8]
call fcn.1002a3f0
pop esi
pop ebx
pop edi
mov esp, ebp
pop ebp
ret 0x38
lea eax, [edi - 3]
cmp eax, 0x1d
ja case.0x1002ac88.4
movzx eax, byte [eax + 0x1002afd0]
jmp dword [eax*4 + 0x1002afb8]
movzx eax, byte [edi + edi*2 + 0x10050778]
push eax
push 8
call fcn.1002a7a0
mov dword [ebp - 0x18], eax
mov al, byte [edi + edi*2 + 0x10050779]
movzx ecx, al
push ecx
push 8
mov byte [ebp - 1], al
call fcn.1002a7a0
mov dword [ebp - 0x1c], eax
mov al, byte [edi + edi*2 + 0x1005077a]
movzx ecx, al
push ecx
push 8
mov byte [ebp - 2], al
call fcn.1002a7a0
mov edx, dword [ebp + 0x18]
imul edx, dword [ebp + 0x2c]
mov ecx, dword [ebp + 0x28]
mov esi, dword [ebp + 0x3c]
mov dword [ebp - 0x20], eax
mov eax, dword [ebp + 0xc]
imul eax, dword [ebp + 0x34]
lea ebx, [ecx + ecx*2]
add edx, dword [ebp + 0x14]
add ebx, edx
mov dword [ebp - 0xc], esi
mov dword [ebp - 0x14], ebx
add eax, dword [ebp + 8]
add eax, dword [ebp + 0x30]
mov dword [ebp - 0x10], eax
test esi, esi
je 0x1002a90b
mov ecx, dword [ebp + 0x38]
mov dh, byte [edi + edi*2 + 0x10050778]
nop
xor edi, edi
test ecx, ecx
je 0x1002ad5d
mov esi, ebx
nop dword [eax + eax]
mov bl, byte [esi]
lea esi, [esi + 3]
movzx ecx, byte [ebp - 0x20]
mov al, byte [esi - 2]
mov dl, byte [esi - 1]
shr bl, cl
movzx ecx, byte [ebp - 0x1c]
and bl, byte [ebp - 2]
shr al, cl
and al, byte [ebp - 1]
movzx ecx, byte [ebp - 0x18]
or bl, al
mov eax, dword [ebp - 0x10]
shr dl, cl
mov ecx, dword [ebp + 0x38]
and dl, dh
or bl, dl
mov byte [edi + eax], bl
inc edi
cmp edi, ecx
jb 0x1002ad20
mov ebx, dword [ebp - 0x14]
mov esi, dword [ebp - 0xc]
add ebx, dword [ebp + 0x18]
add eax, dword [ebp + 0xc]
sub esi, 1
mov dword [ebp - 0x14], ebx
mov dword [ebp - 0x10], eax
mov dword [ebp - 0xc], esi
jne 0x1002ad10
pop esi
pop ebx
pop edi
mov esp, ebp
pop ebp
ret 0x38
push 3
push 2
push 7
push 0x1f
push 0x3e0
push 0x7c00
jmp 0x1002ada0
push 3
push 3
push 8
push 0x1f
push 0x7e0
push 0xf800
push dword [ebp + 0x3c]
push dword [ebp + 0x38]
push dword [ebp + 0x34]
push dword [ebp + 0x30]
push dword [ebp + 0x2c]
push dword [ebp + 0x28]
push dword [ebp + 0x18]
push dword [ebp + 0x14]
push dword [ebp + 0xc]
push dword [ebp + 8]
call fcn.10029df0
pop esi
pop ebx
pop edi
mov esp, ebp
pop ebp
ret 0x38
push dword [ebp + 0x3c]
push dword [ebp + 0x38]
push dword [ebp + 0x34]
push dword [ebp + 0x30]
push dword [ebp + 0x2c]
push dword [ebp + 0x28]
push dword [ebp + 0x18]
push dword [ebp + 0x14]
push edi
push dword [ebp + 0xc]
push dword [ebp + 8]
call fcn.1002aff0
pop esi
pop ebx
pop edi
mov esp, ebp
pop ebp
ret 0x38
push edi
push ecx
push 0x1e7
push str.Raster_convert_pixels_invalid_conversion__case_d__src_bppdepth_d__bppdepth_d__n
call fcn.1001e4e0
push ecx
push str.Raster_convert_pixels_invalid_depth_for_pseudo_color__d_n
call fcn.1001e4e0
push 0x147
push str.d:_buildob_bora_18379147_bora_vmsoft_build_release_svgawddm_srclib_raster_rasterconv.c
push str.NOT_REACHED__s:_d_n
call fcn.1001e4e0
push edi
push ecx
push 0x14d
push str.Raster_convert_pixels_invalid_conversion__case_d__src_bppdepth_d__bppdepth_d__n
call fcn.1001e4e0
push 0x169
push str.d:_buildob_bora_18379147_bora_vmsoft_build_release_svgawddm_srclib_raster_rasterconv.c
push str.NOT_REACHED__s:_d_n
call fcn.1001e4e0
push 0x179
push str.d:_buildob_bora_18379147_bora_vmsoft_build_release_svgawddm_srclib_raster_rasterconv.c
push str.NOT_REACHED__s:_d_n
call fcn.1001e4e0
push edi
push ecx
push 0x17f
push str.Raster_convert_pixels_invalid_conversion__case_d__src_bppdepth_d__bppdepth_d__n
call fcn.1001e4e0
push 0x199
push str.d:_buildob_bora_18379147_bora_vmsoft_build_release_svgawddm_srclib_raster_rasterconv.c
push str.NOT_REACHED__s:_d_n
call fcn.1001e4e0
push 0x1a4
push str.d:_buildob_bora_18379147_bora_vmsoft_build_release_svgawddm_srclib_raster_rasterconv.c
push str.NOT_REACHED__s:_d_n
call fcn.1001e4e0
push edi
push ecx
push 0x1aa
push str.Raster_convert_pixels_invalid_conversion__case_d__src_bppdepth_d__bppdepth_d__n
call fcn.1001e4e0
push 0x1ce
push str.d:_buildob_bora_18379147_bora_vmsoft_build_release_svgawddm_srclib_raster_rasterconv.c
push str.NOT_REACHED__s:_d_n
call fcn.1001e4e0
push 0x1d2
push str.d:_buildob_bora_18379147_bora_vmsoft_build_release_svgawddm_srclib_raster_rasterconv.c
push str.NOT_REACHED__s:_d_n
call fcn.1001e4e0
push edi
push ecx
push 0x1d8
push str.Raster_convert_pixels_invalid_conversion__case_d__src_bppdepth_d__bppdepth_d__n
call fcn.1001e4e0
nop dword [eax]
xor al, 0xa8
add dl, byte [eax]
adc al, 0xa9
add dl, byte [eax]
sub byte [ecx - 0x5696effe], ch
add dl, byte [eax]
adc eax, 0x291002ae
scasb al, byte es:[edi]
add dl, byte [eax]
add byte [0x50005], al
add eax, 84215045
add eax, 84214273
add eax, 84215045
add eax, dword [84215045]
add eax, -1872362491
xor al, 170
add dl, byte [eax]
das
stosd dword es:[edi], eax
add dl, byte [eax]
jne 0x1002aed6
add dl, byte [eax]
int3