Function at 0x10400da0
Capabilities:
Resolve function by parsing pe exports

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
sub esp, 0x94
mov eax, dword [0x1072a790]
xor eax, esp
mov dword [esp + 0x90], eax
mov eax, ecx
mov dword [esp + 4], edx
mov ecx, dword [ebp + 8]
push ebx
mov dword [esp + 0x4c], ecx
mov ecx, dword [eax]
mov ebx, dword [eax + 8]
push esi
mov dword [esp + 0x14], ecx
mov ecx, ebx
push edi
mov dword [esp + 0x14], eax
mov dword [esp + 0x68], 0
mov dword [esp + 0x2c], 0
mov dword [esp + 0x30], ebx
call fcn.103d0c10
mov ecx, ebx
mov dword [esp + 0x44], eax
call fcn.103d0c10
mov ecx, dword [esp + 0x10]
mov dword [esp + 0x4c], eax
mov esi, dword [ecx + 0x38]
movzx eax, byte [ecx + 4]
mov edx, dword [ecx + 0x3c]
cmp eax, 0x71
mov dword [esp + 0x3c], eax
mov edi, dword [esi]
mov eax, dword [esp + 0x18]
mov dword [esp + 0x48], edx
mov dword [esp + 0x38], esi
mov dword [esp + 0x34], edi
je 0x10400f39
cmp byte [eax + 0x38], 0
mov edi, 1
jne 0x10400f35
mov eax, dword [esp + 0x34]
lea eax, [eax + eax*2]
shl eax, 3
mov dword [esp + 0x24], eax
jmp 0x10400e50
mov eax, dword [ecx]
cmp edi, dword [eax]
jg 0x10400f2d
mov eax, dword [esp + 0x34]
xor ecx, ecx
mov edx, dword [esi + 8]
test eax, eax
jle 0x10400e87
add edx, 0x14
mov ebx, eax
lea esp, [esp]
movzx eax, word [edx]
cmp eax, edi
je 0x10400e7f
inc ecx
add edx, 0x18
cmp ecx, ebx
jl 0x10400e70
mov ebx, dword [esp + 0x30]
mov eax, dword [esp + 0x34]
cmp ecx, eax
jne 0x10400eff
mov ecx, dword [esp + 0x18]
mov edx, 0x2d
call fcn.103b53b0
mov esi, eax
test esi, esi
je 0x10400f13
push 0x2d
push 0
push esi
call fcn.1043c810
mov edx, dword [esp + 0x44]
or eax, 0xffffffff
mov ecx, dword [esp + 0x20]
add esp, 0xc
mov word [esi + 0x1e], ax
mov eax, 0x400
mov byte [esi], 0x81
mov byte [esi + 0x2c], 0
or word [esi + 2], ax
push esi
mov dword [esi + 0x14], 1
mov dword [esi + 4], edi
call fcn.103e20b0
mov esi, eax
add esp, 4
mov dword [esp + 0x38], esi
test esi, esi
je 0x10400eff
mov ecx, dword [esp + 0x24]
mov eax, dword [esi + 8]
inc dword [esp + 0x34]
mov word [eax + ecx + 0x14], di
add ecx, 0x18
mov dword [esp + 0x24], ecx
mov edx, dword [esp + 0x18]
inc edi
cmp byte [edx + 0x38], 0
jne 0x10400f33
mov ecx, dword [esp + 0x10]
jmp 0x10400e50
mov eax, 7
pop edi
pop esi
pop ebx
mov ecx, dword [esp + 0x90]
xor ecx, esp
call fcn.10436e26
mov esp, ebp
pop ebp
ret
mov eax, dword [esp + 0x18]
jmp 0x10400f35
mov eax, edx
mov edi, dword [esp + 0x34]
lea edx, [edi*4]
mov ecx, eax
call fcn.103b53b0
mov dword [esp + 0x70], eax
test eax, eax
je 0x104010fd
mov edx, dword [esi + 8]
xor ecx, ecx
test edi, edi
jle 0x10400f74
add edx, 0x14
mov ebx, eax
movzx eax, word [edx]
lea edx, [edx + 0x18]
dec eax
mov dword [ebx + ecx*4], eax
inc ecx
cmp ecx, edi
jl 0x10400f61
mov ebx, dword [esp + 0x30]
mov ecx, dword [esp + 0x18]
lea edx, [edi + 4]
lea edx, [edi + edx*4]
call fcn.103b53b0
mov ecx, eax
mov dword [esp + 0x50], ecx
test ecx, ecx
je 0x10401105
lea eax, [edi + 3]
mov word [ecx + 6], di
lea eax, [ecx + eax*4]
mov dword [ecx + 8], eax
mov eax, dword [esp + 0x18]
mov eax, dword [eax + 0x10]
mov eax, dword [eax + 0xc]
mov al, byte [eax + 0x4d]
mov byte [ecx + 4], al
xor ecx, ecx
mov dword [esp + 0x1c], ecx
test edi, edi
jle 0x10401105
mov eax, dword [esp + 0x50]
xor edx, edx
mov ebx, dword [esp + 0x34]
add eax, 0xc
mov dword [esp + 0x28], edx
mov dword [esp + 0x40], eax
mov eax, dword [esi + 8]
mov edi, dword [edx + eax]
mov eax, 0x100
test word [edi + 2], ax
je 0x10400ff8
mov ecx, dword [esp + 0x14]
mov edx, edi
call fcn.103e0b40
mov edx, dword [esp + 0x28]
mov esi, eax
jmp 0x104010bd
mov eax, dword [esp + 0x70]
mov eax, dword [eax + ecx*4]
mov ecx, dword [esp + 0x10]
mov dword [esp + 0x24], eax
mov edx, dword [ecx + 0x3c]
test edx, edx
je 0x1040102b
mov ecx, dword [esp + 0x14]
push eax
call fcn.10400040
mov esi, eax
add esp, 4
test esi, esi
jne 0x10401052
mov eax, dword [esp + 0x24]
mov ecx, dword [esp + 0x10]
jmp 0x1040102d
xor esi, esi
mov edx, dword [ecx]
cmp eax, dword [edx]
jge 0x10401047
mov edx, dword [edx + 8]
lea eax, [eax + eax*2]
mov ecx, dword [esp + 0x14]
mov edx, dword [edx + eax*8]
call fcn.103e0b40
mov esi, eax
test esi, esi
jne 0x10401052
mov eax, dword [esp + 0x18]
mov esi, dword [eax + 8]
mov ecx, dword [esi]
mov eax, ecx
mov dword [esp + 0x5c], ecx
test ecx, ecx
jne 0x10401064
mov dword [esp + 0x60], ecx
jmp 0x104010af
cmp byte [ecx], 0
je 0x10401076
lea esp, [esp]
inc eax
cmp byte [eax], 0
jne 0x10401070
sub eax, ecx
and eax, 0x3fffffff
mov dword [esp + 0x60], eax
jbe 0x104010af
lea eax, [esp + 0x5c]
mov edx, 0x5c
push 1
push eax
mov eax, dword [esp + 0x1c]
mov ecx, dword [eax]
call fcn.103e1050
add esp, 8
test eax, eax
je 0x104010af
mov ecx, 0x100
mov dword [eax + 8], edi
or word [eax + 2], cx
mov edi, eax
mov eax, dword [esp + 0x38]
mov edx, dword [esp + 0x28]
mov eax, dword [eax + 8]
mov dword [edx + eax], edi
mov eax, dword [esp + 0x40]
mov ecx, dword [esp + 0x50]
mov edi, dword [esp + 0x1c]
add dword [esp + 0x40], 4
mov dword [eax], esi
mov esi, dword [esp + 0x38]
mov ecx, dword [ecx + 8]
mov eax, dword [esi + 8]
mov al, byte [eax + edx + 0xc]
add edx, 0x18
mov byte [edi + ecx], al
mov ecx, edi
inc ecx
mov dword [esp + 0x28], edx
mov dword [esp + 0x1c], ecx
cmp ecx, ebx
jl 0x10400fd1
mov ebx, dword [esp + 0x30]
jmp 0x10401105
mov dword [esp + 0x50], 0
mov edi, dword [esp + 0x10]
mov edx, esi
push 0
mov dword [edi + 0x38], esi
mov esi, dword [esp + 0x18]
mov ecx, dword [esi]
call fcn.103e1a80
mov ecx, dword [esp + 0x4c]
add esp, 4
cmp dword [esp + 0x3c], 0x71
mov dword [ecx + 0x38], eax
jne 0x10401139
mov dword [esp + 0x20], 0
jmp 0x10401256
mov eax, dword [edi]
mov edi, dword [eax]
mov eax, dword [esi + 0x4c]
mov dword [esp + 0x24], edi
lea ecx, [eax + 1]
inc eax
add eax, edi
mov dword [esp + 0x20], ecx
mov dword [esi + 0x4c], eax
mov esi, dword [ebx + 0x1c]
cmp dword [ebx + 0x20], esi
jg 0x10401164
mov ecx, ebx
call fcn.103d0870
test eax, eax
jne 0x10401198
mov eax, dword [ebx + 4]
lea ecx, [esi + esi*4]
inc dword [ebx + 0x1c]
mov edx, dword [esp + 0x20]
mov word [eax + ecx*4], 7
mov byte [eax + ecx*4 + 3], 0
mov dword [eax + ecx*4 + 4], 0
mov dword [eax + ecx*4 + 8], edx
mov dword [eax + ecx*4 + 0xc], 0
mov dword [eax + ecx*4 + 0x10], 0
mov ecx, dword [esp + 0x18]
lea esi, [edi + 4]
lea esi, [edi + esi*4]
mov edx, esi
call fcn.103b53b0
mov ecx, eax
mov dword [esp + 0x2c], ecx
test ecx, ecx
je 0x1040124e
push esi
push 0
push ecx
call fcn.1043c810
mov ecx, dword [esp + 0x38]
add esp, 0xc
test ecx, ecx
je 0x1040124e
lea eax, [edi + 3]
mov word [ecx + 6], di
lea eax, [ecx + eax*4]
xor esi, esi
mov dword [ecx + 8], eax
mov eax, dword [esp + 0x18]
mov eax, dword [eax + 0x10]
mov eax, dword [eax + 0xc]
mov al, byte [eax + 0x4d]
mov byte [ecx + 4], al
test edi, edi
jle 0x1040124e
xor ebx, ebx
lea edi, [ecx + 0xc]
mov eax, dword [esp + 0x10]
mov edx, dword [eax + 0x3c]
test edx, edx
je 0x10401215
mov ecx, dword [esp + 0x14]
push esi
call fcn.10400040
add esp, 4
test eax, eax
jne 0x10401230
jmp 0x10401217
xor eax, eax
mov ecx, dword [esp + 0x10]
mov edx, dword [ecx]
cmp esi, dword [edx]
jge 0x10401230
mov edx, dword [edx + 8]
mov ecx, dword [esp + 0x14]
mov edx, dword [edx + ebx]
call fcn.103e0b40
mov dword [edi], eax
add ebx, 0x18
mov eax, dword [esp + 0x2c]
add edi, 4
mov eax, dword [eax + 8]
mov byte [esi + eax], 0
inc esi
cmp esi, dword [esp + 0x24]
jl 0x104011f7
mov ebx, dword [esp + 0x30]
mov esi, dword [esp + 0x14]
mov edi, dword [esp + 0x10]
push str.ORDER
push dword [edi + 0x38]
mov edx, edi
mov dword [edi + 0x3c], 0
mov ecx, esi
call fcn.103e0340
mov eax, dword [esp + 0x50]
add esp, 8
cmp dword [eax + 0x3c], 0
jne 0x1040128f
push str.ORDER
push dword [eax + 0x38]
mov edx, eax
mov ecx, esi
call fcn.103e0340
add esp, 8
push dword [esp + 0x44]
mov edx, edi
mov ecx, esi
call fcn.103ffe80
add esp, 4
cmp dword [edi + 8], 0
je 0x10401428
cmp dword [esp + 0x3c], 0x71
jne 0x10401428
mov edi, dword [esi + 0x4c]
mov ecx, dword [esp + 0x10]
inc edi
lea eax, [edi + 1]
mov dword [esp + 0x1c], eax
mov dword [esi + 0x4c], eax
mov eax, dword [ecx + 0xc]
test eax, eax
je 0x104012d0
inc eax
jmp 0x104012d3
mov eax, dword [ecx + 8]
mov esi, dword [ebx + 0x1c]
mov dword [esp + 0x24], eax
cmp dword [ebx + 0x20], esi
jg 0x104012ea
mov ecx, ebx
call fcn.103d0870
test eax, eax
jne 0x1040131a
mov eax, dword [ebx + 4]
lea ecx, [esi + esi*4]
inc dword [ebx + 0x1c]
mov edx, dword [esp + 0x24]
mov word [eax + ecx*4], 0xe
mov byte [eax + ecx*4 + 3], 0
mov dword [eax + ecx*4 + 4], edx
mov dword [eax + ecx*4 + 8], edi
mov dword [eax + ecx*4 + 0xc], 0
mov dword [eax + ecx*4 + 0x10], 0
mov esi, dword [ebx + 0x1c]
cmp dword [ebx + 0x20], esi
jg 0x1040132d
mov ecx, ebx
call fcn.103d0870
test eax, eax
jne 0x1040135d
mov eax, dword [ebx + 4]
lea ecx, [esi + esi*4]
inc dword [ebx + 0x1c]
mov edx, dword [esp + 0x1c]
mov word [eax + ecx*4], 0xe
mov byte [eax + ecx*4 + 3], 0
mov dword [eax + ecx*4 + 4], edi
mov dword [eax + ecx*4 + 8], edx
mov dword [eax + ecx*4 + 0xc], 0
mov dword [eax + ecx*4 + 0x10], 0
mov esi, dword [esp + 0x14]
mov eax, dword [esp + 0x10]
mov ecx, dword [esp + 0x18]
mov edx, dword [eax + 0x48]
call fcn.103e1690
mov eax, dword [esp + 0x10]
mov ecx, dword [esp + 0x18]
mov edx, dword [eax + 0x4c]
mov dword [eax + 0x48], 0
call fcn.103e1690
mov eax, dword [esp + 0x10]
mov word [esp + 0x8c], 0xa
mov dword [esp + 0x94], 0
mov dword [esp + 0x98], 0
mov dword [eax + 0x4c], 0
inc dword [esi + 0x4c]
mov ecx, dword [esi + 0x4c]
mov dword [esp + 0x90], ecx
mov word [esp + 0x7c], 0xa
mov dword [esp + 0x84], 0
lea eax, [ecx + 1]
mov dword [esp + 0x88], 0
lea edx, [eax + 1]
mov dword [esp + 0x30], eax
lea eax, [edx + 1]
mov dword [esp + 0x80], edx
mov dword [esp + 0x28], eax
add eax, 2
mov dword [esi + 0x4c], eax
mov dword [esp + 0x58], eax
mov eax, dword [ebx + 0x1c]
mov dword [esp + 0x38], ecx
mov dword [esp + 0x40], edx
mov dword [esp + 0x64], eax
cmp dword [ebx + 0x20], eax
jg 0x1040143b
mov ecx, ebx
call fcn.103d0870
test eax, eax
je 0x10401437
mov dword [esp + 0x64], 1
jmp 0x1040146f
mov dword [esp + 0x1c], 0
xor edi, edi
jmp 0x10401361
mov eax, dword [esp + 0x64]
inc dword [ebx + 0x1c]
lea ecx, [eax + eax*4]
mov eax, dword [ebx + 4]
mov word [eax + ecx*4], 1
mov byte [eax + ecx*4 + 3], 0
mov dword [eax + ecx*4 + 4], 0
mov dword [eax + ecx*4 + 8], 0
mov dword [eax + ecx*4 + 0xc], 0
mov dword [eax + ecx*4 + 0x10], 0
mov ecx, dword [esp + 0x48]
mov edx, ecx
mov eax, dword [ebx + 0x1c]
mov dword [esp + 0x78], eax
mov dword [ecx + 8], edi
mov ecx, esi
mov eax, dword [esi + 0x1e8]
mov dword [esp + 0x5c], eax
lea eax, [esp + 0x8c]
push eax
call fcn.10403d60
mov esi, dword [ebx + 0x1c]
add esp, 4
cmp dword [ebx + 0x20], esi
jg 0x104014ae
mov ecx, ebx
call fcn.103d0870
test eax, eax
jne 0x104014e2
mov eax, dword [ebx + 4]
lea ecx, [esi + esi*4]
inc dword [ebx + 0x1c]
mov edx, dword [esp + 0x30]
mov word [eax + ecx*4], 7
mov byte [eax + ecx*4 + 3], 0
mov dword [eax + ecx*4 + 4], 1
mov dword [eax + ecx*4 + 8], edx
mov dword [eax + ecx*4 + 0xc], 0
mov dword [eax + ecx*4 + 0x10], 0
mov esi, dword [ebx + 0x1c]
cmp dword [ebx + 0x20], esi
jg 0x104014f5
mov ecx, ebx
call fcn.103d0870
test eax, eax
jne 0x10401529
mov eax, dword [ebx + 4]
lea ecx, [esi + esi*4]
inc dword [ebx + 0x1c]
mov edx, dword [esp + 0x38]
mov word [eax + ecx*4], 4
mov byte [eax + ecx*4 + 3], 0
mov dword [eax + ecx*4 + 4], edx
mov dword [eax + ecx*4 + 8], 0
mov dword [eax + ecx*4 + 0xc], 0
mov dword [eax + ecx*4 + 0x10], 0
mov ecx, dword [esp + 0x10]
mov eax, dword [ebx + 0x1c]
mov dword [esp + 0x6c], eax
mov eax, dword [esp + 0x1c]
mov edi, dword [ecx + 8]
mov esi, dword [ecx + 0xc]
mov dword [ecx + 8], eax
mov eax, dword [esp + 0x14]
mov dword [ecx + 0xc], 0
mov edx, dword [eax + 0x1e8]
mov dword [esp + 0x74], edx
lea edx, [esp + 0x7c]
push edx
mov edx, ecx
mov ecx, eax
call fcn.10403d60
mov eax, dword [esp + 0x14]
add esp, 4
mov dword [eax + 8], edi
mov dword [eax + 0xc], esi
mov esi, dword [ebx + 0x1c]
cmp dword [ebx + 0x20], esi
jg 0x10401584
mov ecx, ebx
call fcn.103d0870
test eax, eax
jne 0x104015ba
mov eax, dword [ebx + 4]
lea ecx, [esi + esi*4]
inc dword [ebx + 0x1c]
mov edi, dword [esp + 0x28]
mov word [eax + ecx*4], 7
mov byte [eax + ecx*4 + 3], 0
mov dword [eax + ecx*4 + 4], 1
mov dword [eax + ecx*4 + 8], edi
mov dword [eax + ecx*4 + 0xc], 0
mov dword [eax + ecx*4 + 0x10], 0
jmp 0x104015be
mov edi, dword [esp + 0x28]
mov esi, dword [ebx + 0x1c]
cmp dword [ebx + 0x20], esi
jg 0x104015d1
mov ecx, ebx
call fcn.103d0870
test eax, eax
jne 0x10401605
mov eax, dword [ebx + 4]
lea ecx, [esi + esi*4]
inc dword [ebx + 0x1c]
mov edx, dword [esp + 0x40]
mov word [eax + ecx*4], 4
mov byte [eax + ecx*4 + 3], 0
mov dword [eax + ecx*4 + 4], edx
mov dword [eax + ecx*4 + 8], 0
mov dword [eax + ecx*4 + 0xc], 0
mov dword [eax + ecx*4 + 0x10], 0
push dword [esp + 0x44]
mov esi, dword [esp + 0x24]
lea eax, [edi + 1]
mov edx, dword [esp + 0x14]
mov ecx, dword [esp + 0x18]
push 0xfffffffffffffff0
push dword [esp + 0x34]
push esi
push eax
push dword [esp + 0x68]
lea eax, [esp + 0xa4]
push eax
call fcn.10400960
mov edi, eax
add esp, 0x1c
mov eax, dword [esp + 0x3c]
mov dword [esp + 0x1c], edi
cmp eax, 0x71
je 0x10401648
cmp eax, 0x70
jne 0x1040167e
push dword [esp + 0x44]
mov edx, dword [esp + 0x14]
lea eax, [esp + 0x80]
mov ecx, dword [esp + 0x18]
push 0xffffffffffffffef
push dword [esp + 0x34]
push esi
push dword [esp + 0x68]
push dword [esp + 0x68]
push eax
call fcn.10400960
mov dword [esp + 0x84], eax
add esp, 0x1c
mov eax, dword [esp + 0x3c]
cmp eax, 0x72
je 0x104017d7
cmp eax, 0x73
je 0x104017d7
mov edx, dword [ebx + 0x1c]
mov dword [esp + 0x20], edx
cmp dword [ebx + 0x20], edx
jg 0x104016b5
mov ecx, ebx
call fcn.103d0870
test eax, eax
je 0x104016b1
mov dword [esp + 0x20], 1
jmp 0x104016e9
mov edx, dword [esp + 0x20]
mov eax, dword [ebx + 4]
lea ecx, [edx + edx*4]
inc dword [ebx + 0x1c]
mov edx, dword [esp + 0x28]
mov dword [eax + ecx*4 + 4], edx
mov edx, dword [esp + 0x44]
mov word [eax + ecx*4], 0x1b
mov byte [eax + ecx*4 + 3], 0
mov dword [eax + ecx*4 + 8], edx
mov dword [eax + ecx*4 + 0xc], 0
mov dword [eax + ecx*4 + 0x10], 0
mov esi, dword [ebx + 0x1c]
cmp dword [ebx + 0x20], esi
jg 0x104016fc
mov ecx, ebx
call fcn.103d0870
test eax, eax
jne 0x10401730
mov eax, dword [ebx + 4]
lea ecx, [esi + esi*4]
inc dword [ebx + 0x1c]
mov edx, dword [esp + 0x58]
mov dword [eax + ecx*4 + 4], edx
mov edx, dword [esp + 0x68]
mov word [eax + ecx*4], 2
mov byte [eax + ecx*4 + 3], 0
mov dword [eax + ecx*4 + 8], edx
mov dword [eax + ecx*4 + 0xc], 0
mov dword [eax + ecx*4 + 0x10], 0
mov esi, dword [ebx + 0x1c]
cmp dword [ebx + 0x20], esi
jg 0x10401743
mov ecx, ebx
call fcn.103d0870
test eax, eax
jne 0x10401777
mov eax, dword [ebx + 4]
lea ecx, [esi + esi*4]
inc dword [ebx + 0x1c]
mov edx, dword [esp + 0x40]
mov word [eax + ecx*4], 4
mov byte [eax + ecx*4 + 3], 0
mov dword [eax + ecx*4 + 4], edx
mov dword [eax + ecx*4 + 8], 0
mov dword [eax + ecx*4 + 0xc], 0
mov dword [eax + ecx*4 + 0x10], 0
mov esi, dword [ebx + 0x1c]
cmp dword [ebx + 0x20], esi
jg 0x1040178a
mov ecx, ebx
call fcn.103d0870
test eax, eax
jne 0x104017be
mov eax, dword [ebx + 4]
lea ecx, [esi + esi*4]
inc dword [ebx + 0x1c]
mov edx, dword [esp + 0x20]
mov word [eax + ecx*4], 1
mov byte [eax + ecx*4 + 3], 0
mov dword [eax + ecx*4 + 4], 0
mov dword [eax + ecx*4 + 8], edx
mov dword [eax + ecx*4 + 0xc], 0
mov dword [eax + ecx*4 + 0x10], 0
mov edx, dword [esp + 0x48]
mov ecx, dword [esp + 0x10]
movsd xmm0, qword [edx + 0x20]
addsd xmm0, qword [ecx + 0x20]
movsd qword [ecx + 0x20], xmm0
jmp 0x10401834
mov esi, dword [ebx + 0x1c]
mov dword [esp + 0x20], esi
cmp dword [ebx + 0x20], esi
jg 0x104017f8
mov ecx, ebx
call fcn.103d0870
test eax, eax
je 0x104017f8
mov dword [esp + 0x20], 1
jmp 0x1040182c
mov eax, dword [ebx + 4]
lea ecx, [esi + esi*4]
inc dword [ebx + 0x1c]
mov edx, dword [esp + 0x44]
mov word [eax + ecx*4], 1
mov byte [eax + ecx*4 + 3], 0
mov dword [eax + ecx*4 + 4], 0
mov dword [eax + ecx*4 + 8], edx
mov dword [eax + ecx*4 + 0xc], 0
mov dword [eax + ecx*4 + 0x10], 0
mov ecx, dword [esp + 0x10]
mov edx, dword [esp + 0x48]
cmp dword [esp + 0x3c], 0x73
jne 0x10401861
movsd xmm1, qword [edx + 0x20]
movsd xmm0, qword [ecx + 0x20]
comisd xmm0, xmm1
mov eax, dword [esp + 0x20]
mov dword [esp + 0x2c], eax
jbe 0x1040198c
movsd qword [ecx + 0x20], xmm1
jmp 0x1040198c
mov edx, dword [ebx + 0x1c]
mov dword [esp + 0x2c], edx
cmp dword [ebx + 0x20], edx
jg 0x10401886
mov ecx, ebx
call fcn.103d0870
test eax, eax
je 0x10401882
mov dword [esp + 0x2c], 1
jmp 0x104018ba
mov edx, dword [esp + 0x2c]
mov eax, dword [ebx + 4]
lea ecx, [edx + edx*4]
inc dword [ebx + 0x1c]
mov edx, dword [esp + 0x30]
mov dword [eax + ecx*4 + 4], edx
mov edx, dword [esp + 0x44]
mov word [eax + ecx*4], 0x1b
mov byte [eax + ecx*4 + 3], 0
mov dword [eax + ecx*4 + 8], edx
mov dword [eax + ecx*4 + 0xc], 0
mov dword [eax + ecx*4 + 0x10], 0
mov esi, dword [ebx + 0x1c]
cmp dword [ebx + 0x20], esi
jg 0x104018cd
mov ecx, ebx
call fcn.103d0870
test eax, eax
jne 0x104018fe
mov eax, dword [ebx + 4]
lea ecx, [esi + esi*4]
inc dword [ebx + 0x1c]
mov edx, dword [esp + 0x28]
inc edx
mov word [eax + ecx*4], 2
mov byte [eax + ecx*4 + 3], 0
mov dword [eax + ecx*4 + 4], edx
mov dword [eax + ecx*4 + 8], edi
mov dword [eax + ecx*4 + 0xc], 0
mov dword [eax + ecx*4 + 0x10], 0
mov esi, dword [ebx + 0x1c]
cmp dword [ebx + 0x20], esi
jg 0x10401911
mov ecx, ebx
call fcn.103d0870
test eax, eax
jne 0x10401945
mov eax, dword [ebx + 4]
lea ecx, [esi + esi*4]
inc dword [ebx + 0x1c]
mov edx, dword [esp + 0x38]
mov word [eax + ecx*4], 4
mov byte [eax + ecx*4 + 3], 0
mov dword [eax + ecx*4 + 4], edx
mov dword [eax + ecx*4 + 8], 0
mov dword [eax + ecx*4 + 0xc], 0
mov dword [eax + ecx*4 + 0x10], 0
mov esi, dword [ebx + 0x1c]
cmp dword [ebx + 0x20], esi
jg 0x10401958
mov ecx, ebx
call fcn.103d0870
test eax, eax
jne 0x1040198c
mov eax, dword [ebx + 4]
lea ecx, [esi + esi*4]
inc dword [ebx + 0x1c]
mov edx, dword [esp + 0x2c]
mov word [eax + ecx*4], 1
mov byte [eax + ecx*4 + 3], 0
mov dword [eax + ecx*4 + 4], 0
mov dword [eax + ecx*4 + 8], edx
mov dword [eax + ecx*4 + 0xc], 0
mov dword [eax + ecx*4 + 0x10], 0
mov edi, dword [ebx + 0x1c]
mov dword [esp + 0x24], edi
cmp dword [ebx + 0x20], edi
jg 0x104019ae
mov ecx, ebx
call fcn.103d0870
test eax, eax
je 0x104019ae
mov edi, 1
mov dword [esp + 0x24], edi
jmp 0x104019e3
mov eax, dword [ebx + 4]
lea ecx, [edi + edi*4]
inc dword [ebx + 0x1c]
mov edx, dword [esp + 0x28]
inc edx
mov dword [eax + ecx*4 + 4], edx
mov edx, dword [esp + 0x1c]
mov word [eax + ecx*4], 2
mov byte [eax + ecx*4 + 3], 0
mov dword [eax + ecx*4 + 8], edx
mov dword [eax + ecx*4 + 0xc], 0
mov dword [eax + ecx*4 + 0x10], 0
mov esi, dword [ebx + 0x1c]
cmp dword [ebx + 0x20], esi
jg 0x104019f6
mov ecx, ebx
call fcn.103d0870
test eax, eax
jne 0x10401a2a
mov eax, dword [ebx + 4]
lea ecx, [esi + esi*4]
inc dword [ebx + 0x1c]
mov edx, dword [esp + 0x38]
mov word [eax + ecx*4], 4
mov byte [eax + ecx*4 + 3], 0
mov dword [eax + ecx*4 + 4], edx
mov dword [eax + ecx*4 + 8], 0
mov dword [eax + ecx*4 + 0xc], 0
mov dword [eax + ecx*4 + 0x10], 0
mov esi, dword [ebx + 0x1c]
cmp dword [ebx + 0x20], esi
jg 0x10401a3d
mov ecx, ebx
call fcn.103d0870
test eax, eax
jne 0x10401a71
mov eax, dword [ebx + 4]
lea ecx, [esi + esi*4]
inc dword [ebx + 0x1c]
mov edx, dword [esp + 0x30]
mov dword [eax + ecx*4 + 4], edx
mov edx, dword [esp + 0x20]
mov word [eax + ecx*4], 0x1b
mov byte [eax + ecx*4 + 3], 0
mov dword [eax + ecx*4 + 8], edx
mov dword [eax + ecx*4 + 0xc], 0
mov dword [eax + ecx*4 + 0x10], 0
mov esi, dword [ebx + 0x1c]
cmp dword [ebx + 0x20], esi
jg 0x10401a84
mov ecx, ebx
call fcn.103d0870
test eax, eax
jne 0x10401ab8
mov eax, dword [ebx + 4]
lea ecx, [esi + esi*4]
inc dword [ebx + 0x1c]
mov edx, dword [esp + 0x4c]
mov word [eax + ecx*4], 1
mov byte [eax + ecx*4 + 3], 0
mov dword [eax + ecx*4 + 4], 0
mov dword [eax + ecx*4 + 8], edx
mov dword [eax + ecx*4 + 0xc], 0
mov dword [eax + ecx*4 + 0x10], 0
mov eax, dword [esp + 0x3c]
cmp eax, 0x71
jne 0x10401aca
mov dword [esp + 0x1c], edi
jmp 0x10401bc4
cmp eax, 0x73
jne 0x10401add
mov dword [esp + 0x1c], edi
inc edi
mov dword [esp + 0x24], edi
jmp 0x10401bc4
mov edi, dword [ebx + 0x1c]
mov dword [esp + 0x1c], edi
cmp dword [ebx + 0x20], edi
jg 0x10401afe
mov ecx, ebx
call fcn.103d0870
test eax, eax
je 0x10401afe
mov dword [esp + 0x1c], 1
jmp 0x10401b32
mov eax, dword [ebx + 4]
lea ecx, [edi + edi*4]
inc dword [ebx + 0x1c]
mov edx, dword [esp + 0x38]
mov word [eax + ecx*4], 4
mov byte [eax + ecx*4 + 3], 0
mov dword [eax + ecx*4 + 4], edx
mov dword [eax + ecx*4 + 8], 0
mov dword [eax + ecx*4 + 0xc], 0
mov dword [eax + ecx*4 + 0x10], 0
mov esi, dword [ebx + 0x1c]
cmp dword [ebx + 0x20], esi
jg 0x10401b45
mov ecx, ebx
call fcn.103d0870
test eax, eax
jne 0x10401b79
mov eax, dword [ebx + 4]
lea ecx, [esi + esi*4]
inc dword [ebx + 0x1c]
mov edx, dword [esp + 0x30]
mov dword [eax + ecx*4 + 4], edx
mov edx, dword [esp + 0x20]
mov word [eax + ecx*4], 0x1b
mov byte [eax + ecx*4 + 3], 0
mov dword [eax + ecx*4 + 8], edx
mov dword [eax + ecx*4 + 0xc], 0
mov dword [eax + ecx*4 + 0x10], 0
mov esi, dword [ebx + 0x1c]
cmp dword [ebx + 0x20], esi
jg 0x10401b8c
mov ecx, ebx
call fcn.103d0870
test eax, eax
jne 0x10401bc0
mov eax, dword [ebx + 4]
lea ecx, [esi + esi*4]
inc dword [ebx + 0x1c]
mov edx, dword [esp + 0x4c]
mov word [eax + ecx*4], 1
mov byte [eax + ecx*4 + 3], 0
mov dword [eax + ecx*4 + 4], 0
mov dword [eax + ecx*4 + 8], edx
mov dword [eax + ecx*4 + 0xc], 0
mov dword [eax + ecx*4 + 0x10], 0
mov eax, dword [esp + 0x3c]
mov esi, dword [ebx + 0x1c]
mov dword [esp + 0x3c], esi
cmp eax, 0x71
je 0x10401bd5
cmp eax, 0x70
jne 0x10401c19
cmp dword [ebx + 0x20], esi
jg 0x10401be5
mov ecx, ebx
call fcn.103d0870
test eax, eax
jne 0x10401c19
mov eax, dword [ebx + 4]
lea ecx, [esi + esi*4]
inc dword [ebx + 0x1c]
mov edx, dword [esp + 0x58]
mov dword [eax + ecx*4 + 4], edx
mov edx, dword [esp + 0x68]
mov word [eax + ecx*4], 2
mov byte [eax + ecx*4 + 3], 0
mov dword [eax + ecx*4 + 8], edx
mov dword [eax + ecx*4 + 0xc], 0
mov dword [eax + ecx*4 + 0x10], 0
mov esi, dword [ebx + 0x1c]
cmp dword [ebx + 0x20], esi
jg 0x10401c2c
mov ecx, ebx
call fcn.103d0870
test eax, eax
jne 0x10401c60
mov eax, dword [ebx + 4]
lea ecx, [esi + esi*4]
inc dword [ebx + 0x1c]
mov edx, dword [esp + 0x40]
mov word [eax + ecx*4], 4
mov byte [eax + ecx*4 + 3], 0
mov dword [eax + ecx*4 + 4], edx
mov dword [eax + ecx*4 + 8], 0
mov dword [eax + ecx*4 + 0xc], 0
mov dword [eax + ecx*4 + 0x10], 0
mov esi, dword [ebx + 0x1c]
cmp dword [ebx + 0x20], esi
jg 0x10401c73
mov ecx, ebx
call fcn.103d0870
test eax, eax
jne 0x10401ca9
mov eax, dword [ebx + 4]
lea ecx, [esi + esi*4]
inc dword [ebx + 0x1c]
mov edx, dword [esp + 0x28]
mov edi, dword [esp + 0x2c]
mov word [eax + ecx*4], 0x1b
mov byte [eax + ecx*4 + 3], 0
mov dword [eax + ecx*4 + 4], edx
mov dword [eax + ecx*4 + 8], edi
mov dword [eax + ecx*4 + 0xc], 0
mov dword [eax + ecx*4 + 0x10], 0
jmp 0x10401cad
mov edi, dword [esp + 0x2c]
mov esi, dword [ebx + 0x1c]
cmp dword [ebx + 0x20], esi
jg 0x10401cc0
mov ecx, ebx
call fcn.103d0870
test eax, eax
jne 0x10401cf4
mov eax, dword [ebx + 4]
lea ecx, [esi + esi*4]
inc dword [ebx + 0x1c]
mov edx, dword [esp + 0x4c]
mov word [eax + ecx*4], 1
mov byte [eax + ecx*4 + 3], 0
mov dword [eax + ecx*4 + 4], 0
mov dword [eax + ecx*4 + 8], edx
mov dword [eax + ecx*4 + 0xc], 0
mov dword [eax + ecx*4 + 0x10], 0
mov eax, dword [esp + 0x64]
test eax, eax
js 0x10401d0d
mov edx, dword [ebx + 0x1c]
cmp edx, eax
jbe 0x10401d0d
lea ecx, [eax + eax*4]
mov eax, dword [ebx + 4]
mov dword [eax + ecx*4 + 8], edx
mov esi, dword [ebx + 0x1c]
cmp dword [ebx + 0x20], esi
jg 0x10401d20
mov ecx, ebx
call fcn.103d0870
test eax, eax
jne 0x10401d54
mov eax, dword [ebx + 4]
lea ecx, [esi + esi*4]
inc dword [ebx + 0x1c]
mov edx, dword [esp + 0x30]
mov word [eax + ecx*4], 7
mov byte [eax + ecx*4 + 3], 0
mov dword [eax + ecx*4 + 4], 0
mov dword [eax + ecx*4 + 8], edx
mov dword [eax + ecx*4 + 0xc], 0
mov dword [eax + ecx*4 + 0x10], 0
mov esi, dword [ebx + 0x1c]
cmp dword [ebx + 0x20], esi
jg 0x10401d67
mov ecx, ebx
call fcn.103d0870
test eax, eax
jne 0x10401d9b
mov eax, dword [ebx + 4]
lea ecx, [esi + esi*4]
inc dword [ebx + 0x1c]
mov edx, dword [esp + 0x28]
mov word [eax + ecx*4], 7
mov byte [eax + ecx*4 + 3], 0
mov dword [eax + ecx*4 + 4], 0
mov dword [eax + ecx*4 + 8], edx
mov dword [eax + ecx*4 + 0xc], 0
mov dword [eax + ecx*4 + 0x10], 0
mov esi, dword [ebx + 0x1c]
cmp dword [ebx + 0x20], esi
jg 0x10401dae
mov ecx, ebx
call fcn.103d0870
test eax, eax
jne 0x10401de2
mov eax, dword [ebx + 4]
lea ecx, [esi + esi*4]
inc dword [ebx + 0x1c]
mov edx, dword [esp + 0x38]
mov dword [eax + ecx*4 + 4], edx
mov edx, dword [esp + 0x78]
mov word [eax + ecx*4], 2
mov byte [eax + ecx*4 + 3], 0
mov dword [eax + ecx*4 + 8], edx
mov dword [eax + ecx*4 + 0xc], 0
mov dword [eax + ecx*4 + 0x10], 0
mov esi, dword [ebx + 0x1c]
cmp dword [ebx + 0x20], esi
jg 0x10401df5
mov ecx, ebx
call fcn.103d0870
test eax, eax
jne 0x10401e29
mov eax, dword [ebx + 4]
lea ecx, [esi + esi*4]
inc dword [ebx + 0x1c]
mov edx, dword [esp + 0x40]
mov dword [eax + ecx*4 + 4], edx
mov edx, dword [esp + 0x6c]
mov word [eax + ecx*4], 2
mov byte [eax + ecx*4 + 3], 0
mov dword [eax + ecx*4 + 8], edx
mov dword [eax + ecx*4 + 0xc], 0
mov dword [eax + ecx*4 + 0x10], 0
mov esi, dword [ebx + 0x1c]
cmp dword [ebx + 0x20], esi
jg 0x10401e3c
mov ecx, ebx
call fcn.103d0870
test eax, eax
jne 0x10401e70
mov eax, dword [ebx + 4]
lea ecx, [esi + esi*4]
inc dword [ebx + 0x1c]
mov edx, dword [esp + 0x30]
mov dword [eax + ecx*4 + 4], edx
mov edx, dword [esp + 0x20]
mov word [eax + ecx*4], 0x1b
mov byte [eax + ecx*4 + 3], 0
mov dword [eax + ecx*4 + 8], edx
mov dword [eax + ecx*4 + 0xc], 0
mov dword [eax + ecx*4 + 0x10], 0
mov esi, dword [ebx + 0x1c]
cmp dword [ebx + 0x20], esi
jg 0x10401e83
mov ecx, ebx
call fcn.103d0870
test eax, eax
jne 0x10401eb3
mov eax, dword [ebx + 4]
lea ecx, [esi + esi*4]
inc dword [ebx + 0x1c]
mov edx, dword [esp + 0x28]
mov word [eax + ecx*4], 0x1b
mov byte [eax + ecx*4 + 3], 0
mov dword [eax + ecx*4 + 4], edx
mov dword [eax + ecx*4 + 8], edi
mov dword [eax + ecx*4 + 0xc], 0
mov dword [eax + ecx*4 + 0x10], 0
mov ecx, dword [ebx + 0x28]
test ecx, ecx
je 0x10401ecc
mov eax, dword [esp + 0x4c]
lea eax, [eax*4 + 4]
sub ecx, eax
mov eax, dword [ebx + 0x1c]
mov dword [ecx], eax
mov esi, dword [ebx + 0x1c]
cmp dword [ebx + 0x20], esi
jg 0x10401ee6
mov ecx, ebx
call fcn.103d0870
test eax, eax
je 0x10401ee6
mov esi, 1
jmp 0x10401f1a
mov eax, dword [ebx + 4]
lea ecx, [esi + esi*4]
inc dword [ebx + 0x1c]
mov word [eax + ecx*4], 0x17
mov byte [eax + ecx*4 + 3], 0
mov dword [eax + ecx*4 + 4], 0
mov dword [eax + ecx*4 + 8], 0
mov dword [eax + ecx*4 + 0xc], 0
mov dword [eax + ecx*4 + 0x10], 0
push 0xfffffffffffffff1
push dword [esp + 0x74]
mov edx, esi
mov ecx, ebx
call fcn.103d0fc0
mov esi, dword [ebx + 0x1c]
add esp, 8
mov eax, dword [esp + 0x94]
mov edi, dword [esp + 0x84]
mov dword [esp + 0x6c], eax
cmp dword [ebx + 0x20], esi
jg 0x10401f58
mov ecx, ebx
call fcn.103d0870
test eax, eax
je 0x10401f58
mov esi, 1
jmp 0x10401f88
mov eax, dword [ebx + 4]
lea ecx, [esi + esi*4]
inc dword [ebx + 0x1c]
mov edx, dword [esp + 0x6c]
mov dword [eax + ecx*4 + 4], edx
mov edx, dword [esp + 0x34]
mov word [eax + ecx*4], 0x18
mov byte [eax + ecx*4 + 3], 0
mov dword [eax + ecx*4 + 8], edi
mov dword [eax + ecx*4 + 0xc], edx
mov dword [eax + ecx*4 + 0x10], 0
push 0xfffffffffffffff0
push dword [esp + 0x54]
mov edx, esi
mov ecx, ebx
call fcn.103d0fc0
mov ecx, dword [ebx + 4]
add esp, 8
test ecx, ecx
je 0x10401fac
mov eax, dword [ebx + 0x1c]
lea eax, [eax + eax*4]
mov byte [ecx + eax*4 - 0x11], 1
mov esi, dword [ebx + 0x1c]
cmp dword [ebx + 0x20], esi
jg 0x10401fbf
mov ecx, ebx
call fcn.103d0870
test eax, eax
jne 0x10401ff3
mov eax, dword [ebx + 4]
lea ecx, [esi + esi*4]
inc dword [ebx + 0x1c]
mov edx, dword [esp + 0x24]
mov dword [eax + ecx*4 + 4], edx
mov edx, dword [esp + 0x1c]
mov dword [eax + ecx*4 + 8], edx
mov edx, dword [esp + 0x3c]
mov word [eax + ecx*4], 0x19
mov byte [eax + ecx*4 + 3], 0
mov dword [eax + ecx*4 + 0xc], edx
mov dword [eax + ecx*4 + 0x10], 0
mov ecx, dword [ebx + 0x28]
test ecx, ecx
je 0x1040200c
mov eax, dword [esp + 0x44]
lea eax, [eax*4 + 4]
sub ecx, eax
mov eax, dword [ebx + 0x1c]
mov dword [ecx], eax
mov eax, dword [esp + 0x54]
cmp byte [eax], 5
jne 0x1040203f
mov eax, dword [esp + 0x48]
mov ecx, eax
mov eax, dword [eax + 0x3c]
test eax, eax
je 0x1040202b
mov ecx, eax
mov eax, dword [ecx + 0x3c]
test eax, eax
jne 0x10402022
push dword [ecx]
mov ebx, dword [esp + 0x18]
xor edx, edx
mov ecx, ebx
call fcn.103ff7e0
add esp, 4
jmp 0x10402043
mov ebx, dword [esp + 0x14]
mov eax, dword [esp + 0x10]
mov esi, dword [eax + 0x3c]
test esi, esi
je 0x104020b8
mov edi, dword [esp + 0x18]
mov ecx, edi
mov edx, dword [esi]
call fcn.103e2280
mov edx, dword [esi + 0x28]
mov ecx, edi
call fcn.103ed910
mov edx, dword [esi + 0x2c]
mov ecx, edi
call fcn.103e1690
mov edx, dword [esi + 0x30]
mov ecx, edi
call fcn.103e2280
mov edx, dword [esi + 0x34]
mov ecx, edi
call fcn.103e1690
mov edx, dword [esi + 0x38]
mov ecx, edi
call fcn.103e2280
mov edx, dword [esi + 0x3c]
mov ecx, edi
call fcn.103fdab0
mov edx, dword [esi + 0x48]
mov ecx, edi
call fcn.103e1690
mov edx, dword [esi + 0x4c]
mov ecx, edi
call fcn.103e1690
mov edx, esi
mov ecx, edi
call fcn.103b5160
mov eax, dword [esp + 0x10]
mov ecx, dword [esp + 0x48]
mov dword [eax + 0x3c], ecx
cmp byte [ebx + 0x1d4], 2
jne 0x10402186
movzx eax, byte [eax + 4]
mov edi, dword [ebx + 8]
sub eax, 0x71
je 0x104020f3
dec eax
je 0x104020ec
dec eax
je 0x104020e5
mov eax, str.UNION
jmp 0x104020f8
mov eax, str.INTERSECT
jmp 0x104020f8
mov eax, str.EXCEPT
jmp 0x104020f8
mov eax, str.UNION_ALL
push eax
push 0x1052121a
push dword [esp + 0x7c]
push dword [esp + 0x68]
push str.COMPOUND_SUBQUERIES__d_AND__d__s__s_
push dword [ebx]
call fcn.103b67a0
mov dword [esp + 0x8c], eax
add esp, 0x18
mov eax, dword [ebx + 0x1e4]
mov ebx, dword [edi + 0x1c]
mov dword [esp + 0x5c], eax
cmp dword [edi + 0x20], ebx
jg 0x10402140
mov ecx, edi
call fcn.103d0870
test eax, eax
je 0x10402140
mov ebx, 1
jmp 0x10402174
mov eax, dword [edi + 4]
lea esi, [ebx + ebx*4]
inc dword [edi + 0x1c]
mov ecx, dword [esp + 0x5c]
mov word [eax + esi*4], 0x96
mov byte [eax + esi*4 + 3], 0
mov dword [eax + esi*4 + 4], ecx
mov dword [eax + esi*4 + 8], 0
mov dword [eax + esi*4 + 0xc], 0
mov dword [eax + esi*4 + 0x10], 0
push 0xffffffffffffffff
push dword [esp + 0x78]
mov edx, ebx
mov ecx, edi
call fcn.103d0fc0
add esp, 8
mov ecx, dword [esp + 0x9c]
xor eax, eax
pop edi
pop esi
pop ebx
xor ecx, esp
call fcn.10436e26
mov esp, ebp
pop ebp
ret