Function at 0x100167f0
Capabilities:
Parse credit card information

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
sub esp, 0x14
push ebx
xor eax, eax
cmp dword [ebp + 0x10], 0xa
push esi
push edi
mov dword [esp + 0x10], eax
mov dword [esp + 0x14], eax
ja case.default.0x1001681c
mov edi, dword [ebp + 0xc]
mov esi, dword [ebp + 8]
lea ebx, [eax + 9]
mov eax, dword [ebp + 0x10]
jmp dword [eax*4 + 0x10016d3c]
cmp dword [esi + 4], 0x3f
jne case.0x1001681c.1
call fcn.100158e0
push 0
lea ecx, [esp + 0x14]
push ecx
push esi
call fcn.10016d70
add esp, 0xc
cmp dword [esi + 4], 0x2c
je 0x10016829
cmp dword [esi + 4], 0x3a
jne 0x10016d14
call fcn.100158e0
push 0
lea edx, [esp + 0x1c]
push edx
push esi
call fcn.10016d70
mov eax, dword [esp + 0x1c]
add esp, 0xc
cmp dword [edi], 0
jne 0x10016870
mov eax, dword [esp + 0x18]
mov ecx, dword [esp + 0x1c]
mov dword [edi], eax
mov eax, dword [esp + 0x14]
cmp eax, ecx
ja 0x10016880
mov eax, ecx
mov dword [edi + 4], eax
jmp 0x10016819
cmp dword [esi + 4], 0x104
jne case.0x1001681c.2
call fcn.100158e0
push 2
lea eax, [esp + 0x14]
push eax
push esi
call fcn.10016d70
add esp, 0xc
cmp dword [edi], 0
jne 0x100168bb
cmp dword [esp + 0x10], 0
jne 0x100168bb
xor eax, eax
mov dword [edi], eax
mov dword [edi + 4], ebx
jmp 0x10016819
mov eax, 1
mov dword [edi], eax
mov dword [edi + 4], ebx
jmp 0x10016819
cmp dword [esi + 4], 0x105
jne case.0x1001681c.3
call fcn.100158e0
push 3
lea ecx, [esp + 0x14]
push ecx
push esi
call fcn.10016d70
add esp, 0xc
cmp dword [edi], 0
je 0x10016903
cmp dword [esp + 0x10], 0
je 0x10016903
mov eax, 1
mov dword [edi], eax
mov dword [edi + 4], ebx
jmp 0x10016819
xor eax, eax
mov dword [edi], eax
mov dword [edi + 4], ebx
jmp 0x10016819
cmp dword [esi + 4], 0x7c
jne case.0x1001681c.4
call fcn.100158e0
push 4
lea edx, [esp + 0x14]
push edx
push esi
call fcn.10016d70
mov eax, dword [esp + 0x1c]
add esp, 0xc
or dword [edi], eax
jmp 0x10016c05
cmp dword [esi + 4], 0x5e
jne case.0x1001681c.5
call fcn.100158e0
push 5
lea ecx, [esp + 0x14]
push ecx
push esi
call fcn.10016d70
mov edx, dword [esp + 0x1c]
add esp, 0xc
xor dword [edi], edx
jmp 0x10016c05
cmp dword [esi + 4], 0x26
jne case.0x1001681c.6
call fcn.100158e0
push 6
lea eax, [esp + 0x14]
push eax
push esi
call fcn.10016d70
mov ecx, dword [esp + 0x1c]
add esp, 0xc
and dword [edi], ecx
jmp 0x10016c05
mov eax, dword [esi + 4]
cmp eax, 0x106
jne 0x100169b5
call fcn.100158e0
push 7
lea edx, [esp + 0x14]
push edx
push esi
call fcn.10016d70
mov ecx, dword [edi]
xor eax, eax
add esp, 0xc
cmp ecx, dword [esp + 0x10]
mov dword [edi + 4], ebx
sete al
mov dword [edi], eax
jmp 0x10016819
cmp eax, 0x107
jne case.0x1001681c.7
call fcn.100158e0
push 7
lea edx, [esp + 0x14]
push edx
push esi
call fcn.10016d70
mov ecx, dword [edi]
xor eax, eax
add esp, 0xc
cmp ecx, dword [esp + 0x10]
mov dword [edi + 4], ebx
setne al
mov dword [edi], eax
jmp 0x10016819
mov eax, dword [esi + 4]
cmp eax, 0x3c
jne 0x10016a37
call fcn.100158e0
push 8
lea edx, [esp + 0x14]
push edx
push esi
call fcn.10016d70
add esp, 0xc
cmp dword [edi + 4], ebx
jne 0x10016a23
cmp dword [esp + 0x14], ebx
jne 0x10016a23
mov ecx, dword [edi]
xor eax, eax
cmp ecx, dword [esp + 0x10]
mov dword [edi + 4], ebx
setl al
mov dword [edi], eax
jmp 0x10016819
mov edx, dword [edi]
cmp edx, dword [esp + 0x10]
mov dword [edi + 4], ebx
sbb eax, eax
neg eax
mov dword [edi], eax
jmp 0x10016819
cmp eax, 0x3e
jne 0x10016a85
call fcn.100158e0
push 8
lea ecx, [esp + 0x14]
push ecx
push esi
call fcn.10016d70
add esp, 0xc
cmp dword [edi + 4], ebx
jne 0x10016a71
cmp dword [esp + 0x14], ebx
jne 0x10016a71
mov eax, dword [edi]
xor edx, edx
cmp eax, dword [esp + 0x10]
mov dword [edi + 4], ebx
setg dl
mov dword [edi], edx
jmp 0x10016819
mov ecx, dword [esp + 0x10]
cmp ecx, dword [edi]
mov dword [edi + 4], ebx
sbb edx, edx
neg edx
mov dword [edi], edx
jmp 0x10016819
cmp eax, 0x108
jne 0x10016ad4
call fcn.100158e0
push 8
lea eax, [esp + 0x14]
push eax
push esi
call fcn.10016d70
add esp, 0xc
cmp dword [edi + 4], ebx
jne 0x10016ac1
cmp dword [esp + 0x14], ebx
jne 0x10016ac1
mov edx, dword [edi]
xor ecx, ecx
cmp edx, dword [esp + 0x10]
mov dword [edi + 4], ebx
setle cl
mov dword [edi], ecx
jmp 0x10016819
mov eax, dword [esp + 0x10]
cmp eax, dword [edi]
mov dword [edi + 4], ebx
sbb ecx, ecx
inc ecx
mov dword [edi], ecx
jmp 0x10016819
cmp eax, 0x109
jne case.0x1001681c.8
call fcn.100158e0
push 8
lea edx, [esp + 0x14]
push edx
push esi
call fcn.10016d70
add esp, 0xc
cmp dword [edi + 4], ebx
jne 0x10016b10
cmp dword [esp + 0x14], ebx
jne 0x10016b10
mov ecx, dword [edi]
xor eax, eax
cmp ecx, dword [esp + 0x10]
mov dword [edi + 4], ebx
setge al
mov dword [edi], eax
jmp 0x10016819
mov edx, dword [edi]
cmp edx, dword [esp + 0x10]
mov dword [edi + 4], ebx
sbb eax, eax
inc eax
mov dword [edi], eax
jmp 0x10016819
mov eax, dword [esi + 4]
cmp eax, 0x10a
jne 0x10016b4c
call fcn.100158e0
push ebx
lea ecx, [esp + 0x14]
push ecx
push esi
call fcn.10016d70
mov ecx, dword [esp + 0x1c]
add esp, 0xc
shl dword [edi], cl
jmp 0x10016819
cmp eax, 0x10b
jne case.0x1001681c.9
call fcn.100158e0
push ebx
lea edx, [esp + 0x14]
push edx
push esi
call fcn.10016d70
mov ecx, dword [esp + 0x1c]
add esp, 0xc
cmp dword [edi + 4], ebx
jne 0x10016b77
sar dword [edi], cl
jmp 0x10016819
shr dword [edi], cl
jmp 0x10016819
mov eax, dword [esi + 4]
cmp eax, 0x2b
jne 0x10016ba3
call fcn.100158e0
push 0xa
lea eax, [esp + 0x14]
push eax
push esi
call fcn.10016d70
mov ecx, dword [esp + 0x1c]
add esp, 0xc
add dword [edi], ecx
jmp 0x10016c05
cmp eax, 0x2d
jne case.0x1001681c.10
call fcn.100158e0
push 0xa
lea edx, [esp + 0x14]
push edx
push esi
call fcn.10016d70
mov eax, dword [esp + 0x1c]
add esp, 0xc
sub dword [edi], eax
jmp 0x10016c05
mov eax, dword [esi + 4]
cmp eax, 0x2a
jne 0x10016c1a
call fcn.100158e0
inc dword [esi + 0x3c]
cmp dword [esi + 0x3c], 0x14
jg 0x10016d1e
lea eax, [esp + 0x10]
mov ecx, esi
call fcn.10016530
lea ecx, [esp + 0x10]
push ecx
mov eax, esi
call fcn.100159b0
dec dword [esi + 0x3c]
mov edx, dword [edi]
add esp, 4
imul edx, dword [esp + 0x10]
mov dword [edi], edx
mov eax, dword [esp + 0x14]
cmp eax, dword [edi + 4]
jbe 0x10016819
mov dword [edi + 4], eax
jmp 0x10016819
cmp eax, 0x2f
jne 0x10016c9b
call fcn.100158e0
inc dword [esi + 0x3c]
cmp dword [esi + 0x3c], 0x14
jg 0x10016d1e
lea eax, [esp + 0x10]
mov ecx, esi
call fcn.10016530
lea eax, [esp + 0x10]
push eax
mov eax, esi
call fcn.100159b0
mov eax, dword [esp + 0x18]
dec dword [esi + 0x3c]
add esp, 4
cmp eax, dword [edi + 4]
jbe 0x10016c5a
mov dword [edi + 4], eax
mov ecx, dword [esp + 0x10]
test ecx, ecx
je 0x10016d29
mov eax, dword [edi + 4]
cmp eax, ebx
jne 0x10016c8e
cmp dword [edi], 0x80000000
jne 0x10016c7e
cmp ecx, 0xffffffff
je 0x10016d29
cmp eax, ebx
jne 0x10016c8e
mov eax, dword [edi]
cdq
idiv ecx
mov dword [edi], eax
jmp 0x10016819
mov eax, dword [edi]
xor edx, edx
div ecx
mov dword [edi], eax
jmp 0x10016819
cmp eax, 0x25
jne case.default.0x1001681c
call fcn.100158e0
inc dword [esi + 0x3c]
cmp dword [esi + 0x3c], 0x14
jg 0x10016d1e
lea eax, [esp + 0x10]
mov ecx, esi
call fcn.10016530
lea ecx, [esp + 0x10]
push ecx
mov eax, esi
call fcn.100159b0
mov eax, dword [esp + 0x18]
dec dword [esi + 0x3c]
add esp, 4
cmp eax, dword [edi + 4]
jbe 0x10016cdb
mov dword [edi + 4], eax
mov ecx, dword [esp + 0x10]
test ecx, ecx
je 0x10016d29
mov eax, dword [edi + 4]
cmp eax, ebx
jne 0x10016d07
cmp dword [edi], 0x80000000
jne 0x10016cf7
cmp ecx, 0xffffffff
je 0x10016d29
cmp eax, ebx
jne 0x10016d07
mov eax, dword [edi]
cdq
idiv ecx
mov dword [edi], edx
jmp 0x10016819
mov eax, dword [edi]
xor edx, edx
div ecx
mov dword [edi], edx
jmp 0x10016819
mov eax, 0x3a
call fcn.100144b0
push 0x93f
push esi
call fcn.10014530
push 0x219
push esi
call fcn.10014530
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret