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

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
sub esp, 0xbc
mov ecx, dword [ebp + 0x10]
push ebx
mov ebx, dword [ebp + 0x18]
lea eax, [ecx + 0x50]
mov dword [esp + 0x74], eax
mov eax, dword [ebx + 0x50]
push esi
mov dword [esp + 0x30], eax
movzx eax, byte [ebx + 0x3c]
push edi
mov edi, dword [ebp + 8]
mov edx, dword [edi]
mov dword [esp + 0x60], edx
lea edx, [eax + eax*8]
mov eax, dword [ecx + 4]
mov esi, dword [eax + edx*8 + 0x34]
lea eax, [eax + edx*8 + 8]
mov dword [esp + 0x80], eax
lea eax, [ecx + 0x1f0]
mov dword [esp + 0x44], 0
mov dword [esp + 0x50], esi
mov dword [esp + 0x6c], eax
call fcn.004946b0
mov ecx, dword [ebp + 0x10]
not eax
and eax, dword [ebp + 0x1c]
not edx
and edx, dword [ebp + 0x20]
mov dword [ebx + 0x58], eax
mov dword [ebx + 0x5c], edx
mov eax, dword [ecx + 0x48]
mov edx, dword [ecx + 0x4c]
mov ecx, dword [ebp + 0x14]
call sub.ntdll.dll__aullshr
and eax, 1
or ecx, 0xffffffff
add dword [edi + 0x38], ecx
mov dword [esp + 0x48], eax
mov eax, dword [edi + 0x38]
mov dword [ebx + 0x10], eax
mov dword [ebx + 0xc], eax
add dword [edi + 0x38], ecx
cmp byte [ebx + 0x3c], 0
mov dword [esp + 0x40], eax
mov eax, dword [edi + 0x38]
mov dword [ebx + 0x18], eax
mov dword [esp + 0x84], eax
jbe 0x48f53e
mov ecx, dword [esp + 0x80]
test byte [ecx + 0x24], 8
je 0x48f53e
add dword [edi + 0x2c], 1
mov eax, dword [edi + 0x2c]
push 0
push eax
mov edx, ebx
mov ebx, dword [ebp + 0xc]
push 0
push 0x47
push ebx
mov dword [edx], eax
call fcn.0043c3f0
add esp, 0x14
jmp 0x48f541
mov ebx, dword [ebp + 0xc]
mov eax, dword [ebp + 0x14]
xor esi, esi
cmp eax, esi
jle 0x48f573
mov edx, dword [ebp + 0x10]
lea ecx, [eax + eax*2]
shl ecx, 5
lea ecx, [ecx + edx + 0x330]
lea ebx, [ebx]
cmp dword [ecx - 0x38], esi
jne 0x48f573
cmp dword [ecx], esi
jne 0x48f573
sub eax, 1
sub ecx, 0x60
cmp eax, esi
jg 0x48f560
mov ecx, dword [ebp + 0x10]
lea eax, [eax + eax*2]
shl eax, 5
mov edx, dword [eax + ecx + 0x304]
mov ecx, dword [esp + 0x80]
mov eax, dword [ecx + 0x28]
test al, 0x20
mov dword [esp + 0x18], edx
je 0x48f643
mov eax, dword [ebx + 0x6c]
cmp dword [ebx + 0x70], eax
mov edi, dword [ecx + 0x1c]
mov ecx, dword [ecx + 0x18]
jg 0x48f5b8
push ecx
push esi
push edi
push 0xb
mov eax, ebx
call fcn.0043c3b0
add esp, 0x10
jmp 0x48f5de
lea edx, [eax + 1]
mov dword [ebx + 0x6c], edx
mov edx, dword [ebx + 0x68]
lea eax, [eax + eax*4]
lea eax, [edx + eax*4]
mov byte [eax], 0xb
mov word [eax + 2], si
mov dword [eax + 4], edi
mov dword [eax + 8], esi
mov dword [eax + 0xc], ecx
mov dword [eax + 0x10], esi
mov byte [eax + 1], 0
mov ecx, dword [ebx + 0x6c]
cmp dword [ebx + 0x70], ecx
jg 0x48f608
mov eax, dword [esp + 0x40]
push esi
push eax
push edi
push 0xc
mov eax, ebx
call fcn.0043c3b0
mov ecx, dword [ebp + 0x18]
add esp, 0x10
mov dword [ecx + 0x44], eax
mov byte [ecx + 0x3d], 9
jmp 0x491270
lea edx, [ecx + 1]
mov dword [ebx + 0x6c], edx
mov edx, dword [ebx + 0x68]
lea eax, [ecx + ecx*4]
lea eax, [edx + eax*4]
mov edx, dword [esp + 0x40]
mov byte [eax], 0xc
mov word [eax + 2], si
mov dword [eax + 4], edi
mov dword [eax + 8], edx
mov dword [eax + 0xc], esi
mov dword [eax + 0x10], esi
mov byte [eax + 1], 0
mov eax, ecx
mov ecx, dword [ebp + 0x18]
mov dword [ecx + 0x44], eax
mov byte [ecx + 0x3d], 9
jmp 0x491270
mov edx, dword [esp + 0x34]
mov edx, dword [edx + 0x2c]
test edx, 0x400
mov dword [esp + 0x28], edx
je 0x48fc9a
mov eax, dword [esp + 0x34]
movzx ecx, word [eax + 0x30]
lea eax, [ecx + 2]
cmp eax, 1
mov dword [esp + 0x28], ecx
jne 0x48f68f
mov al, byte [edi + 0x13]
test al, al
jne 0x48f67e
add dword [edi + 0x2c], 1
mov eax, dword [edi + 0x2c]
jmp 0x48f6be
sub al, 1
movzx edx, al
mov byte [edi + 0x13], al
mov eax, dword [edi + edx*4 + 0xa0]
jmp 0x48f6be
mov ecx, dword [edi + 0x1c]
cmp eax, ecx
mov edx, dword [edi + 0x20]
mov dword [esp + 0x18], edx
jg 0x48f6ad
add edx, eax
sub ecx, eax
mov dword [edi + 0x20], edx
mov edx, dword [esp + 0x18]
mov dword [edi + 0x1c], ecx
jmp 0x48f6b8
mov ecx, dword [edi + 0x2c]
add eax, ecx
lea edx, [ecx + 1]
mov dword [edi + 0x2c], eax
mov ecx, dword [esp + 0x28]
mov eax, edx
cmp ecx, esi
mov edx, dword [ebp + 0x18]
mov edx, dword [edx + 0xc]
mov dword [esp + 0x3c], eax
mov dword [esp + 0x18], edx
mov dword [esp + 0x14], esi
jle 0x48f7ec
add eax, 2
mov dword [esp + 0x38], eax
nop
mov eax, dword [esp + 0x34]
mov ecx, dword [eax + 0x38]
mov edx, dword [esp + 0x14]
mov esi, dword [ecx + edx*4]
test esi, esi
mov dword [esp + 0x10], esi
je 0x48f7d0
test byte [esi + 0xc], 1
je 0x48f788
mov ecx, edx
cmp ecx, 0x1f
jg 0x48f714
mov eax, 1
shl eax, cl
jmp 0x48f716
xor eax, eax
mov ecx, dword [esp + 0x34]
test dword [ecx + 0x28], eax
je 0x48f75f
mov esi, dword [edi + 0x28]
add dword [edi + 0x2c], 1
mov ecx, dword [esp + 0x10]
mov eax, dword [edi + 0x2c]
lea edx, [esi + 1]
mov dword [edi + 0x28], edx
mov edx, dword [ecx]
push esi
push edx
push edi
mov dword [esp + 0x28], eax
call fcn.00454dd0
mov eax, dword [esp + 0x28]
mov ecx, dword [esp + 0x44]
add esp, 0xc
push eax
push ecx
push esi
push 0xae
push ebx
call fcn.0043c3f0
add esp, 0x14
jmp 0x48f7d0
mov edx, dword [esp + 0x38]
mov eax, dword [esp + 0x48]
mov ecx, dword [esp + 0x14]
push edx
mov edx, dword [ebp + 0x18]
push eax
push ecx
push edx
push esi
push edi
call fcn.0048e7c0
mov eax, dword [ebp + 0x18]
mov ecx, dword [eax + 0x10]
add esp, 0x18
mov dword [esp + 0x18], ecx
jmp 0x48f7d0
mov edx, dword [esp + 0x38]
mov eax, dword [esi]
mov eax, dword [eax + 0x10]
push 1
push edx
mov ebx, edi
call fcn.0048f1c0
add esp, 8
cmp byte [esi + 0xf], 0x4a
jne 0x48f7ca
mov ecx, dword [esp + 0x34]
test byte [ecx + 0x1c], 2
je 0x48f7ca
mov edx, dword [ebp + 0x10]
mov eax, dword [edx + 0x10]
mov ecx, dword [eax + 0xc]
mov edx, dword [ebp + 0xc]
push 0
push ecx
push 0
push 0x47
push edx
call fcn.0043c3f0
add esp, 0x14
mov edi, dword [ebp + 8]
mov ebx, dword [ebp + 0xc]
mov eax, dword [esp + 0x14]
add dword [esp + 0x38], 1
add eax, 1
cmp eax, dword [esp + 0x28]
mov dword [esp + 0x14], eax
jl 0x48f6e0
xor esi, esi
mov eax, dword [esp + 0x34]
mov ecx, dword [eax + 0x18]
mov eax, dword [ebx + 0x6c]
cmp dword [ebx + 0x70], eax
jg 0x48f810
mov edx, dword [esp + 0x3c]
push esi
push edx
push ecx
push 0x47
mov eax, ebx
call fcn.0043c3b0
add esp, 0x10
jmp 0x48f83a
lea edx, [eax + 1]
mov dword [ebx + 0x6c], edx
mov edx, dword [ebx + 0x68]
lea eax, [eax + eax*4]
lea eax, [edx + eax*4]
mov dword [eax + 4], ecx
mov ecx, dword [esp + 0x3c]
mov byte [eax], 0x47
mov word [eax + 2], si
mov dword [eax + 8], ecx
mov dword [eax + 0xc], esi
mov dword [eax + 0x10], esi
mov byte [eax + 1], 0
mov ecx, dword [esp + 0x3c]
mov eax, dword [ebx + 0x6c]
add ecx, 1
cmp dword [ebx + 0x70], eax
jg 0x48f85e
mov edx, dword [esp + 0x28]
push esi
push ecx
push edx
push 0x47
mov eax, ebx
call fcn.0043c3b0
add esp, 0x10
jmp 0x48f888
lea edx, [eax + 1]
mov dword [ebx + 0x6c], edx
mov edx, dword [ebx + 0x68]
lea eax, [eax + eax*4]
lea eax, [edx + eax*4]
mov edx, dword [esp + 0x28]
mov byte [eax], 0x47
mov word [eax + 2], si
mov dword [eax + 4], edx
mov dword [eax + 8], ecx
mov dword [eax + 0xc], esi
mov dword [eax + 0x10], esi
mov byte [eax + 1], 0
mov eax, dword [esp + 0x34]
mov ecx, dword [eax + 0x1c]
mov edx, dword [eax + 0x24]
and cl, 1
neg cl
mov dword [esp + 0x30], edx
sbb ecx, ecx
and ecx, 0xfffffffb
add ecx, 0xffffffff
mov dword [esp + 0x2c], ecx
mov ecx, dword [ebx + 0x6c]
cmp dword [ebx + 0x70], ecx
jg 0x48f8cc
mov eax, dword [esp + 0x3c]
mov ecx, dword [esp + 0x18]
mov edx, dword [esp + 0x50]
push eax
push ecx
push edx
push 6
mov eax, ebx
call fcn.0043c3b0
add esp, 0x10
jmp 0x48f900
lea eax, [ecx + 1]
mov dword [ebx + 0x6c], eax
mov eax, dword [ebx + 0x68]
lea edx, [ecx + ecx*4]
lea eax, [eax + edx*4]
mov edx, dword [esp + 0x50]
mov dword [eax + 4], edx
mov edx, dword [esp + 0x18]
mov dword [eax + 8], edx
mov edx, dword [esp + 0x3c]
mov byte [eax], 6
mov word [eax + 2], si
mov dword [eax + 0xc], edx
mov dword [eax + 0x10], esi
mov byte [eax + 1], 0
mov eax, ecx
mov ecx, dword [esp + 0x2c]
mov edx, dword [esp + 0x30]
push ecx
push edx
push eax
push ebx
call fcn.0043cfb0
mov eax, dword [esp + 0x44]
and dword [eax + 0x1c], 0xfffffffe
mov eax, dword [esp + 0x70]
add esp, 0x10
cmp byte [eax + 0x57], 0
je 0x48f92d
mov ecx, dword [esp + 0x34]
mov dword [ecx + 0x24], esi
mov eax, dword [ebp + 0x18]
mov edx, dword [esp + 0x50]
mov ecx, dword [ebp + 0x10]
mov dword [eax + 0x40], edx
mov dl, byte [ecx + 0x2e]
neg dl
sbb dl, dl
and dl, 0x79
add dl, 0x3f
cmp dword [esp + 0x28], esi
mov byte [eax + 0x3d], dl
mov ecx, dword [ebx + 0x6c]
mov dword [eax + 0x44], ecx
mov dword [esp + 0x14], esi
jle 0x491270
mov eax, dword [esp + 0x3c]
add eax, 2
mov dword [esp + 0x30], eax
mov dword [esp + 0x40], eax
jmp 0x48f974
mov esi, dword [esp + 0x14]
cmp esi, 0x10
mov eax, dword [esp + 0x34]
mov edx, dword [eax + 0x38]
mov edx, dword [edx + esi*4]
mov dword [esp + 0x10], edx
jge 0x48f9a4
mov ax, word [eax + 0x22]
mov cx, si
shr ax, cl
test al, 1
je 0x48f9a4
mov esi, dword [ebp + 0x18]
mov eax, edx
call fcn.0048e460
jmp 0x48fc7b
test byte [edx + 0xc], 1
je 0x48fc7b
mov ecx, dword [esp + 0x14]
cmp ecx, 0x1f
jg 0x48f9c0
mov eax, 1
shl eax, cl
jmp 0x48f9c2
xor eax, eax
mov ecx, dword [esp + 0x34]
test dword [ecx + 0x28], eax
jne 0x48fc7b
mov edx, dword [esp + 0x60]
cmp byte [edx + 0x57], 0
jne 0x48fc7b
mov edx, dword [ebp + 0x18]
xor esi, esi
cmp dword [edx + 0x48], esi
mov dword [esp + 0x18], esi
jle 0x48faaf
mov eax, dword [ebx]
mov cl, byte [eax + 0x57]
mov byte [esp + 0x4f], cl
cmp byte [esp + 0x4f], 0
je 0x48fa06
mov eax, 0x4d6798
jmp 0x48fa16
mov eax, dword [edx + 0x4c]
mov eax, dword [eax + esi + 4]
lea ecx, [eax + eax*4]
mov eax, dword [ebx + 0x68]
lea eax, [eax + ecx*4]
mov cl, byte [eax]
cmp cl, 0x5e
jne 0x48fa29
mov edx, dword [esp + 0x40]
cmp dword [eax + 0xc], edx
je 0x48fa4c
mov edx, dword [ebp + 0x18]
cmp cl, 0x87
jne 0x48fa37
mov ecx, dword [esp + 0x40]
cmp dword [eax + 8], ecx
je 0x48fa4c
mov eax, dword [esp + 0x18]
add eax, 1
add esi, 0x14
cmp eax, dword [edx + 0x48]
mov dword [esp + 0x18], eax
jl 0x48f9f8
jmp 0x48faaf
mov edx, dword [eax + 4]
mov esi, dword [eax + 0xc]
mov ecx, dword [eax + 8]
movzx eax, byte [eax]
mov dword [esp + 0x18], eax
mov eax, dword [ebx + 0x6c]
cmp dword [ebx + 0x70], eax
mov dword [esp + 0x2c], edx
jg 0x48fa7c
push esi
push ecx
mov ecx, dword [esp + 0x20]
push edx
push ecx
mov eax, ebx
call fcn.0043c3b0
add esp, 0x10
jmp 0x48faaf
lea edx, [eax + 1]
mov dword [ebx + 0x6c], edx
mov edx, dword [ebx + 0x68]
lea eax, [eax + eax*4]
lea eax, [edx + eax*4]
mov dl, byte [esp + 0x18]
mov byte [eax], dl
mov edx, dword [esp + 0x2c]
mov word [eax + 2], 0
mov dword [eax + 4], edx
mov dword [eax + 8], ecx
mov dword [eax + 0xc], esi
mov dword [eax + 0x10], 0
mov byte [eax + 1], 0
mov eax, dword [edi]
cmp word [eax + 0x134], 0x34
jae 0x48faed
cmp dword [eax + 0x130], 0
jne 0x48fae0
add dword [eax + 0x144], 1
push 0
push 0x34
push eax
call fcn.004195c0
mov esi, eax
mov dword [esp + 0x28], esi
jmp 0x48fb80
cmp byte [eax + 0x57], 0
je 0x48facb
xor esi, esi
jmp 0x48fbc5
mov esi, dword [eax + 0x158]
test esi, esi
je 0x48fb0c
mov ecx, dword [esi]
add dword [eax + 0x140], 1
mov dword [eax + 0x158], ecx
mov dword [esp + 0x1c], esi
jmp 0x48fb83
mov esi, dword [eax + 0x154]
test esi, esi
je 0x48fb2b
mov edx, dword [esi]
add dword [eax + 0x140], 1
mov dword [eax + 0x154], edx
mov dword [esp + 0x1c], esi
jmp 0x48fb83
mov esi, dword [eax + 0x150]
test esi, esi
je 0x48fb4a
mov ecx, dword [esi]
add dword [eax + 0x140], 1
mov dword [eax + 0x150], ecx
mov dword [esp + 0x1c], esi
jmp 0x48fb83
mov esi, dword [eax + 0x14c]
test esi, esi
je 0x48fb69
mov edx, dword [esi]
add dword [eax + 0x140], 1
mov dword [eax + 0x14c], edx
mov dword [esp + 0x1c], esi
jmp 0x48fb83
add dword [eax + 0x148], 1
push 0
push 0x34
push eax
call fcn.004195c0
mov esi, eax
mov dword [esp + 0x28], eax
add esp, 0xc
test esi, esi
je 0x48fbc5
push 0x34
push 0
push esi
call sub.ntdll.dll_memset
mov byte [esi], 0x35
mov word [esi + 0x22], 0xffff
mov dword [esi + 0x18], 1
mov eax, dword [edi]
mov eax, dword [eax + 0x84]
add esp, 0xc
cmp eax, 1
jge 0x48fbc5
push eax
push str.Expression_tree_is_too_large__maximum_depth__d_
mov esi, edi
call fcn.0041cbf0
mov esi, dword [esp + 0x24]
add esp, 8
mov ecx, dword [esp + 0x60]
cmp byte [ecx + 0x57], 0
jne 0x48fc69
mov ecx, dword [esp + 0x10]
mov eax, dword [ecx + 0x1c]
test eax, eax
mov edx, dword [ecx]
mov ecx, dword [edx + 0xc]
jle 0x48fbf2
mov ecx, dword [ecx + 0x14]
lea eax, [eax + eax*4]
mov edx, dword [ecx + eax*4 - 0xc]
mov dword [esi + 0xc], edx
jmp 0x48fbf5
mov dword [esi + 0xc], ecx
mov ecx, dword [esp + 0x60]
push 0
push 0x35
call fcn.00419650
add esp, 8
test eax, eax
mov dword [esp + 0x24], eax
je 0x48fc37
push 0x34
push 0
push eax
call sub.ntdll.dll_memset
mov ecx, dword [esp + 0x30]
lea eax, [ecx + 0x34]
mov byte [ecx], 0xb0
mov word [ecx + 0x22], 0xffff
mov dword [ecx + 8], eax
mov byte [eax], 0
add esp, 0xc
mov dword [ecx + 0x18], 1
mov eax, dword [esp + 0x24]
test eax, eax
mov dword [esi + 0x10], eax
je 0x48fc62
mov edx, dword [esp + 0x14]
mov ecx, dword [esp + 0x30]
add ecx, edx
mov dword [eax + 0x1c], ecx
mov ecx, dword [ebp + 0x18]
mov edx, dword [ecx + 0x18]
push 0x10
push edx
push esi
push edi
call fcn.004589a0
add esp, 0x10
mov dword [esi + 0xc], 0
test esi, esi
je 0x48fc7b
mov eax, dword [esp + 0x60]
push esi
push eax
call fcn.00452b80
add esp, 8
mov eax, dword [esp + 0x14]
add dword [esp + 0x40], 1
add eax, 1
cmp eax, dword [esp + 0x28]
mov dword [esp + 0x14], eax
jl 0x48f970
jmp 0x491270
mov edx, dword [esp + 0x28]
and edx, 0x100
je 0x48fda2
test byte [esp + 0x28], 5
je 0x48fda2
mov ecx, dword [esp + 0x34]
mov edx, dword [ecx + 0x38]
mov eax, dword [edx]
add dword [edi + 0x2c], 1
mov ecx, dword [edi + 0x2c]
mov edx, dword [ebp + 0x18]
push ecx
mov dword [esp + 0x20], ecx
mov ecx, dword [esp + 0x4c]
push ecx
push 0
push edx
push eax
push edi
call fcn.0048e7c0
mov esi, eax
add esp, 0x18
cmp esi, dword [esp + 0x1c]
mov dword [esp + 0x2c], esi
je 0x48fd08
mov ecx, dword [esp + 0x1c]
test ecx, ecx
je 0x48fd08
mov al, byte [edi + 0x13]
cmp al, 8
jae 0x48fd08
movzx eax, al
mov dword [edi + eax*4 + 0xa0], ecx
add byte [edi + 0x13], 1
mov eax, dword [ebp + 0x18]
cmp dword [eax + 0x34], 0
mov ecx, dword [eax + 0x10]
mov dword [esp + 0x10], ecx
je 0x48fd80
push 0
mov edx, ecx
push edx
push esi
push 0xd
push ebx
call fcn.0043c3f0
mov ecx, dword [esp + 0x24]
mov eax, dword [ebp + 0x18]
mov eax, dword [eax + 0x34]
add esp, 0x14
push esi
push ecx
push eax
push 0x40
push ebx
call fcn.0043c3f0
mov edx, dword [ebx]
add esp, 0x14
cmp byte [edx + 0x57], 0
jne 0x48fd5d
mov ecx, dword [ebx + 0x68]
lea eax, [eax + eax*4]
lea eax, [ecx + eax*4]
mov byte [eax + 1], 0xfd
mov dword [eax + 0x10], 1
mov edx, dword [ebp + 0x20]
mov eax, dword [ebp + 0x1c]
mov ecx, dword [esp + 0x10]
push edx
mov edx, dword [ebp + 0x14]
push eax
mov eax, dword [ebp + 0x10]
push ecx
push edx
push eax
mov esi, edi
call fcn.0048f2c0
mov esi, dword [esp + 0x40]
add esp, 0x14
mov ecx, dword [esp + 0x10]
mov edx, dword [esp + 0x50]
push esi
push ecx
push edx
push 0x1e
push ebx
call fcn.0043c3f0
mov eax, dword [ebp + 0x18]
add esp, 0x14
mov byte [eax + 0x3d], 0xb8
jmp 0x491270
cmp edx, esi
mov edx, dword [esp + 0x28]
je 0x49000d
test dl, 2
je 0x49000d
xor ecx, ecx
xor eax, eax
xor esi, esi
test dl, 0x20
mov dword [esp + 0x5c], 0xb8
mov dword [esp + 0x74], ecx
mov dword [esp + 0x24], ecx
je 0x48fdde
mov eax, dword [esp + 0x34]
mov eax, dword [eax + 0x38]
mov esi, dword [eax]
lea eax, [ecx + 1]
test dl, 0x10
je 0x48fdf1
mov ecx, dword [esp + 0x34]
mov edx, dword [ecx + 0x38]
mov ecx, dword [edx + eax*4]
mov dword [esp + 0x24], ecx
cmp dword [esp + 0x48], 0
je 0x48fe00
mov eax, esi
mov esi, ecx
mov dword [esp + 0x24], eax
test esi, esi
je 0x48feea
mov eax, dword [esi]
mov dword [esp + 0x18], eax
mov eax, dword [eax + 0x10]
mov ecx, eax
mov byte [esp + 0x38], 0x18
mov byte [esp + 0x39], 0x16
mov byte [esp + 0x3a], 0x15
mov byte [esp + 0x3b], 0x17
mov dword [esp + 0x2c], eax
call fcn.00451d70
test eax, eax
je 0x48fe85
mov al, byte [edi + 0x13]
test al, al
jne 0x48fe44
add dword [edi + 0x2c], 1
mov eax, dword [edi + 0x2c]
jmp 0x48fe53
sub al, 1
mov byte [edi + 0x13], al
movzx eax, al
mov eax, dword [edi + eax*4 + 0xa0]
mov esi, dword [esp + 0x18]
push 1
mov dword [esp + 0x34], eax
mov dword [esp + 0x30], eax
push eax
mov eax, dword [esi + 0x10]
mov ebx, edi
call fcn.0048f1c0
movzx ecx, byte [esi]
mov ebx, dword [ebp + 0xc]
add ecx, 1
and ecx, 2
add esp, 8
or ecx, 1
movzx eax, byte [esp + ecx + 0x38]
jmp 0x48feb2
mov eax, dword [esp + 0x2c]
lea edx, [esp + 0x30]
push edx
mov ecx, edi
call fcn.00458110
mov dword [esp + 0x30], eax
mov eax, esi
mov esi, dword [ebp + 0x18]
add esp, 4
call fcn.0048e460
mov eax, dword [esp + 0x18]
movzx ecx, byte [eax]
movzx eax, byte [esp + ecx + 2]
mov edx, dword [esp + 0x2c]
mov ecx, dword [esp + 0x40]
push edx
mov edx, dword [esp + 0x54]
push ecx
push edx
push eax
push ebx
call fcn.0043c3f0
mov ecx, dword [esp + 0x44]
add esp, 0x14
test ecx, ecx
je 0x48ff10
mov al, byte [edi + 0x13]
cmp al, 8
jae 0x48ff10
movzx eax, al
mov dword [edi + eax*4 + 0xa0], ecx
add byte [edi + 0x13], 1
jmp 0x48ff10
mov ecx, dword [esp + 0x18]
mov edx, dword [esp + 0x50]
xor eax, eax
cmp dword [esp + 0x48], eax
push 0
sete al
push ecx
push edx
lea eax, [eax*4 + 0x20]
push eax
push ebx
call fcn.0043c3f0
add esp, 0x14
mov eax, dword [esp + 0x24]
test eax, eax
je 0x48ff8c
mov esi, dword [eax]
mov ebx, dword [ebp + 8]
add dword [ebx + 0x2c], 1
mov eax, dword [ebx + 0x2c]
push 1
mov dword [esp + 0x78], eax
push eax
mov eax, dword [esi + 0x10]
call fcn.0048f1c0
mov edi, dword [esi + 0x10]
add esp, 8
mov ecx, edi
call fcn.00451d70
test eax, eax
jne 0x48ff61
mov al, byte [esi]
cmp al, 0x38
je 0x48ff4e
cmp al, 0x36
jne 0x48ff61
xor ecx, ecx
cmp dword [esp + 0x48], ecx
sete cl
lea ecx, [ecx + ecx + 0x37]
mov dword [esp + 0x5c], ecx
jmp 0x48ff72
xor edx, edx
cmp dword [esp + 0x48], edx
setne dl
lea edx, [edx + edx + 0x36]
mov dword [esp + 0x5c], edx
mov ecx, edi
call fcn.00451d70
test eax, eax
jne 0x48ff89
mov eax, dword [esp + 0x24]
mov esi, dword [ebp + 0x18]
call fcn.0048e460
mov ebx, dword [ebp + 0xc]
cmp dword [esp + 0x48], 0
mov eax, dword [ebp + 0x18]
mov esi, dword [ebx + 0x6c]
sete cl
add cl, 0x26
cmp dword [esp + 0x5c], 0xb8
mov byte [eax + 0x3d], cl
mov ecx, dword [esp + 0x50]
mov dword [eax + 0x40], ecx
mov dword [eax + 0x44], esi
je 0x491270
mov eax, dword [ebp + 8]
add dword [eax + 0x2c], 1
mov esi, dword [eax + 0x2c]
push 0
push esi
push ecx
push 0x87
push ebx
call fcn.0043c3f0
mov edx, dword [esp + 0x54]
mov eax, dword [esp + 0x88]
mov ecx, dword [esp + 0x70]
add esp, 0x14
push esi
push edx
push eax
push ecx
push ebx
call fcn.0043c3f0
mov eax, dword [ebx + 0x6c]
add esp, 0x14
test eax, eax
jle 0x491270
lea edx, [eax + eax*4]
mov eax, dword [ebx + 0x68]
mov word [eax + edx*4 - 0x12], 0x53
jmp 0x491270
test edx, 0x200
je 0x490a5b
mov ecx, dword [esp + 0x34]
movzx edx, word [ecx + 0x18]
movzx eax, word [ecx + 0x1a]
movzx esi, word [ecx + 0x1c]
mov dword [esp + 0x30], edx
movzx edx, ax
mov dword [esp + 0x5c], edx
movzx edx, si
mov dword [esp + 0x74], edx
xor edx, edx
test byte [esp + 0x28], 0x20
mov dword [esp + 0x58], edx
mov dword [esp + 0x38], edx
mov edx, dword [ecx + 0x20]
mov dword [esp + 0x44], edx
mov edx, dword [ebp + 0x18]
mov edx, dword [edx + 8]
mov dword [esp + 0x1c], edx
movzx edx, word [esp + 0x30]
mov dword [esp + 0x64], 0
mov dword [esp + 0x3c], 0
mov dword [esp + 0x10], 0
mov dword [esp + 0x2c], 0
mov byte [esp + 0x23], 0
mov byte [esp + 0x4f], 0
mov dword [esp + 0x54], edx
mov dword [esp + 0x14], edx
je 0x4900b0
mov ecx, dword [ecx + 0x38]
mov ecx, dword [ecx + edx*4]
movzx eax, ax
add edx, 1
test eax, eax
mov dword [esp + 0x64], ecx
mov ecx, dword [esp + 0x34]
jl 0x4900b0
mov dword [esp + 0x10], eax
test byte [ecx + 0x2c], 0x10
je 0x49015b
mov eax, dword [ecx + 0x38]
mov edx, dword [eax + edx*4]
movzx eax, si
cmp dword [esp + 0x10], eax
mov dword [esp + 0x3c], edx
jg 0x4900d1
mov dword [esp + 0x10], eax
mov eax, dword [esp + 0x3c]
test word [eax + 0xa], 0x100
je 0x490125
add dword [edi + 0x2c], 1
mov eax, dword [edi + 0x2c]
mov esi, dword [ebp + 0x18]
push 0
push eax
push 1
push 0x47
push ebx
mov dword [esi + 0x2c], eax
call fcn.0043c3f0
mov ecx, dword [ebx + 0x6c]
shl dword [esi + 0x2c], 1
mov edx, dword [esp + 0x58]
mov dword [esi + 0x30], ecx
mov eax, dword [edx + 0x1c]
mov edx, dword [esp + 0x68]
xor ecx, ecx
add esp, 0x14
cmp byte [edx + eax], 1
sete cl
xor ecx, dword [esp + 0x48]
or ecx, dword [esi + 0x2c]
mov dword [esi + 0x2c], ecx
mov ecx, dword [esp + 0x34]
cmp dword [esp + 0x64], 0
jne 0x49015b
mov edx, dword [esp + 0x44]
mov eax, dword [edx + 4]
mov esi, dword [esp + 0x54]
movsx eax, word [eax + esi*2]
test eax, eax
jl 0x490151
mov edx, dword [edx + 0xc]
mov edx, dword [edx + 4]
mov esi, eax
shl esi, 4
test byte [edx + esi + 4], 0xf
je 0x490156
cmp eax, 0xfffffffe
jne 0x49015b
mov byte [esp + 0x23], 1
mov ecx, dword [ecx + 0x2c]
test cl, 0x30
jne 0x4901aa
test ecx, 0x80000
je 0x4901aa
mov ecx, dword [ebp + 0x18]
mov eax, 1
add dword [edi + 0x2c], eax
cmp dword [ecx], 0
mov dword [esp + 0x10], eax
mov byte [esp + 0x23], al
mov eax, dword [edi + 0x2c]
mov dword [esp + 0x58], eax
mov dword [ecx + 0x24], eax
je 0x4901a0
push 0
push eax
push 0
push 0x47
push ebx
call fcn.0043c3f0
mov ecx, dword [ebp + 0x18]
add esp, 0x14
add dword [edi + 0x38], 0xffffffff
mov eax, dword [edi + 0x38]
mov dword [ecx + 0x28], eax
mov cx, word [esp + 0x30]
mov eax, dword [esp + 0x44]
cmp cx, word [eax + 0x34]
jae 0x490203
mov edx, dword [eax + 0x1c]
mov ecx, dword [esp + 0x54]
xor eax, eax
cmp byte [ecx + edx], al
sete al
cmp dword [esp + 0x48], eax
jne 0x490203
mov eax, dword [esp + 0x3c]
mov edx, dword [esp + 0x64]
movzx ecx, word [esp + 0x74]
mov dword [esp + 0x64], eax
mov al, byte [esp + 0x23]
mov byte [esp + 0x4f], al
mov al, byte [esp + 0x5c]
mov dword [esp + 0x3c], edx
movzx dx, al
movzx eax, dx
mov byte [esp + 0x23], 0
mov dword [esp + 0x5c], ecx
mov dword [esp + 0x74], eax
cmp dword [ebp + 0x14], 0
jle 0x49022d
mov ecx, dword [esp + 0x34]
test dword [ecx + 0x2c], 0x100000
je 0x49022d
mov edx, dword [esp + 0x1c]
push 0
push 0
push edx
push 0x88
push ebx
call fcn.0043c3f0
add esp, 0x14
mov ecx, dword [esp + 0x10]
mov edx, dword [esp + 0x48]
mov esi, dword [ebp + 0x18]
lea eax, [esp + 0x24]
push eax
push ecx
push edx
push esi
push edi
call fcn.0048ed40
mov dword [esp + 0x3c], eax
mov eax, dword [esp + 0x38]
add esp, 0x14
test eax, eax
je 0x490274
cmp word [esp + 0x74], 0
je 0x490274
mov ecx, dword [esp + 0x54]
lea ebx, [eax + ecx]
mov ecx, dword [esp + 0x60]
call fcn.00419890
mov ebx, dword [ebp + 0xc]
mov dword [esp + 0x2c], eax
cmp dword [esp + 0x58], 0
je 0x490284
mov edx, dword [esi + 0x28]
mov dword [esp + 0x10], edx
jmp 0x49028b
mov eax, dword [esi + 0x10]
mov dword [esp + 0x10], eax
mov ecx, dword [esp + 0x64]
xor esi, esi
cmp ecx, esi
mov dl, 0x28
je 0x4902a0
test byte [ecx + 0xc], dl
mov dword [esp + 0x40], esi
je 0x4902a8
mov dword [esp + 0x40], 1
mov eax, dword [esp + 0x3c]
cmp eax, esi
je 0x4902b9
test byte [eax + 0xc], dl
mov dword [esp + 0x18], esi
je 0x4902c1
mov dword [esp + 0x18], 1
cmp ecx, esi
jne 0x4902d0
cmp word [esp + 0x30], si
mov dword [esp + 0x68], esi
jbe 0x4902d8
mov dword [esp + 0x68], 1
cmp dword [esp + 0x64], 0
mov esi, dword [esp + 0x54]
mov dword [esp + 0x14], esi
je 0x4903ed
mov ecx, dword [esp + 0x64]
mov edx, dword [ecx]
mov eax, dword [edx + 0x10]
movzx ecx, word [esp + 0x5c]
mov edx, dword [esp + 0x28]
mov ebx, esi
add edx, ebx
push ecx
push edx
mov ebx, edi
mov dword [esp + 0x1c], eax
mov dword [esp + 0x38], edx
call fcn.0048f1c0
mov eax, dword [esp + 0x6c]
mov edi, dword [ebp + 0xc]
add esp, 8
test word [eax + 0xa], 0x100
je 0x490359
mov ecx, dword [edi]
cmp byte [ecx + 0x57], 0
je 0x490333
mov eax, 0x4d6798
jmp 0x490340
mov eax, dword [edi + 0x6c]
lea edx, [eax + eax*4]
mov eax, dword [edi + 0x68]
lea eax, [eax + edx*4 - 0x14]
mov ecx, dword [ebp + 0x18]
mov edx, dword [ecx + 0x2c]
shr edx, 1
mov dword [eax + 0xc], edx
mov cl, byte [ecx + 0x2c]
and cl, 1
movzx dx, cl
mov word [eax + 2], dx
mov eax, dword [esp + 0x64]
test byte [eax + 0xa], 0x80
mov ebx, dword [esp + 0x14]
jne 0x490389
mov eax, ebx
call fcn.00454170
test eax, eax
je 0x490389
mov ecx, dword [esp + 0x10]
mov edx, dword [esp + 0x30]
push 0
push ecx
push edx
push 0x32
push edi
call fcn.0043c3f0
add esp, 0x14
mov eax, dword [esp + 0x24]
test eax, eax
je 0x4903a5
mov ecx, esi
add eax, ecx
push eax
movzx eax, word [esp + 0x60]
push eax
push ebx
call fcn.0048e550
add esp, 0xc
movzx eax, word [esp + 0x5c]
add esi, eax
mov ecx, ebx
mov dword [esp + 0x14], esi
call fcn.00451d70
test eax, eax
jne 0x4903d8
mov eax, dword [esp + 0x64]
mov esi, dword [ebp + 0x18]
call fcn.0048e460
mov esi, dword [esp + 0x14]
mov ebx, dword [ebp + 0xc]
mov edi, dword [ebp + 8]
mov byte [esp + 0x23], 0
jmp 0x490437
mov ebx, dword [ebp + 0xc]
mov edi, dword [ebp + 8]
mov dword [esp + 0x40], 1
mov byte [esp + 0x23], 0
jmp 0x490437
cmp byte [esp + 0x23], 0
je 0x490409
mov edx, dword [esp + 0x28]
mov eax, esi
push 0
add edx, eax
mov dword [esp + 0x44], 0
push edx
jmp 0x49041b
cmp dword [esp + 0x58], 0
je 0x490437
mov ecx, dword [esp + 0x28]
mov edx, esi
push 0
add ecx, edx
push ecx
push 0
push 0x4b
push ebx
call fcn.0043c3f0
add esp, 0x14
add esi, 1
mov dword [esp + 0x14], esi
mov dword [esp + 0x68], 1
movzx eax, byte [esp + 0x23]
mov edx, dword [esp + 0x24]
mov ecx, esi
sub ecx, eax
mov eax, dword [esp + 0x28]
push ecx
mov ecx, edi
call fcn.0048e4e0
mov edx, dword [esp + 0x38]
movzx eax, word [edx + 0x32]
add esp, 4
test ax, ax
jbe 0x49046b
movzx eax, ax
cmp esi, eax
je 0x490613
cmp dword [esp + 0x58], 0
je 0x490486
mov ecx, dword [esp + 0x58]
push 0
push ecx
push 1
push 0x47
push ebx
call fcn.0043c3f0
add esp, 0x14
mov edx, dword [ebp + 0x18]
mov eax, dword [edx + 0x34]
test eax, eax
je 0x4904e5
mov ecx, dword [esp + 0x28]
mov edx, dword [esp + 0x10]
push ecx
push edx
push eax
push 0x40
push ebx
call fcn.0043c3f0
mov ecx, dword [ebx]
add esp, 0x14
cmp byte [ecx + 0x57], 0
jne 0x4904c2
mov ecx, dword [esp + 0x54]
lea edx, [eax + eax*4]
mov eax, dword [ebx + 0x68]
lea eax, [eax + edx*4]
mov byte [eax + 1], 0xfd
mov dword [eax + 0x10], ecx
mov edx, dword [ebp + 0x20]
mov eax, dword [ebp + 0x1c]
mov ecx, dword [esp + 0x10]
push edx
mov edx, dword [ebp + 0x14]
push eax
mov eax, dword [ebp + 0x10]
push ecx
push edx
push eax
mov esi, edi
call fcn.0048f2c0
mov esi, dword [esp + 0x28]
add esp, 0x14
mov ecx, dword [esp + 0x40]
mov edx, dword [esp + 0x68]
lea eax, [ecx + edx*2]
mov ecx, dword [esp + 0x48]
movzx eax, byte [ecx + eax*2 + 0x4c2f88]
mov edx, dword [esp + 0x34]
test dword [edx + 0x2c], 0x100000
mov dword [esp + 0x30], eax
je 0x490578
cmp eax, 0x17
jne 0x490578
mov eax, dword [esp + 0x44]
mov ecx, dword [eax + 8]
movsx ecx, word [ecx]
add ecx, 9
mov eax, 0x66666667
imul ecx
sar edx, 2
mov eax, edx
push 0
shr eax, 0x1f
push 0
add eax, edx
push eax
push 0x7c
push ebx
call fcn.0043c3f0
add esp, 0x14
cmp dword [esp + 0x64], 0
mov dword [esp + 0x38], eax
je 0x490578
mov eax, dword [ebx + 0x6c]
test eax, eax
jle 0x49055f
lea edx, [eax + eax*4]
mov eax, dword [ebx + 0x68]
mov word [eax + edx*4 - 0x12], 1
mov edx, dword [ebx + 0x6c]
mov eax, dword [esp + 0x38]
add edx, 1
mov ecx, ebx
call fcn.0043cca0
mov dword [esp + 0x38], 0
mov ecx, dword [esp + 0x28]
mov edx, dword [esp + 0x10]
mov eax, dword [esp + 0x1c]
push ecx
mov ecx, dword [esp + 0x34]
push edx
push eax
push ecx
push ebx
call fcn.0043c3f0
mov edx, dword [ebx]
add esp, 0x14
cmp byte [edx + 0x57], 0
jne 0x4905ad
mov ecx, dword [ebx + 0x68]
lea eax, [eax + eax*4]
lea eax, [ecx + eax*4]
mov byte [eax + 1], 0xfd
mov dword [eax + 0x10], esi
cmp dword [esp + 0x58], 0
je 0x490613
mov edx, dword [ebx + 0x6c]
push 0
add edx, 2
push edx
push 0
push 9
push ebx
call fcn.0043c3f0
mov ecx, dword [esp + 0x5c]
mov edx, dword [esp + 0x3c]
add esp, 0x14
xor eax, eax
cmp esi, 1
setg al
push edx
mov edx, dword [esp + 0x20]
movzx eax, byte [ecx + eax*4 + 0x4c2f8a]
mov ecx, dword [esp + 0x14]
push ecx
push edx
push eax
push ebx
call fcn.0043c3f0
mov ecx, dword [ebx]
add esp, 0x14
cmp byte [ecx + 0x57], 0
jne 0x490613
sub esi, dword [esp + 0x40]
lea edx, [eax + eax*4]
mov eax, dword [ebx + 0x68]
lea eax, [eax + edx*4]
mov byte [eax + 1], 0xfd
mov dword [eax + 0x10], esi
mov eax, dword [esp + 0x3c]
test eax, eax
mov ecx, dword [esp + 0x54]
mov dword [esp + 0x14], ecx
je 0x490737
cmp dword [esp + 0x38], 0
mov edx, dword [eax]
mov eax, dword [edx + 0x10]
mov dword [esp + 0x68], eax
je 0x490640
mov ecx, dword [ebx + 0x6c]
mov edx, dword [ebp + 0x18]
mov dword [edx + 0x44], ecx
movzx esi, word [esp + 0x74]
mov ecx, dword [esp + 0x54]
mov eax, dword [esp + 0x28]
add eax, ecx
push esi
mov dword [esp + 0x34], eax
push eax
mov eax, dword [esp + 0x70]
mov ebx, edi
call fcn.0048f1c0
mov edx, dword [esp + 0x44]
mov ebx, dword [ebp + 0xc]
add esp, 8
test word [edx + 0xa], 0x100
je 0x4906a9
mov eax, dword [ebx]
cmp byte [eax + 0x57], 0
je 0x490681
mov eax, 0x4d6798
jmp 0x49068e
mov eax, dword [ebx + 0x6c]
mov edx, dword [ebx + 0x68]
lea ecx, [eax + eax*4]
lea eax, [edx + ecx*4 - 0x14]
mov edi, dword [ebp + 0x18]
mov ecx, dword [edi + 0x2c]
shr ecx, 1
mov dword [eax + 0xc], ecx
mov dl, byte [edi + 0x2c]
and dl, 1
movzx cx, dl
mov word [eax + 2], cx
jmp 0x4906ac
mov edi, dword [ebp + 0x18]
mov edx, dword [esp + 0x3c]
test byte [edx + 0xa], 0x80
jne 0x4906da
mov eax, dword [esp + 0x68]
call fcn.00454170
test eax, eax
je 0x4906da
mov eax, dword [esp + 0x10]
mov ecx, dword [esp + 0x30]
push 0
push eax
push ecx
push 0x32
push ebx
call fcn.0043c3f0
add esp, 0x14
mov ebx, dword [esp + 0x2c]
test ebx, ebx
je 0x490703
mov edx, dword [esp + 0x68]
push ebx
push esi
push edx
call fcn.0048e550
mov eax, dword [esp + 0x3c]
mov ecx, dword [ebp + 8]
add esp, 0xc
push esi
mov edx, ebx
call fcn.0048e4e0
add esp, 4
mov ecx, dword [esp + 0x68]
add dword [esp + 0x14], esi
call fcn.00451d70
test eax, eax
jne 0x490727
mov eax, dword [esp + 0x3c]
mov esi, edi
call fcn.0048e460
mov ebx, dword [ebp + 0xc]
mov edi, dword [ebp + 8]
jmp 0x490768
mov ebx, dword [ebp + 0xc]
mov edi, dword [ebp + 8]
mov dword [esp + 0x18], 1
jmp 0x490768
cmp byte [esp + 0x4f], 0
je 0x490768
cmp dword [esp + 0x58], 0
jne 0x490763
mov eax, dword [esp + 0x28]
push 0
add eax, ecx
push eax
push 0
push 0x4b
push ebx
call fcn.0043c3f0
add esp, 0x14
mov dword [esp + 0x18], 0
add dword [esp + 0x14], 1
cmp dword [esp + 0x24], 0
je 0x49077c
mov eax, dword [esp + 0x24]
mov ecx, dword [esp + 0x60]
call fcn.004192c0
cmp dword [esp + 0x2c], 0
je 0x490790
mov eax, dword [esp + 0x2c]
mov ecx, dword [esp + 0x60]
call fcn.004192c0
mov eax, dword [ebp + 0x18]
cmp dword [eax + 0x44], 0
jne 0x49079f
mov edx, dword [ebx + 0x6c]
mov dword [eax + 0x44], edx
mov esi, dword [esp + 0x14]
test esi, esi
je 0x490835
cmp dword [esp + 0x58], 0
je 0x4907cb
mov eax, dword [ebx + 0x6c]
mov ecx, dword [esp + 0x58]
push 0
add eax, 3
push eax
push ecx
push 0x11
push ebx
call fcn.0043c3f0
add esp, 0x14
mov edx, dword [esp + 0x18]
mov eax, dword [esp + 0x48]
movzx eax, byte [edx + eax*2 + str.___]
mov ecx, dword [esp + 0x28]
mov edx, dword [esp + 0x10]
push ecx
mov ecx, dword [esp + 0x20]
push edx
push ecx
push eax
push ebx
call fcn.0043c3f0
mov edx, dword [ebx]
add esp, 0x14
cmp byte [edx + 0x57], 0
jne 0x49080c
mov ecx, dword [ebx + 0x68]
lea eax, [eax + eax*4]
lea eax, [ecx + eax*4]
mov byte [eax + 1], 0xfd
mov dword [eax + 0x10], esi
cmp dword [esp + 0x38], 0
je 0x490835
mov edx, dword [ebx]
cmp byte [edx + 0x57], 0
mov ecx, dword [ebx + 0x6c]
je 0x490825
mov eax, 0x4d6798
jmp 0x490832
mov eax, dword [esp + 0x38]
mov edx, dword [ebx + 0x68]
lea eax, [eax + eax*4]
lea eax, [edx + eax*4]
mov dword [eax + 8], ecx
cmp dword [esp + 0x58], 0
je 0x49089d
mov eax, dword [ebx + 0x6c]
mov ecx, dword [esp + 0x58]
push 0
add eax, 2
push eax
push ecx
push 0x10
push ebx
call fcn.0043c3f0
movzx esi, byte [esp + 0x37]
mov edx, dword [esp + 0x5c]
movzx eax, byte [esi + edx*2 + str.___]
mov ecx, dword [esp + 0x3c]
mov edx, dword [esp + 0x24]
add esp, 0x14
push ecx
mov ecx, dword [esp + 0x20]
push edx
push ecx
push eax
push ebx
call fcn.0043c3f0
mov edx, dword [ebx]
add esp, 0x14
cmp byte [edx + 0x57], 0
jne 0x49089d
mov ecx, dword [ebx + 0x68]
mov edx, dword [esp + 0x14]
lea eax, [eax + eax*4]
lea eax, [ecx + eax*4]
add edx, esi
mov byte [eax + 1], 0xfd
mov dword [eax + 0x10], edx
mov eax, dword [esp + 0x34]
test dword [eax + 0x2c], 0x40000
mov esi, dword [esp + 0x1c]
je 0x4908c0
mov eax, dword [esp + 0x54]
push eax
push eax
push esi
push 0x7d
push ebx
call fcn.0043c3f0
add esp, 0x14
mov ecx, dword [esp + 0x34]
test byte [ecx + 0x2c], 0x40
je 0x4908e2
mov edx, dword [ebp + 0x10]
test word [edx + 0x28], 0x1020
jne 0x4908e2
mov dword [esp + 0x30], 1
jmp 0x4909da
mov ecx, dword [esp + 0x44]
mov eax, dword [ecx + 0xc]
test byte [eax + 0x1c], 0x80
mov dword [esp + 0x30], 0
jne 0x49090e
mov eax, dword [ebp + 0x10]
push ecx
mov ecx, dword [esp + 0x54]
mov edx, esi
call fcn.0048f0a0
add esp, 4
jmp 0x4909da
cmp dword [esp + 0x50], esi
je 0x4909da
call fcn.00461340
movzx esi, word [eax + 0x32]
mov ecx, edi
mov dword [esp + 0x18], eax
call fcn.00459ef0
mov edi, eax
mov eax, dword [esp + 0x18]
xor esi, esi
cmp word [eax + 0x32], si
mov dword [esp + 0x2c], edi
jbe 0x4909a1
mov edi, edi
mov ecx, dword [esp + 0x44]
movzx edx, word [ecx + 0x34]
xor eax, eax
test edx, edx
jle 0x490973
mov edi, dword [esp + 0x18]
mov edi, dword [edi + 4]
movzx edi, word [edi + esi*2]
mov ecx, dword [ecx + 4]
lea esp, [esp]
cmp di, word [ecx]
je 0x490a13
add eax, 1
add ecx, 2
cmp eax, edx
jl 0x490960
or eax, 0xffffffff
mov edi, dword [esp + 0x2c]
movsx edx, ax
mov eax, dword [esp + 0x1c]
lea ecx, [esi + edi]
push ecx
push edx
push eax
push 0x5e
push ebx
call fcn.0043c3f0
mov ecx, dword [esp + 0x2c]
movzx edx, word [ecx + 0x32]
add esi, 1
add esp, 0x14
cmp esi, edx
jl 0x490940
mov ecx, dword [esp + 0x84]
mov edx, dword [esp + 0x50]
mov eax, dword [esp + 0x18]
movzx esi, word [eax + 0x32]
push edi
push ecx
push edx
push 0x1c
push ebx
call fcn.0043c3f0
mov ecx, dword [ebx]
add esp, 0x14
cmp byte [ecx + 0x57], 0
jne 0x4909da
lea edx, [eax + eax*4]
mov eax, dword [ebx + 0x68]
lea eax, [eax + edx*4]
mov byte [eax + 1], 0xfd
mov dword [eax + 0x10], esi
mov esi, dword [ebp + 0x18]
cmp dword [esi], 0
jne 0x490a00
mov ecx, dword [esp + 0x44]
mov eax, dword [ecx + 0x24]
test eax, eax
je 0x490a00
mov edx, dword [esp + 0x7c]
mov ecx, dword [esp + 0x50]
push edx
push ecx
push eax
call fcn.0048f250
add esp, 0xc
mov eax, dword [esp + 0x34]
test dword [eax + 0x2c], 0x1000
je 0x490a1b
mov byte [esi + 0x3d], 0xb8
jmp 0x490a29
movzx eax, ax
jmp 0x490976
cmp dword [esp + 0x48], 0
sete dl
add dl, 0x26
mov byte [esi + 0x3d], dl
mov ecx, dword [esp + 0x1c]
mov dword [esi + 0x40], ecx
mov dl, byte [eax + 0x2e]
and dl, 1
mov byte [esi + 0x3e], dl
test byte [eax + 0x2c], 0xf
jne 0x490a43
mov byte [esi + 0x3f], 1
cmp dword [esp + 0x30], 0
je 0x491270
mov dword [esp + 0x44], 0
jmp 0x491270
test dword [esp + 0x28], 0x2000
je 0x491226
add dword [edi + 0x38], 0xffffffff
mov eax, dword [edi + 0x28]
add dword [edi + 0x2c], 1
mov edx, dword [edi + 0x38]
mov dword [esp + 0x54], eax
add eax, 1
mov dword [edi + 0x28], eax
mov ecx, dword [ecx + 0x10]
mov eax, dword [edi + 0x2c]
mov dword [esp + 0x58], edx
mov edx, dword [esp + 0x34]
mov dword [esp + 0x38], ecx
mov ecx, dword [edx + 0x38]
mov ecx, dword [ecx]
mov edx, dword [ecx + 0x18]
mov dword [esp + 0x10], ecx
mov ecx, dword [ebp + 0x18]
mov byte [ecx + 0x3d], 0x43
mov dword [ecx + 0x40], eax
mov ecx, dword [ebp + 0x10]
mov dword [esp + 0x1c], eax
mov al, byte [ecx + 0x2c]
cmp al, 1
mov dword [esp + 0x74], esi
mov dword [esp + 0x24], esi
mov dword [esp + 0x18], esi
mov dword [esp + 0x48], esi
mov dword [esp + 0x3c], esi
mov dword [esp + 0x30], edx
jbe 0x490b89
movzx eax, al
sub eax, dword [ebp + 0x14]
push esi
sub eax, 1
mov dword [esp + 0x44], eax
lea eax, [eax + eax*8]
lea ecx, [eax*8 + 0x50]
push ecx
mov ecx, dword [esp + 0x68]
call fcn.00419650
add esp, 8
cmp eax, esi
mov dword [esp + 0x68], eax
jne 0x490b0d
mov eax, dword [ebp + 0x1c]
mov edx, dword [ebp + 0x20]
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
mov edx, dword [esp + 0x40]
mov esi, dword [esp + 0x80]
mov cl, dl
add cl, 1
movzx ecx, cl
mov dword [eax + 4], ecx
mov dword [eax], ecx
lea edi, [eax + 8]
mov ecx, 0x12
rep movsd dword es:[edi], dword [esi]
mov ecx, dword [ebp + 0x10]
mov ecx, dword [ecx + 4]
add ecx, 8
cmp edx, 1
mov dword [esp + 0x5c], ecx
jl 0x490b90
mov edx, dword [ebp + 0x18]
add eax, 0x50
mov dword [esp + 0x2c], eax
mov eax, dword [esp + 0x40]
add edx, 0x9c
mov dword [esp + 0x40], eax
lea esp, [esp]
movzx eax, byte [edx]
mov edi, dword [esp + 0x2c]
add dword [esp + 0x2c], 0x48
lea ecx, [eax + eax*8]
mov eax, dword [esp + 0x5c]
lea esi, [eax + ecx*8]
mov ecx, 0x12
add edx, 0x60
sub dword [esp + 0x40], 1
rep movsd dword es:[edi], dword [esi]
jne 0x490b60
jmp 0x490b90
mov ecx, dword [ecx + 4]
mov dword [esp + 0x68], ecx
mov edx, dword [ebp + 0x10]
test byte [edx + 0x28], 0x10
jne 0x490c03
mov eax, dword [esp + 0x38]
test byte [eax + 0x1c], 0x80
jne 0x490bc3
mov esi, dword [ebp + 8]
add dword [esi + 0x2c], 1
mov eax, dword [esi + 0x2c]
push 0
push eax
push 0
push 0x4b
push ebx
mov dword [esp + 0x38], eax
call fcn.0043c3f0
add esp, 0x14
jmp 0x490bf8
call fcn.00461340
mov edi, dword [ebp + 8]
mov esi, eax
mov eax, dword [edi + 0x28]
lea ecx, [eax + 1]
mov dword [edi + 0x28], ecx
movzx edx, word [esi + 0x32]
push 0
push edx
push eax
push 0x76
push ebx
mov dword [esp + 0x38], eax
call fcn.0043c3f0
add esp, 0x14
mov ecx, esi
mov eax, edi
call fcn.0043d070
mov esi, edi
add dword [esi + 0x2c], 1
mov eax, dword [esi + 0x2c]
mov dword [esp + 0x18], eax
mov ecx, dword [esp + 0x1c]
push 0
push ecx
push 0
push 0x47
push ebx
call fcn.0043c3f0
mov edi, dword [esp + 0x90]
mov dword [esp + 0x84], eax
mov eax, dword [edi + 0xc]
add esp, 0x14
cmp eax, 1
jle 0x490cbc
xor ebx, ebx
test eax, eax
jle 0x490cbc
xor esi, esi
lea ecx, [ecx]
mov edx, dword [edi + 0x18]
mov ecx, dword [edx + esi]
lea eax, [edx + esi]
cmp eax, dword [esp + 0x10]
je 0x490c8f
mov eax, edx
add eax, esi
test word [eax + 0xa], 0x8006
jne 0x490c8f
test word [eax + 0xc], 0x3fff
je 0x490c8f
test dword [ecx + 4], 0x400000
jne 0x490c8f
push 0
push 0
push ecx
mov ecx, dword [esp + 0x6c]
push ecx
call fcn.00452d30
mov ecx, dword [esp + 0x4c]
push eax
mov eax, dword [ebp + 8]
call fcn.00452860
add esp, 0x14
mov dword [esp + 0x3c], eax
add ebx, 1
add esi, 0x30
cmp ebx, dword [edi + 0xc]
jl 0x490c40
cmp dword [esp + 0x3c], 0
je 0x490cbc
mov edx, dword [ebp + 8]
mov eax, dword [esp + 0x3c]
push 0x1002c
push edx
xor ecx, ecx
call fcn.00452690
add esp, 8
mov dword [esp + 0x3c], eax
mov ebx, dword [ebp + 8]
push str.MULTI_INDEX_OR
push 1
call fcn.0043c7b0
mov eax, dword [esp + 0x38]
xor ebx, ebx
add esp, 8
cmp dword [eax + 0xc], ebx
mov dword [esp + 0x28], ebx
jle 0x4910a8
mov dword [esp + 0x64], ebx
mov ecx, dword [esp + 0x30]
mov eax, dword [ecx + 0x18]
add eax, dword [esp + 0x64]
mov edx, dword [eax + 0x14]
cmp edx, dword [esp + 0x50]
je 0x490d05
test word [eax + 0xc], 0x400
je 0x491089
mov eax, dword [eax]
cmp eax, ebx
mov esi, dword [esp + 0x60]
mov dword [esp + 0x5c], ebx
je 0x490d23
push ebx
push ebx
push eax
push esi
call fcn.00452d30
add esp, 0x10
mov edi, eax
jmp 0x490d25
xor edi, edi
cmp byte [esi + 0x57], 0
mov dword [esp + 0x88], edi
je 0x490d40
cmp edi, ebx
je 0x491089
push edi
jmp 0x491080
mov eax, dword [esp + 0x3c]
cmp eax, ebx
je 0x490d4d
mov dword [eax + 0xc], edi
mov edi, eax
mov eax, dword [esp + 0x28]
mov ebx, dword [ebp + 8]
add eax, 1
push eax
push str.INDEX__d
push 1
call fcn.0043c7b0
mov ecx, dword [esp + 0x60]
add esp, 0xc
push ecx
push 0x20
push 0
push 0
push 0
push edi
mov edi, dword [esp + 0x80]
push edi
push ebx
call fcn.0049ae80
add esp, 0x20
test eax, eax
mov dword [esp + 0x34], eax
je 0x491074
mov edx, edi
push 0
lea ecx, [eax + 0x2f8]
mov edi, ebx
call fcn.0048de20
mov edx, dword [ebp + 0x10]
add esp, 4
test byte [edx + 0x28], 0x10
jne 0x490f54
mov eax, dword [esp + 0x30]
mov ecx, dword [eax + 0xc]
sub ecx, 1
cmp dword [esp + 0x28], ecx
jne 0x490dc8
or esi, 0xffffffff
jmp 0x490dcc
mov esi, dword [esp + 0x28]
mov edx, dword [esp + 0x38]
test byte [edx + 0x1c], 0x80
mov dword [esp + 0x2c], esi
jne 0x490e2b
mov ebx, dword [esp + 0x18]
mov eax, dword [esp + 0x50]
mov edi, dword [ebp + 0xc]
push 0
push ebx
push eax
push 0x87
push edi
call fcn.0043c3f0
mov ecx, dword [esp + 0x38]
add esp, 0x14
push ebx
push 0
push ecx
push 0x2f
push edi
call fcn.0043c3f0
mov edx, dword [edi]
add esp, 0x14
cmp byte [edx + 0x57], 0
jne 0x490e22
mov edx, dword [edi + 0x68]
lea ecx, [eax + eax*4]
lea ecx, [edx + ecx*4]
mov byte [ecx + 1], 0xfd
mov dword [ecx + 0x10], esi
mov dword [esp + 0x5c], eax
jmp 0x490f57
mov eax, edx
call fcn.00461340
movzx edi, word [eax + 0x32]
mov esi, edi
mov ecx, ebx
mov dword [esp + 0x14], eax
call fcn.00459ef0
xor esi, esi
test edi, edi
mov dword [esp + 0x40], eax
jle 0x490e7f
lea ecx, [ecx]
mov eax, dword [esp + 0x40]
mov edx, dword [esp + 0x14]
mov ebx, dword [esp + 0x38]
lea ecx, [esi + eax]
mov eax, dword [edx + 4]
mov edx, dword [ebp + 0xc]
movsx eax, word [eax + esi*2]
push ecx
mov ecx, dword [esp + 0x54]
push ecx
push edx
call fcn.004568a0
add esi, 1
add esp, 0xc
cmp esi, edi
jl 0x490e50
cmp dword [esp + 0x2c], 0
mov ebx, dword [esp + 0x40]
mov esi, dword [ebp + 0xc]
je 0x490ec3
mov eax, dword [esp + 0x24]
push ebx
push 0
push eax
push 0x1d
push esi
call fcn.0043c3f0
mov ecx, dword [esi]
add esp, 0x14
cmp byte [ecx + 0x57], 0
jne 0x490eb8
mov ecx, dword [esi + 0x68]
lea edx, [eax + eax*4]
lea ecx, [ecx + edx*4]
mov byte [ecx + 1], 0xfd
mov dword [ecx + 0x10], edi
cmp dword [esp + 0x2c], 0
mov dword [esp + 0x5c], eax
jl 0x490f21
mov edx, dword [esp + 0x18]
push edx
push edi
push ebx
push 0x61
push esi
call fcn.0043c3f0
mov eax, dword [esp + 0x2c]
mov ecx, dword [esp + 0x38]
add esp, 0x14
push ebx
push eax
push ecx
push 0x8a
push esi
call fcn.0043c3f0
mov edx, dword [esi]
add esp, 0x14
cmp byte [edx + 0x57], 0
jne 0x490f06
mov ecx, dword [esi + 0x68]
lea eax, [eax + eax*4]
lea eax, [ecx + eax*4]
mov byte [eax + 1], 0xfd
mov dword [eax + 0x10], edi
cmp dword [esp + 0x2c], 0
je 0x490f21
mov eax, dword [esi + 0x6c]
test eax, eax
jle 0x490f21
lea edx, [eax + eax*4]
mov eax, dword [esi + 0x68]
mov word [eax + edx*4 - 0x12], 0x10
cmp edi, 1
jne 0x490f46
test ebx, ebx
je 0x490f54
mov ecx, dword [ebp + 8]
mov al, byte [ecx + 0x13]
cmp al, 8
jae 0x490f54
movzx edx, al
mov eax, ecx
mov dword [eax + edx*4 + 0xa0], ebx
add byte [eax + 0x13], 1
jmp 0x490f54
mov eax, dword [ebp + 8]
cmp edi, dword [eax + 0x1c]
jle 0x490f54
mov dword [eax + 0x1c], edi
mov dword [eax + 0x20], ebx
mov edi, dword [ebp + 0xc]
mov eax, dword [edi + 0x6c]
cmp dword [edi + 0x70], eax
jg 0x490f79
mov ecx, dword [esp + 0x58]
mov edx, dword [esp + 0x1c]
push 0
push ecx
push edx
push 0xa
mov eax, edi
call fcn.0043c3b0
add esp, 0x10
jmp 0x490fa8
lea ecx, [eax + 1]
mov dword [edi + 0x6c], ecx
lea edx, [eax + eax*4]
mov eax, dword [edi + 0x68]
lea eax, [eax + edx*4]
mov edx, dword [esp + 0x1c]
xor ecx, ecx
mov dword [eax + 4], edx
mov edx, dword [esp + 0x58]
mov byte [eax], 0xa
mov word [eax + 2], cx
mov dword [eax + 8], edx
mov dword [eax + 0xc], ecx
mov dword [eax + 0x10], ecx
mov byte [eax + 1], cl
mov eax, dword [esp + 0x5c]
test eax, eax
je 0x490fce
mov edx, dword [edi]
cmp byte [edx + 0x57], 0
mov ecx, dword [edi + 0x6c]
je 0x490fc2
mov eax, 0x4d6798
jmp 0x490fcb
mov edx, dword [edi + 0x68]
lea eax, [eax + eax*4]
lea eax, [edx + eax*4]
mov dword [eax + 8], ecx
mov ecx, dword [esp + 0x34]
mov edx, dword [ecx + 0x30]
test dl, 2
je 0x490fe2
mov dword [esp + 0x48], 1
mov eax, dword [ecx + 0x348]
test dword [eax + 0x2c], 0x200
je 0x491022
cmp dword [esp + 0x28], 0
je 0x491001
mov esi, dword [esp + 0x74]
cmp dword [eax + 0x20], esi
jne 0x491022
mov esi, dword [esp + 0x38]
test byte [esi + 0x1c], 0x80
je 0x491019
mov esi, dword [eax + 0x20]
mov ebx, dword [esi + 0x38]
and bl, 3
cmp bl, 2
je 0x491022
mov eax, dword [eax + 0x20]
mov dword [esp + 0x74], eax
jmp 0x49102a
mov dword [esp + 0x74], 0
test dl, 1
je 0x491036
mov eax, dword [ebp + 0x10]
or dword [eax + 0x30], 1
push ecx
call fcn.0049ba00
mov edx, dword [ebp + 8]
mov eax, dword [edx + 0xe4]
add esp, 4
test eax, eax
je 0x49106a
mov ecx, dword [edx + 8]
mov esi, dword [ecx]
cmp byte [esi + 0x57], 0
je 0x49105e
mov eax, 0x4d6798
jmp 0x491067
mov ecx, dword [ecx + 0x68]
lea eax, [eax + eax*4]
lea eax, [ecx + eax*4]
mov eax, dword [eax + 8]
mov esi, dword [esp + 0x60]
mov dword [edx + 0xe4], eax
mov eax, dword [esp + 0x88]
test eax, eax
je 0x491089
push eax
push esi
call fcn.00452b80
add esp, 8
mov eax, dword [esp + 0x28]
mov edx, dword [esp + 0x30]
add dword [esp + 0x64], 0x30
add eax, 1
xor ebx, ebx
cmp eax, dword [edx + 0xc]
mov dword [esp + 0x28], eax
jl 0x490ce5
mov edx, dword [ebp + 8]
mov eax, dword [edx + 0xe4]
cmp eax, ebx
jne 0x4910b9
xor eax, eax
jmp 0x4910d7
mov ecx, dword [edx + 8]
mov esi, dword [ecx]
cmp byte [esi + 0x57], 0
je 0x4910cb
mov eax, 0x4d6798
jmp 0x4910d4
mov ecx, dword [ecx + 0x68]
lea eax, [eax + eax*4]
lea eax, [ecx + eax*4]
mov eax, dword [eax + 8]
mov edi, dword [ebp + 0x18]
mov dword [edx + 0xe4], eax
mov eax, dword [esp + 0x74]
cmp eax, ebx
mov dword [edi + 0x48], eax
je 0x4910f2
mov edx, dword [esp + 0x54]
mov dword [edi + 8], edx
mov eax, dword [esp + 0x3c]
cmp eax, ebx
je 0x49110d
mov dword [eax + 0xc], ebx
mov ebx, dword [esp + 0x60]
push eax
push ebx
call fcn.00452b80
add esp, 8
jmp 0x491111
mov ebx, dword [esp + 0x60]
mov esi, dword [ebp + 0xc]
mov eax, dword [esi]
cmp byte [eax + 0x57], 0
mov ecx, dword [esi + 0x6c]
je 0x491126
mov eax, 0x4d6798
jmp 0x491133
mov eax, dword [esp + 0x70]
lea edx, [eax + eax*4]
mov eax, dword [esi + 0x68]
lea eax, [eax + edx*4]
mov dword [eax + 4], ecx
mov eax, dword [esi + 0x6c]
cmp dword [esi + 0x70], eax
mov ecx, dword [edi + 0xc]
jg 0x491154
push 0
push ecx
push 0
push 9
mov eax, esi
call fcn.0043c3b0
add esp, 0x10
jmp 0x49117b
lea edx, [eax + 1]
mov dword [esi + 0x6c], edx
mov edx, dword [esi + 0x68]
lea eax, [eax + eax*4]
lea eax, [edx + eax*4]
xor edx, edx
mov byte [eax], 9
mov word [eax + 2], dx
mov dword [eax + 4], edx
mov dword [eax + 8], ecx
mov dword [eax + 0xc], edx
mov dword [eax + 0x10], edx
mov byte [eax + 1], dl
mov edi, dword [esi + 0xc]
mov ecx, dword [edi + 0x3c]
add ecx, dword [edi + 0x38]
mov eax, dword [esp + 0x58]
not eax
jns 0x491198
push eax
push esi
call fcn.0043ca00
add esp, 8
jmp 0x4911a1
mov edx, dword [edi + 0x40]
mov ecx, dword [esi + 0x6c]
mov dword [edx + eax*4], ecx
mov edx, dword [esi + 0x6c]
mov eax, dword [ebp + 0x18]
mov ecx, dword [ebp + 0x10]
mov dword [eax + 0x44], edx
cmp byte [ecx + 0x2c], 1
jbe 0x49120e
test ebx, ebx
mov eax, dword [esp + 0x68]
je 0x491205
cmp eax, dword [ebx + 0x164]
jae 0x4911f3
cmp eax, dword [ebx + 0x15c]
jb 0x4911db
mov edx, dword [ebx + 0x158]
mov dword [eax], edx
mov dword [ebx + 0x158], eax
jmp 0x49120e
cmp eax, dword [ebx + 0x160]
jb 0x4911f3
mov ecx, dword [ebx + 0x150]
mov dword [eax], ecx
mov dword [ebx + 0x150], eax
jmp 0x49120e
cmp dword [ebx + 0x210], 0
je 0x491205
mov ecx, ebx
call fcn.00419210
jmp 0x49120e
push eax
call fcn.004191a0
add esp, 4
cmp dword [esp + 0x48], 0
jne 0x49126e
mov eax, dword [esp + 0x10]
mov esi, dword [ebp + 0x18]
call fcn.0048e460
mov ebx, dword [ebp + 0xc]
jmp 0x491270
test al, 0x40
je 0x491233
mov edx, dword [ebp + 0x18]
mov byte [edx + 0x3d], 0xb8
jmp 0x491270
mov ecx, dword [esp + 0x48]
mov al, byte [ecx + 0x4c2f94]
mov edi, dword [ebp + 0x18]
mov edx, dword [esp + 0x18]
mov byte [edi + 0x3d], al
mov eax, dword [esp + 0x50]
push esi
push edx
mov dword [edi + 0x40], eax
movzx ecx, byte [ecx + 0x4c2f98]
push eax
push ecx
push ebx
call fcn.0043c3f0
add esp, 0x14
add eax, 1
mov dword [edi + 0x44], eax
mov byte [edi + 0x3f], 1
jmp 0x491270
mov ebx, esi
mov eax, dword [esp + 0x44]
neg eax
sbb eax, eax
add eax, 2
mov dword [esp + 0x30], eax
nop
mov eax, dword [esp + 0x7c]
mov edx, dword [eax + 0x18]
mov eax, dword [eax + 0xc]
test eax, eax
mov dword [esp + 0x18], 0
mov dword [esp + 0x10], edx
mov dword [esp + 0x14], eax
jle 0x49152e
movzx eax, word [edx + 0xa]
test al, 6
mov dword [esp + 0x2c], 0
jne 0x491514
mov eax, dword [ebp + 0x18]
mov edi, dword [eax + 0x5c]
mov esi, dword [eax + 0x58]
mov eax, dword [edx + 0x28]
mov ecx, dword [edx + 0x2c]
and eax, esi
and ecx, edi
or eax, ecx
mov dword [esp + 0x8c], edi
je 0x4912e0
mov eax, dword [ebp + 0x10]
or dword [eax + 0x30], 2
jmp 0x491514
mov eax, dword [edx]
mov ecx, dword [esp + 0x80]
mov dword [esp + 0x24], eax
mov al, byte [ecx + 0x24]
test al, 0x58
je 0x491381
mov ecx, dword [esp + 0x24]
mov ecx, dword [ecx + 4]
test cl, 3
je 0x491514
test al, 8
je 0x491315
test cl, 1
je 0x491514
mov edx, dword [esp + 0x24]
mov eax, dword [edx + 0x24]
mov ecx, dword [esp + 0x6c]
cmp dword [ecx + 8], eax
mov dword [esp + 0x70], eax
jne 0x491330
mov eax, 1
jmp 0x49136b
mov edx, dword [esp + 0x6c]
mov edx, dword [edx + 4]
mov ecx, 1
cmp edx, ecx
jle 0x491369
mov eax, dword [esp + 0x6c]
mov edi, dword [esp + 0x70]
add eax, 0xc
jmp 0x491350
cmp dword [eax], edi
je 0x491421
add ecx, 1
add eax, 4
cmp ecx, edx
jl 0x491350
mov edi, dword [esp + 0x8c]
xor eax, eax
xor edx, edx
and edi, edx
mov edx, dword [esp + 0x10]
and esi, eax
mov eax, esi
mov ecx, edi
or eax, ecx
jne 0x491514
mov eax, dword [esp + 0x30]
cmp eax, 1
jne 0x491439
xor eax, eax
cmp dword [esp + 0x24], 0
mov dword [esp + 0x98], eax
mov dword [esp + 0xac], eax
mov dword [esp + 0x94], eax
mov dword [esp + 0x9c], eax
mov dword [esp + 0xa0], eax
mov dword [esp + 0xa4], eax
mov dword [esp + 0xa8], eax
mov eax, dword [ebp + 0x18]
mov ecx, dword [eax + 4]
mov eax, dword [esp + 0x44]
mov dword [esp + 0x78], ecx
lea ecx, [esp + 0x74]
mov dword [esp + 0x74], eax
mov dword [esp + 0x98], 0x459720
mov dword [esp + 0xac], ecx
je 0x491409
mov edx, dword [esp + 0x24]
push edx
lea eax, [esp + 0x98]
push eax
call fcn.0044e710
mov edx, dword [esp + 0x18]
add esp, 8
cmp word [esp + 0xa8], 0
je 0x49143e
mov dword [esp + 0x18], 2
jmp 0x491514
mov eax, 1
xor edx, edx
call sub.ntdll.dll__allshl
mov edi, dword [esp + 0x8c]
jmp 0x49136d
cmp eax, 3
jge 0x491461
movzx eax, word [edx + 0xa]
test eax, 0x1000
je 0x491461
cmp dword [esp + 0x18], 0
jne 0x491514
mov dword [esp + 0x18], 3
jmp 0x491514
movzx eax, word [edx + 0xa]
test eax, 0x200
je 0x4914c8
mov ecx, dword [ebp + 0x18]
mov eax, dword [ecx + 0x2c]
test eax, eax
jbe 0x4914c8
mov esi, dword [ebx + 0x6c]
mov edi, eax
and eax, 1
or eax, 0x10
shr edi, 1
cmp dword [ebx + 0x70], esi
mov ecx, eax
jg 0x49149c
push 0
push 0
push edi
push ecx
mov eax, ebx
call fcn.0043c3b0
add esp, 0x10
jmp 0x4914c4
lea edx, [esi + 1]
mov dword [ebx + 0x6c], edx
mov edx, dword [ebx + 0x68]
lea eax, [esi + esi*4]
lea eax, [edx + eax*4]
mov byte [eax], cl
xor ecx, ecx
mov word [eax + 2], cx
mov dword [eax + 4], edi
mov dword [eax + 8], ecx
mov dword [eax + 0xc], ecx
mov dword [eax + 0x10], ecx
mov byte [eax + 1], cl
mov eax, esi
mov dword [esp + 0x2c], eax
mov eax, dword [esp + 0x84]
mov ecx, dword [esp + 0x24]
mov edx, dword [ebp + 8]
push 0x10
push eax
push ecx
push edx
call fcn.004589a0
mov eax, dword [esp + 0x3c]
add esp, 0x10
test eax, eax
je 0x491509
mov edx, dword [ebx]
cmp byte [edx + 0x57], 0
mov ecx, dword [ebx + 0x6c]
je 0x4914fd
mov eax, 0x4d6798
jmp 0x491506
mov edx, dword [ebx + 0x68]
lea eax, [eax + eax*4]
lea eax, [edx + eax*4]
mov dword [eax + 8], ecx
mov eax, dword [esp + 0x10]
or word [eax + 0xa], 4
mov edx, eax
mov eax, dword [esp + 0x14]
sub eax, 1
add edx, 0x30
test eax, eax
mov dword [esp + 0x14], eax
mov dword [esp + 0x10], edx
jg 0x4912a2
mov eax, dword [esp + 0x18]
test eax, eax
mov dword [esp + 0x30], eax
jg 0x491280
mov eax, dword [esp + 0x7c]
mov edi, dword [eax + 0x14]
test edi, edi
mov esi, dword [eax + 0x18]
mov dword [esp + 0x10], esi
mov dword [esp + 0x14], edi
jle 0x491656
test byte [esi + 0xa], 6
jne 0x491640
movzx eax, word [esi + 0xc]
test al, 0x82
je 0x491640
test eax, 0x800
je 0x491640
mov eax, dword [esi + 0x14]
cmp eax, dword [esp + 0x50]
jne 0x491640
mov ecx, dword [esp + 0x80]
test byte [ecx + 0x24], 0x58
jne 0x491640
mov edx, dword [esi]
mov eax, dword [ebp + 0x20]
mov ecx, dword [ebp + 0x1c]
push eax
mov eax, dword [esp + 0x54]
push ecx
mov ecx, dword [esp + 0x84]
mov dword [esp + 0x78], edx
mov edx, dword [esi + 0x18]
push edx
push eax
push ecx
xor ecx, ecx
mov edx, 0x83
call fcn.00494b10
add esp, 0x14
test eax, eax
mov dword [esp + 0x6c], eax
je 0x491640
test byte [eax + 0xa], 4
jne 0x491640
test byte [eax + 0xc], 1
je 0x4915ef
mov eax, dword [eax]
test dword [eax + 4], 0x1000
je 0x4915ef
mov edx, dword [eax + 0x14]
mov eax, dword [edx + 0x1c]
cmp dword [eax], 1
jg 0x491640
mov edx, dword [esp + 0x6c]
mov esi, dword [edx]
mov eax, dword [esp + 0x70]
mov edx, dword [esp + 0x84]
mov ecx, 0xd
lea edi, [esp + 0x94]
rep movsd dword es:[edi], dword [esi]
mov ecx, dword [eax + 0xc]
push 0x10
push edx
lea eax, [esp + 0x9c]
mov dword [esp + 0xa8], ecx
mov ecx, dword [ebp + 8]
push eax
push ecx
call fcn.004589a0
mov eax, dword [esp + 0x7c]
mov esi, dword [esp + 0x20]
mov edi, dword [esp + 0x24]
add esp, 0x10
or word [eax + 0xa], 4
sub edi, 1
add esi, 0x30
test edi, edi
mov dword [esp + 0x14], edi
mov dword [esp + 0x10], esi
jg 0x491558
mov edx, dword [ebp + 0x18]
mov eax, dword [edx + 0x38]
test eax, eax
mov dword [esp + 0x24], eax
je 0x4919f3
mov ecx, dword [ebp + 0x10]
mov esi, edx
movzx eax, byte [esi + 0x3c]
mov edx, dword [ecx + 4]
lea eax, [eax + eax*8]
mov eax, dword [edx + eax*8 + 0x18]
test byte [eax + 0x1c], 0x80
mov dword [esp + 0x88], eax
jne 0x49171b
mov ecx, dword [ebp + 8]
mov edx, dword [ecx + 0x1c]
cmp edx, 2
mov eax, dword [ecx + 0x20]
jl 0x4916a8
lea edi, [eax + 2]
add edx, 0xfffffffe
mov dword [ecx + 0x20], edi
mov dword [ecx + 0x1c], edx
jmp 0x4916b4
mov edx, dword [ecx + 0x2c]
lea eax, [edx + 1]
add edx, 2
mov dword [ecx + 0x2c], edx
mov edx, dword [esi + 4]
mov dword [esp + 0x44], eax
lea ecx, [eax + 1]
mov eax, dword [ebx + 0x6c]
cmp dword [ebx + 0x70], eax
jg 0x4916e6
push 0
push ecx
push edx
push 0x87
mov eax, ebx
call fcn.0043c3b0
add esp, 0x10
mov dword [esp + 0x1c], 1
jmp 0x4917d6
lea esi, [eax + 1]
mov dword [ebx + 0x6c], esi
mov esi, dword [ebx + 0x68]
lea eax, [eax + eax*4]
lea eax, [esi + eax*4]
xor esi, esi
mov byte [eax], 0x87
mov word [eax + 2], si
mov dword [eax + 4], edx
mov dword [eax + 8], ecx
mov dword [eax + 0xc], esi
mov dword [eax + 0x10], esi
mov byte [eax + 1], 0
mov dword [esp + 0x1c], 1
jmp 0x4917d6
mov edi, dword [eax + 8]
test edi, edi
je 0x491734
mov ecx, dword [edi + 0x38]
and cl, 3
cmp cl, 2
je 0x491734
mov edi, dword [edi + 0x14]
test edi, edi
jne 0x491722
movzx eax, word [edi + 0x32]
mov ecx, dword [ebp + 8]
mov dword [esp + 0x1c], eax
add eax, 1
cmp eax, 1
jne 0x491770
mov al, byte [ecx + 0x13]
test al, al
jne 0x49175b
add dword [ecx + 0x2c], 1
mov ecx, dword [ecx + 0x2c]
mov dword [esp + 0x44], ecx
jmp 0x49179d
sub al, 1
movzx edx, al
mov byte [ecx + 0x13], al
mov ecx, dword [ecx + edx*4 + 0xa0]
mov dword [esp + 0x44], ecx
jmp 0x49179d
mov edx, dword [ecx + 0x1c]
cmp eax, edx
mov esi, dword [ecx + 0x20]
mov dword [esp + 0x70], esi
jg 0x49178e
add esi, eax
sub edx, eax
mov dword [ecx + 0x20], esi
mov esi, dword [esp + 0x70]
mov dword [ecx + 0x1c], edx
jmp 0x491799
mov edx, dword [ecx + 0x2c]
lea esi, [edx + 1]
add edx, eax
mov dword [ecx + 0x2c], edx
mov dword [esp + 0x44], esi
xor esi, esi
cmp dword [esp + 0x1c], esi
jle 0x4917d6
mov eax, dword [esp + 0x44]
mov edx, dword [edi + 4]
lea ecx, [esi + eax + 1]
movsx eax, word [edx + esi*2]
push ecx
mov ecx, dword [esp + 0x54]
push ecx
push ebx
mov ebx, dword [esp + 0x94]
call fcn.004568a0
mov ebx, dword [ebp + 0xc]
add esi, 1
add esp, 0xc
cmp esi, dword [esp + 0x1c]
jl 0x4917a5
mov esi, dword [esp + 0x44]
mov ecx, dword [ebx + 0x6c]
mov edx, dword [esp + 0x24]
mov edx, dword [edx]
add esi, 1
cmp dword [ebx + 0x70], ecx
jg 0x491802
push esi
xor edi, edi
push edi
push edx
push 0x1d
mov eax, ebx
call fcn.0043c3b0
add esp, 0x10
mov dword [esp + 0x6c], eax
jmp 0x49182e
mov edi, dword [ebx + 0x68]
lea eax, [ecx + 1]
mov dword [ebx + 0x6c], eax
lea eax, [ecx + ecx*4]
lea eax, [edi + eax*4]
xor edi, edi
mov byte [eax], 0x1d
mov word [eax + 2], di
mov dword [eax + 4], edx
mov dword [eax + 8], edi
mov dword [eax + 0xc], esi
mov dword [eax + 0x10], edi
mov byte [eax + 1], 0
mov dword [esp + 0x6c], ecx
mov ecx, dword [ebx]
cmp byte [ecx + 0x57], 0
jne 0x49184e
mov eax, dword [esp + 0x6c]
mov ecx, dword [esp + 0x1c]
lea edx, [eax + eax*4]
mov eax, dword [ebx + 0x68]
lea eax, [eax + edx*4]
mov byte [eax + 1], 0xfd
mov dword [eax + 0x10], ecx
mov eax, dword [ebx + 0x6c]
cmp dword [ebx + 0x70], eax
jg 0x49186f
mov edx, dword [esp + 0x44]
mov eax, dword [esp + 0x1c]
push edx
push eax
push esi
push 0x61
mov eax, ebx
call fcn.0043c3b0
add esp, 0x10
jmp 0x49189d
lea ecx, [eax + 1]
mov dword [ebx + 0x6c], ecx
mov ecx, dword [esp + 0x1c]
lea edx, [eax + eax*4]
mov eax, dword [ebx + 0x68]
lea eax, [eax + edx*4]
mov edx, dword [esp + 0x44]
mov byte [eax], 0x61
mov word [eax + 2], di
mov dword [eax + 4], esi
mov dword [eax + 8], ecx
mov dword [eax + 0xc], edx
mov dword [eax + 0x10], edi
mov byte [eax + 1], 0
mov ecx, dword [ebx + 0x6c]
cmp dword [ebx + 0x70], ecx
mov eax, dword [esp + 0x24]
mov edx, dword [eax]
jg 0x4918c3
mov ecx, dword [esp + 0x44]
push esi
push ecx
push edx
push 0x8a
mov eax, ebx
call fcn.0043c3b0
add esp, 0x10
jmp 0x4918f1
mov edi, dword [ebx + 0x68]
lea eax, [ecx + 1]
mov dword [ebx + 0x6c], eax
lea eax, [ecx + ecx*4]
lea eax, [edi + eax*4]
mov dword [eax + 4], edx
mov edx, dword [esp + 0x44]
xor edi, edi
mov byte [eax], 0x8a
mov word [eax + 2], di
mov dword [eax + 8], edx
mov dword [eax + 0xc], esi
mov dword [eax + 0x10], edi
mov byte [eax + 1], 0
mov eax, ecx
mov ecx, dword [ebx]
cmp byte [ecx + 0x57], 0
jne 0x49190d
mov ecx, dword [esp + 0x1c]
lea edx, [eax + eax*4]
mov eax, dword [ebx + 0x68]
lea eax, [eax + edx*4]
mov byte [eax + 1], 0xfd
mov dword [eax + 0x10], ecx
mov edx, dword [esp + 0x24]
mov ecx, dword [ebx + 0x6c]
cmp dword [ebx + 0x70], ecx
mov eax, dword [edx + 4]
mov dword [esp + 0x70], eax
jg 0x491934
push esi
push edi
push eax
push 0xb4
mov eax, ebx
call fcn.0043c3b0
add esp, 0x10
jmp 0x491960
lea eax, [ecx + 1]
mov dword [ebx + 0x6c], eax
mov eax, dword [ebx + 0x68]
lea edx, [ecx + ecx*4]
lea eax, [eax + edx*4]
mov edx, dword [esp + 0x70]
mov byte [eax], 0xb4
mov word [eax + 2], di
mov dword [eax + 4], edx
mov dword [eax + 8], edi
mov dword [eax + 0xc], esi
mov dword [eax + 0x10], edi
mov byte [eax + 1], 0
mov eax, ecx
mov ecx, dword [ebx]
cmp byte [ecx + 0x57], 0
jne 0x49197c
mov ecx, dword [esp + 0x1c]
lea edx, [eax + eax*4]
mov eax, dword [ebx + 0x68]
lea eax, [eax + edx*4]
mov byte [eax + 1], 0xfd
mov dword [eax + 0x10], ecx
mov eax, dword [ebx + 0x6c]
cmp eax, edi
jle 0x491990
lea edx, [eax + eax*4]
mov eax, dword [ebx + 0x68]
mov word [eax + edx*4 - 0x12], 0x10
mov edx, dword [ebx]
cmp byte [edx + 0x57], 0
mov ecx, dword [ebx + 0x6c]
je 0x4919a2
mov eax, 0x4d6798
jmp 0x4919af
mov eax, dword [esp + 0x6c]
mov edx, dword [ebx + 0x68]
lea eax, [eax + eax*4]
lea eax, [edx + eax*4]
mov dword [eax + 8], ecx
mov eax, dword [esp + 0x1c]
add eax, 1
cmp eax, 1
jne 0x4919e1
mov edx, dword [esp + 0x44]
cmp edx, edi
je 0x4919f3
mov eax, dword [ebp + 8]
mov cl, byte [eax + 0x13]
cmp cl, 8
jae 0x4919f3
movzx ecx, cl
mov dword [eax + ecx*4 + 0xa0], edx
add byte [eax + 0x13], 1
jmp 0x4919f3
mov ecx, dword [ebp + 8]
cmp eax, dword [ecx + 0x1c]
jle 0x4919f3
mov edx, dword [esp + 0x44]
mov dword [ecx + 0x1c], eax
mov dword [ecx + 0x20], edx
mov esi, dword [ebp + 0x18]
xor edi, edi
cmp dword [esi], edi
je 0x491a4d
mov eax, dword [ebx + 0x6c]
mov ecx, dword [esi]
mov dword [esi + 0x1c], eax
mov eax, dword [ebx + 0x6c]
cmp dword [ebx + 0x70], eax
jg 0x491a1e
push edi
push ecx
push 1
push 0x47
mov eax, ebx
call fcn.0043c3b0
add esp, 0x10
jmp 0x491a48
lea edx, [eax + 1]
mov dword [ebx + 0x6c], edx
mov edx, dword [ebx + 0x68]
lea eax, [eax + eax*4]
lea eax, [edx + eax*4]
mov byte [eax], 0x47
mov word [eax + 2], di
mov dword [eax + 4], 1
mov dword [eax + 8], ecx
mov dword [eax + 0xc], edi
mov dword [eax + 0x10], edi
mov byte [eax + 1], 0
cmp dword [esi + 0x38], edi
je 0x491aaf
mov edx, dword [esi + 0x38]
cmp edx, edi
mov dword [esp + 0x24], edx
je 0x491b12
mov eax, dword [ebx + 0x6c]
cmp dword [ebx + 0x70], eax
mov ecx, dword [edx + 8]
jg 0x491a7c
push edi
push ecx
push edi
push 0x4a
mov eax, ebx
call fcn.0043c3b0
mov edx, dword [esp + 0x34]
add esp, 0x10
jmp 0x491aa2
lea esi, [eax + 1]
mov dword [ebx + 0x6c], esi
mov esi, dword [ebx + 0x68]
lea eax, [eax + eax*4]
lea eax, [esi + eax*4]
mov byte [eax], 0x4a
mov word [eax + 2], di
mov dword [eax + 4], edi
mov dword [eax + 8], ecx
mov dword [eax + 0xc], edi
mov dword [eax + 0x10], edi
mov byte [eax + 1], 0
mov ecx, dword [ebx + 0x6c]
mov eax, dword [ebp + 8]
mov dword [edx + 0xc], ecx
add byte [eax + 0x1a], 1
mov ebx, dword [esp + 0x7c]
cmp dword [ebx + 0x14], edi
mov esi, dword [ebx + 0x18]
jle 0x491b0f
jmp 0x491ac0
test byte [esi + 0xa], 6
jne 0x491b04
mov edx, dword [ebp + 0x18]
mov eax, dword [esi + 0x28]
mov ecx, dword [esi + 0x2c]
and eax, dword [edx + 0x58]
and ecx, dword [edx + 0x5c]
or eax, ecx
jne 0x491b04
mov edx, dword [esp + 0x80]
test byte [edx + 0x24], 0x40
jne 0x491b04
mov eax, dword [esp + 0x84]
mov ecx, dword [esi]
mov edx, dword [ebp + 8]
push 0x10
push eax
push ecx
push edx
call fcn.004589a0
add esp, 0x10
or word [esi + 0xa], 4
add edi, 1
add esi, 0x30
cmp edi, dword [ebx + 0x14]
jl 0x491ac0
mov esi, dword [ebp + 0x18]
mov eax, dword [esi + 0x58]
mov edx, dword [esi + 0x5c]
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret