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

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
sub esp, 0x88
mov eax, dword [0x513040]
xor eax, esp
mov dword [esp + 0x84], eax
mov eax, dword [ebp + 8]
mov dword [esp + 0x10], eax
mov eax, dword [ebp + 0xc]
mov dword [esp + 0x58], eax
mov eax, dword [ebp + 0x10]
mov dword [esp + 0x24], eax
mov dword [esp + 0x60], eax
xor eax, eax
push esi
mov esi, dword [ecx]
mov dword [esp + 0x2c], eax
mov dword [esp + 0x40], eax
mov eax, dword [esp + 0x5c]
push edi
mov edi, edx
mov dword [esp + 0x14], ecx
mov edx, dword [ebp + 0x14]
xor ecx, ecx
mov eax, dword [eax + 8]
mov dword [esp + 0x1c], edi
mov dword [esp + 8], edx
mov dword [esp + 0x20], 0
mov dword [esp + 0x4c], 0
mov dword [esp + 0x6c], 0
mov dword [esp + 0x38], esi
mov dword [esp + 0x34], ecx
mov dword [esp + 0x50], ecx
mov dword [esp + 0x54], 0xa8
mov dword [esp + 0x28], eax
mov dword [edx + 0x1c], 0xffffffff
test edi, edi
je 0x46e07f
mov eax, dword [esp + 0x2c]
test byte [eax + 0x18], 6
je 0x46df9f
xor edx, edx
mov dword [esp + 0x1c], edx
jmp 0x46e081
mov eax, dword [esi + 0x14]
xor ecx, ecx
mov dword [esp + 0x24], ecx
mov dword [esp + 0x3c], eax
test eax, eax
jle 0x46dfee
mov eax, dword [esi + 0x10]
mov dword [esp + 0x40], eax
mov edx, dword [eax]
sub edi, edx
nop dword [eax + eax]
movzx eax, byte [edx]
movzx esi, byte [edx + edi]
cmp eax, esi
jne 0x46e027
test eax, eax
jne 0x46e039
mov esi, dword [esp + 0x38]
mov ecx, dword [esp + 0x24]
mov eax, ecx
mov edi, dword [esp + 0x1c]
add eax, eax
mov edx, dword [esi + 0x10]
mov eax, dword [edx + eax*8 + 0xc]
mov dword [esp + 0x50], eax
mov eax, dword [esp + 0x3c]
cmp ecx, eax
jne 0x46e077
mov edx, str.main
sub edi, edx
nop dword [eax]
movzx eax, byte [edx]
movzx esi, byte [edx + edi]
cmp eax, esi
jne 0x46e062
test eax, eax
jne 0x46e074
mov eax, dword [esp + 0x38]
xor ecx, ecx
mov eax, dword [eax + 0x10]
mov edx, dword [eax + 0xc]
mov dword [esp + 0x50], edx
mov edx, dword [eax]
mov dword [esp + 0x1c], edx
jmp 0x46e081
movzx ecx, byte [eax + 0x506c98]
movzx eax, byte [esi + 0x506c98]
sub ecx, eax
jne 0x46e03c
inc edx
jmp 0x46dfc0
mov ecx, dword [esp + 0x24]
mov esi, dword [esp + 0x38]
inc ecx
mov eax, dword [esp + 0x40]
mov edi, dword [esp + 0x1c]
add eax, 0x10
mov dword [esp + 0x24], ecx
mov dword [esp + 0x40], eax
cmp ecx, dword [esi + 0x14]
jge 0x46dfea
jmp 0x46dfb7
movzx ecx, byte [eax + 0x506c98]
movzx eax, byte [esi + 0x506c98]
sub ecx, eax
jne 0x46e077
inc edx
jmp 0x46e000
mov edx, dword [esp + 0x1c]
xor ecx, ecx
jmp 0x46e081
mov edx, edi
mov edi, dword [esp + 0x2c]
mov eax, dword [edi + 4]
mov dword [esp + 0x58], eax
test eax, eax
je 0x46e50c
xor ecx, ecx
lea esi, [eax + 8]
mov dword [esp + 0x3c], ecx
mov dword [esp + 0x10], esi
cmp dword [eax], ecx
jle 0x46e4d0
nop dword [eax]
test dword [esi + 0x28], 0x2000
mov eax, dword [esi + 0x10]
mov dword [esp + 0x40], eax
je 0x46e250
mov eax, dword [esi + 0x14]
xor edi, edi
mov dword [esp + 0x24], edi
mov eax, dword [eax + 0x1c]
mov dword [esp + 0x64], eax
cmp dword [eax], edi
jle 0x46e201
lea esi, [eax + 0x14]
nop
lea eax, [esp + 0x48]
mov dword [esp + 0x48], 0
push eax
push edx
push dword [esp + 0x20]
mov edx, dword [esp + 0x34]
lea ecx, [esi - 0xc]
call fcn.0046da50
add esp, 0xc
test eax, eax
je 0x46e1d5
cmp dword [esp + 0x48], 0
jne 0x46e1ac
cmp dword [esp + 0x20], 0
jle 0x46e170
mov eax, dword [esp + 0x10]
test dword [eax + 0x28], 0x400
je 0x46e153
mov edx, dword [esp + 0x28]
mov ecx, dword [eax + 0x30]
call fcn.0048d360
test eax, eax
js 0x46e153
mov eax, dword [esp + 0x10]
mov al, byte [eax + 0x24]
test al, 0x10
je 0x46e1d5
test al, 8
jne 0x46e17b
mov dword [esp + 0x20], 0
mov eax, dword [esp + 0x30]
test eax, eax
je 0x46e166
mov ecx, dword [esp + 0x38]
mov edx, eax
call fcn.00473e80
xor eax, eax
mov dword [esp + 0x44], eax
mov dword [esp + 0x30], eax
inc dword [esp + 0x20]
mov edi, 1
jmp 0x46e1b3
mov eax, dword [esp + 8]
mov edx, dword [esp + 0x34]
mov ecx, dword [esp + 0x14]
movzx eax, word [eax + 0x20]
push eax
push edx
lea edx, [esp + 0x4c]
call fcn.0046dc80
mov eax, dword [esp + 0x4c]
add esp, 8
inc dword [esp + 0x20]
mov edi, 1
mov dword [esp + 0x30], eax
jmp 0x46e1b3
cmp dword [esp + 0x20], 0
jg 0x46e1d5
mov ecx, dword [esp + 8]
mov eax, dword [esp + 0x10]
inc dword [esp + 0x4c]
mov dword [esp + 0x34], eax
mov eax, dword [esp + 0x24]
mov word [ecx + 0x20], ax
or dword [esi], 0x40
test byte [esi], 0x80
jne 0x46e1f1
jmp 0x46e1d9
mov eax, dword [esp + 0x24]
mov ecx, dword [esp + 0x64]
inc eax
mov edx, dword [esp + 0x1c]
add esi, 0x14
mov dword [esp + 0x24], eax
cmp eax, dword [ecx]
jl 0x46e0e0
mov esi, dword [esp + 0x10]
mov ecx, dword [esp + 0x3c]
test edi, edi
jne 0x46e4b4
cmp dword [esp + 0x18], 0
mov edx, dword [esp + 0x1c]
je 0x46e4b8
mov eax, dword [esp + 0x40]
test edx, edx
je 0x46e26a
mov edi, dword [esp + 0x50]
cmp dword [eax + 0x3c], edi
jne 0x46e4b8
test edi, edi
jne 0x46e26a
mov ecx, 0x4fd6d0
mov eax, edx
mov dl, byte [eax]
cmp dl, byte [ecx]
jne 0x46e25d
test dl, dl
je 0x46e24c
mov dl, byte [eax + 1]
cmp dl, byte [ecx + 1]
jne 0x46e25d
add eax, 2
add ecx, 2
test dl, dl
jne 0x46e230
xor eax, eax
jmp 0x46e262
cmp dword [esp + 0x18], 0
je 0x46e33a
jmp 0x46e214
sbb eax, eax
or eax, 1
test eax, eax
jne 0x46e4b0
mov edi, dword [esi + 0xc]
mov edx, dword [esp + 0x18]
test edi, edi
je 0x46e2a2
sub edi, edx
movzx eax, byte [edx]
movzx esi, byte [edx + edi]
cmp eax, esi
jne 0x46e289
test eax, eax
je 0x46e2ff
inc edx
jmp 0x46e277
movzx ecx, byte [eax + 0x506c98]
movzx eax, byte [esi + 0x506c98]
sub ecx, eax
jne 0x46e4ac
inc edx
jmp 0x46e277
mov edi, dword [esp + 0x40]
mov edi, dword [edi]
sub edi, edx
nop word [eax + eax]
movzx eax, byte [edx]
movzx esi, byte [edx + edi]
cmp eax, esi
jne 0x46e2c2
test eax, eax
je 0x46e2ff
inc edx
jmp 0x46e2b0
movzx ecx, byte [eax + 0x506c98]
movzx eax, byte [esi + 0x506c98]
sub ecx, eax
jne 0x46e2d7
inc edx
jmp 0x46e2b0
mov eax, dword [esp + 0x40]
cmp dword [eax + 0x14], 1
jne 0x46e4ac
push dword [esp + 0x1c]
mov ecx, dword [esp + 0x1c]
mov edx, eax
call fcn.0046dd60
add esp, 4
test eax, eax
je 0x46e4ac
mov eax, dword [esp + 0x14]
mov esi, dword [esp + 0x10]
cmp byte [eax + 0xe0], 2
jb 0x46e33a
cmp dword [esi + 0xc], 0
je 0x46e33a
mov eax, dword [eax + 0x11c]
test eax, eax
je 0x46e33a
mov ecx, dword [esp + 8]
add ecx, 0x2c
cmp dword [eax], ecx
je 0x46e334
mov eax, dword [eax + 0xc]
test eax, eax
jne 0x46e327
jmp 0x46e33a
mov dword [eax], 0
mov ecx, dword [esp + 0x28]
call fcn.004330b0
mov ecx, dword [esp + 0x40]
mov dl, al
xor eax, eax
mov byte [esp + 0xf], dl
mov dword [esp + 0x24], eax
mov edi, dword [ecx + 4]
movsx ecx, word [ecx + 0x22]
mov dword [esp + 0x48], ecx
test ecx, ecx
jle 0x46e486
cmp byte [edi + 0xa], dl
jne 0x46e42e
mov esi, dword [esp + 0x28]
mov edx, dword [edi]
sub esi, edx
movzx eax, byte [edx]
movzx ecx, byte [esi + edx]
cmp eax, ecx
jne 0x46e406
test eax, eax
jne 0x46e418
mov esi, dword [esp + 0x10]
cmp dword [esp + 0x20], eax
jle 0x46e3e5
test dword [esi + 0x28], 0x400
je 0x46e3c8
mov edx, dword [esp + 0x28]
mov ecx, dword [esi + 0x30]
call fcn.0048d360
test eax, eax
js 0x46e3c8
mov al, byte [esi + 0x24]
test al, 0x10
je 0x46e422
test al, 8
jne 0x46e440
mov dword [esp + 0x20], 0
mov eax, dword [esp + 0x30]
test eax, eax
je 0x46e3db
mov ecx, dword [esp + 0x38]
mov edx, eax
call fcn.00473e80
xor ecx, ecx
mov dword [esp + 0x44], ecx
mov dword [esp + 0x30], ecx
mov edi, dword [esp + 8]
mov ecx, dword [esp + 0x40]
inc dword [esp + 0x20]
mov edx, dword [esp + 0x24]
mov dword [esp + 0x34], esi
movsx eax, word [ecx + 0x20]
cmp edx, eax
jne 0x46e468
or eax, 0xffffffff
jmp 0x46e46b
movzx ecx, byte [ecx + 0x506c98]
movzx eax, byte [eax + 0x506c98]
sub eax, ecx
jne 0x46e41e
inc edx
jmp 0x46e377
mov esi, dword [esp + 0x10]
mov dl, byte [esp + 0xf]
mov ecx, dword [esp + 0x48]
mov eax, dword [esp + 0x24]
inc eax
add edi, 0x10
mov dword [esp + 0x24], eax
cmp eax, ecx
jl 0x46e366
jmp 0x46e486
mov edi, dword [esp + 8]
mov edx, dword [esp + 0x34]
mov ecx, dword [esp + 0x14]
movzx eax, word [edi + 0x20]
push eax
push edx
lea edx, [esp + 0x4c]
call fcn.0046dc80
mov eax, dword [esp + 0x4c]
add esp, 8
mov dword [esp + 0x30], eax
jmp 0x46e3e9
movzx eax, dx
mov word [edi + 0x20], ax
test dword [esi + 0x28], 0x2000
je 0x46e48a
mov eax, dword [esi + 0x14]
mov ecx, dword [eax + 0x1c]
lea eax, [edx + edx*4]
or dword [ecx + eax*4 + 0x14], 0x40
mov ecx, dword [esp + 0x40]
cmp dword [esp + 0x20], 0
jne 0x46e4b0
test dword [ecx + 0x1c], 0x200
mov edx, dword [esp + 0x1c]
mov ecx, dword [esp + 0x3c]
jne 0x46e4b8
inc dword [esp + 0x4c]
mov dword [esp + 0x34], esi
jmp 0x46e4b8
mov esi, dword [esp + 0x10]
mov ecx, dword [esp + 0x3c]
mov edx, dword [esp + 0x1c]
mov eax, dword [esp + 0x58]
inc ecx
add esi, 0x48
mov dword [esp + 0x3c], ecx
mov dword [esp + 0x10], esi
cmp ecx, dword [eax]
jl 0x46e0b0
mov ecx, dword [esp + 0x34]
test ecx, ecx
je 0x46e4fc
mov edx, dword [esp + 8]
mov eax, dword [ecx + 0x2c]
mov dword [edx + 0x1c], eax
mov eax, dword [ecx + 0x10]
mov dword [edx + 0x2c], eax
test byte [ecx + 0x24], 0x48
je 0x46e4f5
or dword [edx + 4], 0x200000
mov eax, dword [eax + 0x3c]
mov dword [esp + 0x50], eax
mov edi, dword [esp + 0x20]
test edi, edi
jne 0x46ea42
mov edi, dword [esp + 0x2c]
cmp dword [esp + 0x1c], 0
jne 0x46e81c
mov esi, dword [esp + 0x14]
mov dword [esp + 0x10], 0
mov eax, dword [esi + 0x88]
test eax, eax
je 0x46e64c
cmp byte [esi + 0xa3], 0
mov cl, byte [esi + 0xa2]
mov byte [esp + 0xf], cl
je 0x46e5bf
test dword [edi + 0x18], 0x400
je 0x46e64c
mov esi, dword [esp + 0x18]
test esi, esi
je 0x46e5ab
mov edi, dword [eax]
mov edx, esi
sub edi, esi
nop
movzx eax, byte [edx]
movzx esi, byte [edx + edi]
cmp eax, esi
jne 0x46e572
test eax, eax
je 0x46e5a7
inc edx
jmp 0x46e560
movzx ecx, byte [eax + 0x506c98]
movzx eax, byte [esi + 0x506c98]
sub ecx, eax
jne 0x46e587
inc edx
jmp 0x46e560
mov eax, dword [esp + 0x14]
mov ecx, dword [esp + 0x18]
push 0
mov edx, dword [eax + 0x88]
call fcn.0046dd60
add esp, 4
test eax, eax
je 0x46e64c
mov cl, byte [esp + 0xf]
xor eax, eax
cmp cl, 0x81
mov ecx, dword [esp + 8]
setne al
mov dword [ecx + 0x1c], eax
jmp 0x46e63e
cmp cl, 0x81
je 0x46e60f
mov eax, dword [esp + 0x18]
test eax, eax
je 0x46e60a
mov edx, 0x4fff18
mov edi, eax
sub edi, edx
movzx eax, byte [edx]
movzx esi, byte [edx + edi]
cmp eax, esi
jne 0x46e5f1
test eax, eax
jne 0x46e603
mov eax, dword [esp + 8]
mov dword [eax + 0x1c], 1
jmp 0x46e63e
movzx ecx, byte [eax + 0x506c98]
movzx eax, byte [esi + 0x506c98]
sub ecx, eax
jne 0x46e606
inc edx
jmp 0x46e5d5
mov cl, byte [esp + 0xf]
cmp cl, 0x80
je 0x46e64c
mov eax, dword [esp + 0x18]
test eax, eax
je 0x46e650
mov edx, 0x4fff1c
mov edi, eax
sub edi, edx
movzx eax, byte [edx]
movzx esi, byte [edx + edi]
cmp eax, esi
jne 0x46e697
test eax, eax
jne 0x46e6a9
mov eax, dword [esp + 8]
mov dword [eax + 0x1c], 0
mov eax, dword [esp + 0x14]
mov eax, dword [eax + 0x88]
mov dword [esp + 0x10], eax
mov eax, dword [esp + 0x18]
mov ecx, dword [esp + 0x2c]
test dword [ecx + 0x18], 0x200
je 0x46e6c4
test eax, eax
je 0x46e6c4
mov edi, dword [ecx + 8]
test edi, edi
je 0x46e6c4
mov edx, str.excluded
mov esi, eax
sub esi, edx
movzx ecx, byte [edx]
movzx eax, byte [esi + edx]
cmp ecx, eax
jne 0x46e6af
test ecx, ecx
jne 0x46e6c1
mov eax, dword [edi + 0x20]
mov ecx, dword [eax + 0x18]
mov eax, dword [esp + 8]
mov dword [esp + 0x10], ecx
mov dword [eax + 0x1c], 2
jmp 0x46e6c8
movzx ecx, byte [eax + 0x506c98]
movzx eax, byte [esi + 0x506c98]
sub ecx, eax
jne 0x46e64c
inc edx
jmp 0x46e620
movzx eax, byte [eax + 0x506c98]
movzx ecx, byte [ecx + 0x506c98]
sub ecx, eax
jne 0x46e6c4
inc edx
jmp 0x46e671
mov ecx, dword [esp + 0x10]
test ecx, ecx
je 0x46e818
mov esi, dword [esp + 0x28]
mov ecx, esi
call fcn.004330b0
mov ecx, dword [esp + 0x10]
mov dl, al
inc dword [esp + 0x4c]
xor edi, edi
mov byte [esp + 0xf], dl
mov eax, dword [ecx + 0x3c]
mov dword [esp + 0x50], eax
mov eax, dword [ecx + 4]
movsx ecx, word [ecx + 0x22]
mov dword [esp + 0x48], eax
mov dword [esp + 0x58], ecx
test ecx, ecx
jle 0x46e7dc
nop dword [eax]
cmp byte [eax + 0xa], dl
jne 0x46e7c2
mov edx, dword [eax]
sub esi, edx
nop dword [eax]
movzx ecx, byte [edx]
movzx eax, byte [esi + edx]
cmp ecx, eax
jne 0x46e79a
test ecx, ecx
jne 0x46e7ac
mov ecx, dword [esp + 0x10]
movsx eax, word [ecx + 0x20]
cmp edi, eax
jne 0x46e7e0
or edi, 0xffffffff
mov ecx, edi
mov eax, dword [esp + 8]
xor edx, edx
mov dword [esp + 0x34], edx
mov dword [esp + 0x20], 1
movzx edx, cx
mov esi, dword [eax + 0x1c]
cmp esi, 2
jne 0x46e91a
mov eax, dword [esp + 0x14]
cmp byte [eax + 0xe0], 2
jb 0x46e8ec
mov esi, dword [esp + 8]
mov eax, dword [esp + 0x10]
mov edi, dword [esp + 0x20]
mov dword [esp + 0x54], 0xa8
mov word [esi + 0x20], dx
mov dword [esi + 0x2c], eax
jmp 0x46ef02
movzx eax, byte [eax + 0x506c98]
movzx ecx, byte [ecx + 0x506c98]
sub ecx, eax
jne 0x46e7b2
inc edx
jmp 0x46e720
mov eax, dword [esp + 0x48]
mov ecx, dword [esp + 0x58]
mov dl, byte [esp + 0xf]
mov esi, dword [esp + 0x28]
inc edi
add eax, 0x10
mov dword [esp + 0x48], eax
cmp edi, ecx
jl 0x46e710
mov ecx, dword [esp + 0x10]
movzx esi, word [ecx + 0x22]
jmp 0x46e7eb
mov ecx, dword [esp + 0x10]
movzx esi, word [ecx + 0x22]
movsx eax, si
cmp edi, eax
jl 0x46e80b
mov ecx, dword [esp + 0x28]
call fcn.004747d0
test eax, eax
je 0x46e80b
mov eax, dword [esp + 0x10]
test dword [eax + 0x1c], 0x200
mov eax, 0xffffffff
cmove edi, eax
movsx eax, si
mov ecx, edi
cmp edi, eax
jl 0x46e748
mov ecx, dword [esp + 0x34]
mov esi, dword [esp + 0x4c]
mov edi, dword [esp + 0x2c]
cmp esi, 1
jl 0x46e861
test ecx, ecx
je 0x46e861
test byte [edi + 0x18], 0x28
jne 0x46e861
mov ecx, dword [esp + 0x28]
call fcn.004747d0
test eax, eax
je 0x46e861
mov ecx, dword [esp + 0x34]
mov eax, dword [ecx + 0x10]
test dword [eax + 0x1c], 0x200
je 0x46ea26
test dword [ecx + 0x28], 0x2000
jne 0x46ea1a
test byte [edi + 0x18], 0x80
mov esi, dword [esp + 0x18]
je 0x46e8cc
test esi, esi
jne 0x46e8cc
mov eax, dword [edi + 8]
xor ecx, ecx
mov dword [esp + 0x24], ecx
mov edx, dword [eax]
mov dword [esp + 0x58], edx
test edx, edx
jle 0x46e8cc
lea esi, [eax + 0x14]
test byte [esi], 3
mov edi, dword [esi - 8]
jne 0x46e8b8
mov eax, dword [esp + 0x28]
test edi, edi
jne 0x46e89b
neg eax
sbb eax, eax
jmp 0x46e8b0
test eax, eax
je 0x46e8b8
mov edx, eax
mov ecx, edi
call fcn.00432ff0
mov ecx, dword [esp + 0x24]
mov edx, dword [esp + 0x58]
test eax, eax
je 0x46ea58
inc ecx
add esi, 0x14
mov dword [esp + 0x24], ecx
cmp ecx, edx
jl 0x46e885
mov esi, dword [esp + 0x18]
mov edi, dword [esp + 0x2c]
mov edi, dword [edi + 0xc]
inc dword [esp + 0x6c]
mov dword [esp + 0x2c], edi
test edi, edi
je 0x46ec40
mov ecx, dword [esp + 0x34]
mov edx, dword [esp + 0x1c]
jmp 0x46e085
mov ecx, dword [esp + 0x10]
call fcn.00486380
mov esi, dword [esp + 8]
mov edi, dword [esp + 0x20]
movsx ecx, ax
mov eax, dword [esp + 0x2c]
mov dword [esp + 0x54], 0xb0
mov eax, dword [eax + 8]
add ecx, dword [eax + 0x24]
mov dword [esi + 0x1c], ecx
jmp 0x46ef02
mov ecx, dword [esp + 0x10]
mov dword [eax + 0x2c], ecx
mov eax, dword [esp + 0x14]
mov ecx, dword [esp + 8]
mov al, byte [eax + 0xa3]
mov word [ecx + 0x20], dx
mov ecx, dword [esp + 0x10]
test al, al
je 0x46e97b
mov eax, dword [esp + 8]
mov dword [esp + 0x54], 0xb0
mov byte [eax + 2], 0xa8
call fcn.00486380
movsx ecx, ax
mov eax, dword [esp + 0x10]
mov edi, dword [esp + 0x20]
movsx eax, word [eax + 0x22]
inc eax
imul eax, esi
mov esi, dword [esp + 8]
add ecx, eax
mov eax, dword [esp + 0x2c]
mov eax, dword [eax + 8]
inc eax
add eax, ecx
mov dword [esi + 0x1c], eax
jmp 0x46ef02
mov dword [esp + 0x54], 0x4e
test edi, edi
jns 0x46e998
mov esi, dword [esp + 8]
mov edi, dword [esp + 0x20]
mov byte [esi + 1], 0x44
jmp 0x46ef02
test esi, esi
jne 0x46e9db
cmp edi, 0x20
jl 0x46e9bb
mov ecx, dword [esp + 0x14]
or eax, 0xffffffff
mov edi, dword [esp + 0x20]
mov esi, dword [esp + 8]
or dword [ecx + 0x98], eax
jmp 0x46ef02
mov esi, dword [esp + 8]
mov ecx, edi
mov edi, dword [esp + 0x20]
mov eax, 1
shl eax, cl
mov ecx, dword [esp + 0x14]
or dword [ecx + 0x98], eax
jmp 0x46ef02
cmp edi, 0x20
jl 0x46e9fa
mov ecx, dword [esp + 0x14]
or eax, 0xffffffff
mov edi, dword [esp + 0x20]
mov esi, dword [esp + 8]
or dword [ecx + 0x9c], eax
jmp 0x46ef02
mov esi, dword [esp + 8]
mov ecx, edi
mov edi, dword [esp + 0x20]
mov eax, 1
shl eax, cl
mov ecx, dword [esp + 0x14]
or dword [ecx + 0x9c], eax
jmp 0x46ef02
mov edi, esi
mov esi, dword [esp + 8]
mov byte [esi + 1], 0x44
jmp 0x46ea46
test dword [ecx + 0x28], 0x2000
mov edi, esi
jne 0x46ea1c
mov esi, dword [esp + 8]
or eax, 0xffffffff
mov word [esi + 0x20], ax
mov byte [esi + 1], 0x44
jmp 0x46ea46
mov esi, dword [esp + 8]
cmp edi, 1
je 0x46ef02
mov esi, dword [esp + 0x18]
jmp 0x46ed26
mov edx, dword [esp + 0x2c]
lea eax, [ecx + ecx*4]
mov ecx, edx
mov esi, dword [edx + 8]
test byte [ecx + 0x18], 1
mov ecx, dword [esp + 0x24]
mov eax, dword [esi + eax*4 + 8]
jne 0x46eaa3
test byte [eax + 4], 0x10
je 0x46eaa3
push edi
push str.misuse_of_aliased_aggregate__s
push dword [esp + 0x1c]
call fcn.00432d50
add esp, 0xc
mov eax, 2
pop edi
pop esi
mov ecx, dword [esp + 0x84]
xor ecx, esp
call fcn.004f5edb
mov esp, ebp
pop ebp
ret
test dword [eax + 4], 0x8000
je 0x46eac7
mov edx, dword [esp + 0x2c]
test dword [edx + 0x18], 0x4000
je 0x46eabf
cmp edx, dword [esp + 0x68]
je 0x46eac7
push edi
push str.misuse_of_aliased_window_function__s
jmp 0x46ea7e
mov dl, byte [eax]
cmp dl, 0xb0
jne 0x46ead1
mov dl, byte [eax + 2]
cmp dl, 0xb1
jne 0x46eadb
mov eax, dword [eax + 0x14]
jmp 0x46eae6
cmp dl, 0x8b
jne 0x46eafe
mov eax, dword [eax + 0x14]
mov eax, dword [eax + 0x1c]
cmp dword [eax], 1
je 0x46eafe
push str.row_value_misused
push dword [esp + 0x18]
call fcn.00432d50
add esp, 8
jmp 0x46ea8a
mov edi, dword [esp + 8]
cmp dword [edi + 0x28], 0
jne 0x46eb44
mov eax, dword [esp + 0x14]
mov edi, dword [eax]
lea eax, [ecx + ecx*4]
mov edx, dword [esi + eax*4 + 8]
test edx, edx
je 0x46eb2b
push 0
push 0
mov ecx, edi
call fcn.00472d20
add esp, 8
mov esi, eax
jmp 0x46eb2d
xor esi, esi
cmp byte [edi + 0x57], 0
je 0x46eb77
test esi, esi
je 0x46eb40
mov edx, esi
mov ecx, edi
call fcn.00472a80
mov edi, dword [esp + 8]
mov ecx, dword [esp + 0x14]
cmp byte [ecx + 0xe0], 2
jb 0x46f00d
mov eax, dword [ecx + 0x11c]
test eax, eax
je 0x46f00d
cmp dword [eax], edi
je 0x46ec35
mov eax, dword [eax + 0xc]
test eax, eax
jne 0x46eb63
jmp 0x46f00d
mov eax, dword [esp + 0x6c]
test eax, eax
jle 0x46ebb7
mov dword [esp + 0x70], 0
xorps xmm0, xmm0
movlpd qword [esp + 0x78], xmm0
movlpd qword [esp + 0x80], xmm0
mov dword [esp + 0x74], 0x46d870
mov dword [esp + 0x88], eax
test esi, esi
je 0x46ebb7
mov edx, esi
lea ecx, [esp + 0x70]
call fcn.0046d580
mov edi, dword [esp + 8]
cmp byte [edi], 0x72
jne 0x46ebd3
push dword [edi + 8]
mov ecx, dword [esp + 0x18]
mov edx, esi
call fcn.00471100
add esp, 4
mov esi, eax
movups xmm0, xmmword [edi]
mov ecx, dword [esi + 0x30]
movups xmm1, xmmword [esi]
movups xmm2, xmmword [esi + 0x10]
movups xmm3, xmmword [esi + 0x20]
movups xmmword [esi], xmm0
movups xmm0, xmmword [edi + 0x10]
movups xmmword [esi + 0x10], xmm0
movups xmm0, xmmword [edi + 0x20]
movups xmmword [esi + 0x20], xmm0
mov eax, dword [edi + 0x30]
mov dword [esi + 0x30], eax
movups xmmword [edi], xmm1
movups xmmword [edi + 0x10], xmm2
movups xmmword [edi + 0x20], xmm3
mov dword [edi + 0x30], ecx
test dword [edi + 4], 0x1000000
je 0x46ec1e
mov eax, dword [edi + 0x2c]
test eax, eax
je 0x46ec1e
mov dword [eax + 0x48], edi
mov ecx, dword [esp + 0x14]
mov edx, 0x472c00
push esi
call fcn.004a97d0
add esp, 4
jmp 0x46eb44
mov dword [eax], 0
jmp 0x46f00d
test esi, esi
jne 0x46ed22
mov edi, dword [esp + 8]
test byte [edi + 4], 0x80
je 0x46ece6
mov eax, dword [esp + 0x38]
cmp byte [eax + 0xb1], 0
jne 0x46ecaf
mov ecx, dword [eax + 0x20]
mov eax, dword [esp + 0x68]
test dword [eax + 0x18], 0x10000
je 0x46eca4
mov eax, ecx
and eax, 0x10000001
cmp eax, 1
jne 0x46ec8a
mov eax, ecx
and eax, 0x40000000
or eax, esi
jne 0x46ecaf
and ecx, 0x20000000
or ecx, 0
je 0x46ec9e
mov eax, 1
test eax, eax
jmp 0x46ecad
xor eax, eax
test eax, eax
jmp 0x46ecad
and ecx, 0x40000000
or ecx, 0
je 0x46ece6
push dword [esp + 0x28]
push str.double_quoted_string_literal:___w_
push 0x1c
call fcn.00431e30
xorps xmm0, xmm0
mov byte [edi], 0x76
add esp, 0xc
movq qword [edi + 0x2c], xmm0
mov eax, 1
pop edi
pop esi
mov ecx, dword [esp + 0x84]
xor ecx, esp
call fcn.004f5edb
mov esp, ebp
pop ebp
ret
mov esi, dword [edi + 4]
test esi, 0x4000800
jne 0x46ed1e
mov ecx, dword [edi + 8]
call fcn.00473f20
test eax, eax
je 0x46ed1e
or esi, eax
mov byte [edi], 0xab
mov dword [edi + 4], esi
mov eax, 1
pop edi
pop esi
mov ecx, dword [esp + 0x84]
xor ecx, esp
call fcn.004f5edb
mov esp, ebp
pop ebp
ret
mov esi, dword [esp + 0x18]
mov edi, dword [esp + 0x20]
mov ecx, dword [esp + 0x30]
test ecx, ecx
je 0x46ee48
lea eax, [edi - 1]
cmp dword [ecx], eax
jne 0x46ee3d
mov esi, dword [esp + 8]
mov eax, dword [esi + 4]
test eax, 0x800000
je 0x46ed55
and eax, 0xff7fffff
mov dword [esi + 4], eax
jmp 0x46ed83
mov edx, dword [esi + 0xc]
mov edi, dword [esp + 0x38]
test edx, edx
je 0x46ed67
mov ecx, edi
call fcn.00472a80
mov edx, dword [esi + 0x10]
mov dword [esi + 0xc], 0
test edx, edx
je 0x46ed7c
mov ecx, edi
call fcn.00472a80
mov dword [esi + 0x10], 0
mov eax, dword [esp + 0x14]
movzx edi, word [esi + 0x20]
push 0
push 0x34
mov ecx, dword [eax]
call fcn.0042f570
mov esi, eax
add esp, 8
test esi, esi
je 0x46ee1f
push 0x34
push 0
push esi
call sub.VCRUNTIME140.dll_memset
mov edx, dword [esp + 0x40]
or eax, 0xffffffff
mov byte [esi], 0xa8
add esp, 0xc
mov word [esi + 0x22], ax
mov dword [esi + 0x18], 1
mov eax, dword [edx + 0x2c]
mov word [esi + 0x20], di
mov edi, dword [esp + 0x30]
mov dword [esi + 0x1c], eax
mov eax, dword [edx + 0x10]
or dword [esi + 4], 0x200000
mov dword [esi + 0x2c], eax
mov eax, dword [edi]
lea edx, [eax + 1]
cmp dword [edi + 4], edx
jge 0x46edfd
mov eax, dword [esp + 0x14]
mov edx, edi
push esi
mov ecx, dword [eax]
call fcn.004739b0
add esp, 4
jmp 0x46ee23
movups xmm0, xmmword [0x505b68]
lea eax, [eax + eax*4]
mov dword [edi], edx
lea ecx, [edi + eax*4]
mov dword [esp + 0x30], edi
mov eax, dword [0x505b78]
movups xmmword [ecx + 8], xmm0
mov dword [ecx + 0x18], eax
mov dword [ecx + 8], esi
mov eax, dword [esp + 0x30]
mov edi, dword [esp + 8]
mov ecx, dword [esp + 0x14]
mov byte [edi], 0xac
mov dword [edi + 8], str.coalesce
mov dword [edi + 0x14], eax
jmp 0x46f011
mov edx, ecx
mov ecx, dword [esp + 0x38]
call fcn.00473e80
test edi, edi
mov ecx, str.ambiguous_column_name
mov eax, str.no_such_column
cmovne eax, ecx
mov ecx, dword [esp + 0x1c]
test ecx, ecx
je 0x46ee79
push dword [esp + 0x28]
push esi
push ecx
push eax
push str._s:__s._s._s
push dword [esp + 0x28]
call fcn.00432d50
add esp, 0x18
jmp 0x46eec6
test esi, esi
je 0x46ee96
push dword [esp + 0x28]
push esi
push eax
push str._s:__s._s
push dword [esp + 0x24]
call fcn.00432d50
add esp, 0x14
jmp 0x46eec6
test edi, edi
jne 0x46eeb0
mov ecx, dword [esp + 0x60]
test byte [ecx + 4], 0x80
je 0x46eeb0
push dword [esp + 0x28]
push eax
push str._s:___s____should_this_be_a_string_literal_in_single_quotes_
jmp 0x46eeba
push dword [esp + 0x28]
push eax
push str._s:__s
push dword [esp + 0x20]
call fcn.00432d50
add esp, 0x10
mov ecx, dword [esp + 0x14]
mov esi, dword [esp + 8]
mov eax, esi
mov edx, dword [ecx]
test byte [eax + 4], 3
jne 0x46eedf
mov ecx, dword [eax + 0x24]
test ecx, ecx
jg 0x46eee8
mov eax, dword [eax + 0xc]
test eax, eax
jne 0x46eed2
jmp 0x46eeeb
mov dword [edx + 0x44], ecx
mov eax, dword [esp + 0x14]
mov dword [esp + 0x54], 0x7a
mov byte [eax + 0x11], 1
mov eax, dword [esp + 0x68]
inc dword [eax + 0x14]
test dword [esi + 4], 0x810000
jne 0x46ef40
mov edx, dword [esi + 0xc]
test edx, edx
je 0x46ef1b
mov ecx, dword [esp + 0x38]
call fcn.00472a80
mov edx, dword [esi + 0x10]
mov dword [esi + 0xc], 0
test edx, edx
je 0x46ef32
mov ecx, dword [esp + 0x38]
call fcn.00472a80
or dword [esi + 4], 0x800000
mov dword [esi + 0x10], 0
mov ecx, dword [esp + 0x34]
test ecx, ecx
je 0x46effa
movzx eax, word [esi + 0x20]
test ax, ax
js 0x46eff3
movsx esi, ax
mov eax, dword [esp + 8]
mov edx, dword [eax + 0x2c]
test byte [edx + 0x1c], 0x60
je 0x46efc3
mov eax, dword [edx + 4]
mov ecx, esi
add ecx, ecx
test byte [eax + ecx*8 + 0xe], 0x60
je 0x46efc3
movzx eax, word [edx + 0x22]
cmp ax, 0x40
jl 0x46ef97
mov eax, dword [esp + 0x34]
or ecx, 0xffffffff
mov esi, dword [esp + 8]
or edx, 0xffffffff
or dword [eax + 0x38], ecx
or dword [eax + 0x3c], edx
jmp 0x46effa
mov esi, dword [esp + 8]
xor ecx, ecx
xor edx, edx
cwde
bts ecx, eax
cmp eax, 0x20
cmovae edx, ecx
xor ecx, edx
cmp eax, 0x40
mov eax, dword [esp + 0x34]
cmovae edx, ecx
add ecx, 0xffffffff
adc edx, 0xffffffff
or dword [eax + 0x38], ecx
or dword [eax + 0x3c], edx
jmp 0x46effa
cmp esi, 0x40
mov eax, 0x3f
cmovge esi, eax
mov eax, dword [esp + 0x34]
xor ecx, ecx
xor edx, edx
bts ecx, esi
cmp esi, 0x20
cmovae edx, ecx
xor ecx, edx
cmp esi, 0x40
mov esi, dword [esp + 8]
cmovae edx, ecx
or dword [eax + 0x38], ecx
or dword [eax + 0x3c], edx
jmp 0x46effa
or dword [ecx + 0x28], 0x4000
mov eax, dword [esp + 0x54]
mov byte [esi], al
cmp edi, 1
jne 0x46ea8a
mov ecx, dword [esp + 0x14]
mov edi, dword [esp + 8]
mov esi, dword [ecx]
cmp dword [esi + 0x16c], 0
je 0x46f0f6
mov al, byte [edi]
cmp al, 0xa8
je 0x46f02e
cmp al, 0x4e
jne 0x46f0f6
cmp dword [esp + 0x50], 0
mov eax, dword [esp + 0x2c]
mov ecx, dword [eax + 4]
mov dword [esp + 0x60], ecx
je 0x46f0f6
mov eax, dword [esi + 0x10]
xor edx, edx
mov esi, dword [esp + 0x50]
add eax, 0xc
cmp dword [eax], esi
je 0x46f06a
inc edx
lea eax, [eax + 0x10]
mov ecx, edx
cmp dword [eax], esi
jne 0x46f054
test ecx, ecx
js 0x46f0f6
mov ecx, dword [esp + 0x60]
cmp byte [edi], 0x4e
jne 0x46f07b
mov eax, dword [esp + 0x14]
mov esi, dword [eax + 0x88]
jmp 0x46f0ad
mov esi, dword [ecx]
xor eax, eax
test esi, esi
jle 0x46f0f6
mov edi, dword [edi + 0x1c]
add ecx, 0x34
nop dword [eax]
cmp edi, dword [ecx]
je 0x46f09e
inc eax
add ecx, 0x48
cmp eax, esi
jl 0x46f090
jmp 0x46f0f6
mov esi, dword [esp + 0x60]
lea eax, [eax + eax*8]
mov edi, dword [esp + 8]
mov esi, dword [esi + eax*8 + 0x18]
test esi, esi
je 0x46f0f6
movsx ecx, word [edi + 0x20]
test ecx, ecx
js 0x46f0c3
mov eax, dword [esi + 4]
add ecx, ecx
mov eax, dword [eax + ecx*8]
jmp 0x46f0de
movzx eax, word [esi + 0x20]
test ax, ax
js 0x46f0d9
movsx ecx, ax
mov eax, dword [esi + 4]
add ecx, ecx
mov eax, dword [eax + ecx*8]
jmp 0x46f0de
mov eax, str.ROWID
mov ecx, dword [esp + 0x14]
push edx
mov edx, dword [esi]
push eax
call fcn.00484630
add esp, 8
cmp eax, 2
jne 0x46f0f6
mov byte [edi], 0x7a
mov eax, dword [esp + 0x68]
mov ecx, dword [esp + 0x2c]
inc dword [eax + 0x10]
cmp eax, ecx
je 0x46f10f
mov eax, dword [eax + 0xc]
inc dword [eax + 0x10]
cmp eax, ecx
jne 0x46f105
mov ecx, dword [esp + 0x8c]
mov eax, 1
pop edi
pop esi
xor ecx, esp
call fcn.004f5edb
mov esp, ebp
pop ebp
ret