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

Disassembly:
push ebp
mov ebp, esp
mov eax, 0x2678
call fcn.1006ac30
mov eax, dword [0x100ba2d8]
xor eax, ebp
mov dword [ebp - 8], eax
push ebx
xor ecx, ecx
push esi
xor esi, esi
cmp dword [0x100bb6b8], esi
lea eax, [ebp - 0x258c]
sete cl
mov dword [ebp - 0x25c4], eax
xor eax, eax
inc eax
push edi
mov dword [ebp - 0x262c], esi
and ecx, eax
mov dword [ebp - 0x2638], ecx
mov ecx, dword [0x100e0644]
cmp ecx, esi
je 0x10017900
mov dword [ebp - 0x2624], eax
cmp dword [0x100e0648], esi
jne 0x10017906
mov dword [ebp - 0x2624], esi
cmp byte [0x100e0d8a], 0
jne 0x10017921
cmp dword [0x100e0754], esi
jne 0x10017921
mov dword [ebp - 0x2634], eax
cmp ecx, esi
jne 0x10017927
mov dword [ebp - 0x2634], esi
cmp dword [ebp - 0x2624], esi
jne 0x1001793b
cmp dword [ebp + 8], esi
jne 0x1001793b
mov eax, dword [0x100e07cc]
jmp 0x10017949
mov eax, dword [0x100e07cc]
add eax, 9
push 0xa
cdq
pop ecx
idiv ecx
mov dword [ebp - 0x2620], eax
fild dword [ebp - 0x2620]
mov eax, dword [0x100e088c]
imul eax, eax, 0xc
fstp qword [ebp - 0x2644]
fld qword [0x100a8de8]
fdiv qword [ebp - 0x2644]
mov dword [ebp - 0x2628], eax
fmul qword [0x100a9870]
fstp qword [ebp - 0x261c]
cmp dword [ebp + 8], esi
jne 0x10017994
mov ecx, dword [0x100e0a50]
mov dword [ebp - 0x260c], ecx
jmp 0x100179a1
mov eax, dword [0x100e0b50]
mov dword [ebp - 0x260c], eax
mov ecx, eax
mov edx, ecx
cmp dword [ebp - 0x2624], esi
je 0x100179c8
mov eax, dword [0x100e0788]
cmp eax, esi
je 0x100179c8
jge 0x100179bc
lea edx, [eax + ecx + 1]
jmp 0x100179c8
lea eax, [ecx + eax - 1]
mov dword [ebp - 0x260c], eax
mov ecx, eax
mov dword [ebp - 0x25c0], edx
cmp edx, ecx
jg 0x10018d66
cmp dword [ebp - 0x2624], 0
je 0x100179ee
xor eax, eax
inc eax
mov dword [ebp - 0x2608], 0xc
jmp 0x10017a04
cmp dword [ebp + 8], 0
mov eax, dword [0x100e0a48]
je 0x100179fe
mov eax, dword [0x100e0b48]
mov dword [ebp - 0x2608], eax
mov dword [ebp - 0x25bc], eax
jmp 0x10018d39
cmp dword [0x100e0644], 0
je 0x10017a45
mov eax, dword [ebp - 0x25bc]
xor edi, edi
inc edi
cmp eax, 9
je 0x10017a39
mov esi, dword [ebp - 0x25c0]
call fcn.1001eef8
mov dword [ebp - 0x25f4], eax
jmp 0x10017a5d
mov dword [ebp - 0x25f4], 0x1e
jmp 0x10017a5d
cmp dword [ebp + 8], 0
mov eax, dword [0x100e0a4c]
je 0x10017a55
mov eax, dword [0x100e0b4c]
mov dword [ebp - 0x25f4], eax
mov edi, eax
mov dword [ebp - 0x25d0], edi
cmp edi, dword [ebp - 0x25f4]
jg 0x10018d2d
mov eax, dword [ebp - 0x25c4]
fldz
lea ecx, [ebp - 0x258c]
fst qword [0x100e0a18]
sub eax, ecx
fld qword [0x100e0a60]
cdq
fst qword [0x100e0a20]
push 0x30
fld qword [0x100e0a68]
pop ecx
fst qword [0x100e0a28]
idiv ecx
fld qword [0x100e0a70]
fstp qword [0x100e0a30]
fld qword [0x100e0a78]
fstp qword [0x100e0a38]
and dword [ebp - 0x2590], 0
mov ecx, dword [ebp - 0x25bc]
mov edi, dword [ebp - 0x25d0]
mov edx, dword [ebp - 0x25c0]
mov dword [0x100e0a08], ecx
mov dword [0x100e0a0c], edi
mov dword [0x100e0a10], edx
mov dword [ebp - 0x2630], eax
mov eax, 0xc8
sub eax, dword [ebp - 0x2630]
mov dword [ebp - 0x2610], eax
mov eax, dword [ebp + 8]
mov dword [0x100e0690], eax
test eax, eax
je 0x10017b37
sub esp, 0x18
fstp qword [esp + 0x10]
fstp qword [esp + 8]
fstp qword [esp]
push edx
call fcn.100050e9
fstp qword [0x100e09a0]
add esp, 0x1c
push 0x10
pop ecx
mov esi, 0x100e0a48
mov edi, 0x100e0a08
rep movsd dword es:[edi], dword [esi]
jmp 0x10017b3d
fstp st(1)
fstp st(0)
fstp st(0)
push 0xffffffffffffffff
call fcn.10006c7a
fstp st(0)
xor eax, eax
mov ebx, 0x100e7d98
inc eax
add esp, 4
mov ecx, 0x35e
mov esi, 0x100e6eb8
mov edi, ebx
rep movsd dword es:[edi], dword [esi]
mov dword [ebp - 0x25e0], eax
cmp dword [ebp - 0x2620], eax
jl 0x10018766
jmp 0x10017b78
mov ebx, 0x100e7d98
cmp dword [ebp + 8], 0
fild dword [ebp - 0x25e0]
mov eax, dword [ebp - 0x25bc]
mov dword [0x100e0a08], eax
fmul qword [0x100a8de8]
mov eax, dword [ebp - 0x25d0]
mov dword [0x100e0a0c], eax
mov eax, dword [ebp - 0x25c0]
fdiv qword [ebp - 0x2644]
mov dword [0x100e0a10], eax
fst qword [0x100e0a18]
fld qword [0x100e0a60]
fst qword [0x100e0a20]
fld qword [0x100e0a68]
fst qword [0x100e0a28]
fld qword [0x100e0a70]
fstp qword [0x100e0a30]
fld qword [0x100e0a78]
fstp qword [0x100e0a38]
je 0x10017c21
mov edi, dword [ebp - 0x25d0]
mov ecx, dword [ebp - 0x25bc]
sub esp, 0x18
fstp qword [esp + 0x10]
fstp qword [esp + 8]
fstp qword [esp]
push eax
call fcn.100050e9
fstp qword [0x100e09a0]
add esp, 0x1c
push 0x10
pop ecx
mov esi, 0x100e0a48
mov edi, 0x100e0a08
rep movsd dword es:[edi], dword [esi]
jmp 0x10017c27
fstp st(2)
fstp st(0)
fstp st(0)
push 0xffffffffffffffff
call fcn.10006c7a
fstp st(0)
mov ecx, 0x35e
mov esi, ebx
mov edi, 0x100e5ad0
rep movsd dword es:[edi], dword [esi]
mov ecx, 0x35e
mov esi, 0x100e6eb8
mov edi, ebx
add esp, 4
and dword [ebp - 0x25a8], 0
rep movsd dword es:[edi], dword [esi]
mov eax, dword [ebp - 0x25a8]
cmp byte [eax + 0x100e0d88], 0
jne 0x1001873b
cmp dword [ebp + 8], 0
jne 0x10017c86
cmp dword [0x100e064c], 0
jne 0x10017c86
cmp eax, 0x12
jle 0x10017c86
cmp eax, 0x22
jl 0x1001873b
mov esi, dword [ebp - 0x25a8]
shl esi, 3
lea edi, [esi + 0x100e5ad0]
fld qword [edi]
mov dword [ebp - 0x25f0], esi
mov dword [ebp - 0x25f8], edi
call fcn.100722b0
cdq
push 0x1e
pop ecx
idiv ecx
lea esi, [esi + 0x100e7d98]
mov dword [ebp - 0x25fc], esi
fld qword [esi]
mov ebx, eax
call fcn.100722b0
push 0x1e
cdq
pop ecx
idiv ecx
cmp dword [0x100e0754], 0
mov ecx, eax
jne 0x10017f94
mov eax, dword [0x100e07bc]
test eax, eax
js 0x10017ced
cmp dword [ebp - 0x25a8], eax
jne 0x10017f94
mov eax, dword [ebp - 0x2590]
cmp eax, dword [ebp - 0x2610]
jge 0x10017f94
mov eax, ebx
sub eax, ecx
cdq
xor eax, edx
sub eax, edx
cmp ebx, ecx
je 0x10017e4d
cmp eax, 1
je 0x10017d1e
cmp eax, 0xb
jne 0x10017e4d
mov esi, dword [ebp - 0x2590]
fldz
mov ax, word [ebp - 0x25a8]
imul esi, esi, 0x30
add esi, dword [ebp - 0x25c4]
mov dword [ebp - 0x25e4], ecx
mov word [esi], ax
or eax, 0xffffffff
mov word [esi + 2], ax
lea eax, [ecx + 1]
mov dword [esi + 4], eax
mov eax, dword [ebp - 0x25f0]
fcomp qword [eax + 0x100e6070]
fnstsw ax
test ah, 0x41
jnp 0x10017d65
mov dword [ebp - 0x25e4], ebx
fild dword [ebp - 0x25e4]
sub esp, 0x10
fmul qword [0x100aa190]
fstp qword [esp + 8]
fld qword [edi]
fstp qword [esp]
call fcn.1001eaae
mov eax, dword [ebp - 0x25fc]
fstp qword [ebp - 0x25cc]
fld qword [eax]
fstp qword [esp + 8]
fld qword [edi]
fstp qword [esp]
call fcn.1001eaae
imul ebx, ebx, 0x1e
fdivr qword [ebp - 0x25cc]
mov eax, dword [ebp - 0x25e0]
dec eax
mov dword [ebp - 0x2598], eax
mov eax, dword [ebp - 0x25f0]
add esp, 8
fmul qword [ebp - 0x261c]
fild dword [ebp - 0x2598]
mov dword [ebp - 0x2598], ebx
fmul qword [ebp - 0x261c]
faddp st(1)
fstp qword [esi + 0x10]
fild dword [ebp - 0x2598]
fst qword [esi + 0x20]
fstp qword [esi + 0x18]
fld qword [eax + 0x100e8338]
fstp qword [esp]
call fcn.1001e7f8
call fcn.100722b0
mov ebx, eax
mov eax, dword [ebp - 0x25f0]
fld qword [eax + 0x100e6070]
fstp qword [esp]
call fcn.1001e7f8
add esp, 8
call fcn.100722b0
add eax, ebx
inc dword [ebp - 0x2590]
mov byte [esi + 0x29], al
mov byte [esi + 0x28], al
mov al, byte [ebp - 0x25bc]
mov byte [esi + 8], al
mov al, byte [ebp - 0x25d0]
mov byte [esi + 9], al
mov ax, word [ebp - 0x25c0]
mov word [esi + 0xa], ax
mov esi, dword [ebp - 0x25fc]
jmp 0x10017f94
cmp dword [0x100e088c], 1
jle 0x10017f94
fild dword [ebp - 0x2628]
fdivr qword [0x100a87f0]
fld qword [edi]
fdiv st(1)
call fcn.100722b0
fld qword [esi]
fdiv st(1)
mov dword [ebp - 0x25a0], eax
call fcn.100722b0
mov ecx, dword [ebp - 0x25a0]
mov ebx, eax
mov eax, ecx
sub eax, ebx
cdq
xor eax, edx
sub eax, edx
cmp ecx, ebx
je 0x10017f92
cmp eax, 1
je 0x10017eab
mov edx, dword [ebp - 0x2628]
dec edx
cmp eax, edx
jne 0x10017f92
lea eax, [ebx + 1]
mov dword [ebp - 0x25a0], ebx
cmp ecx, eax
je 0x10017ec5
mov eax, ebx
sub eax, dword [ebp - 0x2628]
inc eax
cmp ecx, eax
jne 0x10017ecb
mov dword [ebp - 0x25a0], ecx
mov eax, dword [ebp - 0x2590]
fimul dword [ebp - 0x25a0]
mov ecx, dword [ebp - 0x25c4]
imul eax, eax, 0x30
add ecx, eax
mov ax, word [ebp - 0x25a8]
mov word [ecx], ax
push 0xfffffffffffffffd
pop eax
mov word [ecx + 2], ax
mov eax, dword [ebp - 0x25a0]
sub esp, 0x10
mov dword [ecx + 4], eax
fstp qword [esp + 8]
fld qword [edi]
fstp qword [esp]
call fcn.1001eaae
fstp qword [ebp - 0x25cc]
fld qword [esi]
fstp qword [esp + 8]
fld qword [edi]
fstp qword [esp]
call fcn.1001eaae
fdivr qword [ebp - 0x25cc]
mov eax, dword [ebp - 0x25e0]
add esp, 0x10
dec eax
mov dword [ebp - 0x2598], eax
xor eax, eax
cmp dword [ebp - 0x25a0], ebx
sete al
inc dword [ebp - 0x2590]
lea eax, [eax + eax - 1]
fmul qword [ebp - 0x261c]
fild dword [ebp - 0x2598]
fmul qword [ebp - 0x261c]
faddp st(1)
fstp qword [ecx + 0x10]
fld qword [edi]
mov byte [ecx + 0x29], al
mov byte [ecx + 0x28], al
fst qword [ecx + 0x20]
mov al, byte [ebp - 0x25bc]
fstp qword [ecx + 0x18]
mov byte [ecx + 8], al
mov al, byte [ebp - 0x25d0]
mov byte [ecx + 9], al
mov ax, word [ebp - 0x25c0]
mov word [ecx + 0xa], ax
jmp 0x10017f94
fstp st(0)
cmp dword [0x100e0758], 0
jne 0x100180c9
fldz
mov ecx, dword [ebp - 0x25f0]
fcom qword [ecx + 0x100e6070]
xor edx, edx
fnstsw ax
test ah, 0x41
jne 0x10017fb9
inc edx
fcom qword [ecx + 0x100e8338]
fnstsw ax
test ah, 0x41
jne 0x10017fcb
xor eax, eax
inc eax
jmp 0x10017fcd
xor eax, eax
cmp edx, eax
je 0x100180c7
mov eax, dword [0x100e07bc]
test eax, eax
js 0x10017fea
cmp dword [ebp - 0x25a8], eax
jne 0x100180c7
mov eax, dword [ebp - 0x2610]
cmp dword [ebp - 0x2590], eax
jge 0x100180c7
mov eax, dword [ebp - 0x2590]
mov ecx, dword [ebp - 0x25c4]
imul eax, eax, 0x30
mov edx, dword [ebp - 0x25f0]
add ecx, eax
mov ax, word [ebp - 0x25a8]
mov word [ecx], ax
push 0xfffffffffffffffe
pop eax
mov word [ecx + 2], ax
fcom qword [edx + 0x100e8338]
fnstsw ax
test ah, 0x41
jne 0x10018036
xor eax, eax
inc eax
jmp 0x10018038
xor eax, eax
mov dword [ecx + 4], eax
fld qword [edx + 0x100e6070]
fabs
mov eax, dword [ebp - 0x25e0]
fld qword [edx + 0x100e8338]
dec eax
fabs
mov dword [ebp - 0x2598], eax
fadd st(1)
fdivp st(1)
fmul qword [ebp - 0x261c]
fild dword [ebp - 0x2598]
fmul qword [ebp - 0x261c]
faddp st(1)
fstp qword [ecx + 0x10]
fcomp qword [edx + 0x100e8338]
fnstsw ax
fld qword [esi]
fcomp qword [edi]
test ah, 0x41
fnstsw ax
jne 0x100180be
test ah, 5
jnp 0x100180c3
fld qword [esi]
mov al, byte [ebp - 0x25bc]
fst qword [ecx + 0x20]
inc dword [ebp - 0x2590]
fstp qword [ecx + 0x18]
mov byte [ecx + 8], al
mov al, byte [ebp - 0x25d0]
mov byte [ecx + 9], al
mov ax, word [ebp - 0x25c0]
mov word [ecx + 0x28], 0
mov word [ecx + 0xa], ax
jmp 0x100180c9
test ah, 0x41
jne 0x1001808b
fld qword [edi]
jmp 0x1001808d
fstp st(0)
mov eax, dword [ebp - 0x25a8]
jmp 0x1001872b
cmp byte [eax + 0x100e0d88], 0
jne 0x10018725
xor ecx, ecx
cmp dword [ebp + 8], ecx
jne 0x100180fe
cmp dword [0x100e064c], ecx
jne 0x100180fe
cmp eax, 0x12
jle 0x100180fe
cmp eax, 0x22
jl 0x10018725
cmp dword [0x100e0620], ecx
jne 0x100188e9
xor eax, eax
inc eax
mov dword [ebp - 0x25a4], eax
cmp dword [0x100e07a0], eax
jl 0x10018725
mov eax, dword [ebp - 0x2590]
or dword [ebp - 0x25e4], 0xffffffff
imul eax, eax, 0x30
mov ecx, dword [ebp - 0x25c4]
lea esi, [eax + ecx + 4]
push dword [ebp - 0x25a0]
mov ebx, dword [ebp - 0x25a8]
push dword [ebp - 0x25e4]
call fcn.100080df
pop ecx
pop ecx
test eax, eax
je 0x10018707
fld qword [edi]
mov eax, dword [ebp - 0x25fc]
mov ebx, dword [ebp - 0x25a0]
fstp qword [ebp - 0x2604]
fld qword [eax]
sub esp, 0x10
fstp qword [ebp - 0x25cc]
fld qword [ebx*8 + 0x100e5ad0]
fstp qword [ebp - 0x25dc]
fld qword [ebx*8 + 0x100e7d98]
fstp qword [ebp - 0x25ec]
fld qword [ebp - 0x25cc]
fstp qword [esp + 8]
fld qword [ebp - 0x2604]
fstp qword [esp]
call fcn.1001eaae
fstp qword [ebp - 0x25b4]
fld qword [ebp - 0x25ec]
fstp qword [esp + 8]
fld qword [ebp - 0x25dc]
fstp qword [esp]
call fcn.1001eaae
fcomp qword [ebp - 0x25b4]
add esp, 0x10
fnstsw ax
test ah, 0x41
jne 0x10018209
fld qword [ebp - 0x2604]
fld qword [ebp - 0x25dc]
fstp qword [ebp - 0x2604]
fstp qword [ebp - 0x25dc]
fld qword [ebp - 0x25cc]
fld qword [ebp - 0x25ec]
fstp qword [ebp - 0x25cc]
fstp qword [ebp - 0x25ec]
mov eax, dword [ebp - 0x25a4]
fld qword [ebp - 0x2604]
lea eax, [eax*8 + 0x100e1408]
fsub qword [eax]
push ecx
push ecx
fstp qword [esp]
call fcn.1001e8aa
fstp qword [esp]
push ecx
fld qword [ebp - 0x25dc]
push ecx
fstp qword [esp]
call fcn.1001eaae
mov eax, dword [ebp - 0x25a4]
fstp qword [ebp - 0x25b4]
lea eax, [eax*8 + 0x100e1408]
fld qword [eax]
add esp, 8
fadd qword [ebp - 0x25cc]
fstp qword [esp]
call fcn.1001e8aa
fstp qword [esp]
push ecx
fld qword [ebp - 0x25ec]
push ecx
fstp qword [esp]
call fcn.1001eaae
fcomp qword [ebp - 0x25b4]
add esp, 0x10
push ecx
push ecx
fnstsw ax
test ah, 0x41
mov eax, dword [ebp - 0x25a4]
lea eax, [eax*8 + 0x100e1408]
jne 0x100182c0
fld qword [eax]
fadd qword [ebp - 0x25dc]
fstp qword [esp]
call fcn.1001e8aa
mov eax, dword [ebp - 0x25a4]
fstp qword [ebp - 0x25dc]
lea eax, [eax*8 + 0x100e1408]
fld qword [eax]
fadd qword [ebp - 0x25ec]
jmp 0x100182eb
fld qword [ebp - 0x25dc]
fsub qword [eax]
fstp qword [esp]
call fcn.1001e8aa
mov eax, dword [ebp - 0x25a4]
fstp qword [ebp - 0x25dc]
fld qword [ebp - 0x25ec]
lea eax, [eax*8 + 0x100e1408]
fsub qword [eax]
fstp qword [esp]
call fcn.1001e8aa
fstp qword [ebp - 0x25ec]
pop ecx
fld qword [ebp - 0x25dc]
pop ecx
fsub qword [ebp - 0x2604]
fstp qword [ebp - 0x25b4]
fld qword [ebp - 0x25b4]
fabs
fcomp qword [0x100a87a8]
fnstsw ax
test ah, 0x41
jne 0x10018347
fld qword [ebp - 0x25b4]
push ecx
push ecx
fstp qword [esp]
call fcn.1001e7f8
fmul qword [0x100a87f0]
add esp, 8
fsubr qword [ebp - 0x25b4]
fstp qword [ebp - 0x25b4]
fld qword [ebp - 0x25ec]
fsub qword [ebp - 0x25cc]
fstp qword [ebp - 0x259c]
fld qword [ebp - 0x259c]
fabs
fcomp qword [0x100a87a8]
fnstsw ax
test ah, 0x41
jne 0x10018393
fld qword [ebp - 0x259c]
push ecx
push ecx
fstp qword [esp]
call fcn.1001e7f8
fmul qword [0x100a87f0]
add esp, 8
fsubr qword [ebp - 0x259c]
fstp qword [ebp - 0x259c]
fld qword [ebp - 0x25ec]
sub esp, 0x10
fstp qword [esp + 8]
fld qword [ebp - 0x25dc]
fstp qword [esp]
call fcn.1001eb05
fstp qword [esp + 8]
fld qword [ebp - 0x25cc]
fstp qword [esp]
push ecx
fld qword [ebp - 0x2604]
push ecx
fstp qword [esp]
call fcn.1001eb05
pop ecx
pop ecx
fstp qword [esp]
call fcn.1001eaae
fcomp qword [0x100a87e8]
add esp, 0x10
fnstsw ax
test ah, 5
jp 0x10018707
fld qword [ebp - 0x25b4]
push ecx
push ecx
fstp qword [esp]
call fcn.1001e7f8
fstp qword [ebp - 0x25b4]
fld qword [ebp - 0x259c]
fstp qword [esp]
call fcn.1001e7f8
fld qword [ebp - 0x25b4]
add esp, 8
fucompp
fnstsw ax
test ah, 0x44
jnp 0x10018707
mov eax, dword [ebp - 0x2590]
cmp eax, dword [ebp - 0x2610]
jge 0x10018707
mov ax, word [ebp - 0x25a8]
fld qword [ebp - 0x25cc]
fsub qword [ebp - 0x2604]
mov word [esi - 4], ax
mov ax, word [ebp - 0x25a4]
mov word [esi - 2], ax
mov al, byte [ebp - 0x25bc]
fstp qword [ebp - 0x25b4]
fld qword [ebp - 0x25b4]
mov byte [esi + 4], al
mov al, byte [ebp - 0x25d0]
fabs
fcomp qword [0x100a87a8]
mov byte [esi + 5], al
mov ax, word [ebp - 0x25c0]
mov word [esi + 6], ax
mov dword [esi], ebx
fnstsw ax
test ah, 0x41
jne 0x100184b6
fld qword [ebp - 0x25b4]
push ecx
push ecx
fstp qword [esp]
call fcn.1001e7f8
fmul qword [0x100a87f0]
add esp, 8
fsubr qword [ebp - 0x25b4]
fstp qword [ebp - 0x25b4]
fld qword [ebp - 0x25ec]
fsub qword [ebp - 0x25dc]
fstp qword [ebp - 0x259c]
fld qword [ebp - 0x259c]
fabs
fcomp qword [0x100a87a8]
fnstsw ax
test ah, 0x41
jne 0x10018502
fld qword [ebp - 0x259c]
push ecx
push ecx
fstp qword [esp]
call fcn.1001e7f8
fmul qword [0x100a87f0]
add esp, 8
fsubr qword [ebp - 0x259c]
fstp qword [ebp - 0x259c]
fld qword [ebp - 0x2604]
fsub qword [ebp - 0x25dc]
fst qword [ebp - 0x25cc]
fld st(0)
fabs
fcomp qword [0x100a87a8]
fnstsw ax
test ah, 0x41
jne 0x1001853e
push ecx
push ecx
fstp qword [esp]
call fcn.1001e7f8
fmul qword [0x100a87f0]
add esp, 8
fsubr qword [ebp - 0x25cc]
fld qword [ebp - 0x259c]
mov eax, dword [ebp - 0x25e0]
fsub qword [ebp - 0x25b4]
dec eax
mov dword [ebp - 0x2598], eax
mov eax, dword [ebp - 0x25fc]
fdivp st(1)
fild dword [ebp - 0x2598]
fmul qword [ebp - 0x261c]
fld st(1)
fmul qword [ebp - 0x261c]
faddp st(1)
fstp qword [esi + 0xc]
fld qword [eax]
fsub qword [edi]
fld st(0)
fabs
fcomp qword [0x100a87a8]
fnstsw ax
test ah, 0x41
jne 0x10018596
or dword [ebp - 0x2598], 0xffffffff
jmp 0x100185a0
mov dword [ebp - 0x2598], 1
fxch st(1)
push ecx
fabs
push ecx
fstp qword [ebp - 0x25cc]
fstp qword [esp]
call fcn.1001e7f8
fimul dword [ebp - 0x2598]
mov eax, dword [ebp - 0x25fc]
fmul qword [ebp - 0x25cc]
fstp qword [ebp - 0x25b4]
fld qword [eax]
fstp qword [esp]
push ecx
fld qword [edi]
push ecx
fstp qword [esp]
call fcn.1001eaae
fmul qword [ebp - 0x25b4]
add esp, 8
fadd qword [edi]
fstp qword [esp]
call fcn.1001e8aa
fstp qword [esi + 0x14]
pop ecx
fld qword [ebx*8 + 0x100e7d98]
pop ecx
fsub qword [ebx*8 + 0x100e5ad0]
fld st(0)
fabs
fcomp qword [0x100a87a8]
fnstsw ax
test ah, 0x41
jne 0x1001861d
or dword [ebp - 0x2598], 0xffffffff
jmp 0x10018627
mov dword [ebp - 0x2598], 1
push ecx
push ecx
fstp qword [esp]
call fcn.1001e7f8
fimul dword [ebp - 0x2598]
mov ecx, dword [ebp - 0x25a0]
fmul qword [ebp - 0x25cc]
fstp qword [ebp - 0x25cc]
fld qword [ecx*8 + 0x100e7d98]
fstp qword [esp]
push ecx
fld qword [ecx*8 + 0x100e5ad0]
push ecx
fstp qword [esp]
call fcn.1001eaae
fmul qword [ebp - 0x25cc]
add esp, 8
fadd qword [ecx*8 + 0x100e5ad0]
fstp qword [esp]
call fcn.1001e8aa
mov ebx, dword [ebp - 0x25f0]
fstp qword [esi + 0x1c]
fld qword [ebx + 0x100e8338]
fstp qword [esp]
call fcn.1001e7f8
call fcn.100722b0
fld qword [ebx + 0x100e6070]
fstp qword [esp]
mov byte [ebp - 0x25b5], al
call fcn.1001e7f8
call fcn.100722b0
mov cl, byte [ebp - 0x25b5]
mov ebx, dword [ebp - 0x25a0]
add cl, al
mov byte [esi + 0x24], cl
fld qword [ebx*8 + 0x100e8338]
fstp qword [esp]
call fcn.1001e7f8
call fcn.100722b0
fld qword [ebx*8 + 0x100e6070]
fstp qword [esp]
mov byte [ebp - 0x25b5], al
call fcn.1001e7f8
add esp, 8
call fcn.100722b0
mov cl, byte [ebp - 0x25b5]
add cl, al
inc dword [ebp - 0x2590]
mov byte [esi + 0x25], cl
add esi, 0x30
inc dword [ebp - 0x25a4]
mov eax, dword [ebp - 0x25a4]
dec dword [ebp - 0x25e4]
cmp eax, dword [0x100e07a0]
jle 0x10018139
mov eax, dword [ebp - 0x25a0]
inc eax
mov dword [ebp - 0x25a0], eax
cmp eax, 0x59
jle 0x100180d4
inc dword [ebp - 0x25a8]
cmp dword [ebp - 0x25a8], 0x59
jle 0x10017c56
inc dword [ebp - 0x25e0]
mov eax, dword [ebp - 0x25e0]
cmp eax, dword [ebp - 0x2620]
jle 0x10017b73
mov eax, dword [ebp - 0x2590]
cmp eax, 1
jle 0x100187f9
mov ebx, dword [ebp - 0x25c4]
and dword [ebp - 0x25f8], 0
add ebx, 0x30
dec eax
mov dword [ebp - 0x2598], eax
mov eax, dword [ebp - 0x25f8]
mov dword [ebp - 0x25a0], eax
test eax, eax
js 0x100187e2
mov edx, ebx
fld qword [edx + 0x10]
fcomp qword [edx - 0x20]
fnstsw ax
test ah, 5
jp 0x100187e2
dec dword [ebp - 0x25a0]
push 0xc
pop ecx
lea esi, [edx - 0x30]
push 0xc
lea edi, [ebp - 0x2674]
rep movsd dword es:[edi], dword [esi]
pop ecx
mov esi, edx
lea edi, [edx - 0x30]
rep movsd dword es:[edi], dword [esi]
push 0xc
mov edi, edx
pop ecx
lea esi, [ebp - 0x2674]
sub edx, 0x30
cmp dword [ebp - 0x25a0], 0
rep movsd dword es:[edi], dword [esi]
jge 0x1001879e
inc dword [ebp - 0x25f8]
add ebx, 0x30
dec dword [ebp - 0x2598]
jne 0x1001878c
mov eax, dword [ebp - 0x2590]
cmp dword [ebp - 0x2634], 0
je 0x10018cc5
mov ecx, dword [ebp - 0x25d0]
cmp ecx, dword [ebp - 0x25f4]
jl 0x10018834
mov ecx, dword [ebp - 0x25bc]
cmp ecx, dword [ebp - 0x2608]
jl 0x10018834
mov ecx, dword [ebp - 0x25c0]
cmp ecx, dword [ebp - 0x260c]
jge 0x10018cad
mov eax, dword [ebp - 0x2590]
imul eax, eax, 0x30
add dword [ebp - 0x25c4], eax
mov eax, dword [ebp - 0x25c4]
push 0x32
lea ecx, [ebp - 0x258c]
sub eax, ecx
pop ebx
push 0x30
cdq
pop ecx
idiv ecx
mov esi, eax
cmp esi, 0x64
jle 0x10018cd8
cmp dword [0x100bb6b8], 0
je 0x10018891
mov al, byte [ebp - 0x1c23]
cmp al, byte [ebp - 0x2583]
je 0x10018891
lea eax, [ebp - 0x1c23]
mov cl, byte [eax]
cmp cl, byte [eax - 0x30]
jne 0x10018891
dec ebx
sub eax, 0x30
test ebx, ebx
jg 0x10018882
push dword [ebp + 8]
lea ecx, [ebp - 0x258c]
push esi
push ebx
call fcn.10017490
mov ecx, esi
sub ecx, ebx
add esp, 0xc
test ecx, ecx
jle 0x100188db
mov eax, ebx
imul eax, eax, 0x30
lea edx, [ebp - 0x258c]
lea eax, [ebp + eax - 0x258c]
mov dword [ebp - 0x2598], ecx
push 0xc
mov esi, eax
mov edi, edx
pop ecx
add eax, 0x30
add edx, 0x30
dec dword [ebp - 0x2598]
rep movsd dword es:[edi], dword [esi]
jne 0x100188c4
imul ebx, ebx, 0xffffffd0
add dword [ebp - 0x25c4], ebx
jmp 0x10018cd8
mov eax, dword [ebp - 0x2590]
mov ecx, dword [ebp - 0x25c4]
imul eax, eax, 0x30
lea eax, [eax + ecx + 4]
mov dword [ebp - 0x25a4], 1
mov dword [ebp - 0x2598], eax
mov eax, dword [0x100e07a0]
cmp eax, 2
jl 0x10018919
push 2
pop eax
cmp dword [ebp - 0x25a4], eax
jg 0x10018725
mov eax, dword [ebp - 0x25a4]
push dword [ebp - 0x25a0]
mov ebx, dword [ebp - 0x25a8]
neg eax
push eax
call fcn.100080df
pop ecx
pop ecx
test eax, eax
je 0x10018ca2
mov eax, dword [ebp - 0x25f0]
fld qword [eax + 0x100e5da0]
mov ebx, dword [ebp - 0x25a0]
fstp qword [ebp - 0x2604]
shl ebx, 3
fld qword [eax + 0x100e8068]
push ecx
fstp qword [ebp - 0x25cc]
push ecx
fld qword [ebx + 0x100e5da0]
lea esi, [ebp - 0x25b4]
fstp qword [ebp - 0x25dc]
mov dword [ebp - 0x25e4], ebx
fld qword [ebx + 0x100e8068]
fstp qword [ebp - 0x25ec]
fld qword [edi]
lea edi, [ebp - 0x2604]
fstp qword [ebp - 0x25b4]
fld qword [0x100e0a00]
fstp qword [esp]
call fcn.1000654c
mov eax, dword [ebp - 0x25fc]
fld qword [eax]
lea edi, [ebp - 0x25cc]
fstp qword [ebp - 0x25b4]
fld qword [0x100e0a00]
fstp qword [esp]
call fcn.1000654c
fld qword [ebx + 0x100e5ad0]
lea edi, [ebp - 0x25dc]
fstp qword [ebp - 0x25b4]
fld qword [0x100e0a00]
fstp qword [esp]
call fcn.1000654c
fld qword [ebx + 0x100e7d98]
lea edi, [ebp - 0x25ec]
fstp qword [ebp - 0x25b4]
fld qword [0x100e0a00]
fstp qword [esp]
call fcn.1000654c
cmp dword [ebp - 0x25a4], 2
pop ecx
pop ecx
jne 0x10018a3b
fld qword [ebp - 0x25dc]
fchs
fstp qword [ebp - 0x25dc]
fld qword [ebp - 0x25ec]
fchs
fstp qword [ebp - 0x25ec]
fld qword [ebp - 0x25dc]
push ecx
fsub qword [ebp - 0x2604]
push ecx
fstp qword [esp]
call fcn.1001e7f8
fstp qword [ebp - 0x25b4]
fld qword [ebp - 0x25ec]
fsub qword [ebp - 0x25cc]
fstp qword [esp]
call fcn.1001e7f8
fld qword [ebp - 0x25b4]
add esp, 8
fucompp
fnstsw ax
test ah, 0x44
jnp 0x10018c9c
mov eax, dword [ebp - 0x2590]
cmp eax, dword [ebp - 0x2610]
jge 0x10018c9c
fld qword [ebp - 0x2604]
mov esi, dword [ebp - 0x2598]
fsub qword [ebp - 0x25dc]
mov ax, word [ebp - 0x25a8]
fld qword [ebp - 0x25ec]
mov word [esi - 4], ax
fsub qword [ebp - 0x25dc]
mov ax, word [ebp - 0x25a4]
fld qword [ebp - 0x25cc]
mov word [esi - 2], ax
fsub qword [ebp - 0x2604]
mov eax, dword [ebp - 0x25a0]
mov dword [esi], eax
mov al, byte [ebp - 0x25bc]
fsubp st(1)
mov byte [esi + 4], al
mov al, byte [ebp - 0x25d0]
mov edx, dword [ebp - 0x25fc]
fdivp st(1)
mov ecx, dword [ebp - 0x25f8]
mov byte [esi + 5], al
mov ax, word [ebp - 0x25c0]
mov word [esi + 6], ax
mov eax, dword [ebp - 0x25e0]
dec eax
mov dword [ebp - 0x2598], eax
fild dword [ebp - 0x2598]
fmul qword [ebp - 0x261c]
fld st(1)
fmul qword [ebp - 0x261c]
faddp st(1)
fstp qword [esi + 0xc]
fld qword [edx]
fsub qword [ecx]
fld st(0)
fabs
fcomp qword [0x100a87a8]
fnstsw ax
test ah, 0x41
jne 0x10018b4c
or dword [ebp - 0x2598], 0xffffffff
jmp 0x10018b56
mov dword [ebp - 0x2598], 1
fxch st(1)
push ecx
fabs
push ecx
fstp qword [ebp - 0x25cc]
fstp qword [esp]
call fcn.1001e7f8
fimul dword [ebp - 0x2598]
fmul qword [ebp - 0x25cc]
fstp qword [ebp - 0x25b4]
fld qword [edx]
fstp qword [esp]
push ecx
fld qword [ecx]
push ecx
fstp qword [esp]
call fcn.1001eaae
fmul qword [ebp - 0x25b4]
add esp, 8
fadd qword [ecx]
fstp qword [esp]
call fcn.1001e8aa
fstp qword [esi + 0x14]
pop ecx
fld qword [ebx + 0x100e7d98]
pop ecx
fsub qword [ebx + 0x100e5ad0]
fld st(0)
fabs
fcomp qword [0x100a87a8]
fnstsw ax
test ah, 0x41
jne 0x10018bcb
or dword [ebp - 0x2598], 0xffffffff
jmp 0x10018bd5
mov dword [ebp - 0x2598], 1
push ecx
push ecx
fstp qword [esp]
call fcn.1001e7f8
fimul dword [ebp - 0x2598]
fmul qword [ebp - 0x25cc]
fstp qword [ebp - 0x25cc]
fld qword [ebx + 0x100e7d98]
fstp qword [esp]
push ecx
fld qword [ebx + 0x100e5ad0]
push ecx
fstp qword [esp]
call fcn.1001eaae
fmul qword [ebp - 0x25cc]
add esp, 8
fadd qword [ebx + 0x100e5ad0]
fstp qword [esp]
call fcn.1001e8aa
mov edi, dword [ebp - 0x25f0]
fstp qword [esi + 0x1c]
fld qword [edi + 0x100e8338]
fstp qword [esp]
call fcn.1001e7f8
call fcn.100722b0
fld qword [edi + 0x100e6070]
fstp qword [esp]
mov bl, al
call fcn.1001e7f8
call fcn.100722b0
mov edi, dword [ebp - 0x25e4]
add bl, al
mov byte [esi + 0x24], bl
fld qword [edi + 0x100e8338]
fstp qword [esp]
call fcn.1001e7f8
call fcn.100722b0
fld qword [edi + 0x100e6070]
fstp qword [esp]
mov bl, al
call fcn.1001e7f8
add esp, 8
call fcn.100722b0
add bl, al
inc dword [ebp - 0x2590]
mov byte [esi + 0x25], bl
add esi, 0x30
mov dword [ebp - 0x2598], esi
mov edi, dword [ebp - 0x25f8]
inc dword [ebp - 0x25a4]
jmp 0x1001890c
add eax, dword [ebp - 0x2630]
lea ecx, [ebp - 0x258c]
mov dword [ebp - 0x2590], eax
mov dword [ebp - 0x25c4], ecx
push dword [ebp + 8]
lea ecx, [ebp - 0x258c]
push eax
push eax
call fcn.10017490
add esp, 0xc
mov esi, dword [ebp - 0x2590]
cmp esi, dword [ebp - 0x2610]
jl 0x10018cf9
cmp dword [ebp - 0x2638], 0
je 0x10018cf9
mov ecx, str.Too_many_transit_events_found._n
call fcn.1001f16b
push dword [ebp - 0x25c0]
mov eax, dword [ebp - 0x25d0]
push dword [ebp - 0x25bc]
add dword [ebp - 0x262c], esi
xor edx, edx
inc edx
call fcn.1001efb1
pop ecx
pop ecx
mov dword [ebp - 0x25d0], eax
cmp eax, dword [ebp - 0x25f4]
jle 0x10017a6f
inc dword [ebp - 0x25bc]
mov eax, dword [ebp - 0x25bc]
cmp eax, dword [ebp - 0x2608]
jle 0x10017a0f
inc dword [ebp - 0x25c0]
mov eax, dword [ebp - 0x25c0]
cmp eax, dword [ebp - 0x260c]
jle 0x100179d6
cmp dword [ebp - 0x262c], 0
jne 0x10018d79
cmp dword [ebp - 0x2638], 0
je 0x10018d79
mov ecx, str.No_transit_events_found._n
call fcn.1001f16b
push 0x10
pop ecx
mov esi, 0x100e0a48
mov edi, 0x100e0a08
push 1
rep movsd dword es:[edi], dword [esi]
call fcn.10006c7a
mov ecx, dword [ebp - 8]
add esp, 4
fstp st(0)
pop edi
pop esi
xor ecx, ebp
pop ebx
call fcn.10062fe5
leave
ret