Function at 0xc23760
Capabilities:
Encrypt data using rc4 prga

Disassembly:
cmp dword [esi + 0x48], 0
jne 0xb8022f
cmp dword [esi + 0x20], 0
je 0xc2d159
mov edx, dword [ebp + 0x14]
mov esi, esi
cmp di, di
pop edi
or si, 0x54a9
pop esi
mov dword [edx], 2
mov bx, cx
not bl
xor eax, eax
not bx
bswap bx
pop ebx
mov esp, ebp
pop ebp
ret
push ebx
cmovnp eax, eax
mov eax, edi
movsx cx, al
not ch
cmovl cx, si
mov ecx, esi
call fcn.00b89aa8
lea esp, [esp + 4]
test eax, eax
cwde
mov eax, ebx
je 0xb861ad
mov ebx, dword [ebp + 0xc]
movsx edi, dx
mov edi, 0x1f9c639b
mov edi, dword [ebp + 8]
push eax
bswap eax
movsx eax, ax
mov eax, edi
mov eax, esi
mov dword [esi + 0x18], ebx
call fcn.00b89f34
test eax, eax
jne 0xf52379
mov eax, dword [esi + 0x18]
ror cl, cl
mov ecx, dword [ebp + 0x10]
sub eax, ebx
stc
test di, 0x1482
add dword [ecx], eax
stc
add ebx, eax
mov dword [ebp + 0xc], ebx
jmp 0xcd4bec
lea ecx, [edi + ebx]
adc edx, esi
xchg dl, dh
bts edx, ebp
lea edx, [esi + 0x5c]
test dx, di
stc
cmp ebx, ecx
je 0xb861d9
sub edx, ebx
not bl
mov bl, byte [eax]
mov byte [edx + eax], bl
inc eax
cmc
cmp eax, ecx
jne 0xb861ca
mov eax, dword [ebp + 0x10]
not ebx
add bx, 0x1bf9
mov dword [esi + 0x58], edi
add dword [eax], edi
xor bx, bp
cmovnp si, ax
shr bx, 0x47
mov eax, dword [ebp + 0x14]
or bx, 0x1577
pop edi
cmovp bx, sp
mov si, 0x742c
cmp esp, ecx
pop esi
mov dword [eax], 3
xor eax, eax
pop ebx
mov esp, ebp
bswap bp
pop ebp
ret
mov eax, dword [ebp + 0x10]
add dword [eax], edi
mov ecx, dword [ebp + 0x14]
bt ebx, 0x40
pop edi
btr esi, esp
pop esi
xchg bx, bx
mov dword [ecx], 3
xor bl, 0xe
sub eax, eax
xchg ebx, ebx
mov bh, bl
pop ebx
mov esp, ebp
pop ebp
ret
mov ecx, 1
or bl, ah
rcl ebx, cl
mov ebx, dword [esi + 0x58]
cmp esi, ebx
test ebx, ebx
jne 0xcd4b08
mov ebx, dword [ebp + 0xc]
cmp edi, 0x14
jb 0xb85c84
lea eax, [edi + ebx - 0x14]
jmp 0xb85cb5
push ebp
mov ebp, esp
cmc
sub esp, 8
push ebx
movsx bx, dl
bswap ebx
not bh
mov ebx, dword [ebp + 0x10]
push esi
bswap esi
cmovo si, sp
mov esi, ebp
push edi
mov si, 0x1f0a
mov di, ax
mov edi, dword [ebx]
not si
mov si, 0x6125
mov esi, eax
mov eax, dword [ebp + 8]
push eax
mov dword [ebp - 4], edi
mov dword [ebx], 0
call fcn.00b80fab
mov ecx, dword [ebp + 0x14]
clc
test esi, ecx
mov dword [ecx], 0
cmp dword [esi + 0x48], 0x112
je 0xcd7b4f
cmp dword [esi + 0x4c], 0
je 0xc23888
test edi, edi
jbe 0xc237fd
mov ecx, dword [esi + 0x58]
test si, si
cmp ecx, 5
jae 0xc237f7
mov eax, dword [ebp + 0xc]
mov dl, byte [eax]
mov byte [ecx + esi + 0x5c], dl
inc dword [esi + 0x58]
inc dword [ebx]
inc eax
cmc
sub edi, 1
mov dword [ebp + 0xc], eax
jne 0xc237cc
mov dword [ebp - 4], edi
cmp dl, cl
stc
cmp dword [esi + 0x58], 5
jb 0xb861f3
cmp byte [esi + 0x5c], 0
jne 0xf52379
movzx eax, byte [esi + 0x5d]
sar dh, 0x41
movzx ecx, byte [esi + 0x5e]
mov dh, 0x64
sete dl
movzx edx, byte [esi + 0x5f]
cmc
shl eax, 8
test al, 0xb4
or eax, ecx
bt ecx, eax
setle ch
movzx ecx, byte [esi + 0x60]
cmp edi, 0x3edf0068
shl eax, 8
cmc
cmp bx, 0x56a2
clc
or eax, edx
shrd edx, esi, 0x69
shl eax, 8
cdq
shr dl, 0x6d
or eax, ecx
mov dword [esi + 0x20], eax
test di, bp
movsx dx, bh
mov dword [esi + 0x1c], 0xffffffff
btr dx, 0xee
sar edx, cl
rcr edx, cl
mov dword [esi + 0x4c], 0
clc
mov dword [esi + 0x58], 0
shr dh, cl
sal dh, cl
bts dx, bp
mov edx, dword [ebp + 8]
clc
cmp dword [esi + 0x24], edx
jae 0xb8021b
cmp dword [esi + 0x50], 0
je 0xc20faa
mov ecx, dword [esi + 4]
add ecx, dword [esi]
neg eax
mov edx, dword [esi + 0x10]
and ah, 0xe5
mov eax, 0x300
cmp esp, 0x391a44b4
shl eax, cl
add eax, 0x736
je 0xc23906
mov ecx, eax
shld ax, sp, 0xb4
mov eax, 0x400
mov edi, edx
shrd edx, ecx, 0x1f
ror edx, cl
add edx, eax
movzx edx, ax
sub ax, dx
mov eax, edx
test bx, 0x28e0
shl edx, 0x10
test cl, dl
cmp ah, 0x8c
or eax, edx
shr ecx, 1
rep stosd dword es:[edi], eax
adc ecx, ecx
rep stosw word es:[edi], ax
sal edi, 0x93
mov edi, dword [ebp - 4]
ror ch, 0x17
rcr ch, 0xae
mov ecx, 1
cmp edi, eax
test dh, 0x56
xor eax, eax
mov dword [esi + 0x44], ecx
mov dword [esi + 0x40], ecx
mov dword [esi + 0x3c], ecx
mov dword [esi + 0x38], ecx
mov dword [esi + 0x34], eax
mov dword [esi + 0x50], eax
jmp 0xc20fb3
mov ecx, dword [ebp + 0x14]
adc si, 0x2b90
movsx ebx, dx
xchg si, bx
pop edi
sal ebx, cl
shl bl, 0xc0
ror si, 0x87
pop esi
test di, cx
ror bh, 0x69
shr ebx, cl
mov dword [ecx], 4
xor eax, eax
setl bh
not bl
pop ebx
mov esp, ebp
pop ebp
ret
sub edi, edi
cmp edi, edx
test dx, sp
mov dword [ebp - 8], edi
cmp ebx, 0x14
jae 0xcd4b56
cmp edi, dword [ebp - 4]
jae 0xcd4b51
mov eax, dword [ebp + 0xc]
test ax, sp
dec dl
mov dl, byte [edi + eax]
mov byte [ebx + esi + 0x5c], dl
test dx, cx
lea ebx, [ebx + ecx]
test bh, 0xb6
test ax, bp
cmc
lea edi, [edi + ecx]
cmp ah, 0x7f
test esi, ecx
cmp ebx, 0x14
jb 0xcd4b1b
mov dword [ebp - 8], edi
cmc
clc
mov dword [esi + 0x58], ebx
test si, 0x384d
clc
cmp ax, sp
cmp ebx, 0x14
jae 0xcd4b92
lea eax, [esi + 0x5c]
cmovae ecx, eax
not cl
movzx cx, al
push eax
not cl
cbw
mov eax, ebx
xchg ecx, ecx
mov ecx, esi
call fcn.00b89aa8
add esp, 4
test eax, eax
je 0xb8a42b
mov edi, dword [ebp + 8]
cwde
lea eax, [esi + 0x5c]
mov dword [esi + 0x18], eax
push eax
cbw
movsx eax, dx
mov eax, esi
call fcn.00b89f34
test eax, eax
jne 0xf52379
mov ecx, dword [esi + 0x18]
adc eax, ebx
mov edx, dword [ebp - 8]
or ah, 0x3a
cmp ecx, esi
bswap eax
sub ecx, ebx
sub ax, 0x2e6c
btr eax, 0xec
sub ecx, esi
lea eax, [edx + ecx - 0x5c]
sar ecx, cl
mov ecx, dword [ebp + 0x10]
clc
cmp ax, bp
add dword [ecx], eax
test ebp, eax
test ch, 0xe5
add dword [ebp + 0xc], eax
cmc
clc
mov dword [esi + 0x58], 0
sub dword [ebp - 4], eax
cmp dword [esi + 0x48], 0x112
je 0xcd7b4f
mov edi, dword [ebp - 4]
cmovne bx, dx
setle bh
mov ebx, dword [ebp + 0x10]
jmp 0xc237ba
cmp dword [esi + 0x20], 0
jne 0xcd7b62
mov edx, dword [ebp + 0x14]
mov dword [edx], 1
xor eax, eax
cmp dword [esi + 0x20], eax
xchg al, bl
not esi
pop edi
pop esi
mov al, 0xc2
xchg al, al
setne al
mov ebx, 0x3d5f63f3
movsx ebx, sp
not ebx
pop ebx
mov esp, ebp
movzx ebp, cx
bswap ebp
pop ebp
ret
pop edi
movsx eax, cx
pop esi
bswap ebx
movsx ebx, di
seto bh
mov eax, 1
mov bl, bh
xchg bx, bx
cmovns ebx, ecx
pop ebx
mov esp, ebp
pop ebp
ret