Function at 0x517a10
Capabilities:
Parse credit card information

Disassembly:
push ebp
mov ebp, esp
add esp, 0xffffff8c
push ebx
push esi
push edi
mov eax, dword [ebp + 0x10]
mov esi, dword [eax]
mov eax, dword [ebp + 0x14]
mov edx, dword [eax]
mov dword [ebp - 0x20], edx
xor edi, edi
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
xor ebx, ebx
mov ecx, dword [ebp - 0x20]
test byte [ebp + 8], 8
mov bl, byte [ecx]
je 0x517a7c
mov eax, dword [ebp + 0x20]
mov edx, dword [eax + 0xc]
test byte [edx + ebx], 1
jne 0x51869c
cmp ebx, 0x23
jne 0x517a7c
inc dword [ebp - 0x20]
mov ecx, dword [ebp - 0x20]
xor ebx, ebx
mov bl, byte [ecx]
test ebx, ebx
je 0x51869c
cmp ebx, 0xa
jne 0x517a60
jmp 0x51869c
mov eax, ebx
cmp eax, 0x2e
jg 0x517abd
je 0x517b1c
cmp eax, 0x29
jg 0x517aa8
je 0x517aef
sub eax, 1
jb 0x517aef
sub eax, 0x23
je 0x517b11
sub eax, 4
je 0x51824f
jmp 0x5185eb
sub eax, 0x2a
je 0x517eeb
dec eax
je 0x517ef9
jmp 0x5185eb
cmp eax, 0x5e
jg 0x517ade
je 0x517b06
sub eax, 0x3f
je 0x517f09
sub eax, 0x1c
je 0x517b27
dec eax
je 0x518576
jmp 0x5185eb
sub eax, 0x7b
je 0x517ea4
dec eax
je 0x517aef
jmp 0x5185eb
mov edx, dword [ebp + 0x10]
mov dword [edx], esi
mov ecx, dword [ebp + 0x14]
mov eax, dword [ebp - 0x20]
mov dword [ecx], eax
mov eax, 1
jmp 0x5186ae
xor edi, edi
mov byte [esi], 0xd
inc esi
jmp 0x51869c
xor edi, edi
mov byte [esi], 0xe
inc esi
jmp 0x51869c
mov edi, esi
mov byte [esi], 0xf
inc esi
jmp 0x51869c
mov edi, esi
mov byte [esi], 0x35
inc esi
inc dword [ebp - 0x20]
mov eax, dword [ebp - 0x20]
xor ebx, ebx
mov bl, byte [eax]
cmp ebx, 0x5e
jne 0x517b4f
mov dword [ebp - 0x28], 1
inc dword [ebp - 0x20]
mov eax, dword [ebp - 0x20]
xor ebx, ebx
mov bl, byte [eax]
jmp 0x517b54
xor eax, eax
mov dword [ebp - 0x28], eax
xor edx, edx
lea ecx, [ebp - 0x74]
mov dword [ebp - 0x2c], edx
mov dword [ebp - 0x30], 0xffffffff
push 0x20
push 0
push ecx
call fcn.0050a57c
add esp, 0xc
test ebx, ebx
jne 0x517b82
mov eax, dword [ebp + 0x18]
mov dword [eax], 0x6151ed
jmp 0x5186a4
cmp ebx, 0x5c
jne 0x517cf6
mov edx, dword [ebp + 0x20]
push edx
push 1
mov ecx, dword [ebp + 8]
push ecx
mov eax, dword [ebp + 0xc]
mov edx, dword [eax]
push edx
mov ecx, dword [ebp + 0x18]
push ecx
lea eax, [ebp - 0x20]
push eax
call fcn.00517578
add esp, 0x18
mov ebx, eax
mov eax, ebx
neg eax
cmp eax, 3
jne 0x517bc0
mov ebx, 8
jmp 0x517cf6
test ebx, ebx
jge 0x517cf6
mov eax, dword [ebp + 0x20]
neg ebx
mov edx, dword [eax + 8]
add ebx, 0xfffffffc
mov dword [ebp - 0x38], edx
cmp ebx, 5
mov dword [ebp - 0x2c], 0xa
ja case.default.0x517be6
jmp dword [ebx*4 + 0x517bed]
xor ebx, ebx
lea eax, [ebp - 0x74]
mov dword [ebp - 0x54], eax
mov edx, dword [ebp - 0x38]
mov eax, edx
mov dl, byte [eax]
mov ecx, dword [ebp - 0x54]
or byte [ecx], dl
inc ebx
inc dword [ebp - 0x54]
inc eax
cmp ebx, 0x20
jl 0x517c12
jmp 0x517e2a
mov edx, dword [ebp - 0x38]
xor ebx, ebx
mov ecx, edx
lea eax, [ebp - 0x74]
mov dword [ebp - 0x54], ecx
mov edx, dword [ebp - 0x54]
mov cl, byte [edx]
not cl
or byte [eax], cl
inc ebx
inc eax
inc dword [ebp - 0x54]
cmp ebx, 0x20
jl 0x517c35
jmp 0x517e2a
xor ebx, ebx
lea eax, [ebp - 0x74]
mov dword [ebp - 0x54], eax
mov edx, dword [ebp - 0x38]
mov eax, edx
mov dl, byte [eax]
mov ecx, dword [ebp - 0x54]
or dl, byte [eax + 0x20]
inc eax
or byte [ecx], dl
inc dword [ebp - 0x54]
inc ebx
cmp ebx, 0x20
jl 0x517c5a
jmp 0x517e2a
mov edx, dword [ebp - 0x38]
xor ebx, ebx
mov ecx, edx
lea eax, [ebp - 0x74]
mov dword [ebp - 0x54], ecx
mov edx, dword [ebp - 0x54]
mov cl, byte [edx]
mov edx, dword [ebp - 0x54]
or cl, byte [edx + 0x20]
not cl
or byte [eax], cl
inc ebx
inc eax
inc dword [ebp - 0x54]
cmp ebx, 0x20
jl 0x517c80
jmp 0x517e2a
xor ebx, ebx
lea eax, [ebp - 0x74]
mov dword [ebp - 0x54], eax
mov edx, dword [ebp - 0x38]
lea eax, [edx + 0x40]
mov dl, byte [eax]
mov ecx, dword [ebp - 0x54]
or byte [ecx], dl
inc ebx
inc dword [ebp - 0x54]
inc eax
cmp ebx, 0x20
jl 0x517cac
jmp 0x517e2a
mov edx, dword [ebp - 0x38]
xor ebx, ebx
lea eax, [ebp - 0x74]
lea ecx, [edx + 0x40]
mov dword [ebp - 0x54], ecx
mov edx, dword [ebp - 0x54]
mov cl, byte [edx]
not cl
or byte [eax], cl
inc ebx
inc eax
inc dword [ebp - 0x54]
cmp ebx, 0x20
jl 0x517cd0
jmp 0x517e2a
mov eax, dword [ebp + 0x18]
mov dword [eax], 0x615217
jmp 0x5186a4
mov eax, dword [ebp - 0x20]
cmp byte [eax + 1], 0x2d
jne 0x517ddf
mov edx, dword [ebp - 0x20]
cmp byte [edx + 2], 0x5d
je 0x517ddf
add dword [ebp - 0x20], 2
mov ecx, dword [ebp - 0x20]
xor eax, eax
mov al, byte [ecx]
test eax, eax
jne 0x517d2d
mov edx, dword [ebp + 0x18]
mov dword [edx], str.missing_terminating___for_character_class
jmp 0x5186a4
cmp eax, 0x5c
jne 0x517d70
mov ecx, dword [ebp + 0x20]
push ecx
push 1
mov eax, dword [ebp + 8]
push eax
mov edx, dword [ebp + 0xc]
mov ecx, dword [edx]
push ecx
mov eax, dword [ebp + 0x18]
push eax
lea edx, [ebp - 0x20]
push edx
call fcn.00517578
add esp, 0x18
test eax, eax
jge 0x517d70
cmp eax, 0xfffffffd
jne 0x517d62
mov eax, 8
jmp 0x517d70
mov edx, dword [ebp + 0x18]
mov dword [edx], str.invalid_escape_sequence_in_character_class
jmp 0x5186a4
cmp ebx, eax
jle 0x517d82
mov ecx, dword [ebp + 0x18]
mov dword [ecx], str.range_out_of_order_in_character_class
jmp 0x5186a4
cmp eax, ebx
jl 0x517e2a
mov ecx, ebx
and ecx, 7
mov dl, 1
shl dl, cl
mov ecx, ebx
test ecx, ecx
jns 0x517d9c
add ecx, 7
sar ecx, 3
or byte [ebp + ecx - 0x74], dl
test byte [ebp + 8], 1
je 0x517dd2
mov edx, dword [ebp + 0x20]
mov edx, dword [edx + 4]
xor ecx, ecx
mov cl, byte [edx + ebx]
mov dword [ebp - 0x3c], ecx
mov ecx, dword [ebp - 0x3c]
and ecx, 7
mov dl, 1
shl dl, cl
mov ecx, dword [ebp - 0x3c]
test ecx, ecx
jns 0x517dcb
add ecx, 7
sar ecx, 3
or byte [ebp + ecx - 0x74], dl
inc dword [ebp - 0x2c]
mov dword [ebp - 0x30], ebx
inc ebx
cmp eax, ebx
jge 0x517d8a
jmp 0x517e2a
mov ecx, ebx
mov al, 1
and ecx, 7
mov edx, ebx
shl al, cl
test edx, edx
jns 0x517df1
add edx, 7
sar edx, 3
or byte [ebp + edx - 0x74], al
test byte [ebp + 8], 1
je 0x517e24
mov eax, dword [ebp + 0x20]
xor ecx, ecx
mov edx, dword [eax + 4]
mov al, 1
mov cl, byte [edx + ebx]
mov ebx, ecx
mov ecx, ebx
mov edx, ebx
and ecx, 7
shl al, cl
test edx, edx
jns 0x517e1d
add edx, 7
sar edx, 3
or byte [ebp + edx - 0x74], al
inc dword [ebp - 0x2c]
mov dword [ebp - 0x30], ebx
inc dword [ebp - 0x20]
mov eax, dword [ebp - 0x20]
xor ebx, ebx
mov bl, byte [eax]
cmp ebx, 0x5d
jne 0x517b70
cmp dword [ebp - 0x2c], 1
jne 0x517e68
cmp dword [ebp - 0x30], 0
jl 0x517e68
cmp dword [ebp - 0x28], 0
je 0x517e55
mov byte [esi - 1], 0x11
jmp 0x517e5d
mov byte [esi - 1], 0x10
mov byte [esi], 1
inc esi
mov al, byte [ebp - 0x30]
mov byte [esi], al
inc esi
jmp 0x51869c
cmp dword [ebp - 0x28], 0
je 0x517e8d
xor ebx, ebx
mov eax, esi
mov dword [ebp - 0x54], eax
lea eax, [ebp - 0x74]
mov dl, byte [eax]
mov ecx, dword [ebp - 0x54]
not dl
mov byte [ecx], dl
inc eax
inc dword [ebp - 0x54]
inc ebx
cmp ebx, 0x20
jl 0x517e78
jmp 0x517e9c
push 0x20
lea eax, [ebp - 0x74]
push eax
push esi
call fcn.0050a50c
add esp, 0xc
add esi, 0x20
jmp 0x51869c
mov edx, dword [ebp + 0x20]
push edx
mov ecx, dword [ebp - 0x20]
inc ecx
push ecx
call fcn.0051771c
add esp, 8
test eax, eax
je 0x5185eb
mov eax, dword [ebp + 0x20]
lea ecx, [ebp - 0xc]
push eax
lea eax, [ebp - 8]
mov edx, dword [ebp + 0x18]
push edx
push ecx
push eax
mov edx, dword [ebp - 0x20]
inc edx
push edx
call fcn.005177a4
add esp, 0x14
mov dword [ebp - 0x20], eax
mov ecx, dword [ebp + 0x18]
cmp dword [ecx], 0
jne 0x5186a4
jmp 0x517f15
xor eax, eax
mov dword [ebp - 8], eax
mov dword [ebp - 0xc], 0xffffffff
jmp 0x517f15
mov dword [ebp - 8], 1
mov dword [ebp - 0xc], 0xffffffff
jmp 0x517f15
xor edx, edx
mov dword [ebp - 8], edx
mov dword [ebp - 0xc], 1
test edi, edi
jne 0x517f27
mov ecx, dword [ebp + 0x18]
mov dword [ecx], str.nothing_to_repeat
jmp 0x5186a4
mov eax, dword [ebp - 0x20]
cmp byte [eax + 1], 0x3f
jne 0x517f3b
mov edx, dword [ebp - 0x18]
mov dword [ebp - 4], edx
inc dword [ebp - 0x20]
jmp 0x517f41
mov ecx, dword [ebp - 0x14]
mov dword [ebp - 4], ecx
cmp dword [ebp - 0xc], 0
jne 0x517f4e
mov esi, edi
jmp 0x518248
cmp byte [edi], 0x10
jne 0x517f79
xor eax, eax
mov al, byte [edi + 1]
cmp eax, 1
jne 0x517f66
xor ebx, ebx
mov esi, edi
mov bl, byte [edi + 2]
jmp 0x517f70
xor ebx, ebx
mov bl, byte [edi + eax + 1]
dec byte [edi + 1]
dec esi
xor eax, eax
jmp 0x517fad
xor edx, edx
mov dl, byte [edi]
cmp edx, 0x11
jne 0x517f90
mov eax, 9
xor ebx, ebx
mov bl, byte [edi + 1]
mov esi, edi
jmp 0x517fad
xor eax, eax
mov al, byte [edi]
cmp eax, 0xa
jl 0x517fa2
cmp byte [edi], 0xf
jne 0x518094
mov eax, 0x12
xor ebx, ebx
mov bl, byte [edi]
mov esi, edi
add dword [ebp - 4], eax
cmp dword [ebp - 8], 0
jne 0x517ffd
cmp dword [ebp - 0xc], 0xffffffff
jne 0x517fc9
mov al, byte [ebp - 4]
add al, 0x12
mov byte [esi], al
inc esi
jmp 0x51808c
cmp dword [ebp - 0xc], 1
jne 0x517fdd
mov dl, byte [ebp - 4]
add dl, 0x16
mov byte [esi], dl
inc esi
jmp 0x51808c
mov cl, byte [ebp - 4]
add cl, 0x18
mov byte [esi], cl
inc esi
mov eax, dword [ebp - 0xc]
sar eax, 8
mov byte [esi], al
inc esi
mov dl, byte [ebp - 0xc]
and dl, 0xff
mov byte [esi], dl
inc esi
jmp 0x51808c
cmp dword [ebp - 8], 1
jne 0x518014
cmp dword [ebp - 0xc], 0xffffffff
jne 0x518014
mov cl, byte [ebp - 4]
add cl, 0x14
mov byte [esi], cl
inc esi
jmp 0x51808c
cmp dword [ebp - 8], 1
je 0x518033
add al, 0x1a
mov byte [esi], al
inc esi
mov eax, dword [ebp - 8]
sar eax, 8
mov byte [esi], al
inc esi
mov dl, byte [ebp - 8]
and dl, 0xff
mov byte [esi], dl
inc esi
jmp 0x51804c
cmp byte [edi], 0x10
jne 0x518046
cmp edi, esi
jne 0x518041
add esi, 2
jmp 0x51804c
inc byte [edi + 1]
jmp 0x51804c
cmp byte [edi], 0x11
jne 0x51804c
inc esi
cmp dword [ebp - 0xc], 0
jge 0x518060
mov byte [esi], bl
inc esi
mov cl, byte [ebp - 4]
add cl, 0x12
mov byte [esi], cl
inc esi
jmp 0x51808c
mov eax, dword [ebp - 0xc]
cmp eax, dword [ebp - 8]
je 0x51808c
mov byte [esi], bl
inc esi
mov edx, dword [ebp - 8]
sub dword [ebp - 0xc], edx
mov cl, byte [ebp - 4]
add cl, 0x18
mov byte [esi], cl
inc esi
mov eax, dword [ebp - 0xc]
sar eax, 8
mov byte [esi], al
inc esi
mov dl, byte [ebp - 0xc]
and dl, 0xff
mov byte [esi], dl
inc esi
mov byte [esi], bl
inc esi
jmp 0x518248
cmp byte [edi], 0x35
je 0x5180a2
cmp byte [edi], 0x36
jne 0x51812c
cmp dword [ebp - 8], 0
jne 0x5180bc
cmp dword [ebp - 0xc], 0xffffffff
jne 0x5180bc
mov cl, byte [ebp - 4]
add cl, 0x2d
mov byte [esi], cl
inc esi
jmp 0x518248
cmp dword [ebp - 8], 1
jne 0x5180d5
cmp dword [ebp - 0xc], 0xffffffff
jne 0x5180d5
mov al, byte [ebp - 4]
add al, 0x2f
mov byte [esi], al
inc esi
jmp 0x518248
cmp dword [ebp - 8], 0
jne 0x5180ef
cmp dword [ebp - 0xc], 1
jne 0x5180ef
mov dl, byte [ebp - 4]
add dl, 0x31
mov byte [esi], dl
inc esi
jmp 0x518248
mov cl, byte [ebp - 4]
add cl, 0x33
mov byte [esi], cl
inc esi
mov eax, dword [ebp - 8]
sar eax, 8
mov byte [esi], al
inc esi
mov dl, byte [ebp - 8]
and dl, 0xff
mov byte [esi], dl
inc esi
cmp dword [ebp - 0xc], 0xffffffff
jne 0x518115
xor ecx, ecx
mov dword [ebp - 0xc], ecx
mov eax, dword [ebp - 0xc]
sar eax, 8
mov byte [esi], al
inc esi
mov dl, byte [ebp - 0xc]
and dl, 0xff
mov byte [esi], dl
inc esi
jmp 0x518248
xor eax, eax
mov al, byte [edi]
cmp eax, 0x45
jge 0x518143
cmp eax, 0x40
je 0x518143
cmp eax, 0x41
jne 0x51823a
xor edx, edx
mov ecx, esi
sub ecx, edi
mov dword [ebp - 0x40], edx
mov dword [ebp - 0x44], ecx
cmp dword [ebp - 0xc], 0xffffffff
jne 0x518174
mov eax, edi
xor edx, edx
xor ecx, ecx
mov dl, byte [eax + 1]
mov cl, byte [eax + 2]
shl edx, 8
add edx, ecx
add eax, edx
cmp byte [eax], 0x38
jne 0x518157
mov edx, esi
sub edx, eax
mov dword [ebp - 0x40], edx
cmp dword [ebp - 8], 0
jle 0x5181af
cmp dword [ebp - 0xc], 0xffffffff
je 0x518188
mov eax, dword [ebp - 0xc]
cmp eax, dword [ebp - 8]
jne 0x5181af
mov ebx, 1
cmp ebx, dword [ebp - 8]
jge 0x518224
mov eax, dword [ebp - 0x44]
push eax
push edi
push esi
call fcn.0050a50c
add esp, 0xc
add esi, dword [ebp - 0x44]
inc ebx
cmp ebx, dword [ebp - 8]
jl 0x518196
jmp 0x518224
cmp dword [ebp - 8], 0
jne 0x5181cf
mov edx, dword [ebp - 0x44]
lea ecx, [edi + 1]
push edx
push edi
push ecx
call fcn.0050a530
mov al, byte [ebp - 4]
add esp, 0xc
add al, 0x43
inc esi
mov byte [edi], al
inc edi
mov ebx, 1
cmp ebx, dword [ebp - 8]
jge 0x5181f0
mov eax, dword [ebp - 0x44]
push eax
push edi
push esi
call fcn.0050a50c
add esp, 0xc
add esi, dword [ebp - 0x44]
inc ebx
cmp ebx, dword [ebp - 8]
jl 0x5181d9
cmp dword [ebp - 8], 0
jle 0x5181fb
mov ebx, dword [ebp - 8]
jmp 0x518200
mov ebx, 1
cmp ebx, dword [ebp - 0xc]
jge 0x518224
mov al, byte [ebp - 4]
add al, 0x43
mov byte [esi], al
inc esi
mov edx, dword [ebp - 0x44]
push edx
push edi
push esi
call fcn.0050a50c
add esp, 0xc
add esi, dword [ebp - 0x44]
inc ebx
cmp ebx, dword [ebp - 0xc]
jl 0x518205
cmp dword [ebp - 0xc], 0xffffffff
jne 0x518248
mov cl, byte [ebp - 4]
add cl, 0x39
mov eax, dword [ebp - 0x40]
neg eax
mov byte [esi + eax], cl
jmp 0x518248
mov edx, dword [ebp + 0x18]
mov dword [edx], str.internal_error:_unexpected_repeat
jmp 0x5186a4
xor edi, edi
jmp 0x51869c
mov eax, dword [ebp + 8]
mov dword [ebp - 0x34], 0xffffffff
inc dword [ebp - 0x20]
mov edx, dword [ebp - 0x20]
cmp byte [edx], 0x3f
jne 0x518496
inc dword [ebp - 0x20]
mov ecx, dword [ebp - 0x20]
xor edx, edx
mov dl, byte [ecx]
add edx, 0xffffffdf
cmp edx, 0x1d
ja case.0x518284.33
mov dl, byte [edx + 0x51828b]
jmp dword [edx*4 + 0x5182a9]
inc dword [ebp - 0x20]
jmp 0x5182d1
inc dword [ebp - 0x20]
mov eax, dword [ebp - 0x20]
cmp byte [eax], 0x29
jne 0x5182ce
jmp 0x51869c
mov ebx, 0x45
inc dword [ebp - 0x20]
jmp 0x5184b8
mov ebx, 0x41
inc dword [ebp - 0x20]
mov edx, dword [ebp - 0x20]
xor ecx, ecx
mov cl, byte [edx]
mov edx, dword [ebp + 0x20]
mov edx, dword [edx + 0xc]
test byte [edx + ecx], 4
je 0x51833e
mov ecx, dword [ebp - 0x20]
xor edx, edx
mov dl, byte [ecx]
sub edx, 0x30
mov dword [ebp - 0x34], edx
jmp 0x51832b
mov edx, dword [ebp - 0x20]
mov ecx, dword [ebp - 0x34]
add ecx, ecx
movzx edx, byte [edx]
lea ecx, [ecx + ecx*4]
add ecx, edx
sub ecx, 0x30
mov dword [ebp - 0x34], ecx
inc dword [ebp - 0x20]
mov ecx, dword [ebp - 0x20]
cmp byte [ecx], 0x29
jne 0x518315
inc dword [ebp - 0x20]
jmp 0x5184b8
dec dword [ebp - 0x20]
jmp 0x5184b8
mov ebx, 0x3b
inc dword [ebp - 0x20]
jmp 0x5184b8
mov ebx, 0x3c
inc dword [ebp - 0x20]
jmp 0x5184b8
inc dword [ebp - 0x20]
mov edx, dword [ebp - 0x20]
mov cl, byte [edx]
sub cl, 0x21
je 0x51837f
sub cl, 0x1c
jne 0x51838c
mov ebx, 0x3d
inc dword [ebp - 0x20]
jmp 0x5184b8
mov ebx, 0x3e
inc dword [ebp - 0x20]
jmp 0x5184b8
mov eax, dword [ebp + 0x18]
mov dword [eax], 0x6152f1
jmp 0x5186a4
mov ebx, 0x40
inc dword [ebp - 0x20]
jmp 0x5184b8
xor eax, eax
lea edx, [ebp - 0x48]
mov dword [ebp - 0x4c], eax
mov dword [ebp - 0x48], eax
mov dword [ebp - 0x50], edx
jmp 0x518433
mov ecx, dword [ebp - 0x20]
inc dword [ebp - 0x20]
xor eax, eax
mov al, byte [ecx]
cmp eax, 0x69
jg 0x5183d9
je 0x5183f2
sub eax, 0x2d
je 0x5183ea
sub eax, 0x28
je 0x518412
sub eax, 3
je 0x51841d
jmp 0x518425
sub eax, 0x6d
je 0x5183fa
sub eax, 6
je 0x518402
sub eax, 5
je 0x51840a
jmp 0x518425
lea edx, [ebp - 0x4c]
mov dword [ebp - 0x50], edx
jmp 0x518433
mov ecx, dword [ebp - 0x50]
or dword [ecx], 1
jmp 0x518433
mov eax, dword [ebp - 0x50]
or dword [eax], 2
jmp 0x518433
mov edx, dword [ebp - 0x50]
or dword [edx], 4
jmp 0x518433
mov ecx, dword [ebp - 0x50]
or dword [ecx], 8
jmp 0x518433
mov eax, dword [ebp - 0x50]
or dword [eax], 0x200
jmp 0x518433
mov edx, dword [ebp - 0x50]
or dword [edx], 0x40
jmp 0x518433
mov ecx, dword [ebp + 0x18]
mov dword [ecx], 0x615312
jmp 0x5186a4
mov eax, dword [ebp - 0x20]
cmp byte [eax], 0x29
je 0x518447
mov edx, dword [ebp - 0x20]
cmp byte [edx], 0x3a
jne 0x5183b7
mov eax, dword [ebp + 8]
or eax, dword [ebp - 0x48]
mov edx, dword [ebp - 0x4c]
not edx
and eax, edx
mov ecx, dword [ebp - 0x20]
cmp byte [ecx], 0x29
jne 0x51848c
test byte [ebp + 9], 0x20
je 0x518482
mov edx, dword [ebp + 8]
mov ecx, eax
and ecx, 7
and edx, 7
cmp edx, ecx
je 0x518482
mov byte [esi], 0xc
inc esi
mov ecx, dword [ebp + 0x1c]
mov edx, eax
and edx, 7
mov dword [ecx], edx
mov byte [esi], dl
inc esi
mov dword [ebp + 8], eax
xor edi, edi
jmp 0x51869c
mov ebx, 0x45
inc dword [ebp - 0x20]
jmp 0x5184b8
mov edx, dword [ebp + 0xc]
inc dword [edx]
mov ecx, dword [edx]
cmp ecx, 0x63
jle 0x5184b0
mov eax, dword [ebp + 0x18]
mov dword [eax], str.too_many_capturing_parenthesized_sub_patterns
jmp 0x5186a4
mov edx, dword [ebp + 0xc]
mov ebx, dword [edx]
add ebx, 0x45
cmp ebx, 0x40
jl 0x5184c1
mov edi, esi
jmp 0x5184c3
xor edi, edi
mov byte [esi], bl
mov dword [ebp - 0x1c], esi
mov edx, dword [ebp + 0x20]
cmp ebx, 0x3d
push edx
mov ecx, dword [ebp - 0x34]
push ecx
je 0x5184de
cmp ebx, 0x3e
je 0x5184de
xor edx, edx
jmp 0x5184e3
mov edx, 1
push edx
lea edx, [ebp - 0x20]
mov ecx, dword [ebp + 0x18]
push ecx
lea ecx, [ebp - 0x1c]
push edx
push ecx
mov edx, dword [ebp + 0xc]
push edx
mov edx, eax
mov ecx, dword [ebp + 8]
and edx, 7
and ecx, 7
cmp ecx, edx
je 0x518508
and eax, 7
jmp 0x51850b
or eax, 0xffffffff
push eax
mov ecx, dword [ebp + 8]
or ecx, 0x2000
push ecx
call fcn.005186b8
add esp, 0x24
test eax, eax
je 0x5186a4
cmp ebx, 0x41
jne 0x518559
xor edx, edx
mov eax, esi
xor ecx, ecx
xor ebx, ebx
mov cl, byte [eax + 1]
mov bl, byte [eax + 2]
shl ecx, 8
inc edx
or ecx, ebx
add eax, ecx
cmp byte [eax], 0x38
jne 0x51852f
cmp edx, 2
jle 0x518559
mov eax, dword [ebp + 0x18]
mov dword [eax], str.conditional_group_contains_more_than_two_branches
jmp 0x5186a4
mov esi, dword [ebp - 0x1c]
mov eax, dword [ebp - 0x20]
cmp byte [eax], 0x29
je 0x51869c
mov edx, dword [ebp + 0x18]
mov dword [edx], str.missing__
jmp 0x5186a4
mov ecx, dword [ebp - 0x20]
mov dword [ebp - 0x24], ecx
mov eax, dword [ebp + 0x20]
push eax
push 0
mov edx, dword [ebp + 8]
push edx
mov ecx, dword [ebp + 0xc]
mov eax, dword [ecx]
push eax
mov edx, dword [ebp + 0x18]
push edx
lea ecx, [ebp - 0x20]
push ecx
call fcn.00517578
add esp, 0x18
mov ebx, eax
test ebx, ebx
jge 0x5185e0
mov eax, ebx
neg eax
cmp eax, 0xc
jl 0x5185be
mov edi, esi
mov byte [esi], 0x36
inc esi
neg bl
add bl, 0xf4
mov byte [esi], bl
inc esi
jmp 0x51869c
mov eax, ebx
neg eax
cmp eax, 3
jle 0x5185d4
mov edx, ebx
neg edx
cmp edx, 0xa
jge 0x5185d4
mov edi, esi
jmp 0x5185d6
xor edi, edi
neg bl
mov byte [esi], bl
inc esi
jmp 0x51869c
mov eax, dword [ebp - 0x24]
mov ebx, 0x5c
mov dword [ebp - 0x20], eax
mov edi, esi
mov byte [esi], 0x10
add esi, 2
xor eax, eax
mov dword [ebp - 0x10], eax
test byte [ebp + 8], 8
je 0x518628
mov edx, dword [ebp + 0x20]
mov ecx, dword [edx + 0xc]
test byte [ecx + ebx], 1
jne 0x518667
cmp ebx, 0x23
jne 0x518628
inc dword [ebp - 0x20]
mov eax, dword [ebp - 0x20]
xor ebx, ebx
mov bl, byte [eax]
test ebx, ebx
je 0x518622
cmp ebx, 0xa
jne 0x51860f
test ebx, ebx
je 0x51868a
jmp 0x518667
cmp ebx, 0x5c
jne 0x518661
mov eax, dword [ebp - 0x20]
mov dword [ebp - 0x24], eax
mov edx, dword [ebp + 0x20]
push edx
push 0
mov ecx, dword [ebp + 8]
push ecx
mov eax, dword [ebp + 0xc]
mov edx, dword [eax]
push edx
mov ecx, dword [ebp + 0x18]
push ecx
lea eax, [ebp - 0x20]
push eax
call fcn.00517578
add esp, 0x18
mov ebx, eax
test ebx, ebx
jge 0x518661
mov eax, dword [ebp - 0x24]
mov dword [ebp - 0x20], eax
jmp 0x51868a
mov byte [esi], bl
inc esi
inc dword [ebp - 0x10]
cmp dword [ebp - 0x10], 0xff
jge 0x51868a
inc dword [ebp - 0x20]
xor ebx, ebx
mov edx, dword [ebp - 0x20]
mov eax, dword [ebp + 0x20]
mov bl, byte [edx]
mov edx, dword [eax + 0xc]
test byte [edx + ebx], 0x80
je 0x5185f8
mov cl, byte [ebp - 0x10]
mov byte [edi + 1], cl
cmp dword [ebp - 0x10], 0xff
jge 0x51869c
dec dword [ebp - 0x20]
inc dword [ebp - 0x20]
jmp 0x517a3e
mov eax, dword [ebp + 0x14]
mov edx, dword [ebp - 0x20]
mov dword [eax], edx
xor eax, eax
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret