Function at 0x4105b0
Capabilities:
Encrypt data using rc4 ksa

Disassembly:
sub esp, 0x68
push ebx
push ebp
push esi
push edi
push 0x7f00
push 0
call dword [sym.imp.USER32.dll_LoadCursorA]
mov edi, eax
mov dword [esp + 0x14], edi
test edi, edi
je 0x410649
lea eax, [esp + 0x24]
push eax
push edi
call dword [sym.imp.USER32.dll_GetIconInfo]
test eax, eax
jne 0x4105ef
push edi
call dword [sym.imp.USER32.dll_DestroyCursor]
xor eax, eax
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x68
ret
mov ecx, dword [esp + 0x34]
xor ebx, ebx
test ecx, ecx
sete bl
xor eax, eax
mov dword [esp + 0x38], eax
mov dword [esp + 0x3c], eax
mov dword [esp + 0x40], eax
mov dword [esp + 0x44], eax
mov dword [esp + 0x48], eax
mov dword [esp + 0x4c], eax
test ebx, ebx
je 0x410653
mov edx, dword [esp + 0x30]
lea ecx, [esp + 0x38]
push ecx
push 0x18
push edx
call dword [sym.imp.GDI32.dll_GetObjectA]
test eax, eax
jne 0x410665
push edi
call dword [sym.imp.USER32.dll_DestroyCursor]
mov eax, dword [esp + 0x34]
mov esi, dword [sym.imp.GDI32.dll_DeleteObject]
push eax
call esi
mov ecx, dword [esp + 0x30]
push ecx
call esi
xor eax, eax
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x68
ret
lea edx, [esp + 0x38]
push edx
push 0x18
push ecx
call dword [sym.imp.GDI32.dll_GetObjectA]
test eax, eax
je 0x41062e
mov ebp, dword [esp + 0x3c]
cmp ebp, 0x100
jg 0x41062e
mov esi, dword [esp + 0x40]
cmp esi, 0x100
jg 0x41062e
mov dword [esp + 0x20], ebp
mov eax, esi
test esi, esi
jge 0x410689
neg eax
xor ecx, ecx
test ebx, ebx
setne cl
cdq
inc ecx
idiv ecx
xor ecx, ecx
mov edi, eax
mov eax, dword [esp + 0x7c]
cmp eax, ecx
je 0x4106a6
mov edx, dword [esp + 0x3c]
mov dword [eax], edx
mov eax, dword [esp + 0x80]
cmp eax, ecx
je 0x4106b3
mov dword [eax], edi
mov eax, dword [esp + 0x88]
cmp eax, ecx
je 0x4106c4
mov edx, dword [esp + 0x28]
mov dword [eax], edx
mov eax, dword [esp + 0x8c]
cmp eax, ecx
je 0x4106d5
mov edx, dword [esp + 0x2c]
mov dword [eax], edx
cmp dword [esp + 0x84], ecx
jne 0x41070a
mov eax, dword [esp + 0x14]
push eax
call dword [sym.imp.USER32.dll_DestroyCursor]
mov ecx, dword [esp + 0x34]
mov esi, dword [sym.imp.GDI32.dll_DeleteObject]
push ecx
call esi
mov edx, dword [esp + 0x30]
push edx
call esi
mov eax, 1
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x68
ret
mov eax, 1
mov word [esp + 0x5c], ax
mov eax, dword [esp + 0x3c]
mov edx, 0x20
neg esi
push ecx
mov dword [esp + 0x54], 0x28
mov word [esp + 0x62], dx
mov dword [esp + 0x58], eax
mov dword [esp + 0x5c], esi
mov dword [esp + 0x64], ecx
mov dword [esp + 0x68], ecx
call dword [sym.imp.USER32.dll_GetDC]
mov esi, eax
mov eax, dword [esp + 0x30]
test ebx, ebx
jne 0x410751
mov eax, dword [esp + 0x34]
mov edx, dword [esp + 0x84]
push 0
lea ecx, [esp + 0x54]
push ecx
mov ecx, dword [esp + 0x48]
push edx
push ecx
push 0
push eax
push esi
call dword [sym.imp.GDI32.dll_GetDIBits]
cmp eax, dword [esp + 0x40]
je 0x4107a7
mov edx, dword [esp + 0x14]
push edx
call dword [sym.imp.USER32.dll_DestroyCursor]
mov eax, dword [esp + 0x34]
mov edi, dword [sym.imp.GDI32.dll_DeleteObject]
push eax
call edi
mov ecx, dword [esp + 0x30]
push ecx
call edi
push esi
push 0
call dword [sym.imp.USER32.dll_ReleaseDC]
xor eax, eax
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x68
ret
push esi
push 0
call dword [sym.imp.USER32.dll_ReleaseDC]
test ebx, ebx
je 0x410827
test edi, edi
jle 0x410876
mov ebx, dword [esp + 0x84]
mov edx, edi
imul edx, ebp
lea edx, [ebx + edx*4]
mov dword [esp + 0x18], edx
mov dword [esp + 0x1c], edi
test ebp, ebp
jle 0x41080b
mov ecx, ebx
mov esi, ebp
jmp 0x4107e0
movzx edi, byte [ecx]
movzx eax, byte [edx]
or ebp, 0xffffffff
sub ebp, edi
shl ebp, 8
or ebp, eax
shl ebp, 8
or ebp, eax
shl ebp, 8
or ebp, eax
mov dword [ecx], ebp
add edx, 4
add ecx, 4
sub esi, 1
jne 0x4107e0
mov ebp, dword [esp + 0x20]
mov edx, dword [esp + 0x18]
lea eax, [ebp*4]
add edx, eax
add ebx, eax
sub dword [esp + 0x1c], 1
mov dword [esp + 0x18], edx
jne 0x4107d3
jmp 0x410876
test edi, edi
jle 0x410876
mov esi, dword [esp + 0x84]
mov dword [esp + 0x1c], edi
test ebp, ebp
jle 0x410866
mov ecx, esi
mov edx, ebp
mov edi, edi
mov eax, dword [ecx]
mov edi, eax
shr edi, 0x10
movzx ebx, al
and edi, 0xff
shl ebx, 0x10
or edi, ebx
and eax, 0xff00ff00
or edi, eax
mov dword [ecx], edi
add ecx, 4
sub edx, 1
jne 0x410840
lea eax, [ebp*4]
add esi, eax
sub dword [esp + 0x1c], 1
jne 0x410836
mov eax, dword [esp + 0x34]
mov esi, dword [sym.imp.GDI32.dll_DeleteObject]
push eax
call esi
mov ecx, dword [esp + 0x30]
push ecx
call esi
mov edx, dword [esp + 0x14]
push edx
call dword [sym.imp.USER32.dll_DestroyCursor]
pop edi
pop esi
pop ebp
mov eax, 1
pop ebx
add esp, 0x68
ret