Function at 0x529081
Capabilities:
Parse credit card information

Disassembly:
push ebp
mov ebp, esp
add esp, 0xffffff48
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 0x52910f
mov eax, dword [ebp + 0x28]
mov edx, dword [eax + 0xc]
test byte [edx + ebx], 1
jne 0x52a0c2
cmp ebx, 0x23
jne 0x52910f
inc dword [ebp - 0x2c]
mov ecx, dword [ebp - 0x2c]
xor ebx, ebx
mov bl, byte [ecx]
test ebx, ebx
je 0x52a0c2
cmp ebx, 0xa
jne 0x5290f3
jmp 0x52a0c2
mov eax, ebx
cmp eax, 0x2e
jg 0x529150
je 0x5291b5
cmp eax, 0x29
jg 0x52913b
je 0x529182
sub eax, 1
jb 0x529182
sub eax, 0x23
je 0x5291a7
sub eax, 4
je 0x529b4e
jmp 0x529ff9
sub eax, 0x2a
je 0x529686
dec eax
je 0x529694
jmp 0x529ff9
cmp eax, 0x5e
jg 0x529171
je 0x529199
sub eax, 0x3f
je 0x5296a4
sub eax, 0x1c
je 0x5291c1
dec eax
je 0x529f6c
jmp 0x529ff9
sub eax, 0x7b
je 0x529648
dec eax
je 0x529182
jmp 0x529ff9
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 0x52a0d4
xor edx, edx
mov dword [ebp - 0x34], edx
mov byte [esi], 0xd
inc esi
jmp 0x52a0c2
xor ecx, ecx
mov dword [ebp - 0x34], ecx
mov byte [esi], 0xe
inc esi
jmp 0x52a0c2
mov dword [ebp - 0x34], esi
mov byte [esi], 0xf
inc esi
jmp 0x52a0c2
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 0x5291ea
mov dword [ebp - 0x38], 1
inc dword [ebp - 0x2c]
mov eax, dword [ebp - 0x2c]
xor ebx, ebx
mov bl, byte [eax]
jmp 0x5291ef
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 - 0xb8]
push ecx
call fcn.0054e10c
add esp, 0xc
test ebx, ebx
jne 0x529220
mov eax, dword [ebp + 0x18]
mov dword [eax], 0x56fea2
jmp 0x52a0ca
cmp ebx, 0x5b
jne 0x529353
mov edx, dword [ebp - 0x2c]
cmp byte [edx + 1], 0x3a
je 0x529248
mov ecx, dword [ebp - 0x2c]
cmp byte [ecx + 1], 0x2e
je 0x529248
mov eax, dword [ebp - 0x2c]
cmp byte [eax + 1], 0x3d
jne 0x529353
push dword [ebp + 0x28]
lea edx, [ebp - 0x30]
push edx
push dword [ebp - 0x2c]
call fcn.00528fe7
test eax, eax
je 0x529353
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 0x529284
mov eax, dword [ebp + 0x18]
mov dword [eax], str.POSIX_collating_elements_are_not_supported
jmp 0x52a0ca
add dword [ebp - 0x2c], 2
mov edx, dword [ebp - 0x2c]
cmp byte [edx], 0x5e
jne 0x52929a
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.00529030
mov dword [ebp - 0x54], eax
cmp dword [ebp - 0x54], 0
jge 0x5292c0
mov eax, dword [ebp + 0x18]
mov dword [eax], str.unknown_POSIX_class_name
jmp 0x52a0ca
test byte [ebp + 8], 1
je 0x5292d1
cmp dword [ebp - 0x54], 2
jg 0x5292d1
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 + 0x56f8d8]
mov dword [ebp - 0x60], ecx
cmp dword [ebp - 0x60], 0
jl 0x529340
cmp dword [ebp - 0x50], 0
je 0x52931b
xor ebx, ebx
lea edx, [ebp - 0xb8]
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 0x52930b
jmp 0x529337
xor ebx, ebx
lea eax, [ebp - 0xb8]
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 0x52932b
inc dword [ebp - 0x58]
cmp dword [ebp - 0x58], 3
jl 0x5292df
mov eax, dword [ebp - 0x30]
inc eax
mov dword [ebp - 0x2c], eax
mov dword [ebp - 0x3c], 0xa
jmp 0x5295d0
cmp ebx, 0x5c
jne 0x52949c
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.00528b72
mov ebx, eax
mov eax, ebx
neg eax
cmp eax, 3
jne 0x52938a
mov ebx, 8
jmp 0x52949c
test ebx, ebx
jge 0x52949c
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.0x5293b0
jmp dword [ebx*4 + 0x5293b7]
xor ebx, ebx
lea edx, [ebp - 0xb8]
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 0x5293dd
jmp 0x5295d0
xor ebx, ebx
lea eax, [ebp - 0xb8]
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 0x5293fc
jmp 0x5295d0
xor ebx, ebx
lea edx, [ebp - 0xb8]
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 0x52941f
jmp 0x5295d0
xor ebx, ebx
lea eax, [ebp - 0xb8]
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 0x529441
jmp 0x5295d0
xor ebx, ebx
lea edx, [ebp - 0xb8]
mov eax, dword [ebp - 0x64]
mov cl, byte [eax]
or byte [edx], cl
inc ebx
inc edx
inc eax
cmp ebx, 0x20
jl 0x52945f
jmp 0x5295d0
xor ebx, ebx
lea eax, [ebp - 0xb8]
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 0x52947b
jmp 0x5295d0
mov eax, dword [ebp + 0x18]
mov dword [eax], str.invalid_escape_sequence_in_character_class
jmp 0x52a0ca
mov eax, dword [ebp - 0x2c]
cmp byte [eax + 1], 0x2d
jne 0x52957f
mov edx, dword [ebp - 0x2c]
cmp byte [edx + 2], 0x5d
je 0x52957f
add dword [ebp - 0x2c], 2
mov ecx, dword [ebp - 0x2c]
xor eax, eax
mov al, byte [ecx]
test eax, eax
jne 0x5294d3
mov edx, dword [ebp + 0x18]
mov dword [edx], str.missing_terminating___for_character_class
jmp 0x52a0ca
cmp eax, 0x5c
jne 0x529512
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.00528b72
test eax, eax
jge 0x529512
cmp eax, 0xfffffffd
jne 0x529507
mov eax, 8
jmp 0x529512
mov edx, dword [ebp - 0x68]
add edx, 0xfffffffe
mov dword [ebp - 0x2c], edx
jmp 0x52957f
cmp ebx, eax
jle 0x529524
mov ecx, dword [ebp + 0x18]
mov dword [ecx], str.range_out_of_order_in_character_class
jmp 0x52a0ca
cmp eax, ebx
jl 0x5295d0
mov ecx, ebx
and ecx, 7
mov dl, 1
shl dl, cl
mov ecx, ebx
test ecx, ecx
jns 0x52953e
add ecx, 7
sar ecx, 3
or byte [ebp + ecx - 0xb8], dl
test byte [ebp + 8], 1
je 0x529572
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 0x529568
add edi, 7
sar edi, 3
or byte [ebp + edi - 0xb8], dl
inc dword [ebp - 0x3c]
mov dword [ebp - 0x40], ebx
inc ebx
cmp eax, ebx
jge 0x52952c
jmp 0x5295d0
mov ecx, ebx
and ecx, 7
mov al, 1
shl al, cl
mov edx, ebx
test edx, edx
jns 0x529591
add edx, 7
sar edx, 3
or byte [ebp + edx - 0xb8], al
test byte [ebp + 8], 1
je 0x5295ca
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 0x5295c0
add edx, 7
sar edx, 3
or byte [ebp + edx - 0xb8], 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 0x52920e
cmp dword [ebp - 0x3c], 1
jne 0x52960e
cmp dword [ebp - 0x40], 0
jl 0x52960e
cmp dword [ebp - 0x38], 0
je 0x5295fb
mov byte [esi - 1], 0x11
jmp 0x529603
mov byte [esi - 1], 0x10
mov byte [esi], 1
inc esi
mov al, byte [ebp - 0x40]
mov byte [esi], al
inc esi
jmp 0x52a0c2
cmp dword [ebp - 0x38], 0
je 0x52962e
xor ebx, ebx
mov edx, esi
lea eax, [ebp - 0xb8]
mov cl, byte [eax]
not cl
mov byte [edx], cl
inc ebx
inc edx
inc eax
cmp ebx, 0x20
jl 0x52961e
jmp 0x529640
push 0x20
lea eax, [ebp - 0xb8]
push eax
push esi
call fcn.0054e09c
add esp, 0xc
add esi, 0x20
jmp 0x52a0c2
push dword [ebp + 0x28]
mov edx, dword [ebp - 0x2c]
inc edx
push edx
call fcn.00528d09
test eax, eax
je 0x529ff9
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.00528d8d
mov dword [ebp - 0x2c], eax
mov ecx, dword [ebp + 0x18]
cmp dword [ecx], 0
jne 0x52a0ca
jmp 0x5296b0
xor eax, eax
mov dword [ebp - 0xc], eax
mov dword [ebp - 0x10], 0xffffffff
jmp 0x5296b0
mov dword [ebp - 0xc], 1
mov dword [ebp - 0x10], 0xffffffff
jmp 0x5296b0
xor edx, edx
mov dword [ebp - 0xc], edx
mov dword [ebp - 0x10], 1
cmp dword [ebp - 0x34], 0
jne 0x5296c4
mov ecx, dword [ebp + 0x18]
mov dword [ecx], str.nothing_to_repeat
jmp 0x52a0ca
mov eax, dword [ebp - 0x2c]
cmp byte [eax + 1], 0x3f
jne 0x5296d8
mov edx, dword [ebp - 0x18]
mov dword [ebp - 4], edx
inc dword [ebp - 0x2c]
jmp 0x5296de
mov ecx, dword [ebp - 0x14]
mov dword [ebp - 4], ecx
mov eax, dword [ebp - 0x34]
cmp byte [eax], 0x10
jne 0x52973a
mov edx, dword [ebp - 0x34]
xor ecx, ecx
mov cl, byte [edx + 1]
mov dword [ebp - 0x6c], ecx
cmp dword [ebp - 0xc], 0
jne 0x5296ff
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 0x52971b
mov edx, dword [ebp - 0x34]
xor ebx, ebx
mov bl, byte [edx + 2]
mov esi, dword [ebp - 0x34]
jmp 0x52972e
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 0x529783
mov ecx, dword [ebp - 0x34]
xor eax, eax
mov al, byte [ecx]
cmp eax, 0x11
jne 0x52975a
mov dword [ebp - 8], 9
mov edx, dword [ebp - 0x34]
xor ebx, ebx
mov bl, byte [edx + 1]
mov esi, dword [ebp - 0x34]
jmp 0x529783
mov eax, dword [ebp - 0x34]
xor edx, edx
mov dl, byte [eax]
cmp edx, 0xa
jl 0x529772
mov ecx, dword [ebp - 0x34]
cmp byte [ecx], 0xf
jne 0x529885
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 0x529b44
mov eax, dword [ebp - 8]
add dword [ebp - 4], eax
cmp dword [ebp - 0xc], 0
jne 0x5297e0
cmp dword [ebp - 0x10], 0xffffffff
jne 0x5297ad
mov dl, byte [ebp - 4]
add dl, 0x12
mov byte [esi], dl
inc esi
jmp 0x52987d
cmp dword [ebp - 0x10], 1
jne 0x5297c1
mov cl, byte [ebp - 4]
add cl, 0x16
mov byte [esi], cl
inc esi
jmp 0x52987d
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 0x52987d
cmp dword [ebp - 0xc], 1
jne 0x5297f9
cmp dword [ebp - 0x10], 0xffffffff
jne 0x5297f9
mov al, byte [ebp - 4]
add al, 0x14
mov byte [esi], al
inc esi
jmp 0x52987d
cmp dword [ebp - 0xc], 1
je 0x52981b
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 0x52983e
mov edx, dword [ebp - 0x34]
cmp byte [edx], 0x10
jne 0x529835
cmp esi, dword [ebp - 0x34]
jne 0x52982d
add esi, 2
jmp 0x52983e
mov ecx, dword [ebp - 0x34]
inc byte [ecx + 1]
jmp 0x52983e
mov eax, dword [ebp - 0x34]
cmp byte [eax], 0x11
jne 0x52983e
inc esi
cmp dword [ebp - 0x10], 0
jge 0x529852
mov byte [esi], bl
inc esi
mov dl, byte [ebp - 4]
add dl, 0x12
mov byte [esi], dl
inc esi
jmp 0x52987d
mov ecx, dword [ebp - 0x10]
cmp ecx, dword [ebp - 0xc]
je 0x52987d
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 0x529b44
mov edx, dword [ebp - 0x34]
cmp byte [edx], 0x35
je 0x529899
mov ecx, dword [ebp - 0x34]
cmp byte [ecx], 0x36
jne 0x529930
cmp dword [ebp - 0x10], 0
jne 0x5298a7
mov esi, dword [ebp - 0x34]
jmp 0x529b44
cmp dword [ebp - 0xc], 0
jne 0x5298c0
cmp dword [ebp - 0x10], 0xffffffff
jne 0x5298c0
mov al, byte [ebp - 4]
add al, 0x2d
mov byte [esi], al
inc esi
jmp 0x529b44
cmp dword [ebp - 0xc], 1
jne 0x5298da
cmp dword [ebp - 0x10], 0xffffffff
jne 0x5298da
mov dl, byte [ebp - 4]
add dl, 0x2f
mov byte [esi], dl
inc esi
jmp 0x529b44
cmp dword [ebp - 0xc], 0
jne 0x5298f4
cmp dword [ebp - 0x10], 1
jne 0x5298f4
mov cl, byte [ebp - 4]
add cl, 0x31
mov byte [esi], cl
inc esi
jmp 0x529b44
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 0x529919
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 0x529b44
mov eax, dword [ebp - 0x34]
xor edx, edx
mov dl, byte [eax]
cmp edx, 0x47
jge 0x529958
mov ecx, dword [ebp - 0x34]
xor eax, eax
mov al, byte [ecx]
cmp eax, 0x41
je 0x529958
mov edx, dword [ebp - 0x34]
xor ecx, ecx
mov cl, byte [edx]
cmp ecx, 0x42
jne 0x529b36
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 0x52999b
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 0x529973
mov eax, esi
sub eax, dword [ebp - 0x78]
mov dword [ebp - 0x70], eax
cmp dword [ebp - 0xc], 0
jne 0x529a56
cmp dword [ebp - 0x24], 0
jle 0x5299bb
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 0x5299c9
mov esi, dword [ebp - 0x34]
jmp 0x529b44
cmp dword [ebp - 0x10], 1
jg 0x5299f3
push dword [ebp - 0x74]
push dword [ebp - 0x34]
mov eax, dword [ebp - 0x34]
inc eax
push eax
call fcn.0054e0c0
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 0x529a51
push dword [ebp - 0x74]
push dword [ebp - 0x34]
mov eax, dword [ebp - 0x34]
add eax, 4
push eax
call fcn.0054e0c0
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], 0x47
inc dword [ebp - 0x34]
test ebx, ebx
jne 0x529a2a
xor edx, edx
jmp 0x529a2f
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 0x529a84
mov edi, 1
cmp edi, dword [ebp - 0xc]
jge 0x529a78
push dword [ebp - 0x74]
push dword [ebp - 0x34]
push esi
call fcn.0054e09c
add esp, 0xc
add esi, dword [ebp - 0x74]
inc edi
cmp edi, dword [ebp - 0xc]
jl 0x529a60
cmp dword [ebp - 0x10], 0
jle 0x529a84
mov eax, dword [ebp - 0xc]
sub dword [ebp - 0x10], eax
cmp dword [ebp - 0x10], 0
jl 0x529b27
mov edi, dword [ebp - 0x10]
dec edi
test edi, edi
jl 0x529ae0
mov al, byte [ebp - 4]
add al, 0x44
mov byte [esi], al
inc esi
test edi, edi
je 0x529ac9
mov byte [esi], 0x47
inc esi
test ebx, ebx
jne 0x529aae
xor edx, edx
jmp 0x529ab2
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.0054e09c
add esp, 0xc
add esi, dword [ebp - 0x74]
dec edi
test edi, edi
jge 0x529a96
test ebx, ebx
je 0x529b44
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 0x529b03
xor edi, edi
jmp 0x529b07
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 0x529ae4
jmp 0x529b44
mov al, byte [ebp - 4]
add al, 0x3a
mov edx, dword [ebp - 0x70]
neg edx
mov byte [esi + edx], al
jmp 0x529b44
mov eax, dword [ebp + 0x18]
mov dword [eax], str.internal_error:_unexpected_repeat
jmp 0x52a0ca
xor ecx, ecx
mov dword [ebp - 0x34], ecx
jmp 0x52a0c2
mov eax, dword [ebp + 8]
mov dword [ebp - 0x44], eax
xor edx, edx
mov dword [ebp - 0x48], edx
inc dword [ebp - 0x2c]
mov ecx, dword [ebp - 0x2c]
cmp byte [ecx], 0x3f
jne 0x529e0c
inc dword [ebp - 0x2c]
mov eax, dword [ebp - 0x2c]
xor edx, edx
mov dl, byte [eax]
cmp edx, 0x3c
jg 0x529b9a
je 0x529c92
sub edx, 0x21
je 0x529c85
sub edx, 2
je 0x529bb8
sub edx, 5
je 0x529bda
sub edx, 0x12
je 0x529bcd
jmp 0x529ce5
sub edx, 0x3d
je 0x529c78
dec edx
je 0x529ccc
sub edx, 0x14
je 0x529cd9
jmp 0x529ce5
inc dword [ebp - 0x2c]
jmp 0x529bc0
inc dword [ebp - 0x2c]
mov ecx, dword [ebp - 0x2c]
cmp byte [ecx], 0x29
jne 0x529bbd
jmp 0x52a0c2
mov ebx, 0x47
inc dword [ebp - 0x2c]
jmp 0x529e4a
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 0x529c70
mov edx, dword [ebp - 0x2c]
xor ecx, ecx
mov cl, byte [edx]
add ecx, 0xffffffd0
mov dword [ebp - 0x90], ecx
jmp 0x529c24
mov eax, dword [ebp - 0x90]
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 - 0x90], eax
inc dword [ebp - 0x2c]
mov eax, dword [ebp - 0x2c]
cmp byte [eax], 0x29
jne 0x529c07
cmp dword [ebp - 0x90], 0
jne 0x529c46
mov edx, dword [ebp + 0x18]
mov dword [edx], str.invalid_condition____0_
jmp 0x52a0ca
inc dword [ebp - 0x2c]
mov byte [esi + 3], 0x43
mov ecx, dword [ebp - 0x90]
sar ecx, 8
mov byte [esi + 4], cl
mov al, byte [ebp - 0x90]
and al, 0xff
mov byte [esi + 5], al
mov dword [ebp - 0x48], 3
jmp 0x529e4a
dec dword [ebp - 0x2c]
jmp 0x529e4a
mov ebx, 0x3c
inc dword [ebp - 0x2c]
jmp 0x529e4a
mov ebx, 0x3d
inc dword [ebp - 0x2c]
jmp 0x529e4a
inc dword [ebp - 0x2c]
mov eax, dword [ebp - 0x2c]
mov dl, byte [eax]
sub dl, 0x21
je 0x529cb1
sub dl, 0x1c
jne 0x529cbe
mov ebx, 0x3e
inc dword [ebp - 0x2c]
jmp 0x529e4a
mov ebx, 0x3f
inc dword [ebp - 0x2c]
jmp 0x529e4a
mov eax, dword [ebp + 0x18]
mov dword [eax], 0x56ffd7
jmp 0x52a0ca
mov ebx, 0x41
inc dword [ebp - 0x2c]
jmp 0x529e4a
mov byte [esi], 0x37
inc esi
inc dword [ebp - 0x2c]
jmp 0x52a0c2
xor eax, eax
mov dword [ebp - 0x88], eax
mov dword [ebp - 0x84], eax
lea edx, [ebp - 0x84]
mov dword [ebp - 0x8c], edx
jmp 0x529d98
mov ecx, dword [ebp - 0x2c]
inc dword [ebp - 0x2c]
xor eax, eax
mov al, byte [ecx]
cmp eax, 0x69
jg 0x529d26
je 0x529d45
sub eax, 0x2d
je 0x529d37
sub eax, 0x28
je 0x529d71
sub eax, 3
je 0x529d7f
jmp 0x529d8a
sub eax, 0x6d
je 0x529d50
sub eax, 6
je 0x529d5b
sub eax, 5
je 0x529d66
jmp 0x529d8a
lea edx, [ebp - 0x88]
mov dword [ebp - 0x8c], edx
jmp 0x529d98
mov ecx, dword [ebp - 0x8c]
or dword [ecx], 1
jmp 0x529d98
mov eax, dword [ebp - 0x8c]
or dword [eax], 2
jmp 0x529d98
mov edx, dword [ebp - 0x8c]
or dword [edx], 4
jmp 0x529d98
mov ecx, dword [ebp - 0x8c]
or dword [ecx], 8
jmp 0x529d98
mov eax, dword [ebp - 0x8c]
or dword [eax], 0x200
jmp 0x529d98
mov edx, dword [ebp - 0x8c]
or dword [edx], 0x40
jmp 0x529d98
mov ecx, dword [ebp + 0x18]
mov dword [ecx], 0x56fff8
jmp 0x52a0ca
mov eax, dword [ebp - 0x2c]
cmp byte [eax], 0x29
je 0x529dac
mov edx, dword [ebp - 0x2c]
cmp byte [edx], 0x3a
jne 0x529d04
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 0x529e02
test byte [ebp + 0xb], 8
je 0x529df2
mov ecx, dword [ebp + 8]
and ecx, 7
mov eax, dword [ebp - 0x44]
and eax, 7
cmp ecx, eax
je 0x529df2
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 0x52a0c2
mov ebx, 0x47
inc dword [ebp - 0x2c]
jmp 0x529e4a
mov eax, dword [ebp + 0xc]
inc dword [eax]
mov edx, dword [eax]
cmp edx, 0x96
jle 0x529e42
mov ebx, 0xde
mov byte [esi + 3], 0x46
mov eax, dword [ebp + 0xc]
mov edx, dword [eax]
sar edx, 8
mov byte [esi + 4], dl
mov ecx, dword [ebp + 0xc]
mov al, byte [ecx]
and al, 0xff
mov byte [esi + 5], al
mov dword [ebp - 0x48], 3
jmp 0x529e4a
mov edx, dword [ebp + 0xc]
mov ebx, dword [edx]
add ebx, 0x47
cmp ebx, 0x41
jl 0x529e53
mov eax, esi
jmp 0x529e55
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 0x529e79
cmp ebx, 0x3f
je 0x529e79
xor eax, eax
jmp 0x529e7e
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 0x529ea5
mov ecx, dword [ebp - 0x44]
and ecx, 7
jmp 0x529ea8
or ecx, 0xffffffff
push ecx
mov eax, dword [ebp + 8]
or eax, 0x8000000
push eax
call fcn.0052a0dd
test eax, eax
je 0x52a0ca
cmp ebx, 0x42
jne 0x529f12
mov dword [ebp - 0x94], esi
xor edx, edx
mov dword [ebp - 0x20], edx
inc dword [ebp - 0x20]
mov eax, dword [ebp - 0x94]
xor edx, edx
mov dl, byte [eax + 1]
shl edx, 8
mov ecx, dword [ebp - 0x94]
xor eax, eax
mov al, byte [ecx + 2]
or edx, eax
add dword [ebp - 0x94], edx
mov edx, dword [ebp - 0x94]
cmp byte [edx], 0x39
jne 0x529ecf
cmp dword [ebp - 0x20], 2
jle 0x529f12
mov ecx, dword [ebp + 0x18]
mov dword [ecx], str.conditional_group_contains_more_than_two_branches
jmp 0x52a0ca
cmp dword [ebp - 0x4c], 0
jle 0x529f4f
cmp ebx, 0x47
jge 0x529f32
cmp ebx, 0x41
je 0x529f32
cmp ebx, 0x3c
je 0x529f32
cmp ebx, 0x42
jne 0x529f4f
cmp dword [ebp - 0x20], 2
jne 0x529f4f
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 0x529f4f
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 0x52a0c2
mov edx, dword [ebp + 0x18]
mov dword [edx], str.missing__
jmp 0x52a0ca
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.00528b72
mov ebx, eax
test ebx, ebx
jge 0x529fee
mov eax, ebx
neg eax
cmp eax, 0xc
jl 0x529fc9
neg ebx
add ebx, 0xfffffff4
mov dword [ebp - 0x98], ebx
mov dword [ebp - 0x34], esi
mov byte [esi], 0x36
inc esi
mov edx, dword [ebp - 0x98]
sar edx, 8
mov byte [esi], dl
inc esi
mov cl, byte [ebp - 0x98]
and cl, 0xff
mov byte [esi], cl
inc esi
jmp 0x52a0c2
mov eax, ebx
neg eax
cmp eax, 3
jle 0x529fdf
mov edx, ebx
neg edx
cmp edx, 0xa
jge 0x529fdf
mov ecx, esi
jmp 0x529fe1
xor ecx, ecx
mov dword [ebp - 0x34], ecx
neg bl
mov byte [esi], bl
inc esi
jmp 0x52a0c2
mov eax, dword [ebp - 0x30]
mov dword [ebp - 0x2c], eax
mov ebx, 0x5c
mov dword [ebp - 0x34], esi
mov byte [esi], 0x10
add esi, 2
xor edi, edi
test byte [ebp + 8], 8
je 0x52a034
mov eax, dword [ebp + 0x28]
mov edx, dword [eax + 0xc]
test byte [edx + ebx], 1
jne 0x52a06a
cmp ebx, 0x23
jne 0x52a034
inc dword [ebp - 0x2c]
mov ecx, dword [ebp - 0x2c]
xor ebx, ebx
mov bl, byte [ecx]
test ebx, ebx
je 0x52a02e
cmp ebx, 0xa
jne 0x52a01b
test ebx, ebx
je 0x52a08c
jmp 0x52a06a
cmp ebx, 0x5c
jne 0x52a066
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.00528b72
mov ebx, eax
test ebx, ebx
jge 0x52a066
mov eax, dword [ebp - 0x30]
mov dword [ebp - 0x2c], eax
jmp 0x52a08c
mov byte [esi], bl
inc esi
inc edi
cmp edi, 0xff
jge 0x52a08c
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 0x52a004
cmp edi, 1
jle 0x52a098
xor ecx, ecx
mov cl, byte [esi - 2]
jmp 0x52a09d
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 0x52a0c2
dec dword [ebp - 0x2c]
inc dword [ebp - 0x2c]
jmp 0x5290d1
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