Function at 0x687cb790
Capabilities:
Access peb ldr_data
Get process heap flags
Query or enumerate registry key
Query or enumerate registry value

Disassembly:
push ebp
mov ebp, esp
push edi
push esi
push ebx
sub esp, 0x40c
mov dword [ebp - 0x3c8], eax
or eax, edx
mov dword [ebp - 0x3ec], edx
mov dword [ebp - 0x3d8], ecx
je 0x687ccc82
lea eax, [ebp - 0x3ac]
mov dword [esp + 0xc], 0x20019
mov dword [esp + 0x10], eax
mov dword [esp + 8], 0
mov dword [esp + 4], 0x687dda60
mov dword [esp], 0x80000002
call sub.advapi32.dll_RegOpenKeyExW
mov dword [ebp - 0x3d4], eax
sub esp, 0x14
test eax, eax
jne 0x687cccb9
xor ebx, ebx
lea edi, [ebp - 0x216]
lea esi, [esi]
mov eax, dword [ebp - 0x3ac]
mov dword [esp + 4], ebx
add ebx, 1
mov dword [esp + 0xc], 0xff
mov dword [esp + 8], edi
mov dword [esp], eax
mov dword [ebp - 0x3a8], 0xff
call sub.advapi32.dll_RegEnumKeyW
sub esp, 0x10
test eax, eax
je 0x687cb800
cmp dword [0x687ef004], ebx
jb 0x687cc7d0
mov dword [ebp - 0x3e8], 0
mov eax, edi
mov dword [ebp - 0x3e4], 0
shr eax, 0x10
mov dword [ebp - 0x3c0], eax
lea eax, [ebp - 0x390]
mov dword [ebp - 0x3e0], 0
shr eax, 0x10
mov dword [ebp - 0x3dc], eax
mov dword [ebp - 0x3d0], 0
mov dword [ebp - 0x3bc], 0
lea esi, [esi]
lea eax, [ebp - 0x398]
mov dword [esp + 0x18], 0
mov dword [esp + 0x1c], eax
lea eax, [ebp - 0x3a8]
mov dword [esp + 0xc], eax
mov eax, dword [ebp - 0x3bc]
mov dword [esp + 0x14], 0
mov dword [esp + 4], eax
mov eax, dword [ebp - 0x3ac]
mov dword [esp + 0x10], 0
mov dword [esp + 8], edi
mov dword [esp], eax
mov dword [ebp - 0x3a0], 0x4e
mov dword [ebp - 0x3a8], 0xff
call sub.advapi32.dll_RegEnumKeyExW
sub esp, 0x20
cmp eax, 0x103
je 0x687cc3e0
movzx edx, byte [0x687da03c]
test eax, eax
jne 0x687cc650
and edx, 8
jne 0x687cbd78
lea eax, [ebp - 0x3a4]
mov dword [esp + 0xc], 0x20019
mov dword [esp + 0x10], eax
mov eax, dword [ebp - 0x3ac]
mov dword [esp + 8], 0
mov dword [esp + 4], edi
mov dword [esp], eax
call sub.advapi32.dll_RegOpenKeyExW
sub esp, 0x14
test eax, eax
je 0x687cba90
test byte [0x687da03c], 2
je 0x687cb890
mov ecx, dword [ebp - 0x3c0]
test ecx, ecx
je 0x687cc2e0
mov dword [esp + 4], 0xffffffff
mov dword [esp], edi
call sub.kernel32.dll_IsBadStringPtrW
mov edx, str._invalid_
sub esp, 8
test eax, eax
jne 0x687cba5e
movzx edx, word [ebp - 0x216]
test dx, dx
je 0x687cc629
lea esi, [esi]
mov ecx, eax
lea eax, [eax + 1]
cmp word [edi + ecx*2 + 2], 0
jne 0x687cb998
mov eax, 0x224c
mov esi, edi
mov word [ebp - 0x342], ax
lea eax, [ebp - 0x340]
jmp 0x687cb9f6
cmp dx, 9
je 0x687cc230
cmp dx, 0xa
jne 0x687cc24e
mov edx, 0x6e5c
add eax, 2
mov word [eax - 2], dx
lea ebx, [ecx - 1]
test ecx, ecx
jle 0x687cba30
lea ecx, [ebp - 0x220]
cmp eax, ecx
ja 0x687cba30
movzx edx, word [esi]
mov ecx, ebx
add esi, 2
cmp dx, 0xd
je 0x687cc208
jbe 0x687cb9c0
cmp dx, 0x22
je 0x687cc2a0
cmp dx, 0x5c
jne 0x687cc241
mov edx, 0x5c5c
add eax, 2
lea ebx, [ecx - 1]
mov word [eax - 2], dx
test ecx, ecx
jg 0x687cb9e7
lea esi, [esi]
mov byte [eax], 0x22
test ebx, ebx
jle 0x687cc642
mov ebx, 0x2e2e
mov byte [eax + 3], 0x2e
lea edx, [eax + 4]
mov word [eax + 1], bx
lea eax, [ebp - 0x342]
mov byte [edx], 0
mov dword [esp], eax
call fcn.687d8d80
mov edx, eax
mov dword [esp + 0x10], edx
mov dword [esp + 0xc], str.:_could_not_open_registry_key_for_service_provider__s._n
mov dword [esp + 8], str.DirectPlayEnumerateAW
mov dword [esp + 4], 0x687da03c
mov dword [esp], 1
call fcn.687c3970
jmp 0x687cb890
lea eax, [ebp - 0x3a0]
mov dword [esp + 0xc], 0
mov dword [esp + 0x14], eax
lea eax, [ebp - 0x390]
mov dword [esp + 0x10], eax
mov eax, dword [ebp - 0x3a4]
mov dword [esp + 8], 0
mov dword [esp + 4], 0x687dda38
mov dword [esp], eax
call sub.advapi32.dll_RegQueryValueExW
sub esp, 0x18
test eax, eax
jne 0x687cbf68
cmp dword [ebp - 0x3a0], 0x4e
je 0x687cc0b0
test byte [0x687da03c], 2
je 0x687cb890
mov ecx, dword [ebp - 0x3dc]
test ecx, ecx
je 0x687cc780
lea eax, [ebp - 0x390]
mov dword [esp + 4], 0xffffffff
mov dword [esp], eax
call sub.kernel32.dll_IsBadStringPtrW
mov dword [ebp - 0x3cc], str._invalid_
sub esp, 8
test eax, eax
jne 0x687cbc1a
movzx edx, word [ebp - 0x390]
test dx, dx
je 0x687cc8c3
lea esi, [esi]
nop
mov ecx, eax
lea eax, [eax + 1]
cmp word [ebp + ecx*2 - 0x38e], 0
jne 0x687cbb40
mov esi, 0x224c
lea eax, [ebp - 0x340]
mov word [ebp - 0x342], si
lea esi, [ebp - 0x390]
jmp 0x687cbba6
cmp dx, 9
je 0x687cc458
cmp dx, 0xa
jne 0x687cc4ee
mov edx, 0x6e5c
add eax, 2
mov word [eax - 2], dx
lea edx, [ebp - 0x220]
lea ebx, [ecx - 1]
cmp eax, edx
ja 0x687cbbe8
test ecx, ecx
jle 0x687cbbe8
movzx edx, word [esi]
mov ecx, ebx
add esi, 2
cmp dx, 0xd
je 0x687cc570
jbe 0x687cbb70
cmp dx, 0x22
je 0x687cc540
cmp dx, 0x5c
jne 0x687cc4e1
mov edx, 0x5c5c
add eax, 2
lea ebx, [ecx - 1]
mov word [eax - 2], dx
lea edx, [ebp - 0x220]
cmp eax, edx
jbe 0x687cbb9d
lea esi, [esi]
mov byte [eax], 0x22
test ebx, ebx
jle 0x687cc8dc
mov ebx, 0x2e2e
mov byte [eax + 3], 0x2e
lea edx, [eax + 4]
mov word [eax + 1], bx
lea eax, [ebp - 0x342]
mov byte [edx], 0
mov dword [esp], eax
call fcn.687d8d80
mov dword [ebp - 0x3cc], eax
mov ecx, dword [ebp - 0x3c0]
test ecx, ecx
je 0x687cc760
mov dword [esp + 4], 0xffffffff
mov dword [esp], edi
call sub.kernel32.dll_IsBadStringPtrW
mov edx, str._invalid_
sub esp, 8
test eax, eax
jne 0x687cbd3e
movzx edx, word [ebp - 0x216]
test dx, dx
je 0x687cc8a2
lea esi, [esi]
nop
mov ecx, eax
lea eax, [eax + 1]
cmp word [edi + ecx*2 + 2], 0
jne 0x687cbc60
mov eax, 0x224c
mov dword [ebp - 0x3c4], edi
mov word [ebp - 0x342], ax
lea eax, [ebp - 0x340]
jmp 0x687cbccc
cmp dx, 9
je 0x687cc440
cmp dx, 0xa
jne 0x687cc476
mov edx, 0x6e5c
add eax, 2
mov word [eax - 2], dx
lea ebx, [ebp - 0x220]
lea esi, [ecx - 1]
cmp eax, ebx
ja 0x687cbd10
test ecx, ecx
jle 0x687cbd10
mov ebx, dword [ebp - 0x3c4]
mov ecx, esi
movzx edx, word [ebx]
add dword [ebp - 0x3c4], 2
cmp dx, 0xd
je 0x687cc558
jbe 0x687cbc90
cmp dx, 0x22
je 0x687cc4d0
cmp dx, 0x5c
jne 0x687cc469
mov esi, 0x5c5c
add eax, 2
lea ebx, [ebp - 0x220]
mov word [eax - 2], si
lea esi, [ecx - 1]
cmp eax, ebx
jbe 0x687cbcbd
lea esi, [esi]
mov byte [eax], 0x22
test esi, esi
jle 0x687cc8bb
mov ebx, 0x2e2e
mov byte [eax + 3], 0x2e
lea edx, [eax + 4]
mov word [eax + 1], bx
lea eax, [ebp - 0x342]
mov byte [edx], 0
mov dword [esp], eax
call fcn.687d8d80
mov edx, eax
mov eax, dword [ebp - 0x3cc]
mov dword [esp + 0x10], edx
mov dword [esp + 0xc], str.:_invalid_format_for_the_GUID_registry_data_member_for_service_provider__s___s_._n
mov dword [esp + 0x14], eax
mov dword [esp + 8], str.DirectPlayEnumerateAW
mov dword [esp + 4], 0x687da03c
mov dword [esp], 1
call fcn.687c3970
jmp 0x687cb890
mov ecx, dword [ebp - 0x3c0]
test ecx, ecx
je 0x687cc1e8
mov dword [esp + 4], 0xffffffff
mov dword [esp], edi
call sub.kernel32.dll_IsBadStringPtrW
mov edx, str._invalid_
sub esp, 8
test eax, eax
jne 0x687cbe8e
movzx edx, word [ebp - 0x216]
test dx, dx
je 0x687cc2b8
lea esi, [esi]
lea esi, [esi]
mov ecx, eax
lea eax, [eax + 1]
cmp word [edi + ecx*2 + 2], 0
jne 0x687cbdc0
mov eax, 0x224c
mov esi, edi
mov word [ebp - 0x342], ax
lea eax, [ebp - 0x340]
jmp 0x687cbe26
cmp dx, 9
je 0x687cbed8
cmp dx, 0xa
jne 0x687cbef6
mov edx, 0x6e5c
add eax, 2
mov word [eax - 2], dx
lea esi, [esi]
nop
lea ebx, [ecx - 1]
test ecx, ecx
jle 0x687cbe60
lea ecx, [ebp - 0x220]
cmp eax, ecx
ja 0x687cbe60
movzx edx, word [esi]
mov ecx, ebx
add esi, 2
cmp dx, 0xd
je 0x687cbec0
jbe 0x687cbde8
cmp dx, 0x22
je 0x687cbf50
cmp dx, 0x5c
jne 0x687cbee9
mov edx, 0x5c5c
add eax, 2
lea ebx, [ecx - 1]
mov word [eax - 2], dx
test ecx, ecx
jg 0x687cbe17
lea esi, [esi]
mov byte [eax], 0x22
test ebx, ebx
jle 0x687cc2d1
mov ebx, 0x2e2e
mov byte [eax + 3], 0x2e
lea edx, [eax + 4]
mov word [eax + 1], bx
lea eax, [ebp - 0x342]
mov byte [edx], 0
mov dword [esp], eax
call fcn.687d8d80
mov edx, eax
mov dword [esp + 0x10], edx
mov dword [esp + 0xc], str._this_time_through_sub_key__s._n
mov dword [esp + 8], str.DirectPlayEnumerateAW
mov dword [esp + 4], 0x687da03c
mov dword [esp], 3
call fcn.687c3970
jmp 0x687cb912
mov ebx, 0x725c
add eax, 2
mov word [eax - 2], bx
jmp 0x687cbe10
mov edx, 0x745c
add eax, 2
mov word [eax - 2], dx
jmp 0x687cbe10
lea ebx, [edx - 0x20]
cmp bx, 0x5e
jbe 0x687cc220
mov ebx, edx
mov byte [eax], 0x5c
add eax, 5
shr bx, 0xc
movzx ebx, bx
movzx ebx, byte [ebx + str.0123456789abcdefIDirectPlayImpl_SetPlayerName]
mov byte [eax - 4], bl
mov ebx, edx
shr bx, 8
and ebx, 0xf
movzx ebx, byte [ebx + str.0123456789abcdefIDirectPlayImpl_SetPlayerName]
mov byte [eax - 3], bl
mov ebx, edx
and edx, 0xf
shr bx, 4
movzx edx, byte [edx + str.0123456789abcdefIDirectPlayImpl_SetPlayerName]
and ebx, 0xf
movzx ebx, byte [ebx + str.0123456789abcdefIDirectPlayImpl_SetPlayerName]
mov byte [eax - 1], dl
mov byte [eax - 2], bl
jmp 0x687cbe10
mov ebx, 0x225c
add eax, 2
mov word [eax - 2], bx
jmp 0x687cbe10
test byte [0x687da03c], 2
je 0x687cb890
mov ecx, dword [ebp - 0x3c0]
test ecx, ecx
je 0x687cc838
mov dword [esp + 4], 0xffffffff
mov dword [esp], edi
call sub.kernel32.dll_IsBadStringPtrW
mov edx, str._invalid_
sub esp, 8
test eax, eax
jne 0x687cc07e
movzx edx, word [ebp - 0x216]
test dx, dx
je 0x687cc9cf
lea esi, [esi]
nop
mov ecx, eax
lea eax, [eax + 1]
cmp word [edi + ecx*2 + 2], 0
jne 0x687cbfb8
mov eax, 0x224c
mov esi, edi
mov word [ebp - 0x342], ax
lea eax, [ebp - 0x340]
jmp 0x687cc016
cmp dx, 9
je 0x687cc618
cmp dx, 0xa
jne 0x687cc5a6
mov edx, 0x6e5c
add eax, 2
mov word [eax - 2], dx
lea ebx, [ecx - 1]
test ecx, ecx
jle 0x687cc050
lea ecx, [ebp - 0x220]
cmp eax, ecx
ja 0x687cc050
movzx edx, word [esi]
mov ecx, ebx
add esi, 2
cmp dx, 0xd
je 0x687cc588
jbe 0x687cbfe0
cmp dx, 0x22
je 0x687cc600
cmp dx, 0x5c
jne 0x687cc599
mov edx, 0x5c5c
add eax, 2
lea ebx, [ecx - 1]
mov word [eax - 2], dx
test ecx, ecx
jg 0x687cc007
lea esi, [esi]
mov byte [eax], 0x22
test ebx, ebx
jle 0x687cc9e8
mov ebx, 0x2e2e
mov byte [eax + 3], 0x2e
lea edx, [eax + 4]
mov word [eax + 1], bx
lea eax, [ebp - 0x342]
mov byte [edx], 0
mov dword [esp], eax
call fcn.687d8d80
mov edx, eax
mov dword [esp + 0x10], edx
mov dword [esp + 0xc], str.:_missing_GUID_registry_data_member_for_service_provider__s._n
mov dword [esp + 8], str.DirectPlayEnumerateAW
mov dword [esp + 4], 0x687da03c
mov dword [esp], 1
call fcn.687c3970
jmp 0x687cb890
mov ebx, dword [ebp - 0x3bc]
mov eax, dword [section..bss]
lea esi, [ebp - 0x39c]
shl ebx, 4
add eax, ebx
mov dword [esp + 4], eax
lea eax, [ebp - 0x390]
mov dword [esp], eax
call sub.ole32.dll_CLSIDFromString
mov ecx, dword [ebp - 0x3c8]
mov dword [ebp - 0x39c], 0
sub esp, 8
test ecx, ecx
mov dword [esp + 0x14], esi
mov dword [esp + 0x10], 0
mov dword [esp + 0xc], 0
mov dword [esp + 8], 0
je 0x687cc310
mov eax, dword [ebp - 0x3a4]
mov dword [esp + 4], str.DescriptionA
mov dword [esp], eax
call sub.advapi32.dll_RegQueryValueExA
sub esp, 0x18
test eax, eax
jne 0x687cc678
mov eax, dword [ebp - 0x39c]
cmp eax, dword [ebp - 0x3e0]
ja 0x687cc858
mov edx, dword fs:[0x18]
mov dword [esp + 8], eax
mov dword [esp + 4], 0
mov eax, dword [edx + 0x30]
mov eax, dword [eax + 0x18]
mov dword [esp], eax
call sub.kernel32.dll_HeapAlloc
sub esp, 0xc
mov dword [ebp - 0x3d0], eax
mov dword [esp + 0x14], esi
mov esi, eax
mov dword [esp + 0x10], eax
mov eax, dword [ebp - 0x3a4]
mov dword [esp + 0xc], 0
mov dword [esp + 8], 0
mov dword [esp + 4], str.DescriptionA
mov dword [esp], eax
call sub.advapi32.dll_RegQueryValueExA
mov eax, dword [ebp - 0x3d8]
add ebx, dword [section..bss]
sub esp, 0x18
mov dword [esp + 0x10], eax
mov eax, dword [ebp - 0x3c8]
mov dword [esp + 0xc], 0
mov dword [esp + 8], 6
mov dword [esp + 4], esi
mov dword [esp], ebx
call eax
sub esp, 0x14
test eax, eax
je 0x687cc3e0
add dword [ebp - 0x3bc], 1
jmp 0x687cb890
movzx eax, di
mov dword [esp], str._04x
mov dword [esp + 4], eax
call fcn.687c3460
mov edx, eax
jmp 0x687cbe8e
mov ebx, 0x725c
add eax, 2
mov word [eax - 2], bx
jmp 0x687cb9e0
mov byte [eax], dl
add eax, 1
jmp 0x687cbe10
mov edx, 0x745c
add eax, 2
mov word [eax - 2], dx
jmp 0x687cb9e0
lea ebx, [edx - 0x20]
cmp bx, 0x5e
jbe 0x687cc300
mov ebx, edx
mov byte [eax], 0x5c
add eax, 5
shr bx, 0xc
movzx ebx, bx
movzx ebx, byte [ebx + str.0123456789abcdefIDirectPlayImpl_SetPlayerName]
mov byte [eax - 4], bl
mov ebx, edx
shr bx, 8
and ebx, 0xf
movzx ebx, byte [ebx + str.0123456789abcdefIDirectPlayImpl_SetPlayerName]
mov byte [eax - 3], bl
mov ebx, edx
and edx, 0xf
shr bx, 4
movzx edx, byte [edx + str.0123456789abcdefIDirectPlayImpl_SetPlayerName]
and ebx, 0xf
movzx ebx, byte [ebx + str.0123456789abcdefIDirectPlayImpl_SetPlayerName]
mov byte [eax - 1], dl
mov byte [eax - 2], bl
jmp 0x687cb9e0
mov ebx, 0x225c
add eax, 2
mov word [eax - 2], bx
jmp 0x687cb9e0
mov edx, 0x224c
mov byte [ebp - 0x340], 0x22
lea eax, [ebp - 0x340]
mov word [ebp - 0x342], dx
lea edx, [eax + 1]
jmp 0x687cbe7b
movzx eax, di
mov dword [esp], str._04x
mov dword [esp + 4], eax
call fcn.687c3460
mov edx, eax
jmp 0x687cba5e
mov byte [eax], dl
add eax, 1
jmp 0x687cb9e0
mov eax, dword [ebp - 0x3a4]
mov dword [esp + 4], str.DescriptionW
mov dword [esp], eax
call sub.advapi32.dll_RegQueryValueExW
sub esp, 0x18
test eax, eax
jne 0x687cc8e8
mov eax, dword [ebp - 0x39c]
cmp eax, dword [ebp - 0x3e8]
ja 0x687cca72
mov edx, dword fs:[0x18]
mov dword [esp + 8], eax
mov dword [esp + 4], 0
mov eax, dword [edx + 0x30]
mov eax, dword [eax + 0x18]
mov dword [esp], eax
call sub.kernel32.dll_HeapAlloc
sub esp, 0xc
mov dword [ebp - 0x3e4], eax
mov dword [esp + 0x14], esi
mov esi, eax
mov dword [esp + 0x10], eax
mov eax, dword [ebp - 0x3a4]
mov dword [esp + 0xc], 0
mov dword [esp + 8], 0
mov dword [esp + 4], str.DescriptionW
mov dword [esp], eax
call sub.advapi32.dll_RegQueryValueExW
mov eax, dword [ebp - 0x3d8]
add ebx, dword [section..bss]
sub esp, 0x18
mov dword [esp + 0x10], eax
mov eax, dword [ebp - 0x3ec]
mov dword [esp + 0xc], 0
mov dword [esp + 8], 6
mov dword [esp + 4], esi
mov dword [esp], ebx
call eax
sub esp, 0x14
test eax, eax
jne 0x687cc1d9
lea esi, [esi]
mov eax, dword [ebp - 0x3d0]
mov dword [esp + 4], 0
mov ebx, dword fs:[0x18]
mov dword [esp + 8], eax
mov eax, dword [ebx + 0x30]
mov eax, dword [eax + 0x18]
mov dword [esp], eax
call sub.kernel32.dll_HeapFree
mov eax, dword [ebp - 0x3e4]
sub esp, 0xc
mov dword [esp + 8], eax
mov dword [esp + 4], 0
mov eax, dword [ebx + 0x30]
mov eax, dword [eax + 0x18]
mov dword [esp], eax
call sub.kernel32.dll_HeapFree
sub esp, 0xc
mov eax, dword [ebp - 0x3d4]
lea esp, [ebp - 0xc]
pop ebx
pop esi
pop edi
pop ebp
ret
mov ebx, 0x745c
add eax, 2
mov word [eax - 2], bx
jmp 0x687cbcb0
mov edx, 0x745c
add eax, 2
mov word [eax - 2], dx
jmp 0x687cbb90
lea esi, [edx - 0x20]
cmp si, 0x5e
jbe 0x687cc7b0
mov esi, edx
mov byte [eax], 0x5c
add eax, 5
shr si, 0xc
movzx esi, si
movzx ebx, byte [esi + str.0123456789abcdefIDirectPlayImpl_SetPlayerName]
mov esi, edx
shr si, 8
and esi, 0xf
mov byte [eax - 4], bl
movzx ebx, byte [esi + str.0123456789abcdefIDirectPlayImpl_SetPlayerName]
mov esi, edx
and edx, 0xf
shr si, 4
movzx edx, byte [edx + str.0123456789abcdefIDirectPlayImpl_SetPlayerName]
and esi, 0xf
mov byte [eax - 3], bl
movzx ebx, byte [esi + str.0123456789abcdefIDirectPlayImpl_SetPlayerName]
mov byte [eax - 1], dl
mov byte [eax - 2], bl
jmp 0x687cbcb0
mov edx, 0x225c
add eax, 2
mov word [eax - 2], dx
jmp 0x687cbcb0
lea ebx, [edx - 0x20]
cmp bx, 0x5e
jbe 0x687cc7c0
mov ebx, edx
mov byte [eax], 0x5c
add eax, 5
shr bx, 0xc
movzx ebx, bx
movzx ebx, byte [ebx + str.0123456789abcdefIDirectPlayImpl_SetPlayerName]
mov byte [eax - 4], bl
mov ebx, edx
shr bx, 8
and ebx, 0xf
movzx ebx, byte [ebx + str.0123456789abcdefIDirectPlayImpl_SetPlayerName]
mov byte [eax - 3], bl
mov ebx, edx
and edx, 0xf
shr bx, 4
movzx edx, byte [edx + str.0123456789abcdefIDirectPlayImpl_SetPlayerName]
and ebx, 0xf
movzx ebx, byte [ebx + str.0123456789abcdefIDirectPlayImpl_SetPlayerName]
mov byte [eax - 1], dl
mov byte [eax - 2], bl
jmp 0x687cbb90
mov ebx, 0x225c
add eax, 2
mov word [eax - 2], bx
jmp 0x687cbb90
mov esi, 0x725c
add eax, 2
mov word [eax - 2], si
jmp 0x687cbcb0
mov ebx, 0x725c
add eax, 2
mov word [eax - 2], bx
jmp 0x687cbb90
mov ebx, 0x725c
add eax, 2
mov word [eax - 2], bx
jmp 0x687cc000
lea ebx, [edx - 0x20]
cmp bx, 0x5e
jbe 0x687cc898
mov ebx, edx
mov byte [eax], 0x5c
add eax, 5
shr bx, 0xc
movzx ebx, bx
movzx ebx, byte [ebx + str.0123456789abcdefIDirectPlayImpl_SetPlayerName]
mov byte [eax - 4], bl
mov ebx, edx
shr bx, 8
and ebx, 0xf
movzx ebx, byte [ebx + str.0123456789abcdefIDirectPlayImpl_SetPlayerName]
mov byte [eax - 3], bl
mov ebx, edx
and edx, 0xf
shr bx, 4
movzx edx, byte [edx + str.0123456789abcdefIDirectPlayImpl_SetPlayerName]
and ebx, 0xf
movzx ebx, byte [ebx + str.0123456789abcdefIDirectPlayImpl_SetPlayerName]
mov byte [eax - 1], dl
mov byte [eax - 2], bl
jmp 0x687cc000
mov ebx, 0x225c
add eax, 2
mov word [eax - 2], bx
jmp 0x687cc000
mov edx, 0x745c
add eax, 2
mov word [eax - 2], dx
jmp 0x687cc000
mov edx, 0x224c
mov byte [ebp - 0x340], 0x22
lea eax, [ebp - 0x340]
mov word [ebp - 0x342], dx
lea edx, [eax + 1]
jmp 0x687cba4b
and edx, 2
jne 0x687cc9f0
mov dword [ebp - 0x3d4], 0x8877005a
mov eax, dword [ebp - 0x3d4]
lea esp, [ebp - 0xc]
pop ebx
pop esi
pop edi
pop ebp
ret
test byte [0x687da03c], 2
je 0x687cb890
mov edx, dword [ebp - 0x3c0]
test edx, edx
je 0x687ccbac
mov dword [esp + 4], 0xffffffff
mov dword [esp], edi
call sub.kernel32.dll_IsBadStringPtrW
mov ecx, eax
sub esp, 8
mov eax, str._invalid_
test ecx, ecx
jne 0x687cca45
movzx eax, word [ebp - 0x216]
test ax, ax
je 0x687ccb8b
lea esi, [esi]
mov edx, ecx
lea ecx, [ecx + 1]
cmp word [edi + edx*2 + 2], 0
jne 0x687cc6c8
mov ecx, 0x224c
mov esi, edi
mov word [ebp - 0x342], cx
lea ecx, [ebp - 0x340]
jmp 0x687cc72e
cmp ax, 9
je 0x687ccab0
cmp ax, 0xa
jne 0x687ccadb
mov eax, 0x6e5c
add ecx, 2
mov word [ecx - 2], ax
lea eax, [ebp - 0x220]
lea ebx, [edx - 1]
cmp ecx, eax
ja 0x687cca19
test edx, edx
jle 0x687cca19
movzx eax, word [esi]
mov edx, ebx
add esi, 2
cmp ax, 0xd
je 0x687ccac1
jbe 0x687cc6f0
cmp ax, 0x22
je 0x687ccb30
cmp ax, 0x5c
jne 0x687ccad2
mov eax, 0x5c5c
add ecx, 2
mov word [ecx - 2], ax
jmp 0x687cc710
movzx eax, di
mov dword [esp], str._04x
mov dword [esp + 4], eax
call fcn.687c3460
mov edx, eax
jmp 0x687cbd3e
lea eax, [ebp - 0x390]
mov dword [esp], str._04x
mov dword [ebp - 0x3c4], eax
movzx eax, word [ebp - 0x3c4]
mov dword [esp + 4], eax
call fcn.687c3460
mov dword [ebp - 0x3cc], eax
jmp 0x687cbc1a
mov byte [eax], dl
add eax, 1
jmp 0x687cbcb0
mov byte [eax], dl
add eax, 1
jmp 0x687cbb90
mov eax, dword [section..bss]
mov dword [esp + 4], 0
mov esi, dword fs:[0x18]
mov dword [esp + 8], eax
mov eax, dword [esi + 0x30]
mov eax, dword [eax + 0x18]
mov dword [esp], eax
call sub.kernel32.dll_HeapFree
mov eax, ebx
sub esp, 0xc
shl eax, 4
mov dword [esp + 8], eax
mov dword [esp + 4], 0
mov eax, dword [esi + 0x30]
mov eax, dword [eax + 0x18]
mov dword [esp], eax
call sub.kernel32.dll_HeapAlloc
mov dword [section..bss], eax
sub esp, 0xc
test eax, eax
je 0x687cccf9
mov dword [0x687ef004], ebx
jmp 0x687cb83e
movzx eax, di
mov dword [esp], str._04x
mov dword [esp + 4], eax
call fcn.687c3460
mov edx, eax
jmp 0x687cc07e
mov ecx, dword [ebp - 0x3d0]
mov dword [esp + 4], 0
mov eax, dword fs:[0x18]
mov dword [esp + 8], ecx
mov eax, dword [eax + 0x30]
mov eax, dword [eax + 0x18]
mov dword [esp], eax
call sub.kernel32.dll_HeapFree
mov eax, dword [ebp - 0x39c]
sub esp, 0xc
mov dword [ebp - 0x3e0], eax
jmp 0x687cc142
mov byte [eax], dl
add eax, 1
jmp 0x687cc000
mov byte [ebp - 0x340], 0x22
mov eax, 0x224c
mov word [ebp - 0x342], ax
lea eax, [ebp - 0x340]
lea edx, [eax + 1]
jmp 0x687cbd2b
mov ebx, 0x224c
mov byte [ebp - 0x340], 0x22
lea eax, [ebp - 0x340]
mov word [ebp - 0x342], bx
lea edx, [eax + 1]
jmp 0x687cbc03
test byte [0x687da03c], 2
je 0x687cb890
mov edx, dword [ebp - 0x3c0]
test edx, edx
je 0x687ccb4b
mov dword [esp + 4], 0xffffffff
mov dword [esp], edi
call sub.kernel32.dll_IsBadStringPtrW
mov ecx, eax
sub esp, 8
mov eax, str._invalid_
test ecx, ecx
jne 0x687ccb5e
movzx eax, word [ebp - 0x216]
test ax, ax
je 0x687ccc9b
lea esi, [esi]
mov edx, ecx
lea ecx, [ecx + 1]
cmp word [edi + edx*2 + 2], 0
jne 0x687cc938
mov ebx, 0x224c
lea ecx, [ebp - 0x340]
mov esi, edi
mov word [ebp - 0x342], bx
jmp 0x687cc99e
cmp ax, 9
je 0x687ccbc4
cmp ax, 0xa
jne 0x687ccbf3
mov eax, 0x6e5c
add ecx, 2
mov word [ecx - 2], ax
lea esi, [esi]
nop
lea eax, [ebp - 0x220]
lea ebx, [edx - 1]
cmp ecx, eax
ja 0x687ccc55
test edx, edx
jle 0x687ccc55
movzx eax, word [esi]
mov edx, ebx
add esi, 2
cmp ax, 0xd
je 0x687ccbd5
jbe 0x687cc95b
cmp ax, 0x22
je 0x687ccc44
cmp ax, 0x5c
jne 0x687ccbe6
mov eax, 0x5c5c
add ecx, 2
mov word [ecx - 2], ax
jmp 0x687cc980
mov byte [ebp - 0x340], 0x22
mov eax, 0x224c
mov word [ebp - 0x342], ax
lea eax, [ebp - 0x340]
lea edx, [eax + 1]
jmp 0x687cc06b
mov dword [esp + 0xc], str.:_could_not_enumerate_on_service_provider_key._n
mov dword [esp + 8], str.DirectPlayEnumerateAW
mov dword [esp + 4], 0x687da03c
mov dword [esp], 1
call fcn.687c3970
jmp 0x687cc659
mov byte [ecx], 0x22
test ebx, ebx
jle 0x687ccba4
mov ebx, 0x2e2e
mov byte [ecx + 3], 0x2e
lea eax, [ecx + 4]
mov word [ecx + 1], bx
mov byte [eax], 0
lea eax, [ebp - 0x342]
mov dword [esp], eax
call fcn.687d8d80
mov dword [esp + 0x10], eax
mov dword [esp + 0xc], str.:_missing_DescriptionA_registry_data_member_for_service_provider__s._n
mov dword [esp + 8], str.DirectPlayEnumerateAW
mov dword [esp + 4], 0x687da03c
mov dword [esp], 1
call fcn.687c3970
jmp 0x687cb890
mov ecx, dword [ebp - 0x3e4]
mov dword [esp + 4], 0
mov eax, dword fs:[0x18]
mov dword [esp + 8], ecx
mov eax, dword [eax + 0x30]
mov eax, dword [eax + 0x18]
mov dword [esp], eax
call sub.kernel32.dll_HeapFree
mov eax, dword [ebp - 0x39c]
sub esp, 0xc
mov dword [ebp - 0x3e8], eax
jmp 0x687cc343
mov eax, 0x745c
add ecx, 2
mov word [ecx - 2], ax
jmp 0x687cc710
mov eax, 0x725c
add ecx, 2
mov word [ecx - 2], ax
jmp 0x687cc710
lea ebx, [eax - 0x20]
cmp bx, 0x5e
jbe 0x687ccb41
mov ebx, eax
mov byte [ecx], 0x5c
add ecx, 5
shr bx, 0xc
movzx ebx, bx
movzx ebx, byte [ebx + str.0123456789abcdefIDirectPlayImpl_SetPlayerName]
mov byte [ecx - 4], bl
mov ebx, eax
shr bx, 8
and ebx, 0xf
movzx ebx, byte [ebx + str.0123456789abcdefIDirectPlayImpl_SetPlayerName]
mov byte [ecx - 3], bl
mov ebx, eax
and eax, 0xf
shr bx, 4
movzx eax, byte [eax + str.0123456789abcdefIDirectPlayImpl_SetPlayerName]
and ebx, 0xf
movzx ebx, byte [ebx + str.0123456789abcdefIDirectPlayImpl_SetPlayerName]
mov byte [ecx - 1], al
mov byte [ecx - 2], bl
jmp 0x687cc710
mov eax, 0x225c
add ecx, 2
mov word [ecx - 2], ax
jmp 0x687cc710
mov byte [ecx], al
add ecx, 1
jmp 0x687cc710
movzx eax, di
mov dword [esp], str._04x
mov dword [esp + 4], eax
call fcn.687c3460
mov dword [esp + 0x10], eax
mov dword [esp + 0xc], str.:_missing_DescriptionW_registry_data_member_for_service_provider__s._n
mov dword [esp + 8], str.DirectPlayEnumerateAW
mov dword [esp + 4], 0x687da03c
mov dword [esp], 1
call fcn.687c3970
jmp 0x687cb890
mov esi, 0x224c
mov byte [ebp - 0x340], 0x22
lea ecx, [ebp - 0x340]
mov word [ebp - 0x342], si
lea eax, [ecx + 1]
jmp 0x687cca34
movzx eax, di
mov dword [esp], str._04x
mov dword [esp + 4], eax
call fcn.687c3460
jmp 0x687cca45
mov eax, 0x745c
add ecx, 2
mov word [ecx - 2], ax
jmp 0x687cc980
mov eax, 0x725c
add ecx, 2
mov word [ecx - 2], ax
jmp 0x687cc980
lea ebx, [eax - 0x20]
cmp bx, 0x5e
jbe 0x687ccc91
mov ebx, eax
mov byte [ecx], 0x5c
add ecx, 5
shr bx, 0xc
movzx ebx, bx
movzx ebx, byte [ebx + str.0123456789abcdefIDirectPlayImpl_SetPlayerName]
mov byte [ecx - 4], bl
mov ebx, eax
shr bx, 8
and ebx, 0xf
movzx ebx, byte [ebx + str.0123456789abcdefIDirectPlayImpl_SetPlayerName]
mov byte [ecx - 3], bl
mov ebx, eax
and eax, 0xf
shr bx, 4
movzx eax, byte [eax + str.0123456789abcdefIDirectPlayImpl_SetPlayerName]
and ebx, 0xf
movzx ebx, byte [ebx + str.0123456789abcdefIDirectPlayImpl_SetPlayerName]
mov byte [ecx - 1], al
mov byte [ecx - 2], bl
jmp 0x687cc980
mov eax, 0x225c
add ecx, 2
mov word [ecx - 2], ax
jmp 0x687cc980
mov byte [ecx], 0x22
test ebx, ebx
jle 0x687cccb4
mov ebx, 0x2e2e
mov byte [ecx + 3], 0x2e
lea eax, [ecx + 4]
mov word [ecx + 1], bx
mov byte [eax], 0
lea eax, [ebp - 0x342]
mov dword [esp], eax
call fcn.687d8d80
jmp 0x687ccb5e
mov dword [ebp - 0x3d4], 0x80070057
jmp 0x687cc42d
mov byte [ecx], al
add ecx, 1
jmp 0x687cc980
mov byte [ebp - 0x340], 0x22
mov ecx, 0x224c
mov word [ebp - 0x342], cx
lea ecx, [ebp - 0x340]
lea eax, [ecx + 1]
jmp 0x687ccc6c
mov dword [ebp - 0x3d4], 0x80004005
test byte [0x687da03c], 2
je 0x687cc42d
mov dword [esp + 0xc], str.:_no_service_provider_key_in_the_registry___check_your_Wine_installation_____n
mov dword [esp + 8], str.DirectPlayEnumerateAW
mov dword [esp + 4], 0x687da03c
mov dword [esp], 1
call fcn.687c3970
jmp 0x687cc42d
mov dword [ebp - 0x3d4], 0x8877005a
test byte [0x687da03c], 2
je 0x687cc42d
mov dword [esp + 0xc], str.:_failed_to_allocate_required_memory._n
mov dword [esp + 8], str.DirectPlayEnumerateAW
mov dword [esp + 4], 0x687da03c
mov dword [esp], 1
call fcn.687c3970
jmp 0x687cc42d