Function at 0x40302b
Capabilities:
Parse credit card information

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x458
or dword [ebp - 0x2c], 0xffffffff
push ebx
mov ebx, dword [ebp + 0x10]
xor ecx, ecx
push esi
cmp ebx, ecx
push edi
mov dword [ebp - 4], 3
mov dword [ebp - 0x14], ecx
mov dword [ebp - 0x18], ecx
mov dword [ebp - 0x30], ecx
mov dword [ebp - 0x34], ecx
mov dword [ebp - 0x1c], ecx
mov dword [ebp - 0x38], ecx
je 0x403b32
mov eax, dword [ebp + 0x14]
mov dword [ebx], ecx
cmp eax, ecx
jne 0x403075
mov dword [ebx], str.erroffset_passed_as_NULL
jmp 0x403b32
test byte [ebp + 0xd], 8
mov dword [eax], ecx
je 0x403088
mov dword [ebx], str.this_version_of_PCRE_is_not_compiled_with_PCRE_UTF8_support
jmp 0x403b32
test dword [ebp + 0xc], 0xffffe580
je 0x40309c
mov dword [ebx], str.unknown_option_bit_s__set
jmp 0x403b32
mov eax, dword [ebp + 0x18]
cmp eax, ecx
jne 0x4030ab
mov eax, 0x40e730
mov dword [ebp + 0x18], eax
lea edx, [eax + 0x100]
mov dword [ebp - 0x68], eax
mov dword [ebp - 0x64], edx
lea edx, [eax + 0x200]
add eax, 0x340
mov dword [ebp - 0x60], edx
mov dword [ebp - 0x5c], eax
mov eax, dword [ebp + 8]
mov dword [ebp - 0x48], ecx
mov dword [ebp - 0x44], ecx
mov dword [ebp - 8], eax
movzx esi, byte [eax]
cmp esi, ecx
je 0x4039f7
cmp dword [ebp - 0x1c], 0
push 1
pop edi
jne 0x403723
test byte [ebp + 0xc], 8
je 0x403130
mov ecx, dword [ebp - 0x5c]
test byte [esi + ecx], 1
jne 0x4035b4
cmp esi, 0x23
jne 0x403130
inc eax
mov dword [ebp - 8], eax
movzx ecx, byte [eax]
test ecx, ecx
je 0x4039f7
cmp ecx, 0xa
je 0x403123
inc eax
mov dword [ebp - 8], eax
movzx ecx, byte [eax]
test ecx, ecx
jne 0x403113
test ecx, ecx
je 0x4039f7
jmp 0x4035b4
inc dword [ebp - 0x2c]
cmp esi, 0x3f
jg 0x40361b
je 0x403613
cmp esi, 0x24
je 0x4036e2
cmp esi, 0x28
je 0x4031a2
cmp esi, 0x29
je 0x403172
jle 0x403723
cmp esi, 0x2b
jle 0x403613
cmp esi, 0x2e
je 0x4036e2
jmp 0x403723
mov ecx, dword [ebp - 0x38]
add dword [ebp - 4], 3
test ecx, ecx
jbe 0x40319b
mov esi, dword [ebp - 4]
dec ecx
mov dword [ebp - 0x38], ecx
sub esi, dword [ebp + ecx*4 - 0x458]
movzx ecx, byte [ebp + ecx - 0x138]
mov dword [ebp - 0x18], ecx
jmp 0x403388
xor esi, esi
jmp 0x403388
lea edx, [eax + 1]
xor edi, edi
mov dword [ebp - 0x6c], 3
cmp byte [edx], 0x3f
jne 0x4035c8
movzx ecx, byte [eax + 2]
lea esi, [eax + 2]
cmp ecx, 0x3c
jg 0x403310
je 0x4032f0
cmp ecx, 0x21
je 0x40351a
cmp ecx, 0x23
je 0x4032ce
cmp ecx, 0x28
je 0x40324a
cmp ecx, 0x2f
jle 0x4031fb
cmp ecx, 0x39
jle 0x40333f
cmp ecx, 0x3a
je 0x40351a
and dword [ebp - 0x24], 0
and dword [ebp - 0x3c], 0
lea ecx, [ebp - 0x3c]
mov eax, esi
mov dword [ebp - 8], eax
movzx edx, byte [eax]
cmp edx, 0x58
jg 0x40352b
je 0x403526
cmp edx, 0x29
je 0x40355b
cmp edx, 0x2d
je 0x403521
cmp edx, 0x3a
je 0x40357c
cmp edx, 0x55
jne 0x4039d3
or byte [ecx + 1], 2
jmp 0x403555
mov bl, byte [eax + 3]
cmp bl, 0x52
jne 0x403266
cmp byte [eax + 4], 0x29
lea ecx, [eax + 4]
jne 0x403266
add dword [ebp - 4], 3
mov eax, ecx
jmp 0x4035e1
movzx ecx, bl
test byte [ecx + 0x40c5a4], 4
je 0x40329c
add eax, 4
add dword [ebp - 4], 3
mov dword [ebp - 8], eax
movzx ecx, byte [eax]
test byte [ecx + 0x40c5a4], 4
je 0x40328e
inc eax
mov dword [ebp - 8], eax
jmp 0x40327c
cmp byte [eax], 0x29
jne 0x403973
jmp 0x4035e1
mov eax, edx
mov dword [ebp - 8], eax
cmp byte [eax + 2], 0x3f
jne 0x403981
mov cl, byte [eax + 3]
cmp cl, 0x3d
je 0x4035e1
cmp cl, 0x21
je 0x4035e1
cmp cl, 0x3c
jne 0x403981
jmp 0x4035e1
add eax, 3
mov dword [ebp - 8], eax
mov cl, byte [eax]
test cl, cl
je 0x4032e2
cmp cl, 0x29
je 0x4032e2
inc eax
jmp 0x4032d1
cmp byte [eax], 0
je 0x403991
jmp 0x4035b4
push 3
pop edi
add eax, edi
mov dword [ebp - 8], eax
mov cl, byte [eax]
cmp cl, 0x3d
je 0x403308
cmp cl, 0x21
jne 0x40399c
add dword [ebp - 4], edi
jmp 0x4035e1
cmp ecx, 0x3d
jl 0x4031fb
cmp ecx, 0x3e
jle 0x40351a
cmp ecx, 0x43
je 0x4034f3
cmp ecx, 0x50
je 0x403475
cmp ecx, 0x52
jne 0x4031fb
mov eax, edx
inc eax
inc eax
cmp ecx, 0x52
mov dword [ebp - 8], eax
je 0x403359
inc eax
mov dword [ebp - 8], eax
movzx ecx, byte [eax]
test byte [ecx + 0x40c5a4], 4
jne 0x403349
cmp byte [eax], 0x29
jne 0x4039a7
mov cl, byte [eax + 1]
add dword [ebp - 4], 3
cmp cl, 0x2b
je 0x403381
cmp cl, 0x2a
je 0x403381
cmp cl, 0x3f
je 0x403381
cmp cl, 0x7b
jne 0x4035b4
add dword [ebp - 4], 6
push 0xb
pop esi
movzx ecx, byte [eax + 1]
lea edx, [eax + 1]
cmp ecx, 0x7b
jne 0x4033db
lea ecx, [ebp - 0x68]
add eax, 2
push ecx
push eax
call fcn.00403dae
pop ecx
test eax, eax
pop ecx
je 0x403450
lea eax, [ebp - 0x68]
push eax
lea eax, [ebp - 0x10]
push ebx
push eax
lea eax, [ebp - 0xc]
push eax
mov eax, dword [ebp - 8]
add eax, 2
push eax
call fcn.00403e14
add esp, 0x14
cmp dword [ebx], 0
mov dword [ebp - 8], eax
jne 0x403b2a
mov ecx, dword [ebp - 0x10]
jmp 0x40345c
cmp ecx, 0x2a
jne 0x4033e9
and dword [ebp - 0xc], 0
or ecx, 0xffffffff
jmp 0x403446
cmp ecx, 0x2b
jne 0x40343a
or ecx, 0xffffffff
mov eax, edx
mov dword [ebp - 0xc], 1
mov dword [ebp - 0x10], ecx
mov dword [ebp - 8], eax
mov edx, dword [ebp - 0xc]
dec edx
imul edx, esi
add dword [ebp - 4], edx
cmp ecx, dword [ebp - 0xc]
jle 0x403422
sub ecx, dword [ebp - 0xc]
add esi, 7
mov edx, dword [ebp - 4]
imul ecx, esi
lea ecx, [edx + ecx - 6]
mov dword [ebp - 4], ecx
cmp byte [eax + 1], 0x2b
lea ecx, [eax + 1]
jne 0x4035b4
add dword [ebp - 4], 6
mov eax, ecx
jmp 0x4035b4
cmp ecx, 0x3f
jne 0x403453
and dword [ebp - 0xc], 0
push 1
pop ecx
mov eax, edx
mov dword [ebp - 0x10], ecx
mov dword [ebp - 8], eax
jmp 0x403462
mov eax, dword [ebp - 8]
push 1
pop ecx
mov dword [ebp - 0xc], ecx
mov dword [ebp - 0x10], ecx
cmp dword [ebp - 0xc], 0
jne 0x403400
inc dword [ebp - 4]
test ecx, ecx
jle 0x403422
add esi, 7
dec ecx
imul esi, ecx
add dword [ebp - 4], esi
jmp 0x403422
add eax, 3
mov dword [ebp - 8], eax
mov cl, byte [eax]
cmp cl, 0x3c
jne 0x4034be
mov ecx, dword [ebp - 0x5c]
inc eax
mov dword [ebp - 8], eax
mov edx, eax
movzx esi, byte [eax]
test byte [esi + ecx], 0x10
je 0x40349d
inc eax
mov dword [ebp - 8], eax
movzx esi, byte [eax]
jmp 0x40348e
cmp byte [eax], 0x3e
jne 0x4039bd
inc dword [ebp - 0x30]
mov ecx, eax
sub ecx, edx
cmp ecx, dword [ebp - 0x34]
jle 0x4035e1
mov dword [ebp - 0x34], ecx
jmp 0x4035e1
cmp cl, 0x3d
je 0x4034cc
cmp cl, 0x3e
jne 0x4039b2
mov ecx, dword [ebp - 0x5c]
inc eax
mov dword [ebp - 8], eax
movzx edx, byte [eax]
test byte [edx + ecx], 0x10
je 0x4034e5
inc eax
mov dword [ebp - 8], eax
movzx edx, byte [eax]
jmp 0x4034d6
cmp byte [eax], 0x29
jne 0x4039bd
jmp 0x4035e1
add eax, 3
mov dword [ebp - 8], eax
movzx ecx, byte [eax]
test byte [ecx + 0x40c5a4], 4
je 0x403508
inc eax
jmp 0x4034f6
cmp byte [eax], 0x29
jne 0x4039c8
add dword [ebp - 4], 2
jmp 0x4035b4
mov eax, esi
jmp 0x4035e1
lea ecx, [ebp - 0x24]
jmp 0x403555
or dword [ecx], 0x40
jmp 0x403555
cmp edx, 0x69
je 0x403552
cmp edx, 0x6d
je 0x40354d
cmp edx, 0x73
je 0x403548
cmp edx, 0x78
jne 0x4039d3
or dword [ecx], 8
jmp 0x403555
or dword [ecx], 4
jmp 0x403555
or dword [ecx], 2
jmp 0x403555
or dword [ecx], 1
inc eax
jmp 0x403208
xor ecx, ecx
cmp dword [ebp - 0x2c], ecx
jne 0x40357c
mov esi, dword [ebp - 0x3c]
mov ebx, dword [ebp - 0x24]
or esi, dword [ebp + 0xc]
mov dword [ebp - 0x24], ecx
not ebx
and esi, ebx
or dword [ebp - 0x2c], 0xffffffff
mov dword [ebp + 0xc], esi
mov dword [ebp - 0x3c], ecx
mov ecx, dword [ebp - 0x24]
or ecx, dword [ebp - 0x3c]
test cl, 7
je 0x403597
add dword [ebp - 4], 4
push 2
test cl, 1
pop edi
je 0x403597
or byte [ebp + 0xf], 8
cmp edx, 0x29
jne 0x4035e1
cmp edi, 2
jne 0x4035b1
cmp dword [ebp - 0x18], 0
je 0x4035ad
cmp dword [ebp - 0x18], 3
jne 0x4035b1
add dword [ebp - 0x18], 2
mov ebx, dword [ebp + 0x10]
inc eax
mov dword [ebp - 8], eax
movzx esi, byte [eax]
test esi, esi
jne 0x4030df
jmp 0x4039f7
test byte [ebp + 0xd], 0x10
jne 0x4035e1
inc dword [ebp - 0x14]
cmp dword [ebp - 0x14], 0x96
jle 0x4035e1
mov dword [ebp - 0x6c], 6
mov edx, dword [ebp - 0x38]
cmp edx, 0xc8
jae 0x4039de
mov cl, byte [ebp - 0x18]
mov dword [ebp - 0x18], edi
mov byte [ebp + edx - 0x138], cl
mov ecx, dword [ebp - 4]
mov dword [ebp + edx*4 - 0x458], ecx
inc edx
add ecx, dword [ebp - 0x6c]
mov dword [ebp - 0x38], edx
mov dword [ebp - 4], ecx
jmp 0x4035b1
inc dword [ebp - 4]
jmp 0x403422
mov ecx, esi
sub ecx, 0x5b
je 0x40380e
dec ecx
je 0x4036ea
dec ecx
dec ecx
je 0x4036e2
sub ecx, 0x1d
je 0x403653
dec ecx
jne 0x403723
mov ecx, dword [ebp - 4]
mov edx, dword [ebp - 0x18]
lea ecx, [ecx + edx + 3]
mov dword [ebp - 4], ecx
jmp 0x4035b4
lea ecx, [ebp - 0x68]
inc eax
push ecx
push eax
call fcn.00403dae
pop ecx
test eax, eax
pop ecx
je 0x403720
lea eax, [ebp - 0x68]
push eax
lea eax, [ebp - 0x10]
push ebx
push eax
lea eax, [ebp - 0xc]
push eax
mov eax, dword [ebp - 8]
inc eax
push eax
call fcn.00403e14
xor edx, edx
add esp, 0x14
cmp dword [ebx], edx
mov dword [ebp - 8], eax
jne 0x403b2a
cmp dword [ebp - 0xc], edx
mov ecx, dword [ebp - 0x10]
jne 0x4036a0
cmp ecx, edi
je 0x4036aa
cmp ecx, 0xffffffff
je 0x4036aa
cmp dword [ebp - 0xc], edi
jne 0x4036af
cmp ecx, 0xffffffff
jne 0x4036bb
inc dword [ebp - 4]
jmp 0x4036cb
dec dword [ebp - 4]
cmp dword [ebp - 0xc], edx
jle 0x4036bb
add dword [ebp - 4], 4
xor edx, edx
test ecx, ecx
setle dl
dec edx
and edx, 2
inc edx
inc edx
add dword [ebp - 4], edx
cmp byte [eax + 1], 0x3f
lea ecx, [eax + 1]
jne 0x403422
mov eax, ecx
mov dword [ebp - 8], eax
jmp 0x403422
inc dword [ebp - 4]
jmp 0x4035b4
mov esi, eax
lea eax, [ebp - 0x68]
push eax
push 0
push dword [ebp + 0xc]
lea eax, [ebp - 8]
push dword [ebp - 0x14]
push ebx
push eax
call fcn.00403bf6
add esp, 0x18
cmp dword [ebx], 0
jne 0x403b27
test eax, eax
jl 0x4037ce
mov eax, esi
push 0x5c
mov dword [ebp - 8], eax
pop esi
jmp 0x403723
mov eax, dword [ebp - 8]
add dword [ebp - 4], 2
xor ebx, ebx
xor edx, edx
cmp dword [ebp - 0x1c], edx
je 0x403745
cmp esi, 0x5c
jne 0x40379d
cmp byte [eax + 1], 0x45
lea ecx, [eax + 1]
jne 0x40379d
mov dword [ebp - 0x1c], edx
mov eax, ecx
jmp 0x40379e
test byte [ebp + 0xc], 8
je 0x40376b
mov ecx, dword [ebp - 0x5c]
test byte [esi + ecx], 1
jne 0x40379e
cmp esi, 0x23
jne 0x40376b
inc eax
mov dword [ebp - 8], eax
movzx ecx, byte [eax]
cmp ecx, edx
je 0x40379e
cmp ecx, 0xa
je 0x40379e
jmp 0x403759
cmp esi, 0x5c
jne 0x40379d
mov esi, eax
lea eax, [ebp - 0x68]
mov edi, dword [ebp + 0x10]
push eax
push edx
lea eax, [ebp - 8]
push dword [ebp + 0xc]
push dword [ebp - 0x14]
push edi
push eax
call fcn.00403bf6
add esp, 0x18
cmp dword [edi], 0
jne 0x403b27
test eax, eax
jl 0x4037bb
mov eax, dword [ebp - 8]
inc ebx
cmp ebx, 0xfa
jge 0x4037c6
mov ecx, dword [ebp - 0x5c]
inc eax
mov dword [ebp - 8], eax
movzx esi, byte [eax]
test byte [esi + ecx], 0x80
jne 0x4037bd
jmp 0x403729
mov eax, esi
cmp ebx, 0xfa
jge 0x4037c6
dec eax
add dword [ebp - 4], ebx
jmp 0x4035b1
mov ecx, eax
neg ecx
cmp ecx, 0x10
jne 0x4037e2
mov dword [ebp - 0x1c], edi
mov eax, dword [ebp - 8]
jmp 0x4035b4
inc dword [ebp - 4]
push 0xffffffffffffffef
pop ecx
cmp eax, ecx
jg 0x4037da
sub ecx, eax
mov eax, edi
cmp ecx, 0x20
jge 0x4037f7
shl eax, cl
or dword [ebp - 0x44], eax
cmp ecx, dword [ebp - 0x48]
jle 0x403802
mov dword [ebp - 0x48], ecx
add dword [ebp - 4], 2
mov eax, dword [ebp - 8]
jmp 0x4038f1
xor esi, esi
inc eax
mov dword [ebp - 8], eax
cmp byte [eax], 0x5e
jne 0x40381d
inc eax
mov dword [ebp - 8], eax
mov cl, byte [eax]
test cl, cl
je 0x4038d7
cmp dword [ebp - 0x1c], 0
je 0x403847
cmp cl, 0x5c
jne 0x4038b9
cmp byte [eax + 1], 0x45
lea ecx, [eax + 1]
jne 0x4038b9
and dword [ebp - 0x1c], 0
mov eax, ecx
jmp 0x4038ba
cmp cl, 0x5c
jne 0x403896
lea eax, [ebp - 0x68]
push eax
push edi
push dword [ebp + 0xc]
lea eax, [ebp - 8]
push dword [ebp - 0x14]
push ebx
push eax
call fcn.00403bf6
add esp, 0x18
cmp dword [ebx], 0
jne 0x403b27
mov ecx, eax
neg ecx
cmp ecx, 4
jne 0x403879
push 8
pop eax
mov ecx, eax
neg ecx
cmp ecx, 0x10
jne 0x403887
mov dword [ebp - 0x1c], edi
jmp 0x40388c
test eax, eax
jl 0x403891
inc esi
mov eax, dword [ebp - 8]
jmp 0x4038ba
push 0xa
pop esi
jmp 0x40388c
cmp cl, 0x5b
jne 0x4038b9
lea ecx, [ebp - 0x68]
push ecx
lea ecx, [ebp - 8]
push ecx
push eax
call fcn.00403e95
add esp, 0xc
test eax, eax
mov eax, dword [ebp - 8]
je 0x4038b9
push 0xa
inc eax
pop esi
jmp 0x4038ba
inc esi
inc eax
mov dword [ebp - 8], eax
mov cl, byte [eax]
test cl, cl
je 0x4038d7
cmp dword [ebp - 0x1c], 0
jne 0x40382d
cmp cl, 0x5d
jne 0x403827
cmp byte [eax], 0
je 0x4039ec
cmp esi, edi
jne 0x4038ed
add dword [ebp - 4], 3
jmp 0x4035b4
add dword [ebp - 4], 0x21
cmp byte [eax + 1], 0x7b
jne 0x4035b4
lea ecx, [ebp - 0x68]
add eax, 2
push ecx
push eax
call fcn.00403dae
pop ecx
test eax, eax
pop ecx
je 0x4037da
lea eax, [ebp - 0x68]
push eax
lea eax, [ebp - 0x10]
push ebx
push eax
lea eax, [ebp - 0xc]
push eax
mov eax, dword [ebp - 8]
add eax, 2
push eax
call fcn.00403e14
add esp, 0x14
cmp dword [ebx], 0
mov dword [ebp - 8], eax
jne 0x403b2a
cmp dword [ebp - 0xc], 0
jne 0x40394b
cmp dword [ebp - 0x10], edi
je 0x403956
cmp dword [ebp - 0x10], 0xffffffff
je 0x403956
cmp dword [ebp - 0xc], edi
jne 0x40395b
cmp dword [ebp - 0x10], 0xffffffff
jne 0x40395b
inc dword [ebp - 4]
jmp 0x40395f
add dword [ebp - 4], 5
cmp byte [eax + 1], 0x3f
lea ecx, [eax + 1]
jne 0x4035b4
mov eax, ecx
jmp 0x4035b4
mov ecx, dword [ebp + 0x10]
mov dword [ecx], str.malformed_number_after____
jmp 0x403b2a
mov ecx, dword [ebp + 0x10]
inc eax
inc eax
mov dword [ecx], str.assertion_expected_after____
jmp 0x403b2a
mov dword [ebx], str.missing___after_comment
jmp 0x403b2a
mov dword [ebx], str.unrecognized_character_after____
jmp 0x403b2a
mov dword [ebx], str.__R_or___digits_must_be_followed_by__
jmp 0x403b2a
mov dword [ebx], str.unrecognized_character_after___P
jmp 0x403b2a
mov dword [ebx], str.syntax_error_after___P
jmp 0x403b2a
mov dword [ebx], str.closing___for___C_expected
jmp 0x403b2a
mov dword [ebx], str.unrecognized_character_after___
jmp 0x403b2a
mov ecx, dword [ebp + 0x10]
mov dword [ecx], str.parentheses_nested_too_deeply
jmp 0x403b2a
mov dword [ebx], str.missing_terminating___for_character_class
jmp 0x403b2a
add dword [ebp - 4], 4
cmp dword [ebp - 4], 0x10000
jle 0x403a0f
mov dword [ebx], str.regular_expression_too_large
jmp 0x403b32
mov eax, dword [ebp - 0x34]
mov ecx, dword [ebp - 4]
lea edi, [eax + 3]
mov eax, edi
imul eax, dword [ebp - 0x30]
lea ebx, [eax + ecx + 0x1c]
push ebx
call dword [0x40e728]
mov esi, eax
pop ecx
test esi, esi
jne 0x403a3e
mov eax, dword [ebp + 0x10]
mov dword [eax], str.failed_to_get_memory
jmp 0x403b32
mov eax, dword [ebp + 0x18]
mov dword [esi + 4], ebx
mov ebx, dword [ebp + 0xc]
mov dword [esi + 8], eax
mov eax, dword [ebp - 0x34]
xor ecx, ecx
add eax, 3
mov dword [esi], 0x50435245
mov word [esi + 0x18], ax
mov ax, word [ebp - 0x30]
mov word [esi + 0x1a], ax
lea eax, [esi + 0x1c]
mov dword [esi + 0xc], ebx
mov dword [ebp - 0x50], ecx
mov dword [ebp - 0x4c], edi
mov dword [ebp - 0x54], eax
movzx edi, word [esi + 0x18]
movzx edx, word [esi + 0x1a]
imul edi, edx
add edi, eax
mov eax, dword [ebp + 8]
mov dword [ebp - 8], eax
lea eax, [ebp - 0x68]
push eax
lea eax, [ebp - 0x70]
push ecx
push eax
lea eax, [ebp - 0x20]
mov dword [ebp - 0x58], edi
push eax
push ecx
push ecx
lea eax, [ebp - 8]
push dword [ebp + 0x10]
mov dword [ebp - 0x40], ecx
mov dword [ebp - 0x28], edi
mov byte [edi], 0x4c
push eax
lea eax, [ebp - 0x28]
push eax
lea eax, [ebp - 0x14]
push eax
mov eax, ebx
and eax, 7
mov dword [ebp - 0x14], ecx
push eax
push ebx
call fcn.00403ed3
mov ax, word [ebp - 0x14]
add esp, 0x30
mov word [esi + 0x10], ax
mov ax, word [ebp - 0x48]
mov word [esi + 0x12], ax
mov eax, dword [ebp + 0x10]
cmp dword [eax], 0
jne 0x403aed
mov eax, dword [ebp - 8]
cmp byte [eax], 0
je 0x403aed
mov ecx, dword [ebp + 0x10]
mov dword [ecx], str.unmatched_parentheses
jmp 0x403af0
mov ecx, dword [ebp + 0x10]
mov eax, dword [ebp - 0x28]
and byte [eax], 0
mov eax, dword [ebp - 0x28]
inc eax
mov dword [ebp - 0x28], eax
sub eax, edi
cmp eax, dword [ebp - 4]
jle 0x403b0a
mov dword [ecx], str.internal_error:_code_overflow
mov ax, word [esi + 0x12]
cmp ax, word [esi + 0x10]
jbe 0x403b1a
mov dword [ecx], str.reference_to_non_existent_subpattern
cmp dword [ecx], 0
je 0x403b39
push esi
call dword [0x40e72c]
pop ecx
mov eax, dword [ebp - 8]
sub eax, dword [ebp + 8]
mov ecx, dword [ebp + 0x14]
mov dword [ecx], eax
xor eax, eax
jmp 0x403bf1
test bl, 0x10
jne 0x403bb4
push dword [ebp - 0x44]
lea eax, [ebp + 0x10]
mov dword [ebp + 0x10], ebx
push 0
push eax
push edi
call fcn.004058a0
add esp, 0x10
test eax, eax
je 0x403b5d
or dword [esi + 0xc], 0x10
jmp 0x403bb4
xor ebx, ebx
cmp dword [ebp - 0x20], ebx
jge 0x403b79
lea eax, [ebp + 0x10]
push ebx
push eax
push edi
call fcn.00405a01
add esp, 0xc
cmp eax, ebx
mov dword [ebp - 0x20], eax
jl 0x403b9f
mov eax, dword [ebp - 0x20]
and eax, 0xff
test byte [ebp - 0x1f], 1
je 0x403b92
mov ecx, dword [ebp - 0x64]
movzx ecx, byte [eax + ecx]
cmp ecx, eax
je 0x403b95
mov eax, dword [ebp - 0x20]
or byte [esi + 0xf], 0x40
mov word [esi + 0x14], ax
jmp 0x403bb4
push dword [ebp - 0x44]
push ebx
push edi
call fcn.0040595d
add esp, 0xc
test eax, eax
je 0x403bb4
or byte [esi + 0xf], 0x10
mov edx, dword [ebp - 0x70]
test edx, edx
jl 0x403bef
mov ecx, dword [esi + 0xc]
test cl, 0x10
je 0x403bc8
test dh, 2
je 0x403bef
mov eax, edx
and eax, 0xff
test dh, 1
je 0x403be2
mov edi, dword [ebp - 0x64]
movzx edi, byte [eax + edi]
cmp edi, eax
jne 0x403be2
and dh, 0xfe
or ecx, 0x20000000
mov word [esi + 0x16], dx
mov dword [esi + 0xc], ecx
mov eax, esi
pop edi
pop esi
pop ebx
leave
ret