Function at 0x590300
Capabilities:
Contain obfuscated stackstrings
Encode data using xor
Parse pe header
Query or enumerate registry value
Resolve function by parsing pe exports

Disassembly:
sub esp, 0x188
xor eax, eax
push ebx
mov dword [esp + 4], eax
push ebp
mov dword [esp + 0xc], eax
push esi
mov esi, dword [sym.imp.advapi32.dll_RegOpenKeyExA]
mov dword [esp + 0x14], eax
lea ecx, [esp + 0x7c]
push edi
mov dword [esp + 0x1c], eax
push ecx
push 1
push eax
push str.SupportGameData_
push closesocket
mov dword [esp + 0x90], 0x11
mov byte [esp + 0x34], al
call esi
test eax, eax
je 0x590372
lea edx, [esp + 0x80]
push edx
push 1
push 0
push str.SupportGameData
push closesocket
call esi
test eax, eax
je 0x590372
pop edi
pop esi
pop ebp
xor al, al
pop ebx
add esp, 0x188
ret
lea eax, [esp + 0x7c]
lea ecx, [esp + 0x10]
push eax
mov eax, dword [esp + 0x84]
lea edx, [esp + 0x28]
push ecx
push edx
push 0
push str.RegGame27
push eax
mov dword [esp + 0x3c], 3
call dword [sym.imp.advapi32.dll_RegQueryValueExA]
test eax, eax
je 0x5903af
pop edi
pop esi
pop ebp
xor al, al
pop ebx
add esp, 0x188
ret
mov ecx, dword [esp + 0x7c]
lea esi, [esp + 0x10]
mov edx, ecx
lea edi, [esp + 0x98]
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
xor eax, eax
and ecx, 3
mov dword [esp + 0x68], eax
rep movsb byte es:[edi], byte [esi]
mov bl, byte [esp + 0x98]
mov dl, byte [esp + 0x99]
mov cl, byte [esp + 0x9a]
xor bl, 0xc8
xor dl, 0xa6
mov dword [esp + 0x6c], eax
mov al, byte [esp + 0x9b]
mov byte [esp + 0x98], bl
mov bl, byte [esp + 0x9c]
mov byte [esp + 0x99], dl
mov dl, byte [esp + 0x9d]
xor cl, 0xbf
mov byte [esp + 0x9a], cl
mov cl, byte [esp + 0x9e]
xor al, 0xde
xor bl, 0xba
xor dl, 0x9a
mov byte [esp + 0x9b], al
mov al, byte [esp + 0x9f]
mov byte [esp + 0x9c], bl
mov bl, byte [esp + 0xa0]
mov byte [esp + 0x9d], dl
mov dl, byte [esp + 0xa1]
xor cl, 0xa2
mov byte [esp + 0x9e], cl
mov cl, byte [esp + 0xa2]
xor al, 0xdf
xor bl, 0xbb
xor dl, 0xd2
mov byte [esp + 0x9f], al
mov al, byte [esp + 0xa3]
mov byte [esp + 0xa0], bl
mov bl, byte [esp + 0xa4]
mov byte [esp + 0xa1], dl
mov dl, byte [esp + 0xa5]
xor cl, 0xb0
mov byte [esp + 0xa2], cl
mov cl, byte [esp + 0xa6]
xor al, 0xea
xor bl, 0xd0
xor dl, 0x59
mov byte [esp + 0x50], 0x32
mov byte [esp + 0x51], 0x34
mov byte [esp + 0x52], 0x36
mov byte [esp + 0x53], 0x37
mov byte [esp + 0x54], 0x38
mov byte [esp + 0x55], 0x39
mov byte [esp + 0x56], 0x42
mov byte [esp + 0x57], 0x43
mov byte [esp + 0x58], 0x44
mov byte [esp + 0x59], 0x45
mov byte [esp + 0x5a], 0x46
mov byte [esp + 0x5b], 0x47
mov byte [esp + 0x5c], 0x48
mov byte [esp + 0x5d], 0x4a
mov byte [esp + 0x5e], 0x4b
mov byte [esp + 0x5f], 0x4d
mov byte [esp + 0x60], 0x4e
mov byte [esp + 0x61], 0x50
mov byte [esp + 0x62], 0x52
mov byte [esp + 0x63], 0x54
mov byte [esp + 0x64], 0x56
mov byte [esp + 0x65], 0x57
mov byte [esp + 0x66], 0x58
mov byte [esp + 0x67], 0x5a
mov dword [esp + 0x24], 0x27592e9c
mov byte [esp + 0xa3], al
mov byte [esp + 0xa4], bl
mov byte [esp + 0xa5], dl
xor cl, 0xd4
mov byte [esp + 0xa6], cl
xor ecx, ecx
mov al, byte [esp + 0xa7]
mov dword [esp + 0x3c], ecx
mov dword [esp + 0x40], ecx
xor edx, edx
mov dword [esp + 0x44], ecx
mov dword [esp + 0x28], edx
mov dword [esp + 0x48], ecx
xor al, 0x8e
mov byte [esp + 0x4c], cl
mov dword [esp + 0x2c], edx
mov dword [esp + 0x10], ecx
mov byte [esp + 0xa7], al
mov dword [esp + 0x30], edx
mov dword [esp + 0x14], ecx
xor eax, eax
mov dword [esp + 0x34], edx
mov dword [esp + 0x18], ecx
mov dword [esp + 0x70], eax
mov byte [esp + 0x38], dl
mov edx, dword [esp + 0x98]
mov dword [esp + 0x1c], ecx
mov dword [esp + 0x74], eax
mov byte [esp + 0x20], cl
mov ecx, dword [esp + 0xa0]
mov byte [esp + 0x78], al
mov eax, dword [esp + 0x9c]
mov dword [esp + 0x10], edx
mov edx, dword [esp + 0xa4]
mov dword [esp + 0x18], ecx
mov dword [esp + 0x14], eax
mov dword [esp + 0x1c], edx
xor ecx, ecx
mov al, byte [esp + ecx + 0x10]
cmp al, 0x41
jl 0x5905ea
sub al, 0x37
jmp 0x5905ec
sub al, 0x30
mov byte [esp + ecx + 0x84], al
inc ecx
cmp ecx, 0x10
jl 0x5905de
xor esi, esi
movsx ebp, byte [esp + esi + 0x10]
movsx ebx, byte [esp + esi + 0x11]
or edi, 0xffffffff
or edx, 0xffffffff
xor eax, eax
movsx ecx, byte [esp + eax + 0x50]
cmp ecx, ebp
jne 0x590618
mov edx, eax
cmp ecx, ebx
jne 0x59061e
mov edi, eax
inc eax
cmp eax, 0x18
jl 0x59060d
cmp edi, 0xffffffff
je 0x590365
cmp edx, 0xffffffff
je 0x590365
lea eax, [edx + edx*2]
lea ecx, [edi + eax*8]
mov eax, esi
cmp ecx, 0x100
cdq
jl 0x590658
sub eax, edx
sar eax, 1
sub ecx, 0x100
mov byte [esp + eax + 0x70], 1
jmp 0x590661
sub eax, edx
sar eax, 1
mov byte [esp + eax + 0x70], 0
mov eax, ecx
cdq
and edx, 0xf
add eax, edx
sar eax, 4
and ecx, reloc.wsock32.dll_ntohs
mov byte [esp + esi + 0x3c], al
jns 0x59067d
dec ecx
or ecx, 0xfffffff0
inc ecx
mov byte [esp + esi + 0x3d], cl
add esi, 2
cmp esi, 0x10
jl 0x5905fb
mov ecx, 3
xor eax, eax
movsx edx, byte [esp + eax + 0x3c]
lea esi, [ecx + ecx]
xor edx, esi
add ecx, edx
inc eax
cmp eax, 0x10
jl 0x590694
and ecx, 0xff
mov eax, ecx
and eax, 0xf
xor esi, esi
movsx edx, byte [esp + esi + 0x70]
mov edi, eax
and edi, 0x80000001
jns 0x5906c7
dec edi
or edi, 0xfffffffe
inc edi
cmp edi, edx
jne 0x590365
cdq
sub eax, edx
sar eax, 1
inc esi
cmp esi, 4
jl 0x5906b3
sar ecx, 4
and ecx, 0xf
mov eax, ecx
xor ecx, ecx
movsx edx, byte [esp + ecx + 0x74]
mov esi, eax
and esi, 0x80000001
jns 0x5906f8
dec esi
or esi, 0xfffffffe
inc esi
cmp esi, edx
jne 0x590365
cdq
sub eax, edx
sar eax, 1
inc ecx
cmp ecx, 4
jl 0x5906e4
mov eax, 6
movsx edx, byte [esp + eax + 0x45]
test eax, eax
mov ecx, eax
jge 0x59071e
lea ecx, [eax + 0x10]
mov bl, byte [esp + ecx + 0x3c]
lea ecx, [esp + ecx + 0x3c]
mov byte [esp + eax + 0x45], bl
dec eax
cmp eax, 0xfffffff7
mov byte [ecx], dl
jge 0x590710
xor ecx, ecx
movsx eax, byte [esp + ecx + 0x3c]
cmp eax, 0xa
jge 0x590742
add al, 0x30
jmp 0x590744
add al, 0x37
mov byte [esp + ecx + 0x3c], al
inc ecx
cmp ecx, 0x10
jl 0x590734
mov edx, dword [esp + 0x24]
xor ecx, ecx
movsx eax, byte [esp + ecx + 0x4b]
cmp eax, 0x41
jl 0x590769
cmp eax, 0x47
jg 0x590769
mov byte [esp + ecx + 0x37], al
jmp 0x5907a6
cmp eax, 0x61
jl 0x59077b
cmp eax, 0x67
jg 0x59077b
sub al, 0x20
mov byte [esp + ecx + 0x37], al
jmp 0x5907a6
cmp eax, 0x38
jge 0x590790
mov bl, dl
and bl, 7
xor bl, al
mov byte [esp + ecx + 0x37], bl
sar edx, 3
jmp 0x5907a6
cmp eax, 0x41
jge 0x590365
mov bl, cl
dec bl
and bl, 1
xor bl, al
mov byte [esp + ecx + 0x37], bl
dec ecx
lea eax, [ecx + 0xf]
test eax, eax
jge 0x590754
xor ecx, ecx
mov al, byte [esp + ecx + 0x28]
cmp al, 0x41
jl 0x5907bc
sub al, 0x37
jmp 0x5907be
sub al, 0x30
mov byte [esp + ecx + 0x84], al
inc ecx
cmp ecx, 0x10
jl 0x5907b0
xor ecx, ecx
mov al, byte [esp + ecx + 0x28]
cmp al, 0x41
jl 0x5907d9
sub al, 0x37
jmp 0x5907db
sub al, 0x30
mov byte [esp + ecx + 0x28], al
inc ecx
cmp ecx, 0x10
jl 0x5907cd
mov cl, byte [esp + 0x28]
mov dl, byte [esp + 0x29]
and ecx, 0xf
and edx, 0xf
shl ecx, 4
or ecx, edx
cmp ecx, 0x1b
je 0x59080a
pop edi
pop esi
pop ebp
xor al, al
pop ebx
add esp, 0x188
ret
mov al, byte [esp + 0x2b]
pop edi
cmp al, 1
pop esi
pop ebp
pop ebx
sete al
add esp, 0x188
ret