Function at 0x53de40
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 0x53deee
mov ecx, dword [ebp - 0x94]
add ecx, 0x1f0
mov ebx, dword [ebp - 0x98]
cmp dword [ecx], ebx
mov ebx, dword [ebp - 0xd0]
je 0x53dfd9
inc eax
add ecx, 4
cmp eax, edx
jl 0x53ded2
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.0048c280
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 0x53df73
test byte [edx + 0x24], 8
je 0x53df73
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.0052e060
mov edx, dword [ebp - 0xd8]
add esp, 0x10
mov ecx, esi
test esi, esi
jle 0x53df9d
imul eax, esi, 0x58
mov esi, dword [ebp - 0x94]
add esi, 0x2f0
add eax, esi
lea ebx, [ebx]
cmp dword [eax], 0
jne 0x53df9d
dec ecx
sub eax, 0x58
test ecx, ecx
jg 0x53df90
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 0x53e085
mov ecx, dword [ebx + 0x6c]
mov esi, dword [edx + 0x1c]
mov edx, dword [edx + 0x18]
cmp dword [ebx + 0x70], ecx
jg 0x53dff3
push edx
push 0
push esi
push 0xd
push ebx
call fcn.004efbc0
add esp, 0x14
jmp 0x53e01e
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 0x53def2
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 0x53e048
push 0
push dword [ebp - 0x7c]
push esi
push 0xe
push ebx
call fcn.004efbc0
mov edx, eax
add esp, 0x14
mov eax, dword [ebp - 0x68]
mov dword [eax + 0x3c], edx
mov byte [eax + 0x35], 0xb
jmp 0x53fd69
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 0x53fd69
mov eax, dword [ebp - 0x88]
mov edx, dword [eax + 0x24]
test edx, 0x400
je 0x53e59b
movzx esi, word [eax + 0x28]
mov dword [ebp - 0x74], esi
lea ecx, [esi + 2]
cmp ecx, 1
jne 0x53e0d7
mov al, byte [edi + 0x13]
test al, al
jne 0x53e0c0
inc dword [edi + 0x2c]
mov eax, dword [edi + 0x2c]
mov edx, eax
mov dword [ebp - 0x8c], eax
jmp 0x53e10a
dec al
mov byte [edi + 0x13], al
movzx eax, al
mov edx, dword [edi + eax*4 + 0x94]
mov dword [ebp - 0x8c], edx
jmp 0x53e10a
mov edx, dword [edi + 0x1c]
mov esi, dword [edi + 0x20]
mov dword [ebp - 0x8c], esi
cmp ecx, edx
jg 0x53e0f6
sub edx, ecx
lea eax, [esi + ecx]
mov dword [edi + 0x1c], edx
mov edx, esi
mov dword [edi + 0x20], eax
jmp 0x53e107
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 0x53e251
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 0x53e22e
test byte [ecx + 0xc], 1
je 0x53e183
mov eax, dword [ebp - 0xac]
push esi
push dword [ebp - 0xa0]
add eax, esi
push eax
push edi
push ecx
push ebx
call fcn.004e1c00
mov edi, dword [edi + 0x10]
add esp, 0x18
mov dword [ebp - 0x80], edi
mov edi, dword [ebp - 0x68]
jmp 0x53e22b
mov eax, dword [ecx]
mov eax, dword [eax + 0x10]
test eax, eax
je 0x53e220
mov cl, byte [eax]
cmp cl, 0xad
jne 0x53e19a
mov cl, byte [eax + 2]
cmp cl, 0xae
jne 0x53e1a6
mov ecx, dword [eax + 0x14]
mov edx, ecx
jmp 0x53e1b1
cmp cl, 0x88
jne 0x53e220
mov ecx, dword [eax + 0x14]
mov edx, dword [ecx + 0x1c]
cmp dword [edx], 1
jle 0x53e220
test dword [eax + 4], 0x800
je 0x53e21a
mov edi, dword [ebx + 8]
push eax
push ebx
call fcn.00509960
mov ecx, dword [edi + 0x6c]
add esp, 8
mov edx, eax
cmp dword [edi + 0x70], ecx
jg 0x53e1ea
push 0
push esi
push edx
push 0x4d
push edi
call fcn.004efbc0
mov edi, dword [ebp - 0x68]
add esp, 0x14
jmp 0x53e22b
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 0x53e22b
push esi
push dword [ecx + 4]
jmp 0x53e222
push esi
push eax
push ebx
call fcn.0050eb60
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 0x53e140
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 0x53e279
push 0
push edi
push edx
push 0x45
push ebx
call fcn.004efbc0
add esp, 0x14
jmp 0x53e2a4
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 0x53e2c0
push 0
push edx
push esi
push 0x45
push ebx
call fcn.004efbc0
add esp, 0x14
jmp 0x53e2f1
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.0052e110
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 0x53fd69
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 0x53e3bc
mov eax, dword [ebp - 0x88]
mov ax, word [eax + 0x1e]
shr ax, cl
test al, 1
je 0x53e3b6
push edi
push dword [ebp - 0x68]
call fcn.004e62a0
add esp, 8
jmp 0x53e57b
mov ecx, dword [ebp - 0x84]
test dx, dx
je 0x53e581
mov eax, dword [edi]
mov ecx, dword [eax + 0xc]
mov al, byte [ecx]
cmp al, 0xad
jne 0x53e3d3
mov al, byte [ecx + 2]
cmp al, 0xae
jne 0x53e3dc
mov eax, dword [ecx + 0x14]
jmp 0x53e3e6
cmp al, 0x88
jne 0x53e3ef
mov eax, dword [ecx + 0x14]
mov eax, dword [eax + 0x1c]
cmp dword [eax], 1
jne 0x53e57b
mov eax, dword [ebp - 0xcc]
cmp byte [eax + 0x51], 0
jne 0x53e49a
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 0x53e414
mov ecx, dword [ebx + 0x6c]
dec ecx
mov eax, dword [ebx]
cmp byte [eax + 0x51], 0
je 0x53e423
mov eax, 0x5b6fa4
jmp 0x53e42c
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 0x53e45c
push edx
push esi
push dword [ebp - 0x6c]
movzx eax, al
push eax
push ebx
call fcn.004efbc0
add esp, 0x14
jmp 0x53e49a
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.0050c3b0
mov esi, eax
add esp, 0xc
test esi, esi
je 0x53e578
push 0x34
push 0
push esi
call fcn.0048e280
or eax, 0xffffffff
mov byte [esi], 0x35
push esi
mov word [esi + 0x22], ax
call fcn.004e9dc0
mov ecx, dword [ebp - 0xc8]
add esp, 0x10
mov eax, dword [ecx]
mov eax, dword [eax + 0x78]
cmp dword [esi + 0x18], eax
jle 0x53e4f4
push eax
push str.Expression_tree_is_too_large__maximum_depth__d_
push ecx
call fcn.0050e100
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.0050c3b0
mov edi, eax
add esp, 0xc
test edi, edi
je 0x53e53b
push 0x34
push 0
push edi
call fcn.0048e280
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 0x53e562
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.005118c0
add esp, 0x10
push esi
push dword [ebp - 0xcc]
mov dword [esi + 0xc], 0
call fcn.005115e0
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 0x53e370
jmp 0x53fd69
test dl, 5
setne cl
bt edx, 8
setb al
test al, cl
je 0x53e676
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.004e1c00
mov ecx, dword [ebp - 0x6c]
mov edx, eax
add esp, 0x18
cmp edx, ecx
je 0x53e5fb
test ecx, ecx
je 0x53e5fb
mov al, byte [edi + 0x13]
cmp al, 8
jae 0x53e5fb
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 0x53e61e
push edx
push edi
push dword [ebp - 0x98]
push 0x1f
push ebx
call fcn.004efbc0
add esp, 0x14
jmp 0x53e651
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 0x53fd69
or word [esi + 0xa], 4
jmp 0x53fd69
mov eax, edx
and eax, 0x102
cmp eax, 0x102
jne 0x53e8df
xor esi, esi
mov dword [ebp - 0xb8], 0xad
xor ecx, ecx
mov dword [ebp - 0xac], 0
test dl, 0x20
je 0x53e6b9
mov eax, dword [ebp - 0x88]
mov dword [ebp - 0x6c], 4
mov eax, dword [eax + 0x30]
mov ecx, dword [eax]
jmp 0x53e6bc
mov dword [ebp - 0x6c], ecx
test dl, 0x10
je 0x53e6d0
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 0x53e7b5
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.00512250
add esp, 4
test eax, eax
je 0x53e74f
mov al, byte [edi + 0x13]
test al, al
jne 0x53e71c
inc dword [edi + 0x2c]
mov esi, dword [edi + 0x2c]
jmp 0x53e72b
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.004e21e0
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 0x53e784
lea eax, [ebp - 0xbc]
push eax
push dword [ebp - 0x80]
push edi
call fcn.00510ff0
push esi
push dword [ebp - 0x68]
mov dword [ebp - 0x80], eax
call fcn.004e62a0
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.0052e0c0
add esp, 0x14
test esi, esi
je 0x53e7d4
mov al, byte [edi + 0x13]
cmp al, 8
jae 0x53e7d4
movzx eax, al
mov dword [edi + eax*4 + 0x94], esi
inc byte [edi + 0x13]
jmp 0x53e7d4
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.0052e060
add esp, 0x10
mov esi, dword [ebp - 0x84]
test esi, esi
je 0x53e865
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.004e21e0
mov edx, dword [ebp - 0x6c]
mov eax, dword [edx + 0x10]
push eax
mov dword [ebp - 0x6c], eax
call fcn.00512250
add esp, 0x14
test eax, eax
jne 0x53e837
mov al, byte [edx]
cmp al, 0x38
je 0x53e81f
cmp al, 0x36
jne 0x53e837
mov eax, dword [ebp - 0xa0]
xor eax, 1
lea edx, [eax*2 + 0x37]
mov dword [ebp - 0xb8], edx
jmp 0x53e84a
mov eax, dword [ebp - 0xa0]
lea eax, [eax*2 + 0x36]
mov dword [ebp - 0xb8], eax
push dword [ebp - 0x6c]
call fcn.00512250
add esp, 4
test eax, eax
jne 0x53e865
push esi
push dword [ebp - 0x68]
call fcn.004e62a0
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 0x53fd69
inc dword [edi + 0x2c]
mov esi, dword [edi + 0x2c]
push esi
push eax
push 0x7f
push ebx
call fcn.0052e060
push esi
push dword [ebp - 0x7c]
push dword [ebp - 0xac]
push dword [ebp - 0xb8]
push ebx
call fcn.0052e0c0
mov eax, dword [ebx + 0x6c]
add esp, 0x24
test eax, eax
jle 0x53fd69
lea ecx, [eax + eax*4]
mov edx, 0x53
mov eax, dword [ebx + 0x68]
mov word [eax + ecx*4 - 0x12], dx
jmp 0x53fd69
test edx, 0x200
je 0x53f3d0
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 0x53e97b
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 0x53ea79
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 0x53ea18
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.0052e060
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 0x53ea79
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 0x53ea58
mov eax, dword [edx + 0xc]
lea ecx, [ecx + ecx*4]
mov eax, dword [eax + 4]
cmp byte [eax + ecx*4 + 0xc], 0
je 0x53ea6a
mov ecx, dword [ebp - 0xd4]
mov eax, dword [ebp - 0xac]
mov esi, eax
mov edx, dword [ebp - 0x7c]
cmp ecx, 0xfffffffe
jne 0x53ea79
jmp 0x53ea70
mov eax, dword [ebp - 0xac]
mov edx, dword [ebp - 0x7c]
mov esi, eax
mov byte [ebp - 0x6d], 1
test dl, 0x30
jne 0x53eac0
test edx, 0x80000
je 0x53eac0
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 0x53eab4
push ecx
push 0
push 0x45
push ebx
call fcn.0052e060
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 0x53eaf4
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 0x53eb02
mov eax, dword [ebp - 0x80]
cmp dword [ebp - 0xa0], 0
je 0x53eb45
cmp dx, ax
jne 0x53eb45
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.004e1280
mov edx, dword [ebp - 0x9c]
add esp, 0x14
mov dword [ebp - 0x74], eax
mov eax, dword [ebp - 0x7c]
test eax, eax
je 0x53ebde
cmp word [ebp - 0xc4], 0
je 0x53ebde
add eax, edx
jne 0x53eb82
xor ecx, ecx
mov dword [ebp - 0x78], ecx
jmp 0x53ebde
mov ecx, eax
lea edx, [ecx + 1]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x53eb87
mov eax, dword [ebp - 0xcc]
sub ecx, edx
push 0
lea esi, [ecx + 1]
push esi
test eax, eax
je 0x53ebb0
push eax
call fcn.0050c3b0
mov ecx, eax
add esp, 0xc
mov dword [ebp - 0x78], ecx
jmp 0x53ebbd
call fcn.0051c8d0
add esp, 8
mov dword [ebp - 0x78], eax
mov ecx, eax
test ecx, ecx
je 0x53ebd5
mov eax, dword [ebp - 0x9c]
add eax, dword [ebp - 0x7c]
push esi
push eax
push ecx
call fcn.0048d780
add esp, 0xc
mov edx, dword [ebp - 0x9c]
mov esi, dword [ebp - 0x68]
cmp dword [ebp - 0x8c], 0
je 0x53ebf2
mov ecx, dword [esi + 0x28]
mov dword [ebp - 0x84], ecx
jmp 0x53ebfb
mov eax, dword [esi + 0x10]
mov dword [ebp - 0x84], eax
mov eax, dword [ebp - 0xc0]
test eax, eax
je 0x53ec15
test byte [eax + 0xc], 0x28
mov dword [ebp - 0xb8], 0
je 0x53ec1f
mov dword [ebp - 0xb8], 1
mov ecx, dword [ebp - 0x90]
test ecx, ecx
je 0x53ec39
test byte [ecx + 0xc], 0x28
mov dword [ebp - 0xac], 0
je 0x53ec43
mov dword [ebp - 0xac], 1
test eax, eax
jne 0x53ec6b
cmp word [ebp - 0x80], ax
jne 0x53ec6b
mov dword [ebp - 0x80], eax
cmp byte [ebp - 0x6d], 0
mov esi, edx
je 0x53ed35
mov dword [ebp - 0xb8], 0
jmp 0x53ed3e
mov dword [ebp - 0x80], 1
mov dword [ebp - 0x6c], edx
test eax, eax
je 0x53ec50
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.004e21e0
push dword [ebp - 0xc0]
push dword [ebp - 0x68]
push ebx
call fcn.0054e420
push esi
call fcn.0050e9f0
add esp, 0x20
test eax, eax
je 0x53eccc
push dword [ebp - 0x84]
mov eax, dword [ebp - 0x9c]
add eax, dword [ebp - 0x74]
push eax
push 0x32
push ebx
call fcn.0052e060
add esp, 0x10
mov ecx, dword [ebp - 0x7c]
test ecx, ecx
je 0x53ecef
mov eax, dword [ebp - 0x9c]
add eax, ecx
mov ecx, dword [ebp - 0xbc]
push eax
movzx eax, cx
push eax
push esi
call fcn.005469a0
add esp, 0xc
mov ecx, dword [ebp - 0xbc]
movzx eax, cx
add dword [ebp - 0x6c], eax
push esi
call fcn.00512250
add esp, 4
test eax, eax
jne 0x53ed22
push dword [ebp - 0xc0]
push dword [ebp - 0x68]
call fcn.004e62a0
mov esi, dword [ebp - 0x6c]
add esp, 8
mov byte [ebp - 0x6d], 0
jmp 0x53ed59
mov esi, dword [ebp - 0x6c]
mov dword [ebp - 0xb8], 1
mov byte [ebp - 0x6d], 0
jmp 0x53ed59
cmp dword [ebp - 0x8c], 0
je 0x53ed59
mov eax, dword [ebp - 0x74]
add eax, edx
push eax
push 0
push 0x48
push ebx
call fcn.0052e060
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 0x53edaa
test eax, eax
jle 0x53ed81
cmp byte [ecx], 0x41
jg 0x53ed81
dec eax
inc edx
inc ecx
test eax, eax
jg 0x53ed75
cmp eax, 1
jle 0x53ed93
cmp byte [eax + ecx - 1], 0x41
jg 0x53ed93
dec eax
cmp eax, 1
jg 0x53ed86
test eax, eax
jle 0x53edaa
push eax
push ecx
push 0
push eax
push edx
push 0x5a
push dword [edi + 8]
call fcn.0052e110
add esp, 0x1c
mov ecx, dword [ebp - 0x88]
movzx eax, word [ecx + 0x2a]
test ax, ax
je 0x53edc1
cmp esi, eax
je 0x53ee7e
test dword [ecx + 0x24], 0x40000
je 0x53eddb
push dword [ebp - 0xa8]
push 0x76
push ebx
call fcn.0052e000
add esp, 0xc
mov eax, dword [ebp - 0x8c]
test eax, eax
je 0x53edf3
push eax
push 1
push 0x45
push ebx
call fcn.0052e060
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 + 0x58cc24]
push eax
push ebx
call fcn.0052e200
mov eax, dword [ebp - 0x8c]
add esp, 0x18
test eax, eax
je 0x53ee84
mov eax, dword [ebx + 0x6c]
add eax, 2
push eax
push 0
push 0xb
push ebx
call fcn.0052e060
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 + 0x58cc26]
push eax
push ebx
call fcn.0052e200
add esp, 0x28
mov eax, dword [ebp - 0x8c]
mov ecx, dword [ebp - 0x90]
test ecx, ecx
je 0x53ef86
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.004e21e0
push dword [ebp - 0x90]
push dword [ebp - 0x68]
push ebx
call fcn.0054e420
push dword [ebp - 0x6c]
call fcn.0050e9f0
add esp, 0x20
test eax, eax
je 0x53eee5
push dword [ebp - 0x84]
push esi
push 0x32
push ebx
call fcn.0052e060
add esp, 0x10
mov eax, dword [ebp - 0x78]
test eax, eax
je 0x53ef49
mov edx, dword [ebp - 0xc4]
push eax
movzx eax, dx
push eax
push dword [ebp - 0x6c]
call fcn.005469a0
mov eax, dword [ebp - 0xc4]
add esp, 0xc
mov ecx, dword [ebp - 0x78]
movzx edx, ax
mov eax, edx
test edx, edx
je 0x53ef20
cmp byte [ecx], 0x41
jg 0x53ef20
dec eax
inc esi
inc ecx
test eax, eax
jg 0x53ef14
cmp eax, 1
jle 0x53ef32
cmp byte [eax + ecx - 1], 0x41
jg 0x53ef32
dec eax
cmp eax, 1
jg 0x53ef25
test eax, eax
jle 0x53ef49
push eax
push ecx
push 0
push eax
push esi
push 0x5a
push dword [edi + 8]
call fcn.0052e110
add esp, 0x1c
mov edx, dword [ebp - 0xc4]
push dword [ebp - 0x6c]
movzx eax, dx
add dword [ebp - 0x9c], eax
call fcn.00512250
add esp, 4
test eax, eax
jne 0x53ef7a
push dword [ebp - 0x90]
push dword [ebp - 0x68]
call fcn.004e62a0
add esp, 8
jmp 0x53efba
mov dword [ebp - 0xac], 1
jmp 0x53efba
cmp byte [ebp - 0xa1], 0
je 0x53efba
test eax, eax
jne 0x53efb4
mov eax, dword [ebp - 0x9c]
add eax, dword [ebp - 0x74]
push eax
push 0
push 0x48
push ebx
call fcn.0052e060
add esp, 0x10
mov dword [ebp - 0xac], 0
inc dword [ebp - 0x9c]
mov eax, dword [ebp - 0x7c]
test eax, eax
je 0x53efd0
push eax
push dword [ebp - 0xcc]
call fcn.0050c2a0
add esp, 8
mov esi, dword [ebp - 0x78]
test esi, esi
je 0x53f08a
mov ecx, dword [ebp - 0xcc]
test ecx, ecx
je 0x53f035
cmp dword [ecx + 0x1f8], 0
je 0x53effd
push esi
push ecx
call fcn.004f2e60
add esp, 8
jmp 0x53f08a
cmp esi, dword [ecx + 0x14c]
jae 0x53f035
cmp esi, dword [ecx + 0x144]
jb 0x53f01d
mov eax, dword [ecx + 0x140]
mov dword [esi], eax
mov dword [ecx + 0x140], esi
jmp 0x53f08a
cmp esi, dword [ecx + 0x148]
jb 0x53f035
mov eax, dword [ecx + 0x138]
mov dword [esi], eax
mov dword [ecx + 0x138], esi
jmp 0x53f08a
cmp dword [0x5ac1c8], 0
je 0x53f080
mov eax, dword [0x5b6e80]
test eax, eax
je 0x53f051
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 0x53f08a
push eax
call dword [0x5ac220]
jmp 0x53f087
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 0x53f0e8
mov ecx, dword [ebp - 0x8c]
test ecx, ecx
je 0x53f0ba
mov eax, dword [ebx + 0x6c]
add eax, 3
push eax
push ecx
push 0x14
push ebx
call fcn.0052e060
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 + 0x58cc2c]
push dword [ebp - 0xa8]
push eax
push ebx
call fcn.0052e200
add esp, 0x18
mov ecx, dword [ebp - 0x8c]
test ecx, ecx
je 0x53f136
mov eax, dword [ebx + 0x6c]
add eax, 2
push eax
push ecx
push 0x12
push ebx
call fcn.0052e060
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 + 0x58cc2c]
push eax
push ebx
call fcn.0052e200
add esp, 0x28
jmp 0x53f13c
mov esi, dword [ebp - 0xa8]
mov ecx, dword [ebp - 0x88]
mov eax, dword [ecx + 0x24]
test eax, 0x40000
je 0x53f163
push 1
push esi
push 0x76
push ebx
call fcn.0052e060
mov ecx, dword [ebp - 0x88]
add esp, 0x10
mov eax, dword [ecx + 0x24]
test al, 0x40
je 0x53f189
mov eax, dword [ebp - 0x94]
test byte [eax + 0x28], 0x20
jne 0x53f189
mov ecx, dword [ebp - 0xa8]
mov esi, 1
mov edx, dword [ebp - 0xb4]
jmp 0x53f338
mov edx, dword [ebp - 0xb4]
xor esi, esi
mov eax, dword [edx + 0xc]
test byte [eax + 0x24], 0x80
jne 0x53f210
mov eax, dword [ebp - 0x94]
movzx eax, word [eax + 0x28]
test eax, 0x400
jne 0x53f1df
test eax, 0x1000
mov eax, dword [ebp - 0x94]
je 0x53f1c4
cmp byte [eax + 0x2e], 1
je 0x53f1df
cmp word [ecx + 0x28], si
je 0x53f1df
push dword [ebp - 0xa8]
push dword [ebp - 0x98]
push edx
push eax
call fcn.004e19b0
add esp, 0x10
jmp 0x53f326
inc dword [edi + 0x2c]
mov esi, dword [edi + 0x2c]
push esi
push dword [ebp - 0xa8]
push 0x86
push ebx
call fcn.0052e060
push esi
push 0
push dword [ebp - 0x98]
push 0x20
push ebx
call fcn.0052e0c0
add esp, 0x24
jmp 0x53f324
mov ecx, dword [ebp - 0xa8]
cmp dword [ebp - 0x98], ecx
je 0x53f332
push eax
call fcn.005237b0
mov dword [ebp - 0x6c], eax
movzx eax, word [eax + 0x32]
push eax
push edi
call fcn.00517f60
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 0x53f308
mov edi, edx
nop
mov eax, dword [ebp - 0xb4]
xor ecx, ecx
movzx edx, word [eax + 0x34]
test edx, edx
je 0x53f290
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 0x53f2b3
inc ecx
add eax, 2
cmp ecx, edx
jl 0x53f283
or eax, 0xffffffff
mov ecx, dword [ebx + 0x6c]
movsx edx, ax
cmp dword [ebx + 0x70], ecx
jg 0x53f2b8
push edi
push edx
push dword [ebp - 0xa8]
push 0x59
push ebx
call fcn.004efbc0
add esp, 0x14
jmp 0x53f2e5
movzx eax, cx
jmp 0x53f293
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 0x53f260
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.0052e200
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 0x53f379
test byte [eax + 0x28], 0x20
jne 0x53f357
push eax
push ecx
push dword [ebp - 0x98]
push edx
call fcn.0054de40
add esp, 0x10
mov ecx, dword [ebp - 0xb4]
mov eax, dword [ecx + 0x24]
test eax, eax
je 0x53f37f
push dword [ebp - 0xdc]
push dword [ebp - 0x98]
push eax
call fcn.0054da00
add esp, 0xc
mov ecx, dword [ebp - 0xb4]
mov edx, dword [ebp - 0x88]
test dword [edx + 0x24], 0x1000
je 0x53f394
mov byte [edi + 0x35], 0xad
jmp 0x53f3a3
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 0x53f3be
mov byte [edi + 0x37], 1
xor eax, eax
test esi, esi
cmove eax, ecx
mov dword [ebp - 0xd4], eax
jmp 0x53fd6b
test edx, 0x2000
je 0x53fd1e
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 0x53f57d
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 0x53f49d
push ecx
call fcn.0050c3b0
mov ecx, eax
add esp, 0xc
mov dword [ebp - 0x90], ecx
jmp 0x53f4ad
call fcn.0051c8d0
add esp, 8
mov dword [ebp - 0x90], eax
mov ecx, eax
test ecx, ecx
jne 0x53f4c8
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.0048babc
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 0x53f546
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 0x53f511
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 0x53f5c3
test byte [ecx + 0x24], 0x80
jne 0x53f58e
inc dword [edi + 0x2c]
mov eax, dword [edi + 0x2c]
push eax
push 0
push 0x48
push ebx
mov dword [ebp - 0x7c], eax
call fcn.0052e060
add esp, 0x10
jmp 0x53f5ba
mov eax, dword [ebp - 0x94]
mov eax, dword [eax + 4]
mov dword [ebp - 0x90], eax
jmp 0x53f552
push ecx
call fcn.005237b0
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.0052e060
push esi
push edi
call fcn.0053a640
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 0x53f5eb
push 0
push dword [ebp - 0x80]
push 0
push 0x45
push ebx
call fcn.004efbc0
add esp, 0x14
mov dword [ebp - 0x88], eax
jmp 0x53f61d
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 0x53f706
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 0x53f696
test byte [eax + 0xa], 6
jne 0x53f696
mov edi, 0x1fff
test word [eax + 0xc], di
mov edi, dword [ebp - 0xc8]
je 0x53f696
mov eax, dword [eax]
test eax, eax
je 0x53f67b
push 0
push 0
push eax
push dword [ebp - 0xcc]
call fcn.004e8ed0
add esp, 0x10
jmp 0x53f67d
xor eax, eax
push eax
push ebx
push edi
call fcn.0050e630
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 0x53f640
mov dword [ebp - 0xc0], ebx
test ebx, ebx
mov ebx, dword [ebp - 0xd0]
je 0x53f706
mov ecx, dword [edi]
mov eax, 0x34
cmp ax, word [ecx + 0x11c]
jbe 0x53f847
cmp dword [ecx + 0x118], 0
jne 0x53f6e3
inc dword [ecx + 0x12c]
jmp 0x53f8b5
cmp byte [ecx + 0x51], 0
je 0x53f8b5
xor esi, esi
mov eax, dword [ebp - 0xc0]
push eax
push dword [edi]
call fcn.005115e0
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.00537080
mov ecx, dword [ebp - 0x8c]
xor eax, eax
add esp, 0xc
mov dword [ebp - 0xbc], eax
cmp dword [ecx + 0xc], eax
jle 0x53fbcf
mov edx, dword [ebp - 0x98]
lea eax, [eax + eax*2]
shl eax, 4
add eax, dword [ecx + 0x14]
cmp dword [eax + 0x14], edx
je 0x53f76a
test word [eax + 0xc], si
je 0x53fbb9
mov esi, dword [eax]
xor eax, eax
mov dword [ebp - 0x84], eax
mov eax, dword [ebp - 0xc0]
test eax, eax
je 0x53f783
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.00537080
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.0053d2b0
add esp, 0x2c
mov dword [ebp - 0xe0], eax
test eax, eax
je 0x53fba8
push 0
lea ecx, [eax + 0x2f0]
push ecx
push esi
push edi
call fcn.00540d10
mov eax, dword [ebp - 0x94]
add esp, 0x10
test byte [eax + 0x28], 0x10
jne 0x53fa82
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 0x53f91f
mov edx, dword [ebp - 0x78]
push edx
push dword [ebp - 0x98]
push 0x7f
push ebx
call fcn.0052e060
push esi
push dword [ebp - 0x78]
push 0
push dword [ebp - 0x7c]
push 0x2d
push ebx
call fcn.0052e200
add esp, 0x28
mov esi, eax
jmp 0x53fa88
mov esi, dword [ecx + 0x140]
test esi, esi
je 0x53f861
mov eax, dword [esi]
mov dword [ecx + 0x140], eax
inc dword [ecx + 0x128]
jmp 0x53f8c4
mov esi, dword [ecx + 0x13c]
test esi, esi
je 0x53f87b
mov eax, dword [esi]
mov dword [ecx + 0x13c], eax
inc dword [ecx + 0x128]
jmp 0x53f8c4
mov esi, dword [ecx + 0x138]
test esi, esi
je 0x53f895
mov eax, dword [esi]
mov dword [ecx + 0x138], eax
inc dword [ecx + 0x128]
jmp 0x53f8c4
mov esi, dword [ecx + 0x134]
test esi, esi
je 0x53f8af
mov eax, dword [esi]
inc dword [ecx + 0x128]
mov dword [ecx + 0x134], eax
jmp 0x53f8c4
inc dword [ecx + 0x130]
push 0
push 0x34
push ecx
call fcn.004e5440
mov esi, eax
add esp, 0xc
test esi, esi
je 0x53f6ef
push 0x34
push 0
push esi
call fcn.0048e280
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.004e9dc0
mov eax, dword [edi]
add esp, 0x10
mov eax, dword [eax + 0x78]
cmp dword [esi + 0x18], eax
jle 0x53f700
push eax
push str.Expression_tree_is_too_large__maximum_depth__d_
push edi
call fcn.0050e100
add esp, 0xc
jmp 0x53f700
mov esi, dword [eax + 8]
test esi, esi
je 0x53f936
mov eax, dword [esi + 0x38]
and al, 3
cmp al, 2
je 0x53f936
mov esi, dword [esi + 0x14]
test esi, esi
jne 0x53f926
movzx eax, word [esi + 0x32]
push eax
push edi
mov dword [ebp - 0xac], eax
call fcn.00517f60
xor edi, edi
mov dword [ebp - 0xc4], eax
add esp, 8
cmp dword [ebp - 0xac], edi
jbe 0x53f990
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.0050eed0
mov eax, dword [ebp - 0xc4]
inc edi
add esp, 0x14
cmp edi, dword [ebp - 0xac]
jl 0x53f960
mov edi, dword [ebp - 0xa8]
mov esi, dword [ebp - 0xac]
test edi, edi
je 0x53f9ba
push esi
push eax
push 0
push dword [ebp - 0x7c]
push 0x1e
push ebx
call fcn.0052e200
add esp, 0x18
mov dword [ebp - 0x84], eax
test edi, edi
js 0x53fa40
mov ecx, dword [ebx + 0x6c]
mov edi, dword [ebp - 0xc4]
cmp dword [ebx + 0x70], ecx
jg 0x53f9e0
push dword [ebp - 0x78]
push esi
push edi
push 0x5b
push ebx
call fcn.004efbc0
add esp, 0x14
jmp 0x53fa0a
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.0052e200
add esp, 0x18
cmp dword [ebp - 0xa8], 0
je 0x53fa40
mov eax, dword [ebx + 0x6c]
test eax, eax
jle 0x53fa40
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 0x53fa71
mov ecx, dword [ebp - 0xc4]
test ecx, ecx
je 0x53fa82
mov al, byte [edi + 0x13]
mov esi, dword [ebp - 0x84]
cmp al, 8
jae 0x53fa88
movzx eax, al
mov dword [edi + eax*4 + 0x94], ecx
inc byte [edi + 0x13]
jmp 0x53fa88
cmp esi, dword [edi + 0x1c]
jle 0x53fa82
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 0x53faa5
push 0
push dword [ebp - 0x6c]
push dword [ebp - 0x80]
push 0xc
push ebx
call fcn.004efbc0
add esp, 0x14
jmp 0x53fad6
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 0x53fb00
mov eax, dword [ebx]
mov edx, dword [ebx + 0x6c]
cmp byte [eax + 0x51], 0
je 0x53faec
mov eax, 0x5b6fa4
jmp 0x53fafd
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 0x53fb5e
cmp dword [ebp - 0xbc], 0
je 0x53fb3e
mov eax, dword [ebp - 0x74]
cmp dword [ecx + 0x20], eax
jne 0x53fb5e
mov eax, dword [ebp - 0xb8]
test byte [eax + 0x24], 0x80
je 0x53fb56
mov eax, dword [ecx + 0x20]
mov eax, dword [eax + 0x38]
and al, 3
cmp al, 2
je 0x53fb5e
mov esi, dword [ecx + 0x20]
mov dword [ebp - 0x74], esi
jmp 0x53fb65
mov dword [ebp - 0x74], 0
push edx
call fcn.005401d0
mov ecx, dword [edi + 0xd4]
add esp, 4
test ecx, ecx
jne 0x53fb7c
xor eax, eax
jmp 0x53fba2
mov edx, dword [edi + 8]
test ecx, ecx
jns 0x53fb87
mov ecx, dword [edx + 0x6c]
dec ecx
mov eax, dword [edx]
cmp byte [eax + 0x51], 0
je 0x53fb96
mov eax, 0x5b6fa4
jmp 0x53fb9f
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 0x53f752
mov ecx, dword [edi + 0xd4]
test ecx, ecx
jne 0x53fbdd
xor eax, eax
jmp 0x53fc03
mov edx, dword [edi + 8]
test ecx, ecx
jns 0x53fbe8
mov ecx, dword [edx + 0x6c]
dec ecx
mov eax, dword [edx]
cmp byte [eax + 0x51], 0
je 0x53fbf7
mov eax, 0x5b6fa4
jmp 0x53fc00
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 0x53fc1f
mov eax, dword [ebp - 0x9c]
mov dword [edi + 8], eax
mov eax, dword [ebp - 0xc0]
mov esi, dword [ebp - 0xcc]
test eax, eax
je 0x53fc40
push eax
push esi
mov dword [eax + 0xc], 0
call fcn.005115e0
add esp, 8
mov eax, dword [ebx]
mov edx, dword [ebx + 0x6c]
cmp byte [eax + 0x51], 0
je 0x53fc52
mov eax, 0x5b6fa4
jmp 0x53fc69
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 0x53fc89
push 0
push edx
push 0
push 0xb
push ebx
call fcn.004efbc0
add esp, 0x14
jmp 0x53fcbe
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 0x53fcdb
push edx
push ebx
push ecx
call fcn.004fd7d0
add esp, 0xc
jmp 0x53fce4
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 0x53fd04
mov eax, dword [ebp - 0x90]
test eax, eax
je 0x53fd04
push eax
push esi
call fcn.0050c2a0
add esp, 8
cmp dword [ebp - 0xb4], 0
jne 0x53fd69
push dword [ebp - 0xa0]
push edi
call fcn.004e62a0
add esp, 8
jmp 0x53fd69
mov eax, dword [ebp - 0xd8]
test byte [eax + 0x28], 0x20
je 0x53fd33
mov eax, dword [ebp - 0x68]
mov byte [eax + 0x35], 0xad
jmp 0x53fd69
mov ecx, dword [ebp - 0xa0]
mov edi, dword [ebp - 0x68]
push esi
mov al, byte [ecx + 0x58cc30]
mov byte [edi + 0x35], al
mov eax, dword [ebp - 0x98]
push eax
mov dword [edi + 0x38], eax
movzx eax, byte [ecx + 0x58cc34]
push eax
push ebx
call fcn.0052e060
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 0x53ff92
lea esp, [esp]
movzx edx, word [esi + 0xa]
xor edi, edi
test dl, 6
jne 0x53ff68
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 0x53fdda
mov eax, dword [ebp - 0x94]
or dword [eax + 0x30], 2
jmp 0x53ff65
mov eax, dword [ebp - 0xd8]
mov ecx, dword [esi]
mov dword [ebp - 0xe8], ecx
test byte [eax + 0x24], 8
je 0x53fdf8
test byte [ecx + 4], 1
je 0x53ff65
mov eax, dword [ebp - 0x6c]
cmp eax, 1
jne 0x53fe7a
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], 0x4e92c0
mov dword [ebp - 0xec], eax
test ecx, ecx
je 0x53fe68
push ecx
lea eax, [ebp - 0x104]
push eax
call fcn.0054d870
mov edx, dword [ebp - 0xf0]
add esp, 8
test dx, dx
je 0x53fe7f
mov eax, 2
mov dword [ebp - 0x78], eax
jmp 0x53ff68
cmp eax, 3
jge 0x53fea3
movzx edx, word [esi + 0xa]
test edx, 0x1000
je 0x53fea3
mov eax, dword [ebp - 0x78]
test eax, eax
jne 0x53ff68
mov eax, 3
mov dword [ebp - 0x78], eax
jmp 0x53ff68
test edx, 0x200
je 0x53ff1a
mov eax, dword [ebp - 0x68]
mov eax, dword [eax + 0x2c]
test eax, eax
je 0x53ff1a
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 0x53fee4
push 0
push 0
push edx
push eax
push ebx
call fcn.004efbc0
add esp, 0x14
mov edi, eax
jmp 0x53ff1a
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.005118c0
add esp, 0x10
test edi, edi
je 0x53ff60
mov eax, dword [ebx]
mov edx, dword [ebx + 0x6c]
cmp byte [eax + 0x51], 0
je 0x53ff4c
mov eax, 0x5b6fa4
jmp 0x53ff5d
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 0x53fda0
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 0x53fd80
test edx, edx
jle 0x540103
mov ebx, dword [ebp - 0xc8]
add esi, 0xc
mov dword [ebp - 0x7c], esi
mov edi, 0xb
test byte [esi - 2], 6
jne 0x5400e8
movzx eax, word [esi]
test al, 0x82
setne cl
bt ax, di
setb al
test al, cl
je 0x5400e8
mov ecx, dword [ebp - 0x98]
cmp dword [esi + 8], ecx
jne 0x5400e8
mov eax, dword [ebp - 0xd8]
test byte [eax + 0x24], 8
jne 0x5400e8
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 0x54007c
mov word [ebp - 0x1c], ax
lea eax, [ebp - 0x64]
push eax
call fcn.00552170
mov esi, eax
add esp, 4
test esi, esi
je 0x54007c
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 0x54006a
or edx, dword [esi + 0x24]
jne 0x540065
test byte [esi + 0xc], 0x82
jne 0x54007e
test edi, edi
cmove edi, esi
lea eax, [ebp - 0x64]
push eax
call fcn.00552170
mov esi, eax
add esp, 4
test esi, esi
jne 0x540048
mov esi, edi
test esi, esi
je 0x5400da
test byte [esi + 0xa], 4
jne 0x5400da
test byte [esi + 0xc], 1
je 0x5400a4
mov eax, dword [esi]
test dword [eax + 4], 0x800
je 0x5400a4
mov eax, dword [eax + 0x14]
mov eax, dword [eax + 0x1c]
cmp dword [eax], 1
jg 0x5400da
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.005118c0
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 0x53ffb6
mov ebx, dword [ebp - 0xd0]
mov ecx, dword [ebp - 0x68]
mov edx, dword [ecx]
test edx, edx
je 0x5401b2
mov eax, dword [ebx + 0x6c]
mov dword [ecx + 0x1c], eax
mov ecx, dword [ebx + 0x6c]
cmp dword [ebx + 0x70], ecx
jg 0x540130
push 0
push edx
push 1
push 0x45
push ebx
call fcn.004efbc0
add esp, 0x14
jmp 0x54015f
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 0x5401af
nop
test byte [esi + 0xa], 6
jne 0x5401a6
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 0x5401a6
push 0x10
push dword [ebp - 0xe4]
push dword [esi]
push dword [ebp - 0xc8]
call fcn.005118c0
add esp, 0x10
or word [esi + 0xa], 4
inc edi
add esi, 0x30
cmp edi, dword [ebx + 0xc]
jl 0x540170
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.0048babc
mov esp, ebp
pop ebp
ret