Function at 0x477840
Capabilities:
Inspect section memory permissions
Resolve function by parsing pe exports

Disassembly:
sub esp, 0x38
mov ecx, dword [esp + 0x4c]
xor eax, eax
push ebx
mov ebx, dword [esp + 0x54]
push ebp
mov ebp, dword [esp + 0x44]
mov dword [esp + 0x28], eax
mov dword [esp + 0x1c], eax
mov eax, 0xa4
mov dword [esp + 0x20], eax
mov edx, dword [ebp]
xor ebp, ebp
mov eax, dword [esp + 0x48]
mov dword [esp + 0x14], 0
mov dword [esp + 0xc], 0
mov dword [esp + 0x2c], edx
mov dword [esp + 0x10], ebp
mov dword [esp + 0x24], ecx
mov dword [ebx + 0x1c], 0xffffffff
push esi
push edi
test eax, eax
je 0x4778db
test byte [ecx + 0x18], 6
je 0x4778a4
xor edi, edi
mov dword [esp + 0x50], edi
jmp 0x4778dd
mov ebx, dword [edx + 0x14]
xor esi, esi
test ebx, ebx
jle 0x4778d7
mov ebp, dword [edx + 0x10]
mov edi, ebp
push eax
push dword [edi]
call fcn.004b47c0
add esp, 8
test eax, eax
je 0x4779fe
mov eax, dword [esp + 0x50]
inc esi
add edi, 0x10
cmp esi, ebx
jl 0x4778b2
mov ecx, dword [esp + 0x5c]
xor ebp, ebp
mov ebx, dword [esp + 0x60]
mov edi, eax
mov edx, dword [esp + 0x54]
mov eax, dword [ecx + 4]
mov dword [esp + 0x3c], eax
test eax, eax
je 0x477b12
xor ecx, ecx
lea esi, [eax + 8]
mov dword [esp + 0x20], ecx
mov dword [esp + 0x10], esi
cmp dword [eax], ecx
jle 0x477aee
mov eax, dword [esi + 0x14]
mov ebp, dword [esi + 0x10]
mov dword [esp + 0x38], ebp
test eax, eax
je 0x477993
test dword [eax + 4], 0x800
je 0x477993
mov ebx, dword [eax + 0x1c]
xor esi, esi
xor ebp, ebp
cmp dword [ebx], esi
jle 0x47797f
lea edi, [ebx + 4]
mov edi, edi
push dword [esp + 0x50]
push edx
push dword [esp + 0x60]
push edi
call fcn.004a7610
add esp, 0x10
test eax, eax
je 0x477967
mov eax, dword [esp + 0x10]
mov ebp, 1
inc dword [esp + 0x1c]
mov dword [esp + 0x18], eax
mov eax, dword [esp + 0x60]
mov dword [esp + 0x14], 2
mov word [eax + 0x20], si
mov edx, dword [esp + 0x54]
inc esi
add edi, 0x14
cmp esi, dword [ebx]
jl 0x477930
mov ecx, dword [esp + 0x20]
test ebp, ebp
jne 0x477ac2
mov esi, dword [esp + 0x10]
mov edi, dword [esp + 0x50]
test edx, edx
je 0x477aca
mov ebp, dword [esp + 0x38]
test edi, edi
je 0x4779a4
mov eax, dword [esp + 0x24]
cmp dword [ebp + 0x48], eax
jne 0x477aca
test edx, edx
je 0x477a3a
mov edi, dword [esi + 0xc]
mov edx, edi
test edi, edi
jne 0x4779b8
mov edx, dword [ebp]
mov esi, dword [esp + 0x54]
sub esi, edx
mov edi, edi
movzx ecx, byte [edx]
movzx eax, byte [edx + esi]
cmp ecx, eax
jne 0x477a1b
test ecx, ecx
jne 0x477a31
mov eax, dword [esp + 0x4c]
cmp byte [eax + 0xc8], 2
jb 0x477a3a
test edi, edi
je 0x477a3a
mov eax, dword [eax + 0x110]
test eax, eax
je 0x477a3a
mov ecx, dword [esp + 0x60]
add ecx, 0x2c
cmp dword [eax], ecx
je 0x477a34
mov eax, dword [eax + 0xc]
test eax, eax
jne 0x4779f1
jmp 0x477a3a
mov ebx, dword [esp + 0x60]
add esi, esi
mov edi, dword [esp + 0x50]
mov ecx, dword [esp + 0x5c]
mov eax, dword [ebp + esi*8 + 0xc]
xor ebp, ebp
mov dword [esp + 0x24], eax
jmp 0x4778dd
movzx eax, byte [eax + 0x4e9aa0]
movzx ecx, byte [ecx + 0x4e9aa0]
sub ecx, eax
jne 0x477abe
inc edx
jmp 0x4779c0
mov dword [eax], 0
mov ecx, dword [esp + 0x14]
mov eax, ecx
inc ecx
mov dword [esp + 0x14], ecx
test eax, eax
jne 0x477a51
mov eax, dword [esp + 0x10]
mov dword [esp + 0x18], eax
mov ebx, dword [ebp + 4]
xor edi, edi
movsx ebp, word [ebp + 0x2a]
test ebp, ebp
jle 0x477abe
mov edi, edi
mov esi, dword [esp + 0x58]
mov edx, dword [ebx]
sub esi, edx
jmp 0x477a70
movzx eax, byte [edx]
movzx ecx, byte [edx + esi]
cmp eax, ecx
jne 0x477b7b
test eax, eax
jne 0x477b91
mov esi, dword [esp + 0x1c]
cmp esi, 1
jne 0x477b97
mov eax, dword [esp + 0x10]
test byte [eax + 0x24], 4
jne 0x477ab6
mov ecx, dword [esp + 0x58]
push ecx
push dword [eax + 0x34]
call fcn.0047aca0
add esp, 8
test eax, eax
je 0x477b97
inc edi
add ebx, 0x14
cmp edi, ebp
jl 0x477a60
mov ecx, dword [esp + 0x20]
mov esi, dword [esp + 0x10]
mov edi, dword [esp + 0x50]
mov ebx, dword [esp + 0x60]
mov eax, dword [esp + 0x3c]
inc ecx
mov edx, dword [esp + 0x54]
add esi, 0x48
mov dword [esp + 0x20], ecx
mov dword [esp + 0x10], esi
cmp ecx, dword [eax]
jl 0x477905
mov ebp, dword [esp + 0x18]
test ebp, ebp
je 0x477b12
mov eax, dword [ebp + 0x2c]
mov dword [ebx + 0x1c], eax
mov eax, dword [ebp + 0x10]
mov dword [ebx + 0x2c], eax
test byte [ebp + 0x24], 8
je 0x477b0b
or dword [ebx + 4], 0x100000
mov eax, dword [eax + 0x48]
mov dword [esp + 0x24], eax
mov eax, dword [esp + 0x14]
test edi, edi
jne 0x477e32
test edx, edx
je 0x477e32
test eax, eax
jne 0x477e32
mov eax, dword [esp + 0x4c]
xor ebp, ebp
mov dword [esp + 0x20], ebp
cmp dword [eax + 0x78], ebp
je 0x477c25
movzx edi, byte [eax + 0x90]
cmp edi, 0x7e
je 0x477be9
mov esi, dword [esp + 0x54]
mov edx, 0x4efe90
sub esi, edx
lea esp, [esp]
movzx ecx, byte [edx]
movzx eax, byte [edx + esi]
cmp ecx, eax
jne 0x477bd1
test ecx, ecx
jne 0x477be3
mov dword [ebx + 0x1c], 1
jmp 0x477c1a
movzx ecx, byte [ecx + 0x4e9aa0]
movzx eax, byte [eax + 0x4e9aa0]
sub eax, ecx
jne 0x477ab6
inc edx
jmp 0x477a70
mov eax, dword [esp + 0x10]
inc esi
mov dword [esp + 0x18], eax
mov eax, dword [esp + 0x38]
mov dword [esp + 0x1c], esi
movsx eax, word [eax + 0x28]
cmp edi, eax
jne 0x477bb5
or eax, 0xffffffff
jmp 0x477bb8
movsx eax, di
mov ebx, dword [esp + 0x60]
mov esi, dword [esp + 0x10]
mov ecx, dword [esp + 0x20]
mov edi, dword [esp + 0x50]
mov word [ebx + 0x20], ax
jmp 0x477ace
movzx eax, byte [eax + 0x4e9aa0]
movzx ecx, byte [ecx + 0x4e9aa0]
sub ecx, eax
jne 0x477be9
inc edx
jmp 0x477b60
cmp edi, 0x7d
je 0x477c25
mov esi, dword [esp + 0x54]
mov edx, 0x4efe94
sub esi, edx
lea esp, [esp]
movzx ecx, byte [edx]
movzx eax, byte [edx + esi]
cmp ecx, eax
jne 0x477cc0
test ecx, ecx
jne 0x477cd6
mov dword [ebx + 0x1c], ebp
mov ebp, dword [esp + 0x4c]
mov ebp, dword [ebp + 0x78]
mov dword [esp + 0x20], ebp
mov eax, dword [esp + 0x5c]
test dword [eax + 0x18], 0x200
je 0x477c6c
mov edi, dword [eax + 8]
test edi, edi
je 0x477c6c
mov esi, dword [esp + 0x54]
mov edx, str.excluded
sub esi, edx
movzx ecx, byte [edx]
movzx eax, byte [esi + edx]
cmp ecx, eax
jne 0x477cdc
test ecx, ecx
jne 0x477cf2
mov eax, dword [edi + 0x14]
mov ebp, dword [eax + 0x18]
mov dword [esp + 0x20], ebp
mov dword [ebx + 0x1c], 2
test ebp, ebp
je 0x477e3c
mov eax, dword [ebp + 0x48]
xor esi, esi
mov ebx, dword [ebp + 4]
movsx ebp, word [ebp + 0x2a]
mov dword [esp + 0x24], eax
mov dword [esp + 0x14], 1
test ebp, ebp
jle 0x477d19
mov edi, dword [esp + 0x58]
mov edx, dword [ebx]
sub edi, edx
lea esp, [esp]
movzx ecx, byte [edx]
movzx eax, byte [edx + edi]
cmp ecx, eax
jne 0x477cf8
test ecx, ecx
jne 0x477d0a
mov edi, dword [esp + 0x20]
movsx eax, word [edi + 0x28]
cmp esi, eax
jne 0x477d1d
or esi, 0xffffffff
jmp 0x477d1d
movzx eax, byte [eax + 0x4e9aa0]
movzx ecx, byte [ecx + 0x4e9aa0]
sub ecx, eax
jne 0x477c25
inc edx
jmp 0x477c00
movzx eax, byte [eax + 0x4e9aa0]
movzx ecx, byte [ecx + 0x4e9aa0]
sub ecx, eax
jne 0x477c6c
inc edx
jmp 0x477c44
movzx eax, byte [eax + 0x4e9aa0]
movzx ecx, byte [ecx + 0x4e9aa0]
sub ecx, eax
jne 0x477d0d
inc edx
jmp 0x477ca0
inc esi
add ebx, 0x14
cmp esi, ebp
jl 0x477c94
mov edi, dword [esp + 0x20]
cmp esi, ebp
jl 0x477d45
push dword [esp + 0x58]
call fcn.004a5a90
add esp, 4
test eax, eax
je 0x477d3d
test dword [edi + 0x24], 0x200
jne 0x477d3d
or esi, 0xffffffff
cmp esi, ebp
jge 0x477e3c
mov ebx, dword [esp + 0x60]
inc dword [esp + 0x1c]
mov eax, dword [ebx + 0x1c]
cmp eax, 2
jne 0x477d9d
mov eax, dword [esp + 0x4c]
mov ebp, dword [esp + 0x18]
mov ecx, dword [esp + 0x5c]
cmp byte [eax + 0xc8], 2
jb 0x477d7e
mov word [ebx + 0x20], si
mov dword [ebx + 0x2c], edi
mov dword [esp + 0x28], 0xa4
jmp 0x477e48
mov eax, dword [ecx + 8]
mov dword [esp + 0x28], 0xad
mov eax, dword [eax + 0x18]
add eax, esi
or dword [ebx + 4], 0x400000
mov dword [ebx + 0x1c], eax
jmp 0x477e48
test esi, esi
jns 0x477db9
mov byte [ebx + 1], 0x44
mov dword [ebx + 0x2c], edi
mov word [ebx + 0x20], si
mov dword [esp + 0x28], 0x4d
jmp 0x477e40
test eax, eax
jne 0x477e04
cmp esi, 0x20
jl 0x477de0
mov ecx, dword [esp + 0x4c]
or eax, 0xffffffff
mov dword [esp + 0x28], 0x4d
or dword [ecx + 0x88], eax
mov dword [ebx + 0x2c], edi
mov word [ebx + 0x20], si
jmp 0x477e40
mov ecx, esi
mov dword [esp + 0x28], 0x4d
mov eax, 1
shl eax, cl
mov ecx, dword [esp + 0x4c]
or dword [ecx + 0x88], eax
mov dword [ebx + 0x2c], edi
mov word [ebx + 0x20], si
jmp 0x477e40
cmp esi, 0x20
jl 0x477e0e
or eax, 0xffffffff
jmp 0x477e17
mov eax, 1
mov ecx, esi
shl eax, cl
mov ecx, dword [esp + 0x4c]
mov dword [esp + 0x28], 0x4d
or dword [ecx + 0x8c], eax
mov dword [ebx + 0x2c], edi
mov word [ebx + 0x20], si
jmp 0x477e40
mov ebx, dword [esp + 0x60]
mov ecx, dword [esp + 0x5c]
jmp 0x477e4c
mov ebx, dword [esp + 0x60]
mov ebp, dword [esp + 0x18]
mov ecx, dword [esp + 0x5c]
mov eax, dword [esp + 0x14]
mov edi, dword [esp + 0x1c]
mov esi, dword [esp + 0x58]
test edi, edi
jne 0x477e94
cmp eax, 1
jne 0x477e94
test ebp, ebp
je 0x477e94
test byte [ecx + 0x18], 0x28
jne 0x477e94
push esi
call fcn.004a5a90
add esp, 4
test eax, eax
je 0x477e94
mov eax, dword [ebp + 0x10]
test dword [eax + 0x24], 0x200
jne 0x477e94
mov edi, 1
mov byte [ebx + 1], 0x44
or eax, 0xffffffff
mov dword [esp + 0x1c], edi
mov word [ebx + 0x20], ax
mov ecx, dword [esp + 0x5c]
test byte [ecx + 0x18], 0x80
je 0x477f44
test edi, edi
jne 0x47817d
mov edx, dword [esp + 0x54]
test edx, edx
jne 0x477f0b
mov ecx, dword [ecx + 8]
xor ebp, ebp
mov eax, dword [ecx]
mov dword [esp + 0x3c], eax
test eax, eax
jle 0x477f07
lea ebx, [ecx + 0x10]
test byte [ebx], 3
mov edi, dword [ebx - 8]
jne 0x477efb
test edi, edi
jne 0x477ed8
mov ecx, esi
neg ecx
sbb ecx, ecx
jmp 0x477ef7
test esi, esi
je 0x477efb
mov edx, edi
sub esi, edi
movzx ecx, byte [edx]
movzx eax, byte [edx + esi]
cmp ecx, eax
jne 0x477f2f
test ecx, ecx
jne 0x477f41
mov eax, dword [esp + 0x3c]
mov esi, dword [esp + 0x58]
test ecx, ecx
je 0x477f52
inc ebp
add ebx, 0x14
cmp ebp, eax
jl 0x477ec4
mov edx, dword [esp + 0x54]
mov ecx, dword [esp + 0x5c]
mov ecx, dword [ecx + 0xc]
inc dword [esp + 0x30]
mov dword [esp + 0x5c], ecx
test ecx, ecx
je 0x47804c
mov ebx, dword [esp + 0x60]
mov ebp, dword [esp + 0x18]
mov edi, dword [esp + 0x50]
jmp 0x4778e1
movzx eax, byte [eax + 0x4e9aa0]
movzx ecx, byte [ecx + 0x4e9aa0]
sub ecx, eax
jne 0x477eef
inc edx
jmp 0x477ee0
test edi, edi
jne 0x47817d
mov edx, dword [esp + 0x54]
jmp 0x477f0b
mov ebx, dword [esp + 0x5c]
lea eax, [ebp*4]
add eax, ebp
mov edx, dword [ebx + 8]
mov ecx, dword [ebx + 0x18]
mov eax, dword [edx + eax*4 + 4]
test cl, 1
jne 0x477f93
test byte [eax + 4], 0x10
je 0x477f93
push edi
push str.misuse_of_aliased_aggregate__s
push dword [esp + 0x54]
call fcn.00493e20
add esp, 0xc
pop edi
pop esi
pop ebp
mov eax, 2
pop ebx
add esp, 0x38
ret
test dword [eax + 4], 0x8000
je 0x477fb4
test ecx, 0x4000
je 0x477fac
mov ecx, dword [esp + 0x2c]
cmp ebx, ecx
je 0x477fb4
push edi
push str.misuse_of_aliased_window_function__s
jmp 0x477f7a
mov cl, byte [eax]
cmp cl, 0xad
jne 0x477fbe
mov cl, byte [eax + 2]
cmp cl, 0xae
jne 0x477fc8
mov eax, dword [eax + 0x14]
jmp 0x477fd3
cmp cl, 0x88
jne 0x477ff8
mov eax, dword [eax + 0x14]
mov eax, dword [eax + 0x1c]
mov eax, dword [eax]
cmp eax, 1
je 0x477ff8
push str.row_value_misused
push dword [esp + 0x50]
call fcn.00493e20
add esp, 8
mov eax, 2
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x38
ret
mov eax, dword [esp + 0x30]
mov ebx, dword [esp + 0x60]
mov esi, dword [esp + 0x4c]
push eax
push 0x4ede96
push ebx
push ebp
push edx
push esi
call fcn.00483cc0
add esp, 0x18
cmp byte [esi + 0xc8], 2
jb 0x4782d2
mov eax, dword [esi + 0x110]
test eax, eax
je 0x4782d2
cmp dword [eax], ebx
je 0x478041
mov eax, dword [eax + 0xc]
test eax, eax
jne 0x478031
jmp 0x4782d2
mov dword [eax], 0
jmp 0x4782d2
test edx, edx
jne 0x47818a
mov ebp, dword [esp + 0x60]
mov ebx, dword [ebp + 4]
test bl, 0x40
je 0x4780ac
mov eax, dword [esp + 0x34]
cmp byte [eax + 0xa5], dl
jne 0x4780f9
mov ecx, dword [esp + 0x2c]
test dword [ecx + 0x18], 0x10000
je 0x4780ec
mov ecx, dword [eax + 0x20]
mov eax, dword [eax + 0x24]
mov dword [esp + 0x44], eax
mov eax, ecx
and eax, 0x10000001
cmp eax, 1
jne 0x4780a2
test edx, edx
jne 0x4780a2
mov eax, ecx
and eax, 0x40000000
or eax, edx
jne 0x4780f9
and ecx, 0x20000000
or ecx, edx
jne 0x4780f9
test ebx, 0x4000000
jne 0x47818a
mov edx, dword [ebp + 8]
mov edi, str.true
mov esi, edx
sub edi, edx
movzx ecx, byte [esi]
movzx eax, byte [edi + esi]
cmp ecx, eax
jne 0x478121
test ecx, ecx
jne 0x478133
pop edi
mov eax, 0x10000000
mov byte [ebp], 0xa7
or eax, ebx
pop esi
mov dword [ebp + 4], eax
lea eax, [ecx + 1]
pop ebp
pop ebx
add esp, 0x38
ret
mov eax, dword [eax + 0x20]
and eax, 0x40000000
or eax, 0
je 0x4780ac
push esi
push str.double_quoted_string_literal:___w_
push 0x1c
call fcn.0044c270
add esp, 0xc
mov byte [ebp], 0x73
mov dword [ebp + 0x2c], 0
mov eax, 1
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x38
ret
movzx eax, byte [eax + 0x4e9aa0]
movzx ecx, byte [ecx + 0x4e9aa0]
sub ecx, eax
jne 0x478136
inc esi
jmp 0x4780c4
mov esi, str.false
sub esi, edx
lea ecx, [ecx]
movzx ecx, byte [edx]
movzx eax, byte [esi + edx]
cmp ecx, eax
jne 0x478168
test ecx, ecx
jne 0x47817a
pop edi
mov eax, 0x20000000
mov byte [ebp], 0xa7
or eax, ebx
pop esi
mov dword [ebp + 4], eax
lea eax, [ecx + 1]
pop ebp
pop ebx
add esp, 0x38
ret
movzx eax, byte [eax + 0x4e9aa0]
movzx ecx, byte [ecx + 0x4e9aa0]
sub ecx, eax
jne 0x47818a
inc edx
jmp 0x478140
cmp edi, 1
je 0x4781ff
test edi, edi
jne 0x478195
mov edi, dword [esp + 0x1c]
mov eax, str.no_such_column
jmp 0x47819a
mov eax, str.ambiguous_column_name
mov edx, dword [esp + 0x50]
mov ecx, dword [esp + 0x58]
push ecx
test edx, edx
je 0x4781c1
mov ecx, dword [esp + 0x58]
push ecx
push edx
push eax
push str._s:__s._s._s
push dword [esp + 0x60]
call fcn.00493e20
add esp, 0x18
jmp 0x4781f0
mov edx, dword [esp + 0x58]
test edx, edx
je 0x4781de
push edx
push eax
push str._s:__s._s
push dword [esp + 0x5c]
call fcn.00493e20
add esp, 0x14
jmp 0x4781f0
push eax
push str._s:__s
push dword [esp + 0x58]
call fcn.00493e20
add esp, 0x10
mov eax, dword [esp + 0x4c]
mov byte [eax + 0x11], 1
mov eax, dword [esp + 0x2c]
inc dword [eax + 0x14]
mov ebx, dword [esp + 0x60]
movzx eax, word [ebx + 0x20]
test ax, ax
js 0x478284
mov ebp, dword [esp + 0x18]
test ebp, ebp
je 0x478284
mov edx, dword [ebx + 0x2c]
movsx esi, ax
test byte [edx + 0x24], 0x60
je 0x478266
mov eax, dword [edx + 4]
lea ecx, [esi + esi*4]
test byte [eax + ecx*4 + 0x10], 0x60
je 0x478266
movzx eax, word [edx + 0x2a]
cmp ax, 0x40
jl 0x478249
or eax, 0xffffffff
or edx, 0xffffffff
mov dword [ebp + 0x38], eax
mov dword [ebp + 0x3c], edx
jmp 0x478284
movsx ecx, ax
xor edx, edx
mov eax, 1
call fcn.0040b590
add eax, 0xffffffff
mov dword [ebp + 0x38], eax
adc edx, 0xffffffff
mov dword [ebp + 0x3c], edx
jmp 0x478284
cmp esi, 0x40
jl 0x478270
mov esi, 0x3f
mov eax, 1
xor edx, edx
mov ecx, esi
call fcn.0040b590
or dword [ebp + 0x38], eax
or dword [ebp + 0x3c], edx
mov eax, dword [ebx + 0xc]
mov esi, dword [esp + 0x34]
test eax, eax
je 0x478299
push eax
push esi
call fcn.00497330
add esp, 8
mov eax, dword [ebx + 0x10]
mov dword [ebx + 0xc], 0
test eax, eax
je 0x4782b1
push eax
push esi
call fcn.00497330
add esp, 8
or dword [ebx + 4], 0x800000
mov eax, dword [esp + 0x28]
mov dword [ebx + 0x10], 0
mov byte [ebx], al
cmp edi, 1
jne 0x477f86
mov esi, dword [esp + 0x4c]
test dword [ebx + 4], 0x400000
jne 0x4782f0
mov eax, dword [esp + 0x5c]
push dword [eax + 4]
push dword [esp + 0x28]
push ebx
push esi
call fcn.00489e50
add esp, 0x10
mov ecx, dword [esp + 0x2c]
mov eax, dword [esp + 0x5c]
inc dword [ecx + 0x10]
cmp ecx, eax
je 0x47830a
nop
mov ecx, dword [ecx + 0xc]
inc dword [ecx + 0x10]
cmp ecx, eax
jne 0x478300
pop edi
pop esi
pop ebp
mov eax, 1
pop ebx
add esp, 0x38
ret