Function at 0x51c849
Capabilities:
Parse credit card information

Disassembly:
push ebp
mov ebp, esp
add esp, 0xffffff50
push ebx
push esi
push edi
xor eax, eax
mov dword [ebp - 0x20], eax
xor edx, edx
mov dword [ebp - 0x24], edx
mov ecx, dword [ebp + 0x10]
mov esi, dword [ecx]
mov eax, dword [ebp + 0x14]
mov edx, dword [eax]
mov dword [ebp - 0x2c], edx
xor ecx, ecx
mov dword [ebp - 0x34], ecx
test byte [ebp + 9], 2
setne al
and eax, 1
mov dword [ebp - 0x14], eax
mov edx, dword [ebp - 0x14]
xor edx, 1
mov dword [ebp - 0x18], edx
or ecx, 0xffffffff
mov dword [ebp - 0x1c], ecx
mov eax, dword [ebp + 0x20]
mov dword [eax], ecx
mov edx, dword [ebp + 0x24]
xor eax, eax
mov dword [edx], eax
mov edx, dword [ebp - 0x2c]
xor ebx, ebx
mov bl, byte [edx]
test byte [ebp + 8], 8
je 0x51c8d7
mov eax, dword [ebp + 0x28]
mov edx, dword [eax + 0xc]
test byte [edx + ebx], 1
jne 0x51d827
cmp ebx, 0x23
jne 0x51c8d7
inc dword [ebp - 0x2c]
mov ecx, dword [ebp - 0x2c]
xor ebx, ebx
mov bl, byte [ecx]
test ebx, ebx
je 0x51d827
cmp ebx, 0xa
jne 0x51c8bb
jmp 0x51d827
mov eax, ebx
cmp eax, 0x2e
jg 0x51c918
je 0x51c97d
cmp eax, 0x29
jg 0x51c903
je 0x51c94a
sub eax, 1
jb 0x51c94a
sub eax, 0x23
je 0x51c96f
sub eax, 4
je 0x51d316
jmp 0x51d75e
sub eax, 0x2a
je 0x51ce4e
dec eax
je 0x51ce5c
jmp 0x51d75e
cmp eax, 0x5e
jg 0x51c939
je 0x51c961
sub eax, 0x3f
je 0x51ce6c
sub eax, 0x1c
je 0x51c989
dec eax
je 0x51d6ec
jmp 0x51d75e
sub eax, 0x7b
je 0x51ce10
dec eax
je 0x51c94a
jmp 0x51d75e
mov edx, dword [ebp + 0x10]
mov dword [edx], esi
mov ecx, dword [ebp + 0x14]
mov eax, dword [ebp - 0x2c]
mov dword [ecx], eax
mov eax, 1
jmp 0x51d839
xor edx, edx
mov dword [ebp - 0x34], edx
mov byte [esi], 0xd
inc esi
jmp 0x51d827
xor ecx, ecx
mov dword [ebp - 0x34], ecx
mov byte [esi], 0xe
inc esi
jmp 0x51d827
mov dword [ebp - 0x34], esi
mov byte [esi], 0xf
inc esi
jmp 0x51d827
mov dword [ebp - 0x34], esi
mov byte [esi], 0x35
inc esi
inc dword [ebp - 0x2c]
mov eax, dword [ebp - 0x2c]
xor ebx, ebx
mov bl, byte [eax]
cmp ebx, 0x5e
jne 0x51c9b2
mov dword [ebp - 0x38], 1
inc dword [ebp - 0x2c]
mov eax, dword [ebp - 0x2c]
xor ebx, ebx
mov bl, byte [eax]
jmp 0x51c9b7
xor eax, eax
mov dword [ebp - 0x38], eax
xor edx, edx
mov dword [ebp - 0x3c], edx
mov dword [ebp - 0x40], 0xffffffff
push 0x20
push 0
lea ecx, [ebp - 0xb0]
push ecx
call fcn.00539438
add esp, 0xc
test ebx, ebx
jne 0x51c9e8
mov eax, dword [ebp + 0x18]
mov dword [eax], 0x55c2ce
jmp 0x51d82f
cmp ebx, 0x5b
jne 0x51cb1b
mov edx, dword [ebp - 0x2c]
cmp byte [edx + 1], 0x3a
je 0x51ca10
mov ecx, dword [ebp - 0x2c]
cmp byte [ecx + 1], 0x2e
je 0x51ca10
mov eax, dword [ebp - 0x2c]
cmp byte [eax + 1], 0x3d
jne 0x51cb1b
push dword [ebp + 0x28]
lea edx, [ebp - 0x30]
push edx
push dword [ebp - 0x2c]
call fcn.0051c7af
test eax, eax
je 0x51cb1b
xor ecx, ecx
mov dword [ebp - 0x50], ecx
mov eax, dword [ebp + 0x28]
mov edx, dword [eax + 8]
mov dword [ebp - 0x5c], edx
mov ecx, dword [ebp - 0x2c]
cmp byte [ecx + 1], 0x3a
je 0x51ca4c
mov eax, dword [ebp + 0x18]
mov dword [eax], str.POSIX_collating_elements_are_not_supported
jmp 0x51d82f
add dword [ebp - 0x2c], 2
mov edx, dword [ebp - 0x2c]
cmp byte [edx], 0x5e
jne 0x51ca62
mov dword [ebp - 0x50], 1
inc dword [ebp - 0x2c]
mov ecx, dword [ebp - 0x30]
sub ecx, dword [ebp - 0x2c]
push ecx
push dword [ebp - 0x2c]
call fcn.0051c7f8
mov dword [ebp - 0x54], eax
cmp dword [ebp - 0x54], 0
jge 0x51ca88
mov eax, dword [ebp + 0x18]
mov dword [eax], str.unknown_POSIX_class_name
jmp 0x51d82f
test byte [ebp + 8], 1
je 0x51ca99
cmp dword [ebp - 0x54], 2
jg 0x51ca99
xor edx, edx
mov dword [ebp - 0x54], edx
mov ecx, dword [ebp - 0x54]
lea ecx, [ecx + ecx*2]
mov dword [ebp - 0x54], ecx
xor eax, eax
mov dword [ebp - 0x58], eax
mov edx, dword [ebp - 0x54]
add edx, dword [ebp - 0x58]
mov ecx, dword [edx*4 + 0x55bd04]
mov dword [ebp - 0x60], ecx
cmp dword [ebp - 0x60], 0
jl 0x51cb08
cmp dword [ebp - 0x50], 0
je 0x51cae3
xor ebx, ebx
lea edx, [ebp - 0xb0]
mov eax, dword [ebp - 0x5c]
mov ecx, dword [ebp - 0x60]
add eax, ecx
mov cl, byte [eax]
not cl
or byte [edx], cl
inc ebx
inc edx
inc eax
cmp ebx, 0x20
jl 0x51cad3
jmp 0x51caff
xor ebx, ebx
lea eax, [ebp - 0xb0]
mov edx, dword [ebp - 0x5c]
mov ecx, dword [ebp - 0x60]
add edx, ecx
mov cl, byte [edx]
or byte [eax], cl
inc ebx
inc eax
inc edx
cmp ebx, 0x20
jl 0x51caf3
inc dword [ebp - 0x58]
cmp dword [ebp - 0x58], 3
jl 0x51caa7
mov eax, dword [ebp - 0x30]
inc eax
mov dword [ebp - 0x2c], eax
mov dword [ebp - 0x3c], 0xa
jmp 0x51cd98
cmp ebx, 0x5c
jne 0x51cc64
push dword [ebp + 0x28]
push 1
push dword [ebp + 8]
mov eax, dword [ebp + 0xc]
push dword [eax]
push dword [ebp + 0x18]
lea edx, [ebp - 0x2c]
push edx
call fcn.0051c32a
mov ebx, eax
mov eax, ebx
neg eax
cmp eax, 3
jne 0x51cb52
mov ebx, 8
jmp 0x51cc64
test ebx, ebx
jge 0x51cc64
mov eax, dword [ebp + 0x28]
mov edx, dword [eax + 8]
mov dword [ebp - 0x64], edx
mov dword [ebp - 0x3c], 0xa
neg ebx
add ebx, 0xfffffffc
cmp ebx, 5
ja case.default.0x51cb78
jmp dword [ebx*4 + 0x51cb7f]
xor ebx, ebx
lea edx, [ebp - 0xb0]
mov eax, dword [ebp - 0x64]
add eax, 0x40
mov cl, byte [eax]
or byte [edx], cl
inc ebx
inc edx
inc eax
cmp ebx, 0x20
jl 0x51cba5
jmp 0x51cd98
xor ebx, ebx
lea eax, [ebp - 0xb0]
mov edx, dword [ebp - 0x64]
add edx, 0x40
mov cl, byte [edx]
not cl
or byte [eax], cl
inc ebx
inc eax
inc edx
cmp ebx, 0x20
jl 0x51cbc4
jmp 0x51cd98
xor ebx, ebx
lea edx, [ebp - 0xb0]
mov eax, dword [ebp - 0x64]
add eax, 0xa0
mov cl, byte [eax]
or byte [edx], cl
inc ebx
inc edx
inc eax
cmp ebx, 0x20
jl 0x51cbe7
jmp 0x51cd98
xor ebx, ebx
lea eax, [ebp - 0xb0]
mov edx, dword [ebp - 0x64]
add edx, 0xa0
mov cl, byte [edx]
not cl
or byte [eax], cl
inc ebx
inc eax
inc edx
cmp ebx, 0x20
jl 0x51cc09
jmp 0x51cd98
xor ebx, ebx
lea edx, [ebp - 0xb0]
mov eax, dword [ebp - 0x64]
mov cl, byte [eax]
or byte [edx], cl
inc ebx
inc edx
inc eax
cmp ebx, 0x20
jl 0x51cc27
jmp 0x51cd98
xor ebx, ebx
lea eax, [ebp - 0xb0]
mov edx, dword [ebp - 0x64]
mov cl, byte [edx]
not cl
or byte [eax], cl
inc ebx
inc eax
inc edx
cmp ebx, 0x20
jl 0x51cc43
jmp 0x51cd98
mov eax, dword [ebp + 0x18]
mov dword [eax], str.invalid_escape_sequence_in_character_class
jmp 0x51d82f
mov eax, dword [ebp - 0x2c]
cmp byte [eax + 1], 0x2d
jne 0x51cd47
mov edx, dword [ebp - 0x2c]
cmp byte [edx + 2], 0x5d
je 0x51cd47
add dword [ebp - 0x2c], 2
mov ecx, dword [ebp - 0x2c]
xor eax, eax
mov al, byte [ecx]
test eax, eax
jne 0x51cc9b
mov edx, dword [ebp + 0x18]
mov dword [edx], str.missing_terminating___for_character_class
jmp 0x51d82f
cmp eax, 0x5c
jne 0x51ccda
mov ecx, dword [ebp - 0x2c]
mov dword [ebp - 0x68], ecx
push dword [ebp + 0x28]
push 1
push dword [ebp + 8]
mov eax, dword [ebp + 0xc]
push dword [eax]
push dword [ebp + 0x18]
lea edx, [ebp - 0x2c]
push edx
call fcn.0051c32a
test eax, eax
jge 0x51ccda
cmp eax, 0xfffffffd
jne 0x51cccf
mov eax, 8
jmp 0x51ccda
mov edx, dword [ebp - 0x68]
add edx, 0xfffffffe
mov dword [ebp - 0x2c], edx
jmp 0x51cd47
cmp ebx, eax
jle 0x51ccec
mov ecx, dword [ebp + 0x18]
mov dword [ecx], str.range_out_of_order_in_character_class
jmp 0x51d82f
cmp eax, ebx
jl 0x51cd98
mov ecx, ebx
and ecx, 7
mov dl, 1
shl dl, cl
mov ecx, ebx
test ecx, ecx
jns 0x51cd06
add ecx, 7
sar ecx, 3
or byte [ebp + ecx - 0xb0], dl
test byte [ebp + 8], 1
je 0x51cd3a
mov edx, dword [ebp + 0x28]
mov edx, dword [edx + 4]
movzx edi, byte [edx + ebx]
mov ecx, edi
and ecx, 7
mov dl, 1
shl dl, cl
test edi, edi
jns 0x51cd30
add edi, 7
sar edi, 3
or byte [ebp + edi - 0xb0], dl
inc dword [ebp - 0x3c]
mov dword [ebp - 0x40], ebx
inc ebx
cmp eax, ebx
jge 0x51ccf4
jmp 0x51cd98
mov ecx, ebx
and ecx, 7
mov al, 1
shl al, cl
mov edx, ebx
test edx, edx
jns 0x51cd59
add edx, 7
sar edx, 3
or byte [ebp + edx - 0xb0], al
test byte [ebp + 8], 1
je 0x51cd92
mov eax, dword [ebp + 0x28]
mov edx, dword [eax + 4]
xor ecx, ecx
mov cl, byte [edx + ebx]
mov ebx, ecx
mov ecx, ebx
and ecx, 7
mov al, 1
shl al, cl
mov edx, ebx
test edx, edx
jns 0x51cd88
add edx, 7
sar edx, 3
or byte [ebp + edx - 0xb0], al
inc dword [ebp - 0x3c]
mov dword [ebp - 0x40], ebx
inc dword [ebp - 0x2c]
mov eax, dword [ebp - 0x2c]
xor ebx, ebx
mov bl, byte [eax]
cmp ebx, 0x5d
jne 0x51c9d6
cmp dword [ebp - 0x3c], 1
jne 0x51cdd6
cmp dword [ebp - 0x40], 0
jl 0x51cdd6
cmp dword [ebp - 0x38], 0
je 0x51cdc3
mov byte [esi - 1], 0x11
jmp 0x51cdcb
mov byte [esi - 1], 0x10
mov byte [esi], 1
inc esi
mov al, byte [ebp - 0x40]
mov byte [esi], al
inc esi
jmp 0x51d827
cmp dword [ebp - 0x38], 0
je 0x51cdf6
xor ebx, ebx
mov edx, esi
lea eax, [ebp - 0xb0]
mov cl, byte [eax]
not cl
mov byte [edx], cl
inc ebx
inc edx
inc eax
cmp ebx, 0x20
jl 0x51cde6
jmp 0x51ce08
push 0x20
lea eax, [ebp - 0xb0]
push eax
push esi
call fcn.005393c8
add esp, 0xc
add esi, 0x20
jmp 0x51d827
push dword [ebp + 0x28]
mov edx, dword [ebp - 0x2c]
inc edx
push edx
call fcn.0051c4c1
test eax, eax
je 0x51d75e
push dword [ebp + 0x28]
push dword [ebp + 0x18]
lea ecx, [ebp - 0x10]
push ecx
lea eax, [ebp - 0xc]
push eax
mov edx, dword [ebp - 0x2c]
inc edx
push edx
call fcn.0051c545
mov dword [ebp - 0x2c], eax
mov ecx, dword [ebp + 0x18]
cmp dword [ecx], 0
jne 0x51d82f
jmp 0x51ce78
xor eax, eax
mov dword [ebp - 0xc], eax
mov dword [ebp - 0x10], 0xffffffff
jmp 0x51ce78
mov dword [ebp - 0xc], 1
mov dword [ebp - 0x10], 0xffffffff
jmp 0x51ce78
xor edx, edx
mov dword [ebp - 0xc], edx
mov dword [ebp - 0x10], 1
cmp dword [ebp - 0x34], 0
jne 0x51ce8c
mov ecx, dword [ebp + 0x18]
mov dword [ecx], str.nothing_to_repeat
jmp 0x51d82f
mov eax, dword [ebp - 0x2c]
cmp byte [eax + 1], 0x3f
jne 0x51cea0
mov edx, dword [ebp - 0x18]
mov dword [ebp - 4], edx
inc dword [ebp - 0x2c]
jmp 0x51cea6
mov ecx, dword [ebp - 0x14]
mov dword [ebp - 4], ecx
mov eax, dword [ebp - 0x34]
cmp byte [eax], 0x10
jne 0x51cf02
mov edx, dword [ebp - 0x34]
xor ecx, ecx
mov cl, byte [edx + 1]
mov dword [ebp - 0x6c], ecx
cmp dword [ebp - 0xc], 0
jne 0x51cec7
mov eax, dword [ebp + 0x20]
mov edx, dword [ebp - 0x1c]
mov dword [eax], edx
mov ecx, dword [ebp - 0xc]
dec ecx
mov eax, dword [ebp + 0x24]
add dword [eax], ecx
cmp dword [ebp - 0x6c], 1
jne 0x51cee3
mov edx, dword [ebp - 0x34]
xor ebx, ebx
mov bl, byte [edx + 2]
mov esi, dword [ebp - 0x34]
jmp 0x51cef6
mov eax, dword [ebp - 0x34]
mov edx, dword [ebp - 0x6c]
xor ebx, ebx
mov bl, byte [eax + edx + 1]
mov eax, dword [ebp - 0x34]
dec byte [eax + 1]
dec esi
xor edx, edx
mov dword [ebp - 8], edx
jmp 0x51cf4b
mov ecx, dword [ebp - 0x34]
xor eax, eax
mov al, byte [ecx]
cmp eax, 0x11
jne 0x51cf22
mov dword [ebp - 8], 9
mov edx, dword [ebp - 0x34]
xor ebx, ebx
mov bl, byte [edx + 1]
mov esi, dword [ebp - 0x34]
jmp 0x51cf4b
mov eax, dword [ebp - 0x34]
xor edx, edx
mov dl, byte [eax]
cmp edx, 0xa
jl 0x51cf3a
mov ecx, dword [ebp - 0x34]
cmp byte [ecx], 0xf
jne 0x51d04d
mov dword [ebp - 8], 0x12
mov eax, dword [ebp - 0x34]
xor ebx, ebx
mov bl, byte [eax]
mov esi, dword [ebp - 0x34]
cmp dword [ebp - 0x10], 0
je 0x51d30c
mov eax, dword [ebp - 8]
add dword [ebp - 4], eax
cmp dword [ebp - 0xc], 0
jne 0x51cfa8
cmp dword [ebp - 0x10], 0xffffffff
jne 0x51cf75
mov dl, byte [ebp - 4]
add dl, 0x12
mov byte [esi], dl
inc esi
jmp 0x51d045
cmp dword [ebp - 0x10], 1
jne 0x51cf89
mov cl, byte [ebp - 4]
add cl, 0x16
mov byte [esi], cl
inc esi
jmp 0x51d045
mov al, byte [ebp - 4]
add al, 0x18
mov byte [esi], al
inc esi
mov edx, dword [ebp - 0x10]
sar edx, 8
mov byte [esi], dl
inc esi
mov cl, byte [ebp - 0x10]
and cl, 0xff
mov byte [esi], cl
inc esi
jmp 0x51d045
cmp dword [ebp - 0xc], 1
jne 0x51cfc1
cmp dword [ebp - 0x10], 0xffffffff
jne 0x51cfc1
mov al, byte [ebp - 4]
add al, 0x14
mov byte [esi], al
inc esi
jmp 0x51d045
cmp dword [ebp - 0xc], 1
je 0x51cfe3
mov dl, byte [ebp - 8]
add dl, 0x1a
mov byte [esi], dl
inc esi
mov ecx, dword [ebp - 0xc]
sar ecx, 8
mov byte [esi], cl
inc esi
mov al, byte [ebp - 0xc]
and al, 0xff
mov byte [esi], al
inc esi
jmp 0x51d006
mov edx, dword [ebp - 0x34]
cmp byte [edx], 0x10
jne 0x51cffd
cmp esi, dword [ebp - 0x34]
jne 0x51cff5
add esi, 2
jmp 0x51d006
mov ecx, dword [ebp - 0x34]
inc byte [ecx + 1]
jmp 0x51d006
mov eax, dword [ebp - 0x34]
cmp byte [eax], 0x11
jne 0x51d006
inc esi
cmp dword [ebp - 0x10], 0
jge 0x51d01a
mov byte [esi], bl
inc esi
mov dl, byte [ebp - 4]
add dl, 0x12
mov byte [esi], dl
inc esi
jmp 0x51d045
mov ecx, dword [ebp - 0x10]
cmp ecx, dword [ebp - 0xc]
je 0x51d045
mov byte [esi], bl
inc esi
mov eax, dword [ebp - 0xc]
sub dword [ebp - 0x10], eax
mov dl, byte [ebp - 4]
add dl, 0x18
mov byte [esi], dl
inc esi
mov ecx, dword [ebp - 0x10]
sar ecx, 8
mov byte [esi], cl
inc esi
mov al, byte [ebp - 0x10]
and al, 0xff
mov byte [esi], al
inc esi
mov byte [esi], bl
inc esi
jmp 0x51d30c
mov edx, dword [ebp - 0x34]
cmp byte [edx], 0x35
je 0x51d061
mov ecx, dword [ebp - 0x34]
cmp byte [ecx], 0x36
jne 0x51d0f8
cmp dword [ebp - 0x10], 0
jne 0x51d06f
mov esi, dword [ebp - 0x34]
jmp 0x51d30c
cmp dword [ebp - 0xc], 0
jne 0x51d088
cmp dword [ebp - 0x10], 0xffffffff
jne 0x51d088
mov al, byte [ebp - 4]
add al, 0x2d
mov byte [esi], al
inc esi
jmp 0x51d30c
cmp dword [ebp - 0xc], 1
jne 0x51d0a2
cmp dword [ebp - 0x10], 0xffffffff
jne 0x51d0a2
mov dl, byte [ebp - 4]
add dl, 0x2f
mov byte [esi], dl
inc esi
jmp 0x51d30c
cmp dword [ebp - 0xc], 0
jne 0x51d0bc
cmp dword [ebp - 0x10], 1
jne 0x51d0bc
mov cl, byte [ebp - 4]
add cl, 0x31
mov byte [esi], cl
inc esi
jmp 0x51d30c
mov al, byte [ebp - 4]
add al, 0x33
mov byte [esi], al
inc esi
mov edx, dword [ebp - 0xc]
sar edx, 8
mov byte [esi], dl
inc esi
mov cl, byte [ebp - 0xc]
and cl, 0xff
mov byte [esi], cl
inc esi
cmp dword [ebp - 0x10], 0xffffffff
jne 0x51d0e1
xor eax, eax
mov dword [ebp - 0x10], eax
mov edx, dword [ebp - 0x10]
sar edx, 8
mov byte [esi], dl
inc esi
mov cl, byte [ebp - 0x10]
and cl, 0xff
mov byte [esi], cl
inc esi
jmp 0x51d30c
mov eax, dword [ebp - 0x34]
xor edx, edx
mov dl, byte [eax]
cmp edx, 0x46
jge 0x51d120
mov ecx, dword [ebp - 0x34]
xor eax, eax
mov al, byte [ecx]
cmp eax, 0x41
je 0x51d120
mov edx, dword [ebp - 0x34]
xor ecx, ecx
mov cl, byte [edx]
cmp ecx, 0x42
jne 0x51d2fe
xor eax, eax
mov dword [ebp - 0x70], eax
mov edx, esi
sub edx, dword [ebp - 0x34]
mov dword [ebp - 0x74], edx
xor ebx, ebx
cmp dword [ebp - 0x10], 0xffffffff
jne 0x51d163
mov eax, dword [ebp - 0x34]
mov dword [ebp - 0x78], eax
mov edx, dword [ebp - 0x78]
xor ecx, ecx
mov cl, byte [edx + 1]
shl ecx, 8
mov eax, dword [ebp - 0x78]
xor edx, edx
mov dl, byte [eax + 2]
add ecx, edx
add dword [ebp - 0x78], ecx
mov ecx, dword [ebp - 0x78]
cmp byte [ecx], 0x39
jne 0x51d13b
mov eax, esi
sub eax, dword [ebp - 0x78]
mov dword [ebp - 0x70], eax
cmp dword [ebp - 0xc], 0
jne 0x51d21e
cmp dword [ebp - 0x24], 0
jle 0x51d183
mov edx, dword [ebp + 0x20]
mov ecx, dword [ebp - 0x1c]
mov dword [edx], ecx
mov eax, dword [ebp + 0x24]
mov edx, dword [ebp - 0x24]
sub dword [eax], edx
cmp dword [ebp - 0x10], 0
jne 0x51d191
mov esi, dword [ebp - 0x34]
jmp 0x51d30c
cmp dword [ebp - 0x10], 1
jg 0x51d1bb
push dword [ebp - 0x74]
push dword [ebp - 0x34]
mov eax, dword [ebp - 0x34]
inc eax
push eax
call fcn.005393ec
add esp, 0xc
inc esi
mov dl, byte [ebp - 4]
add dl, 0x44
mov ecx, dword [ebp - 0x34]
mov byte [ecx], dl
inc dword [ebp - 0x34]
jmp 0x51d219
push dword [ebp - 0x74]
push dword [ebp - 0x34]
mov eax, dword [ebp - 0x34]
add eax, 4
push eax
call fcn.005393ec
add esp, 0xc
add esi, 4
mov dl, byte [ebp - 4]
add dl, 0x44
mov ecx, dword [ebp - 0x34]
mov byte [ecx], dl
inc dword [ebp - 0x34]
mov eax, dword [ebp - 0x34]
mov byte [eax], 0x46
inc dword [ebp - 0x34]
test ebx, ebx
jne 0x51d1f2
xor edx, edx
jmp 0x51d1f7
mov edx, dword [ebp - 0x34]
sub edx, ebx
mov dword [ebp - 0x7c], edx
mov ebx, dword [ebp - 0x34]
mov eax, dword [ebp - 0x7c]
sar eax, 8
mov edx, dword [ebp - 0x34]
mov byte [edx], al
inc dword [ebp - 0x34]
mov cl, byte [ebp - 0x7c]
and cl, 0xff
mov eax, dword [ebp - 0x34]
mov byte [eax], cl
inc dword [ebp - 0x34]
dec dword [ebp - 0x10]
jmp 0x51d24c
mov edi, 1
cmp edi, dword [ebp - 0xc]
jge 0x51d240
push dword [ebp - 0x74]
push dword [ebp - 0x34]
push esi
call fcn.005393c8
add esp, 0xc
add esi, dword [ebp - 0x74]
inc edi
cmp edi, dword [ebp - 0xc]
jl 0x51d228
cmp dword [ebp - 0x10], 0
jle 0x51d24c
mov eax, dword [ebp - 0xc]
sub dword [ebp - 0x10], eax
cmp dword [ebp - 0x10], 0
jl 0x51d2ef
mov edi, dword [ebp - 0x10]
dec edi
test edi, edi
jl 0x51d2a8
mov al, byte [ebp - 4]
add al, 0x44
mov byte [esi], al
inc esi
test edi, edi
je 0x51d291
mov byte [esi], 0x46
inc esi
test ebx, ebx
jne 0x51d276
xor edx, edx
jmp 0x51d27a
mov edx, esi
sub edx, ebx
mov dword [ebp - 0x80], edx
mov ebx, esi
mov eax, dword [ebp - 0x80]
sar eax, 8
mov byte [esi], al
inc esi
mov dl, byte [ebp - 0x80]
and dl, 0xff
mov byte [esi], dl
inc esi
push dword [ebp - 0x74]
push dword [ebp - 0x34]
push esi
call fcn.005393c8
add esp, 0xc
add esi, dword [ebp - 0x74]
dec edi
test edi, edi
jge 0x51d25e
test ebx, ebx
je 0x51d30c
mov edx, esi
sub edx, ebx
inc edx
mov eax, esi
sub eax, edx
xor ecx, ecx
mov cl, byte [eax + 1]
shl ecx, 8
movzx edi, byte [eax + 2]
add ecx, edi
test ecx, ecx
jne 0x51d2cb
xor edi, edi
jmp 0x51d2cf
mov edi, ebx
sub edi, ecx
mov ebx, edi
mov byte [esi], 0x39
inc esi
mov ecx, edx
sar ecx, 8
mov byte [eax + 1], cl
mov byte [esi], cl
inc esi
and dl, 0xff
mov byte [eax + 2], dl
mov byte [esi], dl
inc esi
test ebx, ebx
jne 0x51d2ac
jmp 0x51d30c
mov al, byte [ebp - 4]
add al, 0x3a
mov edx, dword [ebp - 0x70]
neg edx
mov byte [esi + edx], al
jmp 0x51d30c
mov eax, dword [ebp + 0x18]
mov dword [eax], str.internal_error:_unexpected_repeat
jmp 0x51d82f
xor ecx, ecx
mov dword [ebp - 0x34], ecx
jmp 0x51d827
mov eax, dword [ebp + 8]
mov dword [ebp - 0x44], eax
mov dword [ebp - 0x48], 0xffffffff
inc dword [ebp - 0x2c]
mov edx, dword [ebp - 0x2c]
cmp byte [edx], 0x3f
jne 0x51d5a8
inc dword [ebp - 0x2c]
mov ecx, dword [ebp - 0x2c]
xor eax, eax
mov al, byte [ecx]
cmp eax, 0x3c
jg 0x51d364
je 0x51d42e
sub eax, 0x21
je 0x51d421
sub eax, 2
je 0x51d382
sub eax, 5
je 0x51d3a4
sub eax, 0x12
je 0x51d397
jmp 0x51d481
sub eax, 0x3d
je 0x51d414
dec eax
je 0x51d468
sub eax, 0x14
je 0x51d475
jmp 0x51d481
inc dword [ebp - 0x2c]
jmp 0x51d38a
inc dword [ebp - 0x2c]
mov edx, dword [ebp - 0x2c]
cmp byte [edx], 0x29
jne 0x51d387
jmp 0x51d827
mov ebx, 0x46
inc dword [ebp - 0x2c]
jmp 0x51d5ca
mov ebx, 0x42
inc dword [ebp - 0x2c]
mov eax, dword [ebp - 0x2c]
xor edx, edx
mov dl, byte [eax]
mov ecx, dword [ebp + 0x28]
mov eax, dword [ecx + 0xc]
test byte [eax + edx], 4
je 0x51d40c
mov edx, dword [ebp - 0x2c]
xor ecx, ecx
mov cl, byte [edx]
add ecx, 0xffffffd0
mov dword [ebp - 0x48], ecx
jmp 0x51d3e5
mov eax, dword [ebp - 0x48]
add eax, eax
lea eax, [eax + eax*4]
mov edx, dword [ebp - 0x2c]
xor ecx, ecx
mov cl, byte [edx]
add eax, ecx
add eax, 0xffffffd0
mov dword [ebp - 0x48], eax
inc dword [ebp - 0x2c]
mov eax, dword [ebp - 0x2c]
cmp byte [eax], 0x29
jne 0x51d3ce
cmp dword [ebp - 0x48], 0
jne 0x51d404
mov edx, dword [ebp + 0x18]
mov dword [edx], str.invalid_condition____0_
jmp 0x51d82f
inc dword [ebp - 0x2c]
jmp 0x51d5ca
dec dword [ebp - 0x2c]
jmp 0x51d5ca
mov ebx, 0x3c
inc dword [ebp - 0x2c]
jmp 0x51d5ca
mov ebx, 0x3d
inc dword [ebp - 0x2c]
jmp 0x51d5ca
inc dword [ebp - 0x2c]
mov eax, dword [ebp - 0x2c]
mov dl, byte [eax]
sub dl, 0x21
je 0x51d44d
sub dl, 0x1c
jne 0x51d45a
mov ebx, 0x3e
inc dword [ebp - 0x2c]
jmp 0x51d5ca
mov ebx, 0x3f
inc dword [ebp - 0x2c]
jmp 0x51d5ca
mov eax, dword [ebp + 0x18]
mov dword [eax], 0x55c403
jmp 0x51d82f
mov ebx, 0x41
inc dword [ebp - 0x2c]
jmp 0x51d5ca
mov byte [esi], 0x37
inc esi
inc dword [ebp - 0x2c]
jmp 0x51d827
xor eax, eax
mov dword [ebp - 0x88], eax
mov dword [ebp - 0x84], eax
lea edx, [ebp - 0x84]
mov dword [ebp - 0x8c], edx
jmp 0x51d534
mov ecx, dword [ebp - 0x2c]
inc dword [ebp - 0x2c]
xor eax, eax
mov al, byte [ecx]
cmp eax, 0x69
jg 0x51d4c2
je 0x51d4e1
sub eax, 0x2d
je 0x51d4d3
sub eax, 0x28
je 0x51d50d
sub eax, 3
je 0x51d51b
jmp 0x51d526
sub eax, 0x6d
je 0x51d4ec
sub eax, 6
je 0x51d4f7
sub eax, 5
je 0x51d502
jmp 0x51d526
lea edx, [ebp - 0x88]
mov dword [ebp - 0x8c], edx
jmp 0x51d534
mov ecx, dword [ebp - 0x8c]
or dword [ecx], 1
jmp 0x51d534
mov eax, dword [ebp - 0x8c]
or dword [eax], 2
jmp 0x51d534
mov edx, dword [ebp - 0x8c]
or dword [edx], 4
jmp 0x51d534
mov ecx, dword [ebp - 0x8c]
or dword [ecx], 8
jmp 0x51d534
mov eax, dword [ebp - 0x8c]
or dword [eax], 0x200
jmp 0x51d534
mov edx, dword [ebp - 0x8c]
or dword [edx], 0x40
jmp 0x51d534
mov ecx, dword [ebp + 0x18]
mov dword [ecx], 0x55c424
jmp 0x51d82f
mov eax, dword [ebp - 0x2c]
cmp byte [eax], 0x29
je 0x51d548
mov edx, dword [ebp - 0x2c]
cmp byte [edx], 0x3a
jne 0x51d4a0
mov ecx, dword [ebp + 8]
or ecx, dword [ebp - 0x84]
mov eax, dword [ebp - 0x88]
not eax
and ecx, eax
mov dword [ebp - 0x44], ecx
mov edx, dword [ebp - 0x2c]
cmp byte [edx], 0x29
jne 0x51d59e
test byte [ebp + 0xb], 8
je 0x51d58e
mov ecx, dword [ebp + 8]
and ecx, 7
mov eax, dword [ebp - 0x44]
and eax, 7
cmp ecx, eax
je 0x51d58e
mov byte [esi], 0xc
inc esi
mov edx, dword [ebp - 0x44]
and edx, 7
mov ecx, dword [ebp + 0x1c]
mov dword [ecx], edx
mov byte [esi], dl
inc esi
mov eax, dword [ebp - 0x44]
mov dword [ebp + 8], eax
xor ecx, ecx
mov dword [ebp - 0x34], ecx
jmp 0x51d827
mov ebx, 0x46
inc dword [ebp - 0x2c]
jmp 0x51d5ca
mov eax, dword [ebp + 0xc]
inc dword [eax]
mov edx, dword [eax]
cmp edx, 0x63
jle 0x51d5c2
mov ecx, dword [ebp + 0x18]
mov dword [ecx], str.too_many_capturing_parenthesized_sub_patterns
jmp 0x51d82f
mov eax, dword [ebp + 0xc]
mov ebx, dword [eax]
add ebx, 0x46
cmp ebx, 0x41
jl 0x51d5d3
mov eax, esi
jmp 0x51d5d5
xor eax, eax
mov dword [ebp - 0x34], eax
mov byte [esi], bl
mov dword [ebp - 0x28], esi
push dword [ebp + 0x28]
lea edx, [ebp - 0x24]
push edx
lea ecx, [ebp - 0x4c]
push ecx
push dword [ebp - 0x48]
cmp ebx, 0x3e
je 0x51d5f9
cmp ebx, 0x3f
je 0x51d5f9
xor eax, eax
jmp 0x51d5fe
mov eax, 1
push eax
push dword [ebp + 0x18]
lea edx, [ebp - 0x2c]
push edx
lea ecx, [ebp - 0x28]
push ecx
push dword [ebp + 0xc]
mov eax, dword [ebp + 8]
and eax, 7
mov edx, dword [ebp - 0x44]
and edx, 7
cmp eax, edx
je 0x51d625
mov ecx, dword [ebp - 0x44]
and ecx, 7
jmp 0x51d628
or ecx, 0xffffffff
push ecx
mov eax, dword [ebp + 8]
or eax, 0x8000000
push eax
call fcn.0051d842
test eax, eax
je 0x51d82f
cmp ebx, 0x42
jne 0x51d692
mov dword [ebp - 0x90], esi
xor edx, edx
mov dword [ebp - 0x20], edx
inc dword [ebp - 0x20]
mov eax, dword [ebp - 0x90]
xor edx, edx
mov dl, byte [eax + 1]
shl edx, 8
mov ecx, dword [ebp - 0x90]
xor eax, eax
mov al, byte [ecx + 2]
or edx, eax
add dword [ebp - 0x90], edx
mov edx, dword [ebp - 0x90]
cmp byte [edx], 0x39
jne 0x51d64f
cmp dword [ebp - 0x20], 2
jle 0x51d692
mov ecx, dword [ebp + 0x18]
mov dword [ecx], str.conditional_group_contains_more_than_two_branches
jmp 0x51d82f
cmp dword [ebp - 0x4c], 0
jle 0x51d6cf
cmp ebx, 0x46
jge 0x51d6b2
cmp ebx, 0x41
je 0x51d6b2
cmp ebx, 0x3c
je 0x51d6b2
cmp ebx, 0x42
jne 0x51d6cf
cmp dword [ebp - 0x20], 2
jne 0x51d6cf
mov eax, dword [ebp + 0x20]
mov edx, dword [eax]
mov dword [ebp - 0x1c], edx
mov ecx, dword [ebp + 0x20]
mov eax, dword [ebp - 0x4c]
mov dword [ecx], eax
cmp ebx, 0x3c
je 0x51d6cf
mov edx, dword [ebp + 0x24]
mov ecx, dword [ebp - 0x24]
add dword [edx], ecx
mov esi, dword [ebp - 0x28]
mov eax, dword [ebp - 0x2c]
cmp byte [eax], 0x29
je 0x51d827
mov edx, dword [ebp + 0x18]
mov dword [edx], str.missing__
jmp 0x51d82f
mov ecx, dword [ebp - 0x2c]
mov dword [ebp - 0x30], ecx
push dword [ebp + 0x28]
push 0
push dword [ebp + 8]
mov eax, dword [ebp + 0xc]
push dword [eax]
push dword [ebp + 0x18]
lea edx, [ebp - 0x2c]
push edx
call fcn.0051c32a
mov ebx, eax
test ebx, ebx
jge 0x51d753
mov eax, ebx
neg eax
cmp eax, 0xc
jl 0x51d72e
mov dword [ebp - 0x34], esi
mov byte [esi], 0x36
inc esi
neg bl
add bl, 0xf4
mov byte [esi], bl
inc esi
jmp 0x51d827
mov edx, ebx
neg edx
cmp edx, 3
jle 0x51d744
mov ecx, ebx
neg ecx
cmp ecx, 0xa
jge 0x51d744
mov eax, esi
jmp 0x51d746
xor eax, eax
mov dword [ebp - 0x34], eax
neg bl
mov byte [esi], bl
inc esi
jmp 0x51d827
mov edx, dword [ebp - 0x30]
mov dword [ebp - 0x2c], edx
mov ebx, 0x5c
mov dword [ebp - 0x34], esi
mov byte [esi], 0x10
add esi, 2
xor edi, edi
test byte [ebp + 8], 8
je 0x51d799
mov eax, dword [ebp + 0x28]
mov edx, dword [eax + 0xc]
test byte [edx + ebx], 1
jne 0x51d7cf
cmp ebx, 0x23
jne 0x51d799
inc dword [ebp - 0x2c]
mov ecx, dword [ebp - 0x2c]
xor ebx, ebx
mov bl, byte [ecx]
test ebx, ebx
je 0x51d793
cmp ebx, 0xa
jne 0x51d780
test ebx, ebx
je 0x51d7f1
jmp 0x51d7cf
cmp ebx, 0x5c
jne 0x51d7cb
mov eax, dword [ebp - 0x2c]
mov dword [ebp - 0x30], eax
push dword [ebp + 0x28]
push 0
push dword [ebp + 8]
mov edx, dword [ebp + 0xc]
push dword [edx]
push dword [ebp + 0x18]
lea ecx, [ebp - 0x2c]
push ecx
call fcn.0051c32a
mov ebx, eax
test ebx, ebx
jge 0x51d7cb
mov eax, dword [ebp - 0x30]
mov dword [ebp - 0x2c], eax
jmp 0x51d7f1
mov byte [esi], bl
inc esi
inc edi
cmp edi, 0xff
jge 0x51d7f1
inc dword [ebp - 0x2c]
mov edx, dword [ebp - 0x2c]
xor ebx, ebx
mov bl, byte [edx]
mov eax, dword [ebp + 0x28]
mov edx, dword [eax + 0xc]
test byte [edx + ebx], 0x80
je 0x51d769
cmp edi, 1
jle 0x51d7fd
xor ecx, ecx
mov cl, byte [esi - 2]
jmp 0x51d802
mov eax, dword [ebp + 0x20]
mov ecx, dword [eax]
mov dword [ebp - 0x1c], ecx
xor edx, edx
mov dl, byte [esi - 1]
mov eax, dword [ebp + 0x20]
mov dword [eax], edx
mov edx, dword [ebp + 0x24]
add dword [edx], edi
mov ecx, edi
mov eax, dword [ebp - 0x34]
mov byte [eax + 1], cl
cmp edi, 0xff
jge 0x51d827
dec dword [ebp - 0x2c]
inc dword [ebp - 0x2c]
jmp 0x51c899
mov edx, dword [ebp + 0x14]
mov ecx, dword [ebp - 0x2c]
mov dword [edx], ecx
xor eax, eax
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x24