Function at 0x51a3e0
Capabilities:
Encode data using xor
Encrypt data using rc4 ksa
Resolve function by parsing pe exports

Disassembly:
sub esp, 0x60
mov edx, dword [0x6b46a0]
mov ecx, dword [0x6b837c]
push ebx
xor ebx, ebx
cmp edx, ebx
sete al
cmp ecx, ebx
mov byte [esp + 0x28], al
mov eax, dword [0x6b8378]
sete cl
cmp eax, ebx
push esi
mov byte [esp + 0xb], 1
mov dword [esp + 0xc], ebx
mov dword [esp + 0x20], 0x320
mov dword [esp + 0x24], 0x258
mov dword [esp + 0x28], 0x3c
mov dword [0x6b8344], ebx
mov byte [0x6b833c], cl
je 0x51a43d
mov byte [0x6b833c], bl
cmp dword [0x6b46b8], ebx
jne 0x51a465
cmp dword [0x6b46bc], ebx
jne 0x51a465
cmp dword [0x6bddb4], 0x3e8
jbe 0x51a465
cmp dword [0x6bddb0], 0x80
ja 0x51a475
mov dword [esp + 0x20], 0x280
mov dword [esp + 0x24], 0x1e0
lea edx, [esp + 0x28]
push edx
lea eax, [esp + 0x28]
push eax
lea esi, [esp + 0x28]
call fcn.0051a2e0
mov eax, dword [esp + 0x2c]
mov byte [0x637d51], bl
mov byte [0x637d52], bl
mov byte [0x637d50], bl
mov ebx, dword [esp + 0x28]
add esp, 8
call fcn.00519370
test al, al
je 0x51a4ec
mov eax, dword [0x6bd0a0]
mov ecx, dword [0x6e13c4]
xor ebx, ebx
cmp eax, ebx
mov dword [esp + 0x18], ecx
je 0x51a4ca
mov dword [0x6b8348], eax
jmp 0x51a4db
push 0x1f
call dword [0x6e1474]
cmp eax, ebx
mov dword [0x6b8348], eax
je 0x51a4ec
mov edx, dword [eax]
push eax
call dword [edx + 0x10]
mov esi, eax
cmp esi, 1
mov dword [esp + 0x1c], esi
jae 0x51a4f4
pop esi
xor al, al
pop ebx
add esp, 0x60
ret
mov al, byte [0x6b833c]
test al, al
push edi
je 0x51a53b
push str._adapter
lea edi, [esp + 0x1c]
call fcn.00545f60
add esp, 4
test al, al
je 0x51a53b
mov ecx, dword [esp + 0x18]
lea eax, [esp + 0x10]
push eax
push 0x5fe158
push ecx
call fcn.005cb552
mov eax, dword [esp + 0x1c]
add esp, 0xc
cmp eax, esi
jbe 0x51a53f
pop edi
pop esi
xor al, al
pop ebx
add esp, 0x60
ret
mov eax, dword [esp + 0x10]
mov dword [esp + 0x14], 0xffffffff
mov ecx, dword [esp + 0x14]
push ebp
mov ebp, dword [esp + 0x24]
cmp ecx, 0xffffffff
je 0x51a5fc
cmp ecx, dword [esp + 0x24]
jae 0x51ac0e
mov ebp, ecx
mov eax, dword [0x6bd09c]
xor esi, esi
cmp eax, ebx
jle 0x51a59a
mov edx, dword [0x6bd098]
mov eax, dword [edx + esi*4]
cmp byte [eax], 0x2d
jne 0x51a590
push eax
push str._useref
call fcn.005ce0db
add esp, 8
test eax, eax
je 0x51a60c
mov eax, dword [0x6bd09c]
inc esi
cmp esi, eax
jl 0x51a570
mov ecx, 1
mov eax, dword [0x6b8348]
mov edx, dword [eax]
push 0x75bfe0
push ecx
push ebp
push eax
mov dword [0x637d68], ecx
call dword [edx + 0x38]
mov edx, dword [0x6b8348]
mov ecx, ebp
call fcn.00580fb0
cmp eax, ebx
je 0x51a5d4
push ebx
push eax
push 0xffffffffffffffff
call fcn.00582630
add esp, 0xc
mov eax, dword [0x6bdd6c]
or edi, 0xffffffff
cmp eax, ebx
je 0x51a62c
cmp eax, 0x270f
je 0x51a62a
cmp eax, 0x270d
je 0x51a62a
cmp eax, 0x270e
jne 0x51a613
mov edi, 0xffff0200
jmp 0x51a62c
cmp eax, ebx
je 0x51abc9
lea ebp, [eax - 1]
jmp 0x51a565
mov ecx, 2
jmp 0x51a59f
xor edx, edx
mov ecx, 0xa
div ecx
or eax, 0xffffff00
shl eax, 8
or eax, edx
mov edi, eax
jmp 0x51a62c
xor edi, edi
mov eax, dword [0x6bd09c]
xor esi, esi
cmp eax, ebx
jle 0x51a66a
jmp 0x51a640
mov edx, dword [0x6bd098]
mov eax, dword [edx + esi*4]
cmp byte [eax], 0x2d
jne 0x51a660
push eax
push str._useff
call fcn.005ce0db
add esp, 8
test eax, eax
je 0x51a682
mov eax, dword [0x6bd09c]
inc esi
cmp esi, eax
jl 0x51a640
cmp dword [0x6b46bc], ebx
jne 0x51a682
cmp dword [0x6bdd68], ebx
jne 0x51a682
cmp dword [0x6bdd3c], ebx
je 0x51a68a
mov dword [0x6bdd6c], ebx
xor edi, edi
mov eax, dword [0x6bd09c]
xor esi, esi
cmp eax, ebx
jle 0x51a6d2
mov eax, dword [0x6bd098]
mov eax, dword [eax + esi*4]
cmp byte [eax], 0x2d
jne 0x51a6b4
push eax
push str._use00
call fcn.005ce0db
add esp, 8
test eax, eax
je 0x51a6c0
mov eax, dword [0x6bd09c]
inc esi
cmp esi, eax
jl 0x51a695
jmp 0x51a6d2
mov dword [0x6bdd6c], ebx
xor edi, edi
mov dword [0x75c09c], 1
mov eax, dword [0x6bd09c]
xor esi, esi
cmp eax, ebx
jle 0x51a717
lea ecx, [ecx]
mov ecx, dword [0x6bd098]
mov eax, dword [ecx + esi*4]
cmp byte [eax], 0x2d
jne 0x51a700
push eax
push str._use11
call fcn.005ce0db
add esp, 8
test eax, eax
je 0x51a70c
mov eax, dword [0x6bd09c]
inc esi
cmp esi, eax
jl 0x51a6e0
jmp 0x51a717
mov dword [0x6bdd6c], ebx
mov edi, 0xffff0101
mov eax, dword [0x6bd09c]
xor esi, esi
cmp eax, ebx
jle 0x51a759
mov edx, dword [0x6bd098]
mov eax, dword [edx + esi*4]
cmp byte [eax], 0x2d
jne 0x51a742
push eax
push str._use14
call fcn.005ce0db
add esp, 8
test eax, eax
je 0x51a74e
mov eax, dword [0x6bd09c]
inc esi
cmp esi, eax
jl 0x51a722
jmp 0x51a759
mov dword [0x6bdd6c], ebx
mov edi, 0xffff0104
mov eax, dword [0x6bd09c]
xor esi, esi
cmp eax, ebx
jle 0x51a79a
mov eax, dword [0x6bd098]
mov eax, dword [eax + esi*4]
cmp byte [eax], 0x2d
jne 0x51a783
push eax
push str._use20
call fcn.005ce0db
add esp, 8
test eax, eax
je 0x51a78f
mov eax, dword [0x6bd09c]
inc esi
cmp esi, eax
jl 0x51a764
jmp 0x51a79a
mov dword [0x6bdd6c], ebx
mov edi, 0xffff0200
mov eax, dword [0x6bd09c]
xor esi, esi
cmp eax, ebx
jle 0x51a7de
jmp 0x51a7b0
mov ecx, dword [0x6bd098]
mov eax, dword [ecx + esi*4]
cmp byte [eax], 0x2d
jne 0x51a7d4
push eax
push str._use2a
call fcn.005ce0db
add esp, 8
test eax, eax
je 0x51a906
mov eax, dword [0x6bd09c]
inc esi
cmp esi, eax
jl 0x51a7b0
cmp edi, 0xffffffff
je 0x51a800
mov edx, dword [0x75c0ac]
mov eax, edi
and edx, 0xffff
and eax, 0xffff
cmp edx, eax
jbe 0x51a800
mov dword [0x75c0ac], edi
cmp dword [0x6bdd48], ebx
je 0x51a818
push ebx
push 0x70
push 0x93
call fcn.00582630
add esp, 0xc
cmp dword [0x6bdd44], ebx
je 0x51a82d
push ebx
push 0x70
push 0x67
call fcn.00582630
add esp, 0xc
cmp dword [0x6bdd54], ebx
je 0x51a84a
cmp dword [0x6bdd44], ebx
jne 0x51a84a
push ebx
push 0x72
push 0x69
call fcn.00582630
add esp, 0xc
cmp dword [0x6bdd4c], ebx
je 0x51a86f
cmp dword [0x6bdd54], ebx
jne 0x51a86f
cmp dword [0x6bdd44], ebx
jne 0x51a86f
push ebx
push 0x71
push 0x68
call fcn.00582630
add esp, 0xc
cmp dword [0x6bdd58], ebx
je 0x51a887
push ebx
push 0x72
push 0x8f
call fcn.00582630
add esp, 0xc
cmp dword [0x6bdd50], ebx
je 0x51a8a7
cmp dword [0x6bdd58], ebx
jne 0x51a8a7
push ebx
push 0x71
push 0x8e
call fcn.00582630
add esp, 0xc
cmp dword [0x6bdd78], ebx
je 0x51a8bd
mov byte [0x637d51], 1
mov byte [0x637d52], 1
cmp dword [0x6bdd7c], ebx
je 0x51a8cc
mov byte [0x637d52], 1
mov eax, dword [0x6bdda4]
cmp eax, 0x1002
jne 0x51a916
mov eax, dword [0x6bdda0]
cmp eax, 0x514c
je 0x51a8fd
cmp eax, 0x514e
je 0x51a8fd
cmp eax, 0x514f
je 0x51a8fd
cmp eax, 0x4242
jne 0x51a97d
mov byte [0x637d50], 1
jmp 0x51a97d
mov dword [0x6bdd6c], ebx
mov edi, 0xffff0200
jmp 0x51a7e3
cmp eax, 0x10de
jne 0x51a97d
push str.NVCPL.dll
mov byte [0x637d50], 1
call dword [sym.imp.KERNEL32.dll_LoadLibraryA]
mov esi, eax
cmp esi, ebx
je 0x51a97d
push str.NvCplGetDataInt
push esi
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
cmp eax, ebx
je 0x51a976
lea ecx, [esp + 0x1c]
push ecx
push 4
mov dword [esp + 0x24], ebx
call eax
add esp, 8
test eax, eax
je 0x51a976
mov eax, dword [esp + 0x1c]
cmp eax, 0xffffffff
je 0x51a976
cmp eax, ebx
je 0x51a976
push ebx
push 0x7e
push 0x8d
call fcn.00582630
add esp, 0xc
push esi
call dword [sym.imp.KERNEL32.dll_FreeLibrary]
mov edx, dword [0x68aec0]
mov eax, dword [0x6bddb8]
shl edx, 0x14
cmp eax, edx
jae 0x51a99c
push ebx
push 0x75
push 0x6c
call fcn.00582630
add esp, 0xc
mov edi, dword [sym.imp.USER32.dll_GetDesktopWindow]
call edi
push eax
call dword [sym.imp.USER32.dll_GetDC]
mov esi, eax
mov al, byte [0x6b833c]
test al, al
jne 0x51a9d5
push 0xc
push esi
call dword [sym.imp.GDI32.dll_GetDeviceCaps]
cmp eax, 0x20
je 0x51a9d5
push 1
push 0x7e
push 0x83
call fcn.00582630
add esp, 0xc
push esi
call edi
push eax
call dword [sym.imp.USER32.dll_ReleaseDC]
mov eax, dword [0x6b8348]
mov ecx, dword [eax]
lea edx, [esp + 0x38]
push edx
push ebp
push eax
call dword [ecx + 0x20]
test eax, eax
jl 0x51abd3
mov al, byte [0x6b833c]
test al, al
je 0x51aa1c
mov eax, dword [esp + 0x20]
push 0x90080000
push 0xfffffffffffffff0
push eax
call dword [sym.imp.USER32.dll_SetWindowLongA]
mov al, byte [0x6b833c]
test al, al
jne 0x51aa7f
lea ecx, [esp + 0x58]
push ecx
call edi
push eax
call dword [sym.imp.USER32.dll_GetWindowRect]
mov eax, dword [esp + 0x64]
cmp dword [esp + 0x2c], eax
jae 0x51aa3e
mov edx, dword [esp + 0x28]
cmp edx, dword [esp + 0x60]
jb 0x51aa67
cmp eax, 0x258
jle 0x51aa57
mov dword [esp + 0x28], 0x320
mov dword [esp + 0x2c], 0x258
jmp 0x51aa67
mov dword [esp + 0x28], 0x280
mov dword [esp + 0x2c], 0x1e0
mov eax, dword [esp + 0x44]
cmp eax, 0x15
jl 0x51aa7a
cmp eax, 0x16
mov byte [esp + 0x13], 1
jle 0x51aa7f
mov byte [esp + 0x13], 0
push 0x75b6a0
lea eax, [esp + 0x2c]
call fcn.00519a00
mov dword [esp + 0x58], 0x20
mov eax, dword [0x75c0ac]
add esp, 4
cmp eax, 0xffff0101
setb al
mov cl, al
neg cl
mov dl, al
sbb ecx, ecx
and ecx, 0x40
add ecx, 0x40
neg dl
mov dword [esp + 0x48], ecx
sbb edx, edx
and edx, 0xffffffe0
add edx, 0x40
neg al
mov dword [esp + 0x4c], edx
sbb eax, eax
xor esi, esi
mov si, word [0x75bffe]
and eax, 0xffffffa0
add eax, 0x80
mov dword [esp + 0x50], eax
not esi
and esi, 1
cmp esi, 4
jge 0x51ab51
jmp 0x51aaf0
mov edx, dword [0x6bdd40]
mov edi, dword [esp + esi*4 + 0x48]
neg edx
sbb edx, edx
and edx, 0x100
add edi, edx
mov edx, dword [0x6b8374]
mov eax, dword [0x6b8348]
neg edx
sbb edx, edx
mov ecx, dword [eax]
and edx, 2
add edi, edx
mov edx, dword [0x6b8378]
neg edx
push 0x6b8344
sbb edx, edx
push 0x75b6a0
and edx, 4
add edi, edx
mov edx, dword [esp + 0x28]
push edi
push edx
mov edx, dword [0x637d68]
push edx
push ebp
push eax
call dword [ecx + 0x40]
test eax, eax
jge 0x51ab74
inc esi
cmp esi, 4
jl 0x51aaf0
mov al, byte [0x6b8340]
test al, al
jne 0x51ab81
push 0x75b6a0
lea eax, [esp + 0x2c]
mov byte [0x6b8340], 1
call fcn.00519a00
jmp 0x51aa95
mov al, byte [esp + esi*4 + 0x48]
and al, 0x20
mov byte [0x637d48], al
jmp 0x51ab8e
cmp dword [esp + 0x30], ebx
sete cl
mov byte [0x6b8340], cl
cmp dword [0x6b8374], ebx
je 0x51aba5
mov dword [esp + 0x1c], 0x7e
wait
fninit
fldcw word [esp + 0x1c]
mov al, byte [esp + 0x13]
test al, al
je 0x51abb5
cmp dword [0x6b8344], ebx
jne 0x51abda
cmp dword [esp + 0x24], 1
jbe 0x51abda
mov eax, dword [esp + 0x14]
mov ecx, dword [esp + 0x18]
mov byte [esp + 0x13], 1
inc ecx
mov dword [esp + 0x18], ecx
jmp 0x51a550
mov byte [esp + 0x13], 0
jmp 0x51ac0e
mov edx, dword [esp + 0x38]
mov eax, dword [esp + 0x3c]
mov ecx, dword [esp + 0x40]
mov dword [0x75c120], edx
mov edx, dword [esp + 0x44]
mov dword [0x75c124], eax
mov eax, dword [esp + 0x2c]
mov dword [0x75c128], ecx
mov ecx, dword [esp + 0x28]
mov dword [0x75c12c], edx
call fcn.00519560
cmp dword [0x6b8344], ebx
je 0x51ae8f
mov al, byte [esp + 0x13]
test al, al
je 0x51ae8f
mov eax, dword [0x75c078]
mov edx, dword [0x637d68]
push 0x15
cmp eax, 4
push 1
sbb eax, eax
push 1
and eax, 0xfffffffe
push 0x16
add eax, 4
push edx
mov word [0x637d4a], ax
mov eax, dword [0x6b8348]
mov ecx, dword [eax]
push ebp
push eax
mov dword [0x6b8350], ebp
mov word [0x637d46], 0x2c
call dword [ecx + 0x28]
test eax, eax
jge 0x51ac71
mov byte [0x637d52], 1
mov al, byte [0x6b833c]
test al, al
je 0x51ac89
cmp dword [0x6b8344], ebx
je 0x51ac89
push ebx
call dword [sym.imp.USER32.dll_ShowCursor]
mov byte [0x75bfc8], 0
mov byte [0x6b833e], 0
call fcn.00519b10
cmp dword [0x6b8378], ebx
jne 0x51acae
mov eax, 1
call fcn.00519220
cmp dword [0x75c0ac], 0xffff0101
jae 0x51acdc
mov ax, word [0x637d4a]
cmp ax, 2
mov word [0x637d4a], ax
jl 0x51acd5
mov word [0x637d4a], 2
mov byte [0x637d50], 1
mov eax, dword [0x6bd09c]
xor esi, esi
cmp eax, ebx
jle 0x51ad22
jmp 0x51acf0
mov eax, dword [0x6bd098]
mov eax, dword [eax + esi*4]
cmp byte [eax], 0x2d
jne 0x51ad0f
push eax
push str._usefxfile
call fcn.005ce0db
add esp, 8
test eax, eax
je 0x51ad1b
mov eax, dword [0x6bd09c]
inc esi
cmp esi, eax
jl 0x51acf0
jmp 0x51ad22
mov byte [0x6b835e], 1
call fcn.0051a250
call fcn.00532d20
test al, al
je 0x51ad7f
push 0x18000
push ebx
call dword [sym.imp.KERNEL32.dll_GlobalAlloc]
cmp eax, ebx
mov dword [0x6b830c], eax
je 0x51ad7f
call fcn.0051f400
test al, al
je 0x51ad7f
call fcn.00518c00
test al, al
je 0x51ad7f
call fcn.00518260
test al, al
je 0x51ad7f
call fcn.0051ebe0
test al, al
je 0x51ad7f
call fcn.0052fc70
test al, al
je 0x51ad7f
call fcn.0053a3d0
test al, al
je 0x51ad7f
mov bl, 1
jmp 0x51ad81
xor bl, bl
call fcn.005259d0
mov eax, dword [0x67dcc4]
mov ecx, dword [0x67dcc0]
lea edi, [eax + ecx]
add eax, 0x78
mov dword [0x67dcc4], eax
mov al, byte [0x6b4ca0]
test al, al
mov dword [esp + 0x24], 0x78
lea esi, [esp + 0x24]
jne 0x51adc2
mov edx, 0x652968
call fcn.004d3730
mov byte [0x6b4ca0], 1
mov eax, dword [0x67dccc]
mov edx, 4
lea esp, [esp]
xor ecx, ecx
mov cl, byte [esi]
xor ecx, eax
and ecx, 0xff
mov ecx, dword [ecx*4 + 0x652968]
shr eax, 8
inc esi
xor eax, ecx
dec edx
jne 0x51add0
mov dword [0x67dccc], eax
mov dword [0x6b8194], edi
call fcn.00445000
call fcn.0051af60
test al, al
je 0x51ae0a
call fcn.0051b5f0
test bl, bl
je 0x51ae80
mov edx, dword [esp + 0x28]
xor eax, eax
mov dword [esp + 0x58], eax
mov dword [esp + 0x5c], eax
mov eax, dword [esp + 0x2c]
mov dword [esp + 0x60], edx
mov dword [esp + 0x64], eax
mov eax, dword [0x6b8344]
lea edx, [esp + 0x58]
push edx
mov dword [esp + 0x6c], 0
mov dword [esp + 0x70], 0x3f800000
mov ecx, dword [eax]
push eax
call dword [ecx + 0xbc]
test eax, eax
jge 0x51ae51
xor bl, bl
mov eax, 1
mov byte [0x637cf8], 1
mov dword [0x75b68c], 0x14
mov dword [0x75bf20], eax
mov dword [0x75c110], eax
call fcn.0051cf20
pop ebp
pop edi
pop esi
mov al, bl
pop ebx
add esp, 0x60
ret
call fcn.0051beb0
pop ebp
pop edi
pop esi
mov al, bl
pop ebx
add esp, 0x60
ret
push 1
push 0x82
push 0x81
mov dword [0x6b8344], ebx
call fcn.00582630
add esp, 0xc
pop ebp
pop edi
pop esi
xor al, al
pop ebx
add esp, 0x60
ret