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

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff0
sub esp, 0x128
xor eax, eax
mov dword [esp + 0x70], edx
push esi
mov esi, dword [ebp + 0xc]
xor edx, edx
push edi
mov edi, ecx
mov dword [esp + 0xbc], edx
xorps xmm0, xmm0
mov dword [esp + 0x10], edi
mov dword [esp + 0xb8], 0
mov dword [esp + 0xa4], 0
mov edx, dword [edi]
mov dword [esp + 0x58], 0
mov dword [esp + 0xb4], 0
mov dword [esp + 0x60], eax
mov dword [esp + 0x28], eax
mov dword [esp + 0x80], eax
mov dword [esp + 0x88], eax
mov dword [esp + 0x20], eax
mov dword [esp + 0x4c], eax
mov dword [esp + 0x90], eax
mov dword [esp + 0x8c], eax
mov dword [esp + 0x84], eax
mov dword [esp + 0x34], eax
movlpd qword [esp + 0xc8], xmm0
mov dword [esp + 0x64], edx
cmp dword [edi + 0x24], eax
jne 0x59b442
cmp byte [edx + 0x51], al
jne 0x59b442
mov edx, dword [esp + 0x78]
call fcn.0057c8d0
mov esi, eax
mov dword [esp + 0x14], esi
test esi, esi
je 0x59b43f
mov edx, dword [esi + 0x48]
mov ecx, dword [edi]
call fcn.0058cbd0
mov dword [esp + 0x68], eax
mov edx, esi
lea eax, [esp + 0xc0]
mov ecx, edi
push eax
push dword [ebp + 8]
push 0x7f
call fcn.005989c0
add esp, 0xc
mov dword [esp + 0x3c], eax
mov eax, dword [esi + 0xc]
mov edx, esi
mov ecx, edi
mov dword [esp + 0x94], eax
call fcn.00578760
test eax, eax
jne 0x59b43f
push dword [esp + 0xc0]
mov edx, esi
mov ecx, edi
call fcn.0057c930
add esp, 4
test eax, eax
jne 0x59b43f
mov eax, dword [edi + 0x28]
mov dword [esp + 0x18], eax
mov dword [esp + 0xa0], eax
lea ecx, [eax + 1]
mov dword [edi + 0x28], ecx
test byte [esi + 0x24], 0x80
mov dword [esp + 0x98], ecx
jne 0x5995ed
mov dword [esp + 0x38], 0
jmp 0x5995fc
mov ecx, esi
call fcn.005764b0
mov dword [esp + 0x38], eax
mov eax, dword [esp + 0x18]
mov ecx, dword [esi + 8]
xor edx, edx
mov dword [esp + 0x74], edx
test ecx, ecx
je 0x599641
mov edx, dword [esp + 0x98]
xor esi, esi
cmp dword [esp + 0x38], ecx
mov eax, edx
mov edi, dword [esp + 0x10]
cmovne eax, dword [esp + 0x18]
inc edx
inc esi
mov dword [esp + 0x18], eax
mov dword [edi + 0x28], edx
mov ecx, dword [ecx + 0x14]
test ecx, ecx
jne 0x599612
mov dword [esp + 0x74], esi
mov esi, dword [esp + 0x14]
mov edx, dword [esp + 0x74]
mov dword [esp + 0x18], eax
mov ecx, dword [ebp + 0x1c]
test ecx, ecx
je 0x599667
mov edx, dword [ecx + 0x20]
mov eax, dword [ecx + 0x1c]
mov ecx, dword [esp + 0xa0]
mov dword [esp + 0x98], edx
mov edx, dword [esp + 0x74]
mov dword [esp + 0x18], eax
mov dword [edi + 0x28], ecx
mov ecx, dword [esp + 0x78]
push 0
mov dword [ecx + 0x34], eax
movsx eax, word [esi + 0x2a]
mov ecx, dword [esp + 0x68]
add eax, edx
lea eax, [eax*4 + 6]
add eax, edx
push eax
call fcn.00535c50
mov ecx, eax
add esp, 8
mov dword [esp + 0x2c], ecx
test ecx, ecx
je 0x59b43f
movsx eax, word [esi + 0x2a]
lea ecx, [ecx + eax*4]
mov eax, dword [esp + 0x74]
mov dword [esp + 0x70], ecx
lea ecx, [ecx + eax*4]
inc eax
push eax
add ecx, 4
push 1
push ecx
mov dword [esp + 0x88], ecx
call fcn.0064d010
mov eax, dword [esp + 0x80]
add esp, 0xc
mov ecx, dword [esp + 0x7c]
mov byte [ecx + eax + 1], 0
xor eax, eax
xor ecx, ecx
cmp ax, word [esi + 0x2a]
jge 0x5996f5
mov edi, dword [esp + 0x2c]
mov dword [edi + ecx*4], 0xffffffff
inc ecx
movsx eax, word [esi + 0x2a]
cmp ecx, eax
jl 0x5996e1
mov edi, dword [esp + 0x10]
mov eax, dword [esp + 0x78]
xorps xmm0, xmm0
mov ecx, dword [ebp + 0x1c]
mov dword [esp + 0x114], eax
mov eax, dword [edi + 8]
movlpd qword [esp + 0x11c], xmm0
mov dword [esp + 0x124], 0
mov dword [esp + 0x12c], 0
mov dword [esp + 0x110], edi
mov dword [esp + 0x118], ecx
mov dword [esp + 0x128], 0x200
mov dword [esp + 0xc], eax
test eax, eax
jne 0x59976d
cmp dword [edi + 0x74], eax
jne 0x59975a
mov eax, dword [edi]
test byte [eax + 0x4c], 8
jne 0x59975a
mov byte [edi + 0x17], 1
mov ecx, edi
call fcn.00554650
mov dword [esp + 0xc], eax
test eax, eax
je 0x59b432
mov ecx, dword [ebp + 8]
xor al, al
mov byte [esp + 0x27], 0
mov byte [esp + 0x1f], al
mov dword [esp + 0x40], 0
cmp dword [ecx], 0
jle 0x599968
lea esi, [ecx + 4]
mov dword [esp + 0x30], esi
nop dword [eax]
nop word [eax + eax]
mov edx, dword [esi]
lea ecx, [esp + 0x110]
call fcn.005688a0
test eax, eax
jne 0x59b432
mov edx, dword [esp + 0x14]
xor edi, edi
movsx eax, word [edx + 0x2a]
test eax, eax
jle 0x59988e
mov eax, dword [edx + 4]
mov dword [esp + 0x9c], eax
mov dword [esp + 0x44], eax
nop word [eax + eax]
mov edx, dword [eax]
mov esi, dword [esi + 4]
mov dword [esp + 0xa8], edx
sub esi, edx
nop
movzx ecx, byte [edx]
movzx eax, byte [esi + edx]
cmp ecx, eax
jne 0x59981f
test ecx, ecx
jne 0x599831
mov edx, dword [esp + 0x14]
movsx eax, word [edx + 0x28]
cmp edi, eax
jne 0x599852
mov esi, dword [esp + 0x30]
mov byte [esp + 0x1f], 1
mov eax, dword [esi]
mov dword [esp + 0xa4], eax
jmp 0x599883
movzx eax, byte [eax + 0x6c8638]
movzx ecx, byte [ecx + 0x6c8638]
sub ecx, eax
jne 0x599834
inc edx
jmp 0x5997f0
mov edx, dword [esp + 0x14]
inc edi
mov eax, dword [esp + 0x44]
mov esi, dword [esp + 0x30]
add eax, 0x14
mov dword [esp + 0x44], eax
movsx ecx, word [edx + 0x2a]
cmp edi, ecx
jge 0x59988e
jmp 0x5997e0
cmp dword [esp + 0x38], 0
mov ecx, dword [esp + 0x9c]
je 0x599871
lea eax, [edi + edi*4]
test byte [ecx + eax*4 + 0x10], 1
je 0x599871
mov byte [esp + 0x27], 1
jmp 0x59987f
lea eax, [edi + edi*4]
test byte [ecx + eax*4 + 0x10], 0x60
jne 0x599999
mov esi, dword [esp + 0x30]
mov ecx, dword [esp + 0x2c]
mov eax, dword [esp + 0x40]
mov dword [ecx + edi*4], eax
movsx eax, word [edx + 0x2a]
cmp edi, eax
jl 0x5998f4
cmp dword [esp + 0x38], 0
jne 0x5999b6
mov esi, dword [esi + 4]
mov edx, str._ROWID_
mov ecx, esi
call fcn.00538e50
test eax, eax
je 0x5998d8
mov edx, str.ROWID
mov ecx, esi
call fcn.00538e50
test eax, eax
je 0x5998d8
mov edx, 0x6e0a44
mov ecx, esi
call fcn.00538e50
test eax, eax
jne 0x5999b6
mov esi, dword [esp + 0x30]
or edi, 0xffffffff
mov byte [esp + 0x1f], 1
mov edx, str.ROWID
mov eax, dword [esi]
mov dword [esp + 0xa4], eax
jmp 0x599908
test edi, edi
jns 0x5998ff
mov edx, str.ROWID
jmp 0x599908
mov eax, dword [edx + 4]
lea ecx, [edi + edi*4]
mov edx, dword [eax + ecx*4]
mov eax, dword [esp + 0x64]
mov ecx, dword [esp + 0x68]
add ecx, ecx
mov eax, dword [eax + 0x10]
push dword [eax + ecx*8]
mov ecx, dword [esp + 0x14]
push edx
mov edx, dword [esp + 0x1c]
push dword [edx]
mov edx, 0x17
call fcn.005750e0
add esp, 0xc
cmp eax, 1
je 0x59b432
cmp eax, 2
jne 0x599949
mov eax, dword [esp + 0x2c]
mov dword [eax + edi*4], 0xffffffff
mov edi, dword [esp + 0x40]
add esi, 0x14
mov eax, dword [ebp + 8]
inc edi
mov dword [esp + 0x40], edi
mov dword [esp + 0x30], esi
cmp edi, dword [eax]
jl 0x5997a0
mov al, byte [esp + 0x1f]
mov ecx, dword [esp + 0x14]
mov dl, byte [esp + 0x27]
add dl, al
mov byte [esp + 0x6c], dl
test byte [ecx + 0x24], 0x60
je 0x599aa8
movzx eax, word [ecx + 0x2a]
xor edx, edx
xor edi, edi
xor esi, esi
mov dword [esp + 0x44], edx
cmp di, ax
jge 0x599aa4
jmp 0x5999e4
push dword [esp + 0xa8]
push str.cannot_UPDATE_generated_column___s_
push dword [esp + 0x18]
call fcn.00538d20
add esp, 0xc
jmp 0x59b432
mov eax, dword [esp + 0x40]
mov ecx, dword [ebp + 8]
mov esi, dword [esp + 0x10]
lea eax, [eax + eax*4]
push dword [ecx + eax*4 + 8]
push str.no_such_column:__s
push esi
call fcn.00538d20
add esp, 0xc
mov byte [esi + 0x11], 1
jmp 0x59b432
mov ecx, dword [esp + 0x14]
mov eax, dword [esp + 0x2c]
cmp dword [eax + esi*4], 0
jge 0x599a83
mov eax, dword [ecx + 4]
test byte [eax + edi + 0x10], 0x60
je 0x599a83
mov edx, dword [eax + edi + 4]
xorps xmm0, xmm0
mov eax, dword [esp + 0x2c]
movaps xmmword [esp + 0xd0], xmm0
mov dword [esp + 0xe8], 0
movq qword [esp + 0xe0], xmm0
mov dword [esp + 0xd4], 0x585460
mov dword [esp + 0xe8], eax
test edx, edx
je 0x599a4d
lea ecx, [esp + 0xd0]
call fcn.005662f0
mov ecx, dword [esp + 0x14]
cmp byte [esp + 0x1f], 0
mov ax, word [esp + 0xe4]
jne 0x599a64
mov edx, 0xfffd
and ax, dx
test ax, ax
je 0x599a7f
mov eax, dword [esp + 0x2c]
mov edx, 1
mov dword [esp + 0x44], edx
mov dword [eax + esi*4], 0x1869f
jmp 0x599a83
mov edx, dword [esp + 0x44]
movzx eax, word [ecx + 0x2a]
inc esi
mov ecx, eax
add edi, 0x14
cwde
cmp esi, eax
jl 0x5999e0
mov eax, ecx
mov ecx, dword [esp + 0x14]
test edx, edx
jne 0x599984
mov dl, byte [esp + 0x6c]
cmp dword [ecx + 0x38], 0
je 0x599ab6
or eax, 0xffffffff
or ecx, 0xffffffff
jmp 0x599ad0
xorps xmm0, xmm0
movlpd qword [esp + 0xa8], xmm0
mov ecx, dword [esp + 0xac]
mov eax, dword [esp + 0xa8]
mov esi, dword [esp + 0x78]
mov dword [esi + 0x40], eax
movzx eax, dl
mov dword [esi + 0x44], ecx
mov esi, dword [esp + 0x14]
mov edx, esi
mov ecx, dword [esp + 0x10]
push eax
push dword [esp + 0x30]
mov dword [esp + 0xa4], eax
call fcn.00583150
add esp, 8
mov ecx, eax
cmp dword [ebp + 0x10], 5
mov edx, 1
mov eax, dword [esp + 0x88]
cmove eax, edx
mov dword [esp + 0x50], ecx
mov dword [esp + 0x88], eax
xor edi, edi
mov esi, dword [esi + 8]
mov dword [esp + 0x30], edi
test esi, esi
je 0x599ca6
nop dword [eax]
cmp byte [esp + 0x6c], 0
jne 0x599e23
cmp ecx, 1
jg 0x599e23
cmp esi, dword [esp + 0x38]
je 0x599e23
mov edx, dword [esi + 0x24]
test edx, edx
je 0x599bb6
mov eax, dword [esp + 0x2c]
lea ecx, [esp + 0xd0]
xorps xmm0, xmm0
mov dword [esp + 0xe8], 0
movaps xmmword [esp + 0xd0], xmm0
movq qword [esp + 0xe0], xmm0
mov dword [esp + 0xd4], 0x585460
mov dword [esp + 0xe8], eax
call fcn.005662f0
cmp byte [esp + 0x1f], 0
mov ax, word [esp + 0xe4]
jne 0x599bad
mov ecx, 0xfffd
and ax, cx
test ax, ax
jne 0x599e23
xor ecx, ecx
xor eax, eax
xor edi, edi
mov dword [esp + 0xa8], ecx
cmp ax, word [esi + 0x32]
jae 0x599c7e
mov dword [esp + 0x44], ecx
mov eax, dword [esi + 4]
movzx eax, word [eax + edi*2]
test ax, ax
js 0x599bec
mov edx, dword [esp + 0x2c]
cwde
mov eax, dword [edx + eax*4]
not eax
shr eax, 0x1f
jmp 0x599c5b
mov eax, dword [esi + 0x28]
xorps xmm0, xmm0
movaps xmmword [esp + 0xf0], xmm0
mov dword [esp + 0x108], 0
movq qword [esp + 0x100], xmm0
mov edx, dword [eax + ecx + 4]
mov eax, dword [esp + 0x2c]
mov dword [esp + 0xf4], 0x585460
mov dword [esp + 0x108], eax
test edx, edx
je 0x599c38
lea ecx, [esp + 0xf0]
call fcn.005662f0
cmp byte [esp + 0x1f], 0
mov cx, word [esp + 0x104]
jne 0x599c4f
mov eax, 0xfffd
and cx, ax
xor eax, eax
test cx, cx
mov ecx, dword [esp + 0x44]
setne al
test eax, eax
jne 0x599df2
movzx eax, word [esi + 0x32]
inc edi
add ecx, 0x14
mov dword [esp + 0x44], ecx
cmp edi, eax
jl 0x599bd1
mov ecx, dword [esp + 0xa8]
mov edi, dword [esp + 0x30]
mov eax, dword [esp + 0x7c]
mov byte [edi + eax + 1], 0
mov eax, dword [esp + 0x70]
mov dword [eax + edi*4], ecx
inc edi
mov esi, dword [esi + 0x14]
mov ecx, dword [esp + 0x50]
mov dword [esp + 0x30], edi
test esi, esi
jne 0x599b30
mov esi, dword [esp + 0x10]
mov ecx, dword [esp + 0x70]
inc dword [esi + 0x2c]
mov eax, dword [esi + 0x2c]
mov dword [ecx + edi*4], eax
cmp dword [esp + 0x88], 0
je 0x599cd8
mov eax, dword [esp + 0x74]
inc eax
push eax
push 1
push dword [esp + 0x84]
call fcn.0064d010
add esp, 0xc
cmp byte [esi + 0x12], 0
jne 0x599ce9
mov eax, dword [esp + 0xc]
or dword [eax + 0x98], 0x20
cmp dword [esp + 0x3c], 0
jne 0x599cfc
cmp dword [esp + 0x50], 0
mov byte [esp + 0x4b], 0
je 0x599d01
mov byte [esp + 0x4b], 1
mov eax, dword [esi + 0x74]
test eax, eax
mov ecx, dword [esp + 0x68]
cmovne esi, eax
mov eax, 1
shl eax, cl
mov edx, dword [esi + 0x54]
test edx, eax
jne 0x599d31
bts edx, ecx
mov dword [esi + 0x54], edx
cmp ecx, 1
jne 0x599d31
mov ecx, esi
call fcn.0057b4f0
mov ecx, dword [esp + 0x68]
mov eax, dword [esi + 0x50]
mov edx, dword [esp + 0x10]
bts eax, ecx
mov dword [esi + 0x50], eax
mov al, byte [esp + 0x4b]
or byte [esi + 0x14], al
mov esi, dword [esp + 0x14]
cmp dword [esi + 0x38], 0
jne 0x599dca
mov eax, dword [esp + 0x70]
mov ecx, dword [edx + 0x2c]
inc ecx
cmp byte [esp + 0x27], 0
mov dword [esp + 0x4c], ecx
mov eax, dword [eax + edi*4]
mov dword [esp + 0x84], eax
mov dword [edx + 0x2c], ecx
mov dword [esp + 0x20], ecx
jne 0x599d82
cmp dword [esp + 0x3c], 0
jne 0x599d82
mov eax, dword [esp + 0x50]
test eax, eax
je 0x599d99
lea eax, [ecx + 1]
mov dword [esp + 0x8c], eax
movsx eax, word [esi + 0x2a]
add ecx, eax
mov eax, dword [esp + 0x50]
mov dword [edx + 0x2c], ecx
cmp byte [esp + 0x6c], 0
jne 0x599dab
cmp dword [esp + 0x3c], 0
jne 0x599dab
test eax, eax
je 0x599db7
lea eax, [ecx + 1]
mov dword [esp + 0x4c], eax
mov ecx, eax
mov dword [edx + 0x2c], eax
lea eax, [ecx + 1]
mov dword [esp + 0x90], eax
movsx eax, word [esi + 0x2a]
add eax, ecx
mov dword [edx + 0x2c], eax
cmp dword [esp + 0x94], 0
je 0x599e44
mov ecx, dword [edx + 0xf0]
mov eax, dword [esi]
mov dword [esp + 0xc4], edx
mov dword [esp + 0xa8], ecx
mov dword [edx + 0xf0], eax
jmp 0x599e60
mov edx, dword [esp + 0x10]
mov edi, dword [esp + 0x30]
mov ecx, dword [edx + 0x2c]
inc ecx
mov dword [edx + 0x2c], ecx
movzx eax, word [esi + 0x34]
add eax, ecx
cmp dword [ebp + 0x10], 0xb
mov dword [edx + 0x2c], eax
jne 0x599e37
cmp byte [esi + 0x36], 5
jne 0x599e37
mov dword [esp + 0x88], 1
jmp 0x599e37
mov edx, dword [esp + 0x10]
mov ecx, dword [edx + 0x2c]
inc ecx
mov dword [edx + 0x2c], ecx
movzx eax, word [esi + 0x34]
add eax, ecx
mov dword [edx + 0x2c], eax
test ecx, ecx
jne 0x599c8b
jmp 0x599c82
mov eax, dword [esp + 0xcc]
mov dword [esp + 0xc4], eax
mov eax, dword [esp + 0xc8]
mov dword [esp + 0xa8], eax
je 0x599e7b
push dword [esp + 0x18]
mov ecx, dword [esp + 0x14]
mov edx, esi
push 0
push 0
push dword [ebp + 0xc]
call fcn.0057ca10
add esp, 0x10
mov edx, dword [ebp + 0xc]
lea ecx, [esp + 0x110]
call fcn.005688a0
test eax, eax
jne 0x59b41a
cmp dword [esi + 0x38], eax
je 0x599ec1
push dword [ebp + 0x10]
mov edx, dword [esp + 0x7c]
push dword [ebp + 0xc]
mov ecx, dword [esp + 0x18]
push dword [esp + 0x34]
push dword [esp + 0xb0]
push dword [ebp + 8]
push esi
call fcn.0059b480
add esp, 0x18
jmp 0x59b41a
mov eax, dword [esp + 0x10]
dec dword [eax + 0x38]
mov eax, dword [eax + 0x38]
mov dword [esp + 0x5c], eax
mov dword [esp + 0x40], eax
mov eax, dword [esp + 0x64]
mov ecx, dword [eax + 0x24]
xor eax, eax
and ecx, 1
or eax, ecx
mov ecx, dword [esp + 0x10]
je 0x599f69
cmp dword [ecx + 0x78], 0
jne 0x599f69
cmp byte [ecx + 0x12], 0
jne 0x599f69
cmp dword [ebp + 0x1c], 0
mov esi, dword [esp + 0xc]
jne 0x599f6d
inc dword [ecx + 0x2c]
mov edx, dword [ecx + 0x2c]
mov ecx, dword [esi + 0x6c]
mov dword [esp + 0xbc], edx
cmp dword [esi + 0x70], ecx
jg 0x599f30
push 0
push edx
push 0
mov edx, 0x45
mov ecx, esi
call fcn.00554830
mov ecx, dword [esp + 0x1c]
add esp, 0xc
jmp 0x599f6d
mov edi, dword [esp + 0x30]
lea eax, [ecx + 1]
mov dword [esi + 0x6c], eax
lea ecx, [ecx + ecx*4]
mov eax, dword [esi + 0x68]
mov dword [eax + ecx*4], 0x45
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]
jmp 0x599f6d
mov esi, dword [esp + 0xc]
mov edx, dword [esp + 0x14]
test byte [edx + 0x24], 0x80
jne 0x59a06f
mov ecx, dword [esi + 0x6c]
cmp dword [esi + 0x70], ecx
jg 0x599fa1
push dword [esp + 0x20]
mov edx, 0x48
mov ecx, esi
push dword [esp + 0x88]
push 0
call fcn.00554830
add esp, 0xc
jmp 0x599fd7
mov edx, dword [esp + 0x84]
lea eax, [ecx + 1]
mov dword [esi + 0x6c], eax
lea ecx, [ecx + ecx*4]
mov eax, dword [esi + 0x68]
mov dword [eax + ecx*4 + 8], edx
mov edx, dword [esp + 0x20]
mov dword [eax + ecx*4], 0x48
mov dword [eax + ecx*4 + 4], 0
mov dword [eax + ecx*4 + 0xc], edx
mov dword [eax + ecx*4 + 0x10], 0
cmp dword [ebp + 0x1c], 0
je 0x59a1a9
mov ecx, dword [esp + 0x10]
push 0x10
push dword [esp + 0x60]
mov esi, 1
mov dword [esp + 0x4c], 0
push dword [ebp + 0xc]
mov dword [esp + 0x60], esi
push ecx
call fcn.0056f7f0
mov eax, dword [esp + 0xbc]
add esp, 0x10
mov dword [esp + 0x68], eax
mov eax, dword [esp + 0xa8]
mov dword [esp + 0xc8], 0
mov dword [esp + 0xb0], eax
mov eax, dword [esp + 0x18]
mov ecx, dword [esp + 0x14]
test byte [ecx + 0x24], 0x80
jne 0x59a333
mov edx, dword [esp + 0xc]
mov ecx, dword [edx + 0x6c]
cmp dword [edx + 0x70], ecx
jg 0x59a27e
mov ecx, dword [esp + 0xc]
mov edx, 0x7f
push 0
push dword [esp + 0x24]
push eax
call fcn.00554830
mov edx, dword [esp + 0x18]
add esp, 0xc
jmp 0x59a2b5
mov eax, dword [esp + 0x38]
movzx esi, word [eax + 0x32]
mov eax, dword [ecx + 0x2c]
mov dword [esp + 0x80], esi
movsx esi, si
lea edx, [eax + 1]
inc eax
add eax, esi
mov dword [esp + 0x28], edx
cmp dword [ebp + 0x1c], 0
mov dword [esp + 0x34], eax
mov dword [ecx + 0x2c], eax
jne 0x599fe5
mov eax, dword [ecx + 0x28]
dec edx
mov dword [esp + 0x58], eax
add edx, esi
inc eax
mov dword [ecx + 0x28], eax
mov eax, dword [esp + 0xc]
mov ecx, dword [eax + 0x6c]
cmp dword [eax + 0x70], ecx
jg 0x59a0d1
push edx
push dword [esp + 0x2c]
mov edx, 0x48
mov ecx, eax
push 0
call fcn.00554830
add esp, 0xc
jmp 0x59a10a
mov edi, dword [esp + 0xc]
lea eax, [ecx + 1]
lea ecx, [ecx + ecx*4]
mov dword [edi + 0x6c], eax
mov eax, edi
mov edi, dword [esp + 0x28]
mov eax, dword [eax + 0x68]
mov dword [eax + ecx*4 + 8], edi
mov edi, dword [esp + 0x30]
mov dword [eax + ecx*4], 0x48
mov dword [eax + ecx*4 + 4], 0
mov dword [eax + ecx*4 + 0xc], edx
mov dword [eax + ecx*4 + 0x10], 0
mov ecx, dword [esp + 0xc]
mov edx, dword [ecx + 0x6c]
mov dword [esp + 0x60], edx
cmp dword [ecx + 0x70], edx
jg 0x59a134
push 0
push esi
push dword [esp + 0x60]
mov edx, 0x64
call fcn.00554830
add esp, 0xc
mov dword [esp + 0x60], eax
jmp 0x59a167
lea eax, [edx + 1]
mov dword [ecx + 0x6c], eax
lea ecx, [edx + edx*4]
mov eax, dword [esp + 0xc]
mov edx, dword [esp + 0x58]
mov eax, dword [eax + 0x68]
mov dword [eax + ecx*4], 0x64
mov dword [eax + ecx*4 + 4], edx
mov dword [eax + ecx*4 + 8], esi
mov dword [eax + ecx*4 + 0xc], 0
mov dword [eax + ecx*4 + 0x10], 0
mov eax, dword [esp + 0x10]
mov ecx, eax
mov edx, dword [esp + 0x38]
mov esi, dword [eax + 8]
call fcn.0057bca0
mov edx, eax
test edx, edx
je 0x59a1a9
mov ecx, dword [esi]
cmp byte [ecx + 0x51], 0
je 0x59a197
push edx
mov edx, 0xfffffff7
call fcn.00555350
add esp, 4
jmp 0x59a1a9
mov eax, dword [esi + 0x6c]
lea ecx, [eax + eax*4]
mov eax, dword [esi + 0x68]
mov byte [eax + ecx*4 - 0x13], 0xf7
mov dword [eax + ecx*4 - 4], edx
mov ecx, dword [esp + 0x10]
mov eax, 0x1004
cmp byte [ecx + 0x12], 0
jne 0x59a1dd
cmp dword [esp + 0x3c], 0
jne 0x59a1dd
cmp dword [esp + 0x50], 0
jne 0x59a1dd
cmp byte [esp + 0x6c], 0
jne 0x59a1dd
cmp dword [esp + 0x88], 0
mov edx, 0x100c
cmove eax, edx
push dword [esp + 0x98]
mov edx, dword [esp + 0x7c]
push eax
push 0
push 0
push dword [ebp + 0xc]
call fcn.005a9070
mov ecx, eax
add esp, 0x14
mov dword [esp + 0x44], ecx
test ecx, ecx
je 0x59b41a
movzx esi, byte [ecx + 0x2e]
mov eax, dword [ecx + 0x14]
mov edx, dword [ecx + 0x18]
mov ecx, dword [ecx + 0x30]
and ecx, 1
mov dword [esp + 0xb0], eax
mov dword [esp + 0x68], edx
mov dword [esp + 0x54], esi
mov dword [esp + 0xc8], ecx
cmp esi, 1
je 0x59a02c
mov ecx, dword [esp + 0x10]
mov eax, dword [ecx + 0x74]
test eax, eax
cmovne ecx, eax
mov eax, dword [esp + 0x18]
mov byte [ecx + 0x14], 1
cmp esi, 2
jne 0x59a030
test edx, edx
js 0x59a030
cmp edx, eax
je 0x59a030
mov eax, dword [esp + 0x7c]
xor ecx, ecx
sub eax, dword [esp + 0xa0]
cmp byte [eax + edx], cl
cmovne esi, ecx
mov dword [esp + 0x54], esi
jmp 0x59a02c
mov edi, dword [esp + 0x18]
lea eax, [ecx + 1]
mov dword [edx + 0x6c], eax
lea ecx, [ecx + ecx*4]
mov eax, dword [edx + 0x68]
mov dword [eax + ecx*4 + 4], edi
mov edi, dword [esp + 0x20]
mov dword [eax + ecx*4 + 8], edi
mov edi, dword [esp + 0x30]
mov dword [eax + ecx*4], 0x7f
mov dword [eax + ecx*4 + 0xc], 0
mov dword [eax + ecx*4 + 0x10], 0
test esi, esi
jne 0x59a4c9
mov eax, dword [esp + 0x10]
mov ecx, dword [esp + 0x70]
inc dword [eax + 0x2c]
mov eax, dword [eax + 0x2c]
mov dword [ecx + edi*4], eax
mov ecx, dword [edx + 0x6c]
cmp dword [edx + 0x70], ecx
jg 0x59a2f8
mov ecx, dword [esp + 0xc]
mov edx, 0x93
push esi
push dword [esp + 0x24]
push dword [esp + 0x8c]
call fcn.00554830
add esp, 0xc
jmp 0x59a4c9
lea eax, [ecx + 1]
mov dword [edx + 0x6c], eax
lea ecx, [ecx + ecx*4]
mov eax, dword [edx + 0x68]
mov edx, dword [esp + 0x84]
mov dword [eax + ecx*4 + 4], edx
mov edx, dword [esp + 0x20]
mov dword [eax + ecx*4], 0x93
mov dword [eax + ecx*4 + 8], edx
mov dword [eax + ecx*4 + 0xc], 0
mov dword [eax + ecx*4 + 0x10], 0
jmp 0x59a4c9
mov eax, dword [esp + 0x80]
xor esi, esi
movsx edi, ax
test edi, edi
jle 0x59a371
mov eax, dword [esp + 0x28]
mov edx, ecx
mov ecx, dword [esp + 0xc]
add eax, esi
push eax
mov eax, dword [esp + 0x3c]
mov eax, dword [eax + 4]
movsx eax, word [eax + esi*2]
push eax
push dword [esp + 0x20]
call fcn.0056d9b0
mov ecx, dword [esp + 0x20]
inc esi
add esp, 0xc
cmp esi, edi
jl 0x59a343
mov esi, dword [esp + 0x54]
test esi, esi
je 0x59a3ca
mov edx, dword [esp + 0x60]
test edx, edx
je 0x59a3b6
mov eax, dword [esp + 0xc]
mov ecx, dword [eax]
cmp byte [ecx + 0x51], 0
jne 0x59a3b6
mov eax, dword [eax + 0x68]
lea edx, [edx + edx*4]
push dword [eax + edx*4 + 0x10]
lea esi, [eax + edx*4]
movsx edx, byte [esi + 1]
call fcn.00555350
mov word [esi], 0xad
add esp, 4
mov dword [esi + 0x10], 0
mov esi, dword [esp + 0x54]
mov eax, dword [esp + 0x28]
mov dword [esp + 0xb4], edi
mov dword [esp + 0x34], eax
jmp 0x59a4c9
mov edx, dword [esp + 0x38]
mov ecx, dword [esp + 0x64]
call fcn.00583cc0
mov ecx, dword [esp + 0xc]
mov esi, eax
mov dword [esp + 0x80], esi
mov edx, dword [ecx + 0x6c]
cmp dword [ecx + 0x70], edx
jg 0x59a406
push dword [esp + 0x34]
mov edx, 0x5b
push edi
push dword [esp + 0x30]
call fcn.00554830
add esp, 0xc
mov edx, eax
jmp 0x59a440
mov esi, dword [esp + 0x28]
lea eax, [edx + 1]
mov dword [ecx + 0x6c], eax
lea ecx, [edx + edx*4]
mov eax, dword [esp + 0xc]
mov eax, dword [eax + 0x68]
mov dword [eax + ecx*4 + 4], esi
mov esi, dword [esp + 0x34]
mov dword [eax + ecx*4 + 0xc], esi
mov esi, dword [esp + 0x80]
mov dword [eax + ecx*4], 0x5b
mov dword [eax + ecx*4 + 8], edi
mov dword [eax + ecx*4 + 0x10], 0
push edi
push esi
mov esi, dword [esp + 0x14]
mov ecx, esi
call fcn.005555c0
mov edx, dword [esi + 0x6c]
add esp, 8
cmp dword [esi + 0x70], edx
jg 0x59a477
push dword [esp + 0x28]
mov edx, 0x83
mov ecx, esi
push dword [esp + 0x38]
push dword [esp + 0x60]
call fcn.00554830
add esp, 0xc
mov edx, eax
jmp 0x59a4ae
lea eax, [edx + 1]
mov dword [esi + 0x6c], eax
lea ecx, [edx + edx*4]
mov eax, dword [esi + 0x68]
mov esi, dword [esp + 0x58]
mov dword [eax + ecx*4 + 4], esi
mov esi, dword [esp + 0x34]
mov dword [eax + ecx*4 + 8], esi
mov esi, dword [esp + 0x28]
mov dword [eax + ecx*4 + 0xc], esi
mov esi, dword [esp + 0xc]
mov dword [eax + ecx*4], 0x83
mov dword [eax + ecx*4 + 0x10], 0
mov eax, dword [esi]
cmp byte [eax + 0x51], 0
jne 0x59a4c5
mov eax, dword [esi + 0x68]
lea ecx, [edx + edx*4]
mov byte [eax + ecx*4 + 1], 0xfd
mov dword [eax + ecx*4 + 0x10], edi
mov esi, dword [esp + 0x54]
cmp dword [ebp + 0x1c], 0
jne 0x59a6b5
cmp esi, 2
je 0x59a4e1
mov ecx, dword [esp + 0x44]
call fcn.005a9bc0
mov eax, dword [esp + 0x94]
mov edi, dword [esp + 0xb0]
test eax, eax
jne 0x59a604
mov edx, dword [esp + 0x54]
xor esi, esi
test edx, edx
je 0x59a52d
test edi, edi
js 0x59a514
mov eax, dword [esp + 0x7c]
sub eax, dword [esp + 0xa0]
mov byte [eax + edi], 0
mov ecx, dword [esp + 0x68]
test ecx, ecx
js 0x59a531
mov eax, dword [esp + 0x7c]
sub eax, dword [esp + 0xa0]
mov byte [eax + ecx], 0
jmp 0x59a531
mov ecx, dword [esp + 0x68]
cmp edx, 2
jne 0x59a5a1
xor eax, eax
test ecx, ecx
mov ecx, dword [esp + 0x74]
setns al
sub ecx, eax
test ecx, ecx
jle 0x59a5a1
mov ecx, dword [esp + 0xc]
mov esi, dword [ecx + 0x6c]
cmp dword [ecx + 0x70], esi
jg 0x59a56a
push 0
push 0
push 0
mov edx, 0x11
call fcn.00554830
add esp, 0xc
mov esi, eax
jmp 0x59a5a1
lea eax, [esi + 1]
mov dword [ecx + 0x6c], eax
lea ecx, [esi + esi*4]
mov eax, dword [esp + 0xc]
mov eax, dword [eax + 0x68]
mov dword [eax + ecx*4], 0x11
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 edx, dword [esp + 0x14]
mov ecx, dword [esp + 0x10]
push 0
push 0
push dword [esp + 0x84]
push dword [esp + 0xac]
push 0
push 0x61
call fcn.00587530
add esp, 0x18
test esi, esi
je 0x59a5f9
mov eax, dword [esp + 0xc]
mov edx, dword [eax + 0x6c]
mov eax, dword [eax]
cmp byte [eax + 0x51], 0
je 0x59a5e1
mov eax, 0x7349c4
jmp 0x59a5f6
test esi, esi
lea eax, [edx - 1]
cmovns eax, esi
lea ecx, [eax + eax*4]
mov eax, dword [esp + 0xc]
mov eax, dword [eax + 0x68]
lea eax, [eax + ecx*4]
mov dword [eax + 8], edx
mov eax, dword [esp + 0x94]
mov esi, dword [esp + 0x54]
test esi, esi
je 0x59a737
test eax, eax
jne 0x59a642
mov eax, dword [esp + 0x18]
cmp edi, eax
je 0x59a642
mov edi, dword [esp + 0x5c]
cmp dword [esp + 0x68], eax
je 0x59a646
push dword [esp + 0xb4]
mov ecx, dword [esp + 0x10]
mov edx, 0x1d
push dword [esp + 0x38]
push edi
push eax
call fcn.00554e80
add esp, 0x10
jmp 0x59a646
mov edi, dword [esp + 0x5c]
cmp esi, 1
je 0x59a659
mov eax, dword [esp + 0x10]
dec dword [eax + 0x38]
mov eax, dword [eax + 0x38]
mov dword [esp + 0x40], eax
mov esi, dword [esp + 0xc]
cmp dword [esp + 0x38], 0
mov edx, dword [esp + 0x20]
cmovne edx, dword [esp + 0x34]
mov ecx, dword [esi + 0x6c]
cmp dword [esi + 0x70], ecx
jg 0x59a68a
push 0
push edi
push edx
mov edi, esi
mov edx, 0x32
mov ecx, edi
call fcn.00554830
add esp, 0xc
jmp 0x59a6b9
lea eax, [ecx + 1]
mov dword [esi + 0x6c], eax
lea ecx, [ecx + ecx*4]
mov eax, dword [esi + 0x68]
mov dword [eax + ecx*4], 0x32
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 edi, dword [esp + 0xc]
cmp byte [esp + 0x1f], 0
mov esi, dword [esp + 0x10]
je 0x59a97a
mov edx, dword [esp + 0x4c]
mov ecx, esi
push edx
mov edx, dword [esp + 0xa8]
call fcn.0056df10
mov edx, dword [esp + 0x50]
add esp, 4
cmp eax, edx
je 0x59a712
mov ecx, dword [esi + 8]
test ecx, ecx
je 0x59a712
push edx
push eax
mov eax, dword [esp + 0xac]
mov edx, dword [eax + 4]
and edx, 0x200000
neg edx
sbb edx, edx
add edx, 0x4e
call fcn.005549a0
mov edx, dword [esp + 0x54]
add esp, 8
mov ecx, dword [edi + 0x6c]
cmp dword [edi + 0x70], ecx
jg 0x59a94b
push 0
push 0
push edx
mov edx, 0xf
mov ecx, edi
call fcn.00554830
add esp, 0xc
jmp 0x59a97a
cmp dword [esp + 0x38], 0
mov edi, dword [esp + 0xc]
je 0x59a889
mov eax, dword [esp + 0x10]
dec dword [eax + 0x38]
mov ecx, dword [edi + 0x6c]
mov esi, dword [eax + 0x38]
mov dword [esp + 0x40], esi
cmp dword [edi + 0x70], ecx
jg 0x59a777
push 0
push dword [esp + 0x60]
mov edx, 0x25
mov ecx, edi
push dword [esp + 0x60]
call fcn.00554830
add esp, 0xc
jmp 0x59a7aa
mov edx, dword [esp + 0x58]
lea eax, [ecx + 1]
mov dword [edi + 0x6c], eax
lea ecx, [ecx + ecx*4]
mov eax, dword [edi + 0x68]
mov dword [eax + ecx*4 + 4], edx
mov edx, dword [esp + 0x5c]
mov dword [eax + ecx*4], 0x25
mov dword [eax + ecx*4 + 8], edx
mov dword [eax + ecx*4 + 0xc], 0
mov dword [eax + ecx*4 + 0x10], 0
mov ecx, dword [edi + 0x6c]
mov dword [esp + 0xb8], ecx
cmp dword [edi + 0x70], ecx
jg 0x59a7db
push 0
push dword [esp + 0x38]
mov edx, 0x7e
mov ecx, edi
push dword [esp + 0x60]
call fcn.00554830
add esp, 0xc
mov dword [esp + 0xb8], eax
jmp 0x59a80e
mov edx, dword [esp + 0x58]
lea eax, [ecx + 1]
mov dword [edi + 0x6c], eax
lea ecx, [ecx + ecx*4]
mov eax, dword [edi + 0x68]
mov dword [eax + ecx*4 + 4], edx
mov edx, dword [esp + 0x34]
mov dword [eax + ecx*4], 0x7e
mov dword [eax + ecx*4 + 8], edx
mov dword [eax + ecx*4 + 0xc], 0
mov dword [eax + ecx*4 + 0x10], 0
mov edx, dword [edi + 0x6c]
cmp dword [edi + 0x70], edx
jg 0x59a832
push dword [esp + 0x34]
mov edx, 0x1d
mov ecx, edi
push esi
push dword [esp + 0x20]
call fcn.00554830
add esp, 0xc
mov edx, eax
jmp 0x59a865
lea eax, [edx + 1]
mov dword [edi + 0x6c], eax
lea ecx, [edx + edx*4]
mov eax, dword [edi + 0x68]
mov edi, dword [esp + 0x18]
mov dword [eax + ecx*4 + 8], esi
mov esi, dword [esp + 0x34]
mov dword [eax + ecx*4 + 4], edi
mov edi, dword [esp + 0xc]
mov dword [eax + ecx*4], 0x1d
mov dword [eax + ecx*4 + 0xc], esi
mov dword [eax + ecx*4 + 0x10], 0
mov eax, dword [edi]
cmp byte [eax + 0x51], 0
jne 0x59a6b9
mov eax, dword [edi + 0x68]
lea ecx, [edx + edx*4]
mov byte [eax + ecx*4 + 1], 0xfd
mov dword [eax + ecx*4 + 0x10], 0
jmp 0x59a6b9
mov esi, dword [edi + 0x6c]
mov dword [esp + 0x40], esi
cmp dword [edi + 0x70], esi
jg 0x59a8bf
push dword [esp + 0x20]
mov edx, 0x2a
mov ecx, edi
push dword [esp + 0x60]
push dword [esp + 0x8c]
call fcn.00554830
mov edx, dword [esp + 0x2c]
mov esi, eax
add esp, 0xc
mov dword [esp + 0x40], esi
jmp 0x59a8f5
mov edx, dword [esp + 0x84]
lea eax, [esi + 1]
mov dword [edi + 0x6c], eax
lea ecx, [esi + esi*4]
mov eax, dword [edi + 0x68]
mov dword [eax + ecx*4 + 4], edx
mov edx, dword [esp + 0x5c]
mov dword [eax + ecx*4 + 8], edx
mov edx, dword [esp + 0x20]
mov dword [eax + ecx*4], 0x2a
mov dword [eax + ecx*4 + 0xc], edx
mov dword [eax + ecx*4 + 0x10], 0
mov ecx, dword [edi + 0x6c]
cmp dword [edi + 0x70], ecx
jg 0x59a917
push edx
push esi
push dword [esp + 0x20]
mov edx, 0x20
mov ecx, edi
call fcn.00554830
add esp, 0xc
jmp 0x59a6b9
mov edx, dword [esp + 0x18]
lea eax, [ecx + 1]
mov dword [edi + 0x6c], eax
lea ecx, [ecx + ecx*4]
mov eax, dword [edi + 0x68]
mov dword [eax + ecx*4 + 4], edx
mov edx, dword [esp + 0x20]
mov dword [eax + ecx*4], 0x20
mov dword [eax + ecx*4 + 8], esi
mov dword [eax + ecx*4 + 0xc], edx
mov dword [eax + ecx*4 + 0x10], 0
jmp 0x59a6b9
lea eax, [ecx + 1]
mov dword [edi + 0x6c], eax
lea ecx, [ecx + ecx*4]
mov eax, dword [edi + 0x68]
mov dword [eax + ecx*4], 0xf
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
cmp byte [esp + 0x27], 0
jne 0x59a9d3
cmp dword [esp + 0x50], 0
jne 0x59a9da
mov eax, dword [esp + 0x3c]
test eax, eax
je 0x59ab2b
xor esi, esi
push dword [ebp + 0x10]
mov edx, dword [esp + 0x40]
push dword [esp + 0x18]
mov ecx, dword [esp + 0x18]
push 3
push 0
push dword [ebp + 8]
call fcn.005993e0
or esi, eax
xor ecx, ecx
mov eax, dword [esp + 0x28]
add esp, 0x14
mov dword [esp + 0x80], esi
xor esi, esi
cmp cx, word [eax + 0x2a]
jge 0x59aabe
xor edi, edi
jmp 0x59a9f4
cmp dword [esp + 0x50], 0
je 0x59a994
mov edx, dword [esp + 0x14]
mov ecx, esi
call fcn.00583060
mov esi, eax
jmp 0x59a996
mov eax, dword [esp + 0x14]
mov edx, esi
mov ecx, eax
call fcn.00576500
movsx edx, ax
add edx, dword [esp + 0x8c]
cmp dword [esp + 0x80], 0xffffffff
mov dword [esp + 0x60], edx
je 0x59aa94
cmp esi, 0x20
jge 0x59aa2c
mov eax, 1
mov ecx, esi
shl eax, cl
test dword [esp + 0x80], eax
jne 0x59aa94
mov eax, dword [esp + 0x14]
mov eax, dword [eax + 4]
test byte [eax + edi + 0x10], 1
jne 0x59aa94
mov eax, dword [esp + 0xc]
mov ecx, dword [eax + 0x6c]
cmp dword [eax + 0x70], ecx
jg 0x59aa59
push 0
push edx
push 0
mov edx, 0x48
mov ecx, eax
call fcn.00554830
jmp 0x59aaa7
mov edx, dword [esp + 0xc]
lea eax, [ecx + 1]
lea ecx, [ecx + ecx*4]
mov dword [edx + 0x6c], eax
mov eax, edx
mov edx, dword [esp + 0x60]
mov eax, dword [eax + 0x68]
mov dword [eax + ecx*4], 0x48
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
jmp 0x59aaaa
mov ecx, dword [esp + 0xc]
push edx
mov edx, dword [esp + 0x18]
push esi
push dword [esp + 0x20]
call fcn.0056d9b0
add esp, 0xc
mov eax, dword [esp + 0x14]
inc esi
add edi, 0x14
movsx eax, word [eax + 0x2a]
cmp esi, eax
jl 0x59a9f0
cmp byte [esp + 0x1f], 0
jne 0x59ab27
cmp dword [esp + 0x38], 0
jne 0x59ab27
mov esi, dword [esp + 0xc]
mov ecx, dword [esi + 0x6c]
cmp dword [esi + 0x70], ecx
jg 0x59aaf4
mov edx, dword [esp + 0x4c]
mov ecx, esi
push 0
push edx
push dword [esp + 0x28]
mov edx, 0x4d
call fcn.00554830
add esp, 0xc
jmp 0x59ab27
mov edx, dword [esp + 0x20]
lea eax, [ecx + 1]
mov dword [esi + 0x6c], eax
lea ecx, [ecx + ecx*4]
mov eax, dword [esi + 0x68]
mov dword [eax + ecx*4 + 4], edx
mov edx, dword [esp + 0x4c]
mov dword [eax + ecx*4], 0x4d
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]
push dword [ebp + 0x10]
mov ecx, dword [esp + 0x14]
mov edx, eax
push dword [esp + 0x18]
push 1
push 1
push dword [ebp + 8]
call fcn.005993e0
mov ecx, dword [esp + 0xa4]
xor edx, edx
mov dword [esp + 0x3c], eax
add esp, 0x14
mov eax, dword [esp + 0x14]
xor edi, edi
mov esi, ecx
cmp dx, word [eax + 0x2a]
mov edx, dword [esp + 0x28]
jge 0x59ace5
xor ecx, ecx
mov dword [esp + 0x60], ecx
movsx eax, word [eax + 0x28]
cmp edi, eax
jne 0x59abd4
mov eax, dword [esp + 0xc]
mov ecx, dword [eax + 0x6c]
cmp dword [eax + 0x70], ecx
jg 0x59ab9a
push 0
push esi
push 0
mov edx, 0x48
mov ecx, eax
call fcn.00554830
jmp 0x59acb8
mov edx, dword [esp + 0xc]
lea eax, [ecx + 1]
lea ecx, [ecx + ecx*4]
mov dword [edx + 0x6c], eax
mov eax, edx
mov eax, dword [eax + 0x68]
mov dword [eax + ecx*4], 0x48
mov dword [eax + ecx*4 + 4], 0
mov dword [eax + ecx*4 + 8], esi
mov dword [eax + ecx*4 + 0xc], 0
mov dword [eax + ecx*4 + 0x10], 0
jmp 0x59acbb
mov eax, dword [esp + 0x14]
mov eax, dword [eax + 4]
movzx eax, word [eax + ecx + 0x10]
test al, 0x60
je 0x59abf3
test al, 0x20
lea eax, [esi - 1]
cmove eax, esi
mov esi, eax
jmp 0x59acbf
mov eax, dword [esp + 0x2c]
mov eax, dword [eax + edi*4]
test eax, eax
js 0x59ac58
mov ecx, dword [ebp + 8]
lea eax, [eax + eax*4]
push esi
mov eax, dword [ecx + eax*4 + 4]
mov edx, eax
mov ecx, dword [esp + 0x14]
mov dword [esp + 0x90], eax
call fcn.0056df10
add esp, 4
cmp eax, esi
je 0x59acbb
mov ecx, dword [esp + 0x10]
mov ecx, dword [ecx + 8]
test ecx, ecx
je 0x59acbb
mov edx, dword [esp + 0x8c]
push esi
push eax
mov edx, dword [edx + 4]
and edx, 0x200000
neg edx
sbb edx, edx
add edx, 0x4e
call fcn.005549a0
add esp, 8
jmp 0x59acbb
test dword [esp + 0xc0], 1
je 0x59ac9a
cmp edi, 0x1f
jg 0x59ac9a
mov eax, 1
mov ecx, edi
shl eax, cl
test edx, eax
jne 0x59ac9a
mov eax, dword [esp + 0xc]
mov ecx, dword [eax + 0x6c]
cmp dword [eax + 0x70], ecx
jg 0x59ab9a
push 0
push esi
push 0
mov edx, 0x48
mov ecx, eax
call fcn.00554830
jmp 0x59acb8
mov edx, dword [esp + 0x14]
mov ecx, dword [esp + 0xc]
push esi
push edi
push dword [esp + 0x20]
call fcn.0056d9b0
mov dword [esp + 0xd4], 0
add esp, 0xc
mov edx, dword [esp + 0x28]
mov eax, dword [esp + 0x14]
inc edi
add dword [esp + 0x60], 0x14
inc esi
mov ecx, dword [esp + 0x60]
movsx eax, word [eax + 0x2a]
cmp edi, eax
mov eax, dword [esp + 0x14]
jl 0x59ab70
mov ecx, dword [esp + 0x90]
test byte [eax + 0x24], 0x60
je 0x59acfe
mov edx, ecx
mov ecx, dword [esp + 0x10]
push eax
call fcn.00583e60
mov eax, dword [esp + 0x18]
add esp, 4
test byte [esp + 0xc0], 1
je 0x59aeb0
push dword [esp + 0x90]
mov edi, dword [esp + 0x10]
mov edx, eax
mov ecx, edi
call fcn.00583d70
mov esi, dword [esp + 0x44]
add esp, 4
mov edx, dword [esp + 0x3c]
mov ecx, dword [esp + 0x10]
push esi
push dword [ebp + 0x10]
push dword [esp + 0x28]
push dword [esp + 0x20]
push 1
push dword [ebp + 8]
push 0x7f
call fcn.00599350
mov edx, dword [edi + 0x6c]
add esp, 0x1c
cmp dword [esp + 0x38], 0
mov eax, dword [edi + 0x70]
je 0x59adca
cmp eax, edx
jg 0x59ad77
push dword [esp + 0x34]
mov edx, 0x1d
mov ecx, edi
push esi
push dword [esp + 0x20]
call fcn.00554830
add esp, 0xc
mov edx, eax
jmp 0x59adaa
lea eax, [edx + 1]
mov dword [edi + 0x6c], eax
lea ecx, [edx + edx*4]
mov eax, dword [edi + 0x68]
mov edi, dword [esp + 0x18]
mov dword [eax + ecx*4 + 8], esi
mov esi, dword [esp + 0x34]
mov dword [eax + ecx*4 + 4], edi
mov edi, dword [esp + 0xc]
mov dword [eax + ecx*4], 0x1d
mov dword [eax + ecx*4 + 0xc], esi
mov dword [eax + ecx*4 + 0x10], 0
mov eax, dword [edi]
cmp byte [eax + 0x51], 0
jne 0x59ae17
mov eax, dword [edi + 0x68]
lea ecx, [edx + edx*4]
mov edx, dword [esp + 0xb4]
mov byte [eax + ecx*4 + 1], 0xfd
mov dword [eax + ecx*4 + 0x10], edx
jmp 0x59ae17
cmp eax, edx
jg 0x59ade8
push dword [esp + 0x20]
mov edx, 0x20
mov ecx, edi
push esi
push dword [esp + 0x20]
call fcn.00554830
add esp, 0xc
jmp 0x59ae17
lea eax, [edx + 1]
mov dword [edi + 0x6c], eax
lea ecx, [edx + edx*4]
mov eax, dword [edi + 0x68]
mov edx, dword [esp + 0x18]
mov dword [eax + ecx*4 + 4], edx
mov edx, dword [esp + 0x20]
mov dword [eax + ecx*4], 0x20
mov dword [eax + ecx*4 + 8], esi
mov dword [eax + ecx*4 + 0xc], edx
mov dword [eax + ecx*4 + 0x10], 0
mov edx, dword [esp + 0x14]
xor ecx, ecx
mov eax, dword [esp + 0x90]
xor esi, esi
mov edi, eax
cmp cx, word [edx + 0x2a]
jge 0x59ae97
mov dword [esp + 0x8c], ecx
mov eax, dword [edx + 4]
movzx eax, word [ecx + eax + 0x10]
test al, 0x60
je 0x59ae4d
test al, 0x20
lea eax, [edi - 1]
cmove eax, edi
mov edi, eax
jmp 0x59ae7c
mov eax, dword [esp + 0x2c]
cmp dword [eax + esi*4], 0
jge 0x59ae7c
movsx eax, word [edx + 0x28]
cmp esi, eax
je 0x59ae7c
mov ecx, dword [esp + 0xc]
push edi
push esi
push dword [esp + 0x20]
call fcn.0056d9b0
mov ecx, dword [esp + 0x98]
add esp, 0xc
mov edx, dword [esp + 0x14]
movsx eax, word [edx + 0x2a]
inc esi
add ecx, 0x14
inc edi
mov dword [esp + 0x8c], ecx
cmp esi, eax
jl 0x59ae35
mov eax, dword [esp + 0x90]
test byte [edx + 0x24], 0x60
mov esi, dword [esp + 0x10]
je 0x59aeb8
push edx
mov edx, eax
mov ecx, esi
call fcn.00583e60
add esp, 4
jmp 0x59aeb4
mov esi, dword [esp + 0x10]
mov edx, dword [esp + 0x14]
cmp dword [esp + 0x94], 0
mov edi, dword [esp + 0x40]
jne 0x59b1a0
push 0
push dword [esp + 0x30]
lea eax, [esp + 0x90]
mov ecx, esi
push eax
push edi
push dword [ebp + 0x10]
push dword [esp + 0x80]
push dword [esp + 0x38]
push dword [esp + 0x68]
push dword [esp + 0xb8]
push dword [esp + 0x3c]
push dword [esp + 0x98]
call fcn.005854a0
add esp, 0x2c
cmp dword [esp + 0x88], 0
jne 0x59af1c
cmp byte [esp + 0x6c], 0
je 0x59b001
cmp dword [esp + 0x38], 0
mov ecx, dword [esp + 0xc]
mov esi, dword [ecx + 0x6c]
mov eax, dword [ecx + 0x70]
je 0x59afaa
cmp eax, esi
jg 0x59af4f
push dword [esp + 0x34]
mov edx, 0x1d
push edi
push dword [esp + 0x20]
call fcn.00554830
add esp, 0xc
mov esi, eax
jmp 0x59af82
mov edx, dword [esp + 0x18]
lea eax, [esi + 1]
mov dword [ecx + 0x6c], eax
lea ecx, [esi + esi*4]
mov eax, dword [esp + 0xc]
mov eax, dword [eax + 0x68]
mov dword [eax + ecx*4 + 4], edx
mov edx, dword [esp + 0x34]
mov dword [eax + ecx*4], 0x1d
mov dword [eax + ecx*4 + 8], edi
mov dword [eax + ecx*4 + 0xc], edx
mov dword [eax + ecx*4 + 0x10], 0
mov eax, dword [esp + 0xc]
mov eax, dword [eax]
cmp byte [eax + 0x51], 0
jne 0x59b001
mov edx, dword [esp + 0xb4]
lea ecx, [esi + esi*4]
mov esi, dword [esp + 0xc]
mov eax, dword [esi + 0x68]
mov byte [eax + ecx*4 + 1], 0xfd
mov dword [eax + ecx*4 + 0x10], edx
jmp 0x59b005
cmp eax, esi
jg 0x59afcc
push dword [esp + 0x20]
mov esi, dword [esp + 0x10]
mov edx, 0x20
push edi
push dword [esp + 0x20]
mov ecx, esi
call fcn.00554830
add esp, 0xc
jmp 0x59b005
mov edx, dword [esp + 0x18]
lea eax, [esi + 1]
mov dword [ecx + 0x6c], eax
lea ecx, [esi + esi*4]
mov esi, dword [esp + 0xc]
mov eax, dword [esi + 0x68]
mov dword [eax + ecx*4 + 4], edx
mov edx, dword [esp + 0x20]
mov dword [eax + ecx*4], 0x20
mov dword [eax + ecx*4 + 8], edi
mov dword [eax + ecx*4 + 0xc], edx
mov dword [eax + ecx*4 + 0x10], 0
jmp 0x59b009
mov esi, dword [esp + 0xc]
mov edx, dword [esp + 0x20]
cmp dword [esp + 0x50], 0
je 0x59b02e
push dword [esp + 0x9c]
mov ecx, dword [esp + 0x14]
push dword [esp + 0x30]
push 0
push edx
mov edx, dword [esp + 0x24]
call fcn.00582a70
add esp, 0x10
mov edx, dword [esp + 0x14]
mov ecx, dword [esp + 0x10]
push 0xffffffffffffffff
push dword [esp + 0x74]
push dword [esp + 0xa0]
push dword [esp + 0x24]
call fcn.0057d880
add esp, 0x10
cmp dword [esp + 0xc8], 0
je 0x59b0ad
mov ecx, dword [esi + 0x6c]
cmp dword [esi + 0x70], ecx
jg 0x59b07a
push 0
push 0
push dword [esp + 0x20]
mov edx, 0x87
mov ecx, esi
call fcn.00554830
add esp, 0xc
jmp 0x59b0ad
mov edx, dword [esp + 0x18]
lea eax, [ecx + 1]
mov dword [esi + 0x6c], eax
lea ecx, [ecx + ecx*4]
mov eax, dword [esi + 0x68]
mov dword [eax + ecx*4], 0x87
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 edx, dword [esp + 0x50]
cmp edx, 1
jg 0x59b0bd
cmp byte [esp + 0x6c], 0
je 0x59b115
mov ecx, dword [esi + 0x6c]
cmp dword [esi + 0x70], ecx
jg 0x59b0e2
push 0
push 0
push dword [esp + 0x20]
mov edx, 0x7a
mov ecx, esi
call fcn.00554830
mov edx, dword [esp + 0x5c]
add esp, 0xc
jmp 0x59b115
lea eax, [ecx + 1]
mov dword [esi + 0x6c], eax
lea ecx, [ecx + ecx*4]
mov eax, dword [esi + 0x68]
mov esi, dword [esp + 0x18]
mov dword [eax + ecx*4], 0x7a
mov dword [eax + ecx*4 + 4], esi
mov dword [eax + ecx*4 + 8], 0
mov dword [eax + ecx*4 + 0xc], 0
mov dword [eax + ecx*4 + 0x10], 0
test edx, edx
je 0x59b13a
push dword [esp + 0x9c]
mov edx, dword [esp + 0x18]
push dword [esp + 0x30]
mov ecx, dword [esp + 0x18]
push dword [esp + 0x54]
push 0
call fcn.00582a70
add esp, 0x10
mov esi, dword [esp + 0x54]
xor eax, eax
mov edx, dword [esp + 0x14]
cmp esi, 2
mov ecx, dword [esp + 0x10]
push 0
sete al
push 0
lea eax, [eax*2 + 4]
push eax
push dword [esp + 0x7c]
push dword [esp + 0x5c]
push dword [esp + 0xac]
push dword [esp + 0x30]
call fcn.005872f0
add esp, 0x1c
cmp dword [esp + 0x50], 0
je 0x59b1a4
push dword [esp + 0x9c]
mov edx, dword [esp + 0x18]
push dword [esp + 0x30]
mov ecx, dword [esp + 0x18]
push dword [esp + 0x28]
push dword [ebp + 8]
call fcn.00583b30
add esp, 0x10
jmp 0x59b1a4
mov esi, dword [esp + 0x54]
mov eax, dword [esp + 0xbc]
test eax, eax
je 0x59b209
mov edx, dword [esp + 0xc]
mov ecx, dword [edx + 0x6c]
cmp dword [edx + 0x70], ecx
jg 0x59b1d3
mov ecx, dword [esp + 0xc]
mov edx, 0x52
push 0
push 1
push eax
call fcn.00554830
add esp, 0xc
jmp 0x59b209
lea eax, [ecx + 1]
mov dword [edx + 0x6c], eax
lea ecx, [ecx + ecx*4]
mov eax, dword [edx + 0x68]
mov edx, dword [esp + 0xbc]
mov dword [eax + ecx*4], 0x52
mov dword [eax + ecx*4 + 4], edx
mov dword [eax + ecx*4 + 8], 1
mov dword [eax + ecx*4 + 0xc], 0
mov dword [eax + ecx*4 + 0x10], 0
mov edx, dword [esp + 0x3c]
mov ecx, dword [esp + 0x10]
push edi
push dword [ebp + 0x10]
push dword [esp + 0x28]
push dword [esp + 0x20]
push 2
push dword [ebp + 8]
push 0x7f
call fcn.00599350
add esp, 0x1c
cmp esi, 1
je 0x59b34a
cmp esi, 2
mov esi, dword [esp + 0xc]
jne 0x59b27b
mov ecx, dword [esi + 0xc]
not edi
mov eax, dword [ecx + 0x3c]
add eax, dword [ecx + 0x38]
jns 0x59b264
push edi
mov edx, esi
call fcn.00554f80
mov ecx, dword [esp + 0x48]
add esp, 4
call fcn.005a9bc0
jmp 0x59b34e
mov ecx, dword [ecx + 0x40]
mov eax, dword [esi + 0x6c]
mov dword [ecx + edi*4], eax
mov ecx, dword [esp + 0x44]
call fcn.005a9bc0
jmp 0x59b34e
cmp dword [esp + 0x38], 0
je 0x59b30b
mov ecx, dword [esi + 0xc]
not edi
mov eax, dword [ecx + 0x3c]
add eax, dword [ecx + 0x38]
jns 0x59b2a0
push edi
mov edx, esi
call fcn.00554f80
add esp, 4
jmp 0x59b2a9
mov ecx, dword [ecx + 0x40]
mov eax, dword [esi + 0x6c]
mov dword [ecx + edi*4], eax
mov ecx, dword [esi + 0x6c]
cmp dword [esi + 0x70], ecx
jg 0x59b2d3
mov edx, dword [esp + 0xb8]
mov ecx, esi
push 0
push edx
push dword [esp + 0x60]
mov edx, 5
call fcn.00554830
add esp, 0xc
jmp 0x59b34e
mov edx, dword [esp + 0x58]
lea eax, [ecx + 1]
mov dword [esi + 0x6c], eax
lea ecx, [ecx + ecx*4]
mov eax, dword [esi + 0x68]
mov dword [eax + ecx*4 + 4], edx
mov edx, dword [esp + 0xb8]
mov dword [eax + ecx*4], 5
mov dword [eax + ecx*4 + 8], edx
mov dword [eax + ecx*4 + 0xc], 0
mov dword [eax + ecx*4 + 0x10], 0
jmp 0x59b34e
mov ecx, dword [esi + 0x6c]
cmp dword [esi + 0x70], ecx
jg 0x59b329
push 0
push edi
push 0
mov edx, 0xb
mov ecx, esi
call fcn.00554830
add esp, 0xc
jmp 0x59b34e
lea eax, [ecx + 1]
mov dword [esi + 0x6c], eax
lea ecx, [ecx + ecx*4]
mov eax, dword [esi + 0x68]
mov dword [eax + ecx*4], 0xb
mov dword [eax + ecx*4 + 4], 0
mov dword [eax + ecx*4 + 8], edi
jmp 0x59b2f9
mov esi, dword [esp + 0xc]
mov ecx, dword [esi + 0xc]
mov edx, dword [esp + 0x5c]
not edx
mov eax, dword [ecx + 0x3c]
add eax, dword [ecx + 0x38]
jns 0x59b36c
push edx
mov edx, esi
call fcn.00554f80
add esp, 4
jmp 0x59b375
mov ecx, dword [ecx + 0x40]
mov eax, dword [esi + 0x6c]
mov dword [ecx + edx*4], eax
mov eax, dword [esp + 0x10]
cmp byte [eax + 0x12], 0
jne 0x59b398
cmp dword [eax + 0x78], 0
jne 0x59b398
cmp dword [ebp + 0x1c], 0
jne 0x59b398
cmp dword [eax + 0x70], 0
je 0x59b398
mov ecx, eax
call fcn.00584120
mov edx, dword [esp + 0xbc]
test edx, edx
je 0x59b41a
mov ecx, dword [esi + 0x6c]
cmp dword [esi + 0x70], ecx
jg 0x59b3c1
push 0
push 1
push edx
mov edx, 0x50
mov ecx, esi
call fcn.00554830
add esp, 0xc
jmp 0x59b3f0
lea eax, [ecx + 1]
mov dword [esi + 0x6c], eax
lea ecx, [ecx + ecx*4]
mov eax, dword [esi + 0x68]
mov dword [eax + ecx*4], 0x50
mov dword [eax + ecx*4 + 4], edx
mov dword [eax + ecx*4 + 8], 1
mov dword [eax + ecx*4 + 0xc], 0
mov dword [eax + ecx*4 + 0x10], 0
mov edx, 1
mov ecx, esi
call fcn.005568c0
mov eax, dword [esi]
cmp byte [eax + 0x51], 0
jne 0x59b41a
mov ecx, dword [esi + 0x74]
mov edx, str.rows_updated
push 0
push 1
push 0xffffffffffffffff
call fcn.00553c30
add esp, 0xc
mov eax, dword [esp + 0xc4]
test eax, eax
je 0x59b432
mov ecx, dword [esp + 0xa8]
mov dword [eax + 0xf0], ecx
mov edx, dword [esp + 0x2c]
mov ecx, dword [esp + 0x64]
call fcn.00535990
mov esi, dword [ebp + 0xc]
mov edx, dword [esp + 0x78]
mov ecx, dword [esp + 0x64]
call fcn.0057afd0
mov eax, dword [ebp + 8]
test eax, eax
je 0x59b461
mov ecx, dword [esp + 0x64]
mov edx, eax
call fcn.0056ae60
test esi, esi
je 0x59b470
mov ecx, dword [esp + 0x64]
mov edx, esi
call fcn.00569d30
pop edi
pop esi
mov esp, ebp
pop ebp
ret