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

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
sub esp, 0xf4
mov eax, dword [0x51b08c]
xor eax, esp
mov dword [esp + 0xf0], eax
push ebx
push esi
mov esi, dword [ecx]
lea eax, [ecx + 0x148]
mov dword [esp + 0x74], eax
push edi
lea edi, [ecx + 0x2e0]
mov dword [esp + 0x50], ecx
mov eax, dword [esi]
mov dword [esp + 0x70], eax
lea eax, [edx + edx*4]
shl eax, 4
add edi, eax
mov ebx, dword [esi + 8]
mov dword [esp + 0x24], edx
mov dword [esp + 0x34], esi
mov dword [esp + 0x64], ebx
mov eax, dword [edi + 0x40]
mov dword [esp + 0x30], eax
movzx eax, byte [edi + 0x2c]
mov dword [esp + 0x60], edi
lea ecx, [eax + eax*4]
mov eax, dword [esp + 0x50]
shl ecx, 4
mov eax, dword [eax + 4]
add eax, 8
add eax, ecx
mov ecx, dword [esp + 0x50]
mov dword [esp + 0x14], eax
mov eax, dword [eax + 0x30]
mov edx, dword [ecx + 0x44]
mov dword [esp + 0x40], eax
xor eax, eax
test edx, edx
jle 0x47d9c8
add ecx, 0x48
nop dword [eax]
mov esi, dword [esp + 0x40]
cmp dword [ecx], esi
mov esi, dword [esp + 0x34]
je 0x47db58
inc eax
add ecx, 4
cmp eax, edx
jl 0x47d9b0
xorps xmm0, xmm0
movlpd qword [esp + 0x88], xmm0
mov edx, dword [esp + 0x8c]
mov ecx, dword [esp + 0x88]
not ecx
not edx
and ecx, dword [ebp + 8]
and edx, dword [ebp + 0xc]
mov dword [edi + 0x48], ecx
mov ecx, dword [esp + 0x50]
mov dword [edi + 0x4c], edx
mov eax, dword [ecx + 0x18]
mov edx, dword [ecx + 0x1c]
mov ecx, dword [esp + 0x24]
call fcn.004bdd60
mov ecx, dword [esp + 0x30]
and eax, 1
mov dword [esp + 0x38], eax
test byte [ecx + 0x24], 0x40
je 0x47da28
mov eax, dword [esp + 0x50]
mov dword [esp + 0x5c], 1
test byte [eax + 0x24], 0x20
je 0x47da30
mov dword [esp + 0x5c], 0
mov edx, dword [ebx + 0x18]
mov dword [esp + 0x4c], edx
mov ecx, dword [edx + 0x74]
mov dword [esp + 0x1c], ecx
lea eax, [ecx + 1]
mov dword [edx + 0x74], eax
lea eax, [ecx - 1]
test ecx, eax
jne 0x47da71
mov edx, dword [edx + 0x78]
lea eax, [ecx*8 + 4]
mov ecx, dword [esp + 0x4c]
push 0
push eax
mov ecx, dword [ecx]
call fcn.00418a40
mov edx, dword [esp + 0x54]
add esp, 8
mov ecx, dword [esp + 0x1c]
mov dword [edx + 0x78], eax
mov eax, dword [edx + 0x78]
test eax, eax
je 0x47da7f
mov dword [eax + ecx*4], 0xffffffff
not ecx
mov dword [edi + 0x10], ecx
mov dword [edi + 0xc], ecx
mov dword [esp + 0x1c], ecx
mov ecx, dword [ebx + 0x18]
mov dword [esp + 0x20], ecx
mov edx, dword [ecx + 0x74]
mov dword [esp + 0x84], edx
lea eax, [edx + 1]
mov dword [ecx + 0x74], eax
lea eax, [edx - 1]
test edx, eax
jne 0x47dace
lea eax, [edx*8 + 4]
mov edx, dword [ecx + 0x78]
mov ecx, dword [ecx]
push 0
push eax
call fcn.00418a40
mov ecx, dword [esp + 0x28]
add esp, 8
mov edx, dword [esp + 0x84]
mov dword [ecx + 0x78], eax
mov eax, dword [ecx + 0x78]
test eax, eax
je 0x47dadc
mov dword [eax + edx*4], 0xffffffff
cmp byte [edi + 0x2c], 0
not edx
mov eax, dword [esp + 0x14]
mov dword [esp + 0x84], edx
mov dword [edi + 0x18], edx
jbe 0x47db17
test byte [eax + 0x24], 8
je 0x47db17
mov eax, dword [esi + 0x4c]
mov edx, 0x4a
inc eax
mov ecx, ebx
push eax
mov dword [esi + 0x4c], eax
push 0
mov dword [edi], eax
call fcn.00437870
mov eax, dword [esp + 0x1c]
add esp, 8
mov ecx, dword [eax + 0x28]
mov dword [esp + 0x88], ecx
test cl, 0x10
je 0x47dc13
mov edx, dword [eax + 0x1c]
mov esi, dword [eax + 0x18]
mov eax, dword [ebx + 0x18]
mov ecx, dword [ebx + 0x20]
mov dword [esp + 0x24], edx
cmp dword [eax + 0x58], ecx
jg 0x47db72
push esi
push 0
push edx
mov edx, 0xf
mov ecx, ebx
call fcn.004376e0
mov edx, dword [esp + 0x30]
add esp, 0xc
jmp 0x47dba1
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 0x47d9e2
lea eax, [ecx + 1]
mov dword [ebx + 0x20], eax
lea ecx, [ecx + ecx*4]
mov eax, dword [ebx + 4]
mov word [eax + ecx*4], 0xf
mov byte [eax + ecx*4 + 3], 0
mov dword [eax + ecx*4 + 4], edx
mov dword [eax + ecx*4 + 8], 0
mov dword [eax + ecx*4 + 0xc], esi
mov dword [eax + ecx*4 + 0x10], 0
mov eax, dword [ebx + 0x18]
mov esi, dword [ebx + 0x20]
cmp dword [eax + 0x58], esi
jg 0x47dbd4
mov edx, dword [esp + 0x1c]
mov ecx, ebx
push 0
push edx
push dword [esp + 0x2c]
mov edx, 0x10
call fcn.004376e0
mov esi, eax
mov byte [edi + 0x2d], 0xd
add esp, 0xc
mov dword [edi + 0x34], esi
jmp 0x47f0aa
lea eax, [esi + 1]
mov dword [ebx + 0x20], eax
lea ecx, [esi + esi*4]
mov eax, dword [ebx + 4]
mov dword [eax + ecx*4 + 4], edx
mov edx, dword [esp + 0x1c]
mov word [eax + ecx*4], 0x10
mov byte [eax + ecx*4 + 3], 0
mov dword [eax + ecx*4 + 8], edx
mov dword [eax + ecx*4 + 0xc], 0
mov dword [eax + ecx*4 + 0x10], 0
mov dword [edi + 0x34], esi
mov byte [edi + 0x2d], 0xd
jmp 0x47f0aa
mov ecx, dword [esp + 0x30]
mov edx, dword [ecx + 0x24]
test edx, 0x400
je 0x47dff3
movzx edx, word [ecx + 0x28]
mov ebx, dword [esi + 0x40]
inc dword [esi + 0x6c]
mov dword [esp + 0x18], ebx
mov ebx, dword [esi + 0x3c]
lea eax, [edx + 2]
mov dword [esp + 0x14], edx
cmp eax, ebx
jg 0x47dc59
add eax, dword [esp + 0x18]
mov dword [esi + 0x40], eax
lea eax, [edx + 2]
sub ebx, eax
mov eax, ebx
mov dword [esp + 0x20], ebx
mov dword [esi + 0x3c], eax
jmp 0x47dc6b
mov eax, dword [esi + 0x4c]
lea ebx, [eax + 1]
add eax, 2
add eax, edx
mov dword [esp + 0x18], ebx
mov dword [esi + 0x4c], eax
mov eax, dword [edi + 0xc]
xor esi, esi
mov ebx, dword [esp + 0x64]
mov dword [esp + 0x24], eax
test edx, edx
jle 0x47dccf
mov ebx, dword [esp + 0x34]
mov eax, dword [ecx + 0x30]
mov edx, dword [eax + esi*4]
test edx, edx
je 0x47dcc4
mov eax, dword [esp + 0x18]
mov ecx, ebx
add eax, 2
add eax, esi
test byte [edx + 0x12], 1
push eax
je 0x47dcb3
push dword [esp + 0x3c]
push esi
push edi
call fcn.0047d1a0
mov eax, dword [edi + 0x10]
add esp, 0x10
mov dword [esp + 0x24], eax
jmp 0x47dcc0
mov edx, dword [edx]
mov edx, dword [edx + 0x10]
call fcn.00450380
add esp, 4
mov ecx, dword [esp + 0x30]
inc esi
cmp esi, dword [esp + 0x14]
jl 0x47dc80
mov ebx, dword [esp + 0x64]
mov eax, dword [ebx + 0x18]
mov esi, dword [esp + 0x30]
mov ecx, dword [ebx + 0x20]
mov edx, dword [esi + 0x18]
cmp dword [eax + 0x58], ecx
jg 0x47dcf9
push 0
push dword [esp + 0x1c]
mov ecx, ebx
push edx
mov edx, 0x4a
call fcn.004376e0
add esp, 0xc
jmp 0x47dd2c
lea eax, [ecx + 1]
mov dword [ebx + 0x20], eax
lea ecx, [ecx + ecx*4]
mov eax, dword [ebx + 4]
mov dword [eax + ecx*4 + 4], edx
mov edx, dword [esp + 0x18]
mov word [eax + ecx*4], 0x4a
mov byte [eax + ecx*4 + 3], 0
mov dword [eax + ecx*4 + 8], edx
mov dword [eax + ecx*4 + 0xc], 0
mov dword [eax + ecx*4 + 0x10], 0
mov eax, dword [ebx + 0x18]
mov edx, dword [esp + 0x18]
mov ecx, dword [ebx + 0x20]
inc edx
cmp dword [eax + 0x58], ecx
jg 0x47dd54
push 0
push edx
push dword [esp + 0x1c]
mov edx, 0x4a
mov ecx, ebx
call fcn.004376e0
add esp, 0xc
jmp 0x47dd8c
mov edx, dword [esp + 0x14]
lea eax, [ecx + 1]
mov dword [ebx + 0x20], eax
lea ecx, [ecx + ecx*4]
mov eax, dword [ebx + 4]
mov dword [eax + ecx*4 + 4], edx
mov edx, dword [esp + 0x18]
inc edx
mov word [eax + ecx*4], 0x4a
mov byte [eax + ecx*4 + 3], 0
mov dword [eax + ecx*4 + 8], edx
mov dword [eax + ecx*4 + 0xc], 0
mov dword [eax + ecx*4 + 0x10], 0
cmp byte [esi + 0x1c], 0
mov ecx, 0xfffffff5
mov eax, 0xfffffffe
cmovne eax, ecx
push eax
push dword [esi + 0x20]
lea edx, [ecx + 0x16]
mov ecx, ebx
push dword [esp + 0x20]
push dword [esp + 0x30]
push dword [esp + 0x50]
call fcn.00437b60
mov ecx, dword [esp + 0x64]
add esp, 0x14
mov eax, dword [esp + 0x40]
mov edx, 0x9f
mov byte [esi + 0x1c], 0
mov dword [edi + 0x30], eax
mov eax, 0x44
cmp byte [ecx + 0x28], 0
mov ecx, dword [esp + 0x14]
cmovne eax, edx
mov edx, dword [edi + 0x38]
mov byte [edi + 0x2d], al
sub ecx, 1
mov eax, dword [ebx + 0x20]
mov dword [edi + 0x34], eax
mov dword [esp + 0x10], ecx
js 0x47dfe5
lea eax, [edx + edx*2]
shl eax, 2
mov dword [esp + 0x24], eax
mov eax, dword [esi + 0x30]
mov edx, dword [eax + ecx*4]
mov dword [esp + 0x20], edx
cmp ecx, 0x10
jge 0x47de2b
mov ax, word [esi + 0x1e]
shr ax, cl
test al, 1
je 0x47de27
mov ecx, edi
call fcn.0047d0b0
jmp 0x47dfd4
mov ecx, dword [esp + 0x10]
test byte [edx + 0x12], 1
je 0x47dfd8
mov eax, dword [esp + 0x70]
cmp byte [eax + 0x45], 0
jne 0x47dee3
mov ecx, dword [esp + 0x24]
mov eax, dword [edi + 0x3c]
sub ecx, 0xc
mov dword [esp + 0x24], ecx
mov ecx, dword [eax + ecx + 4]
test ecx, ecx
jns 0x47de5d
mov ecx, dword [ebx + 0x20]
dec ecx
mov eax, dword [ebx]
cmp byte [eax + 0x45], 0
je 0x47de6c
mov eax, 0x520b44
jmp 0x47de75
mov eax, dword [ebx + 4]
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 + 0x4c], eax
mov eax, dword [ebx + 0x18]
mov dword [esp + 0x58], ecx
mov ecx, dword [ebx + 0x20]
cmp dword [eax + 0x58], ecx
jg 0x47deaa
push esi
push edx
push dword [esp + 0x60]
mov edx, dword [esp + 0x58]
mov ecx, ebx
call fcn.004376e0
add esp, 0xc
jmp 0x47dee3
lea eax, [ecx + 1]
mov dword [ebx + 0x20], eax
lea ecx, [ecx + ecx*4]
mov eax, dword [ebx + 4]
mov ebx, dword [esp + 0x4c]
mov byte [eax + ecx*4], bl
mov ebx, dword [esp + 0x58]
mov dword [eax + ecx*4 + 4], ebx
mov ebx, dword [esp + 0x64]
mov byte [eax + ecx*4 + 3], 0
mov dword [eax + ecx*4 + 8], edx
mov dword [eax + ecx*4 + 0xc], esi
mov dword [eax + ecx*4 + 0x10], 0
mov byte [eax + ecx*4 + 1], 0
mov eax, dword [esp + 0x34]
push 0
push 0x30
mov ecx, dword [eax]
call fcn.00418890
mov esi, eax
add esp, 8
test esi, esi
je 0x47dfd0
push 0x30
push 0
push esi
call fcn.004a35f0
add esp, 0xc
mov byte [esi], 0x25
or eax, 0xffffffff
mov dword [esi + 0x18], 1
mov ecx, esi
mov word [esi + 0x22], ax
call fcn.0044b8b0
mov ecx, dword [esp + 0x34]
mov eax, dword [ecx]
mov eax, dword [eax + 0x68]
cmp dword [esi + 0x18], eax
jle 0x47df41
push eax
push str.Expression_tree_is_too_large__maximum_depth__d_
push ecx
call fcn.0041b2c0
add esp, 0xc
mov eax, dword [esp + 0x20]
mov ecx, dword [esp + 0x70]
push 0
push 0x31
mov eax, dword [eax]
mov eax, dword [eax + 0xc]
mov dword [esi + 0xc], eax
call fcn.00418890
mov edi, eax
add esp, 8
test edi, edi
je 0x47df8a
push 0x30
push 0
push edi
call fcn.004a35f0
add esp, 0xc
mov byte [edi], 0x9d
or eax, 0xffffffff
mov word [edi + 0x22], ax
lea eax, [edi + 0x30]
mov dword [edi + 8], eax
mov byte [eax], 0
mov dword [edi + 0x18], 1
mov dword [esi + 0x10], edi
test edi, edi
je 0x47dfba
mov ecx, dword [esp + 0x18]
mov edx, esi
mov eax, dword [esp + 0x10]
add ecx, 2
add eax, ecx
mov ecx, dword [esp + 0x34]
mov dword [edi + 0x1c], eax
mov edi, dword [esp + 0x60]
push 0
push dword [edi + 0x18]
call fcn.00450bf0
add esp, 8
jmp 0x47dfbe
mov edi, dword [esp + 0x60]
mov ecx, dword [esp + 0x70]
mov edx, esi
mov dword [esi + 0xc], 0
call fcn.0044c120
mov esi, dword [esp + 0x30]
mov ecx, dword [esp + 0x10]
sub ecx, 1
mov dword [esp + 0x10], ecx
jns 0x47de01
mov ecx, dword [esp + 0x34]
call fcn.0044ec20
jmp 0x47f0aa
test dl, 5
setne cl
bt edx, 8
setb al
test al, cl
je 0x47e09e
mov ecx, dword [esp + 0x30]
mov eax, dword [ecx + 0x30]
mov ecx, esi
mov edx, dword [eax]
inc dword [esi + 0x4c]
mov eax, dword [esi + 0x4c]
push eax
push dword [esp + 0x3c]
mov dword [esp + 0x28], eax
push 0
push edi
call fcn.0047d1a0
mov edx, dword [esp + 0x30]
add esp, 0x10
mov dword [esp + 0x14], eax
cmp eax, edx
je 0x47e044
mov ecx, esi
call fcn.004516e0
mov eax, dword [esp + 0x14]
mov esi, dword [edi + 0x10]
mov edx, 0x11
push esi
push eax
mov ecx, ebx
call fcn.00437870
push dword [esp + 0x1c]
mov edx, 0x20
mov ecx, ebx
push esi
push dword [esp + 0x50]
call fcn.00437720
mov edx, dword [esp + 0x28]
add esp, 0x14
mov ecx, dword [esp + 0x34]
push 1
call fcn.0044ebb0
mov edx, dword [esp + 0x44]
add esp, 4
mov ecx, dword [esp + 0x34]
push dword [esp + 0x14]
push 0xffffffffffffffff
call fcn.0044ea60
add esp, 8
mov byte [edi + 0x2d], 0x9f
jmp 0x47f0aa
mov eax, edx
and eax, 0x102
cmp eax, 0x102
jne 0x47e289
mov ecx, dword [esp + 0x30]
xor esi, esi
mov dword [esp + 0x2c], 0x9f
mov dword [esp + 0x4c], 0
mov dword [esp + 0x24], 0
mov dword [esp + 0x28], esi
mov dword [esp + 0x10], esi
test dl, 0x20
je 0x47e0ec
mov eax, dword [ecx + 0x30]
mov dword [esp + 0x24], 1
mov eax, dword [eax]
mov dword [esp + 0x10], eax
test dl, 0x10
je 0x47e0ff
mov eax, dword [ecx + 0x30]
mov esi, dword [esp + 0x24]
mov esi, dword [eax + esi*4]
mov dword [esp + 0x28], esi
mov eax, dword [esp + 0x38]
test eax, eax
je 0x47e11d
mov eax, dword [esp + 0x10]
mov ecx, esi
mov esi, eax
mov dword [esp + 0x10], ecx
mov eax, dword [esp + 0x38]
mov dword [esp + 0x28], esi
jmp 0x47e121
mov ecx, dword [esp + 0x10]
test ecx, ecx
je 0x47e193
mov esi, dword [ecx]
lea eax, [esp + 0x20]
mov ecx, dword [esp + 0x34]
push eax
mov dword [esp + 0x18], 0x1917181a
mov edx, dword [esi + 0x10]
call fcn.00450230
mov edx, dword [esp + 0x20]
add esp, 4
mov edi, eax
mov ecx, ebx
movzx eax, byte [esi]
push edi
push edx
push dword [esp + 0x48]
movzx edx, byte [esp + eax - 6]
call fcn.00437720
mov ecx, dword [esp + 0x40]
add esp, 0xc
mov edx, edi
push 1
call fcn.0044ebb0
mov ecx, dword [esp + 0x38]
add esp, 4
mov edx, dword [esp + 0x20]
call fcn.004516e0
mov edi, dword [esp + 0x60]
mov ecx, edi
mov edx, dword [esp + 0x10]
call fcn.0047d0b0
mov esi, dword [esp + 0x28]
jmp 0x47e1b5
mov edx, dword [esp + 0x1c]
test eax, eax
push edx
push dword [esp + 0x44]
mov ecx, 0x21
mov edx, 0x37
cmovne edx, ecx
mov ecx, ebx
call fcn.00437870
add esp, 8
test esi, esi
je 0x47e216
mov eax, dword [esp + 0x34]
mov esi, dword [esi]
inc dword [eax + 0x4c]
mov ecx, dword [eax + 0x4c]
mov edx, dword [esi + 0x10]
mov dword [esp + 0x4c], ecx
push ecx
mov ecx, eax
call fcn.00450380
mov al, byte [esi]
add esp, 4
cmp al, 0x28
je 0x47e1f5
cmp al, 0x26
je 0x47e1f5
mov ecx, dword [esp + 0x38]
xor eax, eax
test ecx, ecx
setne al
lea eax, [eax*2 + 0x26]
jmp 0x47e207
mov ecx, dword [esp + 0x38]
xor eax, eax
test ecx, ecx
sete al
lea eax, [eax*2 + 0x27]
mov edx, dword [esp + 0x28]
mov ecx, edi
mov dword [esp + 0x2c], eax
call fcn.0047d0b0
cmp dword [esp + 0x38], 0
mov ecx, dword [ebx + 0x20]
sete al
mov dword [edi + 0x34], ecx
add al, 6
cmp dword [esp + 0x2c], 0x9f
mov byte [edi + 0x2d], al
mov eax, dword [esp + 0x40]
mov dword [edi + 0x30], eax
je 0x47f0aa
mov edi, dword [esp + 0x34]
mov edx, 0x79
mov ecx, ebx
inc dword [edi + 0x4c]
mov esi, dword [edi + 0x4c]
push esi
push eax
call fcn.00437870
mov edx, dword [esp + 0x48]
mov ecx, edi
push esi
push 0xffffffffffffffff
call fcn.0044ea60
mov edx, dword [esp + 0x3c]
mov ecx, ebx
push esi
push dword [esp + 0x30]
push dword [esp + 0x64]
call fcn.00437720
add esp, 0x1c
mov dl, 0x53
mov ecx, ebx
call fcn.00438150
jmp 0x47f0aa
test edx, 0x200
je 0x47e8c2
mov eax, dword [esp + 0x30]
mov esi, dword [edi + 8]
mov dword [esp + 0x54], esi
mov esi, dword [esp + 0x50]
movzx ecx, word [eax + 0x18]
mov dword [esp + 0x1c], ecx
mov ecx, dword [eax + 0x1c]
test byte [esi + 0x24], 1
mov esi, dword [esp + 0x34]
mov dword [esp + 0x28], 0
mov dword [esp + 0x10], 0
mov dword [esp + 0x2c], 0
mov byte [esp + 0x3f], 0
mov byte [esp + 0x44], 0
mov byte [esp + 0x6b], 0
mov dword [esp + 0x14], ecx
je 0x47e309
mov ebx, dword [esp + 0x50]
cmp byte [ebx + 0x26], 0
jle 0x47e309
mov edi, dword [esp + 0x1c]
cmp word [ecx + 0x32], di
mov edi, dword [esp + 0x60]
jbe 0x47e309
mov byte [esp + 0x44], 1
mov dword [esp + 0x2c], 1
mov ecx, dword [esp + 0x1c]
mov ebx, dword [esp + 0x64]
movzx ecx, cx
mov dword [esp + 0x18], ecx
mov dword [esp + 0x24], ecx
test dl, 0x20
je 0x47e33e
mov eax, dword [eax + 0x30]
mov dword [esp + 0x2c], 1
mov eax, dword [eax + ecx*4]
mov dword [esp + 0x28], eax
lea eax, [ecx + 1]
mov dword [esp + 0x24], eax
mov eax, dword [esp + 0x30]
mov dword [esp + 0x4c], 0x100
test dl, 0x10
je 0x47e3ec
mov edx, dword [esp + 0x24]
mov eax, dword [eax + 0x30]
mov dword [esp + 0x2c], 1
mov eax, dword [eax + edx*4]
mov edx, dword [esp + 0x4c]
mov dword [esp + 0x10], eax
test word [eax + 0x14], dx
je 0x47e3b1
mov eax, dword [esi + 0x4c]
mov edx, 0x4a
inc eax
mov ecx, ebx
push eax
mov dword [esi + 0x4c], eax
push 1
mov dword [edi + 0x24], eax
call fcn.00437870
mov eax, dword [ebx + 0x20]
xor ecx, ecx
shl dword [edi + 0x24], 1
add esp, 8
mov edx, dword [esp + 0x18]
mov dword [edi + 0x28], eax
mov eax, dword [esp + 0x14]
mov eax, dword [eax + 0x1c]
cmp byte [edx + eax], 1
sete cl
xor ecx, dword [esp + 0x38]
or dword [edi + 0x24], ecx
mov ecx, edx
cmp dword [esp + 0x28], 0
jne 0x47e3ec
mov edx, dword [esp + 0x14]
mov eax, dword [edx + 4]
movsx ecx, word [eax + ecx*2]
test ecx, ecx
js 0x47e3ec
mov eax, dword [edx + 0xc]
add ecx, ecx
mov edx, dword [esp + 0x44]
movzx edx, dl
mov dword [esp + 0x20], 1
mov eax, dword [eax + 4]
cmp byte [eax + ecx*8 + 0xc], 0
cmove edx, dword [esp + 0x20]
mov dword [esp + 0x44], edx
mov eax, dword [esp + 0x14]
mov edx, dword [esp + 0x1c]
movzx ecx, word [eax + 0x32]
mov dword [esp + 0x20], ecx
cmp dx, cx
jae 0x47e41a
mov eax, dword [eax + 0x1c]
xor ecx, ecx
mov edx, dword [esp + 0x18]
cmp byte [edx + eax], cl
sete cl
cmp dword [esp + 0x38], ecx
je 0x47e42b
mov edx, dword [esp + 0x1c]
mov ecx, dword [esp + 0x38]
test ecx, ecx
je 0x47e44c
cmp word [esp + 0x20], dx
jne 0x47e44c
jmp 0x47e42f
mov ecx, dword [esp + 0x38]
mov eax, dword [esp + 0x10]
mov edx, dword [esp + 0x28]
mov dword [esp + 0x28], eax
mov al, byte [esp + 0x44]
mov dword [esp + 0x10], edx
mov byte [esp + 0x6b], al
mov byte [esp + 0x44], 0
lea eax, [esp + 0x74]
mov edx, edi
push eax
push dword [esp + 0x30]
push ecx
mov ecx, esi
call fcn.0047d360
mov ecx, dword [esp + 0x24]
add esp, 0xc
mov dword [esp + 0x2c], eax
mov eax, dword [esp + 0x74]
test eax, eax
je 0x47e479
mov al, byte [ecx + eax]
mov byte [esp + 0x3f], al
mov eax, dword [edi + 0x10]
mov dword [esp + 0x48], eax
mov eax, dword [esp + 0x28]
test eax, eax
je 0x47e496
test byte [eax + 0x12], 0x28
mov dword [esp + 0x58], 0
je 0x47e49e
mov dword [esp + 0x58], 1
mov edx, dword [esp + 0x10]
test edx, edx
je 0x47e4b4
test byte [edx + 0x12], 0x28
mov dword [esp + 0x24], 0
je 0x47e4bc
mov dword [esp + 0x24], 1
test eax, eax
jne 0x47e62b
cmp word [esp + 0x1c], ax
ja 0x47e62b
mov dword [esp + 0x6c], eax
mov dword [esp + 0x1c], ecx
cmp byte [esp + 0x44], 0
je 0x47e50a
mov eax, dword [esp + 0x2c]
mov edx, 0x4d
add eax, ecx
mov ecx, ebx
push eax
push 0
call fcn.00437870
add esp, 8
mov dword [esp + 0x58], 0
mov dword [esp + 0x6c], 1
inc dword [esp + 0x1c]
mov ecx, dword [esp + 0x44]
push dword [esp + 0x74]
mov edx, dword [esp + 0x30]
movzx eax, cl
mov ecx, dword [esp + 0x20]
sub ecx, eax
push ecx
mov ecx, esi
call fcn.0047d130
mov ecx, dword [esp + 0x38]
add esp, 8
movzx eax, word [ecx + 0x2a]
test ax, ax
je 0x47e53d
cmp dword [esp + 0x1c], eax
je 0x47e56e
mov ecx, dword [esp + 0x58]
push dword [esp + 0x1c]
mov eax, dword [esp + 0x70]
push dword [esp + 0x30]
push dword [esp + 0x50]
lea eax, [ecx + eax*2]
mov ecx, dword [esp + 0x44]
push dword [esp + 0x60]
movzx edx, byte [ecx + eax*2 + 0x4fa3b4]
mov ecx, ebx
call fcn.00437ce0
add esp, 0x10
mov eax, dword [esp + 0x10]
test eax, eax
je 0x47e6ed
mov eax, dword [eax]
mov ecx, esi
push 1
mov eax, dword [eax + 0x10]
mov dword [esp + 0x48], eax
mov eax, dword [esp + 0x1c]
add eax, dword [esp + 0x30]
mov edx, eax
mov dword [esp + 0x5c], eax
call fcn.0044ebb0
mov edx, dword [esp + 0x48]
add esp, 4
mov ecx, esi
push dword [esp + 0x58]
call fcn.00450380
mov eax, dword [esp + 0x14]
add esp, 4
mov ecx, dword [esp + 0x4c]
test word [eax + 0x14], cx
je 0x47e5c6
mov edx, edi
mov ecx, ebx
call fcn.0047d750
mov ecx, dword [esp + 0x44]
call fcn.0044d400
test eax, eax
je 0x47e5ea
push dword [esp + 0x48]
mov edx, 0x22
mov ecx, ebx
push dword [esp + 0x5c]
call fcn.00437870
add esp, 8
mov dl, byte [esp + 0x3f]
mov ecx, dword [esp + 0x44]
call fcn.0044b5e0
cmp al, 0x41
je 0x47e716
mov dl, byte [esp + 0x3f]
mov ecx, dword [esp + 0x44]
call fcn.0044d4b0
test eax, eax
jne 0x47e716
mov edx, dword [esp + 0x58]
lea eax, [esp + 0x3f]
push eax
push 1
mov ecx, esi
call fcn.0047d130
jmp 0x47e713
mov dword [esp + 0x6c], 1
mov dword [esp + 0x1c], ecx
test eax, eax
je 0x47e4d7
mov eax, dword [eax]
add ecx, dword [esp + 0x2c]
mov dword [esp + 0x20], ecx
push ecx
mov eax, dword [eax + 0x10]
mov ecx, esi
mov edx, eax
mov dword [esp + 0x84], eax
call fcn.00450380
mov eax, dword [esp + 0x2c]
add esp, 4
mov ecx, dword [esp + 0x4c]
test word [eax + 0x14], cx
je 0x47e677
mov edx, edi
mov ecx, ebx
call fcn.0047d750
mov ecx, dword [esp + 0x80]
call fcn.0044d400
test eax, eax
je 0x47e69e
push dword [esp + 0x48]
mov edx, 0x22
mov ecx, ebx
push dword [esp + 0x24]
call fcn.00437870
add esp, 8
mov eax, dword [esp + 0x74]
test eax, eax
je 0x47e506
add eax, dword [esp + 0x18]
mov ecx, dword [esp + 0x80]
mov dword [esp + 0x7c], eax
mov dl, byte [eax]
call fcn.0044b5e0
cmp al, 0x41
mov eax, dword [esp + 0x7c]
jne 0x47e6cb
mov byte [eax], 0x41
mov dl, byte [eax]
mov ecx, dword [esp + 0x80]
call fcn.0044d4b0
test eax, eax
je 0x47e506
mov eax, dword [esp + 0x7c]
mov byte [eax], 0x41
jmp 0x47e506
cmp byte [esp + 0x6b], 0
je 0x47e71a
mov eax, dword [esp + 0x18]
mov edx, 0x4d
add eax, dword [esp + 0x2c]
mov ecx, ebx
push eax
push 0
call fcn.00437870
mov dword [esp + 0x2c], 0
add esp, 8
inc dword [esp + 0x18]
mov edx, dword [esp + 0x74]
mov ecx, dword [esp + 0x70]
call fcn.00418590
mov eax, dword [ebx + 0x20]
mov dword [edi + 0x34], eax
mov eax, dword [esp + 0x18]
test eax, eax
je 0x47e75c
mov ecx, dword [esp + 0x24]
push eax
push dword [esp + 0x30]
mov eax, dword [esp + 0x40]
push dword [esp + 0x50]
push dword [esp + 0x60]
movzx edx, byte [ecx + eax*2 + str._98:p__]
mov ecx, ebx
call fcn.00437ce0
add esp, 0x10
mov edx, dword [esp + 0x28]
mov ecx, edi
call fcn.0047d0b0
mov edx, dword [esp + 0x10]
mov ecx, edi
call fcn.0047d0b0
cmp dword [esp + 0x5c], 0
jne 0x47e884
mov eax, dword [esp + 0x14]
mov ecx, dword [eax + 0xc]
test byte [ecx + 0x2a], 0x20
jne 0x47e7ee
mov ecx, dword [esp + 0x50]
cmp word [ecx + 0x24], 0
jge 0x47e7d7
inc dword [esi + 0x4c]
mov edx, 0x7f
mov esi, dword [esi + 0x4c]
mov ecx, ebx
push esi
push dword [esp + 0x58]
call fcn.00437870
mov edx, dword [esp + 0x48]
mov ecx, dword [esp + 0x3c]
push esi
push 0xffffffffffffffff
call fcn.0044ea60
push esi
push 0
push dword [esp + 0x58]
mov edx, 0x20
mov ecx, ebx
call fcn.00437720
add esp, 0x1c
jmp 0x47e884
push dword [esp + 0x54]
mov edx, eax
push dword [esp + 0x44]
call fcn.0047d7a0
add esp, 8
jmp 0x47e884
mov edx, dword [esp + 0x54]
cmp dword [esp + 0x40], edx
je 0x47e888
call fcn.00456280
mov ecx, esi
mov dword [esp + 0x24], eax
movzx edx, word [eax + 0x32]
call fcn.00451720
mov ecx, eax
xor edx, edx
mov eax, dword [esp + 0x24]
xor esi, esi
mov dword [esp + 0x5c], ecx
cmp dx, word [eax + 0x32]
jae 0x47e864
mov edi, eax
lea eax, [esi + ecx]
mov ecx, dword [esp + 0x14]
push eax
mov eax, dword [edi + 4]
mov dx, word [eax + esi*2]
call fcn.004562a0
cwde
mov edx, 0x5e
push eax
push dword [esp + 0x5c]
mov ecx, ebx
call fcn.00437720
movzx eax, word [edi + 0x32]
inc esi
mov ecx, dword [esp + 0x68]
add esp, 0xc
cmp esi, eax
jl 0x47e826
mov edi, dword [esp + 0x60]
mov eax, dword [esp + 0x24]
movzx eax, word [eax + 0x32]
mov edx, 0x1e
push eax
push ecx
push dword [esp + 0x8c]
mov ecx, ebx
push dword [esp + 0x4c]
call fcn.00437ce0
add esp, 0x10
mov edx, dword [esp + 0x54]
mov ecx, dword [esp + 0x30]
test dword [ecx + 0x24], 0x1000
je 0x47e89b
mov byte [edi + 0x2d], 0x9f
jmp 0x47e8a8
cmp dword [esp + 0x38], 0
sete al
add al, 6
mov byte [edi + 0x2d], al
mov dword [edi + 0x30], edx
mov al, byte [ecx + 0x26]
and al, 1
mov byte [edi + 0x2e], al
test byte [ecx + 0x24], 0xf
jne 0x47f0aa
jmp 0x47f0a6
test edx, 0x2000
je 0x47f068
mov eax, dword [esi + 0x48]
mov ecx, ebx
inc dword [esi + 0x4c]
mov dword [esp + 0x94], eax
inc eax
mov dword [esi + 0x48], eax
mov eax, dword [esi + 0x4c]
mov dword [esp + 0x7c], 0
mov dword [esp + 0x1c], eax
mov dword [esp + 0x28], 0
mov dword [esp + 0x74], 0
call fcn.00437e30
mov ecx, dword [esp + 0x14]
xor edx, edx
mov dword [esp + 0x10], edx
mov dword [esp + 0x4c], eax
mov dword [esp + 0x58], 0
mov edx, dword [ecx + 0x10]
mov ecx, dword [esp + 0x30]
mov dword [esp + 0x44], edx
mov eax, dword [ecx + 0x30]
mov ecx, dword [esp + 0x50]
mov eax, dword [eax]
mov dword [esp + 0x20], eax
mov eax, dword [eax + 0xc]
mov dword [esp + 0x30], eax
mov eax, dword [esp + 0x1c]
mov byte [edi + 0x2d], 0x46
mov dword [edi + 0x30], eax
mov al, byte [ecx + 0x2b]
cmp al, 1
jbe 0x47ea6d
movzx eax, al
sub eax, dword [esp + 0x24]
dec eax
push 0
mov dword [esp + 0x60], eax
lea ecx, [eax + eax*4]
shl ecx, 4
add ecx, 0x58
push ecx
mov ecx, dword [esp + 0x78]
call fcn.00418860
mov ecx, eax
add esp, 8
mov dword [esp + 0x80], ecx
test ecx, ecx
jne 0x47e99c
mov eax, dword [ebp + 8]
mov edx, dword [ebp + 0xc]
pop edi
pop esi
pop ebx
mov ecx, dword [esp + 0xf0]
xor ecx, esp
call fcn.00499a52
mov esp, ebp
pop ebp
ret
mov edx, dword [esp + 0x5c]
mov al, dl
inc al
movzx eax, al
mov dword [ecx + 4], eax
mov dword [ecx], eax
mov eax, dword [esp + 0x14]
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
movups xmm0, xmmword [eax + 0x40]
mov eax, dword [esp + 0x50]
movups xmmword [ecx + 0x48], xmm0
mov eax, dword [eax + 4]
mov dword [esp + 0x6c], eax
cmp edx, 1
jl 0x47ea3b
mov ebx, dword [esp + 0x6c]
lea eax, [edi + 0x7c]
add ecx, 0x58
mov edi, eax
movzx eax, byte [edi]
lea edi, [edi + 0x50]
lea ecx, [ecx + 0x50]
lea eax, [eax + eax*4]
add eax, eax
movups xmm0, xmmword [ebx + eax*8 + 8]
movups xmmword [ecx - 0x50], xmm0
movups xmm0, xmmword [ebx + eax*8 + 0x18]
movups xmmword [ecx - 0x40], xmm0
movups xmm0, xmmword [ebx + eax*8 + 0x28]
movups xmmword [ecx - 0x30], xmm0
movups xmm0, xmmword [ebx + eax*8 + 0x38]
movups xmmword [ecx - 0x20], xmm0
movups xmm0, xmmword [ebx + eax*8 + 0x48]
movups xmmword [ecx - 0x10], xmm0
sub edx, 1
jne 0x47e9f3
mov ebx, dword [esp + 0x64]
mov edi, dword [esp + 0x60]
mov edx, dword [esp + 0x44]
mov eax, dword [esp + 0x50]
test byte [eax + 0x24], 8
jne 0x47eabf
test byte [edx + 0x2a], 0x20
jne 0x47ea79
inc dword [esi + 0x4c]
mov edx, 0x4d
mov eax, dword [esi + 0x4c]
mov ecx, ebx
push eax
push 0
mov dword [esp + 0x30], eax
call fcn.00437870
add esp, 8
jmp 0x47eab5
mov eax, dword [ecx + 4]
mov dword [esp + 0x80], eax
jmp 0x47ea3f
mov ecx, edx
call fcn.00456280
mov esi, eax
mov eax, dword [esp + 0x34]
mov edx, dword [eax + 0x48]
mov dword [esp + 0x28], edx
lea ecx, [edx + 1]
mov dword [eax + 0x48], ecx
movzx ecx, word [esi + 0x32]
push ecx
push edx
mov edx, 0x69
mov ecx, ebx
call fcn.00437870
add esp, 8
mov edx, esi
mov esi, dword [esp + 0x34]
mov ecx, esi
call fcn.00438550
inc dword [esi + 0x4c]
mov eax, dword [esi + 0x4c]
mov dword [esp + 0x74], eax
push dword [esp + 0x1c]
mov edx, 0x4a
mov ecx, ebx
push 0
call fcn.00437870
mov dword [esp + 0x90], eax
add esp, 8
mov eax, dword [esp + 0x78]
mov ecx, dword [eax + 0xc]
cmp ecx, 1
jle 0x47ec0d
xor edx, edx
mov dword [esp + 0x5c], edx
test ecx, ecx
jle 0x47ec0d
mov ebx, dword [esp + 0x70]
xor ecx, ecx
mov dword [esp + 0x6c], ecx
xor esi, esi
mov eax, dword [eax + 0x14]
add eax, ecx
mov edi, dword [eax]
mov dword [esp + 0x48], edi
cmp eax, dword [esp + 0x20]
je 0x47eb53
test byte [edi + 4], 1
jne 0x47eb53
test byte [eax + 0x14], 6
jne 0x47eb53
mov edi, 0x1fff
test word [eax + 0x12], di
je 0x47eb53
mov edx, dword [esp + 0x48]
mov ecx, ebx
push 0
push 0
call fcn.0044c2c0
push eax
mov edx, esi
mov ecx, ebx
call fcn.0044bd10
mov ecx, dword [esp + 0x78]
add esp, 0xc
mov edx, dword [esp + 0x5c]
mov esi, eax
mov eax, dword [esp + 0x78]
inc edx
add ecx, 0x30
mov dword [esp + 0x5c], edx
mov dword [esp + 0x6c], ecx
cmp edx, dword [eax + 0xc]
jl 0x47eb05
mov edi, dword [esp + 0x60]
mov ecx, esi
mov dword [esp + 0x10], esi
mov esi, dword [esp + 0x34]
test ecx, ecx
je 0x47ec0f
mov ecx, dword [esi]
push 0
push 0x30
call fcn.00418890
add esp, 8
mov dword [esp + 0x48], eax
test eax, eax
je 0x47ebf6
push 0x30
push 0
push eax
call fcn.004a35f0
mov ecx, dword [esp + 0x54]
or eax, 0xffffffff
mov edx, dword [esp + 0x1c]
add esp, 0xc
mov word [ecx + 0x22], ax
mov byte [ecx], 0x1c
mov dword [ecx + 0x18], 1
mov dword [ecx + 0x10], edx
mov eax, dword [edx + 4]
and eax, 0x200100
or dword [ecx + 4], eax
call fcn.0044b8b0
mov eax, dword [esi]
mov ecx, dword [eax + 0x68]
mov eax, dword [esp + 0x48]
cmp dword [eax + 0x18], ecx
jle 0x47ec05
push ecx
push str.Expression_tree_is_too_large__maximum_depth__d_
push esi
call fcn.0041b2c0
mov eax, dword [esp + 0x54]
add esp, 0xc
mov ecx, eax
mov dword [esp + 0x10], ecx
jmp 0x47ec0f
mov edx, dword [esp + 0x10]
mov ecx, dword [esi]
call fcn.0044c120
mov eax, dword [esp + 0x48]
mov ecx, eax
mov dword [esp + 0x10], ecx
jmp 0x47ec0f
xor ecx, ecx
mov eax, dword [esp + 0x50]
mov edx, 0x80f0
mov ebx, dword [esp + 0x30]
mov ax, word [eax + 0x24]
and ax, dx
mov edx, 0xf0
or ax, dx
movzx edx, ax
xor eax, eax
cmp dword [ebx + 0xc], eax
mov ebx, dword [esp + 0x64]
mov dword [esp + 0x18], edx
mov dword [esp + 0x38], eax
jle 0x47ef70
mov edi, dword [esp + 0x30]
lea eax, [eax + eax*2]
shl eax, 4
add eax, dword [edi + 0x14]
mov edi, dword [esp + 0x40]
cmp dword [eax + 8], edi
mov edi, dword [esp + 0x60]
je 0x47ec72
mov ebx, 0x400
test word [eax + 0x12], bx
mov ebx, dword [esp + 0x64]
je 0x47ef56
mov eax, dword [eax]
mov dword [esp + 0x54], 0
test ecx, ecx
je 0x47ec8b
test byte [eax + 4], 1
jne 0x47ec8b
mov dword [ecx + 0xc], eax
mov eax, ecx
push dword [esp + 0x94]
mov ecx, esi
push edx
mov edx, dword [esp + 0x88]
push 0
push 0
push eax
call fcn.00486030
add esp, 0x14
mov dword [esp + 0x90], eax
test eax, eax
je 0x47ef52
movzx ecx, byte [edi + 0x2c]
mov edx, dword [esp + 0x80]
push 0
push ecx
push dword [esp + 0x2c]
lea ecx, [eax + 0x2e0]
push ecx
mov ecx, esi
call fcn.0047ce20
mov eax, dword [esp + 0x60]
add esp, 0x10
test byte [eax + 0x24], 8
jne 0x47ee4b
mov eax, dword [esp + 0x30]
mov ecx, dword [esp + 0x38]
mov eax, dword [eax + 0xc]
dec eax
cmp ecx, eax
mov eax, 0xffffffff
cmove ecx, eax
mov eax, dword [esp + 0x44]
mov dword [esp + 0x48], ecx
test byte [eax + 0x2a], 0x20
jne 0x47ed45
push 0
push dword [esp + 0x78]
mov edx, eax
mov ecx, esi
push dword [esp + 0x48]
push 0xffffffffffffffff
call fcn.0044eeb0
push dword [esp + 0x58]
mov edx, 0x3d
mov ecx, ebx
push eax
push 0
push dword [esp + 0x44]
call fcn.00437ce0
add esp, 0x20
mov dword [esp + 0x54], eax
jmp 0x47ee4b
mov ecx, eax
call fcn.00456280
mov ecx, esi
mov dword [esp + 0x6c], eax
movzx edx, word [eax + 0x32]
mov dword [esp + 0x14], edx
call fcn.00451720
mov dword [esp + 0x2c], eax
mov dword [esp + 0x5c], 0
test edx, edx
je 0x47edac
mov edi, dword [esp + 0x5c]
mov ebx, edx
mov edx, dword [esp + 0x44]
lea ecx, [edi + eax]
mov eax, dword [esp + 0x6c]
push ecx
push dword [esp + 0x44]
mov ecx, esi
mov eax, dword [eax + 4]
movsx eax, word [eax + edi*2]
push eax
call fcn.0044ef60
mov eax, dword [esp + 0x38]
inc edi
add esp, 0xc
cmp edi, ebx
jl 0x47ed75
mov ebx, dword [esp + 0x64]
mov edi, dword [esp + 0x60]
mov edx, dword [esp + 0x14]
cmp dword [esp + 0x48], 0
je 0x47edd5
push edx
push eax
push 0
push dword [esp + 0x34]
mov edx, 0x1f
mov ecx, ebx
call fcn.00437ce0
add esp, 0x10
mov dword [esp + 0x54], eax
cmp dword [esp + 0x48], 0
jl 0x47ee26
push dword [esp + 0x74]
mov edx, 0x60
mov ecx, ebx
push dword [esp + 0x18]
push dword [esp + 0x34]
call fcn.00437720
add esp, 0xc
mov edx, 0x7c
mov ecx, ebx
push 0
push dword [esp + 0x78]
push dword [esp + 0x30]
call fcn.00437720
add esp, 0xc
cmp dword [esp + 0x48], 0
je 0x47ee26
mov eax, dword [ebx]
cmp byte [eax + 0x45], 0
jne 0x47ee26
mov eax, dword [ebx + 0x20]
lea ecx, [eax + eax*4]
mov eax, dword [ebx + 4]
mov byte [eax + ecx*4 - 0x11], 0x10
push dword [esp + 0x14]
mov edx, dword [esp + 0x30]
mov ecx, esi
call fcn.0044ebb0
mov eax, dword [esp + 0x18]
add esp, 4
cmp eax, dword [esi + 0x3c]
jle 0x47ee4b
mov dword [esi + 0x3c], eax
mov eax, dword [esp + 0x2c]
mov dword [esi + 0x40], eax
mov eax, dword [ebx + 0x18]
mov ecx, dword [ebx + 0x20]
cmp dword [eax + 0x58], ecx
jg 0x47ee71
push 0
push dword [esp + 0x50]
mov edx, 0xe
mov ecx, ebx
push dword [esp + 0x24]
call fcn.004376e0
add esp, 0xc
jmp 0x47eea8
mov edx, dword [esp + 0x1c]
lea eax, [ecx + 1]
mov dword [ebx + 0x20], eax
lea ecx, [ecx + ecx*4]
mov eax, dword [ebx + 4]
mov dword [eax + ecx*4 + 4], edx
mov edx, dword [esp + 0x4c]
mov word [eax + ecx*4], 0xe
mov byte [eax + ecx*4 + 3], 0
mov dword [eax + ecx*4 + 8], edx
mov dword [eax + ecx*4 + 0xc], 0
mov dword [eax + ecx*4 + 0x10], 0
cmp dword [esp + 0x54], 0
je 0x47eee2
mov ecx, dword [ebx + 0x20]
mov eax, dword [ebx + 0x18]
dec ecx
mov dword [eax + 0x60], ecx
mov ecx, dword [esp + 0x54]
mov edx, dword [ebx + 0x20]
test ecx, ecx
jns 0x47eec7
lea ecx, [edx - 1]
mov eax, dword [ebx]
cmp byte [eax + 0x45], 0
je 0x47eed6
mov eax, 0x520b44
jmp 0x47eedf
mov eax, dword [ebx + 4]
lea ecx, [ecx + ecx*4]
lea eax, [eax + ecx*4]
mov dword [eax + 8], edx
mov edx, dword [esp + 0x90]
mov ecx, 1
mov eax, dword [esp + 0x58]
cmp byte [edx + 0x29], 0
cmovne eax, ecx
mov ecx, dword [edx + 0x320]
mov dword [esp + 0x58], eax
test dword [ecx + 0x24], 0x200
je 0x47ef43
cmp dword [esp + 0x38], 0
je 0x47ef1c
mov eax, dword [esp + 0x7c]
cmp dword [ecx + 0x1c], eax
jne 0x47ef43
mov eax, dword [esp + 0x44]
test byte [eax + 0x2a], 0x20
je 0x47ef32
mov eax, dword [ecx + 0x1c]
mov eax, dword [eax + 0x38]
and al, 3
cmp al, 2
je 0x47ef43
mov eax, dword [ecx + 0x1c]
or dword [esp + 0x18], 0x1000
mov dword [esp + 0x7c], eax
jmp 0x47ef4b
mov dword [esp + 0x7c], 0
mov ecx, edx
call fcn.00486ac0
mov edx, dword [esp + 0x18]
mov ecx, dword [esp + 0x30]
mov eax, dword [esp + 0x38]
inc eax
mov dword [esp + 0x38], eax
cmp eax, dword [ecx + 0xc]
mov ecx, dword [esp + 0x10]
jl 0x47ec45
mov eax, dword [esp + 0x7c]
mov dword [edi + 0x38], eax
test eax, eax
je 0x47ef85
mov eax, dword [esp + 0x94]
mov dword [edi + 8], eax
mov edx, dword [esp + 0x10]
mov esi, dword [esp + 0x70]
test edx, edx
je 0x47ef9f
mov ecx, esi
mov dword [edx + 0xc], 0
call fcn.0044c120
mov ecx, dword [esp + 0x88]
mov edx, dword [ebx + 0x20]
test ecx, ecx
jns 0x47efb0
lea ecx, [edx - 1]
mov eax, dword [ebx]
cmp byte [eax + 0x45], 0
je 0x47efbf
mov eax, 0x520b44
jmp 0x47efc8
mov eax, dword [ebx + 4]
lea ecx, [ecx + ecx*4]
lea eax, [eax + ecx*4]
mov dword [eax + 4], edx
mov ecx, ebx
mov edx, dword [edi + 0xc]
call fcn.004378e0
mov edx, dword [ebx + 0x18]
mov ecx, dword [edx + 0x78]
test ecx, ecx
je 0x47eff1
mov eax, dword [esp + 0x4c]
lea eax, [eax*4 + 4]
sub ecx, eax
mov eax, dword [ebx + 0x20]
mov dword [ecx], eax
mov eax, dword [ebx + 0x20]
dec eax
mov dword [edx + 0x60], eax
mov eax, dword [esp + 0x50]
cmp byte [eax + 0x2b], 1
jbe 0x47f054
mov ecx, dword [esp + 0x80]
test ecx, ecx
je 0x47f054
test esi, esi
je 0x47f04b
cmp dword [esi + 0x1c8], 0
je 0x47f025
mov edx, ecx
mov ecx, esi
call fcn.00418550
jmp 0x47f054
cmp ecx, dword [esi + 0x120]
jb 0x47f04b
cmp ecx, dword [esi + 0x124]
jae 0x47f04b
mov eax, dword [esi + 0x11c]
mov dword [ecx], eax
dec dword [esi + 0x108]
mov dword [esi + 0x11c], ecx
jmp 0x47f054
push ecx
call fcn.004184e0
add esp, 4
cmp dword [esp + 0x58], 0
jne 0x47f0aa
mov edx, dword [esp + 0x20]
mov ecx, edi
call fcn.0047d0b0
jmp 0x47f0aa
test byte [esp + 0x88], 0x20
je 0x47f078
mov byte [edi + 0x2d], 0x9f
jmp 0x47f0aa
mov ecx, dword [esp + 0x38]
push dword [esp + 0x1c]
mov al, byte [ecx + 0x4f9140]
movzx edx, byte [ecx + 0x4fb160]
mov ecx, ebx
mov byte [edi + 0x2d], al
mov eax, dword [esp + 0x44]
push eax
mov dword [edi + 0x30], eax
call fcn.00437870
add esp, 8
inc eax
mov dword [edi + 0x34], eax
mov byte [edi + 0x2f], 1
mov ecx, dword [esp + 0x78]
mov eax, dword [ecx + 0xc]
mov edi, dword [ecx + 0x14]
mov dword [esp + 0x20], eax
test eax, eax
jle 0x47f1ef
movzx eax, word [edi + 0x14]
xor esi, esi
test al, 6
jne 0x47f1d7
mov edx, dword [esp + 0x60]
mov ecx, dword [edi + 0x28]
mov eax, dword [edi + 0x2c]
and ecx, dword [edx + 0x48]
and eax, dword [edx + 0x4c]
or ecx, eax
je 0x47f0ef
mov eax, dword [esp + 0x50]
mov byte [eax + 0x29], 1
jmp 0x47f1d7
mov eax, dword [edi]
mov dword [esp + 0x90], eax
cmp dword [edx], esi
je 0x47f106
test byte [eax + 4], 1
je 0x47f1d7
movzx eax, word [edi + 0x14]
test eax, 0x200
je 0x47f183
mov edx, dword [edx + 0x24]
mov ecx, edx
mov eax, dword [ebx + 0x18]
and edx, 1
mov esi, dword [ebx + 0x20]
add edx, 0x15
shr ecx, 1
mov dword [esp + 0x88], ecx
cmp dword [eax + 0x58], esi
jg 0x47f147
push 0
push 0
push ecx
mov ecx, ebx
call fcn.004376e0
add esp, 0xc
mov esi, eax
jmp 0x47f183
lea eax, [esi + 1]
mov dword [ebx + 0x20], eax
lea ecx, [esi + esi*4]
mov eax, dword [ebx + 4]
mov byte [eax + ecx*4], dl
mov edx, dword [esp + 0x88]
mov byte [eax + ecx*4 + 3], 0
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 byte [eax + ecx*4 + 1], 0
mov edx, dword [esp + 0x90]
mov ecx, dword [esp + 0x34]
push 0x10
push dword [esp + 0x88]
call fcn.00450bf0
add esp, 8
test esi, esi
je 0x47f1d2
mov ecx, dword [ebx + 0x20]
mov eax, dword [ebx + 0x18]
dec ecx
mov dword [eax + 0x60], ecx
mov edx, dword [ebx + 0x20]
test esi, esi
jns 0x47f1b7
lea esi, [edx - 1]
mov eax, dword [ebx]
cmp byte [eax + 0x45], 0
je 0x47f1c6
mov eax, 0x520b44
jmp 0x47f1cf
mov eax, dword [ebx + 4]
lea ecx, [esi + esi*4]
lea eax, [eax + ecx*4]
mov dword [eax + 8], edx
or word [edi + 0x14], 4
mov eax, dword [esp + 0x20]
add edi, 0x30
dec eax
mov dword [esp + 0x20], eax
test eax, eax
jg 0x47f0c0
mov ecx, dword [esp + 0x78]
mov esi, dword [ecx + 0xc]
mov edx, dword [ecx + 0x14]
mov dword [esp + 0x28], edx
mov dword [esp + 0x10], esi
test esi, esi
jle 0x47f41f
mov ebx, dword [esp + 0x60]
nop dword [eax]
test byte [edx + 0x14], 6
jne 0x47f407
movzx eax, word [edx + 0x12]
mov edi, 0xb
test al, 0x82
setne cl
bt ax, di
setb al
test al, cl
je 0x47f407
mov ecx, dword [esp + 0x40]
cmp dword [edx + 8], ecx
jne 0x47f407
cmp dword [ebx], 0
jne 0x47f407
mov eax, dword [edx]
xor edi, edi
mov dword [esp + 0x88], eax
mov eax, dword [esp + 0x78]
mov dword [esp + 0x98], eax
mov dword [esp + 0x9c], eax
mov ax, word [edx + 0xc]
mov dword [esp + 0xb4], ecx
lea ecx, [esp + 0x98]
mov dword [esp + 0xa4], edi
mov word [esp + 0xa8], 0x100
mov dword [esp + 0xa0], edi
mov dword [esp + 0xac], 0x83
mov dword [esp + 0xb0], edi
mov word [esp + 0xe0], ax
mov byte [esp + 0xaa], 1
call fcn.00481450
mov esi, eax
test esi, esi
je 0x47f2f5
mov edx, dword [esi + 0x20]
mov ecx, edx
mov eax, dword [esi + 0x24]
and ecx, dword [ebp + 8]
and eax, dword [ebp + 0xc]
or ecx, eax
jne 0x47f2e3
or edx, dword [esi + 0x24]
jne 0x47f2de
test byte [esi + 0x12], 0x82
jne 0x47f2f7
test edi, edi
cmove edi, esi
lea ecx, [esp + 0x98]
call fcn.00481450
mov esi, eax
test esi, esi
jne 0x47f2c1
mov esi, edi
test esi, esi
je 0x47f3ff
test byte [esi + 0x14], 4
jne 0x47f3ff
mov eax, dword [esp + 0x70]
test eax, eax
je 0x47f323
push 0
push 0x30
mov ecx, eax
call fcn.00418890
add esp, 8
mov edi, eax
jmp 0x47f372
cmp dword [0x51bfe0], 0
je 0x47f35f
mov eax, dword [0x51f900]
test eax, eax
je 0x47f33f
push eax
call dword [0x51c038]
add esp, 4
lea edx, [esp + 0x20]
mov ecx, 0x30
call fcn.004180c0
mov eax, dword [0x51f900]
test eax, eax
je 0x47f36e
push eax
call dword [0x51c040]
jmp 0x47f36b
push 0x30
call dword [0x51c008]
mov dword [esp + 0x24], eax
add esp, 4
mov edi, dword [esp + 0x20]
test edi, edi
je 0x47f3ff
mov eax, dword [esi]
mov edx, edi
mov ecx, dword [esp + 0x34]
push 0x10
push dword [esp + 0x88]
movups xmm0, xmmword [eax]
movups xmmword [edi], xmm0
movups xmm0, xmmword [eax + 0x10]
movups xmmword [edi + 0x10], xmm0
movups xmm0, xmmword [eax + 0x20]
mov eax, dword [esp + 0x90]
movups xmmword [edi + 0x20], xmm0
mov eax, dword [eax + 0xc]
mov dword [edi + 0xc], eax
call fcn.00450bf0
mov ecx, dword [esp + 0x78]
add esp, 8
test ecx, ecx
je 0x47f3f6
cmp dword [ecx + 0x1c8], 0
je 0x47f3d0
mov edx, edi
call fcn.00418550
jmp 0x47f3ff
cmp edi, dword [ecx + 0x120]
jb 0x47f3f6
cmp edi, dword [ecx + 0x124]
jae 0x47f3f6
mov eax, dword [ecx + 0x11c]
mov dword [edi], eax
dec dword [ecx + 0x108]
mov dword [ecx + 0x11c], edi
jmp 0x47f3ff
push edi
call fcn.004184e0
add esp, 4
mov esi, dword [esp + 0x10]
mov edx, dword [esp + 0x28]
dec esi
add edx, 0x30
mov dword [esp + 0x10], esi
mov dword [esp + 0x28], edx
test esi, esi
jg 0x47f210
mov ebx, dword [esp + 0x64]
mov edi, dword [esp + 0x60]
mov esi, dword [edi]
test esi, esi
je 0x47f4ed
mov eax, dword [ebx + 0x20]
mov dword [edi + 0x1c], eax
mov eax, dword [ebx + 0x18]
mov ecx, dword [ebx + 0x20]
cmp dword [eax + 0x58], ecx
jg 0x47f454
push 0
push esi
push 1
mov edx, 0x4a
mov ecx, ebx
call fcn.004376e0
add esp, 0xc
jmp 0x47f487
lea eax, [ecx + 1]
mov dword [ebx + 0x20], eax
lea ecx, [ecx + ecx*4]
mov eax, dword [ebx + 4]
mov word [eax + ecx*4], 0x4a
mov byte [eax + ecx*4 + 3], 0
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 ebx, dword [esp + 0x34]
mov ecx, ebx
call fcn.0044eff0
mov edx, dword [esp + 0x78]
mov eax, dword [esp + 0x78]
mov esi, dword [edx + 0x14]
xor edx, edx
mov dword [esp + 0x20], edx
cmp dword [eax + 0xc], edx
jle 0x47f4ed
test byte [esi + 0x14], 6
jne 0x47f4e0
mov ecx, dword [esi + 0x28]
mov eax, dword [esi + 0x2c]
and ecx, dword [edi + 0x48]
and eax, dword [edi + 0x4c]
or ecx, eax
jne 0x47f4dc
mov edx, dword [esi]
mov ecx, ebx
push 0x10
push dword [esp + 0x88]
call fcn.00450bf0
mov edx, dword [esp + 0x28]
add esp, 8
or word [esi + 0x14], 4
mov eax, dword [esp + 0x78]
inc edx
add esi, 0x30
mov dword [esp + 0x20], edx
cmp edx, dword [eax + 0xc]
jl 0x47f4a8
mov eax, dword [edi + 0x48]
mov edx, dword [edi + 0x4c]
mov ecx, dword [esp + 0xfc]
pop edi
pop esi
pop ebx
xor ecx, esp
call fcn.00499a52
mov esp, ebp
pop ebp
ret