Function at 0x3016ec00
Capabilities:
Authenticate hmac
Encode data using base64
Parse credit card information
Parse pe header
Resolve function by parsing pe exports

Disassembly:
sub esp, 0xe4
mov eax, dword [0x302a3bc0]
mov dword [esp + 0xe0], eax
push ebx
push ebp
push esi
push edi
mov eax, dword [esp + 0xf8]
mov ecx, dword [eax]
mov eax, dword [esp + 0xfc]
mov ebx, dword [eax]
mov eax, dword [esp + 0x100]
mov esi, dword [eax]
mov eax, ecx
shr eax, 0xb
and eax, 1
mov dword [esp + 0x38], eax
mov eax, ecx
shr eax, 9
and eax, 1
mov dword [esp + 0x94], eax
xor eax, 1
mov dword [esp + 0x98], eax
mov eax, 0xfffffffe
xor edx, edx
mov dword [esp + 0x50], eax
mov dword [esp + 0x60], eax
mov dword [esp + 0x4c], eax
mov dword [esp + 0x3c], eax
mov eax, ecx
xor ebp, ebp
and eax, 1
mov edi, ebx
shl eax, 8
mov dword [esp + 0x44], edx
mov dword [esp + 0x34], edx
mov dword [esp + 0x28], ecx
mov dword [esp + 0x90], edx
mov dword [esp + 0x68], edx
mov dword [esp + 0x14], ebx
mov dword [esp + 0x74], edi
mov dword [esp + 0x9c], ebx
mov dword [esp + 0x5c], edx
mov dword [esp + 0x88], edx
mov dword [esp + 0x18], ebp
mov dword [esp + 0x64], edx
mov dword [esp + 0x6c], edx
mov dword [esp + 0x70], eax
mov eax, dword [esp + 0x118]
cmp eax, edx
mov dword [esp + 0x10], esi
movzx ecx, byte [esi]
mov dword [esp + 0x2c], edx
mov dword [esp + 0x1c], ecx
je 0x3016ed73
mov edx, dword [esp + 0x114]
mov edx, dword [edx + 0x10]
add edx, 0x7f6
cmp ebx, edx
ja 0x30171da4
cmp ebx, edi
jae 0x3016ecfa
mov dword [esp + 0x14], edi
mov ebx, edi
mov edi, dword [esp + 0x74]
mov eax, dword [eax]
mov edx, ebx
sub edx, edi
mov edi, 0x7fffffeb
sub edi, eax
cmp edi, edx
jl 0x30171db6
mov edi, dword [esp + 0x74]
mov edx, dword [esp + 0x118]
sub eax, edi
add eax, ebx
test ebp, ebp
mov dword [edx], eax
je 0x3016ed60
mov edi, dword [esp + 0x9c]
cmp ebp, edi
jbe 0x3016ed6d
mov eax, ebx
sub eax, ebp
push eax
push ebp
push edi
call fcn.300fcf1d
mov esi, dword [esp + 0x1c]
mov ecx, edi
sub ecx, ebp
add esp, 0xc
add ebx, ecx
mov ecx, dword [esp + 0x1c]
mov dword [esp + 0x14], ebx
mov dword [esp + 0x18], edi
mov ebp, edi
mov dword [esp + 0x74], ebx
jmp 0x3016ed8e
mov edx, dword [esp + 0x9c]
mov dword [esp + 0x14], edx
mov ebx, edx
mov dword [esp + 0x74], ebx
jmp 0x3016ed8e
mov eax, dword [esp + 0x114]
mov edx, dword [eax + 0x10]
mov edi, dword [eax + 0x20]
add edx, 0x7f6
cmp edi, edx
ja 0x30171dc8
mov eax, dword [esp + 0x5c]
test eax, eax
je 0x3016ef1e
test ecx, ecx
je 0x3016ef1e
cmp ecx, 0x5c
jne 0x3016edc2
cmp byte [esi + 1], 0x45
jne 0x3016edc2
mov edi, dword [esp + 0x74]
inc esi
inc esi
mov dword [esp + 0x5c], 0
xor edx, edx
jmp 0x3016ecba
mov ebp, dword [esp + 0x64]
test ebp, ebp
mov edi, dword [esp + 0x114]
je 0x3016ee02
mov eax, dword [esp + 0x118]
test eax, eax
jne 0x3016edfa
xor edx, edx
mov dh, byte [ebp + 2]
mov eax, esi
mov dl, byte [ebp + 3]
sub eax, edx
sub eax, dword [edi + 0x18]
mov edx, eax
sar edx, 8
mov byte [ebp + 4], dl
mov byte [ebp + 5], al
mov esi, dword [esp + 0x10]
mov dword [esp + 0x64], 0
mov eax, dword [esp + 0x28]
test ah, 0x40
je case.0x3016f0e0.1
mov byte [ebx], 0x52
mov byte [ebx + 1], 0xff
mov ebp, dword [edi + 0x18]
mov dword [esp + 0x64], ebx
inc ebx
mov eax, esi
mov edx, eax
inc ebx
sub edx, ebp
sar edx, 8
mov byte [ebx], dl
sub al, byte [edi + 0x18]
mov byte [ebx + 1], al
mov byte [ebx + 2], 0
mov byte [ebx + 3], 0
mov esi, dword [esp + 0x10]
add ebx, 4
mov dword [esp + 0x14], ebx
mov edx, dword [esp + 0x38]
test edx, edx
mov eax, 1
mov byte [esp + 0xc0], cl
je 0x3016ee8a
cmp ecx, 0xc0
jl 0x3016ee8a
mov dl, byte [esi + 1]
inc esi
and dl, 0xc0
cmp dl, 0x80
jne 0x3016ee8a
jmp 0x3016ee70
mov dword [esp + 0x10], esi
mov cl, byte [esi]
mov byte [esp + eax + 0xc0], cl
mov dl, byte [esi + 1]
inc eax
inc esi
and dl, 0xc0
cmp dl, 0x80
je 0x3016ee70
test byte [esp + 0x28], 1
setne cl
add cl, 0x1b
mov dword [esp + 0x18], ebx
mov byte [ebx], cl
inc ebx
xor esi, esi
test eax, eax
mov dword [esp + 0x14], ebx
jle 0x3016eeb9
mov dl, byte [esp + esi + 0xc0]
mov byte [ebx], dl
inc ebx
inc esi
cmp esi, eax
jl 0x3016eea6
mov dword [esp + 0x14], ebx
mov cl, byte [esp + 0xc0]
cmp cl, 0xd
je 0x3016eeca
cmp cl, 0xa
jne 0x3016eed1
or dword [edi + 0x3c], 0x4000000
mov edx, dword [esp + 0x3c]
cmp edx, 0xfffffffe
jne 0x30171d50
mov esi, dword [esp + 0x4c]
or edx, 0xffffffff
cmp eax, 1
mov dword [esp + 0x60], edx
mov dword [esp + 0x50], esi
je 0x30171d19
mov esi, dword [esp + 0x70]
test esi, esi
je 0x30171d19
mov esi, dword [esp + 0x10]
mov ebp, dword [esp + 0x18]
mov edi, dword [esp + 0x74]
mov dword [esp + 0x4c], edx
mov dword [esp + 0x3c], edx
inc esi
xor edx, edx
jmp 0x3016ecba
cmp ecx, 0x2a
je 0x3016efb1
cmp ecx, 0x2b
je 0x3016efb1
cmp ecx, 0x3f
je 0x3016efb1
cmp ecx, 0x7b
jne 0x3016ef4a
lea eax, [esi + 1]
call fcn.3016d830
test eax, eax
mov ecx, dword [esp + 0x1c]
jne 0x3016efb1
mov eax, dword [esp + 0x64]
test eax, eax
mov dword [esp + 0x24], 0
je 0x3016efb9
mov eax, dword [esp + 0x90]
mov edx, eax
dec eax
test edx, edx
mov dword [esp + 0x90], eax
jg 0x3016efb9
mov eax, dword [esp + 0x118]
test eax, eax
jne 0x3016efe2
mov edi, dword [esp + 0x64]
xor edx, edx
mov dh, byte [edi + 2]
mov eax, esi
mov esi, dword [esp + 0x64]
mov dword [esp + 0x64], 0
mov dl, byte [edi + 3]
mov edi, dword [esp + 0x114]
sub eax, edx
sub eax, dword [edi + 0x18]
mov edx, eax
sar edx, 8
mov byte [esi + 4], dl
mov byte [esi + 5], al
mov esi, dword [esp + 0x10]
jmp 0x3016efc0
mov dword [esp + 0x24], 1
mov edi, dword [esp + 0x114]
test byte [esp + 0x28], 8
je 0x3016f08b
cmp ecx, 0x100
jge 0x3016eff3
mov eax, dword [edi + 0xc]
test byte [ecx + eax], 1
jne 0x30170112
jmp 0x3016f02a
mov edi, dword [esp + 0x114]
mov dword [esp + 0x64], 0
jmp 0x3016efc0
cmp cx, 0xa0
je 0x30170112
cmp cx, 0x200b
je 0x30170112
cmp cx, 0x2060
je 0x30170112
cmp cx, 0x3000
je 0x30170112
cmp cx, 0xfeff
je 0x30170112
cmp ecx, 0x23
jne 0x3016f08b
inc esi
mov dword [esp + 0x10], esi
mov al, byte [esi]
test al, al
je 0x3016f089
lea ebx, [ebx]
mov ecx, dword [edi + 0x4c]
test ecx, ecx
je 0x3016f0e7
mov eax, dword [edi + 0x1c]
cmp esi, eax
jae 0x3016f10d
push dword [esp + 0x38]
lea edx, [edi + 0x50]
push edx
push eax
push ecx
push esi
call fcn.30194ee0
mov esi, dword [esp + 0x24]
add esp, 0x14
test eax, eax
je 0x3016f10d
mov ecx, dword [edi + 0x50]
lea esi, [esi + ecx - 1]
mov dword [esp + 0x10], esi
cmp byte [esi], 0
jne 0x30170112
xor ecx, ecx
mov eax, dword [esp + 0x28]
test ah, 0x40
je 0x3016f0d0
mov eax, dword [esp + 0x24]
test eax, eax
jne 0x3016f0d0
mov byte [ebx], 0x52
mov byte [ebx + 1], 0xff
mov dword [esp + 0x64], ebx
mov eax, esi
mov esi, dword [edi + 0x18]
inc ebx
mov edx, eax
sub edx, esi
inc ebx
sar edx, 8
mov byte [ebx], dl
sub al, byte [edi + 0x18]
mov byte [ebx + 1], al
mov byte [ebx + 2], 0
mov byte [ebx + 3], 0
mov esi, dword [esp + 0x10]
add ebx, 4
mov dword [esp + 0x14], ebx
cmp ecx, 0x7c
ja case.0x3016f0e0.1
movzx eax, byte [ecx + 0x30172100]
jmp dword [eax*4 + 0x301720d0]
mov ecx, dword [edi + 0x50]
mov edx, dword [edi + 0x1c]
sub edx, ecx
cmp esi, edx
ja 0x3016f10d
cmp al, byte [edi + 0x54]
jne 0x3016f10d
cmp ecx, 1
je 0x3016f075
mov al, byte [esi + 1]
cmp al, byte [edi + 0x55]
je 0x3016f075
inc esi
mov dword [esp + 0x10], esi
mov al, byte [esi]
test al, al
jne 0x3016f040
jmp 0x3016f089
test byte [esp + 0x28], 2
je 0x3016f137
cmp dword [esp + 0x3c], 0xfffffffe
jne 0x3016f137
mov dword [esp + 0x3c], 0xffffffff
mov edi, dword [esp + 0x74]
mov byte [ebx], 0x19
mov esi, dword [esp + 0x10]
inc ebx
mov dword [esp + 0x18], 0
mov ebp, dword [esp + 0x18]
inc esi
mov dword [esp + 0x14], ebx
xor edx, edx
jmp 0x3016ecba
mov edi, dword [esp + 0x74]
mov byte [ebx], 0x1a
mov esi, dword [esp + 0x10]
inc ebx
mov dword [esp + 0x18], 0
mov ebp, dword [esp + 0x18]
inc esi
mov dword [esp + 0x14], ebx
xor edx, edx
jmp 0x3016ecba
mov eax, dword [esp + 0x3c]
cmp eax, 0xfffffffe
jne 0x3016f18f
or eax, 0xffffffff
mov dword [esp + 0x3c], eax
mov ecx, dword [esp + 0x4c]
mov edi, dword [esp + 0x74]
mov byte [ebx], 0xc
mov esi, dword [esp + 0x10]
mov dword [esp + 0x18], ebx
mov ebp, dword [esp + 0x18]
inc ebx
inc esi
mov dword [esp + 0x60], eax
mov dword [esp + 0x50], ecx
mov dword [esp + 0x14], ebx
xor edx, edx
jmp 0x3016ecba
mov al, byte [esi + 1]
cmp al, 0x3a
mov dword [esp + 0x18], ebx
je 0x3016f1ce
cmp al, 0x2e
je 0x3016f1ce
cmp al, 0x3d
jne 0x3016f1ea
lea edx, [esp + 0x78]
push edi
push edx
mov eax, esi
call fcn.3016e240
mov esi, dword [esp + 0x18]
add esp, 8
test eax, eax
jne 0x30171e5a
xor ebp, ebp
mov dword [esp + 0x30], ebp
inc esi
mov dword [esp + 0x10], esi
movzx edi, byte [esi]
cmp edi, 0x5c
jne 0x3016f222
mov al, byte [esi + 1]
inc esi
cmp al, 0x45
je 0x3016f1f0
push 3
push 0x30251560
push esi
call fcn.300fcf1d
mov esi, dword [esp + 0x1c]
add esp, 0xc
test eax, eax
jne 0x3016f232
add esi, 3
jmp 0x3016f1f0
test ebp, ebp
jne 0x3016f232
cmp edi, 0x5e
jne 0x3016f232
mov ebp, 1
jmp 0x3016f1ec
xor ecx, ecx
mov dword [esp + 0xa0], ecx
mov dword [esp + 0xa4], ecx
mov dword [esp + 0xa8], ecx
mov dword [esp + 0xac], ecx
mov dword [esp + 0xb0], ecx
mov dword [esp + 0xb4], ecx
xor eax, eax
xor edx, edx
cmp edi, 0x5d
mov dword [esp + 0xb8], ecx
mov dword [esp + 0x20], eax
mov dword [esp + 0x1c], 0xffffffff
mov dword [esp + 0xbc], ecx
mov dword [esp + 0x50], edx
lea ebp, [ebx + 4]
jne 0x3016f299
mov dword [esp + 0x1c], eax
mov dword [esp + 0x20], 1
jmp 0x3016fa71
cmp edi, eax
je 0x30171ebb
mov eax, dword [esp + 0x38]
test eax, eax
je 0x3016f2fa
cmp edi, 0x7f
jle 0x3016f2fa
movzx edi, byte [esi]
cmp edi, 0xc0
jl 0x3016f2fa
mov edx, edi
and edx, 0x3f
movzx edx, byte [edx + 0x30259078]
mov eax, dword [edx*4 + 0x3025905c]
and eax, edi
lea ecx, [edx + edx*2]
shl ecx, 1
shl eax, cl
mov edi, eax
mov eax, 1
cmp edx, eax
jl 0x3016f2f4
xor ebx, ebx
mov bl, byte [eax + esi]
sub ecx, 6
and ebx, 0x3f
shl ebx, cl
or edi, ebx
inc eax
cmp eax, edx
jle 0x3016f2e0
add esi, edx
mov dword [esp + 0x10], esi
mov eax, dword [esp + 0x5c]
test eax, eax
je 0x3016f323
cmp edi, 0x5c
jne 0x3016f634
cmp byte [esi + 1], 0x45
jne 0x3016f634
mov dword [esp + 0x5c], 0
inc esi
jmp 0x3016fa44
cmp edi, 0x5b
jne 0x3016f5ea
mov al, byte [esi + 1]
cmp al, 0x3a
je 0x3016f33f
cmp al, 0x2e
je 0x3016f33f
cmp al, 0x3d
jne 0x3016f634
mov ebx, dword [esp + 0x114]
lea ecx, [esp + 0x78]
push ebx
push ecx
mov eax, esi
call fcn.3016e240
add esp, 8
test eax, eax
je 0x3016f630
mov esi, dword [esp + 0x10]
cmp byte [esi + 1], 0x3a
mov edx, dword [ebx + 8]
mov dword [esp + 0x24], 0
mov dword [esp + 0x48], edx
jne 0x30171e7a
add esi, 2
mov dword [esp + 0x10], esi
cmp byte [esi], 0x5e
jne 0x3016f394
inc esi
mov dword [esp + 0x24], 1
mov dword [esp + 0x10], esi
mov edi, dword [esp + 0x78]
sub edi, esi
mov ebx, esi
call fcn.3016e290
test eax, eax
jl 0x30171e8c
test byte [esp + 0x28], 1
je 0x3016f3b7
cmp eax, 2
jg 0x3016f3b7
xor eax, eax
mov edx, dword [esp + 0x48]
lea eax, [eax + eax*2]
mov esi, dword [eax*4 + 0x30251318]
add esi, edx
mov ecx, 8
lea edi, [esp + 0xc8]
rep movsd dword es:[edi], dword [esi]
mov ecx, dword [eax*4 + 0x3025131c]
test ecx, ecx
mov esi, dword [eax*4 + 0x30251320]
jl 0x3016f4af
xor eax, eax
test esi, esi
lea ecx, [ecx + edx + 1]
jl 0x3016f450
jmp 0x3016f400
mov dl, byte [ecx + eax - 1]
mov bl, byte [esp + eax + 0xc8]
or bl, dl
mov dl, byte [ecx + eax]
mov byte [esp + eax + 0xc8], bl
mov bl, byte [esp + eax + 0xc9]
or bl, dl
mov dl, byte [ecx + eax + 1]
mov byte [esp + eax + 0xc9], bl
mov bl, byte [esp + eax + 0xca]
or bl, dl
mov dl, byte [ecx + eax + 2]
mov byte [esp + eax + 0xca], bl
or byte [esp + eax + 0xcb], dl
add eax, 4
cmp eax, 0x20
jl 0x3016f400
jmp 0x3016f4af
mov dl, byte [ecx + eax - 1]
mov bl, byte [esp + eax + 0xc8]
not dl
and bl, dl
mov dl, byte [ecx + eax]
mov byte [esp + eax + 0xc8], bl
mov bl, byte [esp + eax + 0xc9]
not dl
and bl, dl
mov dl, byte [ecx + eax + 1]
mov byte [esp + eax + 0xc9], bl
mov bl, byte [esp + eax + 0xca]
not dl
and bl, dl
mov dl, byte [ecx + eax + 2]
mov byte [esp + eax + 0xca], bl
mov bl, byte [esp + eax + 0xcb]
not dl
and bl, dl
mov byte [esp + eax + 0xcb], bl
add eax, 4
cmp eax, 0x20
jl 0x3016f450
test esi, esi
jge 0x3016f4b5
neg esi
cmp esi, 1
jne 0x3016f4c4
and byte [esp + 0xc9], 0xc3
jmp 0x3016f4d1
cmp esi, 2
jne 0x3016f4d1
and byte [esp + 0xd3], 0x7f
mov eax, dword [esp + 0x24]
test eax, eax
je 0x3016f562
xor eax, eax
nop
mov cl, byte [esp + eax + 0xc8]
mov dl, byte [esp + eax + 0xa0]
mov bl, byte [esp + eax + 0xa1]
not cl
or dl, cl
mov cl, byte [esp + eax + 0xca]
mov byte [esp + eax + 0xa0], dl
mov dl, byte [esp + eax + 0xc9]
not dl
or bl, dl
mov dl, byte [esp + eax + 0xa2]
not cl
or dl, cl
mov byte [esp + eax + 0xa2], dl
mov dl, byte [esp + eax + 0xcb]
mov byte [esp + eax + 0xa1], bl
mov bl, byte [esp + eax + 0xa3]
not dl
or bl, dl
mov byte [esp + eax + 0xa3], bl
add eax, 4
cmp eax, 0x20
jl 0x3016f4e0
mov eax, dword [esp + 0x78]
inc eax
mov dword [esp + 0x10], eax
mov dword [esp + 0x20], 0xa
jmp case.0x3016f726.24
xor eax, eax
jmp 0x3016f570
mov cl, byte [esp + eax + 0xc8]
mov dl, byte [esp + eax + 0xa0]
mov bl, byte [esp + eax + 0xa1]
or dl, cl
mov cl, byte [esp + eax + 0xca]
mov byte [esp + eax + 0xa0], dl
mov dl, byte [esp + eax + 0xc9]
or bl, dl
mov dl, byte [esp + eax + 0xa2]
or dl, cl
mov byte [esp + eax + 0xa1], bl
mov bl, byte [esp + eax + 0xa3]
mov byte [esp + eax + 0xa2], dl
mov dl, byte [esp + eax + 0xcb]
or bl, dl
mov byte [esp + eax + 0xa3], bl
add eax, 4
cmp eax, 0x20
jl 0x3016f570
mov eax, dword [esp + 0x78]
inc eax
mov dword [esp + 0x10], eax
mov dword [esp + 0x20], 0xa
jmp case.0x3016f726.24
cmp edi, 0x5c
jne 0x3016f634
mov ecx, dword [esp + 0x28]
mov esi, dword [esp + 0x114]
mov edx, dword [esi + 0x30]
mov ebx, dword [esp + 0x104]
push 1
push ecx
push edx
lea eax, [esp + 0x1c]
push ebx
push eax
call fcn.3016d3f0
mov edi, eax
mov eax, dword [ebx]
add esp, 0x14
test eax, eax
jne 0x30171397
mov eax, edi
neg eax
cmp eax, 5
jne 0x3016f69c
mov edi, 8
mov esi, dword [esp + 0x10]
cmp byte [esi + 1], 0x5c
mov eax, dword [esp + 0x5c]
jne 0x3016f65b
mov edi, edi
cmp byte [esi + 2], 0x45
jne 0x3016f657
add esi, 2
mov dword [esp + 0x10], esi
mov cl, byte [esi + 1]
xor eax, eax
cmp cl, 0x5c
je 0x3016f640
mov dword [esp + 0x5c], eax
test eax, eax
mov dword [esp + 0x60], esi
jne 0x3016ff16
cmp byte [esi + 1], 0x2d
jne 0x3016ff16
add esi, 2
mov dword [esp + 0x10], esi
cmp byte [esi], 0x5c
jne 0x3016fd0e
cmp byte [esi + 1], 0x45
jne 0x3016fcd7
add esi, 2
mov dword [esp + 0x10], esi
cmp byte [esi], 0x5c
je 0x3016f681
jmp 0x3016fd0e
cmp eax, 0x15
jne 0x3016f6a8
mov edi, 0x58
jmp 0x3016f630
cmp eax, 0x10
jne 0x3016f6b7
mov edi, 0x52
jmp 0x3016f630
cmp eax, 0x19
jne 0x3016f6e1
mov esi, dword [esp + 0x10]
cmp byte [esi + 1], 0x5c
jne 0x3016f6d4
cmp byte [esi + 2], 0x45
jne 0x3016f6d4
add esi, 2
jmp 0x3016fa44
mov dword [esp + 0x5c], 1
jmp 0x3016fa44
cmp eax, 0x18
je case.0x3016f726.24
test edi, edi
jge 0x3016f630
mov ecx, dword [esi + 8]
mov edx, dword [esp + 0x20]
mov esi, 2
add edx, esi
mov dword [esp + 0x20], edx
mov edx, dword [esp + 0x118]
test edx, edx
jne 0x3016f93e
lea edx, [eax - 6]
cmp edx, 0x12
ja case.0x3016f726.12
movzx edx, byte [edx + 0x301721a0]
jmp dword [edx*4 + 0x30172180]
lea eax, [esp + 0xa1]
add ecx, 0x41
mov esi, 8
lea esp, [esp]
mov dl, byte [ecx - 1]
mov bl, byte [eax - 1]
or bl, dl
mov dl, byte [ecx]
mov byte [eax - 1], bl
mov bl, byte [eax]
or bl, dl
mov dl, byte [ecx + 1]
mov byte [eax], bl
mov bl, byte [eax + 1]
or bl, dl
mov dl, byte [ecx + 2]
mov byte [eax + 1], bl
or byte [eax + 2], dl
add ecx, 4
add eax, 4
dec esi
jne 0x3016f740
jmp case.0x3016f726.24
lea eax, [esp + 0xa1]
add ecx, 0x41
mov esi, 8
mov dl, byte [ecx - 1]
mov bl, byte [eax - 1]
not dl
or bl, dl
mov dl, byte [ecx]
mov byte [eax - 1], bl
mov bl, byte [eax]
not dl
or bl, dl
mov dl, byte [ecx + 1]
mov byte [eax], bl
mov bl, byte [eax + 1]
not dl
or bl, dl
mov dl, byte [ecx + 2]
mov byte [eax + 1], bl
mov bl, byte [eax + 2]
not dl
or bl, dl
mov byte [eax + 2], bl
add ecx, 4
add eax, 4
dec esi
jne 0x3016f781
mov dword [esp + 0x2c], 1
jmp case.0x3016f726.24
lea eax, [esp + 0xa1]
add ecx, 0xa1
mov esi, 8
lea ebx, [ebx]
mov dl, byte [ecx - 1]
mov bl, byte [eax - 1]
or bl, dl
mov dl, byte [ecx]
mov byte [eax - 1], bl
mov bl, byte [eax]
or bl, dl
mov dl, byte [ecx + 1]
mov byte [eax], bl
mov bl, byte [eax + 1]
or bl, dl
mov dl, byte [ecx + 2]
mov byte [eax + 1], bl
or byte [eax + 2], dl
add ecx, 4
add eax, 4
dec esi
jne 0x3016f7e0
jmp case.0x3016f726.24
lea eax, [esp + 0xa1]
add ecx, 0xa1
mov esi, 8
mov dl, byte [ecx - 1]
mov bl, byte [eax - 1]
not dl
or bl, dl
mov dl, byte [ecx]
mov byte [eax - 1], bl
mov bl, byte [eax]
not dl
or bl, dl
mov dl, byte [ecx + 1]
mov byte [eax], bl
mov bl, byte [eax + 1]
not dl
or bl, dl
mov dl, byte [ecx + 2]
mov byte [eax + 1], bl
mov bl, byte [eax + 2]
not dl
or bl, dl
mov byte [eax + 2], bl
add ecx, 4
add eax, 4
dec esi
jne 0x3016f824
mov dword [esp + 0x2c], 1
jmp case.0x3016f726.24
mov edi, ecx
lea eax, [esp + 0xa0]
xor esi, esi
sub edi, eax
jmp 0x3016f880
mov bl, byte [esp + esi + 0xa0]
lea eax, [esp + esi + 0xa0]
mov dl, byte [edi + eax]
or bl, dl
mov dl, byte [ecx + esi + 1]
mov byte [eax], bl
mov bl, byte [eax + 1]
or bl, dl
mov dl, byte [ecx + esi + 2]
mov byte [eax + 1], bl
mov bl, byte [eax + 2]
or bl, dl
mov dl, byte [ecx + esi + 3]
mov byte [eax + 2], bl
mov bl, byte [eax + 3]
or bl, dl
add esi, 4
cmp esi, 0x20
mov byte [eax + 3], bl
jl 0x3016f880
and byte [esp + 0xa1], 0xf7
jmp case.0x3016f726.24
mov edi, ecx
lea eax, [esp + 0xa0]
xor esi, esi
sub edi, eax
jmp 0x3016f8e0
mov bl, byte [esp + esi + 0xa0]
lea eax, [esp + esi + 0xa0]
mov dl, byte [edi + eax]
not dl
or bl, dl
mov dl, byte [ecx + esi + 1]
mov byte [eax], bl
mov bl, byte [eax + 1]
not dl
or bl, dl
mov dl, byte [ecx + esi + 2]
mov byte [eax + 1], bl
mov bl, byte [eax + 2]
not dl
or bl, dl
mov dl, byte [ecx + esi + 3]
mov byte [eax + 2], bl
mov bl, byte [eax + 3]
not dl
or bl, dl
add esi, 4
cmp esi, 0x20
mov byte [eax + 3], bl
jl 0x3016f8e0
or byte [esp + 0xa1], 8
mov dword [esp + 0x2c], 1
jmp case.0x3016f726.24
cmp edi, 0xfffffff9
je case.0x3016f726.24
cmp edi, 0xfffffffa
je case.0x3016f726.24
cmp edi, 0xfffffff5
je case.0x3016f726.24
cmp edi, 0xfffffff6
je case.0x3016f726.24
cmp edi, 0xfffffff7
je case.0x3016f726.24
cmp edi, 0xfffffff8
je case.0x3016f726.24
cmp eax, 0x12
jne 0x3016fa9d
mov bl, byte [esp + 0xa1]
mov dl, byte [esp + 0xa4]
mov cl, byte [esp + 0xb4]
mov eax, dword [esp + 0x38]
or bl, 2
or dl, 1
or cl, 1
test eax, eax
mov byte [esp + 0xa1], bl
mov byte [esp + 0xa4], dl
mov byte [esp + 0xb4], cl
je case.0x3016f726.24
mov byte [ebp], 1
inc ebp
push ebp
push 0x1680
mov dword [esp + 0x58], 1
call fcn.301953f0
add ebp, eax
mov byte [ebp], 1
inc ebp
push ebp
push 0x180e
call fcn.301953f0
add ebp, eax
mov byte [ebp], 2
inc ebp
push ebp
push 0x2000
call fcn.301953f0
add ebp, eax
push ebp
push 0x200a
call fcn.301953f0
add ebp, eax
mov byte [ebp], 1
inc ebp
push ebp
push 0x202f
call fcn.301953f0
add ebp, eax
mov byte [ebp], 1
inc ebp
push ebp
push 0x205f
call fcn.301953f0
add ebp, eax
mov byte [ebp], 1
inc ebp
push ebp
push 0x3000
call fcn.301953f0
add esp, 0x38
add ebp, eax
mov esi, dword [esp + 0x10]
inc esi
mov dword [esp + 0x10], esi
movzx edi, byte [esi]
test edi, edi
je 0x30171ebb
cmp edi, 0x5d
jne 0x3016f2a1
mov eax, dword [esp + 0x5c]
test eax, eax
jne 0x3016f2a1
mov ebx, dword [esp + 0x14]
mov edx, dword [esp + 0x50]
cmp dword [esp + 0x30], 0
mov eax, dword [esp + 0x18]
mov cl, byte [esp + 0xa1]
mov esi, dword [esp + 0x3c]
mov edi, dword [esp + 0x114]
je 0x3016ffbc
and cl, 0x24
cmp cl, 0x24
jmp 0x3016ffbf
cmp eax, 0x11
jne 0x3016fbcb
xor ecx, ecx
mov eax, ecx
dec eax
mov edx, 0xff
je 0x3016fac3
sub eax, 3
je 0x3016fabc
sub eax, 0x10
jne 0x3016fac8
mov edx, 0xfe
jmp 0x3016fac8
mov edx, 0xfd
or byte [esp + ecx + 0xa0], dl
inc ecx
cmp ecx, 0x20
jl 0x3016faa8
mov eax, dword [esp + 0x38]
test eax, eax
je case.0x3016f726.24
mov byte [ebp], 2
inc ebp
push ebp
push 0x100
mov dword [esp + 0x58], 1
call fcn.301953f0
add ebp, eax
push ebp
push 0x167f
call fcn.301953f0
add ebp, eax
mov byte [ebp], 2
inc ebp
push ebp
push 0x1681
call fcn.301953f0
add ebp, eax
push ebp
push 0x180d
call fcn.301953f0
add ebp, eax
mov byte [ebp], 2
inc ebp
push ebp
push 0x180f
call fcn.301953f0
add ebp, eax
push ebp
push 0x1fff
call fcn.301953f0
add ebp, eax
mov byte [ebp], 2
inc ebp
push ebp
push 0x200b
call fcn.301953f0
add ebp, eax
push ebp
push 0x202e
call fcn.301953f0
add ebp, eax
add esp, 0x40
mov byte [ebp], 2
inc ebp
push ebp
push 0x2030
call fcn.301953f0
add ebp, eax
push ebp
push 0x205e
call fcn.301953f0
add ebp, eax
mov byte [ebp], 2
inc ebp
push ebp
push 0x2060
call fcn.301953f0
add ebp, eax
push ebp
push 0x2fff
call fcn.301953f0
add ebp, eax
mov byte [ebp], 2
inc ebp
push ebp
push 0x3001
call fcn.301953f0
add ebp, eax
push ebp
push SysReAllocString
call fcn.301953f0
add esp, 0x30
jmp 0x3016fa3e
cmp eax, 0x14
jne 0x3016fc2b
mov dl, byte [esp + 0xa1]
mov cl, byte [esp + 0xb0]
mov eax, dword [esp + 0x38]
or dl, 0x3c
or cl, 0x20
test eax, eax
mov byte [esp + 0xa1], dl
mov byte [esp + 0xb0], cl
je case.0x3016f726.24
mov byte [ebp], 2
inc ebp
push ebp
push 0x2028
mov dword [esp + 0x58], 1
call fcn.301953f0
add ebp, eax
push ebp
push 0x2029
call fcn.301953f0
add esp, 0x10
jmp 0x3016fa3e
cmp eax, 0x13
jne 0x3016fcb6
xor eax, eax
mov ecx, eax
dec ecx
mov edx, 0xff
je 0x3016fc4c
sub ecx, 0xf
jne 0x3016fc51
mov edx, 0xdf
jmp 0x3016fc51
mov edx, 0xc3
or byte [esp + eax + 0xa0], dl
inc eax
cmp eax, 0x20
jl 0x3016fc36
mov eax, dword [esp + 0x38]
test eax, eax
je case.0x3016f726.24
mov byte [ebp], 2
inc ebp
push ebp
push 0x100
mov dword [esp + 0x58], 1
call fcn.301953f0
add ebp, eax
push ebp
push 0x2027
call fcn.301953f0
add ebp, eax
mov byte [ebp], 2
inc ebp
push ebp
push 0x2029
call fcn.301953f0
add ebp, eax
push ebp
push SysReAllocString
call fcn.301953f0
add esp, 0x20
jmp 0x3016fa3e
test byte [esp + 0x28], 0x40
jne 0x30171e9e
mov eax, dword [esp + 0x20]
sub eax, esi
mov esi, dword [esp + 0x10]
movzx edi, byte [esi]
mov dword [esp + 0x20], eax
jmp 0x3016f634
cmp byte [esi], 0x5c
jne 0x3016fd0e
lea esp, [esp]
cmp byte [esi + 1], 0x51
jne 0x3016fd0e
add esi, 2
mov dword [esp + 0x10], esi
cmp byte [esi], 0x5c
jne 0x3016fd06
cmp byte [esi + 1], 0x45
jne 0x3016fd06
add esi, 2
mov dword [esp + 0x10], esi
cmp byte [esi], 0x5c
je 0x3016fce0
jmp 0x3016fd0e
mov dword [esp + 0x5c], 1
mov al, byte [esi]
test al, al
je 0x3016ff0e
mov ecx, dword [esp + 0x5c]
test ecx, ecx
jne 0x3016fd28
cmp al, 0x5d
je 0x3016ff0e
mov ecx, dword [esp + 0x38]
test ecx, ecx
movzx ebx, al
je 0x3016fd96
cmp ebx, 0xc0
jl 0x3016fd96
mov eax, ebx
and eax, 0x3f
movzx eax, byte [eax + 0x30259078]
mov edx, dword [eax*4 + 0x3025905c]
and edx, ebx
lea ecx, [eax + eax*2]
shl ecx, 1
shl edx, cl
mov dword [esp + 0x48], eax
mov ebx, edx
mov edx, 1
cmp eax, edx
mov dword [esp + 0x24], edx
jl 0x3016fd90
lea ebx, [ebx]
xor eax, eax
mov al, byte [edx + esi]
mov edx, dword [esp + 0x24]
sub ecx, 6
and eax, 0x3f
shl eax, cl
or ebx, eax
mov eax, dword [esp + 0x48]
inc edx
cmp edx, eax
mov dword [esp + 0x24], edx
jle 0x3016fd70
add esi, eax
mov dword [esp + 0x10], esi
mov eax, dword [esp + 0x5c]
test eax, eax
jne 0x3016fe04
cmp ebx, 0x5c
jne 0x3016fe04
mov ecx, dword [esp + 0x28]
mov edx, dword [esp + 0x114]
mov eax, dword [edx + 0x30]
mov esi, dword [esp + 0x104]
push 1
push ecx
push eax
lea ecx, [esp + 0x1c]
push esi
push ecx
call fcn.3016d3f0
mov ebx, eax
mov eax, dword [esi]
add esp, 0x14
test eax, eax
jne 0x30171397
test ebx, ebx
jge 0x3016fe00
cmp ebx, 0xfffffffb
jne 0x3016fde6
mov ebx, 8
jmp 0x3016fe00
cmp ebx, 0xffffffeb
jne 0x3016fdf2
mov ebx, 0x58
jmp 0x3016fe00
cmp ebx, 0xfffffff0
jne 0x3016ff0e
mov ebx, 0x52
mov esi, dword [esp + 0x10]
cmp ebx, edi
jl 0x30171ea9
je 0x3016ff16
mov eax, dword [esp + 0x38]
test eax, eax
je 0x3016fe6e
cmp ebx, 0xff
jg 0x3016fe2e
test byte [esp + 0x28], 1
je 0x3016fe6e
cmp ebx, 0x7f
jle 0x3016fe6e
mov byte [ebp], 2
inc ebp
push ebp
push edi
mov dword [esp + 0x58], 1
call fcn.301953f0
add ebp, eax
push ebp
push ebx
call fcn.301953f0
add ebp, eax
mov al, byte [esp + 0x38]
add esp, 0x10
test al, 1
je case.0x3016f726.24
cmp edi, 0x7f
jg case.0x3016f726.24
mov esi, dword [esp + 0x10]
mov ebx, 0x7f
mov eax, dword [esp + 0x20]
mov edx, ebx
sub edx, edi
lea ecx, [eax + edx + 1]
mov eax, dword [esp + 0x118]
test eax, eax
mov dword [esp + 0x20], ecx
mov dword [esp + 0x1c], ebx
jne 0x3016fa44
cmp edi, ebx
jg 0x3016fa44
mov eax, dword [esp + 0x28]
and eax, 1
mov dword [esp + 0x48], eax
mov eax, edi
cdq
and edx, 7
add eax, edx
mov ecx, edi
and ecx, 7
sar eax, 3
mov dl, 1
shl dl, cl
mov cl, byte [esp + eax + 0xa0]
lea eax, [esp + eax + 0xa0]
or cl, dl
mov byte [eax], cl
mov eax, dword [esp + 0x48]
test eax, eax
je 0x3016ff04
mov eax, dword [esp + 0x114]
mov ecx, dword [eax + 4]
movzx ecx, byte [ecx + edi]
mov eax, ecx
cdq
and edx, 7
add eax, edx
and ecx, 7
sar eax, 3
mov dl, 1
shl dl, cl
mov cl, byte [esp + eax + 0xa0]
lea eax, [esp + eax + 0xa0]
or cl, dl
mov byte [eax], cl
inc edi
cmp edi, ebx
jle 0x3016fea4
jmp 0x3016fa44
mov esi, dword [esp + 0x60]
mov dword [esp + 0x10], esi
mov eax, dword [esp + 0x38]
test eax, eax
je 0x3016ff4e
cmp edi, 0xff
jg 0x3016ff32
test byte [esp + 0x28], 1
je 0x3016ff4e
cmp edi, 0x7f
jle 0x3016ff4e
mov byte [ebp], 1
inc ebp
push ebp
push edi
mov dword [esp + 0x58], 1
call fcn.301953f0
add esp, 8
jmp 0x3016fa3e
mov eax, edi
cdq
and edx, 7
add eax, edx
mov ecx, edi
and ecx, 7
sar eax, 3
mov dl, 1
shl dl, cl
mov cl, byte [esp + eax + 0xa0]
lea eax, [esp + eax + 0xa0]
or cl, dl
mov byte [eax], cl
test byte [esp + 0x28], 1
je 0x3016ffaf
mov eax, dword [esp + 0x114]
mov ecx, dword [eax + 4]
movzx edi, byte [ecx + edi]
mov eax, edi
cdq
and edx, 7
add eax, edx
mov ecx, edi
and ecx, 7
sar eax, 3
mov dl, 1
shl dl, cl
mov cl, byte [esp + eax + 0xa0]
lea eax, [esp + eax + 0xa0]
or cl, dl
mov byte [eax], cl
inc dword [esp + 0x20]
mov dword [esp + 0x1c], edi
jmp 0x3016fa44
test cl, 0x24
je 0x3016ffc8
or dword [edi + 0x3c], 0x4000000
cmp dword [esp + 0x20], 1
jne 0x3017007e
test edx, edx
jne 0x3017007e
mov edi, dword [esp + 0x38]
test edi, edi
je 0x3016fff9
mov ecx, dword [esp + 0x30]
test ecx, ecx
je 0x3016fff9
cmp dword [esp + 0x1c], 0x80
jge 0x3017007e
mov eax, dword [esp + 0x4c]
mov dword [esp + 0x50], eax
mov eax, dword [esp + 0x30]
test eax, eax
je 0x3017003c
cmp esi, 0xfffffffe
jne 0x30170015
or esi, 0xffffffff
mov dword [esp + 0x3c], esi
mov cl, byte [esp + 0x1c]
mov ebp, dword [esp + 0x18]
mov edi, dword [esp + 0x74]
mov byte [ebx], 0x1d
inc ebx
mov dword [esp + 0x60], esi
mov byte [ebx], cl
mov esi, dword [esp + 0x10]
inc ebx
inc esi
mov dword [esp + 0x14], ebx
xor edx, edx
jmp 0x3016ecba
test edi, edi
mov eax, dword [esp + 0x1c]
je 0x30170066
cmp eax, 0x7f
jle 0x30170066
lea edx, [esp + 0xc0]
push edx
push eax
call fcn.301953f0
mov edi, dword [esp + 0x11c]
add esp, 8
jmp 0x3016ee8a
mov edi, dword [esp + 0x114]
mov byte [esp + 0xc0], al
mov eax, 1
jmp 0x3016ee8a
cmp esi, 0xfffffffe
jne 0x3017008a
or esi, 0xffffffff
mov dword [esp + 0x3c], esi
test edx, edx
mov ecx, dword [esp + 0x4c]
mov dword [esp + 0x60], esi
mov dword [esp + 0x50], ecx
je 0x3017011e
mov esi, dword [esp + 0x30]
mov edx, dword [esp + 0x20]
mov byte [ebp], 0
mov byte [ebx], 0x4f
add ebx, 3
inc ebp
test esi, esi
setne cl
test edx, edx
mov byte [ebx], cl
jle 0x301700f1
or cl, 2
mov byte [ebx], cl
inc ebx
mov edx, ebp
sub edx, ebx
push edx
lea eax, [ebx + 0x20]
push ebx
push eax
call fcn.300fcf1d
mov eax, dword [esp + 0x24]
mov ecx, 8
lea esi, [esp + 0xac]
mov edi, ebx
rep movsd dword es:[edi], dword [esi]
lea ecx, [ebp + 0x20]
add esp, 0xc
mov dword [esp + 0x14], ecx
jmp 0x301700f7
mov dword [esp + 0x14], ebp
mov ecx, ebp
mov edx, ecx
sub edx, eax
sar edx, 8
sub cl, al
mov byte [eax + 1], dl
mov byte [eax + 2], cl
mov ebx, dword [esp + 0x14]
mov esi, dword [esp + 0x10]
mov ebp, dword [esp + 0x18]
mov edi, dword [esp + 0x74]
inc esi
xor edx, edx
jmp 0x3016ecba
mov eax, dword [esp + 0x30]
test eax, eax
je 0x3017016b
mov eax, dword [esp + 0x118]
mov byte [ebx], 0x4e
inc ebx
test eax, eax
jne 0x3017018a
lea esi, [esp + 0xa0]
mov eax, ebx
sub esi, ebx
mov edi, 0x20
mov cl, byte [esi + eax]
not cl
mov byte [eax], cl
inc eax
dec edi
jne 0x30170145
mov esi, dword [esp + 0x10]
mov ebp, dword [esp + 0x18]
mov edi, dword [esp + 0x74]
add ebx, 0x20
inc esi
mov dword [esp + 0x14], ebx
xor edx, edx
jmp 0x3016ecba
mov edx, dword [esp + 0x2c]
test edx, edx
setne dl
add dl, 0x4d
mov byte [ebx], dl
inc ebx
mov ecx, 8
lea esi, [esp + 0xa0]
mov edi, ebx
rep movsd dword es:[edi], dword [esi]
mov esi, dword [esp + 0x10]
mov ebp, dword [esp + 0x18]
mov edi, dword [esp + 0x74]
add ebx, 0x20
inc esi
mov dword [esp + 0x14], ebx
xor edx, edx
jmp 0x3016ecba
mov eax, dword [esp + 0x24]
test eax, eax
je case.0x3016f0e0.1
mov edi, dword [esp + 0x104]
lea eax, [esp + 0x34]
push eax
lea ecx, [esp + 0x48]
push ecx
lea eax, [esi + 1]
call fcn.3016d8c0
mov esi, eax
mov edx, edi
mov eax, dword [edx]
add esp, 8
test eax, eax
mov dword [esp + 0x10], esi
jne 0x3017139b
jmp 0x3017020d
mov dword [esp + 0x34], 0xffffffff
jmp 0x30170205
mov dword [esp + 0x44], 1
mov dword [esp + 0x34], 0xffffffff
jmp 0x3017020d
mov dword [esp + 0x34], 1
mov dword [esp + 0x44], 0
test ebp, ebp
je 0x30171ecd
mov eax, dword [esp + 0x44]
test eax, eax
jne 0x3017022d
mov eax, dword [esp + 0x60]
mov ecx, dword [esp + 0x50]
mov dword [esp + 0x3c], eax
mov dword [esp + 0x4c], ecx
mov eax, dword [esp + 0x34]
mov ecx, dword [esp + 0x44]
xor edx, edx
cmp ecx, eax
sete dl
xor edi, edi
mov dword [esp + 0x40], ebp
mov al, byte [esi + 1]
mov dword [esp + 0x24], edi
mov dword [esp + 0x30], edi
dec edx
and edx, 0x200
cmp al, 0x2b
mov dword [esp + 0x8c], edx
jne 0x30170277
mov dword [esp + 0x20], edi
mov edx, dword [esp + 0x20]
mov edi, 1
inc esi
mov dword [esp + 0x30], edi
mov dword [esp + 0x10], esi
jmp 0x30170294
cmp al, 0x3f
jne 0x30170289
mov edx, dword [esp + 0x98]
inc esi
mov dword [esp + 0x10], esi
jmp 0x30170290
mov edx, dword [esp + 0x94]
mov dword [esp + 0x20], edx
mov al, byte [ebp]
cmp al, 0x1b
mov byte [esp + 0x57], al
je 0x30170836
cmp al, 0x1c
je 0x30170836
cmp al, 0x1d
jne 0x301702e7
test edi, edi
movzx ecx, byte [ebp + 1]
mov dword [esp + 0x24], 0xd
mov dword [esp + 0x1c], ecx
jne 0x30170902
mov eax, dword [esp + 0x34]
test eax, eax
jge 0x30170906
mov edx, dword [esp + 0x28]
mov eax, dword [esp + 0x38]
push edx
inc esi
push esi
push edi
push eax
push 0x1d
jmp 0x301708d7
cmp al, 0x16
jae 0x30170323
test edi, edi
movzx ecx, al
mov dword [esp + 0x24], 0x1a
mov dword [esp + 0x1c], ecx
jne 0x30170902
mov eax, dword [esp + 0x34]
test eax, eax
jge 0x30170906
mov edx, dword [esp + 0x28]
mov eax, dword [esp + 0x38]
push edx
inc esi
push esi
push edi
push eax
push ecx
xor eax, eax
jmp 0x301708db
cmp al, 0x4d
je 0x30170794
cmp al, 0x4e
je 0x30170794
cmp al, 0x4f
je 0x30170794
cmp al, 0x50
je 0x30170794
cmp al, 0x5d
je 0x30170357
cmp al, 0x5e
je 0x30170357
cmp al, 0x5c
je 0x30170357
cmp al, 0x5f
jne 0x30171edf
xor edi, edi
mov ecx, ebx
sub ecx, ebp
cmp al, 0x5f
mov dword [esp + 0x58], edi
mov dword [esp + 0x1c], ecx
mov dword [esp + 0x2c], edi
jne 0x30170377
cmp byte [ebp + 3], 0x65
je 0x30171ef1
mov edi, dword [esp + 0x34]
cmp edi, 0xffffffff
jne 0x3017039d
mov edi, ebp
xor eax, eax
mov ah, byte [edi + 1]
mov al, byte [edi + 2]
add edi, eax
cmp byte [edi], 0x54
jne 0x30170382
mov eax, ebx
sub eax, edi
mov edi, dword [esp + 0x34]
mov dword [esp + 0x58], eax
mov eax, dword [esp + 0x44]
test eax, eax
jne 0x3017046e
test edi, edi
je 0x30170c51
cmp edi, 1
mov byte [ebx], al
jg 0x301703f5
mov ecx, dword [esp + 0x6c]
mov edx, dword [esp + 0x114]
mov eax, dword [esp + 0x38]
push ecx
push edx
push eax
push 1
push ebp
call fcn.3016e2d0
mov ecx, dword [esp + 0x30]
push ecx
lea esi, [ebp + 1]
push ebp
push esi
call fcn.300fcf1d
mov dl, byte [esp + 0x40]
add esp, 0x20
inc ebx
add dl, 0x66
mov byte [ebp], dl
mov dword [esp + 0x18], esi
jmp 0x30170447
mov eax, dword [esp + 0x6c]
mov ecx, dword [esp + 0x114]
mov edx, dword [esp + 0x38]
push eax
push ecx
push edx
push 4
push ebp
call fcn.3016e2d0
mov eax, dword [esp + 0x30]
push eax
lea ecx, [ebp + 4]
push ebp
push ecx
call fcn.300fcf1d
mov dl, byte [esp + 0x40]
add dl, 0x66
mov byte [ebp], dl
add esp, 0x20
add ebx, 4
inc ebp
mov byte [ebp], 0x5d
inc ebp
mov dword [esp + 0x2c], ebp
mov byte [ebp], 0
mov byte [ebp + 1], 0
add ebp, 2
mov dword [esp + 0x18], ebp
mov eax, dword [esp + 0x34]
mov esi, dword [esp + 0x10]
mov ebp, dword [esp + 0x40]
mov edx, dword [esp + 0x20]
mov ecx, dword [esp + 0x118]
dec eax
mov dword [esp + 0x14], ebx
mov dword [esp + 0x34], eax
mov edi, eax
jmp 0x3017059e
cmp eax, 1
mov ecx, dword [esp + 0x118]
jle 0x30170594
test ecx, ecx
je 0x301704d1
dec eax
mov dword [esp + 0x48], eax
imul eax, dword [esp + 0x68]
fild dword [esp + 0x48]
fimul dword [esp + 0x68]
mov dword [esp + 0x80], eax
fcomp qword [0x30235f08]
fnstsw ax
test ah, 0x41
je 0x30171db6
mov eax, dword [ecx]
mov edi, 0x7fffffeb
sub edi, eax
mov eax, edi
mov edi, dword [esp + 0x80]
cmp eax, edi
jl 0x30171db6
mov eax, dword [ecx]
add edi, eax
mov dword [ecx], edi
jmp 0x3017058c
cmp dword [esp + 0x88], 0
je 0x301704ee
cmp dword [esp + 0x4c], 0
jge 0x301704ee
mov eax, dword [esp + 0x3c]
mov dword [esp + 0x4c], eax
mov eax, dword [esp + 0x44]
cmp eax, 1
jle 0x30170594
mov ebp, dword [esp + 0x114]
dec eax
mov dword [esp + 0x20], eax
mov ecx, dword [ebp + 0x20]
mov esi, dword [esp + 0x18]
mov dword [esp + 0x24], ecx
mov ecx, dword [esp + 0x1c]
mov eax, ecx
shr ecx, 2
mov edi, ebx
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
mov eax, dword [esp + 0x24]
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov esi, dword [esp + 0x6c]
cmp esi, eax
jae 0x30170562
mov edi, eax
mov eax, dword [esp + 0x1c]
xor ecx, ecx
mov ch, byte [esi]
add esi, 2
mov cl, byte [esi - 1]
add ecx, eax
mov eax, dword [ebp + 0x20]
sar ecx, 8
mov byte [eax], cl
mov cl, byte [esi - 1]
add cl, byte [esp + 0x1c]
mov eax, dword [ebp + 0x20]
mov byte [eax + 1], cl
mov eax, dword [ebp + 0x20]
add eax, 2
cmp esi, edi
mov dword [ebp + 0x20], eax
jb 0x30170530
mov ecx, dword [esp + 0x24]
mov eax, dword [esp + 0x20]
mov dword [esp + 0x6c], ecx
add ebx, dword [esp + 0x1c]
dec eax
mov dword [esp + 0x20], eax
jne 0x30170503
mov ebp, dword [esp + 0x40]
mov esi, dword [esp + 0x10]
mov ecx, dword [esp + 0x118]
mov dword [esp + 0x14], ebx
mov eax, dword [esp + 0x44]
mov edi, dword [esp + 0x34]
test edi, edi
jle 0x301705a0
sub edi, eax
mov dword [esp + 0x34], edi
test edi, edi
jl 0x30170736
test ecx, ecx
je 0x301705f4
test edi, edi
jle 0x301705f4
mov eax, dword [esp + 0x68]
add eax, 7
mov dword [esp + 0x48], eax
imul eax, edi
fild dword [esp + 0x48]
fimul dword [esp + 0x34]
sub eax, 6
mov edx, eax
fcomp qword [0x30235f08]
fnstsw ax
test ah, 0x41
je 0x30171f03
mov eax, dword [ecx]
mov edi, 0x7fffffeb
sub edi, eax
cmp edi, edx
jl 0x30171f03
add edx, eax
mov dword [ecx], edx
jmp 0x301706eb
lea eax, [edi - 1]
test eax, eax
mov dword [esp + 0x24], eax
jl 0x301706eb
mov cl, dl
add cl, 0x66
mov byte [esp + 0x57], cl
jmp 0x30170612
mov cl, byte [esp + 0x57]
mov edx, dword [esp + 0x114]
mov edx, dword [edx + 0x20]
mov byte [ebx], cl
inc ebx
test eax, eax
mov dword [esp + 0x48], edx
je 0x30170650
mov eax, dword [esp + 0x2c]
mov byte [ebx], 0x5d
inc ebx
test eax, eax
jne 0x30170637
xor ecx, ecx
jmp 0x3017063b
mov ecx, ebx
sub ecx, eax
mov eax, ecx
sar eax, 8
mov byte [ebx], al
mov eax, dword [esp + 0x24]
mov dword [esp + 0x2c], ebx
mov byte [ebx + 1], cl
add ebx, 2
mov ecx, dword [esp + 0x1c]
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 + 0x6c]
cmp esi, edx
jae 0x301706d0
mov edi, dword [esp + 0x114]
mov ebp, eax
neg ebp
sbb ebp, ebp
and ebp, 3
inc ebp
test eax, eax
sete cl
dec cl
and cl, 3
inc cl
lea ecx, [ecx]
mov eax, dword [esp + 0x1c]
xor edx, edx
mov dh, byte [esi]
add esi, 2
mov dl, byte [esi - 1]
add edx, ebp
add edx, eax
mov eax, dword [edi + 0x20]
sar edx, 8
mov byte [eax], dl
mov dl, byte [esi - 1]
mov al, byte [esp + 0x1c]
add dl, cl
add dl, al
mov eax, dword [edi + 0x20]
mov byte [eax + 1], dl
mov eax, dword [edi + 0x20]
mov edx, dword [esp + 0x48]
add eax, 2
cmp esi, edx
mov dword [edi + 0x20], eax
jb 0x30170690
mov eax, dword [esp + 0x24]
mov dword [esp + 0x6c], edx
add ebx, dword [esp + 0x1c]
dec eax
mov dword [esp + 0x24], eax
jns 0x3017060e
mov ebp, dword [esp + 0x40]
mov dword [esp + 0x14], ebx
mov edi, dword [esp + 0x2c]
test edi, edi
je 0x30170b5f
mov eax, ebx
sub eax, edi
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 0x30170710
xor edi, edi
jmp 0x30170712
sub edi, ecx
mov byte [ebx], 0x54
inc ebx
mov ecx, eax
sar ecx, 8
mov byte [ebx], cl
mov byte [ebx + 1], al
add ebx, 2
test edi, edi
mov byte [esi + 1], cl
mov byte [esi + 2], al
jne 0x301706f7
mov dword [esp + 0x14], ebx
jmp 0x30170b5b
mov eax, dword [esp + 0x58]
mov esi, ebx
sub esi, eax
xor eax, eax
mov ah, byte [esi + 1]
mov edi, esi
add dl, 0x55
mov byte [esi], dl
mov al, byte [esi + 2]
sub edi, eax
test ecx, ecx
jne 0x30170b5b
cmp byte [edi], 0x5c
je 0x30170b5b
mov ebp, edi
mov ecx, dword [esp + 0x38]
push ecx
push esi
push ebp
call fcn.3016dfd0
add esp, 0xc
test eax, eax
jne 0x3017078c
xor edx, edx
mov dh, byte [ebp + 1]
mov dl, byte [ebp + 2]
mov al, byte [ebp + edx]
add ebp, edx
cmp al, 0x53
je 0x30170762
jmp 0x30170b5b
add byte [edi], 3
jmp 0x30170b5b
mov eax, dword [esp + 0x34]
test eax, eax
je 0x30170c51
cmp eax, 1
je 0x301707b3
mov ecx, dword [esp + 0x114]
mov dword [ecx + 0x44], 1
mov ecx, dword [esp + 0x44]
test ecx, ecx
jne 0x301707cf
cmp eax, 0xffffffff
jne 0x301707ea
add dl, 0x45
mov byte [ebx], dl
inc ebx
mov dword [esp + 0x14], ebx
jmp 0x30170b5b
cmp dword [esp + 0x44], 1
jne 0x301707fe
cmp eax, 0xffffffff
jne 0x301707fe
add dl, 0x47
mov byte [ebx], dl
inc ebx
mov dword [esp + 0x14], ebx
jmp 0x30170b5b
cmp eax, 1
jne 0x301707fe
add dl, 0x49
mov byte [ebx], dl
inc ebx
mov dword [esp + 0x14], ebx
jmp 0x30170b5b
mov ecx, dword [esp + 0x44]
add dl, 0x4b
mov byte [ebx], dl
inc ebx
mov edx, ecx
sar edx, 8
mov byte [ebx], dl
mov byte [ebx + 1], cl
add ebx, 2
cmp eax, 0xffffffff
jne 0x30170820
xor eax, eax
mov dword [esp + 0x34], eax
mov ecx, eax
sar ecx, 8
mov byte [ebx], cl
mov byte [ebx + 1], al
add ebx, 2
mov dword [esp + 0x14], ebx
jmp 0x30170b5b
mov eax, dword [esp + 0x38]
test eax, eax
je 0x3017088e
mov cl, byte [ebx - 1]
test cl, cl
lea eax, [ebx - 1]
jns 0x3017088e
mov esi, eax
mov al, byte [esi]
and al, 0xc0
cmp al, 0x80
jne 0x3017085e
mov cl, byte [esi - 1]
dec esi
and cl, 0xc0
cmp cl, 0x80
je 0x30170852
mov ecx, ebx
sub ecx, esi
mov dword [esp + 0x1c], ecx
mov eax, ecx
shr ecx, 2
lea edi, [esp + 0xe8]
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov esi, dword [esp + 0x10]
mov edi, dword [esp + 0x30]
or eax, 0x80
mov dword [esp + 0x1c], eax
jmp 0x301708b1
movzx ecx, byte [ebx - 1]
cmp dword [esp + 0x44], 1
mov dword [esp + 0x1c], ecx
jle 0x301708b1
mov eax, dword [esp + 0x114]
mov eax, dword [eax + 0x40]
or eax, ecx
or eax, dword [esp + 0x70]
mov dword [esp + 0x4c], eax
test edi, edi
jne 0x30170902
mov eax, dword [esp + 0x34]
test eax, eax
jge 0x30170906
mov ecx, dword [esp + 0x28]
mov eax, dword [esp + 0x38]
push ecx
movzx ecx, byte [esp + 0x5b]
inc esi
push esi
lea edx, [esp + 0xf0]
push edx
push eax
push ecx
mov eax, dword [esp + 0x30]
mov edi, dword [esp + 0x128]
call fcn.3016e380
add esp, 0x14
test eax, eax
je 0x301708fe
mov dword [esp + 0x20], 0
mov dword [esp + 0x30], 1
mov edx, dword [esp + 0x20]
mov eax, dword [esp + 0x34]
mov cl, byte [ebp]
cmp cl, 0xf
je 0x30170925
cmp cl, 0xe
je 0x30170925
mov dword [esp + 0x18], 0xffffffff
mov dword [esp + 0x2c], 0xffffffff
jmp 0x30170935
movzx ecx, byte [ebp + 1]
mov dword [esp + 0x2c], ecx
movzx ecx, byte [ebp + 2]
mov dword [esp + 0x18], ecx
test eax, eax
mov esi, ebx
mov dword [esp + 0x14], ebp
je 0x30170c55
cmp eax, 1
je 0x30170956
mov ecx, dword [esp + 0x114]
mov dword [ecx + 0x44], 1
mov ecx, dword [esp + 0x24]
mov edi, dword [esp + 0x44]
add edx, ecx
test edi, edi
mov dword [esp + 0x20], edx
jne 0x301709a9
cmp eax, 0xffffffff
jne 0x30170979
add dl, 0x1e
mov byte [ebp], dl
inc ebp
jmp 0x30170b09
cmp eax, 1
jne 0x3017098a
add dl, 0x22
mov byte [ebp], dl
inc ebp
jmp 0x30170b09
add dl, 0x24
mov byte [ebp], dl
lea ecx, [ebp + 1]
mov edx, eax
sar edx, 8
mov byte [ecx], dl
mov byte [ecx + 1], al
add ecx, 2
mov dword [esp + 0x14], ecx
jmp 0x30170b0d
cmp dword [esp + 0x44], 1
jne 0x301709ef
cmp eax, 0xffffffff
jne 0x301709c1
add dl, 0x20
mov byte [ebp], dl
inc ebp
jmp 0x30170b09
cmp eax, 1
mov dword [esp + 0x14], esi
je 0x30170c55
add dl, 0x24
mov byte [esi], dl
lea edx, [eax - 1]
sar edx, 8
lea ecx, [esi + 1]
dec al
mov byte [ecx], dl
mov byte [ecx + 1], al
add ecx, 2
mov dword [esp + 0x14], ecx
jmp 0x30170b0d
add cl, 0x26
mov byte [ebp], cl
mov ecx, dword [esp + 0x44]
inc ebp
mov ebx, ecx
sar ebx, 8
mov byte [ebp], bl
mov byte [ebp + 1], cl
add ebp, 2
test eax, eax
mov dword [esp + 0x14], ebp
jge 0x30170a75
mov eax, dword [esp + 0x38]
test eax, eax
je 0x30170a4d
mov eax, dword [esp + 0x1c]
cmp eax, 0x80
jl 0x30170a4d
and eax, 7
mov ecx, eax
mov ebx, ecx
shr ecx, 2
mov edi, ebp
lea esi, [esp + 0xe8]
rep movsd dword es:[edi], dword [esi]
mov ecx, ebx
and ecx, 3
add ebp, eax
add dl, 0x1e
rep movsb byte es:[edi], byte [esi]
mov byte [ebp], dl
inc ebp
jmp 0x30170b09
mov al, byte [esp + 0x1c]
mov byte [ebp], al
mov eax, dword [esp + 0x2c]
inc ebp
test eax, eax
jl 0x30170a69
mov cl, byte [esp + 0x18]
mov byte [ebp], al
inc ebp
mov byte [ebp], cl
inc ebp
add dl, 0x1e
mov byte [ebp], dl
inc ebp
jmp 0x30170b09
cmp eax, ecx
je 0x30170b0d
mov ecx, dword [esp + 0x38]
test ecx, ecx
je 0x30170ab9
mov ecx, dword [esp + 0x1c]
cmp ecx, 0x80
jl 0x30170ab9
mov ebp, dword [esp + 0x14]
and ecx, 7
mov dword [esp + 0x48], ecx
mov ebx, ecx
shr ecx, 2
mov edi, ebp
lea esi, [esp + 0xe8]
rep movsd dword es:[edi], dword [esi]
mov ecx, ebx
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov ecx, ebx
add ebp, ecx
jmp 0x30170aca
mov esi, dword [esp + 0x14]
mov cl, byte [esp + 0x1c]
mov byte [esi], cl
inc esi
mov dword [esp + 0x14], esi
mov ebp, esi
mov ecx, dword [esp + 0x2c]
test ecx, ecx
jl 0x30170ade
mov byte [ebp], cl
mov cl, byte [esp + 0x18]
inc ebp
mov byte [ebp], cl
inc ebp
sub eax, dword [esp + 0x44]
cmp eax, 1
mov dword [esp + 0x34], eax
jne 0x30170af4
add dl, 0x22
mov byte [ebp], dl
inc ebp
jmp 0x30170b09
add dl, 0x24
mov byte [ebp], dl
inc ebp
mov edx, eax
sar edx, 8
mov byte [ebp], dl
mov byte [ebp + 1], al
add ebp, 2
mov dword [esp + 0x14], ebp
mov eax, dword [esp + 0x38]
test eax, eax
je 0x30170b48
mov eax, dword [esp + 0x1c]
cmp eax, 0x80
jl 0x30170b48
mov edx, dword [esp + 0x14]
and eax, 7
mov ecx, eax
mov ebx, ecx
shr ecx, 2
mov edi, edx
lea esi, [esp + 0xe8]
rep movsd dword es:[edi], dword [esi]
mov ecx, ebx
and ecx, 3
add edx, eax
rep movsb byte es:[edi], byte [esi]
mov dword [esp + 0x14], edx
jmp 0x30170b57
mov eax, dword [esp + 0x14]
mov cl, byte [esp + 0x1c]
mov byte [eax], cl
inc eax
mov dword [esp + 0x14], eax
mov ebx, dword [esp + 0x14]
mov ebp, dword [esp + 0x40]
mov eax, dword [esp + 0x30]
test eax, eax
je 0x30170c59
mov al, byte [ebp]
cmp al, 0x26
je 0x30170b7a
cmp al, 0x40
je 0x30170b7a
cmp al, 0x33
jne 0x30170b8a
movzx edx, al
movzx eax, byte [edx + 0x30258fb8]
add ebp, eax
mov dword [esp + 0x40], ebp
mov eax, ebx
sub eax, ebp
test eax, eax
mov dword [esp + 0x58], eax
jle 0x30170c59
movzx eax, byte [ebp]
add eax, 0xffffffe2
cmp eax, 0x20
ja case.0x30170bad.31
movzx ecx, byte [eax + 0x301721e8]
jmp dword [ecx*4 + 0x301721b4]
mov byte [ebp], 0x27
jmp 0x30170c59
mov byte [ebp], 0x28
jmp 0x30170c59
mov byte [ebp], 0x29
jmp 0x30170c59
mov byte [ebp], 0x2a
jmp 0x30170c59
mov byte [ebp], 0x41
jmp 0x30170c59
mov byte [ebp], 0x42
jmp 0x30170c59
mov byte [ebp], 0x43
jmp 0x30170c59
mov byte [ebp], 0x44
jmp 0x30170c59
mov byte [ebp], 0x34
jmp 0x30170c59
mov byte [ebp], 0x35
jmp 0x30170c59
mov byte [ebp], 0x36
jmp 0x30170c59
mov byte [ebp], 0x37
jmp 0x30170c59
mov edx, dword [esp + 0x58]
push edx
push ebp
add ebp, 3
push ebp
call fcn.300fcf1d
mov eax, dword [esp + 0x4c]
mov ecx, dword [esp + 0x64]
mov byte [eax], 0x5c
add ecx, 3
mov byte [ebx + 3], 0x54
add ebx, 3
add esp, 0xc
inc ebx
mov eax, ecx
sar eax, 8
mov byte [ebx], al
mov byte [ebx + 1], cl
mov edx, dword [esp + 0x40]
mov byte [edx + 1], al
mov eax, dword [esp + 0x40]
add ebx, 2
mov dword [esp + 0x14], ebx
mov byte [eax + 2], cl
jmp 0x30170c59
mov dword [esp + 0x14], ebp
mov ebx, dword [esp + 0x14]
mov eax, dword [esp + 0x114]
mov edx, dword [eax + 0x40]
mov ecx, dword [esp + 0x8c]
mov esi, dword [esp + 0x10]
mov edi, dword [esp + 0x74]
or edx, ecx
mov dword [esp + 0x18], 0
mov ebp, dword [esp + 0x18]
mov dword [eax + 0x40], edx
inc esi
xor edx, edx
jmp 0x3016ecba
mov edx, dword [esp + 0x28]
mov eax, dword [edi + 0x20]
mov dword [esp + 0x48], edx
xor edx, edx
inc esi
mov dword [esp + 0x6c], eax
mov dword [esp + 0x10], esi
mov al, byte [esi]
cmp al, 0x2a
mov dword [esp + 0x24], edx
mov dword [esp + 0x20], 0x5e
mov dword [esp + 0x80], edx
jne 0x30170dad
movzx edx, byte [esi + 1]
mov ecx, dword [edi + 0xc]
test byte [edx + ecx], 2
je 0x30170dab
inc esi
mov dword [esp + 0x58], esi
mov dword [esp + 0x18], 0
lea esp, [esp]
inc esi
mov dword [esp + 0x10], esi
movzx eax, byte [esi]
test byte [eax + ecx], 2
jne 0x30170ce0
mov al, byte [esi]
cmp al, 0x3a
je 0x30171f15
cmp al, 0x29
jne 0x30171f27
mov ecx, dword [esp + 0x58]
mov eax, dword [0x302a1184]
mov edi, esi
sub edi, ecx
xor ebp, ebp
test eax, eax
jle 0x30170d59
mov dword [esp + 0x2c], str.ACCEPT
jmp 0x30170d20
mov ecx, dword [esp + 0x2c]
cmp edi, dword [ecx + 4]
jne 0x30170d44
mov edx, ecx
mov eax, dword [edx]
mov ecx, dword [esp + 0x58]
push edi
push eax
push ecx
call fcn.300fcf1d
add esp, 0xc
test eax, eax
je 0x30170d6b
mov esi, dword [esp + 0x10]
mov ecx, dword [esp + 0x2c]
mov eax, dword [0x302a1184]
inc ebp
add ecx, 0xc
cmp ebp, eax
mov dword [esp + 0x2c], ecx
jl 0x30170d20
mov ecx, dword [esp + 0x104]
mov dword [ecx], 0x3c
jmp 0x3017139b
lea edx, [ebp + ebp*2]
mov al, byte [edx*4 + 0x302a1138]
mov byte [ebx], al
inc ebx
cmp al, 0x6d
mov dword [esp + 0x14], ebx
jne 0x30170d8f
mov eax, dword [esp + 0x114]
mov dword [eax + 0x48], 1
cmp ebp, dword [0x302a1184]
mov esi, dword [esp + 0x10]
jge 0x30170d59
mov ebp, dword [esp + 0x18]
mov edi, dword [esp + 0x74]
inc esi
xor edx, edx
jmp 0x3016ecba
xor edx, edx
cmp al, 0x3f
jne 0x301717fb
inc esi
mov dword [esp + 0x10], esi
mov cl, byte [esi]
movzx eax, cl
add eax, 0xffffffdf
cmp eax, 0x5b
ja case.0x30170dd2.34
movzx eax, byte [eax + 0x30172248]
jmp dword [eax*4 + 0x3017220c]
inc esi
mov dword [esp + 0x10], esi
mov al, byte [esi]
test al, al
je 0x30170df3
cmp al, 0x29
je 0x30170e05
inc esi
mov dword [esp + 0x10], esi
mov al, byte [esi]
test al, al
jne 0x30170de4
mov edx, dword [esp + 0x104]
mov dword [edx], 0x12
jmp 0x3017139b
cmp byte [esi], 0
je 0x30170df3
mov edi, dword [esp + 0x74]
inc esi
xor edx, edx
jmp 0x3016ecba
mov dword [esp + 0x80], 1
inc esi
mov dword [esp + 0x20], 0x5d
mov dword [esp + 0x10], esi
jmp 0x30171470
cmp byte [esi + 1], 0x3f
mov dword [esp + 0x20], 0x5f
jne 0x30170e5c
mov al, byte [esi + 2]
cmp al, 0x3d
je 0x30171470
cmp al, 0x21
je 0x30171470
cmp al, 0x3c
je 0x30171470
mov byte [ebx + 3], 0x63
mov esi, dword [esp + 0x10]
mov al, byte [esi + 1]
cmp al, 0x52
mov dword [esp + 0x24], 3
mov dword [esp + 0x58], 0xffffffff
jne 0x30170e9b
mov dl, byte [esi + 2]
cmp dl, 0x26
lea ecx, [esi + 2]
jne 0x30170e9b
mov dword [esp + 0x10], ecx
or edi, 0xffffffff
mov byte [ebx + 3], 0x64
mov esi, dword [esp + 0x10]
mov dword [esp + 0x2c], edi
jmp 0x30170edd
cmp al, 0x3c
jne 0x30170eaf
mov edi, 0x3e
inc esi
mov dword [esp + 0x2c], edi
mov dword [esp + 0x10], esi
jmp 0x30170edd
cmp al, 0x27
jne 0x30170ec3
mov edi, 0x27
inc esi
mov dword [esp + 0x2c], edi
mov dword [esp + 0x10], esi
jmp 0x30170edd
xor edi, edi
cmp al, 0x2d
mov dword [esp + 0x2c], edi
je 0x30170ed1
cmp al, 0x2b
jne 0x30170edd
inc esi
mov dword [esp + 0x10], esi
movzx ecx, byte [esi]
mov dword [esp + 0x58], ecx
mov ebp, dword [esp + 0x114]
movzx eax, byte [esi + 1]
mov edx, dword [ebp + 0xc]
test byte [eax + edx], 0x10
je 0x30171f39
xor ecx, ecx
inc esi
mov dword [esp + 0x10], esi
movzx eax, byte [esi]
test byte [edx + eax], 0x10
mov dword [esp + 0x1c], ecx
mov dword [esp + 0x18], esi
je 0x30170f40
or ebp, 0xffffffff
test ecx, ecx
jl 0x30170f32
test byte [eax + 0x302513c0], 4
je 0x30170f2a
lea ecx, [ecx + ecx*4]
lea eax, [eax + ecx*2 - 0x30]
mov dword [esp + 0x1c], eax
jmp 0x30170f2e
mov dword [esp + 0x1c], ebp
mov ecx, dword [esp + 0x1c]
inc esi
mov dword [esp + 0x10], esi
movzx eax, byte [esi]
test byte [eax + edx], 0x10
jne 0x30170f10
mov edx, dword [esp + 0x18]
mov ebp, esi
sub ebp, edx
test edi, edi
jle 0x30170f5c
movzx edx, byte [esi]
inc esi
cmp edx, edi
mov dword [esp + 0x10], esi
jne 0x30171f4c
mov al, byte [esi]
inc esi
cmp al, 0x29
mov dword [esp + 0x10], esi
jne 0x30171f4c
mov eax, dword [esp + 0x118]
test eax, eax
jne 0x30171470
mov eax, dword [esp + 0x58]
test eax, eax
jle 0x30170fd4
test ecx, ecx
jle 0x30171f5f
cmp eax, 0x2d
jne 0x30170fba
mov edx, dword [esp + 0x114]
mov eax, dword [edx + 0x30]
sub eax, ecx
inc eax
test eax, eax
mov dword [esp + 0x1c], eax
jle 0x30171f71
mov ecx, eax
mov edx, ecx
sar edx, 8
mov byte [ebx + 4], dl
mov byte [ebx + 5], cl
jmp 0x30171470
mov eax, dword [esp + 0x114]
add ecx, dword [eax + 0x30]
mov edx, ecx
sar edx, 8
mov byte [ebx + 4], dl
mov byte [ebx + 5], cl
jmp 0x30171470
mov eax, dword [esp + 0x114]
mov ecx, dword [eax + 0x28]
test ecx, ecx
mov edi, dword [eax + 0x24]
mov dword [esp + 0x30], 0
jle 0x30171021
mov esi, dword [esp + 0x30]
mov ecx, dword [esp + 0x18]
push ebp
lea eax, [edi + 2]
push eax
push ecx
call fcn.300fcf1d
add esp, 0xc
test eax, eax
je 0x3017101d
mov eax, dword [esp + 0x114]
add edi, dword [eax + 0x2c]
mov ecx, dword [eax + 0x28]
inc esi
cmp esi, ecx
mov dword [esp + 0x30], esi
jl 0x30170ff1
mov esi, dword [esp + 0x10]
mov eax, dword [esp + 0x114]
mov edx, dword [esp + 0x30]
cmp edx, dword [eax + 0x28]
jge 0x30171047
movzx eax, byte [edi + 1]
mov ah, byte [edi]
mov byte [ebx + 5], al
mov ecx, eax
sar ecx, 8
mov byte [ebx + 4], cl
jmp 0x30171470
mov edx, dword [esp + 0x28]
mov eax, dword [esp + 0x114]
mov ebx, dword [esp + 0x18]
mov eax, dword [eax + 0x30]
shr edx, 3
and edx, 1
push edx
push ebp
mov ecx, esi
call fcn.3016d960
add esp, 8
test eax, eax
jg 0x3017110b
mov eax, dword [esp + 0x2c]
test eax, eax
jne 0x30172099
cmp byte [ebx], 0x52
jne 0x301710d0
mov eax, 1
xor ecx, ecx
cmp ebp, eax
jle 0x301710b1
nop
movzx edx, byte [eax + ebx]
test byte [edx + 0x302513c0], 4
je 0x30171f83
inc eax
cmp eax, ebp
lea ecx, [ecx + ecx*4]
lea ecx, [edx + ecx*2 - 0x30]
jl 0x30171090
test ecx, ecx
jne 0x301710b6
mov ecx, 0xffff
mov eax, dword [esp + 0x14]
mov edx, ecx
sar edx, 8
mov byte [eax + 3], 0x64
mov byte [eax + 4], dl
mov byte [eax + 5], cl
mov ebx, eax
jmp 0x30171470
cmp ebp, 6
jne 0x301710ff
push ebp
push str.DEFINE
push ebx
call fcn.300fcf1d
add esp, 0xc
test eax, eax
jne 0x301710ff
mov eax, dword [esp + 0x14]
mov byte [eax + 3], 0x65
mov dword [esp + 0x24], 1
mov ebx, eax
jmp 0x30171470
mov eax, dword [esp + 0x1c]
test eax, eax
jle 0x30171f95
mov ecx, dword [esp + 0x14]
mov edx, eax
sar edx, 8
mov byte [ecx + 4], dl
mov byte [ecx + 5], al
mov ebx, ecx
jmp 0x30171470
inc esi
mov dword [esp + 0x20], 0x57
mov dword [esp + 0x10], esi
jmp 0x30171470
inc esi
mov dword [esp + 0x10], esi
cmp byte [esi], 0x29
jne 0x3017115b
mov edi, dword [esp + 0x74]
mov byte [ebx], 0x6c
mov esi, dword [esp + 0x10]
inc ebx
mov dword [esp + 0x18], edx
mov ebp, edx
inc esi
mov dword [esp + 0x14], ebx
xor edx, edx
jmp 0x3016ecba
mov dword [esp + 0x20], 0x58
jmp 0x30171470
mov al, byte [esi + 1]
cmp al, 0x21
je 0x30171230
cmp al, 0x3d
je 0x3017121c
mov edx, dword [edi + 0xc]
movzx eax, al
test byte [eax + edx], 0x10
je 0x30171fad
mov ebp, dword [edi + 0xc]
cmp cl, 0x3c
setne al
dec al
and al, 0x17
add al, 0x27
inc esi
mov dword [esp + 0x10], esi
movsx edx, al
movzx eax, byte [esi]
test byte [eax + ebp], 0x10
mov ecx, esi
mov dword [esp + 0x18], ecx
je 0x301711c1
mov eax, ebp
inc esi
mov dword [esp + 0x10], esi
movzx ebp, byte [esi]
test byte [eax + ebp], 0x10
jne 0x301711b3
mov eax, esi
sub eax, ecx
mov ecx, dword [esp + 0x118]
test ecx, ecx
mov dword [esp + 0x24], eax
je 0x30171339
movzx ecx, byte [esi]
cmp ecx, edx
jne 0x30171fe4
cmp dword [edi + 0x28], 0x2710
jge 0x30171ff6
mov edx, dword [edi + 0x2c]
lea ecx, [eax + 3]
cmp ecx, edx
jle 0x30171447
cmp eax, 0x20
mov dword [edi + 0x2c], ecx
jle 0x30171447
mov edx, dword [esp + 0x104]
mov dword [edx], 0x30
jmp 0x3017139b
add esi, 2
mov dword [esp + 0x20], 0x59
mov dword [esp + 0x10], esi
jmp 0x30171470
add esi, 2
mov dword [esp + 0x20], 0x5a
mov dword [esp + 0x10], esi
jmp 0x30171470
inc esi
mov dword [esp + 0x20], 0x5c
mov dword [esp + 0x10], esi
jmp 0x30171470
mov byte [ebx], 0x52
mov esi, dword [esp + 0x10]
mov dword [esp + 0x64], ebx
inc ebx
xor ecx, ecx
inc esi
mov dword [esp + 0x10], esi
movzx eax, byte [esi]
mov edx, 4
test byte [eax + 0x302513c0], dl
mov dword [esp + 0x90], 1
je 0x3017129b
inc esi
lea ecx, [ecx + ecx*4]
lea ecx, [eax + ecx*2 - 0x30]
mov dword [esp + 0x10], esi
movzx eax, byte [esi]
test byte [eax + 0x302513c0], dl
jne 0x30171284
cmp byte [esi], 0x29
jne 0x30171fc0
cmp ecx, 0xff
jg 0x30171fd2
mov byte [ebx], cl
mov ebp, dword [edi + 0x18]
mov eax, dword [esp + 0x10]
inc ebx
sub eax, ebp
inc eax
sar eax, 8
mov byte [ebx], al
mov al, byte [edi + 0x18]
mov cl, byte [esp + 0x10]
mov edi, dword [esp + 0x74]
sub cl, al
inc cl
mov byte [ebx + 1], cl
mov byte [ebx + 2], 0
mov byte [ebx + 3], 0
mov esi, dword [esp + 0x10]
add ebx, edx
mov dword [esp + 0x18], 0
mov ebp, dword [esp + 0x18]
inc esi
mov dword [esp + 0x14], ebx
xor edx, edx
jmp 0x3016ecba
inc esi
mov dword [esp + 0x10], esi
mov cl, byte [esi]
cmp cl, 0x3d
je 0x30171323
cmp cl, 0x3e
je 0x30171323
cmp cl, 0x3c
je case.0x30170dd2.39
mov edx, dword [esp + 0x104]
mov dword [edx], 0x29
jmp 0x3017139b
xor edx, edx
cmp cl, 0x3e
sete dl
mov dword [esp + 0x24], edx
mov edx, 0x29
jmp 0x301719e2
mov eax, dword [edi + 0x28]
test eax, eax
mov ebp, dword [edi + 0x24]
mov edx, dword [esp + 0x24]
mov dword [esp + 0x30], 0
mov dword [esp + 0x8c], eax
jle 0x30171407
lea ebx, [ebx]
mov esi, dword [esp + 0x18]
mov ecx, edx
lea edi, [ebp + 2]
xor eax, eax
repe cmpsb byte [esi], byte es:[edi]
je 0x30171374
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
jne 0x301713bd
mov al, byte [edx + ebp + 2]
test al, al
jne 0x301713dd
test dword [esp + 0x28], 0x80000
jne 0x301713bf
mov eax, dword [esp + 0x104]
mov dword [eax], 0x2b
mov esi, dword [esp + 0x10]
mov ecx, dword [esp + 0x100]
pop edi
mov dword [ecx], esi
pop esi
pop ebp
xor eax, eax
pop ebx
mov ecx, dword [esp + 0xe0]
call fcn.3022c9c7
add esp, 0xe4
ret
jl 0x301713dd
mov ecx, dword [esp + 0x114]
mov eax, dword [ecx + 0x2c]
mov esi, dword [ecx + 0x28]
add ebp, eax
mov eax, dword [esp + 0x30]
inc eax
cmp eax, esi
mov dword [esp + 0x30], eax
jl 0x30171360
jmp 0x30171407
mov edx, dword [esp + 0x114]
mov ecx, dword [edx + 0x2c]
mov eax, dword [esp + 0x8c]
sub eax, dword [esp + 0x30]
imul eax, ecx
push eax
lea eax, [ecx + ebp]
push ebp
push eax
call fcn.300fcf1d
mov edx, dword [esp + 0x30]
add esp, 0xc
mov eax, dword [esp + 0x114]
mov ecx, dword [eax + 0x30]
mov esi, dword [esp + 0x18]
inc ecx
sar ecx, 8
mov byte [ebp], cl
mov al, byte [eax + 0x30]
inc al
mov byte [ebp + 1], al
mov ecx, edx
mov eax, ecx
shr ecx, 2
lea edi, [ebp + 2]
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov edi, dword [esp + 0x114]
mov byte [edx + ebp + 2], 0
mov esi, dword [esp + 0x10]
mov eax, dword [edi + 0x28]
inc esi
inc eax
mov dword [esp + 0x10], esi
mov dword [edi + 0x28], eax
mov ecx, dword [edi + 0x30]
inc ecx
mov edx, ecx
mov dword [edi + 0x30], ecx
sar edx, 8
mov byte [ebx + 3], dl
mov al, byte [edi + 0x30]
mov byte [ebx + 4], al
mov dword [esp + 0x24], 2
mov ecx, dword [esp + 0x20]
mov edx, dword [esp + 0x114]
xor eax, eax
cmp ecx, 0x5c
setl al
mov byte [ebx], cl
mov edi, dword [edx + 0x40]
mov dword [esp + 0x40], ebx
dec eax
and eax, ebx
mov dword [esp + 0x18], eax
xor eax, eax
cmp ecx, 0x59
mov dword [esp + 0x68], eax
je 0x301714a3
cmp ecx, 0x5a
jne 0x301714a8
mov eax, 1
mov esi, dword [esp + 0x118]
mov ecx, esi
neg ecx
sbb ecx, ecx
lea ebp, [esp + 0x68]
and ecx, ebp
push ecx
push edx
mov edx, dword [esp + 0x118]
push edx
lea ecx, [esp + 0x88]
push ecx
mov ecx, dword [esp + 0x34]
lea edx, [esp + 0x94]
push edx
mov edx, dword [esp + 0x94]
push ecx
push edx
push eax
mov eax, dword [esp + 0x124]
push eax
mov eax, dword [esp + 0x4c]
lea ecx, [esp + 0x34]
push ecx
mov ecx, dword [esp + 0x70]
lea edx, [esp + 0x68]
push edx
and eax, 7
push eax
push ecx
call fcn.30172320
add esp, 0x34
test eax, eax
je 0x30171397
mov ebp, dword [esp + 0x20]
cmp ebp, 0x5f
jne 0x30171553
test esi, esi
jne 0x30171553
mov eax, ebx
xor edx, edx
mov dh, byte [eax + 1]
inc esi
mov dl, byte [eax + 2]
mov cl, byte [eax + edx]
add eax, edx
cmp cl, 0x54
jne 0x30171521
cmp byte [ebx + 3], 0x65
jne 0x30171815
cmp esi, 1
jg 0x30172051
mov dword [esp + 0x20], 0x65
mov ebp, dword [esp + 0x20]
mov ecx, dword [esp + 0x7c]
mov eax, dword [esp + 0x84]
mov esi, dword [esp + 0x10]
cmp byte [esi], 0x29
jne 0x30172075
mov edx, dword [esp + 0x118]
test edx, edx
je 0x3017183d
mov eax, dword [edx]
mov ecx, dword [esp + 0x68]
mov edi, 0x7fffffeb
sub edi, eax
lea ebp, [ecx - 6]
cmp edi, ebp
jl 0x30171db6
mov ebp, dword [esp + 0x18]
mov edi, dword [esp + 0x74]
inc ebx
lea eax, [eax + ecx - 6]
mov dword [edx], eax
mov byte [ebx - 1], 0x5d
mov byte [ebx], 0
mov byte [ebx + 1], 3
add ebx, 2
mov byte [ebx], 0x54
inc ebx
mov byte [ebx], 0
mov byte [ebx + 1], 3
mov esi, dword [esp + 0x10]
add ebx, 2
inc esi
mov dword [esp + 0x14], ebx
xor edx, edx
jmp 0x3016ecba
mov edx, 0x29
mov dword [esp + 0x24], 1
jmp 0x301719e2
inc esi
mov dword [esp + 0x10], esi
mov cl, byte [esi]
movzx edx, cl
cmp edx, 0x2b
je 0x30171604
cmp edx, 0x2d
jne 0x30171609
movzx eax, byte [esi + 1]
test byte [eax + 0x302513c0], 4
je case.0x30170dd2.34
inc esi
mov dword [esp + 0x10], esi
movzx eax, byte [esi]
mov cl, byte [eax + 0x302513c0]
xor edi, edi
test cl, 4
mov dword [esp + 0x1c], edi
je 0x30171641
mov ecx, dword [esp + 0x10]
lea esi, [edi + edi*4]
inc ecx
lea eax, [eax + esi*2 - 0x30]
mov dword [esp + 0x1c], eax
mov edi, dword [esp + 0x1c]
mov dword [esp + 0x10], ecx
movzx eax, byte [ecx]
test byte [eax + 0x302513c0], 4
jne 0x30171621
mov ecx, dword [esp + 0x10]
cmp byte [ecx], 0x29
jne 0x30172008
cmp edx, 0x2d
jne 0x30171686
test edi, edi
je 0x3017201a
mov edx, dword [esp + 0x114]
mov eax, dword [edx + 0x30]
sub eax, edi
inc eax
test eax, eax
mov dword [esp + 0x1c], eax
jg 0x30171ad3
mov eax, dword [esp + 0x104]
mov dword [eax], 0xf
jmp 0x30171397
cmp edx, 0x2b
jne 0x30171ad7
test edi, edi
je 0x3017202c
mov eax, dword [esp + 0x114]
add edi, dword [eax + 0x30]
mov dword [esp + 0x1c], edi
jmp 0x30171ad7
xor edx, edx
cmp cl, 0x29
mov dword [esp + 0x58], edx
mov dword [esp + 0x2c], edx
lea eax, [esp + 0x2c]
je 0x3017173e
cmp cl, 0x3a
je 0x3017173e
movzx ecx, cl
inc esi
sub ecx, 0x2d
cmp ecx, 0x4b
mov dword [esp + 0x10], esi
ja case.0x301716e1.46
movzx ecx, byte [ecx + 0x301722c8]
jmp dword [ecx*4 + 0x301722a4]
lea eax, [esp + 0x58]
jmp 0x30171733
mov edx, dword [eax]
mov ecx, dword [edi + 0x3c]
or edx, 0x80000
or ecx, 0x8000000
mov dword [eax], edx
mov dword [edi + 0x3c], ecx
jmp 0x30171733
mov ecx, dword [eax]
or ecx, 1
jmp 0x30171731
mov ecx, dword [eax]
or ecx, 2
jmp 0x30171731
mov ecx, dword [eax]
or ecx, 4
jmp 0x30171731
mov ecx, dword [eax]
or ecx, 8
jmp 0x30171731
mov ecx, dword [eax]
or ecx, 0x200
jmp 0x30171731
mov ecx, dword [eax]
or ecx, 0x40
mov dword [eax], ecx
mov cl, byte [esi]
cmp cl, 0x29
mov edx, dword [esp + 0x2c]
jne 0x301716c1
mov ebp, dword [esp + 0x28]
mov eax, dword [esp + 0x58]
mov cl, byte [esi]
or edx, ebp
not eax
and edx, eax
cmp cl, 0x29
mov eax, edx
mov dword [esp + 0x48], eax
jne case.0x30170dd2.58
mov edx, dword [edi + 0x14]
add edx, 3
cmp ebx, edx
jne 0x30171796
mov ecx, dword [esp + 0x118]
test ecx, ecx
je 0x30171777
cmp dword [ecx], 6
jne 0x30171796
mov dword [esp + 0x18], 0
mov ebp, dword [esp + 0x18]
mov dword [edi + 0x3c], eax
mov edi, dword [esp + 0x74]
inc esi
mov dword [esp + 0x28], eax
xor edx, edx
jmp 0x3016ecba
mov ecx, eax
xor ecx, ebp
test cl, 7
je 0x301717b3
mov byte [ebx], 0x18
mov dl, al
inc ebx
and dl, 7
mov byte [ebx], dl
mov esi, dword [esp + 0x10]
inc ebx
mov dword [esp + 0x14], ebx
mov ecx, dword [esp + 0xf8]
mov edi, dword [esp + 0x74]
mov dword [ecx], eax
mov ecx, eax
shr ecx, 9
and ecx, 1
mov dword [esp + 0x28], eax
and eax, 1
shl eax, 8
mov dword [esp + 0x94], ecx
xor ecx, 1
mov dword [esp + 0x18], 0
mov ebp, dword [esp + 0x18]
inc esi
mov dword [esp + 0x98], ecx
mov dword [esp + 0x70], eax
xor edx, edx
jmp 0x3016ecba
mov eax, dword [esp + 0x28]
test ah, 0x10
je 0x30171453
mov dword [esp + 0x20], 0x5d
jmp 0x30171470
cmp esi, 2
jg 0x30172063
cmp esi, 1
jne 0x30171553
or ecx, 0xffffffff
or eax, 0xffffffff
mov dword [esp + 0x7c], ecx
mov dword [esp + 0x84], eax
jmp 0x3017155e
cmp ebp, 0x65
mov edx, dword [esp + 0x40]
mov dword [esp + 0x14], edx
je 0x301718db
cmp ebp, 0x5c
mov edx, dword [esp + 0x4c]
mov dword [esp + 0x50], edx
mov edx, dword [esp + 0x3c]
mov dword [esp + 0x60], edx
mov dword [esp + 0x88], 0
jl 0x301718ce
cmp edx, 0xfffffffe
jne 0x301718a2
test eax, eax
jl 0x30171890
mov dword [esp + 0x3c], eax
mov dword [esp + 0x88], 1
mov dword [esp + 0x60], 0xffffffff
jmp 0x301718b2
mov dword [esp + 0x3c], 0xffffffff
mov dword [esp + 0x60], 0xffffffff
jmp 0x301718b2
test eax, eax
jl 0x301718b2
test ecx, ecx
jge 0x301718b6
or eax, edi
mov ecx, eax
mov dword [esp + 0x7c], ecx
test ecx, ecx
jl 0x301718db
mov ebx, dword [esp + 0x14]
mov ebp, dword [esp + 0x18]
mov edi, dword [esp + 0x74]
inc esi
mov dword [esp + 0x4c], ecx
xor edx, edx
jmp 0x3016ecba
cmp ebp, 0x57
jne 0x301718db
test ecx, ecx
jl 0x301718db
mov dword [esp + 0x4c], ecx
mov ebx, dword [esp + 0x14]
mov ebp, dword [esp + 0x18]
mov edi, dword [esp + 0x74]
inc esi
xor edx, edx
jmp 0x3016ecba
mov eax, dword [esp + 0x28]
mov ecx, dword [edi + 0x30]
mov edx, dword [esp + 0x104]
push 0
push eax
push ecx
push edx
lea eax, [esp + 0x20]
push eax
mov dword [esp + 0x8c], esi
call fcn.3016d3f0
mov ecx, dword [esp + 0x118]
mov edx, dword [ecx]
add esp, 0x14
test edx, edx
jne 0x30171397
test eax, eax
jge 0x30171ce5
mov ecx, eax
neg ecx
cmp ecx, 0x19
jne 0x3017196b
mov esi, dword [esp + 0x10]
cmp byte [esi + 1], 0x5c
jne 0x30171957
cmp byte [esi + 2], 0x45
jne 0x30171957
mov edi, dword [esp + 0x74]
add esi, 2
inc esi
xor edx, edx
jmp 0x3016ecba
mov edi, dword [esp + 0x74]
inc esi
mov dword [esp + 0x5c], 1
xor edx, edx
jmp 0x3016ecba
cmp ecx, 0x18
je 0x30171d94
mov edx, dword [esp + 0x3c]
cmp edx, 0xfffffffe
jne 0x3017198e
cmp ecx, 5
jle 0x3017198e
cmp ecx, 0x16
jge 0x3017198e
or edx, 0xffffffff
mov dword [esp + 0x3c], edx
cmp ecx, 0x1a
mov esi, dword [esp + 0x10]
mov dword [esp + 0x60], edx
mov edx, dword [esp + 0x4c]
mov dword [esp + 0x50], edx
jne 0x30171c18
mov dl, byte [esi + 1]
cmp dl, 0x3c
je 0x301719bd
cmp dl, 0x27
je 0x301719bd
cmp dl, 0x7b
jne 0x30171c18
inc esi
mov dword [esp + 0x10], esi
mov al, byte [esi]
cmp al, 0x3c
mov dword [esp + 0x24], 0
jne 0x301719d4
mov al, 0x3e
jmp 0x301719df
cmp al, 0x27
setne al
dec al
and al, 0xaa
add al, 0x7d
movsx edx, al
mov ebx, dword [edi + 0xc]
inc esi
mov dword [esp + 0x10], esi
movzx eax, byte [esi]
test byte [eax + ebx], 0x10
mov ecx, esi
mov dword [esp + 0x18], ecx
je 0x30171a0e
mov eax, ebx
jmp 0x30171a00
inc esi
mov dword [esp + 0x10], esi
movzx edi, byte [esi]
test byte [edi + eax], 0x10
jne 0x30171a00
mov eax, dword [esp + 0x118]
mov ebx, esi
sub ebx, ecx
test eax, eax
je 0x30171a3e
movzx ecx, byte [esi]
cmp ecx, edx
jne 0x30172087
cmp ebx, 0x20
jg 0x3017120a
mov dword [esp + 0x1c], 0
jmp 0x30171ac3
mov eax, dword [esp + 0x114]
mov ecx, dword [eax + 0x28]
mov ebp, dword [eax + 0x24]
xor edi, edi
test ecx, ecx
jle 0x30171a7a
mov esi, eax
mov eax, dword [esp + 0x18]
push ebx
lea edx, [ebp + 2]
push edx
push eax
call fcn.300fcf1d
add esp, 0xc
test eax, eax
je 0x30171a76
mov edx, dword [esi + 0x2c]
mov eax, dword [esi + 0x28]
add ebp, edx
inc edi
cmp edi, eax
jl 0x30171a53
mov esi, dword [esp + 0x10]
mov ecx, dword [esp + 0x114]
cmp edi, dword [ecx + 0x28]
jge 0x30171a93
movzx edx, byte [ebp + 1]
mov dh, byte [ebp]
mov dword [esp + 0x1c], edx
jmp 0x30171ac3
mov eax, dword [esp + 0x28]
mov ecx, dword [esp + 0x114]
shr eax, 3
and eax, 1
push eax
mov eax, dword [ecx + 0x30]
push ebx
mov ebx, dword [esp + 0x20]
mov ecx, esi
call fcn.3016d960
add esp, 8
test eax, eax
mov dword [esp + 0x1c], eax
jle 0x30171674
mov ecx, dword [esp + 0x24]
test ecx, ecx
mov eax, dword [esp + 0x14]
je 0x30171c2a
mov edi, dword [esp + 0x1c]
mov esi, dword [esp + 0x114]
mov ecx, dword [esp + 0x118]
test ecx, ecx
mov ebx, dword [esp + 0x14]
mov eax, dword [esi + 0x14]
mov dword [esp + 0x18], ebx
mov dword [esp + 0x30], eax
jne 0x30171bae
test edi, edi
mov byte [ebx], 0
je 0x30171b21
mov edx, dword [esp + 0x114]
mov esi, dword [esp + 0x38]
mov eax, dword [edx + 0x14]
call fcn.3016de20
mov esi, dword [esp + 0x114]
mov dword [esp + 0x30], eax
test eax, eax
jne 0x30171b7e
mov eax, dword [esp + 0x28]
mov ecx, dword [esp + 0x10]
shr eax, 3
and eax, 1
push eax
mov eax, dword [esi + 0x30]
push edi
xor ebx, ebx
call fcn.3016d960
add esp, 8
test eax, eax
jl 0x30172099
mov eax, dword [esi + 0x14]
mov ecx, dword [esp + 0x1c]
add ecx, eax
mov dword [esp + 0x30], ecx
mov ecx, dword [esp + 0x14]
mov edx, ecx
sub edx, eax
mov eax, dword [esi + 0x20]
add edx, 4
sar edx, 8
mov byte [eax], dl
mov bl, byte [esi + 0x14]
mov edx, dword [esi + 0x20]
sub cl, bl
add cl, 4
mov byte [edx + 1], cl
add dword [esi + 0x20], 2
jmp 0x30171ba6
xor ecx, ecx
mov ch, byte [eax + 1]
mov cl, byte [eax + 2]
test ecx, ecx
jne 0x30171bae
mov edi, dword [esp + 0x38]
push eax
mov eax, dword [esp + 0x114]
call fcn.3016e200
add esp, 4
test eax, eax
jne 0x301720ab
mov eax, dword [esp + 0x30]
mov ebx, dword [esp + 0x14]
mov byte [ebx], 0x5c
mov byte [ebx + 1], 0
add ebx, 3
mov cl, 6
mov byte [ebx - 1], cl
mov byte [ebx], 0x51
mov ebp, dword [esi + 0x14]
mov edx, eax
sub edx, ebp
mov ebp, dword [esp + 0x18]
sar edx, 8
mov byte [ebx + 1], dl
sub al, byte [esi + 0x14]
mov byte [ebx + 2], al
mov eax, dword [esp + 0x3c]
add ebx, 3
mov byte [ebx], 0x54
mov byte [ebx + 1], 0
mov byte [ebx + 2], cl
mov esi, dword [esp + 0x10]
add ebx, 3
cmp eax, 0xfffffffe
mov dword [esp + 0x14], ebx
mov dword [esp + 0x68], 9
jne 0x30170112
mov edi, dword [esp + 0x74]
inc esi
mov dword [esp + 0x3c], 0xffffffff
xor edx, edx
jmp 0x3016ecba
cmp ecx, 0x1b
jl 0x30171c97
mov ecx, 0xffffffe5
sub ecx, eax
mov eax, dword [esp + 0x14]
jmp 0x30171c2e
mov ecx, dword [esp + 0x1c]
cmp dword [esp + 0x3c], 0xfffffffe
jne 0x30171c3d
mov dword [esp + 0x3c], 0xffffffff
mov byte [eax], 0x50
mov dword [esp + 0x18], eax
inc eax
mov edx, ecx
sar edx, 8
mov byte [eax], dl
mov byte [eax + 1], cl
add eax, 2
cmp ecx, 0x20
mov dword [esp + 0x14], eax
mov eax, 1
jge 0x30171c62
shl eax, cl
mov edx, dword [esp + 0x114]
mov esi, dword [edx + 0x38]
or esi, eax
cmp ecx, dword [edx + 0x34]
mov dword [edx + 0x38], esi
jle 0x30170106
mov esi, dword [esp + 0x10]
mov ebx, dword [esp + 0x14]
mov ebp, dword [esp + 0x18]
mov edi, dword [esp + 0x74]
mov eax, edx
inc esi
mov dword [eax + 0x34], ecx
xor edx, edx
jmp 0x3016ecba
cmp ecx, 0x15
je 0x301720bd
cmp ecx, 0xe
je 0x301720bd
cmp ecx, 0xf
je 0x301720bd
cmp ecx, 5
jle 0x30171cc0
cmp ecx, 0x16
mov dword [esp + 0x18], ebx
jl 0x30171cc8
mov dword [esp + 0x18], 0
mov ebp, dword [esp + 0x18]
mov edi, dword [esp + 0x74]
neg al
mov byte [ebx], al
mov esi, dword [esp + 0x10]
inc ebx
inc esi
mov dword [esp + 0x14], ebx
xor edx, edx
jmp 0x3016ecba
mov ecx, dword [esp + 0x38]
test ecx, ecx
je 0x30171d08
cmp eax, 0x7f
jle 0x30171d08
lea ecx, [esp + 0xc0]
push ecx
push eax
call fcn.301953f0
add esp, 8
jmp 0x3016ee8a
mov byte [esp + 0xc0], al
mov eax, 1
jmp 0x3016ee8a
mov edx, dword [esp + 0x70]
movzx ecx, cl
or ecx, edx
cmp eax, 1
mov dword [esp + 0x3c], ecx
je 0x30170106
movzx eax, byte [ebx - 1]
mov ecx, dword [edi + 0x40]
mov esi, dword [esp + 0x10]
mov ebp, dword [esp + 0x18]
mov edi, dword [esp + 0x74]
or eax, ecx
inc esi
mov dword [esp + 0x4c], eax
xor edx, edx
jmp 0x3016ecba
cmp eax, 1
mov ecx, dword [esp + 0x4c]
mov dword [esp + 0x60], edx
mov dword [esp + 0x50], ecx
je 0x30171d6d
mov eax, dword [esp + 0x70]
test eax, eax
jne 0x3017010a
movzx eax, byte [ebx - 1]
mov edx, dword [edi + 0x40]
mov ecx, dword [esp + 0x70]
mov esi, dword [esp + 0x10]
mov ebp, dword [esp + 0x18]
mov edi, dword [esp + 0x74]
or eax, edx
or eax, ecx
inc esi
mov dword [esp + 0x4c], eax
xor edx, edx
jmp 0x3016ecba
mov esi, dword [esp + 0x10]
mov edi, dword [esp + 0x74]
inc esi
xor edx, edx
jmp 0x3016ecba
mov edx, dword [esp + 0x104]
mov dword [edx], 0x34
jmp 0x3017139b
mov eax, dword [esp + 0x104]
mov dword [eax], 0x14
jmp 0x3017139b
mov ecx, dword [esp + 0x104]
mov dword [ecx], 0x34
jmp 0x3017139b
mov edx, dword [esp + 0x108]
mov eax, dword [esp + 0x3c]
mov ecx, dword [esp + 0x10c]
mov dword [edx], eax
mov edx, dword [esp + 0x4c]
mov eax, dword [esp + 0xfc]
mov dword [ecx], edx
mov ecx, dword [esp + 0x100]
mov dword [eax], ebx
mov dword [ecx], esi
mov ecx, dword [esp + 0x118]
test ecx, ecx
je 0x30171e3e
mov eax, dword [ecx]
mov edx, dword [esp + 0x74]
mov edi, ebx
mov ebp, 0x7fffffeb
sub edi, edx
sub ebp, eax
cmp ebp, edi
jge 0x30171e38
mov edx, dword [esp + 0x104]
mov dword [edx], 0x14
jmp 0x3017139b
sub eax, edx
add eax, ebx
mov dword [ecx], eax
mov ecx, dword [esp + 0xf0]
pop edi
pop esi
pop ebp
mov eax, 1
pop ebx
call fcn.3022c9c7
add esp, 0xe4
ret
mov bl, byte [esi + 1]
mov ecx, dword [esp + 0x104]
xor eax, eax
cmp bl, 0x3a
setne al
dec eax
and eax, 0xffffffee
add eax, 0x1f
mov dword [ecx], eax
jmp 0x3017139b
mov edx, dword [esp + 0x104]
mov dword [edx], 0x1f
jmp 0x3017139b
mov eax, dword [esp + 0x104]
mov dword [eax], 0x1e
jmp 0x30171397
mov dword [ebx], 7
jmp 0x30171397
mov ecx, dword [esp + 0x104]
mov dword [ecx], 8
jmp 0x3017139b
mov edx, dword [esp + 0x104]
mov dword [edx], 6
jmp 0x3017139b
mov eax, dword [esp + 0x104]
mov dword [eax], 9
jmp 0x3017139b
mov ecx, dword [esp + 0x104]
mov dword [ecx], 0xb
jmp 0x3017139b
mov edx, dword [esp + 0x104]
mov dword [edx], 0x37
jmp 0x3017139b
mov ecx, dword [esp + 0x104]
mov dword [ecx], 0x14
jmp 0x3017139b
mov edx, dword [esp + 0x104]
mov dword [edx], 0x3b
jmp 0x3017139b
mov eax, dword [esp + 0x104]
mov dword [eax], 0x3c
jmp 0x3017139b
mov eax, dword [esp + 0x104]
inc esi
mov dword [eax], 0x1c
jmp 0x3017139b
mov ecx, dword [esp + 0x104]
dec esi
mov dword [ecx], 0x1a
jmp 0x3017139b
mov edx, dword [esp + 0x104]
mov dword [edx], 0x3a
jmp 0x3017139b
mov eax, dword [esp + 0x104]
mov dword [eax], 0xf
jmp 0x3017139b
mov edx, dword [esp + 0x104]
mov dword [edx], 0xf
jmp 0x30171397
mov ecx, dword [esp + 0x104]
neg eax
sbb eax, eax
and eax, 0xffffffec
add eax, 0x23
mov dword [ecx], eax
jmp 0x30171397
mov edx, dword [esp + 0x104]
inc esi
mov dword [edx], 0x18
jmp 0x3017139b
mov eax, dword [esp + 0x104]
mov dword [eax], 0x27
jmp 0x3017139b
mov ecx, dword [esp + 0x104]
mov dword [ecx], 0x26
jmp 0x3017139b
mov eax, dword [esp + 0x104]
mov dword [eax], 0x2a
jmp 0x3017139b
mov ecx, dword [esp + 0x104]
mov dword [ecx], 0x31
jmp 0x3017139b
mov ecx, dword [esp + 0x104]
mov dword [ecx], 0x1d
jmp 0x30171397
mov edx, dword [esp + 0x104]
mov dword [edx], 0x3a
jmp 0x30171397
mov ecx, dword [esp + 0x104]
mov dword [ecx], 0x3a
jmp 0x30171397
mov edx, dword [esp + 0x104]
mov dword [edx], 0xc
dec esi
jmp 0x3017139b
mov eax, dword [esp + 0x104]
mov dword [eax], 0x36
jmp 0x30171397
mov ecx, dword [esp + 0x104]
mov dword [ecx], 0x1b
jmp 0x30171397
mov edx, dword [esp + 0x104]
mov dword [edx], 0xe
jmp 0x3017139b
mov ecx, dword [esp + 0x104]
mov dword [ecx], 0x2a
jmp 0x3017139b
mov ecx, dword [esp + 0x104]
mov dword [ecx], 0xf
jmp 0x30171397
mov edx, dword [esp + 0x104]
mov dword [edx], 0x28
jmp 0x30171397
mov eax, dword [esp + 0x104]
mov dword [eax], 0x2d
jmp 0x3017139b