Function at 0x41faf0
Capabilities:
Get geographical location

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x5a8d96
mov eax, dword fs:[0]
push eax
sub esp, 0x258
push ebx
push esi
push edi
mov eax, dword [0x62c2a0]
xor eax, ebp
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov dword [ebp - 0x10], esp
mov esi, ecx
mov dword [ebp - 0x18], esi
mov dword [ebp - 0x40], 0
call fcn.00464b17
xor edx, edx
mov ecx, eax
test ecx, ecx
setne dl
test edx, edx
jne 0x41fb46
push 0x80004005
call fcn.00403a80
mov eax, dword [ecx]
call dword [eax + 0xc]
add eax, 0x10
mov dword [ebp - 0x1c], eax
mov dword [ebp - 4], 0
call fcn.00464b17
xor ecx, ecx
mov edx, eax
test edx, edx
setne cl
test ecx, ecx
jne 0x41fb74
push 0x80004005
call fcn.00403a80
mov eax, dword [edx]
mov ecx, edx
call dword [eax + 0xc]
add eax, 0x10
mov dword [ebp - 0x24], eax
mov byte [ebp - 4], 1
call fcn.00464b17
xor ecx, ecx
mov edx, eax
test edx, edx
setne cl
test ecx, ecx
jne 0x41fba1
push 0x80004005
call fcn.00403a80
mov eax, dword [edx]
mov ecx, edx
call dword [eax + 0xc]
add eax, 0x10
mov dword [ebp - 0x28], eax
mov byte [ebp - 4], 2
call fcn.00464b17
xor ecx, ecx
mov edx, eax
test edx, edx
setne cl
test ecx, ecx
jne 0x41fbce
push 0x80004005
call fcn.00403a80
mov eax, dword [edx]
mov ecx, edx
call dword [eax + 0xc]
add eax, 0x10
mov dword [ebp - 0x20], eax
mov byte [ebp - 4], 3
call fcn.00464b17
xor ecx, ecx
mov edx, eax
test edx, edx
setne cl
test ecx, ecx
jne 0x41fbfb
push 0x80004005
call fcn.00403a80
mov eax, dword [edx]
mov ecx, edx
call dword [eax + 0xc]
add eax, 0x10
mov dword [ebp - 0x14], eax
mov byte [ebp - 4], 4
call fcn.00464b17
xor ecx, ecx
mov edx, eax
test edx, edx
setne cl
test ecx, ecx
jne 0x41fc28
push 0x80004005
call fcn.00403a80
mov eax, dword [edx]
mov ecx, edx
call dword [eax + 0xc]
lea edi, [eax + 0x10]
mov dword [ebp - 0x34], edi
xor ecx, ecx
mov byte [ebp - 4], 5
mov dword [ebp - 0x38], ecx
call fcn.00464b17
xor ecx, ecx
mov edx, eax
test edx, edx
setne cl
test ecx, ecx
jne 0x41fc5a
push 0x80004005
call fcn.00403a80
mov eax, dword [edx]
mov ecx, edx
call dword [eax + 0xc]
lea ebx, [eax + 0x10]
mov dword [ebp - 0x2c], ebx
lea ecx, [ebp - 0xcc]
mov byte [ebp - 4], 6
call fcn.0045f9b0
push 1
mov ecx, esi
mov byte [ebp - 4], 8
call fcn.0046da26
lea eax, [ebp - 0x1c]
mov ecx, esi
push eax
push 0x43b
call fcn.0046b0de
lea ecx, [ebp - 0x1c]
call fcn.00402cf0
lea ecx, [ebp - 0x1c]
call fcn.00402c70
mov eax, dword [ebp - 0x1c]
cmp dword [eax - 0xc], 0
jne 0x41fd59
lea ecx, [ebp - 0x38]
call fcn.00423aa0
mov byte [ebp - 4], 9
test esi, esi
jne 0x41fcc4
xor ecx, ecx
jmp 0x41fcc7
mov ecx, dword [esi + 0x20]
push 0x30
push dword [eax]
mov edx, str.Please_enter_a_common_name.
call fcn.00422de0
mov byte [ebp - 4], 8
or esi, 0xffffffff
mov edx, dword [ebp - 0x38]
add esp, 8
add edx, 0xfffffff0
mov eax, esi
lea ecx, [edx + 0xc]
lock xadd dword [ecx], eax
dec eax
test eax, eax
jg 0x41fcfb
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov ecx, dword [ebp - 0x18]
push 0x43b
call fcn.004688d7
mov ecx, eax
call fcn.00468b46
mov byte [ebp - 4], 6
mov edx, dword [ebp - 0x54]
test edx, edx
je 0x41fd49
add edx, 0xfffffff4
dec dword [edx + 8]
jne 0x41fd42
mov ecx, dword [edx + 4]
mov eax, edx
add ecx, 0xd
je 0x41fd39
lea esp, [esp]
mov byte [eax], 0
lea eax, [eax + 1]
dec ecx
jne 0x41fd30
push edx
call fcn.00582cf0
add esp, 4
mov dword [ebp - 0x54], 0
lea ecx, [ebp - 0xcc]
call fcn.0045ed60
jmp 0x4204f1
lea eax, [ebp - 0x24]
mov ecx, esi
push eax
push 0x43c
call fcn.0046b0de
lea ecx, [ebp - 0x24]
call fcn.00402cf0
lea ecx, [ebp - 0x24]
call fcn.00402c70
lea eax, [ebp - 0x28]
mov ecx, esi
push eax
push 0x43d
call fcn.0046b0de
lea ecx, [ebp - 0x28]
call fcn.00402cf0
lea ecx, [ebp - 0x28]
call fcn.00402c70
lea eax, [ebp - 0x20]
mov ecx, esi
push eax
push 0x43e
call fcn.0046b0de
lea ecx, [ebp - 0x20]
call fcn.00402cf0
lea ecx, [ebp - 0x20]
call fcn.00402c70
push 0
push 0
push 0x147
push dword [esi + 0xe8]
call dword [sym.imp.USER32.dll_SendMessageA]
test eax, eax
js 0x41fe19
cmp eax, 0x33
jae 0x41fe19
mov edx, dword [eax*8 + 0x5f7774]
test edx, edx
jne 0x41fdf3
xor ecx, ecx
push ecx
push edx
lea ecx, [ebp - 0x14]
call fcn.004034d0
jmp 0x41fece
mov ecx, edx
lea eax, [ecx + 1]
mov dword [ebp - 0x30], eax
jmp 0x41fe00
mov al, byte [ecx]
inc ecx
test al, al
jne 0x41fe00
sub ecx, dword [ebp - 0x30]
push ecx
push edx
lea ecx, [ebp - 0x14]
call fcn.004034d0
jmp 0x41fece
lea eax, [ebp - 0x14]
mov ecx, esi
push eax
push 0x43f
call fcn.0046b0de
lea ecx, [ebp - 0x14]
call fcn.00402cf0
lea ecx, [ebp - 0x14]
call fcn.00402c70
xor esi, esi
jmp 0x41fe40
cmp esi, 0x33
jae 0x41fecb
mov ecx, dword [esi*8 + 0x5f7770]
xor eax, eax
test ecx, ecx
setne al
test eax, eax
jne 0x41fe65
push 0x80004005
call fcn.00403a80
push ecx
push dword [ebp - 0x14]
call fcn.005839b8
add esp, 8
test eax, eax
je 0x41fea4
mov ecx, dword [esi*8 + 0x5f7774]
xor eax, eax
test ecx, ecx
setne al
test eax, eax
jne 0x41fe91
push 0x80004005
call fcn.00403a80
push ecx
push dword [ebp - 0x14]
call fcn.005839b8
add esp, 8
test eax, eax
je 0x41fea4
inc esi
jmp 0x41fe40
mov edx, dword [esi*8 + 0x5f7774]
test edx, edx
jne 0x41feb3
xor ecx, ecx
jmp 0x41fec1
mov ecx, edx
lea esi, [ecx + 1]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x41feb8
sub ecx, esi
push ecx
push edx
lea ecx, [ebp - 0x14]
call fcn.004034d0
mov esi, dword [ebp - 0x18]
push 0
push 0
push 0x147
push dword [esi + 0x1d0]
call dword [sym.imp.USER32.dll_SendMessageA]
test eax, eax
js 0x41ff18
cmp eax, 0xe8
jae 0x41ff18
mov edx, dword [eax*8 + 0x5f7030]
test edx, edx
jne 0x41fefd
xor ecx, ecx
jmp 0x41ff0b
mov ecx, edx
lea edi, [ecx + 1]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x41ff02
sub ecx, edi
push ecx
push edx
lea ecx, [ebp - 0x34]
call fcn.004034d0
mov edi, dword [ebp - 0x34]
cmp dword [edi - 0xc], 0
jne 0x41ffb0
lea ecx, [ebp - 0x30]
call fcn.00423aa0
mov byte [ebp - 4], 0xa
mov edx, str.Please_select_a_valid_country_name.
mov ecx, dword [esi + 0x20]
push 0x30
push dword [eax]
call fcn.00422de0
mov byte [ebp - 4], 8
or esi, 0xffffffff
mov edx, dword [ebp - 0x30]
add esp, 8
add edx, 0xfffffff0
mov eax, esi
lea ecx, [edx + 0xc]
lock xadd dword [ecx], eax
dec eax
test eax, eax
jg 0x41ff65
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov ecx, dword [ebp - 0x18]
push 0x440
call fcn.004688d7
mov ecx, eax
call fcn.00468b46
mov byte [ebp - 4], 6
mov edx, dword [ebp - 0x54]
test edx, edx
je 0x41fd49
add edx, 0xfffffff4
dec dword [edx + 8]
jne 0x41fd42
mov ecx, dword [edx + 4]
mov eax, edx
add ecx, 0xd
je 0x41fd39
mov byte [eax], 0
lea eax, [eax + 1]
dec ecx
jne 0x41ffa2
jmp 0x41fd39
push 0
push 0
push 0x147
push dword [esi + 0x15c]
call dword [sym.imp.USER32.dll_SendMessageA]
cmp eax, 0xffffffff
je 0x41ffe3
push 0
push eax
push 0x150
push dword [esi + 0x15c]
call dword [sym.imp.USER32.dll_SendMessageA]
mov dword [ebp - 0x38], eax
jmp 0x41ffe5
xor eax, eax
lea ecx, [eax - 0x400]
cmp ecx, 0xc00
ja 0x420278
push 0x600b78
lea ecx, [ebp - 0xc8]
call fcn.00438f50
mov ecx, dword [ebp - 0x38]
test eax, eax
jne 0x420021
push 0x600b78
push ecx
lea ecx, [ebp - 0xc8]
call fcn.0043a950
jmp 0x420029
push ecx
mov ecx, eax
call fcn.0043ab70
mov esi, dword [ebp - 0x1c]
cmp dword [esi - 0xc], 0
je 0x420061
push 0x5ffc34
lea ecx, [ebp - 0xc8]
call fcn.00438f50
test eax, eax
jne 0x420059
push 0x5ffc34
push esi
lea ecx, [ebp - 0xc8]
call fcn.0043a810
jmp 0x420061
push esi
mov ecx, eax
call fcn.0043ab00
mov esi, dword [ebp - 0x24]
cmp dword [esi - 0xc], 0
je 0x420099
push 0x5ffc24
lea ecx, [ebp - 0xc8]
call fcn.00438f50
test eax, eax
jne 0x420091
push 0x5ffc24
push esi
lea ecx, [ebp - 0xc8]
call fcn.0043a810
jmp 0x420099
push esi
mov ecx, eax
call fcn.0043ab00
mov esi, dword [ebp - 0x28]
cmp dword [esi - 0xc], 0
je 0x4200d1
push 0x600a60
lea ecx, [ebp - 0xc8]
call fcn.00438f50
test eax, eax
jne 0x4200c9
push 0x600a60
push esi
lea ecx, [ebp - 0xc8]
call fcn.0043a810
jmp 0x4200d1
push esi
mov ecx, eax
call fcn.0043ab00
mov esi, dword [ebp - 0x20]
cmp dword [esi - 0xc], 0
je 0x420109
push 0x600844
lea ecx, [ebp - 0xc8]
call fcn.00438f50
test eax, eax
jne 0x420101
push 0x600844
push esi
lea ecx, [ebp - 0xc8]
call fcn.0043a810
jmp 0x420109
push esi
mov ecx, eax
call fcn.0043ab00
mov esi, dword [ebp - 0x14]
cmp dword [esi - 0xc], 0
je 0x420141
push 0x60084c
lea ecx, [ebp - 0xc8]
call fcn.00438f50
test eax, eax
jne 0x420139
push 0x60084c
push esi
lea ecx, [ebp - 0xc8]
call fcn.0043a810
jmp 0x420141
push esi
mov ecx, eax
call fcn.0043ab00
cmp dword [edi - 0xc], 0
je 0x420176
push 0x6006dc
lea ecx, [ebp - 0xc8]
call fcn.00438f50
test eax, eax
jne 0x42016e
push 0x6006dc
push edi
lea ecx, [ebp - 0xc8]
call fcn.0043a810
jmp 0x420176
push edi
mov ecx, eax
call fcn.0043ab00
mov eax, dword [ebp - 0x18]
cmp dword [eax + 0x29c], 0
jne 0x4201ef
lea ecx, [ebp - 0xcc]
push ecx
mov ecx, eax
call fcn.00420630
push 0x600558
lea ecx, [ebp - 0xc8]
call fcn.00438f50
test eax, eax
jne 0x4201bb
push 0x600558
push 0x5f02f0
lea ecx, [ebp - 0xc8]
call fcn.0043a810
jmp 0x4201c7
push 0x5f02f0
mov ecx, eax
call fcn.0043ab00
lea ecx, [ebp - 0xcc]
call fcn.00462430
test eax, eax
jne 0x42026c
push 0x6257fc
lea eax, [ebp - 0x50]
mov dword [ebp - 0x50], str.The_CSR_could_not_be_created
push eax
call fcn.00586852
push 0x600558
lea ecx, [ebp - 0xc8]
call fcn.00438f50
test eax, eax
jne 0x42021a
push 0x600558
push 0x5f386c
lea ecx, [ebp - 0xc8]
call fcn.0043a810
jmp 0x420226
push 0x5f386c
mov ecx, eax
call fcn.0043ab00
push 0xffffffffffffffff
push dword [0x639bec]
call dword [sym.imp.KERNEL32.dll_WaitForSingleObject]
lea eax, [ebp - 0xcc]
mov ecx, 0x62d998
push eax
call fcn.00464120
push dword [0x639bec]
mov esi, eax
call dword [sym.imp.KERNEL32.dll_ReleaseMutex]
test esi, esi
jne 0x42026c
push 0x6257fc
lea eax, [ebp - 0x4c]
mov dword [ebp - 0x4c], str.The_CSR_could_not_be_created
push eax
call fcn.00586852
mov dword [ebp - 4], 7
jmp 0x42033c
lea ecx, [ebp - 0x3c]
call fcn.00423aa0
mov byte [ebp - 4], 0xb
mov edx, str.Please_select_a_valid_key_size.
mov ecx, dword [esi + 0x20]
push 0x30
push dword [eax]
call fcn.00422de0
mov byte [ebp - 4], 8
or esi, 0xffffffff
mov edx, dword [ebp - 0x3c]
add esp, 8
add edx, 0xfffffff0
mov eax, esi
lea ecx, [edx + 0xc]
lock xadd dword [ecx], eax
dec eax
test eax, eax
jg 0x4202bb
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov ecx, dword [ebp - 0x18]
push 0x441
call fcn.004688d7
mov ecx, eax
call fcn.00468b46
mov byte [ebp - 4], 6
mov edx, dword [ebp - 0x54]
test edx, edx
je 0x41fd49
add edx, 0xfffffff4
dec dword [edx + 8]
jne 0x41fd42
mov ecx, dword [edx + 4]
mov eax, edx
add ecx, 0xd
je 0x41fd39
mov byte [eax], 0
lea eax, [eax + 1]
dec ecx
jne 0x4202f8
jmp 0x41fd39
push dword [ebp - 0x18]
lea ecx, [ebp - 0x264]
call fcn.00420eb0
mov byte [ebp - 4], 0xe
mov ecx, 0x5ef390
mov eax, dword [ebp - 0x54]
test eax, eax
cmovne ecx, eax
push ecx
lea ecx, [ebp - 0x1a8]
call fcn.004035b0
mov eax, dword [ebp - 0x1c]
mov edx, dword [ebp - 0x1a4]
add edx, 0xfffffff0
mov dword [ebp - 0x3c], edx
lea esi, [eax - 0x10]
cmp esi, edx
je 0x42045f
cmp dword [edx + 0xc], 0
lea ecx, [edx + 0xc]
mov dword [ebp - 0x40], ecx
jl 0x420450
mov ecx, dword [esi]
cmp ecx, dword [edx]
jne 0x420450
push esi
call fcn.004033d0
mov edx, dword [ebp - 0x40]
or esi, 0xffffffff
add esp, 4
mov dword [ebp - 0x30], eax
mov ecx, esi
lock xadd dword [edx], ecx
dec ecx
test ecx, ecx
jg 0x4203c6
mov eax, dword [ebp - 0x3c]
push eax
mov ecx, dword [eax]
mov edx, dword [ecx]
call dword [edx + 4]
mov eax, dword [ebp - 0x30]
add eax, 0x10
mov dword [ebp - 0x1a4], eax
jmp 0x420462
push dword [eax - 0xc]
lea ecx, [ebp - 0x1a4]
push eax
call fcn.004034d0
or esi, 0xffffffff
mov ecx, dword [ebp - 0x18]
xor eax, eax
cmp dword [ecx + 0xbc], eax
lea ecx, [ebp - 0x264]
setne al
mov dword [ebp - 0x1a0], eax
call fcn.00466096
mov ecx, dword [ebp - 0x18]
call fcn.00466480
lea ecx, [ebp - 0x264]
mov byte [ebp - 4], 7
call fcn.00421030
jmp 0x4204e2
lea ecx, [ebp - 0xcc]
mov byte [ebp - 4], 6
call fcn.004205e0
add ebx, 0xfffffff0
mov byte [ebp - 4], 5
mov ecx, esi
lea eax, [ebx + 0xc]
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x42050e
mov ecx, dword [ebx]
push ebx
mov eax, dword [ecx]
call dword [eax + 4]
add edi, 0xfffffff0
mov byte [ebp - 4], 4
mov ecx, esi
lea eax, [edi + 0xc]
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x42052b
mov ecx, dword [edi]
push edi
mov eax, dword [ecx]
call dword [eax + 4]
mov byte [ebp - 4], 3
mov ecx, esi
mov edx, dword [ebp - 0x14]
add edx, 0xfffffff0
lea eax, [edx + 0xc]
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x42054b
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov byte [ebp - 4], 2
mov ecx, esi
mov edx, dword [ebp - 0x20]
add edx, 0xfffffff0
lea eax, [edx + 0xc]
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x42056b
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov byte [ebp - 4], 1
mov ecx, esi
mov edx, dword [ebp - 0x28]
add edx, 0xfffffff0
lea eax, [edx + 0xc]
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x42058b
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov byte [ebp - 4], 0
mov ecx, esi
mov edx, dword [ebp - 0x24]
add edx, 0xfffffff0
lea eax, [edx + 0xc]
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x4205ab
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov dword [ebp - 4], 0xffffffff
mov edx, dword [ebp - 0x1c]
add edx, 0xfffffff0
lea eax, [edx + 0xc]
lock xadd dword [eax], esi
dec esi
test esi, esi
jg 0x4205cc
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret