Function at 0x18121ab8
Capabilities:
Enumerate pe sections
Resolve function by parsing pe exports

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
sub esp, 0x10c
mov eax, dword [0x1820f00c]
xor eax, esp
mov dword [esp + 0x108], eax
mov eax, dword [ebp + 8]
push ebx
mov ebx, ecx
mov dword [esp + 0x20], eax
xor ecx, ecx
mov dword [esp + 0x50], ebx
mov eax, ecx
mov dword [esp + 0x44], 1
mov dword [esp + 0x64], eax
mov dword [esp + 0x48], eax
mov eax, dword [ebx + 0x19c]
push esi
mov esi, dword [ebx]
mov dword [esp + 0xd8], eax
mov eax, dword [ebx + 0x1a0]
push edi
mov edi, edx
mov dword [ebx + 0x19c], eax
inc eax
mov dword [esp + 0x64], edi
mov dword [ebx + 0x1a0], eax
mov dword [esp + 0x20], esi
test edi, edi
je 0x18122f0a
cmp byte [esi + 0x49], cl
jne 0x18122f0a
cmp dword [ebx + 0x24], ecx
jne 0x18122f0a
push ecx
push ecx
push ecx
push 0x15
pop edx
mov ecx, ebx
call fcn.1810d188
add esp, 0xc
test eax, eax
jne 0x18122f0a
push 0x30
push eax
lea eax, [esp + 0xb4]
push eax
call fcn.181620e0
mov eax, dword [esp + 0x34]
add esp, 0xc
push 8
pop ecx
cmp byte [eax], cl
ja 0x18121b88
mov edx, dword [edi + 0x2c]
test edx, edx
je 0x18121b80
mov ecx, esi
call fcn.18107343
and dword [edi + 0x2c], 0
and dword [edi + 8], 0xfffffffe
push 0
mov edx, edi
mov ecx, ebx
call fcn.1812154e
pop ecx
push 0x20
lea eax, [esp + 0x74]
push 0
push eax
call fcn.181620e0
mov eax, dword [edi + 0x2c]
add esp, 0xc
cmp dword [ebx + 0x24], 0
mov dword [esp + 0x70], eax
mov eax, dword [edi + 0x1c]
mov dword [esp + 0x1c], eax
jne 0x18121d9c
cmp byte [esi + 0x49], 0
jne 0x18121d9c
mov eax, dword [edi + 8]
mov ecx, ebx
shr eax, 3
and eax, 1
mov dword [esp + 0x3c], eax
call fcn.1811e998
mov esi, eax
mov dword [esp + 0x18], esi
test esi, esi
je 0x18121d98
mov eax, dword [esp + 0x28]
cmp byte [eax], 9
jne 0x18121bff
mov edx, edi
mov ecx, ebx
call fcn.1811e43b
mov eax, dword [esp + 0x28]
xor edx, edx
mov dword [esp + 0x10], edx
cmp dword [edi + 0x30], edx
jne 0x18121d62
mov ecx, dword [esp + 0x1c]
cmp edx, dword [ecx]
jge 0x18121de7
imul eax, edx, 0x50
mov dword [esp + 0x24], eax
test byte [eax + ecx + 0x2c], 8
mov esi, dword [eax + ecx + 0x1c]
mov dword [esp + 0x14], esi
mov esi, dword [eax + ecx + 0x18]
mov dword [esp + 0x30], esi
mov esi, dword [esp + 0x18]
je 0x18121cb9
and dword [esp + 0x98], 0
and dword [esp + 0x9c], 0
cmp dword [edi + 0x20], 0
mov eax, dword [eax + ecx + 0x38]
mov dword [esp + 0x94], 0x1810a802
mov byte [esp + 0xa4], 0
mov dword [esp + 0xa8], eax
je 0x18121cb9
mov edx, dword [edi + 0x20]
lea ecx, [esp + 0x90]
call fcn.18104085
cmp byte [esp + 0xa4], 0
je 0x18121cb1
mov eax, dword [esp + 0x20]
mov ecx, 0x2000
test word [eax + 0x44], cx
jne 0x18121cb1
mov eax, dword [esp + 0x1c]
mov edx, dword [esp + 0x24]
and byte [edx + eax + 0x2c], 0xd7
mov edx, dword [edx + eax + 0x38]
mov ecx, dword [edi + 0x20]
call fcn.1811d0a5
mov ecx, dword [esp + 0x1c]
mov edx, dword [esp + 0x10]
mov eax, dword [esp + 0x14]
test eax, eax
je 0x18121d4f
mov eax, dword [eax]
mov ecx, dword [esp + 0x30]
mov esi, dword [eax]
movsx eax, word [ecx + 0x2a]
mov ecx, dword [esp + 0x1c]
cmp eax, esi
mov dword [esp + 0x24], esi
mov esi, dword [esp + 0x18]
jne 0x18121d7f
mov eax, dword [esp + 0x14]
test byte [eax + 8], 8
jne 0x18121d4f
cmp dword [eax + 0x2c], 0
je 0x18121d0d
test edx, edx
jne 0x18121d0d
test dword [edi + 8], 0x40000
je 0x18121d0d
cmp dword [ecx], 1
je 0x18121d4f
test byte [ecx + 0x7c], 0xa
jne 0x18121d4f
push dword [esp + 0x3c]
mov ecx, ebx
push edx
mov edx, edi
call fcn.181202ec
pop ecx
pop ecx
test eax, eax
je 0x18121d26
or dword [esp + 0x10], 0xffffffff
mov eax, dword [esp + 0x20]
mov ecx, dword [edi + 0x1c]
mov dword [esp + 0x1c], ecx
cmp byte [eax + 0x49], 0
jne 0x18122f03
mov eax, dword [esp + 0x28]
mov edx, dword [esp + 0x10]
cmp byte [eax], 8
jbe 0x18121d53
mov eax, dword [edi + 0x2c]
mov dword [esp + 0x70], eax
mov eax, dword [esp + 0x28]
inc edx
cmp dword [edi + 0x30], 0
mov dword [esp + 0x10], edx
je 0x18121c12
push eax
mov edx, edi
mov ecx, ebx
call fcn.1811eef1
pop ecx
mov ecx, dword [esp + 0xdc]
mov dword [ebx + 0x19c], ecx
jmp 0x18122f0d
push dword [esp + 0x24]
mov ecx, dword [esp + 0x34]
push dword [ecx]
push eax
push str.expected__d_columns_for__s_but_got__d
push ebx
call fcn.180e1fb6
add esp, 0x14
mov esi, dword [esp + 0x20]
mov eax, dword [esp + 0x6c]
mov ecx, dword [esp + 0xdc]
mov dword [ebx + 0x19c], ecx
test eax, eax
je 0x18121dba
mov edx, eax
mov ecx, esi
call fcn.18107343
mov edx, dword [esp + 0xc8]
test edx, edx
je 0x18121dcc
mov ecx, esi
call fcn.180dfba4
mov edx, dword [esp + 0xd4]
test edx, edx
je 0x18121dde
mov ecx, esi
call fcn.180dfba4
mov eax, dword [esp + 0x4c]
jmp 0x18122f0d
xor eax, eax
mov dword [esp + 0x40], eax
cmp dword [ecx], eax
jle 0x18122129
mov dword [esp + 0x1c], ecx
imul eax, eax, 0x50
add eax, 8
add ecx, eax
mov dword [esp + 0xc], ecx
mov eax, dword [ecx + 0x40]
or eax, dword [ecx + 0x44]
jne 0x18121e29
push dword [ecx + 4]
push 0x181dc774
push dword [ecx + 8]
mov ecx, ebx
push 0x14
pop edx
call fcn.1810d188
mov ecx, dword [esp + 0x18]
add esp, 0xc
mov eax, dword [ecx + 0x14]
mov dword [esp + 0x10], eax
test eax, eax
je 0x18122114
cmp dword [ecx + 0x18], 0
je 0x18121e62
test byte [ecx + 0x28], 0x10
jne 0x18122114
push 0
push dword [ecx + 0x18]
push dword [ecx + 0x1c]
mov ecx, esi
push 0xe
pop edx
call fcn.180f7767
add esp, 0xc
jmp 0x18122114
and dword [esp + 0x14], 0
lea edx, [esp + 0x14]
mov ecx, edi
call fcn.18106315
mov eax, dword [esp + 0x14]
mov ecx, 0x1000
add dword [ebx + 0x198], eax
mov eax, dword [esp + 0x20]
test word [eax + 0x44], cx
jne 0x18121eae
mov ecx, dword [esp + 0xc]
mov edx, dword [esp + 0x10]
movzx eax, byte [ecx + 0x24]
shr eax, 5
and eax, 1
push eax
push dword [ecx + 0x30]
mov ecx, ebx
push dword [edi + 0x20]
call fcn.181207db
add esp, 0xc
cmp dword [esp + 0x40], 0
mov ecx, dword [esp + 0xc]
mov eax, dword [ebx + 0x1b8]
mov dword [esp + 0x5c], eax
mov eax, dword [ecx + 8]
mov dword [ebx + 0x1b8], eax
jne 0x18121f9c
mov eax, dword [esp + 0x1c]
cmp dword [eax], 1
je 0x18121ee3
test byte [eax + 0x7c], 0xa
je 0x18121f9c
mov esi, dword [esi + 0x88]
inc esi
inc dword [ebx + 0x2c]
mov eax, dword [ebx + 0x2c]
push esi
push 0
push eax
mov dword [ecx + 0x1c], eax
mov ecx, dword [esp + 0x24]
push 0xf
pop edx
call fcn.180f7767
mov ecx, dword [esp + 0x18]
add esp, 0xc
mov edx, dword [esp + 0x10]
mov byte [esp + 0x90], 0xd
mov eax, dword [ecx + 0x1c]
mov dword [esp + 0x94], eax
xor eax, eax
mov dword [ecx + 0x18], esi
mov dword [esp + 0xa0], eax
mov dword [esp + 0x98], eax
mov dword [esp + 0x9c], eax
mov al, byte [ebx + 0x1a0]
mov byte [ecx + 0x2c], al
lea eax, [esp + 0x90]
push eax
mov ecx, ebx
call fcn.18121ab8
mov edx, dword [esp + 0x10]
mov eax, dword [esp + 0x14]
pop ecx
mov ecx, dword [edx + 0x10]
mov ax, word [eax + 6]
mov word [ecx + 0x2c], ax
mov eax, dword [esp + 0x98]
or dword [edx + 0x28], 0x10
mov ecx, dword [esp + 0x18]
mov dword [edx + 0x20], eax
mov edx, dword [edx + 0x1c]
call fcn.180f7981
lea edx, [esi - 1]
mov esi, dword [esp + 0x18]
mov ecx, esi
call fcn.180f7ea8
mov ecx, dword [esi + 0x88]
mov dword [eax + 8], ecx
jmp 0x181220dc
xor eax, eax
mov dword [esp + 0x14], eax
mov eax, dword [ebx + 0x2c]
inc eax
push 0
push eax
push 0
mov dword [ebx + 0x2c], eax
mov dword [ecx + 0x1c], eax
mov ecx, esi
push 0x43
pop edx
call fcn.180f7767
mov ecx, dword [esp + 0x18]
add esp, 0xc
mov dword [esp + 0x30], eax
inc eax
push 8
mov dword [ecx + 0x18], eax
pop eax
test byte [ecx + 0x28], al
jne 0x18121fec
xor eax, eax
mov ecx, esi
push eax
push eax
push eax
push 0x14
pop edx
call fcn.180f7767
mov ecx, dword [esp + 0x18]
add esp, 0xc
mov dword [esp + 0x14], eax
mov edx, ecx
mov ecx, dword [esp + 0x1c]
call fcn.18121a40
mov dword [esp + 0x24], eax
test eax, eax
je 0x18122039
push 0
push dword [eax + 0x30]
mov eax, dword [esp + 0x14]
mov ecx, esi
push dword [eax + 0x30]
push 0x6c
pop edx
call fcn.180f7767
mov edx, dword [esp + 0x30]
add esp, 0xc
mov ecx, dword [esp + 0xc]
mov al, byte [edx + 0x2c]
mov byte [ecx + 0x2c], al
mov eax, dword [edx + 0x14]
mov ecx, dword [esp + 0x10]
movzx eax, word [eax + 6]
mov word [ecx + 6], ax
mov ecx, eax
jmp 0x1812208b
mov ecx, dword [esp + 0xc]
mov edx, dword [esp + 0x10]
mov byte [esp + 0x90], 0xc
mov eax, dword [ecx + 0x30]
mov dword [esp + 0x94], eax
xor eax, eax
mov dword [esp + 0xa0], eax
mov dword [esp + 0x98], eax
mov dword [esp + 0x9c], eax
mov al, byte [ebx + 0x1a0]
mov byte [ecx + 0x2c], al
lea eax, [esp + 0x90]
push eax
mov ecx, ebx
call fcn.18121ab8
mov eax, dword [esp + 0x14]
pop ecx
movzx ecx, word [eax + 6]
mov eax, dword [esp + 0xc]
mov eax, dword [eax + 0x10]
mov word [eax + 0x2c], cx
mov eax, dword [esp + 0x14]
test eax, eax
je 0x181220b0
mov edx, eax
mov ecx, esi
call fcn.180f7ea8
mov ecx, dword [esi + 0x88]
mov dword [eax + 8], ecx
mov eax, dword [esp + 0xc]
mov ecx, esi
push 0
push 0
push dword [eax + 0x1c]
push 0x3f
pop edx
call fcn.180f7767
mov edx, dword [esp + 0x3c]
add esp, 0xc
mov ecx, dword [esp + 0x18]
mov esi, eax
call fcn.180f7ea8
mov dword [eax + 4], esi
mov esi, ecx
mov eax, dword [esp + 0x20]
xor ecx, ecx
mov byte [ebx + 0x13], cl
mov dword [ebx + 0x1c], ecx
cmp byte [eax + 0x49], cl
jne 0x18122f03
mov dword [esp + 0x14], ecx
lea edx, [esp + 0x14]
mov ecx, edi
call fcn.18106315
mov eax, dword [esp + 0x14]
sub dword [ebx + 0x198], eax
mov eax, dword [esp + 0x5c]
mov dword [ebx + 0x1b8], eax
mov eax, dword [esp + 0x40]
mov ecx, dword [esp + 0x1c]
inc eax
mov dword [esp + 0x40], eax
cmp eax, dword [ecx]
jl 0x18121df9
mov eax, dword [edi + 0x20]
xor ecx, ecx
mov edx, dword [edi]
inc ecx
mov dword [esp + 0x34], eax
mov eax, dword [edi + 0x24]
mov dword [esp + 0xc], eax
mov eax, dword [edi + 0x28]
mov dword [esp + 0x40], eax
mov al, byte [edi + 8]
and al, cl
mov dword [esp + 0x44], edx
mov byte [esp + 0x108], al
mov eax, dword [edi + 8]
and al, 9
cmp al, cl
jne 0x18122186
mov ecx, dword [esp + 0x70]
push 0xffffffffffffffff
call fcn.1810a6e7
pop ecx
test eax, eax
jne 0x18122186
mov edx, dword [esp + 0x44]
mov ecx, dword [esp + 0x20]
and dword [edi + 8], 0xfffffffe
push eax
call fcn.18106cf6
pop ecx
mov dword [esp + 0xc], eax
mov dword [edi + 0x24], eax
mov edx, dword [esp + 0x70]
test edx, edx
je 0x181221de
mov eax, dword [esp + 0x44]
mov ecx, ebx
push dword [eax]
push 0
call fcn.1811de3c
mov edx, dword [ebx + 0x28]
mov ecx, eax
push 0xfffffffffffffff7
push ecx
mov dword [esp + 0x88], edx
lea eax, [edx + 1]
mov dword [ebx + 0x28], eax
mov eax, dword [esp + 0x54]
push 0
mov ecx, dword [eax]
mov eax, dword [esp + 0x84]
inc ecx
mov eax, dword [eax]
add eax, ecx
mov ecx, esi
push eax
push edx
push 0x6e
pop edx
call fcn.180f7892
add esp, 0x1c
mov dword [esp + 0x84], eax
jmp 0x181221e6
or dword [esp + 0x84], 0xffffffff
mov eax, dword [esp + 0x28]
cmp byte [eax], 0xc
jne 0x18122207
mov ecx, dword [esp + 0x44]
push 0
push dword [ecx]
mov ecx, esi
push dword [eax + 4]
push 0x6e
pop edx
call fcn.180f7767
add esp, 0xc
mov ecx, esi
call fcn.180f79a6
mov ecx, 0x4000
mov dword [esp + 0xe4], eax
test dword [edi + 8], ecx
jne 0x18122228
mov ecx, 0x140
mov word [edi + 6], cx
push eax
mov edx, edi
mov ecx, ebx
call fcn.1811e9b8
pop ecx
xor ecx, ecx
cmp dword [edi + 0xc], ecx
jne 0x18122259
mov edx, dword [esp + 0x84]
test edx, edx
js 0x18122259
mov ecx, esi
call fcn.180f7ea8
mov byte [eax], 0x6f
or byte [esp + 0x8c], 1
xor ecx, ecx
test byte [edi + 8], 1
je 0x181222cb
mov eax, dword [ebx + 0x28]
mov dword [esp + 0x10c], eax
inc eax
push ecx
mov dword [ebx + 0x28], eax
mov edx, dword [edi]
push ecx
mov ecx, ebx
call fcn.1811de3c
push 0
push 0
push dword [esp + 0x11c]
mov ecx, esi
mov edi, eax
push 0x6e
pop edx
call fcn.180f7767
mov ecx, dword [esp + 0x2c]
add esp, 0x14
mov esi, eax
mov edx, esi
push 0xfffffffffffffff7
push edi
call fcn.180f7de4
pop ecx
pop ecx
push 8
mov dword [esp + 0x114], esi
mov esi, dword [esp + 0x1c]
mov ecx, esi
pop eax
mov edx, eax
call fcn.180f7bf4
mov edi, dword [esp + 0x64]
xor ecx, ecx
mov byte [esp + 0x109], 3
jmp 0x181222d2
mov byte [esp + 0x109], cl
cmp dword [esp + 0x3c], 0
mov eax, dword [esp + 0xc]
jne 0x181223e0
test eax, eax
jne 0x181223e0
movzx ecx, byte [esp + 0x108]
mov edx, 0x4000
mov ax, word [edi + 8]
neg ecx
sbb ecx, ecx
and ax, dx
mov edx, dword [esp + 0x1c]
and ecx, 0x100
or cx, ax
movsx eax, word [edi + 6]
push eax
movzx ecx, cx
push ecx
push dword [edi]
mov ecx, ebx
push dword [esp + 0x7c]
push dword [esp + 0x44]
call fcn.1812ef3e
mov edx, eax
add esp, 0x14
mov dword [esp + 0x14], edx
test edx, edx
je 0x18121d98
movzx eax, word [edx + 0x48]
cmp ax, word [edi + 6]
jge 0x18122347
mov word [edi + 6], ax
cmp byte [esp + 0x108], 0
je 0x1812235f
mov al, byte [edx + 0x33]
test al, al
je 0x1812235f
mov byte [esp + 0x109], al
mov eax, dword [esp + 0x70]
test eax, eax
je 0x18122389
movsx ecx, byte [edx + 0x2f]
mov dword [esp + 0x74], ecx
mov al, byte [edx + 0x34]
mov byte [esp + 0x8d], al
mov eax, dword [esp + 0x70]
sub ecx, dword [eax]
neg ecx
sbb ecx, ecx
and eax, ecx
mov dword [esp + 0x70], eax
cmp dword [esp + 0x84], 0
jl 0x181223a9
test eax, eax
jne 0x181223a9
mov edx, dword [esp + 0x84]
mov ecx, esi
call fcn.180f7d39
mov edx, dword [esp + 0x14]
push dword [edx + 0x24]
mov eax, dword [esp + 0x2c]
mov ecx, ebx
push dword [edx + 0x20]
mov edx, edi
push eax
lea eax, [esp + 0x114]
push eax
lea eax, [esp + 0x80]
push eax
push 0xffffffffffffffff
call fcn.1811d703
mov ecx, dword [esp + 0x2c]
add esp, 0x18
call fcn.1812f8ec
jmp 0x18122e94
mov dword [esp + 0x38], ecx
mov dword [esp + 0x24], ecx
mov dword [esp + 0x48], ecx
test eax, eax
je 0x18122431
mov edx, dword [edi]
mov ecx, dword [edx]
test ecx, ecx
jle 0x1812240c
add edx, 0x1a
xor esi, esi
dec ecx
mov word [edx], si
lea edx, [edx + 0x18]
test ecx, ecx
jg 0x181223fb
mov esi, dword [esp + 0x18]
mov ecx, dword [eax]
test ecx, ecx
jle 0x18122426
lea edx, [eax + 0x1a]
xor esi, esi
dec ecx
mov word [edx], si
lea edx, [edx + 0x18]
test ecx, ecx
jg 0x18122415
mov esi, dword [esp + 0x18]
push 0x42
pop ecx
cmp word [edi + 6], cx
jle 0x18122437
jmp 0x18122433
xor ecx, ecx
mov word [edi + 6], cx
mov edx, dword [esp + 0x70]
mov ecx, eax
push 0xffffffffffffffff
call fcn.1810a6e7
pop ecx
test eax, eax
jne 0x18122451
mov dword [esp + 0x48], 1
mov ecx, esi
call fcn.180f79a6
push 0x20
mov dword [esp + 0x58], eax
lea eax, [esp + 0xec]
push 0
push eax
call fcn.181620e0
mov ecx, dword [esp + 0x28]
lea eax, [esp + 0xb8]
mov dword [esp + 0x100], eax
add esp, 0xc
mov eax, dword [ebx + 0x2c]
mov dword [esp + 0xec], ecx
inc eax
mov ecx, dword [esp + 0xc]
mov dword [esp + 0xe8], ebx
mov dword [esp + 0xbc], eax
test ecx, ecx
je 0x181224ae
mov eax, dword [ecx]
mov dword [esp + 0xb8], eax
jmp 0x181224b6
and dword [esp + 0xb8], 0
mov edx, dword [esp + 0x44]
mov dword [esp + 0xc4], ecx
lea ecx, [esp + 0xe8]
call fcn.1810abd4
mov edx, dword [esp + 0x70]
lea ecx, [esp + 0xe8]
call fcn.1810abd4
mov eax, dword [esp + 0x40]
test eax, eax
je 0x18122545
cmp dword [esp + 0xc], 0
je 0x18122537
push 0x1c
lea eax, [esp + 0x94]
push 0
push eax
call fcn.181620e0
mov edx, dword [edi + 0x28]
add esp, 0xc
mov dword [esp + 0x90], ebx
mov dword [esp + 0x94], 0x18121995
mov dword [esp + 0xa8], edi
test edx, edx
je 0x1812252c
lea ecx, [esp + 0x90]
call fcn.18104085
mov eax, dword [edi + 0x20]
mov dword [esp + 0x34], eax
mov eax, dword [esp + 0x40]
mov edx, eax
lea ecx, [esp + 0xe8]
call fcn.1810aba4
cmp dword [edi + 0x24], 0
mov eax, dword [esp + 0xcc]
mov edx, dword [esp + 0xd8]
mov dword [esp + 0xd0], eax
jne 0x18122598
cmp dword [edi + 0x28], 0
jne 0x18122598
cmp edx, 1
jne 0x18122598
mov edx, dword [esp + 0xd4]
lea eax, [esp + 0x50]
mov ecx, dword [esp + 0x20]
push eax
mov edx, dword [edx]
call fcn.181208f3
mov edx, dword [esp + 0xdc]
mov byte [esp + 0x33], al
mov eax, dword [esp + 0x54]
pop ecx
mov dword [esp + 0x6c], eax
jmp 0x1812259d
mov byte [esp + 0x2f], 0
and dword [esp + 0x14], 0
test edx, edx
jle 0x1812260e
mov ax, word [esp + 0x104]
xor edi, edi
mov esi, dword [esp + 0x14]
push 8
pop ebx
or ax, bx
lea ecx, [esp + 0xe8]
mov word [esp + 0x104], ax
mov eax, dword [esp + 0xd4]
mov edx, dword [edi + eax]
mov edx, dword [edx + 0x14]
call fcn.1810abd4
mov ax, word [esp + 0x104]
lea edi, [edi + 0x10]
mov edx, dword [esp + 0xd8]
mov ecx, 0xfff7
and ax, cx
inc esi
mov word [esp + 0x104], ax
cmp esi, edx
jl 0x181225b7
mov ebx, dword [esp + 0x58]
mov edi, dword [esp + 0x64]
mov esi, dword [esp + 0x18]
mov eax, dword [ebx + 0x2c]
mov dword [esp + 0xc0], eax
mov eax, dword [esp + 0x20]
cmp byte [eax + 0x49], 0
jne 0x18122f03
mov ecx, dword [esp + 0xc]
test ecx, ecx
je 0x18122c17
mov eax, dword [ebx + 0x28]
mov edx, ecx
push dword [esp + 0xcc]
mov dword [esp + 0xb4], eax
mov ecx, ebx
inc eax
push 0
mov dword [ebx + 0x28], eax
call fcn.1811de3c
push 0xfffffffffffffff7
push eax
push 0
push dword [esp + 0xcc]
mov ecx, esi
mov dword [esp + 0xf8], eax
push dword [esp + 0xc8]
push 0x6f
pop edx
call fcn.180f7892
mov dword [esp + 0x7c], eax
add esp, 0x1c
mov eax, dword [ebx + 0x2c]
mov ecx, esi
inc eax
mov dword [esp + 0x3c], eax
inc eax
mov dword [esp + 0x10], eax
inc eax
mov dword [ebx + 0x2c], eax
call fcn.180f79a6
inc dword [ebx + 0x2c]
mov ecx, esi
mov dword [esp + 0x50], eax
mov eax, dword [ebx + 0x2c]
mov dword [esp + 0x14], eax
call fcn.180f79a6
mov ecx, dword [ebx + 0x2c]
mov edx, dword [esp + 0xc]
mov dword [esp + 0x30], eax
push 0
push dword [esp + 0x14]
lea eax, [ecx + 1]
add ecx, dword [edx]
mov dword [esp + 0x70], eax
mov dword [ebx + 0x2c], ecx
push 0
lea eax, [ecx + 1]
mov dword [esp + 0x64], eax
mov eax, dword [edx]
add eax, ecx
mov ecx, esi
push 0x43
pop edx
mov dword [ebx + 0x2c], eax
call fcn.180f7767
add esp, 0xc
mov ecx, esi
push 0
push dword [esp + 0x40]
push 0
push 0x43
pop edx
call fcn.180f7767
mov ecx, dword [esp + 0x18]
add esp, 0xc
mov eax, dword [ecx]
mov ecx, dword [esp + 0x68]
dec eax
add eax, ecx
push eax
push ecx
push 0
push 0x46
pop edx
mov ecx, esi
call fcn.180f7767
add esp, 0xc
push 0
push dword [esp + 0x34]
push dword [esp + 0x1c]
push 0xe
pop edx
mov ecx, esi
call fcn.180f7767
mov eax, dword [esp + 0x54]
add esp, 0xc
mov edx, dword [esp + 0x1c]
neg eax
mov ecx, ebx
sbb eax, eax
push 0
and eax, 0x200
add eax, 0x40
push eax
push 0
push dword [esp + 0x18]
push dword [esp + 0x44]
call fcn.1812ef3e
mov edx, eax
add esp, 0x14
mov dword [esp + 0x5c], edx
test edx, edx
je 0x18121d98
mov ecx, dword [esp + 0xc]
movsx eax, byte [edx + 0x2f]
cmp eax, dword [ecx]
jne 0x1812277e
xor edi, edi
mov dword [esp + 0x4c], edi
jmp 0x1812291e
cmp byte [esp + 0x108], 0
je 0x18122793
test byte [edi + 8], 1
mov edx, str.DISTINCT
je 0x18122798
mov edx, str.GROUP_BY
mov ecx, ebx
call fcn.1811def2
mov esi, dword [esp + 0xc]
mov eax, dword [esp + 0xcc]
mov dword [esp + 0x4c], 1
mov dword [esp + 0x38], eax
mov edi, dword [esi]
mov ecx, edi
mov dword [esp + 0x34], edi
mov edx, edi
test eax, eax
jle 0x181227e2
mov eax, dword [esp + 0xc8]
add eax, 0xc
cmp dword [eax], edx
jl 0x181227d4
inc ecx
inc edx
add eax, 0x18
sub dword [esp + 0x38], 1
jne 0x181227ce
mov dword [esp + 0x34], ecx
mov edx, ecx
mov ecx, ebx
call fcn.1810ac6a
mov ecx, ebx
mov dword [esp + 0x1c], eax
call fcn.18108b45
push 0
push 0
push dword [esp + 0x24]
mov edx, esi
mov ecx, ebx
call fcn.18109ba6
mov ecx, dword [esp + 0xd8]
xor eax, eax
add esp, 0xc
mov dword [esp + 0x38], eax
test ecx, ecx
jle 0x1812285e
xor esi, esi
mov edx, dword [esp + 0xc8]
cmp dword [edx + esi + 0xc], edi
jl 0x18122852
mov eax, dword [esp + 0x1c]
mov ecx, ebx
add eax, edi
push eax
push dword [edx + esi + 4]
push dword [edx + esi + 8]
mov edx, dword [edx + esi]
call fcn.18108b10
mov ecx, dword [esp + 0xd8]
add esp, 0xc
mov eax, dword [esp + 0x38]
inc edi
inc eax
add esi, 0x18
mov dword [esp + 0x38], eax
cmp eax, ecx
jl 0x1812281d
mov ecx, ebx
call fcn.1810ac08
mov ecx, dword [esp + 0x18]
mov esi, eax
push esi
push dword [esp + 0x38]
push dword [esp + 0x24]
push 0x65
pop edx
call fcn.180f7767
mov ecx, dword [esp + 0x24]
add esp, 0xc
mov edx, 0x80
push 0
push esi
push dword [esp + 0xb8]
call fcn.180f7767
add esp, 0xc
mov edx, esi
mov ecx, ebx
call fcn.1810ac27
mov esi, dword [esp + 0x34]
mov edx, dword [esp + 0x1c]
push esi
call fcn.1810aca0
pop ecx
mov ecx, dword [esp + 0x5c]
call fcn.1812f8ec
mov edx, dword [ebx + 0x28]
mov ecx, ebx
mov dword [esp + 0x38], edx
mov dword [esp + 0xb4], edx
lea eax, [edx + 1]
mov dword [ebx + 0x28], eax
call fcn.1810ac08
push esi
mov esi, dword [esp + 0x1c]
mov ecx, esi
push eax
push edx
push 0x71
pop edx
mov dword [esp + 0x30], eax
call fcn.180f7767
add esp, 0xc
mov ecx, esi
push 0
push dword [esp + 0x58]
push dword [esp + 0xb8]
push 0x23
pop edx
call fcn.180f7767
add esp, 0xc
mov byte [esp + 0xad], 1
mov ecx, ebx
call fcn.18108b45
mov edx, dword [esp + 0x5c]
xor edi, edi
inc edi
cmp dword [esp + 0x48], 0
je 0x1812294c
mov eax, dword [esp + 0x20]
test byte [eax + 0x44], 4
jne 0x1812294c
test edi, edi
jne 0x18122939
cmp byte [edx + 0x30], 0
je 0x1812294c
mov edx, dword [esp + 0x84]
mov ecx, esi
and dword [esp + 0x70], 0
call fcn.180f7d39
mov eax, dword [esi + 0x88]
mov ecx, ebx
mov dword [esp + 0x34], eax
call fcn.18108b45
test edi, edi
je 0x1812297d
push dword [esp + 0x38]
mov ecx, esi
push dword [esp + 0x28]
push dword [esp + 0xb8]
push 0x7b
pop edx
call fcn.180f7767
add esp, 0xc
mov edi, dword [esp + 0xc]
xor eax, eax
mov dword [esp + 0x24], eax
mov ecx, dword [edi]
test ecx, ecx
jle 0x181229e2
lea edx, [edi + 4]
mov dword [esp + 0x48], edx
mov ecx, dword [esp + 0x58]
add ecx, eax
cmp dword [esp + 0x4c], 0
push ecx
je 0x181229b6
push eax
push dword [esp + 0x40]
mov ecx, esi
push 0x63
pop edx
call fcn.180f7767
add esp, 0xc
jmp 0x181229c8
mov byte [esp + 0xb0], 1
mov ecx, ebx
mov edx, dword [edx]
call fcn.18109acc
pop ecx
mov eax, dword [esp + 0x24]
mov edx, dword [esp + 0x48]
inc eax
mov ecx, dword [edi]
add edx, 0x18
mov dword [esp + 0x24], eax
mov dword [esp + 0x48], edx
cmp eax, ecx
jl 0x18122994
mov eax, dword [esp + 0xe0]
test eax, eax
je 0x181229f1
inc dword [eax]
mov ecx, dword [edi]
push 0xfffffffffffffff7
push eax
push ecx
push dword [esp + 0x64]
mov ecx, esi
push dword [esp + 0x78]
push 0x5e
pop edx
call fcn.180f7892
mov esi, dword [esi + 0x88]
add esp, 0x14
mov edi, dword [esp + 0x18]
mov ecx, edi
lea eax, [esi + 1]
push eax
push 0
push eax
push 0x12
pop edx
call fcn.180f7767
mov eax, dword [esp + 0x18]
add esp, 0xc
mov edx, dword [esp + 0x58]
mov ecx, ebx
push dword [eax]
push dword [esp + 0x6c]
call fcn.18108b86
mov eax, dword [esp + 0x18]
mov ecx, edi
push 0
push dword [esp + 0x5c]
inc eax
push eax
push 0xe
pop edx
call fcn.180f7767
add esp, 0x14
mov ecx, edi
push 0
push dword [esp + 0x58]
push dword [esp + 0x18]
push 0x30
pop edx
call fcn.180f7767
add esp, 0xc
mov ecx, edi
push 0
push dword [esp + 0x34]
push dword [esp + 0x1c]
push 0xe
pop edx
call fcn.180f7767
mov edx, esi
add esp, 0xc
mov esi, edi
mov ecx, esi
call fcn.180f7ea8
mov ecx, dword [esi + 0x88]
lea edx, [esp + 0xac]
mov dword [eax + 8], ecx
mov ecx, ebx
call fcn.18121703
push 0
push dword [esp + 0x40]
mov ecx, esi
push 1
push 0x43
pop edx
call fcn.180f7767
add esp, 0xc
cmp dword [esp + 0x4c], 0
je 0x18122ade
push 0
push dword [esp + 0x38]
mov ecx, esi
push dword [esp + 0xb8]
push 3
pop edx
call fcn.180f7767
add esp, 0xc
jmp 0x18122af2
mov ecx, dword [esp + 0x5c]
call fcn.1812f8ec
mov edx, dword [esp + 0x60]
mov ecx, esi
call fcn.180f7d39
mov eax, dword [esp + 0x10]
mov ecx, esi
push 0
push dword [esp + 0x54]
inc eax
push eax
push 0xe
pop edx
call fcn.180f7767
mov edx, dword [esp + 0x60]
add esp, 0xc
mov ecx, esi
call fcn.180f77c9
mov edi, dword [esi + 0x88]
mov ecx, esi
push 0
push dword [esp + 0x14]
push 1
push 0x43
pop edx
call fcn.180f7767
mov eax, dword [esp + 0x1c]
add esp, 0xc
inc eax
mov ecx, esi
push 0
push 0
push eax
push 0x3f
pop edx
call fcn.180f7767
mov edx, dword [esp + 0x5c]
add esp, 0xc
mov ecx, esi
call fcn.180f79e8
mov esi, dword [esi + 0x88]
push 0
lea eax, [esi + 2]
push eax
push dword [esp + 0x44]
push 0x30
pop edx
call fcn.180f7767
mov eax, dword [esp + 0x1c]
add esp, 0xc
mov ecx, dword [esp + 0x18]
inc eax
push 0
push 0
push eax
push 0x3f
pop edx
call fcn.180f7767
add esp, 0xc
lea edx, [esp + 0xac]
mov ecx, ebx
call fcn.181216a9
push 0x10
inc esi
push esi
push dword [esp + 0x48]
push ebx
call fcn.1810a110
mov eax, dword [esp + 0x38]
mov ecx, ebx
push edi
mov edi, dword [esp + 0x78]
mov edx, edi
push esi
push eax
lea eax, [esp + 0x124]
push eax
lea eax, [esp + 0x90]
push eax
push 0xffffffffffffffff
call fcn.1811d703
mov eax, dword [esp + 0x38]
push 0
push 0
inc eax
push eax
mov esi, dword [esp + 0x4c]
mov ecx, esi
push 0x3f
pop edx
call fcn.180f7767
mov edx, dword [esp + 0x64]
add esp, 0x34
mov ecx, esi
call fcn.180f79e8
lea edx, [esp + 0xac]
mov ecx, ebx
call fcn.181215fa
push 0
push 0
push dword [esp + 0x1c]
mov ecx, esi
push 0x3f
pop edx
call fcn.180f7767
add esp, 0xc
jmp 0x18122e89
cmp dword [edi + 0x20], 0
jne 0x18122de2
mov ecx, dword [edi]
xor eax, eax
inc eax
cmp dword [ecx], eax
jne 0x18122de2
mov ecx, dword [edi + 0x1c]
cmp dword [ecx], eax
jne 0x18122de2
cmp dword [ecx + 0x1c], 0
jne 0x18122de2
mov ecx, dword [ecx + 0x18]
mov dword [esp + 0x10], ecx
cmp dword [ecx + 0x38], 0
jne 0x18122de2
mov eax, dword [edi]
mov eax, dword [eax + 4]
cmp byte [eax], 0x93
jne 0x18122de2
test edx, edx
je 0x18122de2
mov eax, dword [esp + 0xd4]
mov edx, 0x100
mov eax, dword [eax + 4]
test word [eax + 2], dx
je 0x18122de2
mov edx, dword [edi]
mov eax, dword [edx + 4]
test byte [eax + 4], 0x10
jne 0x18122de2
test ecx, ecx
je 0x18122de2
mov edx, dword [ecx + 0x48]
mov ecx, dword [ebx]
call fcn.1811c668
mov edx, dword [esp + 0x10]
mov ecx, eax
mov eax, dword [ebx + 0x28]
mov dword [esp + 0x14], eax
inc eax
mov dword [ebx + 0x28], eax
xor eax, eax
mov dword [esp + 0x3c], eax
mov dword [esp + 0xc], eax
mov eax, dword [edx + 0x1c]
mov edx, ecx
mov dword [esp + 0x24], ecx
mov ecx, ebx
mov dword [esp + 0x30], eax
call fcn.18111571
mov eax, dword [esp + 0x10]
mov ecx, ebx
mov edx, dword [esp + 0x24]
push dword [eax]
push 0
push dword [eax + 0x1c]
call fcn.1810d20c
mov edx, dword [esp + 0x1c]
add esp, 0xc
test byte [edx + 0x24], 0x20
je 0x18122d05
mov ecx, edx
call fcn.1810dd7a
mov ecx, eax
mov dword [esp + 0xc], ecx
jmp 0x18122d09
mov ecx, dword [esp + 0xc]
mov eax, dword [edx + 8]
test eax, eax
je 0x18122d53
lea edi, [edx + 0x2e]
mov dword [esp + 0x10], edx
mov dword [esp + 0x60], edi
mov edi, dword [esp + 0x64]
mov esi, dword [esp + 0x60]
test byte [eax + 0x38], 4
jne 0x18122d44
movzx edx, word [eax + 0x30]
cmp dx, word [esi]
jge 0x18122d44
cmp dword [eax + 0x24], 0
jne 0x18122d44
test ecx, ecx
je 0x18122d42
cmp dx, word [ecx + 0x30]
jge 0x18122d44
mov ecx, eax
mov eax, dword [eax + 0x14]
test eax, eax
jne 0x18122d23
mov esi, dword [esp + 0x18]
mov dword [esp + 0xc], ecx
test ecx, ecx
je 0x18122d6b
mov eax, dword [ecx + 0x2c]
mov edx, ecx
mov ecx, ebx
mov dword [esp + 0x30], eax
call fcn.18111a13
mov dword [esp + 0x3c], eax
push 1
push dword [esp + 0x28]
mov ecx, esi
push dword [esp + 0x38]
push dword [esp + 0x20]
push 0x6a
pop edx
call fcn.180f794f
mov eax, dword [esp + 0x4c]
add esp, 0x10
test eax, eax
je 0x18122d9d
push 0xfffffffffffffff7
push eax
or edx, 0xffffffff
mov ecx, esi
call fcn.180f7de4
pop ecx
pop ecx
mov eax, dword [esp + 0xd4]
mov ecx, esi
push 0
push dword [eax + 8]
push dword [esp + 0x1c]
push 0x66
pop edx
call fcn.180f7767
add esp, 0xc
mov ecx, esi
push 0
push 0
push dword [esp + 0x1c]
push 0x72
pop edx
call fcn.180f7767
mov eax, dword [esp + 0x18]
add esp, 0xc
mov edx, dword [esp + 0x10]
mov ecx, ebx
push eax
call fcn.1812191a
pop ecx
jmp 0x18122e57
lea edx, [esp + 0xac]
mov ecx, ebx
call fcn.181215fa
movzx eax, byte [esp + 0x2f]
mov ecx, ebx
mov edx, dword [esp + 0x1c]
push 0
push eax
push 0
push dword [esp + 0x78]
push dword [esp + 0x44]
call fcn.1812ef3e
add esp, 0x14
mov dword [esp + 0x24], eax
test eax, eax
je 0x18121d98
lea edx, [esp + 0xac]
mov ecx, ebx
call fcn.18121703
mov eax, dword [esp + 0x24]
cmp byte [eax + 0x2f], 0
jle 0x18122e42
mov edx, dword [eax + 0x24]
mov ecx, esi
call fcn.180f77c9
mov eax, dword [esp + 0x24]
mov ecx, eax
call fcn.1812f8ec
lea edx, [esp + 0xac]
mov ecx, ebx
call fcn.181216a9
and dword [esp + 0x70], 0
push 0x10
push dword [esp + 0x58]
push dword [esp + 0x48]
push ebx
call fcn.1810a110
mov eax, dword [esp + 0x64]
mov edx, edi
push eax
push eax
mov eax, dword [esp + 0x40]
mov ecx, ebx
push eax
push 0
push 0
push 0xffffffffffffffff
call fcn.1811d703
add esp, 0x28
mov edx, dword [esp + 0x54]
mov ecx, esi
call fcn.180f79e8
cmp byte [esp + 0x109], 3
jne 0x18122eaa
mov edx, str.DISTINCT
mov ecx, ebx
call fcn.1811def2
cmp dword [esp + 0x70], 0
je 0x18122ee4
cmp dword [esp + 0x74], 0
mov edx, str.RIGHT_PART_OF_ORDER_BY
jg 0x18122ec2
mov edx, str.ORDER_BY
mov ecx, ebx
call fcn.1811def2
mov eax, dword [esp + 0x44]
mov edx, edi
push dword [esp + 0x28]
mov ecx, ebx
push dword [eax]
lea eax, [esp + 0x78]
push eax
call fcn.1811dfaf
add esp, 0xc
mov edx, dword [esp + 0xe4]
mov ecx, esi
call fcn.180f79e8
xor eax, eax
cmp dword [ebx + 0x24], eax
setg al
mov dword [esp + 0x4c], eax
jmp 0x18121d98
mov esi, eax
jmp 0x18121d9c
xor eax, eax
inc eax
mov ecx, dword [esp + 0x114]
pop edi
pop esi
pop ebx
xor ecx, esp
call fcn.1814cf3d
mov esp, ebp
pop ebp
ret