Function at 0x61b8e040
Capabilities:
Parse credit card information

Disassembly:
push ebp
mov ebp, esp
push edi
push esi
push ebx
sub esp, 0x4c
mov eax, dword [ebp + 8]
mov eax, dword [eax]
test eax, eax
jle 0x61b8e060
lea esp, [ebp - 0xc]
pop ebx
pop esi
pop edi
pop ebp
ret 4
mov edx, dword [ecx + 4]
mov ebx, dword [ecx + 8]
movzx eax, byte [edx + 0x1e]
mov esi, dword [edx + 0xc]
test al, al
js 0x61b8e0f0
movsx edi, al
cmp edi, ebx
mov dword [ebp - 0x3c], edi
jle 0x61b8e225
cmp ebx, dword [ebp - 0x3c]
jae 0x61b8e145
test byte [edx + 0x1f], 2
lea eax, [edx + 4]
jne 0x61b8e094
mov eax, dword [edx + 4]
movzx eax, word [eax + ebx*2]
lea edi, [eax - 0x30]
cmp di, 9
ja 0x61b8e0e0
mov edi, 1
mov dword [ecx + 0x2c], edi
movsx edi, byte [edx + 0x1e]
mov dword [ebp - 0x3c], ebx
mov eax, edi
test al, al
mov byte [ebp - 0x3d], al
js 0x61b8e100
mov dword [ebp - 0x44], ebx
cmp edi, ebx
jle 0x61b8e214
mov edi, dword [ecx + 0x2c]
cmp edi, 0x12
ja case.0x61b8e0d0.0
jmp dword [edi*4 + 0x61c138d4]
lea edi, [eax - 0x61]
cmp di, 0x19
ja 0x61b8e110
mov edi, 0xa
jmp 0x61b8e0a6
cmp esi, ebx
jle 0x61b8e214
mov dword [ebp - 0x3c], esi
jmp 0x61b8e07f
mov dword [ebp - 0x44], ebx
mov edi, esi
jmp 0x61b8e0bc
cmp ax, 0x3a
je 0x61b8e240
ja 0x61b8e150
cmp ax, 0x25
je 0x61b8e230
jbe 0x61b8e1a4
cmp ax, 0x2c
mov edi, 2
je 0x61b8e0a6
cmp ax, 0x2e
mov di, 7
je 0x61b8e0a6
xor edi, edi
jmp 0x61b8e0a6
cmp ax, 0x40
je 0x61b8e250
jbe 0x61b8e180
cmp ax, 0x7e
mov edi, 0x12
je 0x61b8e0a6
cmp ax, 0x2026
mov di, 9
je 0x61b8e0a6
xor edi, edi
jmp 0x61b8e0a6
cmp ax, 0x3b
mov edi, 3
je 0x61b8e0a6
cmp ax, 0x3d
mov di, 0x10
je 0x61b8e0a6
xor edi, edi
jmp 0x61b8e0a6
cmp ax, 0x20
je 0x61b8e260
cmp ax, 0x21
mov edi, 0x11
je 0x61b8e0a6
xor edi, edi
jmp 0x61b8e0a6
mov eax, dword [ebp + 8]
mov dword [eax], 0x10100
add ebx, 1
mov eax, 1
mov dword [esp + 8], eax
mov eax, dword [ebp - 0x3c]
lea edi, [ebp - 0x38]
mov esi, ecx
mov dword [esp], edx
mov ecx, edi
mov dword [esp + 4], eax
call sym.icu_53::UnicodeString::UnicodeString_icu_53::UnicodeString_const__int__int_
lea ecx, [esi + 0xc]
sub esp, 0xc
mov dword [esp], edi
call sym.icu_53::UnicodeString::operator_icu_53::UnicodeString_const_
sub esp, 4
mov ecx, edi
call sym.icu_53::UnicodeString::UnicodeString__
mov dword [esi + 8], ebx
lea esp, [ebp - 0xc]
pop ebx
pop esi
pop edi
pop ebp
ret 4
mov dword [ecx + 0x2c], 0x1c
lea esp, [ebp - 0xc]
pop ebx
pop esi
pop edi
pop ebp
ret 4
mov byte [ebp - 0x3d], al
mov dword [ebp - 0x3c], ebx
jmp 0x61b8e0b9
mov edi, 0xd
jmp 0x61b8e0a6
mov edi, 5
jmp 0x61b8e0a6
mov edi, 6
jmp 0x61b8e0a6
add ebx, 1
mov dword [ecx + 0x2c], 4
mov dword [ecx + 8], ebx
jmp 0x61b8e066
xor eax, eax
cmp edi, 1
je 0x61b8e390
lea esi, [esi]
mov dword [ecx + 0x2c], 1
jmp 0x61b8e1d5
movsx edi, byte [ebp - 0x3d]
add ebx, 1
mov eax, edi
test al, al
cmovns esi, edi
cmp ebx, esi
jae 0x61b8e34b
test byte [edx + 0x1f], 2
lea eax, [edx + 4]
jne 0x61b8e2ae
mov eax, dword [edx + 4]
cmp word [eax + ebx*2], 0x3d
jne 0x61b8e34b
mov eax, dword [ebp - 0x3c]
lea ebx, [eax + 2]
mov eax, 2
jmp 0x61b8e1d5
movzx eax, byte [ebp - 0x3d]
add ebx, 1
test al, al
js 0x61b8e33f
movsx edi, al
cmp ebx, edi
jge 0x61b8e1d0
cmp ebx, edi
jae 0x61b8e1d0
movzx eax, byte [edx + 0x1f]
and eax, 2
mov byte [ebp - 0x44], al
je 0x61b8e480
lea edi, [edx + 4]
cmp word [edi + ebx*2], 0x2e
jne 0x61b8e1d0
mov eax, dword [ebp - 0x3c]
lea ebx, [eax + 2]
movsx eax, byte [ebp - 0x3d]
test al, al
js 0x61b8e35c
cmp ebx, eax
jl 0x61b8e362
mov dword [ecx + 0x2c], 8
mov eax, 2
jmp 0x61b8e1d5
xor eax, eax
cmp edi, 0xa
je 0x61b8e428
mov dword [ecx + 0x2c], 0xa
jmp 0x61b8e1d5
cmp ebx, esi
jge 0x61b8e1d0
mov edi, esi
jmp 0x61b8e2df
mov dword [ecx + 0x2c], 0
mov eax, 1
jmp 0x61b8e1d5
cmp ebx, esi
mov eax, esi
jge 0x61b8e317
cmp ebx, eax
jae 0x61b8e317
cmp byte [ebp - 0x44], 0
lea eax, [edx + 4]
jne 0x61b8e372
mov eax, dword [edx + 4]
cmp word [eax + ebx*2], 0x2e
jne 0x61b8e317
mov eax, dword [ebp - 0x3c]
mov dword [ecx + 0x2c], 9
lea ebx, [eax + 3]
mov eax, 3
jmp 0x61b8e1d5
movsx eax, byte [ebp - 0x3d]
mov edi, ebx
mov dword [ebp - 0x48], esi
lea esi, [esi]
add edi, 1
test al, al
js 0x61b8e3b6
cmp edi, eax
jl 0x61b8e3c0
mov eax, edi
sub eax, ebx
mov ebx, edi
jmp 0x61b8e280
cmp edi, dword [ebp - 0x48]
jge 0x61b8e41c
mov eax, dword [ebp - 0x48]
nop
cmp edi, eax
jae 0x61b8e410
test byte [edx + 0x1f], 2
lea eax, [edx + 4]
jne 0x61b8e3d0
mov eax, dword [edx + 4]
movzx eax, word [eax + edi*2]
lea esi, [eax - 0x30]
cmp si, 9
ja 0x61b8e3ea
mov dword [ecx + 0x2c], 1
movsx eax, byte [edx + 0x1e]
jmp 0x61b8e3a0
lea ebx, [eax - 0x61]
cmp bx, 0x19
jbe 0x61b8e410
cmp ax, 0x3a
je 0x61b8e410
ja 0x61b8e410
cmp ax, 0x25
je 0x61b8e410
ja 0x61b8e410
cmp ax, 0x20
mov ebx, edi
je 0x61b8e412
nop
lea esi, [esi]
mov ebx, edi
sub edi, dword [ebp - 0x44]
mov eax, edi
jmp 0x61b8e280
mov eax, edi
mov ebx, edi
sub eax, dword [ebp - 0x44]
jmp 0x61b8e280
movsx eax, byte [ebp - 0x3d]
lea esi, [esi]
add ebx, 1
test al, al
js 0x61b8e478
cmp ebx, eax
jge 0x61b8e458
cmp ebx, eax
jae 0x61b8e458
test byte [edx + 0x1f], 2
lea eax, [edx + 4]
jne 0x61b8e44b
mov eax, dword [edx + 4]
movzx eax, word [eax + ebx*2]
lea edi, [eax - 0x30]
cmp di, 9
ja 0x61b8e462
mov eax, ebx
sub eax, dword [ebp - 0x44]
jmp 0x61b8e333
sub eax, 0x61
cmp ax, 0x19
ja 0x61b8e458
mov dword [ecx + 0x2c], 0xa
movsx eax, byte [edx + 0x1e]
jmp 0x61b8e430
cmp ebx, esi
jge 0x61b8e458
mov eax, esi
jmp 0x61b8e43b
mov edi, dword [edx + 4]
jmp 0x61b8e2fa