Function at 0x1004ca50
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, 0x1b8
mov eax, dword [section..data]
xor eax, esp
mov dword [esp + 0x1b4], eax
push esi
push edi
mov edi, ecx
mov dword [esp + 0x14], 0
xor cl, cl
mov dword [esp + 0x10], edi
mov byte [esp + 0x6f], cl
xorps xmm0, xmm0
mov dword [esp + 0x64], 0
cmp dword [edi + 0xa0], 0
mov eax, dword [edi + 0x68]
mov esi, dword [edi + 0x58]
mov dword [esp + 0x58], eax
mov dword [esp + 8], eax
mov eax, dword [edi]
mov dword [esp + 0xc], eax
movlpd qword [esp + 0xb8], xmm0
mov dword [esp + 0x18], esi
mov cl, byte [eax + 0x54]
mov byte [esp + 0x4c], cl
je 0x1004cac7
mov ecx, edi
call fcn.10045140
mov eax, dword [esp + 0xc]
cmp dword [eax + 0x174], 0
je 0x1004caf0
mov ecx, dword [eax + 0x17c]
xor edx, edx
mov eax, dword [edi + 0xb4]
div ecx
mov eax, dword [esp + 0xc]
sub ecx, edx
mov dword [esp + 0x78], 0
jmp 0x1004cafb
or ecx, 0xffffffff
mov dword [esp + 0x78], 0xffffffff
cmp dword [edi + 0x24], 7
mov dword [esp + 0x74], ecx
je 0x10053853
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 0x10053830
mov eax, dword [edi + 0x20]
mov ecx, dword [esp + 0x58]
mov edx, dword [esp + 0xbc]
mov dword [esp + 0x118], 0xf244
lea eax, [eax + eax*4]
lea eax, [ecx + eax*4]
mov ecx, dword [esp + 0xb8]
add ecx, 1
mov dword [esp + 8], eax
mov dword [esp + 0x7c], ecx
mov cl, byte [eax]
adc edx, 0
mov dword [esp + 0xb4], edx
movzx edx, cl
mov byte [esp + 0x2b], cl
mov dword [esp + 0x2c], edx
cmp edx, 0xb5
ja case.0x1004cb89.89
jmp dword [edx*4 + 0x1005399c]
mov ecx, dword [esp + 8]
mov edx, 4
mov eax, dword [ecx + 4]
sub ecx, dword [esp + 0x58]
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 0x10052be0
mov eax, dword [eax + 4]
lea eax, [eax + eax*4]
test byte [esi + eax*8 + 0x10], 4
je 0x100518fd
mov eax, dword [esi + eax*8]
mov ecx, dword [esp + 0x58]
lea eax, [eax + eax*4]
lea eax, [ecx + eax*4]
mov ecx, dword [esp + 0x7c]
add eax, 0x14
mov edx, dword [esp + 0xb4]
jmp 0x1004cb5b
mov edx, dword [esp + 8]
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 + 8]
mov dword [esi + ecx*8 + 4], edx
cmp dword [eax + 8], 0
jne 0x10051e98
mov ecx, dword [esp + 0x7c]
add eax, 0x14
mov edx, dword [esp + 0xb4]
jmp 0x1004cb5b
mov ecx, dword [esp + 8]
mov edx, dword [esp + 0x58]
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 + 0x7c]
add eax, 0x14
mov edx, dword [esp + 0xb4]
jmp 0x1004cb5b
mov edx, dword [esp + 8]
mov ecx, 4
mov edi, dword [esp + 0x18]
mov eax, dword [edx + 4]
sub edx, dword [esp + 0x58]
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 + 0x10]
mov dword [eax + esi*8 + 4], edx
lea eax, [ecx + ecx*4]
mov ecx, dword [esp + 0x58]
mov esi, dword [esp + 0x18]
lea eax, [ecx + eax*4]
mov ecx, dword [esp + 0x7c]
add eax, 0x14
mov edx, dword [esp + 0xb4]
jmp 0x1004cb5b
mov eax, dword [eax + 0xc]
lea eax, [eax + eax*4]
test byte [esi + eax*8 + 0x10], 1
mov eax, dword [esp + 8]
je case.0x1004cb89.89
mov esi, dword [edi + 0xd0]
test esi, esi
je 0x10053211
cmp dword [eax + 4], 0
jne 0x10053211
push dword [edi + 0x2c]
mov eax, dword [esi + 4]
push dword [edi + 0x28]
mov ecx, dword [esp + 0x14]
dec dword [edi + 0xd8]
mov dword [edi + 0xd0], eax
call fcn.100488e0
add esp, 8
mov ecx, esi
call fcn.10045ce0
mov ecx, dword [esp + 8]
cmp dword [ecx + 8], 4
jne 0x1004cd48
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 + 0x58], ecx
mov dword [esp + 0x18], esi
lea eax, [ecx + eax*4]
mov ecx, dword [esp + 0x7c]
add eax, 0x14
mov edx, dword [esp + 0xb4]
jmp 0x1004cb5b
mov ecx, dword [esp + 8]
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 0x1004cdb5
call fcn.1004c930
mov ecx, eax
mov eax, dword [esp + 8]
mov eax, dword [eax + 4]
cdq
mov dword [ecx], eax
mov eax, dword [esp + 8]
mov dword [ecx + 4], edx
mov ecx, dword [esp + 0x7c]
add eax, 0x14
mov edx, dword [esp + 0xb4]
jmp 0x1004cb5b
mov eax, 4
mov word [ecx + 0x10], ax
mov eax, dword [esp + 8]
mov eax, dword [eax + 4]
cdq
mov dword [ecx], eax
mov eax, dword [esp + 8]
mov dword [ecx + 4], edx
mov ecx, dword [esp + 0x7c]
add eax, 0x14
mov edx, dword [esp + 0xb4]
jmp 0x1004cb5b
mov ecx, dword [esp + 8]
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 0x1004ce08
mov ecx, edx
call fcn.1004c930
mov edx, eax
jmp 0x1004ce11
mov eax, 4
mov word [edx + 0x10], ax
mov eax, dword [esp + 8]
mov eax, dword [eax + 0x10]
mov ecx, dword [eax]
mov eax, dword [eax + 4]
mov dword [edx + 4], eax
mov eax, dword [esp + 8]
mov dword [edx], ecx
mov ecx, dword [esp + 0x7c]
add eax, 0x14
mov edx, dword [esp + 0xb4]
jmp 0x1004cb5b
mov ecx, dword [esp + 8]
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 0x1004ce5b
call fcn.1004c930
mov ecx, eax
mov eax, 8
mov word [ecx + 0x10], ax
mov eax, dword [esp + 8]
mov eax, dword [eax + 0x10]
movsd xmm0, qword [eax]
mov eax, dword [esp + 8]
movsd qword [ecx], xmm0
mov ecx, dword [esp + 0x7c]
add eax, 0x14
mov edx, dword [esp + 0xb4]
jmp 0x1004cb5b
mov ecx, dword [esp + 8]
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 0x1004ceb0
mov ecx, esi
call fcn.1004c930
mov esi, eax
jmp 0x1004ceb9
mov eax, 4
mov word [esi + 0x10], ax
mov eax, dword [esp + 8]
mov edx, dword [eax + 0x10]
test edx, edx
jne 0x1004cec8
xor ecx, ecx
jmp 0x1004cee3
mov ecx, edx
lea edi, [ecx + 1]
nop dword [eax]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x1004ced0
mov eax, dword [esp + 8]
sub ecx, edi
and ecx, 0x3fffffff
cmp byte [esp + 0x4c], 1
mov dword [eax + 4], ecx
je 0x1004cf60
push 0
push 1
push 0xffffffffffffffff
push 0xffffffffffffffff
mov ecx, esi
call fcn.100430d0
mov edi, eax
add esp, 0x10
mov dword [esp + 0x14], edi
test edi, edi
jne 0x10053536
movzx edx, byte [esp + 0x4c]
mov ecx, esi
call fcn.10042240
test eax, eax
jne 0x1004e93e
mov ecx, dword [esp + 8]
mov dword [esi + 0x18], eax
mov eax, 0x2000
or word [esi + 0x10], ax
cmp byte [ecx + 1], 0xfa
jne 0x1004cf4a
push dword [ecx + 0x10]
push dword [esp + 0x10]
call fcn.1001e930
mov ecx, dword [esp + 0x10]
add esp, 8
mov edx, dword [esp + 8]
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 0x1004cf64
mov edx, dword [esp + 8]
mov eax, dword [esp + 0xc]
cmp ecx, dword [eax + 0x78]
jg 0x10053536
mov edi, dword [esp + 0x10]
mov byte [edx], 0x49
jmp 0x1004cf7e
mov edx, dword [esp + 8]
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 0x1004cfa0
call fcn.1004c930
mov edx, dword [esp + 8]
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 + 0x4c]
mov byte [ecx + 0x12], al
mov eax, dword [esp + 8]
mov eax, dword [eax + 0xc]
test eax, eax
jle 0x1004d431
mov edi, dword [esp + 0x18]
lea esi, [eax + eax*4]
mov eax, dword [esp + 8]
movzx eax, word [eax + 2]
cdq
cmp dword [edi + esi*8], eax
mov edi, dword [esp + 0x10]
jne 0x1004d431
mov eax, dword [esp + 0x18]
cmp dword [eax + esi*8 + 4], edx
jne 0x1004d431
mov eax, 0x2210
mov word [ecx + 0x10], ax
mov eax, dword [esp + 8]
mov esi, dword [esp + 0x18]
mov ecx, dword [esp + 0x7c]
add eax, 0x14
mov edx, dword [esp + 0xb4]
jmp 0x1004cb5b
mov ecx, dword [esp + 8]
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 0x1004d040
mov ecx, edx
call fcn.1004c930
mov edx, eax
jmp 0x1004d049
mov eax, 4
mov word [edx + 0x10], ax
mov eax, dword [esp + 8]
mov esi, dword [esp + 8]
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 + 0x20], eax
mov word [esi], ax
test edi, edi
jle 0x1004d431
mov ecx, 0x9000
nop dword [eax + eax]
test word [esi + 0x28], cx
lea esi, [esi + 0x28]
je 0x1004d0aa
lea ecx, [esi - 0x10]
call fcn.100427d0
mov eax, dword [esp + 0x20]
mov ecx, 0x9000
dec edi
mov word [esi], ax
mov dword [esi - 4], 0
test edi, edi
jg 0x1004d090
jmp 0x1004d431
mov ecx, dword [esp + 8]
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 + 8]
mov ecx, dword [esp + 0x7c]
add eax, 0x14
mov edx, dword [esp + 0xb4]
jmp 0x1004cb5b
mov ecx, dword [esp + 8]
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 0x1004d11b
mov ecx, esi
call fcn.1004c930
mov esi, eax
jmp 0x1004d124
mov eax, 4
mov word [esi + 0x10], ax
mov eax, dword [esp + 8]
mov ecx, dword [eax + 0x10]
mov eax, dword [eax + 4]
test ecx, ecx
jne 0x1004d16c
mov edx, eax
mov ecx, esi
call fcn.10042de0
mov ecx, esi
call fcn.100425e0
test eax, eax
jne 0x1004e942
mov dl, byte [esp + 0x4c]
mov eax, dword [esp + 8]
mov byte [esi + 0x12], dl
mov esi, dword [esp + 0x18]
mov ecx, dword [esp + 0x7c]
add eax, 0x14
mov edx, dword [esp + 0xb4]
jmp 0x1004cb5b
push 0
cdq
push 0
push edx
mov edx, ecx
mov ecx, esi
push eax
call fcn.100430d0
mov dl, byte [esp + 0x5c]
add esp, 0x10
mov eax, dword [esp + 8]
mov byte [esi + 0x12], dl
mov esi, dword [esp + 0x18]
mov ecx, dword [esp + 0x7c]
add eax, 0x14
mov edx, dword [esp + 0xb4]
jmp 0x1004cb5b
mov ecx, dword [esp + 8]
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.10042fc0
test eax, eax
jne 0x10053536
mov eax, dword [esp + 8]
mov eax, dword [eax + 8]
lea eax, [eax + eax*4]
lea esi, [esi + eax*8]
mov eax, 0x9000
test word [esi + 0x10], ax
je 0x1004d1e0
mov ecx, esi
call fcn.10042dc0
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 0x1004d431
mov edx, dword [esp + 8]
mov eax, dword [edx + 4]
mov ecx, dword [edx + 0xc]
mov dword [esp + 0x30], 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]
mov eax, 0x9000
test word [esi + 0x10], ax
jne 0x1004d234
cmp dword [esi + 0x18], 0
je 0x1004d23f
mov ecx, esi
call fcn.10042810
mov ecx, dword [esp + 0x30]
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 0x1004d285
mov ecx, esi
call fcn.10042550
test eax, eax
jne 0x1004e93e
mov ecx, dword [esp + 0x30]
add edi, 0x28
add esi, 0x28
sub ecx, 1
mov dword [esp + 0x30], ecx
jne 0x1004d223
jmp 0x1004d431
mov ecx, dword [esp + 8]
mov eax, dword [ecx + 0xc]
mov dword [esp + 0x30], 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.10043010
mov eax, 0x4000
add esp, 4
test word [esi + 0x10], ax
je 0x1004d2e1
mov ecx, esi
call fcn.10042550
test eax, eax
jne 0x1004e93e
movzx eax, word [esi + 0x10]
test eax, 0x800
je 0x1004d2ff
mov ecx, dword [esp + 8]
test byte [ecx + 2], 2
je 0x1004d2ff
and eax, 0xf7ff
mov word [esi + 0x10], ax
mov ecx, dword [esp + 0x30]
mov eax, ecx
dec ecx
mov dword [esp + 0x30], ecx
test eax, eax
je 0x1004d431
add esi, 0x28
add edi, 0x28
jmp 0x1004d2b6
mov ecx, dword [esp + 8]
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.10043010
mov eax, dword [esp + 0xc]
add esp, 4
mov ecx, dword [esp + 0x7c]
add eax, 0x14
mov edx, dword [esp + 0xb4]
jmp 0x1004cb5b
mov edx, dword [esp + 8]
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 + 0x10]
lea eax, [eax + eax*4]
mov edx, dword [esi + eax*8]
mov eax, dword [esi + eax*8 + 4]
je 0x1004d39f
push eax
push edx
call fcn.10042e30
mov eax, dword [esp + 0x10]
add esp, 8
mov ecx, dword [esp + 0x7c]
add eax, 0x14
mov edx, dword [esp + 0xb4]
jmp 0x1004cb5b
mov dword [ecx + 4], eax
mov eax, 4
mov word [ecx + 0x10], ax
mov eax, dword [esp + 8]
mov dword [ecx], edx
mov ecx, dword [esp + 0x7c]
add eax, 0x14
mov edx, dword [esp + 0xb4]
jmp 0x1004cb5b
xor edx, edx
mov ecx, edi
call fcn.10046650
mov edx, eax
mov dword [esp + 0x14], edx
test edx, edx
jne 0x1004e964
mov eax, dword [esp + 8]
mov ecx, dword [esp + 0x7c]
add eax, 0x14
mov edx, dword [esp + 0xb4]
jmp 0x1004cb5b
mov edx, dword [esp + 8]
mov eax, dword [edx + 4]
lea eax, [eax + eax*4]
lea ecx, [esi + eax*8]
mov eax, dword [edx + 8]
mov dword [esp + 0x2c], ecx
lea eax, [eax + eax*4]
lea esi, [esi + eax*8]
mov eax, dword [edx + 0xc]
mov edx, dword [esp + 0x18]
lea eax, [eax + eax*4]
lea edi, [edx + eax*8]
movzx edx, word [ecx + 0x10]
mov al, byte [esi + 0x10]
or al, dl
mov dword [esp + 0x38], edx
test al, 1
je 0x1004d450
mov ecx, edi
call fcn.10042dc0
mov eax, dword [esp + 8]
mov edi, dword [esp + 0x10]
mov esi, dword [esp + 0x18]
mov ecx, dword [esp + 0x7c]
add eax, 0x14
mov edx, dword [esp + 0xb4]
jmp 0x1004cb5b
test dl, 0x12
jne 0x1004d484
mov dl, byte [esp + 0x4c]
push 0
call fcn.10042640
add esp, 4
test eax, eax
jne 0x1004e93e
mov eax, dword [esp + 0x2c]
mov ecx, 0xfffd
mov ax, word [eax + 0x10]
and ax, cx
movzx ecx, ax
mov dword [esp + 0x38], ecx
jmp 0x1004d4b0
test edx, 0x400
je 0x1004d4b0
call fcn.100425e0
test eax, eax
jne 0x1004e93e
mov eax, dword [esp + 0x2c]
mov ecx, 0xfffd
mov ax, word [eax + 0x10]
and ax, cx
movzx eax, ax
mov dword [esp + 0x38], eax
movzx eax, word [esi + 0x10]
mov dword [esp + 0x30], eax
test al, 0x12
jne 0x1004d4ce
mov dl, byte [esp + 0x4c]
mov ecx, esi
push 0
call fcn.10042640
add esp, 4
jmp 0x1004d4dc
test eax, 0x400
je 0x1004d4f7
mov ecx, esi
call fcn.100425e0
test eax, eax
jne 0x1004e93e
mov ax, word [esi + 0x10]
mov ecx, 0xfffd
and ax, cx
movzx eax, ax
mov dword [esp + 0x30], eax
mov eax, dword [esp + 0x2c]
mov eax, dword [eax + 0xc]
add eax, dword [esi + 0xc]
mov dword [esp + 0x20], eax
cdq
mov ecx, eax
mov dword [esp + 0x5c], edx
mov eax, dword [esp + 0xc]
mov dword [esp + 0x60], ecx
mov eax, dword [eax + 0x78]
cdq
cmp dword [esp + 0x5c], edx
jg 0x10053536
jl 0x1004d52c
cmp ecx, eax
ja 0x10053536
mov edx, dword [esp + 0x20]
xor eax, eax
cmp edi, esi
mov ecx, edi
sete al
add edx, 2
push eax
call fcn.10042260
add esp, 4
test eax, eax
jne 0x1004e93e
mov ax, word [edi + 0x10]
mov ecx, 0xf242
and ax, cx
or ax, 2
mov word [edi + 0x10], ax
cmp edi, esi
je 0x1004d57e
push dword [esi + 0xc]
push dword [esi + 8]
push dword [edi + 8]
call fcn.1012b000
mov eax, dword [esp + 0x3c]
add esp, 0xc
mov word [esi + 0x10], ax
mov eax, dword [esp + 0x2c]
push dword [eax + 0xc]
push dword [eax + 8]
mov eax, dword [esi + 0xc]
add eax, dword [edi + 8]
push eax
call fcn.1012b000
mov eax, dword [esp + 0x38]
add esp, 0xc
mov ecx, dword [esp + 0x38]
mov dl, byte [esp + 0x4c]
mov word [eax + 0x10], cx
mov ecx, dword [esp + 0x60]
cmp dl, 1
jbe 0x1004d5bb
mov eax, dword [esp + 0x5c]
and ecx, 0xfffffffe
mov dword [esp + 0x24], eax
mov eax, dword [edi + 8]
mov byte [ecx + eax], 0
mov eax, dword [edi + 8]
mov byte [eax + ecx + 1], 0
mov eax, 0x200
or word [edi + 0x10], ax
mov dword [edi + 0xc], ecx
mov byte [edi + 0x12], dl
jmp 0x1004d431
mov ecx, dword [esp + 8]
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 + 0x2c], 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 + 8]
mov dword [esp + 0x1c], esi
mov eax, dword [eax + 0xc]
lea eax, [eax + eax*4]
lea eax, [edi + eax*8]
mov edi, dword [esp + 0x2c]
mov dword [esp + 0x30], eax
mov al, cl
and al, dl
test al, 4
jne 0x1004d673
or cl, dl
test cl, 1
jne 0x1004d884
and edx, 0x2d
je 0x1004d645
mov ecx, edx
mov dword [esp + 0x38], ecx
jmp 0x1004d653
mov ecx, edi
call fcn.1004c830
movzx eax, ax
mov dword [esp + 0x38], eax
mov ax, word [esi + 0x10]
and ax, 0x2d
jne 0x1004d664
mov ecx, esi
call fcn.1004c830
movzx eax, ax
and al, byte [esp + 0x38]
test al, 4
je 0x1004d726
mov eax, dword [esp + 8]
mov ecx, dword [edi]
mov edx, dword [edi + 4]
mov edi, dword [esi]
movzx eax, byte [eax]
mov esi, dword [esi + 4]
add eax, 0xffffff96
mov dword [esp + 0xc0], edi
mov dword [esp + 0xc4], esi
cmp eax, 3
ja case.default.0x1004d69e
jmp dword [eax*4 + 0x10053c74]
push edx
push ecx
lea ecx, [esp + 0xc8]
call fcn.10023800
add esp, 8
test eax, eax
jne 0x1004d71e
jmp 0x1004d851
push edx
push ecx
lea ecx, [esp + 0xc8]
call fcn.100238a0
add esp, 8
test eax, eax
jne 0x1004d71e
jmp 0x1004d851
push edx
push ecx
lea ecx, [esp + 0xc8]
call fcn.100238f0
add esp, 8
test eax, eax
jne 0x1004d71e
jmp 0x1004d851
mov eax, ecx
or eax, edx
je 0x1004d884
mov eax, ecx
and eax, edx
cmp eax, 0xffffffff
jne 0x1004d819
test edi, edi
jne 0x1004d819
cmp esi, 0x80000000
jne 0x1004d819
mov edi, dword [esp + 0x2c]
mov esi, dword [esp + 0x1c]
mov ecx, edi
call fcn.10042970
mov ecx, esi
movsd qword [esp + 0x20], xmm0
call fcn.10042970
mov eax, dword [esp + 8]
movzx eax, byte [eax]
add eax, 0xffffff96
cmp eax, 3
ja case.default.0x1004d749
jmp dword [eax*4 + 0x10053c84]
addsd xmm0, qword [esp + 0x20]
jmp 0x1004d7dc
subsd xmm0, qword [esp + 0x20]
jmp 0x1004d7dc
mulsd xmm0, qword [esp + 0x20]
jmp 0x1004d7dc
movsd xmm1, qword [esp + 0x20]
ucomisd xmm1, qword [0x1015fef8]
lahf
test ah, 0x44
jnp 0x1004d884
divsd xmm0, xmm1
jmp 0x1004d7dc
mov ecx, edi
call fcn.100428e0
mov ecx, dword [esp + 0x1c]
mov esi, eax
mov edi, edx
call fcn.100428e0
mov ecx, esi
mov dword [esp + 0x20], eax
or ecx, edi
mov dword [esp + 0xc0], eax
mov dword [esp + 0xc4], edx
je 0x1004d884
mov eax, esi
and eax, edi
cmp eax, 0xffffffff
jne 0x1004d7c9
mov esi, 1
xor edi, edi
push edi
push esi
push edx
push dword [esp + 0x2c]
call fcn.1013b0f0
mov ecx, eax
call fcn.1013b590
movsd qword [esp + 0x20], xmm0
call fcn.10022310
test eax, eax
jne 0x1004d884
mov edx, dword [esp + 0x30]
mov ecx, 0xf248
movsd xmm0, qword [esp + 0x20]
mov ax, word [edx + 0x10]
and ax, cx
movsd qword [edx], xmm0
or ax, 8
movzx eax, ax
mov word [edx + 0x10], ax
jmp 0x1004d431
push edx
push ecx
push esi
push edi
call fcn.1013b040
jmp 0x1004d843
mov eax, ecx
or eax, edx
je 0x1004d884
mov eax, ecx
and eax, edx
cmp eax, 0xffffffff
jne 0x1004d83a
mov ecx, 1
xor edx, edx
push edx
push ecx
push esi
push edi
call fcn.1013b0f0
mov dword [esp + 0xc4], edx
mov dword [esp + 0xc0], eax
mov edx, dword [esp + 0x30]
mov eax, dword [esp + 0xc0]
mov ecx, dword [esp + 0xc4]
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 0x1004d431
mov eax, dword [esp + 0x30]
mov ecx, 0x9000
test word [eax + 0x10], cx
je 0x1004d89f
mov ecx, eax
call fcn.100427d0
jmp 0x1004d431
mov ecx, 1
mov word [eax + 0x10], cx
jmp 0x1004d431
mov eax, dword [eax + 4]
test eax, eax
je 0x100518fd
push 0
push 0
lea eax, [eax + eax*4]
lea ecx, [esi + eax*8]
call fcn.10042e60
add esp, 8
mov eax, dword [esp + 8]
mov ecx, dword [esp + 0x7c]
add eax, 0x14
mov edx, dword [esp + 0xb4]
jmp 0x1004cb5b
mov edx, dword [esp + 8]
mov eax, dword [edx + 4]
lea eax, [eax + eax*4]
lea ecx, [esi + eax*8]
mov eax, dword [edx + 8]
mov dword [esp + 0x20], ecx
lea eax, [eax + eax*4]
lea edx, [esi + eax*8]
mov eax, dword [esp + 8]
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 + 0x50], esi
test al, 1
je 0x1004d967
mov eax, 0x9000
test word [esi + 0x10], ax
je 0x1004d943
mov ecx, esi
call fcn.100427d0
mov eax, dword [esp + 8]
mov esi, dword [esp + 0x18]
mov ecx, dword [esp + 0x7c]
add eax, 0x14
mov edx, dword [esp + 0xb4]
jmp 0x1004cb5b
mov eax, 1
mov word [esi + 0x10], ax
mov eax, dword [esp + 8]
mov esi, dword [esp + 0x18]
mov ecx, dword [esp + 0x7c]
add eax, 0x14
mov edx, dword [esp + 0xb4]
jmp 0x1004cb5b
mov ecx, edx
call fcn.100428e0
mov ecx, dword [esp + 0x20]
mov edi, eax
mov esi, edx
mov dword [esp + 0x120], edi
mov dword [esp + 0x124], esi
call fcn.100428e0
mov ecx, eax
mov eax, dword [esp + 8]
mov dword [esp + 0x30], ecx
mov al, byte [eax]
mov byte [esp + 0x2b], al
cmp al, 0x66
jne 0x1004d9a3
and edi, ecx
and esi, edx
jmp 0x1004da11
cmp al, 0x67
jne 0x1004d9ad
or edi, ecx
or esi, edx
jmp 0x1004da11
mov eax, ecx
or eax, edx
je 0x1004da11
test edx, edx
jg 0x1004d9dc
jl 0x1004d9bd
test ecx, ecx
jae 0x1004d9dc
mov al, 0xd1
sub al, byte [esp + 0x2b]
cmp edx, 0xffffffff
jl 0x1004d9eb
jg 0x1004d9cf
cmp ecx, 0xffffffc0
jbe 0x1004d9eb
neg ecx
mov dword [esp + 0x30], ecx
adc edx, 0
neg edx
jmp 0x1004d9e0
mov al, byte [esp + 0x2b]
test edx, edx
jl 0x1004da33
jg 0x1004d9eb
cmp ecx, 0x40
jb 0x1004da33
test esi, esi
jg 0x1004da00
jl 0x1004d9f5
test edi, edi
jae 0x1004da00
cmp al, 0x68
je 0x1004da00
or edi, 0xffffffff
or esi, edi
jmp 0x1004da11
xorps xmm0, xmm0
movlpd qword [esp + 0x20], xmm0
mov esi, dword [esp + 0x24]
mov edi, dword [esp + 0x20]
mov ecx, dword [esp + 0x50]
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 0x1004d431
movq xmm1, qword [esp + 0x120]
movd xmm0, ecx
cmp al, 0x68
jne 0x1004da50
psllq xmm1, xmm0
movq qword [esp + 0x20], xmm1
jmp 0x1004da09
psrlq xmm1, xmm0
movq qword [esp + 0x20], xmm1
test esi, esi
jg 0x1004da09
jl 0x1004da64
test edi, edi
jae 0x1004da09
mov ecx, 0x40
or eax, 0xffffffff
sub ecx, dword [esp + 0x30]
or edx, 0xffffffff
call fcn.1013b2e0
mov edi, dword [esp + 0x20]
mov esi, dword [esp + 0x24]
or edi, eax
or esi, edx
jmp 0x1004da11
mov ecx, dword [esp + 8]
mov eax, dword [ecx + 4]
lea eax, [eax + eax*4]
lea ecx, [esi + eax*8]
mov dword [esp + 0x30], ecx
call fcn.100428e0
mov esi, eax
mov edi, edx
mov eax, dword [esp + 0x30]
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 + 8]
mov ecx, dword [esp + 0x30]
mov eax, dword [eax + 8]
cdq
add eax, esi
mov dword [ecx], eax
adc edx, edi
mov dword [ecx + 4], edx
jmp 0x1004d431
mov ecx, dword [esp + 8]
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 0x1004db20
push dword [esp + 0x4c]
mov dl, 0x43
mov ecx, esi
call fcn.1004c6b0
movzx eax, word [esi + 0x10]
add esp, 4
mov ecx, eax
test al, 4
jne 0x1004db20
mov eax, dword [esp + 8]
cmp dword [eax + 8], 0
jne 0x10052a3f
mov edx, 0x14
jmp 0x1004e960
mov eax, dword [esp + 8]
and ecx, 0xf244
or ecx, 4
mov word [esi + 0x10], cx
mov esi, dword [esp + 0x18]
mov ecx, dword [esp + 0x7c]
add eax, 0x14
mov edx, dword [esp + 0xb4]
jmp 0x1004cb5b
mov ecx, dword [esp + 8]
mov eax, dword [ecx + 4]
lea eax, [eax + eax*4]
test byte [esi + eax*8 + 0x10], 0x24
lea ecx, [esi + eax*8]
je 0x100518fd
call fcn.10042a60
mov eax, dword [esp + 8]
mov ecx, dword [esp + 0x7c]
add eax, 0x14
mov edx, dword [esp + 0xb4]
jmp 0x1004cb5b
mov ecx, dword [esp + 8]
mov eax, dword [ecx + 4]
lea eax, [eax + eax*4]
lea esi, [esi + eax*8]
mov eax, 0x400
test word [esi + 0x10], ax
je 0x1004dba9
mov ecx, esi
call fcn.100425e0
mov edx, eax
mov dword [esp + 0x14], edx
test edx, edx
jne 0x1004e964
mov eax, dword [esp + 8]
mov ecx, esi
push dword [esp + 0x4c]
mov dl, byte [eax + 8]
call fcn.10042bf0
add esp, 4
mov edx, eax
mov dword [esp + 0x14], edx
test edx, edx
jne 0x1004e964
mov eax, dword [esp + 8]
mov esi, dword [esp + 0x18]
mov ecx, dword [esp + 0x7c]
add eax, 0x14
mov edx, dword [esp + 0xb4]
jmp 0x1004cb5b
mov ecx, dword [esp + 8]
mov eax, dword [ecx + 4]
lea eax, [eax + eax*4]
lea edi, [esi + eax*8]
mov eax, dword [ecx + 0xc]
mov dword [esp + 0x50], 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 + 0x2c], ecx
and dword [esp + 0x2c], eax
test byte [esp + 0x2c], 4
mov dword [esp + 0x44], eax
mov dword [esp + 0x1c], ecx
je 0x1004dce7
mov eax, dword [esi + 4]
mov ecx, dword [esi]
mov esi, dword [edi + 4]
mov dword [esp + 0x20], eax
mov eax, dword [edi]
mov edi, dword [esp + 0x20]
cmp edi, esi
jl 0x1004dc7f
jg 0x1004dc41
cmp ecx, eax
jbe 0x1004dc75
cmp byte [edx + 0x10150b48], 0
mov eax, dword [esp + 8]
mov edi, dword [esp + 0x10]
jne 0x10052a3f
mov esi, dword [esp + 0x18]
mov dword [esp + 0x64], 1
mov ecx, dword [esp + 0x7c]
add eax, 0x14
mov edx, dword [esp + 0xb4]
jmp 0x1004cb5b
cmp edi, esi
jg 0x1004dcb3
jl 0x1004dc7f
cmp ecx, eax
jae 0x1004dcb3
cmp byte [edx + 0x10150b3c], 0
mov eax, dword [esp + 8]
mov edi, dword [esp + 0x10]
jne 0x10052a3f
mov esi, dword [esp + 0x18]
mov dword [esp + 0x64], 0xffffffff
mov ecx, dword [esp + 0x7c]
add eax, 0x14
mov edx, dword [esp + 0xb4]
jmp 0x1004cb5b
cmp byte [edx + 0x10150b42], 0
mov eax, dword [esp + 8]
mov edi, dword [esp + 0x10]
jne 0x10052a3f
mov esi, dword [esp + 0x18]
mov dword [esp + 0x64], 0
mov ecx, dword [esp + 0x7c]
add eax, 0x14
mov edx, dword [esp + 0xb4]
jmp 0x1004cb5b
mov edx, ecx
or edx, eax
mov dword [esp + 0x20], edx
test dl, 1
je 0x1004dd6f
mov eax, dword [esp + 8]
movzx eax, word [eax + 2]
test al, al
jns 0x1004dd40
test byte [esp + 0x2c], 1
je 0x1004dd2d
test ecx, 0x100
jne 0x1004dd2d
mov eax, dword [esp + 8]
mov edx, dword [esp + 0x44]
mov dword [esp + 0x64], 0
movzx eax, byte [eax]
mov al, byte [eax + 0x10150b42]
jmp 0x1004dec0
mov eax, ecx
not eax
and eax, 1
lea eax, [eax*2 - 1]
jmp 0x1004de5f
mov edi, dword [esp + 0x10]
test al, 0x10
mov eax, dword [esp + 8]
jne 0x10052a3f
mov esi, dword [esp + 0x18]
mov dword [esp + 0x64], 1
mov ecx, dword [esp + 0x7c]
add eax, 0x14
mov edx, dword [esp + 0xb4]
jmp 0x1004cb5b
mov edx, dword [esp + 8]
mov dl, byte [edx + 2]
and dl, 0x47
mov byte [esp + 0x2b], dl
cmp dl, 0x43
mov edx, dword [esp + 0x20]
jb 0x1004ddc0
test dl, 2
je 0x1004de48
and al, 0x2e
cmp al, 2
jne 0x1004dda6
xor edx, edx
mov ecx, edi
call fcn.1004c4d0
movzx ecx, word [esi + 0x10]
mov dword [esp + 0x1c], ecx
and cl, 0x2e
cmp cl, 2
jne 0x1004de48
xor edx, edx
mov ecx, esi
call fcn.1004c4d0
jmp 0x1004de48
cmp byte [esp + 0x2b], 0x42
jne 0x1004de48
test dl, 2
je 0x1004de48
test al, 2
jne 0x1004de15
test al, 0x2c
je 0x1004de15
mov dl, byte [esp + 0x4c]
mov ecx, edi
push 1
call fcn.10042640
movzx eax, word [edi + 0x10]
add esp, 4
mov ecx, eax
xor ecx, dword [esp + 0x44]
and ecx, 0xdbf
xor ecx, eax
movzx eax, cx
mov dword [esp + 0x44], eax
cmp edi, esi
jne 0x1004de11
or eax, 2
movzx ecx, ax
mov dword [esp + 0x1c], ecx
jmp 0x1004de15
mov ecx, dword [esp + 0x1c]
test cl, 2
jne 0x1004de48
test cl, 0x2c
je 0x1004de48
mov dl, byte [esp + 0x4c]
mov ecx, esi
push 1
call fcn.10042640
movzx eax, word [esi + 0x10]
add esp, 4
mov ecx, eax
xor ecx, dword [esp + 0x1c]
and ecx, 0xdbf
xor ecx, eax
movzx edx, cx
mov dword [esp + 0x1c], edx
mov eax, dword [esp + 8]
mov edx, edi
mov ecx, esi
push dword [eax + 0x10]
call fcn.10047680
mov ecx, dword [esp + 0x20]
add esp, 4
mov edx, dword [esp + 0x44]
mov edi, eax
mov dword [esp + 0x64], eax
movzx eax, cx
mov dword [esp + 0x38], eax
movzx eax, dx
mov dword [esp + 0x30], eax
mov eax, dword [esp + 8]
movzx eax, byte [eax]
test edi, edi
jge 0x1004de8a
mov al, byte [eax + 0x10150b3c]
jmp 0x1004dec0
mov ecx, dword [esp + 0x30]
movzx edx, cx
mov ecx, dword [esp + 0x38]
movzx ecx, cx
mov dword [esp + 0x64], edi
test edi, edi
jne 0x1004dea8
mov al, byte [eax + 0x10150b42]
jmp 0x1004dec0
mov ecx, dword [esp + 0x30]
mov al, byte [eax + 0x10150b48]
movzx edx, cx
mov ecx, dword [esp + 0x38]
movzx ecx, cx
mov dword [esp + 0x64], edi
mov word [esi + 0x10], cx
test al, al
mov ecx, dword [esp + 0x50]
mov eax, dword [esp + 8]
mov word [ecx + 0x10], dx
jne 0x10051e98
mov edi, dword [esp + 0x10]
mov esi, dword [esp + 0x18]
mov ecx, dword [esp + 0x7c]
add eax, 0x14
mov edx, dword [esp + 0xb4]
jmp 0x1004cb5b
cmp dword [esp + 0x64], 0
je 0x10052a3f
mov ecx, dword [esp + 0x7c]
add eax, 0x14
mov edx, dword [esp + 0xb4]
jmp 0x1004cb5b
mov edx, dword [esp + 8]
test byte [edx + 2], 1
jne 0x1004df1f
xor eax, eax
jmp 0x1004df25
mov eax, dword [edx - 4]
add eax, 4
mov esi, dword [esp + 8]
mov edi, dword [esp + 8]
mov ecx, dword [edx + 0xc]
mov edx, dword [edx + 0x10]
mov esi, dword [esi + 4]
mov dword [esp + 0x50], esi
mov esi, dword [edi + 8]
mov dword [esp + 0x20], esi
xor esi, esi
mov dword [esp + 0x30], eax
mov dword [esp + 0x5c], ecx
mov dword [esp + 0x38], edx
test ecx, ecx
jle 0x1004d431
lea edi, [edx + 0x14]
nop word [eax + eax]
test eax, eax
je 0x1004df69
mov ecx, dword [eax + esi*4]
jmp 0x1004df6b
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 + 0x20], eax
mov eax, dword [esp + 0x24]
add eax, ecx
lea eax, [eax + eax*4]
lea edx, [edx + eax*8]
mov eax, dword [esp + 0x54]
add eax, ecx
mov dword [esp + 0x30], edx
mov ecx, dword [esp + 0x1c]
lea eax, [eax + eax*4]
lea eax, [ecx + eax*8]
mov ecx, eax
mov dword [esp + 0x64], eax
call fcn.10047680
mov edx, eax
add esp, 4
mov dword [esp + 0x64], edx
test edx, edx
jne 0x1004dfce
mov eax, dword [esp + 0x30]
inc esi
mov edx, dword [esp + 0x38]
add edi, 4
cmp esi, dword [esp + 0x5c]
jl 0x1004df60
jmp 0x1004d431
mov eax, dword [esp + 0x38]
mov eax, dword [eax + 0x10]
test byte [esi + eax], 2
je 0x1004dff5
mov eax, dword [esp + 0x60]
test byte [eax + 0x10], 1
jne 0x1004dfef
mov eax, dword [esp + 0x2c]
test byte [eax + 0x10], 1
je 0x1004dff5
neg edx
mov dword [esp + 0x64], edx
cmp dword [esp + 0x1c], 0
mov eax, dword [esp + 8]
je 0x1004d435
mov edi, dword [esp + 0x10]
neg edx
mov esi, dword [esp + 0x18]
mov dword [esp + 0x64], edx
mov ecx, dword [esp + 0x7c]
add eax, 0x14
mov edx, dword [esp + 0xb4]
jmp 0x1004cb5b
mov edx, dword [esp + 0x64]
mov ecx, dword [esp + 8]
test edx, edx
jns 0x1004e054
mov eax, dword [ecx + 4]
mov ecx, dword [esp + 0x58]
lea eax, [eax + eax*4]
lea eax, [ecx + eax*4]
add eax, 0xffffffec
mov ecx, dword [esp + 0x7c]
add eax, 0x14
mov edx, dword [esp + 0xb4]
jmp 0x1004cb5b
jne 0x1004e079
mov eax, dword [ecx + 8]
mov ecx, dword [esp + 0x58]
lea eax, [eax + eax*4]
lea eax, [ecx + eax*4]
add eax, 0xffffffec
mov ecx, dword [esp + 0x7c]
add eax, 0x14
mov edx, dword [esp + 0xb4]
jmp 0x1004cb5b
mov eax, dword [ecx + 0xc]
mov ecx, dword [esp + 0x58]
lea eax, [eax + eax*4]
lea eax, [ecx + eax*4]
add eax, 0xffffffec
mov ecx, dword [esp + 0x7c]
add eax, 0x14
mov edx, dword [esp + 0xb4]
jmp 0x1004cb5b
mov ecx, dword [esp + 8]
mov edi, 2
mov edx, edi
mov eax, dword [ecx + 4]
lea eax, [eax + eax*4]
lea ecx, [esi + eax*8]
call fcn.100429a0
mov esi, eax
mov edx, edi
mov eax, dword [esp + 8]
mov ecx, dword [eax + 8]
mov eax, dword [esp + 0x18]
lea ecx, [ecx + ecx*4]
lea ecx, [eax + ecx*8]
call fcn.100429a0
lea edx, [eax + esi*2]
mov eax, dword [esp + 8]
cmp byte [eax], 0x2c
jne 0x1004e0e4
mov dl, byte [esi + edx + 0x10154738]
jmp 0x1004e0eb
mov dl, byte [esi + edx + 0x101555a4]
mov eax, dword [eax + 0xc]
mov esi, dword [esp + 0x18]
add esi, 0x10
lea edi, [eax + eax*4]
movzx ecx, word [esi + edi*8]
lea esi, [esi + edi*8]
mov dword [esp + 0x20], esi
cmp dl, 2
jne 0x1004e119
and ecx, 0xf241
or ecx, 1
mov word [esi], cx
jmp 0x1004d431
mov esi, dword [esp + 0x18]
and ecx, 0xf244
movzx eax, dl
or ecx, 4
cdq
mov dword [esi + edi*8], eax
mov eax, esi
mov esi, dword [esp + 0x20]
mov dword [eax + edi*8 + 4], edx
mov word [esi], cx
jmp 0x1004d431
mov edx, dword [esp + 8]
mov eax, dword [edx + 4]
mov edx, dword [edx + 0xc]
lea eax, [eax + eax*4]
lea ecx, [esi + eax*8]
call fcn.100429a0
mov ecx, dword [esp + 8]
xor eax, dword [ecx + 0x10]
cdq
push edx
push eax
mov eax, dword [ecx + 8]
jmp 0x1004d8bc
mov edx, dword [esp + 8]
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 0x1004e1b7
xor edx, edx
call fcn.100429a0
neg eax
mov ecx, esi
push 0
sbb eax, eax
inc eax
push eax
call fcn.10042e60
mov eax, dword [esp + 0x10]
add esp, 8
mov esi, dword [esp + 0x18]
mov ecx, dword [esp + 0x7c]
add eax, 0x14
mov edx, dword [esp + 0xb4]
jmp 0x1004cb5b
mov ecx, esi
call fcn.10042dc0
mov eax, dword [esp + 8]
mov esi, dword [esp + 0x18]
mov ecx, dword [esp + 0x7c]
add eax, 0x14
mov edx, dword [esp + 0xb4]
jmp 0x1004cb5b
mov ecx, dword [esp + 8]
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.10042dc0
test byte [edi + 0x10], 1
jne 0x1004d431
mov eax, 4
mov ecx, edi
mov word [esi + 0x10], ax
call fcn.100428e0
not eax
not edx
mov dword [esi], eax
mov dword [esi + 4], edx
jmp 0x1004d431
mov edi, dword [edi + 0xd0]
mov eax, dword [esp + 0x10]
test edi, edi
je 0x1004e272
mov ecx, dword [esp + 8]
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 0x10052a37
bts edx, ecx
mov byte [esi + edi], dl
mov edi, dword [esp + 8]
mov esi, dword [esp + 0x18]
jmp 0x1004e285
mov eax, dword [eax + 0x68]
mov edi, dword [esp + 8]
mov eax, dword [eax + 4]
cmp eax, dword [edi + 4]
je 0x10051e94
mov eax, dword [esp + 0x10]
mov eax, dword [eax + 0x68]
mov eax, dword [eax + 4]
mov dword [edi + 4], eax
mov eax, dword [esp + 8]
mov edi, dword [esp + 0x10]
mov ecx, dword [esp + 0x7c]
add eax, 0x14
mov edx, dword [esp + 0xb4]
jmp 0x1004cb5b
mov edx, dword [esp + 8]
mov eax, dword [edx + 4]
mov edx, dword [edx + 0xc]
lea eax, [eax + eax*4]
lea ecx, [esi + eax*8]
call fcn.100429a0
test eax, eax
mov eax, dword [esp + 8]
jne 0x10051e98
mov ecx, dword [esp + 0x7c]
add eax, 0x14
mov edx, dword [esp + 0xb4]
jmp 0x1004cb5b
mov ecx, dword [esp + 8]
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.100429a0
test eax, eax
mov eax, dword [esp + 8]
je 0x10051e98
mov ecx, dword [esp + 0x7c]
add eax, 0x14
mov edx, dword [esp + 0xb4]
jmp 0x1004cb5b
mov eax, dword [eax + 4]
lea eax, [eax + eax*4]
test byte [esi + eax*8 + 0x10], 1
mov eax, dword [esp + 8]
jne 0x10052a3f
mov ecx, dword [esp + 0x7c]
add eax, 0x14
mov edx, dword [esp + 0xb4]
jmp 0x1004cb5b
mov edx, dword [esp + 8]
mov ecx, dword [edx + 4]
test ecx, ecx
js 0x1004e39b
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 0x1004e386
mov eax, dword [ecx + edx*4 + 0x58]
cmp eax, 0xc
jb 0x1004e37d
test al, 1
mov eax, 0
sete al
lea eax, [eax*4 + 4]
movzx eax, ax
jmp 0x1004e3bb
movzx eax, byte [eax + 0x10150434]
jmp 0x1004e3bb
mov eax, dword [esp + 8]
mov ecx, dword [eax + 0x10]
mov eax, 1
dec ecx
shl ax, cl
movzx eax, ax
jmp 0x1004e3bb
mov eax, dword [edx + 0xc]
lea eax, [eax + eax*4]
lea eax, [esi + eax*8]
push eax
call fcn.100492c0
mov edx, 1
add esp, 4
lea ecx, [eax - 1]
shl dx, cl
movzx eax, dx
mov edi, dword [esp + 8]
test word [edi + 2], ax
mov eax, edi
mov edi, dword [esp + 0x10]
jne 0x10052a3f
mov ecx, dword [esp + 0x7c]
add eax, 0x14
mov edx, dword [esp + 0xb4]
jmp 0x1004cb5b
mov ecx, dword [esp + 8]
mov eax, dword [ecx + 4]
lea eax, [eax + eax*4]
test byte [esi + eax*8 + 0x10], 1
jne 0x1004e408
mov eax, dword [ecx + 0xc]
lea eax, [eax + eax*4]
test byte [esi + eax*8 + 0x10], 1
jne 0x1004e408
mov eax, dword [ecx + 8]
jmp 0x1004d8b8
mov eax, dword [ecx + 8]
lea eax, [eax + eax*4]
lea ecx, [esi + eax*8]
call fcn.10042dc0
mov eax, dword [esp + 8]
mov ecx, dword [esp + 0x7c]
add eax, 0x14
mov edx, dword [esp + 0xb4]
jmp 0x1004cb5b
mov eax, dword [eax + 4]
lea eax, [eax + eax*4]
test byte [esi + eax*8 + 0x10], 1
mov eax, dword [esp + 8]
je 0x10052a3f
mov ecx, dword [esp + 0x7c]
add eax, 0x14
mov edx, dword [esp + 0xb4]
jmp 0x1004cb5b
mov ecx, dword [esp + 8]
mov eax, dword [edi + 0x60]
mov ecx, dword [ecx + 4]
mov eax, dword [eax + ecx*4]
test eax, eax
je 0x100518fd
cmp byte [eax + 2], 0
mov eax, dword [esp + 8]
je case.0x1004cb89.89
mov eax, dword [eax + 0xc]
lea eax, [eax + eax*4]
lea ecx, [esi + eax*8]
call fcn.10042dc0
jmp 0x10052a3b
mov edx, dword [esp + 8]
mov eax, dword [edi + 0x60]
mov ecx, dword [edx + 4]
mov esi, dword [eax + ecx*4]
mov ecx, dword [edx + 8]
mov dword [esp + 0x1c], ecx
nop
mov eax, dword [esi + 0x20]
mov edx, dword [esi + 0x48]
mov dword [esp + 0x44], edx
cmp eax, dword [edi + 0x1c]
je 0x1004e501
cmp byte [esi + 2], 0
jne 0x1004e560
cmp byte [esi + 3], 0
mov edi, dword [esi + 0x2c]
je 0x1004e4dd
mov eax, dword [esi + 0x10]
test eax, eax
je 0x1004e52b
mov eax, dword [eax + ecx*4 + 4]
test eax, eax
je 0x1004e52b
mov esi, dword [esi + 0x28]
lea ecx, [eax - 1]
mov edi, dword [esp + 0x10]
jmp 0x1004e49b
cmp byte [edi], 0
je 0x1004e540
mov ecx, esi
call fcn.10046e10
mov edi, dword [esp + 0x10]
mov edx, eax
mov dword [esp + 0x14], edx
test edx, edx
jne 0x100533b2
mov ecx, dword [esp + 0x1c]
jmp 0x1004e4a0
mov eax, dword [esi + 0x2c]
cmp byte [eax], 0
je 0x1004e6ae
mov ecx, esi
call fcn.10046e10
mov edx, eax
mov dword [esp + 0x14], edx
test edx, edx
jne 0x1004e964
mov ecx, dword [esp + 0x1c]
jmp 0x1004e4a0
mov ecx, esi
call fcn.10046da0
mov edx, eax
mov dword [esp + 0x14], edx
test edx, edx
jne 0x1004e964
mov ecx, edi
call fcn.10038ff0
lea edx, [esi + 0x54]
mov dword [esi + 0x50], eax
mov ecx, edi
call fcn.100395e0
mov edx, dword [esp + 0x44]
mov ecx, eax
mov edi, dword [esp + 0x10]
jmp 0x1004e58d
cmp byte [esi], 3
jne 0x1004e681
mov eax, dword [esi + 0x24]
test eax, eax
jle 0x1004e681
lea ecx, [eax + eax*4]
mov eax, dword [esp + 0x18]
mov eax, dword [eax + ecx*8 + 0xc]
mov dword [esi + 0x54], eax
mov dword [esi + 0x50], eax
mov eax, dword [esp + 0x18]
mov ecx, dword [eax + ecx*8 + 8]
mov dword [esi + 0x4c], ecx
mov eax, dword [edi + 0x1c]
lea edi, [esi + 0x34]
mov dword [esi + 0x20], eax
movzx eax, byte [ecx]
mov dword [edx], eax
mov dword [esp + 0x30], edi
cmp eax, 0x80
jae 0x1004e5b0
mov eax, 1
jmp 0x1004e5bf
mov ecx, dword [esi + 0x4c]
call fcn.100236b0
mov edx, dword [esp + 0x44]
movzx eax, al
mov dword [edi], eax
xor eax, eax
lea edi, [esi + 0x3e]
mov word [edi], ax
mov eax, dword [esi + 0x54]
cmp eax, dword [edx]
jae 0x1004e678
mov dword [esi + 0x4c], 0
mov dword [esi + 0x54], 0
mov eax, dword [edx]
cmp eax, 0x18003
ja 0x1004e7eb
cmp eax, dword [esi + 0x50]
ja 0x1004e7eb
mov ecx, dword [esp + 0x1c]
movzx eax, word [edi]
cmp eax, ecx
ja 0x1004e890
mov eax, dword [esi + 0x34]
lea ecx, [esi + 0x34]
mov dword [esp + 0x30], ecx
cmp eax, dword [edx]
jae 0x1004e81e
mov eax, dword [esi + 0x4c]
mov dword [esp + 0x38], eax
test eax, eax
jne 0x1004e6b6
xorps xmm0, xmm0
lea eax, [esp + 0x150]
movaps xmmword [esp + 0x150], xmm0
movaps xmmword [esp + 0x160], xmm0
movq qword [esp + 0x170], xmm0
mov edx, dword [edx]
mov ecx, dword [esi + 0x2c]
push eax
call fcn.100434e0
mov edx, eax
add esp, 4
mov dword [esp + 0x14], edx
test edx, edx
jne 0x1004e964
mov eax, dword [esp + 0x158]
mov edx, dword [esp + 0x44]
mov dword [esp + 0x38], eax
jmp 0x1004e6ba
mov eax, dword [esi + 0x4c]
mov dword [esp + 0x38], eax
jmp 0x1004e6ba
mov eax, dword [esp + 8]
mov esi, dword [esp + 0x18]
mov eax, dword [eax + 0xc]
lea eax, [eax + eax*4]
lea ecx, [esi + eax*8]
call fcn.10042dc0
mov eax, dword [esp + 8]
mov ecx, dword [esp + 0x7c]
add eax, 0x14
mov edx, dword [esp + 0xb4]
jmp 0x1004cb5b
lea edi, [esi + 0x3e]
jmp 0x1004e5fc
mov dword [esp + 0x30], ecx
movzx ecx, word [edi]
mov edi, dword [esp + 0x30]
mov dword [esp + 0x50], ecx
mov eax, dword [edx + ecx*4]
xor edx, edx
mov edi, dword [edi]
add edi, dword [esp + 0x38]
mov dword [esp + 0x60], eax
mov eax, dword [esp + 0x44]
mov dword [esp + 0x48], edx
lea edx, [ecx + 0x16]
lea edx, [esi + edx*4]
mov dword [esp + 0x5c], edx
mov eax, dword [eax]
add eax, dword [esp + 0x38]
mov dword [esp + 0x2c], eax
movzx eax, byte [edi]
mov dword [esp + 0x68], eax
mov dword [edx], eax
mov ecx, dword [esp + 0x68]
cmp ecx, 0x80
jae 0x1004e71b
inc edi
call fcn.10046e90
mov ecx, dword [esp + 0x60]
movzx eax, al
cdq
add ecx, eax
adc dword [esp + 0x48], edx
jmp 0x1004e749
lea edx, [esp + 0x68]
mov ecx, edi
call fcn.100236b0
mov ecx, dword [esp + 0x5c]
movzx eax, al
add edi, eax
mov eax, dword [esp + 0x68]
mov dword [ecx], eax
mov ecx, dword [esp + 0x68]
call fcn.10046e70
mov ecx, dword [esp + 0x60]
add ecx, eax
adc dword [esp + 0x48], 0
mov eax, dword [esp + 0x50]
mov edx, dword [esp + 0x44]
inc eax
add dword [esp + 0x5c], 4
mov dword [esp + 0x60], ecx
mov dword [esp + 0x50], eax
mov dword [edx + eax*4], ecx
mov edx, dword [esp + 0x5c]
cmp eax, dword [esp + 0x1c]
ja 0x1004e77c
cmp edi, dword [esp + 0x2c]
jb 0x1004e6f0
mov edx, dword [esp + 0x2c]
jmp 0x1004e784
mov edx, dword [esp + 0x2c]
cmp edi, edx
jb 0x1004e7b7
cmp edi, edx
ja 0x1004e7ca
cmp ecx, dword [esi + 0x50]
jne 0x1004e7ca
cmp dword [esp + 0x48], 0
jne 0x1004e7c6
sub edi, dword [esp + 0x38]
cmp dword [esi + 0x4c], 0
mov word [esi + 0x3e], ax
mov dword [esi + 0x34], edi
jne 0x1004e7b1
lea ecx, [esp + 0x150]
call fcn.10042850
mov ecx, dword [esp + 0x68]
jmp 0x1004e824
mov edx, dword [esp + 0x48]
test edx, edx
jb 0x1004e794
ja 0x1004e7c6
cmp ecx, dword [esi + 0x50]
jbe 0x1004e794
mov edx, dword [esp + 0x2c]
mov eax, dword [esp + 0x44]
cmp dword [eax], 0
jne 0x1004e7d9
xor eax, eax
mov edi, edx
jmp 0x1004e794
cmp dword [esi + 0x4c], 0
jne 0x1004e7eb
lea ecx, [esp + 0x150]
call fcn.10042850
mov edx, dword [esp + 0x58]
mov eax, dword [edx + 0xc]
test eax, eax
jle 0x10053364
mov edi, dword [esp + 0x10]
lea eax, [eax + eax*4]
mov esi, dword [esp + 0x18]
lea eax, [eax - 5]
lea eax, [edx + eax*4]
mov ecx, dword [esp + 0x7c]
add eax, 0x14
mov edx, dword [esp + 0xb4]
jmp 0x1004cb5b
xor ecx, ecx
mov dword [esp + 0x68], ecx
movzx eax, word [esi + 0x3e]
cmp eax, dword [esp + 0x1c]
ja 0x1004e898
mov edx, dword [esp + 8]
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 0x1004e870
mov edx, dword [edx + 0x10]
push 0x2000
call fcn.10043010
mov eax, dword [esp + 0xc]
add esp, 4
mov edi, dword [esp + 0x10]
mov ecx, dword [esp + 0x7c]
add eax, 0x14
mov edx, dword [esp + 0xb4]
jmp 0x1004cb5b
call fcn.10042dc0
mov eax, dword [esp + 8]
mov edi, dword [esp + 0x10]
mov ecx, dword [esp + 0x7c]
add eax, 0x14
mov edx, dword [esp + 0xb4]
jmp 0x1004cb5b
mov ecx, dword [esi + ecx*4 + 0x58]
mov dword [esp + 0x68], ecx
mov eax, dword [esp + 8]
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 + 0x20], edi
test word [edi + 0x10], ax
je 0x1004e8c3
mov ecx, edi
call fcn.10042dc0
mov ecx, dword [esp + 0x68]
mov edi, dword [esp + 0x1c]
mov edx, dword [esp + 0x44]
mov eax, dword [esi + 0x54]
cmp eax, dword [edx + edi*4 + 4]
mov edi, dword [esp + 0x20]
jb 0x1004e9bd
mov eax, dword [esi + 0x4c]
mov esi, dword [esp + 0x1c]
add eax, dword [edx + esi*4]
mov dword [esp + 0x20], eax
cmp ecx, 0xc
jae 0x1004e901
mov edx, ecx
mov ecx, eax
push edi
call fcn.10046ea0
add esp, 4
jmp 0x1004d431
mov al, byte [esp + 0x4c]
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 0x1004e980
mov eax, dword [esp + 0xc]
cmp esi, dword [eax + 0x78]
jg 0x10053536
mov eax, 1
mov ecx, edi
push 0
mov word [edi + 0x10], ax
call fcn.10042260
add esp, 4
test eax, eax
je 0x1004e986
mov edi, dword [esp + 0x10]
mov eax, dword [esp + 0xc]
mov ecx, eax
call fcn.1001ef40
push str.out_of_memory
push edi
call fcn.10043d70
add esp, 8
mov edx, 7
mov dword [esp + 0x14], edx
mov esi, dword [esp + 0xc]
mov edi, dword [esp + 0x10]
cmp byte [esi + 0x57], 0
je 0x10053871
mov edx, 7
jmp 0x1005389c
mov eax, dword [edi + 0x20]
mov dword [edi + 8], eax
push esi
push dword [esp + 0x24]
push dword [edi + 8]
call fcn.1012b000
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 + 0x68]
and eax, 1
mov ax, word [eax*2 + 0x1014ce48]
mov word [edi + 0x10], ax
jmp 0x1004d431
mov al, byte [esp + 0x4c]
mov byte [edi + 0x12], al
mov eax, dword [esp + 8]
mov edx, dword [esp + 0x68]
movzx eax, word [eax + 2]
test al, 0xc0
je 0x1004e9e2
cmp edx, 0xc
jb 0x1004e9de
test dl, 1
je 0x1004e9f1
test al, al
js 0x1004e9f1
mov ecx, edx
call fcn.10046e70
test eax, eax
jne 0x1004ea04
mov edx, dword [esp + 0x68]
push edi
mov ecx, 0x1014fe68
call fcn.10046ea0
add esp, 4
jmp 0x1004d431
mov ecx, dword [esp + 0xc]
cmp eax, dword [ecx + 0x78]
jg 0x10053536
mov ecx, dword [esp + 0x1c]
push edi
push eax
mov eax, dword [esp + 0x4c]
mov edx, dword [eax + ecx*4]
mov ecx, dword [esi + 0x2c]
call fcn.10043400
mov edx, eax
add esp, 8
mov dword [esp + 0x14], edx
test edx, edx
jne 0x1004e964
mov edx, dword [esp + 0x68]
mov ecx, dword [edi + 8]
push edi
call fcn.10046ea0
mov ecx, 0xbfff
add esp, 4
and word [edi + 0x10], cx
jmp 0x1004d431
mov ecx, dword [esp + 8]
mov eax, dword [ecx + 4]
mov edx, dword [ecx + 0x10]
xor ecx, ecx
mov dword [esp + 0x20], edx
mov dword [esp + 0x30], ecx
lea eax, [eax + eax*4]
mov edi, dword [edx + 4]
lea esi, [esi + eax*8]
xor eax, eax
mov dword [esp + 0x5c], edi
cmp ax, word [edx + 0x22]
jge 0x1004d431
add edi, 8
mov dword [esp + 0x50], edi
nop dword [eax]
movzx eax, word [edi + 6]
test al, 0x60
je 0x1004eaae
test al, 0x20
jne 0x1004eb62
mov eax, dword [esp + 8]
cmp dword [eax + 0xc], 0
jne 0x1004eb5f
push dword [esp + 0x4c]
mov dl, byte [edi]
mov ecx, esi
call fcn.1004c6b0
movzx ecx, word [esi + 0x10]
add esp, 4
mov dword [esp + 0x38], ecx
test cl, 1
jne case.default.0x1004eae0
mov eax, dword [edi - 4]
shr eax, 4
and eax, 0xf
lea edx, [eax - 2]
cmp edx, 4
ja case.default.0x1004eae0
jmp dword [edx*4 + 0x10053c94]
test cl, 0x10
jmp 0x1004eb51
test cl, 4
jmp 0x1004eb51
test cl, 2
jmp 0x1004eb51
test cl, 4
je 0x1004eb4e
mov edi, dword [esi]
mov edx, edi
mov eax, dword [esi + 4]
add edx, 0
adc eax, 0x8000
cmp eax, 0xffff
ja 0x1004eb20
jb 0x1004eb18
cmp edx, 0xffffffff
ja 0x1004eb20
or ecx, 0x20
movzx eax, cx
jmp 0x1004eb38
mov edx, dword [esi + 4]
mov ecx, edi
call fcn.1013b590
mov eax, dword [esp + 0x38]
or eax, 8
movsd qword [esi], xmm0
movzx eax, ax
mov edi, 0x10
mov edx, esi
and eax, 0xfffb
mov word [edx + edi], ax
mov edi, dword [esp + 0x50]
jmp case.default.0x1004eae0
test cl, 0x28
je 0x10053375
mov ecx, dword [esp + 0x30]
mov edx, dword [esp + 0x20]
add esi, 0x28
movsx eax, word [edx + 0x22]
inc ecx
add edi, 0x10
mov dword [esp + 0x30], ecx
mov dword [esp + 0x50], edi
cmp ecx, eax
jl 0x1004ea90
jmp 0x1004d431
mov ecx, dword [esp + 8]
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 + 0x4c]
mov dl, al
mov ecx, esi
call fcn.1004c6b0
add esp, 4
cmp byte [edi], 0x45
jne 0x1004ebfb
movzx ecx, word [esi + 0x10]
mov dword [esp + 0x20], ecx
test cl, 4
je 0x1004ebfb
mov edx, dword [esi]
mov eax, dword [esi + 4]
add edx, 0
adc eax, 0x8000
cmp eax, 0xffff
ja 0x1004ebdd
jb 0x1004ebce
cmp edx, 0xffffffff
ja 0x1004ebdd
and ecx, 0xfffb
or ecx, 0x20
mov word [esi + 0x10], cx
jmp 0x1004ebfb
mov edx, dword [esi + 4]
mov ecx, dword [esi]
call fcn.1013b590
mov eax, dword [esp + 0x20]
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 0x1004d431
add esi, 0x28
jmp 0x1004eb91
mov edx, dword [esp + 8]
xorps xmm0, xmm0
movlpd qword [esp + 0x50], xmm0
mov dword [esp + 0x44], 0
movlpd qword [esp + 0x38], xmm0
mov eax, dword [edx + 4]
mov edi, dword [edx + 0x10]
lea eax, [eax + eax*4]
lea ecx, [esi + eax*8]
mov eax, dword [edx + 8]
mov dword [esp + 0x30], ecx
lea eax, [eax + eax*4]
mov dword [esp + 0x20], eax
mov eax, dword [edx + 0xc]
lea eax, [eax + eax*4]
lea eax, [esi + eax*8]
mov dword [esp + 0x5c], eax
test edi, edi
je 0x1004ec8a
lea esi, [ecx + 0x10]
push dword [esp + 0x4c]
mov dl, byte [edi]
lea ecx, [esi - 0x10]
call fcn.1004c6b0
add esp, 4
cmp byte [edi], 0x45
jne 0x1004ec7d
movzx eax, word [esi]
test al, 4
je 0x1004ec7d
and eax, 0xfffb
or eax, 0x20
mov word [esi], ax
inc edi
add esi, 0x28
cmp byte [edi], 0
jne 0x1004ec55
mov ecx, dword [esp + 0x30]
mov eax, dword [esp + 0x20]
mov edi, dword [esp + 0x54]
mov edx, dword [esp + 0x50]
mov dword [esp + 0x1c], edi
lea esi, [eax*8 - 0xc]
mov dword [esp + 0x48], edx
mov eax, dword [esp + 0x3c]
add esi, ecx
mov dword [esp + 0x2c], eax
mov eax, dword [esp + 0x38]
mov dword [esp + 0x60], eax
nop word [eax + eax]
movzx ecx, word [esi - 0xc]
mov dword [esp + 0x38], ecx
test cl, 1
je 0x1004ece3
inc dword [esp + 0x44]
and ecx, 0x400
neg ecx
sbb ecx, ecx
and ecx, 0xa
jmp 0x1004ef08
test cl, 0x24
je 0x1004ee61
cmp dword [esi - 0x18], 0
mov eax, dword [esi - 0x1c]
jg 0x1004ed06
jl 0x1004ecfb
test eax, eax
jae 0x1004ed06
mov edx, eax
mov eax, dword [esi - 0x18]
not edx
not eax
jmp 0x1004ed0b
mov edx, eax
mov eax, dword [esi - 0x18]
inc dword [esp + 0x44]
test eax, eax
ja 0x1004edeb
jb 0x1004ed1e
cmp edx, 0x7f
ja 0x1004ed6d
mov eax, dword [esi - 0x1c]
and eax, 1
mov dword [esp + 0x50], 0
cmp eax, dword [esi - 0x1c]
jne 0x1004ed53
mov eax, dword [esp + 0x50]
cmp eax, dword [esi - 0x18]
jne 0x1004ed53
mov eax, dword [esp + 0x10]
cmp byte [eax + 0x93], 4
jb 0x1004ed53
lea eax, [edx + 8]
mov dword [esp + 0x38], eax
jmp 0x1004ef00
add dword [esp + 0x48], 1
mov eax, 1
mov dword [esp + 0x38], eax
adc edi, 0
mov dword [esp + 0x1c], edi
jmp 0x1004ef00
test eax, eax
ja 0x1004edeb
jb 0x1004ed7b
cmp edx, 0x7fff
ja 0x1004ed97
mov edx, dword [esp + 0x48]
mov ecx, 2
add edx, 2
mov dword [esp + 0x48], edx
adc edi, 0
mov dword [esp + 0x1c], edi
jmp 0x1004ef08
test eax, eax
ja 0x1004edeb
jb 0x1004eda5
cmp edx, 0x7fffff
ja 0x1004edc1
mov edx, dword [esp + 0x48]
mov ecx, 3
add edx, 3
mov dword [esp + 0x48], edx
adc edi, 0
mov dword [esp + 0x1c], edi
jmp 0x1004ef08
test eax, eax
ja 0x1004edeb
jb 0x1004edcf
cmp edx, 0x7fffffff
ja 0x1004edeb
mov edx, dword [esp + 0x48]
mov ecx, 4
add edx, 4
mov dword [esp + 0x48], edx
adc edi, 0
mov dword [esp + 0x1c], edi
jmp 0x1004ef08
cmp eax, 0x7fff
ja 0x1004ee15
jb 0x1004edf9
cmp edx, 0xffffffff
ja 0x1004ee15
mov edx, dword [esp + 0x48]
mov ecx, 5
add edx, 6
mov dword [esp + 0x48], edx
adc edi, 0
mov dword [esp + 0x1c], edi
jmp 0x1004ef08
mov edx, dword [esp + 0x48]
add edx, 8
mov dword [esp + 0x48], edx
adc edi, 0
mov dword [esp + 0x1c], edi
test cl, 0x20
je 0x1004ee57
mov edx, dword [esi - 0x18]
mov ecx, dword [esi - 0x1c]
call fcn.1013b590
mov ecx, dword [esp + 0x38]
and ecx, 0xffdf
movsd qword [esi - 0x1c], xmm0
or ecx, 8
mov word [esi - 0xc], cx
mov ecx, 7
jmp 0x1004ef04
mov ecx, 6
jmp 0x1004ef08
test cl, 8
je 0x1004ee82
inc dword [esp + 0x44]
mov ecx, 7
add edx, 8
mov dword [esp + 0x48], edx
adc edi, 0
mov dword [esp + 0x1c], edi
jmp 0x1004ef08
mov edx, dword [esi - 0x10]
mov eax, ecx
shr eax, 1
and eax, 1
mov dword [esp + 0x50], edx
lea eax, [eax + edx*2]
add eax, 0xc
mov dword [esp + 0x38], eax
test ecx, 0x400
je 0x1004eee6
mov ecx, dword [esi - 0x1c]
lea eax, [eax + ecx*2]
mov dword [esp + 0x38], eax
mov eax, dword [esp + 0x48]
or eax, dword [esp + 0x1c]
je 0x1004eecf
lea ecx, [esi - 0x1c]
call fcn.100425e0
test eax, eax
jne 0x1004e93e
mov edx, dword [esp + 0x50]
add edx, dword [esi - 0x1c]
jmp 0x1004eede
mov eax, ecx
cdq
add dword [esp + 0x60], eax
adc dword [esp + 0x2c], edx
mov edx, dword [esp + 0x50]
mov edi, dword [esp + 0x1c]
mov eax, dword [esp + 0x38]
add dword [esp + 0x48], edx
push 0
adc edi, 0
push eax
mov dword [esp + 0x24], edi
call fcn.10023730
add esp, 8
add dword [esp + 0x44], eax
mov ecx, dword [esp + 0x38]
mov edx, dword [esp + 0x48]
mov eax, esi
mov dword [eax], ecx
lea eax, [esi - 0x1c]
cmp eax, dword [esp + 0x30]
je 0x1004ef1d
sub esi, 0x28
jmp 0x1004ecc0
mov eax, dword [esp + 0x44]
cmp eax, 0x7e
jle 0x1004ef4d
cdq
push edx
push eax
call fcn.10023730
mov esi, eax
mov eax, dword [esp + 0x4c]
add eax, esi
mov dword [esp + 0x4c], eax
cdq
push edx
push eax
call fcn.10023730
add esp, 0x10
cmp esi, eax
mov eax, dword [esp + 0x44]
jge 0x1004ef52
inc eax
mov dword [esp + 0x44], eax
cdq
mov esi, eax
mov ecx, edx
add esi, dword [esp + 0x48]
mov eax, dword [esp + 0x5c]
adc ecx, edi
mov edi, esi
add edi, dword [esp + 0x60]
mov eax, dword [eax + 0x18]
adc ecx, dword [esp + 0x2c]
cdq
cmp ecx, edx
jg 0x1004ef85
jl 0x1004ef79
cmp edi, eax
ja 0x1004ef85
mov edx, dword [esp + 0x5c]
mov eax, dword [edx + 0x20]
mov dword [edx + 8], eax
jmp 0x1004efb6
mov eax, dword [esp + 0xc]
mov eax, dword [eax + 0x78]
cdq
cmp ecx, edx
jg 0x10053536
jl 0x1004ef9f
cmp edi, eax
ja 0x10053536
mov ecx, dword [esp + 0x5c]
mov edx, esi
call fcn.100424e0
test eax, eax
jne 0x1004e93e
mov edx, dword [esp + 0x5c]
mov ecx, dword [esp + 0x60]
mov eax, 0x10
mov word [edx + 0x10], ax
mov eax, ecx
or eax, dword [esp + 0x2c]
mov dword [edx + 0xc], esi
je 0x1004efd9
mov eax, 0x410
mov dword [edx], ecx
mov word [edx + 0x10], ax
mov ecx, dword [edx + 8]
mov eax, dword [esp + 0x44]
mov dword [esp + 0x1c], ecx
lea esi, [ecx + eax]
cmp eax, 0x80
jge 0x1004eff3
mov byte [ecx], al
inc ecx
jmp 0x1004f004
cdq
push edx
push eax
call fcn.100234b0
mov ecx, dword [esp + 0x24]
add esp, 8
add ecx, eax
mov edi, dword [esp + 0x30]
mov dword [esp + 0x1c], ecx
add edi, 0xc
nop
mov edx, dword [edi + 0x10]
cmp edx, 7
ja 0x1004f055
mov byte [ecx], dl
inc ecx
mov dword [esp + 0x1c], ecx
test edx, edx
je 0x1004f09f
movzx edx, byte [edx + 0x10150508]
mov ecx, dword [edi - 0xc]
mov eax, dword [edi - 8]
mov dword [esp + 0x50], edx
sub edx, 1
mov byte [edx + esi], cl
je 0x1004f04f
nop dword [eax]
shrd ecx, eax, 8
shr eax, 8
sub edx, 1
mov byte [edx + esi], cl
jne 0x1004f040
add esi, dword [esp + 0x50]
jmp 0x1004f09b
cmp edx, 0x80
jae 0x1004f071
mov byte [ecx], dl
inc ecx
mov dword [esp + 0x1c], ecx
cmp edx, 0xe
jb 0x1004f09f
mov eax, dword [edi]
test eax, eax
jle 0x1004f09f
jmp 0x1004f08c
push 0
push edx
call fcn.100234b0
mov ecx, dword [esp + 0x24]
add esp, 8
add ecx, eax
mov eax, dword [edi]
mov dword [esp + 0x1c], ecx
test eax, eax
je 0x1004f09f
push eax
push dword [edi - 4]
push esi
call fcn.1012b000
add esp, 0xc
add esi, dword [edi]
mov ecx, dword [esp + 0x1c]
mov eax, dword [esp + 0x20]
lea eax, [eax*8 - 0x1c]
add eax, dword [esp + 0x30]
cmp edi, eax
je 0x1004d431
add edi, 0x28
jmp 0x1004f010
mov ecx, dword [esp + 8]
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 + 8]
cmp dword [eax + 0xc], 0
je 0x1004f0ef
mov ecx, edx
call fcn.1003a240
mov dword [esp + 0xe8], eax
mov dword [esp + 0xec], edx
jmp 0x1004f11d
mov ecx, dword [esp + 0xc]
lea eax, [esp + 0xe8]
xorps xmm0, xmm0
push eax
movlpd qword [esp + 0xec], xmm0
call fcn.1003fd40
mov edx, eax
add esp, 4
mov dword [esp + 0x14], edx
test edx, edx
jne 0x1004e964
mov edx, dword [esp + 8]
mov ecx, edi
call fcn.1004c950
mov ecx, dword [esp + 0xe8]
mov edx, dword [esp + 0xec]
mov dword [eax], ecx
mov dword [eax + 4], edx
jmp 0x10051876
mov ecx, dword [esp + 8]
mov eax, dword [ecx + 4]
test eax, eax
mov edi, dword [ecx + 0x10]
mov dword [esp + 0x2c], eax
mov eax, dword [esp + 0xc]
jne 0x1004f221
cmp dword [eax + 0xc4], 0
jg 0x100533bb
mov ecx, edi
call fcn.10022350
mov esi, eax
xor edx, edx
mov eax, dword [esp + 0xc]
mov dword [esp + 0x20], esi
mov ecx, dword [eax + 0x1fc]
add ecx, dword [eax + 0x1f8]
push ecx
mov ecx, eax
call fcn.100abf40
mov edx, eax
add esp, 4
mov dword [esp + 0x14], edx
test edx, edx
jne 0x1004e964
mov ecx, dword [esp + 0xc]
lea eax, [esi + 0x21]
push edx
push eax
call fcn.1001ec70
mov esi, eax
add esp, 8
test esi, esi
je 0x1004f4db
mov ecx, dword [esp + 0x20]
lea edx, [esi + 0x20]
inc ecx
mov dword [esi], edx
push ecx
push edi
push edx
call fcn.1012b000
mov edx, dword [esp + 0x18]
add esp, 0xc
cmp byte [edx + 0x55], 0
je 0x1004f1e3
mov byte [edx + 0x55], 0
mov byte [edx + 0x5d], 1
jmp 0x1004f1e9
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 0x1004f4db
mov esi, dword [eax + 0x1ec]
xor ecx, ecx
mov dword [esp + 0x1c], ecx
test esi, esi
je 0x1004f249
mov ecx, dword [esi]
mov edx, edi
call fcn.100226c0
test eax, eax
je 0x1004f26e
inc dword [esp + 0x1c]
mov esi, dword [esi + 0x18]
test esi, esi
jne 0x1004f231
push edi
mov edi, dword [esp + 0x14]
push str.no_such_savepoint:__s
push edi
call fcn.10043d70
mov esi, dword [esp + 0x18]
mov edx, 1
add esp, 0xc
mov dword [esp + 0x14], edx
jmp 0x1004e96c
mov eax, dword [esp + 0xc]
mov edx, dword [esp + 0x2c]
cmp dword [eax + 0xc4], 0
jle 0x1004f288
cmp edx, 1
je 0x100533df
cmp dword [esi + 0x18], 0
jne 0x1004f2f7
cmp byte [eax + 0x5d], 0
je 0x1004f2f7
mov edi, 1
mov dword [esp + 0x30], edi
cmp edx, edi
jne 0x1004f2ff
mov ecx, dword [esp + 0x10]
mov edx, edi
call fcn.10046650
mov ecx, eax
mov dword [esp + 0x14], ecx
test ecx, ecx
jne 0x100532ed
mov eax, dword [esp + 0xc]
mov ecx, dword [esp + 0x10]
mov byte [eax + 0x55], 1
call fcn.100466c0
cmp eax, 5
je 0x10053412
mov eax, dword [esp + 0x10]
mov edx, dword [eax + 0x24]
mov dword [esp + 0x14], edx
test edx, edx
jne 0x10053403
mov eax, dword [esp + 0xc]
mov dword [esp + 0x30], edi
mov byte [eax + 0x5d], dl
jmp 0x1004f426
mov dword [esp + 0x30], 0
mov eax, dword [eax + 0x1f8]
sub eax, dword [esp + 0x1c]
dec eax
mov dword [esp + 0x1c], eax
cmp edx, 2
jne 0x1004f386
mov edi, dword [esp + 0xc]
mov dword [esp + 0x20], 0
mov ecx, dword [edi + 0x18]
and ecx, 1
cmp dword [edi + 0x14], 0
mov dword [esp + 0x50], ecx
jle 0x1004f394
mov eax, ecx
mov ecx, dword [esp + 0xc]
xor eax, 1
xor edi, edi
mov dword [esp + 0x38], eax
nop
mov ecx, dword [ecx + 0x10]
mov edx, 0x204
push eax
mov ecx, dword [edi + ecx + 4]
call fcn.10038880
mov edx, eax
add esp, 4
mov dword [esp + 0x14], edx
test edx, edx
jne 0x1004e964
mov eax, dword [esp + 0x20]
add edi, 0x10
mov ecx, dword [esp + 0xc]
inc eax
mov dword [esp + 0x20], eax
cmp eax, dword [ecx + 0x14]
mov eax, dword [esp + 0x38]
jl 0x1004f340
mov eax, dword [esp + 0x1c]
mov edx, dword [esp + 0x2c]
jmp 0x1004f396
mov ecx, dword [esp + 0xc]
mov dword [esp + 0x50], 0
jmp 0x1004f396
mov ecx, edi
cmp dword [ecx + 0x14], 0
mov dword [esp + 0x20], 0
jle 0x1004f3e1
xor edi, edi
mov ecx, dword [ecx + 0x10]
push eax
mov ecx, dword [edi + ecx + 4]
call fcn.10038b10
mov edx, eax
add esp, 4
mov dword [esp + 0x14], edx
test edx, edx
jne 0x1004e964
mov eax, dword [esp + 0x20]
add edi, 0x10
mov ecx, dword [esp + 0xc]
inc eax
mov edx, dword [esp + 0x2c]
mov dword [esp + 0x20], eax
cmp eax, dword [ecx + 0x14]
mov eax, dword [esp + 0x1c]
jl 0x1004f3a6
cmp dword [esp + 0x50], 0
je 0x1004f41a
mov ecx, dword [ecx + 4]
test ecx, ecx
je 0x1004f409
nop
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 0x1004f3f0
mov ecx, dword [esp + 0xc]
call fcn.1006fa80
mov eax, dword [esp + 0xc]
or dword [eax + 0x18], 1
mov edx, dword [esp + 0x14]
test edx, edx
jne 0x1004e964
mov edi, dword [esp + 0xc]
mov ecx, dword [edi + 0x1ec]
cmp ecx, esi
je 0x1004f456
mov eax, dword [ecx + 0x18]
mov edx, ecx
mov ecx, edi
mov dword [edi + 0x1ec], eax
call fcn.1001e7d0
dec dword [edi + 0x1f8]
mov ecx, dword [edi + 0x1ec]
cmp ecx, esi
jne 0x1004f434
mov edi, dword [esp + 0x2c]
cmp edi, 1
jne 0x1004f486
mov ecx, dword [esp + 0xc]
mov edx, esi
mov eax, dword [esi + 0x18]
mov dword [ecx + 0x1ec], eax
call fcn.1001e7d0
cmp dword [esp + 0x30], 0
jne 0x1004f4db
mov ecx, dword [esp + 0xc]
dec dword [ecx + 0x1f8]
jmp 0x1004f4ba
cmp dword [esp + 0x30], 0
mov edx, dword [esp + 0xc]
mov eax, dword [esi + 8]
mov ecx, dword [esi + 0xc]
mov dword [edx + 0x200], eax
mov dword [edx + 0x204], ecx
mov eax, dword [esi + 0x10]
mov ecx, dword [esi + 0x14]
mov dword [edx + 0x208], eax
mov dword [edx + 0x20c], ecx
je 0x1004f4ba
cmp edi, 2
jne 0x1004f4db
mov ecx, dword [esp + 0x1c]
mov edx, edi
push ecx
mov ecx, dword [esp + 0x10]
call fcn.100abf40
mov edx, eax
add esp, 4
mov dword [esp + 0x14], edx
test edx, edx
jne 0x1004e964
mov edi, dword [esp + 0x10]
cmp byte [edi + 0x95], 3
je 0x10053447
mov eax, dword [esp + 8]
mov esi, dword [esp + 0x18]
mov ecx, dword [esp + 0x7c]
add eax, 0x14
mov edx, dword [esp + 0xb4]
jmp 0x1004cb5b
mov ecx, dword [esp + 8]
mov dword [esp + 0x30], 0
mov edi, dword [ecx + 8]
test edi, edi
je 0x1004f53a
mov eax, dword [esp + 0xc]
mov ecx, dword [eax + 0x24]
mov edx, dword [eax + 0x20]
and ecx, 2
mov eax, edx
and eax, 0x100000
or eax, ecx
jne 0x10053451
mov ecx, dword [esp + 8]
mov eax, dword [esp + 0xc]
mov esi, dword [ecx + 4]
shl esi, 4
add esi, dword [eax + 0x10]
mov eax, dword [esi + 4]
mov dword [esp + 0x20], eax
test eax, eax
je 0x1004f60f
lea ecx, [esp + 0x30]
mov edx, edi
push ecx
mov ecx, eax
call fcn.10037740
mov edx, eax
add esp, 4
mov dword [esp + 0x14], edx
test edx, edx
jne 0x10053480
mov edi, dword [esp + 0x10]
test byte [edi + 0x98], 0x20
je 0x1004f61f
mov eax, dword [esp + 8]
cmp dword [eax + 8], edx
je 0x1004f61f
mov ecx, dword [esp + 0xc]
cmp byte [ecx + 0x55], dl
je 0x1004f5a5
cmp dword [ecx + 0xc0], 1
jle 0x1004f61f
mov eax, dword [edi + 0x30]
test eax, eax
jne 0x1004f5c1
mov eax, dword [ecx + 0x1f8]
inc dword [ecx + 0x1fc]
add eax, dword [ecx + 0x1fc]
mov dword [edi + 0x30], eax
dec eax
xor edx, edx
push eax
call fcn.100abf40
add esp, 4
mov dword [esp + 0x14], eax
test eax, eax
jne 0x1004f5e5
mov edx, dword [edi + 0x30]
mov ecx, dword [esp + 0x20]
call fcn.10038ab0
mov dword [esp + 0x14], eax
mov edx, dword [esp + 0xc]
mov eax, dword [edx + 0x200]
mov ecx, dword [edx + 0x204]
mov dword [edi + 0x48], eax
mov dword [edi + 0x4c], ecx
mov eax, dword [edx + 0x208]
mov ecx, dword [edx + 0x20c]
mov dword [edi + 0x50], eax
mov dword [edi + 0x54], ecx
jmp 0x1004f613
mov edi, dword [esp + 0x10]
mov edx, dword [esp + 0x14]
test edx, edx
jne 0x1004e964
mov eax, dword [esp + 8]
cmp word [eax + 2], 0
je 0x1004d439
mov ecx, dword [esp + 8]
mov eax, dword [esp + 0x30]
cmp eax, dword [ecx + 0xc]
jne 0x100534b5
mov eax, dword [esi + 0xc]
mov eax, dword [eax + 4]
cmp eax, dword [ecx + 0x10]
jne 0x100534b5
mov esi, dword [esp + 0x18]
mov eax, ecx
mov ecx, dword [esp + 0x7c]
add eax, 0x14
mov edx, dword [esp + 0xb4]
jmp 0x1004cb5b
mov edx, dword [esp + 8]
lea eax, [esp + 0x10c]
mov ecx, dword [esp + 0xc]
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.1003fc20
mov eax, dword [esp + 0xc]
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 0x1004f6d4
call fcn.1004c930
mov ecx, eax
mov eax, dword [esp + 0x10c]
cdq
mov dword [ecx], eax
mov eax, dword [esp + 8]
mov dword [ecx + 4], edx
mov ecx, dword [esp + 0x7c]
add eax, 0x14
mov edx, dword [esp + 0xb4]
jmp 0x1004cb5b
mov eax, 4
mov word [ecx + 0x10], ax
mov eax, dword [esp + 0x10c]
cdq
mov dword [ecx], eax
mov eax, dword [esp + 8]
mov dword [ecx + 4], edx
mov ecx, dword [esp + 0x7c]
add eax, 0x14
mov edx, dword [esp + 0xb4]
jmp 0x1004cb5b
mov ecx, dword [esp + 8]
mov eax, dword [esp + 0xc]
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.1003fc80
mov edx, dword [esp + 0xc]
add esp, 4
mov dword [esp + 0x14], eax
mov eax, dword [edx + 8]
cmp eax, 1
jne 0x1004f759
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 + 0xc]
mov ecx, eax
or dword [eax + 0x18], 1
mov edx, dword [edx + 4]
call fcn.10081980
mov edx, dword [esp + 8]
jmp 0x1004f767
cmp eax, 2
jne 0x1004f767
mov ecx, dword [esi + 0xc]
mov al, byte [edx + 0xc]
mov byte [ecx + 0x4c], al
cmp dword [edx + 4], 1
jne 0x1004f77f
mov ecx, dword [esp + 0xc]
xor edx, edx
call fcn.10048900
and dword [edi + 0x98], 0xfffffffc
mov edx, dword [esp + 0x14]
test edx, edx
jne 0x1004e964
mov eax, dword [esp + 8]
mov esi, dword [esp + 0x18]
mov ecx, dword [esp + 0x7c]
add eax, 0x14
mov edx, dword [esp + 0xb4]
jmp 0x1004cb5b
mov edx, dword [esp + 8]
mov eax, dword [edi + 0x60]
mov ecx, dword [edx + 4]
mov esi, dword [eax + ecx*4]
test esi, esi
je 0x1004f7cc
mov eax, dword [esi + 0x38]
cmp eax, dword [edx + 8]
jne 0x1004f7cc
mov ecx, dword [esi + 0x2c]
call fcn.10034790
jmp 0x1004f8ef
mov cl, byte [esp + 0x2b]
jmp 0x1004f7d6
mov edx, dword [esp + 8]
mov eax, dword [edi + 0x98]
mov esi, dword [esp + 0xc]
and al, 3
cmp al, 1
je 0x10053517
mov eax, dword [esp + 8]
mov edx, dword [edx + 8]
mov dword [esp + 0x50], 0
mov dword [esp + 0x30], 0
mov eax, dword [eax + 0xc]
mov dword [esp + 0x38], eax
shl eax, 4
add eax, dword [esi + 0x10]
cmp cl, 0x71
mov ecx, dword [esp + 8]
mov dword [esp + 0x20], edx
mov esi, dword [eax + 4]
mov dword [esp + 0x5c], esi
jne 0x1004f846
mov eax, dword [eax + 0xc]
movzx edi, word [ecx + 2]
mov esi, dword [esp + 0x10]
and edi, 8
or edi, 4
mov al, byte [eax + 0x4c]
cmp al, byte [esi + 0x93]
jae 0x1004f848
mov byte [esi + 0x93], al
jmp 0x1004f848
xor edi, edi
test byte [ecx + 2], 0x10
je 0x1004f869
mov ecx, dword [esp + 0x18]
lea eax, [edx + edx*4]
lea esi, [ecx + eax*8]
mov ecx, esi
call fcn.100429f0
mov eax, dword [esi]
mov ecx, dword [esp + 8]
mov dword [esp + 0x20], eax
mov al, byte [ecx + 1]
cmp al, 0xf8
jne 0x1004f87d
mov eax, dword [ecx + 0x10]
mov dword [esp + 0x30], eax
movzx eax, word [eax + 8]
jmp 0x1004f88a
cmp al, 0xfd
jne 0x1004f886
mov eax, dword [ecx + 0x10]
jmp 0x1004f88a
mov eax, dword [esp + 0x50]
mov edx, dword [ecx + 4]
mov ecx, dword [esp + 0x10]
push 0
push eax
call fcn.1004c3c0
mov esi, eax
add esp, 8
test esi, esi
je 0x1004e93e
push dword [esi + 0x2c]
mov eax, dword [esp + 0x3c]
push dword [esp + 0x34]
mov ecx, dword [esp + 0x64]
or dword [esi + 8], 4
mov byte [esi + 1], al
mov eax, dword [esp + 0x28]
mov edx, eax
push edi
mov byte [esi + 2], 1
mov dword [esi + 0x38], eax
call fcn.10038d30
mov edi, dword [esp + 0x1c]
add esp, 0xc
mov dword [esp + 0x14], eax
mov eax, dword [esp + 0x30]
mov dword [esi + 0x30], eax
mov eax, dword [esp + 8]
cmp byte [eax + 1], 0xf8
setne al
mov byte [esi + 4], al
mov eax, dword [esp + 8]
mov ecx, dword [esi + 0x2c]
movzx edx, word [eax + 2]
and edx, 3
call fcn.100349d0
mov edx, dword [esp + 0x14]
test edx, edx
jne 0x1004e964
mov eax, dword [esp + 8]
mov esi, dword [esp + 0x18]
mov ecx, dword [esp + 0x7c]
add eax, 0x14
mov edx, dword [esp + 0xb4]
jmp 0x1004cb5b
mov edx, dword [esp + 8]
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 + 0x14]
movsx eax, word [edi + 0x3c]
push eax
call fcn.1004c3c0
mov esi, eax
add esp, 8
test esi, esi
je 0x1004e93e
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.10038d30
add esp, 0xc
mov dword [esp + 0x14], eax
jmp 0x1004d431
mov ecx, dword [esp + 8]
mov eax, dword [ecx + 0xc]
test eax, eax
jle 0x1004f9d5
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], 0x1015571b
mov edx, dword [ecx + 4]
mov eax, dword [edi + 0x60]
mov esi, dword [eax + edx*4]
test esi, esi
je 0x1004fa47
test byte [esi + 8], 8
jne 0x1004fa47
movsx eax, word [esi + 0x3c]
cmp dword [ecx + 8], eax
jg 0x1004fa47
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.1003f850
mov edx, eax
add esp, 4
mov dword [esp + 0x14], edx
mov dword [esp + 0x20], edx
test edx, edx
jne 0x1004e964
mov eax, dword [esp + 8]
mov byte [esi + 2], 1
mov esi, dword [esp + 0x18]
mov ecx, dword [esp + 0x7c]
add eax, 0x14
mov edx, dword [esp + 0xb4]
jmp 0x1004cb5b
push 0
push dword [ecx + 8]
mov ecx, edi
call fcn.1004c3c0
mov esi, eax
add esp, 8
test esi, esi
je 0x1004e942
mov eax, dword [esp + 8]
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 + 0x14]
push edi
push eax
mov ecx, dword [eax]
call fcn.100363e0
mov edx, eax
add esp, 0x10
mov dword [esp + 0x14], edx
test edx, edx
jne 0x1004e964
mov ecx, dword [edi]
lea edx, [eax + 1]
push eax
call fcn.10037740
mov edx, eax
add esp, 4
mov dword [esp + 0x14], edx
test edx, edx
jne 0x1004fb2c
mov edx, dword [esp + 8]
mov ecx, dword [edi]
mov eax, dword [edx + 0x10]
mov dword [esp + 0x20], eax
mov dword [esi + 0x30], eax
test eax, eax
je 0x1004fb07
movzx eax, word [edx + 2]
lea edx, [esi + 0x38]
or eax, 2
push eax
call fcn.1003f530
mov edx, eax
add esp, 4
mov dword [esp + 0x14], edx
test edx, edx
jne 0x1004fb01
push dword [esi + 0x2c]
mov edx, dword [esi + 0x38]
push dword [esp + 0x24]
mov ecx, dword [edi]
push 4
call fcn.10038d30
mov edx, eax
add esp, 0xc
mov dword [esp + 0x14], edx
mov byte [esi + 4], 0
jmp 0x1004fb2c
push dword [esi + 0x2c]
mov edx, 1
mov dword [esi + 0x38], 1
push 0
push 4
call fcn.10038d30
mov edx, eax
mov byte [esi + 4], 1
add esp, 0xc
mov dword [esp + 0x14], edx
mov eax, dword [esp + 8]
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 0x10053525
mov edi, dword [esp + 0x10]
mov eax, dword [esp + 8]
mov byte [esi + 2], 1
mov esi, dword [esp + 0x18]
mov ecx, dword [esp + 0x7c]
add eax, 0x14
mov edx, dword [esp + 0xb4]
jmp 0x1004cb5b
mov ecx, dword [esp + 8]
push 1
push dword [ecx + 8]
mov edx, dword [ecx + 4]
mov ecx, edi
call fcn.1004c3c0
add esp, 8
test eax, eax
je 0x1004e942
mov edx, dword [esp + 8]
push eax
mov ecx, dword [edx + 0x10]
mov dword [eax + 0x30], ecx
mov edx, dword [edx + 0xc]
mov ecx, dword [esp + 0x10]
call fcn.100552b0
mov edx, eax
add esp, 4
mov dword [esp + 0x14], edx
test edx, edx
jne 0x1004e964
mov eax, dword [esp + 8]
mov ecx, dword [esp + 0x7c]
add eax, 0x14
mov edx, dword [esp + 0xb4]
jmp 0x1004cb5b
mov ecx, dword [esp + 8]
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 + 8]
je 0x10051e98
mov edi, dword [esp + 0x10]
mov esi, dword [esp + 0x18]
mov ecx, dword [esp + 0x7c]
add eax, 0x14
mov edx, dword [esp + 0xb4]
jmp 0x1004cb5b
mov ecx, dword [esp + 8]
push 3
push dword [ecx + 0xc]
mov edx, dword [ecx + 4]
mov ecx, edi
call fcn.1004c3c0
add esp, 8
test eax, eax
je 0x1004e942
mov ecx, dword [esp + 8]
mov byte [eax + 2], 1
mov ecx, dword [ecx + 8]
mov dword [eax + 0x24], ecx
mov byte [eax + 4], 1
mov dword [eax + 0x2c], 0x10168969
mov eax, dword [esp + 8]
mov ecx, dword [esp + 0x7c]
add eax, 0x14
mov edx, dword [esp + 0xb4]
jmp 0x1004cb5b
mov ecx, dword [esp + 8]
mov eax, dword [edi + 0x60]
mov ecx, dword [ecx + 4]
mov edx, dword [eax + ecx*4]
test edx, edx
je 0x1004fc82
mov ecx, edi
call fcn.10045c00
mov eax, dword [esp + 8]
mov ecx, dword [eax + 4]
mov eax, dword [edi + 0x60]
mov dword [eax + ecx*4], 0
mov eax, dword [esp + 8]
mov ecx, dword [esp + 0x7c]
add eax, 0x14
mov edx, dword [esp + 0xb4]
jmp 0x1004cb5b
mov ecx, dword [esp + 8]
mov eax, dword [edi + 0x60]
mov dword [esp + 0x1c], 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 0x1004fe2a
mov eax, dword [esp + 8]
mov eax, dword [eax + 0xc]
lea eax, [eax + eax*4]
lea esi, [esi + eax*8]
movzx eax, word [esi + 0x10]
mov dword [esp + 0x20], eax
and al, 0x2e
cmp al, 2
jne 0x1004fcfa
xor edx, edx
mov ecx, esi
call fcn.1004c4d0
mov ecx, esi
call fcn.100428e0
movzx ecx, word [esi + 0x10]
mov dword [esp + 0x30], eax
mov eax, dword [esp + 0x20]
mov dword [esp + 0x38], edx
mov word [esi + 0x10], ax
test cl, 0x24
jne 0x1004fdbc
test cl, 8
jne 0x1004fd8a
test cl, 1
jne 0x10051e94
cmp dword [esp + 0x2c], 0x17
jae 0x10051e94
mov ecx, dword [edi + 0x2c]
lea edx, [esp + 0x70]
call fcn.10039a00
mov edx, eax
mov dword [esp + 0x14], edx
test edx, edx
jne 0x1004e964
mov edx, dword [esp + 0x1c]
cmp dword [esp + 0x70], 0
jne 0x10051e94
mov eax, dword [esp + 8]
test edx, edx
je 0x1004d435
mov edi, dword [esp + 0x10]
add eax, 0x14
mov esi, dword [esp + 0x18]
mov ecx, dword [esp + 0x7c]
add eax, 0x14
mov edx, dword [esp + 0xb4]
jmp 0x1004cb5b
push dword [esp + 0x38]
movsd xmm1, qword [esi]
push dword [esp + 0x34]
call fcn.10047600
add esp, 8
test eax, eax
jle 0x1004fdad
mov eax, dword [esp + 0x2c]
test al, 1
jne 0x1004fdbc
dec eax
jmp 0x1004fdb8
jns 0x1004fdbc
mov eax, dword [esp + 0x2c]
test al, 1
je 0x1004fdbc
inc eax
mov dword [esp + 0x2c], eax
mov ecx, dword [edi + 0x2c]
lea eax, [esp + 0x70]
push eax
push dword [esp + 0x3c]
lea esi, [edi + 0x2c]
xor edx, edx
push dword [esp + 0x38]
call fcn.10039a20
mov edx, eax
add esp, 0xc
mov eax, dword [esp + 0x30]
mov dword [edi + 0x40], eax
mov eax, dword [esp + 0x38]
mov dword [esp + 0x14], edx
mov dword [edi + 0x44], eax
test edx, edx
jne 0x1004e964
mov edx, dword [esp + 0x1c]
mov eax, dword [esp + 0x2c]
mov ecx, dword [esp + 0x70]
cmp eax, 0x17
jl 0x1004ff1a
test ecx, ecx
js 0x1004fed9
jne 0x1004fe1d
cmp eax, 0x18
je 0x1004fed9
mov dword [esp + 0x70], 0
jmp 0x1004fd60
mov eax, dword [edi + 0x2c]
lea esi, [edi + 0x2c]
mov ecx, dword [esp + 8]
mov al, byte [eax + 3]
and al, 2
mov byte [esp + 0x2b], al
mov eax, 0
setne al
mov dword [esp + 0x1c], eax
mov eax, dword [edi + 0x30]
mov dword [esp + 0x80], eax
mov ax, word [ecx + 0x10]
mov word [esp + 0x94], ax
lea eax, [edx - 1]
test al, 1
mov byte [esp + 0x9a], 0
lea edx, [esp + 0x80]
sete al
lea eax, [eax*2 - 1]
mov byte [esp + 0x96], al
mov eax, dword [ecx + 0xc]
mov ecx, dword [esp + 0x18]
lea eax, [eax + eax*4]
lea eax, [ecx + eax*8]
mov dword [esp + 0x84], eax
lea eax, [esp + 0x70]
mov ecx, dword [esi]
push eax
call fcn.10039cd0
mov edx, eax
add esp, 4
mov dword [esp + 0x14], edx
test edx, edx
jne 0x1004e964
cmp byte [esp + 0x2b], al
je 0x1004fdf5
mov edx, dword [esp + 0x1c]
mov dword [esp + 0x1c], edx
cmp byte [esp + 0x9a], al
je 0x1004fd55
jmp 0x1004fdf9
mov dword [esp + 0x70], 0
xor edx, edx
mov ecx, dword [esi]
call fcn.1003a3f0
mov edx, eax
mov dword [esp + 0x14], edx
test edx, edx
je 0x1004fd51
mov edi, dword [esp + 0x10]
cmp edx, 0x65
jne 0x100533b2
mov dword [esp + 0x14], 0
mov dword [esp + 0x70], 1
jmp 0x10052a3b
test ecx, ecx
jg 0x1004ff35
jne 0x1004ff25
cmp eax, 0x15
je 0x1004ff35
mov ecx, dword [esi]
call fcn.1003a230
mov dword [esp + 0x70], eax
jmp 0x1004fd51
mov dword [esp + 0x70], 0
xor edx, edx
mov ecx, dword [esi]
call fcn.1003a560
jmp 0x1004feea
mov ecx, dword [esp + 8]
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 0x1004e292
mov ecx, dword [esp + 8]
mov eax, dword [edi + 0x30]
mov dword [esp + 0x80], eax
mov byte [esp + 0x96], 0
mov ax, word [ecx + 0x24]
mov esi, dword [ecx + 4]
mov word [esp + 0x94], ax
mov eax, dword [ecx + 0x20]
mov ecx, dword [esp + 0x18]
mov dword [esp + 0xfc], 0
lea eax, [eax + eax*4]
lea eax, [ecx + eax*8]
mov dword [esp + 0x84], eax
nop word [eax + eax]
mov ecx, dword [esp + 0xc]
lea eax, [esp + 0xfc]
push eax
lea eax, [esp + 0x84]
mov edx, edi
push eax
call fcn.100487e0
mov edx, eax
add esp, 8
mov dword [esp + 0x14], edx
test edx, edx
jne 0x1004e964
mov eax, dword [esp + 0xfc]
test eax, eax
jle 0x1004fff3
mov ecx, dword [esp + 8]
cmp word [ecx + 2], dx
je 0x10050027
test eax, eax
jns 0x10051e94
test esi, esi
jle 0x1004d431
mov ecx, dword [edi + 0x2c]
xor edx, edx
dec esi
call fcn.1003a3f0
mov edx, eax
mov dword [esp + 0x14], edx
test edx, edx
je 0x1004ffb0
cmp edx, 0x65
jne 0x1004e964
mov dword [esp + 0x14], 0
mov eax, dword [esp + 8]
mov ecx, dword [esp + 0x58]
add eax, 0x14
mov edi, dword [esp + 0x10]
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 + 0x7c]
add eax, 0x14
mov edx, dword [esp + 0xb4]
jmp 0x1004cb5b
mov ecx, dword [esp + 8]
mov eax, dword [edi + 0x60]
mov ecx, dword [ecx + 4]
mov eax, dword [eax + ecx*4]
mov ecx, dword [esp + 8]
movzx edx, word [eax + 0xc]
mov ecx, dword [ecx + 8]
cmp edx, ecx
jge 0x10050090
mov word [eax + 0xc], cx
mov eax, dword [esp + 8]
mov ecx, dword [esp + 0x7c]
add eax, 0x14
mov edx, dword [esp + 0xb4]
jmp 0x1004cb5b
mov ecx, dword [esp + 8]
mov ecx, dword [ecx + 0xc]
cmp edx, ecx
jle 0x100518fd
mov word [eax + 0xc], cx
mov eax, dword [esp + 8]
mov ecx, dword [esp + 0x7c]
add eax, 0x14
mov edx, dword [esp + 0xb4]
jmp 0x1004cb5b
mov ecx, dword [esp + 8]
mov eax, dword [edi + 0x60]
mov ecx, dword [ecx + 4]
mov eax, dword [eax + ecx*4]
test eax, eax
je case.0x1004cb89.9
cmp byte [eax + 2], 0
je 0x100518fd
jmp case.0x1004cb89.9
mov ecx, dword [esp + 8]
mov eax, dword [edi + 0x60]
mov ecx, dword [ecx + 4]
mov eax, dword [eax + ecx*4]
mov ecx, dword [esp + 8]
movzx eax, word [eax + 0xc]
cmp eax, dword [ecx + 0x10]
mov eax, ecx
jge case.0x1004cb89.89
mov ecx, dword [eax + 4]
mov eax, dword [edi + 0x60]
mov esi, dword [eax + ecx*4]
mov eax, dword [esp + 8]
mov ecx, dword [esp + 0x18]
mov eax, dword [eax + 0xc]
lea eax, [eax + eax*4]
lea ecx, [ecx + eax*8]
mov eax, dword [esp + 8]
mov dword [esp + 0x84], ecx
movzx eax, word [eax + 0x10]
mov word [esp + 0x94], ax
test ax, ax
je 0x10050164
mov eax, dword [esi + 0x30]
lea edi, [esi + 0x24]
mov dword [esp + 0x80], eax
lea edx, [esp + 0x80]
mov byte [esp + 0x96], 0
mov ecx, dword [esi + 0x2c]
push edi
call fcn.10039cd0
mov edx, eax
add esp, 4
mov dword [esp + 0x14], edx
jmp 0x100501cf
mov eax, 0x400
test word [ecx + 0x10], ax
je 0x1005017c
call fcn.100425e0
test eax, eax
jne 0x1004e942
mov ecx, dword [esi + 0x30]
call fcn.10047160
mov edi, eax
test edi, edi
je 0x1004e93e
mov edx, dword [esp + 0x84]
mov ecx, dword [esi + 0x30]
push edi
push dword [edx + 8]
mov edx, dword [edx + 0xc]
call fcn.100471c0
lea eax, [esi + 0x24]
mov byte [edi + 0x16], 0
mov ecx, dword [esi + 0x2c]
mov edx, edi
push eax
call fcn.10039cd0
mov ecx, dword [esp + 0x18]
add esp, 0xc
mov edx, edi
mov dword [esp + 0x14], eax
call fcn.1001e7d0
mov edx, dword [esp + 0x14]
lea edi, [esi + 0x24]
test edx, edx
jne 0x1004e964
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 + 8]
mov al, byte [eax]
cmp al, 0x1d
jne 0x10050218
mov eax, dword [esp + 8]
test ecx, ecx
je 0x10051e98
mov edi, dword [esp + 0x10]
mov esi, dword [esp + 0x18]
mov ecx, dword [esp + 0x7c]
add eax, 0x14
mov edx, dword [esp + 0xb4]
jmp 0x1004cb5b
test ecx, ecx
jne 0x10051e94
cmp al, 0x1b
jne 0x10050256
movzx edx, word [esp + 0x94]
test edx, edx
je 0x1004d431
mov eax, dword [esp + 0x84]
add eax, 0x10
nop
test byte [eax], 1
jne 0x10051e94
inc ecx
add eax, 0x28
cmp ecx, edx
jl 0x10050240
jmp 0x1004d431
mov eax, dword [esp + 8]
cmp byte [eax], 0x1a
jne 0x1004d435
mov ax, word [eax + 0x10]
mov word [esi + 0xc], ax
jmp 0x1004d431
mov ecx, dword [esp + 8]
mov eax, dword [ecx + 0xc]
lea eax, [eax + eax*4]
test byte [esi + eax*8 + 0x10], 0x24
jne 0x100502e0
movups xmm0, xmmword [esi + eax*8]
mov dl, 0x43
lea ecx, [esp + 0x80]
push dword [esp + 0x4c]
movups xmmword [esp + 0x84], xmm0
movups xmm0, xmmword [esi + eax*8 + 0x10]
movups xmmword [esp + 0x94], xmm0
movq xmm0, qword [esi + eax*8 + 0x20]
movq qword [esp + 0xa4], xmm0
call fcn.1004c6b0
add esp, 4
test byte [esp + 0x90], 4
je 0x10051e94
mov edi, dword [esp + 0x80]
mov edx, dword [esp + 0x84]
jmp 0x100502ed
mov ecx, dword [esp + 8]
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 + 0x20], edx
mov eax, dword [esp + 8]
mov ecx, dword [eax + 4]
mov eax, dword [esp + 0x10]
mov eax, dword [eax + 0x60]
mov esi, dword [eax + ecx*4]
lea eax, [esp + 0xd4]
push eax
push edx
push edi
mov ecx, dword [esi + 0x2c]
xor edx, edx
mov dword [esp + 0xe0], 0
call fcn.10039a20
mov edx, eax
mov dword [esi + 0x40], edi
mov eax, dword [esp + 0x2c]
add esp, 0xc
mov dword [esi + 0x44], eax
mov word [esi + 2], 0
mov dword [esi + 0x20], 0
mov eax, dword [esp + 0xd4]
mov dword [esi + 0x24], eax
cmp dword [esp + 0xd4], 0
mov dword [esp + 0x14], edx
je 0x10050373
mov eax, dword [esp + 8]
cmp dword [eax + 8], 0
jne 0x10051e98
mov ecx, 0x17548
call fcn.100ce4b0
mov edx, eax
mov dword [esp + 0x14], edx
mov edi, dword [esp + 0x10]
test edx, edx
jne 0x100533b2
mov eax, dword [esp + 8]
mov esi, dword [esp + 0x18]
mov ecx, dword [esp + 0x7c]
add eax, 0x14
mov edx, dword [esp + 0xb4]
jmp 0x1004cb5b
mov ecx, dword [esp + 8]
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 0x100503c0
mov ecx, edx
call fcn.1004c930
mov edx, eax
jmp 0x100503c9
mov eax, 4
mov word [edx + 0x10], ax
mov eax, dword [esp + 8]
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 + 8]
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 + 8]
mov ecx, dword [esp + 0x7c]
add eax, 0x14
mov edx, dword [esp + 0xb4]
jmp 0x1004cb5b
mov ecx, dword [esp + 8]
xorps xmm0, xmm0
movlpd qword [esp + 0x38], xmm0
mov dword [esp + 0x30], 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 + 0x50], edx
test word [edx + 0x10], ax
je 0x1005044a
mov ecx, edx
call fcn.1004c930
mov dword [esp + 0x50], eax
jmp 0x10050453
mov eax, 4
mov word [edx + 0x10], ax
mov eax, dword [esp + 8]
mov ecx, dword [eax + 4]
mov eax, dword [edi + 0x60]
mov edi, dword [eax + ecx*4]
mov dword [esp + 0x20], edi
test byte [edi + 8], 2
jne 0x100504cb
mov ecx, dword [edi + 0x2c]
lea edx, [esp + 0x30]
call fcn.10039a00
mov edx, eax
mov dword [esp + 0x14], edx
test edx, edx
jne 0x1004e964
cmp dword [esp + 0x30], eax
je 0x10050498
mov dword [esp + 0x38], 1
mov dword [esp + 0x3c], eax
jmp 0x100504cb
mov ecx, dword [edi + 0x2c]
call fcn.10038fc0
mov dword [esp + 0x38], eax
mov dword [esp + 0x3c], edx
cmp edx, 0x7fffffff
jl 0x100504bd
jg 0x100504b7
cmp eax, 0xffffffff
jb 0x100504bd
or dword [edi + 8], 2
jmp 0x100504cb
add eax, 1
mov dword [esp + 0x38], eax
adc edx, 0
mov dword [esp + 0x3c], edx
mov ecx, dword [esp + 8]
mov eax, dword [ecx + 0xc]
test eax, eax
je 0x10050581
mov edx, dword [esp + 0x10]
mov edx, dword [edx + 0xd0]
test edx, edx
je 0x10050507
mov eax, dword [edx + 4]
test eax, eax
je 0x100504f9
nop
mov edx, eax
mov eax, dword [edx + 4]
test eax, eax
jne 0x100504f0
mov eax, dword [ecx + 0xc]
lea ecx, [eax + eax*4]
mov eax, dword [edx + 0xc]
lea esi, [eax + ecx*8]
jmp 0x1005050d
lea eax, [eax + eax*4]
lea esi, [esi + eax*8]
mov ecx, esi
call fcn.100428e0
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 0x10050540
cmp edx, 0x7fffffff
je 0x100505e5
mov eax, dword [esp + 0x20]
test byte [eax + 8], 2
jne 0x100505e5
mov ecx, dword [esp + 0x3c]
add edi, 1
adc edx, 0
cmp ecx, edx
jg 0x10050574
jl 0x10050566
mov eax, dword [esp + 0x38]
cmp eax, edi
jae 0x10050578
mov eax, edi
mov ecx, edx
mov dword [esp + 0x38], eax
mov dword [esp + 0x3c], ecx
jmp 0x10050578
mov eax, dword [esp + 0x38]
mov edi, dword [esp + 0x20]
mov dword [esi], eax
mov dword [esi + 4], ecx
test byte [edi + 8], 2
je 0x100505ef
xor esi, esi
nop dword [eax]
lea eax, [esp + 0x38]
push eax
push 8
call fcn.10021b50
mov eax, dword [esp + 0x44]
lea edx, [esp + 0x38]
mov ecx, dword [esp + 0x40]
and eax, 0x3fffffff
add ecx, 1
push edx
adc eax, 0
mov dword [esp + 0x44], ecx
push eax
mov dword [esp + 0x4c], eax
xor edx, edx
push ecx
mov ecx, dword [edi + 0x2c]
call fcn.10039a20
mov edx, eax
add esp, 0x14
mov dword [esp + 0x14], edx
test edx, edx
jne 0x1004e964
cmp dword [esp + 0x30], eax
jne 0x100505ef
inc esi
cmp esi, 0x64
jl 0x10050590
mov edx, 0xd
jmp 0x1004e960
mov edx, dword [esp + 0x50]
mov byte [edi + 3], 0
mov dword [edi + 0x20], 0
mov eax, dword [esp + 0x38]
mov ecx, dword [esp + 0x3c]
mov dword [edx], eax
mov dword [edx + 4], ecx
jmp 0x1004d431
mov ecx, dword [esp + 8]
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 + 0x50], edx
mov edx, dword [esp + 0x18]
mov esi, dword [eax + ecx*4]
mov ecx, dword [esp + 8]
mov dword [esp + 0x38], 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 + 0x50]
mov dword [esp + 0x20], eax
mov dword [esp + 0x88], edi
mov dword [esp + 0x8c], eax
jne 0x10050692
mov ecx, dword [esp + 0xc]
cmp dword [ecx + 0xfc], 0
je 0x1005068e
mov eax, dword [esp + 0xc]
movsx ecx, byte [esi + 1]
add ecx, ecx
mov eax, dword [eax + 0x10]
mov ecx, dword [eax + ecx*8]
mov dword [esp + 0x30], ecx
mov ecx, dword [esp + 8]
mov eax, dword [ecx + 0x10]
mov dword [esp + 0x50], eax
jmp 0x100506a2
mov ecx, dword [esp + 8]
mov dword [esp + 0x50], 0
mov dword [esp + 0x30], 0
test byte [ecx + 2], 1
je 0x100506cc
mov eax, dword [esp + 0x10]
add dword [eax + 0x28], 1
adc dword [eax + 0x2c], 0
test byte [ecx + 2], 0x20
mov eax, dword [esp + 0x20]
je 0x100506cc
mov ecx, dword [esp + 0xc]
mov dword [ecx + 0x28], edi
mov dword [ecx + 0x2c], eax
mov ecx, dword [esp + 8]
mov edi, dword [esp + 0x18]
movzx ecx, word [ecx + 2]
mov eax, dword [edi + edx*8 + 8]
mov dword [esp + 0x90], eax
mov eax, dword [edi + edx*8 + 0xc]
mov dword [esp + 0x9c], eax
test cl, 0x10
je 0x100506f4
mov edi, dword [esi + 0x24]
jmp 0x100506f6
xor edi, edi
mov eax, dword [esp + 0x18]
mov esi, 0x400
test word [eax + edx*8 + 0x10], si
mov esi, dword [esp + 0x38]
je 0x10050716
mov eax, dword [eax + edx*8]
mov dword [esp + 0xa0], eax
jmp 0x10050721
mov dword [esp + 0xa0], 0
and ecx, 0x8a
mov dword [esp + 0x80], 0
push edi
push ecx
mov ecx, dword [esi + 0x2c]
lea edx, [esp + 0x88]
call fcn.1003e130
mov edx, eax
mov byte [esi + 3], 0
add esp, 8
mov dword [esp + 0x14], edx
mov dword [esi + 0x20], 0
test edx, edx
jne 0x1004e964
mov eax, dword [esp + 0x50]
test eax, eax
je 0x1004d431
push dword [esp + 0x8c]
mov ecx, 0x17
push dword [esp + 0x8c]
push dword [eax]
mov eax, dword [esp + 0x14]
push dword [esp + 0x3c]
test byte [eax + 2], 4
mov eax, 0x12
cmovne eax, ecx
push eax
mov eax, dword [esp + 0x20]
push dword [eax + 0xf8]
mov eax, dword [eax + 0xfc]
call eax
add esp, 0x18
jmp 0x1004d431
mov edx, dword [esp + 8]
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 + 8]
mov eax, dword [eax + 0xc]
test eax, eax
je 0x100507e5
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 + 0x10]
jmp 0x100507f6
xorps xmm0, xmm0
movlpd qword [esp + 0x20], xmm0
mov eax, dword [esp + 0x24]
mov ecx, dword [esp + 0x20]
mov edx, dword [edx + 0x2c]
push eax
push ecx
mov ecx, dword [esi + 0x2c]
call fcn.1003e810
add esp, 8
jmp 0x1004dbbe
mov edx, dword [esp + 8]
cmp byte [edx + 1], 0xfb
mov eax, dword [edx + 8]
mov ecx, dword [edx + 4]
mov dword [esp + 0x50], eax
mov eax, dword [edi + 0x60]
mov esi, dword [eax + ecx*4]
jne 0x10050865
mov eax, dword [esp + 0xc]
cmp dword [eax + 0xfc], 0
je 0x10050865
movsx ecx, byte [esi + 1]
mov eax, dword [eax + 0x10]
add ecx, ecx
test byte [edx + 2], 2
mov edi, dword [edx + 0x10]
mov eax, dword [eax + ecx*8]
mov dword [esp + 0x20], eax
je 0x1005086f
cmp byte [esi + 4], 0
je 0x1005086f
mov ecx, dword [esi + 0x2c]
call fcn.10038fc0
mov dword [esi + 0x44], edx
mov edx, dword [esp + 8]
mov dword [esi + 0x40], eax
jmp 0x1005086f
mov dword [esp + 0x20], 0
xor edi, edi
mov dl, byte [edx + 2]
mov ecx, dword [esi + 0x2c]
call fcn.1003ec20
mov edx, eax
mov dword [esi + 0x20], 0
mov dword [esp + 0x14], edx
mov dword [esi + 0x24], 0
test edx, edx
jne 0x1004e964
test byte [esp + 0x50], 1
je 0x1004d431
mov eax, dword [esp + 0x10]
add dword [eax + 0x28], 1
adc dword [eax + 0x2c], edx
mov edx, dword [esp + 0xc]
mov eax, dword [edx + 0xfc]
test eax, eax
je 0x1004d431
test edi, edi
je 0x1004d431
test byte [edi + 0x1c], 0x80
jne 0x1004d431
push dword [esi + 0x44]
push dword [esi + 0x40]
push dword [edi]
push dword [esp + 0x2c]
push 9
push dword [edx + 0xf8]
call eax
add esp, 0x18
jmp 0x1004d431
push dword [edi + 0x2c]
mov ecx, dword [esp + 0x10]
push dword [edi + 0x28]
call fcn.100488e0
mov eax, dword [esp + 0x10]
add esp, 8
mov dword [edi + 0x28], 0
mov dword [edi + 0x2c], 0
mov ecx, dword [esp + 0x7c]
add eax, 0x14
mov edx, dword [esp + 0xb4]
jmp 0x1004cb5b
mov edx, dword [esp + 8]
mov eax, dword [edi + 0x60]
mov ecx, dword [edx + 4]
mov ecx, dword [eax + ecx*4]
mov eax, dword [edx + 0xc]
mov dword [esp + 0xe0], 0
lea eax, [eax + eax*4]
lea edx, [esi + eax*8]
lea eax, [esp + 0xe0]
push eax
mov eax, dword [esp + 0xc]
push dword [eax + 0x10]
call fcn.10057990
mov edx, eax
add esp, 8
mov dword [esp + 0x14], edx
test edx, edx
jne 0x1004e964
mov eax, dword [esp + 8]
cmp dword [esp + 0xe0], edx
jne 0x10051e98
mov ecx, dword [esp + 0x7c]
add eax, 0x14
mov edx, dword [esp + 0xb4]
jmp 0x1004cb5b
mov ecx, dword [esp + 8]
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.100578f0
mov edx, eax
mov dword [esp + 0x14], edx
test edx, edx
jne 0x1004e964
mov eax, dword [esp + 8]
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 + 8]
mov ecx, dword [esp + 0x7c]
add eax, 0x14
mov edx, dword [esp + 0xb4]
jmp 0x1004cb5b
mov edx, dword [esp + 8]
mov ecx, edi
call fcn.1004c950
mov ecx, dword [edi + 0x60]
mov esi, eax
mov eax, dword [esp + 8]
mov edx, dword [eax + 4]
mov ecx, dword [ecx + edx*4]
mov edi, dword [ecx + 0x2c]
mov ecx, edi
call fcn.10038ff0
mov ecx, dword [esp + 0xc]
cmp eax, dword [ecx + 0x78]
ja 0x10053536
push esi
mov edx, eax
mov ecx, edi
call fcn.100434e0
mov edx, eax
add esp, 4
mov dword [esp + 0x14], edx
test edx, edx
jne 0x1004e964
mov eax, dword [esp + 8]
cmp dword [eax + 0xc], edx
jne 0x1004d435
mov ecx, 0x4000
test word [esi + 0x10], cx
je 0x1004d435
mov ecx, esi
call fcn.10042550
mov edi, dword [esp + 0x10]
test eax, eax
jne 0x1004e942
mov eax, dword [esp + 8]
mov esi, dword [esp + 0x18]
mov ecx, dword [esp + 0x7c]
add eax, 0x14
mov edx, dword [esp + 0xb4]
jmp 0x1004cb5b
mov edx, dword [esp + 8]
mov ecx, edi
call fcn.1004c950
mov ecx, dword [esp + 8]
mov edi, eax
mov eax, dword [esp + 0x10]
mov edx, dword [ecx + 4]
mov ecx, dword [eax + 0x60]
mov esi, dword [ecx + edx*4]
cmp byte [esi + 2], 0
je 0x10050aa7
mov eax, 1
mov word [edi + 0x10], ax
jmp 0x1004d431
cmp byte [esi + 3], 0
je 0x10050acb
mov eax, dword [esi + 0x40]
mov edx, dword [esi + 0x44]
mov dword [esp + 0xbc], edx
mov dword [esp + 0xb8], eax
mov dword [edi], eax
mov dword [edi + 4], edx
jmp 0x1004d431
cmp byte [esi], 2
jne 0x10050b1b
mov ecx, dword [esi + 0x2c]
lea edx, [esp + 0xb8]
push edx
push ecx
mov esi, dword [ecx]
mov eax, dword [esi]
mov eax, dword [eax + 0x30]
call eax
mov ecx, dword [esp + 0x18]
add esp, 8
mov edx, esi
mov dword [esp + 0x14], eax
call fcn.10048b00
mov edx, dword [esp + 0x14]
test edx, edx
jne 0x1004e964
mov edx, dword [esp + 0xbc]
mov eax, dword [esp + 0xb8]
mov dword [edi], eax
mov dword [edi + 4], edx
jmp 0x1004d431
mov ecx, esi
call fcn.10046e50
mov edx, eax
mov dword [esp + 0x14], edx
test edx, edx
jne 0x1004e964
cmp byte [esi + 2], al
je 0x10050b43
mov eax, 1
mov word [edi + 0x10], ax
jmp 0x1004d431
mov ecx, dword [esi + 0x2c]
call fcn.10038fc0
mov dword [esp + 0xbc], edx
mov dword [esp + 0xb8], eax
mov dword [edi], eax
mov dword [edi + 4], edx
jmp 0x1004d431
mov edx, dword [esp + 8]
mov eax, dword [edi + 0x60]
mov edx, dword [edx + 4]
mov eax, dword [eax + edx*4]
test eax, eax
jne 0x10050ba0
push 3
push 1
mov ecx, edi
call fcn.1004c3c0
add esp, 8
test eax, eax
je 0x1004e942
or dword [eax + 8], 8
mov dword [eax + 0x24], 0
mov byte [eax + 4], 1
mov dword [eax + 0x2c], 0x10168969
cmp byte [eax], 0
mov byte [eax + 2], 1
mov dword [eax + 0x20], 0
jne 0x1004d431
mov ecx, dword [eax + 0x2c]
call fcn.10034790
mov eax, dword [esp + 8]
mov ecx, dword [esp + 0x7c]
add eax, 0x14
mov edx, dword [esp + 0xb4]
jmp 0x1004cb5b
cmp byte [esp + 0x2b], 0x89
mov ecx, dword [esp + 8]
mov eax, dword [edi + 0x60]
mov ecx, dword [ecx + 4]
mov esi, dword [eax + ecx*4]
mov edi, dword [esi + 0x2c]
mov dword [esp + 0xd0], 0
jne 0x10050c0b
mov ecx, edi
mov dword [esi + 0x24], 0xffffffff
call fcn.10038fb0
test eax, eax
jne 0x1004d431
cmp byte [edi], 0
jne 0x10050c38
test byte [edi + 1], 8
je 0x10050c38
mov dword [esp + 0xd0], 0
mov dword [esp + 0x14], 0
mov word [esi + 2], 0
mov dword [esi + 0x20], 0
jmp 0x10050c69
lea edx, [esp + 0xd0]
mov ecx, edi
call fcn.10039970
mov edx, eax
mov al, byte [esp + 0xd0]
mov dword [esp + 0x14], edx
mov byte [esi + 2], al
mov byte [esi + 3], 0
mov dword [esi + 0x20], 0
test edx, edx
jne 0x1004e960
mov eax, dword [esp + 8]
cmp dword [eax + 8], 0
jle 0x1004d435
cmp dword [esp + 0xd0], 0
jne 0x10051e98
mov edi, dword [esp + 0x10]
mov esi, dword [esp + 0x18]
mov ecx, dword [esp + 0x7c]
add eax, 0x14
mov edx, dword [esp + 0xb4]
jmp 0x1004cb5b
mov ecx, dword [esp + 8]
lea edx, [esp + 0xd8]
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.10039940
mov edx, eax
mov dword [esp + 0x14], edx
test edx, edx
jne 0x1004e964
cmp dword [esp + 0xd8], eax
jne 0x10051e94
mov ecx, esi
call fcn.1003a240
test edx, edx
jl 0x10050d0e
jg 0x10050cea
test eax, eax
jb 0x10050d0e
push edx
push eax
call fcn.10023a00
mov ecx, dword [esp + 0x10]
add esp, 8
cwde
cmp eax, dword [ecx + 0xc]
jge 0x10050d0e
mov dword [esp + 0xd8], 1
jmp 0x10052a3b
cmp dword [esp + 0xd8], 0
mov eax, dword [esp + 8]
jne 0x10051e98
mov esi, dword [esp + 0x18]
mov ecx, dword [esp + 0x7c]
add eax, 0x14
mov edx, dword [esp + 0xb4]
jmp 0x1004cb5b
inc dword [edi + 0xac]
mov ecx, dword [esp + 8]
mov eax, dword [edi + 0x60]
mov ecx, dword [ecx + 4]
mov esi, dword [eax + ecx*4]
mov dword [esp + 0xc8], 1
cmp byte [esi], 1
jne 0x10050d70
lea edx, [esp + 0xc8]
mov ecx, esi
call fcn.100577c0
mov edx, eax
mov dword [esp + 0x14], edx
jmp 0x10050dbb
mov edi, dword [esi + 0x2c]
mov ecx, edi
call fcn.10039690
mov edx, eax
mov dword [esp + 0x14], edx
test edx, edx
jne 0x10050d96
mov ecx, edi
mov dword [esp + 0xc8], eax
call fcn.100398f0
mov edx, eax
jmp 0x10050da8
cmp edx, 0x10
jne 0x10050dac
mov dword [esp + 0xc8], 1
xor edx, edx
mov dword [esp + 0x14], edx
mov edi, dword [esp + 0x10]
mov byte [esi + 3], 0
mov dword [esi + 0x20], 0
test edx, edx
jne 0x1004e964
mov al, byte [esp + 0xc8]
mov byte [esi + 2], al
mov eax, dword [esp + 8]
cmp dword [eax + 8], edx
jle 0x1004d435
cmp dword [esp + 0xc8], edx
jne 0x10051e98
mov esi, dword [esp + 0x18]
mov ecx, dword [esp + 0x7c]
add eax, 0x14
mov edx, dword [esp + 0xb4]
jmp 0x1004cb5b
mov ecx, dword [esp + 8]
mov eax, dword [edi + 0x60]
mov ecx, dword [ecx + 4]
mov esi, dword [eax + ecx*4]
mov edx, esi
mov ecx, dword [esp + 0xc]
call fcn.10057850
jmp 0x10050e4a
mov edx, dword [esp + 8]
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.1003a560
jmp 0x10050e4a
mov edx, dword [esp + 8]
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.1003a3f0
mov edx, eax
mov dword [esp + 0x14], edx
mov dword [esi + 0x20], 0
test edx, edx
jne 0x10050e72
mov byte [esi + 2], al
mov eax, dword [esp + 8]
movzx eax, word [eax + 2]
inc dword [edi + eax*4 + 0xa4]
jmp 0x10052be0
cmp edx, 0x65
jne 0x1004e964
mov dword [esp + 0x14], 0
mov byte [esi + 2], 1
jmp 0x10051872
mov ecx, dword [esp + 8]
mov eax, dword [edi + 0x60]
mov ecx, dword [ecx + 4]
mov edi, dword [eax + ecx*4]
mov ecx, dword [esp + 8]
test byte [ecx + 2], 1
mov eax, dword [ecx + 8]
lea eax, [eax + eax*4]
lea esi, [esi + eax*8]
je 0x10050eb8
mov eax, dword [esp + 0x10]
add dword [eax + 0x28], 1
adc dword [eax + 0x2c], 0
mov eax, 0x400
test word [esi + 0x10], ax
je 0x10050edc
mov ecx, esi
call fcn.100425e0
mov edx, eax
mov dword [esp + 0x14], edx
test edx, edx
jne 0x1004e964
mov ecx, dword [esp + 8]
mov eax, dword [esi + 0xc]
cdq
mov dword [esp + 0x88], eax
mov dword [esp + 0x8c], edx
mov eax, dword [esi + 8]
mov esi, dword [esp + 0x18]
mov dword [esp + 0x80], eax
mov eax, dword [ecx + 0xc]
lea eax, [eax + eax*4]
lea eax, [esi + eax*8]
mov dword [esp + 0x94], eax
mov ax, word [ecx + 0x10]
mov word [esp + 0x98], ax
movzx eax, word [ecx + 2]
test al, 0x10
je 0x10050f25
mov ecx, dword [edi + 0x24]
jmp 0x10050f27
xor ecx, ecx
push ecx
mov ecx, dword [edi + 0x2c]
lea edx, [esp + 0x84]
and eax, 0x8a
push eax
call fcn.1003e130
mov edx, eax
mov dword [edi + 0x20], 0
mov edi, dword [esp + 0x18]
add esp, 8
mov dword [esp + 0x14], edx
test edx, edx
jne 0x100533b2
mov eax, dword [esp + 8]
mov ecx, dword [esp + 0x7c]
add eax, 0x14
mov edx, dword [esp + 0xb4]
jmp 0x1004cb5b
mov edx, dword [esp + 8]
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 0x10050fa6
mov ecx, esi
call fcn.100425e0
mov edx, eax
mov dword [esp + 0x14], edx
test edx, edx
jne 0x1004e964
mov edx, esi
mov ecx, edi
call fcn.100564f0
mov edi, dword [esp + 0x10]
mov edx, eax
mov dword [esp + 0x14], edx
test edx, edx
jne 0x100533b2
mov eax, dword [esp + 8]
mov esi, dword [esp + 0x18]
mov ecx, dword [esp + 0x7c]
add eax, 0x14
mov edx, dword [esp + 0xb4]
jmp 0x1004cb5b
mov edx, dword [esp + 8]
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 + 0x80], eax
mov ax, word [edx + 0xc]
mov word [esp + 0x94], ax
mov eax, dword [edx + 8]
lea edx, [esp + 0x80]
mov byte [esp + 0x96], 0
lea eax, [eax + eax*4]
lea eax, [ecx + eax*8]
mov ecx, edi
mov dword [esp + 0x84], eax
lea eax, [esp + 0x110]
push eax
call fcn.10039cd0
mov edx, eax
add esp, 4
mov dword [esp + 0x14], edx
test edx, edx
jne 0x1004e964
cmp dword [esp + 0x110], eax
jne 0x10051067
mov dl, 4
mov ecx, edi
call fcn.1003ec20
mov edx, eax
mov dword [esp + 0x14], edx
test edx, edx
jne 0x1004e964
jmp 0x10051083
mov eax, dword [esp + 8]
cmp word [eax + 2], 0
je 0x10051087
mov ecx, dword [esp + 0xc]
call fcn.10070200
test eax, eax
je 0x1005355a
mov eax, dword [esp + 8]
mov edi, dword [esp + 0x10]
mov dword [esi + 0x20], 0
mov dword [esi + 0x24], 0
mov esi, dword [esp + 0x18]
mov ecx, dword [esp + 0x7c]
add eax, 0x14
mov edx, dword [esp + 0xb4]
jmp 0x1004cb5b
mov edx, dword [esp + 8]
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 0x100510e0
mov ecx, esi
call fcn.10046e10
mov edx, eax
mov dword [esp + 0x14], edx
test edx, edx
jne 0x1004e964
mov edx, dword [esp + 8]
jmp 0x100510e8
mov dword [esp + 0x14], 0
cmp byte [esi + 2], 0
jne 0x100511b7
mov ecx, dword [esp + 0xc]
lea eax, [esp + 0xf0]
xorps xmm0, xmm0
movlpd qword [esp + 0xf0], xmm0
mov edx, dword [esi + 0x2c]
push eax
call fcn.10048600
mov edx, eax
add esp, 4
mov dword [esp + 0x14], edx
test edx, edx
jne 0x1004e964
mov eax, dword [esp + 8]
cmp byte [eax], 0x8d
jne 0x10051180
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 + 0xf0]
mov ecx, dword [esp + 0xf4]
mov dword [edx + 0x40], eax
mov eax, dword [esp + 8]
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 + 8]
mov dword [edx + 0x28], esi
mov esi, dword [esp + 0x18]
mov ecx, dword [esp + 0x7c]
add eax, 0x14
mov edx, dword [esp + 0xb4]
jmp 0x1004cb5b
mov edx, eax
mov ecx, edi
call fcn.1004c950
mov ecx, dword [esp + 0xf0]
mov edx, dword [esp + 0xf4]
mov esi, dword [esp + 0x18]
mov dword [eax], ecx
mov dword [eax + 4], edx
mov eax, dword [esp + 8]
mov ecx, dword [esp + 0x7c]
add eax, 0x14
mov edx, dword [esp + 0xb4]
jmp 0x1004cb5b
mov eax, dword [edx + 8]
mov esi, dword [esp + 0x18]
lea eax, [eax + eax*4]
lea ecx, [esi + eax*8]
call fcn.10042dc0
mov eax, dword [esp + 8]
mov ecx, dword [esp + 0x7c]
add eax, 0x14
mov edx, dword [esp + 0xb4]
jmp 0x1004cb5b
mov ecx, dword [esp + 8]
mov eax, dword [edi + 0x60]
mov ecx, dword [ecx + 4]
mov ecx, dword [eax + ecx*4]
cmp byte [ecx + 3], 0
je 0x100518fd
call fcn.10046da0
mov edx, eax
mov dword [esp + 0x14], edx
test edx, edx
jne 0x1004e964
mov eax, dword [esp + 8]
mov ecx, dword [esp + 0x7c]
add eax, 0x14
mov edx, dword [esp + 0xb4]
jmp 0x1004cb5b
mov edx, dword [esp + 8]
mov eax, dword [edi + 0x60]
cmp byte [esp + 0x2b], 0x2a
mov ecx, dword [edx + 4]
mov ecx, dword [eax + ecx*4]
mov eax, dword [ecx + 0x30]
mov dword [esp + 0x80], eax
mov ax, word [edx + 0x10]
mov word [esp + 0x94], ax
sbb al, al
mov byte [esp + 0x96], al
mov eax, dword [edx + 0xc]
lea eax, [eax + eax*4]
lea eax, [esi + eax*8]
mov dword [esp + 0x84], eax
mov edi, dword [ecx + 0x2c]
mov ecx, edi
call fcn.10038f70
mov esi, dword [edi + 0x2c]
test esi, esi
je 0x10053578
cmp esi, 0x7fffffff
ja 0x10053578
mov edx, dword [esp + 0xc]
lea ecx, [esp + 0x188]
push 0
call fcn.10042da0
add esp, 4
lea eax, [esp + 0x188]
mov edx, esi
mov ecx, edi
push eax
call fcn.100434e0
mov edx, eax
add esp, 4
mov dword [esp + 0x14], edx
test edx, edx
jne 0x1004e964
mov edx, dword [esp + 0x190]
mov ecx, dword [esp + 0x194]
push eax
lea eax, [esp + 0x84]
push eax
call fcn.10047880
add esp, 8
lea ecx, [esp + 0x188]
mov esi, eax
call fcn.10042870
mov ecx, dword [esp + 8]
mov eax, dword [esp + 8]
mov dl, byte [ecx]
lea ecx, [esi + 1]
neg esi
test dl, 1
cmovne esi, ecx
test esi, esi
jg 0x10051e98
mov edi, dword [esp + 0x10]
mov esi, dword [esp + 0x18]
mov ecx, dword [esp + 0x7c]
add eax, 0x14
mov edx, dword [esp + 0xb4]
jmp 0x1004cb5b
mov edx, dword [esp + 8]
mov ecx, edi
call fcn.1004c950
mov edx, dword [esp + 0xc]
mov esi, eax
mov eax, 1
mov word [esi + 0x10], ax
mov ecx, dword [edx + 0xcc]
inc ecx
cmp dword [edx + 0xc0], ecx
jg 0x100535a0
mov eax, dword [esp + 8]
lea ecx, [esp + 0xdc]
push ecx
mov ecx, dword [edx + 0x10]
mov edx, dword [esp + 0xc]
mov eax, dword [eax + 0xc]
mov dword [esp + 0x24], eax
add eax, eax
mov dword [esp + 0xe0], 0
mov edx, dword [edx + 4]
mov ecx, dword [ecx + eax*8 + 4]
call fcn.1003fbd0
mov dword [esp + 0x18], eax
add esp, 4
mov eax, 4
mov word [esi + 0x10], ax
mov eax, dword [esp + 0xdc]
cdq
mov dword [esi + 4], edx
mov edx, dword [esp + 0x14]
mov dword [esi], eax
test edx, edx
jne 0x1004e964
mov eax, dword [esp + 0xdc]
test eax, eax
je 0x1004d431
mov ecx, dword [esp + 8]
mov edx, dword [esp + 0x20]
push dword [ecx + 4]
mov ecx, dword [esp + 0x10]
push eax
call fcn.10073f40
mov cl, byte [esp + 0x28]
add esp, 8
mov eax, dword [esp + 8]
inc cl
mov esi, dword [esp + 0x18]
mov byte [esp + 0x6f], cl
mov ecx, dword [esp + 0x7c]
add eax, 0x14
mov edx, dword [esp + 0xb4]
jmp 0x1004cb5b
mov edx, dword [esp + 8]
lea eax, [esp + 0x20]
mov ecx, dword [esp + 0xc]
xorps xmm0, xmm0
push eax
movlpd qword [esp + 0x24], 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.1003f850
mov edx, eax
add esp, 4
mov eax, dword [esp + 8]
mov dword [esp + 0x14], edx
cmp dword [eax + 0xc], 0
je 0x10051460
mov edx, dword [esp + 0x20]
add dword [edi + 0x28], edx
mov eax, dword [esp + 0x24]
adc dword [edi + 0x2c], eax
mov eax, dword [esp + 8]
mov eax, dword [eax + 0xc]
test eax, eax
jle 0x10051458
lea ecx, [eax + eax*4]
add dword [esi + ecx*8], edx
mov eax, dword [esp + 0x24]
adc dword [esi + ecx*8 + 4], eax
mov eax, dword [esp + 8]
mov edx, dword [esp + 0x14]
test edx, edx
jne 0x1004e964
mov ecx, dword [esp + 0x7c]
add eax, 0x14
mov edx, dword [esp + 0xb4]
jmp 0x1004cb5b
mov ecx, dword [esp + 8]
mov eax, dword [edi + 0x60]
mov ecx, dword [ecx + 4]
mov ecx, dword [eax + ecx*4]
cmp byte [ecx], 1
jne 0x100514b0
mov edx, dword [ecx + 0x2c]
mov ecx, dword [esp + 0xc]
call fcn.10055780
mov eax, dword [esp + 8]
mov ecx, dword [esp + 0x7c]
add eax, 0x14
mov edx, dword [esp + 0xb4]
jmp 0x1004cb5b
mov ecx, dword [ecx + 0x2c]
call fcn.1003f900
mov edx, eax
mov dword [esp + 0x14], edx
test edx, edx
jne 0x1004e964
mov eax, dword [esp + 8]
mov ecx, dword [esp + 0x7c]
add eax, 0x14
mov edx, dword [esp + 0xb4]
jmp 0x1004cb5b
mov edx, dword [esp + 8]
mov ecx, edi
call fcn.1004c950
mov edx, dword [esp + 8]
mov esi, eax
mov eax, dword [esp + 0xc]
mov dword [esp + 0xe4], 0
mov ecx, dword [edx + 4]
push dword [edx + 0xc]
shl ecx, 4
lea edx, [esp + 0xe8]
add ecx, dword [eax + 0x10]
mov ecx, dword [ecx + 4]
call fcn.1003f530
mov edx, eax
add esp, 4
mov dword [esp + 0x14], edx
test edx, edx
jne 0x1004e964
mov eax, dword [esp + 0xe4]
mov dword [esi], eax
mov eax, dword [esp + 8]
mov dword [esi + 4], edx
mov esi, dword [esp + 0x18]
mov ecx, dword [esp + 0x7c]
add eax, 0x14
mov edx, dword [esp + 0xb4]
jmp 0x1004cb5b
mov ecx, dword [esp + 0xc]
mov eax, dword [esp + 8]
push 0
push 0
inc byte [ecx + 0x60]
push 0
push dword [eax + 0x10]
push ecx
call fcn.10089af0
mov esi, dword [esp + 0x20]
mov edx, eax
add esp, 0x14
mov dword [esp + 0x14], edx
dec byte [esi + 0x60]
test edx, edx
jne 0x1004e968
mov eax, dword [esp + 8]
mov esi, dword [esp + 0x18]
mov ecx, dword [esp + 0x7c]
add eax, 0x14
mov edx, dword [esp + 0xb4]
jmp 0x1004cb5b
mov ecx, dword [esp + 8]
cmp dword [ecx + 0x10], 0
mov esi, dword [ecx + 4]
jne 0x100515fa
mov eax, dword [esp + 0xc]
mov ecx, esi
add ecx, ecx
mov eax, dword [eax + 0x10]
push dword [eax + ecx*8 + 0xc]
call fcn.10079430
mov ecx, dword [esp + 0x10]
add esp, 4
mov eax, dword [esp + 8]
mov edx, esi
and dword [ecx + 0x18], 0xffffffef
movzx eax, word [eax + 2]
push eax
lea eax, [edi + 0x7c]
push eax
call fcn.10091dc0
mov ecx, dword [esp + 0x14]
mov edx, eax
add esp, 8
mov dword [esp + 0x14], edx
or dword [ecx + 0x18], 1
and dword [edi + 0x98], 0xfffffffc
jmp 0x100516e6
mov ecx, dword [esp + 0xc]
lea eax, [edi + 0x7c]
mov dword [esp + 0x80], ecx
mov dword [esp + 0x88], esi
add esi, esi
mov dword [esp + 0x84], eax
mov ecx, dword [ecx + 0x10]
mov dword [esp + 0x90], 0
mov ecx, dword [ecx + esi*8 + 4]
call fcn.10036190
mov ecx, dword [esp + 0xc]
mov dword [esp + 0x98], eax
mov eax, dword [esp + 8]
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.10021460
mov esi, eax
add esp, 0x14
test esi, esi
je 0x100535b1
mov eax, dword [esp + 0xc]
lea ecx, [esp + 0x80]
push 0
push ecx
push fcn.10091b30
push esi
push eax
mov byte [eax + 0xb1], 1
mov dword [esp + 0xa0], 0
mov dword [esp + 0xa8], 0
call fcn.10089af0
add esp, 0x14
mov dword [esp + 0x14], eax
test eax, eax
jne 0x100516cc
mov eax, dword [esp + 0x8c]
mov dword [esp + 0x14], eax
test eax, eax
jne 0x100516cc
cmp dword [esp + 0x94], eax
jne 0x100516cc
mov ecx, 0x17b44
call fcn.100ce4b0
mov dword [esp + 0x14], eax
mov ecx, dword [esp + 0xc]
mov edx, esi
call fcn.1001e7d0
mov edx, dword [esp + 0xc]
mov byte [edx + 0xb1], 0
mov edx, dword [esp + 0x14]
test edx, edx
je 0x1004cfff
mov ecx, dword [esp + 0xc]
call fcn.1006fa80
mov edx, dword [esp + 0x14]
cmp edx, 7
je 0x1004e942
jmp 0x1004e960
mov ecx, dword [esp + 8]
mov edx, dword [ecx + 4]
mov ecx, dword [esp + 0xc]
call fcn.1006d320
mov edx, eax
mov dword [esp + 0x14], edx
test edx, edx
jne 0x1004e964
mov eax, dword [esp + 8]
mov ecx, dword [esp + 0x7c]
add eax, 0x14
mov edx, dword [esp + 0xb4]
jmp 0x1004cb5b
mov ecx, dword [esp + 8]
push dword [ecx + 0x10]
mov edx, dword [ecx + 4]
mov ecx, dword [esp + 0x10]
call fcn.10070020
mov eax, dword [esp + 0xc]
add esp, 4
mov ecx, dword [esp + 0x7c]
add eax, 0x14
mov edx, dword [esp + 0xb4]
jmp 0x1004cb5b
mov ecx, dword [esp + 8]
push dword [ecx + 0x10]
mov edx, dword [ecx + 4]
mov ecx, dword [esp + 0x10]
call fcn.1006f8b0
mov eax, dword [esp + 0xc]
add esp, 4
mov ecx, dword [esp + 0x7c]
add eax, 0x14
mov edx, dword [esp + 0xb4]
jmp 0x1004cb5b
mov ecx, dword [esp + 8]
push dword [ecx + 0x10]
mov edx, dword [ecx + 4]
mov ecx, dword [esp + 0x10]
call fcn.100a4170
mov eax, dword [esp + 0xc]
add esp, 4
mov ecx, dword [esp + 0x7c]
add eax, 0x14
mov edx, dword [esp + 0xb4]
jmp 0x1004cb5b
mov edx, dword [esp + 8]
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 + 0xcc]
push eax
lea eax, [esp + 0x118]
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 + 0x1c]
push eax
movzx eax, word [edx + 2]
add eax, eax
mov edx, dword [ecx + 0x10]
mov edx, dword [edx + eax*8 + 4]
call fcn.100409b0
add esp, 0x14
mov dword [esp + 0x14], eax
mov ecx, edi
call fcn.10042dc0
mov eax, dword [esp + 0x114]
test eax, eax
je 0x10051862
cmp dword [esp + 0x14], 0
jne 0x100535bf
mov ecx, dword [esp + 0x18]
dec eax
cdq
push fcn.1001e710
push 1
sub dword [ecx + esi*8], eax
push 0xffffffffffffffff
sbb dword [ecx + esi*8 + 4], edx
mov ecx, edi
mov edx, dword [esp + 0xd8]
push 0xffffffffffffffff
call fcn.100430d0
add esp, 0x10
movzx edx, byte [esp + 0x4c]
mov ecx, edi
call fcn.10042240
mov edi, dword [esp + 0x10]
mov esi, dword [esp + 0x18]
mov edx, dword [esp + 0xc]
cmp dword [edx + 0x128], 0
jne 0x10053849
mov eax, dword [esp + 0xb4]
cmp eax, dword [esp + 0x78]
jb 0x1004d431
mov ecx, dword [esp + 0x74]
ja 0x100518b0
cmp dword [esp + 0x7c], ecx
jb 0x1004d431
nop dword [eax + eax]
mov eax, dword [edx + 0x174]
test eax, eax
je 0x1004d431
add ecx, dword [edx + 0x17c]
push dword [edx + 0x178]
adc dword [esp + 0x7c], 0
mov dword [esp + 0x78], ecx
call eax
add esp, 4
test eax, eax
jne 0x1005334b
mov eax, dword [esp + 0xb4]
mov edx, dword [esp + 0xc]
mov ecx, dword [esp + 0x74]
cmp eax, dword [esp + 0x78]
ja 0x100518b0
jb 0x100518fd
cmp dword [esp + 0x7c], ecx
jae 0x100518b0
mov eax, dword [esp + 8]
mov ecx, dword [esp + 0x7c]
add eax, 0x14
mov edx, dword [esp + 0xb4]
jmp 0x1004cb5b
mov ecx, dword [esp + 8]
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 0x1005193d
mov ecx, esi
call fcn.10042ef0
test eax, eax
jne 0x1004e93e
mov eax, dword [esp + 0x18]
mov ecx, dword [esi + 8]
push dword [eax + edi*8 + 4]
push dword [eax + edi*8]
call fcn.1002b410
add esp, 8
jmp 0x1004d431
mov ecx, dword [esp + 8]
mov eax, dword [ecx + 4]
lea eax, [eax + eax*4]
test byte [esi + eax*8 + 0x10], 0x10
lea esi, [esi + eax*8]
je 0x100519ab
mov ecx, dword [esi + 8]
lea edx, [esp + 0x128]
call fcn.1002b720
test eax, eax
je 0x100519ab
mov eax, dword [esp + 8]
push dword [esp + 0x12c]
mov esi, dword [esp + 0x1c]
push dword [esp + 0x12c]
mov eax, dword [eax + 0xc]
lea eax, [eax + eax*4]
lea ecx, [esi + eax*8]
call fcn.10042e60
add esp, 8
jmp 0x10051876
mov ecx, esi
call fcn.10042dc0
jmp 0x10052be0
mov ecx, dword [esp + 8]
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 + 0x20], eax
jne 0x100519eb
mov ecx, esi
call fcn.10042ef0
test eax, eax
jne 0x1004e93e
mov eax, dword [esp + 0x20]
test eax, eax
je 0x10051a15
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.1002b7b0
add esp, 8
test eax, eax
jne 0x10051e94
mov eax, dword [esp + 0x20]
test eax, eax
js 0x1004d431
jmp 0x1005193d
mov ecx, dword [esp + 8]
mov eax, dword [ecx + 0xc]
mov edi, dword [ecx + 0x10]
mov dword [esp + 0x38], edi
lea eax, [eax + eax*4]
lea ecx, [esi + eax*8]
mov eax, dword [esp + 8]
mov dword [esp + 0x30], ecx
cmp word [eax + 2], 0
je 0x10051a68
mov eax, dword [esp + 0x10]
mov ecx, dword [edi + 0x14]
mov eax, dword [eax + 0xd0]
test eax, eax
je 0x10051a64
cmp dword [eax + 0x18], ecx
je 0x1004e292
mov eax, dword [eax + 4]
test eax, eax
jne 0x10051a54
mov ecx, dword [esp + 0x30]
mov eax, dword [esp + 0x10]
mov edx, dword [esp + 0xc]
mov eax, dword [eax + 0xd8]
cmp eax, dword [edx + 0xa0]
jge 0x100535d7
test byte [ecx + 0x10], 0x10
jne 0x10051c59
mov ecx, dword [edi + 0xc]
mov eax, dword [edi + 8]
add eax, ecx
test ecx, ecx
lea edi, [eax + 1]
cmovne edi, eax
lea eax, [edi + edi*4]
lea ecx, [ecx + eax*2]
mov eax, dword [esp + 0x38]
mov eax, dword [eax + 4]
add eax, 7
mov eax, eax
test eax, eax
jns 0x10051ab5
add eax, 7
sar eax, 3
lea eax, [eax + ecx*4]
mov ecx, dword [esp + 0xc]
add eax, 0x58
mov dword [esp + 0x20], eax
cdq
push edx
push eax
call fcn.1001ec00
mov esi, eax
add esp, 8
test esi, esi
je 0x1004e93e
mov ecx, dword [esp + 0x30]
call fcn.10042850
mov ecx, dword [esp + 0x30]
mov eax, 0x1010
mov edx, dword [esp + 8]
sub edx, dword [esp + 0x58]
mov word [ecx + 0x10], ax
mov eax, dword [esp + 0x20]
mov dword [ecx + 0xc], eax
mov eax, dword [esp + 0x10]
mov dword [ecx + 8], esi
mov dword [ecx + 0x24], 0x100452a0
mov ecx, dword [esp + 0x38]
mov dword [esi], eax
mov dword [esi + 0x3c], edi
mov eax, dword [ecx + 0xc]
mov dword [esi + 0x40], eax
mov eax, 0x66666667
imul edx
sar edx, 3
mov eax, edx
shr eax, 0x1f
add eax, edx
mov edx, dword [esp + 0x10]
mov dword [esi + 0x30], eax
mov eax, dword [edx + 0x58]
mov dword [esi + 0xc], eax
mov eax, dword [edx + 0x14]
mov dword [esi + 0x38], eax
mov eax, dword [edx + 0x60]
mov dword [esi + 0x10], eax
mov eax, dword [edx + 0x18]
mov dword [esi + 0x2c], eax
mov eax, dword [edx + 0x68]
mov dword [esi + 8], eax
mov eax, dword [edx + 0x6c]
mov dword [esi + 0x34], eax
mov eax, dword [ecx + 0x14]
mov dword [esi + 0x18], eax
lea eax, [edi*4 + 0xb]
add eax, edi
lea ecx, [esi + eax*8]
lea eax, [esi + 0x58]
cmp eax, ecx
je 0x10051b8a
mov edx, dword [esp + 0xc]
xor edi, edi
mov dword [eax + 0x14], edx
mov word [eax + 0x10], di
add eax, 0x28
cmp eax, ecx
jne 0x10051b76
mov edx, dword [esp + 0x10]
mov edi, dword [esp + 0x38]
inc dword [edx + 0xd8]
mov eax, dword [edx + 0xd0]
mov ecx, dword [esp + 0xc]
mov dword [esi + 4], eax
mov eax, dword [ecx + 0x28]
mov ecx, dword [ecx + 0x2c]
mov dword [esi + 0x20], eax
mov dword [esi + 0x24], ecx
mov eax, dword [edx + 0x28]
mov ecx, dword [edx + 0x2c]
mov dword [esi + 0x48], eax
mov dword [esi + 0x4c], ecx
mov eax, dword [edx]
mov ecx, dword [eax + 0x68]
mov eax, dword [eax + 0x6c]
mov dword [esi + 0x54], eax
mov dword [esi + 0x50], ecx
mov eax, dword [edx + 0xe4]
mov dword [esi + 0x28], eax
lea eax, [esi + 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], esi
mov ecx, dword [esi + 0x3c]
mov dword [esp + 0x18], eax
mov dword [edx + 0x14], ecx
movzx eax, word [esi + 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 [edi + 0xc]
lea ecx, [ecx + eax*4]
mov dword [esi + 0x14], ecx
mov eax, dword [edi + 4]
add eax, 7
cdq
and edx, 7
add eax, edx
sar eax, 3
push eax
push 0
push ecx
call fcn.10129b70
mov eax, dword [esp + 0x1c]
add esp, 0xc
mov ecx, dword [edi]
mov dword [esp + 0x58], ecx
mov dword [eax + 0x68], ecx
mov eax, dword [edi + 4]
lea edx, [ecx - 0x14]
mov edi, dword [esp + 0x10]
mov dword [esp + 8], edx
mov dword [edi + 0x6c], eax
jmp 0x10051872
mov esi, dword [ecx + 8]
mov edx, dword [esp + 0x10]
jmp 0x10051b8e
mov edx, dword [esp + 8]
mov ecx, edi
call fcn.1004c950
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 + 0xc]
add ecx, dword [edx + 4]
lea ecx, [ecx + ecx*4]
lea edx, [eax + ecx*8]
mov ecx, esi
call fcn.10043010
mov eax, dword [esp + 0xc]
add esp, 4
mov esi, dword [esp + 0x18]
mov ecx, dword [esp + 0x7c]
add eax, 0x14
mov edx, dword [esp + 0xb4]
jmp 0x1004cb5b
mov eax, dword [esp + 0xc]
mov eax, dword [eax + 0x20]
and eax, 0x80000
or eax, 0
mov eax, dword [esp + 8]
je 0x10051d03
mov eax, dword [eax + 8]
mov esi, dword [esp + 0xc]
cdq
add dword [esi + 0x208], eax
mov eax, dword [esp + 8]
adc dword [esi + 0x20c], edx
mov esi, dword [esp + 0x18]
mov ecx, dword [esp + 0x7c]
add eax, 0x14
mov edx, dword [esp + 0xb4]
jmp 0x1004cb5b
cmp dword [eax + 4], 0
mov eax, dword [eax + 8]
cdq
je 0x10051d34
mov ecx, dword [esp + 0xc]
add dword [ecx + 0x200], eax
mov eax, dword [esp + 8]
adc dword [ecx + 0x204], edx
mov ecx, dword [esp + 0x7c]
add eax, 0x14
mov edx, dword [esp + 0xb4]
jmp 0x1004cb5b
add dword [edi + 0x40], eax
mov eax, dword [esp + 8]
adc dword [edi + 0x44], edx
mov ecx, dword [esp + 0x7c]
add eax, 0x14
mov edx, dword [esp + 0xb4]
jmp 0x1004cb5b
cmp dword [eax + 4], 0
je 0x10051d6f
mov edx, dword [esp + 0xc]
mov eax, dword [edx + 0x200]
or eax, dword [edx + 0x204]
jne 0x100518fd
jmp 0x10051d7f
mov eax, dword [edi + 0x40]
or eax, dword [edi + 0x44]
jne 0x100518fd
mov edx, dword [esp + 0xc]
mov eax, dword [edx + 0x208]
or eax, dword [edx + 0x20c]
mov eax, dword [esp + 8]
je 0x10052a3f
mov ecx, dword [esp + 0x7c]
add eax, 0x14
mov edx, dword [esp + 0xb4]
jmp 0x1004cb5b
mov edx, dword [edi + 0xd0]
test edx, edx
je 0x10051ddb
mov eax, dword [edx + 4]
test eax, eax
je 0x10051dc9
nop dword [eax]
mov edx, eax
mov eax, dword [edx + 4]
test eax, eax
jne 0x10051dc0
mov eax, dword [esp + 8]
mov eax, dword [eax + 4]
lea ecx, [eax + eax*4]
mov eax, dword [edx + 0xc]
lea edi, [eax + ecx*8]
jmp 0x10051de8
mov ecx, dword [esp + 8]
mov eax, dword [ecx + 4]
lea eax, [eax + eax*4]
lea edi, [esi + eax*8]
mov ecx, edi
call fcn.100428e0
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 + 8]
mov eax, dword [eax + 8]
lea eax, [eax + eax*4]
lea esi, [esi + eax*8]
mov ecx, esi
call fcn.100428e0
mov cx, word [esi + 0x10]
and cx, word [esp + 0x118]
or cx, 4
mov dword [esi], eax
mov dword [esi + 4], edx
mov word [esi + 0x10], cx
cmp dword [edi + 4], edx
jg 0x1004d431
jl 0x10050b59
cmp dword [edi], eax
jae 0x1004d431
mov dword [edi], eax
mov dword [edi + 4], edx
jmp 0x1004d431
mov ecx, dword [esp + 8]
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 0x1004d431
jg 0x10051e7d
test ecx, ecx
je 0x1004d431
mov eax, dword [esp + 8]
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 + 8]
mov eax, dword [eax + 8]
mov ecx, dword [esp + 0x58]
mov edi, dword [esp + 0x10]
mov esi, dword [esp + 0x18]
lea eax, [eax + eax*4]
lea eax, [eax - 5]
lea eax, [ecx + eax*4]
mov ecx, dword [esp + 0x7c]
add eax, 0x14
mov edx, dword [esp + 0xb4]
jmp 0x1004cb5b
mov ecx, dword [esp + 8]
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 + 0x20], edx
lea ecx, [eax + eax*4]
mov eax, dword [esp + 0x10]
mov eax, dword [eax + 0x58]
lea esi, [eax + ecx*8]
mov eax, 0x9000
test word [esi + 0x10], ax
je 0x10051f01
mov ecx, esi
call fcn.1004c930
mov edx, dword [esp + 0x20]
mov esi, eax
jmp 0x10051f0a
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 + 0x100], ecx
mov dword [esp + 0x104], eax
test eax, eax
jl 0x10051f80
jg 0x10051f2d
test ecx, ecx
je 0x10051f80
mov ecx, dword [esp + 0x18]
mov eax, dword [ecx + edx*8]
mov ecx, dword [ecx + edx*8 + 4]
test ecx, ecx
jl 0x10051f42
jg 0x10051f53
test eax, eax
jne 0x10051f53
xorps xmm0, xmm0
movlpd qword [esp + 0x20], xmm0
mov ecx, dword [esp + 0x24]
mov eax, dword [esp + 0x20]
push ecx
push eax
lea ecx, [esp + 0x108]
call fcn.10023800
add esp, 8
test eax, eax
jne 0x10051f80
mov eax, dword [esp + 0x100]
mov ecx, dword [esp + 0x104]
mov dword [esi], eax
mov dword [esi + 4], ecx
jmp 0x1004d431
mov dword [esi], 0xffffffff
mov dword [esi + 4], 0xffffffff
jmp 0x1004d431
mov ecx, dword [esp + 8]
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 0x1004cfff
test edx, edx
jl 0x10052a3b
jg 0x10051fc3
test ecx, ecx
je 0x10052a3b
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 0x10052a3b
mov ecx, dword [esp + 8]
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 0x10052005
jg 0x10051ff8
test eax, eax
je 0x10052005
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 + 8]
je 0x10052a3f
mov ecx, dword [esp + 0x7c]
add eax, 0x14
mov edx, dword [esp + 0xb4]
jmp 0x1004cb5b
mov ecx, dword [esp + 8]
push 0
movzx eax, word [ecx + 2]
mov ecx, dword [esp + 0x10]
mov dword [esp + 0x24], eax
lea eax, [eax*4 + 0x44]
push eax
call fcn.1001ec70
mov esi, eax
add esp, 8
test esi, esi
je 0x1004e942
mov eax, dword [esp + 0x20]
mov edx, dword [esp + 0xc]
add eax, 7
push 1
mov dword [esi + 8], 0
lea ecx, [esi + eax*4]
mov dword [esi], ecx
call fcn.10042da0
mov ecx, dword [esp + 0xc]
add esp, 4
mov eax, dword [ecx + 0x10]
sub ecx, dword [esp + 0x58]
mov dword [esi + 4], eax
mov eax, 0x66666667
imul ecx
mov ecx, dword [esp + 8]
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 + 0x4c]
mov byte [esi + 0x18], al
mov eax, dword [esp + 0x20]
mov dword [esi + 0x14], 0
mov byte [esi + 0x1a], al
mov word [ecx], 0xf1a3
mov dword [ecx + 0x10], esi
jmp 0x100520c1
mov ecx, dword [esp + 8]
mov esi, dword [ecx + 0x10]
mov eax, dword [ecx + 0xc]
mov ecx, dword [esp + 0x18]
mov dword [esp + 0x20], esi
lea eax, [eax + eax*4]
lea edi, [ecx + eax*8]
mov dword [esp + 0x50], edi
cmp dword [esi + 8], edi
je 0x10052116
movzx ecx, byte [esi + 0x1a]
sub ecx, 1
mov dword [esi + 8], edi
js 0x10052116
mov edi, dword [esp + 8]
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 0x100520f8
mov esi, dword [esp + 0x20]
mov edi, dword [esp + 0x50]
inc dword [edi + 0xc]
lea eax, [esi + 0x1c]
mov edi, dword [esp + 8]
movzx edx, byte [esi + 0x1a]
mov ecx, dword [esi + 4]
push eax
cmp dword [edi + 4], 0
push edx
push esi
je 0x10052135
mov eax, dword [ecx + 0x1c]
jmp 0x10052138
mov eax, dword [ecx + 0x10]
call eax
mov eax, dword [esi + 0x14]
add esp, 0xc
test eax, eax
je 0x1004d431
jle 0x1005216f
mov ecx, dword [esi]
mov dl, 1
call fcn.100436b0
mov edi, dword [esp + 0x10]
push eax
push 0x101577c0
push edi
call fcn.10043d70
mov eax, dword [esi + 0x14]
add esp, 0xc
mov dword [esp + 0x14], eax
jmp 0x10052173
mov edi, dword [esp + 0x10]
cmp byte [esi + 0x19], 0
je 0x1005219e
mov eax, dword [esp + 8]
mov eax, dword [eax - 0x10]
test eax, eax
je 0x1005219a
mov ecx, dword [esp + 0x18]
lea eax, [eax + eax*4]
push 0
push 1
lea ecx, [ecx + eax*8]
call fcn.10042e60
add esp, 8
mov byte [esi + 0x19], 0
mov ecx, dword [esi]
mov eax, 0x9000
test word [ecx + 0x10], ax
jne 0x100521b1
cmp dword [ecx + 0x18], 0
je 0x100521b6
call fcn.10042810
mov eax, dword [esi]
mov ecx, 1
mov edx, dword [esp + 0x14]
mov word [eax + 0x10], cx
mov dword [esi + 0x14], 0
jmp 0x1004dbc4
mov ecx, dword [esp + 8]
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 0x10052212
mov ecx, dword [esp + 0x18]
lea eax, [eax + eax*4]
push edx
lea edx, [ecx + eax*8]
mov ecx, esi
call fcn.10042760
mov ecx, dword [esp + 0x1c]
mov edi, eax
mov eax, dword [esp + 0xc]
add esp, 4
mov eax, dword [eax + 0xc]
lea eax, [eax + eax*4]
lea esi, [ecx + eax*8]
jmp 0x1005221b
mov ecx, esi
call fcn.100426c0
mov edi, eax
mov dword [esp + 0x14], edi
test edi, edi
jne 0x100535ff
movzx edx, byte [esp + 0x4c]
mov ecx, esi
call fcn.10042240
jmp 0x1004d431
mov ecx, dword [esp + 8]
lea eax, [esp + 0x1b8]
push eax
lea eax, [esp + 0x1b8]
mov dword [esp + 0x1b4], 0
push eax
push dword [ecx + 8]
mov edx, dword [ecx + 4]
mov ecx, dword [esp + 0x18]
mov dword [esp + 0x1c4], 0xffffffff
mov dword [esp + 0x1c0], 0xffffffff
call fcn.100cca50
mov edx, eax
add esp, 0xc
mov dword [esp + 0x14], edx
test edx, edx
je 0x100522a5
cmp edx, 5
jne 0x1004e964
mov dword [esp + 0x14], 0
mov dword [esp + 0x1b0], 1
mov eax, dword [esp + 8]
xor edi, edi
mov ecx, 0x9000
mov eax, dword [eax + 0xc]
lea eax, [eax + eax*4]
lea esi, [esi + eax*8]
nop dword [eax]
mov eax, dword [esp + edi*4 + 0x1b0]
cdq
test word [esi + 0x10], cx
je 0x100522e1
push edx
push eax
mov ecx, esi
call fcn.10042e30
add esp, 8
mov ecx, 0x9000
jmp 0x100522ef
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 0x100522c0
jmp 0x1004d431
mov edx, dword [esp + 8]
mov ecx, edi
call fcn.1004c950
mov dword [esp + 0x50], eax
mov eax, dword [esp + 8]
mov edx, dword [eax + 4]
mov esi, dword [eax + 0xc]
add edx, edx
mov eax, dword [esp + 0xc]
mov ecx, dword [eax + 0x10]
mov eax, dword [ecx + edx*8 + 4]
mov ecx, eax
mov dword [esp + 0x20], eax
call fcn.1003fe80
mov ecx, eax
mov dword [esp + 0x1c], eax
call fcn.10030ed0
mov ecx, dword [esp + 0x1c]
mov edi, eax
cmp esi, 0xffffffff
cmove esi, edi
call fcn.10030ee0
mov ecx, dword [esp + 0x1c]
test eax, eax
mov edx, 1
cmove esi, edi
call fcn.10030b60
cmp esi, 5
jne 0x100523f1
mov ecx, eax
call fcn.10022350
test eax, eax
je 0x1005237e
mov ecx, dword [esp + 0x1c]
call fcn.10030f10
test eax, eax
jne 0x100523f1
mov esi, edi
mov eax, dword [esp + 0x14]
test eax, eax
je 0x1005238a
mov esi, edi
mov ecx, dword [esp + 0x1c]
mov edx, esi
call fcn.10030d70
mov esi, dword [esp + 0x50]
mov ecx, 0x2202
mov word [esi + 0x10], cx
mov ecx, eax
call fcn.1008ab40
mov ecx, eax
mov dword [esi + 8], eax
call fcn.10022350
movzx edx, byte [esp + 0x4c]
mov ecx, esi
mov dword [esi + 0xc], eax
mov byte [esi + 0x12], 1
call fcn.10042240
mov edx, dword [esp + 0x14]
mov edi, dword [esp + 0x10]
test edx, edx
jne 0x100533b2
mov eax, dword [esp + 8]
mov esi, dword [esp + 0x18]
mov ecx, dword [esp + 0x7c]
add eax, 0x14
mov edx, dword [esp + 0xb4]
jmp 0x1004cb5b
cmp esi, edi
je 0x10052380
cmp edi, 5
je 0x100523ff
cmp esi, 5
jne 0x10052380
mov eax, dword [esp + 0xc]
cmp byte [eax + 0x55], 0
je 0x10053628
cmp dword [eax + 0xc0], 1
jg 0x10053628
cmp edi, 5
jne 0x10052443
mov ecx, dword [esp + 0x1c]
mov edx, eax
call fcn.10031080
mov dword [esp + 0x14], eax
test eax, eax
jne 0x10052388
mov ecx, dword [esp + 0x1c]
mov edx, esi
call fcn.10030d70
jmp 0x1005245f
cmp edi, 4
jne 0x10052454
mov ecx, dword [esp + 0x1c]
lea edx, [edi - 2]
call fcn.10030d70
cmp dword [esp + 0x14], 0
jne 0x10052388
mov ecx, dword [esp + 0x20]
xor edx, edx
cmp esi, 5
sete dl
inc edx
call fcn.10041060
mov dword [esp + 0x14], eax
jmp 0x10052384
mov ecx, dword [esp + 8]
mov eax, dword [ecx + 8]
test eax, eax
je 0x1005248d
lea eax, [eax + eax*4]
lea eax, [esi + eax*8]
jmp 0x1005248f
xor eax, eax
mov edx, dword [esp + 0xc]
push eax
push dword [ecx + 4]
lea ecx, [edi + 0x7c]
call fcn.100a9fc0
mov edx, eax
add esp, 8
mov dword [esp + 0x14], edx
test edx, edx
jne 0x1004e964
mov eax, dword [esp + 8]
mov ecx, dword [esp + 0x7c]
add eax, 0x14
mov edx, dword [esp + 0xb4]
jmp 0x1004cb5b
mov ecx, dword [esp + 8]
mov eax, dword [esp + 0xc]
mov ecx, dword [ecx + 4]
mov eax, dword [eax + 0x10]
add ecx, ecx
mov ecx, dword [eax + ecx*8 + 4]
call fcn.100381f0
mov edx, eax
mov dword [esp + 0x14], edx
test edx, edx
je 0x1004d431
cmp edx, 0x65
jne 0x1004e964
mov dword [esp + 0x14], 0
jmp 0x10052a3b
mov ecx, dword [esp + 8]
cmp dword [ecx + 4], 0
jne 0x10052531
mov edx, dword [ecx + 8]
mov ecx, dword [esp + 0xc]
call fcn.10048900
mov eax, dword [esp + 8]
mov ecx, dword [esp + 0x7c]
add eax, 0x14
mov edx, dword [esp + 0xb4]
jmp 0x1004cb5b
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 + 8]
mov dword [edi + 0x98], ecx
mov ecx, dword [esp + 0x7c]
add eax, 0x14
mov edx, dword [esp + 0xb4]
jmp 0x1004cb5b
mov ecx, dword [esp + 8]
mov eax, dword [edi + 0x60]
mov ecx, dword [ecx + 4]
mov ecx, dword [eax + ecx*4]
mov ecx, dword [ecx + 0x2c]
call fcn.10038fd0
mov eax, dword [esp + 8]
mov ecx, dword [esp + 0x7c]
add eax, 0x14
mov edx, dword [esp + 0xb4]
jmp 0x1004cb5b
mov ecx, dword [esp + 8]
mov eax, dword [edi + 0x60]
mov ecx, dword [ecx + 4]
mov ecx, dword [eax + ecx*4]
mov ecx, dword [ecx + 0x2c]
call fcn.10038fe0
mov eax, dword [esp + 8]
mov ecx, dword [esp + 0x7c]
add eax, 0x14
mov edx, dword [esp + 0xb4]
jmp 0x1004cb5b
mov edx, dword [esp + 8]
mov al, byte [edx + 0xc]
mov edx, dword [esp + 0xc]
mov byte [esp + 0x11c], al
test al, al
jne 0x100525df
mov eax, dword [edx + 0x20]
and eax, 0x400
mov dword [esp + 0x20], eax
jne 0x100518fd
mov eax, dword [esp + 8]
mov ecx, dword [edx + 0x10]
mov edx, dword [esp + 8]
push dword [esp + 0x11c]
mov eax, dword [eax + 4]
add eax, eax
mov edx, dword [edx + 8]
mov ecx, dword [ecx + eax*8 + 4]
call fcn.10040ed0
mov edx, eax
add esp, 4
mov dword [esp + 0x14], edx
test edx, edx
je 0x1004d8ca
cmp dl, 6
jne 0x1004e964
mov eax, dword [esp + 8]
push dword [eax + 0x10]
push str.database_table_is_locked:__s
push edi
call fcn.10043d70
mov edx, dword [esp + 0x20]
add esp, 0xc
jmp 0x1004e964
mov ecx, dword [esp + 8]
mov esi, dword [ecx + 0x10]
mov edx, esi
mov ecx, dword [esp + 0xc]
call fcn.100abe70
mov edx, eax
mov dword [esp + 0x14], edx
test esi, esi
je 0x1004dbc4
mov edx, dword [esi + 8]
mov ecx, edi
call fcn.10048b00
mov edx, dword [esp + 0x14]
jmp 0x1004dbc4
mov eax, dword [esp + 0xc]
lea ecx, [esp + 0x80]
xorps xmm0, xmm0
movaps xmmword [esp + 0x90], xmm0
mov dword [esp + 0x94], eax
mov eax, dword [esp + 8]
movaps xmmword [esp + 0x80], xmm0
movq qword [esp + 0xa0], xmm0
mov eax, dword [eax + 8]
lea eax, [eax + eax*4]
lea edx, [esi + eax*8]
call fcn.10043060
mov dl, 1
mov dword [esp + 0x14], eax
lea ecx, [esp + 0x80]
call fcn.100436b0
test eax, eax
je 0x100526df
lea ecx, [edi + 0x7c]
push ecx
mov ecx, dword [esp + 0x10]
push eax
mov eax, dword [esp + 0x10]
mov edx, dword [eax + 4]
call fcn.100ab890
add esp, 8
mov dword [esp + 0x14], eax
test dword [esp + 0x90], 0x9000
jne 0x100526f6
cmp dword [esp + 0x98], 0
je 0x10052702
lea ecx, [esp + 0x80]
call fcn.10042810
mov edx, dword [esp + 0x14]
test edx, edx
jne 0x1004e964
mov eax, dword [esp + 8]
mov ecx, dword [esp + 0x7c]
add eax, 0x14
mov edx, dword [esp + 0xb4]
jmp 0x1004cb5b
mov ecx, dword [esp + 0xc]
mov eax, dword [esp + 8]
inc dword [ecx + 0xcc]
push dword [eax + 0x10]
mov edx, dword [eax + 4]
call fcn.100abc50
mov esi, dword [esp + 0x10]
mov edx, eax
add esp, 4
mov dword [esp + 0x14], edx
dec dword [esi + 0xcc]
test edx, edx
jne 0x1004e968
mov eax, dword [esp + 8]
mov esi, dword [esp + 0x18]
mov ecx, dword [esp + 0x7c]
add eax, 0x14
mov edx, dword [esp + 0xb4]
jmp 0x1004cb5b
mov ecx, dword [esp + 8]
mov dword [esp + 0x30], 0
mov eax, dword [ecx + 0x10]
mov esi, dword [eax + 8]
test esi, esi
je 0x10053672
mov edi, dword [esi]
test edi, edi
je 0x10053672
lea eax, [esp + 0x30]
push eax
mov eax, dword [edi + 0x18]
push esi
call eax
mov ecx, dword [esp + 0x18]
add esp, 8
mov edx, esi
mov dword [esp + 0x14], eax
call fcn.10048b00
mov edx, dword [esp + 0x14]
test edx, edx
jne 0x1004e964
mov eax, dword [esp + 0x30]
mov ecx, dword [esp + 0x10]
push 2
push edx
mov dword [eax], esi
mov eax, dword [esp + 0x10]
mov edx, dword [eax + 4]
call fcn.1004c3c0
add esp, 8
test eax, eax
je 0x10053661
mov ecx, dword [esp + 0x30]
mov dword [eax + 0x2c], ecx
inc dword [esi + 4]
jmp 0x1004d431
mov ecx, dword [esp + 8]
mov eax, dword [edi + 0x60]
mov ecx, dword [ecx + 4]
mov edi, dword [eax + ecx*4]
call fcn.100ca320
test eax, eax
jne 0x1004e93e
push eax
push 8
call fcn.1001e500
mov esi, eax
add esp, 8
test esi, esi
je 0x1004e93e
mov eax, dword [esp + 8]
mov ecx, dword [edi + 0x2c]
mov edx, dword [esp + 0x18]
mov edi, dword [esp + 0x10]
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.1004c950
mov ecx, 1
mov edx, esi
push fcn.1001e710
push str.ValueList
mov word [eax + 0x10], cx
mov ecx, eax
call fcn.10042ea0
mov eax, dword [esp + 0x10]
add esp, 8
mov esi, dword [esp + 0x18]
mov ecx, dword [esp + 0x7c]
add eax, 0x14
mov edx, dword [esp + 0xb4]
jmp 0x1004cb5b
mov ecx, dword [esp + 8]
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 + 0x38], esi
mov eax, dword [eax + ecx*4]
mov dword [esp + 0x44], eax
mov edi, dword [esi]
movd xmm0, esi
mov ecx, dword [eax + 0x2c]
mov dword [esp + 0x60], ecx
pshufd xmm3, xmm0, 0
mov dword [esp + 0x30], edi
mov eax, dword [ecx]
mov dword [esp + 0x1c], eax
mov ecx, dword [eax]
mov eax, dword [esp + 0x18]
mov dword [esp + 0x2c], ecx
mov ecx, dword [eax + edx*8]
mov eax, dword [esp + 0x10]
mov dword [esp + 0x5c], ecx
xor ecx, ecx
mov edx, dword [eax + 0x5c]
mov dword [esp + 0x20], edx
test edi, edi
jle 0x100529e3
cmp edi, 0x10
jb 0x100529cf
cmp dword [0x101681b8], 2
jl 0x100529cf
movaps xmm2, xmmword [0x10160200]
mov eax, edi
and eax, 0x8000000f
jns 0x10052911
dec eax
or eax, 0xfffffff0
inc eax
movaps xmm1, xmmword [str.____]
mov esi, edi
sub esi, eax
add edx, 0x20
mov dword [esp + 0x50], esi
mov esi, 8
mov edi, dword [esp + 0x50]
nop dword [eax]
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 0x10052930
mov edi, dword [esp + 0x30]
mov edx, dword [esp + 0x20]
cmp ecx, edi
jge 0x100529e3
mov esi, dword [esp + 0x38]
lea eax, [ecx + 1]
lea eax, [eax + eax*4]
lea eax, [esi + eax*8]
mov dword [edx + ecx*4], eax
inc ecx
add eax, 0x28
cmp ecx, edi
jl 0x100529d8
mov eax, dword [esp + 8]
mov esi, dword [esp + 0x60]
push edx
push edi
push dword [eax + 0x10]
mov edi, dword [esp + 0x38]
push dword [esp + 0x68]
push esi
mov eax, dword [edi + 0x20]
call eax
mov edx, dword [esp + 0x30]
add esp, 0x14
mov ecx, dword [esp + 0x10]
mov dword [esp + 0x14], eax
call fcn.10048b00
mov edx, dword [esp + 0x14]
test edx, edx
jne 0x1004e964
mov eax, dword [edi + 0x28]
push esi
call eax
mov ecx, dword [esp + 0x48]
add esp, 4
mov byte [ecx + 2], 0
test eax, eax
je 0x1004d431
mov edi, dword [esp + 0x10]
mov eax, dword [esp + 8]
mov eax, dword [eax + 8]
mov ecx, dword [esp + 0x58]
mov esi, dword [esp + 0x18]
lea eax, [eax + eax*4]
lea eax, [eax - 5]
lea eax, [ecx + eax*4]
mov ecx, dword [esp + 0x7c]
add eax, 0x14
mov edx, dword [esp + 0xb4]
jmp 0x1004cb5b
mov edx, dword [esp + 8]
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]
je 0x10052a89
mov ecx, esi
jmp 0x1004d42c
test byte [edx + 2], 1
xorps xmm0, xmm0
mov eax, dword [edi + 0x2c]
mov eax, dword [eax]
mov dword [esp + 0x50], eax
mov eax, dword [eax]
mov dword [esp + 0x20], eax
mov al, byte [esp + 0x4c]
movaps xmmword [esp + 0x130], xmm0
movaps xmmword [esp + 0x140], xmm0
mov dword [esp + 0x130], esi
mov byte [esp + 0x148], al
je 0x10052adb
mov ecx, esi
call fcn.10042dc0
mov edx, dword [esp + 8]
mov eax, 0x401
mov dword [esi], 0
jmp 0x10052aee
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 + 0x130]
push dword [edx + 8]
push eax
mov eax, dword [esp + 0x28]
push dword [edi + 0x2c]
mov eax, dword [eax + 0x2c]
call eax
mov edi, dword [esp + 0x1c]
add esp, 0xc
mov edx, dword [esp + 0x50]
mov ecx, edi
mov dword [esp + 0x14], eax
call fcn.10048b00
cmp dword [esp + 0x144], 0
jle 0x10052b4c
push esi
call fcn.10049200
add esp, 4
push eax
push 0x101577c0
push edi
call fcn.10043d70
mov eax, dword [esp + 0x150]
add esp, 0xc
mov dword [esp + 0x14], eax
movzx edx, byte [esp + 0x4c]
mov ecx, esi
call fcn.10042240
mov edx, dword [esp + 0x14]
test edx, edx
jne 0x100533b2
mov eax, dword [esp + 8]
mov esi, dword [esp + 0x18]
mov ecx, dword [esp + 0x7c]
add eax, 0x14
mov edx, dword [esp + 0xb4]
jmp 0x1004cb5b
mov ecx, dword [esp + 8]
mov eax, dword [edi + 0x60]
mov ecx, dword [ecx + 4]
mov edi, dword [eax + ecx*4]
cmp byte [edi + 2], 0
jne 0x1004e292
mov eax, dword [edi + 0x2c]
push eax
mov esi, dword [eax]
mov ecx, dword [esi]
mov dword [esp + 0x24], ecx
mov eax, dword [ecx + 0x24]
call eax
mov ecx, dword [esp + 0x14]
add esp, 4
mov edx, esi
mov dword [esp + 0x14], eax
call fcn.10048b00
mov edx, dword [esp + 0x14]
test edx, edx
jne 0x1004e964
mov eax, dword [esp + 0x20]
push dword [edi + 0x2c]
mov eax, dword [eax + 0x28]
call eax
add esp, 4
test eax, eax
jne 0x1005186e
mov edi, dword [esp + 0x10]
mov esi, dword [esp + 0x18]
mov ecx, dword [esp + 8]
mov edx, dword [ecx + 8]
mov ecx, dword [esp + 0x58]
dec edx
lea edx, [edx + edx*4]
lea edx, [ecx + edx*4]
mov dword [esp + 8], edx
jmp 0x10051876
mov ecx, dword [esp + 0xc]
mov eax, dword [ecx + 0x20]
or dword [ecx + 0x20], 0x4000000
and eax, 0x4000000
mov dword [esp + 0x20], eax
mov eax, dword [ecx + 0x24]
mov dword [ecx + 0x24], eax
mov ecx, dword [esp + 8]
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 0x10052c3c
mov byte [esi + 0x12], 1
jmp 0x10052c59
cmp byte [esi + 0x12], 1
je 0x10052c59
mov dl, 1
mov ecx, esi
call fcn.10021d50
mov edx, eax
mov dword [esp + 0x14], edx
test edx, edx
jne 0x1004e964
mov eax, dword [edi]
push dword [esi + 8]
push edi
mov eax, dword [eax + 0x4c]
call eax
add esp, 8
mov dword [esp + 0x14], eax
cmp dword [esp + 0x20], 0
jne 0x10052c83
mov ecx, dword [esp + 0xc]
mov eax, dword [ecx + 0x24]
and dword [ecx + 0x20], 0xfbffffff
mov dword [ecx + 0x24], eax
mov edx, edi
mov edi, dword [esp + 0x10]
mov ecx, edi
call fcn.10048b00
and dword [edi + 0x98], 0xfffffffc
mov edx, dword [esp + 0x14]
test edx, edx
jne 0x100533b2
mov eax, dword [esp + 8]
mov esi, dword [esp + 0x18]
mov ecx, dword [esp + 0x7c]
add eax, 0x14
mov edx, dword [esp + 0xb4]
jmp 0x1004cb5b
mov eax, dword [esp + 0xc]
xorps xmm0, xmm0
movlpd qword [esp + 0x30], xmm0
cmp byte [eax + 0x57], 0
jne 0x1004e946
mov eax, dword [esp + 8]
mov eax, dword [eax + 0x10]
mov edx, dword [eax + 8]
mov dword [esp + 0x50], edx
test edx, edx
je 0x10053672
mov eax, dword [edx]
mov dword [esp + 0x20], eax
test eax, eax
je 0x10053672
cmp dword [eax + 0x34], 0
mov esi, dword [esp + 8]
mov esi, dword [esi + 8]
je 0x1004cfff
mov eax, dword [esp + 0xc]
mov ecx, dword [esp + 0x18]
mov edi, dword [edi + 0x5c]
mov al, byte [eax + 0x5c]
mov byte [esp + 0x2b], al
mov eax, dword [esp + 8]
mov eax, dword [eax + 0xc]
lea eax, [eax + eax*4]
lea ecx, [ecx + eax*8]
xor eax, eax
test esi, esi
jle 0x10052d3b
nop
mov dword [edi + eax*4], ecx
inc eax
add ecx, 0x28
cmp eax, esi
jl 0x10052d30
mov eax, dword [esp + 8]
mov ecx, dword [esp + 0xc]
mov al, byte [eax + 2]
mov byte [ecx + 0x5c], al
lea eax, [esp + 0x30]
push eax
mov eax, dword [esp + 0x24]
push edi
push esi
push edx
mov eax, dword [eax + 0x34]
call eax
mov ecx, dword [esp + 0x1c]
add esp, 0x10
mov edi, dword [esp + 0x10]
mov edx, dword [esp + 0x50]
mov dword [esp + 0x14], eax
mov al, byte [esp + 0x2b]
mov byte [ecx + 0x5c], al
mov ecx, edi
call fcn.10048b00
mov edx, dword [esp + 0x14]
test edx, edx
jne 0x10052da0
mov esi, dword [esp + 8]
cmp dword [esi + 4], edx
mov esi, dword [esp + 0xc]
je 0x10052dea
mov eax, dword [esp + 0x30]
mov ecx, dword [esp + 0x34]
mov dword [esi + 0x28], eax
mov dword [esi + 0x2c], ecx
jmp 0x10052dea
cmp dl, 0x13
jne 0x10052de6
mov eax, dword [esp + 8]
mov eax, dword [eax + 0x10]
cmp byte [eax + 0x10], 0
je 0x10052de6
mov ecx, dword [esp + 8]
movzx ecx, word [ecx + 2]
cmp ecx, 4
jne 0x1005367c
mov eax, dword [esp + 8]
mov esi, dword [esp + 0x18]
mov dword [esp + 0x14], 0
mov ecx, dword [esp + 0x7c]
add eax, 0x14
mov edx, dword [esp + 0xb4]
jmp 0x1004cb5b
mov esi, dword [esp + 0xc]
add dword [edi + 0x28], 1
adc dword [edi + 0x2c], 0
test edx, edx
jne 0x1004e96c
mov eax, dword [esp + 8]
mov esi, dword [esp + 0x18]
mov ecx, dword [esp + 0x7c]
add eax, 0x14
mov edx, dword [esp + 0xb4]
jmp 0x1004cb5b
mov ecx, dword [esp + 8]
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 0x10052e3b
mov ecx, edx
call fcn.1004c930
mov edx, eax
jmp 0x10052e44
mov eax, 4
mov word [edx + 0x10], ax
mov eax, dword [esp + 8]
mov ecx, dword [eax + 4]
mov eax, dword [esp + 0xc]
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 + 8]
mov dword [edx + 4], 0
mov ecx, dword [esp + 0x7c]
add eax, 0x14
mov edx, dword [esp + 0xb4]
jmp 0x1004cb5b
mov ecx, dword [esp + 8]
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 0x10052ea4
mov ecx, esi
call fcn.1004c930
mov esi, eax
jmp 0x10052ead
mov eax, 4
mov word [esi + 0x10], ax
mov eax, dword [esp + 8]
xor edx, edx
mov ecx, dword [eax + 4]
mov eax, dword [esp + 0xc]
add ecx, ecx
mov eax, dword [eax + 0x10]
mov edi, dword [eax + ecx*8 + 4]
mov eax, dword [esp + 8]
cmp dword [eax + 0xc], edx
je 0x10052ee0
mov ecx, edi
call fcn.10036190
mov edx, eax
mov eax, dword [esp + 8]
cmp edx, dword [eax + 0xc]
cmovb edx, dword [eax + 0xc]
mov ecx, edi
call fcn.100372c0
mov dword [esi], eax
mov dword [esi + 4], 0
jmp 0x1004d431
mov ecx, dword [esp + 8]
mov esi, dword [ecx + 0x10]
mov eax, dword [ecx + 0xc]
mov ecx, dword [esp + 0x18]
mov dword [esp + 0x20], esi
lea eax, [eax + eax*4]
lea edi, [ecx + eax*8]
mov dword [esp + 0x50], edi
cmp dword [esi], edi
je 0x10052f5e
mov eax, dword [esp + 0x10]
movzx ecx, byte [esi + 0x1a]
sub ecx, 1
mov dword [esi + 0xc], eax
mov al, byte [esp + 0x4c]
mov dword [esi], edi
mov byte [esi + 0x18], al
js 0x10052f5e
mov edi, dword [esp + 8]
lea edx, [esi + 0x1c]
mov esi, dword [esp + 0x18]
lea edx, [edx + ecx*4]
nop dword [eax]
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 0x10052f40
mov esi, dword [esp + 0x20]
mov edi, dword [esp + 0x50]
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 0x1004d431
jle 0x10052fb9
mov dl, 1
mov ecx, edi
call fcn.100436b0
mov edi, dword [esp + 0x10]
push eax
push 0x101577c0
push edi
call fcn.10043d70
mov eax, dword [esi + 0x14]
add esp, 0xc
mov dword [esp + 0x14], eax
jmp 0x10052fbd
mov edi, dword [esp + 0x10]
mov eax, dword [esp + 8]
lea edx, [edi + 0xe4]
mov ecx, dword [esp + 0xc]
push dword [eax + 4]
push dword [esi + 0x10]
call fcn.10046be0
mov edx, dword [esp + 0x1c]
add esp, 8
mov dword [esi + 0x14], 0
test edx, edx
jne 0x1004e964
mov eax, dword [esp + 8]
mov esi, dword [esp + 0x18]
mov ecx, dword [esp + 0x7c]
add eax, 0x14
mov edx, dword [esp + 0xb4]
jmp 0x1004cb5b
mov eax, dword [eax + 4]
mov ecx, 0xf7ff
lea eax, [eax + eax*4]
and word [esi + eax*8 + 0x10], cx
mov eax, dword [esp + 8]
mov ecx, dword [esp + 0x7c]
add eax, 0x14
mov edx, dword [esp + 0xb4]
jmp 0x1004cb5b
mov ecx, dword [esp + 8]
mov edx, ecx
mov eax, dword [ecx + 4]
mov ecx, esi
lea edi, [eax + eax*4]
call fcn.1004c980
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.1013b220
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 0x1004d431
mov ecx, dword [esp + 8]
mov edx, ecx
mov eax, dword [ecx + 4]
mov ecx, esi
lea edi, [eax + eax*4]
mov dword [esp + 0x20], edi
call fcn.1004c980
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.1013b220
mov ecx, dword [esp + 0x20]
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 + 0x10]
shl eax, cl
test eax, edx
mov eax, dword [esp + 8]
jne 0x100530df
inc dword [edi + 0xc4]
jmp 0x10052a3f
inc dword [edi + 0xc0]
mov esi, dword [esp + 0x18]
mov ecx, dword [esp + 0x7c]
add eax, 0x14
mov edx, dword [esp + 0xb4]
jmp 0x1004cb5b
mov edx, dword [esp + 0xc]
mov cl, byte [edx + 0x5e]
test cl, 0x41
je 0x100531bb
cmp byte [edi + 0x93], 0xfe
je 0x100531bb
mov eax, dword [eax + 0x10]
test eax, eax
jne 0x1005312e
mov eax, dword [edi + 0xc8]
test eax, eax
je 0x100531b7
test cl, 0x40
je 0x10053160
mov edx, eax
mov ecx, edi
call fcn.1004bf20
mov esi, eax
mov eax, dword [esp + 0xc]
push esi
push dword [eax + 0xdc]
mov ecx, dword [eax + 0xd8]
call ecx
push esi
call fcn.1001e710
mov esi, dword [esp + 0x24]
add esp, 0xc
jmp 0x100531b7
cmp dword [edx + 0xc8], 1
push eax
jle 0x100531a3
push str.____s
push edx
call fcn.10021460
add esp, 0xc
mov esi, eax
mov eax, dword [esp + 0xc]
push esi
mov ecx, dword [eax + 0xd8]
push edi
push dword [eax + 0xdc]
push 1
call ecx
push esi
push dword [esp + 0x20]
call fcn.1001e930
mov esi, dword [esp + 0x30]
add esp, 0x18
jmp 0x100531b7
mov eax, dword [edx + 0xd8]
push edi
push dword [edx + 0xdc]
push 1
call eax
add esp, 0x10
mov eax, dword [esp + 8]
mov eax, dword [eax + 4]
cmp eax, dword [0x10165c44]
jl 0x100531fe
mov eax, dword [esp + 8]
cmp byte [eax], 0xb5
je case.0x1004cb89.89
mov edx, 1
cmp dword [edi + 0x6c], edx
jle 0x100531fc
mov eax, 0x14
mov ecx, dword [edi + 0x68]
cmp byte [ecx + eax], 0xf
jne 0x100531f3
mov dword [ecx + eax + 4], 0
inc edx
add eax, 0x14
cmp edx, dword [edi + 0x6c]
jl 0x100531e2
xor eax, eax
mov ecx, dword [esp + 8]
inc eax
mov dword [ecx + 4], eax
inc dword [edi + 0xbc]
jmp 0x10052a3b
mov esi, dword [esp + 8]
mov ecx, dword [esi + 4]
mov dword [edi + 0x24], ecx
mov al, byte [esi + 8]
mov byte [edi + 0x92], al
test ecx, ecx
je 0x100532c1
mov ecx, esi
movzx eax, word [ecx + 2]
test ax, ax
je 0x10053273
push dword [eax*4 + 0x1014e210]
push str._s_constraint_failed
push edi
call fcn.10043d70
mov edi, esi
add esp, 0xc
mov eax, dword [edi + 0x10]
test eax, eax
je 0x10053288
mov esi, dword [esp + 0x10]
push eax
push dword [esi + 0x7c]
push str._z:__s
push dword [esp + 0x18]
call fcn.10021460
add esp, 0x10
mov dword [esi + 0x7c], eax
jmp 0x10053288
push dword [ecx + 0x10]
push 0x101577c0
push edi
call fcn.10043d70
mov edi, dword [esp + 0x14]
add esp, 0xc
mov eax, dword [esp + 0x10]
mov ecx, edi
sub ecx, dword [esp + 0x58]
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.10021710
mov edi, dword [esp + 0x24]
add esp, 0x14
mov ecx, edi
call fcn.100466c0
mov edi, eax
mov eax, dword [esp + 0x10]
cmp edi, 5
jne 0x100532d8
mov dword [eax + 0x24], edi
jmp 0x100532f1
cmp dword [eax + 0x24], 0
mov ecx, 0x65
mov eax, 1
cmovne ecx, eax
mov dword [esp + 0x14], ecx
mov edi, dword [esp + 0x14]
mov ecx, dword [esp + 0xc]
mov esi, dword [esp + 0x78]
nop dword [eax]
cmp dword [esp + 0xb4], esi
jb 0x10053966
mov edx, dword [esp + 0x74]
ja 0x1005331d
cmp dword [esp + 0x7c], edx
jb 0x10053966
mov eax, dword [ecx + 0x174]
test eax, eax
je 0x10053966
add edx, dword [ecx + 0x17c]
push dword [ecx + 0x178]
mov dword [esp + 0x78], edx
adc esi, 0
call eax
mov ecx, dword [esp + 0x10]
add esp, 4
test eax, eax
je 0x10053300
or ecx, 0xffffffff
mov dword [esp + 0x78], 0xffffffff
mov dword [esp + 0x74], ecx
mov edx, 9
jmp 0x1004e960
mov ecx, 0x16c85
call fcn.100ce4b0
mov edx, eax
jmp 0x1004e960
mov ecx, dword [esp + 0x30]
mov edx, dword [esp + 0x5c]
add ecx, ecx
push dword [edx + ecx*8]
mov ecx, dword [esp + 0x24]
push dword [ecx]
mov ecx, esi
push dword [eax*4 + 0x10166fd4]
call fcn.1004ca30
mov edi, dword [esp + 0x1c]
push eax
push str.cannot_store__s_value_in__s_column__s._s
push edi
call fcn.10043d70
mov edx, 0xc13
add esp, 0x18
mov dword [esp + 0x14], edx
mov esi, dword [esp + 0xc]
jmp 0x1004e96c
mov edi, dword [esp + 0x10]
push str.cannot_open_savepoint___SQL_statements_in_progress
push edi
call fcn.10043d70
mov esi, dword [esp + 0x14]
mov edx, 5
add esp, 8
mov dword [esp + 0x14], edx
jmp 0x1004e96c
mov edi, dword [esp + 0x10]
push str.cannot_release_savepoint___SQL_statements_in_progress
push edi
call fcn.10043d70
mov esi, dword [esp + 0x14]
mov edx, 5
add esp, 8
mov dword [esp + 0x14], edx
jmp 0x1004e96c
mov esi, dword [esp + 0xc]
mov edi, eax
mov byte [esi + 0x55], 0
jmp 0x1004e96c
mov ecx, dword [esp + 8]
mov eax, 0x66666667
sub ecx, dword [esp + 0x58]
mov edi, 5
imul ecx
mov ecx, dword [esp + 0xc]
sar edx, 3
mov eax, edx
shr eax, 0x1f
add eax, edx
mov edx, dword [esp + 0x10]
mov dword [edx + 0x20], eax
mov byte [ecx + 0x55], 0
mov dword [edx + 0x24], edi
jmp 0x100532f5
mov edi, 0x65
jmp 0x100532f1
mov esi, dword [esp + 0xc]
and edx, 0x100000
or edx, 0
mov edi, dword [esp + 0x10]
je 0x10053472
mov edx, 8
mov dword [esp + 0x14], edx
jmp 0x1004e96c
mov edx, 0xb
mov dword [esp + 0x14], edx
jmp 0x1004e96c
cmp dl, 5
jne 0x1004e964
mov ecx, dword [esp + 8]
mov eax, 0x66666667
sub ecx, dword [esp + 0x58]
mov edi, dword [esp + 0x14]
imul ecx
mov ecx, dword [esp + 0x10]
sar edx, 3
mov eax, edx
shr eax, 0x1f
add eax, edx
mov dword [ecx + 0x24], edi
mov dword [ecx + 0x20], eax
jmp 0x100532f1
push dword [edi + 0x7c]
mov esi, dword [esp + 0x10]
push esi
call fcn.1001e930
add esp, 8
mov edx, str.database_schema_has_changed
mov ecx, esi
call fcn.1001ee00
mov dword [edi + 0x7c], eax
mov eax, dword [esp + 8]
mov edx, dword [eax + 4]
mov eax, esi
mov ecx, edx
add ecx, ecx
mov eax, dword [eax + 0x10]
mov eax, dword [eax + ecx*8 + 0xc]
mov eax, dword [eax]
cmp eax, dword [esp + 0x30]
je 0x100534f7
mov ecx, esi
call fcn.1006fa10
mov eax, dword [edi + 0x98]
mov edx, 0x11
and eax, 0xffffffed
mov dword [esp + 0x14], edx
or eax, 1
mov dword [edi + 0x98], eax
jmp 0x1004e968
mov edx, 0x204
mov dword [esp + 0x14], edx
jmp 0x1004e968
mov ecx, dword [esi + 0x10]
call fcn.10036e40
mov edx, dword [esp + 0x14]
jmp 0x1004e964
mov edi, dword [esp + 0x10]
push str.string_or_blob_too_big
push edi
call fcn.10043d70
mov esi, dword [esp + 0x14]
mov edx, 0x12
add esp, 8
mov dword [esp + 0x14], edx
jmp 0x1004e96c
push str.index_corruption
mov edx, 0x1797b
mov ecx, 0x30b
call fcn.100ce480
add esp, 4
mov edx, eax
jmp 0x1004e960
push 0x10155e9c
push 0x17a48
push str.database_corruption
push str._s_at_line__d_of___.10s_
push 0xb
call fcn.10021710
add esp, 0x14
mov edx, 0xb
jmp 0x1004e960
mov edx, 6
mov byte [edi + 0x92], 2
jmp 0x1004e960
mov ecx, dword [esp + 0xc]
call fcn.1006fa80
jmp 0x1004e942
push dword [esp + 0xcc]
call fcn.1001e710
mov edx, dword [esp + 0x18]
add esp, 4
jmp 0x1004e964
mov edi, dword [esp + 0x10]
push str.too_many_levels_of_trigger_recursion
push edi
mov dword [esp + 0x1c], 1
call fcn.10043d70
mov esi, dword [esp + 0x14]
add esp, 8
mov edx, 1
jmp 0x1004e96c
push esi
call fcn.10049200
mov edi, dword [esp + 0x14]
add esp, 4
push eax
push 0x101577c0
push edi
call fcn.10043d70
mov edx, dword [esp + 0x20]
add esp, 0xc
mov esi, dword [esp + 0xc]
jmp 0x1004e96c
mov edi, dword [esp + 0x10]
mov ecx, str.out_of
cmp esi, 5
mov dword [esp + 0x14], 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.10043d70
mov esi, dword [esp + 0x18]
add esp, 0xc
mov edx, 1
jmp 0x1004e96c
push dword [esp + 0x30]
mov eax, dword [edi + 0x1c]
call eax
add esp, 4
jmp 0x1004e93e
mov edx, 6
jmp 0x1004e960
mov esi, dword [esp + 0xc]
cmp ecx, 5
movzx eax, cl
mov ecx, 2
cmove eax, ecx
mov byte [edi + 0x92], al
jmp 0x1004e96c
mov eax, dword [edi + 0x1c]
add eax, 2
or eax, 1
mov dword [edi + 0x1c], eax
mov eax, dword [esp + 8]
mov eax, dword [eax + 4]
lea eax, [eax + eax*4]
lea eax, [esi + eax*8]
mov dword [edi + 0x78], eax
mov eax, dword [esp + 0xc]
cmp byte [eax + 0x57], 0
jne 0x1004e946
test byte [eax + 0x5e], 4
je 0x100536df
push 0
push edi
push dword [eax + 0xdc]
mov eax, dword [eax + 0xd8]
push 4
call eax
add esp, 0x10
mov ecx, dword [esp + 8]
mov eax, 0x66666667
sub ecx, dword [esp + 0x58]
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 0x100532f1
mov edx, dword [esp + 8]
mov ecx, dword [edx + 4]
mov edi, dword [edx + 8]
mov edx, dword [esp + 0xc]
movzx eax, byte [edx + 0x55]
lea esi, [edx + 0x55]
mov dword [esp + 0xcc], ecx
cmp ecx, eax
je 0x100537f6
test edi, edi
je 0x10053742
mov edi, dword [esp + 0xc]
mov edx, 0x204
mov ecx, edi
call fcn.100cb9b0
mov al, 1
jmp 0x10053796
test ecx, ecx
je 0x10053773
cmp dword [edx + 0xc4], 0
jle 0x10053773
mov edi, dword [esp + 0x10]
push str.cannot_commit_transaction___SQL_statements_in_progress
push edi
call fcn.10043d70
mov esi, dword [esp + 0x14]
mov edx, 5
add esp, 8
mov dword [esp + 0x14], edx
jmp 0x1004e96c
mov ecx, dword [esp + 0x10]
mov edx, 1
call fcn.10046650
mov edi, eax
test edi, edi
jne 0x100532f1
mov al, byte [esp + 0xcc]
mov edi, dword [esp + 0xc]
mov byte [esi], al
mov esi, dword [esp + 0x10]
mov ecx, esi
call fcn.100466c0
cmp eax, 5
jne 0x100537e1
mov ecx, dword [esp + 8]
mov eax, 0x66666667
sub ecx, dword [esp + 0x58]
mov edi, 5
imul ecx
mov ecx, dword [esp + 0xc]
sar edx, 3
mov eax, edx
shr eax, 0x1f
add eax, edx
mov dword [esi + 0x20], eax
mov al, 1
sub al, byte [esp + 0xcc]
mov byte [ecx + 0x55], al
mov dword [esi + 0x24], edi
jmp 0x100532f5
mov ecx, edi
call fcn.100cb360
cmp dword [esi + 0x24], 0
mov ecx, 0x65
jmp 0x100532e1
test ecx, ecx
jne 0x10053801
mov eax, str.cannot_start_a_transaction_within_a_transaction
jmp 0x10053810
test edi, edi
mov eax, str.cannot_rollback___no_transaction_is_active
mov ecx, str.cannot_commit___no_transaction_is_active
cmove eax, ecx
mov edi, dword [esp + 0x10]
push eax
push edi
call fcn.10043d70
mov esi, dword [esp + 0x14]
mov edx, 1
add esp, 8
mov dword [esp + 0x14], edx
jmp 0x1004e96c
mov eax, dword [esp + 0xbc]
mov dword [esp + 0xb4], eax
mov eax, dword [esp + 0xb8]
mov dword [esp + 0x7c], eax
mov edx, 9
jmp 0x1004e960
mov eax, dword [esp + 0xbc]
mov dword [esp + 0xb4], eax
mov eax, dword [esp + 0xb8]
mov dword [esp + 0x7c], eax
jmp 0x1004e942
cmp edx, 0x210a
jne 0x100538a0
push 0x10155e9c
push 0x182d7
push str.database_corruption
push str._s_at_line__d_of___.10s_
push 0xb
call fcn.10021710
add esp, 0x14
mov edx, 0xb
mov dword [esp + 0x14], edx
cmp dword [edi + 0x7c], 0
jne 0x100538c4
cmp edx, 0xc0a
je 0x100538c4
mov ecx, edx
call fcn.100cbaf0
push eax
push 0x101577c0
push edi
call fcn.10043d70
add esp, 0xc
mov esi, dword [esp + 0x14]
mov edx, esi
mov ecx, dword [esp + 0xc]
mov dword [edi + 0x24], esi
call fcn.100223f0
mov ecx, dword [esp + 8]
mov eax, 0x66666667
sub ecx, dword [esp + 0x58]
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.10021710
add esp, 0x14
cmp byte [edi + 0x95], 2
jne 0x10053917
mov ecx, edi
call fcn.100466c0
cmp esi, 0xc0a
jne 0x1005394b
mov ecx, dword [esp + 0xc]
call fcn.1001ef40
mov ecx, dword [esp + 0xc]
mov al, byte [esp + 0x6f]
mov edi, 1
test al, al
je 0x100532f5
movzx edx, al
dec edx
call fcn.1006fa10
jmp 0x100532f1
cmp esi, 0xb
jne 0x10053928
mov ecx, dword [esp + 0xc]
cmp byte [ecx + 0x55], 0
jne 0x1005392c
mov eax, dword [ecx + 0x20]
or dword [ecx + 0x24], 2
mov dword [ecx + 0x20], eax
jmp 0x1005392c
mov eax, dword [esp + 0x10]
mov ecx, dword [esp + 0x7c]
add dword [eax + 0xb4], ecx
cmp dword [eax + 0xa0], 0
je 0x10053984
mov ecx, eax
call fcn.100451b0
mov ecx, dword [esp + 0x1bc]
mov eax, edi
pop edi
pop esi
xor ecx, esp
call fcn.10128281
mov esp, ebp
pop ebp
ret