Function at 0x5159f089
Capabilities:
Get geographical location

Disassembly:
push 0x118
push 0x5159f3c0
call fcn.5159b74c
mov eax, dword [0x515a58f8]
xor eax, dword [ebp + 4]
mov dword [ebp - 0x1c], eax
mov eax, dword [0x515a5cc4]
xor ecx, ecx
cmp eax, ecx
je 0x5159f0cd
mov dword [ebp - 4], ecx
push dword [ebp + 0xc]
push dword [ebp + 8]
call eax
pop ecx
pop ecx
or dword [ebp - 4], 0xffffffff
jmp 0x5159f1cb
mov eax, dword [ebp + 8]
dec eax
je 0x5159f0e6
mov edi, 0x5159f39c
mov dword [ebp - 0x20], 0x5159f2e8
mov esi, 0xd4
jmp 0x5159f0f7
mov edi, 0x5159f2c8
mov dword [ebp - 0x20], 0x5159f228
mov esi, 0xb9
mov byte [ebp - 0x24], cl
push 0x104
lea eax, [ebp - 0x128]
push eax
push ecx
call dword [sym.imp.KERNEL32.dll_GetModuleFileNameA]
test eax, eax
jne 0x5159f124
push 0x5159f204
lea eax, [ebp - 0x128]
push eax
call fcn.5159bf7c
pop ecx
pop ecx
lea ebx, [ebp - 0x128]
lea eax, [ebp - 0x128]
push eax
call fcn.5159beaf
pop ecx
add eax, 0xb
cmp eax, 0x3c
jbe 0x5159f168
lea eax, [ebp - 0x128]
push eax
call fcn.5159beaf
mov ebx, eax
lea eax, [ebp - 0x128]
sub eax, 0x31
add ebx, eax
push 3
push 0x5159f200
push ebx
call fcn.5159ce10
add esp, 0x10
push ebx
call fcn.5159beaf
pop ecx
lea eax, [eax + esi + 0xc]
add eax, 3
and eax, 0xfffffffc
call fcn.5159c15c
mov dword [ebp - 0x18], esp
mov esi, esp
push edi
push esi
call fcn.5159bf7c
mov edi, 0x5159f1fc
push edi
push esi
call fcn.5159ca02
push 0x5159f21c
push esi
call fcn.5159ca02
push ebx
push esi
call fcn.5159ca02
push edi
push esi
call fcn.5159ca02
push dword [ebp - 0x20]
push esi
call fcn.5159ca02
push 0x12010
push 0x5159f1d4
push esi
call fcn.5159ed64
add esp, 0x3c
push 3
call fcn.5159e1d8
nop
nop
dec ebp
imul esp, dword [ebx + 0x72], 0x666f736f
je 0x5159f1fe
push esi
imul esi, dword [ebx + 0x75], 0x43206c61
sub ebp, dword [ebx]
and byte [edx + 0x75], dl
outsb dx, byte [esi]
je 0x5159f257
insd dword es:[edi], dx
and byte gs:[ecx + ebp*2 + 0x62], cl
jb 0x5159f257
jb 0x5159f271
add byte [eax + 0xa0a9090], dl
add byte [eax + 0x2e2e2e], dl
cmp al, 0x70
jb 0x5159f277
jb 0x5159f26c
insd dword es:[edi], dx
and byte [esi + 0x61], ch
insd dword es:[edi], dx
and byte gs:[ebp + 0x6e], dh
imul ebp, dword [esi + 0x6f], 0x77
outsb dx, byte [esi]
add byte ds:[eax + 0x676f7250], dl
jb 0x5159f283
insd dword es:[edi], dx
cmp ah, byte [eax]
add byte [eax + 0x62204190], dl
jne 0x5159f293
jb 0x5159f251
outsd dx, dword [esi]
jbe 0x5159f299
jb 0x5159f2a8
jne 0x5159f2a6
and byte [eax + 0x61], ch
jae 0x5159f25d
bound esp, qword [ebp + 0x65]
outsb dx, byte [esi]
and byte [ebp + 0x74], ah
arpl word gs:[ebp + 0x64], si
and byte [edi + 0x68], dh
imul esp, dword [ebx + 0x68], 0x73616820
and byte [ebx + 0x6f], ah
push 0x63207361
outsd dx, dword [esi]
jb 0x5159f2cb
jne 0x5159f2cb
je 0x5159f2c2
and byte fs:[eax + ebp*2 + 0x65], dh
and byte [eax + 0x72], dh
outsd dx, dword [esi]
jb 0x5159f2ca
insd dword es:[edi], dx
daa
jae 0x5159f277
or ch, byte [ecx + 0x6e]
je 0x5159f2d6
imul ebp, dword [esi + 0x74], 0x616e7265
jb 0x5159f2e1
popal
insb byte es:[edi], dx
and byte [ebx + 0x74], dh
popal
je 0x5159f2da
je 0x5159f2e0
and byte cs:[eax], ah
push esp
push 0x72702065
outsd dx, dword [esi]
jb 0x5159f2f4
jb 0x5159f2e9
insd dword es:[edi], dx
and byte [ebx + 0x61], ah
outsb dx, byte [esi]
outsb dx, byte [esi]
outsd dx, dword [esi]
je 0x5159f2b1
jae 0x5159f2f4
insb byte es:[edi], dx
jns 0x5159f2b8
arpl word [edi + 0x6e], bp
outsd dx, dword [esi]
outsb dx, byte [esi]
je 0x5159f306
outsb dx, byte [esi]
jne 0x5159f305
and byte [ebp + 0x78], ah
arpl word gs:[ebp + 0x74], si
imul ebp, dword [edi + 0x6e], 0x646e6120
and byte [ebp + 0x75], ch
je 0x5159f311
outsd dx, dword [esi]
outsb dx, byte [esi]
and byte [ecx + 0x6e], ah
and byte fs:[ebp + 0x75], ch
jae 0x5159f327
or ch, byte [esi + 0x6f]
ja 0x5159f2d8
bound esp, qword [ebp + 0x20]
je 0x5159f322
jb 0x5159f32c
imul ebp, dword [esi + 0x61], 0x2e646574
or al, byte [eax]
je 0x5159f329
or al, byte cs:[eax]
inc edx
jne 0x5159f331
jb 0x5159f2ef
jb 0x5159f2ef
outsd dx, dword [esi]
jbe 0x5159f337
jb 0x5159f346
jne 0x5159f344
and byte [ebp + 0x74], ah
je 0x5159f340
arpl word gs:[ebp + 0x64], si
arpl word [ebp + 0x64], si
and dword [eax], eax
add byte [eax - 0x6f6f6f70], dl
nop
nop
nop
nop
nop
nop
nop
inc ecx
and byte [ebx + 0x65], dh
arpl word [ebp + 0x72], si
imul esi, dword [ecx + edi*2 + 0x20], 0x6f727265
jb 0x5159f368
outsd dx, dword [esi]
jb 0x5159f319
outsd dx, dword [esi]
and byte [ebp + 0x6e], dh
imul ebp, dword [esi + 0x6f], 0x77
outsb dx, byte [esi]
and byte [ebx + 0x61], ah
popal
jne 0x5159f37b
and byte gs:[eax + 0x61], ch
jae 0x5159f32e
bound esp, qword [ebp + 0x65]
outsb dx, byte [esi]
and byte [ebp + 0x74], ah
arpl word gs:[ebp + 0x64], si
and byte [edi + 0x68], dh
and byte fs:[edi + 0x68], dh
imul esp, dword [ebx + 0x68], 0x73616820
or ah, byte [ebx + 0x6f]
push 0x630a7361
outsd dx, dword [esi]
jb 0x5159f39c
jb 0x5159f3a0
jne 0x5159f39c
jo 0x5159f3a1
je 0x5159f393
and byte fs:[eax + ebp*2 + 0x65], dh
and byte fs:[eax + ebp*2 + 0x65], dh
push 0x72702065
and byte [eax + 0x72], dh
outsd dx, dword [esi]
jb 0x5159f39b
insd dword es:[edi], dx
daa
jae 0x5159f35e
imul ebp, dword [esi + 0x74], 0x616e7265
je 0x5159f3a7
jb 0x5159f3b2
popal
insb byte es:[edi], dx
and byte [ebx + 0x74], dh
popal
je 0x5159f3b1
and byte cs:[eax], ah
push esp
push 0x72702065
outsd dx, dword [esi]
jb 0x5159f3ba
insd dword es:[edi], dx
and byte [ebx + 0x61], ah
outsb dx, byte [esi]
outsb dx, byte [esi]
outsd dx, dword [esi]
je 0x5159f382
jae 0x5159f3c5
insb byte es:[edi], dx
jns 0x5159f373
or ah, byte [ebx + 0x6f]
outsb dx, byte [esi]
arpl word [edi + 0x6e], bp
je 0x5159f3d7
outsb dx, byte [esi]
jne 0x5159f3d6
and byte [ebp + 0x78], ah
arpl word gs:[ebp + 0x74], si
js 0x5159f3da
arpl word [ebp + 0x74], si
imul ebp, dword [edi + 0x6e], 0x646e6120
and byte [ebp + 0x75], ch
and byte [ecx + 0x6e], ah
and byte fs:[ebp + 0x75], ch
jae 0x5159f3f8
and byte [esi + 0x6f], ch
ja 0x5159f3a9
bound esp, qword [ebp + 0x20]
je 0x5159f3f3
jb 0x5159f3fd
imul ebp, dword [esi + 0x61], 0x2e646574
or al, byte [eax]
je 0x5159f3fa
or al, byte cs:[eax]
nop
nop
nop
push ebp
outsb dx, byte [esi]
imul ebp, dword [esi + 0x6f], 0x77
outsb dx, byte [esi]
outsd dx, dword [esi]
ja 0x5159f411
and byte [ebx + 0x65], dh
arpl word [ebp + 0x72], si
jne 0x5159f41b
imul esi, dword [ecx + edi*2 + 0x20], 0x6c696166
jne 0x5159f425
jb 0x5159f419
and byte gs:[ebp + 0x74], ah
and byte [ebp + 0x74], ah
arpl word gs:[ebp + 0x64], si
and dword [eax], eax
je 0x5159f421
and dword fs:[eax], eax
nop
invalid
push ecx
xor eax, dword [ebp + 4]
and byte [ebp - 6], 0
push 6
mov dword [ebp - 4], eax
lea eax, [ebp - 0xc]
push eax
push 0x1004
push dword [ebp + 8]
call dword [sym.imp.KERNEL32.dll_GetLocaleInfoA]
pop eax
push ecx
test eax, eax
jne 0x5159f3fe
add eax, 0xebffc883
or eax, 0xffffffff
jmp 0x5159f408
enter 0xffffffffffffebff, 0xa
or cl, byte [ebp - 0x17af0bbb]
cmp dword [ebx], eax
add byte [eax], al
lea eax, [ebp - 0xc]
push eax
call fcn.5159f740
pop ecx
mov ecx, dword [ebp - 4]
xor ecx, dword [ebp + 4]
call fcn.5159c508
leave
ret
invalid
cmc
pop ecx
push ecx
call fcn.5159b74c
mov eax, dword [0x515a58f8]
push ecx
xor eax, dword [ebp + 4]
mov dword [ebp - 0x1c], eax
xor edi, edi
mov dword [ebp - 0x20], edi
mov dword [ebp - 0x24], edi
mov eax, dword [ebp + 0x14]
mov ebx, dword [eax]
mov dword [ebp - 0x28], ebx
mov dword [ebp - 0x2c], edi
mov eax, dword [ebp + 8]
cmp eax, dword [ebp + 0xc]
je 0x5159f5be
lea ecx, [ebp - 0x40]
push ecx
push eax
mov esi, dword [sym.imp.KERNEL32.dll_GetCPInfo]
call esi
test eax, eax
je 0x5159f47c
cmp dword [ebp - 0x40], 1
jne 0x5159f47c
lea eax, [ebp - 0x40]
push eax
push dword [ebp + 0xc]
call esi
test eax, eax
je 0x5159f47c
cmp dword [ebp - 0x40], 1
jne 0x5159f47c
mov dword [ebp - 0x2c], 1
cmp dword [ebp - 0x2c], edi
je 0x5159f49b
cmp ebx, 0xffffffff
je 0x5159f48a
mov esi, ebx
jmp 0x5159f496
push dword [ebp + 0x10]
call fcn.5159beaf
pop ecx
mov esi, eax
inc esi
mov dword [ebp - 0x44], esi
jmp 0x5159f49e
mov esi, dword [ebp - 0x44]
cmp dword [ebp - 0x2c], edi
jne 0x5159f4bd
push edi
push edi
push ebx
push dword [ebp + 0x10]
push 1
push dword [ebp + 8]
call dword [sym.imp.KERNEL32.dll_MultiByteToWideChar]
mov esi, eax
mov dword [ebp - 0x44], esi
cmp esi, edi
je 0x5159f515
mov dword [ebp - 4], edi
lea eax, [esi + esi]
add eax, 3
and eax, 0xfffffffc
call fcn.5159c15c
mov dword [ebp - 0x18], esp
mov ebx, esp
mov dword [ebp - 0x48], ebx
lea eax, [esi + esi]
push eax
push edi
push ebx
call fcn.5159c63c
add esp, 0xc
or dword [ebp - 4], 0xffffffff
jmp 0x5159f501
cmp ebx, edi
jne 0x5159f523
push esi
push 2
call fcn.5159f6c5
pop ecx
pop ecx
mov ebx, eax
cmp ebx, edi
jne 0x5159f51c
xor eax, eax
jmp 0x5159f5d0
mov dword [ebp - 0x24], 1
push esi
push ebx
push dword [ebp - 0x28]
push dword [ebp + 0x10]
push 1
push dword [ebp + 8]
call dword [sym.imp.KERNEL32.dll_MultiByteToWideChar]
test eax, eax
je 0x5159f5c1
cmp dword [ebp + 0x18], edi
je 0x5159f563
push edi
push edi
push dword [ebp + 0x1c]
push dword [ebp + 0x18]
push esi
push ebx
push edi
push dword [ebp + 0xc]
call dword [sym.imp.KERNEL32.dll_WideCharToMultiByte]
test eax, eax
je 0x5159f5c1
mov eax, dword [ebp + 0x18]
mov dword [ebp - 0x20], eax
jmp 0x5159f5c1
cmp dword [ebp - 0x2c], edi
jne 0x5159f57e
push edi
push edi
push edi
push edi
push esi
push ebx
push edi
push dword [ebp + 0xc]
call dword [sym.imp.KERNEL32.dll_WideCharToMultiByte]
mov esi, eax
cmp esi, edi
je 0x5159f5c1
push esi
push 1
call fcn.5159f6c5
pop ecx
pop ecx
mov dword [ebp - 0x20], eax
cmp eax, edi
je 0x5159f5c1
push edi
push edi
push esi
push eax
push esi
push ebx
push edi
push dword [ebp + 0xc]
call dword [sym.imp.KERNEL32.dll_WideCharToMultiByte]
cmp eax, edi
jne 0x5159f5b1
push dword [ebp - 0x20]
call fcn.5159b798
pop ecx
mov dword [ebp - 0x20], edi
jmp 0x5159f5c1
cmp dword [ebp - 0x28], 0xffffffff
je 0x5159f5c1
mov ecx, dword [ebp + 0x14]
mov dword [ecx], eax
jmp 0x5159f5c1
mov ebx, dword [ebp - 0x48]
cmp dword [ebp - 0x24], edi
je 0x5159f5cd
push ebx
call fcn.5159b798
pop ecx
mov eax, dword [ebp - 0x20]
lea esp, [ebp - 0x54]
mov ecx, dword [ebp - 0x1c]
xor ecx, dword [ebp + 4]
call fcn.5159c508
call fcn.5159b787
ret