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

Disassembly:
sub esp, 0x28
push ebp
push esi
mov esi, ecx
mov eax, dword [esi]
mov ebp, 1
cmp dword [eax + 0x1ff4], ebp
jne 0x42e557
push ebx
push edi
or edi, 0xffffffff
xor ebx, ebx
push str.SeasonRaces
mov ecx, 0xa1a52c
mov dword [esi + 0x5adc], edi
mov dword [esi + 0x5ad8], ebx
call fcn.00567f50
cmp eax, ebx
je 0x42de4e
mov ecx, dword [0x91d63c]
cmp ecx, ebx
jne 0x42ddff
mov ecx, 0x5ad73f
push ecx
mov ecx, eax
call fcn.00567f50
cmp eax, ebx
je 0x42de4e
push str.PitWindow
mov ecx, eax
call fcn.00567f50
cmp eax, ebx
je 0x42de4e
mov eax, dword [eax + 0x14]
cmp eax, ebx
jne 0x42de27
mov eax, 0x5ad73f
push eax
call fcn.0058acaa
add esp, 4
mov ebp, eax
call fcn.00588c7e
cdq
mov ecx, 3
idiv ecx
lea edx, [edx + ebp - 1]
mov dword [esi + 0x5adc], edx
mov ebp, 1
cmp dword [0x921690], ebp
jne 0x42de6c
cmp dword [0x92178c], ebp
jne 0x42de6c
mov eax, dword [esi + 0x5adc]
mov dword [esi + 0x5adc], eax
jmp 0x42de72
mov dword [esi + 0x5adc], edi
fld dword [0x5c02d0]
lea eax, [esi + 0x5a7c]
mov ecx, 5
mov edx, dword [0xa191c0]
fst dword [eax - 4]
mov dword [eax - 8], edx
mov dword [eax], ebp
mov dword [eax + 4], ebx
add eax, 0x10
sub ecx, ebp
jne 0x42de83
fstp st(0)
fild dword [0x921690]
fmul dword [esi + 0x5acc]
fmul dword [0x5c03dc]
fstp dword [esi + 0x5acc]
fld dword [esi + 0x31ac]
fmul dword [esi + 0x31a8]
fld dword [0x679320]
fmul st(1), st(0)
fld1
fcom st(2)
fnstsw ax
fstp st(2)
test ah, 0x41
jne 0x42dedc
fstp st(0)
fld st(0)
jmp 0x42deea
fld dword [esi + 0x31ac]
fmul dword [esi + 0x31a8]
fmulp st(1)
fst dword [esi + 0x5acc]
fild dword [0x921690]
fmul dword [0x5adac0]
fcom st(1)
fnstsw ax
fstp st(1)
test ah, 0x41
jne 0x42df24
fcom st(1)
fnstsw ax
test ah, 5
jp 0x42df1a
fstp st(0)
fstp dword [esi + 0x5acc]
jmp 0x42df28
fstp st(1)
fstp dword [esi + 0x5acc]
jmp 0x42df28
fstp st(0)
fstp st(0)
fld dword [0x5c0018]
mov dword [esi + 0x5ac4], ebx
fstp dword [esi + 0x5ad4]
mov eax, dword [0x8f71bc]
cmp eax, 0xa
jl 0x42e20b
cmp eax, 0xd
jg 0x42e20b
push str.SeasonRaces
mov ecx, 0xa1a52c
call fcn.00567f50
cmp eax, ebx
je 0x42e180
mov ecx, dword [0x91d63c]
cmp ecx, ebx
jne 0x42df77
mov ecx, 0x5ad73f
push ecx
mov ecx, eax
call fcn.00567f50
cmp eax, ebx
je 0x42e180
push str.PitStopStrategies
mov ecx, eax
call fcn.00567f50
cmp eax, ebx
je 0x42e180
mov edx, dword [esi]
mov ecx, dword [edx + 0x5cd0]
shl ecx, 6
lea edx, [ecx + edx + 0x5bcc]
push edx
mov ecx, eax
call fcn.00567f50
cmp eax, ebx
je 0x42e180
mov eax, dword [eax + 0x14]
cmp eax, ebx
jne 0x42dfc9
mov eax, 0x5ad73f
lea edx, [esp + 0x18]
sub edx, eax
nop
mov cl, byte [eax]
mov byte [edx + eax], cl
add eax, ebp
test cl, cl
jne 0x42dfd0
movsx eax, byte [esp + 0x18]
fild dword [0x921690]
sub eax, 0x30
cmp eax, ebp
fstp dword [esp + 0x10]
lea ebx, [esi + 0x5a74]
jne 0x42e020
push ebx
lea edx, [esp + 0x1f]
push 0x5c04f8
push edx
mov dword [esi + 0x5a6c], ebp
call fcn.00589c18
mov eax, dword [0xa191c0]
add esp, 0xc
mov dword [esi + 0x5a84], eax
jmp 0x42e0c9
cmp eax, 2
jne 0x42e052
lea ecx, [esi + 0x5a84]
push ecx
push ebx
lea edx, [esp + 0x23]
push str._d__d
push edx
mov dword [esi + 0x5a6c], eax
call fcn.00589c18
mov eax, dword [0xa191c0]
add esp, 0x10
mov dword [esi + 0x5a94], eax
jmp 0x42e0c9
cmp eax, 3
jne 0x42e08c
lea ecx, [esi + 0x5a94]
push ecx
lea edx, [esi + 0x5a84]
push edx
push ebx
mov dword [esi + 0x5a6c], eax
lea eax, [esp + 0x27]
push str._d__d__d
push eax
call fcn.00589c18
mov ecx, dword [0xa191c0]
add esp, 0x14
mov dword [esi + 0x5aa4], ecx
jmp 0x42e0c9
lea edx, [esi + 0x5aa4]
push edx
lea eax, [esi + 0x5a94]
push eax
lea ecx, [esi + 0x5a84]
push ecx
push ebx
lea edx, [esp + 0x2b]
push 0x5c04d8
push edx
mov dword [esi + 0x5a6c], 4
call fcn.00589c18
mov eax, dword [0xa191c0]
add esp, 0x18
mov dword [esi + 0x5ab4], eax
xor ebp, ebp
cmp dword [esi + 0x5a6c], ebp
jle 0x42e0f6
fld1
mov edi, ebx
fdiv dword [esp + 0x10]
fild dword [edi]
fmul st(1)
call fcn.00588a90
mov dword [edi], eax
add ebp, 1
add edi, 0x10
cmp ebp, dword [esi + 0x5a6c]
jl 0x42e0db
fstp st(0)
xor ecx, ecx
cmp dword [esi + 0x5a6c], ecx
jle 0x42e14b
mov eax, dword [0xa191c0]
mov edx, ecx
shl edx, 4
lea edx, [edx + esi + 0x5a74]
add eax, 0xfffffffb
cmp dword [edx], eax
jle 0x42e140
cmp ecx, 5
mov dword [esi + 0x5a6c], ecx
jge 0x42e140
mov eax, 5
sub eax, ecx
add ecx, eax
lea esp, [esp]
mov edi, dword [0xa191c0]
mov dword [edx], edi
add edx, 0x10
sub eax, 1
jne 0x42e130
add ecx, 1
cmp ecx, dword [esi + 0x5a6c]
jl 0x42e100
xor ecx, ecx
cmp dword [esi + 0x5a6c], ecx
jle 0x42e17b
mov eax, ebx
mov edx, dword [eax + 0x10]
sub edx, dword [eax]
add ecx, 1
mov dword [esp + 0x10], edx
fild dword [esp + 0x10]
add eax, 0x10
fmul dword [esi + 0x5acc]
fstp dword [eax - 0xc]
cmp ecx, dword [esi + 0x5a6c]
jl 0x42e157
xor ebx, ebx
lea ebp, [ebx + 1]
cmp dword [0x921690], ebx
jne 0x42e1a1
cmp dword [0x92178c], ebx
jne 0x42e1a1
mov dword [esi + 0x5a6c], ebx
mov eax, dword [0xa191c0]
mov dword [esi + 0x5a74], eax
fld dword [0x5c04d4]
fld dword [0xa191d0]
fcom st(1)
fnstsw ax
fstp st(1)
test ah, 1
jne 0x42e1ef
fcomp dword [0x5c04d0]
fnstsw ax
test ah, 0x41
jp 0x42e1f1
mov dword [esi + 0x5a6c], ebp
call fcn.00588c7e
cdq
mov ecx, 9
idiv ecx
add edx, 0xa
mov dword [esi + 0x5a74], edx
mov edx, dword [0xa191c0]
mov dword [esi + 0x5a84], edx
jmp 0x42e1f1
fstp st(0)
mov eax, dword [esi + 0x5a6c]
add eax, 0x5a8
shl eax, 4
mov dword [eax + esi], 8
jmp case.default.0x42e21b
cmp eax, 9
ja case.default.0x42e21b
movzx ecx, byte [eax + 0x42e570]
jmp dword [ecx*4 + 0x42e560]
fld dword [esi + 0x5acc]
mov ebx, 8
fmul dword [0x5ae038]
mov dword [esi + 0x5a6c], 1
mov dword [esi + 0x5a74], 3
mov dword [esi + 0x5a80], ebx
fstp dword [esi + 0x5a78]
cmp dword [0x8f71bc], 7
jge case.default.0x42e21b
call fcn.00588c7e
and eax, 0x80000001
jns 0x42e271
dec eax
or eax, 0xfffffffe
inc eax
add eax, 3
mov dword [esi + 0x5a74], eax
mov dword [esi + 0x5a6c], 4
call fcn.00588c7e
and eax, 0x80000001
jns 0x42e295
dec eax
or eax, 0xfffffffe
inc eax
fld dword [esi + 0x5acc]
mov edx, dword [esi + 0x5a74]
fmul dword [0x5ae038]
lea eax, [eax + edx + 3]
mov dword [esi + 0x5a84], eax
mov dword [esi + 0x5a90], ebx
fstp dword [esi + 0x5a88]
call fcn.00588c7e
and eax, 0x80000001
jns 0x42e2ce
dec eax
or eax, 0xfffffffe
inc eax
fld dword [esi + 0x5acc]
mov ecx, dword [esi + 0x5a84]
fmul dword [0x5ae038]
lea edx, [eax + ecx + 3]
mov dword [esi + 0x5a94], edx
mov dword [esi + 0x5aa0], ebx
fstp dword [esi + 0x5a98]
call fcn.00588c7e
and eax, 0x80000001
jns 0x42e307
dec eax
or eax, 0xfffffffe
inc eax
fld dword [esi + 0x5acc]
mov ecx, dword [esi + 0x5a94]
fmul dword [0x5ae038]
lea edx, [eax + ecx + 3]
mov dword [esi + 0x5aa4], edx
mov dword [esi + 0x5ab0], ebx
fstp dword [esi + 0x5aa8]
jmp case.default.0x42e21b
call fcn.00588c7e
cdq
mov ecx, 0x19
idiv ecx
neg edx
sbb edx, edx
neg edx
add edx, 3
xor ecx, ecx
test edx, edx
mov dword [esi + 0x5a6c], edx
jle 0x42e38d
fld dword [0x5c04cc]
lea eax, [esi + 0x5a78]
mov edx, 0xb
lea ebx, [ecx + 8]
mov dword [eax - 4], edx
fld dword [esi + 0x5acc]
fmul st(1)
mov dword [eax + 8], ebx
add ecx, 1
add edx, 0xc
fstp dword [eax]
add eax, 0x10
cmp ecx, dword [esi + 0x5a6c]
jl 0x42e36a
fstp st(0)
xor ecx, ecx
cmp dword [esi + 0x5a6c], ecx
jle case.default.0x42e21b
lea eax, [esi + 0x5a74]
mov edx, dword [eax + 0x10]
sub edx, dword [eax]
add ecx, 1
mov dword [esp + 0x10], edx
fild dword [esp + 0x10]
add eax, 0x10
fadd dword [0x5adc7c]
fmul dword [esi + 0x5acc]
fstp dword [eax - 0xc]
cmp ecx, dword [esi + 0x5a6c]
jl 0x42e3a1
jmp case.default.0x42e21b
cmp dword [0x920ba4], ebx
je case.0x42e21b.1
mov dword [esi + 0x5a6c], ebx
mov dword [esi + 0x5a74], 0xf423f
jmp case.default.0x42e21b
call fcn.00588c7e
and eax, 0x80000001
jns 0x42e3fe
dec eax
or eax, 0xfffffffe
inc eax
fldz
neg eax
sbb eax, eax
fstp dword [esp + 0x10]
neg eax
add eax, 3
xor ebp, ebp
test eax, eax
mov dword [esi + 0x5a6c], eax
jle 0x42e45a
lea edi, [esi + 0x5a80]
lea ebx, [ebp + 8]
call fcn.00588c7e
cdq
mov ecx, 5
idiv ecx
add edx, 3
mov dword [esp + 0x14], edx
fild dword [esp + 0x14]
fadd dword [esp + 0x10]
fst dword [esp + 0x10]
call fcn.00588a90
mov dword [edi - 0xc], eax
mov dword [edi], ebx
add ebp, 1
add edi, 0x10
cmp ebp, dword [esi + 0x5a6c]
jl 0x42e422
xor ecx, ecx
cmp dword [esi + 0x5a6c], ecx
jle case.default.0x42e21b
lea eax, [esi + 0x5a74]
lea ebx, [ebx]
mov edx, dword [eax + 0x10]
sub edx, dword [eax]
add ecx, 1
mov dword [esp + 0x14], edx
fild dword [esp + 0x14]
add eax, 0x10
fadd dword [0x5adc7c]
fmul dword [esi + 0x5acc]
fstp dword [eax - 0xc]
cmp ecx, dword [esi + 0x5a6c]
jl 0x42e470
mov ebx, 1
cmp dword [esi + 0x5a74], ebx
jge 0x42e4ad
mov dword [esi + 0x5a74], ebx
mov eax, dword [0x8f71bc]
cmp eax, 0xa
jl 0x42e4c4
cmp eax, 0xd
jg 0x42e4c4
fild dword [0xa191c0]
jmp 0x42e4ca
fild dword [esi + 0x5a74]
fadd dword [0x5adc7c]
fmul dword [esi + 0x5acc]
fstp dword [esi + 0x5ad4]
cmp dword [0x921690], 0
jne 0x42e4ed
fld1
fstp dword [esi + 0x5ad4]
fld dword [esi + 0x31a0]
fcomp dword [esi + 0x5ad4]
fnstsw ax
test ah, 5
jp 0x42e50c
fld dword [esi + 0x31a0]
fstp dword [esi + 0x5ad4]
cmp dword [esi + 0x3d24], ebx
jne 0x42e525
cmp dword [0x8f71bc], 0
je 0x42e525
fld dword [esi + 0x31a0]
jmp 0x42e52b
fld dword [esi + 0x5ad4]
push ecx
lea edi, [esi + 4]
fstp dword [esp]
mov ecx, edi
call fcn.00502de0
mov ecx, esi
mov dword [esi + 0x5a70], 2
call fcn.00424a70
push ebx
push ebx
push eax
push eax
mov ecx, edi
call fcn.0050b770
pop edi
pop ebx
pop esi
pop ebp
add esp, 0x28
ret