Function at 0x6c64db90
Capabilities:
Get geographical location

Disassembly:
push r15
push r14
push r13
push r12
push rbp
push rdi
push rsi
push rbx
sub rsp, 0x5b8
mov qword [rsp + 0x600], rcx
mov rsi, r9
cmp edx, 0x110
je 0x6c64dbe8
cmp edx, 0x111
je 0x6c64e600
cmp edx, 0x4e
je 0x6c64e598
xor eax, eax
add rsp, 0x5b8
pop rbx
pop rsi
pop rdi
pop rbp
pop r12
pop r13
pop r14
pop r15
ret
mov rdi, qword [sym.imp.user32.dll_GetDlgItem]
mov r13, qword [r9]
mov edx, 0xbb9
mov rcx, qword [rsp + 0x600]
mov qword [rsp + 0x78], rdi
call rdi
mov r8d, 0x50
xor edx, edx
mov r15, rax
mov rax, qword gs:[0x30]
mov rax, qword [rax + 0x60]
mov rcx, qword [rax + 0x30]
mov rax, qword [sym.imp.kernel32.dll_HeapAlloc]
mov qword [rsp + 0x68], rax
call rax
mov rbx, rax
test rax, rax
je 0x6c64dbcb
lea r9, [rsi + 8]
mov r8d, 5
mov qword [rax], r9
mov edx, dword [r13 + 0x20]
mov eax, 4
mov r9d, 2
mov ecx, edx
and ecx, 1
sub eax, ecx
mov ecx, edx
shr ecx, 1
and ecx, 1
sub eax, ecx
mov ecx, edx
shr edx, 3
shr ecx, 2
and edx, 1
and ecx, 1
sub eax, ecx
mov ecx, 0x10
sub eax, edx
mov edx, 0x10
mov dword [rbx + 8], eax
mov dword [rsp + 0x20], 0
call qword [sym.imp.comctl32.dll_ImageList_Create]
mov r14, qword [sym.imp.user32.dll_SendMessageW]
mov qword [rbx + 0x10], rax
test rax, rax
je 0x6c64dd08
mov rcx, qword [0x6c663008]
mov edx, 0xc8
call qword [sym.imp.user32.dll_LoadBitmapW]
mov r8d, 0xff00ff
mov rcx, qword [rbx + 0x10]
mov r12, rax
mov rdx, rax
call qword [sym.imp.comctl32.dll_ImageList_AddMasked]
mov rcx, r12
call qword [sym.imp.gdi32.dll_DeleteObject]
mov rcx, qword [rbx + 0x10]
mov edx, 0xffffffff
call qword [sym.imp.comctl32.dll_ImageList_SetBkColor]
mov rsi, qword [rbx + 0x10]
mov edx, 0xbb9
mov rcx, qword [rsp + 0x600]
call rdi
mov r8d, 1
mov edx, 0x1003
mov rcx, rax
mov r9, rsi
call r14
mov rax, qword [r13 + 0x18]
mov rcx, qword [rsp + 0x600]
mov r8, rbx
mov edx, 0x10
mov qword [rbx + 0x18], rax
mov eax, dword [r13 + 0x58]
mov dword [rbx + 0x20], eax
mov rax, qword [r13 + 0x60]
mov qword [rbx + 0x28], rax
mov eax, dword [r13 + 0x68]
mov dword [rbx + 0x30], eax
mov rax, qword [r13 + 0x70]
mov qword [rbx + 0x38], rax
mov rax, qword [r13 + 0x38]
mov qword [rbx + 0x40], rax
mov rax, qword [r13 + 0x40]
mov qword [rbx + 0x48], rax
call qword [sym.imp.user32.dll_SetWindowLongPtrW]
mov r9, qword [r13 + 0x18]
test r9, r9
je 0x6c64dd70
mov rcx, qword [rsp + 0x600]
xor r8d, r8d
mov edx, 0xc
call r14
mov rbx, qword [r13 + 0x28]
test rbx, rbx
je 0x6c64dd9e
mov rcx, qword [rsp + 0x600]
mov edx, 0xbb8
mov rax, qword [rsp + 0x78]
call rax
mov r9, rbx
xor r8d, r8d
mov edx, 0xc
mov rcx, rax
call r14
mov esi, dword [r13 + 0x20]
mov r9d, 0x20
xor r8d, r8d
mov rcx, r15
mov edx, 0x1036
xor edi, edi
call r14
lea rax, [rsp + 0x1b0]
mov dword [rsp + 0x110], 6
mov dword [rsp + 0x118], 0x5a
mov qword [rsp + 0x38], rax
mov qword [rsp + 0x120], rax
test sil, 1
je 0x6c64e880
test sil, 2
je 0x6c64e840
test sil, 4
je 0x6c64e800
test sil, 8
je 0x6c64e7c0
test sil, 0x20
je 0x6c64e780
and esi, 0x10
je 0x6c64e740
mov ebx, dword [r13 + 0x48]
test ebx, ebx
je 0x6c64e25a
mov dword [rsp + 0x4c], 0
nop word [rax + rax]
mov rax, qword [r13 + 0x40]
mov edi, dword [rsp + 0x4c]
xor ebx, ebx
xor r12d, r12d
mov rdx, qword [r13 + 0x50]
mov esi, dword [r13 + 0x20]
mov qword [rsp + 0x58], rax
mov rax, qword [r13 + 0x30]
mov qword [rsp + 0x40], rax
mov eax, edi
add edi, 1
mov rax, qword [rdx + rax*8]
mov dword [rsp + 0x4c], edi
xor edi, edi
mov dword [rsp + 0x88], 0
mov qword [rsp + 0x60], rax
nop word [rax + rax]
mov rdx, r12
mov rcx, qword [rsp + 0x60]
call qword [sym.imp.crypt32.dll_CertEnumCertificatesInStore]
mov r12, rax
test rax, rax
je 0x6c64e230
cmp qword [rsp + 0x40], 0
je 0x6c64debd
mov rcx, rax
mov r8, qword [rsp + 0x58]
mov rax, qword [rsp + 0x40]
lea rdx, [rsp + 0x88]
call rax
test eax, eax
je 0x6c64de80
xor r9d, r9d
xor r8d, r8d
mov edx, 0x1004
mov rcx, r15
mov dword [rsp + 0xb0], 7
call r14
mov rcx, r12
mov dword [rsp + 0xb8], 0
mov dword [rsp + 0xb4], eax
mov dword [rsp + 0xd4], 0
call qword [sym.imp.crypt32.dll_CertDuplicateCertificateContext]
mov r11d, dword [rsp + 0xb4]
mov qword [rsp + 0xd8], rax
test r11d, r11d
jne 0x6c64df2e
movabs rax, 0xffffffff00000002
or dword [rsp + 0xb0], 8
mov qword [rsp + 0xbc], rax
test sil, 1
je 0x6c64e170
test sil, 2
je 0x6c64e1cd
test sil, 4
je 0x6c64e0e8
test sil, 8
je 0x6c64e088
test sil, 0x20
je 0x6c64dfd0
test sil, 0x10
jne 0x6c64de80
mov eax, dword [section..bss]
lea edx, [rax + 1]
mov dword [section..bss], edx
test eax, eax
jne 0x6c64df86
test byte [0x6c653240], 1
jne 0x6c64e570
mov r9d, 0x50
mov r8, qword [rsp + 0x38]
mov edx, 0x578
mov rcx, qword [0x6c663008]
call qword [sym.imp.user32.dll_LoadStringW]
mov eax, dword [rsp + 0xb8]
lea r9, [rsp + 0xb0]
test eax, eax
jne 0x6c64e2b0
xor r8d, r8d
mov edx, 0x104d
mov rcx, r15
call r14
jmp 0x6c64de80
mov r9d, 0x50
mov edx, 0x1f
lea r8, [rsp + 0x110]
mov ecx, 0x800
mov qword [rsp + 0x50], r8
lea rbp, [rsp + 0xa0]
call qword [sym.imp.kernel32.dll_GetLocaleInfoW]
mov rax, qword [r12 + 0x18]
mov rdx, rbp
lea rcx, [rax + 0x48]
call qword [sym.imp.kernel32.dll_FileTimeToSystemTime]
mov r8, qword [rsp + 0x50]
xor edx, edx
mov rax, qword [rsp + 0x38]
mov dword [rsp + 0x28], 0x50
mov ecx, 0x800
mov r9, r8
mov qword [rsp + 0x20], rax
mov r8, rbp
call qword [sym.imp.kernel32.dll_GetDateFormatW]
mov rax, qword [rsp + 0x38]
mov edx, dword [rsp + 0xb8]
lea r9, [rsp + 0xb0]
mov qword [rsp + 0xc8], rax
test edx, edx
jne 0x6c64e4c0
xor r8d, r8d
mov edx, 0x104d
mov rcx, r15
call r14
add dword [rsp + 0xb8], 1
mov dword [rsp + 0xb0], 1
jmp 0x6c64df5c
mov rax, qword [sym.imp.crypt32.dll_CertGetCertificateContextProperty]
xor r8d, r8d
mov edx, 0xb
mov rcx, r12
lea rbp, [rsp + 0x8c]
mov qword [rsp + 0x50], rax
mov r9, rbp
call rax
test eax, eax
je 0x6c64e500
mov eax, dword [rsp + 0x8c]
cmp eax, edi
ja 0x6c64e2d0
test rbx, rbx
jne 0x6c64e325
add dword [rsp + 0xb8], 1
mov dword [rsp + 0xb0], 1
jmp 0x6c64df56
lea rdx, [rsp + 0x98]
mov rcx, r12
call sym.get_cert_usages
mov rax, qword [rsp + 0x98]
test rax, rax
je 0x6c64e155
mov r8d, dword [rsp + 0xb8]
mov qword [rsp + 0xc8], rax
lea r9, [rsp + 0xb0]
test r8d, r8d
jne 0x6c64e4e0
xor r8d, r8d
mov edx, 0x104d
mov rcx, r15
call r14
mov rax, qword gs:[0x30]
mov rax, qword [rax + 0x60]
mov r8, qword [rsp + 0x98]
xor edx, edx
mov rcx, qword [rax + 0x30]
call qword [sym.imp.kernel32.dll_HeapFree]
add dword [rsp + 0xb8], 1
mov dword [rsp + 0xb0], 1
jmp 0x6c64df4c
mov rbp, qword [sym.imp.crypt32.dll_CertGetNameStringW]
xor r9d, r9d
xor r8d, r8d
mov rcx, r12
mov dword [rsp + 0x28], 0
mov edx, 4
mov qword [rsp + 0x20], 0
call rbp
mov dword [rsp + 0x8c], eax
cmp eax, edi
ja 0x6c64e380
test rbx, rbx
jne 0x6c64e3d7
add dword [rsp + 0xb8], 1
mov dword [rsp + 0xb0], 1
test sil, 2
jne 0x6c64df42
mov dword [rsp + 0x28], 0
mov rbp, qword [sym.imp.crypt32.dll_CertGetNameStringW]
xor r9d, r9d
mov rcx, r12
mov qword [rsp + 0x20], 0
mov r8d, 1
mov edx, 4
call rbp
mov dword [rsp + 0x8c], eax
cmp eax, edi
ja 0x6c64e418
test rbx, rbx
jne 0x6c64e46f
add dword [rsp + 0xb8], 1
mov dword [rsp + 0xb0], 1
jmp 0x6c64df42
mov rax, qword gs:[0x30]
mov rax, qword [rax + 0x60]
mov r8, rbx
xor edx, edx
mov rcx, qword [rax + 0x30]
call qword [sym.imp.kernel32.dll_HeapFree]
mov eax, dword [rsp + 0x4c]
cmp dword [r13 + 0x48], eax
ja 0x6c64de38
mov rcx, qword [rsp + 0x600]
mov rsi, qword [rsp + 0x78]
mov edx, 0xbb9
call rsi
xor r9d, r9d
xor r8d, r8d
mov edx, 0x1032
mov rcx, rax
call r14
mov rcx, qword [rsp + 0x600]
mov edx, 0xbba
mov rbx, rax
call rsi
xor edx, edx
cmp ebx, 1
mov rcx, rax
sete dl
call qword [sym.imp.user32.dll_EnableWindow]
jmp 0x6c64dbcb
movsxd r8, dword [rsp + 0xb4]
mov edx, 0x1074
mov rcx, r15
call r14
jmp 0x6c64de80
mov r9, qword gs:[0x30]
mov rax, qword [r9 + 0x60]
mov r8, rbx
mov qword [rsp + 0x70], r9
xor edx, edx
mov rcx, qword [rax + 0x30]
call qword [sym.imp.kernel32.dll_HeapFree]
mov r9, qword [rsp + 0x70]
mov r8d, dword [rsp + 0x8c]
xor edx, edx
mov rax, qword [r9 + 0x60]
add r8, r8
mov rcx, qword [rax + 0x30]
mov rax, qword [rsp + 0x68]
call rax
mov rbx, rax
test rax, rax
je 0x6c64e0cc
mov edi, dword [rsp + 0x8c]
mov r9, rbp
mov rcx, r12
mov rax, qword [rsp + 0x50]
mov r8, rbx
mov edx, 0xb
call rax
mov ecx, dword [rsp + 0xb8]
lea r9, [rsp + 0xb0]
test eax, eax
mov rax, rbx
cmove rax, qword [rsp + 0x90]
mov qword [rsp + 0xc8], rax
test ecx, ecx
jne 0x6c64e550
xor r8d, r8d
mov edx, 0x104d
mov rcx, r15
call r14
jmp 0x6c64e0cc
mov r9, qword gs:[0x30]
mov rax, qword [r9 + 0x60]
mov r8, rbx
mov qword [rsp + 0x50], r9
xor edx, edx
mov rcx, qword [rax + 0x30]
call qword [sym.imp.kernel32.dll_HeapFree]
mov r9, qword [rsp + 0x50]
mov r8d, dword [rsp + 0x8c]
xor edx, edx
mov rax, qword [r9 + 0x60]
add r8, r8
mov rcx, qword [rax + 0x30]
mov rax, qword [rsp + 0x68]
call rax
mov rbx, rax
test rax, rax
je 0x6c64e1b0
mov edi, dword [rsp + 0x8c]
mov eax, edi
xor r9d, r9d
xor r8d, r8d
mov rcx, r12
mov dword [rsp + 0x28], eax
mov qword [rsp + 0x20], rbx
mov edx, 4
call rbp
mov qword [rsp + 0xc8], rbx
xor r8d, r8d
mov rcx, r15
lea r9, [rsp + 0xb0]
mov edx, 0x104d
call r14
jmp 0x6c64e1b0
mov r9, qword gs:[0x30]
mov rax, qword [r9 + 0x60]
mov r8, rbx
mov qword [rsp + 0x50], r9
xor edx, edx
mov rcx, qword [rax + 0x30]
call qword [sym.imp.kernel32.dll_HeapFree]
mov r9, qword [rsp + 0x50]
mov r8d, dword [rsp + 0x8c]
xor edx, edx
mov rax, qword [r9 + 0x60]
add r8, r8
mov rcx, qword [rax + 0x30]
mov rax, qword [rsp + 0x68]
call rax
mov rbx, rax
test rax, rax
je 0x6c64e210
mov edi, dword [rsp + 0x8c]
mov eax, edi
xor r9d, r9d
mov dword [rsp + 0x28], eax
mov r8d, 1
mov rcx, r12
mov qword [rsp + 0x20], rbx
mov edx, 4
call rbp
mov r10d, dword [rsp + 0xb8]
mov qword [rsp + 0xc8], rbx
lea r9, [rsp + 0xb0]
test r10d, r10d
jne 0x6c64e530
xor r8d, r8d
mov edx, 0x104d
mov rcx, r15
call r14
jmp 0x6c64e210
movsxd r8, dword [rsp + 0xb4]
mov edx, 0x1074
mov rcx, r15
call r14
jmp 0x6c64e069
movsxd r8, dword [rsp + 0xb4]
mov edx, 0x1074
mov rcx, r15
call r14
jmp 0x6c64e134
mov rcx, qword [0x6c663008]
xor r9d, r9d
mov edx, 0x447
lea r8, [rsp + 0x90]
call qword [sym.imp.user32.dll_LoadStringW]
mov dword [rsp + 0x8c], eax
jmp 0x6c64e0bb
movsxd r8, dword [rsp + 0xb4]
mov edx, 0x1074
mov rcx, r15
call r14
jmp 0x6c64e210
movsxd r8, dword [rsp + 0xb4]
mov edx, 0x1074
mov rcx, r15
call r14
jmp 0x6c64e0cc
lea r9, str.showing_location_is_not_implemented_n
lea r8, str.add_cert_to_list
xor ecx, ecx
lea rdx, [0x6c653240]
call sym.wine_dbg_log.constprop.0
jmp 0x6c64df86
mov eax, dword [r9 + 0x10]
cmp eax, 0xffffff94
je 0x6c64e6c0
cmp eax, 0xfffffffd
jne 0x6c64dbcb
mov edx, dword [r9 + 0x18]
mov rcx, qword [rsp + 0x600]
call sym.select_cert_get_selected
mov rcx, qword [rsp + 0x600]
mov edx, 0x10
mov r12, rax
call qword [sym.imp.user32.dll_GetWindowLongPtrW]
mov r8, rax
test r12, r12
je 0x6c64dbcb
mov rcx, qword [rsp + 0x600]
mov rdx, r12
call sym.select_cert_view
jmp 0x6c64dbcb
cmp r8, 2
je 0x6c64e8c0
cmp r8, 0xbba
je 0x6c64e730
cmp r8, 1
jne 0x6c64dbcb
mov rcx, qword [rsp + 0x600]
mov edx, 0xffffffff
call sym.select_cert_get_selected
mov rcx, qword [rsp + 0x600]
mov edx, 0x10
mov r12, rax
call qword [sym.imp.user32.dll_GetWindowLongPtrW]
mov rbx, rax
test r12, r12
je 0x6c64e92f
mov rsi, qword [rax]
mov rcx, r12
call qword [sym.imp.crypt32.dll_CertDuplicateCertificateContext]
mov edx, 0xbb9
mov rcx, qword [rsp + 0x600]
mov qword [rsi], rax
call qword [sym.imp.user32.dll_GetDlgItem]
mov rcx, rax
call sym.free_certs
mov rcx, qword [rbx + 0x10]
call qword [sym.imp.comctl32.dll_ImageList_Destroy]
xor edx, edx
mov r8, rbx
mov rax, qword gs:[0x30]
mov rax, qword [rax + 0x60]
mov rcx, qword [rax + 0x30]
call qword [sym.imp.kernel32.dll_HeapFree]
mov rcx, qword [rsp + 0x600]
mov edx, 1
call qword [sym.imp.user32.dll_EndDialog]
jmp 0x6c64dbcb
mov rcx, qword [rsp + 0x600]
mov edx, 0xbb9
call qword [sym.imp.user32.dll_GetDlgItem]
mov rcx, qword [rsp + 0x600]
mov edx, 0x10
mov r12, rax
call qword [sym.imp.user32.dll_GetWindowLongPtrW]
mov r8, rax
mov eax, dword [rsi + 0x1c]
cmp eax, dword [r8 + 8]
je 0x6c64e980
mov qword [rsp + 0x1b0], r12
mov edx, 0x1051
mov rcx, r12
lea r9, [sym.select_cert_sort_by_text]
mov dword [rsp + 0x1b8], eax
lea r8, [rsp + 0x1b0]
call qword [sym.imp.user32.dll_SendMessageW]
jmp 0x6c64dbcb
mov edx, 0xffffffff
jmp 0x6c64e5b2
mov r8, qword [rsp + 0x38]
mov r9d, 0x200
mov edx, 0x515
mov rcx, qword [0x6c663008]
call qword [sym.imp.user32.dll_LoadStringW]
mov r8d, edi
mov edx, 0x1061
mov rcx, r15
lea r9, [rsp + 0x110]
call r14
jmp 0x6c64de1e
lea ebx, [rdi + 1]
mov r8, qword [rsp + 0x38]
mov edx, 0x436
mov rcx, qword [0x6c663008]
mov r9d, 0x200
call qword [sym.imp.user32.dll_LoadStringW]
mov r8d, edi
mov edx, 0x1061
mov rcx, r15
lea r9, [rsp + 0x110]
mov edi, ebx
call r14
jmp 0x6c64de15
lea ebx, [rdi + 1]
mov r8, qword [rsp + 0x38]
mov edx, 0x437
mov rcx, qword [0x6c663008]
mov r9d, 0x200
call qword [sym.imp.user32.dll_LoadStringW]
mov r8d, edi
mov edx, 0x1061
mov rcx, r15
lea r9, [rsp + 0x110]
mov edi, ebx
call r14
jmp 0x6c64de0b
lea ebx, [rdi + 1]
mov r8, qword [rsp + 0x38]
mov edx, 0x514
mov rcx, qword [0x6c663008]
mov r9d, 0x200
call qword [sym.imp.user32.dll_LoadStringW]
mov r8d, edi
mov edx, 0x1061
mov rcx, r15
lea r9, [rsp + 0x110]
mov edi, ebx
call r14
jmp 0x6c64de01
lea ebx, [rdi + 1]
mov r8, qword [rsp + 0x38]
mov edx, 0x435
mov rcx, qword [0x6c663008]
mov r9d, 0x200
call qword [sym.imp.user32.dll_LoadStringW]
mov r8d, edi
mov edx, 0x1061
mov rcx, r15
lea r9, [rsp + 0x110]
mov edi, ebx
call r14
jmp 0x6c64ddf7
mov rcx, qword [0x6c663008]
mov r9d, 0x200
mov r8, rax
mov edx, 0x434
call qword [sym.imp.user32.dll_LoadStringW]
mov edi, 1
xor r8d, r8d
mov rcx, r15
lea r9, [rsp + 0x110]
mov edx, 0x1061
call r14
jmp 0x6c64dded
mov rcx, qword [rsp + 0x600]
mov edx, 0x10
call qword [sym.imp.user32.dll_GetWindowLongPtrW]
mov edx, 0xbb9
mov rcx, qword [rsp + 0x600]
mov rbx, rax
call qword [sym.imp.user32.dll_GetDlgItem]
mov rcx, rax
call sym.free_certs
mov rcx, qword [rbx + 0x10]
call qword [sym.imp.comctl32.dll_ImageList_Destroy]
xor edx, edx
mov r8, rbx
mov rax, qword gs:[0x30]
mov rax, qword [rax + 0x60]
mov rcx, qword [rax + 0x30]
call qword [sym.imp.kernel32.dll_HeapFree]
mov rcx, qword [rsp + 0x600]
mov edx, 2
call qword [sym.imp.user32.dll_EndDialog]
jmp 0x6c64dbcb
lea r12, [rsp + 0x110]
mov rcx, qword [0x6c663008]
mov edx, 0x517
mov rsi, qword [sym.imp.user32.dll_LoadStringW]
mov r8, r12
mov r9d, 0x28
call rsi
mov r8, qword [rbx + 0x18]
test r8, r8
je 0x6c64e99d
mov rcx, qword [rsp + 0x600]
mov r9d, 0x30
mov rdx, r12
call qword [sym.imp.user32.dll_MessageBoxW]
jmp 0x6c64dbcb
lea r9, [sym.cert_mgr_sort_by_date]
xor r8d, r8d
mov edx, 0x1030
mov rcx, r12
call qword [sym.imp.user32.dll_SendMessageW]
jmp 0x6c64dbcb
lea rdi, [rsp + 0x1b0]
mov r9d, 0x28
mov edx, 0x516
mov rcx, qword [0x6c663008]
mov r8, rdi
call rsi
mov r8, qword [rbx + 0x18]
test r8, r8
cmove r8, rdi
jmp 0x6c64e95e