Function at 0x48fad0
Capabilities:
Get geographical location
Validate payment card number using luhn algorithm

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x84
mov eax, dword [0x4f5568]
xor eax, ebp
mov dword [ebp - 4], eax
push ebx
push esi
xor eax, eax
mov esi, ecx
push edi
mov dword [ebp - 0x2c], eax
xor edi, edi
mov dword [ebp - 0x44], eax
xor ecx, ecx
mov dword [ebp - 0x38], eax
lea eax, [ebp - 0x84]
push 2
mov dword [esi + 0x8d8], eax
lea eax, [ebp - 0x30]
push eax
push 0x21
mov dword [ebp - 0x4c], edi
mov edi, dword [sym.imp.KERNEL32.dll_GetLocaleInfoA]
push 0x400
mov dword [ebp - 0x50], ecx
call edi
test eax, eax
je 0x48fb43
movsx eax, byte [ebp - 0x30]
sub eax, 0x30
je 0x48fb43
dec eax
je 0x48fb3a
dec eax
jne 0x48fb43
mov dword [ebp - 0x3c], 2
jmp 0x48fb4a
mov dword [ebp - 0x3c], 1
jmp 0x48fb4a
mov dword [ebp - 0x3c], 0
push 2
lea eax, [ebp - 0x30]
push eax
push 0x1d
push 0x400
call edi
lea ebx, [esi + 0xc8]
mov edi, 1
push 4
mov edx, ebx
mov dword [ebp - 0x48], edi
mov ecx, esi
call fcn.0048bf20
add esp, 4
test eax, eax
je 0x490007
mov dword [ebp - 0x60], 0x64
push 4
push 0x4f6a14
push ebx
call fcn.004ad660
add esp, 0xc
test eax, eax
jne 0x49001d
mov ecx, esi
call fcn.0048b570
test eax, eax
jne 0x49000c
movzx edx, word [esi + 0x10954]
mov ecx, esi
push 2
call fcn.0048cc70
add esp, 4
test eax, eax
je 0x48fbce
mov dword [ebp - 0x50], eax
cmp eax, 1
jg 0x49000c
mov eax, dword [esi + 0x10918]
test eax, eax
je 0x48fbeb
push eax
call fcn.004ae337
add esp, 4
mov dword [esi + 0x10918], 0
movzx ebx, word [esi + 0x10956]
test ebx, ebx
je 0x48fc7d
mov eax, dword [esi + 0x10918]
test eax, eax
je 0x48fc0d
push eax
call fcn.004ae337
add esp, 4
push ebx
call fcn.004ae57a
add esp, 4
mov dword [esi + 0x10918], eax
test eax, eax
jne 0x48fc68
push 0x401
push ebx
lea edi, [esi + 0x8dc]
push str.warning:__extra_field_too_long___d_.__Ignoring..._n
push edi
call fcn.004ad5d8
add esp, 0xc
push eax
mov eax, dword [esi + 0x10b54]
push edi
push esi
call eax
mov edx, dword [esi + 0x10910]
mov ecx, esi
sub edx, dword [esi + 0x10914]
sub edx, dword [esi + 0x108e4]
add edx, dword [esi + 0x108e8]
add edx, ebx
call fcn.0048c100
jmp 0x48fc7d
push ebx
mov edx, eax
mov ecx, esi
call fcn.0048bf20
add esp, 4
test eax, eax
je 0x490007
cmp dword [esi + 0x74], 0
jne 0x48fd05
mov eax, dword [esi + 0x6c]
test eax, eax
je 0x48fcc7
xor ebx, ebx
xor edi, edi
mov dword [ebp - 0x2c], ebx
test eax, eax
je 0x48fd08
lea esp, [esp]
mov eax, dword [esi + 0xc0]
lea edx, [esi + 0x109f0]
push dword [esi + 0x18]
mov ecx, dword [eax + edi*4]
call fcn.00498220
add esp, 4
cmp eax, 1
je 0x48fcc7
inc edi
cmp edi, dword [esi + 0x6c]
jb 0x48fca0
jmp 0x48fd08
xor edi, edi
mov dword [ebp - 0x2c], 1
cmp dword [esi + 0x70], edi
jbe 0x48fd05
jmp 0x48fce0
mov eax, dword [esi + 0xc4]
lea edx, [esi + 0x109f0]
push dword [esi + 0x18]
mov ecx, dword [eax + edi*4]
call fcn.00498220
add esp, 4
cmp eax, 1
je 0x48fd50
inc edi
cmp edi, dword [esi + 0x70]
jb 0x48fce0
mov ebx, dword [ebp - 0x2c]
cmp dword [esi + 0x74], 0
jne 0x48fd57
test ebx, ebx
jne 0x48fd57
movzx eax, word [esi + 0x10958]
test ax, ax
je 0x48ffe4
test eax, eax
je 0x48ffe4
mov edx, dword [esi + 0x10910]
mov ecx, esi
sub edx, dword [esi + 0x10914]
sub edx, dword [esi + 0x108e4]
add edx, dword [esi + 0x108e8]
add edx, eax
call fcn.0048c100
jmp 0x48ffe4
xor ebx, ebx
mov dword [ebp - 0x2c], ebx
jmp 0x48fd08
mov ecx, dword [esi + 0x10918]
test ecx, ecx
je 0x48fdb2
movzx edx, word [esi + 0x10956]
lea eax, [ebp - 0x28]
push ecx
push eax
push dword [esi + 0x10944]
push 1
call fcn.0048b9e0
add esp, 0x10
test al, 1
je 0x48fdb2
lea eax, [ebp - 0x20]
push eax
call fcn.004b40e1
mov ecx, eax
add esp, 4
test ecx, ecx
je 0x48fdb2
mov eax, dword [ecx + 0x14]
mov ebx, dword [ecx + 0x10]
cdq
inc ebx
idiv dword [ebp - 0x60]
mov eax, dword [ecx + 8]
mov edi, dword [ecx + 0xc]
mov dword [ebp - 0x5c], eax
mov eax, dword [ecx + 4]
mov dword [ebp - 0x30], edx
mov dword [ebp - 0x58], eax
jmp 0x48fdf3
mov ecx, dword [esi + 0x10944]
xor edx, edx
mov eax, ecx
mov ebx, 0x64
shr eax, 0x19
mov edi, ecx
add eax, 0x50
shr edi, 0x10
div ebx
mov ebx, ecx
and edi, 0x1f
mov dword [ebp - 0x30], edx
mov edx, ecx
shr edx, 0xb
shr ebx, 0x15
and edx, 0x1f
shr ecx, 5
and ebx, 0xf
and ecx, 0x3f
mov dword [ebp - 0x5c], edx
mov edx, dword [ebp - 0x30]
mov dword [ebp - 0x58], ecx
mov eax, dword [ebp - 0x3c]
mov dword [ebp - 0x40], edi
dec eax
je 0x48fe09
dec eax
jne 0x48fe0e
mov dword [ebp - 0x40], ebx
mov ebx, edx
mov dword [ebp - 0x30], edi
jmp 0x48fe0e
mov dword [ebp - 0x40], ebx
mov ebx, edi
movzx eax, word [esi + 0x10940]
mov ecx, dword [esi + 0x1094c]
mov dword [ebp - 0x54], ecx
mov dword [ebp - 0x64], eax
test al, 1
je 0x48fe2b
sub ecx, 0xc
mov dword [ebp - 0x54], ecx
mov edi, dword [esi + 0x10950]
test edi, edi
jne 0x48feb7
xor eax, eax
lea ecx, [eax + 5]
mov eax, 0x66666667
imul ecx
sar edx, 2
mov eax, edx
shr eax, 0x1f
add eax, edx
mov dword [ebp - 0x34], eax
movzx eax, word [esi + 0x10942]
mov edi, eax
cmp eax, 0xd
jb 0x48fe65
mov edi, 0xd
lea ecx, [edi*8 + str.Stored]
lea edx, [ebp - 0xc]
sub edx, ecx
mov al, byte [ecx]
lea ecx, [ecx + 1]
mov byte [ecx + edx - 1], al
test al, al
jne 0x48fe71
cmp edi, 8
je 0x48ff2a
cmp edi, 9
je 0x48ff2a
cmp edi, 0xd
jb 0x48ff3b
movzx eax, word [esi + 0x10942]
push eax
lea eax, [ebp - 8]
push str._03u
push eax
call fcn.004ad5d8
add esp, 0xc
jmp 0x48ff3b
cmp edi, 0x1e8480
jbe 0x48fee8
mov eax, 0x10624dd3
mul edi
mov eax, edx
xor edx, edx
shr eax, 6
mov dword [ebp - 0x34], eax
shr eax, 1
cmp edi, ecx
jb 0x48fedf
sub eax, ecx
add eax, edi
div dword [ebp - 0x34]
jmp 0x48ff16
sub eax, edi
add eax, ecx
div dword [ebp - 0x34]
jmp 0x48ff14
xor edx, edx
cmp edi, ecx
jb 0x48ff02
mov eax, edi
sub eax, ecx
imul ecx, eax, 0x3e8
mov eax, edi
shr eax, 1
add eax, ecx
div edi
jmp 0x48ff16
mov eax, ecx
sub eax, edi
imul ecx, eax, 0x3e8
mov eax, edi
shr eax, 1
add eax, ecx
div edi
neg eax
test eax, eax
jns 0x48fe3b
mov ecx, 5
sub ecx, eax
jmp 0x48fe3e
mov eax, dword [ebp - 0x64]
shr eax, 1
and eax, 3
mov al, byte [eax + 0x4dd018]
mov byte [ebp - 7], al
mov al, byte [esi + 0x10940]
lea edx, [esi + 0x8dc]
mov edi, dword [esi + 0x10b68]
lea ecx, [esi + 0x109f0]
and al, 1
neg al
sbb al, al
and al, 0x25
add al, 0x20
movzx eax, al
push eax
push dword [esi + 0x10948]
lea eax, [ebp - 0xc]
push eax
call fcn.00493320
push eax
mov eax, dword [esi + 0x8d8]
mov eax, dword [eax + 0x18]
and al, 0x10
neg al
sbb al, al
and al, 0x3e
add al, 0x20
movzx eax, al
push eax
push dword [ebp - 0x58]
mov eax, dword [edi + 0x10]
push dword [ebp - 0x5c]
push dword [ebp - 0x30]
push dword [ebp - 0x40]
push ebx
push dword [ebp - 0x34]
mov ebx, dword [ebp - 0x54]
push ebx
push dword [esi + 0x10950]
call eax
movzx edx, word [esi + 0x10958]
xor eax, eax
cmp dword [esi + 0x38], eax
mov ecx, 5
cmove eax, ecx
mov ecx, esi
push eax
call fcn.0048cc70
add esp, 4
test eax, eax
je 0x48ffd2
mov dword [ebp - 0x50], eax
cmp eax, 1
jg 0x49000c
mov eax, dword [ebp - 0x38]
add eax, dword [esi + 0x10950]
add dword [ebp - 0x4c], ebx
inc dword [ebp - 0x44]
mov dword [ebp - 0x38], eax
mov edi, dword [ebp - 0x48]
lea ebx, [esi + 0xc8]
inc edi
mov edx, ebx
push 4
mov ecx, esi
mov dword [ebp - 0x48], edi
call fcn.0048bf20
add esp, 4
test eax, eax
jne 0x48fb84
mov eax, 0x33
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.004aca59
mov esp, ebp
pop ebp
ret
lea eax, [edi - 1]
cmp ax, word [esi + 0x1096e]
jne 0x4900f1
cmp dword [esi + 0x38], 2
jge 0x49008b
mov edi, dword [ebp - 0x4c]
mov edx, edi
mov ecx, dword [ebp - 0x38]
call fcn.00490530
test eax, eax
jns 0x49004d
mov ecx, 5
sub ecx, eax
jmp 0x490050
lea ecx, [eax + 5]
mov eax, 0x66666667
imul ecx
mov eax, dword [esi + 0x10b68]
sar edx, 2
mov ecx, edx
shr ecx, 0x1f
mov dword [eax + 0x18], edi
add ecx, edx
mov eax, dword [esi + 0x10b68]
mov edx, dword [ebp - 0x38]
mov dword [eax + 0x1c], edx
mov eax, dword [esi + 0x10b68]
mov dword [eax + 0x20], ecx
mov eax, dword [esi + 0x10b68]
mov ecx, dword [ebp - 0x44]
mov dword [eax + 0x24], ecx
push 4
push 0x4f6a1c
push ebx
call fcn.004ad660
add esp, 0xc
test eax, eax
je 0x4900ca
push 0x401
lea edi, [esi + 0x8dc]
push str._nnote:__didnt_find_end_of_central_dir_signature_at_end_of_central_dir._n
push edi
call fcn.004ad5d8
add esp, 8
push eax
mov eax, dword [esi + 0x10b54]
push edi
push esi
call eax
mov ebx, 1
jmp 0x4900cd
mov ebx, dword [ebp - 0x50]
cmp dword [ebp - 0x44], 0
jne 0x4900de
cmp ebx, 1
mov ecx, 0xb
cmovle ebx, ecx
mov eax, ebx
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.004aca59
mov esp, ebp
pop ebp
ret
push 0x401
push dword [ebp - 0x48]
lea edi, [esi + 0x8dc]
push str.error:__expected_central_file_header_signature_not_found__file__lu_._n
push edi
call fcn.004ad5d8
add esp, 0xc
push eax
mov eax, dword [esi + 0x10b54]
push edi
push esi
call eax
push 0x401
push str.___please_check_that_you_have_transferred_or_created_the_zipfile_in_the_n__appropriate_BINARY_mode_and_that_you_have_compiled_UnZip_properly__n
push edi
call fcn.004ad5d8
add esp, 8
push eax
mov eax, dword [esi + 0x10b54]
push edi
push esi
call eax
mov ecx, dword [ebp - 4]
mov eax, 3
pop edi
pop esi
xor ecx, ebp
pop ebx
call fcn.004aca59
mov esp, ebp
pop ebp
ret