Function at 0x429700
Capabilities:
Encrypt data using rc4 ksa

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x24
mov al, byte [0x6ec5fa]
push ebx
push esi
push edi
mov byte [ebp - 1], al
mov esi, 0x6e1bc6
cmp byte [esi + 0x15], 0
je 0x429aab
movzx eax, word [esi + 8]
mov cl, byte [esi + 0x22]
mov edx, eax
mov dword [ebp - 0xc], edx
test eax, 0x400
je 0x42973b
mov byte [ebp - 2], cl
cmp cl, 0x10
jbe 0x429744
sub cl, 1
mov byte [esi + 0x22], cl
mov byte [ebp - 2], cl
test cl, cl
jne 0x429766
mov al, byte [esi + 0x25]
cmp al, 0xff
je 0x42975d
movsx eax, al
mov byte [esi + 0x25], 0xff
mov byte [eax*8 + 0x7b76e0], cl
mov byte [esi + 0x15], 0
jmp 0x429aab
movzx eax, byte [esi + 0x21]
movzx ebx, byte [esi + 0x1f]
movzx edi, cl
mov dword [ebp - 0x18], eax
sub eax, edi
cmp eax, ebx
jge 0x4297cc
shl eax, 0x10
cdq
idiv ebx
movzx ecx, byte [esi + 0x16]
movzx edx, byte [esi + 0x1a]
mov edi, eax
movzx eax, byte [esi + 0x19]
movzx ebx, byte [esi + 0x1b]
sub eax, ecx
imul eax, edi
sar eax, 0x10
add al, byte [esi + 0x16]
mov dword [ebp - 0x14], eax
mov byte [esi + 0x1c], al
movzx eax, byte [esi + 0x17]
sub edx, eax
movzx eax, byte [esi + 0x18]
imul edx, edi
sub ebx, eax
imul ebx, edi
sar edx, 0x10
add dl, byte [esi + 0x17]
sar ebx, 0x10
add bl, byte [esi + 0x18]
mov dword [ebp - 0x10], edx
mov byte [esi + 0x1d], dl
mov edx, dword [ebp - 0xc]
jmp 0x42983c
mov ch, byte [esi + 0x20]
mov al, byte [esi + 0x19]
mov ah, byte [esi + 0x1a]
mov bl, byte [esi + 0x1b]
mov byte [ebp - 4], al
mov byte [ebp - 5], ah
mov byte [ebp - 6], bl
cmp cl, ch
jae 0x42982c
movzx ecx, ch
sub edi, ecx
movzx ebx, byte [ebp - 4]
shl edi, 0x10
mov eax, edi
cdq
idiv ecx
movzx ecx, byte [ebp - 5]
lea edx, [eax + 0x10000]
movzx eax, byte [ebp - 6]
imul ebx, edx
imul ecx, edx
imul eax, edx
mov edx, dword [ebp - 0xc]
sar ebx, 0x10
sar ecx, 0x10
sar eax, 0x10
mov byte [ebp - 0x24], al
mov al, cl
mov byte [esi + 0x1c], bl
mov byte [ebp - 0x14], bl
mov ebx, dword [ebp - 0x24]
mov byte [esi + 0x1d], cl
jmp 0x429839
mov cl, al
mov byte [esi + 0x1c], al
mov byte [esi + 0x1d], ah
mov al, ah
mov dword [ebp - 0x14], ecx
mov dword [ebp - 0x10], eax
mov al, byte [ebp - 2]
mov ecx, 0x20
mov edi, esi
mov byte [esi + 0x1e], bl
cmp al, byte [ecx + edi]
mov ecx, dword [ebp - 0x14]
jne 0x429861
test edx, 0x800
je 0x429861
shr byte [esi + 0xb], 2
shr byte [esi + 0xd], 2
test dl, 0x10
je 0x42987b
movsx ax, byte [esi + 0x13]
mov edi, 0xfff
add ax, word [esi + 6]
and ax, di
mov word [esi + 6], ax
test edx, 0x200
je 0x4298cb
mov eax, dword [ebp - 0x10]
cmp cl, 0x10
jae 0x42989b
cmp al, 0x10
jae 0x42989b
cmp bl, 0x10
jae 0x42989b
mov al, byte [ebp - 1]
add al, 3
jmp 0x4298c8
cmp cl, 0x40
jae 0x4298b0
cmp al, 0x40
jae 0x4298b5
cmp bl, 0x40
jae 0x4298b9
mov al, byte [ebp - 1]
add al, 2
jmp 0x4298c8
cmp cl, 0x60
jae 0x4298c5
cmp al, 0x60
jae 0x4298c5
cmp bl, 0x60
jae 0x4298c5
mov al, byte [ebp - 1]
inc al
jmp 0x4298c8
mov al, byte [ebp - 1]
mov byte [esi + 0x12], al
mov bh, byte [ebp - 2]
mov cl, byte [esi + 0x24]
mov bl, bh
mov ch, byte [esi + 0x21]
movzx eax, bh
sub dword [ebp - 0x18], eax
movzx edi, cl
mov eax, edi
mov dword [ebp - 0x20], edi
shr eax, 3
cmp dword [ebp - 0x18], eax
jne 0x42998c
mov al, ch
test cl, 7
je 0x42998c
test edx, 0x800
je 0x42990a
mov edx, 1
jmp 0x429910
shr edx, 0xc
and edx, 2
xor edi, edi
mov dword [ebp - 0xc], edx
test dword [ebp - 0x20], 7
mov bl, bh
mov ch, al
jbe 0x429961
movzx eax, byte [esi + 0x27]
push eax
movsx eax, byte [esi + 0x25]
push edx
mov edx, dword [esi - 0xa]
push eax
movzx eax, cl
mov ecx, dword [esi - 0xe]
and eax, 7
dec eax
push eax
push dword [esi - 6]
call fcn.00427ae0
mov edx, dword [ebp - 0xc]
inc edi
mov byte [esi + 0x25], 0xff
add esp, 0x14
mov cl, byte [esi + 0x24]
movzx eax, cl
and eax, 7
cmp edi, eax
jl 0x429922
mov bl, byte [esi + 0x22]
mov ch, byte [esi + 0x21]
mov eax, 0x800
test word [esi + 8], ax
je 0x429988
movzx eax, byte [esi + 0x27]
mov edx, dword [esi - 0xa]
mov ecx, dword [esi - 0xe]
push eax
push dword [esi - 6]
call fcn.00429000
mov bl, byte [esi + 0x22]
add esp, 8
mov ch, byte [esi + 0x21]
mov byte [esi + 0x24], 0
movzx edi, ch
movzx ecx, bl
mov eax, edi
sub eax, ecx
mov bl, byte [esi + 0x14]
shl eax, 0x10
cdq
idiv edi
mov cx, word [esi + 4]
add cx, word [esi]
mov dword [ebp - 0x18], eax
movzx eax, cx
movzx edx, cx
mov dword [ebp - 0x1c], eax
mov eax, edx
mov dword [ebp - 0x20], eax
mov edi, edx
mov word [esi], cx
test bl, bl
je 0x4299ef
movsx eax, bl
mov ecx, edx
shl eax, 5
cmp word [ebp - 0x1c], 0
movsx ecx, cx
jge 0x4299d6
cmp ecx, eax
jl 0x4299e1
mov edi, edx
test dx, dx
jle 0x4299ef
cmp ecx, eax
jle 0x4299ef
movsx ax, bl
shl ax, 5
mov word [esi], ax
movzx edi, ax
mov bl, byte [esi + 0xe]
mov al, bl
and al, 0xf
je 0x429a1b
movzx edx, word [esi - 2]
movzx ecx, al
mov eax, edx
sar ax, cl
sub dx, ax
mov word [esi - 2], dx
movzx edx, word [esi + 2]
mov eax, edx
sar ax, cl
sub dx, ax
mov word [esi + 2], dx
movzx edx, di
test bl, 0xf0
je 0x429a36
mov cl, bl
mov eax, edi
shr cl, 4
sar ax, cl
sub di, ax
mov word [esi], di
movzx edx, di
movsx edi, word [esi - 2]
movsx ecx, word [esi + 2]
movsx eax, dx
sar eax, 5
add dword [esi - 0xa], eax
mov eax, 0x100
sar edi, 5
add edi, dword [esi - 0xe]
sar ecx, 5
add ecx, dword [esi - 6]
mov dword [esi - 0xe], edi
mov dword [esi - 6], ecx
test word [esi + 8], ax
je 0x429a7c
mov eax, dword [0x6e4a8c]
sar eax, 1
add eax, edi
mov dword [esi - 0xe], eax
mov eax, dword [0x6e4a88]
sar eax, 1
add eax, ecx
mov dword [esi - 6], eax
movzx eax, byte [esi + 0xa]
movzx edx, byte [esi + 0xb]
mov cl, byte [esi + 0xc]
sub edx, eax
imul edx, dword [ebp - 0x18]
movzx eax, cl
sar edx, 0x10
add dl, byte [esi + 0xa]
mov byte [esi + 0xf], dl
movzx edx, byte [esi + 0xd]
sub edx, eax
imul edx, dword [ebp - 0x18]
sar edx, 0x10
add dl, cl
mov byte [esi + 0x10], dl
add esi, 0x38
cmp esi, 0x6e45c6
jl 0x429716
mov eax, dword [0x6e4600]
mov edx, dword [0x517424]
lea eax, [eax + eax*8]
lea esi, [eax*2 + 0x6e4608]
mov eax, 0x6e1beb
mov dword [ebp - 0xc], eax
nop word [eax + eax]
cmp byte [eax - 0x10], 0
je 0x429c9a
mov cl, byte [eax]
cmp cl, 0xff
je 0x429c9a
movsx ecx, cl
mov dword [ebp - 0x18], ecx
cmp byte [ecx*8 + 0x7b76e0], 0
je 0x429c9a
imul edx, edx, 0x41c64e6d
add edx, 0x3039
mov edi, edx
mov dword [ebp - 0x14], edx
sar edi, 0xa
mov ecx, edi
mov dword [0x517424], edx
and ecx, 0xf
mov ebx, edi
shl ecx, 4
add ecx, dword [eax - 0x33]
mov dword [ebp - 0x1c], ecx
mov ecx, edi
and ecx, 0xf0
sar ebx, 4
add ecx, dword [eax - 0x2f]
mov dword [ebp - 0x20], ecx
mov ecx, ebx
and ecx, 0xf0
add ecx, dword [eax - 0x2b]
mov dword [ebp - 0x24], ecx
movzx ecx, byte [eax - 4]
movzx eax, byte [eax - 3]
sub ecx, eax
mov eax, dword [ebp - 0x18]
dec ecx
mov dword [ebp - 0x10], ecx
mov dl, byte [eax*8 + 0x7b76e1]
cmp ecx, 2
jge 0x429bb0
cmp dl, 0x1c
jae 0x429b7e
add dl, 6
mov byte [eax*8 + 0x7b76e1], dl
lea eax, [ecx*8]
mov ebx, 0xff
mov ecx, 0xff
and edi, 0x1f
sub ecx, eax
mov eax, dword [ebp - 0x10]
shl dword [ebp - 0x10], 6
sub ecx, edi
shl eax, 4
sub ebx, eax
mov eax, 0xff
sub eax, dword [ebp - 0x10]
sub ebx, edi
sub eax, edi
jmp 0x429c27
cmp ecx, 4
jge 0x429c01
cmp dl, 0x1c
jae 0x429bc4
add dl, 6
mov byte [eax*8 + 0x7b76e1], dl
lea eax, [ecx*8]
and edi, 0x1f
mov ecx, 0xff
mov ebx, 0x80
sub ecx, edi
sub ebx, eax
sub ecx, eax
xor edi, edi
mov dword [ebp - 0x18], ecx
mov ecx, 4
sub ecx, dword [ebp - 0x10]
shl ecx, 2
test ecx, ecx
lea eax, [ecx*8]
cmovns edi, eax
mov dword [ebp - 0x10], edi
mov eax, edi
jmp 0x429c2a
test dl, dl
je 0x429c0e
dec dl
mov byte [eax*8 + 0x7b76e1], dl
mov ecx, edi
and ebx, 0x1f
and ecx, 0x1f
mov eax, edi
sar eax, 8
add ecx, 0xe0
sub ebx, 0xffffff80
and eax, 0x3f
mov dword [ebp - 0x18], ecx
movzx edi, dl
mov ecx, 0x2000
cmp edi, 0x1f
mov edx, 0x1f
cmova edi, edx
mov edx, dword [ebp - 0xc]
test word [edx - 0x1d], cx
mov ecx, dword [ebp - 0x18]
je 0x429c5d
cmp dword [0x6e4600], 0x20
je 0x429c94
mov byte [esi + 0xf], al
mov byte [esi + 0x10], cl
mov byte [esi + 0x11], bl
jmp 0x429c6f
cmp dword [0x6e4600], 0x20
je 0x429c94
mov byte [esi + 0xf], cl
mov byte [esi + 0x10], bl
mov byte [esi + 0x11], al
mov edx, dword [ebp - 0x1c]
inc dword [0x6e4600]
mov dword [esi], edx
mov edx, dword [ebp - 0x20]
mov dword [esi + 4], edx
mov edx, dword [ebp - 0x24]
shl edi, 8
mov dword [esi + 8], edx
mov word [esi + 0xc], di
mov byte [esi + 0xe], 1
add esi, 0x12
mov edx, dword [ebp - 0x14]
mov eax, dword [ebp - 0xc]
add eax, 0x38
mov dword [ebp - 0xc], eax
cmp eax, 0x6e45eb
jl 0x429ae0
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret