Function at 0x43f8e0
Capabilities:
Encrypt data using rc4 ksa

Disassembly:
test dword [0x4b63ec], 0xffffff80
jne 0x43f908
test dword [0x4b63ec], 0xffffffff
jne 0x43fd2c
call fcn.00490ee4
jmp fcn.0043f8e0
push edi
push esi
push ebp
push ebx
sub esp, 0x468
mov edi, ecx
mov esi, dword [esp + 0x47c]
mov ebp, dword [esp + 0x480]
movzx eax, byte [edi + 0x12]
xor edx, edx
test eax, eax
mov eax, 1
je 0x43f933
mov eax, edx
movzx ecx, byte [edi + 0x22]
test ecx, ecx
mov ecx, 1
je 0x43f942
mov ecx, edx
cmp eax, ecx
mov eax, 1
cmove eax, edx
mov dword [esp + 0x438], eax
movzx eax, word [edi + 0x24]
mov dword [esp + 0x414], eax
movzx eax, word [edi + 0x26]
mov dword [esp + 0x418], eax
movzx eax, word [edi + 0x28]
mov dword [esp + 0x41c], eax
movzx eax, byte [edi + 0x2a]
mov dword [esp + 0x408], eax
movzx eax, byte [edi + 0x2b]
mov dword [esp + 0x40c], eax
movzx eax, byte [edi + 0x2c]
mov dword [esp + 0x410], eax
lea eax, [esp]
push 0x400
push edx
push eax
call fcn.004910c4
add esp, 0xc
test ebp, ebp
jle 0x43fd23
xor ecx, ecx
xor edx, edx
xor eax, eax
mov dword [esp + 0x43c], ecx
mov edi, dword [edi + 0x197c]
mov dword [esp + 0x420], edi
cmp eax, esi
jge 0x43fd17
mov ecx, ebp
sub ecx, edx
test ecx, ecx
mov dword [esp + 0x424], ecx
jle 0x43fc45
mov dword [esp + 0x404], eax
xor edi, edi
mov ecx, esi
mov dword [esp + 0x400], edx
sub ecx, eax
add ecx, 0xfffffff9
mov dword [esp + 0x434], ecx
mov ebx, esi
imul ebx, edx
add ebx, eax
mov dword [esp + 0x42c], ebx
mov eax, dword [esp + 0x434]
cmp edi, eax
jge 0x43fcf6
mov eax, dword [esp + 0x47c]
imul eax, edi
lea edx, [edi + eax]
mov ebx, dword [esp + 0x420]
mov ecx, dword [esp + 0x438]
add edx, dword [esp + 0x42c]
mov ebx, dword [ebx + edx*4]
test ecx, ecx
je 0x43fa72
mov ebp, ebx
and ebp, 0xff000000
shr ebp, 0x18
mov edx, ebx
and edx, 0xff0000
shr edx, 8
or ebp, edx
mov ecx, ebx
and ecx, 0xff00
shl ecx, 8
or ebp, ecx
shl ebx, 0x18
or ebx, ebp
add eax, dword [esp + 0x42c]
mov esi, dword [esp + 0x414]
mov ecx, dword [esp + 0x408]
mov dword [esp + 0x450], ecx
mov ebp, ebx
shr ebp, cl
and ebp, esi
mov ecx, dword [esp + 0x40c]
mov dword [esp + 0x430], ebp
mov ebp, dword [esp + 0x418]
mov edx, ebx
mov dword [esp + 0x458], ecx
add eax, edi
shr edx, cl
and edx, ebp
mov ecx, dword [esp + 0x410]
mov dword [esp + 0x454], edx
mov edx, dword [esp + 0x41c]
mov dword [esp + 0x460], ecx
shr ebx, cl
and ebx, edx
mov ecx, 1
mov dword [esp + 0x45c], ecx
mov ecx, dword [esp + 0x420]
lea ecx, [ecx + eax*4 + 4]
mov dword [esp + 0x44c], ecx
mov dword [esp + 0x440], edx
mov dword [esp + 0x448], ebp
mov dword [esp + 0x444], esi
mov dword [esp + 0x428], edi
mov edi, dword [esp + 0x430]
mov esi, dword [esp + 0x44c]
mov esi, dword [esi]
mov edx, dword [esp + 0x438]
test edx, edx
je 0x43fb57
mov ebp, esi
and ebp, 0xff000000
shr ebp, 0x18
mov edx, esi
and edx, 0xff0000
shr edx, 8
or ebp, edx
mov ecx, esi
and ecx, 0xff00
shl ecx, 8
or ebp, ecx
shl esi, 0x18
or esi, ebp
inc dword [esp + 0x43c]
mov ecx, dword [esp + 0x450]
add dword [esp + 0x44c], 4
mov edx, esi
neg edi
shr edx, cl
mov ecx, dword [esp + 0x458]
and edx, dword [esp + 0x444]
add edi, edx
mov eax, edi
mov dword [esp + 0x464], edx
neg ebx
cdq
mov ebp, edx
xor edi, ebp
neg ebp
add ebp, edi
mov edi, dword [esp + 0x464]
mov edx, esi
mov eax, dword [esp + 0x454]
shr edx, cl
neg eax
and edx, dword [esp + 0x448]
add eax, edx
mov dword [esp + 0x464], edx
mov ecx, edx
cdq
xor eax, edx
mov dword [esp + 0x454], ecx
sub eax, edx
add ebp, eax
mov ecx, dword [esp + 0x460]
shr esi, cl
and esi, dword [esp + 0x440]
add ebx, esi
mov eax, ebx
cdq
xor ebx, edx
sub ebx, edx
add ebp, ebx
mov ebx, esi
mov esi, 0xff
cmp ebp, 0xff
mov edx, dword [esp + 0x45c]
jle 0x43fbfe
mov ebp, esi
inc dword [esp + ebp*4]
inc edx
cmp edx, 7
mov dword [esp + 0x45c], edx
jle 0x43fb19
mov edi, dword [esp + 0x428]
inc edi
mov eax, dword [esp + 0x424]
cmp edi, eax
jl 0x43fa10
mov eax, dword [esp + 0x404]
mov edx, dword [esp + 0x400]
mov ebp, dword [esp + 0x480]
mov esi, dword [esp + 0x47c]
cmp esi, ebp
jle 0x43fc4f
add eax, ebp
xor edx, edx
jmp 0x43fc53
add edx, esi
xor eax, eax
cmp edx, ebp
jl 0x43f9c9
mov ecx, dword [esp + 0x43c]
mov ebp, dword [esp]
mov esi, dword [esp + 4]
add esi, ebp
lea edi, [esi + esi]
add edi, edi
sub edi, esi
lea eax, [esi + edi*8]
add eax, eax
add eax, eax
cdq
idiv ecx
cmp eax, 0x5a
jl 0x43fc90
xor eax, eax
add esp, 0x468
pop ebx
pop ebp
pop esi
pop edi
ret 8
xor eax, eax
mov esi, 1
mov edx, dword [esp + esi*4]
mov edi, esi
imul edi, edx
imul edi, esi
add eax, edi
test edx, edx
je 0x43fce7
mov edi, dword [esp + esi*4 - 4]
add edi, edi
cmp edx, edi
jg 0x43fce7
inc esi
cmp esi, 8
jl 0x43fc97
cmp esi, 0x100
jge 0x43fcd4
mov edx, dword [esp + esi*4]
imul edx, esi
imul edx, esi
add eax, edx
inc esi
cmp esi, 0x100
jl 0x43fcc0
sub ecx, ebp
xor edx, edx
div ecx
add esp, 0x468
pop ebx
pop ebp
pop esi
pop edi
ret 8
xor eax, eax
add esp, 0x468
pop ebx
pop ebp
pop esi
pop edi
ret 8
mov eax, dword [esp + 0x404]
mov edx, dword [esp + 0x400]
mov ebp, dword [esp + 0x480]
mov esi, dword [esp + 0x47c]
jmp 0x43fc45
mov ecx, dword [esp + 0x43c]
jmp 0x43fc62
xor ecx, ecx
jmp 0x43fc62
push edi
push esi
push ebp
push ebx
sub esp, 0x46c
mov ebx, ecx
mov ebp, dword [esp + 0x484]
movzx edx, byte [ebx + 0x12]
test edx, edx
mov eax, 0
sete al
movzx edx, byte [ebx + 0x22]
test edx, edx
mov edx, 0
sete dl
cmp eax, edx
mov eax, 0
setne al
mov dword [esp + 0x43c], eax
movzx eax, word [ebx + 0x24]
mov dword [esp + 0x414], eax
movzx eax, word [ebx + 0x26]
mov dword [esp + 0x418], eax
movzx eax, word [ebx + 0x28]
mov dword [esp + 0x41c], eax
movzx eax, byte [ebx + 0x2a]
mov dword [esp + 0x408], eax
movzx eax, byte [ebx + 0x2b]
mov dword [esp + 0x40c], eax
movzx eax, byte [ebx + 0x2c]
mov dword [esp + 0x410], eax
lea eax, [esp]
push 0x400
push 0
push eax
call fcn.004910c4
add esp, 0xc
test ebp, ebp
jle 0x440157
xor ecx, ecx
xor edi, edi
xor esi, esi
mov eax, dword [ebx + 0x197c]
mov dword [esp + 0x440], ecx
mov dword [esp + 0x420], eax
mov edx, dword [esp + 0x480]
cmp esi, edx
jge 0x44014b
mov eax, ebp
sub eax, edi
mov dword [esp + 0x424], eax
test eax, eax
jle 0x440077
xor eax, eax
mov ecx, edx
sub ecx, esi
add ecx, 0xfffffff9
mov ebx, edx
imul ebx, edi
add ebx, esi
mov dword [esp + 0x42c], ebx
mov dword [esp + 0x438], ecx
mov dword [esp + 0x404], esi
mov dword [esp + 0x400], edi
mov edx, dword [esp + 0x438]
cmp eax, edx
jge 0x44012a
mov edi, dword [esp + 0x480]
imul edi, eax
lea esi, [eax + edi]
add esi, dword [esp + 0x42c]
mov ebp, dword [esp + 0x420]
mov esi, dword [ebp + esi*4]
mov edx, dword [esp + 0x43c]
test edx, edx
je 0x43fe94
mov ebx, esi
and ebx, 0xff000000
shr ebx, 0x18
mov edx, esi
and edx, 0xff0000
shr edx, 8
or ebx, edx
mov ecx, esi
and ecx, 0xff00
shl ecx, 8
or ebx, ecx
shl esi, 0x18
or esi, ebx
mov ebp, dword [esp + 0x414]
mov ecx, dword [esp + 0x408]
mov dword [esp + 0x458], ecx
mov ebx, esi
shr ebx, cl
and ebx, ebp
mov dword [esp + 0x430], ebx
mov ebx, dword [esp + 0x418]
mov ecx, dword [esp + 0x40c]
mov dword [esp + 0x45c], ecx
mov edx, esi
shr edx, cl
and edx, ebx
mov dword [esp + 0x434], edx
mov edx, dword [esp + 0x41c]
mov ecx, dword [esp + 0x410]
mov dword [esp + 0x464], ecx
shr esi, cl
and esi, edx
mov ecx, 1
mov dword [esp + 0x460], ecx
add edi, dword [esp + 0x42c]
add edi, eax
mov ecx, dword [esp + 0x420]
lea ecx, [ecx + edi*4 + 4]
mov dword [esp + 0x450], ecx
mov dword [esp + 0x454], esi
mov dword [esp + 0x444], edx
mov dword [esp + 0x44c], ebx
mov dword [esp + 0x448], ebp
mov dword [esp + 0x428], eax
mov esi, dword [esp + 0x434]
mov edi, dword [esp + 0x430]
mov ebp, dword [esp + 0x450]
mov ebp, dword [ebp]
mov edx, dword [esp + 0x43c]
test edx, edx
je 0x43ff88
mov ebx, ebp
and ebx, 0xff000000
shr ebx, 0x18
mov edx, ebp
and edx, 0xff0000
shr edx, 8
or ebx, edx
mov ecx, ebp
and ecx, 0xff00
shl ecx, 8
or ebx, ecx
shl ebp, 0x18
or ebp, ebx
mov ecx, dword [esp + 0x458]
mov ebx, ebp
shr ebx, cl
and ebx, dword [esp + 0x448]
mov dword [esp + 0x468], ebx
neg edi
add edi, ebx
mov eax, edi
cdq
mov ebx, edx
xor edi, ebx
neg ebx
add ebx, edi
mov edi, dword [esp + 0x468]
mov ecx, dword [esp + 0x45c]
mov eax, ebp
shr eax, cl
and eax, dword [esp + 0x44c]
mov dword [esp + 0x468], eax
neg esi
add esi, eax
mov eax, esi
cdq
xor esi, edx
sub esi, edx
add ebx, esi
mov esi, dword [esp + 0x468]
mov ecx, dword [esp + 0x464]
shr ebp, cl
and ebp, dword [esp + 0x444]
mov eax, dword [esp + 0x454]
neg eax
add eax, ebp
cdq
xor eax, edx
sub eax, edx
add ebx, eax
mov dword [esp + 0x454], ebp
cmp ebx, 0xff
jle 0x44001a
mov ebx, 0xff
inc dword [esp + ebx*4]
inc dword [esp + 0x440]
add dword [esp + 0x450], 4
mov edx, dword [esp + 0x460]
inc edx
mov dword [esp + 0x460], edx
cmp edx, 7
jle 0x43ff49
mov eax, dword [esp + 0x428]
inc eax
mov edx, dword [esp + 0x424]
cmp eax, edx
jl 0x43fe31
mov esi, dword [esp + 0x404]
mov edi, dword [esp + 0x400]
mov ebp, dword [esp + 0x484]
mov edx, dword [esp + 0x480]
cmp edx, ebp
jle 0x440081
add esi, ebp
xor edi, edi
jmp 0x440085
add edi, edx
xor esi, esi
cmp edi, ebp
jl 0x43fdea
mov ecx, dword [esp + 0x440]
mov ebx, dword [esp]
mov ebp, dword [esp + 4]
add ebp, ebx
lea esi, [ebp + ebp]
add esi, esi
sub esi, ebp
lea eax, [ebp + esi*8]
add eax, eax
add eax, eax
cdq
idiv ecx
cmp eax, 0x5a
jl 0x4400c4
xor eax, eax
add esp, 0x46c
pop ebx
pop ebp
pop esi
pop edi
ret 8
xor eax, eax
mov edx, 1
mov esi, dword [esp + edx*4]
mov ebp, edx
imul ebp, esi
imul ebp, edx
add eax, ebp
test esi, esi
je 0x44011b
mov ebp, dword [esp + edx*4 - 4]
add ebp, ebp
cmp esi, ebp
jg 0x44011b
inc edx
cmp edx, 8
jl 0x4400cb
cmp edx, 0x100
jge 0x440108
mov ebp, dword [esp + edx*4]
imul ebp, edx
imul ebp, edx
add eax, ebp
inc edx
cmp edx, 0x100
jl 0x4400f4
sub ecx, ebx
xor edx, edx
div ecx
add esp, 0x46c
pop ebx
pop ebp
pop esi
pop edi
ret 8
xor eax, eax
add esp, 0x46c
pop ebx
pop ebp
pop esi
pop edi
ret 8
mov esi, dword [esp + 0x404]
mov edi, dword [esp + 0x400]
mov ebp, dword [esp + 0x484]
mov edx, dword [esp + 0x480]
jmp 0x440077
mov ecx, dword [esp + 0x440]
jmp 0x440094
xor ecx, ecx
jmp 0x440094