Function at 0x10007be0
Capabilities:
Encrypt data using rc4 ksa

Disassembly:
sub esp, 0x148
mov eax, dword [0x5a01410]
xor eax, esp
mov dword [esp + 0x144], eax
push esi
mov esi, dword [esp + 0x150]
push edi
push 0xfffff9eb
push esi
cmp byte [esi + 9], 2
mov dword [esp + 0x44], 0x474e5089
sbb eax, eax
mov dword [esp + 0x48], 0xa1a0a0d
inc eax
mov dword [esp + 0x38], 0
push eax
mov dword [esp + 0x40], 0
mov byte [esp + 0x44], 0
call fcn.10005bf0
add esp, 0xc
call fcn.10006360
mov dword [0x5a02114], 0
mov dword [0x5a02118], 0
mov eax, dword [esi + 0x4ac]
sub eax, dword [esi + 0x4a0]
cmp eax, 0x2000
jbe 0x10007c6b
mov eax, 0x2000
jmp 0x10007c6f
test eax, eax
je 0x10007ca9
imul ecx, eax, 0xb
mov eax, 0xcccccccd
mul ecx
mov eax, 0x2000
mov edi, edx
shr edi, 3
add edi, 0x64
cmp edi, eax
cmova edi, eax
push edi
push 0
call fcn.10006220
add esp, 8
mov dword [0x5a02118], eax
add eax, 8
mov dword [0x5a02114], edi
mov dword [0x5a02110], eax
push esi
call fcn.10008df0
push 1
lea eax, [esp + 0x4c]
push 8
push eax
call fcn.10006370
add esp, 0x10
lea ecx, [esp + 0x3c]
lea edx, [esp + 0x44]
mov edi, 4
lea ecx, [ecx]
mov eax, dword [ecx]
cmp eax, dword [edx]
jne 0x10007ce5
add ecx, 4
add edx, 4
sub edi, 4
jae 0x10007cd0
xor ecx, ecx
jmp 0x10007d0a
cmp al, byte [edx]
jne 0x10007d05
mov al, byte [ecx + 1]
cmp al, byte [edx + 1]
jne 0x10007d05
mov al, byte [ecx + 2]
cmp al, byte [edx + 2]
jne 0x10007d05
mov al, byte [ecx + 3]
cmp al, byte [edx + 3]
jne 0x10007d05
xor ecx, ecx
jmp 0x10007d0a
sbb ecx, ecx
or ecx, 1
xor eax, eax
test ecx, ecx
push 0xfffff8f6
sete al
push esi
push eax
call fcn.10005bf0
lea eax, [esp + 0x30]
push eax
lea eax, [esp + 0x18]
push eax
push esi
call fcn.10007830
add esp, 0x18
cmp dword [esp + 8], 0xd
jne 0x10007d4a
mov eax, dword [esp + 0x24]
cmp eax, dword [0x5a01820]
jne 0x10007d4a
mov eax, 1
jmp 0x10007d4c
xor eax, eax
push ebx
push ebp
push 0xfffff8f5
push esi
push eax
call fcn.10005bf0
mov eax, dword [0x5a02110]
add esp, 0xc
movq xmm0, qword [eax]
mov ebx, dword [eax + 8]
mov al, byte [eax + 0xc]
mov byte [esp + 0x24], al
mov byte [esp + 0x17], al
movq qword [esp + 0x18], xmm0
mov ecx, dword [esp + 0x18]
mov ebp, ecx
mov eax, ecx
shl ebp, 0x10
and eax, 0xff00
mov dword [esp + 0x20], ebx
add ebp, eax
mov eax, ecx
shr eax, 8
and eax, 0xff00
shl ebp, 8
add ebp, eax
shr ecx, 0x18
add ebp, ecx
mov ecx, dword [esp + 0x1c]
mov edx, ecx
mov dword [esp + 0x18], ebp
shl edx, 0x10
mov eax, ecx
and eax, 0xff00
mov dword [esp + 0x30], ebp
add edx, eax
mov eax, ecx
shr eax, 8
shl edx, 8
and eax, 0xff00
add edx, eax
shr ecx, 0x18
add edx, ecx
mov dword [esp + 0x1c], edx
movdqu xmm0, xmmword [esp + 0x18]
movdqu xmmword [0x5a020e8], xmm0
test ebp, ebp
je 0x10007e0a
test edx, edx
je 0x10007e0a
mov eax, ebx
shr eax, 0x10
test al, al
jne 0x10007e0a
shr ebx, 0x18
test bl, bl
jne 0x10007e0a
cmp byte [esp + 0x17], 1
ja 0x10007e0a
mov eax, 1
jmp 0x10007e0c
xor eax, eax
push 0xfffff8f4
push esi
push eax
call fcn.10005bf0
movzx ebp, byte [esp + 0x2d]
add esp, 0xc
mov dword [esp + 0x28], ebp
cmp ebp, 6
ja 0x1000819f
jmp dword [ebp*4 + 0x59f817c]
push 0xfffff8f0
push esi
push 0
call fcn.10005bf0
mov bl, byte [esp + 0x2c]
add esp, 0xc
mov dword [esp + 0x34], 0x100
jmp 0x100081c5
mov bl, byte [esp + 0x20]
mov ebp, dword [esp + 0x28]
mov edi, 0x101
lea ebx, [ebx]
lea eax, [esp + 0x2c]
push eax
lea eax, [esp + 0x14]
push eax
push esi
call fcn.10007830
mov eax, dword [esp + 0x38]
add esp, 0xc
cmp eax, dword [0x5a01828]
jne 0x100082c8
mov ebx, dword [esp + 0x10]
mov eax, 0xaaaaaaab
mul ebx
shr edx, 1
mov dword [esi + 0x34], edx
lea eax, [edx + edx*2]
cmp eax, ebx
jne 0x10008219
cmp edx, 0x100
ja 0x10008219
mov eax, 1
jmp 0x1000821b
xor eax, eax
push 0xfffff8ef
push esi
push eax
call fcn.10005bf0
push ebx
push dword [0x5a02110]
lea edi, [esi + 0x3c]
push edi
call fcn.100045dd
mov ebp, dword [esi + 0x34]
add esp, 0x18
lea ebx, [edi + ebp*2]
add ebx, ebp
lea edi, [edi + ebp*4]
test ebp, ebp
je 0x1000826e
lea esp, [esp]
mov dl, byte [ebx - 3]
lea edi, [edi - 4]
mov cl, byte [ebx - 2]
sub ebx, 3
mov al, byte [ebx + 2]
mov byte [edi], al
mov byte [edi + 1], cl
mov byte [edi + 2], dl
mov byte [edi + 3], 0
dec ebp
jne 0x10008250
mov edi, dword [esi + 0x734]
mov bl, byte [esp + 0x20]
mov ebp, dword [esp + 0x28]
test edi, 0x4000
je 0x100081c5
mov ebp, dword [esi + 0x34]
or edi, 1
xor ecx, ecx
mov dword [esi + 0x734], edi
test ebp, ebp
je 0x100081c1
lea eax, [esi + 0x3d]
mov dl, byte [eax]
cmp byte [eax + 1], dl
jne 0x100082ba
cmp byte [eax - 1], dl
jne 0x100082ba
inc ecx
add eax, 4
cmp ecx, ebp
jb 0x100082a1
jmp 0x100081bd
and edi, 0xfffffffe
mov dword [esi + 0x734], edi
jmp 0x100081bd
cmp eax, dword [0x5a01830]
je 0x10008896
cmp eax, dword [0x5a01838]
jne 0x100082fa
cmp dword [esp + 0x10], 0
je 0x100081d0
lea eax, [esp + 0x10]
push eax
push esi
call fcn.10008e70
add esp, 8
jmp 0x100081d0
cmp eax, dword [0x5a01840]
jne 0x100083b8
mov edi, dword [esp + 0x10]
mov eax, 0x1ff4
cmp eax, edi
push 0xfffffc10
sbb eax, eax
inc eax
push esi
push eax
call fcn.10005bf0
mov eax, 9
cmp edi, eax
cmovb eax, edi
push eax
push dword [0x5a02110]
lea eax, [esp + 0x4c]
push eax
call fcn.100045dd
mov edx, dword [esp + 0x50]
add esp, 0x18
mov edi, edx
mov eax, edx
and eax, 0xff00
shl edi, 0x10
add edi, eax
mov eax, edx
shr eax, 8
and eax, 0xff00
shl edi, 8
add edi, eax
shr edx, 0x18
add edi, edx
mov edx, dword [esp + 0x3c]
mov ecx, edx
mov dword [esi + 0x778], edi
shl ecx, 0x10
mov eax, edx
and eax, 0xff00
add ecx, eax
mov eax, edx
shr eax, 8
shl ecx, 8
and eax, 0xff00
add ecx, eax
shr edx, 0x18
add edx, ecx
mov cl, byte [esp + 0x40]
movzx eax, cl
mov dword [esi + 0x77c], edx
mov word [esi + 0x776], ax
cmp cl, 1
jne 0x100081c5
mov dword [esi + 0x2c], edi
mov dword [esi + 0x30], edx
jmp 0x100081c5
cmp eax, dword [0x5a01848]
jne 0x100085ac
mov edi, dword [esp + 0x10]
mov eax, 0x1ff4
cmp eax, edi
mov dword [esp + 0x44], 0
push 0xfffffc10
sbb eax, eax
mov word [esp + 0x4c], 0
inc eax
push esi
push eax
call fcn.10005bf0
mov eax, 6
cmp edi, eax
cmovb eax, edi
push eax
push dword [0x5a02110]
lea eax, [esp + 0x58]
push eax
call fcn.100045dd
or dword [esi + 0x734], 0x80000000
add esp, 0x18
mov edi, 0x101
cmp ebp, 6
ja 0x100081d0
jmp dword [ebp*4 + 0x59f8198]
cmp eax, dword [0x5a01850]
jne 0x100087d9
mov ebx, dword [esp + 0x10]
mov eax, 0x1ff4
cmp eax, ebx
push 0xfffffc10
sbb eax, eax
inc eax
push esi
push eax
call fcn.10005bf0
push 0x100
lea eax, [esp + 0x64]
push 0
push eax
call fcn.100046a1
mov eax, 0x100
cmp ebx, eax
cmovb eax, ebx
push eax
push dword [0x5a02110]
lea eax, [esp + 0x74]
push eax
call fcn.100045dd
or dword [esi + 0x734], 0x40000000
add esp, 0x24
or dword [esi + 0x738], 0x2000
cmp ebp, 6
ja 0x100087d0
jmp dword [ebp*4 + 0x59f81b4]
mov bl, byte [esp + 0x20]
jmp 0x100081d0
cmp eax, dword [0x5a01858]
jne 0x100087f6
push 0xfffff8ee
push esi
push 0
call fcn.10005bf0
add esp, 0xc
jmp 0x100081d0
mov ecx, eax
and ecx, 0xff
cmp ecx, 0x41
jb 0x10008808
cmp ecx, 0x5a
jbe 0x10008812
cmp ecx, 0x61
jb 0x10008880
cmp ecx, 0x7a
ja 0x10008880
mov ecx, eax
shr ecx, 8
and ecx, 0xff
cmp ecx, 0x41
jb 0x10008827
cmp ecx, 0x5a
jbe 0x10008831
cmp ecx, 0x61
jb 0x10008880
cmp ecx, 0x7a
ja 0x10008880
mov ecx, eax
shr ecx, 0x10
and ecx, 0xff
cmp ecx, 0x41
jb 0x10008846
cmp ecx, 0x5a
jbe 0x10008850
cmp ecx, 0x61
jb 0x10008880
cmp ecx, 0x7a
ja 0x10008880
shr eax, 0x18
cmp eax, 0x41
jb 0x1000885d
cmp eax, 0x5a
jbe 0x10008867
cmp eax, 0x61
jb 0x10008880
cmp eax, 0x7a
ja 0x10008880
push 0xfffff8ed
mov eax, 1
push esi
push eax
call fcn.10005bf0
add esp, 0xc
jmp 0x100081d0
push 0xfffff8ed
xor eax, eax
push esi
push eax
call fcn.10005bf0
add esp, 0xc
jmp 0x100081d0
mov bh, byte [esp + 0x21]
cmp bh, 3
jne 0x100088a9
cmp dword [esi + 0x34], 0
ja 0x100088a9
xor eax, eax
jmp 0x100088ae
mov eax, 1
push 0xfffff8ec
push esi
push eax
call fcn.10005bf0
add esp, 0xc
cmp bh, 3
jne 0x1000890d
test dword [esi + 0x734], 0x80000000
je 0x1000890d
mov ecx, dword [esi + 0x790]
movzx eax, byte [esi + ecx*4 + 0x3e]
imul ax, di
mov word [esi + 0x784], ax
movzx eax, byte [esi + ecx*4 + 0x3d]
imul ax, di
mov word [esi + 0x782], ax
movzx eax, byte [esi + ecx*4 + 0x3c]
imul ax, di
mov word [esi + 0x780], ax
xor eax, eax
mov word [esi + 0x786], ax
mov eax, dword [esi + 0x4e0]
test al, 6
jne 0x1000892a
cmp bl, 0x10
jne 0x10008921
or eax, 2
jmp 0x10008924
or eax, 4
mov dword [esi + 0x4e0], eax
mov eax, dword [esi + 0x34]
test eax, eax
je 0x10008958
test byte [0x5a020d9], 8
je 0x10008958
xor edi, edi
test eax, eax
jle 0x10008958
lea edx, [esi + 0x3c]
mov cl, byte [edx + 2]
lea edx, [edx + 4]
mov al, byte [edx - 4]
inc edi
mov byte [edx - 2], al
mov byte [edx - 4], cl
cmp edi, dword [esi + 0x34]
jl 0x10008943
test byte [esi + 0x4e0], 4
jne 0x1000896e
cmp byte [0x5a020da], 1
jne 0x1000896e
xor eax, eax
jmp 0x10008973
mov eax, 1
push 0xfffffc14
push esi
push eax
call fcn.10005bf0
add esp, 0xc
test dword [esi + 0x738], 0x1000
je 0x10008997
push esi
call fcn.10006900
add esp, 4
xor al, al
mov dword [esp + 0x10], eax
movzx eax, byte [0x5a020f1]
cmp eax, 6
ja 0x100089e0
jmp dword [eax*4 + 0x59f81d0]
push 0xfffff8f0
push esi
push 0
call fcn.10005bf0
mov eax, dword [esp + 0x1c]
add esp, 0xc
test byte [esi + 0x4e0], 4
je 0x10008a2a
cmp bl, 0x10
jne 0x10008a2a
mov cl, byte [0x5a020db]
shr cl, 1
mov byte [0x5a020db], cl
cmp byte [esi + 9], 4
jb 0x10008a1e
mov byte [esi + 0x73f], cl
jmp 0x10008a24
mov byte [esi + 0x741], cl
shr al, 1
mov dword [esp + 0x10], eax
cmp byte [esi + 9], 4
mov al, byte [esp + 0x17]
mov byte [esi + 0x794], al
jae 0x10008a40
mov byte [esi + 0x73d], al
mov al, byte [0x5a020d9]
or al, 1
mov byte [0x5a020d9], al
cmp byte [esi + 9], 4
jb 0x10008a5a
mov byte [esi + 0x73d], al
jmp 0x10008a60
mov byte [esi + 0x73f], al
push esi
call fcn.10009210
mov edx, dword [0x5a02100]
add esp, 4
mov dword [0x5a020dc], edx
cmp byte [esi + 9], 4
jb 0x10008a83
mov dword [esi + 0x740], edx
jmp 0x10008aa3
xor ecx, ecx
movzx eax, dx
cmp eax, edx
mov word [esi + 0x742], dx
push 0xffffe3d7
sete cl
push esi
push ecx
call fcn.10005bf0
add esp, 0xc
mov edx, dword [0x5a02104]
mov dword [0x5a020e0], edx
cmp byte [esi + 9], 4
jb 0x10008abd
mov dword [esi + 0x744], edx
jmp 0x10008add
xor ecx, ecx
movzx eax, dx
cmp eax, edx
mov word [esi + 0x744], dx
push 0xffffe3d8
sete cl
push esi
push ecx
call fcn.10005bf0
add esp, 0xc
test byte [esi + 0x4e0], 4
je 0x10008b76
cmp bl, 2
jne 0x10008b18
test dword [esi + 0x738], 0x1000
jne 0x10008b18
mov byte [0x5a020db], 4
cmp byte [esi + 9], 4
jb 0x10008b11
mov byte [esi + 0x73f], 4
jmp 0x10008b18
mov byte [esi + 0x741], 4
movzx edx, byte [0x5a020db]
imul edx, dword [0x5a02100]
add edx, 7
shr edx, 3
mov dword [0x5a020e4], edx
cmp byte [esi + 9], 4
jb 0x10008b40
mov dword [esi + 0x748], edx
jmp 0x10008b60
xor ecx, ecx
movsx eax, dx
cmp eax, edx
mov word [esi + 0x746], dx
push 0xffffe3d7
sete cl
push esi
push ecx
call fcn.10005bf0
add esp, 0xc
mov eax, dword [esp + 0x10]
movzx eax, al
imul eax, dword [0x5a02100]
add eax, 7
shr eax, 3
jmp 0x10008bd2
movzx edx, byte [0x5a020db]
add edx, 7
sar edx, 3
imul edx, dword [0x5a02100]
mov dword [0x5a020e4], edx
cmp byte [esi + 9], 4
jb 0x10008b9e
mov dword [esi + 0x748], edx
jmp 0x10008bbe
xor ecx, ecx
movsx eax, dx
cmp eax, edx
mov word [esi + 0x746], dx
push 0xffffe3d7
sete cl
push esi
push ecx
call fcn.10005bf0
add esp, 0xc
mov eax, dword [esp + 0x10]
movzx eax, al
add eax, 7
sar eax, 3
imul eax, dword [0x5a02100]
cmp byte [esi + 9], 4
mov dword [esi + 0x758], eax
jb 0x10008bf0
push 0xfffff9f4
push esi
push 1
call fcn.10005bf0
add esp, 0xc
jmp 0x10008bfa
mov dword [esi + 0x748], 0
mov dword [esi + 0x14], 0x28
mov edi, 1
mov eax, dword [0x5a02100]
mov dword [esi + 0x18], eax
mov eax, dword [0x5a02104]
mov dword [esi + 0x1c], eax
mov word [esi + 0x20], di
movzx eax, byte [0x5a020db]
mov word [esi + 0x22], ax
mov dword [esi + 0x24], 0
mov eax, dword [0x5a020e4]
imul eax, dword [0x5a02104]
mov dword [esi + 0x28], eax
mov eax, dword [esi + 0x34]
mov dword [esi + 0x38], eax
mov eax, dword [esi + 0x754]
imul eax, dword [esp + 0x30]
add eax, 7
shr eax, 3
mov dword [0x5a02120], eax
test byte [esi + 0x4e0], 4
mov eax, dword [esi + 0x28]
mov byte [esi + 0x76f], bl
mov dword [esi + 0x75c], eax
je 0x10008d1f
mov edx, dword [0x5a020e4]
add edx, 3
and edx, 0xfffffffc
mov dword [0x5a020e4], edx
cmp byte [esi + 9], 4
jb 0x10008c93
mov dword [esi + 0x748], edx
jmp 0x10008cb3
xor ecx, ecx
movsx eax, dx
cmp eax, edx
mov word [esi + 0x746], dx
push 0xffffe3d7
sete cl
push esi
push ecx
call fcn.10005bf0
add esp, 0xc
mov eax, dword [esi + 0x758]
add eax, 3
and eax, 0xfffffffc
mov dword [esi + 0x758], eax
mov eax, dword [0x5a020e0]
imul eax, dword [0x5a020e4]
mov dword [esi + 0x28], eax
test bh, bh
je 0x10008cdd
cmp bh, 4
jne 0x10008d1f
cmp bl, 0x10
jne 0x10008ce9
mov edi, 0x100
jmp 0x10008ced
mov cl, bl
shl edi, cl
lea ebp, [edi - 1]
mov dword [esi + 0x34], edi
mov ebx, ebp
mov dword [esi + 0x38], edi
sar ebx, 1
test edi, edi
jle 0x10008d1f
lea ecx, [esi + 0x3d]
mov eax, ebx
mov byte [ecx + 2], 0
cdq
lea ecx, [ecx + 4]
idiv ebp
add ebx, 0xff
mov byte [ecx - 3], al
mov byte [ecx - 4], al
mov byte [ecx - 5], al
dec edi
jne 0x10008d01
cmp byte [esp + 0x17], 0
mov ecx, dword [0x5a020e4]
pop ebp
mov dword [esi + 0x74c], ecx
pop ebx
je 0x10008d42
mov eax, dword [0x5a020e0]
imul eax, ecx
mov dword [esi + 0x74c], eax
push 1
push dword [esi + 0x498]
mov dword [esi + 0x494], 0
mov dword [esi + 0xc], 0
call fcn.100045a7
mov ecx, dword [esp + 0x154]
add esp, 8
pop edi
pop esi
xor ecx, esp
call fcn.100066f0
add esp, 0x148
ret