Function at 0x785120
Capabilities:
Parse credit card information

Disassembly:
sub esp, 0x418
mov eax, dword [0x773564]
xor eax, esp
mov dword [esp + 0x414], eax
mov eax, dword [esp + 0x424]
push ebx
mov ebx, dword [esp + 0x424]
push ebp
push esi
mov dword [esp + 0x10], eax
xor esi, esi
mov eax, ebx
push edi
mov edi, dword [esp + 0x42c]
mov dword [esp + 0x10], esi
lea edx, [eax + 1]
lea esp, [esp]
mov cl, byte [eax]
add eax, 1
test cl, cl
jne 0x785160
sub eax, edx
mov ebp, eax
xor edx, edx
test ebp, ebp
jle 0x78519a
movzx eax, byte [edx + ebx]
cmp al, 0x20
je 0x785193
cmp al, 0xd
je 0x785193
cmp al, 0xa
je 0x785193
push eax
call fcn.007850a0
add esp, 4
mov byte [esp + esi + 0x24], al
add esi, 1
add edx, 1
cmp edx, ebp
jl 0x785173
mov byte [esp + esi + 0x24], 0
xor eax, eax
xor ebp, ebp
xor esi, esi
cmp byte [esp + 0x24], al
mov word [edi], ax
je 0x7853ae
mov bl, 0x2c
cmp eax, 5
ja case.default.0x7851bd
jmp dword [eax*4 + 0x785400]
mov al, byte [esp + ebp + 0x24]
cmp al, 0x41
jl 0x7853ae
cmp al, 0x48
jg 0x7853ae
movsx cx, al
sub cx, 1
shl cx, 0xd
mov word [edi + esi*2], cx
mov eax, 1
jmp case.default.0x7851bd
cmp byte [esp + ebp + 0x24], 0x3d
jne 0x7853ae
mov eax, 2
jmp case.default.0x7851bd
mov al, byte [esp + ebp + 0x24]
cmp al, 0x41
jl 0x7853ae
cmp al, 0x48
jg 0x7853ae
movsx dx, al
sub dx, 1
shl dx, 0xa
or word [edi + esi*2], dx
mov eax, 3
jmp case.default.0x7851bd
mov cl, byte [esp + ebp + 0x24]
cmp cl, 0x2b
mov eax, 0xffff
jne 0x785245
xor eax, eax
cmp cl, 0x2d
jne 0x78524f
mov eax, 1
cmp cl, 0x3c
jne 0x785259
mov eax, 2
cmp cl, 0x2a
jne 0x785263
mov eax, 3
cmp cl, 0x5e
jne 0x78526d
mov eax, 4
cmp cl, 0x26
jne 0x785277
mov eax, 5
cmp cl, 0x7c
jne 0x785281
mov eax, 6
cmp cl, 0x3f
jne 0x78529c
mov eax, 7
shl eax, 7
or word [edi + esi*2], ax
mov eax, 4
jmp case.default.0x7851bd
cmp eax, 0xffff
je 0x7853b5
shl eax, 7
or word [edi + esi*2], ax
mov eax, 4
jmp case.default.0x7851bd
mov cl, byte [esp + ebp + 0x24]
cmp cl, 0x30
mov eax, 0xffff
jl 0x785330
cmp cl, 0x39
jg 0x785330
test esi, esi
je 0x7853bc
or word [edi + esi*2], 0x40
xor eax, eax
cmp cl, 0x30
mov dword [esp + 0x18], eax
mov dword [esp + 0x1c], eax
mov word [esp + 0x20], ax
jl 0x78530a
lea esp, [esp]
mov cl, byte [esp + ebp + 0x24]
cmp cl, 0x39
jg 0x78530a
mov byte [esp + eax + 0x18], cl
add ebp, 1
add eax, 1
cmp byte [esp + ebp + 0x24], 0x30
jge 0x7852f0
lea edx, [esp + 0x18]
sub ebp, 1
mov byte [esp + eax + 0x18], 0
call fcn.007850c0
cmp eax, 0x40
jae 0x7853c3
or word [edi + esi*2], ax
mov dword [esp + 0x10], 1
mov cl, byte [esp + ebp + 0x24]
cmp cl, 0x41
jl 0x785370
cmp cl, 0x48
jg 0x785370
movsx ax, cl
sub ax, 0x41
add ax, ax
add ax, ax
add ax, ax
or word [edi + esi*2], ax
test esi, esi
movzx eax, word [edi + esi*2]
jne 0x785361
or eax, 1
mov word [edi], ax
mov dword [esp + 0x10], 0
mov eax, 5
jmp case.default.0x7851bd
cmp eax, 0xffff
je 0x7853ae
mov eax, 5
jmp case.default.0x7851bd
cmp byte [esp + ebp + 0x24], bl
jne 0x7853ae
xor eax, eax
add esi, 1
mov word [edi + esi*2], ax
add ebp, 1
cmp byte [esp + ebp + 0x24], 0
jne 0x7851b4
cmp eax, 5
jne 0x7853ae
cmp dword [esp + 0x10], 0
je 0x7853ca
mov eax, 0x17
jmp 0x7853e4
mov eax, 0x14
jmp 0x7853e4
mov eax, 0x15
jmp 0x7853e4
mov eax, 0x16
jmp 0x7853e4
mov eax, 0x18
jmp 0x7853e4
or word [edi + esi*2], 4
mov ecx, dword [esp + 0x14]
lea eax, [esi + 1]
mov edx, 0x80
cmp edx, eax
mov dword [ecx], eax
sbb eax, eax
and eax, 7
mov ecx, dword [esp + 0x424]
pop edi
pop esi
pop ebp
pop ebx
xor ecx, esp
call fcn.00786f61
add esp, 0x418
ret 0xc