Function at 0x301d289a
Capabilities:
Authenticate hmac
Encode data using base64
Parse credit card information
Parse pe header

Disassembly:
push ebp
lea ebp, [esp - 0x54]
sub esp, 0xe8
mov eax, dword [0x303328c0]
mov ecx, dword [ebp + 0x60]
mov dword [ebp + 0x50], eax
mov eax, dword [ebp + 0x5c]
mov eax, dword [eax]
push ebx
mov ebx, dword [ecx]
mov ecx, dword [ebp + 0x64]
mov edx, dword [ecx]
mov dword [ebp - 0x28], eax
shr eax, 0xb
xor ecx, ecx
inc ecx
and eax, ecx
mov dword [ebp - 0x34], eax
mov eax, dword [ebp - 0x28]
shr eax, 9
and eax, ecx
push esi
mov esi, dword [ebp + 0x78]
mov dword [ebp - 0x90], eax
xor eax, ecx
push edi
mov dword [ebp - 0x88], eax
xor edi, edi
push 0xfffffffffffffffe
pop eax
mov dword [ebp - 0x50], eax
mov dword [ebp - 0x5c], eax
mov dword [ebp - 0x48], eax
mov dword [ebp - 0x30], eax
mov eax, dword [ebp - 0x28]
and eax, ecx
shl eax, 8
mov dword [ebp - 0x38], edi
mov dword [ebp - 0x2c], edi
mov dword [ebp - 0x7c], edi
mov dword [ebp - 0x60], edi
mov dword [ebp - 0x68], ebx
mov dword [ebp - 0x8c], ebx
mov dword [ebp - 0x54], edi
mov dword [ebp - 0x80], edi
mov dword [ebp - 4], edx
mov dword [ebp - 0xc], edi
mov dword [ebp - 0x58], edi
mov dword [ebp - 0x6c], edi
mov dword [ebp - 0x74], eax
movzx ecx, byte [edx]
mov eax, dword [esi + 0x10]
add eax, 0x7f6
cmp dword [ebp + 0x7c], edi
mov dword [ebp - 0x10], edi
mov dword [ebp - 8], ecx
je 0x301d29b4
cmp ebx, eax
ja 0x301d4e46
cmp ebx, dword [ebp - 0x68]
jae 0x301d294f
mov ebx, dword [ebp - 0x68]
mov eax, dword [ebp + 0x7c]
mov eax, dword [eax]
mov edx, ebx
sub edx, dword [ebp - 0x68]
mov edi, 0x7fffffeb
sub edi, eax
cmp edi, edx
jl 0x301d4fb1
sub eax, dword [ebp - 0x68]
mov edx, dword [ebp + 0x7c]
add eax, ebx
cmp dword [ebp - 0xc], 0
mov dword [edx], eax
je 0x301d29a4
mov edi, dword [ebp - 0x8c]
cmp dword [ebp - 0xc], edi
jbe 0x301d29aa
mov eax, ebx
sub eax, dword [ebp - 0xc]
push eax
push dword [ebp - 0xc]
push edi
call fcn.3028dcc0
mov ecx, dword [ebp - 8]
mov eax, edi
sub eax, dword [ebp - 0xc]
add esp, 0xc
add ebx, eax
mov dword [ebp - 0xc], edi
jmp 0x301d29aa
mov ebx, dword [ebp - 0x8c]
mov edx, dword [ebp - 4]
mov dword [ebp - 0x68], ebx
xor edi, edi
jmp 0x301d29bd
cmp dword [esi + 0x20], eax
ja 0x301d4e46
cmp dword [ebp - 0x54], edi
je 0x301d2a19
cmp ecx, edi
je 0x301d2a19
cmp ecx, 0x5c
jne 0x301d29de
lea eax, [edx + 1]
cmp byte [eax], 0x45
jne 0x301d29de
mov dword [ebp - 0x54], edi
mov dword [ebp - 4], eax
jmp 0x301d350e
cmp dword [ebp - 0x58], edi
je 0x301d29fc
cmp dword [ebp + 0x7c], edi
jne 0x301d29f9
mov ecx, dword [ebp - 0x58]
push esi
mov eax, edx
call fcn.301d213f
mov edx, dword [ebp - 4]
add esp, 4
mov dword [ebp - 0x58], edi
test byte [ebp - 0x27], 0x40
je 0x301d3649
mov ecx, edx
mov eax, ebx
mov dword [ebp - 0x58], ebx
call fcn.301d211b
mov ebx, eax
jmp 0x301d3649
cmp ecx, 0x2a
je 0x301d2a85
cmp ecx, 0x2b
je 0x301d2a85
cmp ecx, 0x3f
je 0x301d2a85
cmp ecx, 0x7b
jne 0x301d2a39
lea eax, [edx + 1]
call fcn.301d182f
test eax, eax
jne 0x301d2a85
xor edi, edi
cmp dword [ebp - 0x58], edi
je 0x301d2a62
mov eax, dword [ebp - 0x7c]
dec dword [ebp - 0x7c]
test eax, eax
jg 0x301d2a62
cmp dword [ebp + 0x7c], edi
jne 0x301d2a5e
mov eax, dword [ebp - 4]
mov ecx, dword [ebp - 0x58]
push esi
call fcn.301d213f
add esp, 4
and dword [ebp - 0x58], 0
test byte [ebp - 0x28], 8
je 0x301d2af3
mov eax, dword [ebp - 8]
cmp eax, 0x100
jge 0x301d2a8a
mov ecx, dword [esi + 0xc]
test byte [eax + ecx], 1
jne 0x301d350e
jmp 0x301d2a9b
xor edi, edi
inc edi
jmp 0x301d2a62
push dword [ebp - 8]
call fcn.301cba31
cmp al, 1
pop ecx
je 0x301d350e
cmp dword [ebp - 8], 0x23
jne 0x301d2af3
jmp 0x301d2b7a
mov ecx, dword [esi + 0x4c]
test ecx, ecx
je 0x301d2b50
mov eax, dword [esi + 0x1c]
cmp dword [ebp - 4], eax
jae 0x301d2b7a
push dword [ebp - 0x34]
lea edx, [esi + 0x50]
push edx
push eax
push ecx
push dword [ebp - 4]
call fcn.301fd483
add esp, 0x14
test eax, eax
je 0x301d2b7a
mov ecx, dword [ebp - 4]
mov eax, dword [esi + 0x50]
lea eax, [ecx + eax - 1]
mov dword [ebp - 4], eax
cmp byte [eax], 0
jne 0x301d350e
and dword [ebp - 8], 0
test byte [ebp - 0x27], 0x40
je 0x301d2b0c
test edi, edi
jne 0x301d2b0c
mov ecx, dword [ebp - 4]
mov eax, ebx
mov dword [ebp - 0x58], ebx
call fcn.301d211b
mov ebx, eax
mov eax, dword [ebp - 8]
cmp eax, 0x2e
jg 0x301d35d1
je 0x301d35af
xor edx, edx
sub eax, edx
je 0x301d35fc
sub eax, 0x24
je 0x301d35a7
sub eax, 4
je 0x301d2b9b
dec eax
je 0x301d35fc
dec eax
je 0x301d2b8f
dec eax
jne 0x301d3649
mov dword [ebp - 0x38], 1
jmp 0x301d2b92
mov ecx, dword [esi + 0x50]
mov edx, dword [esi + 0x1c]
sub edx, ecx
cmp dword [ebp - 4], edx
ja 0x301d2b7a
cmp al, byte [esi + 0x54]
jne 0x301d2b7a
cmp ecx, 1
je 0x301d2ad9
mov eax, dword [ebp - 4]
mov al, byte [eax + 1]
cmp al, byte [esi + 0x55]
je 0x301d2ad9
inc dword [ebp - 4]
mov eax, dword [ebp - 4]
mov al, byte [eax]
test al, al
jne 0x301d2aa6
jmp 0x301d2aef
mov dword [ebp - 0x38], edx
or dword [ebp - 0x2c], 0xffffffff
jmp 0x301d4580
mov eax, dword [ebp - 0x28]
mov edi, dword [ebp - 4]
mov dword [ebp - 0x3c], eax
mov eax, dword [esi + 0x20]
inc edi
mov dword [ebp - 0x6c], eax
mov dword [ebp - 4], edi
mov al, byte [edi]
cmp al, 0x2a
mov dword [ebp - 0x44], edx
mov dword [ebp - 0x24], 0x5e
mov dword [ebp - 0x64], edx
jne 0x301d2c7e
mov edx, dword [esi + 0xc]
mov ecx, edi
inc ecx
movzx edi, byte [ecx]
test byte [edi + edx], 2
je 0x301d2c7b
and dword [ebp - 0xc], 0
mov dword [ebp - 0x10], ecx
inc ecx
mov dword [ebp - 4], ecx
movzx eax, byte [ecx]
test byte [eax + edx], 2
jne 0x301d2bdf
mov cl, byte [ecx]
cmp cl, 0x3a
je 0x301d4e54
cmp cl, 0x29
jne 0x301d2c6d
mov edi, dword [ebp - 4]
sub edi, dword [ebp - 0x10]
and dword [ebp - 0x18], 0
cmp dword [0x3032e2fc], 0
jle 0x301d2c6d
mov dword [ebp - 0x1c], str.ACCEPT
mov eax, dword [ebp - 0x1c]
cmp edi, dword [eax + 4]
jne 0x301d2c30
push edi
push dword [eax]
push dword [ebp - 0x10]
call fcn.3028d560
add esp, 0xc
test eax, eax
je 0x301d2c46
inc dword [ebp - 0x18]
mov eax, dword [ebp - 0x18]
add dword [ebp - 0x1c], 0xc
cmp eax, dword [0x3032e2fc]
jl 0x301d2c16
mov ecx, eax
jmp 0x301d2c61
mov ecx, dword [ebp - 0x18]
lea eax, [ecx + ecx*2]
mov al, byte [eax*4 + 0x3032e2b0]
mov byte [ebx], al
inc ebx
cmp al, 0x6d
jne 0x301d2c61
mov dword [esi + 0x48], 1
cmp ecx, dword [0x3032e2fc]
jl 0x301d350e
mov eax, dword [ebp + 0x68]
mov dword [eax], 0x3c
jmp 0x301d4fba
mov edi, dword [ebp - 4]
cmp al, 0x3f
jne 0x301d342d
inc edi
mov dword [ebp - 4], edi
mov cl, byte [edi]
movzx eax, cl
cmp eax, 0x3a
jg 0x301d2fc6
je 0x301d3002
cmp eax, 0x28
jg 0x301d2fac
je 0x301d2d4d
sub eax, 0x21
je 0x301d2d05
dec eax
dec eax
je 0x301d2cd6
sub eax, 3
je 0x301d2cc7
dec eax
je 0x301d32ad
jmp 0x301d3045
push 0x29
pop ecx
mov dword [ebp - 0x10], 1
jmp 0x301d379a
inc edi
mov dword [ebp - 4], edi
mov al, byte [edi]
test al, al
je 0x301d2cf7
cmp al, 0x29
je 0x301d2cee
inc edi
mov dword [ebp - 4], edi
mov al, byte [edi]
test al, al
jne 0x301d2ce0
cmp byte [edi], 0
jne 0x301d350e
mov eax, dword [ebp + 0x68]
mov dword [eax], 0x12
jmp 0x301d4fba
inc edi
mov dword [ebp - 4], edi
cmp byte [edi], 0x29
jne 0x301d2d17
mov byte [ebx], 0x6c
inc ebx
jmp 0x301d3268
mov dword [ebp - 0x24], 0x58
and dword [ebp - 0xc], 0
mov eax, dword [ebp - 0x24]
mov byte [ebx], al
mov ecx, dword [esi + 0x40]
and dword [ebp - 0x60], 0
cmp eax, 0x59
mov dword [ebp - 0x40], ebx
mov dword [ebp - 0x10], ecx
je 0x301d343c
cmp eax, 0x5a
je 0x301d343c
xor eax, eax
jmp 0x301d343f
cmp byte [edi + 1], 0x3f
mov dword [ebp - 0x24], 0x5f
jne 0x301d2d75
mov al, byte [edi + 2]
cmp al, 0x3d
je 0x301d340b
cmp al, 0x21
je 0x301d340b
cmp al, 0x3c
je 0x301d340b
or dword [ebp - 0x10], 0xffffffff
mov byte [ebx + 3], 0x63
mov edx, dword [ebp - 4]
lea eax, [edx + 1]
mov cl, byte [eax]
cmp cl, 0x52
mov dword [ebp - 0x44], 3
jne 0x301d2da6
add edx, 2
cmp byte [edx], 0x26
jne 0x301d2da6
or dword [ebp - 0x18], 0xffffffff
mov dword [ebp - 4], edx
mov byte [ebx + 3], 0x64
jmp 0x301d2ddc
cmp cl, 0x3c
jne 0x301d2db7
mov dword [ebp - 0x18], 0x3e
mov dword [ebp - 4], eax
jmp 0x301d2ddc
cmp cl, 0x27
jne 0x301d2dc5
mov dword [ebp - 0x18], 0x27
jmp 0x301d2db2
and dword [ebp - 0x18], 0
cmp cl, 0x2d
je 0x301d2dd3
cmp cl, 0x2b
jne 0x301d2ddc
mov dword [ebp - 4], eax
movzx eax, byte [eax]
mov dword [ebp - 0x10], eax
mov edi, dword [ebp - 4]
mov ecx, dword [esi + 0xc]
inc edi
movzx eax, byte [edi]
test byte [eax + ecx], 0x10
je 0x301d4e62
mov dword [ebp - 4], edi
movzx eax, byte [edi]
xor edx, edx
test byte [ecx + eax], 0x10
mov dword [ebp - 8], edx
mov dword [ebp - 0x20], edi
je 0x301d2e2d
test edx, edx
jl 0x301d2e1d
test byte [eax + 0x302c6240], 4
je 0x301d2e1a
lea edx, [edx + edx*4]
lea edx, [eax + edx*2 - 0x30]
jmp 0x301d2e1d
or edx, 0xffffffff
inc edi
mov dword [ebp - 4], edi
movzx eax, byte [edi]
test byte [ecx + eax], 0x10
jne 0x301d2e04
mov dword [ebp - 8], edx
mov eax, edi
sub eax, dword [ebp - 0x20]
cmp dword [ebp - 0x18], 0
mov dword [ebp - 0xc], eax
jle 0x301d2e4b
movzx eax, byte [edi]
inc edi
cmp eax, dword [ebp - 0x18]
mov dword [ebp - 4], edi
jne 0x301d4e73
mov al, byte [edi]
inc edi
cmp al, 0x29
mov dword [ebp - 4], edi
jne 0x301d4e73
cmp dword [ebp + 0x7c], 0
jne 0x301d340b
xor eax, eax
cmp dword [ebp - 0x10], eax
jle 0x301d2ea2
cmp edx, eax
jle 0x301d4e85
cmp dword [ebp - 0x10], 0x2d
jne 0x301d2e92
mov ecx, dword [esi + 0x30]
sub ecx, edx
inc ecx
mov edx, ecx
cmp edx, eax
jg 0x301d2e95
mov eax, dword [ebp + 0x68]
mov dword [eax], 0xf
jmp 0x301d4fba
add edx, dword [esi + 0x30]
mov eax, edx
sar eax, 8
mov byte [ebx + 5], dl
jmp 0x301d3408
cmp dword [esi + 0x28], eax
mov ecx, dword [esi + 0x24]
mov dword [ebp - 0x1c], ecx
mov dword [ebp - 0x14], eax
jle 0x301d2edc
mov edi, ecx
push dword [ebp - 0xc]
lea eax, [edi + 2]
push eax
push dword [ebp - 0x20]
call fcn.3028d560
add esp, 0xc
test eax, eax
je 0x301d2ed9
add edi, dword [esi + 0x2c]
inc dword [ebp - 0x14]
mov eax, dword [ebp - 0x14]
cmp eax, dword [esi + 0x28]
mov dword [ebp - 0x1c], edi
jl 0x301d2eb2
mov edi, dword [ebp - 4]
mov eax, dword [ebp - 0x14]
cmp eax, dword [esi + 0x28]
jge 0x301d2eff
mov eax, dword [ebp - 0x1c]
movzx ecx, byte [eax + 1]
mov ch, byte [eax]
mov eax, ecx
mov ecx, eax
sar ecx, 8
mov byte [ebx + 4], cl
mov byte [ebx + 5], al
jmp 0x301d340b
mov eax, dword [ebp - 0x28]
shr eax, 3
and eax, 1
push eax
push dword [ebp - 0xc]
mov eax, dword [esi + 0x30]
push dword [ebp - 0x20]
mov ecx, edi
call fcn.301d1926
add esp, 0xc
test eax, eax
jg 0x301d2eef
xor eax, eax
cmp dword [ebp - 0x18], eax
jne 0x301d2e84
mov edi, dword [ebp - 0x20]
cmp byte [edi], 0x52
jne 0x301d2f68
xor edx, edx
inc edx
cmp dword [ebp - 0xc], edx
jle 0x301d2f5d
movzx ecx, byte [edx + edi]
test byte [ecx + 0x302c6240], 4
je 0x301d2e84
inc edx
cmp edx, dword [ebp - 0xc]
lea eax, [eax + eax*4]
lea eax, [ecx + eax*2 - 0x30]
jl 0x301d2f3b
test eax, eax
jne 0x301d2f62
mov eax, 0xffff
mov byte [ebx + 3], 0x64
jmp 0x301d2eef
cmp dword [ebp - 0xc], 6
jne 0x301d2f92
push 6
push str.DEFINE
push edi
call fcn.3028d560
add esp, 0xc
test eax, eax
jne 0x301d2f92
mov byte [ebx + 3], 0x65
mov dword [ebp - 0x44], 1
jmp 0x301d340b
mov eax, dword [ebp - 8]
test eax, eax
jg 0x301d2eef
neg eax
sbb eax, eax
and eax, 0xffffffec
add eax, 0x23
jmp 0x301d4f52
cmp eax, 0x2b
je 0x301d3016
cmp eax, 0x2d
je 0x301d3016
cmp eax, 0x2f
jle 0x301d3045
cmp eax, 0x39
jle 0x301d3016
jmp 0x301d3045
sub eax, 0x3c
je 0x301d328a
dec eax
je 0x301d327d
dec eax
je 0x301d3271
sub eax, 5
je 0x301d3202
sub eax, 0xd
je 0x301d31c8
dec eax
dec eax
je 0x301d3012
sub eax, 0x2a
jne 0x301d3045
mov edi, dword [ebp - 4]
mov dword [ebp - 0x64], 1
mov dword [ebp - 0x24], 0x5d
inc edi
mov dword [ebp - 4], edi
jmp 0x301d340b
inc edi
mov dword [ebp - 4], edi
mov edi, dword [ebp - 4]
mov cl, byte [edi]
movzx edx, cl
cmp edx, 0x2b
jne 0x301d3029
inc edi
jmp 0x301d3152
cmp edx, 0x2d
jne 0x301d3155
lea eax, [edi + 1]
movzx edi, byte [eax]
test byte [edi + 0x302c6240], 4
jne 0x301d3150
xor edi, edi
mov dword [ebp - 0x18], edi
mov dword [ebp - 0x10], edi
lea eax, [ebp - 0x10]
jmp 0x301d30c0
cmp cl, 0x3a
je 0x301d30c5
inc dword [ebp - 4]
movzx ecx, cl
cmp ecx, 0x69
jg 0x301d309b
je 0x301d3096
cmp ecx, 0x2d
je 0x301d3091
cmp ecx, 0x4a
je 0x301d3087
cmp ecx, 0x55
je 0x301d3081
cmp ecx, 0x58
jne 0x301d4e93
or dword [eax], 0x40
jmp 0x301d30bb
or byte [eax + 1], 2
jmp 0x301d30bb
or byte [eax + 2], 8
or byte [esi + 0x3f], 8
jmp 0x301d30bb
lea eax, [ebp - 0x18]
jmp 0x301d30bb
or dword [eax], 1
jmp 0x301d30bb
cmp ecx, 0x6d
je 0x301d30b8
cmp ecx, 0x73
je 0x301d30b3
cmp ecx, 0x78
jne 0x301d4e93
or dword [eax], 8
jmp 0x301d30bb
or dword [eax], 4
jmp 0x301d30bb
or dword [eax], 2
mov ecx, dword [ebp - 4]
mov cl, byte [ecx]
cmp cl, 0x29
jne 0x301d3052
mov eax, dword [ebp - 0x10]
or eax, dword [ebp - 0x28]
mov ecx, dword [ebp - 0x18]
not ecx
and eax, ecx
mov ecx, dword [ebp - 4]
cmp byte [ecx], 0x29
mov dword [ebp - 0x3c], eax
jne 0x301d3141
mov ecx, dword [esi + 0x14]
add ecx, 3
cmp ebx, ecx
jne 0x301d30fb
mov ecx, dword [ebp + 0x7c]
cmp ecx, edi
je 0x301d30f3
cmp dword [ecx], 6
jne 0x301d30fb
mov dword [esi + 0x3c], eax
mov dword [ebp - 0x28], eax
jmp 0x301d3139
mov ecx, eax
xor ecx, dword [ebp - 0x28]
test cl, 7
je 0x301d3111
mov byte [ebx], 0x18
mov cl, al
inc ebx
and cl, 7
mov byte [ebx], cl
inc ebx
mov ecx, dword [ebp + 0x5c]
mov dword [ecx], eax
mov ecx, eax
shr ecx, 9
and ecx, 1
mov dword [ebp - 0x28], eax
mov dword [ebp - 0x90], ecx
xor ecx, 1
and eax, 1
shl eax, 8
mov dword [ebp - 0x88], ecx
mov dword [ebp - 0x74], eax
mov dword [ebp - 0xc], edi
jmp 0x301d350e
inc dword [ebp - 4]
mov dword [ebp - 0x24], 0x5d
jmp 0x301d340b
mov edi, eax
mov dword [ebp - 4], edi
movzx eax, byte [edi]
xor ecx, ecx
test byte [eax + 0x302c6240], 4
mov dword [ebp - 8], ecx
je 0x301d3180
inc edi
lea ecx, [ecx + ecx*4]
lea ecx, [eax + ecx*2 - 0x30]
mov dword [ebp - 4], edi
movzx eax, byte [edi]
test byte [eax + 0x302c6240], 4
jne 0x301d3166
mov dword [ebp - 8], ecx
cmp byte [edi], 0x29
jne 0x301d4ea4
cmp edx, 0x2d
jne 0x301d31ac
test ecx, ecx
je 0x301d4e85
mov eax, dword [esi + 0x30]
sub eax, ecx
inc eax
test eax, eax
mov dword [ebp - 8], eax
jle 0x301d2e84
jmp 0x301d385b
cmp edx, 0x2b
jne 0x301d385b
test ecx, ecx
je 0x301d4e85
add ecx, dword [esi + 0x30]
mov dword [ebp - 8], ecx
jmp 0x301d385b
inc edi
mov dword [ebp - 4], edi
mov cl, byte [edi]
cmp cl, 0x3d
je 0x301d31ef
cmp cl, 0x3e
je 0x301d31ef
cmp cl, 0x3c
je 0x301d32ad
mov eax, dword [ebp + 0x68]
mov dword [eax], 0x29
jmp 0x301d4fba
xor eax, eax
cmp cl, 0x3e
sete al
push 0x29
pop ecx
mov dword [ebp - 0x10], eax
jmp 0x301d379a
mov byte [ebx], 0x52
mov edx, dword [ebp - 4]
mov dword [ebp - 0x58], ebx
inc ebx
mov dword [ebp - 0x7c], 1
xor ecx, ecx
jmp 0x301d321e
lea ecx, [ecx + ecx*4]
lea ecx, [eax + ecx*2 - 0x30]
inc edx
mov dword [ebp - 4], edx
movzx eax, byte [edx]
test byte [eax + 0x302c6240], 4
jne 0x301d3217
cmp byte [edx], 0x29
jne 0x301d4eb2
cmp ecx, 0xff
jg 0x301d4ec0
mov byte [ebx], cl
mov eax, dword [ebp - 4]
sub eax, dword [esi + 0x18]
inc ebx
inc eax
sar eax, 8
mov byte [ebx], al
mov al, byte [ebp - 4]
sub al, byte [esi + 0x18]
mov byte [ebx + 2], 0
inc al
mov byte [ebx + 1], al
mov byte [ebx + 3], 0
add ebx, 4
and dword [ebp - 0xc], 0
jmp 0x301d350e
mov dword [ebp - 0x24], 0x5c
jmp 0x301d3009
mov dword [ebp - 0x24], 0x57
inc edi
jmp 0x301d3425
mov al, byte [edi + 1]
cmp al, 0x21
je 0x301d341c
cmp al, 0x3d
je 0x301d3413
mov edx, dword [esi + 0xc]
movzx eax, al
test byte [eax + edx], 0x10
je 0x301d4eea
mov edx, dword [esi + 0xc]
cmp cl, 0x3c
setne al
dec al
and al, 0x17
add al, 0x27
inc edi
mov dword [ebp - 4], edi
movsx ecx, al
movzx eax, byte [edi]
test byte [eax + edx], 0x10
mov dword [ebp - 0x20], edi
je 0x301d32de
mov eax, edx
inc edi
mov dword [ebp - 4], edi
movzx edx, byte [edi]
test byte [edx + eax], 0x10
jne 0x301d32d1
mov eax, edi
sub eax, dword [ebp - 0x20]
cmp dword [ebp + 0x7c], 0
mov dword [ebp - 0xc], eax
je 0x301d332a
movzx edx, byte [edi]
cmp edx, ecx
jne 0x301d4ece
cmp dword [esi + 0x28], 0x2710
jge 0x301d4edc
lea ecx, [eax + 3]
cmp ecx, dword [esi + 0x2c]
jle 0x301d33eb
cmp eax, 0x20
mov dword [esi + 0x2c], ecx
jle 0x301d33eb
mov eax, dword [ebp + 0x68]
mov dword [eax], 0x30
jmp 0x301d4fba
mov eax, dword [esi + 0x24]
and dword [ebp - 0x14], 0
mov dword [ebp - 0x1c], eax
mov eax, dword [esi + 0x28]
test eax, eax
jle 0x301d33b0
mov edi, dword [ebp - 0x1c]
mov ecx, dword [ebp - 0xc]
mov esi, dword [ebp - 0x20]
add edi, 2
xor edx, edx
repe cmpsb byte [esi], byte es:[edi]
je 0x301d3352
sbb edx, edx
sbb edx, 0xffffffff
test edx, edx
jne 0x301d337c
mov ecx, dword [ebp - 0xc]
mov edx, dword [ebp - 0x1c]
cmp byte [edx + ecx + 2], 0
jne 0x301d3377
test byte [ebp - 0x26], 8
jne 0x301d337e
mov eax, dword [ebp + 0x68]
mov dword [eax], 0x2b
jmp 0x301d4fba
or edx, 0xffffffff
test edx, edx
jl 0x301d3394
mov ecx, dword [ebp + 0x78]
mov edx, dword [ecx + 0x2c]
add dword [ebp - 0x1c], edx
inc dword [ebp - 0x14]
mov edx, dword [ebp - 0x14]
cmp edx, dword [ecx + 0x28]
jl 0x301d333b
jmp 0x301d33b0
sub eax, dword [ebp - 0x14]
mov ecx, dword [ebp + 0x78]
mov ecx, dword [ecx + 0x2c]
imul eax, ecx
push eax
mov eax, dword [ebp - 0x1c]
push eax
add eax, ecx
push eax
call fcn.3028dcc0
add esp, 0xc
mov esi, dword [ebp + 0x78]
mov ecx, dword [esi + 0x30]
mov eax, dword [ebp - 0x1c]
inc ecx
sar ecx, 8
mov byte [eax], cl
mov cl, byte [esi + 0x30]
mov esi, dword [ebp - 0x20]
inc cl
mov byte [eax + 1], cl
mov ecx, dword [ebp - 0xc]
mov edx, ecx
shr ecx, 2
lea edi, [eax + 2]
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov esi, dword [ebp + 0x78]
mov ecx, edx
mov byte [eax + ecx + 2], 0
mov edi, dword [ebp - 4]
inc edi
inc dword [esi + 0x28]
mov dword [ebp - 4], edi
inc dword [esi + 0x30]
mov eax, dword [esi + 0x30]
sar eax, 8
mov byte [ebx + 3], al
mov al, byte [esi + 0x30]
mov dword [ebp - 0x44], 2
mov byte [ebx + 4], al
mov dword [ebp - 0xc], ebx
jmp 0x301d2d22
mov dword [ebp - 0x24], 0x59
jmp 0x301d3423
mov dword [ebp - 0x24], 0x5a
inc edi
inc edi
mov dword [ebp - 4], edi
jmp 0x301d2d1e
test byte [ebp - 0x27], 0x10
je 0x301d33f2
mov dword [ebp - 0x24], 0x5d
jmp 0x301d340b
xor eax, eax
inc eax
mov ecx, dword [ebp + 0x7c]
neg ecx
sbb ecx, ecx
lea edx, [ebp - 0x60]
and ecx, edx
push ecx
push esi
push dword [ebp + 0x74]
lea ecx, [ebp - 0x70]
push ecx
lea ecx, [ebp - 0x84]
push ecx
push dword [ebp - 0x44]
push dword [ebp - 0x64]
push eax
push dword [ebp + 0x68]
lea eax, [ebp - 4]
push eax
lea eax, [ebp - 0x40]
push eax
mov eax, dword [ebp - 0x28]
and eax, 7
push eax
push dword [ebp - 0x3c]
call fcn.301d4fd4
add esp, 0x34
test eax, eax
je 0x301d4fba
mov edx, dword [ebp - 0x24]
cmp edx, 0x5f
mov eax, dword [ebp + 0x7c]
jne 0x301d34bc
test eax, eax
jne 0x301d34bc
mov esi, ebx
xor edi, edi
xor ecx, ecx
mov ch, byte [esi + 1]
inc edi
mov cl, byte [esi + 2]
add esi, ecx
cmp byte [esi], 0x54
jne 0x301d349a
cmp byte [ebx + 3], 0x65
jne 0x301d351b
cmp edi, 1
jg 0x301d4efc
push 0x65
pop edx
mov ecx, dword [ebp - 0x84]
mov esi, dword [ebp - 4]
cmp byte [esi], 0x29
jne 0x301d4f18
xor esi, esi
cmp eax, esi
je 0x301d3537
mov ecx, dword [eax]
mov edx, dword [ebp - 0x60]
mov esi, 0x7fffffeb
sub esi, ecx
lea edi, [edx - 6]
cmp esi, edi
jl 0x301d4fb1
lea ecx, [ecx + edx - 6]
mov dword [eax], ecx
mov byte [ebx], 0x5d
inc ebx
mov byte [ebx], 0
mov byte [ebx + 1], 3
inc ebx
inc ebx
mov byte [ebx], 0x54
inc ebx
mov byte [ebx], 0
mov byte [ebx + 1], 3
inc ebx
inc ebx
mov esi, dword [ebp + 0x78]
inc dword [ebp - 4]
mov edx, dword [ebp - 4]
xor edi, edi
jmp 0x301d2929
cmp edi, 2
jg 0x301d4f0a
cmp edi, 1
jne 0x301d34bc
or ecx, 0xffffffff
mov dword [ebp - 0x70], ecx
mov dword [ebp - 0x84], ecx
jmp 0x301d34c2
cmp edx, 0x65
mov ebx, dword [ebp - 0x40]
je 0x301d350b
cmp edx, 0x5c
mov eax, dword [ebp - 0x48]
mov dword [ebp - 0x50], eax
mov eax, dword [ebp - 0x30]
mov dword [ebp - 0x5c], eax
mov dword [ebp - 0x80], esi
jl 0x301d358b
cmp eax, 0xfffffffe
jne 0x301d3572
cmp ecx, esi
jl 0x301d3568
mov dword [ebp - 0x30], ecx
mov dword [ebp - 0x80], 1
jmp 0x301d356c
or dword [ebp - 0x30], 0xffffffff
or dword [ebp - 0x5c], 0xffffffff
jmp 0x301d3581
cmp ecx, esi
jl 0x301d3581
cmp dword [ebp - 0x70], esi
jge 0x301d3586
or ecx, dword [ebp - 0x10]
mov dword [ebp - 0x70], ecx
cmp dword [ebp - 0x70], esi
jl 0x301d350b
mov eax, dword [ebp - 0x70]
jmp 0x301d359f
cmp edx, 0x57
jne 0x301d350b
mov eax, dword [ebp - 0x70]
cmp eax, esi
jl 0x301d350b
mov dword [ebp - 0x48], eax
jmp 0x301d350b
mov dword [ebp - 0xc], edx
mov byte [ebx], 0x1a
jmp 0x301d35cb
cmp dword [ebp - 0x30], 0xfffffffe
jne 0x301d35b9
or dword [ebp - 0x30], 0xffffffff
mov eax, dword [ebp - 0x30]
mov dword [ebp - 0x5c], eax
mov eax, dword [ebp - 0x48]
mov dword [ebp - 0x50], eax
mov dword [ebp - 0xc], ebx
mov byte [ebx], 0xc
inc ebx
jmp 0x301d350e
sub eax, 0x3f
je 0x301d4575
sub eax, 0x1c
je 0x301d39f0
dec eax
je 0x301d36cc
dec eax
dec eax
je 0x301d36b0
sub eax, 0x1d
je 0x301d3645
dec eax
jne 0x301d3649
xor edx, edx
mov eax, dword [ebp + 0x6c]
mov ecx, dword [ebp - 0x30]
mov dword [eax], ecx
mov eax, dword [ebp + 0x70]
mov ecx, dword [ebp - 0x48]
mov dword [eax], ecx
mov eax, dword [ebp + 0x60]
mov ecx, dword [ebp + 0x64]
mov dword [eax], ebx
mov eax, dword [ebp - 4]
mov dword [ecx], eax
mov ecx, dword [ebp + 0x7c]
cmp ecx, edx
je 0x301d363d
mov eax, dword [ecx]
mov edx, ebx
sub edx, dword [ebp - 0x68]
mov esi, 0x7fffffeb
sub esi, eax
cmp esi, edx
jl 0x301d4fb1
sub eax, dword [ebp - 0x68]
add eax, ebx
mov dword [ecx], eax
xor eax, eax
inc eax
jmp 0x301d4fc4
test edi, edi
jne 0x301d3684
mov eax, dword [ebp - 8]
xor edi, edi
inc edi
cmp dword [ebp - 0x34], 0
mov byte [ebp + 0x28], al
je 0x301d441a
cmp eax, 0xc0
jl 0x301d441a
mov ecx, dword [ebp - 4]
jmp 0x301d3676
mov dword [ebp - 4], ecx
mov al, byte [ecx]
mov byte [ebp + edi + 0x28], al
inc edi
inc ecx
mov al, byte [ecx]
and al, 0xc0
cmp al, 0x80
je 0x301d366c
jmp 0x301d441a
mov esi, dword [ebp + 0x68]
push esi
lea eax, [ebp - 0x2c]
push eax
lea eax, [ebp - 0x38]
push eax
mov eax, dword [ebp - 4]
inc eax
call fcn.301d1891
add esp, 0xc
cmp dword [esi], 0
mov dword [ebp - 4], eax
jne 0x301d4fba
mov esi, dword [ebp + 0x78]
jmp 0x301d4580
test byte [ebp - 0x28], 2
je 0x301d36c0
cmp dword [ebp - 0x30], 0xfffffffe
jne 0x301d36c0
or dword [ebp - 0x30], 0xffffffff
and dword [ebp - 0xc], 0
mov byte [ebx], 0x19
jmp 0x301d35cb
mov eax, dword [ebp - 4]
push 0
push dword [ebp - 0x28]
mov dword [ebp - 0x78], eax
push dword [esi + 0x30]
mov esi, dword [ebp + 0x68]
lea eax, [ebp - 4]
push esi
push eax
call fcn.301d14c7
add esp, 0x14
cmp dword [esi], 0
jne 0x301d4fba
xor edi, edi
cmp eax, edi
jge 0x301d39d4
mov esi, eax
neg esi
cmp esi, 0x19
jne 0x301d372b
mov eax, dword [ebp - 4]
cmp byte [eax + 1], 0x5c
jne 0x301d371f
add eax, 2
cmp byte [eax], 0x45
jne 0x301d371f
mov dword [ebp - 4], eax
jmp 0x301d350b
mov dword [ebp - 0x54], 1
jmp 0x301d350b
cmp esi, 0x18
je 0x301d350b
cmp dword [ebp - 0x30], 0xfffffffe
jne 0x301d3748
cmp esi, 5
jle 0x301d3748
cmp esi, 0x16
jge 0x301d3748
or dword [ebp - 0x30], 0xffffffff
cmp esi, 0x1a
mov ecx, dword [ebp - 0x30]
mov dword [ebp - 0x5c], ecx
mov ecx, dword [ebp - 0x48]
mov dword [ebp - 0x50], ecx
jne 0x301d3951
mov ecx, dword [ebp - 4]
inc ecx
mov dl, byte [ecx]
cmp dl, 0x3c
je 0x301d3776
cmp dl, 0x27
je 0x301d3776
cmp dl, 0x7b
jne 0x301d3951
mov dword [ebp - 4], ecx
mov al, byte [ecx]
cmp al, 0x3c
mov dword [ebp - 0x10], edi
jne 0x301d3786
add al, 2
jmp 0x301d3791
cmp al, 0x27
setne al
dec al
and al, 0xaa
add al, 0x7d
mov esi, dword [ebp + 0x78]
mov edi, dword [ebp - 4]
movsx ecx, al
mov edx, dword [esi + 0xc]
inc edi
mov dword [ebp - 4], edi
movzx eax, byte [edi]
test byte [eax + edx], 0x10
mov dword [ebp - 0x20], edi
je 0x301d37bc
mov eax, edx
inc edi
mov dword [ebp - 4], edi
movzx edx, byte [edi]
test byte [edx + eax], 0x10
jne 0x301d37af
mov eax, edi
sub eax, dword [ebp - 0x20]
cmp dword [ebp + 0x7c], 0
mov dword [ebp - 0xc], eax
je 0x301d37e4
movzx edx, byte [edi]
cmp edx, ecx
jne 0x301d4ece
cmp eax, 0x20
jg 0x301d331c
and dword [ebp - 8], 0
jmp 0x301d3851
and dword [ebp - 0x14], 0
cmp dword [esi + 0x28], 0
mov edi, dword [esi + 0x24]
jle 0x301d3815
push dword [ebp - 0xc]
lea eax, [edi + 2]
push eax
push dword [ebp - 0x20]
call fcn.3028d560
add esp, 0xc
test eax, eax
je 0x301d3815
add edi, dword [esi + 0x2c]
inc dword [ebp - 0x14]
mov eax, dword [ebp - 0x14]
cmp eax, dword [esi + 0x28]
jl 0x301d37f1
mov eax, dword [ebp - 0x14]
cmp eax, dword [esi + 0x28]
jge 0x301d3828
movzx eax, byte [edi + 1]
mov ah, byte [edi]
mov dword [ebp - 8], eax
jmp 0x301d3851
mov eax, dword [ebp - 0x28]
mov ecx, dword [ebp - 4]
shr eax, 3
and eax, 1
push eax
push dword [ebp - 0xc]
mov eax, dword [esi + 0x30]
push dword [ebp - 0x20]
call fcn.301d1926
add esp, 0xc
test eax, eax
mov dword [ebp - 8], eax
jle 0x301d2e84
cmp dword [ebp - 0x10], 0
je 0x301d3961
mov eax, dword [esi + 0x14]
xor edi, edi
cmp dword [ebp + 0x7c], edi
mov dword [ebp - 0xc], ebx
mov dword [ebp - 0x18], eax
jne 0x301d3908
cmp dword [ebp - 8], edi
mov byte [ebx], 0
je 0x301d388a
push dword [ebp - 8]
mov eax, dword [esi + 0x14]
push dword [ebp - 0x34]
call fcn.301d1ce5
pop ecx
pop ecx
mov dword [ebp - 0x18], eax
cmp eax, edi
jne 0x301d38df
mov eax, dword [ebp - 0x28]
mov ecx, dword [ebp - 4]
shr eax, 3
and eax, 1
push eax
push dword [ebp - 8]
mov eax, dword [esi + 0x30]
push edi
call fcn.301d1926
add esp, 0xc
test eax, eax
jl 0x301d2e84
mov eax, dword [esi + 0x14]
mov ecx, dword [ebp - 8]
add ecx, eax
mov dword [ebp - 0x18], ecx
mov ecx, ebx
sub ecx, eax
mov eax, dword [esi + 0x20]
add ecx, 4
sar ecx, 8
mov byte [eax], cl
mov ecx, dword [esi + 0x20]
mov al, bl
sub al, byte [esi + 0x14]
add al, 4
mov byte [ecx + 1], al
add dword [esi + 0x20], 2
jmp 0x301d3905
xor ecx, ecx
mov ch, byte [eax + 1]
mov cl, byte [eax + 2]
test ecx, ecx
jne 0x301d3908
push dword [ebp - 0x34]
mov eax, dword [ebp + 0x74]
push ebx
push dword [ebp - 0x18]
call fcn.301d1ff0
add esp, 0xc
test eax, eax
jne 0x301d4f26
mov eax, dword [ebp - 0x18]
mov byte [ebx], 0x5c
mov byte [ebx + 1], 0
mov byte [ebx + 2], 6
add ebx, 3
mov byte [ebx], 0x51
mov ecx, eax
sub ecx, dword [esi + 0x14]
add ebx, 3
sar ecx, 8
mov byte [ebx - 2], cl
sub al, byte [esi + 0x14]
mov byte [ebx - 1], al
mov byte [ebx], 0x54
mov byte [ebx + 1], 0
mov byte [ebx + 2], 6
add ebx, 3
cmp dword [ebp - 0x30], 0xfffffffe
mov dword [ebp - 0x60], 9
jne 0x301d350e
jmp 0x301d446c
cmp esi, 0x1b
jl 0x301d39a2
mov esi, dword [ebp + 0x78]
push 0xffffffffffffffe5
pop ecx
sub ecx, eax
mov dword [ebp - 8], ecx
cmp dword [ebp - 0x30], 0xfffffffe
jne 0x301d396b
or dword [ebp - 0x30], 0xffffffff
mov ecx, dword [ebp - 8]
mov byte [ebx], 0x50
mov dword [ebp - 0xc], ebx
inc ebx
mov eax, ecx
sar eax, 8
mov byte [ebx], al
mov byte [ebx + 1], cl
inc ebx
xor eax, eax
inc ebx
inc eax
cmp ecx, 0x20
jge 0x301d398b
shl eax, cl
or dword [esi + 0x38], eax
cmp ecx, dword [esi + 0x34]
jle 0x301d350e
mov eax, dword [ebp - 8]
mov dword [esi + 0x34], eax
jmp 0x301d350e
cmp esi, 0x15
je 0x301d4f34
cmp esi, 0xe
je 0x301d4f34
cmp esi, 0xf
je 0x301d4f34
cmp esi, 5
jle 0x301d39ca
cmp esi, 0x16
mov dword [ebp - 0xc], ebx
jl 0x301d39cd
mov dword [ebp - 0xc], edi
neg al
jmp 0x301d43ed
cmp dword [ebp - 0x34], edi
je 0x301d4411
cmp eax, 0x7f
jle 0x301d4411
lea ecx, [ebp + 0x28]
push ecx
push eax
jmp 0x301d4406
mov eax, dword [ebp - 4]
mov al, byte [eax + 1]
cmp al, 0x3a
mov dword [ebp - 0xc], ebx
je 0x301d3a05
cmp al, 0x2e
je 0x301d3a05
cmp al, 0x3d
jne 0x301d3a1c
lea eax, [ebp - 0x78]
push eax
mov eax, dword [ebp - 4]
mov ecx, esi
call fcn.301d2022
test eax, eax
pop ecx
jne 0x301d4f3f
and dword [ebp - 0x50], 0
mov eax, dword [ebp - 4]
inc eax
mov dword [ebp - 4], eax
movzx esi, byte [eax]
cmp esi, 0x5c
mov dword [ebp - 8], esi
jne 0x301d3a57
inc eax
cmp byte [eax], 0x45
jne 0x301d3a3d
mov dword [ebp - 4], eax
jmp 0x301d3a20
push 3
push 0x302c63d8
push eax
call fcn.3028d560
add esp, 0xc
test eax, eax
jne 0x301d3a6b
add dword [ebp - 4], 3
jmp 0x301d3a20
cmp dword [ebp - 0x50], 0
jne 0x301d3a6b
cmp esi, 0x5e
jne 0x301d3a6b
mov dword [ebp - 0x50], 1
jmp 0x301d3a20
and dword [ebp - 0x20], 0
or dword [ebp - 0x18], 0xffffffff
push 8
xor eax, eax
and dword [ebp - 0x24], eax
cmp esi, 0x5d
pop ecx
lea edi, [ebp + 0x30]
rep stosd dword es:[edi], eax
lea edi, [ebx + 4]
mov dword [ebp - 0x1c], edi
jne 0x301d3a9a
mov dword [ebp - 0x18], eax
mov dword [ebp - 0x20], 1
jmp 0x301d4388
test esi, esi
je 0x301d4f85
cmp dword [ebp - 0x34], 0
je 0x301d3b06
cmp dword [ebp - 8], 0x7f
jle 0x301d3b06
mov eax, dword [ebp - 4]
movzx eax, byte [eax]
cmp eax, 0xc0
mov dword [ebp - 8], eax
jl 0x301d3b06
and eax, 0x3f
movzx esi, byte [eax + 0x302e0080]
mov eax, dword [esi*4 + 0x302e0064]
and eax, dword [ebp - 8]
lea ecx, [esi + esi*2]
shl ecx, 1
shl eax, cl
mov dword [ebp - 8], eax
xor eax, eax
inc eax
cmp esi, eax
mov dword [ebp - 0x44], eax
jl 0x301d3b03
mov edx, dword [ebp - 0x44]
mov eax, dword [ebp - 4]
movzx eax, byte [edx + eax]
sub ecx, 6
and eax, 0x3f
shl eax, cl
or dword [ebp - 8], eax
inc dword [ebp - 0x44]
cmp dword [ebp - 0x44], esi
jle 0x301d3ae6
add dword [ebp - 4], esi
cmp dword [ebp - 0x54], 0
je 0x301d3b2c
cmp dword [ebp - 8], 0x5c
jne 0x301d4096
mov eax, dword [ebp - 4]
inc eax
cmp byte [eax], 0x45
jne 0x301d4096
and dword [ebp - 0x54], 0
jmp 0x301d3cd8
cmp dword [ebp - 8], 0x5b
jne 0x301d3c5a
mov edx, dword [ebp - 4]
mov al, byte [edx + 1]
cmp al, 0x3a
je 0x301d3b4c
cmp al, 0x2e
je 0x301d3b4c
cmp al, 0x3d
jne 0x301d4096
mov esi, dword [ebp + 0x78]
lea eax, [ebp - 0x78]
push eax
mov ecx, esi
mov eax, edx
call fcn.301d2022
test eax, eax
pop ecx
je 0x301d4096
mov eax, dword [esi + 8]
and dword [ebp - 0x3c], 0
mov dword [ebp - 0x64], eax
mov eax, dword [ebp - 4]
cmp byte [eax + 1], 0x3a
jne 0x301d4f59
inc eax
inc eax
mov dword [ebp - 4], eax
cmp byte [eax], 0x5e
jne 0x301d3b91
inc eax
mov dword [ebp - 0x3c], 1
mov dword [ebp - 4], eax
mov ecx, dword [ebp - 0x78]
sub ecx, eax
push ecx
push eax
call fcn.301d2058
test eax, eax
pop ecx
pop ecx
jl 0x301d4f64
test byte [ebp - 0x28], 1
je 0x301d3bb4
cmp eax, 2
jg 0x301d3bb4
xor eax, eax
mov edx, dword [ebp - 0x64]
lea eax, [eax + eax*2]
shl eax, 2
mov esi, dword [eax + 0x302c6198]
push 8
add esi, edx
pop ecx
lea edi, [ebp]
rep movsd dword es:[edi], dword [esi]
mov ecx, dword [eax + 0x302c619c]
mov edi, dword [eax + 0x302c61a0]
xor eax, eax
cmp ecx, eax
jl 0x301d3c05
xor esi, esi
add ecx, edx
cmp edi, eax
jl 0x301d3bf6
mov dl, byte [ecx + esi]
or byte [ebp + esi], dl
inc esi
cmp esi, 0x20
jl 0x301d3be7
jmp 0x301d3c05
mov dl, byte [ecx + esi]
not dl
and byte [ebp + esi], dl
inc esi
cmp esi, 0x20
jl 0x301d3bf6
cmp edi, eax
jge 0x301d3c0b
neg edi
cmp edi, 1
jne 0x301d3c16
and byte [ebp + 1], 0xc3
jmp 0x301d3c1f
cmp edi, 2
jne 0x301d3c1f
and byte [ebp + 0xb], 0x7f
cmp dword [ebp - 0x3c], eax
je 0x301d3c36
mov cl, byte [ebp + eax]
not cl
or byte [ebp + eax + 0x30], cl
inc eax
cmp eax, 0x20
jl 0x301d3c24
jmp 0x301d3c44
mov cl, byte [ebp + eax]
or byte [ebp + eax + 0x30], cl
inc eax
cmp eax, 0x20
jl 0x301d3c36
mov eax, dword [ebp - 0x78]
mov edi, dword [ebp - 0x1c]
inc eax
mov dword [ebp - 4], eax
mov dword [ebp - 0x20], 0xa
jmp 0x301d435e
cmp dword [ebp - 8], 0x5c
jne 0x301d4096
mov eax, dword [ebp + 0x78]
mov esi, dword [ebp + 0x68]
push 1
push dword [ebp - 0x28]
push dword [eax + 0x30]
lea eax, [ebp - 4]
push esi
push eax
call fcn.301d14c7
add esp, 0x14
cmp dword [esi], 0
mov dword [ebp - 8], eax
jne 0x301d4fba
mov edx, eax
neg edx
cmp edx, 5
jne 0x301d3ca0
mov dword [ebp - 8], 8
jmp 0x301d4096
cmp edx, 0x15
jne 0x301d3cb1
mov dword [ebp - 8], 0x58
jmp 0x301d4096
cmp edx, 0x10
jne 0x301d3cc2
mov dword [ebp - 8], 0x52
jmp 0x301d4096
cmp edx, 0x19
jne 0x301d3cec
mov eax, dword [ebp - 4]
cmp byte [eax + 1], 0x5c
jne 0x301d3ce0
add eax, 2
cmp byte [eax], 0x45
jne 0x301d3ce0
mov dword [ebp - 4], eax
jmp 0x301d435e
mov dword [ebp - 0x54], 1
jmp 0x301d435e
cmp edx, 0x18
je 0x301d435e
test eax, eax
jge 0x301d4096
mov ecx, dword [ebp + 0x78]
add dword [ebp - 0x20], 2
mov ecx, dword [ecx + 8]
xor esi, esi
cmp dword [ebp + 0x7c], esi
jne 0x301d3dcb
mov eax, edx
sub eax, 6
je 0x301d3db9
dec eax
je 0x301d3da6
dec eax
je 0x301d3d80
dec eax
je 0x301d3d63
dec eax
je 0x301d3d4e
dec eax
je 0x301d3d38
sub eax, 0xd
jmp 0x301d3dfb
mov al, byte [ecx + esi + 0xa0]
or byte [ebp + esi + 0x30], al
inc esi
cmp esi, 0x20
jl 0x301d3d38
jmp 0x301d435e
mov al, byte [ecx + esi + 0xa0]
not al
or byte [ebp + esi + 0x30], al
inc esi
cmp esi, 0x20
jl 0x301d3d4e
jmp 0x301d3d9a
lea eax, [ebp + 0x30]
sub ecx, eax
lea eax, [ebp + esi + 0x30]
mov dl, byte [eax + ecx]
or byte [eax], dl
inc esi
cmp esi, 0x20
jl 0x301d3d68
and byte [ebp + 0x31], 0xf7
jmp 0x301d435e
lea eax, [ebp + 0x30]
sub ecx, eax
lea eax, [ebp + esi + 0x30]
mov dl, byte [eax + ecx]
not dl
or byte [eax], dl
inc esi
cmp esi, 0x20
jl 0x301d3d85
or byte [ebp + 0x31], 8
mov dword [ebp - 0x10], 1
jmp 0x301d435e
mov al, byte [ecx + esi + 0x40]
or byte [ebp + esi + 0x30], al
inc esi
cmp esi, 0x20
jl 0x301d3da6
jmp 0x301d435e
mov al, byte [ecx + esi + 0x40]
not al
or byte [ebp + esi + 0x30], al
inc esi
cmp esi, 0x20
jl 0x301d3db9
jmp 0x301d3d9a
cmp eax, 0xfffffff9
je 0x301d435e
cmp eax, 0xfffffffa
je 0x301d435e
cmp eax, 0xfffffff5
je 0x301d435e
cmp eax, 0xfffffff6
je 0x301d435e
cmp eax, 0xfffffff7
je 0x301d435e
cmp eax, 0xfffffff8
je 0x301d435e
cmp edx, 0x12
jne 0x301d3e9f
or byte [ebp + 0x31], 2
or byte [ebp + 0x34], 1
or byte [ebp + 0x44], 1
cmp dword [ebp - 0x34], esi
je 0x301d435e
mov byte [edi], 1
inc edi
push edi
push 0x1680
mov dword [ebp - 0x24], 1
call fcn.301fd827
add edi, eax
mov byte [edi], 1
inc edi
push edi
push 0x180e
call fcn.301fd827
add edi, eax
mov byte [edi], 2
inc edi
push edi
push 0x2000
call fcn.301fd827
add edi, eax
push edi
push 0x200a
call fcn.301fd827
add edi, eax
mov byte [edi], 1
inc edi
push edi
push 0x202f
call fcn.301fd827
add edi, eax
mov byte [edi], 1
inc edi
push edi
push 0x205f
call fcn.301fd827
add edi, eax
mov byte [edi], 1
inc edi
push edi
push 0x3000
call fcn.301fd827
add esp, 0x38
jmp 0x301d430b
cmp edx, 0x11
jne 0x301d3fc2
xor ecx, ecx
mov esi, 0xfe
mov eax, ecx
dec eax
mov edx, 0xff
je 0x301d3ec7
sub eax, 3
je 0x301d3ec3
sub eax, 0x10
jne 0x301d3ecc
mov edx, esi
jmp 0x301d3ecc
mov edx, 0xfd
or byte [ebp + ecx + 0x30], dl
inc ecx
cmp ecx, 0x20
jl 0x301d3eaf
cmp dword [ebp - 0x34], 0
je 0x301d435e
mov byte [edi], 2
inc edi
push edi
push 0x100
mov dword [ebp - 0x24], 1
call fcn.301fd827
add edi, eax
push edi
push 0x167f
call fcn.301fd827
add edi, eax
mov byte [edi], 2
inc edi
push edi
push 0x1681
call fcn.301fd827
add edi, eax
push edi
push 0x180d
call fcn.301fd827
add edi, eax
mov byte [edi], 2
inc edi
push edi
push 0x180f
call fcn.301fd827
add edi, eax
push edi
push 0x1fff
call fcn.301fd827
add edi, eax
mov byte [edi], 2
inc edi
push edi
push 0x200b
call fcn.301fd827
add edi, eax
push edi
push 0x202e
call fcn.301fd827
add edi, eax
add esp, 0x40
mov byte [edi], 2
inc edi
push edi
push 0x2030
call fcn.301fd827
add edi, eax
push edi
push 0x205e
call fcn.301fd827
add edi, eax
mov byte [edi], 2
inc edi
push edi
push 0x2060
call fcn.301fd827
add edi, eax
push edi
push 0x2fff
call fcn.301fd827
add edi, eax
mov byte [edi], 2
inc edi
push edi
push 0x3001
call fcn.301fd827
add edi, eax
push edi
push SysReAllocString
call fcn.301fd827
add esp, 0x30
jmp 0x301d430b
cmp edx, 0x14
jne 0x301d4003
or byte [ebp + 0x31], 0x3c
or byte [ebp + 0x40], 0x20
cmp dword [ebp - 0x34], esi
je 0x301d435e
mov byte [edi], 2
inc edi
push edi
push 0x2028
mov dword [ebp - 0x24], 1
call fcn.301fd827
add edi, eax
push edi
push 0x2029
call fcn.301fd827
add esp, 0x10
jmp 0x301d430b
cmp edx, 0x13
jne 0x301d407f
xor eax, eax
mov edx, eax
dec edx
mov ecx, 0xff
je 0x301d401e
sub edx, 0xf
jne 0x301d4023
add ecx, 0xffffffe0
jmp 0x301d4023
mov ecx, 0xc3
or byte [ebp + eax + 0x30], cl
inc eax
cmp eax, 0x20
jl 0x301d400a
cmp dword [ebp - 0x34], esi
je 0x301d435e
mov byte [edi], 2
inc edi
push edi
push 0x100
mov dword [ebp - 0x24], 1
call fcn.301fd827
add edi, eax
push edi
push 0x2027
call fcn.301fd827
add edi, eax
mov byte [edi], 2
inc edi
push edi
push 0x2029
call fcn.301fd827
add edi, eax
push edi
push SysReAllocString
call fcn.301fd827
add esp, 0x20
jmp 0x301d430b
test byte [ebp - 0x28], 0x40
jne 0x301d4f6f
mov eax, dword [ebp - 4]
movzx eax, byte [eax]
sub dword [ebp - 0x20], 2
mov dword [ebp - 8], eax
mov ecx, dword [ebp - 4]
jmp 0x301d40ac
lea eax, [ecx + 2]
cmp byte [eax], 0x45
jne 0x301d40b2
and dword [ebp - 0x54], 0
mov ecx, eax
mov dword [ebp - 4], ecx
cmp byte [ecx + 1], 0x5c
je 0x301d409b
cmp dword [ebp - 0x54], 0
mov dword [ebp - 0x3c], ecx
jne 0x301d42da
mov eax, dword [ebp - 4]
cmp byte [eax + 1], 0x2d
jne 0x301d42da
push 2
pop ecx
add eax, ecx
mov dword [ebp - 4], eax
cmp byte [eax], 0x5c
jne 0x301d4114
cmp byte [eax + 1], 0x45
jne 0x301d4106
add eax, ecx
mov dword [ebp - 4], eax
cmp byte [eax], 0x5c
je 0x301d40d9
jmp 0x301d4106
cmp byte [eax + 1], 0x51
jne 0x301d4114
add eax, ecx
mov dword [ebp - 4], eax
cmp byte [eax], 0x5c
jne 0x301d410d
cmp byte [eax + 1], 0x45
jne 0x301d410d
add eax, ecx
mov dword [ebp - 4], eax
cmp byte [eax], 0x5c
je 0x301d40eb
jmp 0x301d4114
mov dword [ebp - 0x54], 1
mov al, byte [eax]
test al, al
je 0x301d42d4
cmp dword [ebp - 0x54], 0
jne 0x301d412c
cmp al, 0x5d
je 0x301d42d4
cmp dword [ebp - 0x34], 0
movzx eax, al
mov dword [ebp - 0x14], eax
je 0x301d4187
cmp eax, 0xc0
jl 0x301d4187
and eax, 0x3f
movzx esi, byte [eax + 0x302e0080]
mov eax, dword [esi*4 + 0x302e0064]
and eax, dword [ebp - 0x14]
lea ecx, [esi + esi*2]
shl ecx, 1
shl eax, cl
mov dword [ebp - 0x14], eax
xor eax, eax
inc eax
cmp esi, eax
mov dword [ebp - 0x44], eax
jl 0x301d4184
mov edx, dword [ebp - 0x44]
mov eax, dword [ebp - 4]
movzx eax, byte [edx + eax]
sub ecx, 6
and eax, 0x3f
shl eax, cl
or dword [ebp - 0x14], eax
inc dword [ebp - 0x44]
cmp dword [ebp - 0x44], esi
jle 0x301d4167
add dword [ebp - 4], esi
cmp dword [ebp - 0x54], 0
jne 0x301d41ea
cmp dword [ebp - 0x14], 0x5c
jne 0x301d41ea
mov eax, dword [ebp + 0x78]
mov esi, dword [ebp + 0x68]
push 1
push dword [ebp - 0x28]
push dword [eax + 0x30]
lea eax, [ebp - 4]
push esi
push eax
call fcn.301d14c7
add esp, 0x14
cmp dword [esi], 0
mov dword [ebp - 0x14], eax
jne 0x301d4fba
test eax, eax
jge 0x301d41ea
cmp eax, 0xfffffffb
jne 0x301d41cc
mov dword [ebp - 0x14], 8
jmp 0x301d41ea
cmp eax, 0xffffffeb
jne 0x301d41da
mov dword [ebp - 0x14], 0x58
jmp 0x301d41ea
cmp eax, 0xfffffff0
jne 0x301d42d4
mov dword [ebp - 0x14], 0x52
mov esi, dword [ebp - 0x14]
cmp esi, dword [ebp - 8]
jl 0x301d4f7a
je 0x301d42da
cmp dword [ebp - 0x34], 0
je 0x301d4253
cmp esi, 0xff
jg 0x301d4215
test byte [ebp - 0x28], 1
je 0x301d4253
cmp esi, 0x7f
jle 0x301d4253
mov byte [edi], 2
inc edi
push edi
push dword [ebp - 8]
mov dword [ebp - 0x24], 1
call fcn.301fd827
add edi, eax
push edi
push esi
call fcn.301fd827
add edi, eax
add esp, 0x10
test byte [ebp - 0x28], 1
mov dword [ebp - 0x1c], edi
je 0x301d435e
push 0x7f
pop esi
cmp dword [ebp - 8], esi
jg 0x301d435e
mov dword [ebp - 0x14], esi
mov ecx, dword [ebp - 0x20]
mov eax, esi
sub eax, dword [ebp - 8]
cmp dword [ebp + 0x7c], 0
lea eax, [ecx + eax + 1]
mov dword [ebp - 0x20], eax
mov dword [ebp - 0x18], esi
jne 0x301d435e
mov eax, dword [ebp - 0x14]
cmp dword [ebp - 8], eax
jg 0x301d435e
mov eax, dword [ebp - 0x28]
and eax, 1
mov dword [ebp - 0x3c], eax
mov ecx, dword [ebp - 8]
mov eax, ecx
cdq
push 8
pop esi
idiv esi
and ecx, 7
lea esi, [ebp + eax + 0x30]
mov al, 1
shl al, cl
or byte [esi], al
cmp dword [ebp - 0x3c], 0
je 0x301d42c4
mov eax, dword [ebp + 0x78]
mov eax, dword [eax + 4]
mov ecx, dword [ebp - 8]
movzx ecx, byte [eax + ecx]
mov eax, ecx
cdq
push 8
pop esi
idiv esi
and ecx, 7
lea esi, [ebp + eax + 0x30]
mov al, 1
shl al, cl
or byte [esi], al
inc dword [ebp - 8]
mov eax, dword [ebp - 8]
cmp eax, dword [ebp - 0x14]
jle 0x301d4284
jmp 0x301d435e
mov eax, dword [ebp - 0x3c]
mov dword [ebp - 4], eax
cmp dword [ebp - 0x34], 0
je 0x301d4312
cmp dword [ebp - 8], 0xff
jg 0x301d42f5
test byte [ebp - 0x28], 1
je 0x301d4312
cmp dword [ebp - 8], 0x7f
jle 0x301d4312
mov byte [edi], 1
inc edi
push edi
push dword [ebp - 8]
mov dword [ebp - 0x24], 1
call fcn.301fd827
pop ecx
pop ecx
add edi, eax
mov dword [ebp - 0x1c], edi
jmp 0x301d435e
mov eax, dword [ebp - 8]
cdq
push 8
pop ecx
idiv ecx
mov dl, 1
lea esi, [ebp + eax + 0x30]
mov eax, dword [ebp - 8]
mov ecx, eax
and ecx, 7
shl dl, cl
or byte [esi], dl
test byte [ebp - 0x28], 1
je 0x301d4358
mov ecx, dword [ebp + 0x78]
mov ecx, dword [ecx + 4]
movzx ecx, byte [ecx + eax]
mov eax, ecx
cdq
push 8
pop esi
idiv esi
mov dword [ebp - 8], ecx
and ecx, 7
lea esi, [ebp + eax + 0x30]
mov al, 1
shl al, cl
or byte [esi], al
mov eax, dword [ebp - 8]
inc dword [ebp - 0x20]
mov dword [ebp - 0x18], eax
inc dword [ebp - 4]
mov eax, dword [ebp - 4]
movzx eax, byte [eax]
test eax, eax
mov dword [ebp - 8], eax
je 0x301d4f85
cmp eax, 0x5d
jne 0x301d3aa2
cmp dword [ebp - 0x54], 0
jne 0x301d3aa2
mov eax, dword [ebp - 0x18]
mov edx, dword [ebp - 0x50]
test edx, edx
mov cl, byte [ebp + 0x31]
mov esi, dword [ebp + 0x78]
je 0x301d439d
and cl, 0x24
cmp cl, 0x24
jmp 0x301d43a0
test cl, 0x24
je 0x301d43a6
or byte [esi + 0x3f], 4
xor ecx, ecx
cmp dword [ebp - 0x20], 1
jne 0x301d44bb
cmp dword [ebp - 0x24], ecx
jne 0x301d44bb
cmp dword [ebp - 0x34], ecx
je 0x301d43cf
cmp edx, ecx
je 0x301d43cf
cmp eax, 0x80
jge 0x301d44bb
cmp edx, ecx
mov esi, dword [ebp - 0x48]
mov dword [ebp - 0x50], esi
je 0x301d43f5
cmp dword [ebp - 0x30], 0xfffffffe
jne 0x301d43e3
or dword [ebp - 0x30], 0xffffffff
mov ecx, dword [ebp - 0x30]
mov byte [ebx], 0x1d
mov dword [ebp - 0x5c], ecx
inc ebx
mov byte [ebx], al
inc ebx
jmp 0x301d350b
cmp dword [ebp - 0x34], ecx
je 0x301d4411
cmp eax, 0x7f
jle 0x301d4411
lea eax, [ebp + 0x28]
push eax
push dword [ebp - 0x18]
call fcn.301fd827
pop ecx
pop ecx
mov edi, eax
jmp 0x301d4417
xor edi, edi
mov byte [ebp + 0x28], al
inc edi
mov esi, dword [ebp + 0x78]
test byte [ebp - 0x28], 1
mov dword [ebp - 0xc], ebx
setne al
add al, 0x1b
mov byte [ebx], al
inc ebx
xor eax, eax
test edi, edi
jle 0x301d443b
mov cl, byte [ebp + eax + 0x28]
mov byte [ebx], cl
inc ebx
inc eax
cmp eax, edi
jl 0x301d442f
cmp byte [ebp + 0x28], 0xd
je 0x301d4447
cmp byte [ebp + 0x28], 0xa
jne 0x301d444b
or byte [esi + 0x3f], 4
mov eax, dword [ebp - 0x30]
cmp eax, 0xfffffffe
jne 0x301d4497
or dword [ebp - 0x5c], 0xffffffff
cmp edi, 1
mov eax, dword [ebp - 0x48]
mov dword [ebp - 0x50], eax
je 0x301d4475
cmp dword [ebp - 0x74], 0
je 0x301d4475
or dword [ebp - 0x48], 0xffffffff
or dword [ebp - 0x30], 0xffffffff
jmp 0x301d350e
movzx eax, byte [ebp + 0x28]
or eax, dword [ebp - 0x74]
cmp edi, 1
mov dword [ebp - 0x30], eax
je 0x301d350e
movzx eax, byte [ebx - 1]
or eax, dword [esi + 0x40]
mov dword [ebp - 0x48], eax
jmp 0x301d350e
cmp edi, 1
mov dword [ebp - 0x5c], eax
mov eax, dword [ebp - 0x48]
mov dword [ebp - 0x50], eax
je 0x301d44af
cmp dword [ebp - 0x74], 0
jne 0x301d350e
movzx eax, byte [ebx - 1]
or eax, dword [esi + 0x40]
or eax, dword [ebp - 0x74]
jmp 0x301d448f
cmp dword [ebp - 0x30], 0xfffffffe
jne 0x301d44c5
or dword [ebp - 0x30], 0xffffffff
cmp dword [ebp - 0x24], ecx
mov eax, dword [ebp - 0x30]
mov dword [ebp - 0x5c], eax
mov eax, dword [ebp - 0x48]
mov dword [ebp - 0x50], eax
je 0x301d4533
mov byte [edi], 0
inc edi
mov byte [ebx], 0x4f
add ebx, 3
cmp edx, ecx
setne al
cmp dword [ebp - 0x20], ecx
mov dword [ebp - 0x1c], edi
mov byte [ebx], al
jle 0x301d4518
or al, 2
mov byte [ebx], al
inc ebx
mov eax, edi
sub eax, ebx
push eax
lea eax, [ebx + 0x20]
push ebx
push eax
call fcn.3028dcc0
mov eax, dword [ebp - 0x1c]
add esp, 0xc
push 8
mov edi, ebx
pop ecx
lea esi, [ebp + 0x30]
rep movsd dword es:[edi], dword [esi]
lea ebx, [eax + 0x20]
jmp 0x301d451a
mov ebx, edi
mov eax, dword [ebp - 0xc]
mov ecx, ebx
sub ecx, eax
sar ecx, 8
mov byte [eax + 1], cl
mov cl, bl
sub cl, al
mov byte [eax + 2], cl
jmp 0x301d350b
cmp edx, ecx
je 0x301d4557
mov byte [ebx], 0x4e
inc ebx
cmp dword [ebp + 0x7c], ecx
jne 0x301d456d
lea eax, [ebp + 0x30]
push 0x20
mov esi, ebx
sub eax, ebx
pop edi
mov cl, byte [eax + esi]
not cl
mov byte [esi], cl
inc esi
dec edi
jne 0x301d454a
jmp 0x301d456d
cmp dword [ebp - 0x10], 0
push 8
setne al
add al, 0x4d
mov byte [ebx], al
inc ebx
pop ecx
lea esi, [ebp + 0x30]
mov edi, ebx
rep movsd dword es:[edi], dword [esi]
add ebx, 0x20
jmp 0x301d350b
and dword [ebp - 0x38], 0
mov dword [ebp - 0x2c], 1
cmp dword [ebp - 0xc], 0
je 0x301d4f90
mov eax, dword [ebp - 0x38]
test eax, eax
jne 0x301d459d
mov ecx, dword [ebp - 0x5c]
mov dword [ebp - 0x30], ecx
mov ecx, dword [ebp - 0x50]
mov dword [ebp - 0x48], ecx
sub eax, dword [ebp - 0x2c]
mov edi, dword [ebp - 0xc]
neg eax
sbb eax, eax
and dword [ebp - 0x10], 0
and dword [ebp - 0x14], 0
and eax, 0x200
mov dword [ebp - 0x94], eax
mov eax, dword [ebp - 4]
inc eax
mov dword [ebp - 0x40], edi
mov dl, byte [eax]
cmp dl, 0x2b
jne 0x301d45d3
xor edx, edx
mov dword [ebp - 0x14], 1
jmp 0x301d45de
cmp dl, 0x3f
jne 0x301d45e3
mov edx, dword [ebp - 0x88]
mov dword [ebp - 4], eax
jmp 0x301d45e9
mov edx, dword [ebp - 0x90]
mov eax, dword [ebp - 0xc]
mov cl, byte [eax]
cmp cl, 0x1b
mov dword [ebp - 0x24], edx
mov byte [ebp - 0x4a], cl
je 0x301d4ae3
cmp cl, 0x1c
je 0x301d4ae3
cmp cl, 0x1d
jne 0x301d4644
cmp dword [ebp - 0x14], 0
movzx eax, byte [eax + 1]
mov dword [ebp - 0x10], 0xd
mov dword [ebp - 8], eax
jne 0x301d4b79
cmp dword [ebp - 0x2c], 0
jge 0x301d4b79
push dword [ebp - 0x28]
mov eax, dword [ebp - 4]
inc eax
push eax
push 0
push dword [ebp - 0x34]
push dword [ebp - 8]
push 0x1d
jmp 0x301d4b60
cmp cl, 0x16
jae 0x301d4696
cmp dword [ebp - 0x14], 0
movzx eax, cl
mov dword [ebp - 0x10], 0x1a
mov dword [ebp - 8], eax
jne 0x301d4b79
cmp dword [ebp - 0x2c], 0
jge 0x301d4b79
push dword [ebp - 0x28]
mov eax, dword [ebp - 4]
inc eax
push eax
xor edi, edi
push edi
push dword [ebp - 0x34]
mov eax, esi
push edi
push dword [ebp - 8]
call fcn.301d215c
add esp, 0x18
test eax, eax
je 0x301d4b79
mov dword [ebp - 0x24], edi
jmp 0x301d4b72
cmp cl, 0x4d
je 0x301d4a6b
cmp cl, 0x4e
je 0x301d4a6b
cmp cl, 0x4f
je 0x301d4a6b
cmp cl, 0x50
je 0x301d4a6b
cmp cl, 0x5d
je 0x301d46d2
cmp cl, 0x5e
je 0x301d46d2
cmp cl, 0x5c
je 0x301d46d2
cmp cl, 0x5f
jne 0x301d4f9b
mov esi, dword [ebp - 0xc]
and dword [ebp - 0x64], 0
and dword [ebp - 0x20], 0
mov eax, ebx
sub eax, esi
cmp cl, 0x5f
mov dword [ebp - 0x1c], eax
jne 0x301d46f3
cmp byte [esi + 3], 0x65
je 0x301d4fa6
cmp dword [ebp - 0x2c], 0xffffffff
jne 0x301d4712
mov esi, dword [ebp - 0xc]
xor eax, eax
mov ah, byte [esi + 1]
mov al, byte [esi + 2]
add esi, eax
cmp byte [esi], 0x54
jne 0x301d46fc
mov eax, ebx
sub eax, esi
mov dword [ebp - 0x64], eax
cmp dword [ebp - 0x38], 0
jne 0x301d47b6
cmp dword [ebp - 0x2c], 0
jne 0x301d472a
mov ebx, dword [ebp - 0xc]
jmp 0x301d4e31
cmp dword [ebp - 0x2c], 1
push dword [ebp - 0x6c]
mov edi, dword [ebp + 0x78]
push dword [ebp - 0x34]
mov byte [ebx], 0
jg 0x301d4769
push 1
push dword [ebp - 0xc]
call fcn.301d2096
mov eax, dword [ebp - 0xc]
push dword [ebp - 0x1c]
lea esi, [eax + 1]
push eax
push esi
call fcn.3028dcc0
mov al, byte [ebp - 0x24]
mov ecx, dword [ebp - 0xc]
add esp, 0x1c
inc ebx
add al, 0x66
mov byte [ecx], al
mov dword [ebp - 0xc], esi
jmp 0x301d47a8
push 4
push dword [ebp - 0xc]
call fcn.301d2096
push dword [ebp - 0x1c]
mov eax, dword [ebp - 0xc]
push eax
add eax, 4
push eax
call fcn.3028dcc0
mov cl, byte [ebp - 0x24]
mov eax, dword [ebp - 0xc]
add cl, 0x66
mov byte [eax], cl
add esp, 0x1c
add ebx, 4
inc eax
mov byte [eax], 0x5d
inc eax
mov dword [ebp - 0x20], eax
mov byte [eax], 0
mov byte [eax + 1], 0
inc eax
inc eax
mov dword [ebp - 0xc], eax
dec dword [ebp - 0x2c]
mov edi, dword [ebp - 0x40]
mov edx, dword [ebp - 0x24]
jmp 0x301d48a1
cmp dword [ebp - 0x38], 1
jle 0x301d4895
mov ecx, dword [ebp + 0x7c]
test ecx, ecx
je 0x301d480a
mov eax, dword [ebp - 0x38]
dec eax
mov dword [ebp - 0x10], eax
fild dword [ebp - 0x10]
imul eax, dword [ebp - 0x60]
fimul dword [ebp - 0x60]
mov dword [ebp - 0x3c], eax
fcomp qword [0x30294778]
fnstsw ax
test ah, 0x41
je 0x301d4fb1
mov eax, dword [ecx]
mov esi, 0x7fffffeb
sub esi, eax
cmp esi, dword [ebp - 0x3c]
jl 0x301d4fb1
mov esi, dword [ebp - 0x3c]
add esi, eax
mov dword [ecx], esi
jmp 0x301d4895
cmp dword [ebp - 0x80], 0
je 0x301d481c
cmp dword [ebp - 0x48], 0
jge 0x301d481c
mov eax, dword [ebp - 0x30]
mov dword [ebp - 0x48], eax
cmp dword [ebp - 0x38], 1
jle 0x301d4895
mov eax, dword [ebp - 0x38]
mov edi, dword [ebp + 0x78]
dec eax
mov dword [ebp - 0x3c], eax
mov eax, dword [edi + 0x20]
mov ecx, dword [ebp - 0x1c]
mov esi, dword [ebp - 0xc]
mov dword [ebp - 0x10], eax
mov eax, ecx
shr ecx, 2
mov edi, ebx
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov esi, dword [ebp - 0x6c]
cmp esi, dword [ebp - 0x10]
jae 0x301d4881
mov ecx, dword [ebp + 0x78]
mov ecx, dword [ecx + 0x20]
mov edi, dword [ebp + 0x78]
xor eax, eax
mov ah, byte [esi]
mov al, byte [esi + 1]
add eax, dword [ebp - 0x1c]
sar eax, 8
mov byte [ecx], al
mov al, byte [esi + 1]
add al, byte [ebp - 0x1c]
mov ecx, dword [edi + 0x20]
mov byte [ecx + 1], al
add dword [edi + 0x20], 2
inc esi
inc esi
cmp esi, dword [ebp - 0x10]
jb 0x301d4850
jmp 0x301d4884
mov edi, dword [ebp + 0x78]
mov eax, dword [ebp - 0x10]
add ebx, dword [ebp - 0x1c]
dec dword [ebp - 0x3c]
mov dword [ebp - 0x6c], eax
jne 0x301d482c
mov edi, dword [ebp - 0x40]
cmp dword [ebp - 0x2c], 0
jle 0x301d48a1
mov eax, dword [ebp - 0x38]
sub dword [ebp - 0x2c], eax
mov esi, dword [ebp - 0x2c]
test esi, esi
jl 0x301d4a0a
mov ecx, dword [ebp + 0x7c]
test ecx, ecx
je 0x301d48f9
test esi, esi
jle 0x301d48f9
mov eax, dword [ebp - 0x60]
add eax, 7
mov dword [ebp - 0x3c], eax
imul eax, esi
fild dword [ebp - 0x3c]
fimul dword [ebp - 0x2c]
sub eax, 6
mov edx, eax
fcomp qword [0x30294778]
fnstsw ax
test ah, 0x41
je 0x301d4fb1
mov eax, dword [ecx]
mov esi, 0x7fffffeb
sub esi, eax
cmp esi, edx
jl 0x301d4fb1
add edx, eax
mov dword [ecx], edx
jmp 0x301d49bf
lea eax, [esi - 1]
test eax, eax
mov dword [ebp - 0x18], eax
jl 0x301d49bf
mov byte [ebp - 0x49], dl
add byte [ebp - 0x49], 0x66
mov edx, dword [ebp + 0x78]
mov eax, dword [edx + 0x20]
mov dword [ebp - 0x10], eax
mov al, byte [ebp - 0x49]
mov byte [ebx], al
inc ebx
cmp dword [ebp - 0x18], 0
je 0x301d4943
mov ecx, dword [ebp - 0x20]
mov byte [ebx], 0x5d
inc ebx
mov eax, ebx
sub eax, ecx
neg ecx
sbb ecx, ecx
and ecx, eax
mov eax, ecx
sar eax, 8
mov dword [ebp - 0x20], ebx
mov byte [ebx], al
mov byte [ebx + 1], cl
inc ebx
inc ebx
mov ecx, dword [ebp - 0x1c]
mov esi, dword [ebp - 0xc]
mov eax, ecx
shr ecx, 2
mov edi, ebx
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov edi, dword [ebp - 0x6c]
cmp edi, dword [ebp - 0x10]
jae 0x301d49aa
mov esi, dword [ebp - 0x18]
neg esi
sbb esi, esi
and esi, 3
inc esi
cmp dword [ebp - 0x18], 0
sete al
dec al
and al, 3
inc al
mov byte [ebp - 0x4a], al
mov ecx, dword [edx + 0x20]
xor eax, eax
mov ah, byte [edi]
mov al, byte [edi + 1]
add eax, esi
add eax, dword [ebp - 0x1c]
sar eax, 8
mov byte [ecx], al
mov al, byte [ebp - 0x4a]
add al, byte [ebp - 0x1c]
mov ecx, dword [edx + 0x20]
add al, byte [edi + 1]
mov byte [ecx + 1], al
add dword [edx + 0x20], 2
inc edi
inc edi
cmp edi, dword [ebp - 0x10]
jb 0x301d497c
mov eax, dword [ebp - 0x10]
add ebx, dword [ebp - 0x1c]
dec dword [ebp - 0x18]
mov dword [ebp - 0x6c], eax
jns 0x301d4911
mov edi, dword [ebp - 0x40]
cmp dword [ebp - 0x20], 0
je 0x301d4d41
mov edi, dword [ebp - 0x20]
mov ecx, ebx
sub ecx, dword [ebp - 0x20]
xor edx, edx
inc ecx
mov eax, ebx
sub eax, ecx
mov dh, byte [eax + 1]
mov dl, byte [eax + 2]
mov byte [ebx], 0x54
mov byte [ebx + 2], cl
sub edi, edx
mov esi, edx
neg esi
sbb esi, esi
and esi, edi
inc ebx
mov edx, ecx
sar edx, 8
mov byte [ebx], dl
inc ebx
inc ebx
test esi, esi
mov dword [ebp - 0x20], esi
mov byte [eax + 1], dl
mov byte [eax + 2], cl
jne 0x301d49c9
jmp 0x301d4d3e
mov esi, ebx
sub esi, dword [ebp - 0x64]
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
cmp dword [ebp + 0x7c], 0
jne 0x301d4d3e
cmp byte [edi], 0x5c
je 0x301d4d3e
mov dword [ebp - 0x10], edi
push dword [ebp - 0x34]
push esi
push dword [ebp - 0x10]
call fcn.301d1e1c
add esp, 0xc
test eax, eax
jne 0x301d4a63
mov eax, dword [ebp - 0x10]
xor ecx, ecx
mov ch, byte [eax + 1]
mov cl, byte [eax + 2]
add eax, ecx
cmp byte [eax], 0x53
mov dword [ebp - 0x10], eax
je 0x301d4a36
jmp 0x301d4d3e
add byte [edi], 3
jmp 0x301d4d3e
mov ecx, dword [ebp - 0x2c]
test ecx, ecx
jne 0x301d4a79
mov ebx, eax
jmp 0x301d4e31
xor edi, edi
inc edi
cmp ecx, edi
je 0x301d4a83
mov dword [esi + 0x44], edi
cmp dword [ebp - 0x38], 0
jne 0x301d4a93
cmp ecx, 0xffffffff
jne 0x301d4aa3
add dl, 0x45
jmp 0x301d4aaa
cmp dword [ebp - 0x38], 1
jne 0x301d4ab1
cmp ecx, 0xffffffff
jne 0x301d4ab1
add dl, 0x47
jmp 0x301d4aaa
cmp ecx, edi
jne 0x301d4ab1
add dl, 0x49
mov byte [ebx], dl
jmp 0x301d4d3d
mov eax, dword [ebp - 0x38]
add dl, 0x4b
mov byte [ebx], dl
inc ebx
mov edx, eax
sar edx, 8
mov byte [ebx], dl
mov byte [ebx + 1], al
inc ebx
inc ebx
cmp ecx, 0xffffffff
jne 0x301d4ad2
and dword [ebp - 0x2c], 0
mov ecx, dword [ebp - 0x2c]
mov eax, ecx
sar eax, 8
mov byte [ebx], al
mov byte [ebx + 1], cl
inc ebx
inc ebx
jmp 0x301d4d3e
cmp dword [ebp - 0x34], 0
je 0x301d4b26
lea eax, [ebx - 1]
test byte [eax], 0x80
je 0x301d4b26
mov esi, eax
jmp 0x301d4af6
dec esi
mov al, byte [esi]
and al, 0xc0
cmp al, 0x80
je 0x301d4af5
mov edx, ebx
sub edx, esi
mov ecx, edx
mov eax, ecx
shr ecx, 2
lea edi, [ebp + 0x20]
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov esi, dword [ebp + 0x78]
mov cl, byte [ebp - 0x4a]
or edx, 0x80
mov dword [ebp - 8], edx
jmp 0x301d4b3e
cmp dword [ebp - 0x38], 1
movzx edx, byte [ebx - 1]
mov dword [ebp - 8], edx
jle 0x301d4b3e
mov eax, dword [esi + 0x40]
or eax, edx
or eax, dword [ebp - 0x74]
mov dword [ebp - 0x48], eax
cmp dword [ebp - 0x14], 0
jne 0x301d4b79
cmp dword [ebp - 0x2c], 0
jge 0x301d4b79
push dword [ebp - 0x28]
mov eax, dword [ebp - 4]
inc eax
push eax
lea eax, [ebp + 0x20]
push eax
push dword [ebp - 0x34]
movzx eax, cl
push dword [ebp - 8]
push eax
mov eax, esi
call fcn.301d215c
add esp, 0x18
test eax, eax
je 0x301d4b79
and dword [ebp - 0x24], 0
mov dword [ebp - 0x14], 1
mov eax, dword [ebp - 0xc]
mov cl, byte [eax]
cmp cl, 0xf
je 0x301d4b92
cmp cl, 0xe
je 0x301d4b92
or dword [ebp - 0x18], 0xffffffff
or dword [ebp - 0x44], 0xffffffff
jmp 0x301d4ba0
movzx ecx, byte [eax + 1]
mov dword [ebp - 0x44], ecx
movzx ecx, byte [eax + 2]
mov dword [ebp - 0x18], ecx
cmp dword [ebp - 0x2c], 0
mov edi, ebx
mov ebx, eax
je 0x301d4e31
mov edx, dword [ebp - 0x2c]
xor eax, eax
inc eax
cmp edx, eax
je 0x301d4bbb
mov dword [esi + 0x44], eax
mov eax, dword [ebp - 0x24]
mov ecx, dword [ebp - 0x10]
add eax, ecx
cmp dword [ebp - 0x38], 0
mov dword [ebp - 0x24], eax
jne 0x301d4bf0
cmp edx, 0xffffffff
jne 0x301d4bd5
add al, 0x1e
jmp 0x301d4bfd
cmp edx, 1
mov ebx, dword [ebp - 0xc]
je 0x301d4cf4
add al, 0x24
mov byte [ebx], al
inc ebx
mov eax, edx
mov byte [ebx + 1], dl
jmp 0x301d4d05
cmp dword [ebp - 0x38], 1
jne 0x301d4c32
cmp edx, 0xffffffff
jne 0x301d4c08
add al, 0x20
mov ebx, dword [ebp - 0xc]
mov byte [ebx], al
inc ebx
jmp 0x301d4d0c
cmp edx, 1
mov ebx, edi
je 0x301d4e31
mov al, byte [ebp - 0x24]
add al, 0x24
mov byte [edi], al
mov eax, dword [ebp - 0x2c]
lea ecx, [eax - 1]
sar ecx, 8
lea ebx, [edi + 1]
dec al
mov byte [ebx], cl
mov byte [ebx + 1], al
jmp 0x301d4d0a
mov ebx, dword [ebp - 0xc]
add cl, 0x26
mov byte [ebx], cl
mov ecx, dword [ebp - 0x38]
inc ebx
sar ecx, 8
mov byte [ebx], cl
mov cl, byte [ebp - 0x38]
mov byte [ebx + 1], cl
inc ebx
inc ebx
test edx, edx
jge 0x301d4c9a
cmp dword [ebp - 0x34], 0
je 0x301d4c7d
mov ecx, dword [ebp - 8]
cmp ecx, 0x80
jl 0x301d4c7d
and ecx, 7
mov dword [ebp - 0x10], ecx
mov edx, ecx
shr ecx, 2
mov edi, ebx
lea esi, [ebp + 0x20]
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
and ecx, 3
rep movsb byte es:[edi], byte [esi]
add ebx, edx
jmp 0x301d4c93
mov cl, byte [ebp - 8]
mov byte [ebx], cl
mov ecx, dword [ebp - 0x44]
inc ebx
test ecx, ecx
jl 0x301d4c93
mov byte [ebx], cl
mov cl, byte [ebp - 0x18]
inc ebx
mov byte [ebx], cl
inc ebx
add al, 0x1e
jmp 0x301d4c00
mov ecx, dword [ebp - 0x38]
cmp dword [ebp - 0x2c], ecx
je 0x301d4d0c
cmp dword [ebp - 0x34], 0
je 0x301d4cd0
mov ecx, dword [ebp - 8]
cmp ecx, 0x80
jl 0x301d4cd0
and ecx, 7
mov dword [ebp - 0x10], ecx
mov edx, ecx
shr ecx, 2
mov edi, ebx
lea esi, [ebp + 0x20]
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
and ecx, 3
rep movsb byte es:[edi], byte [esi]
add ebx, edx
jmp 0x301d4cd6
mov cl, byte [ebp - 8]
mov byte [ebx], cl
inc ebx
mov ecx, dword [ebp - 0x44]
test ecx, ecx
jl 0x301d4ce6
mov byte [ebx], cl
mov cl, byte [ebp - 0x18]
inc ebx
mov byte [ebx], cl
inc ebx
mov ecx, dword [ebp - 0x2c]
sub ecx, dword [ebp - 0x38]
cmp ecx, 1
mov dword [ebp - 0x2c], ecx
jne 0x301d4cfb
add al, 0x22
jmp 0x301d4c00
add al, 0x24
mov byte [ebx], al
inc ebx
mov eax, ecx
mov byte [ebx + 1], cl
sar eax, 8
mov byte [ebx], al
inc ebx
inc ebx
cmp dword [ebp - 0x34], 0
je 0x301d4d38
mov eax, dword [ebp - 8]
cmp eax, 0x80
jl 0x301d4d38
and eax, 7
mov ecx, eax
mov edx, ecx
shr ecx, 2
mov edi, ebx
lea esi, [ebp + 0x20]
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
and ecx, 3
rep movsb byte es:[edi], byte [esi]
add ebx, eax
jmp 0x301d4d3e
mov al, byte [ebp - 8]
mov byte [ebx], al
inc ebx
mov edi, dword [ebp - 0x40]
cmp dword [ebp - 0x14], 0
je 0x301d4e31
mov al, byte [edi]
cmp al, 0x26
je 0x301d4d59
cmp al, 0x40
je 0x301d4d59
cmp al, 0x33
jne 0x301d4d68
movzx eax, al
movzx eax, byte [eax + 0x302dffc0]
add edi, eax
mov dword [ebp - 0x40], edi
mov eax, ebx
sub eax, edi
test eax, eax
mov dword [ebp - 0x3c], eax
jle 0x301d4e31
movzx eax, byte [edi]
cmp eax, 0x2f
jg 0x301d4dc7
je 0x301d4dc2
sub eax, 0x1e
je 0x301d4dbd
push 2
pop ecx
sub eax, ecx
je 0x301d4db8
sub eax, ecx
je 0x301d4db3
sub eax, ecx
je 0x301d4dae
sub eax, 7
je 0x301d4da6
sub eax, ecx
jne 0x301d4ddd
mov byte [edi], 0x35
jmp 0x301d4e31
mov byte [edi], 0x34
jmp 0x301d4e31
mov byte [edi], 0x2a
jmp 0x301d4e31
mov byte [edi], 0x29
jmp 0x301d4e31
mov byte [edi], 0x28
jmp 0x301d4e31
mov byte [edi], 0x27
jmp 0x301d4e31
mov byte [edi], 0x36
jmp 0x301d4e31
sub eax, 0x31
je 0x301d4e2e
sub eax, 7
je 0x301d4e29
dec eax
dec eax
je 0x301d4e24
dec eax
dec eax
je 0x301d4e1f
dec eax
dec eax
je 0x301d4e1a
push dword [ebp - 0x3c]
push edi
add edi, 3
push edi
call fcn.3028dcc0
mov eax, dword [ebp - 0x40]
mov ecx, dword [ebp - 0x3c]
mov byte [eax], 0x5c
add ecx, 3
add ebx, 3
mov byte [ebx], 0x54
add esp, 0xc
inc ebx
mov byte [ebx + 1], cl
mov eax, ecx
sar eax, 8
mov byte [ebx], al
mov edx, dword [ebp - 0x40]
mov byte [edx + 1], al
mov eax, dword [ebp - 0x40]
inc ebx
inc ebx
mov byte [eax + 2], cl
jmp 0x301d4e31
mov byte [edi], 0x44
jmp 0x301d4e31
mov byte [edi], 0x43
jmp 0x301d4e31
mov byte [edi], 0x42
jmp 0x301d4e31
mov byte [edi], 0x41
jmp 0x301d4e31
mov byte [edi], 0x37
mov eax, dword [ebp - 0x94]
mov esi, dword [ebp + 0x78]
and dword [ebp - 0xc], 0
or dword [esi + 0x40], eax
jmp 0x301d350e
mov eax, dword [ebp + 0x68]
mov dword [eax], 0x34
jmp 0x301d4fba
mov eax, dword [ebp + 0x68]
mov dword [eax], 0x3b
jmp 0x301d4fba
mov eax, dword [ebp + 0x68]
inc dword [ebp - 4]
mov dword [eax], 0x1c
jmp 0x301d4fba
mov eax, dword [ebp + 0x68]
dec edi
mov dword [ebp - 4], edi
mov dword [eax], 0x1a
jmp 0x301d4fba
mov eax, dword [ebp + 0x68]
mov dword [eax], 0x3a
jmp 0x301d4fba
mov eax, dword [ebp + 0x68]
dec dword [ebp - 4]
mov dword [eax], 0xc
jmp 0x301d4fba
mov eax, dword [ebp + 0x68]
mov dword [eax], 0x1d
jmp 0x301d4fba
mov eax, dword [ebp + 0x68]
mov dword [eax], 0x27
jmp 0x301d4fba
mov eax, dword [ebp + 0x68]
mov dword [eax], 0x26
jmp 0x301d4fba
mov eax, dword [ebp + 0x68]
mov dword [eax], 0x2a
jmp 0x301d4fba
mov eax, dword [ebp + 0x68]
mov dword [eax], 0x31
jmp 0x301d4fba
mov eax, dword [ebp + 0x68]
inc edi
mov dword [ebp - 4], edi
mov dword [eax], 0x18
jmp 0x301d4fba
mov eax, dword [ebp + 0x68]
mov dword [eax], 0x36
jmp 0x301d4fba
mov eax, dword [ebp + 0x68]
mov dword [eax], 0x1b
jmp 0x301d4fba
mov eax, dword [ebp + 0x68]
mov dword [eax], 0xe
jmp 0x301d4fba
mov eax, dword [ebp + 0x68]
mov dword [eax], 0x28
jmp 0x301d4fba
mov eax, dword [ebp + 0x68]
mov dword [eax], 0x2d
jmp 0x301d4fba
mov ecx, dword [ebp - 4]
xor eax, eax
cmp byte [ecx + 1], 0x3a
setne al
dec eax
and eax, 0xffffffee
add eax, 0x1f
mov ecx, dword [ebp + 0x68]
mov dword [ecx], eax
jmp 0x301d4fba
mov eax, dword [ebp + 0x68]
mov dword [eax], 0x1f
jmp 0x301d4fba
mov eax, dword [ebp + 0x68]
mov dword [eax], 0x1e
jmp 0x301d4fba
mov eax, dword [ebp + 0x68]
mov dword [eax], 7
jmp 0x301d4fba
mov eax, dword [ebp + 0x68]
mov dword [eax], 8
jmp 0x301d4fba
mov eax, dword [ebp + 0x68]
mov dword [eax], 6
jmp 0x301d4fba
mov eax, dword [ebp + 0x68]
mov dword [eax], 9
jmp 0x301d4fba
mov eax, dword [ebp + 0x68]
mov dword [eax], 0xb
jmp 0x301d4fba
mov eax, dword [ebp + 0x68]
mov dword [eax], 0x37
jmp 0x301d4fba
mov eax, dword [ebp + 0x68]
mov dword [eax], 0x14
mov eax, dword [ebp - 4]
mov ecx, dword [ebp + 0x64]
mov dword [ecx], eax
xor eax, eax
mov ecx, dword [ebp + 0x50]
pop edi
pop esi
pop ebx
call fcn.3028e0e3
add ebp, 0x54
leave
ret