Function at 0x53dea0
Capabilities:
Parse pe header
Resolve function by parsing pe exports

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x11c
mov eax, dword [0x5ab3e8]
xor eax, ebp
mov dword [ebp - 4], eax
mov edx, dword [ebp + 0x10]
push ebx
push esi
mov esi, dword [ebp + 0x18]
mov ebx, dword [ebp + 0xc]
lea eax, [edx + 0x50]
mov dword [ebp - 0xdc], eax
push edi
mov edi, dword [ebp + 8]
mov dword [ebp - 0x94], edx
mov dword [ebp - 0xc8], edi
mov dword [ebp - 0xd0], ebx
mov eax, dword [edi]
mov dword [ebp - 0xcc], eax
mov eax, dword [esi + 0x48]
mov dword [ebp - 0x88], eax
movzx eax, byte [esi + 0x34]
mov dword [ebp - 0x68], esi
mov dword [ebp - 0xd4], 0
lea ecx, [eax + eax*8]
mov eax, dword [edx + 4]
mov edx, dword [edx + 0x1ec]
lea eax, [eax + ecx*8]
add eax, 8
mov dword [ebp - 0xd8], eax
mov eax, dword [eax + 0x2c]
mov dword [ebp - 0x98], eax
xor eax, eax
test edx, edx
jle 0x53df4e
mov ecx, dword [ebp - 0x94]
add ecx, 0x1f0
mov ebx, dword [ebp - 0x98]
cmp dword [ecx], ebx
mov ebx, dword [ebp - 0xd0]
je 0x53e039
inc eax
add ecx, 4
cmp eax, edx
jl 0x53df32
xor ecx, ecx
xor edx, edx
not ecx
not edx
and ecx, dword [ebp + 0x1c]
and edx, dword [ebp + 0x20]
mov dword [esi + 0x50], ecx
mov ecx, dword [ebp - 0x94]
mov dword [esi + 0x54], edx
mov esi, dword [ebp + 0x14]
mov eax, dword [ecx + 0x48]
mov edx, dword [ecx + 0x4c]
mov ecx, esi
call fcn.0048c2e0
mov ecx, dword [ebp - 0x68]
and eax, 1
mov edx, dword [ebp - 0xd8]
mov dword [ebp - 0xa0], eax
mov eax, dword [edi + 0x38]
dec eax
mov dword [edi + 0x38], eax
mov dword [ecx + 0x10], eax
mov dword [ecx + 0xc], eax
mov dword [ebp - 0x7c], eax
mov eax, dword [edi + 0x38]
dec eax
mov dword [edi + 0x38], eax
cmp byte [ecx + 0x34], 0
mov dword [ebp - 0xe4], eax
mov dword [ecx + 0x18], eax
jbe 0x53dfd3
test byte [edx + 0x24], 8
je 0x53dfd3
mov eax, dword [edi + 0x2c]
inc eax
push eax
push 0
push 0x45
mov dword [edi + 0x2c], eax
push ebx
mov dword [ecx], eax
call fcn.0052e0b0
mov edx, dword [ebp - 0xd8]
add esp, 0x10
mov ecx, esi
test esi, esi
jle 0x53dffd
imul eax, esi, 0x58
mov esi, dword [ebp - 0x94]
add esi, 0x2f0
add eax, esi
lea ebx, [ebx]
cmp dword [eax], 0
jne 0x53dffd
dec ecx
sub eax, 0x58
test ecx, ecx
jg 0x53dff0
imul eax, ecx, 0x58
test byte [edx + 0x28], 0x10
mov ecx, dword [ebp - 0x94]
mov esi, dword [eax + ecx + 0x2fc]
mov dword [ebp - 0x80], esi
je 0x53e0e5
mov ecx, dword [ebx + 0x6c]
mov esi, dword [edx + 0x1c]
mov edx, dword [edx + 0x18]
cmp dword [ebx + 0x70], ecx
jg 0x53e053
push edx
push 0
push esi
push 0xd
push ebx
call fcn.004efc20
add esp, 0x14
jmp 0x53e07e
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 0x53df52
lea eax, [ecx + 1]
mov dword [ebx + 0x6c], eax
lea ecx, [ecx + ecx*4]
mov eax, dword [ebx + 0x68]
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 [ebx + 0x6c]
cmp dword [ebx + 0x70], edx
jg 0x53e0a8
push 0
push dword [ebp - 0x7c]
push esi
push 0xe
push ebx
call fcn.004efc20
mov edx, eax
add esp, 0x14
mov eax, dword [ebp - 0x68]
mov dword [eax + 0x3c], edx
mov byte [eax + 0x35], 0xb
jmp 0x53fdc9
lea eax, [edx + 1]
mov dword [ebx + 0x6c], eax
lea ecx, [edx + edx*4]
mov eax, dword [ebx + 0x68]
mov dword [eax + ecx*4 + 4], esi
mov esi, dword [ebp - 0x7c]
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 eax, dword [ebp - 0x68]
mov dword [eax + 0x3c], edx
mov byte [eax + 0x35], 0xb
jmp 0x53fdc9
mov eax, dword [ebp - 0x88]
mov edx, dword [eax + 0x24]
test edx, 0x400
je 0x53e5fb
movzx esi, word [eax + 0x28]
mov dword [ebp - 0x74], esi
lea ecx, [esi + 2]
cmp ecx, 1
jne 0x53e137
mov al, byte [edi + 0x13]
test al, al
jne 0x53e120
inc dword [edi + 0x2c]
mov eax, dword [edi + 0x2c]
mov edx, eax
mov dword [ebp - 0x8c], eax
jmp 0x53e16a
dec al
mov byte [edi + 0x13], al
movzx eax, al
mov edx, dword [edi + eax*4 + 0x94]
mov dword [ebp - 0x8c], edx
jmp 0x53e16a
mov edx, dword [edi + 0x1c]
mov esi, dword [edi + 0x20]
mov dword [ebp - 0x8c], esi
cmp ecx, edx
jg 0x53e156
sub edx, ecx
lea eax, [esi + ecx]
mov dword [edi + 0x1c], edx
mov edx, esi
mov dword [edi + 0x20], eax
jmp 0x53e167
mov eax, dword [edi + 0x2c]
lea edx, [eax + 1]
add eax, ecx
mov dword [ebp - 0x8c], edx
mov dword [edi + 0x2c], eax
mov esi, dword [ebp - 0x74]
mov edi, dword [ebp - 0x68]
mov eax, dword [edi + 0xc]
mov dword [ebp - 0x80], eax
test esi, esi
je 0x53e2b1
mov ebx, dword [ebp - 0xc8]
lea esi, [edx + 2]
xor ecx, ecx
mov eax, 0xfffffffe
sub eax, edx
mov dword [ebp - 0x6c], ecx
mov edx, dword [ebp - 0x74]
mov dword [ebp - 0xac], eax
lea esp, [esp]
mov eax, dword [ebp - 0x88]
mov eax, dword [eax + 0x30]
mov ecx, dword [ecx + eax]
test ecx, ecx
je 0x53e28e
test byte [ecx + 0xc], 1
je 0x53e1e3
mov eax, dword [ebp - 0xac]
push esi
push dword [ebp - 0xa0]
add eax, esi
push eax
push edi
push ecx
push ebx
call fcn.004e1c50
mov edi, dword [edi + 0x10]
add esp, 0x18
mov dword [ebp - 0x80], edi
mov edi, dword [ebp - 0x68]
jmp 0x53e28b
mov eax, dword [ecx]
mov eax, dword [eax + 0x10]
test eax, eax
je 0x53e280
mov cl, byte [eax]
cmp cl, 0xad
jne 0x53e1fa
mov cl, byte [eax + 2]
cmp cl, 0xae
jne 0x53e206
mov ecx, dword [eax + 0x14]
mov edx, ecx
jmp 0x53e211
cmp cl, 0x88
jne 0x53e280
mov ecx, dword [eax + 0x14]
mov edx, dword [ecx + 0x1c]
cmp dword [edx], 1
jle 0x53e280
test dword [eax + 4], 0x800
je 0x53e27a
mov edi, dword [ebx + 8]
push eax
push ebx
call fcn.005099c0
mov ecx, dword [edi + 0x6c]
add esp, 8
mov edx, eax
cmp dword [edi + 0x70], ecx
jg 0x53e24a
push 0
push esi
push edx
push 0x4d
push edi
call fcn.004efc20
mov edi, dword [ebp - 0x68]
add esp, 0x14
jmp 0x53e28b
lea eax, [ecx + 1]
mov dword [edi + 0x6c], eax
lea ecx, [ecx + ecx*4]
mov eax, dword [edi + 0x68]
mov edi, dword [ebp - 0x68]
mov dword [eax + ecx*4], 0x4d
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
jmp 0x53e28b
push esi
push dword [ecx + 4]
jmp 0x53e282
push esi
push eax
push ebx
call fcn.0050ebc0
add esp, 0xc
mov edx, dword [ebp - 0x74]
mov ecx, dword [ebp - 0x6c]
inc esi
mov eax, dword [ebp - 0xac]
add ecx, 4
add eax, esi
mov dword [ebp - 0x6c], ecx
cmp eax, edx
jl 0x53e1a0
mov ebx, dword [ebp - 0xd0]
mov esi, dword [ebp - 0x74]
mov eax, dword [ebp - 0x88]
mov ecx, dword [ebx + 0x6c]
mov edi, dword [ebp - 0x8c]
mov edx, dword [eax + 0x18]
cmp dword [ebx + 0x70], ecx
jg 0x53e2d9
push 0
push edi
push edx
push 0x45
push ebx
call fcn.004efc20
add esp, 0x14
jmp 0x53e304
lea eax, [ecx + 1]
mov dword [ebx + 0x6c], eax
lea ecx, [ecx + ecx*4]
mov eax, dword [ebx + 0x68]
mov dword [eax + ecx*4], 0x45
mov dword [eax + ecx*4 + 4], edx
mov dword [eax + ecx*4 + 8], edi
mov dword [eax + ecx*4 + 0xc], 0
mov dword [eax + ecx*4 + 0x10], 0
mov ecx, dword [ebx + 0x6c]
lea edx, [edi + 1]
cmp dword [ebx + 0x70], ecx
jg 0x53e320
push 0
push edx
push esi
push 0x45
push ebx
call fcn.004efc20
add esp, 0x14
jmp 0x53e351
mov edi, dword [ebp - 0x8c]
lea eax, [ecx + 1]
mov dword [ebx + 0x6c], eax
lea ecx, [ecx + ecx*4]
mov eax, dword [ebx + 0x68]
mov dword [eax + ecx*4], 0x45
mov dword [eax + ecx*4 + 4], esi
mov dword [eax + ecx*4 + 8], edx
mov dword [eax + ecx*4 + 0xc], 0
mov dword [eax + ecx*4 + 0x10], 0
mov esi, dword [ebp - 0x88]
or eax, 0xffffffff
mov ecx, 0xfffffff9
cmp byte [esi + 0x1c], 0
cmovne eax, ecx
push eax
push dword [esi + 0x20]
push edi
push dword [ebp - 0x80]
push dword [ebp - 0x98]
push 9
push ebx
call fcn.0052e160
mov edx, dword [ebp - 0x68]
add esp, 0x1c
mov ecx, dword [ebp - 0x94]
mov eax, dword [ebp - 0x98]
mov byte [esi + 0x1c], 0
mov esi, 0xad
mov dword [edx + 0x38], eax
mov eax, 0x3d
cmp byte [ecx + 0x2e], 0
mov ecx, dword [ebp - 0x74]
cmovne eax, esi
mov esi, dword [edx + 0x40]
mov byte [edx + 0x35], al
sub ecx, 1
mov eax, dword [ebx + 0x6c]
mov dword [edx + 0x3c], eax
mov dword [ebp - 0x84], ecx
js 0x53fdc9
lea eax, [ecx + 2]
add eax, edi
mov dword [ebp - 0xac], eax
nop
mov eax, dword [ebp - 0x88]
mov eax, dword [eax + 0x30]
mov edi, dword [eax + ecx*4]
lea eax, [esi - 1]
mov dx, word [edi + 0xc]
and dx, 1
cmove eax, esi
mov esi, eax
mov dword [ebp - 0x80], esi
cmp ecx, 0x10
jae 0x53e41c
mov eax, dword [ebp - 0x88]
mov ax, word [eax + 0x1e]
shr ax, cl
test al, 1
je 0x53e416
push edi
push dword [ebp - 0x68]
call fcn.004e6300
add esp, 8
jmp 0x53e5db
mov ecx, dword [ebp - 0x84]
test dx, dx
je 0x53e5e1
mov eax, dword [edi]
mov ecx, dword [eax + 0xc]
mov al, byte [ecx]
cmp al, 0xad
jne 0x53e433
mov al, byte [ecx + 2]
cmp al, 0xae
jne 0x53e43c
mov eax, dword [ecx + 0x14]
jmp 0x53e446
cmp al, 0x88
jne 0x53e44f
mov eax, dword [ecx + 0x14]
mov eax, dword [eax + 0x1c]
cmp dword [eax], 1
jne 0x53e5db
mov eax, dword [ebp - 0xcc]
cmp byte [eax + 0x51], 0
jne 0x53e4fa
mov eax, dword [ebp - 0x68]
lea ecx, [esi + esi*4]
mov eax, dword [eax + 0x44]
mov ecx, dword [eax + ecx*4 + 4]
test ecx, ecx
jns 0x53e474
mov ecx, dword [ebx + 0x6c]
dec ecx
mov eax, dword [ebx]
cmp byte [eax + 0x51], 0
je 0x53e483
mov eax, 0x5b6fa4
jmp 0x53e48c
mov eax, dword [ebx + 0x68]
lea ecx, [ecx + ecx*4]
lea eax, [eax + ecx*4]
mov ecx, dword [eax + 4]
mov edx, dword [eax + 0xc]
mov esi, dword [eax + 8]
mov al, byte [eax]
mov dword [ebp - 0x6c], ecx
mov ecx, dword [ebx + 0x6c]
mov byte [ebp - 0xa1], al
cmp dword [ebx + 0x70], ecx
jg 0x53e4bc
push edx
push esi
push dword [ebp - 0x6c]
movzx eax, al
push eax
push ebx
call fcn.004efc20
add esp, 0x14
jmp 0x53e4fa
lea eax, [ecx + 1]
mov dword [ebx + 0x6c], eax
lea ecx, [ecx + ecx*4]
mov eax, dword [ebx + 0x68]
mov bl, byte [ebp - 0xa1]
mov byte [eax + ecx*4], bl
xor ebx, ebx
mov word [eax + ecx*4 + 2], bx
mov ebx, dword [ebp - 0x6c]
mov dword [eax + ecx*4 + 4], ebx
mov ebx, dword [ebp - 0xd0]
mov dword [eax + ecx*4 + 8], esi
mov dword [eax + ecx*4 + 0xc], edx
mov dword [eax + ecx*4 + 0x10], 0
mov byte [eax + ecx*4 + 1], 0
mov eax, dword [ebp - 0xc8]
push 0
push 0x34
push dword [eax]
call fcn.0050c410
mov esi, eax
add esp, 0xc
test esi, esi
je 0x53e5d8
push 0x34
push 0
push esi
call fcn.0048e2e0
or eax, 0xffffffff
mov byte [esi], 0x35
push esi
mov word [esi + 0x22], ax
call fcn.004e9e20
mov ecx, dword [ebp - 0xc8]
add esp, 0x10
mov eax, dword [ecx]
mov eax, dword [eax + 0x78]
cmp dword [esi + 0x18], eax
jle 0x53e554
push eax
push str.Expression_tree_is_too_large__maximum_depth__d_
push ecx
call fcn.0050e160
add esp, 0xc
mov eax, dword [edi]
push 0
push 0x35
push dword [ebp - 0xcc]
mov eax, dword [eax + 0xc]
mov dword [esi + 0xc], eax
call fcn.0050c410
mov edi, eax
add esp, 0xc
test edi, edi
je 0x53e59b
push 0x34
push 0
push edi
call fcn.0048e2e0
add esp, 0xc
mov byte [edi], 0xad
or eax, 0xffffffff
mov word [edi + 0x22], ax
lea eax, [edi + 0x34]
mov dword [edi + 8], eax
mov byte [eax], 0
mov dword [edi + 0x18], 1
mov dword [esi + 0x10], edi
test edi, edi
je 0x53e5c2
mov eax, dword [ebp - 0xac]
mov dword [edi + 0x1c], eax
mov eax, dword [ebp - 0x68]
push 0x10
push dword [eax + 0x18]
push esi
push dword [ebp - 0xc8]
call fcn.00511920
add esp, 0x10
push esi
push dword [ebp - 0xcc]
mov dword [esi + 0xc], 0
call fcn.00511640
add esp, 8
mov esi, dword [ebp - 0x80]
mov ecx, dword [ebp - 0x84]
dec dword [ebp - 0xac]
dec ecx
mov dword [ebp - 0x84], ecx
test ecx, ecx
jns 0x53e3d0
jmp 0x53fdc9
test dl, 5
setne cl
bt edx, 8
setb al
test al, cl
je 0x53e6d6
mov eax, dword [ebp - 0x88]
mov eax, dword [eax + 0x30]
mov esi, dword [eax]
inc dword [edi + 0x2c]
mov eax, dword [edi + 0x2c]
push eax
push dword [ebp - 0xa0]
mov dword [ebp - 0x6c], eax
push 0
push dword [ebp - 0x68]
push esi
push edi
call fcn.004e1c50
mov ecx, dword [ebp - 0x6c]
mov edx, eax
add esp, 0x18
cmp edx, ecx
je 0x53e65b
test ecx, ecx
je 0x53e65b
mov al, byte [edi + 0x13]
cmp al, 8
jae 0x53e65b
movzx eax, al
mov dword [edi + eax*4 + 0x94], ecx
inc byte [edi + 0x13]
mov eax, dword [ebp - 0x68]
mov ecx, dword [ebx + 0x6c]
mov edi, dword [eax + 0x10]
cmp dword [ebx + 0x70], ecx
jg 0x53e67e
push edx
push edi
push dword [ebp - 0x98]
push 0x1f
push ebx
call fcn.004efc20
add esp, 0x14
jmp 0x53e6b1
lea eax, [ecx + 1]
mov dword [ebx + 0x6c], eax
lea ecx, [ecx + ecx*4]
mov eax, dword [ebx + 0x68]
mov ebx, dword [ebp - 0x98]
mov dword [eax + ecx*4 + 4], ebx
mov ebx, dword [ebp - 0xd0]
mov dword [eax + ecx*4], 0x1f
mov dword [eax + ecx*4 + 8], edi
mov dword [eax + ecx*4 + 0xc], edx
mov dword [eax + ecx*4 + 0x10], 0
mov edx, dword [ebp - 0x68]
mov byte [edx + 0x35], 0xad
mov ecx, dword [esi + 0x28]
mov eax, dword [esi + 0x2c]
and ecx, dword [edx + 0x50]
and eax, dword [edx + 0x54]
or ecx, eax
jne 0x53fdc9
or word [esi + 0xa], 4
jmp 0x53fdc9
mov eax, edx
and eax, 0x102
cmp eax, 0x102
jne 0x53e93f
xor esi, esi
mov dword [ebp - 0xb8], 0xad
xor ecx, ecx
mov dword [ebp - 0xac], 0
test dl, 0x20
je 0x53e719
mov eax, dword [ebp - 0x88]
mov dword [ebp - 0x6c], 4
mov eax, dword [eax + 0x30]
mov ecx, dword [eax]
jmp 0x53e71c
mov dword [ebp - 0x6c], ecx
test dl, 0x10
je 0x53e730
mov eax, dword [ebp - 0x88]
mov esi, dword [ebp - 0x6c]
mov eax, dword [eax + 0x30]
mov esi, dword [esi + eax]
mov edx, dword [ebp - 0xa0]
mov eax, ecx
test edx, edx
cmove eax, esi
cmove esi, ecx
mov dword [ebp - 0x84], eax
test esi, esi
je 0x53e815
mov edx, dword [esi]
mov dword [ebp - 0x78], 0x18161719
mov dword [ebp - 0x6c], edx
mov eax, dword [edx + 0x10]
push eax
mov dword [ebp - 0x80], eax
call fcn.005122b0
add esp, 4
test eax, eax
je 0x53e7af
mov al, byte [edi + 0x13]
test al, al
jne 0x53e77c
inc dword [edi + 0x2c]
mov esi, dword [edi + 0x2c]
jmp 0x53e78b
dec al
mov byte [edi + 0x13], al
movzx eax, al
mov esi, dword [edi + eax*4 + 0x94]
push 1
push esi
push dword [edx + 0x10]
push edi
call fcn.004e2230
mov eax, dword [ebp - 0x6c]
add esp, 0x10
mov ecx, esi
movzx eax, byte [eax]
inc eax
and eax, 2
or eax, 1
mov al, byte [ebp + eax - 0x78]
jmp 0x53e7e4
lea eax, [ebp - 0xbc]
push eax
push dword [ebp - 0x80]
push edi
call fcn.00511050
push esi
push dword [ebp - 0x68]
mov dword [ebp - 0x80], eax
call fcn.004e6300
mov eax, dword [ebp - 0x6c]
add esp, 0x14
mov esi, dword [ebp - 0xbc]
mov ecx, dword [ebp - 0x80]
movzx eax, byte [eax]
mov al, byte [ebp + eax - 0xae]
push ecx
push dword [ebp - 0x7c]
movzx eax, al
push dword [ebp - 0x98]
push eax
push ebx
call fcn.0052e110
add esp, 0x14
test esi, esi
je 0x53e834
mov al, byte [edi + 0x13]
cmp al, 8
jae 0x53e834
movzx eax, al
mov dword [edi + eax*4 + 0x94], esi
inc byte [edi + 0x13]
jmp 0x53e834
push dword [ebp - 0x80]
mov eax, edx
push dword [ebp - 0x98]
xor eax, 1
lea eax, [eax*4 + 0x21]
push eax
push ebx
call fcn.0052e0b0
add esp, 0x10
mov esi, dword [ebp - 0x84]
test esi, esi
je 0x53e8c5
mov eax, dword [esi]
inc dword [edi + 0x2c]
mov ecx, dword [edi + 0x2c]
push 1
push ecx
push dword [eax + 0x10]
mov dword [ebp - 0x6c], eax
push edi
mov dword [ebp - 0xac], ecx
call fcn.004e2230
mov edx, dword [ebp - 0x6c]
mov eax, dword [edx + 0x10]
push eax
mov dword [ebp - 0x6c], eax
call fcn.005122b0
add esp, 0x14
test eax, eax
jne 0x53e897
mov al, byte [edx]
cmp al, 0x38
je 0x53e87f
cmp al, 0x36
jne 0x53e897
mov eax, dword [ebp - 0xa0]
xor eax, 1
lea edx, [eax*2 + 0x37]
mov dword [ebp - 0xb8], edx
jmp 0x53e8aa
mov eax, dword [ebp - 0xa0]
lea eax, [eax*2 + 0x36]
mov dword [ebp - 0xb8], eax
push dword [ebp - 0x6c]
call fcn.005122b0
add esp, 4
test eax, eax
jne 0x53e8c5
push esi
push dword [ebp - 0x68]
call fcn.004e6300
add esp, 8
cmp dword [ebp - 0xa0], 0
mov edx, dword [ebp - 0x68]
mov ecx, dword [ebx + 0x6c]
sete al
add al, 4
cmp dword [ebp - 0xb8], 0xad
mov byte [edx + 0x35], al
mov eax, dword [ebp - 0x98]
mov dword [edx + 0x38], eax
mov dword [edx + 0x3c], ecx
je 0x53fdc9
inc dword [edi + 0x2c]
mov esi, dword [edi + 0x2c]
push esi
push eax
push 0x7f
push ebx
call fcn.0052e0b0
push esi
push dword [ebp - 0x7c]
push dword [ebp - 0xac]
push dword [ebp - 0xb8]
push ebx
call fcn.0052e110
mov eax, dword [ebx + 0x6c]
add esp, 0x24
test eax, eax
jle 0x53fdc9
lea ecx, [eax + eax*4]
mov edx, 0x53
mov eax, dword [ebx + 0x68]
mov word [eax + ecx*4 - 0x12], dx
jmp 0x53fdc9
test edx, 0x200
je 0x53f430
mov ecx, dword [ebp - 0x88]
xor esi, esi
mov dword [ebp - 0xc0], 0
mov dword [ebp - 0x90], 0
movzx eax, word [ecx + 0x18]
mov dword [ebp - 0x80], eax
movzx eax, word [ecx + 0x1a]
mov dword [ebp - 0xbc], eax
movzx eax, word [ecx + 0x1c]
xor ecx, ecx
mov dword [ebp - 0xc4], eax
mov eax, dword [ebp - 0x88]
mov dword [ebp - 0x78], ecx
mov byte [ebp - 0x6d], cl
mov byte [ebp - 0xa1], cl
mov eax, dword [eax + 0x20]
mov dword [ebp - 0xb4], eax
mov eax, dword [ebp - 0x68]
mov dword [ebp - 0x8c], ecx
mov ecx, dword [ebp - 0x80]
mov eax, dword [eax + 8]
mov dword [ebp - 0xa8], eax
movzx eax, cx
mov dword [ebp - 0x9c], eax
mov ecx, eax
test dl, 0x20
je 0x53e9db
mov esi, dword [ebp - 0x88]
mov eax, dword [esi + 0x30]
movzx esi, word [esi + 0x1a]
mov eax, dword [eax + ecx*4]
inc ecx
mov dword [ebp - 0xc0], eax
test dl, 0x10
je 0x53ead9
mov eax, dword [ebp - 0x88]
mov dword [ebp - 0x7c], edx
mov eax, dword [eax + 0x30]
mov eax, dword [eax + ecx*4]
mov ecx, dword [ebp - 0x88]
mov dword [ebp - 0x90], eax
movzx eax, word [ecx + 0x1c]
mov ecx, edx
mov edx, dword [ebp - 0x90]
cmp esi, eax
cmova eax, esi
mov esi, 0x100
mov dword [ebp - 0xac], eax
test word [edx + 0xa], si
je 0x53ea78
mov eax, dword [edi + 0x2c]
mov esi, dword [ebp - 0x68]
inc eax
push eax
push 1
push 0x45
mov dword [edi + 0x2c], eax
push ebx
mov dword [esi + 0x2c], eax
call fcn.0052e0b0
mov eax, dword [ebx + 0x6c]
xor ecx, ecx
shl dword [esi + 0x2c], 1
add esp, 0x10
mov edx, dword [ebp - 0x9c]
mov dword [esi + 0x30], eax
mov eax, dword [ebp - 0xb4]
mov eax, dword [eax + 0x1c]
cmp byte [edx + eax], 1
mov eax, dword [ebp - 0x88]
sete cl
xor ecx, dword [ebp - 0xa0]
or dword [esi + 0x2c], ecx
mov ecx, dword [eax + 0x24]
mov eax, dword [ebp - 0xac]
mov dword [ebp - 0x7c], ecx
cmp dword [ebp - 0xc0], 0
mov edx, ecx
mov esi, eax
jne 0x53ead9
mov edx, dword [ebp - 0xb4]
mov ecx, dword [ebp - 0x9c]
mov eax, dword [edx + 4]
movsx ecx, word [eax + ecx*2]
mov dword [ebp - 0xd4], ecx
test ecx, ecx
js 0x53eab8
mov eax, dword [edx + 0xc]
lea ecx, [ecx + ecx*4]
mov eax, dword [eax + 4]
cmp byte [eax + ecx*4 + 0xc], 0
je 0x53eaca
mov ecx, dword [ebp - 0xd4]
mov eax, dword [ebp - 0xac]
mov esi, eax
mov edx, dword [ebp - 0x7c]
cmp ecx, 0xfffffffe
jne 0x53ead9
jmp 0x53ead0
mov eax, dword [ebp - 0xac]
mov edx, dword [ebp - 0x7c]
mov esi, eax
mov byte [ebp - 0x6d], 1
test dl, 0x30
jne 0x53eb20
test edx, 0x80000
je 0x53eb20
mov eax, dword [ebp - 0x68]
mov esi, 1
inc dword [edi + 0x2c]
mov ecx, dword [edi + 0x2c]
mov byte [ebp - 0x6d], 1
cmp dword [eax], 0
mov dword [ebp - 0x8c], ecx
mov dword [eax + 0x24], ecx
je 0x53eb14
push ecx
push 0
push 0x45
push ebx
call fcn.0052e0b0
add esp, 0x10
mov ecx, dword [ebp - 0x68]
dec dword [edi + 0x38]
mov eax, dword [edi + 0x38]
mov dword [ecx + 0x28], eax
mov ecx, dword [ebp - 0xb4]
mov eax, dword [ebp - 0x80]
movzx edx, word [ecx + 0x32]
cmp ax, dx
jae 0x53eb54
mov eax, dword [ecx + 0x1c]
xor ecx, ecx
mov ebx, dword [ebp - 0x9c]
cmp byte [ebx + eax], cl
mov ebx, dword [ebp - 0xd0]
sete cl
cmp dword [ebp - 0xa0], ecx
je 0x53eb62
mov eax, dword [ebp - 0x80]
cmp dword [ebp - 0xa0], 0
je 0x53eba5
cmp dx, ax
jne 0x53eba5
mov eax, dword [ebp - 0x90]
mov ecx, dword [ebp - 0xc0]
mov edx, dword [ebp - 0xc4]
mov dword [ebp - 0xc0], eax
mov al, byte [ebp - 0x6d]
mov byte [ebp - 0xa1], al
mov eax, dword [ebp - 0xbc]
mov dword [ebp - 0x90], ecx
movzx ecx, dx
movzx eax, al
mov byte [ebp - 0x6d], 0
mov dword [ebp - 0xbc], ecx
mov dword [ebp - 0xc4], eax
lea eax, [ebp - 0x7c]
push eax
push esi
push dword [ebp - 0xa0]
mov esi, dword [ebp - 0x68]
push esi
push edi
call fcn.004e12d0
mov edx, dword [ebp - 0x9c]
add esp, 0x14
mov dword [ebp - 0x74], eax
mov eax, dword [ebp - 0x7c]
test eax, eax
je 0x53ec3e
cmp word [ebp - 0xc4], 0
je 0x53ec3e
add eax, edx
jne 0x53ebe2
xor ecx, ecx
mov dword [ebp - 0x78], ecx
jmp 0x53ec3e
mov ecx, eax
lea edx, [ecx + 1]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x53ebe7
mov eax, dword [ebp - 0xcc]
sub ecx, edx
push 0
lea esi, [ecx + 1]
push esi
test eax, eax
je 0x53ec10
push eax
call fcn.0050c410
mov ecx, eax
add esp, 0xc
mov dword [ebp - 0x78], ecx
jmp 0x53ec1d
call fcn.0051c920
add esp, 8
mov dword [ebp - 0x78], eax
mov ecx, eax
test ecx, ecx
je 0x53ec35
mov eax, dword [ebp - 0x9c]
add eax, dword [ebp - 0x7c]
push esi
push eax
push ecx
call fcn.0048d7e0
add esp, 0xc
mov edx, dword [ebp - 0x9c]
mov esi, dword [ebp - 0x68]
cmp dword [ebp - 0x8c], 0
je 0x53ec52
mov ecx, dword [esi + 0x28]
mov dword [ebp - 0x84], ecx
jmp 0x53ec5b
mov eax, dword [esi + 0x10]
mov dword [ebp - 0x84], eax
mov eax, dword [ebp - 0xc0]
test eax, eax
je 0x53ec75
test byte [eax + 0xc], 0x28
mov dword [ebp - 0xb8], 0
je 0x53ec7f
mov dword [ebp - 0xb8], 1
mov ecx, dword [ebp - 0x90]
test ecx, ecx
je 0x53ec99
test byte [ecx + 0xc], 0x28
mov dword [ebp - 0xac], 0
je 0x53eca3
mov dword [ebp - 0xac], 1
test eax, eax
jne 0x53eccb
cmp word [ebp - 0x80], ax
jne 0x53eccb
mov dword [ebp - 0x80], eax
cmp byte [ebp - 0x6d], 0
mov esi, edx
je 0x53ed95
mov dword [ebp - 0xb8], 0
jmp 0x53ed9e
mov dword [ebp - 0x80], 1
mov dword [ebp - 0x6c], edx
test eax, eax
je 0x53ecb0
mov eax, dword [eax]
mov ecx, dword [ebp - 0x74]
add ecx, edx
mov esi, dword [eax + 0x10]
mov eax, dword [ebp - 0xbc]
movzx eax, ax
push eax
push ecx
push esi
push edi
call fcn.004e2230
push dword [ebp - 0xc0]
push dword [ebp - 0x68]
push ebx
call fcn.0054e490
push esi
call fcn.0050ea50
add esp, 0x20
test eax, eax
je 0x53ed2c
push dword [ebp - 0x84]
mov eax, dword [ebp - 0x9c]
add eax, dword [ebp - 0x74]
push eax
push 0x32
push ebx
call fcn.0052e0b0
add esp, 0x10
mov ecx, dword [ebp - 0x7c]
test ecx, ecx
je 0x53ed4f
mov eax, dword [ebp - 0x9c]
add eax, ecx
mov ecx, dword [ebp - 0xbc]
push eax
movzx eax, cx
push eax
push esi
call fcn.00546a10
add esp, 0xc
mov ecx, dword [ebp - 0xbc]
movzx eax, cx
add dword [ebp - 0x6c], eax
push esi
call fcn.005122b0
add esp, 4
test eax, eax
jne 0x53ed82
push dword [ebp - 0xc0]
push dword [ebp - 0x68]
call fcn.004e6300
mov esi, dword [ebp - 0x6c]
add esp, 8
mov byte [ebp - 0x6d], 0
jmp 0x53edb9
mov esi, dword [ebp - 0x6c]
mov dword [ebp - 0xb8], 1
mov byte [ebp - 0x6d], 0
jmp 0x53edb9
cmp dword [ebp - 0x8c], 0
je 0x53edb9
mov eax, dword [ebp - 0x74]
add eax, edx
push eax
push 0
push 0x48
push ebx
call fcn.0052e0b0
add esp, 0x10
mov dword [ebp - 0x80], 1
inc esi
movzx edx, byte [ebp - 0x6d]
mov eax, esi
mov ecx, dword [ebp - 0x7c]
sub eax, edx
mov dword [ebp - 0xd4], edx
mov edx, dword [ebp - 0x74]
test ecx, ecx
je 0x53ee0a
test eax, eax
jle 0x53ede1
cmp byte [ecx], 0x41
jg 0x53ede1
dec eax
inc edx
inc ecx
test eax, eax
jg 0x53edd5
cmp eax, 1
jle 0x53edf3
cmp byte [eax + ecx - 1], 0x41
jg 0x53edf3
dec eax
cmp eax, 1
jg 0x53ede6
test eax, eax
jle 0x53ee0a
push eax
push ecx
push 0
push eax
push edx
push 0x5a
push dword [edi + 8]
call fcn.0052e160
add esp, 0x1c
mov ecx, dword [ebp - 0x88]
movzx eax, word [ecx + 0x2a]
test ax, ax
je 0x53ee21
cmp esi, eax
je 0x53eede
test dword [ecx + 0x24], 0x40000
je 0x53ee3b
push dword [ebp - 0xa8]
push 0x76
push ebx
call fcn.0052e050
add esp, 0xc
mov eax, dword [ebp - 0x8c]
test eax, eax
je 0x53ee53
push eax
push 1
push 0x45
push ebx
call fcn.0052e0b0
add esp, 0x10
mov ecx, dword [ebp - 0xb8]
mov eax, dword [ebp - 0x80]
push esi
push dword [ebp - 0x74]
push dword [ebp - 0x84]
lea eax, [ecx + eax*2]
mov ecx, dword [ebp - 0xa0]
push dword [ebp - 0xa8]
movzx eax, byte [ecx + eax*2 + 0x58cd94]
push eax
push ebx
call fcn.0052e250
mov eax, dword [ebp - 0x8c]
add esp, 0x18
test eax, eax
je 0x53eee4
mov eax, dword [ebx + 0x6c]
add eax, 2
push eax
push 0
push 0xb
push ebx
call fcn.0052e0b0
mov ecx, dword [ebp - 0xa0]
mov eax, esi
sub eax, dword [ebp - 0xb8]
push eax
push dword [ebp - 0x74]
mov eax, 1
push dword [ebp - 0x84]
cmp eax, esi
push dword [ebp - 0xa8]
sbb eax, eax
and eax, 4
movzx eax, byte [eax + ecx + 0x58cd96]
push eax
push ebx
call fcn.0052e250
add esp, 0x28
mov eax, dword [ebp - 0x8c]
mov ecx, dword [ebp - 0x90]
test ecx, ecx
je 0x53efe6
mov eax, dword [ecx]
mov esi, dword [ebp - 0x74]
add esi, dword [ebp - 0x9c]
mov ecx, dword [eax + 0x10]
mov eax, dword [ebp - 0xc4]
movzx eax, ax
push eax
push esi
push ecx
push edi
mov dword [ebp - 0x6c], ecx
call fcn.004e2230
push dword [ebp - 0x90]
push dword [ebp - 0x68]
push ebx
call fcn.0054e490
push dword [ebp - 0x6c]
call fcn.0050ea50
add esp, 0x20
test eax, eax
je 0x53ef45
push dword [ebp - 0x84]
push esi
push 0x32
push ebx
call fcn.0052e0b0
add esp, 0x10
mov eax, dword [ebp - 0x78]
test eax, eax
je 0x53efa9
mov edx, dword [ebp - 0xc4]
push eax
movzx eax, dx
push eax
push dword [ebp - 0x6c]
call fcn.00546a10
mov eax, dword [ebp - 0xc4]
add esp, 0xc
mov ecx, dword [ebp - 0x78]
movzx edx, ax
mov eax, edx
test edx, edx
je 0x53ef80
cmp byte [ecx], 0x41
jg 0x53ef80
dec eax
inc esi
inc ecx
test eax, eax
jg 0x53ef74
cmp eax, 1
jle 0x53ef92
cmp byte [eax + ecx - 1], 0x41
jg 0x53ef92
dec eax
cmp eax, 1
jg 0x53ef85
test eax, eax
jle 0x53efa9
push eax
push ecx
push 0
push eax
push esi
push 0x5a
push dword [edi + 8]
call fcn.0052e160
add esp, 0x1c
mov edx, dword [ebp - 0xc4]
push dword [ebp - 0x6c]
movzx eax, dx
add dword [ebp - 0x9c], eax
call fcn.005122b0
add esp, 4
test eax, eax
jne 0x53efda
push dword [ebp - 0x90]
push dword [ebp - 0x68]
call fcn.004e6300
add esp, 8
jmp 0x53f01a
mov dword [ebp - 0xac], 1
jmp 0x53f01a
cmp byte [ebp - 0xa1], 0
je 0x53f01a
test eax, eax
jne 0x53f014
mov eax, dword [ebp - 0x9c]
add eax, dword [ebp - 0x74]
push eax
push 0
push 0x48
push ebx
call fcn.0052e0b0
add esp, 0x10
mov dword [ebp - 0xac], 0
inc dword [ebp - 0x9c]
mov eax, dword [ebp - 0x7c]
test eax, eax
je 0x53f030
push eax
push dword [ebp - 0xcc]
call fcn.0050c300
add esp, 8
mov esi, dword [ebp - 0x78]
test esi, esi
je 0x53f0ea
mov ecx, dword [ebp - 0xcc]
test ecx, ecx
je 0x53f095
cmp dword [ecx + 0x1f8], 0
je 0x53f05d
push esi
push ecx
call fcn.004f2eb0
add esp, 8
jmp 0x53f0ea
cmp esi, dword [ecx + 0x14c]
jae 0x53f095
cmp esi, dword [ecx + 0x144]
jb 0x53f07d
mov eax, dword [ecx + 0x140]
mov dword [esi], eax
mov dword [ecx + 0x140], esi
jmp 0x53f0ea
cmp esi, dword [ecx + 0x148]
jb 0x53f095
mov eax, dword [ecx + 0x138]
mov dword [esi], eax
mov dword [ecx + 0x138], esi
jmp 0x53f0ea
cmp dword [0x5ac1c8], 0
je 0x53f0e0
mov eax, dword [0x5b6e80]
test eax, eax
je 0x53f0b1
push eax
call dword [0x5ac218]
add esp, 4
push esi
call dword [0x5ac1f4]
sub dword [0x5b6e20], eax
dec dword [0x5b6e44]
push esi
call dword [0x5ac1ec]
mov eax, dword [0x5b6e80]
add esp, 8
test eax, eax
je 0x53f0ea
push eax
call dword [0x5ac220]
jmp 0x53f0e7
push esi
call dword [0x5ac1ec]
add esp, 4
mov ecx, dword [ebp - 0x68]
mov esi, dword [ebp - 0x9c]
mov eax, dword [ebx + 0x6c]
mov dword [ecx + 0x3c], eax
test esi, esi
je 0x53f148
mov ecx, dword [ebp - 0x8c]
test ecx, ecx
je 0x53f11a
mov eax, dword [ebx + 0x6c]
add eax, 3
push eax
push ecx
push 0x14
push ebx
call fcn.0052e0b0
add esp, 0x10
mov ecx, dword [ebp - 0xa0]
mov eax, dword [ebp - 0xac]
push esi
push dword [ebp - 0x74]
push dword [ebp - 0x84]
movzx eax, byte [eax + ecx*2 + 0x58cd9c]
push dword [ebp - 0xa8]
push eax
push ebx
call fcn.0052e250
add esp, 0x18
mov ecx, dword [ebp - 0x8c]
test ecx, ecx
je 0x53f196
mov eax, dword [ebx + 0x6c]
add eax, 2
push eax
push ecx
push 0x12
push ebx
call fcn.0052e0b0
mov ecx, dword [ebp - 0xd4]
lea eax, [ecx + esi]
mov esi, dword [ebp - 0xa8]
push eax
push dword [ebp - 0x74]
mov eax, dword [ebp - 0xa0]
push dword [ebp - 0x84]
push esi
movzx eax, byte [ecx + eax*2 + 0x58cd9c]
push eax
push ebx
call fcn.0052e250
add esp, 0x28
jmp 0x53f19c
mov esi, dword [ebp - 0xa8]
mov ecx, dword [ebp - 0x88]
mov eax, dword [ecx + 0x24]
test eax, 0x40000
je 0x53f1c3
push 1
push esi
push 0x76
push ebx
call fcn.0052e0b0
mov ecx, dword [ebp - 0x88]
add esp, 0x10
mov eax, dword [ecx + 0x24]
test al, 0x40
je 0x53f1e9
mov eax, dword [ebp - 0x94]
test byte [eax + 0x28], 0x20
jne 0x53f1e9
mov ecx, dword [ebp - 0xa8]
mov esi, 1
mov edx, dword [ebp - 0xb4]
jmp 0x53f398
mov edx, dword [ebp - 0xb4]
xor esi, esi
mov eax, dword [edx + 0xc]
test byte [eax + 0x24], 0x80
jne 0x53f270
mov eax, dword [ebp - 0x94]
movzx eax, word [eax + 0x28]
test eax, 0x400
jne 0x53f23f
test eax, 0x1000
mov eax, dword [ebp - 0x94]
je 0x53f224
cmp byte [eax + 0x2e], 1
je 0x53f23f
cmp word [ecx + 0x28], si
je 0x53f23f
push dword [ebp - 0xa8]
push dword [ebp - 0x98]
push edx
push eax
call fcn.004e1a00
add esp, 0x10
jmp 0x53f386
inc dword [edi + 0x2c]
mov esi, dword [edi + 0x2c]
push esi
push dword [ebp - 0xa8]
push 0x86
push ebx
call fcn.0052e0b0
push esi
push 0
push dword [ebp - 0x98]
push 0x20
push ebx
call fcn.0052e110
add esp, 0x24
jmp 0x53f384
mov ecx, dword [ebp - 0xa8]
cmp dword [ebp - 0x98], ecx
je 0x53f392
push eax
call fcn.00523810
mov dword [ebp - 0x6c], eax
movzx eax, word [eax + 0x32]
push eax
push edi
call fcn.00517fc0
mov edx, eax
xor esi, esi
mov eax, dword [ebp - 0x6c]
xor edi, edi
add esp, 0xc
mov dword [ebp - 0xd4], edx
mov dword [ebp - 0xac], esi
movzx eax, word [eax + 0x32]
mov ecx, eax
cmp di, ax
jae 0x53f368
mov edi, edx
nop
mov eax, dword [ebp - 0xb4]
xor ecx, ecx
movzx edx, word [eax + 0x34]
test edx, edx
je 0x53f2f0
mov eax, dword [ebp - 0x6c]
mov eax, dword [eax + 4]
movzx esi, word [eax + esi*2]
mov eax, dword [ebp - 0xb4]
mov eax, dword [eax + 4]
cmp si, word [eax]
je 0x53f313
inc ecx
add eax, 2
cmp ecx, edx
jl 0x53f2e3
or eax, 0xffffffff
mov ecx, dword [ebx + 0x6c]
movsx edx, ax
cmp dword [ebx + 0x70], ecx
jg 0x53f318
push edi
push edx
push dword [ebp - 0xa8]
push 0x59
push ebx
call fcn.004efc20
add esp, 0x14
jmp 0x53f345
movzx eax, cx
jmp 0x53f2f3
mov esi, dword [ebp - 0xa8]
lea eax, [ecx + 1]
mov dword [ebx + 0x6c], eax
lea ecx, [ecx + ecx*4]
mov eax, dword [ebx + 0x68]
mov dword [eax + ecx*4], 0x59
mov dword [eax + ecx*4 + 4], esi
mov dword [eax + ecx*4 + 8], edx
mov dword [eax + ecx*4 + 0xc], edi
mov dword [eax + ecx*4 + 0x10], 0
mov eax, dword [ebp - 0x6c]
inc edi
mov esi, dword [ebp - 0xac]
inc esi
mov dword [ebp - 0xac], esi
movzx ecx, word [eax + 0x32]
cmp esi, ecx
jl 0x53f2c0
mov edx, dword [ebp - 0xd4]
movzx eax, cx
push eax
push edx
push dword [ebp - 0xe4]
push dword [ebp - 0x98]
push 0x1d
push ebx
call fcn.0052e250
add esp, 0x18
xor esi, esi
mov ecx, dword [ebp - 0xa8]
mov edx, dword [ebp - 0xb4]
mov eax, dword [ebp - 0x94]
mov edi, dword [ebp - 0x68]
cmp dword [edi], 0
jne 0x53f3d9
test byte [eax + 0x28], 0x20
jne 0x53f3b7
push eax
push ecx
push dword [ebp - 0x98]
push edx
call fcn.0054deb0
add esp, 0x10
mov ecx, dword [ebp - 0xb4]
mov eax, dword [ecx + 0x24]
test eax, eax
je 0x53f3df
push dword [ebp - 0xdc]
push dword [ebp - 0x98]
push eax
call fcn.0054da70
add esp, 0xc
mov ecx, dword [ebp - 0xb4]
mov edx, dword [ebp - 0x88]
test dword [edx + 0x24], 0x1000
je 0x53f3f4
mov byte [edi + 0x35], 0xad
jmp 0x53f403
cmp dword [ebp - 0xa0], 0
sete al
add al, 4
mov byte [edi + 0x35], al
mov eax, dword [ebp - 0xa8]
mov dword [edi + 0x38], eax
mov al, byte [edx + 0x26]
and al, 1
mov byte [edi + 0x36], al
test byte [edx + 0x24], 0xf
jne 0x53f41e
mov byte [edi + 0x37], 1
xor eax, eax
test esi, esi
cmove eax, ecx
mov dword [ebp - 0xd4], eax
jmp 0x53fdcb
test edx, 0x2000
je 0x53fd7e
mov eax, dword [edi + 0x28]
dec dword [edi + 0x38]
inc dword [edi + 0x2c]
mov dword [ebp - 0x9c], eax
inc eax
mov dword [edi + 0x28], eax
mov eax, dword [edi + 0x38]
mov esi, dword [ebp - 0xd8]
mov edx, dword [edi + 0x2c]
mov dword [ebp - 0x6c], eax
xor eax, eax
mov dword [ebp - 0xc0], eax
mov eax, dword [ebp - 0x88]
mov ecx, dword [esi + 0x10]
mov dword [ebp - 0x74], 0
mov dword [ebp - 0x80], edx
mov eax, dword [eax + 0x30]
mov dword [ebp - 0x7c], 0
mov dword [ebp - 0x78], 0
mov dword [ebp - 0xb4], 0
mov eax, dword [eax]
mov dword [ebp - 0xa0], eax
mov dword [ebp - 0xb8], ecx
mov eax, dword [eax + 0x1c]
mov dword [ebp - 0x8c], eax
mov eax, dword [ebp - 0x68]
mov byte [eax + 0x35], 0x41
mov dword [eax + 0x38], edx
mov eax, dword [ebp - 0x94]
mov al, byte [eax + 0x2c]
cmp al, 1
jbe 0x53f5dd
mov ecx, dword [ebp - 0xcc]
movzx eax, al
sub eax, dword [ebp + 0x14]
dec eax
mov dword [ebp - 0xac], eax
push 0
lea eax, [eax + eax*8]
lea eax, [eax*8 + 0x50]
push eax
test ecx, ecx
je 0x53f4fd
push ecx
call fcn.0050c410
mov ecx, eax
add esp, 0xc
mov dword [ebp - 0x90], ecx
jmp 0x53f50d
call fcn.0051c920
add esp, 8
mov dword [ebp - 0x90], eax
mov ecx, eax
test ecx, ecx
jne 0x53f528
mov eax, dword [ebp + 0x1c]
mov edx, dword [ebp + 0x20]
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.0048bb19
mov esp, ebp
pop ebp
ret
mov edx, dword [ebp - 0xac]
lea edi, [ecx + 8]
lea eax, [edx + 1]
movzx eax, al
mov dword [ecx + 4], eax
mov dword [ecx], eax
mov ecx, 0x12
rep movsd dword es:[edi], dword [esi]
mov esi, dword [ebp - 0x94]
mov ecx, dword [esi + 4]
add ecx, 8
mov dword [ebp - 0xbc], ecx
cmp edx, 1
jl 0x53f5a6
mov ebx, dword [ebp - 0x90]
mov eax, dword [ebp - 0x68]
add ebx, 0x50
add eax, 0x8c
mov dword [ebp - 0xac], eax
movzx eax, byte [eax]
mov edi, ebx
add ebx, 0x48
lea eax, [eax + eax*8]
lea esi, [ecx + eax*8]
mov eax, dword [ebp - 0xac]
mov ecx, 0x12
add eax, 0x58
mov dword [ebp - 0xac], eax
rep movsd dword es:[edi], dword [esi]
mov ecx, dword [ebp - 0xbc]
sub edx, 1
jne 0x53f571
mov ebx, dword [ebp - 0xd0]
mov ecx, dword [ebp - 0xb8]
mov edi, dword [ebp - 0xc8]
mov edx, dword [ebp - 0x94]
test byte [edx + 0x28], 0x10
jne 0x53f623
test byte [ecx + 0x24], 0x80
jne 0x53f5ee
inc dword [edi + 0x2c]
mov eax, dword [edi + 0x2c]
push eax
push 0
push 0x48
push ebx
mov dword [ebp - 0x7c], eax
call fcn.0052e0b0
add esp, 0x10
jmp 0x53f61a
mov eax, dword [ebp - 0x94]
mov eax, dword [eax + 4]
mov dword [ebp - 0x90], eax
jmp 0x53f5b2
push ecx
call fcn.00523810
mov esi, eax
mov eax, dword [edi + 0x28]
mov dword [ebp - 0x7c], eax
lea ecx, [eax + 1]
mov dword [edi + 0x28], ecx
movzx ecx, word [esi + 0x32]
push ecx
push eax
push 0x64
push ebx
call fcn.0052e0b0
push esi
push edi
call fcn.0053a6a0
add esp, 0x1c
inc dword [edi + 0x2c]
mov eax, dword [edi + 0x2c]
mov dword [ebp - 0x78], eax
mov esi, dword [ebx + 0x6c]
mov dword [ebp - 0x88], esi
cmp dword [ebx + 0x70], esi
jg 0x53f64b
push 0
push dword [ebp - 0x80]
push 0
push 0x45
push ebx
call fcn.004efc20
add esp, 0x14
mov dword [ebp - 0x88], eax
jmp 0x53f67d
mov edx, dword [ebp - 0x80]
lea eax, [esi + 1]
mov dword [ebx + 0x6c], eax
lea ecx, [esi + esi*4]
mov eax, dword [ebx + 0x68]
mov dword [eax + ecx*4], 0x45
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 [ebp - 0xdc]
cmp dword [eax + 0xc], 1
jle 0x53f766
mov edx, dword [ebp - 0xa0]
xor ecx, ecx
xor esi, esi
mov dword [ebp - 0xac], ecx
xor ebx, ebx
nop
mov eax, dword [eax + 0x14]
add eax, esi
cmp eax, edx
je 0x53f6f6
test byte [eax + 0xa], 6
jne 0x53f6f6
mov edi, 0x1fff
test word [eax + 0xc], di
mov edi, dword [ebp - 0xc8]
je 0x53f6f6
mov eax, dword [eax]
test eax, eax
je 0x53f6db
push 0
push 0
push eax
push dword [ebp - 0xcc]
call fcn.004e8f30
add esp, 0x10
jmp 0x53f6dd
xor eax, eax
push eax
push ebx
push edi
call fcn.0050e690
mov ecx, dword [ebp - 0xac]
add esp, 0xc
mov edx, dword [ebp - 0xa0]
mov ebx, eax
mov eax, dword [ebp - 0xdc]
inc ecx
add esi, 0x30
mov dword [ebp - 0xac], ecx
cmp ecx, dword [eax + 0xc]
jl 0x53f6a0
mov dword [ebp - 0xc0], ebx
test ebx, ebx
mov ebx, dword [ebp - 0xd0]
je 0x53f766
mov ecx, dword [edi]
mov eax, 0x34
cmp ax, word [ecx + 0x11c]
jbe 0x53f8a7
cmp dword [ecx + 0x118], 0
jne 0x53f743
inc dword [ecx + 0x12c]
jmp 0x53f915
cmp byte [ecx + 0x51], 0
je 0x53f915
xor esi, esi
mov eax, dword [ebp - 0xc0]
push eax
push dword [edi]
call fcn.00511640
add esp, 8
mov dword [ebp - 0xc0], esi
mov eax, dword [ebp - 0x94]
mov esi, 0x400
push str.MULTI_INDEX_OR
push 1
push edi
mov ax, word [eax + 0x28]
and ax, si
or ax, 0x20
movzx eax, ax
mov dword [ebp - 0xe8], eax
call fcn.005370d0
mov ecx, dword [ebp - 0x8c]
xor eax, eax
add esp, 0xc
mov dword [ebp - 0xbc], eax
cmp dword [ecx + 0xc], eax
jle 0x53fc2f
mov edx, dword [ebp - 0x98]
lea eax, [eax + eax*2]
shl eax, 4
add eax, dword [ecx + 0x14]
cmp dword [eax + 0x14], edx
je 0x53f7ca
test word [eax + 0xc], si
je 0x53fc19
mov esi, dword [eax]
xor eax, eax
mov dword [ebp - 0x84], eax
mov eax, dword [ebp - 0xc0]
test eax, eax
je 0x53f7e3
mov dword [eax + 0xc], esi
mov esi, eax
mov eax, dword [ebp - 0xbc]
inc eax
push eax
push str.INDEX__d
push 1
push edi
call fcn.005370d0
push dword [ebp - 0x9c]
push dword [ebp - 0xe8]
push 0
push 0
push esi
mov esi, dword [ebp - 0x90]
push esi
push edi
call fcn.0053d310
add esp, 0x2c
mov dword [ebp - 0xe0], eax
test eax, eax
je 0x53fc08
push 0
lea ecx, [eax + 0x2f0]
push ecx
push esi
push edi
call fcn.00540d70
mov eax, dword [ebp - 0x94]
add esp, 0x10
test byte [eax + 0x28], 0x10
jne 0x53fae2
mov eax, dword [ebp - 0x8c]
mov esi, dword [ebp - 0xbc]
mov eax, dword [eax + 0xc]
dec eax
cmp esi, eax
mov eax, 0xffffffff
cmove esi, eax
mov eax, dword [ebp - 0xb8]
mov dword [ebp - 0xa8], esi
test byte [eax + 0x24], 0x80
jne 0x53f97f
mov edx, dword [ebp - 0x78]
push edx
push dword [ebp - 0x98]
push 0x7f
push ebx
call fcn.0052e0b0
push esi
push dword [ebp - 0x78]
push 0
push dword [ebp - 0x7c]
push 0x2d
push ebx
call fcn.0052e250
add esp, 0x28
mov esi, eax
jmp 0x53fae8
mov esi, dword [ecx + 0x140]
test esi, esi
je 0x53f8c1
mov eax, dword [esi]
mov dword [ecx + 0x140], eax
inc dword [ecx + 0x128]
jmp 0x53f924
mov esi, dword [ecx + 0x13c]
test esi, esi
je 0x53f8db
mov eax, dword [esi]
mov dword [ecx + 0x13c], eax
inc dword [ecx + 0x128]
jmp 0x53f924
mov esi, dword [ecx + 0x138]
test esi, esi
je 0x53f8f5
mov eax, dword [esi]
mov dword [ecx + 0x138], eax
inc dword [ecx + 0x128]
jmp 0x53f924
mov esi, dword [ecx + 0x134]
test esi, esi
je 0x53f90f
mov eax, dword [esi]
inc dword [ecx + 0x128]
mov dword [ecx + 0x134], eax
jmp 0x53f924
inc dword [ecx + 0x130]
push 0
push 0x34
push ecx
call fcn.004e5490
mov esi, eax
add esp, 0xc
test esi, esi
je 0x53f74f
push 0x34
push 0
push esi
call fcn.0048e2e0
or eax, 0xffffffff
mov byte [esi], 0x2c
mov word [esi + 0x22], ax
mov eax, dword [ebp - 0xc0]
mov dword [esi + 0x10], eax
push esi
mov eax, dword [eax + 4]
and eax, 0x200104
or dword [esi + 4], eax
call fcn.004e9e20
mov eax, dword [edi]
add esp, 0x10
mov eax, dword [eax + 0x78]
cmp dword [esi + 0x18], eax
jle 0x53f760
push eax
push str.Expression_tree_is_too_large__maximum_depth__d_
push edi
call fcn.0050e160
add esp, 0xc
jmp 0x53f760
mov esi, dword [eax + 8]
test esi, esi
je 0x53f996
mov eax, dword [esi + 0x38]
and al, 3
cmp al, 2
je 0x53f996
mov esi, dword [esi + 0x14]
test esi, esi
jne 0x53f986
movzx eax, word [esi + 0x32]
push eax
push edi
mov dword [ebp - 0xac], eax
call fcn.00517fc0
xor edi, edi
mov dword [ebp - 0xc4], eax
add esp, 8
cmp dword [ebp - 0xac], edi
jbe 0x53f9f0
lea ebx, [ebx]
lea ecx, [edi + eax]
mov eax, dword [esi + 4]
push ecx
movsx eax, word [eax + edi*2]
push eax
push dword [ebp - 0x98]
push dword [ebp - 0xb8]
push ebx
call fcn.0050ef30
mov eax, dword [ebp - 0xc4]
inc edi
add esp, 0x14
cmp edi, dword [ebp - 0xac]
jl 0x53f9c0
mov edi, dword [ebp - 0xa8]
mov esi, dword [ebp - 0xac]
test edi, edi
je 0x53fa1a
push esi
push eax
push 0
push dword [ebp - 0x7c]
push 0x1e
push ebx
call fcn.0052e250
add esp, 0x18
mov dword [ebp - 0x84], eax
test edi, edi
js 0x53faa0
mov ecx, dword [ebx + 0x6c]
mov edi, dword [ebp - 0xc4]
cmp dword [ebx + 0x70], ecx
jg 0x53fa40
push dword [ebp - 0x78]
push esi
push edi
push 0x5b
push ebx
call fcn.004efc20
add esp, 0x14
jmp 0x53fa6a
mov edx, dword [ebp - 0x78]
lea eax, [ecx + 1]
mov dword [ebx + 0x6c], eax
lea ecx, [ecx + ecx*4]
mov eax, dword [ebx + 0x68]
mov dword [eax + ecx*4], 0x5b
mov dword [eax + ecx*4 + 4], edi
mov dword [eax + ecx*4 + 8], esi
mov dword [eax + ecx*4 + 0xc], edx
mov dword [eax + ecx*4 + 0x10], 0
push esi
push edi
push dword [ebp - 0x78]
push dword [ebp - 0x7c]
push 0x82
push ebx
call fcn.0052e250
add esp, 0x18
cmp dword [ebp - 0xa8], 0
je 0x53faa0
mov eax, dword [ebx + 0x6c]
test eax, eax
jle 0x53faa0
lea ecx, [eax + eax*4]
mov edx, 0x10
mov eax, dword [ebx + 0x68]
mov word [eax + ecx*4 - 0x12], dx
mov edi, dword [ebp - 0xc8]
cmp esi, 1
jne 0x53fad1
mov ecx, dword [ebp - 0xc4]
test ecx, ecx
je 0x53fae2
mov al, byte [edi + 0x13]
mov esi, dword [ebp - 0x84]
cmp al, 8
jae 0x53fae8
movzx eax, al
mov dword [edi + eax*4 + 0x94], ecx
inc byte [edi + 0x13]
jmp 0x53fae8
cmp esi, dword [edi + 0x1c]
jle 0x53fae2
mov eax, dword [ebp - 0xc4]
mov dword [edi + 0x1c], esi
mov dword [edi + 0x20], eax
mov esi, dword [ebp - 0x84]
mov ecx, dword [ebx + 0x6c]
cmp dword [ebx + 0x70], ecx
jg 0x53fb05
push 0
push dword [ebp - 0x6c]
push dword [ebp - 0x80]
push 0xc
push ebx
call fcn.004efc20
add esp, 0x14
jmp 0x53fb36
mov edx, dword [ebp - 0x80]
lea eax, [ecx + 1]
mov dword [ebx + 0x6c], eax
lea ecx, [ecx + ecx*4]
mov eax, dword [ebx + 0x68]
mov dword [eax + ecx*4 + 4], edx
mov edx, dword [ebp - 0x6c]
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
test esi, esi
je 0x53fb60
mov eax, dword [ebx]
mov edx, dword [ebx + 0x6c]
cmp byte [eax + 0x51], 0
je 0x53fb4c
mov eax, 0x5b6fa4
jmp 0x53fb5d
test esi, esi
lea eax, [edx - 1]
cmovns eax, esi
lea ecx, [eax + eax*4]
mov eax, dword [ebx + 0x68]
lea eax, [eax + ecx*4]
mov dword [eax + 8], edx
mov edx, dword [ebp - 0xe0]
mov ecx, 1
mov eax, dword [ebp - 0xb4]
test byte [edx + 0x30], 2
cmovne eax, ecx
mov ecx, dword [edx + 0x338]
mov dword [ebp - 0xb4], eax
test dword [ecx + 0x24], 0x200
je 0x53fbbe
cmp dword [ebp - 0xbc], 0
je 0x53fb9e
mov eax, dword [ebp - 0x74]
cmp dword [ecx + 0x20], eax
jne 0x53fbbe
mov eax, dword [ebp - 0xb8]
test byte [eax + 0x24], 0x80
je 0x53fbb6
mov eax, dword [ecx + 0x20]
mov eax, dword [eax + 0x38]
and al, 3
cmp al, 2
je 0x53fbbe
mov esi, dword [ecx + 0x20]
mov dword [ebp - 0x74], esi
jmp 0x53fbc5
mov dword [ebp - 0x74], 0
push edx
call fcn.00540230
mov ecx, dword [edi + 0xd4]
add esp, 4
test ecx, ecx
jne 0x53fbdc
xor eax, eax
jmp 0x53fc02
mov edx, dword [edi + 8]
test ecx, ecx
jns 0x53fbe7
mov ecx, dword [edx + 0x6c]
dec ecx
mov eax, dword [edx]
cmp byte [eax + 0x51], 0
je 0x53fbf6
mov eax, 0x5b6fa4
jmp 0x53fbff
mov eax, dword [edx + 0x68]
lea ecx, [ecx + ecx*4]
lea eax, [eax + ecx*4]
mov eax, dword [eax + 8]
mov dword [edi + 0xd4], eax
mov edx, dword [ebp - 0x98]
mov esi, 0x400
mov ecx, dword [ebp - 0x8c]
mov eax, dword [ebp - 0xbc]
inc eax
mov dword [ebp - 0xbc], eax
cmp eax, dword [ecx + 0xc]
jl 0x53f7b2
mov ecx, dword [edi + 0xd4]
test ecx, ecx
jne 0x53fc3d
xor eax, eax
jmp 0x53fc63
mov edx, dword [edi + 8]
test ecx, ecx
jns 0x53fc48
mov ecx, dword [edx + 0x6c]
dec ecx
mov eax, dword [edx]
cmp byte [eax + 0x51], 0
je 0x53fc57
mov eax, 0x5b6fa4
jmp 0x53fc60
mov eax, dword [edx + 0x68]
lea ecx, [ecx + ecx*4]
lea eax, [eax + ecx*4]
mov eax, dword [eax + 8]
mov dword [edi + 0xd4], eax
mov edi, dword [ebp - 0x68]
mov eax, dword [ebp - 0x74]
mov dword [edi + 0x40], eax
test eax, eax
je 0x53fc7f
mov eax, dword [ebp - 0x9c]
mov dword [edi + 8], eax
mov eax, dword [ebp - 0xc0]
mov esi, dword [ebp - 0xcc]
test eax, eax
je 0x53fca0
push eax
push esi
mov dword [eax + 0xc], 0
call fcn.00511640
add esp, 8
mov eax, dword [ebx]
mov edx, dword [ebx + 0x6c]
cmp byte [eax + 0x51], 0
je 0x53fcb2
mov eax, 0x5b6fa4
jmp 0x53fcc9
mov ecx, dword [ebp - 0x88]
lea eax, [edx - 1]
test ecx, ecx
cmovns eax, ecx
lea ecx, [eax + eax*4]
mov eax, dword [ebx + 0x68]
lea eax, [eax + ecx*4]
mov dword [eax + 4], edx
mov ecx, dword [ebx + 0x6c]
mov edx, dword [edi + 0xc]
cmp dword [ebx + 0x70], ecx
jg 0x53fce9
push 0
push edx
push 0
push 0xb
push ebx
call fcn.004efc20
add esp, 0x14
jmp 0x53fd1e
mov esi, dword [ebp - 0xcc]
lea eax, [ecx + 1]
mov dword [ebx + 0x6c], eax
lea ecx, [ecx + ecx*4]
mov eax, dword [ebx + 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 [ebx + 0xc]
mov edx, dword [ebp - 0x6c]
not edx
mov eax, dword [ecx + 0x3c]
add eax, dword [ecx + 0x38]
jns 0x53fd3b
push edx
push ebx
push ecx
call fcn.004fd830
add esp, 0xc
jmp 0x53fd44
mov ecx, dword [ecx + 0x40]
mov eax, dword [ebx + 0x6c]
mov dword [ecx + edx*4], eax
mov eax, dword [ebp - 0x94]
cmp byte [eax + 0x2c], 1
jbe 0x53fd64
mov eax, dword [ebp - 0x90]
test eax, eax
je 0x53fd64
push eax
push esi
call fcn.0050c300
add esp, 8
cmp dword [ebp - 0xb4], 0
jne 0x53fdc9
push dword [ebp - 0xa0]
push edi
call fcn.004e6300
add esp, 8
jmp 0x53fdc9
mov eax, dword [ebp - 0xd8]
test byte [eax + 0x28], 0x20
je 0x53fd93
mov eax, dword [ebp - 0x68]
mov byte [eax + 0x35], 0xad
jmp 0x53fdc9
mov ecx, dword [ebp - 0xa0]
mov edi, dword [ebp - 0x68]
push esi
mov al, byte [ecx + 0x58cda0]
mov byte [edi + 0x35], al
mov eax, dword [ebp - 0x98]
push eax
mov dword [edi + 0x38], eax
movzx eax, byte [ecx + 0x58cda4]
push eax
push ebx
call fcn.0052e0b0
add esp, 0x10
mov byte [edi + 0x37], 1
inc eax
mov dword [edi + 0x3c], eax
xor eax, eax
mov edi, dword [ebp - 0xdc]
mov ecx, eax
neg ecx
sbb ecx, ecx
add ecx, 2
mov dword [ebp - 0x6c], ecx
lea ecx, [ecx]
mov edx, dword [edi + 0xc]
xor eax, eax
mov esi, dword [edi + 0x14]
mov dword [ebp - 0x78], eax
mov dword [ebp - 0x90], edx
test edx, edx
jle 0x53fff2
lea esp, [esp]
movzx edx, word [esi + 0xa]
xor edi, edi
test dl, 6
jne 0x53ffc8
mov eax, dword [ebp - 0x68]
mov ebx, dword [ebp - 0x68]
mov ecx, dword [esi + 0x28]
and ecx, dword [eax + 0x50]
mov eax, dword [esi + 0x2c]
and eax, dword [ebx + 0x54]
or ecx, eax
mov ebx, dword [ebp - 0xd0]
je 0x53fe3a
mov eax, dword [ebp - 0x94]
or dword [eax + 0x30], 2
jmp 0x53ffc5
mov eax, dword [ebp - 0xd8]
mov ecx, dword [esi]
mov dword [ebp - 0xe8], ecx
test byte [eax + 0x24], 8
je 0x53fe58
test byte [ecx + 4], 1
je 0x53ffc5
mov eax, dword [ebp - 0x6c]
cmp eax, 1
jne 0x53feda
mov eax, dword [ebp - 0x68]
xor edx, edx
mov dword [ebp - 0x104], edi
mov dword [ebp - 0xfc], edi
mov dword [ebp - 0xf8], edi
mov eax, dword [eax + 4]
mov dword [ebp - 0xac], eax
mov eax, dword [ebp - 0xd4]
mov dword [ebp - 0xb0], eax
lea eax, [ebp - 0xb0]
mov dword [ebp - 0xf4], edi
mov dword [ebp - 0xf0], edx
mov dword [ebp - 0x100], 0x4e9320
mov dword [ebp - 0xec], eax
test ecx, ecx
je 0x53fec8
push ecx
lea eax, [ebp - 0x104]
push eax
call fcn.0054d8e0
mov edx, dword [ebp - 0xf0]
add esp, 8
test dx, dx
je 0x53fedf
mov eax, 2
mov dword [ebp - 0x78], eax
jmp 0x53ffc8
cmp eax, 3
jge 0x53ff03
movzx edx, word [esi + 0xa]
test edx, 0x1000
je 0x53ff03
mov eax, dword [ebp - 0x78]
test eax, eax
jne 0x53ffc8
mov eax, 3
mov dword [ebp - 0x78], eax
jmp 0x53ffc8
test edx, 0x200
je 0x53ff7a
mov eax, dword [ebp - 0x68]
mov eax, dword [eax + 0x2c]
test eax, eax
je 0x53ff7a
mov edi, dword [ebx + 0x6c]
mov edx, eax
and eax, 1
shr edx, 1
lea eax, [eax*2 + 0x12]
mov dword [ebp - 0xe0], eax
cmp dword [ebx + 0x70], edi
jg 0x53ff44
push 0
push 0
push edx
push eax
push ebx
call fcn.004efc20
add esp, 0x14
mov edi, eax
jmp 0x53ff7a
lea eax, [edi + 1]
mov dword [ebx + 0x6c], eax
lea ecx, [edi + edi*4]
mov eax, dword [ebx + 0x68]
mov ebx, dword [ebp - 0xe0]
mov byte [eax + ecx*4], bl
xor ebx, ebx
mov word [eax + ecx*4 + 2], bx
mov dword [eax + ecx*4 + 8], ebx
mov dword [eax + ecx*4 + 0xc], ebx
mov dword [eax + ecx*4 + 0x10], ebx
mov byte [eax + ecx*4 + 1], bl
mov ebx, dword [ebp - 0xd0]
mov dword [eax + ecx*4 + 4], edx
push 0x10
push dword [ebp - 0xe4]
push dword [ebp - 0xe8]
push dword [ebp - 0xc8]
call fcn.00511920
add esp, 0x10
test edi, edi
je 0x53ffc0
mov eax, dword [ebx]
mov edx, dword [ebx + 0x6c]
cmp byte [eax + 0x51], 0
je 0x53ffac
mov eax, 0x5b6fa4
jmp 0x53ffbd
test edi, edi
lea eax, [edx - 1]
cmovns eax, edi
lea ecx, [eax + eax*4]
mov eax, dword [ebx + 0x68]
lea eax, [eax + ecx*4]
mov dword [eax + 8], edx
or word [esi + 0xa], 4
mov eax, dword [ebp - 0x78]
mov edx, dword [ebp - 0x90]
add esi, 0x30
dec edx
mov dword [ebp - 0x90], edx
test edx, edx
jg 0x53fe00
mov edi, dword [ebp - 0xdc]
mov edx, dword [edi + 0xc]
mov esi, dword [edi + 0x14]
mov dword [ebp - 0x90], edx
mov dword [ebp - 0x6c], eax
test eax, eax
jg 0x53fde0
test edx, edx
jle 0x540163
mov ebx, dword [ebp - 0xc8]
add esi, 0xc
mov dword [ebp - 0x7c], esi
mov edi, 0xb
test byte [esi - 2], 6
jne 0x540148
movzx eax, word [esi]
test al, 0x82
setne cl
bt ax, di
setb al
test al, cl
je 0x540148
mov ecx, dword [ebp - 0x98]
cmp dword [esi + 8], ecx
jne 0x540148
mov eax, dword [ebp - 0xd8]
test byte [eax + 0x24], 8
jne 0x540148
mov eax, dword [esi - 0xc]
xor edi, edi
mov edx, dword [ebp - 0xdc]
mov dword [ebp - 0xe0], eax
mov eax, dword [esi + 0x10]
mov dword [ebp - 0x64], edx
mov dword [ebp - 0x60], edx
mov dword [ebp - 0x58], edi
mov word [ebp - 0x54], 0x100
mov dword [ebp - 0x5c], edi
mov dword [ebp - 0x50], 0x83
mov dword [ebp - 0x4c], edi
mov dword [ebp - 0x48], ecx
mov byte [ebp - 0x52], 1
cmp eax, 0xfffffffe
je 0x5400dc
mov word [ebp - 0x1c], ax
lea eax, [ebp - 0x64]
push eax
call fcn.005521e0
mov esi, eax
add esp, 4
test esi, esi
je 0x5400dc
mov edx, dword [esi + 0x20]
mov ecx, edx
mov eax, dword [esi + 0x24]
and ecx, dword [ebp + 0x1c]
and eax, dword [ebp + 0x20]
or ecx, eax
jne 0x5400ca
or edx, dword [esi + 0x24]
jne 0x5400c5
test byte [esi + 0xc], 0x82
jne 0x5400de
test edi, edi
cmove edi, esi
lea eax, [ebp - 0x64]
push eax
call fcn.005521e0
mov esi, eax
add esp, 4
test esi, esi
jne 0x5400a8
mov esi, edi
test esi, esi
je 0x54013a
test byte [esi + 0xa], 4
jne 0x54013a
test byte [esi + 0xc], 1
je 0x540104
mov eax, dword [esi]
test dword [eax + 4], 0x800
je 0x540104
mov eax, dword [eax + 0x14]
mov eax, dword [eax + 0x1c]
cmp dword [eax], 1
jg 0x54013a
mov esi, dword [esi]
lea edi, [ebp - 0x11c]
mov eax, dword [ebp - 0xe0]
mov ecx, 0xd
rep movsd dword es:[edi], dword [esi]
mov eax, dword [eax + 0xc]
push 0x10
push dword [ebp - 0xe4]
mov dword [ebp - 0x110], eax
lea eax, [ebp - 0x11c]
push eax
push ebx
call fcn.00511920
add esp, 0x10
mov esi, dword [ebp - 0x7c]
mov edi, 0xb
mov edx, dword [ebp - 0x90]
dec edx
add esi, 0x30
mov dword [ebp - 0x90], edx
mov dword [ebp - 0x7c], esi
test edx, edx
jg 0x540016
mov ebx, dword [ebp - 0xd0]
mov ecx, dword [ebp - 0x68]
mov edx, dword [ecx]
test edx, edx
je 0x540212
mov eax, dword [ebx + 0x6c]
mov dword [ecx + 0x1c], eax
mov ecx, dword [ebx + 0x6c]
cmp dword [ebx + 0x70], ecx
jg 0x540190
push 0
push edx
push 1
push 0x45
push ebx
call fcn.004efc20
add esp, 0x14
jmp 0x5401bf
lea eax, [ecx + 1]
mov dword [ebx + 0x6c], eax
lea ecx, [ecx + ecx*4]
mov eax, dword [ebx + 0x68]
mov dword [eax + ecx*4], 0x45
mov dword [eax + ecx*4 + 4], 1
mov dword [eax + ecx*4 + 8], edx
mov dword [eax + ecx*4 + 0xc], 0
mov dword [eax + ecx*4 + 0x10], 0
mov ebx, dword [ebp - 0xdc]
xor edi, edi
mov esi, dword [ebx + 0x14]
cmp dword [ebx + 0xc], edi
jle 0x54020f
nop
test byte [esi + 0xa], 6
jne 0x540206
mov edx, dword [ebp - 0x68]
mov ecx, dword [esi + 0x28]
mov eax, dword [esi + 0x2c]
and ecx, dword [edx + 0x50]
and eax, dword [edx + 0x54]
or ecx, eax
jne 0x540206
push 0x10
push dword [ebp - 0xe4]
push dword [esi]
push dword [ebp - 0xc8]
call fcn.00511920
add esp, 0x10
or word [esi + 0xa], 4
inc edi
add esi, 0x30
cmp edi, dword [ebx + 0xc]
jl 0x5401d0
mov ecx, dword [ebp - 0x68]
mov eax, dword [ecx + 0x50]
mov edx, dword [ecx + 0x54]
mov ecx, dword [ebp - 4]
pop edi
pop esi
xor ecx, ebp
pop ebx
call fcn.0048bb19
mov esp, ebp
pop ebp
ret