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

Disassembly:
sub esp, 0xe0
or dword [esp + 0x60], 0xffffffff
xor ecx, ecx
push ebx
push ebp
push esi
xor eax, eax
mov dword [esp + 0xac], ecx
push edi
inc eax
mov dword [esp + 0x94], ecx
push 8
mov dword [esp + 0xa4], eax
mov ebx, ecx
push ecx
lea eax, [esp + 0xd0]
mov dword [esp + 0x68], ecx
push eax
mov dword [esp + 0x9c], ecx
mov dword [esp + 0x68], ecx
mov dword [esp + 0x98], ecx
mov dword [esp + 0x74], ecx
mov dword [esp + 0xc0], ecx
mov dword [esp + 0x44], ecx
mov dword [esp + 0x70], ecx
mov dword [esp + 0x80], ecx
mov dword [esp + 0xb0], ecx
mov dword [esp + 0xb8], ecx
mov dword [esp + 0x60], ecx
call sub.VCRUNTIME140.dll_memset
mov esi, dword [esp + 0x100]
add esp, 0xc
mov edi, dword [esp + 0xfc]
mov eax, dword [esp + 0xf8]
mov ebp, dword [esi]
mov dword [esp + 0x28], ebp
cmp dword [esi + 0x24], ebx
jne 0x10157bd0
cmp byte [ebp + 0x51], bl
jne 0x10157bd0
push eax
push esi
call fcn.10155f15
mov ebp, eax
mov dword [esp + 0x44], ebp
pop ecx
pop ecx
test ebp, ebp
je 0x10157bcc
push dword [ebp + 0x48]
push dword [esi]
call fcn.10153cd9
mov dword [esp + 0x8c], eax
lea eax, [esp + 0xb0]
push eax
push edi
push 0x7f
push ebp
push esi
call fcn.1021b520
mov ecx, dword [esp + 0x114]
add esp, 0x1c
mov dword [esp + 0x48], eax
mov eax, dword [ebp + 0xc]
mov dword [esp + 0x50], eax
xor eax, eax
inc eax
cmp dword [ecx], eax
jle 0x101577b4
mov eax, dword [edi]
mov dword [esp + 0x30], eax
jmp 0x101577b8
and dword [esp + 0x30], ebx
push ebp
push esi
call fcn.10162906
pop ecx
pop ecx
test eax, eax
jne 0x10157bcc
mov eax, dword [esp + 0xa8]
push eax
push ebp
push esi
mov dword [esp + 0xb4], eax
call fcn.1014c0bc
add esp, 0xc
test eax, eax
jne 0x10157bcc
mov ebx, dword [esi + 0x28]
mov edx, ebx
mov dword [esp + 0x1c], ebx
mov dword [esp + 0x88], edx
lea eax, [ebx + 1]
mov dword [esi + 0x28], eax
test byte [ebp + 0x24], 0x80
mov dword [esp + 0x78], eax
jne 0x10157811
and dword [esp + 0x34], 0
jmp 0x10157820
push ebp
call fcn.10152228
mov dword [esp + 0x38], eax
mov eax, dword [esp + 0x7c]
pop ecx
mov ecx, dword [ebp + 8]
xor edi, edi
mov dword [esp + 0x98], edi
test ecx, ecx
je 0x1015785b
mov edx, eax
cmp dword [esp + 0x34], ecx
mov eax, edx
cmovne eax, ebx
inc edx
mov dword [esi + 0x28], edx
inc edi
mov ecx, dword [ecx + 0x14]
mov ebx, eax
test ecx, ecx
jne 0x10157832
mov edx, dword [esp + 0x88]
mov dword [esp + 0x98], edi
mov dword [esp + 0x1c], eax
mov eax, dword [esp + 0x110]
test eax, eax
je 0x10157877
mov ebx, dword [eax + 0x1c]
mov eax, dword [eax + 0x20]
mov dword [esp + 0x1c], ebx
mov dword [esp + 0x78], eax
mov dword [esi + 0x28], edx
mov eax, dword [esp + 0xf8]
push 0
mov dword [eax + 0x34], ebx
movsx eax, word [ebp + 0x2a]
add eax, edi
lea eax, [eax*4 + 6]
add eax, edi
push eax
push dword [esp + 0x30]
call fcn.10141b1e
mov ebx, eax
add esp, 0xc
mov dword [esp + 0x18], ebx
test ebx, ebx
je 0x10157bc5
movsx eax, word [ebp + 0x2a]
lea eax, [ebx + eax*4]
lea ebx, [eax + 4]
mov dword [esp + 0x6c], eax
lea eax, [edi + 1]
push eax
xor eax, eax
lea ebx, [ebx + edi*4]
inc eax
mov dword [esp + 0x80], ebx
push eax
push ebx
call sub.VCRUNTIME140.dll_memset
mov byte [ebx + edi + 1], 0
xor eax, eax
mov ebx, dword [esp + 0x24]
add esp, 0xc
xor ecx, ecx
cmp ax, word [ebp + 0x2a]
jge 0x101578f6
or dword [ebx + ecx*4], 0xffffffff
inc ecx
movsx eax, word [ebp + 0x2a]
cmp ecx, eax
jl 0x101578e9
push 0x20
lea eax, [esp + 0xd4]
push 0
push eax
call sub.VCRUNTIME140.dll_memset
mov eax, dword [esp + 0x104]
mov ecx, dword [esp + 0x11c]
push esi
mov dword [esp + 0xe0], esi
mov dword [esp + 0xe4], eax
mov dword [esp + 0xe8], ecx
mov dword [esp + 0xf8], 0x200
call fcn.1014a41d
mov edi, dword [esp + 0x10c]
add esp, 0x10
mov dword [esp + 0x14], eax
test eax, eax
je 0x10157bcc
xor ebx, ebx
mov byte [esp + 0x23], 0
xor al, al
mov dword [esp + 0x4c], ebx
mov byte [esp + 0x13], al
cmp dword [edi], ebx
jle 0x10157b14
lea ebp, [edi + 4]
mov dword [esp + 0x44], ebp
cmp dword [esp + 0x30], 0
jne 0x10157992
push dword [ebp]
lea eax, [esp + 0xd4]
push eax
call fcn.10152cc9
pop ecx
pop ecx
test eax, eax
jne 0x10157c5a
mov edx, dword [esp + 0x3c]
xor edi, edi
movsx eax, word [edx + 0x2a]
test eax, eax
jle 0x10157a32
mov ebx, dword [edx + 4]
mov ebp, ebx
mov eax, dword [esp + 0x44]
push dword [eax + 4]
push dword [ebp]
call fcn.101565fc
mov edx, dword [esp + 0x44]
pop ecx
pop ecx
test eax, eax
je 0x101579d8
movsx eax, word [edx + 0x2a]
inc edi
add ebp, 0x14
cmp edi, eax
jl 0x101579a9
mov ebx, dword [esp + 0x4c]
mov ebp, dword [esp + 0x44]
jmp 0x10157a32
movsx eax, word [edx + 0x28]
cmp edi, eax
jne 0x101579fc
mov ebp, dword [esp + 0x44]
xor ecx, ecx
mov ebx, dword [esp + 0x4c]
inc ecx
mov byte [esp + 0x13], cl
mov dword [esp + 0x70], ebx
mov eax, dword [ebp]
mov dword [esp + 0x60], eax
jmp 0x10157a2b
cmp dword [esp + 0x34], 0
je 0x10157a15
imul eax, edi, 0x14
xor ecx, ecx
inc ecx
test byte [eax + ebx + 0x10], cl
je 0x10157a15
mov byte [esp + 0x23], cl
jmp 0x10157a23
imul eax, edi, 0x14
test byte [eax + ebx + 0x10], 0x60
jne 0x10157bad
mov ebp, dword [esp + 0x44]
mov ebx, dword [esp + 0x4c]
mov eax, dword [esp + 0x18]
mov dword [eax + edi*4], ebx
mov al, byte [esp + 0x13]
mov ecx, dword [esp + 0x60]
mov byte [esp + 0x13], al
mov eax, dword [esp + 0x70]
mov dword [esp + 0x70], eax
movsx eax, word [edx + 0x2a]
mov dword [esp + 0x60], ecx
cmp edi, eax
jl 0x10157a85
cmp dword [esp + 0x34], 0
jne 0x10157c38
push dword [ebp + 4]
call fcn.1014c141
pop ecx
test eax, eax
je 0x10157c38
xor eax, eax
mov dword [esp + 0x70], ebx
or edi, 0xffffffff
inc eax
mov byte [esp + 0x13], al
mov eax, dword [ebp]
mov dword [esp + 0x60], eax
jmp 0x10157a89
test edi, edi
jns 0x10157a90
mov edx, str.ROWID
jmp 0x10157ab4
imul ecx, edi, 0x14
lfence
mov eax, dword [edx + 4]
mov edx, dword [ecx + eax]
mov eax, dword [esp + 0x60]
mov dword [esp + 0x60], eax
mov eax, dword [esp + 0x70]
mov dword [esp + 0x70], eax
mov al, byte [esp + 0x13]
mov byte [esp + 0x13], al
mov eax, dword [esp + 0x28]
mov ecx, dword [esp + 0x84]
add ecx, ecx
mov eax, dword [eax + 0x10]
push dword [eax + ecx*8]
mov eax, dword [esp + 0x40]
push edx
push dword [eax]
push 0x17
push esi
call fcn.1021b520
xor ecx, ecx
add esp, 0x14
inc ecx
cmp eax, ecx
je 0x10157bc1
cmp eax, 2
jne 0x10157af1
mov eax, dword [esp + 0x18]
or dword [eax + edi*4], 0xffffffff
mov edi, dword [esp + 0xfc]
inc ebx
add ebp, 0x14
mov dword [esp + 0x4c], ebx
mov dword [esp + 0x44], ebp
cmp ebx, dword [edi]
jl 0x10157971
mov ebp, dword [esp + 0x3c]
mov al, byte [esp + 0x13]
mov dl, byte [esp + 0x23]
add dl, al
test byte [ebp + 0x24], 0x60
mov byte [esp + 0x44], dl
je 0x10157b98
movzx eax, word [ebp + 0x2a]
mov esi, dword [esp + 0x3c]
xor ecx, ecx
xor ebp, ebp
xor edi, edi
cmp cx, ax
jge 0x10157b89
mov edx, dword [esp + 0x18]
xor ebx, ebx
cmp dword [edx + edi*4], 0
jge 0x10157b74
mov ecx, dword [esi + 4]
test byte [ecx + ebx + 0x10], 0x60
je 0x10157b74
movzx eax, byte [esp + 0x13]
push eax
push edx
push dword [ecx + ebx + 4]
call fcn.1021b520
mov edx, dword [esp + 0x24]
add esp, 0xc
test eax, eax
je 0x10157b74
xor eax, eax
mov dword [edx + edi*4], 0x1869f
lea ebp, [eax + 1]
movzx eax, word [esi + 0x2a]
inc edi
mov ecx, eax
add ebx, 0x14
cwde
cmp edi, eax
jl 0x10157b3d
mov eax, ecx
test ebp, ebp
jne 0x10157b2c
mov esi, dword [esp + 0xf4]
mov ebp, dword [esp + 0x3c]
mov dl, byte [esp + 0x44]
cmp dword [ebp + 0x38], 0
je 0x10157c63
or eax, 0xffffffff
or ecx, 0xffffffff
jmp 0x10157c7d
imul eax, edi, 0x14
push dword [eax + ebx]
push str.cannot_UPDATE_generated_column___s_
push esi
call fcn.10143429
add esp, 0xc
mov ebx, dword [esp + 0x18]
mov edi, dword [esp + 0xfc]
mov ebp, dword [esp + 0x28]
mov ecx, dword [esp + 0xcc]
test ecx, ecx
je 0x10157bf0
mov eax, dword [esp + 0xc8]
mov dword [ecx + 0xf4], eax
and dword [esp + 0xcc], 0
test ebx, ebx
je 0x10157bfd
push ebx
push ebp
call fcn.10141a5b
pop ecx
pop ecx
push dword [esp + 0xf8]
push ebp
call fcn.10155b54
pop ecx
pop ecx
test edi, edi
je 0x10157c19
push edi
push ebp
call fcn.1012a078
pop ecx
pop ecx
mov eax, dword [esp + 0x100]
test eax, eax
je 0x10157c2d
push eax
push ebp
call fcn.10145850
pop ecx
pop ecx
pop edi
pop esi
pop ebp
pop ebx
add esp, 0xe0
ret
mov edi, dword [esp + 0xfc]
imul eax, ebx, 0x14
push dword [eax + edi + 8]
push str.no_such_column:__s
push esi
call fcn.10143429
xor eax, eax
add esp, 0xc
inc eax
mov byte [esi + 0x11], al
mov ebx, dword [esp + 0x18]
jmp 0x10157bcc
xorps xmm0, xmm0
movlpd qword [esp + 0xb8], xmm0
mov ecx, dword [esp + 0xbc]
mov eax, dword [esp + 0xb8]
mov ebx, dword [esp + 0xf8]
mov dword [ebx + 0x40], eax
movzx eax, dl
push eax
push dword [esp + 0x1c]
mov dword [ebx + 0x44], ecx
push ebp
push esi
mov dword [esp + 0xc8], eax
call fcn.1021b520
add esp, 0x10
mov ecx, eax
cmp dword [esp + 0x104], 5
mov eax, dword [esp + 0x68]
mov dword [esp + 0x58], ecx
push 1
pop edx
cmove eax, edx
xor ebx, ebx
mov dword [esp + 0x68], eax
mov edi, dword [ebp + 8]
mov dword [esp + 0x9c], ebx
test edi, edi
je 0x10157dc9
mov ebx, dword [esp + 0x7c]
mov edx, dword [esp + 0x18]
inc ebx
mov dword [esp + 0x2c], ebx
cmp byte [esp + 0x44], 0
jne 0x10157e46
xor eax, eax
inc eax
cmp ecx, eax
jg 0x10157e46
lfence
cmp edi, dword [esp + 0x34]
je 0x10157e46
cmp dword [edi + 0x24], 0
je 0x10157d2a
movzx eax, byte [esp + 0x13]
push eax
push dword [esp + 0x1c]
push dword [edi + 0x24]
call fcn.1021b520
mov edx, dword [esp + 0x24]
add esp, 0xc
test eax, eax
jne 0x10157e46
xor ecx, ecx
xor eax, eax
xor ebx, ebx
mov dword [esp + 0x80], ecx
cmp ax, word [edi + 0x32]
jae 0x10157d8e
xor ebp, ebp
mov eax, dword [edi + 4]
movzx eax, word [eax + ebx*2]
test ax, ax
js 0x10157d56
cwde
mov eax, dword [edx + eax*4]
not eax
shr eax, 0x1f
jmp 0x10157d73
movzx eax, byte [esp + 0x13]
push eax
mov eax, dword [edi + 0x28]
push dword [esp + 0x1c]
push dword [eax + ebp + 4]
call fcn.1021b520
mov edx, dword [esp + 0x24]
add esp, 0xc
test eax, eax
jne 0x10157e1a
movzx eax, word [edi + 0x32]
inc ebx
add ebp, 0x14
cmp ebx, eax
jl 0x10157d3f
mov ecx, dword [esp + 0x80]
mov ebx, dword [esp + 0x2c]
mov byte [ebx], 0
mov eax, dword [esp + 0x9c]
mov ebp, dword [esp + 0x6c]
mov dword [ebp + eax*4], ecx
inc eax
mov edi, dword [edi + 0x14]
inc ebx
mov ecx, dword [esp + 0x58]
mov dword [esp + 0x9c], eax
mov dword [esp + 0x2c], ebx
test edi, edi
jne 0x10157ce0
mov ebp, dword [esp + 0x3c]
xor edx, edx
mov ebx, eax
inc edx
mov ecx, dword [esp + 0x6c]
inc dword [esi + 0x2c]
mov eax, dword [esi + 0x2c]
mov dword [ecx + ebx*4], eax
cmp dword [esp + 0x68], 0
je 0x10157df6
mov eax, dword [esp + 0x98]
inc eax
push eax
push edx
push dword [esp + 0x84]
call sub.VCRUNTIME140.dll_memset
add esp, 0xc
cmp byte [esi + 0x12], 0
jne 0x10157e07
mov eax, dword [esp + 0x14]
or dword [eax + 0x98], 0x10
cmp dword [esp + 0x48], 0
mov edi, dword [esp + 0x58]
jne 0x10157e62
test edi, edi
jne 0x10157e62
xor eax, eax
jmp 0x10157e65
inc dword [esi + 0x2c]
movzx eax, word [edi + 0x34]
mov ecx, dword [esi + 0x2c]
add eax, ecx
cmp dword [esp + 0x104], 0xb
mov ebx, dword [esp + 0x2c]
mov dword [esi + 0x2c], eax
jne 0x10157e55
cmp byte [edi + 0x36], 5
jne 0x10157e55
xor eax, eax
inc eax
mov dword [esp + 0x68], eax
jmp 0x10157e55
inc dword [esi + 0x2c]
movzx eax, word [edi + 0x34]
mov ecx, dword [esi + 0x2c]
add eax, ecx
mov dword [esi + 0x2c], eax
test ecx, ecx
jne 0x10157d95
jmp 0x10157d92
xor eax, eax
inc eax
push dword [esp + 0x84]
push eax
push esi
call fcn.1013c9c8
add esp, 0xc
cmp dword [ebp + 0x38], 0
jne 0x10157ef0
mov eax, dword [esp + 0x6c]
mov edx, dword [esi + 0x2c]
inc edx
cmp byte [esp + 0x23], 0
mov dword [esp + 0x64], edx
mov eax, dword [eax + ebx*4]
mov dword [esp + 0xac], eax
mov dword [esi + 0x2c], edx
mov dword [esp + 0x38], edx
jne 0x10157eae
mov eax, dword [esp + 0x48]
test eax, eax
jne 0x10157eae
mov ecx, edx
test edi, edi
je 0x10157ec5
movsx ecx, word [ebp + 0x2a]
lea eax, [edx + 1]
add ecx, edx
mov dword [esp + 0xa4], eax
mov eax, dword [esp + 0x48]
mov dword [esi + 0x2c], ecx
cmp byte [esp + 0x44], 0
jne 0x10157ed4
test eax, eax
jne 0x10157ed4
test edi, edi
je 0x10157ee0
lea eax, [ecx + 1]
mov dword [esp + 0x64], eax
mov ecx, eax
mov dword [esi + 0x2c], eax
lea eax, [ecx + 1]
mov dword [esp + 0x74], eax
movsx eax, word [ebp + 0x2a]
add eax, ecx
mov dword [esi + 0x2c], eax
mov eax, dword [esp + 0x50]
test eax, eax
je 0x10157f19
mov ecx, dword [ebp]
mov eax, dword [esi + 0xf4]
mov dword [esp + 0xc8], eax
mov eax, dword [esp + 0x50]
mov dword [esp + 0xcc], esi
mov dword [esi + 0xf4], ecx
mov edi, dword [esp + 0x30]
test edi, edi
jne 0x10157f94
test eax, eax
je 0x10157f56
push dword [esp + 0x1c]
mov ebx, dword [esp + 0x104]
push dword [esp + 0x110]
push dword [esp + 0x110]
push ebx
push ebp
push esi
call fcn.1014d0ef
and dword [esp + 0x9c], edi
add esp, 0x18
and dword [esp + 0x24], edi
jmp 0x10157f7a
mov edi, dword [esp + 0x10c]
mov ebx, dword [esp + 0x108]
mov dword [esp + 0x24], edi
mov edi, dword [esp + 0x30]
mov dword [esp + 0x84], ebx
mov ebx, dword [esp + 0x100]
lea eax, [esp + 0xd0]
push ebx
push eax
call fcn.10152cc9
pop ecx
pop ecx
test eax, eax
jne 0x10157bc1
jmp 0x10157fb4
mov eax, dword [esp + 0x10c]
mov ebx, dword [esp + 0x100]
mov dword [esp + 0x24], eax
mov eax, dword [esp + 0x108]
mov dword [esp + 0x84], eax
cmp dword [ebp + 0x38], 0
je 0x10157fe9
push dword [esp + 0x104]
mov edi, dword [esp + 0x100]
push ebx
mov ebx, dword [esp + 0x20]
push ebx
push dword [esp + 0x6c]
push edi
push ebp
push dword [esp + 0x110]
push esi
call fcn.10169f85
add esp, 0x20
jmp 0x10157bcc
dec dword [esi + 0x38]
mov eax, dword [esi + 0x38]
mov dword [esp + 0x4c], eax
mov dword [esp + 0x2c], eax
mov eax, dword [esp + 0x28]
mov ecx, dword [eax + 0x24]
xor eax, eax
inc eax
and ecx, eax
xor eax, eax
or eax, ecx
je 0x10158040
cmp dword [esi + 0x78], 0
jne 0x10158040
cmp byte [esi + 0x12], 0
jne 0x10158040
cmp dword [esp + 0x110], 0
mov ebx, dword [esp + 0x14]
jne 0x10158044
inc dword [esi + 0x2c]
mov eax, dword [esi + 0x2c]
push eax
push 0
push 0x45
push ebx
mov dword [esp + 0xc4], eax
call fcn.101596d3
add esp, 0x10
jmp 0x10158044
mov ebx, dword [esp + 0x14]
test edi, edi
jne 0x1015809c
test byte [ebp + 0x24], 0x80
jne 0x1015809c
push dword [esp + 0x38]
mov edi, dword [esp + 0xb0]
push edi
push 0
push 0x48
push ebx
call fcn.1021b520
mov ecx, dword [esi + 0x28]
push edi
push 0
push ecx
lea eax, [ecx + 1]
mov dword [esp + 0x60], ecx
push 0x64
push ebx
mov dword [esi + 0x28], eax
call fcn.1021b520
add esp, 0x28
mov edi, eax
cmp dword [esp + 0x110], 0
mov dword [esp + 0x80], edi
je 0x101581b2
jmp 0x101582da
mov edx, dword [esp + 0x34]
test edx, edx
je 0x101580aa
movzx ebx, word [edx + 0x32]
jmp 0x101580ac
xor ebx, ebx
mov eax, dword [esi + 0x2c]
mov dword [esp + 0x8c], ebx
movsx ebx, bx
lea ecx, [eax + 1]
inc eax
add eax, ebx
mov dword [esp + 0x5c], ecx
add eax, edi
cmp dword [esp + 0x110], 0
mov dword [esp + 0x54], eax
mov dword [esi + 0x2c], eax
jne 0x1015828c
cmp dword [esp + 0x50], 0
je 0x101580e7
movsx eax, word [ebp + 0x2a]
jmp 0x101580e9
xor eax, eax
lea edi, [eax + ebx]
mov eax, dword [esi + 0x28]
add edi, dword [esp + 0x30]
mov dword [esp + 0x40], eax
inc eax
mov dword [esi + 0x28], eax
test edx, edx
je 0x10158116
lea eax, [ecx - 1]
add eax, ebx
push eax
push ecx
push 0
push 0x48
push dword [esp + 0x24]
call fcn.1021b520
add esp, 0x14
push edi
push dword [esp + 0x44]
push 0x64
push dword [esp + 0x20]
call fcn.101596d3
mov dword [esp + 0x90], eax
add esp, 0x10
mov eax, dword [esp + 0x34]
test eax, eax
je 0x1015815c
push eax
push esi
call fcn.1014c4a0
pop ecx
pop ecx
test eax, eax
je 0x10158158
push 0xfffffffffffffff7
push eax
push dword [esp + 0x1c]
mov word [eax + 8], di
call fcn.1021b520
add esp, 0xc
mov eax, dword [esp + 0x34]
cmp dword [esp + 0x30], 0
je 0x101581a7
push dword [esp + 0x24]
mov ecx, dword [esp + 0xfc]
push dword [esp + 0x88]
mov edi, dword [esp + 0x48]
push dword [esp + 0x108]
push ecx
push dword [esp + 0x10c]
push eax
push edi
push esi
call fcn.10169d5e
add esp, 0x20
cmp dword [esp + 0x50], 0
je 0x101582a8
mov dword [esp + 0x1c], edi
jmp 0x101582a8
mov edi, dword [esp + 0x80]
mov ebx, dword [esp + 0x14]
cmp byte [esi + 0x12], 0
push 4
pop eax
jne 0x101581db
cmp dword [esp + 0x48], 0
jne 0x101581db
cmp dword [esp + 0x58], 0
jne 0x101581db
cmp byte [esp + 0x44], 0
jne 0x101581db
cmp dword [esp + 0x68], 0
push 0xc
pop ecx
cmove eax, ecx
push dword [esp + 0x78]
push eax
push 0
push 0
push dword [esp + 0x110]
push dword [esp + 0x10c]
push esi
call fcn.1016406a
add esp, 0x1c
mov dword [esp + 0x94], eax
test eax, eax
je 0x10157bc1
lea ecx, [esp + 0xc0]
push ecx
push eax
call fcn.10166cce
mov edx, dword [esp + 0x9c]
pop ecx
pop ecx
mov ecx, eax
xor eax, eax
mov edx, dword [edx + 0x30]
inc eax
and edx, eax
mov dword [esp + 0x24], ecx
mov dword [esp + 0xa0], edx
cmp ecx, eax
je 0x10158307
cmp dword [esi + 0x74], 0
mov eax, esi
cmovne eax, dword [esi + 0x74]
mov byte [eax + 0x14], 1
cmp ecx, 2
jne 0x10158307
mov eax, dword [esp + 0xc4]
mov ecx, dword [esp + 0x1c]
test eax, eax
js 0x1015830b
cmp eax, ecx
je 0x1015830b
sub eax, dword [esp + 0x88]
mov edx, dword [esp + 0x7c]
cmp byte [eax + edx], 0
je 0x1015830b
and dword [esp + 0x24], 0
jmp 0x1015830b
and dword [esp + 0x40], 0
xor edi, edi
mov ecx, dword [esp + 0x1c]
mov dword [esp + 0x80], edi
mov dword [esp + 0x1c], ecx
cmp dword [esp + 0x30], edi
je 0x101582d6
cmp dword [esi + 0x74], 0
mov eax, esi
mov dword [esp + 0x90], ebx
cmovne eax, dword [esi + 0x74]
xor ecx, ecx
mov ebx, dword [esp + 0x14]
inc ecx
mov byte [eax + 0x14], cl
xor eax, eax
mov ecx, dword [esp + 0x5c]
mov dword [esp + 0x24], eax
mov dword [esp + 0x54], ecx
jmp 0x1015842c
mov ebx, dword [esp + 0x14]
and dword [esp + 0x94], 0
xor eax, eax
push 0x10
push dword [esp + 0x50]
inc eax
push dword [esp + 0x108]
mov dword [esp + 0x30], eax
push esi
call fcn.10145a70
add esp, 0x10
and dword [esp + 0xa0], 0
mov ecx, dword [esp + 0x1c]
test byte [ebp + 0x24], 0x80
jne 0x10158375
push dword [esp + 0x38]
push ecx
push 0x80
push ebx
call fcn.101596d3
mov eax, dword [esp + 0x34]
add esp, 0x10
test eax, eax
jne 0x1015835f
push dword [esp + 0x38]
mov ecx, dword [esp + 0xa0]
push dword [esp + 0xb0]
mov edx, dword [esp + 0x74]
push dword [esp + 0x48]
inc dword [esi + 0x2c]
mov eax, dword [esi + 0x2c]
push 0x7a
push ebx
mov dword [edx + ecx*4], eax
call fcn.1021b520
add esp, 0x14
jmp 0x10158428
test edi, edi
je 0x1015842c
push edi
push ebx
call fcn.10159a6c
pop ecx
pop ecx
jmp 0x10158428
mov eax, dword [esp + 0x8c]
xor ebx, ebx
movsx edi, ax
test edi, edi
jle 0x101583b7
mov esi, dword [esp + 0x14]
mov eax, dword [esp + 0x5c]
add eax, ebx
push eax
mov eax, dword [esp + 0x38]
mov eax, dword [eax + 4]
movsx eax, word [eax + ebx*2]
push eax
push ecx
push ebp
push esi
call fcn.1021b520
mov ecx, dword [esp + 0x30]
add esp, 0x14
inc ebx
cmp ebx, edi
jl 0x10158389
mov esi, dword [esp + 0xf4]
cmp dword [esp + 0x24], 0
je 0x101583e7
mov eax, dword [esp + 0x80]
mov ebx, dword [esp + 0x14]
test eax, eax
je 0x101583d6
push eax
push ebx
call fcn.10159a6c
pop ecx
pop ecx
mov eax, dword [esp + 0x5c]
mov dword [esp + 0x90], edi
mov dword [esp + 0x54], eax
jmp 0x10158428
push edi
push dword [esp + 0x38]
push dword [esp + 0x30]
call fcn.1014a881
mov ebx, dword [esp + 0x20]
pop ecx
pop ecx
push eax
push dword [esp + 0x5c]
push edi
push dword [esp + 0x6c]
push 0x5b
push ebx
call fcn.1021b520
push edi
push dword [esp + 0x7c]
push dword [esp + 0x78]
push dword [esp + 0x68]
push 0x83
push ebx
call fcn.1021b520
add esp, 0x34
mov eax, dword [esp + 0x24]
cmp dword [esp + 0x110], 0
jne 0x101586ad
cmp dword [esp + 0x30], 0
jne 0x10158453
cmp eax, 2
je 0x10158453
push dword [esp + 0x94]
call fcn.10166231
pop ecx
mov eax, dword [esp + 0x50]
test eax, eax
jne 0x101584f3
mov ecx, dword [esp + 0x24]
xor edi, edi
test ecx, ecx
je 0x101584c3
mov eax, dword [esp + 0xc0]
mov edx, dword [esp + 0x7c]
test eax, eax
js 0x10158483
sub eax, dword [esp + 0x88]
mov byte [eax + edx], 0
mov eax, dword [esp + 0xc4]
test eax, eax
js 0x10158499
sub eax, dword [esp + 0x88]
mov byte [eax + edx], 0
cmp ecx, 2
jne 0x101584c3
mov ecx, dword [esp + 0x98]
xor eax, eax
cmp dword [esp + 0xc4], eax
setge al
sub ecx, eax
test ecx, ecx
jle 0x101584c3
push 0x11
push ebx
call fcn.101596a4
pop ecx
pop ecx
mov edi, eax
xor ecx, ecx
push ecx
push ecx
push dword [esp + 0x84]
push dword [esp + 0x94]
push ecx
push 0x61
push ebp
push esi
call fcn.1014d6e4
add esp, 0x20
test edi, edi
je 0x101584ef
push edi
push ebx
call fcn.101601d6
pop ecx
pop ecx
mov eax, dword [esp + 0x50]
mov edi, dword [esp + 0x24]
test edi, edi
je 0x10158564
test eax, eax
jne 0x10158530
mov eax, dword [esp + 0x1c]
cmp dword [esp + 0xc0], eax
je 0x10158530
cmp dword [esp + 0xc4], eax
je 0x10158530
push dword [esp + 0x90]
push dword [esp + 0x58]
push dword [esp + 0x54]
push eax
push 0x1d
push ebx
call fcn.1021b520
add esp, 0x18
xor eax, eax
inc eax
cmp edi, eax
je 0x10158541
dec dword [esi + 0x38]
mov eax, dword [esi + 0x38]
mov dword [esp + 0x2c], eax
push dword [esp + 0x4c]
cmp dword [esp + 0x38], 0
mov eax, dword [esp + 0x3c]
cmovne eax, dword [esp + 0x58]
push eax
push 0x32
push ebx
call fcn.101596d3
add esp, 0x10
jmp 0x101586ad
cmp dword [esp + 0x34], 0
jne 0x101585bf
cmp dword [esp + 0x30], 0
jne 0x101585bf
push dword [esp + 0x4c]
push dword [esp + 0x44]
push 0x25
push ebx
call fcn.101596d3
push dword [esp + 0x48]
dec dword [esi + 0x38]
push dword [esp + 0x54]
mov edi, dword [esi + 0x38]
push 0x80
push ebx
mov dword [esp + 0x4c], edi
call fcn.101596d3
push dword [esp + 0x58]
mov dword [esp + 0xd4], eax
push edi
push dword [esp + 0x44]
push 0x20
push ebx
call fcn.1021b520
add esp, 0x34
jmp 0x101586ad
push dword [esp + 0x4c]
dec dword [esi + 0x38]
push dword [esp + 0x44]
mov edi, dword [esi + 0x38]
push 0x25
push ebx
mov dword [esp + 0x3c], edi
call fcn.101596d3
mov eax, dword [ebx + 0x6c]
add esp, 0x10
mov dword [esp + 0xb0], eax
mov eax, dword [esp + 0x30]
test eax, eax
je 0x10158687
cmp dword [esp + 0x50], 0
jne 0x101586b1
cmp dword [esp + 0x34], 0
je 0x1015865e
mov eax, dword [esp + 0x8c]
xor edi, edi
movsx ebx, ax
test ebx, ebx
jle 0x10158640
mov ebp, dword [esp + 0x14]
mov esi, dword [esp + 0x40]
mov eax, dword [esp + 0x5c]
add eax, edi
push eax
push edi
push esi
push 0x59
push ebp
call fcn.1021b520
add esp, 0x14
inc edi
cmp edi, ebx
jl 0x1015861c
mov esi, dword [esp + 0xf4]
mov ebp, dword [esp + 0x3c]
push ebx
push dword [esp + 0x60]
mov ebx, dword [esp + 0x1c]
push dword [esp + 0x34]
push dword [esp + 0x28]
push 0x1d
push ebx
call fcn.1021b520
add esp, 0x18
jmp 0x101586ad
push dword [esp + 0x38]
push dword [esp + 0x44]
push 0x80
push ebx
call fcn.101596d3
push dword [esp + 0x48]
push edi
push dword [esp + 0x34]
push 0x20
push ebx
call fcn.1021b520
add esp, 0x24
jmp 0x101586ad
push dword [esp + 0x54]
push dword [esp + 0x44]
push 0x7f
push ebx
call fcn.101596d3
push 0
push dword [esp + 0x68]
push edi
push dword [esp + 0x38]
push 0x1d
push ebx
call fcn.1021b520
add esp, 0x28
mov eax, dword [esp + 0x30]
cmp byte [esp + 0x13], 0
je 0x101586ef
mov edi, dword [esp + 0x64]
push edi
test eax, eax
jne 0x101586d0
push dword [esp + 0x64]
push esi
call fcn.1021b520
add esp, 0xc
jmp 0x101586e3
push dword [esp + 0x74]
push dword [esp + 0x48]
push 0x59
push ebx
call fcn.1021b520
add esp, 0x14
push edi
push 0xf
push ebx
call fcn.101596ba
add esp, 0xc
cmp byte [esp + 0x23], 0
mov eax, dword [esp + 0x58]
jne 0x10158708
test eax, eax
jne 0x1015870c
cmp dword [esp + 0x48], eax
je 0x101587f5
test eax, eax
je 0x10158719
push ebp
push esi
call fcn.1014823d
pop ecx
pop ecx
mov ebx, eax
jmp 0x1015871b
xor ebx, ebx
push dword [esp + 0x104]
push ebp
push 3
push 0
push dword [esp + 0x10c]
push dword [esp + 0x5c]
push esi
call fcn.10156abf
or ebx, eax
add esp, 0x1c
xor eax, eax
xor edi, edi
cmp ax, word [ebp + 0x2a]
jge 0x101587d1
mov esi, dword [esp + 0x3c]
xor ebp, ebp
mov eax, dword [esi + 4]
push edi
push esi
movzx eax, word [eax + ebp + 0x10]
mov dword [esp + 0xa0], eax
call fcn.10156821
movsx edx, ax
add edx, dword [esp + 0xac]
pop ecx
pop ecx
cmp ebx, 0xffffffff
je 0x101587a7
cmp edi, 0x20
jge 0x10158788
xor eax, eax
mov ecx, edi
inc eax
shl eax, cl
test ebx, eax
jne 0x101587a7
xor eax, eax
inc eax
test byte [esp + 0x98], al
jne 0x101587a7
push edx
push 0
push 0x48
push dword [esp + 0x20]
call fcn.101596d3
add esp, 0x10
jmp 0x101587ba
push edx
push edi
push dword [esp + 0x24]
push esi
push dword [esp + 0x24]
call fcn.1021b520
add esp, 0x14
movsx eax, word [esi + 0x2a]
inc edi
add ebp, 0x14
cmp edi, eax
jl 0x10158751
mov esi, dword [esp + 0xf4]
mov ebp, dword [esp + 0x3c]
cmp byte [esp + 0x13], 0
jne 0x101587f5
cmp dword [esp + 0x34], 0
jne 0x101587f5
push dword [esp + 0x64]
push dword [esp + 0x3c]
push 0x4d
push dword [esp + 0x20]
call fcn.101596d3
add esp, 0x10
push dword [esp + 0x104]
xor eax, eax
push ebp
inc eax
push eax
push eax
push dword [esp + 0x10c]
push dword [esp + 0x5c]
push esi
call fcn.10156abf
xor ecx, ecx
mov dword [esp + 0xc0], eax
mov eax, dword [esp + 0x90]
add esp, 0x1c
xor ebx, ebx
mov edi, eax
cmp cx, word [ebp + 0x2a]
jge 0x10158928
xor ebp, ebp
mov edx, dword [esp + 0x3c]
movsx eax, word [edx + 0x28]
cmp ebx, eax
je 0x101588dd
mov eax, dword [edx + 4]
movzx eax, word [eax + ebp + 0x10]
test al, 0x60
je 0x10158860
test al, 0x20
je 0x1015890b
dec edi
jmp 0x1015890b
mov eax, dword [esp + 0x18]
mov ecx, dword [eax + ebx*4]
test ecx, ecx
js 0x101588bf
cmp dword [esp + 0x30], 0
lfence
je 0x101588a5
cmp dword [esp + 0x50], 0
je 0x10158882
movzx eax, word [edx + 0x2a]
jmp 0x1015888c
mov eax, dword [esp + 0x8c]
movzx eax, ax
push edi
cwde
add eax, ecx
push eax
push dword [esp + 0x48]
push 0x59
push dword [esp + 0x24]
call fcn.1021b520
add esp, 0x14
jmp 0x1015890b
imul eax, ecx, 0x14
mov ecx, dword [esp + 0xfc]
push edi
push dword [eax + ecx + 4]
push esi
call fcn.1021b520
add esp, 0xc
jmp 0x1015890b
xor eax, eax
inc eax
test dword [esp + 0xa8], eax
je 0x101588f0
cmp ebx, 0x1f
jg 0x101588f0
mov ecx, ebx
shl eax, cl
test dword [esp + 0xa4], eax
jne 0x101588f0
push edi
push 0
push 0x48
push dword [esp + 0x20]
call fcn.101596d3
add esp, 0x10
jmp 0x1015890b
push edi
push ebx
push dword [esp + 0x24]
push edx
push dword [esp + 0x24]
call fcn.1021b520
add esp, 0x14
and dword [esp + 0xa0], 0
mov eax, dword [esp + 0x3c]
inc ebx
add ebp, 0x14
inc edi
movsx eax, word [eax + 0x2a]
cmp ebx, eax
jl 0x10158836
mov ebp, dword [esp + 0x3c]
mov eax, dword [esp + 0x74]
test byte [ebp + 0x24], 0x60
je 0x10158939
push ebp
push eax
push esi
call fcn.101404ea
add esp, 0xc
xor ecx, ecx
inc ecx
test byte [esp + 0xa8], cl
je 0x10158a7a
mov eax, dword [esp + 0x74]
mov ebx, dword [esp + 0x14]
push eax
push ebp
push ebx
call fcn.10156732
mov eax, dword [esp + 0x54]
add esp, 0xc
mov edi, eax
test eax, eax
je 0x101589af
mov ebx, dword [esp + 0x2c]
cmp byte [edi + 8], 0x7f
jne 0x101589a4
xor eax, eax
inc eax
cmp byte [edi + 9], al
jne 0x101589a4
push dword [esp + 0xfc]
push dword [edi + 0x10]
call fcn.10123bab
pop ecx
pop ecx
test eax, eax
je 0x101589a4
push ebx
push dword [esp + 0x108]
push dword [esp + 0x40]
push ebp
push edi
push esi
call fcn.1013fcbf
add esp, 0x18
mov edi, dword [edi + 0x20]
test edi, edi
jne 0x1015896a
mov ebx, dword [esp + 0x14]
cmp dword [esp + 0x50], 0
jne 0x10158c11
cmp dword [esp + 0x34], 0
je 0x101589e1
push dword [esp + 0x90]
push dword [esp + 0x58]
push dword [esp + 0x34]
push dword [esp + 0x28]
push 0x1d
push ebx
call fcn.1021b520
add esp, 0x18
jmp 0x101589f8
push dword [esp + 0x38]
push dword [esp + 0x30]
push dword [esp + 0x24]
push 0x20
push ebx
call fcn.1021b520
add esp, 0x14
mov eax, dword [esp + 0x74]
xor ecx, ecx
xor edi, edi
mov ebx, eax
cmp cx, word [ebp + 0x2a]
jge 0x10158a67
mov esi, dword [esp + 0x3c]
xor ebp, ebp
mov eax, dword [esi + 4]
movzx eax, word [eax + ebp + 0x10]
test al, 0x60
je 0x10158a26
test al, 0x20
lea eax, [ebx - 1]
cmove eax, ebx
mov ebx, eax
jmp 0x10158a4b
mov eax, dword [esp + 0x18]
cmp dword [eax + edi*4], 0
jge 0x10158a4b
movsx eax, word [esi + 0x28]
cmp edi, eax
je 0x10158a4b
push ebx
push edi
push dword [esp + 0x24]
push esi
push dword [esp + 0x24]
call fcn.1021b520
add esp, 0x14
movsx eax, word [esi + 0x2a]
inc edi
add ebp, 0x14
inc ebx
cmp edi, eax
jl 0x10158a0e
mov esi, dword [esp + 0xf4]
mov ebp, dword [esp + 0x3c]
mov eax, dword [esp + 0x74]
test byte [ebp + 0x24], 0x60
je 0x10158a85
push ebp
push eax
push esi
call fcn.101404ea
add esp, 0xc
jmp 0x10158a85
cmp dword [esp + 0x50], 0
jne 0x10158c07
mov ebx, dword [esp + 0x2c]
lea eax, [esp + 0x68]
push 0
push dword [esp + 0x1c]
mov edi, dword [esp + 0x24]
push eax
push ebx
push dword [esp + 0x114]
push dword [esp + 0x58]
push dword [esp + 0x50]
push dword [esp + 0x80]
push dword [esp + 0x98]
push edi
push dword [esp + 0x94]
push ebp
push esi
call fcn.101484fc
add esp, 0x34
cmp dword [esp + 0x68], 0
jne 0x10158ad6
cmp byte [esp + 0x44], 0
je 0x10158b12
cmp dword [esp + 0x34], 0
je 0x10158afb
push dword [esp + 0x90]
push dword [esp + 0x58]
push ebx
mov ebx, dword [esp + 0x20]
push edi
push 0x1d
push ebx
call fcn.1021b520
add esp, 0x18
jmp 0x10158b16
push dword [esp + 0x38]
push ebx
mov ebx, dword [esp + 0x1c]
push edi
push 0x20
push ebx
call fcn.1021b520
add esp, 0x14
jmp 0x10158b16
mov ebx, dword [esp + 0x14]
cmp dword [esp + 0x58], 0
je 0x10158b38
push dword [esp + 0xb8]
push dword [esp + 0x1c]
push 0
push dword [esp + 0x44]
push ebp
push esi
call fcn.10147a68
add esp, 0x18
push 0xffffffffffffffff
push dword [esp + 0x70]
push dword [esp + 0x80]
push edi
push ebp
push esi
call fcn.1014989a
add esp, 0x18
cmp dword [esp + 0xa0], 0
je 0x10158b69
push edi
push 0x88
push ebx
call fcn.101596ba
add esp, 0xc
mov eax, dword [esp + 0x58]
xor ecx, ecx
inc ecx
cmp eax, ecx
jg 0x10158b7b
cmp byte [esp + 0x44], 0
je 0x10158b8d
push 0
push edi
push 0x7b
push ebx
call fcn.101596d3
mov eax, dword [esp + 0x68]
add esp, 0x10
test eax, eax
je 0x10158bac
push dword [esp + 0xb8]
push dword [esp + 0x1c]
push dword [esp + 0x6c]
push 0
push ebp
push esi
call fcn.10147a68
add esp, 0x18
mov edi, dword [esp + 0x24]
cmp edi, 2
push 0
push 0
push 6
pop ecx
push 4
pop eax
cmove eax, ecx
push eax
push dword [esp + 0x78]
push dword [esp + 0x74]
push dword [esp + 0x8c]
push dword [esp + 0x34]
push ebp
push esi
call fcn.10140385
add esp, 0x24
cmp dword [esp + 0x58], 0
je 0x10158c15
push dword [esp + 0xb8]
push dword [esp + 0x1c]
push dword [esp + 0x40]
push dword [esp + 0x108]
push ebp
push esi
call fcn.1021b520
add esp, 0x18
jmp 0x10158c15
mov ebx, dword [esp + 0x14]
mov edi, dword [esp + 0x24]
jmp 0x10158c18
mov edi, dword [esp + 0x24]
xor ecx, ecx
inc ecx
mov eax, dword [esp + 0xb4]
test eax, eax
je 0x10158c30
push ecx
push eax
push 0x52
push ebx
call fcn.101596d3
add esp, 0x10
mov eax, dword [esp + 0x48]
test eax, eax
je 0x10158c8f
mov edi, dword [esp + 0x2c]
mov ebx, dword [esp + 0x104]
cmp byte [eax + 8], 0x7f
jne 0x10158c7c
cmp byte [eax + 9], 2
jne 0x10158c7c
push dword [esp + 0xfc]
push dword [eax + 0x10]
call fcn.10123bab
pop ecx
pop ecx
test eax, eax
je 0x10158c78
push edi
push ebx
push dword [esp + 0x40]
push ebp
push dword [esp + 0x58]
push esi
call fcn.1013fcbf
add esp, 0x18
mov eax, dword [esp + 0x48]
mov eax, dword [eax + 0x20]
mov dword [esp + 0x48], eax
test eax, eax
jne 0x10158c43
mov ebx, dword [esp + 0x14]
mov edi, dword [esp + 0x24]
xor eax, eax
inc eax
cmp edi, eax
je 0x10158ccc
push dword [esp + 0x2c]
push ebx
call fcn.10161d60
cmp edi, 2
jne 0x10158cb6
push dword [esp + 0x9c]
call fcn.10166231
add esp, 0xc
jmp 0x10158ccc
push dword [esp + 0xb8]
push dword [esp + 0x4c]
push 5
push ebx
call fcn.101596d3
add esp, 0x18
push dword [esp + 0x4c]
push ebx
call fcn.10161d60
cmp byte [esi + 0x12], 0
pop ecx
pop ecx
jne 0x10158cf5
cmp dword [esi + 0x78], 0
jne 0x10158cf5
cmp dword [esp + 0x110], 0
jne 0x10158cf5
push esi
call fcn.1013c477
pop ecx
mov eax, dword [esp + 0xb4]
test eax, eax
je 0x10157bc1
xor ecx, ecx
inc ecx
push ecx
push eax
push 0x50
push ebx
call fcn.101596d3
xor eax, eax
inc eax
push eax
push ebx
call fcn.10162034
xor eax, eax
push eax
push str.rows_updated
push eax
push eax
push ebx
call fcn.1021b520
add esp, 0x2c
jmp 0x10157bc1