Function at 0x5501b0
Capabilities:
Encrypt data using rc4 prga

Disassembly:
sub esp, 0x90
mov ecx, dword [esp + 0x94]
mov edx, dword [ecx]
mov ecx, dword [esp + 0x9c]
xor eax, eax
push ebx
mov ebx, dword [ecx]
mov ecx, dword [esp + 0xa4]
mov dword [esp + 0x30], eax
mov dword [esp + 0x20], eax
mov dword [esp + 0x38], eax
mov dword [esp + 0x48], eax
mov dword [esp + 0x7c], eax
mov dword [esp + 0xc], eax
push ebp
mov ebp, dword [ecx]
push esi
mov eax, edx
shr eax, 9
push edi
and eax, 1
mov edi, edx
mov esi, 0xfffffffe
mov dword [esp + 0x98], eax
xor eax, 1
and edi, 1
shl edi, 8
mov dword [esp + 0x48], edx
mov dword [esp + 0x14], ebx
mov dword [esp + 0x94], eax
mov dword [esp + 0x40], esi
mov dword [esp + 0x4c], esi
mov dword [esp + 0x38], esi
mov dword [esp + 0x30], esi
mov dword [esp + 0x5c], edi
mov ecx, dword [esp + 0x54]
test ecx, ecx
mov dword [esp + 0x10], ebp
movzx eax, byte [ebp]
mov dword [esp + 0x24], eax
je 0x55024d
test eax, eax
jne case.0x5502b4.1
test dl, 8
je 0x5502a1
mov edx, dword [esp + 0xc4]
mov ecx, dword [edx + 0xc]
test byte [eax + ecx], 1
jne 0x550ad0
mov eax, dword [esp + 0x24]
cmp eax, 0x23
jne 0x550295
nop
inc ebp
mov dword [esp + 0x10], ebp
movzx eax, byte [ebp]
test eax, eax
mov dword [esp + 0x24], eax
je 0x550295
cmp eax, 0xa
jne 0x550270
mov edx, dword [esp + 0x48]
mov edi, dword [esp + 0x5c]
mov esi, dword [esp + 0x30]
inc ebp
jmp 0x550231
mov edx, dword [esp + 0x48]
mov esi, dword [esp + 0x30]
mov edi, dword [esp + 0x5c]
or ecx, 0xffffffff
cmp eax, 0x7c
ja case.0x5502b4.1
movzx eax, byte [eax + 0x551d44]
jmp dword [eax*4 + 0x551d14]
test dl, 2
je 0x5502c9
cmp esi, 0xfffffffe
jne 0x5502c9
mov dword [esp + 0x30], ecx
mov dword [esp + 0x18], 0
mov byte [ebx], 0x10
jmp 0x550ac7
mov dword [esp + 0x18], 0
mov byte [ebx], 0x11
jmp 0x550ac7
cmp esi, 0xfffffffe
jne 0x5502f4
mov esi, ecx
mov dword [esp + 0x30], esi
mov ecx, dword [esp + 0x38]
mov dword [esp + 0x4c], esi
mov dword [esp + 0x40], ecx
mov dword [esp + 0x18], ebx
mov byte [ebx], 0xb
jmp 0x550ac7
mov al, byte [ebp + 1]
cmp al, 0x3a
mov dword [esp + 0x18], ebx
je 0x55031f
cmp al, 0x2e
je 0x55031f
cmp al, 0x3d
jne 0x550342
mov edx, dword [esp + 0xc4]
push edx
lea eax, [esp + 0x88]
push eax
mov eax, ebp
call fcn.00550120
test eax, eax
mov ebp, dword [esp + 0x10]
jne 0x551bfa
inc ebp
mov dword [esp + 0x10], ebp
movzx esi, byte [ebp]
cmp esi, 0x5e
jne 0x550363
inc ebp
mov dword [esp + 0x10], ebp
movzx esi, byte [ebp]
mov dword [esp + 0x20], 1
jmp 0x55036b
mov dword [esp + 0x20], 0
mov ecx, 8
xor eax, eax
lea edi, [esp + 0x60]
mov dword [esp + 0x28], 0
mov dword [esp + 0x24], 0xffffffff
rep stosd dword es:[edi], eax
mov eax, dword [esp + 0x54]
test eax, eax
je 0x5503b1
cmp esi, 0x5c
jne 0x5509dd
cmp byte [ebp + 1], 0x45
jne 0x5509dd
mov dword [esp + 0x54], 0
inc ebp
jmp 0x550a32
cmp esi, 0x5b
jne 0x55056b
mov al, byte [ebp + 1]
cmp al, 0x3a
je 0x5503cd
cmp al, 0x2e
je 0x5503cd
cmp al, 0x3d
jne 0x5508e4
mov edi, dword [esp + 0xc4]
push edi
lea ecx, [esp + 0x88]
push ecx
mov eax, ebp
call fcn.00550120
test eax, eax
je 0x5508e0
mov ebp, dword [esp + 0x10]
cmp byte [ebp + 1], 0x3a
mov esi, dword [edi + 8]
mov dword [esp + 0x1c], 0
jne 0x551c15
add ebp, 2
mov dword [esp + 0x10], ebp
cmp byte [ebp], 0x5e
jne 0x55041f
inc ebp
mov dword [esp + 0x1c], 1
mov dword [esp + 0x10], ebp
mov edi, dword [esp + 0x84]
sub edi, ebp
mov ebx, ebp
call fcn.00550170
test eax, eax
jl 0x551c24
test byte [esp + 0x48], 1
je 0x550445
cmp eax, 2
jg 0x550445
xor eax, eax
lea eax, [eax + eax*2]
xor ebx, ebx
lea ebp, [eax*4 + 0x57e558]
mov edx, dword [esp + 0x10]
push 5
push str.blank
push edx
call fcn.00565c00
mov edx, dword [ebp]
add esp, 0xc
mov edi, eax
neg edi
sbb edi, edi
inc edi
test edx, edx
jl 0x550552
mov eax, dword [esp + 0x1c]
xor ecx, ecx
test eax, eax
lea edx, [edx + esi + 1]
je 0x5504f0
mov al, byte [edx + ecx - 1]
not al
or byte [esp + ecx + 0x60], al
mov al, byte [edx + ecx]
not al
or byte [esp + ecx + 0x61], al
mov al, byte [edx + ecx + 1]
not al
or byte [esp + ecx + 0x62], al
mov al, byte [edx + ecx + 2]
not al
or byte [esp + ecx + 0x63], al
mov al, byte [edx + ecx + 3]
not al
or byte [esp + ecx + 0x64], al
mov al, byte [edx + ecx + 4]
not al
or byte [esp + ecx + 0x65], al
mov al, byte [edx + ecx + 5]
not al
or byte [esp + ecx + 0x66], al
mov al, byte [edx + ecx + 6]
not al
or byte [esp + ecx + 0x67], al
add ecx, 8
cmp ecx, 0x20
jl 0x550485
test edi, edi
je 0x550545
mov al, byte [esp + 0x61]
or al, 0x3c
jmp 0x550541
mov al, byte [edx + ecx - 1]
or byte [esp + ecx + 0x60], al
mov al, byte [edx + ecx]
or byte [esp + ecx + 0x61], al
mov al, byte [edx + ecx + 1]
or byte [esp + ecx + 0x62], al
mov al, byte [edx + ecx + 2]
or byte [esp + ecx + 0x63], al
mov al, byte [edx + ecx + 3]
or byte [esp + ecx + 0x64], al
mov al, byte [edx + ecx + 4]
or byte [esp + ecx + 0x65], al
mov al, byte [edx + ecx + 5]
or byte [esp + ecx + 0x66], al
mov al, byte [edx + ecx + 6]
or byte [esp + ecx + 0x67], al
add ecx, 8
cmp ecx, 0x20
jl 0x5504f0
test edi, edi
je 0x550545
mov al, byte [esp + 0x61]
and al, 0xc3
mov byte [esp + 0x61], al
inc ebx
add ebp, 4
cmp ebx, 3
jl 0x550451
mov ebp, dword [esp + 0x84]
mov ebx, dword [esp + 0x14]
inc ebp
mov dword [esp + 0x28], 0xa
jmp 0x550a32
cmp esi, 0x5c
jne 0x5508e4
mov ecx, dword [esp + 0xc4]
mov edx, dword [esp + 0x48]
mov eax, dword [esp + 0xa8]
push ecx
mov ecx, dword [eax]
mov eax, dword [esp + 0xb8]
push 1
push edx
push ecx
lea edx, [esp + 0x20]
push edx
call fcn.0054f960
mov esi, eax
neg eax
cmp eax, 4
jne 0x5505ac
mov esi, 8
mov eax, esi
neg eax
cmp eax, 0x10
jne 0x5505da
mov ebp, dword [esp + 0x10]
cmp byte [ebp + 1], 0x5c
jne 0x5505cd
cmp byte [ebp + 2], 0x45
jne 0x5505cd
add ebp, 2
jmp 0x550a32
mov dword [esp + 0x54], 1
jmp 0x550a32
test esi, esi
jge 0x5508e0
mov ecx, dword [esp + 0xc4]
mov ecx, dword [ecx + 8]
add eax, 0xfffffffb
cmp eax, 5
mov dword [esp + 0x28], 0xa
ja case.default.0x550600
jmp dword [eax*4 + 0x551dc4]
lea eax, [esp + 0x61]
lea esi, [ecx + 0x41]
mov edi, 4
mov dl, byte [esi - 1]
mov cl, byte [eax - 1]
or cl, dl
mov dl, byte [eax]
mov byte [eax - 1], cl
mov cl, byte [esi]
or dl, cl
mov cl, byte [eax + 1]
mov byte [eax], dl
mov dl, byte [esi + 1]
or cl, dl
mov dl, byte [eax + 2]
mov byte [eax + 1], cl
mov cl, byte [esi + 2]
or dl, cl
mov cl, byte [eax + 3]
mov byte [eax + 2], dl
mov dl, byte [esi + 3]
or cl, dl
mov dl, byte [eax + 4]
mov byte [eax + 3], cl
mov cl, byte [esi + 4]
or dl, cl
mov cl, byte [eax + 5]
mov byte [eax + 4], dl
mov dl, byte [esi + 5]
or cl, dl
mov dl, byte [eax + 6]
mov byte [eax + 5], cl
mov cl, byte [esi + 6]
or dl, cl
mov byte [eax + 6], dl
add esi, 8
add eax, 8
dec edi
jne 0x550613
mov ebp, dword [esp + 0x10]
jmp 0x550a32
lea eax, [esp + 0x61]
lea esi, [ecx + 0x41]
mov edi, 4
mov dl, byte [esi - 1]
mov cl, byte [eax - 1]
not dl
or cl, dl
mov dl, byte [eax]
mov byte [eax - 1], cl
mov cl, byte [esi]
not cl
or dl, cl
mov cl, byte [eax + 1]
mov byte [eax], dl
mov dl, byte [esi + 1]
not dl
or cl, dl
mov dl, byte [eax + 2]
mov byte [eax + 1], cl
mov cl, byte [esi + 2]
not cl
or dl, cl
mov cl, byte [eax + 3]
mov byte [eax + 2], dl
mov dl, byte [esi + 3]
not dl
or cl, dl
mov dl, byte [eax + 4]
mov byte [eax + 3], cl
mov cl, byte [esi + 4]
not cl
or dl, cl
mov cl, byte [eax + 5]
mov byte [eax + 4], dl
mov dl, byte [esi + 5]
not dl
or cl, dl
mov dl, byte [eax + 6]
mov byte [eax + 5], cl
mov cl, byte [esi + 6]
not cl
or dl, cl
mov byte [eax + 6], dl
add esi, 8
add eax, 8
dec edi
jne 0x550686
mov ebp, dword [esp + 0x10]
jmp 0x550a32
lea eax, [esp + 0x61]
lea esi, [ecx + 0xa1]
mov edi, 4
lea esp, [esp]
mov dl, byte [esi - 1]
mov cl, byte [eax - 1]
or cl, dl
mov dl, byte [eax]
mov byte [eax - 1], cl
mov cl, byte [esi]
or dl, cl
mov cl, byte [eax + 1]
mov byte [eax], dl
mov dl, byte [esi + 1]
or cl, dl
mov dl, byte [eax + 2]
mov byte [eax + 1], cl
mov cl, byte [esi + 2]
or dl, cl
mov cl, byte [eax + 3]
mov byte [eax + 2], dl
mov dl, byte [esi + 3]
or cl, dl
mov dl, byte [eax + 4]
mov byte [eax + 3], cl
mov cl, byte [esi + 4]
or dl, cl
mov cl, byte [eax + 5]
mov byte [eax + 4], dl
mov dl, byte [esi + 5]
or cl, dl
mov dl, byte [eax + 6]
mov byte [eax + 5], cl
mov cl, byte [esi + 6]
or dl, cl
mov byte [eax + 6], dl
add esi, 8
add eax, 8
dec edi
jne 0x550710
mov ebp, dword [esp + 0x10]
jmp 0x550a32
lea eax, [esp + 0x61]
lea esi, [ecx + 0xa1]
mov edi, 4
mov dl, byte [esi - 1]
mov cl, byte [eax - 1]
not dl
or cl, dl
mov dl, byte [eax]
mov byte [eax - 1], cl
mov cl, byte [esi]
not cl
or dl, cl
mov cl, byte [eax + 1]
mov byte [eax], dl
mov dl, byte [esi + 1]
not dl
or cl, dl
mov dl, byte [eax + 2]
mov byte [eax + 1], cl
mov cl, byte [esi + 2]
not cl
or dl, cl
mov cl, byte [eax + 3]
mov byte [eax + 2], dl
mov dl, byte [esi + 3]
not dl
or cl, dl
mov dl, byte [eax + 4]
mov byte [eax + 3], cl
mov cl, byte [esi + 4]
not cl
or dl, cl
mov cl, byte [eax + 5]
mov byte [eax + 4], dl
mov dl, byte [esi + 5]
not dl
or cl, dl
mov dl, byte [eax + 6]
mov byte [eax + 5], cl
mov cl, byte [esi + 6]
not cl
or dl, cl
mov byte [eax + 6], dl
add esi, 8
add eax, 8
dec edi
jne 0x550786
mov ebp, dword [esp + 0x10]
jmp 0x550a32
mov esi, ecx
lea edx, [esp + 0x60]
xor edi, edi
sub esi, edx
lea eax, [esp + edi + 0x60]
mov dl, byte [esi + eax]
or byte [eax], dl
mov dl, byte [ecx + edi + 1]
or byte [eax + 1], dl
mov dl, byte [ecx + edi + 2]
or byte [eax + 2], dl
mov dl, byte [ecx + edi + 3]
or byte [eax + 3], dl
mov dl, byte [ecx + edi + 4]
or byte [eax + 4], dl
mov dl, byte [ecx + edi + 5]
or byte [eax + 5], dl
mov dl, byte [ecx + edi + 6]
or byte [eax + 6], dl
mov dl, byte [ecx + edi + 7]
or byte [eax + 7], dl
add edi, 8
cmp edi, 0x20
jl 0x550807
mov al, byte [esp + 0x61]
mov ebp, dword [esp + 0x10]
and al, 0xf7
mov byte [esp + 0x61], al
jmp 0x550a32
mov esi, ecx
lea eax, [esp + 0x60]
xor edi, edi
sub esi, eax
lea eax, [esp + edi + 0x60]
mov dl, byte [esi + eax]
not dl
or byte [eax], dl
mov dl, byte [ecx + edi + 1]
not dl
or byte [eax + 1], dl
mov dl, byte [ecx + edi + 2]
not dl
or byte [eax + 2], dl
mov dl, byte [ecx + edi + 3]
not dl
or byte [eax + 3], dl
mov dl, byte [ecx + edi + 4]
not dl
or byte [eax + 4], dl
mov dl, byte [ecx + edi + 5]
not dl
or byte [eax + 5], dl
mov dl, byte [ecx + edi + 6]
not dl
or byte [eax + 6], dl
mov dl, byte [ecx + edi + 7]
not dl
or byte [eax + 7], dl
add edi, 8
cmp edi, 0x20
jl 0x550866
mov al, byte [esp + 0x61]
mov ebp, dword [esp + 0x10]
or al, 8
mov byte [esp + 0x61], al
jmp 0x550a32
test byte [esp + 0x48], 0x40
mov ebp, dword [esp + 0x10]
jne 0x551c4d
movzx esi, byte [ebp]
jmp 0x5508e4
mov ebp, dword [esp + 0x10]
cmp byte [ebp + 1], 0x2d
jne 0x5509dd
cmp byte [ebp + 2], 0x5d
je 0x5509dd
add ebp, 2
mov dword [esp + 0x10], ebp
movzx eax, byte [ebp]
cmp eax, 0x5c
mov dword [esp + 0x1c], eax
jne 0x550954
mov eax, dword [esp + 0xc4]
mov ecx, dword [esp + 0x48]
mov edx, dword [esp + 0xa8]
push eax
mov eax, dword [edx]
push 1
push ecx
push eax
mov eax, dword [esp + 0xc4]
lea ecx, [esp + 0x20]
push ecx
call fcn.0054f960
test eax, eax
mov dword [esp + 0x1c], eax
jge 0x550950
cmp eax, 0xfffffffc
jne 0x5509d6
mov eax, 8
mov dword [esp + 0x1c], eax
mov ebp, dword [esp + 0x10]
cmp eax, esi
jl 0x551c5c
mov ecx, dword [esp + 0x48]
mov edx, dword [esp + 0x28]
and ecx, 1
sub eax, esi
lea eax, [edx + eax + 1]
mov dword [esp + 0x34], ecx
mov dword [esp + 0x28], eax
mov eax, esi
cdq
and edx, 7
add eax, edx
mov ecx, esi
and ecx, 7
sar eax, 3
mov dl, 1
shl dl, cl
mov cl, byte [esp + eax + 0x60]
lea edi, [esp + eax + 0x60]
mov eax, dword [esp + 0x34]
or cl, dl
test eax, eax
mov byte [edi], cl
je 0x5509c7
mov eax, dword [esp + 0xc4]
mov ecx, dword [eax + 4]
movzx ecx, byte [ecx + esi]
mov eax, ecx
cdq
and edx, 7
add eax, edx
sar eax, 3
and ecx, 7
lea edi, [esp + eax + 0x60]
mov al, byte [edi]
mov dl, 1
shl dl, cl
or al, dl
mov byte [edi], al
mov eax, dword [esp + 0x1c]
mov dword [esp + 0x24], esi
inc esi
cmp esi, eax
jle 0x550975
jmp 0x550a32
add ebp, 0xfffffffe
mov dword [esp + 0x10], ebp
mov eax, esi
cdq
and edx, 7
add eax, edx
sar eax, 3
lea edi, [esp + eax + 0x60]
mov ecx, esi
and ecx, 7
mov al, 1
shl al, cl
mov cl, byte [edi]
or cl, al
test byte [esp + 0x48], 1
mov byte [edi], cl
je 0x550a2a
mov ecx, dword [esp + 0xc4]
mov edx, dword [ecx + 4]
movzx esi, byte [edx + esi]
mov eax, esi
cdq
and edx, 7
add eax, edx
sar eax, 3
lea edi, [esp + eax + 0x60]
mov ecx, esi
and ecx, 7
mov al, 1
shl al, cl
or byte [edi], al
inc dword [esp + 0x28]
mov dword [esp + 0x24], esi
inc ebp
mov dword [esp + 0x10], ebp
movzx esi, byte [ebp]
cmp esi, 0x5d
jne 0x550388
mov eax, dword [esp + 0x54]
test eax, eax
jne 0x550390
cmp dword [esp + 0x28], 1
jne 0x550ae2
mov eax, dword [esp + 0x20]
mov ecx, dword [esp + 0x38]
test eax, eax
mov eax, dword [esp + 0x30]
mov dword [esp + 0x40], ecx
je 0x550a84
cmp eax, 0xfffffffe
jne 0x550a7b
or eax, 0xffffffff
mov dword [esp + 0x30], eax
mov dword [esp + 0x4c], eax
mov byte [ebx], 0x13
jmp 0x550ac0
cmp eax, 0xfffffffe
mov ecx, dword [esp + 0x5c]
jne 0x550aa1
mov eax, dword [esp + 0x24]
or eax, ecx
mov dword [esp + 0x4c], 0xffffffff
mov dword [esp + 0x30], eax
jmp 0x550ab9
mov edx, dword [esp + 0xc4]
mov dword [esp + 0x4c], eax
mov eax, dword [edx + 0x28]
or eax, dword [esp + 0x24]
or eax, ecx
mov dword [esp + 0x38], eax
mov byte [ebx], 0x12
inc ebx
mov byte [ebx], 1
mov al, byte [esp + 0x24]
inc ebx
mov byte [ebx], al
inc ebx
mov dword [esp + 0x14], ebx
mov ebp, dword [esp + 0x10]
mov edx, dword [esp + 0x48]
mov edi, dword [esp + 0x5c]
mov esi, dword [esp + 0x30]
inc ebp
jmp 0x550231
mov eax, dword [esp + 0x30]
cmp eax, 0xfffffffe
jne 0x550af2
or eax, 0xffffffff
mov dword [esp + 0x30], eax
mov ecx, dword [esp + 0x38]
mov dword [esp + 0x4c], eax
mov eax, dword [esp + 0x20]
test eax, eax
mov dword [esp + 0x40], ecx
lea esi, [esp + 0x60]
je 0x550b27
mov byte [ebx], 0x38
inc ebx
mov eax, ebx
sub esi, ebx
mov edi, 0x20
mov dl, byte [esi + eax]
not dl
mov byte [eax], dl
inc eax
dec edi
jne 0x550b17
add ebx, 0x20
jmp 0x550ac8
mov byte [ebx], 0x37
inc ebx
mov edi, ebx
mov ecx, 8
rep movsd dword es:[edi], dword [esi]
add ebx, 0x20
jmp 0x550ac8
mov eax, dword [esp + 0xc4]
inc ebp
push eax
mov eax, ebp
call fcn.0054fb60
test eax, eax
je case.0x5502b4.1
mov ecx, dword [esp + 0xc4]
mov edi, dword [esp + 0xb4]
push ecx
lea edx, [esp + 0x30]
push edx
lea eax, [esp + 0x44]
push eax
mov eax, ebp
call fcn.0054fbf0
mov ebp, eax
cmp dword [edi], 0
mov dword [esp + 0x10], ebp
jne 0x551c35
jmp 0x550ba6
mov dword [esp + 0x2c], ecx
jmp 0x550b9e
mov dword [esp + 0x3c], 1
mov dword [esp + 0x2c], ecx
jmp 0x550ba6
mov dword [esp + 0x2c], 1
mov dword [esp + 0x3c], 0
mov eax, dword [esp + 0x18]
test eax, eax
je 0x551c6b
mov eax, dword [esp + 0x3c]
test eax, eax
jne 0x550bca
mov ecx, dword [esp + 0x4c]
mov edx, dword [esp + 0x40]
mov dword [esp + 0x30], ecx
mov dword [esp + 0x38], edx
mov ecx, dword [esp + 0x2c]
mov edi, dword [esp + 0x3c]
mov edx, dword [esp + 0x18]
xor eax, eax
cmp edi, ecx
sete al
xor esi, esi
mov dword [esp + 0x50], edx
mov dword [esp + 0x1c], esi
mov dword [esp + 0x34], esi
dec eax
and eax, 0x200
mov dword [esp + 0x90], eax
mov al, byte [ebp + 1]
cmp al, 0x2b
jne 0x550c14
inc ebp
mov dword [esp + 0x28], esi
mov dword [esp + 0x34], 1
mov dword [esp + 0x10], ebp
mov eax, esi
jmp 0x550c31
cmp al, 0x3f
jne 0x550c26
mov eax, dword [esp + 0x94]
inc ebp
mov dword [esp + 0x10], ebp
jmp 0x550c2d
mov eax, dword [esp + 0x98]
mov dword [esp + 0x28], eax
mov edi, dword [esp + 0x18]
cmp byte [edi], 0x3b
jne 0x550c82
push 3
mov eax, edi
push eax
add eax, 3
push eax
call fcn.005641d0
mov dl, byte [esp + 0x24]
add ebx, 3
mov ecx, edi
mov eax, ebx
sub eax, ecx
mov byte [ecx], 0x4c
sar eax, 8
mov byte [ecx + 1], al
mov cl, bl
sub cl, dl
mov edx, edi
mov byte [edx + 2], cl
mov byte [ebx + 1], al
mov eax, dword [esp + 0x34]
mov byte [ebx], 0x3e
mov byte [ebx + 2], cl
mov ebp, dword [esp + 0x1c]
add esp, 0xc
add ebx, 3
mov dword [esp + 0x14], ebx
mov cl, byte [edi]
cmp cl, 0x12
jne 0x550d07
movzx edx, byte [ebx - 1]
dec ebx
lea ecx, [edi + 2]
cmp ebx, ecx
mov dword [esp + 0x14], ebx
mov dword [esp + 0x24], edx
jne 0x550cfa
cmp dword [esp + 0x3c], 1
mov dword [esp + 0x14], edi
mov ebx, edi
jle 0x550cbe
mov ecx, dword [esp + 0xc4]
mov ecx, dword [ecx + 0x28]
or ecx, edx
or ecx, dword [esp + 0x5c]
mov dword [esp + 0x38], ecx
mov edx, dword [esp + 0x1c]
mov ecx, dword [esp + 0x2c]
test ecx, ecx
je 0x55112b
mov ecx, dword [esp + 0x3c]
add eax, edx
test ecx, ecx
mov dword [esp + 0x28], eax
jne 0x550d63
mov ecx, dword [esp + 0x2c]
cmp ecx, 0xffffffff
jne 0x550d49
add al, 0x14
mov byte [ebx], al
mov al, byte [esp + 0x24]
inc ebx
mov byte [ebx], al
inc ebx
jmp 0x5510c8
dec byte [edi + 1]
mov ebp, dword [esp + 0x10]
mov dword [esp + 0x50], ebx
jmp 0x550cbe
cmp cl, 0x13
jne 0x550d25
movzx ecx, byte [edi + 1]
mov edx, 9
mov dword [esp + 0x1c], edx
mov dword [esp + 0x24], ecx
mov dword [esp + 0x14], edi
mov ebx, edi
jmp 0x550cc2
cmp cl, 0xd
jae 0x550e0d
movzx ecx, cl
mov edx, 0x12
mov dword [esp + 0x1c], edx
mov dword [esp + 0x24], ecx
mov dword [esp + 0x14], edi
mov ebx, edi
jmp 0x550cc2
cmp ecx, 1
jne 0x550def
add al, 0x18
mov byte [ebx], al
mov al, byte [esp + 0x24]
inc ebx
mov byte [ebx], al
inc ebx
jmp 0x5510c8
cmp dword [esp + 0x3c], 1
jne 0x550d82
cmp dword [esp + 0x2c], 0xffffffff
jne 0x550d9b
add al, 0x16
mov byte [ebx], al
mov al, byte [esp + 0x24]
inc ebx
mov byte [ebx], al
inc ebx
jmp 0x5510c8
mov ecx, dword [esp + 0x3c]
add dl, 0x1c
mov byte [ebx], dl
inc ebx
mov edx, ecx
sar edx, 8
mov byte [ebx], dl
mov byte [ebx + 1], cl
add ebx, 2
jmp 0x550db6
mov cl, byte [edi]
cmp cl, 0x12
jne 0x550db0
cmp ebx, edi
jne 0x550dab
add ebx, 2
jmp 0x550db6
inc byte [edi + 1]
jmp 0x550db6
cmp cl, 0x13
jne 0x550db6
inc ebx
mov ecx, dword [esp + 0x2c]
test ecx, ecx
jge 0x550dd4
mov cl, byte [esp + 0x24]
mov byte [ebx], cl
add al, 0x14
inc ebx
mov byte [ebx], al
inc ebx
mov al, cl
mov byte [ebx], al
inc ebx
jmp 0x5510c8
mov edx, dword [esp + 0x3c]
cmp dword [esp + 0x2c], edx
je 0x550e01
mov cl, byte [esp + 0x24]
mov byte [ebx], cl
mov ecx, dword [esp + 0x2c]
inc ebx
sub ecx, edx
mov dword [esp + 0x2c], ecx
add al, 0x1a
mov byte [ebx], al
inc ebx
mov edx, ecx
sar edx, 8
mov byte [ebx + 1], cl
mov byte [ebx], dl
add ebx, 2
mov al, byte [esp + 0x24]
mov byte [ebx], al
inc ebx
jmp 0x5510c8
cmp cl, 0x37
je 0x551054
cmp cl, 0x38
je 0x551054
cmp cl, 0x3a
je 0x551054
cmp cl, 0x4c
jae 0x550e3b
cmp cl, 0x46
je 0x550e3b
cmp cl, 0x47
jne 0x551c7a
xor ecx, ecx
mov dword [esp + 0x80], ecx
mov esi, ebx
mov dword [esp + 0x24], ecx
mov ecx, dword [esp + 0x2c]
sub esi, edi
cmp ecx, 0xffffffff
mov dword [esp + 0x20], esi
jne 0x550e7e
mov ecx, edi
jmp 0x550e60
xor edx, edx
mov dh, byte [ecx + 1]
mov dl, byte [ecx + 2]
add ecx, edx
cmp byte [ecx], 0x3e
jne 0x550e60
mov edx, ebx
sub edx, ecx
mov ecx, dword [esp + 0x2c]
mov dword [esp + 0x80], edx
mov edx, dword [esp + 0x3c]
test edx, edx
jne 0x550f11
test ecx, ecx
jne 0x550e99
mov dword [esp + 0x14], edi
mov ebx, edi
jmp 0x55112b
cmp ecx, 1
mov eax, dword [esp + 0x18]
push esi
push eax
jg 0x550ec3
lea edi, [eax + 1]
push edi
call fcn.005641d0
mov al, byte [esp + 0x34]
mov ecx, dword [esp + 0x24]
add esp, 0xc
inc ebx
add al, 0x49
mov byte [ecx], al
mov dword [esp + 0x18], edi
jmp 0x550ef6
add eax, 4
push eax
call fcn.005641d0
mov dl, byte [esp + 0x34]
mov eax, dword [esp + 0x24]
add dl, 0x49
mov byte [eax], dl
add esp, 0xc
add ebx, 4
inc eax
mov byte [eax], 0x4c
inc eax
mov dword [esp + 0x24], eax
mov byte [eax], 0
mov byte [eax + 1], 0
add eax, 2
mov dword [esp + 0x18], eax
mov eax, dword [esp + 0x2c]
mov ebp, dword [esp + 0x10]
dec eax
mov dword [esp + 0x2c], eax
mov eax, dword [esp + 0x28]
mov ecx, dword [esp + 0x2c]
mov dword [esp + 0x14], ebx
jmp 0x550f7d
cmp edx, 1
jle 0x550f73
mov esi, dword [esp + 0x88]
test esi, esi
je 0x550f31
mov esi, dword [esp + 0x38]
test esi, esi
jge 0x550f31
mov esi, dword [esp + 0x30]
mov dword [esp + 0x38], esi
cmp edx, 1
jle 0x550f73
mov ebp, dword [esp + 0x20]
dec edx
mov dword [esp + 0x1c], edx
nop
mov esi, dword [esp + 0x18]
mov ecx, ebp
mov edx, ecx
shr ecx, 2
mov edi, ebx
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov ecx, dword [esp + 0x1c]
add ebx, ebp
dec ecx
mov dword [esp + 0x1c], ecx
jne 0x550f40
mov ebp, dword [esp + 0x10]
mov ecx, dword [esp + 0x2c]
mov edx, dword [esp + 0x3c]
mov dword [esp + 0x14], ebx
test ecx, ecx
jle 0x550f7f
sub ecx, edx
mov dword [esp + 0x2c], ecx
test ecx, ecx
jl 0x551040
mov edx, dword [esp + 0x24]
dec ecx
test ecx, ecx
mov dword [esp + 0x1c], ecx
jl 0x550ffd
mov esi, dword [esp + 0x20]
add al, 0x49
mov byte [esp + 0x5b], al
lea esp, [esp]
mov ecx, dword [esp + 0x1c]
mov byte [ebx], al
inc ebx
test ecx, ecx
je 0x550fce
mov byte [ebx], 0x4c
inc ebx
test edx, edx
jne 0x550fb7
xor ecx, ecx
jmp 0x550fbb
mov ecx, ebx
sub ecx, edx
mov eax, ecx
sar eax, 8
mov byte [ebx], al
mov al, byte [esp + 0x5b]
mov edx, ebx
mov byte [ebx + 1], cl
add ebx, 2
mov ecx, esi
mov esi, dword [esp + 0x18]
mov ebp, ecx
shr ecx, 2
mov edi, ebx
rep movsd dword es:[edi], dword [esi]
mov ecx, ebp
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov esi, dword [esp + 0x20]
mov ecx, dword [esp + 0x1c]
add ebx, esi
dec ecx
mov dword [esp + 0x1c], ecx
jns 0x550fa0
mov ebp, dword [esp + 0x10]
mov dword [esp + 0x14], ebx
test edx, edx
je 0x5510d0
mov eax, ebx
sub eax, edx
inc eax
mov esi, ebx
sub esi, eax
xor ecx, ecx
mov ch, byte [esi + 1]
mov cl, byte [esi + 2]
test ecx, ecx
jne 0x55101e
xor edx, edx
jmp 0x551020
sub edx, ecx
mov byte [ebx], 0x3e
inc ebx
mov ecx, eax
sar ecx, 8
mov byte [ebx], cl
mov byte [ebx + 1], al
add ebx, 2
test edx, edx
mov byte [esi + 1], cl
mov byte [esi + 2], al
jne 0x551005
jmp 0x5510c8
mov edx, dword [esp + 0x80]
add al, 0x3f
mov ecx, ebx
sub ecx, edx
mov byte [ecx], al
jmp 0x5510cc
mov ecx, dword [esp + 0x2c]
cmp ecx, esi
jne 0x551067
mov dword [esp + 0x14], edi
mov ebx, edi
jmp 0x55112b
mov edx, dword [esp + 0x3c]
test edx, edx
jne 0x55107b
cmp ecx, 0xffffffff
jne 0x55108e
add al, 0x2f
mov byte [ebx], al
inc ebx
jmp 0x5510c8
cmp dword [esp + 0x3c], 1
jne 0x55109a
cmp ecx, 0xffffffff
jne 0x55109a
add al, 0x31
mov byte [ebx], al
inc ebx
jmp 0x5510c8
cmp ecx, 1
jne 0x55109a
add al, 0x33
mov byte [ebx], al
inc ebx
jmp 0x5510c8
add al, 0x35
mov byte [ebx], al
mov eax, dword [esp + 0x3c]
inc ebx
mov edx, eax
sar edx, 8
mov byte [ebx], dl
mov byte [ebx + 1], al
add ebx, 2
cmp ecx, 0xffffffff
jne 0x5510bb
xor ecx, ecx
mov dword [esp + 0x2c], ecx
mov eax, ecx
sar eax, 8
mov byte [ebx], al
mov byte [ebx + 1], cl
add ebx, 2
mov dword [esp + 0x14], ebx
mov ebp, dword [esp + 0x10]
mov eax, dword [esp + 0x34]
test eax, eax
je 0x55112b
mov ecx, dword [esp + 0x50]
mov eax, ebx
sub eax, ecx
push eax
push ecx
add ecx, 3
push ecx
mov dword [esp + 0x40], eax
call fcn.005641d0
mov edx, dword [esp + 0x5c]
mov ecx, dword [esp + 0x40]
mov byte [edx], 0x46
mov byte [ebx + 3], 0x3e
add ecx, 3
add ebx, 3
mov byte [ebx + 2], cl
add esp, 0xc
inc ebx
mov eax, ecx
sar eax, 8
mov byte [ebx], al
mov edx, dword [esp + 0x50]
mov byte [edx + 1], al
mov eax, dword [esp + 0x50]
add ebx, 2
mov byte [eax + 2], cl
mov ebp, dword [esp + 0x10]
mov dword [esp + 0x14], ebx
mov eax, dword [esp + 0xc4]
mov edx, dword [eax + 0x28]
mov ecx, dword [esp + 0x90]
mov edi, dword [esp + 0x5c]
mov esi, dword [esp + 0x30]
or edx, ecx
mov dword [eax + 0x28], edx
mov edx, dword [esp + 0x48]
mov dword [esp + 0x18], 0
inc ebp
jmp 0x550231
inc ebp
mov dword [esp + 0x10], ebp
cmp byte [ebp], 0x3f
mov dword [esp + 0x80], edx
mov dword [esp + 0x1c], 0
jne 0x551742
inc ebp
mov dword [esp + 0x10], ebp
mov cl, byte [ebp]
movzx eax, cl
add eax, 0xffffffdf
cmp eax, 0x31
ja case.0x551197.34
movzx eax, byte [eax + 0x551e0c]
jmp dword [eax*4 + 0x551ddc]
inc ebp
mov dword [esp + 0x10], ebp
cmp byte [ebp], 0x29
je 0x550ad0
lea ecx, [ecx]
inc ebp
mov dword [esp + 0x10], ebp
cmp byte [ebp], 0x29
jne 0x5511b0
mov edx, dword [esp + 0x48]
mov edi, dword [esp + 0x5c]
mov esi, dword [esp + 0x30]
inc ebp
jmp 0x550231
inc ebp
mov dword [esp + 0x44], 0x4c
mov dword [esp + 0x10], ebp
jmp 0x55175c
mov al, byte [ebp + 1]
cmp al, 0x52
mov dword [esp + 0x44], 0x47
jne 0x551212
mov al, 0xff
mov byte [ebx + 4], al
mov byte [ebx + 5], al
mov byte [ebx + 3], 0x48
mov ecx, dword [esp + 0x10]
mov eax, 3
add ecx, eax
mov dword [esp + 0x1c], eax
mov dword [esp + 0x10], ecx
jmp 0x55175c
movzx ecx, al
mov al, byte [ecx + 0x57e600]
test al, al
je 0x55175c
inc ebp
mov dword [esp + 0x10], ebp
movzx eax, byte [ebp]
sub eax, 0x30
inc ebp
mov dword [esp + 0x10], ebp
mov cl, byte [ebp]
cmp cl, 0x29
je 0x551257
lea esp, [esp]
inc ebp
lea edx, [eax + eax*4]
movzx eax, cl
mov dword [esp + 0x10], ebp
mov cl, byte [ebp]
cmp cl, 0x29
lea eax, [eax + edx*2 - 0x30]
jne 0x551240
test eax, eax
je 0x551c89
inc ebp
mov ecx, eax
mov dword [esp + 0x10], ebp
sar ecx, 8
mov byte [ebx + 3], 0x48
mov byte [ebx + 4], cl
mov byte [ebx + 5], al
mov dword [esp + 0x1c], 3
jmp 0x55175c
inc ebp
mov dword [esp + 0x44], 0x41
mov dword [esp + 0x10], ebp
jmp 0x55175c
inc ebp
mov dword [esp + 0x44], 0x42
mov dword [esp + 0x10], ebp
jmp 0x55175c
inc ebp
mov dword [esp + 0x10], ebp
mov al, byte [ebp]
cmp al, 0x21
je 0x5512ca
cmp al, 0x3d
jne 0x55175c
inc ebp
mov dword [esp + 0x44], 0x43
mov dword [esp + 0x10], ebp
jmp 0x55175c
inc ebp
mov dword [esp + 0x44], 0x44
mov dword [esp + 0x10], ebp
jmp 0x55175c
inc ebp
mov dword [esp + 0x44], 0x46
mov dword [esp + 0x10], ebp
jmp 0x55175c
mov byte [ebx], 0x3c
mov ebp, dword [esp + 0x10]
inc ebx
xor eax, eax
inc ebp
mov dword [esp + 0x10], ebp
movzx ecx, byte [ebp]
mov dl, 4
test byte [ecx + 0x57e600], dl
je 0x551333
jmp 0x551310
inc ebp
lea eax, [eax + eax*4]
lea eax, [ecx + eax*2 - 0x30]
mov dword [esp + 0x10], ebp
movzx ecx, byte [ebp]
test byte [ecx + 0x57e600], dl
jne 0x551310
cmp eax, 0xff
jg 0x551c98
mov dword [esp + 0x18], 0
jmp 0x550ac5
inc ebp
mov dword [esp + 0x10], ebp
mov al, byte [ebp]
cmp al, 0x3c
jne 0x5514a1
mov esi, dword [esp + 0xc4]
mov ecx, dword [esi + 0x14]
inc ebp
mov dword [esp + 0x28], ecx
mov ecx, ebp
mov dword [esp + 0x10], ebp
mov dword [esp + 0x34], ecx
lea esp, [esp]
mov dl, byte [ebp]
inc ebp
cmp dl, 0x3e
mov dword [esp + 0x10], ebp
jne 0x551370
mov edx, dword [esi + 0x18]
mov eax, ebp
sub eax, ecx
dec eax
test edx, edx
mov dword [esp + 0x40], eax
mov dword [esp + 0x20], 0
jle 0x55141d
lea esp, [esp]
mov edi, dword [esp + 0x28]
mov ecx, dword [esp + 0x40]
mov esi, dword [esp + 0x34]
add edi, 2
xor eax, eax
repe cmpsb byte [esi], byte es:[edi]
je 0x5513ba
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
je 0x5513e6
jl 0x5513f9
mov ecx, dword [esp + 0xc4]
mov eax, dword [ecx + 0x1c]
mov esi, dword [esp + 0x28]
add esi, eax
mov eax, dword [esp + 0x20]
mov dword [esp + 0x28], esi
mov esi, dword [ecx + 0x18]
inc eax
cmp eax, esi
mov dword [esp + 0x20], eax
jl 0x5513a0
jmp 0x55141d
mov ecx, dword [esp + 0x40]
mov eax, dword [esp + 0x28]
cmp byte [ecx + eax + 2], 0
je 0x551ca7
mov ecx, dword [esp + 0xc4]
mov eax, dword [ecx + 0x1c]
mov ebp, dword [esp + 0x20]
mov ecx, dword [esp + 0x28]
sub edx, ebp
imul edx, eax
push edx
push ecx
add ecx, eax
push ecx
call fcn.005641d0
add esp, 0xc
mov esi, dword [esp + 0xa8]
mov edx, dword [esi]
mov eax, dword [esp + 0x28]
inc edx
sar edx, 8
mov byte [eax], dl
mov cl, byte [esi]
mov edx, dword [esp + 0x40]
mov esi, dword [esp + 0x34]
inc cl
mov byte [eax + 1], cl
mov ecx, edx
mov ebp, ecx
shr ecx, 2
lea edi, [eax + 2]
rep movsd dword es:[edi], dword [esi]
mov ecx, ebp
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov byte [edx + eax + 2], 0
mov eax, dword [esp + 0xc4]
inc dword [eax + 0x18]
mov eax, dword [esp + 0xa8]
mov esi, dword [eax]
inc esi
mov ecx, esi
cmp ecx, 0x96
mov dword [eax], esi
jle 0x551755
mov byte [ebx + 3], 0x4b
mov edx, dword [eax]
sar edx, 8
mov byte [ebx + 4], dl
mov al, byte [eax]
mov dword [esp + 0x44], 0xe3
mov byte [ebx + 5], al
mov dword [esp + 0x1c], 3
jmp 0x55175c
cmp al, 0x3d
je 0x5514ad
cmp al, 0x3e
jne 0x55175c
movzx edx, al
mov eax, dword [esp + 0xc4]
mov edi, dword [eax + 0x14]
inc ebp
mov dword [esp + 0x10], ebp
cmp byte [ebp], 0x29
mov dword [esp + 0x90], edx
mov dword [esp + 0x34], ebp
je 0x5514db
inc ebp
mov dword [esp + 0x10], ebp
cmp byte [ebp], 0x29
jne 0x5514d0
mov ecx, dword [esp + 0x34]
mov esi, ebp
sub esi, ecx
mov ecx, dword [esp + 0xc4]
mov eax, dword [ecx + 0x18]
test eax, eax
mov dword [esp + 0x20], 0
jle 0x551530
mov ebp, dword [esp + 0x20]
lea ecx, [ecx]
mov eax, dword [esp + 0x34]
push esi
lea edx, [edi + 2]
push edx
push eax
call fcn.00565c00
add esp, 0xc
test eax, eax
je 0x55152c
mov eax, dword [esp + 0xc4]
add edi, dword [eax + 0x1c]
mov ecx, dword [eax + 0x18]
inc ebp
cmp ebp, ecx
mov dword [esp + 0x20], ebp
jl 0x551500
mov ebp, dword [esp + 0x10]
mov esi, dword [esp + 0xc4]
mov ecx, dword [esp + 0x20]
cmp ecx, dword [esi + 0x18]
jge 0x551cb9
movzx ecx, byte [edi + 1]
cmp dword [esp + 0x90], 0x3e
mov ch, byte [edi]
je 0x5515bf
mov byte [ebx], 0x3a
mov dword [esp + 0x18], ebx
inc ebx
mov edx, ecx
sar edx, 8
mov byte [ebx], dl
mov byte [ebx + 1], cl
add ebx, 2
cmp ecx, 0x20
mov dword [esp + 0x14], ebx
mov eax, 1
jge 0x551579
shl eax, cl
mov edx, dword [esi + 0x24]
or edx, eax
cmp ecx, dword [esi + 0x20]
mov dword [esi + 0x24], edx
jle 0x550acc
mov dword [esi + 0x20], ecx
jmp 0x550acc
inc ebp
mov dword [esp + 0x10], ebp
movzx eax, byte [ebp]
mov dl, 4
xor ecx, ecx
test byte [eax + 0x57e600], dl
je 0x5515bf
inc ebp
lea ecx, [ecx + ecx*4]
lea ecx, [eax + ecx*2 - 0x30]
mov dword [esp + 0x10], ebp
movzx eax, byte [ebp]
test byte [eax + 0x57e600], dl
jne 0x5515a7
test ecx, ecx
mov dword [esp + 0x18], ebx
mov byte [ebx], 0
jne 0x5515da
mov edx, dword [esp + 0xc4]
mov ecx, dword [edx + 0x10]
mov dword [esp + 0x20], ecx
jmp 0x5515f3
mov eax, dword [esp + 0xc4]
mov eax, dword [eax + 0x10]
push 0
mov esi, ecx
call fcn.0054ff30
mov dword [esp + 0x20], eax
mov ecx, eax
test ecx, ecx
je 0x551ccb
xor edx, edx
mov dh, byte [ecx + 1]
mov dl, byte [ecx + 2]
test edx, edx
jne 0x551626
mov eax, dword [esp + 0xc0]
push ecx
xor edi, edi
call fcn.005500e0
test eax, eax
jne 0x551cdd
mov ecx, dword [esp + 0x20]
mov ebx, dword [esp + 0x14]
mov eax, dword [esp + 0xc4]
mov byte [ebx], 0x3b
mov edi, dword [eax + 0x10]
mov edx, ecx
sub edx, edi
sar edx, 8
mov byte [ebx + 1], dl
sub cl, byte [eax + 0x10]
mov byte [ebx + 2], cl
add ebx, 3
jmp 0x550ac8
xor edi, edi
xor esi, esi
cmp cl, 0x29
mov dword [esp + 0x34], edi
mov dword [esp + 0x20], esi
lea eax, [esp + 0x20]
je 0x5516c2
cmp cl, 0x3a
je 0x5516c2
movzx ecx, cl
inc ebp
sub ecx, 0x2d
cmp ecx, 0x4b
mov dword [esp + 0x10], ebp
ja case.0x55167c.46
movzx ecx, byte [ecx + 0x551e60]
jmp dword [ecx*4 + 0x551e40]
lea eax, [esp + 0x34]
jmp case.0x55167c.46
mov ecx, dword [eax]
or ecx, 1
jmp 0x5516b4
mov ecx, dword [eax]
or ecx, 2
jmp 0x5516b4
mov ecx, dword [eax]
or ecx, 4
jmp 0x5516b4
mov ecx, dword [eax]
or ecx, 8
jmp 0x5516b4
mov ecx, dword [eax]
or ecx, 0x200
jmp 0x5516b4
mov ecx, dword [eax]
or ecx, 0x40
mov dword [eax], ecx
mov cl, byte [ebp]
cmp cl, 0x29
mov esi, dword [esp + 0x20]
jne 0x551660
mov eax, dword [esp + 0x34]
mov cl, byte [ebp]
or esi, edx
not eax
and esi, eax
cmp cl, 0x29
mov eax, esi
mov dword [esp + 0x80], eax
jne case.0x551197.58
mov ecx, eax
xor ecx, edx
test cl, 7
je 0x5516fe
mov byte [ebx], 0xf
mov dl, al
inc ebx
and dl, 7
mov byte [ebx], dl
mov ebp, dword [esp + 0x10]
inc ebx
mov dword [esp + 0x14], ebx
mov ecx, dword [esp + 0xa4]
mov esi, dword [esp + 0x30]
mov dword [ecx], eax
mov ecx, eax
shr ecx, 9
mov dword [esp + 0x48], eax
mov edx, dword [esp + 0x48]
and ecx, 1
and eax, 1
shl eax, 8
mov dword [esp + 0x98], ecx
xor ecx, 1
mov dword [esp + 0x18], edi
mov dword [esp + 0x94], ecx
mov dword [esp + 0x5c], eax
inc ebp
mov edi, eax
jmp 0x550231
test dh, 0x10
je 0x551461
mov dword [esp + 0x44], 0x4c
jmp 0x55175c
add ecx, 0x4c
mov dword [esp + 0x44], ecx
mov ecx, dword [esp + 0x44]
mov edx, dword [esp + 0xc4]
xor eax, eax
cmp ecx, 0x46
setl al
mov byte [ebx], cl
mov edi, dword [edx + 0x28]
mov dword [esp + 0x50], ebx
dec eax
and eax, ebx
cmp ecx, 0x43
mov dword [esp + 0x18], eax
je 0x55178d
cmp ecx, 0x44
je 0x55178d
xor eax, eax
jmp 0x551792
mov eax, 1
mov ecx, dword [esp + 0xc0]
push edx
push ecx
lea edx, [esp + 0x94]
push edx
mov edx, dword [esp + 0x28]
lea ecx, [esp + 0xa8]
push ecx
push edx
push eax
mov eax, dword [esp + 0xcc]
push eax
mov eax, dword [esp + 0xc4]
lea ecx, [esp + 0x2c]
push ecx
mov ecx, dword [esp + 0xa0]
lea edx, [esp + 0x70]
push edx
mov edx, dword [esp + 0x6c]
push eax
and edx, 7
call fcn.00551eb0
test eax, eax
je 0x551c31
mov esi, dword [esp + 0x44]
cmp esi, 0x47
jne 0x551826
xor eax, eax
xor ecx, ecx
mov ch, byte [ebx + 1]
inc eax
mov cl, byte [ebx + 2]
add ebx, ecx
cmp byte [ebx], 0x3e
jne 0x5517f1
cmp eax, 2
jg 0x551cef
cmp eax, 1
jne 0x551826
mov ecx, 0xffffffff
or eax, ecx
mov dword [esp + 0x8c], ecx
mov dword [esp + 0x9c], eax
jmp 0x551834
mov ecx, dword [esp + 0x8c]
mov eax, dword [esp + 0x9c]
cmp esi, 0x4c
mov edx, dword [esp + 0x38]
mov dword [esp + 0x40], edx
mov edx, dword [esp + 0x30]
mov dword [esp + 0x4c], edx
mov dword [esp + 0x88], 0
jge 0x551865
cmp esi, 0x46
je 0x551865
cmp esi, 0x47
je 0x551865
cmp esi, 0x41
jne 0x5518b4
jmp 0x5518ac
cmp edx, 0xfffffffe
jne 0x551899
test eax, eax
jl 0x551887
mov dword [esp + 0x30], eax
mov dword [esp + 0x88], 1
mov dword [esp + 0x4c], 0xffffffff
jmp 0x5518ac
mov dword [esp + 0x30], 0xffffffff
mov dword [esp + 0x4c], 0xffffffff
jmp 0x5518ac
test eax, eax
jl 0x5518ac
test ecx, ecx
jge 0x5518b0
or eax, edi
mov ecx, eax
mov dword [esp + 0x8c], ecx
test ecx, ecx
jl 0x5518b4
mov dword [esp + 0x38], ecx
mov eax, dword [esp + 0x50]
mov ebp, dword [esp + 0x10]
mov dword [esp + 0x14], eax
cmp byte [ebp], 0x29
jne 0x551d01
mov ebx, dword [esp + 0x14]
mov edx, dword [esp + 0x48]
mov edi, dword [esp + 0x5c]
mov esi, dword [esp + 0x30]
inc ebp
jmp 0x550231
mov ecx, dword [esp + 0xc4]
mov edx, dword [esp + 0x48]
mov eax, dword [esp + 0xa8]
push ecx
mov ecx, dword [eax]
mov eax, dword [esp + 0xb8]
push 0
push edx
push ecx
lea edx, [esp + 0x20]
push edx
mov dword [esp + 0x98], ebp
call fcn.0054f960
test eax, eax
jge 0x5519c6
mov ecx, eax
neg ecx
cmp ecx, 0x10
jne 0x551961
mov ebp, dword [esp + 0x10]
cmp byte [ebp + 1], 0x5c
jne 0x551947
cmp byte [ebp + 2], 0x45
jne 0x551947
mov edx, dword [esp + 0x48]
mov edi, dword [esp + 0x5c]
mov esi, dword [esp + 0x30]
add ebp, 2
inc ebp
jmp 0x550231
mov edx, dword [esp + 0x48]
mov edi, dword [esp + 0x5c]
mov esi, dword [esp + 0x30]
mov dword [esp + 0x54], 1
inc ebp
jmp 0x550231
cmp esi, 0xfffffffe
jne 0x551977
cmp ecx, 4
jle 0x551977
cmp ecx, 0xd
jge 0x551977
or esi, 0xffffffff
mov dword [esp + 0x30], esi
cmp ecx, 0x11
mov edx, dword [esp + 0x38]
mov dword [esp + 0x4c], esi
mov dword [esp + 0x40], edx
jl 0x5519a9
mov ecx, 0xffffffef
sub ecx, eax
mov byte [ebx], 0x3a
mov dword [esp + 0x18], ebx
inc ebx
mov eax, ecx
sar eax, 8
mov byte [ebx], al
mov byte [ebx + 1], cl
add ebx, 2
jmp 0x550ac8
cmp ecx, 4
jle 0x5519b7
cmp ecx, 0xd
mov dword [esp + 0x18], ebx
jl 0x5519bf
mov dword [esp + 0x18], 0
neg al
jmp 0x550ac5
mov dword [esp + 0x10], ebp
mov dword [esp + 0x24], 0x5c
mov ecx, dword [esp + 0x24]
mov byte [ebx], 0x12
mov eax, dword [esp + 0x10]
mov dword [esp + 0x18], ebx
add ebx, 2
mov ebp, ebx
mov dword [esp + 0x34], ebx
mov dword [esp + 0x14], ebp
xor ebx, ebx
mov edx, dword [esp + 0x54]
test edx, edx
je 0x551a1d
cmp ecx, 0x5c
jne 0x551a15
cmp byte [eax + 1], 0x45
jne 0x551a15
inc eax
mov dword [esp + 0x54], 0
mov dword [esp + 0x10], eax
jmp 0x551aac
mov byte [ebp], cl
jmp 0x551aa2
test byte [esp + 0x48], 8
je 0x551a57
mov edx, dword [esp + 0xc4]
mov edx, dword [edx + 0xc]
test byte [ecx + edx], 1
jne 0x551aac
cmp ecx, 0x23
jne 0x551a57
lea esp, [esp]
inc eax
mov dword [esp + 0x10], eax
movzx ecx, byte [eax]
test ecx, ecx
je 0x551ade
cmp ecx, 0xa
jne 0x551a40
jmp 0x551aac
cmp ecx, 0x5c
jne 0x551a97
mov ecx, dword [esp + 0x48]
mov edx, dword [esp + 0xa8]
mov esi, eax
mov eax, dword [esp + 0xc4]
push eax
mov eax, dword [edx]
push 0
push ecx
push eax
mov eax, dword [esp + 0xc4]
lea ecx, [esp + 0x20]
push ecx
mov dword [esp + 0x98], esi
call fcn.0054f960
test eax, eax
mov dword [esp + 0x24], eax
jl 0x551ad6
mov dl, byte [esp + 0x24]
mov esi, dword [esp + 0x30]
mov byte [ebp], dl
mov eax, dword [esp + 0x10]
inc ebp
mov dword [esp + 0x14], ebp
inc ebx
cmp ebx, 0xfa
jge 0x551ade
mov edx, dword [esp + 0xc4]
mov edx, dword [edx + 0xc]
inc eax
mov dword [esp + 0x10], eax
movzx ecx, byte [eax]
test byte [ecx + edx], 0x80
mov dword [esp + 0x24], ecx
je 0x5519f0
jmp 0x551ade
mov dword [esp + 0x10], esi
mov esi, dword [esp + 0x30]
cmp esi, 0xfffffffe
jne 0x551b57
cmp ebx, 1
jne 0x551b0a
mov eax, dword [esp + 0x34]
movzx eax, byte [eax]
mov ecx, dword [esp + 0x38]
or eax, edi
mov dword [esp + 0x4c], 0xffffffff
mov dword [esp + 0x30], eax
mov dword [esp + 0x40], ecx
jmp 0x551b92
mov edx, dword [esp + 0x34]
movzx eax, byte [edx]
or eax, edi
cmp ebx, 2
mov dword [esp + 0x30], eax
mov dword [esp + 0x4c], eax
jle 0x551b3f
mov ecx, dword [esp + 0xc4]
movzx eax, byte [ebp - 2]
or eax, dword [ecx + 0x28]
mov edx, dword [ecx + 0x28]
or eax, edi
mov dword [esp + 0x40], eax
movzx eax, byte [ebp - 1]
or eax, edx
jmp 0x551b8c
mov edx, dword [esp + 0x38]
movzx eax, byte [ebp - 1]
mov ecx, dword [esp + 0xc4]
mov dword [esp + 0x40], edx
or eax, dword [ecx + 0x28]
jmp 0x551b8c
cmp ebx, 1
mov dword [esp + 0x4c], esi
jne 0x551b6a
mov edx, dword [esp + 0x38]
mov dword [esp + 0x40], edx
jmp 0x551b7e
movzx eax, byte [ebp - 2]
mov ecx, dword [esp + 0xc4]
or eax, dword [ecx + 0x28]
or eax, edi
mov dword [esp + 0x40], eax
movzx eax, byte [ebp - 1]
mov edx, dword [esp + 0xc4]
or eax, dword [edx + 0x28]
or eax, edi
mov dword [esp + 0x38], eax
mov eax, dword [esp + 0x18]
mov byte [eax + 1], bl
cmp ebx, 0xfa
mov ebx, dword [esp + 0x14]
jge 0x550acc
mov ebp, dword [esp + 0x10]
mov edx, dword [esp + 0x48]
mov edi, dword [esp + 0x5c]
mov esi, dword [esp + 0x30]
dec ebp
inc ebp
jmp 0x550231
mov ecx, dword [esp + 0xb8]
mov edx, dword [esp + 0xbc]
mov eax, dword [esp + 0x38]
mov dword [ecx], esi
mov ecx, dword [esp + 0xac]
mov dword [edx], eax
mov edx, dword [esp + 0xb0]
pop edi
mov dword [ecx], ebx
pop esi
mov dword [edx], ebp
pop ebp
mov eax, 1
pop ebx
add esp, 0x90
ret 0x24
cmp byte [ebp + 1], 0x3a
mov eax, str.POSIX_named_classes_are_supported_only_within_a_class
je 0x551c0a
mov eax, 0x58a630
mov ecx, dword [esp + 0xb4]
mov dword [ecx], eax
jmp 0x551c35
mov edx, dword [esp + 0xb4]
mov dword [edx], str.POSIX_collating_elements_are_not_supported
jmp 0x551c35
mov eax, dword [esp + 0xb4]
mov dword [eax], str.unknown_POSIX_class_name
mov ebp, dword [esp + 0x10]
mov ecx, dword [esp + 0xb0]
pop edi
pop esi
mov dword [ecx], ebp
pop ebp
xor eax, eax
pop ebx
add esp, 0x90
ret 0x24
mov ecx, dword [esp + 0xb4]
mov dword [ecx], str.invalid_escape_sequence_in_character_class
jmp 0x551c35
mov edx, dword [esp + 0xb4]
mov dword [edx], str.range_out_of_order_in_character_class
jmp 0x551c35
mov eax, dword [esp + 0xb4]
mov dword [eax], str.nothing_to_repeat
jmp 0x551c35
mov ecx, dword [esp + 0xb4]
mov dword [ecx], str.internal_error:_unexpected_repeat
jmp 0x551c35
mov edx, dword [esp + 0xb4]
mov dword [edx], str.invalid_condition____0_
jmp 0x551c35
mov eax, dword [esp + 0xb4]
mov dword [eax], str.number_after___C_is___255
jmp 0x551c35
mov ecx, dword [esp + 0xb4]
mov dword [ecx], str.two_named_groups_have_the_same_name
jmp 0x551c35
mov edx, dword [esp + 0xb4]
mov dword [edx], 0x58a790
jmp 0x551c35
mov eax, dword [esp + 0xb4]
mov dword [eax], 0x58a7b8
jmp 0x551c31
mov ecx, dword [esp + 0xb4]
mov dword [ecx], str.recursive_call_could_loop_indefinitely
jmp 0x551c31
mov edx, dword [esp + 0xb4]
mov dword [edx], str.conditional_group_contains_more_than_two_branches
jmp 0x551c31
mov eax, dword [esp + 0xb4]
mov dword [eax], str.missing__
jmp 0x551c35