Function at 0x492fd0
Capabilities:
Authenticate hmac
Resolve function by parsing pe exports

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff0
sub esp, 0x148
mov eax, dword [section..data]
xor eax, esp
mov dword [esp + 0x144], eax
mov eax, ecx
mov dword [esp + 0x64], 0
mov dword [esp], eax
push esi
mov esi, dword [ebp + 0x10]
mov eax, dword [eax]
mov dword [esp + 0x64], eax
push edi
mov eax, dword [esi + 0x48]
mov edi, edx
mov edx, dword [ebp + 8]
mov dword [esp + 0x34], eax
movzx eax, byte [esi + 0x34]
mov dword [esp + 0x64], edx
lea ecx, [edx + 0x50]
mov dword [esp + 0x4c], edi
mov dword [esp + 0x84], ecx
lea ecx, [eax + eax*8]
mov dword [esp + 0x10], esi
mov eax, dword [edx + 4]
mov edx, dword [edx + 0x1ec]
lea eax, [eax + ecx*8]
add eax, 8
mov dword [esp + 0x8c], eax
mov eax, dword [eax + 0x2c]
mov dword [esp + 0x2c], eax
xor eax, eax
test edx, edx
jle 0x493078
mov ecx, dword [esp + 0x64]
add ecx, 0x1f0
nop dword [eax + eax]
mov edi, dword [esp + 0x2c]
cmp dword [ecx], edi
mov edi, dword [esp + 0x4c]
je 0x493129
inc eax
add ecx, 4
cmp eax, edx
jl 0x493060
xorps xmm0, xmm0
movlpd qword [esp + 0x98], xmm0
mov edx, dword [esp + 0x9c]
mov ecx, dword [esp + 0x98]
not ecx
not edx
and ecx, dword [ebp + 0x14]
and edx, dword [ebp + 0x18]
mov dword [esi + 0x50], ecx
mov ecx, dword [esp + 0x64]
mov dword [esi + 0x54], edx
mov esi, dword [ebp + 0xc]
mov eax, dword [ecx + 0x48]
mov edx, dword [ecx + 0x4c]
mov ecx, esi
call fcn.004d47b0
mov ecx, dword [esp + 8]
and eax, 1
mov edx, dword [esp + 0x10]
mov dword [esp + 0x54], eax
mov eax, dword [ecx + 0x38]
dec eax
mov dword [ecx + 0x38], eax
mov dword [edx + 0x10], eax
mov dword [edx + 0xc], eax
mov dword [esp + 0x28], eax
mov eax, dword [ecx + 0x38]
dec eax
mov dword [ecx + 0x38], eax
cmp byte [edx + 0x34], 0
mov dword [esp + 0x90], eax
mov dword [edx + 0x18], eax
jbe 0x493172
mov eax, dword [esp + 0x8c]
test byte [eax + 0x24], 8
je 0x493172
mov edx, dword [ecx + 0x2c]
mov eax, dword [esp + 0x10]
inc edx
mov dword [ecx + 0x2c], edx
mov dword [eax], edx
mov ecx, dword [edi + 0x74]
cmp dword [edi + 0x78], ecx
jg 0x493143
push 0
push edx
push 0
mov edx, 0x46
mov ecx, edi
call fcn.0042a9a0
add esp, 0xc
jmp 0x493172
xor ecx, ecx
xor edx, edx
bts ecx, eax
cmp eax, 0x20
cmovae edx, ecx
xor ecx, edx
cmp eax, 0x40
cmovae edx, ecx
jmp 0x493092
lea eax, [ecx + 1]
mov dword [edi + 0x74], eax
lea ecx, [ecx + ecx*4]
mov eax, dword [edi + 0x70]
mov dword [eax + ecx*4], 0x46
mov dword [eax + ecx*4 + 4], 0
mov dword [eax + ecx*4 + 8], edx
mov dword [eax + ecx*4 + 0xc], 0
mov dword [eax + ecx*4 + 0x10], 0
mov ecx, esi
test esi, esi
jle 0x493194
mov edx, dword [esp + 0x64]
imul eax, esi, 0x58
add edx, 0x2f0
add eax, edx
cmp dword [eax], 0
jne 0x493194
dec ecx
sub eax, 0x58
test ecx, ecx
jg 0x493187
imul eax, ecx, 0x58
mov ecx, dword [esp + 0x64]
mov esi, dword [eax + ecx + 0x2fc]
mov eax, dword [esp + 0x8c]
mov dword [esp + 0x70], esi
test byte [eax + 0x28], 0x10
je 0x49327c
mov ecx, dword [edi + 0x74]
mov esi, dword [eax + 0x1c]
mov edx, dword [eax + 0x18]
cmp dword [edi + 0x78], ecx
jg 0x4931da
push edx
push 0
push esi
mov edx, 0xd
mov ecx, edi
call fcn.0042a9a0
add esp, 0xc
jmp 0x493209
lea eax, [ecx + 1]
mov dword [edi + 0x74], eax
lea ecx, [ecx + ecx*4]
mov eax, dword [edi + 0x70]
mov edi, dword [esp + 0x4c]
mov dword [eax + ecx*4], 0xd
mov dword [eax + ecx*4 + 4], esi
mov dword [eax + ecx*4 + 8], 0
mov dword [eax + ecx*4 + 0xc], edx
mov dword [eax + ecx*4 + 0x10], 0
mov edx, dword [edi + 0x74]
cmp dword [edi + 0x78], edx
jg 0x493239
push 0
push dword [esp + 0x2c]
mov edx, 0xe
mov ecx, edi
push esi
call fcn.0042a9a0
mov esi, dword [esp + 0x1c]
mov edx, eax
add esp, 0xc
mov dword [esi + 0x3c], edx
mov byte [esi + 0x35], 0xb
jmp 0x493787
lea eax, [edx + 1]
mov dword [edi + 0x74], eax
lea ecx, [edx + edx*4]
mov eax, dword [edi + 0x70]
mov edi, dword [esp + 0x4c]
mov dword [eax + ecx*4 + 4], esi
mov esi, dword [esp + 0x28]
mov dword [eax + ecx*4 + 8], esi
mov esi, dword [esp + 0x10]
mov dword [eax + ecx*4], 0xe
mov dword [eax + ecx*4 + 0xc], 0
mov dword [eax + ecx*4 + 0x10], 0
mov dword [esi + 0x3c], edx
mov byte [esi + 0x35], 0xb
jmp 0x493787
mov eax, dword [esp + 0x34]
mov edx, dword [eax + 0x24]
test edx, 0x400
je 0x4936f7
movzx edx, word [eax + 0x28]
mov dword [esp + 0x1c], edx
lea esi, [edx + 2]
cmp esi, 1
jne 0x4932c9
mov ecx, dword [esp + 8]
mov al, byte [ecx + 0x13]
test al, al
jne 0x4932b8
inc dword [ecx + 0x2c]
mov eax, dword [ecx + 0x2c]
mov ecx, eax
mov dword [esp + 0x24], eax
jmp 0x49330f
dec al
mov byte [ecx + 0x13], al
movzx eax, al
mov ecx, dword [ecx + eax*4 + 0x98]
jmp 0x49330b
mov eax, dword [esp + 8]
mov ecx, dword [eax + 0x20]
mov eax, dword [eax + 0x1c]
mov dword [esp + 0x24], ecx
mov dword [esp + 0x38], eax
cmp esi, eax
jg 0x4932f8
lea eax, [ecx + esi]
mov ecx, dword [esp + 8]
mov dword [ecx + 0x20], eax
mov eax, dword [esp + 0x38]
sub eax, esi
mov dword [ecx + 0x1c], eax
mov ecx, dword [esp + 0x24]
jmp 0x49330f
mov eax, dword [esp + 8]
mov eax, dword [eax + 0x2c]
lea ecx, [eax + 1]
add eax, esi
mov esi, dword [esp + 8]
mov dword [esi + 0x2c], eax
mov dword [esp + 0x24], ecx
mov eax, dword [esp + 0x10]
xor esi, esi
mov eax, dword [eax + 0xc]
mov dword [esp + 0x30], eax
test edx, edx
je 0x493387
add ecx, 2
mov edi, edx
mov dword [esp + 0x18], ecx
nop dword [eax]
mov eax, dword [esp + 0x34]
mov eax, dword [eax + 0x30]
mov edx, dword [eax + esi*4]
test edx, edx
je 0x49337e
test byte [edx + 0xc], 1
lea eax, [esi + ecx]
mov ecx, dword [esp + 8]
je 0x49336a
push eax
push dword [esp + 0x58]
push esi
push dword [esp + 0x1c]
call fcn.00491de0
mov eax, dword [esp + 0x20]
add esp, 0x10
mov eax, dword [eax + 0x10]
mov dword [esp + 0x30], eax
jmp 0x49337a
mov edx, dword [edx]
push 1
push eax
mov edx, dword [edx + 0x10]
call fcn.00492ad0
add esp, 8
mov ecx, dword [esp + 0x18]
inc esi
cmp esi, edi
jl 0x493330
mov edi, dword [esp + 0x4c]
mov eax, dword [esp + 0x34]
mov ecx, dword [edi + 0x74]
mov esi, dword [esp + 0x24]
mov edx, dword [eax + 0x18]
cmp dword [edi + 0x78], ecx
jg 0x4933af
push 0
push esi
push edx
mov edx, 0x46
mov ecx, edi
call fcn.0042a9a0
add esp, 0xc
jmp 0x4933da
lea eax, [ecx + 1]
mov dword [edi + 0x74], eax
lea ecx, [ecx + ecx*4]
mov eax, dword [edi + 0x70]
mov dword [eax + ecx*4], 0x46
mov dword [eax + ecx*4 + 4], edx
mov dword [eax + ecx*4 + 8], esi
mov dword [eax + ecx*4 + 0xc], 0
mov dword [eax + ecx*4 + 0x10], 0
mov ecx, dword [edi + 0x74]
lea eax, [esi + 1]
mov edx, dword [esp + 0x1c]
cmp dword [edi + 0x78], ecx
jg 0x4933fe
push 0
push eax
push edx
mov edx, 0x46
mov ecx, edi
call fcn.0042a9a0
add esp, 0xc
jmp 0x49342c
lea eax, [ecx + 1]
mov dword [edi + 0x74], eax
lea ecx, [ecx + ecx*4]
mov eax, dword [edi + 0x70]
mov dword [eax + ecx*4 + 4], edx
lea edx, [esi + 1]
mov dword [eax + ecx*4], 0x46
mov dword [eax + ecx*4 + 8], edx
mov dword [eax + ecx*4 + 0xc], 0
mov dword [eax + ecx*4 + 0x10], 0
mov ecx, dword [esp + 0x34]
or eax, 0xffffffff
mov edx, 0xfffffff9
cmp byte [ecx + 0x1c], 0
cmovne eax, edx
mov edx, 9
push eax
push dword [ecx + 0x20]
mov ecx, edi
push esi
push dword [esp + 0x3c]
push dword [esp + 0x3c]
call fcn.0042ace0
mov edx, dword [esp + 0x48]
add esp, 0x14
mov eax, dword [esp + 0x68]
mov byte [edx + 0x1c], 0
cmp byte [eax + 0x53], 0
je 0x493474
mov dword [edx + 0x20], 0
mov ecx, dword [esp + 0x10]
mov esi, dword [esp + 0x64]
mov eax, dword [esp + 0x2c]
mov dword [ecx + 0x38], eax
mov eax, 0x3e
cmp byte [esi + 0x2e], 0
mov esi, 0xb3
cmovne eax, esi
mov byte [ecx + 0x35], al
mov eax, dword [edi + 0x74]
mov dword [ecx + 0x3c], eax
test dword [edx + 0x24], 0x800
je 0x4934af
mov eax, dword [ecx + 0x40]
mov dword [esp + 0x20], eax
jmp 0x4934b7
mov dword [esp + 0x20], 0
mov ecx, dword [esp + 0x1c]
mov esi, dword [esp + 0x24]
sub ecx, 1
mov dword [esp + 0x28], ecx
js 0x493787
lea eax, [esi + 2]
add eax, ecx
mov dword [esp + 0x18], eax
mov eax, dword [edx + 0x30]
mov esi, dword [eax + ecx*4]
mov eax, dword [esp + 0x20]
mov dword [esp + 0x38], esi
mov dx, word [esi + 0xc]
and dx, 1
lea eax, [eax - 1]
cmove eax, dword [esp + 0x20]
mov dword [esp + 0x20], eax
cmp ecx, 0x10
jae 0x49351f
mov eax, dword [esp + 0x34]
mov ax, word [eax + 0x1e]
shr ax, cl
test al, 1
je 0x49351b
mov ecx, dword [esp + 0x10]
mov edx, esi
call fcn.00491a20
jmp 0x4936d9
mov ecx, dword [esp + 0x28]
test dx, dx
je 0x4936dd
mov eax, dword [esi]
mov ecx, dword [eax + 0xc]
mov al, byte [ecx]
cmp al, 0xaf
jne 0x493536
mov al, byte [ecx + 2]
cmp al, 0xb0
jne 0x49353f
mov eax, dword [ecx + 0x14]
jmp 0x493549
cmp al, 0x89
jne 0x493552
mov eax, dword [ecx + 0x14]
mov eax, dword [eax + 0x1c]
cmp dword [eax], 1
jne 0x4936d9
mov eax, dword [esp + 0x68]
cmp byte [eax + 0x53], 0
jne 0x4935f9
mov eax, dword [esp + 0x20]
lea ecx, [eax + eax*4]
mov eax, dword [esp + 0x10]
mov eax, dword [eax + 0x44]
mov ecx, dword [eax + ecx*4 + 4]
test ecx, ecx
jns 0x49357a
mov ecx, dword [edi + 0x74]
dec ecx
mov eax, dword [edi]
cmp byte [eax + 0x53], 0
je 0x493589
mov eax, 0x4edf68
jmp 0x493592
mov eax, dword [edi + 0x70]
lea ecx, [ecx + ecx*4]
lea eax, [eax + ecx*4]
mov ecx, dword [eax + 4]
mov edx, dword [eax + 0xc]
mov esi, dword [eax + 8]
mov al, byte [eax]
mov dword [esp + 0x30], ecx
mov ecx, dword [edi + 0x74]
mov byte [esp + 0x5b], al
cmp dword [edi + 0x78], ecx
jg 0x4935c3
mov ecx, dword [esp + 0x30]
push edx
push esi
push ecx
movzx edx, al
mov ecx, edi
call fcn.0042a9a0
add esp, 0xc
jmp 0x4935f9
lea eax, [ecx + 1]
mov dword [edi + 0x74], eax
lea ecx, [ecx + ecx*4]
mov eax, dword [edi + 0x70]
mov dword [eax + ecx*4 + 8], esi
mov dword [eax + ecx*4 + 0xc], edx
mov dword [eax + ecx*4 + 0x10], 0
lea eax, [eax + ecx*4]
mov cl, byte [esp + 0x5b]
mov byte [eax + 1], 0
mov byte [eax], cl
xor ecx, ecx
mov word [eax + 2], cx
mov ecx, dword [esp + 0x30]
mov dword [eax + 4], ecx
mov eax, dword [esp + 8]
push 0
push 0x34
mov ecx, dword [eax]
call fcn.00404a90
mov esi, eax
add esp, 8
test esi, esi
je 0x4936d9
push 0x34
push 0
push esi
call fcn.004c0cc0
add esp, 0xc
mov byte [esi], 0x35
or eax, 0xffffffff
mov ecx, esi
mov word [esi + 0x22], ax
call fcn.00442aa0
mov ecx, dword [esp + 8]
mov eax, dword [ecx]
mov eax, dword [eax + 0x84]
cmp dword [esi + 0x18], eax
jle 0x493653
push eax
push str.Expression_tree_is_too_large__maximum_depth__d_
push ecx
call fcn.00407e90
add esp, 0xc
mov eax, dword [esp + 0x38]
mov ecx, dword [esp + 0x68]
push 0
push 0x35
mov eax, dword [eax]
mov eax, dword [eax + 0xc]
mov dword [esi + 0xc], eax
call fcn.00404a90
add esp, 8
mov dword [esp + 0x38], eax
test eax, eax
je 0x4936c4
push 0x34
push 0
push eax
call fcn.004c0cc0
mov ecx, dword [esp + 0x44]
or eax, 0xffffffff
add esp, 0xc
mov word [ecx + 0x22], ax
lea eax, [ecx + 0x34]
mov dword [ecx + 8], eax
mov byte [ecx], 0xaf
mov byte [eax], 0
mov eax, dword [esp + 0x18]
mov dword [ecx + 0x18], 1
mov dword [esi + 0x10], ecx
mov dword [ecx + 0x1c], eax
mov eax, dword [esp + 0x10]
push 0x10
push dword [eax + 0x18]
push esi
push dword [esp + 0x14]
call fcn.0044b490
add esp, 0x10
jmp 0x4936c7
mov dword [esi + 0x10], eax
mov ecx, dword [esp + 0x68]
mov edx, esi
mov dword [esi + 0xc], 0
call fcn.00443540
mov ecx, dword [esp + 0x28]
dec dword [esp + 0x18]
dec ecx
mov edx, dword [esp + 0x34]
mov dword [esp + 0x28], ecx
test ecx, ecx
jns 0x4934d5
jmp 0x493787
test dl, 5
setne cl
bt edx, 8
setb al
test al, cl
je 0x49383c
mov eax, dword [esp + 0x34]
mov ecx, dword [esp + 0x54]
mov eax, dword [eax + 0x30]
mov edx, dword [eax]
mov eax, dword [esp + 8]
inc dword [eax + 0x2c]
mov esi, dword [eax + 0x2c]
push esi
push ecx
push 0
push dword [esp + 0x1c]
mov ecx, eax
call fcn.00491de0
mov edx, eax
add esp, 0x10
cmp edx, esi
je 0x493757
test esi, esi
je 0x493757
mov ecx, dword [esp + 8]
mov al, byte [ecx + 0x13]
cmp al, 8
jae 0x493757
movzx eax, al
mov dword [ecx + eax*4 + 0x98], esi
inc byte [ecx + 0x13]
mov eax, dword [esp + 0x10]
mov ecx, dword [edi + 0x74]
mov esi, dword [eax + 0x10]
cmp dword [edi + 0x78], ecx
jg 0x493808
push edx
push esi
push dword [esp + 0x34]
mov edx, 0x20
mov ecx, edi
call fcn.0042a9a0
add esp, 0xc
mov eax, dword [esp + 0x10]
mov byte [eax + 0x35], 0xb3
xor eax, eax
neg eax
sbb ecx, ecx
add ecx, 2
mov dword [esp + 0x60], ecx
mov ecx, dword [esp + 0x84]
nop dword [eax + eax]
mov eax, dword [ecx + 0xc]
xor edx, edx
mov esi, dword [ecx + 0x14]
mov dword [esp + 0x18], edx
mov dword [esp + 0x38], eax
test eax, eax
jle 0x495b4c
nop dword [eax + eax]
xor eax, eax
mov dword [esp + 0x30], eax
movzx eax, word [esi + 0xa]
mov ecx, eax
mov dword [esp + 0x88], ecx
test al, 6
jne 0x495b31
mov eax, dword [esp + 0x10]
mov edi, dword [esp + 0x10]
mov ecx, dword [esi + 0x28]
and ecx, dword [eax + 0x50]
mov eax, dword [esi + 0x2c]
and eax, dword [edi + 0x54]
or ecx, eax
mov edi, dword [esp + 0x4c]
je 0x49596a
mov eax, dword [esp + 0x64]
or dword [eax + 0x30], 2
jmp 0x495b31
lea eax, [ecx + 1]
mov dword [edi + 0x74], eax
lea ecx, [ecx + ecx*4]
mov eax, dword [edi + 0x70]
mov edi, dword [esp + 0x2c]
mov dword [eax + ecx*4 + 4], edi
mov edi, dword [esp + 0x4c]
mov dword [eax + ecx*4], 0x20
mov dword [eax + ecx*4 + 8], esi
mov dword [eax + ecx*4 + 0xc], edx
mov dword [eax + ecx*4 + 0x10], 0
jmp 0x49377f
mov eax, edx
and eax, 0x102
cmp eax, 0x102
jne 0x493bf9
xor ecx, ecx
mov dword [esp + 0x30], 0
mov eax, 0xb3
mov dword [esp + 0x18], ecx
xor esi, esi
mov dword [esp + 0x44], eax
test dl, 0x20
je 0x49387f
mov eax, dword [esp + 0x34]
mov dword [esp + 0x60], 4
mov eax, dword [eax + 0x30]
mov esi, dword [eax]
jmp 0x493883
mov dword [esp + 0x60], ecx
test dl, 0x10
je 0x49389a
mov eax, dword [esp + 0x34]
mov ecx, dword [esp + 0x60]
mov eax, dword [eax + 0x30]
mov ecx, dword [ecx + eax]
mov dword [esp + 0x18], ecx
mov eax, dword [esp + 0x54]
test eax, eax
je 0x4938a8
mov dword [esp + 0x18], esi
mov esi, ecx
test esi, esi
je 0x4939df
mov ecx, dword [esi]
mov dword [esp + 0x20], 0x1917181a
mov dword [esp + 0x60], ecx
mov edx, dword [ecx + 0x10]
mov al, byte [edx]
cmp al, 0xaf
jne 0x4938ca
mov al, byte [edx + 2]
cmp al, 0xb0
jne 0x4938d3
mov eax, dword [edx + 0x14]
jmp 0x4938dd
cmp al, 0x89
jne 0x49392c
mov eax, dword [edx + 0x14]
mov eax, dword [eax + 0x1c]
cmp dword [eax], 1
jle 0x49392c
mov edx, dword [esp + 8]
mov al, byte [edx + 0x13]
test al, al
jne 0x4938f5
inc dword [edx + 0x2c]
mov esi, dword [edx + 0x2c]
jmp 0x493904
dec al
mov byte [edx + 0x13], al
movzx eax, al
mov esi, dword [edx + eax*4 + 0x98]
mov edx, dword [ecx + 0x10]
mov ecx, dword [esp + 8]
push 1
push esi
call fcn.00492ad0
mov ecx, dword [esp + 0x68]
add esp, 8
mov edx, esi
movzx eax, byte [ecx]
inc eax
and eax, 2
or eax, 1
mov al, byte [esp + eax + 0x20]
jmp 0x49395f
mov ecx, dword [esp + 8]
lea eax, [esp + 0x38]
push eax
call fcn.0044a8d0
mov ecx, dword [esp + 0x14]
add esp, 4
mov edx, esi
mov dword [esp + 0x7c], eax
call fcn.00491a20
mov ecx, dword [esp + 0x60]
mov esi, dword [esp + 0x38]
mov edx, dword [esp + 0x7c]
movzx eax, byte [ecx]
mov al, byte [esp + eax - 0x16]
mov ecx, dword [edi + 0x74]
mov byte [esp + 0xf], al
cmp dword [edi + 0x78], ecx
jg 0x493983
push edx
push dword [esp + 0x2c]
movzx edx, al
mov ecx, edi
push dword [esp + 0x34]
call fcn.0042a9a0
add esp, 0xc
jmp 0x4939bd
lea eax, [ecx + 1]
mov dword [edi + 0x74], eax
lea ecx, [ecx + ecx*4]
mov eax, dword [edi + 0x70]
mov dword [eax + ecx*4 + 0xc], edx
mov dword [eax + ecx*4 + 0x10], 0
mov byte [eax + ecx*4 + 1], 0
lea eax, [eax + ecx*4]
mov cl, byte [esp + 0xf]
mov byte [eax], cl
xor ecx, ecx
mov word [eax + 2], cx
mov ecx, dword [esp + 0x2c]
mov dword [eax + 4], ecx
mov ecx, dword [esp + 0x28]
mov dword [eax + 8], ecx
mov ecx, dword [esp + 8]
test esi, esi
je 0x493a46
mov al, byte [ecx + 0x13]
cmp al, 8
jae 0x493a46
movzx eax, al
mov dword [ecx + eax*4 + 0x98], esi
inc byte [ecx + 0x13]
jmp 0x493a46
mov ecx, dword [edi + 0x74]
xor eax, 1
lea edx, [eax*4 + 0x22]
cmp dword [edi + 0x78], ecx
jg 0x493a08
mov ecx, dword [esp + 0x70]
push 0
push ecx
push dword [esp + 0x34]
mov ecx, edi
call fcn.0042a9a0
add esp, 0xc
jmp 0x493a42
lea eax, [ecx + 1]
mov dword [edi + 0x74], eax
lea ecx, [ecx + ecx*4]
mov eax, dword [edi + 0x70]
mov byte [eax + ecx*4], dl
mov dword [eax + ecx*4 + 0xc], 0
mov dword [eax + ecx*4 + 0x10], 0
lea eax, [eax + ecx*4]
xor ecx, ecx
mov byte [eax + 1], 0
mov word [eax + 2], cx
mov ecx, dword [esp + 0x2c]
mov dword [eax + 4], ecx
mov ecx, dword [esp + 0x70]
mov dword [eax + 8], ecx
mov ecx, dword [esp + 8]
mov esi, dword [esp + 0x18]
test esi, esi
je 0x493afc
mov eax, dword [esi]
inc dword [ecx + 0x2c]
mov ecx, dword [ecx + 0x2c]
push 1
mov edx, dword [eax + 0x10]
mov dword [esp + 0x34], ecx
push ecx
mov ecx, dword [esp + 0x10]
mov dword [esp + 0x20], eax
call fcn.00492ad0
mov ecx, dword [esp + 0x20]
add esp, 8
mov ecx, dword [ecx + 0x10]
mov dl, byte [ecx]
mov al, dl
cmp al, 0xaf
jne 0x493a86
mov al, byte [ecx + 2]
cmp al, 0xb0
jne 0x493a8f
mov eax, dword [ecx + 0x14]
jmp 0x493a99
cmp al, 0x89
jne 0x493a9e
mov eax, dword [ecx + 0x14]
mov eax, dword [eax + 0x1c]
cmp dword [eax], 1
jg 0x493aac
mov eax, dword [esp + 0x18]
mov al, byte [eax]
cmp al, 0x38
je 0x493ab9
cmp al, 0x36
je 0x493ab9
mov eax, dword [esp + 0x54]
lea eax, [eax*2 + 0x36]
jmp 0x493ac7
mov eax, dword [esp + 0x54]
xor eax, 1
lea eax, [eax*2 + 0x37]
mov dword [esp + 0x44], eax
cmp dl, 0xaf
jne 0x493ad3
mov dl, byte [ecx + 2]
cmp dl, 0xb0
jne 0x493add
mov eax, dword [ecx + 0x14]
jmp 0x493ae8
cmp dl, 0x89
jne 0x493aed
mov eax, dword [ecx + 0x14]
mov eax, dword [eax + 0x1c]
cmp dword [eax], 1
jg 0x493afc
mov edx, esi
mov esi, dword [esp + 0x10]
mov ecx, esi
call fcn.00491a20
jmp 0x493b00
mov esi, dword [esp + 0x10]
cmp dword [esp + 0x54], 0
mov ecx, dword [edi + 0x74]
sete al
mov dword [esi + 0x3c], ecx
add al, 4
cmp dword [esp + 0x44], 0xb3
mov byte [esi + 0x35], al
mov eax, dword [esp + 0x2c]
mov dword [esi + 0x38], eax
je 0x493787
mov eax, dword [esp + 8]
inc dword [eax + 0x2c]
mov ecx, dword [edi + 0x74]
mov esi, dword [eax + 0x2c]
cmp dword [edi + 0x78], ecx
jg 0x493b52
push 0
push esi
push dword [esp + 0x34]
mov edx, 0x85
mov ecx, edi
call fcn.0042a9a0
add esp, 0xc
jmp 0x493b81
mov edx, dword [esp + 0x2c]
lea eax, [ecx + 1]
mov dword [edi + 0x74], eax
lea ecx, [ecx + ecx*4]
mov eax, dword [edi + 0x70]
mov dword [eax + ecx*4], 0x85
mov dword [eax + ecx*4 + 4], edx
mov dword [eax + ecx*4 + 8], esi
mov dword [eax + ecx*4 + 0xc], 0
mov dword [eax + ecx*4 + 0x10], 0
mov ecx, dword [edi + 0x74]
mov edx, dword [esp + 0x44]
cmp dword [edi + 0x78], ecx
jg 0x493ba3
mov ecx, dword [esp + 0x30]
push esi
push dword [esp + 0x2c]
push ecx
mov ecx, edi
call fcn.0042a9a0
add esp, 0xc
jmp 0x493bd9
lea eax, [ecx + 1]
mov dword [edi + 0x74], eax
lea ecx, [ecx + ecx*4]
mov eax, dword [edi + 0x70]
mov byte [eax + ecx*4], dl
mov dword [eax + ecx*4 + 0xc], esi
mov dword [eax + ecx*4 + 0x10], 0
lea eax, [eax + ecx*4]
xor ecx, ecx
mov byte [eax + 1], 0
mov word [eax + 2], cx
mov ecx, dword [esp + 0x30]
mov dword [eax + 4], ecx
mov ecx, dword [esp + 0x28]
mov dword [eax + 8], ecx
mov eax, dword [edi + 0x74]
test eax, eax
jle 0x493787
lea ecx, [eax + eax*4]
mov edx, 0x53
mov eax, dword [edi + 0x70]
mov word [eax + ecx*4 - 0x12], dx
jmp 0x493787
test edx, 0x200
je 0x494d09
mov esi, dword [esp + 0x34]
mov dword [esp + 0x78], 0
mov dword [esp + 0x44], 0
movzx eax, word [esi + 0x1a]
movzx ecx, word [esi + 0x18]
mov dword [esp + 0x80], eax
movzx eax, word [esi + 0x1c]
xor esi, esi
mov dword [esp + 0x28], eax
xor eax, eax
mov dword [esp + 0x20], eax
mov byte [esp + 0xf], al
mov byte [esp + 0x5b], al
mov dword [esp + 0x48], eax
mov dword [esp + 0x18], eax
mov eax, dword [esp + 0x34]
mov dword [esp + 0x24], ecx
movzx ecx, cx
mov eax, dword [eax + 0x20]
mov dword [esp + 0x6c], eax
mov eax, dword [esp + 0x10]
mov eax, dword [eax + 8]
mov dword [esp + 0x3c], eax
test dl, 0x20
je 0x493c7d
mov esi, dword [esp + 0x34]
mov eax, dword [esi + 0x30]
movzx esi, word [esi + 0x1a]
mov eax, dword [eax + ecx*4]
inc ecx
mov dword [esp + 0x78], eax
test dl, 0x10
je 0x493d8c
mov edx, dword [esp + 0x34]
mov eax, dword [edx + 0x30]
movzx edx, word [edx + 0x1c]
cmp esi, edx
mov ecx, dword [eax + ecx*4]
cmova edx, esi
mov eax, 0x100
mov dword [esp + 0x44], ecx
mov dword [esp + 0x38], edx
test word [ecx + 0xa], ax
je 0x493d48
mov eax, dword [esp + 8]
inc dword [eax + 0x2c]
mov edx, dword [eax + 0x2c]
mov eax, dword [esp + 0x10]
mov dword [eax + 0x2c], edx
mov ecx, dword [edi + 0x74]
cmp dword [edi + 0x78], ecx
jg 0x493cdf
push 0
push edx
push 1
mov edx, 0x46
mov ecx, edi
call fcn.0042a9a0
add esp, 0xc
jmp 0x493d0e
lea eax, [ecx + 1]
mov dword [edi + 0x74], eax
lea ecx, [ecx + ecx*4]
mov eax, dword [edi + 0x70]
mov dword [eax + ecx*4], 0x46
mov dword [eax + ecx*4 + 4], 1
mov dword [eax + ecx*4 + 8], edx
mov dword [eax + ecx*4 + 0xc], 0
mov dword [eax + ecx*4 + 0x10], 0
mov ecx, dword [esp + 0x10]
xor edx, edx
mov eax, dword [edi + 0x74]
mov esi, dword [ecx + 0x2c]
mov dword [ecx + 0x30], eax
add esi, esi
mov eax, dword [esp + 0x6c]
mov dword [ecx + 0x2c], esi
mov ecx, dword [esp + 0x24]
movzx ecx, cx
mov eax, dword [eax + 0x1c]
cmp byte [ecx + eax], 1
mov eax, dword [esp + 0x10]
sete dl
xor edx, dword [esp + 0x54]
or edx, esi
mov dword [eax + 0x2c], edx
mov edx, dword [esp + 0x38]
cmp dword [esp + 0x78], 0
mov esi, edx
jne 0x493d8c
mov esi, dword [esp + 0x6c]
mov eax, dword [esp + 0x24]
movzx ecx, ax
mov eax, dword [esi + 4]
movsx ecx, word [eax + ecx*2]
mov dword [esp + 0x38], ecx
test ecx, ecx
js 0x493d7e
mov eax, dword [esi + 0xc]
add ecx, ecx
mov eax, dword [eax + 4]
test byte [eax + ecx*8 + 4], 0xf
je 0x493d85
mov ecx, dword [esp + 0x38]
mov esi, edx
cmp ecx, 0xfffffffe
jne 0x493d8c
mov byte [esp + 0xf], 1
mov esi, edx
mov eax, dword [esp + 0x34]
mov eax, dword [eax + 0x24]
test al, 0x30
jne 0x493e2f
test eax, 0x80000
je 0x493e2f
mov edx, dword [esp + 8]
mov esi, 1
mov ecx, dword [esp + 0x10]
mov byte [esp + 0xf], 1
inc dword [edx + 0x2c]
cmp dword [ecx], 0
mov eax, dword [edx + 0x2c]
mov dword [esp + 0x48], eax
mov dword [ecx + 0x24], eax
je 0x493e25
mov ecx, dword [edi + 0x74]
cmp dword [edi + 0x78], ecx
jg 0x493dea
push 0
push eax
push 0
lea edx, [esi + 0x45]
mov ecx, edi
call fcn.0042a9a0
mov edx, dword [esp + 0x14]
add esp, 0xc
jmp 0x493e21
lea eax, [ecx + 1]
mov dword [edi + 0x74], eax
lea ecx, [ecx + ecx*4]
mov eax, dword [edi + 0x70]
mov edi, dword [esp + 0x48]
mov dword [eax + ecx*4 + 8], edi
mov edi, dword [esp + 0x4c]
mov dword [eax + ecx*4], 0x46
mov dword [eax + ecx*4 + 4], 0
mov dword [eax + ecx*4 + 0xc], 0
mov dword [eax + ecx*4 + 0x10], 0
mov ecx, dword [esp + 0x10]
mov eax, dword [edx + 0x38]
dec eax
mov dword [edx + 0x38], eax
mov dword [ecx + 0x28], eax
mov edx, dword [esp + 0x6c]
mov eax, dword [esp + 0x24]
cmp ax, word [edx + 0x34]
jae 0x493e8a
movzx ecx, ax
mov eax, dword [edx + 0x1c]
xor edx, edx
cmp byte [ecx + eax], dl
sete dl
cmp dword [esp + 0x54], edx
jne 0x493e8a
mov eax, dword [esp + 0x44]
mov ecx, dword [esp + 0x78]
mov edx, dword [esp + 0x28]
mov dword [esp + 0x78], eax
mov al, byte [esp + 0xf]
mov byte [esp + 0x5b], al
mov eax, dword [esp + 0x80]
mov dword [esp + 0x44], ecx
movzx ecx, dx
movzx eax, al
mov byte [esp + 0xf], 0
mov dword [esp + 0x80], ecx
mov dword [esp + 0x28], eax
cmp dword [ebp + 0xc], 0
jle 0x493ef1
mov eax, dword [esp + 0x34]
test dword [eax + 0x24], 0x100000
je 0x493ef1
mov ecx, dword [edi + 0x74]
cmp dword [edi + 0x78], ecx
jg 0x493ebe
push 0
push 0
push dword [esp + 0x44]
mov edx, 0x86
mov ecx, edi
call fcn.0042a9a0
add esp, 0xc
jmp 0x493ef1
mov edx, dword [esp + 0x3c]
lea eax, [ecx + 1]
mov dword [edi + 0x74], eax
lea ecx, [ecx + ecx*4]
mov eax, dword [edi + 0x70]
mov dword [eax + ecx*4], 0x86
mov dword [eax + ecx*4 + 4], edx
mov dword [eax + ecx*4 + 8], 0
mov dword [eax + ecx*4 + 0xc], 0
mov dword [eax + ecx*4 + 0x10], 0
mov ecx, dword [esp + 8]
lea eax, [esp + 0x60]
push eax
push esi
push dword [esp + 0x5c]
mov esi, dword [esp + 0x1c]
mov edx, esi
call fcn.00492450
mov ecx, dword [esp + 0x6c]
add esp, 0xc
mov dword [esp + 0x5c], eax
test ecx, ecx
je 0x493f84
cmp word [esp + 0x28], 0
je 0x493f84
mov eax, dword [esp + 0x24]
movzx esi, ax
add esi, ecx
jne 0x493f34
xor eax, eax
mov dword [esp + 0x20], eax
jmp 0x493f80
mov ecx, esi
lea edx, [ecx + 1]
nop dword [eax]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x493f40
sub ecx, edx
push 0
lea eax, [ecx + 1]
mov ecx, dword [esp + 0x6c]
mov dword [esp + 0x3c], eax
push eax
test ecx, ecx
je 0x493f62
call fcn.00404a90
jmp 0x493f67
call fcn.004043b0
add esp, 8
mov dword [esp + 0x20], eax
test eax, eax
je 0x493f80
push dword [esp + 0x38]
push esi
push eax
call fcn.004c2130
add esp, 0xc
mov esi, dword [esp + 0x10]
mov ecx, dword [esp + 0x48]
test ecx, ecx
je 0x493f99
mov ecx, dword [esi + 0x28]
mov dword [esp + 0x40], ecx
mov ecx, dword [esp + 0x48]
jmp 0x493fa0
mov eax, dword [esi + 0x10]
mov dword [esp + 0x40], eax
mov eax, dword [esp + 0x78]
test eax, eax
je 0x493fb6
test byte [eax + 0xc], 0x28
mov dword [esp + 0x1c], 0
je 0x493fbe
mov dword [esp + 0x1c], 1
mov edx, dword [esp + 0x44]
test edx, edx
je 0x493fd4
test byte [edx + 0xc], 0x28
mov dword [esp + 0x30], 0
je 0x493fdc
mov dword [esp + 0x30], 1
mov edx, dword [esp + 0x24]
test eax, eax
jne 0x494034
test dx, dx
jne 0x494034
movzx esi, dx
mov dword [esp + 0x70], eax
mov dword [esp + 0x50], esi
mov al, byte [esp + 0xf]
test al, al
je 0x4941bb
mov ecx, dword [edi + 0x74]
movzx edx, dx
add edx, dword [esp + 0x5c]
mov dword [esp + 0x1c], 0
cmp dword [edi + 0x78], ecx
jg 0x4941ac
push 0
push edx
push 0
mov edx, 0x49
mov ecx, edi
call fcn.0042a9a0
add esp, 0xc
jmp 0x494217
movzx esi, dx
mov dword [esp + 0x70], 1
mov dword [esp + 0x50], esi
test eax, eax
je 0x493ff4
mov eax, dword [eax]
mov ecx, dword [esp + 0x5c]
mov esi, dword [eax + 0x10]
movzx eax, dx
mov edx, esi
add ecx, eax
mov eax, dword [esp + 0x80]
movzx eax, ax
push eax
mov dword [esp + 0x78], ecx
push ecx
mov ecx, dword [esp + 0x10]
call fcn.00492ad0
mov eax, dword [esp + 0x80]
mov ecx, 0x100
add esp, 8
test word [eax + 0xa], cx
je 0x4940cb
mov eax, dword [edi + 0x74]
lea ecx, [eax + eax*4]
mov eax, dword [edi]
shl ecx, 2
cmp byte [eax + 0x53], 0
je 0x4940a2
mov ecx, 0x4edf74
mov edx, 0x4edf6a
jmp 0x4940ad
mov eax, dword [edi + 0x70]
add eax, ecx
lea ecx, [eax - 8]
lea edx, [eax - 0x12]
mov eax, dword [esp + 0x10]
mov eax, dword [eax + 0x2c]
shr eax, 1
mov dword [ecx], eax
mov eax, dword [esp + 0x10]
mov al, byte [eax + 0x2c]
and al, 1
movzx eax, al
mov word [edx], ax
mov eax, dword [esp + 0x78]
test byte [eax + 0xa], 0x80
jne 0x49412f
mov ecx, esi
call fcn.00444e10
test eax, eax
je 0x49412f
mov ecx, dword [edi + 0x74]
mov edx, dword [esp + 0x74]
cmp dword [edi + 0x78], ecx
jg 0x494100
push 0
push dword [esp + 0x44]
mov ecx, edi
push edx
mov edx, 0x32
call fcn.0042a9a0
add esp, 0xc
jmp 0x49412f
lea eax, [ecx + 1]
mov dword [edi + 0x74], eax
lea ecx, [ecx + ecx*4]
mov eax, dword [edi + 0x70]
mov dword [eax + ecx*4 + 4], edx
mov edx, dword [esp + 0x40]
mov dword [eax + ecx*4], 0x32
mov dword [eax + ecx*4 + 8], edx
mov dword [eax + ecx*4 + 0xc], 0
mov dword [eax + ecx*4 + 0x10], 0
mov ecx, dword [esp + 0x60]
test ecx, ecx
je 0x494155
mov eax, dword [esp + 0x24]
movzx eax, ax
add eax, ecx
mov ecx, esi
push eax
mov eax, dword [esp + 0x84]
movzx edx, ax
call fcn.00491aa0
add esp, 4
mov eax, dword [esp + 0x80]
movzx eax, ax
add dword [esp + 0x50], eax
mov al, byte [esi]
cmp al, 0xaf
jne 0x49416c
mov al, byte [esi + 2]
cmp al, 0xb0
jne 0x494175
mov eax, dword [esi + 0x14]
jmp 0x49417f
cmp al, 0x89
jne 0x494197
mov eax, dword [esi + 0x14]
mov eax, dword [eax + 0x1c]
cmp dword [eax], 1
jle 0x494197
xor al, al
mov dword [esp + 0x1c], 1
mov byte [esp + 0xf], al
jmp 0x494228
mov edx, dword [esp + 0x78]
mov ecx, dword [esp + 0x10]
call fcn.00491a20
xor al, al
mov byte [esp + 0xf], al
jmp 0x494228
mov esi, dword [esp + 0x50]
lea eax, [ecx + 1]
mov dword [edi + 0x74], eax
mov eax, dword [edi + 0x70]
jmp 0x4941f1
test ecx, ecx
je 0x494228
mov ecx, dword [edi + 0x74]
movzx edx, dx
add edx, dword [esp + 0x5c]
cmp dword [edi + 0x78], ecx
jg 0x4941e4
push 0
push edx
push 0
mov edx, 0x49
mov ecx, edi
call fcn.0042a9a0
add esp, 0xc
jmp 0x494217
lea eax, [ecx + 1]
mov dword [edi + 0x74], eax
mov eax, dword [edi + 0x70]
mov edi, dword [esp + 0x4c]
lea ecx, [ecx + ecx*4]
mov dword [eax + ecx*4], 0x49
mov dword [eax + ecx*4 + 0x10], 0
mov dword [eax + ecx*4 + 0xc], 0
mov dword [eax + ecx*4 + 8], edx
mov dword [eax + ecx*4 + 4], 0
mov al, byte [esp + 0xf]
inc esi
mov dword [esp + 0x50], esi
mov dword [esp + 0x70], 1
mov ecx, dword [esp + 0x50]
mov edx, ecx
mov esi, dword [esp + 0x60]
movzx eax, al
sub edx, eax
mov eax, dword [esp + 0x5c]
test esi, esi
je 0x494283
test edx, edx
jle 0x49424f
cmp byte [esi], 0x41
jg 0x49424f
dec edx
inc eax
inc esi
test edx, edx
jg 0x494243
cmp edx, 1
jle 0x494261
cmp byte [esi + edx - 1], 0x41
jg 0x494265
dec edx
cmp edx, 1
jg 0x494254
test edx, edx
jle 0x494283
push edx
push esi
push 0
push edx
push eax
mov eax, dword [esp + 0x1c]
mov edx, 0x5e
mov ecx, dword [eax + 8]
call fcn.0042ace0
mov ecx, dword [esp + 0x64]
add esp, 0x14
mov esi, dword [esp + 0x34]
movzx eax, word [esi + 0x2a]
test ax, ax
je 0x494298
cmp ecx, eax
je 0x494508
mov edx, dword [esp + 0x48]
test edx, edx
je 0x4942ed
mov ecx, dword [edi + 0x74]
cmp dword [edi + 0x78], ecx
jg 0x4942be
push 0
push edx
push 1
mov edx, 0x46
mov ecx, edi
call fcn.0042a9a0
add esp, 0xc
jmp 0x4942ed
lea eax, [ecx + 1]
mov dword [edi + 0x74], eax
lea ecx, [ecx + ecx*4]
mov eax, dword [edi + 0x70]
mov dword [eax + ecx*4], 0x46
mov dword [eax + ecx*4 + 4], 1
mov dword [eax + ecx*4 + 8], edx
mov dword [eax + ecx*4 + 0xc], 0
mov dword [eax + ecx*4 + 0x10], 0
test dword [esi + 0x24], 0x100000
mov ecx, dword [esp + 0x1c]
mov eax, dword [esp + 0x70]
lea eax, [ecx + eax*2]
mov ecx, dword [esp + 0x54]
mov al, byte [ecx + eax*2 + 0x4e690c]
mov byte [esp + 0x17], al
movzx eax, al
mov dword [esp + 0x38], eax
je 0x494393
cmp eax, 0x19
jne 0x494393
mov eax, dword [esp + 0x6c]
mov eax, dword [eax + 8]
movsx ecx, word [eax]
mov eax, 0x66666667
add ecx, 9
imul ecx
sar edx, 2
mov esi, edx
shr esi, 0x1f
add esi, edx
mov edx, dword [edi + 0x74]
mov dword [esp + 0x18], edx
cmp dword [edi + 0x78], edx
jg 0x494360
push 0
push 0
push esi
mov edx, 0x7a
mov ecx, edi
call fcn.0042a9a0
add esp, 0xc
mov dword [esp + 0x18], eax
jmp 0x49438f
lea eax, [edx + 1]
mov dword [edi + 0x74], eax
lea ecx, [edx + edx*4]
mov eax, dword [edi + 0x70]
mov dword [eax + ecx*4], 0x7a
mov dword [eax + ecx*4 + 4], esi
mov dword [eax + ecx*4 + 8], 0
mov dword [eax + ecx*4 + 0xc], 0
mov dword [eax + ecx*4 + 0x10], 0
mov eax, dword [esp + 0x38]
mov edx, dword [edi + 0x74]
cmp dword [edi + 0x78], edx
jg 0x4943b8
mov ecx, dword [esp + 0x5c]
mov edx, eax
push ecx
push dword [esp + 0x44]
mov ecx, edi
push dword [esp + 0x44]
call fcn.0042a9a0
add esp, 0xc
mov edx, eax
jmp 0x4943f5
lea eax, [edx + 1]
mov dword [edi + 0x74], eax
lea ecx, [edx + edx*4]
mov eax, dword [edi + 0x70]
mov dword [eax + ecx*4 + 0x10], 0
mov byte [eax + ecx*4 + 1], 0
lea eax, [eax + ecx*4]
mov cl, byte [esp + 0x17]
mov byte [eax], cl
xor ecx, ecx
mov word [eax + 2], cx
mov ecx, dword [esp + 0x3c]
mov dword [eax + 4], ecx
mov ecx, dword [esp + 0x40]
mov dword [eax + 8], ecx
mov ecx, dword [esp + 0x5c]
mov dword [eax + 0xc], ecx
mov eax, dword [edi]
mov esi, dword [esp + 0x50]
cmp byte [eax + 0x53], 0
jne 0x494410
mov eax, dword [edi + 0x70]
lea ecx, [edx + edx*4]
mov byte [eax + ecx*4 + 1], 0xfd
mov dword [eax + ecx*4 + 0x10], esi
mov eax, dword [esp + 0x48]
test eax, eax
je 0x49450c
mov ecx, dword [edi + 0x74]
lea edx, [ecx + 2]
cmp dword [edi + 0x78], ecx
jg 0x49443d
push 0
push edx
push 0
mov edx, 0xb
mov ecx, edi
call fcn.0042a9a0
add esp, 0xc
jmp 0x494470
mov esi, dword [esp + 0x50]
lea eax, [ecx + 1]
mov dword [edi + 0x74], eax
lea ecx, [ecx + ecx*4]
mov eax, dword [edi + 0x70]
mov dword [eax + ecx*4], 0xb
mov dword [eax + ecx*4 + 4], 0
mov dword [eax + ecx*4 + 8], edx
mov dword [eax + ecx*4 + 0xc], 0
mov dword [eax + ecx*4 + 0x10], 0
mov ecx, dword [esp + 0x54]
mov eax, 1
mov edx, dword [edi + 0x74]
cmp eax, esi
sbb eax, eax
and eax, 4
mov al, byte [eax + ecx + 0x4e690e]
mov byte [esp + 0x17], al
cmp dword [edi + 0x78], edx
jg 0x4944b0
push dword [esp + 0x5c]
movzx edx, al
mov ecx, edi
push dword [esp + 0x44]
push dword [esp + 0x44]
call fcn.0042a9a0
add esp, 0xc
mov edx, eax
jmp 0x4944ed
lea eax, [edx + 1]
mov dword [edi + 0x74], eax
lea ecx, [edx + edx*4]
mov eax, dword [edi + 0x70]
mov dword [eax + ecx*4 + 0x10], 0
mov byte [eax + ecx*4 + 1], 0
lea eax, [eax + ecx*4]
mov cl, byte [esp + 0x17]
mov byte [eax], cl
xor ecx, ecx
mov word [eax + 2], cx
mov ecx, dword [esp + 0x3c]
mov dword [eax + 4], ecx
mov ecx, dword [esp + 0x40]
mov dword [eax + 8], ecx
mov ecx, dword [esp + 0x5c]
mov dword [eax + 0xc], ecx
mov eax, dword [edi]
cmp byte [eax + 0x53], 0
jne 0x494508
mov eax, dword [edi + 0x70]
lea ecx, [edx + edx*4]
sub esi, dword [esp + 0x1c]
mov byte [eax + ecx*4 + 1], 0xfd
mov dword [eax + ecx*4 + 0x10], esi
mov eax, dword [esp + 0x48]
mov ecx, dword [esp + 0x24]
mov edx, dword [esp + 0x44]
movzx esi, cx
mov dword [esp + 0x1c], esi
test edx, edx
je 0x4946dd
cmp dword [esp + 0x18], 0
mov eax, dword [edx]
mov esi, dword [eax + 0x10]
mov dword [esp + 0x70], esi
je 0x49453d
mov edx, dword [esp + 0x10]
mov eax, dword [edi + 0x74]
mov dword [edx + 0x3c], eax
movzx eax, cx
mov edx, esi
mov ecx, dword [esp + 0x5c]
add ecx, eax
mov eax, dword [esp + 0x28]
movzx eax, ax
push eax
mov dword [esp + 0x78], ecx
push ecx
mov ecx, dword [esp + 0x10]
call fcn.00492ad0
mov eax, dword [esp + 0x4c]
mov ecx, 0x100
add esp, 8
test word [eax + 0xa], cx
je 0x4945b6
mov eax, dword [edi + 0x74]
lea ecx, [eax + eax*4]
mov eax, dword [edi]
shl ecx, 2
cmp byte [eax + 0x53], 0
je 0x49458d
mov ecx, 0x4edf74
mov edx, 0x4edf6a
jmp 0x494598
mov eax, dword [edi + 0x70]
add eax, ecx
lea ecx, [eax - 8]
lea edx, [eax - 0x12]
mov eax, dword [esp + 0x10]
mov eax, dword [eax + 0x2c]
shr eax, 1
mov dword [ecx], eax
mov eax, dword [esp + 0x10]
mov al, byte [eax + 0x2c]
and al, 1
movzx eax, al
mov word [edx], ax
mov eax, dword [esp + 0x44]
test byte [eax + 0xa], 0x80
jne 0x49461a
mov ecx, esi
call fcn.00444e10
test eax, eax
je 0x49461a
mov ecx, dword [edi + 0x74]
mov edx, dword [esp + 0x74]
cmp dword [edi + 0x78], ecx
jg 0x4945eb
push 0
push dword [esp + 0x44]
mov ecx, edi
push edx
mov edx, 0x32
call fcn.0042a9a0
add esp, 0xc
jmp 0x49461a
lea eax, [ecx + 1]
mov dword [edi + 0x74], eax
lea ecx, [ecx + ecx*4]
mov eax, dword [edi + 0x70]
mov dword [eax + ecx*4 + 4], edx
mov edx, dword [esp + 0x40]
mov dword [eax + ecx*4], 0x32
mov dword [eax + ecx*4 + 8], edx
mov dword [eax + ecx*4 + 0xc], 0
mov dword [eax + ecx*4 + 0x10], 0
mov eax, dword [esp + 0x20]
test eax, eax
je 0x494690
push eax
mov eax, dword [esp + 0x2c]
mov ecx, esi
movzx edx, ax
call fcn.00491aa0
mov eax, dword [esp + 0x2c]
add esp, 4
mov ecx, dword [esp + 0x24]
mov edx, dword [esp + 0x20]
movzx esi, cx
add esi, dword [esp + 0x5c]
movzx eax, ax
test eax, eax
je 0x49465c
nop
cmp byte [edx], 0x41
jg 0x49465c
dec eax
inc esi
inc edx
test eax, eax
jg 0x494650
cmp eax, 1
jle 0x49466e
cmp byte [eax + edx - 1], 0x41
jg 0x494672
dec eax
cmp eax, 1
jg 0x494661
test eax, eax
jle 0x49468c
push eax
push edx
push 0
push eax
mov eax, dword [esp + 0x18]
mov edx, 0x5e
push esi
mov ecx, dword [eax + 8]
call fcn.0042ace0
add esp, 0x14
mov esi, dword [esp + 0x70]
mov eax, dword [esp + 0x28]
movzx eax, ax
add dword [esp + 0x1c], eax
mov al, byte [esi]
cmp al, 0xaf
jne 0x4946a4
mov al, byte [esi + 2]
cmp al, 0xb0
jne 0x4946ad
mov eax, dword [esi + 0x14]
jmp 0x4946b7
cmp al, 0x89
jne 0x4946ca
mov eax, dword [esi + 0x14]
mov eax, dword [eax + 0x1c]
cmp dword [eax], 1
jle 0x4946ca
mov esi, dword [esp + 0x1c]
mov dword [esp + 0x30], 1
jmp 0x494741
mov edx, dword [esp + 0x44]
mov ecx, dword [esp + 0x10]
call fcn.00491a20
mov esi, dword [esp + 0x1c]
jmp 0x494741
cmp byte [esp + 0x5b], 0
je 0x494741
test eax, eax
jne 0x494740
movzx edx, cx
add edx, dword [esp + 0x5c]
mov ecx, dword [edi + 0x74]
cmp dword [edi + 0x78], ecx
jg 0x494709
push eax
push edx
push eax
lea edx, [eax + 0x49]
mov ecx, edi
call fcn.0042a9a0
add esp, 0xc
jmp 0x494738
lea eax, [ecx + 1]
mov dword [edi + 0x74], eax
lea ecx, [ecx + ecx*4]
mov eax, dword [edi + 0x70]
mov dword [eax + ecx*4], 0x49
mov dword [eax + ecx*4 + 4], 0
mov dword [eax + ecx*4 + 8], edx
mov dword [eax + ecx*4 + 0xc], 0
mov dword [eax + ecx*4 + 0x10], 0
mov dword [esp + 0x30], 0
inc esi
mov eax, dword [esp + 0x60]
test eax, eax
je 0x494754
mov ecx, dword [esp + 0x68]
mov edx, eax
call fcn.00404680
mov eax, dword [esp + 0x20]
test eax, eax
je 0x494767
mov ecx, dword [esp + 0x68]
mov edx, eax
call fcn.00404680
mov ecx, dword [esp + 0x10]
cmp dword [ecx + 0x3c], 0
jne 0x494777
mov eax, dword [edi + 0x74]
mov dword [ecx + 0x3c], eax
test esi, esi
je 0x494891
mov eax, dword [esp + 0x48]
test eax, eax
je 0x4947da
mov ecx, dword [edi + 0x74]
lea edx, [ecx + 3]
cmp dword [edi + 0x78], ecx
jg 0x4947a7
push 0
push edx
push eax
mov edx, 0x14
mov ecx, edi
call fcn.0042a9a0
add esp, 0xc
jmp 0x4947da
lea eax, [ecx + 1]
mov dword [edi + 0x74], eax
lea ecx, [ecx + ecx*4]
mov eax, dword [edi + 0x70]
mov edi, dword [esp + 0x48]
mov dword [eax + ecx*4 + 4], edi
mov edi, dword [esp + 0x4c]
mov dword [eax + ecx*4], 0x14
mov dword [eax + ecx*4 + 8], edx
mov dword [eax + ecx*4 + 0xc], 0
mov dword [eax + ecx*4 + 0x10], 0
mov eax, dword [esp + 0x30]
mov ecx, dword [esp + 0x54]
mov edx, dword [edi + 0x74]
mov al, byte [eax + ecx*2 + str.__]
mov byte [esp + 0x17], al
cmp dword [edi + 0x78], edx
jg 0x494812
push dword [esp + 0x5c]
movzx edx, al
mov ecx, edi
push dword [esp + 0x44]
push dword [esp + 0x44]
call fcn.0042a9a0
add esp, 0xc
mov edx, eax
jmp 0x49484f
lea eax, [edx + 1]
mov dword [edi + 0x74], eax
lea ecx, [edx + edx*4]
mov eax, dword [edi + 0x70]
mov dword [eax + ecx*4 + 0x10], 0
mov byte [eax + ecx*4 + 1], 0
lea eax, [eax + ecx*4]
mov cl, byte [esp + 0x17]
mov byte [eax], cl
xor ecx, ecx
mov word [eax + 2], cx
mov ecx, dword [esp + 0x3c]
mov dword [eax + 4], ecx
mov ecx, dword [esp + 0x40]
mov dword [eax + 8], ecx
mov ecx, dword [esp + 0x5c]
mov dword [eax + 0xc], ecx
mov eax, dword [edi]
cmp byte [eax + 0x53], 0
jne 0x494866
mov eax, dword [edi + 0x70]
lea ecx, [edx + edx*4]
mov byte [eax + ecx*4 + 1], 0xfd
mov dword [eax + ecx*4 + 0x10], esi
mov ecx, dword [esp + 0x18]
test ecx, ecx
je 0x494891
mov edx, dword [edi + 0x74]
jns 0x494876
lea ecx, [edx - 1]
mov eax, dword [edi]
cmp byte [eax + 0x53], 0
je 0x494885
mov eax, 0x4edf68
jmp 0x49488e
mov eax, dword [edi + 0x70]
lea ecx, [ecx + ecx*4]
lea eax, [eax + ecx*4]
mov dword [eax + 8], edx
mov eax, dword [esp + 0x48]
test eax, eax
je 0x494986
mov ecx, dword [edi + 0x74]
lea edx, [ecx + 2]
cmp dword [edi + 0x78], ecx
jg 0x4948bd
push 0
push edx
push eax
mov edx, 0x12
mov ecx, edi
call fcn.0042a9a0
add esp, 0xc
jmp 0x4948f0
lea eax, [ecx + 1]
mov dword [edi + 0x74], eax
lea ecx, [ecx + ecx*4]
mov eax, dword [edi + 0x70]
mov edi, dword [esp + 0x48]
mov dword [eax + ecx*4 + 4], edi
mov edi, dword [esp + 0x4c]
mov dword [eax + ecx*4], 0x12
mov dword [eax + ecx*4 + 8], edx
mov dword [eax + ecx*4 + 0xc], 0
mov dword [eax + ecx*4 + 0x10], 0
movzx eax, byte [esp + 0xf]
mov ecx, dword [esp + 0x54]
mov edx, dword [edi + 0x74]
mov al, byte [eax + ecx*2 + str.__]
mov byte [esp + 0x17], al
cmp dword [edi + 0x78], edx
jg 0x494929
push dword [esp + 0x5c]
movzx edx, al
mov ecx, edi
push dword [esp + 0x44]
push dword [esp + 0x44]
call fcn.0042a9a0
add esp, 0xc
mov edx, eax
jmp 0x494966
lea eax, [edx + 1]
mov dword [edi + 0x74], eax
lea ecx, [edx + edx*4]
mov eax, dword [edi + 0x70]
mov dword [eax + ecx*4 + 0x10], 0
mov byte [eax + ecx*4 + 1], 0
lea eax, [eax + ecx*4]
mov cl, byte [esp + 0x17]
mov byte [eax], cl
xor ecx, ecx
mov word [eax + 2], cx
mov ecx, dword [esp + 0x3c]
mov dword [eax + 4], ecx
mov ecx, dword [esp + 0x40]
mov dword [eax + 8], ecx
mov ecx, dword [esp + 0x5c]
mov dword [eax + 0xc], ecx
mov eax, dword [edi]
cmp byte [eax + 0x53], 0
jne 0x494986
mov eax, dword [edi + 0x70]
lea ecx, [edx + edx*4]
mov byte [eax + ecx*4 + 1], 0xfd
lea ecx, [eax + ecx*4]
movzx eax, byte [esp + 0xf]
add eax, esi
mov dword [ecx + 0x10], eax
mov eax, dword [esp + 0x34]
test dword [eax + 0x24], 0x40000
je 0x4949ef
mov eax, dword [esp + 0x24]
mov ecx, dword [edi + 0x74]
movzx edx, ax
movzx esi, ax
cmp dword [edi + 0x78], ecx
jg 0x4949bc
push edx
push esi
push dword [esp + 0x44]
mov edx, 0x7b
mov ecx, edi
call fcn.0042a9a0
add esp, 0xc
jmp 0x4949eb
lea eax, [ecx + 1]
mov dword [edi + 0x74], eax
lea ecx, [ecx + ecx*4]
mov eax, dword [edi + 0x70]
mov edi, dword [esp + 0x3c]
mov dword [eax + ecx*4 + 4], edi
mov edi, dword [esp + 0x4c]
mov dword [eax + ecx*4], 0x7b
mov dword [eax + ecx*4 + 8], esi
mov dword [eax + ecx*4 + 0xc], edx
mov dword [eax + ecx*4 + 0x10], 0
mov eax, dword [esp + 0x34]
test byte [eax + 0x24], 0x40
mov eax, dword [esp + 0x64]
je 0x494a6e
test byte [eax + 0x28], 0x20
jne 0x494a6e
mov dword [esp + 0x1c], 1
mov esi, dword [esp + 0x3c]
mov ecx, dword [esp + 0x2c]
mov eax, dword [esp + 0x10]
cmp dword [eax], 0
jne 0x494a50
mov eax, dword [esp + 0x64]
test byte [eax + 0x28], 0x20
jne 0x494a32
push eax
mov edx, ecx
mov ecx, dword [esp + 0x70]
push esi
call fcn.00492d50
add esp, 8
mov eax, dword [esp + 0x6c]
mov ecx, dword [eax + 0x24]
test ecx, ecx
je 0x494a50
push dword [esp + 0x84]
mov edx, dword [esp + 0x30]
call fcn.00492f50
add esp, 4
mov ecx, dword [esp + 0x34]
test dword [ecx + 0x24], 0x1000
je 0x494cc7
mov eax, dword [esp + 0x10]
mov byte [eax + 0x35], 0xb3
jmp 0x494cda
mov edx, dword [esp + 0x6c]
mov esi, dword [edx + 0xc]
test byte [esi + 0x1c], 0x80
jne 0x494a9b
mov esi, dword [esp + 0x3c]
mov ecx, eax
push esi
push dword [esp + 0x30]
call fcn.00492960
add esp, 8
mov dword [esp + 0x1c], 0
jmp 0x494a0b
mov ecx, dword [esp + 0x2c]
xor eax, eax
mov dword [esp + 0x1c], eax
cmp ecx, dword [esp + 0x3c]
je 0x494cbe
mov esi, dword [esi + 8]
mov dword [esp + 0x1c], eax
test esi, esi
je 0x494ad0
mov dword [esp + 0x1c], eax
nop
mov eax, dword [esi + 0x38]
and al, 3
cmp al, 2
je 0x494ad0
mov esi, dword [esi + 0x14]
test esi, esi
jne 0x494ac0
movzx ecx, word [esi + 0x32]
cmp ecx, 1
jne 0x494b05
mov ecx, dword [esp + 8]
mov al, byte [ecx + 0x13]
test al, al
jne 0x494af0
inc dword [ecx + 0x2c]
mov eax, dword [ecx + 0x2c]
mov dword [esp + 0x20], eax
jmp 0x494b48
dec al
mov byte [ecx + 0x13], al
movzx eax, al
mov eax, dword [ecx + eax*4 + 0x98]
mov dword [esp + 0x20], eax
jmp 0x494b48
mov edx, dword [esp + 8]
mov eax, dword [edx + 0x20]
mov edx, dword [edx + 0x1c]
mov dword [esp + 0x20], eax
cmp ecx, edx
jg 0x494b2d
mov edi, dword [esp + 8]
add eax, ecx
sub edx, ecx
mov dword [edi + 0x20], eax
mov eax, edi
mov edi, dword [esp + 0x4c]
mov dword [eax + 0x1c], edx
jmp 0x494b44
mov eax, dword [esp + 8]
mov eax, dword [eax + 0x2c]
lea edx, [eax + 1]
add eax, ecx
mov ecx, dword [esp + 8]
mov dword [esp + 0x20], edx
mov dword [ecx + 0x2c], eax
mov edx, dword [esp + 0x6c]
movzx eax, word [esi + 0x32]
mov dword [esp + 0x38], 0
mov ecx, eax
mov dword [esp + 0x74], 0
cmp word [esp + 0x38], ax
jae 0x494c37
mov eax, dword [esp + 0x20]
mov dword [esp + 0x18], eax
mov dword [esp + 0x30], 0
jmp 0x494b84
mov edx, dword [esp + 0x6c]
movzx edx, word [edx + 0x34]
xor ecx, ecx
test edx, edx
je 0x494bb9
mov eax, dword [esi + 4]
mov edi, dword [esp + 0x30]
movzx eax, word [edi + eax]
mov dword [esp + 0x38], eax
mov eax, dword [esp + 0x6c]
mov eax, dword [eax + 4]
mov edi, dword [esp + 0x38]
cmp di, word [eax]
mov edi, dword [esp + 0x4c]
je 0x494be1
inc ecx
add eax, 2
cmp ecx, edx
jl 0x494ba4
or eax, 0xffffffff
mov ecx, dword [edi + 0x74]
movsx edx, ax
cmp dword [edi + 0x78], ecx
jg 0x494be6
push dword [esp + 0x18]
mov ecx, edi
push edx
push dword [esp + 0x44]
mov edx, 0x5c
call fcn.0042a9a0
add esp, 0xc
jmp 0x494c19
movzx eax, cx
jmp 0x494bbc
lea eax, [ecx + 1]
mov dword [edi + 0x74], eax
lea ecx, [ecx + ecx*4]
mov eax, dword [edi + 0x70]
mov edi, dword [esp + 0x3c]
mov dword [eax + ecx*4 + 8], edx
mov edx, dword [esp + 0x18]
mov dword [eax + ecx*4 + 4], edi
mov edi, dword [esp + 0x4c]
mov dword [eax + ecx*4], 0x5c
mov dword [eax + ecx*4 + 0xc], edx
mov dword [eax + ecx*4 + 0x10], 0
mov edx, dword [esp + 0x74]
movzx ecx, word [esi + 0x32]
inc edx
inc dword [esp + 0x18]
add dword [esp + 0x30], 2
mov dword [esp + 0x74], edx
cmp edx, ecx
jl 0x494b80
mov edx, dword [edi + 0x74]
movzx esi, cx
cmp dword [edi + 0x78], edx
jg 0x494c64
push dword [esp + 0x20]
mov edx, 0x1e
mov ecx, edi
push dword [esp + 0x94]
push dword [esp + 0x34]
call fcn.0042a9a0
add esp, 0xc
mov edx, eax
jmp 0x494c9e
lea eax, [edx + 1]
mov dword [edi + 0x74], eax
lea ecx, [edx + edx*4]
mov eax, dword [edi + 0x70]
mov edi, dword [esp + 0x2c]
mov dword [eax + ecx*4 + 4], edi
mov edi, dword [esp + 0x90]
mov dword [eax + ecx*4 + 8], edi
mov edi, dword [esp + 0x20]
mov dword [eax + ecx*4 + 0xc], edi
mov edi, dword [esp + 0x4c]
mov dword [eax + ecx*4], 0x1e
mov dword [eax + ecx*4 + 0x10], 0
mov eax, dword [edi]
cmp byte [eax + 0x53], 0
jne 0x494a07
mov eax, dword [edi + 0x70]
lea ecx, [edx + edx*4]
mov byte [eax + ecx*4 + 1], 0xfd
mov dword [eax + ecx*4 + 0x10], esi
jmp 0x494a07
mov esi, dword [esp + 0x3c]
jmp 0x494a0f
cmp dword [esp + 0x54], 0
mov edx, dword [esp + 0x10]
sete al
add al, 4
mov byte [edx + 0x35], al
mov eax, edx
mov dword [eax + 0x38], esi
mov al, byte [ecx + 0x26]
mov esi, dword [esp + 0x10]
and al, 1
mov byte [esi + 0x36], al
test byte [ecx + 0x24], 0xf
jne 0x494cf3
mov byte [esi + 0x37], 1
cmp dword [esp + 0x1c], 0
je 0x495961
xor eax, eax
mov dword [esp + 0x6c], eax
jmp 0x493789
test edx, 0x2000
je 0x4958af
mov ecx, dword [esp + 8]
mov esi, dword [esp + 0x10]
mov dword [esp + 0x60], 0
mov dword [esp + 0x24], 0
mov eax, dword [ecx + 0x28]
inc dword [ecx + 0x2c]
mov dword [esp + 0x94], eax
inc eax
mov dword [ecx + 0x28], eax
mov eax, dword [ecx + 0x2c]
mov dword [esp + 0x1c], eax
mov eax, dword [ecx + 0x38]
dec eax
mov dword [esp + 0x44], 0
mov dword [ecx + 0x38], eax
mov dword [esp + 0x54], eax
mov eax, dword [esp + 0x8c]
mov dword [esp + 0x3c], 0
mov dword [esp + 0x40], 0
mov edx, dword [eax + 0x10]
mov eax, dword [esp + 0x34]
mov dword [esp + 0x80], edx
mov eax, dword [eax + 0x30]
mov eax, dword [eax]
mov dword [esp + 0x38], eax
mov eax, dword [eax + 0x18]
mov dword [esp + 0x30], eax
mov eax, dword [esp + 0x1c]
mov dword [esi + 0x38], eax
mov eax, dword [esp + 0x64]
mov byte [esi + 0x35], 0x42
mov al, byte [eax + 0x2c]
cmp al, 1
jbe 0x494eee
mov ecx, dword [esp + 0x68]
movzx eax, al
sub eax, dword [ebp + 0xc]
dec eax
mov dword [esp + 0x7c], eax
push 0
lea eax, [eax + eax*8]
lea eax, [eax*8 + 0x50]
push eax
test ecx, ecx
je 0x494dd7
call fcn.00404a90
mov ecx, eax
mov dword [esp + 0x80], ecx
jmp 0x494de5
call fcn.004043b0
mov ecx, eax
mov dword [esp + 0x80], eax
add esp, 8
test ecx, ecx
jne 0x494e06
mov eax, dword [ebp + 0x14]
mov edx, dword [ebp + 0x18]
pop edi
pop esi
mov ecx, dword [esp + 0x144]
xor ecx, esp
call fcn.004bf1a3
mov esp, ebp
pop ebp
ret
mov edx, dword [esp + 0x7c]
lea eax, [edx + 1]
movzx eax, al
mov dword [ecx + 4], eax
mov dword [ecx], eax
mov eax, dword [esp + 0x8c]
movups xmm0, xmmword [eax]
movups xmmword [ecx + 8], xmm0
movups xmm0, xmmword [eax + 0x10]
movups xmmword [ecx + 0x18], xmm0
movups xmm0, xmmword [eax + 0x20]
movups xmmword [ecx + 0x28], xmm0
movups xmm0, xmmword [eax + 0x30]
movups xmmword [ecx + 0x38], xmm0
movq xmm0, qword [eax + 0x40]
mov eax, dword [esp + 0x64]
movq qword [ecx + 0x48], xmm0
mov eax, dword [eax + 4]
add eax, 8
cmp edx, 1
jl 0x494ea3
add ecx, 0x50
mov edi, eax
add esi, 0x8c
nop
movzx eax, byte [esi]
lea esi, [esi + 0x58]
lea ecx, [ecx + 0x48]
lea eax, [eax + eax*8]
movups xmm0, xmmword [edi + eax*8]
movups xmmword [ecx - 0x48], xmm0
movups xmm0, xmmword [edi + eax*8 + 0x10]
movups xmmword [ecx - 0x38], xmm0
movups xmm0, xmmword [edi + eax*8 + 0x20]
movups xmmword [ecx - 0x28], xmm0
movups xmm0, xmmword [edi + eax*8 + 0x30]
movups xmmword [ecx - 0x18], xmm0
movq xmm0, qword [edi + eax*8 + 0x40]
movq qword [ecx - 8], xmm0
sub edx, 1
jne 0x494e60
mov edi, dword [esp + 0x4c]
mov edx, dword [esp + 0x80]
mov ecx, dword [esp + 8]
mov eax, dword [esp + 0x64]
test byte [eax + 0x28], 0x10
jne 0x494ffd
test byte [edx + 0x1c], 0x80
jne 0x494f2f
mov edx, dword [ecx + 0x2c]
inc edx
mov dword [ecx + 0x2c], edx
mov ecx, dword [edi + 0x74]
mov dword [esp + 0x24], edx
cmp dword [edi + 0x78], ecx
jg 0x494efb
push 0
push edx
push 0
mov edx, 0x49
mov ecx, edi
call fcn.0042a9a0
add esp, 0xc
jmp 0x494fee
mov eax, dword [esp + 0x64]
mov eax, dword [eax + 4]
mov dword [esp + 0x78], eax
jmp 0x494eae
lea eax, [ecx + 1]
mov dword [edi + 0x74], eax
lea ecx, [ecx + ecx*4]
mov eax, dword [edi + 0x70]
mov dword [eax + ecx*4], 0x49
mov dword [eax + ecx*4 + 4], 0
mov dword [eax + ecx*4 + 8], edx
mov dword [eax + ecx*4 + 0xc], 0
mov dword [eax + ecx*4 + 0x10], 0
jmp 0x494fee
mov esi, dword [edx + 8]
test esi, esi
je 0x494f46
mov eax, dword [esi + 0x38]
and al, 3
cmp al, 2
je 0x494f46
mov esi, dword [esi + 0x14]
test esi, esi
jne 0x494f36
mov eax, dword [ecx + 0x28]
mov dword [esp + 0x24], eax
inc eax
mov dword [ecx + 0x28], eax
mov ecx, dword [edi + 0x74]
movzx edx, word [esi + 0x32]
cmp dword [edi + 0x78], ecx
jg 0x494f75
push 0
push edx
push dword [esp + 0x2c]
mov edx, 0x73
mov ecx, edi
call fcn.0042a9a0
add esp, 0xc
jmp 0x494fa8
lea eax, [ecx + 1]
mov dword [edi + 0x74], eax
lea ecx, [ecx + ecx*4]
mov eax, dword [edi + 0x70]
mov edi, dword [esp + 0x24]
mov dword [eax + ecx*4 + 4], edi
mov edi, dword [esp + 0x4c]
mov dword [eax + ecx*4], 0x73
mov dword [eax + ecx*4 + 8], edx
mov dword [eax + ecx*4 + 0xc], 0
mov dword [eax + ecx*4 + 0x10], 0
mov ecx, dword [esp + 8]
mov edx, esi
mov eax, dword [ecx + 8]
mov dword [esp + 0x7c], eax
call fcn.0045ec90
mov esi, eax
test esi, esi
je 0x494fee
mov edx, dword [esp + 0x7c]
mov ecx, dword [edx]
cmp byte [ecx + 0x53], 0
je 0x494fdc
push esi
mov edx, 0xfffffff7
call fcn.0042b470
add esp, 4
jmp 0x494fee
mov eax, dword [edx + 0x74]
lea ecx, [eax + eax*4]
mov eax, dword [edx + 0x70]
mov byte [eax + ecx*4 - 0x13], 0xf7
mov dword [eax + ecx*4 - 4], esi
mov ecx, dword [esp + 8]
mov eax, dword [ecx + 0x2c]
inc eax
mov dword [esp + 0x44], eax
mov dword [ecx + 0x2c], eax
mov edx, dword [edi + 0x74]
mov dword [esp + 0x7c], edx
cmp dword [edi + 0x78], edx
jg 0x495026
push 0
push dword [esp + 0x20]
mov edx, 0x46
mov ecx, edi
push 0
call fcn.0042a9a0
add esp, 0xc
mov dword [esp + 0x7c], eax
jmp 0x495059
lea eax, [edx + 1]
mov dword [edi + 0x74], eax
lea ecx, [edx + edx*4]
mov eax, dword [edi + 0x70]
mov edx, dword [esp + 0x1c]
mov dword [eax + ecx*4], 0x46
mov dword [eax + ecx*4 + 4], 0
mov dword [eax + ecx*4 + 8], edx
mov dword [eax + ecx*4 + 0xc], 0
mov dword [eax + ecx*4 + 0x10], 0
mov edx, dword [esp + 0x84]
cmp dword [edx + 0xc], 1
jle 0x495163
xor ecx, ecx
xor esi, esi
mov dword [esp + 0x74], ecx
mov eax, dword [edx + 0x14]
mov edx, dword [eax + esi]
add eax, esi
cmp eax, dword [esp + 0x38]
je 0x4950c6
test byte [eax + 0xa], 6
jne 0x4950c6
mov edi, 0x1fff
test word [eax + 0xc], di
mov edi, dword [esp + 8]
je 0x4950c6
test edx, edx
je 0x4950ab
mov ecx, dword [esp + 0x68]
push 0
push 0
call fcn.00443850
add esp, 8
jmp 0x4950ad
xor eax, eax
mov edx, dword [esp + 0x40]
mov ecx, edi
push eax
call fcn.00442ff0
mov ecx, dword [esp + 0x78]
add esp, 4
mov dword [esp + 0x40], eax
jmp 0x4950ca
mov eax, dword [esp + 0x40]
mov edx, dword [esp + 0x84]
inc ecx
add esi, 0x30
mov dword [esp + 0x74], ecx
cmp ecx, dword [edx + 0xc]
jl 0x495072
mov edi, dword [esp + 0x4c]
test eax, eax
je 0x495163
mov eax, dword [esp + 8]
push 0
push 0x34
mov ecx, dword [eax]
call fcn.00404a90
mov esi, eax
add esp, 8
test esi, esi
je 0x495150
push 0x34
push 0
push esi
call fcn.004c0cc0
or eax, 0xffffffff
mov byte [esi], 0x2c
mov word [esi + 0x22], ax
add esp, 0xc
mov eax, dword [esp + 0x40]
mov ecx, esi
mov dword [esi + 0x10], eax
mov eax, dword [eax + 4]
and eax, 0x200104
or dword [esi + 4], eax
call fcn.00442aa0
mov ecx, dword [esp + 8]
mov eax, dword [ecx]
mov eax, dword [eax + 0x84]
cmp dword [esi + 0x18], eax
jle 0x49515f
push eax
push str.Expression_tree_is_too_large__maximum_depth__d_
push ecx
call fcn.00407e90
add esp, 0xc
jmp 0x49515f
mov eax, dword [esp + 8]
mov edx, dword [esp + 0x40]
mov ecx, dword [eax]
call fcn.00443540
mov dword [esp + 0x40], esi
mov esi, dword [esp + 8]
push str.MULTI_INDEX_OR
push 1
push esi
call fcn.0042af20
mov edx, dword [esp + 0x3c]
xor ecx, ecx
add esp, 0xc
mov dword [esp + 0x28], ecx
cmp dword [edx + 0xc], ecx
jle 0x49520f
mov dword [esp + 0x88], 1
lea eax, [ecx + ecx*2]
shl eax, 4
add eax, dword [edx + 0x14]
mov edx, dword [esp + 0x2c]
cmp dword [eax + 0x14], edx
je 0x4951b2
mov edx, 0x400
test word [eax + 0xc], dx
je 0x4951ff
mov edx, dword [eax]
xor eax, eax
mov dword [esp + 0x20], eax
test edx, edx
je 0x4951d2
mov ecx, dword [esp + 0x68]
push eax
push eax
call fcn.00443850
mov ecx, dword [esp + 0x30]
add esp, 8
jmp 0x4951d4
xor eax, eax
mov edx, dword [esp + 0x68]
mov esi, eax
mov dword [esp + 0x34], eax
cmp byte [edx + 0x53], 0
je 0x495224
test eax, eax
je 0x49576f
mov ecx, dword [esp + 0x68]
mov edx, eax
call fcn.00443540
mov esi, dword [esp + 8]
mov ecx, dword [esp + 0x28]
mov eax, dword [esp + 0x30]
inc ecx
mov dword [esp + 0x28], ecx
mov edx, eax
cmp ecx, dword [eax + 0xc]
jl 0x495195
mov ecx, dword [esi + 0xd8]
test ecx, ecx
jne 0x495778
xor eax, eax
jmp 0x49579e
mov edx, dword [esp + 0x40]
test edx, edx
je 0x495231
mov dword [edx + 0xc], eax
mov esi, edx
lea eax, [ecx + 1]
push eax
push str.INDEX__d
push 1
push dword [esp + 0x14]
call fcn.0042af20
push dword [esp + 0xa4]
mov edx, dword [esp + 0x8c]
push 0x20
push 0
push 0
push esi
mov esi, dword [esp + 0x2c]
mov ecx, esi
call fcn.0049f570
add esp, 0x24
mov dword [esp + 0x5c], eax
test eax, eax
je 0x495755
mov edx, dword [esp + 0x78]
lea ecx, [eax + 0x2f0]
push 0
push ecx
mov ecx, esi
call fcn.004916b0
mov eax, dword [esp + 0x6c]
add esp, 8
test byte [eax + 0x28], 0x10
jne 0x495611
mov eax, dword [esp + 0x30]
mov ecx, dword [esp + 0x28]
mov eax, dword [eax + 0xc]
dec eax
cmp ecx, eax
mov eax, 0xffffffff
cmove ecx, eax
mov eax, dword [esp + 0x80]
mov dword [esp + 0x18], ecx
test byte [eax + 0x1c], 0x80
jne 0x495362
push dword [esp + 0x44]
mov edx, eax
mov ecx, edi
push 0xffffffffffffffff
push dword [esp + 0x34]
call fcn.00447e20
mov edx, dword [edi + 0x74]
add esp, 0xc
mov dword [esp + 0x20], edx
cmp dword [edi + 0x78], edx
jg 0x495307
push dword [esp + 0x44]
mov edx, 0x2e
mov ecx, edi
push 0
push dword [esp + 0x2c]
call fcn.0042a9a0
mov edx, eax
add esp, 0xc
mov dword [esp + 0x20], edx
jmp 0x49533e
mov esi, dword [esp + 0x24]
lea eax, [edx + 1]
mov dword [edi + 0x74], eax
lea ecx, [edx + edx*4]
mov eax, dword [edi + 0x70]
mov dword [eax + ecx*4 + 4], esi
mov esi, dword [esp + 0x44]
mov dword [eax + ecx*4 + 0xc], esi
mov esi, dword [esp + 8]
mov dword [eax + ecx*4], 0x2e
mov dword [eax + ecx*4 + 8], 0
mov dword [eax + ecx*4 + 0x10], 0
mov eax, dword [edi]
cmp byte [eax + 0x53], 0
jne 0x495611
mov eax, dword [edi + 0x70]
lea ecx, [edx + edx*4]
mov edx, dword [esp + 0x18]
mov byte [eax + ecx*4 + 1], 0xfd
mov dword [eax + ecx*4 + 0x10], edx
jmp 0x495611
mov esi, dword [eax + 8]
test esi, esi
je 0x495380
nop dword [eax]
mov eax, dword [esi + 0x38]
and al, 3
cmp al, 2
je 0x495380
mov esi, dword [esi + 0x14]
test esi, esi
jne 0x495370
movzx eax, word [esi + 0x32]
mov dword [esp + 0x48], eax
mov ecx, eax
mov dword [esp + 0x74], ecx
mov ecx, dword [esp + 8]
cmp eax, 1
jne 0x4953cb
mov al, byte [ecx + 0x13]
test al, al
jne 0x4953b0
inc dword [ecx + 0x2c]
mov edx, dword [ecx + 0x2c]
xor ecx, ecx
mov dword [esp + 0x50], edx
mov dword [esp + 0x70], ecx
jmp 0x495420
dec al
mov byte [ecx + 0x13], al
movzx eax, al
mov edx, dword [ecx + eax*4 + 0x98]
xor ecx, ecx
mov dword [esp + 0x50], edx
mov dword [esp + 0x70], ecx
jmp 0x495420
mov edx, dword [ecx + 0x20]
mov ecx, dword [ecx + 0x1c]
mov dword [esp + 0x50], edx
cmp eax, ecx
jg 0x4953ed
mov edi, dword [esp + 8]
add eax, edx
mov dword [edi + 0x20], eax
mov eax, dword [esp + 0x48]
sub ecx, eax
mov dword [edi + 0x1c], ecx
jmp 0x49540a
mov eax, dword [esp + 8]
mov ecx, dword [esp + 8]
mov eax, dword [eax + 0x2c]
lea edx, [eax + 1]
add eax, dword [esp + 0x48]
mov dword [ecx + 0x2c], eax
mov eax, dword [esp + 0x48]
mov dword [esp + 0x50], edx
xor edi, edi
xor ecx, ecx
cmp di, word [esp + 0x74]
mov edi, dword [esp + 0x4c]
mov dword [esp + 0x70], ecx
jae 0x495456
nop dword [eax]
lea eax, [ecx + edx]
mov edx, dword [esp + 0x80]
push eax
mov eax, dword [esi + 4]
movsx eax, word [eax + ecx*2]
mov ecx, edi
push eax
push dword [esp + 0x34]
call fcn.00447e20
mov ecx, dword [esp + 0x7c]
add esp, 0xc
mov eax, dword [esp + 0x48]
inc ecx
mov edx, dword [esp + 0x50]
mov dword [esp + 0x70], ecx
cmp ecx, eax
jl 0x495420
cmp dword [esp + 0x18], 0
je 0x4954ec
mov esi, dword [edi + 0x74]
mov dword [esp + 0x20], esi
cmp dword [edi + 0x78], esi
jg 0x49548f
push edx
push 0
push dword [esp + 0x2c]
mov edx, 0x1f
mov ecx, edi
call fcn.0042a9a0
mov edx, dword [esp + 0x5c]
mov esi, eax
add esp, 0xc
mov dword [esp + 0x20], esi
jmp 0x4954c2
mov edx, dword [esp + 0x24]
lea eax, [esi + 1]
mov dword [edi + 0x74], eax
lea ecx, [esi + esi*4]
mov eax, dword [edi + 0x70]
mov dword [eax + ecx*4 + 4], edx
mov edx, dword [esp + 0x50]
mov dword [eax + ecx*4], 0x1f
mov dword [eax + ecx*4 + 8], 0
mov dword [eax + ecx*4 + 0xc], edx
mov dword [eax + ecx*4 + 0x10], 0
mov eax, dword [edi]
cmp byte [eax + 0x53], 0
jne 0x4954dd
mov eax, dword [edi + 0x70]
lea ecx, [esi + esi*4]
mov esi, dword [esp + 0x48]
mov byte [eax + ecx*4 + 1], 0xfd
mov dword [eax + ecx*4 + 0x10], esi
cmp dword [esp + 0x18], 0
jl 0x4955d0
mov eax, dword [esp + 0x48]
mov ecx, dword [edi + 0x74]
cmp dword [edi + 0x78], ecx
jg 0x49550b
push dword [esp + 0x44]
mov ecx, edi
push eax
push edx
mov edx, 0x5f
call fcn.0042a9a0
add esp, 0xc
jmp 0x49553a
mov esi, dword [esp + 0x48]
lea eax, [ecx + 1]
mov dword [edi + 0x74], eax
lea ecx, [ecx + ecx*4]
mov eax, dword [edi + 0x70]
mov dword [eax + ecx*4 + 4], edx
mov edx, dword [esp + 0x44]
mov dword [eax + ecx*4], 0x5f
mov dword [eax + ecx*4 + 8], esi
mov dword [eax + ecx*4 + 0xc], edx
mov dword [eax + ecx*4 + 0x10], 0
mov edx, dword [edi + 0x74]
cmp dword [edi + 0x78], edx
jg 0x495562
mov esi, dword [esp + 0x50]
mov edx, 0x88
push esi
push dword [esp + 0x48]
mov ecx, edi
push dword [esp + 0x2c]
call fcn.0042a9a0
add esp, 0xc
mov edx, eax
jmp 0x495595
mov esi, dword [esp + 0x24]
lea eax, [edx + 1]
mov dword [edi + 0x74], eax
lea ecx, [edx + edx*4]
mov eax, dword [edi + 0x70]
mov dword [eax + ecx*4 + 4], esi
mov esi, dword [esp + 0x44]
mov dword [eax + ecx*4 + 8], esi
mov esi, dword [esp + 0x50]
mov dword [eax + ecx*4], 0x88
mov dword [eax + ecx*4 + 0xc], esi
mov dword [eax + ecx*4 + 0x10], 0
mov eax, dword [edi]
cmp byte [eax + 0x53], 0
jne 0x4955b0
mov eax, dword [edi + 0x70]
lea ecx, [edx + edx*4]
mov edx, dword [esp + 0x48]
mov byte [eax + ecx*4 + 1], 0xfd
mov dword [eax + ecx*4 + 0x10], edx
cmp dword [esp + 0x18], 0
je 0x4955d4
mov eax, dword [edi + 0x74]
test eax, eax
jle 0x4955d4
lea ecx, [eax + eax*4]
mov edx, 0x10
mov eax, dword [edi + 0x70]
mov word [eax + ecx*4 - 0x12], dx
jmp 0x4955d4
mov esi, dword [esp + 0x50]
cmp word [esp + 0x74], 1
jne 0x4955fc
test esi, esi
je 0x495634
mov ecx, dword [esp + 8]
mov al, byte [ecx + 0x13]
cmp al, 8
jae 0x49560f
movzx eax, al
mov dword [ecx + eax*4 + 0x98], esi
mov esi, ecx
inc byte [esi + 0x13]
jmp 0x495611
mov ecx, dword [esp + 8]
mov eax, dword [esp + 0x48]
cmp eax, dword [ecx + 0x1c]
jle 0x49560f
mov dword [ecx + 0x1c], eax
mov dword [ecx + 0x20], esi
mov esi, ecx
mov ecx, dword [edi + 0x74]
cmp dword [edi + 0x78], ecx
jg 0x49563a
push 0
push dword [esp + 0x58]
mov edx, 0xc
mov ecx, edi
push dword [esp + 0x24]
call fcn.0042a9a0
add esp, 0xc
jmp 0x49566d
mov esi, dword [esp + 8]
jmp 0x495611
mov edx, dword [esp + 0x1c]
lea eax, [ecx + 1]
mov dword [edi + 0x74], eax
lea ecx, [ecx + ecx*4]
mov eax, dword [edi + 0x70]
mov dword [eax + ecx*4 + 4], edx
mov edx, dword [esp + 0x54]
mov dword [eax + ecx*4], 0xc
mov dword [eax + ecx*4 + 8], edx
mov dword [eax + ecx*4 + 0xc], 0
mov dword [eax + ecx*4 + 0x10], 0
mov ecx, dword [esp + 0x20]
test ecx, ecx
je 0x495698
mov edx, dword [edi + 0x74]
jns 0x49567d
lea ecx, [edx - 1]
mov eax, dword [edi]
cmp byte [eax + 0x53], 0
je 0x49568c
mov eax, 0x4edf68
jmp 0x495695
mov eax, dword [edi + 0x70]
lea ecx, [ecx + ecx*4]
lea eax, [eax + ecx*4]
mov dword [eax + 8], edx
mov eax, dword [esp + 0x5c]
mov ecx, dword [esp + 0x3c]
mov edx, dword [eax + 0x30]
test dl, 2
cmovne ecx, dword [esp + 0x88]
mov dword [esp + 0x3c], ecx
mov ecx, dword [eax + 0x338]
test dword [ecx + 0x24], 0x200
je 0x4956ff
cmp dword [esp + 0x28], 0
je 0x4956d5
mov esi, dword [esp + 0x60]
cmp dword [ecx + 0x20], esi
mov esi, dword [esp + 8]
jne 0x4956ff
mov edi, dword [esp + 0x80]
test byte [edi + 0x1c], 0x80
mov edi, dword [esp + 0x4c]
je 0x4956f6
mov eax, dword [ecx + 0x20]
mov eax, dword [eax + 0x38]
and al, 3
cmp al, 2
mov eax, dword [esp + 0x5c]
je 0x4956ff
mov ecx, dword [ecx + 0x20]
mov dword [esp + 0x60], ecx
jmp 0x495707
mov dword [esp + 0x60], 0
test dl, 1
je 0x495714
mov ecx, dword [esp + 0x64]
or dword [ecx + 0x30], 1
mov ecx, eax
call fcn.004a0430
mov ecx, dword [esi + 0xd8]
test ecx, ecx
jne 0x495729
xor eax, eax
jmp 0x49574f
mov edx, dword [esi + 8]
test ecx, ecx
jns 0x495734
mov ecx, dword [edx + 0x74]
dec ecx
mov eax, dword [edx]
cmp byte [eax + 0x53], 0
je 0x495743
mov eax, 0x4edf68
jmp 0x49574c
mov eax, dword [edx + 0x70]
lea ecx, [ecx + ecx*4]
lea eax, [eax + ecx*4]
mov eax, dword [eax + 8]
mov dword [esi + 0xd8], eax
mov edx, dword [esp + 0x34]
test edx, edx
je 0x4951fb
mov ecx, dword [esp + 0x68]
call fcn.00443540
jmp 0x4951fb
mov esi, dword [esp + 8]
jmp 0x4951ff
mov edx, dword [esi + 8]
test ecx, ecx
jns 0x495783
mov ecx, dword [edx + 0x74]
dec ecx
mov eax, dword [edx]
cmp byte [eax + 0x53], 0
je 0x495792
mov eax, 0x4edf68
jmp 0x49579b
mov eax, dword [edx + 0x70]
lea ecx, [ecx + ecx*4]
lea eax, [eax + ecx*4]
mov eax, dword [eax + 8]
mov dword [esi + 0xd8], eax
mov esi, dword [esp + 0x10]
mov eax, dword [esp + 0x60]
mov dword [esi + 0x40], eax
test eax, eax
je 0x4957bd
mov eax, dword [esp + 0x94]
mov dword [esi + 8], eax
mov eax, dword [esp + 0x40]
test eax, eax
je 0x4957d7
mov ecx, dword [esp + 0x68]
mov edx, eax
mov dword [eax + 0xc], 0
call fcn.00443540
mov ecx, dword [esp + 0x7c]
mov edx, dword [edi + 0x74]
test ecx, ecx
jns 0x4957e5
lea ecx, [edx - 1]
mov eax, dword [edi]
cmp byte [eax + 0x53], 0
je 0x4957f4
mov eax, 0x4edf68
jmp 0x4957fd
mov eax, dword [edi + 0x70]
lea ecx, [ecx + ecx*4]
lea eax, [eax + ecx*4]
mov dword [eax + 4], edx
mov ecx, dword [edi + 0x74]
mov edx, dword [esi + 0xc]
cmp dword [edi + 0x78], ecx
jg 0x495821
push 0
push edx
push 0
mov edx, 0xb
mov ecx, edi
call fcn.0042a9a0
add esp, 0xc
jmp 0x495850
lea eax, [ecx + 1]
mov dword [edi + 0x74], eax
lea ecx, [ecx + ecx*4]
mov eax, dword [edi + 0x70]
mov dword [eax + ecx*4], 0xb
mov dword [eax + ecx*4 + 4], 0
mov dword [eax + ecx*4 + 8], edx
mov dword [eax + ecx*4 + 0xc], 0
mov dword [eax + ecx*4 + 0x10], 0
mov ecx, dword [edi + 0xc]
mov edx, dword [esp + 0x54]
not edx
mov eax, dword [ecx + 0x3c]
add eax, dword [ecx + 0x38]
jns 0x49586e
push edx
mov edx, edi
call fcn.0042b160
add esp, 4
jmp 0x495877
mov ecx, dword [ecx + 0x40]
mov eax, dword [edi + 0x74]
mov dword [ecx + edx*4], eax
mov eax, dword [esp + 0x64]
cmp byte [eax + 0x2c], 1
jbe 0x495894
mov eax, dword [esp + 0x78]
test eax, eax
je 0x495894
mov ecx, dword [esp + 0x68]
mov edx, eax
call fcn.00404680
cmp dword [esp + 0x3c], 0
jne 0x493787
mov edx, dword [esp + 0x38]
mov ecx, esi
call fcn.00491a20
jmp 0x493787
mov eax, dword [esp + 0x8c]
test byte [eax + 0x28], 0x20
jne 0x49377f
mov edx, dword [esp + 0x54]
mov ecx, dword [esp + 0x10]
movzx eax, byte [edx + 0x4e1d3c]
mov byte [ecx + 0x35], al
mov eax, dword [esp + 0x2c]
mov dword [ecx + 0x38], eax
mov al, byte [edx + 0x4e1954]
mov edx, dword [edi + 0x74]
mov byte [esp + 0x17], al
cmp dword [edi + 0x78], edx
jg 0x495914
push 0
push esi
push dword [esp + 0x34]
movzx edx, al
mov ecx, edi
call fcn.0042a9a0
mov ecx, dword [esp + 0x1c]
mov edx, eax
add esp, 0xc
lea eax, [edx + 1]
mov byte [ecx + 0x37], 1
mov dword [ecx + 0x3c], eax
jmp 0x493787
lea eax, [edx + 1]
mov dword [edi + 0x74], eax
lea ecx, [edx + edx*4]
mov eax, dword [edi + 0x70]
mov dword [eax + ecx*4 + 8], esi
mov dword [eax + ecx*4 + 0xc], 0
mov dword [eax + ecx*4 + 0x10], 0
lea eax, [eax + ecx*4]
mov cl, byte [esp + 0x17]
mov byte [eax + 1], 0
mov byte [eax], cl
xor ecx, ecx
mov word [eax + 2], cx
mov ecx, dword [esp + 0x2c]
mov dword [eax + 4], ecx
lea eax, [edx + 1]
mov ecx, dword [esp + 0x10]
mov dword [ecx + 0x3c], eax
mov byte [ecx + 0x37], 1
jmp 0x493787
mov eax, dword [esp + 0x6c]
jmp 0x493789
mov eax, dword [esp + 0x8c]
mov ecx, dword [esi]
mov dword [esp + 0x94], ecx
test byte [eax + 0x24], 8
je 0x49598a
test byte [ecx + 4], 1
je 0x495b31
cmp dword [esp + 0x60], 1
jne 0x495a16
mov eax, dword [esp + 0x10]
xorps xmm0, xmm0
mov dword [esp + 0xa0], 0
movlpd qword [esp + 0xa8], xmm0
movlpd qword [esp + 0xb0], xmm0
mov eax, dword [eax + 4]
mov dword [esp + 0x9c], eax
mov eax, dword [esp + 0x6c]
mov dword [esp + 0x98], eax
lea eax, [esp + 0x98]
mov dword [esp + 0xa4], 0x44c310
mov dword [esp + 0xb8], eax
test ecx, ecx
je 0x4959fd
mov edx, ecx
lea ecx, [esp + 0xa0]
call fcn.0043ee30
mov edx, dword [esp + 0x18]
cmp word [esp + 0xb4], 0
je 0x495a27
mov edx, 2
mov dword [esp + 0x18], edx
jmp 0x495b31
cmp dword [esp + 0x60], 3
mov eax, dword [esp + 0x88]
movzx ecx, ax
jge 0x495a4a
movzx eax, word [esi + 0xa]
mov ecx, eax
test eax, 0x1000
je 0x495a4a
test edx, edx
jne 0x495b31
mov edx, 3
mov dword [esp + 0x18], edx
jmp 0x495b31
test ecx, 0x200
je 0x495ade
mov eax, dword [esp + 0x10]
mov eax, dword [eax + 0x2c]
test eax, eax
je 0x495ade
mov edx, dword [edi + 0x74]
mov ecx, eax
and eax, 1
shr ecx, 1
mov dword [esp + 0x7c], ecx
mov dword [esp + 0x30], edx
lea eax, [eax*2 + 0x12]
mov dword [esp + 0x88], eax
cmp dword [edi + 0x78], edx
jg 0x495a9d
push 0
push 0
push ecx
mov edx, eax
mov ecx, edi
call fcn.0042a9a0
add esp, 0xc
mov dword [esp + 0x30], eax
jmp 0x495ade
lea eax, [edx + 1]
mov dword [edi + 0x74], eax
lea ecx, [edx + edx*4]
mov eax, dword [edi + 0x70]
mov dword [eax + ecx*4 + 8], 0
mov dword [eax + ecx*4 + 0xc], 0
mov dword [eax + ecx*4 + 0x10], 0
lea eax, [eax + ecx*4]
mov ecx, dword [esp + 0x88]
mov byte [eax + 1], 0
mov byte [eax], cl
xor ecx, ecx
mov word [eax + 2], cx
mov ecx, dword [esp + 0x7c]
mov dword [eax + 4], ecx
push 0x10
push dword [esp + 0x94]
push dword [esp + 0x9c]
push dword [esp + 0x14]
call fcn.0044b490
mov ecx, dword [esp + 0x40]
add esp, 0x10
test ecx, ecx
je 0x495b28
mov eax, dword [edi]
mov edx, dword [edi + 0x74]
cmp byte [eax + 0x53], 0
je 0x495b14
mov eax, 0x4edf68
jmp 0x495b25
test ecx, ecx
lea eax, [edx - 1]
cmovns eax, ecx
lea ecx, [eax + eax*4]
mov eax, dword [edi + 0x70]
lea eax, [eax + ecx*4]
mov dword [eax + 8], edx
or word [esi + 0xa], 4
mov edx, dword [esp + 0x18]
mov eax, dword [esp + 0x38]
add esi, 0x30
dec eax
mov dword [esp + 0x38], eax
test eax, eax
jg 0x4937c0
mov ecx, dword [esp + 0x84]
mov dword [esp + 0x60], edx
test edx, edx
jg 0x4937a0
mov edx, dword [ecx + 0xc]
mov eax, dword [ecx + 0x14]
mov dword [esp + 0x88], eax
mov dword [esp + 0x1c], edx
test edx, edx
jle 0x495cd8
mov edi, eax
test byte [edi + 0xa], 6
jne 0x495cc4
movzx eax, word [edi + 0xc]
mov esi, 0xb
test al, 0x82
setne cl
bt ax, si
setb al
test al, cl
je 0x495cc4
mov ecx, dword [esp + 0x2c]
cmp dword [edi + 0x14], ecx
jne 0x495cc4
mov eax, dword [esp + 0x8c]
test byte [eax + 0x24], 8
jne 0x495cc4
mov eax, dword [edi]
mov edx, dword [esp + 0x84]
push 0
push 0x83
push dword [edi + 0x18]
mov dword [esp + 0x94], eax
push ecx
lea ecx, [esp + 0xf8]
mov dword [esp + 0x28], 0
call fcn.004994c0
mov esi, eax
add esp, 0x10
test esi, esi
je 0x495c2c
mov edx, dword [esi + 0x20]
mov ecx, edx
mov eax, dword [esi + 0x24]
and ecx, dword [ebp + 0x14]
and eax, dword [ebp + 0x18]
or ecx, eax
jne 0x495c1a
or edx, dword [esi + 0x24]
jne 0x495c0d
test byte [esi + 0xc], 0x82
jne 0x495c30
mov eax, dword [esp + 0x18]
test eax, eax
cmove eax, esi
mov dword [esp + 0x18], eax
lea ecx, [esp + 0xe8]
call fcn.00499190
mov esi, eax
test esi, esi
jne 0x495bf0
mov esi, dword [esp + 0x18]
test esi, esi
je 0x495cc0
test byte [esi + 0xa], 4
jne 0x495cc0
test byte [esi + 0xc], 1
je 0x495c5e
mov eax, dword [esi]
test dword [eax + 4], 0x800
je 0x495c5e
mov eax, dword [eax + 0x14]
mov eax, dword [eax + 0x1c]
cmp dword [eax], 1
jg 0x495cc0
mov eax, dword [esi]
push 0x10
push dword [esp + 0x94]
movups xmm0, xmmword [eax]
movups xmmword [esp + 0xa8], xmm0
movups xmm0, xmmword [eax + 0x10]
movups xmmword [esp + 0xb8], xmm0
movups xmm0, xmmword [eax + 0x20]
movups xmmword [esp + 0xc8], xmm0
mov eax, dword [eax + 0x30]
mov dword [esp + 0xd8], eax
mov eax, dword [esp + 0x90]
mov eax, dword [eax + 0xc]
mov dword [esp + 0xb4], eax
lea eax, [esp + 0xa8]
push eax
push dword [esp + 0x14]
call fcn.0044b490
add esp, 0x10
or word [esi + 0xa], 4
mov edx, dword [esp + 0x1c]
dec edx
add edi, 0x30
mov dword [esp + 0x1c], edx
test edx, edx
jg 0x495b73
mov edi, dword [esp + 0x4c]
mov ecx, dword [esp + 0x10]
mov edx, dword [ecx]
test edx, edx
je 0x495d9b
mov eax, dword [edi + 0x74]
mov dword [ecx + 0x1c], eax
mov ecx, dword [edi + 0x74]
cmp dword [edi + 0x78], ecx
jg 0x495d0a
push 0
push edx
push 1
mov edx, 0x46
mov ecx, edi
call fcn.0042a9a0
add esp, 0xc
jmp 0x495d39
lea eax, [ecx + 1]
mov dword [edi + 0x74], eax
lea ecx, [ecx + ecx*4]
mov eax, dword [edi + 0x70]
mov dword [eax + ecx*4], 0x46
mov dword [eax + ecx*4 + 4], 1
mov dword [eax + ecx*4 + 8], edx
mov dword [eax + ecx*4 + 0xc], 0
mov dword [eax + ecx*4 + 0x10], 0
mov eax, dword [esp + 0x84]
xor edi, edi
mov esi, dword [esp + 0x84]
mov esi, dword [esi + 0x14]
cmp dword [eax + 0xc], edi
jle 0x495d97
test byte [esi + 0xa], 6
jne 0x495d8e
mov edx, dword [esp + 0x10]
mov ecx, dword [esi + 0x28]
mov eax, dword [esi + 0x2c]
and ecx, dword [edx + 0x50]
and eax, dword [edx + 0x54]
or ecx, eax
jne 0x495d87
push 0x10
push dword [esp + 0x94]
push dword [esi]
push dword [esp + 0x14]
call fcn.0044b490
add esp, 0x10
or word [esi + 0xa], 4
mov eax, dword [esp + 0x84]
inc edi
add esi, 0x30
cmp edi, dword [eax + 0xc]
jl 0x495d51
mov ecx, dword [esp + 0x10]
mov eax, dword [ecx + 0x50]
mov edx, dword [ecx + 0x54]
mov ecx, dword [esp + 0x14c]
pop edi
pop esi
xor ecx, esp
call fcn.004bf1a3
mov esp, ebp
pop ebp
ret