Function at 0x445b60
Capabilities:
Inspect section memory permissions

Disassembly:
sub esp, 0x60
mov eax, dword [0x4e7744]
xor eax, esp
mov dword [esp + 0x5c], eax
push ebx
push ebp
mov ebp, dword [esp + 0x6c]
push esi
mov esi, dword [esp + 0x74]
push edi
mov edi, dword [ebp + 0x18]
mov dword [esp + 0x28], ebp
mov cl, byte [esi]
movzx eax, cl
mov ebx, dword [edi]
add eax, 0xffffffec
cmp eax, 0x97
ja case.0x445b9d.21
movzx eax, byte [eax + 0x446518]
jmp dword [eax*4 + 0x4464f4]
mov ecx, dword [edi + 4]
mov byte [esi], 0xa6
mov eax, dword [ecx + 0x18]
mov dword [esi + 0x2c], eax
mov eax, dword [ecx + 0x34]
dec word [esi + 0x20]
mov dword [esi + 0x1c], eax
mov byte [esi + 1], 0x44
jmp case.0x445b9d.21
xor ecx, ecx
mov edx, edi
cmp ecx, 8
jge 0x445bdb
mov eax, dword [edx + 0x10]
mov edx, dword [edx + 0xc]
mov dword [esp + ecx*4 + 0x4c], eax
inc ecx
test edx, edx
jne 0x445bc7
mov eax, dword [esi + 0xc]
test eax, eax
je 0x445bef
push eax
push ebp
call fcn.0049b300
mov eax, dword [esi + 0xc]
add esp, 8
push eax
call fcn.00458b90
add esp, 4
test eax, eax
jne 0x44636e
cmp byte [ebx + 0xc8], 2
jae 0x44636e
cmp byte [esi], 0x33
mov edx, 0x20000000
mov eax, 0x10000000
cmovne eax, edx
mov edx, str.true
or dword [esi + 4], eax
mov eax, str.false
cmp byte [esi], 0x33
cmove eax, edx
xor ecx, ecx
mov dword [esi + 8], eax
mov byte [esi], 0xa9
cmp ecx, 8
jge 0x445c4c
mov eax, dword [esp + ecx*4 + 0x4c]
inc ecx
mov dword [edi + 0x10], eax
mov edi, dword [edi + 0xc]
test edi, edi
jne 0x445c38
mov eax, dword [esi + 0xc]
test eax, eax
je 0x445c5e
push eax
push dword [ebx]
call fcn.0045b700
add esp, 8
pop edi
mov dword [esi + 0xc], 0
mov eax, 1
pop esi
pop ebp
pop ebx
mov ecx, dword [esp + 0x5c]
xor ecx, esp
call fcn.004aa4f4
add esp, 0x60
ret
cmp cl, 0x3b
jne 0x445caa
mov eax, dword [esi + 8]
xor ecx, ecx
push esi
push edi
push eax
push ecx
xor edx, edx
push edx
push ebx
call fcn.0043a230
add esp, 0x18
pop edi
pop esi
pop ebp
pop ebx
mov ecx, dword [esp + 0x5c]
xor ecx, esp
call fcn.004aa4f4
add esp, 0x60
ret
test byte [edi + 0x18], 0x28
mov ebp, dword [esi + 0xc]
je 0x445cc4
push 0
push str.the__.__operator
push edi
push ebx
call fcn.0043d470
add esp, 0x10
mov eax, dword [esi + 0x10]
cmp byte [eax], 0x3b
jne 0x445cd0
xor edx, edx
jmp 0x445cd9
mov edx, dword [ebp + 8]
mov ebp, dword [eax + 0xc]
mov eax, dword [eax + 0x10]
cmp byte [ebx + 0xc8], 2
mov ecx, dword [ebp + 8]
mov dword [esp + 0x2c], ecx
mov ecx, dword [eax + 8]
mov dword [esp + 0x1c], ecx
mov ecx, dword [esp + 0x2c]
jb 0x445d0e
push eax
push esi
push ebx
call fcn.0046f1c0
push ebp
lea eax, [esi + 0x2c]
push eax
push ebx
call fcn.0046f1c0
mov ecx, dword [esp + 0x44]
add esp, 0x18
mov eax, dword [esp + 0x1c]
push esi
push edi
push eax
push ecx
push edx
push ebx
call fcn.0043a230
add esp, 0x18
pop edi
pop esi
pop ebp
pop ebx
mov ecx, dword [esp + 0x5c]
xor ecx, esp
call fcn.004aa4f4
add esp, 0x60
ret
mov eax, dword [esi + 0x14]
mov dword [esp + 0x1c], eax
test eax, eax
je 0x445d42
mov edx, dword [eax]
jmp 0x445d44
xor edx, edx
mov eax, dword [ebx]
mov dword [esp + 0x30], edx
mov dword [esp + 0x2c], 0
mov dword [esp + 0x48], 0
mov al, byte [eax + 0x50]
mov byte [esp + 0x38], al
lea eax, [edi + 0x18]
mov dword [esp + 0x18], eax
mov eax, dword [eax]
and eax, 0x4001
mov dword [esp + 0x14], 0
test dword [esi + 4], 0x1000000
mov dword [esp + 0x34], eax
je 0x445d91
mov ecx, dword [esi + 0x2c]
mov dword [esp + 0x24], ecx
cmp byte [ecx + 0x10], 0xa5
jne 0x445d97
xor ecx, ecx
mov dword [esp + 0x24], ecx
mov eax, dword [esi + 8]
mov dword [esp + 0x20], eax
test eax, eax
jne 0x445da6
xor ebp, ebp
jmp 0x445dc4
mov ebp, eax
lea ecx, [ebp + 1]
jmp 0x445db0
mov al, byte [ebp]
inc ebp
test al, al
jne 0x445db0
mov eax, dword [esp + 0x20]
sub ebp, ecx
and ebp, 0x3fffffff
push 0
push dword [esp + 0x3c]
push edx
push eax
push dword [ebx]
call fcn.0045ce60
mov edx, eax
add esp, 0x14
mov dword [esp + 0x10], edx
test edx, edx
jne 0x445e19
push eax
push dword [esp + 0x3c]
push 0xfffffffffffffffe
push dword [esp + 0x2c]
push dword [ebx]
call fcn.0045ce60
mov edx, eax
add esp, 0x14
mov dword [esp + 0x10], edx
test edx, edx
jne 0x445e0c
mov dword [esp + 0x2c], 1
jmp 0x445fe8
mov dword [esp + 0x48], 1
jmp 0x445fe8
xor eax, eax
cmp dword [edx + 0x14], eax
setne al
test dword [edx + 4], 0x400
mov dword [esp + 0x14], eax
je 0x445ed7
or dword [esi + 4], 0x40000
cmp dword [esp + 0x30], 2
jne 0x445f25
mov eax, dword [esp + 0x1c]
fld qword [0x4d67e0]
fstp qword [esp + 0x38]
mov eax, dword [eax + 0x18]
cmp byte [eax], 0x98
je 0x445e63
mov dword [esi + 0x1c], 0xffffffff
jmp 0x445ec2
mov edx, dword [eax + 8]
test edx, edx
jne 0x445e6e
xor ecx, ecx
jmp 0x445e88
mov ecx, edx
lea eax, [ecx + 1]
mov dword [esp + 0x30], eax
mov al, byte [ecx]
inc ecx
test al, al
jne 0x445e77
sub ecx, dword [esp + 0x30]
and ecx, 0x3fffffff
push 1
push ecx
lea eax, [esp + 0x40]
push eax
push edx
call fcn.0044c550
fld1
add esp, 0x10
fld qword [esp + 0x38]
fcomi st(1)
fstp st(1)
jbe 0x445eb0
fstp st(0)
mov dword [esi + 0x1c], 0xffffffff
jmp 0x445ec2
fmul qword [0x4d6770]
call fcn.004aabc0
mov dword [esi + 0x1c], eax
test eax, eax
jns 0x445ed3
push str.second_argument_to_likelihood___must_be_a_constant_between_0.0_and_1.0
push ebx
call fcn.00457ce0
add esp, 8
inc dword [edi + 0x14]
mov edx, dword [esp + 0x10]
push 0
push dword [edx + 0x20]
push 0
push 0x1f
push ebx
call fcn.0044ccf0
add esp, 0x14
test eax, eax
je 0x445f42
cmp eax, 1
jne 0x445f0a
mov ecx, dword [esp + 0x10]
push dword [ecx + 0x20]
push str.not_authorized_to_use_function:__s
push ebx
call fcn.00457ce0
add esp, 0xc
inc dword [edi + 0x14]
pop edi
mov byte [esi], 0x78
mov eax, 1
pop esi
pop ebp
pop ebx
mov ecx, dword [esp + 0x5c]
xor ecx, esp
call fcn.004aa4f4
add esp, 0x60
ret
mov eax, dword [edx + 0x20]
mov ecx, 0x7800000
mov dword [esp + 0x30], 0x800000
cmp byte [eax], 0x75
cmove ecx, dword [esp + 0x30]
mov dword [esi + 0x1c], ecx
jmp 0x445ed7
mov edx, dword [esp + 0x10]
mov eax, dword [edx + 4]
test eax, 0x2800
je 0x445f5a
or dword [esi + 4], 0x80000
mov eax, dword [edx + 4]
test eax, 0x800
jne 0x445f81
mov eax, dword [esp + 0x18]
test byte [eax], 0x2a
je 0x445f9b
push 0
push str.non_deterministic_functions
push edi
push ebx
call fcn.0043d470
mov edx, dword [esp + 0x20]
add esp, 0x10
jmp 0x445f9b
mov ecx, dword [esp + 0x18]
mov al, byte [ecx]
and al, 0x2e
mov byte [esi + 2], al
test dword [ecx], 0x40000
je 0x445f9b
or dword [esi + 4], 0x40000000
mov ecx, dword [edx + 4]
test ecx, 0x40000
je 0x445fc4
cmp byte [ebx + 0x12], 0
jne 0x445fc4
mov eax, dword [ebx]
test byte [eax + 0x18], 0x20
jne 0x445fc4
xor edx, edx
mov dword [esp + 0x2c], 1
mov dword [esp + 0x10], edx
jmp 0x445fe8
test ecx, 0x280000
je 0x445fe8
cmp byte [ebx + 0xc8], 2
jae 0x44614a
push edx
push esi
push ebx
call fcn.0045b940
mov edx, dword [esp + 0x1c]
add esp, 0xc
cmp byte [ebx + 0xc8], 2
jae 0x44614a
mov eax, dword [esp + 0x24]
test edx, edx
je 0x446016
cmp dword [edx + 0x18], 0
jne 0x446016
test eax, eax
je 0x446016
push dword [esp + 0x20]
push ebp
push str._.s___may_not_be_used_as_a_window_function
jmp 0x4460ce
mov ecx, dword [esp + 0x14]
test ecx, ecx
je 0x44609f
mov ecx, dword [esp + 0x18]
mov ecx, dword [ecx]
test cl, 1
je 0x446048
test dword [edx + 4], 0x10000
je 0x44603c
test eax, eax
je 0x44605a
jmp 0x446040
test eax, eax
je 0x44609b
test ecx, 0x4000
jne 0x44609b
test dword [edx + 4], 0x10000
jne 0x44605a
test eax, eax
mov eax, str.aggregate
je 0x44605f
mov eax, str.window
push dword [esp + 0x20]
push ebp
push eax
push str.misuse_of__s_function__.s__
push ebx
call fcn.00457ce0
push dword [esp + 0x30]
inc dword [edi + 0x14]
push dword [esp + 0x40]
call fcn.004896c0
add esp, 0x1c
mov eax, 1
pop edi
pop esi
pop ebp
pop ebx
mov ecx, dword [esp + 0x5c]
xor ecx, esp
call fcn.004aa4f4
add esp, 0x60
ret
mov ecx, dword [esp + 0x14]
cmp dword [esp + 0x2c], 0
je 0x4460bd
mov eax, dword [ebx]
cmp byte [eax + 0xa9], 0
jne 0x4460bd
push dword [esp + 0x20]
push ebp
push str.no_such_function:__.s
jmp 0x4460ce
cmp dword [esp + 0x48], 0
je 0x4460e8
push dword [esp + 0x20]
push ebp
push str.wrong_number_of_arguments_to_function__.s__
push ebx
call fcn.00457ce0
inc dword [edi + 0x14]
add esp, 0x10
mov ebp, dword [esp + 0x14]
test ebp, ebp
je 0x446169
jmp 0x446134
test ecx, ecx
jne 0x446130
test dword [esi + 4], 0x1000000
je 0x446165
push dword [esp + 0x20]
push ebp
push str.FILTER_may_not_be_used_with_non_aggregate__.s__
push ebx
call fcn.00457ce0
push dword [esp + 0x2c]
inc dword [edi + 0x14]
push dword [esp + 0x3c]
call fcn.004896c0
add esp, 0x18
mov eax, 1
pop edi
pop esi
pop ebp
pop ebx
mov ecx, dword [esp + 0x5c]
xor ecx, esp
call fcn.004aa4f4
add esp, 0x60
ret
mov ebp, dword [esp + 0x14]
mov ecx, dword [esp + 0x18]
xor eax, eax
cmp dword [esp + 0x24], eax
setne al
add eax, 0xffffbffe
and dword [ecx], eax
jmp 0x446169
test dword [esi + 4], 0x1000000
je 0x446165
push dword [esp + 0x1c]
push dword [esp + 0x2c]
call fcn.004896c0
add esp, 8
jmp 0x446181
mov ebp, dword [esp + 0x14]
push dword [esp + 0x1c]
push dword [esp + 0x2c]
call fcn.004896c0
add esp, 8
test ebp, ebp
je 0x44636e
mov ebp, dword [esp + 0x24]
test ebp, ebp
je 0x44621c
cmp byte [ebx + 0xc8], 2
mov esi, dword [edi + 0x1c]
jae 0x4461c0
test esi, esi
je 0x4461a2
mov eax, dword [esi + 0x48]
jmp 0x4461a4
xor eax, eax
mov ecx, dword [esp + 0x10]
push ecx
push ebp
push eax
push ebx
call fcn.004905d0
mov eax, dword [ebx]
add esp, 0x10
cmp byte [eax + 0x53], 0
jne case.0x445b9d.21
push dword [ebp + 8]
mov ebx, dword [esp + 0x2c]
push ebx
call fcn.004896c0
push dword [ebp + 0xc]
push ebx
call fcn.004896c0
mov eax, dword [ebp + 0x28]
add esp, 0x10
test eax, eax
je 0x4461ea
push eax
push ebx
call fcn.0049b300
add esp, 8
push ebp
push esi
call fcn.0048f950
mov eax, dword [esp + 0x20]
add esp, 8
mov ecx, dword [esp + 0x34]
or dword [eax], 0x8000
or dword [eax], ecx
mov eax, 1
pop edi
pop esi
pop ebp
pop ebx
mov ecx, dword [esp + 0x5c]
xor ecx, esp
call fcn.004aa4f4
add esp, 0x60
ret
test dword [esi + 4], 0x1000000
mov byte [esi], 0xa7
mov byte [esi + 2], 0
je 0x446250
mov eax, dword [esi + 0x2c]
mov eax, dword [eax + 0x28]
test eax, eax
je 0x446250
push eax
push dword [esp + 0x2c]
call fcn.0049b300
add esp, 8
jmp 0x446250
mov eax, dword [edi + 4]
lea ecx, [esp + 0x38]
mov dword [esp + 0x4c], 0
mov dword [esp + 0x58], 0
mov dword [esp + 0x5c], 0
mov dword [esp + 0x60], 0
mov dword [esp + 0x50], 0x431a50
mov dword [esp + 0x54], 0x449880
mov dword [esp + 0x64], ecx
mov dword [esp + 0x38], eax
test eax, eax
je 0x4462a1
cmp dword [eax], 0
je 0x4462a1
mov eax, dword [eax + 0x34]
mov dword [esp + 0x3c], eax
jmp 0x4462a9
mov dword [esp + 0x3c], 0x7fffffff
mov ebp, dword [esi + 0x14]
mov dword [esp + 0x40], 0
mov dword [esp + 0x44], 0
test ebp, ebp
je 0x4462f1
mov ebx, dword [ebp]
add ebp, 4
test ebx, ebx
jle 0x4462f1
lea ebx, [ebx]
mov eax, dword [ebp]
test eax, eax
je 0x4462e9
push eax
lea eax, [esp + 0x50]
push eax
call fcn.0049b300
add esp, 8
test eax, eax
jne 0x4462f1
dec ebx
add ebp, 0x14
test ebx, ebx
jg 0x4462d0
test dword [esi + 4], 0x1000000
je 0x446312
mov eax, dword [esi + 0x2c]
mov eax, dword [eax + 0x28]
test eax, eax
je 0x446312
push eax
lea eax, [esp + 0x50]
push eax
call fcn.0049b300
add esp, 8
cmp dword [esp + 0x40], 0
jg 0x44634e
cmp dword [esp + 0x44], 0
je 0x44634e
inc byte [esi + 2]
mov edi, dword [edi + 0xc]
test edi, edi
jne 0x446250
mov eax, dword [esp + 0x18]
mov ecx, dword [esp + 0x34]
or dword [eax], ecx
lea eax, [edi + 1]
pop edi
pop esi
pop ebp
pop ebx
mov ecx, dword [esp + 0x5c]
xor ecx, esp
call fcn.004aa4f4
add esp, 0x60
ret
mov ecx, dword [esp + 0x10]
test ecx, ecx
je 0x446364
mov eax, dword [ecx + 4]
and eax, 0x1000
or eax, 0x10
or dword [edi + 0x18], eax
mov eax, dword [esp + 0x18]
mov ecx, dword [esp + 0x34]
or dword [eax], ecx
pop edi
pop esi
pop ebp
mov eax, 1
pop ebx
mov ecx, dword [esp + 0x5c]
xor ecx, esp
call fcn.004aa4f4
add esp, 0x60
ret
test dword [esi + 4], 0x800
je case.0x445b9d.21
test byte [edi + 0x18], 0x2e
mov eax, dword [edi + 0x10]
mov dword [esp + 0x34], eax
je 0x4463b0
push esi
push str.subqueries
push edi
push ebx
call fcn.0043d470
add esp, 0x10
push dword [esi + 0x14]
push ebp
call fcn.00489710
mov eax, dword [esp + 0x3c]
add esp, 8
cmp eax, dword [edi + 0x10]
je case.0x445b9d.21
or dword [esi + 4], 0x20
or dword [edi + 0x18], 0x40
jmp case.0x445b9d.21
test byte [edi + 0x18], 0x2e
je case.0x445b9d.21
push esi
push str.parameters
push edi
push ebx
call fcn.0043d470
add esp, 0x10
jmp case.0x445b9d.21
mov edi, dword [esi + 0x10]
test edi, edi
je case.0x445b9d.48
lea esp, [esp]
mov eax, dword [edi + 4]
test eax, 0x41000
je 0x446443
test eax, 0x40000
je 0x446419
mov eax, dword [edi + 0x14]
mov edi, dword [eax + 4]
jmp 0x44641c
mov edi, dword [edi + 0xc]
test edi, edi
jne 0x446400
mov eax, dword [ebx]
cmp byte [eax + 0x53], 0
jne case.0x445b9d.21
mov ecx, dword [esi + 0xc]
mov al, byte [ecx]
cmp al, 0xaf
jne 0x446438
mov al, byte [ecx + 2]
cmp al, 0xb0
jne 0x44647e
mov eax, dword [ecx + 0x14]
mov edx, dword [eax]
jmp 0x446491
mov al, byte [edi]
cmp al, 0x3b
je 0x44644d
cmp al, 0xa9
jne case.0x445b9d.48
push edi
push ebp
call fcn.00445b60
add esp, 8
cmp eax, 2
je 0x4464d9
cmp byte [edi], 0xa9
jne case.0x445b9d.48
mov al, byte [esi]
mov byte [esi + 2], al
mov byte [esi], 0xae
pop edi
pop esi
pop ebp
xor eax, eax
pop ebx
mov ecx, dword [esp + 0x5c]
xor ecx, esp
call fcn.004aa4f4
add esp, 0x60
ret
cmp al, 0x89
jne 0x44648c
mov eax, dword [ecx + 0x14]
mov eax, dword [eax + 0x1c]
mov edx, dword [eax]
jmp 0x446491
mov edx, 1
cmp byte [esi], 0x30
jne 0x4464ad
mov esi, dword [esi + 0x14]
push dword [esi + 4]
call fcn.0045cc50
add esp, 4
cmp eax, edx
jne 0x4464bd
mov eax, dword [esi + 0x18]
jmp 0x4464b0
mov eax, dword [esi + 0x10]
push eax
call fcn.0045cc50
add esp, 4
cmp edx, eax
je case.0x445b9d.21
push str.row_value_misused
push ebx
call fcn.00457ce0
add esp, 8
cmp dword [ebx + 0x24], 0
jne 0x4464d9
mov eax, dword [ebx]
cmp byte [eax + 0x53], 0
je 0x446469
mov ecx, dword [esp + 0x6c]
mov eax, 2
pop edi
pop esi
pop ebp
pop ebx
xor ecx, esp
call fcn.004aa4f4
add esp, 0x60
ret