Function at 0x437824
Capabilities:
Encrypt data using rc4 ksa

Disassembly:
push ebp
mov ebp, esp
add esp, 0xfffffeb4
push ebx
push esi
push edi
mov dword [ebp - 0xc], ecx
mov dword [ebp - 8], edx
mov byte [ebp - 1], al
mov byte [ebp - 0x11], 0x20
mov eax, dword [ebp + 0xc]
dec eax
xor edx, edx
mov dl, byte [ebp - 0x11]
mov ecx, edx
cdq
idiv ecx
inc eax
mov dword [ebp - 0x10], eax
mov eax, dword [ebp - 0x10]
test eax, eax
jle 0x437dce
mov dword [ebp - 0x1c], eax
mov edi, 1
cmp edi, dword [ebp - 0x10]
jne 0x43787b
mov eax, dword [ebp + 0xc]
dec eax
xor edx, edx
mov dl, byte [ebp - 0x11]
mov ecx, edx
cdq
idiv ecx
inc edx
mov byte [ebp - 0x13], dl
jmp 0x437881
mov al, byte [ebp - 0x11]
mov byte [ebp - 0x13], al
mov bl, byte [ebp - 0x13]
test bl, bl
jbe 0x4378ae
mov byte [ebp - 0x12], 1
mov eax, edi
dec eax
xor edx, edx
mov dl, byte [ebp - 0x11]
imul edx
xor edx, edx
mov dl, byte [ebp - 0x12]
add eax, edx
mov edx, dword [ebp - 0xc]
cmp byte [edx + eax - 1], 0xff
jne 0x4378ae
inc byte [ebp - 0x12]
dec bl
jne 0x43788c
xor eax, eax
mov al, byte [ebp - 0x12]
xor edx, edx
mov dl, byte [ebp - 0x13]
inc edx
cmp eax, edx
je 0x437dc4
mov ebx, edi
dec ebx
xor eax, eax
mov al, byte [ebp - 0x11]
imul ebx, eax
add ebx, dword [ebp - 8]
cmp byte [ebp - 1], 0
jg 0x437b81
cmp byte [ebp - 1], 0
jne 0x43794e
mov eax, dword [ebp + 8]
mov eax, dword [eax]
add eax, 0xffff
cmp ebx, eax
jle 0x43794e
mov edx, 0x437de4
mov eax, 0x4c108c
call fcn.00404e58
mov esi, ebx
test esi, esi
jns 0x437908
add esi, 0xffff
sar esi, 0x10
mov edx, dword [0x4be898]
mov dl, byte [edx + esi]
call fcn.00403500
mov edx, 0x437df8
call fcn.00404e58
mov edx, 0xf
sub edx, esi
mov ecx, dword [0x4be898]
mov dl, byte [ecx + edx]
call fcn.00403500
mov dl, 0x43
call fcn.00403500
call fcn.00403624
mov eax, esi
shl eax, 0x10
mov edx, dword [ebp + 8]
mov dword [edx], eax
cmp byte [ebp - 1], 0xff
jne 0x437a93
mov eax, dword [ebp + 8]
mov eax, dword [eax]
add eax, 0xffff
cmp ebx, eax
jle 0x437a93
mov eax, ebx
test eax, eax
jns 0x437975
add eax, 0xffff
sar eax, 0x10
mov dword [ebp - 0xc8], eax
fild dword [ebp - 0xc8]
add esp, 0xfffffff8
fistp qword [esp]
wait
mov dl, 4
xor eax, eax
call fcn.004af0b0
mov edx, 0x437e04
mov eax, 0x4c108c
call fcn.00404e58
push eax
lea eax, [ebp - 0xe4]
mov edx, dword [0x4be7c4]
mov ecx, 0x19
call fcn.00403678
lea edx, [ebp - 0xe4]
pop eax
call fcn.00403584
call fcn.00402ca8
mov si, 6
mov eax, dword [0x4be7c4]
mov al, byte [eax]
call fcn.004b13e8
and eax, 0xff
shl eax, 4
push eax
mov eax, dword [0x4be7c4]
mov al, byte [eax + 1]
call fcn.004b13e8
and eax, 0xff
pop edx
add dx, ax
add si, dx
mov eax, dword [0x4be7c4]
mov al, byte [eax + 2]
call fcn.004b13e8
and eax, 0xff
shl eax, 4
push eax
mov eax, dword [0x4be7c4]
mov al, byte [eax + 3]
call fcn.004b13e8
and eax, 0xff
pop edx
add dx, ax
add si, dx
mov eax, esi
not al
inc eax
and eax, 0xff
mov dword [ebp - 0xc8], eax
fild dword [ebp - 0xc8]
add esp, 0xfffffff8
fistp qword [esp]
wait
mov dl, 2
xor eax, eax
call fcn.004af0b0
lea eax, [ebp - 0xe4]
mov edx, dword [0x4be7c4]
mov ecx, 0x19
call fcn.00403678
lea edx, [ebp - 0xe4]
mov eax, 0x4c108c
call fcn.00403584
call fcn.00403624
mov eax, ebx
test eax, eax
jns 0x437a88
add eax, 0xffff
sar eax, 0x10
shl eax, 0x10
mov edx, dword [ebp + 8]
mov dword [edx], eax
mov edx, 0x437e10
lea eax, [ebp - 0x81]
call fcn.004b81b0
xor eax, eax
mov al, byte [ebp - 0x13]
mov dword [ebp - 0xc8], eax
fild dword [ebp - 0xc8]
add esp, 0xfffffff8
fistp qword [esp]
wait
mov dl, 2
xor eax, eax
call fcn.004af0b0
mov eax, dword [0x4be7c4]
push eax
lea eax, [ebp - 0x81]
push eax
call sub.kernel32.dll_lstrcatA
movzx eax, bx
mov dword [ebp - 0xc8], eax
fild dword [ebp - 0xc8]
add esp, 0xfffffff8
fistp qword [esp]
wait
mov dl, 4
xor eax, eax
call fcn.004af0b0
mov eax, dword [0x4be7c4]
push eax
lea eax, [ebp - 0x81]
push eax
call sub.kernel32.dll_lstrcatA
push 0x437e14
lea eax, [ebp - 0x81]
push eax
call sub.kernel32.dll_lstrcatA
mov eax, dword [0x4be7c4]
mov al, byte [eax]
call fcn.004b13e8
and eax, 0xff
mov ebx, eax
shl ebx, 4
xor eax, eax
mov al, byte [ebp - 0x13]
add bx, ax
mov eax, dword [0x4be7c4]
mov al, byte [eax + 1]
call fcn.004b13e8
and eax, 0xff
add bx, ax
mov eax, dword [0x4be7c4]
mov al, byte [eax + 2]
call fcn.004b13e8
and eax, 0xff
shl eax, 4
add bx, ax
mov eax, dword [0x4be7c4]
mov al, byte [eax + 3]
call fcn.004b13e8
and eax, 0xff
add bx, ax
mov word [ebp - 0x16], bx
jmp 0x437c92
mov edx, 0x437e18
lea eax, [ebp - 0x81]
call fcn.004b81b0
movsx eax, byte [ebp - 1]
mov dword [ebp - 0xc8], eax
fild dword [ebp - 0xc8]
add esp, 0xfffffff8
fistp qword [esp]
wait
call fcn.004b849c
push eax
lea eax, [ebp - 0x81]
push eax
call sub.kernel32.dll_lstrcatA
xor eax, eax
mov al, byte [ebp - 0x13]
movsx edx, byte [ebp - 1]
add eax, edx
inc eax
inc eax
mov dword [ebp - 0xc8], eax
fild dword [ebp - 0xc8]
add esp, 0xfffffff8
fistp qword [esp]
wait
mov dl, 2
xor eax, eax
call fcn.004af0b0
mov eax, dword [0x4be7c4]
push eax
lea eax, [ebp - 0x81]
push eax
call sub.kernel32.dll_lstrcatA
mov eax, dword [0x4be7c4]
mov al, byte [eax]
call fcn.004b13e8
and eax, 0xff
mov esi, eax
shl esi, 4
mov eax, dword [0x4be7c4]
mov al, byte [eax + 1]
call fcn.004b13e8
and eax, 0xff
add si, ax
mov word [ebp - 0x16], si
mov dword [ebp - 0xc8], ebx
fild dword [ebp - 0xc8]
add esp, 0xfffffff8
fistp qword [esp]
wait
mov al, byte [ebp - 1]
inc eax
mov edx, eax
add edx, edx
xor eax, eax
call fcn.004af0b0
mov eax, dword [0x4be7c4]
push eax
lea eax, [ebp - 0x81]
push eax
call sub.kernel32.dll_lstrcatA
mov bl, byte [ebp - 1]
test bl, bl
jb 0x437c92
inc ebx
mov esi, dword [0x4be7c4]
mov al, byte [esi]
call fcn.004b13e8
and eax, 0xff
shl eax, 4
push eax
mov al, byte [esi + 1]
call fcn.004b13e8
and eax, 0xff
pop edx
add dx, ax
add word [ebp - 0x16], dx
add esi, 2
dec bl
jne 0x437c66
mov bl, byte [ebp - 0x13]
test bl, bl
jbe 0x437d10
mov byte [ebp - 0x12], 1
lea esi, [ebp - 0xc2]
mov eax, edi
dec eax
xor edx, edx
mov dl, byte [ebp - 0x11]
imul edx
xor edx, edx
mov dl, byte [ebp - 0x12]
add eax, edx
mov edx, dword [ebp - 0xc]
movzx edx, byte [edx + eax - 1]
shr edx, 4
mov ecx, dword [0x4be898]
mov dl, byte [ecx + edx]
mov byte [esi], dl
mov edx, dword [ebp - 0xc]
movzx eax, byte [edx + eax - 1]
and eax, 0xf
mov edx, dword [0x4be898]
mov al, byte [edx + eax]
mov byte [esi + 1], al
mov al, byte [esi]
call fcn.004b13e8
and eax, 0xff
shl eax, 4
push eax
mov al, byte [esi + 1]
call fcn.004b13e8
and eax, 0xff
pop edx
add dx, ax
add word [ebp - 0x16], dx
inc byte [ebp - 0x12]
add esi, 2
dec bl
jne 0x437ca3
xor eax, eax
mov al, byte [ebp - 0x12]
add eax, eax
mov byte [ebp + eax - 0xc4], 0
lea eax, [ebp - 0xc2]
push eax
lea eax, [ebp - 0x81]
push eax
call sub.kernel32.dll_lstrcatA
cmp byte [ebp - 1], 0
jg 0x437d61
mov al, byte [ebp - 0x16]
not al
inc eax
and eax, 0xff
mov dword [ebp - 0xc8], eax
fild dword [ebp - 0xc8]
add esp, 0xfffffff8
fistp qword [esp]
wait
mov dl, 2
xor eax, eax
call fcn.004af0b0
jmp 0x437d87
mov al, byte [ebp - 0x16]
not al
and eax, 0xff
mov dword [ebp - 0xc8], eax
fild dword [ebp - 0xc8]
add esp, 0xfffffff8
fistp qword [esp]
wait
mov dl, 2
xor eax, eax
call fcn.004af0b0
mov eax, dword [0x4be7c4]
push eax
lea eax, [ebp - 0x81]
push eax
call sub.kernel32.dll_lstrcatA
lea eax, [ebp - 0x14c]
lea edx, [ebp - 0x81]
mov ecx, 0x65
call fcn.00403678
lea edx, [ebp - 0x14c]
mov eax, 0x4c108c
call fcn.00403584
call fcn.00403624
inc edi
dec dword [ebp - 0x1c]
jne 0x437862
mov al, 1
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 8