Function at 0x1004d84a
Capabilities:
Encrypt data using speck
Reference sql statements
Resolve function by parsing pe exports

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff0
sub esp, 0x1a8
mov eax, dword [0x10165004]
xor eax, esp
mov dword [esp + 0x1a4], eax
push esi
push edi
mov edi, ecx
mov dword [esp + 0x1c], 0
xor cl, cl
mov dword [esp + 0x14], edi
mov byte [esp + 0x7b], cl
xorps xmm0, xmm0
mov dword [esp + 0x6c], 0
cmp dword [edi + 0xa0], 0
mov eax, dword [edi + 0x68]
mov esi, dword [edi + 0x58]
mov dword [esp + 0x64], eax
mov dword [esp + 0xc], eax
mov eax, dword [edi]
mov dword [esp + 0x10], eax
movlpd qword [esp + 0xc8], xmm0
mov dword [esp + 0x18], esi
mov cl, byte [eax + 0x54]
mov byte [esp + 0x58], cl
je 0x1004cb97
mov ecx, edi
call fcn.100451f0
mov eax, dword [esp + 0x10]
cmp dword [eax + 0x174], 0
je 0x1004cbc3
mov ecx, dword [eax + 0x17c]
xor edx, edx
mov eax, dword [edi + 0xb4]
div ecx
mov eax, dword [esp + 0x10]
sub ecx, edx
mov dword [esp + 0x84], 0
jmp 0x1004cbd1
or ecx, 0xffffffff
mov dword [esp + 0x84], 0xffffffff
cmp dword [edi + 0x24], 7
mov dword [esp + 0x80], ecx
je 0x10053a86
mov dword [edi + 0x24], 0
mov dword [edi + 0x38], 0
mov dword [edi + 0x3c], 0
cmp dword [eax + 0x128], 0
mov dword [eax + 0x1c8], 0
jne 0x10053a5c
mov eax, dword [edi + 0x20]
mov ecx, dword [esp + 0x64]
mov edx, dword [esp + 0xcc]
mov dword [esp + 0x12c], 0xf244
lea eax, [eax + eax*4]
lea eax, [ecx + eax*4]
mov ecx, dword [esp + 0xc8]
add ecx, 1
mov dword [esp + 0xc], eax
mov dword [esp + 0x88], ecx
mov cl, byte [eax]
adc edx, 0
mov dword [esp + 0xc4], edx
movzx edx, cl
mov byte [esp + 0x27], cl
mov dword [esp + 0x44], edx
cmp edx, 0xb5
ja case.0x1004cc65.89
jmp dword [edx*4 + 0x10053c58]
mov ecx, dword [esp + 0xc]
mov edx, 4
mov eax, dword [ecx + 4]
sub ecx, dword [esp + 0x64]
lea esi, [eax + eax*4]
mov eax, dword [esp + 0x18]
mov word [eax + esi*8 + 0x10], dx
mov eax, 0x66666667
imul ecx
mov ecx, dword [esp + 0x18]
sar edx, 3
mov eax, edx
shr eax, 0x1f
add eax, edx
cdq
mov dword [ecx + esi*8], eax
mov dword [ecx + esi*8 + 4], edx
jmp 0x10052e5d
mov eax, dword [eax + 4]
lea eax, [eax + eax*4]
test byte [esi + eax*8 + 0x10], 4
je 0x10051b9c
mov eax, dword [esi + eax*8]
mov ecx, dword [esp + 0x64]
lea eax, [eax + eax*4]
lea eax, [ecx + eax*4]
mov ecx, dword [esp + 0x88]
add eax, 0x14
mov edx, dword [esp + 0xc4]
jmp 0x1004cc34
mov edx, dword [esp + 0xc]
mov eax, dword [edx + 4]
lea ecx, [eax + eax*4]
mov eax, dword [edx + 0xc]
dec eax
cdq
mov dword [esi + ecx*8], eax
mov eax, 4
mov word [esi + ecx*8 + 0x10], ax
mov eax, dword [esp + 0xc]
mov dword [esi + ecx*8 + 4], edx
cmp dword [eax + 8], 0
jne 0x10052138
mov ecx, dword [esp + 0x88]
add eax, 0x14
mov edx, dword [esp + 0xc4]
jmp 0x1004cc34
mov ecx, dword [esp + 0xc]
mov edx, dword [esp + 0x64]
mov eax, dword [ecx + 4]
lea ecx, [eax + eax*4]
mov eax, dword [esi + ecx*8]
lea eax, [eax + eax*4]
mov eax, dword [edx + eax*4 + 8]
lea eax, [eax + eax*4]
lea eax, [eax - 5]
lea eax, [edx + eax*4]
xor edx, edx
mov word [esi + ecx*8 + 0x10], dx
mov ecx, dword [esp + 0x88]
add eax, 0x14
mov edx, dword [esp + 0xc4]
jmp 0x1004cc34
mov edx, dword [esp + 0xc]
mov ecx, 4
mov edi, dword [esp + 0x18]
mov eax, dword [edx + 4]
sub edx, dword [esp + 0x64]
lea esi, [eax + eax*4]
mov eax, dword [esp + 0x18]
mov word [eax + esi*8 + 0x10], cx
mov ecx, dword [eax + esi*8]
mov eax, 0x66666667
imul edx
sar edx, 3
mov eax, edx
shr eax, 0x1f
add eax, edx
cdq
mov dword [edi + esi*8], eax
mov eax, edi
mov edi, dword [esp + 0x14]
mov dword [eax + esi*8 + 4], edx
lea eax, [ecx + ecx*4]
mov ecx, dword [esp + 0x64]
mov esi, dword [esp + 0x18]
lea eax, [ecx + eax*4]
mov ecx, dword [esp + 0x88]
add eax, 0x14
mov edx, dword [esp + 0xc4]
jmp 0x1004cc34
mov eax, dword [eax + 0xc]
lea eax, [eax + eax*4]
test byte [esi + eax*8 + 0x10], 1
mov eax, dword [esp + 0xc]
je case.0x1004cc65.89
mov esi, dword [edi + 0xd0]
test esi, esi
je 0x10053488
cmp dword [eax + 4], 0
jne 0x10053488
push dword [edi + 0x2c]
mov eax, dword [esi + 4]
push dword [edi + 0x28]
mov ecx, dword [esp + 0x18]
dec dword [edi + 0xd8]
mov dword [edi + 0xd0], eax
call fcn.100489d0
add esp, 8
mov ecx, esi
call fcn.10045d90
mov ecx, dword [esp + 0xc]
cmp dword [ecx + 8], 4
jne 0x1004ce30
lea ecx, [eax + eax*4]
mov eax, dword [edi + 0x68]
mov eax, dword [eax + ecx*4 + 8]
dec eax
mov ecx, dword [edi + 0x68]
lea eax, [eax + eax*4]
mov esi, dword [edi + 0x58]
mov dword [esp + 0x64], ecx
mov dword [esp + 0x18], esi
lea eax, [ecx + eax*4]
mov ecx, dword [esp + 0x88]
add eax, 0x14
mov edx, dword [esp + 0xc4]
jmp 0x1004cc34
mov ecx, dword [esp + 0xc]
mov eax, dword [ecx + 8]
lea ecx, [eax + eax*4]
mov eax, dword [edi + 0x58]
lea ecx, [eax + ecx*8]
mov eax, 0x9000
test word [ecx + 0x10], ax
je 0x1004cea3
call fcn.1004ca00
mov ecx, eax
mov eax, dword [esp + 0xc]
mov eax, dword [eax + 4]
cdq
mov dword [ecx], eax
mov eax, dword [esp + 0xc]
mov dword [ecx + 4], edx
mov ecx, dword [esp + 0x88]
add eax, 0x14
mov edx, dword [esp + 0xc4]
jmp 0x1004cc34
mov eax, 4
mov word [ecx + 0x10], ax
mov eax, dword [esp + 0xc]
mov eax, dword [eax + 4]
cdq
mov dword [ecx], eax
mov eax, dword [esp + 0xc]
mov dword [ecx + 4], edx
mov ecx, dword [esp + 0x88]
add eax, 0x14
mov edx, dword [esp + 0xc4]
jmp 0x1004cc34
mov ecx, dword [esp + 0xc]
mov eax, dword [ecx + 8]
lea ecx, [eax + eax*4]
mov eax, dword [edi + 0x58]
lea edx, [eax + ecx*8]
mov eax, 0x9000
test word [edx + 0x10], ax
je 0x1004cef9
mov ecx, edx
call fcn.1004ca00
mov edx, eax
jmp 0x1004cf02
mov eax, 4
mov word [edx + 0x10], ax
mov eax, dword [esp + 0xc]
mov eax, dword [eax + 0x10]
mov ecx, dword [eax]
mov eax, dword [eax + 4]
mov dword [edx + 4], eax
mov eax, dword [esp + 0xc]
mov dword [edx], ecx
mov ecx, dword [esp + 0x88]
add eax, 0x14
mov edx, dword [esp + 0xc4]
jmp 0x1004cc34
mov ecx, dword [esp + 0xc]
mov eax, dword [ecx + 8]
lea ecx, [eax + eax*4]
mov eax, dword [edi + 0x58]
lea ecx, [eax + ecx*8]
mov eax, 0x9000
test word [ecx + 0x10], ax
je 0x1004cf4f
call fcn.1004ca00
mov ecx, eax
mov eax, 8
mov word [ecx + 0x10], ax
mov eax, dword [esp + 0xc]
mov eax, dword [eax + 0x10]
movsd xmm0, qword [eax]
mov eax, dword [esp + 0xc]
movsd qword [ecx], xmm0
mov ecx, dword [esp + 0x88]
add eax, 0x14
mov edx, dword [esp + 0xc4]
jmp 0x1004cc34
mov ecx, dword [esp + 0xc]
mov eax, dword [ecx + 8]
lea ecx, [eax + eax*4]
mov eax, dword [edi + 0x58]
lea esi, [eax + ecx*8]
mov eax, 0x9000
test word [esi + 0x10], ax
je 0x1004cfa7
mov ecx, esi
call fcn.1004ca00
mov esi, eax
jmp 0x1004cfb0
mov eax, 4
mov word [esi + 0x10], ax
mov eax, dword [esp + 0xc]
mov edx, dword [eax + 0x10]
test edx, edx
jne 0x1004cfbf
xor ecx, ecx
jmp 0x1004cfd7
mov ecx, edx
lea edi, [ecx + 1]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x1004cfc4
mov eax, dword [esp + 0xc]
sub ecx, edi
and ecx, 0x3fffffff
cmp byte [esp + 0x58], 1
mov dword [eax + 4], ecx
je 0x1004d054
push 0
push 1
push 0xffffffffffffffff
push 0xffffffffffffffff
mov ecx, esi
call fcn.10043200
mov edi, eax
add esp, 0x10
mov dword [esp + 0x1c], edi
test edi, edi
jne 0x10053746
movzx edx, byte [esp + 0x58]
mov ecx, esi
call fcn.10042360
test eax, eax
jne 0x1004ead2
mov ecx, dword [esp + 0xc]
mov dword [esi + 0x18], eax
mov eax, 0x2000
or word [esi + 0x10], ax
cmp byte [ecx + 1], 0xfa
jne 0x1004d03e
push dword [ecx + 0x10]
push dword [esp + 0x14]
call fcn.1001e910
mov ecx, dword [esp + 0x14]
add esp, 8
mov edx, dword [esp + 0xc]
mov byte [ecx + 1], 0xfa
mov eax, dword [esi + 8]
mov dword [ecx + 0x10], eax
mov ecx, dword [esi + 0xc]
mov dword [edx + 4], ecx
jmp 0x1004d058
mov edx, dword [esp + 0xc]
mov eax, dword [esp + 0x10]
cmp ecx, dword [eax + 0x78]
jg 0x10053746
mov edi, dword [esp + 0x14]
mov byte [edx], 0x49
jmp 0x1004d072
mov edx, dword [esp + 0xc]
mov eax, dword [edx + 8]
lea ecx, [eax + eax*4]
mov eax, dword [edi + 0x58]
lea ecx, [eax + ecx*8]
mov eax, 0x9000
test word [ecx + 0x10], ax
je 0x1004d094
call fcn.1004ca00
mov edx, dword [esp + 0xc]
mov ecx, eax
mov eax, 0x2202
mov word [ecx + 0x10], ax
mov eax, dword [edx + 0x10]
mov dword [ecx + 8], eax
mov eax, dword [edx + 4]
mov dword [ecx + 0xc], eax
mov al, byte [esp + 0x58]
mov byte [ecx + 0x12], al
mov eax, dword [esp + 0xc]
mov eax, dword [eax + 0xc]
test eax, eax
jle 0x10053466
mov edi, dword [esp + 0x18]
lea esi, [eax + eax*4]
mov eax, dword [esp + 0xc]
movzx eax, word [eax + 2]
cdq
cmp dword [edi + esi*8], eax
mov edi, dword [esp + 0x14]
jne 0x10053466
mov eax, dword [esp + 0x18]
cmp dword [eax + esi*8 + 4], edx
jne 0x10053466
mov eax, 0x2210
mov word [ecx + 0x10], ax
mov eax, dword [esp + 0xc]
mov esi, dword [esp + 0x18]
mov ecx, dword [esp + 0x88]
add eax, 0x14
mov edx, dword [esp + 0xc4]
jmp 0x1004cc34
mov ecx, dword [esp + 0xc]
mov eax, dword [ecx + 8]
lea ecx, [eax + eax*4]
mov eax, dword [edi + 0x58]
lea edx, [eax + ecx*8]
mov eax, 0x9000
test word [edx + 0x10], ax
je 0x1004d137
mov ecx, edx
call fcn.1004ca00
mov edx, eax
jmp 0x1004d140
mov eax, 4
mov word [edx + 0x10], ax
mov eax, dword [esp + 0xc]
mov esi, dword [esp + 0xc]
mov edi, dword [eax + 0xc]
mov ecx, dword [eax + 8]
mov eax, 1
cmp dword [esi + 4], 0
mov esi, 0x101
mov dword [edx + 0xc], 0
cmovne eax, esi
sub edi, ecx
movzx eax, ax
lea esi, [edx + 0x10]
mov dword [esp + 0x48], eax
mov word [esi], ax
test edi, edi
jle 0x10053466
mov ecx, 0x9000
test word [esi + 0x28], cx
lea esi, [esi + 0x28]
je 0x1004d19c
lea ecx, [esi - 0x10]
call fcn.10042900
mov eax, dword [esp + 0x48]
mov ecx, 0x9000
dec edi
mov word [esi], ax
mov dword [esi - 4], 0
test edi, edi
jg 0x1004d182
jmp 0x10053466
mov ecx, dword [esp + 0xc]
mov edx, 0xffc1
mov eax, dword [ecx + 4]
lea ecx, [eax + eax*4]
mov ax, word [esi + ecx*8 + 0x10]
and ax, dx
or ax, 1
mov word [esi + ecx*8 + 0x10], ax
mov eax, dword [esp + 0xc]
mov ecx, dword [esp + 0x88]
add eax, 0x14
mov edx, dword [esp + 0xc4]
jmp 0x1004cc34
mov ecx, dword [esp + 0xc]
mov eax, dword [ecx + 8]
lea ecx, [eax + eax*4]
mov eax, dword [edi + 0x58]
lea esi, [eax + ecx*8]
mov eax, 0x9000
test word [esi + 0x10], ax
je 0x1004d210
mov ecx, esi
call fcn.1004ca00
mov esi, eax
jmp 0x1004d219
mov eax, 4
mov word [esi + 0x10], ax
mov eax, dword [esp + 0xc]
mov ecx, dword [eax + 0x10]
mov eax, dword [eax + 4]
test ecx, ecx
jne 0x1004d264
mov edx, eax
mov ecx, esi
call fcn.10042f10
mov ecx, esi
call fcn.10042710
test eax, eax
jne 0x1004ead6
mov dl, byte [esp + 0x58]
mov eax, dword [esp + 0xc]
mov byte [esi + 0x12], dl
mov esi, dword [esp + 0x18]
mov ecx, dword [esp + 0x88]
add eax, 0x14
mov edx, dword [esp + 0xc4]
jmp 0x1004cc34
push 0
cdq
push 0
push edx
mov edx, ecx
mov ecx, esi
push eax
call fcn.10043200
mov dl, byte [esp + 0x68]
add esp, 0x10
mov eax, dword [esp + 0xc]
mov byte [esi + 0x12], dl
mov esi, dword [esp + 0x18]
mov ecx, dword [esp + 0x88]
add eax, 0x14
mov edx, dword [esp + 0xc4]
jmp 0x1004cc34
mov ecx, dword [esp + 0xc]
mov eax, dword [ecx + 4]
lea ecx, [eax + eax*4]
mov eax, dword [edi + 0x64]
lea edi, [eax + ecx*8]
lea ecx, [edi - 0x28]
call fcn.100430f0
test eax, eax
jne 0x10053746
mov eax, dword [esp + 0xc]
mov eax, dword [eax + 8]
lea eax, [eax + eax*4]
lea esi, [esi + eax*8]
mov eax, 0x9000
test word [esi + 0x10], ax
je 0x1004d2db
mov ecx, esi
call fcn.10042ef0
movups xmm0, xmmword [edi - 0x28]
mov ecx, 0xafff
movups xmmword [esi], xmm0
mov eax, dword [edi - 0x18]
mov dword [esi + 0x10], eax
and ax, cx
mov ecx, 0x2040
or ax, cx
mov word [esi + 0x10], ax
jmp 0x10053466
mov edx, dword [esp + 0xc]
mov eax, dword [edx + 4]
mov ecx, dword [edx + 0xc]
mov dword [esp + 0x38], ecx
lea eax, [eax + eax*4]
lea edi, [esi + eax*8]
mov eax, dword [edx + 8]
lea eax, [eax + eax*4]
lea esi, [esi + eax*8]
nop
mov eax, 0x9000
test word [esi + 0x10], ax
jne 0x1004d331
cmp dword [esi + 0x18], 0
je 0x1004d33c
mov ecx, esi
call fcn.10042940
mov ecx, dword [esp + 0x38]
movups xmm0, xmmword [edi]
mov eax, 1
movups xmmword [esi], xmm0
movups xmm0, xmmword [edi + 0x10]
movups xmmword [esi + 0x10], xmm0
movq xmm0, qword [edi + 0x20]
movq qword [esi + 0x20], xmm0
mov word [edi + 0x10], ax
mov eax, 0x4000
mov dword [edi + 0x18], 0
test word [esi + 0x10], ax
je 0x1004d382
mov ecx, esi
call fcn.10042680
test eax, eax
jne 0x1004ead2
mov ecx, dword [esp + 0x38]
add edi, 0x28
add esi, 0x28
sub ecx, 1
mov dword [esp + 0x38], ecx
jne 0x1004d320
jmp 0x10053466
mov ecx, dword [esp + 0xc]
mov eax, dword [ecx + 0xc]
mov dword [esp + 0x38], eax
mov eax, dword [ecx + 4]
lea eax, [eax + eax*4]
lea edi, [esi + eax*8]
mov eax, dword [ecx + 8]
lea eax, [eax + eax*4]
lea esi, [esi + eax*8]
push 0x4000
mov edx, edi
mov ecx, esi
call fcn.10043140
mov eax, 0x4000
add esp, 4
test word [esi + 0x10], ax
je 0x1004d3de
mov ecx, esi
call fcn.10042680
test eax, eax
jne 0x1004ead2
movzx eax, word [esi + 0x10]
test eax, 0x800
je 0x1004d3fc
mov ecx, dword [esp + 0xc]
test byte [ecx + 2], 2
je 0x1004d3fc
and eax, 0xf7ff
mov word [esi + 0x10], ax
mov ecx, dword [esp + 0x38]
mov eax, ecx
dec ecx
mov dword [esp + 0x38], ecx
test eax, eax
je 0x10053466
add esi, 0x28
add edi, 0x28
jmp 0x1004d3b3
mov ecx, dword [esp + 0xc]
push 0x4000
mov eax, dword [ecx + 4]
lea eax, [eax + eax*4]
lea edx, [esi + eax*8]
mov eax, dword [ecx + 8]
lea eax, [eax + eax*4]
lea ecx, [esi + eax*8]
call fcn.10043140
mov eax, dword [esp + 0x10]
add esp, 4
mov ecx, dword [esp + 0x88]
add eax, 0x14
mov edx, dword [esp + 0xc4]
jmp 0x1004cc34
mov edx, dword [esp + 0xc]
mov edi, 0x9000
mov eax, dword [edx + 8]
lea eax, [eax + eax*4]
test word [esi + eax*8 + 0x10], di
lea ecx, [esi + eax*8]
mov eax, dword [edx + 4]
mov edi, dword [esp + 0x14]
lea eax, [eax + eax*4]
mov edx, dword [esi + eax*8]
mov eax, dword [esi + eax*8 + 4]
je 0x1004d4a2
push eax
push edx
call fcn.10042f60
mov eax, dword [esp + 0x14]
add esp, 8
mov ecx, dword [esp + 0x88]
add eax, 0x14
mov edx, dword [esp + 0xc4]
jmp 0x1004cc34
mov dword [ecx + 4], eax
mov eax, 4
mov word [ecx + 0x10], ax
mov eax, dword [esp + 0xc]
mov dword [ecx], edx
mov ecx, dword [esp + 0x88]
add eax, 0x14
mov edx, dword [esp + 0xc4]
jmp 0x1004cc34
xor edx, edx
mov ecx, edi
call fcn.10046720
mov edx, eax
mov dword [esp + 0x1c], edx
test edx, edx
jne 0x10053580
mov eax, dword [esp + 0xc]
mov ecx, dword [esp + 0x88]
add eax, 0x14
mov edx, dword [esp + 0xc4]
jmp 0x1004cc34
mov edx, dword [esp + 0xc]
mov eax, dword [edx + 4]
lea eax, [eax + eax*4]
lea ecx, [esi + eax*8]
mov eax, dword [edx + 8]
mov dword [esp + 0x44], ecx
lea eax, [eax + eax*4]
lea edi, [esi + eax*8]
mov eax, dword [edx + 0xc]
movzx edx, word [ecx + 0x10]
mov dword [esp + 0x34], edx
lea eax, [eax + eax*4]
lea esi, [esi + eax*8]
mov al, byte [edi + 0x10]
or al, dl
test al, 1
jne 0x1005345f
test dl, 0x12
jne 0x1004d567
mov dl, byte [esp + 0x58]
push 0
call fcn.10042770
add esp, 4
test eax, eax
jne 0x1004ead2
mov eax, dword [esp + 0x44]
mov ecx, 0xfffd
mov ax, word [eax + 0x10]
and ax, cx
movzx ecx, ax
mov dword [esp + 0x34], ecx
jmp 0x1004d593
test edx, 0x400
je 0x1004d593
call fcn.10042710
test eax, eax
jne 0x1004ead2
mov eax, dword [esp + 0x44]
mov ecx, 0xfffd
mov ax, word [eax + 0x10]
and ax, cx
movzx eax, ax
mov dword [esp + 0x34], eax
movzx eax, word [edi + 0x10]
mov dword [esp + 0x38], eax
test al, 0x12
jne 0x1004d5b1
mov dl, byte [esp + 0x58]
mov ecx, edi
push 0
call fcn.10042770
add esp, 4
jmp 0x1004d5bf
test eax, 0x400
je 0x1004d5da
mov ecx, edi
call fcn.10042710
test eax, eax
jne 0x1004ead2
mov ax, word [edi + 0x10]
mov ecx, 0xfffd
and ax, cx
movzx eax, ax
mov dword [esp + 0x38], eax
mov eax, dword [esp + 0x44]
mov eax, dword [eax + 0xc]
add eax, dword [edi + 0xc]
mov dword [esp + 0x48], eax
cdq
mov ecx, eax
mov dword [esp + 0x60], edx
mov eax, dword [esp + 0x10]
mov dword [esp + 0x54], ecx
mov eax, dword [eax + 0x78]
cdq
cmp dword [esp + 0x60], edx
jg 0x10053746
jl 0x1004d60f
cmp ecx, eax
ja 0x10053746
mov edx, dword [esp + 0x48]
xor eax, eax
cmp esi, edi
mov ecx, esi
sete al
add edx, 2
push eax
call fcn.10042380
add esp, 4
test eax, eax
jne 0x1004ead2
mov ax, word [esi + 0x10]
mov ecx, 0xf242
and ax, cx
or ax, 2
mov word [esi + 0x10], ax
cmp esi, edi
je 0x1004d661
push dword [edi + 0xc]
push dword [edi + 8]
push dword [esi + 8]
call fcn.1012bff0
mov eax, dword [esp + 0x44]
add esp, 0xc
mov word [edi + 0x10], ax
mov eax, dword [esp + 0x44]
push dword [eax + 0xc]
push dword [eax + 8]
mov eax, dword [edi + 0xc]
add eax, dword [esi + 8]
push eax
call fcn.1012bff0
mov eax, dword [esp + 0x50]
add esp, 0xc
mov ecx, dword [esp + 0x34]
mov dl, byte [esp + 0x58]
mov word [eax + 0x10], cx
mov ecx, dword [esp + 0x54]
cmp dl, 1
jbe 0x1004d69e
mov eax, dword [esp + 0x60]
and ecx, 0xfffffffe
mov dword [esp + 0x2c], eax
mov eax, dword [esi + 8]
mov byte [ecx + eax], 0
mov eax, dword [esi + 8]
mov byte [ecx + eax + 1], 0
mov eax, 0x200
or word [esi + 0x10], ax
mov dword [esi + 0xc], ecx
mov byte [esi + 0x12], dl
jmp 0x10053466
mov ecx, dword [esp + 0xc]
mov eax, dword [ecx + 4]
lea eax, [eax + eax*4]
movzx edx, word [esi + eax*8 + 0x10]
lea edi, [esi + eax*8]
mov eax, edx
mov dword [esp + 0x44], edi
mov edi, dword [esp + 0x18]
mov dword [esp + 0x38], eax
mov eax, dword [ecx + 8]
lea eax, [eax + eax*4]
movzx ecx, word [esi + eax*8 + 0x10]
lea esi, [esi + eax*8]
mov eax, dword [esp + 0xc]
mov dword [esp + 0x48], esi
mov eax, dword [eax + 0xc]
lea eax, [eax + eax*4]
lea eax, [edi + eax*8]
mov edi, dword [esp + 0x44]
mov dword [esp + 0x34], eax
mov al, cl
and al, dl
test al, 4
jne 0x1004d756
or cl, dl
test cl, 1
jne 0x1004d96f
and edx, 0x2d
je 0x1004d728
mov ecx, edx
mov dword [esp + 0x38], ecx
jmp 0x1004d736
mov ecx, edi
call fcn.1004c900
movzx eax, ax
mov dword [esp + 0x38], eax
mov ax, word [esi + 0x10]
and ax, 0x2d
jne 0x1004d747
mov ecx, esi
call fcn.1004c900
movzx eax, ax
and al, byte [esp + 0x38]
test al, 4
je 0x1004d80d
mov ecx, dword [edi]
mov edx, dword [edi + 4]
mov eax, dword [esi]
mov edi, dword [esi + 4]
mov dword [esp + 0x38], eax
mov dword [esp + 0xd0], eax
mov eax, dword [esp + 0xc]
mov dword [esp + 0xd4], edi
movzx eax, byte [eax]
add eax, 0xffffff96
cmp eax, 3
ja case.default.0x1004d785
jmp dword [eax*4 + 0x10053f30]
push edx
push ecx
lea ecx, [esp + 0xd8]
call fcn.10023830
add esp, 8
test eax, eax
jne 0x1004d809
jmp 0x1004d93c
push edx
push ecx
lea ecx, [esp + 0xd8]
call fcn.100238d0
add esp, 8
test eax, eax
jne 0x1004d809
jmp 0x1004d93c
push edx
push ecx
lea ecx, [esp + 0xd8]
call fcn.10023920
add esp, 8
test eax, eax
jne 0x1004d809
jmp 0x1004d93c
mov eax, ecx
or eax, edx
je 0x1004d96f
mov eax, ecx
and eax, edx
cmp eax, 0xffffffff
mov eax, dword [esp + 0x38]
jne 0x1004d900
test eax, eax
jne 0x1004d900
cmp edi, 0x80000000
jne 0x1004d900
mov edi, dword [esp + 0x44]
mov ecx, edi
call fcn.10042aa0
mov ecx, esi
movsd qword [esp + 0x28], xmm0
call fcn.10042aa0
mov eax, dword [esp + 0xc]
movzx eax, byte [eax]
add eax, 0xffffff96
cmp eax, 3
ja case.default.0x1004d830
jmp dword [eax*4 + 0x10053f40]
addsd xmm0, qword [esp + 0x28]
jmp 0x1004d8c3
subsd xmm0, qword [esp + 0x28]
jmp 0x1004d8c3
mulsd xmm0, qword [esp + 0x28]
jmp 0x1004d8c3
movsd xmm1, qword [esp + 0x28]
ucomisd xmm1, qword [0x10160ed8]
lahf
test ah, 0x44
jnp 0x1004d96f
divsd xmm0, xmm1
jmp 0x1004d8c3
mov ecx, edi
call fcn.10042a10
mov ecx, dword [esp + 0x48]
mov esi, eax
mov edi, edx
call fcn.10042a10
mov ecx, esi
mov dword [esp + 0x48], eax
or ecx, edi
mov dword [esp + 0xd0], eax
mov dword [esp + 0xd4], edx
je 0x1004d96f
mov eax, esi
and eax, edi
cmp eax, 0xffffffff
jne 0x1004d8b0
mov esi, 1
xor edi, edi
push edi
push esi
push edx
push dword [esp + 0x54]
call fcn.1013c0e0
mov ecx, eax
call fcn.1013c580
movsd qword [esp + 0x28], xmm0
call fcn.10022340
test eax, eax
jne 0x1004d96f
mov edx, dword [esp + 0x34]
mov ecx, 0xf248
movsd xmm0, qword [esp + 0x28]
mov ax, word [edx + 0x10]
and ax, cx
movsd qword [edx], xmm0
or ax, 8
movzx eax, ax
mov word [edx + 0x10], ax
jmp 0x10053466
push edx
push ecx
push edi
push eax
call fcn.1013c030
jmp 0x1004d92e
mov eax, ecx
or eax, edx
je 0x1004d96f
mov eax, ecx
and eax, edx
cmp eax, 0xffffffff
jne 0x1004d921
mov ecx, 1
xor edx, edx
mov eax, dword [esp + 0x38]
push edx
push ecx
push edi
push eax
call fcn.1013c0e0
mov dword [esp + 0xd4], edx
mov dword [esp + 0xd0], eax
mov edx, dword [esp + 0x34]
mov eax, dword [esp + 0xd0]
mov ecx, dword [esp + 0xd4]
mov dword [edx], eax
mov ax, word [edx + 0x10]
mov dword [edx + 4], ecx
mov ecx, 0xf244
and ax, cx
or ax, 4
movzx eax, ax
mov word [edx + 0x10], ax
jmp 0x10053466
mov eax, dword [esp + 0x34]
mov ecx, 0x9000
test word [eax + 0x10], cx
je 0x1004d98a
mov ecx, eax
call fcn.10042900
jmp 0x10053466
mov ecx, 1
mov word [eax + 0x10], cx
jmp 0x10053466
mov eax, dword [eax + 4]
test eax, eax
je 0x10051b9c
push 0
push 0
lea eax, [eax + eax*4]
lea ecx, [esi + eax*8]
call fcn.10042f90
add esp, 8
mov eax, dword [esp + 0xc]
mov ecx, dword [esp + 0x88]
add eax, 0x14
mov edx, dword [esp + 0xc4]
jmp 0x1004cc34
mov edx, dword [esp + 0xc]
mov eax, dword [edx + 4]
lea eax, [eax + eax*4]
lea ecx, [esi + eax*8]
mov eax, dword [edx + 8]
mov dword [esp + 0x48], ecx
lea eax, [eax + eax*4]
lea edx, [esi + eax*8]
mov eax, dword [esp + 0xc]
mov eax, dword [eax + 0xc]
lea eax, [eax + eax*4]
lea esi, [esi + eax*8]
mov al, byte [edx + 0x10]
or al, byte [ecx + 0x10]
mov dword [esp + 0x34], esi
test al, 1
je 0x1004da5b
mov eax, 0x9000
test word [esi + 0x10], ax
je 0x1004da34
mov ecx, esi
call fcn.10042900
mov eax, dword [esp + 0xc]
mov esi, dword [esp + 0x18]
mov ecx, dword [esp + 0x88]
add eax, 0x14
mov edx, dword [esp + 0xc4]
jmp 0x1004cc34
mov eax, 1
mov word [esi + 0x10], ax
mov eax, dword [esp + 0xc]
mov esi, dword [esp + 0x18]
mov ecx, dword [esp + 0x88]
add eax, 0x14
mov edx, dword [esp + 0xc4]
jmp 0x1004cc34
mov ecx, edx
call fcn.10042a10
mov ecx, dword [esp + 0x48]
mov edi, eax
mov esi, edx
mov dword [esp + 0x130], edi
mov dword [esp + 0x134], esi
call fcn.10042a10
mov ecx, eax
mov eax, dword [esp + 0xc]
mov dword [esp + 0x38], ecx
mov al, byte [eax]
mov byte [esp + 0x27], al
cmp al, 0x66
jne 0x1004da97
and edi, ecx
and esi, edx
jmp 0x1004db05
cmp al, 0x67
jne 0x1004daa1
or edi, ecx
or esi, edx
jmp 0x1004db05
mov eax, ecx
or eax, edx
je 0x1004db05
test edx, edx
jg 0x1004dad0
jl 0x1004dab1
test ecx, ecx
jae 0x1004dad0
mov al, 0xd1
sub al, byte [esp + 0x27]
cmp edx, 0xffffffff
jl 0x1004dadf
jg 0x1004dac3
cmp ecx, 0xffffffc0
jbe 0x1004dadf
neg ecx
mov dword [esp + 0x38], ecx
adc edx, 0
neg edx
jmp 0x1004dad4
mov al, byte [esp + 0x27]
test edx, edx
jl 0x1004db27
jg 0x1004dadf
cmp ecx, 0x40
jb 0x1004db27
test esi, esi
jg 0x1004daf4
jl 0x1004dae9
test edi, edi
jae 0x1004daf4
cmp al, 0x68
je 0x1004daf4
or edi, 0xffffffff
or esi, edi
jmp 0x1004db05
xorps xmm0, xmm0
movlpd qword [esp + 0x28], xmm0
mov esi, dword [esp + 0x2c]
mov edi, dword [esp + 0x28]
mov ecx, dword [esp + 0x34]
mov edx, 0xf244
mov ax, word [ecx + 0x10]
and ax, dx
mov dword [ecx], edi
or ax, 4
mov dword [ecx + 4], esi
mov word [ecx + 0x10], ax
jmp 0x10053466
movq xmm1, qword [esp + 0x130]
movd xmm0, ecx
cmp al, 0x68
jne 0x1004db44
psllq xmm1, xmm0
movq qword [esp + 0x28], xmm1
jmp 0x1004dafd
psrlq xmm1, xmm0
movq qword [esp + 0x28], xmm1
test esi, esi
jg 0x1004dafd
jl 0x1004db58
test edi, edi
jae 0x1004dafd
mov ecx, 0x40
or eax, 0xffffffff
sub ecx, dword [esp + 0x38]
or edx, 0xffffffff
call fcn.1013c2d0
mov edi, dword [esp + 0x28]
mov esi, dword [esp + 0x2c]
or edi, eax
or esi, edx
jmp 0x1004db05
mov ecx, dword [esp + 0xc]
mov eax, dword [ecx + 4]
lea eax, [eax + eax*4]
lea ecx, [esi + eax*8]
mov dword [esp + 0x38], ecx
call fcn.10042a10
mov esi, eax
mov edi, edx
mov eax, dword [esp + 0x38]
mov edx, 0xf244
mov cx, word [eax + 0x10]
and cx, dx
mov dword [eax], esi
or cx, 4
mov dword [eax + 4], edi
mov word [eax + 0x10], cx
mov eax, dword [esp + 0xc]
mov ecx, dword [esp + 0x38]
mov eax, dword [eax + 8]
cdq
add eax, esi
mov dword [ecx], eax
adc edx, edi
mov dword [ecx + 4], edx
jmp 0x10053466
mov ecx, dword [esp + 0xc]
mov eax, dword [ecx + 4]
lea eax, [eax + eax*4]
lea esi, [esi + eax*8]
movzx eax, word [esi + 0x10]
mov ecx, eax
test al, 4
jne 0x1004dc18
push dword [esp + 0x58]
mov dl, 0x43
mov ecx, esi
call fcn.1004c780
movzx eax, word [esi + 0x10]
add esp, 4
mov ecx, eax
test al, 4
jne 0x1004dc18
mov eax, dword [esp + 0xc]
cmp dword [eax + 8], 0
jne 0x10052cda
mov edx, 0x14
mov dword [esp + 0x1c], edx
jmp 0x10053580
mov eax, dword [esp + 0xc]
and ecx, 0xf244
or ecx, 4
mov word [esi + 0x10], cx
mov esi, dword [esp + 0x18]
mov ecx, dword [esp + 0x88]
add eax, 0x14
mov edx, dword [esp + 0xc4]
jmp 0x1004cc34
mov ecx, dword [esp + 0xc]
mov eax, dword [ecx + 4]
lea eax, [eax + eax*4]
test byte [esi + eax*8 + 0x10], 0x24
lea ecx, [esi + eax*8]
je 0x10051b9c
call fcn.10042b90
mov eax, dword [esp + 0xc]
mov ecx, dword [esp + 0x88]
add eax, 0x14
mov edx, dword [esp + 0xc4]
jmp 0x1004cc34
mov ecx, dword [esp + 0xc]
mov eax, dword [ecx + 4]
lea eax, [eax + eax*4]
lea esi, [esi + eax*8]
mov eax, 0x400
test word [esi + 0x10], ax
je 0x1004dca7
mov ecx, esi
call fcn.10042710
mov edx, eax
mov dword [esp + 0x1c], edx
test edx, edx
jne 0x10053580
mov eax, dword [esp + 0xc]
mov ecx, esi
push dword [esp + 0x58]
mov dl, byte [eax + 8]
call fcn.10042d20
add esp, 4
mov edx, eax
mov dword [esp + 0x1c], edx
test edx, edx
jne 0x10053580
mov eax, dword [esp + 0xc]
mov esi, dword [esp + 0x18]
mov ecx, dword [esp + 0x88]
add eax, 0x14
mov edx, dword [esp + 0xc4]
jmp 0x1004cc34
mov ecx, dword [esp + 0xc]
mov eax, dword [ecx + 4]
lea eax, [eax + eax*4]
lea edi, [esi + eax*8]
mov eax, dword [ecx + 0xc]
mov dword [esp + 0x60], edi
lea eax, [eax + eax*4]
movzx ecx, word [esi + eax*8 + 0x10]
lea esi, [esi + eax*8]
movzx eax, word [edi + 0x10]
mov dword [esp + 0x44], ecx
and dword [esp + 0x44], eax
test byte [esp + 0x44], 4
mov dword [esp + 0x54], eax
mov dword [esp + 0x20], ecx
je 0x1004ddf1
mov eax, dword [esi + 4]
mov ecx, dword [esi]
mov esi, dword [edi + 4]
mov dword [esp + 0x48], eax
mov eax, dword [edi]
mov edi, dword [esp + 0x48]
cmp edi, esi
jl 0x1004dd83
jg 0x1004dd42
cmp ecx, eax
jbe 0x1004dd79
cmp byte [edx + 0x10151b48], 0
mov eax, dword [esp + 0xc]
mov edi, dword [esp + 0x14]
jne 0x10052cda
mov esi, dword [esp + 0x18]
mov dword [esp + 0x6c], 1
mov ecx, dword [esp + 0x88]
add eax, 0x14
mov edx, dword [esp + 0xc4]
jmp 0x1004cc34
cmp edi, esi
jg 0x1004ddba
jl 0x1004dd83
cmp ecx, eax
jae 0x1004ddba
cmp byte [edx + 0x10151b3c], 0
mov eax, dword [esp + 0xc]
mov edi, dword [esp + 0x14]
jne 0x10052cda
mov esi, dword [esp + 0x18]
mov dword [esp + 0x6c], 0xffffffff
mov ecx, dword [esp + 0x88]
add eax, 0x14
mov edx, dword [esp + 0xc4]
jmp 0x1004cc34
cmp byte [edx + 0x10151b42], 0
mov eax, dword [esp + 0xc]
mov edi, dword [esp + 0x14]
jne 0x10052cda
mov esi, dword [esp + 0x18]
mov dword [esp + 0x6c], 0
mov ecx, dword [esp + 0x88]
add eax, 0x14
mov edx, dword [esp + 0xc4]
jmp 0x1004cc34
mov edx, ecx
or edx, eax
mov dword [esp + 0x48], edx
test dl, 1
je 0x1004de7c
mov eax, dword [esp + 0xc]
movzx eax, word [eax + 2]
test al, al
jns 0x1004de4a
test byte [esp + 0x44], 1
je 0x1004de37
test ecx, 0x100
jne 0x1004de37
mov eax, dword [esp + 0xc]
mov edx, dword [esp + 0x54]
mov dword [esp + 0x6c], 0
movzx eax, byte [eax]
mov al, byte [eax + 0x10151b42]
jmp 0x1004dfd1
mov eax, ecx
not eax
and eax, 1
lea eax, [eax*2 - 1]
jmp 0x1004df70
mov edi, dword [esp + 0x14]
test al, 0x10
mov eax, dword [esp + 0xc]
jne 0x10052cda
mov esi, dword [esp + 0x18]
mov dword [esp + 0x6c], 1
mov ecx, dword [esp + 0x88]
add eax, 0x14
mov edx, dword [esp + 0xc4]
jmp 0x1004cc34
mov edx, dword [esp + 0xc]
mov dl, byte [edx + 2]
and dl, 0x47
mov byte [esp + 0x27], dl
cmp dl, 0x43
mov edx, dword [esp + 0x48]
jb 0x1004decd
test dl, 2
je 0x1004df59
and al, 0x2e
cmp al, 2
jne 0x1004deb3
xor edx, edx
mov ecx, edi
call fcn.1004c5a0
movzx ecx, word [esi + 0x10]
mov dword [esp + 0x20], ecx
and cl, 0x2e
cmp cl, 2
jne 0x1004df59
xor edx, edx
mov ecx, esi
call fcn.1004c5a0
jmp 0x1004df59
cmp byte [esp + 0x27], 0x42
jne 0x1004df59
test dl, 2
je 0x1004df59
test al, 2
jne 0x1004df26
test al, 0x2c
je 0x1004df26
mov dl, byte [esp + 0x58]
mov ecx, edi
push 1
call fcn.10042770
movzx eax, word [edi + 0x10]
add esp, 4
mov ecx, eax
xor ecx, dword [esp + 0x54]
and ecx, 0xdbf
xor ecx, eax
movzx eax, cx
mov dword [esp + 0x54], eax
cmp edi, esi
jne 0x1004df22
or eax, 2
movzx ecx, ax
mov dword [esp + 0x20], ecx
jmp 0x1004df26
mov ecx, dword [esp + 0x20]
test cl, 2
jne 0x1004df59
test cl, 0x2c
je 0x1004df59
mov dl, byte [esp + 0x58]
mov ecx, esi
push 1
call fcn.10042770
movzx eax, word [esi + 0x10]
add esp, 4
mov ecx, eax
xor ecx, dword [esp + 0x20]
and ecx, 0xdbf
xor ecx, eax
movzx edx, cx
mov dword [esp + 0x20], edx
mov eax, dword [esp + 0xc]
mov edx, edi
mov ecx, esi
push dword [eax + 0x10]
call fcn.10047770
mov ecx, dword [esp + 0x24]
add esp, 4
mov edx, dword [esp + 0x54]
mov edi, eax
mov dword [esp + 0x6c], eax
movzx eax, cx
mov dword [esp + 0x34], eax
movzx eax, dx
mov dword [esp + 0x38], eax
mov eax, dword [esp + 0xc]
movzx eax, byte [eax]
test edi, edi
jge 0x1004df9b
mov al, byte [eax + 0x10151b3c]
jmp 0x1004dfd1
mov ecx, dword [esp + 0x38]
movzx edx, cx
mov ecx, dword [esp + 0x34]
movzx ecx, cx
mov dword [esp + 0x6c], edi
test edi, edi
jne 0x1004dfb9
mov al, byte [eax + 0x10151b42]
jmp 0x1004dfd1
mov ecx, dword [esp + 0x38]
mov al, byte [eax + 0x10151b48]
movzx edx, cx
mov ecx, dword [esp + 0x34]
movzx ecx, cx
mov dword [esp + 0x6c], edi
mov word [esi + 0x10], cx
test al, al
mov ecx, dword [esp + 0x60]
mov eax, dword [esp + 0xc]
mov word [ecx + 0x10], dx
jne 0x10052138
mov edi, dword [esp + 0x14]
mov esi, dword [esp + 0x18]
mov ecx, dword [esp + 0x88]
add eax, 0x14
mov edx, dword [esp + 0xc4]
jmp 0x1004cc34
cmp dword [esp + 0x6c], 0
je 0x10052cda
mov ecx, dword [esp + 0x88]
add eax, 0x14
mov edx, dword [esp + 0xc4]
jmp 0x1004cc34
mov edx, dword [esp + 0xc]
test byte [edx + 2], 1
jne 0x1004e036
xor eax, eax
jmp 0x1004e03c
mov eax, dword [edx - 4]
add eax, 4
mov esi, dword [esp + 0xc]
mov edi, dword [esp + 0xc]
mov ecx, dword [edx + 0xc]
mov edx, dword [edx + 0x10]
mov esi, dword [esi + 4]
mov dword [esp + 0x60], esi
mov esi, dword [edi + 8]
mov dword [esp + 0x48], esi
xor esi, esi
mov dword [esp + 0x38], eax
mov dword [esp + 0x44], ecx
mov dword [esp + 0x34], edx
test ecx, ecx
jle 0x10053466
lea edi, [edx + 0x14]
test eax, eax
je 0x1004e07a
mov ecx, dword [eax + esi*4]
jmp 0x1004e07c
mov ecx, esi
mov eax, dword [edx + 0x10]
mov edx, dword [esp + 0x18]
push dword [edi]
movzx eax, byte [eax + esi]
and eax, 1
mov dword [esp + 0x24], eax
mov eax, dword [esp + 0x4c]
add eax, ecx
lea eax, [eax + eax*4]
lea edx, [edx + eax*8]
mov eax, dword [esp + 0x64]
add eax, ecx
mov dword [esp + 0x74], edx
mov ecx, dword [esp + 0x1c]
lea eax, [eax + eax*4]
lea eax, [ecx + eax*8]
mov ecx, eax
mov dword [esp + 0x58], eax
call fcn.10047770
mov edx, eax
add esp, 4
mov dword [esp + 0x6c], edx
test edx, edx
jne 0x1004e0df
mov eax, dword [esp + 0x38]
inc esi
mov edx, dword [esp + 0x34]
add edi, 4
cmp esi, dword [esp + 0x44]
jl 0x1004e071
jmp 0x10053466
mov eax, dword [esp + 0x34]
mov eax, dword [eax + 0x10]
test byte [esi + eax], 2
je 0x1004e106
mov eax, dword [esp + 0x54]
test byte [eax + 0x10], 1
jne 0x1004e100
mov eax, dword [esp + 0x70]
test byte [eax + 0x10], 1
je 0x1004e106
neg edx
mov dword [esp + 0x6c], edx
cmp dword [esp + 0x20], 0
mov eax, dword [esp + 0xc]
je 0x1005346a
mov edi, dword [esp + 0x14]
neg edx
mov esi, dword [esp + 0x18]
mov dword [esp + 0x6c], edx
mov ecx, dword [esp + 0x88]
add eax, 0x14
mov edx, dword [esp + 0xc4]
jmp 0x1004cc34
mov edx, dword [esp + 0x6c]
mov ecx, dword [esp + 0xc]
test edx, edx
jns 0x1004e16b
mov eax, dword [ecx + 4]
mov ecx, dword [esp + 0x64]
lea eax, [eax + eax*4]
lea eax, [ecx + eax*4]
add eax, 0xffffffec
mov ecx, dword [esp + 0x88]
add eax, 0x14
mov edx, dword [esp + 0xc4]
jmp 0x1004cc34
jne 0x1004e193
mov eax, dword [ecx + 8]
mov ecx, dword [esp + 0x64]
lea eax, [eax + eax*4]
lea eax, [ecx + eax*4]
add eax, 0xffffffec
mov ecx, dword [esp + 0x88]
add eax, 0x14
mov edx, dword [esp + 0xc4]
jmp 0x1004cc34
mov eax, dword [ecx + 0xc]
mov ecx, dword [esp + 0x64]
lea eax, [eax + eax*4]
lea eax, [ecx + eax*4]
add eax, 0xffffffec
mov ecx, dword [esp + 0x88]
add eax, 0x14
mov edx, dword [esp + 0xc4]
jmp 0x1004cc34
mov ecx, dword [esp + 0xc]
mov edx, 2
mov eax, dword [ecx + 4]
lea eax, [eax + eax*4]
lea ecx, [esi + eax*8]
call fcn.10042ad0
mov esi, eax
mov edx, 2
mov eax, dword [esp + 0xc]
mov ecx, dword [eax + 8]
mov eax, dword [esp + 0x18]
lea ecx, [ecx + ecx*4]
lea ecx, [eax + ecx*8]
call fcn.10042ad0
lea edx, [eax + esi*2]
mov eax, dword [esp + 0xc]
cmp byte [eax], 0x2c
jne 0x1004e202
mov dl, byte [esi + edx + 0x10155738]
jmp 0x1004e209
mov dl, byte [esi + edx + 0x101565a4]
mov eax, dword [eax + 0xc]
lea esi, [eax + eax*4]
mov eax, dword [esp + 0x18]
movzx ecx, word [eax + esi*8 + 0x10]
cmp dl, 2
jne 0x1004e249
and ecx, 0xf241
or ecx, 1
mov word [eax + esi*8 + 0x10], cx
mov eax, dword [esp + 0xc]
mov esi, dword [esp + 0x18]
mov ecx, dword [esp + 0x88]
add eax, 0x14
mov edx, dword [esp + 0xc4]
jmp 0x1004cc34
mov edi, dword [esp + 0x18]
and ecx, 0xf244
movzx eax, dl
or ecx, 4
cdq
mov dword [edi + esi*8], eax
mov eax, edi
mov edi, dword [esp + 0x14]
mov dword [eax + esi*8 + 4], edx
mov word [eax + esi*8 + 0x10], cx
mov eax, dword [esp + 0xc]
mov esi, dword [esp + 0x18]
mov ecx, dword [esp + 0x88]
add eax, 0x14
mov edx, dword [esp + 0xc4]
jmp 0x1004cc34
mov edx, dword [esp + 0xc]
mov eax, dword [edx + 4]
mov edx, dword [edx + 0xc]
lea eax, [eax + eax*4]
lea ecx, [esi + eax*8]
call fcn.10042ad0
mov ecx, dword [esp + 0xc]
xor eax, dword [ecx + 0x10]
cdq
push edx
push eax
mov eax, dword [ecx + 8]
jmp 0x1004d9a7
mov edx, dword [esp + 0xc]
mov eax, dword [edx + 4]
lea eax, [eax + eax*4]
test byte [esi + eax*8 + 0x10], 1
lea ecx, [esi + eax*8]
mov eax, dword [edx + 8]
lea eax, [eax + eax*4]
lea esi, [esi + eax*8]
jne 0x1004e305
xor edx, edx
call fcn.10042ad0
neg eax
mov ecx, esi
push 0
sbb eax, eax
inc eax
push eax
call fcn.10042f90
mov eax, dword [esp + 0x14]
add esp, 8
mov esi, dword [esp + 0x18]
mov ecx, dword [esp + 0x88]
add eax, 0x14
mov edx, dword [esp + 0xc4]
jmp 0x1004cc34
mov ecx, esi
call fcn.10042ef0
mov eax, dword [esp + 0xc]
mov esi, dword [esp + 0x18]
mov ecx, dword [esp + 0x88]
add eax, 0x14
mov edx, dword [esp + 0xc4]
jmp 0x1004cc34
mov ecx, dword [esp + 0xc]
mov eax, dword [ecx + 4]
lea eax, [eax + eax*4]
lea edi, [esi + eax*8]
mov eax, dword [ecx + 8]
lea eax, [eax + eax*4]
lea esi, [esi + eax*8]
mov ecx, esi
call fcn.10042ef0
test byte [edi + 0x10], 1
jne 0x10053466
mov eax, 4
mov ecx, edi
mov word [esi + 0x10], ax
call fcn.10042a10
not eax
not edx
mov dword [esi], eax
mov dword [esi + 4], edx
jmp 0x10053466
mov edi, dword [edi + 0xd0]
mov eax, dword [esp + 0x14]
test edi, edi
je 0x1004e3c3
mov ecx, dword [esp + 0xc]
sub ecx, dword [eax + 0x68]
mov eax, 0x66666667
mov edi, dword [edi + 0x14]
imul ecx
mov eax, 1
sar edx, 3
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
mov esi, ecx
and ecx, 7
shr esi, 3
shl eax, cl
movzx edx, byte [esi + edi]
test edx, eax
jne 0x10052cd2
bts edx, ecx
mov byte [esi + edi], dl
mov edi, dword [esp + 0xc]
mov esi, dword [esp + 0x18]
jmp 0x1004e3d6
mov eax, dword [eax + 0x68]
mov edi, dword [esp + 0xc]
mov eax, dword [eax + 4]
cmp eax, dword [edi + 4]
je 0x10052134
mov eax, dword [esp + 0x14]
mov eax, dword [eax + 0x68]
mov eax, dword [eax + 4]
mov dword [edi + 4], eax
mov eax, dword [esp + 0xc]
mov edi, dword [esp + 0x14]
mov ecx, dword [esp + 0x88]
add eax, 0x14
mov edx, dword [esp + 0xc4]
jmp 0x1004cc34
mov edx, dword [esp + 0xc]
mov eax, dword [edx + 4]
mov edx, dword [edx + 0xc]
lea eax, [eax + eax*4]
lea ecx, [esi + eax*8]
call fcn.10042ad0
test eax, eax
mov eax, dword [esp + 0xc]
jne 0x10052138
mov ecx, dword [esp + 0x88]
add eax, 0x14
mov edx, dword [esp + 0xc4]
jmp 0x1004cc34
mov ecx, dword [esp + 0xc]
xor edx, edx
mov eax, dword [ecx + 4]
cmp dword [ecx + 0xc], edx
sete dl
lea eax, [eax + eax*4]
lea ecx, [esi + eax*8]
call fcn.10042ad0
test eax, eax
mov eax, dword [esp + 0xc]
je 0x10052138
mov ecx, dword [esp + 0x88]
add eax, 0x14
mov edx, dword [esp + 0xc4]
jmp 0x1004cc34
mov eax, dword [eax + 4]
lea eax, [eax + eax*4]
test byte [esi + eax*8 + 0x10], 1
mov eax, dword [esp + 0xc]
jne 0x10052cda
mov ecx, dword [esp + 0x88]
add eax, 0x14
mov edx, dword [esp + 0xc4]
jmp 0x1004cc34
mov edx, dword [esp + 0xc]
mov ecx, dword [edx + 4]
test ecx, ecx
js 0x1004e4f8
mov eax, dword [edi + 0x60]
mov edx, dword [edx + 0xc]
mov ecx, dword [eax + ecx*4]
movzx eax, word [ecx + 0x3e]
cmp edx, eax
jge 0x1004e4e3
mov eax, dword [ecx + edx*4 + 0x58]
cmp eax, 0xc
jb 0x1004e4da
test al, 1
mov eax, 0
sete al
lea eax, [eax*4 + 4]
movzx eax, ax
jmp 0x1004e518
movzx eax, byte [eax + 0x10151434]
jmp 0x1004e518
mov eax, dword [esp + 0xc]
mov ecx, dword [eax + 0x10]
mov eax, 1
dec ecx
shl ax, cl
movzx eax, ax
jmp 0x1004e518
mov eax, dword [edx + 0xc]
lea eax, [eax + eax*4]
lea eax, [esi + eax*8]
push eax
call fcn.100493b0
mov edx, 1
add esp, 4
lea ecx, [eax - 1]
shl dx, cl
movzx eax, dx
mov edi, dword [esp + 0xc]
test word [edi + 2], ax
mov eax, edi
mov edi, dword [esp + 0x14]
jne 0x10052cda
mov ecx, dword [esp + 0x88]
add eax, 0x14
mov edx, dword [esp + 0xc4]
jmp 0x1004cc34
mov ecx, dword [esp + 0xc]
mov eax, dword [ecx + 4]
lea eax, [eax + eax*4]
test byte [esi + eax*8 + 0x10], 1
jne 0x1004e568
mov eax, dword [ecx + 0xc]
lea eax, [eax + eax*4]
test byte [esi + eax*8 + 0x10], 1
jne 0x1004e568
mov eax, dword [ecx + 8]
jmp 0x1004d9a3
mov eax, dword [ecx + 8]
lea eax, [eax + eax*4]
lea ecx, [esi + eax*8]
call fcn.10042ef0
mov eax, dword [esp + 0xc]
mov ecx, dword [esp + 0x88]
add eax, 0x14
mov edx, dword [esp + 0xc4]
jmp 0x1004cc34
mov eax, dword [eax + 4]
lea eax, [eax + eax*4]
test byte [esi + eax*8 + 0x10], 1
mov eax, dword [esp + 0xc]
je 0x10052cda
mov ecx, dword [esp + 0x88]
add eax, 0x14
mov edx, dword [esp + 0xc4]
jmp 0x1004cc34
mov ecx, dword [esp + 0xc]
mov eax, dword [edi + 0x60]
mov ecx, dword [ecx + 4]
mov eax, dword [eax + ecx*4]
test eax, eax
je 0x10051b9c
cmp byte [eax + 2], 0
mov eax, dword [esp + 0xc]
je case.0x1004cc65.89
mov eax, dword [eax + 0xc]
lea eax, [eax + eax*4]
lea ecx, [esi + eax*8]
call fcn.10042ef0
jmp 0x10052cd6
mov edx, dword [esp + 0xc]
mov eax, dword [edi + 0x60]
mov ecx, dword [edx + 4]
mov edx, dword [edx + 8]
mov esi, dword [eax + ecx*4]
mov dword [esp + 0x20], edx
mov eax, dword [esi + 0x20]
mov ecx, dword [esi + 0x48]
mov dword [esp + 0x5c], ecx
cmp eax, dword [edi + 0x1c]
je 0x1004e666
cmp byte [esi + 2], 0
jne 0x1004e6c0
cmp byte [esi + 3], 0
mov edi, dword [esi + 0x2c]
je 0x1004e642
mov eax, dword [esi + 0x10]
test eax, eax
je 0x1004e690
mov eax, dword [eax + edx*4 + 4]
test eax, eax
je 0x1004e690
mov esi, dword [esi + 0x28]
lea edx, [eax - 1]
mov edi, dword [esp + 0x14]
jmp 0x1004e601
cmp byte [edi], 0
je 0x1004e6a5
mov ecx, esi
call fcn.10046f00
mov edi, dword [esp + 0x14]
mov edx, eax
mov dword [esp + 0x1c], edx
test edx, edx
jne 0x10053580
mov edx, dword [esp + 0x20]
jmp 0x1004e605
mov eax, dword [esi + 0x2c]
cmp byte [eax], 0
je 0x1004e7a0
mov ecx, esi
call fcn.10046f00
mov edx, eax
mov dword [esp + 0x1c], edx
test edx, edx
jne 0x10053580
mov edx, dword [esp + 0x20]
jmp 0x1004e605
mov ecx, esi
call fcn.10046e90
mov edx, eax
mov dword [esp + 0x1c], edx
test edx, edx
jne 0x1005357c
mov ecx, edi
call fcn.100390d0
lea edx, [esi + 0x54]
mov dword [esi + 0x50], eax
mov ecx, edi
call fcn.10039680
mov ecx, eax
lea edi, [esi + 0x54]
jmp 0x1004e6eb
cmp byte [esi], 3
jne 0x1004e770
mov eax, dword [esi + 0x24]
test eax, eax
jle 0x1004e770
mov edx, dword [esp + 0x18]
lea ecx, [eax + eax*4]
lea edi, [esi + 0x54]
mov eax, dword [edx + ecx*8 + 0xc]
mov dword [edi], eax
mov dword [esi + 0x50], eax
mov ecx, dword [edx + ecx*8 + 8]
mov eax, dword [esp + 0x14]
lea edx, [esi + 0x34]
mov dword [esi + 0x4c], ecx
mov dword [esp + 0x54], edx
mov eax, dword [eax + 0x1c]
mov dword [esi + 0x20], eax
movzx eax, byte [ecx]
mov ecx, dword [esp + 0x5c]
mov dword [ecx], eax
cmp eax, 0x80
jae 0x1004e716
mov eax, 1
jmp 0x1004e72b
mov edx, ecx
mov ecx, dword [esi + 0x4c]
call fcn.100236e0
mov ecx, dword [esp + 0x5c]
mov edx, dword [esp + 0x54]
movzx eax, al
mov dword [edx], eax
xor eax, eax
lea edx, [esi + 0x3e]
mov word [edx], ax
mov eax, dword [edi]
mov dword [esp + 0x44], edx
cmp eax, dword [ecx]
jae 0x1004e764
mov dword [esi + 0x4c], 0
mov dword [edi], 0
mov eax, dword [ecx]
cmp eax, 0x18003
ja 0x1004e979
cmp eax, dword [esi + 0x50]
ja 0x1004e979
jmp 0x1004e7a7
mov eax, dword [esi + 0x4c]
mov dword [esp + 0x38], eax
jmp 0x1004e82e
mov eax, dword [esp + 0xc]
mov esi, dword [esp + 0x18]
mov eax, dword [eax + 0xc]
lea eax, [eax + eax*4]
lea ecx, [esi + eax*8]
call fcn.10042ef0
mov eax, dword [esp + 0xc]
mov ecx, dword [esp + 0x88]
add eax, 0x14
mov edx, dword [esp + 0xc4]
jmp 0x1004cc34
lea edx, [esi + 0x3e]
mov dword [esp + 0x44], edx
movzx eax, word [edx]
mov edi, dword [esp + 0x20]
cmp eax, edi
ja 0x1004ea24
lea eax, [esi + 0x34]
mov dword [esp + 0x54], eax
mov eax, dword [eax]
cmp eax, dword [ecx]
jae 0x1004e9af
mov eax, dword [esi + 0x4c]
mov dword [esp + 0x38], eax
test eax, eax
jne 0x1004e822
xorps xmm0, xmm0
lea eax, [esp + 0x140]
movaps xmmword [esp + 0x140], xmm0
movaps xmmword [esp + 0x150], xmm0
movq qword [esp + 0x160], xmm0
mov edx, dword [ecx]
mov ecx, dword [esi + 0x2c]
push eax
call fcn.10043640
mov edx, eax
add esp, 4
mov dword [esp + 0x1c], edx
test edx, edx
jne 0x1005357c
mov eax, dword [esp + 0x148]
mov edx, dword [esp + 0x44]
mov dword [esp + 0x38], eax
jmp 0x1004e82a
mov eax, dword [esp + 0x54]
mov dword [esp + 0x54], eax
mov dword [esp + 0x44], edx
movzx ecx, word [edx]
xor edx, edx
mov eax, dword [esp + 0x5c]
mov edi, dword [esp + 0x54]
mov dword [esp + 0x68], edx
lea edx, [ecx + 0x16]
mov dword [esp + 0x48], ecx
mov eax, dword [eax + ecx*4]
lea edx, [esi + edx*4]
mov edi, dword [edi]
add edi, dword [esp + 0x38]
mov dword [esp + 0x60], eax
mov eax, dword [esp + 0x5c]
mov dword [esp + 0x34], edx
mov eax, dword [eax]
add eax, dword [esp + 0x38]
mov dword [esp + 0x70], eax
nop dword [eax + eax]
movzx eax, byte [edi]
mov dword [esp + 0x74], eax
mov dword [edx], eax
mov ecx, dword [esp + 0x74]
cmp ecx, 0x80
jae 0x1004e89b
inc edi
call fcn.10046f80
mov ecx, dword [esp + 0x60]
movzx eax, al
cdq
add ecx, eax
adc dword [esp + 0x68], edx
jmp 0x1004e8c9
lea edx, [esp + 0x74]
mov ecx, edi
call fcn.100236e0
mov ecx, dword [esp + 0x34]
movzx eax, al
add edi, eax
mov eax, dword [esp + 0x74]
mov dword [ecx], eax
mov ecx, dword [esp + 0x74]
call fcn.10046f60
mov ecx, dword [esp + 0x60]
add ecx, eax
adc dword [esp + 0x68], 0
mov eax, dword [esp + 0x48]
mov edx, dword [esp + 0x5c]
inc eax
add dword [esp + 0x34], 4
mov dword [esp + 0x60], ecx
mov dword [esp + 0x48], eax
mov dword [edx + eax*4], ecx
mov edx, dword [esp + 0x34]
cmp eax, dword [esp + 0x20]
ja 0x1004e8fc
cmp edi, dword [esp + 0x70]
jb 0x1004e870
mov edx, dword [esp + 0x70]
jmp 0x1004e904
mov edx, dword [esp + 0x70]
cmp edi, edx
jb 0x1004e945
cmp edi, edx
ja 0x1004e958
cmp ecx, dword [esi + 0x50]
jne 0x1004e958
cmp dword [esp + 0x68], 0
jne 0x1004e954
mov edx, dword [esp + 0x44]
sub edi, dword [esp + 0x38]
cmp dword [esi + 0x4c], 0
mov word [edx], ax
mov eax, dword [esp + 0x54]
mov dword [eax], edi
jne 0x1004e93b
lea ecx, [esp + 0x140]
call fcn.10042980
mov edx, dword [esp + 0x44]
mov ecx, dword [esp + 0x74]
mov edi, dword [esp + 0x20]
jmp 0x1004e9b5
mov edx, dword [esp + 0x68]
test edx, edx
jb 0x1004e914
ja 0x1004e954
cmp ecx, dword [esi + 0x50]
jbe 0x1004e914
mov edx, dword [esp + 0x70]
mov eax, dword [esp + 0x5c]
cmp dword [eax], 0
jne 0x1004e967
xor eax, eax
mov edi, edx
jmp 0x1004e914
cmp dword [esi + 0x4c], 0
jne 0x1004e979
lea ecx, [esp + 0x140]
call fcn.10042980
mov edx, dword [esp + 0x64]
mov eax, dword [edx + 0xc]
test eax, eax
jle 0x1005356c
mov edi, dword [esp + 0x14]
lea eax, [eax + eax*4]
mov esi, dword [esp + 0x18]
lea eax, [eax - 5]
lea eax, [edx + eax*4]
mov ecx, dword [esp + 0x88]
add eax, 0x14
mov edx, dword [esp + 0xc4]
jmp 0x1004cc34
xor ecx, ecx
mov dword [esp + 0x74], ecx
movzx eax, word [edx]
cmp eax, edi
ja 0x1004ea2c
mov edx, dword [esp + 0xc]
mov esi, dword [esp + 0x18]
cmp byte [edx + 1], 0xf6
mov eax, dword [edx + 0xc]
lea eax, [eax + eax*4]
lea ecx, [esi + eax*8]
jne 0x1004ea01
mov edx, dword [edx + 0x10]
push 0x2000
call fcn.10043140
mov eax, dword [esp + 0x10]
add esp, 4
mov edi, dword [esp + 0x14]
mov ecx, dword [esp + 0x88]
add eax, 0x14
mov edx, dword [esp + 0xc4]
jmp 0x1004cc34
call fcn.10042ef0
mov eax, dword [esp + 0xc]
mov edi, dword [esp + 0x14]
mov ecx, dword [esp + 0x88]
add eax, 0x14
mov edx, dword [esp + 0xc4]
jmp 0x1004cc34
mov ecx, dword [esi + edi*4 + 0x58]
mov dword [esp + 0x74], ecx
mov eax, dword [esp + 0xc]
mov edx, dword [esp + 0x18]
mov eax, dword [eax + 0xc]
lea eax, [eax + eax*4]
lea edi, [edx + eax*8]
mov eax, 0x9000
mov dword [esp + 0x48], edi
test word [edi + 0x10], ax
je 0x1004ea57
mov ecx, edi
call fcn.10042ef0
mov ecx, dword [esp + 0x74]
mov edi, dword [esp + 0x20]
mov edx, dword [esp + 0x5c]
mov eax, dword [esi + 0x54]
cmp eax, dword [edx + edi*4 + 4]
mov edi, dword [esp + 0x48]
jb 0x1004eb3a
mov eax, dword [esp + 0x20]
mov eax, dword [edx + eax*4]
add eax, dword [esi + 0x4c]
mov dword [esp + 0x48], eax
cmp ecx, 0xc
jae 0x1004ea95
mov edx, ecx
mov ecx, eax
push edi
call fcn.10046f90
add esp, 4
jmp 0x10053466
mov al, byte [esp + 0x58]
lea esi, [ecx - 0xc]
shr esi, 1
mov dword [edi + 0xc], esi
mov byte [edi + 0x12], al
lea edx, [esi + 2]
cmp dword [edi + 0x18], edx
jge 0x1004eafd
mov eax, dword [esp + 0x10]
cmp esi, dword [eax + 0x78]
jg 0x10053746
mov eax, 1
mov ecx, edi
push 0
mov word [edi + 0x10], ax
call fcn.10042380
add esp, 4
test eax, eax
je 0x1004eb03
mov edi, dword [esp + 0x14]
mov eax, dword [esp + 0x10]
mov ecx, eax
call fcn.1001ef20
push str.out_of_memory
push edi
call fcn.10043ed0
mov edx, 7
add esp, 8
mov dword [esp + 0x1c], edx
jmp 0x10053580
mov eax, dword [edi + 0x20]
mov dword [edi + 8], eax
push esi
push dword [esp + 0x4c]
push dword [edi + 8]
call fcn.1012bff0
mov eax, dword [edi + 8]
add esp, 0xc
mov byte [esi + eax], 0
mov eax, dword [edi + 8]
mov byte [esi + eax + 1], 0
mov eax, dword [esp + 0x74]
and eax, 1
mov ax, word [eax*2 + 0x1014de48]
mov word [edi + 0x10], ax
jmp 0x10053466
mov al, byte [esp + 0x58]
mov byte [edi + 0x12], al
mov eax, dword [esp + 0xc]
mov edx, dword [esp + 0x74]
movzx eax, word [eax + 2]
test al, 0xc0
je 0x1004eb5f
cmp edx, 0xc
jb 0x1004eb5b
test dl, 1
je 0x1004eb6e
test al, al
js 0x1004eb6e
mov ecx, edx
call fcn.10046f60
test eax, eax
jne 0x1004eb81
mov edx, dword [esp + 0x74]
push edi
mov ecx, 0x10150e68
call fcn.10046f90
add esp, 4
jmp 0x10053466
mov ecx, dword [esp + 0x10]
cmp eax, dword [ecx + 0x78]
jg 0x10053746
mov ecx, dword [esp + 0x20]
push edi
push eax
mov eax, dword [esp + 0x64]
mov edx, dword [eax + ecx*4]
mov ecx, dword [esi + 0x2c]
call fcn.10043560
mov edx, eax
add esp, 8
mov dword [esp + 0x1c], edx
test edx, edx
jne 0x1005357c
mov edx, dword [esp + 0x74]
mov ecx, dword [edi + 8]
push edi
call fcn.10046f90
mov eax, 0xbfff
add esp, 4
and word [edi + 0x10], ax
jmp 0x10053466
mov ecx, dword [esp + 0xc]
mov eax, dword [ecx + 4]
mov edx, dword [ecx + 0x10]
xor ecx, ecx
mov dword [esp + 0x34], edx
mov dword [esp + 0x38], ecx
lea eax, [eax + eax*4]
mov edi, dword [edx + 4]
lea esi, [esi + eax*8]
xor eax, eax
mov dword [esp + 0x28], edi
cmp ax, word [edx + 0x22]
jge 0x10053466
add edi, 8
mov dword [esp + 0x48], edi
movzx eax, word [edi + 6]
test al, 0x60
je 0x1004ec24
test al, 0x20
jne 0x1004ece2
mov eax, dword [esp + 0xc]
cmp dword [eax + 0xc], 0
jne 0x1004ecdf
push dword [esp + 0x58]
mov dl, byte [edi]
mov ecx, esi
call fcn.1004c780
movzx ecx, word [esi + 0x10]
add esp, 4
mov dword [esp + 0x60], ecx
test cl, 1
jne case.default.0x1004ec5a
mov eax, dword [edi - 4]
shr eax, 4
and eax, 0xf
lea edx, [eax - 2]
cmp edx, 4
ja case.default.0x1004ec5a
jmp dword [edx*4 + 0x10053f50]
test cl, 0x10
jmp 0x1004ecd1
test cl, 4
jmp 0x1004ecd1
test cl, 2
jmp 0x1004ecd1
test cl, 4
je 0x1004ecce
mov edi, dword [esi]
mov edx, edi
mov eax, dword [esi + 4]
add edx, 0
adc eax, 0x8000
cmp eax, 0xffff
ja 0x1004eca7
jb 0x1004ec92
cmp edx, 0xffffffff
ja 0x1004eca7
or ecx, 0x20
movzx eax, cx
and eax, 0xfffb
mov word [esi + 0x10], ax
mov edi, dword [esp + 0x48]
jmp case.default.0x1004ec5a
mov edx, dword [esi + 4]
mov ecx, edi
call fcn.1013c580
mov eax, dword [esp + 0x60]
or eax, 8
movsd qword [esi], xmm0
movzx eax, ax
and eax, 0xfffb
mov word [esi + 0x10], ax
mov edi, dword [esp + 0x48]
jmp case.default.0x1004ec5a
test cl, 0x28
je 0x10053598
mov ecx, dword [esp + 0x38]
mov edx, dword [esp + 0x34]
add esi, 0x28
movsx eax, word [edx + 0x22]
inc ecx
add edi, 0x10
mov dword [esp + 0x38], ecx
mov dword [esp + 0x48], edi
cmp ecx, eax
jl 0x1004ec06
jmp 0x10053466
mov ecx, dword [esp + 0xc]
mov eax, dword [ecx + 4]
mov edi, dword [ecx + 0x10]
lea eax, [eax + eax*4]
lea esi, [esi + eax*8]
mov al, byte [edi]
push dword [esp + 0x58]
mov dl, al
mov ecx, esi
call fcn.1004c780
add esp, 4
cmp byte [edi], 0x45
jne 0x1004ed7b
movzx ecx, word [esi + 0x10]
mov dword [esp + 0x48], ecx
test cl, 4
je 0x1004ed7b
mov edx, dword [esi]
mov eax, dword [esi + 4]
add edx, 0
adc eax, 0x8000
cmp eax, 0xffff
ja 0x1004ed5d
jb 0x1004ed4e
cmp edx, 0xffffffff
ja 0x1004ed5d
and ecx, 0xfffb
or ecx, 0x20
mov word [esi + 0x10], cx
jmp 0x1004ed7b
mov edx, dword [esi + 4]
mov ecx, dword [esi]
call fcn.1013c580
mov eax, dword [esp + 0x48]
and eax, 0xfffb
movsd qword [esi], xmm0
or eax, 8
mov word [esi + 0x10], ax
mov al, byte [edi + 1]
inc edi
test al, al
je 0x10053466
add esi, 0x28
jmp 0x1004ed11
mov ecx, dword [esp + 0xc]
xorps xmm0, xmm0
xor edx, edx
movlpd qword [esp + 0x28], xmm0
mov dword [esp + 0x5c], edx
movlpd qword [esp + 0x48], xmm0
mov eax, dword [ecx + 4]
mov edi, dword [ecx + 0x10]
lea eax, [eax + eax*4]
lea ecx, [esi + eax*8]
mov esi, dword [esp + 0xc]
mov dword [esp + 0x54], ecx
mov eax, dword [esi + 8]
lea eax, [eax + eax*4]
mov dword [esp + 0x70], eax
mov eax, dword [esi + 0xc]
mov esi, dword [esp + 0x18]
lea eax, [eax + eax*4]
lea eax, [esi + eax*8]
mov dword [esp + 0x34], eax
test edi, edi
je 0x1004ee1b
mov al, byte [edi]
lea esi, [ecx + 0x10]
nop dword [eax]
push dword [esp + 0x58]
lea ecx, [esi - 0x10]
mov dl, al
call fcn.1004c780
add esp, 4
cmp byte [edi], 0x45
jne 0x1004ee08
movzx eax, word [esi]
test al, 4
je 0x1004ee08
and eax, 0xfffb
or eax, 0x20
mov word [esi], ax
mov al, byte [edi + 1]
inc edi
add esi, 0x28
test al, al
jne 0x1004ede0
mov edx, dword [esp + 0x5c]
mov ecx, dword [esp + 0x54]
mov eax, dword [esp + 0x70]
mov esi, dword [esp + 0x28]
mov edi, dword [esp + 0x2c]
mov dword [esp + 0x20], esi
lea eax, [eax*8 - 0xc]
add eax, ecx
mov ecx, dword [esp + 0x4c]
mov dword [esp + 0x44], ecx
mov ecx, dword [esp + 0x48]
mov dword [esp + 0x60], ecx
movzx ecx, word [eax - 0xc]
mov dword [esp + 0x68], eax
mov dword [esp + 0x28], ecx
test cl, 1
je 0x1004ee6a
and ecx, 0x400
neg ecx
sbb ecx, ecx
and ecx, 0xa
inc edx
mov dword [eax], ecx
jmp 0x1004f0d3
test cl, 0x24
je 0x1004f02f
mov edx, dword [eax - 0x1c]
mov eax, dword [eax - 0x18]
mov dword [esp + 0x38], edx
mov dword [esp + 0x48], eax
test eax, eax
jg 0x1004ee8f
jl 0x1004ee8b
test edx, edx
jae 0x1004ee8f
not edx
not eax
inc dword [esp + 0x5c]
test eax, eax
ja 0x1004ef9a
jb 0x1004eea2
cmp edx, 0x7f
ja 0x1004ef06
mov ecx, dword [esp + 0x38]
mov eax, ecx
and eax, 1
mov dword [esp + 0x38], 0
cmp eax, ecx
jne 0x1004eee4
mov eax, dword [esp + 0x38]
cmp eax, dword [esp + 0x48]
jne 0x1004eee4
mov eax, dword [esp + 0x14]
cmp byte [eax + 0x93], 4
jb 0x1004eee4
mov ecx, dword [esp + 0x68]
lea eax, [edx + 8]
mov edx, dword [esp + 0x5c]
mov dword [ecx], eax
mov eax, dword [esp + 0x68]
jmp 0x1004f0d7
mov ecx, dword [esp + 0x68]
add esi, 1
mov edx, dword [esp + 0x5c]
mov eax, 1
mov dword [esp + 0x20], esi
adc edi, 0
mov dword [ecx], eax
mov eax, dword [esp + 0x68]
jmp 0x1004f0d7
test eax, eax
ja 0x1004ef9a
jb 0x1004ef18
cmp edx, 0x7fff
ja 0x1004ef3a
mov ecx, dword [esp + 0x68]
add esi, 2
mov edx, dword [esp + 0x5c]
mov eax, 2
mov dword [esp + 0x20], esi
adc edi, 0
mov dword [ecx], eax
mov eax, dword [esp + 0x68]
jmp 0x1004f0d7
test eax, eax
ja 0x1004ef9a
jb 0x1004ef48
cmp edx, 0x7fffff
ja 0x1004ef6a
mov ecx, dword [esp + 0x68]
add esi, 3
mov edx, dword [esp + 0x5c]
mov eax, 3
mov dword [esp + 0x20], esi
adc edi, 0
mov dword [ecx], eax
mov eax, dword [esp + 0x68]
jmp 0x1004f0d7
test eax, eax
ja 0x1004ef9a
jb 0x1004ef78
cmp edx, 0x7fffffff
ja 0x1004ef9a
mov ecx, dword [esp + 0x68]
add esi, 4
mov edx, dword [esp + 0x5c]
mov eax, 4
mov dword [esp + 0x20], esi
adc edi, 0
mov dword [ecx], eax
mov eax, dword [esp + 0x68]
jmp 0x1004f0d7
cmp eax, 0x7fff
ja 0x1004efca
jb 0x1004efa8
cmp edx, 0xffffffff
ja 0x1004efca
mov ecx, dword [esp + 0x68]
add esi, 6
mov edx, dword [esp + 0x5c]
mov eax, 5
mov dword [esp + 0x20], esi
adc edi, 0
mov dword [ecx], eax
mov eax, dword [esp + 0x68]
jmp 0x1004f0d7
add esi, 8
mov dword [esp + 0x20], esi
adc edi, 0
test cl, 0x20
je 0x1004f017
mov edx, dword [esp + 0x48]
mov ecx, dword [esp + 0x38]
call fcn.1013c580
mov eax, dword [esp + 0x68]
mov ecx, dword [esp + 0x68]
mov edx, dword [esp + 0x5c]
movsd qword [eax - 0x1c], xmm0
mov eax, dword [esp + 0x28]
and eax, 0xffdf
or eax, 8
mov word [ecx - 0xc], ax
mov eax, 7
mov dword [ecx], eax
mov eax, dword [esp + 0x68]
jmp 0x1004f0d7
mov ecx, dword [esp + 0x68]
mov eax, 6
mov edx, dword [esp + 0x5c]
mov dword [ecx], eax
mov eax, dword [esp + 0x68]
jmp 0x1004f0d7
test cl, 8
je 0x1004f04a
inc edx
mov dword [eax], 7
add esi, 8
mov dword [esp + 0x20], esi
adc edi, 0
jmp 0x1004f0d3
mov edx, dword [eax - 0x10]
mov eax, ecx
shr eax, 1
and eax, 1
mov dword [esp + 0x48], edx
lea eax, [eax + edx*2]
add eax, 0xc
mov dword [esp + 0x38], eax
test ecx, 0x400
je 0x1004f0ad
mov ecx, dword [esp + 0x68]
add ecx, 0xffffffe4
mov edx, dword [ecx]
lea eax, [eax + edx*2]
mov dword [esp + 0x38], eax
mov eax, esi
or eax, edi
je 0x1004f09a
call fcn.10042710
test eax, eax
jne 0x1004ead2
mov eax, dword [esp + 0x68]
mov edx, dword [esp + 0x48]
add edx, dword [eax - 0x1c]
jmp 0x1004f0a9
mov eax, edx
cdq
add dword [esp + 0x60], eax
adc dword [esp + 0x44], edx
mov edx, dword [esp + 0x48]
mov eax, dword [esp + 0x38]
add esi, edx
push 0
push eax
mov dword [esp + 0x28], esi
adc edi, 0
call fcn.10023760
mov ecx, dword [esp + 0x70]
add esp, 8
mov edx, dword [esp + 0x5c]
add edx, eax
mov eax, dword [esp + 0x38]
mov dword [ecx], eax
mov eax, ecx
mov dword [esp + 0x5c], edx
add eax, 0xffffffe4
cmp eax, dword [esp + 0x54]
je 0x1004f0ec
mov eax, dword [esp + 0x68]
sub eax, 0x28
jmp 0x1004ee44
cmp edx, 0x7e
jle 0x1004f11e
mov eax, edx
cdq
push edx
push eax
call fcn.10023760
mov esi, eax
mov eax, dword [esp + 0x64]
add eax, esi
mov dword [esp + 0x64], eax
cdq
push edx
push eax
call fcn.10023760
mov edx, dword [esp + 0x6c]
add esp, 0x10
cmp esi, eax
mov esi, dword [esp + 0x20]
jge 0x1004f123
inc edx
mov dword [esp + 0x5c], edx
mov eax, edx
cdq
mov ecx, eax
mov eax, edx
add esi, ecx
mov dword [esp + 0x28], eax
mov dword [esp + 0x48], ecx
mov ecx, esi
adc edi, eax
mov eax, dword [esp + 0x34]
add ecx, dword [esp + 0x60]
adc edi, dword [esp + 0x44]
mov eax, dword [eax + 0x18]
cdq
cmp edi, edx
jg 0x1004f15e
jl 0x1004f152
cmp ecx, eax
ja 0x1004f15e
mov edx, dword [esp + 0x34]
mov eax, dword [edx + 0x20]
mov dword [edx + 8], eax
jmp 0x1004f18f
mov eax, dword [esp + 0x10]
mov eax, dword [eax + 0x78]
cdq
cmp edi, edx
jg 0x10053746
jl 0x1004f178
cmp ecx, eax
ja 0x10053746
mov ecx, dword [esp + 0x34]
mov edx, esi
call fcn.10042610
test eax, eax
jne 0x1004ead2
mov edx, dword [esp + 0x34]
mov ecx, dword [esp + 0x60]
mov eax, 0x10
mov word [edx + 0x10], ax
mov eax, ecx
or eax, dword [esp + 0x44]
mov dword [edx + 0xc], esi
je 0x1004f1b2
mov eax, 0x410
mov dword [edx], ecx
mov word [edx + 0x10], ax
mov ecx, dword [edx + 8]
mov eax, dword [esp + 0x5c]
mov dword [esp + 0x20], ecx
lea esi, [ecx + eax]
cmp eax, 0x80
jge 0x1004f1cc
mov byte [ecx], al
inc ecx
jmp 0x1004f1e2
push dword [esp + 0x28]
push dword [esp + 0x4c]
call fcn.100234e0
mov ecx, dword [esp + 0x28]
add esp, 8
add ecx, eax
mov edi, dword [esp + 0x54]
mov dword [esp + 0x20], ecx
add edi, 0xc
nop dword [eax]
mov edx, dword [edi + 0x10]
cmp edx, 7
ja 0x1004f235
mov byte [ecx], dl
inc ecx
mov dword [esp + 0x20], ecx
test edx, edx
je 0x1004f27f
movzx edx, byte [edx + 0x10151508]
mov ecx, dword [edi - 0xc]
mov eax, dword [edi - 8]
mov dword [esp + 0x28], edx
sub edx, 1
mov byte [edx + esi], cl
je 0x1004f22f
shrd ecx, eax, 8
shr eax, 8
sub edx, 1
mov byte [edx + esi], cl
jne 0x1004f220
add esi, dword [esp + 0x28]
jmp 0x1004f27b
cmp edx, 0x80
jae 0x1004f251
mov byte [ecx], dl
inc ecx
mov dword [esp + 0x20], ecx
cmp edx, 0xe
jb 0x1004f27f
mov eax, dword [edi]
test eax, eax
jle 0x1004f27f
jmp 0x1004f26c
push 0
push edx
call fcn.100234e0
mov ecx, dword [esp + 0x28]
add esp, 8
add ecx, eax
mov eax, dword [edi]
mov dword [esp + 0x20], ecx
test eax, eax
je 0x1004f27f
push eax
push dword [edi - 4]
push esi
call fcn.1012bff0
add esp, 0xc
add esi, dword [edi]
mov ecx, dword [esp + 0x20]
mov eax, dword [esp + 0x70]
lea eax, [eax*8 - 0x1c]
add eax, dword [esp + 0x54]
cmp edi, eax
je 0x10053466
add edi, 0x28
jmp 0x1004f1f0
mov ecx, dword [esp + 0xc]
mov eax, dword [edi + 0x60]
mov ecx, dword [ecx + 4]
mov eax, dword [eax + ecx*4]
mov edx, dword [eax + 0x2c]
mov eax, dword [esp + 0xc]
cmp dword [eax + 0xc], 0
je 0x1004f2cf
mov ecx, edx
call fcn.1003a2d0
mov dword [esp + 0xf8], eax
mov dword [esp + 0xfc], edx
jmp 0x1004f2fd
mov ecx, dword [esp + 0x10]
lea eax, [esp + 0xf8]
xorps xmm0, xmm0
push eax
movlpd qword [esp + 0xfc], xmm0
call fcn.1003fe10
mov edx, eax
add esp, 4
mov dword [esp + 0x1c], edx
test edx, edx
jne 0x10053580
mov edx, dword [esp + 0xc]
mov ecx, edi
call fcn.1004ca20
mov ecx, dword [esp + 0xf8]
mov edx, dword [esp + 0xfc]
mov dword [eax], ecx
mov dword [eax + 4], edx
jmp 0x10051af9
mov ecx, dword [esp + 0xc]
mov eax, dword [ecx + 4]
test eax, eax
mov edi, dword [ecx + 0x10]
mov dword [esp + 0x44], eax
mov eax, dword [esp + 0x10]
jne 0x1004f401
cmp dword [eax + 0xc4], 0
jg 0x100535d7
mov ecx, edi
call fcn.10022380
mov esi, eax
xor edx, edx
mov eax, dword [esp + 0x10]
mov dword [esp + 0x28], esi
mov ecx, dword [eax + 0x1fc]
add ecx, dword [eax + 0x1f8]
push ecx
mov ecx, eax
call fcn.100ad060
mov edx, eax
add esp, 4
mov dword [esp + 0x1c], edx
test edx, edx
jne 0x1005357c
mov ecx, dword [esp + 0x10]
lea eax, [esi + 0x21]
push edx
push eax
call fcn.1001ec50
mov esi, eax
add esp, 8
test esi, esi
je 0x1004f6cb
mov ecx, dword [esp + 0x28]
lea edx, [esi + 0x20]
inc ecx
mov dword [esi], edx
push ecx
push edi
push edx
call fcn.1012bff0
mov edx, dword [esp + 0x1c]
add esp, 0xc
cmp byte [edx + 0x55], 0
je 0x1004f3c3
mov byte [edx + 0x55], 0
mov byte [edx + 0x5d], 1
jmp 0x1004f3c9
inc dword [edx + 0x1f8]
mov eax, dword [edx + 0x1ec]
mov dword [esi + 0x18], eax
mov eax, dword [edx + 0x200]
mov ecx, dword [edx + 0x204]
mov dword [edx + 0x1ec], esi
mov dword [esi + 8], eax
mov dword [esi + 0xc], ecx
mov eax, dword [edx + 0x208]
mov ecx, dword [edx + 0x20c]
mov dword [esi + 0x10], eax
mov dword [esi + 0x14], ecx
jmp 0x1004f6cb
mov esi, dword [eax + 0x1ec]
xor ecx, ecx
mov dword [esp + 0x20], ecx
test esi, esi
je 0x1004f429
mov ecx, dword [esi]
mov edx, edi
call fcn.100226f0
test eax, eax
je 0x1004f44a
inc dword [esp + 0x20]
mov esi, dword [esi + 0x18]
test esi, esi
jne 0x1004f411
push edi
mov edi, dword [esp + 0x18]
push str.no_such_savepoint:__s
push edi
call fcn.10043ed0
mov edx, 1
add esp, 0xc
mov dword [esp + 0x1c], edx
jmp 0x10053580
mov eax, dword [esp + 0x10]
mov edx, dword [esp + 0x44]
cmp dword [eax + 0xc4], 0
jle 0x1004f464
cmp edx, 1
je 0x100535f4
cmp dword [esi + 0x18], 0
jne 0x1004f4d6
cmp byte [eax + 0x5d], 0
je 0x1004f4d6
mov dword [esp + 0x54], 1
cmp edx, 1
jne 0x1004f4de
mov ecx, dword [esp + 0x14]
call fcn.10046720
mov edi, eax
test edi, edi
jne 0x10053b7c
mov eax, dword [esp + 0x10]
mov edi, dword [esp + 0x14]
mov ecx, edi
mov byte [eax + 0x55], 1
call fcn.10046790
cmp eax, 5
je 0x10053621
mov edx, dword [edi + 0x24]
mov dword [esp + 0x1c], edx
test edx, edx
jne 0x10053614
mov edx, dword [esp + 0x10]
mov eax, dword [esp + 0x54]
mov dword [esp + 0x54], eax
mov byte [edx + 0x5d], 0
lea edi, [edx + 0x1f8]
jmp 0x1004f61a
mov dword [esp + 0x54], 0
add eax, 0x1f8
mov dword [esp + 0x34], eax
mov eax, dword [eax]
sub eax, dword [esp + 0x20]
dec eax
mov dword [esp + 0x20], eax
cmp edx, 2
jne 0x1004f570
mov edi, dword [esp + 0x10]
mov dword [esp + 0x48], 0
mov ecx, dword [edi + 0x18]
and ecx, 1
cmp dword [edi + 0x14], 0
mov dword [esp + 0x38], ecx
jle 0x1004f576
mov eax, ecx
xor eax, 1
xor edi, edi
mov dword [esp + 0x28], eax
push eax
mov eax, dword [esp + 0x14]
mov edx, 0x204
mov ecx, dword [eax + 0x10]
mov ecx, dword [edi + ecx + 4]
call fcn.10038960
mov edx, eax
add esp, 4
mov dword [esp + 0x1c], edx
test edx, edx
jne 0x1005357c
mov eax, dword [esp + 0x48]
add edi, 0x10
mov ecx, dword [esp + 0x10]
inc eax
mov dword [esp + 0x48], eax
cmp eax, dword [ecx + 0x14]
mov eax, dword [esp + 0x28]
jl 0x1004f522
mov eax, dword [esp + 0x20]
mov ecx, dword [esp + 0x38]
mov edx, dword [esp + 0x44]
jmp 0x1004f576
xor ecx, ecx
mov dword [esp + 0x38], ecx
mov edi, dword [esp + 0x10]
mov dword [esp + 0x48], 0
cmp dword [edi + 0x14], 0
jle 0x1004f5d7
xor edi, edi
nop word [eax + eax]
push eax
mov eax, dword [esp + 0x14]
mov ecx, dword [eax + 0x10]
mov ecx, dword [edi + ecx + 4]
call fcn.10038c00
mov edx, eax
add esp, 4
mov dword [esp + 0x1c], edx
test edx, edx
jne 0x1005357c
mov eax, dword [esp + 0x48]
add edi, 0x10
mov ecx, dword [esp + 0x10]
inc eax
mov edx, dword [esp + 0x44]
mov dword [esp + 0x48], eax
cmp eax, dword [ecx + 0x14]
mov eax, dword [esp + 0x20]
jl 0x1004f590
mov ecx, dword [esp + 0x38]
mov edi, dword [esp + 0x10]
test ecx, ecx
je 0x1004f606
mov ecx, dword [edi + 4]
test ecx, ecx
je 0x1004f5fb
mov eax, dword [ecx + 0x98]
and eax, 0xfffffffd
or eax, 1
mov dword [ecx + 0x98], eax
mov ecx, dword [ecx + 8]
test ecx, ecx
jne 0x1004f5e2
mov ecx, edi
call fcn.1006feb0
or dword [edi + 0x18], 1
mov edx, dword [esp + 0x1c]
mov edi, dword [esp + 0x34]
test edx, edx
jne 0x1005357c
mov edx, dword [esp + 0x10]
mov ecx, dword [edx + 0x1ec]
cmp ecx, esi
je 0x1004f648
mov eax, dword [ecx + 0x18]
mov dword [edx + 0x1ec], eax
mov edx, ecx
mov ecx, dword [esp + 0x10]
call fcn.1001e7b0
mov edx, dword [esp + 0x10]
dec dword [edi]
mov ecx, dword [edx + 0x1ec]
cmp ecx, esi
jne 0x1004f624
mov edx, dword [esp + 0x44]
cmp edx, 1
jne 0x1004f678
mov ecx, dword [esp + 0x10]
mov edx, esi
mov eax, dword [esi + 0x18]
mov dword [ecx + 0x1ec], eax
call fcn.1001e7b0
cmp dword [esp + 0x54], 0
jne 0x1004f6cb
dec dword [edi]
mov edx, dword [esp + 0x44]
mov eax, dword [esp + 0x10]
jmp 0x1004f6ae
cmp dword [esp + 0x54], 0
mov edi, dword [esp + 0x10]
mov eax, dword [esi + 8]
mov ecx, dword [esi + 0xc]
mov dword [edi + 0x200], eax
mov dword [edi + 0x204], ecx
mov eax, dword [esi + 0x10]
mov ecx, dword [esi + 0x14]
mov dword [edi + 0x208], eax
mov eax, edi
mov dword [eax + 0x20c], ecx
je 0x1004f6ae
cmp edx, 2
jne 0x1004f6cb
mov ecx, dword [esp + 0x20]
push ecx
mov ecx, eax
call fcn.100ad060
mov edx, eax
add esp, 4
mov dword [esp + 0x1c], edx
test edx, edx
jne 0x1005357c
mov edi, dword [esp + 0x14]
cmp byte [edi + 0x95], 3
je 0x10053656
mov eax, dword [esp + 0xc]
mov esi, dword [esp + 0x18]
mov ecx, dword [esp + 0x88]
add eax, 0x14
mov edx, dword [esp + 0xc4]
jmp 0x1004cc34
mov ecx, dword [esp + 0xc]
mov dword [esp + 0x38], 0
mov esi, dword [ecx + 8]
test esi, esi
je 0x1004f72d
mov eax, dword [esp + 0x10]
mov ecx, dword [eax + 0x24]
mov edx, dword [eax + 0x20]
and ecx, 2
mov eax, edx
and eax, 0x100000
or eax, ecx
jne 0x10053660
mov ecx, dword [esp + 0xc]
mov eax, dword [ecx + 4]
mov ecx, dword [esp + 0x10]
shl eax, 4
add eax, dword [ecx + 0x10]
mov dword [esp + 0x48], eax
mov eax, dword [eax + 4]
mov dword [esp + 0x28], eax
test eax, eax
je 0x1004f822
lea ecx, [esp + 0x38]
mov edx, esi
push ecx
mov ecx, eax
call fcn.10037820
mov edx, eax
add esp, 4
mov dword [esp + 0x1c], edx
test edx, edx
jne 0x1005368b
test byte [edi + 0x98], 0x20
lea esi, [edi + 0x98]
mov edi, esi
je 0x1004f834
mov eax, dword [esp + 0xc]
cmp dword [eax + 8], edx
je 0x1004f834
mov edi, dword [esp + 0x10]
cmp byte [edi + 0x55], dl
je 0x1004f7ac
mov eax, dword [esp + 0x10]
mov edi, esi
cmp dword [eax + 0xc0], 1
jle 0x1004f834
mov edi, eax
mov ecx, dword [esp + 0x14]
mov eax, dword [ecx + 0x30]
test eax, eax
jne 0x1004f7cc
mov eax, dword [edi + 0x1f8]
inc dword [edi + 0x1fc]
add eax, dword [edi + 0x1fc]
mov dword [ecx + 0x30], eax
dec eax
xor edx, edx
push eax
mov ecx, edi
call fcn.100ad060
add esp, 4
mov dword [esp + 0x1c], eax
test eax, eax
jne 0x1004f7f6
mov eax, dword [esp + 0x14]
mov ecx, dword [esp + 0x28]
mov edx, dword [eax + 0x30]
call fcn.10038ba0
mov dword [esp + 0x1c], eax
mov edx, dword [esp + 0x14]
mov eax, dword [edi + 0x200]
mov ecx, dword [edi + 0x204]
mov dword [edx + 0x48], eax
mov dword [edx + 0x4c], ecx
mov eax, dword [edi + 0x208]
mov ecx, dword [edi + 0x20c]
mov edi, esi
mov dword [edx + 0x50], eax
mov dword [edx + 0x54], ecx
jmp 0x1004f828
add edi, 0x98
mov edx, dword [esp + 0x1c]
test edx, edx
jne 0x1005357c
mov eax, dword [esp + 0xc]
cmp word [eax + 2], 0
je 0x1005346a
mov ecx, dword [esp + 0xc]
mov esi, edi
mov eax, dword [esp + 0x38]
cmp eax, dword [ecx + 0xc]
jne 0x100536c0
mov eax, dword [esp + 0x48]
mov eax, dword [eax + 0xc]
mov eax, dword [eax + 4]
cmp eax, dword [ecx + 0x10]
je 0x10053466
mov eax, dword [esp + 0x14]
lea esi, [eax + 0x98]
jmp 0x100536c4
mov edx, dword [esp + 0xc]
lea eax, [esp + 0x11c]
mov ecx, dword [esp + 0x10]
push eax
mov eax, dword [edx + 4]
mov ecx, dword [ecx + 0x10]
add eax, eax
mov edx, dword [edx + 0xc]
mov ecx, dword [ecx + eax*8 + 4]
call fcn.1003fcf0
mov eax, dword [esp + 0x10]
add esp, 4
mov eax, dword [eax + 8]
lea ecx, [eax + eax*4]
mov eax, dword [edi + 0x58]
lea ecx, [eax + ecx*8]
mov eax, 0x9000
test word [ecx + 0x10], ax
je 0x1004f8e8
call fcn.1004ca00
mov ecx, eax
mov eax, dword [esp + 0x11c]
cdq
mov dword [ecx], eax
mov eax, dword [esp + 0xc]
mov dword [ecx + 4], edx
mov ecx, dword [esp + 0x88]
add eax, 0x14
mov edx, dword [esp + 0xc4]
jmp 0x1004cc34
mov eax, 4
mov word [ecx + 0x10], ax
mov eax, dword [esp + 0x11c]
cdq
mov dword [ecx], eax
mov eax, dword [esp + 0xc]
mov dword [ecx + 4], edx
mov ecx, dword [esp + 0x88]
add eax, 0x14
mov edx, dword [esp + 0xc4]
jmp 0x1004cc34
mov ecx, dword [esp + 0xc]
mov eax, dword [esp + 0x10]
mov esi, dword [ecx + 4]
push dword [ecx + 0xc]
mov edx, dword [ecx + 8]
shl esi, 4
add esi, dword [eax + 0x10]
mov ecx, dword [esi + 4]
call fcn.1003fd50
mov edx, dword [esp + 0x10]
add esp, 4
mov dword [esp + 0x1c], eax
mov eax, dword [edx + 8]
cmp eax, 1
jne 0x1004f970
movzx eax, word [edx + 2]
mov ecx, dword [edx + 0xc]
sub ecx, eax
mov eax, dword [esi + 0xc]
mov dword [eax], ecx
mov eax, dword [esp + 0x10]
mov ecx, eax
or dword [eax + 0x18], 1
mov edx, dword [edx + 4]
call fcn.10081fd0
mov edx, dword [esp + 0xc]
jmp 0x1004f97e
cmp eax, 2
jne 0x1004f97e
mov ecx, dword [esi + 0xc]
mov al, byte [edx + 0xc]
mov byte [ecx + 0x4c], al
cmp dword [edx + 4], 1
jne 0x1004f996
mov ecx, dword [esp + 0x10]
xor edx, edx
call fcn.100489f0
and dword [edi + 0x98], 0xfffffffc
mov edx, dword [esp + 0x1c]
test edx, edx
jne 0x10053580
mov eax, dword [esp + 0xc]
mov esi, dword [esp + 0x18]
mov ecx, dword [esp + 0x88]
add eax, 0x14
mov edx, dword [esp + 0xc4]
jmp 0x1004cc34
mov edx, dword [esp + 0xc]
mov eax, dword [edi + 0x60]
mov ecx, dword [edx + 4]
mov esi, dword [eax + ecx*4]
test esi, esi
je 0x1004f9e6
mov eax, dword [esi + 0x38]
cmp eax, dword [edx + 8]
jne 0x1004f9e6
mov ecx, dword [esi + 0x2c]
call fcn.10034830
jmp 0x1004fb09
mov cl, byte [esp + 0x27]
jmp 0x1004f9f0
mov edx, dword [esp + 0xc]
mov eax, dword [edi + 0x98]
mov esi, dword [esp + 0x10]
and al, 3
cmp al, 1
je 0x10053728
mov eax, dword [esp + 0xc]
mov edx, dword [edx + 8]
mov dword [esp + 0x28], 0
mov dword [esp + 0x38], 0
mov eax, dword [eax + 0xc]
mov dword [esp + 0x34], eax
shl eax, 4
add eax, dword [esi + 0x10]
cmp cl, 0x71
mov ecx, dword [esp + 0xc]
mov dword [esp + 0x48], edx
mov esi, dword [eax + 4]
mov dword [esp + 0x60], esi
jne 0x1004fa60
mov eax, dword [eax + 0xc]
movzx edi, word [ecx + 2]
mov esi, dword [esp + 0x14]
and edi, 8
or edi, 4
mov al, byte [eax + 0x4c]
cmp al, byte [esi + 0x93]
jae 0x1004fa62
mov byte [esi + 0x93], al
jmp 0x1004fa62
xor edi, edi
test byte [ecx + 2], 0x10
je 0x1004fa83
mov ecx, dword [esp + 0x18]
lea eax, [edx + edx*4]
lea esi, [ecx + eax*8]
mov ecx, esi
call fcn.10042b20
mov eax, dword [esi]
mov ecx, dword [esp + 0xc]
mov dword [esp + 0x48], eax
mov al, byte [ecx + 1]
cmp al, 0xf8
jne 0x1004fa97
mov eax, dword [ecx + 0x10]
mov dword [esp + 0x38], eax
movzx eax, word [eax + 8]
jmp 0x1004faa4
cmp al, 0xfd
jne 0x1004faa0
mov eax, dword [ecx + 0x10]
jmp 0x1004faa4
mov eax, dword [esp + 0x28]
mov edx, dword [ecx + 4]
mov ecx, dword [esp + 0x14]
push 0
push eax
call fcn.1004c4b0
mov esi, eax
add esp, 8
test esi, esi
je 0x1004ead2
push dword [esi + 0x2c]
mov eax, dword [esp + 0x38]
push dword [esp + 0x3c]
mov ecx, dword [esp + 0x68]
or dword [esi + 8], 4
mov byte [esi + 1], al
mov eax, dword [esp + 0x50]
mov edx, eax
push edi
mov byte [esi + 2], 1
mov dword [esi + 0x38], eax
call fcn.10038e10
mov edi, dword [esp + 0x20]
add esp, 0xc
mov dword [esp + 0x1c], eax
mov eax, dword [esp + 0x38]
mov dword [esi + 0x30], eax
mov eax, dword [esp + 0xc]
cmp byte [eax + 1], 0xf8
setne al
mov byte [esi + 4], al
mov eax, dword [esp + 0xc]
mov ecx, dword [esi + 0x2c]
movzx edx, word [eax + 2]
and edx, 3
call fcn.10034a70
mov edx, dword [esp + 0x1c]
test edx, edx
jne 0x10053580
mov eax, dword [esp + 0xc]
mov esi, dword [esp + 0x18]
mov ecx, dword [esp + 0x88]
add eax, 0x14
mov edx, dword [esp + 0xc4]
jmp 0x1004cc34
mov edx, dword [esp + 0xc]
mov eax, dword [edi + 0x60]
push 0
mov ecx, dword [edx + 8]
mov edx, dword [edx + 4]
mov edi, dword [eax + ecx*4]
mov ecx, dword [esp + 0x18]
movsx eax, word [edi + 0x3c]
push eax
call fcn.1004c4b0
mov esi, eax
add esp, 8
test esi, esi
je 0x1004ead2
mov edx, dword [esi + 8]
mov byte [esi + 2], 1
or edx, 1
mov dword [esi + 8], edx
mov eax, dword [edi + 0x30]
mov dword [esi + 0x30], eax
mov al, byte [edi + 4]
mov byte [esi + 4], al
mov eax, dword [edi + 0x38]
mov dword [esi + 0x38], eax
mov ecx, dword [edi + 8]
xor ecx, edx
and ecx, 4
xor ecx, edx
mov dword [esi + 8], ecx
or ecx, 8
mov eax, dword [edi + 0x10]
mov dword [esi + 0x10], eax
mov dword [esi + 8], ecx
or dword [edi + 8], 8
push dword [esi + 0x2c]
mov edx, dword [esi + 0x38]
push dword [esi + 0x30]
mov ecx, dword [esi + 0x10]
push 4
call fcn.10038e10
add esp, 0xc
mov dword [esp + 0x1c], eax
jmp 0x10053466
mov ecx, dword [esp + 0xc]
mov eax, dword [ecx + 0xc]
test eax, eax
jle 0x1004fbf2
lea eax, [eax + eax*4]
mov dword [esi + eax*8 + 0xc], 0
mov eax, dword [ecx + 0xc]
lea eax, [eax + eax*4]
mov dword [esi + eax*8 + 8], 0x1015671b
mov edx, dword [ecx + 4]
mov eax, dword [edi + 0x60]
mov esi, dword [eax + edx*4]
test esi, esi
je 0x1004fc67
test byte [esi + 8], 8
jne 0x1004fc67
movsx eax, word [esi + 0x3c]
cmp dword [ecx + 8], eax
jg 0x1004fc67
mov edx, dword [esi + 0x38]
mov ecx, dword [esi + 0x10]
push 0
mov dword [esi + 0x18], 0
mov dword [esi + 0x1c], 0
mov dword [esi + 0x20], 0
call fcn.1003f920
mov edx, eax
add esp, 4
mov dword [esp + 0x1c], edx
mov dword [esp + 0x28], edx
test edx, edx
jne 0x10053580
mov eax, dword [esp + 0xc]
mov byte [esi + 2], 1
mov esi, dword [esp + 0x18]
mov ecx, dword [esp + 0x88]
add eax, 0x14
mov edx, dword [esp + 0xc4]
jmp 0x1004cc34
push 0
push dword [ecx + 8]
mov ecx, edi
call fcn.1004c4b0
mov esi, eax
add esp, 8
test esi, esi
je 0x1004ead6
mov eax, dword [esp + 0xc]
lea edi, [esi + 0x10]
or dword [esi + 8], 1
xor edx, edx
push 0x41e
movzx eax, word [eax + 2]
or eax, 5
push eax
mov eax, dword [esp + 0x18]
push edi
push eax
mov ecx, dword [eax]
call fcn.10036470
mov edx, eax
add esp, 0x10
mov dword [esp + 0x1c], edx
test edx, edx
jne 0x1005357c
mov ecx, dword [edi]
lea edx, [eax + 1]
push eax
call fcn.10037820
mov edx, eax
add esp, 4
mov dword [esp + 0x1c], edx
test edx, edx
jne 0x1004fd4c
mov edx, dword [esp + 0xc]
mov ecx, dword [edi]
mov eax, dword [edx + 0x10]
mov dword [esp + 0x28], eax
mov dword [esi + 0x30], eax
test eax, eax
je 0x1004fd27
movzx eax, word [edx + 2]
lea edx, [esi + 0x38]
or eax, 2
push eax
call fcn.1003f5f0
mov edx, eax
add esp, 4
mov dword [esp + 0x1c], edx
test edx, edx
jne 0x1004fd21
push dword [esi + 0x2c]
mov edx, dword [esi + 0x38]
push dword [esp + 0x2c]
mov ecx, dword [edi]
push 4
call fcn.10038e10
mov edx, eax
add esp, 0xc
mov dword [esp + 0x1c], edx
mov byte [esi + 4], 0
jmp 0x1004fd4c
push dword [esi + 0x2c]
mov edx, 1
mov dword [esi + 0x38], 1
push 0
push 4
call fcn.10038e10
mov edx, eax
mov byte [esi + 4], 1
add esp, 0xc
mov dword [esp + 0x1c], edx
mov eax, dword [esp + 0xc]
xor ecx, ecx
cmp word [eax + 2], 8
mov eax, 4
cmovne ecx, eax
mov eax, dword [esi + 8]
and eax, 0xfffffffb
or ecx, eax
mov dword [esi + 8], ecx
test edx, edx
jne 0x10053736
mov edi, dword [esp + 0x14]
mov eax, dword [esp + 0xc]
mov byte [esi + 2], 1
mov esi, dword [esp + 0x18]
mov ecx, dword [esp + 0x88]
add eax, 0x14
mov edx, dword [esp + 0xc4]
jmp 0x1004cc34
mov ecx, dword [esp + 0xc]
push 1
push dword [ecx + 8]
mov edx, dword [ecx + 4]
mov ecx, edi
call fcn.1004c4b0
add esp, 8
test eax, eax
je 0x1004ead6
mov edx, dword [esp + 0xc]
push eax
mov ecx, dword [edx + 0x10]
mov dword [eax + 0x30], ecx
mov edx, dword [edx + 0xc]
mov ecx, dword [esp + 0x14]
call fcn.10055500
mov edx, eax
add esp, 4
mov dword [esp + 0x1c], edx
test edx, edx
jne 0x10053580
mov eax, dword [esp + 0xc]
mov ecx, dword [esp + 0x88]
add eax, 0x14
mov edx, dword [esp + 0xc4]
jmp 0x1004cc34
mov ecx, dword [esp + 0xc]
mov eax, dword [edi + 0x60]
mov ecx, dword [ecx + 4]
mov edx, dword [eax + ecx*4]
mov edi, dword [edx + 0x18]
mov ecx, edi
mov esi, dword [edx + 0x1c]
add ecx, 1
mov eax, esi
mov dword [edx + 0x18], ecx
adc eax, 0
or edi, esi
mov dword [edx + 0x1c], eax
mov eax, dword [esp + 0xc]
je 0x10052138
mov edi, dword [esp + 0x14]
mov esi, dword [esp + 0x18]
mov ecx, dword [esp + 0x88]
add eax, 0x14
mov edx, dword [esp + 0xc4]
jmp 0x1004cc34
mov ecx, dword [esp + 0xc]
push 3
push dword [ecx + 0xc]
mov edx, dword [ecx + 4]
mov ecx, edi
call fcn.1004c4b0
add esp, 8
test eax, eax
je 0x1004ead6
mov ecx, dword [esp + 0xc]
mov byte [eax + 2], 1
mov ecx, dword [ecx + 8]
mov dword [eax + 0x24], ecx
mov byte [eax + 4], 1
mov dword [eax + 0x2c], 0x10168929
mov eax, dword [esp + 0xc]
mov ecx, dword [esp + 0x88]
add eax, 0x14
mov edx, dword [esp + 0xc4]
jmp 0x1004cc34
mov ecx, dword [esp + 0xc]
mov eax, dword [edi + 0x60]
mov ecx, dword [ecx + 4]
mov edx, dword [eax + ecx*4]
test edx, edx
je 0x1004feae
mov ecx, edi
call fcn.10045cb0
mov eax, dword [esp + 0xc]
mov ecx, dword [eax + 4]
mov eax, dword [edi + 0x60]
mov dword [eax + ecx*4], 0
mov eax, dword [esp + 0xc]
mov ecx, dword [esp + 0x88]
add eax, 0x14
mov edx, dword [esp + 0xc4]
jmp 0x1004cc34
mov ecx, dword [esp + 0xc]
mov eax, dword [edi + 0x60]
mov dword [esp + 0x20], 0
mov ecx, dword [ecx + 4]
mov edi, dword [eax + ecx*4]
cmp byte [edi + 4], 0
mov word [edi + 2], 0
mov dword [edi + 0x20], 0
je 0x1005005c
mov eax, dword [esp + 0xc]
mov eax, dword [eax + 0xc]
lea eax, [eax + eax*4]
lea esi, [esi + eax*8]
movzx eax, word [esi + 0x10]
mov dword [esp + 0x28], eax
and al, 0x2e
cmp al, 2
jne 0x1004ff29
xor edx, edx
mov ecx, esi
call fcn.1004c5a0
mov ecx, esi
call fcn.10042a10
movzx ecx, word [esi + 0x10]
mov dword [esp + 0x38], eax
mov eax, dword [esp + 0x28]
mov dword [esp + 0x34], edx
mov word [esi + 0x10], ax
test cl, 0x24
jne 0x1004ffee
test cl, 8
jne 0x1004ffbc
test cl, 1
jne 0x10052134
cmp dword [esp + 0x44], 0x17
jae 0x10052134
mov ecx, dword [edi + 0x2c]
lea edx, [esp + 0x7c]
call fcn.10039ab0
mov edx, eax
mov dword [esp + 0x1c], edx
test edx, edx
jne 0x1005357c
mov edx, dword [esp + 0x20]
cmp dword [esp + 0x7c], 0
jne 0x10052134
mov eax, dword [esp + 0xc]
test edx, edx
je 0x1005346a
mov edi, dword [esp + 0x14]
add eax, 0x14
mov esi, dword [esp + 0x18]
mov ecx, dword [esp + 0x88]
add eax, 0x14
mov edx, dword [esp + 0xc4]
jmp 0x1004cc34
push dword [esp + 0x34]
movsd xmm1, qword [esi]
push dword [esp + 0x3c]
call fcn.100476f0
add esp, 8
test eax, eax
jle 0x1004ffdf
mov eax, dword [esp + 0x44]
test al, 1
jne 0x1004ffee
dec eax
jmp 0x1004ffea
jns 0x1004ffee
mov eax, dword [esp + 0x44]
test al, 1
je 0x1004ffee
inc eax
mov dword [esp + 0x44], eax
mov ecx, dword [edi + 0x2c]
lea eax, [esp + 0x7c]
push eax
push dword [esp + 0x38]
lea esi, [edi + 0x2c]
xor edx, edx
push dword [esp + 0x40]
call fcn.10039ad0
mov edx, eax
add esp, 0xc
mov eax, dword [esp + 0x38]
mov dword [edi + 0x40], eax
mov eax, dword [esp + 0x34]
mov dword [esp + 0x1c], edx
mov dword [edi + 0x44], eax
test edx, edx
jne 0x1005357c
mov edx, dword [esp + 0x20]
mov eax, dword [esp + 0x44]
mov ecx, dword [esp + 0x7c]
cmp eax, 0x17
jl 0x1005014c
test ecx, ecx
js 0x1005010b
jne 0x1005004f
cmp eax, 0x18
je 0x1005010b
mov dword [esp + 0x7c], 0
jmp 0x1004ff8f
mov eax, dword [edi + 0x2c]
lea esi, [edi + 0x2c]
mov ecx, dword [esp + 0xc]
mov al, byte [eax + 3]
and al, 2
mov byte [esp + 0x27], al
mov eax, 0
setne al
mov dword [esp + 0x20], eax
mov eax, dword [edi + 0x30]
mov dword [esp + 0x90], eax
mov ax, word [ecx + 0x10]
mov word [esp + 0xa4], ax
lea eax, [edx - 1]
test al, 1
mov byte [esp + 0xaa], 0
lea edx, [esp + 0x90]
sete al
lea eax, [eax*2 - 1]
mov byte [esp + 0xa6], al
mov eax, dword [ecx + 0xc]
mov ecx, dword [esp + 0x18]
lea eax, [eax + eax*4]
lea eax, [ecx + eax*8]
mov dword [esp + 0x94], eax
lea eax, [esp + 0x7c]
mov ecx, dword [esi]
push eax
call fcn.10039d70
mov edx, eax
add esp, 4
mov dword [esp + 0x1c], edx
test edx, edx
jne 0x1005357c
cmp byte [esp + 0x27], al
je 0x10050027
mov edx, dword [esp + 0x20]
mov dword [esp + 0x20], edx
cmp byte [esp + 0xaa], al
je 0x1004ff84
jmp 0x1005002b
mov dword [esp + 0x7c], 0
xor edx, edx
mov ecx, dword [esi]
call fcn.1003a480
mov edx, eax
mov dword [esp + 0x1c], edx
test edx, edx
je 0x1004ff80
mov edi, dword [esp + 0x14]
cmp edx, 0x65
jne 0x10053580
mov dword [esp + 0x1c], 0
mov dword [esp + 0x7c], 1
jmp 0x10052cd6
test ecx, ecx
jg 0x10050167
jne 0x10050157
cmp eax, 0x15
je 0x10050167
mov ecx, dword [esi]
call fcn.1003a2c0
mov dword [esp + 0x7c], eax
jmp 0x1004ff80
mov dword [esp + 0x7c], 0
xor edx, edx
mov ecx, dword [esi]
call fcn.1003a5f0
jmp 0x1005011c
mov ecx, dword [esp + 0xc]
mov eax, dword [edi + 0x60]
mov ecx, dword [ecx + 0x18]
mov edi, dword [eax + ecx*4]
mov eax, dword [edi + 0x2c]
cmp byte [eax], 0
jne 0x1004e3e3
mov ecx, dword [esp + 0xc]
mov eax, dword [edi + 0x30]
mov dword [esp + 0x90], eax
mov byte [esp + 0xa6], 0
mov ax, word [ecx + 0x24]
mov esi, dword [ecx + 4]
mov word [esp + 0xa4], ax
mov eax, dword [ecx + 0x20]
mov ecx, dword [esp + 0x18]
mov dword [esp + 0xf4], 0
lea eax, [eax + eax*4]
lea eax, [ecx + eax*8]
mov dword [esp + 0x94], eax
nop word [eax + eax]
mov ecx, dword [esp + 0x10]
lea eax, [esp + 0xf4]
push eax
lea eax, [esp + 0x94]
mov edx, edi
push eax
call fcn.100488d0
mov edx, eax
add esp, 8
mov dword [esp + 0x1c], edx
test edx, edx
jne 0x1005357c
mov eax, dword [esp + 0xf4]
test eax, eax
jle 0x10050223
mov ecx, dword [esp + 0xc]
cmp word [ecx + 2], dx
je 0x10050257
test eax, eax
jns 0x10052134
test esi, esi
jle 0x10053466
mov ecx, dword [edi + 0x2c]
xor edx, edx
dec esi
call fcn.1003a480
mov edx, eax
mov dword [esp + 0x1c], edx
test edx, edx
je 0x100501e0
cmp edx, 0x65
jne 0x1005357c
mov dword [esp + 0x1c], 0
mov eax, dword [esp + 0xc]
mov ecx, dword [esp + 0x64]
add eax, 0x14
mov edi, dword [esp + 0x14]
mov esi, dword [esp + 0x18]
mov eax, dword [eax + 8]
lea eax, [eax + eax*4]
lea eax, [eax - 5]
lea eax, [ecx + eax*4]
mov ecx, dword [esp + 0x88]
add eax, 0x14
mov edx, dword [esp + 0xc4]
jmp 0x1004cc34
mov ecx, dword [esp + 0xc]
mov eax, dword [edi + 0x60]
mov ecx, dword [ecx + 4]
mov eax, dword [eax + ecx*4]
mov ecx, dword [esp + 0xc]
movzx edx, word [eax + 0xc]
mov ecx, dword [ecx + 8]
cmp edx, ecx
jge 0x100502c6
mov word [eax + 0xc], cx
mov eax, dword [esp + 0xc]
mov ecx, dword [esp + 0x88]
add eax, 0x14
mov edx, dword [esp + 0xc4]
jmp 0x1004cc34
mov ecx, dword [esp + 0xc]
mov ecx, dword [ecx + 0xc]
cmp edx, ecx
jle 0x10051b9c
mov word [eax + 0xc], cx
mov eax, dword [esp + 0xc]
mov ecx, dword [esp + 0x88]
add eax, 0x14
mov edx, dword [esp + 0xc4]
jmp 0x1004cc34
mov ecx, dword [esp + 0xc]
mov eax, dword [edi + 0x60]
mov ecx, dword [ecx + 4]
mov eax, dword [eax + ecx*4]
test eax, eax
je case.0x1004cc65.9
cmp byte [eax + 2], 0
je 0x10051b9c
jmp case.0x1004cc65.9
mov ecx, dword [esp + 0xc]
mov eax, dword [edi + 0x60]
mov ecx, dword [ecx + 4]
mov eax, dword [eax + ecx*4]
mov ecx, dword [esp + 0xc]
movzx eax, word [eax + 0xc]
cmp eax, dword [ecx + 0x10]
mov eax, ecx
jge case.0x1004cc65.89
mov ecx, dword [eax + 4]
mov eax, dword [edi + 0x60]
mov esi, dword [eax + ecx*4]
mov eax, dword [esp + 0xc]
mov ecx, dword [esp + 0x18]
mov eax, dword [eax + 0xc]
lea eax, [eax + eax*4]
lea ecx, [ecx + eax*8]
mov eax, dword [esp + 0xc]
mov dword [esp + 0x94], ecx
movzx eax, word [eax + 0x10]
mov word [esp + 0xa4], ax
test ax, ax
je 0x1005039d
mov eax, dword [esi + 0x30]
lea edi, [esi + 0x24]
mov dword [esp + 0x90], eax
lea edx, [esp + 0x90]
mov byte [esp + 0xa6], 0
mov ecx, dword [esi + 0x2c]
push edi
call fcn.10039d70
mov edx, eax
add esp, 4
mov dword [esp + 0x1c], edx
jmp 0x10050408
mov eax, 0x400
test word [ecx + 0x10], ax
je 0x100503b5
call fcn.10042710
test eax, eax
jne 0x1004ead6
mov ecx, dword [esi + 0x30]
call fcn.10047250
mov edi, eax
test edi, edi
je 0x1004ead2
mov edx, dword [esp + 0x94]
mov ecx, dword [esi + 0x30]
push edi
push dword [edx + 8]
mov edx, dword [edx + 0xc]
call fcn.100472b0
lea eax, [esi + 0x24]
mov byte [edi + 0x16], 0
mov ecx, dword [esi + 0x2c]
mov edx, edi
push eax
call fcn.10039d70
mov ecx, dword [esp + 0x1c]
add esp, 0xc
mov edx, edi
mov dword [esp + 0x1c], eax
call fcn.1001e7b0
mov edx, dword [esp + 0x1c]
lea edi, [esi + 0x24]
test edx, edx
jne 0x1005357c
mov ecx, dword [edi]
test ecx, ecx
mov byte [esi + 3], dl
setne al
mov dword [esi + 0x20], edx
mov byte [esi + 2], al
mov eax, dword [esp + 0xc]
mov al, byte [eax]
cmp al, 0x1d
jne 0x10050454
mov eax, dword [esp + 0xc]
test ecx, ecx
je 0x10052138
mov edi, dword [esp + 0x14]
mov esi, dword [esp + 0x18]
mov ecx, dword [esp + 0x88]
add eax, 0x14
mov edx, dword [esp + 0xc4]
jmp 0x1004cc34
test ecx, ecx
jne 0x10052134
cmp al, 0x1b
jne 0x10050496
movzx edx, word [esp + 0xa4]
test edx, edx
je 0x10053466
mov eax, dword [esp + 0x94]
add eax, 0x10
nop word [eax + eax]
test byte [eax], 1
jne 0x10052134
inc ecx
add eax, 0x28
cmp ecx, edx
jl 0x10050480
jmp 0x10053466
cmp al, 0x1a
mov eax, dword [esp + 0xc]
jne 0x1005346a
mov ax, word [eax + 0x10]
mov word [esi + 0xc], ax
jmp 0x10053466
mov ecx, dword [esp + 0xc]
mov eax, dword [ecx + 0xc]
lea eax, [eax + eax*4]
test byte [esi + eax*8 + 0x10], 0x24
jne 0x1005051f
movups xmm0, xmmword [esi + eax*8]
mov dl, 0x43
lea ecx, [esp + 0x90]
push dword [esp + 0x58]
movups xmmword [esp + 0x94], xmm0
movups xmm0, xmmword [esi + eax*8 + 0x10]
movups xmmword [esp + 0xa4], xmm0
movq xmm0, qword [esi + eax*8 + 0x20]
movq qword [esp + 0xb4], xmm0
call fcn.1004c780
add esp, 4
test byte [esp + 0xa0], 4
je 0x10052134
mov edi, dword [esp + 0x90]
mov edx, dword [esp + 0x94]
jmp 0x1005052c
mov ecx, dword [esp + 0xc]
mov eax, dword [ecx + 0xc]
lea eax, [eax + eax*4]
mov edi, dword [esi + eax*8]
mov edx, dword [esi + eax*8 + 4]
mov dword [esp + 0x48], edx
mov eax, dword [esp + 0xc]
mov ecx, dword [eax + 4]
mov eax, dword [esp + 0x14]
mov eax, dword [eax + 0x60]
mov esi, dword [eax + ecx*4]
lea eax, [esp + 0xe4]
push eax
push edx
push edi
mov ecx, dword [esi + 0x2c]
xor edx, edx
mov dword [esp + 0xf0], 0
call fcn.10039ad0
mov edx, eax
mov dword [esi + 0x40], edi
mov eax, dword [esp + 0x54]
add esp, 0xc
mov dword [esi + 0x44], eax
mov word [esi + 2], 0
mov dword [esi + 0x20], 0
mov eax, dword [esp + 0xe4]
mov dword [esi + 0x24], eax
cmp dword [esp + 0xe4], 0
mov dword [esp + 0x1c], edx
je 0x100505b2
mov eax, dword [esp + 0xc]
cmp dword [eax + 8], 0
jne 0x10052138
mov ecx, 0x17548
call fcn.100cf630
mov edx, eax
mov dword [esp + 0x1c], edx
mov edi, dword [esp + 0x14]
test edx, edx
jne 0x10053580
mov eax, dword [esp + 0xc]
mov esi, dword [esp + 0x18]
mov ecx, dword [esp + 0x88]
add eax, 0x14
mov edx, dword [esp + 0xc4]
jmp 0x1004cc34
mov ecx, dword [esp + 0xc]
mov eax, dword [ecx + 8]
lea ecx, [eax + eax*4]
mov eax, dword [edi + 0x58]
lea edx, [eax + ecx*8]
mov eax, 0x9000
test word [edx + 0x10], ax
je 0x10050602
mov ecx, edx
call fcn.1004ca00
mov edx, eax
jmp 0x1005060b
mov eax, 4
mov word [edx + 0x10], ax
mov eax, dword [esp + 0xc]
mov ecx, dword [eax + 4]
mov eax, dword [edi + 0x60]
mov eax, dword [eax + ecx*4]
mov ecx, dword [eax + 0x18]
mov eax, dword [eax + 0x1c]
mov dword [edx + 4], eax
mov eax, dword [esp + 0xc]
mov dword [edx], ecx
mov ecx, dword [eax + 4]
mov eax, dword [edi + 0x60]
mov eax, dword [eax + ecx*4]
add dword [eax + 0x18], 1
adc dword [eax + 0x1c], 0
mov eax, dword [esp + 0xc]
mov ecx, dword [esp + 0x88]
add eax, 0x14
mov edx, dword [esp + 0xc4]
jmp 0x1004cc34
mov ecx, dword [esp + 0xc]
xorps xmm0, xmm0
movlpd qword [esp + 0x28], xmm0
mov dword [esp + 0x38], 0
mov eax, dword [ecx + 8]
lea ecx, [eax + eax*4]
mov eax, dword [edi + 0x58]
lea edx, [eax + ecx*8]
mov eax, 0x9000
mov dword [esp + 0x34], edx
test word [edx + 0x10], ax
je 0x1005068f
mov ecx, edx
call fcn.1004ca00
mov dword [esp + 0x34], eax
jmp 0x10050698
mov eax, 4
mov word [edx + 0x10], ax
mov eax, dword [esp + 0xc]
mov ecx, dword [eax + 4]
mov eax, dword [edi + 0x60]
mov edi, dword [eax + ecx*4]
mov dword [esp + 0x48], edi
test byte [edi + 8], 2
jne 0x10050710
mov ecx, dword [edi + 0x2c]
lea edx, [esp + 0x38]
call fcn.10039ab0
mov edx, eax
mov dword [esp + 0x1c], edx
test edx, edx
jne 0x1005357c
cmp dword [esp + 0x38], eax
je 0x100506dd
mov dword [esp + 0x28], 1
mov dword [esp + 0x2c], eax
jmp 0x10050710
mov ecx, dword [edi + 0x2c]
call fcn.100390a0
mov dword [esp + 0x28], eax
mov dword [esp + 0x2c], edx
cmp edx, 0x7fffffff
jl 0x10050702
jg 0x100506fc
cmp eax, 0xffffffff
jb 0x10050702
or dword [edi + 8], 2
jmp 0x10050710
add eax, 1
mov dword [esp + 0x28], eax
adc edx, 0
mov dword [esp + 0x2c], edx
mov eax, dword [esp + 0xc]
mov ecx, dword [eax + 0xc]
test ecx, ecx
je 0x100507c2
mov eax, dword [esp + 0x14]
mov edx, dword [eax + 0xd0]
test edx, edx
je 0x10050748
mov eax, dword [edx + 4]
test eax, eax
je 0x1005073d
mov edx, eax
mov eax, dword [edx + 4]
test eax, eax
jne 0x10050734
mov eax, dword [edx + 0xc]
lea ecx, [ecx + ecx*4]
lea esi, [eax + ecx*8]
jmp 0x1005074e
lea eax, [ecx + ecx*4]
lea esi, [esi + eax*8]
mov ecx, esi
call fcn.10042a10
mov cx, word [esi + 0x10]
mov edi, eax
mov eax, 0xf244
mov dword [esi], edi
and cx, ax
mov dword [esi + 4], edx
or cx, 4
mov word [esi + 0x10], cx
cmp edi, 0xffffffff
jne 0x10050781
cmp edx, 0x7fffffff
je 0x10050825
mov eax, dword [esp + 0x48]
test byte [eax + 8], 2
jne 0x10050825
mov ecx, dword [esp + 0x2c]
add edi, 1
adc edx, 0
cmp ecx, edx
jg 0x100507b5
jl 0x100507a7
mov eax, dword [esp + 0x28]
cmp eax, edi
jae 0x100507b9
mov eax, edi
mov ecx, edx
mov dword [esp + 0x28], eax
mov dword [esp + 0x2c], ecx
jmp 0x100507b9
mov eax, dword [esp + 0x28]
mov edi, dword [esp + 0x48]
mov dword [esi], eax
mov dword [esi + 4], ecx
test byte [edi + 8], 2
je 0x1005082f
xor esi, esi
nop word [eax + eax]
lea eax, [esp + 0x28]
push eax
push 8
call fcn.10021b80
mov eax, dword [esp + 0x34]
lea edx, [esp + 0x40]
mov ecx, dword [esp + 0x30]
and eax, 0x3fffffff
add ecx, 1
push edx
adc eax, 0
mov dword [esp + 0x34], ecx
push eax
mov dword [esp + 0x3c], eax
xor edx, edx
push ecx
mov ecx, dword [edi + 0x2c]
call fcn.10039ad0
mov edx, eax
add esp, 0x14
mov dword [esp + 0x1c], edx
test edx, edx
jne 0x1005357c
cmp dword [esp + 0x38], eax
jne 0x1005082f
inc esi
cmp esi, 0x64
jl 0x100507d0
mov edx, 0xd
jmp 0x10053578
mov edx, dword [esp + 0x34]
mov byte [edi + 3], 0
mov dword [edi + 0x20], 0
mov eax, dword [esp + 0x28]
mov ecx, dword [esp + 0x2c]
mov dword [edx], eax
mov dword [edx + 4], ecx
jmp 0x10053466
mov ecx, dword [esp + 0xc]
mov eax, dword [ecx + 8]
mov ecx, dword [ecx + 4]
lea edx, [eax + eax*4]
mov eax, dword [edi + 0x60]
mov edi, dword [esp + 0x18]
mov dword [esp + 0x28], edx
mov edx, dword [esp + 0x18]
mov esi, dword [eax + ecx*4]
mov ecx, dword [esp + 0xc]
mov dword [esp + 0x60], esi
cmp byte [ecx + 1], 0xfb
mov eax, dword [ecx + 0xc]
lea eax, [eax + eax*4]
mov edi, dword [edi + eax*8]
mov eax, dword [edx + eax*8 + 4]
mov edx, dword [esp + 0x28]
mov dword [esp + 0x48], eax
mov dword [esp + 0x98], edi
mov dword [esp + 0x9c], eax
jne 0x100508d2
mov ecx, dword [esp + 0x10]
cmp dword [ecx + 0xfc], 0
je 0x100508ce
mov eax, dword [esp + 0x10]
movsx ecx, byte [esi + 1]
add ecx, ecx
mov eax, dword [eax + 0x10]
mov ecx, dword [eax + ecx*8]
mov dword [esp + 0x34], ecx
mov ecx, dword [esp + 0xc]
mov eax, dword [ecx + 0x10]
mov dword [esp + 0x38], eax
jmp 0x100508e2
mov ecx, dword [esp + 0xc]
mov dword [esp + 0x38], 0
mov dword [esp + 0x34], 0
test byte [ecx + 2], 1
je 0x1005090c
mov eax, dword [esp + 0x14]
add dword [eax + 0x28], 1
adc dword [eax + 0x2c], 0
test byte [ecx + 2], 0x20
mov eax, dword [esp + 0x48]
je 0x1005090c
mov ecx, dword [esp + 0x10]
mov dword [ecx + 0x28], edi
mov dword [ecx + 0x2c], eax
mov ecx, dword [esp + 0xc]
mov edi, dword [esp + 0x18]
movzx ecx, word [ecx + 2]
mov eax, dword [edi + edx*8 + 8]
mov dword [esp + 0xa0], eax
mov eax, dword [edi + edx*8 + 0xc]
mov dword [esp + 0xac], eax
test cl, 0x10
je 0x10050934
mov edi, dword [esi + 0x24]
jmp 0x10050936
xor edi, edi
mov eax, dword [esp + 0x18]
mov esi, 0x400
test word [eax + edx*8 + 0x10], si
mov esi, dword [esp + 0x60]
je 0x10050956
mov eax, dword [eax + edx*8]
mov dword [esp + 0xb0], eax
jmp 0x10050961
mov dword [esp + 0xb0], 0
and ecx, 0x8a
mov dword [esp + 0x90], 0
push edi
push ecx
mov ecx, dword [esi + 0x2c]
lea edx, [esp + 0x98]
call fcn.1003e1c0
mov edx, eax
mov byte [esi + 3], 0
add esp, 8
mov dword [esp + 0x1c], edx
mov dword [esi + 0x20], 0
test edx, edx
jne 0x1005357c
mov eax, dword [esp + 0x38]
test eax, eax
je 0x10053466
push dword [esp + 0x9c]
mov ecx, 0x17
push dword [esp + 0x9c]
push dword [eax]
mov eax, dword [esp + 0x18]
push dword [esp + 0x40]
test byte [eax + 2], 4
mov eax, 0x12
cmovne eax, ecx
push eax
mov eax, dword [esp + 0x24]
push dword [eax + 0xf8]
mov eax, dword [eax + 0xfc]
call eax
add esp, 0x18
jmp 0x10053466
mov edx, dword [esp + 0xc]
mov ecx, dword [edi + 0x60]
mov eax, dword [edx + 4]
mov esi, dword [ecx + eax*4]
mov eax, dword [edx + 8]
mov edx, dword [ecx + eax*4]
mov eax, dword [esp + 0xc]
mov eax, dword [eax + 0xc]
test eax, eax
je 0x10050a25
mov ecx, dword [esp + 0x18]
lea eax, [eax + eax*4]
mov edi, dword [esp + 0x18]
mov ecx, dword [ecx + eax*8]
mov eax, dword [edi + eax*8 + 4]
mov edi, dword [esp + 0x14]
jmp 0x10050a36
xorps xmm0, xmm0
movlpd qword [esp + 0x28], xmm0
mov eax, dword [esp + 0x2c]
mov ecx, dword [esp + 0x28]
mov edx, dword [edx + 0x2c]
push eax
push ecx
mov ecx, dword [esi + 0x2c]
call fcn.1003e8a0
add esp, 8
jmp 0x1004dcbc
mov edx, dword [esp + 0xc]
cmp byte [edx + 1], 0xfb
mov eax, dword [edx + 8]
mov ecx, dword [edx + 4]
mov dword [esp + 0x28], eax
mov eax, dword [edi + 0x60]
mov esi, dword [eax + ecx*4]
jne 0x10050aaf
mov eax, dword [esp + 0x10]
cmp dword [eax + 0xfc], 0
lea edi, [eax + 0xfc]
je 0x10050ab9
movsx ecx, byte [esi + 1]
mov eax, dword [eax + 0x10]
add ecx, ecx
test byte [edx + 2], 2
mov eax, dword [eax + ecx*8]
mov dword [esp + 0x38], eax
mov eax, dword [edx + 0x10]
mov dword [esp + 0x48], eax
je 0x10050ac7
cmp byte [esi + 4], 0
je 0x10050ac7
mov ecx, dword [esi + 0x2c]
call fcn.100390a0
mov dword [esi + 0x44], edx
mov edx, dword [esp + 0xc]
mov dword [esi + 0x40], eax
jmp 0x10050ac7
mov edi, dword [esp + 0x10]
add edi, 0xfc
xor eax, eax
mov dword [esp + 0x38], 0
mov dword [esp + 0x48], eax
mov dl, byte [edx + 2]
mov ecx, dword [esi + 0x2c]
call fcn.1003ecc0
mov edx, eax
mov dword [esi + 0x20], 0
mov dword [esp + 0x1c], edx
mov dword [esi + 0x24], 0
test edx, edx
jne 0x1005357c
test byte [esp + 0x28], 1
je 0x10053466
mov eax, dword [esp + 0x14]
add dword [eax + 0x28], 1
adc dword [eax + 0x2c], edx
mov ecx, dword [edi]
test ecx, ecx
je 0x10053466
mov eax, dword [esp + 0x48]
test eax, eax
je 0x10053466
test byte [eax + 0x1c], 0x80
jne 0x10053466
push dword [esi + 0x44]
push dword [esi + 0x40]
push dword [eax]
mov eax, dword [esp + 0x1c]
push dword [esp + 0x44]
push 9
push dword [eax + 0xf8]
call ecx
add esp, 0x18
jmp 0x10053466
push dword [edi + 0x2c]
mov ecx, dword [esp + 0x14]
push dword [edi + 0x28]
call fcn.100489d0
mov eax, dword [esp + 0x14]
add esp, 8
mov dword [edi + 0x28], 0
mov dword [edi + 0x2c], 0
mov ecx, dword [esp + 0x88]
add eax, 0x14
mov edx, dword [esp + 0xc4]
jmp 0x1004cc34
mov edx, dword [esp + 0xc]
mov eax, dword [edi + 0x60]
mov ecx, dword [edx + 4]
mov ecx, dword [eax + ecx*4]
mov eax, dword [edx + 0xc]
mov dword [esp + 0x10c], 0
lea eax, [eax + eax*4]
lea edx, [esi + eax*8]
lea eax, [esp + 0x10c]
push eax
mov eax, dword [esp + 0x10]
push dword [eax + 0x10]
call fcn.10057bc0
mov edx, eax
add esp, 8
mov dword [esp + 0x1c], edx
test edx, edx
jne 0x10053580
mov eax, dword [esp + 0xc]
cmp dword [esp + 0x10c], edx
jne 0x10052138
mov ecx, dword [esp + 0x88]
add eax, 0x14
mov edx, dword [esp + 0xc4]
jmp 0x1004cc34
mov ecx, dword [esp + 0xc]
mov eax, dword [ecx + 8]
mov ecx, dword [ecx + 4]
lea eax, [eax + eax*4]
lea edx, [esi + eax*8]
mov eax, dword [edi + 0x60]
mov ecx, dword [eax + ecx*4]
call fcn.10057b20
mov edx, eax
mov dword [esp + 0x1c], edx
test edx, edx
jne 0x10053580
mov eax, dword [esp + 0xc]
mov ecx, dword [eax + 0xc]
mov eax, dword [edi + 0x60]
mov eax, dword [eax + ecx*4]
mov dword [eax + 0x20], edx
mov eax, dword [esp + 0xc]
mov ecx, dword [esp + 0x88]
add eax, 0x14
mov edx, dword [esp + 0xc4]
jmp 0x1004cc34
mov edx, dword [esp + 0xc]
mov ecx, edi
call fcn.1004ca20
mov ecx, dword [edi + 0x60]
mov esi, eax
mov eax, dword [esp + 0xc]
mov edx, dword [eax + 4]
mov ecx, dword [ecx + edx*4]
mov edi, dword [ecx + 0x2c]
mov ecx, edi
call fcn.100390d0
mov ecx, dword [esp + 0x10]
cmp eax, dword [ecx + 0x78]
ja 0x10053746
push esi
mov edx, eax
mov ecx, edi
call fcn.10043640
mov edx, eax
add esp, 4
mov dword [esp + 0x1c], edx
test edx, edx
jne 0x1005357c
mov eax, dword [esp + 0xc]
cmp dword [eax + 0xc], edx
jne 0x1005346a
mov ecx, 0x4000
test word [esi + 0x10], cx
je 0x1005346a
mov ecx, esi
call fcn.10042680
mov edi, dword [esp + 0x14]
test eax, eax
jne 0x1004ead6
mov eax, dword [esp + 0xc]
mov esi, dword [esp + 0x18]
mov ecx, dword [esp + 0x88]
add eax, 0x14
mov edx, dword [esp + 0xc4]
jmp 0x1004cc34
mov edx, dword [esp + 0xc]
mov ecx, edi
call fcn.1004ca20
mov ecx, dword [esp + 0xc]
mov edi, eax
mov eax, dword [esp + 0x14]
mov edx, dword [ecx + 4]
mov ecx, dword [eax + 0x60]
mov esi, dword [ecx + edx*4]
cmp byte [esi + 2], 0
je 0x10050d0b
mov eax, 1
mov word [edi + 0x10], ax
jmp 0x10053466
cmp byte [esi + 3], 0
je 0x10050d2f
mov eax, dword [esi + 0x40]
mov edx, dword [esi + 0x44]
mov dword [esp + 0xcc], edx
mov dword [esp + 0xc8], eax
mov dword [edi], eax
mov dword [edi + 4], edx
jmp 0x10053466
cmp byte [esi], 2
jne 0x10050d7f
mov ecx, dword [esi + 0x2c]
lea edx, [esp + 0xc8]
push edx
push ecx
mov esi, dword [ecx]
mov eax, dword [esi]
mov eax, dword [eax + 0x30]
call eax
mov ecx, dword [esp + 0x1c]
add esp, 8
mov edx, esi
mov dword [esp + 0x1c], eax
call fcn.10048bf0
mov edx, dword [esp + 0x1c]
test edx, edx
jne 0x1005357c
mov edx, dword [esp + 0xcc]
mov eax, dword [esp + 0xc8]
mov dword [edi], eax
mov dword [edi + 4], edx
jmp 0x10053466
mov ecx, esi
call fcn.10046f40
mov edx, eax
mov dword [esp + 0x1c], edx
test edx, edx
jne 0x1005357c
cmp byte [esi + 2], al
je 0x10050da7
mov eax, 1
mov word [edi + 0x10], ax
jmp 0x10053466
mov ecx, dword [esi + 0x2c]
call fcn.100390a0
mov dword [esp + 0xcc], edx
mov dword [esp + 0xc8], eax
mov dword [edi], eax
mov dword [edi + 4], edx
jmp 0x10053466
mov edx, dword [esp + 0xc]
mov eax, dword [edi + 0x60]
mov edx, dword [edx + 4]
mov eax, dword [eax + edx*4]
test eax, eax
jne 0x10050e04
push 3
push 1
mov ecx, edi
call fcn.1004c4b0
add esp, 8
test eax, eax
je 0x1004ead6
or dword [eax + 8], 8
mov dword [eax + 0x24], 0
mov byte [eax + 4], 1
mov dword [eax + 0x2c], 0x10168929
cmp byte [eax], 0
mov byte [eax + 2], 1
mov dword [eax + 0x20], 0
jne 0x10053466
mov ecx, dword [eax + 0x2c]
call fcn.10034830
mov eax, dword [esp + 0xc]
mov ecx, dword [esp + 0x88]
add eax, 0x14
mov edx, dword [esp + 0xc4]
jmp 0x1004cc34
cmp byte [esp + 0x27], 0x89
mov ecx, dword [esp + 0xc]
mov eax, dword [edi + 0x60]
mov ecx, dword [ecx + 4]
mov esi, dword [eax + ecx*4]
mov edi, dword [esi + 0x2c]
mov dword [esp + 0xe0], 0
jne 0x10050e72
mov ecx, edi
mov dword [esi + 0x24], 0xffffffff
call fcn.10039090
test eax, eax
jne 0x10053466
cmp byte [edi], 0
jne 0x10050e9f
test byte [edi + 1], 8
je 0x10050e9f
mov dword [esp + 0xe0], 0
mov dword [esp + 0x1c], 0
mov word [esi + 2], 0
mov dword [esi + 0x20], 0
jmp 0x10050ed0
lea edx, [esp + 0xe0]
mov ecx, edi
call fcn.10039a20
mov edx, eax
mov al, byte [esp + 0xe0]
mov dword [esp + 0x1c], edx
mov byte [esi + 2], al
mov byte [esi + 3], 0
mov dword [esi + 0x20], 0
test edx, edx
jne 0x10053578
mov eax, dword [esp + 0xc]
cmp dword [eax + 8], 0
jle 0x1005346a
cmp dword [esp + 0xe0], 0
jne 0x10052138
mov edi, dword [esp + 0x14]
mov esi, dword [esp + 0x18]
mov ecx, dword [esp + 0x88]
add eax, 0x14
mov edx, dword [esp + 0xc4]
jmp 0x1004cc34
mov ecx, dword [esp + 0xc]
lea edx, [esp + 0xe8]
mov eax, dword [edi + 0x60]
mov ecx, dword [ecx + 4]
mov eax, dword [eax + ecx*4]
mov esi, dword [eax + 0x2c]
mov ecx, esi
call fcn.100399f0
mov edx, eax
mov dword [esp + 0x1c], edx
test edx, edx
jne 0x10053580
cmp dword [esp + 0xe8], eax
jne 0x10052134
mov ecx, esi
call fcn.1003a2d0
test edx, edx
jl 0x10050f78
jg 0x10050f54
test eax, eax
jb 0x10050f78
push edx
push eax
call fcn.10023a30
mov ecx, dword [esp + 0x14]
add esp, 8
cwde
cmp eax, dword [ecx + 0xc]
jge 0x10050f78
mov dword [esp + 0xe8], 1
jmp 0x10052cd6
cmp dword [esp + 0xe8], 0
mov eax, dword [esp + 0xc]
jne 0x10052138
mov esi, dword [esp + 0x18]
mov ecx, dword [esp + 0x88]
add eax, 0x14
mov edx, dword [esp + 0xc4]
jmp 0x1004cc34
inc dword [edi + 0xac]
mov ecx, dword [esp + 0xc]
mov eax, dword [edi + 0x60]
mov ecx, dword [ecx + 4]
mov esi, dword [eax + ecx*4]
mov dword [esp + 0xdc], 1
cmp byte [esi], 1
jne 0x10050fdd
lea edx, [esp + 0xdc]
mov ecx, esi
call fcn.100579f0
mov edx, eax
mov dword [esp + 0x1c], edx
jmp 0x10051028
mov edi, dword [esi + 0x2c]
mov ecx, edi
call fcn.10039730
mov edx, eax
mov dword [esp + 0x1c], edx
test edx, edx
jne 0x10051003
mov ecx, edi
mov dword [esp + 0xdc], eax
call fcn.100399a0
mov edx, eax
jmp 0x10051015
cmp edx, 0x10
jne 0x10051019
mov dword [esp + 0xdc], 1
xor edx, edx
mov dword [esp + 0x1c], edx
mov edi, dword [esp + 0x14]
mov byte [esi + 3], 0
mov dword [esi + 0x20], 0
test edx, edx
jne 0x10053580
mov al, byte [esp + 0xdc]
mov byte [esi + 2], al
mov eax, dword [esp + 0xc]
cmp dword [eax + 8], edx
jle 0x1005346a
cmp dword [esp + 0xdc], edx
jne 0x10052138
mov esi, dword [esp + 0x18]
mov ecx, dword [esp + 0x88]
add eax, 0x14
mov edx, dword [esp + 0xc4]
jmp 0x1004cc34
mov ecx, dword [esp + 0xc]
mov eax, dword [edi + 0x60]
mov ecx, dword [ecx + 4]
mov esi, dword [eax + ecx*4]
mov edx, esi
mov ecx, dword [esp + 0x10]
call fcn.10057a80
jmp 0x100510ba
mov edx, dword [esp + 0xc]
mov eax, dword [edi + 0x60]
mov ecx, dword [edx + 4]
mov edx, dword [edx + 0xc]
mov esi, dword [eax + ecx*4]
mov ecx, dword [esi + 0x2c]
call fcn.1003a5f0
jmp 0x100510ba
mov edx, dword [esp + 0xc]
mov eax, dword [edi + 0x60]
mov ecx, dword [edx + 4]
mov edx, dword [edx + 0xc]
mov esi, dword [eax + ecx*4]
mov ecx, dword [esi + 0x2c]
call fcn.1003a480
mov edx, eax
mov dword [esp + 0x1c], edx
mov dword [esi + 0x20], 0
test edx, edx
jne 0x100510e2
mov byte [esi + 2], al
mov eax, dword [esp + 0xc]
movzx eax, word [eax + 2]
inc dword [edi + eax*4 + 0xa4]
jmp 0x10052e5d
cmp edx, 0x65
jne 0x10053580
mov dword [esp + 0x1c], 0
mov byte [esi + 2], 1
jmp 0x10051af5
mov ecx, dword [esp + 0xc]
mov eax, dword [edi + 0x60]
mov ecx, dword [ecx + 4]
mov edi, dword [eax + ecx*4]
mov ecx, dword [esp + 0xc]
test byte [ecx + 2], 1
mov eax, dword [ecx + 8]
lea eax, [eax + eax*4]
lea esi, [esi + eax*8]
je 0x10051128
mov eax, dword [esp + 0x14]
add dword [eax + 0x28], 1
adc dword [eax + 0x2c], 0
mov eax, 0x400
test word [esi + 0x10], ax
je 0x1005114c
mov ecx, esi
call fcn.10042710
mov edx, eax
mov dword [esp + 0x1c], edx
test edx, edx
jne 0x1005357c
mov ecx, dword [esp + 0xc]
mov eax, dword [esi + 0xc]
cdq
mov dword [esp + 0x98], eax
mov dword [esp + 0x9c], edx
mov eax, dword [esi + 8]
mov esi, dword [esp + 0x18]
mov dword [esp + 0x90], eax
mov eax, dword [ecx + 0xc]
lea eax, [eax + eax*4]
lea eax, [esi + eax*8]
mov dword [esp + 0xa4], eax
mov ax, word [ecx + 0x10]
mov word [esp + 0xa8], ax
movzx eax, word [ecx + 2]
test al, 0x10
je 0x10051195
mov ecx, dword [edi + 0x24]
jmp 0x10051197
xor ecx, ecx
push ecx
mov ecx, dword [edi + 0x2c]
lea edx, [esp + 0x94]
and eax, 0x8a
push eax
call fcn.1003e1c0
mov edx, eax
mov dword [edi + 0x20], 0
mov edi, dword [esp + 0x1c]
add esp, 8
mov dword [esp + 0x1c], edx
test edx, edx
jne 0x10053580
mov eax, dword [esp + 0xc]
mov ecx, dword [esp + 0x88]
add eax, 0x14
mov edx, dword [esp + 0xc4]
jmp 0x1004cc34
mov edx, dword [esp + 0xc]
mov eax, dword [edi + 0x60]
mov ecx, dword [edx + 4]
mov edi, dword [eax + ecx*4]
mov eax, dword [edx + 8]
lea eax, [eax + eax*4]
lea esi, [esi + eax*8]
mov eax, 0x400
test word [esi + 0x10], ax
je 0x10051219
mov ecx, esi
call fcn.10042710
mov edx, eax
mov dword [esp + 0x1c], edx
test edx, edx
jne 0x1005357c
mov edx, esi
mov ecx, edi
call fcn.10056740
mov edi, dword [esp + 0x14]
jmp 0x1004dcbc
mov edx, dword [esp + 0xc]
mov eax, dword [edi + 0x60]
mov ecx, dword [edx + 4]
mov esi, dword [eax + ecx*4]
mov ecx, dword [esp + 0x18]
mov eax, dword [esi + 0x30]
mov edi, dword [esi + 0x2c]
mov dword [esp + 0x90], eax
mov ax, word [edx + 0xc]
mov word [esp + 0xa4], ax
mov eax, dword [edx + 8]
lea edx, [esp + 0x90]
mov byte [esp + 0xa6], 0
lea eax, [eax + eax*4]
lea eax, [ecx + eax*8]
mov ecx, edi
mov dword [esp + 0x94], eax
lea eax, [esp + 0x120]
push eax
call fcn.10039d70
mov edx, eax
add esp, 4
mov dword [esp + 0x1c], edx
test edx, edx
jne 0x1005357c
cmp dword [esp + 0x120], eax
jne 0x100512b6
mov dl, 4
mov ecx, edi
call fcn.1003ecc0
mov edx, eax
mov dword [esp + 0x1c], edx
test edx, edx
jne 0x1005357c
jmp 0x100512d2
mov eax, dword [esp + 0xc]
cmp word [eax + 2], 0
je 0x100512d6
mov ecx, dword [esp + 0x10]
call fcn.10070630
test eax, eax
je 0x10053766
mov eax, dword [esp + 0xc]
mov edi, dword [esp + 0x14]
mov dword [esi + 0x20], 0
mov dword [esi + 0x24], 0
mov esi, dword [esp + 0x18]
mov ecx, dword [esp + 0x88]
add eax, 0x14
mov edx, dword [esp + 0xc4]
jmp 0x1004cc34
mov edx, dword [esp + 0xc]
mov eax, dword [edi + 0x60]
mov ecx, dword [edx + 4]
mov esi, dword [eax + ecx*4]
mov eax, dword [esi + 0x2c]
cmp byte [eax], 0
je 0x10051332
mov ecx, esi
call fcn.10046f00
mov edx, eax
mov dword [esp + 0x1c], edx
test edx, edx
jne 0x10053580
mov edx, dword [esp + 0xc]
jmp 0x1005133a
mov dword [esp + 0x1c], 0
cmp byte [esi + 2], 0
jne 0x1005140f
mov ecx, dword [esp + 0x10]
lea eax, [esp + 0x100]
xorps xmm0, xmm0
movlpd qword [esp + 0x100], xmm0
mov edx, dword [esi + 0x2c]
push eax
call fcn.100486f0
mov edx, eax
add esp, 4
mov dword [esp + 0x1c], edx
test edx, edx
jne 0x10053580
mov eax, dword [esp + 0xc]
cmp byte [eax], 0x8d
jne 0x100513d5
mov ecx, dword [eax + 0xc]
mov eax, dword [edi + 0x60]
mov edx, dword [eax + ecx*4]
mov byte [edx + 2], 0
mov eax, dword [esp + 0x100]
mov ecx, dword [esp + 0x104]
mov dword [edx + 0x40], eax
mov eax, dword [esp + 0xc]
mov dword [edx + 0x44], ecx
mov byte [edx + 3], 1
mov dword [edx + 0x20], 0
mov eax, dword [eax + 0x10]
mov dword [edx + 0x10], eax
mov eax, dword [esp + 0xc]
mov dword [edx + 0x28], esi
mov esi, dword [esp + 0x18]
mov ecx, dword [esp + 0x88]
add eax, 0x14
mov edx, dword [esp + 0xc4]
jmp 0x1004cc34
mov edx, eax
mov ecx, edi
call fcn.1004ca20
mov ecx, dword [esp + 0x100]
mov edx, dword [esp + 0x104]
mov esi, dword [esp + 0x18]
mov dword [eax], ecx
mov dword [eax + 4], edx
mov eax, dword [esp + 0xc]
mov ecx, dword [esp + 0x88]
add eax, 0x14
mov edx, dword [esp + 0xc4]
jmp 0x1004cc34
mov eax, dword [edx + 8]
mov esi, dword [esp + 0x18]
lea eax, [eax + eax*4]
lea ecx, [esi + eax*8]
call fcn.10042ef0
mov eax, dword [esp + 0xc]
mov ecx, dword [esp + 0x88]
add eax, 0x14
mov edx, dword [esp + 0xc4]
jmp 0x1004cc34
mov ecx, dword [esp + 0xc]
mov eax, dword [edi + 0x60]
mov ecx, dword [ecx + 4]
mov ecx, dword [eax + ecx*4]
cmp byte [ecx + 3], 0
je 0x10051b9c
call fcn.10046e90
mov edx, eax
mov dword [esp + 0x1c], edx
test edx, edx
jne 0x10053580
mov eax, dword [esp + 0xc]
mov ecx, dword [esp + 0x88]
add eax, 0x14
mov edx, dword [esp + 0xc4]
jmp 0x1004cc34
mov edx, dword [esp + 0xc]
mov eax, dword [edi + 0x60]
cmp byte [esp + 0x27], 0x2a
mov ecx, dword [edx + 4]
mov ecx, dword [eax + ecx*4]
mov eax, dword [ecx + 0x30]
mov dword [esp + 0x90], eax
mov ax, word [edx + 0x10]
mov word [esp + 0xa4], ax
sbb al, al
mov byte [esp + 0xa6], al
mov eax, dword [edx + 0xc]
lea eax, [eax + eax*4]
lea eax, [esi + eax*8]
mov dword [esp + 0x94], eax
mov edi, dword [ecx + 0x2c]
mov ecx, edi
call fcn.10039050
mov esi, dword [edi + 0x2c]
test esi, esi
je 0x10053782
cmp esi, 0x7fffffff
ja 0x10053782
mov edx, dword [esp + 0x10]
lea ecx, [esp + 0x178]
push 0
call fcn.10042ed0
add esp, 4
lea eax, [esp + 0x178]
mov edx, esi
mov ecx, edi
push eax
call fcn.10043640
mov edx, eax
add esp, 4
mov dword [esp + 0x1c], edx
test edx, edx
jne 0x1005357c
mov edx, dword [esp + 0x180]
mov ecx, dword [esp + 0x184]
push eax
lea eax, [esp + 0x94]
push eax
call fcn.10047970
add esp, 8
lea ecx, [esp + 0x178]
mov esi, eax
call fcn.100429a0
mov ecx, dword [esp + 0xc]
mov eax, dword [esp + 0xc]
mov dl, byte [ecx]
lea ecx, [esi + 1]
neg esi
test dl, 1
cmovne esi, ecx
test esi, esi
jg 0x10052138
mov edi, dword [esp + 0x14]
mov esi, dword [esp + 0x18]
mov ecx, dword [esp + 0x88]
add eax, 0x14
mov edx, dword [esp + 0xc4]
jmp 0x1004cc34
mov edx, dword [esp + 0xc]
mov ecx, edi
call fcn.1004ca20
mov edx, dword [esp + 0x10]
mov esi, eax
mov eax, 1
mov word [esi + 0x10], ax
mov ecx, dword [edx + 0xcc]
inc ecx
cmp dword [edx + 0xc0], ecx
jg 0x100537aa
mov eax, dword [esp + 0xc]
lea ecx, [esp + 0x8c]
push ecx
mov ecx, dword [edx + 0x10]
mov edx, dword [esp + 0x10]
mov eax, dword [eax + 0xc]
mov dword [esp + 0x4c], eax
add eax, eax
mov dword [esp + 0x90], 0
mov edx, dword [edx + 4]
mov ecx, dword [ecx + eax*8 + 4]
call fcn.1003fca0
mov dword [esp + 0x20], eax
add esp, 4
mov eax, 4
mov word [esi + 0x10], ax
mov eax, dword [esp + 0x8c]
cdq
mov dword [esi + 4], edx
mov edx, dword [esp + 0x1c]
mov dword [esi], eax
test edx, edx
jne 0x10053580
mov eax, dword [esp + 0x8c]
test eax, eax
je 0x10053466
mov ecx, dword [esp + 0xc]
mov edx, dword [esp + 0x48]
push dword [ecx + 4]
mov ecx, dword [esp + 0x14]
push eax
call fcn.10074410
mov cl, byte [esp + 0x50]
add esp, 8
mov eax, dword [esp + 0xc]
inc cl
mov esi, dword [esp + 0x18]
mov byte [esp + 0x7b], cl
mov ecx, dword [esp + 0x88]
add eax, 0x14
mov edx, dword [esp + 0xc4]
jmp 0x1004cc34
mov edx, dword [esp + 0xc]
lea eax, [esp + 0x28]
mov ecx, dword [esp + 0x10]
xorps xmm0, xmm0
push eax
movlpd qword [esp + 0x2c], xmm0
mov eax, dword [edx + 8]
mov ecx, dword [ecx + 0x10]
add eax, eax
mov edx, dword [edx + 4]
mov ecx, dword [ecx + eax*8 + 4]
call fcn.1003f920
mov edx, eax
add esp, 4
mov eax, dword [esp + 0xc]
mov dword [esp + 0x1c], edx
cmp dword [eax + 0xc], 0
je 0x100516c4
mov edx, dword [esp + 0x28]
add dword [edi + 0x28], edx
mov eax, dword [esp + 0x2c]
adc dword [edi + 0x2c], eax
mov eax, dword [esp + 0xc]
mov eax, dword [eax + 0xc]
test eax, eax
jle 0x100516bc
lea ecx, [eax + eax*4]
add dword [esi + ecx*8], edx
mov eax, dword [esp + 0x2c]
adc dword [esi + ecx*8 + 4], eax
mov eax, dword [esp + 0xc]
mov edx, dword [esp + 0x1c]
test edx, edx
jne 0x10053580
mov ecx, dword [esp + 0x88]
add eax, 0x14
mov edx, dword [esp + 0xc4]
jmp 0x1004cc34
mov ecx, dword [esp + 0xc]
mov eax, dword [edi + 0x60]
mov ecx, dword [ecx + 4]
mov ecx, dword [eax + ecx*4]
cmp byte [ecx], 1
jne 0x1005171a
mov edx, dword [ecx + 0x2c]
mov ecx, dword [esp + 0x10]
call fcn.100559d0
mov eax, dword [esp + 0xc]
mov ecx, dword [esp + 0x88]
add eax, 0x14
mov edx, dword [esp + 0xc4]
jmp 0x1004cc34
mov ecx, dword [ecx + 0x2c]
call fcn.1003f9d0
mov edx, eax
mov dword [esp + 0x1c], edx
test edx, edx
jne 0x10053580
mov eax, dword [esp + 0xc]
mov ecx, dword [esp + 0x88]
add eax, 0x14
mov edx, dword [esp + 0xc4]
jmp 0x1004cc34
mov edx, dword [esp + 0xc]
mov ecx, edi
call fcn.1004ca20
mov edx, dword [esp + 0xc]
mov esi, eax
mov eax, dword [esp + 0x10]
mov dword [esp + 0xec], 0
mov ecx, dword [edx + 4]
push dword [edx + 0xc]
shl ecx, 4
lea edx, [esp + 0xf0]
add ecx, dword [eax + 0x10]
mov ecx, dword [ecx + 4]
call fcn.1003f5f0
mov edx, eax
add esp, 4
mov dword [esp + 0x1c], edx
test edx, edx
jne 0x10053580
mov eax, dword [esp + 0xec]
mov dword [esi], eax
mov eax, dword [esp + 0xc]
mov dword [esi + 4], edx
mov esi, dword [esp + 0x18]
mov ecx, dword [esp + 0x88]
add eax, 0x14
mov edx, dword [esp + 0xc4]
jmp 0x1004cc34
mov ecx, dword [esp + 0x10]
mov eax, dword [esp + 0xc]
push 0
push 0
inc byte [ecx + 0x60]
push 0
push dword [eax + 0x10]
push ecx
call fcn.1008a320
mov esi, dword [esp + 0x24]
mov edx, eax
add esp, 0x14
mov dword [esp + 0x1c], edx
dec byte [esi + 0x60]
test edx, edx
jne 0x10053584
mov eax, dword [esp + 0xc]
mov esi, dword [esp + 0x18]
mov ecx, dword [esp + 0x88]
add eax, 0x14
mov edx, dword [esp + 0xc4]
jmp 0x1004cc34
mov ecx, dword [esp + 0xc]
cmp dword [ecx + 0x10], 0
mov esi, dword [ecx + 4]
jne 0x1005186d
mov eax, dword [esp + 0x10]
mov ecx, esi
add ecx, ecx
mov eax, dword [eax + 0x10]
push dword [eax + ecx*8 + 0xc]
call fcn.10079970
mov ecx, dword [esp + 0x14]
add esp, 4
mov eax, dword [esp + 0xc]
mov edx, esi
and dword [ecx + 0x18], 0xffffffef
movzx eax, word [eax + 2]
push eax
lea eax, [edi + 0x7c]
push eax
call fcn.10092aa0
mov ecx, dword [esp + 0x18]
mov edx, eax
add esp, 8
mov dword [esp + 0x1c], edx
or dword [ecx + 0x18], 1
and dword [edi + 0x98], 0xfffffffc
jmp 0x10051959
mov ecx, dword [esp + 0x10]
lea eax, [edi + 0x7c]
mov dword [esp + 0x90], ecx
mov dword [esp + 0x98], esi
add esi, esi
mov dword [esp + 0x94], eax
mov ecx, dword [ecx + 0x10]
mov dword [esp + 0xa0], 0
mov ecx, dword [ecx + esi*8 + 4]
call fcn.10036220
mov ecx, dword [esp + 0x10]
mov dword [esp + 0xa8], eax
mov eax, dword [esp + 0xc]
push dword [eax + 0x10]
mov eax, dword [ecx + 0x10]
push str.sqlite_master
push dword [eax + esi*8]
push str.SELECTFROM__w_._s_WHERE__s_ORDER_BY_rowid
push ecx
call fcn.10021490
mov esi, eax
add esp, 0x14
test esi, esi
je 0x100537bf
mov eax, dword [esp + 0x10]
lea ecx, [esp + 0x90]
push 0
push ecx
push fcn.10092810
push esi
push eax
mov byte [eax + 0xb1], 1
mov dword [esp + 0xb0], 0
mov dword [esp + 0xb8], 0
call fcn.1008a320
add esp, 0x14
mov dword [esp + 0x1c], eax
test eax, eax
jne 0x1005193f
mov eax, dword [esp + 0x9c]
mov dword [esp + 0x1c], eax
test eax, eax
jne 0x1005193f
cmp dword [esp + 0xa4], eax
jne 0x1005193f
mov ecx, 0x17b44
call fcn.100cf630
mov dword [esp + 0x1c], eax
mov ecx, dword [esp + 0x10]
mov edx, esi
call fcn.1001e7b0
mov edx, dword [esp + 0x10]
mov byte [edx + 0xb1], 0
mov edx, dword [esp + 0x1c]
test edx, edx
je 0x1004d0f3
mov ecx, dword [esp + 0x10]
call fcn.1006feb0
mov edx, dword [esp + 0x1c]
cmp edx, 7
je 0x1004ead6
mov dword [esp + 0x1c], edx
jmp 0x10053580
mov ecx, dword [esp + 0xc]
mov edx, dword [ecx + 4]
mov ecx, dword [esp + 0x10]
call fcn.1006d750
mov edx, eax
mov dword [esp + 0x1c], edx
test edx, edx
jne 0x10053580
mov eax, dword [esp + 0xc]
mov ecx, dword [esp + 0x88]
add eax, 0x14
mov edx, dword [esp + 0xc4]
jmp 0x1004cc34
mov ecx, dword [esp + 0xc]
push dword [ecx + 0x10]
mov edx, dword [ecx + 4]
mov ecx, dword [esp + 0x14]
call fcn.10070450
mov eax, dword [esp + 0x10]
add esp, 4
mov ecx, dword [esp + 0x88]
add eax, 0x14
mov edx, dword [esp + 0xc4]
jmp 0x1004cc34
mov ecx, dword [esp + 0xc]
push dword [ecx + 0x10]
mov edx, dword [ecx + 4]
mov ecx, dword [esp + 0x14]
call fcn.1006fce0
mov eax, dword [esp + 0x10]
add esp, 4
mov ecx, dword [esp + 0x88]
add eax, 0x14
mov edx, dword [esp + 0xc4]
jmp 0x1004cc34
mov ecx, dword [esp + 0xc]
push dword [ecx + 0x10]
mov edx, dword [ecx + 4]
mov ecx, dword [esp + 0x14]
call fcn.100a50a0
mov eax, dword [esp + 0x10]
add esp, 4
mov ecx, dword [esp + 0x88]
add eax, 0x14
mov edx, dword [esp + 0xc4]
jmp 0x1004cc34
mov edx, dword [esp + 0xc]
mov edi, dword [esp + 0x18]
mov eax, dword [edx + 0xc]
mov ecx, dword [edx + 0x10]
lea esi, [eax + eax*4]
mov eax, dword [edx + 4]
lea eax, [eax + eax*4]
lea edi, [edi + eax*8]
lea eax, [esp + 0xf0]
push eax
lea eax, [esp + 0x128]
push eax
mov eax, dword [esp + 0x20]
mov eax, dword [eax + esi*8]
inc eax
push eax
push dword [edx + 8]
lea eax, [ecx + 4]
mov ecx, dword [esp + 0x20]
push eax
movzx eax, word [edx + 2]
add eax, eax
mov edx, dword [ecx + 0x10]
mov edx, dword [edx + eax*8 + 4]
call fcn.10040ab0
add esp, 0x14
mov dword [esp + 0x1c], eax
mov ecx, edi
call fcn.10042ef0
mov eax, dword [esp + 0x124]
test eax, eax
je 0x10051ae5
cmp dword [esp + 0x1c], 0
jne 0x100537cd
mov ecx, dword [esp + 0x18]
dec eax
cdq
push fcn.1001e6f0
push 1
sub dword [ecx + esi*8], eax
push 0xffffffffffffffff
sbb dword [ecx + esi*8 + 4], edx
mov ecx, edi
mov edx, dword [esp + 0xfc]
push 0xffffffffffffffff
call fcn.10043200
add esp, 0x10
movzx edx, byte [esp + 0x58]
mov ecx, edi
call fcn.10042360
mov edi, dword [esp + 0x14]
mov esi, dword [esp + 0x18]
mov edx, dword [esp + 0x10]
cmp dword [edx + 0x128], 0
jne 0x10053a78
mov eax, dword [esp + 0xc4]
cmp eax, dword [esp + 0x84]
jb 0x10053466
mov ecx, dword [esp + 0x80]
ja 0x10051b40
cmp dword [esp + 0x88], ecx
jb 0x10053466
nop dword [eax]
nop dword [eax + eax]
mov eax, dword [edx + 0x174]
test eax, eax
je 0x10053466
add ecx, dword [edx + 0x17c]
push dword [edx + 0x178]
adc dword [esp + 0x88], 0
mov dword [esp + 0x84], ecx
call eax
add esp, 4
test eax, eax
jne 0x10053882
mov eax, dword [esp + 0xc4]
mov edx, dword [esp + 0x10]
mov ecx, dword [esp + 0x80]
cmp eax, dword [esp + 0x84]
ja 0x10051b40
jb 0x10051b9c
cmp dword [esp + 0x88], ecx
jae 0x10051b40
mov eax, dword [esp + 0xc]
mov ecx, dword [esp + 0x88]
add eax, 0x14
mov edx, dword [esp + 0xc4]
jmp 0x1004cc34
mov ecx, dword [esp + 0xc]
mov eax, dword [ecx + 4]
lea eax, [eax + eax*4]
test byte [esi + eax*8 + 0x10], 0x10
lea esi, [esi + eax*8]
mov eax, dword [ecx + 8]
lea edi, [eax + eax*4]
jne 0x10051bdf
mov ecx, esi
call fcn.10043020
test eax, eax
jne 0x1004ead2
mov eax, dword [esp + 0x18]
mov ecx, dword [esi + 8]
push dword [eax + edi*8 + 4]
push dword [eax + edi*8]
call fcn.1002b440
add esp, 8
jmp 0x10053466
mov ecx, dword [esp + 0xc]
mov eax, dword [ecx + 4]
lea eax, [eax + eax*4]
test byte [esi + eax*8 + 0x10], 0x10
lea esi, [esi + eax*8]
je 0x10051c4d
mov ecx, dword [esi + 8]
lea edx, [esp + 0x138]
call fcn.1002b750
test eax, eax
je 0x10051c4d
mov eax, dword [esp + 0xc]
push dword [esp + 0x13c]
mov esi, dword [esp + 0x1c]
push dword [esp + 0x13c]
mov eax, dword [eax + 0xc]
lea eax, [eax + eax*4]
lea ecx, [esi + eax*8]
call fcn.10042f90
add esp, 8
jmp 0x10051af9
mov ecx, esi
call fcn.10042ef0
jmp 0x10052e5d
mov ecx, dword [esp + 0xc]
mov eax, dword [ecx + 4]
lea eax, [eax + eax*4]
test byte [esi + eax*8 + 0x10], 0x10
lea esi, [esi + eax*8]
mov eax, dword [ecx + 0xc]
lea edi, [eax + eax*4]
mov eax, dword [ecx + 0x10]
mov dword [esp + 0x48], eax
jne 0x10051c8d
mov ecx, esi
call fcn.10043020
test eax, eax
jne 0x1004ead2
mov eax, dword [esp + 0x48]
test eax, eax
je 0x10051cb7
mov ecx, dword [esp + 0x18]
mov edx, eax
push dword [ecx + edi*8 + 4]
push dword [ecx + edi*8]
mov ecx, dword [esi + 8]
call fcn.1002b7f0
add esp, 8
test eax, eax
jne 0x10052134
mov eax, dword [esp + 0x48]
test eax, eax
js 0x10053466
jmp 0x10051bdf
mov ecx, dword [esp + 0xc]
mov eax, dword [ecx + 0xc]
mov esi, dword [ecx + 0x10]
mov ecx, dword [esp + 0x18]
mov dword [esp + 0x34], esi
lea eax, [eax + eax*4]
lea ecx, [ecx + eax*8]
mov eax, dword [esp + 0xc]
mov dword [esp + 0x38], ecx
cmp word [eax + 2], 0
je 0x10051d0a
mov eax, dword [edi + 0xd0]
mov ecx, dword [esi + 0x14]
test eax, eax
je 0x10051d06
cmp dword [eax + 0x18], ecx
je 0x1004d0f3
mov eax, dword [eax + 4]
test eax, eax
jne 0x10051cf6
mov ecx, dword [esp + 0x38]
mov edx, dword [esp + 0x10]
mov eax, dword [edi + 0xd8]
cmp eax, dword [edx + 0xa0]
jge 0x100537e5
test byte [ecx + 0x10], 0x10
jne 0x10051e2c
mov ecx, dword [esi + 0xc]
mov eax, dword [esi + 8]
add eax, ecx
test ecx, ecx
lea esi, [eax + 1]
cmovne esi, eax
lea eax, [esi + esi*4]
lea ecx, [ecx + eax*2]
mov eax, dword [esp + 0x34]
mov eax, dword [eax + 4]
add eax, 7
mov eax, eax
test eax, eax
jns 0x10051d53
add eax, 7
sar eax, 3
lea ecx, [ecx + 0x16]
lea edi, [eax + ecx*4]
mov ecx, dword [esp + 0x10]
mov eax, edi
cdq
push edx
push eax
call fcn.1001ebe0
add esp, 8
mov dword [esp + 0x48], eax
test eax, eax
je 0x1004ead2
mov ecx, dword [esp + 0x38]
call fcn.10042980
mov ecx, dword [esp + 0x38]
mov eax, 0x1010
mov edx, dword [esp + 0xc]
sub edx, dword [esp + 0x64]
mov word [ecx + 0x10], ax
mov eax, dword [esp + 0x48]
mov dword [ecx + 8], eax
mov dword [ecx + 0xc], edi
mov edi, eax
mov eax, dword [esp + 0x14]
mov dword [ecx + 0x24], 0x10045350
mov ecx, dword [esp + 0x34]
mov dword [edi], eax
mov dword [edi + 0x3c], esi
mov eax, dword [ecx + 0xc]
mov dword [edi + 0x40], eax
mov eax, 0x66666667
imul edx
sar edx, 3
mov eax, edx
shr eax, 0x1f
add eax, edx
mov edx, dword [esp + 0x14]
mov dword [edi + 0x30], eax
mov eax, dword [edx + 0x58]
mov dword [edi + 0xc], eax
mov eax, dword [edx + 0x14]
mov dword [edi + 0x38], eax
mov eax, dword [edx + 0x60]
mov dword [edi + 0x10], eax
mov eax, dword [edx + 0x18]
mov dword [edi + 0x2c], eax
mov eax, dword [edx + 0x68]
mov dword [edi + 8], eax
mov eax, dword [edx + 0x6c]
mov dword [edi + 0x34], eax
mov eax, dword [ecx + 0x14]
mov dword [edi + 0x18], eax
lea eax, [esi*4 + 0xb]
add eax, esi
lea ecx, [edi + eax*8]
lea eax, [edi + 0x58]
cmp eax, ecx
je 0x10051e26
mov edx, dword [esp + 0x10]
xor esi, esi
mov dword [eax + 0x14], edx
mov word [eax + 0x10], si
add eax, 0x28
cmp eax, ecx
jne 0x10051e16
mov esi, dword [esp + 0x34]
jmp 0x10051e2f
mov edi, dword [ecx + 8]
mov edx, dword [esp + 0x14]
mov ecx, dword [esp + 0x10]
inc dword [edx + 0xd8]
mov eax, dword [edx + 0xd0]
mov dword [edi + 4], eax
mov eax, dword [ecx + 0x28]
mov ecx, dword [ecx + 0x2c]
mov dword [edi + 0x20], eax
mov dword [edi + 0x24], ecx
mov eax, dword [edx + 0x28]
mov ecx, dword [edx + 0x2c]
mov dword [edi + 0x48], eax
mov dword [edi + 0x4c], ecx
mov eax, dword [edx]
mov ecx, dword [eax + 0x68]
mov eax, dword [eax + 0x6c]
mov dword [edi + 0x54], eax
mov dword [edi + 0x50], ecx
mov eax, dword [edx + 0xe4]
mov dword [edi + 0x28], eax
lea eax, [edi + 0x58]
mov dword [edx + 0x58], eax
mov dword [edx + 0xe4], 0
mov dword [edx + 0x28], 0
mov dword [edx + 0x2c], 0
mov dword [edx + 0xd0], edi
mov ecx, dword [edi + 0x3c]
mov dword [esp + 0x18], eax
mov dword [edx + 0x14], ecx
movzx eax, word [edi + 0x40]
mov dword [edx + 0x18], eax
lea eax, [ecx + ecx*4]
mov ecx, dword [esp + 0x18]
lea ecx, [ecx + eax*8]
mov dword [edx + 0x60], ecx
mov eax, dword [esi + 0xc]
lea ecx, [ecx + eax*4]
mov dword [edi + 0x14], ecx
mov eax, dword [esi + 4]
add eax, 7
cdq
and edx, 7
add eax, edx
sar eax, 3
push eax
push 0
push ecx
call fcn.1012ab60
mov ecx, dword [esi]
add esp, 0xc
mov edi, dword [esp + 0x14]
mov dword [esp + 0x64], ecx
lea edx, [ecx - 0x14]
mov dword [edi + 0x68], ecx
mov eax, dword [esi + 4]
mov dword [edi + 0x6c], eax
mov dword [esp + 0xc], edx
jmp 0x10051af5
mov edx, dword [esp + 0xc]
mov ecx, edi
call fcn.1004ca20
mov esi, eax
mov eax, dword [edi + 0xd0]
push 0x4000
mov ecx, dword [eax + 0x30]
lea edx, [ecx + ecx*4]
mov ecx, dword [eax + 8]
mov eax, dword [eax + 0xc]
mov ecx, dword [ecx + edx*4 + 4]
mov edx, dword [esp + 0x10]
add ecx, dword [edx + 4]
lea ecx, [ecx + ecx*4]
lea edx, [eax + ecx*8]
mov ecx, esi
call fcn.10043140
mov eax, dword [esp + 0x10]
add esp, 4
mov esi, dword [esp + 0x18]
mov ecx, dword [esp + 0x88]
add eax, 0x14
mov edx, dword [esp + 0xc4]
jmp 0x1004cc34
mov eax, dword [esp + 0x10]
mov eax, dword [eax + 0x20]
and eax, 0x80000
or eax, 0
mov eax, dword [esp + 0xc]
je 0x10051f9e
mov eax, dword [eax + 8]
mov esi, dword [esp + 0x10]
cdq
add dword [esi + 0x208], eax
mov eax, dword [esp + 0xc]
adc dword [esi + 0x20c], edx
mov esi, dword [esp + 0x18]
mov ecx, dword [esp + 0x88]
add eax, 0x14
mov edx, dword [esp + 0xc4]
jmp 0x1004cc34
cmp dword [eax + 4], 0
mov eax, dword [eax + 8]
cdq
je 0x10051fd2
mov ecx, dword [esp + 0x10]
add dword [ecx + 0x200], eax
mov eax, dword [esp + 0xc]
adc dword [ecx + 0x204], edx
mov ecx, dword [esp + 0x88]
add eax, 0x14
mov edx, dword [esp + 0xc4]
jmp 0x1004cc34
add dword [edi + 0x40], eax
mov eax, dword [esp + 0xc]
adc dword [edi + 0x44], edx
mov ecx, dword [esp + 0x88]
add eax, 0x14
mov edx, dword [esp + 0xc4]
jmp 0x1004cc34
cmp dword [eax + 4], 0
je 0x10052010
mov edx, dword [esp + 0x10]
mov eax, dword [edx + 0x200]
or eax, dword [edx + 0x204]
jne 0x10051b9c
jmp 0x10052020
mov eax, dword [edi + 0x40]
or eax, dword [edi + 0x44]
jne 0x10051b9c
mov edx, dword [esp + 0x10]
mov eax, dword [edx + 0x208]
or eax, dword [edx + 0x20c]
mov eax, dword [esp + 0xc]
je 0x10052cda
mov ecx, dword [esp + 0x88]
add eax, 0x14
mov edx, dword [esp + 0xc4]
jmp 0x1004cc34
mov edx, dword [edi + 0xd0]
test edx, edx
je 0x1005207b
mov eax, dword [edx + 4]
test eax, eax
je 0x10052069
nop dword [eax]
mov edx, eax
mov eax, dword [edx + 4]
test eax, eax
jne 0x10052060
mov eax, dword [esp + 0xc]
mov eax, dword [eax + 4]
lea ecx, [eax + eax*4]
mov eax, dword [edx + 0xc]
lea edi, [eax + ecx*8]
jmp 0x10052088
mov ecx, dword [esp + 0xc]
mov eax, dword [ecx + 4]
lea eax, [eax + eax*4]
lea edi, [esi + eax*8]
mov ecx, edi
call fcn.10042a10
mov dword [edi], eax
mov ecx, 0xf244
mov ax, word [edi + 0x10]
and ax, cx
mov dword [edi + 4], edx
or ax, 4
mov word [edi + 0x10], ax
mov eax, dword [esp + 0xc]
mov eax, dword [eax + 8]
lea eax, [eax + eax*4]
lea esi, [esi + eax*8]
mov ecx, esi
call fcn.10042a10
mov cx, word [esi + 0x10]
and cx, word [esp + 0x12c]
or cx, 4
mov dword [esi], eax
mov dword [esi + 4], edx
mov word [esi + 0x10], cx
cmp dword [edi + 4], edx
jg 0x10053466
jl 0x10050dbd
cmp dword [edi], eax
jae 0x10053466
mov dword [edi], eax
mov dword [edi + 4], edx
jmp 0x10053466
mov ecx, dword [esp + 0xc]
mov eax, dword [ecx + 4]
lea esi, [eax + eax*4]
mov eax, dword [esp + 0x18]
mov edi, dword [eax + esi*8 + 4]
mov ecx, dword [eax + esi*8]
test edi, edi
jl 0x10053466
jg 0x1005211d
test ecx, ecx
je 0x10053466
mov eax, dword [esp + 0xc]
mov eax, dword [eax + 0xc]
cdq
sub ecx, eax
mov eax, dword [esp + 0x18]
sbb edi, edx
mov dword [eax + esi*8], ecx
mov dword [eax + esi*8 + 4], edi
mov eax, dword [esp + 0xc]
mov eax, dword [eax + 8]
mov ecx, dword [esp + 0x64]
mov edi, dword [esp + 0x14]
mov esi, dword [esp + 0x18]
lea eax, [eax + eax*4]
lea eax, [eax - 5]
lea eax, [ecx + eax*4]
mov ecx, dword [esp + 0x88]
add eax, 0x14
mov edx, dword [esp + 0xc4]
jmp 0x1004cc34
mov ecx, dword [esp + 0xc]
mov eax, dword [ecx + 4]
lea edi, [eax + eax*4]
mov eax, dword [ecx + 0xc]
lea edx, [eax + eax*4]
mov eax, dword [ecx + 8]
mov dword [esp + 0x28], edx
lea ecx, [eax + eax*4]
mov eax, dword [esp + 0x14]
mov eax, dword [eax + 0x58]
lea esi, [eax + ecx*8]
mov eax, 0x9000
test word [esi + 0x10], ax
je 0x100521a4
mov ecx, esi
call fcn.1004ca00
mov edx, dword [esp + 0x28]
mov esi, eax
jmp 0x100521ad
mov eax, 4
mov word [esi + 0x10], ax
mov eax, dword [esp + 0x18]
mov ecx, dword [eax + edi*8]
mov eax, dword [eax + edi*8 + 4]
mov dword [esp + 0x110], ecx
mov dword [esp + 0x114], eax
test eax, eax
jl 0x10052223
jg 0x100521d0
test ecx, ecx
je 0x10052223
mov ecx, dword [esp + 0x18]
mov eax, dword [ecx + edx*8]
mov ecx, dword [ecx + edx*8 + 4]
test ecx, ecx
jl 0x100521e5
jg 0x100521f6
test eax, eax
jne 0x100521f6
xorps xmm0, xmm0
movlpd qword [esp + 0x28], xmm0
mov ecx, dword [esp + 0x2c]
mov eax, dword [esp + 0x28]
push ecx
push eax
lea ecx, [esp + 0x118]
call fcn.10023830
add esp, 8
test eax, eax
jne 0x10052223
mov eax, dword [esp + 0x110]
mov ecx, dword [esp + 0x114]
mov dword [esi], eax
mov dword [esi + 4], ecx
jmp 0x10053466
mov dword [esi], 0xffffffff
mov dword [esi + 4], 0xffffffff
jmp 0x10053466
mov ecx, dword [esp + 0xc]
mov eax, dword [ecx + 4]
lea esi, [eax + eax*4]
mov eax, dword [esp + 0x18]
mov ecx, dword [eax + esi*8]
mov edx, dword [eax + esi*8 + 4]
mov eax, ecx
or eax, edx
je 0x1004d0f3
test edx, edx
jl 0x10052cd6
jg 0x10052266
test ecx, ecx
je 0x10052cd6
mov eax, dword [esp + 0x18]
sub ecx, 1
sbb edx, 0
mov dword [eax + esi*8], ecx
mov dword [eax + esi*8 + 4], edx
jmp 0x10052cd6
mov ecx, dword [esp + 0xc]
mov eax, dword [ecx + 4]
lea edx, [eax + eax*4]
mov ecx, dword [esi + edx*8 + 4]
mov eax, dword [esi + edx*8]
cmp ecx, 0x80000000
jl 0x100522a8
jg 0x1005229b
test eax, eax
je 0x100522a8
sub eax, 1
mov dword [esi + edx*8], eax
sbb ecx, 0
mov dword [esi + edx*8 + 4], ecx
or eax, ecx
mov eax, dword [esp + 0xc]
je 0x10052cda
mov ecx, dword [esp + 0x88]
add eax, 0x14
mov edx, dword [esp + 0xc4]
jmp 0x1004cc34
mov ecx, dword [esp + 0xc]
push 0
movzx eax, word [ecx + 2]
mov ecx, dword [esp + 0x14]
mov dword [esp + 0x4c], eax
lea eax, [eax*4 + 0x44]
push eax
call fcn.1001ec50
mov esi, eax
add esp, 8
test esi, esi
je 0x1004ead6
mov eax, dword [esp + 0x48]
mov edx, dword [esp + 0x10]
add eax, 7
push 1
mov dword [esi + 8], 0
lea ecx, [esi + eax*4]
mov dword [esi], ecx
call fcn.10042ed0
mov ecx, dword [esp + 0x10]
add esp, 4
mov eax, dword [ecx + 0x10]
sub ecx, dword [esp + 0x64]
mov dword [esi + 4], eax
mov eax, 0x66666667
imul ecx
mov ecx, dword [esp + 0xc]
sar edx, 3
mov eax, edx
mov dword [esi + 0xc], edi
shr eax, 0x1f
add eax, edx
mov byte [esi + 0x19], 0
mov dword [esi + 0x10], eax
mov al, byte [esp + 0x58]
mov byte [esi + 0x18], al
mov eax, dword [esp + 0x48]
mov dword [esi + 0x14], 0
mov byte [esi + 0x1a], al
mov word [ecx], 0xf1a3
mov dword [ecx + 0x10], esi
jmp 0x10052367
mov ecx, dword [esp + 0xc]
mov esi, dword [ecx + 0x10]
mov eax, dword [ecx + 0xc]
mov ecx, dword [esp + 0x18]
mov dword [esp + 0x28], esi
lea eax, [eax + eax*4]
lea edi, [ecx + eax*8]
mov dword [esp + 0x48], edi
cmp dword [esi + 8], edi
je 0x100523be
movzx ecx, byte [esi + 0x1a]
sub ecx, 1
mov dword [esi + 8], edi
js 0x100523be
mov edi, dword [esp + 0xc]
lea edx, [esi + 0x1c]
mov esi, dword [esp + 0x18]
lea edx, [edx + ecx*4]
nop
mov eax, dword [edi + 8]
lea edx, [edx - 4]
add eax, ecx
sub ecx, 1
lea eax, [eax + eax*4]
lea eax, [esi + eax*8]
mov dword [edx + 4], eax
jns 0x100523a0
mov esi, dword [esp + 0x28]
mov edi, dword [esp + 0x48]
inc dword [edi + 0xc]
lea eax, [esi + 0x1c]
mov edi, dword [esp + 0xc]
movzx edx, byte [esi + 0x1a]
mov ecx, dword [esi + 4]
push eax
cmp dword [edi + 4], 0
push edx
push esi
je 0x100523dd
mov eax, dword [ecx + 0x1c]
jmp 0x100523e0
mov eax, dword [ecx + 0x10]
call eax
mov eax, dword [esi + 0x14]
add esp, 0xc
test eax, eax
je 0x10053466
jle 0x10052417
mov ecx, dword [esi]
mov dl, 1
call fcn.10043810
mov edi, dword [esp + 0x14]
push eax
push 0x101587a0
push edi
call fcn.10043ed0
mov eax, dword [esi + 0x14]
add esp, 0xc
mov dword [esp + 0x1c], eax
jmp 0x1005241b
mov edi, dword [esp + 0x14]
cmp byte [esi + 0x19], 0
je 0x10052446
mov eax, dword [esp + 0xc]
mov eax, dword [eax - 0x10]
test eax, eax
je 0x10052442
mov ecx, dword [esp + 0x18]
lea eax, [eax + eax*4]
push 0
push 1
lea ecx, [ecx + eax*8]
call fcn.10042f90
add esp, 8
mov byte [esi + 0x19], 0
mov ecx, dword [esi]
mov eax, 0x9000
test word [ecx + 0x10], ax
jne 0x10052459
cmp dword [ecx + 0x18], 0
je 0x1005245e
call fcn.10042940
mov eax, dword [esi]
mov ecx, 1
mov edx, dword [esp + 0x1c]
mov word [eax + 0x10], cx
mov dword [esi + 0x14], 0
jmp 0x1004dcc2
mov ecx, dword [esp + 0xc]
mov eax, dword [ecx + 4]
mov edx, dword [ecx + 0x10]
lea eax, [eax + eax*4]
lea esi, [esi + eax*8]
mov eax, dword [ecx + 0xc]
test eax, eax
je 0x100524ba
mov ecx, dword [esp + 0x18]
lea eax, [eax + eax*4]
push edx
lea edx, [ecx + eax*8]
mov ecx, esi
call fcn.10042890
mov ecx, dword [esp + 0x1c]
mov edi, eax
mov eax, dword [esp + 0x10]
add esp, 4
mov eax, dword [eax + 0xc]
lea eax, [eax + eax*4]
lea esi, [ecx + eax*8]
jmp 0x100524c3
mov ecx, esi
call fcn.100427f0
mov edi, eax
mov dword [esp + 0x1c], edi
test edi, edi
jne 0x10053805
movzx edx, byte [esp + 0x58]
mov ecx, esi
call fcn.10042360
jmp 0x10053466
mov ecx, dword [esp + 0xc]
lea eax, [esp + 0x1a8]
push eax
lea eax, [esp + 0x1a8]
mov dword [esp + 0x1a4], 0
push eax
push dword [ecx + 8]
mov edx, dword [ecx + 4]
mov ecx, dword [esp + 0x1c]
mov dword [esp + 0x1b4], 0xffffffff
mov dword [esp + 0x1b0], 0xffffffff
call fcn.100cdb90
mov edx, eax
add esp, 0xc
mov dword [esp + 0x1c], edx
test edx, edx
je 0x1005254d
cmp edx, 5
jne 0x10053580
mov dword [esp + 0x1c], 0
mov dword [esp + 0x1a0], 1
mov eax, dword [esp + 0xc]
xor edi, edi
mov ecx, 0x9000
mov eax, dword [eax + 0xc]
lea eax, [eax + eax*4]
lea esi, [esi + eax*8]
mov eax, dword [esp + edi*4 + 0x1a0]
cdq
test word [esi + 0x10], cx
je 0x10052582
push edx
push eax
mov ecx, esi
call fcn.10042f60
add esp, 8
mov ecx, 0x9000
jmp 0x10052590
mov dword [esi], eax
mov eax, 4
mov dword [esi + 4], edx
mov word [esi + 0x10], ax
inc edi
add esi, 0x28
cmp edi, 3
jl 0x10052561
jmp 0x10053466
mov edx, dword [esp + 0xc]
mov ecx, edi
call fcn.1004ca20
mov dword [esp + 0x48], eax
mov eax, dword [esp + 0xc]
mov edx, dword [eax + 4]
mov esi, dword [eax + 0xc]
add edx, edx
mov eax, dword [esp + 0x10]
mov ecx, dword [eax + 0x10]
mov eax, dword [ecx + edx*8 + 4]
mov ecx, eax
mov dword [esp + 0x28], eax
call fcn.1003ff50
mov ecx, eax
mov dword [esp + 0x20], eax
call fcn.10030f30
mov ecx, dword [esp + 0x20]
mov edi, eax
cmp esi, 0xffffffff
cmove esi, edi
call fcn.10030f40
mov ecx, dword [esp + 0x20]
test eax, eax
mov edx, 1
cmove esi, edi
call fcn.10030bc0
cmp esi, 5
jne 0x10052670
mov ecx, eax
call fcn.10022380
test eax, eax
je 0x1005261b
mov ecx, dword [esp + 0x20]
call fcn.10030f70
test eax, eax
jne 0x10052670
mov esi, edi
mov eax, dword [esp + 0x1c]
test eax, eax
je 0x10052627
mov esi, edi
mov ecx, dword [esp + 0x20]
mov edx, esi
call fcn.10030dd0
mov esi, dword [esp + 0x48]
mov ecx, 0x2202
mov word [esi + 0x10], cx
mov ecx, eax
call fcn.1008b370
mov ecx, eax
mov dword [esi + 8], eax
call fcn.10022380
movzx edx, byte [esp + 0x58]
mov ecx, esi
mov dword [esi + 0xc], eax
mov byte [esi + 0x12], 1
call fcn.10042360
mov edx, dword [esp + 0x1c]
mov edi, dword [esp + 0x14]
jmp 0x1004dcc2
cmp esi, edi
je 0x1005261d
cmp edi, 5
je 0x1005267e
cmp esi, 5
jne 0x1005261d
mov eax, dword [esp + 0x10]
cmp byte [eax + 0x55], 0
je 0x1005382a
cmp dword [eax + 0xc0], 1
jg 0x1005382a
cmp edi, 5
jne 0x100526c2
mov ecx, dword [esp + 0x20]
mov edx, eax
call fcn.100310f0
mov dword [esp + 0x1c], eax
test eax, eax
jne 0x10052625
mov ecx, dword [esp + 0x20]
mov edx, esi
call fcn.10030dd0
jmp 0x100526de
cmp edi, 4
jne 0x100526d3
mov ecx, dword [esp + 0x20]
lea edx, [edi - 2]
call fcn.10030dd0
cmp dword [esp + 0x1c], 0
jne 0x10052625
mov ecx, dword [esp + 0x28]
xor edx, edx
cmp esi, 5
sete dl
inc edx
call fcn.10041170
mov dword [esp + 0x1c], eax
jmp 0x10052621
mov ecx, dword [esp + 0xc]
mov eax, dword [ecx + 8]
test eax, eax
je 0x1005270c
lea eax, [eax + eax*4]
lea eax, [esi + eax*8]
jmp 0x1005270e
xor eax, eax
mov edx, dword [esp + 0x10]
push eax
push dword [ecx + 4]
lea ecx, [edi + 0x7c]
call fcn.100ab0d0
mov edx, eax
add esp, 8
mov dword [esp + 0x1c], edx
test edx, edx
jne 0x10053580
mov eax, dword [esp + 0xc]
mov ecx, dword [esp + 0x88]
add eax, 0x14
mov edx, dword [esp + 0xc4]
jmp 0x1004cc34
mov ecx, dword [esp + 0xc]
mov eax, dword [esp + 0x10]
mov ecx, dword [ecx + 4]
mov eax, dword [eax + 0x10]
add ecx, ecx
mov ecx, dword [eax + ecx*8 + 4]
call fcn.100382d0
mov edx, eax
mov dword [esp + 0x1c], edx
test edx, edx
je 0x10053466
cmp edx, 0x65
jne 0x10053580
mov dword [esp + 0x1c], 0
jmp 0x10052cd6
mov ecx, dword [esp + 0xc]
cmp dword [ecx + 4], 0
jne 0x100527b6
mov edx, dword [ecx + 8]
mov ecx, dword [esp + 0x10]
call fcn.100489f0
mov eax, dword [esp + 0xc]
mov ecx, dword [esp + 0x88]
add eax, 0x14
mov edx, dword [esp + 0xc4]
jmp 0x1004cc34
mov ecx, dword [ecx + 8]
mov eax, dword [edi + 0x98]
inc ecx
xor ecx, eax
and ecx, 3
xor ecx, eax
mov eax, dword [esp + 0xc]
mov dword [edi + 0x98], ecx
mov ecx, dword [esp + 0x88]
add eax, 0x14
mov edx, dword [esp + 0xc4]
jmp 0x1004cc34
mov ecx, dword [esp + 0xc]
mov eax, dword [edi + 0x60]
mov ecx, dword [ecx + 4]
mov ecx, dword [eax + ecx*4]
mov ecx, dword [ecx + 0x2c]
call fcn.100390b0
mov eax, dword [esp + 0xc]
mov ecx, dword [esp + 0x88]
add eax, 0x14
mov edx, dword [esp + 0xc4]
jmp 0x1004cc34
mov ecx, dword [esp + 0xc]
mov eax, dword [edi + 0x60]
mov ecx, dword [ecx + 4]
mov ecx, dword [eax + ecx*4]
mov ecx, dword [ecx + 0x2c]
call fcn.100390c0
mov eax, dword [esp + 0xc]
mov ecx, dword [esp + 0x88]
add eax, 0x14
mov edx, dword [esp + 0xc4]
jmp 0x1004cc34
mov edx, dword [esp + 0xc]
mov al, byte [edx + 0xc]
mov edx, dword [esp + 0x10]
mov byte [esp + 0x128], al
test al, al
jne 0x1005286d
mov eax, dword [edx + 0x20]
and eax, 0x400
mov dword [esp + 0x28], eax
jne 0x10051b9c
mov eax, dword [esp + 0xc]
mov ecx, dword [edx + 0x10]
mov edx, dword [esp + 0xc]
push dword [esp + 0x128]
mov eax, dword [eax + 4]
add eax, eax
mov edx, dword [edx + 8]
mov ecx, dword [ecx + eax*8 + 4]
call fcn.10040fe0
mov edx, eax
add esp, 4
mov dword [esp + 0x1c], edx
test edx, edx
je 0x1004d9b5
cmp dl, 6
jne 0x10053580
mov eax, dword [esp + 0xc]
push dword [eax + 0x10]
push str.database_table_is_locked:__s
push edi
call fcn.10043ed0
mov edx, dword [esp + 0x28]
add esp, 0xc
jmp 0x10053580
mov ecx, dword [esp + 0xc]
mov esi, dword [ecx + 0x10]
mov edx, esi
mov ecx, dword [esp + 0x10]
call fcn.100acf90
mov edx, eax
mov dword [esp + 0x1c], edx
test esi, esi
je 0x1004dcc2
mov edx, dword [esi + 8]
mov ecx, edi
call fcn.10048bf0
mov edx, dword [esp + 0x1c]
jmp 0x1004dcc2
mov eax, dword [esp + 0x10]
lea ecx, [esp + 0x90]
xorps xmm0, xmm0
movaps xmmword [esp + 0xa0], xmm0
mov dword [esp + 0xa4], eax
mov eax, dword [esp + 0xc]
movaps xmmword [esp + 0x90], xmm0
movq qword [esp + 0xb0], xmm0
mov eax, dword [eax + 8]
lea eax, [eax + eax*4]
lea edx, [esi + eax*8]
call fcn.10043190
mov dl, 1
mov dword [esp + 0x1c], eax
lea ecx, [esp + 0x90]
call fcn.10043810
test eax, eax
je 0x1005296d
lea ecx, [edi + 0x7c]
push ecx
mov ecx, dword [esp + 0x14]
push eax
mov eax, dword [esp + 0x14]
mov edx, dword [eax + 4]
call fcn.100ac9b0
add esp, 8
mov dword [esp + 0x1c], eax
test dword [esp + 0xa0], 0x9000
jne 0x10052984
cmp dword [esp + 0xa8], 0
je 0x10052990
lea ecx, [esp + 0x90]
call fcn.10042940
mov edx, dword [esp + 0x1c]
test edx, edx
jne 0x10053580
mov eax, dword [esp + 0xc]
mov ecx, dword [esp + 0x88]
add eax, 0x14
mov edx, dword [esp + 0xc4]
jmp 0x1004cc34
mov ecx, dword [esp + 0x10]
mov eax, dword [esp + 0xc]
inc dword [ecx + 0xcc]
push dword [eax + 0x10]
mov edx, dword [eax + 4]
call fcn.100acd70
mov esi, dword [esp + 0x14]
mov edx, eax
add esp, 4
mov dword [esp + 0x1c], edx
dec dword [esi + 0xcc]
test edx, edx
jne 0x10053584
mov eax, dword [esp + 0xc]
mov esi, dword [esp + 0x18]
mov ecx, dword [esp + 0x88]
add eax, 0x14
mov edx, dword [esp + 0xc4]
jmp 0x1004cc34
mov ecx, dword [esp + 0xc]
mov dword [esp + 0x38], 0
mov eax, dword [ecx + 0x10]
mov esi, dword [eax + 8]
test esi, esi
je 0x10053874
mov edi, dword [esi]
test edi, edi
je 0x10053870
lea eax, [esp + 0x38]
push eax
mov eax, dword [edi + 0x18]
push esi
call eax
mov ecx, dword [esp + 0x1c]
add esp, 8
mov edx, esi
mov dword [esp + 0x1c], eax
call fcn.10048bf0
mov edx, dword [esp + 0x1c]
test edx, edx
jne 0x1005357c
mov eax, dword [esp + 0x38]
mov ecx, dword [esp + 0x14]
push 2
push edx
mov dword [eax], esi
mov eax, dword [esp + 0x14]
mov edx, dword [eax + 4]
call fcn.1004c4b0
add esp, 8
test eax, eax
je 0x1005385f
mov ecx, dword [esp + 0x38]
mov dword [eax + 0x2c], ecx
inc dword [esi + 4]
jmp 0x10053466
mov ecx, dword [esp + 0xc]
mov eax, dword [edi + 0x60]
mov ecx, dword [ecx + 4]
mov edi, dword [eax + ecx*4]
call fcn.100cb480
test eax, eax
jne 0x1004ead2
push eax
push 8
call fcn.1001e4e0
mov esi, eax
add esp, 8
test esi, esi
je 0x1004ead2
mov eax, dword [esp + 0xc]
mov ecx, dword [edi + 0x2c]
mov edx, dword [esp + 0x18]
mov edi, dword [esp + 0x14]
mov dword [esi], ecx
mov ecx, dword [eax + 0xc]
lea ecx, [ecx + ecx*4]
lea ecx, [edx + ecx*8]
mov edx, eax
mov dword [esi + 4], ecx
mov ecx, edi
call fcn.1004ca20
mov ecx, 1
mov edx, esi
push fcn.1001e6f0
push str.ValueList
mov word [eax + 0x10], cx
mov ecx, eax
call fcn.10042fd0
mov eax, dword [esp + 0x14]
add esp, 8
mov esi, dword [esp + 0x18]
mov ecx, dword [esp + 0x88]
add eax, 0x14
mov edx, dword [esp + 0xc4]
jmp 0x1004cc34
mov ecx, dword [esp + 0xc]
mov eax, dword [ecx + 0xc]
mov ecx, dword [ecx + 4]
lea edx, [eax + eax*4]
mov eax, dword [edi + 0x60]
lea esi, [esi + edx*8]
add esi, 0x28
mov dword [esp + 0x34], esi
mov eax, dword [eax + ecx*4]
mov dword [esp + 0x20], eax
mov edi, dword [esi]
movd xmm0, esi
mov ecx, dword [eax + 0x2c]
mov dword [esp + 0x44], ecx
pshufd xmm3, xmm0, 0
mov dword [esp + 0x38], edi
mov eax, dword [ecx]
mov dword [esp + 0x70], eax
mov ecx, dword [eax]
mov eax, dword [esp + 0x18]
mov dword [esp + 0x54], ecx
mov ecx, dword [eax + edx*8]
mov eax, dword [esp + 0x14]
mov dword [esp + 0x60], ecx
xor ecx, ecx
mov edx, dword [eax + 0x5c]
mov dword [esp + 0x48], edx
test edi, edi
jle 0x10052c7b
cmp edi, 0x10
jb 0x10052c62
cmp dword [0x10168178], 2
jl 0x10052c62
movaps xmm2, xmmword [0x101611e0]
mov eax, edi
and eax, 0x8000000f
jns 0x10052ba8
dec eax
or eax, 0xfffffff0
inc eax
movaps xmm1, xmmword [str.____]
mov esi, edi
sub esi, eax
add edx, 0x20
mov dword [esp + 0x28], esi
mov esi, 8
mov edi, dword [esp + 0x28]
movd xmm0, ecx
lea eax, [esi - 4]
pshufd xmm0, xmm0, 0
lea edx, [edx + 0x40]
paddd xmm0, xmm2
add ecx, 0x10
pmulld xmm0, xmm1
paddd xmm0, xmm3
paddd xmm0, xmm1
movups xmmword [edx - 0x60], xmm0
movd xmm0, eax
lea eax, [esi + 4]
pshufd xmm0, xmm0, 0
paddd xmm0, xmm2
pmulld xmm0, xmm1
paddd xmm0, xmm3
paddd xmm0, xmm1
movups xmmword [edx - 0x50], xmm0
movd xmm0, esi
add esi, 0x10
pshufd xmm0, xmm0, 0
paddd xmm0, xmm2
pmulld xmm0, xmm1
paddd xmm0, xmm3
paddd xmm0, xmm1
movups xmmword [edx - 0x40], xmm0
movd xmm0, eax
pshufd xmm0, xmm0, 0
paddd xmm0, xmm2
pmulld xmm0, xmm1
paddd xmm0, xmm3
paddd xmm0, xmm1
movups xmmword [edx - 0x30], xmm0
cmp ecx, edi
jl 0x10052bc3
mov edi, dword [esp + 0x38]
mov edx, dword [esp + 0x48]
cmp ecx, edi
jge 0x10052c7b
mov esi, dword [esp + 0x34]
lea eax, [ecx + 1]
lea eax, [eax + eax*4]
lea eax, [esi + eax*8]
nop dword [eax + eax]
mov dword [edx + ecx*4], eax
inc ecx
add eax, 0x28
cmp ecx, edi
jl 0x10052c70
mov eax, dword [esp + 0xc]
mov esi, dword [esp + 0x44]
push edx
push edi
push dword [eax + 0x10]
mov edi, dword [esp + 0x60]
push dword [esp + 0x6c]
push esi
mov eax, dword [edi + 0x20]
call eax
mov edx, dword [esp + 0x84]
add esp, 0x14
mov ecx, dword [esp + 0x14]
mov dword [esp + 0x1c], eax
call fcn.10048bf0
mov edx, dword [esp + 0x1c]
test edx, edx
jne 0x1005357c
mov eax, dword [edi + 0x28]
push esi
call eax
mov ecx, dword [esp + 0x24]
add esp, 4
mov byte [ecx + 2], 0
test eax, eax
je 0x10053466
mov edi, dword [esp + 0x14]
mov eax, dword [esp + 0xc]
mov eax, dword [eax + 8]
mov ecx, dword [esp + 0x64]
mov esi, dword [esp + 0x18]
lea eax, [eax + eax*4]
lea eax, [eax - 5]
lea eax, [ecx + eax*4]
mov ecx, dword [esp + 0x88]
add eax, 0x14
mov edx, dword [esp + 0xc4]
jmp 0x1004cc34
mov edx, dword [esp + 0xc]
mov eax, dword [edi + 0x60]
mov ecx, dword [edx + 4]
mov edi, dword [eax + ecx*4]
mov eax, dword [edx + 0xc]
cmp byte [edi + 2], 0
lea eax, [eax + eax*4]
lea esi, [esi + eax*8]
jne 0x1005345f
test byte [edx + 2], 1
xorps xmm0, xmm0
mov eax, dword [edi + 0x2c]
mov eax, dword [eax]
mov dword [esp + 0x48], eax
mov eax, dword [eax]
mov dword [esp + 0x28], eax
mov al, byte [esp + 0x58]
movaps xmmword [esp + 0x90], xmm0
movaps xmmword [esp + 0xa0], xmm0
mov dword [esp + 0x90], esi
mov byte [esp + 0xa8], al
je 0x10052d76
mov ecx, esi
call fcn.10042ef0
mov edx, dword [esp + 0xc]
mov eax, 0x401
mov dword [esi], 0
jmp 0x10052d89
mov ax, word [esi + 0x10]
mov ecx, 0xf241
and ax, cx
or ax, 1
movzx eax, ax
mov word [esi + 0x10], ax
lea eax, [esp + 0x90]
push dword [edx + 8]
push eax
mov eax, dword [esp + 0x30]
push dword [edi + 0x2c]
mov eax, dword [eax + 0x2c]
call eax
mov edi, dword [esp + 0x20]
add esp, 0xc
mov edx, dword [esp + 0x48]
mov ecx, edi
mov dword [esp + 0x1c], eax
call fcn.10048bf0
cmp dword [esp + 0xa4], 0
jle 0x10052de7
push esi
call fcn.100492f0
add esp, 4
push eax
push 0x101587a0
push edi
call fcn.10043ed0
mov eax, dword [esp + 0xb0]
add esp, 0xc
mov dword [esp + 0x1c], eax
movzx edx, byte [esp + 0x58]
mov ecx, esi
call fcn.10042360
mov edx, dword [esp + 0x1c]
jmp 0x1004dcc2
mov ecx, dword [esp + 0xc]
mov eax, dword [edi + 0x60]
mov ecx, dword [ecx + 4]
mov edi, dword [eax + ecx*4]
cmp byte [edi + 2], 0
jne 0x1004e3e3
mov eax, dword [edi + 0x2c]
push eax
mov esi, dword [eax]
mov ecx, dword [esi]
mov dword [esp + 0x2c], ecx
mov eax, dword [ecx + 0x24]
call eax
mov ecx, dword [esp + 0x18]
add esp, 4
mov edx, esi
mov dword [esp + 0x1c], eax
call fcn.10048bf0
mov edx, dword [esp + 0x1c]
test edx, edx
jne 0x1005357c
mov eax, dword [esp + 0x28]
push dword [edi + 0x2c]
mov eax, dword [eax + 0x28]
call eax
add esp, 4
test eax, eax
jne 0x10051af1
mov edi, dword [esp + 0x14]
mov esi, dword [esp + 0x18]
mov ecx, dword [esp + 0xc]
mov edx, dword [ecx + 8]
mov ecx, dword [esp + 0x64]
dec edx
lea edx, [edx + edx*4]
lea edx, [ecx + edx*4]
mov dword [esp + 0xc], edx
jmp 0x10051af9
mov ecx, dword [esp + 0x10]
mov eax, dword [ecx + 0x20]
or dword [ecx + 0x20], 0x4000000
and eax, 0x4000000
mov dword [esp + 0x28], eax
mov eax, dword [ecx + 0x24]
mov dword [ecx + 0x24], eax
mov ecx, dword [esp + 0xc]
mov eax, dword [ecx + 0x10]
mov edi, dword [eax + 8]
mov eax, dword [ecx + 4]
lea eax, [eax + eax*4]
test byte [esi + eax*8 + 0x10], 2
lea esi, [esi + eax*8]
jne 0x10052eb9
mov byte [esi + 0x12], 1
jmp 0x10052ed6
cmp byte [esi + 0x12], 1
je 0x10052ed6
mov dl, 1
mov ecx, esi
call fcn.10021d80
mov edx, eax
mov dword [esp + 0x1c], edx
test edx, edx
jne 0x1005357c
mov eax, dword [edi]
push dword [esi + 8]
push edi
mov eax, dword [eax + 0x4c]
call eax
add esp, 8
mov dword [esp + 0x1c], eax
cmp dword [esp + 0x28], 0
jne 0x10052f00
mov ecx, dword [esp + 0x10]
mov eax, dword [ecx + 0x24]
and dword [ecx + 0x20], 0xfbffffff
mov dword [ecx + 0x24], eax
mov edx, edi
mov edi, dword [esp + 0x14]
mov ecx, edi
call fcn.10048bf0
and dword [edi + 0x98], 0xfffffffc
mov edx, dword [esp + 0x1c]
jmp 0x1004dcc2
mov eax, dword [esp + 0x10]
xorps xmm0, xmm0
movlpd qword [esp + 0x38], xmm0
cmp byte [eax + 0x57], 0
jne 0x1004eada
mov eax, dword [esp + 0xc]
mov eax, dword [eax + 0x10]
mov edx, dword [eax + 8]
mov dword [esp + 0x48], edx
test edx, edx
je 0x10053874
mov eax, dword [edx]
mov dword [esp + 0x28], eax
test eax, eax
je 0x10053874
cmp dword [eax + 0x34], 0
mov esi, dword [esp + 0xc]
mov esi, dword [esi + 8]
je 0x1004d0f3
mov eax, dword [esp + 0x10]
mov ecx, dword [esp + 0x18]
mov edi, dword [edi + 0x5c]
mov al, byte [eax + 0x5c]
mov byte [esp + 0x27], al
mov eax, dword [esp + 0xc]
mov eax, dword [eax + 0xc]
lea eax, [eax + eax*4]
lea ecx, [ecx + eax*8]
xor eax, eax
test esi, esi
jle 0x10052f9b
nop
mov dword [edi + eax*4], ecx
inc eax
add ecx, 0x28
cmp eax, esi
jl 0x10052f90
mov eax, dword [esp + 0xc]
mov ecx, dword [esp + 0x10]
mov al, byte [eax + 2]
mov byte [ecx + 0x5c], al
lea eax, [esp + 0x38]
push eax
mov eax, dword [esp + 0x2c]
push edi
push esi
push edx
mov eax, dword [eax + 0x34]
call eax
mov ecx, dword [esp + 0x20]
add esp, 0x10
mov edi, dword [esp + 0x14]
mov edx, dword [esp + 0x48]
mov dword [esp + 0x1c], eax
mov al, byte [esp + 0x27]
mov byte [ecx + 0x5c], al
mov ecx, edi
call fcn.10048bf0
mov edx, dword [esp + 0x1c]
test edx, edx
jne 0x10053000
mov esi, dword [esp + 0xc]
cmp dword [esi + 4], edx
mov esi, dword [esp + 0x10]
je 0x1005304d
mov eax, dword [esp + 0x38]
mov ecx, dword [esp + 0x3c]
mov dword [esi + 0x28], eax
mov dword [esi + 0x2c], ecx
jmp 0x1005304d
cmp dl, 0x13
jne 0x10053049
mov eax, dword [esp + 0xc]
mov eax, dword [eax + 0x10]
cmp byte [eax + 0x10], 0
je 0x10053049
mov ecx, dword [esp + 0xc]
movzx ecx, word [ecx + 2]
cmp ecx, 4
jne 0x100538a5
mov eax, dword [esp + 0xc]
mov esi, dword [esp + 0x18]
mov dword [esp + 0x1c], 0
mov ecx, dword [esp + 0x88]
add eax, 0x14
mov edx, dword [esp + 0xc4]
jmp 0x1004cc34
mov esi, dword [esp + 0x10]
add dword [edi + 0x28], 1
adc dword [edi + 0x2c], 0
test edx, edx
jne 0x10053584
mov eax, dword [esp + 0xc]
mov esi, dword [esp + 0x18]
mov ecx, dword [esp + 0x88]
add eax, 0x14
mov edx, dword [esp + 0xc4]
jmp 0x1004cc34
mov ecx, dword [esp + 0xc]
mov eax, dword [ecx + 8]
lea ecx, [eax + eax*4]
mov eax, dword [edi + 0x58]
lea edx, [eax + ecx*8]
mov eax, 0x9000
test word [edx + 0x10], ax
je 0x100530a1
mov ecx, edx
call fcn.1004ca00
mov edx, eax
jmp 0x100530aa
mov eax, 4
mov word [edx + 0x10], ax
mov eax, dword [esp + 0xc]
mov ecx, dword [eax + 4]
mov eax, dword [esp + 0x10]
add ecx, ecx
mov eax, dword [eax + 0x10]
mov eax, dword [eax + ecx*8 + 4]
mov eax, dword [eax + 4]
mov eax, dword [eax + 0x30]
mov dword [edx], eax
mov eax, dword [esp + 0xc]
mov dword [edx + 4], 0
mov ecx, dword [esp + 0x88]
add eax, 0x14
mov edx, dword [esp + 0xc4]
jmp 0x1004cc34
mov ecx, dword [esp + 0xc]
mov eax, dword [ecx + 8]
lea ecx, [eax + eax*4]
mov eax, dword [edi + 0x58]
lea esi, [eax + ecx*8]
mov eax, 0x9000
test word [esi + 0x10], ax
je 0x1005310d
mov ecx, esi
call fcn.1004ca00
mov esi, eax
jmp 0x10053116
mov eax, 4
mov word [esi + 0x10], ax
mov eax, dword [esp + 0xc]
xor edx, edx
mov ecx, dword [eax + 4]
mov eax, dword [esp + 0x10]
add ecx, ecx
mov eax, dword [eax + 0x10]
mov edi, dword [eax + ecx*8 + 4]
mov eax, dword [esp + 0xc]
cmp dword [eax + 0xc], edx
je 0x10053149
mov ecx, edi
call fcn.10036220
mov edx, eax
mov eax, dword [esp + 0xc]
cmp edx, dword [eax + 0xc]
cmovb edx, dword [eax + 0xc]
mov ecx, edi
call fcn.10037390
mov dword [esi], eax
mov dword [esi + 4], 0
jmp 0x10053466
mov ecx, dword [esp + 0xc]
mov esi, dword [ecx + 0x10]
mov eax, dword [ecx + 0xc]
mov ecx, dword [esp + 0x18]
mov dword [esp + 0x28], esi
lea eax, [eax + eax*4]
lea edi, [ecx + eax*8]
mov dword [esp + 0x48], edi
cmp dword [esi], edi
je 0x100531c3
mov eax, dword [esp + 0x14]
movzx ecx, byte [esi + 0x1a]
sub ecx, 1
mov dword [esi + 0xc], eax
mov al, byte [esp + 0x58]
mov dword [esi], edi
mov byte [esi + 0x18], al
js 0x100531c3
mov edi, dword [esp + 0xc]
lea edx, [esi + 0x1c]
mov esi, dword [esp + 0x18]
lea edx, [edx + ecx*4]
mov eax, dword [edi + 8]
lea edx, [edx - 4]
add eax, ecx
sub ecx, 1
lea eax, [eax + eax*4]
lea eax, [esi + eax*8]
mov dword [edx + 4], eax
jns 0x100531a5
mov esi, dword [esp + 0x28]
mov edi, dword [esp + 0x48]
mov ax, word [edi + 0x10]
mov ecx, 0xf241
and ax, cx
or ax, 1
mov word [edi + 0x10], ax
lea eax, [esi + 0x1c]
mov ecx, dword [esi + 4]
push eax
movzx eax, byte [esi + 0x1a]
push eax
mov eax, dword [ecx + 0x10]
push esi
call eax
mov eax, dword [esi + 0x14]
add esp, 0xc
test eax, eax
je 0x10053466
jle 0x1005321e
mov dl, 1
mov ecx, edi
call fcn.10043810
mov edi, dword [esp + 0x14]
push eax
push 0x101587a0
push edi
call fcn.10043ed0
mov eax, dword [esi + 0x14]
add esp, 0xc
mov dword [esp + 0x1c], eax
jmp 0x10053222
mov edi, dword [esp + 0x14]
mov eax, dword [esp + 0xc]
lea edx, [edi + 0xe4]
mov ecx, dword [esp + 0x10]
push dword [eax + 4]
push dword [esi + 0x10]
call fcn.10046cd0
mov edx, dword [esp + 0x24]
add esp, 8
mov dword [esi + 0x14], 0
jmp 0x1004dcc2
mov eax, dword [eax + 4]
mov ecx, 0xf7ff
lea eax, [eax + eax*4]
and word [esi + eax*8 + 0x10], cx
mov eax, dword [esp + 0xc]
mov ecx, dword [esp + 0x88]
add eax, 0x14
mov edx, dword [esp + 0xc4]
jmp 0x1004cc34
mov ecx, dword [esp + 0xc]
mov edx, ecx
mov eax, dword [ecx + 4]
mov ecx, esi
lea edi, [eax + eax*4]
call fcn.1004ca50
mov esi, eax
mov ecx, edx
mov eax, dword [esp + 0x18]
mov eax, dword [eax + edi*8 + 0xc]
cdq
push edx
push eax
push ecx
push esi
call fcn.1013c210
mov ecx, dword [esp + 0x18]
mov esi, eax
shrd esi, edx, 3
and eax, 7
mov edx, dword [ecx + edi*8 + 8]
movsx ecx, byte [esi + edx]
bts ecx, eax
mov byte [esi + edx], cl
jmp 0x10053466
mov ecx, dword [esp + 0xc]
mov edx, ecx
mov eax, dword [ecx + 4]
mov ecx, esi
lea edi, [eax + eax*4]
mov dword [esp + 0x28], edi
call fcn.1004ca50
mov esi, eax
mov ecx, edx
mov eax, dword [esp + 0x18]
mov eax, dword [eax + edi*8 + 0xc]
cdq
push edx
push eax
push ecx
push esi
call fcn.1013c210
mov ecx, dword [esp + 0x28]
mov edi, eax
mov eax, dword [esp + 0x18]
mov esi, edi
shrd esi, edx, 3
and edi, 7
mov ecx, dword [eax + ecx*8 + 8]
mov eax, 1
movsx edx, byte [esi + ecx]
mov ecx, edi
mov edi, dword [esp + 0x14]
shl eax, cl
test eax, edx
mov eax, dword [esp + 0xc]
jne 0x10053329
inc dword [edi + 0xc4]
jmp 0x10052cda
inc dword [edi + 0xc0]
mov esi, dword [esp + 0x18]
mov ecx, dword [esp + 0x88]
add eax, 0x14
mov edx, dword [esp + 0xc4]
jmp 0x1004cc34
mov edx, dword [esp + 0x10]
mov cl, byte [edx + 0x5e]
test cl, 0x41
je 0x10053408
cmp byte [edi + 0x93], 0xfe
je 0x10053408
mov eax, dword [eax + 0x10]
test eax, eax
jne 0x1005337b
mov eax, dword [edi + 0xc8]
test eax, eax
je 0x10053404
test cl, 0x40
je 0x100533ad
mov edx, eax
mov ecx, edi
call fcn.1004c010
mov esi, eax
mov eax, dword [esp + 0x10]
push esi
push dword [eax + 0xdc]
mov ecx, dword [eax + 0xd8]
call ecx
push esi
call fcn.1001e6f0
mov esi, dword [esp + 0x24]
add esp, 0xc
jmp 0x10053404
cmp dword [edx + 0xc8], 1
push eax
jle 0x100533f0
push str.____s
push edx
call fcn.10021490
add esp, 0xc
mov esi, eax
mov eax, dword [esp + 0x10]
push esi
mov ecx, dword [eax + 0xd8]
push edi
push dword [eax + 0xdc]
push 1
call ecx
push esi
push dword [esp + 0x24]
call fcn.1001e910
mov esi, dword [esp + 0x30]
add esp, 0x18
jmp 0x10053404
mov eax, dword [edx + 0xd8]
push edi
push dword [edx + 0xdc]
push 1
call eax
add esp, 0x10
mov eax, dword [esp + 0xc]
mov eax, dword [eax + 4]
cmp eax, dword [0x10165c04]
jl 0x1005344c
mov eax, dword [esp + 0xc]
cmp byte [eax], 0xb5
je case.0x1004cc65.89
mov edx, 1
cmp dword [edi + 0x6c], edx
jle 0x1005344a
mov eax, 0x14
nop dword [eax + eax]
mov ecx, dword [edi + 0x68]
cmp byte [ecx + eax], 0xf
jne 0x10053441
mov dword [ecx + eax + 4], 0
inc edx
add eax, 0x14
cmp edx, dword [edi + 0x6c]
jl 0x10053430
xor eax, eax
mov ecx, dword [esp + 0xc]
inc eax
mov dword [ecx + 4], eax
inc dword [edi + 0xbc]
jmp 0x10052cd6
mov ecx, esi
call fcn.10042ef0
mov eax, dword [esp + 0xc]
mov edi, dword [esp + 0x14]
mov esi, dword [esp + 0x18]
mov ecx, dword [esp + 0x88]
add eax, 0x14
mov edx, dword [esp + 0xc4]
jmp 0x1004cc34
mov esi, dword [esp + 0xc]
mov ecx, dword [esi + 4]
mov dword [edi + 0x24], ecx
mov al, byte [esi + 8]
mov byte [edi + 0x92], al
test ecx, ecx
je 0x10053538
mov ecx, esi
movzx eax, word [ecx + 2]
test ax, ax
je 0x100534ea
push dword [eax*4 + 0x1014f210]
push str._s_constraint_failed
push edi
call fcn.10043ed0
mov edi, esi
add esp, 0xc
mov eax, dword [edi + 0x10]
test eax, eax
je 0x100534ff
mov esi, dword [esp + 0x14]
push eax
push dword [esi + 0x7c]
push str._z:__s
push dword [esp + 0x1c]
call fcn.10021490
add esp, 0x10
mov dword [esi + 0x7c], eax
jmp 0x100534ff
push dword [ecx + 0x10]
push 0x101587a0
push edi
call fcn.10043ed0
mov edi, dword [esp + 0x18]
add esp, 0xc
mov eax, dword [esp + 0x14]
mov ecx, edi
sub ecx, dword [esp + 0x64]
push dword [eax + 0x7c]
push dword [eax + 0xc8]
mov eax, 0x66666667
imul ecx
sar edx, 3
mov eax, edx
shr eax, 0x1f
add eax, edx
push eax
push str.abort_at__d_in___s_:__s
push dword [edi + 4]
call fcn.10021740
mov edi, dword [esp + 0x28]
add esp, 0x14
mov ecx, edi
call fcn.10046790
mov ecx, dword [esp + 0x10]
mov edi, eax
mov eax, dword [esp + 0x14]
cmp edi, 5
jne 0x10053556
mov dword [eax + 0x24], edi
jmp 0x10053b80
cmp dword [eax + 0x24], 0
mov edi, 0x65
mov eax, 1
cmovne edi, eax
jmp 0x10053b80
mov ecx, 0x16c85
call fcn.100cf630
mov edx, eax
mov dword [esp + 0x1c], edx
mov edi, dword [esp + 0x14]
mov esi, dword [esp + 0x10]
cmp byte [esi + 0x57], 0
je 0x10053aa7
mov edx, 7
jmp 0x10053ad2
mov ecx, dword [esp + 0x38]
mov edx, dword [esp + 0x28]
add ecx, ecx
push dword [edx + ecx*8]
mov ecx, dword [esp + 0x38]
push dword [ecx]
mov ecx, esi
push dword [eax*4 + 0x10166f94]
call fcn.1004cb00
mov edi, dword [esp + 0x20]
push eax
push str.cannot_store__s_value_in__s_column__s._s
push edi
call fcn.10043ed0
mov edx, 0xc13
add esp, 0x18
mov dword [esp + 0x1c], edx
jmp 0x10053580
mov edi, dword [esp + 0x14]
push str.cannot_open_savepoint___SQL_statements_in_progress
push edi
call fcn.10043ed0
mov edx, 5
add esp, 8
mov dword [esp + 0x1c], edx
jmp 0x10053580
mov edi, dword [esp + 0x14]
push str.cannot_release_savepoint___SQL_statements_in_progress
push edi
call fcn.10043ed0
mov edx, 5
add esp, 8
mov dword [esp + 0x1c], edx
jmp 0x10053580
mov esi, dword [esp + 0x10]
mov byte [esi + 0x55], 0
jmp 0x10053584
mov ecx, dword [esp + 0xc]
mov eax, 0x66666667
sub ecx, dword [esp + 0x64]
imul ecx
mov ecx, dword [esp + 0x10]
sar edx, 3
mov eax, edx
shr eax, 0x1f
add eax, edx
mov dword [edi + 0x20], eax
mov edi, 5
mov eax, dword [esp + 0x14]
mov byte [ecx + 0x55], 0
mov dword [eax + 0x24], edi
jmp 0x10053b80
mov edi, 0x65
jmp 0x10053b7c
mov esi, dword [esp + 0x10]
and edx, 0x100000
or edx, 0
je 0x1005367d
mov edx, 8
mov dword [esp + 0x1c], edx
jmp 0x10053584
mov edx, 0xb
mov dword [esp + 0x1c], edx
jmp 0x10053584
cmp dl, 5
jne 0x10053580
mov ecx, dword [esp + 0xc]
mov eax, 0x66666667
sub ecx, dword [esp + 0x64]
imul ecx
sar edx, 3
mov eax, edx
shr eax, 0x1f
add eax, edx
mov dword [edi + 0x20], eax
mov eax, dword [esp + 0x14]
mov edi, dword [esp + 0x1c]
mov dword [eax + 0x24], edi
jmp 0x10053b7c
mov eax, dword [esp + 0x14]
push dword [eax + 0x7c]
push dword [esp + 0x14]
call fcn.1001e910
mov ecx, dword [esp + 0x18]
add esp, 8
mov edx, str.database_schema_has_changed
call fcn.1001ede0
mov ecx, dword [esp + 0x14]
mov dword [ecx + 0x7c], eax
mov eax, dword [esp + 0xc]
mov edx, dword [eax + 4]
mov ecx, edx
mov eax, dword [esp + 0x10]
add ecx, ecx
mov eax, dword [eax + 0x10]
mov eax, dword [eax + ecx*8 + 0xc]
mov eax, dword [eax]
cmp eax, dword [esp + 0x38]
je 0x10053711
mov ecx, dword [esp + 0x10]
call fcn.1006fe40
mov esi, edi
mov eax, dword [esi]
mov edx, 0x11
and eax, 0xfffffffd
or eax, 1
and eax, 0xffffffef
mov dword [esi], eax
jmp 0x10053578
mov edx, 0x204
mov dword [esp + 0x1c], edx
jmp 0x10053584
mov ecx, dword [edi]
call fcn.10036f10
mov edx, dword [esp + 0x1c]
jmp 0x1005357c
mov edi, dword [esp + 0x14]
push str.string_or_blob_too_big
push edi
call fcn.10043ed0
mov edx, 0x12
add esp, 8
mov dword [esp + 0x1c], edx
jmp 0x10053580
push str.index_corruption
mov edx, 0x1797b
mov ecx, 0x30b
call fcn.100cf600
add esp, 4
jmp 0x10053576
push 0x10156e9c
push 0x17a48
push str.database_corruption
push str._s_at_line__d_of___.10s_
push 0xb
call fcn.10021740
add esp, 0x14
mov edx, 0xb
jmp 0x10053578
mov edx, 6
mov byte [edi + 0x92], 2
mov dword [esp + 0x1c], edx
jmp 0x10053580
mov ecx, dword [esp + 0x10]
call fcn.1006feb0
jmp 0x1004ead6
push dword [esp + 0xf0]
call fcn.1001e6f0
mov edx, dword [esp + 0x20]
add esp, 4
jmp 0x1005357c
push str.too_many_levels_of_trigger_recursion
push edi
mov dword [esp + 0x24], 1
call fcn.10043ed0
add esp, 8
mov edx, 1
jmp 0x10053580
push esi
call fcn.100492f0
mov edi, dword [esp + 0x18]
add esp, 4
push eax
push 0x101587a0
push edi
call fcn.10043ed0
mov edx, dword [esp + 0x28]
add esp, 0xc
jmp 0x10053580
mov edi, dword [esp + 0x14]
mov ecx, str.out_of
cmp esi, 5
mov dword [esp + 0x1c], 1
mov eax, str.into
cmovne eax, ecx
push eax
push str.cannot_change__s_wal_mode_from_within_a_transaction
push edi
call fcn.10043ed0
add esp, 0xc
mov edx, 1
jmp 0x10053580
push dword [esp + 0x38]
mov eax, dword [edi + 0x1c]
call eax
add esp, 4
jmp 0x1004ead2
mov edi, dword [esp + 0x14]
mov edx, 6
mov dword [esp + 0x1c], edx
jmp 0x10053580
or ecx, 0xffffffff
mov dword [esp + 0x84], 0xffffffff
mov edx, 9
mov dword [esp + 0x80], ecx
mov dword [esp + 0x1c], edx
jmp 0x10053580
cmp ecx, 5
movzx eax, cl
mov esi, 2
cmove eax, esi
mov byte [edi + 0x92], al
jmp 0x10053580
mov eax, dword [edi + 0x1c]
add eax, 2
or eax, 1
mov dword [edi + 0x1c], eax
mov eax, dword [esp + 0xc]
mov eax, dword [eax + 4]
lea eax, [eax + eax*4]
lea eax, [esi + eax*8]
mov dword [edi + 0x78], eax
mov eax, dword [esp + 0x10]
cmp byte [eax + 0x57], 0
jne 0x1004eada
test byte [eax + 0x5e], 4
je 0x10053904
push 0
push edi
push dword [eax + 0xdc]
mov eax, dword [eax + 0xd8]
push 4
call eax
add esp, 0x10
mov ecx, dword [esp + 0xc]
mov eax, 0x66666667
sub ecx, dword [esp + 0x64]
imul ecx
sar edx, 3
mov eax, edx
shr eax, 0x1f
inc eax
add eax, edx
mov dword [edi + 0x20], eax
mov edi, 0x64
jmp 0x10053b7c
mov edx, dword [esp + 0xc]
mov ecx, dword [edx + 4]
mov esi, dword [edx + 8]
mov edx, dword [esp + 0x10]
mov dword [esp + 0x8c], ecx
movzx eax, byte [edx + 0x55]
cmp ecx, eax
je 0x10053a14
test esi, esi
je 0x10053964
mov esi, dword [esp + 0x10]
mov edx, 0x204
mov ecx, esi
call fcn.100ccb00
mov al, 1
jmp 0x100539a7
test ecx, ecx
je 0x1005397b
cmp dword [edx + 0xc4], 0
jle 0x1005397b
push str.cannot_commit_transaction___SQL_statements_in_progress
jmp 0x100535e0
mov edx, 1
mov ecx, edi
call fcn.10046720
mov edi, eax
test edi, edi
jne 0x10053b7c
mov al, byte [esp + 0x8c]
mov esi, dword [esp + 0x10]
mov edi, dword [esp + 0x14]
mov byte [esp + 0x8c], al
mov ecx, edi
mov byte [esi + 0x55], al
call fcn.10046790
cmp eax, 5
jne 0x100539f3
mov ecx, dword [esp + 0xc]
mov eax, 0x66666667
sub ecx, dword [esp + 0x64]
imul ecx
mov ecx, dword [esp + 0x10]
sar edx, 3
mov eax, edx
shr eax, 0x1f
add eax, edx
mov dword [edi + 0x20], eax
mov al, 1
sub al, byte [esp + 0x8c]
mov edi, 5
mov byte [ecx + 0x55], al
mov eax, dword [esp + 0x14]
mov dword [eax + 0x24], edi
jmp 0x10053b80
mov ecx, esi
call fcn.100cc4b0
mov eax, dword [esp + 0x14]
mov edi, 0x65
cmp dword [eax + 0x24], 0
mov eax, 1
cmovne edi, eax
jmp 0x10053b7c
test ecx, ecx
jne 0x10053a35
mov eax, str.cannot_start_a_transaction_within_a_transaction
push eax
push edi
call fcn.10043ed0
mov edx, 1
add esp, 8
mov dword [esp + 0x1c], edx
jmp 0x10053580
mov ecx, str.cannot_commit___no_transaction_is_active
test esi, esi
mov eax, str.cannot_rollback___no_transaction_is_active
cmove eax, ecx
push eax
push edi
call fcn.10043ed0
mov edx, 1
add esp, 8
mov dword [esp + 0x1c], edx
jmp 0x10053580
mov eax, dword [esp + 0xcc]
mov dword [esp + 0xc4], eax
mov eax, dword [esp + 0xc8]
mov dword [esp + 0x88], eax
mov edx, 9
mov dword [esp + 0x1c], edx
jmp 0x10053580
mov eax, dword [esp + 0xcc]
mov dword [esp + 0xc4], eax
mov eax, dword [esp + 0xc8]
mov dword [esp + 0x88], eax
jmp 0x1004ead6
cmp edx, 0x210a
jne 0x10053ad6
push 0x10156e9c
push 0x182d7
push str.database_corruption
push str._s_at_line__d_of___.10s_
push 0xb
call fcn.10021740
add esp, 0x14
mov edx, 0xb
mov dword [esp + 0x1c], edx
cmp dword [edi + 0x7c], 0
jne 0x10053afa
cmp edx, 0xc0a
je 0x10053afa
mov ecx, edx
call fcn.100ccc40
push eax
push 0x101587a0
push edi
call fcn.10043ed0
add esp, 0xc
mov esi, dword [esp + 0x1c]
mov edx, esi
mov ecx, dword [esp + 0x10]
mov dword [edi + 0x24], esi
call fcn.10022420
mov ecx, dword [esp + 0xc]
mov eax, 0x66666667
sub ecx, dword [esp + 0x64]
push dword [edi + 0x7c]
imul ecx
push dword [edi + 0xc8]
sar edx, 3
mov eax, edx
shr eax, 0x1f
add eax, edx
push eax
push str.statement_aborts_at__d:___s___s
push esi
call fcn.10021740
add esp, 0x14
cmp byte [edi + 0x95], 2
jne 0x10053b4d
mov ecx, edi
call fcn.10046790
cmp esi, 0xc0a
jne 0x10053bfb
mov ecx, dword [esp + 0x10]
call fcn.1001ef20
mov ecx, dword [esp + 0x10]
mov al, byte [esp + 0x7b]
mov edi, 1
test al, al
je 0x10053b80
movzx edx, al
dec edx
call fcn.1006fe40
mov ecx, dword [esp + 0x10]
mov esi, dword [esp + 0x84]
nop word [eax + eax]
cmp dword [esp + 0xc4], esi
jb 0x10053c21
mov edx, dword [esp + 0x80]
ja 0x10053baf
cmp dword [esp + 0x88], edx
jb 0x10053c21
mov eax, dword [ecx + 0x174]
test eax, eax
je 0x10053c21
add edx, dword [ecx + 0x17c]
push dword [ecx + 0x178]
mov dword [esp + 0x84], edx
adc esi, 0
call eax
mov ecx, dword [esp + 0x14]
add esp, 4
test eax, eax
je 0x10053b90
or ecx, 0xffffffff
mov dword [esp + 0x84], 0xffffffff
mov dword [esp + 0x80], ecx
mov edx, 9
jmp 0x10053578
cmp esi, 0xb
jne 0x10053b62
mov ecx, dword [esp + 0x10]
cmp byte [ecx + 0x55], 0
jne 0x10053b66
mov eax, dword [ecx + 0x20]
or dword [ecx + 0x24], 2
mov dword [ecx + 0x20], eax
jmp 0x10053b66
mov eax, dword [esp + 0x14]
mov ecx, dword [esp + 0x88]
add dword [eax + 0xb4], ecx
cmp dword [eax + 0xa0], 0
je 0x10053c42
mov ecx, eax
call fcn.10045260
mov ecx, dword [esp + 0x1ac]
mov eax, edi
pop edi
pop esi
xor ecx, esp
call fcn.10129271
mov esp, ebp
pop ebp
ret