Function at 0x598c81
Capabilities:
Parse credit card information

Disassembly:
push ebp
mov ebp, edx
push edi
push esi
push ebx
sub esp, 0x3c
mov dword [esp + 0x18], eax
mov eax, dword [ecx]
mov dword [esp + 0x24], ecx
mov edx, eax
mov dword [esp + 0x14], eax
and edx, 0x40
mov dword [esp + 0x10], edx
test ebp, ebp
je 0x598f21
mov dword [esp], ebp
call fcn.0086e921
mov edx, dword [esp + 0x10]
and eax, 0x3fffffff
lea esi, [eax + 8]
mov ebx, eax
mov edi, esi
sar edi, 0x1f
test edx, edx
jne 0x598d61
cmp byte [0x962fa6], 0
jne 0x598d61
call fcn.00582201
test eax, eax
jne 0x598f09
mov eax, esi
mov edx, edi
call fcn.00553481
test eax, eax
je 0x598f09
mov dword [eax], 0
add eax, 4
mov dword [esp + 0x10], eax
test ebx, ebx
jne 0x598f31
mov eax, dword [esp + 0x10]
mov dword [eax + ebx], 0
mov eax, dword [esp + 0x14]
and eax, 0xffffffbf
mov dword [esp + 0x14], eax
mov eax, dword [esp + 0x18]
xor ebx, ebx
mov dword [esp], eax
call fcn.00582751
mov edx, dword [esp + 0x50]
mov dword [edx], eax
test eax, eax
je 0x598f49
mov eax, dword [esp + 0x24]
mov edx, dword [esp + 0x14]
mov esi, dword [esp + 0x10]
mov dword [eax], edx
mov eax, dword [esp + 0x54]
mov dword [eax], esi
add esp, 0x3c
mov eax, ebx
pop ebx
pop esi
pop edi
pop ebp
ret
cmp ebx, 4
jle 0x598cd9
cmp dword [ebp], 0x656c6966
jne 0x598cd9
cmp byte [ebp + 4], 0x3a
jne 0x598cd9
mov ecx, ebp
add ebx, ebp
lea esi, [esi]
xor eax, eax
cmp byte [ecx], 0x26
sete al
xor edx, edx
add esi, eax
adc edi, edx
add ecx, 1
cmp ebx, ecx
jne 0x598d89
call fcn.00582201
mov ebx, eax
test eax, eax
jne 0x598f09
mov eax, esi
mov edx, edi
call fcn.00553481
test eax, eax
je 0x598f09
mov edx, dword [esp + 0x14]
mov dword [eax], 0
add eax, 4
mov dword [esp + 0x10], eax
or edx, 0x40
cmp byte [ebp + 5], 0x2f
mov dword [esp + 0x14], edx
je 0x5991a1
movzx eax, byte [ebp + 5]
mov esi, 5
mov ecx, 5
test al, al
setne dl
cmp al, 0x23
je 0x599340
xor edi, edi
test dl, dl
je 0x599340
mov dword [esp + 0x28], ebp
mov ebp, edi
mov edi, ebx
mov dword [esp + 0x1c], ecx
jmp 0x598e65
cmp ebp, 1
je 0x598fb9
mov esi, dword [esp + 0x10]
add edi, 1
add esi, edi
mov dword [esp + 0x2c], esi
test ebp, ebp
jne 0x598f93
cmp al, 0x3f
jne 0x598f93
mov ebp, 1
xor eax, eax
mov ecx, dword [esp + 0x20]
mov dword [esp + 0x1c], edx
mov esi, edx
mov byte [ecx], al
movzx eax, byte [ebx]
cmp al, 0x23
je 0x599011
test al, al
je 0x599011
mov edx, dword [esp + 0x1c]
mov ecx, dword [esp + 0x28]
add edx, 1
lea ebx, [ecx + edx]
mov ecx, dword [esp + 0x10]
add ecx, edi
mov dword [esp + 0x20], ecx
cmp al, 0x25
jne 0x598e19
movzx ecx, byte [ebx]
mov byte [esp + 0x2c], cl
test byte [ecx + 0x99ef60], 8
je 0x598f81
mov ecx, dword [esp + 0x28]
movzx esi, byte [ecx + esi + 2]
mov ecx, esi
test byte [esi + 0x99ef60], 8
je 0x598f81
movsx edx, byte [esp + 0x2c]
movsx esi, cl
mov ebx, esi
mov eax, edx
sar ebx, 6
sar eax, 6
mov ecx, ebx
and eax, 1
and ecx, 1
lea edx, [edx + eax*8]
lea ebx, [esi + ecx*8]
mov esi, dword [esp + 0x28]
add eax, edx
mov edx, dword [esp + 0x1c]
add ecx, ebx
and eax, 0xf
and ecx, 0xf
add edx, 3
shl eax, 4
lea ebx, [esi + edx]
add eax, ecx
je 0x5992fc
mov ecx, dword [esp + 0x10]
add edi, 1
add ecx, edi
mov dword [esp + 0x2c], ecx
jmp 0x598e46
add esp, 0x3c
mov ebx, 7
mov eax, ebx
pop ebx
pop esi
pop edi
pop ebp
ret
mov esi, 8
xor edi, edi
xor ebx, ebx
jmp 0x598cd9
mov dword [esp + 8], ebx
mov dword [esp + 4], ebp
mov dword [esp], eax
call fcn.0086e9f1
jmp 0x598d0c
mov eax, dword [esp + 0x18]
mov dword [esp], 0x98f4a7
mov ebx, 1
mov dword [esp + 4], eax
call fcn.00592b51
mov edx, dword [esp + 0x58]
mov dword [edx], eax
mov eax, dword [esp + 0x10]
call fcn.0054ef91
mov dword [esp + 0x10], 0
jmp 0x598d3e
cmp ebp, 1
je 0x598ff9
mov esi, dword [esp + 0x10]
add edi, 1
add esi, edi
mov dword [esp + 0x2c], esi
cmp ebp, 2
jne 0x598e46
cmp al, 0x26
mov esi, 1
mov ecx, 0
cmove ebp, esi
cmove eax, ecx
jmp 0x598e46
cmp al, 0x26
je 0x598fc1
cmp al, 0x3d
jne 0x598ff9
mov esi, dword [esp + 0x10]
cmp byte [esi + edi - 1], 0
je 0x599239
mov esi, dword [esp + 0x10]
lea ecx, [edi + 1]
add esi, ecx
mov dword [esp + 0x2c], esi
cmp al, 0x26
je 0x599182
mov edi, ecx
mov ebp, 2
xor eax, eax
jmp 0x598e46
mov ecx, dword [esp + 0x10]
add edi, 1
mov ebp, 1
lea esi, [ecx + edi]
mov dword [esp + 0x2c], esi
jmp 0x598e46
mov ebx, edi
mov edi, ebp
cmp edi, 1
je 0x5991ce
mov eax, dword [esp + 0x2c]
mov esi, dword [esp + 0x10]
mov dword [eax], 0
mov dword [esp], esi
call fcn.0086e921
and eax, 0x3fffffff
lea ebp, [esi + eax + 1]
cmp byte [ebp], 0
je 0x598d22
lea esi, [esi]
lea esi, [esi]
mov dword [esp], ebp
call fcn.0086e921
and eax, 0x3fffffff
lea esi, [ebp + eax + 1]
mov edi, eax
mov dword [esp], esi
call fcn.0086e921
and eax, 0x3fffffff
mov ebx, eax
cmp edi, 3
je 0x599131
cmp edi, 5
je 0x599151
cmp edi, 4
jne 0x59911d
cmp dword [ebp], 0x65646f6d
jne 0x59911d
mov eax, dword [esp + 0x14]
mov dword [esp + 0x20], 0x87
mov edi, 0x9626a0
mov dword [esp + 0x28], 0x98f43e
and eax, 0x87
mov dword [esp + 0x1c], eax
jmp 0x5990c4
add edi, 8
mov ebp, dword [edi]
test ebp, ebp
je 0x5991e9
mov dword [esp], ebp
call fcn.0086e921
and eax, 0x3fffffff
cmp ebx, eax
jne 0x5990c1
mov dword [esp + 8], ebx
mov dword [esp + 4], ebp
mov dword [esp], esi
call fcn.0086e9f9
test eax, eax
jne 0x5990c1
mov eax, dword [edi + 4]
test eax, eax
je 0x5991e9
mov edx, eax
and dl, 0x7f
cmp edx, dword [esp + 0x1c]
jg 0x599211
mov edi, dword [esp + 0x20]
not edi
and edi, dword [esp + 0x14]
or eax, edi
mov dword [esp + 0x14], eax
lea ebp, [esi + ebx + 1]
cmp byte [ebp], 0
jne 0x599051
jmp 0x598d22
cmp word [ebp], 0x6676
jne 0x59911d
mov eax, dword [esp + 0x18]
cmp byte [ebp + 2], 0x73
cmove eax, esi
mov dword [esp + 0x18], eax
jmp 0x59911d
cmp dword [ebp], 0x68636163
jne 0x59911d
cmp byte [ebp + 4], 0x65
jne 0x59911d
mov dword [esp + 0x1c], 0x60000
mov edi, 0x9626c8
mov dword [esp + 0x20], 0x60000
mov dword [esp + 0x28], 0x98f445
jmp 0x5990c4
mov eax, dword [esp + 0x20]
add edi, 2
mov dword [esp + 0x20], esi
mov byte [eax], 0
mov eax, dword [esp + 0x10]
add eax, edi
mov dword [esp + 0x2c], eax
xor eax, eax
jmp 0x598e46
cmp byte [ebp + 6], 0x2f
je 0x599289
mov eax, 0x2f
mov edx, 1
mov esi, 5
mov ecx, 5
jmp 0x598df3
mov eax, dword [esp + 0x20]
mov ebx, edi
mov dword [esp + 0x2c], eax
mov eax, dword [esp + 0x2c]
mov byte [eax], 0
mov eax, dword [esp + 0x10]
lea eax, [eax + ebx + 1]
mov dword [esp + 0x2c], eax
jmp 0x59901e
mov eax, dword [esp + 0x28]
mov dword [esp + 8], esi
mov ebx, 1
mov dword [esp], 0x98f47b
mov dword [esp + 4], eax
call fcn.00592b51
mov edx, dword [esp + 0x58]
mov dword [edx], eax
jmp 0x598f68
mov eax, dword [esp + 0x28]
mov dword [esp + 8], esi
mov ebx, 3
mov dword [esp], 0x98f48f
mov dword [esp + 4], eax
call fcn.00592b51
mov edx, dword [esp + 0x58]
mov dword [edx], eax
jmp 0x598f68
movzx eax, byte [ebx]
cmp al, 0x23
je 0x5991c4
test al, al
je 0x5991c4
mov ecx, dword [esp + 0x28]
jmp 0x599268
add edx, 1
movzx eax, byte [ecx + edx]
test al, al
je 0x5991c4
cmp al, 0x23
je 0x5991c4
cmp byte [ecx + edx - 1], 0x26
mov esi, edx
jne 0x599251
mov eax, dword [esp + 0x28]
mov dword [esp + 0x1c], esi
lea ebx, [eax + esi]
mov eax, dword [esp + 0x20]
mov dword [esp + 0x2c], eax
jmp 0x598e52
movzx eax, byte [ebp + 7]
lea esi, [ebp + 7]
test al, al
setne cl
mov edx, ecx
cmp al, 0x2f
je 0x5993a4
test cl, cl
je 0x5993a4
mov ecx, 7
jmp 0x5992b5
cmp al, 0x2f
je 0x5992c3
mov edx, ecx
add ecx, 1
movzx eax, byte [ebp + ecx]
test al, al
jne 0x5992b1
cmp ecx, 0x10
jne 0x5992d5
cmp dword [ebp + 7], 0x61636f6c
je 0x59937a
sub edx, 6
mov dword [esp + 8], esi
mov ebx, 1
mov dword [esp + 4], edx
mov dword [esp], 0x98f45b
call fcn.00592b51
mov edx, dword [esp + 0x58]
mov dword [edx], eax
jmp 0x598f68
movzx eax, byte [ebx]
cmp al, 0x23
je 0x59934d
test al, al
je 0x59934d
test ebp, ebp
mov ebx, esi
setne cl
jmp 0x599328
cmp ebp, 2
jne 0x599319
cmp al, 0x26
je 0x599339
add edx, 1
movzx eax, byte [ebx + edx]
test al, al
je 0x59934d
cmp al, 0x23
je 0x59934d
cmp al, 0x3f
jne 0x599330
test cl, cl
je 0x59935e
cmp ebp, 1
jne 0x599310
cmp al, 0x3d
jne 0x599315
mov esi, edx
jmp 0x599271
mov eax, dword [esp + 0x10]
mov dword [esp + 0x2c], eax
jmp 0x59901e
mov eax, dword [esp + 0x20]
mov ebx, edi
mov edi, ebp
mov dword [esp + 0x2c], eax
jmp 0x599015
mov eax, dword [esp + 0x28]
mov dword [esp + 0x1c], edx
mov esi, edx
xor ebp, ebp
lea ebx, [eax + edx]
mov eax, dword [esp + 0x20]
mov dword [esp + 0x2c], eax
jmp 0x598e52
cmp dword [esi + 4], 0x736f686c
jne 0x5992d5
cmp byte [esi + 8], 0x74
jne 0x5992d5
movzx eax, byte [ebp + 0x10]
mov esi, 0x10
test al, al
setne dl
jmp 0x598df3
mov esi, 7
mov ecx, 7
jmp 0x598df3