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

Disassembly:
push ebp
mov ebp, esp
mov eax, 0x2678
call fcn.100732c0
mov eax, dword [0x100c77f4]
xor eax, ebp
mov dword [ebp - 8], eax
push ebx
xor ecx, ecx
push esi
xor esi, esi
cmp dword [0x100c8c10], 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 [0x100edb9c]
cmp ecx, esi
je 0x100198cd
mov dword [ebp - 0x2624], eax
cmp dword [0x100edba0], esi
jne 0x100198d3
mov dword [ebp - 0x2624], esi
cmp byte [0x100ee2e2], 0
jne 0x100198ee
cmp dword [0x100edcac], esi
jne 0x100198ee
mov dword [ebp - 0x2634], eax
cmp ecx, esi
jne 0x100198f4
mov dword [ebp - 0x2634], esi
cmp dword [ebp - 0x2624], esi
jne 0x10019908
cmp dword [ebp + 8], esi
jne 0x10019908
mov eax, dword [0x100edd24]
jmp 0x10019916
mov eax, dword [0x100edd24]
add eax, 9
push 0xa
cdq
pop ecx
idiv ecx
mov dword [ebp - 0x2620], eax
fild dword [ebp - 0x2620]
mov eax, dword [0x100edde4]
imul eax, eax, 0xc
fstp qword [ebp - 0x2644]
fld qword [0x100b4fb8]
fdiv qword [ebp - 0x2644]
mov dword [ebp - 0x2628], eax
fmul qword [0x100b5a40]
fstp qword [ebp - 0x261c]
cmp dword [ebp + 8], esi
jne 0x10019961
mov ecx, dword [0x100edfa8]
mov dword [ebp - 0x260c], ecx
jmp 0x1001996e
mov eax, dword [0x100ee0a8]
mov dword [ebp - 0x260c], eax
mov ecx, eax
mov edx, ecx
cmp dword [ebp - 0x2624], esi
je 0x10019995
mov eax, dword [0x100edce0]
cmp eax, esi
je 0x10019995
jge 0x10019989
lea edx, [eax + ecx + 1]
jmp 0x10019995
lea eax, [ecx + eax - 1]
mov dword [ebp - 0x260c], eax
mov ecx, eax
mov dword [ebp - 0x25c0], edx
cmp edx, ecx
jg 0x1001ad33
cmp dword [ebp - 0x2624], 0
je 0x100199bb
xor eax, eax
inc eax
mov dword [ebp - 0x2608], 0xc
jmp 0x100199d1
cmp dword [ebp + 8], 0
mov eax, dword [0x100edfa0]
je 0x100199cb
mov eax, dword [0x100ee0a0]
mov dword [ebp - 0x2608], eax
mov dword [ebp - 0x25bc], eax
jmp 0x1001ad06
cmp dword [0x100edb9c], 0
je 0x10019a12
mov eax, dword [ebp - 0x25bc]
xor edi, edi
inc edi
cmp eax, 9
je 0x10019a06
mov esi, dword [ebp - 0x25c0]
call fcn.10020ec2
mov dword [ebp - 0x25f4], eax
jmp 0x10019a2a
mov dword [ebp - 0x25f4], 0x1e
jmp 0x10019a2a
cmp dword [ebp + 8], 0
mov eax, dword [0x100edfa4]
je 0x10019a22
mov eax, dword [0x100ee0a4]
mov dword [ebp - 0x25f4], eax
mov edi, eax
mov dword [ebp - 0x25d0], edi
cmp edi, dword [ebp - 0x25f4]
jg 0x1001acfa
mov eax, dword [ebp - 0x25c4]
fldz
lea ecx, [ebp - 0x258c]
fst qword [0x100edf70]
sub eax, ecx
fld qword [0x100edfb8]
cdq
fst qword [0x100edf78]
push 0x30
fld qword [0x100edfc0]
pop ecx
fst qword [0x100edf80]
idiv ecx
fld qword [0x100edfc8]
fstp qword [0x100edf88]
fld qword [0x100edfd0]
fstp qword [0x100edf90]
and dword [ebp - 0x2590], 0
mov ecx, dword [ebp - 0x25bc]
mov edi, dword [ebp - 0x25d0]
mov edx, dword [ebp - 0x25c0]
mov dword [0x100edf60], ecx
mov dword [0x100edf64], edi
mov dword [0x100edf68], 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 [0x100edbe8], eax
test eax, eax
je 0x10019b04
sub esp, 0x18
fstp qword [esp + 0x10]
fstp qword [esp + 8]
fstp qword [esp]
push edx
call fcn.100070b8
fstp qword [0x100edef8]
add esp, 0x1c
push 0x10
pop ecx
mov esi, 0x100edfa0
mov edi, 0x100edf60
rep movsd dword es:[edi], dword [esi]
jmp 0x10019b0a
fstp st(1)
fstp st(0)
fstp st(0)
push 0xffffffffffffffff
call fcn.10008c45
fstp st(0)
xor eax, eax
mov ebx, 0x100f5998
inc eax
add esp, 4
mov ecx, 0x35e
mov esi, 0x100f4ab8
mov edi, ebx
rep movsd dword es:[edi], dword [esi]
mov dword [ebp - 0x25e0], eax
cmp dword [ebp - 0x2620], eax
jl 0x1001a733
jmp 0x10019b45
mov ebx, 0x100f5998
cmp dword [ebp + 8], 0
fild dword [ebp - 0x25e0]
mov eax, dword [ebp - 0x25bc]
mov dword [0x100edf60], eax
fmul qword [0x100b4fb8]
mov eax, dword [ebp - 0x25d0]
mov dword [0x100edf64], eax
mov eax, dword [ebp - 0x25c0]
fdiv qword [ebp - 0x2644]
mov dword [0x100edf68], eax
fst qword [0x100edf70]
fld qword [0x100edfb8]
fst qword [0x100edf78]
fld qword [0x100edfc0]
fst qword [0x100edf80]
fld qword [0x100edfc8]
fstp qword [0x100edf88]
fld qword [0x100edfd0]
fstp qword [0x100edf90]
je 0x10019bee
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.100070b8
fstp qword [0x100edef8]
add esp, 0x1c
push 0x10
pop ecx
mov esi, 0x100edfa0
mov edi, 0x100edf60
rep movsd dword es:[edi], dword [esi]
jmp 0x10019bf4
fstp st(2)
fstp st(0)
fstp st(0)
push 0xffffffffffffffff
call fcn.10008c45
fstp st(0)
mov ecx, 0x35e
mov esi, ebx
mov edi, 0x100f36d0
rep movsd dword es:[edi], dword [esi]
mov ecx, 0x35e
mov esi, 0x100f4ab8
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 + 0x100ee2e0], 0
jne 0x1001a708
cmp dword [ebp + 8], 0
jne 0x10019c53
cmp dword [0x100edba4], 0
jne 0x10019c53
cmp eax, 0x12
jle 0x10019c53
cmp eax, 0x22
jl 0x1001a708
mov esi, dword [ebp - 0x25a8]
shl esi, 3
lea edi, [esi + 0x100f36d0]
fld qword [edi]
mov dword [ebp - 0x25f0], esi
mov dword [ebp - 0x25f8], edi
call fcn.1007d440
cdq
push 0x1e
pop ecx
idiv ecx
lea esi, [esi + 0x100f5998]
mov dword [ebp - 0x25fc], esi
fld qword [esi]
mov ebx, eax
call fcn.1007d440
push 0x1e
cdq
pop ecx
idiv ecx
cmp dword [0x100edcac], 0
mov ecx, eax
jne 0x10019f61
mov eax, dword [0x100edd14]
test eax, eax
js 0x10019cba
cmp dword [ebp - 0x25a8], eax
jne 0x10019f61
mov eax, dword [ebp - 0x2590]
cmp eax, dword [ebp - 0x2610]
jge 0x10019f61
mov eax, ebx
sub eax, ecx
cdq
xor eax, edx
sub eax, edx
cmp ebx, ecx
je 0x10019e1a
cmp eax, 1
je 0x10019ceb
cmp eax, 0xb
jne 0x10019e1a
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 + 0x100f3c70]
fnstsw ax
test ah, 0x41
jnp 0x10019d32
mov dword [ebp - 0x25e4], ebx
fild dword [ebp - 0x25e4]
sub esp, 0x10
fmul qword [0x100b6360]
fstp qword [esp + 8]
fld qword [edi]
fstp qword [esp]
call fcn.10020a78
mov eax, dword [ebp - 0x25fc]
fstp qword [ebp - 0x25cc]
fld qword [eax]
fstp qword [esp + 8]
fld qword [edi]
fstp qword [esp]
call fcn.10020a78
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 + 0x100f5f38]
fstp qword [esp]
call fcn.100207c2
call fcn.1007d440
mov ebx, eax
mov eax, dword [ebp - 0x25f0]
fld qword [eax + 0x100f3c70]
fstp qword [esp]
call fcn.100207c2
add esp, 8
call fcn.1007d440
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 0x10019f61
cmp dword [0x100edde4], 1
jle 0x10019f61
fild dword [ebp - 0x2628]
fdivr qword [0x100b49c0]
fld qword [edi]
fdiv st(1)
call fcn.1007d440
fld qword [esi]
fdiv st(1)
mov dword [ebp - 0x25a0], eax
call fcn.1007d440
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 0x10019f5f
cmp eax, 1
je 0x10019e78
mov edx, dword [ebp - 0x2628]
dec edx
cmp eax, edx
jne 0x10019f5f
lea eax, [ebx + 1]
mov dword [ebp - 0x25a0], ebx
cmp ecx, eax
je 0x10019e92
mov eax, ebx
sub eax, dword [ebp - 0x2628]
inc eax
cmp ecx, eax
jne 0x10019e98
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.10020a78
fstp qword [ebp - 0x25cc]
fld qword [esi]
fstp qword [esp + 8]
fld qword [edi]
fstp qword [esp]
call fcn.10020a78
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 0x10019f61
fstp st(0)
cmp dword [0x100edcb0], 0
jne 0x1001a096
fldz
mov ecx, dword [ebp - 0x25f0]
fcom qword [ecx + 0x100f3c70]
xor edx, edx
fnstsw ax
test ah, 0x41
jne 0x10019f86
inc edx
fcom qword [ecx + 0x100f5f38]
fnstsw ax
test ah, 0x41
jne 0x10019f98
xor eax, eax
inc eax
jmp 0x10019f9a
xor eax, eax
cmp edx, eax
je 0x1001a094
mov eax, dword [0x100edd14]
test eax, eax
js 0x10019fb7
cmp dword [ebp - 0x25a8], eax
jne 0x1001a094
mov eax, dword [ebp - 0x2610]
cmp dword [ebp - 0x2590], eax
jge 0x1001a094
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 + 0x100f5f38]
fnstsw ax
test ah, 0x41
jne 0x1001a003
xor eax, eax
inc eax
jmp 0x1001a005
xor eax, eax
mov dword [ecx + 4], eax
fld qword [edx + 0x100f3c70]
fabs
mov eax, dword [ebp - 0x25e0]
fld qword [edx + 0x100f5f38]
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 + 0x100f5f38]
fnstsw ax
fld qword [esi]
fcomp qword [edi]
test ah, 0x41
fnstsw ax
jne 0x1001a08b
test ah, 5
jnp 0x1001a090
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 0x1001a096
test ah, 0x41
jne 0x1001a058
fld qword [edi]
jmp 0x1001a05a
fstp st(0)
mov eax, dword [ebp - 0x25a8]
jmp 0x1001a6f8
cmp byte [eax + 0x100ee2e0], 0
jne 0x1001a6f2
xor ecx, ecx
cmp dword [ebp + 8], ecx
jne 0x1001a0cb
cmp dword [0x100edba4], ecx
jne 0x1001a0cb
cmp eax, 0x12
jle 0x1001a0cb
cmp eax, 0x22
jl 0x1001a6f2
cmp dword [0x100edb78], ecx
jne 0x1001a8b6
xor eax, eax
inc eax
mov dword [ebp - 0x25a4], eax
cmp dword [0x100edcf8], eax
jl 0x1001a6f2
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.1000a0aa
pop ecx
pop ecx
test eax, eax
je 0x1001a6d4
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 + 0x100f36d0]
fstp qword [ebp - 0x25dc]
fld qword [ebx*8 + 0x100f5998]
fstp qword [ebp - 0x25ec]
fld qword [ebp - 0x25cc]
fstp qword [esp + 8]
fld qword [ebp - 0x2604]
fstp qword [esp]
call fcn.10020a78
fstp qword [ebp - 0x25b4]
fld qword [ebp - 0x25ec]
fstp qword [esp + 8]
fld qword [ebp - 0x25dc]
fstp qword [esp]
call fcn.10020a78
fcomp qword [ebp - 0x25b4]
add esp, 0x10
fnstsw ax
test ah, 0x41
jne 0x1001a1d6
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 + 0x100ee960]
fsub qword [eax]
push ecx
push ecx
fstp qword [esp]
call fcn.10020874
fstp qword [esp]
push ecx
fld qword [ebp - 0x25dc]
push ecx
fstp qword [esp]
call fcn.10020a78
mov eax, dword [ebp - 0x25a4]
fstp qword [ebp - 0x25b4]
lea eax, [eax*8 + 0x100ee960]
fld qword [eax]
add esp, 8
fadd qword [ebp - 0x25cc]
fstp qword [esp]
call fcn.10020874
fstp qword [esp]
push ecx
fld qword [ebp - 0x25ec]
push ecx
fstp qword [esp]
call fcn.10020a78
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 + 0x100ee960]
jne 0x1001a28d
fld qword [eax]
fadd qword [ebp - 0x25dc]
fstp qword [esp]
call fcn.10020874
mov eax, dword [ebp - 0x25a4]
fstp qword [ebp - 0x25dc]
lea eax, [eax*8 + 0x100ee960]
fld qword [eax]
fadd qword [ebp - 0x25ec]
jmp 0x1001a2b8
fld qword [ebp - 0x25dc]
fsub qword [eax]
fstp qword [esp]
call fcn.10020874
mov eax, dword [ebp - 0x25a4]
fstp qword [ebp - 0x25dc]
fld qword [ebp - 0x25ec]
lea eax, [eax*8 + 0x100ee960]
fsub qword [eax]
fstp qword [esp]
call fcn.10020874
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 [0x100b4978]
fnstsw ax
test ah, 0x41
jne 0x1001a314
fld qword [ebp - 0x25b4]
push ecx
push ecx
fstp qword [esp]
call fcn.100207c2
fmul qword [0x100b49c0]
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 [0x100b4978]
fnstsw ax
test ah, 0x41
jne 0x1001a360
fld qword [ebp - 0x259c]
push ecx
push ecx
fstp qword [esp]
call fcn.100207c2
fmul qword [0x100b49c0]
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.10020acf
fstp qword [esp + 8]
fld qword [ebp - 0x25cc]
fstp qword [esp]
push ecx
fld qword [ebp - 0x2604]
push ecx
fstp qword [esp]
call fcn.10020acf
pop ecx
pop ecx
fstp qword [esp]
call fcn.10020a78
fcomp qword [0x100b49b8]
add esp, 0x10
fnstsw ax
test ah, 5
jp 0x1001a6d4
fld qword [ebp - 0x25b4]
push ecx
push ecx
fstp qword [esp]
call fcn.100207c2
fstp qword [ebp - 0x25b4]
fld qword [ebp - 0x259c]
fstp qword [esp]
call fcn.100207c2
fld qword [ebp - 0x25b4]
add esp, 8
fucompp
fnstsw ax
test ah, 0x44
jnp 0x1001a6d4
mov eax, dword [ebp - 0x2590]
cmp eax, dword [ebp - 0x2610]
jge 0x1001a6d4
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 [0x100b4978]
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 0x1001a483
fld qword [ebp - 0x25b4]
push ecx
push ecx
fstp qword [esp]
call fcn.100207c2
fmul qword [0x100b49c0]
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 [0x100b4978]
fnstsw ax
test ah, 0x41
jne 0x1001a4cf
fld qword [ebp - 0x259c]
push ecx
push ecx
fstp qword [esp]
call fcn.100207c2
fmul qword [0x100b49c0]
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 [0x100b4978]
fnstsw ax
test ah, 0x41
jne 0x1001a50b
push ecx
push ecx
fstp qword [esp]
call fcn.100207c2
fmul qword [0x100b49c0]
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 [0x100b4978]
fnstsw ax
test ah, 0x41
jne 0x1001a563
or dword [ebp - 0x2598], 0xffffffff
jmp 0x1001a56d
mov dword [ebp - 0x2598], 1
fxch st(1)
push ecx
fabs
push ecx
fstp qword [ebp - 0x25cc]
fstp qword [esp]
call fcn.100207c2
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.10020a78
fmul qword [ebp - 0x25b4]
add esp, 8
fadd qword [edi]
fstp qword [esp]
call fcn.10020874
fstp qword [esi + 0x14]
pop ecx
fld qword [ebx*8 + 0x100f5998]
pop ecx
fsub qword [ebx*8 + 0x100f36d0]
fld st(0)
fabs
fcomp qword [0x100b4978]
fnstsw ax
test ah, 0x41
jne 0x1001a5ea
or dword [ebp - 0x2598], 0xffffffff
jmp 0x1001a5f4
mov dword [ebp - 0x2598], 1
push ecx
push ecx
fstp qword [esp]
call fcn.100207c2
fimul dword [ebp - 0x2598]
mov ecx, dword [ebp - 0x25a0]
fmul qword [ebp - 0x25cc]
fstp qword [ebp - 0x25cc]
fld qword [ecx*8 + 0x100f5998]
fstp qword [esp]
push ecx
fld qword [ecx*8 + 0x100f36d0]
push ecx
fstp qword [esp]
call fcn.10020a78
fmul qword [ebp - 0x25cc]
add esp, 8
fadd qword [ecx*8 + 0x100f36d0]
fstp qword [esp]
call fcn.10020874
mov ebx, dword [ebp - 0x25f0]
fstp qword [esi + 0x1c]
fld qword [ebx + 0x100f5f38]
fstp qword [esp]
call fcn.100207c2
call fcn.1007d440
fld qword [ebx + 0x100f3c70]
fstp qword [esp]
mov byte [ebp - 0x25b5], al
call fcn.100207c2
call fcn.1007d440
mov cl, byte [ebp - 0x25b5]
mov ebx, dword [ebp - 0x25a0]
add cl, al
mov byte [esi + 0x24], cl
fld qword [ebx*8 + 0x100f5f38]
fstp qword [esp]
call fcn.100207c2
call fcn.1007d440
fld qword [ebx*8 + 0x100f3c70]
fstp qword [esp]
mov byte [ebp - 0x25b5], al
call fcn.100207c2
add esp, 8
call fcn.1007d440
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 [0x100edcf8]
jle 0x1001a106
mov eax, dword [ebp - 0x25a0]
inc eax
mov dword [ebp - 0x25a0], eax
cmp eax, 0x59
jle 0x1001a0a1
inc dword [ebp - 0x25a8]
cmp dword [ebp - 0x25a8], 0x59
jle 0x10019c23
inc dword [ebp - 0x25e0]
mov eax, dword [ebp - 0x25e0]
cmp eax, dword [ebp - 0x2620]
jle 0x10019b40
mov eax, dword [ebp - 0x2590]
cmp eax, 1
jle 0x1001a7c6
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 0x1001a7af
mov edx, ebx
fld qword [edx + 0x10]
fcomp qword [edx - 0x20]
fnstsw ax
test ah, 5
jp 0x1001a7af
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 0x1001a76b
inc dword [ebp - 0x25f8]
add ebx, 0x30
dec dword [ebp - 0x2598]
jne 0x1001a759
mov eax, dword [ebp - 0x2590]
cmp dword [ebp - 0x2634], 0
je 0x1001ac92
mov ecx, dword [ebp - 0x25d0]
cmp ecx, dword [ebp - 0x25f4]
jl 0x1001a801
mov ecx, dword [ebp - 0x25bc]
cmp ecx, dword [ebp - 0x2608]
jl 0x1001a801
mov ecx, dword [ebp - 0x25c0]
cmp ecx, dword [ebp - 0x260c]
jge 0x1001ac7a
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 0x1001aca5
cmp dword [0x100c8c10], 0
je 0x1001a85e
mov al, byte [ebp - 0x1c23]
cmp al, byte [ebp - 0x2583]
je 0x1001a85e
lea eax, [ebp - 0x1c23]
mov cl, byte [eax]
cmp cl, byte [eax - 0x30]
jne 0x1001a85e
dec ebx
sub eax, 0x30
test ebx, ebx
jg 0x1001a84f
push dword [ebp + 8]
lea ecx, [ebp - 0x258c]
push esi
push ebx
call fcn.1001945d
mov ecx, esi
sub ecx, ebx
add esp, 0xc
test ecx, ecx
jle 0x1001a8a8
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 0x1001a891
imul ebx, ebx, 0xffffffd0
add dword [ebp - 0x25c4], ebx
jmp 0x1001aca5
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 [0x100edcf8]
cmp eax, 2
jl 0x1001a8e6
push 2
pop eax
cmp dword [ebp - 0x25a4], eax
jg 0x1001a6f2
mov eax, dword [ebp - 0x25a4]
push dword [ebp - 0x25a0]
mov ebx, dword [ebp - 0x25a8]
neg eax
push eax
call fcn.1000a0aa
pop ecx
pop ecx
test eax, eax
je 0x1001ac6f
mov eax, dword [ebp - 0x25f0]
fld qword [eax + 0x100f39a0]
mov ebx, dword [ebp - 0x25a0]
fstp qword [ebp - 0x2604]
shl ebx, 3
fld qword [eax + 0x100f5c68]
push ecx
fstp qword [ebp - 0x25cc]
push ecx
fld qword [ebx + 0x100f39a0]
lea esi, [ebp - 0x25b4]
fstp qword [ebp - 0x25dc]
mov dword [ebp - 0x25e4], ebx
fld qword [ebx + 0x100f5c68]
fstp qword [ebp - 0x25ec]
fld qword [edi]
lea edi, [ebp - 0x2604]
fstp qword [ebp - 0x25b4]
fld qword [0x100edf58]
fstp qword [esp]
call fcn.10008518
mov eax, dword [ebp - 0x25fc]
fld qword [eax]
lea edi, [ebp - 0x25cc]
fstp qword [ebp - 0x25b4]
fld qword [0x100edf58]
fstp qword [esp]
call fcn.10008518
fld qword [ebx + 0x100f36d0]
lea edi, [ebp - 0x25dc]
fstp qword [ebp - 0x25b4]
fld qword [0x100edf58]
fstp qword [esp]
call fcn.10008518
fld qword [ebx + 0x100f5998]
lea edi, [ebp - 0x25ec]
fstp qword [ebp - 0x25b4]
fld qword [0x100edf58]
fstp qword [esp]
call fcn.10008518
cmp dword [ebp - 0x25a4], 2
pop ecx
pop ecx
jne 0x1001aa08
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.100207c2
fstp qword [ebp - 0x25b4]
fld qword [ebp - 0x25ec]
fsub qword [ebp - 0x25cc]
fstp qword [esp]
call fcn.100207c2
fld qword [ebp - 0x25b4]
add esp, 8
fucompp
fnstsw ax
test ah, 0x44
jnp 0x1001ac69
mov eax, dword [ebp - 0x2590]
cmp eax, dword [ebp - 0x2610]
jge 0x1001ac69
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 [0x100b4978]
fnstsw ax
test ah, 0x41
jne 0x1001ab19
or dword [ebp - 0x2598], 0xffffffff
jmp 0x1001ab23
mov dword [ebp - 0x2598], 1
fxch st(1)
push ecx
fabs
push ecx
fstp qword [ebp - 0x25cc]
fstp qword [esp]
call fcn.100207c2
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.10020a78
fmul qword [ebp - 0x25b4]
add esp, 8
fadd qword [ecx]
fstp qword [esp]
call fcn.10020874
fstp qword [esi + 0x14]
pop ecx
fld qword [ebx + 0x100f5998]
pop ecx
fsub qword [ebx + 0x100f36d0]
fld st(0)
fabs
fcomp qword [0x100b4978]
fnstsw ax
test ah, 0x41
jne 0x1001ab98
or dword [ebp - 0x2598], 0xffffffff
jmp 0x1001aba2
mov dword [ebp - 0x2598], 1
push ecx
push ecx
fstp qword [esp]
call fcn.100207c2
fimul dword [ebp - 0x2598]
fmul qword [ebp - 0x25cc]
fstp qword [ebp - 0x25cc]
fld qword [ebx + 0x100f5998]
fstp qword [esp]
push ecx
fld qword [ebx + 0x100f36d0]
push ecx
fstp qword [esp]
call fcn.10020a78
fmul qword [ebp - 0x25cc]
add esp, 8
fadd qword [ebx + 0x100f36d0]
fstp qword [esp]
call fcn.10020874
mov edi, dword [ebp - 0x25f0]
fstp qword [esi + 0x1c]
fld qword [edi + 0x100f5f38]
fstp qword [esp]
call fcn.100207c2
call fcn.1007d440
fld qword [edi + 0x100f3c70]
fstp qword [esp]
mov bl, al
call fcn.100207c2
call fcn.1007d440
mov edi, dword [ebp - 0x25e4]
add bl, al
mov byte [esi + 0x24], bl
fld qword [edi + 0x100f5f38]
fstp qword [esp]
call fcn.100207c2
call fcn.1007d440
fld qword [edi + 0x100f3c70]
fstp qword [esp]
mov bl, al
call fcn.100207c2
add esp, 8
call fcn.1007d440
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 0x1001a8d9
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.1001945d
add esp, 0xc
mov esi, dword [ebp - 0x2590]
cmp esi, dword [ebp - 0x2610]
jl 0x1001acc6
cmp dword [ebp - 0x2638], 0
je 0x1001acc6
mov ecx, str.Too_many_transit_events_found._n
call fcn.10021135
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.10020f7b
pop ecx
pop ecx
mov dword [ebp - 0x25d0], eax
cmp eax, dword [ebp - 0x25f4]
jle 0x10019a3c
inc dword [ebp - 0x25bc]
mov eax, dword [ebp - 0x25bc]
cmp eax, dword [ebp - 0x2608]
jle 0x100199dc
inc dword [ebp - 0x25c0]
mov eax, dword [ebp - 0x25c0]
cmp eax, dword [ebp - 0x260c]
jle 0x100199a3
cmp dword [ebp - 0x262c], 0
jne 0x1001ad46
cmp dword [ebp - 0x2638], 0
je 0x1001ad46
mov ecx, str.No_transit_events_found._n
call fcn.10021135
push 0x10
pop ecx
mov esi, 0x100edfa0
mov edi, 0x100edf60
push 1
rep movsd dword es:[edi], dword [esi]
call fcn.10008c45
mov ecx, dword [ebp - 8]
add esp, 4
fstp st(0)
pop edi
pop esi
xor ecx, ebp
pop ebx
call fcn.10067574
leave
ret