Function at 0xf64917
Capabilities:
Validate payment card number using luhn algorithm

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x24
mov ecx, dword [ebp + 0x10]
push ebx
push esi
push edi
mov edi, dword [ebp + 8]
mov ecx, dword [ecx]
push ecx
push 0xa
lea eax, [edi + 0x89c]
mov dword [ebp - 0x20], ecx
mov dword [ebp - 0x10], eax
lea ebx, [edi + 0x80]
mov edx, dword [ebx + 0x50]
mov esi, edx
pop eax
push eax
push esi
mov dword [ebp - 0x24], edx
mov dword [ebp - 8], esi
call fcn.00f8ff20
mov ecx, eax
add esp, 0xc
test ecx, ecx
je 0xf6528f
mov eax, dword [ebx + 0x50]
mov edx, dword [ebp + 0x10]
sub eax, ecx
dec eax
add dword [edx], eax
lea eax, [ecx + 1]
mov dword [ebx + 0x50], eax
sub eax, esi
push eax
push esi
lea esi, [edi + 0x89c]
push esi
call fcn.00f5391d
add esp, 0xc
test eax, eax
jne 0xf649de
cmp dword [ebx + 0x4c], eax
jne 0xf649e3
push esi
call fcn.00f5395b
pop ecx
push eax
push esi
call fcn.00f53966
mov esi, dword [ebp + 0xc]
pop ecx
push eax
push esi
push edi
call fcn.00f6593a
add esp, 0x10
cmp eax, 2
jne 0xf649e6
push eax
push esi
call fcn.00f5c6c6
cmp byte [edi + 0x6e5], 0
pop ecx
pop ecx
je 0xf6530b
mov eax, dword [ebp + 0x10]
mov byte [ebx + 0xc2], 0
cmp dword [eax], 0
je 0xf6518d
mov dword [ebx + 0x48], 1
xor eax, eax
pop edi
pop esi
pop ebx
leave
ret
mov esi, dword [ebp + 0xc]
lea eax, [edi + 0x89c]
push eax
call fcn.00f53966
mov edx, eax
pop ecx
push 0xa
pop eax
mov cl, byte [edx]
mov dword [ebp - 0xc], edx
cmp cl, al
je 0xf64db9
cmp cl, 0xd
je 0xf64db9
mov ecx, dword [ebx + 0x4c]
mov dword [ebp - 8], 2
lea eax, [ecx + 1]
mov dword [ebx + 0x4c], eax
test ecx, ecx
jne 0xf64d03
mov eax, dword [esi + 0x1e0]
mov eax, dword [eax + 0x44]
test al, 3
je 0xf64c15
mov al, byte [edx]
mov esi, edx
jmp 0xf64a48
cmp al, 0x20
je 0xf64a45
cmp al, 9
jne 0xf64a4c
inc esi
mov al, byte [esi]
test al, al
jne 0xf64a3d
push 5
push str.HTTP_
push esi
call fcn.00fa07f0
add esp, 0xc
test eax, eax
jne 0xf64aef
mov cl, byte [esi + 5]
mov al, cl
cmp al, 0x31
je 0xf64b2f
sub al, 0x32
cmp al, 1
ja 0xf651a4
mov al, byte [esi + 6]
cmp al, 0x20
je 0xf64a86
cmp al, 9
jne 0xf64aef
movsx eax, cl
mov cl, byte [esi + 7]
sub eax, 0x30
imul edx, eax, 0xa
mov al, cl
sub al, 0x30
cmp al, 9
ja 0xf64aef
mov al, byte [esi + 8]
mov byte [ebp - 1], al
sub al, 0x30
cmp al, 9
ja 0xf64aef
mov al, byte [esi + 9]
mov byte [ebp - 2], al
sub al, 0x30
cmp al, 9
ja 0xf64aef
movsx eax, cl
imul ecx, eax, 0xa
movsx eax, byte [ebp - 1]
add ecx, eax
movsx eax, byte [ebp - 2]
imul ecx, ecx, 0xa
add ecx, 0xffffeb30
add ecx, eax
mov dword [ebx + 0x60], ecx
mov al, byte [esi + 0xa]
cmp al, 0x20
je 0xf64bc1
cmp al, 9
je 0xf64bc1
cmp al, 0xa
jl 0xf64aef
cmp al, 0xd
jle 0xf64bc1
lea esi, [edi + 0x89c]
push esi
call fcn.00f5395b
pop ecx
push eax
push esi
call fcn.00f53966
pop ecx
push eax
push edi
call fcn.00f6589a
add esp, 0xc
cmp eax, 1
jne 0xf651e6
mov esi, dword [ebp + 0xc]
push 0xa
pop eax
mov dword [ebx + 0x60], 0xc8
mov byte [esi + 0x44d], al
jmp 0xf64ceb
cmp byte [esi + 6], 0x2e
jne 0xf651d5
mov al, byte [esi + 7]
cmp al, 0x30
je 0xf64b48
cmp al, 0x31
jne 0xf651d5
mov cl, byte [esi + 8]
cmp cl, 0x20
je 0xf64b59
cmp cl, 9
jne 0xf651d5
mov cl, byte [esi + 9]
movsx edx, al
mov al, cl
sub al, 0x30
sub edx, 0x26
cmp al, 9
ja 0xf651d5
mov al, byte [esi + 0xa]
mov byte [ebp - 2], al
sub al, 0x30
cmp al, 9
ja 0xf651d5
mov al, byte [esi + 0xb]
mov byte [ebp - 1], al
sub al, 0x30
cmp al, 9
ja 0xf651d5
movsx eax, cl
imul ecx, eax, 0xa
movsx eax, byte [ebp - 2]
add ecx, eax
movsx eax, byte [ebp - 1]
imul ecx, ecx, 0xa
add ecx, 0xffffeb30
add ecx, eax
mov dword [ebx + 0x60], ecx
mov al, byte [esi + 0xc]
cmp al, 0x20
je 0xf64bc1
cmp al, 9
je 0xf64bc1
sub al, 0xa
cmp al, 3
ja 0xf651d5
cmp ecx, 0x64
jl 0xf651cb
lea eax, [edx - 0xa]
cmp eax, 1
ja 0xf651ae
mov esi, dword [ebp + 0xc]
mov al, dl
mov byte [esi + 0x44d], dl
cmp dword [ebx + 0x7c], 3
jne 0xf64bff
cmp dl, 0x14
je 0xf64bff
push str.Lying_server__not_serving_HTTP_2
push edi
call fcn.00f5bbc5
mov al, byte [esi + 0x44d]
pop ecx
pop ecx
cmp al, 0x14
jae 0xf64ceb
mov eax, dword [esi + 0x420]
or dword [eax], 0xffffffff
jmp 0xf64ceb
test eax, 0x40000
je 0xf651e6
mov al, byte [edx]
mov esi, edx
jmp 0xf64c31
cmp al, 0x20
je 0xf64c2e
cmp al, 9
jne 0xf64c35
inc esi
mov al, byte [esi]
test al, al
jne 0xf64c26
push 5
push str.RTSP_
push esi
call fcn.00fa07f0
add esp, 0xc
test eax, eax
jne 0xf651e6
mov al, byte [esi + 5]
push 9
sub al, 0x30
pop edx
cmp al, dl
ja 0xf651df
cmp byte [esi + 6], 0x2e
jne 0xf651df
mov al, byte [esi + 7]
sub al, 0x30
cmp al, dl
ja 0xf651df
mov al, byte [esi + 8]
cmp al, 0x20
je 0xf64c83
cmp al, dl
jne 0xf651df
mov cl, byte [esi + 9]
mov al, cl
sub al, 0x30
cmp al, dl
ja 0xf651df
mov dh, byte [esi + 0xa]
mov al, dh
sub al, 0x30
cmp al, 9
ja 0xf651df
mov dl, byte [esi + 0xb]
mov al, dl
sub al, 0x30
cmp al, 9
ja 0xf651df
movsx eax, cl
imul ecx, eax, 0xa
movsx eax, dh
add ecx, eax
movsx eax, dl
imul ecx, ecx, 0xa
add ecx, 0xffffeb30
add eax, ecx
mov dword [ebx + 0x60], eax
mov al, byte [esi + 0xc]
cmp al, 0x20
je 0xf64ce1
cmp al, 9
je 0xf64ce1
sub al, 0xa
cmp al, 3
ja 0xf651df
mov esi, dword [ebp + 0xc]
mov byte [esi + 0x44d], 0xb
push esi
push edi
call fcn.00f6556a
pop ecx
pop ecx
test eax, eax
jne 0xf649de
mov dword [ebp - 8], 6
push edi
call fcn.00f660c7
pop ecx
test eax, eax
jne 0xf649de
push dword [ebp - 0xc]
push esi
push edi
call fcn.00f639fe
add esp, 0xc
test eax, eax
jne 0xf649de
mov eax, dword [ebp + 8]
mov edi, dword [ebp - 8]
push dword [ebp - 0x10]
mov esi, dword [ebx + 0x60]
or edi, 1
cmp byte [eax + 0x6c7], 0
cmove edi, dword [ebp - 8]
call fcn.00f5395b
push eax
push dword [ebp - 0xc]
push 1
push dword [ebp + 8]
call fcn.00f5ba8e
push dword [ebp - 0x10]
call fcn.00f5395b
push eax
push dword [ebp - 0xc]
mov ecx, edi
lea eax, [esi - 0x64]
or ecx, 0x10
cmp eax, 0x64
cmovae ecx, edi
mov edi, dword [ebp + 8]
push ecx
push edi
call fcn.00f5bc42
add esp, 0x28
test eax, eax
jne 0xf649de
lea esi, [edi + 0x89c]
push esi
call fcn.00f5395b
add dword [edi + 0xd80], eax
push esi
adc dword [edi + 0xd84], 0
call fcn.00f5395b
add dword [edi + 0xa0], eax
mov esi, dword [ebp + 0xc]
adc dword [edi + 0xa4], 0
pop ecx
pop ecx
jmp 0xf6514f
mov ecx, dword [ebx + 0x60]
lea eax, [ecx - 0x64]
cmp eax, 0x63
ja 0xf64e14
sub ecx, 0x64
je 0xf64df1
sub ecx, 1
je 0xf64dde
and dword [ebx + 0x4c], 0
mov byte [ebx + 0xc2], 1
jmp 0xf64e70
cmp dword [ebx + 0x7c], 2
je 0xf651f2
mov byte [ebx + 0xc2], 0
jmp 0xf64e70
xor eax, eax
mov byte [ebx + 0xc2], 1
mov dword [ebx + 0x4c], eax
cmp dword [ebx + 0x78], eax
jle 0xf64e70
or dword [ebx + 0x64], 2
push eax
push edi
mov dword [ebx + 0x78], eax
call fcn.00f4ea71
pop ecx
pop ecx
jmp 0xf64e70
mov eax, dword [ebx]
xor cl, cl
and eax, dword [ebx + 4]
mov byte [ebx + 0xc2], 0
cmp eax, 0xffffffff
jne 0xf64e76
cmp byte [ebx + 0xc7], cl
jne 0xf64e76
mov al, byte [esi + 0x1c6]
test al, al
jne 0xf64e76
cmp byte [esi + 0x44d], 0xb
jne 0xf64e76
mov eax, dword [esi + 0x1e0]
test dword [eax + 0x44], 0x40000
jne 0xf64e76
cmp byte [edi + 0xd46], 5
je 0xf64e76
push str.no_chunk__no_close__no_size._Assume_close_to_signal_end
push edi
call fcn.00f5bbc5
push 2
push esi
call fcn.00f5c6c6
add esp, 0x10
mov cl, byte [ebx + 0xc2]
test cl, cl
jne 0xf64e89
push edi
call fcn.00f654cb
pop ecx
test eax, eax
jne 0xf649de
mov cl, byte [esi + 0x1c6]
mov al, cl
test cl, cl
je 0xf64ed9
mov edx, dword [edi + 0xe0]
cmp edx, 0x191
jne 0xf64eac
cmp dword [esi + 0x250], 2
je 0xf64ebf
mov al, cl
cmp edx, 0x197
jne 0xf64ed9
cmp dword [esi + 0x254], 2
jne 0xf64ed9
push str.Connection_closure_while_negotiating_auth__HTTP_1.0__
push edi
call fcn.00f5bbc5
pop ecx
mov byte [edi + 0xd4d], 1
mov al, byte [esi + 0x1c6]
pop ecx
test al, al
je 0xf64f17
mov eax, dword [edi + 0xe0]
cmp eax, 0x191
jne 0xf64ef3
cmp dword [esi + 0x2d8], 1
je 0xf64f03
cmp eax, 0x197
jne 0xf64f17
cmp dword [esi + 0x2dc], 1
jne 0xf64f17
push str.Connection_closure_while_negotiating_auth__HTTP_1.0__
push edi
call fcn.00f5bbc5
pop ecx
pop ecx
mov byte [edi + 0xd4d], 1
cmp dword [esi + 0x2d8], 3
jne 0xf64f36
cmp dword [edi + 0xe0], 0x191
je 0xf64f36
mov dword [esi + 0x2d8], 4
cmp dword [esi + 0x2dc], 3
jne 0xf64f55
cmp dword [edi + 0xe0], 0x197
je 0xf64f55
mov dword [esi + 0x2dc], 4
mov eax, dword [ebx + 0x60]
sub eax, 0x64
cmp eax, 0x64
sbb esi, esi
xor eax, eax
and esi, 0x10
cmp byte [edi + 0x6c7], al
setne al
add eax, 2
or esi, eax
lea eax, [edi + 0x89c]
push eax
call fcn.00f5395b
pop ecx
push eax
mov dword [ebp - 0xc], eax
lea eax, [edi + 0x89c]
push eax
call fcn.00f53966
pop ecx
push eax
push esi
push edi
call fcn.00f5bc42
add esp, 0x10
test eax, eax
jne 0xf649de
mov eax, dword [ebp - 0xc]
mov ecx, dword [edi + 0xa0]
cdq
add dword [edi + 0xd80], eax
push edi
adc dword [edi + 0xd84], edx
add ecx, eax
mov eax, dword [edi + 0xa4]
adc eax, edx
mov dword [edi + 0xa0], ecx
mov dword [edi + 0xa4], eax
mov esi, dword [ebx + 0x60]
mov dword [ebp - 0x14], ecx
mov dword [ebp - 0x18], eax
call fcn.00f65cf2
pop ecx
test al, al
jne 0xf65278
lea eax, [esi - 0x64]
cmp eax, 0x63
ja 0xf64ff8
mov eax, dword [ebp - 0x14]
mov ecx, dword [ebp - 0x18]
jmp 0xf65006
xorps xmm0, xmm0
movlpd qword [ebp - 0x1c], xmm0
mov ecx, dword [ebp - 0x18]
mov eax, dword [ebp - 0x1c]
push edi
mov dword [edi + 0xa8], eax
mov dword [edi + 0xac], ecx
call fcn.00f62b6a
pop ecx
test eax, eax
jne 0xf649de
cmp dword [ebx + 0x60], 0x12c
mov esi, dword [ebp + 0xc]
jl 0xf65142
cmp byte [esi + 0x1d0], al
jne 0xf6511f
cmp byte [esi + 0x1c6], al
jne 0xf6511f
cmp byte [edi + 0xd5b], al
jne 0xf65128
mov al, byte [edi + 0xd46]
dec al
cmp al, 3
ja 0xf6511f
push 0
push edi
call fcn.00f4ea71
cmp byte [ebx + 0xc4], 0
pop ecx
pop ecx
jne 0xf6511f
cmp dword [ebx + 0x60], 0x1a1
jne 0xf650be
cmp byte [edi + 0xd4f], 0
je 0xf650be
push str.Got_417_while_waiting_for_a_100
push edi
call fcn.00f5bbc5
push dword [edi + 0xca4]
mov byte [edi + 0xd50], 1
call dword [0x100c09c]
push ebx
push edi
mov dword [edi + 0x118], eax
call fcn.00f66e9a
add esp, 0x14
jmp 0xf6511f
cmp byte [edi + 0x6c3], 0
je 0xf650e4
push str.HTTP_error_before_end_of_send__keep_sending
push edi
call fcn.00f5bbc5
cmp dword [ebx + 0x78], 0
pop ecx
pop ecx
jle 0xf6511f
and dword [ebx + 0x78], 0
or dword [ebx + 0x64], 2
jmp 0xf6511f
push str.HTTP_error_before_end_of_send__stop_sending
push edi
call fcn.00f5bbc5
push 2
push esi
call fcn.00f5c6c6
push ebx
push edi
call fcn.00f66e9a
add esp, 0x18
test eax, eax
jne 0xf649de
mov byte [ebx + 0xc4], 1
cmp byte [edi + 0xd4f], al
je 0xf6511f
mov dword [ebx + 0x78], 3
cmp byte [edi + 0xd5b], 0
je 0xf65142
cmp dword [esi + 0x1fc], 0xffffffff
je 0xf65142
push str.Keep_sending_data_to_get_tossed_away
push edi
call fcn.00f5bbc5
or dword [ebx + 0x64], 2
pop ecx
pop ecx
cmp byte [ebx + 0xc2], 0
je 0xf65214
lea eax, [edi + 0x89c]
push eax
call fcn.00f53970
mov eax, dword [ebx + 0x50]
pop ecx
mov dword [ebp - 8], eax
cmp byte [eax], 0
je 0xf649dc
mov ecx, dword [ebp + 0x10]
push dword [ecx]
push 0xa
push eax
call fcn.00f8ff20
mov ecx, eax
add esp, 0xc
test ecx, ecx
je 0xf65292
mov esi, dword [ebp - 8]
jmp 0xf6495d
mov ecx, dword [ebp - 0x20]
mov dword [ebx + 0x48], 2
mov dword [eax], ecx
mov eax, dword [ebp - 0x24]
mov dword [ebx + 0x50], eax
jmp 0xf649dc
push str.Unsupported_HTTP_version_in_response
jmp 0xf65310
push 0xa
pop ecx
mov eax, edx
cdq
idiv ecx
push edx
push eax
push str.Unsupported_HTTP_version___u._d__in_response
push edi
call fcn.00f5bb15
add esp, 0x10
jmp 0xf65318
push str.Unsupported_response_code_in_HTTP_response
jmp 0xf65310
push str.Unsupported_HTTP_1_subversion_in_response
jmp 0xf65310
push 8
jmp 0xf65289
mov byte [ebx + 0xc2], 0
jmp 0xf649dc
push str.Received_101__Switching_to_HTTP_2
push edi
call fcn.00f5bbc5
and dword [ebx + 0x4c], 0
mov dword [ebx + 0x7c], 3
mov byte [ebx + 0xc2], 1
jmp 0xf65316
cmp byte [edi + 0x14c], 0
mov ecx, dword [ebp + 0x14]
jne 0xf65245
mov eax, dword [esi + 0x1e0]
test dword [eax + 0x44], 0x40000
je 0xf65248
cmp dword [edi + 0x658], 2
jne 0xf65248
cmp dword [ebx + 4], 0xffffffff
jg 0xf65248
jl 0xf65245
cmp dword [ebx], 0xffffffff
ja 0xf65248
mov byte [ecx], 1
cmp dword [ebx + 8], 0
jne 0xf65259
cmp dword [ebx + 0xc], 0
jne 0xf65259
mov byte [ecx], 1
jmp 0xf6525e
cmp byte [ecx], 0
je 0xf65262
and dword [ebx + 0x64], 0xfffffffe
push dword [ebp - 0xc]
push dword [ebp - 8]
push 1
push edi
call fcn.00f5ba8e
add esp, 0x10
jmp 0xf649dc
push esi
push str.The_requested_URL_returned_error:__d
push edi
call fcn.00f5bb15
add esp, 0xc
push 0x16
pop eax
jmp 0xf649de
mov esi, dword [ebp + 0xc]
mov eax, dword [ebp + 0x10]
push dword [eax]
lea eax, [edi + 0x89c]
push dword [ebp - 8]
push eax
call fcn.00f5391d
add esp, 0xc
test eax, eax
jne 0xf649de
cmp dword [ebx + 0x4c], eax
jne 0xf649dc
lea eax, [edi + 0x89c]
push eax
call fcn.00f5395b
pop ecx
push eax
lea eax, [edi + 0x89c]
push eax
call fcn.00f53966
pop ecx
push eax
push esi
push edi
call fcn.00f6593a
add esp, 0x10
push 2
pop ecx
cmp eax, ecx
jne 0xf649dc
push ecx
push esi
mov byte [ebx + 0xc2], 0
mov dword [ebx + 0x48], ecx
call fcn.00f5c6c6
cmp byte [edi + 0x6e5], 0
pop ecx
pop ecx
jne 0xf649dc
push str.Received_HTTP_0.9_when_not_allowed
push edi
call fcn.00f5bb15
pop ecx
pop ecx
xor eax, eax
inc eax
jmp 0xf649de