Function at 0x405570
Capabilities:
Get geographical location

Disassembly:
sub esp, 0x20
push esi
mov esi, dword [esp + 0x28]
mov ecx, dword [esi + 8]
mov eax, dword [esi + 0x2c]
cmp ecx, 0xffffff4f
jne 0x40584c
mov ecx, dword [esi + 0x14]
cmp ecx, 3
ja case.default.0x405596
jmp dword [ecx*4 + 0x405854]
mov eax, dword [eax + 0x10]
mov dword [esi + 0x20], eax
pop esi
add esp, 0x20
ret
mov eax, dword [eax + 0x34]
test al, 1
je 0x4055e7
mov ecx, dword [0x412ff8]
push 0x104
push 0x411d20
push 0x7f0
push ecx
call dword [sym.imp.USER32.dll_LoadStringW]
test eax, eax
je 0x4055db
mov dword [esi + 0x20], 0x411d20
pop esi
add esp, 0x20
ret
mov dword [esi + 0x20], str.Paused
pop esi
add esp, 0x20
ret
test al, 2
je 0x405623
mov edx, dword [0x412ff8]
push 0x104
push 0x411d20
push 0x7f1
push edx
call dword [sym.imp.USER32.dll_LoadStringW]
test eax, eax
je 0x405617
mov dword [esi + 0x20], 0x411d20
pop esi
add esp, 0x20
ret
mov dword [esi + 0x20], str.Error
pop esi
add esp, 0x20
ret
test al, 4
je 0x40565e
mov eax, dword [0x412ff8]
push 0x104
push 0x411d20
push 0x7f2
push eax
call dword [sym.imp.USER32.dll_LoadStringW]
test eax, eax
je 0x405652
mov dword [esi + 0x20], 0x411d20
pop esi
add esp, 0x20
ret
mov dword [esi + 0x20], str.Deleting
pop esi
add esp, 0x20
ret
test al, 8
je 0x40569a
mov ecx, dword [0x412ff8]
push 0x104
push 0x411d20
push 0x7f3
push ecx
call dword [sym.imp.USER32.dll_LoadStringW]
test eax, eax
je 0x40568e
mov dword [esi + 0x20], 0x411d20
pop esi
add esp, 0x20
ret
mov dword [esi + 0x20], str.Spooling
pop esi
add esp, 0x20
ret
test al, 0x10
je 0x4056d6
mov edx, dword [0x412ff8]
push 0x104
push 0x411d20
push 0x7f4
push edx
call dword [sym.imp.USER32.dll_LoadStringW]
test eax, eax
je 0x4056ca
mov dword [esi + 0x20], 0x411d20
pop esi
add esp, 0x20
ret
mov dword [esi + 0x20], str.Printing
pop esi
add esp, 0x20
ret
test al, 0x20
je 0x405711
mov eax, dword [0x412ff8]
push 0x104
push 0x411d20
push 0x7f5
push eax
call dword [sym.imp.USER32.dll_LoadStringW]
test eax, eax
je 0x405705
mov dword [esi + 0x20], 0x411d20
pop esi
add esp, 0x20
ret
mov dword [esi + 0x20], str.Offline
pop esi
add esp, 0x20
ret
test al, 0x40
je 0x40574d
mov ecx, dword [0x412ff8]
push 0x104
push 0x411d20
push 0x7f6
push ecx
call dword [sym.imp.USER32.dll_LoadStringW]
test eax, eax
je 0x405741
mov dword [esi + 0x20], 0x411d20
pop esi
add esp, 0x20
ret
mov dword [esi + 0x20], str.PaperOut
pop esi
add esp, 0x20
ret
test al, 0x80
push 0x104
push 0x411d20
je 0x405789
mov edx, dword [0x412ff8]
push 0x7f7
push edx
call dword [sym.imp.USER32.dll_LoadStringW]
test eax, eax
je 0x40577d
mov dword [esi + 0x20], 0x411d20
pop esi
add esp, 0x20
ret
mov dword [esi + 0x20], str.Printed
pop esi
add esp, 0x20
ret
mov eax, dword [0x412ff8]
push 0x7f8
push eax
call dword [sym.imp.USER32.dll_LoadStringW]
test eax, eax
je 0x4057aa
mov dword [esi + 0x20], 0x411d20
pop esi
add esp, 0x20
ret
mov dword [esi + 0x20], str.Waiting
pop esi
add esp, 0x20
ret
mov ecx, dword [eax + 0xc]
mov dword [esi + 0x20], ecx
pop esi
add esp, 0x20
ret
lea edx, [esp + 4]
add eax, 0x50
push edx
push eax
call dword [sym.imp.KERNEL32.dll_SystemTimeToFileTime]
lea eax, [esp + 0xc]
lea ecx, [esp + 4]
push eax
push ecx
call dword [sym.imp.KERNEL32.dll_FileTimeToLocalFileTime]
lea edx, [esp + 0x14]
lea eax, [esp + 0xc]
push edx
push eax
call dword [sym.imp.KERNEL32.dll_FileTimeToSystemTime]
push 0xa0
push 0x411c80
push 0x1003
push 0x400
call dword [sym.imp.KERNEL32.dll_GetLocaleInfoW]
push 0xa0
push 0x411f28
lea ecx, [esp + 0x1c]
push 0x411c80
push ecx
push 0
push 0
call dword [sym.imp.KERNEL32.dll_GetTimeFormatW]
mov dword [esi + 0x20], 0x411f28
call fcn.00407440
push 0
push 0
call fcn.00406410
add esp, 8
pop esi
add esp, 0x20
ret
mov dword [esi + 0x20], 0x412098
pop esi
add esp, 0x20
ret