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

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff0
sub esp, 0x138
mov eax, dword [ebp + 8]
add eax, 0x50
mov dword [esp + 0x48], 0
mov dword [esp + 0x70], eax
push esi
mov esi, ecx
push edi
mov edi, edx
mov dword [esp + 0x60], esi
mov edx, dword [ebp + 0x10]
mov eax, dword [esi]
mov dword [esp + 0x58], eax
mov dword [esp + 0x5c], edi
mov eax, dword [edx + 0x40]
mov dword [esp + 0x30], eax
movzx eax, byte [edx + 0x2c]
lea ecx, [eax + eax*8]
mov eax, dword [ebp + 8]
mov eax, dword [eax + 4]
lea eax, [eax + ecx*8]
mov ecx, dword [ebp + 8]
add eax, 8
mov dword [esp + 0x80], eax
mov eax, dword [eax + 0x2c]
mov dword [esp + 0x44], eax
xor eax, eax
cmp dword [ecx + 0x1ec], eax
jle 0x4a0512
add ecx, 0x1f0
mov edx, dword [esp + 0x44]
cmp dword [ecx], edx
mov edx, dword [ebp + 0x10]
je 0x4a061c
mov esi, dword [ebp + 8]
inc eax
add ecx, 4
cmp eax, dword [esi + 0x1ec]
mov esi, dword [esp + 0x60]
jl 0x4a04f0
xorps xmm0, xmm0
movlpd qword [esp + 0x88], xmm0
mov eax, dword [esp + 0x8c]
mov ecx, dword [esp + 0x88]
not ecx
not eax
and ecx, dword [ebp + 0x14]
and eax, dword [ebp + 0x18]
mov dword [edx + 0x48], ecx
mov ecx, dword [ebp + 8]
mov dword [edx + 0x4c], eax
mov eax, dword [ecx + 0x40]
mov edx, dword [ecx + 0x44]
mov ecx, dword [ebp + 0xc]
call fcn.005c0640
mov edx, dword [ebp + 0x10]
and eax, 1
mov dword [esp + 0x48], eax
mov eax, dword [esi + 0x38]
dec eax
mov dword [esi + 0x38], eax
mov dword [edx + 0x10], eax
mov dword [edx + 0xc], eax
mov dword [esp + 0x40], eax
mov eax, dword [esi + 0x38]
dec eax
mov dword [esi + 0x38], eax
cmp byte [edx + 0x2c], 0
mov dword [esp + 0x94], eax
mov dword [edx + 0x18], eax
jbe 0x4a05aa
mov eax, dword [esp + 0x80]
test byte [eax + 0x24], 8
je 0x4a05aa
mov eax, dword [esi + 0x2c]
mov ecx, edi
inc eax
mov dword [esi + 0x2c], eax
push eax
mov dword [edx], eax
mov edx, 0x46
push 0
call fcn.00451c90
mov edx, dword [ebp + 0x10]
add esp, 8
mov eax, dword [ebp + 0xc]
mov ecx, eax
test eax, eax
jle 0x4a05d5
mov esi, dword [ebp + 8]
lea eax, [eax + eax*4]
add esi, 0x2f0
shl eax, 4
add eax, esi
mov esi, dword [esp + 0x60]
cmp dword [eax], 0
jne 0x4a05d5
dec ecx
sub eax, 0x50
test ecx, ecx
jg 0x4a05c8
lea eax, [ecx + ecx*4]
mov ecx, dword [ebp + 8]
add eax, eax
mov eax, dword [ecx + eax*8 + 0x2fc]
mov dword [esp + 0x28], eax
mov eax, dword [esp + 0x80]
test byte [eax + 0x28], 0x10
je 0x4a073f
mov ecx, dword [edi + 0x6c]
mov esi, dword [eax + 0x1c]
mov edx, dword [eax + 0x18]
cmp dword [edi + 0x70], ecx
jg 0x4a0640
push edx
push 0
push esi
mov edx, 0xd
mov ecx, edi
call fcn.00451b20
add esp, 0xc
jmp 0x4a066f
xor ecx, ecx
xor edi, edi
bts ecx, eax
cmp eax, 0x20
cmovae edi, ecx
xor ecx, edi
mov dword [esp + 0x28], edi
cmp eax, 0x40
mov eax, edi
mov edi, dword [esp + 0x5c]
cmovae eax, ecx
jmp 0x4a052c
lea eax, [ecx + 1]
mov dword [edi + 0x6c], eax
lea ecx, [ecx + ecx*4]
mov eax, dword [edi + 0x68]
mov edi, dword [esp + 0x5c]
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 + 0x6c]
cmp dword [edi + 0x70], edx
jg 0x4a0691
push 0
push dword [esp + 0x44]
mov edx, 0xe
mov ecx, edi
push esi
call fcn.00451b20
add esp, 0xc
mov edx, eax
jmp 0x4a06c4
lea eax, [edx + 1]
mov dword [edi + 0x6c], eax
lea ecx, [edx + edx*4]
mov eax, dword [edi + 0x68]
mov edi, dword [esp + 0x5c]
mov dword [eax + ecx*4 + 4], esi
mov esi, dword [esp + 0x40]
mov dword [eax + ecx*4], 0xe
mov dword [eax + ecx*4 + 8], esi
mov dword [eax + ecx*4 + 0xc], 0
mov dword [eax + ecx*4 + 0x10], 0
mov esi, dword [ebp + 0x10]
mov dword [esi + 0x34], edx
mov byte [esi + 0x2d], 0xb
xor eax, eax
mov esi, dword [esp + 0x78]
neg eax
sbb eax, eax
add eax, 2
mov dword [esp + 0x70], eax
nop
mov eax, dword [esi + 0xc]
xor ecx, ecx
mov edx, dword [esi + 0x14]
mov dword [esp + 0x18], ecx
mov dword [esp + 0x24], edx
mov dword [esp + 0x28], eax
test eax, eax
jle 0x4a24bf
nop dword [eax]
movzx eax, word [edx + 0xa]
xor esi, esi
mov dword [esp + 0x88], eax
test al, 6
jne 0x4a24a3
mov eax, dword [ebp + 0x10]
mov edi, dword [ebp + 0x10]
mov ecx, dword [edx + 0x28]
and ecx, dword [eax + 0x48]
mov eax, dword [edx + 0x2c]
and eax, dword [edi + 0x4c]
or ecx, eax
mov edi, dword [esp + 0x5c]
je 0x4a2315
mov eax, dword [ebp + 8]
mov byte [eax + 0x32], 1
jmp 0x4a249f
mov ecx, dword [esp + 0x30]
mov eax, dword [ecx + 0x24]
test eax, 0x400
je 0x4a0be9
movzx eax, word [ecx + 0x28]
mov dword [esp + 0x18], eax
lea ecx, [eax + 2]
cmp ecx, 1
jne 0x4a0789
mov al, byte [esi + 0x13]
test al, al
jne 0x4a0774
inc dword [esi + 0x2c]
mov eax, dword [esi + 0x2c]
mov dword [esp + 0x1c], eax
jmp 0x4a07b2
dec al
mov byte [esi + 0x13], al
movzx eax, al
mov eax, dword [esi + eax*4 + 0x90]
mov dword [esp + 0x1c], eax
jmp 0x4a07b2
mov eax, dword [esi + 0x20]
mov dword [esp + 0x1c], eax
cmp ecx, dword [esi + 0x1c]
jg 0x4a079f
add eax, ecx
sub dword [esi + 0x1c], ecx
mov dword [esi + 0x20], eax
jmp 0x4a07b2
mov eax, dword [esi + 0x2c]
lea edi, [eax + 1]
add eax, ecx
mov dword [esp + 0x1c], edi
mov edi, dword [esp + 0x5c]
mov dword [esi + 0x2c], eax
mov eax, dword [edx + 0xc]
xor esi, esi
mov dword [esp + 0x14], eax
cmp dword [esp + 0x18], esi
jle 0x4a081c
mov edi, dword [esp + 0x60]
mov eax, dword [esp + 0x30]
mov eax, dword [eax + 0x30]
mov edx, dword [eax + esi*4]
test edx, edx
je 0x4a0811
mov eax, dword [esp + 0x1c]
mov ecx, edi
add eax, 2
add eax, esi
test byte [edx + 0xc], 1
je 0x4a0801
push eax
push dword [esp + 0x4c]
push esi
push dword [ebp + 0x10]
call fcn.0049f6f0
mov eax, dword [ebp + 0x10]
add esp, 0x10
mov eax, dword [eax + 0x10]
mov dword [esp + 0x14], eax
jmp 0x4a0811
mov edx, dword [edx]
push 1
push eax
mov edx, dword [edx + 0x10]
call fcn.004a02a0
add esp, 8
inc esi
cmp esi, dword [esp + 0x18]
jl 0x4a07c5
mov edi, dword [esp + 0x5c]
mov eax, dword [esp + 0x30]
mov ecx, dword [edi + 0x6c]
mov edx, dword [eax + 0x18]
cmp dword [edi + 0x70], ecx
jg 0x4a0843
push 0
push dword [esp + 0x20]
mov ecx, edi
push edx
mov edx, 0x46
call fcn.00451b20
add esp, 0xc
jmp 0x4a0872
lea eax, [ecx + 1]
mov dword [edi + 0x6c], eax
lea ecx, [ecx + ecx*4]
mov eax, dword [edi + 0x68]
mov dword [eax + ecx*4 + 4], edx
mov edx, dword [esp + 0x1c]
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 esi, dword [esp + 0x1c]
mov ecx, dword [edi + 0x6c]
inc esi
cmp dword [edi + 0x70], ecx
jg 0x4a0897
push 0
push esi
push dword [esp + 0x20]
mov edx, 0x46
mov ecx, edi
call fcn.00451b20
add esp, 0xc
jmp 0x4a08c6
mov edx, dword [esp + 0x18]
lea eax, [ecx + 1]
mov dword [edi + 0x6c], eax
lea ecx, [ecx + ecx*4]
mov eax, dword [edi + 0x68]
mov dword [eax + ecx*4], 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 eax, dword [esp + 0x30]
or esi, 0xffffffff
mov edx, dword [edi + 0x6c]
mov ecx, 0xfffffff9
cmp byte [eax + 0x1c], 0
mov eax, dword [eax + 0x20]
cmovne esi, ecx
mov dword [esp + 0x2c], eax
mov dword [esp + 0x24], esi
cmp dword [edi + 0x70], edx
jg 0x4a0909
push dword [esp + 0x1c]
lea edx, [ecx + 0x10]
mov ecx, edi
push dword [esp + 0x18]
push dword [esp + 0x4c]
call fcn.00451b20
add esp, 0xc
mov edx, eax
jmp 0x4a0940
mov esi, dword [esp + 0x44]
lea eax, [edx + 1]
mov dword [edi + 0x6c], eax
lea ecx, [edx + edx*4]
mov eax, dword [edi + 0x68]
mov dword [eax + ecx*4 + 4], esi
mov esi, dword [esp + 0x14]
mov dword [eax + ecx*4 + 8], esi
mov esi, dword [esp + 0x1c]
mov dword [eax + ecx*4 + 0xc], esi
mov esi, dword [esp + 0x24]
mov dword [eax + ecx*4], 9
mov dword [eax + ecx*4 + 0x10], 0
mov ecx, dword [edi]
cmp byte [ecx + 0x51], 0
je 0x4a095e
cmp esi, 0xfffffff4
je 0x4a09b7
mov eax, dword [esp + 0x2c]
mov edx, esi
push eax
call fcn.00452860
add esp, 4
jmp 0x4a09b7
test edx, edx
jns 0x4a0966
mov edx, dword [edi + 0x6c]
dec edx
mov eax, dword [edi + 0x68]
lea ecx, [edx + edx*4]
lea edx, [eax + ecx*4]
mov eax, dword [esp + 0x24]
test eax, eax
jns 0x4a09a7
cmp byte [edx + 1], 0
jne 0x4a09a7
cmp eax, 0xfffffffd
jne 0x4a098f
mov eax, dword [esp + 0x2c]
mov dword [edx + 0x10], eax
mov byte [edx + 1], 0xfd
jmp 0x4a09b7
mov ecx, dword [esp + 0x2c]
test ecx, ecx
je 0x4a09b7
mov dword [edx + 0x10], ecx
mov byte [edx + 1], al
cmp eax, 0xfffffff4
jne 0x4a09b7
inc dword [ecx + 0xc]
jmp 0x4a09b7
push eax
mov eax, dword [esp + 0x30]
mov ecx, edi
push eax
call fcn.00452a40
add esp, 8
mov eax, dword [esp + 0x30]
mov esi, 0xaa
mov edx, dword [ebp + 0x10]
mov ecx, dword [ebp + 8]
mov byte [eax + 0x1c], 0
mov eax, dword [esp + 0x44]
mov dword [edx + 0x30], eax
mov eax, 0x3c
cmp byte [ecx + 0x31], 0
mov ecx, dword [esp + 0x18]
cmovne eax, esi
mov esi, dword [edx + 0x38]
mov byte [edx + 0x2d], al
sub ecx, 1
mov eax, dword [edi + 0x6c]
mov dword [edx + 0x34], eax
mov dword [esp + 0x18], ecx
js 0x4a06ce
lea eax, [esi + esi*4]
shl eax, 2
mov dword [esp + 0x24], eax
mov eax, dword [esp + 0x30]
mov eax, dword [eax + 0x30]
mov esi, dword [eax + ecx*4]
mov dword [esp + 0x70], esi
cmp ecx, 0x10
jge 0x4a0a39
mov eax, dword [esp + 0x30]
mov ax, word [eax + 0x1e]
shr ax, cl
test al, 1
je 0x4a0a35
mov ecx, dword [ebp + 0x10]
mov edx, esi
call fcn.0049f3e0
jmp 0x4a0bd0
mov ecx, dword [esp + 0x18]
test byte [esi + 0xc], 1
je 0x4a0bd7
mov eax, dword [esp + 0x58]
cmp byte [eax + 0x51], 0
jne 0x4a0aea
mov ecx, dword [esp + 0x24]
mov eax, dword [edx + 0x3c]
sub ecx, 0x14
mov dword [esp + 0x24], ecx
mov ecx, dword [eax + ecx + 4]
test ecx, ecx
jns 0x4a0a6b
mov ecx, dword [edi + 0x6c]
dec ecx
mov eax, dword [edi]
cmp byte [eax + 0x51], 0
je 0x4a0a7a
mov eax, 0x6562ec
jmp 0x4a0a83
mov eax, dword [edi + 0x68]
lea ecx, [ecx + ecx*4]
lea eax, [eax + ecx*4]
mov ecx, dword [eax + 4]
mov esi, dword [eax + 0xc]
mov edx, dword [eax + 8]
movzx eax, byte [eax]
mov dword [esp + 0x3c], ecx
mov ecx, dword [edi + 0x6c]
mov dword [esp + 0x28], eax
cmp dword [edi + 0x70], ecx
jg 0x4a0ab4
mov ecx, dword [esp + 0x3c]
push esi
push edx
push ecx
mov edx, eax
mov ecx, edi
call fcn.00451b20
add esp, 0xc
jmp 0x4a0aea
lea eax, [ecx + 1]
mov dword [edi + 0x6c], eax
lea ecx, [ecx + ecx*4]
mov eax, dword [edi + 0x68]
mov dword [eax + ecx*4 + 8], edx
mov dword [eax + ecx*4 + 0xc], esi
mov dword [eax + ecx*4 + 0x10], 0
lea eax, [eax + ecx*4]
mov ecx, dword [esp + 0x28]
mov byte [eax + 1], 0
mov byte [eax], cl
xor ecx, ecx
mov word [eax + 2], cx
mov ecx, dword [esp + 0x3c]
mov dword [eax + 4], ecx
mov eax, dword [esp + 0x60]
push 0
push 0x34
mov ecx, dword [eax]
call fcn.00431410
mov esi, eax
add esp, 8
test esi, esi
je 0x4a0bd0
push 0x34
push 0
push esi
call fcn.005889a0
add esp, 0xc
mov byte [esi], 0x35
or eax, 0xffffffff
mov ecx, esi
mov word [esi + 0x22], ax
call fcn.004676a0
mov ecx, dword [esp + 0x60]
mov eax, dword [ecx]
mov eax, dword [eax + 0x78]
cmp dword [esi + 0x18], eax
jle 0x4a0b41
push eax
push str.Expression_tree_is_too_large__maximum_depth__d_
push ecx
call fcn.00434450
add esp, 0xc
mov eax, dword [esp + 0x70]
mov ecx, dword [esp + 0x58]
push 0
push 0x35
mov eax, dword [eax]
mov eax, dword [eax + 0xc]
mov dword [esi + 0xc], eax
call fcn.00431410
mov ecx, eax
add esp, 8
mov dword [esp + 0x28], ecx
test ecx, ecx
je 0x4a0b92
push 0x34
push 0
push ecx
call fcn.005889a0
mov ecx, dword [esp + 0x34]
add esp, 0xc
or eax, 0xffffffff
mov word [ecx + 0x22], ax
lea eax, [ecx + 0x34]
mov byte [ecx], 0xa4
mov dword [ecx + 8], eax
mov byte [eax], 0
mov dword [ecx + 0x18], 1
mov dword [esi + 0x10], ecx
test ecx, ecx
je 0x4a0bbe
mov edx, dword [esp + 0x1c]
mov eax, dword [esp + 0x18]
add edx, 2
add eax, edx
mov dword [ecx + 0x1c], eax
mov eax, dword [ebp + 0x10]
push 0
push dword [eax + 0x18]
push esi
push dword [esp + 0x6c]
call fcn.0046dc20
add esp, 0x10
mov ecx, dword [esp + 0x58]
mov edx, esi
mov dword [esi + 0xc], 0
call fcn.00467ec0
mov ecx, dword [esp + 0x18]
mov edx, dword [ebp + 0x10]
sub ecx, 1
mov dword [esp + 0x18], ecx
jns 0x4a0a04
jmp 0x4a06ce
test al, 5
setne cl
bt eax, 8
setb al
test al, cl
mov eax, dword [esp + 0x30]
je 0x4a0cd5
mov eax, dword [eax + 0x30]
mov eax, dword [eax]
inc dword [esi + 0x2c]
mov ecx, dword [esi + 0x2c]
push ecx
push dword [esp + 0x4c]
mov dword [esp + 0x30], ecx
mov ecx, esi
push 0
push edx
mov edx, eax
mov dword [esp + 0x80], eax
call fcn.0049f6f0
mov ecx, dword [esp + 0x38]
add esp, 0x10
mov dword [esp + 0x24], eax
cmp eax, ecx
je 0x4a0c54
test ecx, ecx
je 0x4a0c54
mov dl, byte [esi + 0x13]
cmp dl, 8
jae 0x4a0c54
movzx eax, dl
mov dword [esi + eax*4 + 0x90], ecx
inc byte [esi + 0x13]
mov eax, dword [esp + 0x24]
mov edx, dword [ebp + 0x10]
mov ecx, dword [edi + 0x6c]
mov esi, dword [edx + 0x10]
cmp dword [edi + 0x70], ecx
jg 0x4a0c7c
push eax
push esi
push dword [esp + 0x4c]
mov edx, 0x1e
mov ecx, edi
call fcn.00451b20
mov edx, dword [ebp + 0x10]
add esp, 0xc
jmp 0x4a0caf
lea eax, [ecx + 1]
mov dword [edi + 0x6c], eax
lea ecx, [ecx + ecx*4]
mov eax, dword [edi + 0x68]
mov edi, dword [esp + 0x44]
mov dword [eax + ecx*4 + 8], esi
mov esi, dword [esp + 0x24]
mov dword [eax + ecx*4 + 4], edi
mov edi, dword [esp + 0x5c]
mov dword [eax + ecx*4], 0x1e
mov dword [eax + ecx*4 + 0xc], esi
mov dword [eax + ecx*4 + 0x10], 0
mov esi, dword [esp + 0x70]
mov byte [edx + 0x2d], 0xaa
mov ecx, dword [esi + 0x28]
mov eax, dword [esi + 0x2c]
and ecx, dword [edx + 0x48]
and eax, dword [edx + 0x4c]
or ecx, eax
jne 0x4a06ce
or word [esi + 0xa], 4
jmp 0x4a06ce
mov ecx, dword [eax + 0x24]
mov eax, ecx
and eax, 0x102
cmp eax, 0x102
jne 0x4a0f54
xor edx, edx
mov dword [esp + 0x4c], 0xaa
mov dword [esp + 0x54], 0
mov dword [esp + 0x24], 0
mov dword [esp + 0x2c], 0
mov dword [esp + 0x14], edx
test cl, 0x20
je 0x4a0d2a
mov eax, dword [esp + 0x30]
mov dword [esp + 0x24], 1
mov eax, dword [eax + 0x30]
mov edx, dword [eax]
mov dword [esp + 0x14], edx
test cl, 0x10
je 0x4a0d43
mov eax, dword [esp + 0x30]
mov ecx, dword [esp + 0x24]
mov eax, dword [eax + 0x30]
mov ecx, dword [eax + ecx*4]
mov dword [esp + 0x2c], ecx
jmp 0x4a0d45
xor ecx, ecx
mov eax, dword [esp + 0x48]
test eax, eax
je 0x4a0d57
mov dword [esp + 0x2c], edx
mov edx, ecx
mov dword [esp + 0x14], edx
test edx, edx
je 0x4a0e2f
mov edx, dword [edx]
mov dword [esp + 0x18], 0x18161719
mov dword [esp + 0x24], edx
mov ecx, dword [edx + 0x10]
call fcn.004670b0
test eax, eax
je 0x4a0dc3
mov al, byte [esi + 0x13]
test al, al
jne 0x4a0d88
inc dword [esi + 0x2c]
mov eax, dword [esi + 0x2c]
jmp 0x4a0d97
dec al
mov byte [esi + 0x13], al
movzx eax, al
mov eax, dword [esi + eax*4 + 0x90]
mov edx, dword [edx + 0x10]
mov ecx, esi
push 1
push eax
mov dword [esp + 0x1c], eax
mov dword [esp + 0x44], eax
call fcn.004a02a0
mov ecx, dword [esp + 0x2c]
add esp, 8
movzx eax, byte [ecx]
inc eax
and eax, 2
or eax, 1
mov cl, byte [esp + eax + 0x18]
jmp 0x4a0df8
mov edx, dword [edx + 0x10]
lea eax, [esp + 0x70]
push eax
mov ecx, esi
call fcn.0046d2f0
mov edx, dword [esp + 0x18]
add esp, 4
mov ecx, dword [ebp + 0x10]
mov dword [esp + 0x3c], eax
call fcn.0049f3e0
mov ecx, dword [esp + 0x24]
movzx eax, byte [ecx]
mov cl, byte [esp + eax - 0x1e]
mov eax, dword [esp + 0x70]
mov dword [esp + 0x14], eax
push dword [esp + 0x3c]
movzx edx, cl
mov ecx, edi
push dword [esp + 0x44]
push dword [esp + 0x4c]
call fcn.00451b60
mov ecx, dword [esp + 0x20]
add esp, 0xc
test ecx, ecx
je 0x4a0e4f
mov al, byte [esi + 0x13]
cmp al, 8
jae 0x4a0e4f
movzx eax, al
mov dword [esi + eax*4 + 0x90], ecx
inc byte [esi + 0x13]
jmp 0x4a0e4f
push dword [esp + 0x28]
xor edx, edx
mov ecx, edi
push dword [esp + 0x48]
test eax, eax
sete dl
lea edx, [edx*4 + 0x20]
call fcn.00451c90
add esp, 8
mov eax, dword [esp + 0x2c]
test eax, eax
je 0x4a0ede
mov eax, dword [eax]
inc dword [esi + 0x2c]
mov ecx, dword [esi + 0x2c]
push 1
mov edx, dword [eax + 0x10]
mov dword [esp + 0x58], ecx
push ecx
mov ecx, esi
mov dword [esp + 0x30], eax
call fcn.004a02a0
mov edx, dword [esp + 0x30]
add esp, 8
mov eax, dword [edx + 0x10]
mov ecx, eax
mov dword [esp + 0x28], eax
call fcn.004670b0
test eax, eax
jne 0x4a0eb1
mov al, byte [edx]
cmp al, 0x38
je 0x4a0e9b
cmp al, 0x36
jne 0x4a0eb1
xor edx, edx
cmp dword [esp + 0x48], edx
sete dl
lea edx, [edx*2 + 0x37]
mov dword [esp + 0x4c], edx
jmp 0x4a0ec5
xor eax, eax
cmp dword [esp + 0x48], eax
setne al
lea eax, [eax*2 + 0x36]
mov dword [esp + 0x4c], eax
mov ecx, dword [esp + 0x28]
call fcn.004670b0
test eax, eax
jne 0x4a0ede
mov edx, dword [esp + 0x2c]
mov ecx, dword [ebp + 0x10]
call fcn.0049f3e0
cmp dword [esp + 0x48], 0
mov edx, dword [ebp + 0x10]
mov ecx, dword [edi + 0x6c]
sete al
add al, 4
cmp dword [esp + 0x4c], 0xaa
mov byte [edx + 0x2d], al
mov eax, dword [esp + 0x44]
mov dword [edx + 0x30], eax
mov dword [edx + 0x34], ecx
je 0x4a06ce
inc dword [esi + 0x2c]
mov edx, 0x80
mov esi, dword [esi + 0x2c]
mov ecx, edi
push esi
push eax
call fcn.00451c90
mov edx, dword [esp + 0x54]
mov ecx, edi
push esi
push dword [esp + 0x4c]
push dword [esp + 0x64]
call fcn.00451b60
mov eax, dword [edi + 0x6c]
add esp, 0x14
test eax, eax
jle 0x4a06ce
lea ecx, [eax + eax*4]
mov edx, 0x53
mov eax, dword [edi + 0x68]
mov word [eax + ecx*4 - 0x12], dx
jmp 0x4a06ce
test ecx, 0x200
je 0x4a18b6
mov esi, dword [esp + 0x30]
mov dword [esp + 0x68], 0
mov dword [esp + 0x64], 0
mov dword [esp + 0x38], 0
movzx eax, word [esi + 0x18]
movzx esi, word [esi + 0x1a]
mov dword [esp + 0x40], esi
mov esi, dword [esp + 0x30]
mov dword [esp + 0x3c], eax
mov dword [esp + 0x74], 0
mov byte [esp + 0x23], 0
movzx esi, word [esi + 0x1c]
mov dword [esp + 0x4c], esi
mov esi, dword [esp + 0x30]
mov byte [esp + 0x6f], 0
mov esi, dword [esi + 0x20]
mov dword [esp + 0x50], esi
mov esi, dword [edx + 8]
mov dword [esp + 0x1c], esi
mov esi, dword [ebp + 8]
test byte [esi + 0x2c], 1
mov esi, dword [esp + 0x60]
je 0x4a0fef
mov edx, dword [ebp + 8]
cmp byte [edx + 0x2f], 0
mov edx, dword [ebp + 0x10]
jle 0x4a0fef
mov edx, dword [esp + 0x50]
cmp word [edx + 0x32], ax
mov edx, dword [ebp + 0x10]
jbe 0x4a0fef
mov byte [esp + 0x23], 1
mov dword [esp + 0x38], 1
movzx eax, ax
mov dword [esp + 0x34], eax
mov dword [esp + 0x14], eax
test cl, 0x20
je 0x4a1035
mov eax, dword [esp + 0x30]
mov edi, dword [esp + 0x14]
mov eax, dword [eax + 0x30]
mov eax, dword [eax + edi*4]
inc edi
mov dword [esp + 0x14], edi
mov edi, dword [esp + 0x30]
mov dword [esp + 0x68], eax
movzx eax, word [edi + 0x1a]
mov edi, dword [esp + 0x38]
cmp edi, eax
cmovbe edi, eax
mov eax, edi
mov dword [esp + 0x38], edi
mov edi, dword [esp + 0x5c]
mov dword [esp + 0x38], eax
test cl, 0x10
je 0x4a10fa
mov eax, dword [esp + 0x30]
mov ecx, dword [esp + 0x14]
mov eax, dword [eax + 0x30]
mov eax, dword [eax + ecx*4]
mov ecx, dword [esp + 0x30]
mov dword [esp + 0x64], eax
movzx eax, word [ecx + 0x1c]
mov ecx, dword [esp + 0x38]
cmp ecx, eax
cmovbe ecx, eax
mov eax, dword [esp + 0x64]
mov dword [esp + 0x38], ecx
mov ecx, 0x100
test word [eax + 0xa], cx
je 0x4a10bb
mov eax, dword [esi + 0x2c]
mov ecx, edi
inc eax
mov dword [esi + 0x2c], eax
push eax
mov dword [edx + 0x24], eax
mov edx, 0x46
push 1
call fcn.00451c90
mov edx, dword [ebp + 0x10]
xor ecx, ecx
mov eax, dword [edi + 0x6c]
add esp, 8
mov edi, dword [esp + 0x34]
shl dword [edx + 0x24], 1
mov dword [edx + 0x28], eax
mov eax, dword [esp + 0x50]
mov eax, dword [eax + 0x1c]
cmp byte [edi + eax], 1
mov edi, dword [esp + 0x5c]
sete cl
xor ecx, dword [esp + 0x48]
or dword [edx + 0x24], ecx
cmp dword [esp + 0x68], 0
jne 0x4a10fa
mov eax, dword [esp + 0x50]
mov ecx, dword [esp + 0x34]
mov eax, dword [eax + 4]
movsx ecx, word [eax + ecx*2]
mov dword [esp + 0x28], ecx
test ecx, ecx
js 0x4a10f0
mov eax, dword [esp + 0x50]
add ecx, ecx
mov eax, dword [eax + 0xc]
mov eax, dword [eax + 4]
cmp byte [eax + ecx*8 + 0xc], 0
je 0x4a10f5
mov ecx, dword [esp + 0x28]
cmp ecx, 0xfffffffe
jne 0x4a10fa
mov byte [esp + 0x23], 1
mov eax, dword [esp + 0x50]
mov ecx, dword [esp + 0x3c]
movzx eax, word [eax + 0x32]
mov dword [esp + 0x28], eax
cmp cx, ax
jae 0x4a1134
mov eax, dword [esp + 0x50]
xor ecx, ecx
mov edi, dword [esp + 0x34]
mov eax, dword [eax + 0x1c]
cmp byte [edi + eax], cl
mov edi, dword [esp + 0x5c]
sete cl
cmp dword [esp + 0x48], ecx
je 0x4a1140
mov eax, dword [esp + 0x28]
mov ecx, dword [esp + 0x3c]
cmp dword [esp + 0x48], 0
je 0x4a1177
cmp ax, cx
jne 0x4a1177
mov eax, dword [esp + 0x64]
mov ecx, dword [esp + 0x68]
mov edi, dword [esp + 0x4c]
mov dword [esp + 0x68], eax
mov al, byte [esp + 0x23]
mov byte [esp + 0x6f], al
mov eax, dword [esp + 0x40]
mov dword [esp + 0x64], ecx
movzx ecx, di
mov edi, dword [esp + 0x5c]
movzx eax, al
mov byte [esp + 0x23], 0
mov dword [esp + 0x40], ecx
mov dword [esp + 0x4c], eax
lea eax, [esp + 0x2c]
mov ecx, esi
push eax
push dword [esp + 0x3c]
push dword [esp + 0x50]
call fcn.0049fca0
mov ecx, dword [esp + 0x38]
add esp, 0xc
mov dword [esp + 0x18], eax
test ecx, ecx
je 0x4a11b6
cmp word [esp + 0x4c], 0
je 0x4a11b6
mov edx, dword [esp + 0x34]
lea edx, [edx + ecx]
mov ecx, dword [esp + 0x58]
call fcn.004316a0
mov dword [esp + 0x74], eax
mov eax, dword [ebp + 0x10]
mov eax, dword [eax + 0x10]
mov dword [esp + 0x54], eax
mov eax, dword [esp + 0x68]
test eax, eax
je 0x4a11d6
test byte [eax + 0xc], 0x28
mov dword [esp + 0x7c], 0
je 0x4a11de
mov dword [esp + 0x7c], 1
mov ecx, dword [esp + 0x64]
test ecx, ecx
je 0x4a11f4
test byte [ecx + 0xc], 0x28
mov dword [esp + 0x14], 0
je 0x4a11fc
mov dword [esp + 0x14], 1
test eax, eax
jne 0x4a136e
cmp word [esp + 0x3c], ax
ja 0x4a136e
mov ecx, dword [esp + 0x34]
mov edx, ecx
mov dword [esp + 0x24], eax
mov dword [esp + 0x38], edx
mov al, byte [esp + 0x23]
test al, al
je 0x4a125a
mov eax, dword [esp + 0x18]
mov edx, 0x49
add eax, ecx
mov ecx, edi
push eax
push 0
call fcn.00451c90
mov edx, dword [esp + 0x40]
add esp, 8
inc edx
mov dword [esp + 0x7c], 0
mov dword [esp + 0x38], edx
mov dword [esp + 0x24], 1
mov al, byte [esp + 0x23]
mov ecx, dword [esp + 0x2c]
movzx eax, al
sub edx, eax
mov eax, dword [esp + 0x18]
test ecx, ecx
je 0x4a12a8
test edx, edx
jle 0x4a127c
nop
cmp byte [ecx], 0x41
jne 0x4a127c
dec edx
inc eax
inc ecx
test edx, edx
jg 0x4a1270
cmp edx, 1
jle 0x4a128e
cmp byte [edx + ecx - 1], 0x41
jne 0x4a128e
dec edx
cmp edx, 1
jg 0x4a1281
test edx, edx
jle 0x4a12a8
push edx
push ecx
mov ecx, dword [esi + 8]
push 0
push edx
push eax
mov edx, 0x5b
call fcn.00451fd0
add esp, 0x14
mov ecx, dword [esp + 0x30]
movzx eax, word [ecx + 0x2a]
test ax, ax
je 0x4a12bb
cmp dword [esp + 0x38], eax
je 0x4a130b
test dword [ecx + 0x24], 0x40000
je 0x4a12d7
push dword [esp + 0x1c]
mov edx, 0x77
mov ecx, edi
call fcn.00451c30
add esp, 4
mov ecx, dword [esp + 0x24]
push dword [esp + 0x38]
mov eax, dword [esp + 0x80]
push dword [esp + 0x1c]
push dword [esp + 0x5c]
lea eax, [eax + ecx*2]
mov ecx, dword [esp + 0x54]
push dword [esp + 0x28]
movzx edx, byte [ecx + eax*2 + 0x619ef8]
mov ecx, edi
call fcn.00452200
add esp, 0x10
mov eax, dword [esp + 0x64]
test eax, eax
je 0x4a1566
mov ecx, dword [esp + 0x4c]
mov eax, dword [eax]
movzx edx, cx
mov ecx, dword [esp + 0x34]
add ecx, dword [esp + 0x18]
mov eax, dword [eax + 0x10]
push edx
mov dword [esp + 0x40], ecx
mov edx, eax
push ecx
mov ecx, esi
mov dword [esp + 0x2c], eax
call fcn.004a02a0
mov eax, dword [esp + 0x6c]
mov ecx, 0x100
add esp, 8
test word [eax + 0xa], cx
je 0x4a14c0
mov eax, dword [edi]
mov ecx, dword [edi + 0x6c]
dec ecx
cmp byte [eax + 0x51], 0
je 0x4a14a0
mov edx, 0x6562ec
jmp 0x4a14a9
mov ecx, dword [esp + 0x34]
mov edx, ecx
mov dword [esp + 0x24], 1
mov dword [esp + 0x38], edx
test eax, eax
je 0x4a121d
mov eax, dword [eax]
mov edx, dword [esp + 0x40]
add ecx, dword [esp + 0x18]
movzx edx, dx
mov eax, dword [eax + 0x10]
push edx
mov dword [esp + 0x2c], ecx
mov edx, eax
push ecx
mov ecx, esi
mov dword [esp + 0x44], eax
call fcn.004a02a0
mov eax, dword [esp + 0x70]
mov ecx, 0x100
mov edi, dword [esp + 0x64]
add esp, 8
test word [eax + 0xa], cx
je 0x4a13f4
mov eax, dword [edi]
mov ecx, dword [edi + 0x6c]
dec ecx
cmp byte [eax + 0x51], 0
je 0x4a13d4
mov edx, 0x6562ec
jmp 0x4a13dd
mov eax, dword [edi + 0x68]
lea ecx, [ecx + ecx*4]
lea edx, [eax + ecx*4]
mov ecx, dword [ebp + 0x10]
mov eax, dword [ecx + 0x24]
shr eax, 1
mov dword [edx + 0xc], eax
mov al, byte [ecx + 0x24]
and al, 1
movzx eax, al
mov word [edx + 2], ax
mov ecx, dword [esp + 0x3c]
call fcn.00469550
test eax, eax
je 0x4a1418
push dword [esp + 0x54]
mov edx, 0x32
mov ecx, edi
push dword [esp + 0x2c]
call fcn.00451c90
add esp, 8
mov ecx, dword [esp + 0x2c]
test ecx, ecx
je 0x4a143a
mov eax, dword [esp + 0x34]
add eax, ecx
mov ecx, dword [esp + 0x3c]
push eax
mov eax, dword [esp + 0x44]
movzx edx, ax
call fcn.0049f4a0
add esp, 4
mov ecx, dword [esp + 0x40]
mov edx, dword [esp + 0x38]
movzx eax, cx
add edx, eax
mov eax, dword [esp + 0x3c]
mov dword [esp + 0x38], edx
mov cl, byte [eax]
cmp cl, 0xa4
jne 0x4a1459
mov cl, byte [eax + 0x26]
cmp cl, 0xa5
jne 0x4a1463
mov eax, dword [eax + 0x14]
jmp 0x4a146d
cmp cl, 0x7f
jne 0x4a1486
mov eax, dword [eax + 0x14]
mov eax, dword [eax]
mov eax, dword [eax]
cmp eax, 1
jle 0x4a1486
mov dword [esp + 0x7c], 1
mov byte [esp + 0x23], 0
jmp 0x4a1256
mov edx, dword [esp + 0x68]
mov ecx, dword [ebp + 0x10]
call fcn.0049f3e0
mov edx, dword [esp + 0x38]
mov byte [esp + 0x23], 0
jmp 0x4a1256
mov eax, dword [edi + 0x68]
lea ecx, [ecx + ecx*4]
lea edx, [eax + ecx*4]
mov ecx, dword [ebp + 0x10]
mov eax, dword [ecx + 0x24]
shr eax, 1
mov dword [edx + 0xc], eax
mov al, byte [ecx + 0x24]
and al, 1
movzx eax, al
mov word [edx + 2], ax
mov ecx, dword [esp + 0x24]
call fcn.00469550
test eax, eax
je 0x4a14e4
push dword [esp + 0x54]
mov edx, 0x32
mov ecx, edi
push dword [esp + 0x40]
call fcn.00451c90
add esp, 8
mov eax, dword [esp + 0x74]
test eax, eax
je 0x4a151a
mov ecx, dword [esp + 0x24]
push eax
mov eax, dword [esp + 0x50]
movzx edx, ax
call fcn.0049f4a0
mov ecx, dword [esp + 0x50]
add esp, 4
mov edx, dword [esp + 0x3c]
movzx eax, cx
mov ecx, esi
push dword [esp + 0x74]
push eax
call fcn.0049f450
add esp, 8
mov ecx, dword [esp + 0x4c]
movzx eax, cx
add dword [esp + 0x34], eax
mov eax, dword [esp + 0x24]
mov cl, byte [eax]
cmp cl, 0xa4
jne 0x4a1533
mov cl, byte [eax + 0x26]
cmp cl, 0xa5
jne 0x4a153d
mov eax, dword [eax + 0x14]
jmp 0x4a1547
cmp cl, 0x7f
jne 0x4a1558
mov eax, dword [eax + 0x14]
mov eax, dword [eax]
mov eax, dword [eax]
cmp eax, 1
jle 0x4a1558
mov dword [esp + 0x14], 1
jmp 0x4a1593
mov edx, dword [esp + 0x64]
mov ecx, dword [ebp + 0x10]
call fcn.0049f3e0
jmp 0x4a1593
cmp byte [esp + 0x6f], 0
je 0x4a1593
mov eax, dword [esp + 0x34]
mov edx, 0x49
add eax, dword [esp + 0x18]
mov ecx, edi
push eax
push 0
call fcn.00451c90
add esp, 8
mov dword [esp + 0x14], 0
inc dword [esp + 0x34]
mov ecx, dword [esp + 0x2c]
mov edx, dword [esp + 0x58]
test ecx, ecx
je 0x4a15e6
test edx, edx
je 0x4a15d9
cmp dword [edx + 0x1e0], 0
je 0x4a15b9
mov edx, ecx
mov ecx, dword [esp + 0x58]
call fcn.00431090
jmp 0x4a15e2
cmp ecx, dword [edx + 0x130]
jb 0x4a15d9
cmp ecx, dword [edx + 0x134]
jae 0x4a15d9
mov eax, dword [edx + 0x12c]
mov dword [ecx], eax
mov dword [edx + 0x12c], ecx
jmp 0x4a15e6
push ecx
call fcn.00431020
add esp, 4
mov edx, dword [esp + 0x58]
mov ecx, dword [esp + 0x74]
test ecx, ecx
je 0x4a1631
test edx, edx
je 0x4a1628
cmp dword [edx + 0x1e0], 0
je 0x4a1608
mov edx, ecx
mov ecx, dword [esp + 0x58]
call fcn.00431090
jmp 0x4a1631
cmp ecx, dword [edx + 0x130]
jb 0x4a1628
cmp ecx, dword [edx + 0x134]
jae 0x4a1628
mov eax, dword [edx + 0x12c]
mov dword [ecx], eax
mov dword [edx + 0x12c], ecx
jmp 0x4a1631
push ecx
call fcn.00431020
add esp, 4
mov ecx, dword [ebp + 0x10]
mov eax, dword [edi + 0x6c]
mov dword [ecx + 0x34], eax
mov eax, dword [esp + 0x34]
test eax, eax
je 0x4a1669
mov ecx, dword [esp + 0x48]
push eax
push dword [esp + 0x1c]
mov eax, dword [esp + 0x1c]
push dword [esp + 0x5c]
push dword [esp + 0x28]
movzx edx, byte [eax + ecx*2 + str.__]
mov ecx, edi
call fcn.00452200
add esp, 0x10
mov eax, dword [esp + 0x30]
test dword [eax + 0x24], 0x40000
je 0x4a168f
push 1
push dword [esp + 0x20]
mov edx, 0x77
mov ecx, edi
call fcn.00451c90
mov eax, dword [esp + 0x38]
add esp, 8
test byte [eax + 0x24], 0x40
je 0x4a16af
mov ecx, dword [ebp + 8]
test byte [ecx + 0x2c], 0x20
jne 0x4a16af
mov eax, dword [esp + 0x50]
mov dword [esp + 0x3c], 1
jmp 0x4a1846
mov eax, dword [esp + 0x50]
mov dword [esp + 0x3c], 0
mov ecx, dword [eax + 0xc]
test byte [ecx + 0x24], 0x20
jne 0x4a1732
mov ecx, dword [ebp + 8]
movzx eax, word [ecx + 0x2c]
test eax, 0x400
jne 0x4a1700
test eax, 0x1000
je 0x4a16df
cmp byte [ecx + 0x31], 1
je 0x4a1700
mov esi, dword [esp + 0x1c]
mov edx, dword [esp + 0x50]
push esi
push dword [esp + 0x48]
call fcn.004a0110
mov ecx, dword [ebp + 8]
add esp, 8
mov eax, dword [esp + 0x50]
jmp 0x4a184a
inc dword [esi + 0x2c]
mov edx, 0x87
mov esi, dword [esi + 0x2c]
mov ecx, edi
push esi
push dword [esp + 0x20]
call fcn.00451c90
push esi
push 0
push dword [esp + 0x54]
mov edx, 0x1f
mov ecx, edi
call fcn.00451b60
add esp, 0x14
jmp 0x4a183f
mov edx, dword [esp + 0x44]
cmp edx, dword [esp + 0x1c]
je 0x4a1843
call fcn.00475290
mov ecx, esi
mov dword [esp + 0x54], eax
movzx edx, word [eax + 0x32]
call fcn.0046eba0
mov ecx, eax
xor esi, esi
mov eax, dword [esp + 0x54]
xor edx, edx
mov dword [esp + 0x28], ecx
mov dword [esp + 0x24], esi
cmp dx, word [eax + 0x32]
jae 0x4a181f
mov dword [esp + 0x14], ecx
mov edx, dword [esp + 0x50]
xor ecx, ecx
movzx edx, word [edx + 0x34]
test edx, edx
jle 0x4a179d
mov eax, dword [eax + 4]
movzx esi, word [eax + esi*2]
mov eax, dword [esp + 0x50]
mov eax, dword [eax + 4]
cmp si, word [eax]
je 0x4a17c6
inc ecx
add eax, 2
cmp ecx, edx
jl 0x4a1790
or eax, 0xffffffff
mov ecx, dword [edi + 0x6c]
movsx edx, ax
cmp dword [edi + 0x70], ecx
jg 0x4a17cb
mov esi, dword [esp + 0x14]
mov ecx, edi
push esi
push edx
push dword [esp + 0x24]
mov edx, 0x5a
call fcn.00451b20
add esp, 0xc
jmp 0x4a17fa
movzx eax, cx
jmp 0x4a17a0
mov esi, dword [esp + 0x1c]
lea eax, [ecx + 1]
mov dword [edi + 0x6c], eax
lea ecx, [ecx + ecx*4]
mov eax, dword [edi + 0x68]
mov dword [eax + ecx*4 + 4], esi
mov esi, dword [esp + 0x14]
mov dword [eax + ecx*4], 0x5a
mov dword [eax + ecx*4 + 8], edx
mov dword [eax + ecx*4 + 0xc], esi
mov dword [eax + ecx*4 + 0x10], 0
mov eax, dword [esp + 0x54]
mov esi, dword [esp + 0x24]
inc dword [esp + 0x14]
inc esi
mov dword [esp + 0x24], esi
movzx eax, word [eax + 0x32]
cmp esi, eax
mov eax, dword [esp + 0x54]
jl 0x4a1774
mov ecx, dword [esp + 0x28]
movzx eax, word [eax + 0x32]
mov edx, 0x1c
push eax
push ecx
push dword [esp + 0x9c]
mov ecx, edi
push dword [esp + 0x50]
call fcn.00452200
add esp, 0x10
mov eax, dword [esp + 0x50]
mov ecx, dword [ebp + 8]
mov esi, dword [esp + 0x1c]
mov edx, dword [ebp + 0x10]
cmp dword [edx], 0
jne 0x4a186b
test byte [ecx + 0x2c], 0x20
jne 0x4a186b
mov edx, dword [esp + 0x44]
push ecx
push esi
mov ecx, eax
call fcn.004a0390
mov edx, dword [ebp + 0x10]
add esp, 8
mov ecx, dword [esp + 0x30]
test dword [ecx + 0x24], 0x1000
je 0x4a187e
mov byte [edx + 0x2d], 0xaa
jmp 0x4a188b
cmp dword [esp + 0x48], 0
sete al
add al, 4
mov byte [edx + 0x2d], al
mov dword [edx + 0x30], esi
mov al, byte [ecx + 0x26]
and al, 1
mov byte [edx + 0x2e], al
test byte [ecx + 0x24], 0xf
jne 0x4a18a0
mov byte [edx + 0x2f], 1
cmp dword [esp + 0x3c], 0
je 0x4a230c
xor eax, eax
mov dword [esp + 0x50], eax
jmp 0x4a06d0
test ecx, 0x2000
je 0x4a22bc
mov eax, dword [esi + 0x28]
inc dword [esi + 0x2c]
dec dword [esi + 0x38]
mov dword [esp + 0x70], eax
inc eax
mov dword [esi + 0x28], eax
mov eax, dword [esi + 0x2c]
mov dword [esp + 0x2c], eax
mov eax, dword [esi + 0x38]
mov dword [esp + 0x24], eax
xor eax, eax
mov dword [esp + 0x68], eax
mov eax, dword [esp + 0x80]
mov dword [esp + 0x74], 0
mov dword [esp + 0x18], 0
mov dword [esp + 0x4c], 0
mov ecx, dword [eax + 0x10]
mov eax, dword [esp + 0x30]
mov dword [esp + 0x3c], 0
mov dword [esp + 0x38], ecx
mov eax, dword [eax + 0x30]
mov eax, dword [eax]
mov dword [esp + 0x28], eax
mov eax, dword [eax + 0x1c]
mov dword [esp + 0x54], eax
mov eax, dword [esp + 0x2c]
mov byte [edx + 0x2d], 0x42
mov dword [edx + 0x30], eax
mov edx, dword [ebp + 8]
mov al, byte [edx + 0x2e]
cmp al, 1
jbe 0x4a1a72
movzx eax, al
sub eax, dword [ebp + 0xc]
dec eax
mov dword [esp + 0x14], eax
lea eax, [eax + eax*8]
lea ecx, [eax*8 + 0x50]
mov eax, dword [esp + 0x58]
test eax, eax
je 0x4a1970
push 0
push ecx
mov ecx, eax
call fcn.00431410
add esp, 8
mov ecx, eax
jmp 0x4a198c
mov eax, ecx
or eax, 0
je 0x4a198a
push 0
push ecx
call fcn.00430ee0
add esp, 8
mov dword [esp + 0x64], eax
mov ecx, eax
jmp 0x4a1990
xor ecx, ecx
mov dword [esp + 0x64], ecx
test ecx, ecx
jne 0x4a19a0
mov eax, dword [ebp + 0x14]
mov edx, dword [ebp + 0x18]
pop edi
pop esi
mov esp, ebp
pop ebp
ret
mov edx, dword [esp + 0x14]
lea eax, [edx + 1]
movzx eax, al
mov dword [ecx + 4], eax
mov dword [ecx], eax
mov eax, dword [esp + 0x80]
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 [ebp + 8]
movq qword [ecx + 0x48], xmm0
mov eax, dword [eax + 4]
cmp edx, 1
jl 0x4a1a3d
mov edi, dword [ebp + 0x10]
add ecx, 0x50
add edi, 0x7c
mov esi, eax
movzx eax, byte [edi]
lea edi, [edi + 0x50]
lea ecx, [ecx + 0x48]
lea eax, [eax + eax*8]
movups xmm0, xmmword [esi + eax*8 + 8]
movups xmmword [ecx - 0x48], xmm0
movups xmm0, xmmword [esi + eax*8 + 0x18]
movups xmmword [ecx - 0x38], xmm0
movups xmm0, xmmword [esi + eax*8 + 0x28]
movups xmmword [ecx - 0x28], xmm0
movups xmm0, xmmword [esi + eax*8 + 0x38]
movups xmmword [ecx - 0x18], xmm0
movq xmm0, qword [esi + eax*8 + 0x48]
movq qword [ecx - 8], xmm0
sub edx, 1
jne 0x4a19f5
mov edi, dword [esp + 0x5c]
mov esi, dword [esp + 0x60]
mov ecx, dword [esp + 0x38]
mov eax, dword [ebp + 8]
test byte [eax + 0x2c], 0x10
jne 0x4a1ad1
test byte [ecx + 0x24], 0x20
jne 0x4a1a7b
inc dword [esi + 0x2c]
mov edx, 0x49
mov eax, dword [esi + 0x2c]
mov ecx, edi
push eax
push 0
mov dword [esp + 0x20], eax
call fcn.00451c90
add esp, 8
jmp 0x4a1ac7
mov eax, dword [edx + 4]
mov dword [esp + 0x64], eax
jmp 0x4a1a41
mov ecx, dword [ecx + 8]
mov dword [esp + 0x14], ecx
test ecx, ecx
je 0x4a1a9a
mov eax, dword [ecx + 0x38]
and al, 3
cmp al, 2
je 0x4a1a96
mov ecx, dword [ecx + 0x14]
test ecx, ecx
jne 0x4a1a86
mov dword [esp + 0x14], ecx
mov edx, dword [esi + 0x28]
mov dword [esp + 0x18], edx
lea eax, [edx + 1]
mov dword [esi + 0x28], eax
movzx eax, word [ecx + 0x32]
mov ecx, edi
push eax
push edx
mov edx, 0x71
call fcn.00451c90
mov edx, dword [esp + 0x1c]
add esp, 8
mov ecx, esi
call fcn.00452bf0
inc dword [esi + 0x2c]
mov eax, dword [esi + 0x2c]
mov dword [esp + 0x4c], eax
mov edx, dword [edi + 0x6c]
mov dword [esp + 0x30], edx
cmp dword [edi + 0x70], edx
jg 0x4a1afa
push 0
push dword [esp + 0x30]
mov edx, 0x46
mov ecx, edi
push 0
call fcn.00451b20
add esp, 0xc
mov dword [esp + 0x30], eax
jmp 0x4a1b2d
lea eax, [edx + 1]
mov dword [edi + 0x6c], eax
lea ecx, [edx + edx*4]
mov eax, dword [edi + 0x68]
mov edx, dword [esp + 0x2c]
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 + 0x78]
mov eax, dword [edx + 0xc]
cmp eax, 1
jle 0x4a1c3b
test eax, eax
jle 0x4a1c3b
xor ecx, ecx
xor edi, edi
mov dword [esp + 0x14], ecx
xor esi, esi
nop
mov eax, dword [edx + 0x14]
mov edx, dword [eax + ecx]
add eax, ecx
cmp eax, dword [esp + 0x28]
je 0x4a1ba4
test byte [eax + 0xa], 6
jne 0x4a1ba4
mov esi, 0x1fff
test word [eax + 0xc], si
mov esi, dword [esp + 0x68]
je 0x4a1ba4
test edx, edx
je 0x4a1b89
mov ecx, dword [esp + 0x58]
push 0
push 0
call fcn.004680f0
add esp, 8
jmp 0x4a1b8b
xor eax, eax
mov ecx, dword [esp + 0x58]
mov edx, esi
push eax
call fcn.00467b20
mov ecx, dword [esp + 0x18]
mov esi, eax
add esp, 4
mov dword [esp + 0x68], esi
mov edx, dword [esp + 0x78]
inc edi
add ecx, 0x30
mov dword [esp + 0x14], ecx
cmp edi, dword [edx + 0xc]
jl 0x4a1b50
mov edi, dword [esp + 0x5c]
test esi, esi
mov esi, dword [esp + 0x60]
je 0x4a1c3b
mov ecx, dword [esi]
push 0
push 0x34
call fcn.00431410
add esp, 8
mov dword [esp + 0x14], eax
test eax, eax
je 0x4a1c28
push 0x34
push 0
push eax
call fcn.005889a0
mov ecx, dword [esp + 0x20]
or eax, 0xffffffff
add esp, 0xc
mov word [ecx + 0x22], ax
mov eax, dword [esp + 0x68]
mov dword [ecx + 0x10], eax
mov byte [ecx], 0x2c
mov eax, dword [eax + 4]
and eax, 0x200104
or dword [ecx + 4], eax
call fcn.004676a0
mov eax, dword [esi]
mov ecx, dword [eax + 0x78]
mov eax, dword [esp + 0x14]
cmp dword [eax + 0x18], ecx
jle 0x4a1c37
push ecx
push str.Expression_tree_is_too_large__maximum_depth__d_
push esi
call fcn.00434450
add esp, 0xc
jmp 0x4a1c33
mov edx, dword [esp + 0x68]
mov ecx, dword [esi]
call fcn.00467ec0
mov eax, dword [esp + 0x14]
mov dword [esp + 0x68], eax
mov eax, dword [ebp + 8]
mov ecx, 0x400
push str.MULTI_INDEX_OR
push 1
push esi
mov ax, word [eax + 0x2c]
and ax, cx
or ax, 0x20
movzx eax, ax
mov dword [esp + 0xa4], eax
call fcn.00452050
mov ecx, dword [esp + 0x60]
xor eax, eax
add esp, 0xc
mov dword [esp + 0x48], eax
cmp dword [ecx + 0xc], eax
jle 0x4a213e
mov edx, dword [esp + 0x44]
nop
lea eax, [eax + eax*2]
shl eax, 4
add eax, dword [ecx + 0x14]
cmp dword [eax + 0x14], edx
je 0x4a1ca1
mov edi, 0x400
test word [eax + 0xc], di
mov edi, dword [esp + 0x5c]
je 0x4a212c
mov eax, dword [eax]
xor ecx, ecx
mov dword [esp + 0x40], ecx
mov ecx, dword [esp + 0x68]
mov dword [esp + 0x14], eax
test ecx, ecx
je 0x4a1cbc
mov dword [ecx + 0xc], eax
mov dword [esp + 0x14], ecx
mov eax, dword [esp + 0x48]
inc eax
push eax
push str.INDEX__d
push 1
push esi
call fcn.00452050
push dword [esp + 0x80]
mov edx, dword [esp + 0x78]
mov ecx, esi
push dword [esp + 0xac]
push 0
push 0
push dword [esp + 0x34]
call fcn.004aa0e0
add esp, 0x24
mov dword [esp + 0x88], eax
test eax, eax
je 0x4a2124
mov edx, dword [esp + 0x64]
lea ecx, [eax + 0x2f0]
push 0
push ecx
mov ecx, esi
call fcn.0049f140
mov eax, dword [ebp + 8]
add esp, 8
test byte [eax + 0x2c], 0x10
jne 0x4a2001
mov eax, dword [esp + 0x54]
mov ecx, dword [esp + 0x48]
mov eax, dword [eax + 0xc]
dec eax
cmp ecx, eax
mov eax, 0xffffffff
cmove ecx, eax
mov eax, dword [esp + 0x38]
mov dword [esp + 0x14], ecx
test byte [eax + 0x24], 0x20
jne 0x4a1d86
push dword [esp + 0x4c]
mov edx, eax
mov ecx, edi
push 0xffffffffffffffff
push dword [esp + 0x4c]
call fcn.0046c080
add esp, 0xc
mov edx, 0x2a
mov ecx, edi
push dword [esp + 0x14]
push dword [esp + 0x50]
push 0
push dword [esp + 0x24]
call fcn.00452200
add esp, 0x10
mov dword [esp + 0x40], eax
jmp 0x4a2001
mov ecx, eax
call fcn.00475290
mov edx, eax
mov dword [esp + 0x7c], edx
movzx eax, word [edx + 0x32]
mov dword [esp + 0x34], eax
cmp eax, 1
jne 0x4a1dc8
mov cl, byte [esi + 0x13]
test cl, cl
jne 0x4a1db3
inc dword [esi + 0x2c]
mov eax, dword [esi + 0x2c]
mov dword [esp + 0x1c], eax
jmp 0x4a1df9
dec cl
movzx eax, cl
mov byte [esi + 0x13], cl
mov eax, dword [esi + eax*4 + 0x90]
mov dword [esp + 0x1c], eax
jmp 0x4a1df9
mov ecx, dword [esi + 0x1c]
mov edx, dword [esi + 0x20]
mov dword [esp + 0x1c], edx
cmp eax, ecx
jg 0x4a1de4
add eax, edx
sub ecx, dword [esp + 0x34]
mov dword [esi + 0x20], eax
mov dword [esi + 0x1c], ecx
jmp 0x4a1df5
mov eax, dword [esi + 0x2c]
lea ecx, [eax + 1]
add eax, dword [esp + 0x34]
mov dword [esp + 0x1c], ecx
mov dword [esi + 0x2c], eax
mov edx, dword [esp + 0x7c]
cmp dword [esp + 0x34], 0
mov dword [esp + 0x84], 0
jbe 0x4a1e45
mov esi, dword [esp + 0x84]
mov eax, dword [esp + 0x1c]
mov ecx, edi
add eax, esi
push eax
mov eax, dword [edx + 4]
mov edx, dword [esp + 0x3c]
movsx eax, word [eax + esi*2]
push eax
push dword [esp + 0x4c]
call fcn.0046c080
mov edx, dword [esp + 0x88]
inc esi
add esp, 0xc
cmp esi, dword [esp + 0x34]
jl 0x4a1e12
mov esi, dword [esp + 0x60]
mov eax, dword [esp + 0x14]
test eax, eax
je 0x4a1ed6
mov ecx, dword [edi + 0x6c]
mov dword [esp + 0x40], ecx
cmp dword [edi + 0x70], ecx
jg 0x4a1e7e
push dword [esp + 0x1c]
mov edx, 0x1d
mov ecx, edi
push 0
push dword [esp + 0x20]
call fcn.00451b20
mov ecx, eax
add esp, 0xc
mov dword [esp + 0x40], ecx
jmp 0x4a1eb5
mov edx, dword [esp + 0x18]
lea eax, [ecx + 1]
mov dword [edi + 0x6c], eax
lea ecx, [ecx + ecx*4]
mov eax, dword [edi + 0x68]
mov dword [eax + ecx*4 + 4], edx
mov edx, dword [esp + 0x1c]
mov dword [eax + ecx*4], 0x1d
mov dword [eax + ecx*4 + 8], 0
mov dword [eax + ecx*4 + 0xc], edx
mov dword [eax + ecx*4 + 0x10], 0
mov ecx, dword [esp + 0x40]
mov eax, dword [edi]
cmp byte [eax + 0x51], 0
jne 0x4a1ed0
mov eax, dword [edi + 0x68]
lea ecx, [ecx + ecx*4]
mov edx, dword [esp + 0x34]
mov byte [eax + ecx*4 + 1], 0xfd
mov dword [eax + ecx*4 + 0x10], edx
mov eax, dword [esp + 0x14]
test eax, eax
js 0x4a1fcb
mov ecx, dword [edi + 0x6c]
cmp dword [edi + 0x70], ecx
jg 0x4a1f01
push dword [esp + 0x4c]
mov edx, 0x66
mov ecx, edi
push dword [esp + 0x38]
push dword [esp + 0x24]
call fcn.00451b20
add esp, 0xc
jmp 0x4a1f34
mov edx, dword [esp + 0x1c]
lea eax, [ecx + 1]
mov dword [edi + 0x6c], eax
lea ecx, [ecx + ecx*4]
mov eax, dword [edi + 0x68]
mov dword [eax + ecx*4 + 4], edx
mov edx, dword [esp + 0x34]
mov dword [eax + ecx*4 + 8], edx
mov edx, dword [esp + 0x4c]
mov dword [eax + ecx*4], 0x66
mov dword [eax + ecx*4 + 0xc], edx
mov dword [eax + ecx*4 + 0x10], 0
mov edx, dword [edi + 0x6c]
cmp dword [edi + 0x70], edx
jg 0x4a1f5b
push dword [esp + 0x1c]
mov edx, 0x84
mov ecx, edi
push dword [esp + 0x50]
push dword [esp + 0x20]
call fcn.00451b20
add esp, 0xc
mov edx, eax
jmp 0x4a1f92
mov esi, dword [esp + 0x18]
lea eax, [edx + 1]
mov dword [edi + 0x6c], eax
lea ecx, [edx + edx*4]
mov eax, dword [edi + 0x68]
mov dword [eax + ecx*4 + 4], esi
mov esi, dword [esp + 0x4c]
mov dword [eax + ecx*4 + 8], esi
mov esi, dword [esp + 0x1c]
mov dword [eax + ecx*4 + 0xc], esi
mov esi, dword [esp + 0x60]
mov dword [eax + ecx*4], 0x84
mov dword [eax + ecx*4 + 0x10], 0
mov eax, dword [edi]
cmp byte [eax + 0x51], 0
jne 0x4a1fad
mov eax, dword [edi + 0x68]
lea ecx, [edx + edx*4]
mov edx, dword [esp + 0x34]
mov byte [eax + ecx*4 + 1], 0xfd
mov dword [eax + ecx*4 + 0x10], edx
cmp dword [esp + 0x14], 0
je 0x4a1fcb
mov eax, dword [edi + 0x6c]
test eax, eax
jle 0x4a1fcb
lea ecx, [eax + eax*4]
mov edx, 0x10
mov eax, dword [edi + 0x68]
mov word [eax + ecx*4 - 0x12], dx
mov eax, dword [esp + 0x34]
cmp eax, 1
jne 0x4a1ff2
mov ecx, dword [esp + 0x1c]
test ecx, ecx
je 0x4a2001
mov al, byte [esi + 0x13]
cmp al, 8
jae 0x4a2001
movzx eax, al
mov dword [esi + eax*4 + 0x90], ecx
inc byte [esi + 0x13]
jmp 0x4a2001
cmp eax, dword [esi + 0x1c]
jle 0x4a2001
mov dword [esi + 0x1c], eax
mov eax, dword [esp + 0x1c]
mov dword [esi + 0x20], eax
mov ecx, dword [edi + 0x6c]
cmp dword [edi + 0x70], ecx
jg 0x4a2024
push 0
push dword [esp + 0x28]
mov edx, 0xc
mov ecx, edi
push dword [esp + 0x34]
call fcn.00451b20
add esp, 0xc
jmp 0x4a2057
mov edx, dword [esp + 0x2c]
lea eax, [ecx + 1]
mov dword [edi + 0x6c], eax
lea ecx, [ecx + ecx*4]
mov eax, dword [edi + 0x68]
mov dword [eax + ecx*4 + 4], edx
mov edx, dword [esp + 0x24]
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 + 0x40]
test ecx, ecx
je 0x4a2082
mov edx, dword [edi + 0x6c]
jns 0x4a2067
lea ecx, [edx - 1]
mov eax, dword [edi]
cmp byte [eax + 0x51], 0
je 0x4a2076
mov eax, 0x6562ec
jmp 0x4a207f
mov eax, dword [edi + 0x68]
lea ecx, [ecx + ecx*4]
lea eax, [eax + ecx*4]
mov dword [eax + 8], edx
mov edx, dword [esp + 0x88]
mov ecx, 1
mov eax, dword [esp + 0x3c]
cmp byte [edx + 0x32], 0
cmovne eax, ecx
mov ecx, dword [edx + 0x330]
mov dword [esp + 0x3c], eax
test dword [ecx + 0x24], 0x200
je 0x4a20db
cmp dword [esp + 0x48], 0
je 0x4a20bc
mov eax, dword [esp + 0x74]
cmp dword [ecx + 0x20], eax
jne 0x4a20db
mov eax, dword [esp + 0x38]
test byte [eax + 0x24], 0x20
je 0x4a20d2
mov eax, dword [ecx + 0x20]
mov eax, dword [eax + 0x38]
and al, 3
cmp al, 2
je 0x4a20db
mov eax, dword [ecx + 0x20]
mov dword [esp + 0x74], eax
jmp 0x4a20e3
mov dword [esp + 0x74], 0
mov ecx, edx
call fcn.004aabc0
mov ecx, dword [esi + 0xd0]
test ecx, ecx
jne 0x4a20f8
xor eax, eax
jmp 0x4a211e
mov edx, dword [esi + 8]
test ecx, ecx
jns 0x4a2103
mov ecx, dword [edx + 0x6c]
dec ecx
mov eax, dword [edx]
cmp byte [eax + 0x51], 0
je 0x4a2112
mov eax, 0x6562ec
jmp 0x4a211b
mov eax, dword [edx + 0x68]
lea ecx, [ecx + ecx*4]
lea eax, [eax + ecx*4]
mov eax, dword [eax + 8]
mov dword [esi + 0xd0], eax
mov edx, dword [esp + 0x44]
mov ecx, dword [esp + 0x54]
mov eax, dword [esp + 0x48]
inc eax
mov dword [esp + 0x48], eax
cmp eax, dword [ecx + 0xc]
jl 0x4a1c80
mov ecx, dword [esi + 0xd0]
test ecx, ecx
jne 0x4a214c
xor eax, eax
jmp 0x4a2172
mov edx, dword [esi + 8]
test ecx, ecx
jns 0x4a2157
mov ecx, dword [edx + 0x6c]
dec ecx
mov eax, dword [edx]
cmp byte [eax + 0x51], 0
je 0x4a2166
mov eax, 0x6562ec
jmp 0x4a216f
mov eax, dword [edx + 0x68]
lea ecx, [ecx + ecx*4]
lea eax, [eax + ecx*4]
mov eax, dword [eax + 8]
mov dword [esi + 0xd0], eax
mov esi, dword [ebp + 0x10]
mov eax, dword [esp + 0x74]
mov dword [esi + 0x38], eax
test eax, eax
je 0x4a218d
mov eax, dword [esp + 0x70]
mov dword [esi + 8], eax
mov eax, dword [esp + 0x68]
test eax, eax
je 0x4a21a7
mov ecx, dword [esp + 0x58]
mov edx, eax
mov dword [eax + 0xc], 0
call fcn.00467ec0
mov ecx, dword [esp + 0x30]
mov edx, dword [edi + 0x6c]
test ecx, ecx
jns 0x4a21b5
lea ecx, [edx - 1]
mov eax, dword [edi]
cmp byte [eax + 0x51], 0
je 0x4a21c4
mov eax, 0x6562ec
jmp 0x4a21cd
mov eax, dword [edi + 0x68]
lea ecx, [ecx + ecx*4]
lea eax, [eax + ecx*4]
mov dword [eax + 4], edx
mov ecx, dword [edi + 0x6c]
mov edx, dword [esi + 0xc]
cmp dword [edi + 0x70], ecx
jg 0x4a21f1
push 0
push edx
push 0
mov edx, 0xb
mov ecx, edi
call fcn.00451b20
add esp, 0xc
jmp 0x4a2220
lea eax, [ecx + 1]
mov dword [edi + 0x6c], eax
lea ecx, [ecx + ecx*4]
mov eax, dword [edi + 0x68]
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 + 0x24]
not edx
mov eax, dword [ecx + 0x3c]
add eax, dword [ecx + 0x38]
jns 0x4a223e
push edx
mov edx, edi
call fcn.00452300
add esp, 4
jmp 0x4a2247
mov ecx, dword [ecx + 0x40]
mov eax, dword [edi + 0x6c]
mov dword [ecx + edx*4], eax
mov eax, dword [ebp + 8]
cmp byte [eax + 0x2e], 1
jbe 0x4a22a1
mov ecx, dword [esp + 0x64]
test ecx, ecx
je 0x4a22a1
mov eax, dword [esp + 0x58]
test eax, eax
je 0x4a2298
cmp dword [eax + 0x1e0], 0
je 0x4a2274
mov edx, ecx
mov ecx, eax
call fcn.00431090
jmp 0x4a22a1
cmp ecx, dword [eax + 0x130]
jb 0x4a2298
cmp ecx, dword [eax + 0x134]
jae 0x4a2298
mov eax, dword [eax + 0x12c]
mov dword [ecx], eax
mov eax, dword [esp + 0x58]
mov dword [eax + 0x12c], ecx
jmp 0x4a22a1
push ecx
call fcn.00431020
add esp, 4
cmp dword [esp + 0x3c], 0
jne 0x4a06ce
mov edx, dword [esp + 0x28]
mov ecx, esi
call fcn.0049f3e0
jmp 0x4a06ce
mov eax, dword [esp + 0x80]
test byte [eax + 0x28], 0x20
je 0x4a22d2
mov byte [edx + 0x2d], 0xaa
jmp 0x4a06ce
mov ecx, dword [esp + 0x48]
push dword [esp + 0x28]
mov al, byte [ecx + 0x61a554]
mov byte [edx + 0x2d], al
mov eax, dword [esp + 0x48]
mov dword [edx + 0x30], eax
movzx edx, byte [ecx + 0x61dde4]
mov ecx, edi
push eax
call fcn.00451c90
mov ecx, dword [ebp + 0x10]
add esp, 8
inc eax
mov dword [ecx + 0x34], eax
mov byte [ecx + 0x2f], 1
jmp 0x4a06ce
mov eax, dword [esp + 0x50]
jmp 0x4a06d0
mov eax, dword [esp + 0x80]
mov ecx, dword [edx]
mov dword [esp + 0x84], ecx
test byte [eax + 0x24], 8
je 0x4a2335
test byte [ecx + 4], 1
je 0x4a249f
mov eax, dword [esp + 0x70]
cmp eax, 1
jne 0x4a23b1
mov eax, dword [ebp + 0x10]
xorps xmm0, xmm0
movaps xmmword [esp + 0xa0], xmm0
movq qword [esp + 0xb0], xmm0
mov dword [esp + 0xa4], 0x46e640
mov eax, dword [eax + 4]
mov dword [esp + 0x9c], eax
mov eax, dword [esp + 0x50]
mov dword [esp + 0x98], eax
lea eax, [esp + 0x98]
mov dword [esp + 0xb8], eax
test ecx, ecx
je 0x4a2399
mov edx, ecx
lea ecx, [esp + 0xa0]
call fcn.00464310
mov edx, dword [esp + 0x24]
cmp byte [esp + 0xb4], 0
je 0x4a23b6
mov ecx, 2
mov dword [esp + 0x18], ecx
jmp 0x4a24a3
cmp eax, 3
jge 0x4a23db
movzx eax, word [edx + 0xa]
test eax, 0x1000
je 0x4a23e2
mov ecx, dword [esp + 0x18]
test ecx, ecx
jne 0x4a24a3
mov ecx, 3
mov dword [esp + 0x18], ecx
jmp 0x4a24a3
mov eax, dword [esp + 0x88]
test eax, 0x200
je 0x4a2453
mov eax, dword [ebp + 0x10]
mov eax, dword [eax + 0x24]
test eax, eax
je 0x4a2453
mov esi, dword [edi + 0x6c]
mov edx, eax
and eax, 1
shr edx, 1
lea eax, [eax*2 + 0x12]
mov dword [esp + 0x88], eax
cmp dword [edi + 0x70], esi
jg 0x4a2425
push 0
push 0
push edx
mov edx, eax
mov ecx, edi
call fcn.00451b20
add esp, 0xc
mov esi, eax
jmp 0x4a2453
lea eax, [esi + 1]
mov dword [edi + 0x6c], eax
lea ecx, [esi + esi*4]
mov eax, dword [edi + 0x68]
mov dword [eax + ecx*4 + 4], edx
lea eax, [eax + ecx*4]
mov ecx, dword [esp + 0x88]
mov byte [eax], cl
xor ecx, ecx
mov word [eax + 2], cx
mov dword [eax + 8], ecx
mov dword [eax + 0xc], ecx
mov dword [eax + 0x10], ecx
mov byte [eax + 1], cl
push 0x10
push dword [esp + 0x98]
push dword [esp + 0x8c]
push dword [esp + 0x6c]
call fcn.0046dc20
add esp, 0x10
test esi, esi
je 0x4a2496
mov edx, dword [edi + 0x6c]
jns 0x4a247b
lea esi, [edx - 1]
mov eax, dword [edi]
cmp byte [eax + 0x51], 0
je 0x4a248a
mov eax, 0x6562ec
jmp 0x4a2493
mov eax, dword [edi + 0x68]
lea ecx, [esi + esi*4]
lea eax, [eax + ecx*4]
mov dword [eax + 8], edx
mov edx, dword [esp + 0x24]
or word [edx + 0xa], 4
mov ecx, dword [esp + 0x18]
mov eax, dword [esp + 0x28]
add edx, 0x30
dec eax
mov dword [esp + 0x24], edx
mov dword [esp + 0x28], eax
test eax, eax
jg 0x4a0700
mov esi, dword [esp + 0x78]
mov dword [esp + 0x70], ecx
test ecx, ecx
jg 0x4a06e0
mov edx, dword [esi + 0x14]
mov esi, dword [esi + 0xc]
mov dword [esp + 0x40], edx
mov dword [esp + 0x2c], esi
test esi, esi
jle 0x4a267e
test byte [edx + 0xa], 6
jne 0x4a2666
movzx eax, word [edx + 0xc]
mov edi, 0xb
test al, 0x82
setne cl
bt ax, di
mov edi, dword [esp + 0x60]
setb al
test al, cl
je 0x4a2666
mov ecx, dword [esp + 0x44]
cmp dword [edx + 0x14], ecx
jne 0x4a2666
mov eax, dword [ebp + 0x10]
cmp dword [eax], 0
jne 0x4a2666
mov eax, dword [edx]
xor esi, esi
mov dword [esp + 0x84], eax
mov eax, dword [edx + 0x1c]
mov edx, dword [esp + 0x78]
mov dword [esp + 0xe0], edx
mov dword [esp + 0xe4], edx
mov dword [esp + 0xec], esi
mov word [esp + 0xf0], 0x100
mov dword [esp + 0xe8], esi
mov dword [esp + 0xf4], 0x83
mov dword [esp + 0xf8], esi
mov dword [esp + 0xfc], ecx
mov byte [esp + 0xf2], 1
cmp eax, 0xfffffffe
je 0x4a25d5
lea ecx, [esp + 0xe0]
mov word [esp + 0x128], ax
call fcn.004a4da0
mov edx, eax
test edx, edx
je 0x4a25d5
nop dword [eax]
mov ecx, dword [edx + 0x20]
mov eax, dword [edx + 0x24]
and ecx, dword [ebp + 0x14]
and eax, dword [ebp + 0x18]
or ecx, eax
jne 0x4a25c3
mov eax, dword [edx + 0x20]
or eax, dword [edx + 0x24]
jne 0x4a25be
test byte [edx + 0xc], 0x82
jne 0x4a25d7
test esi, esi
cmove esi, edx
lea ecx, [esp + 0xe0]
call fcn.004a4da0
mov edx, eax
test edx, edx
jne 0x4a25a0
mov edx, esi
test edx, edx
je 0x4a265e
test byte [edx + 0xa], 4
jne 0x4a265e
test byte [edx + 0xc], 1
je 0x4a2604
mov eax, dword [edx]
test dword [eax + 4], 0x800
je 0x4a2604
mov eax, dword [eax + 0x14]
mov eax, dword [eax]
cmp dword [eax], 1
jg 0x4a265e
mov eax, dword [edx]
push 0x10
push dword [esp + 0x98]
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 + 0x8c]
mov eax, dword [eax + 0xc]
mov dword [esp + 0xb4], eax
lea eax, [esp + 0xa8]
push eax
push edi
call fcn.0046dc20
add esp, 0x10
mov esi, dword [esp + 0x2c]
mov edx, dword [esp + 0x40]
dec esi
add edx, 0x30
mov dword [esp + 0x2c], esi
mov dword [esp + 0x40], edx
test esi, esi
jg 0x4a24e1
mov edi, dword [esp + 0x5c]
mov edx, dword [ebp + 0x10]
mov esi, dword [edx]
test esi, esi
je 0x4a2732
mov eax, dword [edi + 0x6c]
mov dword [edx + 0x1c], eax
mov ecx, dword [edi + 0x6c]
cmp dword [edi + 0x70], ecx
jg 0x4a26b2
push 0
push esi
push 1
mov edx, 0x46
mov ecx, edi
call fcn.00451b20
mov edx, dword [ebp + 0x10]
add esp, 0xc
jmp 0x4a26e1
lea eax, [ecx + 1]
mov dword [edi + 0x6c], eax
lea ecx, [ecx + ecx*4]
mov eax, dword [edi + 0x68]
mov dword [eax + ecx*4], 0x46
mov dword [eax + ecx*4 + 4], 1
mov dword [eax + ecx*4 + 8], esi
mov dword [eax + ecx*4 + 0xc], 0
mov dword [eax + ecx*4 + 0x10], 0
mov eax, dword [esp + 0x78]
xor edi, edi
mov esi, dword [eax + 0x14]
cmp dword [eax + 0xc], edi
jle 0x4a2732
nop
test byte [esi + 0xa], 6
jne 0x4a2722
mov ecx, dword [esi + 0x28]
mov eax, dword [esi + 0x2c]
and ecx, dword [edx + 0x48]
and eax, dword [edx + 0x4c]
or ecx, eax
jne 0x4a2722
push 0x10
push dword [esp + 0x98]
push dword [esi]
push dword [esp + 0x6c]
call fcn.0046dc20
add esp, 0x10
or word [esi + 0xa], 4
mov edx, dword [esp + 0x78]
inc edi
add esi, 0x30
cmp edi, dword [edx + 0xc]
mov edx, dword [ebp + 0x10]
jl 0x4a26f0
mov ecx, dword [ebp + 0x10]
pop edi
pop esi
mov eax, dword [ecx + 0x48]
mov edx, dword [ecx + 0x4c]
mov esp, ebp
pop ebp
ret