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

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
sub esp, 0xcc
mov eax, dword [0x4e2040]
xor eax, esp
mov dword [esp + 0xc8], eax
mov eax, ecx
mov ecx, dword [ebp + 0x14]
push ebx
mov dword [esp + 0x10], eax
xor ebx, ebx
push esi
mov eax, dword [eax]
mov esi, edx
mov edx, dword [ebp + 8]
push edi
mov edi, dword [ebp + 0x10]
mov dword [esp + 0x5c], eax
mov dword [esp + 0x78], ecx
mov ecx, dword [ebp + 0x18]
mov eax, dword [edi + 0x50]
mov dword [esp + 0x24], eax
movzx eax, byte [edi + 0x3c]
mov dword [esp + 0x90], ecx
lea ecx, [edx + 0x50]
mov dword [esp + 0x7c], ecx
imul ecx, eax, 0x48
mov eax, dword [edx + 4]
add eax, 8
mov dword [esp + 0x4c], edx
mov dword [esp + 0x38], esi
mov dword [esp + 0x88], edi
add eax, ecx
mov dword [esp + 0x6c], ebx
mov dword [esp + 0x84], eax
lea ecx, [edx + 0x1f0]
mov eax, dword [eax + 0x2c]
mov edx, eax
mov dword [esp + 0x54], eax
call fcn.00499991
mov ecx, dword [esp + 0x4c]
not eax
and eax, dword [esp + 0x78]
not edx
and edx, dword [esp + 0x90]
mov dword [edi + 0x58], eax
mov dword [edi + 0x5c], edx
mov eax, dword [ecx + 0x48]
mov edx, dword [ecx + 0x4c]
mov ecx, dword [ebp + 0xc]
call fcn.004bea00
xor ecx, ecx
inc ecx
and eax, ecx
mov ecx, dword [esp + 0x18]
mov dword [esp + 0x50], eax
mov eax, dword [ecx + 0x38]
dec eax
mov dword [ecx + 0x38], eax
mov dword [edi + 0x10], eax
mov dword [edi + 0xc], eax
mov dword [esp + 0x28], eax
mov eax, dword [ecx + 0x38]
dec eax
mov dword [ecx + 0x38], eax
mov dword [esp + 0x98], eax
mov dword [edi + 0x18], eax
cmp byte [edi + 0x3c], bl
jbe 0x49581a
mov eax, dword [esp + 0x84]
test byte [eax + 0x24], 8
je 0x49581a
mov eax, dword [ecx + 0x2c]
inc eax
push ebx
push eax
push ebx
mov dword [ecx + 0x2c], eax
mov ecx, esi
push 0x47
pop edx
mov dword [edi], eax
call fcn.004591cc
add esp, 0xc
mov eax, dword [ebp + 0xc]
mov ecx, eax
mov edx, dword [esp + 0x4c]
test eax, eax
jle 0x495842
imul eax, eax, 0x60
add eax, 0x330
add eax, edx
cmp dword [eax - 0x38], ebx
jne 0x495842
cmp dword [eax], ebx
jne 0x495842
dec ecx
sub eax, 0x60
test ecx, ecx
jg 0x495831
imul eax, ecx, 0x60
push 0xb
pop ecx
mov eax, dword [eax + edx + 0x304]
mov dword [esp + 0x1c], eax
mov eax, dword [esp + 0x84]
test byte [eax + 0x28], 0x20
je 0x495899
push dword [eax + 0x18]
mov esi, dword [eax + 0x1c]
mov edx, ecx
mov ecx, dword [esp + 0x3c]
push ebx
push esi
call fcn.004591cc
add esp, 0xc
push ebx
push dword [esp + 0x2c]
push esi
mov esi, dword [esp + 0x44]
mov ecx, esi
push 0xc
pop edx
call fcn.004591cc
add esp, 0xc
mov dword [edi + 0x44], eax
mov byte [edi + 0x3d], 9
jmp 0x496f0c
mov eax, dword [esp + 0x24]
mov edx, dword [eax + 0x2c]
bt edx, 0xa
jae 0x495c38
movzx eax, word [eax + 0x30]
mov ecx, dword [esp + 0x18]
mov dword [esp + 0x1c], eax
lea edx, [eax + 2]
call fcn.0046f3dc
mov ecx, ebx
mov dword [esp + 0x3c], eax
mov eax, dword [edi + 0xc]
mov dword [esp + 0x28], eax
mov dword [esp + 0x14], ebx
cmp dword [esp + 0x1c], ecx
jbe 0x495971
mov eax, dword [esp + 0x24]
mov eax, dword [eax + 0x38]
mov edx, dword [eax + ecx*4]
mov dword [esp + 0x10], edx
test edx, edx
je 0x49595e
xor eax, eax
inc eax
test byte [edx + 0xc], al
je 0x495a77
mov edx, eax
xor eax, eax
shl edx, cl
cmp ecx, 0x1f
cmovbe eax, edx
mov edx, dword [esp + 0x24]
test dword [edx + 0x28], eax
je 0x495a4b
mov ecx, dword [esp + 0x18]
mov edi, dword [ecx + 0x28]
inc dword [ecx + 0x2c]
mov esi, dword [ecx + 0x2c]
push edi
lea eax, [edi + 1]
mov dword [ecx + 0x28], eax
mov eax, dword [esp + 0x14]
mov edx, dword [eax]
call fcn.0046b7f0
mov eax, dword [esp + 0x18]
mov edx, 0xae
pop ecx
mov ecx, dword [esp + 0x3c]
add ecx, 2
push esi
mov esi, dword [esp + 0x3c]
add eax, ecx
push eax
push edi
mov ecx, esi
call fcn.004591cc
mov edi, dword [esp + 0x94]
add esp, 0xc
mov ecx, dword [esp + 0x14]
mov eax, dword [esp + 0x24]
inc ecx
mov dword [esp + 0x14], ecx
cmp ecx, dword [esp + 0x1c]
jl 0x4958dd
mov eax, dword [esp + 0x24]
mov ecx, esi
push ebx
push dword [esp + 0x40]
push dword [eax + 0x18]
push 0x47
pop edx
call fcn.004591cc
mov eax, dword [esp + 0x48]
add esp, 0xc
inc eax
mov ecx, esi
push ebx
push eax
push dword [esp + 0x24]
push 0x47
pop edx
call fcn.004591cc
mov ecx, dword [esp + 0x30]
add esp, 0xc
xor eax, eax
inc eax
test byte [ecx + 0x1c], al
push 0xffffffffffffffff
pop eax
push 0xfffffffffffffffa
pop edx
cmovne eax, edx
push eax
push dword [ecx + 0x24]
mov ecx, esi
push dword [esp + 0x44]
push dword [esp + 0x34]
push dword [esp + 0x64]
push 6
pop edx
call fcn.004592f6
mov edx, dword [esp + 0x38]
add esp, 0x14
mov eax, dword [esp + 0x5c]
and dword [edx + 0x1c], 0xfffffffe
cmp byte [eax + 0x57], bl
je 0x4959e6
mov dword [edx + 0x24], ebx
mov eax, dword [esp + 0x54]
mov ecx, dword [esp + 0x4c]
mov dword [edi + 0x40], eax
push 0x3f
pop eax
cmp byte [ecx + 0x2e], bl
lea ecx, [eax + 0x79]
cmovne eax, ecx
mov ecx, ebx
mov byte [edi + 0x3d], al
mov eax, dword [esi + 0x6c]
mov dword [edi + 0x44], eax
mov dword [esp + 0x14], ecx
cmp dword [esp + 0x1c], ecx
jbe 0x496f0c
mov eax, dword [edx + 0x38]
mov edx, dword [eax + ecx*4]
mov dword [esp + 0x30], edx
cmp ecx, 0x10
jae 0x495ace
mov eax, dword [esp + 0x24]
mov ax, word [eax + 0x22]
shr ax, cl
xor ecx, ecx
inc ecx
test cl, al
je 0x495aca
mov ecx, edi
call fcn.004949ac
jmp 0x495c1c
mov eax, dword [esp + 0x3c]
mov edx, dword [esp + 0x10]
add eax, 2
add eax, ecx
push eax
push dword [esp + 0x54]
push ecx
mov ecx, dword [esp + 0x24]
push edi
call fcn.00494cbe
mov eax, dword [edi + 0x10]
add esp, 0x10
mov dword [esp + 0x28], eax
jmp 0x49595a
mov edx, dword [edx]
push eax
mov eax, dword [esp + 0x40]
add eax, 2
mov edx, dword [edx + 0x10]
add eax, ecx
mov ecx, dword [esp + 0x1c]
push eax
call fcn.0049550c
mov eax, dword [esp + 0x18]
pop ecx
pop ecx
cmp byte [eax + 0xf], 0x4a
mov eax, dword [esp + 0x24]
jne 0x495ac1
test byte [eax + 0x1c], 2
je 0x495ac1
mov eax, dword [esp + 0x4c]
mov ecx, esi
push ebx
mov eax, dword [eax + 0x10]
push dword [eax + 0xc]
push ebx
push 0x47
pop edx
call fcn.004591cc
jmp 0x495957
mov ecx, dword [esp + 0x14]
jmp 0x495962
mov ecx, dword [esp + 0x14]
xor eax, eax
inc eax
test byte [edx + 0xc], al
je 0x495c20
mov edx, eax
xor eax, eax
shl edx, cl
cmp ecx, 0x1f
cmovbe eax, edx
mov edx, dword [esp + 0x24]
test dword [edx + 0x28], eax
jne 0x495c24
mov eax, dword [esp + 0x5c]
cmp byte [eax + 0x57], bl
jne 0x495c24
mov dword [esp + 0x10], ebx
cmp dword [edi + 0x48], ebx
jle 0x495b87
mov eax, dword [edi + 0x4c]
add eax, 4
mov dword [esp + 0x28], eax
mov edx, dword [eax]
mov ecx, esi
call fcn.00459a36
mov ecx, eax
mov al, byte [ecx]
mov byte [esp + 0x4b], al
cmp al, 0x5e
jne 0x495b3a
mov esi, dword [esp + 0x3c]
mov eax, dword [esp + 0x14]
add esi, 2
add eax, esi
cmp dword [ecx + 0xc], eax
jmp 0x495b4e
cmp al, 0x87
jne 0x495b54
mov esi, dword [esp + 0x3c]
mov eax, dword [esp + 0x14]
add esi, 2
add eax, esi
cmp dword [ecx + 8], eax
mov esi, dword [esp + 0x38]
je 0x495b6f
mov ecx, dword [esp + 0x10]
mov eax, dword [esp + 0x28]
inc ecx
add eax, 0x14
mov dword [esp + 0x10], ecx
mov dword [esp + 0x28], eax
cmp ecx, dword [edi + 0x48]
jl 0x495b13
jmp 0x495b87
push dword [ecx + 0xc]
movzx edx, byte [esp + 0x4f]
push dword [ecx + 8]
push dword [ecx + 4]
mov ecx, esi
call fcn.004591cc
add esp, 0xc
mov ecx, dword [esp + 0x18]
push ebx
push ebx
push 0x35
pop edx
call fcn.00469b63
mov edx, eax
mov eax, dword [esp + 0x64]
pop ecx
pop ecx
mov dword [esp + 0x10], edx
cmp byte [eax + 0x57], bl
jne 0x495c11
mov eax, dword [esp + 0x30]
mov ecx, dword [eax + 0x1c]
mov eax, dword [eax]
mov eax, dword [eax + 0xc]
test ecx, ecx
jle 0x495bc0
mov eax, dword [eax + 0x14]
imul ecx, ecx, 0x14
mov eax, dword [eax + ecx - 0xc]
mov ecx, dword [esp + 0x5c]
mov dword [edx + 0xc], eax
mov edx, 0xb0
push ebx
call fcn.00469abd
mov edx, dword [esp + 0x14]
pop ecx
mov ecx, eax
mov dword [edx + 0x10], ecx
test ecx, ecx
je 0x495c0a
mov esi, dword [esp + 0x3c]
mov eax, dword [esp + 0x14]
add esi, 2
add eax, esi
push 0x10
mov dword [ecx + 0x1c], eax
push dword [edi + 0x18]
push edx
push dword [esp + 0x24]
call fcn.0046e269
mov esi, dword [esp + 0x48]
add esp, 0x10
mov edx, dword [esp + 0x10]
mov eax, dword [esp + 0x5c]
mov dword [edx + 0xc], ebx
test edx, edx
je 0x495c1c
mov ecx, eax
call fcn.00469f9d
mov ecx, dword [esp + 0x14]
mov edx, dword [esp + 0x24]
inc ecx
mov dword [esp + 0x14], ecx
cmp ecx, dword [esp + 0x1c]
jl 0x495a16
jmp 0x496f0c
test dl, 5
setne cl
bt edx, 8
setb al
test al, cl
je 0x495d07
mov eax, dword [esp + 0x24]
mov ecx, dword [esp + 0x18]
mov eax, dword [eax + 0x38]
mov edx, dword [eax]
inc dword [ecx + 0x2c]
mov eax, dword [ecx + 0x2c]
push eax
push dword [esp + 0x54]
mov dword [esp + 0x18], eax
push ebx
push edi
call fcn.00494cbe
mov edx, dword [esp + 0x20]
mov ecx, eax
add esp, 0x10
mov dword [esp + 0x28], ecx
cmp ecx, edx
je 0x495c8e
mov ecx, dword [esp + 0x18]
call fcn.0046f3c3
mov ecx, dword [esp + 0x28]
mov eax, dword [edi + 0x10]
mov dword [esp + 0x10], eax
cmp dword [edi + 0x34], ebx
je 0x495cec
push ebx
push eax
push ecx
push 0xd
pop edx
mov ecx, esi
call fcn.004591cc
add esp, 0xc
xor eax, eax
inc eax
mov ecx, esi
push eax
push dword [esp + 0x2c]
push dword [esp + 0x18]
push dword [edi + 0x34]
push 0x40
pop edx
call fcn.004594df
push dword [esp + 0xa0]
mov edx, dword [esp + 0x60]
push dword [esp + 0x8c]
mov ecx, dword [esp + 0x30]
push dword [esp + 0x28]
push dword [ebp + 0xc]
call fcn.004955ee
mov eax, dword [esp + 0x30]
add esp, 0x20
push dword [esp + 0x28]
mov ecx, esi
push eax
push dword [esp + 0x5c]
push 0x1e
pop edx
call fcn.004591cc
add esp, 0xc
jmp 0x496ed1
mov ecx, 0x102
mov eax, edx
and eax, ecx
cmp eax, ecx
jne 0x495f3d
mov dword [esp + 0x34], 0xb8
mov ecx, ebx
mov dword [esp + 0x74], ebx
mov dword [esp + 0x30], ebx
mov dword [esp + 0x10], ecx
test dl, 0x20
je 0x495d49
mov eax, dword [esp + 0x24]
push 4
mov eax, dword [eax + 0x38]
mov ecx, dword [eax]
pop eax
mov dword [esp + 0x10], ecx
mov dword [esp + 0x2c], eax
jmp 0x495d4d
mov dword [esp + 0x2c], ebx
test dl, 0x10
je 0x495d66
mov eax, dword [esp + 0x24]
mov edx, dword [esp + 0x2c]
mov eax, dword [eax + 0x38]
mov edx, dword [edx + eax]
mov dword [esp + 0x30], edx
jmp 0x495d68
mov edx, ebx
mov eax, dword [esp + 0x50]
test eax, eax
je 0x495d7a
mov dword [esp + 0x30], ecx
mov ecx, edx
mov dword [esp + 0x10], ecx
test ecx, ecx
je 0x495e2d
mov edx, dword [ecx]
mov dword [esp + 0x1c], 0x17151618
mov dword [esp + 0x2c], edx
mov ecx, dword [edx + 0x10]
call fcn.00469495
cmp eax, 1
jle 0x495dd1
mov ecx, dword [esp + 0x18]
call fcn.0046f3a4
mov edx, dword [edx + 0x10]
push 1
push eax
mov dword [esp + 0x18], eax
call fcn.0049550c
mov edx, dword [esp + 0x18]
pop ecx
pop ecx
mov ecx, dword [esp + 0x2c]
movzx eax, byte [ecx]
xor ecx, ecx
inc eax
inc ecx
and eax, 2
or eax, ecx
mov cl, byte [esp + eax + 0x1c]
jmp 0x495e08
lea eax, [esp + 0x68]
mov edx, ecx
mov ecx, dword [esp + 0x18]
push eax
call fcn.0046db76
mov edx, dword [esp + 0x14]
pop ecx
mov ecx, edi
mov dword [esp + 0x14], eax
call fcn.004949ac
mov ecx, dword [esp + 0x2c]
mov edx, dword [esp + 0x14]
movzx eax, byte [ecx]
mov cl, byte [esp + eax - 0x1a]
mov eax, dword [esp + 0x68]
mov dword [esp + 0x10], eax
push edx
push dword [esp + 0x2c]
movzx edx, cl
mov ecx, esi
push dword [esp + 0x5c]
call fcn.004591cc
mov edx, dword [esp + 0x1c]
add esp, 0xc
mov ecx, dword [esp + 0x18]
call fcn.0046f3c3
jmp 0x495e52
mov edx, eax
mov ecx, esi
xor eax, eax
inc eax
push ebx
push dword [esp + 0x20]
xor edx, eax
push dword [esp + 0x5c]
lea edx, [edx*4 + 0x20]
call fcn.004591cc
mov ecx, dword [esp + 0x24]
add esp, 0xc
mov eax, dword [esp + 0x30]
test eax, eax
je 0x495ece
mov eax, dword [eax]
inc dword [ecx + 0x2c]
mov edx, dword [ecx + 0x2c]
push 1
mov dword [esp + 0x78], edx
push edx
mov edx, dword [eax + 0x10]
mov dword [esp + 0x18], eax
call fcn.0049550c
mov edx, dword [esp + 0x18]
pop ecx
pop ecx
mov ecx, dword [edx + 0x10]
call fcn.00469495
cmp eax, 1
jg 0x495ea8
mov al, byte [edx]
cmp al, 0x38
je 0x495e92
cmp al, 0x36
jne 0x495ea8
mov eax, dword [esp + 0x50]
xor edx, edx
inc edx
xor eax, edx
lea edx, [eax*2 + 0x37]
mov dword [esp + 0x34], edx
jmp 0x495eb7
mov eax, dword [esp + 0x50]
lea eax, [eax*2 + 0x36]
mov dword [esp + 0x34], eax
call fcn.00469495
xor ecx, ecx
inc ecx
cmp eax, ecx
jg 0x495ece
mov edx, dword [esp + 0x30]
mov ecx, edi
call fcn.004949ac
cmp dword [esp + 0x50], ebx
mov ecx, dword [esi + 0x6c]
mov edx, dword [esp + 0x54]
sete al
add al, 0x26
mov dword [edi + 0x40], edx
cmp dword [esp + 0x34], 0xb8
mov byte [edi + 0x3d], al
mov dword [edi + 0x44], ecx
je 0x496f0c
mov eax, dword [esp + 0x18]
mov ecx, dword [esp + 0x38]
push ebx
inc dword [eax + 0x2c]
mov esi, dword [eax + 0x2c]
push esi
push edx
mov edx, 0x87
call fcn.004591cc
mov edx, dword [esp + 0x40]
add esp, 0xc
push esi
push dword [esp + 0x2c]
mov esi, dword [esp + 0x40]
mov ecx, esi
push dword [esp + 0x7c]
call fcn.004591cc
add esp, 0xc
mov ecx, esi
push 0x53
pop edx
call fcn.0045974e
jmp 0x496f0c
test edx, 0x200
je 0x496871
mov ecx, dword [esp + 0x24]
mov dword [esp + 0x44], ebx
mov dword [esp + 0x70], ebx
mov dword [esp + 0x28], ebx
movzx eax, word [ecx + 0x18]
mov dword [esp + 0x60], eax
movzx eax, ax
mov dword [esp + 0x58], eax
movzx eax, word [ecx + 0x1a]
mov dword [esp + 0x74], eax
movzx eax, word [ecx + 0x1c]
mov ecx, ebx
mov dword [esp + 0x68], eax
mov eax, dword [esp + 0x24]
mov dword [esp + 0x14], ecx
mov byte [esp + 0x23], bl
mov byte [esp + 0x4b], bl
mov eax, dword [eax + 0x20]
mov dword [esp + 0x6c], eax
mov eax, dword [edi + 8]
mov dword [esp + 0x3c], eax
mov eax, dword [esp + 0x60]
movzx eax, ax
mov dword [esp + 0x40], ebx
mov dword [esp + 0x30], ebx
mov dword [esp + 0x34], eax
test dl, 0x20
je 0x495fd4
mov eax, dword [esp + 0x24]
mov ecx, dword [esp + 0x34]
inc dword [esp + 0x34]
mov eax, dword [eax + 0x38]
mov eax, dword [eax + ecx*4]
mov ecx, dword [esp + 0x24]
mov dword [esp + 0x44], eax
movzx eax, word [ecx + 0x1a]
mov ecx, eax
mov dword [esp + 0x14], eax
test dl, 0x10
je 0x4960ac
mov eax, dword [esp + 0x24]
mov edx, dword [esp + 0x34]
mov eax, dword [eax + 0x38]
mov eax, dword [eax + edx*4]
mov edx, dword [esp + 0x24]
mov dword [esp + 0x70], eax
movzx edx, word [edx + 0x1c]
cmp ecx, edx
cmova edx, ecx
mov ecx, pe_nt_image_headers32
mov dword [esp + 0x10], edx
test word [eax + 0xa], cx
je 0x49605b
mov ecx, dword [esp + 0x18]
push ebx
mov eax, dword [ecx + 0x2c]
inc eax
mov dword [ecx + 0x2c], eax
mov ecx, esi
push eax
mov dword [edi + 0x2c], eax
xor eax, eax
inc eax
push eax
push 0x47
pop edx
call fcn.004591cc
mov eax, dword [esi + 0x6c]
add esp, 0xc
mov ecx, dword [esp + 0x6c]
shl dword [edi + 0x2c], 1
mov esi, dword [esp + 0x60]
mov dword [edi + 0x30], eax
mov eax, dword [ecx + 0x1c]
xor ecx, ecx
movzx edx, si
mov esi, dword [esp + 0x38]
cmp byte [edx + eax], 1
mov edx, dword [esp + 0x10]
sete cl
xor ecx, dword [esp + 0x50]
or dword [edi + 0x2c], ecx
mov dword [esp + 0x14], edx
cmp dword [esp + 0x44], ebx
jne 0x4960ac
mov eax, dword [esp + 0x60]
movzx ecx, ax
mov eax, dword [esp + 0x6c]
mov eax, dword [eax + 4]
movsx ecx, word [eax + ecx*2]
mov dword [esp + 0x10], ecx
test ecx, ecx
js 0x496096
mov eax, dword [esp + 0x6c]
add ecx, ecx
mov eax, dword [eax + 0xc]
mov eax, dword [eax + 4]
test byte [eax + ecx*8 + 4], 0xf
je 0x49609f
mov ecx, dword [esp + 0x10]
mov dword [esp + 0x14], edx
cmp ecx, 0xfffffffe
jne 0x4960ac
xor ecx, ecx
mov dword [esp + 0x14], edx
inc ecx
mov byte [esp + 0x23], cl
jmp 0x4960af
xor ecx, ecx
inc ecx
mov eax, dword [esp + 0x24]
mov eax, dword [eax + 0x2c]
and eax, 0x80030
cmp eax, 0x80000
jne 0x4960fd
mov dword [esp + 0x14], ecx
mov byte [esp + 0x23], cl
mov ecx, dword [esp + 0x18]
inc dword [ecx + 0x2c]
mov eax, dword [ecx + 0x2c]
mov dword [esp + 0x40], eax
mov dword [edi + 0x24], eax
cmp dword [edi], ebx
je 0x4960f3
push ebx
push eax
push ebx
push 0x47
pop edx
mov ecx, esi
call fcn.004591cc
mov ecx, dword [esp + 0x24]
add esp, 0xc
mov eax, dword [ecx + 0x38]
dec eax
mov dword [ecx + 0x38], eax
mov dword [edi + 0x28], eax
mov edx, dword [esp + 0x6c]
mov eax, dword [esp + 0x60]
cmp ax, word [edx + 0x34]
jae 0x496151
movzx ecx, ax
mov eax, dword [edx + 0x1c]
xor edx, edx
cmp byte [ecx + eax], dl
sete dl
cmp dword [esp + 0x50], edx
jne 0x496151
mov eax, dword [esp + 0x70]
mov ecx, dword [esp + 0x44]
mov edx, dword [esp + 0x68]
mov dword [esp + 0x44], eax
mov al, byte [esp + 0x23]
mov byte [esp + 0x4b], al
mov eax, dword [esp + 0x74]
mov dword [esp + 0x70], ecx
movzx ecx, dx
movzx eax, al
mov byte [esp + 0x23], bl
mov dword [esp + 0x74], ecx
mov dword [esp + 0x68], eax
cmp dword [ebp + 0xc], ebx
jle 0x496178
mov eax, dword [esp + 0x24]
test dword [eax + 0x2c], 0x100000
je 0x496178
push ebx
push ebx
push dword [esp + 0x44]
mov edx, 0x88
mov ecx, esi
call fcn.004591cc
add esp, 0xc
mov ecx, dword [esp + 0x18]
lea eax, [esp + 0x1c]
push eax
push dword [esp + 0x18]
mov edx, edi
push dword [esp + 0x58]
call fcn.004950ff
add esp, 0xc
mov dword [esp + 0x64], eax
cmp dword [esp + 0x1c], ebx
je 0x4961bc
cmp word [esp + 0x68], bx
je 0x4961bc
mov eax, dword [esp + 0x60]
mov ecx, dword [esp + 0x5c]
movzx edx, ax
add edx, dword [esp + 0x1c]
call fcn.0043f379
mov dword [esp + 0x28], eax
cmp dword [esp + 0x40], ebx
je 0x4961c7
mov eax, dword [edi + 0x28]
jmp 0x4961ca
mov eax, dword [edi + 0x10]
mov ecx, dword [esp + 0x44]
mov dword [esp + 0x14], eax
test ecx, ecx
je 0x4961e5
test byte [ecx + 0xc], 0x28
jne 0x4961e5
xor edx, edx
mov dword [esp + 0x34], ebx
inc edx
jmp 0x4961ec
xor edx, edx
inc edx
mov dword [esp + 0x34], edx
mov eax, dword [esp + 0x70]
test eax, eax
je 0x4961fe
test byte [eax + 0xc], 0x28
mov dword [esp + 0x10], ebx
je 0x496202
mov dword [esp + 0x10], edx
mov edx, dword [esp + 0x60]
test ecx, ecx
jne 0x496233
test dx, dx
jne 0x496233
mov eax, dword [esp + 0x58]
movzx eax, ax
mov dword [esp + 0x2c], ebx
mov dword [esp + 0x58], eax
mov al, byte [esp + 0x23]
test al, al
je 0x496316
mov dword [esp + 0x34], ebx
jmp 0x49631c
movzx eax, dx
mov dword [esp + 0x58], eax
xor eax, eax
inc eax
mov dword [esp + 0x2c], eax
test ecx, ecx
je 0x49621e
mov eax, dword [ecx]
mov ecx, dword [eax + 0x10]
mov eax, dword [esp + 0x74]
movzx edx, ax
mov eax, dword [esp + 0x60]
movzx eax, ax
add eax, dword [esp + 0x64]
push edx
mov dword [esp + 0x30], ecx
mov edx, ecx
mov ecx, dword [esp + 0x1c]
push eax
mov dword [esp + 0x88], eax
call fcn.0049550c
push dword [esp + 0x4c]
mov esi, dword [esp + 0x44]
mov edx, edi
mov ecx, esi
call fcn.0049541a
mov eax, dword [esp + 0x50]
add esp, 0xc
test byte [eax + 0xa], 0x80
jne 0x4962b8
mov ecx, dword [esp + 0x2c]
call fcn.0046b01c
test eax, eax
je 0x4962b8
push ebx
push dword [esp + 0x18]
mov ecx, esi
push dword [esp + 0x88]
push 0x32
pop edx
call fcn.004591cc
add esp, 0xc
cmp dword [esp + 0x1c], ebx
je 0x4962db
mov eax, dword [esp + 0x60]
mov ecx, dword [esp + 0x2c]
movzx eax, ax
add eax, dword [esp + 0x1c]
push eax
mov eax, dword [esp + 0x78]
movzx edx, ax
call fcn.00494a58
pop ecx
mov ecx, dword [esp + 0x74]
movzx eax, cx
add dword [esp + 0x58], eax
mov ecx, dword [esp + 0x2c]
call fcn.00469495
xor ecx, ecx
inc ecx
cmp eax, ecx
jg 0x496306
mov edx, dword [esp + 0x44]
mov ecx, edi
call fcn.004949ac
xor ecx, ecx
inc ecx
jmp 0x49630a
mov dword [esp + 0x34], ecx
mov al, bl
mov dword [esp + 0x2c], ecx
mov byte [esp + 0x23], al
jmp 0x496342
cmp dword [esp + 0x40], ebx
je 0x496342
movzx eax, dx
mov ecx, esi
add eax, dword [esp + 0x64]
push ebx
push eax
push ebx
push 0x4b
pop edx
call fcn.004591cc
xor eax, eax
add esp, 0xc
inc eax
inc dword [esp + 0x58]
mov dword [esp + 0x2c], eax
mov al, byte [esp + 0x23]
mov ecx, dword [esp + 0x58]
push dword [esp + 0x1c]
mov edx, dword [esp + 0x68]
movzx eax, al
sub ecx, eax
push ecx
mov ecx, dword [esp + 0x20]
call fcn.00494a10
mov eax, dword [esp + 0x2c]
pop ecx
pop ecx
movzx eax, word [eax + 0x32]
test ax, ax
je 0x496376
cmp dword [esp + 0x58], eax
je 0x4964cd
mov eax, dword [esp + 0x40]
test eax, eax
je 0x496391
push ebx
push eax
xor eax, eax
mov ecx, esi
inc eax
push eax
push 0x47
pop edx
call fcn.004591cc
add esp, 0xc
cmp dword [edi + 0x34], ebx
je 0x4963d8
mov eax, dword [esp + 0x60]
mov ecx, esi
movzx eax, ax
push eax
push dword [esp + 0x68]
push dword [esp + 0x1c]
push dword [edi + 0x34]
push 0x40
pop edx
call fcn.004594df
push dword [esp + 0xa0]
mov edx, dword [esp + 0x60]
push dword [esp + 0x8c]
mov ecx, dword [esp + 0x30]
push dword [esp + 0x2c]
push dword [ebp + 0xc]
call fcn.004955ee
add esp, 0x20
mov eax, dword [esp + 0x2c]
mov ecx, dword [esp + 0x34]
lea eax, [ecx + eax*2]
mov ecx, dword [esp + 0x50]
movzx eax, byte [ecx + eax*2 + 0x4cdd48]
mov ecx, dword [esp + 0x24]
mov dword [esp + 0x2c], eax
test dword [ecx + 0x2c], 0x100000
je 0x49645c
cmp eax, 0x17
jne 0x49645c
mov eax, dword [esp + 0x6c]
push 0xa
pop ecx
push ebx
mov eax, dword [eax + 8]
push ebx
movsx eax, word [eax]
add eax, 9
cdq
idiv ecx
mov ecx, esi
push eax
push 0x7c
pop edx
call fcn.004591cc
add esp, 0xc
mov dword [esp + 0x30], eax
cmp dword [esp + 0x44], ebx
je 0x496458
xor eax, eax
mov ecx, esi
lea edx, [eax + 1]
call fcn.0045974e
mov esi, dword [esi + 0x6c]
mov edx, dword [esp + 0x30]
inc esi
mov ecx, dword [esp + 0x38]
call fcn.00459a36
mov dword [esp + 0x30], ebx
mov dword [eax + 8], esi
mov esi, ecx
mov eax, dword [esp + 0x2c]
push dword [esp + 0x58]
mov edx, eax
mov ecx, esi
push dword [esp + 0x68]
push dword [esp + 0x1c]
push dword [esp + 0x48]
call fcn.004594df
mov ecx, dword [esp + 0x50]
add esp, 0x10
test ecx, ecx
je 0x4964d1
mov eax, dword [esi + 0x6c]
mov ecx, esi
push ebx
add eax, 2
push eax
push ebx
push 9
pop edx
call fcn.004591cc
mov eax, dword [esp + 0x64]
add esp, 0xc
sub eax, dword [esp + 0x34]
mov ecx, dword [esp + 0x50]
push eax
push dword [esp + 0x68]
xor eax, eax
push dword [esp + 0x1c]
inc eax
cmp eax, dword [esp + 0x64]
push dword [esp + 0x48]
sbb eax, eax
and eax, 4
movzx edx, byte [eax + ecx + 0x4cdd4a]
mov ecx, esi
call fcn.004594df
add esp, 0x10
mov ecx, dword [esp + 0x40]
mov eax, dword [esp + 0x60]
movzx edx, ax
mov dword [esp + 0x44], edx
cmp dword [esp + 0x70], ebx
je 0x4965c7
mov eax, dword [esp + 0x70]
mov eax, dword [eax]
mov ecx, dword [eax + 0x10]
mov dword [esp + 0x34], ecx
cmp dword [esp + 0x30], ebx
je 0x4964ff
mov eax, dword [esi + 0x6c]
mov dword [edi + 0x44], eax
mov eax, dword [esp + 0x68]
movzx edx, ax
mov eax, dword [esp + 0x60]
movzx eax, ax
add eax, dword [esp + 0x64]
push edx
mov edx, ecx
mov dword [esp + 0x30], eax
mov ecx, dword [esp + 0x1c]
push eax
call fcn.0049550c
push dword [esp + 0x78]
mov esi, dword [esp + 0x44]
mov edx, edi
mov ecx, esi
call fcn.0049541a
mov eax, dword [esp + 0x7c]
add esp, 0xc
test byte [eax + 0xa], 0x80
jne 0x496563
mov ecx, dword [esp + 0x34]
call fcn.0046b01c
test eax, eax
je 0x496563
push ebx
push dword [esp + 0x18]
mov ecx, esi
push dword [esp + 0x34]
push 0x32
pop edx
call fcn.004591cc
add esp, 0xc
mov eax, dword [esp + 0x28]
test eax, eax
je 0x496599
mov ecx, dword [esp + 0x34]
push eax
mov eax, dword [esp + 0x6c]
movzx edx, ax
call fcn.00494a58
mov eax, dword [esp + 0x2c]
mov edx, dword [esp + 0x6c]
pop ecx
mov ecx, dword [esp + 0x18]
push eax
movzx eax, dx
mov edx, dword [esp + 0x30]
push eax
call fcn.00494a10
pop ecx
pop ecx
mov ecx, dword [esp + 0x68]
movzx eax, cx
add dword [esp + 0x44], eax
mov ecx, dword [esp + 0x34]
call fcn.00469495
xor ecx, ecx
inc ecx
cmp eax, ecx
jg 0x4965c1
mov edx, dword [esp + 0x70]
mov ecx, edi
call fcn.004949ac
jmp 0x4965f5
mov dword [esp + 0x10], ecx
jmp 0x4965f5
cmp byte [esp + 0x4b], bl
je 0x4965f5
test ecx, ecx
jne 0x4965f0
push ebx
movzx eax, ax
mov ecx, esi
add eax, dword [esp + 0x68]
push eax
push ebx
push 0x4b
pop edx
call fcn.004591cc
mov edx, dword [esp + 0x50]
add esp, 0xc
mov dword [esp + 0x10], ebx
inc edx
mov dword [esp + 0x44], edx
cmp dword [esp + 0x1c], ebx
je 0x496608
mov edx, dword [esp + 0x1c]
mov ecx, dword [esp + 0x5c]
call fcn.0043ef4e
mov eax, dword [esp + 0x28]
test eax, eax
je 0x49661b
mov ecx, dword [esp + 0x5c]
mov edx, eax
call fcn.0043ef4e
cmp dword [edi + 0x44], ebx
jne 0x496626
mov eax, dword [esi + 0x6c]
mov dword [edi + 0x44], eax
mov eax, dword [esp + 0x44]
test eax, eax
je 0x49668e
mov ecx, dword [esp + 0x40]
test ecx, ecx
je 0x496650
mov eax, dword [esi + 0x6c]
push ebx
add eax, 3
push eax
push ecx
push 0x11
pop edx
mov ecx, esi
call fcn.004591cc
mov eax, dword [esp + 0x50]
add esp, 0xc
mov ecx, dword [esp + 0x50]
push eax
push dword [esp + 0x68]
mov eax, dword [esp + 0x18]
push dword [esp + 0x1c]
push dword [esp + 0x48]
movzx edx, byte [eax + ecx*2 + str.___]
mov ecx, esi
call fcn.004594df
mov eax, dword [esp + 0x40]
add esp, 0x10
test eax, eax
je 0x49668e
mov edx, eax
mov ecx, esi
call fcn.00459a36
mov ecx, dword [esi + 0x6c]
mov dword [eax + 8], ecx
mov ecx, dword [esp + 0x40]
test ecx, ecx
je 0x4966dd
mov eax, dword [esi + 0x6c]
push ebx
add eax, 2
push eax
push ecx
push 0x10
pop edx
mov ecx, esi
call fcn.004591cc
movzx eax, byte [esp + 0x2f]
add esp, 0xc
add eax, dword [esp + 0x44]
mov ecx, dword [esp + 0x50]
push eax
push dword [esp + 0x68]
movzx eax, byte [esp + 0x2b]
push dword [esp + 0x1c]
push dword [esp + 0x48]
movzx edx, byte [eax + ecx*2 + str.___]
mov ecx, esi
call fcn.004594df
add esp, 0x10
mov eax, dword [esp + 0x24]
test dword [eax + 0x2c], 0x40000
je 0x49670b
mov ecx, dword [esp + 0x60]
movzx eax, cx
push eax
movzx eax, cx
mov ecx, esi
push eax
push dword [esp + 0x44]
push 0x7d
pop edx
call fcn.004591cc
mov eax, dword [esp + 0x30]
add esp, 0xc
test byte [eax + 0x2c], 0x40
mov eax, dword [esp + 0x4c]
je 0x49672c
mov ecx, 0x1020
test word [eax + 0x28], cx
jne 0x49672c
xor eax, eax
inc eax
mov dword [esp + 0x30], eax
jmp 0x496804
mov edx, dword [esp + 0x6c]
mov ecx, dword [edx + 0xc]
test byte [ecx + 0x1c], 0x80
jne 0x496753
push dword [esp + 0x3c]
mov ecx, eax
push dword [esp + 0x58]
call fcn.0049544f
pop ecx
pop ecx
mov dword [esp + 0x30], ebx
jmp 0x496804
mov eax, dword [esp + 0x54]
mov dword [esp + 0x30], ebx
cmp eax, dword [esp + 0x3c]
je 0x49680c
call fcn.00474bb9
mov ecx, dword [esp + 0x18]
mov dword [esp + 0x10], eax
movzx edx, word [eax + 0x32]
call fcn.0046f3dc
mov ecx, dword [esp + 0x10]
and dword [esp + 0x80], ebx
mov dword [esp + 0x28], eax
mov dword [esp + 0x30], ebx
movzx eax, word [ecx + 0x32]
mov edx, eax
cmp word [esp + 0x80], ax
jae 0x4967e4
mov dword [esp + 0x30], ebx
mov edi, ebx
mov edx, dword [ecx + 4]
mov ecx, dword [esp + 0x6c]
mov dx, word [edx + edi*2]
call fcn.00474bd1
movsx ecx, ax
mov eax, dword [esp + 0x28]
add eax, edi
push eax
push ecx
push dword [esp + 0x44]
mov ecx, esi
push 0x5e
pop edx
call fcn.004591cc
mov ecx, dword [esp + 0x1c]
add esp, 0xc
inc edi
movzx edx, word [ecx + 0x32]
cmp edi, edx
jl 0x4967a4
mov edi, dword [esp + 0x88]
movzx eax, dx
mov ecx, esi
push eax
push dword [esp + 0x2c]
push dword [esp + 0xa0]
push dword [esp + 0x60]
push 0x1c
pop edx
call fcn.004594df
add esp, 0x10
mov eax, dword [esp + 0x54]
mov edx, dword [esp + 0x6c]
cmp dword [edi], ebx
jne 0x496823
mov ecx, dword [edx + 0x24]
test ecx, ecx
je 0x496823
push dword [esp + 0x7c]
mov edx, eax
call fcn.00495587
pop ecx
mov ecx, dword [esp + 0x24]
mov eax, 0x1000
test dword [ecx + 0x2c], eax
je 0x496837
mov byte [edi + 0x3d], 0xb8
jmp 0x496843
cmp dword [esp + 0x50], ebx
sete al
add al, 0x26
mov byte [edi + 0x3d], al
mov eax, dword [esp + 0x3c]
xor edx, edx
mov dword [edi + 0x40], eax
inc edx
mov al, byte [ecx + 0x2e]
and al, dl
mov byte [edi + 0x3e], al
test byte [ecx + 0x2c], 0xf
jne 0x49685e
mov byte [edi + 0x3f], dl
cmp dword [esp + 0x30], ebx
je 0x496f0c
mov dword [esp + 0x6c], ebx
jmp 0x496f0c
test edx, 0x2000
je 0x496ec4
mov edx, dword [esp + 0x18]
mov dword [esp + 0x44], ebx
mov dword [esp + 0x34], ebx
mov dword [esp + 0x30], ebx
mov eax, dword [edx + 0x28]
mov dword [esp + 0x60], eax
inc eax
inc dword [edx + 0x2c]
mov dword [edx + 0x28], eax
mov eax, dword [edx + 0x2c]
mov dword [esp + 0x3c], eax
mov eax, dword [edx + 0x38]
dec eax
mov dword [esp + 0x58], ebx
mov dword [edx + 0x38], eax
mov dword [esp + 0x50], eax
mov eax, dword [esp + 0x84]
mov dword [esp + 0x14], ebx
mov ecx, dword [eax + 0x10]
mov eax, dword [esp + 0x24]
mov dword [esp + 0x68], ecx
mov eax, dword [eax + 0x38]
mov eax, dword [eax]
mov dword [esp + 0x24], eax
mov eax, dword [eax + 0x18]
mov dword [esp + 0x28], eax
mov eax, dword [esp + 0x3c]
mov dword [edi + 0x40], eax
mov eax, dword [esp + 0x4c]
mov byte [edi + 0x3d], 0x43
mov al, byte [eax + 0x2c]
cmp al, 1
jbe 0x4969e2
movzx eax, al
sub eax, dword [ebp + 0xc]
dec eax
imul ecx, eax, 0x48
push ebx
mov dword [esp + 0x14], eax
add ecx, 0x50
push ecx
mov ecx, dword [esp + 0x64]
call fcn.0043f1a0
pop ecx
pop ecx
mov ecx, eax
mov dword [esp + 0x40], ecx
test ecx, ecx
jne 0x496929
mov eax, dword [esp + 0x78]
mov edx, dword [esp + 0x90]
jmp 0x4973fd
mov al, byte [esp + 0x10]
inc al
movzx eax, al
push 0x48
push dword [esp + 0x88]
mov dword [ecx + 4], eax
mov dword [ecx], eax
lea eax, [ecx + 8]
push eax
call fcn.004b1c10
mov ecx, dword [esp + 0x58]
xor eax, eax
inc eax
add esp, 0xc
mov ecx, dword [ecx + 4]
add ecx, 8
mov dword [esp + 0x2c], ecx
cmp dword [esp + 0x10], eax
jl 0x4969ad
mov eax, dword [esp + 0x40]
lea esi, [edi + 0x9c]
mov ebx, dword [esp + 0x10]
add eax, 0x50
mov dword [esp + 0x80], eax
mov edi, eax
movzx eax, byte [esi]
imul eax, eax, 0x48
push 0x48
add eax, ecx
push eax
push edi
call fcn.004b1c10
mov ecx, dword [esp + 0x38]
lea esi, [esi + 0x60]
add esp, 0xc
add edi, 0x48
sub ebx, 1
jne 0x49697d
mov edi, dword [esp + 0x88]
xor ebx, ebx
mov esi, dword [esp + 0x38]
mov ecx, dword [esp + 0x68]
mov edx, dword [esp + 0x18]
mov eax, dword [esp + 0x4c]
test byte [eax + 0x28], 0x10
jne 0x496a37
test byte [ecx + 0x1c], 0x80
jne 0x4969ef
mov eax, dword [edx + 0x2c]
mov ecx, esi
inc eax
push ebx
push eax
push ebx
mov dword [edx + 0x2c], eax
push 0x4b
pop edx
mov dword [esp + 0x40], eax
call fcn.004591cc
add esp, 0xc
jmp 0x496a28
mov eax, dword [esp + 0x4c]
mov eax, dword [eax + 4]
mov dword [esp + 0x40], eax
jmp 0x4969b5
call fcn.00474bb9
mov esi, eax
mov eax, dword [edx + 0x28]
push ebx
mov dword [esp + 0x38], eax
lea ecx, [eax + 1]
mov dword [edx + 0x28], ecx
movzx ecx, word [esi + 0x32]
push ecx
mov ecx, dword [esp + 0x40]
push eax
push 0x76
pop edx
call fcn.004591cc
mov ecx, dword [esp + 0x24]
add esp, 0xc
mov edx, esi
call fcn.00459a1b
mov esi, dword [esp + 0x38]
mov ecx, dword [esp + 0x18]
mov eax, dword [ecx + 0x2c]
inc eax
mov dword [esp + 0x30], eax
mov dword [ecx + 0x2c], eax
push ebx
push dword [esp + 0x40]
mov ecx, esi
push ebx
push 0x47
pop edx
call fcn.004591cc
mov dword [esp + 0x98], eax
xor ecx, ecx
mov eax, dword [esp + 0x88]
inc ecx
add esp, 0xc
cmp dword [eax + 0xc], ecx
jle 0x496b1a
mov esi, dword [esp + 0x18]
mov edx, ebx
mov dword [esp + 0x10], edx
mov ecx, ebx
mov dword [esp + 0x2c], ebx
jmp 0x496a78
mov eax, edi
mov eax, dword [eax + 0x18]
add eax, ecx
mov edi, dword [eax]
mov dword [esp + 0x80], edi
cmp eax, dword [esp + 0x24]
je 0x496adc
mov edi, 0x8006
test word [eax + 0xa], di
jne 0x496adc
mov edi, 0x3fff
test word [eax + 0xc], di
je 0x496adc
mov eax, dword [esp + 0x80]
test dword [eax + 4], 0x400000
jne 0x496adc
mov ecx, dword [esp + 0x5c]
mov edx, eax
push ebx
push ebx
call fcn.0046a101
mov edx, dword [esp + 0x1c]
mov ecx, esi
push eax
call fcn.00469cd7
mov ecx, dword [esp + 0x38]
add esp, 0xc
mov edx, dword [esp + 0x10]
mov dword [esp + 0x14], eax
jmp 0x496ae0
mov eax, dword [esp + 0x14]
mov edi, dword [esp + 0x7c]
inc edx
add ecx, 0x30
mov dword [esp + 0x10], edx
mov dword [esp + 0x2c], ecx
cmp edx, dword [edi + 0xc]
jl 0x496a76
mov edi, dword [esp + 0x88]
mov esi, dword [esp + 0x38]
test eax, eax
je 0x496b1a
mov ecx, dword [esp + 0x18]
mov edx, 0x1002c
push eax
push ebx
call fcn.00469b63
pop ecx
pop ecx
mov dword [esp + 0x14], eax
xor eax, eax
push str.MULTI_INDEX_OR
inc eax
push eax
push dword [esp + 0x20]
call fcn.0045940c
mov edx, dword [esp + 0x34]
add esp, 0xc
mov ecx, ebx
mov dword [esp + 0x1c], ebx
cmp dword [edx + 0xc], ebx
jle 0x496e37
mov edi, dword [esp + 0x18]
imul eax, ecx, 0x30
add eax, dword [edx + 0x18]
mov edx, dword [esp + 0x54]
cmp dword [eax + 0x14], edx
je 0x496b64
mov edx, 0x400
test word [eax + 0xc], dx
je 0x496e1c
mov edx, dword [eax]
mov dword [esp + 0x70], ebx
test edx, edx
je 0x496b85
mov ecx, dword [esp + 0x5c]
push ebx
push ebx
call fcn.0046a101
pop ecx
pop ecx
mov ecx, dword [esp + 0x1c]
mov dword [esp + 0x10], eax
jmp 0x496b8b
mov eax, ebx
mov dword [esp + 0x10], ebx
mov edx, dword [esp + 0x5c]
mov dword [esp + 0x94], eax
cmp byte [edx + 0x57], 0
je 0x496ba9
test eax, eax
je 0x496e1c
jmp 0x496e0d
mov edx, dword [esp + 0x14]
test edx, edx
je 0x496bb8
mov dword [edx + 0xc], eax
mov dword [esp + 0x10], edx
lea eax, [ecx + 1]
push eax
xor eax, eax
push str.INDEX__d
inc eax
push eax
push edi
call fcn.0045940c
push dword [esp + 0x70]
mov edx, dword [esp + 0x54]
mov ecx, edi
push 0x20
push ebx
push ebx
push ebx
push dword [esp + 0x34]
call fcn.0049e7d9
add esp, 0x28
mov dword [esp + 0x64], eax
test eax, eax
je 0x496e02
mov edx, dword [esp + 0x40]
lea ecx, [eax + 0x2f8]
push ebx
push ecx
mov ecx, edi
call fcn.0049457d
mov eax, dword [esp + 0x54]
pop ecx
pop ecx
test byte [eax + 0x28], 0x10
jne 0x496d5c
mov eax, dword [esp + 0x28]
mov ecx, dword [esp + 0x1c]
push 0xffffffffffffffff
mov eax, dword [eax + 0xc]
dec eax
cmp ecx, eax
pop eax
cmove ecx, eax
mov eax, dword [esp + 0x68]
mov dword [esp + 0x10], ecx
test byte [eax + 0x1c], 0x80
jne 0x496c72
push ebx
push dword [esp + 0x34]
mov edx, 0x87
mov ecx, esi
push dword [esp + 0x5c]
call fcn.004591cc
add esp, 0xc
mov ecx, esi
push dword [esp + 0x10]
push dword [esp + 0x34]
push ebx
push dword [esp + 0x40]
push 0x2f
pop edx
call fcn.004594df
add esp, 0x10
mov dword [esp + 0x70], eax
jmp 0x496d5c
mov ecx, eax
call fcn.00474bb9
mov ecx, edi
mov dword [esp + 0x9c], eax
movzx edx, word [eax + 0x32]
mov dword [esp + 0x2c], edx
call fcn.0046f3dc
mov dword [esp + 0x74], eax
mov dword [esp + 0x80], ebx
test edx, edx
je 0x496cdb
mov edi, edx
mov edx, dword [esp + 0x68]
lea ecx, [ebx + eax]
mov eax, dword [esp + 0x9c]
push ecx
mov ecx, esi
mov eax, dword [eax + 4]
movsx eax, word [eax + ebx*2]
push eax
push dword [esp + 0x5c]
call fcn.0046c5f4
mov eax, dword [esp + 0x80]
add esp, 0xc
inc ebx
cmp ebx, edi
jl 0x496ca0
mov edi, dword [esp + 0x18]
xor ebx, ebx
mov edx, dword [esp + 0x2c]
cmp dword [esp + 0x10], 0
je 0x496d01
push edx
push eax
push ebx
push dword [esp + 0x40]
mov ecx, esi
push 0x1d
pop edx
call fcn.004594df
add esp, 0x10
mov dword [esp + 0x70], eax
cmp dword [esp + 0x10], 0
jl 0x496d4a
push dword [esp + 0x30]
mov ecx, esi
push dword [esp + 0x30]
push dword [esp + 0x7c]
push 0x61
pop edx
call fcn.004591cc
add esp, 0xc
mov edx, 0x8a
mov ecx, esi
push dword [esp + 0x2c]
push dword [esp + 0x78]
push dword [esp + 0x38]
push dword [esp + 0x40]
call fcn.004594df
add esp, 0x10
cmp dword [esp + 0x10], 0
je 0x496d4a
push 0x10
pop edx
mov ecx, esi
call fcn.0045974e
push dword [esp + 0x2c]
mov edx, dword [esp + 0x78]
mov ecx, edi
call fcn.0046f412
add esp, 4
push ebx
push dword [esp + 0x54]
mov ecx, esi
push dword [esp + 0x44]
push 0xa
pop edx
call fcn.004591cc
mov eax, dword [esp + 0x7c]
add esp, 0xc
test eax, eax
je 0x496d89
mov edx, eax
mov ecx, esi
call fcn.00459a36
mov ecx, dword [esi + 0x6c]
mov dword [eax + 8], ecx
mov eax, dword [esp + 0x64]
mov ecx, dword [esp + 0x58]
push 1
pop edx
test byte [eax + 0x30], 2
cmovne ecx, edx
mov dword [esp + 0x58], ecx
mov ecx, dword [eax + 0x348]
test dword [ecx + 0x2c], 0x200
je 0x496de1
cmp dword [esp + 0x1c], 0
je 0x496dbe
mov edx, dword [esp + 0x44]
cmp dword [ecx + 0x20], edx
jne 0x496de1
mov edx, dword [esp + 0x68]
test byte [edx + 0x1c], 0x80
je 0x496dd8
mov eax, dword [ecx + 0x20]
mov eax, dword [eax + 0x38]
and al, 3
cmp al, 2
mov eax, dword [esp + 0x64]
je 0x496de1
mov ecx, dword [ecx + 0x20]
mov dword [esp + 0x44], ecx
jmp 0x496de5
mov dword [esp + 0x44], ebx
xor edx, edx
inc edx
test byte [eax + 0x30], dl
je 0x496df4
mov ecx, dword [esp + 0x4c]
or dword [ecx + 0x30], edx
mov ecx, eax
call fcn.0049f234
mov ecx, edi
call fcn.0045945d
mov eax, dword [esp + 0x94]
test eax, eax
je 0x496e18
mov ecx, dword [esp + 0x5c]
mov edx, eax
call fcn.00469f9d
mov ecx, dword [esp + 0x1c]
mov eax, dword [esp + 0x28]
inc ecx
mov dword [esp + 0x1c], ecx
mov edx, eax
cmp ecx, dword [eax + 0xc]
jl 0x496b46
mov edi, dword [esp + 0x88]
mov ecx, dword [esp + 0x18]
call fcn.0045945d
mov eax, dword [esp + 0x44]
mov dword [edi + 0x48], eax
test eax, eax
je 0x496e52
mov eax, dword [esp + 0x60]
mov dword [edi + 8], eax
mov eax, dword [esp + 0x14]
test eax, eax
je 0x496e68
mov ecx, dword [esp + 0x5c]
mov edx, eax
mov dword [eax + 0xc], ebx
call fcn.00469f9d
mov edx, dword [esp + 0x8c]
mov ecx, esi
call fcn.00459a36
mov ecx, dword [esi + 0x6c]
mov dword [eax + 4], ecx
mov ecx, esi
mov edx, dword [edi + 0xc]
call fcn.00459225
mov edx, dword [esp + 0x50]
mov ecx, esi
call fcn.00459579
mov eax, dword [esi + 0x6c]
xor ecx, ecx
mov dword [edi + 0x44], eax
inc ecx
mov eax, dword [esp + 0x4c]
cmp byte [eax + 0x2c], cl
jbe 0x496eb0
mov edx, dword [esp + 0x40]
mov ecx, dword [esp + 0x5c]
call fcn.0043eeff
cmp dword [esp + 0x58], 0
jne 0x496f0c
mov edx, dword [esp + 0x24]
mov ecx, edi
call fcn.004949ac
jmp 0x496f0c
mov eax, dword [esp + 0x84]
test byte [eax + 0x28], 0x40
je 0x496ed7
mov byte [edi + 0x3d], 0xb8
jmp 0x496f0c
mov ecx, dword [esp + 0x50]
push ebx
push dword [esp + 0x20]
mov al, byte [ecx + 0x4cc2f4]
movzx edx, byte [ecx + 0x4cc354]
mov ecx, esi
mov byte [edi + 0x3d], al
mov eax, dword [esp + 0x5c]
push eax
mov dword [edi + 0x40], eax
call fcn.004591cc
add esp, 0xc
inc eax
mov dword [edi + 0x44], eax
xor eax, eax
inc eax
mov byte [edi + 0x3f], al
xor eax, eax
cmp dword [esp + 0x6c], eax
sete al
inc eax
mov dword [esp + 0x30], eax
mov ecx, dword [esp + 0x7c]
mov eax, ebx
mov dword [esp + 0x40], eax
mov edx, dword [ecx + 0x18]
mov ecx, dword [ecx + 0xc]
jmp 0x49706c
test byte [edx + 0xa], 6
mov dword [esp + 0x28], ebx
jne 0x497068
mov ecx, dword [edi + 0x58]
mov eax, dword [edx + 0x2c]
and ecx, dword [edx + 0x28]
and eax, dword [edi + 0x5c]
or ecx, eax
je 0x496f5a
mov eax, dword [esp + 0x4c]
or dword [eax + 0x30], 2
jmp 0x497060
mov eax, dword [esp + 0x84]
mov ecx, dword [edx]
mov dword [esp + 0x10], ecx
mov al, byte [eax + 0x24]
test al, 0x58
je 0x496fb0
test byte [ecx + 4], 3
je 0x497060
test al, 8
je 0x496f88
xor eax, eax
inc eax
test byte [ecx + 4], al
je 0x497060
mov edx, dword [ecx + 0x24]
mov ecx, dword [esp + 0x4c]
lea ecx, [ecx + 0x1f0]
call fcn.00499991
and edx, dword [edi + 0x5c]
and eax, dword [edi + 0x58]
or eax, edx
mov edx, dword [esp + 0x1c]
jne 0x497060
mov ecx, dword [esp + 0x10]
mov eax, dword [esp + 0x30]
cmp eax, 1
jne 0x496fda
push dword [esp + 0x6c]
mov edx, dword [edi + 4]
call fcn.0046ed48
mov edx, dword [esp + 0x20]
pop ecx
test eax, eax
jne 0x496fdf
push 2
pop eax
mov dword [esp + 0x40], eax
jmp 0x497064
cmp eax, 3
jge 0x496ff6
mov eax, 0x1000
test word [edx + 0xa], ax
je 0x496ff6
mov eax, dword [esp + 0x40]
test eax, eax
jne 0x497064
push 3
jmp 0x496fd0
mov eax, 0x200
test word [edx + 0xa], ax
je 0x497025
mov edx, dword [edi + 0x2c]
test edx, edx
je 0x497025
mov eax, edx
mov ecx, esi
push ebx
shr eax, 1
push ebx
push eax
xor eax, eax
inc eax
and edx, eax
or edx, 0x10
call fcn.004591cc
add esp, 0xc
mov dword [esp + 0x28], eax
push 0x10
push dword [esp + 0x9c]
push dword [esp + 0x18]
push dword [esp + 0x24]
call fcn.0046e269
mov eax, dword [esp + 0x38]
add esp, 0x10
test eax, eax
je 0x497055
mov edx, eax
mov ecx, esi
call fcn.00459a36
mov ecx, dword [esi + 0x6c]
mov dword [eax + 8], ecx
mov edx, dword [esp + 0x1c]
push 4
pop eax
or word [edx + 0xa], ax
mov eax, dword [esp + 0x40]
mov ecx, dword [esp + 0x14]
dec ecx
add edx, 0x30
mov dword [esp + 0x14], ecx
mov dword [esp + 0x1c], edx
test ecx, ecx
jg 0x496f2f
mov dword [esp + 0x30], eax
test eax, eax
jg 0x496f1a
mov eax, dword [esp + 0x7c]
mov esi, dword [eax + 0x18]
mov eax, dword [eax + 0x14]
mov dword [esp + 0x28], esi
mov dword [esp + 0x10], eax
test eax, eax
jle 0x4971b2
mov edi, eax
test byte [esi + 0xa], 6
jne 0x497197
movzx eax, word [esi + 0xc]
test al, 0x82
push 0xb
setne cl
pop edx
bt ax, dx
setb al
test al, cl
je 0x497197
mov ecx, dword [esp + 0x54]
cmp dword [esi + 0x14], ecx
jne 0x497197
mov eax, dword [esp + 0x84]
test byte [eax + 0x24], 0x58
jne 0x497197
mov eax, dword [esi]
mov edx, ecx
mov ecx, dword [esp + 0x7c]
push ebx
push 0x83
push dword [esp + 0x98]
mov dword [esp + 0x98], eax
push dword [esp + 0x84]
push dword [esi + 0x18]
call fcn.00499ce8
mov edx, eax
add esp, 0x14
mov dword [esp + 0x94], edx
test edx, edx
je 0x497197
test byte [edx + 0xa], 4
jne 0x497197
xor ecx, ecx
inc ecx
test byte [edx + 0xc], cl
je 0x497145
mov eax, dword [edx]
test dword [eax + 4], 0x1000
je 0x497145
mov eax, dword [eax + 0x14]
mov eax, dword [eax + 0x1c]
cmp dword [eax], ecx
jg 0x497197
mov esi, dword [edx]
lea edi, [esp + 0xa0]
mov eax, dword [esp + 0x8c]
push 0xd
pop ecx
rep movsd dword es:[edi], dword [esi]
mov eax, dword [eax + 0xc]
push 0x10
push dword [esp + 0x9c]
mov dword [esp + 0xb4], eax
lea eax, [esp + 0xa8]
push eax
push dword [esp + 0x24]
call fcn.0046e269
mov eax, dword [esp + 0xa4]
add esp, 0x10
mov esi, dword [esp + 0x28]
mov edi, dword [esp + 0x10]
push 4
pop ecx
or word [eax + 0xa], cx
dec edi
add esi, 0x30
mov dword [esp + 0x10], edi
mov dword [esp + 0x28], esi
test edi, edi
jg 0x4970a4
mov edi, dword [esp + 0x88]
mov eax, dword [edi + 0x38]
mov dword [esp + 0x10], eax
test eax, eax
je 0x497336
movzx eax, byte [edi + 0x3c]
imul ecx, eax, 0x48
mov eax, dword [esp + 0x4c]
mov eax, dword [eax + 4]
mov eax, dword [ecx + eax + 0x18]
mov dword [esp + 0x94], eax
test byte [eax + 0x1c], 0x80
jne 0x497219
mov ecx, dword [esp + 0x18]
push 2
pop edx
call fcn.0046f3dc
push ebx
mov edx, 0x87
mov dword [esp + 0x7c], eax
lea ecx, [eax + 1]
push ecx
push dword [edi + 4]
mov ecx, dword [esp + 0x44]
call fcn.004591cc
mov edi, dword [esp + 0x84]
xor eax, eax
add esp, 0xc
inc eax
mov dword [esp + 0x1c], eax
jmp 0x497288
mov ecx, eax
call fcn.00474bb9
mov ecx, dword [esp + 0x18]
mov dword [esp + 0x8c], eax
movzx esi, word [eax + 0x32]
mov dword [esp + 0x1c], esi
lea edx, [esi + 1]
call fcn.0046f3dc
mov edi, eax
mov ecx, ebx
mov dword [esp + 0x78], edi
mov dword [esp + 0x28], ecx
test esi, esi
je 0x497288
mov ebx, dword [esp + 0x38]
mov edx, dword [esp + 0x94]
lea eax, [edi + 1]
add eax, ecx
push eax
mov eax, dword [esp + 0x90]
mov eax, dword [eax + 4]
movsx eax, word [eax + ecx*2]
mov ecx, ebx
push eax
push dword [esp + 0x5c]
call fcn.0046c5f4
mov ecx, dword [esp + 0x34]
add esp, 0xc
inc ecx
mov dword [esp + 0x28], ecx
cmp ecx, esi
jl 0x49724f
xor ebx, ebx
push dword [esp + 0x1c]
mov eax, dword [esp + 0x14]
lea esi, [edi + 1]
mov ecx, dword [esp + 0x3c]
push esi
push ebx
push dword [eax]
push 0x1d
pop edx
call fcn.004594df
push dword [esp + 0x88]
mov ecx, dword [esp + 0x4c]
mov edi, eax
push dword [esp + 0x30]
push esi
push 0x61
pop edx
call fcn.004591cc
mov eax, dword [esp + 0x2c]
add esp, 0x1c
mov ecx, dword [esp + 0x38]
mov edx, 0x8a
push dword [esp + 0x1c]
push esi
push dword [esp + 0x80]
push dword [eax]
call fcn.004594df
push dword [esp + 0x2c]
mov eax, dword [esp + 0x24]
mov edx, 0xb4
push esi
mov esi, dword [esp + 0x50]
mov ecx, esi
push ebx
push dword [eax + 4]
call fcn.004594df
push 0x10
pop edx
mov ecx, esi
call fcn.0045974e
mov edx, edi
call fcn.00459a36
mov ecx, dword [esi + 0x6c]
mov edx, dword [esp + 0x98]
mov dword [eax + 8], ecx
mov eax, dword [esp + 0x3c]
mov ecx, dword [esp + 0x38]
inc eax
push eax
call fcn.0046f412
mov edi, dword [esp + 0xac]
add esp, 0x24
jmp 0x49733a
mov esi, dword [esp + 0x38]
cmp dword [edi], 0
je 0x49735e
mov eax, dword [esi + 0x6c]
mov ecx, esi
push ebx
push dword [edi]
mov dword [edi + 0x1c], eax
xor eax, eax
inc eax
push eax
push 0x47
pop edx
call fcn.004591cc
add esp, 0xc
cmp dword [edi + 0x38], ebx
je 0x497398
mov eax, dword [edi + 0x38]
mov dword [esp + 0x8c], eax
test eax, eax
je 0x4973f7
push ebx
push dword [eax + 8]
mov ecx, esi
push ebx
push 0x4a
pop edx
call fcn.004591cc
mov ecx, dword [esp + 0x98]
add esp, 0xc
mov edx, dword [esp + 0x18]
mov eax, dword [esi + 0x6c]
mov dword [ecx + 0xc], eax
inc byte [edx + 0x1a]
jmp 0x49739c
mov edx, dword [esp + 0x18]
mov eax, dword [esp + 0x7c]
mov esi, dword [eax + 0x18]
cmp dword [eax + 0x14], ebx
jle 0x4973f7
test byte [esi + 0xa], 6
jne 0x4973e6
mov ecx, dword [esi + 0x28]
mov eax, dword [esi + 0x2c]
and ecx, dword [edi + 0x58]
and eax, dword [edi + 0x5c]
or ecx, eax
jne 0x4973e6
mov eax, dword [esp + 0x84]
test byte [eax + 0x24], 0x40
jne 0x4973e6
push 0x10
push dword [esp + 0x9c]
push dword [esi]
push edx
call fcn.0046e269
add esp, 0x10
push 4
pop eax
or word [esi + 0xa], ax
mov edx, dword [esp + 0x7c]
inc ebx
add esi, 0x30
cmp ebx, dword [edx + 0x14]
mov edx, dword [esp + 0x18]
jl 0x4973a8
mov eax, dword [edi + 0x58]
mov edx, dword [edi + 0x5c]
mov ecx, dword [esp + 0xd4]
pop edi
pop esi
pop ebx
xor ecx, esp
call fcn.004b0ce6
mov esp, ebp
pop ebp
ret