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

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff0
sub esp, 0x138
mov eax, dword [0x65e374]
xor eax, esp
mov dword [esp + 0x134], eax
push esi
lea eax, [ecx + 0x50]
mov dword [esp + 0x5c], edx
mov dword [esp + 0x80], eax
push edi
mov edi, dword [ecx]
mov dword [esp + 0x54], ecx
mov dword [esp + 0x50], edi
mov eax, dword [edi]
mov dword [esp + 0x70], eax
lea eax, [edx + edx*4]
shl eax, 4
lea edx, [ecx + 0x2f0]
add edx, eax
mov esi, dword [edi + 8]
mov dword [esp + 0x30], esi
mov dword [esp + 0x10], edx
mov eax, dword [edx + 0x40]
mov dword [esp + 0x44], eax
movzx eax, byte [edx + 0x2c]
lea ecx, [eax + eax*4]
mov eax, dword [esp + 0x54]
shl ecx, 4
mov eax, dword [eax + 4]
add eax, 8
add eax, ecx
mov ecx, dword [esp + 0x54]
mov dword [esp + 0x14], eax
mov eax, dword [eax + 0x30]
mov dword [esp + 0x40], eax
xor eax, eax
cmp dword [ecx + 0x1e8], eax
jle 0x51cdd4
add ecx, 0x1ec
nop
mov esi, dword [esp + 0x40]
cmp dword [ecx], esi
mov esi, dword [esp + 0x30]
je 0x51cfac
mov esi, dword [esp + 0x54]
inc eax
add ecx, 4
cmp eax, dword [esi + 0x1e8]
mov esi, dword [esp + 0x30]
jl 0x51cdb0
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 + 8]
and eax, dword [ebp + 0xc]
mov dword [edx + 0x48], ecx
mov ecx, dword [esp + 0x54]
mov dword [edx + 0x4c], eax
mov eax, dword [ecx + 0x40]
mov edx, dword [ecx + 0x44]
mov ecx, dword [esp + 0x60]
call fcn.005f62b0
and eax, 1
mov dword [esp + 0x4c], eax
mov eax, dword [esp + 0x44]
test byte [eax + 0x24], 0x40
je 0x51ce34
mov eax, dword [esp + 0x54]
mov dword [esp + 0x3c], 1
test byte [eax + 0x28], 0x20
je 0x51ce3c
mov dword [esp + 0x3c], 0
mov edx, dword [esi + 0xc]
mov dword [esp + 0x18], edx
mov ecx, dword [edx + 0x48]
mov dword [esp + 0x2c], ecx
lea eax, [ecx + 1]
mov dword [edx + 0x48], eax
lea eax, [ecx - 1]
test ecx, eax
jne 0x51ce7d
mov edx, dword [edx + 0x4c]
lea eax, [ecx*8 + 4]
mov ecx, dword [esp + 0x18]
push 0
push eax
mov ecx, dword [ecx]
call fcn.004b81f0
mov edx, dword [esp + 0x20]
add esp, 8
mov ecx, dword [esp + 0x2c]
mov dword [edx + 0x4c], eax
mov eax, dword [edx + 0x4c]
test eax, eax
je 0x51ce8b
mov dword [eax + ecx*4], 0xffffffff
mov edx, dword [esp + 0x10]
not ecx
mov edi, dword [esp + 0x50]
mov dword [esp + 0x2c], ecx
mov dword [edx + 0x10], ecx
mov dword [edx + 0xc], ecx
mov ecx, dword [esi + 0xc]
mov dword [esp + 0x24], ecx
mov eax, dword [ecx + 0x48]
mov dword [esp + 0x7c], eax
inc eax
mov dword [ecx + 0x48], eax
mov eax, dword [esp + 0x7c]
dec eax
test dword [esp + 0x7c], eax
jne 0x51cee2
mov eax, dword [esp + 0x7c]
mov edx, dword [ecx + 0x4c]
mov ecx, dword [ecx]
push 0
lea eax, [eax*8 + 4]
push eax
call fcn.004b81f0
mov ecx, dword [esp + 0x2c]
add esp, 8
mov edx, dword [esp + 0x10]
mov dword [ecx + 0x4c], eax
mov eax, dword [ecx + 0x4c]
test eax, eax
je 0x51cef4
mov ecx, dword [esp + 0x7c]
mov dword [eax + ecx*4], 0xffffffff
cmp byte [edx + 0x2c], 0
mov eax, dword [esp + 0x7c]
not eax
mov dword [esp + 0x7c], eax
mov dword [edx + 0x18], eax
jbe 0x51cf30
mov eax, dword [esp + 0x14]
test byte [eax + 0x24], 8
je 0x51cf30
mov eax, dword [edi + 0x2c]
mov ecx, esi
inc eax
mov dword [edi + 0x2c], eax
push eax
mov dword [edx], eax
mov edx, 0x4d
push 0
call fcn.004d5ed0
mov edx, dword [esp + 0x18]
add esp, 8
mov ecx, dword [esp + 0x60]
mov eax, ecx
test ecx, ecx
jle 0x51cf4d
mov ecx, edx
nop dword [eax]
cmp dword [ecx], 0
jne 0x51cf4d
dec eax
sub ecx, 0x50
test eax, eax
jg 0x51cf40
mov ecx, dword [esp + 0x54]
lea eax, [eax + eax*4]
add eax, eax
mov eax, dword [ecx + eax*8 + 0x2fc]
mov dword [esp + 0x24], eax
mov eax, dword [esp + 0x14]
mov ecx, dword [eax + 0x28]
mov dword [esp + 0x88], ecx
test cl, 0x10
je 0x51d081
mov edx, dword [eax + 0x1c]
mov eax, dword [eax + 0x18]
mov ecx, dword [esi + 0x88]
mov dword [esp + 0x18], eax
mov eax, dword [esi + 0xc]
mov dword [esp + 0x14], edx
cmp dword [eax + 0x30], ecx
jg 0x51cfcc
push dword [esp + 0x18]
mov ecx, esi
push 0
push edx
mov edx, 0xf
call fcn.004d5d40
add esp, 0xc
jmp 0x51cffe
xor ecx, ecx
xor edi, edi
bts ecx, eax
cmp eax, 0x20
cmovae edi, ecx
xor ecx, edi
mov dword [esp + 0x24], edi
cmp eax, 0x40
mov eax, edi
cmovae eax, ecx
jmp 0x51cdee
lea eax, [ecx + 1]
mov dword [esi + 0x88], eax
lea ecx, [ecx + ecx*4]
mov eax, dword [esi + 0x58]
mov dword [eax + ecx*4 + 4], edx
mov edx, dword [esp + 0x18]
mov dword [eax + ecx*4], 0xf
mov dword [eax + ecx*4 + 8], 0
mov dword [eax + ecx*4 + 0xc], edx
mov dword [eax + ecx*4 + 0x10], 0
mov eax, dword [esi + 0xc]
mov edx, dword [esi + 0x88]
cmp dword [eax + 0x30], edx
jg 0x51d037
push 0
push dword [esp + 0x30]
mov edx, 0x10
mov ecx, esi
push dword [esp + 0x1c]
call fcn.004d5d40
mov ecx, dword [esp + 0x1c]
mov edx, eax
add esp, 0xc
mov dword [ecx + 0x34], edx
mov byte [ecx + 0x2d], 0xd
jmp 0x51d540
mov edi, dword [esp + 0x14]
lea eax, [edx + 1]
mov dword [esi + 0x88], eax
lea ecx, [edx + edx*4]
mov eax, dword [esi + 0x58]
mov dword [eax + ecx*4 + 4], edi
mov edi, dword [esp + 0x2c]
mov dword [eax + ecx*4 + 8], edi
mov edi, dword [esp + 0x50]
mov dword [eax + ecx*4], 0x10
mov dword [eax + ecx*4 + 0xc], 0
mov dword [eax + ecx*4 + 0x10], 0
mov ecx, dword [esp + 0x10]
mov dword [ecx + 0x34], edx
mov byte [ecx + 0x2d], 0xd
jmp 0x51d540
mov ecx, dword [esp + 0x44]
mov eax, dword [ecx + 0x24]
test eax, 0x400
je 0x51d5aa
movzx eax, word [ecx + 0x28]
inc dword [edi + 0x40]
mov dword [esp + 0x20], eax
lea ecx, [eax + 2]
cmp ecx, 1
jne 0x51d0ce
mov al, byte [edi + 0x13]
test al, al
jne 0x51d0b9
inc dword [edi + 0x2c]
mov eax, dword [edi + 0x2c]
mov dword [esp + 0x28], eax
jmp 0x51d0f7
dec al
mov byte [edi + 0x13], al
movzx eax, al
mov eax, dword [edi + eax*4 + 0x160]
mov dword [esp + 0x28], eax
jmp 0x51d0f7
mov eax, dword [edi + 0x20]
mov dword [esp + 0x28], eax
cmp ecx, dword [edi + 0x1c]
jg 0x51d0e4
add eax, ecx
sub dword [edi + 0x1c], ecx
mov dword [edi + 0x20], eax
jmp 0x51d0f7
mov eax, dword [edi + 0x2c]
lea esi, [eax + 1]
add eax, ecx
mov dword [esp + 0x28], esi
mov esi, dword [esp + 0x30]
mov dword [edi + 0x2c], eax
cmp dword [esp + 0x20], 0
mov eax, dword [edx + 0xc]
mov dword [esp + 0x14], eax
jbe 0x51d16d
mov ecx, dword [esp + 0x28]
add ecx, 2
xor esi, esi
mov dword [esp + 0x18], ecx
mov eax, dword [esp + 0x44]
mov eax, dword [eax + 0x30]
mov eax, dword [eax + esi*4]
test eax, eax
je 0x51d162
add ecx, esi
test byte [eax + 0xc], 1
je 0x51d148
push ecx
push dword [esp + 0x50]
mov ecx, edi
push esi
push edx
mov edx, eax
call fcn.0051c040
mov edx, dword [esp + 0x20]
add esp, 0x10
mov ecx, dword [edx + 0x10]
mov dword [esp + 0x14], ecx
jmp 0x51d15e
mov edx, dword [eax]
push 1
push ecx
mov ecx, edi
mov edx, dword [edx + 0x10]
call fcn.0051cc70
mov edx, dword [esp + 0x18]
add esp, 8
mov ecx, dword [esp + 0x18]
inc esi
cmp esi, dword [esp + 0x20]
jl 0x51d112
mov esi, dword [esp + 0x30]
mov eax, dword [esp + 0x44]
mov ecx, dword [esi + 0x88]
mov edx, dword [eax + 0x18]
mov eax, dword [esi + 0xc]
cmp dword [eax + 0x30], ecx
jg 0x51d19a
push 0
push dword [esp + 0x2c]
mov ecx, esi
push edx
mov edx, 0x4d
call fcn.004d5d40
add esp, 0xc
jmp 0x51d1cc
lea eax, [ecx + 1]
mov dword [esi + 0x88], eax
lea ecx, [ecx + ecx*4]
mov eax, dword [esi + 0x58]
mov dword [eax + ecx*4 + 4], edx
mov edx, dword [esp + 0x28]
mov dword [eax + ecx*4], 0x4d
mov dword [eax + ecx*4 + 8], edx
mov dword [eax + ecx*4 + 0xc], 0
mov dword [eax + ecx*4 + 0x10], 0
mov eax, dword [esi + 0xc]
mov edx, dword [esp + 0x28]
mov ecx, dword [esi + 0x88]
inc edx
mov dword [esp + 0x24], edx
cmp dword [eax + 0x30], ecx
jg 0x51d1fb
push 0
push edx
push dword [esp + 0x28]
mov edx, 0x4d
mov ecx, esi
call fcn.004d5d40
add esp, 0xc
jmp 0x51d231
mov edx, dword [esp + 0x20]
lea eax, [ecx + 1]
mov dword [esi + 0x88], eax
lea ecx, [ecx + ecx*4]
mov eax, dword [esi + 0x58]
mov dword [eax + ecx*4 + 4], edx
mov edx, dword [esp + 0x24]
mov dword [eax + ecx*4], 0x4d
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 + 0x44]
xor eax, eax
mov edx, dword [esi + 0x88]
cmp byte [ecx + 0x1c], al
setne al
add eax, 0xfffffffe
mov dword [esp + 0x24], eax
mov eax, dword [ecx + 0x20]
mov dword [esp + 0x3c], eax
mov eax, dword [esi + 0xc]
cmp dword [eax + 0x30], edx
jg 0x51d278
push dword [esp + 0x28]
mov edx, 0xb
mov ecx, esi
push dword [esp + 0x18]
push dword [esp + 0x48]
call fcn.004d5d40
add esp, 0xc
mov edx, eax
jmp 0x51d2b2
mov edi, dword [esp + 0x40]
lea eax, [edx + 1]
mov dword [esi + 0x88], eax
lea ecx, [edx + edx*4]
mov eax, dword [esi + 0x58]
mov dword [eax + ecx*4 + 4], edi
mov edi, dword [esp + 0x14]
mov dword [eax + ecx*4 + 8], edi
mov edi, dword [esp + 0x28]
mov dword [eax + ecx*4 + 0xc], edi
mov edi, dword [esp + 0x50]
mov dword [eax + ecx*4], 0xb
mov dword [eax + ecx*4 + 0x10], 0
push dword [esp + 0x24]
mov ecx, esi
push dword [esp + 0x40]
call fcn.004d6a80
mov eax, dword [esp + 0x4c]
add esp, 8
mov edx, dword [esp + 0x10]
mov ecx, dword [esp + 0x54]
mov byte [eax + 0x1c], 0
mov eax, dword [esp + 0x40]
mov dword [edx + 0x30], eax
mov eax, 0x47
cmp byte [ecx + 0x2d], 0
mov ecx, 0xa2
cmovne eax, ecx
mov ecx, dword [esp + 0x20]
mov byte [edx + 0x2d], al
sub ecx, 1
mov eax, dword [esi + 0x88]
mov dword [edx + 0x34], eax
mov dword [esp + 0x2c], ecx
js 0x51d535
mov eax, dword [edx + 0x38]
lea eax, [eax + eax*2]
shl eax, 2
mov dword [esp + 0x18], eax
mov eax, dword [esp + 0x44]
mov eax, dword [eax + 0x30]
mov eax, dword [eax + ecx*4]
mov dword [esp + 0x14], eax
cmp ecx, 0x10
jge 0x51d352
mov eax, dword [esp + 0x44]
mov ax, word [eax + 0x1e]
shr ax, cl
test al, 1
je 0x51d34a
mov edx, dword [esp + 0x14]
mov ecx, dword [esp + 0x10]
call fcn.0051be80
jmp 0x51d520
mov ecx, dword [esp + 0x2c]
mov eax, dword [esp + 0x14]
test byte [eax + 0xc], 1
je 0x51d528
mov eax, dword [esp + 0x70]
cmp byte [eax + 0x45], 0
jne 0x51d41d
mov ecx, dword [esp + 0x18]
mov eax, dword [edx + 0x3c]
sub ecx, 0xc
mov dword [esp + 0x18], ecx
mov ecx, dword [eax + ecx + 4]
test ecx, ecx
jns 0x51d387
mov ecx, dword [esi + 0x88]
dec ecx
mov eax, dword [esi]
cmp byte [eax + 0x45], 0
je 0x51d396
mov eax, 0x665728
jmp 0x51d39f
mov eax, dword [esi + 0x58]
lea ecx, [ecx + ecx*4]
lea eax, [eax + ecx*4]
mov ecx, dword [eax + 8]
mov edx, dword [eax + 0xc]
mov dword [esp + 0x5c], ecx
mov ecx, dword [eax + 4]
mov al, byte [eax]
mov byte [esp + 0x1f], al
mov eax, dword [esi + 0xc]
mov dword [esp + 0x60], ecx
mov ecx, dword [esi + 0x88]
cmp dword [eax + 0x30], ecx
jg 0x51d3e0
mov ecx, dword [esp + 0x5c]
push edx
movzx edx, byte [esp + 0x23]
push ecx
mov ecx, dword [esp + 0x68]
push ecx
mov ecx, esi
call fcn.004d5d40
add esp, 0xc
jmp 0x51d41d
lea eax, [ecx + 1]
mov dword [esi + 0x88], eax
lea ecx, [ecx + ecx*4]
mov eax, dword [esi + 0x58]
mov dword [eax + ecx*4 + 0xc], edx
mov dword [eax + ecx*4 + 0x10], 0
mov byte [eax + ecx*4 + 1], 0
lea eax, [eax + ecx*4]
mov cl, byte [esp + 0x1f]
mov byte [eax], cl
xor ecx, ecx
mov word [eax + 2], cx
mov ecx, dword [esp + 0x60]
mov dword [eax + 4], ecx
mov ecx, dword [esp + 0x5c]
mov dword [eax + 8], ecx
mov ecx, dword [edi]
push 0
push 0x30
call fcn.004b8080
add esp, 8
mov dword [esp + 0x20], eax
test eax, eax
je 0x51d44e
push 0x30
push 0
push eax
call fcn.005d05b0
mov eax, dword [esp + 0x2c]
add esp, 0xc
or ecx, 0xffffffff
mov byte [eax], 0x25
mov word [eax + 0x22], cx
mov ecx, dword [edi]
mov edx, eax
push 0
push 0
call fcn.004ea950
mov ecx, dword [esp + 0x28]
add esp, 8
test ecx, ecx
je 0x51d520
mov eax, dword [edi]
mov eax, dword [eax + 0x6c]
cmp dword [ecx + 0x18], eax
jle 0x51d487
push eax
push str.Expression_tree_is_too_large__maximum_depth__d_
push edi
call fcn.004bab30
mov ecx, dword [esp + 0x2c]
add esp, 0xc
mov eax, dword [esp + 0x14]
push 0
push 0x31
mov eax, dword [eax]
mov eax, dword [eax + 0xc]
mov dword [ecx + 0xc], eax
mov ecx, dword [esp + 0x78]
call fcn.004b8080
mov edx, eax
add esp, 8
mov dword [esp + 0x24], edx
test edx, edx
je 0x51d4d8
push 0x30
push 0
push edx
call fcn.005d05b0
mov edx, dword [esp + 0x30]
add esp, 0xc
or eax, 0xffffffff
mov word [edx + 0x22], ax
lea eax, [edx + 0x30]
mov byte [edx], 0x9d
mov dword [edx + 8], eax
mov byte [eax], 0
mov dword [edx + 0x18], 1
mov ecx, dword [esp + 0x20]
mov dword [ecx + 0x10], edx
test edx, edx
je 0x51d50e
mov esi, dword [esp + 0x28]
mov eax, dword [esp + 0x2c]
add esi, 2
add eax, esi
mov dword [edx + 0x1c], eax
mov eax, dword [esp + 0x10]
push 0
push dword [eax + 0x18]
push ecx
push edi
call fcn.004f0a30
mov esi, dword [esp + 0x40]
add esp, 0x10
mov ecx, dword [esp + 0x20]
mov dword [ecx + 0xc], 0
mov edx, ecx
mov ecx, dword [esp + 0x70]
call fcn.004eaed0
mov ecx, dword [esp + 0x2c]
mov edx, dword [esp + 0x10]
sub ecx, 1
mov dword [esp + 0x2c], ecx
jns 0x51d316
mov ecx, edi
call fcn.004eec70
mov ecx, dword [esp + 0x10]
mov eax, dword [esp + 0x84]
mov edx, dword [eax + 0x14]
mov eax, dword [eax + 0xc]
mov dword [esp + 0x3c], edx
mov dword [esp + 0x34], eax
test eax, eax
jle 0x51ecc8
nop dword [eax]
xor eax, eax
mov dword [esp + 0x18], eax
movzx eax, word [edx + 0xa]
mov dword [esp + 0x88], eax
test al, 6
jne 0x51eb58
mov eax, dword [esp + 0x10]
mov edi, dword [esp + 0x10]
mov ecx, dword [edx + 0x28]
and ecx, dword [eax + 0x48]
mov eax, dword [edx + 0x2c]
and eax, dword [edi + 0x4c]
mov edi, dword [esp + 0x50]
or ecx, eax
mov ecx, dword [esp + 0x10]
je 0x51ea5d
mov eax, dword [esp + 0x54]
mov byte [eax + 0x2e], 1
jmp 0x51eb58
test al, 5
setne cl
bt eax, 8
setb al
test al, cl
mov eax, dword [esp + 0x44]
je 0x51d649
mov eax, dword [eax + 0x30]
mov ecx, edi
mov edx, dword [eax]
inc dword [edi + 0x2c]
mov eax, dword [edi + 0x2c]
push eax
push dword [esp + 0x50]
mov dword [esp + 0x2c], eax
push 0
push dword [esp + 0x1c]
call fcn.0051c040
mov edx, dword [esp + 0x34]
add esp, 0x10
mov dword [esp + 0x14], eax
cmp eax, edx
je 0x51d5fd
mov ecx, edi
call fcn.004f14c0
mov eax, dword [esp + 0x14]
push eax
mov eax, dword [esp + 0x14]
mov edx, 0x20
mov ecx, esi
push dword [eax + 0x10]
push dword [esp + 0x48]
call fcn.004d5d80
mov edx, dword [esp + 0x20]
add esp, 0xc
mov ecx, edi
push 1
call fcn.004eebd0
mov edx, dword [esp + 0x44]
add esp, 4
mov ecx, edi
push dword [esp + 0x14]
push 0xffffffffffffffff
call fcn.004eeaa0
mov ecx, dword [esp + 0x18]
add esp, 8
mov byte [ecx + 0x2d], 0xa2
jmp 0x51d540
mov ecx, dword [eax + 0x24]
mov eax, ecx
and eax, 0x102
cmp eax, 0x102
jne 0x51d90f
xor eax, eax
mov dword [esp + 0x48], 0xa2
xor edx, edx
mov dword [esp + 0x5c], 0
test cl, 0x20
je 0x51d68c
mov eax, dword [esp + 0x44]
mov dword [esp + 0x18], 4
mov eax, dword [eax + 0x30]
mov edx, dword [eax]
xor eax, eax
jmp 0x51d690
mov dword [esp + 0x18], eax
test cl, 0x10
je 0x51d6a3
mov eax, dword [esp + 0x44]
mov ecx, dword [esp + 0x18]
mov eax, dword [eax + 0x30]
mov eax, dword [ecx + eax]
cmp dword [esp + 0x4c], 0
mov ecx, edx
cmove ecx, eax
mov dword [esp + 0x60], ecx
mov ecx, dword [esp + 0x4c]
test ecx, ecx
cmove eax, edx
mov dword [esp + 0x3c], eax
test eax, eax
je 0x51d7ad
mov ecx, dword [eax]
mov dword [esp + 0x20], 0x1917181a
mov dword [esp + 0x18], ecx
mov edx, dword [ecx + 0x10]
mov al, byte [edx]
cmp al, 0x9d
jne 0x51d6e0
mov al, byte [edx + 0x26]
cmp al, 0x9e
jne 0x51d6e9
lea eax, [edx + 0x14]
jmp 0x51d6f0
cmp al, 0x77
jne 0x51d744
mov eax, dword [edx + 0x14]
mov eax, dword [eax]
cmp dword [eax], 1
jle 0x51d744
mov al, byte [edi + 0x13]
test al, al
jne 0x51d706
inc dword [edi + 0x2c]
mov eax, dword [edi + 0x2c]
jmp 0x51d715
dec al
mov byte [edi + 0x13], al
movzx eax, al
mov eax, dword [edi + eax*4 + 0x160]
mov edx, dword [ecx + 0x10]
mov ecx, edi
push 1
push eax
mov dword [esp + 0x60], eax
call fcn.0051cc70
mov ecx, dword [esp + 0x20]
add esp, 8
mov eax, dword [esp + 0x58]
mov dword [esp + 0x14], eax
movzx eax, byte [ecx]
sub eax, 0x26
or eax, 1
mov cl, byte [esp + eax + 0x20]
jmp 0x51d777
lea eax, [esp + 0x24]
mov ecx, edi
push eax
call fcn.004f01b0
mov edx, dword [esp + 0x40]
add esp, 4
mov ecx, dword [esp + 0x10]
mov dword [esp + 0x14], eax
call fcn.0051be80
mov ecx, dword [esp + 0x18]
movzx eax, byte [ecx]
mov cl, byte [esp + eax - 6]
mov eax, dword [esp + 0x24]
mov dword [esp + 0x58], eax
push dword [esp + 0x14]
movzx edx, cl
mov ecx, esi
push dword [esp + 0x30]
push dword [esp + 0x48]
call fcn.004d5d80
mov edx, dword [esp + 0x20]
add esp, 0xc
mov ecx, edi
push 1
call fcn.004eebd0
mov edx, dword [esp + 0x5c]
add esp, 4
mov ecx, edi
call fcn.004f14c0
jmp 0x51d7ce
push dword [esp + 0x24]
test ecx, ecx
mov eax, 0x35
push dword [esp + 0x44]
mov edx, 0x3a
mov ecx, esi
cmovne edx, eax
call fcn.004d5ed0
add esp, 8
mov eax, dword [esp + 0x60]
test eax, eax
je 0x51d87e
mov eax, dword [eax]
inc dword [edi + 0x2c]
mov ecx, dword [edi + 0x2c]
push 1
mov edx, dword [eax + 0x10]
mov dword [esp + 0x60], ecx
push ecx
mov ecx, edi
mov dword [esp + 0x20], eax
call fcn.0051cc70
mov ecx, dword [esp + 0x20]
add esp, 8
mov ecx, dword [ecx + 0x10]
mov dl, byte [ecx]
mov al, dl
cmp al, 0x9d
jne 0x51d80c
mov al, byte [ecx + 0x26]
cmp al, 0x9e
jne 0x51d815
lea eax, [ecx + 0x14]
jmp 0x51d81c
cmp al, 0x77
jne 0x51d823
mov eax, dword [ecx + 0x14]
mov eax, dword [eax]
cmp dword [eax], 1
jg 0x51d831
mov eax, dword [esp + 0x18]
mov al, byte [eax]
cmp al, 0x28
je 0x51d83e
cmp al, 0x26
je 0x51d83e
mov eax, dword [esp + 0x4c]
lea eax, [eax*2 + 0x26]
jmp 0x51d84c
mov eax, dword [esp + 0x4c]
xor eax, 1
lea eax, [eax*2 + 0x27]
mov dword [esp + 0x48], eax
cmp dl, 0x9d
jne 0x51d858
mov dl, byte [ecx + 0x26]
cmp dl, 0x9e
jne 0x51d862
lea eax, [ecx + 0x14]
jmp 0x51d86a
cmp dl, 0x77
jne 0x51d871
mov eax, dword [ecx + 0x14]
mov eax, dword [eax]
cmp dword [eax], 1
jg 0x51d87e
mov edx, dword [esp + 0x60]
mov ecx, dword [esp + 0x10]
call fcn.0051be80
cmp dword [esp + 0x4c], 0
mov edx, dword [esp + 0x10]
mov ecx, dword [esi + 0x88]
sete al
add al, 6
cmp dword [esp + 0x48], 0xa2
mov byte [edx + 0x2d], al
mov eax, dword [esp + 0x40]
mov dword [edx + 0x30], eax
mov dword [edx + 0x34], ecx
je 0x51ea56
inc dword [edi + 0x2c]
mov edx, 0x7b
mov esi, dword [edi + 0x2c]
mov ecx, dword [esp + 0x30]
push esi
push eax
call fcn.004d5ed0
mov edx, dword [esp + 0x48]
mov ecx, edi
push esi
push 0xffffffffffffffff
call fcn.004eeaa0
mov edx, dword [esp + 0x58]
push esi
push dword [esp + 0x40]
mov esi, dword [esp + 0x48]
mov ecx, esi
push dword [esp + 0x74]
call fcn.004d5d80
mov eax, dword [esi + 0x88]
add esp, 0x1c
test eax, eax
jle 0x51d53c
lea ecx, [eax + eax*4]
mov edx, 0x53
mov eax, dword [esi + 0x58]
mov word [eax + ecx*4 - 0x12], dx
jmp 0x51d53c
test ecx, 0x200
je 0x51e17c
mov eax, dword [esp + 0x44]
mov dword [esp + 0x74], 0
mov dword [esp + 0x34], 0
mov dword [esp + 0x38], 0
movzx esi, word [eax + 0x18]
mov dword [esp + 0x20], esi
movzx esi, word [eax + 0x1a]
movzx eax, word [eax + 0x1c]
mov dword [esp + 0x18], eax
movzx eax, ax
mov dword [esp + 0x68], eax
xor eax, eax
mov dword [esp + 0x5c], eax
mov byte [esp + 0x1f], al
mov byte [esp + 0x7b], al
mov eax, dword [esp + 0x44]
mov dword [esp + 0x24], esi
movzx esi, si
mov dword [esp + 0x58], esi
mov eax, dword [eax + 0x20]
mov esi, dword [esp + 0x30]
mov dword [esp + 0x64], eax
mov eax, dword [edx + 8]
mov dword [esp + 0x2c], eax
mov eax, dword [esp + 0x54]
test byte [eax + 0x28], 1
je 0x51d9b2
cmp byte [eax + 0x2b], 0
mov eax, dword [esp + 0x20]
jle 0x51d9b6
mov edi, dword [esp + 0x64]
cmp word [edi + 0x32], ax
mov edi, dword [esp + 0x50]
jbe 0x51d9b6
mov byte [esp + 0x1f], 1
mov dword [esp + 0x38], 1
jmp 0x51d9b6
mov eax, dword [esp + 0x20]
movzx eax, ax
mov dword [esp + 0x28], eax
mov dword [esp + 0x14], eax
test cl, 0x20
je 0x51d9fb
mov eax, dword [esp + 0x44]
mov edi, dword [esp + 0x14]
mov eax, dword [eax + 0x30]
mov eax, dword [eax + edi*4]
inc edi
mov dword [esp + 0x74], eax
mov eax, dword [esp + 0x24]
mov dword [esp + 0x14], edi
mov edi, dword [esp + 0x38]
movzx eax, ax
cmp edi, eax
cmovbe edi, eax
mov eax, edi
mov dword [esp + 0x38], edi
mov edi, dword [esp + 0x50]
mov dword [esp + 0x38], eax
test cl, 0x10
je 0x51dae1
mov eax, dword [esp + 0x44]
mov esi, 0x100
mov ecx, dword [esp + 0x14]
mov eax, dword [eax + 0x30]
mov eax, dword [eax + ecx*4]
mov dword [esp + 0x34], eax
mov eax, dword [esp + 0x18]
movzx ecx, ax
cmp dword [esp + 0x38], ecx
mov eax, dword [esp + 0x34]
cmova ecx, dword [esp + 0x38]
mov dword [esp + 0x14], ecx
test word [eax + 0xa], si
mov esi, dword [esp + 0x30]
je 0x51da8c
mov eax, dword [edi + 0x2c]
mov ecx, esi
inc eax
mov dword [edi + 0x2c], eax
push eax
mov dword [edx + 0x24], eax
mov edx, 0x4d
push 1
call fcn.004d5ed0
mov edx, dword [esp + 0x18]
xor ecx, ecx
mov eax, dword [esi + 0x88]
add esp, 8
mov esi, dword [esp + 0x28]
shl dword [edx + 0x24], 1
mov dword [edx + 0x28], eax
mov eax, dword [esp + 0x64]
mov eax, dword [eax + 0x1c]
cmp byte [esi + eax], 1
mov esi, dword [esp + 0x30]
sete cl
xor ecx, dword [esp + 0x4c]
or dword [edx + 0x24], ecx
mov ecx, dword [esp + 0x14]
cmp dword [esp + 0x74], 0
mov dword [esp + 0x38], ecx
jne 0x51dae1
mov eax, dword [esp + 0x64]
mov ecx, dword [esp + 0x28]
mov eax, dword [eax + 4]
movsx ecx, word [eax + ecx*2]
mov dword [esp + 0x24], ecx
test ecx, ecx
js 0x51dac5
mov eax, dword [esp + 0x64]
add ecx, ecx
mov eax, dword [eax + 0xc]
mov eax, dword [eax + 4]
cmp byte [eax + ecx*8 + 0xc], 0
je 0x51dad4
mov ecx, dword [esp + 0x24]
mov eax, dword [esp + 0x14]
mov dword [esp + 0x38], eax
cmp ecx, 0xfffffffe
jne 0x51dae1
jmp 0x51dad8
mov eax, dword [esp + 0x14]
mov byte [esp + 0x1f], 1
mov dword [esp + 0x38], eax
mov eax, dword [esp + 0x64]
mov ecx, dword [esp + 0x20]
movzx eax, word [eax + 0x32]
mov dword [esp + 0x24], eax
cmp cx, ax
jae 0x51db1b
mov eax, dword [esp + 0x64]
xor ecx, ecx
mov esi, dword [esp + 0x28]
mov eax, dword [eax + 0x1c]
cmp byte [esi + eax], cl
mov esi, dword [esp + 0x30]
sete cl
cmp dword [esp + 0x4c], ecx
je 0x51db27
mov eax, dword [esp + 0x24]
mov ecx, dword [esp + 0x20]
cmp dword [esp + 0x4c], 0
je 0x51db5e
cmp ax, cx
jne 0x51db5e
mov eax, dword [esp + 0x34]
mov ecx, dword [esp + 0x74]
mov esi, dword [esp + 0x68]
mov dword [esp + 0x74], eax
mov al, byte [esp + 0x1f]
mov byte [esp + 0x7b], al
mov eax, dword [esp + 0x58]
mov dword [esp + 0x34], ecx
movzx ecx, si
mov esi, dword [esp + 0x30]
movzx eax, al
mov byte [esp + 0x1f], 0
mov dword [esp + 0x58], ecx
mov dword [esp + 0x68], eax
lea eax, [esp + 0x80]
mov ecx, edi
push eax
push dword [esp + 0x3c]
push dword [esp + 0x54]
call fcn.0051c6e0
mov ecx, dword [esp + 0x8c]
add esp, 0xc
mov edx, eax
mov dword [esp + 0x48], edx
test ecx, ecx
je 0x51dba9
cmp word [esp + 0x68], 0
je 0x51dba9
mov edx, dword [esp + 0x28]
lea edx, [edx + ecx]
mov ecx, dword [esp + 0x70]
call fcn.004b82b0
mov edx, dword [esp + 0x48]
mov dword [esp + 0x5c], eax
mov eax, dword [esp + 0x10]
mov eax, dword [eax + 0x10]
mov dword [esp + 0x60], eax
mov eax, dword [esp + 0x74]
test eax, eax
je 0x51dbca
test byte [eax + 0xc], 0x28
mov dword [esp + 0x6c], 0
je 0x51dbd2
mov dword [esp + 0x6c], 1
mov ecx, dword [esp + 0x34]
test ecx, ecx
je 0x51dbe8
test byte [ecx + 0xc], 0x28
mov dword [esp + 0x14], 0
je 0x51dbf0
mov dword [esp + 0x14], 1
test eax, eax
jne 0x51dd89
cmp word [esp + 0x20], ax
ja 0x51dd89
mov ecx, dword [esp + 0x28]
mov dword [esp + 0x18], eax
mov al, byte [esp + 0x1f]
mov dword [esp + 0x38], ecx
test al, al
je 0x51dc49
lea eax, [ecx + edx]
mov edx, 0x50
push eax
push 0
mov ecx, esi
call fcn.004d5ed0
mov eax, dword [esp + 0x30]
add esp, 8
inc eax
mov dword [esp + 0x6c], 0
mov dword [esp + 0x38], eax
mov al, byte [esp + 0x1f]
mov dword [esp + 0x18], 1
mov ecx, dword [esp + 0x38]
push dword [esp + 0x80]
mov edx, dword [esp + 0x4c]
movzx eax, al
sub ecx, eax
push ecx
mov ecx, edi
call fcn.0051bf00
mov eax, dword [esp + 0x4c]
add esp, 8
movzx eax, word [eax + 0x2a]
test ax, ax
je 0x51dc7b
cmp dword [esp + 0x38], eax
je 0x51dcac
mov ecx, dword [esp + 0x18]
push dword [esp + 0x38]
mov eax, dword [esp + 0x70]
push dword [esp + 0x4c]
push dword [esp + 0x68]
lea eax, [eax + ecx*2]
mov ecx, dword [esp + 0x58]
push dword [esp + 0x38]
movzx edx, byte [ecx + eax*2 + 0x62c2e0]
mov ecx, esi
call fcn.004d6210
add esp, 0x10
mov eax, dword [esp + 0x34]
test eax, eax
je 0x51dea0
mov eax, dword [eax]
mov ecx, edi
push 1
mov eax, dword [eax + 0x10]
mov dword [esp + 0x70], eax
mov eax, dword [esp + 0x2c]
add eax, dword [esp + 0x4c]
mov edx, eax
mov dword [esp + 0x1c], eax
call fcn.004eebd0
mov eax, dword [esp + 0x6c]
add esp, 4
mov edx, dword [esp + 0x6c]
mov ecx, edi
movzx eax, ax
push eax
push dword [esp + 0x1c]
call fcn.0051cc70
push dword [esp + 0x3c]
mov edx, dword [esp + 0x1c]
mov ecx, esi
call fcn.0051caa0
mov ecx, dword [esp + 0x78]
add esp, 0xc
call fcn.004ec2f0
test eax, eax
je 0x51dd28
push dword [esp + 0x60]
mov edx, 0x22
mov ecx, esi
push dword [esp + 0x1c]
call fcn.004d5ed0
add esp, 8
mov eax, dword [esp + 0x5c]
test eax, eax
je 0x51dd5f
mov ecx, dword [esp + 0x6c]
push eax
mov eax, dword [esp + 0x6c]
movzx edx, ax
call fcn.0051bf70
mov eax, dword [esp + 0x60]
add esp, 4
mov ecx, dword [esp + 0x68]
mov edx, dword [esp + 0x18]
push eax
movzx eax, cx
mov ecx, edi
push eax
call fcn.0051bf00
add esp, 8
mov ecx, dword [esp + 0x68]
movzx eax, cx
add dword [esp + 0x28], eax
mov eax, dword [esp + 0x6c]
mov cl, byte [eax]
cmp cl, 0x9d
jne 0x51dd78
mov cl, byte [eax + 0x26]
cmp cl, 0x9e
jne 0x51de78
add eax, 0x14
jmp 0x51de80
mov ecx, dword [esp + 0x28]
mov dword [esp + 0x18], 1
mov dword [esp + 0x38], ecx
test eax, eax
je 0x51dc0b
mov eax, dword [eax]
mov edx, dword [esp + 0x58]
add ecx, dword [esp + 0x48]
movzx edx, dx
mov eax, dword [eax + 0x10]
push edx
mov dword [esp + 0x28], ecx
mov edx, eax
push ecx
mov ecx, edi
mov dword [esp + 0x28], eax
call fcn.0051cc70
push dword [esp + 0x7c]
mov esi, dword [esp + 0x3c]
mov ecx, esi
mov edx, dword [esp + 0x1c]
call fcn.0051caa0
mov ecx, dword [esp + 0x2c]
add esp, 0xc
call fcn.004ec2f0
test eax, eax
je 0x51ddfe
push dword [esp + 0x60]
mov edx, 0x22
mov ecx, esi
push dword [esp + 0x28]
call fcn.004d5ed0
add esp, 8
mov ecx, dword [esp + 0x80]
test ecx, ecx
je 0x51de23
mov eax, dword [esp + 0x28]
add eax, ecx
mov ecx, dword [esp + 0x20]
push eax
mov eax, dword [esp + 0x5c]
movzx edx, ax
call fcn.0051bf70
add esp, 4
mov ecx, dword [esp + 0x58]
movzx eax, cx
add dword [esp + 0x38], eax
mov eax, dword [esp + 0x20]
mov cl, byte [eax]
cmp cl, 0x9d
jne 0x51de3c
mov cl, byte [eax + 0x26]
cmp cl, 0x9e
jne 0x51de46
add eax, 0x14
jmp 0x51de4e
cmp cl, 0x77
jne 0x51de64
mov eax, dword [eax + 0x14]
mov eax, dword [eax]
cmp dword [eax], 1
jle 0x51de64
mov dword [esp + 0x6c], 1
xor al, al
jmp 0x51dc49
mov edx, dword [esp + 0x74]
mov ecx, dword [esp + 0x10]
call fcn.0051be80
xor al, al
jmp 0x51dc49
cmp cl, 0x77
jne 0x51de91
mov eax, dword [eax + 0x14]
mov eax, dword [eax]
cmp dword [eax], 1
jle 0x51de91
mov dword [esp + 0x14], 1
jmp 0x51decd
mov edx, dword [esp + 0x34]
mov ecx, dword [esp + 0x10]
call fcn.0051be80
jmp 0x51decd
cmp byte [esp + 0x7b], 0
je 0x51decd
mov eax, dword [esp + 0x28]
mov edx, 0x50
add eax, dword [esp + 0x48]
mov ecx, esi
push eax
push 0
call fcn.004d5ed0
add esp, 8
mov dword [esp + 0x14], 0
inc dword [esp + 0x28]
mov ecx, dword [esp + 0x80]
mov edx, dword [esp + 0x70]
test ecx, ecx
je 0x51df29
test edx, edx
je 0x51df1c
cmp dword [edx + 0x1c8], 0
je 0x51def6
mov edx, ecx
mov ecx, dword [esp + 0x70]
call fcn.004b7d60
jmp 0x51df25
cmp ecx, dword [edx + 0x120]
jb 0x51df1c
cmp ecx, dword [edx + 0x124]
jae 0x51df1c
mov eax, dword [edx + 0x11c]
mov dword [ecx], eax
dec dword [edx + 0x108]
mov dword [edx + 0x11c], ecx
jmp 0x51df29
push ecx
call fcn.004b7cf0
add esp, 4
mov edx, dword [esp + 0x70]
mov ecx, dword [esp + 0x5c]
test ecx, ecx
je 0x51df7a
test edx, edx
je 0x51df71
cmp dword [edx + 0x1c8], 0
je 0x51df4b
mov edx, ecx
mov ecx, dword [esp + 0x70]
call fcn.004b7d60
jmp 0x51df7a
cmp ecx, dword [edx + 0x120]
jb 0x51df71
cmp ecx, dword [edx + 0x124]
jae 0x51df71
mov eax, dword [edx + 0x11c]
mov dword [ecx], eax
dec dword [edx + 0x108]
mov dword [edx + 0x11c], ecx
jmp 0x51df7a
push ecx
call fcn.004b7cf0
add esp, 4
mov ecx, dword [esp + 0x10]
mov eax, dword [esi + 0x88]
mov dword [ecx + 0x34], eax
mov eax, dword [esp + 0x28]
test eax, eax
je 0x51dfb6
mov ecx, dword [esp + 0x4c]
push eax
push dword [esp + 0x4c]
mov eax, dword [esp + 0x1c]
push dword [esp + 0x68]
push dword [esp + 0x38]
movzx edx, byte [eax + ecx*2 + 0x62977c]
mov ecx, esi
call fcn.004d6210
add esp, 0x10
cmp dword [esp + 0x3c], 0
jne 0x51e131
mov edx, dword [esp + 0x64]
mov ecx, dword [edx + 0xc]
test byte [ecx + 0x24], 0x20
jne 0x51e045
mov ecx, dword [esp + 0x54]
movzx eax, word [ecx + 0x28]
test eax, 0x400
jne 0x51dfff
test eax, 0x1000
je 0x51dfea
cmp byte [ecx + 0x2d], 1
je 0x51dfff
push dword [esp + 0x2c]
push dword [esp + 0x44]
call fcn.0051cb00
add esp, 8
jmp 0x51e131
inc dword [edi + 0x2c]
mov edx, 0x81
mov esi, dword [edi + 0x2c]
mov ecx, dword [esp + 0x30]
push esi
push dword [esp + 0x30]
call fcn.004d5ed0
mov edx, dword [esp + 0x48]
mov ecx, edi
push esi
push 0xffffffffffffffff
call fcn.004eeaa0
push esi
mov esi, dword [esp + 0x44]
mov edx, 0x21
push 0
push dword [esp + 0x58]
mov ecx, esi
call fcn.004d5d80
add esp, 0x1c
jmp 0x51e131
mov eax, dword [esp + 0x40]
cmp eax, dword [esp + 0x2c]
je 0x51e131
call fcn.004f6040
mov ecx, edi
mov dword [esp + 0x18], eax
movzx edx, word [eax + 0x32]
call fcn.004f1510
mov dword [esp + 0x3c], eax
xor edx, edx
mov eax, dword [esp + 0x18]
mov dword [esp + 0x14], 0
movzx eax, word [eax + 0x32]
mov ecx, eax
cmp dx, ax
jae 0x51e10f
nop dword [eax + eax]
mov eax, dword [esp + 0x64]
xor ecx, ecx
movzx edx, word [eax + 0x34]
test edx, edx
je 0x51e0d5
mov eax, dword [esp + 0x18]
mov esi, dword [esp + 0x14]
mov eax, dword [eax + 4]
movzx eax, word [eax + esi*2]
mov esi, dword [esp + 0x30]
mov dword [esp + 0x24], eax
mov eax, dword [esp + 0x64]
mov eax, dword [eax + 4]
nop dword [eax]
mov edi, dword [esp + 0x24]
cmp di, word [eax]
mov edi, dword [esp + 0x50]
je 0x51e148
inc ecx
add eax, 2
cmp ecx, edx
jl 0x51e0c0
or ecx, 0xffffffff
mov eax, dword [esp + 0x14]
mov edx, 0x62
add eax, dword [esp + 0x3c]
push eax
movsx eax, cx
mov ecx, esi
push eax
push dword [esp + 0x34]
call fcn.004d5d80
mov eax, dword [esp + 0x24]
add esp, 0xc
mov ecx, dword [esp + 0x14]
inc ecx
mov dword [esp + 0x14], ecx
movzx edx, word [eax + 0x32]
cmp ecx, edx
jl 0x51e090
mov ecx, edx
movzx eax, cx
mov edx, 0x1e
push eax
push dword [esp + 0x40]
mov ecx, esi
push dword [esp + 0x84]
push dword [esp + 0x4c]
call fcn.004d6210
add esp, 0x10
mov edx, dword [esp + 0x44]
mov ecx, dword [esp + 0x10]
test dword [edx + 0x24], 0x1000
je 0x51e14d
mov byte [ecx + 0x2d], 0xa2
jmp 0x51e15a
movzx ecx, cx
jmp 0x51e0d8
cmp dword [esp + 0x4c], 0
sete al
add al, 6
mov byte [ecx + 0x2d], al
mov eax, dword [esp + 0x2c]
mov dword [ecx + 0x30], eax
mov al, byte [edx + 0x26]
and al, 1
mov byte [ecx + 0x2e], al
test byte [edx + 0x24], 0xf
jne 0x51d540
mov byte [ecx + 0x2f], 1
jmp 0x51d540
test ecx, 0x2000
je 0x51ea08
mov eax, dword [edi + 0x28]
mov ecx, esi
inc dword [edi + 0x2c]
mov dword [esp + 0x24], eax
inc eax
mov dword [edi + 0x28], eax
mov eax, dword [edi + 0x2c]
mov dword [esp + 0x38], 0
mov dword [esp + 0x5c], eax
mov dword [esp + 0x74], 0
mov dword [esp + 0x58], 0
call fcn.004d62a0
mov dword [esp + 0x4c], eax
mov eax, dword [esp + 0x14]
mov edx, dword [esp + 0x5c]
mov dword [esp + 0x28], 0
mov dword [esp + 0x48], 0
mov ecx, dword [eax + 0x10]
mov eax, dword [esp + 0x44]
mov dword [esp + 0x34], ecx
mov eax, dword [eax + 0x30]
mov eax, dword [eax]
mov dword [esp + 0x68], eax
mov eax, dword [eax + 0x1c]
mov dword [esp + 0x80], eax
mov eax, dword [esp + 0x10]
mov dword [eax + 0x30], edx
mov edx, dword [esp + 0x54]
mov byte [eax + 0x2d], 0x49
mov al, byte [edx + 0x2a]
cmp al, 1
jbe 0x51e335
mov ecx, dword [esp + 0x70]
movzx eax, al
sub eax, dword [esp + 0x60]
dec eax
mov dword [esp + 0x3c], eax
push 0
lea eax, [eax + eax*4]
shl eax, 4
add eax, 0x58
push eax
test ecx, ecx
je 0x51e23d
call fcn.004b8080
mov ecx, eax
mov dword [esp + 0x6c], ecx
jmp 0x51e248
call fcn.004b7920
mov ecx, eax
mov dword [esp + 0x6c], eax
add esp, 8
test ecx, ecx
jne 0x51e269
mov eax, dword [ebp + 8]
mov edx, dword [ebp + 0xc]
pop edi
pop esi
mov ecx, dword [esp + 0x134]
xor ecx, esp
call fcn.005b8427
mov esp, ebp
pop ebp
ret
mov edx, dword [esp + 0x3c]
lea eax, [edx + 1]
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 + 0x54]
movups xmmword [ecx + 0x48], xmm0
mov eax, dword [eax + 4]
add eax, 8
mov dword [esp + 0x3c], eax
cmp edx, 1
jl 0x51e303
mov esi, dword [esp + 0x10]
add ecx, 0x58
add esi, 0x7c
movzx eax, byte [esi]
lea esi, [esi + 0x50]
lea ecx, [ecx + 0x50]
lea eax, [eax + eax*4]
shl eax, 4
add eax, dword [esp + 0x3c]
movups xmm0, xmmword [eax]
movups xmmword [ecx - 0x50], xmm0
movups xmm0, xmmword [eax + 0x10]
movups xmmword [ecx - 0x40], xmm0
movups xmm0, xmmword [eax + 0x20]
movups xmmword [ecx - 0x30], xmm0
movups xmm0, xmmword [eax + 0x30]
movups xmmword [ecx - 0x20], xmm0
movups xmm0, xmmword [eax + 0x40]
movups xmmword [ecx - 0x10], xmm0
sub edx, 1
jne 0x51e2c0
mov esi, dword [esp + 0x30]
mov ecx, dword [esp + 0x34]
mov eax, dword [esp + 0x54]
test byte [eax + 0x28], 0x10
jne 0x51e380
test byte [ecx + 0x24], 0x20
jne 0x51e33e
inc dword [edi + 0x2c]
mov edx, 0x50
mov eax, dword [edi + 0x2c]
mov ecx, esi
push eax
push 0
mov dword [esp + 0x7c], eax
call fcn.004d5ed0
add esp, 8
jmp 0x51e376
mov eax, dword [edx + 4]
mov dword [esp + 0x64], eax
jmp 0x51e307
call fcn.004f6040
mov esi, eax
mov edx, 0x6c
mov eax, dword [edi + 0x28]
mov dword [esp + 0x74], eax
lea ecx, [eax + 1]
mov dword [edi + 0x28], ecx
movzx ecx, word [esi + 0x32]
push ecx
mov ecx, dword [esp + 0x34]
push eax
call fcn.004d5ed0
add esp, 8
mov edx, esi
mov ecx, edi
call fcn.004d6b50
mov esi, dword [esp + 0x30]
inc dword [edi + 0x2c]
mov eax, dword [edi + 0x2c]
mov dword [esp + 0x58], eax
push dword [esp + 0x5c]
mov edx, 0x4d
mov ecx, esi
push 0
call fcn.004d5ed0
mov dword [esp + 0x90], eax
add esp, 8
mov eax, dword [esp + 0x84]
xor edx, edx
mov ecx, dword [eax + 0xc]
cmp ecx, 1
jle 0x51e4be
mov dword [esp + 0x3c], edx
test ecx, ecx
jle 0x51e4bc
mov edi, dword [esp + 0x70]
xor ecx, ecx
mov esi, dword [esp + 0x68]
mov dword [esp + 0x18], ecx
nop dword [eax + eax]
mov eax, dword [eax + 0x14]
add eax, ecx
cmp eax, esi
je 0x51e424
mov esi, dword [eax]
mov dword [esp + 0x14], esi
test byte [esi + 4], 1
jne 0x51e420
test byte [eax + 0xa], 6
jne 0x51e420
mov esi, 0x1fff
test word [eax + 0xc], si
je 0x51e420
mov edx, dword [esp + 0x14]
mov ecx, edi
push 0
push 0
call fcn.004eb0b0
mov edx, dword [esp + 0x50]
mov ecx, edi
push eax
call fcn.004eab60
mov ecx, dword [esp + 0x24]
add esp, 0xc
mov edx, dword [esp + 0x3c]
mov dword [esp + 0x48], eax
mov esi, dword [esp + 0x68]
mov eax, dword [esp + 0x84]
inc edx
add ecx, 0x30
mov dword [esp + 0x3c], edx
mov dword [esp + 0x18], ecx
cmp edx, dword [eax + 0xc]
jl 0x51e3d0
mov edx, dword [esp + 0x48]
mov edi, dword [esp + 0x50]
mov esi, dword [esp + 0x30]
test edx, edx
je 0x51e4be
mov ecx, dword [edi]
push 0
push 0x30
call fcn.004b8080
add esp, 8
mov dword [esp + 0x18], eax
test eax, eax
je 0x51e47d
push 0x30
push 0
push eax
call fcn.005d05b0
mov eax, dword [esp + 0x24]
add esp, 0xc
or ecx, 0xffffffff
mov byte [eax], 0x1c
mov word [eax + 0x22], cx
push dword [esp + 0x48]
mov ecx, dword [edi]
mov edx, eax
push 0
call fcn.004ea950
mov ecx, dword [esp + 0x20]
add esp, 8
test ecx, ecx
je 0x51e4b4
mov eax, dword [edi]
mov eax, dword [eax + 0x6c]
cmp dword [ecx + 0x18], eax
jle 0x51e4b4
push eax
push str.Expression_tree_is_too_large__maximum_depth__d_
push edi
call fcn.004bab30
mov ecx, dword [esp + 0x24]
add esp, 0xc
mov edx, ecx
mov dword [esp + 0x48], edx
jmp 0x51e4be
xor edx, edx
mov eax, dword [esp + 0x54]
mov ecx, 0x400
mov ax, word [eax + 0x28]
and ax, cx
mov ecx, dword [esp + 0x80]
or ax, 0x20
movzx eax, ax
mov dword [esp + 0x44], eax
xor eax, eax
mov dword [esp + 0x6c], eax
cmp dword [ecx + 0xc], eax
jle 0x51e8a5
mov dword [esp + 0x98], 0x10
mov dword [esp + 0x90], 1
mov esi, dword [esp + 0x40]
lea eax, [eax + eax*2]
shl eax, 4
add eax, dword [ecx + 0x14]
cmp dword [eax + 0x14], esi
mov esi, dword [esp + 0x30]
je 0x51e52e
mov esi, 0x400
test word [eax + 0xc], si
mov esi, dword [esp + 0x30]
je 0x51e88f
mov eax, dword [eax]
xor ecx, ecx
mov dword [esp + 0x18], ecx
test edx, edx
je 0x51e545
test byte [eax + 4], 1
jne 0x51e545
mov dword [edx + 0xc], eax
mov eax, edx
push dword [esp + 0x24]
mov edx, dword [esp + 0x68]
mov ecx, edi
push dword [esp + 0x48]
push 0
push 0
push eax
call fcn.00526220
mov edx, eax
add esp, 0x14
mov dword [esp + 0x9c], edx
test edx, edx
je 0x51e888
mov eax, dword [esp + 0x10]
push 0
movzx ecx, byte [eax + 0x2c]
push ecx
push dword [esp + 0x68]
lea ecx, [edx + 0x2f0]
mov edx, dword [esp + 0x70]
push ecx
mov ecx, edi
call fcn.0051bba0
mov eax, dword [esp + 0x64]
add esp, 0x10
test byte [eax + 0x28], 0x10
jne 0x51e790
mov eax, dword [esp + 0x80]
mov ecx, dword [esp + 0x6c]
mov eax, dword [eax + 0xc]
dec eax
cmp ecx, eax
mov eax, 0xffffffff
cmove ecx, eax
mov eax, dword [esp + 0x34]
mov dword [esp + 0x14], ecx
test byte [eax + 0x24], 0x20
jne 0x51e605
push 0
push dword [esp + 0x5c]
mov edx, eax
mov ecx, edi
push dword [esp + 0x48]
push 0xffffffffffffffff
call fcn.004eeda0
push dword [esp + 0x24]
mov edx, 0x40
mov ecx, esi
push eax
push 0
push dword [esp + 0x90]
call fcn.004d6210
add esp, 0x20
mov dword [esp + 0x18], eax
jmp 0x51e790
mov ecx, eax
call fcn.004f6040
mov ecx, edi
mov dword [esp + 0x94], eax
movzx edx, word [eax + 0x32]
mov dword [esp + 0x20], edx
call fcn.004f1510
xor ecx, ecx
mov dword [esp + 0x2c], eax
mov dword [esp + 0x3c], ecx
test edx, edx
je 0x51e686
mov esi, eax
mov eax, dword [esp + 0x94]
mov edx, dword [esp + 0x34]
push 0
push esi
mov eax, dword [eax + 4]
push dword [esp + 0x48]
movsx eax, word [eax + ecx*2]
mov ecx, edi
push eax
call fcn.004eeda0
add esp, 0x10
cmp eax, esi
je 0x51e66c
mov ecx, dword [edi + 8]
mov edx, 0x56
push esi
push eax
call fcn.004d5ed0
add esp, 8
mov ecx, dword [esp + 0x3c]
inc esi
mov edx, dword [esp + 0x20]
inc ecx
mov dword [esp + 0x3c], ecx
cmp ecx, edx
jl 0x51e632
mov esi, dword [esp + 0x30]
mov eax, dword [esp + 0x2c]
cmp dword [esp + 0x14], 0
je 0x51e6b6
push edx
push eax
push 0
push dword [esp + 0x80]
mov edx, 0x1f
mov ecx, esi
call fcn.004d6210
add esp, 0x10
mov dword [esp + 0x18], eax
cmp dword [esp + 0x14], 0
jl 0x51e75e
mov eax, dword [esi + 0xc]
mov ecx, dword [esi + 0x88]
cmp dword [eax + 0x30], ecx
jg 0x51e6e3
push dword [esp + 0x58]
mov edx, dword [esp + 0x24]
mov ecx, esi
push edx
mov edx, dword [esp + 0x34]
push edx
mov edx, 0x64
call fcn.004d5d40
add esp, 0xc
jmp 0x51e719
mov edx, dword [esp + 0x2c]
lea eax, [ecx + 1]
mov dword [esi + 0x88], eax
lea ecx, [ecx + ecx*4]
mov eax, dword [esi + 0x58]
mov dword [eax + ecx*4 + 4], edx
mov edx, dword [esp + 0x20]
mov dword [eax + ecx*4 + 8], edx
mov edx, dword [esp + 0x58]
mov dword [eax + ecx*4], 0x64
mov dword [eax + ecx*4 + 0xc], edx
mov dword [eax + ecx*4 + 0x10], 0
push dword [esp + 0x20]
mov edx, 0x7e
mov ecx, esi
push dword [esp + 0x30]
push dword [esp + 0x60]
push dword [esp + 0x80]
call fcn.004d6210
add esp, 0x10
cmp dword [esp + 0x14], 0
je 0x51e75e
mov eax, dword [esi + 0x88]
test eax, eax
jle 0x51e75e
mov edx, dword [esp + 0x98]
lea ecx, [eax + eax*4]
mov eax, dword [esi + 0x58]
mov word [eax + ecx*4 - 0x12], dx
mov eax, dword [esp + 0x20]
mov ecx, edi
mov edx, dword [esp + 0x2c]
cmp eax, 1
jne 0x51e774
call fcn.004f14c0
jmp 0x51e790
push eax
call fcn.004eebd0
mov eax, dword [esp + 0x24]
add esp, 4
cmp eax, dword [edi + 0x1c]
jle 0x51e790
mov dword [edi + 0x1c], eax
mov eax, dword [esp + 0x2c]
mov dword [edi + 0x20], eax
mov eax, dword [esi + 0xc]
mov ecx, dword [esi + 0x88]
cmp dword [eax + 0x30], ecx
jg 0x51e7b9
push 0
push dword [esp + 0x50]
mov edx, 0xe
mov ecx, esi
push dword [esp + 0x64]
call fcn.004d5d40
add esp, 0xc
jmp 0x51e7ef
mov edx, dword [esp + 0x5c]
lea eax, [ecx + 1]
mov dword [esi + 0x88], eax
lea ecx, [ecx + ecx*4]
mov eax, dword [esi + 0x58]
mov dword [eax + ecx*4 + 4], edx
mov edx, dword [esp + 0x4c]
mov dword [eax + ecx*4], 0xe
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 + 0x18]
test ecx, ecx
je 0x51e820
mov eax, dword [esi]
mov edx, dword [esi + 0x88]
cmp byte [eax + 0x45], 0
je 0x51e80c
mov eax, 0x665728
jmp 0x51e81d
test ecx, ecx
lea eax, [edx - 1]
cmovns eax, ecx
lea ecx, [eax + eax*4]
mov eax, dword [esi + 0x58]
lea eax, [eax + ecx*4]
mov dword [eax + 8], edx
mov edx, dword [esp + 0x9c]
mov eax, dword [esp + 0x28]
cmp byte [edx + 0x2e], 0
mov ecx, dword [edx + 0x330]
cmovne eax, dword [esp + 0x90]
mov dword [esp + 0x28], eax
test dword [ecx + 0x24], 0x200
je 0x51e879
cmp dword [esp + 0x6c], 0
je 0x51e85a
mov eax, dword [esp + 0x38]
cmp dword [ecx + 0x20], eax
jne 0x51e879
mov eax, dword [esp + 0x34]
test byte [eax + 0x24], 0x20
je 0x51e870
mov eax, dword [ecx + 0x20]
mov eax, dword [eax + 0x38]
and al, 3
cmp al, 2
je 0x51e879
mov eax, dword [ecx + 0x20]
mov dword [esp + 0x38], eax
jmp 0x51e881
mov dword [esp + 0x38], 0
mov ecx, edx
call fcn.00526d00
mov ecx, dword [esp + 0x80]
mov eax, dword [esp + 0x6c]
mov edx, dword [esp + 0x48]
inc eax
mov dword [esp + 0x6c], eax
cmp eax, dword [ecx + 0xc]
jl 0x51e505
mov edx, dword [esp + 0x10]
mov eax, dword [esp + 0x38]
mov dword [edx + 0x38], eax
test eax, eax
je 0x51e8bb
mov eax, dword [esp + 0x24]
mov dword [edx + 8], eax
mov eax, dword [esp + 0x48]
test eax, eax
je 0x51e8d9
mov ecx, dword [esp + 0x70]
mov edx, eax
mov dword [eax + 0xc], 0
call fcn.004eaed0
mov edx, dword [esp + 0x10]
mov ecx, dword [esp + 0x88]
mov eax, dword [esi + 0x88]
mov dword [esp + 0x90], eax
test ecx, ecx
jns 0x51e8f4
lea ecx, [eax - 1]
mov eax, dword [esi]
cmp byte [eax + 0x45], 0
je 0x51e903
mov eax, 0x665728
jmp 0x51e90c
mov eax, dword [esi + 0x58]
lea ecx, [ecx + ecx*4]
lea eax, [eax + ecx*4]
mov ecx, dword [esp + 0x90]
mov dword [eax + 4], ecx
mov eax, dword [esi + 0xc]
mov ecx, dword [esi + 0x88]
mov edx, dword [edx + 0xc]
cmp dword [eax + 0x30], ecx
jg 0x51e93d
push 0
push edx
push 0
mov edx, 0xd
mov ecx, esi
call fcn.004d5d40
add esp, 0xc
jmp 0x51e973
mov edi, dword [esp + 0x50]
lea eax, [ecx + 1]
mov dword [esi + 0x88], eax
lea ecx, [ecx + ecx*4]
mov eax, dword [esi + 0x58]
mov dword [eax + ecx*4], 0xd
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 eax, dword [esi + 0xc]
mov ecx, dword [eax + 0x4c]
test ecx, ecx
je 0x51e992
mov eax, dword [esp + 0x4c]
lea eax, [eax*4 + 4]
sub ecx, eax
mov eax, dword [esi + 0x88]
mov dword [ecx], eax
mov eax, dword [esp + 0x54]
cmp byte [eax + 0x2a], 1
jbe 0x51e9eb
mov edx, dword [esp + 0x64]
test edx, edx
je 0x51e9eb
mov ecx, dword [esp + 0x70]
test ecx, ecx
je 0x51e9e2
cmp dword [ecx + 0x1c8], 0
je 0x51e9bc
call fcn.004b7d60
jmp 0x51e9eb
cmp edx, dword [ecx + 0x120]
jb 0x51e9e2
cmp edx, dword [ecx + 0x124]
jae 0x51e9e2
mov eax, dword [ecx + 0x11c]
mov dword [edx], eax
dec dword [ecx + 0x108]
mov dword [ecx + 0x11c], edx
jmp 0x51e9eb
push edx
call fcn.004b7cf0
add esp, 4
cmp dword [esp + 0x28], 0
mov ecx, dword [esp + 0x10]
jne 0x51d540
mov edx, dword [esp + 0x68]
call fcn.0051be80
jmp 0x51d53c
test byte [esp + 0x88], 0x20
je 0x51ea1b
mov byte [edx + 0x2d], 0xa2
jmp 0x51d53c
mov ecx, dword [esp + 0x4c]
push dword [esp + 0x24]
mov al, byte [ecx + 0x62b064]
mov byte [edx + 0x2d], al
mov eax, dword [esp + 0x44]
mov dword [edx + 0x30], eax
movzx edx, byte [ecx + 0x62967c]
mov ecx, esi
push eax
call fcn.004d5ed0
mov ecx, dword [esp + 0x18]
add esp, 8
inc eax
mov dword [ecx + 0x34], eax
mov byte [ecx + 0x2f], 1
jmp 0x51d540
mov ecx, edx
jmp 0x51d540
cmp dword [ecx], 0
mov eax, dword [edx]
mov dword [esp + 0x90], eax
je 0x51ea75
test byte [eax + 4], 1
je 0x51eb58
test dword [esp + 0x88], 0x200
je 0x51eb07
mov ecx, dword [ecx + 0x24]
mov eax, ecx
mov edx, dword [esi + 0x88]
and ecx, 1
shr eax, 1
add ecx, 0x15
mov dword [esp + 0x24], eax
mov eax, dword [esi + 0xc]
mov dword [esp + 0x88], ecx
mov dword [esp + 0x18], edx
cmp dword [eax + 0x30], edx
jg 0x51eacb
mov edx, dword [esp + 0x24]
push 0
push 0
push edx
mov edx, ecx
mov ecx, esi
call fcn.004d5d40
add esp, 0xc
mov dword [esp + 0x18], eax
jmp 0x51eb00
lea eax, [edx + 1]
mov dword [esi + 0x88], eax
lea ecx, [edx + edx*4]
mov eax, dword [esi + 0x58]
mov edx, dword [esp + 0x24]
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
mov eax, dword [esp + 0x90]
push 0x10
push dword [esp + 0x80]
push eax
push edi
call fcn.004f0a30
mov ecx, dword [esp + 0x28]
add esp, 0x10
test ecx, ecx
je 0x51eb4b
mov eax, dword [esi]
mov edx, dword [esi + 0x88]
cmp byte [eax + 0x45], 0
je 0x51eb37
mov eax, 0x665728
jmp 0x51eb48
test ecx, ecx
lea eax, [edx - 1]
cmovns eax, ecx
lea ecx, [eax + eax*4]
mov eax, dword [esi + 0x58]
lea eax, [eax + ecx*4]
mov dword [eax + 8], edx
mov edx, dword [esp + 0x3c]
mov ecx, dword [esp + 0x10]
or word [edx + 0xa], 4
mov eax, dword [esp + 0x34]
add edx, 0x30
dec eax
mov dword [esp + 0x3c], edx
mov dword [esp + 0x34], eax
test eax, eax
jg 0x51d560
mov eax, dword [esp + 0x84]
mov edx, dword [eax + 0x14]
mov eax, dword [eax + 0xc]
mov dword [esp + 0x34], eax
test eax, eax
jle 0x51ecc8
add edx, 0xc
mov esi, eax
mov dword [esp + 0x14], edx
test byte [edx - 2], 6
jne 0x51ecb0
movzx eax, word [edx]
mov edi, 0xb
test al, 0x82
setne cl
bt ax, di
mov edi, dword [esp + 0x50]
setb al
test al, cl
mov ecx, dword [esp + 0x10]
je 0x51ecb0
mov eax, dword [esp + 0x40]
cmp dword [edx + 8], eax
jne 0x51ecb0
cmp dword [ecx], 0
jne 0x51ecb0
mov eax, dword [edx - 0xc]
lea ecx, [esp + 0xd8]
xor esi, esi
mov dword [esp + 0x88], eax
push esi
push 0x83
push dword [edx + 0x10]
mov edx, dword [esp + 0x90]
push dword [esp + 0x4c]
call fcn.00521290
mov edx, eax
add esp, 0x10
test edx, edx
je 0x51ec44
nop dword [eax + eax]
mov edi, dword [edx + 0x20]
mov ecx, edi
mov eax, dword [edx + 0x24]
and ecx, dword [ebp + 8]
and eax, dword [ebp + 0xc]
or ecx, eax
jne 0x51ec32
or edi, dword [edx + 0x24]
jne 0x51ec2d
test byte [edx + 0xc], 0x82
jne 0x51ec46
test esi, esi
cmove esi, edx
lea ecx, [esp + 0xd8]
call fcn.00520ff0
mov edx, eax
test edx, edx
jne 0x51ec10
mov edx, esi
mov edi, dword [esp + 0x50]
test edx, edx
je 0x51eca4
test byte [edx + 0xa], 4
jne 0x51eca4
mov eax, dword [edx]
push 0x10
push dword [esp + 0x80]
movups xmm0, xmmword [eax]
movups xmmword [esp + 0xa8], xmm0
movups xmm0, xmmword [eax + 0x10]
movups xmmword [esp + 0xb8], xmm0
movups xmm0, xmmword [eax + 0x20]
mov eax, dword [esp + 0x90]
movups xmmword [esp + 0xc8], xmm0
mov eax, dword [eax + 0xc]
mov dword [esp + 0xb4], eax
lea eax, [esp + 0xa8]
push eax
push edi
call fcn.004f0a30
add esp, 0x10
mov ecx, dword [esp + 0x10]
mov esi, dword [esp + 0x34]
mov edx, dword [esp + 0x14]
dec esi
add edx, 0x30
mov dword [esp + 0x34], esi
mov dword [esp + 0x14], edx
test esi, esi
jg 0x51eb92
mov esi, dword [esp + 0x30]
mov edx, dword [ecx]
test edx, edx
je 0x51edd7
mov eax, dword [esi + 0x88]
mov dword [ecx + 0x1c], eax
mov eax, dword [esi + 0xc]
mov ecx, dword [esi + 0x88]
cmp dword [eax + 0x30], ecx
jg 0x51ecff
push 0
push edx
push 1
mov edx, 0x4d
mov ecx, esi
call fcn.004d5d40
add esp, 0xc
jmp 0x51ed31
lea eax, [ecx + 1]
mov dword [esi + 0x88], eax
lea ecx, [ecx + ecx*4]
mov eax, dword [esi + 0x58]
mov dword [eax + ecx*4], 0x4d
mov dword [eax + ecx*4 + 4], 1
mov dword [eax + ecx*4 + 8], edx
mov dword [eax + ecx*4 + 0xc], 0
mov dword [eax + ecx*4 + 0x10], 0
xor esi, esi
cmp byte [edi + 0x19], 0
jbe 0x51ed68
lea edx, [edi + 0xa4]
nop
cmp byte [edx - 6], 0
je 0x51ed5c
mov al, byte [edi + 0x13]
cmp al, 8
jae 0x51ed5c
movzx ecx, al
mov eax, dword [edx]
mov dword [edi + ecx*4 + 0x160], eax
inc byte [edi + 0x13]
movzx eax, byte [edi + 0x19]
inc esi
add edx, 0x14
cmp esi, eax
jl 0x51ed40
mov eax, dword [esp + 0x84]
mov ecx, dword [esp + 0x84]
mov byte [edi + 0x19], 0
mov esi, dword [eax + 0x14]
xor eax, eax
mov dword [esp + 0x18], eax
cmp dword [ecx + 0xc], eax
jle 0x51edd3
test byte [esi + 0xa], 6
jne 0x51edc6
mov edx, dword [esp + 0x10]
mov ecx, dword [esi + 0x28]
mov eax, dword [esi + 0x2c]
and ecx, dword [edx + 0x48]
and eax, dword [edx + 0x4c]
or ecx, eax
jne 0x51edbb
push 0x10
push dword [esp + 0x80]
push dword [esi]
push edi
call fcn.004f0a30
add esp, 0x10
or word [esi + 0xa], 4
mov ecx, dword [esp + 0x84]
mov eax, dword [esp + 0x18]
inc eax
add esi, 0x30
mov dword [esp + 0x18], eax
cmp eax, dword [ecx + 0xc]
jl 0x51ed88
mov ecx, dword [esp + 0x10]
mov eax, dword [ecx + 0x48]
mov edx, dword [ecx + 0x4c]
mov ecx, dword [esp + 0x13c]
pop edi
pop esi
xor ecx, esp
call fcn.005b8427
mov esp, ebp
pop ebp
ret