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

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x84
mov eax, dword [0x55800c]
xor eax, ebp
mov dword [ebp - 4], eax
push ebx
push esi
push edi
mov esi, ecx
mov dword [ebp - 0x30], 0
lea eax, [ebp - 0x84]
xor ecx, ecx
push 2
xor edi, edi
mov dword [ebp - 0x4c], ecx
mov dword [esi + 0x8d8], eax
lea eax, [ebp - 0x2c]
push eax
push 0x21
mov dword [ebp - 0x48], edi
mov edi, dword [sym.imp.KERNEL32.dll_GetLocaleInfoA]
push 0x400
mov dword [ebp - 0x44], ecx
mov dword [ebp - 0x40], ecx
call edi
test eax, eax
je 0x4a2fc9
movsx eax, byte [ebp - 0x2c]
sub eax, 0x30
je 0x4a2fc9
sub eax, 1
je 0x4a2fc0
sub eax, 1
jne 0x4a2fc9
mov dword [ebp - 0x38], 2
jmp 0x4a2fd0
mov dword [ebp - 0x38], 1
jmp 0x4a2fd0
mov dword [ebp - 0x38], 0
push 2
lea eax, [ebp - 0x2c]
push eax
push 0x1d
push 0x400
call edi
lea ebx, [esi + 0xc8]
mov edi, 1
push 4
mov edx, ebx
mov dword [ebp - 0x50], edi
mov ecx, esi
call fcn.004a3d50
add esp, 4
test eax, eax
je 0x4a348f
mov dword [ebp - 0x60], 0x64
nop word [eax + eax]
push 4
push 0x558acc
push ebx
call fcn.004d5610
add esp, 0xc
test eax, eax
jne 0x4a34a5
mov ecx, esi
call fcn.0049fb00
test eax, eax
jne 0x4a3494
movzx edx, word [esi + 0x10954]
mov ecx, esi
push 2
call fcn.004a4ab0
add esp, 4
test eax, eax
je 0x4a305c
mov ecx, eax
mov dword [ebp - 0x4c], ecx
cmp eax, 1
jg 0x4a3494
mov eax, dword [esi + 0x10918]
test eax, eax
je 0x4a307b
push eax
call fcn.004dab64
add esp, 4
mov dword [esi + 0x10918], 0
xor eax, eax
movzx ebx, word [esi + 0x10956]
test ebx, ebx
je 0x4a3104
test eax, eax
je 0x4a3093
push eax
call fcn.004dab64
add esp, 4
push ebx
call fcn.004dad8d
add esp, 4
mov dword [esi + 0x10918], eax
test eax, eax
jne 0x4a30ef
push 0x401
push ecx
push ebx
lea edi, [esi + 0x8dc]
push str.warning:__extra_field_too_long___d_.__Ignoring..._n
push edi
call fcn.0041e8c0
add esp, 0x10
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.004a3f60
jmp 0x4a3104
push ebx
mov edx, eax
mov ecx, esi
call fcn.004a3d50
add esp, 4
test eax, eax
je 0x4a348f
cmp dword [esi + 0x74], 0
jne 0x4a3191
mov eax, dword [esi + 0x6c]
test eax, eax
je 0x4a3147
xor ebx, ebx
xor edi, edi
mov dword [ebp - 0x30], ebx
test eax, eax
je 0x4a3194
mov eax, dword [esi + 0xc0]
lea edx, [esi + 0x109f0]
push dword [esi + 0x18]
mov ecx, dword [eax + edi*4]
call fcn.004a2bd0
add esp, 4
cmp eax, 1
je 0x4a3147
inc edi
cmp edi, dword [esi + 0x6c]
jb 0x4a3120
jmp 0x4a3194
xor edi, edi
mov ebx, 1
mov dword [ebp - 0x30], ebx
cmp dword [esi + 0x70], edi
jbe 0x4a3194
nop word [eax + eax]
mov eax, dword [esi + 0xc4]
lea edx, [esi + 0x109f0]
push dword [esi + 0x18]
mov ecx, dword [eax + edi*4]
call fcn.004a2bd0
add esp, 4
cmp eax, 1
je 0x4a318a
inc edi
cmp edi, dword [esi + 0x70]
jb 0x4a3160
mov dword [ebp - 0x30], ebx
jmp 0x4a3194
xor ebx, ebx
mov dword [ebp - 0x30], ebx
jmp 0x4a3194
mov ebx, dword [ebp - 0x30]
cmp dword [esi + 0x74], 0
jne 0x4a31dc
test ebx, ebx
jne 0x4a31dc
movzx eax, word [esi + 0x10958]
test ax, ax
je 0x4a346c
test eax, eax
je 0x4a346c
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.004a3f60
jmp 0x4a346c
mov ecx, dword [esi + 0x10918]
test ecx, ecx
je 0x4a3237
movzx edx, word [esi + 0x10956]
lea eax, [ebp - 0x28]
push ecx
push eax
push dword [esi + 0x10944]
push 1
call fcn.0049fe00
add esp, 0x10
test al, 1
je 0x4a3237
lea eax, [ebp - 0x20]
push eax
call fcn.004e06be
mov ecx, eax
add esp, 4
test ecx, ecx
je 0x4a3237
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 - 0x58], eax
mov eax, dword [ecx + 4]
mov dword [ebp - 0x2c], edx
mov dword [ebp - 0x54], eax
jmp 0x4a3278
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 - 0x2c], 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 - 0x58], edx
mov edx, dword [ebp - 0x2c]
mov dword [ebp - 0x54], ecx
mov eax, dword [ebp - 0x38]
mov dword [ebp - 0x3c], edi
sub eax, 1
je 0x4a3292
sub eax, 1
jne 0x4a3297
mov dword [ebp - 0x3c], ebx
mov ebx, edx
mov dword [ebp - 0x2c], edi
jmp 0x4a3297
mov dword [ebp - 0x3c], ebx
mov ebx, edi
mov eax, dword [esi + 0x1094c]
movzx ecx, word [esi + 0x10940]
test cl, 1
mov dword [ebp - 0x64], ecx
mov ecx, dword [esi + 0x10950]
lea edx, [eax - 0xc]
cmove edx, eax
mov dword [ebp - 0x5c], edx
test ecx, ecx
jne 0x4a333b
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 0x4a32e9
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 [edx + ecx - 1], al
test al, al
jne 0x4a32f5
cmp edi, 8
je 0x4a33b2
cmp edi, 9
je 0x4a33b2
cmp edi, 0xd
jb 0x4a33c3
movzx eax, word [esi + 0x10942]
push eax
lea eax, [ebp - 8]
push str._03u
push eax
call fcn.0041e8c0
add esp, 0xc
jmp 0x4a33c3
cmp ecx, 0x1e8480
jbe 0x4a3372
mov eax, 0x10624dd3
mul ecx
mov eax, edx
xor edx, edx
shr eax, 6
mov edi, eax
mov dword [ebp - 0x34], eax
mov eax, dword [ebp - 0x5c]
shr edi, 1
cmp ecx, eax
jb 0x4a3369
sub edi, eax
lea eax, [ecx + edi]
div dword [ebp - 0x34]
jmp 0x4a339e
sub eax, ecx
add eax, edi
div dword [ebp - 0x34]
jmp 0x4a339c
mov edi, ecx
shr edi, 1
cmp ecx, edx
jb 0x4a338c
mov eax, ecx
sub eax, edx
xor edx, edx
imul eax, eax, 0x3e8
add eax, edi
div ecx
jmp 0x4a339e
mov eax, edx
xor edx, edx
sub eax, ecx
imul eax, eax, 0x3e8
add eax, edi
div ecx
neg eax
test eax, eax
jns 0x4a32bf
mov ecx, 5
sub ecx, eax
jmp 0x4a32c2
mov eax, dword [ebp - 0x64]
shr eax, 1
and eax, 3
mov al, byte [eax + 0x53b51c]
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.004aaf80
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 - 0x54]
mov eax, dword [edi + 0x10]
push dword [ebp - 0x58]
push dword [ebp - 0x2c]
push dword [ebp - 0x3c]
push ebx
push dword [ebp - 0x34]
mov ebx, dword [ebp - 0x5c]
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.004a4ab0
add esp, 4
test eax, eax
je 0x4a345a
mov dword [ebp - 0x4c], eax
cmp eax, 1
jg 0x4a3494
mov eax, dword [ebp - 0x40]
add eax, dword [esi + 0x10950]
add dword [ebp - 0x48], ebx
inc dword [ebp - 0x44]
mov dword [ebp - 0x40], eax
mov edi, dword [ebp - 0x50]
lea ebx, [esi + 0xc8]
inc edi
mov edx, ebx
push 4
mov ecx, esi
mov dword [ebp - 0x50], edi
call fcn.004a3d50
add esp, 4
test eax, eax
jne 0x4a3010
mov eax, 0x33
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.004cbf27
mov esp, ebp
pop ebp
ret
lea eax, [edi - 1]
cmp ax, word [esi + 0x1096e]
jne 0x4a357a
cmp dword [esi + 0x38], 2
jge 0x4a3513
mov edi, dword [ebp - 0x48]
mov edx, edi
mov ecx, dword [ebp - 0x40]
call fcn.004a39c0
test eax, eax
jns 0x4a34d5
mov ecx, 5
sub ecx, eax
jmp 0x4a34d8
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 - 0x40]
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 0x558ac8
push ebx
call fcn.004d5610
add esp, 0xc
test eax, eax
je 0x4a3553
push 0x401
push ecx
lea edi, [esi + 0x8dc]
push str._nnote:__didnt_find_end_of_central_dir_signature_at_end_of_central_dir._n
push edi
call fcn.0041e8c0
add esp, 0xc
push eax
mov eax, dword [esi + 0x10b54]
push edi
push esi
call eax
mov ebx, 1
jmp 0x4a3556
mov ebx, dword [ebp - 0x4c]
cmp dword [ebp - 0x44], 0
jne 0x4a3567
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.004cbf27
mov esp, ebp
pop ebp
ret
push 0x401
push ecx
push dword [ebp - 0x50]
lea edi, [esi + 0x8dc]
push str.error:__expected_central_file_header_signature_not_found__file__lu_._n
push edi
call fcn.0041e8c0
add esp, 0x10
push eax
mov eax, dword [esi + 0x10b54]
push edi
push esi
call eax
push 0x401
push ecx
push 0x53ab48
push edi
call fcn.0041e8c0
add esp, 0xc
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.004cbf27
mov esp, ebp
pop ebp
ret