Function at 0x406da0
Capabilities:
Get geographical location

Disassembly:
sub esp, 0x24
push ebx
push esi
mov esi, dword [esp + 0x30]
push edi
mov eax, dword [esi + 8]
mov edi, dword [esi + 0x2c]
cmp eax, 0xffffff4f
jne 0x4071a3
mov eax, dword [esi + 0x14]
cmp eax, 4
ja case.default.0x406dc7
jmp dword [eax*4 + 0x4071ac]
mov eax, dword [edi + 0x10]
mov dword [esi + 0x20], eax
pop edi
pop esi
pop ebx
add esp, 0x24
ret
mov eax, dword [edi + 0x34]
test al, 1
je 0x406e1e
mov ecx, dword [0x41b418]
push 0x104
push 0x419e48
push 0x7f0
push ecx
call dword [sym.imp.USER32.dll_LoadStringW]
test eax, eax
je 0x406e10
mov dword [esi + 0x20], 0x419e48
pop edi
pop esi
pop ebx
add esp, 0x24
ret
mov dword [esi + 0x20], str.Paused
pop edi
pop esi
pop ebx
add esp, 0x24
ret
test al, 2
je 0x406e5e
mov edx, dword [0x41b418]
push 0x104
push 0x419e48
push 0x7f1
push edx
call dword [sym.imp.USER32.dll_LoadStringW]
test eax, eax
je 0x406e50
mov dword [esi + 0x20], 0x419e48
pop edi
pop esi
pop ebx
add esp, 0x24
ret
mov dword [esi + 0x20], str.Error
pop edi
pop esi
pop ebx
add esp, 0x24
ret
test al, 4
je 0x406e9d
mov eax, dword [0x41b418]
push 0x104
push 0x419e48
push 0x7f2
push eax
call dword [sym.imp.USER32.dll_LoadStringW]
test eax, eax
je 0x406e8f
mov dword [esi + 0x20], 0x419e48
pop edi
pop esi
pop ebx
add esp, 0x24
ret
mov dword [esi + 0x20], str.Deleting
pop edi
pop esi
pop ebx
add esp, 0x24
ret
test al, 8
je 0x406edd
mov ecx, dword [0x41b418]
push 0x104
push 0x419e48
push 0x7f3
push ecx
call dword [sym.imp.USER32.dll_LoadStringW]
test eax, eax
je 0x406ecf
mov dword [esi + 0x20], 0x419e48
pop edi
pop esi
pop ebx
add esp, 0x24
ret
mov dword [esi + 0x20], str.Spooling
pop edi
pop esi
pop ebx
add esp, 0x24
ret
test al, 0x10
je 0x406f1d
mov edx, dword [0x41b418]
push 0x104
push 0x419e48
push 0x7f4
push edx
call dword [sym.imp.USER32.dll_LoadStringW]
test eax, eax
je 0x406f0f
mov dword [esi + 0x20], 0x419e48
pop edi
pop esi
pop ebx
add esp, 0x24
ret
mov dword [esi + 0x20], str.Printing
pop edi
pop esi
pop ebx
add esp, 0x24
ret
test al, 0x20
je 0x406f5c
mov eax, dword [0x41b418]
push 0x104
push 0x419e48
push 0x7f5
push eax
call dword [sym.imp.USER32.dll_LoadStringW]
test eax, eax
je 0x406f4e
mov dword [esi + 0x20], 0x419e48
pop edi
pop esi
pop ebx
add esp, 0x24
ret
mov dword [esi + 0x20], str.Offline
pop edi
pop esi
pop ebx
add esp, 0x24
ret
test al, 0x40
je 0x406f9c
mov ecx, dword [0x41b418]
push 0x104
push 0x419e48
push 0x7f6
push ecx
call dword [sym.imp.USER32.dll_LoadStringW]
test eax, eax
je 0x406f8e
mov dword [esi + 0x20], 0x419e48
pop edi
pop esi
pop ebx
add esp, 0x24
ret
mov dword [esi + 0x20], str.PaperOut
pop edi
pop esi
pop ebx
add esp, 0x24
ret
test al, 0x80
push 0x104
push 0x419e48
je 0x406fdc
mov edx, dword [0x41b418]
push 0x7f7
push edx
call dword [sym.imp.USER32.dll_LoadStringW]
test eax, eax
je 0x406fce
mov dword [esi + 0x20], 0x419e48
pop edi
pop esi
pop ebx
add esp, 0x24
ret
mov dword [esi + 0x20], str.Printed
pop edi
pop esi
pop ebx
add esp, 0x24
ret
mov eax, dword [0x41b418]
push 0x7f8
push eax
call dword [sym.imp.USER32.dll_LoadStringW]
test eax, eax
je 0x406fff
mov dword [esi + 0x20], 0x419e48
pop edi
pop esi
pop ebx
add esp, 0x24
ret
mov dword [esi + 0x20], str.Waiting
pop edi
pop esi
pop ebx
add esp, 0x24
ret
mov ecx, dword [edi + 0xc]
mov dword [esi + 0x20], ecx
pop edi
pop esi
pop ebx
add esp, 0x24
ret
mov eax, dword [edi + 0x28]
push 0
test eax, eax
je 0x40704e
push edi
call fcn.004071c0
add esp, 8
push eax
push 0x4174e0
push 0x41a050
call dword [sym.imp.USER32.dll_wsprintfW]
add esp, 0xc
mov dword [esi + 0x20], 0x41a050
pop edi
pop esi
pop ebx
add esp, 0x24
ret
lea edx, [esp + 0x10]
push edx
push 0x41b420
call sub.WINSPOOL.DRV_OpenPrinterW
test eax, eax
jne 0x407086
mov eax, dword [edi + 0x48]
push eax
push 0x4174e0
push 0x41a050
call dword [sym.imp.USER32.dll_wsprintfW]
add esp, 0xc
mov dword [esi + 0x20], 0x41a050
pop edi
pop esi
pop ebx
add esp, 0x24
ret
mov edx, dword [esp + 0xc]
lea ecx, [esp + 0x34]
push ecx
push 0
push 0
push 2
push edx
call sub.WINSPOOL.DRV_GetPrinterW
call dword [sym.imp.KERNEL32.dll_GetLastError]
cmp eax, 0x7a
jne 0x4070fe
mov eax, dword [esp + 0x34]
push eax
push 0x40
call dword [sym.imp.KERNEL32.dll_LocalAlloc]
mov edx, dword [esp + 0x34]
lea ecx, [esp + 0x34]
mov ebx, eax
mov eax, dword [esp + 0xc]
push ecx
push edx
push ebx
push 2
push eax
call sub.WINSPOOL.DRV_GetPrinterW
mov eax, dword [ebx + 0x1c]
test eax, eax
je 0x4070e0
push ebx
push edi
call fcn.004071c0
add esp, 8
push eax
jmp 0x4070e4
mov ecx, dword [edi + 0x48]
push ecx
push 0x4174e0
push 0x41a050
call dword [sym.imp.USER32.dll_wsprintfW]
add esp, 0xc
push ebx
call dword [sym.imp.KERNEL32.dll_LocalFree]
mov edx, dword [esp + 0xc]
push edx
call sub.WINSPOOL.DRV_ClosePrinter
mov dword [esi + 0x20], 0x41a050
pop edi
pop esi
pop ebx
add esp, 0x24
ret
lea eax, [esp + 0x10]
add edi, 0x50
push eax
push edi
call dword [sym.imp.KERNEL32.dll_SystemTimeToFileTime]
lea ecx, [esp + 0x18]
lea edx, [esp + 0x10]
push ecx
push edx
call dword [sym.imp.KERNEL32.dll_FileTimeToLocalFileTime]
lea eax, [esp + 0x20]
lea ecx, [esp + 0x18]
push eax
push ecx
call dword [sym.imp.KERNEL32.dll_FileTimeToSystemTime]
push 0xa0
push 0x419da8
push 0x1003
push 0x400
call dword [sym.imp.KERNEL32.dll_GetLocaleInfoW]
push 0xa0
push 0x41a050
lea edx, [esp + 0x28]
push 0x419da8
push edx
push 0
push 0
call dword [sym.imp.KERNEL32.dll_GetTimeFormatW]
mov dword [esi + 0x20], 0x41a050
call fcn.004090d0
push 0
push 0
call fcn.00407fd0
add esp, 8
pop edi
pop esi
pop ebx
add esp, 0x24
ret
mov dword [esi + 0x20], 0x41a1c0
pop edi
pop esi
pop ebx
add esp, 0x24
ret