Function at 0x43b450
Capabilities:
Resolve function by parsing pe exports
Validate payment card number using luhn algorithm

Disassembly:
mov eax, 0x9ee4
call fcn.0046ae80
push ebx
mov ebx, dword [esp + 0x9eec]
movsx edx, bl
push ebp
push esi
lea eax, [edx + edx*2]
push edi
lea edi, [esp + 0x3d74]
mov dword [esp + 0x5c], 0xc61c4000
lea esi, [edx + eax*4]
mov dword [esp + 0x18], 0xc61c4000
shl esi, 2
mov byte [esp + 0x1f], 0
mov byte [esp + 0x1e], 0
mov eax, dword [esi + 0x1cf2df0]
lea eax, [eax + eax*8]
lea ecx, [eax + eax*8]
mov eax, edx
shl eax, 4
add eax, edx
lea ebp, [ecx*8 + 0x1cefac0]
shl eax, 2
mov dword [esp + 0x7c], eax
or eax, 0xffffffff
mov dword [esp + 0x54], eax
mov dword [esp + 0x50], eax
mov dword [esp + 0x4c], eax
mov dword [esp + 0x80], eax
mov ecx, 0xc30
xor eax, eax
rep stosd dword es:[edi], eax
lea edx, [edx + edx*2]
mov ecx, 0xc30
lea edi, [esp + 0xcb4]
mov dword [esp + 0x48], ebp
shl edx, 2
rep stosd dword es:[edi], eax
fld dword [edx + 0x1ceeba8]
fcomp dword [0x4772e0]
lea ecx, [edx + 0x1ceeba8]
mov dword [esp + 0x6c], edx
mov edx, 0x1cf2df4
mov dword [esp + 0x60], ecx
fnstsw ax
sub edx, esi
test ah, 1
mov dword [esp + 0x58], edx
je 0x43b527
fld dword [ecx]
fchs
fstp dword [ecx]
fld dword [edx]
fchs
fstp dword [edx]
mov byte [esp + 0x1f], 1
fld dword [ecx + 4]
fcomp dword [0x4772e0]
fnstsw ax
test ah, 1
je 0x43b54c
fld dword [ecx + 4]
fchs
fstp dword [ecx + 4]
fld dword [edx + 4]
fchs
fstp dword [edx + 4]
mov byte [esp + 0x1e], 1
lea edx, [esp + 0x33]
lea eax, [esp + 0x74]
push edx
push eax
lea edx, [esp + 0x78]
lea eax, [esp + 0x80]
push edx
push eax
push ecx
call fcn.0043c570
mov eax, dword [esp + 0x8c]
mov edx, dword [esp + 0x84]
push ebx
lea ecx, [eax + eax*4]
lea eax, [edx + ecx*2]
mov ecx, dword [esp + 0x8c]
lea eax, [eax + eax*2]
lea ecx, [ecx + eax*2]
mov eax, ecx
shl eax, 6
add eax, ecx
lea eax, [eax + eax*2]
lea esi, [eax + eax*8]
shl esi, 5
add esi, 0x1013fe0
mov dword [esp + 0x7c], esi
call fcn.0043beb0
lea edx, [eax + eax*2]
add esp, 0x18
lea ebx, [esi + 0x10]
lea eax, [eax + edx*4]
lea ecx, [ebp + eax*4 + 0x184]
xor eax, eax
mov dword [esp + 0x44], ecx
mov ecx, 0xc61c4000
mov dword [esp + 0x20], 5
xor edi, edi
mov dword [esp + 0x14], eax
mov dword [esp + 0x24], edi
mov edx, dword [esp + 0x44]
mov ebp, 1
mov dword [esp + 0x2c], ebp
lea esi, [edx + 0x1c]
mov dword [esp + 0x34], esi
mov al, byte [ebx + 4]
test al, al
je 0x43b7eb
mov eax, dword [esp + 0x44]
mov ecx, dword [eax]
mov edx, dword [eax + 4]
shl ecx, 4
fld dword [ecx + 0x47d130]
fcomp dword [0x4772e0]
fnstsw ax
test ah, 0x40
jne 0x43b61d
fild dword [ebx - 4]
jmp 0x43b620
fild dword [ebx - 0x10]
fmul dword [0x4772a8]
fstp dword [esp + 0x28]
fld dword [ecx + 0x47d3c4]
fcomp dword [0x4772e0]
fnstsw ax
test ah, 0x40
jne 0x43b641
fild dword [ebx]
jmp 0x43b644
fild dword [ebx - 0xc]
fmul dword [0x4772a8]
mov eax, dword [esp + 0x58]
fld dword [ecx + 0x47d12c]
fmul dword [eax]
shl edx, 4
mov eax, edx
fsubr dword [esp + 0x28]
test edi, edi
fabs
fmul dword [ecx + 0x47d128]
fadd dword [ecx + 0x47d124]
mov ecx, dword [esp + 0x58]
fstp dword [esp + 0x38]
fld dword [eax + 0x47d3c0]
fmul dword [ecx + 4]
fsubp st(1)
fabs
fmul dword [eax + 0x47d3bc]
fadd dword [eax + 0x47d3b8]
fld dword [esp + 0x38]
fmul dword [esi]
fstp dword [esp + 0x38]
fmul dword [esi]
fstp dword [esp + 0x3c]
jle 0x43b6c5
cmp edi, 5
jge 0x43b6c5
mov eax, dword [esp + 0x48]
fld dword [esp + 0x38]
fmul dword [eax + 0x17c]
fstp dword [esp + 0x38]
fld dword [esp + 0x3c]
fmul dword [eax + 0x17c]
jmp 0x43b6e6
cmp edi, 4
jle 0x43b6ea
mov eax, dword [esp + 0x48]
fld dword [esp + 0x38]
fmul dword [eax + 0x180]
fstp dword [esp + 0x38]
fld dword [esp + 0x3c]
fmul dword [eax + 0x180]
fstp dword [esp + 0x3c]
test edi, edi
jle 0x43b70a
mov eax, dword [esp + 0x44]
fld dword [esp + 0x38]
fmul dword [eax + 0x30]
fstp dword [esp + 0x38]
fld dword [esp + 0x3c]
fmul dword [eax + 0x30]
fstp dword [esp + 0x3c]
jmp 0x43b70e
mov eax, dword [esp + 0x44]
mov dl, byte [eax + 0xc]
mov eax, dword [eax + 8]
push edx
push eax
push edi
call fcn.0043bf60
fld dword [esp + 0x44]
add esp, 0xc
test al, al
je 0x43b733
fadd st(0), st(0)
fld dword [esp + 0x3c]
fadd st(0), st(0)
fstp dword [esp + 0x3c]
mov ecx, dword [esp + 0x14]
add ebp, ecx
shl ebp, 2
fst dword [esp + ebp + 0x3d74]
fld dword [esp + 0x3c]
fstp dword [esp + ebp + 0xcb4]
fcom dword [esp + 0x5c]
fnstsw ax
test ah, 0x41
jne 0x43b75f
fstp dword [esp + 0x5c]
jmp 0x43b761
fstp st(0)
fld dword [esp + 0x3c]
fcomp dword [esp + 0x18]
fnstsw ax
test ah, 0x41
jne 0x43b778
mov edx, dword [esp + 0x3c]
mov dword [esp + 0x18], edx
fild dword [ebx]
mov eax, dword [esp + 0x2c]
push eax
push ecx
fmul dword [0x4772a8]
fstp dword [esp]
fild dword [ebx - 4]
push ecx
mov ecx, dword [esp + 0x6c]
sub esp, 0xc
fmul dword [0x4772a8]
mov eax, dword [ecx]
mov edx, esp
sub esp, 0x30
mov edi, esp
fstp dword [esp + 0x3c]
mov dword [edx], eax
mov eax, dword [ecx + 4]
mov ecx, dword [ecx + 8]
mov dword [edx + 4], eax
mov dword [edx + 8], ecx
mov edx, dword [esp + 0x90]
mov ecx, 0xc
lea esi, [edx + 0xb4]
rep movsd dword es:[edi], dword [esi]
call fcn.0043c130
fstp dword [esp + ebp + 0x6e7c]
mov edi, dword [esp + 0x6c]
mov ebp, dword [esp + 0x74]
mov esi, dword [esp + 0x7c]
add esp, 0x48
mov ecx, 0xc61c4000
jmp 0x43b802
mov eax, dword [esp + 0x14]
add eax, ebp
shl eax, 2
mov dword [esp + eax + 0x3d74], ecx
mov dword [esp + eax + 0xcb4], ecx
inc ebp
add ebx, 0x18
add esi, 4
cmp ebp, 4
mov dword [esp + 0x2c], ebp
mov dword [esp + 0x34], esi
jl 0x43b5ee
mov edx, dword [esp + 0x14]
inc edi
add edx, 4
cmp edi, 0xc
mov dword [esp + 0x24], edi
mov dword [esp + 0x14], edx
jl 0x43b5da
mov eax, edx
mov edx, dword [esp + 0x20]
dec edx
mov dword [esp + 0x20], edx
jne 0x43b5d0
cmp eax, 0xc30
jl 0x43b5c8
mov ecx, 0x30c
xor eax, eax
lea edi, [esp + 0x84]
xor ebp, ebp
rep stosd dword es:[edi], eax
mov ecx, dword [esp + 0x9ef8]
mov dword [esp + 0x2c], ebp
push ecx
call fcn.0043c470
mov eax, dword [esp + 0x4c]
mov edx, dword [esp + 0x68]
fstp dword [esp + 0x6c]
fld dword [eax + 0xe0]
fadd st(0), st(0)
fld dword [0x4772bc]
fsub dword [esp + 0x6c]
add esp, 4
xor edi, edi
fmulp st(1)
lea ebx, [edx + 0x14]
fsubr dword [0x4772bc]
fmul dword [eax + 0xb4]
fstp dword [esp + 0x28]
fld dword [eax + 0xb0]
fsub dword [0x478088]
fstp dword [esp + 0x34]
mov dword [esp + 0x24], 5
mov dword [esp + 0x20], 0xc
mov esi, 1
cmp byte [ebx], 0
je 0x43b919
fld dword [esp + 0x34]
fadd dword [0x4772bc]
lea eax, [edi + esi]
fsub dword [esp + eax*4 + 0x6e34]
fcomp dword [esp + 0x28]
fnstsw ax
test ah, 0x41
je 0x43b919
lea ecx, [edi + esi]
inc ebp
cmp ebp, 0x3e80
mov byte [esp + ecx + 0x84], 1
jle 0x43b919
push str.num_shots_out_of__int__range
push 0x4dfbec
call fcn.00401170
add esp, 8
inc esi
add ebx, 0x18
cmp esi, 4
jl 0x43b8cf
mov eax, dword [esp + 0x20]
add edi, 4
dec eax
mov dword [esp + 0x20], eax
jne 0x43b8ca
mov eax, dword [esp + 0x24]
dec eax
mov dword [esp + 0x24], eax
jne 0x43b8c2
cmp edi, 0xc30
jl 0x43b8ba
test ebp, ebp
mov dword [esp + 0x2c], ebp
jne 0x43b96a
mov ecx, 0x30c
mov eax, 0x1010101
lea edi, [esp + 0x84]
mov dword [esp + 0x2c], 0x924
rep stosd dword es:[edi], eax
mov bl, byte [esp + 0x33]
test bl, bl
je 0x43ba12
xor edi, edi
xor edx, edx
xor ecx, ecx
mov esi, 1
cmp bl, 1
jne 0x43b9a1
cmp esi, 3
je 0x43b9f0
lea eax, [edi + edx]
lea eax, [eax + eax*2]
lea eax, [ecx + eax*4]
lea eax, [esi + eax*4]
mov byte [esp + eax + 0x84], 0
jmp 0x43b9f0
cmp bl, 2
jne 0x43b9f0
cmp esi, 1
jne 0x43b9c9
lea eax, [edi + edx]
lea eax, [eax + eax*2]
lea eax, [ecx + eax*4]
shl eax, 4
fld dword [esp + eax + 0x3d78]
lea eax, [esp + eax + 0x3d78]
fadd st(0), st(0)
jmp 0x43b9ee
cmp esi, 2
jne 0x43b9f0
lea eax, [edi + edx]
lea eax, [eax + eax*2]
lea eax, [ecx + eax*4]
shl eax, 4
fld dword [esp + eax + 0x3d7c]
fmul dword [0x478128]
lea eax, [esp + eax + 0x3d7c]
fstp dword [eax]
inc esi
cmp esi, 4
jl 0x43b981
inc ecx
cmp ecx, 0xc
jl 0x43b97c
inc edx
cmp edx, 5
jl 0x43b97a
add edi, 5
cmp edi, 0x41
jl 0x43b978
xor ebp, ebp
xor eax, eax
lea edi, [esp + 0x84]
mov ecx, dword [esp + 0x44]
mov dword [esp + 0x28], 5
mov edx, dword [ecx + 0x10]
mov dword [esp + 0x20], edx
mov dword [esp + 0x24], eax
mov dword [esp + 0x34], 0xc
mov esi, 1
mov ebx, eax
cmp byte [edi + esi], 0
je 0x43ba94
fld dword [esp + 0x20]
fmul dword [esp + 0x5c]
fcomp dword [esp + ebx + 0x3d78]
fnstsw ax
test ah, 0x41
je 0x43ba94
fld dword [esp + 0x20]
fmul dword [esp + 0x18]
fcomp dword [esp + ebx + 0xcb8]
fnstsw ax
test ah, 0x41
je 0x43ba94
inc ebp
mov byte [edi + esi], 2
cmp ebp, 0x3e80
jle 0x43ba94
push str.num_shots_out_of__int__range
push 0x4dfbec
call fcn.00401170
add esp, 8
inc esi
add ebx, 4
cmp esi, 4
jl 0x43ba43
mov eax, dword [esp + 0x24]
mov ecx, dword [esp + 0x34]
add eax, 0x10
add edi, 4
dec ecx
mov dword [esp + 0x24], eax
mov dword [esp + 0x34], ecx
jne 0x43ba3c
mov ecx, dword [esp + 0x28]
dec ecx
mov dword [esp + 0x28], ecx
jne 0x43ba30
cmp eax, 0x30c0
jl 0x43ba1d
test ebp, ebp
jne 0x43bbb9
call fcn.0046adb6
cdq
mov ecx, 0xd
idiv ecx
mov dword [esp + 0x54], edx
call fcn.0046adb6
cdq
mov ecx, 5
xor edi, edi
idiv ecx
mov dword [esp + 0x4c], edi
mov dword [esp + 0x50], edx
call fcn.0046adb6
cdq
mov ecx, 3
mov esi, dword [esp + 0x2c]
idiv ecx
mov ebx, edx
inc ebx
cmp esi, edi
jle 0x43bc55
cmp esi, 1
mov dword [esp + 0x18], edi
mov byte [esp + 0x13], 0
jle 0x43bb38
call fcn.0046adb6
cdq
idiv esi
mov dword [esp + 0x14], edx
jmp 0x43bb3c
mov dword [esp + 0x14], edi
xor ecx, ecx
xor ebp, ebp
xor edi, edi
mov eax, 1
lea edx, [ebp + ecx*4]
mov esi, ecx
add esi, edx
lea edx, [esi + esi*2]
lea edx, [edi + edx*4]
lea edx, [eax + edx*4]
cmp byte [esp + edx + 0x84], 1
jne 0x43bb90
mov edx, dword [esp + 0x14]
mov esi, dword [esp + 0x18]
cmp edx, esi
jne 0x43bb8c
mov dword [esp + 0x54], ecx
mov ecx, 0x3e8
mov dword [esp + 0x50], ebp
mov dword [esp + 0x4c], edi
mov ebx, eax
mov ebp, ecx
mov edi, ecx
mov eax, ecx
mov byte [esp + 0x13], 1
inc dword [esp + 0x18]
inc eax
cmp eax, 4
jl 0x43bb47
inc edi
cmp edi, 0xc
jl 0x43bb42
inc ebp
cmp ebp, 5
jl 0x43bb40
inc ecx
cmp ecx, 0xd
jl 0x43bb3e
mov al, byte [esp + 0x13]
test al, al
je 0x43bc55
jmp 0x43bc4d
mov dword [esp + 0x18], 0
mov byte [esp + 0x13], 0
call fcn.0046adb6
cdq
idiv ebp
mov ebx, dword [esp + 0x80]
xor ecx, ecx
mov dword [esp + 0x14], edx
xor ebp, ebp
xor edi, edi
mov eax, 1
lea edx, [ebp + ecx*4]
mov esi, ecx
add esi, edx
lea edx, [esi + esi*2]
lea edx, [edi + edx*4]
lea edx, [eax + edx*4]
cmp byte [esp + edx + 0x84], 2
jne 0x43bc2d
mov edx, dword [esp + 0x14]
mov esi, dword [esp + 0x18]
cmp edx, esi
jne 0x43bc29
mov dword [esp + 0x54], ecx
mov ecx, 0x3e8
mov dword [esp + 0x50], ebp
mov dword [esp + 0x4c], edi
mov ebx, eax
mov ebp, ecx
mov edi, ecx
mov eax, ecx
mov byte [esp + 0x13], 1
inc dword [esp + 0x18]
inc eax
cmp eax, 4
jl 0x43bbe4
inc edi
cmp edi, 0xc
jl 0x43bbdf
inc ebp
cmp ebp, 5
jl 0x43bbdd
inc ecx
cmp ecx, 0xd
jl 0x43bbdb
mov al, byte [esp + 0x13]
test al, al
je 0x43bc55
mov eax, dword [esp + 0x14]
test eax, eax
jge 0x43bcaf
mov dword [esp + 0x4c], 0
call fcn.0046adb6
cdq
mov ecx, 0xd
idiv ecx
mov esi, edx
mov dword [esp + 0x54], esi
call fcn.0046adb6
cdq
mov ecx, 5
idiv ecx
mov edi, edx
mov dword [esp + 0x50], edi
call fcn.0046adb6
cdq
mov ecx, 3
idiv ecx
mov eax, esi
mov ebx, edx
lea edx, [edi + esi*4]
add eax, edx
mov edx, dword [esp + 0x64]
inc ebx
lea eax, [eax + eax*8]
lea eax, [ebx + eax*4]
lea ecx, [eax + eax*2]
mov al, byte [edx + ecx*8 - 4]
test al, al
je 0x43bc5d
mov eax, dword [esp + 0x54]
mov esi, dword [esp + 0x7c]
mov edi, dword [esp + 0x4c]
mov ecx, dword [eax*4 + 0x1ceea40]
mov dword [esi + 0x1ceeb50], ecx
mov ecx, dword [esp + 0x50]
fld dword [0x1cf28d8]
mov edx, dword [ecx*4 + 0x1ceea74]
lea ecx, [ecx + eax*4]
add eax, ecx
mov dword [esi + 0x1ceeb54], edx
fchs
lea edx, [eax + eax*2]
fstp dword [esi + 0x1ceeb58]
lea eax, [edi + edx*4]
mov byte [esi + 0x1ceeb40], bl
lea ecx, [ebx + eax*4]
mov eax, dword [esp + 0x68]
mov edx, dword [esp + ecx*4 + 0x6e34]
mov dword [esi + 0x1ceeb5c], edx
mov dword [esi + 0x1ceeb60], eax
fld dword [esi + 0x1ceeb50]
fmul dword [str.33s_DataFiles300.dat]
fstp dword [esi + 0x1ceeb50]
fld dword [esi + 0x1ceeb54]
fmul dword [str.33s_DataFiles300.dat]
fstp dword [esi + 0x1ceeb54]
fld dword [esi + 0x1ceeb58]
fmul dword [str.33s_DataFiles300.dat]
fstp dword [esi + 0x1ceeb58]
call fcn.0046adb6
cdq
mov ecx, 0xa
mov ebx, dword [esp + 0x44]
idiv ecx
cmp edx, dword [ebx + 0x2c]
jg 0x43be04
fld dword [ebx + 0x28]
fcomp dword [0x4772e0]
fnstsw ax
test ah, 0x41
jne 0x43be04
cmp edi, 9
jl 0x43bda9
fld dword [ebx + 0x28]
fmul dword [0x478110]
push 0
push ecx
fstp dword [esp]
call fcn.00405460
fld dword [ebx + 0x28]
fmul dword [0x47808c]
mov eax, dword [esp + 0x50]
add esp, 8
faddp st(1)
fmul dword [eax + 0x178]
jmp 0x43be0a
call fcn.0046adb6
and eax, 0x80000003
jns 0x43bdba
dec eax
or eax, 0xfffffffc
inc eax
test eax, eax
push 0
jle 0x43bdec
fld dword [ebx + 0x28]
fmul dword [0x477fec]
push ecx
fstp dword [esp]
call fcn.00405460
fld dword [ebx + 0x28]
fmul dword [0x477fec]
mov eax, dword [esp + 0x50]
add esp, 8
faddp st(1)
fmul dword [eax + 0x178]
jmp 0x43be0a
mov edx, dword [ebx + 0x28]
push edx
call fcn.00405460
mov eax, dword [esp + 0x50]
add esp, 8
fmul dword [eax + 0x178]
jmp 0x43be0a
fld dword [0x4772e0]
lea eax, [edi + edi*2]
shl eax, 2
fld st(0)
fmul dword [eax + 0x1ceea88]
fstp dword [esi + 0x1ceeb44]
mov ecx, dword [esi + 0x1ceeb44]
fmul dword [eax + 0x1ceea90]
mov eax, dword [esp + 0x6c]
fstp dword [esi + 0x1ceeb4c]
mov dword [eax + 0x1cf2cc4], ecx
mov edx, dword [esi + 0x1ceeb4c]
mov dword [eax + 0x1cf2ccc], edx
mov al, byte [esp + 0x1f]
test al, al
je 0x43be72
mov eax, dword [esp + 0x60]
mov ecx, dword [esp + 0x58]
fld dword [eax]
fchs
fstp dword [eax]
fld dword [ecx]
fchs
fstp dword [ecx]
fld dword [esi + 0x1ceeb50]
fchs
fstp dword [esi + 0x1ceeb50]
jmp 0x43be7a
mov ecx, dword [esp + 0x58]
mov eax, dword [esp + 0x60]
mov dl, byte [esp + 0x1e]
test dl, dl
je 0x43bea0
fld dword [eax + 4]
fchs
fstp dword [eax + 4]
fld dword [ecx + 4]
fchs
fstp dword [ecx + 4]
fld dword [esi + 0x1ceeb54]
fchs
fstp dword [esi + 0x1ceeb54]
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x9ee4
ret